Merge pull request #7 from fox32-arch/okameron
Initial Okameron support
This commit is contained in:
commit
8bd6248c87
37
fox32rom.def.okm
Normal file
37
fox32rom.def.okm
Normal file
|
@ -0,0 +1,37 @@
|
||||||
|
(* fox32rom routine definitions for Okameron *)
|
||||||
|
|
||||||
|
MODULE Fox32ROM;
|
||||||
|
ASM "fox32rom.def";
|
||||||
|
ASM "fox32rom_okm.asm";
|
||||||
|
|
||||||
|
TYPE ROMFile = RECORD
|
||||||
|
disk: CHAR;
|
||||||
|
firstSector: SHORT;
|
||||||
|
seekOffset: INT;
|
||||||
|
reserved: CHAR;
|
||||||
|
END;
|
||||||
|
|
||||||
|
EXTERN PROCEDURE NewEvent: INT;
|
||||||
|
EXTERN PROCEDURE GetNextEvent: INT;
|
||||||
|
|
||||||
|
EXTERN PROCEDURE FillBackground: INT;
|
||||||
|
EXTERN PROCEDURE DrawStrToBackground: INT;
|
||||||
|
EXTERN PROCEDURE DrawFormatStrToBackground: INT;
|
||||||
|
|
||||||
|
EXTERN PROCEDURE RYFSOpen: INT;
|
||||||
|
EXTERN PROCEDURE RYFSSeek: INT;
|
||||||
|
EXTERN PROCEDURE RYFSTell: INT;
|
||||||
|
EXTERN PROCEDURE RYFSRead: INT;
|
||||||
|
EXTERN PROCEDURE RYFSReadWholeFile: INT;
|
||||||
|
EXTERN PROCEDURE RYFSGetSize: INT;
|
||||||
|
EXTERN PROCEDURE RYFSGetFileList: INT;
|
||||||
|
EXTERN PROCEDURE RYFSWrite: INT;
|
||||||
|
|
||||||
|
EXTERN PROCEDURE CopyMemoryChar: INT;
|
||||||
|
EXTERN PROCEDURE CopyMemoryInt: INT;
|
||||||
|
EXTERN PROCEDURE CopyString: INT;
|
||||||
|
EXTERN PROCEDURE CompareMemoryChar: INT;
|
||||||
|
EXTERN PROCEDURE CompareMemoryInt: INT;
|
||||||
|
EXTERN PROCEDURE CompareString: INT;
|
||||||
|
EXTERN PROCEDURE StringLength: INT;
|
||||||
|
END.
|
192
fox32rom_okm.asm
Normal file
192
fox32rom_okm.asm
Normal file
|
@ -0,0 +1,192 @@
|
||||||
|
; fox32rom routine definitions for Okameron
|
||||||
|
|
||||||
|
; PROCEDURE NewEvent(
|
||||||
|
; eventType,
|
||||||
|
; eventArg0,
|
||||||
|
; eventArg1,
|
||||||
|
; eventArg2,
|
||||||
|
; eventArg3,
|
||||||
|
; eventArg4,
|
||||||
|
; eventArg5,
|
||||||
|
; eventArg6: INT;
|
||||||
|
; );
|
||||||
|
NewEvent:
|
||||||
|
push r7
|
||||||
|
mov r7, 0
|
||||||
|
call new_event
|
||||||
|
pop r7
|
||||||
|
ret
|
||||||
|
|
||||||
|
; PROCEDURE GetNextEvent(event: POINTER TO ARRAY 8 OF INT);
|
||||||
|
GetNextEvent:
|
||||||
|
push r8
|
||||||
|
mov r8, r0
|
||||||
|
call get_next_event
|
||||||
|
mov [r8], r0
|
||||||
|
add r8, 4
|
||||||
|
mov [r8], r1
|
||||||
|
add r8, 4
|
||||||
|
mov [r8], r2
|
||||||
|
add r8, 4
|
||||||
|
mov [r8], r3
|
||||||
|
add r8, 4
|
||||||
|
mov [r8], r4
|
||||||
|
add r8, 4
|
||||||
|
mov [r8], r5
|
||||||
|
add r8, 4
|
||||||
|
mov [r8], r6
|
||||||
|
add r8, 4
|
||||||
|
mov [r8], r7
|
||||||
|
pop r8
|
||||||
|
ret
|
||||||
|
|
||||||
|
; PROCEDURE FillBackground(color: INT;);
|
||||||
|
FillBackground:
|
||||||
|
jmp fill_background
|
||||||
|
|
||||||
|
; PROCEDURE DrawStrToBackground(
|
||||||
|
; str: POINTER TO CHAR;
|
||||||
|
; x, y, fgColor, bgColor: INT;
|
||||||
|
; );
|
||||||
|
DrawStrToBackground:
|
||||||
|
jmp draw_str_to_background
|
||||||
|
|
||||||
|
; PROCEDURE DrawFormatStrToBackground(
|
||||||
|
; str: POINTER TO CHAR;
|
||||||
|
; x, y, fgColor, bgColor,
|
||||||
|
; format0, format1, format2: INT;
|
||||||
|
; );
|
||||||
|
DrawFormatStrToBackground:
|
||||||
|
push r10
|
||||||
|
push r11
|
||||||
|
push r12
|
||||||
|
push r13
|
||||||
|
push r14
|
||||||
|
push r15
|
||||||
|
mov r10, r5
|
||||||
|
mov r11, r6
|
||||||
|
mov r12, r7
|
||||||
|
mov r13, 0
|
||||||
|
mov r14, 0
|
||||||
|
mov r15, 0
|
||||||
|
call draw_format_str_to_background
|
||||||
|
pop r15
|
||||||
|
pop r14
|
||||||
|
pop r13
|
||||||
|
pop r12
|
||||||
|
pop r11
|
||||||
|
pop r10
|
||||||
|
ret
|
||||||
|
|
||||||
|
; PROCEDURE RYFSOpen(
|
||||||
|
; name: POINTER TO CHAR;
|
||||||
|
; id: INT;
|
||||||
|
; struct: POINTER TO ROMFile;
|
||||||
|
; ): INT;
|
||||||
|
RYFSOpen:
|
||||||
|
jmp ryfs_open
|
||||||
|
|
||||||
|
; PROCEDURE RYFSSeek(
|
||||||
|
; offset: INT;
|
||||||
|
; struct: POINTER TO ROMFile;
|
||||||
|
; );
|
||||||
|
RYFSSeek:
|
||||||
|
jmp ryfs_seek
|
||||||
|
|
||||||
|
; PROCEDURE RYFSTell(
|
||||||
|
; struct: POINTER TO ROMFile;
|
||||||
|
; ): INT;
|
||||||
|
RYFSTell:
|
||||||
|
jmp ryfs_tell
|
||||||
|
|
||||||
|
; PROCEDURE RYFSRead(
|
||||||
|
; size: INT;
|
||||||
|
; struct: POINTER TO ROMFile;
|
||||||
|
; destination: POINTER TO CHAR;
|
||||||
|
; );
|
||||||
|
RYFSRead:
|
||||||
|
jmp ryfs_read
|
||||||
|
|
||||||
|
; PROCEDURE RYFSReadWholeFile(
|
||||||
|
; struct: POINTER TO ROMFile;
|
||||||
|
; destination: POINTER TO CHAR;
|
||||||
|
; );
|
||||||
|
RYFSReadWholeFile:
|
||||||
|
jmp ryfs_read_whole_file
|
||||||
|
|
||||||
|
; PROCEDURE RYFSGetSize(
|
||||||
|
; struct: POINTER TO ROMFile;
|
||||||
|
; ): INT;
|
||||||
|
RYFSGetSize:
|
||||||
|
jmp ryfs_get_size
|
||||||
|
|
||||||
|
; PROCEDURE RYFSGetFileList(
|
||||||
|
; buffer: POINTER TO CHAR;
|
||||||
|
; id: INT;
|
||||||
|
; );
|
||||||
|
RYFSGetFileList:
|
||||||
|
jmp ryfs_get_file_list
|
||||||
|
|
||||||
|
; PROCEDURE RYFSWrite(
|
||||||
|
; size: INT;
|
||||||
|
; struct: POINTER TO ROMFile;
|
||||||
|
; source: POINTER TO CHAR;
|
||||||
|
; );
|
||||||
|
RYFSWrite:
|
||||||
|
jmp ryfs_write
|
||||||
|
|
||||||
|
; PROCEDURE CopyMemoryChar(
|
||||||
|
; source, destination: POINTER TO CHAR;
|
||||||
|
; size: INT;
|
||||||
|
; );
|
||||||
|
CopyMemoryChar:
|
||||||
|
jmp copy_memory_bytes
|
||||||
|
|
||||||
|
; PROCEDURE CopyMemoryInt(
|
||||||
|
; source, destination: POINTER TO INT;
|
||||||
|
; size: INT;
|
||||||
|
; );
|
||||||
|
CopyMemoryInt:
|
||||||
|
jmp copy_memory_words
|
||||||
|
|
||||||
|
; PROCEDURE CopyString(
|
||||||
|
; source, destination: POINTER TO CHAR;
|
||||||
|
; );
|
||||||
|
CopyString:
|
||||||
|
jmp copy_string
|
||||||
|
|
||||||
|
; PROCEDURE CompareMemoryChar(
|
||||||
|
; source, destination: POINTER TO CHAR;
|
||||||
|
; size: INT;
|
||||||
|
; ): INT;
|
||||||
|
CompareMemoryChar:
|
||||||
|
call compare_memory_bytes
|
||||||
|
ifz mov r0, 0
|
||||||
|
ifnz mov r0, 1
|
||||||
|
ret
|
||||||
|
|
||||||
|
; PROCEDURE CompareMemoryInt(
|
||||||
|
; source, destination: POINTER TO INT;
|
||||||
|
; size: INT;
|
||||||
|
; ): INT;
|
||||||
|
CompareMemoryInt:
|
||||||
|
call compare_memory_words
|
||||||
|
ifz mov r0, 0
|
||||||
|
ifnz mov r0, 1
|
||||||
|
ret
|
||||||
|
|
||||||
|
; PROCEDURE CompareString(
|
||||||
|
; source, destination: POINTER TO CHAR;
|
||||||
|
; size: INT;
|
||||||
|
; ): INT;
|
||||||
|
CompareString:
|
||||||
|
call compare_string
|
||||||
|
ifz mov r0, 0
|
||||||
|
ifnz mov r0, 1
|
||||||
|
ret
|
||||||
|
|
||||||
|
; PROCEDURE StringLength(
|
||||||
|
; source: POINTER TO CHAR;
|
||||||
|
; ): INT;
|
||||||
|
StringLength:
|
||||||
|
jmp string_length
|
Loading…
Reference in New Issue
Block a user