- Z80 CPU at 4 MHz
- 64 kB of RAM
- 32 kB of video RAM
- 8 kB of ROM
- AY-3-8912 sound chip
- 256x256 in 16 colors, 512x256 in 4 colors and 1024x256 in 2 colors
- 1 or 2 5.25" floppy drives
- 2 RS-232 ports
- Parallel port
- The OS is called TIKO and is a CP/M clone.
CPU and MemoryThe CPU is a Zilog Z80 running at 4 MHz with a whopping 64 kB of RAM. To support slower RAM, there is an extra clock cycle on each opcode fetch. This means that the fastest Z80 instruction will run in 5 cycles instead of the normal 4.
When the machine is powered on, the ROM is mapped into the lower 8 kB. The ROM copies itself to RAM and then maps the RAM to the entire address space. The RAM from 0x0000 to 0x00FF and 0xC000 to 0xFFFF is usually reserved for the system. If you interface all the hardware yourself all the RAM can be used.
SoundFor generating sound, the Tiki-100 has the AY-3-8912. This chip was popular back in the days and can be found in computers such as the Amstrad CPC and MSX. The chip is well documented and there is a lot of software available. This makes it easy to get some decent sound without much effort.
FloppyThe Tiki-100 has a Western Digital FD17xx floppy controller. The Tiki-100 supports 90k, 200k, 400k and 800k floppies. I decided to target 400k floppies (double sided, double density). Reading the floppy is reasonably fast. The maximum time to read one track on one side (10 512 byte sectors) is about 0.6 seconds, or about 8.5 kB/s.
GraphicsThe graphics system is quite simple compared to other systems from the same period. It has a 32 kB framebuffer. The entire framebuffer is visible. The video RAM can be mapped into the lower half of the memory (0x0000-0x7FFF).
The graphics system uses chunky pixels, with each byte containing 8 pixels in 2 color mode, 4 pixels in 4 color mode and 2 pixels in 16 color mode.
To get reasonable smooth scrolling when running the TIKO shell, the graphics system has an 8 bit vertical scroll register. This register selects the first line of the framebuffer to be shown. It is implemented by just adding the value of the scroll register to the address when accessing the video memory. This means that CPU accesses to the video RAM are also affected by the scroll register. This makes it very easy to use when scrolling text on the screen, since it is basically a very fast memmove(), but makes it harder to do anything fun.
The video RAM is a bit slower than regular RAM. The absolute fastest way of clearing the entire framebuffer (a sequence of push instructions) uses about 310000 cycles, or almost 4 frames.
As I will write elsewhere, there is no way to read the beam position on a stock Tiki-100.
To set a palette color, you have to do the following:
- Write the color to the palette register
- Set the color index and a write palette bit in the video mode register
- On the next HSYNC, the palette will be updated. The ROM does this by just waiting a bit.
- Optionally clear the write palette bit in the video mode register
This means that only one color can be updated for each scanline. Due to some hardware optimizations, the entire palette is used even in 4 and 2 color modes.