source: branches/ByteArray/Asm/SysCalls.asm

Last change on this file was 5, checked in by chronos, 3 months ago
File size: 1.1 KB
Line 
1.include Io.asm
2
3 .org 2
4 .db WriteChar
5 .db ReadChar
6 .db Beep
7 .db ReadFile
8 .db ClearScreen
9
10WriteChar:
11 ; R0 - written character
12 PUSH R1
13 LD R1, TerminalData
14 OUT (R1), R0
15 POP R1
16 RET
17
18ReadChar:
19 ; R0 - read character
20 PUSH R1
21 LD R1, TerminalData
22 IN R0, (R1)
23 POP R1
24 RET
25
26Beep:
27 PUSH R0
28 PUSH R1
29 LD R0, 'C'
30 LD R1, Sound
31 OUT (R1), R1
32 POP R1
33 POP R0
34 RET
35
36ReadFile:
37 ; R0 - file index on file system
38 ; R1 - destination address
39 PUSH R1
40 PUSH R2
41 PUSH R3
42 PUSH R4
43 ; Get file descriptor address
44 LD R2, R0
45 SHL R2
46 INC R2
47 OUT (StorageAddress), R2
48 ; Get file base
49 IN R4, (StorageData)
50 ; Get file size
51 IN R3, (StorageData)
52 OUT (StorageAddress), R4
53ReadFileLoop:
54 IN R2, (StorageData)
55 LD (R1), R2
56 INC R1
57 DEC R3
58 JR NZ, ReadFileLoop
59 POP R4
60 POP R3
61 POP R2
62 POP R1
63 RET
64
65ClearScreen:
66 PUSH R0
67 PUSH R1
68 PUSH R2
69 PUSH R3
70 LD R1, 0
71 OUT (ScreenAddress), R1
72 IN R1, (ScreenWidth)
73 IN R2, (ScreenHeight)
74 MUL R2, R1
75 LD R1, 120
76ClearScreenLoop:
77 OUT (ScreenData), R1
78 DEC R2
79 JR NZ, ClearScreenLoop
80 POP R3
81 POP R2
82 POP R1
83 POP R0
84 RET
Note: See TracBrowser for help on using the repository browser.