source: uKadecot/trunk/ssp/arch/rx630_ccrx/prc.tf@ 101

Last change on this file since 101 was 101, checked in by coas-nagasima, 8 years ago

TOPPERS/uKadecotのソースコードを追加

  • Property svn:eol-style set to native
  • Property svn:keywords set to Id
  • Property svn:mime-type set to text/plain
File size: 9.5 KB
Line 
1$
2$ TOPPERS/SSP Kernel
3$ Smallest Set Profile Kernel
4$
5$ Copyright (C) 2008-2010 by Witz Corporation, JAPAN
6$ Copyright (C) 2013 by Mitsuhiro Matsuura
7$
8$ ã‹L’˜ìŒ ŽÒ‚́CˆÈ‰º‚Ì(1)`(4)‚ÌðŒ‚ð–ž‚½‚·ê‡‚ÉŒÀ‚èC–{ƒ\ƒtƒgƒEƒF
9$ ƒAi–{ƒ\ƒtƒgƒEƒFƒA‚ð‰ü•Ï‚µ‚½‚à‚Ì‚ðŠÜ‚ށDˆÈ‰º“¯‚¶j‚ðŽg—pE•¡»E‰ü
10$ •ÏEÄ”z•ziˆÈ‰ºC—˜—p‚ƌĂԁj‚·‚邱‚Ƃ𖳏ž‚Å‹–‘ø‚·‚éD
11$ (1) –{ƒ\ƒtƒgƒEƒFƒA‚ðƒ\[ƒXƒR[ƒh‚ÌŒ`‚Å—˜—p‚·‚éê‡‚ɂ́Cã‹L‚Ì’˜ì
12$ Œ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’肪C‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[
13$ ƒXƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
14$ (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
15$ —p‚Å‚«‚éŒ`‚ōĔz•z‚·‚éê‡‚ɂ́CÄ”z•z‚É”º‚¤ƒhƒLƒ…
16ƒƒ“ƒgi—˜—p
17$ ŽÒƒ}ƒjƒ…
18ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L
19$ ‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
20$ (3) –{ƒ\ƒtƒgƒEƒFƒA‚ðC‹@Ší‚É‘g‚ݍž‚ނȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
21$ —p‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±
22$ ‚ƁD
23$ (a) Ä”z•z‚É”º‚¤ƒhƒLƒ…
24ƒƒ“ƒgi—˜—pŽÒƒ}ƒjƒ…
25ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜
26$ ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
27$ (b) Ä”z•z‚ÌŒ`‘Ô‚ðC•Ê‚É’è‚ß‚é•û–@‚É‚æ‚Á‚āCTOPPERSƒvƒƒWƒFƒNƒg‚É
28$ •ñ‚·‚邱‚ƁD
29$ (4) –{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹
30$ ŠQ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD
31$ ‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚̃†[ƒU‚Ü‚½‚̓Gƒ“ƒhƒ†[ƒU‚©‚ç‚Ì‚¢‚©‚Ȃ闝
32$ —R‚ÉŠî‚­¿‹‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð
33$ –Ɛӂ·‚邱‚ƁD
34$
35$ –{ƒ\ƒtƒgƒEƒFƒA‚́C–³•ÛØ‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Å‚ ‚éDã‹L’˜ìŒ ŽÒ‚¨
36$ ‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚́C–{ƒ\ƒtƒgƒEƒFƒA‚ÉŠÖ‚µ‚āC“Á’è‚ÌŽg—p–Ú“I
37$ ‚ɑ΂·‚é“K‡«‚àŠÜ‚߂āC‚¢‚©‚È‚é•ÛØ‚às‚í‚È‚¢D‚Ü‚½C–{ƒ\ƒtƒgƒEƒF
38$ ƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»
39$ ‚̐ӔC‚𕉂í‚È‚¢D
40$
41$
42
43$
44$ ƒA[ƒLƒeƒNƒ`ƒƒˆË‘¶ƒeƒ“ƒvƒŒ[ƒgiRX630—pj
45$
46
47
48
49$
50$ ATT_ISR‚ÅŽg—p‚Å‚«‚銄ž‚ݔԍ†‚Æ‚»‚ê‚ɑΉž‚·‚銄ž‚݃nƒ“ƒhƒ‰”ԍ†
51$
52
53$INTNO_ATTISR_VALID = INTNO_VALID$
54$INHNO_ATTISR_VALID = INHNO_VALID$
55
56
57$
58$ DEF_INT^DEF_EXC‚ÅŽg—p‚Å‚«‚銄ž‚݃nƒ“ƒhƒ‰”ԍ†^CPU—áŠOƒnƒ“ƒhƒ‰”ԍ†
59$
60
61$INHNO_DEFINH_VALID = INHNO_VALID$
62$EXCNO_DEFEXC_VALID = EXCNO_VALID$
63
64
65$
66$ CFG_INT‚ÅŽg—p‚Å‚«‚銄ž‚ݔԍ†‚ÆŠ„ž‚Ý—Dæ“x
67$
68
69$INTNO_CFGINT_VALID = INHNO_VALID$
70$INTPRI_CFGINT_VALID = { -7, -6,...,-1 }$
71
72
73$
74$ ƒ^[ƒQƒbƒg”ñˆË‘¶•”‚ÉŠÜ‚Ü‚ê‚é•W€‚ÌŠ„ž‚ÝŠÇ—‹@”\/—áŠOŠÇ—‹@”\‚̏‰Šú‰»ˆ—‚ðŽg—p‚·‚é
75$
76
77$OMIT_INITIALIZE_INTERRUPT = 0$
78$OMIT_INITIALIZE_EXCEPTION = 0$
79
80
81$
82$ ƒXƒ^ƒbƒNƒTƒCƒY‚̃`ƒFƒbƒN•û–@Žw’è
83$
84
85$CHECK_STKSZ_ALIGN = 4$
86
87
88$
89$ ƒ^ƒXƒNƒXƒ^ƒbƒNƒTƒCƒY‚̍ŏ¬’l
90$
91$ ƒ^ƒXƒN‹N“®Žž‚É4byte,
92$ Š„ž‚Ý“üŒûˆ—‚É‚Ä48byte, CPU—áŠO“üŒûˆ—‚É‚Ä84byte,
93$ ‚Å‚ ‚邽‚ß, Å¬’l‚Í88byte‚Æ‚·‚é.
94$
95
96$TARGET_MIN_STKSZ = 88$
97
98
99$
100$ ’萔’è‹`
101$
102
103$TA_POSEDGE = TA_EDGE$
104
105
106$
107$ ƒ^[ƒQƒbƒgˆË‘¶‚ÌŠ„ž‚Ý‘®«‚Ì’è‹`
108$
109
110$TARGET_INTATR = TA_POSEDGE | TA_NEGEDGE | TA_BOTHEDGE | TA_LOWLEVEL$
111
112
113$
114$ ƒ^[ƒQƒbƒgˆË‘¶‚ÌŠ„ž‚݃nƒ“ƒhƒ‰‘®«‚Ì’è‹`
115$
116
117$TARGET_INHATR = TA_NONKERNEL$
118
119
120$
121$ ƒJ[ƒlƒ‹ŠÇ—ŠOŠ„ž‚݃nƒ“ƒhƒ‰‚͌Œ肳‚¹‚È‚¢‚½‚ß,
122$ INTNO_FIX_KERNEL
123$ INHNO_FIX_KERNEL
124$ INHNO_FIX_NONKERNEL
125$ INHNO_FIX_NONKERNEL
126$ ‚ð’è‹`‚µ‚È‚¢.
127$
128
129
130$
131$ •W€ƒeƒ“ƒvƒŒ[ƒgƒtƒ@ƒCƒ‹‚̃Cƒ“ƒNƒ‹[ƒh
132$
133$INCLUDE "kernel.tf"$
134
135
136
137$
138$ CFG_INT‚̃^[ƒQƒbƒgˆË‘¶‚̃Gƒ‰[ƒ`ƒFƒbƒN
139$
140
141$FOREACH intno INT.ORDER_LIST$
142$ IRQŠ„ž‚ݔԍ†‚©‚Ç‚¤‚©‚ðƒ`ƒFƒbƒN
143 $IF ( LENGTH( FIND( INTNO_INT, INT.INTNO[intno] ) ) != 0 )$
144
145$ TA_POSEDGE‚ÆTA_NEGEDGE‚ª“¯Žž‚ɐݒ肳‚ê‚Ä‚¢‚éê‡
146 $IF ((INT.INTATR[intno] & ( TA_POSEDGE | TA_NEGEDGE )) == ( TA_POSEDGE | TA_NEGEDGE ))$
147 $ERROR$ INT.TEXT_LINE[intno]:$FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "intatr", INT.INTATR[intno], INT.INTNO[intno], "CFG_INT")$$END$
148 $END$
149
150$ TA_POSEDGE‚ÆTA_BOTHEDGE‚ª“¯Žž‚ɐݒ肳‚ê‚Ä‚¢‚éê‡
151 $IF ((INT.INTATR[intno] & ( TA_POSEDGE | TA_BOTHEDGE )) == ( TA_POSEDGE | TA_BOTHEDGE ))$
152 $ERROR$ INT.TEXT_LINE[intno]:$FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "intatr", INT.INTATR[intno], INT.INTNO[intno], "CFG_INT")$$END$
153 $END$
154
155$ TA_NEGEDGE‚ÆTA_BOTHEDGE‚ª“¯Žž‚ɐݒ肳‚ê‚Ä‚¢‚éê‡
156 $IF ((INT.INTATR[intno] & ( TA_NEGEDGE | TA_BOTHEDGE )) == ( TA_NEGEDGE | TA_BOTHEDGE ))$
157 $ERROR$ INT.TEXT_LINE[intno]:$FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "intatr", INT.INTATR[intno], INT.INTNO[intno], "CFG_INT")$$END$
158 $END$
159
160$ TA_POSEDGE‚ÆTA_NEGEDGE‚ÆTA_BOTHEDGE‚ª“¯Žž‚ɐݒ肳‚ê‚Ä‚¢‚éê‡
161 $IF ((INT.INTATR[intno] & ( TA_POSEDGE | TA_NEGEDGE | TA_BOTHEDGE )) == ( TA_POSEDGE | TA_NEGEDGE | TA_BOTHEDGE ))$
162 $ERROR$ INT.TEXT_LINE[intno]:$FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "intatr", INT.INTATR[intno], INT.INTNO[intno], "CFG_INT")$$END$
163 $END$
164
165 $ELSE$
166
167$ IRQŠ„ž‚݈ȊO‚ÌŠ„ž‚݂ɑ΂µ‚ÄŠ„ž‚Ý‘®«‚ªŽw’肳‚ê‚Ä‚¢‚éê‡
168 $IF (INT.INTATR[intno] & (~( TA_ENAINT | TA_EDGE ))) != 0$
169 $ERROR$ INT.TEXT_LINE[intno]: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "intatr", INT.INTATR[intno], INT.INTNO[intno], "CFG_INT")$$END$
170 $END$
171
172 $END$
173
174$END$
175
176
177
178$
179$ Š„ž‚ݔԍ†‚©‚犄ž‚Ý—Dæ“x‹y‚Ñ‘®«‚ðŽæ‚èo‚·ƒe[ƒuƒ‹
180$
181
182/*$NL$
183$SPC$*$SPC$$SPC$Interrupt Level and Attribute Table$NL$
184$SPC$*/$NL$
185const CFG_INT_INFO _kernel_cfg_int_table[$LENGTH(INTNO_RANGE)$] = {$NL$
186$FOREACH intno INTNO_RANGE$
187$ Š„ž‚Ý—Dæ“x‚ðŽæ“¾
188 $IF LENGTH(INT.INTNO[intno])$
189 $intpri = -INT.INTPRI[intno]$
190 $intatr = INT.INTATR[intno]$
191 $ELSE$
192 $intpri = "0"$
193 $intatr = "0xFFFFFFFF"$
194 $END$
195
196$ ƒe[ƒuƒ‹‚Ì’†g‚ðo—Í
197 $TAB$$FORMAT("{ %2d, %08x }, /* %02u */", intpri, intatr, +intno)$$NL$
198$END$
199};$NL$$NL$
200
201
202$
203$ ƒAƒZƒ“ƒuƒ‰o—̓tƒ@ƒCƒ‹
204$
205
206$FILE "kernel_cfg_asm.src"$
207
208;$NL$
209; RX630ƒA[ƒLƒeƒNƒ`ƒƒˆË‘¶o—̓tƒ@ƒCƒ‹$NL$
210;$NL$
211; Š„ž‚݃xƒNƒ^‹y‚ÑŠ„ž‚݃nƒ“ƒhƒ‰’è‹`$NL$
212;$NL$
213$NL$$NL$
214
215
216$
217$ Š„ž‚Ý“üŒûˆ—
218$
219
220$
221$ ‹¤’ʊ֐”‚̐錾
222$
223
224$TAB$.section P, CODE$NL$
225$TAB$.glb$TAB$_kernel_interrupt$NL$
226$TAB$.glb$TAB$__kernel_default_int_handler$NL$
227$TAB$.glb$TAB$__kernel_default_exc_handler$NL$$NL$$NL$
228
229
230$
231$ Š„ž‚݃nƒ“ƒhƒ‰‚̏o—Í
232$
233
234$FOREACH inhno INHNO_RANGE$
235 $IF LENGTH(INH.INHNO[inhno])$
236 $IF ((INH.INHATR[inhno] & TA_NONKERNEL) == 0)$
237 $TAB$.glb _$INH.INTHDR[inhno]$$NL$
238 $TAB$.glb __kernel_$INH.INTHDR[inhno]$_$+INH.INHNO[inhno]$_entry$NL$
239 __kernel_$INH.INTHDR[inhno]$_$+INH.INHNO[inhno]$_entry:$NL$
240 $TAB$pushm r1-r5 ; ƒXƒNƒ‰ƒbƒ`ƒŒƒWƒXƒ^‚ðƒ^ƒXƒNƒXƒ^ƒbƒN‚Ö‘Þ”ð $NL$
241 $TAB$mov.l #$+INH.INHNO[inhno]$, r1 ; Š„ž‚݃nƒ“ƒhƒ‰”ԍ†‚ðr1‚Ö $NL$
242 $TAB$mov.l #_$INH.INTHDR[inhno]$, r2 ; ƒnƒ“ƒhƒ‰‚̃AƒhƒŒƒX‚ðr2‚Ö $NL$
243 $TAB$bra.a _kernel_interrupt ; ‹¤’ʃ‹[ƒ`ƒ“‚Ö $NL$$NL$$NL$
244 $END$
245 $END$
246$END$
247
248
249$ –¢“o˜^Š„ž‚݃nƒ“ƒhƒ‰“üŒûˆ—
250$TAB$.glb$TAB$__kernel_default_int_handler_entry$NL$
251__kernel_default_int_handler_entry:$NL$
252$TAB$pushm r1-r5 ; ƒXƒNƒ‰ƒbƒ`ƒŒƒWƒXƒ^‚ðƒ^ƒXƒNƒXƒ^ƒbƒN‚Ö‘Þ”ð $NL$
253$TAB$mov.l #0FFFFFFFFH, r1 ; Š„ž‚݃nƒ“ƒhƒ‰”ԍ†‚ðr1‚Ö $NL$
254$TAB$mov.l #__kernel_default_int_handler, r2 ; ƒnƒ“ƒhƒ‰‚̃AƒhƒŒƒX‚ðr2‚Ö $NL$
255$TAB$bra.a _kernel_interrupt ; ‹¤’ʃ‹[ƒ`ƒ“‚Ö $NL$$NL$$NL$
256
257
258$
259$ CPU—áŠOƒnƒ“ƒhƒ‰“üŒûˆ—
260$
261
262$TAB$.glb _kernel_exception$NL$$NL$
263
264$FOREACH excno EXCNO_RANGE$
265 $IF LENGTH(EXC.EXCNO[excno])$
266 $TAB$.glb _$EXC.EXCHDR[excno]$$NL$
267 $TAB$.glb __kernel_$EXC.EXCHDR[excno]$_$+EXC.EXCNO[excno]$_entry$NL$
268 __kernel_$EXC.EXCHDR[excno]$_$+EXC.EXCNO[excno]$_entry:$NL$
269 $TAB$pushm r1-r5 ; ƒXƒNƒ‰ƒbƒ`ƒŒƒWƒXƒ^‚ðƒ^ƒXƒNƒXƒ^ƒbƒN‚Ö‘Þ”ð $NL$
270 $TAB$mov.l #$+EXC.EXCNO[excno]$, r1 ; CPU—áŠOƒnƒ“ƒhƒ‰”ԍ†‚ðr1‚Ö $NL$
271 $TAB$mov.l #_$EXC.EXCHDR[excno]$, r2 ; ƒnƒ“ƒhƒ‰‚̃AƒhƒŒƒX‚ðr2‚Ö $NL$
272 $TAB$bra.a _kernel_exception ; ‹¤’ʃ‹[ƒ`ƒ“‚Ö $NL$$NL$$NL$
273 $END$
274$END$
275
276
277$ –¢“o˜^CPU—áŠOƒnƒ“ƒhƒ‰“üŒûˆ—
278$TAB$.glb$TAB$__kernel_default_exc_handler_entry$NL$
279__kernel_default_exc_handler_entry:$NL$
280$TAB$pushm r1-r5 ; ƒXƒNƒ‰ƒbƒ`ƒŒƒWƒXƒ^‚ðƒ^ƒXƒNƒXƒ^ƒbƒN‚Ö‘Þ”ð $NL$
281$TAB$mov.l #0FFFFFFFFH, r1 ; CPU—áŠOƒnƒ“ƒhƒ‰”ԍ†‚ðr1‚Ö $NL$
282$TAB$mov.l #__kernel_default_exc_handler, r2 ; ƒnƒ“ƒhƒ‰‚̃AƒhƒŒƒX‚ðr2‚Ö $NL$
283$TAB$bra.a _kernel_exception ; ‹¤’ʃ‹[ƒ`ƒ“‚Ö $NL$$NL$$NL$
284
285
286$
287$ ‰Â•ÏƒxƒNƒ^ƒe[ƒuƒ‹
288$
289
290;$NL$
291; ‰Â•ÏƒxƒNƒ^ƒe[ƒuƒ‹$NL$
292;$NL$
293$NL$
294
295$TAB$.glb $TAB$ _start$NL$$NL$
296
297$FOREACH inhno INH.ORDER_LIST$
298 $IF ((INH.INHATR[inhno] & TA_NONKERNEL) != 0)$
299 $TAB$.glb $TAB$ _$INH.INTHDR[inhno]$ $NL$
300 $END$
301$END$
302$NL$
303
304$TAB$.section C$$VECT, ROMDATA$NL$$NL$
305vvector_table:$NL$
306$FOREACH inhno INHNO_RANGE$
307 $IF LENGTH(INH.INHNO[inhno])$
308 $IF ((INH.INHATR[inhno] & TA_NONKERNEL) == 0)$
309 $inhhdr = CONCAT(CONCAT("_kernel_" , CONCAT(INH.INTHDR[inhno] , "_")) , CONCAT(+INH.INHNO[inhno] , "_entry"))$
310 $ELSE$
311 $inhhdr = INH.INTHDR[inhno]$
312 $END$
313 $ELSE$
314 $inhhdr = "_kernel_default_int_handler_entry"$
315 $END$
316
317 $TAB$.lword$TAB$_$inhhdr$ $TAB$ $TAB$ $FORMAT("; %02d" , inhno)$ $NL$
318$END$
319
320
321$
322$ ŒÅ’èƒxƒNƒ^ƒe[ƒuƒ‹
323$
324$FOREACH excno EXCNO_RANGE$
325 $IF LENGTH(EXC.EXCNO[excno])$
326 $EXCHDR[excno] = CONCAT(CONCAT("_kernel_" , CONCAT(EXC.EXCHDR[excno] , "_")) , CONCAT(+EXC.EXCNO[excno] , "_entry"))$
327 $ELSE$
328 $EXCHDR[excno] = "_kernel_default_exc_handler_entry"$
329 $END$
330$END$
331
332$NL$
333;$NL$
334; ŒÅ’èƒxƒNƒ^ƒe[ƒuƒ‹$NL$
335;$NL$
336$NL$
337
338$TAB$ .section FVECT, ROMDATA$NL$
339$NL$
340fvector_table:$NL$$NL$
341
342$TAB$ .offset$TAB$ 020H$NL$
343$TAB$ .lword$TAB$ 00000000 $TAB$ ; §ŒäƒR[ƒh, IDƒR[ƒh1 - 3$NL$
344$TAB$ .lword$TAB$ 00000000 $TAB$ ; IDƒR[ƒh4 - 7$NL$
345$TAB$ .lword$TAB$ 00000000 $TAB$ ; IDƒR[ƒh8 - 11$NL$
346$TAB$ .lword$TAB$ 00000000 $TAB$ ; IDƒR[ƒh12 - 15$NL$$NL$
347
348$TAB$ .offset$TAB$ 050H$NL$
349$TAB$ .lword$TAB$ _$EXCHDR[20]$ $TAB$ $TAB$ ;$SPC$ 20:“ÁŒ –½—ß—áŠO $SPC$$NL$
350$TAB$ .offset$TAB$ 05CH$NL$
351$TAB$ .lword$TAB$ _$EXCHDR[23]$ $TAB$ $TAB$ ;$SPC$ 23:–¢’è‹`–½—ß—áŠO $SPC$$NL$
352$TAB$ .offset$TAB$ 064H$NL$
353$TAB$ .lword$TAB$ _$EXCHDR[25]$ $TAB$ $TAB$ ;$SPC$ 25:•‚“®¬”“_—áŠO $SPC$$NL$
354$TAB$ .offset$TAB$ 078H$NL$
355$TAB$ .lword$TAB$ _$EXCHDR[30]$ $TAB$ $TAB$ ;$SPC$ 30:ƒmƒ“ƒ}ƒXƒJƒuƒ‹—áŠO $SPC$$NL$
356$TAB$ .lword$TAB$ _start $TAB$ $TAB$ $TAB$ $TAB$ ;$SPC$ 31:ƒŠƒZƒbƒg $SPC$$NL$
357
358$NL$ $NL$
359
360 $TAB$.end
361$NL$
Note: See TracBrowser for help on using the repository browser.