File: assign.t2

For general comments see here
LineAddressObject Code LabelF1N1BF2N2CommentsCheck
1 0  ; tape1.d/assign.t2
2 0  ;------------------
3 0  ;
4 0  assignment::; 
5 0  ;
6 0  =2307 
7 2307  .ent:; 
8 2307 0603427 lod idptr   ; @2307
9 2307+0064324 and T_Mask   ;=0700000000000
10 2308 0344301 stc W2241   ;save it
11 2308+0000000 o00 0   ;no-op
12 2309   call     ;stack zero
12+12309 7323731005012 lnk push.lnk:jmp push.ent 
13 2310  .loop1:; 
14 2310 0603427 lod idptr   ; @2310
15 2310+0347041 stc W3617   ;save id info
16 2311   call     ;check id and push onto stack
16+12311 7326171005437 lnk Variable.lnk:jmp Variable.ent 
17 2312 0600600 lod token   ;token @2312
18 2312+1045373 jz _err31   ;identifier
19 2313 0124355 sub W2285   ;=43 [:=]
20 2313+1044443 jz .13   ; yes, assignment
21 2314 0604341 lod K3a   ;=3
22 2314+0404300 sto W2240   ;
23 2315 0603427 lod idptr   ;
24 2315+0064360 and procbit2   ;=02000000000000
25 2316 1104472 jmp .skip1   ;-->> @2316
26 2316+ =2362+ 
27 2362+1144474.skip1:jz .2   ;
28 2363   call     ;
28+12363 7331155010611 lnk CallFunc.lnk:jmp CallFunc.ent 
29 2364 1104414 jmp .3   ; @2364
30 2364+ ;
31 2364+ ; from 2362+
32 2364+0603427.2:lod idptr   ; @2364+
33 2365 0404031 sto IdInfo   ;
34 2365+0064367 and Bit33a   ;=0040000000000
35 2366 1144417 jz .4   ; @2366
36 2366+0603515 lod GPs+40   ;=>GP2M 1,20;GP0F 30,0
37 2367   call     ;
37+12367 7320121004033 lnk gencode.lnk:jmp gencode.ent 
38 2368 0040000 o02 0   ;=1 @2368
39 2368+0562161 o27 wsptr   ;
40 2369 1104414 jmp .3   ;
41 2369+ ;
42 2369+  pad     ;
42+12369+0000000 00 0    
43 2370  =2316+ 
44 2316+ .3:; 
45 2316+0604301 lod W2241   ;
46 2317 0010646377777 o00 stkp/sto -1;
47 2318 0604347 lod K4a   ;=4 @2318
48 2318+0404300 sto W2240   ;
49 2319   pad     ;
49+12319 0000000 00 0    
50 2319+ ; from 2366
51 2319+ .4:; 
52 2319+0040000 o02 0   ;=1
53 2320 2710646600000 o27 stkp/lod 0;pop value @2320
54 2321  .5:; 
55 2321 0404303 sto W2243   ;save it
56 2321+ .6:; 
57 2321+0604301 lod W2241   ;
58 2322 0124322 sub TBool   ;=0100000000000 (boolean) @2322
59 2322+1044425 jz .7   ;boolean expression needed->
60 2323   call     ;get arithmetic expression
60+12323 7323131004627 lnk expression.lnk:jmp expression.ent 
61 2324 1004426 jmp .8   ;-> @2324
62 2324+ ;
63 2324+  pad     ;
63+12324+0000000 00 0    
64 2325  .7:; 
65 2325   call     ;get boolean expression @2325
65+12325 7326605005553 lnk compbool.lnk:jmp compbool.ent 
66 2326  .8:; 
67 2326 0544305 cls W2245   ; @2326
68 2326+0604340 lod K2b   ;=2 removing two items
69 2327 2710646600001 o27 stkp/lod 1;get top item
70 2328 0404306 sto W2246   ;save it @2328
71 2328+0124301 sub W2241   ;=0300000000000
72 2329 1044433 jz .9   ;->
73 2329+0604341 lod K3a   ;=3
74 2330   call     ; @2330
74+12330 7320121004032 lnk gencode1.lnk:jmp gencode1.ent 
75 2331  .9:; 
76 2331 0010646600000 o00 stkp/lod 0;get second item
77 2332 1661044_err18:lnk errlnk   ;error 18: := missing in assignment @2332
78 2332+1044772 jz error2   ;if zero goto error rtne
79 2333  .10:; 
80 2333 0404031 sto IdInfo   ;save it
81 2333+1004467 jmp .11   ;->
82 2334  ;
83 2334  =2359 
84 2359  .11:; 
85 2359   call     ;
85+12359 7323761005051 lnk FreeTemp.lnk:jmp FreeTemp.ent 
86 2360 0604305 lod W2245   ; @2360
87 2360+1004436 jmp .12   ;-->>
88 2361  =2334 
89 2334  .12:; 
90 2334   call     ;generate store instruction @2334
90+12334 7320121004032 lnk gencode1.lnk:jmp gencode1.ent 
91 2335   pad     ;no-op
91+12335 0000000 00 0    
92 2335+0040000 o02 0   ;=1
93 2336 2710646600000 o27 stkp/lod 0;unstack item @2336
94 2337   jnz     ;repeat until stopper found
94+12337 1044442 jz .1    
94+22337+1004435 jmp assignment.10    
94+32338  .1:; 
95 2338 0022013000001 o00 .lnk/jmp 1;return @2338
96 2339  ;------------------------------------------------
97 2339  ;
98 2339  .13:; 
99 2339 0607041 lod W3617   ;
100 2339+0064360 and procbit2   ;=02000000000000
101 2340 1044471 jz .18   ;-> @2340
102 2340+0603427 lod idptr   ;
103 2341 0064361 and W2289   ;
104 2341+1661044_err19:lnk errlnk   ;error 19: value assigned to proc outside body
105 2342 1044772 jz error2   ;error @2342
106 2342+1004471 jmp .18   ;-->>
107 2343  =2361 
108 2361  .18:; 
109 2361 0604340 lod K2b   ;=2
110 2361+0404300 sto W2240   ;
111 2362 1004447 jmp .14   ;-->> @2362
112 2362+ =2343 
113 2343  .14:; 
114 2343   call     ; 1 @2343
114+12343 7322411004503 lnk advance.lnk:jmp advance.ent 
115 2344 0600600 lod token   ; @2344
116 2344+1144452 jz .15   ;identifier->
117 2345 0040600 o02 token   ;token+1
118 2345+1024455 jn .16   ;
119 2346 1104421 jmp .6   ; @2346
120 2346+ ;
121 2346+ .15:; 
122 2346+0603427 lod idptr   ;
123 2347 0064324 and T_Mask   ;=0700000000000
124 2347+0124301 sub W2241   ;=0200000000000
125 2348 1044406 jz .loop1   ; same type -> @2348
126 2348+1104421 jmp .6   ; diff type ->
127 2349  ;
128 2349  .16:; 
129 2349 0616136120000 cla idptr/sub 0;
130 2350 1124421 jn .6   ; @2350
131 2350+0604301 lod W2241   ;
132 2351 0124322 sub TBool   ;=00100000000000 (boolean)
133 2351+1044425 jz .7   ;
134 2352   call     ; @2352
134+12352 7322411004503 lnk advance.lnk:jmp advance.ent 
135 2353   call     ;
135+12353 7323761005070 lnk TestArithOp.lnk:jmp TestArithOp.ent 
136 2354 1044465 jz .17   ; @2354
137 2354+0604466 lod _con59   ;
138 2355 0404305 sto W2245   ;
139 2355+0040000 o02 0   ;
140 2356 0562151 o27 stkp   ; @2356
141 2356+1004433 jmp .9   ;
142 2357  ;
143 2357 0444300.17:inc W2240   ; @2357
144 2357+0603427 lod idptr   ;
145 2358 1004421_con59:jmp .5   ; @2358
146 2358+ ;
147 2358+0000073 00 +59   ;in-line constant
148 2359  ;
149 2359  ;--------------------------------------------------------------------