home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ftp.barnyard.co.uk
/
2015.02.ftp.barnyard.co.uk.tar
/
ftp.barnyard.co.uk
/
cpm
/
walnut-creek-CDROM
/
ENTERPRS
/
CPM
/
UTILS
/
F
/
F80.LBR
/
LPTDRV.MYC
/
LPTDRV.MYC
Wrap
Text File
|
2000-06-30
|
1KB
|
112 lines
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