Arthur Paulino 2018-01-03 17:59:36 -03:00
parent a708712b3e
commit cf43169aef

@ -15,62 +15,4 @@ Hardware ID: `0x0009`
| 3 | `HOLO_DISPLAY_DEC` | `0 kJ` | Displays the value of the B register in decimal format | | 3 | `HOLO_DISPLAY_DEC` | `0 kJ` | Displays the value of the B register in decimal format |
| 4 | `HOLO_DISPLAY_COLOR` | `4 kJ` | Changes the color of the hologram projections using the value of the B:C register (e.g. B: 0x00AA, and C: 0xBBCC, would be RGB 0xAABBCC) | | 4 | `HOLO_DISPLAY_COLOR` | `4 kJ` | Changes the color of the hologram projections using the value of the B:C register (e.g. B: 0x00AA, and C: 0xBBCC, would be RGB 0xAABBCC) |
Note that the Hologram Projector will clear itself at the end of the tick, it is only necessary to use CLEAR when you want to cancel a DISPLAY command executed within the same tick. Note that the Hologram Projector will clear itself at the end of the tick, it is only necessary to use CLEAR when you want to cancel a DISPLAY command executed within the same tick.
### Usage examples
```assembly
; Displaying the hexadecimal 0x000A
HWID_HOLO EQU 0x9 ;; setup constants
HOLO_DISPLAY_HEX EQU 1
.data
DISPLAYED_HEX EQU 0X000A ;; create a word in memory called DISPLAYED_HEX and set its value to 0x000A
.text
MOV A, HOLO_DISPLAY_HEX ;; MOV the constant HOLO_DISPLAY_HEX into register A
MOV B, [DISPLAYED_HEX] ;; MOV the value inside the memory spot DISPLAYED_HEX into register B
HWI HWID_HOLO ;; create an hardware interrupt which will do the magic of displaying
BRK ;; halt execution for the rest of this tick
```
```assembly
; Displaying the string "hello!"
HWID_HOLO EQU 0x9 ;; setup constants
HOLO_DISPLAY_STRING EQU 2
.data
DISPLAYED_STRING: DW "hello!", 0 ;; create a string in memory and point to it by DISPLAYED_STRING
;; the ',0' is a null word. This represents the end of the string
.text
MOV A, HOLO_DISPLAY_STRING ;; MOV the constant HOLO_DISPLAY_STRING into register A
MOV X, DISPLAYED_STRING ;; MOV the pointer of DISPLAYED_STRING into register B
HWI HWID_HOLO ;; do the magic
BRK ;; halt execution until the next tick
```
```assembly
; Displaying the decimal 42
HWID_HOLO EQU 0x9 ;; setup constants
HOLO_DISPLAY_DEC EQU 3
.data
DISPLAYED_DECIMAL EQU 42 ;; create a word in memory called DISPLAYED_DECIMAL and set its value
;; to 42
.text
MOV A, HOLO_DISPLAY_DEC ;; MOV the constant HOLO_DISPLAY_DEC into register A
MOV B, DISPLAYED_DECIMAL ;; MOV the value inside the memory spot DISPLAYED_HEX into register B
HWI HWID_HOLO ;; more magic
BRK ;; halt execution until next tick
```
```assembly
; Displaying the decimal 42 in red
HWID_HOLO EQU 0x9 ;; setup constants
HOLO_DISPLAY_DEC EQU 3
HOLO_DISPLAY_COLOR EQU 4
.data
DISPLAYED_DECIMAL EQU 42 ;; create a word in memory called DISPLAYED_DECIMAL and set its value
;; to 42
.text
MOV A, HOLO_DISPLAY_COLOR ;; MOV the constant HOLO_DISPLAY_COLOR into register A
MOV B, 0x00FF ;; MOV the (immediate) value 0x00FF into register B
MOV C, 0x0000 ;; clear register C
HWI HWID_HOLO ;; this interrupt will set the color to: #0000FF [C:B] also know as red
MOV A, HOLO_DISPLAY_DEC ;; MOV the constant HOLO_DISPLAY_DEC into register A
MOV B, [DISPLAYED_DECIMAL] ;; MOV the value that DISPLAYED_DECIMAL is pointing at into register B
HWI HWID_HOLO ;; ...
BRK ;; halt execution until next tick
```