**************************************************************** * DRIVER FOR QUME SPRINT 5 PRINTER * * HAS BUILT IN HANDSHAKING WHICH ALLOWS THE PRINTER TO * OPERATE AT 1200 BUAD * * WRITTEN BY TODD B. MARSHALL * ONE KINGWOOD PLACE, SUITE 122C * KINGWOOD, TX 77339 * * OCTOBER 10, 1979 **************************************************************** * BLKSIZE EQU 1 DRIVER BLOCKSIZE IMTROPTN EQU 1 IMMEDIATE TRANSFER OPTION * ORG 0CA00H DRIVER ORIGIN * DTRB DW CODE READ BLOCK DTRNB DW CODE+3 READ NEXT BLOCK DTRLB DW CODE+6 READ LAST BLOCK DTWBR DW CODE+9 WRITE BLOCK, GET NEXT DTWB DW CODE+12 WRITE BLOCK DTREW DW CODE+15 REWIND OPERATION DTEOF DW CODE+18 END FILE DTCLO DW CODE+21 CLOSE FILE DTSEK DW CODE+24 SEEK DTCTL DW CODE+27 CONTROL OPERATION DTBLK DW BLKSIZE BLOCKSIZE DTITO DB IMTROPTN IMMEDIATE TRANSFER OPTION DTINI DW CODE+30 INITIALIZE (OPEN) **************************************************************** COPY NPTDEFS * CODE EQU $ JMP RB READ BLOCK JMP RNB READ NEXT BLOCK JMP RLB READ LAST BLOCK JMP WBR WRITE BLOCK, GET NEXT JMP WBLK WRITE BLOCK JMP REW REWIND OPERATION JMP EOF END OF FILE JMP CLO CLOSE FILE JMP SEK SEEK JMP CTL CONTROL OPERATION JMP INI INITIALIZATION * WBR EQU $ WBLK MOV B,M MOV A,B ANI 7FH STRIP PARITY CPI ESC CHECK FOR ESCAPE CZ BCTR BUMP COUNTER IF IT IS CALL CONOUT SEND CHAR TO SCREEN CALL SDROT SEND IT TO THE TERMINAL LDA COUNT DECREMENT THE CHARACTER DCR A COUNTER AND SAVE IT BACK STA COUNT JNZ CALL2 IF LESS THAN 100 CHARS SENT MVI B,ETX ELSE, SEND ETX AND WAIT FOR CALL SDROT ACK TO COME BACK FROM TERM WAIT CALL SSTAT SEE IF ANYTHING BACK ON SERIAL JZ CHKKBD NO, CHECK KBD FOR MODE ANI 7FH STRIP PARITY CPI ACK YES, IS IT AN ACK? JNZ CHKKBD NO, GO CHECK THE KBD FOR MODE RST MVI A,100 IT'S AN ACK, RESET COUNTER STA COUNT AND JMP CALL2 RETURN CHKKBD CALL CONTST SEE IF THERE'S A CHAR AT KBD JZ WAIT NO, GO BACK TO WAIT SEQUENCE CALL CONIN GET THE CHARACTER IN A ANI 7FH STRIP PARITY CPI MODE YES, IS IT A MODE? JZ CALL1 YES, RESET AND RETURN JMP WAIT NO, GO BACK TO WAIT SEQUENCE * CLO RET CLOSE THE FILE * EOF RET END OF FILE * REW LXI H,0 CLEAR H,L RET . AND RETURN FROM REWIND * RLB JMP CALL1 CAN'T READ LAST BLOCK * RNB RET . READ BLOCK OF DATA * INI MVI A,100 CLEAR THE CHARACTER COUNT TO 100 STA COUNT RET . * BCTR LXI H,COUNT IF ESCAPE IS SENT INCREMENT INR M COUNT BY 3 TO BE SURE ETX INR M DOESN'T INTERRUPT SEQUENCE INR M RET * CALL2 XTHL INX H INX H INX H XTHL CALL1 RET * SDROT EQU 0C04AH SERIAL OUTPUT ROUTINE SSTAT EQU 0C042H SERIAL INPUT TEST COUNT DB 100 CHARACTER COUNTER ETX EQU 03H ETX CHARACTER ACK EQU 06H ACK CHARACTER MODE EQU 0 MODE ESC EQU 1BH ESCAPE *