source: branches/ByteArray/Sample.asm

Last change on this file was 10, checked in by chronos, 2 months ago
  • Modified: Improved serial console handling.
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, Hello
35 LD R1, 12
36 CALL WriteStr
37
38 ;LD R0, 64
39 ;LD R1, 8
40 ;OUT (R1), R0
41 ;LD R1, 0
42 ;LD R2, 10
43 ;OUT (R1), R0
44;Loop:
45 ;INC R0
46 ;DEC R2
47 ;JNZ R2, Loop
48 HALT
49
50WriteStr:
51 ; R0 - string address
52 ; R1 - string length
53 PUSH R2
54 PUSH R3
55 PUSH R4
56 LD R3, ConsoleWriteChar
57WriteStrLoop:
58 LD D1, R2, (R0)
59 OUT D1, (R3), R2
60 INC R0
61 DEC R1
62 JNZ R1, WriteStrLoop
63 POP R4
64 POP R3
65 POP R2
66 RET
67
68ClearScreen:
69 PUSH R0
70 PUSH R1
71 PUSH R2
72 PUSH R3
73 LD R0, ScreenSetAddr
74 LD R1, 0
75 OUT (R0), R1
76 LD R0, ScreenGetWidth
77 IN R1, (R0)
78 LD R0, ScreenGetHeight
79 IN R2, (R0)
80 MUL R2, R1
81 LD R0, ScreenWrite
82 LD R1, 120
83ClearScreenLoop:
84 OUT (R0), R1
85 DEC R2
86 JNZ R2, ClearScreenLoop
87 POP R3
88 POP R2
89 POP R1
90 POP R0
91 RET
92
93Hello:
94 DB 'Hello friend'
95
96KeyInterrupt:
97 ; Echo key
98 PUSH R3
99 PUSH R2
100 PUSH R4
101 LD R3, ConsoleReadChar
102 IN R2, (R3)
103 LD R3, ConsoleWriteChar
104 OUT (R3), R2
105 POP R4
106 POP R2
107 POP R3
108 RET
109
110Test:
111 LD R0, (R1 + 1)
112 LD (R1 + 12), R2
Note: See TracBrowser for help on using the repository browser.