aboutsummaryrefslogtreecommitdiff
path: root/examples/test.s
blob: 151e9ad1234091d78ef7eef41b21eefad1f27eee (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
; Try some basic stuff
	      SET A, 0x30              ; 7c01 0030
	      SET [0x1000], 0x20       ; 7de1 1000 0020
	      SUB A, [0x1000]          ; 7803 1000
	      IFN A, 0x10              ; c00d 
		 SET PC, crash         ; 7dc1 001a [*]
	      
; Do a loopy thing
	      SET I, 10                ; a861
	      SET A, 0x2000            ; 7c01 2000
:loop         SET [0x2000+I], [A]      ; 2161 2000
	      SUB I, 1                 ; 8463
	      IFN I, 0                 ; 806d
		 SET PC, loop          ; 7dc1 000d [*]

; Call a subroutine
	      SET X, 0x4               ; 9031
	      JSR testsub              ; 7c10 0018 [*]
	      SET PC, crash            ; 7dc1 001a [*]

:testsub      SHL X, 4                 ; 9037
	      SET PC, POP              ; 61c1
		
; Hang forever. X should now be 0x40 if everything went right.
:crash        SET PC, crash            ; 7dc1 001a [*]

; [*]: Note that these can be one word shorter and one cycle faster by using the short form (0x00-0x1f) of literals,
;      but my assembler doesn't support short form labels yet.