From 003b6ad6f025544656ec5fc5ba32a8337bcd2af8 Mon Sep 17 00:00:00 2001 From: 4am Date: Tue, 10 Sep 2019 09:20:32 -0400 Subject: [PATCH] refactor incptr --- src/constants.a | 2 +- src/okvs.a | 24 ++++++++---------------- 2 files changed, 9 insertions(+), 17 deletions(-) diff --git a/src/constants.a b/src/constants.a index 7423e10e3..38cd084e2 100644 --- a/src/constants.a +++ b/src/constants.a @@ -9,7 +9,7 @@ ; D000..E4E9 - persistent data structures (gGlobalPrefsStore, gGamesListStore) ; ...end of data and start of code are approximate, in between is unused... ; ...if they ever overlap, things will go boom... -; E9F0..FFF9 - main program code +; E9FF..FFF9 - main program code ; FFFA..FFFF - NMI, reset, IRQ vectors ; ; LC RAM BANK 2 diff --git a/src/okvs.a b/src/okvs.a index 2154d9696..6a6cdf7df 100644 --- a/src/okvs.a +++ b/src/okvs.a @@ -142,8 +142,8 @@ okvs_append sta SAVE ; PTR -> new record ; SAVE -> new record - jsr incptr - jsr incptr ; PTR -> space for new key + jsr incptr2 + ; PTR -> space for new key +LDPARAM 3 +STAY SRC ; SRC -> new key to copy ldy #0 @@ -231,10 +231,7 @@ okvs_get lda (PTR),y beq @fail ; no keys, fail immediately sta @maxkeys ; A = number of keys - ldx #3 -- jsr incptr - dex - bne - + jsr incptr3 ; PTR -> first record ldx #0 +LDPARAM 3 @@ -297,10 +294,7 @@ okvs_get okvs_nth +PARAMS_ON_STACK 3 jsr SetPTRFromStackParams - ldx #3 -- jsr incptr - dex - bne - + jsr incptr3 ; PTR -> first record ldy #3 lda (PARAM),y @@ -309,8 +303,7 @@ okvs_nth - jsr derefptr dex bne - -@found jsr incptr - jsr incptr +@found jsr incptr2 +LDAY PTR rts @@ -386,10 +379,7 @@ okvs_iter_values sta @max +LDPARAM 3 +STAY @callback - ldx #3 -- jsr incptr - dex - bne - + jsr incptr3 ; PTR -> first record ldx #0 @loop @@ -431,6 +421,8 @@ okvs_iter_values ;------------------------------------------------------------------------------ ; internal functions +incptr3 jsr incptr +incptr2 jsr incptr incptr ; preserves A and X ldy PTR