From df46fa7b9d2a9e8764957b8665292d67f9b97de9 Mon Sep 17 00:00:00 2001 From: schneefux Date: Sun, 12 Jun 2016 20:05:14 +0200 Subject: import into git --- AddinInfo.txt | 12 + Debug/Addin.mak | 101 ++++++++ Debug/FXADDINror.abs | Bin 0 -> 6452 bytes Debug/FXADDINror.bin | Bin 0 -> 1820 bytes Debug/FXADDINror.dbg | Bin 0 -> 8788 bytes Debug/FXADDINror.fsy | 67 ++++++ Debug/FXADDINror.map | 273 +++++++++++++++++++++ Debug/POWER.lst | 665 +++++++++++++++++++++++++++++++++++++++++++++++++++ Debug/POWER.obj | Bin 0 -> 12980 bytes FXSH_Build.bat | 22 ++ INIT/CasioRAM.mem | Bin 0 -> 48532 bytes INIT/CasioRAMCPU.mem | Bin 0 -> 80 bytes MainIcon.bmp | Bin 0 -> 138 bytes POWER.G1A | Bin 0 -> 2332 bytes POWER.c | 157 ++++++++++++ POWER.dlr | 13 + POWER.dlw | 114 +++++++++ POWER.g1w | 15 ++ README.md | 1 + eActivityIcon.bmp | Bin 0 -> 106 bytes 20 files changed, 1440 insertions(+) create mode 100644 AddinInfo.txt create mode 100644 Debug/Addin.mak create mode 100644 Debug/FXADDINror.abs create mode 100644 Debug/FXADDINror.bin create mode 100644 Debug/FXADDINror.dbg create mode 100644 Debug/FXADDINror.fsy create mode 100644 Debug/FXADDINror.map create mode 100644 Debug/POWER.lst create mode 100644 Debug/POWER.obj create mode 100644 FXSH_Build.bat create mode 100644 INIT/CasioRAM.mem create mode 100644 INIT/CasioRAMCPU.mem create mode 100644 MainIcon.bmp create mode 100644 POWER.G1A create mode 100644 POWER.c create mode 100644 POWER.dlr create mode 100644 POWER.dlw create mode 100644 POWER.g1w create mode 100644 README.md create mode 100644 eActivityIcon.bmp diff --git a/AddinInfo.txt b/AddinInfo.txt new file mode 100644 index 0000000..bcf7d89 --- /dev/null +++ b/AddinInfo.txt @@ -0,0 +1,12 @@ +//------------------------------------------------------------------ +// Addin-Application header control file, created with the CASIO SDK +//------------------------------------------------------------------ +[OUTPUT] : "POWER.G1A" +[BINDATA] : "FXADDINror.bin" +[DISPNAME] : "POWER" +[APPNAME] : "@POWER" +[VERSION] : "01.00.0000" +[APL_ICON] : "MainIcon.bmp" +[MODULE_NUM] : 0 +[MOD1_TITLE] : "POWER" +[MOD1_ICON] : "eActivityIcon.bmp" diff --git a/Debug/Addin.mak b/Debug/Addin.mak new file mode 100644 index 0000000..a10c78c --- /dev/null +++ b/Debug/Addin.mak @@ -0,0 +1,101 @@ +################################################ +# Make file for CASIO fx-9860G SDK Addin +# +############################ +# Directory defines +TCDIR = G:\Casio SDK\OS\SH +OSDIR = G:\Casio SDK\OS +APPDIR = G:\Casio SDK\Projekte\Battery +OUTDIR = G:\Casio SDK\Projekte\Battery\Debug + +################ +# Main Defines +SH_EXEDIR=$(TCDIR)\bin + +# Hitachi SH C/C++ Compiler02 phase +SHCC02_EXE=shc.exe +SHCC02_DEP="$(OSDIR)\FX\include\fxlib.h" + +# Hitachi SH Assembler03 phase +SHASM03_EXE=asmsh.exe + +# Hitachi OptLinker04 phase +SHLINK04_EXE=Optlnk.exe +SHLINK04_DEP="$(OSDIR)\FX\lib\fx9860G_library.lib" +SHLINK04_DEP2="$(OSDIR)\FX\lib\setup.obj" +EPSILON="$(OSDIR)\FX\lib\revolution.lib" +####################### +# Files to build +FILE0=POWER +FILESRC0="$(APPDIR)\$(FILE0).c" +FILEOBJ0="$(OUTDIR)\$(FILE0).obj" +RFILE=FXADDINror +USERALLOBJ=$(FILEOBJ0) + +####################### +# nmake "all" statement + +ALL: SH_ENV \ + $(USERALLOBJ) \ + $(OUTDIR)\$(RFILE).bin \ + +#################### +# Description blocks + +!MESSAGE %3#C$z`&'0? +!MESSAGE +!MESSAGE Executing Hitachi SH C/C++ Compiler/Assembler phase +!MESSAGE + +SH_ENV : + set SHC_INC=$(TCDIR)\include + set PATH=$(TCDIR)\bin + set SHC_LIB=$(TCDIR)\bin + set SHC_TMP=$(OUTDIR) + +$(FILEOBJ0) : $(FILESRC0) $(SHCC02_DEP) + "$(SH_EXEDIR)\$(SHCC02_EXE)" -subcommand=<< +-cpu=sh3 +-include="$(OSDIR)\FX\include","$(APPDIR)" +-objectfile=$(FILEOBJ0) +-show=source +-listfile="$(OUTDIR)\$(FILE0).lst" +-size +-noinline +-chgincpath +-errorpath +$(FILESRC0) +-lang=c +-nologo +-debug +<< + +!MESSAGE +!MESSAGE Executing Hitachi OptLinker04 phase +!MESSAGE + +"$(OUTDIR)\$(RFILE).bin" : $(USERALLOBJ) $(SHLINK04_DEP2) $(SHLINK04_DEP) + "$(SH_EXEDIR)\$(SHLINK04_EXE)" -subcommand=<< +noprelink +sdebug +rom D=R +nomessage +list "$(OUTDIR)\$(RFILE).map" +show symbol +nooptimize +start P_TOP,P,C,D,C$VTBL,C$INIT/0300200,B_BR_Size,B,R/08100000 +fsymbol P +nologo +input $(USERALLOBJ) +input $(SHLINK04_DEP2) +library $(SHLINK04_DEP) +library $(EPSILON) +output "$(OUTDIR)\$(RFILE).abs" +-nomessage=1100 +end +input "$(OUTDIR)\$(RFILE).abs" +form binary +output "$(OUTDIR)\$(RFILE).bin" +exit +<< + diff --git a/Debug/FXADDINror.abs b/Debug/FXADDINror.abs new file mode 100644 index 0000000..9561839 Binary files /dev/null and b/Debug/FXADDINror.abs differ diff --git a/Debug/FXADDINror.bin b/Debug/FXADDINror.bin new file mode 100644 index 0000000..3b7f04d Binary files /dev/null and b/Debug/FXADDINror.bin differ diff --git a/Debug/FXADDINror.dbg b/Debug/FXADDINror.dbg new file mode 100644 index 0000000..6d16424 Binary files /dev/null and b/Debug/FXADDINror.dbg differ diff --git a/Debug/FXADDINror.fsy b/Debug/FXADDINror.fsy new file mode 100644 index 0000000..e2d2947 --- /dev/null +++ b/Debug/FXADDINror.fsy @@ -0,0 +1,67 @@ +;HITACHI OPTIMIZING LINKAGE EDITOR GENERATED FILE 2012.10.10 +;fsymbol = P + +;SECTION NAME = P + .export _IsSlim +_IsSlim: .equ h'0030020c + .export _OSVersionAsInt +_OSVersionAsInt: .equ h'00300252 + .export _IsSD +_IsSD: .equ h'00300230 + .export _IsEmulator +_IsEmulator: .equ h'00300238 + .export _GetMainBatteryVoltagePointer +_GetMainBatteryVoltagePointer: .equ h'00300290 + .export _GetBatteryStatus +_GetBatteryStatus: .equ h'003002be + .export _MainBatteryPercentage +_MainBatteryPercentage: .equ h'00300380 + .export _AddIn_main +_AddIn_main: .equ h'003003d4 + .export ___LINK_PROTECT +___LINK_PROTECT: .equ h'00300440 + .export _SetQuitHandler +_SetQuitHandler: .equ h'00300444 + .export _OnAppCloseDefault +_OnAppCloseDefault: .equ h'0030044a + .export __INITSCT_ADDIN +__INITSCT_ADDIN: .equ h'0030049e + .export _INIT_ADDIN_APPLICATION +_INIT_ADDIN_APPLICATION: .equ h'003004e6 + .export __divls +__divls: .equ h'0030055c + .export __slow_mvn +__slow_mvn: .equ h'00300610 + .export _Bdel_cychdr +_Bdel_cychdr: .equ h'00300648 + .export _Bdisp_PutDisp_DD +_Bdisp_PutDisp_DD: .equ h'00300658 + .export _Bdisp_DrawLineVRAM +_Bdisp_DrawLineVRAM: .equ h'00300668 + .export _BfileFLS_CloseFile +_BfileFLS_CloseFile: .equ h'00300678 + .export _Bkey_Set_RepeatTime_Default +_Bkey_Set_RepeatTime_Default: .equ h'00300688 + .export _CallbackAtQuitMainFunction +_CallbackAtQuitMainFunction: .equ h'00300698 + .export _flsFindClose +_flsFindClose: .equ h'003006a8 + .export _GetKey +_GetKey: .equ h'003006b8 + .export _GLibAddinAplExecutionCheck +_GLibAddinAplExecutionCheck: .equ h'003006c8 + .export _Hmem_SetMMU +_Hmem_SetMMU: .equ h'003006d8 + .export _PrintMini +_PrintMini: .equ h'003006e8 + .export _locate +_locate: .equ h'00300704 + .export _Bdisp_ReadArea_DD +_Bdisp_ReadArea_DD: .equ h'0030072c + .export _DD_GET +_DD_GET: .equ h'00300860 + .export _locate_OS +_locate_OS: .equ h'00300870 + .export _PrintMiniSd +_PrintMiniSd: .equ h'00300880 + .end diff --git a/Debug/FXADDINror.map b/Debug/FXADDINror.map new file mode 100644 index 0000000..28f4e6c --- /dev/null +++ b/Debug/FXADDINror.map @@ -0,0 +1,273 @@ +Hitachi Optimizing Linkage Editor (Ver. 7.1.03.000)10-Oct-2012 15:02:19 + +*** Options *** + +-subcommand=C:\Users\Timo\AppData\Local\Temp\hmkB403.tmp +noprelink +sdebug +rom D=R +nomessage +list "G:\Casio SDK\Projekte\Battery\Debug\FXADDINror.map" +show symbol +nooptimize +start P_TOP,P,C,D,C$VTBL,C$INIT/0300200,B_BR_Size,B,R/08100000 +fsymbol P +nologo +input "G:\Casio SDK\Projekte\Battery\Debug\POWER.obj" +input "G:\Casio SDK\OS\FX\lib\setup.obj" +library "G:\Casio SDK\OS\FX\lib\fx9860G_library.lib" +library "G:\Casio SDK\OS\FX\lib\revolution.lib" +output "G:\Casio SDK\Projekte\Battery\Debug\FXADDINror.abs" +-nomessage=1100 +end + +*** Error information *** + +*** Mapping List *** + +SECTION START END SIZE ALIGN + +P_TOP + 00300200 0030020b c 4 +P + 0030020c 0030088f 684 4 +C + 00300890 00300917 88 4 +D + 00300918 0030091b 4 4 +B_BR_Size + 08100000 08100003 4 4 +B + 08100004 08100007 4 4 +R + 08100008 0810000b 4 4 + +*** Symbol List *** + +SECTION= +FILE= START END SIZE + SYMBOL ADDR SIZE INFO COUNTS OPT + +SECTION=P_TOP +FILE=G:\Casio SDK\Projekte\Battery\Debug\POWER.obj + 00300200 0030020b c + _InitializeSystem + 00300200 c func ,g * + +SECTION=P +FILE=G:\Casio SDK\Projekte\Battery\Debug\POWER.obj + 0030020c 0030043f 234 + _IsSlim + 0030020c 24 func ,g * + _IsSD + 00300230 8 func ,g * + _IsEmulator + 00300238 1a func ,g * + _OSVersionAsInt + 00300252 3e func ,g * + _GetMainBatteryVoltagePointer + 00300290 2e func ,g * + _GetBatteryStatus + 003002be c2 func ,g * + _MainBatteryPercentage + 00300380 54 func ,g * + _AddIn_main + 003003d4 6c func ,g * +FILE=G:\Casio SDK\OS\FX\lib\setup.obj + 00300440 0030055b 11c + ___LINK_PROTECT + 00300440 4 func ,g * + _SetQuitHandler + 00300444 6 func ,g * + _OnAppCloseDefault + 0030044a 54 func ,g * + __INITSCT_ADDIN + 0030049e 48 func ,g * + _INIT_ADDIN_APPLICATION + 003004e6 76 func ,g * +FILE=__divls + 0030055c 0030060f b4 + __divls + 0030055c 0 none ,g * + divls_zero + 003005fa 0 none ,l * + A_errno + 00300608 0 none ,l * + n_zerono + 0030060c 0 none ,l * +FILE=__s_mvn + 00300610 00300647 38 + __slow_mvn + 00300610 0 none ,g * + SMVN_B + 0030061e 0 none ,l * + SMVN_END + 00300640 0 none ,l * +FILE=_Bdel_cychdr + 00300648 00300657 10 + _Bdel_cychdr + 00300648 0 none ,g * +FILE=_Bdisp_PutDisp_DD + 00300658 00300667 10 + _Bdisp_PutDisp_DD + 00300658 0 none ,g * +FILE=_Bdisp_PutLineVRAM + 00300668 00300677 10 + _Bdisp_DrawLineVRAM + 00300668 0 none ,g * +FILE=_BfileFLS_CloseFile + 00300678 00300687 10 + _BfileFLS_CloseFile + 00300678 0 none ,g * +FILE=_Bkey_Set_RepeatTime_Default + 00300688 00300697 10 + _Bkey_Set_RepeatTime_Default + 00300688 0 none ,g * +FILE=_CallbackAtQuitMainFunction + 00300698 003006a7 10 + _CallbackAtQuitMainFunction + 00300698 0 none ,g * +FILE=_flsFindClose + 003006a8 003006b7 10 + _flsFindClose + 003006a8 0 none ,g * +FILE=_getkey + 003006b8 003006c7 10 + _GetKey + 003006b8 0 none ,g * +FILE=_GLibAddinAplExecutionCheck + 003006c8 003006d7 10 + _GLibAddinAplExecutionCheck + 003006c8 0 none ,g * +FILE=_Hmem_SetMMU + 003006d8 003006e7 10 + _Hmem_SetMMU + 003006d8 0 none ,g * +FILE=dispbios + 003006e8 0030085d 176 + _PrintMini + 003006e8 1c func ,g * + _locate + 00300704 28 func ,g * + _Bdisp_ReadArea_DD + 0030072c 132 func ,g * +FILE=_DD_GET + 00300860 0030086f 10 + _DD_GET + 00300860 0 none ,g * +FILE=_locate + 00300870 0030087f 10 + _locate_OS + 00300870 0 none ,g * +FILE=_PrintMiniSd + 00300880 0030088f 10 + _PrintMiniSd + 00300880 0 none ,g * + +SECTION=C +FILE=G:\Casio SDK\Projekte\Battery\Debug\POWER.obj + 00300890 00300903 74 + _sc003B + 00300890 10 data ,g * + _sc0D65 + 003008a0 10 data ,g * + _sc0D67 + 003008b0 10 data ,g * + _sc0D64 + 003008c0 10 data ,g * + _sc0015 + 003008d0 10 data ,g * + _sc06C4 + 003008e0 10 data ,g * + _sc0160 + 003008f0 10 data ,g * +FILE=addin_sct + 00300904 00300917 14 + _B_BGN + 00300904 0 none ,g * + _B_END + 00300908 0 none ,g * + _R_BGN + 0030090c 0 none ,g * + _R_END + 00300910 0 none ,g * + _D_ROM + 00300914 0 none ,g * + +SECTION=B_BR_Size +FILE=G:\Casio SDK\Projekte\Battery\Debug\POWER.obj + 08100000 08100003 4 + _BR_Size + 08100000 4 data ,g * + +SECTION=B +FILE=_errno + 08100004 08100007 4 + __errno + 08100004 4 data ,g * + +SECTION=R +FILE=G:\Casio SDK\OS\FX\lib\setup.obj + 08100008 0810000b 4 + _gb_OnAppClose + 08100008 4 data ,g * + +Absolute value symbols +FILE=__divls + zerodiv + 0000044e 0 none ,l * +FILE=_Bdel_cychdr + __JumpTableTOP + 80010070 0 none ,l * +FILE=_Bdisp_PutDisp_DD + __JumpTableTOP + 80010070 0 none ,l * +FILE=_Bdisp_PutLineVRAM + __JumpTableTOP + 80010070 0 none ,l * +FILE=_BfileFLS_CloseFile + __JumpTableTOP + 80010070 0 none ,l * +FILE=_Bkey_Set_RepeatTime_Default + __JumpTableTOP + 80010070 0 none ,l * +FILE=_CallbackAtQuitMainFunction + __JumpTableTOP + 80010070 0 none ,l * +FILE=_flsFindClose + __JumpTableTOP + 80010070 0 none ,l * +FILE=_getkey + __JumpTableTOP + 80010070 0 none ,l * +FILE=_GLibAddinAplExecutionCheck + __JumpTableTOP + 80010070 0 none ,l * +FILE=_Hmem_SetMMU + __JumpTableTOP + 80010070 0 none ,l * +FILE=_DD_GET + __JumpTableTOP + 80010070 0 none ,l * +FILE=_locate + __JumpTableTOP + 80010070 0 none ,l * +FILE=_PrintMiniSd + __JumpTableTOP + 80010070 0 none ,l * + +*** Delete Symbols *** + +SYMBOL SIZE INFO + +*** Variable Accessible with Abs8 *** + +SYMBOL SIZE COUNTS OPTIMIZE + +*** Variable Accessible with Abs16 *** + +SYMBOL SIZE COUNTS OPTIMIZE + +*** Function Call *** + +SYMBOL COUNTS OPTIMIZE diff --git a/Debug/POWER.lst b/Debug/POWER.lst new file mode 100644 index 0000000..354c1ec --- /dev/null +++ b/Debug/POWER.lst @@ -0,0 +1,665 @@ +SH SERIES C/C++ Compiler (Ver. 6.0C) 10-Oct-2012 15:02:19 PAGE 1 + +************ OBJECT LISTING ************ + +FILE NAME: G:\Casio SDK\Projekte\Battery\POWER.c + +SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT + + POWER.c 1 #include "fxlib.h" + POWER.c 2 + POWER.c 3 // instant syscalls (fx-9860) + POWER.c 4 #define SCA 0xD201D002 + POWER.c 5 #define SCB 0x422B0009 + POWER.c 6 #define SCE 0x80010070 + POWER.c 7 typedef void(*sc_vpuc)(unsigned char*); + POWER.c 8 typedef int(*sc_iv)(void); + POWER.c 9 typedef int(*sc_i2pui)( unsigned int*, unsigned int* ); + POWER.c 10 typedef int(*sc_i4pui)( unsigned int*, unsigned int*, unsigned int*, unsigned int* ); + POWER.c 11 typedef int(*sc_i2puc2pus)( unsigned char*, unsigned char*, unsigned short*, unsigned short* ); + POWER.c 12 typedef int(*sc_iipci)( int, unsigned char*, int ); + POWER.c 13 const unsigned int sc003B[] = { SCA, SCB, SCE, 0x003B }; + POWER.c 14 #define RTC_GetTicks (*(sc_iv)sc003B) + POWER.c 15 const unsigned int sc0D65[] = { SCA, SCB, SCE, 0x0D65 }; + POWER.c 16 #define InputDateMonth (*(sc_i2pui)sc0D65) + POWER.c 17 const unsigned int sc0D67[] = { SCA, SCB, SCE, 0x0D67 }; + POWER.c 18 #define InputDateYear (*(sc_i2pui)sc0D67) + POWER.c 19 const unsigned int sc0D64[] = { SCA, SCB, SCE, 0x0D64 }; + POWER.c 20 #define InputDate (*(sc_i4pui)sc0D64) + POWER.c 21 const unsigned int sc0015[] = { SCA, SCB, SCE, 0x0015 }; + POWER.c 22 #define GlibGetOSVersionInfo (*(sc_i2puc2pus)sc0015) + POWER.c 23 const unsigned int sc06C4[] = { SCA, SCB, SCE, 0x06C4 }; + POWER.c 24 #define KBD_PRGM_GetKey (*(sc_vpuc)sc06C4) + POWER.c 25 const unsigned int sc0160[] = { SCA, SCB, SCE, 0x0160 }; + POWER.c 26 #define LongToAsc (*(sc_iipci)sc0160) + POWER.c 27 // instant syscalls + POWER.c 28 + POWER.c 29 // for fx9860 only! + POWER.c 30 #define PORT_E_DR 0xA4000128 + POWER.c 31 + POWER.c 32 // + POWER.c 33 #define OS202GII2 0x02020000 + POWER.c 34 // + POWER.c 35 char IsSlim(){ +P 00000000 _IsSlim: ; function: IsSlim + ; frame size=4 + 00000000 4F22 STS.L PR,@-R15 + POWER.c 36 if ( ( OSVersionAsInt() & 0xFFFF0000 ) == OS202GII2 ) return 0; + 00000002 B020 BSR _OSVersionAsInt + 00000004 0009 NOP + 00000006 D23F MOV.L L381+10,R2 ; H'FFFF0000 + 00000008 D33F MOV.L L381+14,R3 ; H'02020000 + 0000000A 2029 AND R2,R0 + 0000000C 3030 CMP/EQ R3,R0 + 0000000E 8B02 BF L356 + 00000010 4F26 LDS.L @R15+,PR + 00000012 000B RTS + 00000014 E000 MOV #0,R0 + 00000016 L356: + POWER.c 37 else return !( *(char*)PORT_E_DR & 0x08 ); + 00000016 D13D MOV.L L381+18,R1 ; H'A4000128 + 00000018 6010 MOV.B @R1,R0 + 0000001A C808 TST #8,R0 + + + + +SH SERIES C/C++ Compiler (Ver. 6.0C) 10-Oct-2012 15:02:19 PAGE 2 + + +SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT + + 0000001C 0029 MOVT R0 + POWER.c 38 } + 0000001E L357: + 0000001E 4F26 LDS.L @R15+,PR + 00000020 000B RTS + 00000022 0009 NOP + POWER.c 39 // + POWER.c 40 char IsSD(){ + 00000024 _IsSD: ; function: IsSD + ; frame size=0 + POWER.c 41 return ( *(char*)PORT_E_DR & 0x01 ); + 00000024 D339 MOV.L L381+18,R3 ; H'A4000128 + 00000026 6030 MOV.B @R3,R0 + POWER.c 42 } + 00000028 000B RTS + 0000002A C901 AND #1,R0 + POWER.c 43 + POWER.c 44 // + POWER.c 45 int IsEmulator(){ + 0000002C _IsEmulator: ; function: IsEmulator + ; frame size=0 + POWER.c 46 return !( *(int*)0x8000FFD0 || *(int*)0x8000FFD4 ); + 0000002C D138 MOV.L L381+22,R1 ; H'8000FFD0 + 0000002E 6212 MOV.L @R1,R2 + 00000030 2228 TST R2,R2 + 00000032 8B05 BF L362 + 00000034 D337 MOV.L L381+26,R3 ; H'8000FFD4 + 00000036 6232 MOV.L @R3,R2 + 00000038 2228 TST R2,R2 + 0000003A 8B01 BF L362 + 0000003C 000B RTS + 0000003E E001 MOV #1,R0 + 00000040 L362: + 00000040 E000 MOV #0,R0 + POWER.c 47 } + 00000042 L364: + 00000042 000B RTS + 00000044 0009 NOP + POWER.c 48 + POWER.c 49 #define OS102 0x01020000 + POWER.c 50 #define OS103 0x01030000 + POWER.c 51 #define OS104 0x01040000 + POWER.c 52 #define OS105 0x01050000 + POWER.c 53 #define OS1051 0x01051000 + POWER.c 54 #define OS110 0x01100000 + POWER.c 55 #define OS111 0x01110000 + POWER.c 56 #define OS200 0x02000300 + POWER.c 57 #define OS200slim 0x02000100 + POWER.c 58 #define OS200GII 0x02000200 + POWER.c 59 + POWER.c 60 // + POWER.c 61 int OSVersionAsInt( void ){ + 00000046 _OSVersionAsInt: ; function: OSVersionAsInt + ; frame size=20 + 00000046 4F22 STS.L PR,@-R15 + POWER.c 62 unsigned char mainversion; + POWER.c 63 unsigned char minorversion; + + + + +SH SERIES C/C++ Compiler (Ver. 6.0C) 10-Oct-2012 15:02:19 PAGE 3 + + +SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT + + POWER.c 64 unsigned short release; + POWER.c 65 unsigned short build; + POWER.c 66 GlibGetOSVersionInfo( &mainversion, &minorversion, &release, &build ); + 00000048 D233 MOV.L L381+30,R2 ; _sc0015 + 0000004A 7FF0 ADD #-16,R15 + 0000004C 67F3 MOV R15,R7 + 0000004E 770C ADD #12,R7 + 00000050 66F3 MOV R15,R6 + 00000052 7608 ADD #8,R6 + 00000054 65F3 MOV R15,R5 + 00000056 7504 ADD #4,R5 + 00000058 420B JSR @R2 + 0000005A 64F3 MOV R15,R4 + POWER.c 67 return ( ( mainversion << 24 ) & 0xFF000000 ) | ( ( minorversion << 16 ) & 0x00FF0000 ) | ( release & 0x + +0000FFFF ); + 0000005C 60F0 MOV.B @R15,R0 + 0000005E 600C EXTU.B R0,R0 + 00000060 D32E MOV.L L381+34,R3 ; H'FF000000 + 00000062 4028 SHLL16 R0 + 00000064 D22E MOV.L L381+38,R2 ; H'00FF0000 + 00000066 4018 SHLL8 R0 + 00000068 2039 AND R3,R0 + 0000006A 6103 MOV R0,R1 + 0000006C 84F4 MOV.B @(4,R15),R0 + 0000006E 600C EXTU.B R0,R0 + 00000070 4028 SHLL16 R0 + 00000072 2029 AND R2,R0 + 00000074 201B OR R1,R0 + 00000076 6103 MOV R0,R1 + 00000078 85F4 MOV.W @(8,R15),R0 + POWER.c 68 } + 0000007A 7F10 ADD #16,R15 + 0000007C 4F26 LDS.L @R15+,PR + 0000007E 600D EXTU.W R0,R0 + 00000080 000B RTS + 00000082 201B OR R1,R0 + POWER.c 69 + POWER.c 70 // + POWER.c 71 int GetMainBatteryVoltagePointer(){ + 00000084 _GetMainBatteryVoltagePointer: ; function: GetMainBatteryVoltagePointer + ; frame size=0 + POWER.c 72 unsigned int ea; + POWER.c 73 unsigned int j; + POWER.c 74 ea = *(unsigned int*)0x8001007C; + 00000084 D327 MOV.L L381+42,R3 ; H'8001007C + 00000086 6532 MOV.L @R3,R5 + POWER.c 75 ea = ea + 0x049C*4; + 00000088 9237 MOV.W L381,R2 ; H'1270 + 0000008A 352C ADD R2,R5 + POWER.c 76 ea = *(unsigned int*)( ea ); + 0000008C 6452 MOV.L @R5,R4 + 0000008E D526 MOV.L L381+46,R5 ; H'0000E464 + POWER.c 77 while ( *(unsigned short*)( ea ) != 0xE464 ){ + 00000090 A001 BRA L366 + 00000092 0009 NOP + 00000094 L367: + POWER.c 78 ea = ea + 2; + + + + +SH SERIES C/C++ Compiler (Ver. 6.0C) 10-Oct-2012 15:02:19 PAGE 4 + + +SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT + + 00000094 7402 ADD #2,R4 + 00000096 L366: + 00000096 6341 MOV.W @R4,R3 + 00000098 633D EXTU.W R3,R3 + 0000009A 3350 CMP/EQ R5,R3 + 0000009C 8BFA BF L367 + POWER.c 79 }; + POWER.c 80 ea = ea + 2; + 0000009E 7402 ADD #2,R4 + POWER.c 81 j = *(unsigned char*)( ea + 1 ); + 000000A0 8441 MOV.B @(1,R4),R0 + POWER.c 82 j = 4*j; + POWER.c 83 j = ( ea + j + 4 ) & 0xFFFFFFFC; + 000000A2 E3FC MOV #-4,R3 + 000000A4 650C EXTU.B R0,R5 + 000000A6 4508 SHLL2 R5 + 000000A8 345C ADD R5,R4 + 000000AA 7404 ADD #4,R4 + 000000AC 2439 AND R3,R4 + POWER.c 84 return *(unsigned int*)( j ); + POWER.c 85 } + 000000AE 000B RTS + 000000B0 6042 MOV.L @R4,R0 + POWER.c 86 + POWER.c 87 int GetBatteryStatus( int battery, int*firstlevel, int*secondlevel ){ + 000000B2 _GetBatteryStatus: ; function: GetBatteryStatus + ; frame size=20 + 000000B2 2FE6 MOV.L R14,@-R15 + 000000B4 2FD6 MOV.L R13,@-R15 + 000000B6 6E53 MOV R5,R14 + POWER.c 88 int (*iGBS)( int ) = 0; // declare an int function pointer + POWER.c 89 int*battconfig = (int*)0x80000334; + POWER.c 90 *firstlevel = 0x17F; + 000000B8 9320 MOV.W L381+2,R3 ; H'017F + 000000BA 6D63 MOV R6,R13 + POWER.c 91 *secondlevel = 0x16D; + 000000BC 921F MOV.W L381+4,R2 ; H'016D + 000000BE 2FC6 MOV.L R12,@-R15 + 000000C0 4F22 STS.L PR,@-R15 + 000000C2 7FFC ADD #-4,R15 + 000000C4 2F42 MOV.L R4,@R15 + 000000C6 2E32 MOV.L R3,@R14 + POWER.c 92 + POWER.c 93 iGBS = (int(*)(int))GetMainBatteryVoltagePointer(); + 000000C8 BFDC BSR _GetMainBatteryVoltagePointer + 000000CA 2D22 MOV.L R2,@R13 + POWER.c 94 + POWER.c 95 switch ( OSVersionAsInt() ){ + 000000CC BFBB BSR _OSVersionAsInt + 000000CE 6C03 MOV R0,R12 + 000000D0 D116 MOV.L L381+50,R1 ; H'02000300 + 000000D2 3010 CMP/EQ R1,R0 + 000000D4 8907 BT L352 + 000000D6 D116 MOV.L L381+54,R1 ; H'02000200 + 000000D8 3010 CMP/EQ R1,R0 + 000000DA 8935 BT L369 + 000000DC D115 MOV.L L381+58,R1 ; H'02000100 + + + + +SH SERIES C/C++ Compiler (Ver. 6.0C) 10-Oct-2012 15:02:19 PAGE 5 + + +SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT + + 000000DE 3010 CMP/EQ R1,R0 + 000000E0 892E BT L354 + 000000E2 A031 BRA L369 + 000000E4 0009 NOP + 000000E6 L352: ; case label + POWER.c 96 case OS200 : + POWER.c 97 if ( *battconfig==0x43444844 ){ + 000000E6 D314 MOV.L L381+62,R3 ; H'43444844 + 000000E8 D114 MOV.L L381+66,R1 ; H'80000334 + 000000EA 6212 MOV.L @R1,R2 + 000000EC 3230 CMP/EQ R3,R2 + 000000EE 8B2B BF L369 + POWER.c 98 *firstlevel = 0x1A5; + 000000F0 9206 MOV.W L381+6,R2 ; H'01A5 + 000000F2 2E22 MOV.L R2,@R14 + POWER.c 99 *secondlevel = 0x191; + 000000F4 9105 MOV.W L381+8,R1 ; H'0191 + POWER.c 100 }; + POWER.c 101 break; + 000000F6 A027 BRA L369 + 000000F8 2D12 MOV.L R1,@R13 + 000000FA L381: + 000000FA 1270 .DATA.W H'1270 + 000000FC 017F .DATA.W H'017F + 000000FE 016D .DATA.W H'016D + 00000100 01A5 .DATA.W H'01A5 + 00000102 0191 .DATA.W H'0191 + 00000104 FFFF0000 .DATA.L H'FFFF0000 + 00000108 02020000 .DATA.L H'02020000 + 0000010C A4000128 .DATA.L H'A4000128 + 00000110 8000FFD0 .DATA.L H'8000FFD0 + 00000114 8000FFD4 .DATA.L H'8000FFD4 + 00000118 <00000000> .DATA.L _sc0015 + 0000011C FF000000 .DATA.L H'FF000000 + 00000120 00FF0000 .DATA.L H'00FF0000 + 00000124 8001007C .DATA.L H'8001007C + 00000128 0000E464 .DATA.L H'0000E464 + 0000012C 02000300 .DATA.L H'02000300 + 00000130 02000200 .DATA.L H'02000200 + 00000134 02000100 .DATA.L H'02000100 + 00000138 43444844 .DATA.L H'43444844 + 0000013C 80000334 .DATA.L H'80000334 + 00000140 L354: ; case label + POWER.c 102 case OS200GII : + POWER.c 103 //case OS202GII2 : + POWER.c 104 break; + POWER.c 105 case OS200slim : + POWER.c 106 *firstlevel = 0x2AA; + 00000140 9367 MOV.W L382,R3 ; H'02AA + 00000142 2E32 MOV.L R3,@R14 + POWER.c 107 *secondlevel = 0x288; + 00000144 9266 MOV.W L382+2,R2 ; H'0288 + 00000146 2D22 MOV.L R2,@R13 + POWER.c 108 break; + 00000148 L369: + POWER.c 109 }; + POWER.c 110 if (IsSlim()){ + + + + +SH SERIES C/C++ Compiler (Ver. 6.0C) 10-Oct-2012 15:02:19 PAGE 6 + + +SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT + + 00000148 BF5A BSR _IsSlim + 0000014A 0009 NOP + 0000014C 600E EXTS.B R0,R0 + 0000014E 2008 TST R0,R0 + 00000150 8903 BT L371 + POWER.c 111 *firstlevel = 0x2AA; + 00000152 915E MOV.W L382,R1 ; H'02AA + POWER.c 112 *secondlevel = 0x288; + 00000154 935E MOV.W L382+2,R3 ; H'0288 + 00000156 2E12 MOV.L R1,@R14 + 00000158 2D32 MOV.L R3,@R13 + 0000015A L371: + POWER.c 113 } + POWER.c 114 if (iGBS!=0) return (*iGBS)( battery ); + 0000015A 2CC8 TST R12,R12 + 0000015C 8903 BT L372 + 0000015E 4C0B JSR @R12 + 00000160 64F2 MOV.L @R15,R4 + 00000162 A001 BRA L373 + 00000164 0009 NOP + 00000166 L372: + POWER.c 115 else return 0; + 00000166 E000 MOV #0,R0 + POWER.c 116 } + 00000168 L373: + 00000168 7F04 ADD #4,R15 + 0000016A 4F26 LDS.L @R15+,PR + 0000016C 6CF6 MOV.L @R15+,R12 + 0000016E 6DF6 MOV.L @R15+,R13 + 00000170 000B RTS + 00000172 6EF6 MOV.L @R15+,R14 + POWER.c 117 + POWER.c 118 // the warning level lies around 2/3 full scale + POWER.c 119 int MainBatteryPercentage( void ){ + 00000174 _MainBatteryPercentage: ; function: MainBatteryPercentage + ; frame size=16 + ; used runtime library name: + ; __divls + 00000174 4F22 STS.L PR,@-R15 + 00000176 4F12 STS.L MACL,@-R15 + 00000178 7FF8 ADD #-8,R15 + POWER.c 120 int firstlevel, secondlevel; + POWER.c 121 int i; + POWER.c 122 if ( IsEmulator() ){ + 0000017A BF57 BSR _IsEmulator + 0000017C 0009 NOP + 0000017E 2008 TST R0,R0 + 00000180 8905 BT L375 + POWER.c 123 i = 100; + 00000182 E464 MOV #100,R4 + POWER.c 124 firstlevel = 70; + 00000184 E346 MOV #70,R3 + POWER.c 125 secondlevel = 65; + 00000186 E241 MOV #65,R2 + 00000188 2F32 MOV.L R3,@R15 + 0000018A A006 BRA L376 + 0000018C 1F21 MOV.L R2,@(4,R15) + + + + +SH SERIES C/C++ Compiler (Ver. 6.0C) 10-Oct-2012 15:02:19 PAGE 7 + + +SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT + + 0000018E L375: + POWER.c 126 } else i = GetBatteryStatus( 1, &firstlevel, &secondlevel ); + 0000018E 66F3 MOV R15,R6 + 00000190 7604 ADD #4,R6 + 00000192 65F3 MOV R15,R5 + 00000194 BF8D BSR _GetBatteryStatus + 00000196 E401 MOV #1,R4 + 00000198 6403 MOV R0,R4 + 0000019A L376: + POWER.c 127 + POWER.c 128 if (firstlevel > 0 ) return ( 200*i )/(firstlevel*3); + 0000019A 63F2 MOV.L @R15,R3 + 0000019C 4315 CMP/PL R3 + 0000019E 8B0D BF L377 + 000001A0 9139 MOV.W L382+4,R1 ; H'00C8 + 000001A2 0417 MUL.L R1,R4 + 000001A4 60F2 MOV.L @R15,R0 + 000001A6 011A STS MACL,R1 + 000001A8 D21B MOV.L L382+6,R2 ; __divls + 000001AA 6303 MOV R0,R3 + 000001AC 4000 SHLL R0 + 000001AE 420B JSR @R2 + 000001B0 303C ADD R3,R0 + 000001B2 7F08 ADD #8,R15 + 000001B4 4F16 LDS.L @R15+,MACL + 000001B6 4F26 LDS.L @R15+,PR + 000001B8 000B RTS + 000001BA 0009 NOP + 000001BC L377: + POWER.c 129 else return 0; + 000001BC E000 MOV #0,R0 + POWER.c 130 } + 000001BE L378: + 000001BE 7F08 ADD #8,R15 + 000001C0 4F16 LDS.L @R15+,MACL + 000001C2 4F26 LDS.L @R15+,PR + 000001C4 000B RTS + 000001C6 0009 NOP + POWER.c 131 + POWER.c 132 int AddIn_main(int isAppli, unsigned short OptionNum) + 000001C8 _AddIn_main: ; function: AddIn_main + ; frame size=16 + ; used runtime library name: + ; __slow_mvn + 000001C8 4F22 STS.L PR,@-R15 + POWER.c 133 { + POWER.c 134 // battery = 1 = main (do not use other values) + POWER.c 135 // firstlevel: warning level + POWER.c 136 // secondlevel: shutdown level + POWER.c 137 + POWER.c 138 int fl = 33, sl = 66, m = 1, batt = 0; + 000001CA E321 MOV #33,R3 + 000001CC 7FF4 ADD #-12,R15 + 000001CE E242 MOV #66,R2 + 000001D0 2F32 MOV.L R3,@R15 + POWER.c 139 + POWER.c 140 char c[4] = {0}; + + + + +SH SERIES C/C++ Compiler (Ver. 6.0C) 10-Oct-2012 15:02:19 PAGE 8 + + +SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT + + 000001D2 61F3 MOV R15,R1 + 000001D4 1F21 MOV.L R2,@(4,R15) + 000001D6 7108 ADD #8,R1 + 000001D8 D311 MOV.L L382+14,R3 ; __slow_mvn + 000001DA D210 MOV.L L382+10,R2 ; L346 + 000001DC 430B JSR @R3 + 000001DE E004 MOV #4,R0 + POWER.c 141 + POWER.c 142 locate(1,1); + 000001E0 D110 MOV.L L382+18,R1 ; _locate + 000001E2 E501 MOV #1,R5 + 000001E4 410B JSR @R1 + 000001E6 6453 MOV R5,R4 + POWER.c 143 + POWER.c 144 batt = GetBatteryStatus(m, &fl, &sl); + 000001E8 66F3 MOV R15,R6 + 000001EA 7604 ADD #4,R6 + 000001EC 65F3 MOV R15,R5 + 000001EE BF60 BSR _GetBatteryStatus + 000001F0 E401 MOV #1,R4 + 000001F2 6603 MOV R0,R6 + POWER.c 145 + POWER.c 146 Bdisp_DrawLineVRAM(0,0,batt,0); + 000001F4 D20C MOV.L L382+22,R2 ; _Bdisp_DrawLineVRAM + 000001F6 E700 MOV #0,R7 + 000001F8 6573 MOV R7,R5 + 000001FA 420B JSR @R2 + 000001FC 6473 MOV R7,R4 + POWER.c 147 Bdisp_PutDisp_DD(); + 000001FE D30B MOV.L L382+26,R3 ; _Bdisp_PutDisp_DD + 00000200 430B JSR @R3 + 00000202 0009 NOP + POWER.c 148 GetKey(&fl); + 00000204 D20A MOV.L L382+30,R2 ; _GetKey + 00000206 420B JSR @R2 + 00000208 64F3 MOV R15,R4 + POWER.c 149 } + 0000020A 7F0C ADD #12,R15 + 0000020C 4F26 LDS.L @R15+,PR + 0000020E 000B RTS + 00000210 0009 NOP + 00000212 L382: + 00000212 02AA .DATA.W H'02AA + 00000214 0288 .DATA.W H'0288 + 00000216 00C8 .DATA.W H'00C8 + 00000218 <00000000> .DATA.L __divls + 0000021C <00000000> .DATA.L L346 + 00000220 <00000000> .DATA.L __slow_mvn + 00000224 <00000000> .DATA.L _locate + 00000228 <00000000> .DATA.L _Bdisp_DrawLineVRAM + 0000022C <00000000> .DATA.L _Bdisp_PutDisp_DD + 00000230 <00000000> .DATA.L _GetKey + POWER.c 150 #pragma section _BR_Size + POWER.c 151 unsigned long BR_Size; + POWER.c 152 #pragma section + POWER.c 153 #pragma section _TOP + POWER.c 154 int InitializeSystem(int isAppli, unsigned short OptionNum) + + + + +SH SERIES C/C++ Compiler (Ver. 6.0C) 10-Oct-2012 15:02:19 PAGE 9 + + +SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT + +P_T 00000000 _InitializeSystem: ; function: InitializeSystem + ; frame size=0 + POWER.c 155 {return INIT_ADDIN_APPLICATION(isAppli, OptionNum);} + 00000000 D301 MOV.L L383+2,R3 ; _INIT_ADDIN_APPLICATION + 00000002 432B JMP @R3 + 00000004 0009 NOP + 00000006 L383: + 00000006 0000 .DATA.W 0 + 00000008 <00000000> .DATA.L _INIT_ADDIN_APPLICATION + POWER.c 156 #pragma section + POWER.c 157 +C 00000000 _sc003B: ; static: sc003B + 00000000 D201D00242 .DATA.L H'D201D002,H'422B0009,H'80010070,H'0000003B + 2B00098001 + 0070000000 + 3B + 00000010 _sc0D65: ; static: sc0D65 + 00000010 D201D00242 .DATA.L H'D201D002,H'422B0009,H'80010070,H'00000D65 + 2B00098001 + 007000000D + 65 + 00000020 _sc0D67: ; static: sc0D67 + 00000020 D201D00242 .DATA.L H'D201D002,H'422B0009,H'80010070,H'00000D67 + 2B00098001 + 007000000D + 67 + 00000030 _sc0D64: ; static: sc0D64 + 00000030 D201D00242 .DATA.L H'D201D002,H'422B0009,H'80010070,H'00000D64 + 2B00098001 + 007000000D + 64 + 00000040 _sc0015: ; static: sc0015 + 00000040 D201D00242 .DATA.L H'D201D002,H'422B0009,H'80010070,H'00000015 + 2B00098001 + 0070000000 + 15 + 00000050 _sc06C4: ; static: sc06C4 + 00000050 D201D00242 .DATA.L H'D201D002,H'422B0009,H'80010070,H'000006C4 + 2B00098001 + 0070000006 + C4 + 00000060 _sc0160: ; static: sc0160 + 00000060 D201D00242 .DATA.L H'D201D002,H'422B0009,H'80010070,H'00000160 + 2B00098001 + 0070000001 + 60 + 00000070 L346: + 00000070 00 .DATA.B H'00 + 00000071 0000000301 .DATAB.B 3,0 + 00 +B_B 00000000 _BR_Size: ; static: BR_Size + 00000000 00000004 .RES.L 1 + + + + + + + + + +SH SERIES C/C++ Compiler (Ver. 6.0C) 10-Oct-2012 15:02:19 PAGE 1 + + +******** STATISTICS INFORMATION ******** + + +********** ERROR INFORMATION *********** + +NUMBER OF ERRORS: 0 +NUMBER OF WARNINGS: 1 + + + + +******* SOURCE LINE INFORMATION ******** + +COMPILED SOURCE LINE: 157 + + + +******* SECTION SIZE INFORMATION ******* + +PROGRAM SECTION (P): 00000234 Byte(s) +PROGRAM SECTION (P_BR_Size): 00000000 Byte(s) +PROGRAM SECTION (P_TOP): 0000000C Byte(s) +CONSTANT SECTION (C): 00000074 Byte(s) +CONSTANT SECTION (C_BR_Size): 00000000 Byte(s) +CONSTANT SECTION (C_TOP): 00000000 Byte(s) +DATA SECTION (D): 00000000 Byte(s) +DATA SECTION (D_BR_Size): 00000000 Byte(s) +DATA SECTION (D_TOP): 00000000 Byte(s) +BSS SECTION (B): 00000000 Byte(s) +BSS SECTION (B_BR_Size): 00000004 Byte(s) +BSS SECTION (B_TOP): 00000000 Byte(s) + + TOTAL PROGRAM SIZE: 000002B8 Byte(s) + + + +********** LABEL INFORMATION *********** + +NUMBER OF EXTERNAL REFERENCE SYMBOLS: 7 +NUMBER OF EXTERNAL DEFINITION SYMBOLS: 17 +NUMBER OF INTERNAL/EXTERNAL SYMBOLS: 44 + + + + + + + + + + + + + + + + + + + + + + +*** COMMAND PARAMETER *** + + + -subcommand=C:\Users\Timo\AppData\Local\Temp\hmkB23E.tmp + diff --git a/Debug/POWER.obj b/Debug/POWER.obj new file mode 100644 index 0000000..fb23acc Binary files /dev/null and b/Debug/POWER.obj differ diff --git a/FXSH_Build.bat b/FXSH_Build.bat new file mode 100644 index 0000000..cd796ca --- /dev/null +++ b/FXSH_Build.bat @@ -0,0 +1,22 @@ +@echo off +rem Do not edit! This batch file is created by CASIO fx-9860G SDK. + + +if exist POWER.G1A del POWER.G1A + +cd debug +if exist FXADDINror.bin del FXADDINror.bin +"G:\Casio SDK\OS\SH\Bin\Hmake.exe" Addin.mak +cd .. +if not exist debug\FXADDINror.bin goto error + +"G:\Casio SDK\Tools\MakeAddinHeader363.exe" "G:\Casio SDK\Projekte\Battery" +if not exist POWER.G1A goto error +echo Build has completed. +goto end + +:error +echo Build was not successful. + +:end + diff --git a/INIT/CasioRAM.mem b/INIT/CasioRAM.mem new file mode 100644 index 0000000..6240afb Binary files /dev/null and b/INIT/CasioRAM.mem differ diff --git a/INIT/CasioRAMCPU.mem b/INIT/CasioRAMCPU.mem new file mode 100644 index 0000000..fd09ac7 Binary files /dev/null and b/INIT/CasioRAMCPU.mem differ diff --git a/MainIcon.bmp b/MainIcon.bmp new file mode 100644 index 0000000..3fe372c Binary files /dev/null and b/MainIcon.bmp differ diff --git a/POWER.G1A b/POWER.G1A new file mode 100644 index 0000000..e0ea66b Binary files /dev/null and b/POWER.G1A differ diff --git a/POWER.c b/POWER.c new file mode 100644 index 0000000..264f22b --- /dev/null +++ b/POWER.c @@ -0,0 +1,157 @@ +#include "fxlib.h" + +// instant syscalls (fx-9860) +#define SCA 0xD201D002 +#define SCB 0x422B0009 +#define SCE 0x80010070 +typedef void(*sc_vpuc)(unsigned char*); +typedef int(*sc_iv)(void); +typedef int(*sc_i2pui)( unsigned int*, unsigned int* ); +typedef int(*sc_i4pui)( unsigned int*, unsigned int*, unsigned int*, unsigned int* ); +typedef int(*sc_i2puc2pus)( unsigned char*, unsigned char*, unsigned short*, unsigned short* ); +typedef int(*sc_iipci)( int, unsigned char*, int ); +const unsigned int sc003B[] = { SCA, SCB, SCE, 0x003B }; +#define RTC_GetTicks (*(sc_iv)sc003B) +const unsigned int sc0D65[] = { SCA, SCB, SCE, 0x0D65 }; +#define InputDateMonth (*(sc_i2pui)sc0D65) +const unsigned int sc0D67[] = { SCA, SCB, SCE, 0x0D67 }; +#define InputDateYear (*(sc_i2pui)sc0D67) +const unsigned int sc0D64[] = { SCA, SCB, SCE, 0x0D64 }; +#define InputDate (*(sc_i4pui)sc0D64) +const unsigned int sc0015[] = { SCA, SCB, SCE, 0x0015 }; +#define GlibGetOSVersionInfo (*(sc_i2puc2pus)sc0015) +const unsigned int sc06C4[] = { SCA, SCB, SCE, 0x06C4 }; +#define KBD_PRGM_GetKey (*(sc_vpuc)sc06C4) +const unsigned int sc0160[] = { SCA, SCB, SCE, 0x0160 }; +#define LongToAsc (*(sc_iipci)sc0160) +// instant syscalls + +// for fx9860 only! +#define PORT_E_DR 0xA4000128 + +// +#define OS202GII2 0x02020000 +// +char IsSlim(){ + if ( ( OSVersionAsInt() & 0xFFFF0000 ) == OS202GII2 ) return 0; + else return !( *(char*)PORT_E_DR & 0x08 ); +} +// +char IsSD(){ + return ( *(char*)PORT_E_DR & 0x01 ); +} + +// +int IsEmulator(){ + return !( *(int*)0x8000FFD0 || *(int*)0x8000FFD4 ); +} + +#define OS102 0x01020000 +#define OS103 0x01030000 +#define OS104 0x01040000 +#define OS105 0x01050000 +#define OS1051 0x01051000 +#define OS110 0x01100000 +#define OS111 0x01110000 +#define OS200 0x02000300 +#define OS200slim 0x02000100 +#define OS200GII 0x02000200 + +// +int OSVersionAsInt( void ){ +unsigned char mainversion; +unsigned char minorversion; +unsigned short release; +unsigned short build; + GlibGetOSVersionInfo( &mainversion, &minorversion, &release, &build ); + return ( ( mainversion << 24 ) & 0xFF000000 ) | ( ( minorversion << 16 ) & 0x00FF0000 ) | ( release & 0x0000FFFF ); +} + +// +int GetMainBatteryVoltagePointer(){ +unsigned int ea; +unsigned int j; + ea = *(unsigned int*)0x8001007C; + ea = ea + 0x049C*4; + ea = *(unsigned int*)( ea ); + while ( *(unsigned short*)( ea ) != 0xE464 ){ + ea = ea + 2; + }; + ea = ea + 2; + j = *(unsigned char*)( ea + 1 ); + j = 4*j; + j = ( ea + j + 4 ) & 0xFFFFFFFC; + return *(unsigned int*)( j ); +} + +int GetBatteryStatus( int battery, int*firstlevel, int*secondlevel ){ +int (*iGBS)( int ) = 0; // declare an int function pointer +int*battconfig = (int*)0x80000334; + *firstlevel = 0x17F; + *secondlevel = 0x16D; + + iGBS = (int(*)(int))GetMainBatteryVoltagePointer(); + + switch ( OSVersionAsInt() ){ + case OS200 : + if ( *battconfig==0x43444844 ){ + *firstlevel = 0x1A5; + *secondlevel = 0x191; + }; + break; + case OS200GII : + //case OS202GII2 : + break; + case OS200slim : + *firstlevel = 0x2AA; + *secondlevel = 0x288; + break; + }; + if (IsSlim()){ + *firstlevel = 0x2AA; + *secondlevel = 0x288; + } + if (iGBS!=0) return (*iGBS)( battery ); + else return 0; +} + +// the warning level lies around 2/3 full scale +int MainBatteryPercentage( void ){ +int firstlevel, secondlevel; +int i; + if ( IsEmulator() ){ + i = 100; + firstlevel = 70; + secondlevel = 65; + } else i = GetBatteryStatus( 1, &firstlevel, &secondlevel ); + + if (firstlevel > 0 ) return ( 200*i )/(firstlevel*3); + else return 0; +} + +int AddIn_main(int isAppli, unsigned short OptionNum) +{ +// battery = 1 = main (do not use other values) +// firstlevel: warning level +// secondlevel: shutdown level + +int fl = 33, sl = 66, m = 1, batt = 0; + +char c[4] = {0}; + +locate(1,1); + +batt = GetBatteryStatus(m, &fl, &sl); + +Bdisp_DrawLineVRAM(0,0,batt,0); +Bdisp_PutDisp_DD(); +GetKey(&fl); +} +#pragma section _BR_Size +unsigned long BR_Size; +#pragma section +#pragma section _TOP +int InitializeSystem(int isAppli, unsigned short OptionNum) +{return INIT_ADDIN_APPLICATION(isAppli, OptionNum);} +#pragma section + diff --git a/POWER.dlr b/POWER.dlr new file mode 100644 index 0000000..4b45646 --- /dev/null +++ b/POWER.dlr @@ -0,0 +1,13 @@ +[DLSimRunSpace] + +[Breakpoint] +File=G:\Casio SDK\Projekte\Battery\POWER.c +Line=166 +Flags=00001012 +Sublevel=1 + +[Breakpoint] +File=G:\Casio SDK\Projekte\Battery\POWER.c +Line=166 +Flags=00001012 +Sublevel=2 diff --git a/POWER.dlw b/POWER.dlw new file mode 100644 index 0000000..5b01b52 --- /dev/null +++ b/POWER.dlw @@ -0,0 +1,114 @@ +[DLSimWorkSpace] + +[_1] +Type=5 +Order=2 +Top=615 +Left=2235 +Height=4740 +Width=5565 +State=0 +Flags=00000020 +Setting=149:1:POWER.c +OptionA=0 + +[_2] +Type=1 +Order=4 +Top=615 +Left=7800 +Height=4890 +Width=5730 +State=0 +Flags=00000001 +OptionA=15 +OptionB=15 + +[_3] +Type=6 +Order=3 +Top=5310 +Left=7800 +Height=6420 +Width=5535 +State=0 +Flags=00000001 +OptionA=0 + +[_4] +Type=7 +Order=7 +Top=5340 +Left=2220 +Height=3165 +Width=5565 +State=0 +Flags=00000000 +OptionA=0 + +[_5] +Type=8 +Order=5 +Top=8505 +Left=2220 +Height=3225 +Width=5580 +State=0 +Flags=00000000 +OptionA=0 + +[_6] +Type=3 +Order=9 +Top=0 +Left=10788 +Height=6348 +Width=2232 +State=16 +Flags=00000000 +OptionA=0 + +[_7] +Type=2 +Order=8 +Top=6348 +Left=7800 +Height=3588 +Width=5220 +State=16 +Flags=00000000 +OptionA=0 + +[_8] +Type=17 +Order=6 +Top=615 +Left=-15 +Height=11115 +Width=2235 +State=0 +Flags=00000000 +OptionA=0 + +[_9] +Type=15 +Order=1 +Top=5340 +Left=2235 +Height=6345 +Width=5595 +State=0 +Flags=00000000 +OptionA=0 + +[_32] +Type=16 +Order=0 +Top=390 +Left=14385 +Height=13830 +Width=15750 +State=0 +Flags=00000020 +Setting=62:27:POWER.c +OptionA=0 diff --git a/POWER.g1w b/POWER.g1w new file mode 100644 index 0000000..eafbb07 --- /dev/null +++ b/POWER.g1w @@ -0,0 +1,15 @@ +[DLSimProject] +Name=POWER +Version=1.00.0000 +Model=:fx-9860G.dlm +SourcePath=SRC +MemoryPath=INIT +MemCardPath=SDCard + +[Program1] +Program=POWER.G1A +Debug=Debug\FXADDINror.dbg +LoadAddress=80000000:90100000 + +[Files] +SourceFile=:POWER.c diff --git a/README.md b/README.md new file mode 100644 index 0000000..ff1b31e --- /dev/null +++ b/README.md @@ -0,0 +1 @@ +Battery and RTC utility ported from Prizm to fx-9680 GII-2 diff --git a/eActivityIcon.bmp b/eActivityIcon.bmp new file mode 100644 index 0000000..104a2c6 Binary files /dev/null and b/eActivityIcon.bmp differ -- cgit v1.3.1