mirror of
https://github.com/david-schmidt/Davex.git
synced 2024-09-27 13:55:09 +00:00
280 lines
4.7 KiB
NASM
280 lines
4.7 KiB
NASM
|
;*********************************************
|
||
|
;
|
||
|
; MX80 setup
|
||
|
;
|
||
|
; Options:
|
||
|
; -n normal
|
||
|
; -z zap (re-init everything)
|
||
|
; -b y|n boldface
|
||
|
; -e y|n emphasized
|
||
|
; -i y|n italics
|
||
|
; -u y|n underline
|
||
|
; -s y|n skip over perf
|
||
|
; -8 y|n 8 lines/inch
|
||
|
; -l # form length
|
||
|
; -p # pitch
|
||
|
; -1 y|n unidirectional print
|
||
|
;
|
||
|
; by Dave Lyons
|
||
|
; 12-Jul-86
|
||
|
;
|
||
|
; 21-Jul-88 DAL ==> v1.1
|
||
|
; souce --> Merlin
|
||
|
; Fixed xprint_drvr usage: uses refnums now
|
||
|
;
|
||
|
;*********************************************
|
||
|
;
|
||
|
; Converted to MPW IIgs 20-Sep-92 DAL
|
||
|
;
|
||
|
;*********************************************
|
||
|
|
||
|
.include "Common/2/Globals2.asm"
|
||
|
.include "Common/2/Apple.Globals2.asm"
|
||
|
.include "Common/2/Mli.globals2.asm"
|
||
|
.include "Common/Macros.asm"
|
||
|
|
||
|
.segment "CODE_AE00"
|
||
|
|
||
|
|
||
|
;
|
||
|
OrgAdr = $AE00
|
||
|
; org OrgAdr
|
||
|
|
||
|
MyVersion = $11
|
||
|
MinVersion = $10
|
||
|
;*********************************************
|
||
|
RTS
|
||
|
.byte $EE,$EE
|
||
|
.byte MyVersion,MinVersion
|
||
|
.byte %00000000 ;hardware req
|
||
|
.addr Descr
|
||
|
.addr OrgAdr
|
||
|
.addr Start
|
||
|
.byte 0,0,0,0
|
||
|
; PARAMETERS HERE
|
||
|
my_parms: .byte $80+'z',t_nil
|
||
|
.byte $80+'n',t_nil
|
||
|
.byte $80+'b',t_yesno
|
||
|
.byte $80+'e',t_yesno
|
||
|
.byte $80+'i',t_yesno
|
||
|
.byte $80+'u',t_yesno
|
||
|
.byte $80+'s',t_int2
|
||
|
.byte $80+'8',t_yesno
|
||
|
.byte $80+'p',t_int2
|
||
|
.byte $80+'l',t_int2 ;form length
|
||
|
.byte $80+'1',t_yesno
|
||
|
.byte 0,0
|
||
|
;
|
||
|
Descr: pstr "Sets up MX80 options"
|
||
|
|
||
|
;
|
||
|
end = $ff
|
||
|
;*********************************************
|
||
|
; dum xczpage
|
||
|
mxTemp = xczpage ;.res 1
|
||
|
value = mxTemp+1 ;.res 1
|
||
|
refnum = value+1 ;.res 1
|
||
|
; dend
|
||
|
;*********************************************
|
||
|
Start:
|
||
|
;
|
||
|
; open the printer
|
||
|
;
|
||
|
lda #0 ;open config'd prtr slot
|
||
|
ldx #mli_open
|
||
|
jsr xprint_drvr
|
||
|
bcc opened
|
||
|
jmp xProDOS_err
|
||
|
opened:
|
||
|
sta refnum
|
||
|
;
|
||
|
; do each parameter
|
||
|
;
|
||
|
ldy #0
|
||
|
parmloop: lda my_parms,y
|
||
|
ora my_parms+1,y
|
||
|
beq parms_done
|
||
|
tya
|
||
|
pha
|
||
|
jsr do_one
|
||
|
pla
|
||
|
tay
|
||
|
iny
|
||
|
iny
|
||
|
bne parmloop
|
||
|
;
|
||
|
parms_done:
|
||
|
;
|
||
|
; close the printer
|
||
|
;
|
||
|
ldy refnum
|
||
|
ldx #mli_close
|
||
|
jmp xprint_drvr
|
||
|
;*******************************
|
||
|
;
|
||
|
; do_one -- dispatch to a
|
||
|
; subroutine to handle each
|
||
|
; parameter given
|
||
|
;
|
||
|
do_one: pha
|
||
|
lda my_parms,y
|
||
|
jsr xgetparm_ch
|
||
|
bcs not_given
|
||
|
pla
|
||
|
tay
|
||
|
lda subtable+1,y
|
||
|
pha
|
||
|
lda subtable,y
|
||
|
pha
|
||
|
lda my_parms,y
|
||
|
jmp xgetparm_ch
|
||
|
not_given:
|
||
|
pla
|
||
|
rts
|
||
|
;
|
||
|
; table of addresses for handling
|
||
|
; each parameter
|
||
|
;
|
||
|
subtable:
|
||
|
.addr do_zap-1
|
||
|
.addr do_normaltxt-1
|
||
|
.addr do_bold-1
|
||
|
.addr do_emphasize-1
|
||
|
.addr do_italics-1
|
||
|
.addr do_underline-1
|
||
|
.addr do_skipperf-1
|
||
|
.addr do_eight-1
|
||
|
.addr do_pitch-1
|
||
|
.addr do_flength-1
|
||
|
.addr do_unidir-1
|
||
|
;
|
||
|
; Print 1 char to the printer driver
|
||
|
;
|
||
|
print_esc:
|
||
|
lda #esc
|
||
|
Print: ldx #mli_write
|
||
|
ldy refnum
|
||
|
jmp xprint_drvr
|
||
|
;*******************************
|
||
|
do_bold:
|
||
|
ldy #bold-stuff
|
||
|
jmp do_yesno
|
||
|
;
|
||
|
do_emphasize:
|
||
|
ldy #emphasize-stuff
|
||
|
jmp do_yesno
|
||
|
;
|
||
|
do_italics:
|
||
|
ldy #italics-stuff
|
||
|
jmp do_yesno
|
||
|
;
|
||
|
do_underline:
|
||
|
ldy #underline-stuff
|
||
|
jmp do_yesno
|
||
|
;
|
||
|
do_skipperf:
|
||
|
cpy #0 ;-s0?
|
||
|
bne skippf
|
||
|
ldy #noskip-stuff
|
||
|
jmp print_y
|
||
|
;
|
||
|
skippf: sty value
|
||
|
ldy #skip-stuff
|
||
|
jsr print_y
|
||
|
lda value
|
||
|
jmp Print
|
||
|
;
|
||
|
do_eight:
|
||
|
ldy #eight-stuff
|
||
|
jmp do_yesno
|
||
|
;
|
||
|
do_pitch:
|
||
|
cpy #5
|
||
|
beq pitch5
|
||
|
cpy #8
|
||
|
beq pitch8
|
||
|
cpy #10
|
||
|
beq pitch10
|
||
|
cpy #17
|
||
|
beq pitch17
|
||
|
jsr xmess
|
||
|
cstr_cr "illegal pitch--use 5, 8, 10, 17"
|
||
|
rts
|
||
|
;
|
||
|
pitch5: ldy #p5-stuff
|
||
|
jmp print_y
|
||
|
pitch8: ldy #p8-stuff
|
||
|
jmp print_y
|
||
|
pitch10: ldy #p10-stuff
|
||
|
jmp print_y
|
||
|
pitch17: ldy #p17-stuff
|
||
|
jmp print_y
|
||
|
;
|
||
|
do_flength:
|
||
|
sty value
|
||
|
ldy #formlen-stuff
|
||
|
jsr print_y
|
||
|
lda value
|
||
|
jmp Print
|
||
|
;
|
||
|
do_unidir:
|
||
|
ldy #unidir-stuff
|
||
|
jmp do_yesno
|
||
|
;
|
||
|
do_zap:
|
||
|
ldy #zap-stuff
|
||
|
jmp print_y
|
||
|
;
|
||
|
do_normaltxt:
|
||
|
ldy #normaltxt-stuff
|
||
|
jmp print_y
|
||
|
;*******************************
|
||
|
do_yesno: cmp #0
|
||
|
bne print_y
|
||
|
jsr skip_str
|
||
|
print_y: lda stuff,y
|
||
|
cmp #$ff
|
||
|
beq printed
|
||
|
sty mxTemp
|
||
|
jsr Print
|
||
|
ldy mxTemp
|
||
|
iny
|
||
|
bne print_y
|
||
|
printed: rts
|
||
|
;*******************************
|
||
|
skip_str: lda stuff,y
|
||
|
cmp #$ff
|
||
|
beq skipped
|
||
|
iny
|
||
|
bne skip_str
|
||
|
skipped: iny
|
||
|
rts
|
||
|
;*******************************
|
||
|
;
|
||
|
stuff:
|
||
|
bold: .byte esc,'G',end
|
||
|
.byte esc,'H',end
|
||
|
emphasize: .byte esc,'E',end
|
||
|
.byte esc,'F',end
|
||
|
italics: .byte esc,'4',end
|
||
|
.byte esc,'5',end
|
||
|
underline: .byte esc,'-',1,end
|
||
|
.byte esc,'-',0,end
|
||
|
eight: .byte esc,'0',end
|
||
|
.byte esc,'2',end
|
||
|
unidir: .byte esc,'U',1,end
|
||
|
.byte esc,'U',0,end
|
||
|
zap: .byte esc,'@',end
|
||
|
skip: .byte esc,'N',end
|
||
|
noskip: .byte esc,'O',end
|
||
|
formlen: .byte esc,'C',end
|
||
|
;
|
||
|
p5: .byte esc,'W',1,18,end
|
||
|
p8: .byte esc,'W',1,15,end
|
||
|
p10: .byte esc,'W',0,18,end
|
||
|
p17: .byte esc,'W',0,15,end
|
||
|
normaltxt:
|
||
|
.byte esc,'H',esc,'G',esc,'5',esc,'-',0
|
||
|
.byte esc,'2',esc,'U',0,esc,'O'
|
||
|
.byte esc,'W',0,18,end
|