This is an attempt to explain how built-in assembly support works on the TI-73. Assembly Data Format: --------------------- When a program contains a line that begins with prgm0000, the parser will then attempt to interpret what comes next in the following way (throwing ERR:SYNTAX if anything is amiss): The next number determines what type of data is to follow. It is '0' if it is unsquished, hand-typed code, and anything else (such as '1') if it is a squished program. The next 3 bytes determine the size of the data to follow. A hard newline character (3Fh) follows, and then the data, all on one line. Here's another way of saying this: :prgm0000xyyy :[data] x represents the type (0 for unsquished, anything else for squished) and yyy represents the size IN DECIMAL, NOT HEX. So for an example, here is a small program that does nothing: :prgm00000001 :C9 How Execution Begins: --------------------- When prgm0000 is encountered by the BASIC parser, it fetches the type of program and the size, then squishes the data to 8001h in RAM. It will then call this address and CONTINUE execution of the BASIC program at the line after the data. This means that this sequence can be embedded in a program ALONG WITH other BASIC code and repeated as many times as you want. This is a very flexible solution. When writing code in TASM, make sure that you have ".org 8001h" or similar at the beginning of the program. Restrictions: ------------- The biggest problem with this scheme is that there is very little RAM located at 8001h to use. Other entry points will use ramCode and potentially appData, which will overwrite you if you try to use them. On top of that, the OS itself will limit the size of your program to 900 bytes. Any attempt to run a program larger than that will give you ERR:SYNTAX. The best way to get around this is to reserve the 900 bytes for a small loader which will look up yourself in RAM (using ChkFindSym) and then extracting the code you need, when you need it. You could also insert RAM at userMem and start executing code from there, or you could swap yourself there and then swap yourself back when done.