CalcAsm is an on-calc assembler
for the Ti-83. Made by Stijn Arnauts,
email me at: stijn.arnauts@pandora.be

This project is far from finished, but I won't
continue the program. If you want to continue it,
you can do so without giving me credit for it.
(as long as you mail me so I know who's working
on the project.) If you don't understand parts
of the code then just mail me. This assembler is not
good enough yet to make real programs, as the ld
and jp command is not included (call is however,
so you can do some small experiments. [for example,
pick a random number and make a call to it :-) ])

Assembly.83p sets the variables before assembling
and deletes the variables after assembling. If an error
happened during assembling you will have to start
assembly.83p manually. (to delete the variables)
X.83p holds user-variables. So this program should
be unlocked at all times in a final version.
Y.83p holds ti83asm.inc and tokens.inc equates.
This program should be locked in a final version.
Z.83p holds the main assembling code. This program
should certainly be locked !

You can look at test.83p to understand how to
use the assembler. The code always starts and ends
with a call to assembly.83p to set and delete vars.
The z80 code looks like this: (the [...] parts are optional)
["xxxx"->str8:]"command":prgmZ
When a command uses external variables or equates;
(for example: ld a,(Var1) or call ClearLCDFull)
(NOT: ld a,02 or call 8A4C or push bc or ret);
you have to specify the variable/equate in str8 and change
the variable/equate to XXXX (or XX for a token) in the code.
(for example: "ClearLCDFull"->str8:"call XXXX":prgmZ)
You can also change 2 bit data to XXXX and enter the
data to str8, because z80 code will want the 1st bit to
be the 2nd bit and the other way around. For example,
for 'ld hl,11AA', the z80 code is '21 AA11'. So if you
would just type "ld hl,11AA":prgmZ and then compile,
hl will contain AA11. So to have 11AA in hl you would
have to type "ld hl,AA11". When you change the 2bit data
to XXXX, and enter the data to str8, Z.83p will change
the bits for you. (mail me if you don't understand)
You can also change 1 or 2 bit data to XX or XXXX and leave
str8 empty, as you can then enter the data at that point.

Currently the program supports the add,call,cp,ccf,pop,push
and ret commands. There is no IX and IY support in these
commands. You could include all commands, all equations,
all tokens, decimal and binair support, IX/IY support and
label supports (if possible). I hope to hear from you soon !
mail me at: stijn.arnauts@pandora.be
	Stijn Arnauts