;-------------------------------------------------- ; CPS PARALLEL PRINTER DRIVER ; FILE NAME: PARPRINT.ASM ; PROGRAMMER: DAVE SANDERS ; DATE: AUGUST 10, 1981 ; (C) 1981 MOUNTAIN COMPUTER, INC. ;-------------------------------------------------- ORG 100H ORIGIN EQU 0F200H OFFS SET ORIGIN-PRINT CR EQU 0DH LF EQU 0AH MAP EQU 0E1F8H ;CPS ROM/RAM MAP REG AUTLF EQU 0E1F0H ;CPS RAM LOC FOR AUTO LF (BIT 2) STAT EQU 0E1F9H ;CPS PARALLEL PORT STAT (BIT 6) PBUF EQU 0E1FDH ;CPS PARALLEL PORT BUFFER RAMPG2 EQU 20H ;RAM PAGE 2 AUTLFB EQU 4 ;AUTO LF BIT MASK (BIT 2) PBSTAT EQU 40H ;BUFFER STAT BIT MASK (BIT 6) ; DB 1 ;MAKE ONE PATCH DW ORIGIN ;DESTINATION OF DRIVER DW PREND-PRINT ;LENGTH OF DRIVER DB 1 ;PATCH TYPE 1 DB 10 ;LIST OUTPUT VECTOR #1 DW PRINT+OFFS ;VECTOR TO DRIVER PRINT LXI H,FLAG+OFFS MOV A,C CPI CR ;OUT DATA = CR ? ; **JR Z,CRET** DB 28H, (CRET-$-1) AND 0FFH MOV A,M ;NO, TEST + CLEAR FLAG ANI 1 RAR MOV M,A ; **JR NC,PROUT** ;WAS ALREADY CLEAR, GO OUTPUT DB 30H, (PROUT-$-1) AND 0FFH MOV A,C CPI LF ;ELSE, NO OUTPUT FOR LF ONLY ; **JR NZ,PROUT** DB 20H, (PROUT-$-1) AND 0FFH RET CRET MVI A,RAMPG2 ;IF CR, SET UP FLAG (BIT 0) STA MAP LDA AUTLF MVI M,1 ANI AUTLFB ;FLAG SET IF AUTLF BIT OFF ; **JR Z,CRETX** DB 28H, (CRETX-$-1) AND 0FFH MVI M,0 CRETX XRA A STA MAP PROUT LDA STAT ;BUSY, WAIT UNTIL READY ANI PBSTAT ; **JR Z,PROUT** DB 28H, (PROUT-$-1) AND 0FFH MOV A,C ;SEND DATA OUT STA PBUF RET FLAG DB 0 PREND END