mirror of
https://github.com/deater/dos33fsprogs.git
synced 2024-11-16 23:20:43 +00:00
200 lines
2.9 KiB
ArmAsm
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"
|