-
Notifications
You must be signed in to change notification settings - Fork 6
Function Description
The internal RAM is organized as 128 x 4-bit general purpose registers, divided into four banks B0..B3, each of which contains 4 pages of 8 nibbles:
Bank 0
Page 0: R0 .. R7
Page 1: R8 .. R15
Page 2: R16 .. R23
Page 3: R24 .. R31
Bank 1
Page 0: R0 .. R7
Page 1: R8 .. R15
Page 2: R16 .. R23
Page 3: R24 .. R31
Bank 2
Page 0: R0 .. R7
Page 1: R8 .. R15
Page 2: R16 .. R23
Page 3: R24 .. R31
Bank 3
Page 0: R0 .. R7
Page 1: R8 .. R15
Page 2: R16 .. R23
Page 3: R24 .. R31
Instructions can use any of the 32 nibbles of the current bank of the main register set, as a source, destination, or both.
Up to 8 adjacent registers within the same page can be combined to handle up to 32-bit data. The little-endian order is used.
There a 16 x 4-bit registers. Writing to these registers does not always correspond to their contents, therefore different descriptions for reading and writing are given.
Event flags.
READ:
- SR0.0 — Timer0 event flag
- SR0.1 — Timer1 event flag
- SR0.2 — Buttons event flag
- SR0.3 — Inductive serial port (ISP) event flag
WRITE:
- No effect
ISP flags.
READ:
- SR1.0 — ISP receive flag, through buffer registers (even if with an error)
- SR1.1 — ISP receive flag, through DMA (SA)
- SR1.2 — ISP transmit flag, through buffer registers
- SR1.3 — ISP transmit flag, through DMA (SA)
WRITE:
- Any value clears SR1 and SR0.3
Some flags associated with ISP.
READ:
- SR2.0 — ISP receive error
- SR2.1 — ?
- SR2.2 — ?
- SR2.3 — ?
WRITE:
- Any value clears SR2
READ:
Number (0-3) of timer1 overflows since previous read SR3 (?)
WRITE:
ISP control.
- SR3.0
0: Transmit/receive through ISP buffer registers
1: Transmit/receive from/to SRAM through (SA) (Number of transmitted bytes = 256 - SA % 256) - SR3.1
0: Transmitter disable
1: Transmitter enable - SR3.2 — ?
- SR3.3 — ?
READ:
Number (0-3) of timer0 overflows since previous read SR4 (?)
WRITE:
ISP control.
- SR4.0
1: Start ISP transmitting - SR4.1
1: ? Receiver enable - SR4.2 — ?
- SR4.3 — ?
ISP buffers, high nibble.
READ:
ISP receive data buffer
- Get received/transmitted data (if SR4.1 = 1)
WRITE:
ISP transmit data buffer
- Loads data to be transmitted
ISP buffers, low nibble.
READ:
ISP receive data buffer
- Get received/transmitted data (if SR4.1 = 1)
WRITE:
ISP transmit data buffer
- Loads data to be transmitted
Button press flags.
READ:
- SR7.0 — LEFT
- SR7.1 — RIGHT
- SR7.2 — TRANSMIT
- SR7.3 — MODE
WRITE:
- Any value clears SR7 and SR0.2
Button pressed flags.
READ:
- SR8.0 — 1 while LEFT is pressed
- SR8.1 — 1 while RIGHT is pressed
- SR8.2 — 1 while TRANSMIT is pressed
- SR8.3 — 1 while MODE is pressed
WRITE:
- No effect
Timer1 flags.
READ:
- SR9.0 — Timer1 stopwatch clear flag (LEFT is pressed while the stopwatch is stopped)
- SR9.1 — Timer1 stopwatch split flag (LEFT is pressed while the stopwatch is running)
- SR9.2 — Timer1 overflow flag
- SR9.3 — Timer1 stopwatch running flag (RIGHT is pressed)
WRITE:
- SR9.0
1: Clear SR9.0, if after that SR9 == 0 clear SR0.1 - SR9.1
1: Clear SR9.1, if after that SR9 == 0 clear SR0.1 - SR9.2
1: Clear SR9.2, if after that SR9 == 0 clear SR0.1 - SR9.3
1: Clear SR9.3, if after that SR9 == 0 clear SR0.1
Timer1 value and control.
READ:
- Timer1 1/100 sec. BCD
WRITE:
- SR10.0
1: Timer1 Stopwatch special mode - SR10.1
1: Timer1 reset (SR10 ← 0) (cancels Stopwatch mode) - SR10.2
1: Timer1 stop (cancels Stopwatch mode) - SR10.3
1: Timer1 start (cancels Stopwatch mode)
Timer1 split value (when the LEFT is pressed while the stopwatch is running SR11 ← SR10).
READ:
- Split value.
WRITE:
- No effect.
Timer0 flags.
READ:
- SR12.0 — Timer0 overflow flag
- SR12.1 — Set every 1/4 sec.
- SR12.2 — Set every 1/16 sec.
- SR12.3 — Set every 1/32 sec.
WRITE:
- SR12.0
1: Clear SR12.0, if after that SR12 == 0 clear SR0.0 - SR12.1
1: Clear SR12.1, if after that SR12 == 0 clear SR0.0 - SR12.2
1: Clear SR12.2, if after that SR12 == 0 clear SR0.0 - SR12.3
1: Clear SR12.3, if after that SR12 == 0 clear SR0.0
Timer0 control.
READ:
- SR13.0 — Timer0 overflow disabled
- SR13.1 — Timer0 1/4 sec. disabled
- SR13.2 — Timer0 1/16 sec. disabled
- SR13.3 — Timer0 1/32 sec. disabled
WRITE:
- SR13.0
1: Disable Timer0 overflow - SR13.1
1: Disable Timer0 1/4 sec. - SR13.2
1: Disable Timer0 1/16 sec. - SR13.3
1: Disable Timer0 1/32 sec. interrupt
Timer0 value.
READ: Timer0 1/16 sec.
WRITE: Any value clears Timer0
READ:
- SR15.0 — ? (always 0)
- SR15.1 — ? (always 0)
- SR15.2 — ? (always 0)
- SR15.3 — Set while erasing
WRITE:
- SR15.0
1: 1-short beep - SR15.1
1: Beep tone generator disable - SR15.2
1: Beep tone generator enable (4096Hz) - SR15.3
1: Erase SRAM starting with SA. After erasing SA = 0.
The stack consists of three 12-bit registers.
The CPU is clocked at 32768Hz. All instructions, except for multi-nibbles, are executed in 8 clock cycles.
For multi-nibbles instructions, the execution time increases in multiples of the number of processed nibbles.
Example:
ADD RA0, RA1 ;8 cycles, 244.14us
ADDM RA0, RB7 ;64 cycles, 1953.13us
8 bit wide RAM occupy addresses 0x0 - 0x39. Stores display data represented in 8-bit character codes
1 bit wide RAM occupy addresses 0x40 - 0x67. Stores the blink attribute (0x1: on, 0x0: off) for the corresponding character in DDRAM
Control registers occupy addresses 0x70 - 0x7F.
Display Сonfiguration (top half), 2 bit.
- 0: normal
- 1: horizontal reflection
- 2: horizontal and vertical reflection
- 3: horizontal and vertical reflection
Display Сonfiguration (bottom half), 2 bit.
- 0: horizontal and vertical reflection
- 1: vertical reflection
- 2: normal
- 3: normal
?
?
Display Refresh Control, 1 bit.
- 0: enable
- 1: disable
Blink Mode, 1 bit.
- 0: Blink to white
- 1: Blink to black
Display Test, 1 bit.
- 0: Normal mode
- 1: Test Mode (full screen 0xFF)
Draw Mode, 1 bit.
- 0: Char mode
- 1: Direct mode
Auto Display Refresh Control, 1 bit.
- 0: Disable
- 1: Enable (4 FPS)
Contrast increase, any value.
Сontrast decrease, any value.
Clear control registers, any value.
Force display refresh after the current one ends (Reset scanning pointer after reaching 512), any value.
Clear display, any value.
Clear blink attributes, any value.
Force display refresh (Reset scanning pointer immediately), any value.