Jump to content

F.G. Kaal's Photo

F.G. Kaal

Member Since 25 Dec 2013
OFFLINE Last Active Yesterday, 11:54 AM

#4211429 Debugger cartridge? Suggestions please

Posted by F.G. Kaal on Sat Feb 2, 2019 5:13 AM


I need a monitor/debugger program that can fit in an 8k rom (maybe more.)
Any suggestions for source code to such a thing?  I have TI's RSBUG source code for starters.
I need the usual things like M)odify memory, C)RU, E)xecute.
Ideally I would incorporate the Line-by-line-assembler too. Is there source for that out there?
I've been living out of Mini Memory Easy Bug, and 32k, and would like to cobble together a 8k debugger utility cartridge.


Just for fun I disassembled the Line-By-Line assembler 3 years ago because I wanted something like this to run in the E/A environment. I have added comments and did the bugfixes as suggested by Stuart Conner. Maybe you can use this.


PS: Interesting technique how all opcodes are stored in some kind of compressed table.


Fred ;-)

Attached Files

  • Attached File  Lbla.zip   2.99MB   10 downloads

#4161994 PAL Repository

Posted by F.G. Kaal on Wed Nov 21, 2018 12:47 PM

It would definitely be good to know, Fred, as that way I can do a new layout for a Speech-in-the-Box board.

Programmed a GAL20V8.


A have two of those RAVE 99 speech in the box cards.


The first one is original and tested this with the original PAL20L8 which works fine off course but with my GAL20V8 the TI system hangs.


The second one must have been in my Geneve system in the 90's because the 7805 voltage regulator has been removed. Also pin #14 end pin #15 of the PAL is not conected but these pins are connected together on the PCB. Tried this one on my TI99 system and there were problems, also the speech synthesizer thought so because every CALL SAY() gave me as much UHOH's as characters in the phrase.


Replaced the PAL20L8 by the GAL20V8 ... same result, the speech synthesizer only want to say UHOH. Then I saw that the databus buffer chip was a 74HC645 on a socket, replaced this one for a 74HCT245 and now the speech syntheziser can't stop talking (HELLO, #TEXAS INSTRUMENTS#) so I switched of the system ... my poor ears ;-)


Result: The above code for the GAL20v8 does work, but pin #14 and pin#15 of the GAL must be outside of the socket and these pins must be connected on the PCB.


This has something to do whith the RDYO and RDYI signals.

#4155538 PAL Repository

Posted by F.G. Kaal on Mon Nov 12, 2018 12:14 PM

Just for fun I created a GAL for the Rave Speech in te box. According to the file date I've done this on March the 31st in 1996.


Attached File  Gal-Tispeech.zip   1.44KB   9 downloads

; title TI99/4A Speech in the Box
; pattern TISPEECH
; revision A
; author F. G. Kaal
; Date 960331
; This is a Gal for the addressing logic to place the
; TI99/4a Speech synthesizer in the expansion box.
; The three most significant addressing lines AMA,
; AMB and AMC must be High.
;                             A0 A1 A2 A3 A4 A5 An A15
; Speech read address  >9000   1  0  0  1  0  0  x   0    
; Speech write address >9400   1  0  0  1  0  1  x   0
; DBIN	- Databus in, 1= Read data, 0= Write data
; Ama	- Most significant address lines
; Amb	-  /
; Amc	- /
; A0	- Address lines to select device
; A1	-      /
; A2	-     /
; A3	-    /
; A4	-   /
; A5	-  /
; A15	- /
; RDYI	- Ready-In, Ready signal from speech synthesizer 
; RDYO	- Ready-Out, Ready to TI99/4A (open collector output)
;	  This signals will not be used, because the Speech  
;	  synthesiser is allready equiped with an open collector
;	  ready signal. If SPEECH-READY is not active, RDYI
;	  should be pulled high.
; RDB	- RDBENA, Low active signal to sense the selection of 
;		the speech synthesizer (open colector)
; G	- Low active signal to control the databus driver
; A15O	- Address line A15 for the speech synthesizer
; A5O	- Address line A5 for the speech synthesizer
; DIR	- Signal to control the direction of the databus driver
; SBE	- Speech Block Enable, Speech Synthesizer control signal
; LED	- Led output signal
; MEN	- Memory Enable, Low active


;pin 01	  02   03   04   05   06   07   08   09   10   11   12 
     DBIN Amc  Amb  Ama  A1   A0   A3   A2   A5   A4   A15  GND
;pin 13   14   15   16   17   18   19   20   21   22   23   24
     NC   RDYI RDYO RDB  G    A15O A5O  DIR  SBE  LED  MEN  VCC   

@define Select "!MEN * Ama * Amb * Amc * A0 * !A1 * !A2 * A3 * !A4 * !A15"


	SBE	= Select * !DBIN
		+ Select *  DBIN * !A5

	!G	= Select * !DBIN
		+ Select *  DBIN * !A5
	!LED	= Select * !DBIN
		+ Select *  DBIN * !A5
	A5O	= A5
	A15O	= A15
	RDB.trst= SBE

#4149086 Favourite text (programmers) editor on the TI-99/4a

Posted by F.G. Kaal on Sat Nov 3, 2018 4:59 AM


<< Fred Kaal's EDIT80 >> is my personal favorite.


While it does support the SAMS card, it does have 80 columns, works flawlessly with the F18A and plays well with TIPI.


Editing BATCH FILES for 4A/DOS is a snap with this program as it does not include the tabular and column information (what I used to unknowingly call garbage) at the end of the files which broke 4A/DOS text files.  It's small, and easy to use.  Since Fred released it, I no longer mess with TI-Writer, BA-Writer or have a need for the E/A editor.

Just to be correct: EDIT80 is the Editor (version 3.0) of the Editor/Assembler module which doesn't need the module with some features added/changed, like:

  • Added: Upper and lower case character set.
  • Added: Menu option Load: Load file.
  • Added: Menu option Save: Save file.
  • Added: Menu option Purge: Purge file.
  • Added: Menu option eXit: Exit the editor.
  • Changed: Menu option Show (line) into Goto (line), used the character S for Save file.
  • Removed: Menu option Tab (edit tabs) ... can't save this anyway.
  • Added: Hollow cursor when in insert mode.
  • Changed: Number of menu lines to 4 (was originally 2).
  • Added: Error messages (if any) on line 3 of the menu.
  • Changed: Maximum file name length from 20 to 40 characters so that files can be loaded from and saved in a sub directory.

This editor can be loaded like any other E/A option 5 program and is just a bit below 8Kb in size and loads into the LOMEM (>2000) area.



Fred ;-)

#4076102 TI99Dir locked out of files

Posted by F.G. Kaal on Sat Jul 21, 2018 12:46 PM

I can't see anything wrong in the ini file.

I can't find anything wrong in the program.

Ti99Dir just checks if it is a (image)file or a directory it is about to read.

It is a directory but I don't understand why it fails.


So I did a quick change ... the  code was allready there. When this problem occurs a also call GetLastError() and add this text to the error message.

Maybe this give some extra clues. So let me know the results.


Latest version is 6.4.a


(can't find how to add the zip file, so you have to get it from my website www.ti99-geek.nl)

#4075022 TI99Dir locked out of files

Posted by F.G. Kaal on Fri Jul 20, 2018 3:14 AM

The double periods disappear because the source directory (that is the directory where you started to delete files) can not be read (and thus the upper directory is unkmown at that point).


After reinstalling (as you call it) Ti99Dir the only thing that changes is the Ti99Dir.ini file. I suppose that that file can give some clues on this matter.

There is a section with this information (copied from my laptop):


"; Some paths last used"



So ... if it happens again ... and you exit Ti99Dir what is mentioned here?



#3839677 Mods, upgrades - best of the best people have done that impressed you.

Posted by F.G. Kaal on Sat Sep 2, 2017 6:51 AM

Is it something like this your're after? :-D




Attached Files

#3746780 CfHdxS / CfHdxP Feature Request

Posted by F.G. Kaal on Sat Apr 22, 2017 3:42 AM

Insane Multitasker asked me if it was possible to add HDX functionality to the UBERGrom using the UART,

and yes ... after quitte a few evenings and weekends fooling around and debugging here it is.


See www.ti99-geek.nl in the project section for the updated versions of CfHdxS1 v2.0, CfHdxP1 v2.0

and a new program UberHdx1 v2.0.


(They are all in the same download ... if you choose one you get them all)


All these three programs share the same code only the part that talks to the hardware differs:


CfHdxS1 -> SIO of the nanoPEB or RS232/1 of the PHP1220 RS232 card

CfHdxP1 -> PIO of the CF7A+

UberHdx1 -> UART of an UBERGrom (mp UART at last GROM base >983C, GROM slot >A000)


Added some functions (from CF2K)


X for executing a program

When a nanoPEB or CF7A+ is used; ctrl-s and ctrl-d to browse through the available volumes

and ctrl-1, ctrl2, amd ctrl-3 to mount a volume for DSK1, 2 or 3.

A mounted volume is not written back to the CF card ... it only exists while this program is



Fred ;-)

#3706693 NanoPEB v1 RS232

Posted by F.G. Kaal on Mon Feb 27, 2017 12:37 PM

If all this is about using Cf2k there was an update (v2.5) recently and this version does also recognize nanoPeb V1 without the SIO. device name.

Version 2.5 There are nanoPeb version 1 without the SIO device name and
therefore these will not be recognized as a nanoPeb.
Changed: Cf2k5.c99::detcfmod():
   Looking at CRU address >1300:
   1) If device name "SIO." is available it is a nanoPeb 1.
   2) If device name "COM1." is available it is a nanoPeb 2.
   3) If device name "RS232." is available it is a nanoPeb 1.
   4) If device name "PIO." is available it is a Cf7a+.

New version can be downloaded here: http://www.ti99-geek.nl/

#3700774 The FinalGROM 99

Posted by F.G. Kaal on Mon Feb 20, 2017 12:50 PM

I prever 4K RAM shared by all banks. Every bank can reach all RAM data.


If each bank has its own 4K of RAM it can be a lot of jugling to get data from one bank into the other.

(but it is not impossible).


(this is a difficult question if at this moment I don't have a clue what I want to do with all the RAM

and then it comes out when I have a clue there is choosen for the wrong option so actually I want

both ... o no! ... that option is not allowed).


Fred ;-)

#3669675 PEB rs232 cable questions?

Posted by F.G. Kaal on Wed Jan 11, 2017 12:00 PM

Thanks.  I tried to search for such a cable, but ti 99 4a rs232 cable didn't turn up much, and I didn't think to search for a splitter.


Pin 6 going to DTR on the 9 pin connectors seems weird, as that's an output line on both, and so they will fight each other if one is high and another low.  Since pin 6 is tied high, it seems useless to have that

pin 8 going to RTS also seems weird, as 8 is an output, and so is RTS, so they will fight.


It just seems strange, as TI took a perfectly good RS232 transceiver and crippled it by making all of these changes. 




See also what Lee posted two messages above!

Pin 6 of the TI's RS232 is called DSR but connected to the DTR signal of the TMS9902. And what is called

DTR (pin 20) is connected to the CTS/DSR pin of the TMS9902. (See RS232 card schematics).


It is all very confusing (IMHO) and that is why I created a splitter cable so that I have two serial ports on my TI's

PEB with a connector that is almost the same as a RS232 conenctor found on a PeeCee. And now I can

use a simple (the same) cross cable between my TI and PeeCee or between two PeeCee's.


Fred ;-)

#3658960 IDE card tentative commitment page

Posted by F.G. Kaal on Wed Dec 28, 2016 1:08 PM

I'll have to read through the operations guide to the card to be sure, but I have a sneaking suspicion he's using the extra RAM on that chip as a buffer of some kind (which is probably also why he recommends the 512K variants over the 128K ones)


The IDE DSR uses the lower 4KB as a fixed memory area. Here resides all the handy code that is used to read/write the IDE device and can

be used by any other level 2 or level 3 function of the DSR.


All pages are in the upper 4KB. The IDE DSR can have a maximum of four open files, these are in page 11, 12, 13 and 14. These pages contain

exactly the same code AND buffers that holds the Directory data record (DDR), File descriptor index record (FDIR), File descriptor record (FDR)

and a sector buffer of 512 + 10 bytes. The DDR, FDIR and FDR are all 256 + 10 bytes lang. The DSR doesn't use RAM of the RTC chip.

(and now i'm reading your message again I don't know for sure if you are talking about IDEAL or the IDE DSR ;-) )

#3618541 RESET BUTTON - An alternative?

Posted by F.G. Kaal on Tue Oct 25, 2016 11:13 AM

Yeah, I feel spanked and sent to the corner.

Is this safe? 




**Checks left and right for Shift838**

This is the correct method (but I myself would add a small resistor though, like 10 .. 100 ohm)

#3617796 RESET BUTTON - An alternative?

Posted by F.G. Kaal on Mon Oct 24, 2016 12:16 PM

I don't want to spoil your reset party but just for your information:


1) Be aware that pin #3 reset* of the IO port is the OUTPUT of an inverter gate of U508. If you want to blow up some gates then go ahead!

2) Always add a small resistor (like 330 ohm ... 1000 ohm or so) of you want to play with signals like this ... then [maybe] you don't blow up the gates.

3) The reset signal of the GROM port goes to some circuit of R514 and C506 which is the power up reset input of the 74LS362 or TMS9904 which is the clock generator of the system.

4) Check schematics before fooling around with IO ports.




#3576292 Fred Kaal's Module Creator

Posted by F.G. Kaal on Sun Aug 21, 2016 7:01 AM

Fixed it.


Added linker L99 v 1.6.3 in the ModuleCreator 2.0 download.


If an inverted module is created (an) empty page(s)  (or bank(s)) must be added in front of the program that is less then 4 pages (or banks) and not at the end of the program to create an 32Kb binary.



ModuleCreator can create a module file out of 1, 2, 3 or 4 Editor/Assembler option 5 programs.

The maximum size the module creator can handle is 32Kb - 4x the size of the modfunc.a99 code and this depends on the number of programs and the length of the titles in the menu.

This is roughly 4x >1E80 bytes = >7A00 or 31232 bytes. If some more PROM space is needed the flag "TI994   EQU  1" can be commented out.



Fred ;-)