78K0R Assembler W1.31 Date:13 Jun 2010 Page: 1 Command: -c9F0104 -yC:\Program Files\NEC Electronics Tools\DEV -_msgoff inter_asm\pedo_alg_thre_det2.asm Para-file: In-file: inter_asm\pedo_alg_thre_det2.asm Obj-file: pedo_alg_thre_det2.rel Prn-file: pedo_alg_thre_det2.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:25 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 pedo_alg_thre_de 6 6 ; t2.c 7 7 ; In-file : pedo_alg_thre_det2.c 8 8 ; Asm-file : inter_asm\pedo_alg_thre_det2.asm 9 9 ; Para-file : 10 10 11 11 $PROCESSOR(9F0104) 12 12 $DEBUG 13 13 $NODEBUGA 14 14 $KANJICODE SJIS 15 15 $TOL_INF 03FH, 0210H, 02H, 00H, 00H, 00H, 00H 16 16 17 17 $DGS FIL_NAM, .file, 0EEH, 0FFFEH, 03FH, 067H, 01H, 00H 18 18 $DGS AUX_FIL, pedo_alg_thre_det2.c 19 19 $DGS MOD_NAM, pedo_alg_thre_det2, 00H, 0FFFEH, 00H, 077H, 00H, 00H 20 20 $DGS SEC_NAM, @@BITS, U, U, 00H, 078H, 00H, 00H 21 21 $DGS SEC_NAM, @@CNST, U, U, 00H, 078H, 00H, 00H 22 22 $DGS SEC_NAM, @@R_INIT, U, U, 00H, 078H, 00H, 00H 23 23 $DGS SEC_NAM, @@INIT, U, U, 00H, 078H, 00H, 00H 24 24 $DGS SEC_NAM, @@DATA, U, U, 00H, 078H, 00H, 00H 25 25 $DGS SEC_NAM, @@R_INIS, U, U, 00H, 078H, 00H, 00H 26 26 $DGS SEC_NAM, @@INIS, U, U, 00H, 078H, 00H, 00H 27 27 $DGS SEC_NAM, @@DATS, U, U, 00H, 078H, 00H, 00H 28 28 $DGS SEC_NAM, @@CNSTL, U, U, 00H, 078H, 00H, 00H 29 29 $DGS SEC_NAM, @@RLINIT, U, U, 00H, 078H, 00H, 00H 30 30 $DGS SEC_NAM, @@INITL, U, U, 00H, 078H, 00H, 00H 31 31 $DGS SEC_NAM, @@DATAL, U, U, 00H, 078H, 00H, 00H 32 32 $DGS SEC_NAM, @@CALT, U, U, 00H, 078H, 00H, 00H 33 33 $DGS SEC_NAM, ROM_CODE, U, U, 00H, 078H, 00H, 00H 34 34 $DGS SEC_NAM, @@CODEL, U, U, 00H, 078H, 00H, 00H 35 35 $DGS SEC_NAM, @@BASE, U, U, 00H, 078H, 00H, 00H 36 36 $DGS LAB_SYM, bs_S0099, U, U, 00H, 06H, 00H, 00H 37 37 $DGS LAB_SYM, es_S0099, U, U, 00H, 06H, 00H, 00H 38 38 $DGS LAB_SYM, bs_F0097, U, U, 00H, 06H, 00H, 00H 39 39 $DGS LAB_SYM, es_F0097, U, U, 00H, 06H, 00H, 00H 40 40 $DGS LAB_SYM, bs_S0098, U, U, 00H, 06H, 00H, 00H 41 41 $DGS LAB_SYM, es_S0098, U, U, 00H, 06H, 00H, 00H 42 42 $DGS LAB_SYM, bs_S0096, U, U, 00H, 06H, 00H, 00H 43 43 $DGS LAB_SYM, es_S0096, U, U, 00H, 06H, 00H, 00H 44 44 $DGS STA_SYM, _lpf_coeff, U, U, 05002H, 03H, 01H, 03H 45 45 $DGS AUX_STR, 00H, 00H, 02FH, 02FH, 00H, 00H, 00H, 00H 46 46 $DGS GLV_SYM, _pedometer, U, U, 01H, 026H, 01H, 02H 47 47 $DGS AUX_FUN, 00H, U, U, 06BH, 00H, 00H 48 48 $DGS BEG_FUN, ??bf_pedometer, U, U, 00H, 065H, 01H, 00H 49 49 $DGS AUX_BEG, 01EH, 024H, 039H 50 50 $DGS STA_SYM, _th_H, ?L0003, U, 03H, 03H, 00H, 00H 51 51 $DGS STA_SYM, _th_L, ?L0004, U, 03H, 03H, 00H, 00H 52 52 $DGS STA_SYM, _acc_norm, ?L0005, U, 0DH, 03H, 01H, 03H 53 53 $DGS AUX_STR, 00H, 00H, 06H, 03H, 00H, 00H, 00H, 00H 54 54 $DGS STA_SYM, _acc_norm_temp, ?L0006, U, 0DH, 03H, 00H, 00H 55 55 $DGS STA_SYM, _interval_hh, ?L0007, U, 0CH, 03H, 00H, 00H 56 56 $DGS STA_SYM, _time_l, ?L0008, U, 0CH, 03H, 00H, 00H 57 57 $DGS STA_SYM, _peak_l, ?L0009, U, 0DH, 03H, 00H, 00H 58 58 $DGS STA_SYM, _peak_h, ?L0010, U, 0DH, 03H, 00H, 00H 59 59 $DGS STA_SYM, _norm_hist, ?L0011, U, 0DH, 03H, 01H, 03H 60 60 $DGS AUX_STR, 00H, 00H, 080H, 040H, 00H, 00H, 00H, 00H 61 61 $DGS STA_SYM, _hist_indx, ?L0012, U, 0CH, 03H, 00H, 00H 62 62 $DGS STA_SYM, _t_rise, ?L0013, U, 0CH, 03H, 00H, 00H 63 63 $DGS AUT_VAR, _filterd, 020H, 0FFFFH, 05H, 01H, 00H, 00H 64 64 $DGS AUT_VAR, _i, 01FH, 0FFFFH, 0CH, 01H, 00H, 00H 65 65 $DGS AUT_VAR, _temp1, 01AH, 0FFFFH, 05H, 01H, 00H, 00H 66 66 $DGS AUT_VAR, _temp2, 016H, 0FFFFH, 05H, 01H, 00H, 00H 67 67 $DGS AUT_VAR, _temp3, 012H, 0FFFFH, 05H, 01H, 00H, 00H 68 68 $DGS AUT_VAR, _temp4, 0EH, 0FFFFH, 05H, 01H, 00H, 00H 69 69 $DGS AUT_VAR, _temp5, 0AH, 0FFFFH, 05H, 01H, 00H, 00H 70 70 $DGS AUT_VAR, _temp6, 06H, 0FFFFH, 05H, 01H, 00H, 00H 71 71 $DGS AUT_VAR, _sx16, 04H, 0FFFFH, 0DH, 01H, 00H, 00H 72 72 $DGS AUT_VAR, _sy16, 02H, 0FFFFH, 0DH, 01H, 00H, 00H 73 73 $DGS AUT_VAR, _sz16, 00H, 0FFFFH, 0DH, 01H, 00H, 00H 74 74 $DGS BEG_BLK, ??bb00_pedometer, U, U, 00H, 064H, 01H, 00H 75 75 $DGS AUX_BEG, 02CH, 00H, 03DH 76 76 $DGS END_BLK, ??eb00_pedometer, U, U, 00H, 064H, 01H, 00H 77 77 $DGS AUX_END, 02EH 78 78 $DGS BEG_BLK, ??bb01_pedometer, U, U, 00H, 064H, 01H, 00H 79 79 $DGS AUX_BEG, 03FH, 00H, 041H 80 80 $DGS END_BLK, ??eb01_pedometer, U, U, 00H, 064H, 01H, 00H 81 81 $DGS AUX_END, 043H 82 82 $DGS BEG_BLK, ??bb02_pedometer, U, U, 00H, 064H, 01H, 00H 83 83 $DGS AUX_BEG, 048H, 00H, 043H 84 84 $DGS BEG_BLK, ??bb03_pedometer, U, U, 00H, 064H, 01H, 00H 85 85 $DGS AUX_BEG, 04BH, 00H, 045H 86 86 $DGS BEG_BLK, ??bb04_pedometer, U, U, 00H, 064H, 01H, 00H 87 87 $DGS AUX_BEG, 04EH, 00H, 047H 88 88 $DGS BEG_BLK, ??bb05_pedometer, U, U, 00H, 064H, 01H, 00H 89 89 $DGS AUX_BEG, 04FH, 00H, 04FH 90 90 $DGS END_BLK, ??eb05_pedometer, U, U, 00H, 064H, 01H, 00H 91 91 $DGS AUX_END, 052H 92 92 $DGS END_BLK, ??eb04_pedometer, U, U, 00H, 064H, 01H, 00H 93 93 $DGS AUX_END, 053H 94 94 $DGS END_BLK, ??eb03_pedometer, U, U, 00H, 064H, 01H, 00H 95 95 $DGS AUX_END, 055H 96 96 $DGS BEG_BLK, ??bb06_pedometer, U, U, 00H, 064H, 01H, 00H 97 97 $DGS AUX_BEG, 057H, 00H, 053H 98 98 $DGS END_BLK, ??eb06_pedometer, U, U, 00H, 064H, 01H, 00H 99 99 $DGS AUX_END, 059H 100 100 $DGS BEG_BLK, ??bb07_pedometer, U, U, 00H, 064H, 01H, 00H 101 101 $DGS AUX_BEG, 05BH, 00H, 059H 102 102 $DGS END_BLK, ??eb07_pedometer, U, U, 00H, 064H, 01H, 00H 103 103 $DGS AUX_END, 05DH 104 104 $DGS END_BLK, ??eb02_pedometer, U, U, 00H, 064H, 01H, 00H 105 105 $DGS AUX_END, 05EH 106 106 $DGS BEG_BLK, ??bb08_pedometer, U, U, 00H, 064H, 01H, 00H 107 107 $DGS AUX_BEG, 060H, 00H, 05DH 108 108 $DGS END_BLK, ??eb08_pedometer, U, U, 00H, 064H, 01H, 00H 109 109 $DGS AUX_END, 062H 110 110 $DGS BEG_BLK, ??bb09_pedometer, U, U, 00H, 064H, 01H, 00H 111 111 $DGS AUX_BEG, 067H, 00H, 061H 112 112 $DGS END_BLK, ??eb09_pedometer, U, U, 00H, 064H, 01H, 00H 113 113 $DGS AUX_END, 06BH 114 114 $DGS BEG_BLK, ??bb0A_pedometer, U, U, 00H, 064H, 01H, 00H 115 115 $DGS AUX_BEG, 06DH, 00H, 065H 116 116 $DGS END_BLK, ??eb0A_pedometer, U, U, 00H, 064H, 01H, 00H 117 117 $DGS AUX_END, 06FH 118 118 $DGS BEG_BLK, ??bb0B_pedometer, U, U, 00H, 064H, 01H, 00H 119 119 $DGS AUX_BEG, 071H, 00H, 00H 120 120 $DGS END_BLK, ??eb0B_pedometer, U, U, 00H, 064H, 01H, 00H 121 121 $DGS AUX_END, 086H 122 122 $DGS END_FUN, ??ef_pedometer, U, U, 00H, 065H, 01H, 00H 123 123 $DGS AUX_END, 087H 124 124 $DGS STA_SYM, _hosu_increment, U, U, 01H, 03H, 01H, 02H 125 125 $DGS AUX_FUN, 00H, U, U, 0A8H, 00H, 00H 126 126 $DGS BEG_FUN, ??bf_hosu_increment, U, U, 00H, 065H, 01H, 00H 127 127 $DGS AUX_BEG, 0B7H, 06H, 070H 128 128 $DGS STA_SYM, _last_hour_fny, ?L0039, U, 0DH, 03H, 00H, 00H 129 129 $DGS BEG_BLK, ??bb00_hosu_increment, U, U, 00H, 064H, 01H, 00H 130 130 $DGS AUX_BEG, 07H, 00H, 072H 131 131 $DGS BEG_BLK, ??bb01_hosu_increment, U, U, 00H, 064H, 01H, 00H 132 132 $DGS AUX_BEG, 09H, 00H, 074H 133 133 $DGS BEG_BLK, ??bb02_hosu_increment, U, U, 00H, 064H, 01H, 00H 134 134 $DGS AUX_BEG, 0AH, 00H, 07CH 135 135 $DGS END_BLK, ??eb02_hosu_increment, U, U, 00H, 064H, 01H, 00H 136 136 $DGS AUX_END, 0EH 137 137 $DGS END_BLK, ??eb01_hosu_increment, U, U, 00H, 064H, 01H, 00H 138 138 $DGS AUX_END, 0FH 139 139 $DGS END_BLK, ??eb00_hosu_increment, U, U, 00H, 064H, 01H, 00H 140 140 $DGS AUX_END, 010H 141 141 $DGS BEG_BLK, ??bb03_hosu_increment, U, U, 00H, 064H, 01H, 00H 142 142 $DGS AUX_BEG, 012H, 00H, 082H 143 143 $DGS AUT_VAR, _now_hour, 04H, 0FFFFH, 0DH, 01H, 01H, 00H 144 144 $DGS AUX_STR, 00H, 015H, 02H, 00H, 00H, 00H, 00H, 00H 145 145 $DGS AUT_VAR, _now_year, 03H, 0FFFFH, 0CH, 01H, 01H, 00H 146 146 $DGS AUX_STR, 00H, 016H, 01H, 00H, 00H, 00H, 00H, 00H 147 147 $DGS BEG_BLK, ??bb04_hosu_increment, U, U, 00H, 064H, 01H, 00H 148 148 $DGS AUX_BEG, 01BH, 00H, 086H 149 149 $DGS END_BLK, ??eb04_hosu_increment, U, U, 00H, 064H, 01H, 00H 150 150 $DGS AUX_END, 01BH 151 151 $DGS BEG_BLK, ??bb05_hosu_increment, U, U, 00H, 064H, 01H, 00H 152 152 $DGS AUX_BEG, 026H, 00H, 088H 153 153 $DGS BEG_BLK, ??bb06_hosu_increment, U, U, 00H, 064H, 01H, 00H 154 154 $DGS AUX_BEG, 028H, 00H, 08EH 155 155 $DGS END_BLK, ??eb06_hosu_increment, U, U, 00H, 064H, 01H, 00H 156 156 $DGS AUX_END, 02AH 157 157 $DGS END_BLK, ??eb05_hosu_increment, U, U, 00H, 064H, 01H, 00H 158 158 $DGS AUX_END, 02BH 159 159 $DGS BEG_BLK, ??bb07_hosu_increment, U, U, 00H, 064H, 01H, 00H 160 160 $DGS AUX_BEG, 02DH, 00H, 094H 161 161 $DGS AUT_VAR, _temp_hours, 00H, 0FFFFH, 0DH, 01H, 01H, 00H 162 162 $DGS AUX_STR, 00H, 02FH, 02H, 00H, 00H, 00H, 00H, 00H 163 163 $DGS END_BLK, ??eb07_hosu_increment, U, U, 00H, 064H, 01H, 00H 164 164 $DGS AUX_END, 031H 165 165 $DGS BEG_BLK, ??bb08_hosu_increment, U, U, 00H, 064H, 01H, 00H 166 166 $DGS AUX_BEG, 033H, 00H, 098H 167 167 $DGS END_BLK, ??eb08_hosu_increment, U, U, 00H, 064H, 01H, 00H 168 168 $DGS AUX_END, 036H 169 169 $DGS BEG_BLK, ??bb09_hosu_increment, U, U, 00H, 064H, 01H, 00H 170 170 $DGS AUX_BEG, 038H, 00H, 09CH 171 171 $DGS END_BLK, ??eb09_hosu_increment, U, U, 00H, 064H, 01H, 00H 172 172 $DGS AUX_END, 03BH 173 173 $DGS BEG_BLK, ??bb0A_hosu_increment, U, U, 00H, 064H, 01H, 00H 174 174 $DGS AUX_BEG, 041H, 00H, 0A0H 175 175 $DGS END_BLK, ??eb0A_hosu_increment, U, U, 00H, 064H, 01H, 00H 176 176 $DGS AUX_END, 043H 177 177 $DGS BEG_BLK, ??bb0B_hosu_increment, U, U, 00H, 064H, 01H, 00H 178 178 $DGS AUX_BEG, 045H, 00H, 00H 179 179 $DGS END_BLK, ??eb0B_hosu_increment, U, U, 00H, 064H, 01H, 00H 180 180 $DGS AUX_END, 047H 181 181 $DGS END_BLK, ??eb03_hosu_increment, U, U, 00H, 064H, 01H, 00H 182 182 $DGS AUX_END, 048H 183 183 $DGS END_FUN, ??ef_hosu_increment, U, U, 00H, 065H, 01H, 00H 184 184 $DGS AUX_END, 049H 185 185 $DGS GLV_SYM, _fill_hosu_hist_hours, U, U, 01H, 026H, 01H, 02H 186 186 $DGS AUX_FUN, 00H, U, U, 0B7H, 00H, 00H 187 187 $DGS BEG_FUN, ??bf_fill_hosu_hist_hours, U, U, 00H, 065H, 01H, 00H 188 188 $DGS AUX_BEG, 0108H, 02H, 0ADH 189 189 $DGS REG_PAR, _hours, 0103H, 0FFFFH, 010DH, 011H, 00H, 00H 190 190 $DGS BEG_BLK, ??bb00_fill_hosu_hist_hours, U, U, 00H, 064H, 01H, 00H 191 191 $DGS AUX_BEG, 03H, 00H, 0B1H 192 192 $DGS END_BLK, ??eb00_fill_hosu_hist_hours, U, U, 00H, 064H, 01H, 00H 193 193 $DGS AUX_END, 05H 194 194 $DGS BEG_BLK, ??bb01_fill_hosu_hist_hours, U, U, 00H, 064H, 01H, 00H 195 195 $DGS AUX_BEG, 09H, 00H, 00H 196 196 $DGS END_BLK, ??eb01_fill_hosu_hist_hours, U, U, 00H, 064H, 01H, 00H 197 197 $DGS AUX_END, 0DH 198 198 $DGS END_FUN, ??ef_fill_hosu_hist_hours, U, U, 00H, 065H, 01H, 00H 199 199 $DGS AUX_END, 0FH 200 200 $DGS GLV_SYM, _clear_hosu_hist, U, U, 01H, 026H, 01H, 02H 201 201 $DGS AUX_FUN, 00H, U, U, 0C2H, 00H, 00H 202 202 $DGS BEG_FUN, ??bf_clear_hosu_hist, U, U, 00H, 065H, 01H, 00H 203 203 $DGS AUX_BEG, 011FH, 02H, 0BCH 204 204 $DGS REG_VAR, _hours, 06H, 0FFFFH, 010CH, 04H, 00H, 00H 205 205 $DGS BEG_BLK, ??bb00_clear_hosu_hist, U, U, 00H, 064H, 01H, 00H 206 206 $DGS AUX_BEG, 05H, 00H, 00H 207 207 $DGS END_BLK, ??eb00_clear_hosu_hist, U, U, 00H, 064H, 01H, 00H 208 208 $DGS AUX_END, 08H 209 209 $DGS END_FUN, ??ef_clear_hosu_hist, U, U, 00H, 065H, 01H, 00H 210 210 $DGS AUX_END, 0DH 211 211 $DGS GLV_SYM, _hosu_read_end, U, U, 01H, 026H, 01H, 02H 212 212 $DGS AUX_FUN, 00H, U, U, 0C8H, 00H, 00H 213 213 $DGS BEG_FUN, ??bf_hosu_read_end, U, U, 00H, 065H, 01H, 00H 214 214 $DGS AUX_BEG, 0136H, 00H, 0C8H 215 215 $DGS END_FUN, ??ef_hosu_read_end, U, U, 00H, 065H, 01H, 00H 216 216 $DGS AUX_END, 03H 217 217 $DGS GLV_SYM, _hosu_read, U, U, 0CH, 026H, 01H, 02H 218 218 $DGS AUX_FUN, 00H, U, U, 0DDH, 00H, 00H 219 219 $DGS BEG_FUN, ??bf_hosu_read, U, U, 00H, 065H, 01H, 00H 220 220 $DGS AUX_BEG, 0140H, 04H, 0CFH 221 221 $DGS AUT_VAR, _dat, 03H, 0FFFFH, 0CH, 01H, 00H, 00H 222 222 $DGS AUT_VAR, _temp, 00H, 0FFFFH, 0DH, 01H, 00H, 00H 223 223 $DGS STA_SYM, _p_record_buffer, ?L0078, U, 0CH, 03H, 00H, 00H 224 224 $DGS BEG_BLK, ??bb00_hosu_read, U, U, 00H, 064H, 01H, 00H 225 225 $DGS AUX_BEG, 06H, 00H, 0D1H 226 226 $DGS BEG_BLK, ??bb01_hosu_read, U, U, 00H, 064H, 01H, 00H 227 227 $DGS AUX_BEG, 023H, 00H, 0D5H 228 228 $DGS END_BLK, ??eb01_hosu_read, U, U, 00H, 064H, 01H, 00H 229 229 $DGS AUX_END, 025H 230 230 $DGS BEG_BLK, ??bb02_hosu_read, U, U, 00H, 064H, 01H, 00H 231 231 $DGS AUX_BEG, 027H, 00H, 00H 232 232 $DGS END_BLK, ??eb02_hosu_read, U, U, 00H, 064H, 01H, 00H 233 233 $DGS AUX_END, 02AH 234 234 $DGS END_BLK, ??eb00_hosu_read, U, U, 00H, 064H, 01H, 00H 235 235 $DGS AUX_END, 02DH 236 236 $DGS END_FUN, ??ef_hosu_read, U, U, 00H, 065H, 01H, 00H 237 237 $DGS AUX_END, 02EH 238 238 $DGS STA_SYM, _DAYS_FROM_HNY, U, U, 0500DH, 03H, 01H, 03H 239 239 $DGS AUX_STR, 00H, 00H, 01AH, 0DH, 00H, 00H, 00H, 00H 240 240 $DGS GLV_SYM, _get_long_hour, U, U, 0DH, 026H, 01H, 02H 241 241 $DGS AUX_FUN, 00H, U, U, 0EEH, 00H, 00H 242 242 $DGS BEG_FUN, ??bf_get_long_hour, U, U, 00H, 065H, 01H, 00H 243 243 $DGS AUX_BEG, 017DH, 06H, 0E8H 244 244 $DGS AUT_VAR, _long_hour, 04H, 0FFFFH, 0DH, 01H, 00H, 00H 245 245 $DGS AUT_VAR, _year_hex, 03H, 0FFFFH, 0CH, 01H, 00H, 00H 246 246 $DGS AUT_VAR, _month_hex, 02H, 0FFFFH, 0CH, 01H, 00H, 00H 247 247 $DGS AUT_VAR, _day_hex, 01H, 0FFFFH, 0CH, 01H, 00H, 00H 248 248 $DGS AUT_VAR, _hour_hex, 00H, 0FFFFH, 0CH, 01H, 00H, 00H 249 249 $DGS BEG_BLK, ??bb00_get_long_hour, U, U, 00H, 064H, 01H, 00H 250 250 $DGS AUX_BEG, 014H, 00H, 00H 251 251 $DGS END_BLK, ??eb00_get_long_hour, U, U, 00H, 064H, 01H, 00H 252 252 $DGS AUX_END, 017H 253 253 $DGS END_FUN, ??ef_get_long_hour, U, U, 00H, 065H, 01H, 00H 254 254 $DGS AUX_END, 01EH 255 255 $DGS GLV_SYM, _p_record, U, U, 0CH, 026H, 00H, 00H 256 256 $DGS GLV_SYM, _last_hour, U, U, 0CH, 026H, 00H, 00H 257 257 $DGS GLV_SYM, _last_day, U, U, 0CH, 026H, 00H, 00H 258 258 $DGS GLV_SYM, _last_month, U, U, 0CH, 026H, 00H, 00H 259 259 $DGS GLV_SYM, _last_year, U, U, 0CH, 026H, 00H, 00H 260 260 $DGS GLV_SYM, _record_read_msb_lsb, U, U, 034CH, 027H, 00H, 00H 261 261 $DGS GLV_SYM, _@RTARG0, U, U, 00H, 02H, 00H, 00H 262 262 $DGS GLV_SYM, _@RTARG2, U, U, 00H, 02H, 00H, 00H 263 263 $DGS GLV_SYM, _abs, U, U, 04H, 02H, 01H, 02H 264 264 $DGS AUX_FUN, 00H, U, U, 00H, 00H, 00H 265 265 $DGS GLV_SYM, _@RTARG4, U, U, 00H, 02H, 00H, 00H 266 266 $DGS GLV_SYM, _@RTARG6, U, U, 00H, 02H, 00H, 00H 267 267 $DGS GLV_SYM, @@lsmul, U, U, 00H, 02H, 00H, 00H 268 268 $DGS GLV_SYM, _vreg_ctr, U, U, 0CH, 02H, 01H, 03H 269 269 $DGS AUX_STR, 00H, 00H, 01H, 01H, 00H, 00H, 00H, 00H 270 270 $DGS GLV_SYM, @@lsadd, U, U, 00H, 02H, 00H, 00H 271 271 $DGS GLV_SYM, @@lstof, U, U, 00H, 02H, 00H, 00H 272 272 $DGS GLV_SYM, _sqrt, U, U, 07H, 02H, 01H, 02H 273 273 $DGS AUX_FUN, 00H, U, U, 00H, 01H, 00H 274 274 $DGS GLV_SYM, _@RTARG3, U, U, 00H, 02H, 00H, 00H 275 275 $DGS GLV_SYM, @@ftolu, U, U, 00H, 02H, 00H, 00H 276 276 $DGS GLV_SYM, @@ftols, U, U, 00H, 02H, 00H, 00H 277 277 $DGS GLV_SYM, @@lsdiv, U, U, 00H, 02H, 00H, 00H 278 278 $DGS GLV_SYM, @@lsband, U, U, 00H, 02H, 00H, 00H 279 279 $DGS GLV_SYM, @@bcdtob, U, U, 00H, 02H, 00H, 00H 280 280 $DGS GLV_SYM, _pool, U, U, 0DH, 02H, 01H, 03H 281 281 $DGS AUX_STR, 00H, 00H, 02H, 01H, 00H, 00H, 00H, 00H 282 282 $DGS GLV_SYM, _iic_burst_state, U, U, 0CH, 02H, 00H, 00H 283 283 $DGS GLV_SYM, @@bbcd, U, U, 00H, 02H, 00H, 00H 284 284 285 285 EXTRN _@RTARG0 286 286 EXTRN _@RTARG2 287 287 EXTRN _abs 288 288 EXTRN _@RTARG4 289 289 EXTRN _@RTARG6 290 290 EXTRN @@lsmul 291 291 EXTRN _vreg_ctr 292 292 EXTRN @@lsadd 293 293 EXTRN @@lstof 294 294 EXTRN _sqrt 295 295 EXTRN _@RTARG3 296 296 EXTRN @@ftolu 297 297 EXTRN @@ftols 298 298 EXTRN @@lsdiv 299 299 EXTRN @@lsband 300 300 EXTRN @@bcdtob 301 301 EXTRN _pool 302 302 EXTRN _iic_burst_state 303 303 EXTRN @@bbcd 304 304 PUBLIC _pedometer 305 305 PUBLIC _p_record 306 306 PUBLIC _last_hour 307 307 PUBLIC _last_day 308 308 PUBLIC _last_month 309 309 PUBLIC _last_year 310 310 PUBLIC _fill_hosu_hist_hours 311 311 PUBLIC _clear_hosu_hist 312 312 PUBLIC _record_read_msb_lsb 313 313 PUBLIC _hosu_read_end 314 314 PUBLIC _hosu_read 315 315 PUBLIC _get_long_hour 316 316 317 317 ----- @@BITS BSEG 318 318 00000.0 _record_read_msb_lsb DBIT 319 319 320 320 ----- @@CNST CSEG MIRRORP 321 321 00000 01 _lpf_coeff: DB 01H ; 1 322 322 00001 02 DB 02H ; 2 323 323 00002 02 DB 02H ; 2 324 324 00003 03 DB 03H ; 3 325 325 00004 03 DB 03H ; 3 326 326 00005 02 DB 02H ; 2 327 327 00006 00 DB 00H ; 0 328 328 00007 FE DB 0FEH ; 254 329 329 00008 FB DB 0FBH ; 251 330 330 00009 F7 DB 0F7H ; 247 331 331 0000A F3 DB 0F3H ; 243 332 332 0000B F0 DB 0F0H ; 240 333 333 0000C F0 DB 0F0H ; 240 334 334 0000D F3 DB 0F3H ; 243 335 335 0000E FA DB 0FAH ; 250 336 336 0000F 04 DB 04H ; 4 337 337 00010 12 DB 012H ; 18 338 338 00011 25 DB 025H ; 37 339 339 00012 38 DB 038H ; 56 340 340 00013 4D DB 04DH ; 77 341 341 00014 5F DB 05FH ; 95 342 342 00015 6E DB 06EH ; 110 343 343 00016 77 DB 077H ; 119 344 344 00017 7A DB 07AH ; 122 345 345 00018 77 DB 077H ; 119 346 346 00019 6E DB 06EH ; 110 347 347 0001A 5F DB 05FH ; 95 348 348 0001B 4D DB 04DH ; 77 349 349 0001C 38 DB 038H ; 56 350 350 0001D 25 DB 025H ; 37 351 351 0001E 12 DB 012H ; 18 352 352 0001F 04 DB 04H ; 4 353 353 00020 FA DB 0FAH ; 250 354 354 00021 F3 DB 0F3H ; 243 355 355 00022 F0 DB 0F0H ; 240 356 356 00023 F0 DB 0F0H ; 240 357 357 00024 F3 DB 0F3H ; 243 358 358 00025 F7 DB 0F7H ; 247 359 359 00026 FB DB 0FBH ; 251 360 360 00027 FE DB 0FEH ; 254 361 361 00028 00 DB 00H ; 0 362 362 00029 02 DB 02H ; 2 363 363 0002A 03 DB 03H ; 3 364 364 0002B 03 DB 03H ; 3 365 365 0002C 02 DB 02H ; 2 366 366 0002D 02 DB 02H ; 2 367 367 0002E 01 DB 01H ; 1 368 368 0002F 00 DB (1) 369 369 00030 0000 _DAYS_FROM_HNY: DW 00H ; 0 370 370 00032 0000 DW 00H ; 0 371 371 00034 1F00 DW 01FH ; 31 372 372 00036 3B00 DW 03BH ; 59 373 373 00038 5A00 DW 05AH ; 90 374 374 0003A 7800 DW 078H ; 120 375 375 0003C 9700 DW 097H ; 151 376 376 0003E B500 DW 0B5H ; 181 377 377 00040 D400 DW 0D4H ; 212 378 378 00042 F300 DW 0F3H ; 243 379 379 00044 1101 DW 0111H ; 273 380 380 00046 3001 DW 0130H ; 304 381 381 00048 4E01 DW 014EH ; 334 382 382 383 383 ----- @@R_INIT CSEG UNIT64KP 384 384 00000 983A DW 03A98H ; 15000 385 385 00002 F82A DW 02AF8H ; 11000 386 386 00004 23 DB 023H ; 35 387 387 00005 30 DB 030H ; 48 388 388 00006 12 DB 012H ; 18 389 389 00007 99 DB 099H ; 153 390 390 391 391 ----- @@INIT DSEG BASEP 392 392 00000 ?L0003: DS (2) 393 393 00002 ?L0004: DS (2) 394 394 00004 _last_hour: DS (1) 395 395 00005 _last_day: DS (1) 396 396 00006 _last_month: DS (1) 397 397 00007 _last_year: DS (1) 398 398 399 399 ----- @@DATA DSEG BASEP 400 400 00000 ?L0005: DS (6) 401 401 00006 ?L0006: DS (2) 402 402 00008 ?L0007: DS (1) 403 403 00009 ?L0008: DS (1) 404 404 0000A ?L0009: DS (2) 405 405 0000C ?L0010: DS (2) 406 406 0000E ?L0011: DS (128) 407 407 0008E ?L0012: DS (1) 408 408 0008F ?L0013: DS (1) 409 409 00090 _p_record: DS (1) 410 410 00091 DS (1) 411 411 00092 ?L0039: DS (2) 412 412 00094 ?L0078: DS (1) 413 413 00095 DS (1) 414 414 415 415 ----- @@R_INIS CSEG UNIT64KP 416 416 417 417 ----- @@INIS DSEG SADDRP 418 418 419 419 ----- @@DATS DSEG SADDRP 420 420 421 421 ----- @@CNSTL CSEG PAGE64KP 422 422 423 423 ----- @@RLINIT CSEG UNIT64KP 424 424 425 425 ----- @@INITL DSEG UNIT64KP 426 426 427 427 ----- @@DATAL DSEG UNIT64KP 428 428 429 429 ----- @@CALT CSEG CALLT0 430 430 431 431 ; Sub-Routines created by CC78K0R 432 432 433 433 ----- ROM_CODE CSEG BASE 434 434 00000 bs_S0099: 435 435 00000 RBD00 movw _@RTARG0,ax ;[INF] 2, 1 436 436 00002 F6 clrw ax ;[INF] 1, 1 437 437 00003 RBD00 movw _@RTARG2,ax ;[INF] 2, 1 438 438 00005 D7 ret ;[INF] 1, 6 439 439 00006 es_S0099: 440 440 441 441 ----- ROM_CODE CSEG BASE 442 442 00006 bs_F0097: 443 443 00006 F3 clrb b ;[INF] 1, 1 444 444 00007 03 addw ax,bc ;[INF] 1, 1 445 445 00008 RFD0000 call !_abs ;[INF] 3, 3 446 446 0000B 13 movw ax,bc ;[INF] 1, 1 447 447 0000C D7 ret ;[INF] 1, 6 448 448 0000D es_F0097: 449 449 450 450 ----- ROM_CODE CSEG BASE 451 451 0000D bs_S0098: 452 452 0000D RAD00 movw ax,_@RTARG0 ;[INF] 2, 1 453 453 0000F RBD00 movw _@RTARG4,ax ;[INF] 2, 1 454 454 00011 RAD00 movw ax,_@RTARG2 ;[INF] 2, 1 455 455 00013 RBD00 movw _@RTARG6,ax ;[INF] 2, 1 456 456 00015 D7 ret ;[INF] 1, 6 457 457 00016 es_S0098: 458 458 459 459 ----- ROM_CODE CSEG BASE 460 460 00016 bs_S0096: 461 461 00016 RDA00 movw bc,_@RTARG6 ;[INF] 2, 1 462 462 00018 C3 push bc ;[INF] 1, 1 463 463 00019 RBD00 movw _@RTARG4,ax ;[INF] 2, 1 464 464 0001B F6 clrw ax ;[INF] 1, 1 465 465 0001C RBD00 movw _@RTARG6,ax ;[INF] 2, 1 466 466 0001E RFD0000 call !@@lsmul ;[INF] 3, 3 467 467 00021 C0 pop ax ;[INF] 1, 1 468 468 00022 RBD00 movw _@RTARG6,ax ;[INF] 2, 1 469 469 00024 D7 ret ;[INF] 1, 6 470 470 00025 es_S0096: 471 471 472 472 ; *** Sub-Routine Information *** 473 473 ; 474 474 ; $SUB bs_S0096 475 475 ; CODE SIZE= 15 bytes 476 476 ; 477 477 ; $SUB bs_F0097 478 478 ; CODE SIZE= 7 bytes 479 479 ; 480 480 ; $SUB bs_S0098 481 481 ; CODE SIZE= 9 bytes 482 482 ; 483 483 ; $SUB bs_S0099 484 484 ; CODE SIZE= 6 bytes 485 485 486 486 ; End of Sub-Routines 487 487 488 488 ; line 1 : /* ******************************************************** 489 489 ; line 2 : 490 490 ; line 3 : 491 491 ; line 4 : 492 492 ; line 5 : 493 493 ; line 6 : ********************************************************* */ 494 494 ; line 7 : #pragma MUL 495 495 ; line 8 : #pragma BCD 496 496 ; line 9 : 497 497 ; line 10 : #include "incs.h" 498 498 ; line 11 : #include 499 499 ; line 12 : 500 500 ; line 13 : #include "accero.h" 501 501 ; line 14 : #include "pedometer.h" 502 502 ; line 15 : 503 503 ; line 16 : 504 504 ; line 17 : static void hosu_increment(); 505 505 ; line 18 : u16 get_long_hour(); 506 506 ; line 19 : 507 507 ; line 20 : 508 508 ; line 21 : 509 509 ; line 22 : extern u16 pool[]; 510 510 ; line 23 : 511 511 ; line 24 : 512 512 ; line 25 : 513 513 ; line 26 : /*========================================================= 514 514 ; line 27 :  歩数計 515 515 ; line 28 : ========================================================*/ 516 516 ; line 29 : void pedometer() 517 517 ; line 30 : { 518 518 519 519 ----- ROM_CODE CSEG BASE 520 520 00025 _pedometer: 521 521 $DGL 1,29 522 522 00025 C7 push hl ;[INF] 1, 1 523 523 00026 2024 subw sp,#024H ;[INF] 2, 1 524 524 00028 FBF8FF movw hl,sp ;[INF] 3, 1 525 525 0002B ??bf_pedometer: 526 526 ; line 31 : static s16 th_H = 15000; // 閾値。暫定。動的変更とかしたい… 527 527 ; ので変数 528 528 ; line 32 : static s16 th_L = 11000; 529 529 ; line 33 : static u16 acc_norm[3]; // 加速度の大きさのヒストリ。数字が大 530 530 ; きい方が古い 531 531 ; line 34 : static u16 acc_norm_temp; 532 532 ; line 35 : static u8 interval_hh; // 山-山間の時間。短過ぎたらはじく。 533 533 ; line 36 : static u8 time_l; // 前回の極小からの経過時間 534 534 ; line 37 : static u16 peak_l; // 谷の深さ 535 535 ; line 38 : static u16 peak_h; // 山の高さ 536 536 ; line 39 : static u16 norm_hist[TAP]; 537 537 ; line 40 : 538 538 ; line 41 : static u8 hist_indx; 539 539 ; line 42 : static u8 t_rise; 540 540 ; line 43 : 541 541 ; line 44 : signed long filterd; 542 542 ; line 45 : 543 543 ; line 46 : u8 i; 544 544 ; line 47 : 545 545 ; line 48 : signed long temp1,temp2,temp3; 546 546 ; line 49 : signed long temp4,temp5,temp6; 547 547 ; line 50 : 548 548 ; line 51 : u16 sx16 = abs( (u16)vreg_ctr[VREG_C_ACC_XH] * 256 + vreg_ct 549 549 ; r[VREG_C_ACC_XL] ); 550 550 $DGL 0,22 551 551 0002B R8F4600 mov a,!_vreg_ctr+70 ;[INF] 3, 1 552 552 0002E F0 clrb x ;[INF] 1, 1 553 553 0002F RF94500 mov c,!_vreg_ctr+69 ;[INF] 3, 1 554 554 00032 RFD0600 call !bs_F0097 ;[INF] 3, 3 555 555 00035 BC04 movw [hl+4],ax ; sx16 ;[INF] 2, 1 556 556 ; line 52 : u16 sy16 = abs( (u16)vreg_ctr[VREG_C_ACC_YH] * 256 + vreg_ct 557 557 ; r[VREG_C_ACC_YL] ); 558 558 $DGL 0,23 559 559 00037 R8F4800 mov a,!_vreg_ctr+72 ;[INF] 3, 1 560 560 0003A F0 clrb x ;[INF] 1, 1 561 561 0003B RF94700 mov c,!_vreg_ctr+71 ;[INF] 3, 1 562 562 0003E RFD0600 call !bs_F0097 ;[INF] 3, 3 563 563 00041 BC02 movw [hl+2],ax ; sy16 ;[INF] 2, 1 564 564 ; line 53 : u16 sz16 = abs( (u16)vreg_ctr[VREG_C_ACC_ZH] * 256 + vreg_ct 565 565 ; r[VREG_C_ACC_ZL] ); 566 566 $DGL 0,24 567 567 00043 R8F4A00 mov a,!_vreg_ctr+74 ;[INF] 3, 1 568 568 00046 F0 clrb x ;[INF] 1, 1 569 569 00047 RF94900 mov c,!_vreg_ctr+73 ;[INF] 3, 1 570 570 0004A RFD0600 call !bs_F0097 ;[INF] 3, 3 571 571 0004D BB movw [hl],ax ; sz16 ;[INF] 1, 1 572 572 ; line 54 : 573 573 ; line 55 : // ベクトルのノルム 574 574 ; line 56 : #ifdef _mcu_ 575 575 ; line 57 : norm_hist[ hist_indx & TAP-1 ] = sqrt( (long)sx16 * ( sx16 / 576 576 ; 2 ) + 577 577 ; line 58 : (long)sy16 * ( sy16 / 578 578 ; 2 ) + 579 579 ; line 59 : (long)sz16 * ( sz16 / 580 580 ; 2 ) 581 581 ; line 60 : ); 582 582 $DGL 0,31 583 583 0004E AC04 movw ax,[hl+4] ; sx16 ;[INF] 2, 1 584 584 00050 RFD0000 call !bs_S0099 ;[INF] 3, 3 585 585 00053 AC04 movw ax,[hl+4] ; sx16 ;[INF] 2, 1 586 586 00055 311E shrw ax,1 ;[INF] 2, 1 587 587 00057 RBD00 movw _@RTARG4,ax ;[INF] 2, 1 588 588 00059 F6 clrw ax ;[INF] 1, 1 589 589 0005A RBD00 movw _@RTARG6,ax ;[INF] 2, 1 590 590 0005C RFD0000 call !@@lsmul ;[INF] 3, 3 591 591 0005F RFD0D00 call !bs_S0098 ;[INF] 3, 3 592 592 00062 AC02 movw ax,[hl+2] ; sy16 ;[INF] 2, 1 593 593 00064 RFD0000 call !bs_S0099 ;[INF] 3, 3 594 594 00067 AC02 movw ax,[hl+2] ; sy16 ;[INF] 2, 1 595 595 00069 311E shrw ax,1 ;[INF] 2, 1 596 596 0006B RDA00 movw bc,_@RTARG4 ;[INF] 2, 1 597 597 0006D C3 push bc ;[INF] 1, 1 598 598 0006E RFD1600 call !bs_S0096 ;[INF] 3, 3 599 599 00071 C0 pop ax ;[INF] 1, 1 600 600 00072 RBD00 movw _@RTARG4,ax ;[INF] 2, 1 601 601 00074 RAD00 movw ax,_@RTARG6 ;[INF] 2, 1 602 602 00076 RFD0000 call !@@lsadd ;[INF] 3, 3 603 603 00079 RFD0D00 call !bs_S0098 ;[INF] 3, 3 604 604 0007C AB movw ax,[hl] ; sz16 ;[INF] 1, 1 605 605 0007D RFD0000 call !bs_S0099 ;[INF] 3, 3 606 606 00080 AB movw ax,[hl] ; sz16 ;[INF] 1, 1 607 607 00081 311E shrw ax,1 ;[INF] 2, 1 608 608 00083 RDA00 movw bc,_@RTARG4 ;[INF] 2, 1 609 609 00085 C3 push bc ;[INF] 1, 1 610 610 00086 RFD1600 call !bs_S0096 ;[INF] 3, 3 611 611 00089 C0 pop ax ;[INF] 1, 1 612 612 0008A RBD00 movw _@RTARG4,ax ;[INF] 2, 1 613 613 0008C RAD00 movw ax,_@RTARG6 ;[INF] 2, 1 614 614 0008E RFD0000 call !@@lsadd ;[INF] 3, 3 615 615 00091 RFD0000 call !@@lstof ;[INF] 3, 3 616 616 00094 RDA00 movw bc,_@RTARG2 ;[INF] 2, 1 617 617 00096 RAD00 movw ax,_@RTARG0 ;[INF] 2, 1 618 618 00098 RFC000000 call !!_sqrt ;[INF] 4, 3 619 619 0009C C3 push bc ;[INF] 1, 1 620 620 0009D C5 push de ;[INF] 1, 1 621 621 0009E R8F8E00 mov a,!?L0012 ; hist_indx ;[INF] 3, 1 622 622 000A1 5C3F and a,#03FH ; 63 ;[INF] 2, 1 623 623 000A3 F0 clrb x ;[INF] 1, 1 624 624 000A4 317E shrw ax,7 ;[INF] 2, 1 625 625 000A6 R040E00 addw ax,#loww (?L0011) ; norm_hist ;[INF] 3, 1 626 626 000A9 14 movw de,ax ;[INF] 1, 1 627 627 000AA C2 pop bc ;[INF] 1, 1 628 628 000AB C0 pop ax ;[INF] 1, 1 629 629 000AC RBD00 movw _@RTARG0,ax ;[INF] 2, 1 630 630 000AE 13 movw ax,bc ;[INF] 1, 1 631 631 000AF RBD00 movw _@RTARG2,ax ;[INF] 2, 1 632 632 000B1 R31720005 bt _@RTARG3.7,$?L0014 ;[INF] 4, 5 633 633 000B5 RFD0000 call !@@ftolu ;[INF] 3, 3 634 634 000B8 EF03 br $?L0015 ;[INF] 2, 3 635 635 000BA ?L0014: 636 636 000BA RFD0000 call !@@ftols ;[INF] 3, 3 637 637 000BD ?L0015: 638 638 000BD RAD00 movw ax,_@RTARG0 ;[INF] 2, 1 639 639 000BF B9 movw [de],ax ;[INF] 1, 1 640 640 ; line 61 : #endif 641 641 ; line 62 : 642 642 ; line 63 : #ifdef _pc_ 643 643 ; line 64 : norm_hist[ hist_indx & TAP-1 ] = normh * 256 + norml; 644 644 ; line 65 : #endif 645 645 ; line 66 : 646 646 ; line 67 : hist_indx += 1; 647 647 $DGL 0,38 648 648 000C0 RA08E00 inc !?L0012 ; hist_indx ;[INF] 3, 2 649 649 ; line 68 : 650 650 ; line 69 : // ヒストリにフィルタを掛けて、今回の値を求める 651 651 ; line 70 : filterd = 0; 652 652 $DGL 0,41 653 653 000C3 F6 clrw ax ;[INF] 1, 1 654 654 000C4 BC20 movw [hl+32],ax ; filterd ;[INF] 2, 1 655 655 000C6 BC22 movw [hl+34],ax ; filterd ;[INF] 2, 1 656 656 ; line 71 : // for( i = 8; i != 55; i++ ) // 係数が0ばかりのため 657 657 ; line 72 : for( i = 0; i != 46; i++ ) // 係数テーブルをいじりました。パ 658 658 ; ラメータ調整時注意 659 659 $DGL 0,43 660 660 000C8 9C1F mov [hl+31],a ; i ;[INF] 2, 1 661 661 000CA ?L0016: 662 662 000CA 8C1F mov a,[hl+31] ; i ;[INF] 2, 1 663 663 000CC 4C2E cmp a,#02EH ; 46 ;[INF] 2, 1 664 664 000CE DD3C bz $?L0017 ;[INF] 2, 4 665 665 ; line 73 : { 666 666 000D0 ??bb00_pedometer: 667 667 ; line 74 : filterd += (signed long)norm_hist[ ( hist_indx + i ) & T 668 668 ; AP-1 ] * lpf_coeff[ i ]; 669 669 $DGL 0,45 670 670 000D0 R8F8E00 mov a,!?L0012 ; hist_indx ;[INF] 3, 1 671 671 000D3 0E1F add a,[hl+31] ; i ;[INF] 2, 1 672 672 000D5 70 mov x,a ;[INF] 1, 1 673 673 000D6 F1 clrb a ;[INF] 1, 1 674 674 000D7 61DC rolc a,1 ;[INF] 2, 1 675 675 000D9 60 mov a,x ;[INF] 1, 1 676 676 000DA 5C3F and a,#03FH ; 63 ;[INF] 2, 1 677 677 000DC F0 clrb x ;[INF] 1, 1 678 678 000DD 317E shrw ax,7 ;[INF] 2, 1 679 679 000DF 12 movw bc,ax ;[INF] 1, 1 680 680 000E0 R790E00 movw ax,?L0011[bc] ; norm_hist ;[INF] 3, 1 681 681 000E3 RFD0000 call !bs_S0099 ;[INF] 3, 3 682 682 000E6 8C1F mov a,[hl+31] ; i ;[INF] 2, 1 683 683 000E8 73 mov b,a ;[INF] 1, 1 684 684 000E9 R090000 mov a,_lpf_coeff[b] ;[INF] 3, 1 685 685 000EC 318F sarw ax,8 ;[INF] 2, 1 686 686 000EE RBD00 movw _@RTARG4,ax ;[INF] 2, 1 687 687 000F0 70 mov x,a ;[INF] 1, 1 688 688 000F1 RBD00 movw _@RTARG6,ax ;[INF] 2, 1 689 689 000F3 RFD0000 call !@@lsmul ;[INF] 3, 3 690 690 000F6 AC20 movw ax,[hl+32] ; filterd ;[INF] 2, 1 691 691 000F8 RBD00 movw _@RTARG4,ax ;[INF] 2, 1 692 692 000FA AC22 movw ax,[hl+34] ; filterd ;[INF] 2, 1 693 693 000FC RFD0000 call !@@lsadd ;[INF] 3, 3 694 694 000FF RAD00 movw ax,_@RTARG2 ;[INF] 2, 1 695 695 00101 BC22 movw [hl+34],ax ; filterd ;[INF] 2, 1 696 696 00103 RAD00 movw ax,_@RTARG0 ;[INF] 2, 1 697 697 00105 BC20 movw [hl+32],ax ; filterd ;[INF] 2, 1 698 698 00107 ??eb00_pedometer: 699 699 ; line 75 : } 700 700 $DGL 0,46 701 701 00107 61591F inc [hl+31] ; i ;[INF] 3, 2 702 702 0010A EFBE br $?L0016 ;[INF] 2, 3 703 703 0010C ?L0017: 704 704 ; line 76 : 705 705 ; line 77 : filterd += (4096)*512; 706 706 ; line 78 : acc_norm_temp = (s16)( filterd /1024 & 0xFFFF ); // ←FIL_CO 707 707 ; EFF_QUANTから正規化 708 708 $DGL 0,49 709 709 0010C AC20 movw ax,[hl+32] ; filterd ;[INF] 2, 1 710 710 0010E RBD00 movw _@RTARG0,ax ;[INF] 2, 1 711 711 00110 AC22 movw ax,[hl+34] ; filterd ;[INF] 2, 1 712 712 00112 RBD00 movw _@RTARG2,ax ;[INF] 2, 1 713 713 00114 RC9000004 movw _@RTARG4,#0400H ; 1024 ;[INF] 4, 1 714 714 00118 F6 clrw ax ;[INF] 1, 1 715 715 00119 RFD0000 call !@@lsdiv ;[INF] 3, 3 716 716 0011C RC900FFFF movw _@RTARG4,#0FFFFH ; -1 ;[INF] 4, 1 717 717 00120 F6 clrw ax ;[INF] 1, 1 718 718 00121 RFD0000 call !@@lsband ;[INF] 3, 3 719 719 00124 RAD00 movw ax,_@RTARG0 ;[INF] 2, 1 720 720 00126 RBF0600 movw !?L0006,ax ; acc_norm_temp ;[INF] 3, 1 721 721 ; line 79 : /* 722 722 ; line 80 : if( acc_norm[0] < acc_norm_temp ) 723 723 ; line 81 : { 724 724 ; line 82 : t_rise += 1; 725 725 ; line 83 : if( t_rise == 0 ) 726 726 ; line 84 : t_rise == 254; 727 727 ; line 85 : } 728 728 ; line 86 : else 729 729 ; line 87 : { 730 730 ; line 88 : t_rise = 0; 731 731 ; line 89 : } 732 732 ; line 90 : */ 733 733 ; line 91 : if( acc_norm[0] != acc_norm_temp ) 734 734 $DGL 0,62 735 735 00129 RAF0000 movw ax,!?L0005 ; acc_norm ;[INF] 3, 1 736 736 0012C R420600 cmpw ax,!?L0006 ; acc_norm_temp ;[INF] 3, 1 737 737 0012F DD12 bz $?L0019 ;[INF] 2, 4 738 738 ; line 92 : { 739 739 00131 ??bb01_pedometer: 740 740 ; line 93 : acc_norm[2] = acc_norm[1]; // ヒストリ 741 741 $DGL 0,64 742 742 00131 RAF0200 movw ax,!?L0005+2 ; acc_norm ;[INF] 3, 1 743 743 00134 RBF0400 movw !?L0005+4,ax ; acc_norm ;[INF] 3, 1 744 744 ; line 94 : acc_norm[1] = acc_norm[0]; 745 745 $DGL 0,65 746 746 00137 RAF0000 movw ax,!?L0005 ; acc_norm ;[INF] 3, 1 747 747 0013A RBF0200 movw !?L0005+2,ax ; acc_norm ;[INF] 3, 1 748 748 ; line 95 : acc_norm[0] = acc_norm_temp; 749 749 $DGL 0,66 750 750 0013D RAF0600 movw ax,!?L0006 ; acc_norm_temp ;[INF] 3, 1 751 751 00140 RBF0000 movw !?L0005,ax ; acc_norm ;[INF] 3, 1 752 752 00143 ??eb01_pedometer: 753 753 ; line 96 : } 754 754 00143 ?L0019: 755 755 ; line 97 : 756 756 ; line 98 : if( acc_norm[2] <= acc_norm[1] && acc_norm[1] > acc_norm[0] 757 757 ; line 99 : && acc_norm[0] > th_H ) 758 758 $DGL 0,70 759 759 00143 RAF0200 movw ax,!?L0005+2 ; acc_norm ;[INF] 3, 1 760 760 00146 R420400 cmpw ax,!?L0005+4 ; acc_norm ;[INF] 3, 1 761 761 00149 DC50 bc $?L0021 ;[INF] 2, 4 762 762 0014B RAF0000 movw ax,!?L0005 ; acc_norm ;[INF] 3, 1 763 763 0014E R420200 cmpw ax,!?L0005+2 ; acc_norm ;[INF] 3, 1 764 764 00151 DE48 bnc $?L0021 ;[INF] 2, 4 765 765 00153 RAF0000 movw ax,!?L0003 ; th_H ;[INF] 3, 1 766 766 00156 R420000 cmpw ax,!?L0005 ; acc_norm ;[INF] 3, 1 767 767 00159 DE40 bnc $?L0021 ;[INF] 2, 4 768 768 ; line 100 : // 極大で、閾値を超えていた 769 769 ; line 101 : { 770 770 0015B ??bb02_pedometer: 771 771 ; line 102 : if( 21 < interval_hh ) 772 772 $DGL 0,73 773 773 0015B R40080016 cmp !?L0007,#016H ; interval_hh,22 ;[INF] 4, 1 774 774 0015F DC1F bc $?L0023 ;[INF] 2, 4 775 775 ; line 103 : // 前回の極大からの間隔がほどよい 776 776 ; line 104 : { 777 777 00161 ??bb03_pedometer: 778 778 ; line 105 : if(( interval_hh < 160 ) && ( time_l < interval_hh ) 779 779 ; ) 780 780 $DGL 0,76 781 781 00161 R400800A0 cmp !?L0007,#0A0H ; interval_hh,160 ;[INF] 4, 1 782 782 00165 DE16 bnc $?L0027 ;[INF] 2, 4 783 783 00167 R8F0900 mov a,!?L0008 ; time_l ;[INF] 3, 1 784 784 0016A R4F0800 cmp a,!?L0007 ; interval_hh ;[INF] 3, 1 785 785 0016D DE0E bnc $?L0027 ;[INF] 2, 4 786 786 ; line 106 : // 谷を挟んでいる 787 787 ; line 107 : { 788 788 0016F ??bb04_pedometer: 789 789 ; line 108 : if( acc_norm[0] - peak_l > 4200 ){ 790 790 $DGL 0,79 791 791 0016F RAF0000 movw ax,!?L0005 ; acc_norm ;[INF] 3, 1 792 792 00172 R220A00 subw ax,!?L0009 ; peak_l ;[INF] 3, 1 793 793 00175 446910 cmpw ax,#01069H ; 4201 ;[INF] 3, 1 794 794 00178 61C8 skc ;[INF] 2, 1 795 795 0017A ??bb05_pedometer: 796 796 ; line 109 : // 一歩増えました 797 797 ; line 110 : hosu_increment(); 798 798 $DGL 0,81 799 799 0017A RFDE401 call !_hosu_increment ;[INF] 3, 3 800 800 0017D ??eb05_pedometer: 801 801 ; line 111 : } 802 802 0017D ?L0027: 803 803 ; line 112 : } 804 804 0017D ??eb04_pedometer: 805 805 ; line 113 : interval_hh = 0; 806 806 $DGL 0,84 807 807 0017D RF50800 clrb !?L0007 ; interval_hh ;[INF] 3, 1 808 808 00180 ??eb03_pedometer: 809 809 ; line 114 : } 810 810 00180 ?L0023: 811 811 ; line 115 : if( acc_norm[0] > 18000 ) 812 812 $DGL 0,86 813 813 00180 RAF0000 movw ax,!?L0005 ; acc_norm ;[INF] 3, 1 814 814 00183 445146 cmpw ax,#04651H ; 18001 ;[INF] 3, 1 815 815 00186 DC0B bc $?L0029 ;[INF] 2, 4 816 816 ; line 116 : { 817 817 00188 ??bb06_pedometer: 818 818 ; line 117 : th_L = acc_norm[0] - 10000; 819 819 $DGL 0,88 820 820 00188 RAF0000 movw ax,!?L0005 ; acc_norm ;[INF] 3, 1 821 821 0018B 241027 subw ax,#02710H ; 10000 ;[INF] 3, 1 822 822 0018E RBF0200 movw !?L0004,ax ; th_L ;[INF] 3, 1 823 823 00191 ??eb06_pedometer: 824 824 ; line 118 : } 825 825 $DGL 0,89 826 826 00191 EF19 br $?L0022 ;[INF] 2, 3 827 827 00193 ?L0029: 828 828 ; line 119 : else 829 829 ; line 120 : { 830 830 00193 ??bb07_pedometer: 831 831 ; line 121 : th_L = 11000; 832 832 $DGL 0,92 833 833 00193 30F82A movw ax,#02AF8H ; 11000 ;[INF] 3, 1 834 834 00196 RBF0200 movw !?L0004,ax ; th_L ;[INF] 3, 1 835 835 00199 ??eb07_pedometer: 836 836 ; line 122 : } 837 837 ; line 123 : } 838 838 $DGL 0,94 839 839 00199 ??eb02_pedometer: 840 840 00199 EF11 br $?L0022 ;[INF] 2, 3 841 841 0019B ?L0021: 842 842 ; line 124 : else 843 843 ; line 125 : { 844 844 0019B ??bb08_pedometer: 845 845 ; line 126 : interval_hh += ( interval_hh != 255 ) ? 1: 0; // 飽和加算 846 846 ; って楽に書けたらいいのに 847 847 $DGL 0,97 848 848 0019B R400800FF cmp !?L0007,#0FFH ; interval_hh,255 ;[INF] 4, 1 849 849 0019F DD03 bz $?L0031 ;[INF] 2, 4 850 850 001A1 E6 onew ax ;[INF] 1, 1 851 851 001A2 EF01 br $?L0032 ;[INF] 2, 3 852 852 001A4 ?L0031: 853 853 001A4 F6 clrw ax ;[INF] 1, 1 854 854 001A5 ?L0032: 855 855 001A5 R340800 movw de,#loww (?L0007) ; interval_hh ;[INF] 3, 1 856 856 001A8 89 mov a,[de] ;[INF] 1, 1 857 857 001A9 6108 add a,x ;[INF] 2, 1 858 858 001AB 99 mov [de],a ;[INF] 1, 1 859 859 001AC ??eb08_pedometer: 860 860 ; line 127 : } 861 861 001AC ?L0022: 862 862 ; line 128 : 863 863 ; line 129 : // (2) 直近の極小からの時間 864 864 ; line 130 : if( acc_norm[2] >= acc_norm[1] && acc_norm[1] < acc_norm[0] 865 865 ; line 131 : && acc_norm[0] < th_L ) 866 866 $DGL 0,102 867 867 001AC RAF0400 movw ax,!?L0005+4 ; acc_norm ;[INF] 3, 1 868 868 001AF R420200 cmpw ax,!?L0005+2 ; acc_norm ;[INF] 3, 1 869 869 001B2 DC1B bc $?L0033 ;[INF] 2, 4 870 870 001B4 RAF0200 movw ax,!?L0005+2 ; acc_norm ;[INF] 3, 1 871 871 001B7 R420000 cmpw ax,!?L0005 ; acc_norm ;[INF] 3, 1 872 872 001BA DE13 bnc $?L0033 ;[INF] 2, 4 873 873 001BC RAF0000 movw ax,!?L0005 ; acc_norm ;[INF] 3, 1 874 874 001BF R420200 cmpw ax,!?L0004 ; th_L ;[INF] 3, 1 875 875 001C2 DE0B bnc $?L0033 ;[INF] 2, 4 876 876 ; line 132 : { 877 877 001C4 ??bb09_pedometer: 878 878 ; line 133 : // 極小を検出 879 879 ; line 134 : time_l = 0; 880 880 $DGL 0,105 881 881 001C4 RF50900 clrb !?L0008 ; time_l ;[INF] 3, 1 882 882 ; line 135 : peak_l = acc_norm[0]; 883 883 $DGL 0,106 884 884 001C7 RAF0000 movw ax,!?L0005 ; acc_norm ;[INF] 3, 1 885 885 001CA RBF0A00 movw !?L0009,ax ; peak_l ;[INF] 3, 1 886 886 001CD ??eb09_pedometer: 887 887 ; line 136 : } 888 888 $DGL 0,107 889 889 001CD EF11 br $?L0034 ;[INF] 2, 3 890 890 001CF ?L0033: 891 891 ; line 137 : else 892 892 ; line 138 : { 893 893 001CF ??bb0A_pedometer: 894 894 ; line 139 : time_l += ( time_l != 255 ) ? 1: 0; 895 895 $DGL 0,110 896 896 001CF R400900FF cmp !?L0008,#0FFH ; time_l,255 ;[INF] 4, 1 897 897 001D3 DD03 bz $?L0035 ;[INF] 2, 4 898 898 001D5 E6 onew ax ;[INF] 1, 1 899 899 001D6 EF01 br $?L0036 ;[INF] 2, 3 900 900 001D8 ?L0035: 901 901 001D8 F6 clrw ax ;[INF] 1, 1 902 902 001D9 ?L0036: 903 903 001D9 R340900 movw de,#loww (?L0008) ; time_l ;[INF] 3, 1 904 904 001DC 89 mov a,[de] ;[INF] 1, 1 905 905 001DD 6108 add a,x ;[INF] 2, 1 906 906 001DF 99 mov [de],a ;[INF] 1, 1 907 907 001E0 ??eb0A_pedometer: 908 908 ; line 140 : } 909 909 001E0 ?L0034: 910 910 ; line 141 : 911 911 ; line 142 : { 912 912 001E0 ??bb0B_pedometer: 913 913 001E0 ??eb0B_pedometer: 914 914 ; line 143 : /* 915 915 ; line 144 : static u8 i = 0; 916 916 ; line 145 : 917 917 ; line 146 : vreg_ctr[VREG_C_FREE_0] = i++; 918 918 ; line 147 : 919 919 ; line 148 : vreg_ctr[VREG_C_FREE_1] = (u8)( acc_norm[0] / 256 & 0x00 920 920 ; FF ); 921 921 ; line 149 : vreg_ctr[VREG_C_FREE_2] = (u8)( acc_norm[0] & 0x00FF ); 922 922 ; line 150 : 923 923 ; line 151 : vreg_ctr[VREG_C_FREE_3] = (u8)( norm_hist[ hist_indx -1 924 924 ; & TAP-1 ] / 256 & 0xFF ); 925 925 ; line 152 : vreg_ctr[VREG_C_FREE_4] = (u8)( norm_hist[ hist_indx -1 926 926 ; & TAP-1 ] & 0xFF ); 927 927 ; line 153 : 928 928 ; line 154 : vreg_ctr[VREG_C_FREE_5] = interval_hh; 929 929 ; line 155 : vreg_ctr[VREG_C_FREE_6] = time_l; 930 930 ; line 156 : 931 931 ; line 157 : vreg_ctr[VREG_C_FREE_7] = vreg_ctr[ VREG_C_ACC_HOSU_L ]; 932 932 ; line 158 : vreg_ctr[VREG_C_FREE_8] = (u8)( peak_l / 256 & 0x00FF ); 933 933 ; line 159 : vreg_ctr[VREG_C_FREE_9] = (u8)( peak_l & 0x00FF ); 934 934 ; line 160 : // vreg_ctr[VREG_C_FREE_A] = (u8)( norm_avg[0] / 256 & 0x 935 935 ; 00FF ); 936 936 ; line 161 : // vreg_ctr[VREG_C_FREE_B] = (u8)( norm_avg[0] & 937 937 ; 0x00FF ); 938 938 ; line 162 : */ 939 939 ; line 163 : } 940 940 ; line 164 : } 941 941 $DGL 0,135 942 942 001E0 ??ef_pedometer: 943 943 001E0 1024 addw sp,#024H ;[INF] 2, 1 944 944 001E2 C6 pop hl ;[INF] 1, 1 945 945 001E3 D7 ret ;[INF] 1, 6 946 946 001E4 ??ee_pedometer: 947 947 ; line 165 : 948 948 ; line 166 : 949 949 ; line 167 : 950 950 ; line 168 : /*========================================================= 951 951 ; line 169 :  歩数+1 952 952 ; line 170 :   累積をインクリメント 953 953 ; line 171 :  履歴を更新 954 954 ; line 172 : ========================================================*/ 955 955 ; line 173 : u8 p_record; 956 956 ; line 174 : u8 last_hour = 0x23; // 履歴の最新は何時? 957 957 ; line 175 : u8 last_day = 0x30; 958 958 ; line 176 : u8 last_month = 0x12; 959 959 ; line 177 : u8 last_year = 0x99; 960 960 ; line 178 : 961 961 ; line 179 : #define HOSU_NODATA 0xFFFF 962 962 ; line 180 : #define HOSU_MAX 0xFFFE 963 963 ; line 181 : 964 964 ; line 182 : static void hosu_increment() 965 965 ; line 183 : { 966 966 001E4 _hosu_increment: 967 967 $DGL 1,107 968 968 001E4 C7 push hl ;[INF] 1, 1 969 969 001E5 2006 subw sp,#06H ;[INF] 2, 1 970 970 001E7 FBF8FF movw hl,sp ;[INF] 3, 1 971 971 001EA ??bf_hosu_increment: 972 972 ; line 184 : static u16 last_hour_fny; 973 973 ; line 185 : 974 974 ; line 186 : // 累積の更新 // 975 975 ; line 187 : // いろいろ失敗した... 976 976 ; line 188 : if( ++vreg_ctr[ VREG_C_ACC_HOSU_L ] == 0 ) 977 977 $DGL 0,6 978 978 001EA RA04B00 inc !_vreg_ctr+75 ;[INF] 3, 2 979 979 001ED RD54B00 cmp0 !_vreg_ctr+75 ;[INF] 3, 1 980 980 001F0 DF1C bnz $?L0044 ;[INF] 2, 4 981 981 ; line 189 : { 982 982 001F2 ??bb00_hosu_increment: 983 983 ; line 190 : if( ++vreg_ctr[ VREG_C_ACC_HOSU_M ] == 0 ) 984 984 $DGL 0,8 985 985 001F2 RA04C00 inc !_vreg_ctr+76 ;[INF] 3, 2 986 986 001F5 RD54C00 cmp0 !_vreg_ctr+76 ;[INF] 3, 1 987 987 001F8 DF14 bnz $?L0044 ;[INF] 2, 4 988 988 ; line 191 : { 989 989 001FA ??bb01_hosu_increment: 990 990 ; line 192 : if( ++vreg_ctr[ VREG_C_ACC_HOSU_H ] == 0 ){ 991 991 $DGL 0,10 992 992 001FA RA04D00 inc !_vreg_ctr+77 ;[INF] 3, 2 993 993 001FD RD54D00 cmp0 !_vreg_ctr+77 ;[INF] 3, 1 994 994 00200 DF0C bnz $?L0044 ;[INF] 2, 4 995 995 00202 ??bb02_hosu_increment: 996 996 ; line 193 : vreg_ctr[ VREG_C_ACC_HOSU_L ] = 255; // カンスト 997 997 ; orz 998 998 $DGL 0,11 999 999 00202 RCF4B00FF mov !_vreg_ctr+75,#0FFH ; 255 ;[INF] 4, 1 1000 1000 ; line 194 : vreg_ctr[ VREG_C_ACC_HOSU_M ] = 255; 1001 1001 $DGL 0,12 1002 1002 00206 RCF4C00FF mov !_vreg_ctr+76,#0FFH ; 255 ;[INF] 4, 1 1003 1003 ; line 195 : vreg_ctr[ VREG_C_ACC_HOSU_H ] = 255; 1004 1004 $DGL 0,13 1005 1005 0020A RCF4D00FF mov !_vreg_ctr+77,#0FFH ; 255 ;[INF] 4, 1 1006 1006 0020E ??eb02_hosu_increment: 1007 1007 ; line 196 : } 1008 1008 0020E ?L0044: 1009 1009 0020E ??eb01_hosu_increment: 1010 1010 ; line 197 : } 1011 1011 0020E ??eb00_hosu_increment: 1012 1012 ; line 198 : } 1013 1013 ; line 199 : 1014 1014 ; line 200 : { 1015 1015 0020E ??bb03_hosu_increment: 1016 1016 ; line 201 : // 毎時履歴の更新 ///////////////////////////// 1017 1017 ; line 202 : // 空白の時間を考慮する。1時間以上放置されたなど。 1018 1018 ; line 203 : u16 now_hour; 1019 1019 ; line 204 : u8 now_year; 1020 1020 ; line 205 : 1021 1021 ; line 206 : // 時計を止める必要が有るので↓は一気に行って下さい 1022 1022 ; line 207 : DI(); 1023 1023 $DGL 0,25 1024 1024 0020E 717BFA di ;[INF] 3, 4 1025 1025 ; line 208 : RWAIT = 1; 1026 1026 $DGL 0,26 1027 1027 00211 710A9E set1 RTCC1.0 ;[INF] 3, 2 1028 1028 ; line 209 : while( !RWST ){;} 1029 1029 $DGL 0,27 1030 1030 00214 ?L0046: 1031 1031 00214 31929E02 bt RTCC1.1,$?L0047 ;[INF] 4, 5 1032 1032 00218 ??bb04_hosu_increment: 1033 1033 00218 ??eb04_hosu_increment: 1034 1034 00218 EFFA br $?L0046 ;[INF] 2, 3 1035 1035 0021A ?L0047: 1036 1036 ; line 210 : now_year = bcdtob( YEAR ); 1037 1037 $DGL 0,28 1038 1038 0021A 8E98 mov a,YEAR ;[INF] 2, 1 1039 1039 0021C RFD0000 call !@@bcdtob ;[INF] 3, 3 1040 1040 0021F 9C03 mov [hl+3],a ; now_year ;[INF] 2, 1 1041 1041 ; line 211 : last_hour = HOUR; // 履歴読み出し時に使用。BCDのまま 1042 1042 ; でよい 1043 1043 $DGL 0,29 1044 1044 00221 8E94 mov a,HOUR ;[INF] 2, 1 1045 1045 00223 R9F0400 mov !_last_hour,a ;[INF] 3, 1 1046 1046 ; line 212 : last_day = DAY; 1047 1047 $DGL 0,30 1048 1048 00226 8E96 mov a,DAY ;[INF] 2, 1 1049 1049 00228 R9F0500 mov !_last_day,a ;[INF] 3, 1 1050 1050 ; line 213 : last_month = MONTH; 1051 1051 $DGL 0,31 1052 1052 0022B 8E97 mov a,MONTH ;[INF] 2, 1 1053 1053 0022D R9F0600 mov !_last_month,a ;[INF] 3, 1 1054 1054 ; line 214 : now_hour = get_long_hour(); 1055 1055 $DGL 0,32 1056 1056 00230 RFD8A03 call !_get_long_hour ;[INF] 3, 3 1057 1057 00233 13 movw ax,bc ;[INF] 1, 1 1058 1058 00234 BC04 movw [hl+4],ax ; now_hour ;[INF] 2, 1 1059 1059 ; line 215 : // RWAIT = 0; ↑で行っています 1060 1060 ; line 216 : // EI(); 〃 1061 1061 ; line 217 : 1062 1062 ; line 218 : // 歩数計が止まっていた時間を考慮して必要なら進める // 1063 1063 ; line 219 : if( last_year == now_year ) 1064 1064 $DGL 0,37 1065 1065 00236 R8F0700 mov a,!_last_year ;[INF] 3, 1 1066 1066 00239 4E03 cmp a,[hl+3] ; now_year ;[INF] 2, 1 1067 1067 0023B DF12 bnz $?L0048 ;[INF] 2, 4 1068 1068 ; line 220 : { 1069 1069 0023D ??bb05_hosu_increment: 1070 1070 ; line 221 : if( now_hour > last_hour_fny ) 1071 1071 $DGL 0,39 1072 1072 0023D RAF9200 movw ax,!?L0039 ; last_hour_fny ;[INF] 3, 1 1073 1073 00240 614904 cmpw ax,[hl+4] ; now_hour ;[INF] 3, 1 1074 1074 00243 DE41 bnc $?L0056 ;[INF] 2, 4 1075 1075 ; line 222 : { 1076 1076 00245 ??bb06_hosu_increment: 1077 1077 ; line 223 : fill_hosu_hist_hours( now_hour - last_hour_fny ) 1078 1078 ; ; 1079 1079 $DGL 0,41 1080 1080 00245 AC04 movw ax,[hl+4] ; now_hour ;[INF] 2, 1 1081 1081 00247 R229200 subw ax,!?L0039 ; last_hour_fny ;[INF] 3, 1 1082 1082 0024A RFDB902 call !_fill_hosu_hist_hours ;[INF] 3, 3 1083 1083 0024D ??eb06_hosu_increment: 1084 1084 ; line 224 : } 1085 1085 ; line 225 : } 1086 1086 $DGL 0,43 1087 1087 0024D ??eb05_hosu_increment: 1088 1088 0024D EF37 br $?L0056 ;[INF] 2, 3 1089 1089 0024F ?L0048: 1090 1090 ; line 226 : else if( last_year == ( now_year -1 ) ) 1091 1091 $DGL 0,44 1092 1092 0024F 8C03 mov a,[hl+3] ; now_year ;[INF] 2, 1 1093 1093 00251 318E shrw ax,8 ;[INF] 2, 1 1094 1094 00253 B1 decw ax ;[INF] 1, 1 1095 1095 00254 12 movw bc,ax ;[INF] 1, 1 1096 1096 00255 RD90700 mov x,!_last_year ;[INF] 3, 1 1097 1097 00258 F1 clrb a ;[INF] 1, 1 1098 1098 00259 43 cmpw ax,bc ;[INF] 1, 1 1099 1099 0025A DF1F bnz $?L0052 ;[INF] 2, 4 1100 1100 ; line 227 : { 1101 1101 0025C ??bb07_hosu_increment: 1102 1102 ; line 228 : // 年をまたいでいるとき 1103 1103 ; line 229 : u16 temp_hours = ( ( 365 + (( now_year & 0x03 ) == 1104 1104 ; 1 ? 1: 0 )) * 24 ) - last_hour_fny + now_hour; 1105 1105 $DGL 0,47 1106 1106 0025C 8C03 mov a,[hl+3] ; now_year ;[INF] 2, 1 1107 1107 0025E 5C03 and a,#03H ; 3 ;[INF] 2, 1 1108 1108 00260 91 dec a ;[INF] 1, 1 1109 1109 00261 DF03 bnz $?L0054 ;[INF] 2, 4 1110 1110 00263 E6 onew ax ;[INF] 1, 1 1111 1111 00264 EF01 br $?L0055 ;[INF] 2, 3 1112 1112 00266 ?L0054: 1113 1113 00266 F6 clrw ax ;[INF] 1, 1 1114 1114 00267 ?L0055: 1115 1115 00267 046D01 addw ax,#016DH ; 365 ;[INF] 3, 1 1116 1116 0026A 313D shlw ax,3 ;[INF] 2, 1 1117 1117 0026C 12 movw bc,ax ;[INF] 1, 1 1118 1118 0026D 01 addw ax,ax ;[INF] 1, 1 1119 1119 0026E 03 addw ax,bc ;[INF] 1, 1 1120 1120 0026F R229200 subw ax,!?L0039 ; last_hour_fny ;[INF] 3, 1 1121 1121 00272 610904 addw ax,[hl+4] ; now_hour ;[INF] 3, 1 1122 1122 00275 BB movw [hl],ax ; temp_hours ;[INF] 1, 1 1123 1123 ; line 230 : fill_hosu_hist_hours( temp_hours ); 1124 1124 $DGL 0,48 1125 1125 00276 RFDB902 call !_fill_hosu_hist_hours ;[INF] 3, 3 1126 1126 00279 ??eb07_hosu_increment: 1127 1127 ; line 231 : } 1128 1128 $DGL 0,49 1129 1129 00279 EF0B br $?L0056 ;[INF] 2, 3 1130 1130 0027B ?L0052: 1131 1131 ; line 232 : else if( last_year < now_year ) 1132 1132 $DGL 0,50 1133 1133 0027B R8F0700 mov a,!_last_year ;[INF] 3, 1 1134 1134 0027E 4E03 cmp a,[hl+3] ; now_year ;[INF] 2, 1 1135 1135 00280 DE04 bnc $?L0056 ;[INF] 2, 4 1136 1136 ; line 233 : { 1137 1137 00282 ??bb08_hosu_increment: 1138 1138 ; line 234 : // 数年放置 1139 1139 ; line 235 : fill_hosu_hist_hours( 0 ); 1140 1140 $DGL 0,53 1141 1141 00282 F6 clrw ax ;[INF] 1, 1 1142 1142 00283 RFDB902 call !_fill_hosu_hist_hours ;[INF] 3, 3 1143 1143 00286 ??eb08_hosu_increment: 1144 1144 ; line 236 : } 1145 1145 00286 ?L0056: 1146 1146 ; line 237 : else 1147 1147 ; line 238 : { 1148 1148 00286 ??bb09_hosu_increment: 1149 1149 00286 ??eb09_hosu_increment: 1150 1150 ; line 239 : // カレンダーが巻き戻るなど 1151 1151 ; line 240 : // ノーケアでよい 1152 1152 ; line 241 : } 1153 1153 ; line 242 : last_year = now_year; 1154 1154 $DGL 0,60 1155 1155 00286 8C03 mov a,[hl+3] ; now_year ;[INF] 2, 1 1156 1156 00288 R9F0700 mov !_last_year,a ;[INF] 3, 1 1157 1157 ; line 243 : last_hour_fny = now_hour; 1158 1158 $DGL 0,61 1159 1159 0028B AC04 movw ax,[hl+4] ; now_hour ;[INF] 2, 1 1160 1160 0028D RBF9200 movw !?L0039,ax ; last_hour_fny ;[INF] 3, 1 1161 1161 ; line 244 : 1162 1162 ; line 245 : // 実際にインクリメント 1163 1163 ; line 246 : if( pool[ p_record ] == HOSU_NODATA ) 1164 1164 $DGL 0,64 1165 1165 00290 RD99000 mov x,!_p_record ;[INF] 3, 1 1166 1166 00293 F1 clrb a ;[INF] 1, 1 1167 1167 00294 01 addw ax,ax ;[INF] 1, 1 1168 1168 00295 R040000 addw ax,#loww (_pool) ;[INF] 3, 1 1169 1169 00298 14 movw de,ax ;[INF] 1, 1 1170 1170 00299 A9 movw ax,[de] ;[INF] 1, 1 1171 1171 0029A 44FFFF cmpw ax,#0FFFFH ; -1 ;[INF] 3, 1 1172 1172 0029D DF04 bnz $?L0058 ;[INF] 2, 4 1173 1173 ; line 247 : { 1174 1174 0029F ??bb0A_hosu_increment: 1175 1175 ; line 248 : pool[ p_record ] = 1; 1176 1176 $DGL 0,66 1177 1177 0029F E6 onew ax ;[INF] 1, 1 1178 1178 002A0 B9 movw [de],ax ;[INF] 1, 1 1179 1179 002A1 ??eb0A_hosu_increment: 1180 1180 ; line 249 : } 1181 1181 $DGL 0,67 1182 1182 002A1 EF12 br $?L0060 ;[INF] 2, 3 1183 1183 002A3 ?L0058: 1184 1184 ; line 250 : else if( pool[ p_record ] != HOSU_MAX ) 1185 1185 $DGL 0,68 1186 1186 002A3 RD99000 mov x,!_p_record ;[INF] 3, 1 1187 1187 002A6 F1 clrb a ;[INF] 1, 1 1188 1188 002A7 01 addw ax,ax ;[INF] 1, 1 1189 1189 002A8 R040000 addw ax,#loww (_pool) ;[INF] 3, 1 1190 1190 002AB 14 movw de,ax ;[INF] 1, 1 1191 1191 002AC A9 movw ax,[de] ;[INF] 1, 1 1192 1192 002AD 44FEFF cmpw ax,#0FFFEH ; -2 ;[INF] 3, 1 1193 1193 002B0 DD03 bz $?L0060 ;[INF] 2, 4 1194 1194 ; line 251 : { 1195 1195 002B2 ??bb0B_hosu_increment: 1196 1196 ; line 252 : pool[ p_record ] += 1; 1197 1197 $DGL 0,70 1198 1198 002B2 A9 movw ax,[de] ;[INF] 1, 1 1199 1199 002B3 A1 incw ax ;[INF] 1, 1 1200 1200 002B4 B9 movw [de],ax ;[INF] 1, 1 1201 1201 002B5 ??eb0B_hosu_increment: 1202 1202 ; line 253 : } 1203 1203 002B5 ?L0060: 1204 1204 002B5 ??eb03_hosu_increment: 1205 1205 ; line 254 : } 1206 1206 ; line 255 : } 1207 1207 $DGL 0,73 1208 1208 002B5 ??ef_hosu_increment: 1209 1209 002B5 1006 addw sp,#06H ;[INF] 2, 1 1210 1210 002B7 C6 pop hl ;[INF] 1, 1 1211 1211 002B8 D7 ret ;[INF] 1, 6 1212 1212 002B9 ??ee_hosu_increment: 1213 1213 ; line 256 : 1214 1214 ; line 257 : 1215 1215 ; line 258 : 1216 1216 ; line 259 : /* ======================================================== 1217 1217 ; line 260 : 空白の時間を適切に0にして、 1218 1218 ; line 261 : 今を含む1時間のデータを書く位置にポインタ?を進める 1219 1219 ; line 262 : ======================================================== */ 1220 1220 ; line 263 : void fill_hosu_hist_hours( u16 hours ) 1221 1221 ; line 264 : { 1222 1222 002B9 _fill_hosu_hist_hours: 1223 1223 $DGL 1,168 1224 1224 002B9 C7 push hl ;[INF] 1, 1 1225 1225 002BA 16 movw hl,ax ;[INF] 1, 1 1226 1226 002BB ??bf_fill_hosu_hist_hours: 1227 1227 ; line 265 : if( hours > 255 ) 1228 1228 $DGL 0,2 1229 1229 002BB 17 movw ax,hl ;[INF] 1, 1 1230 1230 002BC 440001 cmpw ax,#0100H ; 256 ;[INF] 3, 1 1231 1231 002BF DC02 bc $?L0064 ;[INF] 2, 4 1232 1232 ; line 266 : { 1233 1233 002C1 ??bb00_fill_hosu_hist_hours: 1234 1234 ; line 267 : hours = 0; 1235 1235 $DGL 0,4 1236 1236 002C1 F6 clrw ax ;[INF] 1, 1 1237 1237 002C2 16 movw hl,ax ;[INF] 1, 1 1238 1238 002C3 ??eb00_fill_hosu_hist_hours: 1239 1239 ; line 268 : } 1240 1240 002C3 ?L0064: 1241 1241 ; line 269 : 1242 1242 ; line 270 : // 空白の数時間の設定 1243 1243 ; line 271 : do 1244 1244 ; line 272 : { 1245 1245 002C3 ??bb01_fill_hosu_hist_hours: 1246 1246 ; line 273 : p_record += 1; 1247 1247 $DGL 0,10 1248 1248 002C3 RA09000 inc !_p_record ;[INF] 3, 2 1249 1249 ; line 274 : pool[ p_record ] = 0; 1250 1250 $DGL 0,11 1251 1251 002C6 RF99000 mov c,!_p_record ;[INF] 3, 1 1252 1252 002C9 F3 clrb b ;[INF] 1, 1 1253 1253 002CA 311C shlw bc,1 ;[INF] 2, 1 1254 1254 002CC F6 clrw ax ;[INF] 1, 1 1255 1255 002CD R780000 movw _pool[bc],ax ;[INF] 3, 1 1256 1256 ; line 275 : hours -= 1; 1257 1257 $DGL 0,12 1258 1258 002D0 B7 decw hl ;[INF] 1, 1 1259 1259 002D1 ??eb01_fill_hosu_hist_hours: 1260 1260 ; line 276 : } 1261 1261 ; line 277 : while( hours != 0 ); 1262 1262 $DGL 0,14 1263 1263 002D1 F6 clrw ax ;[INF] 1, 1 1264 1264 002D2 47 cmpw ax,hl ;[INF] 1, 1 1265 1265 002D3 DFEE bnz $?L0064 ;[INF] 2, 4 1266 1266 ; line 278 : } 1267 1267 $DGL 0,15 1268 1268 002D5 ??ef_fill_hosu_hist_hours: 1269 1269 002D5 C6 pop hl ;[INF] 1, 1 1270 1270 002D6 D7 ret ;[INF] 1, 6 1271 1271 002D7 ??ee_fill_hosu_hist_hours: 1272 1272 ; line 279 : 1273 1273 ; line 280 : 1274 1274 ; line 281 : 1275 1275 ; line 282 : /* ======================================================== 1276 1276 ; line 283 : 空白の時間を適切に0にして、 1277 1277 ; line 284 : 今を含む1時間のデータを書く位置にポインタ?を進める 1278 1278 ; line 285 : ======================================================== */ 1279 1279 ; line 286 : void clear_hosu_hist() 1280 1280 ; line 287 : { 1281 1281 002D7 _clear_hosu_hist: 1282 1282 $DGL 1,183 1283 1283 002D7 C7 push hl ;[INF] 1, 1 1284 1284 002D8 ??bf_clear_hosu_hist: 1285 1285 ; line 288 : u8 hours = 0; 1286 1286 $DGL 0,2 1287 1287 002D8 5600 mov l,#00H ; 0 ;[INF] 2, 1 1288 1288 ; line 289 : // 空白の数時間の設定 1289 1289 ; line 290 : do 1290 1290 002DA ?L0071: 1291 1291 ; line 291 : { 1292 1292 002DA ??bb00_clear_hosu_hist: 1293 1293 ; line 292 : pool[ hours ] = 0xFFFF; 1294 1294 $DGL 0,6 1295 1295 002DA 66 mov a,l ;[INF] 1, 1 1296 1296 002DB F0 clrb x ;[INF] 1, 1 1297 1297 002DC 317E shrw ax,7 ;[INF] 2, 1 1298 1298 002DE 12 movw bc,ax ;[INF] 1, 1 1299 1299 002DF F6 clrw ax ;[INF] 1, 1 1300 1300 002E0 B1 decw ax ;[INF] 1, 1 1301 1301 002E1 R780000 movw _pool[bc],ax ;[INF] 3, 1 1302 1302 ; line 293 : hours -= 1; 1303 1303 $DGL 0,7 1304 1304 002E4 96 dec l ;[INF] 1, 1 1305 1305 002E5 ??eb00_clear_hosu_hist: 1306 1306 ; line 294 : } 1307 1307 ; line 295 : while( hours != 0 ); 1308 1308 $DGL 0,9 1309 1309 002E5 66 mov a,l ;[INF] 1, 1 1310 1310 002E6 D1 cmp0 a ;[INF] 1, 1 1311 1311 002E7 DFF1 bnz $?L0071 ;[INF] 2, 4 1312 1312 ; line 296 : vreg_ctr[ VREG_C_ACC_HOSU_L ] = 0; 1313 1313 $DGL 0,10 1314 1314 002E9 RF54B00 clrb !_vreg_ctr+75 ;[INF] 3, 1 1315 1315 ; line 297 : vreg_ctr[ VREG_C_ACC_HOSU_M ] = 0; 1316 1316 $DGL 0,11 1317 1317 002EC RF54C00 clrb !_vreg_ctr+76 ;[INF] 3, 1 1318 1318 ; line 298 : vreg_ctr[ VREG_C_ACC_HOSU_H ] = 0; 1319 1319 $DGL 0,12 1320 1320 002EF RF54D00 clrb !_vreg_ctr+77 ;[INF] 3, 1 1321 1321 ; line 299 : } 1322 1322 $DGL 0,13 1323 1323 002F2 ??ef_clear_hosu_hist: 1324 1324 002F2 C6 pop hl ;[INF] 1, 1 1325 1325 002F3 D7 ret ;[INF] 1, 6 1326 1326 002F4 ??ee_clear_hosu_hist: 1327 1327 ; line 300 : 1328 1328 ; line 301 : 1329 1329 ; line 302 : extern u8 iic_burst_state; 1330 1330 ; line 303 : bit record_read_msb_lsb; 1331 1331 ; line 304 : 1332 1332 ; line 305 : /* ======================================================== 1333 1333 ; line 306 : 歩数計ヒストリ読み出しの後処理(初期化) 1334 1334 ; line 307 : 読み出しポインタのクリア 1335 1335 ; line 308 : ======================================================== */ 1336 1336 ; line 309 : void hosu_read_end( ) 1337 1337 ; line 310 : { 1338 1338 002F4 _hosu_read_end: 1339 1339 $DGL 1,194 1340 1340 002F4 ??bf_hosu_read_end: 1341 1341 ; line 311 : record_read_msb_lsb = 0; 1342 1342 $DGL 0,2 1343 1343 002F4 R710300 clr1 _record_read_msb_lsb ;[INF] 3, 2 1344 1344 ; line 312 : } 1345 1345 $DGL 0,3 1346 1346 002F7 ??ef_hosu_read_end: 1347 1347 002F7 D7 ret ;[INF] 1, 6 1348 1348 002F8 ??ee_hosu_read_end: 1349 1349 ; line 313 : 1350 1350 ; line 314 : 1351 1351 ; line 315 : /* ======================================================== 1352 1352 ; line 316 : 歩数計のヒストリを返す。 1353 1353 ; line 317 : 1回呼ぶ度に、ヒストリの下位、上位、一時間遡って下位上位... 1354 1354 ; line 318 : ======================================================== */ 1355 1355 ; line 319 : u8 hosu_read( ) 1356 1356 ; line 320 : { 1357 1357 002F8 _hosu_read: 1358 1358 $DGL 1,200 1359 1359 002F8 C7 push hl ;[INF] 1, 1 1360 1360 002F9 2004 subw sp,#04H ;[INF] 2, 1 1361 1361 002FB FBF8FF movw hl,sp ;[INF] 3, 1 1362 1362 002FE ??bf_hosu_read: 1363 1363 ; line 321 : u8 dat; 1364 1364 ; line 322 : u16 temp; 1365 1365 ; line 323 : static u8 p_record_buffer; 1366 1366 ; line 324 : 1367 1367 ; line 325 : switch( iic_burst_state ){ 1368 1368 $DGL 0,6 1369 1369 002FE RD90000 mov x,!_iic_burst_state ;[INF] 3, 1 1370 1370 00301 F1 clrb a ;[INF] 1, 1 1371 1371 00302 E7 onew bc ;[INF] 1, 1 1372 1372 00303 240000 subw ax,#00H ; 0 ;[INF] 3, 1 1373 1373 00306 DD11 bz $?L0080 ;[INF] 2, 4 1374 1374 00308 23 subw ax,bc ;[INF] 1, 1 1375 1375 00309 DD1E bz $?L0081 ;[INF] 2, 4 1376 1376 0030B 23 subw ax,bc ;[INF] 1, 1 1377 1377 0030C DD25 bz $?L0082 ;[INF] 2, 4 1378 1378 0030E 23 subw ax,bc ;[INF] 1, 1 1379 1379 0030F DD2C bz $?L0083 ;[INF] 2, 4 1380 1380 00311 23 subw ax,bc ;[INF] 1, 1 1381 1381 00312 DD37 bz $?L0084 ;[INF] 2, 4 1382 1382 00314 23 subw ax,bc ;[INF] 1, 1 1383 1383 00315 DD3C bz $?L0085 ;[INF] 2, 4 1384 1384 00317 EF42 br $?L0086 ;[INF] 2, 3 1385 1385 00319 ??bb00_hosu_read: 1386 1386 ; line 326 : case( 0 ): 1387 1387 00319 ?L0080: 1388 1388 ; line 327 : p_record_buffer = p_record; 1389 1389 $DGL 0,8 1390 1390 00319 R8F9000 mov a,!_p_record ;[INF] 3, 1 1391 1391 0031C R9F9400 mov !?L0078,a ; p_record_buffer ;[INF] 3, 1 1392 1392 ; line 328 : iic_burst_state += 1; 1393 1393 $DGL 0,9 1394 1394 0031F RA00000 inc !_iic_burst_state ;[INF] 3, 2 1395 1395 ; line 329 : return( last_hour ); 1396 1396 $DGL 0,10 1397 1397 00322 RD90400 mov x,!_last_hour ;[INF] 3, 1 1398 1398 00325 F1 clrb a ;[INF] 1, 1 1399 1399 00326 12 movw bc,ax ;[INF] 1, 1 1400 1400 00327 EF5D br $?L0079 ;[INF] 2, 3 1401 1401 ; line 330 : 1402 1402 ; line 331 : case( 1 ): 1403 1403 00329 ?L0081: 1404 1404 ; line 332 : iic_burst_state += 1; 1405 1405 $DGL 0,13 1406 1406 00329 RA00000 inc !_iic_burst_state ;[INF] 3, 2 1407 1407 ; line 333 : return( last_day ); 1408 1408 $DGL 0,14 1409 1409 0032C RD90500 mov x,!_last_day ;[INF] 3, 1 1410 1410 0032F F1 clrb a ;[INF] 1, 1 1411 1411 00330 12 movw bc,ax ;[INF] 1, 1 1412 1412 00331 EF53 br $?L0079 ;[INF] 2, 3 1413 1413 ; line 334 : 1414 1414 ; line 335 : case( 2 ): 1415 1415 00333 ?L0082: 1416 1416 ; line 336 : iic_burst_state += 1; 1417 1417 $DGL 0,17 1418 1418 00333 RA00000 inc !_iic_burst_state ;[INF] 3, 2 1419 1419 ; line 337 : return( last_month ); 1420 1420 $DGL 0,18 1421 1421 00336 RD90600 mov x,!_last_month ;[INF] 3, 1 1422 1422 00339 F1 clrb a ;[INF] 1, 1 1423 1423 0033A 12 movw bc,ax ;[INF] 1, 1 1424 1424 0033B EF49 br $?L0079 ;[INF] 2, 3 1425 1425 ; line 338 : 1426 1426 ; line 339 : case( 3 ): 1427 1427 0033D ?L0083: 1428 1428 ; line 340 : iic_burst_state += 1; 1429 1429 $DGL 0,21 1430 1430 0033D RA00000 inc !_iic_burst_state ;[INF] 3, 2 1431 1431 ; line 341 : return( btobcd(last_year) ); 1432 1432 $DGL 0,22 1433 1433 00340 R8F0700 mov a,!_last_year ;[INF] 3, 1 1434 1434 00343 RFD0000 call !@@bbcd ;[INF] 3, 3 1435 1435 00346 318E shrw ax,8 ;[INF] 2, 1 1436 1436 00348 12 movw bc,ax ;[INF] 1, 1 1437 1437 00349 EF3B br $?L0079 ;[INF] 2, 3 1438 1438 ; line 342 : 1439 1439 ; line 343 : case( 4 ): 1440 1440 0034B ?L0084: 1441 1441 ; line 344 : iic_burst_state += 1; 1442 1442 $DGL 0,25 1443 1443 0034B RA00000 inc !_iic_burst_state ;[INF] 3, 2 1444 1444 ; line 345 : return( 0x55 ); // reserved dummy 1445 1445 $DGL 0,26 1446 1446 0034E 325500 movw bc,#055H ; 85 ;[INF] 3, 1 1447 1447 00351 EF33 br $?L0079 ;[INF] 2, 3 1448 1448 ; line 346 : 1449 1449 ; line 347 : case( 5 ): 1450 1450 00353 ?L0085: 1451 1451 ; line 348 : iic_burst_state += 1; 1452 1452 $DGL 0,29 1453 1453 00353 RA00000 inc !_iic_burst_state ;[INF] 3, 2 1454 1454 ; line 349 : return( 0xAA ); // reserved. dummy 1455 1455 $DGL 0,30 1456 1456 00356 32AA00 movw bc,#0AAH ; 170 ;[INF] 3, 1 1457 1457 00359 EF2B br $?L0079 ;[INF] 2, 3 1458 1458 ; line 350 : 1459 1459 ; line 351 : default: 1460 1460 0035B ?L0086: 1461 1461 ; line 352 : temp = pool[ p_record_buffer ]; 1462 1462 $DGL 0,33 1463 1463 0035B RF99400 mov c,!?L0078 ; p_record_buffer ;[INF] 3, 1 1464 1464 0035E F3 clrb b ;[INF] 1, 1 1465 1465 0035F 311C shlw bc,1 ;[INF] 2, 1 1466 1466 00361 R790000 movw ax,_pool[bc] ;[INF] 3, 1 1467 1467 00364 BB movw [hl],ax ; temp ;[INF] 1, 1 1468 1468 ; line 353 : if( record_read_msb_lsb == 0 ) 1469 1469 $DGL 0,34 1470 1470 00365 R31020005 bt _record_read_msb_lsb,$?L0089 ;[INF] 4, 5 1471 1471 ; line 354 : { 1472 1472 00369 ??bb01_hosu_read: 1473 1473 ; line 355 : dat = (u8)( temp & 0x00FF ); 1474 1474 $DGL 0,36 1475 1475 00369 8B mov a,[hl] ; temp ;[INF] 1, 1 1476 1476 0036A 9C03 mov [hl+3],a ; dat ;[INF] 2, 1 1477 1477 0036C ??eb01_hosu_read: 1478 1478 ; line 356 : } 1479 1479 $DGL 0,37 1480 1480 0036C EF07 br $?L0090 ;[INF] 2, 3 1481 1481 0036E ?L0089: 1482 1482 ; line 357 : else 1483 1483 ; line 358 : { 1484 1484 0036E ??bb02_hosu_read: 1485 1485 ; line 359 : dat = (u8)(( temp >> 8 ) & 0x00FF ); 1486 1486 $DGL 0,40 1487 1487 0036E 8C01 mov a,[hl+1] ; temp ;[INF] 2, 1 1488 1488 00370 9C03 mov [hl+3],a ; dat ;[INF] 2, 1 1489 1489 ; line 360 : p_record_buffer -= 1; 1490 1490 $DGL 0,41 1491 1491 00372 RB09400 dec !?L0078 ; p_record_buffer ;[INF] 3, 2 1492 1492 00375 ??eb02_hosu_read: 1493 1493 ; line 361 : } 1494 1494 00375 ?L0090: 1495 1495 ; line 362 : record_read_msb_lsb += 1; 1496 1496 $DGL 0,43 1497 1497 00375 7180 set1 CY ;[INF] 2, 1 1498 1498 00377 R710700 xor1 CY,_record_read_msb_lsb ;[INF] 3, 1 1499 1499 0037A 61DC rolc a,1 ;[INF] 2, 1 1500 1500 0037C 61FB rorc a,1 ;[INF] 2, 1 1501 1501 0037E R710100 mov1 _record_read_msb_lsb,CY ;[INF] 3, 2 1502 1502 ; line 363 : return( dat ); 1503 1503 $DGL 0,44 1504 1504 00381 8C03 mov a,[hl+3] ; dat ;[INF] 2, 1 1505 1505 00383 318E shrw ax,8 ;[INF] 2, 1 1506 1506 00385 12 movw bc,ax ;[INF] 1, 1 1507 1507 00386 ??eb00_hosu_read: 1508 1508 ; line 364 : } 1509 1509 00386 ?L0079: 1510 1510 ; line 365 : } 1511 1511 $DGL 0,46 1512 1512 00386 ??ef_hosu_read: 1513 1513 00386 1004 addw sp,#04H ;[INF] 2, 1 1514 1514 00388 C6 pop hl ;[INF] 1, 1 1515 1515 00389 D7 ret ;[INF] 1, 6 1516 1516 0038A ??ee_hosu_read: 1517 1517 ; line 366 : 1518 1518 ; line 367 : 1519 1519 ; line 368 : 1520 1520 ; line 369 : /* ======================================================== 1521 1521 ; line 370 : 今年の元旦からの経過時間(hour)を返す。 1522 1522 ; line 371 : 引数 無し 1523 1523 ; line 372 : 返値 u16 long_hour 1524 1524 ; line 373 : ======================================================== */ 1525 1525 ; line 374 : static const u16 DAYS_FROM_HNY[] = { 1526 1526 ; line 375 : 0, 1527 1527 ; line 376 : 0, 31, 31+28, 59+31, 90+30, 1528 1528 ; line 377 : 120+31, 151+30, 181+31, 212+31, 243+30, 1529 1529 ; line 378 : 273+31, 304+30 }; 1530 1530 ; line 379 : 1531 1531 ; line 380 : u16 get_long_hour() 1532 1532 ; line 381 : { 1533 1533 0038A _get_long_hour: 1534 1534 $DGL 1,223 1535 1535 0038A C7 push hl ;[INF] 1, 1 1536 1536 0038B 2006 subw sp,#06H ;[INF] 2, 1 1537 1537 0038D FBF8FF movw hl,sp ;[INF] 3, 1 1538 1538 00390 ??bf_get_long_hour: 1539 1539 ; line 382 : u16 long_hour; 1540 1540 ; line 383 : u8 year_hex; 1541 1541 ; line 384 : u8 month_hex; 1542 1542 ; line 385 : u8 day_hex; 1543 1543 ; line 386 : u8 hour_hex; 1544 1544 ; line 387 : 1545 1545 ; line 388 : year_hex = bcdtob( YEAR ); 1546 1546 $DGL 0,8 1547 1547 00390 8E98 mov a,YEAR ;[INF] 2, 1 1548 1548 00392 RFD0000 call !@@bcdtob ;[INF] 3, 3 1549 1549 00395 9C03 mov [hl+3],a ; year_hex ;[INF] 2, 1 1550 1550 ; line 389 : month_hex = bcdtob( MONTH ); 1551 1551 $DGL 0,9 1552 1552 00397 8E97 mov a,MONTH ;[INF] 2, 1 1553 1553 00399 RFD0000 call !@@bcdtob ;[INF] 3, 3 1554 1554 0039C 9C02 mov [hl+2],a ; month_hex ;[INF] 2, 1 1555 1555 ; line 390 : day_hex = bcdtob( DAY ); 1556 1556 $DGL 0,10 1557 1557 0039E 8E96 mov a,DAY ;[INF] 2, 1 1558 1558 003A0 RFD0000 call !@@bcdtob ;[INF] 3, 3 1559 1559 003A3 9C01 mov [hl+1],a ; day_hex ;[INF] 2, 1 1560 1560 ; line 391 : hour_hex = bcdtob( HOUR ); 1561 1561 $DGL 0,11 1562 1562 003A5 8E94 mov a,HOUR ;[INF] 2, 1 1563 1563 003A7 RFD0000 call !@@bcdtob ;[INF] 3, 3 1564 1564 003AA 9B mov [hl],a ; hour_hex ;[INF] 1, 1 1565 1565 ; line 392 : 1566 1566 ; line 393 : RWAIT = 0; 1567 1567 $DGL 0,13 1568 1568 003AB 710B9E clr1 RTCC1.0 ;[INF] 3, 2 1569 1569 ; line 394 : EI(); 1570 1570 $DGL 0,14 1571 1571 003AE 717AFA ei ;[INF] 3, 4 1572 1572 ; line 395 : 1573 1573 ; line 396 : // まず日数の部分 1574 1574 ; line 397 : long_hour = DAYS_FROM_HNY[ month_hex ]; 1575 1575 $DGL 0,17 1576 1576 003B1 8C02 mov a,[hl+2] ; month_hex ;[INF] 2, 1 1577 1577 003B3 F0 clrb x ;[INF] 1, 1 1578 1578 003B4 317E shrw ax,7 ;[INF] 2, 1 1579 1579 003B6 12 movw bc,ax ;[INF] 1, 1 1580 1580 003B7 R793000 movw ax,_DAYS_FROM_HNY[bc] ;[INF] 3, 1 1581 1581 003BA BC04 movw [hl+4],ax ; long_hour ;[INF] 2, 1 1582 1582 ; line 398 : if(( ( year_hex & 0x03 ) == 0 ) && ( ( 3 <= month_hex ) 1583 1583 $DGL 0,18 1584 1584 003BC 8C03 mov a,[hl+3] ; year_hex ;[INF] 2, 1 1585 1585 003BE 5C03 and a,#03H ; 3 ;[INF] 2, 1 1586 1586 003C0 D1 cmp0 a ;[INF] 1, 1 1587 1587 003C1 DF15 bnz $?L0093 ;[INF] 2, 4 1588 1588 003C3 8C02 mov a,[hl+2] ; month_hex ;[INF] 2, 1 1589 1589 003C5 4C03 cmp a,#03H ; 3 ;[INF] 2, 1 1590 1590 003C7 DE0C bnc $?L0095 ;[INF] 2, 4 1591 1591 ; line 399 : || (( 2 == month_hex ) 1592 1592 ; && ( day_hex == 29 )) )) 1593 1593 $DGL 0,19 1594 1594 003C9 8C02 mov a,[hl+2] ; month_hex ;[INF] 2, 1 1595 1595 003CB 4C02 cmp a,#02H ; 2 ;[INF] 2, 1 1596 1596 003CD DF09 bnz $?L0093 ;[INF] 2, 4 1597 1597 003CF 8C01 mov a,[hl+1] ; day_hex ;[INF] 2, 1 1598 1598 003D1 4C1D cmp a,#01DH ; 29 ;[INF] 2, 1 1599 1599 003D3 61F8 sknz ;[INF] 2, 1 1600 1600 003D5 ?L0095: 1601 1601 ; line 400 : { 1602 1602 003D5 ??bb00_get_long_hour: 1603 1603 ; line 401 : // 閏年で、閏日より後 1604 1604 ; line 402 : long_hour += 1; 1605 1605 $DGL 0,22 1606 1606 003D5 617904 incw [hl+4] ; long_hour ;[INF] 3, 2 1607 1607 003D8 ??eb00_get_long_hour: 1608 1608 ; line 403 : } 1609 1609 003D8 ?L0093: 1610 1610 ; line 404 : long_hour += day_hex - 1; 1611 1611 $DGL 0,24 1612 1612 003D8 8C01 mov a,[hl+1] ; day_hex ;[INF] 2, 1 1613 1613 003DA 318E shrw ax,8 ;[INF] 2, 1 1614 1614 003DC B1 decw ax ;[INF] 1, 1 1615 1615 003DD 610904 addw ax,[hl+4] ; long_hour ;[INF] 3, 1 1616 1616 003E0 BC04 movw [hl+4],ax ; long_hour ;[INF] 2, 1 1617 1617 ; line 405 : long_hour *= 24; // 日数→時間 1618 1618 $DGL 0,25 1619 1619 003E2 313D shlw ax,3 ;[INF] 2, 1 1620 1620 003E4 12 movw bc,ax ;[INF] 1, 1 1621 1621 003E5 01 addw ax,ax ;[INF] 1, 1 1622 1622 003E6 03 addw ax,bc ;[INF] 1, 1 1623 1623 003E7 BC04 movw [hl+4],ax ; long_hour ;[INF] 2, 1 1624 1624 ; line 406 : 1625 1625 ; line 407 : long_hour += hour_hex; 1626 1626 $DGL 0,27 1627 1627 003E9 8C04 mov a,[hl+4] ; long_hour ;[INF] 2, 1 1628 1628 003EB 0D add a,[hl] ; hour_hex ;[INF] 1, 1 1629 1629 003EC 70 mov x,a ;[INF] 1, 1 1630 1630 003ED 8C05 mov a,[hl+5] ; long_hour ;[INF] 2, 1 1631 1631 003EF 1C00 addc a,#00H ; 0 ;[INF] 2, 1 1632 1632 003F1 BC04 movw [hl+4],ax ; long_hour ;[INF] 2, 1 1633 1633 ; line 408 : 1634 1634 ; line 409 : return( long_hour ); 1635 1635 $DGL 0,29 1636 1636 003F3 12 movw bc,ax ;[INF] 1, 1 1637 1637 ; line 410 : } 1638 1638 $DGL 0,30 1639 1639 003F4 ??ef_get_long_hour: 1640 1640 003F4 1006 addw sp,#06H ;[INF] 2, 1 1641 1641 003F6 C6 pop hl ;[INF] 1, 1 1642 1642 003F7 D7 ret ;[INF] 1, 6 1643 1643 003F8 ??ee_get_long_hour: 1644 1644 1645 1645 ----- @@CODEL CSEG 1646 1646 1647 1647 ----- @@BASE CSEG BASE 1648 1648 END 1649 1649 1650 1650 1651 1651 ; *** Code Information *** 1652 1652 ; 1653 1653 ; $FILE C:\78k_data\yav-mcu-basara\branches\0.10(fix)\pedo_alg_thre_det2.c 1654 1654 ; 1655 1655 ; $FUNC pedometer(30) 1656 1656 ; void=(void) 1657 1657 ; CODE SIZE= 447 bytes, CLOCK_SIZE= 435 clocks, STACK_SIZE= 50 bytes 1658 1658 ; 1659 1659 ; $CALL abs(51) 1660 1660 ; bc=(int:ax) 1661 1661 ; 1662 1662 ; $CALL abs(52) 1663 1663 ; bc=(int:ax) 1664 1664 ; 1665 1665 ; $CALL abs(53) 1666 1666 ; bc=(int:ax) 1667 1667 ; 1668 1668 ; $CALL sqrt(60) 1669 1669 ; bc,de=(double:ax,bc) 1670 1670 ; 1671 1671 ; $CALL hosu_increment(110) 1672 1672 ; void=(void) 1673 1673 ; 1674 1674 ; $FUNC hosu_increment(183) 1675 1675 ; void=(void) 1676 1676 ; CODE SIZE= 213 bytes, CLOCK_SIZE= 166 clocks, STACK_SIZE= 12 bytes 1677 1677 ; 1678 1678 ; $CALL get_long_hour(214) 1679 1679 ; bc=(void) 1680 1680 ; 1681 1681 ; $CALL fill_hosu_hist_hours(223) 1682 1682 ; void=(unsigned short:ax) 1683 1683 ; 1684 1684 ; $CALL fill_hosu_hist_hours(230) 1685 1685 ; void=(unsigned short:ax) 1686 1686 ; 1687 1687 ; $CALL fill_hosu_hist_hours(235) 1688 1688 ; void=(unsigned short:ax) 1689 1689 ; 1690 1690 ; $FUNC fill_hosu_hist_hours(264) 1691 1691 ; void=(unsigned short hours:ax) 1692 1692 ; CODE SIZE= 30 bytes, CLOCK_SIZE= 31 clocks, STACK_SIZE= 2 bytes 1693 1693 ; 1694 1694 ; $FUNC clear_hosu_hist(287) 1695 1695 ; void=(void) 1696 1696 ; CODE SIZE= 29 bytes, CLOCK_SIZE= 26 clocks, STACK_SIZE= 2 bytes 1697 1697 ; 1698 1698 ; $FUNC hosu_read_end(310) 1699 1699 ; void=(void) 1700 1700 ; CODE SIZE= 4 bytes, CLOCK_SIZE= 8 clocks, STACK_SIZE= 0 bytes 1701 1701 ; 1702 1702 ; $FUNC hosu_read(320) 1703 1703 ; bc=(void) 1704 1704 ; CODE SIZE= 146 bytes, CLOCK_SIZE= 124 clocks, STACK_SIZE= 10 bytes 1705 1705 ; 1706 1706 ; $FUNC get_long_hour(381) 1707 1707 ; bc=(void) 1708 1708 ; CODE SIZE= 110 bytes, CLOCK_SIZE= 84 clocks, STACK_SIZE= 12 bytes 1709 1709 1710 1710 ; Target chip : uPD79F0104 1711 1711 ; Device file : E1.00b Segment informations: ADRS LEN NAME 00000 00000H.1 @@BITS 00000 0004AH @@CNST 00000 00008H @@R_INIT 00000 00008H @@INIT 00000 00096H @@DATA 00000 00000H @@R_INIS 00000 00000H @@INIS 00000 00000H @@DATS 00000 00000H @@CNSTL 00000 00000H @@RLINIT 00000 00000H @@INITL 00000 00000H @@DATAL 00000 00000H @@CALT 00000 003F8H ROM_CODE 00000 00000H @@CODEL 00000 00000H @@BASE Target chip : uPD79F0104 Device file : E1.00b Assembly complete, 0 error(s) and 0 warning(s) found. ( 0)