ASM1130 CROSS ASSEMBLER V1.22 -- V2M12 -- Sun Nov 1 19:25:09 2020 Source File: \u2read1.asm READ1,2501 CARD READ ROUTINE 2 | *************************************************** U2M00020 3 | *TITLE- READ1 * U2M00030 4 | *STATUS- CHANGE LEVEL 000 * U2M00040 5 | *FUNCTION/OPERATION- * U2M00050 6 | * THIS 1130 SUBROUTINE OPERATES THE PRIMARY * U2M00060 7 | * 2501 CARD READER. IT INITIATES REQSTD * U2M00070 8 | * OPERATIONS, PROCESSES OPERATION COMPLETE * U2M00080 9 | * INTERRUPTS,INITIATES EXITS TO USERS ERR.RTN.* U2M00090 10 | * WHEN AN ERROR OR LAST CARD IS ENCOUNTERED * U2M00100 11 | * * U2M00110 12 | * IDENTIFYING FEATURES * U2M00120 13 | * 1) ERROR PARAMETER * U2M00130 14 | * 2) PRIMARY 2501 ONLY * U2M00140 15 | *ENTRY POINTS- * U2M00150 16 | * 1. READ1 CALL ENTRANCE FOR TEST OR READ * U2M00160 17 | * OPERATIONS. E.G. LIBF READ1 * U2M00170 18 | * DC /1000 * U2M00180 19 | * DC IOBUF * U2M00190 20 | * DC ERROR U2M00200 21 | * 2. RE048 OPERATION COMPLETE INTERRUPT ENTRY* U2M00210 22 | * POINT. * U2M00220 23 | *INPUT- NONE OTHER THAN FROM THE PARAMETERS IN * U2M00230 24 | * LIBF CALLING SEQUENCE. * U2M00240 25 | *OUTPUT- ROUTINE WILL TRANSFER 0 TO 80 COLS FROM * U2M00250 26 | * CARD TO I/O BUFFER AS SPECIFIED BY CALLING * U2M00260 27 | * SEQUENCE. FORMAT IS 12 BITS PER BUFFER WORD* U2M00270 28 | * LEFT JUSTIFIED. * U2M00280 29 | *EXTERNAL SUBROUTINES- NONE. * U2M00290 30 | *EXITS- * U2M00300 31 | * NORMAL- * U2M00310 32 | * 1. RE180 IF NO PRE-OP ERROR HAS BEEN DE- * U2M00320 33 | * TECTED, THE EXIT FROM RE180 IS * U2M00330 34 | * TO THE CALLER AFTER THE REQUESTED * U2M00340 35 | * 2501 OPERATION HAS BEEN INITIATED * U2M00350 36 | * 2. RE348 THE EXIT FROM RE348 IS BACK TO THE* U2M00360 37 | * CALLER VIA ILS04 AFTER OP COMPLETE* U2M00370 38 | * PROCESSING HAS BEEN FINISHED. * U2M00380 39 | * ERROR- * U2M00390 40 | * 1. RE180 IF A PRE-OP ERROR OR NOT READY * U2M00400 41 | * CONDITION IS DETECTED, SUBROUTINE * U2M00410 42 | * WILL BRANCH TO HEX 0029 VIA RE180 * U2M00420 43 | * AND DISPLAY ONE OF TWO CODES IN * U2M00430 44 | * ACCUMULATOR. * U2M00440 45 | * 4000 IS DISPLAYED IF 2501 IS NOT * U2M00450 46 | * READY. 4001 IS DISPLAYED IF AN * U2M00460 47 | * ERROR IS DISCOVERED IN CALLING * U2M00470 48 | * PARAMETERS OR AREAS REFERENCED BY * U2M00480 49 | * THEM. * U2M00490 50 | * IF A POST-OPERATIVE ERROR OR LAST * U2M00500 51 | * CARD INDR IS DETECTED, THIS SUBR * U2M00510 52 | * EXITS TO THE USERS ERROR SUBR. * U2M00520 53 | * VIA RE360+1 AND RE370+1 RESPEC- * U2M00530 54 | * TIVELY * U2M00540 55 | *TABLES/WORK AREAS- NONE. * U2M00550 56 | *ATTRIBUTES- REUSABLE, CAN READ UP TO 80 COLUMNS * U2M00560 57 | * OF BINARY DATA. IF A WORD COUNT * U2M00570 58 | * OF ZERO IS SPECIFIED, THE READ * U2M00580 59 | * OPERATION ACTS AS A FEED. * U2M00590 60 | *NOTES- THIS SUBR CONTAINS NO WAIT INSTRUCTIONS. * U2M00600 61 | * THE 'SPEED' SUBR SHOULD NOT BE USED WITH * U2M00610 62 | * READ1, AS I/O BUFFER IS NOT FILLED WITH * U2M00620 63 | * INDICATOR BITS AS READING BEGINS. * U2M00630 64 | *************************************************** U2M00640 65 | LIBR U2M00650 0000 66 | 1130 ISS 04 READ1 4 U2M00660 67 | *************************************************** U2M00670 68 | * LOADER DEFINED LOCATIONS * U2M00680 69 | *************************************************** U2M00690 0000 6932 70 | READ1 STX 1 RE144+1 LIBF ENTRANCE U2M00700 0001 6580 0000 71 | RE036 LDX I1 0 LOADER STORES TV ADDR (+2) U2M00710 0003 7003 72 | MDX RE060 BR TO PROCESS CALL U2M00720 0004 0000 73 | RE048 DC 0 OP CMPLTE INTERRUPT (+4) U2M00730 0005 4C00 004FR 74 | BSC L RE336 BR TO PROCESS INT U2M00740 75 | *************************************************** U2M00750 76 | * LIBF PROCESSING * U2M00760 77 | *************************************************** U2M00770 78 | * THIS PORTION STORES CALLING SEQUENCE INFO * U2M00780 79 | * AND CHECKS THE DEVICE STATUS BEFORE ANY I/O * U2M00790 80 | * OPERATION IS INITIATED. A CALLING ERROR OR * U2M00800 81 | * NOT READY 2501 CAUSES AN ERROR EXIT TO * U2M00810 82 | * LOCATION 41. IF THE OPERATION WILL CAUSE * U2M00820 83 | * INTERRUPT , THE ROUTINE IS SET BUSY AND THE * U2M00830 84 | * IOCS COUNTER IS INCREMENTED TO INDICATE * U2M00840 85 | * INTERRUPT PENDING. * U2M00850 86 | *************************************************** U2M00860 0007 D046 87 | RE060 STO RE324 SAVE ACC U2M00870 0008 282D 88 | STS RE168 SAVE STATUS U2M00880 0009 6A2B 89 | STX 2 RE156+1 SAVE XR2 U2M00890 000A C100 90 | LD 1 0 XR1 HAS ADDR OF CALL+1 U2M00900 000B 180C 91 | SRA 12 IS FUNCTION TEST U2M00910 000C 4C20 0012R 92 | BSC L RE072,Z BR IF NOT U2M00920 000E C035 93 | LD RE228 TEST SUBR BUSY U2M00930 000F 4818 94 | BSC +- SKIP IF BUSY U2M00940 0010 7101 95 | MDX 1 +1 *ELSE EXIT TO CALL+3 U2M00950 0011 701D 96 | MDX RE120 EXIT TO CALL+2 U2M00960 0012 9033 97 | RE072 S RE240 IS FUNCTION LEGAL U2M00970 0013 4C20 0039R 98 | BSC L RE192,Z BR IF NOT U2M00980 0015 C02E 99 | RE084 LD RE228 IS SUBR BUSY U2M00990 0016 4C20 0015R 100 | BSC L RE084,Z YES, LOOP U2M01000 0018 0831 101 | RE096 XIO RE288-1 IS DEVICE READY U2M01010 0019 4C04 003BR 102 | BSC L RE204,E BR IF NOT U2M01020 001B C580 0001 103 | LD I1 1 OBTAIN WORD COUNT U2M01030 001D 4818 104 | BSC +- U2M01040 001E 7005 105 | MDX RE108 BR ON Z WD CNT U2M01050 001F 4C28 0039R 106 | BSC L RE192,Z+ BR IF WD CNT NEG U2M01060 0021 9028 107 | S RE276 0 THRU 80 IS LEGAL U2M01070 0022 4C30 0039R 108 | BSC L RE192,Z- BR IF OVER 80 U2M01080 0024 7102 109 | RE108 MDX 1 +2 SET XR1 TO SKIP PARAMS U2M01090 0025 C1FF 110 | LD 1 -1 SAVE DATA ADDRESS U2M01100 0026 D021 111 | STO RE264 U2M01110 0027 C100 112 | LD 1 0 LOAD ERROR PARAMETER U2M01120 0028 D035 113 | STO RE360+2 STORE IN INTERRUPT ROUTINE U2M01130 0029 D03E 114 | STO RE370+2 ERROR AND LAST CARD EXITS U2M01140 002A 7401 0032 115 | MDX L 50,+1 INCREMENT IOCS COUNTER U2M01150 002C 1000 116 | NOP U2M01160 002D 6816 117 | STX 0 RE228 SET BUSY INDR ON U2M01170 002E 0819 118 | XIO RE264 READ U2M01180 002F 7101 119 | RE120 MDX 1 +1 U2M01190 0030 C01D 120 | LD RE324 RESTORE ACC U2M01200 0031 6906 121 | RE132 STX 1 RE180+1 SET TO SKIP 1ST PARAMETER U2M01210 0032 6500 0000 122 | RE144 LDX L1 *-* RESTORE STATUS U2M01220 0034 6600 0000 123 | RE156 LDX L2 *-* AND INDEX REGISTERS U2M01230 0036 2000 124 | RE168 LDS *-* U2M01240 0037 4C00 0000 125 | RE180 BSC L *-* EXIT U2M01250 0039 C013 126 | RE192 LD RE312 ERROR CODE - ILLEGAL CALL U2M01260 003A 7004 127 | MDX RE216 BR TO SET RETURN ADDR U2M01270 003B 1801 128 | RE204 SRA 1 IS DEVICE BUSY U2M01280 003C 4C04 0018R 129 | BSC L RE096,E BR IF YES U2M01290 003E C00D 130 | LD RE300 ERROR CODE - DVCE NOT RDY U2M01300 003F 71FF 131 | RE216 MDX 1 -1 U2M01310 0040 6D00 0028 132 | STX L1 40 STORE CALL ADDR IN 40 U2M01320 0042 6129 133 | LDX 1 41 SET EXIT U2M01330 0043 70ED 134 | MDX RE132 BR TO EXIT U2M01340 135 | *************************************************** U2M01350 136 | * CONSTANTS U2M01360 137 | *************************************************** U2M01370 0044 0000 138 | RE228 DC 0 ROUTINE BUSY INDICATOR U2M01380 0046 139 | BSS E 0 U2M01390 0046 0001 140 | RE240 DC +1 CONSTANT U2M01400 0047 4F01 141 | RE252 DC /4F01 SENSE WITH RESET U2M01410 0048 0000 142 | RE264 DC *-* I/O BUFFER ADDRESS E U2M01420 0049 4E00 143 | DC /4E00 IOCC TO INITIATE READ O U2M01430 004A 0050 144 | RE276 DC +80 CONSTANT U2M01440 004B 4F00 145 | RE288 DC /4F00 SENSE DSW WITHOUT RESET O U2M01450 004C 4000 146 | RE300 DC /4000 CONSTANT FOR DVC NOT RDY U2M01460 004D 4001 147 | RE312 DC /4001 CST FOR BAD CALL U2M01470 004E 0000 148 | RE324 DC *-* SAVED ACC U2M01480 008D 149 | $PST4 EQU /8D POST-OP ERROR TRAP U2M01490 150 | *************************************************** U2M01500 151 | * OP COMPLETE INTERRUPT PROCESSING * U2M01510 152 | *************************************************** U2M01520 153 | * THIS PORTION IS ENTERED FROM AN INTERRUPT * U2M01530 154 | * LVL.SUBRT.IF NO ERROR OR LAST CARD IS FOUND,* U2M01540 155 | * THE ROUTINE IS SET NOT BUSY AND THE IOCS * U2M01550 156 | * COUNTER IS DECREMENTED TO INDICATE * U2M01560 157 | * INTERRUPT PROCESSING COMPLETED. OTHERWISE * U2M01570 158 | * THE ROUTINE EXITS TO THE USER VIA RE360+1 * U2M01580 159 | * WITH THE READ ERROR CODE--0001,ON RETURN IF * U2M01590 160 | * ACC.=0,THE FUNCTION IS TERMINATED,IF NON-ZERO U2M01600 161 | * WAIT AT THE POST-OPERATIVE ERROR TRAP TILL * U2M01610 162 | * THE READER IS READY AND THEN RE-INITIATE * U2M01620 163 | * THE FUNCTION.IF THE DSW INDICATED LAST CARD * U2M01630 164 | * EXIT TO USER WITH ZERO CODE IN ACC.,UPON * U2M01640 165 | * RETURN,TERMINATE FUNCTION. * U2M01650 166 | *************************************************** U2M01660 004F 08F6 167 | RE336 XIO RE252-1 SENSE WITH RESET U2M01670 0050 1003 168 | SLA 3 CHECK FOR READ ERROR U2M01680 0051 4C02 005CR 169 | BSC L RE360,C YES,GOTO ERROR EXIT U2M01690 0053 4828 170 | BSC +Z CHECK FOR LAST CARD INDIC U2M01700 0054 7011 171 | MDX RE370 YES,GO TELL USER U2M01710 172 | *TERMINATE OPERATION AND EXIT TO ILS U2M01720 0055 74FF 0032 173 | RE340 MDX L 50,-1 DECREMENT IOCS COUNTER U2M01730 0057 1000 174 | NOP U2M01740 0058 1810 175 | SRA 16 CLEAR ROUTINE U2M01750 0059 D0EA 176 | STO RE228 BUSY INDICATOR U2M01760 005A 4C80 0004R 177 | RE348 BSC I RE048 RETURN TO ILS U2M01770 178 | * U2M01780 179 | *EXIT TO USERS ERROR ROUTINE WITH READ ERROR CODE U2M01790 180 | * U2M01800 005C C0E9 181 | RE360 LD RE240 LOAD READ ERROR CODE--0001 U2M01810 005D 4400 0000 182 | BSI L *-* EXIT TO USERS ERROR RTN. U2M01820 005F 4818 183 | BSC +- UPON RETURN,TEST ACCUM. U2M01830 0060 70F4 184 | MDX RE340 ZERO,TERMINATE OPERATION U2M01840 185 | * IF ACCUM.NON-ZERO,CHECK READER FOR READY AND U2M01850 186 | * RE-INITIATE OPERATION U2M01860 0061 08E8 187 | RE362 XIO RE288-1 SENSE WITHOUT RESET, U2M01870 0062 4C04 006AR 188 | BSC L RE375,E TO ERROR EXIT IF NOT READY U2M01880 0064 08E3 189 | XIO RE264 RE-INITIATE OPERATION U2M01890 0065 70F4 190 | MDX RE348 EXIT,BUT DONT CLEAR BUSY U2M01900 191 | * U2M01910 192 | *EXIT TO USER WITH LAST CARD INDICATION U2M01920 193 | * U2M01930 0066 1810 194 | RE370 SRA 16 LAST CARD ERROR CODE,A=0 U2M01940 0067 4400 0000 195 | BSI L *-* EXIT TO USERS ERROR RTN U2M01950 0069 70EB 196 | MDX RE340 UPON RETURN,GO TERMINATE U2M01960 006A C0E1 197 | RE375 LD RE300 NOT READY ERROR CODE U2M01970 006B 4400 008D 198 | BSI L $PST4 POST-OP ERROR TRAP U2M01980 006D 70F3 199 | MDX RE362 TRY AGAIN U2M01990 006E 200 | END U2M02000 There were no errors in this assembly === CROSS REFERENCES ========================================================== Name Val Defd Referenced $PST4 008D 149 198 RE036 0001R 71 RE048 0004R 73 177 RE060 0007R 87 72 RE072 0012R 97 92 RE084 0015R 99 100 RE096 0018R 101 129 RE108 0024R 109 105 RE120 002FR 119 96 RE132 0031R 121 134 RE144 0032R 122 70 RE156 0034R 123 89 RE168 0036R 124 88 RE180 0037R 125 121 RE192 0039R 126 98 106 108 RE204 003BR 128 102 RE216 003FR 131 127 RE228 0044R 138 93 99 117 176 RE240 0046R 140 97 181 RE252 0047R 141 167 RE264 0048R 142 111 118 189 RE276 004AR 144 107 RE288 004BR 145 101 187 RE300 004CR 146 130 197 RE312 004DR 147 126 RE324 004ER 148 87 120 RE336 004FR 167 74 RE340 0055R 173 184 196 RE348 005AR 177 190 RE360 005CR 181 113 169 RE362 0061R 187 199 RE370 0066R 194 114 171 RE375 006AR 197 188 READ1 0000R 70