64 lines
1.3 KiB
ArmAsm
64 lines
1.3 KiB
ArmAsm
.segment "NBSOUT"
|
|
;***************************************
|
|
;* bsout -- out character to channel *
|
|
;* determined by variable dflto: *
|
|
;* 0 -- invalid *
|
|
;* 1 -- cassette #1 *
|
|
;* 2 -- rs232 *
|
|
;* 3 -- screen *
|
|
;* 4-31 -- serial bus *
|
|
;***************************************
|
|
;
|
|
nbsout pha ;preserve .a
|
|
lda dflto ;check device
|
|
cmp #3 ;is it the screen?
|
|
;print to crt
|
|
;
|
|
pla ;restore data
|
|
jmp prt ;print on crt
|
|
;
|
|
;
|
|
;print to serial bus
|
|
;
|
|
pla
|
|
jmp ciout
|
|
bcs rstor ;abort on stop key
|
|
;
|
|
;reset buffer pointer
|
|
;
|
|
iny ;make .y=1
|
|
sty bufpt ;bufpt=1
|
|
;
|
|
;
|
|
;print to crt
|
|
;
|
|
pla ;restore data
|
|
jmp prt ;print on crt
|
|
;
|
|
;
|
|
;print to serial bus
|
|
;
|
|
pla
|
|
jmp ciout
|
|
bcs rstor ;abort on stop key
|
|
;
|
|
;reset buffer pointer
|
|
;
|
|
iny ;make .y=1
|
|
sty bufpt ;bufpt=1
|
|
;
|
|
;restore .x and .y
|
|
;
|
|
rstoa clc ;good return
|
|
rstor pla
|
|
tay
|
|
pla
|
|
tax
|
|
lda t1 ;get .a for return
|
|
bcc rstor1 ;no error
|
|
lda #00 ;stop error if c-set
|
|
rstor1 rts
|
|
read rts
|
|
wrtn rts
|
|
wrtz rts
|