source: branches/ByteArray/Sample.asm

Last change on this file was 59, checked in by chronos, 6 months ago
  • Fixed: Assembler and disassembler to work correctly with supported instructions.
File size: 1.6 KB
Line 
1 JP Start
2 NOP
3 NOP
4 NOP
5
6 RET
7 LD R0, (R1)
8 LD (R0), R1
9 LD R0, R1
10 LD R0, 1
11 LD (R0 + 1), R1
12 ;LD (R0), (R1)
13 LD D1, R0, 1
14 LD D1, R0, R1
15
16 JP Start
17 NOP
18 NOP
19 NOP
20
21 VAR DeviceConsole 1
22 VAR ConsoleReadChar 0
23 VAR ConsoleWriteChar 0
24
25 VAR DeviceKeyboard 2
26
27 VAR DeviceScreen 3
28 VAR ScreenGetWidth 0
29 VAR ScreenGetHeight 1
30 VAR ScreenSetAddr 0
31 VAR ScreenWrite 1
32
33Start:
34 LD R0, 64
35 LD R1, 8
36 OUT (R1), R0
37 LD R1, 0
38 LD R2, 10
39 OUT (R1), R0
40Loop:
41 INC R0
42 DEC R2
43 JNZ R2, Loop
44 HALT
45
46WriteStr:
47 ; R0 - string address
48 ; R1 - string length
49 PUSH R2
50 PUSH R3
51 PUSH R4
52 LD R3, ConsoleWriteChar
53WriteStrLoop:
54 LD R2, (R0)
55 OUT (R3), R2
56 INC R0
57 DEC R1
58 JNZ R1, WriteStrLoop
59 POP R4
60 POP R3
61 POP R2
62 RET
63
64ClearScreen:
65 PUSH R0
66 PUSH R1
67 PUSH R2
68 PUSH R3
69 LD R0, ScreenSetAddr
70 LD R1, 0
71 OUT (R0), R1
72 LD R0, ScreenGetWidth
73 IN R1, (R0)
74 LD R0, ScreenGetHeight
75 IN R2, (R0)
76 MUL R2, R1
77 LD R0, ScreenWrite
78 LD R1, 120
79ClearScreenLoop:
80 OUT (R0), R1
81 DEC R2
82 JNZ R2, ClearScreenLoop
83 POP R3
84 POP R2
85 POP R1
86 POP R0
87 RET
88
89Hello:
90 DB 'Hello friend'
91
92KeyInterrupt:
93 ; Echo key
94 PUSH R3
95 PUSH R2
96 PUSH R4
97 LD R3, ConsoleReadChar
98 IN R2, (R3)
99 LD R3, ConsoleWriteChar
100 OUT (R3), R2
101 POP R4
102 POP R2
103 POP R3
104 RET
105
106Test:
107 LD R0, (R1 + 1)
108 LD (R1 + 12), R2
Note: See TracBrowser for help on using the repository browser.