;
; FILPRINT.ASM as of 7/29/80
; by Keith Petersen, W8SDZ
;
; (for CP/M 2.x only)
;This program will print any ASCII file made with
;a CP/M editor. The file must contain no tabs, and
;must end with a single $ character. When you make
;the file with the editor, start it with one line
;of 80 spaces. Then after you end the edit, DDT
;the file and patch it with FILPRINT.HEX (with no
;offset). Save the patched file as a .COM file.
;
;
ORG 100H
;
BEGIN: LXI H,STRING
;
LOOP: MOV A,M ;GET CHARACTER
CPI '$' ;ENDING CHAR?
RZ ;RETURN TO CP/M
CALL OUTPUT ;OUTPUT CHAR & GET ANY INPUT
CPI 'C'-40H ;CONTROL-C?
RZ ;RETURN TO CP/M
INX H ;POINT TO NEXT CHAR
JMP LOOP ;GET ANOTHER CHAR
;
OUTPUT: MOV E,A ;CHAR TO E FOR CP/M
MVI C,6 ;CP/M-2 DIRECT OUTPUT FUNCTION
CALL DOFUNC ;DO IT
MVI E,0FFH
MVI C,6 ;DIRECT INPUT WITH NO ECHO
CALL DOFUNC ;DO IT
ORA A
RZ ;NOTHING TYPED
CPI 'S'-40H ;CONTROL-S?
RNZ
WAIT: MVI E,0FFH
MVI C,6
CALL DOFUNC
ORA A
JZ WAIT
RET
;
DOFUNC: PUSH H
CALL 5
POP H
RET
;
STRING: DB 'CTL-S pauses, CTL-C aborts'
DB 0DH,0AH
;
END