Super-80 Technical Information

Super-80 software collection (mostly games)

This page exists to host ROMs and technical information on the Dick Smith Super-80 home computer, so that it doesn't get lost in the event that emulation doesn't immediately happen. The information given below was originally posted from August to September 2004 on the MESS forum or communicated by email from "robbbert", an owner of the machine, and has been edited slightly for content and formatting by myself. The "Raphael" mentioned is the MESS developer Raphael Nabet.

I have a computer called a Super-80. It was sold by Dick Smith Electronics in 1981 as a kit that you would construct yourself. I actually have 2 of these, still working. One is the original 32x16 screen, the other is the so-called "vdueb" version which has 80x24 screen.

Dick Smith has sold various computers, the ones I remember are the System-80 (A clone of TRS-80), the Exidy Sorcerer (excellent computer!), the VZ-200 and VZ-300 (which I think are Laser clones), the Wizard, the VIC-20 (an early commodore), and the CAT (an early pc-clone). They were all pre-built. The Super-80 was the only kit, and as the original roms had plenty of bugs, there are heaps of modified ones around.

I am hoping that MESS could support the 4 main versions

  1. 32x16 monochrome
  2. 32x16 16-colour
  3. vdueb monochrome
  4. vdueb 16-colour

To answer Raphael's question, I will quickly describe the 32x16 monochrome, upon which all others are based.

The CPU is a Z-80 running at 2mhz
You could buy 16k, 32k or 48k of RAM, but I would suggest to only support 48k.
Memory map 0000-BFFF = ram; C000-EFFF eproms; F000-FFFF unused.
Start address is C000.
Video = memory-mapped to whatever page of ram you liked, but the default = BE00-BFFF, 32 rows by 16 columns, monochrome display. There is a character generator rom, but I cannot read it. But, Dick Smith released a lower-case kit, I can read this eprom, I recommend to support this in MESS.
The files were cassette, but I put my files onto the hard drive years ago, so I wouldn't bother with a cassette interface just yet.
The keyboard uses a Z-80 PIO.
The port numbers used are F0 for various outputs; F1 choose which video page to display; F2 various inputs; F8 to FB for the PIO.
The computer came with a S100 interface and you could buy a card for serial and parallel ports (usually to do printing). The ports on this were user-selectable, but the standard was usually DC for parallel, and DD and DE for serial I/O.

Now, to the video driver. Being a rather ancient computer, there is no video chip, it is a lot of TTL chips, so rather than trying to copy it, you just need to come up with something that does the same thing. Hardware-wise, the circuitry switches the ram between the z80 and the video, 50 times a second, so that the picture can appear on a normal TV set. The switch does a busreq on the z80, the z80 finishes its current instruction and activates busak and gives up control of the data and control lines. Busak enables the video to have its go, which reads some main ram and displays it on the screen. At the end of a screen, control is handed back to the z80. Effectively, the z80 runs at 1mhz. However the user can use an OUT command to switch off the screen, thus giving the z80 full control and running at 2mhz. The cassette loading/saving also switches off the screen otherwise you could imagine what would happen. This switching mechanism means that there is no snow on the picture.

Now when the video reads the data, it is passed to a character generator chip, which together with various freqencies converts the ascii characters into rows of dots for the display. The character generator is not accessible to the z80.
The dots then go to a shift register to make the dots come out one at a time, then the sync pulses are added, and this composite output is amplified and output. There was an optional RF modulator.

For your emulation purposes, you can leave the screen on at all times, the OUT command simply acting as a turbo button, switching the z80 speed between 1mhz and 2mhz. However you do need to emulate the other OUT port (F1), which selects which part of the main ram is used for the video. The user can enter O F1 BE or O F1 BF to display the default video page of BE00-BFFF. Bit 0 of port F1 is not connected.

How does the cursor work? Every time the keyboard is scanned, a counter is incremented. When this counter overflows, the cursor is flashed (in software). The cursor (_ character) is swapped with the current character on the screen. The next time around, they get swapped back. This is all done in software, so you don't have to do anything.

Now some more information. This is what all the I/O ports do.

F0 General Purpose output port
Bit 0 - cassette output
Bit 1 - cassette relay control; 0=relay on
Bit 2 - turns screen on and off;0=screen off
Bit 3 - Available for user projects [We will use it for sound]
Bit 4 - Available for user projects [We will use it for video switching]
Bit 5 - cassette LED; 0=LED on
Bit 6/7 - not decoded

F1 Video page output port
Bit 0 - not decoded
Bits 1 to 7 - choose video page to display
Bit 1 controls A9, bit 2 does A10, etc

F2 General purpose input port
Bit 0 - cassette input
Bit 1 - Available for user projects
Bit 2 - Available for user projects
Bit 3 - not decoded
Bit 4 - Switch A [These switches are actual DIP switches on the motherboard]
Bit 5 - Switch B
Bit 6 - Switch C
Bit 7 - Switch D

F8 - PIO port A data
F9 - PIO port A control
FA - PIO port B data
FB - PIO port B control

The only job of the PIO is to scan the keyboard. Port F8 is the output port (set a scan line), while port FA is used to read which key is pressed. An interrupt mechanism is implemented, if you hold down the Ctrl,C,4 keys at the same time it would reset the computer (same idea as Ctrl,Alt,Del on a DOS computer). It uses Interrupt mode 2.

The computer did not come with sound, but people would hook up a pc-speaker arrangement by using Bit 3 of Port F0.

Remember near the beginning of this thread I said there were 4 types to emulate? So far I have only been describing version 1, and it is b&w only.

Version 2 has colour, in address space FE00-FFFF, each byte here corresponds to a byte of video ram. I need to look up the colour board details, and will post it in a day or so.

You might be interested in version 3. A team of users was dissatisfied with the 32x16 screen, so they devised a 80x24 screen. It is almost the same as used in the first Microbee computer. A 6845 chip was added, and the masses of TTL removed. Ports 10 and 11 control the 6845. The screen has address space F000-F7FF, and a PCG has F800-FFFF. The PCG does ascii characters 80-FF. The Z80 runs at 2mhz at all times. I made a small mod which allows the character generator to be seen by the Z80, please emulate. When the screen gets updated there is severe snow - don't emulate that! More details to come.

Version 4 is a modification to version 3, which added colour. Again I will post the details when I find them.

More info - The construction article for the Super-80 was described in Electronics Australia magazine in the August/September/October 1981 issues. How to program it is in the January 1982 issue. This magazine is now defunct but is supported by Silicon Chip magazine, who have a website where you might be able to request an electronic copy.

INFO ON VERSION 2 (32x16 colour)
The colour board - Each byte corresponds to the same position of normal video ram, so FE00 provides the colours for BE00 for example. The colour byte consists of 4 bits for the foreground (text) colour and 4 bits for the background colour. You can either have RGB output or composite output. Composite is done with a TEA1002 chip, so the colour sets are different. Here is the list:

5L.MagentaBright Green
8RedDark Red
9Dark CyanRed
DDark BlueYellow
EWhiteOff White
FBlackBright White

The wording does not exactly correspond but that's what happens when 2 lists are compiled by different people. If a byte = 04 then we would have green writing on a black background for that character. These colour codes are used in Super-80 version 4 also.


Because version 3 uses a 6845 chip, I imagine that you will want some extra technical details.
6845 pins:
3 - Light Pen. This was actually implemented in hardware, but don't bother with it.
21 - Clock = 12/7 mhz
19 - Curs - a full-height blinking cursor would be an inverting block.

Character size = 7 dots across by 9 rows (if default values used)
Main system clock = 12mhz, the rate that dots are output from the 74LS166 shift register.
Bit 4 of port F0 will switch the F800-FFFF address range between the PCG ram and the character generator. 1=PCG
According to the circuit diagram, bit 4 of port F0 also caused the output dots to be inverted, but I am unable to replicate this at the moment.

VERSION 4 ONLY: Same as above, plus bit 2 of port F0 will switch the F000-F7FF address range between the video ram and the colour ram. 1=video This is to let a program set up colours. The address ranges for colour and video overlap therefore. eg F000 in the colour ram sets the colours for the character at F000 in video ram (normally top lefthand corner of the screen).

A little bit about the video on versions 1 and 2. Each character is 8 dots wide by 10 rows. The dot clock appears to be 6 mhz.

One thing I forgot was the keyboard layout.

Rather than emulate the position of the keys on the original keyboard, just use the PC keyboard as is. It eliminates the confusion. The only thing to accomodate is the fact that the Super-80 has a few keys that don't exist on a pc, these being the LINEFEED, BREAK and REPEAT keys.

Also, most machine-language games do direct I/O to the keyboard, this needs to be emulated somehow. I will email you when you are ready to use this information.

The keyboard by the way is identical to the very first microbee, so if you have a photo...