Kristoffer Eriksson
<5357>
· Text 2410 · w8 · kommentar
1985-12-30 03:55
Ärende: ASM-rutin för printerstyrning
Jag föreslår att du utnyttjar filsystemet, det ger större flexibilitet.
Så här kan man göra:
CALL USEUTLU ; = 105
LD A,0 ; 0 = Normal OPEN
LD HL,FILNAMN
CALL OPNCMD ; = 93
LD A,4 ; 4 = Operationen PRINT
LD HL,TEXT
LD BC,TEXTEND-TEXT
CALL IO ; = 90
RET
FILNAMN: DEFM "PR:"
DEFB 13
TEXT: DEFM "Denna text skrivs på skrivaren"
TEXTEND: *
Denna variant passar bäst för korta utskrifter. USEUTLU åstadkommer vid
RET i ovanstående rutin ett tvångsanrop till en filstängningsrutin. Vill
man undvika det kan man POP:a den adress som ligger överst på stacken
efter USEUTLU-anropet. En mer generell variant är:
LD IX,LUBLOCK
LD HL,FILNAMN
LD A,0
CALL OPNCMD
... osv
LUBLOCK: DEFS 23
CLOSE:LD IX,LUBLOCK
LD A,2 ; 2 = Operationen CLOSE
CALL IO
...
På det här sättet öppnar man först filen, använder den då och då, och
stänger den till sist. Varje gång filen används måste man se till att
IX innehåller adressen till LUBLOCK.