Line | Address | Object Code
| Label | F1 | N1 | B | F2 | N2 | Comments | Check
|
---|
1 | 0 | | ; tape1.d/putcode.t2 |
|
2 | 0 | | ;------------------- |
|
3 | 0 | | putcode:: | ; | |
|
4 | 0 | | =831 | |
|
5 | 831 | | ; |
|
6 | 831 | | ; PCdata is in 780, part word in 781, shift in 782 |
|
7 | 831 | | ; |
|
8 | 831 | | .ent: | ; | |
|
9 | 831 | 0701416 | | las | PCshift | | | | ;shift count | @831
|
10 | 831+ | 0401417 | | sto | PCwk2 | | | | ; |
|
11 | 832 | 1101501 | .pat: | jmp | .1 | | | | ;skip or return 00 830/jmp 1 | @832
|
12 | 832+ | 0000000 | | o00 | 0 | | | | ; |
|
13 | 833 | 1101501 | | jmp | .1 | | | | ;no-op |
|
14 | 833+ | 0601414 | .1: | lod | PCdata | | | | ; |
|
15 | 834 | 0006077320000 | | o00 | PCwk2 | / | sll | 0 | ; shift left | @834
|
16 | 835 | 0501415 | | ads | work1 | | | | ; |
|
17 | 835+ | 0601416 | | lod | PCshift | | | | ;shift count |
|
18 | 836 | 0121440 | | sub | K39 | | | | ;=39 | @836
|
19 | 836+ | 1021534 | | jn | .4 | | | | ; ok, not yet full -> |
|
20 | 837 | 0601425 | | lod | errsw | | | | ;ocode output to paper tape? |
|
21 | 837+ | 1041514 | | jz | .2 | | | | ;->punch to p/t |
|
22 | 838 | 0601440 | | lod | K39 | | | | ;=39 | @838
|
23 | 838+ | 0561416 | | o27 | PCshift | | | | ;shift count |
|
24 | 839 | 0621417 | | lcs | PCwk2 | | | | ; |
|
25 | 839+ | 0601414 | | lod | PCdata | | | | ; |
|
26 | 840 | 0006077220047 | | o00 | PCwk2 | / | srl | 39 | ; | @840
|
27 | 841 | 0201415 | | exa | work1 | | | | ; |
|
28 | 841+ | 0501420 | | ads | PCchk | | | | ;add into sum-check |
|
29 | 842 | | | call | | | | | ; store word in code area | @842
|
29+1 | 842 | 7306145002002 | | lnk | L1026.lnk | : | jmp | L1026.ent | |
|
30 | 843 | | .ret: | ; | |
|
31 | 843 | | | ret | | | | | ; |
|
31+1 | 843 | 0006373000001 | | o00 | putcode.lnk | / | jmp | 1 | |
|
32 | 844 | | ; |
|
33 | 844 | | ; punch ocode word to paper tape |
|
34 | 844 | | .2: | ; | |
|
35 | 844 | 0601441 | | lod | K5 | | | | ; | @844
|
36 | 844+ | 0561416 | | o27 | PCshift | | | | ;shift count |
|
37 | 845 | 0621417 | | lcs | PCwk2 | | | | ; |
|
38 | 845+ | 0601414 | | lod | PCdata | | | | ; |
|
39 | 846 | 0006077220005 | | o00 | PCwk2 | / | srl | 5 | ; | @846
|
40 | 847 | | .3: | ; | |
|
41 | 847 | 0201415 | | exa | work1 | | | | ; |
|
42 | 847+ | 0061442 | | and | K31 | | | | ;=31 |
|
43 | 848 | 2006077700000 | | sto | PCwk2 | / | otp | 0 | ; punch ocode to p/t | @848
|
44 | 849 | 0501420 | | ads | PCchk | | | | ;add into sum-check |
|
45 | 849+ | | .3a: | ; | |
|
46 | 849+ | 0601416 | | lod | PCshift | | | | ;shift count | @849+
|
47 | 850 | 0121441 | | sub | K5 | | | | ;=5 | @850
|
48 | 850+ | 1021513 | | jn | .ret | | | | ;return |
|
49 | 851 | 0401416 | | sto | PCshift | | | | ;shift count |
|
50 | 851+ | 0601415 | | lod | work1 | | | | ; |
|
51 | 852 | 1220005 | | srl | 5 | | | | ; | @852
|
52 | 852+ | 1001517 | | jmp | .3 | | | | ;loop back |
|
53 | 853 | | ; |
|
54 | 853 | 3406070401417 | L853: | las | PCshift | : | sto | PCwk2 | ;data for patching entry |
|
55 | 854 | | ;------------------------------------------------------------------- |
|
56 | 854 | | ; putOpcd: output ocode key (5-bit value) |
|
57 | 854 | | ; |
|
58 | 854 | | putOpcd.ent: | ; | |
|
59 | 854 | 0401414 | | sto | PCdata | | | | ; |
|
60 | 854+ | 0601443 | | lod | K5a | | | | ;=5 |
|
61 | 855 | 1001477 | | jmp | .ent | | | | ; enter putcode proper |
|
62 | 855+ | | ; |
|
63 | 855+ | | putAddr.ent: | ; | |
|
64 | 855+ | 0061450 | | and | N2bits | | | | ; |
|
65 | 856 | 0401414 | | sto | PCdata | | | | ; | @856
|
66 | 856+ | 0041444 | | o02 | K12 | | | | ;=12 |
|
67 | 857 | 1001477 | | jmp | .ent | | | | ; |
|
68 | 857+ | | ;------------------------------------ |
|
69 | 857+ | | putcode6.ent: | ; | |
|
70 | 857+ | 0040000 | | o02 | 0 | | | | ;=1 |
|
71 | 858 | 1001613 | | jmp | L907 | | | | ;->907 | @858
|
72 | 858+ | | ;------------------------------------ |
|
73 | 858+ | | ; put full word to ocode stream |
|
74 | 858+ | | ; word in ACC |
|
75 | 858+ | | ; |
|
76 | 858+ | | putFwd.ent: | ; | |
|
77 | 858+ | 0401414 | | sto | PCdata | | | | ; | @858+
|
78 | 859 | 0601440 | | lod | K39 | | | | ;=39 number of bits to put |
|
79 | 859+ | 1001477 | | jmp | .ent | | | | ; enter putcode proper |
|
80 | 860 | | ;-------------------------------------- |
|
81 | 860 | 0601425 | .4: | lod | errsw | | | | ; ocode to paper tape? | @860
|
82 | 860+ | 1141521 | | jz | .3a | | | | ; |
|
83 | 861 | 1001513 | | jmp | .ret | | | | ;return to caller |
|
84 | 861+ | | ; |
|
85 | 861+ | 0000000 | | o00 | 0 | | | | ; | @861+
|
86 | 862 | | ;------------------------------------------------------------------- |
|
87 | 862 | | ; initialise working variables for putcode |
|
88 | 862 | | ; |
|
89 | 862 | | InitPutCode.ent: | ; | |
|
90 | 862 | 0541415 | | cls | work1 | | | | ; | @862
|
91 | 862+ | 0541416 | | cls | PCshift | | | | ;shift count |
|
92 | 863 | 0541424 | | cls | W788 | | | | ; |
|
93 | 863+ | 0541426 | | cls | W790 | | | | ; |
|
94 | 864 | 0541616 | | cls | W910 | | | | ; | @864
|
95 | 864+ | 0541617 | | cls | W911 | | | | ; |
|
96 | 865 | 0541420 | | cls | PCchk | | | | ;clear sum-check |
|
97 | 865+ | 0601425 | | lod | errsw | | | | ; |
|
98 | 866 | 1041565 | | jz | .ptap1 | | | | ; | @866
|
99 | 866+ | 0601471 | | lod | EndCode | | | | ;data to be output 5:13,5:15 |
|
100 | 867 | 0401414 | | sto | PCdata | | | | ;store for putcode |
|
101 | 867+ | 0041451 | | o02 | K9 | | | | ;=9+1=>10 |
|
102 | 868 | 1001477 | .868: | jmp | .ent | | | | ;add 10-bit data to ocode | @868
|
103 | 868+ | | ; |
|
104 | 868+ | | =885 | |
|
105 | 885 | | ; |
|
106 | 885 | | .ptap1: | ; | |
|
107 | 885 | 0601440 | | lod | K39 | | | | ;=39 |
|
108 | 885+ | 0421422 | | stn | GenAdr | | | | ;set count=-39 |
|
109 | 886 | 1700000 | .lp1: | otp | 0 | | | | ;blank tape (40 blanks) | @886
|
110 | 886+ | 0641422 | | lis | GenAdr | | | | ;count |
|
111 | 887 | 1021566 | | jn | .lp1 | | | | ;repeat |
|
112 | 887+ | 1700017 | | otp | 15 | | | | ;output ocode key=15 (end of program marker) |
|
113 | 888 | 0041444 | | o02 | K12 | | | | ;=12+1=>13 | @888
|
114 | 888+ | 1001526 | | jmp | putOpcd.ent | | | | ;output ocode key=13 (check sumcheck) |
|
115 | 889 | | ;--------------------------------------------------------------------------- |
|
116 | 889 | | ; ClosePC: close the ocode stream at end of compilation |
|
117 | 889 | | ; write sumcheck and padding |
|
118 | 889 | | ; |
|
119 | 889 | | =868+ | |
|
120 | 868+ | | ; |
|
121 | 868+ | | ClosePC:: | ; | |
|
122 | 868+ | | ; |
|
123 | 868+ | 0000000 | | o00 | 0 | | | | ;unused? | @868+
|
124 | 869 | 0000000 | | o00 | 0 | | | | ;unused?? |
|
125 | 869+ | | ; |
|
126 | 869+ | 0601420 | .ent: | lod | PCchk | | | | ;get sumcheck value |
|
127 | 870 | | | call | | | | | ;output to ocode stream | @870
|
127+1 | 870 | 7306371101532 | | lnk | putFwd.lnk | : | jmp | putFwd.ent | |
|
128 | 871 | 0601457 | | lod | K22 | | | | ;=22 ocode key for sumcheck |
|
129 | 871+ | 0000000 | | o00 | 0 | | | | ; |
|
130 | 872 | | | call | | | | | ;output key | @872
|
130+1 | 872 | 7306371001526 | | lnk | putOpcd.lnk | : | jmp | putOpcd.ent | |
|
131 | 873 | 0601425 | | lod | errsw | | | | ;is output to paper tape? |
|
132 | 873+ | 1041560 | | jz | .1 | | | | ;yes, only pad to 5 bits |
|
133 | 874 | 0601440 | | lod | K39 | | | | ;=39 | @874
|
134 | 874+ | 0121416 | | sub | PCshift | | | | ;shift count - number of spare bits |
|
135 | 875 | 0401422 | | sto | GenAdr | | | | ;save for below |
|
136 | 875+ | 0541414 | | cls | PCdata | | | | ;write zero bits |
|
137 | 876 | | | call | | | | | ;write padding bits to fill word | @876
|
137+1 | 876 | 7306371001477 | | lnk | putcode.lnk | : | jmp | putcode.ent | |
|
138 | 877 | 0601422 | | lod | GenAdr | | | | ;length of padding |
|
139 | 877+ | 0000000 | | o00 | 0 | | | | ; |
|
140 | 878 | | | call | | | | | ;write word to core/tape/film | @878
|
140+1 | 878 | 7306145002002 | | lnk | L1026.lnk | : | jmp | L1026.ent | |
|
141 | 879 | | .ret: | ret | | | | | ; |
|
141+1 | 879 | 0006117000001 | | o00 | ClosePC.lnk | / | jmp | 1 | |
|
142 | 880 | | ; |
|
143 | 880 | | ; pad to paper tape |
|
144 | 880 | | ; |
|
145 | 880 | 0601441 | .1: | lod | K5 | | | | ;=5 | @880
|
146 | 880+ | 0121416 | | sub | PCshift | | | | ;shift count |
|
147 | 881 | 0401422 | | sto | GenAdr | | | | ;save padding length |
|
148 | 881+ | 0541414 | | cls | PCdata | | | | ;clear data |
|
149 | 882 | | | call | | | | | ;write padding | @882
|
149+1 | 882 | 7306371001477 | | lnk | putcode.lnk | : | jmp | putcode.ent | |
|
150 | 883 | 0006113700000 | | o00 | GenAdr | / | otp | 0 | ;add padd length |
|
151 | 884 | 1700037 | | otp | 31 | | | | ;letter shift/marker | @884
|
152 | 884+ | 1001557 | | jmp | .ret | | | | ; |
|
153 | 885 | | ; |
|
154 | 885 | | ;------------------------------------------------------------------- |
|
155 | 885 | | ; |
|
156 | 885 | | =889 | |
|
157 | 889 | | ; |
|
158 | 889 | | GenFinish:: | ; | |
|
159 | 889 | | .1: | call | | | | | ; | @889
|
159+1 | 889 | 7307175001622 | | lnk | SetCodePtr.lnk | : | jmp | SetCodePtr.ent | |
|
160 | 890 | 0000000 | | o00 | 0 | | | | ; |
|
161 | 890+ | 0601452 | | lod | K3 | | | | ;=3 |
|
162 | 891 | 0401430 | | sto | W792 | | | | ; |
|
163 | 891+ | 0602145 | | lod | ObjPC | | | | ;program counter |
|
164 | 892 | | | call | | | | | ; | @892
|
164+1 | 892 | 7307175001630 | | lnk | GenSetBase.lnk | : | jmp | GenSetBase.ent | |
|
165 | 893 | 0601617 | | lod | W911 | | | | ;display size |
|
166 | 893+ | 0401414 | | sto | PCdata | | | | ; |
|
167 | 894 | 0041454 | | o02 | K7 | | | | ;=7+1=>8 | @894
|
168 | 894+ | | | nop | | | | | ; |
|
168+1 | 894+ | 1001577 | | jmp | .1 | | | | |
|
168+2 | 895 | | .1: | ; | |
|
169 | 895 | | | call | | | | | ;output display size |
|
169+1 | 895 | 7306371001477 | | lnk | putcode.lnk | : | jmp | putcode.ent | |
|
170 | 896 | 0601424 | | lod | W788 | | | | ;patch list size | @896
|
171 | 896+ | 0061450 | | and | N2bits | | | | ; |
|
172 | 897 | 0401414 | | sto | PCdata | | | | ; |
|
173 | 897+ | 0041454 | | o02 | K7 | | | | ;=7+1=>8 |
|
174 | 898 | | | call | | | | | ;output patch list size | @898
|
174+1 | 898 | 7306371001477 | | lnk | putcode.lnk | : | jmp | putcode.ent | |
|
175 | 899 | | | nop | | | | | ; |
|
175+1 | 899 | 1101603 | | jmp | .1 | | | | |
|
175+2 | 899+ | | .1: | ; | |
|
176 | 899+ | 0602147 | | lod | W1127 | | | | ;Data Size |
|
177 | 900 | | | call | | | | | ; | @900
|
177+1 | 900 | 7306371101527 | | lnk | putAddr.lnk | : | jmp | putAddr.ent | |
|
178 | 901 | 0602143 | | lod | W1123 | | | | ; |
|
179 | 901+ | 0102145 | | add | ObjPC | | | | ;program counter |
|
180 | 902 | | | call | | | | | ; | @902
|
180+1 | 902 | 7306371101527 | | lnk | putAddr.lnk | : | jmp | putAddr.ent | |
|
181 | 903 | 0601447 | | lod | K17 | | | | ;=17 |
|
182 | 903+ | | | nop | | | | | ; |
|
182+1 | 903+ | 1001610 | | jmp | .1 | | | | |
|
182+2 | 904 | | .1: | ; | |
|
183 | 904 | | | call | | | | | ;output SetProgSize key | @904
|
183+1 | 904 | 7306371001526 | | lnk | putOpcd.lnk | : | jmp | putOpcd.ent | |
|
184 | 905 | | | call | | | | | ;close down ocode stream |
|
184+1 | 905 | 7306115101545 | | lnk | ClosePC.lnk | : | jmp | ClosePC.ent | |
|
185 | 906 | 0010613000001 | | o00 | Link15d | / | jmp | 1 | ; | @906
|
186 | 907 | | ;----------------- |
|
187 | 907 | | ; |
|
188 | 907 | | L907: | ; | |
|
189 | 907 | 0761616 | .907: | o37 | W910 | | | | ; | @907
|
190 | 907+ | 0121617 | | sub | W911 | | | | ; |
|
191 | 908 | 1021615 | | jn | L909 | | | | ; |
|
192 | 908+ | 0501617 | | ads | W911 | | | | ; |
|
193 | 909 | | L909: | ; | |
|
194 | 909 | 0041451 | .909: | o02 | K9 | | | | ;=9 |
|
195 | 909+ | 1001526 | | jmp | putOpcd.ent | | | | ;-> |
|
196 | 910 | | ;----------------------------------------------------- |
|
197 | 910 | 0000000000000 | W910: | +0 | ; | @910
|
198 | 911 | 0000000000001 | W911: | +1 | ; | @911
|
199 | 912 | | ; |
|
200 | 912 | | ; no refs |
|
201 | 912 | | ; |
|
202 | 912 | | ;L912: |
|
203 | 912 | 0541616 | | cls | W910 | | | | ; | @912
|
204 | 912+ | 0541617 | | cls | W911 | | | | ; |
|
205 | 913 | 1001544 | | jmp | putcode.868 | | | | ; |
|
206 | 913+ | | ; |
|
207 | 913+ | 0000000 | | o00 | 0 | | | | ; |
|
208 | 914 | | ;------------------------------------------------------------------- |
|
209 | 914 | | SetCodePtr:: | ; | |
|
210 | 914 | | =914 | |
|
211 | 914 | | ; |
|
212 | 914 | | ; Output Set Code Ptr ocode items |
|
213 | 914 | | .ent: | ; | |
|
214 | 914 | | | call | | | | | ;round off last word | @914
|
214+1 | 914 | 7307255001654 | | lnk | putNop.lnk | : | jmp | putNop.ent | |
|
215 | 915 | 0602145 | | lod | ObjPC | | | | ;program counter |
|
216 | 915+ | 0121461 | | sub | K1 | | | | ; |
|
217 | 916 | | | call | | | | | ;output type 1 entry for code size |
|
217+1 | 916 | 7307445001761 | | lnk | NopRef.lnk | : | jmp | NopRef.ent | |
|
218 | 917 | 0041455 | | o02 | K15a | | | | ;=15+1=>16 type 16 ocode entry | @917
|
219 | 917+ | 0000000 | | o00 | 0 | | | | |
|
220 | 918 | | L918: | ; | |
|
221 | 918 | | .918: | call | | | | | ;output key=16/17 | @918
|
221+1 | 918 | 7306371001526 | | lnk | putOpcd.lnk | : | jmp | putOpcd.ent | |
|
222 | 919 | | .ret: | ret | | | | | ;return |
|
222+1 | 919 | 0007177000001 | | o00 | SetCodePtr.lnk | / | jmp | 1 | |
|
223 | 920 | | ; |
|
224 | 920 | | ;------------------------------------------------------------------- |
|
225 | 920 | | GenSetBase:: | ; | |
|
226 | 920 | | ; output SetBase ocode item, acc contains value, W792 contains |
|
227 | 920 | | ; base id. |
|
228 | 920 | | ; |
|
229 | 920 | | .ent: | ; | |
|
230 | 920 | | | call | | | | | ; | @920
|
230+1 | 920 | 7307445001761 | | lnk | NopRef.lnk | : | jmp | NopRef.ent | |
|
231 | 921 | 0601430 | | lod | W792 | | | | ; |
|
232 | 921+ | 0121424 | | sub | W788 | | | | ; |
|
233 | 922 | 1121633 | | jn | .923P | | | | ; | @922
|
234 | 922+ | 0501424 | | ads | W788 | | | | ; |
|
235 | 923 | 0000000 | | o00 | 0 | | | | ; |
|
236 | 923+ | 0601430 | .923P: | lod | W792 | | | | ; |
|
237 | 924 | 0401414 | | sto | PCdata | | | | ; | @924
|
238 | 924+ | 0041454 | | o02 | K7 | | | | ; |
|
239 | 925 | | | call | | | | | ; |
|
239+1 | 925 | 7306371001477 | | lnk | putcode.lnk | : | jmp | putcode.ent | |
|
240 | 926 | 0041447 | | o02 | K17 | | | | ;=17 set ocode key for PutOpcd | @926
|
241 | 926+ | 1001626 | | jmp | L918 | | | | ;join previous code for output |
|
242 | 927 | | ;-------------------------------------------------------------- |
|
243 | 927 | | ; return address moved higher to avoid fwd refs |
|
244 | 927 | | =928 | |
|
245 | 928 | | GenInst:: | ; | |
|
246 | 928 | | ; |
|
247 | 928 | | ; instruction information in Acc, call PutInst, then update things |
|
248 | 928 | | ; such as even/odd address flag. If instruction includes B-bit |
|
249 | 928 | | ; make sure aligned correctly to start, and output ocode to add |
|
250 | 928 | | ; B-bit into final code. |
|
251 | 928 | | ; |
|
252 | 928 | | .ent: | ; | |
|
253 | 928 | 0401423 | | sto | Link9 | | | | ; | @928
|
254 | 928+ | 0061456 | | and | B20 | | | | ;=0000002000000 test if B-bit set |
|
255 | 929 | 1141642 | | jz | GenInst1.ent | | | | ; if zero -> no |
|
256 | 929+ | 1001666 | | jmp | .950 | | | | ; ->make sure we're at an even address |
|
257 | 930 | | ; ; returns to GenInst1.ent |
|
258 | 930 | | ; |
|
259 | 930 | 0000000 | | o00 | 0 | | | | ; | @930
|
260 | 930+ | | ; |
|
261 | 930+ | | GenInst1.ent: | ; | |
|
262 | 930+ | 0601423 | | lod | Link9 | | | | ;reload saved info | @930+
|
263 | 931 | | | call | | | | | ;output it |
|
263+1 | 931 | 7307445001712 | | lnk | PutInst.lnk | : | jmp | PutInst.ent | |
|
264 | 932 | 0601453 | .1: | lod | B39 | | | | ;=04000000000000 |
|
265 | 932+ | 0701426 | | las | W790 | | | | ;toggle W790 (odd-even inst flag) |
|
266 | 933 | 1021652 | | jn | .2 | | | | ;top half, no need to test for B-modify |
|
267 | 933+ | 0601423 | | lod | Link9 | | | | ;reload saved instruction |
|
268 | 934 | 0061456 | | and | B20 | | | | ;=0000002000000 is B-bit set | @934
|
269 | 934+ | 1041651 | | jz | .ret | | | | ;no, skip |
|
270 | 935 | 0041467 | | o02 | K24 | | | | ;=24+1=>25 |
|
271 | 935+ | 0000000 | | o00 | 0 | | | | ; |
|
272 | 936 | | | call | | | | | ;generate opcd(25) to set B-bit | @936
|
272+1 | 936 | 7306371001526 | | lnk | putOpcd.lnk | : | jmp | putOpcd.ent | |
|
273 | 937 | | ; from 934+ |
|
274 | 937 | | .ret: | ret | | | | | ; | @937
|
274+1 | 937 | 0007177000001 | | o00 | GenInst.lnk | / | jmp | 1 | |
|
275 | 938 | | ;----------------- |
|
276 | 938 | 0442145 | .2: | inc | ObjPC | | | | ;program counter |
|
277 | 938+ | 1001651 | | jmp | .ret | | | | ; |
|
278 | 939 | | ;--------------------------------------------------------------- |
|
279 | 939 | | ; |
|
280 | 939 | | putNop:: | ; | |
|
281 | 939 | | ; |
|
282 | 939 | | ; |
|
283 | 939 | | ;----------------- |
|
284 | 939 | | ; if (W790 < 0), output a type 8 entry to ocode stream |
|
285 | 939 | | ; clearing W790. Otherwise just return. Effect is to force |
|
286 | 939 | | ; next instruction to top half of word |
|
287 | 939 | | ; |
|
288 | 939 | | =940 | |
|
289 | 940 | | .ent: | ; | |
|
290 | 940 | 0741426 | | lzs | W790 | | | | ; | @940
|
291 | 940+ | 1121656 | | jn | .1 | | | | ;-> |
|
292 | 941 | | .ret: | ret | | | | | ; |
|
292+1 | 941 | 0007257000001 | | o00 | putNop.lnk | / | jmp | 1 | |
|
293 | 942 | | ; |
|
294 | 942 | 0000000 | | o00 | 0 | | | | ; |
|
295 | 942+ | | ; |
|
296 | 942+ | 0041454 | .1: | o02 | K7 | | | | ;=7+1 => 8 | @942+
|
297 | 943 | | | call | | | | | ;output type 8 opcode |
|
297+1 | 943 | 7306371001526 | | lnk | putOpcd.lnk | : | jmp | putOpcd.ent | |
|
298 | 944 | 0442145 | | inc | ObjPC | | | | ;? |
|
299 | 944+ | 1001655 | | jmp | .ret | | | | ;->return |
|
300 | 945 | | ;------------------------------------------------------------------- |
|
301 | 945 | | ; output ocode to patch a jump into the switch lists |
|
302 | 945 | | ; Acc contains destination address info |
|
303 | 945 | | ; |
|
304 | 945 | | LabRef: | ; | |
|
305 | 945 | | | call | | | | | ;generate reference address |
|
305+1 | 945 | 7307445001761 | | lnk | NopRef.lnk | : | jmp | NopRef.ent | |
|
306 | 946 | 0601444 | | lod | K12 | | | | ;=12 (patch switch list) |
|
307 | 946+ | 0000000 | | o00 | 0 | | | | ; |
|
308 | 947 | | | call | | | | | ;output ocode operator | @947
|
308+1 | 947 | 7306371001526 | | lnk | putOpcd.lnk | : | jmp | putOpcd.ent | |
|
309 | 948 | 1001651 | | jmp | GenInst.ret | | | | ;and return |
|
310 | 948+ | | ; |
|
311 | 948+ | 0000000 | | o00 | 0 | | | | ; |
|
312 | 949 | | ;------------------------------------------------------------------- |
|
313 | 949 | | GenInst:: | ; | |
|
314 | 949 | | GenSkpInst.ent: | ; | |
|
315 | 949 | 0401423 | | sto | Link9 | | | | ; | @949
|
316 | 949+ | 0000000 | | o00 | 0 | | | | ; |
|
317 | 950 | | .950: | call | | | | | ; | @950
|
317+1 | 950 | 7307255001654 | | lnk | putNop.lnk | : | jmp | putNop.ent | |
|
318 | 951 | 1101642 | | jmp | GenInst1.ent | | | | ; |
|
319 | 951+ | | ; |
|
320 | 951+ | 0000000 | | o00 | 0 | | | | ; |
|
321 | 952 | | ;---------------------------------------------------- |
|
322 | 952 | | ; |
|
323 | 952 | | L952:: | ; | |
|
324 | 952 | | ; output half-word instruction (passed in Acc) ?? |
|
325 | 952 | | ; |
|
326 | 952 | | .ent: | ; | |
|
327 | 952 | 0401422 | | sto | GenAdr | | | | ; | @952
|
328 | 952+ | 0401423 | | sto | Link9 | | | | ; |
|
329 | 953 | | | call | | | | | ; |
|
329+1 | 953 | 7307445001755 | | lnk | L1005.lnk | : | jmp | L1005.ent | |
|
330 | 954 | | | ret | | | | | ; | @954
|
330+1 | 954 | 0007257000001 | | o00 | L952.lnk | / | jmp | 1 | |
|
331 | 955 | | ; |
|
332 | 955 | | ;------------------------------------------------------------------- |
|
333 | 955 | | ; |
|
334 | 955 | | L958:: | ; | |
|
335 | 955 | | ; |
|
336 | 955 | | L955: | ; | |
|
337 | 955 | 0000000000000 | W955: | +0 | ; | @955
|
338 | 956 | 0000000000000 | W956: | +0 | ; | @956
|
339 | 957 | | ; |
|
340 | 957 | | ; output full word as two instructions - assume B-bit not set! |
|
341 | 957 | | ; aligns object code to full word first |
|
342 | 957 | | ; |
|
343 | 957 | | =958 | |
|
344 | 958 | | .ent: | ; | |
|
345 | 958 | 0401674 | | sto | W956 | | | | ;save word | @958
|
346 | 958+ | 0000000 | | o00 | 0 | | | | ; |
|
347 | 959 | | | call | | | | | ;align if needed |
|
347+1 | 959 | 7307255001654 | | lnk | putNop.lnk | : | jmp | putNop.ent | |
|
348 | 960 | 0601674 | | lod | W956 | | | | ;reload word | @960
|
349 | 960+ | 1220024 | | srl | 20 | | | | ;shift top half down |
|
350 | 961 | | | call | | | | | ;and output it |
|
350+1 | 961 | 7307175001705 | | lnk | L965.lnk | : | jmp | L965.ent | |
|
351 | 962 | 0601674 | | lod | W956 | | | | ;reload word again | @962
|
352 | 962+ | 0061470 | | and | W824 | | | | ;=0x7FFFF mask out bottom half |
|
353 | 963 | | | call | | | | | ;output that |
|
353+1 | 963 | 7307175001705 | | lnk | L965.lnk | : | jmp | L965.ent | |
|
354 | 964 | | | ret | | | | | ; | @964
|
354+1 | 964 | 0007367000001 | | o00 | L958.lnk | / | jmp | 1 | |
|
355 | 965 | | ;------------------------------------------------------------------- |
|
356 | 965 | | L965:: | ; | |
|
357 | 965 | | ; |
|
358 | 965 | | .ent: | ; | |
|
359 | 965 | | | call | | | | | ; | @965
|
359+1 | 965 | 7307255001670 | | lnk | L952.lnk | : | jmp | L952.ent | |
|
360 | 966 | 1001644 | | jmp | GenInst.1 | | | | ; |
|
361 | 966+ | | ; |
|
362 | 966+ | 0000000 | | o00 | 0 | | | | ; |
|
363 | 967 | | ; no refs |
|
364 | 967 | | ; |
|
365 | 967 | 0601466 | | lod | K19 | | | | ; | @967
|
366 | 967+ | 1001477 | | jmp | putcode.ent | | | | ; |
|
367 | 968 | | ; no refs |
|
368 | 968 | | ; |
|
369 | 968 | 0041454 | | o02 | K7 | | | | ;=7 | @968
|
370 | 968+ | 1001673 | | jmp | L955 | | | | ; ??? data area ??? |
|
371 | 969 | | ;-------------------------------------------------------------- |
|
372 | 969 | | ; output an instruction to ocode stream, |
|
373 | 969 | | ; opcode + flags are in Acc, |
|
374 | 969 | | PutInst:: | ; | |
|
375 | 969 | | ; |
|
376 | 969 | | =970 | |
|
377 | 970 | | .ent: | ; | |
|
378 | 970 | 0401423 | | sto | Link9 | | | | ;save instruction+flags | @970
|
379 | 970+ | 0061454 | | and | K7 | | | | ;=7 |
|
380 | 971 | 2000023001763 | | sto | 4 | / | jmp | .sw | ;switch |
|
381 | 972 | | ; |
|
382 | 972 | | =1011 | |
|
383 | 1011 | | ; switch list used above (971) moved nearer to in-line |
|
384 | 1011 | | .sw: | ; | |
|
385 | 1011 | 0041454 | | o02 | K7 | | | | ;=7+1=>8 +0 | @1011
|
386 | 1011+ | 1001721 | | jmp | .977 | | | | ;put opcode 8 (NULL) |
|
387 | 1012 | 0041443 | | o02 | K5a | | | | ;=5+1=>6 +1 | @1012
|
388 | 1012+ | 1001723 | | jmp | .979 | | | | ; cond jump (pop) |
|
389 | 1013 | 0601454 | | lod | K7 | | | | ;=7 +2 | @1013
|
390 | 1013+ | 1101723 | | jmp | .979P | | | | ; cond jump (nopop) |
|
391 | 1014 | 0601451 | | lod | K9 | | | | ;=9 +3 | @1014
|
392 | 1014+ | 1001721 | | jmp | .977 | | | | ;put opcode (else jump) |
|
393 | 1015 | 0601467 | | lod | K24 | | | | ;=24 +4 | @1015
|
394 | 1015+ | 1001714 | | jmp | .972 | | | | ;instruction reference |
|
395 | 1016 | 0601423 | | lod | Link9 | | | | ;saved instn +5 | @1016
|
396 | 1016+ | 1001727 | | jmp | .983 | | | | ; |
|
397 | 1017 | 0601422 | | lod | GenAdr | | | | ;address +6 | @1017
|
398 | 1017+ | 1101730 | | jmp | .984P | | | | ; |
|
399 | 1018 | 0041457 | | o02 | K22 | | | | ;=22+1=>23 +7 | @1018
|
400 | 1018+ | 1001714 | | jmp | .972 | | | | |
|
401 | 1019 | | ;-------------------------------- |
|
402 | 1019 | | =972 | |
|
403 | 972 | | ; |
|
404 | 972 | | ; types 4 + 7 entries comes here with Acc= 24 + 23 (instruction reference, table ref) |
|
405 | 972 | | ; also some type 6 can come here with Acc=5 (constant reference) |
|
406 | 972 | | ; |
|
407 | 972 | 0401427 | .972: | sto | W791 | | | | ;save opcode | @972
|
408 | 972+ | 0601423 | | lod | Link9 | | | | ;get instruction |
|
409 | 973 | 1220015 | | srl | 13 | | | | ;shift opcode down |
|
410 | 973+ | 0061460 | | and | K63 | | | | ;=63 mask it out |
|
411 | 974 | 0401414 | | sto | PCdata | | | | ;and save it for putcode | @974
|
412 | 974+ | 0041443 | | o02 | K5a | | | | ;=5+1=>6 bits for opcode |
|
413 | 975 | | ; everything else with operands comes in here |
|
414 | 975 | | .975: | call | | | | | ;output data |
|
414+1 | 975 | 7306371001477 | | lnk | putcode.lnk | : | jmp | putcode.ent | |
|
415 | 976 | 0601427 | | lod | W791 | | | | ;re-load saved opcode | @976
|
416 | 976+ | 0000000 | | o00 | 0 | | | | ; |
|
417 | 977 | | ; types 0 + 3 come here with Acc=8 + 9 respectively (null, elsejump) |
|
418 | 977 | | .977: | call | | | | | ;output opcode |
|
418+1 | 977 | 7306371001526 | | lnk | putOpcd.lnk | : | jmp | putOpcd.ent | |
|
419 | 978 | | | ret | | | | | ;return | @978
|
419+1 | 978 | 0007447000001 | | o00 | PutInst.lnk | / | jmp | 1 | |
|
420 | 979 | | ; |
|
421 | 979 | | ; type 1 comes here with Acc=6 (cond jump pop) |
|
422 | 979 | 0441616 | .979: | inc | W910 | | | | ; |
|
423 | 979+ | | ; type 2 comes here with Acc=7 (cond jump nopop) |
|
424 | 979+ | 0401427 | .979P: | sto | W791 | | | | ;save opcode |
|
425 | 980 | 0601423 | | lod | Link9 | | | | ;get instruction | @980
|
426 | 980+ | 1220015 | | srl | 13 | | | | ;shift opcode down |
|
427 | 981 | 0061452 | | and | K3 | | | | ;=3 mask off condition bits |
|
428 | 981+ | 0401414 | | sto | PCdata | | | | ;store data |
|
429 | 982 | 0041461 | | o02 | K1 | | | | ;=1+1=>2 bits needed | @982
|
430 | 982+ | 1001717 | | jmp | .975 | | | | ;generate modifier bits, then opcode |
|
431 | 983 | | ; type 5 comes here |
|
432 | 983 | 1220024 | .983: | srl | 20 | | | | ;shift instn down |
|
433 | 983+ | 0401422 | | sto | GenAdr | | | | ;save it for later |
|
434 | 984 | 1001755 | | jmp | L1005.ent | | | | ;?? |
|
435 | 984+ | | ; |
|
436 | 984+ | | ; type 6 comes here |
|
437 | 984+ | | .984P: | ; | |
|
438 | 984+ | 0061462 | | and | B1920 | | | | ;=0000003000000 <000/400> | @984+
|
439 | 985 | 1041733 | | jz | .987 | | | | ; zero-> |
|
440 | 985+ | 0000000 | | o00 | 0 | | | | ; no-op |
|
441 | 986 | 0601422 | | lod | GenAdr | | | | ;reload GenAdr | @986
|
442 | 986+ | 1001737 | | jmp | .991 | | | | ; |
|
443 | 987 | | ; |
|
444 | 987 | 0601422 | .987: | lod | GenAdr | | | | ;reload GenAdr |
|
445 | 987+ | 0061450 | | and | N2bits | | | | ;mask address part |
|
446 | 988 | 2000022600000 | | sto | 4 | / | lod | 0 | ;fetch item at address | @988
|
447 | 989 | | | call | | | | | ;process it |
|
447+1 | 989 | 7306371001773 | | lnk | putcode5.lnk | : | jmp | putcode5.ent | |
|
448 | 990 | 0601443 | | lod | K5a | | | | ;=5 | @990
|
449 | 990+ | 1001714 | | jmp | .972 | | | | ;handle as a constant reference |
|
450 | 991 | | ; |
|
451 | 991 | | .991: | ; | |
|
452 | 991 | 0061463 | | and | B2128 | | | | ;=0001774000000 <001023:000> | @991
|
453 | 991+ | 1041755 | | jz | .1005 | | | | ; zero -> |
|
454 | 992 | 1220024 | | srl | 20 | | | | ; shift right | @992
|
455 | 992+ | 1101756 | | jmp | .1006P | | | | ;-> |
|
456 | 993 | | ; |
|
457 | 993 | | .993: | ; | |
|
458 | 993 | 0541427 | | cls | W791 | | | | ;clear 791 | @993
|
459 | 993+ | 0601452 | | lod | K3 | | | | ;=3 |
|
460 | 994 | | | call | | | | | ;putcode(3) output relocation id |
|
460+1 | 994 | 7306371001477 | | lnk | putcode.lnk | : | jmp | putcode.ent | |
|
461 | 995 | 0601422 | .995: | lod | GenAdr | | | | ; | @995
|
462 | 995+ | 0061450 | | and | N2bits | | | | ;=0017777 |
|
463 | 996 | 0401414 | | sto | PCdata | | | | ;save data for putcode | @996
|
464 | 996+ | 0062253 | | and | B6.13 | | | | ;=0017740 mask to see if 5 bits is enough |
|
465 | 997 | 1041751 | | jz | .1001 | | | | ;yes, use short form | @997
|
466 | 997+ | 0041461 | | o02 | K1 | | | | ;=1+1=>2 |
|
467 | 998 | 0501427 | .998: | ads | W791 | | | | ;change opcode +2 | @998
|
468 | 998+ | 0601423 | .998P: | lod | Link9 | | | | ;reload instruction |
|
469 | 999 | 0061465 | | and | F2mask | | | | ;=<:77 0> | @999
|
470 | 999+ | 0501414 | | ads | PCdata | | | | ;add to address |
|
471 | 1000 | 0601466 | | lod | K19 | | | | ;19 bits in total | @1000
|
472 | 1000+ | 1001717 | | jmp | .975 | | | | ;write to ocode stream |
|
473 | 1001 | | ; use short form ocode entry (1,3) |
|
474 | 1001 | | ; |
|
475 | 1001 | 0040000 | .1001: | o02 | 0 | | | | ;=1 | @1001
|
476 | 1001+ | 0501427 | | ads | W791 | | | | ;change opcode by +1 |
|
477 | 1002 | 0601423 | .1002: | lod | Link9 | | | | ;get instruction | @1002
|
478 | 1002+ | 0061465 | | and | F2mask | | | | ;=<:77 0> |
|
479 | 1003 | 1220010 | | srl | 8 | | | | ; >> 8 |
|
480 | 1003+ | 0501414 | | ads | PCdata | | | | ;add to address (<32) |
|
481 | 1004 | 0602231 | | lod | K11 | | | | ;6+5 bits | @1004
|
482 | 1004+ | 1001717 | | jmp | .975 | | | | ;and write to ocode stream |
|
483 | 1005 | | ; |
|
484 | 1005 | | L1005.ent: | ; | |
|
485 | 1005 | 0041461 | .1005: | o02 | K1 | | | | ;=2 large reloc | @1005
|
486 | 1005+ | 0401427 | | sto | W791 | | | | ;store key for putcode |
|
487 | 1006 | 1001743 | | jmp | .995 | | | | ; | @1006
|
488 | 1006+ | | ; |
|
489 | 1006+ | | ; process relocation id |
|
490 | 1006+ | | .1006P: | ; | |
|
491 | 1006+ | 0401414 | | sto | PCdata | | | | ; | @1006+
|
492 | 1007 | 0061464 | | and | K4088 | | | | ;=07770 check if 3 bits enough |
|
493 | 1007+ | 1041741 | | jz | .993 | | | | ; zero ->yes, use short ocode |
|
494 | 1008 | 0041454 | | o02 | K7 | | | | ;=7+1=8 | @1008
|
495 | 1008+ | 1001776 | | jmp | .1022 | | | | ;output 8-bit reloc id |
|
496 | 1009 | | ; |
|
497 | 1009 | | ; generate No-op reference <00 addr>, address info in Acc |
|
498 | 1009 | | ; |
|
499 | 1009 | | NopRef.ent: | ; | |
|
500 | 1009 | 0541423 | .1009: | cls | Link9 | | | | ;make instn <00 0> |
|
501 | 1009+ | 0401422 | | sto | GenAdr | | | | ;save address info |
|
502 | 1010 | 1001771 | | jmp | .sw+6 | | | | ;enter PutInst at type 6 | @1010
|
503 | 1010+ | | ; |
|
504 | 1010+ | 0000000 | | o00 | 0 | | | | ; |
|
505 | 1011 | | ;-------------------------------------------------------------------- |
|
506 | 1011 | | ; |
|
507 | 1011 | | =1019 | |
|
508 | 1019 | | putcode5.ent: | ; | |
|
509 | 1019 | 1041774 | | jz | .1020 | | | | ; | @1019
|
510 | 1019+ | 1101532 | | jmp | putFwd.ent | | | | ;output full-word to ocode |
|
511 | 1020 | | ; |
|
512 | 1020 | 0601452 | .1020: | lod | K3 | | | | ;=3 small absolute value | @1020
|
513 | 1020+ | 0401427 | | sto | W791 | | | | ;store key |
|
514 | 1021 | 0541414 | | cls | PCdata | | | | ;set data=0 |
|
515 | 1021+ | 1001752 | | jmp | .1002 | | | | ;write it |
|
516 | 1022 | | ;-------------------------------------------------------------------- |
|
517 | 1022 | | .1022: | call | | | | | ; | @1022
|
517+1 | 1022 | 7306371001477 | | lnk | putcode.lnk | : | jmp | putcode.ent | |
|
518 | 1023 | 0601466 | | lod | K19 | | | | ;set key=19, extra large reloc |
|
519 | 1023+ | 0401427 | | sto | W791 | | | | ; |
|
520 | 1024 | 0601422 | | lod | GenAdr | | | | ;load address bits | @1024
|
521 | 1024+ | 0061450 | | and | N2bits | | | | ;mask to 13 bits |
|
522 | 1025 | 0401414 | | sto | PCdata | | | | ;store for putcode |
|
523 | 1025+ | 1101746 | | jmp | .998P | | | | ;do it |
|
524 | 1026 | | ;-------------------------------------------------------------------- |
|
525 | 1026 | | ; output word of ocode, to tape or core |
|
526 | 1026 | | ; |
|
527 | 1026 | | L1026:: | ; | |
|
528 | 1026 | | ; |
|
529 | 1026 | | .ent: | ; | |
|
530 | 1026 | 0201437 | | exa | W799 | | | | ; incore? | @1026
|
531 | 1026+ | 1142066 | | jz | L1077.1078P | | | | ;->yes |
|
532 | 1027 | | | call | | | | | ; output to film? |
|
532+1 | 1027 | 7306151102065 | | lnk | L1077.lnk | : | jmp | L1077.ent | |
|
533 | 1028 | | | ret | | | | | ; | @1028
|
533+1 | 1028 | 0006147000001 | | o00 | L1026.lnk | / | jmp | 1 | |
|
534 | 1029 | | ;-------------------------------------------------------------------- |
|
535 | 1029 | | L1029.ent: | ; | |
|
536 | 1029 | 0602160 | | lod | dicpt | | | | ; | @1029
|
537 | 1029+ | 0124304 | | sub | constptr | | | | ; |
|
538 | 1030 | 1122007 | | jn | .1031P | | | | ; | @1030
|
539 | 1030+ | 0604304 | | lod | constptr | | | | ; |
|
540 | 1031 | 1002010 | | jmp | .1032 | | | | ; |
|
541 | 1031+ | | ; |
|
542 | 1031+ | 0602160 | .1031P: | lod | dicpt | | | | ; |
|
543 | 1032 | | ; |
|
544 | 1032 | 0122151 | .1032: | sub | stkp | | | | ; | @1032
|
545 | 1032+ | 1042061 | | jz | .1073 | | | | ; |
|
546 | 1033 | 1220001 | | srl | 1 | | | | ; |
|
547 | 1033+ | 1042061 | | jz | .1073 | | | | ; |
|
548 | 1034 | 0102151 | | add | stkp | | | | ; | @1034
|
549 | 1034+ | 0401432 | | sto | Link10a | | | | ; |
|
550 | 1035 | 0202151 | | exa | stkp | | | | ; |
|
551 | 1035+ | 0401433 | | sto | Link10b | | | | ; |
|
552 | 1036 | | .1036: | ; | |
|
553 | 1036 | 0006156600000 | | o00 | Link10b | / | lod | 0 | ; | @1036
|
554 | 1037 | 0006152400000 | | o00 | Link10a | / | sto | 0 | ; |
|
555 | 1038 | 0040000 | | o02 | 0 | | | | ; | @1038
|
556 | 1038+ | 0561432 | | o27 | Link10a | | | | ; |
|
557 | 1039 | 0761433 | | o37 | Link10b | | | | ; |
|
558 | 1039+ | 0167525 | | bus | stkbase | | | | ; |
|
559 | 1040 | 1022014 | | jn | .1036 | | | | ; | @1040
|
560 | 1040+ | 0041432 | | o02 | Link10a | | | | ; |
|
561 | 1041 | 0407525 | | sto | stkbase | | | | ; |
|
562 | 1041+ | 1002036 | | jmp | .1054 | | | | ; |
|
563 | 1042 | | ; |
|
564 | 1042 | 0041421 | .1042: | o02 | W785 | | | | ; | @1042
|
565 | 1042+ | 0167525 | | bus | stkbase | | | | ; |
|
566 | 1043 | 1042064 | | jz | .1076 | | | | ; |
|
567 | 1043+ | 0121445 | | sub | K120 | | | | ;=120 |
|
568 | 1044 | 1122025 | | jn | .1045P | | | | ; | @1044
|
569 | 1044+ | 0041440 | | o02 | K39 | | | | ; |
|
570 | 1045 | 1002027 | | jmp | .1047 | | | | ; |
|
571 | 1045+ | | ; |
|
572 | 1045+ | | .1045P: | ; | |
|
573 | 1045+ | 0101445 | | add | K120 | | | | ;=120 |
|
574 | 1046 | 1220002 | | srl | 2 | | | | ; | @1046
|
575 | 1046+ | 1042064 | | jz | .1076 | | | | |
|
576 | 1047 | | L1047: | ; | |
|
577 | 1047 | | .1047: | ; | |
|
578 | 1047 | 1010653 | | jmp | L4523 | | | | |
|
579 | 1047+ | | ; |
|
580 | 1047+ | | L1047P: | ; | |
|
581 | 1047+ | | .1047P: | ; | |
|
582 | 1047+ | 0401432 | | sto | Link10a | | | | ; |
|
583 | 1048 | 0207525 | | exa | stkbase | | | | ; | @1048
|
584 | 1048+ | 0401433 | | sto | Link10b | | | | ; |
|
585 | 1049 | | .1049: | ; | |
|
586 | 1049 | 2206156577777 | | inc | Link10b | / | lod | -1 | ; |
|
587 | 1050 | 2206152377777 | | inc | Link10a | / | sto | -1 | ; | @1050
|
588 | 1051 | 0601433 | | lod | Link10b | | | | ; |
|
589 | 1051+ | 0122151 | | sub | stkp | | | | ; |
|
590 | 1052 | 1022031 | | jn | .1049 | | | | ; | @1052
|
591 | 1052+ | 0601432 | | lod | Link10a | | | | ; |
|
592 | 1053 | 0402151 | | sto | stkp | | | | ; |
|
593 | 1053+ | | | nop | | | | | ; |
|
593+1 | 1053+ | 1002036 | | jmp | .1 | | | | |
|
593+2 | 1054 | | .1: | ; | |
|
594 | 1054 | | .1054: | ret | | | | | ; | @1054
|
594+1 | 1054 | 0006147000001 | | o00 | L1026.lnk | / | jmp | 1 | |
|
595 | 1055 | | ; |
|
596 | 1055 | | ;-------------------------------------------------------------------- |
|
597 | 1055 | | L1055: | ; | |
|
598 | 1055 | | ; initialise paper tape output, first output 40 blanks to ptp |
|
599 | 1055 | | ; |
|
600 | 1055 | 0601440 | .1055: | lod | K39 | | | | ;=+39 | @1055
|
601 | 1055+ | 0421432 | | stn | Link10a | | | | ; |
|
602 | 1056 | 1700000 | .1056: | otp | 0 | | | | ;punch blank tape | @1056
|
603 | 1056+ | 0641432 | | lis | Link10a | | | | ;count |
|
604 | 1057 | 1022040 | | jn | .1056 | | | | ;loop back until done |
|
605 | 1057+ | | ; |
|
606 | 1057+ | 0741415 | | lzs | work1 | | | | ;set to zero |
|
607 | 1058 | 0401432 | | sto | Link10a | | | | ; | @1058
|
608 | 1058+ | 0741416 | | lzs | PCshift | | | | ;shift count |
|
609 | 1059 | 0401433 | | sto | Link10b | | | | ; |
|
610 | 1059+ | 0044334 | | o02 | W2268 | | | | ; |
|
611 | 1060 | 0421420 | | stn | PCchk | | | | ; | @1060
|
612 | 1060+ | 0541425 | | cls | errsw | | | | ; |
|
613 | 1061 | 0607532 | | lod | FreeMemPtr | | | | ; |
|
614 | 1061+ | 0401434 | | sto | Work1 | | | | ; |
|
615 | 1062 | 0006162600000 | .1062: | o00 | Work1 | / | lod | 0 | ; | @1062
|
616 | 1063 | | | call | | | | | ; |
|
616+1 | 1063 | 7306371101532 | | lnk | putFwd.lnk | : | jmp | putFwd.ent | |
|
617 | 1064 | 0441434 | | inc | Work1 | | | | ; | @1064
|
618 | 1064+ | 0601434 | | lod | Work1 | | | | ; |
|
619 | 1065 | 0121421 | | sub | W785 | | | | ; |
|
620 | 1065+ | 1022046 | | jn | .1062 | | | | ; |
|
621 | 1066 | 0601432 | | lod | Link10a | | | | ; | @1066
|
622 | 1066+ | 0401414 | | sto | PCdata | | | | ; |
|
623 | 1067 | 0601433 | | lod | Link10b | | | | ; |
|
624 | 1067+ | | | nop | | | | | ; |
|
624+1 | 1067+ | 1002054 | | jmp | .1 | | | | |
|
624+2 | 1068 | | .1: | ; | |
|
625 | 1068 | | .1068: | call | | | | | ; | @1068
|
625+1 | 1068 | 7306371001477 | | lnk | putcode.lnk | : | jmp | putcode.ent | |
|
626 | 1069 | 0607522 | | lod | eotflg | | | | ; |
|
627 | 1069+ | 1102062 | | jmp | .1074P | | | | ; |
|
628 | 1070 | | ; |
|
629 | 1070 | | L1026:: | ; | |
|
630 | 1070 | | ; |
|
631 | 1070 | | L1070.ent: | ; | |
|
632 | 1070 | 0601425 | | lod | errsw | | | | ; | @1070
|
633 | 1070+ | 1142057 | | jz | .1071P | | | | ; |
|
634 | 1071 | 1002072 | | jmp | L1077.1082 | | | | ; |
|
635 | 1071+ | | ; |
|
636 | 1071+ | | .1071P: | ; | |
|
637 | 1071+ | 0602211 | | lod | K4 | | | | ;=4 |
|
638 | 1072 | | _err49: | ; | |
|
639 | 1072 | 1661044 | | lnk | errlnk | | | | ;error 49: program too large or complex | @1072
|
640 | 1072+ | 1001070 | | jmp | Error | | | | ;call error routine |
|
641 | 1073 | | ;-------------------------------------------------------------------- |
|
642 | 1073 | | .1073: | ; | |
|
643 | 1073 | 0601476 | | lod | putcode.lnk | | | | ; |
|
644 | 1073+ | 0407522 | | sto | eotflg | | | | ; |
|
645 | 1074 | 1002064 | | jmp | .1076 | | | | ; | @1074
|
646 | 1074+ | | ; |
|
647 | 1074+ | 0401476 | .1074P: | sto | putcode.lnk | | | | ; |
|
648 | 1075 | 0607532 | | lod | FreeMemPtr | | | | ; | @1075
|
649 | 1075+ | 1102027 | | jmp | .1047P | | | | ; |
|
650 | 1076 | | ; |
|
651 | 1076 | 0601436 | .1076: | lod | W798 | | | | ; | @1076
|
652 | 1076+ | 1042037 | | jz | .1055 | | | | ; |
|
653 | 1077 | 1002140 | | jmp | .1120 | | | | ; |
|
654 | 1077+ | | ; |
|
655 | 1077+ | | L1077:: | ; | |
|
656 | 1077+ | | ; |
|
657 | 1077+ | | .ent: | ; | |
|
658 | 1077+ | 0201437 | | exa | W799 | | | | ; recover word | @1077+
|
659 | 1078 | 1002100 | | jmp | WrtFilmWd.ent | | | | ;->write to film | @1078
|
660 | 1078+ | | ;-------------------------------------------------------------------- |
|
661 | 1078+ | 0201437 | .1078P: | exa | W799 | | | | ; recover word |
|
662 | 1079 | 2206106377777 | | inc | W785 | / | sto | -1 | ; store code word |
|
663 | 1080 | 0601421 | | lod | W785 | | | | ; get pointer | @1080
|
664 | 1080+ | 0127525 | | sub | stkbase | | | | ; compare against limit |
|
665 | 1081 | 1022036 | | jn | L1026.1054 | | | | ; if OK, ->return |
|
666 | 1081+ | 1002005 | | jmp | L1029.ent | | | | |
|
667 | 1082 | | ;-------------------------------------------------------------------- |
|
668 | 1082 | 0601437 | .1082: | lod | W799 | | | | ; film switch | @1082
|
669 | 1082+ | 1042022 | | jz | L1026.1042 | | | | ; core output |
|
670 | 1083 | 1002060 | | jmp | _err49 | | | | ; program too large or complex |
|
671 | 1083+ | | ; |
|
672 | 1083+ | 0000000 | | o00 | 0 | | | | |
|
673 | 1084 | | ;------------------------------------------------------------------- |
|
674 | 1084 | | WrtFilmBlk.ent: | ; | |
|
675 | 1084 | | ; |
|
676 | 1084 | 0006363742001 | .1084: | o00 | W828 | / | o76 | 1025 | ;prepare to write | @1084
|
677 | 1085 | 0036553760000 | | o00 | FreeMemPtr | / | o77 | 0 | ; write block |
|
678 | 1086 | 1722003 | | o75 | 1027 | | | | ;read last block address | @1086
|
679 | 1086+ | 0101475 | | add | W829 | | | | ;=4095 |
|
680 | 1087 | 0401435 | | sto | Work2 | | | | ; |
|
681 | 1087+ | 1002106 | | jmp | .1094 | | | | ; |
|
682 | 1088 | | ;------------------------------------------------------ |
|
683 | 1088 | | ; add word to film buffer, if buffer full, write to film |
|
684 | 1088 | | ; |
|
685 | 1088 | | WrtFilmWd.ent: | ; | |
|
686 | 1088 | 0006162400000 | | o00 | Work1 | / | sto | 0 | ;add to buffer | @1088
|
687 | 1089 | 0641434 | | lis | Work1 | | | | ;increment and get buffer pointer |
|
688 | 1089+ | 0127532 | | sub | FreeMemPtr | | | | ;buffer base |
|
689 | 1090 | 0121460 | | sub | K63 | | | | ;=63 | @1090
|
690 | 1090+ | 1022111 | | jn | .1097 | | | | ;not full-> |
|
691 | 1091 | 0006363742001 | | o00 | W828 | / | o76 | 1025 | ;prepare to write to film |
|
692 | 1092 | 0036553760000 | | o00 | FreeMemPtr | / | o77 | 0 | ; write the block | @1092
|
693 | 1093 | 0040000 | | o02 | 0 | | | | ;=1 |
|
694 | 1093+ | 0561435 | | o27 | Work2 | | | | ;decrement block number |
|
695 | 1094 | | .1094: | ; | |
|
696 | 1094 | 0006363742002 | | o00 | W828 | / | o76 | 1026 | ;prepare to search | @1094
|
697 | 1095 | 0006167760000 | | o00 | Work2 | / | o77 | 0 | ; do search |
|
698 | 1096 | 0607532 | | lod | FreeMemPtr | | | | ;block address | @1096
|
699 | 1096+ | 0401434 | | sto | Work1 | | | | ;store in pointer |
|
700 | 1097 | | .1097: | ; | |
|
701 | 1097 | | | ret | | | | | |
|
701+1 | 1097 | 0006153000001 | | o00 | L1077.lnk | / | jmp | 1 | |
|
702 | 1098 | | ;-------------------------------- |
|
703 | 1098 | | .1098: | ; | |
|
704 | 1098 | 1042135 | | jz | .1117 | | | | ; | @1098
|
705 | 1098+ | | .1098P: | ; | |
|
706 | 1098+ | 0601472 | | lod | W826 | | | | ;'no han' |
|
707 | 1099 | 1714035 | | otp | TP+CR | | | | ;6k+CR |
|
708 | 1099+ | 1714036 | | otp | TP+LF | | | | ;6k+LF |
|
709 | 1100 | | | call | | | | | ; lnk 795 :jmp 4292 | @1100
|
709+1 | 1100 | 7306155010304 | | lnk | dispwdc.lnk | : | jmp | dispwdc.ent | |
|
710 | 1101 | 0601473 | | lod | W826+1 | | | | ;'dler ' |
|
711 | 1101+ | 0541020 | | cls | W528 | | | | ;indicate continue after KbWait |
|
712 | 1102 | | | call | | | | | ; lnk 795 :jmp 4292 | @1102
|
712+1 | 1102 | 7306155010304 | | lnk | dispwdc.lnk | : | jmp | dispwdc.ent | |
|
713 | 1103 | 1661044 | | lnk | errlnk | | | | ; |
|
714 | 1103+ | 1001056 | | jmp | KbWait | | | | ;call error handler |
|
715 | 1104 | 0006363742001 | | o00 | W828 | / | o76 | 1025 | ;prepare to write | @1104
|
716 | 1105 | 0061461 | | and | K1 | | | | ; handler not available |
|
717 | 1105+ | 1042123 | | jz | .1107 | | | | ; |
|
718 | 1106 | | .1106: | ; | |
|
719 | 1106 | 1002037 | | jmp | L1055 | | | | ;initialise paper tape output | @1106
|
720 | 1106+ | | ; |
|
721 | 1106+ | 0000000 | | o00 | 0 | | | | |
|
722 | 1107 | | ;-------------------------------------------------------------------- |
|
723 | 1107 | | .1107: | ; | |
|
724 | 1107 | 0006363742001 | | o00 | W828 | / | o76 | 1025 | ;prepare to write |
|
725 | 1108 | 0062211 | | and | K4 | | | | ;=4 write enable bit | @1108
|
726 | 1108+ | 1042122 | | jz | .1106 | | | | ;not enabled, use ptp |
|
727 | 1109 | | L1109: | ; | |
|
728 | 1109 | | .1109: | call | | | | | ;call 1084 |
|
728+1 | 1109 | 7306151002074 | | lnk | WrtFilmBlk.lnk | : | jmp | WrtFilmBlk.ent | |
|
729 | 1110 | 1661437 | | lnk | W799 | | | | ;set film switch | @1110
|
730 | 1110+ | 0041460 | | o02 | K63 | | | | ;=63 |
|
731 | 1111 | 0107532 | | add | FreeMemPtr | | | | ; |
|
732 | 1111+ | 0401433 | | sto | Link10b | | | | ; |
|
733 | 1112 | | L1112: | ; | |
|
734 | 1112 | 2206156577777 | .1112: | inc | Link10b | / | lod | -1 | ; | @1112
|
735 | 1113 | | | call | | | | | ; |
|
735+1 | 1113 | 7306151002100 | | lnk | WrtFilmWd.lnk | : | jmp | WrtFilmWd.ent | |
|
736 | 1114 | 0601433 | | lod | Link10b | | | | ; | @1114
|
737 | 1114+ | 0121421 | | sub | W785 | | | | ; |
|
738 | 1115 | 1022130 | | jn | L1112 | | | | ; |
|
739 | 1115+ | 0041460 | | o02 | K63 | | | | ;=63 |
|
740 | 1116 | 0107532 | | add | FreeMemPtr | | | | ; | @1116
|
741 | 1116+ | 1102027 | | jmp | L1047P | | | | ; |
|
742 | 1117 | | ; |
|
743 | 1117 | 0006363742001 | .1117: | o00 | W828 | / | o76 | 1025 | ;prepare to write to film |
|
744 | 1118 | 0062211 | | and | K4 | | | | ;=4, write enabled? | @1118
|
745 | 1118+ | 1142112 | | jz | .1098P | | | | ;no, |
|
746 | 1119 | 1002125 | | jmp | L1109 | | | | ; |
|
747 | 1119+ | | ; |
|
748 | 1119+ | 0000000 | | o00 | 0 | | | | ; |
|
749 | 1120 | | ; |
|
750 | 1120 | | L1026:: | ; | |
|
751 | 1120 | | ; |
|
752 | 1120 | 0006363742001 | .1120: | o00 | W828 | / | o76 | 1025 | ;prepare to write to film |
|
753 | 1121 | 0061461 | | and | K1 | | | | ; handler not available |
|
754 | 1121+ | 1002112 | | jmp | L1077.1098 | | | | ; |
|
755 | 1122 | | ;-------------------------------------------------------------------- |
|