ASM1130 CROSS ASSEMBLER V1.22 -- V2M12 -- Sun Nov 1 19:25:09 2020 Source File: \u2pnch0.asm 1 | * HDNG 1442-5 CARD PUNCH IOCS ROUTINE U2H00010 2 | *************************************************** U2H00020 3 | *STATUS- CHANGE LEVEL 000 * U2H00030 4 | *FUNCTION/OPERATION- * U2H00040 5 | * THIS 1130 SUBROUTINE OPERATES THE 1442-5 * U2H00050 6 | * CARD PUNCH. IT INITIATES REQUESTED OPERA- * U2H00060 7 | * TIONS, PROCESSES ANY COLUMN OR OPERATION * U2H00070 8 | * COMPLETE INTERRUPTS, AND AUTOMATICALLY * U2H00080 9 | * INITIATES ERROR RECOVERY PROCEDURES. * U2H00090 10 | * * U2H00100 11 | * IDENTIFYING FEATURE - NO ERROR PARAMETER * U2H00110 12 | *ENTRY POINTS- * U2H00120 13 | * 1. PNCH0 CALL ENTRANCE FOR TEST, PUNCH * U2H00130 14 | * OR FEED OPERATIONS. * U2H00140 15 | * E.G. LIBF PNCH0 * U2H00150 16 | * DC /2000 * U2H00160 17 | * DC IOBUF * U2H00170 18 | * 2. INT1 COLUMN INTERRUPT ENTRY POINT. * U2H00180 19 | * 3. INT2 OPERATION COMPLETE INTERRUPT ENTRY* U2H00190 20 | * POINT. * U2H00200 21 | *INPUT- NONE OTHER THAN FROM THE PARAMETERS IN * U2H00210 22 | * LIBF CALLING SEQUENCE. * U2H00220 23 | * VALID PARAMETERS ARE- * U2H00230 24 | * /0000 TEST * U2H00240 25 | * /2000 PUNCH * U2H00250 26 | * /3000 FEED * U2H00260 27 | *OUTPUT- SUBR WILL PUNCH UP TO 80 COLUMNS FROM * U2H00270 28 | * I/O BUFFER TO CARD AS SPECIFIED BY CALL. * U2H00280 29 | * THE LEFT 12 BITS FROM EACH I/O BUFFER WORD * U2H00290 30 | * ARE PUNCHED INTO THE CARD COLUMNS. * U2H00300 31 | *EXTERNAL SUBROUTINES- NONE. * U2H00310 32 | *EXITS- * U2H00320 33 | * NORMAL- * U2H00330 34 | * 1. CA34 IF NO PRE-OP ERROR HAS BEEN DE- * U2H00340 35 | * TECTED, THE EXIT FROM CA34 IS BACK* U2H00350 36 | * TO THE CALLER AFTER THE REQUESTED * U2H00360 37 | * 1442 OPERATION HAS BEEN INITIATED * U2H00370 38 | * 2. NT22 THE EXIT FROM NT22 IS BACK TO THE* U2H00380 39 | * CALLER VIA ILS00 AFTER THE COLUMN * U2H00390 40 | * INTERRUPT IS SERVICED. * U2H00400 41 | * 3. NT10X-1 CONTROL RETURNS TO CALLERS PRO- * U2H00410 42 | * GRAM VIA ILS04 AFTER OP COMPLETE * U2H00420 43 | * PROCESSING HAS BEEN FINISHED. * U2H00430 44 | * ERROR- * U2H00440 45 | * 1. CA34 IF A PRE-OP ERROR OR NOT READY * U2H00450 46 | * CONDITION IS DETECTED, THE SUBR * U2H00460 47 | * WILL BRANCH TO HEX 0029 VIA CA34 * U2H00470 48 | * AND DISPLAY ONE OF TWO CODES IN * U2H00480 49 | * ACCUMULATOR. * U2H00490 50 | * 1000 IS DISPLAYED IF 1442 IS NOT * U2H00500 51 | * READY. 1001 IS DISPLAYED IF AN * U2H00510 52 | * ERROR IS DISCOVERED IN CALLING * U2H00520 53 | * PARAMETERS OR AREAS REFERENCED BY * U2H00530 54 | * THEM. * U2H00540 55 | *TABLES/WORK AREAS- NONE. * U2H00550 56 | *ATTRIBUTES- REUSABLE. * U2H00560 57 | *NOTES- THIS SUBR CONTAINS NO WAIT INSTRUCTIONS. * U2H00570 58 | *************************************************** U2H00580 59 | LIBR U2H00590 0000 60 | 1130 ISS 01 PNCH0 0 4 U2H00600 61 | *************************************************** U2H00610 62 | * LOADER DEFINED LOCATIONS * U2H00620 63 | *************************************************** U2H00630 0000 6945 64 | PNCH0 STX 1 CA30+1 LIBF ENTRANCE (+0) U2H00640 0001 6580 0000 65 | LINK LDX I1 0 LOADER STORES TV ADDR (+2) U2H00650 0003 7006 66 | MDX CA10 TO PROCESS CALL U2H00660 0004 0000 67 | INT1 DC 0 COLUMN INTERRUPT (+4) U2H00670 0005 4C00 00BCR 68 | BSC L NT14 U2H00680 0007 0000 69 | INT2 DC 0 OP CMPLTE INTERRUPT (+7) U2H00690 0008 4C00 0086R 70 | BSC L NT10 U2H00700 71 | *************************************************** U2H00710 72 | * LIBF PROCESSING * U2H00720 73 | *************************************************** U2H00730 74 | * THIS PORTION STORES CALLING SEQUENCE INFO * U2H00740 75 | * AND CHECKS THE DEVICE STATUS BEFORE ANY I/O * U2H00750 76 | * OPERATION IS INITIATED. A CALLING ERROR OR * U2H00760 77 | * NOT READY 1442 CAUSES AN ERROR EXIT TO * U2H00770 78 | * LOCATION 41. IF THE OPERATION WILL CAUSE * U2H00780 79 | * INTERRUPTS, THE ROUTINE IS SET BUSY AND THE * U2H00790 80 | * IOCS COUNTER IS INCREMENTED TO INDICATE * U2H00800 81 | * INTERRUPT(S) PENDING. * U2H00810 82 | *************************************************** U2H00820 000A D065 83 | CA10 STO TEMP SAVE STATUS U2H00830 000B 283D 84 | STS CA32 U2H00840 000C 6A3B 85 | STX 2 CA31+1 U2H00850 000D C100 86 | LD 1 0 X1= ADDR OF CALL+1 U2H00860 000E 180C 87 | SRA 12 IS FUNCTION TEST U2H00870 000F 4C20 0015R 88 | BSC L CA14,Z NO U2H00880 0011 C062 89 | LD BUSY YES, IS ROUTINE BUSY U2H00890 0012 4818 90 | BSC +- SKIP IF YES U2H00900 0013 7101 91 | MDX 1 +1 NO, EXIT TO CALL+3 U2H00910 0014 702D 92 | MDX CA28 YES, EXIT TO CALL+2 U2H00920 0015 9061 93 | CA14 S D0004 IS FUNCTION LEGAL U2H00930 0016 4C30 0057R 94 | BSC L CA40,Z- NO, ERROR U2H00940 0018 8061 95 | A H7003 RESULT WILL BE 7003, 7002 U2H00950 0019 D00B 96 | STO CA20 *7001, OR 7000 U2H00960 001A 8057 97 | A CONST MODIFY THE COMMAND U2H00970 001B D007 98 | STO CA18 *AT CA18 U2H00980 001C C057 99 | CA15 LD BUSY IS ROUTINE BUSY U2H00990 001D 4C20 001CR 100 | BSC L CA15,Z YES, WAIT TIL NOT U2H01000 001F 0852 101 | CA17 XIO SENSE-1 IS DEVICE READY U2H01010 0020 4C04 0059R 102 | BSC L CA42,E NO, ERROR U2H01020 0022 C050 103 | LD SENSE SETUP CONTROL IOCC U2H01030 0023 905B 104 | CA18 S SETUP MODIFIED INSTRUC U2H01040 0024 D04C 105 | STO INIT U2H01050 0025 7000 106 | CA20 MDX CA20+1 WHAT IS FUNCTION U2H01060 0026 7030 107 | MDX CA40 READ IS ILLEGAL U2H01070 0027 7024 108 | MDX CA36 = PUT --PUNCH-- U2H01080 0028 7005 109 | MDX CA25 = FEED U2H01090 0029 702D 110 | MDX CA40 STK IS ILLEGAL U2H01100 002A C101 111 | CA24 LD 1 1 SAVE DATA ADDRESS U2H01110 002B D042 112 | STO COLM U2H01120 002C D051 113 | STO RSTRT+1 U2H01130 002D 7101 114 | MDX 1 +1 SET X1 TO SKIP 2ND PARAM U2H01140 002E 0843 115 | CA25 XIO SENSE-1 U2H01150 002F 1003 116 | SLA 3 IS LAST CARD IND ON U2H01160 0030 4C10 0037R 117 | BSC L CA25B,- NO U2H01170 0032 C0F2 118 | LD CA20 IS FUNCTION A FEED U2H01180 0033 4C04 0037R 119 | BSC L CA25B,E NO, PUNCH U2H01190 0035 083E 120 | XIO FEED-1 EJECT CARD U2H01200 0036 702C 121 | MDX CA43 TO DISPLAY NR CODE U2H01210 0037 7401 0032 122 | CA25B MDX L 50,+1 INCREMENT IOCS COUNTER U2H01220 0039 1000 123 | NOP U2H01230 003A C03B 124 | LD D0001 U2H01240 003B D038 125 | STO BUSY SET ROUTINE BUSY U2H01250 003C C03F 126 | CA26 LD ERROR U2H01260 003D 4C20 0041R 127 | BSC L CA27,Z U2H01270 003F 0830 128 | XIO INIT-1 INITIATE I/O U2H01280 0040 7001 129 | MDX CA28 SKIP FEED OPERATION U2H01290 0041 0832 130 | CA27 XIO FEED-1 U2H01300 0042 7101 131 | CA28 MDX 1 +1 U2H01310 0043 C02C 132 | LD TEMP U2H01320 0044 6906 133 | CA29 STX 1 CA34+1 SET EXIT TO SKIP 1ST PARAM U2H01330 0045 6500 0000 134 | CA30 LDX L1 0 RESTORE STATUS U2H01340 0047 6600 0000 135 | CA31 LDX L2 0 *AND INDEX REGISTERS U2H01350 0049 2000 136 | CA32 LDS 0 U2H01360 004A 4C00 0000 137 | CA34 BSC L 0 EXIT U2H01370 004C 9037 138 | CA36 S SETUP+5 U2H01380 004D D021 139 | STO COLM+1 SETUP PUNCH I/O U2H01390 004E C580 0001 140 | LD I1 1 U2H01400 0050 4C08 0057R 141 | BSC L CA40,+ = ERROR IF ZERO OR NEG U2H01410 0052 D028 142 | STO COUNT U2H01420 0053 D029 143 | STO RSTRT SAVE WORD COUNT U2H01430 0054 9024 144 | S D0080 DO NOT PUNCH OVER 80 COL U2H01440 0055 4808 145 | BSC + SKIP ON ERROR U2H01450 0056 70D3 146 | MDX CA24 GO GET DATA U2H01460 0057 C02B 147 | CA40 LD H1001 ERROR CODE - ILLEGAL CALL U2H01470 0058 700B 148 | MDX CA44 TO ERROR EXIT --LOC 41 U2H01480 0059 1801 149 | CA42 SRA 1 IS DEVICE BUSY U2H01490 005A 4C04 001FR 150 | BSC L CA17,E YES, WAIT TIL NOT U2H01500 005C 1003 151 | SLA 3 IS DSW ERROR INDIC ON U2H01510 005D 4C10 0063R 152 | BSC L CA43,- NO U2H01520 005F C0C5 153 | LD CA20 YES, IS FUNCT FEED U2H01530 0060 4C04 0063R 154 | BSC L CA43,E NO U2H01540 0062 D019 155 | STO ERROR YES, INDIC SKIP 1ST CD U2H01550 0063 C01E 156 | CA43 LD H1000 ERROR CODE - DVCE NOT RDY U2H01560 0064 71FF 157 | CA44 MDX 1 -1 U2H01570 0065 6D00 0028 158 | STX L1 40 STORE CALL ADDR IN 40 U2H01580 0067 6129 159 | LDX 1 41 SET EXIT FOR 41 U2H01590 0068 70DB 160 | MDX CA29 TO SOFT ERROR TRAP U2H01600 161 | *************************************************** U2H01610 162 | * CONSTANTS * U2H01620 163 | *************************************************** U2H01630 006A 164 | BSS E 0 U2H01640 006A 0000 165 | SENSR DC 0 O U2H01650 006B 1702 166 | DC /1702 SENSE-RESET OP.COMPL.INT.E U2H01660 006C 0084R 167 | ADDR DC PLC-1 ADDR TO REPLACE O/P AREA E U2H01670 006D 1701 168 | CHAR DC /1701 SENSE-RESET COL.INTRP. O U2H01680 006E 0000 169 | COLM DC 0 IOCC FOR COLUMN I/O E U2H01690 006F 0000 170 | DC 0 IOCC FOR PUNCH O U2H01700 0070 0000 171 | TEMP DC 0 TEMPORARY STORAGE U2H01710 0071 0400 172 | INIT DC /0400 IOCC TO INITIATE I/O O U2H01720 0072 205B 173 | CONST DC SETUP-CA18-1+/2000 U2H01730 0073 1700 174 | SENSE DC /1700 SENSE DSW WITHOUT RESET O U2H01740 0074 0000 175 | BUSY DC 0 ROUTINE BUSY INDICATOR U2H01750 0075 1402 176 | FEED DC /1402 IOCC TO FEED 1 CARD O U2H01760 0076 0001 177 | D0001 DC +1 CONSTANT U2H01770 0077 0004 178 | D0004 DC +4 CONSTANT U2H01780 0078 0008 179 | D0008 DC +8 CONSTANT U2H01790 0079 0050 180 | D0080 DC +80 CONSTANT U2H01800 007A 7003 181 | H7003 DC /7003 INSTRUCTIONS = MDX X +3 U2H01810 007B 0000 182 | COUNT DC 0 NO. WORDS TO XFER U2H01820 007C 0000 183 | ERROR DC 0 SKIP ONE CARD INDIC U2H01830 007D 0000 184 | RSTRT DC 0 RESTART INFO - WORD COUNT U2H01840 007E 0000 185 | DC 0 DATA ADDR U2H01850 007F 02FC 186 | SETUP DC /02FC INITIATE IOCC SETUP - GET U2H01860 0080 02FF 187 | DC /02FF - PUT U2H01870 0081 02FE 188 | DC /02FE - FEED U2H01880 0082 1000 189 | H1000 DC /1000 CONSTANT U2H01890 0083 1001 190 | H1001 DC /1001 CONSTANT U2H01900 0084 0301 191 | DC /0301 - PUT U2H01910 0085 0000 192 | PLC DC *-* WD FOR LAST CHAR PUNCHED U2H01920 008D 193 | $PST4 EQU /8D POST-OPERATIVE ERROR TRAP U2H01930 194 | *************************************************** U2H01940 195 | * OP COMPLETE INTERRUPT PROCESSING * U2H01950 196 | *************************************************** U2H01960 197 | * THIS PORTION IS ENTERED FROM INTERR LEVEL * U2H01970 198 | * SROUTINE 04. IF NO ERROR HAS BEEN DETECTED, * U2H01980 199 | * THE ROUTINE IS SET NOT BUSY AND THE IOCS * U2H01990 200 | * COUNTER IS DECREMENTED TO INDICATE * U2H02000 201 | * INTERRUPT PROCESSING COMPLETED. OTHERWISE * U2H02010 202 | * THE SUBR.WAITS AT THE POST-OPERATIVE ERROR- * U2H02020 203 | * TRAP UNTIL THE OPERATOR HAS * U2H02030 204 | * INTERVENED AND THE 1442 BECOMES READY, AT * U2H02040 205 | * WHICH TIME THE CARDS ARE POSITIONED AND THE * U2H02050 206 | * I/O OPERATION IS RE-INITIATED. * U2H02060 207 | *************************************************** U2H02070 0086 08E3 208 | NT10 XIO SENSR SENSE DSW WITH RESET U2H02080 0087 1003 209 | SLA 3 IS OPERATION OK U2H02090 0088 4C02 009FR 210 | BSC L NT11,C NO, ERROR U2H02100 008A 4C28 0099R 211 | NT10B BSC L NT10X,Z+ NO, LAST CARD U2H02110 008C C0EF 212 | LD ERROR TEST THE SKIP CARD INDIC U2H02120 008D 1002 213 | SLA 2 SET CARRY ON IF BITS 0 U2H02130 008E 1810 214 | SRA 16 *OR 1 ARE ON U2H02140 008F D0EC 215 | STO ERROR U2H02150 0090 4C02 00A3R 216 | BSC L NT12,C YES, INITIATE FUNCT U2H02160 0092 74FF 0032 217 | NT10E MDX L 50,-1 NO, TERMINATE FUNCT U2H02170 0094 1000 218 | NOP DECREMENT IOCS COUNT U2H02180 0095 1810 219 | SRA 16 U2H02190 0096 D0DD 220 | STO BUSY CLEAR ROUTINE BUSY U2H02200 0097 4C80 0007R 221 | BSC I INT2 EXIT U2H02210 0099 C0D2 222 | NT10X LD ADDR ENTERED WHEN LAST CARD U2H02220 009A 80DB 223 | A D0001 *INDICATOR IS ON U2H02230 009B F0D2 224 | EOR COLM IS FUNCTION PUT U2H02240 009C 4818 225 | BSC +- NO U2H02250 009D 08D6 226 | XIO FEED-1 YES, EJECT LAST CD U2H02260 009E 70F3 227 | MDX NT10E TO TERMINATE U2H02270 009F C0D1 228 | NT11 LD INIT IS FUNCT PUNCH U2H02280 00A0 4C04 00A3R 229 | BSC L NT12,E YES, DONT SKIP U2H02290 00A2 7010 230 | MDX NT13B FUNCT IS FEED U2H02300 00A3 08C8 231 | NT12 XIO CHAR-1 U2H02310 00A4 4C04 00B8R 232 | BSC L NT13C,E TO ERROR TRAP IF NOT READY U2H02320 00A6 C0D5 233 | LD ERROR IS CARD SKIP NECESSARY U2H02330 00A7 4C18 00ACR 234 | BSC L NT13,+- NO U2H02340 00A9 08CA 235 | XIO FEED-1 SKIP 1ST CARD U2H02350 00AA 4C80 0007R 236 | BSC I INT2 EXIT THROUGH ILS04 U2H02360 00AC C0D0 237 | NT13 LD RSTRT GET I/O WD CNT U2H02370 00AD D0CD 238 | STO COUNT SETUP FOR RETRY U2H02380 00AE C0CF 239 | LD RSTRT+1 SET UP BUFFER ADDR U2H02390 00AF D0BE 240 | STO COLM U2H02400 00B0 08BF 241 | XIO INIT-1 INITIATE I/O OPERATION U2H02410 00B1 4C80 0007R 242 | BSC I INT2 EXIT U2H02420 00B3 4C02 00A3R 243 | NT13B BSC L NT12,C MO SKIP IF FD CHK (RD) U2H02430 00B5 C0C4 244 | LD H7003 U2H02440 00B6 D0C5 245 | STO ERROR U2H02450 00B7 70EB 246 | MDX NT12 U2H02460 247 | * U2H02470 00B8 C0C9 248 | NT13C LD H1000 NOT READY ERROR CODE U2H02480 00B9 4400 008D 249 | BSI L $PST4 POST-OPERATIVE ERROR TRAP U2H02490 00BB 70E7 250 | MDX NT12 TRY AGAIN U2H02500 251 | *************************************************** U2H02510 252 | * COLUMN INTERRUPT PROCESSING * U2H02520 253 | *************************************************** U2H02530 254 | * THIS PORTION IS ENTERED FROM INTERR LEVEL * U2H02540 255 | * SUBROUTINE 00. * U2H02550 256 | * WHEN THE LAST COLUMN REQUESTED IS * U2H02560 257 | * PUNCHED, AN INDICATION IS GIVEN TO THE 1442 * U2H02570 258 | * TO INITIATE AN OP COMPLETE INTERRUPT. * U2H02580 259 | *************************************************** U2H02590 00BC 08AF 260 | NT14 XIO CHAR-1 SENSE WITH RESET U2H02600 00BD 74FF 007BR 261 | MDX L COUNT,-1 ANY MORE COLS TO PROCESS U2H02610 00BF 7008 262 | MDX NT18 YES U2H02620 00C0 7401 006ER 263 | NT16 MDX L COLM,+1 NO, STORE STOP PUNCH U2H02630 00C2 C480 006ER 264 | LD I COLM *BIT (BIT 12) IN COL U2H02640 00C4 E8B3 265 | OR D0008 DATA U2H02650 00C5 D0BF 266 | STO PLC U2H02660 00C6 C0A5 267 | LD ADDR PUNCH FROM TEMPORARY U2H02670 00C7 D0A6 268 | STO COLM *LOCATION U2H02680 00C8 7401 006ER 269 | NT18 MDX L COLM,+1 SET ADDR FOR NEXT COLUMN U2H02690 00CA 08A3 270 | NT20 XIO COLM EXECUTE COLUMN I/O U2H02700 00CB 4C80 0004R 271 | NT22 BSC I INT1 EXIT U2H02710 00CD 272 | END U2H02720 There were no errors in this assembly === CROSS REFERENCES ========================================================== Name Val Defd Referenced $PST4 008D 193 249 ADDR 006CR 167 222 267 BUSY 0074R 175 89 99 125 220 CA10 000AR 83 66 CA14 0015R 93 88 CA15 001CR 99 100 CA17 001FR 101 150 CA18 0023R 104 98 173 CA20 0025R 106 96 118 153 CA24 002AR 111 146 CA25 002ER 115 109 CA25B 0037R 122 117 119 CA26 003CR 126 CA27 0041R 130 127 CA28 0042R 131 92 129 CA29 0044R 133 160 CA30 0045R 134 64 CA31 0047R 135 85 CA32 0049R 136 84 CA34 004AR 137 133 CA36 004CR 138 108 CA40 0057R 147 94 107 110 141 CA42 0059R 149 102 CA43 0063R 156 121 152 154 CA44 0064R 157 148 CHAR 006DR 168 231 260 COLM 006ER 169 112 139 224 240 263 264 268 269 270 CONST 0072R 173 97 COUNT 007BR 182 142 238 261 D0001 0076R 177 124 223 D0004 0077R 178 93 D0008 0078R 179 265 D0080 0079R 180 144 ERROR 007CR 183 126 155 212 215 233 245 FEED 0075R 176 120 130 226 235 H1000 0082R 189 156 248 H1001 0083R 190 147 H7003 007AR 181 95 244 INIT 0071R 172 105 128 228 241 INT1 0004R 67 271 INT2 0007R 69 221 236 242 LINK 0001R 65 NT10 0086R 208 70 NT10B 008AR 211 NT10E 0092R 217 227 NT10X 0099R 222 211 NT11 009FR 228 210 NT12 00A3R 231 216 229 243 246 250 NT13 00ACR 237 234 NT13B 00B3R 243 230 NT13C 00B8R 248 232 NT14 00BCR 260 68 NT16 00C0R 263 NT18 00C8R 269 262 NT20 00CAR 270 NT22 00CBR 271 PLC 0085R 192 167 266 PNCH0 0000R 64 RSTRT 007DR 184 113 143 237 239 SENSE 0073R 174 101 103 115 SENSR 006AR 165 208 SETUP 007FR 186 104 138 173 TEMP 0070R 171 83 132