78K0R Assembler W1.31 Date:13 Jun 2010 Page: 1 Command: -c9F0104 -yC:\Program Files\NEC Electronics Tools\DEV -_msgoff inter_asm\loader.asm Para-file: In-file: inter_asm\loader.asm Obj-file: loader.rel Prn-file: loader.prn Assemble list ALNO STNO ADRS OBJECT M I SOURCE STATEMENT 1 1 ; 78K0R C Compiler V2.10 Assembler Source Date:13 Jun 2010 Time:19:31:23 2 2 3 3 ; Command : -c9F0104 -yC:\Program Files\NEC Electronics Tools\DEV -_msgoff -i 4 4 ; renge -iC:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\ 5 5 ; V1.20\inc78k0r -ms -qvjl3wt -sainter_asm -zp -no loader.c 6 6 ; In-file : loader.c 7 7 ; Asm-file : inter_asm\loader.asm 8 8 ; Para-file : 9 9 10 10 $PROCESSOR(9F0104) 11 11 $DEBUG 12 12 $NODEBUGA 13 13 $KANJICODE SJIS 14 14 $TOL_INF 03FH, 0210H, 02H, 00H, 00H, 00H, 00H 15 15 16 16 $DGS FIL_NAM, .file, 099H, 0FFFEH, 03FH, 067H, 01H, 00H 17 17 $DGS AUX_FIL, loader.c 18 18 $DGS MOD_NAM, loader, 00H, 0FFFEH, 00H, 077H, 00H, 00H 19 19 $DGS SEC_NAM, @@BITS, U, U, 00H, 078H, 00H, 00H 20 20 $DGS SEC_NAM, @@CNST, U, U, 00H, 078H, 00H, 00H 21 21 $DGS SEC_NAM, @@R_INIT, U, U, 00H, 078H, 00H, 00H 22 22 $DGS SEC_NAM, @@INIT, U, U, 00H, 078H, 00H, 00H 23 23 $DGS SEC_NAM, @@DATA, U, U, 00H, 078H, 00H, 00H 24 24 $DGS SEC_NAM, @@R_INIS, U, U, 00H, 078H, 00H, 00H 25 25 $DGS SEC_NAM, @@INIS, U, U, 00H, 078H, 00H, 00H 26 26 $DGS SEC_NAM, @@DATS, U, U, 00H, 078H, 00H, 00H 27 27 $DGS SEC_NAM, LDR_CNSL, U, U, 00H, 078H, 00H, 00H 28 28 $DGS SEC_NAM, @@RLINIT, U, U, 00H, 078H, 00H, 00H 29 29 $DGS SEC_NAM, @@INITL, U, U, 00H, 078H, 00H, 00H 30 30 $DGS SEC_NAM, @@DATAL, U, U, 00H, 078H, 00H, 00H 31 31 $DGS SEC_NAM, @@CALT, U, U, 00H, 078H, 00H, 00H 32 32 $DGS SEC_NAM, LDR_CODE, U, U, 00H, 078H, 00H, 00H 33 33 $DGS SEC_NAM, LDR_CODL, U, U, 00H, 078H, 00H, 00H 34 34 $DGS SEC_NAM, @@BASE, U, U, 00H, 078H, 00H, 00H 35 35 $DGS ENM_TAG, _pwr_state_, 00H, 0FFFEH, 0AH, 0FH, 01H, 00H 36 36 $DGS AUX_TAG, 01H, 01EH 37 37 $DGS MEB_ENM, _OFF_TRIG, 00H, 0FFFFH, 04H, 010H, 00H, 00H 38 38 $DGS MEB_ENM, _OFF, 01H, 0FFFFH, 04H, 010H, 00H, 00H 39 39 $DGS MEB_ENM, _ON_TRIG, 02H, 0FFFFH, 04H, 010H, 00H, 00H 40 40 $DGS MEB_ENM, _ON, 03H, 0FFFFH, 04H, 010H, 00H, 00H 41 41 $DGS MEB_ENM, _SLEEP_TRIG, 04H, 0FFFFH, 04H, 010H, 00H, 00H 42 42 $DGS MEB_ENM, _SLEEP, 05H, 0FFFFH, 04H, 010H, 00H, 00H 43 43 $DGS MEB_ENM, _BT_CHARGE, 06H, 0FFFFH, 04H, 010H, 00H, 00H 44 44 $DGS END_STR, .eos, 01H, 0FFFFH, 00H, 066H, 01H, 00H 45 45 $DGS AUX_EOS, 013H, 01H 46 46 $DGS ENM_TAG, _poweron_reason_, 00H, 0FFFEH, 0AH, 0FH, 01H, 00H 47 47 $DGS AUX_TAG, 01H, 025H 48 48 $DGS MEB_ENM, _NONE, 00H, 0FFFFH, 04H, 010H, 00H, 00H 49 49 $DGS MEB_ENM, _PWSW, 01H, 0FFFFH, 04H, 010H, 00H, 00H 50 50 $DGS MEB_ENM, _RTC_ALARM, 02H, 0FFFFH, 04H, 010H, 00H, 00H 51 51 $DGS END_STR, .eos, 01H, 0FFFFH, 00H, 066H, 01H, 00H 52 52 $DGS AUX_EOS, 01EH, 01H 53 53 $DGS ENM_TAG, _model_, 00H, 0FFFEH, 0AH, 0FH, 01H, 00H 54 54 $DGS AUX_TAG, 01H, 02FH 55 55 $DGS MEB_ENM, _MODEL_JIKKI, 00H, 0FFFFH, 04H, 010H, 00H, 00H 56 56 $DGS MEB_ENM, _MODEL_TS_BOARD, 01H, 0FFFFH, 04H, 010H, 00H, 00H 57 57 $DGS MEB_ENM, _MODEL_SHIROBAKO, 02H, 0FFFFH, 04H, 010H, 00H, 00H 58 58 $DGS MEB_ENM, _MODEL_RESERVED1, 03H, 0FFFFH, 04H, 010H, 00H, 00H 59 59 $DGS MEB_ENM, _MODEL_RESERVED2, 04H, 0FFFFH, 04H, 010H, 00H, 00H 60 60 $DGS MEB_ENM, _MODEL_RESERVED3, 05H, 0FFFFH, 04H, 010H, 00H, 00H 61 61 $DGS END_STR, .eos, 01H, 0FFFFH, 00H, 066H, 01H, 00H 62 62 $DGS AUX_EOS, 025H, 01H 63 63 $DGS STR_STR, .0fake, 00H, 0FFFEH, 08H, 0AH, 01H, 00H 64 64 $DGS AUX_TAG, 04H, 041H 65 65 $DGS MEB_STR, _pwr_state, 00H, 0FFFFH, 0AH, 08H, 01H, 00H 66 66 $DGS AUX_STR, 013H, 00H, 01H, 00H, 00H, 00H, 00H, 00H 67 67 $DGS MEB_STR, _poweron_reason, 01H, 0FFFFH, 0AH, 08H, 01H, 00H 68 68 $DGS AUX_STR, 01EH, 00H, 01H, 00H, 00H, 00H, 00H, 00H 69 69 $DGS BIT_FLD, _dipsw0, 010H, 0FFFFH, 0CH, 012H, 01H, 00H 70 70 $DGS AUX_BIT, 00H, 01H 71 71 $DGS BIT_FLD, _dipsw1, 011H, 0FFFFH, 0CH, 012H, 01H, 00H 72 72 $DGS AUX_BIT, 00H, 01H 73 73 $DGS BIT_FLD, _dipsw2, 012H, 0FFFFH, 0CH, 012H, 01H, 00H 74 74 $DGS AUX_BIT, 00H, 01H 75 75 $DGS BIT_FLD, _reboot, 013H, 0FFFFH, 0CH, 012H, 01H, 00H 76 76 $DGS AUX_BIT, 00H, 01H 77 77 $DGS MEB_STR, _model, 03H, 0FFFFH, 0AH, 08H, 01H, 00H 78 78 $DGS AUX_STR, 025H, 00H, 01H, 00H, 00H, 00H, 00H, 00H 79 79 $DGS END_STR, .eos, 04H, 0FFFFH, 00H, 066H, 01H, 00H 80 80 $DGS AUX_EOS, 02FH, 04H 81 81 $DGS GLV_SYM, _main, U, U, 01H, 026H, 01H, 02H 82 82 $DGS AUX_FUN, 00H, U, U, 073H, 00H, 00H 83 83 $DGS BEG_FUN, ??bf_main, U, U, 00H, 065H, 01H, 00H 84 84 $DGS AUX_BEG, 045H, 02H, 045H 85 85 $DGS BEG_BLK, ??bb00_main, U, U, 00H, 064H, 01H, 00H 86 86 $DGS AUX_BEG, 03H, 00H, 047H 87 87 $DGS BEG_BLK, ??bb01_main, U, U, 00H, 064H, 01H, 00H 88 88 $DGS AUX_BEG, 06H, 00H, 04BH 89 89 $DGS END_BLK, ??eb01_main, U, U, 00H, 064H, 01H, 00H 90 90 $DGS AUX_END, 08H 91 91 $DGS BEG_BLK, ??bb02_main, U, U, 00H, 064H, 01H, 00H 92 92 $DGS AUX_BEG, 0AH, 00H, 04FH 93 93 $DGS END_BLK, ??eb02_main, U, U, 00H, 064H, 01H, 00H 94 94 $DGS AUX_END, 015H 95 95 $DGS BEG_BLK, ??bb03_main, U, U, 00H, 064H, 01H, 00H 96 96 $DGS AUX_BEG, 017H, 00H, 055H 97 97 $DGS REG_VAR, _pwup_delay0, 06H, 0FFFFH, 010CH, 04H, 01H, 00H 98 98 $DGS AUX_STR, 00H, 018H, 01H, 00H, 00H, 00H, 00H, 00H 99 99 $DGS REG_VAR, _pwup_delay1, 07H, 0FFFFH, 010CH, 04H, 01H, 00H 100 100 $DGS AUX_STR, 00H, 019H, 01H, 00H, 00H, 00H, 00H, 00H 101 101 $DGS BEG_BLK, ??bb04_main, U, U, 00H, 064H, 01H, 00H 102 102 $DGS AUX_BEG, 01CH, 00H, 057H 103 103 $DGS BEG_BLK, ??bb05_main, U, U, 00H, 064H, 01H, 00H 104 104 $DGS AUX_BEG, 01FH, 00H, 05FH 105 105 $DGS END_BLK, ??eb05_main, U, U, 00H, 064H, 01H, 00H 106 106 $DGS AUX_END, 021H 107 107 $DGS END_BLK, ??eb04_main, U, U, 00H, 064H, 01H, 00H 108 108 $DGS AUX_END, 023H 109 109 $DGS END_BLK, ??eb03_main, U, U, 00H, 064H, 01H, 00H 110 110 $DGS AUX_END, 027H 111 111 $DGS BEG_BLK, ??bb06_main, U, U, 00H, 064H, 01H, 00H 112 112 $DGS AUX_BEG, 02AH, 00H, 065H 113 113 $DGS REG_VAR, _i, 06H, 0FFFFH, 010CH, 04H, 01H, 00H 114 114 $DGS AUX_STR, 00H, 02BH, 01H, 00H, 00H, 00H, 00H, 00H 115 115 $DGS REG_VAR, _comp, 07H, 0FFFFH, 010CH, 04H, 01H, 00H 116 116 $DGS AUX_STR, 00H, 02CH, 01H, 00H, 00H, 00H, 00H, 00H 117 117 $DGS BEG_BLK, ??bb07_main, U, U, 00H, 064H, 01H, 00H 118 118 $DGS AUX_BEG, 031H, 00H, 069H 119 119 $DGS END_BLK, ??eb07_main, U, U, 00H, 064H, 01H, 00H 120 120 $DGS AUX_END, 033H 121 121 $DGS BEG_BLK, ??bb08_main, U, U, 00H, 064H, 01H, 00H 122 122 $DGS AUX_BEG, 036H, 00H, 00H 123 123 $DGS END_BLK, ??eb08_main, U, U, 00H, 064H, 01H, 00H 124 124 $DGS AUX_END, 03AH 125 125 $DGS END_BLK, ??eb06_main, U, U, 00H, 064H, 01H, 00H 126 126 $DGS AUX_END, 03BH 127 127 $DGS END_BLK, ??eb00_main, U, U, 00H, 064H, 01H, 00H 128 128 $DGS AUX_END, 03FH 129 129 $DGS END_FUN, ??ef_main, U, U, 00H, 065H, 01H, 00H 130 130 $DGS AUX_END, 040H 131 131 $DGS GLV_SYM, _int_kr, U, U, 0E001H, 026H, 01H, 02H 132 132 $DGS AUX_FUN, 00H, U, U, 079H, 00H, 00H 133 133 $DGS BEG_FUN, ??bf_int_kr, U, U, 00H, 065H, 01H, 00H 134 134 $DGS AUX_BEG, 08CH, 00H, 079H 135 135 $DGS END_FUN, ??ef_int_kr, U, U, 00H, 065H, 01H, 00H 136 136 $DGS AUX_END, 02H 137 137 $DGS GLV_SYM, _intp4, U, U, 0E001H, 026H, 01H, 02H 138 138 $DGS AUX_FUN, 00H, U, U, 07FH, 00H, 00H 139 139 $DGS BEG_FUN, ??bf_intp4, U, U, 00H, 065H, 01H, 00H 140 140 $DGS AUX_BEG, 095H, 00H, 07FH 141 141 $DGS END_FUN, ??ef_intp4, U, U, 00H, 065H, 01H, 00H 142 142 $DGS AUX_END, 02H 143 143 $DGS GLV_SYM, _intp5, U, U, 0E001H, 026H, 01H, 02H 144 144 $DGS AUX_FUN, 00H, U, U, 085H, 00H, 00H 145 145 $DGS BEG_FUN, ??bf_intp5, U, U, 00H, 065H, 01H, 00H 146 146 $DGS AUX_BEG, 09DH, 00H, 085H 147 147 $DGS END_FUN, ??ef_intp5, U, U, 00H, 065H, 01H, 00H 148 148 $DGS AUX_END, 02H 149 149 $DGS GLV_SYM, _hdwinit, U, U, 01H, 026H, 01H, 02H 150 150 $DGS AUX_FUN, 00H, U, U, 08BH, 00H, 00H 151 151 $DGS BEG_FUN, ??bf_hdwinit, U, U, 00H, 065H, 01H, 00H 152 152 $DGS AUX_BEG, 0A4H, 00H, 08BH 153 153 $DGS END_FUN, ??ef_hdwinit, U, U, 00H, 065H, 01H, 00H 154 154 $DGS AUX_END, 015H 155 155 $DGS STA_SYM, _hdwinit2, U, U, 01H, 03H, 01H, 02H 156 156 $DGS AUX_FUN, 00H, U, U, 099H, 00H, 00H 157 157 $DGS BEG_FUN, ??bf_hdwinit2, U, U, 00H, 065H, 01H, 00H 158 158 $DGS AUX_BEG, 0BCH, 00H, 08FH 159 159 $DGS BEG_BLK, ??bb00_hdwinit2, U, U, 00H, 064H, 01H, 00H 160 160 $DGS AUX_BEG, 04H, 00H, 093H 161 161 $DGS END_BLK, ??eb00_hdwinit2, U, U, 00H, 064H, 01H, 00H 162 162 $DGS AUX_END, 019H 163 163 $DGS BEG_BLK, ??bb01_hdwinit2, U, U, 00H, 064H, 01H, 00H 164 164 $DGS AUX_BEG, 01BH, 00H, 00H 165 165 $DGS END_BLK, ??eb01_hdwinit2, U, U, 00H, 064H, 01H, 00H 166 166 $DGS AUX_END, 01FH 167 167 $DGS END_FUN, ??ef_hdwinit2, U, U, 00H, 065H, 01H, 00H 168 168 $DGS AUX_END, 0D1H 169 169 $DGS GLV_SYM, _WDT_Restart, U, U, 01H, 02H, 01H, 02H 170 170 $DGS AUX_FUN, 00H, U, U, 00H, 00H, 00H 171 171 $DGS GLV_SYM, _system_status, U, U, 08H, 02H, 01H, 00H 172 172 $DGS AUX_STR, 02FH, 00H, 04H, 00H, 00H, 00H, 00H, 00H 173 173 $DGS GLV_SYM, _vreg_ctr, U, U, 0CH, 02H, 01H, 03H 174 174 $DGS AUX_STR, 00H, 00H, 01H, 01H, 00H, 00H, 00H, 00H 175 175 $DGS GLV_SYM, _firm_restore, U, U, 0CH, 02H, 01H, 02H 176 176 $DGS AUX_FUN, 00H, U, U, 00H, 00H, 00H 177 177 $DGS GLV_SYM, _main_loop, U, U, 01H, 02H, 01H, 02H 178 178 $DGS AUX_FUN, 00H, U, U, 00H, 00H, 00H 179 179 180 180 EXTRN _WDT_Restart 181 181 EXTRN _system_status 182 182 EXTRN _vreg_ctr 183 183 EXTRN _firm_restore 184 184 EXTRN _main_loop 185 185 PUBLIC _main 186 186 PUBLIC _int_kr 187 187 PUBLIC _intp4 188 188 PUBLIC _intp5 189 189 PUBLIC _hdwinit 190 190 191 191 ----- @@BITS BSEG 192 192 193 193 ----- @@CNST CSEG MIRRORP 194 194 195 195 ----- @@R_INIT CSEG UNIT64KP 196 196 197 197 ----- @@INIT DSEG BASEP 198 198 199 199 ----- @@DATA DSEG BASEP 200 200 201 201 ----- @@R_INIS CSEG UNIT64KP 202 202 203 203 ----- @@INIS DSEG SADDRP 204 204 205 205 ----- @@DATS DSEG SADDRP 206 206 207 207 ----- LDR_CNSL CSEG PAGE64KP 208 208 209 209 ----- @@RLINIT CSEG UNIT64KP 210 210 211 211 ----- @@INITL DSEG UNIT64KP 212 212 213 213 ----- @@DATAL DSEG UNIT64KP 214 214 215 215 ----- @@CALT CSEG CALLT0 216 216 217 217 ; line 1 : /* ======================================================== 218 218 ; line 2 : MCU CTR BSR 219 219 ; line 3 : 2009/03/30 220 220 ; line 4 : 開発技術部 藤田 221 221 ; line 5 : 222 222 ; line 6 : ブートローダー部 223 223 ; line 7 : ホストの通信と、自己書き換え、ファームのチェックを行う。 224 224 ; line 8 : 225 225 ; line 9 : ======================================================== */ 226 226 ; line 10 : #pragma SFR 227 227 ; line 11 : #pragma di 228 228 ; line 12 : #pragma ei 229 229 ; line 13 : #pragma nop 230 230 ; line 14 : #pragma stop 231 231 ; line 15 : #pragma halt 232 232 ; line 16 : #pragma opc 233 233 ; line 17 : 234 234 ; line 18 : 235 235 ; line 19 : #include "incs_loader.h" 236 236 ; line 20 : 237 237 ; line 21 : #include "fsl.h" 238 238 ; line 22 : #include "fsl_user.h" 239 239 ; line 23 : 240 240 ; line 24 : #include "i2c_ctr.h" 241 241 ; line 25 : #include "i2c_mcu.h" 242 242 ; line 26 : #include "pm.h" 243 243 ; line 27 : #include "rtc.h" 244 244 ; line 28 : 245 245 ; line 29 : #include "reboot.h" 246 246 ; line 30 : 247 247 ; line 31 : 248 248 ; line 32 : // ======================================================== 249 249 ; line 33 : #if (FSL_DATA_BUFFER_SIZE>0) 250 250 ; line 34 : fsl_u08 fsl_data_buffer[FSL_DATA_BUFFER_SIZE]; 251 251 ; line 35 : #endif 252 252 ; line 36 : 253 253 ; line 37 : 254 254 ; line 38 : 255 255 ; line 39 : #ifdef FSL_INT_BACKUP 256 256 ; line 40 : static fsl_u08 fsl_MK0L_bak_u08; /* if (interrupt back 257 257 ; up required) */ 258 258 ; line 41 : static fsl_u08 fsl_MK0H_bak_u08; /* { 259 259 ; */ 260 260 ; line 42 : static fsl_u08 fsl_MK1L_bak_u08; /* reserve space fo 261 261 ; r backup information */ 262 262 ; line 43 : static fsl_u08 fsl_MK1H_bak_u08; /* of interrupt mas 263 263 ; k flags */ 264 264 ; line 44 : static fsl_u08 fsl_MK2L_bak_u08; /* 265 265 ; */ 266 266 ; line 45 : static fsl_u08 fsl_MK2H_bak_u08; /* } 267 267 ; */ 268 268 ; line 46 : #endif 269 269 ; line 47 : 270 270 ; line 48 : 271 271 ; line 49 : 272 272 ; line 50 : // magic.c の記述と違わないように注意! 273 273 ; line 51 : #define MGC_LOAD 0x0FF6 274 274 ; line 52 : #define MGC_FOOT 0x4FF6 275 275 ; line 53 : 276 276 ; line 54 : 277 277 ; line 55 : 278 278 ; line 56 : // ======================================================== 279 279 ; line 57 : void FSL_Open( void ); 280 280 ; line 58 : void FSL_Close( void ); 281 281 ; line 59 : void hdwinit( void ); 282 282 ; line 60 : void power_save( ); 283 283 ; line 61 : static void hdwinit2( ); 284 284 ; line 62 : 285 285 ; line 63 : extern void main_loop( ); 286 286 ; line 64 : 287 287 ; line 65 : 288 288 ; line 66 : 289 289 ; line 67 : // ======================================================== 290 290 ; line 68 : void main( ) 291 291 ; line 69 : { 292 292 293 293 ----- LDR_CODE CSEG BASE 294 294 00000 _main: 295 295 $DGL 1,65 296 296 00000 C7 push hl ;[INF] 1, 1 297 297 00001 ??bf_main: 298 298 ; line 70 : while( 1 ) 299 299 00001 ?L0003: 300 300 ; line 71 : { 301 301 00001 ??bb00_main: 302 302 ; line 72 : WDT_Restart( ); 303 303 $DGL 0,4 304 304 00001 RFD0000 call !_WDT_Restart ;[INF] 3, 3 305 305 ; line 73 : if( RTCEN ) 306 306 $DGL 0,5 307 307 00004 C7 push hl ;[INF] 1, 1 308 308 00005 36F000 movw hl,#0F0H ; 240 ;[INF] 3, 1 309 309 00008 71F4 mov1 CY,[hl].7 ;[INF] 2, 1 310 310 0000A C6 pop hl ;[INF] 1, 1 311 311 0000B DE06 bnc $?L0005 ;[INF] 2, 4 312 312 ; line 74 : { 313 313 0000D ??bb01_main: 314 314 ; line 75 : system_status.reboot = 1; 315 315 $DGL 0,7 316 316 0000D R71300200 set1 !_system_status+2.3 ;[INF] 4, 2 317 317 00011 ??eb01_main: 318 318 ; line 76 : } 319 319 $DGL 0,8 320 320 00011 EF25 br $?L0008 ;[INF] 2, 3 321 321 00013 ?L0005: 322 322 ; line 77 : else if( ( RESF & 0x10 ) != 0) // WDRF,WDTでリセット 323 323 $DGL 0,9 324 324 00013 5110 mov a,#010H ; 16 ;[INF] 2, 1 325 325 00015 5FA8FF and a,!RESF ;[INF] 3, 1 326 326 00018 D1 cmp0 a ;[INF] 1, 1 327 327 00019 DD0D bz $?L0007 ;[INF] 2, 4 328 328 ; line 78 : { 329 329 0001B ??bb02_main: 330 330 ; line 79 : system_status.reboot = 1; 331 331 $DGL 0,11 332 332 0001B R71300200 set1 !_system_status+2.3 ;[INF] 4, 2 333 333 ; line 80 : #ifdef _PMIC_TWL_ 334 334 ; line 81 : // 暴走してしまうので再起動させる 335 335 ; line 82 : PM_reset_ast(); 336 336 ; line 83 : /// hdwinit2ないでリセット解除される。続きに続行して 337 337 ; よい(頭痛が痛い的) 338 338 ; line 84 : #endif 339 339 ; line 85 : vreg_ctr[ VREG_C_MCU_STATUS ] |= REG_BIT_STATUS_WDT_ 340 340 ; RESET; 341 341 $DGL 0,17 342 342 0001F R71100200 set1 !_vreg_ctr+2.1 ;[INF] 4, 2 343 343 ; line 86 : // set_irq( VREG_C_IRQ0, REG_BIT_IRQ_WDT_RESET ); 344 344 ; line 87 : // ↑I2Cの初期化後に行う 345 345 ; line 88 : hdwinit2( ); 346 346 $DGL 0,20 347 347 00023 RFD8700 call !_hdwinit2 ;[INF] 3, 3 348 348 00026 ??eb02_main: 349 349 ; line 89 : } 350 350 $DGL 0,21 351 351 00026 EF10 br $?L0008 ;[INF] 2, 3 352 352 00028 ?L0007: 353 353 ; line 90 : else 354 354 ; line 91 : { 355 355 00028 ??bb03_main: 356 356 ; line 92 : u8 pwup_delay0 = 0; 357 357 $DGL 0,24 358 358 00028 360000 movw hl,#00H ; 0 ;[INF] 3, 1 359 359 ; line 93 : u8 pwup_delay1 = 0; 360 360 ; line 94 : 361 361 ; line 95 : do 362 362 0002B ?L0009: 363 363 ; line 96 : { // 電池接続時、16ms待ってみる(チ 364 364 ; ャタリング対策) 365 365 0002B ??bb04_main: 366 366 ; line 97 : pwup_delay0 += 1; 367 367 $DGL 0,29 368 368 0002B 86 inc l ;[INF] 1, 1 369 369 ; line 98 : do 370 370 0002C ?L0012: 371 371 ; line 99 : { 372 372 0002C ??bb05_main: 373 373 ; line 100 : pwup_delay1 += 1; 374 374 $DGL 0,32 375 375 0002C 87 inc h ;[INF] 1, 1 376 376 0002D ??eb05_main: 377 377 ; line 101 : } 378 378 ; line 102 : while( pwup_delay1 != 0 ); // u16にするとコ 379 379 ; ンパイラが怒るんだが…。 380 380 $DGL 0,34 381 381 0002D 67 mov a,h ;[INF] 1, 1 382 382 0002E D1 cmp0 a ;[INF] 1, 1 383 383 0002F DFFB bnz $?L0012 ;[INF] 2, 4 384 384 00031 ??eb04_main: 385 385 ; line 103 : } 386 386 ; line 104 : while( pwup_delay0 != 0 ); 387 387 $DGL 0,36 388 388 00031 66 mov a,l ;[INF] 1, 1 389 389 00032 D1 cmp0 a ;[INF] 1, 1 390 390 00033 DFF6 bnz $?L0009 ;[INF] 2, 4 391 391 ; line 105 : 392 392 ; line 106 : hdwinit2( ); 393 393 $DGL 0,38 394 394 00035 RFD8700 call !_hdwinit2 ;[INF] 3, 3 395 395 00038 ??eb03_main: 396 396 ; line 107 : } 397 397 00038 ?L0008: 398 398 ; line 108 : 399 399 ; line 109 : // ファームの整合性チェック // 400 400 ; line 110 : { 401 401 00038 ??bb06_main: 402 402 ; line 111 : u8 i; 403 403 ; line 112 : u8 comp = 0; 404 404 $DGL 0,44 405 405 00038 360000 movw hl,#00H ; 0 ;[INF] 3, 1 406 406 ; line 113 : 407 407 ; line 114 : // ローダーと本体は同じバージョンか? 408 408 ; line 115 : /// 次へのアップデートの途中で終わってないか? 409 409 ; line 116 : for( i = 0; i < sizeof( __TIME__ ); i++ ) // si 410 410 ; zeof( __TIME__ ) = 8 らし 411 411 $DGL 0,48 412 412 0003B ?L0015: 413 413 0003B 66 mov a,l ;[INF] 1, 1 414 414 0003C 4C09 cmp a,#09H ; 9 ;[INF] 2, 1 415 415 0003E DE23 bnc $?L0016 ;[INF] 2, 4 416 416 ; line 117 : { 417 417 00040 ??bb07_main: 418 418 ; line 118 : comp += ( *( __far u8 * )( MGC_LOAD + i ) == *( 419 419 ; u8 * )( MGC_FOOT + i ) ) ? 0 : 1; 420 420 $DGL 0,50 421 421 00040 17 movw ax,hl ;[INF] 1, 1 422 422 00041 F1 clrb a ;[INF] 1, 1 423 423 00042 04F60F addw ax,#0FF6H ; 4086 ;[INF] 3, 1 424 424 00045 C1 push ax ;[INF] 1, 1 425 425 00046 317B sar a,7 ;[INF] 2, 1 426 426 00048 9EFD mov ES,a ;[INF] 2, 1 427 427 0004A C4 pop de ;[INF] 1, 1 428 428 0004B 1189 mov a,ES:[de] ;[INF] 2, 2 429 429 0004D 72 mov c,a ;[INF] 1, 1 430 430 0004E 17 movw ax,hl ;[INF] 1, 1 431 431 0004F F1 clrb a ;[INF] 1, 1 432 432 00050 04F64F addw ax,#04FF6H ; 20470 ;[INF] 3, 1 433 433 00053 14 movw de,ax ;[INF] 1, 1 434 434 00054 89 mov a,[de] ;[INF] 1, 1 435 435 00055 6142 cmp c,a ;[INF] 2, 1 436 436 00057 DF03 bnz $?L0018 ;[INF] 2, 4 437 437 00059 F6 clrw ax ;[INF] 1, 1 438 438 0005A EF01 br $?L0019 ;[INF] 2, 3 439 439 0005C ?L0018: 440 440 0005C E6 onew ax ;[INF] 1, 1 441 441 0005D ?L0019: 442 442 0005D 60 mov a,x ;[INF] 1, 1 443 443 0005E 6107 add h,a ;[INF] 2, 1 444 444 00060 ??eb07_main: 445 445 ; line 119 : } 446 446 $DGL 0,51 447 447 00060 86 inc l ;[INF] 1, 1 448 448 00061 EFD8 br $?L0015 ;[INF] 2, 3 449 449 00063 ?L0016: 450 450 ; line 120 : 451 451 ; line 121 : if( comp != 0 ) 452 452 $DGL 0,53 453 453 00063 67 mov a,h ;[INF] 1, 1 454 454 00064 D1 cmp0 a ;[INF] 1, 1 455 455 00065 61E8 skz ;[INF] 2, 1 456 456 ; line 122 : { 457 457 00067 ??bb08_main: 458 458 ; line 123 : // ファームリストアを試みる 459 459 ; line 124 : firm_restore( ); 460 460 $DGL 0,56 461 461 00067 RFD0000 call !_firm_restore ;[INF] 3, 3 462 462 0006A ??eb08_main: 463 463 ; line 125 : // 帰ってこない。リセットをかける。 464 464 ; line 126 : } 465 465 0006A ?L0020: 466 466 0006A ??eb06_main: 467 467 ; line 127 : } 468 468 ; line 128 : 469 469 ; line 129 : // 通常運転 470 470 ; line 130 : main_loop( ); 471 471 $DGL 0,62 472 472 0006A RFD0000 call !_main_loop ;[INF] 3, 3 473 473 0006D ??eb00_main: 474 474 ; line 131 : } 475 475 $DGL 0,63 476 476 0006D EF92 br $?L0003 ;[INF] 2, 3 477 477 ; line 132 : } 478 478 $DGL 0,64 479 479 0006F ??ef_main: 480 480 0006F C6 pop hl ;[INF] 1, 1 481 481 00070 D7 ret ;[INF] 1, 6 482 482 00071 ??ee_main: 483 483 ; line 133 : 484 484 ; line 134 : 485 485 ; line 135 : 486 486 ; line 136 : /* ======================================================== 487 487 ; line 137 : キーリターン割り込み 488 488 ; line 138 : ======================================================== */ 489 489 ; line 139 : __interrupt void int_kr( ) 490 490 ; line 140 : { 491 491 492 492 ----- @@BASE CSEG BASE 493 493 00000 _int_kr: 494 494 $DGL 1,115 495 495 00000 ??bf_int_kr: 496 496 ; line 141 : } 497 497 $DGL 0,2 498 498 00000 ??ef_int_kr: 499 499 00000 61FC reti ;[INF] 2, 6 500 500 00002 ??ee_int_kr: 501 501 ; line 142 : 502 502 ; line 143 : 503 503 ; line 144 : 504 504 ; line 145 : /* ======================================================== 505 505 ; line 146 : ext dc 506 506 ; line 147 : ======================================================== */ 507 507 ; line 148 : __interrupt void intp4( ) 508 508 ; line 149 : { 509 509 00002 _intp4: 510 510 $DGL 1,121 511 511 00002 ??bf_intp4: 512 512 ; line 150 : } 513 513 $DGL 0,2 514 514 00002 ??ef_intp4: 515 515 00002 61FC reti ;[INF] 2, 6 516 516 00004 ??ee_intp4: 517 517 ; line 151 : 518 518 ; line 152 : 519 519 ; line 153 : /* ======================================================== 520 520 ; line 154 : shell close 521 521 ; line 155 : ======================================================== */ 522 522 ; line 156 : __interrupt void intp5( ) 523 523 ; line 157 : { 524 524 00004 _intp5: 525 525 $DGL 1,127 526 526 00004 ??bf_intp5: 527 527 ; line 158 : } 528 528 $DGL 0,2 529 529 00004 ??ef_intp5: 530 530 00004 61FC reti ;[INF] 2, 6 531 531 00006 ??ee_intp5: 532 532 ; line 159 : 533 533 ; line 160 : 534 534 ; line 161 : 535 535 ; line 162 : // ======================================================== 536 536 ; line 163 : void hdwinit( void ) 537 537 ; line 164 : { // スタートアップルーチンが勝手に 538 538 ; 呼びます 539 539 540 540 ----- LDR_CODE CSEG BASE 541 541 00071 _hdwinit: 542 542 $DGL 1,133 543 543 00071 717BFA di ;[INF] 3, 4 544 544 00074 ??bf_hdwinit: 545 545 ; line 165 : DI( ); /* マスタ割り込み禁止 */ 546 546 ; line 166 : 547 547 ; line 167 : CMC = 0b00010110; /* X1発振せず(入力ポート)、XT1使用 548 548 ; 、推奨の推奨で超低電力発振 */ 549 549 $DGL 0,4 550 550 00074 CEA016 mov CMC,#016H ; 22 ;[INF] 3, 1 551 551 ; line 168 : CSC = 0b10000000; /* X1発振なし、XT1発振あり、高速内 552 552 ; 蔵発振動作 */ 553 553 $DGL 0,5 554 554 00077 CEA180 mov CSC,#080H ; 128 ;[INF] 3, 1 555 555 ; line 169 : #ifdef _MCU_BSR_ 556 556 ; line 170 : OSMC = 0x01; /* 隠しレジスタ */ 557 557 $DGL 0,7 558 558 0007A E5F300 oneb !OSMC ;[INF] 3, 1 559 559 ; line 171 : #endif 560 560 ; line 172 : #ifdef _OVERCLOCK_ 561 561 ; line 173 : CKC = 0b00001000; /* CPU/周辺クロック=fMAIN、fMAIN= 562 562 ; fMX、fCLK=fMX */ 563 563 $DGL 0,10 564 564 0007D CEA408 mov CKC,#08H ; 8 ;[INF] 3, 1 565 565 ; line 174 : #else 566 566 ; line 175 : // CKC デフォルトでよい 567 567 ; line 176 : #endif 568 568 ; line 177 : 569 569 ; line 178 : /*--- 低電圧検出回路の設定 ---*/ 570 570 ; line 179 : /* リセット解除時のデフォルトは、オプション・バイトにて指定さ 571 571 ; れる */ 572 572 ; line 180 : LVIS = 0b00000000; /* VLVI = 4.22±0.1V */ 573 573 $DGL 0,17 574 574 00080 F5AAFF clrb !LVIS ;[INF] 3, 1 575 575 ; line 181 : LVIM = 0b00000000; /* LVI動作禁止 */ 576 576 $DGL 0,18 577 577 00083 F5A9FF clrb !LVIM ;[INF] 3, 1 578 578 ; line 182 : /* 電源電圧(VDD)<検出電圧(VLVI)時に割込発生 */ 579 579 ; line 183 : /* 電源電圧(VDD)≧検出電圧