; Apple ][ Second Reality, Startup for Disk1 ; ; by deater (Vince Weaver) ;.include "zp.inc" ;.include "hardware.inc" ;.include "qload.inc" ;.include "music.inc" second_start: ;===================== ; initializations ;===================== jsr hardware_detect ; FIXME: remove when hook up part00 jsr hgr_make_tables ;=================== ; restart? ;=================== restart: lda #0 sta DRAW_PAGE ;================================== ; load sound into the language card ; into $D000 set 1 ;================================== ; read/write RAM, use $d000 bank1 bit $C083 bit $C083 lda #0 sta WHICH_LOAD jsr load_file lda #0 sta DONE_PLAYING lda #1 sta LOOP ; patch mockingboard jsr mockingboard_patch ; patch to work in slots other than 4? ;======================= ; Set up 50Hz interrupt ;======================== jsr mockingboard_init jsr mockingboard_setup_interrupt ;============================ ; Init the Mockingboard ;============================ jsr reset_ay_both jsr clear_ay_both ;================== ; init song ;================== jsr pt3_init_song dont_enable_mc: skip_all_checks: ;=================== ; Load graphics ;=================== load_loop: ; jsr HGR ; bit SET_GR ; bit HIRES ; bit FULLGR bit PAGE1 ;======================= ; Load, copy to AUXMEM ;======================= sta $C008 ; use MAIN zero-page/stack/language card ;==================== ; load POLAR to $6000 lda #4 ; POLAR sta WHICH_LOAD jsr load_file ;====================== ; copy POLAR to AUX $1000 lda #$10 ; AUX dest $1000 ldy #$60 ; MAIN src $6000 ldx #16 ; 16 pages jsr copy_main_aux ;======================= ; run POLAR ;============================================ ; copy POLAR from AUX $1000 to MAIN $8000 lda #$10 ; AUX src $1000 ldy #$80 ; MAIN dest $8000 ldx #16 ; 16 pages jsr copy_aux_main ; setup music ; ocean=pattern24 (3:07) pattern#43 lda #43 sta current_pattern_smc+1 jsr pt3_set_pattern cli ; run polar jsr $8000 ;============================= ; ask for side2 ;============================= sei ; disable music bit PAGE1 bit TEXTGR bit KEYRESET ; clear keyboard ; clear text screen jsr clear_all ; print non-inverse jsr set_normal ; print messages lda #disk_change_string sta OUTH ; print the text jsr move_and_print jsr wait_until_keypress ;================== ; reboot ;================== ; swap back in ROM lda $C08A ; read rom, no write lda WHICH_SLOT lsr lsr lsr lsr ora #$C0 sta reboot_smc+2 reboot_smc: jmp $C600 forever: jmp forever .align $100 .include "wait_keypress.s" .include "zx02_optim.s" .include "title.s" disk_change_string: ; 0123456789012345678901234567890123456789 .byte 5,22,"INSERT DISK 2 AND PRESS ANY KEY",0 .include "pt3_lib_mockingboard_patch.s" .include "hardware_detect.s"