mirror of
https://github.com/hsoft/collapseos.git
synced 2024-11-14 15:08:05 +11:00
42 lines
1.4 KiB
Plaintext
42 lines
1.4 KiB
Plaintext
|
# Building a SPI relay for the SMS
|
||
|
|
||
|
The I/O space on the SMS is, sadly, entirely taken. If you had
|
||
|
the idea of somehow plugging a SPI relay that is similar the one
|
||
|
on the RC2014, you can forget about it. Only A7, A6 and A0 are
|
||
|
considered by the 8 builtin peripherals on the SMS and trying to
|
||
|
do an IN or OUT to any address is going to end up conflicting
|
||
|
with one of them.
|
||
|
|
||
|
What we can do to achieve SPI communication with the SMS is to
|
||
|
use the B controller port. It can already do bit banging. It's
|
||
|
slow, but it works.
|
||
|
|
||
|
One problem we have, however, is that only 2 pins can be set as
|
||
|
output. We need 3. What I did, and it works with SD cards, is
|
||
|
to hard-wire CS to GND so that it's always turned on. The
|
||
|
downside of this is that if you go out-of-sync with the SPI
|
||
|
device, you have to physically disconnect it and reconnect it
|
||
|
to solve the sync problem.
|
||
|
|
||
|
The advantage of using port B is that the connector is really
|
||
|
simple, you don't even need a schematic:
|
||
|
|
||
|
* CLK to TH
|
||
|
* DI to TR
|
||
|
* DO to Up
|
||
|
* CS to GND
|
||
|
|
||
|
Add pull-downs to CLK and DI to avoid messing up with your
|
||
|
device (it's always on, remember).
|
||
|
|
||
|
# Building the binary
|
||
|
|
||
|
The SPI driver is in B622, which depends on controller port
|
||
|
routines at B625-B626. A ready-to-use xcomp unit is at
|
||
|
arch/z80/sms/xcompsdc.fs.
|
||
|
|
||
|
The SMS emulator has support for a SPI relay based on the B
|
||
|
controller port and can emulate a SD card plugged in it with the
|
||
|
"-c" argument. If it works in the emulator, it has good chances
|
||
|
of running on the real thing.
|