1
0
mirror of https://github.com/hsoft/collapseos.git synced 2024-11-15 12:28:05 +11:00
collapseos/recipes/rc2014
Virgil Dupras 705d68deec Move most of the high layer of comp core into the low one
With KEY and EMIT being switch words, most of the high layer can
be defined before drivers.

In addition to this change, I've compacted core blocks which were
becoming quite sparse.
2020-10-28 18:18:00 -04:00
..
blk Move most of the high layer of comp core into the low one 2020-10-28 18:18:00 -04:00
avr.md avrpgm: add EEPROM support 2020-10-05 19:36:49 -04:00
eeprom.md tools/upload: use A! instead of C! to write 2020-09-17 13:30:29 -04:00
Makefile emul/z80: flatten directory structure 2020-10-25 15:58:00 -04:00
ps2-595.png Flatten recipes 2020-08-18 15:46:14 -04:00
ps2-conn.png Flatten recipes 2020-08-18 15:46:14 -04:00
ps2-t45.png Flatten recipes 2020-08-18 15:46:14 -04:00
ps2-z80.png Flatten recipes 2020-08-18 15:46:14 -04:00
ps2.md Flatten recipes 2020-08-18 15:46:14 -04:00
ps2ctl.asm Flatten recipes 2020-08-18 15:46:14 -04:00
README.md recipes/rc2014/avr: new recipe 2020-10-05 18:46:22 -04:00
sdcard.md emul/z80: add SD card support to SMS 2020-10-25 16:53:58 -04:00
selfhost.md Flatten recipes 2020-08-18 15:46:14 -04:00
sio.md rc2014: add sio recipe 2020-08-18 16:02:47 -04:00
spirelay.jpg recipes/rc2014/sdcard: make spi relay design multi-devices 2020-09-18 19:22:56 -04:00
xcomp.fs recipes/rc2014: move recipe blocks into local overlay 2020-09-20 10:50:13 -04:00

RC2014

The RC2014 is a nice and minimal z80 system that has the advantage of being available in an assembly kit. Assembling it yourself involves quite a bit of soldering due to the bus system. However, one very nice upside of that bus system is that each component is isolated and simple.

The machine used in this recipe is the "Classic" RC2014 with an 8k ROM module , 32k of RAM, a 7.3728Mhz clock and a serial I/O.

The ROM module being supplied in the assembly kit is an EPROM, not EEPROM, so you can't install Collapse OS on it. You'll have to supply your own.

There are many options around to boot arbitrary sources. What was used in this recipe was a AT28C64B EEPROM module. I chose it because it's compatible with the 8k ROM module which is very convenient. If you do the same, however, don't forget to set the A14 jumper to high because what is the A14 pin on the AT27 ROM module is the WE pin on the AT28! Setting the jumper high will keep is disabled.

This recipe is for installing a minimal Collapse OS system on the RC2014. There are other recipes related to the RC2014:

Recipe

The goal is to have the shell running and accessible through the Serial I/O.

You'll need specialized tools to write data to the AT28 EEPROM. There seems to be many devices around made to write in flash and EEPROM modules, but being in a "understand everything" mindset, I built my own. This is the device I use in this recipe.

Gathering parts

Build the binary

Building the binary is as simple as running make. This will yield os.bin which can then be written to EEPROM.

This build is controlled by the xcomp.fs unit, which loads blk/618. That's what you need to modify if you want to customize your build (if you do, you'll need to rebuild /emul/stage because the blkfs is embedded in it).

Emulate

The Collapse OS project includes a RC2014 emulator suitable for this image. You can invoke it with make emul. See emul/hw/rc2014/README.md for details.

Write to the ROM

Plug your romwrite atmega328 to your computer and identify the tty bound to it. In my case (arduino uno), it's /dev/ttyACM0. Then:

screen /dev/ttyACM0 9600
CTRL-A + ":quit"
cat rom.bin | pv -L 10 > /dev/ttyACM0

See romwrite's README for details about these commands.

Note that this method is slow and clunky, but before long, you won't be using it anymore. Writing to an EEPROM is much easier and faster from a RC2014 running Collapse OS, so once you have that first Collapse OS ROM, you'll be much better equipped for further toying around (unless, of course, you already had tools to write to EEPROM. In which case, you'll be ignoring this section altogether).

Running

Put the AT28 in the ROM module, don't forget to set the A14 jumper high, then power the thing up. Connect the FTDI-to-TTL cable to the Serial I/O module and identify the tty bound to it (in my case, /dev/ttyUSB0). Then:

screen /dev/ttyUSB0 115200

Press the reset button on the RC2014 and the "ok" prompt should appear.