ASM1130 CROSS ASSEMBLER V1.22 -- V2M12 -- Sun Nov 1 19:25:09 2020
Source File: \u2papt1.asm
PAPT1,PAPERTAPE LIBRARY SUBROUTINE
2 | *************************************************** U2D00020
3 | * * U2D00030
4 | * VERSION 2,MODIFICATION LEVEL 10 * U2D00035
5 | * SUBROUTINE NAME- * U2D00040
6 | * FULL NAME- N/A * U2D00050
7 | * CODE NAME- PAPT1 * U2D00060
8 | * PURPOSE-THIS PROGRAM OPERATES THE IBM 1134 * U2D00070
9 | * PAPER TAPE READER OR THE IBM 1055 PAPER * U2D00080
10 | * TAPE PUNCH,BUT ONLY ONE DEVICE AT A TIME. * U2D00090
11 | * METHOD- * U2D00100
12 | * SEE IBM 1130 SUBROUTINE LIBRARY MANUAL * U2D00110
13 | * CAPABILITIES AND LIMITATIONS- * U2D00120
14 | * SEE IBM 1130 SUBROUTINE LIBRARY MANUAL * U2D00130
15 | * SPECIAL FEATURES- N/A * U2D00140
16 | * ADDITIONAL INFORMATION- * U2D00150
17 | * ESTIMATED EXECUTION TIME- * U2D00160
18 | * SEE IBM 1130 SUBROUTINE LIBRARY MANUAL * U2D00170
19 | * * U2D00180
20 | *************************************************** U2D00190
21 | LIBR U2D00200
22 | ISS 03 PAPT1 4 U2D00210
0000 6918 23 | PAPT1 STX 1 XR1+1 CALL ENTRANCE (+0) U2D00220
0001 6580 0000 24 | LDX I1 *-* LOADER STORES TV ADDR (+2) U2D00230
0003 7006 25 | MDX STAR U2D00240
0004 0000 26 | INT1 DC 0 INTERRUPT ENTRANCE (+4) U2D00250
0005 7073 27 | MDX IPRG GO SERVICE THE INTERRUPT U2D00260
0006 00DD 28 | STOP DC /00DD PTTC/8 STOP CHAR U2D00270
0007 7F00 29 | DEL DC /7F00 PTTC/8 DELETE CHAR U2D00280
0008 0000 30 | SAVA DC 0 USED TO SAVE ACCUMULATOR U2D00290
0009 1800 31 | AREA DC /1800 AREA CODE U2D00300
000A 280F 32 | STAR STS XR1+2 SAVE STATUS U2D00310
000B D0FC 33 | STO SAVA SAVE A REG U2D00320
000C C010 34 | LD CSLA5 SET- UP FOR READER READY U2D00330
000D D02B 35 | STO SHIFT U2D00340
000E C100 36 | LD 1 *-* GET CONTROL PARAM U2D00350
000F 180C 37 | SRA 12 U2D00360
0010 4C20 001ER 38 | BSC L LEGAL,Z IS FUNCTION TEST U2D00370
0012 C057 39 | LD BUSY IS ROUTINE BUSY U2D00380
0013 4818 40 | BSC +- U2D00390
0014 7101 41 | MDX 1 1 NO, RET TO LIBF+2 U2D00400
0015 7101 42 | MDX 1 1 YES, RET TO LIBF+3 U2D00410
0016 C0F1 43 | RESET LD SAVA RESTORE A REG U2D00420
0017 6904 44 | STX 1 RET+1 SET UP RETURN U2D00430
0018 6500 0000 45 | XR1 LDX L1 0 RESTORE XR1 U2D00440
001A 2000 46 | LDS *-* RESTORE STATUS U2D00450
001B 4C00 0000 47 | RET BSC L 0 RETURN TO MAINLINE U2D00460
001D 1005 48 | CSLA5 SLA 5 TEST READER/PUNCH READY U2D00470
001E 9039 49 | LEGAL S TWO U2D00480
001F 4828 50 | BSC +Z IS FUNCTION READ U2D00490
0020 7009 51 | MDX READ YES,GO TEST ROUTINE BUSY U2D00500
0021 4808 52 | BSC + NO, IS FUNCTION PUNCH U2D00510
0022 7009 53 | MDX PUNCH YES,GO TEST ROUTINE BUSY U2D00520
0023 C005 54 | LD C3001 NO , ILLEGAL FUNCTION U2D00530
0024 71FF 55 | ERRET MDX 1 -1 U2D00540
0025 6D00 0028 56 | STX L1 40 U2D00550
0027 6129 57 | LDX 1 41 EXIT TO $PRET+1 U2D00560
0028 70EE 58 | MDX RESET+1 U2D00570
0029 3001 59 | C3001 DC /3001 ILLEGAL CALL ERROR CODE U2D00580
002A C02D 60 | READ LD FCRD READ FUNCTION = 010 EVEN U2D00590
002B 7003 61 | MDX PUNCH+3 U2D00600
002C C02C 62 | PUNCH LD FCPN PUNCH FUNCTION = 001 ODD U2D00610
002D 7402 0039R 63 | MDX L SHIFT,2 SHIFT TWO EXTRA FOR PUNCH U2D00620
002F D02A 64 | STO DEVIC U2D00630
0030 C039 65 | LD BUSY IS ROUTINE BUSY U2D00640
0031 4C20 0030R 66 | BSC L *-3,Z YES,LOOP TIL NOT U2D00650
0033 C026 67 | LD DEVIC NOT BUSY, CONSTRUCT IOCC U2D00660
0034 1008 68 | SLA 8 WORD TO CORRESPOND TO U2D00670
0035 E8D3 69 | OR AREA FUNCTION. U2D00680
0036 D038 70 | STO IOCC+1 STORE PROPER IOCC WORD U2D00690
0037 D039 71 | STO IOCC2+1 U2D00700
0038 0831 72 | XIO SENSE SENSE AND RESET U2D00710
0039 1005 73 | SHIFT SLA 5 U2D00720
003A 4828 74 | BSC +Z IS DEVICE READY U2D00730
003B 7028 75 | MDX ERRD NO,IT IS NOT U2D00740
003C C100 76 | LD 1 0 GET CONTROL PARAM U2D00750
003D E01D 77 | AND H0F00 IS CHECK DIGIT VALID U2D00760
003E 901D 78 | S H0100 U2D00770
003F 4C30 0023R 79 | BSC L ERRET-1,-Z NOT VALID,ERROR EXIT U2D00780
0041 D02A 80 | STO CHECK ZERO MEANS NO CHECK U2D00790
0042 C580 0001 81 | LD I1 1 I/O AREA PARAMETER U2D00800
0044 4C08 0023R 82 | BSC L ERRET-1,+ ERROR EXIT IF WD CNT NOT U2D00810
0046 D01F 83 | STO WDCNT PTV.IF PTV,SAVE. U2D00820
0047 C101 84 | LD 1 1 GET I/O AREA ADDR U2D00830
0048 8010 85 | A FCPN ADD 1 TO SKIP WD CNT U2D00840
0049 D014 86 | STO IOAR ST I/O AREA ADDR U2D00850
004A C102 87 | LD 1 2 STORE ERROR PARAMETER U2D00860
004B D029 88 | STO USERR+2 U2D00870
004C 1010 89 | SLA 16 U2D00880
004D D019 90 | STO CHAR SET CHAR CNT TO ZERO U2D00890
004E 7401 0032 91 | MDX L +50,1 INCR THE ISS COUNTER U2D00900
0050 1000 92 | NOP MAY SKIP U2D00910
93 | * INITIATE I/O OPERATION U2D00920
0051 C008 94 | LD DEVIC U2D00930
0052 D017 95 | STO BUSY SET ROUTINE BUSY INDICATOR U2D00940
0053 4804 96 | BSC E U2D00950
0054 7008 97 | MDX WRIT U2D00960
0055 0816 98 | XIO READS START READER U2D00970
0056 7103 99 | MAINR MDX 1 3 SET XR1 TO SKIP 3 PARAMS U2D00980
0057 70BE 100 | MDX RESET RETURN TO MAINLINE U2D00990
101 | * U2D01000
102 | *CONSTANTS U2D01010
103 | * U2D01020
0058 0002 104 | FCRD DC /0002 READ FUNCTION U2D01030
0058R 105 | TWO EQU FCRD DEFINE A CONSTANT OF 2 U2D01040
0059 0001 106 | FCPN DC /0001 PUNCH FUNCTION U2D01050
005A 0000 107 | DEVIC DC 0 ODD = PUNCH, EVEN = READ U2D01060
005B 0F00 108 | H0F00 DC /0F00 ISOLATE CHECK DIGIT U2D01070
005C 0100 109 | H0100 DC /0100 ONE AS THIRD HEX DIGIT U2D01080
110 | * U2D01090
111 | *INITIATE THE PUNCH OPERATION U2D01100
112 | * U2D01110
005D C400 0000 113 | WRIT LD L *-* GET FIRST WD FROM I/O AREA U2D01120
005ER 114 | IOAR EQU *-1 U2D01130
005F D008 115 | STO BUF PUT IN BUFFER FOR O/P U2D01140
0060 7401 0067R 116 | MDX L CHAR,1 ADD 1 TO CHARACTER COUNT U2D01150
0062 080B 117 | XIO IOCC PUNCH FIRST CHARACTER U2D01160
0063 70F2 118 | MDX MAINR RETURN TO MAINLINE U2D01170
0064 C00D 119 | ERRD LD C3000 DEVICE NOT READY ERROR U2D01180
0065 70BE 120 | MDX ERRET EXIT TO CORE LOC 41 U2D01190
121 | * U2D01200
122 | *CONSTANTS AND BUFFER AREA U2D01210
123 | * U2D01220
0066 0000 124 | WDCNT DC 0 WORD COUNT U2D01230
0067 0000 125 | CHAR DC 0 CHARACTER COUNT U2D01240
0068 0000 126 | BUF DC 0 CONTAINS WORD FOR I/O U2D01250
006A 127 | BSS E 0 U2D01260
006A 0000 128 | SENSE DC 0 SENSE DEVICE STATUS WD WITH U2D01270
006B 1F01 129 | DC /1F01 RESET- CONTROL WD U2D01280
006C 0000 130 | READS DC 0 START READER CONTROL WORD U2D01290
006D 1C10 131 | DC /1C10 U2D01300
006E 0068R 132 | IOCC DC BUF READ OR PUNCH CONTROL WORD U2D01310
006F 0000 133 | DC 0 U2D01320
0070 00E1R 134 | IOCC2 DC BUF2 U2D01330
0071 0000 135 | DC 0 U2D01340
006AR 136 | BUSY EQU SENSE ZERO=NOT BUSY,NON-ZERO=BUSY U2D01350
006CR 137 | CHECK EQU READS ZERO=NO CHECK MODE U2D01360
138 | * NON-ZERO= CHECK MODE U2D01370
008D 139 | $PST4 EQU /8D POST-OPERATIVE ERROR TRAP U2D01380
0072 3000 140 | C3000 DC /3000 DVC NOT RDY ERROR CODE U2D01390
141 | *************************************************** U2D01400
142 | * * U2D01410
143 | * THIS PORTION OF THE PROGRAM IS CALLED BY * U2D01420
144 | * INTERPT LEVEL 4, AND SERVICES THE OP COMPLETE * U2D01430
145 | * INTERPTS WHICH OCCUR AFTER THE DEVICE HAS * U2D01440
146 | * READ OR PUNCHED ONE CHAR. IF AN ERROR HAS * U2D01450
147 | * OCCURRED,THE PROGRAM EXITS TO THE USER-WRITTEN* U2D01460
148 | * ERROR ROUTINE. * U2D01470
149 | * U2D01480
150 | *************************************************** U2D01490
151 | *THIS SECTION CALLS THE USERS ERROR RTN. IF HE U2D01500
152 | *RETURNS ZERO IN THE A REG, TERMINATE IMMEDIATELY. U2D01510
153 | * U2D01520
0073 0000 154 | USERR DC 0 U2D01530
0074 4400 0000 155 | BSI L 0 USERS ERROR EXIT U2D01540
0076 4CA0 0073R 156 | BSC I USERR,Z RETURN TO TRY AGAIN U2D01550
0078 700D 157 | MDX IRET TERMINATE IF A REG=ZERO U2D01560
0079 08F0 158 | IPRG XIO SENSE SENSE AND RESET U2D01570
159 | * READ ERROR WAS HANDLED RIGHT AFTER U2D01580
160 | * CHARACTER WAS READ U2D01590
007A 1001 161 | SLA 1 U2D01600
007B 4C28 00A4R 162 | BSC L READI,+Z READER SERVICE REQUEST U2D01610
163 | * U2D01700
164 | *THIS SECTION IS ENTERED ASSUMING A PUNCH SERVICE U2D01710
165 | *REQUEST. IT IS ASSUMED THAT ALL IS READY TO U2D01720
166 | *INITIATE ANOTHER PUNCH OPERATION. U2D01730
167 | * U2D01740
007D 4057 168 | BSI CHKS CHECK FOR STOP CHAR U2D01750
007E C0E8 169 | LD CHAR GET CHARACTER COUNT U2D01760
007F 4C04 00A1R 170 | BSC L ODDC,E BR IF ODD TO PNCH 2ND CHAR U2D01770
171 | * U2D01780
172 | *AN EVEN CHAR COUNT MEANS A COMPLETE WD HAS BEEN U2D01790
173 | *PUNCHED. U2D01800
174 | * U2D01810
0081 1010 175 | SLA 16 ZERO THE CHAR CNT U2D01820
0082 D0E4 176 | STO CHAR U2D01830
0083 74FF 0066R 177 | MDX L WDCNT,-1 DECREMENT WORD COUNT U2D01840
0085 7007 178 | MDX NEXT GO PNCH NEXT CHAR U2D01850
179 | * U2D01860
180 | *THIS SECTION DOES A FINAL EXIT ON ZERO WD CNT OR U2D01870
181 | *ON A STOP CHAR. U2D01880
182 | * U2D01890
0086 1010 183 | IRET SLA 16 TURN OFF BUSY INDR U2D01900
0087 D0E2 184 | STO BUSY TURN OFF BUSY U2D01910
0088 74FF 0032 185 | MDX L +50,-1 DECR ISS COUNTER U2D01920
008A 1000 186 | NOP MAY SKIP U2D01930
008B 4C80 0004R 187 | BSC I INT1 RETURN TO MAINLINE U2D01940
188 | * U2D01950
189 | *THIS SECTION INITIATES THE NEXT PUNCH U2D01960
190 | * U2D01970
008D 7401 005ER 191 | NEXT MDX L IOAR,1 INCR I/O AREA ADDR TO U2D01980
008F C480 005ER 192 | LD I IOAR GET NEXT WORD U2D01990
0091 D0D6 193 | STO BUF NEXT WORD IS IN BUF U2D02000
0092 08D7 194 | XIO SENSE IS PUNCH READY U2D02010
0093 1007 195 | SLA 7 U2D02020
0094 4C10 009DR 196 | BSC L X2,- YES,GO PUNCH U2D02030
0096 C005 197 | LD H0004 NO,LD ERROR CODE AND EXIT U2D02040
0097 40DB 198 | BSI USERR TO USERS ERROR RTN U2D02050
0098 C0D9 199 | LD C3000 U2D02060
0099 4400 008D 200 | BSI L $PST4 U2D02070
009B 70F6 201 | MDX NEXT+5 IF RETRY,GO SENSE PUNCH U2D02080
009C 0004 202 | H0004 DC /0004 PUNCH NOT READY ERROR CODE U2D02090
009D 7401 0067R 203 | X2 MDX L CHAR,1 INCR CHAR COUNT U2D02100
009F 08CE 204 | XIO IOCC PUNCH 1 CHARACTER U2D02110
00A0 70EA 205 | MDX IRET+5 RETURN TO MAINLINE U2D02120
206 | * U2D02130
207 | *CHAR COUNT IS ODD,SO PUNCH SECOND CHAR OF WORD U2D02140
208 | * U2D02150
00A1 C0C6 209 | ODDC LD BUF PUT SECOND CHAR IN POSITION U2D02160
00A2 1008 210 | SLA 8 TO BE PUNCHED U2D02170
00A3 70ED 211 | MDX NEXT+4 RET TO PUT INTO BUF U2D02180
212 | * U2D02190
213 | *THIS SECTION IS ENTERED IN RESPONSE TO A READER U2D02200
214 | *SERVICE REQUEST. NO READ ERRORS CAN BE DETECTED. U2D02210
215 | * U2D02220
216 | * READ SERVICE REQUEST U2D02230
00A4 1010 217 | READI SLA 16 CLEAR BUFFER WORD U2D02240
00A5 D0C2 218 | STO BUF U2D02250
00A6 08C7 219 | XIO IOCC READ 1 CHARACTER U2D02260
00A7 08C2 220 | XIO SENSE SENSE AND RESET U2D02270
00A8 C0C3 221 | LD CHECK IS IT CHK MODE U2D02360
00A9 4C18 00B0R 222 | BSC L NODEL,+- NO,GO STORE CHAR U2D02370
00AB C0BC 223 | LD BUF YES,CHK FOR DELETE CODE U2D02380
00AC 9400 0007R 224 | S L DEL IF DELETE,DO NOT STORE. U2D02390
00AE 4C18 00C4R 225 | BSC L ODDCR+1,+- U2D02400
00B0 7401 0067R 226 | NODEL MDX L CHAR,1 ADD 1 TO CHARACTER COUNT U2D02410
00B2 C0B4 227 | LD CHAR CHK PARITY OF CHAR CNT TO U2D02420
00B3 4C04 00D1R 228 | BSC L ODDC2,E REF 1ST OR 2ND HALF OF WD. U2D02430
229 | * U2D02440
230 | *EVEN CHAR COUNT MEANS SECOND CHAR OD THE WORD WAS U2D02450
231 | *JUST READ. U2D02460
232 | * U2D02470
00B5 1010 233 | SLA 16 SET CHAR CNT TO ZERO U2D02480
00B6 D0B0 234 | STO CHAR U2D02490
00B7 C0B0 235 | LD BUF GET CHAR JUST READ U2D02500
00B8 1808 236 | SRA 8 PUT IN RT HALF OF A REG U2D02510
00B9 EC80 005ER 237 | OR I IOAR COMBINE 2 CHARACTERS INTO U2D02520
00BB D480 005ER 238 | STO I IOAR * ONE WORD U2D02530
00BD 74FF 0066R 239 | MDX L WDCNT,-1 DECREMENT WORD COUNT U2D02540
00BF 7001 240 | MDX *+1 U2D02550
00C0 70C5 241 | MDX IRET RETURN ON ZERO WORD COUNT U2D02560
00C1 7401 005ER 242 | MDX L IOAR,1 INCR I/O AREA ADDR-NEXT WD U2D02570
243 | * U2D02580
244 | *THIS SECTION STARTS THE READER. U2D02590
245 | * U2D02600
00C3 4011 246 | ODDCR BSI CHKS CHK FOR STOP CHAR U2D02610
00C4 08A5 247 | XIO SENSE IS READER READY U2D02620
00C5 1005 248 | SLA 5 U2D02630
00C6 4C10 00CFR 249 | BSC L X1,- YES,GO START READER U2D02640
00C8 C005 250 | LD H0005 U2D02650
00C9 40A9 251 | BSI USERR NO, EXIT TO USERS ERROR RTN U2D02660
00CA C0A7 252 | LD C3000 U2D02670
00CB 4400 008D 253 | BSI L $PST4 U2D02680
00CD 70F6 254 | MDX ODDCR+1 RETRY-- GO SENSE READER U2D02690
00CE 0005 255 | H0005 DC /0005 READER NOT RDY ERROR CODE U2D02700
00CF 089C 256 | X1 XIO READS START READER U2D02710
00D0 70BA 257 | MDX IRET+5 RETURN TO MAINLINE U2D02720
258 | * U2D02730
259 | *ODD CHAR CNT MEANS FIRST CHAR OF WD WAS JUST READ. U2D02740
260 | * U2D02750
00D1 C096 261 | ODDC2 LD BUF STORE CHAR IN FIRST HALF U2D02760
00D2 D480 005ER 262 | STO I IOAR OF THE O/P WD. U2D02770
00D4 70EE 263 | MDX ODDCR GO START READER U2D02780
264 | * U2D02790
265 | *THIS SECTION DOES A CHECK FOR A STOP CHARACTER. U2D02800
266 | * U2D02810
00D5 0000 267 | CHKS DC 0 SAVE RET ADDR U2D02820
00D6 C095 268 | LD CHECK IS IT CHK MODE U2D02830
00D7 4C98 00D5R 269 | BSC I CHKS,+- NO, RETURN U2D02840
00D9 C400 0068R 270 | LD L BUF YES,CONTINUE WITH CHK U2D02850
00DB 1808 271 | SRA 8 U2D02860
00DC 9400 0006R 272 | S L STOP IS IT A STOP CHAR U2D02870
00DE 4CA0 00D5R 273 | BSC I CHKS,Z NO, RETURN U2D02880
00E0 70A5 274 | MDX IRET YES, TERMINATE U2D02890
00E1 0000 275 | BUF2 DC 0 DELETE O/P BUFFER U2D02900
276 | * U2D02920
277 | *THIS SECTION PUNCHES A DELETE CHAR IF CHK MODE. U2D02930
278 | * U2D02940
00E2 279 | END U2D02950
There were no errors in this assembly
=== CROSS REFERENCES ==========================================================
Name Val Defd Referenced
$PST4 008D 139 200 253
AREA 0009R 31 69
BUF 0068R 126 115 132 193 209 218 223 235 261 270
BUF2 00E1R 275 134
BUSY 006AR 136 39 65 95 184
C3000 0072R 140 119 199 252
C3001 0029R 59 54
CHAR 0067R 125 90 116 169 176 203 226 227 234
CHECK 006CR 137 80 221 268
CHKS 00D5R 267 168 246 269 273
CSLA5 001DR 48 34
DEL 0007R 29 224
DEVIC 005AR 107 64 67 94
ERRD 0064R 119 75
ERRET 0024R 55 79 82 120
FCPN 0059R 106 62 85
FCRD 0058R 104 60 105
H0004 009CR 202 197
H0005 00CER 255 250
H0100 005CR 109 78
H0F00 005BR 108 77
INT1 0004R 26 187
IOAR 005ER 114 86 191 192 237 238 242 262
IOCC 006ER 132 70 117 204 219
IOCC2 0070R 134 71
IPRG 0079R 158 27
IRET 0086R 183 157 205 241 257 274
LEGAL 001ER 49 38
MAINR 0056R 99 118
NEXT 008DR 191 178 201 211
NODEL 00B0R 226 222
ODDC 00A1R 209 170
ODDC2 00D1R 261 228
ODDCR 00C3R 246 225 254 263
PAPT1 0000R 23
PUNCH 002CR 62 53 61
READ 002AR 60 51
READI 00A4R 217 162
READS 006CR 130 98 137 256
RESET 0016R 43 58 100
RET 001BR 47 44
SAVA 0008R 30 33 43
SENSE 006AR 128 72 136 158 194 220 247
SHIFT 0039R 73 35 63
STAR 000AR 32 25
STOP 0006R 28 272
TWO 0058R 105 49
USERR 0073R 154 88 156 198 251
WDCNT 0066R 124 83 177 239
WRIT 005DR 113 97
X1 00CFR 256 249
X2 009DR 203 196
XR1 0018R 45 23 32