mirror of
https://github.com/wwarthen/RomWBW.git
synced 2026-02-06 22:43:15 -06:00
112 lines
1.4 KiB
Plaintext
112 lines
1.4 KiB
Plaintext
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
|
||
|