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

; ROM (and program execution) starts at offset 0x0
@address 0x0
  jpi program

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

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

                          ; Check that 10 + 20 = 30
  ali al_plus RC 0 RA     ; RA := result of sum
  ldi 30 RB               ; RB := 30
  alr al_minus RA RB RC   ; RC := RA - RB
  bri zero success        ; if result is zero, jump to success

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

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