second: hook up fake bios

This commit is contained in:
Vince Weaver 2023-11-02 22:46:35 -04:00
parent bf628eaa71
commit e9f3645e52
6 changed files with 121 additions and 66 deletions

View File

@ -11,6 +11,7 @@ all: second_d1.dsk second_d2.dsk
second_d1.dsk: QBOOT QLOAD music.inc qload.inc \ second_d1.dsk: QBOOT QLOAD music.inc qload.inc \
MUSIC_INTRO \ MUSIC_INTRO \
MUSIC \ MUSIC \
./part00_boot/FAKE_BIOS \
./part01_intropan/INTRO \ ./part01_intropan/INTRO \
./part04_chess_shapes/CHESS \ ./part04_chess_shapes/CHESS \
./part05_dot_tunnel/TUNNEL \ ./part05_dot_tunnel/TUNNEL \
@ -30,6 +31,7 @@ second_d1.dsk: QBOOT QLOAD music.inc qload.inc \
$(DOS33_RAW) second_d1.dsk 1 0 QLOAD 0 0 $(DOS33_RAW) second_d1.dsk 1 0 QLOAD 0 0
$(DOS33_RAW) second_d1.dsk 2 0 MUSIC_INTRO 0 0 $(DOS33_RAW) second_d1.dsk 2 0 MUSIC_INTRO 0 0
$(DOS33_RAW) second_d1.dsk 4 0 MUSIC 0 0 $(DOS33_RAW) second_d1.dsk 4 0 MUSIC 0 0
$(DOS33_RAW) second_d1.dsk 9 0 ./part00_boot/FAKE_BIOS 0 0
$(DOS33_RAW) second_d1.dsk 10 0 ./part01_intropan/INTRO 0 0 $(DOS33_RAW) second_d1.dsk 10 0 ./part01_intropan/INTRO 0 0
$(DOS33_RAW) second_d1.dsk 15 0 ./part04_chess_shapes/CHESS 0 0 $(DOS33_RAW) second_d1.dsk 15 0 ./part04_chess_shapes/CHESS 0 0
# $(DOS33_RAW) second_d1.dsk 16 0 ./part05_dot_tunnel/TUNNEL 0 0 # $(DOS33_RAW) second_d1.dsk 16 0 ./part05_dot_tunnel/TUNNEL 0 0
@ -46,6 +48,9 @@ second_d1.dsk: QBOOT QLOAD music.inc qload.inc \
#### ####
part00_boot/FAKE_BIOS:
cd part00_boot && make
part01_intropan/INTRO: part01_intropan/INTRO:
cd part01_intropan && make cd part01_intropan && make
@ -319,6 +324,7 @@ generate_common.o: generate_common.c
clean: clean:
rm -f *~ *.o *.lst HELLO SECOND QBOOT QLOAD MUSIC START rm -f *~ *.o *.lst HELLO SECOND QBOOT QLOAD MUSIC START
rm -f qload.inc qload2.inc music.inc music2.inc rm -f qload.inc qload2.inc music.inc music2.inc
cd part00_boot && make clean
cd part01_intropan && make clean cd part01_intropan && make clean
cd part04_chess_shapes && make clean cd part04_chess_shapes && make clean
cd part08_gorilla && make clean cd part08_gorilla && make clean

View File

@ -80,8 +80,8 @@ qload 4k 1 16
00 music_intro ?? 2-3 32 00 music_intro ?? 2-3 32
01 music_main ?? 4-7 48 01 music_main ?? 4-7 48
02 fake_bios: 4k 10 16 02 fake_bios: 4k 9 16
02 intro_pan: 16k 11-14 64 02 intro_pan: 16k 10-14 64
02 title: 4k 02 title: 4k
; pause to load new music ; pause to load new music

View File

@ -3,20 +3,27 @@
.include "../zp.inc" .include "../zp.inc"
.include "../hardware.inc" .include "../hardware.inc"
.include "../qload.inc"
mod7_table = $1c00
div7_table = $1d00
hposn_low = $1e00
hposn_high = $1f00
bios_test: bios_test:
;=================== ;===================
; set graphics mode ; set graphics mode
;=================== ;===================
jsr HOME
bit HIRES bit HIRES
bit FULLGR bit FULLGR
bit SET_GR bit SET_GR
bit PAGE1 bit PAGE1
jsr build_tables lda #0
sta FAKE_KEY_COUNT
; jsr build_tables
;======================= ;=======================
; Hardware Detect Model ; Hardware Detect Model
@ -173,16 +180,18 @@ done_detect_cpu:
;==================== ;====================
; detect disk slot ; detect disk slot
;==================== ;====================
; this depends on DOS3.3 loading
lda $B5F7 ; slot*16 ; lda $B5F7 ; slot*16
lda WHICH_SLOT
lsr lsr
lsr lsr
lsr lsr
lsr lsr
adc #'0' adc #'0'
sta slot_patch1+1 sta slot_patch1+1
sta slot_patch2+1 ; sta slot_patch2+1
sta slot_patch3+1 sta slot_patch3+1
sta slot_patch5+7 sta slot_patch5+7
sta slot_patch6+7 sta slot_patch6+7
@ -212,14 +221,15 @@ mockingboard_found:
mockingboard_notfound: mockingboard_notfound:
;=================== ;===================
; Load graphics ; Load graphics
;=================== ;===================
lda #<graphics_data lda #<graphics_data
sta ZX0_src sta zx_src_l+1
lda #>graphics_data lda #>graphics_data
sta ZX0_src+1 sta zx_src_h+1
lda #$20 ; temporarily load to $2000 lda #$20 ; temporarily load to $2000
@ -351,7 +361,7 @@ print_rest:
; type the CD command ; type the CD command
;==================== ;====================
ldx #17 ldx #15
jsr draw_dos_command jsr draw_dos_command
jsr DrawCondensedStringAgain jsr DrawCondensedStringAgain
@ -360,36 +370,58 @@ print_rest:
; type the DIR command ; type the DIR command
;==================== ;====================
jsr DrawCondensedStringAgain ; jsr DrawCondensedStringAgain
ldx #6 ; ldx #6
jsr draw_dos_command ; jsr draw_dos_command
jsr DrawCondensedStringAgain ; jsr DrawCondensedStringAgain
;==================== ;====================
; show DIR ; show DIR
;==================== ;====================
bit $C0E9 ; turn on drive motor (slot6) ; bit $C0E9 ; turn on drive motor (slot6)
lda #<bios_message_6 ; lda #<bios_message_6
ldy #>bios_message_6 ; ldy #>bios_message_6
ldx #7 ; ldx #7
jsr draw_multiple_strings ; jsr draw_multiple_strings
bit $C0E8 ; turn off drive motor (slot6) ; bit $C0E8 ; turn off drive motor (slot6)
;======================= ;=======================
; type the LEMM command ; type the A2 command
;======================= ;=======================
ldx #5 ldx #4
jsr draw_dos_command jsr draw_dos_command
end: end:
jmp end ldx #5
jsr long_wait
rts
fake_keypress:
inc FAKE_KEY_COUNT
lda FAKE_KEY_COUNT
and #$1
beq do_fake_key
no_fake_key:
clc
rts
do_fake_key:
sec
rts
; jmp end
; 0123456789012345678901234567890123456789 ; 0123456789012345678901234567890123456789
@ -462,21 +494,20 @@ slot_patch1:
.byte "c",0 .byte "c",0
.byte "d",0 .byte "d",0
.byte " ",0 .byte " ",0
.byte "g",0 .byte "d",0
.byte "a",0
.byte "m",0
.byte "e",0 .byte "e",0
.byte "m",0
.byte "o",0
.byte "s",0 .byte "s",0
.byte "\",0 .byte "\",0
.byte "l",0 .byte "a",0
.byte "2",0
.byte "r",0
.byte "e",0 .byte "e",0
.byte "m",0 .byte "a",0
.byte "m",0 .byte "l",13,0
.byte "i",0
.byte "n",0
.byte "g",0
.byte "s",13,0
.if 0
bios_message5: bios_message5:
.byte 13,0 .byte 13,0
slot_patch2: slot_patch2:
@ -496,34 +527,28 @@ bios_message_6:
.byte "LEVEL9 LEVEL10 LEMM",13,0 .byte "LEVEL9 LEVEL10 LEMM",13,0
.byte " 13 File(s) 90,624 Bytes.",13,0 .byte " 13 File(s) 90,624 Bytes.",13,0
.byte " 2 Dir(s) 52,736 Bytes free.",13,13,0 .byte " 2 Dir(s) 52,736 Bytes free.",13,13,0
.endif
bios_message7: bios_message7:
slot_patch3: slot_patch3:
.byte "S6D1>",0 ; 184 .byte "S6D1>",0 ; 184
.byte "l",0 .byte "a",0
.byte "e",0 .byte "2",0
.byte "m",0 .byte "r",0
.byte "m",0
.include "font_console_1x8.s" .include "font_console_1x8.s"
.include "fonts/a2_cga_thin.inc" .include "fonts/a2_cga_thin.inc"
.include "../zx02_optim.s"
graphics_data: graphics_data:
.incbin "graphics/a2_energy.hgr.zx02" .incbin "graphics/a2_energy.hgr.zx02"
hposn_low = $1713 ; 0xC0 bytes (lifetime, used by DrawLargeCharacter) .include "../wait_keypress.s"
hposn_high = $1800 ; 0xC0 bytes (lifetime, used by DrawLargeCharacter)
.include "../hgr_table.s" ;wait_until_keypress:
; lda KEYPRESS ; 4
; bpl wait_until_keypress ; 3
wait_until_keypress: ; bit KEYRESET ; clear the keyboard buffer
lda KEYPRESS ; 4 ; rts ; 6
bpl wait_until_keypress ; 3
bit KEYRESET ; clear the keyboard buffer
rts ; 6
memcount: memcount:
@ -660,16 +685,19 @@ dos_command_inner:
lda #200 lda #200
jsr wait jsr wait
lda KEYPRESS jsr fake_keypress
bmi dos_keypress ; lda KEYPRESS
bcs dos_keypress
jsr DrawCondensedStringAgain jsr DrawCondensedStringAgain
dec CH dec CH
lda #200 lda #200
jsr wait jsr wait
lda KEYPRESS jsr fake_keypress
bmi dos_keypress
; lda KEYPRESS
bcs dos_keypress
jmp dos_command_inner jmp dos_command_inner
dos_keypress: dos_keypress:
@ -752,13 +780,13 @@ early_out:
.include "../hgr_clear_screen.s" .include "../hgr_clear_screen.s"
.include "pt3_lib_detect_model.s" ;.include "pt3_lib_detect_model.s"
.include "../lc_detect.s"
.include "aux_detect.s" .include "aux_detect.s"
.include "65c02_detect.s" .include "65c02_detect.s"
.include "pt3_lib_mockingboard_setup.s" .include "pt3_lib_mockingboard_setup.s"
.include "../pt3_lib_mockingboard_detect.s"
;.include "../lc_detect.s"
.include "../wait.s" ;.include "../pt3_lib_mockingboard_detect.s"
;.include "../wait.s"

View File

@ -166,44 +166,44 @@ which_disk_array:
.byte 1,1,1,1 ; MUSIC_INTRO, MUSIC_MAIN, INTRO, CHESS .byte 1,1,1,1 ; MUSIC_INTRO, MUSIC_MAIN, INTRO, CHESS
.byte 1,1,1,1 ; GORILLA,LEAVES,LENS,PLASMA .byte 1,1,1,1 ; GORILLA,LEAVES,LENS,PLASMA
.byte 1,1,1,1 ; CUBE,DOTS,SPHERES,OCEAN .byte 1,1,1,1 ; CUBE,DOTS,SPHERES,OCEAN
.byte 1 ; POLAR .byte 1,1 ; POLAR,FAKE_BIOS
load_address_array: load_address_array:
.byte $D0,$D0,$60,$80 ; MUSIC_INTRO, MUSIC_MAIN, INTRO, CHESS .byte $D0,$D0,$60,$80 ; MUSIC_INTRO, MUSIC_MAIN, INTRO, CHESS
.byte $60,$60,$60,$60 ; GORILLA,LEAVES,LENS,PLASMA .byte $60,$60,$60,$60 ; GORILLA,LEAVES,LENS,PLASMA
.byte $60,$60,$60,$60 ; CUBE,DOTS,SPHERES,OCEAN .byte $60,$60,$60,$60 ; CUBE,DOTS,SPHERES,OCEAN
.byte $60 ; POLAR .byte $60,$60 ; POLAR,FAKE_BIOS
start_address: start_address:
.byte $D0,$D0,$60,$80 ; MUSIC_INTRO, MUSIC_MAIN, INTRO, CHESS .byte $D0,$D0,$60,$80 ; MUSIC_INTRO, MUSIC_MAIN, INTRO, CHESS
.byte $60,$60,$60,$80 ; GORILLA,LEAVES,LENS,PLASMA .byte $60,$60,$60,$80 ; GORILLA,LEAVES,LENS,PLASMA
.byte $80,$80,$80,$60 ; CUBE,DOTS,SPHERES,OCEAN .byte $80,$80,$80,$60 ; CUBE,DOTS,SPHERES,OCEAN
.byte $80 ; POLAR .byte $80,$60 ; POLAR,FAKE_BIOS
aux_dest: aux_dest:
.byte $D0,$D0,$A0,$A0 ; MUSIC_INTRO, MUSIC_MAIN, INTRO, CHESS .byte $D0,$D0,$A0,$A0 ; MUSIC_INTRO, MUSIC_MAIN, INTRO, CHESS
.byte $70,$50,$40,$30 ; GORILLA,LEAVES,LENS,PLASMA .byte $70,$50,$40,$30 ; GORILLA,LEAVES,LENS,PLASMA
.byte $20,$10,$80,$20 ; CUBE,DOTS,SPHERES,OCEAN .byte $20,$10,$80,$20 ; CUBE,DOTS,SPHERES,OCEAN
.byte $10 ; POLAR .byte $10,$A0 ; POLAR,FAKE_BIOS
track_array: track_array:
.byte 2,4,10,15 ; MUSIC_INTRO, MUSIC_MAIN, INTRO, CHESS .byte 2,4,10,15 ; MUSIC_INTRO, MUSIC_MAIN, INTRO, CHESS
.byte 19,21,23,24 ; GORILLA,LEAVES,LENS,PLASMA .byte 19,21,23,24 ; GORILLA,LEAVES,LENS,PLASMA
.byte 25,26,27,28 ; CUBE,DOTS,SPHERES,OCEAN .byte 25,26,27,28 ; CUBE,DOTS,SPHERES,OCEAN
.byte 34 ; POLAR .byte 34,9 ; POLAR,FAKE_BIOS
sector_array: sector_array:
.byte 0,0,0,0 ; MUSIC_INTRO, MUSIC_MAIN, INTRO, CHESS .byte 0,0,0,0 ; MUSIC_INTRO, MUSIC_MAIN, INTRO, CHESS
.byte 0,0,0,0 ; GORILLA,LEAVES,LENS,PLASMA .byte 0,0,0,0 ; GORILLA,LEAVES,LENS,PLASMA
.byte 0,0,0,0 ; CUBE,DOTS,SPHERES,OCEAN .byte 0,0,0,0 ; CUBE,DOTS,SPHERES,OCEAN
.byte 0 ; POLAR .byte 0,0 ; POLAR,FAKE_BIOS
length_array: length_array:
.byte 32,48,80,48 ; MUSIC_INTRO, MUSIC_MAIN, INTRO, CHESS .byte 32,48,80,48 ; MUSIC_INTRO, MUSIC_MAIN, INTRO, CHESS
.byte 32,32,16,16 ; GORILLA,LEAVES,LENS,PLASMA .byte 32,32,16,16 ; GORILLA,LEAVES,LENS,PLASMA
.byte 16,16,16,96 ; CUBE,DOTS,SPHERES,OCEAN .byte 16,16,16,96 ; CUBE,DOTS,SPHERES,OCEAN
.byte 16 ; POLAR .byte 16,16 ; POLAR,FAKE_BIOS
.include "wait.s" .include "wait.s"

View File

@ -25,8 +25,21 @@ restart:
lda #0 lda #0
sta DRAW_PAGE sta DRAW_PAGE
;========================
; fake BIOS
;========================
lda #13 ; load FAKE_BIOS
sta WHICH_LOAD
jsr load_file
; run it
jsr $6000
;================================== ;==================================
; load sound into the language card ; load music into the language card
; into $D000 set 1 ; into $D000 set 1
;================================== ;==================================

View File

@ -226,6 +226,14 @@ REF2L = $F7
REF2H = $F8 REF2H = $F8
REFCOUNT = $F9 REFCOUNT = $F9
; BIOS
STRING_COUNT = $F0
LEAD0 = $F1
SCROLL_OUT = $F2
SCROLL_IN = $F3
MEMCOUNT = $F4
FAKE_KEY_COUNT = $F5
;============================================== ;==============================================
; $FC-$FF we use for in/out pointers ; $FC-$FF we use for in/out pointers
;============================================== ;==============================================