78K0R Assembler W1.31 Date:13 Jun 2010 Page: 1 Command: -c9F0104 -yC:\Program Files\NEC Electronics Tools\DEV -_msgoff inter_asm\renge.asm Para-file: In-file: inter_asm\renge.asm Obj-file: renge.rel Prn-file: renge.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:24 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 renge\renge.c 6 6 ; In-file : renge\renge.c 7 7 ; Asm-file : inter_asm\renge.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, 00H, 00H, 00H, 00H, 00H 15 15 16 16 $DGS FIL_NAM, .file, 0EEH, 0FFFEH, 03FH, 067H, 01H, 00H 17 17 $DGS AUX_FIL, renge.c 18 18 $DGS MOD_NAM, renge, 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, @@CNSTL, 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, ROM_CODE, U, U, 00H, 078H, 00H, 00H 33 33 $DGS SEC_NAM, @@CODEL, U, U, 00H, 078H, 00H, 00H 34 34 $DGS SEC_NAM, @@BASE, U, U, 00H, 078H, 00H, 00H 35 35 $DGS ENM_TAG, .1fake, 00H, 0FFFEH, 0AH, 0FH, 01H, 00H 36 36 $DGS AUX_TAG, 01H, 019H 37 37 $DGS MEB_ENM, _ERR_FINISED, 00H, 0FFFFH, 04H, 010H, 00H, 00H 38 38 $DGS MEB_ENM, _ERR_CONTINUE, 01H, 0FFFFH, 04H, 010H, 00H, 00H 39 39 $DGS END_STR, .eos, 01H, 0FFFFH, 00H, 066H, 01H, 00H 40 40 $DGS AUX_EOS, 013H, 01H 41 41 $DGS LAB_SYM, bs_S0096, U, U, 00H, 06H, 00H, 00H 42 42 $DGS LAB_SYM, es_S0096, U, U, 00H, 06H, 00H, 00H 43 43 $DGS LAB_SYM, bs_S0094, U, U, 00H, 06H, 00H, 00H 44 44 $DGS LAB_SYM, es_S0094, U, U, 00H, 06H, 00H, 00H 45 45 $DGS LAB_SYM, bs_S0095, U, U, 00H, 06H, 00H, 00H 46 46 $DGS LAB_SYM, es_S0095, U, U, 00H, 06H, 00H, 00H 47 47 $DGS STA_SYM, _tasks, U, U, 01H, 03H, 01H, 027H 48 48 $DGS AUX_STR, 00H, 00H, 016H, 0BH, 00H, 00H, 00H, 04H 49 49 $DGS GLV_SYM, _renge_init, U, U, 01H, 026H, 01H, 02H 50 50 $DGS AUX_FUN, 00H, U, U, 027H, 00H, 00H 51 51 $DGS BEG_FUN, ??bf_renge_init, U, U, 00H, 065H, 01H, 00H 52 52 $DGS AUX_BEG, 035H, 00H, 027H 53 53 $DGS END_FUN, ??ef_renge_init, U, U, 00H, 065H, 01H, 00H 54 54 $DGS AUX_END, 09H 55 55 $DGS GLV_SYM, _renge_task_interval_run, U, U, 0CH, 026H, 01H, 02H 56 56 $DGS AUX_FUN, 00H, U, U, 036H, 00H, 00H 57 57 $DGS BEG_FUN, ??bf_renge_task_interval_run, U, U, 00H, 065H, 01H, 00H 58 58 $DGS AUX_BEG, 051H, 02H, 02CH 59 59 $DGS REG_VAR, _i, 06H, 0FFFFH, 010CH, 04H, 00H, 00H 60 60 $DGS BEG_BLK, ??bb00_renge_task_interval_run, U, U, 00H, 064H, 01H, 00H 61 61 $DGS AUX_BEG, 07H, 00H, 02EH 62 62 $DGS BEG_BLK, ??bb01_renge_task_interval_run, U, U, 00H, 064H, 01H, 00H 63 63 $DGS AUX_BEG, 0BH, 00H, 00H 64 64 $DGS END_BLK, ??eb01_renge_task_interval_run, U, U, 00H, 064H, 01H, 00H 65 65 $DGS AUX_END, 0FH 66 66 $DGS END_BLK, ??eb00_renge_task_interval_run, U, U, 00H, 064H, 01H, 00H 67 67 $DGS AUX_END, 010H 68 68 $DGS END_FUN, ??ef_renge_task_interval_run, U, U, 00H, 065H, 01H, 00H 69 69 $DGS AUX_END, 012H 70 70 $DGS STA_SYM, _renge_task_immed_init, U, U, 01H, 03H, 01H, 02H 71 71 $DGS AUX_FUN, 00H, U, U, 041H, 00H, 00H 72 72 $DGS BEG_FUN, ??bf_renge_task_immed_init, U, U, 00H, 065H, 01H, 00H 73 73 $DGS AUX_BEG, 075H, 02H, 03BH 74 74 $DGS REG_VAR, _i, 06H, 0FFFFH, 010CH, 04H, 00H, 00H 75 75 $DGS BEG_BLK, ??bb00_renge_task_immed_init, U, U, 00H, 064H, 01H, 00H 76 76 $DGS AUX_BEG, 04H, 00H, 00H 77 77 $DGS END_BLK, ??eb00_renge_task_immed_init, U, U, 00H, 064H, 01H, 00H 78 78 $DGS AUX_END, 06H 79 79 $DGS END_FUN, ??ef_renge_task_immed_init, U, U, 00H, 065H, 01H, 00H 80 80 $DGS AUX_END, 07H 81 81 $DGS GLV_SYM, _renge_task_immed_add, U, U, 0CH, 026H, 01H, 02H 82 82 $DGS AUX_FUN, 00H, U, U, 062H, 00H, 00H 83 83 $DGS BEG_FUN, ??bf_renge_task_immed_add, U, U, 00H, 065H, 01H, 00H 84 84 $DGS AUX_BEG, 083H, 04H, 048H 85 85 $DGS FUN_ARG, _new_task, 02H, 0FFFFH, 01H, 09H, 01H, 01H 86 86 $DGS AUX_STR, 00H, 00H, 02H, 00H, 00H, 00H, 00H, 01H 87 87 $DGS AUT_VAR, _i, 01H, 0FFFFH, 0CH, 01H, 00H, 00H 88 88 $DGS BEG_BLK, ??bb00_renge_task_immed_add, U, U, 00H, 064H, 01H, 00H 89 89 $DGS AUX_BEG, 08H, 00H, 04AH 90 90 $DGS BEG_BLK, ??bb01_renge_task_immed_add, U, U, 00H, 064H, 01H, 00H 91 91 $DGS AUX_BEG, 0AH, 00H, 04CH 92 92 $DGS BEG_BLK, ??bb02_renge_task_immed_add, U, U, 00H, 064H, 01H, 00H 93 93 $DGS AUX_BEG, 0DH, 00H, 052H 94 94 $DGS END_BLK, ??eb02_renge_task_immed_add, U, U, 00H, 064H, 01H, 00H 95 95 $DGS AUX_END, 011H 96 96 $DGS END_BLK, ??eb01_renge_task_immed_add, U, U, 00H, 064H, 01H, 00H 97 97 $DGS AUX_END, 012H 98 98 $DGS BEG_BLK, ??bb03_renge_task_immed_add, U, U, 00H, 064H, 01H, 00H 99 99 $DGS AUX_BEG, 014H, 00H, 054H 100 100 $DGS BEG_BLK, ??bb04_renge_task_immed_add, U, U, 00H, 064H, 01H, 00H 101 101 $DGS AUX_BEG, 019H, 00H, 056H 102 102 $DGS BEG_BLK, ??bb05_renge_task_immed_add, U, U, 00H, 064H, 01H, 00H 103 103 $DGS AUX_BEG, 01BH, 00H, 00H 104 104 $DGS END_BLK, ??eb05_renge_task_immed_add, U, U, 00H, 064H, 01H, 00H 105 105 $DGS AUX_END, 01EH 106 106 $DGS END_BLK, ??eb04_renge_task_immed_add, U, U, 00H, 064H, 01H, 00H 107 107 $DGS AUX_END, 01FH 108 108 $DGS END_BLK, ??eb03_renge_task_immed_add, U, U, 00H, 064H, 01H, 00H 109 109 $DGS AUX_END, 022H 110 110 $DGS END_BLK, ??eb00_renge_task_immed_add, U, U, 00H, 064H, 01H, 00H 111 111 $DGS AUX_END, 023H 112 112 $DGS END_FUN, ??ef_renge_task_immed_add, U, U, 00H, 065H, 01H, 00H 113 113 $DGS AUX_END, 027H 114 114 $DGS GLV_SYM, _renge_task_immed_run, U, U, 0CH, 026H, 01H, 02H 115 115 $DGS AUX_FUN, 00H, U, U, 0DEH, 00H, 00H 116 116 $DGS BEG_FUN, ??bf_renge_task_immed_run, U, U, 00H, 065H, 01H, 00H 117 117 $DGS AUX_BEG, 0B0H, 04H, 068H 118 118 $DGS AUT_VAR, _list_id, 03H, 0FFFFH, 0CH, 01H, 00H, 00H 119 119 $DGS AUT_VAR, _last_task_id, 02H, 0FFFFH, 0CH, 01H, 00H, 00H 120 120 $DGS BEG_BLK, ??bb00_renge_task_immed_run, U, U, 00H, 064H, 01H, 00H 121 121 $DGS AUX_BEG, 05H, 00H, 06AH 122 122 $DGS BEG_BLK, ??bb01_renge_task_immed_run, U, U, 00H, 064H, 01H, 00H 123 123 $DGS AUX_BEG, 07H, 00H, 06CH 124 124 $DGS BEG_BLK, ??bb02_renge_task_immed_run, U, U, 00H, 064H, 01H, 00H 125 125 $DGS AUX_BEG, 08H, 00H, 06EH 126 126 $DGS BEG_BLK, ??bb03_renge_task_immed_run, U, U, 00H, 064H, 01H, 00H 127 127 $DGS AUX_BEG, 0BH, 00H, 072H 128 128 $DGS END_BLK, ??eb03_renge_task_immed_run, U, U, 00H, 064H, 01H, 00H 129 129 $DGS AUX_END, 011H 130 130 $DGS BEG_BLK, ??bb04_renge_task_immed_run, U, U, 00H, 064H, 01H, 00H 131 131 $DGS AUX_BEG, 014H, 00H, 074H 132 132 $DGS BEG_BLK, ??bb05_renge_task_immed_run, U, U, 00H, 064H, 01H, 00H 133 133 $DGS AUX_BEG, 016H, 00H, 07CH 134 134 $DGS END_BLK, ??eb05_renge_task_immed_run, U, U, 00H, 064H, 01H, 00H 135 135 $DGS AUX_END, 018H 136 136 $DGS END_BLK, ??eb04_renge_task_immed_run, U, U, 00H, 064H, 01H, 00H 137 137 $DGS AUX_END, 01AH 138 138 $DGS END_BLK, ??eb02_renge_task_immed_run, U, U, 00H, 064H, 01H, 00H 139 139 $DGS AUX_END, 01BH 140 140 $DGS BEG_BLK, ??bb06_renge_task_immed_run, U, U, 00H, 064H, 01H, 00H 141 141 $DGS AUX_BEG, 01EH, 00H, 07EH 142 142 $DGS BEG_BLK, ??bb07_renge_task_immed_run, U, U, 00H, 064H, 01H, 00H 143 143 $DGS AUX_BEG, 021H, 00H, 080H 144 144 $DGS BEG_BLK, ??bb08_renge_task_immed_run, U, U, 00H, 064H, 01H, 00H 145 145 $DGS AUX_BEG, 023H, 00H, 08AH 146 146 $DGS END_BLK, ??eb08_renge_task_immed_run, U, U, 00H, 064H, 01H, 00H 147 147 $DGS AUX_END, 025H 148 148 $DGS END_BLK, ??eb07_renge_task_immed_run, U, U, 00H, 064H, 01H, 00H 149 149 $DGS AUX_END, 026H 150 150 $DGS END_BLK, ??eb06_renge_task_immed_run, U, U, 00H, 064H, 01H, 00H 151 151 $DGS AUX_END, 028H 152 152 $DGS END_BLK, ??eb01_renge_task_immed_run, U, U, 00H, 064H, 01H, 00H 153 153 $DGS AUX_END, 02AH 154 154 $DGS BEG_BLK, ??bb09_renge_task_immed_run, U, U, 00H, 064H, 01H, 00H 155 155 $DGS AUX_BEG, 02DH, 00H, 08CH 156 156 $DGS BEG_BLK, ??bb0A_renge_task_immed_run, U, U, 00H, 064H, 01H, 00H 157 157 $DGS AUX_BEG, 02FH, 00H, 092H 158 158 $DGS AUT_VAR, _i, 01H, 0FFFFH, 0CH, 01H, 01H, 00H 159 159 $DGS AUX_STR, 00H, 030H, 01H, 00H, 00H, 00H, 00H, 00H 160 160 $DGS AUT_VAR, _j, 00H, 0FFFFH, 0CH, 01H, 01H, 00H 161 161 $DGS AUX_STR, 00H, 030H, 01H, 00H, 00H, 00H, 00H, 00H 162 162 $DGS BEG_BLK, ??bb0B_renge_task_immed_run, U, U, 00H, 064H, 01H, 00H 163 163 $DGS AUX_BEG, 033H, 00H, 096H 164 164 $DGS END_BLK, ??eb0B_renge_task_immed_run, U, U, 00H, 064H, 01H, 00H 165 165 $DGS AUX_END, 035H 166 166 $DGS BEG_BLK, ??bb0C_renge_task_immed_run, U, U, 00H, 064H, 01H, 00H 167 167 $DGS AUX_BEG, 03CH, 00H, 098H 168 168 $DGS BEG_BLK, ??bb0D_renge_task_immed_run, U, U, 00H, 064H, 01H, 00H 169 169 $DGS AUX_BEG, 03FH, 00H, 09AH 170 170 $DGS BEG_BLK, ??bb0E_renge_task_immed_run, U, U, 00H, 064H, 01H, 00H 171 171 $DGS AUX_BEG, 041H, 00H, 09CH 172 172 $DGS BEG_BLK, ??bb0F_renge_task_immed_run, U, U, 00H, 064H, 01H, 00H 173 173 $DGS AUX_BEG, 044H, 00H, 0A0H 174 174 $DGS END_BLK, ??eb0F_renge_task_immed_run, U, U, 00H, 064H, 01H, 00H 175 175 $DGS AUX_END, 046H 176 176 $DGS BEG_BLK, ??bb10_renge_task_immed_run, U, U, 00H, 064H, 01H, 00H 177 177 $DGS AUX_BEG, 04BH, 00H, 0A2H 178 178 $DGS BEG_BLK, ??bb11_renge_task_immed_run, U, U, 00H, 064H, 01H, 00H 179 179 $DGS AUX_BEG, 04DH, 00H, 0AAH 180 180 $DGS END_BLK, ??eb11_renge_task_immed_run, U, U, 00H, 064H, 01H, 00H 181 181 $DGS AUX_END, 04FH 182 182 $DGS END_BLK, ??eb10_renge_task_immed_run, U, U, 00H, 064H, 01H, 00H 183 183 $DGS AUX_END, 050H 184 184 $DGS END_BLK, ??eb0E_renge_task_immed_run, U, U, 00H, 064H, 01H, 00H 185 185 $DGS AUX_END, 054H 186 186 $DGS BEG_BLK, ??bb12_renge_task_immed_run, U, U, 00H, 064H, 01H, 00H 187 187 $DGS AUX_BEG, 056H, 00H, 0B0H 188 188 $DGS END_BLK, ??eb12_renge_task_immed_run, U, U, 00H, 064H, 01H, 00H 189 189 $DGS AUX_END, 05BH 190 190 $DGS END_BLK, ??eb0D_renge_task_immed_run, U, U, 00H, 064H, 01H, 00H 191 191 $DGS AUX_END, 05CH 192 192 $DGS BEG_BLK, ??bb13_renge_task_immed_run, U, U, 00H, 064H, 01H, 00H 193 193 $DGS AUX_BEG, 05EH, 00H, 0B2H 194 194 $DGS BEG_BLK, ??bb14_renge_task_immed_run, U, U, 00H, 064H, 01H, 00H 195 195 $DGS AUX_BEG, 062H, 00H, 0B8H 196 196 $DGS END_BLK, ??eb14_renge_task_immed_run, U, U, 00H, 064H, 01H, 00H 197 197 $DGS AUX_END, 065H 198 198 $DGS END_BLK, ??eb13_renge_task_immed_run, U, U, 00H, 064H, 01H, 00H 199 199 $DGS AUX_END, 068H 200 200 $DGS BEG_BLK, ??bb15_renge_task_immed_run, U, U, 00H, 064H, 01H, 00H 201 201 $DGS AUX_BEG, 06BH, 00H, 0BEH 202 202 $DGS END_BLK, ??eb15_renge_task_immed_run, U, U, 00H, 064H, 01H, 00H 203 203 $DGS AUX_END, 071H 204 204 $DGS END_BLK, ??eb0C_renge_task_immed_run, U, U, 00H, 064H, 01H, 00H 205 205 $DGS AUX_END, 072H 206 206 $DGS BEG_BLK, ??bb16_renge_task_immed_run, U, U, 00H, 064H, 01H, 00H 207 207 $DGS AUX_BEG, 077H, 00H, 0C0H 208 208 $DGS BEG_BLK, ??bb17_renge_task_immed_run, U, U, 00H, 064H, 01H, 00H 209 209 $DGS AUX_BEG, 079H, 00H, 0C2H 210 210 $DGS BEG_BLK, ??bb18_renge_task_immed_run, U, U, 00H, 064H, 01H, 00H 211 211 $DGS AUX_BEG, 07EH, 00H, 0C4H 212 212 $DGS BEG_BLK, ??bb19_renge_task_immed_run, U, U, 00H, 064H, 01H, 00H 213 213 $DGS AUX_BEG, 080H, 00H, 0CCH 214 214 $DGS END_BLK, ??eb19_renge_task_immed_run, U, U, 00H, 064H, 01H, 00H 215 215 $DGS AUX_END, 082H 216 216 $DGS END_BLK, ??eb18_renge_task_immed_run, U, U, 00H, 064H, 01H, 00H 217 217 $DGS AUX_END, 083H 218 218 $DGS END_BLK, ??eb17_renge_task_immed_run, U, U, 00H, 064H, 01H, 00H 219 219 $DGS AUX_END, 087H 220 220 $DGS BEG_BLK, ??bb1A_renge_task_immed_run, U, U, 00H, 064H, 01H, 00H 221 221 $DGS AUX_BEG, 089H, 00H, 0D8H 222 222 $DGS END_BLK, ??eb1A_renge_task_immed_run, U, U, 00H, 064H, 01H, 00H 223 223 $DGS AUX_END, 08BH 224 224 $DGS END_BLK, ??eb16_renge_task_immed_run, U, U, 00H, 064H, 01H, 00H 225 225 $DGS AUX_END, 08CH 226 226 $DGS END_BLK, ??eb0A_renge_task_immed_run, U, U, 00H, 064H, 01H, 00H 227 227 $DGS AUX_END, 08EH 228 228 $DGS END_BLK, ??eb09_renge_task_immed_run, U, U, 00H, 064H, 01H, 00H 229 229 $DGS AUX_END, 08FH 230 230 $DGS END_BLK, ??eb00_renge_task_immed_run, U, U, 00H, 064H, 01H, 00H 231 231 $DGS AUX_END, 090H 232 232 $DGS BEG_BLK, ??bb1B_renge_task_immed_run, U, U, 00H, 064H, 01H, 00H 233 233 $DGS AUX_BEG, 098H, 00H, 00H 234 234 $DGS END_BLK, ??eb1B_renge_task_immed_run, U, U, 00H, 064H, 01H, 00H 235 235 $DGS AUX_END, 09BH 236 236 $DGS END_FUN, ??ef_renge_task_immed_run, U, U, 00H, 065H, 01H, 00H 237 237 $DGS AUX_END, 09EH 238 238 $DGS GLV_SYM, _wait_ms, U, U, 01H, 026H, 01H, 02H 239 239 $DGS AUX_FUN, 00H, U, U, 0EEH, 00H, 00H 240 240 $DGS BEG_FUN, ??bf_wait_ms, U, U, 00H, 065H, 01H, 00H 241 241 $DGS AUX_BEG, 0157H, 04H, 0E4H 242 242 $DGS FUN_ARG, _ms, 02H, 0FFFFH, 0CH, 09H, 00H, 00H 243 243 $DGS AUT_VAR, _fine, 00H, 0FFFFH, 0DH, 01H, 00H, 00H 244 244 $DGS BEG_BLK, ??bb00_wait_ms, U, U, 00H, 064H, 01H, 00H 245 245 $DGS AUX_BEG, 06H, 00H, 0E6H 246 246 $DGS BEG_BLK, ??bb01_wait_ms, U, U, 00H, 064H, 01H, 00H 247 247 $DGS AUX_BEG, 0DH, 00H, 00H 248 248 $DGS END_BLK, ??eb01_wait_ms, U, U, 00H, 064H, 01H, 00H 249 249 $DGS AUX_END, 0FH 250 250 $DGS END_BLK, ??eb00_wait_ms, U, U, 00H, 064H, 01H, 00H 251 251 $DGS AUX_END, 010H 252 252 $DGS END_FUN, ??ef_wait_ms, U, U, 00H, 065H, 01H, 00H 253 253 $DGS AUX_END, 011H 254 254 $DGS GLV_SYM, _renge_flg_interval, U, U, 034CH, 027H, 00H, 00H 255 255 $DGS GLV_SYM, _renge_task_interval_run_force, U, U, 034CH, 027H, 00H, 00H 256 256 $DGS GLV_SYM, _renge_task_immediate_not_empty, U, U, 034CH, 027H, 00H, 00H 257 257 $DGS GLV_SYM, _system_time, U, U, 0CH, 026H, 00H, 00H 258 258 $DGS GLV_SYM, _tasks_immed, U, U, 0AH, 026H, 01H, 027H 259 259 $DGS AUX_STR, 013H, 00H, 010H, 08H, 00H, 00H, 00H, 04H 260 260 $DGS GLV_SYM, _tsk_sw, U, U, 01H, 02H, 01H, 02H 261 261 $DGS AUX_FUN, 00H, U, U, 00H, 00H, 00H 262 262 $DGS GLV_SYM, _tsk_adc, U, U, 01H, 02H, 01H, 02H 263 263 $DGS AUX_FUN, 00H, U, U, 00H, 00H, 00H 264 264 $DGS GLV_SYM, _tsk_batt, U, U, 01H, 02H, 01H, 02H 265 265 $DGS AUX_FUN, 00H, U, U, 00H, 00H, 00H 266 266 $DGS GLV_SYM, _tsk_led_pow, U, U, 01H, 02H, 01H, 02H 267 267 $DGS AUX_FUN, 00H, U, U, 00H, 00H, 00H 268 268 $DGS GLV_SYM, _tsk_led_wifi, U, U, 01H, 02H, 01H, 02H 269 269 $DGS AUX_FUN, 00H, U, U, 00H, 00H, 00H 270 270 $DGS GLV_SYM, _tsk_led_notify, U, U, 01H, 02H, 01H, 02H 271 271 $DGS AUX_FUN, 00H, U, U, 00H, 00H, 00H 272 272 $DGS GLV_SYM, _tsk_led_cam, U, U, 01H, 02H, 01H, 02H 273 273 $DGS AUX_FUN, 00H, U, U, 00H, 00H, 00H 274 274 $DGS GLV_SYM, _tsk_misc_stat, U, U, 01H, 02H, 01H, 02H 275 275 $DGS AUX_FUN, 00H, U, U, 00H, 00H, 00H 276 276 $DGS GLV_SYM, _tsk_debug, U, U, 01H, 02H, 01H, 02H 277 277 $DGS AUX_FUN, 00H, U, U, 00H, 00H, 00H 278 278 $DGS GLV_SYM, _tsk_debug2, U, U, 01H, 02H, 01H, 02H 279 279 $DGS AUX_FUN, 00H, U, U, 00H, 00H, 00H 280 280 $DGS GLV_SYM, _tsk_sys, U, U, 01H, 02H, 01H, 02H 281 281 $DGS AUX_FUN, 00H, U, U, 00H, 00H, 00H 282 282 $DGS GLV_SYM, _WDT_Restart, U, U, 01H, 02H, 01H, 02H 283 283 $DGS AUX_FUN, 00H, U, U, 00H, 00H, 00H 284 284 285 285 EXTRN _tsk_sw 286 286 EXTRN _tsk_adc 287 287 EXTRN _tsk_batt 288 288 EXTRN _tsk_led_pow 289 289 EXTRN _tsk_led_wifi 290 290 EXTRN _tsk_led_notify 291 291 EXTRN _tsk_led_cam 292 292 EXTRN _tsk_misc_stat 293 293 EXTRN _tsk_debug 294 294 EXTRN _tsk_debug2 295 295 EXTRN _tsk_sys 296 296 EXTRN _WDT_Restart 297 297 PUBLIC _renge_flg_interval 298 298 PUBLIC _renge_task_interval_run_force 299 299 PUBLIC _renge_task_immediate_not_empty 300 300 PUBLIC _system_time 301 301 PUBLIC _tasks_immed 302 302 PUBLIC _renge_init 303 303 PUBLIC _renge_task_interval_run 304 304 PUBLIC _renge_task_immed_add 305 305 PUBLIC _renge_task_immed_run 306 306 PUBLIC _wait_ms 307 307 308 308 ----- @@BITS BSEG 309 309 00000.0 _renge_flg_interval DBIT 310 310 00000.1 _renge_task_interval_run_force DBIT 311 311 00000.2 _renge_task_immediate_not_empty DBIT 312 312 313 313 ----- @@CNST CSEG MIRRORP 314 314 315 315 ----- @@R_INIT CSEG UNIT64KP 316 316 00000 R0000 DW loww (_tsk_sw) 317 317 00002 R0000 DW loww (_tsk_adc) 318 318 00004 R0000 DW loww (_tsk_batt) 319 319 00006 R0000 DW loww (_tsk_led_pow) 320 320 00008 R0000 DW loww (_tsk_led_wifi) 321 321 0000A R0000 DW loww (_tsk_led_notify) 322 322 0000C R0000 DW loww (_tsk_led_cam) 323 323 0000E R0000 DW loww (_tsk_misc_stat) 324 324 00010 R0000 DW loww (_tsk_debug) 325 325 00012 R0000 DW loww (_tsk_debug2) 326 326 00014 R0000 DW loww (_tsk_sys) 327 327 328 328 ----- @@INIT DSEG BASEP 329 329 00000 _tasks: DS (22) 330 330 331 331 ----- @@DATA DSEG BASEP 332 332 00000 _system_time: DS (1) 333 333 00001 DS (1) 334 334 00002 _tasks_immed: DS (16) 335 335 336 336 ----- @@R_INIS CSEG UNIT64KP 337 337 338 338 ----- @@INIS DSEG SADDRP 339 339 340 340 ----- @@DATS DSEG SADDRP 341 341 342 342 ----- @@CNSTL CSEG PAGE64KP 343 343 344 344 ----- @@RLINIT CSEG UNIT64KP 345 345 346 346 ----- @@INITL DSEG UNIT64KP 347 347 348 348 ----- @@DATAL DSEG UNIT64KP 349 349 350 350 ----- @@CALT CSEG CALLT0 351 351 352 352 ; Sub-Routines created by CC78K0R 353 353 354 354 ----- ROM_CODE CSEG BASE 355 355 00000 bs_S0096: 356 356 00000 F0 clrb x ;[INF] 1, 1 357 357 00001 317E shrw ax,7 ;[INF] 2, 1 358 358 00003 12 movw bc,ax ;[INF] 1, 1 359 359 00004 E6 onew ax ;[INF] 1, 1 360 360 00005 R780200 movw _tasks_immed[bc],ax ;[INF] 3, 1 361 361 00008 D7 ret ;[INF] 1, 6 362 362 00009 es_S0096: 363 363 364 364 ----- ROM_CODE CSEG BASE 365 365 00009 bs_S0094: 366 366 00009 8C01 mov a,[hl+1] ;[INF] 2, 1 367 367 0000B F0 clrb x ;[INF] 1, 1 368 368 0000C 317E shrw ax,7 ;[INF] 2, 1 369 369 0000E R040200 addw ax,#loww (_tasks_immed) ;[INF] 3, 1 370 370 00011 14 movw de,ax ;[INF] 1, 1 371 371 00012 A9 movw ax,[de] ;[INF] 1, 1 372 372 00013 6168 or a,x ;[INF] 2, 1 373 373 00015 D7 ret ;[INF] 1, 6 374 374 00016 es_S0094: 375 375 376 376 ----- ROM_CODE CSEG BASE 377 377 00016 bs_S0095: 378 378 00016 8C03 mov a,[hl+3] ;[INF] 2, 1 379 379 00018 F0 clrb x ;[INF] 1, 1 380 380 00019 317E shrw ax,7 ;[INF] 2, 1 381 381 0001B R040200 addw ax,#loww (_tasks_immed) ;[INF] 3, 1 382 382 0001E 14 movw de,ax ;[INF] 1, 1 383 383 0001F A9 movw ax,[de] ;[INF] 1, 1 384 384 00020 6168 or a,x ;[INF] 2, 1 385 385 00022 D7 ret ;[INF] 1, 6 386 386 00023 es_S0095: 387 387 388 388 ; *** Sub-Routine Information *** 389 389 ; 390 390 ; $SUB bs_S0094 391 391 ; CODE SIZE= 13 bytes 392 392 ; 393 393 ; $SUB bs_S0095 394 394 ; CODE SIZE= 13 bytes 395 395 ; 396 396 ; $SUB bs_S0096 397 397 ; CODE SIZE= 9 bytes 398 398 399 399 ; End of Sub-Routines 400 400 401 401 ; line 1 : #pragma section @@CODE ROM_CODE 402 402 ; line 2 : #pragma nop 403 403 ; line 3 : #pragma ei 404 404 ; line 4 : #pragma di 405 405 ; line 5 : #pragma sfr 406 406 ; line 6 : 407 407 ; line 7 : /*************************************************************** 408 408 ; *************** 409 409 ; line 8 : タスクシステム? 410 410 ; line 9 : なるほど、iTRONにはコンフィギュレータがあるはずだ。 411 411 ; line 10 : →作りました 412 412 ; line 11 : ctr_mcu_config.rb 参照。 task_config.hが作成されます。 413 413 ; line 12 : *************************************************************** 414 414 ; **************/ 415 415 ; line 13 : #include "renge.h" 416 416 ; line 14 : #include "renge_task_intval.h" 417 417 ; line 15 : #include "renge_task_immediate.h" 418 418 ; line 16 : #include "..\WDT.h" 419 419 ; line 17 : #include "..\config.h" 420 420 ; line 18 : #include "..\user_define.h" 421 421 ; line 19 : 422 422 ; line 20 : 423 423 ; line 21 : #define _renge_test_ 424 424 ; line 22 : 425 425 ; line 23 : //************************************************************** 426 426 ; **************** 427 427 ; line 24 : bit renge_flg_interval; 428 428 ; line 25 : bit renge_task_interval_run_force; 429 429 ; line 26 : bit renge_task_immediate_not_empty; 430 430 ; line 27 : 431 431 ; line 28 : u8 system_time; 432 432 ; line 29 : 433 433 ; line 30 : 434 434 ; line 31 : 435 435 ; line 32 : #include "..\bsr_system.h" 436 436 ; line 33 : extern system_status_ system_status; 437 437 ; line 34 : 438 438 ; line 35 : 439 439 ; line 36 : 440 440 ; line 37 : //************************************************************** 441 441 ; **************** 442 442 ; line 38 : static void renge_task_immed_init(); 443 443 ; line 39 : static void renge_task_immed_del(); 444 444 ; line 40 : 445 445 ; line 41 : 446 446 ; line 42 : 447 447 ; line 43 : //************************************************************** 448 448 ; **************** 449 449 ; line 44 : task_status_immed ( *tasks_immed[ TASK_IMMED_RUN_LIST_MAX ] )(); 450 450 ; line 45 : 451 451 ; line 46 : 452 452 ; line 47 : 453 453 ; line 48 : /*************************************************************** 454 454 ; *************** 455 455 ; line 49 : 初期化 456 456 ; line 50 : ・タスクシステムの動的部分の初期化 457 457 ; line 51 : ・インターバルタイマ 458 458 ; line 52 : *************************************************************** 459 459 ; **************/ 460 460 ; line 53 : void renge_init(){ 461 461 462 462 ----- ROM_CODE CSEG BASE 463 463 00023 _renge_init: 464 464 $DGL 1,33 465 465 00023 ??bf_renge_init: 466 466 ; line 54 : renge_task_immed_init(); 467 467 $DGL 0,2 468 468 00023 RED5100 br !_renge_task_immed_init ;[INF] 3, 3 469 469 00026 ??ef_renge_init: 470 470 00026 ??ee_renge_init: 471 471 ; line 55 : /* 472 472 ; line 56 : イベントタイマのセットなど 473 473 ; line 57 : 今回はRTCを流用しているのでコメントアウト 474 474 ; line 58 : #define renge_tick 19xxxxxxx [ms] 475 475 ; line 59 : renge_interval_init(); → RTC_init(); 476 476 ; line 60 : */ 477 477 ; line 61 : } 478 478 ; line 62 : 479 479 ; line 63 : 480 480 ; line 64 : 481 481 ; line 65 : /*************************************************************** 482 482 ; *************** 483 483 ; line 66 : システムチックを進める 484 484 ; line 67 : *************************************************************** 485 485 ; **************/ 486 486 ; line 68 : /* 487 487 ; line 69 : void renge_interval(){ 488 488 ; line 70 : // RTCがやってくれる 489 489 ; line 71 : →__interrupt void int_rtc_int(); 490 490 ; line 72 : } 491 491 ; line 73 : */ 492 492 ; line 74 : 493 493 ; line 75 : 494 494 ; line 76 : 495 495 ; line 77 : /*************************************************************** 496 496 ; *************** 497 497 ; line 78 : コンパイル時に決まっている、インターバル起動のタスク 498 498 ; line 79 : そのうち、逐次起動と混ぜるかもしれない。 499 499 ; line 80 : *************************************************************** 500 500 ; **************/ 501 501 ; line 81 : err renge_task_interval_run(){ 502 502 00026 _renge_task_interval_run: 503 503 $DGL 1,39 504 504 00026 C7 push hl ;[INF] 1, 1 505 505 00027 ??bf_renge_task_interval_run: 506 506 ; line 82 : u8 i; 507 507 ; line 83 : 508 508 ; line 84 : // インターバル起動 509 509 ; line 85 : if(( renge_flg_interval == 1 ) 510 510 ; line 86 : || ( renge_task_interval_run_force != 0 )) // todo 統合 511 511 $DGL 0,6 512 512 00027 R31020004 bt _renge_flg_interval,$?L0007 ;[INF] 4, 5 513 513 0002B R3114001F bf _renge_task_interval_run_force,$?L0009 ;[INF] 4, 5 514 514 0002F ?L0007: 515 515 ; line 87 : { 516 516 0002F ??bb00_renge_task_interval_run: 517 517 ; line 88 : renge_task_interval_run_force = 0; 518 518 $DGL 0,8 519 519 0002F R711300 clr1 _renge_task_interval_run_force ;[INF] 3, 2 520 520 ; line 89 : renge_flg_interval = 0; 521 521 $DGL 0,9 522 522 00032 R710300 clr1 _renge_flg_interval ;[INF] 3, 2 523 523 ; line 90 : for( i = 0; i != TSK_LAST; i += 1 ) 524 524 $DGL 0,10 525 525 00035 5600 mov l,#00H ; 0 ;[INF] 2, 1 526 526 00037 ?L0008: 527 527 00037 66 mov a,l ;[INF] 1, 1 528 528 00038 4C0B cmp a,#0BH ; 11 ;[INF] 2, 1 529 529 0003A DD12 bz $?L0009 ;[INF] 2, 4 530 530 ; line 91 : { 531 531 0003C ??bb01_renge_task_interval_run: 532 532 ; line 92 : tasks[ i ](); 533 533 $DGL 0,12 534 534 0003C 72 mov c,a ;[INF] 1, 1 535 535 0003D F3 clrb b ;[INF] 1, 1 536 536 0003E 311C shlw bc,1 ;[INF] 2, 1 537 537 00040 R790000 movw ax,_tasks[bc] ;[INF] 3, 1 538 538 00043 CEFC00 mov CS,#00H ; 0 ;[INF] 3, 1 539 539 00046 61CA call ax ;[INF] 2, 3 540 540 ; line 93 : // 逐次起動タスクがあったら起動しておく 541 541 ; line 94 : renge_task_immed_run(); 542 542 $DGL 0,14 543 543 00048 RFDA800 call !_renge_task_immed_run ;[INF] 3, 3 544 544 0004B ??eb01_renge_task_interval_run: 545 545 ; line 95 : } 546 546 $DGL 0,15 547 547 0004B 86 inc l ;[INF] 1, 1 548 548 0004C EFE9 br $?L0008 ;[INF] 2, 3 549 549 0004E ?L0009: 550 550 0004E ??eb00_renge_task_interval_run: 551 551 ; line 96 : } 552 552 ; line 97 : return( ERR_SUCCESS ); 553 553 $DGL 0,17 554 554 0004E F7 clrw bc ;[INF] 1, 1 555 555 ; line 98 : } 556 556 $DGL 0,18 557 557 0004F ??ef_renge_task_interval_run: 558 558 0004F C6 pop hl ;[INF] 1, 1 559 559 00050 D7 ret ;[INF] 1, 6 560 560 00051 ??ee_renge_task_interval_run: 561 561 ; line 99 : 562 562 ; line 100 : 563 563 ; line 101 : 564 564 ; line 102 : /*************************************************************** 565 565 ; ************** 566 566 ; line 103 : ■逐一起動タスク■ 567 567 ; line 104 : 568 568 ; line 105 : ●task_immed を返す関数。 569 569 ; line 106 : ●システムtick、何らかの割り込み(I2C通信完了など)で 570 570 ; line 107 : スリープから復帰したタイミングで実行されます。 571 571 ; line 108 : 572 572 ; line 109 : ■返値 ERR_FINISED タスクを削除 573 573 ; line 110 :     それ以外 次のタイミングでまた実行 574 574 ; line 111 : 575 575 ; line 112 : *************************************************************** 576 576 ; **************/ 577 577 ; line 113 : 578 578 ; line 114 : 579 579 ; line 115 : /************************************** 580 580 ; line 116 : **************************************/ 581 581 ; line 117 : void renge_task_immed_init(){ 582 582 00051 _renge_task_immed_init: 583 583 $DGL 1,54 584 584 00051 C7 push hl ;[INF] 1, 1 585 585 00052 ??bf_renge_task_immed_init: 586 586 ; line 118 : u8 i; 587 587 ; line 119 : 588 588 ; line 120 : for( i = 0; i < TASK_IMMED_RUN_LIST_MAX; i++ ){ 589 589 $DGL 0,4 590 590 00052 5600 mov l,#00H ; 0 ;[INF] 2, 1 591 591 00054 ?L0013: 592 592 00054 66 mov a,l ;[INF] 1, 1 593 593 00055 4C08 cmp a,#08H ; 8 ;[INF] 2, 1 594 594 00057 DE0B bnc $?L0014 ;[INF] 2, 4 595 595 00059 ??bb00_renge_task_immed_init: 596 596 ; line 121 : tasks_immed[ i ] = TSK_IMM_EMPTY_; 597 597 $DGL 0,5 598 598 00059 F0 clrb x ;[INF] 1, 1 599 599 0005A 317E shrw ax,7 ;[INF] 2, 1 600 600 0005C 12 movw bc,ax ;[INF] 1, 1 601 601 0005D F6 clrw ax ;[INF] 1, 1 602 602 0005E R780200 movw _tasks_immed[bc],ax ;[INF] 3, 1 603 603 00061 ??eb00_renge_task_immed_init: 604 604 ; line 122 : } 605 605 $DGL 0,6 606 606 00061 86 inc l ;[INF] 1, 1 607 607 00062 EFF0 br $?L0013 ;[INF] 2, 3 608 608 00064 ?L0014: 609 609 ; line 123 : } 610 610 $DGL 0,7 611 611 00064 ??ef_renge_task_immed_init: 612 612 00064 C6 pop hl ;[INF] 1, 1 613 613 00065 D7 ret ;[INF] 1, 6 614 614 00066 ??ee_renge_task_immed_init: 615 615 ; line 124 : 616 616 ; line 125 : 617 617 ; line 126 : 618 618 ; line 127 : /************************************** 619 619 ; line 128 : 逐次実行タスクの登録 620 620 ; line 129 : 割り込み禁止 36us → 621 621 ; line 130 : **************************************/ 622 622 ; line 131 : err renge_task_immed_add( task_status* new_task ){ 623 623 00066 _renge_task_immed_add: 624 624 $DGL 1,65 625 625 00066 C7 push hl ;[INF] 1, 1 626 626 00067 C1 push ax ;[INF] 1, 1 627 627 00068 C1 push ax ;[INF] 1, 1 628 628 00069 FBF8FF movw hl,sp ;[INF] 3, 1 629 629 0006C ??bf_renge_task_immed_add: 630 630 ; line 132 : u8 i; 631 631 ; line 133 : 632 632 ; line 134 : // リストの空きの先頭に登録 633 633 ; line 135 : // 削除したばかりのタスクは、削除マーク(TSK_IMM_DELETED_)とな 634 634 ; り、空きとは明示的に区別される 635 635 ; line 136 : // 重複登録を避ける 636 636 ; line 137 : for( i = 0; i < TASK_IMMED_RUN_LIST_MAX; i += 1 ) 637 637 $DGL 0,7 638 638 0006C CC0100 mov [hl+1],#00H ; i,0 ;[INF] 3, 1 639 639 0006F ?L0018: 640 640 0006F 8C01 mov a,[hl+1] ; i ;[INF] 2, 1 641 641 00071 4C08 cmp a,#08H ; 8 ;[INF] 2, 1 642 642 00073 DE2D bnc $?L0019 ;[INF] 2, 4 643 643 ; line 138 : { 644 644 00075 ??bb00_renge_task_immed_add: 645 645 ; line 139 : if( tasks_immed[ i ] != TSK_IMM_EMPTY_ ) 646 646 $DGL 0,9 647 647 00075 RFD0900 call !bs_S0094 ;[INF] 3, 3 648 648 00078 DD0A bz $?L0021 ;[INF] 2, 4 649 649 ; line 140 : { 650 650 0007A ??bb01_renge_task_immed_add: 651 651 ; line 141 : // 重複登録チェック 652 652 ; line 142 : if( tasks_immed[ i ] == new_task ) 653 653 $DGL 0,12 654 654 0007A A9 movw ax,[de] ;[INF] 1, 1 655 655 0007B 614902 cmpw ax,[hl+2] ; new_task ;[INF] 3, 1 656 656 0007E DF1D bnz $?L0022 ;[INF] 2, 4 657 657 ; line 143 : { 658 658 00080 ??bb02_renge_task_immed_add: 659 659 ; line 144 : // 重複登録はしない 660 660 ; line 145 : NOP(); 661 661 $DGL 0,15 662 662 00080 00 nop ;[INF] 1, 1 663 663 ; line 146 : return( ERR_ERR ); 664 664 $DGL 0,16 665 665 00081 E7 onew bc ;[INF] 1, 1 666 666 00082 EF20 br $?L0017 ;[INF] 2, 3 667 667 00084 ??eb02_renge_task_immed_add: 668 668 ; line 147 : } 669 669 ; line 148 : } 670 670 00084 ??eb01_renge_task_immed_add: 671 671 00084 ?L0021: 672 672 ; line 149 : else 673 673 ; line 150 : { 674 674 00084 ??bb03_renge_task_immed_add: 675 675 ; line 151 : // 空きを見つけた 676 676 ; line 152 : // もたもたしているうちに割り込み等から割り込まれるの 677 677 ; を考慮 678 678 ; line 153 : // 滅多にないはずだが 679 679 ; line 154 : for( ; i < TASK_IMMED_RUN_LIST_MAX; i += 1 ) 680 680 $DGL 0,24 681 681 00084 8C01 mov a,[hl+1] ; i ;[INF] 2, 1 682 682 00086 4C08 cmp a,#08H ; 8 ;[INF] 2, 1 683 683 00088 DE10 bnc $?L0026 ;[INF] 2, 4 684 684 ; line 155 : { 685 685 0008A ??bb04_renge_task_immed_add: 686 686 ; line 156 : if( tasks_immed[ i ] == TSK_IMM_EMPTY_ ) 687 687 $DGL 0,26 688 688 0008A RFD0900 call !bs_S0094 ;[INF] 3, 3 689 689 0008D DF06 bnz $?L0028 ;[INF] 2, 4 690 690 ; line 157 : { 691 691 0008F ??bb05_renge_task_immed_add: 692 692 ; line 158 : tasks_immed[ i ] = new_task; 693 693 $DGL 0,28 694 694 0008F AC02 movw ax,[hl+2] ; new_task ;[INF] 2, 1 695 695 00091 B9 movw [de],ax ;[INF] 1, 1 696 696 ; line 159 : return( ERR_SUCCESS ); 697 697 $DGL 0,29 698 698 00092 F7 clrw bc ;[INF] 1, 1 699 699 00093 EF0F br $?L0017 ;[INF] 2, 3 700 700 00095 ??eb05_renge_task_immed_add: 701 701 ; line 160 : } 702 702 00095 ?L0028: 703 703 00095 ??eb04_renge_task_immed_add: 704 704 ; line 161 : } 705 705 $DGL 0,31 706 706 00095 615901 inc [hl+1] ; i ;[INF] 3, 2 707 707 00098 EFEA br $?L0021 ;[INF] 2, 3 708 708 0009A ?L0026: 709 709 ; line 162 : // 割り込まれてタスク登録できなくなった 710 710 ; line 163 : return( ERR_ERR ); 711 711 $DGL 0,33 712 712 0009A E7 onew bc ;[INF] 1, 1 713 713 0009B EF07 br $?L0017 ;[INF] 2, 3 714 714 0009D ??eb03_renge_task_immed_add: 715 715 ; line 164 : } 716 716 0009D ?L0022: 717 717 0009D ??eb00_renge_task_immed_add: 718 718 ; line 165 : } 719 719 $DGL 0,35 720 720 0009D 615901 inc [hl+1] ; i ;[INF] 3, 2 721 721 000A0 EFCD br $?L0018 ;[INF] 2, 3 722 722 000A2 ?L0019: 723 723 ; line 166 : // タスク登録しすぎ(無いはず 724 724 ; line 167 : NOP(); // デバッガで捕まえるため 725 725 $DGL 0,37 726 726 000A2 00 nop ;[INF] 1, 1 727 727 ; line 168 : return( ERR_ERR ); 728 728 $DGL 0,38 729 729 000A3 E7 onew bc ;[INF] 1, 1 730 730 ; line 169 : } 731 731 000A4 ?L0017: 732 732 $DGL 0,39 733 733 000A4 ??ef_renge_task_immed_add: 734 734 000A4 1004 addw sp,#04H ;[INF] 2, 1 735 735 000A6 C6 pop hl ;[INF] 1, 1 736 736 000A7 D7 ret ;[INF] 1, 6 737 737 000A8 ??ee_renge_task_immed_add: 738 738 ; line 170 : 739 739 ; line 171 : 740 740 ; line 172 : 741 741 ; line 173 : /************************************** 742 742 ; line 174 : 逐次実行タスクの実行 743 743 ; line 175 : **************************************/ 744 744 ; line 176 : err renge_task_immed_run(){ 745 745 000A8 _renge_task_immed_run: 746 746 $DGL 1,98 747 747 000A8 C7 push hl ;[INF] 1, 1 748 748 000A9 2004 subw sp,#04H ;[INF] 2, 1 749 749 000AB FBF8FF movw hl,sp ;[INF] 3, 1 750 750 000AE ??bf_renge_task_immed_run: 751 751 ; line 177 : u8 list_id; 752 752 ; line 178 : u8 last_task_id; 753 753 ; line 179 : 754 754 ; line 180 : do{ 755 755 000AE ??bb00_renge_task_immed_run: 756 756 ; line 181 : last_task_id = 0xFF; 757 757 $DGL 0,6 758 758 000AE CC02FF mov [hl+2],#0FFH ; last_task_id,255 ;[INF] 3, 1 759 759 ; line 182 : for( list_id = 0; list_id < TASK_IMMED_RUN_LIST_MAX; list_ 760 760 ; id += 1 ){ 761 761 $DGL 0,7 762 762 000B1 CC0300 mov [hl+3],#00H ; list_id,0 ;[INF] 3, 1 763 763 000B4 ?L0035: 764 764 000B4 8C03 mov a,[hl+3] ; list_id ;[INF] 2, 1 765 765 000B6 4C08 cmp a,#08H ; 8 ;[INF] 2, 1 766 766 000B8 DE42 bnc $?L0036 ;[INF] 2, 4 767 767 000BA ??bb01_renge_task_immed_run: 768 768 ; line 183 : if( tasks_immed[ list_id ] != TSK_IMM_EMPTY_ ){ 769 769 $DGL 0,8 770 770 000BA RFD1600 call !bs_S0095 ;[INF] 3, 3 771 771 000BD DD24 bz $?L0038 ;[INF] 2, 4 772 772 000BF ??bb02_renge_task_immed_run: 773 773 ; line 184 : #ifdef _renge_test_ 774 774 ; line 185 : if( tasks_immed[ list_id ] == TSK_IMM_DELETED_ ) 775 775 $DGL 0,10 776 776 000BF A9 movw ax,[de] ;[INF] 1, 1 777 777 000C0 E7 onew bc ;[INF] 1, 1 778 778 000C1 43 cmpw ax,bc ;[INF] 1, 1 779 779 000C2 DF03 bnz $?L0040 ;[INF] 2, 4 780 780 ; line 186 : { 781 781 000C4 ??bb03_renge_task_immed_run: 782 782 ; line 187 : NOP(); 783 783 $DGL 0,12 784 784 000C4 00 nop ;[INF] 1, 1 785 785 000C5 ??eb03_renge_task_immed_run: 786 786 ; line 188 : // タスク管理の不備 787 787 ; line 189 : // 存在しないタスクを実行しようとした 788 788 ; line 190 : // タスクの削除後の処理がまずい 789 789 ; line 191 : // 予期しないタイミングで immed_run が呼ばれた 790 790 ; line 192 : } 791 791 $DGL 0,17 792 792 000C5 EF30 br $?L0039 ;[INF] 2, 3 793 793 000C7 ?L0040: 794 794 ; line 193 : else 795 795 ; line 194 : #endif 796 796 ; line 195 : { 797 797 000C7 ??bb04_renge_task_immed_run: 798 798 ; line 196 : if( tasks_immed[ list_id ]() == ERR_SUCCESS ) 799 799 $DGL 0,21 800 800 000C7 8C03 mov a,[hl+3] ; list_id ;[INF] 2, 1 801 801 000C9 72 mov c,a ;[INF] 1, 1 802 802 000CA F3 clrb b ;[INF] 1, 1 803 803 000CB 311C shlw bc,1 ;[INF] 2, 1 804 804 000CD R790200 movw ax,_tasks_immed[bc] ;[INF] 3, 1 805 805 000D0 CEFC00 mov CS,#00H ; 0 ;[INF] 3, 1 806 806 000D3 61CA call ax ;[INF] 2, 3 807 807 000D5 D2 cmp0 c ;[INF] 1, 1 808 808 000D6 DF05 bnz $?L0042 ;[INF] 2, 4 809 809 ; line 197 : { 810 810 000D8 ??bb05_renge_task_immed_run: 811 811 ; line 198 : tasks_immed[ list_id ] = TSK_IMM_DELETED_; 812 812 $DGL 0,23 813 813 000D8 8C03 mov a,[hl+3] ; list_id ;[INF] 2, 1 814 814 000DA RFD0000 call !bs_S0096 ;[INF] 3, 3 815 815 000DD ??eb05_renge_task_immed_run: 816 816 ; line 199 : } 817 817 000DD ?L0042: 818 818 ; line 200 : last_task_id = list_id; 819 819 $DGL 0,25 820 820 000DD 8C03 mov a,[hl+3] ; list_id ;[INF] 2, 1 821 821 000DF 9C02 mov [hl+2],a ; last_task_id ;[INF] 2, 1 822 822 000E1 ??eb04_renge_task_immed_run: 823 823 ; line 201 : } 824 824 ; line 202 : } 825 825 $DGL 0,27 826 826 000E1 ??eb02_renge_task_immed_run: 827 827 000E1 EF14 br $?L0039 ;[INF] 2, 3 828 828 000E3 ?L0038: 829 829 ; line 203 : #ifdef _renge_test_ 830 830 ; line 204 : else 831 831 ; line 205 : { 832 832 000E3 ??bb06_renge_task_immed_run: 833 833 ; line 206 : list_id += 1; 834 834 $DGL 0,31 835 835 000E3 615903 inc [hl+3] ; list_id ;[INF] 3, 2 836 836 ; line 207 : for( ; list_id < TASK_IMMED_RUN_LIST_MAX; list_id+ 837 837 ; + ) 838 838 $DGL 0,32 839 839 000E6 ?L0044: 840 840 000E6 8C03 mov a,[hl+3] ; list_id ;[INF] 2, 1 841 841 000E8 4C08 cmp a,#08H ; 8 ;[INF] 2, 1 842 842 000EA DE10 bnc $?L0036 ;[INF] 2, 4 843 843 ; line 208 : { 844 844 000EC ??bb07_renge_task_immed_run: 845 845 ; line 209 : if( tasks_immed[ list_id ] != TSK_IMM_EMPTY_ ) 846 846 $DGL 0,34 847 847 000EC RFD1600 call !bs_S0095 ;[INF] 3, 3 848 848 000EF 61E8 skz ;[INF] 2, 1 849 849 ; line 210 : { 850 850 000F1 ??bb08_renge_task_immed_run: 851 851 ; line 211 : NOP(); // ? 852 852 $DGL 0,36 853 853 000F1 00 nop ;[INF] 1, 1 854 854 000F2 ??eb08_renge_task_immed_run: 855 855 ; line 212 : } 856 856 000F2 ?L0047: 857 857 000F2 ??eb07_renge_task_immed_run: 858 858 ; line 213 : } 859 859 $DGL 0,38 860 860 000F2 615903 inc [hl+3] ; list_id ;[INF] 3, 2 861 861 000F5 EFEF br $?L0044 ;[INF] 2, 3 862 862 ; line 214 : break; 863 863 000F7 ??eb06_renge_task_immed_run: 864 864 ; line 215 : } 865 865 000F7 ?L0039: 866 866 000F7 ??eb01_renge_task_immed_run: 867 867 ; line 216 : #endif 868 868 ; line 217 : } 869 869 $DGL 0,42 870 870 000F7 615903 inc [hl+3] ; list_id ;[INF] 3, 2 871 871 000FA EFB8 br $?L0035 ;[INF] 2, 3 872 872 000FC ?L0036: 873 873 ; line 218 : 874 874 ; line 219 : // タスク削除 875 875 ; line 220 : { 876 876 000FC ??bb09_renge_task_immed_run: 877 877 ; line 221 : if( last_task_id != 0xFF ) 878 878 $DGL 0,46 879 879 000FC 8C02 mov a,[hl+2] ; last_task_id ;[INF] 2, 1 880 880 000FE 81 inc a ;[INF] 1, 1 881 881 000FF 61F8 sknz ;[INF] 2, 1 882 882 00101 REDF001 br !?L0049 ;[INF] 3, 3 883 883 ; line 222 : { 884 884 00104 ??bb0A_renge_task_immed_run: 885 885 ; line 223 : u8 i,j; 886 886 ; line 224 : 887 887 ; line 225 : #ifdef _renge_test_ 888 888 ; line 226 : if ( tasks_immed[ 1 ] != 0 ){ 889 889 $DGL 0,51 890 890 00104 F6 clrw ax ;[INF] 1, 1 891 891 00105 R420400 cmpw ax,!_tasks_immed+2 ;[INF] 3, 1 892 892 00108 61E8 skz ;[INF] 2, 1 893 893 0010A ??bb0B_renge_task_immed_run: 894 894 ; line 227 : NOP(); 895 895 $DGL 0,52 896 896 0010A 00 nop ;[INF] 1, 1 897 897 0010B ??eb0B_renge_task_immed_run: 898 898 ; line 228 : } 899 899 0010B ?L0051: 900 900 ; line 229 : #endif 901 901 ; line 230 : // リスト前詰め 902 902 ; line 231 : 903 903 ; line 232 : i = 0; // 前詰め後リストの最後尾 904 904 $DGL 0,57 905 905 0010B CC0100 mov [hl+1],#00H ; i,0 ;[INF] 3, 1 906 906 ; line 233 : j = 1; // リストの後ろの方のタスクを探す 907 907 $DGL 0,58 908 908 0010E CC0001 mov [hl+0],#01H ; j,1 ;[INF] 3, 1 909 909 ; line 234 : for( ; j < TASK_IMMED_RUN_LIST_MAX; j++ ) 910 910 $DGL 0,59 911 911 00111 ?L0053: 912 912 00111 8B mov a,[hl] ; j ;[INF] 1, 1 913 913 00112 4C08 cmp a,#08H ; 8 ;[INF] 2, 1 914 914 00114 61C8 skc ;[INF] 2, 1 915 915 00116 REDA501 br !?L0054 ;[INF] 3, 3 916 916 ; line 235 : { 917 917 00119 ??bb0C_renge_task_immed_run: 918 918 ; line 236 : DI(); 919 919 $DGL 0,61 920 920 00119 717BFA di ;[INF] 3, 4 921 921 ; line 237 : if( tasks_immed[ i ] == TSK_IMM_DELETED_ ) 922 922 $DGL 0,62 923 923 0011C 8C01 mov a,[hl+1] ; i ;[INF] 2, 1 924 924 0011E F0 clrb x ;[INF] 1, 1 925 925 0011F 317E shrw ax,7 ;[INF] 2, 1 926 926 00121 12 movw bc,ax ;[INF] 1, 1 927 927 00122 R790200 movw ax,_tasks_immed[bc] ;[INF] 3, 1 928 928 00125 E7 onew bc ;[INF] 1, 1 929 929 00126 43 cmpw ax,bc ;[INF] 1, 1 930 930 00127 DF62 bnz $?L0056 ;[INF] 2, 4 931 931 ; line 238 : { 932 932 00129 ??bb0D_renge_task_immed_run: 933 933 ; line 239 : if( tasks_immed[ j ] == TSK_IMM_EMPTY_ ) 934 934 $DGL 0,64 935 935 00129 8B mov a,[hl] ; j ;[INF] 1, 1 936 936 0012A F0 clrb x ;[INF] 1, 1 937 937 0012B 317E shrw ax,7 ;[INF] 2, 1 938 938 0012D R040200 addw ax,#loww (_tasks_immed) ;[INF] 3, 1 939 939 00130 14 movw de,ax ;[INF] 1, 1 940 940 00131 A9 movw ax,[de] ;[INF] 1, 1 941 941 00132 6168 or a,x ;[INF] 2, 1 942 942 00134 DF34 bnz $?L0058 ;[INF] 2, 4 943 943 ; line 240 : { 944 944 00136 ??bb0E_renge_task_immed_run: 945 945 ; line 241 : // リストの最後だった 946 946 ; line 242 : for( ; i < j ; i += 1 ) 947 947 $DGL 0,67 948 948 00136 ?L0060: 949 949 00136 8C01 mov a,[hl+1] ; i ;[INF] 2, 1 950 950 00138 4D cmp a,[hl] ; j ;[INF] 1, 1 951 951 00139 DE0F bnc $?L0061 ;[INF] 2, 4 952 952 ; line 243 : { 953 953 0013B ??bb0F_renge_task_immed_run: 954 954 ; line 244 : tasks_immed[ i ] = TSK_IMM_EMPTY_; 955 955 $DGL 0,69 956 956 0013B 8C01 mov a,[hl+1] ; i ;[INF] 2, 1 957 957 0013D F0 clrb x ;[INF] 1, 1 958 958 0013E 317E shrw ax,7 ;[INF] 2, 1 959 959 00140 12 movw bc,ax ;[INF] 1, 1 960 960 00141 F6 clrw ax ;[INF] 1, 1 961 961 00142 R780200 movw _tasks_immed[bc],ax ;[INF] 3, 1 962 962 00145 ??eb0F_renge_task_immed_run: 963 963 ; line 245 : } 964 964 $DGL 0,70 965 965 00145 615901 inc [hl+1] ; i ;[INF] 3, 2 966 966 00148 EFEC br $?L0060 ;[INF] 2, 3 967 967 0014A ?L0061: 968 968 ; line 246 : #ifdef _renge_test_ 969 969 ; line 247 : /// ほんと? 970 970 ; line 248 : j += 1; 971 971 $DGL 0,73 972 972 0014A 615900 inc [hl+0] ; j ;[INF] 3, 2 973 973 ; line 249 : for( ; j < TASK_IMMED_RUN_LIST_MAX; j+ 974 974 ; + ) 975 975 $DGL 0,74 976 976 0014D ?L0063: 977 977 0014D 8B mov a,[hl] ; j ;[INF] 1, 1 978 978 0014E 4C08 cmp a,#08H ; 8 ;[INF] 2, 1 979 979 00150 DE13 bnc $?L0064 ;[INF] 2, 4 980 980 ; line 250 : { 981 981 00152 ??bb10_renge_task_immed_run: 982 982 ; line 251 : if( tasks_immed[ j ] != TSK_IMM_EM 983 983 ; PTY_ ) 984 984 $DGL 0,76 985 985 00152 8B mov a,[hl] ; j ;[INF] 1, 1 986 986 00153 F0 clrb x ;[INF] 1, 1 987 987 00154 317E shrw ax,7 ;[INF] 2, 1 988 988 00156 R040200 addw ax,#loww (_tasks_immed) ;[INF] 3, 1 989 989 00159 14 movw de,ax ;[INF] 1, 1 990 990 0015A A9 movw ax,[de] ;[INF] 1, 1 991 991 0015B 6168 or a,x ;[INF] 2, 1 992 992 0015D 61E8 skz ;[INF] 2, 1 993 993 ; line 252 : { 994 994 0015F ??bb11_renge_task_immed_run: 995 995 ; line 253 : NOP(); // ? 996 996 $DGL 0,78 997 997 0015F 00 nop ;[INF] 1, 1 998 998 00160 ??eb11_renge_task_immed_run: 999 999 ; line 254 : } 1000 1000 00160 ?L0066: 1001 1001 ; line 255 : } 1002 1002 $DGL 0,80 1003 1003 00160 ??eb10_renge_task_immed_run: 1004 1004 00160 615900 inc [hl+0] ; j ;[INF] 3, 2 1005 1005 00163 EFE8 br $?L0063 ;[INF] 2, 3 1006 1006 00165 ?L0064: 1007 1007 ; line 256 : #endif 1008 1008 ; line 257 : EI(); 1009 1009 $DGL 0,82 1010 1010 00165 717AFA ei ;[INF] 3, 4 1011 1011 ; line 258 : break; 1012 1012 $DGL 0,83 1013 1013 00168 EF3B br $?L0054 ;[INF] 2, 3 1014 1014 0016A ??eb0E_renge_task_immed_run: 1015 1015 ; line 259 : } 1016 1016 0016A ?L0058: 1017 1017 ; line 260 : if( tasks_immed[ j ] != TSK_IMM_DELETED_ ) 1018 1018 $DGL 0,85 1019 1019 0016A 8B mov a,[hl] ; j ;[INF] 1, 1 1020 1020 0016B F0 clrb x ;[INF] 1, 1 1021 1021 0016C 317E shrw ax,7 ;[INF] 2, 1 1022 1022 0016E R040200 addw ax,#loww (_tasks_immed) ;[INF] 3, 1 1023 1023 00171 14 movw de,ax ;[INF] 1, 1 1024 1024 00172 A9 movw ax,[de] ;[INF] 1, 1 1025 1025 00173 E7 onew bc ;[INF] 1, 1 1026 1026 00174 43 cmpw ax,bc ;[INF] 1, 1 1027 1027 00175 DD1D bz $?L0057 ;[INF] 2, 4 1028 1028 ; line 261 : { 1029 1029 00177 ??bb12_renge_task_immed_run: 1030 1030 ; line 262 : // 探索隊が前詰めすべきタスクを見つけた 1031 1031 ; line 263 : tasks_immed[ i ] = tasks_immed[ j ]; 1032 1032 $DGL 0,88 1033 1033 00177 A9 movw ax,[de] ;[INF] 1, 1 1034 1034 00178 12 movw bc,ax ;[INF] 1, 1 1035 1035 00179 8C01 mov a,[hl+1] ; i ;[INF] 2, 1 1036 1036 0017B F0 clrb x ;[INF] 1, 1 1037 1037 0017C 317E shrw ax,7 ;[INF] 2, 1 1038 1038 0017E 33 xchw ax,bc ;[INF] 1, 1 1039 1039 0017F R780200 movw _tasks_immed[bc],ax ;[INF] 3, 1 1040 1040 ; line 264 : tasks_immed[ j ] = TSK_IMM_DELETED_; 1041 1041 $DGL 0,89 1042 1042 00182 8B mov a,[hl] ; j ;[INF] 1, 1 1043 1043 00183 RFD0000 call !bs_S0096 ;[INF] 3, 3 1044 1044 ; line 265 : i += 1; 1045 1045 $DGL 0,90 1046 1046 00186 615901 inc [hl+1] ; i ;[INF] 3, 2 1047 1047 00189 ??eb12_renge_task_immed_run: 1048 1048 ; line 266 : } 1049 1049 ; line 267 : } 1050 1050 $DGL 0,92 1051 1051 00189 ??eb0D_renge_task_immed_run: 1052 1052 00189 EF09 br $?L0057 ;[INF] 2, 3 1053 1053 0018B ?L0056: 1054 1054 ; line 268 : else 1055 1055 ; line 269 : { 1056 1056 0018B ??bb13_renge_task_immed_run: 1057 1057 ; line 270 : #ifdef _renge_test_ 1058 1058 ; line 271 : // タスクが滞留 1059 1059 ; line 272 : if( tasks_immed[ i ] == TSK_IMM_EMPTY_ ) 1060 1060 $DGL 0,97 1061 1061 0018B RFD0900 call !bs_S0094 ;[INF] 3, 3 1062 1062 0018E 61F8 sknz ;[INF] 2, 1 1063 1063 ; line 273 : { 1064 1064 00190 ??bb14_renge_task_immed_run: 1065 1065 ; line 274 : NOP(); 1066 1066 $DGL 0,99 1067 1067 00190 00 nop ;[INF] 1, 1 1068 1068 00191 ??eb14_renge_task_immed_run: 1069 1069 ; line 275 : // そんなはずない 1070 1070 ; line 276 : } 1071 1071 00191 ?L0070: 1072 1072 ; line 277 : #endif 1073 1073 ; line 278 : i += 1; 1074 1074 $DGL 0,103 1075 1075 00191 615901 inc [hl+1] ; i ;[INF] 3, 2 1076 1076 00194 ??eb13_renge_task_immed_run: 1077 1077 ; line 279 : } 1078 1078 00194 ?L0057: 1079 1079 ; line 280 : EI(); 1080 1080 $DGL 0,105 1081 1081 00194 717AFA ei ;[INF] 3, 4 1082 1082 ; line 281 : if( tasks_immed[ i ] == TSK_IMM_EMPTY_ ) 1083 1083 $DGL 0,106 1084 1084 00197 RFD0900 call !bs_S0094 ;[INF] 3, 3 1085 1085 0019A DF03 bnz $?L0072 ;[INF] 2, 4 1086 1086 ; line 282 : { 1087 1087 0019C ??bb15_renge_task_immed_run: 1088 1088 ; line 283 : #ifdef _renge_test_ 1089 1089 ; line 284 : NOP(); 1090 1090 $DGL 0,109 1091 1091 0019C 00 nop ;[INF] 1, 1 1092 1092 ; line 285 : #endif 1093 1093 ; line 286 : break; 1094 1094 $DGL 0,111 1095 1095 0019D EF06 br $?L0054 ;[INF] 2, 3 1096 1096 0019F ??eb15_renge_task_immed_run: 1097 1097 ; line 287 : // リストの最後だった 1098 1098 ; line 288 : } 1099 1099 0019F ?L0072: 1100 1100 0019F ??eb0C_renge_task_immed_run: 1101 1101 ; line 289 : } 1102 1102 $DGL 0,114 1103 1103 0019F 615900 inc [hl+0] ; j ;[INF] 3, 2 1104 1104 001A2 RED1101 br !?L0053 ;[INF] 3, 3 1105 1105 001A5 ?L0054: 1106 1106 ; line 290 : DI(); 1107 1107 $DGL 0,115 1108 1108 001A5 717BFA di ;[INF] 3, 4 1109 1109 ; line 291 : 1110 1110 ; line 292 : // ここまでで完全に前詰めされている 1111 1111 ; line 293 : for( j = 0; j < TASK_IMMED_RUN_LIST_MAX; j++ ) 1112 1112 $DGL 0,118 1113 1113 001A8 CC0000 mov [hl+0],#00H ; j,0 ;[INF] 3, 1 1114 1114 001AB ?L0074: 1115 1115 001AB 8B mov a,[hl] ; j ;[INF] 1, 1 1116 1116 001AC 4C08 cmp a,#08H ; 8 ;[INF] 2, 1 1117 1117 001AE DE3D bnc $?L0075 ;[INF] 2, 4 1118 1118 ; line 294 : { 1119 1119 001B0 ??bb16_renge_task_immed_run: 1120 1120 ; line 295 : if( tasks_immed[ j ] == TSK_IMM_EMPTY_ ) 1121 1121 $DGL 0,120 1122 1122 001B0 8B mov a,[hl] ; j ;[INF] 1, 1 1123 1123 001B1 F0 clrb x ;[INF] 1, 1 1124 1124 001B2 317E shrw ax,7 ;[INF] 2, 1 1125 1125 001B4 R040200 addw ax,#loww (_tasks_immed) ;[INF] 3, 1 1126 1126 001B7 14 movw de,ax ;[INF] 1, 1 1127 1127 001B8 A9 movw ax,[de] ;[INF] 1, 1 1128 1128 001B9 6168 or a,x ;[INF] 2, 1 1129 1129 001BB DF1C bnz $?L0077 ;[INF] 2, 4 1130 1130 ; line 296 : { 1131 1131 001BD ??bb17_renge_task_immed_run: 1132 1132 ; line 297 : #ifdef _renge_test_ 1133 1133 ; line 298 : NOP(); 1134 1134 $DGL 0,123 1135 1135 001BD 00 nop ;[INF] 1, 1 1136 1136 ; line 299 : j += 1; 1137 1137 $DGL 0,124 1138 1138 001BE 615900 inc [hl+0] ; j ;[INF] 3, 2 1139 1139 ; line 300 : for( ; j < TASK_IMMED_RUN_LIST_MAX; j++ ) 1140 1140 $DGL 0,125 1141 1141 001C1 ?L0079: 1142 1142 001C1 8B mov a,[hl] ; j ;[INF] 1, 1 1143 1143 001C2 4C08 cmp a,#08H ; 8 ;[INF] 2, 1 1144 1144 001C4 DE27 bnc $?L0075 ;[INF] 2, 4 1145 1145 ; line 301 : { 1146 1146 001C6 ??bb18_renge_task_immed_run: 1147 1147 ; line 302 : if( tasks_immed[ j ] != TSK_IMM_EMPTY_ 1148 1148 ; ) 1149 1149 $DGL 0,127 1150 1150 001C6 8B mov a,[hl] ; j ;[INF] 1, 1 1151 1151 001C7 F0 clrb x ;[INF] 1, 1 1152 1152 001C8 317E shrw ax,7 ;[INF] 2, 1 1153 1153 001CA R040200 addw ax,#loww (_tasks_immed) ;[INF] 3, 1 1154 1154 001CD 14 movw de,ax ;[INF] 1, 1 1155 1155 001CE A9 movw ax,[de] ;[INF] 1, 1 1156 1156 001CF 6168 or a,x ;[INF] 2, 1 1157 1157 001D1 61E8 skz ;[INF] 2, 1 1158 1158 ; line 303 : { 1159 1159 001D3 ??bb19_renge_task_immed_run: 1160 1160 ; line 304 : NOP(); // ? 1161 1161 $DGL 0,129 1162 1162 001D3 00 nop ;[INF] 1, 1 1163 1163 001D4 ??eb19_renge_task_immed_run: 1164 1164 ; line 305 : } 1165 1165 001D4 ?L0082: 1166 1166 001D4 ??eb18_renge_task_immed_run: 1167 1167 ; line 306 : } 1168 1168 $DGL 0,131 1169 1169 001D4 615900 inc [hl+0] ; j ;[INF] 3, 2 1170 1170 001D7 EFE8 br $?L0079 ;[INF] 2, 3 1171 1171 ; line 307 : #endif 1172 1172 ; line 308 : break; 1173 1173 001D9 ??eb17_renge_task_immed_run: 1174 1174 ; line 309 : // リストの最後 1175 1175 ; line 310 : } 1176 1176 001D9 ?L0077: 1177 1177 ; line 311 : if( tasks_immed[ j ] == TSK_IMM_DELETED_ ) 1178 1178 $DGL 0,136 1179 1179 001D9 8B mov a,[hl] ; j ;[INF] 1, 1 1180 1180 001DA F0 clrb x ;[INF] 1, 1 1181 1181 001DB 317E shrw ax,7 ;[INF] 2, 1 1182 1182 001DD R040200 addw ax,#loww (_tasks_immed) ;[INF] 3, 1 1183 1183 001E0 14 movw de,ax ;[INF] 1, 1 1184 1184 001E1 A9 movw ax,[de] ;[INF] 1, 1 1185 1185 001E2 E7 onew bc ;[INF] 1, 1 1186 1186 001E3 43 cmpw ax,bc ;[INF] 1, 1 1187 1187 001E4 DF02 bnz $?L0084 ;[INF] 2, 4 1188 1188 ; line 312 : { 1189 1189 001E6 ??bb1A_renge_task_immed_run: 1190 1190 ; line 313 : tasks_immed[ j ] = TSK_IMM_EMPTY_; 1191 1191 $DGL 0,138 1192 1192 001E6 F6 clrw ax ;[INF] 1, 1 1193 1193 001E7 B9 movw [de],ax ;[INF] 1, 1 1194 1194 001E8 ??eb1A_renge_task_immed_run: 1195 1195 ; line 314 : } 1196 1196 001E8 ?L0084: 1197 1197 001E8 ??eb16_renge_task_immed_run: 1198 1198 ; line 315 : } 1199 1199 $DGL 0,140 1200 1200 001E8 615900 inc [hl+0] ; j ;[INF] 3, 2 1201 1201 001EB EFBE br $?L0074 ;[INF] 2, 3 1202 1202 001ED ?L0075: 1203 1203 ; line 316 : EI(); 1204 1204 $DGL 0,141 1205 1205 001ED 717AFA ei ;[INF] 3, 4 1206 1206 001F0 ??eb0A_renge_task_immed_run: 1207 1207 ; line 317 : } 1208 1208 001F0 ?L0049: 1209 1209 001F0 ??eb09_renge_task_immed_run: 1210 1210 ; line 318 : } 1211 1211 001F0 ??eb00_renge_task_immed_run: 1212 1212 ; line 319 : } 1213 1213 ; line 320 : #if 0 1214 1214 ; line 321 : while( last_task_id != 0xFF ); // タスクが残っていたら延々再実 1215 1215 ; 行 1216 1216 ; line 322 : #else 1217 1217 ; line 323 : while( 0 ); 1218 1218 ; line 324 : #endif 1219 1219 ; line 325 : 1220 1220 ; line 326 : if( last_task_id != 0xFF ) 1221 1221 $DGL 0,151 1222 1222 001F0 8C02 mov a,[hl+2] ; last_task_id ;[INF] 2, 1 1223 1223 001F2 81 inc a ;[INF] 1, 1 1224 1224 001F3 DD03 bz $?L0086 ;[INF] 2, 4 1225 1225 ; line 327 : { 1226 1226 001F5 ??bb1B_renge_task_immed_run: 1227 1227 ; line 328 : // まだタスクが残ってる(また呼んでね) 1228 1228 ; line 329 : return( ERR_ERR ); 1229 1229 $DGL 0,154 1230 1230 001F5 E7 onew bc ;[INF] 1, 1 1231 1231 001F6 EF01 br $?L0031 ;[INF] 2, 3 1232 1232 001F8 ??eb1B_renge_task_immed_run: 1233 1233 ; line 330 : } 1234 1234 001F8 ?L0086: 1235 1235 ; line 331 : 1236 1236 ; line 332 : return( ERR_SUCCESS ); 1237 1237 $DGL 0,157 1238 1238 001F8 F7 clrw bc ;[INF] 1, 1 1239 1239 ; line 333 : } 1240 1240 001F9 ?L0031: 1241 1241 $DGL 0,158 1242 1242 001F9 ??ef_renge_task_immed_run: 1243 1243 001F9 1004 addw sp,#04H ;[INF] 2, 1 1244 1244 001FB C6 pop hl ;[INF] 1, 1 1245 1245 001FC D7 ret ;[INF] 1, 6 1246 1246 001FD ??ee_renge_task_immed_run: 1247 1247 ; line 334 : 1248 1248 ; line 335 : 1249 1249 ; line 336 : 1250 1250 ; line 337 : /*************************************************************** 1251 1251 ; *************** 1252 1252 ; line 338 : 単位は ms 1253 1253 ; line 339 : NOPを回すだけ、指定時間CPUを *占有します* 。 1254 1254 ; line 340 : 割り込みとか入るとその分遅れます。 1255 1255 ; line 341 : 少し誤差あります。 1256 1256 ; line 342 : *************************************************************** 1257 1257 ; **************/ 1258 1258 ; line 343 : void wait_ms( u8 ms ){ 1259 1259 001FD _wait_ms: 1260 1260 $DGL 1,222 1261 1261 001FD C7 push hl ;[INF] 1, 1 1262 1262 001FE C1 push ax ;[INF] 1, 1 1263 1263 001FF C1 push ax ;[INF] 1, 1 1264 1264 00200 FBF8FF movw hl,sp ;[INF] 3, 1 1265 1265 00203 ??bf_wait_ms: 1266 1266 ; line 344 : u16 fine; 1267 1267 ; line 345 : 1268 1268 ; line 346 : WDT_Restart(); 1269 1269 $DGL 0,4 1270 1270 00203 RFD0000 call !_WDT_Restart ;[INF] 3, 3 1271 1271 ; line 347 : // まだ適当です! 1272 1272 ; line 348 : while( ms != 0 ){ 1273 1273 $DGL 0,6 1274 1274 00206 ?L0090: 1275 1275 00206 8C02 mov a,[hl+2] ; ms ;[INF] 2, 1 1276 1276 00208 D1 cmp0 a ;[INF] 1, 1 1277 1277 00209 DD12 bz $?L0091 ;[INF] 2, 4 1278 1278 0020B ??bb00_wait_ms: 1279 1279 ; line 349 : ms--; 1280 1280 $DGL 0,7 1281 1281 0020B 616902 dec [hl+2] ; ms ;[INF] 3, 2 1282 1282 ; line 350 : #ifdef _OVERCLOCK_ 1283 1283 ; line 351 : fine = 860; 1284 1284 $DGL 0,9 1285 1285 0020E 305C03 movw ax,#035CH ; 860 ;[INF] 3, 1 1286 1286 00211 BB movw [hl],ax ; fine ;[INF] 1, 1 1287 1287 ; line 352 : #else 1288 1288 ; line 353 : fine = 430; 1289 1289 ; line 354 : #endif 1290 1290 ; line 355 : while( fine != 0 ){ 1291 1291 $DGL 0,13 1292 1292 00212 ?L0092: 1293 1293 00212 F6 clrw ax ;[INF] 1, 1 1294 1294 00213 614900 cmpw ax,[hl+0] ; fine ;[INF] 3, 1 1295 1295 00216 DDEE bz $?L0090 ;[INF] 2, 4 1296 1296 00218 ??bb01_wait_ms: 1297 1297 ; line 356 : fine -= 1; 1298 1298 $DGL 0,14 1299 1299 00218 618900 decw [hl+0] ; fine ;[INF] 3, 2 1300 1300 0021B ??eb01_wait_ms: 1301 1301 ; line 357 : } 1302 1302 $DGL 0,15 1303 1303 0021B EFF5 br $?L0092 ;[INF] 2, 3 1304 1304 0021D ??eb00_wait_ms: 1305 1305 ; line 358 : } 1306 1306 0021D ?L0091: 1307 1307 ; line 359 : } 1308 1308 $DGL 0,17 1309 1309 0021D ??ef_wait_ms: 1310 1310 0021D 1004 addw sp,#04H ;[INF] 2, 1 1311 1311 0021F C6 pop hl ;[INF] 1, 1 1312 1312 00220 D7 ret ;[INF] 1, 6 1313 1313 00221 ??ee_wait_ms: 1314 1314 1315 1315 ----- @@CODEL CSEG 1316 1316 1317 1317 ----- @@BASE CSEG BASE 1318 1318 END 1319 1319 1320 1320 1321 1321 ; *** Code Information *** 1322 1322 ; 1323 1323 ; $FILE C:\78k_data\yav-mcu-basara\branches\0.10(fix)\renge\renge.c 1324 1324 ; 1325 1325 ; $FUNC renge_init(53) 1326 1326 ; void=(void) 1327 1327 ; CODE SIZE= 3 bytes, CLOCK_SIZE= 3 clocks, STACK_SIZE= 0 bytes 1328 1328 ; 1329 1329 ; $CALL renge_task_immed_init(54) 1330 1330 ; void=(void) 1331 1331 ; 1332 1332 ; $FUNC renge_task_interval_run(81) 1333 1333 ; bc=(void) 1334 1334 ; CODE SIZE= 43 bytes, CLOCK_SIZE= 45 clocks, STACK_SIZE= 6 bytes 1335 1335 ; 1336 1336 ; $CALL (92) 1337 1337 ; void=(void) 1338 1338 ; 1339 1339 ; $CALL renge_task_immed_run(94) 1340 1340 ; bc=(void) 1341 1341 ; 1342 1342 ; $FUNC renge_task_immed_init(117) 1343 1343 ; void=(void) 1344 1344 ; CODE SIZE= 21 bytes, CLOCK_SIZE= 24 clocks, STACK_SIZE= 2 bytes 1345 1345 ; 1346 1346 ; $FUNC renge_task_immed_add(131) 1347 1347 ; bc=(pointer new_task:ax) 1348 1348 ; CODE SIZE= 66 bytes, CLOCK_SIZE= 98 clocks, STACK_SIZE= 10 bytes 1349 1349 ; 1350 1350 ; $FUNC renge_task_immed_run(176) 1351 1351 ; bc=(void) 1352 1352 ; CODE SIZE= 341 bytes, CLOCK_SIZE= 381 clocks, STACK_SIZE= 10 bytes 1353 1353 ; 1354 1354 ; $CALL (196) 1355 1355 ; bc=(void) 1356 1356 ; 1357 1357 ; $FUNC wait_ms(343) 1358 1358 ; void=(unsigned char ms:x) 1359 1359 ; CODE SIZE= 36 bytes, CLOCK_SIZE= 36 clocks, STACK_SIZE= 10 bytes 1360 1360 ; 1361 1361 ; $CALL WDT_Restart(346) 1362 1362 ; void=(void) 1363 1363 1364 1364 ; Target chip : uPD79F0104 1365 1365 ; Device file : E1.00b Segment informations: ADRS LEN NAME 00000 00000H.3 @@BITS 00000 00000H @@CNST 00000 00016H @@R_INIT 00000 00016H @@INIT 00000 00012H @@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 00221H 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)