hippietrail Posted September 26 Author Share Posted September 26 On 9/12/2024 at 8:04 PM, Gary from OPA said: GROMs also generally only contain GPL assembly not TMS9900 assembly, so until you have a Ghidra loader that understands the GPL opcodes no point worrying about it yet, as it will not disassemble via 9900. I've managed to get the barest skeletal beginnings of a GPL extension "working". The parts of Ghidra for adding new languages are more of a black art than those for making loaders and filesystems. One thing I've learned is that Ghidra does not have a way to handle two languages in one file. But I can add a way to choose TMS9900 or GPL when loading a TI-99/4A file. It may be possible to create a hybrid 'language' that can do both. 'Language' is Ghidra's term for what most people probably think of as a CPU or instruction set but it can work with virtual machines / bytecode. I'm still figuring out how language specifications work so for now it only identifies the first byte of a GPL instruction and not the addressing modes and parameter bytes that follow. It turns out that you define how to disassemble and how to decompile in the same language definition file, but that the decompilation part is optional and trickier (even more of a black art). That's why the TMS9900 extension can disassemble but can't decompile yet. Same will apply to my GPL extension. If anyone has some tiny simple GPL binaries they can share or point me to for testing, nothing too advanced but more advanced than just `fmt` / `fend` with a `htext` "hello world", that would be appreciated. I can handle FIAD, TIFILES, and .bin file formats with the 'standard header'. Quote Link to comment Share on other sites More sharing options...
HOME AUTOMATION Posted September 26 Share Posted September 26 (edited) Something like this? **************************************** * * * COPY-FILE FOR GPL-ASSM * * TEXT FOR DISPLAY OF STRING 'HELLO' * * * **************************************** HOME * = DCLR @YPT FMT * BEGIN FMT-ROUTINE FOR COPIES * COPIES IS LOOP COUNTER COL 26 * COLUMN 26 HTEX 'HELLO' * STRING 'HELLO' TEXT ROW+ 2 * ROW PRESENT VALUE +2 FEND * END 'FOR' FEND * END FMT 00000000 00 00 00 68 A0 00 AA 01 00 00 00 00 60 10 00 00 ...h........`... 00000010 00 00 00 00 00 00 00 00 60 1D 08 47 50 4C 20 54 ........`..GPL T 00000020 45 53 54 07 20 87 7E 08 CB FF 1A 04 48 45 4C 4C EST. .~.....HELL 00000030 4F A1 FB 60 23 FB 86 4A BE 4B 20 3D 00 01 07 4A O..`#..J.K =...J 00000040 35 03 00 AF 10 00 A0 00 BC AF 13 00 A0 00 35 03 5.............5. 00000050 00 A0 00 AF 10 01 03 60 5D 92 4B 8E 4B 40 35 90 .......`].K.K@5. 00000060 4A 40 32 07 20 04 07 0B 00 00 00 00 00 00 00 00 J@2. ........... 00000070 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000080 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000090 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 000000A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 000000B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 000000C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 000000D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 000000E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 000000F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ Spoiler ******************************************* * * * EXAMPLE PROGRAM in GPL (GPL-ASSM) * * * * This program is a screen editor to * * demonstrate inputting data in GPL * * * ******************************************* * * ASSEMBLER DIRECTIVES * TITL 'GPL-SCREEN EDITOR' OFFS 0 * No Load-Offset (DEFAULT) GROM >8000 * Second GROM AORG >0000 * Begin at address 0 (DEFAULT) * * STANDARD GROM-HEADER * DATA GROMID,0,0 * Standard entry vector for modules DATA POINTR,0,0,0,0 * * START LABEL POINTERS * POINTR DATA 0,START * no further pointers STRI 'SCREEN EDITOR' * Start name including byte length * * DEFINED SYMBOLS * GROMID EQU >AA01 * Predefined for standard-groms BLANK EQU ' ' * Must be equated !! NORMAL EQU >07 * Normal background color CHARHL EQU FAC * Holds character at current screen postion SCPT EQU FAC+2 * Points to screen location of cursor SCREND EQU 767 * Last position on screen KEY EQU >8375 * Equated for Scan LASTKY EQU FAC+1 * Last key pressed SPBYTE EQU FAC+4 * Count byte for speed of auto-repeat SPEED EQU >26 * Time between repeat key WAIT EQU >80 * Time to wait before repeat key BACKEY EQU 15 * Equates for key values HOMEKY EQU 188 DCKY EQU 3 DLKY EQU 7 RITEKY EQU 9 LEFTKY EQU 8 UPKY EQU 11 DOWNKY EQU 10 CURSOR EQU 30 * Cursor character * * * START ALL BLANK * Clear Screen DST 0,@SCPT * Clear screen pointer ST BLANK,@CHARHL * Space char for first position DST >0900,@>834A * Load upper case CALL >0018 DST >0B00,@>834A * Load lower case CALL >004A MOVE 8,G@CURSDT,V@>8F0 * Set up cursor definition CLR @LASTKY * >00 for last key pressed FMT * Format screen for instructions ROW 0 COL 1 HTEX '* GPL-SCREEN EDITOR EXAMPLE *' ROW 5 COL 2 HTEX '<F> 3 Clear Screen' ROW+ 2 COL 2 HTEX '<F> 1 Delete Character' ROW+ 2 COL 2 HTEX '<F) 0 Home' ROW+ 2 COL 2 HTEX '<F> 9 Quit' ROW+ 2 COL 2 HTEX 'Move cursor: arrow keys' ROW+ 4 COL 2 HTEX 'Press any key to begin' FEND BLOOP SCAN * Check for a key BR BLOOP * No? then loop ALL BLANK * Clear screen LOOP1 ST CURSOR,V*SCPT * Write cursor to screen ST CURSOR,V*SCPT * Do it again ST @CHARHL,V*SCPT * Write character to screen SCAN * Key pressed? BS CONT1 * Go check key again CEQ @LASTKY,@KEY * Same key as last time? BR LOOP1 * No?, then go to loop DEC @SPBYTE * Subtract 1 from speed byte CEQ 0,@SPBYTE * Should we auto repeat yet? BR LOOP1 * No?, then jump ADD SPEED,@SPBYTE * Add speed for next auto repeat ST CURSOR,V*SCPT * Write cursor to screen ST CURSOR,V*SCPT * Again! ST @CHARHL,V*SCPT * Write character to screen B CONT2 CONT1 ST @KEY,@LASTKY * Save current key at last key ST WAIT,@SPBYTE * Store the wait length at the speed byte CONT2 CEQ BACKEY,@KEY * Function 9? BS EXIT * Yes?, then jump CEQ LEFTKY,@KEY * Function S? BS LEFT * Yes?, then jump CEQ RITEKY,@KEY * Funtion D? BS RITE * Yes?, then jump CEQ UPKY,@KEY * Funtion E? BS UP * Yes?, then jump CEQ DOWNKY,@KEY * Function X? BS DOWN * Yes?, then jump CEQ DLKY,@KEY * Function 3? BS DELLIN * Yes?, then jump CEQ DCKY,@KEY * Function 1? BS DLCHAR * Yes?, then jump CEQ HOMEKY,@KEY * Function 0? BS HOME * Yes?, then jump CGT 31,@KEY * Smaller than space char? BR LOOP1 * Yes?, then jump CH 127,@KEY * Bigger than highest standard char? BS LOOP1 * Yes?, then jump ST @KEY,V*SCPT * Write key pressed character to screen ST V*SCPT,@CHARHL * For last char on screen DCEQ SCREND,@SCPT * Check if at end of screen BS HONK * Yes?, then jump DINC @SCPT * Add 1 to screen position ST V*SCPT,@CHARHL * Put char at new position in the holder B LOOP1 * DELLIN ALL BLANK * Clear screen DCLR @SCPT * Set pointer to 0 ST BLANK,@CHARHL * Put a blank in the char holder B LOOP1 * DLCHAR DST 767,@FAC+6 * 767 bytes DSUB @SCPT,@FAC+6 * Subtract position from it DST @SCPT,@FAC+8 * Put pointer in FAC+8 DINC @FAC+8 * Add 1 to pointer MOVE @FAC+6,V*FAC+8,V*SCPT * Move screen back to delete current char ST BLANK,V@767 * Put a blank in last space ST V*SCPT,@CHARHL * Put new char in hold byte B LOOP1 * HOME DCLR @SCPT * Clear the screen pointer ST V*SCPT,@CHARHL * Put new char in hold byte B LOOP1 * LEFT DCEQ 0,@SCPT * Are we at beginning? BS HONK * Yes?, then jump DDEC @SCPT * Subtract 1 from pointer ST V*SCPT,@CHARHL * Put new char in hold byte B LOOP1 * RITE DCEQ SCREND,@SCPT * Are we at end? BS HONK * Yes?, then jump DINC @SCPT * Add 1 to pointer ST V*SCPT,@CHARHL * Put new char in hold byte B LOOP1 * DOWN DCGT 735,@SCPT * Will new position be off screen? BS HONK * Yes?, then jump DADD 32,@SCPT * Add 32 to increase row # ST V*SCPT,@CHARHL * Put new char in hold byte B LOOP1 * UP DCGT 31,@SCPT * Will new position be off screen? BR HONK * Yes?, then jump DSUB 32,@SCPT * Subtract 32 to decrease row # ST V*SCPT,@CHARHL * Put new char in hold byte B LOOP1 * HONK CALL >0036 * Call honk routine in console B LOOP1 * EXIT ALL BLANK * Clear screen BACK NORMAL * Set normal background color EXIT * Exit to main title screen * CURSDT BYTE >00,>00,>00,>00,>00,>00,>FF,>FF * Data for cursor char END . b.$.J.i.4.,x(....:Nv...R.....#m../?.dK"...f%'...F.Y3X..;.X-..4....>7 RKP.-.............$......Z..[9..Xy......--.....m....{ I believe this disk is ARKed... GPL_DEMOS_AND_MANUALS__1998.DSK Edited September 26 by HOME AUTOMATION 1 Quote Link to comment Share on other sites More sharing options...
RXB Posted September 26 Share Posted September 26 9 hours ago, hippietrail said: I've managed to get the barest skeletal beginnings of a GPL extension "working". The parts of Ghidra for adding new languages are more of a black art than those for making loaders and filesystems. One thing I've learned is that Ghidra does not have a way to handle two languages in one file. But I can add a way to choose TMS9900 or GPL when loading a TI-99/4A file. It may be possible to create a hybrid 'language' that can do both. 'Language' is Ghidra's term for what most people probably think of as a CPU or instruction set but it can work with virtual machines / bytecode. I'm still figuring out how language specifications work so for now it only identifies the first byte of a GPL instruction and not the addressing modes and parameter bytes that follow. It turns out that you define how to disassemble and how to decompile in the same language definition file, but that the decompilation part is optional and trickier (even more of a black art). That's why the TMS9900 extension can disassemble but can't decompile yet. Same will apply to my GPL extension. If anyone has some tiny simple GPL binaries they can share or point me to for testing, nothing too advanced but more advanced than just `fmt` / `fend` with a `htext` "hello world", that would be appreciated. I can handle FIAD, TIFILES, and .bin file formats with the 'standard header'. Report Posted November 19, 2009 (edited) Don't forget to visit Ninerpedia; our wiki about the TI-99/4A. Check here. If you are the owner of one of the programs or sites and do not want it posted, please let me know and it will be removed immediately. Also if you think a reference to an important development resource is missing, then please let me know and I'll be happy to add to the list. If you are new to the TI-99/4A or returning after a long time, then you might want to check out the TI-FAQ page here. Also make sure to visit the TI-99/4A Home Computer Book Archive by @airernie, now hosted by @acadiel. It's a great collection of excellent technical books about programming the TI-99/4A. Latest update: March 17th 2024 1. Emulators classic99 win Windows-based emulator including TI-99 ROMs under license from Texas Instruments. Debugger, memory heatmap, OS file support, support for 128K bank-switch carts, can create ROM/GROM cartridges, possibility to record AVI movies. User manual is included. Check the classic99 Updates thead for the latest news on classic99. Click here to watch Tursi's classic99 tips and tricks video tutorial. Author: @Tursi MAME win+linux Multiple system emulator that supports the TI-99/4, TI-99/4A, TI-99/8, and Geneve. Emulates more than 400 systems. Requires ROMs from the original systems. Features a powerful Debugger, most accurate emulation, support for 64K bank-switch carts / Gram Kracker / UCSD p-code expansion card. Possibility to record AVI movies. Also see the MAME section in ninerpedia. Author: @mizapf Js99'er All major browsers TI-99/4A emulator written in javascript. Has support for TMS9918A VDP & supports most of the F18A functionality, TMS9919 sound. Virtual disk drives using google drive. Some preloaded games, demos and applications included. Js99'er development thread on Atariage can be found here. Js99'er source code repository on Github can be found here. Author: @Asmusr V9t9 win+linux TI-99/4A emulator written in java. Has support for TMS9918A VDP, TMS9919 sound & TMS5220 speech. Debugger included. V9t9 also supports the UCSD P-Code system. Some of the advanced V9t9 features include: ability to save/restore emulator state, record & playback, support for V9938 VDP. Requires ROMs from the original systems. This emulator needs the Java Runtime Environment available for free at Oracle. V9t9 discussion thread can be found here. Author: @eswartz DS99/4a DS/DSI TI99/4a Emulator for the Nintendo DS/DSi. DS99/4a discussion thread can be found here. Author: @wavemotion Win994a win Windows-based emulator of the TI-99/4a Good TMS9900 cross-assembler included. No debugger. Ti994w win Windows based emulator. Offers 80 column support, SAMS card 1Mb of RAM, V9938 support, built-in debugger, ... Author: @F.G. Kaal TI-99/Sim linux Linux-based software simulation of the TI-99/4A. PC99 DOS Commercial DOS-based emulator licensed by Texas Instruments to sell ROMs. 2. Programming languages Assembly language - Software Winasm99 win Windows based TMS9900 cross assembler with GUI and ability to build 8K cartridge roms. Is part of the Win994a emulator. asm990 linux Linux based cross Assembler for the TI 990 by Dave Pitts. You'll also need lnk990 a separate linker which can be found on the same page. TIasm win TMS9900 cross assembler TIasm will build 8K console (>0000) or cartridge (>6000) rom. Is part of the old V9T9 emulator package. Source is included. Editor/Assembler IV TI-99/4A Editor/Assembler IV is a module for the TI99/4A home computer. The software this cartridge contains is the in TMS9900 assembler rewritten Editor and Assembler loader, Program loader and an implementation of my own written Linking Loader and a simple debugger. The editor and debugger are running completely in the module space (>6000 - >7FFF). The assembler is copied from EPROM to CPU RAM before it is started. Author: @F.G. Kaal XA99 - Cross Assembler 99 win XA99 (Cross Assembler 99) is a program for assembling TMS9900 assembler code on the PC. Author: @F.G. Kaal L99 - Linker 99 win L99 is a tagged object file linker by Fred Kaal for creating program files for the TI99 and Geneve home computer. Author: @F.G. Kaal xdt99 - TI 99 Cross-Development Tools win, linux, OS X The TI 99 Cross-Development Tools (xdt99) are a small suite of programs that facilitate the development of programs for the TI 99 family of home computers on modern computer systems. All programs are written in Python and thus run on any platform that Python supports, including Linux, Windows, and Mac OS X. Includes xas99 (TMS9900 cross-assembler), xga99 (GPL cross-assembler!) and some command line tools for handling disk images and nanoPEB/CF7A+ volumes. The development thread on atariage can be found here. Author: @ralphb Assembly language - Manuals Editor/Assembler reference manual PDF The official Editor/Assembler reference manual. Note that this is not a tutorial for beginners. Still, it's an essential manual when writing assembler for the TI-99/4A. The online version can be found here. The TMS9900 Cheat-Sheet PDF Very helpful reference card with opcodes, VDP tables, colors, etc. Author: @SteveB COMPUTE!'s beginner's guide to assembly language on the TI-99/4A PDF The Lottrup book. The only manual available today focusing on programming games in TMS9900 assembler. The examples in the book are for the Mini Memory line-by-line assembler which is rather limited. The manual also contains a few errors. Check here for the corrections. Nonetheless this book is a must-read for everyone seriously interested in writing assembler games for the TI-99/4A. The online version can be found here. Introduction to Assembly Language for the TI Home Computer PDF The Molesworth assembly language introduction book. Covers VDP communication, keyboard reading, file access and a lot more. The Art of Assembly series PDF The full series of articles by the late Bruce Harrison compiled as PDF. Over 600 pages, very well written and thorough. Assembly on the 99/4A WEB Excellent thread on Assembly language programming for the TI-99/4A, focussing on game loops, etc. Author: @matthew180 SPECTRA2 zip Library for programming games in TMS9900 assembly language. Has routines for handling tiles, sprites, sound & task scheduler. Documentation manual PDF is included. Author: @retroclouds BASIC - Software Cortex BASIC TI-99/4A This is a port of the 'Cortex BASIC' interpreter used with the TMS9995-based Powertran Cortex machine. It is written in pure assembly. Graphic commands, sprites and saving to disk are supported. Currently no sound and speech supported. Power BASIC instruction manual available. Playground TI-99/4A Playground is a package making it possible to create assembly language programs that run from TI BASIC on an unexpanded console using only a cassette player to load the program(!) Although primarily intended for use in TI BASIC, programs written for playground can be run from XB, saved in E/A 5 format, loaded into a supercart, and even made into an actual cartridge. The manual describes in detail the differences in style necessary when programming for an environment that runs in only 256 bytes of memory. There is a library of subroutines for printing text, printing a number, shifting blocks in VDP, generating random numbers, using the line editor from BASIC, HCHAR, VCHAR,GPLLNK, a bit reversal routine, and a fast scroll routine. Source code is included for three different programs that should help you get started. Check here for the development thread on Atariage. Check this related thread for some clever work based on Playground. Author: @senior_falcon Extended BASIC - Software Extended Basic Game Developers Package "JUWEL4" TI-99/4A This package consists of two applications that make it possible to produce arcade quality games using Extended BASIC. Although they are designed to complement each other, each is a stand alone utility. Also included is XB 2.9 G.E.M. which offers greatly enhanced graphics in Extended BASIC. The package has been extensively updated to be fast, versatile, and simple to use. It is meant to be used with the Classic99 emulator, but the programs it creates are fully compatible with a real TI99, requiring nothing more than XB, 32K and a disk drive. Purists can use Juwel994 which has modified prompts to work with a real TI99. There is an option to use the older, more compact TI BASIC only runtime routines. This replaces for the older "Harry Wilhelm's BASIC COMPILER" and as a bonus, it's much easier and faster to use. Author: @senior_falcon 1) XB256 XB256 lets you toggle between two independent screens as desired. Screen2 lets you define all 256 characters and still have up to 28 double sized sprites using the character definitions available to Screen1. Scrolling routines let you scroll characters left, right, up, or down or scroll using single pixels. There is a text crawl that gives an effect similar to the STAR WARS title screen. You can highlight text, set the sprite early clock, print in any direction on the screen using 32 columns, read/write to VDP ram, write compressed strings or sound tables to VDP ram, play a sound list, and catalog a disk. A utility lets you save selected areas of VDP memory as compressed strings that cn be merged with your program. With this, character definitions, sound tables, screen images, etc. can be saved in a more compact form that can be loaded virtually instantaneously, even in XB There are two utilities that can convert the CALL SOUNDs in an XB program into a sound table containing music and sound effects. Sound tables can be loaded directly into VDP memory and played automatically while your XB program does other things. Also, a second player can play a different sound list simultaneously with the first, so you can have music playing with sound effects on top of the background music. 2) XB COMPILER COMPILER lets you compile an XB program into an equivalent assembly language program that will run about 30 times faster. All the XB256 subprograms are supported by the compiler and in general, all the major features of XB are supported, including XB style IF/THEN/ELSE and named subprograms. Programs using assembly support routines such as The Missing Link, T40XB and T80 XB programs can now be compiled. About the only unsupported XB features are DEF and the trig functions. There are provisions to save programs in EA5 format, as an XB loader, as a grom cartridge, or as a rom cartridge. T80XB TI-99/4A T80XB is a collection of assembly language subroutines that give the Extended BASIC programmer easy access to the 80 column screen mode offered by the F18A and other 80 column upgrades. Lets you select from two independent screens. G32 is the default screen when a program starts running.. This is the 32 column graphics mode screen normally used by Extended BASIC. It is accessed using the usual XB graphics statements. T80 is the 80 column text screen which offers 24 rows of 80 columns.. You can toggle between the two screens as desired, preserving the graphics on each screen. When using the T80 screen there are assembly equivalents that replace PRINT, CLEAR, COLOR, INPUT, CHAR, HCHAR, VCHAR plus routines that will scroll the screen and invert text on the screen. Author: @senior_falcon XB 2.9 G.E.M. (Graphics Enhancement Module)TI-99/4A XB 2.9 G.E.M. is a greatly expanded version of Tony Knerr's XB 2.7 The cartridge contains utilities that enhance Extended BASIC's graphics capabilities. XB256, T40XB, T80XB, THE MISSING LINE, and THE MISSING LINK GRAPHICS ADVENTURE are all available from the main menu or from a running program. 60 different fonts can be loaded from the cartridge or loaded from or saved to disk. Programs can be chained together and when the new program runs it will retain all numeric and string variables. This allows very large programs with the size limited only by disk capacity A powerful new editor is included that permits full screen editing in 40 and 80 columns. You can save or load programs in either IV254 format or DV80 format, and windows text if you are using an emulator. RXB 2024B TI-99/4A Rich Extended Basic (RXB) is an updated version of TI Extended Basic. Most bugs in XB have been fixed in RXB and GKXB is in the main core of RXB. RXB has features no other XB has such as batch processing, SAMS support, hard drive access or updated CALL routines. The below RXB tutorials on Youtube give a good overview of RXB's power: RXB 2020 Release video on features video RXB memory manager routines in RXB 2020 video RXB 2021 demo 1 video RXB 2021 demo 2 video RXB 2021 demo 3 video RXB 2021 demo 6 video RXB 2021 demo 7 video RXB 2021 demo 8 video RXB 2022 demo 9 video RXB 2022 demo 10 video RXB 2022 demo 11 video RXB 2022 demo 12 video Full documentation, examples, links to YouTube tutorials and GPL source code are all included in the ZIP package. Cartridge image for classic99 emulator also included. Requires a GRAM device such as a GRAM Kracker or finalGROM99 cartridge for running RXB on the TI-99/4A. Author: @RXB RXB 2024B.zip41.65 MB · 32 downloads RXB 2023.zip18.96 MB · 126 downloads RXB 2022.zip31.72 MB · 109 downloads RXB 2021.zip23.57 MB · 98 downloads RXB2020E.zip14.75 MB · 197 downloads TiCodEd Windows + MAC OSX Modern, structured Extended Basic. Integrated PC editor. Development thread on Atariage. Author: @SteveB My Little Compiler (MLC) TI-99/4A Library for using assembler-like language & routines from Extended Basic. Great for putting more power in Extended Basic programs. Now includes a precompiler for high-level language syntax. Demo Pong game and documentation included. The MLC development thread can be found here. Check out the video by @rocky007 on his MLC based TI-99/4A port of Kaboom! Author: @moulinaie The Missing Link 2.0 (TML) TI-99/4A The zip archive contains "The Missing Link 2.0" and its documentation. This was published by Texaments in 1990. It gives the XB programmer easy access to the bit mapped features of the 9918 VDP. Full color cartesian graphics, turtle graphics, sprite graphics (32 sprites with auto motion) are supported. Text can be displayed on screen with fonts having sizes ranging from 4x6 pixels to 8x8 pixels. The manual is updated with many previously undocumented features. A tutorial called "Potatohead" is included. There is a loader that embeds A/L programs in high memory - they can be saved as an XB program and run directly out of high memory. Author: @senior_falcon TidBiT - BASIC/XB Translator win, linux, OS X A translator program that reads a program written in a custom, structured form of BASIC and translates it to a BASIC / Extended BASIC program. PHP required when doing a local installation. Check here for the latest revision, installation instructions included. Author: @matthew180 Kull KXBII Extensions TI-99/4A Kull Extended BASIC II programming package. High resolution graphics and clock support in Extended Basic. Documentation by @hloberg. Extended BASIC - Manuals COMPUTE!'s Programmer's Reference Guide to the TI-99/4A PDF TI-Basic programming manual touching graphics and sound. COMPUTE!'s TI Collection volume One PDF The online version can be found here. Best of TI-Basic programming by C. Regena Texas Instruments TI-99/4A user reference guide PDF The official user reference guide with details how to setup and connect your TI-99/4A. Includes an introduction on the TI-BASIC programming language. Extended Basic reference manual PDF The official extended basic manual, explaining the 40 new or expanded commands, sprites, etc. Check here for the online version with command lookup functionality. MG Night Mission PDF Advanced tutorial on how to program an arcade game in Extended Basic. MG Smart Programming Guide for Sprites PDF Advanced tutorial on how to efficiently use sprites in Extended Basic. C - Software C99 v4 TI-99/4A C99 is a small C compiler for the TI-99/4A written by the famous C. Pulley. Documentation included. C99C - C99 cross compiler and optimizers win C99C is the enhanced PC version of the C99 compiler for the TI99/4A home computer. Also included are multiple optimizers for compacting the generated assembly source (C Optimizer, Function Call Optimizer, ...) Author: @F.G. Kaal GNU C Compiler (GCC) win + linux + osx GCC for the TMS9900 allows you to cross-compile C programs on your PC (Linux, OSX or Windows) for the TI. Insomnia's release contains a set of patches against GCC 4.4. Just check out the code from the GCC project, apply the patches and build according to the build instructions for your platform and you're on your way to write programs and games for the TI in a high level language that rival the speed of assembly. And if you need just that little bit extra in terms of speed, you can always inline TMS9900 assembly for the critical sections of your code and compile everything with the same toolchain. For access to the VDP, the SN76489, etc... you can use Tursi's ti99 library, which you can find in the GCC thread. Hop over to the INSOMNIA LABS blog for background information on this port. Check the "Setting up the GCC compiler for the TI-99/4A" video by @Tursi for detailed steps on how to build and install GCC on your Windows PC. You can now download the cygwin binary port of the older TI GCC 1.10 for Windows here. (Thanks @lucien2). Author: @insomnia Fortran - Software 99-9640 Fortran TI-99/4A & Geneve The zip archive contains LGMA Products' FORTRAN v4.4 in both a version for the TI-99/4A and the Geneve 9640 computer. Documentation in PDF format included. The discussion thread on Atariage can be found here. Forth - Software Turboforth TI-99/4A A brand new implementation of the Forth langugage for the TI-99/4A. The Forth system itself is written in assembler and is optimized for speed. It runs from the cartridge space so there's plenty of space for your program in the 32K memory expansion. Check TurboForth.net the companion web site for the TurboForth system. Click here for seeing some Turboforth video tutorials. Author: @Willsy TI Forth Instruction Manual "2nd Edition 2013" PDF 2012 enhanced version of the original TI Forth Instruction Manual in PDF format by @Lee Stewart. Look here for details on manual improvements, etc. The updated TI-Forth system disk can be found here. Author: @Lee Stewart fbForth TI Forth with File-based Block I/O zip fbForth uses Level 3 file I/O for I/O of Forth blocks. It also implements 80-column text mode if you have a system with that facility. fbForth 32KB 2.0.X ROM cartridge available. Check the fbForth website Author: @Lee Stewart CAMEL99 V2 Forth TI-99/4A Multi-tasking Forth for the TI-99/4a. CAMEL99 Forth has been built as an educational tool for those who are interested in how you could cross-compile Forth to a different CPU using an existing Forth system. Camel99 Forth Development thread on Atariage can be found here. Author: @TheBF GPL - Manuals/Tutorials GPL Programmers Guide PDF The original GPL programming reference manual from Texas Instruments. Covers all opcodes and advanced stuff like coincidence detection, I/O routines, etc. The Graphics Programming Language (GPL) PDF GPL manual with instruction syntax as accepted by the RAG Software GPL Macro Assembler. Edited by @Lee Stewart TI-Intern PDF Details on "Monitor", the OS of the TI-99/4A. Disassembly of console ROM/GROMS and GPL interpreter. Has details on interrupt routine, utility subprograms, basic interpreter, etc. GPL HOW 2 Series video A complete series on how to program GPL (Graphics Progroamming Language) on the TI-99/4A. Each tutorial has its own support package with example code, GPL assembler, etc. Video tutorials done by Rich, the programmer of Rich Extended Basic. Author: @RXB GPLHOW2A - Introduction video / zip GPLHOW2B - Sprite demo video / zip GPLHOW2C - How to make a Screen Editor like TI Writer or Editor Assembler video / zip GPLHOW2D - Editor Assembler TI BASIC support.video / zip GPLHOW2E - DMII cartridge upgrades and how GPL works video / zip GPLHOW2F - TI Basic to GPL. Converting a TI Basic program to GPL video / zip GPLHOW2G - TI Basic CALL SOUND to GPL video / zip GPLHOW2H - Simultaneous sound lists and interrupt timer in GPL video / zip GPLHOW2I - XB2GPL demo of a XB game Baloons converted into a GPL program video / zip GPLHOW2J - Update to GPLHOW2I and adds a automatic music to the game from the last demo video / zip GPLHOW2K - How to make XB Program Image files into I/V 254 files video / zip 1 Quote Link to comment Share on other sites More sharing options...
hippietrail Posted September 27 Author Share Posted September 27 19 hours ago, HOME AUTOMATION said: Something like this? **************************************** * * * COPY-FILE FOR GPL-ASSM * * TEXT FOR DISPLAY OF STRING 'HELLO' * * * **************************************** HOME * = DCLR @YPT FMT * BEGIN FMT-ROUTINE FOR COPIES * COPIES IS LOOP COUNTER COL 26 * COLUMN 26 HTEX 'HELLO' * STRING 'HELLO' TEXT ROW+ 2 * ROW PRESENT VALUE +2 FEND * END 'FOR' FEND * END FMT Sorry, no not quite like that. I'm avoiding all the `FMT`...`FEND` stuff for now since those are special opcodes that require mode switching support, which is an advanced topic I haven't learned how to do yet. Basically, the same byte has a different meaning outside `FMT` vs inside `FMT`. For instance `>00` normally means `RTN`, but inside `FMT`...`FEND` it means `HTEX` with a count of 1. 1 Quote Link to comment Share on other sites More sharing options...
lucien2 Posted September 27 Share Posted September 27 Something like this? grom >6000 data >aa00,>0100,>0000 data menu data >0000,>0000,>0000,>0000 menu data >0000 data start stri 'BOUNCING *' * main x equ >8318 y equ >831a xd equ >831c yd equ >831e pos equ >8320 start back >1c dst >1c1c,v@>384 dst 4,@x dst 8,@y dst 1,@xd dst 1,@yd L1 dst @y,@pos dsll 5,@pos dadd @x,@pos st 42,v@0(@pos) dadd @xd,@x dadd @yd,@y dcgt 31,@x bs L2 dcge 0,@x br L3 dcgt 23,@y bs L4 dcge 0,@y br L5 b L1 L2 dst 31,@x dneg @xd b L1 L3 dst 0,@x dneg @xd b L1 L4 dst 23,@y dneg @yd b L1 L5 dst 0,@y dneg @yd b L1 end bouncing asterisk.zip 1 1 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.