riven: change-disk code now actually lets you continue

sort of cleaned up qload code as well
This commit is contained in:
Vince Weaver
2024-06-20 21:44:52 -04:00
parent a388475779
commit 682905299d
18 changed files with 305 additions and 239 deletions

View File

@@ -12,19 +12,22 @@ all: riven_disk01.dsk \
###
riven_disk01.dsk: QBOOT QLOAD_01 TITLE_01 \
riven_disk01.dsk: QBOOT QLOAD TITLE_01 \
disk01_files/DISK01 \
disk01_files/LEVEL_ARRIVAL
cp $(EMPTY_DISK)/empty.dsk riven_disk01.dsk
$(DOS33_RAW) riven_disk01.dsk 0 0 QBOOT 0 1
$(DOS33_RAW) riven_disk01.dsk 0 2 QBOOT 1 1
$(DOS33_RAW) riven_disk01.dsk 0 4 QBOOT 2 1
$(DOS33_RAW) riven_disk01.dsk 1 0 QLOAD_01 0 0
$(DOS33_RAW) riven_disk01.dsk 0 8 disk01_files/DISK01 0 0
$(DOS33_RAW) riven_disk01.dsk 1 0 QLOAD 0 0
$(DOS33_RAW) riven_disk01.dsk 1 8 TITLE_01 0 0
$(DOS33_RAW) riven_disk01.dsk 2 0 disk01_files/LEVEL_ARRIVAL 0 0
###
riven_disk39.dsk: QBOOT QLOAD_39 TITLE_39 \
riven_disk39.dsk: QBOOT QLOAD TITLE_39 \
disk39_files/DISK39 \
disk39_files/LEVEL_MAGSTEPS \
disk39_files/LEVEL_MAGLEV \
disk39_files/LEVEL_OUTSIDE \
@@ -35,7 +38,8 @@ riven_disk39.dsk: QBOOT QLOAD_39 TITLE_39 \
$(DOS33_RAW) riven_disk39.dsk 0 0 QBOOT 0 1
$(DOS33_RAW) riven_disk39.dsk 0 2 QBOOT 1 1
$(DOS33_RAW) riven_disk39.dsk 0 4 QBOOT 2 1
$(DOS33_RAW) riven_disk39.dsk 1 0 QLOAD_39 0 0
$(DOS33_RAW) riven_disk39.dsk 0 8 disk39_files/DISK39 0 0
$(DOS33_RAW) riven_disk39.dsk 1 0 QLOAD 0 0
$(DOS33_RAW) riven_disk39.dsk 1 8 TITLE_39 0 0
$(DOS33_RAW) riven_disk39.dsk 2 0 disk39_files/LEVEL_PROJECTOR 0 0
$(DOS33_RAW) riven_disk39.dsk 9 0 disk39_files/LEVEL_OUTSIDE 0 0
@@ -44,25 +48,29 @@ riven_disk39.dsk: QBOOT QLOAD_39 TITLE_39 \
$(DOS33_RAW) riven_disk39.dsk 25 0 disk39_files/MOVIE_MAGLEV_FLIP 0 0
$(DOS33_RAW) riven_disk39.dsk 27 0 disk39_files/MOVIE_MAGLEV_RIDE 0 0
riven_disk40.dsk: QBOOT QLOAD_40 TITLE_40 \
riven_disk40.dsk: QBOOT QLOAD TITLE_40 \
disk40_files/DISK40 \
disk40_files/LEVEL_MAGLEV \
disk40_files/LEVEL_OUTSIDE
cp $(EMPTY_DISK)/empty.dsk riven_disk40.dsk
$(DOS33_RAW) riven_disk40.dsk 0 0 QBOOT 0 1
$(DOS33_RAW) riven_disk40.dsk 0 2 QBOOT 1 1
$(DOS33_RAW) riven_disk40.dsk 0 4 QBOOT 2 1
$(DOS33_RAW) riven_disk40.dsk 1 0 QLOAD_40 0 0
$(DOS33_RAW) riven_disk40.dsk 0 8 disk40_files/DISK40 0 0
$(DOS33_RAW) riven_disk40.dsk 1 0 QLOAD 0 0
$(DOS33_RAW) riven_disk40.dsk 1 8 TITLE_40 0 0
$(DOS33_RAW) riven_disk40.dsk 2 0 disk40_files/LEVEL_MAGLEV 0 0
$(DOS33_RAW) riven_disk40.dsk 9 0 disk40_files/LEVEL_OUTSIDE 0 0
riven_disk43.dsk: QBOOT QLOAD_43 TITLE_43 \
riven_disk43.dsk: QBOOT QLOAD TITLE_43 \
disk43_files/DISK43 \
disk43_files/LEVEL_CART
cp $(EMPTY_DISK)/empty.dsk riven_disk43.dsk
$(DOS33_RAW) riven_disk43.dsk 0 0 QBOOT 0 1
$(DOS33_RAW) riven_disk43.dsk 0 2 QBOOT 1 1
$(DOS33_RAW) riven_disk43.dsk 0 4 QBOOT 2 1
$(DOS33_RAW) riven_disk43.dsk 1 0 QLOAD_43 0 0
$(DOS33_RAW) riven_disk43.dsk 0 8 disk43_files/DISK43 0 0
$(DOS33_RAW) riven_disk43.dsk 1 0 QLOAD 0 0
$(DOS33_RAW) riven_disk43.dsk 1 8 TITLE_43 0 0
$(DOS33_RAW) riven_disk43.dsk 2 0 disk43_files/LEVEL_CART 0 0
@@ -76,67 +84,21 @@ qboot_sector.o: qboot_sector.s qboot_stage2.s
###
QLOAD_01: qload_01.o
ld65 -o QLOAD_01 qload_01.o -C $(LINKER_SCRIPTS)/apple2_1800.inc
QLOAD: qload.o
ld65 -o QLOAD qload.o -C $(LINKER_SCRIPTS)/apple2_1800.inc
qload_01.o: qload.s qboot.inc \
qload.o: qload.s qboot.inc \
zx02_optim.s wait.s \
draw_pointer.s log_table.s \
disk01_files/disk01_qload.inc \
disk01_files/disk01_defines.inc \
graphics_sprites/pointer_sprites.inc \
hgr_14x14_sprite.s \
keyboard.s
ca65 -o qload_01.o qload.s -DDISK=01 -l qload_01.lst
###
QLOAD_39: qload_39.o
ld65 -o QLOAD_39 qload_39.o -C $(LINKER_SCRIPTS)/apple2_1800.inc
qload_39.o: qload.s qboot.inc \
zx02_optim.s wait.s \
draw_pointer.s log_table.s \
disk39_files/disk39_qload.inc \
disk39_files/disk39_defines.inc \
graphics_sprites/pointer_sprites.inc \
hgr_14x14_sprite.s \
keyboard.s
ca65 -o qload_39.o qload.s -DDISK=39 -l qload_39.lst
###
QLOAD_40: qload_40.o
ld65 -o QLOAD_40 qload_40.o -C $(LINKER_SCRIPTS)/apple2_1800.inc
qload_40.o: qload.s qboot.inc \
zx02_optim.s wait.s \
draw_pointer.s log_table.s \
disk40_files/disk40_qload.inc \
disk40_files/disk40_defines.inc \
graphics_sprites/pointer_sprites.inc \
hgr_14x14_sprite.s \
keyboard.s
ca65 -o qload_40.o qload.s -DDISK=40 -l qload_40.lst
ca65 -o qload.o qload.s -l qload.lst
####
QLOAD_43: qload_43.o
ld65 -o QLOAD_43 qload_43.o -C $(LINKER_SCRIPTS)/apple2_1800.inc
qload_43.o: qload.s qboot.inc \
zx02_optim.s wait.s \
draw_pointer.s log_table.s \
disk43_files/disk43_qload.inc \
disk43_files/disk43_defines.inc \
graphics_sprites/pointer_sprites.inc \
hgr_14x14_sprite.s \
keyboard.s
ca65 -o qload_43.o qload.s -DDISK=43 -l qload_43.lst
####
TITLE_01: title_01.o
ld65 -o TITLE_01 title_01.o -C $(LINKER_SCRIPTS)/apple2_4000.inc
@@ -271,15 +233,15 @@ generate_common.o: generate_common.c
#change_location = qload_start+$5f9
qload.inc: generate_common QLOAD_01
./generate_common -a 0x1800 -s full_decomp qload_01.lst > qload.inc
./generate_common -a 0x1800 -s wait qload_01.lst >> qload.inc
./generate_common -a 0x1800 -s wait_50xms qload_01.lst >> qload.inc
./generate_common -a 0x1800 -s draw_pointer qload_01.lst >> qload.inc
./generate_common -a 0x1800 -s save_bg_14x14 qload_01.lst >> qload.inc
./generate_common -a 0x1800 -s handle_keypress qload_01.lst >> qload.inc
./generate_common -a 0x1800 -s change_location qload_01.lst >> qload.inc
./generate_common -a 0x1800 -s move_and_print qload_01.lst >> qload.inc
./generate_common -a 0x1800 -s set_normal qload_01.lst >> qload.inc
qload.inc: generate_common QLOAD
./generate_common -a 0x1800 -s full_decomp qload.lst > qload.inc
./generate_common -a 0x1800 -s wait qload.lst >> qload.inc
./generate_common -a 0x1800 -s wait_50xms qload.lst >> qload.inc
./generate_common -a 0x1800 -s draw_pointer qload.lst >> qload.inc
./generate_common -a 0x1800 -s save_bg_14x14 qload.lst >> qload.inc
./generate_common -a 0x1800 -s handle_keypress qload.lst >> qload.inc
./generate_common -a 0x1800 -s change_location qload.lst >> qload.inc
./generate_common -a 0x1800 -s move_and_print qload.lst >> qload.inc
./generate_common -a 0x1800 -s set_normal qload.lst >> qload.inc

View File

@@ -8,7 +8,7 @@ $0400-$07ff = lores graphics page1
$0800-$0bff = lores graphics page2
$800-$8ff = (qboot initial sector)
$1000-$11ff = qboot_stage2 (disk code)
$1200-$12ff = ????
$1200-$12ff = QLOAD tables
$1300-$16FF = HGR lookup tables
$1700-$17FF = ????
$1800-$1FFF = QLOAD = loader code (2k?)

View File

@@ -3,8 +3,17 @@ include ../../../Makefile.inc
LINKER_SCRIPTS = ../../../linker_scripts/
all: LEVEL_ARRIVAL
all: DISK01 LEVEL_ARRIVAL
####
DISK01: disk01.o
ld65 -o DISK01 disk01.o -C $(LINKER_SCRIPTS)/apple2_4000.inc
disk01.o: disk01.s ../zp.inc
ca65 -o disk01.o disk01.s -l disk01.lst
####
LEVEL_ARRIVAL: level_arrival.o
ld65 -o LEVEL_ARRIVAL level_arrival.o -C $(LINKER_SCRIPTS)/apple2_4000.inc

View File

@@ -0,0 +1,33 @@
.include "../zp.inc"
which_disk:
.byte $01 ; BCD
load_address_array:
.byte $40,$40,$40,$40 ; TITLE, ARRIVAL
.byte $00,$00,$00,$00
track_array:
.byte 1, 2, 2,17 ; TITLE, ARRIVAL
.byte 0,0,0,0
sector_array:
.byte 8, 0, 0, 0 ; TITLE, ARRIVAL
.byte 0,0,0,0
length_array:
.byte 16, 128,123, 64 ; TITLE, ARRIVAL
.byte 0,0,0,0
disk_exit_disk: ; note: BCD (yes I'm lazy)
.byte 0,0,0,0
disk_exit_dni_h:
.byte 0,0,0,0
disk_exit_dni_l:
.byte 0,0,0,0
disk_exit_load:
.byte 0,0,0,0
disk_exit_level:
.byte 0,0,0,0
disk_exit_direction:
.byte 0,0,0,0

View File

@@ -1,19 +0,0 @@
load_address_array:
.byte $40,$40,$40,$40 ; TITLE, ARRIVAL
track_array:
.byte 1, 2, 2,17 ; TITLE, ARRIVAL
sector_array:
.byte 8, 0, 0, 0 ; TITLE, ARRIVAL
length_array:
.byte 16, 128,123, 64 ; TITLE, ARRIVAL
disk_exit_disk: ; note: BCD (yes I'm lazy)
disk_exit_dni_h:
disk_exit_dni_l:
disk_exit_load:
disk_exit_level:
disk_exit_direction:

View File

@@ -3,10 +3,22 @@ include ../../../Makefile.inc
LINKER_SCRIPTS = ../../../linker_scripts/
all: LEVEL_OUTSIDE LEVEL_PROJECTOR \
all: DISK39 \
LEVEL_OUTSIDE LEVEL_PROJECTOR \
LEVEL_MAGLEV LEVEL_MAGSTEPS \
MOVIE_MAGLEV_FLIP MOVIE_MAGLEV_RIDE
####
DISK39: disk39.o
ld65 -o DISK39 disk39.o -C $(LINKER_SCRIPTS)/apple2_4000.inc
disk39.o: disk39.s ../zp.inc
ca65 -o disk39.o disk39.s -l disk39.lst
###
LEVEL_OUTSIDE: level_outside.o
ld65 -o LEVEL_OUTSIDE level_outside.o -C $(LINKER_SCRIPTS)/apple2_4000.inc

View File

@@ -1,22 +1,33 @@
.include "../zp.inc"
which_disk:
.byte $39 ; BCD
load_address_array:
.byte $40,$40,$40,$40 ; TITLE, OUTSIDE, PROJECTOR, MAGSTEPS
.byte $40,$40,$40 ; MAGLEV, MOVIE1, MOVIE2
.byte $40,$40,$40,$00 ; MAGLEV, MOVIE1, MOVIE2
track_array:
.byte 1, 9, 2,17 ; TITLE, OUTSIDE, PROJECTOR, MAGSTEPS
.byte 21,25,27 ; MAGLEV, MOVIE1, MOVIE2
.byte 21,25,27,0 ; MAGLEV, MOVIE1, MOVIE2
sector_array:
.byte 8, 0, 0, 0 ; TITLE, OUTSIDE, PROJECTOR, MAGSTEPS
.byte 0, 0, 0 ; MAGLEV, MOVIE1, MOVIE2
.byte 0, 0, 0, 0 ; MAGLEV, MOVIE1, MOVIE2
length_array:
.byte 16, 123,123, 64 ; TITLE, OUTSIDE, PROJECTOR, MAGSTEPS
.byte 64, 32, 128 ; MAGLEV, MOVIE1, MOVIE2
.byte 64, 32, 128, 0 ; MAGLEV, MOVIE1, MOVIE2
disk_exit_disk: ; note: BCD (yes I'm lazy)
.byte 0,0,0,0
disk_exit_dni_h:
.byte 0,0,0,0
disk_exit_dni_l:
.byte 0,0,0,0
disk_exit_load:
.byte 0,0,0,0
disk_exit_level:
.byte 0,0,0,0
disk_exit_direction:
.byte 0,0,0,0

View File

@@ -3,7 +3,15 @@ include ../../../Makefile.inc
LINKER_SCRIPTS = ../../../linker_scripts/
all: LEVEL_MAGLEV LEVEL_OUTSIDE
all: DISK40 LEVEL_MAGLEV LEVEL_OUTSIDE
###
DISK40: disk40.o
ld65 -o DISK40 disk40.o -C $(LINKER_SCRIPTS)/apple2_4000.inc
disk40.o: disk40.s ../zp.inc
ca65 -o disk40.o disk40.s -l disk40.lst
####

View File

@@ -0,0 +1,58 @@
.include "../zp.inc"
which_disk:
.byte $40 ; BCD
load_address_array:
.byte $40,$40,$40,$00 ; TITLE, MAGLEV, OUTSIDE
.byte $00,$00,$00,$00
track_array:
.byte 1, 2, 9,17 ; TITLE, MAGLEV, OUTSIDE
.byte 0, 0, 0, 0
sector_array:
.byte 8, 0, 0, 0 ; TITLE, MAGLEV, OUTSIDE
.byte 0,0,0,0
length_array:
.byte 16, 96,96, 64 ; TITLE, MAGLEV, OUTSIDE
.byte 0,0,0,0
disk_exit_disk: ; note: BCD (yes I'm lazy)
.byte $43 ; CART (DISK43)
.byte $00
.byte $00
.byte $00
disk_exit_dni_h:
.byte $01
.byte $00
.byte $00
.byte $00
disk_exit_dni_l:
.byte $24
.byte $00
.byte $00
.byte $00
; load_cart / outside_cart / s
disk_exit_load:
.byte 1 ; LOAD_CART
.byte 0
.byte 0
.byte 0
.byte 0
disk_exit_level:
.byte $00 ; OUTSIDE_CART
.byte $00
.byte $00
.byte $00
disk_exit_direction:
.byte DIRECTION_S ; CART
.byte $00
.byte $00
.byte $00

View File

@@ -1,35 +0,0 @@
load_address_array:
.byte $40,$40,$40,$40 ; TITLE, MAGLEV, OUTSIDE
track_array:
.byte 1, 2, 9,17 ; TITLE, MAGLEV, OUTSIDE
sector_array:
.byte 8, 0, 0, 0 ; TITLE, MAGLEV, OUTSIDE
length_array:
.byte 16, 96,96, 64 ; TITLE, MAGLEV, OUTSIDE
disk_exit_disk: ; note: BCD (yes I'm lazy)
.byte $43 ; CART (DISK43)
disk_exit_dni_h:
.byte $01
disk_exit_dni_l:
.byte $24
; load_cart / outside_cart / s
disk_exit_load:
.byte 1 ; LOAD_CART
disk_exit_level:
.byte $00 ; OUTSIDE_CART
disk_exit_direction:
.byte DIRECTION_S ; CART

View File

@@ -6,9 +6,13 @@ PNG_TO_HGR = ../../../../utils/hgr-utils/png2hgr
all: outside_graphics.inc
outside_graphics.inc: \
outside_w.hgr.zx02 outside_n.hgr.zx02
outside_w.hgr.zx02 outside_n.hgr.zx02 \
out_path_e.hgr.zx02 out_path_w.hgr.zx02
echo "outside_w_zx02: .incbin \"outside_w.hgr.zx02\"" > outside_graphics.inc
echo "outside_n_zx02: .incbin \"outside_n.hgr.zx02\"" >> outside_graphics.inc
echo "out_path_e_zx02: .incbin \"out_path_e.hgr.zx02\"" >> outside_graphics.inc
echo "out_path_w_zx02: .incbin \"out_path_w.hgr.zx02\"" >> outside_graphics.inc
####

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

View File

@@ -3,7 +3,15 @@ include ../../../Makefile.inc
LINKER_SCRIPTS = ../../../linker_scripts/
all: LEVEL_CART
all: DISK43 LEVEL_CART
####
DISK43: disk43.o
ld65 -o DISK43 disk43.o -C $(LINKER_SCRIPTS)/apple2_4000.inc
disk43.o: disk43.s ../zp.inc
ca65 -o disk43.o disk43.s -l disk43.lst
####

View File

@@ -0,0 +1,34 @@
.include "../zp.inc"
which_disk:
.byte $43 ; BCD
load_address_array:
.byte $40,$40,$40,$40 ; TITLE, CART
.byte $00,$00,$00,$00
track_array:
.byte 1, 2, 9,17 ; TITLE, CART
.byte 0,0,0,0
sector_array:
.byte 8, 0, 0, 0 ; TITLE, CART
.byte 0,0,0,0
length_array:
.byte 16, 96,123, 64 ; TITLE, CART
.byte 0,0,0,0
disk_exit_disk: ; note: BCD (yes I'm lazy)
.byte 0,0,0,0
disk_exit_dni_h:
.byte 0,0,0,0
disk_exit_dni_l:
.byte 0,0,0,0
disk_exit_load:
.byte 0,0,0,0
disk_exit_level:
.byte 0,0,0,0
disk_exit_direction:
.byte 0,0,0,0

View File

@@ -1,19 +0,0 @@
load_address_array:
.byte $40,$40,$40,$40 ; TITLE, CART
track_array:
.byte 1, 2, 9,17 ; TITLE, CART
sector_array:
.byte 8, 0, 0, 0 ; TITLE, CART
length_array:
.byte 16, 96,123, 64 ; TITLE, CART
disk_exit_disk: ; note: BCD (yes I'm lazy)
disk_exit_dni_h:
disk_exit_dni_l:
disk_exit_load:
disk_exit_level:
disk_exit_direction:

View File

@@ -5,6 +5,22 @@
; This particular version only supports using a single disk drive
; (I have other versions that can look for disks across two drives)
; it also loads the QLOAD paramaters from disk separately
QLOAD_TABLE = $1200
QLOAD_DISK = $1200
LOAD_ADDRESS_ARRAY = QLOAD_TABLE+1
TRACK_ARRAY = QLOAD_TABLE+9
SECTOR_ARRAY = QLOAD_TABLE+17
LENGTH_ARRAY = QLOAD_TABLE+25
DISK_EXIT_DISK = QLOAD_TABLE+33
DISK_EXIT_DNI_H = QLOAD_TABLE+37
DISK_EXIT_DNI_L = QLOAD_TABLE+41
DISK_EXIT_LOAD = QLOAD_TABLE+45
DISK_EXIT_LEVEL = QLOAD_TABLE+49
DISK_EXIT_DIRECTION = QLOAD_TABLE+53
.include "zp.inc"
.include "hardware.inc"
@@ -13,18 +29,18 @@
.include "qboot.inc"
.if DISK=01
.include "disk01_files/disk01_defines.inc"
.endif
.if DISK=39
.include "disk39_files/disk39_defines.inc"
.endif
.if DISK=40
.include "disk40_files/disk40_defines.inc"
.endif
.if DISK=43
.include "disk43_files/disk43_defines.inc"
.endif
;.if DISK=01
;.include "disk01_files/disk01_defines.inc"
;.endif
;.if DISK=39
;.include "disk39_files/disk39_defines.inc"
;.endif
;.if DISK=40
;.include "disk40_files/disk40_defines.inc"
;.endif
;.if DISK=43
;.include "disk43_files/disk43_defines.inc"
;.endif
qload_start:
@@ -36,13 +52,18 @@ qload_start:
; jsr popwr_init
; first time entry
; start by loading the title screen
; also set value indicating this is a warm boot, not disk change
lda #1
sta NEW_GAME
lda #LOAD_TITLE ; load title
; load the QLOAD offsets file to $1200
jsr load_qload_offsets
lda QLOAD_DISK ; get disk number (BCD)
sta CURRENT_DISK
lda #0 ; load title, always 0th
sta WHICH_LOAD
lda #1
@@ -73,16 +94,17 @@ main_game_loop:
load_file:
ldx WHICH_LOAD
lda load_address_array,X
lda LOAD_ADDRESS_ARRAY,X
sta load_address
lda track_array,X
lda TRACK_ARRAY,X
sta load_track
lda sector_array,X
lda SECTOR_ARRAY,X
sta load_sector
lda length_array,X
lda LENGTH_ARRAY,X
sta load_length
jsr load_new
@@ -104,12 +126,14 @@ change_disk:
tax
; set up locations
lda DISK_EXIT_DISK,X
sta NEW_DISK
lda disk_exit_load,X
lda DISK_EXIT_LOAD,X
sta WHICH_LOAD
lda disk_exit_level,X
lda DISK_EXIT_LEVEL,X
sta LOCATION
lda disk_exit_direction,X
lda DISK_EXIT_DIRECTION,X
sta DIRECTION
; see if disk we want is in drive
@@ -138,7 +162,7 @@ change_disk:
ldy #21
lda disk_exit_disk,X
lda NEW_DISK
lsr
lsr
lsr
@@ -149,7 +173,7 @@ change_disk:
iny
lda disk_exit_disk,X
lda NEW_DISK
and #$f
clc
adc #$30
@@ -163,71 +187,48 @@ fnf_keypress:
bpl fnf_keypress
bit KEYRESET
;==============================================
; actually verify proper disk is there
; read T0:S0 and verify proper disk
;==========================
; load QLOAD table
; check if disk matches
verify_disk:
.if 0
lda WHICH_LOAD
pha
ldx #LOAD_FIRST_SECTOR ; load track 0 sector 0
stx WHICH_LOAD
jsr load_qload_offsets
jsr load_file_no_diskcheck
lda QLOAD_TABLE
cmp NEW_DISK
bne fnf_keypress
pla
sta WHICH_LOAD
tax
; first sector now in $BC00
; offset 5B
; disk1 = $12
; disk2 = $32 ('2')
; disk3 = $33 ('3')
lda $BC5B
cmp #$12
beq is_disk1
cmp #$32
beq is_disk2
cmp #$33
beq is_disk3
bne change_disk ; unknown disk
is_disk1:
lda #1
bne disk_compare ; bra
is_disk2:
lda #2
bne disk_compare ; bra
is_disk3:
lda #3
disk_compare:
cmp which_disk_array,X
bne change_disk ; disk mismatch
.endif
;==============================================
; all good, retry original load
; all good, continue
update_disk:
; ldx WHICH_LOAD
; lda disk_edit_disk,X
; sta CURRENT_DISK
; ldx CURRENT_DRIVE
; sta DRIVE1_DISK-1,X ; indexed from 1
jmp load_file
jmp main_game_loop
insert_disk_string:
.byte 9,20,"PLEASE INSERT DISK 01.",0 ; 21+22 location of disk number
.byte 11,21,"THEN PRESS ANY KEY",0
load_qload_offsets:
lda #$12
sta load_address
lda #$0
sta load_track
lda #$8
sta load_sector
lda #$1
sta load_length
jmp load_new
; common includes used by everyone
.include "zx02_optim.s"
@@ -241,21 +242,21 @@ insert_disk_string:
.include "gr_offsets.s"
.if DISK=01
.include "disk01_files/disk01_qload.inc"
.endif
;.if DISK=01
;.include "disk01_files/disk01_qload.inc"
;.endif
.if DISK=39
.include "disk39_files/disk39_qload.inc"
.endif
;.if DISK=39
;.include "disk39_files/disk39_qload.inc"
;.endif
.if DISK=40
.include "disk40_files/disk40_qload.inc"
.endif
;.if DISK=40
;.include "disk40_files/disk40_qload.inc"
;.endif
.if DISK=43
.include "disk43_files/disk43_qload.inc"
.endif
;.if DISK=43
;.include "disk43_files/disk43_qload.inc"
;.endif
qload_end:

View File

@@ -18,7 +18,7 @@ DRIVE1_DISK = $0B
DRIVE2_DISK = $0C
DRIVE1_TRACK = $0D
DRIVE2_TRACK = $0E
NEW_DISK = $0F
;; Zero page monitor routines addresses
@@ -45,7 +45,6 @@ SEEDH = $4f
XMAX = $50
; note 70-7f used by disk code (?) do we need to preserve?
; We have to save/restore the following values
; when loading/storing from disk