|
|
File: outstr.t2
For general comments see here
| 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 | | ;-------------------------------------------------------------------- |
|
|