| 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 |
|
|---|
| 10 | WriteChar:
|
|---|
| 11 | ; R0 - written character
|
|---|
| 12 | PUSH R1
|
|---|
| 13 | LD R1, TerminalData
|
|---|
| 14 | OUT (R1), R0
|
|---|
| 15 | POP R1
|
|---|
| 16 | RET
|
|---|
| 17 |
|
|---|
| 18 | ReadChar:
|
|---|
| 19 | ; R0 - read character
|
|---|
| 20 | PUSH R1
|
|---|
| 21 | LD R1, TerminalData
|
|---|
| 22 | IN R0, (R1)
|
|---|
| 23 | POP R1
|
|---|
| 24 | RET
|
|---|
| 25 |
|
|---|
| 26 | Beep:
|
|---|
| 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 |
|
|---|
| 36 | ReadFile:
|
|---|
| 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
|
|---|
| 53 | ReadFileLoop:
|
|---|
| 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 |
|
|---|
| 65 | ClearScreen:
|
|---|
| 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
|
|---|
| 76 | ClearScreenLoop:
|
|---|
| 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.