ASM1130 CROSS ASSEMBLER V1.22 -- V2M12 -- Sun Nov 1 19:25:09 2020 Source File: \u2read0.asm 1 | * HDNG READ0,2501 CARD READ ROUTINE * U2L00010 2 | *************************************************** U2L00020 3 | *TITLE- READ0 * U2L00030 4 | *STATUS- CHANGE LEVEL 000 * U2L00040 5 | *FUNCTION/OPERATION- * U2L00050 6 | * THIS 1130 SUBROUTINE OPERATES THE PRIMARY * U2L00060 7 | * 2501 CARD READER. IT INITIATES REQSTD * U2L00070 8 | * OPERATIONS, PROCESSES OPERATION COMPLETE * U2L00080 9 | * INTERRUPTS, AND AUTOMATICALLY INITIATES * U2L00090 10 | * ERROR RECOVERY PROCEDURES. * U2L00100 11 | * * U2L00110 12 | * IDENTIFYING FEATURES * U2L00120 13 | * 1) NO ERROR PARAMETER * U2L00130 14 | * 2) PRIMARY 2501 ONLY * U2L00140 15 | *ENTRY POINTS- * U2L00150 16 | * 1. READ0 CALL ENTRANCE FOR TEST OR READ * U2L00160 17 | * OPERATIONS. E.G. LIBF READ0 * U2L00170 18 | * DC /1000 * U2L00180 19 | * DC IOBUF * U2L00190 20 | * 2. RE048 OPERATION COMPLETE INTERRUPT ENTRY* U2L00200 21 | * POINT. * U2L00210 22 | *INPUT- NONE OTHER THAN FROM THE PARAMETERS IN * U2L00220 23 | * LIBF CALLING SEQUENCE. * U2L00230 24 | *OUTPUT- ROUTINE WILL TRANSFER 0 TO 80 COLS FROM * U2L00240 25 | * CARD TO I/O BUFFER AS SPECIFIED BY CALLING * U2L00250 26 | * SEQUENCE. FORMAT IS 12 BITS PER BUFFER WORD* U2L00260 27 | * LEFT JUSTIFIED. * U2L00270 28 | *EXTERNAL SUBROUTINES- NONE. * U2L00280 29 | *EXITS- * U2L00290 30 | * NORMAL- * U2L00300 31 | * 1. RE180 IF NO PRE-OP ERROR HAS BEEN DE- * U2L00310 32 | * TECTED, THE EXIT FROM RE180 IS * U2L00320 33 | * TO THE CALLER AFTER THE REQUESTED * U2L00330 34 | * 2501 OPERATION HAS BEEN INITIATED * U2L00340 35 | * 2. RE348 THE EXIT FROM RE348 IS BACK TO THE* U2L00350 36 | * CALLER VIA ILS04 AFTER OP COMPLETE* U2L00360 37 | * PROCESSING HAS BEEN FINISHED. * U2L00370 38 | * ERROR- * U2L00380 39 | * 1. RE180 IF A PRE-OP ERROR OR NOT READY * U2L00390 40 | * CONDITION IS DETECTED, SUBROUTINE * U2L00400 41 | * WILL BRANCH TO HEX 0029 VIA RE180 * U2L00410 42 | * AND DISPLAY ONE OF TWO CODES IN * U2L00420 43 | * ACCUMULATOR. * U2L00430 44 | * 4000 IS DISPLAYED IF 2501 IS NOT * U2L00440 45 | * READY. 4001 IS DISPLAYED IF AN * U2L00450 46 | * ERROR IS DISCOVERED IN CALLING * U2L00460 47 | * PARAMETERS OR AREAS REFERENCED BY * U2L00470 48 | * THEM. * U2L00480 49 | *TABLES/WORK AREAS- NONE. * U2L00490 50 | *ATTRIBUTES- REUSABLE, CAN READ UP TO 80 COLUMNS * U2L00500 51 | * OF BINARY DATA. IF A WORD COUNT * U2L00510 52 | * OF ZERO IS SPECIFIED, THE READ * U2L00520 53 | * OPERATION ACTS AS A FEED. * U2L00530 54 | *NOTES- THIS SUBR CONTAINS NO WAIT INSTRUCTIONS. * U2L00540 55 | * THE 'SPEED' SUBR SHOULD NOT BE USED WITH * U2L00550 56 | * READ0, AS I/O BUFFER IS NOT FILLED WITH * U2L00560 57 | * INDICATOR BITS AS READING BEGINS. * U2L00570 58 | *************************************************** U2L00580 59 | LIBR U2L00590 0000 60 | 1130 ISS 04 READ0 4 U2L00600 61 | *************************************************** U2L00610 62 | * LOADER DEFINED LOCATIONS * U2L00620 63 | *************************************************** U2L00630 0000 692F 64 | READ0 STX 1 RE144+1 LIBF ENTRANCE U2L00640 0001 6580 0000 65 | RE036 LDX I1 0 LOADER STORES TV ADDR (+2) U2L00650 0003 7003 66 | MDX RE060 BR TO PROCESS CALL U2L00660 0004 0000 67 | RE048 DC 0 OP CMPLTE INTERRUPT (+4) U2L00670 0005 4C00 004BR 68 | BSC L RE336 BR TO PROCESS INT U2L00680 69 | *************************************************** U2L00690 70 | * LIBF PROCESSING * U2L00700 71 | *************************************************** U2L00710 72 | * THIS PORTION STORES CALLING SEQUENCE INFO * U2L00720 73 | * AND CHECKS THE DEVICE STATUS BEFORE ANY I/O * U2L00730 74 | * OPERATION IS INITIATED. A CALLING ERROR OR * U2L00740 75 | * NOT READY 2501 CAUSES AN ERROR EXIT TO * U2L00750 76 | * LOCATION 41. IF THE OPERATION WILL CAUSE * U2L00760 77 | * INTERRUPT , THE ROUTINE IS SET BUSY AND THE * U2L00770 78 | * IOCS COUNTER IS INCREMENTED TO INDICATE * U2L00780 79 | * INTERRUPT PENDING. * U2L00790 80 | *************************************************** U2L00800 0007 D042 81 | RE060 STO RE324 SAVE ACC U2L00810 0008 282A 82 | STS RE168 SAVE STATUS U2L00820 0009 6A28 83 | STX 2 RE156+1 SAVE XR2 U2L00830 000A C100 84 | LD 1 0 X1= ADDR OF CALL+1 U2L00840 000B 180C 85 | SRA 12 IS FUNCTION TEST U2L00850 000C 4C20 0012R 86 | BSC L RE072,Z BR IF NOT U2L00860 000E C032 87 | LD RE228 IS SUBR BUSY U2L00870 000F 4818 88 | BSC +- SKIP IF YES U2L00880 0010 7101 89 | MDX 1 +1 NO, EXIT TO CALL+3 U2L00890 0011 701A 90 | MDX RE120 EXIT TO CALL +2 U2L00900 0012 902F 91 | RE072 S RE240 IS FUNCTION LEGAL U2L00910 0013 4C20 0036R 92 | BSC L RE192,Z BR IF NOT U2L00920 0015 C02B 93 | RE084 LD RE228 IS SUBR BUSY U2L00930 0016 4C20 0015R 94 | BSC L RE084,Z YES, LOOP U2L00940 0018 082D 95 | RE096 XIO RE288-1 IS DEVICE READY U2L00950 0019 4C04 0038R 96 | BSC L RE204,E BR IF NOT U2L00960 001B C580 0001 97 | LD I1 1 OBTAIN WORD COUNT U2L00970 001D 4818 98 | BSC +- U2L00980 001E 7005 99 | MDX RE108 BR ON Z WD CNT U2L00990 001F 4C28 0036R 100 | BSC L RE192,Z+ BR IF WD CNT NEG U2L01000 0021 9024 101 | S RE276 0 THRU 80 IS LEGAL U2L01010 0022 4C30 0036R 102 | BSC L RE192,Z- BR IF OVER 80 U2L01020 0024 7101 103 | RE108 MDX 1 +1 SET XR1 TO SKIP 2ND PARAM U2L01030 0025 C100 104 | LD 1 0 SAVE DATA ADDR U2L01040 0026 D01D 105 | STO RE264 U2L01050 0027 7401 0032 106 | MDX L 50,+1 INCREMENT IOCS COUNTER U2L01060 0029 1000 107 | NOP U2L01070 002A 6816 108 | STX 0 RE228 SET SUBR BUSY INDR U2L01080 002B 0818 109 | XIO RE264 READ U2L01090 002C 7101 110 | RE120 MDX 1 +1 U2L01100 002D C01C 111 | LD RE324 RESTORE ACC U2L01110 002E 6906 112 | RE132 STX 1 RE180+1 SET EXIT TO SKIP 1ST PARAM U2L01120 002F 6500 0000 113 | RE144 LDX L1 *-* RESTORE STATUS U2L01130 0031 6600 0000 114 | RE156 LDX L2 *-* AND INDEX REGISTERS U2L01140 0033 2000 115 | RE168 LDS *-* U2L01150 0034 4C00 0000 116 | RE180 BSC L *-* EXIT U2L01160 0036 C012 117 | RE192 LD RE312 ERROR CODE - ILLEGAL CALL U2L01170 0037 7004 118 | MDX RE216 BR TO SET RETURN ADRS U2L01180 0038 1801 119 | RE204 SRA 1 IS DEVICE BUSY U2L01190 0039 4C04 0018R 120 | BSC L RE096,E BR IF YES U2L01200 003B C00C 121 | LD RE300 ERROR CODE - DVCE NOT RDY U2L01210 003C 71FF 122 | RE216 MDX 1 -1 U2L01220 003D 6D00 0028 123 | STX L1 40 STORE CALL ADDR IN 40 U2L01230 003F 6129 124 | LDX 1 41 SET EXIT U2L01240 0040 70ED 125 | MDX RE132 BR TO EXIT U2L01250 126 | *************************************************** U2L01260 127 | * CONSTANTS U2L01270 128 | *************************************************** U2L01280 0041 0000 129 | RE228 DC 0 SUBR BUSY INDR U2L01290 0042 130 | BSS E 0 U2L01300 0042 0001 131 | RE240 DC +1 CONSTANT U2L01310 0043 4F01 132 | RE252 DC /4F01 SENSE WITH RESET U2L01320 0044 0000 133 | RE264 DC *-* I/O BUFFER ADDRESS E U2L01330 0045 4E00 134 | DC /4E00 IOCC TO INITIATE READ O U2L01340 0046 0050 135 | RE276 DC +80 CONSTANT U2L01350 0047 4F00 136 | RE288 DC /4F00 SENSE DSW WITHOUT RESET O U2L01360 0048 4000 137 | RE300 DC /4000 CONSTANT FOR DVC NR U2L01370 0049 4001 138 | RE312 DC /4001 CST FOR BAD CALL U2L01380 004A 0000 139 | RE324 DC *-* SAVED ACC U2L01390 008D 140 | $PST4 EQU /8D POST-OPERATIVE ERROR TRAP U2L01400 141 | *************************************************** U2L01410 142 | * OP COMPLETE INTERRUPT PROCESSING M U2L01420 143 | *************************************************** U2L01430 144 | * THIS PORTION IS ENTERED FROM AN INTERRUPT * U2L01440 145 | * LEVEL SUBRT. IF NO ERROR HAS BEEN DETECTED * U2L01450 146 | * THE ROUTINE IS SET NOT BUSY AND THE IOCS * U2L01460 147 | * COUNTER IS DECREMENTED TO INDICATE * U2L01470 148 | * INTERRUPT PROCESSING COMPLETED. OTHERWISE * U2L01480 149 | * THE SUBR.GOES TO THE POST-OPERATIVE ERROR- * U2L01490 150 | * TRAP AND WAITS UNTIL THE OPERATOR HAS * U2L01500 151 | * INTERVENED AND THE 2501 BECOMES READY, AT * U2L01510 152 | * WHICH TIME THE CARDS ARE POSITIONED AND THE * U2L01520 153 | * I/O OPERATION IS RE-INITIATED. * U2L01530 154 | *************************************************** U2L01540 004B 08F6 155 | RE336 XIO RE252-1 SENSE DSW WITH RESET U2L01550 004C 1003 156 | SLA 3 IS OPERATION OK U2L01560 004D 4C02 0056R 157 | BSC L RE360,C BR IF ERROR U2L01570 004F 74FF 0032 158 | MDX L 50,-1 ELSE TERMINATE U2L01580 0051 1000 159 | NOP DECREMENT IOCS COUNT U2L01590 0052 1810 160 | SRA 16 U2L01600 0053 D0ED 161 | STO RE228 CLEAR ROUT BUSY INDIC U2L01610 0054 4C80 0004R 162 | RE348 BSC I RE048 EXIT U2L01620 0056 08EB 163 | RE360 XIO RE252-1 SENSE DSW FOR READY U2L01630 0057 4C04 005BR 164 | BSC L RE365,E TO ERROR EXIT IF NOT READY U2L01640 0059 08EA 165 | XIO RE264 RE-INITIATE FUNCTION U2L01650 005A 70F9 166 | MDX RE348 BR TO EXIT U2L01660 005B C0EC 167 | RE365 LD RE300 LD NOT READY ERROR CODE U2L01670 005C 4400 008D 168 | BSI L $PST4 POST-OPERATIVE ERROR TRAP U2L01680 005E 70F7 169 | MDX RE360 TRY AGAIN U2L01690 005F 170 | END U2L01700 There were no errors in this assembly === CROSS REFERENCES ========================================================== Name Val Defd Referenced $PST4 008D 140 168 RE036 0001R 65 RE048 0004R 67 162 RE060 0007R 81 66 RE072 0012R 91 86 RE084 0015R 93 94 RE096 0018R 95 120 RE108 0024R 103 99 RE120 002CR 110 90 RE132 002ER 112 125 RE144 002FR 113 64 RE156 0031R 114 83 RE168 0033R 115 82 RE180 0034R 116 112 RE192 0036R 117 92 100 102 RE204 0038R 119 96 RE216 003CR 122 118 RE228 0041R 129 87 93 108 161 RE240 0042R 131 91 RE252 0043R 132 155 163 RE264 0044R 133 105 109 165 RE276 0046R 135 101 RE288 0047R 136 95 RE300 0048R 137 121 167 RE312 0049R 138 117 RE324 004AR 139 81 111 RE336 004BR 155 68 RE348 0054R 162 166 RE360 0056R 163 157 169 RE365 005BR 167 164 READ0 0000R 64