Wednesday, February 28, 2018

Built battery for Roomba, discovered original FORTH software from 1130

REBUILDING BATTERY FOR ORIGINAL ROOMBA VACUUM CLEANER

I cut some thick art paper stock and wrapped each cell to insulate the sides. Once the cells are connected by spot welding nickle plated steep straps, I will hot glue the cells together to eliminate any chance of shorting.

Wrapped cell on left, paper above
My next challenge was to work out a method to spot weld without a welding helmet, yet to protect my eyes from the UV produced by the welding. If I can hold a welding glass in front of my eyes while reliably holding the welding electrodes in the proper place, then activate the welding unit with a third limb, it would work.

I spot welded the strips for each half (six cells), but am not convinced the spot welds are solid enough to work reliably. I put them aside and go back another day to add more weld spots to all the strips.

RECREATING ORIGINAL FORTH IMPLEMENTATION ON IBM 1130

When Charles Moore created the FORTH language, it was famously done on an IBM 1130 whose restriction of file names to five characters forced Chuck to make his fourth generation language name become FORTH.

I have been in contact with Chuck and the Silicon Valley FORTH Interest Group (SV-FIG) to try to recover the original code. It looked like no copy existed until I discovered an obscure reference from 2011 on the 1130 google group which suggested that Chuck did send some code to a friend of mine.

I contacted Bob Flanders, who dug through his old email and discovered a previously unnoticed attachment which contained sixteen scanned images. These were twelve pages of an IBM 1130 assembler run and four pages of cryptic FORTH-like code.

I typed in the sixteen pages to make them machine readable, then Bob and I began to attempt a resurrection. The assembler program implements some basic primitives in FORTH, then reads card images from a fixed location on a disk drive which we believe are the contents of the four cryptic pages.

The cryptic card images are the remainder of the FORTH language, extended from the hard coded primitives in the assembler program. They define forth operators such as DUP, building them up from the primitives. Some of the primitives and FORTH operators are different from modern FORTH, or are synonyms.

For example, you extend FORTH with statements that are delimited by : and ; but period and comma are synonyms. Those synonyms are in the cryptic code, rather than the more well known colon and semi-colon.

FORTH compiles statements, thus a key part of the cryptic card file are functions and definitions to build up 1130 machine instructions. Near the end of the cryptic file, it creates the interactive prompt system from the console keyboard and console printer, issuing the message HI THERE to the console and waiting for the user to continue.

We spent quite a bit of time looking hard for typos, but are now in the debugging phase where we are trying to get it all to work properly.

1 comment: