File: condexp.t2

For general comments see here
LineAddressObject Code LabelF1N1BF2N2CommentsCheck
1 0  ; tape1.d/condexp.t2
2 0  ;-------------------
3 0  ;
4 0  =2708 
5 2708  CondExp::; 
6 2708  .ent:; 
7 2708 0605223 lod .lnk   ; return address @2708
8 2708+0545230 cls W2712   ;
9 2709   call     ;
9+12709 7323731005012 lnk push.lnk:jmp push.ent 
10 2710   call     ;
10+12710 7325115005260 lnk compif.lnk:jmp compif.ent 
11 2711 1005231 jmp .2713   ;
12 2711+ ;
13 2711+0000000 o00 0    
14 2712  ;
15 2712 0000000000000W2712:+0; @2712
16 2713  ;
17 2713 0604340.2713:lod K2b   ;=2
18 2713+0404300 sto W2240   ;
19 2714   call     ; @2714
19+12714 7323131004627 lnk expression.lnk:jmp expression.ent 
20 2715  L2715:; 
21 2715 0604305.2715:lod W2245   ;
22 2715+0204310 exa W2248   ;
23 2716 0010646377777 o00 stkp/sto -1; @2716
24 2717 0600600 lod token   ;
25 2717+0124370 sub W2296   ;
26 2718 1145237 jz .2719P   ; @2718
27 2718+1661044_err28:lnk errlnk   ;error 28: missing else
28 2719 1004772 jmp error2   ;call error routine
29 2719+ ;
30 2719+0604335.2719P:lod W2269   ;
31 2720   call     ; @2720
31+12720 7320121004032 lnk gencode1.lnk:jmp gencode1.ent 
32 2721 0040000 o02 0   ;=1
33 2721+0404300 sto W2240   ;
34 2722   call     ; @2722
34+12722 7323131004627 lnk expression.lnk:jmp expression.ent 
35 2723 0604320 lod IntBit   ;
36 2723+0404306 sto W2246   ;
37 2724 0040000 o02 0   ;=1 @2724
38 2724+0000000 o00 0    
39 2725 2710646600000 o27 stkp/lod 0;
40 2726 0010646177777 o00 stkp/exa -1; @2726
41 2727 0204310 exa W2248   ;
42 2727+0124305 sub W2245   ;
43 2728 1045257 jz .2735   ; @2728
44 2728+0604305 lod W2245   ;
45 2729 0124315 sub procbit1   ;
46 2729+1145254 jz .2732P   ;
47 2730 0604315 lod procbit1   ; @2730
48 2730+0000000 o00 0    
49 2731 0010646377777 o00 stkp/sto -1;
50 2732 1005256 jmp .2734   ; @2732
51 2732+ ;
52 2732+0603473.2732P:lod GPs+22   ;=04000000000013
53 2733   call     ;
53+12733 7320121004033 lnk gencode.lnk:jmp gencode.ent 
54 2734  .2734:; 
55 2734   call     ; @2734
55+12734 7320121007410 lnk L3848.lnk:jmp L3848.ent 
56 2735  .2735:; 
57 2735 1106122 jmp L3136.5   ;
58 2735+  pad     ;
58+12735+0000000 00 0    
59 2736  ;--------------------------------------------------------------------
60 2736  ; compile if clause
61 2736  ;
62 2736  compif::; 
63 2736  ;
64 2736  .ent:; 
65 2736 0605223 lod .lnk   ; @2736
66 2736+0000000 o00 0   ;
67 2737   call     ;
67+12737 7323731005012 lnk push.lnk:jmp push.ent 
68 2738 0040000 o02 0   ;=1 @2738
69 2738+0404300 sto W2240   ;
70 2739   call     ;compile bool exprn
70+12739 7326605005553 lnk compbool.lnk:jmp compbool.ent 
71 2740 0044330 o02 K37   ;=37 + 1 => [then] @2740
72 2740+0120600 sub token   ;token
73 2741 1045267 jz .2743   ; OK
74 2741+1661044_err29:lnk errlnk   ;error 29: missing then
75 2742 1004772 jmp error2   ; @2742
76 2742+ ;
77 2742+0000000 o00 0    
78 2743  ; from 2741
79 2743  .2743:; 
80 2743   call     ; code gen @2743
80+12743 7320121007403 lnk L3843.lnk:jmp L3843.ent 
81 2744  .2744:; 
82 2744   call     ;get next token @2744
82+12744 7322411004503 lnk advance.lnk:jmp advance.ent 
83 2745 0600600 lod token   ;token
84 2745+0124340 sub K2b   ;=2 [if]
85 2746 1661044_err30:lnk errlnk   ;error 30: cond stat or expr after then @2746
86 2746+1044772 jz error2   ;if token=[if] goto error
87 2747 0605230 lod W2712   ;
88 2747+1147132 jz Pop2   ;return via stack
89 2748 0600600 lod token   ;token @2748
90 2748+1145275 jz .2749P   ; =identifier ->
91 2749 1107132 jmp Pop2   ;else return via stack
92 2749+ ;
93 2749+ ; identifier
94 2749+ ;
95 2749+0603427.2749P:lod idptr   ;
96 2750 0062243 and MskArgTp   ; @2750
97 2750+0122250 sub W1192   ;
98 2751 1045300 jz .2752   ;
99 2751+1107132 jmp Pop2   ;return via stack
100 2752  ;
101 2752 0603427.2752:lod idptr   ;
102 2752+0000000 o00 0   ;
103 2753   call     ;
103+12753 7307175103411 lnk PutLabel.lnk:jmp PutLabel.ent 
104 2754   call     ; @2754
104+12754 7322411004503 lnk advance.lnk:jmp advance.ent 
105 2755 0600600 lod token   ;
106 2755+0122201 sub K42   ;=42
107 2756 1045270 jz .2744   ;
108 2756+1003330 jmp _err17   ;
109 2757  ;--------------------------------------------------------------
110 2757  ; compile conditional statement
111 2757  ;
112 2757  condstat::; 
113 2757  ;
114 2757  =3701 
115 3701  .ent:; 
116 3701 1665230 lnk W2712   ; @3701
117 3701+0607034 lod .lnk   ;
118 3702   call     ; @3702
118+13702 7323731005012 lnk push.lnk:jmp push.ent 
119 3703   call     ;
119+13703 7325115005260 lnk compif.lnk:jmp compif.ent 
120 3704 0000000000000 +0;two no-ops? @3704
121 3705   call     ;1708 compile stat
121+13705 7310611003254 lnk statement.lnk:jmp statement.ent 
122 3706 0600600 lod token   ;token @3706
123 3706+0124370 sub W2296   ;=39 [else]
124 3707 1047174 jz .3708   ;->yes do else clause
125 3707+1007144 jmp DesigExprn.9   ;no end of statement
126 3708  ;
127 3708  ; do else clause
128 3708  ;
129 3708  .3708:call     ; plant else jump? @3708
129+13708 7320121007405 lnk L3845.lnk:jmp L3845.ent 
130 3709   call     ;
130+13709 7322411004503 lnk advance.lnk:jmp advance.ent 
131 3710   call     ;1708 compile @3710
131+13710 7310611003254 lnk statement.lnk:jmp statement.ent 
132 3711 1007144 jmp DesigExprn.9   ;end of statement
133 3711+ ;
134 3711+0000000 o00 0    
135 3712  ;--------------------------------------------------------------------