Source Code

To view the fbForth 2.0 source code, follow the “Source Code” menu to the Bank desired and select the code section desired from the corresponding menu item or use the links below to navigate the banks:

Bank 0          Bank1          Bank2          Bank3          fbForth 2.0 Listing (PDF)

This source code is TMS9900 Assembly Language Code (ALC) that was written to be assembled with Cory Burr’s Asm994a Assembler.  This assembler is part of the Win994a Simulator V3.010 package available here:  https://www.99er.net/win994a.shtml.

If you wish to use other assemblers, the ALC will need to be edited to conform to the target assembler of your choosing, such as TI’s Editor/Assembler cartridge or Ralph Benzinger’s xas99 Assembler (https://endlos99.github.io/xdt99/).

Assembly with Asm994a

The above image is a screenshot of Asm994a in action. The individual files must be added in assembly order using the “Add Source File” button. The filenames are serialized by the part of the filename preceding the ‘_’ as “fbForth<bank#><2-digit file#>_<descriptive name>.a99”. You can see the order of all files in bank 0 and the first three of bank 1 in the “Input Project Assembly Source Files” window at the top and the last three files of bank 3 in the “Run-Time Assembly Control” window at the bottom.

To produce the 32 KiB binary file for cartridge EPROM, fbForth200.obj (see “HEX Object File” window) must first be converted to individual 8 KiB memory image files (one for each bank) with the machine code for each bank padded with zeroes to fill it out to 8 KiB. This can be done with a quick-and-dirty tool, df802bin, that Tursi of Harmless Lion Software provided me for this purpose. These individual bank files must then be concatenated in the correct order for the target cartridge. The files are serialized by df802bin in the correct order for a cartridge with inverted bank-switching. You need to concatenate the files in reverse order for a cartridge with normal (non-inverted) bank-switching.