<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://www.ninerpedia.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Stefan+Haubenthal</id>
	<title>Ninerpedia - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="http://www.ninerpedia.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Stefan+Haubenthal"/>
	<link rel="alternate" type="text/html" href="http://www.ninerpedia.org/wiki/Special:Contributions/Stefan_Haubenthal"/>
	<updated>2026-04-24T23:05:13Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.37.1</generator>
	<entry>
		<id>http://www.ninerpedia.org/index.php?title=Myarc_Extended_BASIC_II&amp;diff=51078</id>
		<title>Myarc Extended BASIC II</title>
		<link rel="alternate" type="text/html" href="http://www.ninerpedia.org/index.php?title=Myarc_Extended_BASIC_II&amp;diff=51078"/>
		<updated>2026-02-27T20:20:24Z</updated>

		<summary type="html">&lt;p&gt;Stefan Haubenthal: Undo revision 51077 by Stefan Haubenthal (talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;MYARC XB has had a number of versions, the last and definitive version being Vn 2.12.&lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
===Summary===&lt;br /&gt;
Myarc Extended Basic 2 has the disadvantage of REQUIRING the Myarc 512k ram card, as the Ex Bas itself resides in RAM. This does allow for some increase in speed. Myarc XB is in the form of a module which contains a loader plus ram, a disk, and a chip for the ram card. &lt;br /&gt;
&lt;br /&gt;
The MODULE contains ram (&amp;gt;6000 to &amp;gt;8000) into which the memory management routines go. These are needed as there is a lot of paging going on.&lt;br /&gt;
&lt;br /&gt;
In 128k of your 512k ram card there are four pages of 32k each:&lt;br /&gt;
 Looking at the 24k area &amp;gt;A000 to &amp;gt;FFE8 first:&lt;br /&gt;
 PAGE 1= EX BAS PROGRAM &lt;br /&gt;
 PAGE 2= VARIABLES &lt;br /&gt;
 PAGE 3= STRINGS &lt;br /&gt;
 PAGE 4= Basic Interpreter&lt;br /&gt;
&lt;br /&gt;
In the 8k area &amp;gt;2000 to &amp;gt;4000. you have:&lt;br /&gt;
 PAGE 1: For your machine code routines &lt;br /&gt;
 PAGE 2: Basic interpreter again. and a small area of what Myarc call RAM DISK. &lt;br /&gt;
 PAGE 3: routines for VDP and Speech. and i/o buffers&lt;br /&gt;
 PAGE 4: MORE basic interpreter and the value stack.&lt;br /&gt;
&lt;br /&gt;
As the supplied system disk is referenced often, you can improve matters by copying it to a ramdisk in the 512k ram card for much greater speed.  In VN 2.11. the file 128K OS  instead of slavishly loading everything every time after a QUIT, checks memory to see what is there. In general, provided you have not switched the ram card off, the system will only need to reload two files from the system disk,. a great saving in time!&lt;br /&gt;
&lt;br /&gt;
===CASSETTE INTERFACE===&lt;br /&gt;
Cassette handling has not been included possibly as a result of differing VDP mapping&lt;br /&gt;
&lt;br /&gt;
===Running [[Funlweb]] system - workround===&lt;br /&gt;
Myarc 128K-OS always writes its boot header and code into cartridge RAM on power-up, even if the 128K-OS is NOT enabled. This destroys anything else you want to keep in your Cache Card, DEBUG for instance or FWB even. &lt;br /&gt;
&lt;br /&gt;
To return to MYARC XB from FUNLWEB 4, do not use the RETURN TO XB option as that only works with TI XB. Instead go to DM1000 and choose the CART RAM option- this will cause MYARC XB to be reloaded from disk (do keep the Myarc disk in place for this!) as the Myarc module retains the loading routine all the time as noted by Tony.&lt;br /&gt;
&lt;br /&gt;
==Added features==&lt;br /&gt;
&lt;br /&gt;
===Graphics===&lt;br /&gt;
The Myarc XB has good true bit map graphics, variable screen windowing with both 32 and 40 column text modes. &lt;br /&gt;
CALL CHAR is available from 0 to 255 and you may have 32 sprites. There is a full range of bit map graphics commands- draw, drawto, circle, point, rectangle, fill, write, dcolor, and uniquely you can determine if a pixel is on or off.&lt;br /&gt;
&lt;br /&gt;
The 32 and 40 column screens use identical commands, except for colour: in 40 column mode text colour is set by using two parameters with CALL SCREEN&lt;br /&gt;
&lt;br /&gt;
You have available 256 definable characters in 32 character sets - and 32 sprites. CALL CHARSET restores characters 32 to 95 only, maintaining compatability. but CALL GRAPHICS(N) restores all predefined characters. as well as restoring default colours and clearing the screen ....&lt;br /&gt;
&lt;br /&gt;
An undocumented feature you will like- remember TI&amp;#039;s canard that you could not have sprite automotion in bit map mode? This is repeated in the Myarc XB manual I have - but in truth. you CAN switch Myarc XB to bit map mode. and then call sprites with auto-motion. Neat.&lt;br /&gt;
&lt;br /&gt;
====Example plotting routine====&lt;br /&gt;
&lt;br /&gt;
The program below is a routine for a chaotic graphics plot, and really does take a very long time to finish! The end result is interesting as total order, represented by a single line, becomes total chaos after repeated bifurcation.&lt;br /&gt;
 100 CALL GRAPHICS(3)&lt;br /&gt;
 110 ! ORBITDGM PROGRAM&lt;br /&gt;
 120 ! &lt;br /&gt;
 130 FOR C=-2 TO 0.25 STEP .00625&lt;br /&gt;
 140 X=0 :: M=160*(C+2) :: FOR I=0 TO 200&lt;br /&gt;
 150 X=X*X+C :: IF I&amp;lt;50 THEN 170&lt;br /&gt;
 160 N=(180/4)*(2-X) :: CALL POINT(1,X,Y)&lt;br /&gt;
 170 NEXT I&lt;br /&gt;
 180 REM&lt;br /&gt;
 190 CALL WRITE(0,160,80,&amp;quot;* done *&amp;quot;)&lt;br /&gt;
 200 REM&lt;br /&gt;
 210 STOP&lt;br /&gt;
&lt;br /&gt;
===VIDEO RAM ACCESS===&lt;br /&gt;
You now have PEEKV and POKEV available. &lt;br /&gt;
===Integer Math===&lt;br /&gt;
Added extras include integer and real variables- with integer variables processing a little faster than real ones. Myarc usage differs from everyone else- the integer is ROUNDED not stripped of the decimal if there is one.&lt;br /&gt;
&lt;br /&gt;
If you want an array of integer numbers the way to do it is:&lt;br /&gt;
 100 DEFINT DIM A(20)&lt;br /&gt;
===Default Disk Drive===&lt;br /&gt;
You may set a default disk drive and subsequently omit &amp;quot;DSK1&amp;quot; when using OLD and SAVE or RUN. &lt;br /&gt;
&lt;br /&gt;
===Running [[TI BASIC]] programs===&lt;br /&gt;
Because more VDP is available, Myarc XB can load AND run those very long TI Basic programs that will NOT load in TI XB. You may need to use CALL FILES(1) to load them from disk - but a clever bit of sidestepping allows the Myarc XB to load a longer TIB file than TI&amp;#039;s XB can. Also the TI Basic extra character sets lacking in TI XB ARE available in Myarc XB.&lt;br /&gt;
&lt;br /&gt;
===Running TI [[Extended BASIC]] programs===&lt;br /&gt;
Generally no problems apart from some commercial programs that have used the PROTECTED flag AND also test the memory location to ensure you haven&amp;#039;t removed it. Myarc XB uses a different location so such checks will fail and the program assume you have hacked it.&lt;br /&gt;
&lt;br /&gt;
You can avoid the auto-load of DSK1.LOAD by holding down  FCTN and 4 (CLEAR).  NEW also auto-loads DSK1.LOAD.&lt;br /&gt;
&lt;br /&gt;
GCHAR returned values 96 (&amp;gt;60) greater than the true value which could cause problems.&lt;br /&gt;
&lt;br /&gt;
===Variable Names===&lt;br /&gt;
Myarc XB2 will permit you to use variable names with lower case characters and treat them as different variables to upper case usage. eg A=4 :: a=5. TI XB will accept this but if you edit the line in TI XB the lower case number will be changed to upper case.&lt;br /&gt;
===Pre Scan Bug===&lt;br /&gt;
The prescan check of for-next loops does not function correctly- and this can make debugging very interesting! If a NEXT is missing, the error message: &lt;br /&gt;
 FOR-NEXT NESTING IN NNNN is given.&lt;br /&gt;
Unfortunately the number NNNN has little resemblance to any line number in your program!. Remember to check that every FOR has its NEXT yourself if you have problems! For existing debugged TI XB programs this change to pre-scan makes no difference.&lt;br /&gt;
===ACCEPT AT / DISPLAY AT===&lt;br /&gt;
Some differences to TI XB which potentially may cause problems with programs written for TI XB but I haven&amp;#039;t actually found any. You may find the change useful.&lt;br /&gt;
 ACCEPT AT(11,12)SIZE(32):A$ &lt;br /&gt;
does what? In TI XB it blanks from line 12, column 11 to the end of line 12 and accepts A$ from column 11 to column 28. &lt;br /&gt;
&lt;br /&gt;
In Myarc XB however, it blanks from line 12, column 11, to column 11 of line 13, and the ACCEPT cursor appears on LINE 13. eg the SIZE has rolled over to the next line.&lt;br /&gt;
&lt;br /&gt;
DISPLAY AT(11,12),SIZE(32):A$ makes the same deletion, spreading over two lines, but at least the display starts in the right place.&lt;br /&gt;
&lt;br /&gt;
ACCEPT AT(24,12)SIZE(32):A$ will place the cursor on ROW 1 &lt;br /&gt;
&lt;br /&gt;
ACCEPT AT(12,2)SIZE(-255):A$. Nothing is blanked. but the input field for A$ measures 255 chars from (12,2), including any positions outside current margins (eg edge characters). You can therefore type in quite a lot of text. and have it accepted with one key push into one string. &lt;br /&gt;
===FILE HANDLING===&lt;br /&gt;
Alas a bug. The APPEND option is NOT supported. The file will open but you can&amp;#039;t write to it BUT you will receive no error message to tell you the write has failed.&lt;br /&gt;
===Error Trapping===&lt;br /&gt;
Some of the error messages have been changed and in once instance an error will crash the system. Try this one:&lt;br /&gt;
 100 DEF T(N)=T(N)-1 &lt;br /&gt;
 110 PRINT T(N)&lt;br /&gt;
Not it isn&amp;#039;t right, and TI XB will tell you UDF REFS ITSELF whereas Myarc XB crashes.&lt;br /&gt;
&lt;br /&gt;
TI XB error SYNTAX ERROR SYNTAX ERROR : RECURSIVE SUBPROGRAM CALL will appear in Myarc XB as just SYNTAX ERROR.&lt;br /&gt;
&lt;br /&gt;
You will sometimes receive SYNTAX ERROR instead of BAD VALUE.&lt;br /&gt;
&lt;br /&gt;
If your bad programming has produced:&lt;br /&gt;
 100 GOTO 120 &lt;br /&gt;
 110 SUB TRAP &lt;br /&gt;
 120 PRINT &amp;quot;ERROR MESSAGE=&amp;quot; &lt;br /&gt;
 130 SUBEND&lt;br /&gt;
then TI XB will give you INVALID ERROR NUMBER IN NNNN but Myarc XB 2.12 will throw out the multi line error message:&lt;br /&gt;
 WARNING &lt;br /&gt;
 NUMERIC OVERFLOW IN 130 &lt;br /&gt;
 WARNING &lt;br /&gt;
 NUMERIC OVERFLOW IN 130 &lt;br /&gt;
 WARNING &lt;br /&gt;
 NUMERIC OVERFLOW IN 515 &lt;br /&gt;
 WARNING &lt;br /&gt;
 NUMERIC OVERFLOW IN 515 &lt;br /&gt;
at which point your only option is to QUIT as the keyboard is unresponsive. No there isn&amp;#039;t a line 515 in the code.&lt;br /&gt;
&lt;br /&gt;
===Running Program format machine code===&lt;br /&gt;
You may RUN many program format machine code programs directly. &lt;br /&gt;
===Running DF80 machine code===&lt;br /&gt;
DF8O files written for TI XB may require you to use a utility program to reset VDP registers, or may not function at all.&lt;br /&gt;
&lt;br /&gt;
Assembly programs written specifically for TI XB module may not function however due to different mapping. If the DF80 code will run with Editor Assembler or Mini Memory it should run without problem. Myarc have provided an additional DF8O utility program called TIVDP which sets the VDP registers to correspond to TI XB and using this seems to solve most DF80 problems.&lt;br /&gt;
&lt;br /&gt;
The format is:&lt;br /&gt;
 CALL INIT :: CALL LOAD(&amp;quot;DSK1.TIVDP&amp;quot;) :: CALL INIT :: CALL LOAD(&amp;quot;DSK1.PROGNAME&amp;quot;) &lt;br /&gt;
and it is NOT a mistake to show CALL INIT twice above.&lt;br /&gt;
&lt;br /&gt;
If using TIVDP fails. then try switching to one of the other graphics modes (2 or 3) before loading the machine code program.  The DM1000 file MGR3 on the Funlwriter disk is an example: try to load it in GRAPHICS MODE(1) and you meet a blank screen - although it will function correctly. To see what you are doing you need to type in: CALL GRAPHICS(2) :: RUN &amp;quot;DSK1.MGR3&amp;quot; and off you go.&lt;br /&gt;
&lt;br /&gt;
Some DF80 files may be too long to load and produce an error message MEMORY OVERFLOW - you can instead use the UTILITY option on the Funlwriter menu if you have that program.&lt;br /&gt;
&lt;br /&gt;
===RUNning a program from a program===&lt;br /&gt;
When your program loads another program you can use a variable name &lt;br /&gt;
 RUN A$&lt;br /&gt;
and if you are loading part two of a game say, you can load part two AND RETAIN the values of the variables in part one by using:&lt;br /&gt;
 RUN &amp;quot;DSK1.PART2&amp;quot;,CONTINUE&lt;br /&gt;
&lt;br /&gt;
===Other===&lt;br /&gt;
Myarc XB allows you to run many memory image files which otherwise would require a SuperCart (EdAs with 8k ram) as the Myarc module contains ram in the correct location.&lt;br /&gt;
&lt;br /&gt;
Strangely Unix-like COMMAND MODE commands include CHD and PWD to change and print the default device name, so you can old a file on say DSK1 with just OLD &amp;quot;FILENAME&amp;quot;.  The device name is inserted when you use RUN, SAVE And OLD.&lt;br /&gt;
&lt;br /&gt;
Also in COMMAND MODE you can omit quotation marks when using OLD, SAVE and RUN, so OLD DSK1.FILENAME is OK. However you must still use quotation marks when using PRINT or DELETE from the command line.&lt;br /&gt;
&lt;br /&gt;
In TI Extended Basic if you type PRINT VAL(&amp;quot;&amp;quot;) you will receive an error.  In Myarc Extended Basic you will receive a 0 (zero).&lt;br /&gt;
&lt;br /&gt;
TI FORTH- Do not use the original TI loader for Ed/As. it will not function. Instead use the later modification for mini/memory (the Universal loader). Return to OS with MON may not work.&lt;br /&gt;
&lt;br /&gt;
FUNLWRITER/ FUNLWEB package: The easiest way into FUNLWRITER is with:&lt;br /&gt;
 CALL LOAD(&amp;quot;DSK1.LDFW&amp;quot;) &lt;br /&gt;
the file LDFW is part of the Funlwriter package. Funlwriter remembers its source drive number. and resets various things to allow you access to otherwise difficult programs which may be anticipating an environment not matched by Myarc XB.&lt;br /&gt;
&lt;br /&gt;
Interrupt Routines: My observation is that any program using the interrupt vector &amp;gt;83C4 is more than likely to misbehave or totally crash the system. A few programs use this address as an alternative to TI&amp;#039;s standard auto-start.&lt;br /&gt;
&lt;br /&gt;
[[Category:Programming language]]&lt;/div&gt;</summary>
		<author><name>Stefan Haubenthal</name></author>
	</entry>
	<entry>
		<id>http://www.ninerpedia.org/index.php?title=Myarc_Extended_BASIC_II&amp;diff=51077</id>
		<title>Myarc Extended BASIC II</title>
		<link rel="alternate" type="text/html" href="http://www.ninerpedia.org/index.php?title=Myarc_Extended_BASIC_II&amp;diff=51077"/>
		<updated>2026-02-27T20:18:25Z</updated>

		<summary type="html">&lt;p&gt;Stefan Haubenthal: Category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;MYARC XB has had a number of versions, the last and definitive version being Vn 2.12.&lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
===Summary===&lt;br /&gt;
Myarc Extended Basic 2 has the disadvantage of REQUIRING the Myarc 512k ram card, as the Ex Bas itself resides in RAM. This does allow for some increase in speed. Myarc XB is in the form of a module which contains a loader plus ram, a disk, and a chip for the ram card. &lt;br /&gt;
&lt;br /&gt;
The MODULE contains ram (&amp;gt;6000 to &amp;gt;8000) into which the memory management routines go. These are needed as there is a lot of paging going on.&lt;br /&gt;
&lt;br /&gt;
In 128k of your 512k ram card there are four pages of 32k each:&lt;br /&gt;
 Looking at the 24k area &amp;gt;A000 to &amp;gt;FFE8 first:&lt;br /&gt;
 PAGE 1= EX BAS PROGRAM &lt;br /&gt;
 PAGE 2= VARIABLES &lt;br /&gt;
 PAGE 3= STRINGS &lt;br /&gt;
 PAGE 4= Basic Interpreter&lt;br /&gt;
&lt;br /&gt;
In the 8k area &amp;gt;2000 to &amp;gt;4000. you have:&lt;br /&gt;
 PAGE 1: For your machine code routines &lt;br /&gt;
 PAGE 2: Basic interpreter again. and a small area of what Myarc call RAM DISK. &lt;br /&gt;
 PAGE 3: routines for VDP and Speech. and i/o buffers&lt;br /&gt;
 PAGE 4: MORE basic interpreter and the value stack.&lt;br /&gt;
&lt;br /&gt;
As the supplied system disk is referenced often, you can improve matters by copying it to a ramdisk in the 512k ram card for much greater speed.  In VN 2.11. the file 128K OS  instead of slavishly loading everything every time after a QUIT, checks memory to see what is there. In general, provided you have not switched the ram card off, the system will only need to reload two files from the system disk,. a great saving in time!&lt;br /&gt;
&lt;br /&gt;
===CASSETTE INTERFACE===&lt;br /&gt;
Cassette handling has not been included possibly as a result of differing VDP mapping&lt;br /&gt;
&lt;br /&gt;
===Running [[Funlweb]] system - workround===&lt;br /&gt;
Myarc 128K-OS always writes its boot header and code into cartridge RAM on power-up, even if the 128K-OS is NOT enabled. This destroys anything else you want to keep in your Cache Card, DEBUG for instance or FWB even. &lt;br /&gt;
&lt;br /&gt;
To return to MYARC XB from FUNLWEB 4, do not use the RETURN TO XB option as that only works with TI XB. Instead go to DM1000 and choose the CART RAM option- this will cause MYARC XB to be reloaded from disk (do keep the Myarc disk in place for this!) as the Myarc module retains the loading routine all the time as noted by Tony.&lt;br /&gt;
&lt;br /&gt;
==Added features==&lt;br /&gt;
&lt;br /&gt;
===Graphics===&lt;br /&gt;
The Myarc XB has good true bit map graphics, variable screen windowing with both 32 and 40 column text modes. &lt;br /&gt;
CALL CHAR is available from 0 to 255 and you may have 32 sprites. There is a full range of bit map graphics commands- draw, drawto, circle, point, rectangle, fill, write, dcolor, and uniquely you can determine if a pixel is on or off.&lt;br /&gt;
&lt;br /&gt;
The 32 and 40 column screens use identical commands, except for colour: in 40 column mode text colour is set by using two parameters with CALL SCREEN&lt;br /&gt;
&lt;br /&gt;
You have available 256 definable characters in 32 character sets - and 32 sprites. CALL CHARSET restores characters 32 to 95 only, maintaining compatability. but CALL GRAPHICS(N) restores all predefined characters. as well as restoring default colours and clearing the screen ....&lt;br /&gt;
&lt;br /&gt;
An undocumented feature you will like- remember TI&amp;#039;s canard that you could not have sprite automotion in bit map mode? This is repeated in the Myarc XB manual I have - but in truth. you CAN switch Myarc XB to bit map mode. and then call sprites with auto-motion. Neat.&lt;br /&gt;
&lt;br /&gt;
====Example plotting routine====&lt;br /&gt;
&lt;br /&gt;
The program below is a routine for a chaotic graphics plot, and really does take a very long time to finish! The end result is interesting as total order, represented by a single line, becomes total chaos after repeated bifurcation.&lt;br /&gt;
 100 CALL GRAPHICS(3)&lt;br /&gt;
 110 ! ORBITDGM PROGRAM&lt;br /&gt;
 120 ! &lt;br /&gt;
 130 FOR C=-2 TO 0.25 STEP .00625&lt;br /&gt;
 140 X=0 :: M=160*(C+2) :: FOR I=0 TO 200&lt;br /&gt;
 150 X=X*X+C :: IF I&amp;lt;50 THEN 170&lt;br /&gt;
 160 N=(180/4)*(2-X) :: CALL POINT(1,X,Y)&lt;br /&gt;
 170 NEXT I&lt;br /&gt;
 180 REM&lt;br /&gt;
 190 CALL WRITE(0,160,80,&amp;quot;* done *&amp;quot;)&lt;br /&gt;
 200 REM&lt;br /&gt;
 210 STOP&lt;br /&gt;
&lt;br /&gt;
===VIDEO RAM ACCESS===&lt;br /&gt;
You now have PEEKV and POKEV available. &lt;br /&gt;
===Integer Math===&lt;br /&gt;
Added extras include integer and real variables- with integer variables processing a little faster than real ones. Myarc usage differs from everyone else- the integer is ROUNDED not stripped of the decimal if there is one.&lt;br /&gt;
&lt;br /&gt;
If you want an array of integer numbers the way to do it is:&lt;br /&gt;
 100 DEFINT DIM A(20)&lt;br /&gt;
===Default Disk Drive===&lt;br /&gt;
You may set a default disk drive and subsequently omit &amp;quot;DSK1&amp;quot; when using OLD and SAVE or RUN. &lt;br /&gt;
&lt;br /&gt;
===Running [[TI BASIC]] programs===&lt;br /&gt;
Because more VDP is available, Myarc XB can load AND run those very long TI Basic programs that will NOT load in TI XB. You may need to use CALL FILES(1) to load them from disk - but a clever bit of sidestepping allows the Myarc XB to load a longer TIB file than TI&amp;#039;s XB can. Also the TI Basic extra character sets lacking in TI XB ARE available in Myarc XB.&lt;br /&gt;
&lt;br /&gt;
===Running TI [[Extended BASIC]] programs===&lt;br /&gt;
Generally no problems apart from some commercial programs that have used the PROTECTED flag AND also test the memory location to ensure you haven&amp;#039;t removed it. Myarc XB uses a different location so such checks will fail and the program assume you have hacked it.&lt;br /&gt;
&lt;br /&gt;
You can avoid the auto-load of DSK1.LOAD by holding down  FCTN and 4 (CLEAR).  NEW also auto-loads DSK1.LOAD.&lt;br /&gt;
&lt;br /&gt;
GCHAR returned values 96 (&amp;gt;60) greater than the true value which could cause problems.&lt;br /&gt;
&lt;br /&gt;
===Variable Names===&lt;br /&gt;
Myarc XB2 will permit you to use variable names with lower case characters and treat them as different variables to upper case usage. eg A=4 :: a=5. TI XB will accept this but if you edit the line in TI XB the lower case number will be changed to upper case.&lt;br /&gt;
===Pre Scan Bug===&lt;br /&gt;
The prescan check of for-next loops does not function correctly- and this can make debugging very interesting! If a NEXT is missing, the error message: &lt;br /&gt;
 FOR-NEXT NESTING IN NNNN is given.&lt;br /&gt;
Unfortunately the number NNNN has little resemblance to any line number in your program!. Remember to check that every FOR has its NEXT yourself if you have problems! For existing debugged TI XB programs this change to pre-scan makes no difference.&lt;br /&gt;
===ACCEPT AT / DISPLAY AT===&lt;br /&gt;
Some differences to TI XB which potentially may cause problems with programs written for TI XB but I haven&amp;#039;t actually found any. You may find the change useful.&lt;br /&gt;
 ACCEPT AT(11,12)SIZE(32):A$ &lt;br /&gt;
does what? In TI XB it blanks from line 12, column 11 to the end of line 12 and accepts A$ from column 11 to column 28. &lt;br /&gt;
&lt;br /&gt;
In Myarc XB however, it blanks from line 12, column 11, to column 11 of line 13, and the ACCEPT cursor appears on LINE 13. eg the SIZE has rolled over to the next line.&lt;br /&gt;
&lt;br /&gt;
DISPLAY AT(11,12),SIZE(32):A$ makes the same deletion, spreading over two lines, but at least the display starts in the right place.&lt;br /&gt;
&lt;br /&gt;
ACCEPT AT(24,12)SIZE(32):A$ will place the cursor on ROW 1 &lt;br /&gt;
&lt;br /&gt;
ACCEPT AT(12,2)SIZE(-255):A$. Nothing is blanked. but the input field for A$ measures 255 chars from (12,2), including any positions outside current margins (eg edge characters). You can therefore type in quite a lot of text. and have it accepted with one key push into one string. &lt;br /&gt;
===FILE HANDLING===&lt;br /&gt;
Alas a bug. The APPEND option is NOT supported. The file will open but you can&amp;#039;t write to it BUT you will receive no error message to tell you the write has failed.&lt;br /&gt;
===Error Trapping===&lt;br /&gt;
Some of the error messages have been changed and in once instance an error will crash the system. Try this one:&lt;br /&gt;
 100 DEF T(N)=T(N)-1 &lt;br /&gt;
 110 PRINT T(N)&lt;br /&gt;
Not it isn&amp;#039;t right, and TI XB will tell you UDF REFS ITSELF whereas Myarc XB crashes.&lt;br /&gt;
&lt;br /&gt;
TI XB error SYNTAX ERROR SYNTAX ERROR : RECURSIVE SUBPROGRAM CALL will appear in Myarc XB as just SYNTAX ERROR.&lt;br /&gt;
&lt;br /&gt;
You will sometimes receive SYNTAX ERROR instead of BAD VALUE.&lt;br /&gt;
&lt;br /&gt;
If your bad programming has produced:&lt;br /&gt;
 100 GOTO 120 &lt;br /&gt;
 110 SUB TRAP &lt;br /&gt;
 120 PRINT &amp;quot;ERROR MESSAGE=&amp;quot; &lt;br /&gt;
 130 SUBEND&lt;br /&gt;
then TI XB will give you INVALID ERROR NUMBER IN NNNN but Myarc XB 2.12 will throw out the multi line error message:&lt;br /&gt;
 WARNING &lt;br /&gt;
 NUMERIC OVERFLOW IN 130 &lt;br /&gt;
 WARNING &lt;br /&gt;
 NUMERIC OVERFLOW IN 130 &lt;br /&gt;
 WARNING &lt;br /&gt;
 NUMERIC OVERFLOW IN 515 &lt;br /&gt;
 WARNING &lt;br /&gt;
 NUMERIC OVERFLOW IN 515 &lt;br /&gt;
at which point your only option is to QUIT as the keyboard is unresponsive. No there isn&amp;#039;t a line 515 in the code.&lt;br /&gt;
&lt;br /&gt;
===Running Program format machine code===&lt;br /&gt;
You may RUN many program format machine code programs directly. &lt;br /&gt;
===Running DF80 machine code===&lt;br /&gt;
DF8O files written for TI XB may require you to use a utility program to reset VDP registers, or may not function at all.&lt;br /&gt;
&lt;br /&gt;
Assembly programs written specifically for TI XB module may not function however due to different mapping. If the DF80 code will run with Editor Assembler or Mini Memory it should run without problem. Myarc have provided an additional DF8O utility program called TIVDP which sets the VDP registers to correspond to TI XB and using this seems to solve most DF80 problems.&lt;br /&gt;
&lt;br /&gt;
The format is:&lt;br /&gt;
 CALL INIT :: CALL LOAD(&amp;quot;DSK1.TIVDP&amp;quot;) :: CALL INIT :: CALL LOAD(&amp;quot;DSK1.PROGNAME&amp;quot;) &lt;br /&gt;
and it is NOT a mistake to show CALL INIT twice above.&lt;br /&gt;
&lt;br /&gt;
If using TIVDP fails. then try switching to one of the other graphics modes (2 or 3) before loading the machine code program.  The DM1000 file MGR3 on the Funlwriter disk is an example: try to load it in GRAPHICS MODE(1) and you meet a blank screen - although it will function correctly. To see what you are doing you need to type in: CALL GRAPHICS(2) :: RUN &amp;quot;DSK1.MGR3&amp;quot; and off you go.&lt;br /&gt;
&lt;br /&gt;
Some DF80 files may be too long to load and produce an error message MEMORY OVERFLOW - you can instead use the UTILITY option on the Funlwriter menu if you have that program.&lt;br /&gt;
&lt;br /&gt;
===RUNning a program from a program===&lt;br /&gt;
When your program loads another program you can use a variable name &lt;br /&gt;
 RUN A$&lt;br /&gt;
and if you are loading part two of a game say, you can load part two AND RETAIN the values of the variables in part one by using:&lt;br /&gt;
 RUN &amp;quot;DSK1.PART2&amp;quot;,CONTINUE&lt;br /&gt;
&lt;br /&gt;
===Other===&lt;br /&gt;
Myarc XB allows you to run many memory image files which otherwise would require a SuperCart (EdAs with 8k ram) as the Myarc module contains ram in the correct location.&lt;br /&gt;
&lt;br /&gt;
Strangely Unix-like COMMAND MODE commands include CHD and PWD to change and print the default device name, so you can old a file on say DSK1 with just OLD &amp;quot;FILENAME&amp;quot;.  The device name is inserted when you use RUN, SAVE And OLD.&lt;br /&gt;
&lt;br /&gt;
Also in COMMAND MODE you can omit quotation marks when using OLD, SAVE and RUN, so OLD DSK1.FILENAME is OK. However you must still use quotation marks when using PRINT or DELETE from the command line.&lt;br /&gt;
&lt;br /&gt;
In TI Extended Basic if you type PRINT VAL(&amp;quot;&amp;quot;) you will receive an error.  In Myarc Extended Basic you will receive a 0 (zero).&lt;br /&gt;
&lt;br /&gt;
TI FORTH- Do not use the original TI loader for Ed/As. it will not function. Instead use the later modification for mini/memory (the Universal loader). Return to OS with MON may not work.&lt;br /&gt;
&lt;br /&gt;
FUNLWRITER/ FUNLWEB package: The easiest way into FUNLWRITER is with:&lt;br /&gt;
 CALL LOAD(&amp;quot;DSK1.LDFW&amp;quot;) &lt;br /&gt;
the file LDFW is part of the [[Funlwriter]] package. Funlwriter remembers its source drive number. and resets various things to allow you access to otherwise difficult programs which may be anticipating an environment not matched by Myarc XB.&lt;br /&gt;
&lt;br /&gt;
Interrupt Routines: My observation is that any program using the interrupt vector &amp;gt;83C4 is more than likely to misbehave or totally crash the system. A few programs use this address as an alternative to TI&amp;#039;s standard auto-start.&lt;br /&gt;
&lt;br /&gt;
[[Category:Geneve]]&lt;br /&gt;
[[Category:Programming language]]&lt;/div&gt;</summary>
		<author><name>Stefan Haubenthal</name></author>
	</entry>
	<entry>
		<id>http://www.ninerpedia.org/index.php?title=ABASIC&amp;diff=51076</id>
		<title>ABASIC</title>
		<link rel="alternate" type="text/html" href="http://www.ninerpedia.org/index.php?title=ABASIC&amp;diff=51076"/>
		<updated>2026-02-27T20:13:34Z</updated>

		<summary type="html">&lt;p&gt;Stefan Haubenthal: Created page with &amp;quot;&amp;#039;&amp;#039;&amp;#039;Myarc Advanced Basic&amp;#039;&amp;#039;&amp;#039; is a BASIC interpreter for the Geneve by Jim Uzzel.  Category:Geneve Category:Programming language&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Myarc Advanced Basic&amp;#039;&amp;#039;&amp;#039; is a BASIC interpreter for the Geneve by Jim Uzzel.&lt;br /&gt;
&lt;br /&gt;
[[Category:Geneve]]&lt;br /&gt;
[[Category:Programming language]]&lt;/div&gt;</summary>
		<author><name>Stefan Haubenthal</name></author>
	</entry>
	<entry>
		<id>http://www.ninerpedia.org/index.php?title=TIC&amp;diff=51075</id>
		<title>TIC</title>
		<link rel="alternate" type="text/html" href="http://www.ninerpedia.org/index.php?title=TIC&amp;diff=51075"/>
		<updated>2026-02-27T19:31:24Z</updated>

		<summary type="html">&lt;p&gt;Stefan Haubenthal: Examples&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;TI/C&amp;#039;&amp;#039;&amp;#039; C compiler for TI-99 and MYARC GENEVE 9640 computers by LGMA Products (Little Green Men Associates) written by Alan Beard. Note that library for tic was created by Clint Pulley, based on his [[c99|Tiny-C compiler]] but recompiled with tic.&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
DIST1_C:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio_h&amp;gt;&lt;br /&gt;
#include &amp;lt;video_h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int f;&lt;br /&gt;
int g;&lt;br /&gt;
&lt;br /&gt;
main() {&lt;br /&gt;
   vidmode(3);&lt;br /&gt;
   putchar(12);&lt;br /&gt;
   sprite(1,65,2,50,50);&lt;br /&gt;
   sprite(2,67,7,30,30);&lt;br /&gt;
   spmotn(1,5,0);&lt;br /&gt;
   spmotn(2,5,0);&lt;br /&gt;
   while (1) {&lt;br /&gt;
      f = spdist(1,2);&lt;br /&gt;
      g = spdrc(2,1,1);&lt;br /&gt;
      locate(24,5);&lt;br /&gt;
      printf(&amp;quot;%d %d    &amp;quot;, f, g);&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
DIST2_C:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio_h&amp;gt;&lt;br /&gt;
#include &amp;lt;video_h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int r;&lt;br /&gt;
int f;&lt;br /&gt;
&lt;br /&gt;
main() {&lt;br /&gt;
   vidmode(3);&lt;br /&gt;
   putchar(12);&lt;br /&gt;
   sprite(1,65,2,50,50);&lt;br /&gt;
   spmotn(1,0,5);&lt;br /&gt;
   while (1) {&lt;br /&gt;
      r = spdrc(1,50,50);&lt;br /&gt;
      f = spdrc(1,50,50);&lt;br /&gt;
      locate(24,1);&lt;br /&gt;
      printf(&amp;quot;%d %d    &amp;quot;, r, f);&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* [https://github.com/abeard01/fortran99/tree/master/tic Repository]&lt;br /&gt;
&lt;br /&gt;
[[Category:Programming language]]&lt;/div&gt;</summary>
		<author><name>Stefan Haubenthal</name></author>
	</entry>
	<entry>
		<id>http://www.ninerpedia.org/index.php?title=ZQX-one&amp;diff=51074</id>
		<title>ZQX-one</title>
		<link rel="alternate" type="text/html" href="http://www.ninerpedia.org/index.php?title=ZQX-one&amp;diff=51074"/>
		<updated>2026-01-28T12:10:59Z</updated>

		<summary type="html">&lt;p&gt;Stefan Haubenthal: Category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A Zaxxon port for [[F18A]].&lt;br /&gt;
&lt;br /&gt;
https://github.com/Rasmus-M/zqx-one&lt;br /&gt;
&lt;br /&gt;
[[Category:Module]]&lt;br /&gt;
[[Category:32K]]&lt;/div&gt;</summary>
		<author><name>Stefan Haubenthal</name></author>
	</entry>
	<entry>
		<id>http://www.ninerpedia.org/index.php?title=MDOS_command_line&amp;diff=51073</id>
		<title>MDOS command line</title>
		<link rel="alternate" type="text/html" href="http://www.ninerpedia.org/index.php?title=MDOS_command_line&amp;diff=51073"/>
		<updated>2026-01-28T12:07:13Z</updated>

		<summary type="html">&lt;p&gt;Stefan Haubenthal: /* Getting the arguments from the MDOS command line */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Getting the arguments from the MDOS command line ==&lt;br /&gt;
&lt;br /&gt;
There is only little documentation on the MDOS environment. One of the most interesting questions is how to retrieve the command line arguments in order to process them in the own program. [[TIC]] seems to be able to do, so our assembly language program should as well.&lt;br /&gt;
&lt;br /&gt;
The answer is that the command line arguments are stored as a single string (with leading length byte) in a linked list of chunks of 6 bytes each. The pointer to this list is at address &amp;gt;0128 of the memory page at 0000-1FFF that was set when the program was started (so take care when you change the mapper). Here is an illustration:&lt;br /&gt;
&lt;br /&gt;
[[File:args.png|300px]]&lt;br /&gt;
&lt;br /&gt;
The command line arguments do not contain the program name, and they are not parsed, that is, you have to analyze the string in your application program. The memory location at &amp;gt;0128 contains a 0000 when there are no arguments. The end of the list is indicated by a next pointer that is set to 0000. Be aware that the last chunk may have arbitrary content after the end of the string. The pointers are 2 bytes each and start at word boundaries.&lt;br /&gt;
&lt;br /&gt;
The following code is an example how to retrieve the list contents:&lt;br /&gt;
&lt;br /&gt;
 BUF    BSS  80           Reserve 80 bytes of space&lt;br /&gt;
 &lt;br /&gt;
 START  MOV  @&amp;gt;0128,R0    Get pointer to list&lt;br /&gt;
        JEQ  NOARGS       If it is 0, skip all &lt;br /&gt;
 &lt;br /&gt;
 ST1    LI   R3,BUF       Pointer to buffer&lt;br /&gt;
        MOV  *R0+,R1      Store next pointer in R1&lt;br /&gt;
        LI   R5,6         Number of bytes in chunk&lt;br /&gt;
        MOVB *R0+,R2      Get length byte&lt;br /&gt;
        DEC  R5           Count down one for that byte&lt;br /&gt;
        SRL  R2,8         Move length byte to the low byte&lt;br /&gt;
        MOV  R2,*R3+      and write it at the head of the buffer&lt;br /&gt;
 &lt;br /&gt;
 GL1    MOVB *R0+,*R3+    Copy the current byte to the buffer&lt;br /&gt;
        DEC  R2           Count down remaining string bytes&lt;br /&gt;
        JEQ  GOTALL       Done?&lt;br /&gt;
 GL2    DEC  R5           No, count down chunk counter&lt;br /&gt;
        JNE  GL1          Chunk done? &lt;br /&gt;
 GL3    MOV  R1,R0        Yes, put the next address in R0&lt;br /&gt;
        JEQ  DONE         Is it null? &lt;br /&gt;
        MOV  *R0+,R1      No, so there is another chunk&lt;br /&gt;
        LI   R5,6         Reset chunk counter&lt;br /&gt;
        JMP  GL1          End of loop&lt;br /&gt;
 &lt;br /&gt;
 DONE ...&lt;br /&gt;
 NOARGS ...&lt;br /&gt;
&lt;br /&gt;
[[Category:Programming]]&lt;br /&gt;
[[Category:MDOS]]&lt;/div&gt;</summary>
		<author><name>Stefan Haubenthal</name></author>
	</entry>
	<entry>
		<id>http://www.ninerpedia.org/index.php?title=Device_access_in_TIC&amp;diff=51072</id>
		<title>Device access in TIC</title>
		<link rel="alternate" type="text/html" href="http://www.ninerpedia.org/index.php?title=Device_access_in_TIC&amp;diff=51072"/>
		<updated>2026-01-28T12:06:27Z</updated>

		<summary type="html">&lt;p&gt;Stefan Haubenthal: /* Reading and writing disk sectors */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Reading and writing disk sectors ==&lt;br /&gt;
&lt;br /&gt;
The following code demonstrates how level-2 file access can be used in a [[TIC]] program. It copies a file, independent of the file format, by reading a sector and writing to a target file. Each sector is allocated when written. &lt;br /&gt;
&lt;br /&gt;
This sample code is certainly not the best way to copy files (wasting a lot of time by repeatedly and writing single sectors); it is only intended to illustrate the level-2 access.&lt;br /&gt;
&lt;br /&gt;
 #include &amp;lt;stdio_h&amp;gt;&lt;br /&gt;
 #include &amp;lt;stdlib_h&amp;gt; &lt;br /&gt;
 &lt;br /&gt;
 main(argc, argv)&lt;br /&gt;
 int argc; char *argv[];&lt;br /&gt;
 {&lt;br /&gt;
    int  res, sect, i;&lt;br /&gt;
    char rbuf[256];&lt;br /&gt;
    int  *ibuf;&lt;br /&gt;
 &lt;br /&gt;
    if (argc&amp;lt;2)&lt;br /&gt;
    {&lt;br /&gt;
        printf(&amp;quot;Syntax: filecopy &amp;lt;from_file&amp;gt; &amp;lt;to_file&amp;gt;\n&amp;quot;);&lt;br /&gt;
        return;&lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
    /* First we get the metadata */&lt;br /&gt;
    res = bread(argv[1], 0, 0, rbuf);&lt;br /&gt;
    check(res);&lt;br /&gt;
 &lt;br /&gt;
    /* write the old metadata as new metadata */&lt;br /&gt;
    res = bwrite(argv[2], 0, 0, rbuf);&lt;br /&gt;
    check(res);&lt;br /&gt;
 &lt;br /&gt;
    /* copy the file sector by sector */&lt;br /&gt;
    ibuf = rbuf;&lt;br /&gt;
    sect = ibuf[2];&lt;br /&gt;
    for (i=0; i &amp;lt; sect; i++)&lt;br /&gt;
    {&lt;br /&gt;
        printf(&amp;quot;Copying sector %d of %d\r&amp;quot;, i+1, sect);&lt;br /&gt;
        res = bread(argv[1], i, 1, rbuf);&lt;br /&gt;
        check(res);&lt;br /&gt;
        res = bwrite(argv[2], i, 1, rbuf);&lt;br /&gt;
        check(res);&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void check(code)&lt;br /&gt;
 int code;&lt;br /&gt;
 {&lt;br /&gt;
    if (code != 0)&lt;br /&gt;
    {&lt;br /&gt;
        printf(&amp;quot;Error, code = %d\n&amp;quot;, code);&lt;br /&gt;
        exit(7);&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Programming]]&lt;br /&gt;
[[Category:MDOS]]&lt;/div&gt;</summary>
		<author><name>Stefan Haubenthal</name></author>
	</entry>
	<entry>
		<id>http://www.ninerpedia.org/index.php?title=Word_processor&amp;diff=51071</id>
		<title>Word processor</title>
		<link rel="alternate" type="text/html" href="http://www.ninerpedia.org/index.php?title=Word_processor&amp;diff=51071"/>
		<updated>2026-01-28T12:02:44Z</updated>

		<summary type="html">&lt;p&gt;Stefan Haubenthal: Stefan Haubenthal moved page Word processor to Word processors&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Word processors]]&lt;/div&gt;</summary>
		<author><name>Stefan Haubenthal</name></author>
	</entry>
	<entry>
		<id>http://www.ninerpedia.org/index.php?title=Word_processors&amp;diff=51070</id>
		<title>Word processors</title>
		<link rel="alternate" type="text/html" href="http://www.ninerpedia.org/index.php?title=Word_processors&amp;diff=51070"/>
		<updated>2026-01-28T12:02:44Z</updated>

		<summary type="html">&lt;p&gt;Stefan Haubenthal: Stefan Haubenthal moved page Word processor to Word processors&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* ARROSCRIBE - Arro-Soft Systems&lt;br /&gt;
* AVERAGE BEAR WRITER - DaTaBioTics&lt;br /&gt;
* BA-WRITER - Paolo Bagnaresi&lt;br /&gt;
* BEYOND WORDWRITER - DaTaBioTics&lt;br /&gt;
* CHICKEN TEXT -&lt;br /&gt;
* COMPANION - Intelpro (Dr. Allan Swett)&lt;br /&gt;
* CONSOLE WRITER - Navarone Industries&lt;br /&gt;
* DESKTOP PUBLISHING - DaTaBioTics (Galen Read)&lt;br /&gt;
* DCEB WORD PROCESSOR - DC Software Writers (Home Computer Digest Nov/Dec 1984, p.23)&lt;br /&gt;
* DIRECT WRITER I and II - Dynamic Data and Devices&lt;br /&gt;
* EASYWRITE (aka TI-YPWRITER) NSY Software&lt;br /&gt;
* [[Funnelweb]] - Tony and Will McGovern&lt;br /&gt;
* FUTURA WORD PROCESSOR - Ehninger and Associates&lt;br /&gt;
* HEBREW TYPEWRITER - Micro-Melamed&lt;br /&gt;
* LETTER WRITER - Bizware&lt;br /&gt;
* LETTERIGHTER - IRON Software&lt;br /&gt;
* MAGIC MEMORY - DaTaBioTics (aka TI Workshop)&lt;br /&gt;
* MINI-EDITOR - Advanced Software&lt;br /&gt;
* MINI-WRITER - Model Masters&lt;br /&gt;
* MINIWRITER II+, III+ - DaTaBioTics&lt;br /&gt;
* MISSING LINK - Mid-West Engineering&lt;br /&gt;
* PAGEWRITER 99 - VMC Software&lt;br /&gt;
* R. ROY&amp;#039;S WORDMASTER - KCR Software&lt;br /&gt;
* SUPERWRITER - Morning Star Software (CP/M Card Required)&lt;br /&gt;
* TEX T.A.L. - Vaughn Software&lt;br /&gt;
* TEX-SCRIBE - David G. Brader (99er Magazine)&lt;br /&gt;
* TEX-SCRIBER - Tex-Soft&lt;br /&gt;
* TEX-WRITER - Soft-Tex&lt;br /&gt;
* TEXT/99 - Letcher Offshore Design&lt;br /&gt;
* TEXTIGER I and II - Patio Pacific (Fred McCarty)&lt;br /&gt;
* TEXTRIGHTER I - Arro-Soft Systems&lt;br /&gt;
* [[TI-Writer]] - Texas Instruments&lt;br /&gt;
* TI PROCESSOR - TISOFT&lt;br /&gt;
* TI WORD PROCESSOR - James D. Baker&lt;br /&gt;
* TI WORKSHOP - DaTaBioTics (aka Magic Memory)&lt;br /&gt;
* TK WRITER - Tom Knight (an XB loader for TI-Writer)&lt;br /&gt;
* TURTLE TEXT - Roger B. Kirchner (LOGO program)&lt;br /&gt;
* TYPWRITER - Extended Software (Jim Schwaller and Larry Morrow)&lt;br /&gt;
* W.O.R.D. WRITER - W.O.R.D.&lt;br /&gt;
* WORD PROCESSOR - Harrison Software&lt;br /&gt;
* WORDSMITH - Emerald Graphic Systems&lt;br /&gt;
* WORDMASTER I, II&lt;br /&gt;
* WORDWRITER - DaTaBioTics (Todd Kaplan)&lt;br /&gt;
* WORDWRITER+ - DaTaBioTics&lt;br /&gt;
* WORDWRITER XTRA - DaTaBioTics&lt;br /&gt;
* WORTEX - Amnion Stoneware (Dr. Guy Stafan-Romano)&lt;br /&gt;
* WRITEREASE - CorComp (Galen Read)&lt;br /&gt;
&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Stefan Haubenthal</name></author>
	</entry>
	<entry>
		<id>http://www.ninerpedia.org/index.php?title=TIX&amp;diff=51069</id>
		<title>TIX</title>
		<link rel="alternate" type="text/html" href="http://www.ninerpedia.org/index.php?title=TIX&amp;diff=51069"/>
		<updated>2026-01-28T12:01:12Z</updated>

		<summary type="html">&lt;p&gt;Stefan Haubenthal: Category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Qix like game.&lt;br /&gt;
&lt;br /&gt;
https://github.com/Rasmus-M/tix&lt;br /&gt;
&lt;br /&gt;
[[Category:Module]]&lt;br /&gt;
[[Category:Disk]]&lt;br /&gt;
[[Category:32K]]&lt;/div&gt;</summary>
		<author><name>Stefan Haubenthal</name></author>
	</entry>
	<entry>
		<id>http://www.ninerpedia.org/index.php?title=TI_Forth&amp;diff=51068</id>
		<title>TI Forth</title>
		<link rel="alternate" type="text/html" href="http://www.ninerpedia.org/index.php?title=TI_Forth&amp;diff=51068"/>
		<updated>2026-01-28T12:00:37Z</updated>

		<summary type="html">&lt;p&gt;Stefan Haubenthal: Category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;TI FORTH is supplied on a floppy disk and requires a disk system, 32k, and EITHER Editor/Assembler OR Extended Basic .... (separate disk for ExBas version).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You receive your disk with TI FORTH on it.&lt;br /&gt;
&lt;br /&gt;
FIRST: Copy the disk, using your Disk Manager module (read the note below)&lt;br /&gt;
&lt;br /&gt;
TI&amp;#039;s DISK MANAGER I module could very happily copy Forth disks, but unfortunately Disk Manager 2 does not: after &amp;quot;copying&amp;quot; with TI Disk Manager 2, you must then use Forth itself to copy Screens 1 to 9. To do this use:&lt;br /&gt;
&lt;br /&gt;
 Insert master disk in drive 1&lt;br /&gt;
 Type&lt;br /&gt;
1 BLOCK UPDATE 2 BLOCK UPDATE 3 BLOCK UPDATE 4 BLOCK UPDATE 5 BLOCK UPDATE&lt;br /&gt;
 Now insert &amp;quot;copied&amp;quot; disk:&lt;br /&gt;
 FLUSH&lt;br /&gt;
Now insert &amp;#039;master&amp;#039; disk: 6 BLOCK UPDATE 7 BLOCK UPDATE 8 BLOCK UPDATE 9 BLOCK UPDATE&lt;br /&gt;
 Insert &amp;#039;copied&amp;#039; disk:&lt;br /&gt;
 FLUSH.&lt;br /&gt;
&lt;br /&gt;
OR use Forth entirely:&lt;br /&gt;
&lt;br /&gt;
Master disk in Drive 2, blank initialised disk in Drive 1:&lt;br /&gt;
  0 DISK_LO ! FORTH-COPY&lt;br /&gt;
 (assumes -COPY has been loaded)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note the TI supplied disk is Single Sided Single Density (90k). TI Forth as supplied assumes you are using 90k disk drives.&lt;br /&gt;
&lt;br /&gt;
If you use double sided drives, initialise the copy disk as SINGLE sided: the double sided header is larger and makes a mess of the Forth screens. Later on maybe we&amp;#039;ll go over formatting JUST the second side for your program screens... clever is Forth!&lt;br /&gt;
&lt;br /&gt;
Now, put the original disk in a safe place!&lt;br /&gt;
&lt;br /&gt;
==System Disk==&lt;br /&gt;
&lt;br /&gt;
The SYSTEM DISK carries most of the FORTH language on its files &amp;quot;FORTH SCREENS&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
It is a feature of FORTH that it rewrites the disk files, and it is easy to accidentally overwrite your system disk! So don&amp;#039;t do ANYTHING until you have a nice safe copy!&lt;br /&gt;
&lt;br /&gt;
 Now...&lt;br /&gt;
 Editor Assembler: Select &amp;quot;LOAD AND RUN&amp;quot;, File name is: DSK1.FORTH&lt;br /&gt;
 or&lt;br /&gt;
 EXTENDED BASIC: Put the disk in the drive and select ExBas.  &lt;br /&gt;
                 Autoload takes care of the rest.&lt;br /&gt;
&lt;br /&gt;
You will see the message &amp;#039;Booting Forth&amp;#039;, followed by a menu of options, and after a short delay, a cursor will appear.&lt;br /&gt;
&lt;br /&gt;
A menu will appear: only the &amp;#039;kernel&amp;#039; of Forth has been loaded. &lt;br /&gt;
&lt;br /&gt;
To use Forth, you must select portions from the menu: the more you load the less memory is free for your program.&lt;br /&gt;
&lt;br /&gt;
We will use the menu to create a &amp;#039;custom&amp;#039; Forth which loads pretty quickly...&lt;br /&gt;
&lt;br /&gt;
Note as you use these Menu options just how slowly they function!&lt;br /&gt;
&lt;br /&gt;
Fortunately, we can load our desired selection, then BSAVE the whole lot, to be BLOADed when required, in one piece, quickly!&lt;br /&gt;
&lt;br /&gt;
===Screen Dump===&lt;br /&gt;
Now, the SCREEN DUMP is located on SCREEN 72, and may not be suitable for your printer. Lets have a look ....&lt;br /&gt;
&lt;br /&gt;
In order to EDIT screen 72, we need to load an editor. Choose EITHER the 40 column editor (-EDITOR) or the 64 column editor (-64SUPPORT) &lt;br /&gt;
 (NOTE: To start with do not use the 64 column editor, &lt;br /&gt;
 see note towards the end of this article).&lt;br /&gt;
 To load these just key in the name, with the dash &lt;br /&gt;
 in front, and press ENTER.&lt;br /&gt;
&lt;br /&gt;
 Now when the cursor reappears, type in 72 EDIT [enter]&lt;br /&gt;
 Screen 72 will be loaded and will appear on screen.&lt;br /&gt;
 As supplied, screen 72 is set up for RS232. &lt;br /&gt;
 If you use PIO, make the following changes:&lt;br /&gt;
 Line 2: Change &amp;gt;RS232 to &amp;gt;PIO&lt;br /&gt;
 Line 3: Change &amp;gt;RS232 to &amp;gt;PIO&lt;br /&gt;
 Line 4: Set the string to the actual file name used &lt;br /&gt;
 by your printer, that is &amp;quot; PIO&amp;quot; or &amp;quot; PIO.CR&amp;quot; and so on.&lt;br /&gt;
 Remember the single space after the first quotes!!!!! &lt;br /&gt;
     (quote, space, PIO, quote)&lt;br /&gt;
Check the screen: some versions have a typing error from TI! lf you see the word PAB_ADDR, you must change it to PAB-ADDR.&lt;br /&gt;
&lt;br /&gt;
 Now press FCTN 9 (BACK) to return the cursor to the bottom of the screen.&lt;br /&gt;
&lt;br /&gt;
 Now we write the amended screen to disk by typing FLUSH [enter]&lt;br /&gt;
&lt;br /&gt;
 Let&amp;#039;s make sure everything really is been cleared out: type in COLD [enter]&lt;br /&gt;
 and when the cursor reappears, EMPTY-BUFFERS [ENTER]&lt;br /&gt;
&lt;br /&gt;
===Custom Forth Disk===&lt;br /&gt;
We are ready to customise FORTH.&lt;br /&gt;
&lt;br /&gt;
As a beginning we will need to boot most of Forth...&lt;br /&gt;
&lt;br /&gt;
This is MY selection.&lt;br /&gt;
 Type EMPTY-BUFFERS [enter]&lt;br /&gt;
 Now type in, on one line:&lt;br /&gt;
 -PRINT -COPY -VDPMODES -BSAVE [enter]&lt;br /&gt;
 Thats the essential FORTH.&lt;br /&gt;
&lt;br /&gt;
When the disk stops at last and the cursor reappears, let&amp;#039;s put a marker flag in there: type in:&lt;br /&gt;
  : FLAG1 ; [enter]&lt;br /&gt;
    (colon, space, FLAG1, semicolon .... then [enter]&lt;br /&gt;
&lt;br /&gt;
 A bit more Forth: type in, on one line:&lt;br /&gt;
  -GRAPH -DUMP -FLOAT [enter]&lt;br /&gt;
 &lt;br /&gt;
  Now another flag. Type in&lt;br /&gt;
   : FLAG2 ; [enter]&lt;br /&gt;
&lt;br /&gt;
and finally, your choice of editor, either -64SUPPORT (see note) or -EDITOR [enter]&lt;br /&gt;
&lt;br /&gt;
Thats almost everything you are likely to need.&lt;br /&gt;
&lt;br /&gt;
Lets save it! To save EVERYTHING in memory, and to locate it on the disk from&lt;br /&gt;
screen 51 onwards (deleting what was previously on those screens!!!!:&lt;br /&gt;
 Type in:&lt;br /&gt;
  &amp;#039; TASK 51 BSAVE [enter] &lt;br /&gt;
  The first character there is a FCTN O, a single quote.&lt;br /&gt;
&lt;br /&gt;
When the BSAVE has ended, you need to amend the &amp;quot;BOOT&amp;quot; screen, screen 3, to&lt;br /&gt;
BLOAD your binary image.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===New BOOT screen to load the new system disk===&lt;br /&gt;
  Type in 3 EDIT [enter] &lt;br /&gt;
and adjust your screen 3 to look something like this:&lt;br /&gt;
  SCR #3&lt;br /&gt;
  0 ( WELCOME SCREEN )&lt;br /&gt;
  1 BASE-&amp;gt;R HEX 10 SYSTEM ( Clears Screen )&lt;br /&gt;
  2 0 0 GOTOXY .&amp;quot; Loading TI Forth &amp;quot; CR 10 83C2 C! ( Quit Off )&lt;br /&gt;
  3 DECIMAL 51 BLOAD 16 SYSTEM MENU&lt;br /&gt;
  4 1 VDPMDE !&lt;br /&gt;
  5 0 DISK_LO !&lt;br /&gt;
  6&lt;br /&gt;
  7 180 DISK_HI !&lt;br /&gt;
  8&lt;br /&gt;
  9 : FREE SP@ HERE - . ;&lt;br /&gt;
  10&lt;br /&gt;
  11 : PAGE 0 0 GOTOXY CLS ;&lt;br /&gt;
  12&lt;br /&gt;
  13 -6392 FENCE !&lt;br /&gt;
  14&lt;br /&gt;
  15 R-&amp;gt;BASE&lt;br /&gt;
&lt;br /&gt;
When copying, omit for the time being the FENCE line! See below...&lt;br /&gt;
&lt;br /&gt;
Thats my WELCOME screen.&lt;br /&gt;
&lt;br /&gt;
====Explanation of bew Boot screen====&lt;br /&gt;
180 DISK_HI ! on this screen sets the system up for two single sided drives&lt;br /&gt;
180 DISK_SIZE 9 on this screen sets up for one or more double sided drives&lt;br /&gt;
360 DISK_HI ! on this screen sets up for two double sided drives.&lt;br /&gt;
The EXCLAMATION MARK (! is important here!)&lt;br /&gt;
DISK_HI is the highest numbered screen, at the rate of 90 per single side.&lt;br /&gt;
DISK_SIZE is the number of screens per DISK.&lt;br /&gt;
&lt;br /&gt;
FREE will allow you to obtain the free memory at any time just by keying&lt;br /&gt;
FREE.&lt;br /&gt;
&lt;br /&gt;
PAGE will at any time clear the screen and home the cursor.&lt;br /&gt;
&lt;br /&gt;
Once you have set up your screen three, as above or adjusted for your disk&lt;br /&gt;
system, FLUSH it for the time being ..........&lt;br /&gt;
&lt;br /&gt;
Press FCTN 9 (BACK) then enter FLUSH [enter]&lt;br /&gt;
&lt;br /&gt;
One more step (about fences):&lt;br /&gt;
&lt;br /&gt;
In Forth you can FORGET the basic Forth words, such as +... and in the course&lt;br /&gt;
of doing so, FORGET everything above it in memory, which can be quite drastic.&lt;br /&gt;
FORTH allows you to place a FENCE which prevents you FORGETting important&lt;br /&gt;
things.&lt;br /&gt;
&lt;br /&gt;
Having FLUSHed  page 3, if you type &amp;#039; PAGE . then you will receive a helpful ?.&lt;br /&gt;
&lt;br /&gt;
This is because our new word PAGE is not yet in memory, we need to LOAD it!&lt;br /&gt;
&lt;br /&gt;
To get our new page 3 in memory for the next step,  &lt;br /&gt;
 we now need to type EMPTY-BUFFERS&lt;br /&gt;
 and then     3 LOAD&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Let&amp;#039;s see where the top word in the COMMAND STACK is:&lt;br /&gt;
 Type in &amp;#039; PAGE . [enter]&lt;br /&gt;
  (single quote, space, PAGE, space, full stop, [enter] )&lt;br /&gt;
&lt;br /&gt;
The number printed is where we want to put the FENCE, &lt;br /&gt;
so again type 3 EDIT&lt;br /&gt;
Add to the end of the screen (as above)&lt;br /&gt;
 [number] FENCE !&lt;br /&gt;
 and FLUSH the screen to disk as before.&lt;br /&gt;
&lt;br /&gt;
Now... cover the write protect tab!!! And your disk is all ready.&lt;br /&gt;
&lt;br /&gt;
To see how quickly FORTH now loads, type in COLD again.&lt;br /&gt;
&lt;br /&gt;
====Screens still available====&lt;br /&gt;
It is always a good idea to keep your boot disk separate to your own programs, but if you do need to place any new screens on it, there are a few that you can use still.&lt;br /&gt;
&lt;br /&gt;
Our fairly full Forth BSAVE took up from screen 51 to screen 61.&lt;br /&gt;
 The following screens cannot then be used for our programs:&lt;br /&gt;
 0/5 : Used by the system &lt;br /&gt;
 44 : TRACE ( not Bsaved. You may want to load it later)&lt;br /&gt;
 51/61 : Our Bsaved area! &lt;br /&gt;
 68/71 : FILE ( not Bsaved. May wish to use it later)&lt;br /&gt;
 74/75 : Code and Assembler. ( not Bsaved. May wish to use it later)&lt;br /&gt;
 88 : CRU ( not Bsaved. May wish to use it later)&lt;br /&gt;
&lt;br /&gt;
The Forth loading program which contains the &amp;quot;kernel&amp;quot; of Forth is held on Screens 5 to 21. You can use a small number of screens on spare disks to have most of Forth on it and lots of rooms for your programs.&lt;br /&gt;
&lt;br /&gt;
They will have almost all of TI Forth on them to draw on. Then the other screens are available for you to use. Add any of the above screens as you need them.&lt;br /&gt;
&lt;br /&gt;
 Copy with SCOPY or SMOVE screens 0 to 21 (Kernel) and 51 to 61 (BSaved).&lt;br /&gt;
&lt;br /&gt;
If you have loaded EDITOR into the Bsaved portion, you may wish to retain the 64Support on your disk: it is on screens 22 to 29&lt;br /&gt;
&lt;br /&gt;
If you have used 64Support in your Bsaved version, then you may wish to retain the 40 column EDITOR which is on screens 34 to 38.&lt;br /&gt;
&lt;br /&gt;
ALL other screens are in the Bsaved portion!  Screens 0 to 5 remain used by the system. Screens 4 and 5 contain the error messages.&lt;br /&gt;
&lt;br /&gt;
===Errata===&lt;br /&gt;
Various sources have form time to time indicated flaws in the original version of TI Forth released by Texas Instruments. Because all of Forth can be rewritten debugging is merely a question of opening the page with the faulty code, amending it, and saving it.&lt;br /&gt;
&lt;br /&gt;
Unfortunately none of the amendments below can be said to be &amp;quot;official&amp;quot;, so before making them, do keep a record of any changes you make in case you need to remove them. And keep a copy of the original disk somewhere safe. Just in case.&lt;br /&gt;
&lt;br /&gt;
====Screens 58 and 59 - Sprites====&lt;br /&gt;
The Sprite definitions may have been a semi-official correction:&lt;br /&gt;
&lt;br /&gt;
Check your disks - use 58 LIST then 59 LIST.&lt;br /&gt;
&lt;br /&gt;
Look at the dates at the top of the page. what year? If 1982, you need to make the following amendments:&lt;br /&gt;
&lt;br /&gt;
 Type 58 EDIT.&lt;br /&gt;
 Change line 10 (part of SSDT definition):&lt;br /&gt;
 formerly: ... 80 0 VFILL ENDIF&lt;br /&gt;
 to become:... 80 0 VFILL 300 ! SATR ! ENDIF&lt;br /&gt;
Use FCTN 9 [back] and when back at the bottom of the screen (having removed the disk write protect tab!) type FLUSH. &lt;br /&gt;
&lt;br /&gt;
 Type 59 EDIT, and make amendments as follows:&lt;br /&gt;
 Line 7 (part of SPRITE definition)&lt;br /&gt;
 formerly .... I 2 VMBW ENDIF ....&lt;br /&gt;
 to become: .. I 2 VMBW DROP ENDIF .... &lt;br /&gt;
 Line 9 (part of MOTION definition:)&lt;br /&gt;
 Formerly: ... + &amp;gt;R 100 U* DROP + SP@ ...&lt;br /&gt;
 to become: .. + &amp;gt;R 8 SLA SWAP 00FF AND OR SP@ ...&lt;br /&gt;
 Use BACK and FLUSH to disk.&lt;br /&gt;
To be really efficient, you may wish to change the dates on the screens from 1982 to 2OOCT83!!!&lt;br /&gt;
&lt;br /&gt;
==Print a SCREEN==&lt;br /&gt;
 To PRINT a single screen, type in:&lt;br /&gt;
 SWCH 3 LIST UNSWCH &lt;br /&gt;
  to list screen 3 in this case.&lt;br /&gt;
&lt;br /&gt;
==List WORDS available==&lt;br /&gt;
&lt;br /&gt;
To see a list of words available to you, type in VLIST [enter]&lt;br /&gt;
 &lt;br /&gt;
Hold SPACE to halt the scrolling!&lt;br /&gt;
&lt;br /&gt;
==Entering lines in TI Forth==&lt;br /&gt;
&lt;br /&gt;
SPACES are IMPORTANT. If I show a space, put one in!&lt;br /&gt;
&lt;br /&gt;
First, mark the beginning of the memory area you are about to use:&lt;br /&gt;
ENTER:&lt;br /&gt;
  : ME ; (that is: COLON,SPACE,ME,SPACE,SEMI COLON, then ENTER)&lt;br /&gt;
&lt;br /&gt;
The word ok will appear, then the cursor will come back.&lt;br /&gt;
&lt;br /&gt;
This is quite important. Every word you define in FORTH is entered into memory.&lt;br /&gt;
 &lt;br /&gt;
If you use FORGET ME, the definition of ME is removed AND EVERY WORD DEFINED&lt;br /&gt;
AFTERNARDS. This can avoid annoying warning messages!&lt;br /&gt;
&lt;br /&gt;
Putting that blank definition of ME at the start of your work is a useful way&lt;br /&gt;
of scrubbing definitions.&lt;br /&gt;
&lt;br /&gt;
==Multiple definitions of words==&lt;br /&gt;
Now that ME is in the library, lets experiment with multiple definitions):&lt;br /&gt;
  ENTER : PRINT 4 . ;   (Do type in the colon after ENTER) &lt;br /&gt;
  then ENTER : PRINT 5 , ;&lt;br /&gt;
The computer obtained a warning message from the disk: note it and continue:&lt;br /&gt;
&lt;br /&gt;
ENTER : PRINT 6 , ;&lt;br /&gt;
this time the warning message is brought from memory!&lt;br /&gt;
&lt;br /&gt;
Now what does the word PRINT do? Let&amp;#039;s try it: &lt;br /&gt;
   ENTER PRINT&lt;br /&gt;
   Hmmm. It has the LAST definition we put in!&lt;br /&gt;
   ENTER FORGET PRINT&lt;br /&gt;
&lt;br /&gt;
ENTER PRINT now it has the 2nd to last definition!&lt;br /&gt;
&lt;br /&gt;
You are warned if you redefine a word, but the new definition is the one that&lt;br /&gt;
will be used. If you FORGET the word, the previous definition now becomes&lt;br /&gt;
current, and so on. You can have a full stack of definitions of PRINT, and then&lt;br /&gt;
delete them backwards!&lt;br /&gt;
&lt;br /&gt;
You can even redefine basic FORTH words such as +, so be very careful! To check&lt;br /&gt;
to see if a word is already in FORTH, key in:&lt;br /&gt;
   &amp;#039; WORD .&lt;br /&gt;
and if an address is printed, the word is in there already. &lt;br /&gt;
&lt;br /&gt;
Redefining words is considered bad practice!!!!&lt;br /&gt;
&lt;br /&gt;
==Multiple markers==&lt;br /&gt;
Using ME as the first defined word, (we could have used AUDREY or anything else), we can still use ME to place another marker on the stack, and delete first the second section with FORGET ME, then delete the first section with another FORGET ME!&lt;br /&gt;
&lt;br /&gt;
==How to QUIT==&lt;br /&gt;
HOW do you return to the title screen, as QUIT does not work? &lt;br /&gt;
&lt;br /&gt;
If you have loaded -SYNONYMS (or either Editor or any Graphics mode or -FLOAT) then you have access to the Forth word MON. To return to the main TI screen just type in MON and press ENTER.&lt;br /&gt;
&lt;br /&gt;
==Using SOUND in TI Forth==&lt;br /&gt;
We need to define a sound command, then we can use it.  The following screen is appropriate and sets up a Forth word CALLSOUND (no space!) which will take 3 values from the stack.&lt;br /&gt;
&lt;br /&gt;
ONE VOICE ONLY.&lt;br /&gt;
&lt;br /&gt;
 Screen:&lt;br /&gt;
 0 ( CALL SOUND ROUTINE FOR ONE VOICE APRIL 85 SJS )&lt;br /&gt;
 1 ( USES VDP AREA 14336 TO 14345 )&lt;br /&gt;
 2 ( duration in ms. volume 0-30, frequency CALLSOUND --- )&lt;br /&gt;
 3 : SINIT -31747 C@ 1 OR -31747 C! 3 14336 VSBW ;&lt;br /&gt;
 4 : FREQ S-&amp;gt;F &amp;gt;F 111860.8 FSWAP F/ F-&amp;gt;S ;&lt;br /&gt;
 5 : BYTE1 DUP 16 MOD 128 + 14337 VSBW ;&lt;br /&gt;
 6 : BYTE2 16 / 14338 VSBW ;&lt;br /&gt;
 7 : VOL 2 / 144 + 14339 VSBW ;&lt;br /&gt;
 8 : DUR SINIT FREQ BYTE1 BYTE2 VOL 20 / 14340 VSBW ;&lt;br /&gt;
 9 : SIL 3 14341 VSBW 159 14342 VSBW 191 14343 VSBW 223 14344 VSBW&lt;br /&gt;
 10 0 14345 VSBW ;&lt;br /&gt;
 11 : PLAY 56 -31796 C! 0 -31795 C! 1 -31794 C! ;&lt;br /&gt;
 12 : CALLSOUND DUR SIL PLAY ;&lt;br /&gt;
 13 CR .&amp;quot; ONE VOICE WORDS LOADED &amp;amp; AVAILA8LE&amp;quot;&lt;br /&gt;
&lt;br /&gt;
To emulate CALL SOUND, I have placed data into VDP RAM as a sound table, then told the computer to play it.&lt;br /&gt;
&lt;br /&gt;
The CALLSOUND requires three values on the stack, N1 N2 and N3, where N1= duration in milliseconds, N2=volume O-30, N3=frequency in cycles per second.&lt;br /&gt;
 eg: 600 2 220 CALLSOUND &lt;br /&gt;
&lt;br /&gt;
The operation of the CALLSOUND is the same as a Basic Call Sound using a NEGATIVE duration: a second use will cut short any sound still in progress.&lt;br /&gt;
&lt;br /&gt;
If you wish to use an equivalent to a positive call sound. you need to test VDP Location -31794. This becomes zero when the sound has stopped. C@ is used to place the value in this location onto the stack.&lt;br /&gt;
&lt;br /&gt;
SINIT tells the computer the sound information is to be stored in VDP RAM. Note the use of C@. We then tell it that we are passing three values.&lt;br /&gt;
&lt;br /&gt;
FREQ took a few seconds to develop, and together with BYTE1 and BYTE2, translates the frequency in cycles per second which you have put on the stach into the two values the computer wants. We switch the top stack value (frequency) to a floating point number, then input a floating point number. Then we swap these two floating point numbers on the stack, so that the frequency input is again on the top. Then we divide,and change the result to a single precision number.&lt;br /&gt;
&lt;br /&gt;
SIL is placed at the end of the VDP data to switch the sound off after the input duration.&lt;br /&gt;
&lt;br /&gt;
Forth equivalents of Extended Basic commands: VSBW is the same as CALL POKEV;  C! = CALL LOAD;  C@ = CALL PEEK&lt;br /&gt;
&lt;br /&gt;
==Using SPEECH in TI Forth==&lt;br /&gt;
We need two screens of code to define the required Forth commands. You need the Speech Synthesiser attached. At the end of the first screen you will see --&amp;gt; which instructs Forth that the first screen is followed by the second screen, so when loading these screens you only need to tell it to load the first.&lt;br /&gt;
&lt;br /&gt;
Some sample words have been included but you can extend or modify the vocabulary by referring to the Editor/Assembler manual.&lt;br /&gt;
&lt;br /&gt;
You only need to LOAD the first screen, the --&amp;gt; automatically LOADs the next screen, after a pause.  When LOADing is complete the computer will say READY TO START.  You may then use any of the defined words in these two screens to generate speech.&lt;br /&gt;
&lt;br /&gt;
 For instance, if you key in (or use in a definition):&lt;br /&gt;
  _I AM _A TEXAS_INSTRUMENTS NINETY #9 #4 _A COMPUTER &lt;br /&gt;
  that is just what the computer will say!&lt;br /&gt;
&lt;br /&gt;
Note the underlines in front of I and A and between TEXAS and INSTRUMENTS.&lt;br /&gt;
&lt;br /&gt;
 ( SPEECH WORDS 9TH APRIL 1985 SJS) CR .&amp;quot; LOADING WORDS .... &amp;quot;&lt;br /&gt;
 : M -27648 C! ; : SE 64 M 80 M ;&lt;br /&gt;
 : THAT_IS_INCORRECT 70 M 65 M 72 M 70 M SE ;&lt;br /&gt;
 : THAT_IS_RIGHT 78 M 79 M 72 M 70 M SE ;&lt;br /&gt;
 : READY_TO_START 67 M 75 M 70 M 69 M SE ;&lt;br /&gt;
 : TEXAS_INSTRUMENTS 70 M 73 M 70 M 70 M SE ;&lt;br /&gt;
 : WHAT_WAS_THAT 73 M 78 M 71 M 71 M SE ;&lt;br /&gt;
 : NEGATIVE 76 M 77 M 72 M 68 M SE ;&lt;br /&gt;
 : POINT 76 M 78 M 64 M 69 M SE ; : #1 73 M 64 M 68 M 65 M SE ;&lt;br /&gt;
 : #3 74 M 73 M 68 M 65 M SE : : #5 65 M 67 M 69 M 65 M SE ;&lt;br /&gt;
 : #7 72 M 78 M 69 M 65 M SE ; : #9 68 M 70 M 70 M 65 M SE ;&lt;br /&gt;
 : POSITIVE 67 M 75 M 65 M 69 M SE ; : #0 67 M 76 M 67 M 65 M SE&lt;br /&gt;
 ; : #2 76 M 69 M 68 M 65 M SE ; : #4 71 M 78 M 68 M 65 M SE ;&lt;br /&gt;
 : #6 72 M 74 M 69 M 65 M SE ; : #8 71 M 67 M 70 M 65 M SE ;&lt;br /&gt;
 : ANSWER 67 M 65 M 73 M 65 M SE ;&lt;br /&gt;
 --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 ( SPEECH WORDS PART TWO APRIL 85 SJS )&lt;br /&gt;
 : ABOUT 68 M 65 M 71 M 65 M SE ; : FOURTH 73 M 65 M 77 M 66 M SE&lt;br /&gt;
 ; : AM 64 M 67 M 72 M 65 M SE ; : _A 68 M 78 M 70 M 65 M SE ;&lt;br /&gt;
 : WORKING 76 M 75 M 75 M 71 M SE ; : PLEASE 67 M 73 M 64 M 69 M&lt;br /&gt;
 SE ; : PRESS 65 M 67 M 66 M 69 M SE ; : PRINTER 74 M 74 M 66 M&lt;br /&gt;
 69 M SE ; : NICE_TRY 69 M 74 M 73 M 68 M SE ; : NINETY 78 M 68 M&lt;br /&gt;
 74 M 68 M SE ; : DISK 77 M 66 M 68 M 66 M SE ; : _ERROR 79 M 78&lt;br /&gt;
 M 72 M 66 M SE ; : HELLO 74 M 65 M 69 M 67 M SE ; : MEMORY 69 M&lt;br /&gt;
 64 M 68 M 68 M SE ; : UHOH 68 M 79 M 65 M 71 M SE ; : SORRY 70&lt;br /&gt;
 M 76 M 65 M 70 M SE ; : TRY_AGAIN 79 M 64 M 64 M 71 M SE ; : LEF&lt;br /&gt;
 T 72 M 71 M 78 M 67 M SE ; : GOOD 70 M 77 M 64 M 67 M SE ; : SHO&lt;br /&gt;
 ULD 68 M 66 M 79 M 69 M SE ; : YOU 78 M 75 M 65 M 71 M SE ;&lt;br /&gt;
 : COMPUTER 68 M 67 M 64 M 66 M SE ; : IS 66 M 67 M 74 M 67 M SE&lt;br /&gt;
 ; : IT 74 M 71 M 74 M 67 M SE ; : PROBLEM 73 M 79 M 66 M 69 M SE&lt;br /&gt;
 ; : SAID 65 M 74 M 74 M 69 M SE ; : _I 67 M 73 M 71 M 67 M SE ;&lt;br /&gt;
  : HELP 65 M 71 M 69 M 67 M SE ; READY_TO_START &lt;br /&gt;
&lt;br /&gt;
#5 defines the spoken word 5 and so on. Because we have defined AM and IT for example as words to be spoken, you cannot then use the words AM or IT as another command or as a variable.&lt;br /&gt;
&lt;br /&gt;
==Notes==&lt;br /&gt;
FORTH is a useful language, as you are able to experiment with the stacks without having to actually enter and run a program. It is very like LOGO in this respect.&lt;br /&gt;
&lt;br /&gt;
These simple tests have been in &amp;#039;direct mode&amp;#039;, we have not stored a program yet, merely tried defining some simple words.&lt;br /&gt;
&lt;br /&gt;
That is the strength of FORTH: If a command you want does not exist, you can define it in terms of existing commands, and build up your own powerful vocabulary.&lt;br /&gt;
&lt;br /&gt;
===Entering a FORTH program===&lt;br /&gt;
To enter a program onto a Forth screen, if you wish to use say Screen 15, type: 15 CLEAR 15 EDIT&lt;br /&gt;
&lt;br /&gt;
===Using Disk Drive 2===&lt;br /&gt;
If the disk is in drive two, the position of screen 15 is now called Screen 105!!! (eg add 90). FORTH only uses the disk number for the FORMAT command.&lt;br /&gt;
&lt;br /&gt;
When accessing screens you do so only by screen number. Disk one is 0-89, Disk two contains 90-189. .&lt;br /&gt;
&lt;br /&gt;
===Copying FORTH disks (SSSD)===&lt;br /&gt;
TI&amp;#039;s DISK MANAGER I module could very happily copy Forth disks, but unfortunately Disk Manager 2 does not: after &amp;quot;copying&amp;quot; with TI Disk Manager 2, you must then use Forth itself to copy Screens 1 to 9. To do this use:&lt;br /&gt;
&lt;br /&gt;
 Insert master disk in drive 1&lt;br /&gt;
 Type&lt;br /&gt;
1 BLOCK UPDATE 2 BLOCK UPDATE 3 BLOCK UPDATE 4 BLOCK UPDATE 5 BLOCK UPDATE&lt;br /&gt;
 Now insert &amp;quot;copied&amp;quot; disk:&lt;br /&gt;
 FLUSH&lt;br /&gt;
Now insert &amp;#039;master&amp;#039; disk: 6 BLOCK UPDATE 7 BLOCK UPDATE 8 BLOCK UPDATE 9 BLOCK UPDATE&lt;br /&gt;
 Insert &amp;#039;copied&amp;#039; disk:&lt;br /&gt;
 FLUSH.&lt;br /&gt;
&lt;br /&gt;
OR use Forth entirely:&lt;br /&gt;
&lt;br /&gt;
Master disk in Drive 2, blank initialised disk in Drive 1:&lt;br /&gt;
  0 DISK_LO ! FORTH-COPY&lt;br /&gt;
 (assumes -COPY has been loaded)&lt;br /&gt;
&lt;br /&gt;
===Copying Forth disks- DSDD===&lt;br /&gt;
Copying DOUBLE SIDED DOUBLE DENSITY FORTH:&lt;br /&gt;
&lt;br /&gt;
Initialise a disk DSDD and copy your Forth system disk as above  (NB: the initial system disk. not one with a BLOAD system on it)&lt;br /&gt;
&lt;br /&gt;
Now change Screen 3:&lt;br /&gt;
 360 DISK_SIZE !&lt;br /&gt;
 n DISK_HI ! [n=number of drives you have at 360 sectors]&lt;br /&gt;
Forth will now recognise your disk as having 360 screens (180 on each side).&lt;br /&gt;
FORTH-COPY however will continue to insist your drive only has 90 screens.... to amend FORTH-COPY you need to amend Screens 39,40,0,and 4.&lt;br /&gt;
&lt;br /&gt;
i. Edit Screen 39: Change 90 to 360, where it appears in DTEST and twice in FORTH-COPY.&lt;br /&gt;
&lt;br /&gt;
ii.Edit Screen 40:&lt;br /&gt;
 Line 3: Change 168 to 5A0&lt;br /&gt;
 Line 4: Change 944 to 1244&lt;br /&gt;
 Line 5: Replace line with:&lt;br /&gt;
 DUP 10 + 2028 SWAP ! DUP 12 + 0202 SWAP ! DUP 14 + 24 0 FILL&lt;br /&gt;
 Line 10: Change 165 to 59D&lt;br /&gt;
 Line 13: Change 4016 to C059&lt;br /&gt;
&lt;br /&gt;
Now edit Screen 33. and modify FORMAT-DISK to read:&lt;br /&gt;
 : FORMAT-DISK 1+ 514 33616 ! 18 SYSTEM ;&lt;br /&gt;
All that is left is to modify the header sectors. This is done with a little Forth program. Make sure the “copy” disk is in drive one.&lt;br /&gt;
&lt;br /&gt;
In immediate mode type in:&lt;br /&gt;
  HEX 0 DISK_LO !&lt;br /&gt;
  : DD 0 BLOCK UPDATE&lt;br /&gt;
  DUP A + 5A0 SWAP ! DUP C + 1244 SWAP !&lt;br /&gt;
  DUP 10 + 2028 SWAP ! DUP 12 + 202 SWAP !&lt;br /&gt;
  38 + C8 FF FILL 1 BLOCK UPDATE&lt;br /&gt;
  DUP E + 570 SWAP ! DUP 1C + 4D20 SWAP !&lt;br /&gt;
  DUP 1E + 5205 SWAP ! 20 + F059 SWAP !&lt;br /&gt;
 FLUSH ; DECIMAL DD&lt;br /&gt;
The new header is easily copied either by using FORTH-COPY or by copying Screens 0 and 1 onto future Forth disks.&lt;br /&gt;
&lt;br /&gt;
(from Jim Vincent)&lt;br /&gt;
&lt;br /&gt;
===16 SYSTEM is CLS===&lt;br /&gt;
Using 16 SYSTEM (decimal!) clears the screen, and you can see from screen 33 that the clear screen word CLS is defined in just this manner!  CLS takes up less room than 16 SYSTEM.&lt;br /&gt;
&lt;br /&gt;
===64SUPPORT===&lt;br /&gt;
note on -64SUPPORT:&lt;br /&gt;
If you load -64SUPPORT, ensure that -TEXT is loaded before you use it (-VDPMODES includes -TEXT We loaded -VDPMODES into our newly BLOADED Forth just before FLAG1 way up in this article)&lt;br /&gt;
&lt;br /&gt;
If -TEXT is not resident, you will not be able to leave the 64 column split screen. &lt;br /&gt;
&lt;br /&gt;
To change from the 64 column screen to normal, just back out with FCTN 9, then at the bottom of the screen enter the word TEXT [enter].&lt;br /&gt;
&lt;br /&gt;
===Taking input from keyboard===&lt;br /&gt;
&lt;br /&gt;
HOW DO YOU ENTER FROM THE KEYBOARD?&lt;br /&gt;
&lt;br /&gt;
Try using QUERY... for instance:&lt;br /&gt;
 : TEST QUERY MYSELF ;&lt;br /&gt;
If you run this word it will ask you to input something, then ask you again, and so on till you get tired of it. We have not inserted any means of escape so you will have to switch off. &lt;br /&gt;
 This is better:&lt;br /&gt;
 : TEST QUERY INTERPRET MYSELF ;&lt;br /&gt;
Now the computer will look at the word you type in when the cursor flashes and treat that word as a FORTH word to be executed. The word MYSELF used above merely repeats the word calling it, e.g. TEST&lt;br /&gt;
&lt;br /&gt;
Try typing in BEEP (if you have it loaded) or to fall out of the loop, ABORT.&lt;br /&gt;
&lt;br /&gt;
What happens if you type in an undefined word? Try it!&lt;br /&gt;
&lt;br /&gt;
====Entering a floating point number====&lt;br /&gt;
 : ENTFP ( --- f ) PAD 1+  DUP 20 EXPECT &lt;br /&gt;
       LEN SWAP 1- C! VAL FAC&amp;gt;   ; &lt;br /&gt;
&lt;br /&gt;
Explanation &lt;br /&gt;
The address of PAD+1 is placed on the stack- this is because VAL, perhaps contrary to what the Manual suggests, starts reading the entry at PAD+1. If you just used PAD, you would lose the first character, either the most significant digit, or perhaps a decimal point or a minus sign. &lt;br /&gt;
&lt;br /&gt;
20 EXPECT allows you to enter up to 20 digits... more than you may need but so what! &lt;br /&gt;
&lt;br /&gt;
VAL then converts the string to a floating point number. &lt;br /&gt;
&lt;br /&gt;
FAC&amp;gt; brings the floating point number on to the stack. &lt;br /&gt;
&lt;br /&gt;
If you want an integer number output, you could use  FAC-&amp;gt;S instead.&lt;br /&gt;
&lt;br /&gt;
===Something similar to CALL KEY===&lt;br /&gt;
Another useful word is KEY which is the equivalent of CALL KEY... but waits for a key to be pressed, then the key value appears on the stack for you to look at and perhaps use or DROP. Try:&lt;br /&gt;
 : TEST KEY EMIT MYSELF ;&lt;br /&gt;
which will form an endless loop!&lt;br /&gt;
&lt;br /&gt;
A closer equivalent to CALL KEY is one which scans the keyboard and moves on, leaving a value of 0 if no key is pressed:&lt;br /&gt;
 : TEST ?KEY IF EMIT MYSELF ELSE DROP MYSELF ENDIF ;&lt;br /&gt;
&lt;br /&gt;
Lets go back to that endless loop we started with... why not test for CLEAR (Break)? Try:&lt;br /&gt;
&lt;br /&gt;
 : TEST KEY ?TERMINAL IF ABORT ELSE EMIT MYSELF ENDIF ;&lt;br /&gt;
&lt;br /&gt;
The word MYSELF used above merely repeats the word calling it, e.g. TEST&lt;br /&gt;
&lt;br /&gt;
Take a look at the TEST above using ?KEY. The basic equivalent is:&lt;br /&gt;
 10 CALL KEY(O,K,S)&lt;br /&gt;
 20 IF S=0 THEN 10 ELSE PRINT CHRS(K) :: GOTO 10&lt;br /&gt;
&lt;br /&gt;
===TI Forth for-next loops===&lt;br /&gt;
Well, in Forth we have one important change to BASIC usage: you can only use two variables, called I and J.&lt;br /&gt;
&lt;br /&gt;
Let&amp;#039;s compare Basic to Forth... note that I and J are NOT interchangeable. J is only used when two loops are nested and J is always the OUTER loop counter&lt;br /&gt;
 FOR I=I TO 20&lt;br /&gt;
 PRINT &amp;quot;TI*MES&amp;quot;&lt;br /&gt;
 NEXT I&lt;br /&gt;
is:&lt;br /&gt;
 : TEST 21 1 DO .&amp;quot; TI*MES&amp;quot; CR LOOP ;&lt;br /&gt;
Note that 20 has to be 20+1=21 here!&lt;br /&gt;
&lt;br /&gt;
A little more difficulty then:&lt;br /&gt;
 FOR I=4 TO 16&lt;br /&gt;
 PRINT I&lt;br /&gt;
 NEXT I&lt;br /&gt;
becomes:&lt;br /&gt;
 : TEST 17 4 DO I 48 + EMIT CR LOOP ;&lt;br /&gt;
Assuming we are in DECIMAL base! &lt;br /&gt;
&lt;br /&gt;
We have to add 48 to I to obtain the ASCII of the character we wish to print. The ASCII of number 1 is 49. The I places the counter value on the stack, then we add the 48... ok? &lt;br /&gt;
&lt;br /&gt;
Now let&amp;#039;s get really tricky and use something else...&lt;br /&gt;
 FOR I=5 TO 21 STEP 4&lt;br /&gt;
 PRINT &amp;quot;STEP&amp;quot;&lt;br /&gt;
 NEXT I&lt;br /&gt;
is:&lt;br /&gt;
 : TEST 22 5 DO .&amp;quot; STEP&amp;quot; CR 4 +LOOP ;&lt;br /&gt;
&lt;br /&gt;
We have used +LOOP here, with the STEP immediately in front of it.&lt;br /&gt;
&lt;br /&gt;
Nested loops? No problem.&lt;br /&gt;
 FOR J=1 TO 6&lt;br /&gt;
 FOR I=4 TO 12&lt;br /&gt;
 PRINT J+I&lt;br /&gt;
 NEXT I&lt;br /&gt;
 NEXT J&lt;br /&gt;
&lt;br /&gt;
 : TEST 7 I DO 13 4 DO I J + . CR LOOP LOOP ;&lt;br /&gt;
and if you can follow THAT you are well on the way to understanding Forth control!&lt;br /&gt;
&lt;br /&gt;
Oh yes .... if you really don&amp;#039;t like using I, you can use R instead, &amp;#039;cos again they are completely interchangeable ....&lt;br /&gt;
&lt;br /&gt;
===Formatting Floppy Disks with TI Forth===&lt;br /&gt;
Want a blank SSSD floppy and don&amp;#039;t have Disk Manager?  &lt;br /&gt;
TI FORTH on its own can initialise a single sided single density drive as follows: &lt;br /&gt;
 Load FORTH and menu choices -COPY and -SYNONYMS.&lt;br /&gt;
 Place your disk to be formatted in disk drive number one.&lt;br /&gt;
 Type in: 0 FORMAT-DISK DISK-HEAD&lt;br /&gt;
&lt;br /&gt;
When FORTH has finished, the tracks have been laid down on the disk, and a header has been put on the disk for the Console to use: BUT the disk is full of a file called SCREENS, so, in Basic (or Ex Bas), type in:&lt;br /&gt;
 DELETE &amp;quot;DSK1.SCREENS&amp;quot; and you end up with a blank initialised SSSD disk.&lt;br /&gt;
&lt;br /&gt;
[[Category:Programming language]]&lt;br /&gt;
[[Category:Programming]]&lt;br /&gt;
[[Category:Disk]]&lt;br /&gt;
[[Category:32K]]&lt;/div&gt;</summary>
		<author><name>Stefan Haubenthal</name></author>
	</entry>
	<entry>
		<id>http://www.ninerpedia.org/index.php?title=Raycaster&amp;diff=51067</id>
		<title>Raycaster</title>
		<link rel="alternate" type="text/html" href="http://www.ninerpedia.org/index.php?title=Raycaster&amp;diff=51067"/>
		<updated>2026-01-28T11:59:20Z</updated>

		<summary type="html">&lt;p&gt;Stefan Haubenthal: Category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;First person shooter, work in progress. SAMS is required since September 18.&lt;br /&gt;
&lt;br /&gt;
https://github.com/Rasmus-M/raycaster&lt;br /&gt;
&lt;br /&gt;
[[Category:Speech]]&lt;br /&gt;
[[Category:AMS]]&lt;br /&gt;
[[Category:Disk]]&lt;br /&gt;
[[Category:Module]]&lt;br /&gt;
[[Category:32K]]&lt;/div&gt;</summary>
		<author><name>Stefan Haubenthal</name></author>
	</entry>
	<entry>
		<id>http://www.ninerpedia.org/index.php?title=Pyjamarama&amp;diff=51066</id>
		<title>Pyjamarama</title>
		<link rel="alternate" type="text/html" href="http://www.ninerpedia.org/index.php?title=Pyjamarama&amp;diff=51066"/>
		<updated>2026-01-28T11:58:42Z</updated>

		<summary type="html">&lt;p&gt;Stefan Haubenthal: Category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Port of ZX Spectrum&amp;#039;s Pyjamarama.&lt;br /&gt;
&lt;br /&gt;
https://github.com/Rasmus-M/pyjamarama&lt;br /&gt;
&lt;br /&gt;
[[Category:Module]]&lt;br /&gt;
[[Category:Disk]]&lt;br /&gt;
[[Category:32K]]&lt;/div&gt;</summary>
		<author><name>Stefan Haubenthal</name></author>
	</entry>
	<entry>
		<id>http://www.ninerpedia.org/index.php?title=Spreadsheets&amp;diff=51065</id>
		<title>Spreadsheets</title>
		<link rel="alternate" type="text/html" href="http://www.ninerpedia.org/index.php?title=Spreadsheets&amp;diff=51065"/>
		<updated>2026-01-28T11:51:46Z</updated>

		<summary type="html">&lt;p&gt;Stefan Haubenthal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* 99-CALC by Phil Barnes&lt;br /&gt;
* CONSOLE CALC (aka TI-PLANNER) by DataBiotics (Galen Read)&lt;br /&gt;
* COUNT-SIL by Systems Interface&lt;br /&gt;
* DELPLAN (aka HOMEPLAN) by Bob Delpit&lt;br /&gt;
* FREEFORM by Texas Instruments&lt;br /&gt;
* HOMEPLAN (aka DELPLAN) by Bob Delpit&lt;br /&gt;
* MINI-CALC by Advanced Software&lt;br /&gt;
* MINI-PLAN by Complete Software&lt;br /&gt;
* MITI-CALC by Milo Tsukroff&lt;br /&gt;
* [[Multiplan]] by Microsoft Corp.&lt;br /&gt;
* SNAP CALC by Gary Strauss&lt;br /&gt;
* SPREADSHEET by Peter Chalamish&lt;br /&gt;
* TI-99/4A CALC by Gregory Schmalhofer&lt;br /&gt;
* TI-CALC by Raymond J. Herrold&lt;br /&gt;
* TI-MINI-CALC by Orion Software&lt;br /&gt;
&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Stefan Haubenthal</name></author>
	</entry>
	<entry>
		<id>http://www.ninerpedia.org/index.php?title=Spreadsheet&amp;diff=51064</id>
		<title>Spreadsheet</title>
		<link rel="alternate" type="text/html" href="http://www.ninerpedia.org/index.php?title=Spreadsheet&amp;diff=51064"/>
		<updated>2026-01-28T11:50:24Z</updated>

		<summary type="html">&lt;p&gt;Stefan Haubenthal: Stefan Haubenthal moved page Spreadsheet to Spreadsheets&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Spreadsheets]]&lt;/div&gt;</summary>
		<author><name>Stefan Haubenthal</name></author>
	</entry>
	<entry>
		<id>http://www.ninerpedia.org/index.php?title=Spreadsheets&amp;diff=51063</id>
		<title>Spreadsheets</title>
		<link rel="alternate" type="text/html" href="http://www.ninerpedia.org/index.php?title=Spreadsheets&amp;diff=51063"/>
		<updated>2026-01-28T11:50:24Z</updated>

		<summary type="html">&lt;p&gt;Stefan Haubenthal: Stefan Haubenthal moved page Spreadsheet to Spreadsheets&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* 99-CALC by Phil Barnes&lt;br /&gt;
* CONSOLE CALC (aka TI-PLANNER) by DataBiotics (Galen Read)&lt;br /&gt;
* COUNT-SIL by Systems Interface&lt;br /&gt;
* DELPLAN (aka HOMEPLAN) by Bob Delpit&lt;br /&gt;
* FREEFORM by Texas Instruments&lt;br /&gt;
* HOMEPLAN (aka DELPLAN) by Bob Delpit&lt;br /&gt;
* MINI-CALC by Advanced Software&lt;br /&gt;
* MINI-PLAN by Complete Software&lt;br /&gt;
* MITI-CALC by Milo Tsukroff&lt;br /&gt;
* MULTIPLAN by Microsoft Corp.&lt;br /&gt;
* SNAP CALC by Gary Strauss&lt;br /&gt;
* SPREADSHEET by Peter Chalamish&lt;br /&gt;
* TI-99/4A CALC by Gregory Schmalhofer&lt;br /&gt;
* TI-CALC by Raymond J. Herrold&lt;br /&gt;
* TI-MINI-CALC by Orion Software&lt;br /&gt;
&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Stefan Haubenthal</name></author>
	</entry>
	<entry>
		<id>http://www.ninerpedia.org/index.php?title=Rock_runner&amp;diff=51062</id>
		<title>Rock runner</title>
		<link rel="alternate" type="text/html" href="http://www.ninerpedia.org/index.php?title=Rock_runner&amp;diff=51062"/>
		<updated>2026-01-28T11:46:44Z</updated>

		<summary type="html">&lt;p&gt;Stefan Haubenthal: Category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;ROCK RUNNER by Eric Lafortune&lt;br /&gt;
&lt;br /&gt;
Distributed by [[Asgard Software]]&lt;br /&gt;
&lt;br /&gt;
This game disk cost US$12.95 &lt;br /&gt;
&lt;br /&gt;
REQUIRES: Disk drive, 32k ram. Editor Assembler module (required to load the code) &lt;br /&gt;
&lt;br /&gt;
This is a quotation from the distributor, Asgard:&lt;br /&gt;
&lt;br /&gt;
&amp;quot;You are about to experience one of the most remarkable arcade qames ever written for the TI99/4A computer, and certainly the best new game for the TI in years. Not only is Rock Runner a qreat game, it is also a technical feat that pushes the 4a to the limits. Written on a cassette system with the minimemory module, Rock Runner utilizes a graphics mode never before seen in any other TI-99/4A or Geneve program- game or otherwise. &lt;br /&gt;
&lt;br /&gt;
Dubbed &amp;quot;half bitmap&amp;quot; this new Graphics mode mixes the color capabilities of bit map mode with the speed and flexibility of pattern mode graphics to allow an unprecedented anount of full colour animated graphics! &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Combine this with excellent sounds. beautiful animation, and fantastic action, and you get a game that puts to shame anything on the Atari, Nintendo. Commodore or anything on any other home computer. Rock Runner is a herculean effort, a stunning introduction to the work of this young author.&amp;quot; &lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
The object of Rock Runner is to move your character around the playing area usinq joystick 1 or 2, picking up a specific number of diamonds to enable you to move to the next level. The playing area scrolls in four directions and the total area is about nine times the visible screen area. &lt;br /&gt;
&lt;br /&gt;
As the character moves he digs a tunnel through which various monsters (from level two upwards) can persue him. His progress is also impeded by rocks which may fall on him if he tunnels beneath them. In later levels other obstacles are encountered (such as expanding acid pools) and you need to drop bombs and lay traps to destroy monsters which will then turn into the diamonds needed to progress to subsequent levels. &lt;br /&gt;
&lt;br /&gt;
If this isn&amp;#039;t enough to keep the adrenaline flowing, you are also fighting against a time factor. &lt;br /&gt;
&lt;br /&gt;
There are 15 levels and you may start at any level, which saves the boredom of repeating easier levels at future attempts. &lt;br /&gt;
&lt;br /&gt;
The accompanying instruction leaflet is more than adequate and even offers advice on strategy. &lt;br /&gt;
&lt;br /&gt;
http://www.lafortune.eu/rockrunner/&lt;br /&gt;
&lt;br /&gt;
[[Category:EA5]]&lt;br /&gt;
[[Category:Disk]]&lt;br /&gt;
[[Category:Software]]&lt;br /&gt;
[[Category:32K]]&lt;/div&gt;</summary>
		<author><name>Stefan Haubenthal</name></author>
	</entry>
	<entry>
		<id>http://www.ninerpedia.org/index.php?title=Hibernated_1&amp;diff=51059</id>
		<title>Hibernated 1</title>
		<link rel="alternate" type="text/html" href="http://www.ninerpedia.org/index.php?title=Hibernated_1&amp;diff=51059"/>
		<updated>2025-12-17T00:35:37Z</updated>

		<summary type="html">&lt;p&gt;Stefan Haubenthal: 32K&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Hibernated 1&amp;#039;&amp;#039;&amp;#039; is a text adventure using the Z-machine.&lt;br /&gt;
&lt;br /&gt;
https://8bitgames.itch.io/hibernated1&lt;br /&gt;
&lt;br /&gt;
[[Category:32K]]&lt;br /&gt;
[[Category:80 column]]&lt;br /&gt;
[[Category:Adventure]]&lt;br /&gt;
[[Category:Disk]]&lt;/div&gt;</summary>
		<author><name>Stefan Haubenthal</name></author>
	</entry>
	<entry>
		<id>http://www.ninerpedia.org/index.php?title=Multiplan&amp;diff=51058</id>
		<title>Multiplan</title>
		<link rel="alternate" type="text/html" href="http://www.ninerpedia.org/index.php?title=Multiplan&amp;diff=51058"/>
		<updated>2025-12-17T00:34:46Z</updated>

		<summary type="html">&lt;p&gt;Stefan Haubenthal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Multiplan&amp;#039;&amp;#039;&amp;#039; was an early [[spreadsheet]] program from Microsoft, which Texas Instruments released on a module (on four 6K GROMs and a single 8K ROM) and disk- you needed both, and therefore required an expanded system.&lt;br /&gt;
&lt;br /&gt;
Because the TI version used exactly the same keystrokes as the Microsoft PC release, you can refer to any Multiplan tutorial book and it will work for you.&lt;br /&gt;
&lt;br /&gt;
==To change screen colors in TI Multiplan== &lt;br /&gt;
When the screen displays: &amp;quot;INSTALL PROGRAM DISK PRESS ENTER TO LOAD&amp;quot;&lt;br /&gt;
if you press the space bar TWICE you will have access to eleven color choices.&lt;br /&gt;
&lt;br /&gt;
==Bug in Multiplan==&lt;br /&gt;
In 1984 TI confirmed a bug in the SQRT (square root) function which could not be fixed but TI provided a multiple-cell workaround. &lt;br /&gt;
&lt;br /&gt;
&amp;quot;If a square root is taken of a number less than one, AND contains an ODD number of zeros before the first significant digit (for example 0.01 or 0.000123), Microsoft Multiplan will calculate the square root incorrectly by a factor of ten.&lt;br /&gt;
For example SQRT(0.01) is calculated as 1.0 instead of 0.1, and SQRT(0.000123) is calculated by Microsoft Multiplan as 0.110905 instead of 0.0110905.&lt;br /&gt;
&lt;br /&gt;
The fix was to use two intermediate cells to test if the number you wanted a square root of fell into the error range, and if so, divide the result by ten.&lt;br /&gt;
&lt;br /&gt;
[[Category:32K]]&lt;br /&gt;
[[Category:Strip]]&lt;br /&gt;
[[Category:80 column]]&lt;br /&gt;
[[Category:Module]]&lt;br /&gt;
[[Category:Disk]]&lt;/div&gt;</summary>
		<author><name>Stefan Haubenthal</name></author>
	</entry>
	<entry>
		<id>http://www.ninerpedia.org/index.php?title=PLATOTerm99&amp;diff=51057</id>
		<title>PLATOTerm99</title>
		<link rel="alternate" type="text/html" href="http://www.ninerpedia.org/index.php?title=PLATOTerm99&amp;diff=51057"/>
		<updated>2025-12-17T00:34:06Z</updated>

		<summary type="html">&lt;p&gt;Stefan Haubenthal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:PLATOTerm99.png|right]]&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;PLATOTerm99&amp;#039;&amp;#039;&amp;#039; is a terminal emulator to access CYBIS services now available on the Internet utilizing a WIFI Modem, or via a [[TIPI]] interface connected to Ethernet or WIFI.&lt;br /&gt;
&lt;br /&gt;
https://github.com/tschak909/platoterm99&lt;br /&gt;
&lt;br /&gt;
[[Category:32K]]&lt;br /&gt;
[[Category:Communication]]&lt;br /&gt;
[[Category:Disk]]&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Stefan Haubenthal</name></author>
	</entry>
	<entry>
		<id>http://www.ninerpedia.org/index.php?title=Dragonfire&amp;diff=51056</id>
		<title>Dragonfire</title>
		<link rel="alternate" type="text/html" href="http://www.ninerpedia.org/index.php?title=Dragonfire&amp;diff=51056"/>
		<updated>2025-12-17T00:33:48Z</updated>

		<summary type="html">&lt;p&gt;Stefan Haubenthal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Port of Imagic&amp;#039;s game by Brian Gray, see [https://en.wikipedia.org/wiki/Dragonfire_(video_game) Wikipedia].&lt;br /&gt;
&lt;br /&gt;
[[Category:32K]]&lt;br /&gt;
[[Category:Module]]&lt;/div&gt;</summary>
		<author><name>Stefan Haubenthal</name></author>
	</entry>
	<entry>
		<id>http://www.ninerpedia.org/index.php?title=Category:32KB&amp;diff=51055</id>
		<title>Category:32KB</title>
		<link rel="alternate" type="text/html" href="http://www.ninerpedia.org/index.php?title=Category:32KB&amp;diff=51055"/>
		<updated>2025-12-17T00:33:18Z</updated>

		<summary type="html">&lt;p&gt;Stefan Haubenthal: Stefan Haubenthal moved page Category:32KB to Category:32K&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[:Category:32K]]&lt;/div&gt;</summary>
		<author><name>Stefan Haubenthal</name></author>
	</entry>
	<entry>
		<id>http://www.ninerpedia.org/index.php?title=Category:32K&amp;diff=51054</id>
		<title>Category:32K</title>
		<link rel="alternate" type="text/html" href="http://www.ninerpedia.org/index.php?title=Category:32K&amp;diff=51054"/>
		<updated>2025-12-17T00:33:18Z</updated>

		<summary type="html">&lt;p&gt;Stefan Haubenthal: Stefan Haubenthal moved page Category:32KB to Category:32K&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Requires 32 KB memory expansion.&lt;/div&gt;</summary>
		<author><name>Stefan Haubenthal</name></author>
	</entry>
	<entry>
		<id>http://www.ninerpedia.org/index.php?title=Hibernated_1&amp;diff=51053</id>
		<title>Hibernated 1</title>
		<link rel="alternate" type="text/html" href="http://www.ninerpedia.org/index.php?title=Hibernated_1&amp;diff=51053"/>
		<updated>2025-12-17T00:26:24Z</updated>

		<summary type="html">&lt;p&gt;Stefan Haubenthal: Created page with &amp;quot;&amp;#039;&amp;#039;&amp;#039;Hibernated 1&amp;#039;&amp;#039;&amp;#039; is a text adventure using the Z-machine.  https://8bitgames.itch.io/hibernated1  Category:80 column Category:Adventure Category:Disk&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Hibernated 1&amp;#039;&amp;#039;&amp;#039; is a text adventure using the Z-machine.&lt;br /&gt;
&lt;br /&gt;
https://8bitgames.itch.io/hibernated1&lt;br /&gt;
&lt;br /&gt;
[[Category:80 column]]&lt;br /&gt;
[[Category:Adventure]]&lt;br /&gt;
[[Category:Disk]]&lt;/div&gt;</summary>
		<author><name>Stefan Haubenthal</name></author>
	</entry>
	<entry>
		<id>http://www.ninerpedia.org/index.php?title=Multiplan&amp;diff=51052</id>
		<title>Multiplan</title>
		<link rel="alternate" type="text/html" href="http://www.ninerpedia.org/index.php?title=Multiplan&amp;diff=51052"/>
		<updated>2025-11-18T20:15:05Z</updated>

		<summary type="html">&lt;p&gt;Stefan Haubenthal: Category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Multiplan&amp;#039;&amp;#039;&amp;#039; was an early [[spreadsheet]] program from Microsoft, which Texas Instruments released on a module (on four 6K GROMs and a single 8K ROM) and disk- you needed both, and therefore required an expanded system.&lt;br /&gt;
&lt;br /&gt;
Because the TI version used exactly the same keystrokes as the Microsoft PC release, you can refer to any Multiplan tutorial book and it will work for you.&lt;br /&gt;
&lt;br /&gt;
==To change screen colors in TI Multiplan== &lt;br /&gt;
When the screen displays: &amp;quot;INSTALL PROGRAM DISK PRESS ENTER TO LOAD&amp;quot;&lt;br /&gt;
if you press the space bar TWICE you will have access to eleven color choices.&lt;br /&gt;
&lt;br /&gt;
==Bug in Multiplan==&lt;br /&gt;
In 1984 TI confirmed a bug in the SQRT (square root) function which could not be fixed but TI provided a multiple-cell workaround. &lt;br /&gt;
&lt;br /&gt;
&amp;quot;If a square root is taken of a number less than one, AND contains an ODD number of zeros before the first significant digit (for example 0.01 or 0.000123), Microsoft Multiplan will calculate the square root incorrectly by a factor of ten.&lt;br /&gt;
For example SQRT(0.01) is calculated as 1.0 instead of 0.1, and SQRT(0.000123) is calculated by Microsoft Multiplan as 0.110905 instead of 0.0110905.&lt;br /&gt;
&lt;br /&gt;
The fix was to use two intermediate cells to test if the number you wanted a square root of fell into the error range, and if so, divide the result by ten.&lt;br /&gt;
&lt;br /&gt;
[[Category:Strip]]&lt;br /&gt;
[[Category:80 column]]&lt;br /&gt;
[[Category:Module]]&lt;br /&gt;
[[Category:Disk]]&lt;br /&gt;
[[Category:32KB]]&lt;/div&gt;</summary>
		<author><name>Stefan Haubenthal</name></author>
	</entry>
	<entry>
		<id>http://www.ninerpedia.org/index.php?title=User:Stefan_Haubenthal&amp;diff=51051</id>
		<title>User:Stefan Haubenthal</title>
		<link rel="alternate" type="text/html" href="http://www.ninerpedia.org/index.php?title=User:Stefan_Haubenthal&amp;diff=51051"/>
		<updated>2025-10-05T18:09:03Z</updated>

		<summary type="html">&lt;p&gt;Stefan Haubenthal: 838-SXB&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;My ports of the DOS emulator by Ton Brouwer.&lt;br /&gt;
* TI4Amiga http://aminet.net/package/misc/emu/TI4Amiga&lt;br /&gt;
* ti4linux https://ftp.lip6.fr/pub/linux/sunsite/system/emulators/ti4linux.lsm&lt;br /&gt;
&lt;br /&gt;
Buggy: Example in [[TI Logo II]] http://shawweb.myzen.co.uk/stephen/times9.htm&lt;br /&gt;
&lt;br /&gt;
Thanks Stefan- I think the errors are due to uncorrected OCR- try this instead:&lt;br /&gt;
TO TREE :SIZE :ANGLE :LEVEL&lt;br /&gt;
 IF :LEVEL = 0 THEN STOP&lt;br /&gt;
 LEFT :ANGLE&lt;br /&gt;
 FORWARD :SIZE * 2&lt;br /&gt;
 TREE :SIZE :ANGLE :LEVEL - l&lt;br /&gt;
 BACK :SIZE * 2&lt;br /&gt;
 RIGHT 2 * :ANGLE&lt;br /&gt;
 FORWARD :SIZE&lt;br /&gt;
 TREE :SIZE :ANGLE :LEVEL - 1&lt;br /&gt;
 BACK :SIZE&lt;br /&gt;
 LEFT :ANGLE&lt;br /&gt;
 END&lt;br /&gt;
 TO WILLOW&lt;br /&gt;
 TELL TURTLE&lt;br /&gt;
 PENUP&lt;br /&gt;
 BACK 24&lt;br /&gt;
 PENDOWN&lt;br /&gt;
 TREE 8 15 8&lt;br /&gt;
 BACK 24&lt;br /&gt;
 END&lt;br /&gt;
(Stephen)&lt;br /&gt;
&lt;br /&gt;
== TODO ==&lt;br /&gt;
* Battlezone&lt;br /&gt;
* [[838-SXB]]&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* http://mntnweb.com/oldcomputers/ti994a/ti994a.HTM&lt;br /&gt;
* https://4apedia.com/index.php/User:Polluks&lt;br /&gt;
* https://pixelpedant.com&lt;br /&gt;
* https://www.ti99iuc.it/web/index.php?pageid=articoli_tech&amp;amp;artid=208#.Y-J5Cq2ZNXw&lt;br /&gt;
* http://www.stuartconner.me.uk/mini_cortex/mini_cortex.htm Mini-Cortex System&lt;br /&gt;
* https://github.com/petersobolev/99tro&lt;br /&gt;
* https://github.com/CheungChang7/TI99_HOMEBREW/tree/main&lt;/div&gt;</summary>
		<author><name>Stefan Haubenthal</name></author>
	</entry>
	<entry>
		<id>http://www.ninerpedia.org/index.php?title=Dragonfire&amp;diff=51050</id>
		<title>Dragonfire</title>
		<link rel="alternate" type="text/html" href="http://www.ninerpedia.org/index.php?title=Dragonfire&amp;diff=51050"/>
		<updated>2025-10-04T14:17:56Z</updated>

		<summary type="html">&lt;p&gt;Stefan Haubenthal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Port of Imagic&amp;#039;s game by Brian Gray, see [https://en.wikipedia.org/wiki/Dragonfire_(video_game) Wikipedia].&lt;br /&gt;
&lt;br /&gt;
[[Category:32KB]]&lt;br /&gt;
[[Category:Module]]&lt;/div&gt;</summary>
		<author><name>Stefan Haubenthal</name></author>
	</entry>
	<entry>
		<id>http://www.ninerpedia.org/index.php?title=PLATOTerm99&amp;diff=51049</id>
		<title>PLATOTerm99</title>
		<link rel="alternate" type="text/html" href="http://www.ninerpedia.org/index.php?title=PLATOTerm99&amp;diff=51049"/>
		<updated>2025-10-04T13:21:10Z</updated>

		<summary type="html">&lt;p&gt;Stefan Haubenthal: 32KB&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:PLATOTerm99.png|right]]&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;PLATOTerm99&amp;#039;&amp;#039;&amp;#039; is a terminal emulator to access CYBIS services now available on the Internet utilizing a WIFI Modem, or via a [[TIPI]] interface connected to Ethernet or WIFI.&lt;br /&gt;
&lt;br /&gt;
https://github.com/tschak909/platoterm99&lt;br /&gt;
&lt;br /&gt;
[[Category:32KB]]&lt;br /&gt;
[[Category:Communication]]&lt;br /&gt;
[[Category:Disk]]&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Stefan Haubenthal</name></author>
	</entry>
	<entry>
		<id>http://www.ninerpedia.org/index.php?title=Category:32K&amp;diff=51048</id>
		<title>Category:32K</title>
		<link rel="alternate" type="text/html" href="http://www.ninerpedia.org/index.php?title=Category:32K&amp;diff=51048"/>
		<updated>2025-10-04T12:19:56Z</updated>

		<summary type="html">&lt;p&gt;Stefan Haubenthal: Created page with &amp;quot;Requires 32 KB memory expansion.&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Requires 32 KB memory expansion.&lt;/div&gt;</summary>
		<author><name>Stefan Haubenthal</name></author>
	</entry>
	<entry>
		<id>http://www.ninerpedia.org/index.php?title=Dragonfire&amp;diff=51047</id>
		<title>Dragonfire</title>
		<link rel="alternate" type="text/html" href="http://www.ninerpedia.org/index.php?title=Dragonfire&amp;diff=51047"/>
		<updated>2025-10-04T12:19:02Z</updated>

		<summary type="html">&lt;p&gt;Stefan Haubenthal: Created page with &amp;quot;Port of Imagic&amp;#039;s game by B. Gray, see [https://en.wikipedia.org/wiki/Dragonfire_(video_game) Wikipedia].  Category:32KB Category:Module&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Port of Imagic&amp;#039;s game by B. Gray, see [https://en.wikipedia.org/wiki/Dragonfire_(video_game) Wikipedia].&lt;br /&gt;
&lt;br /&gt;
[[Category:32KB]]&lt;br /&gt;
[[Category:Module]]&lt;/div&gt;</summary>
		<author><name>Stefan Haubenthal</name></author>
	</entry>
	<entry>
		<id>http://www.ninerpedia.org/index.php?title=UNIX99&amp;diff=51046</id>
		<title>UNIX99</title>
		<link rel="alternate" type="text/html" href="http://www.ninerpedia.org/index.php?title=UNIX99&amp;diff=51046"/>
		<updated>2025-09-25T17:54:35Z</updated>

		<summary type="html">&lt;p&gt;Stefan Haubenthal: Created page with &amp;quot;A UNIX-like OS by mrvan.  Category:AMS Category:80 column&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A UNIX-like OS by mrvan.&lt;br /&gt;
&lt;br /&gt;
[[Category:AMS]]&lt;br /&gt;
[[Category:80 column]]&lt;/div&gt;</summary>
		<author><name>Stefan Haubenthal</name></author>
	</entry>
	<entry>
		<id>http://www.ninerpedia.org/index.php?title=Moon_Mine&amp;diff=51045</id>
		<title>Moon Mine</title>
		<link rel="alternate" type="text/html" href="http://www.ninerpedia.org/index.php?title=Moon_Mine&amp;diff=51045"/>
		<updated>2025-09-16T22:31:37Z</updated>

		<summary type="html">&lt;p&gt;Stefan Haubenthal: source code&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://oratronik.de/atariage/Moonmine_source_code.pdf source code]&lt;br /&gt;
&lt;br /&gt;
== Speech in Moon Mine ==&lt;br /&gt;
&lt;br /&gt;
The following phrases are contained in the English version of Moon Mine; the number is the GROM address in the cartridge.&lt;br /&gt;
&lt;br /&gt;
{| &lt;br /&gt;
| style=&amp;quot;width:5em&amp;quot; | A000 &lt;br /&gt;
| Advance to next level&lt;br /&gt;
|-&lt;br /&gt;
| A110 || Bonus points gained&lt;br /&gt;
|-&lt;br /&gt;
| A1F0 || Extra crew member&lt;br /&gt;
|-&lt;br /&gt;
| A2BA || Good shot captain&lt;br /&gt;
|-&lt;br /&gt;
| A396 || Monster destroyed&lt;br /&gt;
|-&lt;br /&gt;
| A46A || Way to go captain&lt;br /&gt;
|-&lt;br /&gt;
| A54A || Lasers overheated&lt;br /&gt;
|-&lt;br /&gt;
| A66E || Monster damaged ship&lt;br /&gt;
|-&lt;br /&gt;
| A75A || Monster attacked crew&lt;br /&gt;
|-&lt;br /&gt;
| A838 || Crew member lost&lt;br /&gt;
|-&lt;br /&gt;
| A8D4 || Detecting unknown object&lt;br /&gt;
|-&lt;br /&gt;
| A9F6 || Zygonaut approaching&lt;br /&gt;
|-&lt;br /&gt;
| AAD2 || Continue game captain&lt;br /&gt;
|-&lt;br /&gt;
| ABC2 || Coolant is running low&lt;br /&gt;
|-&lt;br /&gt;
| ACA4 || Water ahead&lt;br /&gt;
|-&lt;br /&gt;
| AD6A || Water tanks full&lt;br /&gt;
|-&lt;br /&gt;
| AE2E || Out of water captain&lt;br /&gt;
|-&lt;br /&gt;
| AF06 || Congratulations captain&lt;br /&gt;
|-&lt;br /&gt;
| B010 || (Zygonaut) Hahahaha&lt;br /&gt;
|-&lt;br /&gt;
| B084 || (Zygonaut) You&amp;#039;ll never get me&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Surprise&amp;#039;&amp;#039;&amp;#039;: The Spanish version of Moon Mine features Spanish speech!&lt;br /&gt;
&lt;br /&gt;
{| &lt;br /&gt;
| style=&amp;quot;width:5em&amp;quot; | C000 &lt;br /&gt;
| Pase al nivel nuevo&lt;br /&gt;
|-&lt;br /&gt;
| C114 || Gano el bono de puntos&lt;br /&gt;
|-&lt;br /&gt;
| C254 || Miembro extra tripulación&lt;br /&gt;
|-&lt;br /&gt;
| C3AE || Buen tiro capitán&lt;br /&gt;
|-&lt;br /&gt;
| C486 || Monstruo destruido&lt;br /&gt;
|-&lt;br /&gt;
| C57A || Muy bien capitán&lt;br /&gt;
|-&lt;br /&gt;
| C666 || Lasers recalentados&lt;br /&gt;
|-&lt;br /&gt;
| C77E || Monstruo ha destruido buque&lt;br /&gt;
|-&lt;br /&gt;
| C8D8 || Monstruo ha atacado tripulación&lt;br /&gt;
|-&lt;br /&gt;
| CA94 || Perdido hombre tripulación&lt;br /&gt;
|-&lt;br /&gt;
| CBF0 || Objeto desconocido delante&lt;br /&gt;
|-&lt;br /&gt;
| CD5C || Se acerca el Zygonaut&lt;br /&gt;
|-&lt;br /&gt;
| CE72 || Continúe el juego capitán&lt;br /&gt;
|-&lt;br /&gt;
| CFB8 || Bajo nivel de agua&lt;br /&gt;
|-&lt;br /&gt;
| D0D4 || Agua detectada&lt;br /&gt;
|-&lt;br /&gt;
| D188 || Depósitos de agua llenos&lt;br /&gt;
|-&lt;br /&gt;
| D2F2 || No hay agua capitán&lt;br /&gt;
|-&lt;br /&gt;
| D3FC || Felicitaciones capitán&lt;br /&gt;
|-&lt;br /&gt;
| D518 || (Zygonaut) Jajajaja&lt;br /&gt;
|-&lt;br /&gt;
| D58C || (Zygonaut) No me alcanzarás&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Speech]]&lt;br /&gt;
[[Category:Module]]&lt;/div&gt;</summary>
		<author><name>Stefan Haubenthal</name></author>
	</entry>
	<entry>
		<id>http://www.ninerpedia.org/index.php?title=Parsec&amp;diff=51044</id>
		<title>Parsec</title>
		<link rel="alternate" type="text/html" href="http://www.ninerpedia.org/index.php?title=Parsec&amp;diff=51044"/>
		<updated>2025-09-16T22:27:49Z</updated>

		<summary type="html">&lt;p&gt;Stefan Haubenthal: source code&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A horizontally scrolling shooter, [https://oratronik.de/atariage/Parsec_Source_Code.pdf source code].&lt;br /&gt;
&lt;br /&gt;
[[Category:Speech]]&lt;br /&gt;
[[Category:Module]]&lt;/div&gt;</summary>
		<author><name>Stefan Haubenthal</name></author>
	</entry>
	<entry>
		<id>http://www.ninerpedia.org/index.php?title=Pitfall!&amp;diff=51043</id>
		<title>Pitfall!</title>
		<link rel="alternate" type="text/html" href="http://www.ninerpedia.org/index.php?title=Pitfall!&amp;diff=51043"/>
		<updated>2025-08-30T11:25:09Z</updated>

		<summary type="html">&lt;p&gt;Stefan Haubenthal: Category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:Pitfall_cartridges.jpeg|right]]&lt;br /&gt;
Remake of &amp;#039;&amp;#039;&amp;#039;Pitfall!&amp;#039;&amp;#039;&amp;#039; for the unexpanded TI-99/4A.&lt;br /&gt;
About 14000 lines of assembly code using [[Spectra2]], open source software.&lt;br /&gt;
&lt;br /&gt;
The source code and binaries were released in 2010. You can get it [http://www.atariage.com/forums/topic/158467-pitfall-binaries-and-source-code here]. &lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Pitfall! Pitfall!] is a jump &amp;amp; run game released by Activision for popular 80&amp;#039;s game consoles like Atari 2600 and Colecovision.&lt;br /&gt;
&lt;br /&gt;
From 2008 until 2010 a version for the TI-99/4A was written by &amp;quot;retroclouds&amp;quot;.&lt;br /&gt;
It got released as both disk version and a 32K bank-switched ROM command module.&lt;br /&gt;
&lt;br /&gt;
A limited run of cartridges was made available in 2010. These were based on the popular Jon Guidry boards.&lt;br /&gt;
The cartridge came with a label and sported a 32K (4x8) bank-switched ROM. This version can even run on the unexpanded TI-99/4A. &lt;br /&gt;
&lt;br /&gt;
[[Category:Module]]&lt;br /&gt;
[[Category:Disk]]&lt;/div&gt;</summary>
		<author><name>Stefan Haubenthal</name></author>
	</entry>
	<entry>
		<id>http://www.ninerpedia.org/index.php?title=Development_resources&amp;diff=51040</id>
		<title>Development resources</title>
		<link rel="alternate" type="text/html" href="http://www.ninerpedia.org/index.php?title=Development_resources&amp;diff=51040"/>
		<updated>2025-07-06T18:48:03Z</updated>

		<summary type="html">&lt;p&gt;Stefan Haubenthal: /* Tech manuals */ archive&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;This original version of this [http://www.atariage.com/forums/topic/153704-ti-994a-development-resources/ page] is located at the Atariage game programming subgroup.&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
This page gives an overview of resources that may be useful if you intend to write software for the TI-99/4A.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;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.&amp;#039;&amp;#039;&amp;#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Also if you think a reference to an important development resource is missing, then please let me know and I&amp;#039;ll be happy to add to the list.&amp;#039;&amp;#039;&amp;#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Below is an overview of most of the development resources for the Texas Instruments TI-99/4A Home Computer:&lt;br /&gt;
&lt;br /&gt;
== Emulators ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.harmlesslion.com/software/Classic99 classic99]&lt;br /&gt;
: Windows-based emulator including TI-99 ROMs under license from Texas Instruments&lt;br /&gt;
: Debugger, memory heatmap, OS file support, support for 128K bank-switch carts, possibility to record AVI movie (no sound).&lt;br /&gt;
: Status: &amp;lt;font color=&amp;quot;darkgreen&amp;quot;&amp;gt;&amp;#039;&amp;#039;&amp;#039;Still under active development&amp;#039;&amp;#039;&amp;#039;&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [http://www.mess.org MESS]&lt;br /&gt;
: Multiple system emulator that supports the TI-99/4, TI-99/4A, TI-99/8, and Geneve.&lt;br /&gt;
: Emulates more than 400 systems. Requires ROMs from the original systems. Features debugger, most accurate emulation, support for 64K bank-switch carts, possibility to record AVI movie with sound.&lt;br /&gt;
: Also see the [[MESS]] section in ninerpedia.&lt;br /&gt;
: Status: &amp;lt;font color=&amp;quot;darkgreen&amp;quot;&amp;gt;&amp;#039;&amp;#039;&amp;#039;Still under active development&amp;#039;&amp;#039;&amp;#039;&amp;lt;/font&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* [http://www.99er.net/win994a.shtml Win994a]&lt;br /&gt;
: Windows-based emulator of the TI-99/4a&lt;br /&gt;
: Good TMS9900 cross-assembler included. No debugger.&lt;br /&gt;
: Status: &amp;lt;font color=&amp;quot;darkgreen&amp;quot;&amp;gt;&amp;#039;&amp;#039;&amp;#039;Updated version released in 2009&amp;#039;&amp;#039;&amp;#039;&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [http://members.ziggo.nl/fgkaal/Software/sw_ti994w.html#ti994w Ti994w]&lt;br /&gt;
: Windows based emulator with 80 column support&lt;br /&gt;
: Status: &amp;lt;font color=&amp;quot;darkgreen&amp;quot;&amp;gt;&amp;#039;&amp;#039;&amp;#039;Still under active development&amp;#039;&amp;#039;&amp;#039;&amp;lt;/font&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
* [http://www.mrousseau.org/programs/ti99sim/ TI-99/Sim]&lt;br /&gt;
: Linux-based software simulation of the TI-99/4A&lt;br /&gt;
: Status: &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;&amp;#039;&amp;#039;&amp;#039;Stalled&amp;#039;&amp;#039;&amp;#039;&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [http://pw2.netcom.com/~mjmw/ PC99]&lt;br /&gt;
: Commercial DOS-based emulator licensed by Texas Instruments to sell ROMs&lt;br /&gt;
: Status: &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;&amp;#039;&amp;#039;&amp;#039;Stalled&amp;#039;&amp;#039;&amp;#039;&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Programming languages ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.99er.net/win994a.shtml Winasm99]&lt;br /&gt;
: Windows based TMS9900 cross assembler with GUI and ability to build 8K cartridge roms.&lt;br /&gt;
: Is part of the Win994a emulator.&lt;br /&gt;
: Status: &amp;lt;font color=&amp;quot;darkgreen&amp;quot;&amp;gt;&amp;#039;&amp;#039;&amp;#039;Updated version released in 2009&amp;#039;&amp;#039;&amp;#039;&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [http://ftp.whtech.com/emulators/v9t9/v9t9src.zip TIasm]&lt;br /&gt;
: TMS9900 cross assembler TIasm will build 8K console (&amp;gt;0000) or cartridge (&amp;gt;6000) rom.&lt;br /&gt;
: Is part of the V9T9 emulator package. Source is included.&lt;br /&gt;
: Status: &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;&amp;#039;&amp;#039;&amp;#039;Stalled&amp;#039;&amp;#039;&amp;#039;&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Programming libraries ==&lt;br /&gt;
&lt;br /&gt;
* [http://spectra99.sourceforge.net SPECTRA]&lt;br /&gt;
: Library in assembly language for programming Arcade Games. &lt;br /&gt;
: Includes routines for handling tiles, sprites, sound &amp;amp; task scheduler. Documentation included. &lt;br /&gt;
: Status: &amp;lt;font color=&amp;quot;darkgreen&amp;quot;&amp;gt;&amp;#039;&amp;#039;&amp;#039;Still under active development&amp;#039;&amp;#039;&amp;#039;&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [http://pagesperso-orange.fr/gtello/mlc_e.htm My Little Compiler]&lt;br /&gt;
: Library for using assembler-like language &amp;amp; routines from Extended Basic.&lt;br /&gt;
: Great for putting more power in Extended Basic programs. &lt;br /&gt;
: Demo Pong game and documentation included.&lt;br /&gt;
: Status: &amp;lt;font color=&amp;quot;darkgreen&amp;quot;&amp;gt;&amp;#039;&amp;#039;&amp;#039;Still under active development&amp;#039;&amp;#039;&amp;#039;&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Utilities ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;1. Cartridge tools&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
* [http://www.harmlesslion.com/cgi-bin/onesoft.cgi?96 MakeCart]&lt;br /&gt;
: Convert almost any E/A#5 program memory image to a GROM cartridge for emulation.&lt;br /&gt;
: A version that will convert a E/A#5 program image to ROM cartridge is planned.&lt;br /&gt;
: Note that you need 32K memory expansion for running the E/A#5 program stored in the cartridge image.&lt;br /&gt;
: Status: &amp;lt;font color=&amp;quot;darkgreen&amp;quot;&amp;gt;&amp;#039;&amp;#039;&amp;#039;Still under active development&amp;#039;&amp;#039;&amp;#039;&amp;lt;/font&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;2. File transfer&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
* [http://members.ziggo.nl/fgkaal/Software/sw_ti99dir.html#tidir TI99Dir]&lt;br /&gt;
: TI99 filemanager for windows. Great for transferring disk images to the TI-99/4A. &lt;br /&gt;
: Status: &amp;lt;font color=&amp;quot;darkgreen&amp;quot;&amp;gt;&amp;#039;&amp;#039;&amp;#039;Still under active development&amp;#039;&amp;#039;&amp;#039;&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [http://ftp.whtech.com/pc%20utilities/TI99-PC%203.2.1.%20Password%20%27TI99%27.rar TI99-PC]&lt;br /&gt;
: The Windows software TI99-PC will read, write, format, catalog, copy and convert&lt;br /&gt;
: TI-99/4A floppy disks on a PC. You will be able to transfer your real TI floppy disks&lt;br /&gt;
: from/to the TI-99/4A.&lt;br /&gt;
: Status: &amp;lt;font color=&amp;quot;darkgreen&amp;quot;&amp;gt;&amp;#039;&amp;#039;&amp;#039;Still under active development&amp;#039;&amp;#039;&amp;#039;&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;3. Sound and speech&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
* [http://www.kontechs.de/product?name=mod2psg Mod2PSG2]&lt;br /&gt;
: Music tracker for the SN76489 sound chip running on Windows.&lt;br /&gt;
: With the help of Tursi&amp;#039;s [http://www.harmlesslion.com/cgi-bin/onesoft.cgi?107| ePSGMOD player] you can play &lt;br /&gt;
: the composed tunes on the TI-99/4A.&lt;br /&gt;
: Status: &amp;lt;font color=&amp;quot;darkgreen&amp;quot;&amp;gt;&amp;#039;&amp;#039;&amp;#039;Still under active development&amp;#039;&amp;#039;&amp;#039;&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [http://ftp.whtech.com/pc%20utilities/qboxpro.zip QBOX Pro]&lt;br /&gt;
: QBOX Pro is the windows software that converts WAV files to LPC speech data for playback on the TI-99/4A speech synsthesizer. &lt;br /&gt;
: This is a 16bit windows application but it still runs in Windows 2000/XP/Vista. It does require the BWCC.DLL library.&lt;br /&gt;
: Status: &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;&amp;#039;&amp;#039;&amp;#039;Stalled&amp;#039;&amp;#039;&amp;#039;&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;4. Graphics&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
* [http://sometimes.99er.net/grapefruit.zip Grapefruit]&lt;br /&gt;
: This utility for Windows lets you convert graphics to text (programming language data statements) to be included&lt;br /&gt;
: in your programs (basic, extended basic or assembler).&lt;br /&gt;
: Supports double sized sprites. Includes code to demo character or sprite design. Includes 14 charactersets/examples to&lt;br /&gt;
: work with. Has a built-in character editor, but still the idea is to work with your graphics in your favourite graphic&lt;br /&gt;
: package (eg. Photoshop). Turn on an 8x8 grid in your graphic software to assist you.&lt;br /&gt;
&lt;br /&gt;
: This utility needs the .NET framework available for free at [http://www.microsoft.com/downloads Microsoft].&lt;br /&gt;
: Status: &amp;lt;font color=&amp;quot;darkgreen&amp;quot;&amp;gt;&amp;#039;&amp;#039;&amp;#039;Still under active development&amp;#039;&amp;#039;&amp;#039;&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Tech manuals ==&lt;br /&gt;
&lt;br /&gt;
* Texas Instruments TI-99/4A user reference guide&lt;br /&gt;
: The official user reference guide with details how to setup and connect your TI-99/4A.&lt;br /&gt;
: Includes intrudction on the TI-BASIC programming language.&lt;br /&gt;
&lt;br /&gt;
* [http://ftp.whtech.com/programming/Extended%20Basic/TI%20Extended%20Basic%20-%20Linked.pdf Extended Basic reference manual] &amp;lt;sup&amp;gt;PDF&amp;lt;/sup&amp;gt;&lt;br /&gt;
: The official extended basic manual, explaining the 40 new or expanded commands, sprites, etc.&lt;br /&gt;
&lt;br /&gt;
* [http://mainbyte.com/ti99/basic/basic2.asp  Extended Basic online reference] &amp;lt;sup&amp;gt;web&amp;lt;/sup&amp;gt;&lt;br /&gt;
: Online manual with command lookup functionality.&lt;br /&gt;
&lt;br /&gt;
* [http://ftp.whtech.com/programming/Assembler/Editor%20Assembler%20manual/Editor_Assembler_Manual.pdf Editor/Assembler reference manual] &amp;lt;sup&amp;gt;PDF&amp;lt;/sup&amp;gt; (84 MiB)&lt;br /&gt;
: The official Editor/Assembler reference manual. Note that this is not a tutorial for beginners.&lt;br /&gt;
: Still, it&amp;#039;s an essential manual when writing assembler for the TI-99/4A.&lt;br /&gt;
&lt;br /&gt;
* [http://www.retroclouds.de/thisandthat/vdppg.pdf VDP Programmer&amp;#039;s guide] &amp;lt;sup&amp;gt;PDF&amp;lt;/sup&amp;gt;&lt;br /&gt;
: The official programmer&amp;#039;a guide for the TMS9918A and its variants. The [http://en.wikipedia.org/wiki/TMS9918 9918A] is the Video Display Processor&lt;br /&gt;
: chip used in the TI-99/4A and several other home computers + game consoles of that era.&lt;br /&gt;
&lt;br /&gt;
* [http://www.retroclouds.de/thisandthat/rom_command_module_v2.pdf Guide for ROM command module] &amp;lt;sup&amp;gt;PDF&amp;lt;/sup&amp;gt;&lt;br /&gt;
: Description on how to write software that runs from cartridge ROM.&lt;br /&gt;
&lt;br /&gt;
* [https://web.archive.org/web/20100202024049/http://www.ti99hof.org:80/Bios/HeinerMartin/tiintern.pdf TI Intern] &amp;lt;sup&amp;gt;PDF&amp;lt;/sup&amp;gt;&lt;br /&gt;
: Details on &amp;quot;Monitor&amp;quot;, the OS of the TI-99/4A. Disassembly of console ROM/GROMS and GPL interpreter.&lt;br /&gt;
: Has details on interrupt routine, utility subprograms, basic interpreter, etc.&lt;br /&gt;
&lt;br /&gt;
== Tech tutorials ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.retroclouds.de/thisandthat/bank-switching_tutorial.pdf Building a multi-bank ROM image] &amp;lt;sup&amp;gt;PDF&amp;lt;/sup&amp;gt;&lt;br /&gt;
: New tutorial on compiling a 32K bank-switched cartridge ROM image.&lt;br /&gt;
 &lt;br /&gt;
* [http://www.youtube.com/watch?v=ZxJJtwOvNSA Tape to Disk to PC file Transfer] &amp;lt;sup&amp;gt;video&amp;lt;/sup&amp;gt;&lt;br /&gt;
: Video tutorial on file transfer from the TI to the PC using a serial connection cable.&lt;br /&gt;
&lt;br /&gt;
* [http://www.youtube.com/watch?v=wVDE-6TtmFQ Speech tutorial] &amp;lt;sup&amp;gt;video&amp;lt;/sup&amp;gt;&lt;br /&gt;
: Video tutorial on how to use QBOX Pro to convert a 8kHz mono WAV file to [http://en.wikipedia.org/wiki/Linear_predictive_coding LPC] speech data&lt;br /&gt;
: for playback on the TI-99/4A with the [http://www.mainbyte.com/ti99/hardware/speech.html speech synthesizer] device. It shows how to embedd&lt;br /&gt;
: the LPC byte stream into your own assembly language program.&lt;br /&gt;
&lt;br /&gt;
== Tech web sites ==&lt;br /&gt;
&lt;br /&gt;
* [http://en.wikipedia.org/wiki/TI-99/4A TI-99/4A @ wikipedia]&lt;br /&gt;
: Introduction and basics of Texas Instruments TI-99/4A Home Computer. &lt;br /&gt;
 &lt;br /&gt;
* [http://www.nouspikel.com/ti99 Thierry Nouspikel&amp;#039;s Tech Pages]&lt;br /&gt;
: Probably the best TI hardware and software tech page.&lt;br /&gt;
&lt;br /&gt;
* [http://www.mainbyte.com/ti99 Mainbyte&amp;#039;s home of the TI-99/4A]&lt;br /&gt;
: Very good tech site with many detailed pictures and reference area.&lt;br /&gt;
: Includes various projects for upgrading your TI-99/4A, e.g. build a supercart cartridge.&lt;br /&gt;
&lt;br /&gt;
* [http://www.hexbus.com Jon&amp;#039;s hexbus page]&lt;br /&gt;
: Several hardware projects including pictures. Home of the 64K bank-switched cartridge project.&lt;br /&gt;
: [http://www.hexbus.com/tibooks/ TI-99/4A Home Computer Book Archive]&lt;br /&gt;
&lt;br /&gt;
== List groups ==&lt;br /&gt;
&lt;br /&gt;
* [http://tech.groups.yahoo.com/group/ti99-4a/ YAHOO! TI-99/4A list group 1]&lt;br /&gt;
* [http://tech.groups.yahoo.com/group/ti994a/ YAHOO! TI-994A list group 2]&lt;br /&gt;
* [http://tech.groups.yahoo.com/group/swpb/ YAHOO! TMS9900 programming list group]&lt;br /&gt;
&lt;br /&gt;
: The above list groups are currently the main meeting point for the TI-99/4A community. &amp;lt;br /&amp;gt;&lt;br /&gt;
: &amp;#039;&amp;#039;&amp;#039;Search and you will find. Ask and you will get answers.&amp;#039;&amp;#039;&amp;#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
: Registration is required for posting.&lt;br /&gt;
&lt;br /&gt;
* [news:comp.sys.ti comp.sys.ti], covering all TI devices, including calculators&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Repositories ==&lt;br /&gt;
&lt;br /&gt;
* [http://tigameshelf.net/ TI-99/4A Game Shelf]&lt;br /&gt;
&lt;br /&gt;
: Provides a gallery of interesting games with images of the opening screen as well as an&lt;br /&gt;
: in-play snapshot, along with a brief review tested on a real TI 99/4A system. Hardware&lt;br /&gt;
: requirements are also listed. Has many good Extended Basic games.&lt;br /&gt;
&lt;br /&gt;
* [http://ftp.whtech.com/ WHTech]&lt;br /&gt;
: WHTech is the primary archive - though it&amp;#039;s a bit overwhelming. &lt;br /&gt;
: But pretty much all software, hardware docs, etc, are available there. &lt;br /&gt;
: It&amp;#039;s undergoing a reorganization at the moment to hopefully make it more useful.&lt;br /&gt;
&lt;br /&gt;
* [http://99er.net 99er.net]&lt;br /&gt;
: Site with useful file archive and forum functionality.&lt;br /&gt;
&lt;br /&gt;
== Other web resources ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.atariage.com/forums/forum/119-ti-994a-programming/ TI-99/4A game programming subgroup at Atariage]&lt;br /&gt;
: Here the focus is on programming games for the TI-99/4A&lt;br /&gt;
&lt;br /&gt;
* [http://www.atariage.com/forums/forum/116-classic-computing/ Classic computers subgroup at Atariage]&lt;br /&gt;
: Has occasional topics related to the TI-99/4A&lt;/div&gt;</summary>
		<author><name>Stefan Haubenthal</name></author>
	</entry>
	<entry>
		<id>http://www.ninerpedia.org/index.php?title=GROM&amp;diff=51039</id>
		<title>GROM</title>
		<link rel="alternate" type="text/html" href="http://www.ninerpedia.org/index.php?title=GROM&amp;diff=51039"/>
		<updated>2025-07-06T18:40:47Z</updated>

		<summary type="html">&lt;p&gt;Stefan Haubenthal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Graphics Read Only Memory&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
See https://www.unige.ch/medecine/nouspikel/ti99/groms.htm&lt;br /&gt;
&lt;br /&gt;
[[Category:Module| ]]&lt;/div&gt;</summary>
		<author><name>Stefan Haubenthal</name></author>
	</entry>
	<entry>
		<id>http://www.ninerpedia.org/index.php?title=GROM&amp;diff=51038</id>
		<title>GROM</title>
		<link rel="alternate" type="text/html" href="http://www.ninerpedia.org/index.php?title=GROM&amp;diff=51038"/>
		<updated>2025-07-06T18:40:22Z</updated>

		<summary type="html">&lt;p&gt;Stefan Haubenthal: URL&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Graphics Read Only Memory&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
See https://www.unige.ch/medecine/nouspikel/ti99/groms.htm&lt;br /&gt;
&lt;br /&gt;
[[Category:Module| ]]&lt;/div&gt;</summary>
		<author><name>Stefan Haubenthal</name></author>
	</entry>
	<entry>
		<id>http://www.ninerpedia.org/index.php?title=Js99%27er&amp;diff=51037</id>
		<title>Js99&#039;er</title>
		<link rel="alternate" type="text/html" href="http://www.ninerpedia.org/index.php?title=Js99%27er&amp;diff=51037"/>
		<updated>2025-07-04T16:02:37Z</updated>

		<summary type="html">&lt;p&gt;Stefan Haubenthal: more specific&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;TI-99/4A emulator written in JavaScript, i.e. TypeScript using Angular, see http://js99er.net by [[Rasmus Moustgaard]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Emulation]]&lt;/div&gt;</summary>
		<author><name>Stefan Haubenthal</name></author>
	</entry>
	<entry>
		<id>http://www.ninerpedia.org/index.php?title=Rasmus_Moustgaard&amp;diff=51036</id>
		<title>Rasmus Moustgaard</title>
		<link rel="alternate" type="text/html" href="http://www.ninerpedia.org/index.php?title=Rasmus_Moustgaard&amp;diff=51036"/>
		<updated>2025-07-04T15:57:12Z</updated>

		<summary type="html">&lt;p&gt;Stefan Haubenthal: Atic Atac&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Games by &amp;#039;&amp;#039;&amp;#039;Rasmus Moustgaard&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
* Atic Atac, 2025&lt;br /&gt;
* Manic Miner demo, 2025&lt;br /&gt;
* F18A Karts demo, 2024&lt;br /&gt;
* Blue River demo, 2024&lt;br /&gt;
* West Bank,  West Bank v2,  2023&lt;br /&gt;
* Through the Trap Door, 2023&lt;br /&gt;
* [[Pinball 99]], 2022&lt;br /&gt;
* [[ZQX-one]] ([[F18A]]), 2021&lt;br /&gt;
* [[Raycaster]], 2020&lt;br /&gt;
* [[TIX]], 2019&lt;br /&gt;
* 8 in 1 RASMUS arcade games, published by arcadeshopper.com&lt;br /&gt;
*# [[Bouncy&amp;#039;s obstacle course]], 2019&lt;br /&gt;
*# [[Jet Set Willy]]&lt;br /&gt;
*# [[Sports Game]]&lt;br /&gt;
*# [[Sabre Wulf]]&lt;br /&gt;
*# [[Flappy Bird]], 2014&lt;br /&gt;
*# [[Road Hunter]]&lt;br /&gt;
*# [[TI Scramble]]&lt;br /&gt;
*# [[Titanium]]&lt;br /&gt;
* [[Pyjamarama]], 2018&lt;br /&gt;
* [[Knight Lore]], 2017&lt;br /&gt;
* [[Dungeons of Asgard]], 2017&lt;br /&gt;
* [[Flying Shark]], 2017&lt;br /&gt;
* [[Fork]], 2017&lt;br /&gt;
* 3 in 1 RASMUS scrolling games, published by Jim Fetzner&lt;br /&gt;
*# Road Hunter, 2014&lt;br /&gt;
*# TI Scramble, 2013&lt;br /&gt;
*# Titanium, 2014&lt;br /&gt;
&lt;br /&gt;
https://github.com/Rasmus-M&lt;br /&gt;
&lt;br /&gt;
[[Category:People]]&lt;/div&gt;</summary>
		<author><name>Stefan Haubenthal</name></author>
	</entry>
	<entry>
		<id>http://www.ninerpedia.org/index.php?title=Super_Space_Acer&amp;diff=51035</id>
		<title>Super Space Acer</title>
		<link rel="alternate" type="text/html" href="http://www.ninerpedia.org/index.php?title=Super_Space_Acer&amp;diff=51035"/>
		<updated>2025-06-09T16:41:47Z</updated>

		<summary type="html">&lt;p&gt;Stefan Haubenthal: Created page with &amp;quot;&amp;#039;&amp;#039;&amp;#039;Super Space Acer&amp;#039;&amp;#039;&amp;#039; is a top down shooter by Mike Brent.  https://www.arcadeshopper.com/wp/store/#!/Super-Space-Acer-2024-limited-edition/p/755974759  * ColecoVision port in 2009 * Gameboy Advance port in 2025  Category:Module Category:Disk&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Super Space Acer&amp;#039;&amp;#039;&amp;#039; is a top down shooter by Mike Brent.&lt;br /&gt;
&lt;br /&gt;
https://www.arcadeshopper.com/wp/store/#!/Super-Space-Acer-2024-limited-edition/p/755974759&lt;br /&gt;
&lt;br /&gt;
* ColecoVision port in 2009&lt;br /&gt;
* Gameboy Advance port in 2025&lt;br /&gt;
&lt;br /&gt;
[[Category:Module]]&lt;br /&gt;
[[Category:Disk]]&lt;/div&gt;</summary>
		<author><name>Stefan Haubenthal</name></author>
	</entry>
	<entry>
		<id>http://www.ninerpedia.org/index.php?title=DS99/4a&amp;diff=51034</id>
		<title>DS99/4a</title>
		<link rel="alternate" type="text/html" href="http://www.ninerpedia.org/index.php?title=DS99/4a&amp;diff=51034"/>
		<updated>2025-02-14T22:38:19Z</updated>

		<summary type="html">&lt;p&gt;Stefan Haubenthal: Created page with &amp;quot;An open source TI99/4a Emulator for the Nintendo DS/DSi, see https://github.com/wavemotion-dave/DS994a by Dave Bernazzani.   Category:Emulation&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;An open source TI99/4a Emulator for the Nintendo DS/DSi, see https://github.com/wavemotion-dave/DS994a by Dave Bernazzani.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Emulation]]&lt;/div&gt;</summary>
		<author><name>Stefan Haubenthal</name></author>
	</entry>
	<entry>
		<id>http://www.ninerpedia.org/index.php?title=Terminology&amp;diff=51033</id>
		<title>Terminology</title>
		<link rel="alternate" type="text/html" href="http://www.ninerpedia.org/index.php?title=Terminology&amp;diff=51033"/>
		<updated>2025-02-13T21:08:18Z</updated>

		<summary type="html">&lt;p&gt;Stefan Haubenthal: /* A */ typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;All references to TI-99/4A also apply to TI-99/4 unless stated otherwise.&lt;br /&gt;
&lt;br /&gt;
== A ==&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Accessory devices&amp;#039;&amp;#039;&amp;#039;: Additional equipment which attaches to the computer and extends its functions&lt;br /&gt;
and capabilities. Included are pre-programmed Command Modules and units which send, receive, or store&lt;br /&gt;
computer data. such as printers and disks. These are often called peripherals.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Array&amp;#039;&amp;#039;&amp;#039;: A collection of numeric or string variables, arranged in a list or matrix for processing by the&lt;br /&gt;
computer. Each element in an array is referenced by a subscript describing its position in the list.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ASCII&amp;#039;&amp;#039;&amp;#039;: The American Standard Code for Information Interchange, the code structure used internally&lt;br /&gt;
in most personal computers to represent letters, numbers, and special characters.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;AVPC&amp;#039;&amp;#039;&amp;#039;: Advanced Video Display Processor, produced by Digit Systems  (Tom Spilane) - This PBOX card use a 9938.&lt;br /&gt;
&lt;br /&gt;
== B ==&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;BASIC&amp;#039;&amp;#039;&amp;#039;: An easy-to-use popular programming language used in most personal computers. The word Basic&lt;br /&gt;
is an acronym for &amp;quot;Beginner&amp;#039;s All-purpose Symbolic Instruction Code.&amp;quot;. See articles [[TI BASIC]] and [[Extended BASIC]]&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Baud&amp;#039;&amp;#039;&amp;#039;: Commonly used to refer to bits per second.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Binary&amp;#039;&amp;#039;&amp;#039;: A number system based on two digits. 0 and 1. The internal language and operations of the&lt;br /&gt;
computer are based on the binary system.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Branch&amp;#039;&amp;#039;&amp;#039;: A departure from the sequential performance of program statements. An unconditional branch&lt;br /&gt;
causes the computer to jump to a specified program line every time the branching statement is&lt;br /&gt;
encountered. A conditional branch transfers program control based on the result of some arithmetic or&lt;br /&gt;
logical operation.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Breakpoint&amp;#039;&amp;#039;&amp;#039;: A point in the program specified by the BREAK command where program execution can&lt;br /&gt;
be suspended. During a breakpoint, you can perform operations in Command Mode to help you locate&lt;br /&gt;
program errors. Program execution can be resumed with a CONTINUE command, unless editing took&lt;br /&gt;
place while the program was stopped.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Buffer&amp;#039;&amp;#039;&amp;#039;: An area of computer memory for temporary storage of an input or output record.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Bug;&amp;#039;&amp;#039;&amp;#039;: A hardware defect or programming error which causes the intended operation to be performed&lt;br /&gt;
incorrectly.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Byte&amp;#039;&amp;#039;&amp;#039;: A string of binary digits (bits) treated as a unit, often representing one data character The&lt;br /&gt;
computer&amp;#039;s memory capacity is often expressed as the number of bytes available. For example, a computer&lt;br /&gt;
with 16K bytes of memory has about 16,000 bytes available for storing programs and data.&lt;br /&gt;
&lt;br /&gt;
== C ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Command&amp;#039;&amp;#039;&amp;#039;: An instruction which the computer performs immediately. Commands are not a part of a&lt;br /&gt;
program and thus are entered with no preceding line number.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Command Mode&amp;#039;&amp;#039;&amp;#039;: When no program is running, the computer is in the Command (or Immediate) Mode&lt;br /&gt;
and performs each task as it is entered.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Command Modules&amp;#039;&amp;#039;&amp;#039;:Pre-programmed ROM modules which are easily inserted in the TI Home&lt;br /&gt;
Computer to extend its capabilities.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;[[Communications Register Unit]]&amp;#039;&amp;#039;&amp;#039;: serial interface embedded in TMS processors&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Concatenation&amp;#039;&amp;#039;&amp;#039;: Linking two or more strings to make a longer string. The &amp;quot;&amp;amp;&amp;quot; is the concatenation&lt;br /&gt;
operator.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Constant&amp;#039;&amp;#039;&amp;#039;: A specific numeric or string value. A numeric constant is any real number, such as 1.2 or&lt;br /&gt;
-9054. A string constant is any combination of up to 112 characters enclosed in quotes, such as &amp;quot;HELLO&lt;br /&gt;
THERE&amp;quot; or &amp;quot;275 FIRST ST.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Context switch&amp;#039;&amp;#039;&amp;#039;: Operation of TMS processors. The execution context is defined as the &amp;#039;&amp;#039;Workspace&amp;#039;&amp;#039;,the current execution location, and the status flags. By a context switch, the workspace pointer, the program counter, and the status register are loaded with new values corresponding to the new context. A context switch simplifies modular programming in assembly language. There are three machine lanuage operations that perform context switches: BLWP (branch and load workspace pointer), XOP (extended operation), and RTWP (return with workspace pointer). Apart from those, two more kinds of context switches appear: the initial context switch to the values stored at &amp;gt;0000, and interrupts that are services by an &amp;#039;&amp;#039;ISR&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;CRU&amp;#039;&amp;#039;&amp;#039;: short for Communications Register Unit&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Cursor&amp;#039;&amp;#039;&amp;#039;: A symbol which indicates where the next character will appear on the screen when you press&lt;br /&gt;
a key.&lt;br /&gt;
&lt;br /&gt;
== D ==&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Data&amp;#039;&amp;#039;&amp;#039;: Basic elements of information which are processed or produced by the computer.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Default&amp;#039;&amp;#039;&amp;#039;: A standard characteristic or value which the computer assumes if certain specifications are&lt;br /&gt;
omitted within a statement or a program.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Device&amp;#039;&amp;#039;&amp;#039;: See [[#A |Accessory Devices]].&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Device Service Routine&amp;#039;&amp;#039;&amp;#039;: (DSR) Program that is provided for accessing a peripheral device; would be called a &amp;#039;&amp;#039;driver&amp;#039;&amp;#039; in common terminology. The DSR defines device names and functions to operate the device on a higher level, abstracting from the hardware details. There are utility functions in the BASIC ROM and for assembly language programs to facilitate accessing the DSR of a device given by name (&amp;#039;&amp;#039;DSRLNK&amp;#039;&amp;#039;). The DSR is usually stored in a ROM circuit that is included on the PCB of the expansion card. Each card may be selected by a &amp;#039;&amp;#039;CRU&amp;#039;&amp;#039; operation which leads to the DSR being mapped into the CPU address space. The common region for DSRs is &amp;gt;4000 to &amp;gt;5fff. On the Geneve, DSRs are also included as parts of the MDOS operating system, replacing the fixed DSRs on the ROMs.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Disk&amp;#039;&amp;#039;&amp;#039;: A mass storage device capable of random and sequential access.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Display&amp;#039;&amp;#039;&amp;#039;: (noun) the home computer screen; (verb) to cause characters to appear on the screen.&lt;br /&gt;
&lt;br /&gt;
== E ==&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Edit Mode&amp;#039;&amp;#039;&amp;#039;:The mode used to change existing program lines. Edit Mode is entered by using the Edit&lt;br /&gt;
Command or by entering the line number followed by FCTN 1 ↓ or FCTN 2 ↑. The line specified is&lt;br /&gt;
displayed on the screen and changes can be made to any character using special keys&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;[[Editor/Assembler]]&amp;#039;&amp;#039;&amp;#039;: (E/A or Ed/As) The standard development environment for assembly language programs on the TI-99/4A. Consists of a cartridge and two diskettes; the cartridge provides a menu to select the editor, the assembler, and to load programs, and the diskettes contain the actual editor and assembler programs that are loaded by the cartridge.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Endianness&amp;#039;&amp;#039;&amp;#039;: Determines the order of bytes within words. &amp;#039;&amp;#039;Big-endian&amp;#039;&amp;#039; architectures have the higher-order byte at address x and the lower-order byte at x+1. &amp;#039;&amp;#039;Little-endian&amp;#039;&amp;#039; system have the lower-order byte at x and the higher-order byte at x+1. May also determine the bit order in a byte or word, where a big-endian bit order means that bit 0 has highest value, while bit 7 or bit 15 has lowest value. The TI systems are big-endian with respect to both multi-byte words and bit order.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;End-of-file&amp;#039;&amp;#039;&amp;#039;: The condition indicating that all data has been read from a file .&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Execute;&amp;#039;&amp;#039;&amp;#039;: To run a program; to perform the task specified by a statement or command.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Exponent&amp;#039;&amp;#039;&amp;#039;: A number indicating the power to which a number or expression is to be raised; usually&lt;br /&gt;
written at the right and above the number. For example, 28 = 2×2×2×2×2×2×2×2. In TI Basic the&lt;br /&gt;
exponent is entered following the ^ symbol or following the letter &amp;quot;E&amp;quot; in scientific notation . For example,&lt;br /&gt;
28=2^8; 1.3 × 1025 =1.3E25.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Expression&amp;#039;&amp;#039;&amp;#039;: A combination of constants, variables, and operators which can be evaluated to a single&lt;br /&gt;
result. Included are numeric, string, and relational expressions.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;[[Extended BASIC|Extended Basic]]&amp;#039;&amp;#039;&amp;#039;: (ExBas or XB) Popular BASIC environment which is downward compatible (with some few exceptions) to TI BASIC and provided on a cartridge. Extended Basic allows for using advanced programming structures, provides sprites, introduces more commands and subprograms, and can make use of a memory expansion. Time-critical parts of the interpreter are provided in machine language in the CPU address space which noticeably increases performance to the built-in TI BASIC.&lt;br /&gt;
&lt;br /&gt;
== F ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;FDC&amp;#039;&amp;#039;&amp;#039;:  - [[Floppy Disk and Hard Disk Controller Cards|Floppy Disk Controller]]&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;File&amp;#039;&amp;#039;&amp;#039;: A collection of related data records stored on a device; also used interchangeably with device for&lt;br /&gt;
input/output equipment which cannot use multiple files, such as a line printer.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Firehose cable&amp;#039;&amp;#039;&amp;#039;: Nickname for the &amp;#039;&amp;#039;Flex Cable Interface&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Fixed-length records&amp;#039;&amp;#039;&amp;#039;: Records in a file which are all the same length. If a file has fixed-length records&lt;br /&gt;
of 95 characters, each record will be allocated 95 bytes even if the data occupies only 76 positions. The&lt;br /&gt;
computer will add padding characters on the right to ensure that the record has the specified length.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Flex Cable Interface&amp;#039;&amp;#039;&amp;#039;: Card, cable, and plug that connect the TI-99/4A console with the &amp;#039;&amp;#039;Peripheral Expansion Box&amp;#039;&amp;#039;. The Flex Cable Interface&amp;#039;s card was usually plugged into slot 1 of the P-Box.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Function&amp;#039;&amp;#039;&amp;#039;: A feature which allows you to specify as &amp;quot;single&amp;quot; operations a variety of procedures, each of&lt;br /&gt;
which actually contains a number of steps; for example, a procedure to produce the square root via a&lt;br /&gt;
simple reference name.&lt;br /&gt;
&lt;br /&gt;
== G ==&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;GPL - Graphics Programming Language&amp;#039;&amp;#039;&amp;#039;: Programming language at assembly language level, executed by a virtual machine called &amp;#039;&amp;#039;GPL interpreter&amp;#039;&amp;#039; or &amp;#039;&amp;#039;Monitor&amp;#039;&amp;#039;. GPL is designed as a language for an 8-bit architecture and stored within &amp;#039;&amp;#039;GROMs&amp;#039;&amp;#039;. Due to the fact that GPL must be interpreted, the performance is poor compared to native machine language, yet still much faster than BASIC. The reasons for defining this language may be that Texas Instruments faced the problem that TI BASIC and other applications in &amp;#039;&amp;#039;Command Modules&amp;#039;&amp;#039; (cartridges) became too large to fit into the available areas of the CPU address space, so they made use of special memory devices called GROMs which had a higher capacity than available ROM chips, yet within a smaller package. Other theories say that GPL was one means of controlling software development from third parties. The language has no specific graphic features despite its name, but possibly it was named after the location where it is stored (GROMs).&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;GRAMULATOR&amp;#039;&amp;#039;&amp;#039; Graphics Ram Module produced by Cadd Electronics allows the user to load/modify and run cartridges.   Unlike the GramKracker produced by Millers Graphics with modifications, this unit could also run MBX modules. 96K of memory with battery backup&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Graphics&amp;#039;&amp;#039;&amp;#039;: Visual constructions on the screen, such as graphs, patterns, and drawings, both stationary&lt;br /&gt;
and animated. TI Basic has built-in subprograms which provide easy-to-use color graphic capabilities.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Graphics line&amp;#039;&amp;#039;&amp;#039;: A 32-character line used by the TI Basic graphics subprograms.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;GROM - Graphics Read-Only Memory&amp;#039;&amp;#039;&amp;#039;: Read-only memory (ROM) circuit, packaged in a 16-pin DIP package. A GROM has a storage capacity of 6 KiB. It does not have separate address and data lines; instead, an address must first be set by putting two bytes on the data lines with the address mode pin selected. Then, data can be sequentially read from the same lines in data mode. GRAM circuits are mentioned in the Editor/Assembler manual in the context of accessing, but no real devices have been seen in the wild. GROMs have special control lines that are intended to be driven by the TMS9918 video processor (or compatibles) so it seems as if GROMs were originally designed to hold static video content.&lt;br /&gt;
&lt;br /&gt;
== H ==&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Hardware&amp;#039;&amp;#039;&amp;#039;: The various devices which comprise a computer system, including memory, the keyboard,&lt;br /&gt;
the screen, disk drives, line printers, etc.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Hertz (Hz)&amp;#039;&amp;#039;&amp;#039;: A unit of frequency. One Hertz =one cycle per second.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Hexadecimal&amp;#039;&amp;#039;&amp;#039;: A base-16 number system using 16 symbols, 0-9 and A-F. It is used as a convenient&lt;br /&gt;
&amp;quot;shorthand&amp;quot; way to express [[#B|binary]] code. For example, 1010 in binary = A in hexadecimal, 11111111 =&lt;br /&gt;
FF. Hexadecimal is used in constructing patterns for graphics characters in the CALL CHAR subprogram.&lt;br /&gt;
&lt;br /&gt;
== I ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Immediate Mode&amp;#039;&amp;#039;&amp;#039;:See [[#C|Command Mode]].&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Increment&amp;#039;&amp;#039;&amp;#039;: A positive or negative value which consistently modifies a variable .&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Input&amp;#039;&amp;#039;&amp;#039;: (noun) data to be placed in computer memory; (verb) the process of transferring data into&lt;br /&gt;
memory.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Input line&amp;#039;&amp;#039;&amp;#039;: The amount of data which can be entered at one time. In TI Basic, this is 112 characters.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Integer&amp;#039;&amp;#039;&amp;#039;: A whole number, either positive, negative, or zero.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Interrupt Service Routine&amp;#039;&amp;#039;&amp;#039;:  (ISR) Portion of code which is called in response to an interrupt. The main ISRs are found in the console ROM and are called when VDP interrupts occur. Peripheral expansion cards like the serial interface may define own ISRs. An ISR has similarities with DSRs as it is usually invoked via a context switch, but usually not by a command but by the definition within the CPU.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Internal data-format&amp;#039;&amp;#039;&amp;#039;: Data in the form used directly by the computer. Internal numeric data is 8&lt;br /&gt;
bytes long plus 1 byte which specifies the length. The length for internal string data is one byte per&lt;br /&gt;
character in the string plus one length-byte.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;I/O&amp;#039;&amp;#039;&amp;#039;: Input/Output, usually refers to a device function. I/O is used for communication between the&lt;br /&gt;
computer and other devices (e.g., keyboard, disk)&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Iteration&amp;#039;&amp;#039;&amp;#039;: The technique of repeating a group of program statements: one repetition of such a group.&lt;br /&gt;
See [[#L|Loop]].&lt;br /&gt;
&lt;br /&gt;
== L ==&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Line&amp;#039;&amp;#039;&amp;#039;: See graphics line, input line, print line, or program line.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Loop&amp;#039;&amp;#039;&amp;#039;: A group of consecutive program lines which are repeatedly performed, usually a specified number&lt;br /&gt;
of times.&lt;br /&gt;
&lt;br /&gt;
== M ==&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Mantissa&amp;#039;&amp;#039;&amp;#039;: The base number portion of a number expressed in scientific notation . In 3.264E+4, the&lt;br /&gt;
mantissa is 3.264.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Mass storage device&amp;#039;&amp;#039;&amp;#039;: An accessory device , such as a cassette recorder or disk drive, which stores&lt;br /&gt;
programs and/or data for later use by the computer. This information is usually recorded in a format&lt;br /&gt;
readable by the computer, not people.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;[[MBX]]&amp;#039;&amp;#039;&amp;#039; Milton Bradley Expansion Unit (yes the toy maker) allowed the 99/4a to use voice directed games, a special joystick, and a special touchpad keyboard. Also a secondary supply of synthesised speech. Special modules were made for this but most would work without it.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Memory&amp;#039;&amp;#039;&amp;#039;: See [[#R|RAM, and ROM]] and [[#G|GRAM and GROM]], and mass storage device.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Module&amp;#039;&amp;#039;&amp;#039;: See [[#C|Command Module]].&lt;br /&gt;
&lt;br /&gt;
== N ==&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Noise&amp;#039;&amp;#039;&amp;#039;: Various sounds which can be used to produce interesting sound effects. A noise, rather than a&lt;br /&gt;
tone, is generated by the CALL SOUND subprogram when a negative frequency value is specified&lt;br /&gt;
(-1 through -8).&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Null string&amp;#039;&amp;#039;&amp;#039;: A string which contains no characters and has zero length. ( &amp;quot;&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Number Mode&amp;#039;&amp;#039;&amp;#039;:The mode assumed by the computer when it is automatically generating program line&lt;br /&gt;
numbers for entering or changing statements.&lt;br /&gt;
&lt;br /&gt;
== O ==&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Operator&amp;#039;&amp;#039;&amp;#039;: A symbol used in calculations (numeric operators) or in relationship comparisons (relational&lt;br /&gt;
operators). See also article [[Mathematical operators to replace logical operators]].&lt;br /&gt;
 The numeric operators are:          + - * / ^&lt;br /&gt;
 The relational operators are:       &amp;gt; &amp;lt; = &amp;gt;= &amp;lt;= &amp;lt;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Output&amp;#039;&amp;#039;&amp;#039;: (noun) information supplied by the computer; (verb) the process of transferring information&lt;br /&gt;
from the computer&amp;#039;s memory onto a device, such as a screen, line printer, or mass storage device.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Overflow&amp;#039;&amp;#039;&amp;#039;: The condition which occurs when a rounded value greater than 9.9999990999999E127 or&lt;br /&gt;
less than —9.9999999999999E127 is entered or computed. When this happens, the value is replaced by&lt;br /&gt;
the computer&amp;#039;s limit, a warning is displayed. and the program continues.&lt;br /&gt;
&lt;br /&gt;
== P ==&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Parameter&amp;#039;&amp;#039;&amp;#039;: Any of a set of values that determine or affect the output of a statement* or function.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;P-Box&amp;#039;&amp;#039;&amp;#039;: (or PE Box or PEB) short for &amp;#039;&amp;#039;[[Peripheral Expansion System]] Box&amp;#039;&amp;#039; or &amp;#039;&amp;#039;Peripheral Expansion Box&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;PIO&amp;#039;&amp;#039;&amp;#039;: Parrallel/Printer Port.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Print line&amp;#039;&amp;#039;&amp;#039;: a 28-position line used by the PRINT and DISPLAY statements.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Program&amp;#039;&amp;#039;&amp;#039;: A set of statements which tell the computer how to perform a complete task.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Program line&amp;#039;&amp;#039;&amp;#039;: A line containing a single statement . The maximum length .of a program line is 112&lt;br /&gt;
characters .&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Prompt&amp;#039;&amp;#039;&amp;#039;; A symbol (&amp;gt;) which marks the beginning of each command or program line you enter; a&lt;br /&gt;
symbol or phrase that requests input from the user.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Pseudo-random number&amp;#039;&amp;#039;&amp;#039;: A number produced by a definite set of calculations (algorithm) but which&lt;br /&gt;
is sufficiently random to be considered as such for some particular purpose. A true random number is&lt;br /&gt;
obtained entirely by chance.&lt;br /&gt;
&lt;br /&gt;
== R ==&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Radix-100&amp;#039;&amp;#039;&amp;#039;: a number system based on 100. See article [[Radix-100]]&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;RAM&amp;#039;&amp;#039;&amp;#039;: Random Access Memory; the main memory where program statements and data are temporarily&lt;br /&gt;
stored during program execution . New programs and data can be read in, accessed, and changed in RAM.&lt;br /&gt;
Data stored in RAM is erased whenever the power is turned off or Basic is exited.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Record&amp;#039;&amp;#039;&amp;#039;: (noun) a collection of related data elements, such as an individual&amp;#039;s payroll information or a&lt;br /&gt;
student&amp;#039;s test scores. A group of similar records, such as a company&amp;#039;s payroll records. is called a file.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;[[Reserved word]]&amp;#039;&amp;#039;&amp;#039;:In programming languages, a special word with a pre-defined meaning. A reserved&lt;br /&gt;
word must be spelled correctly, appear in the proper order in a statement or command, and cannot be used&lt;br /&gt;
as a variable name.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ROM&amp;#039;&amp;#039;&amp;#039;: Read-Only Memory; certain instructions for the computer are permanently stored in ROM and&lt;br /&gt;
can be accessed but cannot be changed. Turning the power off does not erase ROM.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Run Mode&amp;#039;&amp;#039;&amp;#039;: When the computer is executing a program, it is in Run Mode. Run Mode is terminated&lt;br /&gt;
when program execution ends normally or abnormally. You can cause the computer to leave Run Mode&lt;br /&gt;
by pressing SHIFT C during program execution [[#B|(see Breakpoint)]].&lt;br /&gt;
&lt;br /&gt;
== S ==&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Scientific notation&amp;#039;&amp;#039;&amp;#039;: A method of expressing very large or very small numbers by using a base number&lt;br /&gt;
(mantissa ) times 10 raised to some power (exponent ). To represent scientific notation in TI Basic, enter&lt;br /&gt;
the sign, then the mantissa, the letter E, and the power of 10 (preceded by a minus sign if negative). For&lt;br /&gt;
example, 3.264E4; -2.47E-17;    &lt;br /&gt;
 6 is 6E0;   24 is 2.4E1;   0.52 is 5.2E-1&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Scroll&amp;#039;&amp;#039;&amp;#039;: To move the text on the screen so that additional information can be displayed.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Software&amp;#039;&amp;#039;&amp;#039;: Various programs which are executed by the computer, including programs built into the&lt;br /&gt;
computer, [[#C|Command Module]] programs, and programs entered by the user.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Sprite&amp;#039;&amp;#039;&amp;#039;: Graphic feature of the VDP at the size of one character, four, or sixteen which can be moved freely on the screen. Occupies an own layer in the display. At most, 32 sprites can be displayed on the screen. While rendering lines, the TMS9918 VDP only considers four layers per row, which means that a fifth sprite becomes partly or completely invisible where four sprites with smaller number already show in the line.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Statement&amp;#039;&amp;#039;&amp;#039;: An instruction preceded by a line number in a program. IN TI Basic, only one statement&lt;br /&gt;
is allowed in a program line&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;String&amp;#039;&amp;#039;&amp;#039;: A series of letters, numbers, and symbols treated as a unit. In TI Basic the content of a srting os indicated by &amp;quot;quotation marks&amp;quot; and a string variable is indicated by a trailing dollar sign - NAME$.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Subprogram&amp;#039;&amp;#039;&amp;#039;: A pre-defined general-purpose procedure accessible to the user through the CALL&lt;br /&gt;
statement in TI Basic. Subprograms extend the capability of Basic. Extended BASIC supports user written subprograms. Refer to article [[CALL subprograms]].&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Subroutine&amp;#039;&amp;#039;&amp;#039;: A program segment which can be used more than once during the execution of a program,&lt;br /&gt;
such as a complex set of calculations or a print routine. In TI Basic, a subroutine is entered by a GOSUB&lt;br /&gt;
statement and ends with a RETURN statement. &lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Subscript&amp;#039;&amp;#039;&amp;#039;: A numeric expression which specifies a particular item in an array . In TI Basic the&lt;br /&gt;
subscript is written in parentheses immediately following the array name.&lt;br /&gt;
&lt;br /&gt;
== T ==&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Trace&amp;#039;&amp;#039;&amp;#039;: Listing the order in which the computer performs program statements. Tracing the line numbers&lt;br /&gt;
can help you find errors in a program flow.&lt;br /&gt;
&lt;br /&gt;
== U ==&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Underflow&amp;#039;&amp;#039;&amp;#039;: The condition which occurs when the computer generates a numeric value greater than&lt;br /&gt;
-1E-128, less than 1E-128, and not zero. When an underflow occurs, the value is replaced by zero.&lt;br /&gt;
&lt;br /&gt;
== V ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;V9938&amp;#039;&amp;#039;&amp;#039;: VDP used on the Geneve or on graphical enhancement cards (&amp;quot;80-column cards&amp;quot;). Offers more graphics modes and can handle up to 192 KiB of memory.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Variable&amp;#039;&amp;#039;&amp;#039;: A name given to a value which may vary during program execution. You can think of a&lt;br /&gt;
variable as a memory location where values can be replaced by new values during program execution. A variable can be a number where for example H may have a value of 7, or a string of characters where for example T$ can have a value of &amp;quot;Module&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Variable-length records&amp;#039;&amp;#039;&amp;#039;: Records in a file which vary in length depending on the amount of data per&lt;br /&gt;
record. Using variable-length records conserves space on a file. Variable-length records can only be&lt;br /&gt;
accessed sequentially.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Video Display Processor&amp;#039;&amp;#039;&amp;#039;:  (VDP) Co-processor in TI systems dedicated to render the display contents and to output to a display device.&lt;br /&gt;
&lt;br /&gt;
== W ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Workspace&amp;#039;&amp;#039;&amp;#039;: Set of 16 workspace registers. The TMS9900/9995 processors do not have user-defined registers within the processor but make use of external RAM for their registers. This allows to use context switches, but also slows down execution considerably. The current workspace is defined by the processor register WP (workspace pointer). Choosing a new workspace just amounts to loading a new value into this register. The workspace pointer points to the location of the high byte of register 0.&lt;br /&gt;
&lt;br /&gt;
== X ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;XB&amp;#039;&amp;#039;&amp;#039;: (Also ExBas) - [[Extended BASIC]] Module.&lt;/div&gt;</summary>
		<author><name>Stefan Haubenthal</name></author>
	</entry>
	<entry>
		<id>http://www.ninerpedia.org/index.php?title=Funnelweb_environment_version_4.40&amp;diff=51032</id>
		<title>Funnelweb environment version 4.40</title>
		<link rel="alternate" type="text/html" href="http://www.ninerpedia.org/index.php?title=Funnelweb_environment_version_4.40&amp;diff=51032"/>
		<updated>2025-02-13T21:04:04Z</updated>

		<summary type="html">&lt;p&gt;Stefan Haubenthal: Category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Funnelweb Operating Environment by Tony and Will McGovern.&lt;br /&gt;
&lt;br /&gt;
Funnelwriter came first as a useful and more powerful option to [[TI Writer]], and this expanded and expanded and became Funnelweb, which is so much more than a word processor.&lt;br /&gt;
&lt;br /&gt;
[[File:fweb1.png|260px|thumb|right|Screen grab of Extended BASIC selection screen]]&lt;br /&gt;
&lt;br /&gt;
==Loading Funnelweb==&lt;br /&gt;
Funnelweb will load with almost anything, and is configured to use a number of utility programs some of which are supplied in the package.  Note that some menu options for external programs require you to add the programs from other sources, and use the required file names.&lt;br /&gt;
&lt;br /&gt;
The [[Extended BASIC]] LOADer must not be edited, and should not be SAVEd with Myarc Extended Basic 2 - copy it with a file manager.&lt;br /&gt;
&lt;br /&gt;
Funnelweb is highly configurable and therefore you should first make a good back up of your disks and place them safely apart. Take the time to read the multiple part documentation.&lt;br /&gt;
&lt;br /&gt;
If you load with Extended BASIC you will see the XB Selection Screen.  If you select option 1 or 2 the Extended BASIC environment is destroyed and will need to be rebooted to get back here. The selection screen can be configured and has some sample entries by way of demonstration.&lt;br /&gt;
&lt;br /&gt;
Function 7 will produce a disk directory.  In all parts of the program Ctrl C or Function 9 is effective as a BACK key.&lt;br /&gt;
&lt;br /&gt;
==TI Writer Menu==&lt;br /&gt;
[[File:fweb2.png|260px|thumb|Screen grab of first Text Editor menu]]&lt;br /&gt;
[[File:fweb3.png|260px|thumb|Screen grab of second Text Editor menu]]&lt;br /&gt;
If you select TI Writer from the XB Selection screen you will go to another menu, which can be toggled using space to a further list.&lt;br /&gt;
&lt;br /&gt;
The Text Editor is an improved version of TI Writer - see the article [[Fweb Editor Vn 5]]&lt;br /&gt;
[[File:fweb4.png|260px|thumb|Screen grab of Text Editor]]&lt;br /&gt;
&lt;br /&gt;
From the command line H is for Help which will take you to the first of several help pages - page using keys Q and A.&lt;br /&gt;
[[File:fweb5.png|260px|thumb|Screen grab of first Text Editor Help screen]]&lt;br /&gt;
&lt;br /&gt;
[[File:fweb6.png|260px|thumb|Screen grab of Disk Utilities menu]]&lt;br /&gt;
[[File:fweb8.png|260px|thumb|Screen grab of Disk Review screen]]&lt;br /&gt;
You will find Funnelweb has a Disk Utility menu which leads to Disk Review.&lt;br /&gt;
&lt;br /&gt;
==[[Editor assembler]] editor==&lt;br /&gt;
From the &amp;quot;Editor Assembler&amp;quot; menu you can access the Programmers Editor, which differs from the Text Editor in that word-wrap is disabled, E/A tab defaults set, and files are saved to disk with no final tab record appended.  By default the Source Editor will use a larger character set.&lt;br /&gt;
&lt;br /&gt;
==Loaders==&lt;br /&gt;
The Program File Loader offers eight different environments to enable you to load most program files. Read the documentation EASM&lt;br /&gt;
&lt;br /&gt;
==The most important files supplied==&lt;br /&gt;
Here is a list of files- some of them may be supplied in an archived form requiring unarchiving with Barry Boone&amp;#039;s [[Archiver]].&lt;br /&gt;
* LOAD and FW - the main program in XB and E/A program formats &lt;br /&gt;
* ED and EE  - files for both Text Editor and Programmer&amp;#039;s Editor &lt;br /&gt;
* FO,FP  - Formatter program files &lt;br /&gt;
* AS,AT  - Assembler program files &lt;br /&gt;
* CF,CG  - Configuration program to set preferences in FW and LOAD and to set up User Lists &lt;br /&gt;
* SYSCON - Sample configuration file for use with CF/CG &lt;br /&gt;
* QD and QF - Quick Disk Directory called up by &amp;lt;AID&amp;gt; from main program or by the Assembler and Formatter &lt;br /&gt;
* DR,DS (or perhaps on disk as DR40,DR41) is the DiskReview program called from Central Menu Option #8 or as initial autoload &lt;br /&gt;
* C1,C2  - character definition files &lt;br /&gt;
* EA,LL,SL - system auxiliary loader files for EA Program and Load/Run, LowLoader, and ScriptLoader &lt;br /&gt;
* UL,D1  - sample User List files &lt;br /&gt;
* ML  - a sample Multi-List file &lt;br /&gt;
* SCRIPT - sample load script &lt;br /&gt;
* LH - LineHunter assembly programmers&amp;#039; search utility &lt;br /&gt;
* FSAVE - improved Save utility for generating E/A program files &lt;br /&gt;
* CP,C99PFIO;O - auxiliary files for use with Clint Pulley&amp;#039;s [[c99]] Rel 4 &lt;br /&gt;
* CT8K/O - installs FUNNELWEB as menu item in E/A + 8K RAM cartridges &lt;br /&gt;
* LDFW - Dis/Fix 80 loader for FW from Minimem, E/A and Myarc XBII &lt;br /&gt;
* XB4THLD - loader for TI-Forth from XB cartridge.&lt;br /&gt;
&lt;br /&gt;
==External programs in the Menus==&lt;br /&gt;
If you wish to add them from elsewhere (for example from Version 4.30 of Funnelweb) the following programs and file names should be used:&lt;br /&gt;
* Archiver = AR&lt;br /&gt;
* [[c99|c Compiler]] = CP&lt;br /&gt;
* Disk Hacker = DH&lt;br /&gt;
* Disk Patch = DP&lt;br /&gt;
* Disk Util = DU&lt;br /&gt;
* DM1000 = MG and MH&lt;br /&gt;
* RAG Linker = LN&lt;br /&gt;
* Infocom Adventures = DSK3.IN&lt;br /&gt;
* [[TI Forth]] = Place the disk in Drive 1 (no file name is appropriate)&lt;br /&gt;
&lt;br /&gt;
==Documentation==&lt;br /&gt;
Detailed documentation of the various aspects of the program is to be found in the FWDOC files, &lt;br /&gt;
* FWDOC/LOAD - general information on system and disk organisation, the XB user&amp;#039;s list, and program-wide facilities &lt;br /&gt;
* FWDOC/TIWR - use of the package as a substitute for the TI-Writer module &lt;br /&gt;
* FWDOC/EASM - programmer&amp;#039;s editor and assembler operation, and program loading functions &lt;br /&gt;
* FWDOC/UTIL - notes on utility programs in the package used with FUNNELWEB &lt;br /&gt;
* FWDOC/REPT - chronicle of bugs, fixes, updates, problems, and background information.  Make sure you read this file &lt;br /&gt;
* FWDOC/SCLL - details of Low-Loader, Script-Loader, Assembly MAKE, and User and Multi-List files  &lt;br /&gt;
* FWDOC/DR40 and FWDOC/DR41 - use of the DiskReview menu option in the 40 column version.  &lt;br /&gt;
&lt;br /&gt;
==80 columns==&lt;br /&gt;
The supplementary file collection for 80 column use with the DIJIT AVPC and other V9938 based systems contains *ED,EE (may be found as ED80, ED81 on the distribution disk) - 80 column Editor files which also have a 40&lt;br /&gt;
column edit mode &lt;br /&gt;
* DR,DS (may be as DR80, DR81) - 80 column DiskReview program &lt;br /&gt;
* ML (may be as ML80) - the 80-column Multi List program &lt;br /&gt;
* FWDOC/EDAV - supplementary editor and general docs for the 40 and 80 column operation with AVPC, TIM, Geneve, Mechatronic systems &lt;br /&gt;
* FWDOC/DR80, /DR81, and /DR82 - docs for 80 col DiskReview &lt;br /&gt;
* FWDOC/PSRV - details of useful program services, pointers, and data available in the FW interface block.  See also FWDOC/REPT.&lt;br /&gt;
&lt;br /&gt;
[[Category:80 column]]&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Stefan Haubenthal</name></author>
	</entry>
	<entry>
		<id>http://www.ninerpedia.org/index.php?title=Rasmus_Moustgaard&amp;diff=51031</id>
		<title>Rasmus Moustgaard</title>
		<link rel="alternate" type="text/html" href="http://www.ninerpedia.org/index.php?title=Rasmus_Moustgaard&amp;diff=51031"/>
		<updated>2025-02-13T20:03:14Z</updated>

		<summary type="html">&lt;p&gt;Stefan Haubenthal: Manic Miner demo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Games by &amp;#039;&amp;#039;&amp;#039;Rasmus Moustgaard&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
* Manic Miner demo, 2025&lt;br /&gt;
* F18A Karts demo, 2024&lt;br /&gt;
* Blue River demo, 2024&lt;br /&gt;
* West Bank,  West Bank v2,  2023&lt;br /&gt;
* Through the Trap Door, 2023&lt;br /&gt;
* [[Pinball 99]], 2022&lt;br /&gt;
* [[ZQX-one]] ([[F18A]]), 2021&lt;br /&gt;
* [[Raycaster]], 2020&lt;br /&gt;
* [[TIX]], 2019&lt;br /&gt;
* 8 in 1 RASMUS arcade games, published by arcadeshopper.com&lt;br /&gt;
*# [[Bouncy&amp;#039;s obstacle course]], 2019&lt;br /&gt;
*# [[Jet Set Willy]]&lt;br /&gt;
*# [[Sports Game]]&lt;br /&gt;
*# [[Sabre Wulf]]&lt;br /&gt;
*# [[Flappy Bird]], 2014&lt;br /&gt;
*# [[Road Hunter]]&lt;br /&gt;
*# [[TI Scramble]]&lt;br /&gt;
*# [[Titanium]]&lt;br /&gt;
* [[Pyjamarama]], 2018&lt;br /&gt;
* [[Knight Lore]], 2017&lt;br /&gt;
* [[Dungeons of Asgard]], 2017&lt;br /&gt;
* [[Flying Shark]], 2017&lt;br /&gt;
* [[Fork]], 2017&lt;br /&gt;
* 3 in 1 RASMUS scrolling games, published by Jim Fetzner&lt;br /&gt;
*# Road Hunter, 2014&lt;br /&gt;
*# TI Scramble, 2013&lt;br /&gt;
*# Titanium, 2014&lt;br /&gt;
&lt;br /&gt;
https://github.com/Rasmus-M&lt;br /&gt;
&lt;br /&gt;
[[Category:People]]&lt;/div&gt;</summary>
		<author><name>Stefan Haubenthal</name></author>
	</entry>
	<entry>
		<id>http://www.ninerpedia.org/index.php?title=Funnelweb_environment_version_4.40&amp;diff=51030</id>
		<title>Funnelweb environment version 4.40</title>
		<link rel="alternate" type="text/html" href="http://www.ninerpedia.org/index.php?title=Funnelweb_environment_version_4.40&amp;diff=51030"/>
		<updated>2025-02-02T14:35:46Z</updated>

		<summary type="html">&lt;p&gt;Stefan Haubenthal: /* 80 columns */ typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Funnelweb Operating Environment by Tony and Will McGovern.&lt;br /&gt;
&lt;br /&gt;
Funnelwriter came first as a useful and more powerful option to [[TI Writer]], and this expanded and expanded and became Funnelweb, which is so much more than a word processor.&lt;br /&gt;
&lt;br /&gt;
[[File:fweb1.png|260px|thumb|right|Screen grab of Extended BASIC selection screen]]&lt;br /&gt;
&lt;br /&gt;
==Loading Funnelweb==&lt;br /&gt;
Funnelweb will load with almost anything, and is configured to use a number of utility programs some of which are supplied in the package.  Note that some menu options for external programs require you to add the programs from other sources, and use the required file names.&lt;br /&gt;
&lt;br /&gt;
The [[Extended BASIC]] LOADer must not be edited, and should not be SAVEd with Myarc Extended Basic 2 - copy it with a file manager.&lt;br /&gt;
&lt;br /&gt;
Funnelweb is highly configurable and therefore you should first make a good back up of your disks and place them safely apart. Take the time to read the multiple part documentation.&lt;br /&gt;
&lt;br /&gt;
If you load with Extended BASIC you will see the XB Selection Screen.  If you select option 1 or 2 the Extended BASIC environment is destroyed and will need to be rebooted to get back here. The selection screen can be configured and has some sample entries by way of demonstration.&lt;br /&gt;
&lt;br /&gt;
Function 7 will produce a disk directory.  In all parts of the program Ctrl C or Function 9 is effective as a BACK key.&lt;br /&gt;
&lt;br /&gt;
==TI Writer Menu==&lt;br /&gt;
[[File:fweb2.png|260px|thumb|Screen grab of first Text Editor menu]]&lt;br /&gt;
[[File:fweb3.png|260px|thumb|Screen grab of second Text Editor menu]]&lt;br /&gt;
If you select TI Writer from the XB Selection screen you will go to another menu, which can be toggled using space to a further list.&lt;br /&gt;
&lt;br /&gt;
The Text Editor is an improved version of TI Writer - see the article [[Fweb Editor Vn 5]]&lt;br /&gt;
[[File:fweb4.png|260px|thumb|Screen grab of Text Editor]]&lt;br /&gt;
&lt;br /&gt;
From the command line H is for Help which will take you to the first of several help pages - page using keys Q and A.&lt;br /&gt;
[[File:fweb5.png|260px|thumb|Screen grab of first Text Editor Help screen]]&lt;br /&gt;
&lt;br /&gt;
[[File:fweb6.png|260px|thumb|Screen grab of Disk Utilities menu]]&lt;br /&gt;
[[File:fweb8.png|260px|thumb|Screen grab of Disk Review screen]]&lt;br /&gt;
You will find Funnelweb has a Disk Utility menu which leads to Disk Review.&lt;br /&gt;
&lt;br /&gt;
==[[Editor assembler]] editor==&lt;br /&gt;
From the &amp;quot;Editor Assembler&amp;quot; menu you can access the Programmers Editor, which differs from the Text Editor in that word-wrap is disabled, E/A tab defaults set, and files are saved to disk with no final tab record appended.  By default the Source Editor will use a larger character set.&lt;br /&gt;
&lt;br /&gt;
==Loaders==&lt;br /&gt;
The Program File Loader offers eight different environments to enable you to load most program files. Read the documentation EASM&lt;br /&gt;
&lt;br /&gt;
==The most important files supplied==&lt;br /&gt;
Here is a list of files- some of them may be supplied in an archived form requiring unarchiving with Barry Boone&amp;#039;s [[Archiver]].&lt;br /&gt;
* LOAD and FW - the main program in XB and E/A program formats &lt;br /&gt;
* ED and EE  - files for both Text Editor and Programmer&amp;#039;s Editor &lt;br /&gt;
* FO,FP  - Formatter program files &lt;br /&gt;
* AS,AT  - Assembler program files &lt;br /&gt;
* CF,CG  - Configuration program to set preferences in FW and LOAD and to set up User Lists &lt;br /&gt;
* SYSCON - Sample configuration file for use with CF/CG &lt;br /&gt;
* QD and QF - Quick Disk Directory called up by &amp;lt;AID&amp;gt; from main program or by the Assembler and Formatter &lt;br /&gt;
* DR,DS (or perhaps on disk as DR40,DR41) is the DiskReview program called from Central Menu Option #8 or as initial autoload &lt;br /&gt;
* C1,C2  - character definition files &lt;br /&gt;
* EA,LL,SL - system auxiliary loader files for EA Program and Load/Run, LowLoader, and ScriptLoader &lt;br /&gt;
* UL,D1  - sample User List files &lt;br /&gt;
* ML  - a sample Multi-List file &lt;br /&gt;
* SCRIPT - sample load script &lt;br /&gt;
* LH - LineHunter assembly programmers&amp;#039; search utility &lt;br /&gt;
* FSAVE - improved Save utility for generating E/A program files &lt;br /&gt;
* CP,C99PFIO;O - auxiliary files for use with Clint Pulley&amp;#039;s [[c99]] Rel 4 &lt;br /&gt;
* CT8K/O - installs FUNNELWEB as menu item in E/A + 8K RAM cartridges &lt;br /&gt;
* LDFW - Dis/Fix 80 loader for FW from Minimem, E/A and Myarc XBII &lt;br /&gt;
* XB4THLD - loader for TI-Forth from XB cartridge.&lt;br /&gt;
&lt;br /&gt;
==External programs in the Menus==&lt;br /&gt;
If you wish to add them from elsewhere (for example from Version 4.30 of Funnelweb) the following programs and file names should be used:&lt;br /&gt;
* Archiver = AR&lt;br /&gt;
* [[c99|c Compiler]] = CP&lt;br /&gt;
* Disk Hacker = DH&lt;br /&gt;
* Disk Patch = DP&lt;br /&gt;
* Disk Util = DU&lt;br /&gt;
* DM1000 = MG and MH&lt;br /&gt;
* RAG Linker = LN&lt;br /&gt;
* Infocom Adventures = DSK3.IN&lt;br /&gt;
* [[TI Forth]] = Place the disk in Drive 1 (no file name is appropriate)&lt;br /&gt;
&lt;br /&gt;
==Documentation==&lt;br /&gt;
Detailed documentation of the various aspects of the program is to be found in the FWDOC files, &lt;br /&gt;
* FWDOC/LOAD - general information on system and disk organisation, the XB user&amp;#039;s list, and program-wide facilities &lt;br /&gt;
* FWDOC/TIWR - use of the package as a substitute for the TI-Writer module &lt;br /&gt;
* FWDOC/EASM - programmer&amp;#039;s editor and assembler operation, and program loading functions &lt;br /&gt;
* FWDOC/UTIL - notes on utility programs in the package used with FUNNELWEB &lt;br /&gt;
* FWDOC/REPT - chronicle of bugs, fixes, updates, problems, and background information.  Make sure you read this file &lt;br /&gt;
* FWDOC/SCLL - details of Low-Loader, Script-Loader, Assembly MAKE, and User and Multi-List files  &lt;br /&gt;
* FWDOC/DR40 and FWDOC/DR41 - use of the DiskReview menu option in the 40 column version.  &lt;br /&gt;
&lt;br /&gt;
==80 columns==&lt;br /&gt;
The supplementary file collection for 80 column use with the DIJIT AVPC and other V9938 based systems contains *ED,EE (may be found as ED80, ED81 on the distribution disk) - 80 column Editor files which also have a 40&lt;br /&gt;
column edit mode &lt;br /&gt;
* DR,DS (may be as DR80, DR81) - 80 column DiskReview program &lt;br /&gt;
* ML (may be as ML80) - the 80-column Multi List program &lt;br /&gt;
* FWDOC/EDAV - supplementary editor and general docs for the 40 and 80 column operation with AVPC, TIM, Geneve, Mechatronic systems &lt;br /&gt;
* FWDOC/DR80, /DR81, and /DR82 - docs for 80 col DiskReview &lt;br /&gt;
* FWDOC/PSRV - details of useful program services, pointers, and data available in the FW interface block.  See also FWDOC/REPT.&lt;br /&gt;
&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Stefan Haubenthal</name></author>
	</entry>
	<entry>
		<id>http://www.ninerpedia.org/index.php?title=Features_of_the_TI_and_Geneve_emulation_in_MESS&amp;diff=51029</id>
		<title>Features of the TI and Geneve emulation in MESS</title>
		<link rel="alternate" type="text/html" href="http://www.ninerpedia.org/index.php?title=Features_of_the_TI_and_Geneve_emulation_in_MESS&amp;diff=51029"/>
		<updated>2025-02-02T14:35:02Z</updated>

		<summary type="html">&lt;p&gt;Stefan Haubenthal: /* Human-computer interfaces */ typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;MESS offers a lot of features for the emulation of TI and Geneve systems. Below we describe the set of features for versions 0.147 and higher.&lt;br /&gt;
&lt;br /&gt;
== Emulated systems ==&lt;br /&gt;
&lt;br /&gt;
Within the TI world of Home Computing, MESS emulates the&lt;br /&gt;
&lt;br /&gt;
* [[TI-99/4]], the predecessor of the TI-99/4A. Of course, as always, you need the ROMs of the console.&lt;br /&gt;
* [[TI-99/4A]], silver/black console. We may add the beige console ROM if we get a dump. &lt;br /&gt;
* [[SNUG#SGCPU|SGCPU]], Unofficially also called TI-99/4P. This is an expansion box card from [[SNUG]] which is equipped with the original circuits from the TI-99/4A console, but without video processor, which is located on the [[SNUG#EVPC|EVPC]] card.&lt;br /&gt;
* [[TI-99/8]], the unknown successor, never gone to market. It is only available in small numbers as prototypes, and there are numerous versions with different ROMs. MESS allows you to get to know this rare gem.&lt;br /&gt;
* [[Geneve 9640]], Myarc&amp;#039;s quite successful successor to the TI-99/4A. Even if you once refrained from investing in this wonderful machine, you now have the opportunity to learn more about it and possibly feel a late regret. We also have the [[GenMod]] variant for selection.&lt;br /&gt;
* [[TM990/189]] board. This was a single board microcomputer mainly for educational purposes&lt;br /&gt;
&lt;br /&gt;
Apart from those, MESS emulates a huge number of systems from other vendors, like Commodore machines (VIC-20, C64, Amiga), Atari, Sinclair (ZX-81, Spectrum), also PC-XT and PC-AT, in case you have missed this part of Personal Computing evolution. &lt;br /&gt;
&lt;br /&gt;
But let&amp;#039;s stay with the TI systems here.&lt;br /&gt;
&lt;br /&gt;
== Emulated peripherals ==&lt;br /&gt;
&lt;br /&gt;
MESS emulates a broad collection of peripheral cards of the TI systems. That is, we emulate the &amp;#039;&amp;#039;&amp;#039;second generation&amp;#039;&amp;#039;&amp;#039; of peripheral expansion of the TI using the [[Peripheral Expansion Box]]. We do not target the first generation where separate devices were added next to each other, forming a &amp;quot;daisy chain&amp;quot; of boxes, which eventually required you to buy a longer table. The only remaining item from these times was the [[TI-99 sidecar expansion#Speech Synthesizer|Speech Synthesizer]], which was often moved into the [[Peripheral Expansion Box|PEB]] using an adaptor card. Within MESS we assume that the synthesizer was indeed put into the box on such an adaptor.&lt;br /&gt;
&lt;br /&gt;
=== Memory expansion cards ===&lt;br /&gt;
&lt;br /&gt;
* The original TI 32K Memory Expansion. However, to be honest, we model this card as having an 8K and a 24K chip inside and not the complicated array of 32 single 1K chips that you will find in the real card. This is a minor cheat in the model.&lt;br /&gt;
* Myarc Memory expansion card MEXP-1 (512 MiB), with the internal 8 KiB DSR ROM which allows for testing and partitioning the card, and it introduces new devices which are make available to BASIC programs, like a RAMdisk device.&lt;br /&gt;
* The SuperAMS card in its 1 MiB configuration.&lt;br /&gt;
* The Horizon 4000 RAMdisk card, with full 16 MiB buffered RAM, Phoenix and RAMBO extension.&lt;br /&gt;
* The Geneve MEMEX expansion from Myarc. May be used together with the [[GenMod]] feature to expand the memory to the full 2 MiB range&lt;br /&gt;
&lt;br /&gt;
=== Disk controllers ===&lt;br /&gt;
&lt;br /&gt;
* The original TI DSSD disk controller card with the FDC1771 controller chip. This card cannot read 360 KiB disks, only 90K and 180K (double sided).&lt;br /&gt;
* The BwG controller from [[SNUG]], with the WD1773 double-density controller chip, 32 KiB EPROM, 2 KiB RAM, and real-time clock.&lt;br /&gt;
* The HFDC controller from Myarc with the HDC9234 chip from SMC. Supports up to 4 floppy drives and 3 [[Hardware#Hard_disk_drives|MFM hard disk]] drives, includes 32 KiB RAM, and a real-time clock. Tape support is not available.&lt;br /&gt;
* [[Thierry Nouspikel]]&amp;#039;s [[IDE Project Card|IDE adaptor card]]. This is is mainly untested, though.&lt;br /&gt;
* Thierry Nouspikel&amp;#039;s USB/SmartMedia adaptor card. Same for this one.&lt;br /&gt;
&lt;br /&gt;
=== System modification and extension ===&lt;br /&gt;
&lt;br /&gt;
* The HSGPL card from [[SNUG]]. It is also needed for the SGCPU as it holds the GROM contents. It simulates 16 banks of 64 KiB GROM space, 2 banks of 64 KiB GRAM space, 2 banks of 32 KiB RAM, and 512 KiB for the DSR.&lt;br /&gt;
* The P-Code card. This card was the entry to the world of UCSD Pascal programming on the TI, but with the card and three separate disks, it was so expensive that most Home Computer enthusiasts were never willing to really go for it. &lt;br /&gt;
* The Enhanced Video Processor Card (EVPC) from SNUG. It replaced the console&amp;#039;s video processor with the V9938 known from the Geneve.&lt;br /&gt;
* The Speech Synthesizer (mounted on an adaptor), including its internal speech ROMs. &lt;br /&gt;
* The internal 16 bit 32KiB expansion which many users applied to their consoles. It is actually emulated with 16 bit width and zero wait state, thus showing realistic speed-up.&lt;br /&gt;
&lt;br /&gt;
=== Human-computer interfaces ===&lt;br /&gt;
&lt;br /&gt;
* The dual joystick port. The real joysticks are simulated by keys on the PC keyboard. You can, however, attach joysticks on the joystick ports of the PC, also via USB. There are adaptors which allow for attaching the original digital joysticks (like Competition Pro, Prostick) to the USB port.&lt;br /&gt;
* The Mechatronic mouse which connected to the Joystick port.&lt;br /&gt;
* The TI-99/4 Infrared handheld controllers. However, I have not seen any software to really test them. These controllers were available in 99/4 prototypes only and removed on market introduction.&lt;br /&gt;
&lt;br /&gt;
=== External interfaces ===&lt;br /&gt;
&lt;br /&gt;
* The TI RS232/PIO card. While the PIO allows to attach a file on the PC file system which captures the outgoing data, it has no provisions to receive incoming bytes. The two RS232 ports (/1 and /2) can be attached via a socket connection to any other process that provides access to the PC UART.&lt;br /&gt;
&lt;br /&gt;
== System features ==&lt;br /&gt;
&lt;br /&gt;
=== Keys and keyboard ===&lt;br /&gt;
&lt;br /&gt;
* Emulated TI keyboard (keys at the positions where found on the TI keyboard) or natural keyboard (mapping PC keys to appropriate key input on the TI keyboard, e.g. &amp;quot;Del&amp;quot; key is passed to the system as FCTN-1)&lt;br /&gt;
* RESET switch (via the standard MAME/MESS key F3)&lt;br /&gt;
* LOAD interrupt switch (preconfigured to PrtScr, can be changed)&lt;br /&gt;
* Alpha Lock bug (can be turned off); this prevents joystick up detection when Alpha Lock is active&lt;br /&gt;
&lt;br /&gt;
=== Configuration ===&lt;br /&gt;
&lt;br /&gt;
* Peripheral cards add their DIP switches to the menu when active; they can, in particular. be configured to different CRU bases if available&lt;br /&gt;
* Floppy and hard disks use realistic timings by default. Can be turned off to dramatically increase speed.&lt;br /&gt;
* GROMs in the console can be turned off for cards like HSGPL to work properly.&lt;br /&gt;
&lt;br /&gt;
=== Hardware capabilities ===&lt;br /&gt;
&lt;br /&gt;
* True capabilities and limitations. Emulated VDP can still not display more than five sprites on a line.&lt;br /&gt;
* Colors close to real colors on a TV set. On Windows systems, MESS also offers a CRT emulation with geometric distortions and color artifacts.&lt;br /&gt;
* Sound as available in the console (3 channels, simple square wave) with configurable noise (frequency -4 and -8)&lt;br /&gt;
* System timing very close to reality, providing an experience virtually the same as with the real machine&lt;br /&gt;
&lt;br /&gt;
== Media ==&lt;br /&gt;
&lt;br /&gt;
=== Cartridge system ===&lt;br /&gt;
&lt;br /&gt;
The cartridge system distinguishes between various cartridge types:&lt;br /&gt;
&lt;br /&gt;
* standard cartridges (containing ROMs and GROMs)&lt;br /&gt;
* paged cartridges (Extended Basic style or other decodings)&lt;br /&gt;
* persistent RAM cartridges (MiniMemory, SuperSpace, MBX)&lt;br /&gt;
&lt;br /&gt;
The MBX expansion system (with separate console, speech processing etc.) is not emulated yet.&lt;br /&gt;
&lt;br /&gt;
* Cartridge insertion causes automatic RESET; can be inhibited (the adhesive tape trick)&lt;br /&gt;
&lt;br /&gt;
==== Single cartridge slot ====&lt;br /&gt;
&lt;br /&gt;
The single cartridge slot is known from the standard console; it allows for plugging in one cartridge at a time. &lt;br /&gt;
&lt;br /&gt;
==== Super cartridge expander ====&lt;br /&gt;
&lt;br /&gt;
The multi-cartridge expander&lt;br /&gt;
* allows for plugging in up to 4 cartridges at a time.&lt;br /&gt;
* selecting the cartridges via GROM address (also switching the ROMs accordingly)&lt;br /&gt;
* selecting the cartridges via a switch (like the Navarone Widget)&lt;br /&gt;
&lt;br /&gt;
==== GRAM Kracker ====&lt;br /&gt;
&lt;br /&gt;
The GRAM Kracker can be used instead of the single/multi slot. It requires a built-in ROM to be present as a memory dump.&lt;br /&gt;
&lt;br /&gt;
* Full emulation of the switch row on the front panel. You can exactly follow the instructions from the manual. (Only RESET is not emulated as this function is provided by the emulator itself.)&lt;br /&gt;
* Contents are stored in nvram file. You can replace that file to make use of multiple different GRAM Kracker instances.&lt;br /&gt;
* Adds a cartridge slot like the real device in order to dump cartridges.&lt;br /&gt;
&lt;br /&gt;
=== Floppy disks ===&lt;br /&gt;
&lt;br /&gt;
Floppy disks are emulated by a file on the host computer&amp;#039;s file system. This file has typically the same size as the contents of the original floppy disk. All changes are applied to this image file. In order to access files of that image by programs on the host computer (e.g. reading a text file by a PC word processor) you can export them with tools like [https://www.mizapf.de/ti99/timt TIImageTool].&lt;br /&gt;
&lt;br /&gt;
* All storage sizes of 5.25&amp;quot; and 3.5&amp;quot; floppy disks: from 90 KiB to 2448 KiB&lt;br /&gt;
* Single/double sided, single/double/quad density (highest density only with HFDC)&lt;br /&gt;
* Sector dump images or track dump images (commonly also called v9t9 and pc99 format)&lt;br /&gt;
* Track dump images may also contain specific format properties, for example, used as copy protection.&lt;br /&gt;
* Images can be created with the imgtool from MAME/MESS or other tools like [https://www.mizapf.de/ti99/timt TIImageTool].&lt;br /&gt;
&lt;br /&gt;
Floppy disks formatted on the TI cannot be directly read by MESS, but there are tools that allows for reading these disks in PC floppy drives.&lt;br /&gt;
&lt;br /&gt;
=== Hard disks ===&lt;br /&gt;
&lt;br /&gt;
* Hard disks are emulated by the MAME/MESS core as image files in CHD format (&amp;quot;Compressed Hunks of Data&amp;quot;)&lt;br /&gt;
* MFM hard disks connected to the HFDC controller are emulated by CHD files&lt;br /&gt;
* IDE hard disks connected to the IDE controller by Thierry Nouspikel are also emulated (still untested, though).&lt;br /&gt;
&lt;br /&gt;
[[Category:MESS]]&lt;/div&gt;</summary>
		<author><name>Stefan Haubenthal</name></author>
	</entry>
	<entry>
		<id>http://www.ninerpedia.org/index.php?title=MESS_non-problems&amp;diff=51028</id>
		<title>MESS non-problems</title>
		<link rel="alternate" type="text/html" href="http://www.ninerpedia.org/index.php?title=MESS_non-problems&amp;diff=51028"/>
		<updated>2025-02-02T14:34:19Z</updated>

		<summary type="html">&lt;p&gt;Stefan Haubenthal: /* Mouse does not work */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Back to [[MESS | TI MESS emulation home page]].&lt;br /&gt;
&lt;br /&gt;
== CapsLock does not work properly ==&lt;br /&gt;
&amp;#039;&amp;#039;Symptom&amp;#039;&amp;#039;: Within the emulations, the AlphaLock (caps lock) key does not seem to work as expected.&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;Reason&amp;#039;&amp;#039;: CapsLock may be a dead key for the emulation.&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;Solution&amp;#039;&amp;#039;: Use another key for AlphaLock/CapsLock. Have a look at the &amp;quot;Input&amp;quot; definitions for this system in the MESS popup menu. A good replacement is the left &amp;quot;Windows&amp;quot; key.&lt;br /&gt;
&lt;br /&gt;
== TI-99/8(e) does not start up ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;Symptom&amp;#039;&amp;#039;: When trying to start the TI-99/8, the screen stays black. &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;Reason&amp;#039;&amp;#039;: Probably you are using a broken ROM. Some servers offer 99/8 ROMs which have no proper ROM or GROM dump. When you unpack the zip file, check whether 998rom.bin or 998grom.bin only contains the hex bytes &amp;#039;&amp;#039;&amp;#039;de, ad, be, ef,&amp;#039;&amp;#039;&amp;#039; repeated (to be read as &amp;quot;dead beef&amp;quot;). This means the ROM was not dumped. You need a proper ROM. Get in contact with us.&lt;br /&gt;
&lt;br /&gt;
The ROM we are using is for 99/8 only. The European version (99/8e) does not work with this ROM.&lt;br /&gt;
&lt;br /&gt;
== Dead keys on emulated keyboard ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;Symptom&amp;#039;&amp;#039;: Especially on international keyboards (like the German keyboard layout), some keys are dead which are required in the emulation.&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;Reason&amp;#039;&amp;#039;: These keys are not listed in the hardcoded default setting.&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;Solution&amp;#039;&amp;#039;: Use a suitable keymap. Recent MESS distributions should contain keymap files. In Linux it is recommended to use the options &amp;#039;&amp;#039;-keymap&amp;#039;&amp;#039; and &amp;#039;&amp;#039;-keymap_file &amp;lt;file&amp;gt;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
== Emulator does not start with HSGPL ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;Symptom&amp;#039;&amp;#039;: If the HSGPL switch is set in the menu, the emulator does not start up; only a black screen.&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;Reason&amp;#039;&amp;#039;: ROMs are missing. These ROMs do not ship with MESS.&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;Solution&amp;#039;&amp;#039;: Contact the manufacturer of the HSGPL card to get a copy of the ROM.&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Can&amp;#039;t find the settings menu in SDLMESS ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;Symptom&amp;#039;&amp;#039;: Unlike the Windows version, SDLMESS does not show a menu bar.&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;Solution&amp;#039;&amp;#039;: Use Scroll-Lock to switch to &amp;#039;&amp;#039;Partial Mode&amp;#039;&amp;#039;, then press TAB. You will get an On-Screen-Display menu. Press Scroll-Lock later to turn on the full keyboard emulation.&lt;br /&gt;
&lt;br /&gt;
== MESS does not find the ROM files ==&lt;br /&gt;
&amp;#039;&amp;#039;Symptom&amp;#039;&amp;#039;: MESS says it cannot find the game.&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;Reason&amp;#039;&amp;#039;: ROM files are missing, or the ROM folder has not been set in the ini file.&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;Solution&amp;#039;&amp;#039;: Check whether the desired ROM files are present. MESS does not ship with any ROMs, so try to find them on the net somewhere. (Note that you should have the real hardware to avoid being called a pirate.) Put the ROM files (zip file, like ti99_4ae.zip) in a folder, and set the &amp;#039;&amp;#039;&amp;#039;rompath&amp;#039;&amp;#039;&amp;#039; in the mess.ini file to that folder. If you don&amp;#039;t have an ini file, you should create it using &amp;#039;&amp;#039;mess -createconfig&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
== Cannot save programs to Mini Memory (0.130 and earlier) ==&lt;br /&gt;
&amp;#039;&amp;#039;Symptom&amp;#039;&amp;#039;: Trying to load a previously saved BASIC Program from Mini Memory gives an I/O 57 error.&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;Reason&amp;#039;&amp;#039;: No RAM file in cartridge space.&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;Solution&amp;#039;&amp;#039;: Load a dummy file to cartridge slot 3 which matches the pattern &amp;quot;*m.bin&amp;quot;, like &amp;quot;memorym.bin&amp;quot;. This enables Mini Memory handling. &amp;#039;&amp;#039;&amp;#039;Note:&amp;#039;&amp;#039;&amp;#039; This is only valid for MESS versions &amp;lt; 0.131.&lt;br /&gt;
&lt;br /&gt;
== Mouse does not work ==&lt;br /&gt;
&amp;#039;&amp;#039;Symptom&amp;#039;&amp;#039;: Neither the Mechatronic Mouse nor the Geneve mouse are working.&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;Reason&amp;#039;&amp;#039;: Mouse is not activated.&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;Solution&amp;#039;&amp;#039;: In mess.ini, set mouse to 1 or use &amp;quot;-mouse&amp;quot; as argument on startup.&lt;br /&gt;
&lt;br /&gt;
== Console reset when loading from disk in Editor/Assembler ==&lt;br /&gt;
&amp;#039;&amp;#039;Symptom&amp;#039;&amp;#039;: The TI-99/4A resets (emulated reset) when loading a file into the editor or on related activities.&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;Reason&amp;#039;&amp;#039;: Disk is unreadable in some areas. Either there are actually bad sectors, or the disk controller cannot read this format.&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;Solution&amp;#039;&amp;#039;: Check whether you are using a disk controller which can read the format. The TI disk controller cannot read DSDD disks, take the HFDC.&lt;br /&gt;
&lt;br /&gt;
== Cartridge does not appear in selection list (new cartridge system) ==&lt;br /&gt;
&amp;#039;&amp;#039;Symptom&amp;#039;&amp;#039;: Although the cartridge is loaded, it does not show up in the selection list.&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;Reason&amp;#039;&amp;#039;: The cartridge may be a ROM-only cartridge without GROM. In that case, the automatic cartridge system does not see it.&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;Solution&amp;#039;&amp;#039;: Change the cartslot dip switch to the respective slot. This disables the automatic cartridge selection.&lt;br /&gt;
&lt;br /&gt;
== Parsec only runs in cartridge slot 1 (new cartridge system) ==&lt;br /&gt;
&amp;#039;&amp;#039;Symptom&amp;#039;&amp;#039;: Parsec crashes when executed, being plugged into a higher slot&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;Reason&amp;#039;&amp;#039;: This is actually a bug in Parsec. The programmers hard-coded the GROM base (9800) in one or more program lines, instead of using the indirect addressing.&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;Solution&amp;#039;&amp;#039;: Use Parsec in slot 1, or select the slot by number with the DIP switch. Or fix Parsec.&lt;br /&gt;
&lt;br /&gt;
== Harddisk image not mounted ==&lt;br /&gt;
&amp;#039;&amp;#039;Symptom&amp;#039;&amp;#039;: Harddisk image (*.hd) cannot be mounted.&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;Reason&amp;#039;&amp;#039;: CHD format for HD images may have changed.&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;Solution&amp;#039;&amp;#039;: Use chdman to update the HD image.&lt;br /&gt;
&lt;br /&gt;
[[Category:MESS]]&lt;/div&gt;</summary>
		<author><name>Stefan Haubenthal</name></author>
	</entry>
	<entry>
		<id>http://www.ninerpedia.org/index.php?title=Programming_languages&amp;diff=51027</id>
		<title>Programming languages</title>
		<link rel="alternate" type="text/html" href="http://www.ninerpedia.org/index.php?title=Programming_languages&amp;diff=51027"/>
		<updated>2025-02-02T14:33:39Z</updated>

		<summary type="html">&lt;p&gt;Stefan Haubenthal: /* BASICs */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;TI BASIC is the first programming language that you get to know when you start using the TI. Cartridges allow to extend the limited features of the standard console considerably. Probably the first cartridge people tried to get was &amp;#039;&amp;#039;Extended Basic&amp;#039;&amp;#039;. Other languages were available to run in assembly or Basic.&lt;br /&gt;
&lt;br /&gt;
With a memory expansion and a floppy drive, programming in assembly language becomes possible. From there on, many further language compilers or interpreters may be created and complement the set of available programming languages:&lt;br /&gt;
&lt;br /&gt;
==BASICs==&lt;br /&gt;
* [[TI BASIC]] (built-in)&lt;br /&gt;
* [[Myarc Advanced BASIC]] (Geneve only)&lt;br /&gt;
Extensions to TI Basic with modules:&lt;br /&gt;
* [[Editor/Assembler]] (cartridge, disk), which includes the Editor Assembler dialect of TI BASIC&lt;br /&gt;
* [[Mini Memory]] (cartridge, disk or cassette), which includes the Mini Memory dialect of TI BASIC&lt;br /&gt;
* [[Terminal Emulator II]] (cartridge), which includes the Terminal Emulator II dialect of TI BASIC&lt;br /&gt;
* [[Personal Record Keeping]] and [[Statistics]] (cartridges), which includes the Personal Record Keeping / Statistics dialect of TI BASIC (referred to sometimes as [[Enhanced Basic]])&lt;br /&gt;
* [[BASIC Support Module]] (cartridge, disk), which includes the BASIC Support Module dialect of TI BASIC&lt;br /&gt;
* [[Advertiser]] (cartridge), which adds 36 specialized commands to TI BASIC&lt;br /&gt;
[[Extended BASIC]]s:&lt;br /&gt;
* TI [[Extended BASIC]] (cartridge)&lt;br /&gt;
* [[Myarc Extended BASIC II]] (TI or Geneve)&lt;br /&gt;
* [[Triton Super Extended BASIC]]&lt;br /&gt;
* Mechatronic&amp;#039;s [[Extended BASIC II+]] incorporated the APESOFT Expanded Graphics routines into their version of the cartridge.&lt;br /&gt;
* Winfried Winkler included many additional commands in [[Extended BASIC III]] (in extremely limited release by Asgard, but generally only available as a set of files for the HSGPL card)&lt;br /&gt;
* [[RXB]] (Rich Gilbertson), which is available as a set of program images for a GROM emulation device.&lt;br /&gt;
&lt;br /&gt;
==Forths==&lt;br /&gt;
* [[TI FORTH]], &lt;br /&gt;
* TEXFORTH&lt;br /&gt;
* [[Wycove FORTH]]&lt;br /&gt;
* [[FIG Forth 2.0]] (M. Weiand)&lt;br /&gt;
* [[TurboForth]]&lt;br /&gt;
&lt;br /&gt;
==Others==&lt;br /&gt;
* 9900 Assembly with [[Editor/Assembler]] (cartridge, disk) and [[Mini Memory]] (cartridge, tape)&lt;br /&gt;
* [[TI LOGO I]], several flavors using keywords from English, German, and other languages&lt;br /&gt;
* [[TI LOGO II]], several flavors using keywords from English, Dutch, French, German, and other languages&lt;br /&gt;
* [[c99]] (disk)&lt;br /&gt;
* [[C99 MDOS]]&lt;br /&gt;
* [[FORTRAN 9640]] (disk, Geneve)&lt;br /&gt;
* APL (Adventure Programming Language, for the classic Scott Adams Adventure)&lt;br /&gt;
* GPL (built-in, originally not available to user)&lt;br /&gt;
* [[TIC]] (cross-compiler)&lt;br /&gt;
* TASM (cross-assembler)&lt;br /&gt;
* xdt99 (cross-assembler)&lt;br /&gt;
* [[Pascal#Turbo_Pasc&amp;#039;99|Turbo Pasc&amp;#039;99]] (disk)&lt;br /&gt;
* [[Pascal#UCSD_Pascal_System|UCSD Pascal]] (cartridge, disk, expansion card)&lt;br /&gt;
&lt;br /&gt;
[[Category:Programming language| ]]&lt;/div&gt;</summary>
		<author><name>Stefan Haubenthal</name></author>
	</entry>
	<entry>
		<id>http://www.ninerpedia.org/index.php?title=Memory_Expansion_Cards&amp;diff=51026</id>
		<title>Memory Expansion Cards</title>
		<link rel="alternate" type="text/html" href="http://www.ninerpedia.org/index.php?title=Memory_Expansion_Cards&amp;diff=51026"/>
		<updated>2025-02-02T14:33:00Z</updated>

		<summary type="html">&lt;p&gt;Stefan Haubenthal: /* Mechatronics GRAM Karte */ typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The TI console has only 256 bytes of 16-bit CPU RAM directly connected to the address and data buses. This small amount of RAM provides register space to the CPU and is used to support the GPL interpreter when executing its code from a specialized type of memory called Graphics Read Only Memory (GROM). GROMs are typically 6 KB in size and have their own auto-incrementing address bus.  Instructions are placed on the data bus and read by the CPU.  Each GROM chip is accessed as a parallel device. User programs - usually BASIC programs - have to be stored in the video RAM. The strategy was as follows:&lt;br /&gt;
&lt;br /&gt;
* For normal BASIC programming, only simple video functions are necessary. So there is a (comparable) lot of free space which can be used for user programs. &lt;br /&gt;
* If more complex video functions are necessary, the programs may be stored in GROMs or ROMs in cartridges.&lt;br /&gt;
* If people still want to write own programs and have nice video output, they should purchase a memory expansion.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Original TI Memory Expansion ==&lt;br /&gt;
&lt;br /&gt;
[[Image:MemExp800.jpg|200px|left]]&lt;br /&gt;
&lt;br /&gt;
The picture shows the 32K Memory Expansion card, which placed RAM in memory locations &amp;gt;2000&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt; - &amp;gt;3FFF and &amp;gt;A000 - &amp;gt;FFFF. Using this RAM opened up the world of assembly programming on the TI, and from there, other [[Programming languages|languages]] became available over time (like FORTH, PASCAL, C). In addition, independent software authors could finally create complex programs without the need to burn them into cartridges.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;&amp;lt;small&amp;gt;Hexadecimal notation in the TI world was marked with a greater-than sign, i.e. &amp;gt;2000 is 0x2000.&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 128K SuperRAM Memory Expansion ==&lt;br /&gt;
&lt;br /&gt;
This card was considered vapor-ware for many years.  At least one survived, however, though it was only partially assembled.&lt;br /&gt;
&lt;br /&gt;
== GRAM Card ==&lt;br /&gt;
&lt;br /&gt;
This card was developed at the TI laboratory in Almelo, Holland, apparently as an alternative to the external GROM device developed in the US.  It was completely unknown to users until after TI withdrew from the home computer market and served as a proof-of-concept template from which the Mechatronics GRAM Karte was eventually developed.  Only four examples of the card survive, all of them rescued from a dumpster by a sharp-eyed TI enthusiast who once worked at the Almelo labs.&lt;br /&gt;
&lt;br /&gt;
The card uses the same GRAM header format as the Mechatronics GRAM Karte.  It has a special cartridge board attached to a cable on the card which must be inserted into the computer&amp;#039;s cartridge port to make the programs stored in the card available to the computer.  They will then appear normally on the menu screen and start when selected.  Unlike the [[Miller&amp;#039;s Graphics]] GRAM Kracker, this card does not simulate GROMs 0, 1, and 2.  Only the cartridge port GROMs and ROMs are simulated.&lt;br /&gt;
&lt;br /&gt;
== Atronics 32K Memory Expansion ==&lt;br /&gt;
&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
== Captain&amp;#039;s Wheel 32K Memory Expansion ==&lt;br /&gt;
&lt;br /&gt;
This rare card duplicated the functionality of the TI 32K Memory Expansion card. It did not come with a clam shell case. Only a dozen or so of these cards are known to survive.&lt;br /&gt;
&lt;br /&gt;
== CorComp 32K Memory Interface ==&lt;br /&gt;
&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
== CorComp 512K Memory Card ==&lt;br /&gt;
&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
== DataBioTics Grand RAM ==&lt;br /&gt;
&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
== Foundation 32K/128K Memory Card ==&lt;br /&gt;
&lt;br /&gt;
This card duplicated the functionality of the TI 32K Memory Expansion card in its basic configuration, but added a 96K RAM Disk when purchased in the expanded, 128K version.  The larger card required a DSR to utilize it to its fullest extent, which was sold initially as an option but was automatically included on later sales.  Several utility programs were written to take advantage of the card&amp;#039;s additional storage capabilities, including Mass Copy by Steve Lawless.&lt;br /&gt;
&lt;br /&gt;
Later users devised a modified DSR to allow it to use the Myarc 128K OS--and Myarc Extended BASIC 2.11. Similar modifications exist to allow the card to be expanded to 512K.&lt;br /&gt;
&lt;br /&gt;
== Horizon Ramdisk 1000/2000/3000/4000 Series ==&lt;br /&gt;
&lt;br /&gt;
The Horizon Ramdisk 1000 utilized a proprietary interface that allowed it to be easily integrated into existing computer systems. It was available in various sizes, ranging from 32MB to 512MB, catering to different user needs and system requirements. Unlike HDDs, which relied on moving parts, the Horizon Ramdisk 1000 was entirely solid-state, making it less prone to physical wear and tear, and thus more reliable.&lt;br /&gt;
&lt;br /&gt;
=== Key Features ===&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Dynamic Memory Allocation&amp;#039;&amp;#039;&amp;#039;: One of the key innovations of the Horizon Ramdisk 1000 was its dynamic memory allocation feature. This allowed the system to adjust the size of the RAM disk on-the-fly, optimizing memory usage according to the specific tasks being performed. This adaptability not only improved system performance but also extended the lifespan of the device.&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Solid-State Design&amp;#039;&amp;#039;&amp;#039;: Being entirely solid-state, the Horizon Ramdisk 1000 offered significant advantages over traditional HDDs. It was faster, quieter, and more durable, as it had no moving parts that could fail or degrade over time.&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Proprietary Interface&amp;#039;&amp;#039;&amp;#039;: The device&amp;#039;s proprietary interface was designed to ensure compatibility with a wide range of computer systems. This made it an attractive option for both personal and professional users looking to upgrade their storage solutions.&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Various Sizes&amp;#039;&amp;#039;&amp;#039;: Available in multiple sizes (32MB, 64MB, 128MB, 256MB, and 512MB), the Horizon Ramdisk 1000 catered to a broad spectrum of needs, from casual users to businesses and researchers requiring high-speed data access for complex tasks.&lt;br /&gt;
&lt;br /&gt;
=== Performance Benefits ===&lt;br /&gt;
&lt;br /&gt;
The performance benefits of the Horizon Ramdisk 1000 were notable, particularly in environments where fast data access was critical. By utilizing RAM instead of traditional disk-based storage, the device achieved read/write speeds that were significantly faster than those of HDDs. This improvement was particularly beneficial for tasks such as:&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Data Processing&amp;#039;&amp;#039;&amp;#039;: Businesses could process large datasets more quickly, leading to increased efficiency and productivity.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Gaming&amp;#039;&amp;#039;&amp;#039;: Gamers experienced reduced loading times and smoother gameplay, enhancing the overall gaming experience.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Simulation and Analysis&amp;#039;&amp;#039;&amp;#039;: Researchers and academics could run complex simulations and analyses with greater speed and efficiency.&lt;br /&gt;
&lt;br /&gt;
The Horizon Ramdisk 1000&amp;#039;s combination of innovative features and performance benefits made it a standout product in the late 1990s, setting a new standard for computer memory solutions.&lt;br /&gt;
&lt;br /&gt;
== Horizon P-GRAM Card ==&lt;br /&gt;
&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
== ICS 32K Memory Expansion ==&lt;br /&gt;
&lt;br /&gt;
This rare card duplicated the functionality of the TI 32K Memory Expansion card. It did not come with a clam shell case. Only a dozen or so of these cards are known to survive.&lt;br /&gt;
&lt;br /&gt;
== Mechatronic GRAM Karte ==&lt;br /&gt;
&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
== Morning Star 128K Memory Expansion ==&lt;br /&gt;
&lt;br /&gt;
This card was intended to provide additional memory to the TI-99/4A, in a fashion similar to the 128K Memory Expansion from Foundation.  It never lived up to this promise because the DSR for the card was never released.  It existed, but the programmer refused to turn it over to Morning Star until he was paid for his work.  The card only works as a standard 32K Memory Expansion when inserted into the PEB as a result of the missing DSR.  Very few of these cards were sold, with less than 20 known to exist today.&lt;br /&gt;
&lt;br /&gt;
== Myarc 32K/128K/512K Memory Expansion ==&lt;br /&gt;
&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
== SNUG High-Speed GPL (HSGPL) Card ==&lt;br /&gt;
&lt;br /&gt;
Please refer to main article on the [[HSGPL]] card&lt;br /&gt;
&lt;br /&gt;
== SNUG High-Speed RAM Disk-16 (HRD-16) ==&lt;br /&gt;
Please refer to [[SNUG#HRD 16 | SNUG High Speed Ram Disk]]&lt;br /&gt;
&lt;br /&gt;
== South-West 99ers SAMS Memory Card ==&lt;br /&gt;
&lt;br /&gt;
The earliest versions of this card were developed for [[Asgard Software]], and were called the Asgard Memory System.  Only a small run of the Asgard card was produced, with most of them going to developers in exchange for promises to write software that used the card.  The South-West 99ers carried the design much further, increasing the possible memory size from 128K to 256K and eventually up to 1MB.  A full suite of development software that uses the capabilities of the card was developed to allow programmers to easily harness it, but it (hardware and software) reached production readiness too late in the life cycle of the TI-99/4A to get widespread support.  This is unfortunate, as it is easily one of the ten best expansion items ever developed for the machine.  The card is in production again as a kit (summer 2007), giving the possibility of exciting new software for it if it gains sufficient acceptance within the TI community.&lt;br /&gt;
&lt;br /&gt;
[[SuperAMS]]&lt;br /&gt;
&lt;br /&gt;
== Do It Yourself 32k Memory ==&lt;br /&gt;
&lt;br /&gt;
There are several available designs for internal memory expansion inside a TI-99/4A console. &lt;br /&gt;
&lt;br /&gt;
* [http://www.mainbyte.com/ti99/32K16/32k16.html 16 bit ram on an internal board]&lt;br /&gt;
* [http://atariage.com/forums/topic/206520-internal-16-bit-32k-upgrade/?p=2705086 Anders Persson 16 bit 64k design]&lt;br /&gt;
* [https://www.harmlesslion.com/text/TI%2032k%20Mod.pdf 2-chip 8 bit internal 32k]&lt;br /&gt;
&lt;br /&gt;
Thierry Nouspikel details a proposed schematic for a PEB expansion card (labeled as untested). The Jedimatt42 sideport prototype design confirmed 95% of this circuit, except control of RDBENA (the flex cable bus transceiver). The sideport expansion was then refined to remove some of the bus buffers in the final version. &lt;br /&gt;
&lt;br /&gt;
* [http://www.nouspikel.com/ti99/titechpages.htm Theiry Nouspikel PEB card design]&lt;br /&gt;
* [https://www.jedimatt42.com/ti32kmem.html 8-bit 32k sideport] &lt;br /&gt;
&lt;br /&gt;
[[Category:Hardware]]&lt;br /&gt;
[[Category:Expansion]]&lt;/div&gt;</summary>
		<author><name>Stefan Haubenthal</name></author>
	</entry>
	<entry>
		<id>http://www.ninerpedia.org/index.php?title=Fixed_MESS_problems&amp;diff=51025</id>
		<title>Fixed MESS problems</title>
		<link rel="alternate" type="text/html" href="http://www.ninerpedia.org/index.php?title=Fixed_MESS_problems&amp;diff=51025"/>
		<updated>2025-02-02T14:32:25Z</updated>

		<summary type="html">&lt;p&gt;Stefan Haubenthal: /* Mechatronics mouse */ typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Back to [[MESS | TI MESS emulation home page]].&lt;br /&gt;
&lt;br /&gt;
== File system bug ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;Symptom&amp;#039;&amp;#039;: All MESS versions starting from 0.98 have a bad file system emulation bug which causes read and write errors on emulated disks. (Analysis of [[MESS 0.98 file system bug]])&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;Reason&amp;#039;&amp;#039;: In the MESS core, the image handling and the floppy drive handling underwent substantial restructuring. The problem is that the core maintainers believed that there is no point in distinguishing between the medium track count and the drive track count. However, the TI controller (especially the HFDC) can work with 80-track drives, and when they sense a 40-track medium, they apply double-steps. The emulation, however, forced the drive geometry to the medium geometry, which caused tracks starting from the middle to be unreachable.&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;Solution&amp;#039;&amp;#039;: Introduced a new flag in the device description of the floppy and a test on that flag. &lt;br /&gt;
&lt;br /&gt;
== Border not rendered ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;Symptom&amp;#039;&amp;#039;: In the screen display, the border is not shown; the screen contents touch the surrounding window frame.&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;Reason&amp;#039;&amp;#039;: Changes in video rendering.&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;Solution&amp;#039;&amp;#039;: Modified the display parameters.&lt;br /&gt;
&lt;br /&gt;
== Geneve unable to boot ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;Symptom&amp;#039;&amp;#039;: The Geneve emulation fails to boot. After loading some sectors from the boot drive, the booting stops, and the error message appears:&lt;br /&gt;
&lt;br /&gt;
CANNOT READ FROM FLOPPY DISK&amp;lt;br/&amp;gt;&lt;br /&gt;
PRESS ANY KEY TO RESTART&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;Reason&amp;#039;&amp;#039;: Same file system issue which was introduced with 0.98.&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;Solution&amp;#039;&amp;#039;: Introduced a flag which keeps the drive geometry.&lt;br /&gt;
&lt;br /&gt;
== Geneve reset does not work ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;Symptom&amp;#039;&amp;#039;: Resetting the Geneve with Ctrl-LShift-RShift does not work. Emulation hangs. Obviously the page is incorrect, says 0xf8 pointing to DRAM (instead of 0xf0 pointing to Boot ROM). Memory locations are all 0x00.&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;Reason&amp;#039;&amp;#039;: Probably an MDOS bug, the page is intentionally set to 0xf8 which mirrors 0xf0 (as do 0xf2, ..., 0xfe). Either mask bits, or check EPROM size.&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;Solution&amp;#039;&amp;#039;: Page address masked with 0xf1 when greater than 0xf0.&lt;br /&gt;
&lt;br /&gt;
== Emulator crashes when working with floppies ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;Symptom&amp;#039;&amp;#039;: The emulator crashes with a &amp;quot;Fatal error&amp;quot;, telling that some function may only be called in init state.&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;Reason&amp;#039;&amp;#039;: The MESS maintainers inserted safety assertions in my bugfix, without checking whether this again breaks the bugfix.&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;Solution&amp;#039;&amp;#039;: Wait for 0.123 or check out the latest sources from subversion.&lt;br /&gt;
&lt;br /&gt;
== Mechatronic mouse ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;Symptom&amp;#039;&amp;#039;: The Mechatronic mouse gets input from swapped axes. Moving the mouse left-right causes the pointer to move up-down, and moving up-down causes the pointer to go left-right. There is at least one situation (configuration-dependent) when this bug does not show up. After doing changes in the on-screen menu, the axes get swapped and keep swapped.&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;Reason&amp;#039;&amp;#039;: The mouse is queried by creating a rising edge on selecting joystick lines 1 and 2. This was incompletely implemented, just checking for a selection of line 2 (or not line 2). When the system was reset in between, the state became inconsistent.&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;Solution&amp;#039;&amp;#039;: Complete check for rising/falling edge and reset of swap flag.&lt;br /&gt;
&lt;br /&gt;
== Mini Memory&amp;#039;s persistent memory ==&lt;br /&gt;
&amp;#039;&amp;#039;Symptom&amp;#039;&amp;#039;: When a program is saved to Mini Memory and the emulator is terminated, the program is gone on the next start.&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;Reason&amp;#039;&amp;#039;: The Mini Memory RAM is not saved to a file. That is, it is actually a RAM disk pretending to be permanent storage.&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;Solution&amp;#039;&amp;#039;: Using the NVRAM save procedures from MESS (since 0.126)&lt;br /&gt;
&lt;br /&gt;
[[Category:MESS]]&lt;/div&gt;</summary>
		<author><name>Stefan Haubenthal</name></author>
	</entry>
</feed>