diff --git a/Hardware:-Hologram-Projector.md b/Hardware:-Hologram-Projector.md index a061e3e..86378d1 100644 --- a/Hardware:-Hologram-Projector.md +++ b/Hardware:-Hologram-Projector.md @@ -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 -HOLO_DISPLAY_DEC EQU 3 +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 ``` \ No newline at end of file