Files
RomWBW/Source/Images/d_fortran/u0/LPTDRV.MAC
2023-06-14 12:45:41 -04:00

112 lines
1.4 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
TITLE LPTDRV - FORTRAN LINE PRINTER DRIVER
.8080
ENTRY LPTDRV,$OPNFL
EXTRN $IOERR,$BF,$BL,$CLSFL
DSEG
$OPNFL: DB 0
CLSADR: DS 2
CSEG
LPTDRV: DW $IOERR
DW LPTFWR
DW $IOERR
DW LPTBWR
DW $IOERR
DW $IOERR
DW LPTCLS
LPTCLS: LDA $OPNFL ;MAKE SURE ALREADY 'OPEN'
ORA A
JZ $IOERR
XRA A ;'CLOSE' BY SENDING
STA $OPNFL ; FORM FEED
OUTFF: MVI A,12
JMP LPTOUT
CLSLPT: LDA $OPNFL
ORA A
LHLD CLSADR
PUSH H
RZ
CALL OUTCR ;CR
OUTLF: MVI A,10 ;LF
JMP LPTOUT
MAKOPN: LXI H,$OPNFL
MOV A,M
ORA A
RZ
INR M
SETCLS: LHLD $CLSFL
LXI D,CLSLPT
MOV A,L
SUB E
MOV A,H
SBB D
RZ
STORAD: SHLD CLSADR
XCHG
SHLD $CLSFL
RET
LPTFWR: CALL MAKOPN
LDA $BL
ORA A
RZ ;NUTHIN HERE
LHLD $BF
DCR A
MOV E,A ;INTO [E] FOR LPTLOP
MOV A,M
CPI '*' ;DO NOTHING?
JZ LPTNLF
CALL OUTCR ;OUTPUT CR
MOV A,M
CPI "+"
JZ LPTNLF
CPI "1"
JNZ LPTLF
CALL OUTFF ;FORM FEED
JMP LPTNLF
LPTLF: CALL OUTLF
MOV A,M
CPI "0"
CZ OUTLF
LPTNLF: INX H
MVI D,0
LPTLOP: MOV A,E
ORA D
RZ
MOV A,M
CALL LPTOUT
INX H
DCX D
JMP LPTLOP
LPTBWR: CALL MAKOPN
LHLD $BL
XCHG
LHLD $BF
JMP LPTLOP
OUTCR: MVI A,13
LPTOUT: PUSH H
PUSH D
MVI C,5 ;CP/M LPT OUT FUNCTION
MOV E,A
CALL 0005
POP D
POP H
RET
END