File: forst.t2

For general comments see here
LineAddressObject Code LabelF1N1BF2N2CommentsCheck
1 0  ; tape1.d/forst.t2
2 0  ;-----------------
3 0  ; compile for statement
4 0  ;
5 0  =3712 
6 3712  forstat::; 
7 3712  ;
8 3712  .ent:; 
9 3712 0607034 lod .lnk   ; @3712
10 3712+0547036 cls W3614   ;
11 3713   call     ;
11+13713 7323731005012 lnk push.lnk:jmp push.ent 
12 3714   call     ; @3714
12+13714 7322411004503 lnk advance.lnk:jmp advance.ent 
13 3715 0603427 lod idptr   ;
14 3715+0064324 and T_Mask   ;=0700000000000
15 3716 1010615 jmp .4493   ;-> @3716
16 3716+ ;
17 3716+ =4493 
18 4493  ;patch
19 4493 0407037.4493:sto W3615   ;
20 4493+0124320 sub IntBit   ;=0200000000000
21 4494 1025453 jn _err33   ; @4494
22 4494+0603427 lod idptr   ;
23 4495 0064360 and procbit2   ;=02000000000000
24 4495+1147204 jz .3716P   ;->
25 4496 1005453 jmp _err33   ; @4496
26 4496+ ;
27 4496+0000000 o00 0    
28 4497  =3716+ 
29 3716+ ; from 4495+ (patch?)
30 3716+0447036.3716P:inc W3614   ;
31 3717   call     ;
31+13717 7326171005437 lnk Variable.lnk:jmp Variable.ent 
32 3718 0642143 lis W1123   ; @3718
33 3718+0347041 stc W3617   ;
34 3719 0000000 o00 0   ;no-op
35 3719+0642143 lis W1123   ;
36 3720   call     ; @3720
36+13720 7323731005012 lnk push.lnk:jmp push.ent 
37 3721 0600600 lod token   ; token
38 3721+0124355 sub W2285   ;=43 [:=]
39 3722  ; from 3728+
40 3722 1047234.3722:jz .3740   ;->OK, compile for list @3722
41 3722+1661044_err45:lnk errlnk   ;error 45: missing := in for, or
42 3723   ; for list element not followed by , or do 
43 3723 1001070 jmp Error   ;->error
44 3723+ ;
45 3723+0107037.3723P:add W3615   ;=0200000000000
46 3724 0127032 sub W3610   ;=0400000000000 @3724
47 3724+1047276 jz .3774   ;->
48 3725 1007350 jmp .3816   ;
49 3725+ ;
50 3725+ ; from 3761
51 3725+0604340.3725P:lod K2b   ;=2
52 3726 0347036 stc W3614   ; @3726
53 3726+0040600 o02 token   ;token+1
54 3727 0124363 sub K41   ;=41 [DO]+1
55 3727+1047221 jz .3729   ;->
56 3728 0124313 sub K1b   ;=1 [,]+1 @3728
57 3728+1007212 jmp .3722   ;->
58 3729  ;
59 3729  ; got the DO, compile controlled statement
60 3729  ; from 3727+
61 3729  .3729:call     ; plant else jump
61+13729 7320121007405 lnk L3845.lnk:jmp L3845.ent 
62 3730   call     ; @3730
62+13730 7322411004503 lnk advance.lnk:jmp advance.ent 
63 3731   call     ;1708 compile
63+13731 7310611003254 lnk statement.lnk:jmp statement.ent 
64 3732 0000000 o00 0   ; @3732
65 3732+0040000 o02 0   ;=1
66 3733 2710646600000 o27 stkp/lod 0;unstack 1 word
67 3734 0404031 sto IdInfo   ; @3734
68 3734+0603546 lod GPs+65   ;=2027
69 3735   call     ;
69+13735 7320121004033 lnk gencode.lnk:jmp gencode.ent 
70 3736   call     ; @3736
70+13736 7306371101531 lnk putcode6.lnk:jmp putcode6.ent 
71 3737 0010646577777 o00 stkp/lod -1;
72 3738   call     ; check? @3738
72+13738 7323761005051 lnk FreeTemp.lnk:jmp FreeTemp.ent 
73 3739 1107132 jmp Pop2   ;return via stack
74 3739+ ;
75 3739+0000000 o00 0    
76 3740  ;
77 3740  ; from 3722, compile for list element
78 3740  ;
79 3740  .3740:call     ; @3740
79+13740 7307255001654 lnk putNop.lnk:jmp putNop.ent 
80 3741 0602145 lod ObjPC   ;
81 3741+0407035 sto W3613   ;
82 3742 0040000 o02 0   ;=1 @3742
83 3742+0404300 sto W2240   ;
84 3743   call     ;
84+13743 7323131004627 lnk expression.lnk:jmp expression.ent 
85 3744 1661044_err47:lnk errlnk   ;error 47 - expression in @3744
86 3744+ ; ;for list not followed by
87 3744+ ; ;step,while,do or comma
88 3744+0040000 o02 0   ;=1
89 3745 2710646600000 o27 stkp/lod 0;unstack one word
90 3746   call     ; @3746
90+13746 7320121007406 lnk L3846.lnk:jmp L3846.ent 
91 3747 0010646577776 o00 stkp/lod -2;
92 3748 0404031 sto IdInfo   ; @3748
93 3748+0603445 lod GPs+0   ;=GP1F 20,0
94 3749   call     ;
94+13749 7320121004033 lnk gencode.lnk:jmp gencode.ent 
95 3750 0044355 o02 W2285   ;=43+1 [STEP] @3750
96 3750+0120600 sub token   ;token
97 3751 1047277 jz .3775   ;->process step clause
98 3751+0104340 add K2b   ;=2 [WHILE]
99 3752 1047262 jz .3762   ;->process while clause @3752
100 3752+0124336 sub K5b   ;=5 [,]
101 3753 1047253 jz .3755   ;->
102 3753+0124313 sub K1b   ;=1 [DO]
103 3754 1047253 jz .3755   ;-> @3754
104 3754+1004772 jmp error2   ;error in for statement
105 3755  ;
106 3755  ; comma or do in for list
107 3755  ;
108 3755 0010646577777.3755:o00 stkp/lod -1;
109 3756   call     ; @3756
109+13756 7307175107412 lnk L3850P.lnk:jmp L3850P.ent 
110 3757 0034172603470 o00 W3614/lod GPs+19;
111 3758   call     ; @3758
111+13758 7320121004033 lnk gencode.lnk:jmp gencode.ent 
112 3759 0000000 o00 0   ;
113 3759+0140000 cla 0   ;
114 3760   call     ;call 958 @3760
114+13760 7307365001676 lnk L958.lnk:jmp L958.ent 
115 3761  ; from 3773
116 3761 1107215.3761:jmp .3725P   ;->
117 3761+ ;
118 3761+0000000 o00 0    
119 3762  ;
120 3762  ; while in for list
121 3762  ;
122 3762 0544300.3762:cls W2240   ; @3762
123 3762+0444300 inc W2240   ;
124 3763   call     ;
124+13763 7326605005553 lnk compbool.lnk:jmp compbool.ent 
125 3764 0000000 o00 0   ; @3764
126 3764+0040000 o02 0   ;=1
127 3765 2710646577777 o27 stkp/lod -1;
128 3766   call     ; @3766
128+13766 7307175107412 lnk L3850P.lnk:jmp L3850P.ent 
129 3767   call     ;
129+13767 7320121007411 lnk L3849.lnk:jmp L3849.ent 
130 3768  ; from 3827+
131 3768  .3768:call     ; @3768
131+13768 7320121007377 lnk L3839.lnk:jmp L3839.ent 
132 3769 0607035 lod W3613   ;
133 3769+0401422 sto GenAdr   ;
134 3770 0000000 o00 0   ; @3770
135 3770+0606254 lod W3244   ;
136 3771   call     ;
136+13771 7307175001665 lnk GenSkpInst.lnk:jmp GenSkpInst.ent 
137 3772   call     ; @3772
137+13772 7306371101531 lnk putcode6.lnk:jmp putcode6.ent 
138 3773 1007261 jmp .3761   ;->
139 3773+ ;
140 3773+0547040.3773P:cls W3616   ;
141 3774  ; from 3724+
142 3774 0603465.3774:lod GPs+16   ; @3774
143 3774+1107350 jmp .3816P   ;->
144 3775  ;
145 3775  ; step in for list
146 3775  ;
147 3775 0607041.3775:lod W3617   ;
148 3775+0404031 sto IdInfo   ;
149 3776 0547040 cls W3616   ; @3776
150 3776+0603540 lod GPs+59   ;=04000000540001
151 3777   call     ;
151+13777 7320121004033 lnk gencode.lnk:jmp gencode.ent 
152 3778   call     ; @3778
152+13778 7307255001654 lnk putNop.lnk:jmp putNop.ent 
153 3779 0602145 lod ObjPC   ;
154 3779+0407035 sto W3613   ;
155 3780   call     ; @3780
155+13780 7322411004503 lnk advance.lnk:jmp advance.ent 
156 3781 0040600 o02 token   ;token+1
157 3781+1027364 jn .3828   ;->error
158 3782  .3782:; 
159 3782 0604340 lod K2b   ;=2 @3782
160 3782+ .3782P:; 
161 3782+0404300 sto W2240   ;
162 3783   call     ;
162+13783 7323131004627 lnk expression.lnk:jmp expression.ent 
163 3784 0600600 lod token   ;token @3784
164 3784+0125552 sub W2922   ;=45 [UNTIL]
165 3785 1147312 jz .3786P   ;->
166 3785+1661044_err48:lnk errlnk   ;error 48: missing until
167 3786 1004772 jmp error2   ; @3786
168 3786+ ;
169 3786+ ; from 3785, until OK
170 3786+ ;
171 3786+0604305.3786P:lod W2245   ;
172 3787   call     ;
172+13787 7320121007406 lnk L3846.lnk:jmp L3846.ent 
173 3788   call     ; @3788
173+13788 7323761005021 lnk SaveTemp.lnk:jmp SaveTemp.ent 
174 3789 1007320 jmp .3792   ;->
175 3789+ ;
176 3789+0000000 o00 0    
177 3790  ;
178 3790 0000000000000 +0; @3790
179 3791 0000000000000 +0; @3791
180 3792  ;
181 3792  ; from 3789
182 3792  ;
183 3792  .3792:; 
184 3792 0442151 inc stkp   ; @3792
185 3792+0442161 inc wsptr   ;
186 3793  .3793:; 
187 3793 0607041 lod W3617   ;
188 3793+0404031 sto IdInfo   ;
189 3794 0040000 o02 0   ;=1 @3794
190 3794+0404300 sto W2240   ;
191 3795   call     ;
191+13795 7320121004032 lnk gencode1.lnk:jmp gencode1.ent 
192 3796   call     ; gencode++? @3796
192+13796 7320121007403 lnk L3843.lnk:jmp L3843.ent 
193 3797 0607040 lod W3616   ;
194 3797+1047332 jz .3802   ;
195 3798 0010646577774 o00 stkp/lod -4; @3798
196 3799 0404031 sto IdInfo   ;
197 3799+0603551 lod GPs+68   ;=04000000440001
198 3800   call     ; @3800
198+13800 7320121004033 lnk gencode.lnk:jmp gencode.ent 
199 3801 1007340 jmp .3808   ;->
200 3801+ ;
201 3801+0000000 o00 0    
202 3802  ;
203 3802  .3802:; 
204 3802 0010646577776 o00 stkp/lod -2; @3802
205 3803 0404031 sto IdInfo   ;
206 3803+0603446 lod GPs+1   ;=GP1F 30,0
207 3804   call     ; @3804
207+13804 7320121004033 lnk gencode.lnk:jmp gencode.ent 
208 3805 0010646577774 o00 stkp/lod -4;
209 3806 0404031 sto IdInfo   ; @3806
210 3806+0603547 lod GPs+66   ;=2029
211 3807   call     ;
211+13807 7320121004033 lnk gencode.lnk:jmp gencode.ent 
212 3808  ; from 3801
213 3808  .3808:; 
214 3808   call     ; @3808
214+13808 7306371101531 lnk putcode6.lnk:jmp putcode6.ent 
215 3809 0607041 lod W3617   ;
216 3809+0401422 sto GenAdr   ;
217 3810 0000000 o00 0   ;no-op @3810
218 3810+0604123 lod W2131   ;=0000001660006
219 3811   call     ;
219+13811 7307175001640 lnk GenInst.lnk:jmp GenInst.ent 
220 3812   call     ; @3812
220+13812 7323131004627 lnk expression.lnk:jmp expression.ent 
221 3813 0010646577773 o00 stkp/lod -5;
222 3814 0404031 sto IdInfo   ; @3814
223 3814+0604305 lod W2245   ;
224 3815 0404306 sto W2246   ;
225 3815+1107213 jmp .3723P   ;->
226 3816  ;
227 3816  .3816:; 
228 3816 0603454 lod GPs+7   ;=1926 @3816
229 3816+ ; from 3774+
230 3816+ .3816P:; 
231 3816+0442161 inc wsptr   ;
232 3817   call     ;
232+13817 7320121004033 lnk gencode.lnk:jmp gencode.ent 
233 3818 0227040 o11 W3616   ; @3818
234 3818+1027356 jn .3822   ;->
235 3819 0010646577775 o00 stkp/lod -3;
236 3820 0404031 sto IdInfo   ; @3820
237 3820+0603550 lod GPs+67   ;=2033
238 3821   call     ;
238+13821 7320121004033 lnk gencode.lnk:jmp gencode.ent 
239 3822  ; from 3818+
240 3822  .3822:; 
241 3822 0010646577774 o00 stkp/lod -4; @3822
242 3823   call      
242+13823 7307175107412 lnk L3850P.lnk:jmp L3850P.ent 
243 3824   call     ; gen? @3824
243+13824 7320121007411 lnk L3849.lnk:jmp L3849.ent 
244 3825   call     ; gen?
244+13825 7320121007404 lnk L3844.lnk:jmp L3844.ent 
245 3826 0604341 lod K3a   ;=3 @3826
246 3826+0562151 o27 stkp   ;remove 3 stack entries
247 3827 0562161 o27 wsptr   ;and 3 temps
248 3827+1007270 jmp .3768   ;->
249 3828  ;
250 3828  .3828:; 
251 3828 0607037 lod W3615   ; @3828
252 3828+0124315 sub procbit1   ;
253 3829 1047306 jz .3782   ;
254 3829+0040000 o02 0   ;
255 3830 0016136120000 o00 idptr/sub 0; @3830
256 3831 1047370 jz .3832   ;
257 3831+1007306 jmp .3782   ;
258 3832  ;
259 3832  .3832:; 
260 3832 0603427 lod idptr   ; @3832
261 3832+0404303 sto W2243   ;
262 3833   call     ;
262+13833 7322411004503 lnk advance.lnk:jmp advance.ent 
263 3834 0600600 lod token   ; @3834
264 3834+0125552 sub W2922   ;
265 3835 1147374 jz .3836P   ;
266 3835+0604341 lod K3a   ;=3
267 3836 1107306 jmp .3782P   ; @3836
268 3836+ ;
269 3836+ .3836P:; 
270 3836+0447040 inc W3616   ;
271 3837 0604340 lod K2b   ;=2
272 3837+0502151 ads stkp   ;
273 3838 0502161 ads wsptr   ; @3838
274 3838+1007321 jmp .3793   ;
275 3839  ;
276 3839  L3839.ent:; 
277 3839 0603471 lod GPs+20   ;=04000000000011 @3839
278 3839+1004033 jmp gencode.ent   ;
279 3840  ;
280 3840  L3840.ent:; 
281 3840 0603472 lod GPs+21   ;=04000000000012 @3840
282 3840+1004033 jmp gencode.ent   ;
283 3841  ;
284 3841  L3841.ent:; 
285 3841 0603475 lod GPs+24   ;=04000000020011 @3841
286 3841+1004033 jmp gencode.ent   ;
287 3842  ;
288 3842  L3842.ent:; 
289 3842 0603476 lod GPs+25   ;=04000000020012 @3842
290 3842+1004033 jmp gencode.ent   ;
291 3843  ;
292 3843  L3843.ent:; 
293 3843 0603477 lod GPs+26   ;=04000000040011 @3843
294 3843+1004033 jmp gencode.ent   ;
295 3844  ;
296 3844  L3844.ent:; 
297 3844 0603500 lod GPs+27   ;=04000000040012 @3844
298 3844+1004033 jmp gencode.ent   ;
299 3845  ;
300 3845  L3845.ent:; 
301 3845 0603473 lod GPs+22   ;=04000000000013 @3845
302 3845+1004033 jmp gencode.ent   ;
303 3846  ;
304 3846  L3846.ent:; 
305 3846 0404306 sto W2246   ; @3846
306 3846+0127037 sub W3615   ;
307 3847 0020123040001 o00 L3846.lnk/jz 1;return +1 if =0
308 3848  L3848.ent:; 
309 3848 0603450 lod GPs+3   ;=GPs+85 (1914) @3848
310 3848+1004033 jmp gencode.ent   ;
311 3849  ;
312 3849  L3849.ent:; 
313 3849 0034172603474 o00 W3614/lod GPs+23;
314 3850 1004033 jmp gencode.ent   ; @3850
315 3850+ ;
316 3850+ L3850P::; 
317 3850+ ;
318 3850+ .ent:; 
319 3850+0401422 sto GenAdr   ;
320 3851 0604123 lod W2131   ;=0000001660006
321 3851+1001665 jmp GenSkpInst.ent   ;
322 3852  ;--------------------------------------------------------------------