dos33fsprogs/demos/second/start.s

201 lines
3.0 KiB
ArmAsm
Raw Normal View History

2023-10-28 16:12:24 +00:00
; Apple ][ Second Reality, Startup for Disk1
2023-10-03 20:27:24 +00:00
;
; by deater (Vince Weaver) <vince@deater.net>
2023-10-28 16:12:24 +00:00
;.include "zp.inc"
;.include "hardware.inc"
;.include "qload.inc"
;.include "music.inc"
2023-10-03 20:27:24 +00:00
second_start:
;=====================
; initializations
;=====================
2023-10-28 16:12:24 +00:00
jsr hardware_detect ; FIXME: remove when hook up part00
2023-10-03 20:27:24 +00:00
2023-10-28 16:12:24 +00:00
jsr hgr_make_tables
2023-10-03 20:27:24 +00:00
;===================
; 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
2023-10-28 16:12:24 +00:00
lda #0
2023-10-03 20:27:24 +00:00
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
2023-10-28 16:12:24 +00:00
; bit SET_GR
; bit HIRES
; bit FULLGR
2023-10-03 20:27:24 +00:00
bit PAGE1
2023-10-28 16:12:24 +00:00
2023-10-03 20:27:24 +00:00
;=======================
2023-10-28 16:12:24 +00:00
; Load, copy to AUXMEM
2023-10-03 20:27:24 +00:00
;=======================
2023-10-28 16:12:24 +00:00
sta $C008 ; use MAIN zero-page/stack/language card
2023-10-17 05:19:06 +00:00
2023-10-05 19:02:28 +00:00
2023-10-03 20:27:24 +00:00
2023-10-28 16:12:24 +00:00
;====================
; load POLAR to $6000
2023-10-03 20:27:24 +00:00
2023-10-28 16:12:24 +00:00
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
2023-10-03 20:27:24 +00:00
2023-10-18 05:10:30 +00:00
; setup music
; ocean=pattern24 (3:07) pattern#43
lda #43
2023-10-28 16:12:24 +00:00
sta current_pattern_smc+1
jsr pt3_set_pattern
2023-10-18 05:10:30 +00:00
2023-10-03 20:27:24 +00:00
cli
2023-10-28 16:12:24 +00:00
; run polar
jsr $8000
2023-10-28 19:52:18 +00:00
;=============================
; ask for side2
;=============================
2023-10-28 16:12:24 +00:00
2023-10-28 19:52:18 +00:00
sei ; disable music
2023-10-28 16:12:24 +00:00
2023-10-28 19:52:18 +00:00
bit PAGE1
bit TEXTGR
bit KEYRESET ; clear keyboard
2023-10-28 16:12:24 +00:00
2023-10-28 19:52:18 +00:00
; clear text screen
2023-10-28 16:12:24 +00:00
2023-10-28 19:52:18 +00:00
jsr clear_all
2023-10-28 16:12:24 +00:00
2023-10-28 19:52:18 +00:00
; print non-inverse
2023-10-28 16:12:24 +00:00
2023-10-28 19:52:18 +00:00
jsr set_normal
2023-10-28 16:12:24 +00:00
2023-10-28 19:52:18 +00:00
; print messages
lda #<disk_change_string
sta OUTL
lda #>disk_change_string
sta OUTH
2023-10-28 16:12:24 +00:00
2023-10-28 19:52:18 +00:00
; print the text
2023-10-28 16:12:24 +00:00
2023-10-28 19:52:18 +00:00
jsr move_and_print
jsr wait_until_keypress
;==================
; reboot
;==================
2023-10-28 16:12:24 +00:00
2023-10-28 19:52:18 +00:00
; swap back in ROM
2023-10-17 05:19:06 +00:00
2023-10-28 19:52:18 +00:00
lda $C08A ; read rom, no write
2023-10-28 16:12:24 +00:00
2023-10-28 19:52:18 +00:00
lda WHICH_SLOT
lsr
lsr
lsr
lsr
ora #$C0
sta reboot_smc+2
2023-10-28 16:12:24 +00:00
2023-10-28 19:52:18 +00:00
reboot_smc:
jmp $C600
2023-10-03 20:27:24 +00:00
forever:
jmp forever
.align $100
.include "wait_keypress.s"
.include "zx02_optim.s"
.include "title.s"
2023-10-28 19:52:18 +00:00
disk_change_string:
2023-10-03 20:27:24 +00:00
; 0123456789012345678901234567890123456789
2023-10-28 19:52:18 +00:00
.byte 5,22,"INSERT DISK 2 AND PRESS ANY KEY",0
2023-10-03 20:27:24 +00:00
.include "pt3_lib_mockingboard_patch.s"
2023-10-28 16:12:24 +00:00
.include "hardware_detect.s"