Line | Address | Object Code
| Label | F1 | N1 | B | F2 | N2 | Comments | Check
|
---|
1 | 0 | | ; tape1.d/outoper.t2 |
|
2 | 0 | | ;------------------- |
|
3 | 0 | | ; |
|
4 | 0 | | ; define local name for general work location |
|
5 | 0 | | opindex=W2245 | ; | |
|
6 | 0 | | ; |
|
7 | 0 | | ; OutOper: generate code for stacked operators |
|
8 | 0 | | ; |
|
9 | 0 | | =2758 | |
|
10 | 2758 | | OutOper:: | ; | |
|
11 | 2758 | | .ent: | ; | |
|
12 | 2758 | 0010646577775 | | o00 | stkp | / | lod | -3 | ;get 1st operand info | @2758
|
13 | 2759 | | | jnz | | | | | ;->binary operator |
|
13+1 | 2759 | 1045310 | | jz | .1 | | | | |
|
13+2 | 2759+ | 1005322 | | jmp | OutOper.2 | | | | |
|
13+3 | 2760 | | .1: | ; | |
|
14 | 2760 | 0010646577776 | | o00 | stkp | / | lod | -2 | ; | @2760
|
15 | 2761 | 0124346 | | sub | W2278 | | | | ; |
|
16 | 2761+ | 1045313 | | jz | .1 | | | | ; |
|
17 | 2762 | 1005374 | | jmp | .err31 | | | | ;invalid operator | @2762
|
18 | 2762+ | | | pad | | | | | ; |
|
18+1 | 2762+ | 0000000 | | 00 | 0 | | | | |
|
19 | 2763 | | ; |
|
20 | 2763 | | .1: | ; | |
|
21 | 2763 | 0010646577777 | | o00 | stkp | / | lod | -1 | ; |
|
22 | 2764 | 0404306 | | sto | W2246 | | | | ; | @2764
|
23 | 2764+ | 0604347 | | lod | K4a | | | | ;=4 |
|
24 | 2765 | | | call | | | | | ; |
|
24+1 | 2765 | 7320121004032 | | lnk | gencode1.lnk | : | jmp | gencode1.ent | |
|
25 | 2766 | | | pad | | | | | ; | @2766
|
25+1 | 2766 | 0000000 | | 00 | 0 | | | | |
|
26 | 2766+ | 0040000 | | o02 | 0 | | | | ;=1 |
|
27 | 2767 | 2710646600000 | | o27 | stkp | / | lod | 0 | ; |
|
28 | 2768 | 0010646377777 | | o00 | stkp | / | sto | -1 | ; | @2768
|
29 | 2769 | | | ret | | | | | ;return |
|
29+1 | 2769 | 0025427000001 | | o00 | OutOper.lnk | / | jmp | 1 | |
|
30 | 2770 | | ; |
|
31 | 2770 | | .2: | ; | |
|
32 | 2770 | 0404307 | | sto | W2247 | | | | ;store LHS info | @2770
|
33 | 2770+ | 0544305 | | cls | opindex | | | | ;clear op index number |
|
34 | 2771 | 0010646577777 | | o00 | stkp | / | lod | -1 | ;get RHS info |
|
35 | 2772 | 0404306 | | sto | W2246 | | | | ;store it | @2772
|
36 | 2772+ | 0064345 | | and | W2277 | | | | ;=0001774017777 mask out seg/off |
|
37 | 2773 | 1145327 | | jz | .3 | | | | ;already in Acc, handle reverse ops |
|
38 | 2773+ | 0604307 | | lod | W2247 | | | | ; |
|
39 | 2774 | 0204306 | | exa | W2246 | | | | ; | @2774
|
40 | 2774+ | 0404031 | | sto | IdInfo | | | | ; |
|
41 | 2775 | 1005332 | | jmp | .4 | | | | ;-> |
|
42 | 2775+ | | ; |
|
43 | 2775+ | | .3: | ; | |
|
44 | 2775+ | 0604350 | | lod | W2280 | | | | ;=6 |
|
45 | 2776 | 0504305 | | ads | opindex | | | | ;add 6 to op index num | @2776
|
46 | 2776+ | 0604306 | | lod | W2246 | | | | ;operand type |
|
47 | 2777 | 0204307 | | exa | W2247 | | | | ;swap with LHS info |
|
48 | 2777+ | 0404031 | | sto | IdInfo | | | | ;store for generate routines |
|
49 | 2778 | | .4: | ; | |
|
50 | 2778 | | | call | | | | | ;mark free if temp | @2778
|
50+1 | 2778 | 7323761005051 | | lnk | FreeTemp.lnk | : | jmp | FreeTemp.ent | |
|
51 | 2779 | 0604031 | | lod | IdInfo | | | | ; |
|
52 | 2779+ | 0000000 | | o00 | 0 | | | | ;no-op |
|
53 | 2780 | 0064324 | | and | T_Mask | | | | ;=0700000000000 | @2780
|
54 | 2780+ | 0124320 | | sub | IntBit | | | | ;=0200000000000 |
|
55 | 2781 | 1145337 | | jz | .5 | | | | ;integer operator needed |
|
56 | 2781+ | 1125372 | | jn | .err31a | | | | ;boolean operator |
|
57 | 2782 | 0604351 | | lod | W2281 | | | | ;=12 | @2782
|
58 | 2782+ | 0504305 | | ads | opindex | | | | ;add 12 to op index num |
|
59 | 2783 | 1105342 | | jmp | .6 | | | | ; |
|
60 | 2783+ | | ; |
|
61 | 2783+ | | .5: | ; | |
|
62 | 2783+ | 0604306 | | lod | W2246 | | | | ; |
|
63 | 2784 | 0064324 | | and | T_Mask | | | | ;=0700000000000 | @2784
|
64 | 2784+ | 0124320 | | sub | IntBit | | | | ;=0200000000000 |
|
65 | 2785 | 1145342 | | jz | .6 | | | | ; |
|
66 | 2785+ | 1005375 | | jmp | .11 | | | | ;-> |
|
67 | 2786 | | ; |
|
68 | 2786 | | ; from 2821+ |
|
69 | 2786 | | .5a: | ; | |
|
70 | 2786 | 0504305 | | ads | opindex | | | | ;add to opindex | @2786
|
71 | 2786+ | | .6: | ; | |
|
72 | 2786+ | 0604352 | | lod | W2282 | | | | ;=-22 |
|
73 | 2787 | 0010646077776 | | o00 | stkp | / | add | -2 | ;convert op to index 0..5 |
|
74 | 2788 | 1025374 | | jn | .err31 | | | | ;operator invalid | @2788
|
75 | 2788+ | 0504305 | | ads | opindex | | | | ;add to opindex |
|
76 | 2789 | 1045364 | | jz | .9 | | | | ;op='+' |
|
77 | 2789+ | 0124313 | | sub | K1b | | | | ;=1 |
|
78 | 2790 | 1045367 | | jz | .10 | | | | ;op='-' | @2790
|
79 | 2790+ | 0164347 | | bus | K4a | | | | ;=4 *,/,div,** |
|
80 | 2791 | 1025374 | | jn | .err31 | | | | ;operator invalid |
|
81 | 2791+ | | .7: | ; | |
|
82 | 2791+ | 0604353 | | lod | W2283 | | | | ;=07077777777777 |
|
83 | 2792 | 0464307 | | ans | W2247 | | | | ; | @2792
|
84 | 2792+ | 0604320 | | lod | IntBit | | | | ; |
|
85 | 2793 | 0504307 | | ads | W2247 | | | | ;set result type |
|
86 | 2793+ | 0000000 | | o00 | 0 | | | | ;no-op |
|
87 | 2794 | 0021426605406 | | 00 | opindex | / | lod | .optab | ; get from table | @2794
|
88 | 2795 | 1045374 | | jz | .err31 | | | | ;entry=0 means invalid combination |
|
89 | 2795+ | 1025355 | | jn | .8 | | | | ;result is integer |
|
90 | 2796 | 0604322 | | lod | TBool | | | | ;TReal-TInt | @2796
|
91 | 2796+ | 0504307 | | ads | W2247 | | | | ;modify result type to Real |
|
92 | 2797 | | .8: | ; | |
|
93 | 2797 | 0604307 | | lod | W2247 | | | | ; |
|
94 | 2797+ | | | pad | | | | | ;no-op |
|
94+1 | 2797+ | 0000000 | | 00 | 0 | | | | |
|
95 | 2798 | 0010646377775 | | o00 | stkp | / | sto | -3 | ;store result type | @2798
|
96 | 2799 | 0604340 | | lod | K2b | | | | ;=2 |
|
97 | 2799+ | 0562151 | | o27 | stkp | | | | ;drop stack two entries |
|
98 | 2800 | 0021426605406 | | 00 | opindex | / | lod | .optab | ; get from table (again) | @2800
|
99 | 2801 | 0064354 | | and | W2284 | | | | ;=037 mask off top bit |
|
100 | 2801+ | | | pad | | | | | ;no-op |
|
100+1 | 2801+ | 0000000 | | 00 | 0 | | | | |
|
101 | 2802 | | | call | | | | | ;generate specified oper code | @2802
|
101+1 | 2802 | 7320121004032 | | lnk | gencode1.lnk | : | jmp | gencode1.ent | |
|
102 | 2803 | | | ret | | | | | ;return |
|
102+1 | 2803 | 0025427000001 | | o00 | OutOper.lnk | / | jmp | 1 | |
|
103 | 2804 | | ; |
|
104 | 2804 | | .9: | ; | |
|
105 | 2804 | 0010646577774 | | o00 | stkp | / | lod | -4 | ;get possible previous operator |
|
106 | 2805 | 0124346 | | sub | W2278 | | | | ;=23 '-' |
|
107 | 2805+ | 1125347 | | jn | .7 | | | | ;-> |
|
108 | 2806 | 0444305 | | inc | opindex | | | | ;bump opindex | @2806
|
109 | 2806+ | 1105347 | | jmp | .7 | | | | ;-> |
|
110 | 2807 | | ; |
|
111 | 2807 | | .10: | ; | |
|
112 | 2807 | 0010646577774 | | o00 | stkp | / | lod | -4 | ; |
|
113 | 2808 | 0124346 | | sub | W2278 | | | | ; | @2808
|
114 | 2808+ | 1125347 | | jn | .7 | | | | ; |
|
115 | 2809 | 0040000 | | o02 | 0 | | | | ;=1 |
|
116 | 2809+ | 0564305 | | o27 | opindex | | | | ; |
|
117 | 2810 | 1105347 | | jmp | .7 | | | | ; | @2810
|
118 | 2810+ | | ; |
|
119 | 2810+ | | ;L2810P: |
|
120 | 2810+ | | .err31a: | ; | |
|
121 | 2810+ | | ;.2810P: |
|
122 | 2810+ | 0604357 | | lod | W2287 | | | | ; |
|
123 | 2811 | | _err31: | ; | |
|
124 | 2811 | 1661044 | | lnk | errlnk | | | | ;error 31: bad operator/operand in exprn |
|
125 | 2811+ | | | ;or, missing ( after proc name | |
|
126 | 2811+ | 1001070 | | jmp | Error | | | | ;call error routine |
|
127 | 2812 | | ; |
|
128 | 2812 | | .err31: | ; | |
|
129 | 2812 | 0604340 | | lod | K2b | | | | ;=2 | @2812
|
130 | 2812+ | 1005373 | | jmp | _err31 | | | | ; |
|
131 | 2813 | | ; |
|
132 | 2813 | | ; from 2785+ |
|
133 | 2813 | | .11: | ; | |
|
134 | 2813 | 0010646577776 | | o00 | stkp | / | lod | -2 | ; |
|
135 | 2814 | 0124342 | | sub | K27 | | | | ;=27 [;;] | @2814
|
136 | 2814+ | 1045405 | | jz | .12 | | | | ;-> |
|
137 | 2815 | 0604031 | | lod | IdInfo | | | | ; |
|
138 | 2815+ | 0064344 | | and | W2276 | | | | ; |
|
139 | 2816 | | | jnz | | | | | ; |
|
139+1 | 2816 | 1045401 | | jz | .1 | | | | |
|
139+2 | 2816+ | 1005405 | | jmp | OutOper.12 | | | | |
|
139+3 | 2817 | | .1: | ; | |
|
140 | 2817 | 0020146600000 | | o00 | IdInfo | / | lod | 0 | ; |
|
141 | 2818 | 1540000 | | flt | 4096 | | | | ; | @2818
|
142 | 2818+ | 0000000 | | o00 | 0 | | | | ; |
|
143 | 2819 | 0020146400000 | | o00 | IdInfo | / | sto | 0 | ; |
|
144 | 2820 | 0604322 | | lod | TBool | | | | ; | @2820
|
145 | 2820+ | 0504031 | | ads | IdInfo | | | | ; |
|
146 | 2821 | | .12: | ; | |
|
147 | 2821 | 0604351 | | lod | W2281 | | | | ; |
|
148 | 2821+ | 1005342 | | jmp | .5a | | | | ;-> |
|
149 | 2822 | | ; |
|
150 | 2822 | | .FLAG= ëÿ¿P/@hëÿ¿hX@Ø ôÿ¿ÿ04000000000000 | ; | |
|
151 | 2822 | | .optab: | ; | |
|
152 | 2822 | 4000000000016 | | +14+.FLAG | ;+00 + int | @2822
|
153 | 2823 | 4000000000017 | | +15+.FLAG | ;+01 - int | @2823
|
154 | 2824 | 4000000000021 | | +17+.FLAG | ;+02 * int | @2824
|
155 | 2825 | 0000000000012 | | +10 | ;+03 / real | @2825
|
156 | 2826 | 4000000000022 | | +18+.FLAG | ;+04 DIV int | @2826
|
157 | 2827 | 0000000000014 | | +12 | ;+05 ** real | @2827
|
158 | 2828 | 4000000000016 | | +14+.FLAG | ;+06 + int | @2828
|
159 | 2829 | 4000000000020 | | +16+.FLAG | ;+07 - int | @2829
|
160 | 2830 | 4000000000021 | | +17+.FLAG | ;+08 * int | @2830
|
161 | 2831 | 0000000000013 | | +11 | ;+09 / real | @2831
|
162 | 2832 | 4000000000023 | | +19+.FLAG | ;+10 DIV int | @2832
|
163 | 2833 | 0000000000015 | | +13 | ;+11 ** real | @2833
|
164 | 2834 | 0000000000005 | | +5 | ;+12 + real | @2834
|
165 | 2835 | 0000000000006 | | +6 | ;+13 - real | @2835
|
166 | 2836 | 0000000000010 | | +8 | ;+14 * real | @2836
|
167 | 2837 | 0000000000012 | | +10 | ;+15 / real | @2837
|
168 | 2838 | 0000000000000 | | +0 | ;+16 (illegal) | @2838
|
169 | 2839 | 0000000000014 | | +12 | ;+17 ** real | @2839
|
170 | 2840 | 0000000000005 | | +5 | ;+18 + real | @2840
|
171 | 2841 | 0000000000007 | | +7 | ;+19 - real | @2841
|
172 | 2842 | 0000000000010 | | +8 | ;+20 * real | @2842
|
173 | 2843 | 0000000000013 | | +11 | ;+21 / real | @2843
|
174 | 2844 | 0000000000000 | | +0 | ;+22 (illegal) (Div/Float) | @2844
|
175 | 2845 | 0000000000015 | | +13 | ;+23 ** real | @2845
|
176 | 2846 | | ;-------------------------------------------------------------------- |
|