Hello I've just subscribed. I still have my Ti86 I used at the time of university and I always desired to program it in assembly but at the time there was not so much materials online and no book at all.
Now I've decided it's time.
I'm finding really hard to put together all the information required thou I collected a lot.

As compiler I use tasm 3.2
Dowloaded the four include files I found for Ti86 that map usable labels to ROM services
Found var8xw for producing .86p file from the .bin file
Intalled Ti connect

it all works at the end but I still have a lot of doubts and questions:

1. I read about the way Ti86 divides memory from 0 to 64k in four blocks.
I don't understand what's the maximum size a user assembly program is allowed:
the program in exectution must start from the address d748.
I read the stacks starts from the end of the allowed space and decrement with push.
I wrote a small test and got the SP value when still the stack is unused.
I found it's fbdc and
So it seems the max size in hex is 2494 that is 9364 bytes.
Is it correct or am I missing something?
So the swappable pages are not accessible or automatically used by the OS for loading larger programs?

2. the hardest difficoulty I'm finding is using the services or functions mapped by Ti86 include files: there is no explanation about what they do, how they work, in which registers or memory addresses put the operands, how many the operands are.
For instance even simple functions like _puts or _putc are ambigous: all the examples use _puts and they show the address of the string must be loaded in HL but it was very hard even finding the char to print with _putc must be put in A.
I search for some clearer explanations about Ti85 or Ti83 but I found none.
Where can I find them or how can I desume the way to use Ti86 mapped functions?

3. Is it possible to split the source in more than one file and link them together in one obj?
I read tlink should be used but I can't find it in a compatible version with windows 64 bit.

Thank you very much for any information you can provide me with.
For 3, try using spasm which is a better and less outdated assembler than tasm which is extremely old.
As ti_kid mentioned, I'd switch to spasm - it's still not as current as some other compilers, but much better than tasm, compatible with the TI-86, and you won't need a separate linker.

I haven't done anything on the 86 myself in about 14 years, but I took my last 86 release (Centipede), cloned the source and stripped down to create a test program that you can download here:

https://drive.google.com/file/d/1Dpl_QKGONVxK9T90VQ7NFF8q0Yi3r3Ai/view?usp=sharing

For full transparency, I haven't taken the liberty of digging out my actual TI-86 to load it on and test, but it compiled fine and I believe is bug free. It has the include files I always used for my 86 work (primarily from ACZ who were a great team of 86 devs back in the late 90's/early 2000's), which should give you the majority of the definitions you'll need.

In terms of documentation, you can try this site, which used to be hosted on ticalc.org as "The Guide", and has bucketloads of information on the TI-86 for assembly programming.

As for your questions, my memory is hazy, but I'll answer as best as possible:

1. I can remember exactly, but there was a limit of around 10KB on your program size. Anything outside of that you'll need to store as separate variables (the common practise was using string variables to keep the PRGM menu clean). Hopefully the link above has information on page swapping as I can't remember the specifics.

2. The Guide should include a lot of information on the ROM calls.

3. Yes absolutely, if you use the example I've provided, you can add separate .asm files and #include them from spasm86.asm in the same way as the .inc files.


Have fun! The 86 is a great device to code on 🙂
thank you both. I'll try spasm - already tested it on a single file.
I found maybe the most complete .inc file matching ROM functions for Ti86. It was made by Brandon Wilson. It's the ti86.inc file included in ti86.zip and I found it in ticalc.org. It contains some brief explanations in comments. I hope this might help someone
  
Register to Join the Conversation
Have your own thoughts to add to this or any other topic? Want to ask a question, offer a suggestion, share your own programs and projects, upload a file to the file archives, get help with calculator and computer programming, or simply chat with like-minded coders and tech and calculator enthusiasts via the site-wide AJAX SAX widget? Registration for a free Cemetech account only takes a minute.

» Go to Registration page
Page 1 of 1
» All times are UTC - 5 Hours
 
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum

 

Advertisement