Z80 calculator unification (Include files and suchlike).
- benryves
- Maxcoderz Staff
- Posts: 3089
- Joined: Thu 16 Dec, 2004 10:06 pm
- Location: Croydon, England
- Contact:
Z80 calculator unification (Include files and suchlike).
Prompted by Timendus, this is something that needs to be addressed.
Bear in mind that I haven't done any TI development beyond the 83/83+ series.
For starters, I'd need to know which common TIOS include files people use. Even the official ti83asm.inc I have lacks common ROM call addresses - ideally, I'd like a complete set to work from.
On top of that, there would be definitions that map similar (but different) names that mean the same thing to eachother, as well as common alternatives (plotSScreen to gbuf).
...and then there's the shell issue. I'll need to know the common shells and which include files they use. My current template adds TI-83 Venus support, for example, but I'm not sure about the 82 shells.
With respect to running in PTI, I hope to streamline things in the future by having a set of ROMs/state files for each shell (all preinstalled and ready to go), which would greatly speed up running your program. However, this wouldn't help for the 85/86/73, so for the moment I'd like to concentrate on the 82.
So, can anyone help, with respect to full include files, or shell include files?
Bear in mind that I haven't done any TI development beyond the 83/83+ series.
For starters, I'd need to know which common TIOS include files people use. Even the official ti83asm.inc I have lacks common ROM call addresses - ideally, I'd like a complete set to work from.
On top of that, there would be definitions that map similar (but different) names that mean the same thing to eachother, as well as common alternatives (plotSScreen to gbuf).
...and then there's the shell issue. I'll need to know the common shells and which include files they use. My current template adds TI-83 Venus support, for example, but I'm not sure about the 82 shells.
With respect to running in PTI, I hope to streamline things in the future by having a set of ROMs/state files for each shell (all preinstalled and ready to go), which would greatly speed up running your program. However, this wouldn't help for the 85/86/73, so for the moment I'd like to concentrate on the 82.
So, can anyone help, with respect to full include files, or shell include files?
For Ti-83, I have compiled my programs for:
- Ashell
- Venus
- TI Explorer
- Ion
- Native ("Send(9")
- ZASMLOAD (Runs squished programs like Ti-83+ Asm() does)
All shells use the same includes, only different headers, which you can find in their zip folders.
- Ashell
- Venus
- TI Explorer
- Ion
- Native ("Send(9")
- ZASMLOAD (Runs squished programs like Ti-83+ Asm() does)
All shells use the same includes, only different headers, which you can find in their zip folders.
http://clap.timendus.com/ - The Calculator Link Alternative Protocol
http://api.timendus.com/ - Make your life easier, leave the coding to the API
http://vera.timendus.com/ - The calc lover's OS
http://api.timendus.com/ - Make your life easier, leave the coding to the API
http://vera.timendus.com/ - The calc lover's OS
To my knowledge:
- Ashell has no libs
- Venus, don't know, probably the same as Ion
- TI Explorer can run Ashell/Ion programs I think, but with the native headers you can link data files to readers or something like that, you probably don't want that
- Native and ZASMLOAD have no libs
You'll probably want to compile for Ion, Venus, native squished (ZASMLOAD) and unsquished, and Ashell. Oh, and I forgot SOS. Ti-82 has Ash and Crash as mainstream shells.
Okay, I'm doing a bit more research for you
ASHELL
http://www.ticalc.org/archives/files/fi ... 7/714.html
TI Explorer
http://www.ticalc.org/archives/files/fi ... /8811.html
Can run Ion, Ashell and SOS programs, so you don't need to take it into account.
SOS
http://www.ticalc.org/archives/files/fi ... /8781.html
Runs Ashell programs, uses program writeback, allows external modules and libraries. How this is to be done is not entirely clear to me, and no header is supplied in the readme.
Venus
http://www.ticalc.org/archives/files/fi ... 17170.html
vRandom and vFastCopy library routines, has good documentation on the header in devinfo.html in the zip file, but doesn't state anything on program writeback.
Ion
http://www.ticalc.org/archives/files/fi ... 26097.html
Guess you already know all about this one
Others
The others are mostly redos of Ashell or Ion, with more fancy GUIs and stuff that no-one needs. Like Anova, Doors CS, Ginius, Ice, Inidium, Zes, et cetera... I have tested them all, and apart from the mainstream shells (in order of appearance: Ashell, SOS and Ion), only TI Explorer and Venus really add something.
- Ashell has no libs
- Venus, don't know, probably the same as Ion
- TI Explorer can run Ashell/Ion programs I think, but with the native headers you can link data files to readers or something like that, you probably don't want that
- Native and ZASMLOAD have no libs
You'll probably want to compile for Ion, Venus, native squished (ZASMLOAD) and unsquished, and Ashell. Oh, and I forgot SOS. Ti-82 has Ash and Crash as mainstream shells.
Okay, I'm doing a bit more research for you
ASHELL
http://www.ticalc.org/archives/files/fi ... 7/714.html
Furthermore, Ashell uses program writeback, unlike native. No libraries.Ashell manual wrote: Since there is no way to tell the difference between a squished asm
program and basic program, a table is placed at the beginning of
AShell-compatable asm programs:
nop ;these 2 lines identify the program
jr prog_start ;as AShell-compatable
.dw $0000 ;Version of table
.dw Description ;Points to the program description
.dw Icon ;Points to an 8x8 icon
.dw $0000 ;For future use ( *Libraries*?
prog_start:
The following are placed anywhere in the program:
Description:
.db "Super Game 1.0 by Me",0
Icon:
.db %11111111 ;this example icon is a box
.db %10000001 ;icons are not displayed by AShell
.db %10000001 ;but the next version of Aurora will support
.db %10000001 ;this format for icons
.db %10000001
.db %10000001
.db %10000001
.db %11111111
ATTENTION PROGRAMMERS!
BE SURE NOT TO USE THIS AREA OF MEMORY IN YOUR ASM PROGRAMS:
CMDSHADOW EQU 9157h
IT COULD EASILY CAUSE THE CALCULATOR TO CRASH!
NOTE **ASHELL COMPATABLE PROGS MUST BE SQUISHED**
TI Explorer
http://www.ticalc.org/archives/files/fi ... /8811.html
Can run Ion, Ashell and SOS programs, so you don't need to take it into account.
SOS
http://www.ticalc.org/archives/files/fi ... /8781.html
Runs Ashell programs, uses program writeback, allows external modules and libraries. How this is to be done is not entirely clear to me, and no header is supplied in the readme.
Venus
http://www.ticalc.org/archives/files/fi ... 17170.html
vRandom and vFastCopy library routines, has good documentation on the header in devinfo.html in the zip file, but doesn't state anything on program writeback.
Ion
http://www.ticalc.org/archives/files/fi ... 26097.html
Guess you already know all about this one
Others
The others are mostly redos of Ashell or Ion, with more fancy GUIs and stuff that no-one needs. Like Anova, Doors CS, Ginius, Ice, Inidium, Zes, et cetera... I have tested them all, and apart from the mainstream shells (in order of appearance: Ashell, SOS and Ion), only TI Explorer and Venus really add something.
http://clap.timendus.com/ - The Calculator Link Alternative Protocol
http://api.timendus.com/ - Make your life easier, leave the coding to the API
http://vera.timendus.com/ - The calc lover's OS
http://api.timendus.com/ - Make your life easier, leave the coding to the API
http://vera.timendus.com/ - The calc lover's OS
For the TI-82, the major shells are -imo- ACE, SNG and CrASH.
Actually SNG can replace them all since it has emulators for ACE and CrASH, but it's not widely spread. Moreover, CrASH does not run on 19.006 ROMs, CrASH19006 does, but is binary incompatible, it means 2 binaries must be generated (some rom call's addresses have changed, and are not handeld by CrASH's ROM_CALL routine).
In the 82 asm 'tradition' (coming from the 85 iirc), the rom calls name differ much from the 83/+ ones, and ressemble things like D_ZM_STR, HL_DECI, etc. This is only an equates-related issue though, but those names *should* be included for compatibility.
Actually SNG can replace them all since it has emulators for ACE and CrASH, but it's not widely spread. Moreover, CrASH does not run on 19.006 ROMs, CrASH19006 does, but is binary incompatible, it means 2 binaries must be generated (some rom call's addresses have changed, and are not handeld by CrASH's ROM_CALL routine).
In the 82 asm 'tradition' (coming from the 85 iirc), the rom calls name differ much from the 83/+ ones, and ressemble things like D_ZM_STR, HL_DECI, etc. This is only an equates-related issue though, but those names *should* be included for compatibility.
- benryves
- Maxcoderz Staff
- Posts: 3089
- Joined: Thu 16 Dec, 2004 10:06 pm
- Location: Croydon, England
- Contact:
Thanks a lot Timendus!
Indeed, ideally I'd like to have every equate defined (so an 82 programmer could use their equate names and happily assemble to 83 without issue (aliases)).
Shells are less of an issue, though what would be nice would be to create implementations of common shell functions that could be added if needed. Same goes for ROM calls, if it comes to it. (The functionality would need to be added to Brass).
Indeed, ideally I'd like to have every equate defined (so an 82 programmer could use their equate names and happily assemble to 83 without issue (aliases)).
Shells are less of an issue, though what would be nice would be to create implementations of common shell functions that could be added if needed. Same goes for ROM calls, if it comes to it. (The functionality would need to be added to Brass).
-
- MCF Legend
- Posts: 1601
- Joined: Mon 20 Dec, 2004 8:45 am
- Location: Budapest, Absurdistan
- Contact:
Venus does writeback, as it moves around the program instead of copying. Actually, it defers the writeback to TIOS itself with a neat trick.Timendus wrote:Venus
http://www.ticalc.org/archives/files/fi ... 17170.html
vRandom and vFastCopy library routines, has good documentation on the header in devinfo.html in the zip file, but doesn't state anything on program writeback.
Yes, I expected that much.
Ben, you can just use the ion routines, instead of making your own implementation. The full source of the shell is supplied with it. A really interesting read that was three years ago
Ben, you can just use the ion routines, instead of making your own implementation. The full source of the shell is supplied with it. A really interesting read that was three years ago
http://clap.timendus.com/ - The Calculator Link Alternative Protocol
http://api.timendus.com/ - Make your life easier, leave the coding to the API
http://vera.timendus.com/ - The calc lover's OS
http://api.timendus.com/ - Make your life easier, leave the coding to the API
http://vera.timendus.com/ - The calc lover's OS