ASM1130 CROSS ASSEMBLER V1.22 -- V2M12 -- Sun Nov 1 19:25:09 2020 Source File: \u2wrty0.asm 1 | *************************************************** U2O00010 2 | * * U2O00020 3 | *TITLE- WRTY0 * U2O00030 4 | *STATUS- CHANGE LEVEL 7 * U2O00040 5 | *FUNCTION/OPERATION- * U2O00050 6 | * THIS 1130/1800 SUBROUTINE OPERATES THE PRIME * U2O00060 7 | * CONSOLE PRINTER (1053). IT INITIATES REQSTD * U2O00070 8 | * PRINT OPERATIONS AND PROCESSES ANY PRINTER * U2O00080 9 | * OR OPERATOR REQUEST INTERRUPTS. IT IGNORES * U2O00090 10 | * ANY PRINTER ERRORS OR KEYBOARD INTERRUPTS. * U2O00100 11 | *ENTRY POINTS- * U2O00110 12 | * 1. WRTY0 CALL ENTRANCE FOR TEST OR WRITE * U2O00120 13 | * OPERATIONS. E.G. LIBF WRTY0 * U2O00130 14 | * DC /2000 * U2O00140 15 | * DC IOBUF * U2O00150 16 | * 2. INT1 OPERATION COMPLETE INTERRUPT ENTRY* U2O00160 17 | * POINT. * U2O00170 18 | *INPUT- NONE OTHER THAN FROM LIBF PARAMETERS * U2O00180 19 | *OUTPUT- PRINTED. * U2O00190 20 | *EXTERNAL SUBROUTINES- NONE. * U2O00200 21 | *EXITS- * U2O00210 22 | * NORMAL- * U2O00220 23 | * 1. CALL PORTION- WR36, BACK TO USER PROGRAM * U2O00230 24 | * 2. INTERRUPT PORTION- WR66, BACK TO ILS04 * U2O00240 25 | * ERROR- * U2O00250 26 | * 1. CALL PORTION- WR44, PRE-OPERATIVE ERROR * U2O00260 27 | * EXIT TO IOCS TRAP. * U2O00270 28 | * 2. INTERRUPT PORTION- WR66A, EXIT TO POST- * U2O00280 29 | * OPERATIVE ERROR TRAP. * U2O00290 30 | *TABLES/WORK AREAS- NONE. * U2O00300 31 | *ATTRIBUTES- REUSABLE * U2O00310 32 | *NOTES- * U2O00320 33 | * SEE IBM 1130 SUBROUTINE LIBRARY MANUAL * U2O00330 34 | * * U2O00340 35 | *************************************************** U2O00350 36 | *** HDNG LIBF WRTY0-V1. U2O00360 37 | LIBR U2O00370 38 | ISS 02 WRTY0 4 U2O00380 39 | *************************************************** U2O00390 40 | * EDIT/LOADER DEFINED LOCATIONS * U2O00400 41 | *************************************************** U2O00410 0000 6933 42 | WRTY0 STX 1 WR30+1 LIBF ENTRANCE (+0) U2O00420 0001 6580 0000 43 | LINK LDX I1 0 LOADER STORES TV ADDR (+2) U2O00430 0003 7005 44 | MDX WR10 U2O00440 0004 0000 45 | INT1 DC 0 INTERRUPT ENTRANCE (+4) U2O00450 0005 4C00 0050R 46 | BSC L WR50 U2O00460 0007 0803 47 | AREA DC /0803 EDIT SETUP FOR GRP 0 (+7) U2O00470 0008 0000 48 | DC 0 EDIT SETUP FOR GRP 1 (+8) U2O00480 49 | *************************************************** U2O00490 50 | * LIBF PROCESSING * U2O00500 51 | *************************************************** U2O00510 0009 6A2C 52 | WR10 STX 2 WR32+1 SAVE XR2 U2O00520 000A 282C 53 | STS WR34 SAVE STATUS U2O00530 000B D040 54 | STO SAVA SAVE A REG U2O00540 000C C100 55 | LD 1 0 GET THE CONTROL PARAM U2O00550 000D 180C 56 | SRA 12 IS FUNCTION TEST U2O00560 000E 4C20 0014R 57 | BSC L WR12,Z NO U2O00570 0010 C033 58 | LD COUNT YES, IS BUSY INDR ON U2O00580 0011 4820 59 | BSC Z U2O00590 0012 71FF 60 | MDX 1 -1 YES, EXIT TO CALL+2 U2O00600 0013 701C 61 | MDX WR26 NO, EXIT TO CALL+3 U2O00610 0014 9034 62 | WR12 S D0002 IS FUNCTION PUT U2O00620 0015 4C20 003AR 63 | BSC L WR40,Z NO, ERROR U2O00630 0017 C02C 64 | WR13 LD COUNT IS BUSY INDR ON U2O00640 0018 4C20 0017R 65 | BSC L WR13,Z YES, LOOP U2O00650 001A 0829 66 | WR14 XIO SENSE-1 IS DEVICE READY U2O00660 001B 1005 67 | SLA 5 U2O00670 001C 4C28 003CR 68 | BSC L WR42,Z+ NO, ERROR U2O00680 001E C580 0001 69 | WR20 LD I1 1 SAVE WORD COUNT + 2 U2O00690 0020 1001 70 | SLA 1 U2O00700 0021 4C08 003AR 71 | BSC L WR40,+ ERROR IF ZERO OR NEG U2O00710 0023 D020 72 | STO COUNT SAVE TWICE THE WD CNT U2O00720 0024 C101 73 | LD 1 1 GET DATA AREA ADDR U2O00730 0025 8022 74 | A D0001 AVOID STORED WD CNT U2O00740 0026 D01F 75 | STO IOAR SAVE I/O AREA ADDR U2O00750 0027 1810 76 | SRA 16 SET INDR FOR RT-HAND CHAR U2O00760 0028 D026 77 | STO RIGHT U2O00770 0029 C480 0046R 78 | LD I IOAR STORE CHAR INTO TEMP AREA U2O00780 002B D022 79 | STO TEMP1 U2O00790 002C 7401 0032 80 | MDX L 50,+1 INCR ISS CTR U2O00800 002E 1000 81 | NOP MAY SKIP U2O00810 002F 0812 82 | XIO PRINT PRINT 1ST CHAR U2O00820 0030 7102 83 | WR26 MDX 1 +2 SET EXIT FOR CALL+3 U2O00830 0031 C01A 84 | LD SAVA RESTORE ACC U2O00840 0032 6906 85 | WR28 STX 1 WR36+1 SET UP EXIT U2O00850 0033 6500 0000 86 | WR30 LDX L1 *-* RESTORE XR1 U2O00860 0035 6600 0000 87 | WR32 LDX L2 *-* RESTORE XR2 U2O00870 0037 2000 88 | WR34 LDS *-* RESTORE STATUS U2O00880 0038 4C00 0000 89 | WR36 BSC L *-* EXIT TO USER U2O00890 90 | * U2O00900 91 | *SET UP ERROR EXITS U2O00910 92 | * U2O00920 003A C00F 93 | WR40 LD H2001 ERROR CODE - ILLEGAL CALL U2O00930 003B 7001 94 | MDX WR44 U2O00940 003C C00E 95 | WR42 LD H2000 ERROR CODE - DEVC NOT READY U2O00950 003D 71FF 96 | WR44 MDX 1 -1 GET LIBF ADDR AND PUT IN U2O00960 003E 6D00 0028 97 | STX L1 40 *$PRET U2O00970 0040 6129 98 | LDX 1 41 SET XR1 TO EXIT TO LOC 41 U2O00980 0041 70F0 99 | MDX WR28 U2O00990 100 | *************************************************** U2O01000 101 | * CONSTANTS * U2O01010 102 | *************************************************** U2O01020 0042 103 | BSS E 0 U2O01030 0042 004ER 104 | PRINT DC TEMP1 IOCC TO PRINT 1 CHAR U2O01040 0043 0902 105 | DC /0902 O U2O01050 0044 0000 106 | COUNT DC 0 LENGTH OF I/O AREA E U2O01060 0045 0F02 107 | SENSE DC /0F02 IOCC TO SENSE DSW O U2O01070 0046 0000 108 | IOAR DC 0 ADDR OF THE I/O AREA U2O01080 0047 0F01 109 | SENS1 DC /0F01 IOCC TO SENSE W/RESET U2O01090 0048 0001 110 | D0001 DC +1 DECIMAL CONS U2O01100 0049 0002 111 | D0002 DC +2 U2O01110 004A 2001 112 | H2001 DC /2001 ERROR CODE FOR ILLEGAL CALL U2O01120 004B 2000 113 | H2000 DC /2000 ERROR CODE--DVC NOT READY U2O01130 004C 0000 114 | SAVA DC 0 SAVE ACC U2O01140 004D 0000 115 | TEMP DC 0 TEMPORARY STG FOR DSW U2O01150 004E 0000 116 | TEMP1 DC 0 CHAR TO BE PRINTED U2O01160 004F 0000 117 | RIGHT DC 0 CHAR INDR--0 IF RIGHT U2O01170 008D 118 | $PST4 EQU /8D POST-OPERATIVE ERROR TRAP U2O01180 119 | *************************************************** U2O01190 120 | * INTERRUPT PROCESSING * U2O01200 121 | *************************************************** U2O01210 122 | * THIS PORTION IS ENTERED FROM AN INTERRUPT * U2O01220 123 | * LEVEL SUBROUTINE (04 IN 1130). THE DATA AREA * U2O01230 124 | * IS UNPACKED, ONE CHARACTER AT A TIME. AFTER * U2O01240 125 | * THE REQUESTED NUMBER OF CHARACTERS HAS BEEN * U2O01250 126 | * PRINTED, THE ROUTINE IS SET NOT BUSY AND THE * U2O01260 127 | * IOCS COUNTER DECREMENTED TO INDICATE INTERR * U2O01270 128 | * PROCESSING COMPLETED. IF AN OPERATOR REQUEST * U2O01280 129 | * INTERRUPT IS DETECTED, THE SUBROUTINE EXITS, * U2O01290 130 | * VIA THE ADDRESS IN LOCATION 44, TO THE USER * U2O01300 131 | * BEFORE RETURNING CONTROL TO THE INTERRUPT * U2O01310 132 | * LEVEL SUBROUTINE. * U2O01320 133 | *************************************************** U2O01330 0050 08F5 134 | WR50 XIO SENS1-1 SENSE DVC U2O01340 0051 D0FB 135 | STO TEMP IS INTRPT A PRINT REQUEST U2O01350 0052 4C10 0075R 136 | BSC L WR66,- NO,GO CHK OPERATOR REQUEST U2O01360 0054 74FF 0044R 137 | MDX L COUNT,-1 YES,ANY MORE CHARS TO PRINT U2O01370 0056 7004 138 | MDX WR60 YES, GO PRINT NEXT U2O01380 0057 74FF 0032 139 | MDX L 50,-1 NO, DECR ISS COUNTER U2O01390 0059 1000 140 | NOP MAY SKIP U2O01400 005A 7019 141 | MDX WR65 GO CHK OPERATOR REQ U2O01410 005B C0F3 142 | WR60 LD RIGHT WAS LAST CHAR LEFT U2O01420 005C 4C18 0065R 143 | BSC L WR62,+- BR IF YES U2O01430 005E 7401 0046R 144 | MDX L IOAR,+1 SET FOR NEXT I/O AREA CHAR U2O01440 0060 1810 145 | SRA 16 LAST CHAR WAS RIGHT U2O01450 0061 D0ED 146 | STO RIGHT CLEAR INDR U2O01460 0062 C480 0046R 147 | LD I IOAR STORE CHAR IN TEMP1 U2O01470 0064 7005 148 | MDX WR64 U2O01480 0065 C0E2 149 | WR62 LD D0001 U2O01490 0066 D0E8 150 | STO RIGHT SET INDR U2O01500 0067 C480 0046R 151 | LD I IOAR U2O01510 0069 1008 152 | SLA 8 STORE CHAR IN TEMP1 U2O01520 006A D0E3 153 | WR64 STO TEMP1 *(BITS 0-7) U2O01530 006B 08D8 154 | WR64A XIO SENSE-1 IS 1053 READY U2O01540 006C 1005 155 | SLA 5 U2O01550 006D 4C28 0077R 156 | BSC L WR66A,Z+ NO, GO TO ERROR TRAP U2O01560 006F 08D4 157 | XIO SENSE-1 IS 1053 STILL READY U2O01570 0070 1005 158 | SLA 5 U2O01580 0071 4C28 0077R 159 | BSC L WR66A,Z+ NO,WAS CONTACT BOUNCE U2O01590 0073 08CE 160 | XIO PRINT PRINT 1 CHAR U2O01600 0074 C0D8 161 | WR65 LD TEMP U2O01610 0075 4C80 0004R 162 | WR66 BSC I INT1 EXIT TO INTRPT LEVEL SUBR U2O01640 163 | * U2O01650 164 | *EXIT TO POST-OPERATIVE ERROR TRAP WITH NOT READY U2O01660 165 | *ERROR CODE IN THE ACCUMULATOR. U2O01670 166 | * U2O01680 0077 C0D3 167 | WR66A LD H2000 ERROR CODE INTO ACC U2O01690 0078 4400 008D 168 | BSI L $PST4 U2O01700 007A 70F0 169 | MDX WR64A TRY AGAIN U2O01710 007B 170 | END U2O01720 There were no errors in this assembly === CROSS REFERENCES ========================================================== Name Val Defd Referenced $PST4 008D 118 168 AREA 0007R 47 COUNT 0044R 106 58 64 72 137 D0001 0048R 110 74 149 D0002 0049R 111 62 H2000 004BR 113 95 167 H2001 004AR 112 93 INT1 0004R 45 162 IOAR 0046R 108 75 78 144 147 151 LINK 0001R 43 PRINT 0042R 104 82 160 RIGHT 004FR 117 77 142 146 150 SAVA 004CR 114 54 84 SENS1 0047R 109 134 SENSE 0045R 107 66 154 157 TEMP 004DR 115 135 161 TEMP1 004ER 116 79 104 153 WR10 0009R 52 44 WR12 0014R 62 57 WR13 0017R 64 65 WR14 001AR 66 WR20 001ER 69 WR26 0030R 83 61 WR28 0032R 85 99 WR30 0033R 86 42 WR32 0035R 87 52 WR34 0037R 88 53 WR36 0038R 89 85 WR40 003AR 93 63 71 WR42 003CR 95 68 WR44 003DR 96 94 WR50 0050R 134 46 WR60 005BR 142 138 WR62 0065R 149 143 WR64 006AR 153 148 WR64A 006BR 154 169 WR65 0074R 161 141 WR66 0075R 162 136 WR66A 0077R 167 156 159 WRTY0 0000R 42