ASM1130 CROSS ASSEMBLER V1.22 -- V2M12 -- Sun Nov 1 19:25:05 2020 Source File: \dciloadr.asm CORE IMAGE LOADER FOR 2501 OR 1442 2 | *************************************************** DCL00020 3 | * * DCL00030 4 | *FUNCTION- * DCL00040 5 | * *THIS CARD CORE IMAGE LOADER READS CARDS FROM * DCL00050 6 | * ETHER THE 2501 OR 1442 AND LOADES THEM INTO * DCL00060 7 | * CORE. THE DECK TO BE LOADED MUST BE CORE * DCL00070 8 | * IMAGE CONVERTED ON THE PRESENT CORE IMAGE * DCL00080 9 | * CONVERTER. * DCL00090 10 | * * DCL00100 11 | *ENTRY POINTS- * DCL00110 12 | * *CL320-THE BOOTSTRAP LOADER WILL BRANCH THERE * DCL00120 13 | * AFTER IT HAS LOADED THE CORE IMAGE LOADER * DCL00130 14 | * INTO CORE. * DCL00140 15 | * * DCL00150 16 | *INPUT- * DCL00160 17 | * *THE CORE IMAGE DECK TO BE LOADED IS PLACED * DCL00170 18 | * BEHIND THE CORE IMAGE LOADER AND IS LOADED * DCL00180 19 | * FROM THE SAME DEVICE THAT INITIAL PROGRAM * DCL00190 20 | * LOAD (IPL) IS DONE FROM. * DCL00200 21 | * * DCL00210 22 | *OUTPUT- * DCL00220 23 | * *N/A * DCL00230 24 | * * DCL00240 25 | *EXTERNAL REFERANCES- * DCL00250 26 | * *CORE LOCATION /29 IN THE BOOTSTRAP (LINK WORD* DCL00260 27 | * FOR COLUMN INTERUPT) IS LOOKED AT TO SEE IF * DCL00270 28 | * THE READING IS FROM THE 1442 OR 2501. THIS * DCL00280 29 | * WORD DIRECTS THE INITIALIZATION OF THE CARD * DCL00290 30 | * ROUTINE IN THE CORE IMAGE LOADER. * DCL00300 31 | * * DCL00310 32 | *EXITS- * DCL00320 33 | * *NORMAL- * DCL00330 34 | * *THE NORMAL EXIT IS TO THE WORD SPECIFIED * DCL00340 35 | * IN THE 54TH WORD IN THE END CARD. * DCL00350 36 | * * DCL00360 37 | * *ERROR- * DCL00370 38 | * *N/A * DCL00380 39 | * * DCL00390 40 | *TABLES/WORK AREAS- * DCL00400 41 | * *CL050-THIS WORD INDICATES WHEN A CARD * DCL00410 42 | * READER IS BEING USED. * DCL00420 43 | * 0 = NOT IN USE * DCL00430 44 | * NOT 0 = IN USE * DCL00440 45 | * * DCL00450 46 | * *CL060-THIS WORD CONTAINS THE COUNT USED IN * DCL00460 47 | * THE NEXT NON-ZERO CHECK SUM. * DCL00470 48 | * * DCL00480 49 | * *CL110-THIS WORD IS USED TO HOLD THE A * DCL00490 50 | * REGISTER WHEN INTERUPTS ARE BEING HANDLED. * DCL00500 51 | * * DCL00510 52 | * *CL270-THIS IS AN 81 WORD BUFFER USED TO READ * DCL00520 53 | * THE CARDS INTO WHILE LOADING THE PROGRAM. * DCL00530 54 | * * DCL00540 55 | *NOTES- * DCL00550 56 | * *ON ANY KIND OF AN ERROR (CARD READER OR CHECK* DCL00560 57 | * SUM) THE MACHINE WILL COME TO A WAIT WITH THE* DCL00570 58 | * CARD NUMBER (BINARY) TO BE LOADED DISPLAYED * DCL00580 59 | * IN THE A REGISTER. IF ANY NON-CHECK SUMED * DCL00590 60 | * CARDS PRECEDE THE CARD NUMBER INDICATED THEY * DCL00600 61 | * SHOULD BE LOADED ALSO. * DCL00610 62 | * * DCL00620 63 | * *THE CORE IMAGE LOADER IS LOADED ABOVE /74 * DCL00630 64 | * AND IS MOVED TO THE ASSEMBLED LOCATIONS * DCL00640 65 | * BEFORE EXECUTION. * DCL00650 66 | * * DCL00660 67 | * *THE LOADER (LABEL CL275) CAN NOT BE LONGER * DCL00670 68 | * THAN /D6 SO AS TO CONFORM TO THE OLD * DCL00680 69 | * SPECIFICATIONS OF LENGTH. * DCL00690 70 | * * DCL00700 71 | *************************************************** DCL00710 72 | * DCL00720 73 | * IOCCS DCL00730 74 | * DCL00740 75 | ABS DCL00750 0004 76 | ORG 4 DCL00760 0004 77 | CL010 EQU * DCL00770 0004 0085 78 | DC CL270 BUFFER ADDRESS OF IOCC DCL00780 0005 4E00 79 | CL020 DC /4E00 START FUNCTION OF IOCC DCL00790 0006 0000 80 | DC *-* BUFFER ADDRESS OF IOCC DCL00800 0007 1204 81 | CL030 DC /1204 READ 1442 FUNCTION OF IOCC DCL00810 0008 000D 82 | DC CL070 COLUMN INTERUPT ADDRESS DCL00820 0009 4F01 83 | CL040 DC /4F01 TEST FUNCTION OF IOCC DCL00830 000A 0000 84 | CL050 DC *-* CARD BUSY INDICATOP DCL00840 000B 0001 85 | CL060 DC 1 CARD COUNT DCL00850 000C 0018 86 | DC CL090 OP COMPLETE INTERUPT ADR DCL00860 87 | * DCL00870 88 | * HANDLE THE COLUMN INTERUPT DCL00880 89 | * DCL00890 000D 0000 90 | CL070 DC *-* LINK WORD DCL00900 000E D0F1 91 | STO CL110 SAVE A REGISTER DCL00910 000F 7401 0006 92 | MDX L CL030-1,1 INCREMENT READ DCL00920 0011 08F4 93 | XIO CL030-1 READ COLUMN DCL00930 0012 08F5 94 | XIO CL040-1 SENSE 1442 DSW DCL00940 0013 C0EC 95 | LD CL110 RESTORE A REGISTER DCL00950 0014 4CC0 000D 96 | BOSC I CL070 RETURN DCL00960 97 | * DCL00970 98 | * HANDLE THE OPERATION COMPLETE INTERUPT DCL00980 99 | * DCL00990 0016 C0E9 100 | CL080 LD CL110 RESTORE A REGISTER DCL01000 0017 4C40 0000 101 | BOSC L *-* RETURN DCL01010 0018 102 | ORG *-1 DCL01020 0018 0000 103 | CL090 DC *-* LINK WORD DCL01030 0019 D0E6 104 | STO CL110 SAVE A REGISTER DCL01040 001A 08ED 105 | XIO CL040-1 SENSE DSW DCL01050 001B E007 106 | AND CL120 CHECK FOR ERROR DCL01060 001C D0ED 107 | STO CL050 CLEAR IBUSY DCL01070 001D 4C18 0016 108 | BSC L CL080,+- BRANCH ON NO ERROR DCL01080 001F C0EB 109 | CL100 LD CL060 PUT CARD COUNT IN A REGISTR DCL01090 0020 3000 110 | WAIT WAIT TILL ERROR IS FIXED DCL01100 0021 4C40 0025 111 | BOSC L CL140 BRANCH TO READ NEXT CARD DCL01110 112 | * DCL01120 113 | * CONSTANTS AND WORKING STORAGE DCL01130 114 | * DCL01140 0000 115 | CL110 EQU 0 SAVE AREA 1 DCL01150 0023 2000 116 | CL120 DC /2000 CONSTANT DCL01160 0024 0001 117 | CL130 DC 1 CONSTANT DCL01170 118 | * DCL01180 119 | * CLEAR CARD READ AREA DCL01190 120 | * DCL01200 0025 6148 121 | CL140 LDX 1 72 LOAD WORD COUNT DCL01210 0026 C0FD 122 | LD CL130 LOAD INDICATOR BIT DCL01220 0027 D500 0085 123 | STO L1 CL270 STORE IN A WORD OF BUFFER DCL01230 0029 71FF 124 | MDX 1 -1 DECREMENT WORD COUNT DCL01240 002A 70FC 125 | MDX *-4 BRANCH IF NOT ZERO DCL01250 126 | * DCL01260 127 | * START THE CARD READER DCL01270 128 | * DCL01280 002B 08DC 129 | CL150 XIO CL040-1 TEST 2501 DSW DCL01290 002C 4C04 002B 130 | BSC L CL150,E BRANCH IF NOT READY DCL01300 002E 08D5 131 | XIO CL020-1 START 2501 DCL01310 002F 68DA 132 | STX 0 CL050 SET CL050 ON DCL01320 133 | * DCL01330 134 | * INITIALIZE TO PACK UP THE INPUT AREA DCL01340 135 | * DCL01350 0030 C0D3 136 | LD CL020-1 DCL01360 0031 D0D4 137 | STO CL030-1 INITIALIZE IOCC ADDRESS DCL01370 0032 6500 0086 138 | LDX L1 CL270+1 LOAD BUFFER ADDRESS DCL01380 0034 6600 0086 139 | LDX L2 CL270+1 LOAD BUFFER ADDRESS DCL01390 0036 6348 140 | LDX 3 72 LOAD COLUMN COUNT DCL01400 141 | * DCL01410 142 | * PACK THE INPUT AREA DCL01420 143 | * DCL01430 0037 C200 144 | CL160 LD 2 0 TEST IF COLUMN IN CORE DCL01440 0038 4C04 0037 145 | BSC L *-3,E BRANCH IF NOT DCL01450 003A C1FF 146 | LD 1 -1 LOAD LAST WORD DCL01460 003B 18D0 147 | CL170 RTE 16 PLACE IN Q REGISTER DCL01470 003C C200 148 | LD 2 0 LOAD NEW WORD DCL01480 003D 18D0 149 | CL180 RTE 16 PLACE ON WORD BOUNDARY DCL01490 003E D1FF 150 | STO 1 -1 STORE A REGISTER DCL01500 003F 18D0 151 | RTEX3 RTE 16 DCL01510 0040 D100 152 | STO 1 0 STORE Q REGISTER DCL01520 0041 74FC 003D 153 | MDX L CL180,-4 ALTER ROTATE INSTRUCTION DCL01530 0043 C0F9 154 | LD CL180 TEST FOR END OF FOUR DCL01540 0044 100C 155 | SLA 12 ISOLATE SHIFT COUNT DCL01550 0045 4C20 004B 156 | BSC L CL200,Z BRANCH IF NOT NEW SET DCL01560 0047 C0F7 157 | LD RTEX3 INITIALIZE ROTATE DCL01570 0048 D0F4 158 | STO CL180 INSTRUCTIONS DCL01580 0049 D0F1 159 | STO CL170 DCL01590 004A 7003 160 | MDX CL210 BRANCH DCL01600 004B 7101 161 | CL200 MDX 1 1 INCREMENT TO NEXT WORD DCL01610 004C 7404 003B 162 | MDX L CL170,4 ALTER ROTATE INSTRUCTION DCL01620 004E 7201 163 | CL210 MDX 2 1 INCREMENT TO NEXT COLUMN DCL01630 004F 73FF 164 | MDX 3 -1 DECREMENT COLUMN COUNT DCL01640 0050 70E6 165 | MDX CL160 BRANCH IF NOT ZERO DCL01650 166 | * DCL01660 167 | * CHECK SUM THE CARD FOR POSSIBLE ERRORS DCL01670 168 | * DCL01680 0051 C035 169 | LD CL270+2 LOAD CHECK SUM DCL01690 0052 4C18 0063 170 | BSC L CL230,+- BRANCH IF ZERO DCL01700 0054 6236 171 | LDX 2 54 LOAD WORD COUNT DCL01710 0055 C0B5 172 | LD CL060 LOAD CARD NUMBER DCL01720 0056 8600 0085 173 | CL220 A L2 CL270 ADD A WORD DCL01730 0058 4802 174 | BSC C BRANCH NO CARRY DCL01740 0059 80CA 175 | A CL130 ADD 1 FOR CARRY DCL01750 005A 72FF 176 | MDX 2 -1 DECREMENT WORD COUNT DCL01760 005B 70FA 177 | MDX CL220 BRANCH IF NOT ZERO DCL01770 005C 1801 178 | SRA 1 IS CHECK SUM 1 DCL01780 005D 4C18 0066 179 | BSC L CL240,+- BRANCH IF YES DCL01790 005F C0AA 180 | LD CL050 LOAD BUSY INDICATOR DCL01800 0060 4C20 005F 181 | BSC L *-3,Z BRANCH IF CARD BUSY DCL01810 0062 70BC 182 | MDX CL100 BRANCH DCL01820 183 | * DCL01830 184 | * CHECK TO SEE IF CARD IS DONE DCL01840 185 | * DCL01850 0063 74FF 000B 186 | CL230 MDX L CL060,-1 DECREMENT CARD COUNT BY 1 DCL01860 0065 1000 187 | NOP SKIPS ON CARD NUMBER 1 DCL01870 0066 C021 188 | CL240 LD CL270+3 LOAD CARD TYPE DCL01880 0067 4C10 006C 189 | BSC L CL250,- BRANCH IF NOT LAST CARD DCL01890 0069 C0A0 190 | LD CL050 LOAD BUSY INDICATOR DCL01900 006A 4C20 0069 191 | BSC L *-3,Z BRANCH IF CARD BUSY DCL01910 192 | * DCL01920 193 | * MOVE THE CARD TO THE CORRECT AREA DCL01930 194 | * DCL01940 006C 6500 0089 195 | CL250 LDX L1 CL270+4 POINT AT FIRST WORD DCL01950 006E C1FF 196 | LD 1 -1 SEPARATE WORD COUNT DCL01960 006F 1001 197 | SLA 1 (0000000XXXXXXXX0) DCL01970 0070 1801 198 | SRA 1 (00000000XXXXXXXX) DCL01980 0071 D001 199 | STO *+1 DCL01990 0072 6600 0000 200 | LDX L2 *-* LOAD WORD COUNT DCL02000 0074 6780 0086 201 | LDX I3 CL270+1 POINT WERE DATA IS PLACED DCL02010 0076 C100 202 | CL260 LD 1 0 DCL02020 0077 D300 203 | STO 3 0 MOVE ONE WORD DCL02030 0078 7101 204 | MDX 1 1 INCREMENT POINTER DCL02040 0079 7301 205 | MDX 3 1 INCREMENT POINTER DCL02050 007A 72FF 206 | MDX 2 -1 DECREMENT WORD COUNT DCL02060 007B 70FA 207 | MDX CL260 BRANCH IF NOT ZERO DCL02070 007C 7401 000B 208 | MDX L CL060,1 INCREMENT CARD NUMBER DCL02080 209 | * DCL02090 210 | * CHECK LAST CARD OF DECK DCL02100 211 | * DCL02110 007E C009 212 | LD CL270+3 LOAD CARD TYPE DCL02120 007F 4C10 0025 213 | BSC L CL140,- BRANCH IF NOT LAST CARD DCL02130 214 | * DCL02140 215 | * READY EXECUTION DCL02150 216 | * DCL02160 0081 6780 00BA 217 | LDX I3 CL270+53 LOAD INDEX REGISTER 3 DCL02170 0083 4C80 00BB 218 | BSC I CL270+54 BRANCH TO ROUTINE DCL02180 219 | * DCL02190 220 | * I/O BUFFER DCL02200 221 | * DCL02210 0085 0050 222 | CL270 DC 80 WORD COUNT DCL02220 00D6 223 | CL275 EQU *+80 START OR CORE LOAD OF USER DCL02230 INITIALIZE AND MOVE CIL 225 | * DCL02250 226 | * THIS ROUTINE ADJUSTS THE CARD ROUTINE DCL02260 227 | * DCL02270 0073 228 | CL280 EQU /73 LOADED ADDRESS DCL02280 0003 229 | CL290 EQU /3 EXECUTED ADDRESS DCL02290 0070 230 | CL300 EQU CL280-CL290 OFFSET PROGRAM IS MOVE DCL02300 0082 231 | CL310 EQU CL270+1-CL010 SIZE OF AREA TO MOVE DCL02310 00F6 232 | CL320 EQU *+CL300 ENTRY POINT DCL02320 0086 C400 0029 233 | LD L /29 DCL02330 0088 1808 234 | SRA 8 DCL02340 0089 4C20 0104 235 | BSC L CL350+CL300,Z BRANCH IF 2501 DCL02350 236 | * DCL02360 237 | * READY FOR 1442 DCL02370 238 | * DCL02380 008B C006 239 | LD CL330 DCL02390 008C D400 0075 240 | STO L CL020+CL300 INITIALIZE IOCC DCL02400 008E C004 241 | LD CL340 DCL02410 008F D400 0079 242 | STO L CL040+CL300 INITIALIZE IOCC DCL02420 0091 7002 243 | MDX CL350 DCL02430 0092 1404 244 | CL330 DC /1404 START 1442 IOCC FUNCT. DCL02440 0093 1703 245 | CL340 DC /1703 TEST 1442 IOCC FUNCT. DCL02450 246 | * DCL02460 247 | * THIS ROUTINE MOVES THE CORE IMAGE LOADER DCL02470 248 | * FROM THE PLACE THAT IT IS LOADED TO LOW CORE DCL02480 249 | * DCL02490 0094 6500 FF7E 250 | CL350 LDX L1 -CL310 LOAD WORD COUNT DCL02500 0096 C500 00F6 251 | LD L1 CL280+CL310+1 MOVE A WORD DCL02510 0098 D500 0086 252 | STO L1 CL290+CL310+1 DCL02520 009A 7101 253 | MDX 1 1 DECREMENT WORD COUNT DCL02530 009B 70FA 254 | MDX *-6 BRANCH IF NOT ZERO DCL02540 009C 4C00 0025 255 | BSC L CL140 ENTER CORE IMAGE LOADER DCL02550 009E 256 | END CL320 DCL02560 There were no errors in this assembly Program transfer address = 00F6 === CROSS REFERENCES ========================================================== Name Val Defd Referenced CL010 0004 77 231 CL020 0005 79 131 136 240 CL030 0007 81 92 93 137 CL040 0009 83 94 105 129 242 CL050 000A 84 107 132 180 190 CL060 000B 85 109 172 186 208 CL070 000D 90 82 96 CL080 0016 100 108 CL090 0018 103 86 CL100 001F 109 182 CL110 0000 115 91 95 100 104 CL120 0023 116 106 CL130 0024 117 122 175 CL140 0025 121 111 213 255 CL150 002B 129 130 CL160 0037 144 165 CL170 003B 147 159 162 CL180 003D 149 153 154 158 CL200 004B 161 156 CL210 004E 163 160 CL220 0056 173 177 CL230 0063 186 170 CL240 0066 188 179 CL250 006C 195 189 CL260 0076 202 207 CL270 0085 222 78 123 138 139 169 173 188 195 201 212 217 218 231 CL275 00D6 223 CL280 0073 228 230 251 CL290 0003 229 230 252 CL300 0070 230 232 235 240 242 CL310 0082 231 250 251 252 CL320 00F6 232 256 CL330 0092 244 239 CL340 0093 245 241 CL350 0094 250 235 243 RTEX3 003F 151 157