I am writing a game in ASM on the ti-83+/ti-84+ and have reached the 8200 byte size limit. No problem, I broke the game into two separate programs, one being 7124 bytes and the other 1301 bytes and 15817 bytes free in ram. The second program will eventually be about 7000 bytes also. I am using b_call(4E7Ch) to execute the second program from within the first. It runs fine, both from the first program and as a stand alone program. When run as a stand alone it does nothing to my free ram.
When I execute any program using b_call(4E7Ch) from the first program my available free memory goes down by 7100+- bytes. I can archive the two programs and reset the calc to get the memory back, but I can not find the bug. Here is the code I am using. Does anyone see anything I am overlooking? Or is there another way to run a program from another program? Does a shell take care of the 8200 byte size restriction for programs? My game was the only thing in ram with 15000+ bytes free and said something to the effect of variable size limit exceeded.
Hunt:
Code:
When I execute any program using b_call(4E7Ch) from the first program my available free memory goes down by 7100+- bytes. I can archive the two programs and reset the calc to get the memory back, but I can not find the bug. Here is the code I am using. Does anyone see anything I am overlooking? Or is there another way to run a program from another program? Does a shell take care of the 8200 byte size restriction for programs? My game was the only thing in ram with 15000+ bytes free and said something to the effect of variable size limit exceeded.
Hunt:
Code:
b_call(_zeroop1)
ld hl, ofn
b_call(_mov9toop1)
;ld de, op1
;ld bc, 8
;ldir
b_call(_chkfindsym)
jp c, missingfile
ex de, hl
ld a, b
or a
jr z, filegood
b_call(50b9h) ;un-archive if archived
filegood:
b_call(4E7Ch) ;run program
jp dms