-
Data: 2024-07-09 10:42:22
Temat: Re: Portowanie CP/M
Od: Atlantis <m...@w...pl> szukaj wiadomości tego autora
[ pokaż wszystkie 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.
Następne wpisy z tego wątku
- 09.07.24 11:21 J.F
- 09.07.24 12:26 Atlantis
- 09.07.24 22:57 Atlantis
- 10.07.24 07:28 J.F
- 10.07.24 09:03 Atlantis
- 11.07.24 09:31 J.F
- 11.07.24 09:59 J.F
- 12.07.24 19:14 Atlantis
- 12.07.24 20:45 J.F
- 13.07.24 07:59 Atlantis
Najnowsze wątki z tej grupy
- Thunderbird i dysk...
- opornosc falowa
- Bateria 9V 6F22, alkaliczna v cynkowa, samorozładowanie, bateria wysokiej trwałości do miernika
- Tani zakup z ali?
- w czasach LED komary mają ciężko
- walizka z kodami
- Rejestrator temperatur - termopara, siec
- Router LTE z możliwością zmian MTU
- Fajny film widziałem...
- Jaka ładowarka sieciowa do Iphona?
- Taśma izolacyjna do prac elektrycznych
- Recenzja 3.1A ;) w 6 gniazdach...
- Re: Recenzja 3.1A ;) w 6 gniazdach...
- Re: Recenzja 3.1A ;) w 6 gniazdach...
- Re: Recenzja 3.1A ;) w 6 gniazdach...
Najnowsze wątki
- 2025-07-23 Gdańsk => Programista Delphi <=
- 2025-07-23 Gdańsk => Programista Mainframe (z/OS, Assembler) <=
- 2025-07-23 Warszawa => Starszy inżynier DevOps (AWS) <=
- 2025-07-23 Gdańsk => Mainframe (z/OS, Assembler) Developer <=
- 2025-07-23 Kraków => Senior Fullstack Engineer (Low-Code Platform) <=
- 2025-07-23 Wrocław => Senior Key Account Manager IT <=
- 2025-07-23 Trójmiasto => Head of Social Media <=
- 2025-07-23 Rzeszów => Spedytor Międzynarodowy <=
- 2025-07-23 Lublin => ERP Implementation Consultant (AP Module) <=
- 2025-07-23 Środa Wielkopolska => SAP FI/CO Internal Consultant <=
- 2025-07-23 Warszawa => Inżynier oprogramowania .Net <=
- 2025-07-23 Kraków => Kotlin Developer <=
- 2025-07-23 Żerniki => Dyspozytor Międzynarodowy <=
- 2025-07-23 Warszawa => Java Developer <=
- 2025-07-23 Wrocław => Konsultant wdrożeniowy (systemy controlingowe) <=