This version log of MAME specifically lists all TI-related changes in the code.

Version

Release date Git Revision New features Fixes Bugs or Regressions
0.212 2019-07-31     CRU base address setting for RS232  
0.211 2019-06-27 1b969a8acb - - -
0.210 2019-05-30 ad45c9c609 - TMS9901 counter now counts at all times, not only when set to non-null. -
0.209 2019-04-24 2b317bf296 -

Fixed CRU multi-bit operations with *Rx+; fixed TI FDC issues with Geneve GPL mode; fixed SGCPU regression with CRU operations

-
0.208 2019-03-27 9483624864 - Fixed Geneve GPL mode, fixed status bits (C and OV) for SLA and INV -
0.207 2019-02-27 40fc33967c - - Geneve GPL mode lockup (e12e17ce8)
0.206 2019-01-30 cf02fe333a - - Changes in key mappings (757436bbfb)
0.205 2018-12-26 b691c38273 - Reject cartridges with more than 2 MiB dump size to avoid mem corruption Cassette operations broken in 99/8 (since 0.198)
0.204 2018-11-28 c6150e7542 - - -
0.203 2018-10-31 b57a140101 - - -
0.202 2018-09-26 856478fbda - - -
0.201 2018-08-29 4dc302ed05 All disk formats (DSK, DTK, HFE) allow for 16 sectors/track; HX5102 working with 99/2 Formatting works in 99/8 (also when changing densities); track dumps now working safely in PC99. Full cassette support for 99/2(32K). Unneeded cassette channel (Ch.1) removed. -
0.200 2018-07-25 ff19cd3977 - - -
0.199 2018-06-27 f2e805a153 BIOS selection for Geneve; GenMod now a separate driver (check ROM zips) Double density for HX5102 (HFE format only) -
0.198 2018-05-30 c5f6a62d59 TI-99/2 running; HX5102 can host two drives Fixed interrupt latching in 9995 (for 99/2); OSD blank disk creation; double-sided disks with HX5102 HX5102 cannot handle double density
0.197 2018-04-25 74293f8247 Hexbus floppy HX5102 working Read track for TIFDC; can now load Diskassembler from MG HX5102 cannot handle double-sided disks
0.196 2018-03-28 e8f2016076 - - -
0.195 2018-02-28 e44e85b8ef - - -
0.194 2018-01-31 5be2496d0c Selectable VRAM size for Geneve Debugging in cartridges, esp. MiniMemory -
0.193 2017-12-27 bf28b347fb - Removed auto-waitstates from Geneve -
0.192 2017-11-29 d771f54227 - - -
0.191 2017-10-25 a5db728b9c - - -
0.190 2017-09-27 f57574c238 - - -
0.189 2017-08-30 2beedc540f - - -
0.188 2017-07-26 7b45ec19f1 Hexbus WIP - -
0.187 2017-06-28 1d9648b01c Hexbus early WIP; new cartridge type "paged7" for TI-CALC - -
0.186 2017-05-31 e4c6cb15e0 Rearranged bus/ti99 source subtree; introduced ioport as a slot (PEB must now be plugged in) - -
0.185 2017-04-26 fe01a1342c - - -
0.184 2017-03-29 7768128734 Bus mouse is a separate device, can be used with EVPC now TI-99/4 crashes; jerky Geneve mouse; debugging for TI-99/8; sector read on HFDC -
0.183 2017-02-22 c207031 - - -
0.182 2017-01-25 dc374ba - - -
0.181 2016-12-27 bbeda6a - - -
0.180 2016-11-29 cfc8419 - Fixed state saving -
0.179 2016-10-26 32b7e58 - - -
0.178 2016-09-28 012d47d HxC HFE format support, MAME state save capability; improved performance for 99/8 Tag for MEXP-1 RAM (led to error on start) TI-99/4 unstable, presumably buffer overflow
0.177 2016-08-31 1ecb023 New floppy sounds Stuck INT line in TMS9902; RS232 line mapping; issues with deleted marks in single density; double stepping; debugger access to cartridge -
0.176 2016-07-27 4887ce1 - - -
0.175 2016-06-29 63f9a01 - - -
0.174 2016-05-25 68785dc Per-chip system ROM dumps, new cartridge ZIP files (download from WHTech), split "paged" into "paged16k" (Atarisoft) and "paged12k" (Extended Basic); Fixed GROMEMU, fixed MBX, multi-cart can be switched without reset -
0.173 2016-04-27 cfee536 GROMs rewritten as synchronous devices; TI-99/8 mainboard rewritten; Horizon with 8M setting HOLD behavior of TMS9995; issues with paged37x cartridges; missing AlphaLock on SGCPU GROMEMU cartridges broken
0.172 2016-03-30 913ab1e - - AlphaLock does not work for SGCPU
0.171 2016-02-24 3abcaee - - -
0.170 2016-01-27 b1d6f6d - - -
0.169 2015-12-30 4afd75e - - -
0.168 2015-11-25 0825ce4 - - -
0.167 2015-10-28 47f5637 - Speech working again -
0.166 2015-09-30 8e4ced4 - - Speak command only works after preceding Speak External
0.165 2015-08-26 efa3a67 PFM512 support for Geneve; Floppy drive sounds; Cartridge types paged377, paged378 (no GROM yet); HFDC switch "wait for HD" (TB 3) Track dump images working again. 32K expansion mod is off by default now (turn on in OSD menu or choose 32kmem card) -
0.164 2015-07-29 1b452e3 Modern low-level MFM hard disk emulation. Removed legacy floppy emulation. PIO fixed (no more lockups) Track dump images (dtk) may show CRC errors.
0.163 2015-06-24 d1583b9 Removed legacies 'tifdcleg' and 'bwgleg' - -
0.162 2015-05-27 64e16ca MAME and MESS distributed as one single application - -
0.161 2015-04-29 76b978d - - -
0.160 2015-03-25 0147bb4 Added a non-toggling Alphalock key for use with physical keyboards UCSD Pascal disks do not crash the emulation anymore -
0.159 2015-02-25 6ae44e4 - - -
0.158 2015-01-28 26e7a17 - - -
0.157 2015-01-03 e6f78d5 - - -
0.156 2014-11-26 ebeaa95; switched from svn - - -
0.155 2014-10-15 svn 32761 - BwG saves double density data again -
0.154 2014-07-23 31396 Modern floppy emulation for HFDC (old one remains 'hfdc', new one is 'hfdcnew') - -
0.153 2014-04-07 29406 Modern floppy system for TI FDC and BwG (old ones renamed to 'tifdcleg' and 'bwgleg') Several fixes in HSGPL HSGPL still found to crash when initializing GRAM; new BwG corrupts image on write (MFM) - bwgleg still working
0.152 2013-12-24 26738 TI-99/8 with working Pascal Fixed BwG double density and TI FDC issues -
0.151 2013-11-09 26005 Improved timing by split memory access tms9995: Fixed decrementer bug; improved debugger access -
0.150 2013-09-17 25362 TI-99/4QI available BwG controller DIP setting defaults to DSK1-DSK4. HSGPL SCON subprogram now working. RS232 dropouts fixed. -
0.149 2013-06-12 23624 (Almost) All cartridges available via software list Introduced a new cartridge type "gromemu" which allows for 8K "GROM emulations" DSK2 and DSK3 yield IO error 6 with tifdc. BwG corrupts file on write.
0.148 2013-01-11 20193 Accepts TI99-PC disk images with bad sector map TMS99xx overflow bit; HDC9234 flag for setting delete mark -
0.147 2012-09-17 17960 Cycle-precise CPU; LOAD interrupt; configurable RESET trigger in cartslot; VDP memory now visible in Debugger READY line-driven speech output -
0.146 2012-05-21 17371 (u5) MAME / MESS merge - - 8K GROM cartriges stopped working (e.g. RXB)
0.145 2012-02-07 - Complete architectural redesign - -
0.144 2011-11-15 - - Fixed problems with GRAM Kracker -
0.143 2011-06-29 - Full RS232 connectivity HSGPL flashing; SAMS fix; no more HSGPL crash with plugged-in cartridge -
0.142 2011-04-04 - Configurable v9938 RAM (128/192), MEMEX emulation Multicolor mode -
0.141 2011-01-09 - - - HSGPL flashing does not work
0.140 2010-10-31 - - - -
0.139 2010-08-01 - GRAM Kracker. Paged379i cartridges can now host 128 KiB. EVPC fully configurable. HSGPL, SGCPU, EVPC. Lots of small fixes, now all working properly. IDE support (required rewrite)
0.138 2010-05-22 - Reorganized configuration; selectable speed for disk drives HFDC and its chipset are completely rewritten. No more crash when formatting disks/hd with HFDC. Changed speech processor to TMC 0285. HSGPL and SGCPU (TI-99/4P) broken
0.137 2010-03-14 - Track dump disk images ("PC99") Defineable noise (-4/-8) corrected -
0.136 2010-01-10 - - Noise generator adjusted for preset noises -
0.135 2009-11-07 - New cartridge types: paged379i and pagedcru; chdman now allows to create uncompressed writeable images. - -
0.134 2009-09-15 - - Fixed chdman; hard drive images stay writeable -
0.133 2009-07-23 - P-Code card ROM-only modules are usable with the automatic cartridge selector -
0.132 2009-06-16 - - - chdman sets hard drive to read-only after conversion
0.131 2009-05-03 - Multi-cartridge handling with complex images Port control fixed (CRU); TI-99/8 declared working again. -
0.130 2009-03-10 - - - TI-99/8 locks up on startup. Declared GAME_NOT_WORKING.
0.129 2009-01-06 - Geneve got a dip switch to toggle between the version 0.9 ("Swan") and version 1.0 boot eprom. - -
0.128 2008-10-20 - - Geneve hard disk regression fixed. Real-time clock init fixed (DOW was incorrectly set). Natural keyboard now takes F12 as QUIT instead of ESC (TI-99) -
0.127 2008-08-25 - - - Geneve can't read hard drive images.
0.126 2008-07-08 - Mini Memory keeps contents in NVRAM. Peripheral cards (including floppy controllers) work again; mem_mask processing fixed -
0.125 2008-05-10 - - Natural keyboard arrow keys, delete key. Peripheral cards (including floppy controllers) deactivated.
0.124 2008-03-25 - - - Floppy controllers broken due to mem_mask inverted; natural keyboard arrow keys do not work.
0.123 2008-02-09 - - Mechatronic mouse axis swapping resolved; more floppy cleanups; fixed TI99_8 regression and made the floppy drive usable. -
0.122 2007-12-30 - - Refactorings and code cleanups -
0.121 2007-11-24 - - Border is displayed again. -
0.114 2007-04-12 - - Fixed assertion failure for ti99/4a and ti99/8 -
0.98 2005-07-10 - - - Floppy access broken.

TI-99/4A

Der TI-99/4A von Texas Instruments war der erste 16-Bit-Computer* im Heimcomputerbereich. Er ist mit 16 KiB RAM und 32 KiB ROM ausgestattet; bemerkenswert ist sein Steckmodulkonzept (von TI als Command Modules oder Solid State Software bezeichnet). Dieses erlaubt es, durch Einstecken von Steckmodulen schnell und einfach das System zu erweitern. Diese Module können Spiele beinhalten, aber auch andere BASIC-Versionen oder Entwicklungsumgebungen. Auf diese Weise sollten Diskettenlaufwerke oder andere Massenspeicher überflüssig werden; dem typischen Anwender braucht man nur zu erklären, dass das erwünschte Modul einzustecken sei, und wenn es etwas zu speichern gibt, kann man einen handelsüblichen Kassettenrekorder anschließen.

Ärgerlich war an diesem so einfachen Konzept, dass jede darüber hinausgehende Erweiterung gleich sehr viel Geld kostete. Das ursprüngliche System der an der rechten Seite einzusteckenden Geräte (Sidecar-Konzept) erwies sich schnell als instabil und platzraubend, sodass eine metallene Box angeboten wurde, in die Erweiterungskarten einzustecken sind und die auch Platz für ein Diskettenlaufwerk bot. Doch die erforderlichen Komponenten für ein leistungsfähiges, flexibles System, mit dem man etwa in Assemblersprache programmieren konnte, summierten sich schnell zu über 1000 DM (etwa €500).

Das Rennen gegen andere Homecomputer-Systeme wie dem Commodore 64 war auf diese Weise nicht zu gewinnen, und Texas Instruments beendete ihren Ausflug in die Homecomputer-Welt im Oktober 1983.

Das metallisch-schwarze Äußere gab Anlass zur Bezeichnung "DeLorean der Heimcomputer", die man bisweilen findet. Klingt irgendwie sympatisch, aber auch allzu wahr.

* Dies wird gerne immer wieder bestritten, mit Argumenten wie "keine echten 16 Bit", "nur 8 Bit angeschlossen" oder ähnliche. Was stimmt, ist, dass der 16-Bit-Datenbus der CPU auf der Hauptplatine durch einen Multiplexer läuft und auf 8 Leitungen gesetzt wird, sodass Speichertransfers stets zwei Schritte erfordern (erstes Byte, zweites Byte). Das ist übrigens kein so ungewöhnliches Vorgehen; der Intel 8088 ist ebenfalls eine 16-Bit-CPU, die nur 8 Datenleitungen nach außen führt.

 

Geneve 9640

Der Geneve 9640, gefertigt von Myarc Inc., einer kleinen amerikanischen Firma, ist kein Klon des TI-99/4A, sondern eine signifikante Erweiterung. Er ist mit einem leistungsfähigeren Prozessor (TMS9995) sowie einem deutlich weiterentwickelten Videoprozessor von Yamaha (v9938) ausgestattet. Darüber hinaus bietet er in der Grundversion 512 KiB DRAM und 32 KiB SRAM.

Der Geneve 9640 wurde als Steckkarte für die Peripheral Expansion Box (PEB) des TI-99/4A entworfen und ersetzt ihn komplett. Von außen fällt auf, dass an die Stelle der Konsole eine PC-Tastatur und eine Maus tritt. Der Geneve selbst steckt in Steckplatz 1, in dem der TI-99/4A eine Anschlusskarte erforderte.

Geneve 9640

Als Monitor diente mir lange Zeit der Commodore Monitor 1081 des Commodore Amiga, später dann ein kompatibler Röhrenmonitor. Hier abgebildet ist ein Samsung-TV, mit dem der Geneve über einen SCART-Anschluss verbunden ist.

TIImageTool - von mir bisweilen auch kurz TIMT genannt - ist ein Java-basiertes Tool zum bequemen Arbeiten mit Disk-Images, insbesondere für MAME, aber auch für andere Emulationen. Disk-Images sind Dateien, welche eine komplette Diskette beinhalten, aber dabei auch die Struktur bewahren. Im einfachsten Fall ist ein Disk-Image der Inhalt aller Sektoren der Diskette in Folge von 0 bis 359 oder größer, entsprechend dem Format.

Ich entwickelte es ab 2011 als eine Alternative zum Programm imgtool, welches zu MAME gehört und die Erstellung von Disk-Images ermöglicht. Jedoch erwies sich die Arbeit mit diesem Kommandozeilentool als äußerst umständlich, und viele Aufgaben, die bei der Arbeit mit Disk-Images wiederholt auftauchen, kann imgtool nicht leisten.

TIMT ist komplett in Java geschrieben, was eine ziemlich nahe liegende Entscheidung war: Das Tool soll auf allen Plattformen, auf denen MAME läuft, zur Verfügung stehen, und das kann Java von Hause aus sehr gut leisten. Wir sprechen hier selbstverständlich nicht von Applets, sondern von einer eigenständigen Anwendung, und daher gelten hier dieselben Regeln wie für jedes andere Programm, das man sich auf den Rechner installiert.

Tiimagetool

Download

TIImageTool can be downloaded from mizapf.eu or from WHTech. On mizapf.eu there is also the latest documentation that is also part of the in-program manual.

Note that you need a Java Runtime Environment version 7 or higher. The Java RE can be downloaded from https://www.java.com/download/ or from http://openjdk.java.net/.

Since July 2016, TIImageTool source code is available from Github: https://github.com/mizapf/tiimagetool

Version history

2.4: Sector editor; i18n, l10n for English, German; CF7 handling

2.3: HFE (Lotharek) image support; Search function

2.2: Sources available on Github; changed package structure; removed "Open device"

2.1: Open recent files; enhanced filesystem check; some fixes; output redirect

2.0: Drag-and-drop support; detachable views; paste BASIC into image

1.5: Image display (TI ARTIST, MyArt, YAPP); GPL disassembler; Tagged Object Code disassembler

1.4: Full CHD support (creating, extracting, importing, converting), Archiver support; Geneve boot disk creation

1.3: Imports binary content as a PRG file and reads TI99-PC SDF images with appended bad sector list

1.2: External device handling (working with Compact Flash or external drives). Known issue: In Windows you cannot write to the CF/external drive.

1.1: Supports CHD version 5 (MESS 0.145)

1.0: Initial version

In MAME (release 0.207), the following TI hardware is emulated:

Computers

  • TI-99/4
  • TI-99/4A
  • TI-99/4A QI
  • TI-99/8
  • TI-99/2
  • Geneve 9640

Peripheral devices

  • Peripheral Expansion Box
  • 32K Memory Expansion Card
  • TI Floppy Disk Controller Card
  • BwG Floppy Disk Controller (SNUG)
  • Enhanced Video Processor Card (SNUG)
  • Hard and Floppy Disk Controller (Myarc)
  • Horizon Ramdisk (Horizon)
  • High Speed GPL Card (SNUG)
  • Memex Card (Myarc)
  • Memory Expansion Card (Myarc)
  • P-Code Card
  • SuperAMS Memory Card (Asgard, SW99ers)
  • Speech Synthesizer plus PEB adapter
  • RS232/PIO card
  • IDE Adapter Card (Nouspikel)
  • USB/Smartmedia Adapter Card (Nouspikel)
  • Handheld controllers (Joysticks)
  • Bus mouse (EVPC, Geneve)
  • Mechatronics Mouse
  • Remote Handset Controllers (TI-99/4)
  • Floppy Disk Drives
  • Hard Disk Drives (generic and Seagate types)
  • Cassette recorder
  • Cartridge Expander

Media

  • Solid State Software cartridges
  • Cassettes (wav files)
  • Floppy disks images
  • Hard disk images

 

What is MAME?

MAME (Multi-Arcade Machine Emulator) is an emulation framework that allows for emulating a broad scope of computing devices, particularly arcade machines, but also computer systems. For a through discussion of MAME, see the MAME website. MAME offers emulations from arcade cabinets, over pocket calculators, home computers, gaming consoles, up to PCs. ROM dumps must be provided by the user, because it would be forbiddingly expensive to get licenses for such a lot of systems.

As I owned a TI-99/4A computer back in the 80ies, my special interest is, of course, the emulation of the TI computer family. This is not just the TI-99/4A console and its peripheral expansions, but also the TI-99/8, the Geneve, the TI-99/2, and some more exotic things. I started to contribute to MAME around 2007, but I am only one minor contributor among hundreds.

In MAME, quite a lot of features have already been realized; here is a list of features.

I also compiled a list of changes that are related to the TI emulation in MAME.

How does it look like?

Emulation cannot be like the real thing, people usually say. Well, have a look. Here is a short clip showing the game Parsec in action, emulated on MAME 0.207. Notice the graphics, the sound, the speech synthesis, and the speed that pretty well matches the real system.

Here are samples of two popular, classic TI games: Parsec and TI Invaders

These samples are taken from the 60Hz version (NTSC); if you are used to European consoles (50Hz), the above scenes may look too fast. Indeed, the European users always had some advantage when competing in a game because there was no compensation for the slower video clock.

System requirements for the TI family

To run MAME, and in particular the TI emulations, your host (PC, Laptop) must offer a minimum performance. You might wonder why a PC with gigahertz CPU may run into trouble when emulating an 80ies computer with 3 Megahertz clock, but the point is that MAME emulates the electrical circuits at a fairly precise level, and while in your real system, lots of things may happen in parallel, this is not the case in emulation.

Here are some tests that show you what you can expect. The percentages show how well the emulator managed to keep pace with the real system. Only when you have a 100% result, the emulation runs at the precise speed; otherwise the running time is stretched. One may also say that the numbers say how much work it has managed to do when the real system did 100%.

The number in parentheses represent the performance when the "Spectre-V2 mitigation" is effective. This vulnerability particularly affects Skylake/Kaby Lake CPUs (6* and 7* families).

(MAME release 0.207, March 2019)

  Speed GHz TI-99/4A TI-99/4A + EVPC SGCPU aka TI-99/4P Geneve TI-99/8 + HX5102 TI-99/2 + HX5102
Raspberry Pi3 B+ 1.4 6% 4% 4% 4% 4% 5%
Laptop Celeron 2.0 19% 14% 15% 14% 10% 16%
Thinkpad T60 Core2 Duo 1.8 92% 89% 91% 85% 45% 91%
Laptop Core i5-3320M 2.6 100% 100% 100% 100% 100% 100%
 PC Core i7-6700K 4.0 100% 100% 100% 100% 100% (85%) 100%
PC Core i7-7700 3.6 100% 100% 100% 100% 100% (86%) 100%

 

I am quite sure that the Raspberry Pi3 B+ was not running by optimum conditions, and there may be some tricks to get a better performance. Still, the MAME emulation is a heavy weight, and you can easily imagine that the fact that your Core i7 PC pulls more than 200W of electrical power, while the Raspi just needs 15W, should have a visible effect.