eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronikaPortowanie CP/MRe: Portowanie CP/M
  • Path: news-archive.icm.edu.pl!news.icm.edu.pl!.POSTED.cdo179.neoplus.adsl.tpnet.pl!no
    t-for-mail
    From: Atlantis <m...@w...pl>
    Newsgroups: pl.misc.elektronika
    Subject: Re: Portowanie CP/M
    Date: Tue, 9 Jul 2024 10:42:22 +0200
    Organization: ICM, Uniwersytet Warszawski
    Message-ID: <v6it5e$14ec2$2@news.icm.edu.pl>
    References: <v6h7gt$11nrq$1@news.icm.edu.pl>
    <o7faz70e4d2w$.79mo6m18nev9$.dlg@40tude.net>
    <v6io2b$147g9$1@news.icm.edu.pl> <v6ipum$149vs$1@news.icm.edu.pl>
    Mime-Version: 1.0
    Content-Type: text/plain; charset=UTF-8; format=flowed
    Content-Transfer-Encoding: 8bit
    Injection-Date: Tue, 9 Jul 2024 08:42:22 -0000 (UTC)
    Injection-Info: news.icm.edu.pl;
    posting-host="cdo179.neoplus.adsl.tpnet.pl:83.30.164.179";
    logging-data="1194370"; mail-complaints-to="u...@n...icm.edu.pl"
    User-Agent: Mozilla Thunderbird
    Content-Language: en-US, pl-PL
    In-Reply-To: <v6ipum$149vs$1@news.icm.edu.pl>
    Xref: news-archive.icm.edu.pl pl.misc.elektronika:792739
    [ ukryj nagłówki ]

    On 9.07.2024 09:47, Jacek Konieczny wrote:

    > Mnie to brzmi jakby jakieś funkcje twojego BIOSu kłóciły się z
    > przerwaniami, które ten sam BIOS obsługuje - gdzieś brak synchronizacji
    > w dostępie do wspólnych danych.

    Tyle tylko, że tam tak naprawdę nie ma zbyt wielu rzeczy wspólnych.
    Obsługa przerwań (realizowana za pomocą 8259) jest inicjowana przy
    rozruchu sprzętu, jeszcze przed odpaleniem bootloadera. Potem w
    kluczowych momentach, przy starcie CP/M co najwyżej wyłączam przerwania
    globalnie.
    Procedury obsługujące przerwania siedzą w EPROM-ie, który jest na stałe
    dostępny w przestrzeni adresowej. Na chwilę obecną są to:
    1. UART RX - obecnie niezaimplementowane - po prostu wraca
    2. UART TX - obecnie niezaimplementowane - po prostu wraca
    3. Klawiatura - pobiera jeden bajt z rejestru klawiatury i zapisuje jego
    wartość w zmiennej. Potem wraca. W tej chwili to jedyne dane pobierane w
    przerwaniu, które są także używane w BIOS-ie.
    4. TIMER 8253 - Inkrementuje szenstastobitową zmienną "systick" i
    przeładowuje przerwanie pisząc do rejestru układu. Potem wraca. Na
    chwilę obecną ta zmienna nie jest używana w BIOS-ie.
    5. RTC - czyści flagę przerwania w układzie przerwania, potem
    inkrementuje szesnastobitową zmienną "rtctick" (zliczającą sekundy).
    Potem wraca. Na chwilę obecną zmienna ta nie jest używana w BIOS-ie.
    6. Przerwanie układu graficznego (TMS9918). Na chwilę obecną nieużywane
    - po prostu wraca.
    7. Wektory dwóch nieużywanych przerwań po prostu wracają.


    > Druga sprawa - czy przerwanie w nieodpowiednim momencie nie psuje
    > krytycznego timingu w operacjach I/O? Może akurat wstawia jakąś
    > milisekundę opóźnienia gdzie nie powinno? I np. gubisz jeden sektor, bo
    > w buforze już kolejny wylądował.

    Teoretycznie to mogłoby powodować problemy w przypadku fizycznego dysku
    z obracającym się tależem. Ale czy przypadkiem karta CF nie powinna być
    odporna na takie zachowania? Ona po prostu wystawia flagi i dane na
    magistralę.
    Poza tym w chwili obecnej (eksperymentalnie) wyłączyłem globalnie
    przerwania w procedurze odczytu z dysku. To powinno zupełnie rozwiązać
    problemy o takiej genezie.

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: