;license:MIT ;(c) 2018 by 4am ; !cpu 6502 !to "build/LAUNCHER.SYSTEM",plain *=$2000 !source "src/constants.a" !source "src/macros.a" ; first-run initialization, relocates code to language card and continues from Main !source "src/4cade.init.a" FirstMover !pseudopc $D000 { Reenter ; self-running demos should call this to exit back to 4cade cld cli +READ_RAM1_WRITE_RAM1 jsr CloseHandles ; close any open handles to restore ProRWTS state to original jsr SaveScreenHoles ; restore screen hole contents from saved copy Main ldx #$FF txs ldx #5 - lda Prelaunch,x ; copy reset vector code (switches to LC RAM and jumps to |Reenter|) sta $100,x dex bpl - inx stx $3F2 ; set up reset vectors stx $FFFC inx stx $3F3 stx $FFFD txa eor #$A5 sta $3F4 jsr BlankHGR @loop lda $C000 cmp #$8D bne + jsr Play + bit $C010 ; jsr AttractMode jsr SearchMode jmp @loop ; these routines will only be called after relocating to language card !source "src/ui.search.mode.a" !source "src/ui.attract.mode.a" !source "src/ui.attract.hgr.a" !source "src/ui.attract.dhgr.a" !source "src/ui.attract.shr.a" !source "src/prodos.path.a" !source "src/glue.launch.a" !source "src/glue.prorwts2.a" !source "src/okvs.a" !source "src/wait.a" !source "src/textrank.a" !source "src/parse.common.a" !source "src/parse.prefs.a" !source "src/parse.games.a" !source "src/ui.font.a" !source "src/ui.font.data.a" gGlobalPrefsStore !word *+2 ; address of first okvs store } LastMover