DB Start, KeyInterrupt, 'ABC', 123 NOP NOP NOP VAR DeviceConsole 1 VAR ConsoleReadChar 0 VAR ConsoleWriteChar 0 VAR DeviceKeyboard 2 VAR DeviceScreen 3 VAR ScreenGetWidth 0 VAR ScreenGetHeight 1 VAR ScreenSetAddr 0 VAR ScreenWrite 1 ORG 16 Start: ; Example code ; NOP ;LOOP: ;SET R0, 123 ;SET R1, 1024 ;SET R2, 32 ;ST R2, R1 ;JNZ R0, LOOP ;SET R0, 124 ;JNZ R0, LOOP2 ;SET R0, 6 LOOP2: SET R0, Hello SET R1, 12 CALL WriteStr ; SET R0, 0 ; SET R1, 128 ; SET R2, 16 ; CALL LDIR ; SET R0, 256 ; SET R1, 16 ; SET R2, 127 ; CALL SETR CALL ClearScreen System: HALT JP System LDIR: PUSH R3 LDIR_LOOP: LD R3, (R0) ST (R1), R3 INC R0 INC R1 DEC R2 JNZ R2, LDIR_LOOP POP R3 RET SETR: ST (R0), R2 INC R0 DEC R1 JNZ R1, SETR RET WriteStr: PUSH R2 PUSH R3 PUSH R4 SET R3, ConsoleWriteChar SET R4, DeviceConsole WriteStrLoop: LD R2, (R0) OUT (R4: R3), R2 INC R0 DEC R1 JNZ R1, WriteStrLoop POP R4 POP R3 POP R2 RET ClearScreen: PUSH R0 PUSH R1 PUSH R2 PUSH R3 SET R0, ScreenSetAddr SET R1, 0 SET R3, DeviceScreen OUT (R3: R0), R1 SET R0, ScreenGetWidth IN R1, (R3: R0) SET R0, ScreenGetHeight IN R2, (R3: R0) MUL R2, R1 SET R0, ScreenWrite SET R1, 120 ClearScreenLoop: OUT (R3: R0), R1 DEC R2 JNZ R2, ClearScreenLoop POP R3 POP R2 POP R1 POP R0 RET Hello: DB 'Hello friend' KeyInterrupt: ; Echo key PUSH R3 PUSH R2 PUSH R4 SET R4, DeviceConsole SET R3, ConsoleReadChar IN R2, (R4: R3) SET R3, ConsoleWriteChar OUT (R4: R3), R2 POP R4 POP R2 POP R3 RET Test: LDI R0, (R1 + 1) STI (R1 + 12), R2