Make the most of "Learn TI-83 Plus Assembly in 28 Days"


Here is my guide to "Learn TI-83 Plus Assembly in 28 Days." Many people do not like the fast pace of this guide and therefore give up on assembly. I feel like this sudden shock turns off more people than it should because once you know assembly, it is actually really easy to do.

My guide will be split up as follows:

- The basics of 28 days

- bcalls of survival

- More advanced 28 days

The basics of 28 days


This section is all about getting through 28 days and learning the very minimum. I will try to eliminate every possible thing that is unrelated and only leave the most basic ideas. I have also included an example to go with each day so you can see what you should know on that day.

Day 1


Although day 1 has to be here, assembling could quite possibly turn off half the people who try to learn assembly. This is because in addition to learning assembly, you have to learn DOS!

To help you out, go to the assembly folder I have included and put all of your source files in the source folder. Then double click on the command prompt icon. After that, type "asm name" without the quotes, where name is the name of your program. For example, you have just made a file called game.z80. You would type:

asm game

* For this section: I wouldn't really worry about anything besides the fact that your source files have to have a .z80 extension.

Day 2


I wouldn't worry too much about this section either. The main thing you need to know is that you make comments in your code by using a semicolon at the start of the line. Comments are sections of code that are ignored.

To take all of the unrelated stuff out of making your first program. You should use the file template.z80 that I have included.

*For this section: Comments, Instructions, and ROM Calls are important.

Day 3


Here it is, this is the section that punches you in the face. This is quite possibly the hardest day of the whole program. You are going to have to learn binary and hexidecimal (yes they are necessary.) You also get to see the basic structure of how the z80 processor deals with variables.

To clarify the Labels section. When you set a label, that word gets the value of its location in memory assigned to it.

*For this section: Numbering Systems, Designating Base, Registers, Labels, Variables (stop before the second way), and Indirect Access.

Day 4


Ok, this section is another overkill. I do not feel like it needs to come this early in the lessons. Basically, I wouldn't really worry about flags other than the fact that they exist.

*For this section: Zero and Carry.

Day 5


This section will allow you to perform some basic math. But DO NOT read the end of this section! It left me confused until an entire year after I learned assembly. (I'm referring to structures.)

*For this section: Fun With Data (but skip multiplying and dividing), Overflow (stop before Registers and RAM).

Day 6


This is a nice section that describes stacks. But I doubt you will ever have to make your own stack as the z80 has a very nice one.

*For this section: What is a stack?, How a Stack Works, and The Z80's Stack.

Day 7


This whole section is pretty good. Just understand that sections written in semi-thick black text are C++ examples.

*For this section: it's all pretty good.

Day 8


Depending on your needs, this day is very useful. But for the very beginner, you don't need it. But it might be a good idea to take a look at the flags section (register IY).

*For this section: Single-Bit Instructions, Register IY.

Day 9


Again a useful section, but not really for you. I guess the only thing you need to know is that SLA multiplies by two and SRL divides by two.

*For this section: SLA, SRL.

Day 10


While this section is really cool, skip it. The only useful part is the register R, which is essentially a random number.

*For this section: Memory Refresh Register

Day 11


This is a good lesson because it lets you see that you are actually doing something. I'm only giving you the bare minimum, but it wouldn't hurt to understand the small character routines.

*For this section: Text Position, Large (6x8) Text, and Displaying Numbers.

Day 12


Here it is, this is the last step you need to make something useful. Personally I don't like the way that _GetKey works. So I would stick with _GetCSC. But you should read them both as there's nothing confusing.

*For this section: All.

Complete


Congratulations, if you are still reading this, you can program in Z80. For your first project, I would recommend a snake game. Be sure to check out my bcalls section as they will help you with the more difficult code.

bcalls to live by


This section is dedicated to showing you all of the cool bcalls that TI included with the operating system. These are all very useful and will save you many headaches because they do all of the hard work for you. Eventually, as you get better, you might want to recreate some of the simpler bcalls to speed up your program, but for now, don't worry about it.

For clarification, all of the links go to their pages on wikiti.brandonw.net or to the TI documentation if they aren't on wikiTi.

To call these just put them right in the center of this "bcall(_....)".

Display


GrBufClr - This clears the graph buffer (plotSScreen).

GrBufCpy - This copies the contents of the graph buffer (plotSScreen) to the screen.

ClrLCDFull - This clears the screen (but not the backup of the homescreen).

ClrTxtShd - This clears the backup of the homescreen.

PutC - This puts a single character on the screen.

PutMap - This puts a single character on the screen, but does not advance the pointer.

PutS - This puts a zero terminated string on the screen.

DispHL - This displays HL to the screen.

VPutMap - This puts a single character on the screen using the small font.

VPutS - This puts a zero terminated string on the screen using the small font.

DarkLine - This draws a line accross the screen.

NewLine - Goes to a new line on the homescreen.

RunIndicOff - Turns off that annoying run indicator.

HomeUp - Puts the cursor to the top left of the screen.

Keyboard


GetCSC - Checks to see what key is currently being pressed.

GetKey - Waits for a key to be pressed. I don't like this one.

GetKeyRetOff - Same as GetKey except 2nd+Off doesn't shut the calculator off. I still don't like it.

Math


MultAbyE

MultAbyDE

DivHLbyA

DivHLbyE

DivHLbyDE