include "hdr1.html"; ?>
| 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 | ;-------------------------------------------------------------------- | ||||||||