From d5efb858613e7b45f1e4d6b9cda7691595366daf Mon Sep 17 00:00:00 2001 From: Lailouezzz Date: Sun, 29 Dec 2019 22:50:52 +0100 Subject: [PATCH] First commit --- docs/files/code/do_syscall.S | 6 +++ docs/files/osrecover.sh4 | Bin 0 -> 10240 bytes docs/index.md | 31 ++++++++++++ docs/osrecover.md | 9 ++++ docs/syscalls/example/getproductid_example.c | 0 docs/syscalls/system_info.md | 20 ++++++++ docs/syscalls_fx9860g.md | 22 ++++++++ macros_def.py | 50 +++++++++++++++++++ mkdocs.yml | 22 ++++++++ 9 files changed, 160 insertions(+) create mode 100644 docs/files/code/do_syscall.S create mode 100644 docs/files/osrecover.sh4 create mode 100644 docs/index.md create mode 100644 docs/osrecover.md create mode 100644 docs/syscalls/example/getproductid_example.c create mode 100644 docs/syscalls/system_info.md create mode 100644 docs/syscalls_fx9860g.md create mode 100644 macros_def.py create mode 100644 mkdocs.yml diff --git a/docs/files/code/do_syscall.S b/docs/files/code/do_syscall.S new file mode 100644 index 0000000..571de3f --- /dev/null +++ b/docs/files/code/do_syscall.S @@ -0,0 +1,6 @@ + mov.l syscall_number, r0 # Store the syscall ID in r0 + mov.l do_syscall, r2 # Set r2 to the syscall function + jmp @r2 # jump to r2 (syscall) + nop # delayed jump so do nothing +.align 4 # do_syscall is already aligned but I prefered +do_syscall: .long 0x80010070 \ No newline at end of file diff --git a/docs/files/osrecover.sh4 b/docs/files/osrecover.sh4 new file mode 100644 index 0000000000000000000000000000000000000000..f9e16a2294a92b4c78fcb3036b789f7d3bdfb97f GIT binary patch literal 10240 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 KahBWg;{N~{IJ|QJ literal 0 HcmV?d00001 diff --git a/docs/index.md b/docs/index.md new file mode 100644 index 0000000..73953cc --- /dev/null +++ b/docs/index.md @@ -0,0 +1,31 @@ +# Index + +`main.c :` +```c +int main(void) +{ + printf("Hello welcome to Lailouezzz CASIO documentation ! :)"); + return; +} +``` + +##################################### + +`gcc main.cpp -o welcome` + +`./welcome` + +------------------------------------- + +## Hello welcome to Lailouezzz CASIO documentation ! :) + +- [All files (ressources)](files/) +- (Section being written) : [OSRECOVER Protocol](osrecover.md) +- (Section being written) : [Syscalls (FX-9860g)](syscalls_fx9860g.md) + +------------------------------------- + +### Download document as pdf + +- Download link here. + diff --git a/docs/osrecover.md b/docs/osrecover.md new file mode 100644 index 0000000..4b9fed4 --- /dev/null +++ b/docs/osrecover.md @@ -0,0 +1,9 @@ +# OSRECOVER.sh4 ([simlo](/simlo/)) Documentation + +In this section I describe the best that I can the osrecover.sh4 protocol. + +------------------------------------- + +## Downloads + +You can download osrecover.sh4 {{downloadlink("here", "files/osrecover.sh4")}}. \ No newline at end of file diff --git a/docs/syscalls/example/getproductid_example.c b/docs/syscalls/example/getproductid_example.c new file mode 100644 index 0000000..e69de29 diff --git a/docs/syscalls/system_info.md b/docs/syscalls/system_info.md new file mode 100644 index 0000000..155e4ff --- /dev/null +++ b/docs/syscalls/system_info.md @@ -0,0 +1,20 @@ +# System info syscalls + +Description explaination of some system info syscalls. + +## Syscall 0x0178‬ : char * GetProductID() + +### Return + +return the product ID serie (pointer to a string of 8 `char` ended by `0xFF`) + +0 if the product ID is not found. + +### Example + +TODO + +---------- + +## Syscall 0x02ED : void GetProtocolVersion(char * out_str) + diff --git a/docs/syscalls_fx9860g.md b/docs/syscalls_fx9860g.md new file mode 100644 index 0000000..fb5ef64 --- /dev/null +++ b/docs/syscalls_fx9860g.md @@ -0,0 +1,22 @@ +# Some FX-9860g syscalls + +## How to call a syscall ? + +The calling convention to access the system calls (syscall), is to +jump to 0x80010070 with the syscall number in r0 : + +{{includecode("files/code/do_syscall.S", "asm")}} + +------------------------------------------------- + +## Syscalls table + +| Name | | | | ID | +| :------------------------------------------------------------------------------------------- | --- | --- | --- | ------ | +| [char * GetProductID()](syscalls/system_info.md) | | | | 0x0178 | +| [void GetProtocolVersion(char * out_str)](syscalls/system_info.md) | | | | 0x02ED | +| [void System_GetOSVersion(char * version) (simlo)](../../simlo/chm/v20/fx_legacy_System.HTM) | | | | 0x02EE | +| [void GetSystemInfo(char * out_str)](syscalls/system_info.md) | | | | 0x02EF | +| [void GetEnvironmentID(char * out_str)](syscalls/system_info.md) | | | | 0x02F5 | +| [void GetCpuID(char * out_str)](syscalls/system_info.md) | | | | 0x02F6 | +| void PrintFull(ID1, ID2, ID3) | | | | 0x0A51 | \ No newline at end of file diff --git a/macros_def.py b/macros_def.py new file mode 100644 index 0000000..ece07be --- /dev/null +++ b/macros_def.py @@ -0,0 +1,50 @@ +import html +import os + + +def declare_variables(variables, macro): + @macro + def includecode(fn: str, flavor: str = ""): + """ + Load code from a file and save as a preformatted code block. + If a flavor is specified, it's passed in as a hint for syntax highlighters. + + Example usage in markdown: + + {{includecode("code/myfile.py", "python")}} + + """ + docs_dir = variables.get("docs_dir", "docs") + fn = os.path.abspath(os.path.join(docs_dir, fn)) + if not os.path.exists(fn): + return f"""File not found: {fn}""" + with open(fn, "r") as f: + return ( + f"""```{flavor}\n{f.read()}\n```""" + ) + + @macro + def includemd(fn: str): + """ + Load markdown from files external to the mkdocs root path. + Example usage in markdown: + + {{includemd("../../README.md")}} + + """ + docs_dir = variables.get("docs_dir", "docs") + fn = os.path.abspath(os.path.join(docs_dir, fn)) + if not os.path.exists(fn): + return f"""File not found: {fn}""" + with open(fn, "r") as f: + return f.read() + + @macro + def downloadlink(contain: str, url: str): + """ + Create a download link example : + + {{downloadlink("Download readme", "../../README.md")}} + + """ + return f"""{contain}""" \ No newline at end of file diff --git a/mkdocs.yml b/mkdocs.yml new file mode 100644 index 0000000..a626110 --- /dev/null +++ b/mkdocs.yml @@ -0,0 +1,22 @@ +site_name: Lailouezzz CASIO documentation +nav: + - Index: index.md + - OSRECOVER Protocol: osrecover.md + - Syscalls (FX-9860g): + - syscalls_fx9860g.md + - syscalls/system_info.md + +theme: + name: 'material' +markdown_extensions: + - codehilite + + +plugins: + - search + - pdf-export: + media_type: print + combined: true + combined_output_path: files/doc.pdf + - macros: + module_name: macros_def