include "hdr1.html"; ?>
Line | Address | Object Code | Label | F1 | N1 | B | F2 | N2 | Comments | Check |
---|---|---|---|---|---|---|---|---|---|---|
1 | 0 | ; tape2/outstr.t2 | ||||||||
2 | 0 | ;---------------- | ||||||||
3 | 0 | unpackchar:: | ; | |||||||
4 | 0 | unpackchar: | ; | |||||||
5 | 0 | 0655122 | lis | W6738 | ;counter | @6982 | ||||
6 | 0+ | 1040003 | jz | .1 | ;nothing left in AR, get word | |||||
7 | 1 | 0140000 | cla | 0 | ;clear ACC | @6983 | ||||
8 | 1+ | 1300006 | sla | 6 | ;shift char into acc | |||||
9 | 2 | 1040000 | jz | Return | ;end of string if zero, exit | @6984 | ||||
10 | 2+ | 1000012 | jmp | .ret | ;return with next char | |||||
11 | 3 | ; | ||||||||
12 | 3 | .1: | ; | |||||||
13 | 3 | 0615120 | lod | W6736 | ;was last word flagged? | @6985 | ||||
14 | 3+ | 1020000 | jn | Return | ;yes, end of string, exit | |||||
15 | 4 | 0615142 | lod | TopBit | ;=04000000000000 (sign bit) | @6986 | ||||
16 | 4+ | 0415120 | sto | W6736 | ;end of string indicator | |||||
17 | 5 | 2264506577777 | inc | W6737 | / | lod | -1 | ;load next word | @6987 | |
18 | 6 | 0475120 | ans | W6736 | ;test with sign bit | @6988 | ||||
19 | 6+ | 1200044 | sra | 36 | ;shift into AR | |||||
20 | 7 | 0055146 | o02 | W6758 | ;=5+1=>6 | @6989 | ||||
21 | 7+ | 0435122 | stn | W6738 | ;count := -6 | |||||
22 | 8 | 1000000 | jmp | unpackchar | ;back to try again | @6990 | ||||
23 | 8+ | ;-------------------------------------------------------------------- | ||||||||
24 | 8+ | ; output a char to printer or punch | ||||||||
25 | 8+ | ; device address in 6718 | ||||||||
26 | 8+ | ; | ||||||||
27 | 8+ | outchar: | ; | |||||||
28 | 8+ | 0100077 | add | outdev | ;add device number | |||||
29 | 9 | 1664517700000 | stc | W6739 | / | otp | 0 | ;print/punch it | @6991 | |
30 | 10 | .ret: | ; | |||||||
31 | 10 | 0000023000001 | o00 | 4 | / | jmp | 1 | ;return to caller | @6992 | |
32 | 11 | ;-------------------------------------------------------------------- | ||||||||
33 | 11 | ; output string to teleprinter | ||||||||
34 | 11 | ; | ||||||||
35 | 11 | OutStr:: | ; | |||||||
36 | 11 | outstr: | ; | |||||||
37 | 11 | 1060013 | jo | IntOflo | ;report overflow if set | @6993 | ||||
38 | 11+ | 0540016 | cls | arg1 | ; | |||||
39 | 12 | 0555120 | cls | W6736 | ;end of string flag | @6994 | ||||
40 | 12+ | 0415121 | sto | W6737 | ;address of first wd of string | |||||
41 | 13 | 0555122 | cls | W6738 | ;number of chars in AR | @6995 | ||||
42 | 13+ | 0555126 | cls | W6742 | ; | |||||
43 | 14 | 0000000 | o00 | 0 | ; | @6996 | ||||
44 | 14+ | 0615144 | lod | W6756 | ;=27 figure shift | |||||
45 | 15 | calln | , | ;output FS | @6997 | |||||
45+1 | 15 | 7300021100010 | lnk | 4 | : | jmp | outchar | |||
46 | 16 | .1: | ; | |||||||
47 | 16 | calln | , | ;get next char from string | @6998 | |||||
47+1 | 16 | 7300021000000 | lnk | 4 | : | jmp | unpackchar | |||
48 | 17 | 0400015 | sto | Link1 | ;save it | @6999 | ||||
49 | 17+ | 0135140 | sub | W6752 | ;=63 [escape character] | |||||
50 | 18 | 1140032 | jz | .4 | ;check inner string | @7000 | ||||
51 | 18+ | 0600015 | lod | Link1 | ;reload character | |||||
52 | 19 | 0075150 | and | K32a | ;=32 | @7001 | ||||
53 | 19+ | 0200016 | exa | arg1 | ;store new shift, get old shift | |||||
54 | 20 | 0120016 | sub | arg1 | ;compare the two | @7002 | ||||
55 | 20+ | 1140030 | jz | .3 | ;same, shift OK | |||||
56 | 21 | 0600016 | lod | arg1 | ;get new shift | @7003 | ||||
57 | 21+ | 1140026 | jz | .2 | ;figs-> | |||||
58 | 22 | 0616223 | lod | K4 | ;=4 | @7004 | ||||
59 | 22+ | .2: | ; | |||||||
60 | 22+ | 0115144 | add | W6756 | ;=27 => 27/31 | |||||
61 | 23 | calln | , | ;output shift char | @7005 | |||||
61+1 | 23 | 7300021100010 | lnk | 4 | : | jmp | outchar | |||
62 | 24 | 0000000 | o00 | 0 | ;padding | @7006 | ||||
63 | 24+ | .3: | ; | |||||||
64 | 24+ | 0600015 | lod | Link1 | ;get current char | |||||
65 | 25 | calln | , | ;output to printer/punch | @7007 | |||||
65+1 | 25 | 7300021100010 | lnk | 4 | : | jmp | outchar | |||
66 | 26 | 1000020 | jmp | .1 | ;loop back for more | @7008 | ||||
67 | 26+ | ; | ||||||||
68 | 26+ | ; char= 63 (escape for inner strings) | ||||||||
69 | 26+ | .4: | ; | |||||||
70 | 26+ | 0555124 | cls | W6740 | ; | |||||
71 | 27 | .5: | ; | |||||||
72 | 27 | calln | , | ;get next char from string | @7009 | |||||
72+1 | 27 | 7300021000000 | lnk | 4 | : | jmp | unpackchar | |||
73 | 28 | 0400015 | sto | Link1 | ;save it | @7010 | ||||
74 | 28+ | 0135150 | sub | K32a | ;=32 check for end of inner string | |||||
75 | 29 | 1000125 | jmp | .24 | ;->check for letter | @7011 | ||||
76 | 29+ | ; | ||||||||
77 | 29+ | .6: | ; | |||||||
78 | 29+ | 1660020 | lnk | arg3 | ; | |||||
79 | 30 | calln | , | ; | @7012 | |||||
79+1 | 30 | 7300075100066 | lnk | arg2 | : | jmp | OutStr.16 | |||
80 | 31 | 0600015 | lod | Link1 | ; | @7013 | ||||
81 | 31+ | 0135157 | sub | W6767 | ;=49 'Q' | |||||
82 | 32 | 1040046 | jz | .8 | ; | @7014 | ||||
83 | 32+ | 0116210 | add | N1 | ;=-1 'P' | |||||
84 | 33 | 1040047 | jz | .9 | ; | @7015 | ||||
85 | 33+ | 0116210 | add | N1 | ;=-1 'R' | |||||
86 | 34 | 1040050 | jz | .10 | ; | @7016 | ||||
87 | 34+ | 0135141 | sub | W6753 | ; | |||||
88 | 35 | 1040051 | jz | .11 | ; | @7017 | ||||
89 | 35+ | 0115160 | add | W6768 | ; | |||||
90 | 36 | 1040045 | jz | .7 | ; | @7018 | ||||
91 | 36+ | 1000120 | jmp | .21 | ; | |||||
92 | 37 | ; | ||||||||
93 | 37 | .7: | ; | |||||||
94 | 37 | 0055145 | o02 | W6757 | ;=29+1=>30 | @7019 | ||||
95 | 37+ | 1100051 | jmp | .12 | ; | |||||
96 | 38 | ; | ||||||||
97 | 38 | .8: | ; | |||||||
98 | 38 | 0615152 | lod | W6762 | ; | @7020 | ||||
99 | 38+ | 1100051 | jmp | .12 | ; | |||||
100 | 39 | ; | ||||||||
101 | 39 | .9: | ; | |||||||
102 | 39 | 0140000 | cla | 0 | ; | @7021 | ||||
103 | 39+ | 1100051 | jmp | .12 | ; | |||||
104 | 40 | ; | ||||||||
105 | 40 | .10: | ; | |||||||
106 | 40 | 0055144 | o02 | W6756 | ;=27 | @7022 | ||||
107 | 40+ | 1100051 | jmp | .12 | ; | |||||
108 | 41 | ; | ||||||||
109 | 41 | .11: | ; | |||||||
110 | 41 | 0615161 | lod | W6769 | ; | @7023 | ||||
111 | 41+ | .12: | ; | |||||||
112 | 41+ | 0415125 | sto | W6741 | ; | |||||
113 | 42 | 1000033 | jmp | .5 | ; | @7024 | ||||
114 | 42+ | ; | ||||||||
115 | 42+ | .13: | ; | |||||||
116 | 42+ | 0176241 | bus | Ptab2+0 | ;=-5 | |||||
117 | 43 | 1040122 | jz | .22 | ; | @7025 | ||||
118 | 43+ | 1020033 | jn | .5 | ; | |||||
119 | 44 | 0615124 | lod | W6740 | ; | @7026 | ||||
120 | 44+ | 1040120 | jz | .21 | ; | |||||
121 | 45 | 0056220 | o02 | K15a | ;=15+1=>16 | @7027 | ||||
122 | 45+ | 0160015 | bus | Link1 | ; | |||||
123 | 46 | 2000023020120 | sto | 4 | / | jn | .SW+15 | ; | @7028 | |
124 | 47 | 0000023100101 | o00 | 4 | / | jmp | .SW# | ; | @7029 | |
125 | 48 | ; | ||||||||
126 | 48 | .14: | ; | |||||||
127 | 48 | 0616220 | lod | K15a | ;=15 | @7030 | ||||
128 | 48+ | 0460015 | ans | Link1 | ; | |||||
129 | 49 | 0740020 | lzs | arg3 | ; | @7031 | ||||
130 | 49+ | 1140062 | jz | .15 | ; | |||||
131 | 50 | 0555126 | cls | W6742 | ; | @7032 | ||||
132 | 50+ | .15: | ; | |||||||
133 | 50+ | 1360000 | ara | 0 | ; | |||||
134 | 51 | 0215126 | exa | W6742 | ; | @7033 | ||||
135 | 51+ | 1255153 | mul | W6763 | ; | |||||
136 | 52 | 1360000 | ara | 0 | ; | @7034 | ||||
137 | 52+ | 0100015 | add | Link1 | ; | |||||
138 | 53 | 0215126 | exa | W6742 | ; | @7035 | ||||
139 | 53+ | 1200046 | sra | 38 | ; | |||||
140 | 54 | 1000033 | jmp | .5 | ; | @7036 | ||||
141 | 54+ | ;-------------------------------- | ||||||||
142 | 54+ | .16: | ; | |||||||
143 | 54+ | 0635126 | lcs | W6742 | ;test and clear flag | |||||
144 | 55 | 1040076 | jz | .20 | ; | @7037 | ||||
145 | 55+ | 0055145 | o02 | W6757 | ;=29+1=>30 | |||||
146 | 56 | 0175125 | bus | W6741 | ; | @7038 | ||||
147 | 56+ | 1020072 | jn | .17 | ; | |||||
148 | 57 | 0615145 | lod | W6757 | ; | @7039 | ||||
149 | 57+ | 1000075 | jmp | .19 | ; | |||||
150 | 58 | ; | ||||||||
151 | 58 | .17: | ; | |||||||
152 | 58 | 0115153 | add | W6763 | ; | @7040 | ||||
153 | 58+ | 1040124 | jz | .23 | ; | |||||
154 | 59 | 0116231 | add | N6 | ;=-6 | @7041 | ||||
155 | 59+ | 1040124 | jz | .23 | ; | |||||
156 | 60 | 1000076 | jmp | .20 | ; | @7042 | ||||
157 | 60+ | ; | ||||||||
158 | 60+ | .18: | ; | |||||||
159 | 60+ | 0615144 | lod | W6756 | ;=27 | |||||
160 | 61 | .19: | ; | |||||||
161 | 61 | calln | , | ; | @7043 | |||||
161+1 | 61 | 7300021100010 | lnk | 4 | : | jmp | outchar | |||
162 | 62 | .20: | ; | |||||||
163 | 62 | 1675124 | lnk | W6740 | ; | @7044 | ||||
164 | 62+ | 0655126 | lis | W6742 | ; | |||||
165 | 63 | 0000077040001 | o00 | arg2 | / | jz | 1 | ;return if flag zero | @7045 | |
166 | 64 | 0615125 | lod | W6741 | ; | @7046 | ||||
167 | 64+ | 1000075 | jmp | .19 | ; | |||||
168 | 65 | ; | ||||||||
169 | 65 | 4000301000060 | .SW: | jmp | .14 | : | jmp | .14 | ;~ O | @7047 |
170 | 66 | 4000301000120 | jmp | .14 | : | jmp | .21 | ;A P | @7048 | |
171 | 67 | 4000501000120 | jmp | .21 | : | jmp | .21 | ;B Q | @7049 | |
172 | 68 | 4000301000060 | jmp | .14 | : | jmp | .14 | ;C R | @7050 | |
173 | 69 | 4000501000120 | jmp | .21 | : | jmp | .21 | ;D S | @7051 | |
174 | 70 | 4000501000060 | jmp | .21 | : | jmp | .14 | ;E T | @7052 | |
175 | 71 | 4000301000060 | jmp | .14 | : | jmp | .14 | ;F U | @7053 | |
176 | 72 | 4000301000120 | jmp | .14 | : | jmp | .21 | ;G V | @7054 | |
177 | 73 | 4000501000120 | jmp | .21 | : | jmp | .21 | ;H W | @7055 | |
178 | 74 | 4000501000060 | jmp | .21 | : | jmp | .14 | ;I X | @7056 | |
179 | 75 | 4000501000120 | jmp | .21 | : | jmp | .21 | ;J Y | @7057 | |
180 | 76 | 4000501000122 | jmp | .21 | : | jmp | .22 | ;K Z | @7058 | |
181 | 77 | 4000501000033 | jmp | .21 | : | jmp | .5 | ;L | @7059 | |
182 | 78 | 4000501000033 | jmp | .21 | : | jmp | .5 | ;M | @7060 | |
183 | 79 | 4000501000033 | jmp | .21 | : | jmp | .5 | ;N | @7061 | |
184 | 80 | ; | ||||||||
185 | 80 | .21: | ; | |||||||
186 | 80 | 0600001 | lod | T2Link | ; | @7062 | ||||
187 | 80+ | 0400015 | sto | Link1 | ; | |||||
188 | 81 | 0616574 | lod | Msg15 | ;'STRING ERROR' | @7063 | ||||
189 | 81+ | 1016165 | jmp | outerror0 | ; | |||||
190 | 82 | ; | ||||||||
191 | 82 | .22: | ; | |||||||
192 | 82 | calln | , | ; | @7064 | |||||
192+1 | 82 | 7300075100066 | lnk | arg2 | : | jmp | OutStr.16 | |||
193 | 83 | 0555126 | cls | W6742 | ; | @7065 | ||||
194 | 83+ | 1000020 | jmp | .1 | ; | |||||
195 | 84 | ; | ||||||||
196 | 84 | .23: | ; | |||||||
197 | 84 | 0540016 | cls | arg1 | ; | @7066 | ||||
198 | 84+ | 1140074 | jz | .18 | ; | |||||
199 | 85 | .24: | ; | |||||||
200 | 85 | 1120052 | jn | .13 | ;non-letter character | @7067 | ||||
201 | 85+ | 0175144 | bus | W6756 | ;=27 check for FS | |||||
202 | 86 | 1020033 | jn | .5 | ;non-letter, ignore | @7068 | ||||
203 | 86+ | 1100035 | jmp | .6 | ;letter check for specials | |||||
204 | 87 | ;-------------------------------------------------------------------- |