From 8aa8586b03568d3a3d6eba39269a1b79510bc835 Mon Sep 17 00:00:00 2001 From: mrb0nk500 Date: Tue, 6 Oct 2020 08:02:23 -0400 Subject: - Made the stack pointer 64 bit, rather than 16 bit. This is to allow for making the stack bigger for anything that needs to change the size of it. - Made the SuB Suite set the stack pointer to the end of the usable RAM, and allow for changing the stack size. In this case, the size of the stack is currently set to 192K, with the end of the heap being just below the stack. --- programs/sub-suite/declare.s | 3 +++ programs/sub-suite/subeditor.s | 12 +++++++++--- 2 files changed, 12 insertions(+), 3 deletions(-) (limited to 'programs') diff --git a/programs/sub-suite/declare.s b/programs/sub-suite/declare.s index 6a8c90f..7b419e2 100644 --- a/programs/sub-suite/declare.s +++ b/programs/sub-suite/declare.s @@ -102,6 +102,9 @@ LWSIZE = $1000 ; Linewrap table size, in bytes. ; Magic number used by findramend. MAGIC = $AA +; Size of the Stack. +STKSIZE = $30000 + ; Heap related values. HEAPORG = $30000 ; Starting point of the heap. diff --git a/programs/sub-suite/subeditor.s b/programs/sub-suite/subeditor.s index d98d068..addd64a 100644 --- a/programs/sub-suite/subeditor.s +++ b/programs/sub-suite/subeditor.s @@ -6,11 +6,19 @@ .org $8000 reset: cps ; Reset the processor status register. - ldx.w #$FFFF ; Reset the stack pointer. + ldx.d #$2FFFF ; Reset the stack pointer. txs ; ldy #0 ; Reset Y. tyx ; Reset X. jsr init_heap ; Initialize the heap. + inc step ; + tax ; Set the stack pointer to the end of RAM. + txs ; + sec ; Prepare for a non borrowing subtract. + sbc.d #STKSIZE ; Subtract the stack size, from the end of RAM. + sta.q heapend ; Save the end of the heap. + and #0 ; Reset A. + tax ; Reset X. jsr init_tables ; Initialize the main tables. ; jsr test_free ; jsr clr_scr ; Clear the screen. @@ -27,8 +35,6 @@ init_heap: jsr findramend ; Find the end of the heap. plb.q ; Restore the value in B. plx.q ; Restore the value in X. - sta.q heapend ; Save the end of the heap. - and #0 ; Reset A. rts ; End of init_heap. -- cgit v1.2.3-13-gbd6f