Hmm interesting, it would be nice if you made it easy to run or create such programs. How would it work, by the way? Also would it work with Axe too?
I think you are misunderstanding how the so-called "8KB limit" works :/
To my knowledge, it is _not_ PC being >=$C000 that causes this problem, it's that you're running code on a so-called "protected page".
On the plain 83+, for example, the page typically in the $C000-$FFFF range is RAM Page 0 ($40). If you go and, say, output $40 to port $06 and then try to run code at $4000<=PC<$8000, the calculator will reset.
Admittedly, this idea could work, but never on the plain 83+. The 16KiB of executable RAM it has is simply too little. (Not to mention the OS needs it)
Sorry to be such a downer :(
I hope you make it anyway for the SE. It sucks that it won't be BE compatible if you use the extra RAM page, but some people might be making CPU-intensive games like a 8 level grayscale 3D polygon engine or a full port of Crysis II that just won't be enjoyable on a 6 MHz calculator and that might be useful for them.
Well it won't happen for BE, but I will continue this for Ti-83+ Silver edition and Ti-84+. Many games these games can't use BE, but it still upsets me that I can't do it for BE :(
Well it won't happen for BE, but I will continue this for Ti-83+ Silver edition and Ti-84+. Many games these games can't use BE, but it still upsets me that I can't do it for BE :(
* sigh
Glad this is still going forward though, since it is a great project. 8811 bytes is much too little on a calculator that has hundreds of kilobytes.
So does this auto archive stuff in ram for you when you begin a program. That would be very useful for those large programs and stuff and also pretty cool that the code restriction can be worked around.
Whoa, fast O.O And * Deep Thought can use it! :D
Success!!! Crabcake works on ALL Ti-83+ and Ti-84+ calculators.Wonderful! Do you mind explaining how you achieved 83+ compatibility? 'Tis interesting. :)
I now need to write the manual/special thanks and clean up the include files.
Success!!! Crabcake works on ALL Ti-83+ and Ti-84+ calculators.Wonderful! Do you mind explaining how you achieved 83+ compatibility? 'Tis interesting. :)
I now need to write the manual/special thanks and clean up the include files.
This is great ;D
So, will this be made compatible with Axe in an axiom or something?
Success!!! Crabcake works on ALL Ti-83+ and Ti-84+ calculators.
I now need to write the manual/special thanks and clean up the include files.
By popular request, I am now writing Axe Axioms for Crabcake. Just remember that your Axe game will need to be shell-compatible. Also, the Axioms will use polar variables for execution. For example:Sounds cool, but would that conflict with using r1-r6 as variables, or can the parser handle that? Because r1-r6 are used to feed subroutines arguments when they are called, which makes them very commonly used variables.
;To start Crabcake
r1
r2
r1r
;Axe game
By popular request, I am now writing Axe Axioms for Crabcake. Just remember that your Axe game will need to be shell-compatible. Also, the Axioms will use polar variables for execution. For example:Sounds cool, but would that conflict with using r1-r6 as variables, or can the parser handle that? Because r1-r6 are used to feed subroutines arguments when they are called, which makes them very commonly used variables.
;To start Crabcake
r1
r2
r1r
;Axe game
Hold on, crabcake is for Axe?
This is awesome Hot Dog! I think you need to upload this on ticalc.org asap. The 8KB limit is something that hindered ASM coders for a decade. I'M glad you got it to work on the 83+. Hopefully it can be used in Axe too.
Cool. Do you think it will come out before May 15th? It would make the contest even more interesting ;D (since any Axiom released before May 15th 1 AM GMT-5 can be used in it)
Axiom would be cool, but Axe adds a ret at the end of a prog... Idk how that should be fixed.I'm not too sure if Axe lets you modify programs, something like Zeros(10) appends such to the program.
I found a somewhat bug with this. If certain hooks run while crabcakes is doing its thing, the calculator will crash. Hooks are never going to expect that the extra ram page is in (05) and has meaningful data on it. Of course this is an easy fix if the hook developer knows about the problem, but some of the developers aren't going to hear about the problem, or are are long gone.
So what I would think you should do is backup the hook flags on startup, clear the flags for running the program, and restore them when you are done. There are only 4 bytes worth of flags, so that's not really a huge memory issue.
Although at first glance it looks like only 3 bytes $8A24-$8A26 are used for hooks, $8A2A is used for the USB hook. And while it's rare that this hook is active, it's the most likely to cause problems, so be sure to include it.
Crabcake just made it onto the ticalc news, so I'd better get on that hook bug. Penguin77, if you have a small segment of example code that crashes the calculator, I would be most greatful.
Crabcake just made it onto the ticalc news, so I'd better get on that hook bug. Penguin77, if you have a small segment of example code that crashes the calculator, I would be most greatful.Good job!
call crabCakeInstall
ld a, 'A'
bcall(_putC)
Will crash the calculator.
crabCakeInstall:
ld hl, (flags + $34) ;iy + 34h
ld (nameBuff), hl
ld a, (flags + $36) ;iy + 36h
ld (nameBuff+2), a
ld a, (flags + $3A) ;iy + 3Ah
ld (nameBuff+3), a
xor a
ld (iy + $34), a
ld (iy + $35), a
ld (iy + $36), a
ld (iy + $3A), a
crabCakeUninstall:
ld hl, (nameBuff)
ld (flags + $34), hl
ld a, (nameBuff+2)
ld (flags + $36), a
ld a, (namebuff+3)
ld (flags + $3A), a
Sorry, hot_dog, missed your request.
If you have specific font hooks installed, (most notably zStart with version less than ~6)Code: [Select]call crabCakeInstall
Will crash the calculator.
ld a, 'A'
bcall(_putC)
If you want to fix the problem, here is what I recommend.Code: [Select]
crabCakeInstall:
ld hl, (flags + $34) ;iy + 34h
ld (nameBuff), hl
ld a, (flags + $36) ;iy + 36h
ld (nameBuff+2), a
ld a, (flags + $3A) ;iy + 3Ah
ld (nameBuff+3), a
xor a
ld (iy + $34), a
ld (iy + $35), a
ld (iy + $36), a
ld (iy + $3A), a
crabCakeUninstall:
ld hl, (nameBuff)
ld (flags + $34), hl
ld a, (nameBuff+2)
ld (flags + $36), a
ld a, (namebuff+3)
ld (flags + $3A), a
NameBuff is the area used when you type in the name of something, for instance, making a new basic program or RCLing something. Since I doubt any Axe programmer would ever use this area, or even know about it. The flags should be save there.
I think it's more of hooks that are associated with running programs rather than the token hooks that Axe uses.Oh ok thanks for the info.
Hot Dog, I've been getting some odd errors with crabcake with the new Axe, so if you have time could you look into it for me?
The program compiles and runs fine, but crashes on exit.
Sometimes Axe throws a "Token" error, but error goes away eventually.
Thanks in advance ^^
bump - have you found any problems? (Not rushing you or anything :P)