diff --git a/src/constants.a b/src/constants.a index a26622eee..a94c26e41 100644 --- a/src/constants.a +++ b/src/constants.a @@ -7,7 +7,7 @@ ; ; LC RAM BANK 1 ; D000..E908 - persistent data structures (gGlobalPrefsStore, gGamesListStore) -; E912..FFF1 - main program code +; E92D..FFF1 - main program code ; FFF2..FFF9 - API functions and global constants available for main program ; code, prelaunchers, transition effects, &c. ; (Wait/UnwaitForVBL, MockingboardStuff, MachineStatus) diff --git a/src/macros.a b/src/macros.a index 92c649b06..f59f3bc17 100755 --- a/src/macros.a +++ b/src/macros.a @@ -114,8 +114,9 @@ } ; compare a 16-bit value in A (low) and Y (high) to an absolute address +; zeroes A! !macro CMP16ADDR .addr { - cmp .addr + eor .addr bne + cpy .addr+1 + @@ -221,15 +222,6 @@ bit $C082 } -!macro LOW_ASCII_TO_LOWER { - cmp #$41 - bcc + - cmp #$5B - bcs + - ora #$20 -+ -} - ; requires setting zpCharMask in zero page to #$FF or #$DF before use !macro FORCE_UPPERCASE_IF_REQUIRED { cmp #$E1 diff --git a/src/okvs.a b/src/okvs.a index 923b2aba1..f9ef0dc95 100644 --- a/src/okvs.a +++ b/src/okvs.a @@ -231,7 +231,7 @@ okvs_append ; out: if C clear, record was found ; A/Y = lo/hi address of key (okvs_find) or value (okvs_get) ; $WINDEX = index of found record (word) -; if C set, keyrecord was not found and all registers are clobbered +; if C set, keyrecord was not found and X/Y are clobbered, A=0 ; all other flags clobbered ; $00/$01 clobbered ; $02/$03 clobbered @@ -268,15 +268,13 @@ okvs_get iny sty KEYLEN @matchRecordLoop - lda PTR+1 - sta DEST+1 - lda PTR + +LD16 PTR clc adc #2 - sta DEST bcc + - inc DEST+1 ; DEST -> key of this record -+ ldy #0 + iny ; DEST -> key of this record ++ +ST16 DEST + ldy #0 @matchKeyLoop lda (SRC),y cmp (DEST),y @@ -302,7 +300,7 @@ KEYLEN = *+1 cmp WCOUNT bne @matchRecordLoop lda WINDEX+1 - cmp WCOUNT+1 + eor WCOUNT+1 bne @matchRecordLoop @fail sec rts @@ -338,7 +336,6 @@ okvs_next +LD16 WINDEX +CMP16ADDR WCOUNT bne + - lda #0 sta WINDEX sta WINDEX+1 + @@ -367,13 +364,13 @@ okvs_nth jmp @next - jsr derefptr @next - dec SAVE lda SAVE - cmp #$FF + dec SAVE + tay bne - - dec SAVE+1 lda SAVE+1 - cmp #$FF + dec SAVE+1 + tay bne - jsr incptr2 +LD16 PTR @@ -473,7 +470,7 @@ okvs_iter_values lda #2 ; for iter, skip length = 2 @branch bne + ; SMC (iter_values puts a BIT here, so no branch) ; for iter_values, skip length = length(key) + 2 + 1 - ldy #2 + tay ;;ldy #2 lda (PTR),y ; A = length of key clc adc #3 ; skip over pointer to next record (2 bytes) + key length (1 byte) diff --git a/src/parse.prefs.a b/src/parse.prefs.a index 5142e784f..569e8a722 100644 --- a/src/parse.prefs.a +++ b/src/parse.prefs.a @@ -132,7 +132,6 @@ pref_get + !word $FDFD ; SMC bcc + ; found key, continue .useDefaultValue ; did not find key, use first key in passed store as a default value - lda #0 sta WINDEX sta WINDEX+1 + diff --git a/src/textrank.a b/src/textrank.a index 8b6d1a871..61ebe76c6 100644 --- a/src/textrank.a +++ b/src/textrank.a @@ -99,9 +99,9 @@ TextRankCallback +ST16 zpword ldy #0 lda (zpstring),y - sec - sbc #1 - cmp InputLength + tax + dex + cpx InputLength bcc ++ sta gamelength sty runningscore @@ -110,11 +110,11 @@ TextRankCallback sty startat - sty i lda (zpword),y - +LOW_ASCII_TO_LOWER + jsr tolower sta tmp ldy startat -- lda (zpstring),y - +LOW_ASCII_TO_LOWER + jsr tolower cmp tmp beq + cpy gamelength @@ -165,7 +165,7 @@ TextRankCallback pha ldy #1 lda (zpstring),y - +LOW_ASCII_TO_LOWER + jsr tolower sta firstletter pla ldx InputBuffer @@ -208,3 +208,11 @@ TextRankCallback bne - lda num1 rts + +tolower + cmp #$41 + bcc + + cmp #$5B + bcs + + ora #$20 ++ rts diff --git a/src/ui.common.a b/src/ui.common.a index b2198197d..4b0a3e9d1 100755 --- a/src/ui.common.a +++ b/src/ui.common.a @@ -28,9 +28,9 @@ Home ; bits 1-4 reserved ; bit 0 = 1 -> disable bank latch sta NEWVIDEO - lda #$F0 - sta TBCOLOR ; white text on black background - lda #$00 + ldy #$F0 + sty TBCOLOR ; white text on black background + lsr sta CLOCKCTL ; black border sta CLOCKCTL ; set twice for VidHD @noSHR diff --git a/src/ui.credits.a b/src/ui.credits.a index f8d4c5898..5a40b56b3 100644 --- a/src/ui.credits.a +++ b/src/ui.credits.a @@ -23,11 +23,11 @@ Credits !word $8000 -- jsr ForceHGRMode jsr ClearOffscreen - lda OffscreenPage + ldx #0 +- lda OffscreenPage ror ; draw on offscreen page +LDADDR $8000 - tax -- jsr DrawPage ; draw credits + jsr DrawPage ; draw credits jsr ShowOtherPage ; show credits jsr WaitForKeyFor30Seconds; wait bit CLEARKBD ; don't care about key @@ -64,8 +64,5 @@ Help !word kHelpTextFile !word $8000 jsr LoadHelpOffscreen ; load fancy backdrop - lda OffscreenPage - ror ; draw on offscreen page - +LDADDR $8000 ldx #7 bne - ; always branches