6

The TI-99/4a had a cartridge slot on the front of the computer which accepted "solid state cartridges" (as TI called them). These cartridges would typically contain ROM (Read Only Memory) like many other cartridges of the time (C64, Atari 800, etc.).

However, the TI cartridges could also contain a different type of ROM called "GROM". Which I believe was "Graphics ROM". There was also GRAM, if memory serves, that would be Graphics RAM.

What was the purpose of this graphics ROM and why was there a need for two types of ROM? In other words, why not just have one ROM type like everyone else?

cbmeeks
  • 8,531
  • 3
  • 25
  • 97
  • 2
    While not a strict duplicate, this has already been answered in most parts here: https://retrocomputing.stackexchange.com/a/7572/6659 – Raffzahn Jan 09 '19 at 14:32

1 Answers1

10

However, the TI cartridges could also contain a different type of ROM called "GROM". Which I believe was "Graphics ROM".

Jup, although, it wasn't really related to graphics at all. More due the fact, that its primary usage within the TI99/4 was to hold GPL code - which itself stands for Graphic Programming Language.

There was also GRAM, if memory serves, that would be Graphics RAM.

Not really. While the mechanics (standard) was defined by TI, it wasn't until way later that third-party developers added GRAM. Mainly to make GROM content loadable, so existing GROM application could be copied. Like with the 1985 GRAM Kracker Card.

What was the purpose of this graphics ROM and why was there a need for two types of ROM? In other words, why not just have one ROM type like everyone else?

Most important reason would be address space.

A GROM uses only two byte size addresses within the CPU address space. Even further, multiple GROM can share this address pair (usually 8). One such address pair can support 64 KiB of ROM, either as a single GROM or several in parallel (*1).

64 KiB is already a ROM size hard to manage in a 16-bit address space without banking(*2). So why not turn this around from a cumbersome calling mechanic into a benefit? The TI 99/4's system also checks 16 such address pairs by default for GROMs, making a whopping 1 MiB of application ROM available. Or more correct 640 KiB (*3), as certain addresses where reserved for OS ROMs, so each address pair could only address up to 40 KiB (*4). So even with the limitation of available chips and reserved address, still almost half a megabyte (480 KiB) could be added to a standard 99/4. Pretty forward thinking for a 1979 machine.

Beside, noone keeps any developer from adding GROM at additional address pairs, resulting in an almost unlimited amount of ROMs kept online.

In contrast, a regular ROM could only occupy a maximum of 8 KiB within the CPU address space. It's notable that TI also defined a mechanic for cards to do bank switching in this area, by swapping the upper 4 KiB as pages. But there is no cartridge known to use more than two pages for a total of 12 KiB ROM (*5)

Second would be speed

The whole TI 99/4 is build around what today would be called a streaming architecture. When accessing some memory like Basic program, Video memory or, well, GROMs, it's always that these 'channels' have integrated address pointers auto-incrementing with each read or write access. For example, the basic fetch loop of an interpreter means just accessing the port and everything else is done by hardware, while with a conventional setup the CPU must fetch a pointer, address the byte in question, increment the pointer and store it again. For the TI 99/4 the streaming system takes care of that. Just fetch the byte.

And since GROMs where meant to hold code that gets interpreted by some low level code (nowadays called a bytecode interpreter), GROMs offered as well an incredible amount of possible online ROM, as well as faster access.

So what did it make?

Application used a combination of either. Some just used the ROM space, maybe with bank switching, others used GROM. After all, when it comes to cartridge based applications, we do talk large numbers produced. So GROM is money-wise quite comparable - but got not only the advantage of (possibly) larger programs, but also an inherent copy protection, as G-EPROMs weren't available and replacement circuits using regular memory rather expensive. In addition, production cost could be a bit lower due to the need for 16 instead of 28 holes to solder the chip. And finally, some used as well both. GROM for the main program and most data, plus a ROM for certain time sensitive routines.

On the system side GROM mechanics were deeply integrated. During startup (*6) all 16 addresses and within each 8 base addresses where checked for a GROM signature to look for system extensions and applications. The later where listed on the start screen to select which to start (*7).

It was rather easy to rip GROMs from their cartridges and solder them piggyback to some of the internal GROMs, thus permanently installing useful applications. It is quite common to find File Manager and Extended Basic built into the console. Likewise, Terminal Emulator or Editor/Assembler or other languages. Or users made up their own multi-cartridges. Worked the same way.

So bottom line: GROMs where a great idea as part of an incredibly flexible system


*1 - As usual, reality is cruel to us. While GROM can have any size between 1 Byte and 64 KiB (with two byte addresses - longer addresses could provide more), TI manufactured them only with 6 KiB ones. And they where only made to start at addresses dividable by 2000h, thus only 48 KiB per pair was usable.

*2 - At least if one wants to keep some RAM and I/O available

*3 - Funny size, isn't it?

*4 - Which again was limited to 6 KiB per ROM, due the chips manufactured, resulting in 30 KiB usable address space.

*5 - Definitions are made for 16 pages, and extending that scheme may allow up to 2048 pages.

*6 - Keep in mind, this is a real home computer, so pressing reset to go back to system start was the normal way of handling multiple programs.

*7 - Unlike other systems of that time, BASIC wasn't the system, but just an application that could be found and started after reset.

Raffzahn
  • 222,541
  • 22
  • 631
  • 918
  • Thanks for the detailed answer. I'm a little confused on what you mean by "two byte size addresses". Do you mean a 16 bit address? Also, would it be correct in saying that GROM was sort of like another memory layout that was not connected to the CPU directly? But instead, you "passed" information THROUGH the VDP to/from GROM memory? – cbmeeks Jan 09 '19 at 16:12
  • You denominate a card that appeared 4 years after the computer as "way later" (the "Kracker"). Seen from today, that's basically the same day... – tofro Jan 09 '19 at 16:24
  • @tofro In my book 1985 is more like six years after 1979, isn't it? Are your still using a pentium? :)) And for sure, six years is not only quite a lot considering the speed of changes back than, but also more than a year after the 99/5's production was ended. so yes, a rather late development indeed. – Raffzahn Jan 09 '19 at 16:30
  • The TI 99/4a, which this question is about, was released in 1981, to my knowledge. – tofro Jan 09 '19 at 16:31
  • 1
    I think the /4a is only a VDP upgrade over the /4, switching the TMS9918 to a TMS9918a and thereby gaining a screen mode? In that case Raffzahn is likely counting from the /4 as the memory architecture is the same between the two? – Tommy Jan 09 '19 at 16:43
  • 1
    @tofro For everything GROM related there is no difference for this between 99/4 and 99/4A. Separating them is like separating C64 and C64C in a question about the CPU. – Raffzahn Jan 09 '19 at 16:47
  • 1
    @cbmeeks No, just two byte addresses (due to the way the 99/4 operates only on even adresses). One (like >9800) was the data port, while the other (>9802) was the address port. To set an address the two address bytes (16 bit) where to be written into the address port, then data could be read from the data port. Each consecutive read produced the next byte. Similar the address could be read back. And no, it did not go thru the VDP, they where directly connected to the CPU bus (well, the 8 bit potion anyway) – Raffzahn Jan 09 '19 at 16:47
  • 1
    @Tommy There where also some other minor changes like adding a volume slider. More relevant where changed ROMs as well for the system (console ROM) as for the BASIC. Most notably due a different copyright year on the reset screen. – Raffzahn Jan 09 '19 at 17:05
  • 1
    @Tommy: The most visible difference between the TI 99/4 and the TI 99/4a is the keyboard. All of the TI 99/4 units I've noticed used a chicklet keyboard, while all of the TI 99/4a units I've seen had real keys. Further, the TI 99/4a keyboard could type upper and lowercase, while the TI 99/4 could not. – supercat Jan 09 '19 at 17:57
  • @Raffzahn a volume slider? Which TI has a volume slider? – cbmeeks Jan 09 '19 at 18:27
  • @cbmeeks The 99/4 (no A) - AFAIR – Raffzahn Jan 09 '19 at 19:13
  • @cbmeeks The German Wiki got two pictures. Complete unit: https://de.wikipedia.org/wiki/Datei:TI-99-4_homecomputer_(adjusted_version).jpg Detail: https://de.wikipedia.org/wiki/Datei:TI-99-4_homecomputer_speaker_and_volume_control.jpg – Raffzahn Jan 09 '19 at 19:58
  • 1
    @Raffzahn wow. I never knew that! – cbmeeks Jan 10 '19 at 13:28
  • @cbmeeks Interestingly this is maybe not true for all 99/4. I just checked mine (a US Unit) and it doesn't have the slider. Chances are that only PAL units had it to control the build in speaker, or that there have been different runs. – Raffzahn Jan 10 '19 at 13:32
  • @Raffzahn Yes, I'm thinking the same thing. I also didn't know some had a built-in speaker. I own several '4A's but no "4". If you ever want to sell it, let me know. :-D – cbmeeks Jan 10 '19 at 13:34
  • @cbmeeks Make me an offer I can't deny :)) Until then I enjoy it remembering the day when I didn't bought one in 1979 when it was new, and went vor an Apple II instead. Looking back, the 99/4 might have been at least as much fun - heck, a few years back I even made a new 99er board with some 'improvements', 'cause the CPU is so much fun. – Raffzahn Jan 10 '19 at 13:41
  • 1
    @Raffzahn I honestly don't know what they are worth. lol. Feel free to send me an email if you want. Perhaps we can discuss. cbmeeks ---at--- G.m.a.i.l ----dot---- com. – cbmeeks Jan 10 '19 at 14:41
  • Is the GROM actually even as fast as the regular ROM? Though the external interface is asynchronous, the chip requires a clock, which is 447.4 kHz in the TI-99/4, and has a GREADY output line that signals that it's ready to operate, which seems to be wired to the CPU's READY/HOLD line. If it were able to respond as fast as a regular ROM, why would they add all that? – cjs Jul 05 '23 at 05:28
  • @cjs yes, they are defined for 4 MHz operation IIRC, but the 99/4 isn't. The .447 MHz is asynchronous to CPU clock that's why Ready is needed to synchronize. GROM can also be run directly from VDP clock at 3.5 MHz - as well not synchronized (same base, 0.447 is 3.5/8) with the CPU's 3 MHz clock (remember it's a professional design). While using 3.5 is possible (and a common for systems with 4 MHz CPU clock), it does not bring any advantage, as the CPU can only access the same location every 8 clocks (in rather constructed cases). Thus no real world implication. Do a Q if you need more detail. – Raffzahn Jul 05 '23 at 15:28