• Please review our updated Terms and Rules here

Tiny, Wireless 8008 Emulator

Slob

Experienced Member
Joined
Oct 20, 2017
Messages
180
Location
Kentucky USA
I just finished this up well enough to show:

https://hackaday.io/project/28227-esp8266-based-i8008-emulator

This is an ESP8266-based Intel 8008 emulator, running SCELBAL and the Shooting Stars game from flash. It's only about 1" x 2" x 1.5" in size, and housed in a dollhouse-sized walnut case somewhat reminiscent of 1970's hobby machines. No front panel, though. not bad for $5.00 or so of parts. The wood cost more!
 
Neat! Way cheaper than the real thing, and a lot less annoying to interface with, I bet :)
 
Source Code available

Source Code available

Looks cool, where is the code available from?

Len

I've put the code in the Hackaday project. It includes and runs:
Galaxy
Shooting Stars
Mike Willegal's mini-monitor
Microsystems International Monitor

I hope that I've given appropriate credit to all who help preserve this code, including, but not limited to:
Dave Dunfield
Herb Johnson
Mike Willegal (who I'm fairly certain peruses this site)

All in all, I'm pleased with the results although the code is icky. I've been doing this.."for a while"...and I still can't believe how this was done with about $5.00 of parts.
 
Hi Steve,

Is the code for you "Companion Terminal for 8008 Emulator" available?

len

Actually, the PIC32 terminal design and code isn’t mine, its at:

http://geoffg.net/terminal.html

This was designed to work with a ps/2 keyboard and as written, using a ps/2 keyboard is the only way to easily set it up.

The ti99/4a*to serial ASCII keyboard, for a cheaper PIC, I can put up in a few days if you are interested. Ugly code, but it works well and is pretty easy to build.

*PLEASE don’t anyone hate me. That keyboard came from a nonworking machine in poor physical condition that I got cheap.
 
*PLEASE don’t anyone hate me. That keyboard came from a nonworking machine in poor physical condition that I got cheap.

It'd be hard to pick a more fitting donor :p Seriously though, these are super common, they have little value, and a dead one is at this point hardly worth fixing.
 
I love all these micro-controller based emulators that keep surfacing - very cool project.


"My" mini-monitor is really a port of Bob Cook's Basic CREED Monitor that was described in the May, 1975, volume 1, issue 7, of the "Micro-8" newsletter. The original was written for Baudot character code. I wanted to keep it at 256 bytes, and aside from changing it to ASCII, my peripherals were slightly different, so it took quite a bit of work to port it over to the SCELBI. However, the basic user interface semantics are nearly the same as the original. I found the practical usability to be surprisingly impressive for an implementation with so many hardware constraints. In fact, I would have been very proud of it, had I come up with that design, myself. Anyone with a recent generation Macintosh can try it out with my OS/X based SCELBI emulator: http://www.willegal.net/scelbi/scelbiapp.html.

The source for the ported monitor is here:http://www.willegal.net/scelbi/MCMON.html

regards,
Mike Willegal

I've put the code in the Hackaday project. It includes and runs:
Galaxy
Shooting Stars
Mike Willegal's mini-monitor
Microsystems International Monitor

I hope that I've given appropriate credit to all who help preserve this code, including, but not limited to:
Dave Dunfield
Herb Johnson
Mike Willegal (who I'm fairly certain peruses this site)

All in all, I'm pleased with the results although the code is icky. I've been doing this.."for a while"...and I still can't believe how this was done with about $5.00 of parts.
 
99/4A Keyboard to Serial Chip Code

99/4A Keyboard to Serial Chip Code

This code reads a TI 99/4A keyboard and emits serial ASCII. For some reason, I could not attach it as a .C file, but it is C, for PIC MPLAB Version 8.x. The chip is a fairly cheap 16F883, and you don't need a crystal for it (at least not up to 9600 baud) because the programming system trims the onboard oscillator for you. The draw at +5 or 3.3 is only a very small # of milliamps. As written, it was designed to work with an RS-232 converter but the output could be inverted in port setup, I believe. I mention that it really should have a "transmit buffer empty" interrupt and ring buffer for the serial output, but at fast bauds, this really doesn't matter. The baud is hard-coded, but an enterprising person could use jumpers or better yet, "power on keystrokes" to set the baud and store it into the chip's onboard EEPROM.

The keyboard should handle all common ASCII and control characters, although you may have to do odd things to get to them (note the weird "function" requirement for brackets, for example). Note that I use "alpha lock" for "caps lock". Of course, if you don't like it..you can change it. And, please don't laugh at the code. The only code I've written commercially in 20+ years is PL/SQL.

The keyboard itself is very compact and cramped, but it has a pretty good, old-timey stiff feel. I wonder if they made the keyboard specifically for smaller (kids?) hands. It's pad-printed, but it seems to have held up very well over time.

The way it works is simple; it scans the 8 (+1) x 6 matrix of keys and debounces them by adding /subtracting a threshold counter until it is hit (COUNTLIMIT). A second threshold (REPEATLIMIT) permits auto-repeat. I wouldn't try typing 100WPM (if that's even physically possible) but it shouldn't have ghosting problems, etc.

I don't mention the pinouts and port assignments, but it should be fairly obvious; I used the very nice schematic on the following page to design it.

http://www.mainbyte.com/ti99/keyboard/keyboard.html

If this is a problem, I'll buzz it out for you. I did this as kind of a "one-time-off" project, so, no schematic.

The keyboard is very easy to mount into a box; I used a scroll saw and my woodsman-quality woodworking skills to cut it out.
 

Attachments

  • kybd_ti.txt
    5.5 KB · Views: 2
Last edited:
I need to dig through my stash of keyboards. A few years ago I bought a couple of unencoded keyboards off ebay. From what I am thinking they are close to what you are using.

Thanks for posting more about your project.

Len
 
The general design of this code is usable for just about any keyboard with a matrix. Here is one of those one-piece plastic block keyboards designed to be soldered into a PCB a la ADM-3, that I built into a terminal using the same chip but slightly different code.
 

Attachments

  • k.jpg
    k.jpg
    101.8 KB · Views: 2
There are still some cheap IBM iPoint NOS keyboards around. All it takes to interface is a 38KHz IR receiver and a UART port capable of doing 1200N81--no wires, no level translation. You get key-up/down codes, so it should be perfect.

G15326B.jpg
 
I have just purchased an ESP-01S with the intention of getting the ESP8266 Based i8008 Emulator running on it. Better late than never :)!

I wrote a Javascript emulator of the MIL MOD-8 a while ago and used Dave Dunfield's MONITOR-8 source code. I did notice an error in the transcription from the original. I fixed it in my emulation - but I see it has made it through to the ESP8266 Based i8008 Emulator implementation.

The source line in question is:

Code:
	DB	'F','P',050

This should be:

Code:
	DB	'F','P',030

There appears to be two (2) entries for the 050 base coding (TZ and FP) and none for the 030 base coding.

When I originally tried to enter assembly code into MON-8 for JFP and CFP it disassembled as JTZ and CTZ respectively. Once I had fixed the table, everything appeared to be correct.

I am looking forward to getting this running! I have wanted to 'play with' an ESP8266 for a while... Now I have an excuse!

Now I wonder if there is a PDP-8 implementation somewhere?

Dave
 
Last edited:
Through amazing coincidence, I've been playing with my toys during this downtime, and was actually thinking about _this very issue_ this week. I knew that somewhere I had seen this bug mentioned. I'll fix it.

I don't know if anyone else has actually made one of these for themselves yet. I put more effort into the later project where the ESP8266 actually puts out direct 80x24 video and reads a PS/2 keyboard (I bummed most of the code it took to do those things). The paper tape reader was a bonus.

The power of interrupts!!!!!

At my age, it just boggles my mind that all that was done with a $3.00 computer module, code, and a few switches, capacitors, resistors, and connectors.

I have several PDP/8 emulators (PiDP8, a wire wrapped Armstrong SBC6120, a few SB6120 PCB's), and I have given a PDP/8 emulator some thought. The 8266 doesn't have enough native RAM to do anything but a blah 4k version, but I have connected SPI RAM ($1.00) to an ESP8266 that runs at speeds good enough to do a credible 64K 8080 emulation with emulated CP/M disk drives (see other projects)...so...it's _definitely_ technically possible to do one with 32K, OS/8, and drives.
 
PS: Please do not laugh at my code. The only coding languages I've used to earn a buck in the last 20+ years are SQL and PL/SQL!!!!
 
One of my current projects (that I must get back to - but I am currently working at home, so I still don’t have much spare downtime despite the current situation!) is a wire-wrapped PDP-8 (thread is on the DEC forum).

This has physically 16KW SRAM, but can only use 4KW without the memory extension upgrade.

I have located the DEC 4KW disk monitor and almost patched it to work with a second serial port to connect to a PC to simulate an external disk drive. I could modify it to work with an emulator (using the same IOT instructions as for an RK05) for use with the ESP8266 and some local non-volatile storage. Sounds achievable. I’ll give it a bit of thought presently.

>>> Please do not laugh at my code.

I will have seen worse coding in my life (and these guys were paid!)...

Dave
 
I did get a round tuit, and fixed/recompiled the MIL monitor. This solved a weird problem I had where the monitor could not dump itself symbolically (DPS). It must have hit the problem instruction and went kaboom. I jhad attributed this to the original code, because I couldn't find the problem in the emulator.

I'm building a third version of this that will include the fix and also Mike Willegal's transcript/code of Hangman. It should be done in a few days and up on Hackaday.

It's so hard for me to change gears these days from code problems of today to those of 45 years ago!
 
I've updated the Hackaday site for this project with updates to the MIL monitor and Hangman.
 
Back
Top