From d8847d6eb13162ac2bae191e176bff18a8161245 Mon Sep 17 00:00:00 2001 From: Miquel Sabaté Solà Date: Mon, 10 Mar 2025 22:07:56 +0100 Subject: Allow base pointers to be configurable MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The `ptr` and the `last` pointers can then be configured when including them by simply setting an alternative definition. Signed-off-by: Miquel Sabaté Solà --- list.s | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) (limited to 'list.s') diff --git a/list.s b/list.s index 6fa17b8..96c34f7 100644 --- a/list.s +++ b/list.s @@ -58,13 +58,21 @@ ;; For more information on the usage and the API check the documentation ;; (README.md file on the https://github.com/mssola/list.nes repository). .scope List - ;; NOTE (important): this library needs 4 bytes ($60-$63) to store - ;; information of this list. These are two 16-bit pointers which are used - ;; for the subroutines being defined here. If you have a clash with these - ;; memory addresses, do feel free to change them, but remember that the code - ;; assumes that both pointers are 16-bit (they don't need to be contiguous). - ptr = $60 - last = $62 + ;; NOTE (important): this library needs 4 bytes to store information of this + ;; list. These are two 16-bit pointers which are used for the subroutines + ;; being defined here. The exact location of these pointers are set to + ;; $60-$63 by default, but they can be changed by providing definitions for + ;; `LIST_PTR_ADDRESS` and `LIST_LAST_ADDRESS`. + .ifdef LIST_PTR_ADDRESS + ptr = LIST_PTR_ADDRESS + .else + ptr = $60 + .endif + .ifdef LIST_LAST_ADDRESS + last = LIST_LAST_ADDRESS + .else + last = $62 + .endif ;; Set the value of `a` into the list and advance one position without ;; growing the list. -- cgit v1.2.3