collapseos/doc/hw/at28.txt
Virgil Dupras e5a983ab7f Rename A!, A@ and A, to C!*, C@* and C,*
Also, rename "Addressed devices" to "Indirect memory access".

I do this because I need to add indirect versions of !, @ and ,
to allow boostrapping directly to EEPROM and that A,, thing I've
added to assemblers felt like really bad names.

With this change, I'd like to generalize the use of the * suffix
for aliases.
2020-12-07 19:06:58 -05:00

45 lines
1.7 KiB
Plaintext

# Writing to a AT28 from Collapse OS
# Gathering parts
* A RC2014 Classic
* 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 the
EEPROM contents. Theoretically, we could go around that by
putting the AT28 in write protection mode, but I preferred
building my own module.
I don't think you need a schematic. It's really simple.
# Writing contents to the AT28
There is an AT28! writer word in B400 which is C!*-compatible
(see "Indirect memory access" in doc/usage.txt) and and waits
until the write is complete before returning. If you use C!
directly, bytes you write might not have the time to completely
write themselves before you write another one.
To use, set C!* with "' AT28! ' C!* **!". Once this is done, you
can use MOVE, or /tools/upload, both will call C!* and do the
right thing. Unset C!* with "' C! ' C!* **!" afterwards.
B400 also has AT28, which is the same as AT28!, but for C,.