Forum

Z PMD 85 Infoserver

:: späť na začiatok témy :: späť na zoznam tém ::
Správa
Autor  Autor ::  Roman Bórik
Poslaná  Poslaná ::  12.12.2013 08:17:24
Predmet  Predmet ::  Re: BIOS CP/M
Takže svoje tvrdenie o "požieraní" prijímaných znakov z USARTu beriem späť!

V CP/M BIOSe je použitá klávesnicová rutina INKEY (89C0h/0E9C0h - test klávesnice bez čakania) z Monitora, ktorá síce testuje stav USARTu, či bol prijatý byte, a ak áno prevedie sa ihneď návrat, ale tento prijatý byte sa neprevezme (to je práve dôležité).
Takže žiadny problém sa nekoná. Práve naopak, má to svoje opodstatnenie. Počas prenosu sa môže priebežne volať CONST, aby mohol byť prenos prerušený užívateľom a zároveň test klávesnice "neblokuje" samotný prenos.

Ja som si to pomýlil s rutinou INKLAV (84A1h/0E4A1h - test klávesnice s čakaním), ktorá toto "požieranie" zámerne robí.
 
Správa
Autor  Autor ::  JL
Poslaná  Poslaná ::  12.12.2013 08:55:45
Predmet  Predmet ::  Re: BIOS CP/M
to jsem rád

ohledně toho testu statusu 8251:

Je možné číst status vícekrát?

Moje čtecí rutina testuje flag přítomnosti přijatého bajtu a ponechává informaci v Z, protože to některé programy potřebují.

Vracím tedy EOF nebo data a v Z informaci jestli to jsou data.


Podobně testuju stav portu před vysíláním, ale tam rutina čeká na uvolnění.
Tady by smazání statusu mohlo způsobit teoreticky výtuh, ale asi když INKEY přečte status, nestane se tím 8251 nepřipravenou.
 
Správa
Autor  Autor ::  Roman Bórik
Poslaná  Poslaná ::  12.12.2013 09:54:14
Predmet  Predmet ::  Re: BIOS CP/M
Status je možné samozrejme čítať opakovane. RxRDY (bit 1 stavového slova) je zhodený až po prečítaní prijatého bytu.
TxRDY (bit 0 stavového slova) klávesnicová rutina netestuje.
:: späť na začiatok témy :: späť na zoznam tém ::