mirror of
https://github.com/deater/dos33fsprogs.git
synced 2024-11-16 08:05:31 +00:00
98 lines
1.2 KiB
ArmAsm
98 lines
1.2 KiB
ArmAsm
;div7_table = $b800
|
|
;mod7_table = $b900
|
|
;hposn_high = $ba00
|
|
;hposn_low = $bb00
|
|
|
|
|
|
hgr_make_tables:
|
|
|
|
;=====================
|
|
; make /7 %7 tables
|
|
;=====================
|
|
|
|
hgr_make_7_tables:
|
|
|
|
ldy #0
|
|
lda #0
|
|
ldx #0
|
|
div7_loop:
|
|
sta div7_table,Y
|
|
|
|
inx
|
|
cpx #7
|
|
bne div7_not7
|
|
|
|
clc
|
|
adc #1
|
|
ldx #0
|
|
div7_not7:
|
|
iny
|
|
bne div7_loop
|
|
|
|
|
|
ldy #0
|
|
lda #0
|
|
mod7_loop:
|
|
sta mod7_table,Y
|
|
clc
|
|
adc #1
|
|
cmp #7
|
|
bne mod7_not7
|
|
lda #0
|
|
mod7_not7:
|
|
iny
|
|
bne mod7_loop
|
|
|
|
|
|
; Hposn table
|
|
|
|
; hposn_low, hposn_high will each be filled with $C0 bytes
|
|
; based on routine by John Brooks
|
|
; posted on comp.sys.apple2 on 2018-07-11
|
|
; https://groups.google.com/d/msg/comp.sys.apple2/v2HOfHOmeNQ/zD76fJg_BAAJ
|
|
; clobbers A,X
|
|
; preserves Y
|
|
|
|
; vmw note: version I was using based on applesoft HPOSN was ~64 bytes
|
|
; this one is 37 bytes
|
|
|
|
build_hposn_tables:
|
|
ldx #0
|
|
btmi:
|
|
txa
|
|
and #$F8
|
|
bpl btpl1
|
|
ora #5
|
|
btpl1:
|
|
asl
|
|
bpl btpl2
|
|
ora #5
|
|
btpl2:
|
|
asl
|
|
asl
|
|
sta hposn_low, X
|
|
txa
|
|
and #7
|
|
rol
|
|
asl hposn_low, X
|
|
rol
|
|
ora #$20
|
|
sta hposn_high, X
|
|
inx
|
|
cpx #$C0
|
|
bne btmi
|
|
|
|
; go 16 beyond, which allows our text scrolling routine
|
|
|
|
ldx #16
|
|
extra_table_loop:
|
|
lda hposn_low,X
|
|
sta hposn_low+192,X
|
|
lda hposn_high,X
|
|
eor #$60
|
|
sta hposn_high+192,X
|
|
dex
|
|
bpl extra_table_loop
|
|
|
|
rts
|