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 \
MUSIC_INTRO \
MUSIC \
./part00_boot/FAKE_BIOS \
./part01_intropan/INTRO \
./part04_chess_shapes/CHESS \
./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 2 0 MUSIC_INTRO 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 15 0 ./part04_chess_shapes/CHESS 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:
cd part01_intropan && make
@ -319,6 +324,7 @@ generate_common.o: generate_common.c
clean:
rm -f *~ *.o *.lst HELLO SECOND QBOOT QLOAD MUSIC START
rm -f qload.inc qload2.inc music.inc music2.inc
cd part00_boot && make clean
cd part01_intropan && make clean
cd part04_chess_shapes && make clean
cd part08_gorilla && make clean

View File

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

View File

@ -3,20 +3,27 @@
.include "../zp.inc"
.include "../hardware.inc"
.include "../qload.inc"
mod7_table = $1c00
div7_table = $1d00
hposn_low = $1e00
hposn_high = $1f00
bios_test:
;===================
; set graphics mode
;===================
jsr HOME
bit HIRES
bit FULLGR
bit SET_GR
bit PAGE1
jsr build_tables
lda #0
sta FAKE_KEY_COUNT
; jsr build_tables
;=======================
; Hardware Detect Model
@ -173,16 +180,18 @@ done_detect_cpu:
;====================
; detect disk slot
;====================
; this depends on DOS3.3 loading
lda $B5F7 ; slot*16
; lda $B5F7 ; slot*16
lda WHICH_SLOT
lsr
lsr
lsr
lsr
adc #'0'
sta slot_patch1+1
sta slot_patch2+1
; sta slot_patch2+1
sta slot_patch3+1
sta slot_patch5+7
sta slot_patch6+7
@ -212,14 +221,15 @@ mockingboard_found:
mockingboard_notfound:
;===================
; Load graphics
;===================
lda #<graphics_data
sta ZX0_src
sta zx_src_l+1
lda #>graphics_data
sta ZX0_src+1
sta zx_src_h+1
lda #$20 ; temporarily load to $2000
@ -351,7 +361,7 @@ print_rest:
; type the CD command
;====================
ldx #17
ldx #15
jsr draw_dos_command
jsr DrawCondensedStringAgain
@ -360,36 +370,58 @@ print_rest:
; type the DIR command
;====================
jsr DrawCondensedStringAgain
ldx #6
jsr draw_dos_command
; jsr DrawCondensedStringAgain
; ldx #6
; jsr draw_dos_command
jsr DrawCondensedStringAgain
; jsr DrawCondensedStringAgain
;====================
; show DIR
;====================
bit $C0E9 ; turn on drive motor (slot6)
; bit $C0E9 ; turn on drive motor (slot6)
lda #<bios_message_6
ldy #>bios_message_6
ldx #7
jsr draw_multiple_strings
; lda #<bios_message_6
; ldy #>bios_message_6
; ldx #7
; 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
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
@ -462,21 +494,20 @@ slot_patch1:
.byte "c",0
.byte "d",0
.byte " ",0
.byte "g",0
.byte "a",0
.byte "m",0
.byte "d",0
.byte "e",0
.byte "m",0
.byte "o",0
.byte "s",0
.byte "\",0
.byte "l",0
.byte "a",0
.byte "2",0
.byte "r",0
.byte "e",0
.byte "m",0
.byte "m",0
.byte "i",0
.byte "n",0
.byte "g",0
.byte "s",13,0
.byte "a",0
.byte "l",13,0
.if 0
bios_message5:
.byte 13,0
slot_patch2:
@ -496,34 +527,28 @@ bios_message_6:
.byte "LEVEL9 LEVEL10 LEMM",13,0
.byte " 13 File(s) 90,624 Bytes.",13,0
.byte " 2 Dir(s) 52,736 Bytes free.",13,13,0
.endif
bios_message7:
slot_patch3:
.byte "S6D1>",0 ; 184
.byte "l",0
.byte "e",0
.byte "m",0
.byte "m",0
.byte "a",0
.byte "2",0
.byte "r",0
.include "font_console_1x8.s"
.include "fonts/a2_cga_thin.inc"
.include "../zx02_optim.s"
graphics_data:
.incbin "graphics/a2_energy.hgr.zx02"
hposn_low = $1713 ; 0xC0 bytes (lifetime, used by DrawLargeCharacter)
hposn_high = $1800 ; 0xC0 bytes (lifetime, used by DrawLargeCharacter)
.include "../wait_keypress.s"
.include "../hgr_table.s"
wait_until_keypress:
lda KEYPRESS ; 4
bpl wait_until_keypress ; 3
bit KEYRESET ; clear the keyboard buffer
rts ; 6
;wait_until_keypress:
; lda KEYPRESS ; 4
; bpl wait_until_keypress ; 3
; bit KEYRESET ; clear the keyboard buffer
; rts ; 6
memcount:
@ -660,16 +685,19 @@ dos_command_inner:
lda #200
jsr wait
lda KEYPRESS
bmi dos_keypress
jsr fake_keypress
; lda KEYPRESS
bcs dos_keypress
jsr DrawCondensedStringAgain
dec CH
lda #200
jsr wait
lda KEYPRESS
bmi dos_keypress
jsr fake_keypress
; lda KEYPRESS
bcs dos_keypress
jmp dos_command_inner
dos_keypress:
@ -752,13 +780,13 @@ early_out:
.include "../hgr_clear_screen.s"
.include "pt3_lib_detect_model.s"
.include "../lc_detect.s"
;.include "pt3_lib_detect_model.s"
.include "aux_detect.s"
.include "65c02_detect.s"
.include "pt3_lib_mockingboard_setup.s"
.include "../pt3_lib_mockingboard_detect.s"
.include "../wait.s"
;.include "../lc_detect.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 ; GORILLA,LEAVES,LENS,PLASMA
.byte 1,1,1,1 ; CUBE,DOTS,SPHERES,OCEAN
.byte 1 ; POLAR
.byte 1,1 ; POLAR,FAKE_BIOS
load_address_array:
.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 ; CUBE,DOTS,SPHERES,OCEAN
.byte $60 ; POLAR
.byte $60,$60 ; POLAR,FAKE_BIOS
start_address:
.byte $D0,$D0,$60,$80 ; MUSIC_INTRO, MUSIC_MAIN, INTRO, CHESS
.byte $60,$60,$60,$80 ; GORILLA,LEAVES,LENS,PLASMA
.byte $80,$80,$80,$60 ; CUBE,DOTS,SPHERES,OCEAN
.byte $80 ; POLAR
.byte $80,$60 ; POLAR,FAKE_BIOS
aux_dest:
.byte $D0,$D0,$A0,$A0 ; MUSIC_INTRO, MUSIC_MAIN, INTRO, CHESS
.byte $70,$50,$40,$30 ; GORILLA,LEAVES,LENS,PLASMA
.byte $20,$10,$80,$20 ; CUBE,DOTS,SPHERES,OCEAN
.byte $10 ; POLAR
.byte $10,$A0 ; POLAR,FAKE_BIOS
track_array:
.byte 2,4,10,15 ; MUSIC_INTRO, MUSIC_MAIN, INTRO, CHESS
.byte 19,21,23,24 ; GORILLA,LEAVES,LENS,PLASMA
.byte 25,26,27,28 ; CUBE,DOTS,SPHERES,OCEAN
.byte 34 ; POLAR
.byte 34,9 ; POLAR,FAKE_BIOS
sector_array:
.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 ; CUBE,DOTS,SPHERES,OCEAN
.byte 0 ; POLAR
.byte 0,0 ; POLAR,FAKE_BIOS
length_array:
.byte 32,48,80,48 ; MUSIC_INTRO, MUSIC_MAIN, INTRO, CHESS
.byte 32,32,16,16 ; GORILLA,LEAVES,LENS,PLASMA
.byte 16,16,16,96 ; CUBE,DOTS,SPHERES,OCEAN
.byte 16 ; POLAR
.byte 16,16 ; POLAR,FAKE_BIOS
.include "wait.s"

View File

@ -25,8 +25,21 @@ restart:
lda #0
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
;==================================

View File

@ -226,6 +226,14 @@ REF2L = $F7
REF2H = $F8
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
;==============================================