; any bytes left? JZ __X ; if not, exit loop ; __C1: IN AL,CRT_STAT ; read GDC status TEST AL,=FF ; fifo full? JNZ __C1 ; if so, wait MOV DL,1[BX] ; load port (command or parm) MOV AL,0[BX] ; load value OUT DX,AL ; and send it INC BX INC BX DEC AH ; count words down JMPS __LOOP ; and continue loop ; __X: POP DX POPF ; restore interrupt status RET ; else, exit ; ; ; Wait for GDC fifo empty out. ; GDCFE: IN AL,CRT_STAT ; read GDC status TEST AL,=FE ; fifo empty? JZ GDCFE ; if so, continue loop RET ; else, exit ; ; ; Read a GDC returned parameter. ; GDCIN: IN AL,CRT_STAT ; read status TEST AL,=DR ; data ready? JZ GDCIN ; if not, loop IN AL,CRT_PARM ; read the data RET ; and return it ; END