From 4d3508a65ff91498fdb54987709786fd6cbf3245 Mon Sep 17 00:00:00 2001 From: 4am Date: Mon, 26 Mar 2018 20:05:34 -0400 Subject: [PATCH] . --- src/action.a | 59 +---------------------- src/launch.a | 121 +++++++++++++++++++++++++++++++++++++++++++++++ src/mainscreen.a | 1 - src/pitchdark.a | 1 + 4 files changed, 123 insertions(+), 59 deletions(-) create mode 100644 src/launch.a diff --git a/src/action.a b/src/action.a index c0380a8..6e12aeb 100644 --- a/src/action.a +++ b/src/action.a @@ -277,62 +277,5 @@ callback_clues jmp SoftBell } -!zone { callback_play -LaunchInterpreter - jsr SaveGlobalPreferences - jsr LoadInterpreter - bcs .playError -; change prefix to folder of file we want the interpreter to open - jsr ResetPath - lda #kGameRootDirectory - jsr AddToPath - - jsr okvs_get - !word gPrefsStore - !word kLastPlayed - jsr AddToPath - - jsr SetPrefix - !word gPathname - bcs .playError - -; put just the filename at $2006 - ldy #0 - lda addrVersions - sta $00 - lda addrVersions+1 - sta $01 -- lda ($00),y - cmp #$BD ; '=' - beq .doneBuildingFilename - iny - and #$7F - sta $2006,y - bra - -.doneBuildingFilename - sty $2006 - -; shut down WeeGUI and transfer control to interpreter - jsr ExitWeeGUI - jmp kSystemAddress -.playError - jmp SoftBell - -LoadInterpreter - jsr ResetPath - lda #<.interpreterFilename - ldy #>.interpreterFilename - jsr AddToPath - - jsr LoadFile - !word gPathname - !word kSystemAddress - !word $2000 - !word kProDOSFileBuffer - rts -.interpreterFilename - !byte 15 - !raw "ONBEYOND.SYSTEM" -} + jmp LaunchInterpreter diff --git a/src/launch.a b/src/launch.a new file mode 100644 index 0000000..4db24fe --- /dev/null +++ b/src/launch.a @@ -0,0 +1,121 @@ +;license:MIT +;(c) 2018 by 4am +; +; load and launch the On Beyond Z-Machine! interpreter +; +; Public functions +; - LaunchInterpreter +; +.playError + jmp SoftBell +LaunchInterpreter + jsr SaveGlobalPreferences + jsr LoadInterpreter + bcs .playError + +; change prefix to folder of file we want the interpreter to open + jsr ResetPath + lda #kGameRootDirectory + jsr AddToPath + + jsr okvs_get + !word gPrefsStore + !word kLastPlayed + jsr AddToPath + + jsr SetPrefix + !word gPathname + bcs .playError + +; put just the filename at $2006 + ldy #0 + lda addrVersions + sta $00 + lda addrVersions+1 + sta $01 +- lda ($00),y + cmp #$BD ; '=' + beq .doneBuildingFilename + iny + and #$7F + sta $2006,y + bra - +.doneBuildingFilename + sty $2006 + +; set options struct at $0300 + jsr okvs_get + !word gPrefsStore + !word kForce40 + jsr okvs_as_boolean + beq + + lda #$D9 + !byte $2C ++ lda #$CE + sta $0300 ; 40/80 columns + + jsr okvs_get + !word gPrefsStore + !word kForceUpper + jsr okvs_as_boolean + beq + + lda #1 + !byte $2C ++ lda #0 + sta $0301 ; case + + lda #$FF + sta $0302 ; auto-restore + + jsr okvs_get + !word gPrefsStore + !word kScriptToFile + jsr okvs_as_boolean + beq + + lda #0 + !byte $2C ++ lda #1 + sta $0303 ; script-to-file + + jsr okvs_get + !word gPrefsStore + !word kAutoScript + jsr okvs_as_boolean + beq + + lda #0 + !byte $2C ++ lda #1 + sta $0304 ; auto-script + + lda #1 + sta $0305 ; warn on missing .sav files + + lda #$A5 + eor $0300 + eor $0301 + eor $0302 + eor $0303 + eor $0304 + eor $0305 + sta $0306 + +; shut down WeeGUI and transfer control to interpreter + jsr ExitWeeGUI + jmp kSystemAddress + +LoadInterpreter + jsr ResetPath + lda #<.interpreterFilename + ldy #>.interpreterFilename + jsr AddToPath + + jsr LoadFile + !word gPathname + !word kSystemAddress + !word $2000 + !word kProDOSFileBuffer + rts +.interpreterFilename + !byte 15 + !raw "ONBEYOND.SYSTEM" diff --git a/src/mainscreen.a b/src/mainscreen.a index 89d934d..6434cc6 100644 --- a/src/mainscreen.a +++ b/src/mainscreen.a @@ -9,7 +9,6 @@ ; - RepaintSomeViews ; -; ROM routines MAGICRTS = $FF58 ; used to set overflow bit ; View IDs (application-specific, acceptable range 0..15, no duplicates) diff --git a/src/pitchdark.a b/src/pitchdark.a index 124a918..dbc1876 100644 --- a/src/pitchdark.a +++ b/src/pitchdark.a @@ -24,6 +24,7 @@ !source "src/mainscreen.a" !source "src/settingsdialog.a" !source "src/sound.a" + !source "src/launch.a" .weeguiFilename !byte 10