summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorschneefux <schneefux+commit@schneefux.xyz>2016-06-12 20:05:14 +0200
committerschneefux <schneefux+commit@schneefux.xyz>2016-06-12 20:05:14 +0200
commitdf46fa7b9d2a9e8764957b8665292d67f9b97de9 (patch)
tree9598663d035ab55f597ecc6f33b2b1fbb6982538
downloadfx-battery-master.tar.gz
fx-battery-master.zip
import into gitHEADmaster
-rw-r--r--AddinInfo.txt12
-rw-r--r--Debug/Addin.mak101
-rw-r--r--Debug/FXADDINror.absbin0 -> 6452 bytes
-rw-r--r--Debug/FXADDINror.binbin0 -> 1820 bytes
-rw-r--r--Debug/FXADDINror.dbgbin0 -> 8788 bytes
-rw-r--r--Debug/FXADDINror.fsy67
-rw-r--r--Debug/FXADDINror.map273
-rw-r--r--Debug/POWER.lst665
-rw-r--r--Debug/POWER.objbin0 -> 12980 bytes
-rw-r--r--FXSH_Build.bat22
-rw-r--r--INIT/CasioRAM.membin0 -> 48532 bytes
-rw-r--r--INIT/CasioRAMCPU.membin0 -> 80 bytes
-rw-r--r--MainIcon.bmpbin0 -> 138 bytes
-rw-r--r--POWER.G1Abin0 -> 2332 bytes
-rw-r--r--POWER.c157
-rw-r--r--POWER.dlr13
-rw-r--r--POWER.dlw114
-rw-r--r--POWER.g1w15
-rw-r--r--README.md1
-rw-r--r--eActivityIcon.bmpbin0 -> 106 bytes
20 files changed, 1440 insertions, 0 deletions
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
--- /dev/null
+++ b/Debug/FXADDINror.abs
Binary files differ
diff --git a/Debug/FXADDINror.bin b/Debug/FXADDINror.bin
new file mode 100644
index 0000000..3b7f04d
--- /dev/null
+++ b/Debug/FXADDINror.bin
Binary files differ
diff --git a/Debug/FXADDINror.dbg b/Debug/FXADDINror.dbg
new file mode 100644
index 0000000..6d16424
--- /dev/null
+++ b/Debug/FXADDINror.dbg
Binary files 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
--- /dev/null
+++ b/Debug/POWER.obj
Binary files 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
--- /dev/null
+++ b/INIT/CasioRAM.mem
Binary files differ
diff --git a/INIT/CasioRAMCPU.mem b/INIT/CasioRAMCPU.mem
new file mode 100644
index 0000000..fd09ac7
--- /dev/null
+++ b/INIT/CasioRAMCPU.mem
Binary files differ
diff --git a/MainIcon.bmp b/MainIcon.bmp
new file mode 100644
index 0000000..3fe372c
--- /dev/null
+++ b/MainIcon.bmp
Binary files differ
diff --git a/POWER.G1A b/POWER.G1A
new file mode 100644
index 0000000..e0ea66b
--- /dev/null
+++ b/POWER.G1A
Binary files 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
--- /dev/null
+++ b/eActivityIcon.bmp
Binary files differ