The TGOL language
SYSTEM 80/80A and game PROM
Presentation of the system and the programming language used is this pinballs.
The pinballs of the series 80 and 80 have in common that they all use the same CPU board and the same operating system. The SYSTEM 80A is an evolution of the SYSTEM 80 and is distinguished only by minimal hardware changes and news PROM U2 & U3.
These two PROM "SYSTEM" contain an operating system specialized for pinball machines, a little like a BIOS. It is the heart of the system and provides the basic functions that it will then be on all pinball machines:
- Initializations (of the 6532 RIOT, of the RAM, etc...)
- Management of the display (with multiplexing)
- Management of contacts (analysis and detection)
- Management of solenoids and sounds (time-based commands)
- Configuration management (DIP switches)
- Basic operations (players, plays, credits, tilt, slam)
There is also the test routines, the management of printer service (SYSTEM 80 only) and an API with a language TGOL interpreter.
This standardized operating system was developed by Rockwell for Gottlieb, on a DC (Design Center):
Each pinball was then customized with a game PROM, in which Gottlieb program specific configuration and game rules.
The game PROM
Presents itself in the form of one or two PROM of 512, 1024 or 2048 bytes and contains two elements:
- The settings
- Contacts management program (game rules)
The first to specify a number of standardized features, such as the number of players, the functioning of the attract mode, the bonus configuration(modes, associated lamps), the checksums of control.
The second allows programming the behaviour of each detected contact. It is an event-driven programming, each contact triggering a particular sequence written in the TGOL language. You can set the number of points to count, the bonus to assign, the sounds to play, etc... On the same principle there are special routines, the TILT, the beginnings and end of game, and a routine of "polling" regularly called about 6 times per second.
The game PROM were written by Gottlieb on a SYSTEM 65:
The TGOL language
To save the memory place and simplify programming, language specific named TGOL (Tom's Game Oriented Language) has been developed. This language designed by Tom DeFotis is the successor of the PGOL (Pinball Game Oriented language) used in the SYSTEM 1. But, apart from the name, these two languages are finally little similarities.
The TGOL is a kind of macro-langage, where each instruction is encoded in a single byte. According to needs, they may be followed by one or two parameters (or none). It is thus a highly compact coding and very effective.
To not be limited by language, a special statement allows you to directly run the assembler 6502 code. Thus, that is not feasible in TGOL may still be programmed in assembler.
Limitations and bugs
Because of the use of sequences in assembler, the portability of language is extremely limited. Thus, you cannot use a different CPU than a 6502 (or similar) and can not easily translate a PROM of a SYSTEM 80 to a SYSTEM 80A. Indeed, some calls to the API of the system are absolute addressing and addresses are different between the 80 and the 80A.
TGOL language is originally planned only for PROM 512 or 1024 bytes. This is strongly binding, because to use memories of 2048 bytes should juggle the assembler, the TGOL then loses much of its interest. It is unfortunate that an improved version has not appeared, as it would have been very easy to extend the language in this domain.
Some coarse bugs have never been fixed, as for example the impossibility of an assembler appeal if the instruction is located on a page boundary. There again, it was little difficult to remedy.
We wish to thank Allen Edwall for his help, through which we could identify the equipment used at the time for the development of this system.