Sunday, March 1, 2026

reZet80 status

The first reZet80 SENTINEL release R0 is out!
Screenshots, source code, technical specifications and ROM images for now only at GitHub but everything will be added here as well.
This release includes the following games:
  • Asteroid Belt
  • Hex Invaders
  • Black Jack
  • Haunted House text adventure
  • Hex Man (Hexadecimal Hangman)
In the next release I'll add a NAND memory cartridge and more games:
  • Dino Chase
  • Camel Race
  • Donkey Race
  • Obstacle Runner
  • enhanced Hex Invaders game
  • The Lighthouse text adventure
  • enhanced Haunted House text adventure

So many Z80 projects and always so little time...
reZet80 stands for "Reset me back to the 80s with the Z80".
reZet80 features a set of retro projects to develop computing and arcade systems that resemble the Z80 machines of the late 70s and 80s.
All systems are built from scratch and not copies of any other Z80 system.
The development process includes hardware design and software programming in Assembler.
I started reZet80 back in 2016.

reZet80 releases (including documentation, schematics and source code at GitHub):
  • 2026-02: reZet80 SENTINEL R0
  • 2023-10: reZet80 PIONEER R1 (Haunted House-only release)
  • 2022-12: reZet80 SCOUT R0 (prototype, unfinished code)
  • 2022-06: reZet80 PIONEER R0
  • 2021-06: reZet80 HWDK R0
  • 2021-02: reZet80 DEV R1 (unfinished code)
  • 2020-11: reZet80 DEV R0

Off-topic note: The letter Z stands for the company Zilog and the Z80 CPU. The Z is in NO WAY related to the Russian war against Ukraine!

Friday, February 27, 2026

Tiny Text Adventure Engine

The tiny text adventure engine is intended for Z80 systems of the 70s like my reZet80 PIONEER.
It also runs on systems of the 80s like my reZet80 SENTINEL.
The game size of my first release of the Haunted House text adventure was 2236 bytes. For the second release I managed to squeeze out another 42 bytes but with 2194 bytes it's still too big for a 2 KiB ROM.
The size excludes the keyboard and display handling that need to fit in the same ROM, so for Haunted House at least 3 KiB of ROM are needed.
But depending on the descriptive text and the dictionary a text adventure that fits in 2 KiB is feasible.
So what to expect from a 2 KiB text adventure?
  • It runs on a 16-character LCD display.
  • The descriptive text is short and the dictionary is limited.
  • It uses a simple parser that understands one and two word commands made of a verb and a noun.
  • The focus lies on solving puzzles.
  • The atmosphere is secondary.
  • There is no time limit and no score.
And how to achieve this with so little space?
  • It is written entirely in Assembler.
  • I use 5-bit packed chars.
So the texts are 37,5% smaller. Unfortunately only 32 characters can be used.
That's 26 capital letters, 4 punctuation symbols (" ", ".", "," and "'") and 2 special codes: ENTER (used as delimiter after 16 characters) and EOS (end of string).
  • Only the first letter of verb and noun are distinguished.
So to open a door enter "OPEN DOOR". Or just "O D".
You could also enter "OPEN DRAWER" and the door will still be opened.
The trick ist to use unique, unambiguous verb / noun combinations for each location.
So you won't find a door and a drawer at the same location.
In order to overcome this unpleasant behaviour the parser has to check for "O DO" and "O DR".
This increases code size and leads to my tiny text adventure engine becoming a text adventure engine.
BTW, I started coding my second text adventure The Lighthouse.
I will add support for more LCD displays (40x1, 16x2, 16x4, ...).
Releases of both games for a 16-char 14-segment display are also in the pipeline.

Friday, January 30, 2026

Z80 NMOS/CMOS Test

Since 2016 when I started reZet80 I have accumulated about forty Z80 CPUs.
Most of them are standard Z80s in a DIP-40 package from ebay or unsoldered from old computers.
I also collected some exotic ones like the T6C79 from Toshiba and the ATJ3310 and ATJ3315 from Actions.
But I'll stick to the pure Z80 as produced by Zilog here.

A short history of Z80 CPUs:
  • Z80: 2.5 MHz NMOS
  • Z80A: 4 MHz NMOS
  • Z80B: 6 MHz NMOS
  • Z80H: 8 MHz NMOS
  • Z80: 4-20 MHz CMOS
I'll talk about the CPU speed in one of my next posts.

A simple 8-byte program will help me differentiate between NMOS and CMOS Z80 CPUs:
;=============================================================================
; take it easy
nop
; disable interrupts
di
; SENTINEL configuration register
ld c, 00h
; out (c), 0
db EDh, 71h
; loop forever
_loop:
jr _loop
;=============================================================================
NMOS CPUs output 00 (hex) executing the undocumented instruction "out (c), 0".
CMOS CPUs output FF (hex).
The SENTINEL configuration register is a 74HC273 latch.
I simply connect eight LEDs to the latch output to display the results:
Zilog Z80A (7725 date)
ceramic package, clearly NMOS
Mostek MK3880 (7807 date)
ceramic package, NMOS
Mostek MK3880 (8029 date)
ceramic package, NMOS
SGS Z8400AD1 (18214 marking)
ceramic package, NMOS
Toshiba TMPZ84C00P (8532 date)
CMOS, extracted from a YAMAHA FB-01 mainboard.
I bought the FM sound generator from ebay so I can't comment on its history but I expected the CPU to be a genuine Toshiba CMOS part.
SGS Z8400B1 (88207 marking)
NMOS as expected
Zilog Z84C0020PEC (0047 date)
Bought from a leading ebay seller in China many years ago.
At least it seems to be a CMOS CPU, not a counterfeit NMOS one as expected.
Zilog Z84C0020PEC (0723 date)
Also from China, again a surprise, all twelve are CMOS CPUs.
Sharp LH0080A (0940 date)
Bought from a German ebay seller, NMOS as expected.
Zilog Z84C0020PEC (1035 date)
According to some sources on the internet these CPUs are fake.
Well, at least they are CMOS. Will test speed next.
MME VB880D (X6 marking)
NMOS as expected
Sharp LH0080A (546DA marking)
Extracted from a YAMAHA CX5M mainboard, NMOS as expected.