2019-06-14 14:15:30 -04:00
|
|
|
# Writing to a AT28 from Collapse OS
|
|
|
|
|
|
|
|
## Goal
|
|
|
|
|
|
|
|
Write in an AT28 EEPROM from within Collapse OS so that you can have it update
|
|
|
|
itself.
|
|
|
|
|
|
|
|
## Gathering parts
|
|
|
|
|
2020-04-13 14:41:02 -04:00
|
|
|
* A RC2014 Classic
|
2019-06-14 14:15:30 -04:00
|
|
|
* An extra AT28C64B
|
|
|
|
* 1x 40106 inverter gates
|
|
|
|
* Proto board, RC2014 header pins, wires, IC sockets, etc.
|
|
|
|
|
|
|
|
## Building the EEPROM holder
|
|
|
|
|
|
|
|
The AT28 is SRAM compatible so you could use a RAM module for it. However,
|
|
|
|
there is only one RAM module with the Classic version of the RC2014 and we
|
|
|
|
need it to run Collapse OS.
|
|
|
|
|
|
|
|
You could probably use the 64K RAM module for this purpose, but I don't have one
|
|
|
|
and I haven't tried it. For this recipe, I built my own module which is the same
|
|
|
|
as the regular ROM module but with `WR` wired and geared for address range
|
|
|
|
`0x2000-0x3fff`.
|
|
|
|
|
|
|
|
If you're tempted by the idea of hacking your existing RC2014 ROM module by
|
|
|
|
wiring `WR` and write directly to the range `0x0000-0x1fff` while running it,
|
|
|
|
be aware that it's not that easy. I was also tempted by this idea, tried it,
|
|
|
|
but on bootup, it seems that some random `WR` triggers happen and it corrupts
|
2019-11-04 14:45:10 -05:00
|
|
|
the EEPROM contents. Theoretically, we could go around that by putting the AT28
|
2019-06-14 14:15:30 -04:00
|
|
|
in write protection mode, but I preferred building my own module.
|
|
|
|
|
|
|
|
I don't think you need a schematic. It's really simple.
|
|
|
|
|
2020-05-14 11:32:51 -04:00
|
|
|
### Building the binary
|
2019-06-14 14:15:30 -04:00
|
|
|
|
2020-05-22 20:35:01 -04:00
|
|
|
The binary from the base recipe has almost all it needs to write to EEPROM. The
|
2020-08-16 09:31:02 -04:00
|
|
|
only thing it needs is the AT28 driver from B592. You could add it to the
|
2020-05-22 20:35:01 -04:00
|
|
|
`xcomp` unit and rebuild, but the driver is so tiny, you're probably better off
|
|
|
|
loading it at runtime.
|
2020-04-26 14:52:55 -04:00
|
|
|
|
2020-05-22 20:35:01 -04:00
|
|
|
If your system has mass storage, it's as easy as a LOAD. If it doesn't, you
|
2020-08-16 09:31:02 -04:00
|
|
|
can use `/tools/exec` to send `blk/593` to the RC2014.
|
2019-06-14 14:15:30 -04:00
|
|
|
|
|
|
|
## Writing contents to the AT28
|
|
|
|
|
2020-09-17 13:27:12 -04:00
|
|
|
The driver provides `AT28!` which can be plugged in adev's `A!*`. You can do so
|
|
|
|
with `' AT28! A!* !`.
|
2019-06-14 14:15:30 -04:00
|
|
|
|
2020-09-17 13:27:12 -04:00
|
|
|
Then, upload your binary to EEPROM with:
|
2019-06-14 14:15:30 -04:00
|
|
|
|
2020-09-17 13:27:12 -04:00
|
|
|
./upload <tty device> 2000 <filename>
|