.include Io.asm .org 2 .db WriteChar .db ReadChar .db Beep .db ReadFile .db ClearScreen WriteChar: ; R0 - written character PUSH R1 LD R1, TerminalData OUT (R1), R0 POP R1 RET ReadChar: ; R0 - read character PUSH R1 LD R1, TerminalData IN R0, (R1) POP R1 RET Beep: PUSH R0 PUSH R1 LD R0, 'C' LD R1, Sound OUT (R1), R1 POP R1 POP R0 RET ReadFile: ; R0 - file index on file system ; R1 - destination address PUSH R1 PUSH R2 PUSH R3 PUSH R4 ; Get file descriptor address LD R2, R0 SHL R2 INC R2 OUT (StorageAddress), R2 ; Get file base IN R4, (StorageData) ; Get file size IN R3, (StorageData) OUT (StorageAddress), R4 ReadFileLoop: IN R2, (StorageData) LD (R1), R2 INC R1 DEC R3 JR NZ, ReadFileLoop POP R4 POP R3 POP R2 POP R1 RET ClearScreen: PUSH R0 PUSH R1 PUSH R2 PUSH R3 LD R1, 0 OUT (ScreenAddress), R1 IN R1, (ScreenWidth) IN R2, (ScreenHeight) MUL R2, R1 LD R1, 120 ClearScreenLoop: OUT (ScreenData), R1 DEC R2 JR NZ, ClearScreenLoop POP R3 POP R2 POP R1 POP R0 RET