dos33fsprogs/demos/second/start2.s
2023-11-13 00:35:32 -05:00

200 lines
2.9 KiB
ArmAsm

; startup for disk2
;
; by deater (Vince Weaver) <vince@deater.net>
;.include "zp.inc"
;.include "hardware.inc"
;.include "qload2.inc"
;.include "music.inc"
second_start:
;=====================
; initializations
;=====================
jsr hardware_detect
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 ; load music
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:
bit SET_GR
bit FULLGR
bit PAGE1
lda #0
sta clear_all_color+1
sta DRAW_PAGE
jsr clear_all
lda #4
sta DRAW_PAGE
jsr clear_all
lda #0
sta DRAW_PAGE
;=======================
; load, copy to AUXMEM
;=======================
sta $C008 ; use MAIN zero-page/stack/language card
;====================
; load nuts to $6000
lda #3 ; NUTS
sta WHICH_LOAD
jsr load_file
;======================
; copy NUTS to AUX $2000
lda #$20 ; AUX dest $4000
ldy #$60 ; MAIN src $6000
ldx #32 ; 64 pages
jsr copy_main_aux
;=====================
; load CREDITS to $6000
lda #2 ; CREDITS
sta WHICH_LOAD
jsr load_file
;===========================
; copy CREDITS to AUX $6000
lda #$60 ; AUX dest $60
ldy #$60 ; MAIN src
ldx #64 ; 64 pages
jsr copy_main_aux
;=====================
; clear both pages
; lda #0
; jsr hgr_page1_clearscreen
;=====================
; load THREED to $2000
lda #1 ; THREED
sta WHICH_LOAD
jsr load_file
;=======================
; run THREED
;=======================
cli ; start music
jsr $2000
;=======================
; run NUTS
;============================================
; copy NUTS from AUX $2000 to MAIN $8000
lda #$20 ; AUX src $2000
ldy #$80 ; MAIN dest $8000
ldx #32 ; 32 pages
jsr copy_aux_main
; run nuts
jsr $8000
;=======================
; run CREDITS
;============================================
; copy CREDITS from AUX $6000 to MAIN $8000
lda #$60 ; AUX src $6000
ldy #$80 ; MAIN dest $8000
ldx #64 ; 64 pages
jsr copy_aux_main
; run credits
jsr $8000
; TODO: RR?
forever:
jmp forever
.include "pt3_lib_mockingboard_patch.s"
.include "hardware_detect.s"
.include "hgr_clear_screen.s"