ASM1130 CROSS ASSEMBLER V1.22 -- V2M12 -- Sun Nov 1 19:25:09 2020 Source File: \t5prnz.asm PRNZ 2 | LIBR T5I00020 3 | ISS 09 PRNZ 4 T5I00030 4 | *************************************************** T5I00040 5 | * * T5I00050 6 | *STATUS - VERSION 2, MODIFICATION 12 * T5I00060 7 | * * T5I00070 8 | *FUNCTION/OPERATION- * T5I00080 9 | * PRNZ IS AN ISS SUBROUTINE CALLED BY FORTRAN * T5I00090 10 | * SFIO TO PRINT A LINE OF OUTPUT ON THE 1403 * T5I00100 11 | * PRINTER. A CARRIAGE CONTROL OPERATION IS * T5I00110 12 | * PERFORMED PRIOR TO PRINTING A LINE. THE * T5I00120 13 | * CARRIAGE CONTROL CHARS ARE BASED ON THE * T5I00130 14 | * FIRST CHARACTER OF THE PRINT BUFFER. * T5I00140 15 | * THE FIRST CHARACTER CAN BE AS FOLLOWS- * T5I00150 16 | * * 00F1 - SKIP TO CHANNEL 1 BEFORE PRINTING * T5I00160 17 | * * XR2 CONTAINS THE NUMBER OF CHARACTERS TO * T5I00170 18 | * BE PRINTED * T5I00180 19 | * * T5I00190 20 | *OUTPUT- * T5I00200 21 | * * A LINE OF PRINT ON THE 1403, SPACED * T5I00210 22 | * ACCORDING TO THE CARRIAGE CONTROL CHARACTER * T5I00220 23 | * * T5I00230 24 | *EXTERNAL REFERENCES- * T5I00240 25 | * * $1403 * T5I00250 26 | * * $PRET * T5I00260 27 | * * $IOCT 2-3* T5I00270 28 | * * $PST4 2-3* T5I00280 29 | * * $LEV4 2-3* T5I00290 30 | * * T5I00300 31 | *EXITS- * T5I00310 32 | * NORMAL- * T5I00320 33 | * * CALL PORTION-PRNZ+1, BACK TO SFIO * T5I00330 34 | * * INTERRUPT PORTION-WZ100 BACK TO THE ILS * T5I00340 35 | * * T5I00350 36 | * ERROR- * T5I00360 37 | * * $PRET-MONITOR PRE-OPERATIVE ERROR TRAP * T5I00370 38 | * WHEN 1403 NOT IN READY STATUS * T5I00380 39 | * * $PST4 IF ERROR DETECTED WHEN 2-3* T5I00390 40 | * PROCESSING AN INTERRUPT 2-3* T5I00400 41 | * * T5I00410 42 | *TABLES/WORK AREAS- * T5I00420 43 | * SELF CONTAINED EBC-1403 CODE TABLE CONTAINING * T5I00430 44 | * EBC CHARACTERS IN FIRST 8 BITS, 1403 CODE IN * T5I00440 45 | * NEXT 8 BITS. TABLE CONTAINS 36 ALPHA AND * T5I00450 46 | * NUMERIC CHARACTERS AND 13 SPECIAL CHARACTERS. * T5I00460 47 | * * T5I00470 48 | *ATTRIBUTES-RELOCATABLE * T5I00480 49 | * * T5I00490 50 | *NOTES-NO REGISTERS SAVED * T5I00500 51 | * * T5I00510 52 | *************************************************** T5I00520 PRNZ 54 | * T5I00540 55 | * SYSTEM CONSTANT AREAS T5I00550 56 | * T5I00560 0080 57 | $1403 EQU /80 1403 CHAN 12 INDICATOR WD T5I00570 0028 58 | $PRET EQU /28 PRE-OPERATIVE ERROR TRAP T5I00580 0032 59 | $IOCT EQU /32 PENDING INTRPT CNT 2-3 T5I00590 008D 60 | $PST4 EQU /8D POST OPERATIV 2-3 T5I00600 000C 61 | $LEV4 EQU /C LEVEL 4 INTRPT ADDR 2-3 T5I00610 62 | * T5I00620 63 | * PROGRAM ENTRY POINT T5I00630 64 | * T5I00640 0000 7042 65 | PRNZ MDX WZ200 BR TO IN LINE CODING T5I00650 0001 4C80 0000 66 | BSC I *-* EXIT FROM SUBROUTINE-SFIO T5I00660 0003 9000 67 | WZ010 DC /9000 ERROR INDICATOR WORD T5I00670 68 | * T5I00680 69 | * T5I00690 70 | * T5I00700 0004 0000 71 | WZ100 DC *-* INTERRUPT ENTRY T5I00710 0005 082C 72 | XIO WZ906 SENSE W/ RESET T5I00720 0006 D03B 73 | STO WZ943 SAVE NEW DSW 2-3 T5I00730 0007 E82C 74 | OR WZ935 COMBINE WITH OLD DSW 2-3 T5I00740 0008 D02B 75 | STO WZ935 *AND SAVE FOR ERR CHECK2-3 T5I00750 0009 C038 76 | LD WZ943 GET NEW DSW 2-3 T5I00760 000A 1002 77 | SLA 2 CHK FOR PRINT COMPLETE 2-3 T5I00770 78 | * *INTERRUPT T5I00780 000B 4C10 0017R 79 | BSC L WZ110,- BR IF CARRIAGE OR TR 2-3 T5I00790 80 | * 2-3 T5I00800 81 | * CHECK IF ANY ERROR BITS SET 2-3 T5I00810 82 | * IF SO BR TO $PST4 2-3 T5I00820 83 | * 2-3 T5I00830 000D C026 84 | LD WZ935 GET SAVED DSW 2-3 T5I00840 000E E026 85 | AND WZ936 ANY ERRORS 2-3 T5I00850 000F 4C18 0024R 86 | BSC L WZ120,+- *BR IF NO 2-5 T5I00860 0011 1010 87 | SLA 16 CLEAR 2-3 T5I00890 0012 D021 88 | STO WZ935 *SAVED DSW 2-3 T5I00900 0013 C02A 89 | LD WZ937 GET PRINT CHECK CODE 2-5 T5I00910 0014 4400 008D 90 | BSI L $PST4 BR TO POST OF ERR TRAP 2-3 T5I00920 0016 700D 91 | MDX WZ120 2-5 T5I00925 92 | * T5I00930 93 | * SET CHANNEL 12 INDR IN COMMA T5I00940 94 | * T5I00950 0017 4C02 0029R 95 | WZ110 BSC L WZ130,C BR ON TRANSFER COMPLETE2-5 T5I00955 0019 100A 96 | SLA 10 CHECK DSW FOR CHANNEL 12 T5I00960 001A 180F 97 | SRA 15 SHIFT BIT TO POSITION 15 T5I00970 98 | * T5I00980 001B 7400 003FR 99 | MDX L WZ940,0 SKIP IF NOT CHANNEL 1 T5I00990 001D 7004 100 | MDX WZ115 BRANCH IF CHANNEL 1 T5I01000 101 | * T5I01010 001E EC00 0080 102 | OR L $1403 OR BIT TO SYSTEM WORD IF T5I01020 0020 D400 0080 103 | STO L $1403 * CHANNEL 12 FOUND T5I01030 104 | * T5I01040 0022 1010 105 | WZ115 SLA 16 T5I01050 0023 D01B 106 | STO WZ940 CLEAR CHANNEL 1 SWITCH T5I01060 107 | * T5I01070 0024 74FF 0032 108 | WZ120 MDX L $IOCT,-1 DECR PENDING INTRPT CNT T5I01080 0026 1000 109 | NOP IN CASE CTR = 0 T5I01090 0027 4C80 0004R 110 | BSC I WZ100 RETURN TO ILS T5I01100 111 | * T5I01110 112 | * TRANSFER COMPLETE T5I01120 113 | * T5I01130 0029 1010 114 | WZ130 SLA 16 CLEAR 2-5 T5I01135 002A D012 115 | STO WZ934 *TRANSFER COPLETE T5I01140 002B 70F8 116 | MDX WZ120 *SWITCH T5I01150 117 | * T5I01160 118 | * CONSTANTS AND WORK AREAS T5I01170 119 | * T5I01180 002C 120 | BSS E 0 T5I01190 002C 002ER 121 | WZ900 DC WZ902 SPACE IOCC ADDR AND T5I01200 002D A900 122 | DC /A900 *SKIP IOCC WORD T5I01210 002E 0800 123 | WZ902 DC /0800 SPACE IOCC T5I01220 002F AC00 124 | DC /AC00 T5I01230 0030 0000 125 | WZ904 DC *-* PRINT BUFFER ADDR AND T5I01240 0031 AD00 126 | DC /AD00 *PRINT IOCC T5I01250 0032 003F 127 | WZ906 DC /003F 6 BIT MASK FOR EBCDIC 2-3 T5I01260 0033 AF01 128 | DC /AF01 *AND SENSE IOCC WITH RESET T5I01270 0034 0000 129 | WZ935 DC *-* CELL WHERE DSW SAVED 2-3 T5I01280 0035 8600 130 | WZ936 DC /8600 ERROR MASK 2-3 T5I01290 0036 0000 131 | WZ908 DC 0 CHARACTER COUNT AND T5I01300 0037 AF00 132 | DC /AF00 *SENSE IOCC WITHOUT RESET T5I01310 0038 003C 133 | WZ910 DC 60 CONSTANT = MAX O/P WD CNT T5I01320 0036R 134 | WZ920 EQU WZ908 CHAR COUNT T5I01330 0032R 135 | WZ921 EQU WZ906 6 BIT MASK FOR EBCDIC 2-3 T5I01340 0039 00F1 136 | WZ930 DC /00F1 SKIP TO CHANNEL 1 TEST T5I01350 003A 00A3 137 | WZ931 DC /00A3 SUPPRESS SPACE TEST CODE T5I01360 003B 00A2 138 | WZ932 DC /00A2 DOUBLE SPACE TEST T5I01370 003C 0000 139 | WZ933 DC 0 TEMPORARY CHAR STORAGE WD T5I01380 003D 0000 140 | WZ934 DC 0 TRANS COMPLETE EWITCH 2-3 T5I01390 003E 9002 141 | WZ937 DC /9002 PRINT CHECK ERROR CODE 2-5 T5I01415 003F 0000 142 | WZ940 DC 0 NON-ZERO IF CHANNEL 1 T5I01420 0040 00A0R 143 | WZ941 DC WZ990 TABLE ADDRESS 2-3 T5I01434 0041 FF00 144 | WZ942 DC /FF00 1403 TABLE MASK 2-3 T5I01436 0042 0000 145 | WZ943 DC *-* STORAGE FOR DSW 2-9 T5I01438 146 | * T5I01440 147 | * MAINLINE AND INITIALIZATION T5I01450 148 | * T5I01460 0043 6923 149 | WZ200 STX 1 WZ320+1 SAVE BUFFER ADDRESS T5I01470 0044 69EB 150 | STX 1 WZ904 SAVE BUFFER ADDRESS T5I01480 151 | * T5I01490 152 | * TEST FOR CARRIAGE CONTROL T5I01500 153 | * T5I01510 0045 C100 154 | LD 1 0 LOAD CARRIAGE CONTROL CHAR T5I01520 0046 90F2 155 | S WZ930 SUBTRACT CHANNEL 1 SKIP T5I01530 0047 4820 156 | BSC Z A PAGE EJECT IS REQ'D? 2-12 T5I01540 0048 7004 157 | MDX *+4 NO, CONTINUE CHECKING 2-12 T5I01542 0049 7400 003FR 158 | MDX L WZ940,0 CHECK CHANNEL 1 INDR 2-12 T5I01544 004B 700E 159 | MDX WZ300 IT'S SET, NO EJECT 2-12 T5I01546 004C 702A 160 | MDX WZ370 NOT SET, DO EJECT 2-12 T5I01548 004D 80EC 161 | A WZ931 ADD SPACE SUPPRESS CON T5I01550 004E 4C18 005AR 162 | BSC L WZ300,+- BR TO CONVERT BUFR IF = T5I01560 0050 7400 0080 163 | MDX L $1403,0 TEST FOR CHANNEL 12 T5I01570 0052 7024 164 | MDX WZ370 BR TO PAGE EJECT 212 T5I01580 0053 90E7 165 | S WZ932 TEST FOR DOUBLE SPACE T5I01590 0054 4C20 0058R 166 | BSC L WZ220,Z *BR IF YES 2-3 T5I01600 167 | * T5I01610 168 | * DOUBLE AND SINGLE SPACE ROUTINES T5I01620 169 | * T5I01630 0056 4032 170 | BSI WZ380 GO CHECK FOR CARRIAGE BUSY T5I01640 0057 08D6 171 | XIO WZ902 MOVE CARRIAGE ONE SPACE T5I01650 172 | * T5I01660 173 | * SPACE ONCE AGAIN T5I01670 174 | * T5I01680 0058 4030 175 | WZ220 BSI WZ380 GO CHECK FOR CARRIAGE BUSY T5I01690 0059 08D4 176 | XIO WZ902 MOVE CARRIAGE ONE SPACE T5I01700 177 | * T5I01710 178 | * CONVERT THE EBC CHARACTER TO 1403 T5I01720 179 | * CODE T5I01730 180 | * T5I01740 005A 72FF 181 | WZ300 MDX 2 -1 SKIP IF CHAR CNT .EQ. 1 T5I01750 005B 7001 182 | MDX WZ305 BRANCH IF CNT .GT. 1 T5I01760 005C 70A4 183 | MDX PRNZ+1 EXIT T5I01770 184 | * T5I01780 005D 623C 185 | WZ305 LDX 2 60 T5I01790 005E 6AD7 186 | STX 2 WZ920 SET WD CNT .EQ. 60 T5I01800 187 | * T5I01810 188 | * GET 1403 CHARS AND PACK TWO TO A WORD T5I01820 189 | * T5I01830 005F C101 190 | WZ310 LD 1 1 GET CHARACTER T5I01840 0060 4033 191 | BSI WZ400 DO TABLE SEARCH TO FIND IT T5I01850 0061 D0DA 192 | STO WZ933 SAVE IN TEMPORARY STORAGE T5I01860 0062 C102 193 | LD 1 2 GET NEXT EBC CHARACTER T5I01870 0063 4030 194 | BSI WZ400 CONVERT TO 1403 CODE T5I01880 0064 1808 195 | SRA 8 PUT CHAR IN RIGHT 8 BITS T5I01890 0065 E8D6 196 | OR WZ933 PACK WITH LEFT 8 BITS T5I01900 0066 D400 0000 197 | WZ320 STO L *-* STORE BACK IN BUFFER T5I01910 0068 7401 0067R 198 | MDX L WZ320+1,1 INCR O/P ADDR BY 1 T5I01920 006A 7102 199 | MDX 1 2 INCR I/P BUFFER ADDR BY 2 T5I01930 006B 74FF 0036R 200 | MDX L WZ920,-1 TEST TO SEE IF CONVERSION T5I01940 201 | * *DONE T5I01950 006D 70F1 202 | MDX WZ310 GET NEXT CHAR IF NOT T5I01960 203 | * T5I01970 006E 68CE 204 | STX WZ934 YES,TURN ON TRANSFER T5I01980 205 | * *COMPLETE SWITCH T5I01990 206 | * T5I02000 207 | * PRINTER BUSY TEST AND PRINT T5I02010 208 | * T5I02020 006F 4019 209 | WZ350 BSI WZ380 T5I02030 0070 4018 210 | BSI WZ380 T5I02040 0071 08BE 211 | XIO WZ904 PRINT A LINE T5I02050 0072 400B 212 | WZ355 BSI WZ375 TEST FOR PRINTER READY 2-3 T5I02060 0073 7400 003DR 213 | MDX L WZ934,0 TEST FOR PRINT COMPLETE2-3 T5I02070 214 | * *INTERRUPT T5I02080 0075 70FC 215 | MDX WZ355 NO INTRPT TRY AGAIN 2-3 T5I02090 0076 708A 216 | WZ360 MDX PRNZ+1 EXIT BACK TO SFIO T5I02100 217 | * T5I02110 218 | * SKIP TO CHANNEL 1, NEW PAGE T5I02120 219 | * T5I02130 0077 4011 220 | WZ370 BSI WZ380 CHECK FOR CARRIAGE BUSY 212 T5I02140 0078 1010 221 | SLA 16 CLEAR CHANNEL 12 SWITCH 212 T5I02150 0079 D400 0080 222 | STO L $1403 SAVE IN COMMA WORD 212 T5I02160 007B 68C3 223 | STX WZ940 SET CHANNEL 1 IN SWITCH 212 T5I02170 007C 08AF 224 | XIO WZ900 SKIP TO CHANNEL 1 T5I02180 007D 70DC 225 | MDX WZ300 GO CONVERT MESSAGE TO 1403 T5I02190 226 | * 2-3 T5I02200 227 | * TEST FOR PRINTER READY 2-3 T5I02210 228 | * IF NO-BR TO PRE-OP ERR TRAP 2-3 T5I02220 229 | * 2-3 T5I02230 007E 0000 230 | WZ375 DC *-* ENTRY POINT 2-3 T5I02240 007F 08B6 231 | WZ376 XIO WZ908 SENSE W/O RESET T5I02250 0080 4C04 0084R 232 | BSC L WZ377,E BR IF NOT READY 2-3 T5I02260 0082 4C80 007ER 233 | BSC I WZ375 RETURN 2-3 T5I02270 234 | * T5I02275 0084 C400 0003R 235 | WZ377 LD L WZ010 LOAD ERROR FLAG 2-12 T5I02280 0086 4400 0028 236 | BSI L $PRET BR TO TRAP T5I02290 0088 70F6 237 | MDX WZ376 TEST READY AGAIN 2-3 T5I02300 0089 0000 238 | WZ380 DC *-* BSI ENTRY POINT T5I02310 008A 40F3 239 | WZ381 BSI WZ375 TEST PRINTER READY 2-3 T5I02320 008B 100D 240 | SLA 13 TEST ON CARR. OR PRINTER T5I02330 008C 4C20 008AR 241 | BSC L WZ381,Z *BUSY, BR IF YES T5I02340 008E 7401 0032 242 | MDX L $IOCT,1 INCR INTRPT PENDING CNT2-3 T5I02350 0090 1000 243 | NOP IN CASE OF SKIP 212 T5I02355 0091 4C80 0089R 244 | BSC I WZ380 RETURN T5I02360 245 | * T5I02440 246 | * TABLE SEARCH SUBROUTINE TO FIND 1403 T5I02450 247 | * CHARACTER CORRESPONDING TO EBC T5I02460 248 | * T5I02470 0093 4C00 0000 249 | BSC L *-* RETURN T5I02480 0094R 250 | WZ400 EQU *-1 BSI ENTRY POINT T5I02490 0095 E09C 251 | AND WZ921 REMOVE 2 HIGH BITS 2-3 T5I02500 0096 1881 252 | SRT 1 SAVE LOW BIT IN Q 2-3 T5I02510 0097 80A8 253 | A WZ941 CONSTRUCT TABLE ADDRESS2-3 T5I02520 0098 D002 254 | STO WZ410+1 PUT IN LOAD INSTRUCTION2-3 T5I02530 0099 1091 255 | SLT 17 SET CARRY WITH LOW BIT 2-3 T5I02540 009A C400 0000 256 | WZ410 LD L *-* GET 1403 CHAR FROM TBL 2-3 T5I02550 009C 4802 257 | BSC C SKIP IF NO CARRY 2-3 T5I02560 009D 1008 258 | SLA 8 2-3 T5I02570 009E E0A2 259 | AND WZ942 MASK OUT RIGHT 8 BITS 2-3 T5I02580 260 | * 2-3 T5I02590 009F 70F3 261 | MDX WZ400-1 EXIT FROM THIS SUBROUTINE T5I02620 PRNZ 263 | * T5I02640 264 | * 1403 CODE TABLE - EBCDIC USED 2-3 T5I02650 265 | * TO GENERATE TABLE ACCESS ADDRESS 2-3 T5I02660 266 | * T5I02670 00A0 7F64 267 | WZ990 DC /7F64 BLANK/A 2-3 T5I02680 00A1 2526 268 | DC /2526 B/C 2-3 T5I02690 00A2 6768 269 | DC /6768 D/E 2-3 T5I02700 00A3 292A 270 | DC /292A F/G 2-3 T5I02710 00A4 6B2C 271 | DC /6B2C H/I 2-3 T5I02720 00A5 7F6E 272 | DC /7F6E BLANK/PERIOD 2-3 T5I02730 00A6 7F57 273 | DC /7F57 BLANK/LEFT PAREN 2-3 T5I02740 00A7 6D7F 274 | DC /6D7F PLUS/BLANK 2-3 T5I02750 00A8 1558 275 | DC /1558 AMPERSAND/J 2-3 T5I02760 00A9 191A 276 | DC /191A K/L 2-3 T5I02770 00AA 5B1C 277 | DC /5B1C M/N 2-3 T5I02780 00AB 5D5E 278 | DC /5D5E O/P 2-3 T5I02790 00AC 1F20 279 | DC /1F20 Q/R 2-3 T5I02800 00AD 7F62 280 | DC /7F62 BLANK/DOLLAR 2-3 T5I02810 00AE 232F 281 | DC /232F ASTERISK/RIGHT PAREN 2-3 T5I02820 00AF 7F7F 282 | DC /7F7F BLANK/BLANK 2-3 T5I02830 00B0 614C 283 | DC /614C MINUS/SLASH 2-3 T5I02840 00B1 0D0E 284 | DC /0D0E S/T 2-3 T5I02850 00B2 4F10 285 | DC /4F10 U/V 2-3 T5I02860 00B3 5152 286 | DC /5152 W/X 2-3 T5I02870 00B4 1354 287 | DC /1354 Y/Z 2-3 T5I02880 00B5 7F16 288 | DC /7F16 BLANK/COMMA 2-3 T5I02890 00B6 7F7F 289 | DC /7F7F BLANK/BLANK 2-3 T5I02900 00B7 7F7F 290 | DC /7F7F BLANK/BLANK 2-3 T5I02910 00B8 4940 291 | DC /4940 0/1 2-3 T5I02920 00B9 0102 292 | DC /0102 2/3 2-3 T5I02930 00BA 4304 293 | DC /4304 4/5 2-3 T5I02940 00BB 4546 294 | DC /4546 6/7 2-3 T5I02950 00BC 0708 295 | DC /0708 8/9 2-3 T5I02960 00BD 7F7F 296 | DC /7F7F BLANK/BLANK 2-3 T5I02970 00BE 7F0B 297 | DC /7F0B BLANK/APOSTROPHE 2-3 T5I02980 00BF 4A7F 298 | DC /4A7F EQUAL/BLANK 2-3 T5I02990 00C0 299 | END T5I03000 There were no errors in this assembly === CROSS REFERENCES ========================================================== Name Val Defd Referenced $1403 0080 57 102 103 163 222 $IOCT 0032 59 108 242 $LEV4 000C 61 $PRET 0028 58 236 $PST4 008D 60 90 PRNZ 0000R 65 183 216 WZ010 0003R 67 235 WZ100 0004R 71 110 WZ110 0017R 95 79 WZ115 0022R 105 100 WZ120 0024R 108 86 91 116 WZ130 0029R 114 95 WZ200 0043R 149 65 WZ220 0058R 175 166 WZ300 005AR 181 159 162 225 WZ305 005DR 185 182 WZ310 005FR 190 202 WZ320 0066R 197 149 198 WZ350 006FR 209 WZ355 0072R 212 215 WZ360 0076R 216 WZ370 0077R 220 160 164 WZ375 007ER 230 212 233 239 WZ376 007FR 231 237 WZ377 0084R 235 232 WZ380 0089R 238 170 175 209 210 220 244 WZ381 008AR 239 241 WZ400 0094R 250 191 194 261 WZ410 009AR 256 254 WZ900 002CR 121 224 WZ902 002ER 123 121 171 176 WZ904 0030R 125 150 211 WZ906 0032R 127 72 135 WZ908 0036R 131 134 231 WZ910 0038R 133 WZ920 0036R 134 186 200 WZ921 0032R 135 251 WZ930 0039R 136 155 WZ931 003AR 137 161 WZ932 003BR 138 165 WZ933 003CR 139 192 196 WZ934 003DR 140 115 204 213 WZ935 0034R 129 74 75 84 88 WZ936 0035R 130 85 WZ937 003ER 141 89 WZ940 003FR 142 99 106 158 223 WZ941 0040R 143 253 WZ942 0041R 144 259 WZ943 0042R 145 73 76 WZ990 00A0R 267 143