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