Better definitions of both slot and global screen holes.
This commit is contained in:
parent
9b93e5bef7
commit
ba4306356f
244
ramfactor14.asm
244
ramfactor14.asm
|
@ -149,19 +149,25 @@ D010b equ $010b
|
|||
D010c equ $010c
|
||||
D01a9 equ $01a9
|
||||
D0200 equ $0200
|
||||
D0400 equ $0400
|
||||
|
||||
; screen holes, global
|
||||
; screen holes, global (not indexed)
|
||||
shg_0478 equ $0478
|
||||
shg_04f8 equ $04f8
|
||||
shg_0578 equ $0578
|
||||
shg_05f8 equ $05f8
|
||||
shg_0778 equ $0778
|
||||
mslot equ $07f8
|
||||
|
||||
; screen holes, slot-indexed
|
||||
D0478 equ $0478 ; # blocks of whole card, divided by 256
|
||||
D04f8 equ $04f8 ; index to partition data
|
||||
D0578 equ $0578 ; partition base address, high bbyte
|
||||
D05f8 equ $05f8 ; partition base address, mid byte
|
||||
D0678 equ $0678 ; current partition size, pages, high byte
|
||||
D06f8 equ $06f8 ; current partition size, pages, low byte
|
||||
D0778 equ $0778 ; operating system code
|
||||
D07f8 equ $07f8 ; operating system check code
|
||||
; screen holes, indexed by $Cn, where n is slot number (1 through 7)
|
||||
shs_card_block_count equ $0478-$c0 ; # blocks of whole card, divided by 256
|
||||
shs_idx_part_data equ $04f8-$c0 ; index to partition data
|
||||
shs_part_base_high equ $0578-$c0 ; partition base address, high bbyte
|
||||
shs_part_base_mid equ $05f8-$c0 ; partition base address, mid byte
|
||||
shs_cur_part_size_high equ $0678-$c0 ; current partition size, pages, high byte
|
||||
shs_cur_part_size_low equ $06f8-$c0 ; current partition size, pages, low byte
|
||||
shs_os_code equ $0778-$c0 ; operating system code
|
||||
shs_os_check equ $07f8-$c0 ; operating system check code
|
||||
|
||||
D0800 equ $0800
|
||||
L0801 equ $0801
|
||||
|
@ -276,7 +282,7 @@ romsel: ldy #$c0+slotnum
|
|||
asl Dc0nf+(slotnum*$10) ; set bank 0
|
||||
ldx #$88+(slotnum*$10)
|
||||
sty mslot
|
||||
stx D0778
|
||||
stx shg_0778
|
||||
jmp Lc9df
|
||||
|
||||
boot4: lda #$c0+slotnum
|
||||
|
@ -306,7 +312,7 @@ Lcn60: lda L00
|
|||
jsr Scn7b
|
||||
jmp sloop
|
||||
|
||||
Lcn6e: lda D04f8-$c0,Y
|
||||
Lcn6e: lda shs_idx_part_data,Y
|
||||
cmp #$01
|
||||
bne Lcn9f
|
||||
jsr Scn7b
|
||||
|
@ -318,9 +324,9 @@ Scn7b: jsr Sca9a
|
|||
ldy #$c0+slotnum ; high byte of slot ROM base c100
|
||||
lda L0801
|
||||
beq Lcn9a
|
||||
lda D07f8-$c0,Y
|
||||
lda shs_os_check,Y
|
||||
eor #$5a
|
||||
cmp D0778-$c0,Y
|
||||
cmp shs_os_code,Y
|
||||
bne Lcn9a
|
||||
sta proflag
|
||||
ldx #(slotnum*$10)
|
||||
|
@ -449,9 +455,9 @@ Lc818: lda (Z45),Y
|
|||
inc D010c,X
|
||||
Lc825: dey
|
||||
bne Lc818
|
||||
sty D04f8
|
||||
sty D0578
|
||||
sty D05f8
|
||||
sty shg_04f8
|
||||
sty shg_0578
|
||||
sty shg_05f8
|
||||
tax
|
||||
cmp #$0a
|
||||
bcs ret_pc_err_bad_cmd
|
||||
|
@ -468,7 +474,7 @@ Lc83f: lda (Z43),Y
|
|||
lsr ; first param is unit num, only allow 0 and 1
|
||||
bne ret_pc_err_bad_unit_num
|
||||
|
||||
ldx D0778
|
||||
ldx shg_0778
|
||||
|
||||
ldy Z42 ; protocol converter command
|
||||
lda #$c8
|
||||
|
@ -487,16 +493,16 @@ ret_pc_err_bad_cmd:
|
|||
skip2
|
||||
ret_pc_err_bad_pcnt:
|
||||
lda #pc_err_bad_pcnt
|
||||
LC863: sta D04f8
|
||||
LC863: sta shg_04f8
|
||||
Lc866: ldx #$00
|
||||
Lc868: pla
|
||||
sta Z42,X
|
||||
inx
|
||||
cpx #$0a
|
||||
bcc Lc868
|
||||
ldy D05f8
|
||||
ldx D0578
|
||||
lda D04f8
|
||||
ldy shg_05f8
|
||||
ldx shg_0578
|
||||
lda shg_04f8
|
||||
bne Lc87c
|
||||
clc
|
||||
Lc87c: rts
|
||||
|
@ -570,7 +576,7 @@ pc_cmd_status:
|
|||
bcs Lc8e0
|
||||
bne Lc89f
|
||||
ldy #$08
|
||||
sty D0578
|
||||
sty shg_0578
|
||||
Lc8d4: dey
|
||||
sta (Z45),Y
|
||||
bne Lc8d4
|
||||
|
@ -584,17 +590,17 @@ Lc8e0: beq Lc8e9
|
|||
bne Lc89f
|
||||
skip2
|
||||
Lc8e9: ldy #$04
|
||||
sty D0578
|
||||
sty shg_0578
|
||||
dey
|
||||
Lc8ef: lda Dc9c6,Y
|
||||
cpy #$02
|
||||
bne Lc904
|
||||
ldx D07f8
|
||||
lda D0678-$c0,X
|
||||
ldx mslot
|
||||
lda shs_cur_part_size_high,X
|
||||
lsr
|
||||
sta (Z45),Y
|
||||
dey
|
||||
lda D06f8-$c0,X
|
||||
lda shs_cur_part_size_low,X
|
||||
ror
|
||||
Lc904: sta (Z45),Y
|
||||
dey
|
||||
|
@ -623,7 +629,7 @@ Lc923: jsr Sc964
|
|||
bcc Lc932
|
||||
sta wrauxmem
|
||||
Lc932: lda Z48
|
||||
sta D05f8
|
||||
sta shg_05f8
|
||||
beq Lc947
|
||||
Lc939: lda Dbffb,X
|
||||
sta (Z45),Y
|
||||
|
@ -634,7 +640,7 @@ Lc939: lda Dbffb,X
|
|||
bne Lc939
|
||||
Lc947: lda Z47
|
||||
beq Lc958
|
||||
sta D0578
|
||||
sta shg_0578
|
||||
Lc94e: lda Dbffb,X
|
||||
sta (Z45),Y
|
||||
iny
|
||||
|
@ -669,7 +675,7 @@ Lc982: jsr Sc964
|
|||
bcc Lc994
|
||||
sta rdauxram
|
||||
Lc994: lda Z48
|
||||
sta D05f8
|
||||
sta shg_05f8
|
||||
beq Lc9a9
|
||||
Lc99b: lda (Z45),Y
|
||||
sta Dbffb,X
|
||||
|
@ -679,7 +685,7 @@ Lc99b: lda (Z45),Y
|
|||
dec Z48
|
||||
bne Lc99b
|
||||
Lc9a9: lda Z47
|
||||
sta D0578
|
||||
sta shg_0578
|
||||
beq Lc9ba
|
||||
Lc9b0: lda (Z45),Y
|
||||
sta Dbffb,X
|
||||
|
@ -699,7 +705,7 @@ Dc9c6: fcb $f8,$00,$00,$00
|
|||
|
||||
fcb $00,$00,$00,$00
|
||||
|
||||
Lc9df: ldy D07f8
|
||||
Lc9df: ldy mslot
|
||||
jsr Sca8e
|
||||
lda Dbffb,X
|
||||
cmp #$ae
|
||||
|
@ -708,30 +714,30 @@ Lc9df: ldy D07f8
|
|||
cmp #$5a
|
||||
bne Lca31
|
||||
lda Dbffb,X
|
||||
sta D04f8-$c0,Y
|
||||
sta shs_idx_part_data,Y
|
||||
eor #$5a
|
||||
cmp Dbffb,X
|
||||
bne Lca31
|
||||
lda Dbffb,X
|
||||
sta D0478-$c0,Y
|
||||
lda D04f8-$c0,Y
|
||||
sta shs_card_block_count,Y
|
||||
lda shs_idx_part_data,Y
|
||||
sta Dbff8,X
|
||||
lda Dbffb,X
|
||||
sta D0578-$c0,Y
|
||||
sta shs_part_base_high,Y
|
||||
lda Dbffb,X
|
||||
sta D05f8-$c0,Y
|
||||
sta shs_part_base_mid,Y
|
||||
lda Dbffb,X
|
||||
sta D0678-$c0,Y
|
||||
sta shs_cur_part_size_high,Y
|
||||
lda Dbffb,X
|
||||
sta D06f8-$c0,Y
|
||||
sta shs_cur_part_size_low,Y
|
||||
lda Dbffb,X
|
||||
sta D0778-$c0,Y
|
||||
sta shs_os_code,Y
|
||||
lda Dbffb,X
|
||||
sta D07f8-$c0,Y
|
||||
sta shs_os_check,Y
|
||||
rts
|
||||
|
||||
Lca31: lda D0778-$c0,Y
|
||||
eor D07f8-$c0,Y
|
||||
Lca31: lda shs_os_code,Y
|
||||
eor shs_os_check,Y
|
||||
cmp #$5a
|
||||
beq Lca73
|
||||
jsr Sca8e
|
||||
|
@ -751,24 +757,24 @@ Lca31: lda D0778-$c0,Y
|
|||
cmp #$be
|
||||
bne Lca6a
|
||||
Lca61: txa
|
||||
sta D0778-$c0,Y
|
||||
sta shs_os_code,Y
|
||||
eor #$5a
|
||||
sta D07f8-$c0,Y
|
||||
sta shs_os_check,Y
|
||||
Lca6a: jsr Scb00
|
||||
ldy D07f8
|
||||
sta D0478-$c0,Y
|
||||
Lca73: lda D0478-$c0,Y
|
||||
ldy mslot
|
||||
sta shs_card_block_count,Y
|
||||
Lca73: lda shs_card_block_count,Y
|
||||
asl
|
||||
sta D0678-$c0,Y
|
||||
sta shs_cur_part_size_high,Y
|
||||
lda #$00
|
||||
sta D06f8-$c0,Y
|
||||
sta D05f8-$c0,Y
|
||||
sta D0578-$c0,Y
|
||||
sta shs_cur_part_size_low,Y
|
||||
sta shs_part_base_mid,Y
|
||||
sta shs_part_base_high,Y
|
||||
lda #$01
|
||||
sta D04f8-$c0,Y
|
||||
sta shs_idx_part_data,Y
|
||||
rts
|
||||
|
||||
Sca8b: ldx D0778
|
||||
Sca8b: ldx shg_0778
|
||||
|
||||
Sca8e: lda #$00
|
||||
sta Dbff8,X
|
||||
|
@ -778,15 +784,15 @@ Sca8e: lda #$00
|
|||
|
||||
Sca9a: jsr Sca8e
|
||||
|
||||
Sca9d: ldy D07f8
|
||||
lda D0478-$c0,Y
|
||||
Sca9d: ldy mslot
|
||||
lda shs_card_block_count,Y
|
||||
cmp #$09
|
||||
lda Dbffa,X
|
||||
bcs Lcaac
|
||||
and #$0f
|
||||
Lcaac: pha
|
||||
bne Lcacd
|
||||
lda D04f8-$c0,Y
|
||||
lda shs_idx_part_data,Y
|
||||
cmp #$08
|
||||
bne Lcacd
|
||||
lda Dbff9,X
|
||||
|
@ -794,7 +800,7 @@ Lcaac: pha
|
|||
bcs Lcacd
|
||||
ora #$fe
|
||||
sta Dbff9,X
|
||||
lda D0478-$c0,Y
|
||||
lda shs_card_block_count,Y
|
||||
sbc #$00
|
||||
rol
|
||||
sta Dbffa,X
|
||||
|
@ -802,16 +808,16 @@ Lcacb: pla
|
|||
rts
|
||||
|
||||
Lcacd: lda Dbff9,X
|
||||
cmp D06f8-$c0,Y
|
||||
cmp shs_cur_part_size_low,Y
|
||||
pla
|
||||
pha
|
||||
sbc D0678-$c0,Y
|
||||
sbc shs_cur_part_size_high,Y
|
||||
bcs Lcacb
|
||||
lda Dbff9,X
|
||||
adc D05f8-$c0,Y
|
||||
adc shs_part_base_mid,Y
|
||||
sta Dbff9,X
|
||||
pla
|
||||
adc D0578-$c0,Y
|
||||
adc shs_part_base_high,Y
|
||||
sta Dbffa,X
|
||||
rts
|
||||
|
||||
|
@ -964,10 +970,10 @@ Lcc0c: tya
|
|||
sec
|
||||
rts
|
||||
|
||||
Lcc0f: ldy D07f8
|
||||
Lcc0f: ldy mslot
|
||||
jsr Scfe4
|
||||
ldy D0478
|
||||
ldx D04f8
|
||||
ldy shg_0478
|
||||
ldx shg_04f8
|
||||
Lcc1b: lda #$00
|
||||
clc
|
||||
rts
|
||||
|
@ -1090,11 +1096,11 @@ Lccf5: tya
|
|||
sta (Z48),Y
|
||||
rts
|
||||
|
||||
Sccfb: ldy D07f8
|
||||
Sccfb: ldy mslot
|
||||
ldx #$03
|
||||
Lcd00: lda D06f8-$c0,Y
|
||||
Lcd00: lda shs_cur_part_size_low,Y
|
||||
cmp Dcd31,X
|
||||
lda D0678-$c0,Y
|
||||
lda shs_cur_part_size_high,Y
|
||||
sbc Dcd2d,X
|
||||
bcs Lcd12
|
||||
dex
|
||||
|
@ -1107,13 +1113,13 @@ Lcd12: txa
|
|||
rts
|
||||
|
||||
Scd16: clc
|
||||
ldy D07f8
|
||||
lda D05f8-$c0,Y
|
||||
ldy mslot
|
||||
lda shs_part_base_mid,Y
|
||||
adc Dcd3b,X
|
||||
sta D05f8-$c0,Y
|
||||
lda D0578-$c0,Y
|
||||
sta shs_part_base_mid,Y
|
||||
lda shs_part_base_high,Y
|
||||
adc Dcd39,X
|
||||
sta D0578-$c0,Y
|
||||
sta shs_part_base_high,Y
|
||||
rts
|
||||
|
||||
Dcd2d: fcb $02,$04,$06,$0c
|
||||
|
@ -1124,15 +1130,15 @@ Dcd39: fcb $02,$06
|
|||
Dcd3b: fcb $30,$40
|
||||
|
||||
|
||||
Scd3d: ldy D07f8
|
||||
Scd3d: ldy mslot
|
||||
jsr Scfe4
|
||||
cmp #$10
|
||||
bcs Lcd4c
|
||||
lda D0478
|
||||
lda shg_0478
|
||||
beq Lcd55
|
||||
Lcd4c: lda D07f8-$c0,Y
|
||||
Lcd4c: lda shs_os_check,Y
|
||||
eor #$5a
|
||||
cmp D0778-$c0,Y
|
||||
cmp shs_os_code,Y
|
||||
sec
|
||||
Lcd55: rts
|
||||
|
||||
|
@ -1145,24 +1151,24 @@ Scd56: jsr Scd3d
|
|||
rts
|
||||
|
||||
Lcd63: lda #$33
|
||||
sta D0778-$c0,Y
|
||||
sta shs_os_code,Y
|
||||
jsr Sccfb
|
||||
bmi Lcd97
|
||||
bcc Lcd91
|
||||
lda D05f8-$c0,Y
|
||||
lda shs_part_base_mid,Y
|
||||
pha
|
||||
lda D0578-$c0,Y
|
||||
lda shs_part_base_high,Y
|
||||
pha
|
||||
stx D04f8
|
||||
stx shg_04f8
|
||||
jsr Scd16
|
||||
ldy Dcfe2,X
|
||||
jsr Scdfb
|
||||
ldx D04f8
|
||||
ldy D07f8
|
||||
ldx shg_04f8
|
||||
ldy mslot
|
||||
pla
|
||||
sta D0578-$c0,Y
|
||||
sta shs_part_base_high,Y
|
||||
pla
|
||||
sta D05f8-$c0,Y
|
||||
sta shs_part_base_mid,Y
|
||||
Lcd91: ldy Dcfe2,X
|
||||
jmp Lcdc1
|
||||
|
||||
|
@ -1179,34 +1185,34 @@ Lcda4: clc
|
|||
|
||||
Lcda6: jsr Scdec
|
||||
bne Lcdb0
|
||||
cmp D0778-$c0,Y
|
||||
cmp shs_os_code,Y
|
||||
beq Lcda4
|
||||
Lcdb0: sec
|
||||
rts
|
||||
|
||||
Lcdb2: jsr Scdec
|
||||
bne Lcdb0
|
||||
sta D0778-$c0,Y
|
||||
sta shs_os_code,Y
|
||||
ldy #$00
|
||||
asl
|
||||
bne Lcdc1
|
||||
ldy #$87
|
||||
Lcdc1: jsr Scdfb
|
||||
jsr Sca8e
|
||||
ldy D07f8
|
||||
lda D04f8-$c0,Y
|
||||
ldy mslot
|
||||
lda shs_idx_part_data,Y
|
||||
cmp #$01
|
||||
beq Lcde2
|
||||
clc
|
||||
adc #$04
|
||||
sta Dbff8,X
|
||||
lda D0778-$c0,Y
|
||||
lda shs_os_code,Y
|
||||
sta Dbffb,X
|
||||
eor #$5a
|
||||
sta Dbffb,X
|
||||
Lcde2: lda D0778-$c0,Y
|
||||
Lcde2: lda shs_os_code,Y
|
||||
eor #$5a
|
||||
sta D07f8-$c0,Y
|
||||
sta shs_os_check,Y
|
||||
clc
|
||||
rts
|
||||
|
||||
|
@ -1215,7 +1221,7 @@ Scdec: lda proflag
|
|||
cmp #$4c
|
||||
Lcdf3: rts
|
||||
|
||||
Lcdf4: ldx D0778
|
||||
Lcdf4: ldx shg_0778
|
||||
jsr Sce67
|
||||
iny
|
||||
|
||||
|
@ -1232,9 +1238,9 @@ Sce06: lda #$00
|
|||
|
||||
Lce0c: tya
|
||||
pha
|
||||
lda D04f8
|
||||
lda shg_04f8
|
||||
cmp #$01
|
||||
lda D0478
|
||||
lda shg_0478
|
||||
sbc #$00
|
||||
lsr
|
||||
lsr
|
||||
|
@ -1336,13 +1342,13 @@ Lceaf: pha
|
|||
bne Lceaf
|
||||
rts
|
||||
|
||||
Lcec5: lda D04f8
|
||||
Lcec5: lda shg_04f8
|
||||
sta Dbffb,X
|
||||
lda D0478
|
||||
lda shg_0478
|
||||
Lcece: sta Dbffb,X
|
||||
rts
|
||||
|
||||
Lced2: lda D07f8
|
||||
Lced2: lda mslot
|
||||
eor #$f0
|
||||
bne Lcece
|
||||
Lced9: lda #$00
|
||||
|
@ -1362,7 +1368,7 @@ Lced9: lda #$00
|
|||
|
||||
Lcef4: tya
|
||||
pha
|
||||
ldy D0478
|
||||
ldy shg_0478
|
||||
beq Lcf08
|
||||
nop
|
||||
Lcefc: tya
|
||||
|
@ -1373,7 +1379,7 @@ Lcefc: tya
|
|||
tay
|
||||
dey
|
||||
bne Lcefc
|
||||
Lcf08: lda D04f8
|
||||
Lcf08: lda shg_04f8
|
||||
pha
|
||||
lsr
|
||||
lsr
|
||||
|
@ -1429,12 +1435,12 @@ Dcf30: fcb $01,$00,$00,$02,$02,$01,$02,$00
|
|||
|
||||
Dcfe2: fcb $30,$5c
|
||||
|
||||
Scfe4: lda D0678-$c0,Y
|
||||
Scfe4: lda shs_cur_part_size_high,Y
|
||||
lsr
|
||||
sta D0478
|
||||
lda D06f8-$c0,Y
|
||||
sta shg_0478
|
||||
lda shs_cur_part_size_low,Y
|
||||
ror
|
||||
sta D04f8
|
||||
sta shg_04f8
|
||||
rts
|
||||
|
||||
fillto $d000,$ff
|
||||
|
@ -1450,8 +1456,6 @@ b1_diag equ *-$1000
|
|||
Z24 equ $24
|
||||
Z28 equ $28
|
||||
Z29 equ $29
|
||||
|
||||
D0400 equ $0400
|
||||
|
||||
diag: stx D0d2b
|
||||
jsr home
|
||||
|
@ -1476,8 +1480,8 @@ L0a1b: sty Z3e
|
|||
sta Dbff9,X
|
||||
lda #$ff
|
||||
sta Dbffb,X
|
||||
ldy D07f8
|
||||
sta D0778-$c0,Y
|
||||
ldy mslot
|
||||
sta shs_os_code,Y
|
||||
L0a3d: lda #$00
|
||||
sta Z24
|
||||
ldy #d_msg_idx_pass
|
||||
|
@ -1526,7 +1530,7 @@ L0a80: tya
|
|||
|
||||
L0a9a: ldy #d_msg_idx_address
|
||||
jsr d_msgout
|
||||
ldx D0778
|
||||
ldx shg_0778
|
||||
lda Dbff8,X
|
||||
dec Dbff8,X
|
||||
and #$7f
|
||||
|
@ -1892,12 +1896,6 @@ Z32 equ $32
|
|||
Z3e equ $3e
|
||||
Z3f equ $3f
|
||||
|
||||
D03b8 equ $03b8
|
||||
D06b8 equ $06b8
|
||||
D0738 equ $0738
|
||||
D0778 equ $0778
|
||||
nnD07f8 equ $07f8
|
||||
|
||||
D0800 equ $0800
|
||||
D0801 equ $0801
|
||||
D0802 equ $0802
|
||||
|
@ -1949,9 +1947,9 @@ partmgr:
|
|||
eor Dbffb,X
|
||||
cmp #$5a
|
||||
beq L0a6b
|
||||
L0a1b: ldy D07f8
|
||||
lda D06b8,Y
|
||||
eor D0738,Y
|
||||
L0a1b: ldy mslot
|
||||
lda shs_os_code,Y
|
||||
eor shs_os_check,Y
|
||||
cmp #$5a
|
||||
bne L0a3f
|
||||
jsr home
|
||||
|
@ -1970,8 +1968,8 @@ L0a3f: jsr Sca8b
|
|||
jsr Sca8b
|
||||
lda #$04
|
||||
sta Dbff8,X
|
||||
ldy D07f8
|
||||
lda D03b8,Y
|
||||
ldy mslot
|
||||
lda shs_card_block_count,Y
|
||||
pha
|
||||
sta Dbffb,X
|
||||
lda #$0a
|
||||
|
@ -1994,7 +1992,7 @@ L0a7d: lda #$00
|
|||
sta Z25
|
||||
ldy #p_msg_idx_heading
|
||||
jsr p_msgout
|
||||
lda D07f8
|
||||
lda mslot
|
||||
eor #$70
|
||||
jsr cout
|
||||
jsr crout
|
||||
|
@ -2416,8 +2414,8 @@ L0e0e: ldx #$01
|
|||
lda #$00
|
||||
beq L0e2f
|
||||
|
||||
S0e27: ldx D0778
|
||||
ldy D07f8
|
||||
S0e27: ldx shg_0778
|
||||
ldy mslot
|
||||
lda #$7b
|
||||
L0e2f: sty L00+1
|
||||
sta L00
|
||||
|
|
Loading…
Reference in New Issue