summaryrefslogtreecommitdiff
path: root/ROMs/hello_world.dat
blob: 6cdacff03115bc8de5995eff3383e843c7ff0afd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
.org $1FFF
JMP program

font:
    .include "font.bin"

program:
    MOV 13, V0 ; Load character #12
    MOV 0, V1 ; X position
    MOV 0, V2 ; Y position
    MOV 1, V3 ; Color (1 = white)
    CALL write_char ; Call function to write character
    SUS

write_char:
    ; V0: Character to write
    ; V1: X position
    ; V2: Y position
    ; V3: Color
    ; Write a character to the screen at (V1, V2) with color V3
    
    MUL V0, 64 ; V0 = Character * 64 (character size)
    MOV AX, V0 ; Store result back into character
    
    MUL V2, 64
    ADD AX, V1
    MOV AX, V4 ; V4 = X position + Y position * 64 (screen index)
    
    MOV [V0 + $1FFF], V5 ; Read character
    MUL V5, V3 ; V5 = Character * Color (color index)
    MOV AX, V5 ; Store result into V5
    MOV V5, [V4 + $3FFF] ; Write character to screen memory
    RET