aboutsummaryrefslogtreecommitdiffstats
path: root/src/test.atk16
blob: 399bd7e41d58e1f498f5e44f67aea5d4689de382 (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
; Program: sum two values and store the result in RAM

; ROM (and program execution) starts at offset 0x0
@address 0x0
  ldi RA program
  jmp RA

@label ram_offset
  0x8000            ; store ram offset for later memory access

@label program
  ldi RA 10         ; RA := 10
  ldi RB 20         ; RB := 10
  add RA RB RC      ; RC := RA + RB
  ldi RD ram_offset ; store address of ram_offset in RD
  ldr RD RD         ; dereference ram_offset address
@label debug
  str RD RC         ; store RC in RAM

; Check that 10 + 20 = 30
  mov RC RA         ; RA := result of sum
  ldi RB 30         ; RB := 30
  ldi RD success
  sub RA RB RC      ; RC := RA - RB
  br f_zero RD      ; if result is zero, jump to success

  ldi RA 2          ; RA := 2 to signal failure
  hlt

; Else
@label success
  ldi RA 1          ; RA := 1 to signal success
  hlt