Dauug|36 minicomputer documentation
I/O instructions (privileged)
Opcode |
P/U |
Category |
Description |
IOCNTR |
priv |
I/O |
I/O set SPI pulse counter |
IODEVM |
priv |
I/O |
I/O set SPI device and mode |
IODIVR |
priv |
I/O |
I/O set SPI clock divisor |
IOLAST |
priv |
I/O |
I/O get last input bits |
IOXFER |
priv |
I/O |
I/O transfer bits |
This page is barely started. Implementation of these instructions started 31 October 2024. Stay tuned for details as to how they work.
IOCNTR
I/O set SPI pulse counter
Register |
Signedness |
All |
ignored |
|
1 opcode only |
IOCNTR
gets its pulse count from bits 0–7 of n_pulses
.
IODEVM
I/O set SPI device and mode
Register |
Signedness |
All |
ignored |
|
1 opcode only |
IODEVM
gets its SPI device and mode from bits 25–18 of dev_mode
. The allocation of these bits is to be determined.
IODIVR
I/O set SPI clock divisor
Register |
Signedness |
All |
ignored |
|
1 opcode only |
IODIVR
gets its clock divisor from bits 8–15 of divisor
.
IOLAST
I/O get last input bits
Register |
Signedness |
All |
ignored |
|
1 opcode only |
IOLAST
will return up to 36 bits depending on the pulse counter setting. Bit placement specifics are to be determined.
IOXFER
I/O transfer bits
Syntax |
in_bits = ioxfer out_bits |
Register |
Signedness |
All |
ignored |
|
1 opcode only |
IOXFER
will move up to 36 bits depending on the pulse counter setting. Bit placement specifics are to be determined. Because SPI transfers one bit at a time, this instruction only begins a transfer that the pulse counter must complete. This means that in_bits
will contain the bits shifted in during the previous IOXFER
instruction. Bits shifted in when out_bits
are sent can be read on either the next IOXFER
(if there is more to transmit) or IOLAST
(if nothing remains to transmit).