Annoted examples + fixed val into *val

Kevin Ramharak 2018-01-03 14:21:54 +01:00
parent f96f2017bf
commit 8832bdbc6e

@ -20,54 +20,58 @@ Note that the Hologram Projector will clear itself at the end of the tick, it is
### Usage examples
```assembly
; Displaying the hexadecimal 0x000A
HWID_HOLO EQU 0x9
HWID_HOLO EQU 0x9 ;; setup constants
HOLO_DISPLAY_HEX EQU 1
.data
DISPLAYED_HEX EQU 0X000A
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 B, DISPLAYED_HEX
HWI HWID_HOLO
BRK
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
HWID_HOLO EQU 0x9 ;; setup constants
HOLO_DISPLAY_STRING EQU 2
.data
DISPLAYED_STRING: DW "hello!", 0
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 X, DISPLAYED_STRING
HWI HWID_HOLO
BRK
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
HWID_HOLO EQU 0x9 ;; setup constants
HOLO_DISPLAY_DEC EQU 3
.data
DISPLAYED_DECIMAL EQU 42
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 B, DISPLAYED_DECIMAL
HWI HWID_HOLO
BRK
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
HWID_HOLO EQU 0x9 ;; setup constants
HOLO_DISPLAY_DEC EQU 3
HOLO_DISPLAY_COLOR EQU 4
.data
DISPLAYED_DECIMAL EQU 42
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 B, 0x00FF
MOV C, 0x0000
HWI HWID_HOLO
MOV A, HOLO_DISPLAY_DEC
MOV B, DISPLAYED_DECIMAL
HWI HWID_HOLO
BRK
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
```