From ea44c1ffa106f1c876552b4889693f1a794d9422 Mon Sep 17 00:00:00 2001 From: Lephenixnoir Date: Fri, 28 Feb 2020 16:50:08 +0100 Subject: [PATCH] base-library: add minimal library example Because referencing the bible is not the best idea. It would be best to not duplicate stuff around, so: * The base-library is a minimal, never-evolving set of files * The community documentation is in the fxdoc repository * The OS files are on the bible's common/ folder (cleaning needed) --- README.md | 22 +- base-library/asmtables/sh3.txt | 225 +++++++++++++ base-library/asmtables/sh4.txt | 26 ++ base-library/config | 4 + base-library/symbols/regs-sh7305.txt | 118 +++++++ base-library/symbols/regs-simlo.txt | 145 +++++++++ base-library/symbols/syscalls-fx.txt | 454 +++++++++++++++++++++++++++ base-library/targets/fx@3.10.txt | 11 + 8 files changed, 994 insertions(+), 11 deletions(-) create mode 100644 base-library/asmtables/sh3.txt create mode 100644 base-library/asmtables/sh4.txt create mode 100644 base-library/config create mode 100644 base-library/symbols/regs-sh7305.txt create mode 100644 base-library/symbols/regs-simlo.txt create mode 100644 base-library/symbols/syscalls-fx.txt create mode 100644 base-library/targets/fx@3.10.txt diff --git a/README.md b/README.md index 10c3b7c..aa0c32d 100644 --- a/README.md +++ b/README.md @@ -42,10 +42,10 @@ public for the most part, but some of the reverse-engineering results of the community are kept private. A set of base files for a working library can be found in the -[`base-library` folder](base-library) of this repository, -which includes a suitable configuration file. Though unless you want to redo -the research by yourself, you can get shared community data from the -[fxdoc repository](/Lephenixnoir/fxdoc). +[`base-library` folder](base-library) of this repository, which includes a +suitable configuration file (but not the actual OS files because Git would not +appreciate it). But unless you want to redo the research by yourself, I suggest +using shared community data from the [fxdoc repository](/Lephenixnoir/fxdoc). Next, fxos should be told where to find these files. A small configuration file should be added at `$HOME/.config/fxos/config` to do this. The configuration @@ -57,16 +57,16 @@ file specifies two types of information: With the default library, the configuration file should look like this: ``` -library: /path/to/fxos-library -load: /path/to/fxos-library/asmtables -load: /path/to/fxos-library/targets -load: /path/to/fxos-library/symbols +library: /path/to/base-library +load: /path/to/base-library/asmtables +load: /path/to/base-library/targets +load: /path/to/base-library/symbols ``` This means that fxos data files will be automatically loaded at startup from the `asmtables`, `targets` and `symbols` directories. Targets refer to OS files and RAM dumps by path, and these paths will be interpreted relatively to the -`fxos-library` folder. If you create `$PREFIX/share/fxos`, it will also be used +`base-library` folder. If you create `$PREFIX/share/fxos`, it will also be used as if mentioned on a `library:` line. ## Working with fxos data files @@ -117,8 +117,8 @@ The header of a target must contain: The body of target consists of a list of *bindings*, which are mappings of files into areas of the virtual memory. The syntax to specify a binding is `: `, where: -* The region can be a named region such as `ROM` or `RAM_P2`. The name and - definitions of the available memory regions can be found in +* The region can be a named region such as `ROM` or `RAM_P2`. The names and + definitions of defined memory regions can be found in [`lib/memory.cpp`](lib/memory.cpp). * The region can be `
()`, where both address and size are specified in hexadecimal without prefix. For example, `fd800000(800)` is diff --git a/base-library/asmtables/sh3.txt b/base-library/asmtables/sh3.txt new file mode 100644 index 0000000..228c578 --- /dev/null +++ b/base-library/asmtables/sh3.txt @@ -0,0 +1,225 @@ +type: assembly +name: sh-3 +--- + +# Format: [01nmdi]{16}, followed by the mnemonic and the list of arguments. +# In each opcode, there should be at most one sequence of "m", "n", "d" and "i" +# each (representing the location of the argument). +# +# Possible argument strings are predefined and include: +# rn rm #imm +# jump8 jump12 disp pcdisp +# @rn @rm @rn+ @rm+ @-rn +# @(disp,rn) @(disp,rm) @(r0,rn) @(r0,rm) @(disp,gbr) +# +# The disassembler substitutes some elements as follows: +# rn -> value of the "n"-sequence +# rm -> value of the "m"-sequence +# #imm -> value of the "i"-sequence +# disp -> value of the "d"-sequence +# jump8 -> value of the 8-bit "d"-sequence x2 plus value of PC +# jump12 -> value of the 12-bit "d"-sequence x2 plus value of PC +# @(disp,pc) -> value of the 8-bit "d"-sequence x2 or x4, plus value of PC +# TODO: This list does not exactly reflect the behavior of the parser + +0000000001001000 clrs +0000000000001000 clrt +0000000000101000 clrmac +0000000000011001 div0u +0000000000111000 ldtlb +0000000000001001 nop +0000000000101011 rte +0000000000001011 rts +0000000001011000 sets +0000000000011000 sett +0000000000011011 sleep + +0100nnnn00010101 cmp/pl rn +0100nnnn00010001 cmp/pz rn +0100nnnn00010000 dt rn +0000nnnn00101001 movt rn +0100nnnn00000100 rotl rn +0100nnnn00000101 rotr rn +0100nnnn00100100 rotcl rn +0100nnnn00100101 rotcr rn +0100nnnn00100000 shal rn +0100nnnn00100001 shar rn +0100nnnn00000000 shll rn +0100nnnn00000001 shlr rn +0100nnnn00001000 shll2 rn +0100nnnn00001001 shlr2 rn +0100nnnn00011000 shll8 rn +0100nnnn00011001 shlr8 rn +0100nnnn00101000 shll16 rn +0100nnnn00101001 shlr16 rn + +0011nnnnmmmm1100 add rm, rn +0011nnnnmmmm1110 addc rm, rn +0011nnnnmmmm1111 addv rm, rn +0010nnnnmmmm1001 and rm, rn +0011nnnnmmmm0000 cmp/eq rm, rn +0011nnnnmmmm0010 cmp/hs rm, rn +0011nnnnmmmm0011 cmp/ge rm, rn +0011nnnnmmmm0110 cmp/hi rm, rn +0011nnnnmmmm0111 cmp/gt rm, rn +0010nnnnmmmm1100 cmp/str rm, rn +0011nnnnmmmm0100 div1 rm, rn +0010nnnnmmmm0111 div0s rm, rn +0011nnnnmmmm1101 dmuls.l rm, rn +0011nnnnmmmm0101 dmulu.l rm, rn +0110nnnnmmmm1110 exts.b rm, rn +0110nnnnmmmm1111 exts.w rm, rn +0110nnnnmmmm1100 extu.b rm, rn +0110nnnnmmmm1101 extu.w rm, rn +0110nnnnmmmm0011 mov rm, rn +0000nnnnmmmm0111 mul.l rm, rn +0010nnnnmmmm1111 muls.w rm, rn +0010nnnnmmmm1110 mulu.w rm, rn +0110nnnnmmmm1011 neg rm, rn +0110nnnnmmmm1010 negc rm, rn +0110nnnnmmmm0111 not rm, rn +0010nnnnmmmm1011 or rm, rn +0100nnnnmmmm1100 shad rm, rn +0100nnnnmmmm1101 shld rm, rn +0011nnnnmmmm1000 sub rm, rn +0011nnnnmmmm1010 subc rm, rn +0011nnnnmmmm1011 subv rm, rn +0110nnnnmmmm1000 swap.b rm, rn +0110nnnnmmmm1001 swap.w rm, rn +0010nnnnmmmm1000 tst rm, rn +0010nnnnmmmm1010 xor rm, rn +0010nnnnmmmm1101 xtrct rm, rn + +0100mmmm00001110 ldc rm, sr +0100mmmm00011110 ldc rm, gbr +0100mmmm00101110 ldc rm, vbr +0100mmmm00111110 ldc rm, ssr +0100mmmm01001110 ldc rm, spc +0100mmmm10001110 ldc rm, r0_bank +0100mmmm10011110 ldc rm, r1_bank +0100mmmm10101110 ldc rm, r2_bank +0100mmmm10111110 ldc rm, r3_bank +0100mmmm11001110 ldc rm, r4_bank +0100mmmm11011110 ldc rm, r5_bank +0100mmmm11101110 ldc rm, r6_bank +0100mmmm11111110 ldc rm, r7_bank +0100mmmm00001010 lds rm, mach +0100mmmm00011010 lds rm, macl +0100mmmm00101010 lds rm, pr +0000nnnn00000010 stc sr, rn +0000nnnn00010010 stc gbr, rn +0000nnnn00100010 stc vbr, rn +0000nnnn00110010 stc ssr, rn +0000nnnn01000010 stc spc, rn +0000nnnn10000010 stc r0_bank, rn +0000nnnn10010010 stc r1_bank, rn +0000nnnn10100010 stc r2_bank, rn +0000nnnn10110010 stc r3_bank, rn +0000nnnn11000010 stc r4_bank, rn +0000nnnn11010010 stc r5_bank, rn +0000nnnn11100010 stc r6_bank, rn +0000nnnn11110010 stc r7_bank, rn +0000nnnn00001010 sts mach, rn +0000nnnn00011010 sts macl, rn +0000nnnn00101010 sts pr, rn + +0100nnnn00101011 jmp @rn +0100nnnn00001011 jsr @rn +0000nnnn10000011 pref @rn +0100nnnn00011011 tas.b @rn +0010nnnnmmmm0000 mov.b rm, @rn +0010nnnnmmmm0001 mov.w rm, @rn +0010nnnnmmmm0010 mov.l rm, @rn +0110nnnnmmmm0000 mov.b @rm, rn +0110nnnnmmmm0001 mov.w @rm, rn +0110nnnnmmmm0010 mov.l @rm, rn +0000nnnnmmmm1111 mac.l @rm+, @rn+ +0100nnnnmmmm1111 mac.w @rm+, @rn+ + +0110nnnnmmmm0100 mov.b @rm+, rn +0110nnnnmmmm0101 mov.w @rm+, rn +0110nnnnmmmm0110 mov.l @rm+, rn + +0100mmmm00000111 ldc.l @rm+, sr +0100mmmm00010111 ldc.l @rm+, gbr +0100mmmm00100111 ldc.l @rm+, vbr +0100mmmm00110111 ldc.l @rm+, ssr +0100mmmm01000111 ldc.l @rm+, spc +0100mmmm10000111 ldc.l @rm+, r0_bank +0100mmmm10010111 ldc.l @rm+, r1_bank +0100mmmm10100111 ldc.l @rm+, r2_bank +0100mmmm10110111 ldc.l @rm+, r3_bank +0100mmmm11000111 ldc.l @rm+, r4_bank +0100mmmm11010111 ldc.l @rm+, r5_bank +0100mmmm11100111 ldc.l @rm+, r6_bank +0100mmmm11110111 ldc.l @rm+, r7_bank +0100mmmm00000110 lds.l @rm+, mach +0100mmmm00010110 lds.l @rm+, macl +0100mmmm00100110 lds.l @rm+, pr + +0010nnnnmmmm0100 mov.b rm, @-rn +0010nnnnmmmm0101 mov.w rm, @-rn +0010nnnnmmmm0110 mov.l rm, @-rn + +0100nnnn00000011 stc.l sr, @-rn +0100nnnn00010011 stc.l gbr, @-rn +0100nnnn00100011 stc.l vbr, @-rn +0100nnnn00110011 stc.l ssr, @-rn +0100nnnn01000011 stc.l spc, @-rn +0100nnnn10000011 stc.l r0_bank, @-rn +0100nnnn10010011 stc.l r1_bank, @-rn +0100nnnn10100011 stc.l r2_bank, @-rn +0100nnnn10110011 stc.l r3_bank, @-rn +0100nnnn11000011 stc.l r4_bank, @-rn +0100nnnn11010011 stc.l r5_bank, @-rn +0100nnnn11100011 stc.l r6_bank, @-rn +0100nnnn11110011 stc.l r7_bank, @-rn +0100nnnn00000010 sts.l mach, @-rn +0100nnnn00010010 sts.l macl, @-rn +0100nnnn00100010 sts.l pr, @-rn + +10000000nnnndddd mov.b r0, @(disp,rn) +10000001nnnndddd mov.w r0, @(disp,rn) +0001nnnnmmmmdddd mov.l rm, @(disp,rn) +10000100mmmmdddd mov.b @(disp,rm), r0 +10000101mmmmdddd mov.w @(disp,rm), r0 +0101nnnnmmmmdddd mov.l @(disp,rm), rn +0000nnnnmmmm0100 mov.b rm, @(r0,rn) +0000nnnnmmmm0101 mov.w rm, @(r0,rn) +0000nnnnmmmm0110 mov.l rm, @(r0,rn) +0000nnnnmmmm1100 mov.b @(r0,rm), rn +0000nnnnmmmm1101 mov.w @(r0,rm), rn +0000nnnnmmmm1110 mov.l @(r0,rm), rn +11000000dddddddd mov.b r0, @(disp,gbr) +11000001dddddddd mov.w r0, @(disp,gbr) +11000010dddddddd mov.l r0, @(disp,gbr) +11000100dddddddd mov.b @(disp,gbr), r0 +11000101dddddddd mov.w @(disp,gbr), r0 +11000110dddddddd mov.l @(disp,gbr), r0 + +11001101iiiiiiii and.b #imm, @(r0,gbr) +11001111iiiiiiii or.b #imm, @(r0,gbr) +11001100iiiiiiii tst.b #imm, @(r0,gbr) +11001110iiiiiiii xor.b #imm, @(r0,gbr) + +1001nnnndddddddd mov.w @(disp,pc), rn +1101nnnndddddddd mov.l @(disp,pc), rn +11000111dddddddd mova.l @(disp,pc), r0 + +0000mmmm00100011 braf rm +0000mmmm00000011 bsrf rm +10001011dddddddd bf jump8 +10001111dddddddd bf.s jump8 +10001001dddddddd bt jump8 +10001101dddddddd bt.s jump8 +1010dddddddddddd bra jump12 +1011dddddddddddd bsr jump12 + +0111nnnniiiiiiii add #imm, rn +11001001iiiiiiii and #imm, r0 +10001000iiiiiiii cmp/eq #imm, r0 +1110nnnniiiiiiii mov #imm, rn +11001011iiiiiiii or #imm, r0 +11001000iiiiiiii tst #imm, r0 +11001010iiiiiiii xor #imm, r0 +11000011iiiiiiii trapa #imm diff --git a/base-library/asmtables/sh4.txt b/base-library/asmtables/sh4.txt new file mode 100644 index 0000000..09f076a --- /dev/null +++ b/base-library/asmtables/sh4.txt @@ -0,0 +1,26 @@ +type: assembly +name: sh-4a-extensions +--- + +0000nnnn01110011 movco.l r0, @rn +0000mmmm01100011 movli.l @rm, r0 +0100mmmm10101001 movua.l @rm, r0 +0100mmmm11101001 movua.l @rm+, r0 +0000nnnn11000011 movca.l r0, @rn + +0000nnnn11100011 icbi @rn +0000nnnn10010011 ocbi @rn +0000nnnn10100011 ocbp @rn +0000nnnn10110011 ocbwb @rn + +0000nnnn11010011 prefi @rn +0000000010101011 synco + +0100mmmm00111010 ldc rm, sgr +0100mmmm11111010 ldc rm, dbr +0100mmmm00110110 ldc.l @rm+, sgr +0100mmmm11110110 ldc.l @rm+, dbr +0000nnnn00111010 stc sgr, rn +0000nnnn11111010 stc dbr, rn +0100nnnn00110010 stc.l sgr, @-rn +0100nnnn11110010 stc.l dbr, @-rn diff --git a/base-library/config b/base-library/config new file mode 100644 index 0000000..96c65ac --- /dev/null +++ b/base-library/config @@ -0,0 +1,4 @@ +library: /path/to/base-library +load: /path/to/base-library/asmtables +load: /path/to/base-library/targets +load: /path/to/base-library/symbols diff --git a/base-library/symbols/regs-sh7305.txt b/base-library/symbols/regs-sh7305.txt new file mode 100644 index 0000000..7068838 --- /dev/null +++ b/base-library/symbols/regs-sh7305.txt @@ -0,0 +1,118 @@ +type: symbols +name: regs-sh7305 +--- + +# T6K11 interface +b4000000 T6K11.REG +b4010000 T6K11.DATA + +# Exception handling +ff000020 TRA +ff000024 EXPEVT +ff000028 INTEVT +ff2f0004 EXPMASK + +# Memory Management Unit +ff000000 MMU.PTEH +ff000004 MMU.PTEL +ff00000c MMU.TEA +ff000010 MMU.MMUCR +ff000034 MMU.PTEA +ff000070 MMU.PASCR +ff000078 MMU.IRMCR + +# Interrupt controller +a4140000 INTC.ICR0 +a414001c INTC.ICR1 +a4140010 INTC.INTPRI00 +a4140024 INTC.INTREQ00 +a4140044 INTC.INTMSK00 +a4140064 INTC.INTMSKCLR00 +a41400c0 INTC.NMIFCR +a4700000 INTC.USERIMSK +a4080000 INTC.IPRA +a4080004 INTC.IPRB +a4080008 INTC.IPRC +a408000c INTC.IPRD +a4080010 INTC.IPRE +a4080014 INTC.IPRF +a4080018 INTC.IPRG +a408001c INTC.IPRH +a4080020 INTC.IPRI +a4080024 INTC.IPRJ +a4080028 INTC.IPRK +a408002c INTC.IPRL +a4080080 INTC.IMR0 +a4080084 INTC.IMR1 +a4080088 INTC.IMR2 +a408008c INTC.IMR3 +a4080090 INTC.IMR4 +a4080094 INTC.IMR5 +a4080098 INTC.IMR6 +a408009c INTC.IMR7 +a40800a0 INTC.IMR8 +a40800a4 INTC.IMR9 +a40800a8 INTC.IMR10 +a40800ac INTC.IMR11 +a40800b0 INTC.IMR12 +a40800c0 INTC.IMCR0 +a40800c4 INTC.IMCR1 +a40800c8 INTC.IMCR2 +a40800cc INTC.IMCR3 +a40800d0 INTC.IMCR4 +a40800d4 INTC.IMCR5 +a40800d8 INTC.IMCR6 +a40800dc INTC.IMCR7 +a40800e0 INTC.IMCR8 +a40800e4 INTC.IMCR9 +a40800e8 INTC.IMCR10 +a40800ec INTC.IMCR11 +a40800f0 INTC.IMCR12 + +# Direct Memory Access Controller: TODO + +# Reset and power-down modes +a4150020 POWER.STBCR +a4150030 POWER.MSTPCR0 +a4150034 POWER.MSTPCR1 +a4150038 POWER.MSTPCR2 +a4150040 POWER.BAR + +# Real-Time Clock +a413fec0 RTC.R64CNT +a413fec2 RTC.RSECCNT +a413fec4 RTC.RMINCNT +a413fec6 RTC.RHRCNT +a413fec8 RTC.RWKCNT +a413feca RTC.RDAYCNT +a413fecc RTC.RMONCNT +a413fece RTC.RYRCNT +a413fed0 RTC.RSECAR +a413fed2 RTC.RMINAR +a413fed4 RTC.RHRAR +a413fed6 RTC.RWKAR +a413fed8 RTC.RDAYAR +a413feda RTC.RMONAR +a413fedc RTC.RCR1 +a413fede RTC.RCR2 +a413fee0 RTC.RYRAR +a413fee4 RTC.RCR3 + +# User Break Controller +ff200000 UBC.CBR0 +ff200004 UBC.CRR0 +ff200008 UBC.CAR0 +ff20000c UBC.CAMR0 +ff200020 UBC.CBR1 +ff200024 UBC.CRR1 +ff200028 UBC.CAR1 +ff20002c UBC.CAMR1 +ff200030 UBC.CDR1 +ff200034 UBC.CDMR1 +ff200038 UBC.CETR1 +ff200600 UBC.CCMFR +ff200620 UBC.CBCR + +# RCLK Watchdog Timer +a4520000 RWDT.RWTCNT +A4520004 RWDT.RWTCSR diff --git a/base-library/symbols/regs-simlo.txt b/base-library/symbols/regs-simlo.txt new file mode 100644 index 0000000..b4074f4 --- /dev/null +++ b/base-library/symbols/regs-simlo.txt @@ -0,0 +1,145 @@ +type: symbols +name: regs-simlo +--- + +# Processor version +ff2f0000 CPUOPM +ff000030 PVR +ff000040 CVR +ff000044 PRR + +# Key Scan Interface +a44b0000 KEYSC.DATA +a44b000c KEYSC.UCNTREG +a44b000e KEYSC.AUTOFIXREG +a44b0010 KEYSC.UMODEREG +a44b0012 KEYSC.USTATEREG +a44b0014 KEYSC.UINTREG +a44b0016 KEYSC.UWSETREG +a44b0018 KEYSC.UINTERVALREG +a44b001a KEYSC.OUTPINSET +a44b001c KEYSC.INPINSET + +# Timer Unit +a4490004 TMU.TSTR +a4490008 TMU0.TCOR +a449000c TMU0.TCNT +a4490010 TMU0.TCR +a4490014 TMU1.TCOR +a4490018 TMU1.TCNT +a449001c TMU1.TCR +a4490020 TMU2.TCOR +a4490024 TMU2.TCNT +a4490028 TMU2.TCR + +# Serial Communication Interface +a4410000 SCIF.SCSMR +a4410004 SCIF.SCBRR +a4410008 SCIF.SCSCR +a441000c SCIF.SCFTDR +a4410010 SCIF.SCFSR +a4410014 SCIF.SCFRDR +a4410018 SCIF.SCFCR +a441001c SCIF.SCFDR +a4410024 SCIF.SCLSR + +# Pin Function Controller +a4050100 PFC.PACR +a4050102 PFC.PBCR +a4050104 PFC.PCCR +a4050106 PFC.PDCR +a4050108 PFC.PECR +a405010a PFC.PFCR +a405010c PFC.PGCR +a405010e PFC.PHCR +a4050110 PFC.PJCR +a4050112 PFC.PKCR +a4050114 PFC.PLCR +a4050116 PFC.PMCR +a4050118 PFC.PNCR +a405014c PFC.PPCR +a405011a PFC.PQCR +a405011c PFC.PRCR +a405011e PFC.PSCR +a4050140 PFC.PTCR +a4050142 PFC.PUCR +a4050144 PFC.PVCR +a405014e PFC.PSELA +a4050150 PFC.PSELB +a4050152 PFC.PSELC +a4050154 PFC.PSELD +a4050156 PFC.PSELE +a405015e PFC.PSELF +a40501c8 PFC.PSELG +a40501d6 PFC.PSELH +a4050158 PFC.HIZCRA +a405015a PFC.HIZCRB +a405015c PFC.HIZCRC +a4050180 PFC.MSELCRA +a4050182 PFC.MSELCRB +a4050184 PFC.DRVCRD +a4050186 PFC.DRVCRA +a4050188 PFC.DRVCRB +a405018a PFC.DRVCRC +a40501c3 PFC.PULCRBSC +a40501c5 PFC.PULCRTRST +a4050190 PFC.PULCRA +a4050191 PFC.PULCRB +a4050192 PFC.PULCRC +a4050193 PFC.PULCRD +a4050194 PFC.PULCRE +a4050195 PFC.PULCRF +a4050196 PFC.PULCRG +a4050197 PFC.PULCRH +a4050198 PFC.PULCRJ +a4050199 PFC.PULCRK +a405019a PFC.PULCRL +a405019b PFC.PULCRM +a405019c PFC.PULCRN +a40501c6 PFC.PULCRP +a405019d PFC.PULCRQ +a405019e PFC.PULCRR +a405019f PFC.PULCRS +a40501c0 PFC.PULCRT +a40501c1 PFC.PULCRU +a40501c2 PFC.PULCRV + +# Bus State Controller +fec10000 BSC.CMNCR +fec10004 BSC.CS0BCR +fec10008 BSC.CS2BCR +fec1000c BSC.CS3BCR +fec10010 BSC.CS4BCR +fec10014 BSC.CS5ABCR +fec10018 BSC.CS5BBCR +fec1001c BSC.CS6ABCR +fec10020 BSC.CS6BBCR +fec10024 BSC.CS0WCR +fec10028 BSC.CS2WCR +fec1002c BSC.CS3WCR +fec10030 BSC.CS4WCR +fec10034 BSC.CS5AWCR +fec10038 BSC.CS5BWCR +fec1003c BSC.CS6AWCR +fec10040 BSC.CS6BWCR +fec10044 BSC.SDCR +fec10048 BSC.RTCSR +fec1004c BSC.RTCNT +fec10050 BSC.RTCOR +fec14000 BSC.SDMR2 +fec15000 BSC.SDMR3 + +# Clock Pulse Generator +a4150000 CPG.FRQCR +a4150008 CPG.FCLKCR +a4150010 CPG.DDCLKCR +a4150014 CPG.USBCLKCR +a4150024 CPG.PLLCR +a4150028 CPG.PLL2CR +a415003c CPG.SPUCLKCR +a4150044 CPG.SSCGCR +a4150050 CPG.FLLFRQ +a4150060 CPG.LSTATS + +# More addresses are around on Casiopeia. +# See http://www.casiopeia.net/forum/viewtopic.php?f=11&t=1756#p14588. diff --git a/base-library/symbols/syscalls-fx.txt b/base-library/symbols/syscalls-fx.txt new file mode 100644 index 0000000..a5fe999 --- /dev/null +++ b/base-library/symbols/syscalls-fx.txt @@ -0,0 +1,454 @@ +type: symbols +name: syscalls-simlo +--- + +%001 vbr_tlb_error +%002 vbr_cpu_address +%003 vbr_tlb_exception +%005 App_RegisterAddins +%009 App_FindFreeAddinSlot +%00a App_GetAddinHeaderAddr +%00e App_GetAddindEstrip +%013 GlibAddinAplExecutionCheck +%014 GlibGetAddinLibInfo +%015 GlibGetOSVersionInfo +%018 MMU_FlushCache +%01b DD_Clear +%01c Bdisp_WriteGraph_VRAM +%01d Bdisp_WriteGraph_DD +%01e Bdisp_WriteGraph_DDVRAM +%022 Bdisp_ReadArea_VRAM +%023 Bdisp_ReadArea_DD +%024 Bdisp_GetDisp_DD +%025 DD_Read +%026 DD_ReadFromPage +%027 DD_WriteToPage +%028 Bdisp_PutDisp_DD +%02a Bdisp_DrawShapeToVRAM +%02f Bdisp_DrawShapeToVRAM +%030 Bdisp_DrawLineVRAM +%031 Bdisp_ClearLineVRAM +%032 Bdisp_DrawShapeToDD +%033 Bdisp_DrawShapeToVRAM_DD +%034 Bdisp_DrawShapeToDD +%035 Bdisp_DrawShapeToVRAM_DD +%039 RTC_Reset +%03a RTC_GetTime +%03b RTC_GetTicks +%03c RTC_Elapsed_ms +%05c Num_UIntToBCD +%05d Num_BCDToUInt + +%118 Timer_Install +%119 Timer_Deinstall +%11a Timer_Start +%11b Timer_Stop +%11f Bdisp_PutDispArea_DD +%12d DD_Poweroff +%130 Wait_ms +%132 DD_SetContrast +%133 DD_SetFRS +%134 DD_SetBias +%135 GetVRAMAddress +%136 GetCharacterGlyph +%137 GetCharacterMiniGlyph +%138 Cursor_SetPosition +%139 Cursor_SetFlashStyle +%13a Cursor_SetFlashMode +%13b Cursor_GetSettings +%13c Print_OS +%142 Bdisp_AllClr_DD +%143 Bdisp_AllClr_VRAM +%144 Bdisp_AllClr_DDVRAM +%145 Bdisp_GetDisp_VRAM +%146 Bdisp_SetPoint_VRAM +%147 Bdisp_SetPoint_DD +%148 Bdisp_SetPoint_DDVRAM +%149 Bdisp_GetPoint_VRAM +%14a Bdisp_AreaClr_DD +%14b Bdisp_AreaClr_VRAM +%14c Bdisp_AreaClr_DDVRAM +%14d Bdisp_AreaReverseVRAM +%150 PrintXY +%153 Disp_Save +%154 Disp_Restore +%155 Disp_GetPtr +%156 PopUpWin +%158 Disp_Manage +%159 System_UpdateOS +%15d PrintCR +%15f atoi +%160 LongToAsc +%161 LongToAscHex +%162 pc_toupper +%163 pc_tolower +%172 strcmp +%173 strcmp +%175 some_datatable +%176 DiagnosticMode +%18a InvertMem +%19f SMEM_Optimization +%1a9 GUI_ProgressBar +%1b7 Get8x8BitmapPointer_1 +%1b8 Get8x8BitmapPointer_2 +%1b9 Get8x8BitmapPointer_3 +%1ba Get8x8BitmapPointer_4 +%1bb Get8x8BitmapPointer_5 +%1bc Get8x8BitmapPointer_6 +%1bd Get8x8BitmapPointer_7 + +%20e StorageMemory_GetFilePos +%236 RebootOS +%23d RTC_TriggerAlarm +%23e RTC_SetDateTime +%241 Keyboard_ClrBuffer +%242 Bkey_Set_RepeatTime +%243 Bkey_Get_RepeatTime +%244 Bkey_Set_RepeatTime_Default +%245 Keyboard_EnableAutoRepeat +%246 Keyboard_DisableAutoRepeat +%247 Keyboard_GetKeyWait +%248 Keyboard_PutKeycode +%249 Keyboard_GetKeyDownTime +%24a Keyboard_IsAnyKeyDown +%24b Keyboard_IsSpecialKeyDown +%24c Keyboard_IsSpecialKeyDown +%24d Keyboard_KeyDown +%24e Keyboard_SecondaryInterruptHandler +%24f Keyboard_PutKeymatrixCode +%251 Keyboard_TimerHandler +%25e Keyboard_PrimaryInterruptHandler +%268 GetFKeyIconPointer +%284 BCD_GetNaN +%285 Serial_Open_57600 +%286 BCD_AnsToSerial +%28d Comm_Open +%28e Comm_Close +%28f Comm_WaitForAnyBuffer +%290 Comm_ReadOneByte +%291 Comm_TransmitOneByte +%292 Comm_WaitForAndReadNBytes +%293 Comm_TransmitNBytes +%294 Comm_ClearReceiveBuffer +%295 Comm_ClearTransmitBuffer +%296 Comm_IsValidPacketAvailable +%298 Comm_IsOpen +%299 Comm_GetCurrentSelector +%2a1 HexToByte +%2a2 HexToWord +%2a3 ByteToHex +%2a4 WordToHex +%2a5 Comm_Padding_5C +%2a6 Comm_ReversePadding_5C +%2a7 AscHexToNibble +%2a8 NibbleToAscHex +%2a9 strlen +%2aa slow_memcpy +%2ab Serial_Open2 +%2af Comm_Spy0thByte +%2db Comm_ProcessInPacket +%2e1 Comm_PrepareAckPacket +%2e2 Comm_PrepareErrorPacket +%2e3 Comm_PrepareTerminatePacket +%2e4 Comm_PrepareRoleswapPacket +%2e5 Comm_PrepareCheckPacket +%2e6 Comm_PrepareCommandPacket +%2e7 Comm_PrepareDataPacket +%2ee System_GetOSVersion + +%35e memset_range +%35f memset +%363 MCS_CreateDirectory +%364 MCS_WriteItem +%366 MCS_DeleteDirectory +%367 MCS_DeleteItem +%368 MCS_GetState +%369 MCS_GetSystemDirectoryInfo +%370 MCS_RenameItem +%371 MCS_OverwriteData +%372 MCS_GetItemData +%373 MCS_RenameDirectory +%374 BMCSRenameVariable +%375 MCS_SearchDirectory +%376 MCS_SearchDirectoryItem +%37c MCS_GetFirstDataPointerByDirno +%37d MCS_GetDirectoryEntryByNumber +%37e MCS_SearchItem +%37f MCS_str8cpy +%380 MCS_GetDirectoryEntryAddress +%381 MCS_GetCurrentBottomAddress +%383 MCS_GetCapa +%392 MCS_GetMainMemoryStart +%3dc Setup_GetInfo +%3ea SYSCALL_3ea_DATATABLE +%3ed Interrupt_SetOrClrStatusFlags +%3ee Interrupt_QueryStatusFlags +%3f4 PowerOff +%3f5 ClearMainMemory +%3f6 SH7337_TMU_Stop +%3f7 SH7337_TMU_int_handler +%3fa Hmem_SetMMU +%3fb MMU_ConfigureAndFlush +%3fc TLB_SetAddressValue +%3fe GetStackPtr +%3ff MMU_FlushCache + +%400 MMU_ConfigureAndEnable +%404 GetPhysicalROMstart +%405 GetPhysicalRAMstart +%409 Serial_ResetAndDisable +%40a Serial_GetInterruptHandler +%40b Serial_SetInterruptHandler +%40c Serial_ReadOneByte +%40d Serial_ReadNBytes +%40e Serial_BufferedTransmitOneByte +%40f Serial_BufferedTransmitNBytes +%410 Serial_DirectTransmitOneByte +%411 Serial_GetReceivedBytesAvailable +%412 Serial_GetFreeTransmitSpace +%413 Serial_ClearReceiveBuffer +%414 Serial_ClearTransmitBuffer +%418 Serial_Open +%419 Serial_Close +%41b Serial_CallReceiveIntErrorResetHandler +%41c Serial_CallReceiveIntHandler +%41d Serial_CallTransmitIntErrorResetHandler +%41e Serial_CallTransmitIntHandler +%420 OS_inner_Sleep +%422 Serial_SpyNthByte +%423 Serial_GetStatus +%425 Serial_IsOpen +%429 Bfile_identify_device_OS +%42c Bfile_OpenFile_OS +%42d Bfile_CloseFile_OS +%42e Bfile_GetMediaFree_OS +%42f Bfile_GetFileSize_OS +%431 Bfile_SeekFile_OS +%432 Bfile_ReadFile_OS +%434 Bfile_CreateEntry_OS +%435 Bfile_WriteFile_OS +%438 Bfile_RenameEntry +%439 Bfile_DeleteEntry +%43b Bfile_FindFirst +%43c Bfile_FindNext +%43d Bfile_FindClose +%44e memcpy +%44f memcmp +%450 Bfile_GetFilenameLength +%451 Bfile_Name_cmp +%452 Bfile_Name_cpy +%453 Bfile_Name_ncpy +%456 Bfile_NameToStr_ncpy +%457 Bfile_StrToName_ncpy +%462 GetAppName +%463 SetAppName +%464 CmpAppName +%465 GetIntPtrContent +%467 LongToAscHex +%468 hasSDOption +%469 Battery_DisplayLowStatus +%46b App_BuiltInCount +%476 Battery_IsLow +%477 EnableGetkeyToMainFunctionReturn +%478 DisableGetkeyToMainFunctionReturn +%47f SetAutoPowerOffTime +%480 GetAutoPowerOffTime +%486 GetdatatablePtr +%48d SetAutoPowerOffFlag +%48e GetAutoPowerOffFlag +%492 Battery_IsLow +%494 CallbackAtQuitMainFunction +%495 Battery_DisplayLowStatus +%499 Heap_SetTopChunk +%49a App_Start +%49c Battery_GetStatus +%49e RebootOS +%4a0 AUX_DisplayErrorMessage +%4ad USB_InterruptHandler +%4ae USB_TimerHandler +%4b0 AUX_DisplayFKeyIcons +%4cb Keyboard_RemapFKeyCode +%4d1 AUX_DisplayFKeyIcon +%4dc Setup_GetEntry +%4dd Setup_SetEntry +%4de Setup_GetEntryPtr +%4df Alpha_GetData +%4e0 Alpha_SetData +%4e1 Alpha_ClearAll +%4e6 HourGlass +%4e9 LocalizeStringID +%4f5 BCD_ToStrAsNumber1 +%4f6 BCD_ToStrAsNumber2 + +%500 BCDToInternal +%518 Setup_GetEntry_3E +%519 Setup_GetEntry_40 +%51a Setup_SetEntry_3E +%51b Setup_SetEntry_40 +%531 MB_IsLead +%533 MB_ElementCount +%534 MB_ByteCount +%536 MB_strcat +%537 MB_strncat +%538 MB_strcpy +%53c MB_GetSecondElemPtr +%53d MB_GetElement +%53e MB_CopyToHeap +%53f memcmp +%541 itoa +%542 to_uppercase +%543 to_lowercase +%544 BCD_0 +%545 BCD_1 +%546 BCD_2 +%547 BCD_10 +%548 BCD_1_over_3 +%549 BCD_0.5 +%54a BCD_32767 +%54b BCD_m32768 +%54c BCD_65536 +%54d BCD_0x7fffffff +%54e BCD_m2Gi +%54f BCD_4Gi +%550 BCD_pi +%551 BCD_2pi +%552 BCD_pi_over_2 +%553 BCD_e +%554 BCD_5 +%5a6 BCD_SetAsInt +%5af BCD_pi_over_4 +%5b0 BCD_ln10 +%5b1 BCD_ln2 +%5b2 BCD_9.99e99 +%5b3 BCD_m9.99e99 +%5b4 BCD_9.99999999999999e99 +%5b5 BCD_227.85 +%5b6 BCD_sqrt2 +%5b7 BCD_sqrt2_over_2 +%5b8 BCD_506.6282746310 + +%645 CalculateExpression +%64a CalculateExpression0 +%652 PRGM_NextOpcode +%6a6 PRGM_IsEndOfLine +%6c4 Keyboard_PRGM_GetKey +%6d4 Alpha_GetData2 + +%713 Print_ClearLine +%763 Bdisp_DrawRectangle +%7fc OpcodeToStr + +%804 CLIP_Store +%807 locate +%808 Print +%809 PrintRev +%80a PrintC +%80b PrintRevC +%80c PrintLine +%80d PrintRLine +%80e Cursor_GetFlashStyle +%80f Cursor_GetSettings +%811 Cursor_SetFlashOn +%812 Cursor_SetFlashOff +%813 SaveDisp +%814 RestoreDisp +%829 MCS_CreateDirectory +%82a MCS_PutInternalItem +%82b MCSPutVar2 +%830 MCSOvwDat2 +%832 MCS_OverwriteOpenItem +%833 MCS_ClearInternalDirectory +%834 MCS_ClearDirectory +%835 MCS_DeleteInternalItem +%836 MCSDelVar2 +%83a MCS_GotoInternalItem +%83b MCS_OpenMainMemoryItem +%83c MCS_GotoHandleNeighbour +%83d MCS_CheckOpenedItem +%83e MCS_GetOpenItem +%83f MCS_OpenInternalDirectoryItem +%840 MCSGetDlen2 +%841 MCSGetData1 +%843 MCS_MapMCS_Result +%844 MCSGetCapa +%84d MCS_OpenAlphaMemItem +%852 MCS_DirtypeToItemtype +%853 MCS_ItemtypeToDirtype +%863 MCS_DirtypeToName +%866 MCS_MapError +%869 Alpha_ClearAllAndAns +%86f MCS_DeleteDirectoryItems +%8db EditExpression +%8dc EditValue +%8e6 EditMBStringCtrl +%8ea DisplayMBString +%8ec EditMBStringChar +%8f7 DisplayMBString2 +%8fe PopupWin + +%901 DisplayMessageBox +%905 DisplayErrorMessage +%90b SetShiftAlphaState +%90c GetInsOverwriteState +%90d SetInsOverwriteState +%90e ClrShiftAlphaState +%90f GetKey +%910 PutKey +%91b GetShiftAlphaState +%924 TestMode +%954 DisplayErrorMessage +%985 App_CONICS +%998 App_DYNA +%9ad PrintXY +%9df App_EACT +%9e1 App_Equation +%9e2 App_EQUA +%9f5 App_Program + +%a00 App_FINANCE +%a1f Keyboard_RemapFKeyCode +%a35 AUX_DisplayMessage +%a48 App_GRAPH_TABLE +%a4a App_LINK +%a6a App_Optimization +%a6b App_Memory +%a75 App_RECUR +%a97 App_RUN_MAT_EXE +%aae App_RUN_MAT +%ac6 App_STAT +%ac8 App_SYSTEM +%acc free +%acd malloc +%ace memcmp +%acf smart_memcpy +%ad0 memset +%ad4 strcat +%ad5 smart_strcmp +%ad6 strlen +%ad7 strncat +%ad8 strncmp +%ad9 strncpy +%ada strrchr +%ae8 CatalogDialog + +%c4f PrintMiniSd +%ca7 OpcodeType +%cb0 Basic_Send_Send38k +%cb1 Basic_Receive_Receive38k +%cb2 Basic_OpenComPort38k_CloseComPort38k +%cc4 InputNumber +%cc5 InputString +%ccb GetRAMSize +%cd0 another_diagnostic_dialog + +%d64 InputDateDialog +%d65 InputMonthDialog +%d66 InputDayDialog +%d67 InputYearDialog +%dab StoreExpressionToGraphFuncMemory + +%e6b calloc +%e6c memmove +%e6d realloc +%e6e strchr +%e6f strstr diff --git a/base-library/targets/fx@3.10.txt b/base-library/targets/fx@3.10.txt new file mode 100644 index 0000000..9e3501f --- /dev/null +++ b/base-library/targets/fx@3.10.txt @@ -0,0 +1,11 @@ +type: target +name: fx@3.10 +--- + +ROM: os/fx/3.10/3.10.bin +ROM_P2: os/fx/3.10/3.10.bin + +RAM: os/fx/3.10/RAM.bin +RAM_P2: os/fx/3.10/RAM.bin + +RS: os/fx/3.10/RS.bin