[Coco] Printing from Coco3 Disk Basic to the Drivewire4 printer
Robert Gault
robert.gault at att.net
Fri Feb 12 09:27:19 EST 2016
While we have an easy method of using the DW4 "printer" from NitrOS-9, there is
no built-in method of accessing the DW4 printer from Drivewire HDBDOS. I've
managed to write some code that will integrate this capability into HDBDOS at
least as far as LLIST is concerned. It may work for any PRINT #-2 command but
I've not yet tested that.
I thought the group would find this interesting and there has been little if any
interest lately in programming on the list. :)
Robert
* This example is intended to replace the bit-banger print routine on a Coco3
* so that text is sent to the DW4 printer.
* Feb 12, 2016 Robert Gault
lptpos equ $9C printer position
lptwid equ $9B printer page width
org $FA0C Unused memory in SEB
Main pshs d,x,y
ldb #$FF mark that data will have been sent to DW4
stb <flag,pcr set our flag
ldy #2 sending two bytes
leax <Param,pcr temp storage
tfr a,b data to regB
cmpa #$0d carriage return?
bne a@
clr lptpos clear position
dec lptpos
lda #$0a line feed
sta 3,x add to data
ldy #4 sending 4 bytes
a@ lda #'P print OP_Code
std ,x store code and data
sta 2,x just in case of line feed
jsr [$D941] got to HDBDOS routine
inc lptpos update line position
ldb lptpos test it for
cmpb lptwid edge of page
bne b@
clr lptpos clear position
b@ puls d,x,y,pc
Flush pshs d,x,y flush the DW4 print buffer
ldy #1 one byte to send
lda #'F
leax <Param,pcr temp storage
sta ,x set Flush code
clr <flag,pcr clear our flag
jsr [$D941] go to HDBDOS routine
puls d,x,y,pc
tstchg pshs cc,a test for a change from printer to anything else
tst <flag,pcr
beq a@
lda #'F
jsr Flush
a@ puls cc,a
jmp $8C37 the code that was at $A30A
flag fcb 0
Param fcb 'P,0,'P,0 DW4 print, data, DW4 print, data
zend equ *
org $A30A put character on the screen
jmp tstchg
org $A2BF
jmp Main
end $0000
More information about the Coco
mailing list