diff --git a/test-programs/move-pixel-with-keypad.asm b/test-programs/move-pixel-with-keypad.asm index d6fa898..c68f66f 100644 --- a/test-programs/move-pixel-with-keypad.asm +++ b/test-programs/move-pixel-with-keypad.asm @@ -1,18 +1,13 @@ ; Draw a pixel, and move it when a key is pressed ; 2023-08-26 -;; WIP - up and right should be working, -;; but currently they're being tested with a -;; faked keyboard input at the end of @xy2id -;; (and down and left are still TODO) - #flagZ 1 #flagN 2 #keypad $1B ; contains latest key pressed ; Starting (x, y) coordinates -#input_x 1 -#input_y 2 +#input_x 0 +#input_y 0 ; Some handy shortcuts #x $FA @@ -59,6 +54,13 @@ fhp #flagZ jmp @up + ; test left + lda (#keypad) + sub #left + ftg #flagZ + fhp #flagZ + jmp @left + ; test right lda (#keypad) sub #right @@ -66,8 +68,16 @@ fhp #flagZ jmp @right - ; TODO: down, left - end + ; test down + lda (#keypad) + sub #down + ftg #flagZ + fhp #flagZ + jmp @down + + ;; no key pressed... + jmp @stay_put + @up lda (#y) @@ -76,9 +86,15 @@ fhp #flagN jmp @stay_put sto #y - ; redundant - it's already in there: - lda @update - sto #return_addr_ptr + jmp @xy2id + + @left + lda (#x) + sub 1 + ftg #flagN + fhp #flagN + jmp @stay_put + sto #x jmp @xy2id @right @@ -90,9 +106,17 @@ lda (#x) add 1 sto #x - ; redundant - it's already in there: - lda @update - sto #return_addr_ptr + jmp @xy2id + + @down + lda (#y) + sub 4 + ftg #flagZ + fhp #flagZ + jmp @stay_put + lda (#y) + add 1 + sto #y jmp @xy2id @stay_put @@ -100,7 +124,7 @@ LDA $FF STO (#px_addr) ; TODO - END + ; END ;; Convert a pair of (x, y) coords @@ -138,7 +162,4 @@ STO #xy2id_y FHP #flagZ JMP @xy2id_loop - ;; JUST TO TEST: LOAD #up INTO KEYPAD MEM: - lda #right - sto #keypad JMP (#return_addr_ptr) \ No newline at end of file