ASM1130 CROSS ASSEMBLER V1.22 -- V2M12 -- Sun Nov 1 19:25:06 2020 Source File: \pmndkrpq.asm 1 | ABS DKN00010 00F0 2 | ORG /00F0 DKN00020 3 | *************************************************** DKN00030 4 | * * DKN00040 5 | * STATUS - VERSION 1, MODIFICATION LEVEL 3 * DKN00050 6 | * * DKN00060 7 | *THIS IS A SPECIAL VERSION OF DISKN FOR 2311 DISK * DKN00070 8 | **DRIVE ATTACHMENT TO THE 1133 MULTIPLEXER * DKN00080 9 | * * DKN00090 10 | *FUNCTION/OPERATION- * DKN00100 11 | * DISKN HAS THE FOLLOWING SIX DISK FUNCTIONS- * DKN00110 12 | * *TEST (TEST FOR 2311 UNIT BUSY) * DKN00120 13 | * *READ * DKN00130 14 | * *WRITE WITHOUT READ-BACK-CHECK * DKN00140 15 | * *WRITE WITH READ-BACK-CHECK * DKN00150 16 | * *WRITE IMMEDIATE * DKN00160 17 | * *SEEK * DKN00170 18 | *ENTRY POINTS- * DKN00180 19 | * DISKN IS ENTERED * DKN00190 20 | * *FROM THE MONITOR AT DN000 (00F2) * DKN00200 21 | * *FROM THE TRANSFER VECTOR AT DN030 - 3 * DKN00210 22 | * AS FOLLOWS- * DKN00220 23 | * LIBF DISKN (OR BSI L DZ000) * DKN00230 24 | * DC /WXYZ CONTROL * DKN00240 25 | * DC AREA I/O AREA ADDRESS * DKN00250 26 | * DC ERROR ERROR ROUTINE * DKN00260 27 | * WHERE- W = I/O FUNCTION CODE * DKN00270 28 | * X = NOT USED * DKN00280 29 | * Y = SEEK OPTION * DKN00290 30 | * Z = DISPLACEMENT OPTION * DKN00300 31 | * * DKN00310 32 | *EXTERNAL REFERENCES- (ALL IN COMMA) * DKN00320 33 | * $ACDE * DKN00330 34 | * $CYLN * DKN00340 35 | * $DBSY * DKN00350 36 | * $DCYL * DKN00360 37 | * $EXIT * DKN00370 38 | * $FPAD * DKN00380 39 | * $IOCT * DKN00390 40 | * $PST2 * DKN00400 41 | * $PRET * DKN00410 42 | * * DKN00420 43 | *EXITS- NORMAL * DKN00430 44 | * *RETURN TO CALL + 3 ON TEST AND WRITE * DKN00440 45 | * IMMEDIATE FUNCTIONS. * DKN00450 46 | * *RETURN TO CALL + 4 ON ALL OTHER FUNCTIONS. * DKN00460 47 | * * DKN00470 48 | *EXITS- ERROR * DKN00480 49 | * *BRANCH TO $PRET WITH /5000 IN ACCUMULATOR * DKN00490 50 | * WHEN DISK NOT READY. * DKN00500 51 | * *BRANCH TO $PRET WITH /5001 IN ACCUMULATOR * DKN00510 52 | * ON BAD CALL. * DKN00520 53 | * *BRANCH TO $PST2 WITH /5003 IN ACCUMULATOR * DKN00530 54 | * ON WRITE SELECT OR POWER UNSAFE. * DKN00540 55 | * ***DRIVE CODE AND SECTOR ADDRESS IN EXT. * DKN00550 56 | * *BRANCH TO $EXIT ON DISK OVERFLOW. * DKN00560 57 | * *BRANCH TO CALLER ERROR ROUTINE ON POST- * DKN00570 58 | * OPERATIVE ERROR. * DKN00580 59 | * * DKN00590 60 | *ATTRIBUTES- * DKN00600 61 | * *DISKN MAY BE CALLED FROM THE MONITOR OR BY * DKN00610 62 | * A LIBF. * DKN00620 63 | * *DISKN WILL OPERATE ON THE 2311 AND THE HOME* DKN00630 64 | * FILE SIMULTANEOUSLY. * DKN00640 65 | * *DISKN ACCEPTS I/O AREAS BEGINNING ON UNEVEN* DKN00650 66 | * BOUNDARIES. * DKN00660 67 | * *DISKN IS NOT RELOCATABLE. * DKN00670 68 | * *DISKN WILL NOT ALLOW OVERLAP WITH THE 2311* DKN00680 69 | * *DISKN IS REUSABLE. * DKN00690 70 | * DRIVE AND WILL TRAP THE SECOND OPERATION * DKN00700 71 | * DIRECTED TO THE 2311 UNTIL THE FIRST OPER- * DKN00710 72 | * TION IS COMPLETED. * DKN00720 73 | * *A SEEK IS NOT PHYSICALLY PERFORMED UNTIL * DKN00730 74 | * A XIO READ OR WRITE IS ISSUED TO THE 2311. * DKN00740 75 | * * DKN00750 76 | *NOTES- NONE * DKN00760 77 | * * DKN00770 78 | *************************************************** DKN00780 00F0 02B1 79 | DC $NEND-* DISKN WORD COUNT DKN00790 00F1 FF68 80 | DC /FF68 -'DNID DKN00800 00F2 02AA 81 | DC $NEND-6-*+1 ADDR OF SLET EXTRACT DKN00810 00F3 0001 82 | DC 1 NO ENTRIES IN SLET EXTRACT DKN00820 00F2 83 | ORG *-2 DKN00830 00F2 0000 84 | DN000 DC *-* ENTRY PT FOR MONITOR PROGS. DKN00840 00F3 6A33 85 | STX 2 DN110+3 SAVE CONTENTS OF XR2. DKN00850 00F4 6600 0166 86 | LDX L2 DN902 FETCH ADDR OF PSEUDO CALL. DKN00860 00F6 7044 87 | MDX DN210 BRANCH AROUND ENTRY POINTS. DKN00870 00F7 0000 88 | DN020 DC *-* ENTRY POINT FOR INTERRUPTS. DKN00880 00F8 7068 89 | MDX DN240 BR TO INTERRUPT PROCESSING. DKN00890 00F9 6A2D 90 | STX 2 DN110+3 SAVE CONTENTS OF XR2. DKN00900 00FA 6680 0000 91 | LDX I2 *-* PUT LINK WD FROM TV IN XR2. DKN00910 00FC 6928 92 | DN030 STX 1 DN110+1 SAVE CONTENTS OF XR1 DKN00920 00FD 6A4D 93 | STX 2 DN230+1 SAVE ADDRESS OF CALL+1. DKN00930 00FE D867 94 | STD DN902 SAVE CONTENTS OF ACC/EXT. DKN00940 00FF 2822 95 | STS DN100 SAVE STATUS OF INDICATORS. DKN00950 0100 C200 96 | DN040 LD 2 0 LOAD CONTROL PARAMETER 2-11 DKN00960 0101 188C 97 | SRT 12 ISOLATE FIRST DIGIT 2-11 DKN00970 0102 4C18 0109 98 | BSC L DN050-3,+- BR IF FUNC IS TEST 2-11 DKN00980 0104 C201 99 | LD 2 1 LOAD ADDR OF USERS BUFFER DKN00990 0105 D400 0001 100 | STO L DNXR1 POINT XR1 TO USERS 2-11 DKN01000 101 | * *BUFFER 2-11 DKN01010 0107 C101 102 | LD 1 1 LOAD USERS SECTOR ADDRESS. DKN01020 0108 1890 103 | SRT 16 SHIFT TO EXTENSION. DKN01030 0109 1085 104 | SLT 5 SET UP XR1 DKN01040 010A 1801 105 | SRA 1 * WITH THE 2-11 DKN01045 010B D001 106 | STO DN050+1 * LOGICAL 2-11 DKN01050 010C 6500 0000 107 | DN050 LDX L1 *-* * DRIVE CODE NUMBER. DKN01060 010E 71FC 108 | MDX 1 -4 SKIP IF DR CODE LEGAL 2-11 DKN01100 010F 7025 109 | MDX DN200 BR TO PRE-OP ERROR EXIT. DKN01110 0110 7104 110 | MDX 1 4 RESET XR1 TO DR CODE 2-11 DKN01120 0111 1000 111 | DN060 NOP IN CASE OF SKIP. DKN01130 0112 2000 112 | DN070 LDS 0 TURN OFF OVERFLOW INDICATOR DKN01140 0113 C200 113 | LD 2 0 LOAD CONTROL PARAMETER. DKN01150 0114 180C 114 | SRA 12 ISOLATE FUNCTION CODE. DKN01160 0115 4C20 016B 115 | BSC L DN250,Z BRANCH IF NOT TEST FUNCTION DKN01170 116 | * DKN01180 117 | * PERFORM THE TEST FUNCTION. DKN01190 118 | * DKN01200 0117 C500 009F 119 | LD L1 $ACDE LOAD AREA CODE OF DR N 2-11 DKN01210 0119 4400 034A 120 | BSI L DN700 UPON RETURN FR DN700 2-11 DKN01220 121 | * *ACC = 0, IF HOME FILE 2-11 DKN01230 122 | * *ACC = 2, IF 1ST 2311 2-11 DKN01240 123 | * *ACC = 4, IF 2ND 2311 2-11 DKN01250 011B 4808 124 | BSC + SKIP IF NOT HOME FILE 2-11 DKN01255 011C 8046 125 | A DN914 ADD 1 2311 DKN01260 011D E0D0 126 | AND $DBSY COMPARE WITH BUSY IND 2311 DKN01270 011E 4820 127 | BSC Z SKIP IF NOT BUSY 2311 DKN01280 011F 72FF 128 | MDX 2 -1 SET UP FOR RETURN TO CALL+3 DKN01290 0120 7203 129 | DN090 MDX 2 3 SET UP FOR RETURN TO CALL+4 DKN01300 130 | * DKN01310 131 | * RESTORE REGISTERS AND INDICATORS DKN01320 132 | * AND SET UP FOR RETURN TO CALLING PROGRAM. DKN01330 133 | * DKN01340 0121 C844 134 | LDD DN902 RESTORE CONTENTS OF ACC/EXT DKN01350 0122 2000 135 | DN100 LDS 0 RESTORE CARRY AND OVERFLOW. DKN01360 0123 6A05 136 | STX 2 DN120 STORE RETURN ADDRESS. DKN01370 0124 6500 0000 137 | DN110 LDX L1 *-* RESET XR1 TO ORIG CONTENTS. DKN01380 0126 6600 0000 138 | LDX L2 *-* RESET XR2 TO ORIG CONTENTS. DKN01390 0128 4C00 0000 139 | BSC L *-* RETURN TO USER. DKN01400 0129 140 | DN120 EQU *-1 DKN01410 141 | * DKN01420 9 142 | * CONSTANTS AND WORK AREAS. DKN01430 143 | * DKN01440 012A 5000 144 | DN900 DC /5000 DISK NOT READY ERROR CODE. DKN01450 012B 5001 145 | DN901 DC /5001 BAD CALL ERROR CODE. DKN01460 146 | * DKN01470 012C 0005 147 | DN903 DC 5 CONSTANT DKN01480 148 | * DKN01490 149 | * PREPARE TO MAKE PRE-OPERATIVE ERROR EXIT. DKN01500 150 | * DKN01510 012D C0FC 151 | DN170 LD DN900 LOAD DISK NOT RDY ERR CODE. DKN01520 012E 7007 152 | MDX DN200+1 BRANCH TO EXIT TO $PRET. DKN01530 012F C10C 153 | DN180 LD 1 DN982-D IS IT A MONITOR CALL DKN01540 0130 9037 154 | S DN902+2 DKN01550 0131 4C18 031B 155 | BSC L DN610,+- BRANCH IF YES DKN01560 0133 4C01 01EC 156 | DN190 BSC L DN380,O BR IF IT IS A POST-OP ERR. DKN01570 0135 C0F5 157 | DN200 LD DN901 FETCH PREOP ERROR CODE. DKN01580 0136 6680 014B 158 | LDX I2 DN230+1 LD XR2 WITH ADDR OF CALL+1. DKN01590 0138 4400 0028 159 | BSI L $PRET BR TO PREOPERATIVE ERR TRAP DKN01600 013A 70C5 160 | MDX DN040 BRANCH TO RE-ENTER DISKN. DKN01610 161 | * DKN01620 162 | * SET UP CONTROL PARAMETER FOR MONITOR CALL. DKN01630 163 | * DKN01640 013B 1008 164 | DN210 SLA 8 DKN01650 013C 4820 165 | BSC Z BRANCH IF READ OPERATION. DKN01660 013D C0D4 166 | LD DN070 SET UP FUNCTION DKN01670 013E 80D2 167 | A DN060 *INDICATOR. DKN01680 013F 70BC 168 | MDX DN030 BR TO CONT PROCESSING CALL. DKN01690 169 | * DKN01700 170 | * SET THE BIT FOR DRIVE N IN THE DISK BUSY DKN01710 171 | * INDICATOR AND INCREMENT THE SYSTEM I/O COUNTER. DKN01720 172 | * DKN01730 0140 C400 0001 173 | DN220 LD L DNXR1 LOAD VALUE IN XR1 2-11 DKN01740 0142 9038 174 | S DN260+1 SET TO 2-11 DKN01750 175 | * * 0, IF HOME FILE 2-11 DKN01760 176 | * * 2, IF 1ST 2311 2-11 DKN01770 177 | * * 4, IF 2ND 2311 2-11 DKN01780 0143 4808 178 | BSC + SKIP IF POSITIVE 2-11 DKN01790 0144 801E 179 | A DN914 ADD 1 2-11 DKN01800 0145 E8A8 180 | OR $DBSY SET APPROPRIATE BIT ON 2-11 DKN01810 0146 D0A7 181 | STO $DBSY *IN DISK BUSY INDICATOR2-11 DKN01820 0147 7401 0032 182 | MDX L $IOCT,1 INCREMENT SYS I/O COUNTER. DKN01830 0149 1000 183 | NOP IN CASE OF SKIP DKN01840 014A 6600 0000 184 | DN230 LDX L2 *-* XR2 = ADDRESS OF CALL+1. DKN01850 014C C10D 185 | LD 1 DN983-D LOAD SEEK FLAG 2311 DKN01860 014D 4C10 0152 186 | BSC L DN235,- BR IF NO SEEK NEEDED 212 DKN01870 014F 0C00 02B8 187 | XIO L DN952 OTHERWISE INITIATE SEEK2311 DKN01880 0151 70CE 188 | MDX DN090 TO RETN TO CALL +4 DKN01881 0152 C1FA 189 | DN235 LD 1 DN970-D LOAD RD-AFTER-SEEK FLAG 212 DKN01882 0153 4C30 0160 190 | BSC L DN236,Z- RETURN 212 DKN01883 0155 C101 191 | LD 1 DN978+1-D HAS SEEK BEEN CHECKED 212 DKN01884 0156 4C10 0160 192 | BSC L DN236,- YES, RETURN 212 DKN01885 0158 C0FF 193 | LD *-1 LOAD NEGATIVE NUMBER 212 DKN01890 194 | * DKN01891 0159 D10D 195 | STO 1 DN983-D STORE IN SEEK FLAG 212 DKN01892 015A 6909 196 | STX 1 DN904 212 DKN01893 015B C400 0218 197 | LD L DN912 LOAD /0101 212 DKN01894 015D F1F5 198 | EOR 1 DN968-D EXCLUSIVE OR WITH SENSE 212 DKN01895 015E D006 199 | STO DN904+1 WD 2 OF READ IOCC 212 DKN01896 015F 0804 200 | XIO DN904 ISSUE READ COMMAND 212 DKN01897 0160 70BF 201 | DN236 MDX DN090 212 DKN01898 202 | * DKN01900 0161 4C00 0224 203 | DN240 BSC L DN440 BR TO INTERRUPT PROCESSING. DKN01910 0163 0001 204 | DN914 DC /0001 WORD USED TO SET $DBSY 2-9 DKN01920 205 | * DKN01940 206 | * PSEUDO CALL TO DISKN FOR MONITOR. DKN01950 207 | * DKN01960 0164 208 | DN904 BSS E 2 READ-CHECK IOCC 212 DKN01965 0166 209 | BSS E 0 DKN01970 0166 0000 210 | DN902 DC *-* WD TO SAVE CONTENTS OF ACC. DKN01980 0167 0000 211 | DC *-* WD TO SAVE CONTENTS OF EXT. DKN01990 0168 0085 212 | DC $PST2 ADDR POSTOPERATIVE ERR TRAP DKN02000 0169 4C80 00F2 213 | BSC I DN000 BRANCH TO RETURN TO MONITOR DKN02010 214 | * DKN02020 215 | * PROCESS ALL FUNCTIONS EXCEPT TEST. DKN02030 216 | * DKN02040 016B C500 009F 217 | DN250 LD L1 $ACDE LOAD DR N AREA CODE 2-11 DKN02050 016D 4C18 0135 218 | BSC L DN200,+- BR IF DR NOT ON SYSTEM 2-11 DKN02055 016F 4400 034A 219 | BSI L DN700 UPON RETURN FR DN700 2-11 DKN02060 220 | * *ACC = 0, IF HOME FILE 2-11 DKN02070 221 | * *ACC = 2, IF 1ST 2311 2-11 DKN02080 222 | * *ACC = 4, IF 2ND 2311 2-11 DKN02085 0171 D007 223 | STO DN255+1 SAVE FOR XR1 SETTING 2-11 DKN02090 0172 4808 224 | BSC + SKIP IF NOT HOME FILE 2-11 DKN02095 0173 80EF 225 | A DN914 SET BIT FOR DRIVE N 2311 DKN02100 0174 E400 00EE 226 | AND L $DBSY COMPARE WITH BUSY IND 212 DKN02110 0176 4C20 016B 227 | BNZ DN250 BRANCH ON BUSY 2311 DKN02120 0178 6500 0000 228 | DN255 LDX L1 *-* XR1 = 2*PHY DEVICE 2-11 DKN02125 017A 7500 036A 229 | DN260 MDX L1 D POINT XR1 TO APPROPRIATE DKN02130 017C C201 230 | LD 2 1 LOAD AND SAVE ADDRESS 2-11 DKN02132 017D D12A 231 | STO 1 DN994-D *OF USERS I/O AREA 2-11 DKN02134 017E C202 232 | LD 2 2 LOAD AND SAVE ADDRESS 2-11 DKN02136 017F D10C 233 | STO 1 DN982-D *OF USERS ERROR SUBR 2-11 DKN02138 0180 C200 234 | LD 2 0 LOAD CONTROL PARAMETER. DKN02140 0181 6680 010D 235 | LDX I2 DN050+1 XR2 = LOGICAL DR NO. 2-11 DKN02142 0183 D112 236 | STO 1 DN984-D SAVE CONTROL PARAMETER 2-11 DKN02144 0184 100C 237 | SLA 12 ISOLATE FOURTH DIGIT. DKN02150 0185 4C18 018B 238 | BSC L DN270,+- BR IF SECT ADDR IS ABSOLUTE DKN02160 0187 108B 239 | SLT 11 SHIFT IN USERS SECTOR ADDR. DKN02170 0188 8600 0095 240 | A L2 $FPAD ADD IN FILE PROT ADDR 2-11 DKN02180 018A 188B 241 | SRT 11 SHIFT SECTOR ADDR INTO EXT. DKN02190 018B 108F 242 | DN270 SLT 15 SHIFT SCT ADDR INTO ACC DKN02200 018C 1804 243 | SRA 4 *AND SHIFT OUT DR NO DKN02210 018D D11E 244 | STO 1 DN990-D STORE INITIAL SECTOR ADDR. DKN02220 018E D11F 245 | STO 1 DN991-D STORE WORKING SECTOR ADDR. DKN02230 018F C112 246 | LD 1 DN984-D LOAD CONTROL PARAMETER 2-11 DKN02280 0190 18CC 247 | RTE 12 ISOLATE FUNCTION CODE DKN02290 0191 D112 248 | STO 1 DN984-D SAVE FUNCTION CDE DKN02300 0192 C400 0002 249 | LD L DNXR2 LOAD LOGICAL DR NO. 2-11 DKN02310 0194 D1FB 250 | STO 1 DN976-D *AND SAVE FOR USE IN 2-11 DKN02320 251 | * *INTERRUPT PROCESSING 2-11 DKN02330 0195 C600 009F 252 | LD L2 $ACDE LOAD AREA CODE OF DR N 2-11 DKN02420 0197 E860 253 | OR DN931 OR IN 2ND WD OF SENSE IOCC. DKN02430 0198 D1F5 254 | STO 1 DN968-D STORE IN SENSE IOCC 2-11 DKN02440 0199 09F4 255 | XIO 1 DN968-1-D SENSE DR N W/RESET 2-11 DKN02450 019A 4C28 01BB 256 | BSC L DN300,Z+ BR IF WR/SEL OR PWR/UNSAFE. DKN02460 019C 1002 257 | SLA 2 TEST NOT READY BIT OF DSW. DKN02470 019D 4C28 012D 258 | BSC L DN170,Z+ BRANCH IF DRIVE N NOT READY DKN02480 019F C112 259 | DN280 LD 1 DN984-D LOAD FUNCTION CODE. DKN02490 01A0 908B 260 | S DN903 SUBTRACT FIVE. DKN02500 01A1 D1FA 261 | STO 1 DN970-D DKN02510 01A2 4C30 0135 262 | BSC L DN200,Z- BR IF FUNCTION CODE ILLEGAL DKN02520 01A4 4C20 02BE 263 | BSC L DN560,Z BR IF FUNCTION IS NOT SEEK. DKN02530 01A6 1088 264 | SLT 8 ISOLATE THIRD DIGIT DKN02540 01A7 100C 265 | SLA 12 *OF CONTROL PARAMETER. DKN02550 01A8 4C18 02E6 266 | BSC L DN580,+- BR IF SEEK OPTION NOT USED. DKN02560 01AA 4C00 02DC 267 | BSC L DN570+1 SET UP SCTR ADDR FOR SK-OPT DKN02570 268 | * DKN02580 269 | * RESET THE BIT FOR DRIVE N IN THE DISK BUSY DKN02590 270 | * INDICATOR AND DECREMENT THE SYSTEM I/O COUNTER. DKN02600 271 | * DKN02610 01AC 0000 272 | DN290 DC *-* DKN02620 01AD C400 0001 273 | LD L DNXR1 LOAD VALUE IN XR1 2-11 DKN02630 01AF 90CB 274 | S DN260+1 SET TO 2-11 DKN02640 275 | * * 0, IF HOME FILE 2-11 DKN02650 276 | * * 2, IF 1ST 2311 2-11 DKN02660 277 | * * 4, IF 2ND 2311 2-11 DKN02670 01B0 4808 278 | BSC + SKIP IF POSITIVE 2-11 DKN02680 01B1 80B1 279 | A DN914 ADD 1 2-11 DKN02690 01B2 74FF 0032 280 | MDX L $IOCT,-1 DECREMENT I/O COUNTER 2-11 DKN02700 01B4 1000 281 | NOP IN CASE OF SKIP 2-11 DKN02710 01B5 F400 00EE 282 | EOR L $DBSY SET OFF BUSY BIT FOR DKN02720 01B7 D400 00EE 283 | STO L $DBSY *DR N AND SAVE DKN02730 01B9 4C80 01AC 284 | BSC I DN290 DKN02740 285 | * DKN02750 01BB C05A 286 | DN300 LD DN911 LD WR/SEL-PWR UNSAFE ERR CD DKN02760 01BC 4C00 0136 287 | BSC L DN200+1 BR TO SET UP ERROR EXIT 212 DKN02770 288 | * DKN02780 289 | * CONSTANTS AND WORK AREAS. DKN02790 290 | * DKN02800 291 | * DKN02810 292 | * DKN02820 293 | * SET UP FOR AND THEN BRANCH TO ERROR DKN02830 294 | * SUBROUTINE OF THE CALLING PROGRAM. DKN02840 295 | * DKN02850 01BE 0000 296 | DN340 DC *-* DKN02860 01BF 1890 297 | SRT 16 SHIFT ERROR CODE TO EXT. DKN02870 01C0 C10C 298 | LD 1 DN982-D TEST FOR MONITOR CALL DKN02880 01C1 90A6 299 | S DN902+2 DKN02890 01C2 4C20 01C6 300 | BSC L DN345,Z BR IF NOT MONITOR CALL DKN02900 01C4 C056 301 | LD DN934 LD ER DISP FOR MON CALL 2-9 DKN02910 01C5 1890 302 | SRT 16 SHIFT ERROR CODE TO EXT. DKN02920 01C6 C04E 303 | DN345 LD DN930 RESET RETRY DKN02930 01C7 D113 304 | STO 1 DN985-D *COUNTER TO 16. DKN02940 01C8 C1FB 305 | LD 1 DN976-D LOAD LOGICAL DRIVE NO. 2-11 DKN02950 01C9 100C 306 | SLA 12 PUT DRIVE CODE IN BITS 0-3. DKN02970 01CA E91F 307 | OR 1 DN991-D OR IN SECTOR ADDRESS. DKN02980 01CB 18D0 308 | RTE 16 DKN02990 01CC 4580 000C 309 | BSI I1 DN982-D BR TO USERS ERROR ROUTINE. DKN03000 01CE 4C80 01BE 310 | BSC I DN340 RETURN TO WHERE ERROR FOUND DKN03010 311 | * DKN03020 01D0 1002 312 | DN350 SLA 2 BR IF NOT WRITE 2-8 DKN03030 01D1 4C10 01D8 313 | BSC L DN356,- *SELECT ERROR 2-8 DKN03040 01D3 C042 314 | LD DN911 ERROR CODE TO ACC 2-8 DKN03050 01D4 4400 0085 315 | BSI L $PST2 BR TO POST ERR TRAP 2-8 DKN03060 01D6 40D5 316 | BSI DN290 RESET $IOCT,$DBSY 2-8 DKN03070 01D7 7018 317 | MDX DN382 BR TO CONTINUE TO EXIT 2-8 DKN03080 01D8 C112 318 | DN356 LD 1 DN984-D LOAD FUNCTION CODE DKN03090 01D9 1802 319 | SRA 2 SEE IF FUNC WRITE IMMEDIATE DKN03100 01DA 4C20 024F 320 | BSC L DN460,Z BR IF FUNC WRITE IMMEDIATE. DKN03110 01DC C12B 321 | LD 1 DN995-D SEE IF ERROR IN RDBCK CHECK DKN03120 01DD 4C04 0200 322 | BSC L DN400,E BRANCH IF READBACK CHECK. DKN03130 01DF C113 323 | LD 1 DN985-D LOAD AND DKN03140 01E0 9039 324 | S DN933 * DECREMENT DKN03150 01E1 D113 325 | STO 1 DN985-D * RETRY COUNTER. DKN03160 01E2 4C20 01EA 326 | BSC L DN370,Z BRANCH TO TRY AGAIN. DKN03170 01E4 C112 327 | DN360 LD 1 DN984-D LOAD FUNCTION CODE. DKN03180 01E5 1801 328 | SRA 1 SET UP DKN03190 01E6 8033 329 | A DN933 *ERROR CODE. DKN03200 01E7 40D6 330 | BSI DN340 BRANCH TO SET UP ERROR EXIT DKN03210 01E8 4C18 024F 331 | BSC L DN460,+- BRANCH TI IGNORE ERROR. DKN03220 01EA 0918 332 | DN370 XIO 1 DN986-D RETRY READ OR WRITE. DKN03230 01EB 705B 333 | MDX DN450-1 BR TO RETRN TO INT LEV 2311 DKN03240 334 | * DKN03250 335 | * SET UP FOR POST-OPERATIVE DISK OVFLO ERROR EXIT. DKN03260 336 | * DKN03270 01EC C400 035E 337 | DN380 LD L DN963 LOAD ERROR CODE DKN03280 01EE 40CF 338 | BSI DN340 BRANCH TO SET UP ERROR EXIT DKN03290 01EF 40BC 339 | BSI DN290 BR TO RESET BUSY INDRS DKN03300 01F0 4C40 01F2 340 | DN382 BOSC L * TURN OFF INTERRUPT LEVEL. DKN03310 01F2 7400 00EE 341 | MDX L $DBSY,0 LOOP UNTIL ALL DISK DKN03320 01F4 70FD 342 | MDX *-3 *OPERATIONS COMPLETE. DKN03330 01F5 6038 343 | EXIT EXECUTE A CALL EXIT DKN03340 344 | * DKN03350 345 | * CONSTANTS AND WORK AREAS. DKN03360 346 | * DKN03370 01F6 0680 347 | DN920 DC /0680 READBACK CHECK IOCC WORD. DKN03380 01F7 2028 348 | DN921 DC /2028 CONSTANT OF HEX 2028. DKN03390 01F8 0701 349 | DN931 DC /0701 2ND WORD OF SENSE W/RESET DKN03400 350 | * DKN03410 01F9 C112 351 | DN390 LD 1 DN984-D LOAD FUNCTION CODE. DKN03420 01FA 9021 352 | S DN932 SUBTRACT THREE. DKN03430 01FB 4C20 0222 353 | BSC L DN430,Z BR IF NOT WR W/RDBCK CHECK. DKN03440 01FD C12B 354 | LD 1 DN995-D SEE IF READBACK CHECK DONE. DKN03450 01FE 4C04 0220 355 | BSC L DN420,E BR IF READBACK CHECK DONE. DKN03460 0200 9019 356 | DN400 S DN933 DECREMENT READBACK DKN03470 0201 D12B 357 | STO 1 DN995-D *CHECK RETRY COUNTER. DKN03480 0202 4C18 021D 358 | BSC L DN415,+- BRANCH IF 16 RETRIES MADE. DKN03490 0204 4C04 020F 359 | BSC L DN410,E BRANCH TO READBACK CHECK. DKN03500 0206 C118 360 | LD 1 DN986-D RESTORE 2-6 DKN03510 0207 D400 0002 361 | STO L DNXR2 *FIRST TWO WORDS 2-9 DKN03520 0209 C106 362 | LD 1 DN980-D * IF 2-6 DKN03530 020A D200 363 | STO 2 0 * ERROR 2-6 DKN03540 020B C107 364 | LD 1 DN980+1-D * IN 2-6 DKN03550 020C D201 365 | STO 2 1 * READ BACK CHECK 2-6 DKN03560 020D C074 366 | LD DN941 LD WD TO SET UP WRITE IOCC. DKN03570 020E 7001 367 | MDX *+1 SKIP OVER NEXT INSTRUCTION. DKN03580 020F C0E6 368 | DN410 LD DN920 LD WD TO SET UP RDBK/CHK. DKN03590 0210 D119 369 | STO 1 DN986+1-D STORE IN 2ND WORD OF IOCC. DKN03600 0211 C11E 370 | LD 1 DN990-D LOAD ORIGINAL SECTOR ADDR. DKN03610 0212 D11F 371 | STO 1 DN991-D STORE AS WORKING SECT ADDR. DKN03620 0213 2001 372 | LDS 1 SET OVERFLOW INDICATOR. DKN03630 0214 708A 373 | MDX DN280 BR TO SET UP FOR RDBACK/CHK DKN03640 374 | * DKN03650 375 | * CONSTANTS AND WORK AREAS. DKN03660 376 | * DKN03670 0215 0011 377 | DN930 DC @TCNT NUMBER OF RETRIES TO MAKE. DKN03680 0216 5002 378 | DN911 DC /5002 WR/SEL-PWR UNSAFE ERROR CODEDKN03690 0218 379 | BSS E 0 DKN03700 0218 0101 380 | DN912 DC /0101 MASK FOR BUILDING READ IOCC DKN03710 0219 0300 381 | DC /0300 2ND WD OF SENSE INTRPT IOCC DKN03720 021A 0001 382 | DN933 DC 1 CONSTANT OF DECIMAL ONE. DKN03730 021B 5003 383 | DN934 DC /5003 MONITOR CALL DISK ERROR CD. DKN03740 021C 0003 384 | DN932 DC 3 WRITE W/RDBCK FUNCTION CODE DKN03750 385 | * DKN03760 021D C063 386 | DN415 LD DN940 RESET READBACK CHECK DKN03770 021E D12B 387 | STO 1 DN995-D *RETRY COUNTER TO 32. DKN03780 021F 70C4 388 | MDX DN360 BRANCH TO ERROR EXIT. DKN03790 389 | * DKN03800 390 | * SET UP FOR RETURN TO INTERRUPT LEVEL. DKN03810 391 | * DKN03820 0220 C060 392 | DN420 LD DN940 RESTORE READBACK CHECK DKN03830 0221 D12B 393 | STO 1 DN995-D *RETRY COUNTER TO 32. DKN03840 0222 4089 394 | DN430 BSI DN290 BRANCH TO RESET $DBSY DKN03850 0223 7023 395 | MDX DN450-1 BR TO RETRN TO INT LEV*2311 DKN03860 396 | * DKN03870 0224 6100 397 | DN440 LDX 1 0 2-11 DKN03880 0225 08F2 398 | XIO DN912 SENSE THE ILSW DKN03890 0226 6205 399 | DN445 LDX 2 5 2-11 DKN03895 0227 4C28 022C 400 | BSC L DN446,+Z SET XR1 AS FOLLOWS 2-11 DKN03900 0229 1240 401 | SLCA 2 * 0,IF HOME FILE INT. 2-11 DKN03910 022A 7102 402 | MDX 1 2 * 2,IF 1ST 2311 INTRPT 2-11 DKN03920 022B 70FA 403 | MDX DN445 * 4,IF 2ND 2311 INTRPT 2-11 DKN03930 022C 7500 036A 404 | DN446 MDX L1 D INCRE POINT. TO TABLES 2-11 DKN03940 022E C1FB 405 | LD 1 DN976-D LOAD LOGICAL DR NO. 2-11 DKN03945 022F D400 0002 406 | STO L DNXR2 XR2 = LOG DR NO. 2-11 DKN03950 0231 CC00 02B8 407 | LDD L DN952 SAVE CONTENTS OF *2311 DKN03960 0233 DC00 02B6 408 | STD L DN942 *WORDS IN CALL PORTION. DKN03970 0235 09F4 409 | XIO 1 DN968-1-D SENSE DR N W/RESET 2-11 DKN03980 0236 E90D 410 | OR 1 DN983-D OR IN SEEK FLAG TO DSW. DKN03990 0237 4C10 024F 411 | BSC L DN460,- BR IF NOT SEEK OR NO ERROR. DKN04000 0239 F10D 412 | EOR 1 DN983-D EXCLUSIVE OR OUT SEEK FLAG. DKN04010 023A 4C28 01D0 413 | BSC L DN350,Z+ BR IF THERE WAS AN ERROR. DKN04020 023C C1FA 414 | LD 1 DN970-D LOAD RD-AFTER-SEEK CHK FLAG DKN04030 023D 4C30 0286 415 | BSC L DN490-1,Z- BRANCH IF NO CHECK NEEDED. DKN04040 023F C101 416 | LD 1 DN978+1-D SEE IF SEEK HAS BEEN CHKD. DKN04050 0240 4C10 0287 417 | BSC L DN490,- BRANCH IF RD HAS BEEN DONE. DKN04060 0242 6975 418 | STX 1 DN952 SET UP BFR ADDR FOR READ. DKN04070 0243 C0D4 419 | LD DN912 SET UP 2ND DKN04080 0244 F1F5 420 | EOR 1 DN968-D * WORD OF 2-11 DKN04090 0245 D073 421 | STO DN952+1 * READ IOCC. DKN04100 0246 0871 422 | XIO DN952 INITIATE READ-AFTER-SEEK. DKN04110 0247 7003 423 | MDX *+3 BRANCH AROUND SEEK 2311 DKN04120 0248 C10D 424 | DN450 LD 1 DN983-D LOAD SEEK FLAG 2311 DKN04130 0249 4828 425 | BSC +Z SKIP IF SEEK NOT NEEDED2311 DKN04140 024A 086D 426 | XIO DN952 OTHERWISE INITIATE SEEK2311 DKN04150 024B C86A 427 | LDD DN942 RESTORE TWO WORDS 2311 DKN04160 024C D86B 428 | STD DN952 *IN CALL PORTION. DKN04170 024D 4C80 00F7 429 | BSC I DN020 RETURN TO INTERRUPT LEVEL. DKN04180 430 | * DKN04190 024F C918 431 | DN460 LDD 1 DN986-D LOAD IOCC OF LAST OPERATION DKN04200 0250 18C3 432 | RTE 3 ADD ONE TO SECTOR NUMBER, DKN04210 0251 80A5 433 | A DN921 *AND 320 TO I/O ADDRESS. DKN04220 0252 18DD 434 | RTE 29 DKN04230 0253 D918 435 | STD 1 DN986-D STO IOCC FOR NEXT OPERATION DKN04240 0254 D400 0002 436 | STO L DNXR2 SET XR2 TO ADDR OF I/O B2-9 DKN04250 0256 C200 437 | LD 2 0 LOAD AND SAVE FIRST DKN04260 0257 D060 438 | STO DN952 *WORD OF I/O BUFFER. DKN04270 0258 C201 439 | LD 2 1 LOAD AND SAVE SECOND DKN04280 0259 D05F 440 | STO DN952+1 *WORD OF I/O BUFFER. DKN04290 025A C125 441 | LD 1 DN993-D LOAD WD CNT FOR NEXT OPER. DKN04300 025B 4808 442 | BSC + SKIP IF POSITIVE. DKN04310 025C 7007 443 | MDX DN470 ALL DONE - BRANCH TO EXIT. DKN04320 025D D200 444 | STO 2 0 STORE WORD COUNT IN BUFFER. DKN04330 025E 4802 445 | BSC C SKIP IF NO SEEK NEEDED. DKN04340 025F D10D 446 | STO 1 DN983-D MAKE SEEK FLAG POSITIVE. DKN04350 0260 C11F 447 | LD 1 DN991-D LOAD AND DKN04360 0261 80B8 448 | A DN933 * INCREMENT WORKING DKN04370 0262 D11F 449 | STO 1 DN991-D * SECTOR ADDRESS. DKN04380 0263 D201 450 | STO 2 1 STORE SECT ADDR IN I/O BUFR DKN04390 0264 C106 451 | DN470 LD 1 DN980-D RESTORE FIRST WORD OF DKN04430 0265 D600 FEC0 452 | STO L2 -320 *LAST I/O BUFFER. DKN04440 0267 C107 453 | LD 1 DN980+1-D RESTORE SECOND WORD OF DKN04450 0268 D600 FEC1 454 | STO L2 -319 *LAST I/O BUFFER. DKN04460 026A 2000 455 | LDS 0 RESET OVERFLOW INDICATOR. DKN04470 026B C84C 456 | LDD DN952 LOAD AND SAVE FIRST TWO DKN04480 026C D906 457 | STD 1 DN980-D *WORDS OF NEW I/O BUFFER. DKN04490 026D C0A7 458 | DN480 LD DN930 RESTORE READ/WRITE DKN04500 026E D113 459 | STO 1 DN985-D *RETRY COUNTER TO 16. DKN04510 026F C118 460 | LD 1 DN986-D SET XR2 TO THE DKN04520 0270 D047 461 | STO DN952 * ADDRESS OF THE DKN04530 0271 6680 02B8 462 | LDX I2 DN952 * DISK BUFFER. DKN04540 0273 C925 463 | LDD 1 DN993-D LOAD WD CNT FOR THIS OPER. DKN04550 0274 4C08 01F9 464 | BSC L DN390,+ BR IF ENTIRE OPERATION DONE DKN04560 0276 D200 465 | STO 2 0 ST WORD CNT IN THE BFR AREA DKN04570 0277 C11F 466 | LD 1 DN991-D SET UP SECTOR ADDRESS DKN04580 0278 D201 467 | STO 2 1 *FOR THIS OPERATION. DKN04590 0279 C10D 468 | LD 1 DN983-D LOAD SEEK FLAG. DKN04600 027A 4C30 02DB 469 | BSC L DN570,Z- BRANCH IF SEEK NECESSARY. DKN04610 027C 09F4 470 | XIO 1 DN968-1-D SENSE DR N W/RESET 2-11 DKN04620 027D 1003 471 | SLA 3 SEE IF DISK N IS BUSY. DKN04630 027E 4810 472 | BSC - SKIP IF DISK N IS BUSY. DKN04640 027F 0918 473 | XIO 1 DN986-D INITIATE NEXT OPERATION. DKN04650 0280 7024 474 | MDX DN520 BR TO SET UP FOR NEXT OPER. DKN04660 475 | * DKN04670 476 | * CONSTANTS AND WORK AREAS. DKN04680 477 | * DKN04690 0281 0022 478 | DN940 DC 2*@TCNT TWICE NO OF RETRIES TO MAKE DKN04700 0282 0500 479 | DN941 DC /0500 WRITE IOCC WORD. DKN04710 480 | * DKN04720 482 | *************************************************** DKN04722 483 | * * DKN04723 484 | *IF A DUMP OPERATION IS REQUIRED, CORE LOCATIONS * DKN04724 485 | * /0284 AND /0285 ARE USED FOR WORD COUNT AND * DKN04725 486 | * SECTOR ADDRESS WHEN WRITING TO THE CORE IMAGE * DKN04726 487 | * BUFFER. THESE LOCATIONS MUST NOT CONTAIN CODE * DKN04727 488 | * WHICH IS EXECUTED IN THAT OPERATION. THUS, THE* DKN04728 489 | * BSS OF 2 WHICH IS SHOWN BELOW MUST RESIDE AT * DKN04729 490 | * THOSE ADDRESSES. * DKN04730 491 | * * DKN04731 492 | *************************************************** DKN04732 0283 7002 494 | MDX *+2 BRANCH AROUND BSS 212 DKN04734 0284 495 | BSS 2 SAVE AREA FOR WC AND SA 212 DKN04735 0286 C11F 496 | LD 1 DN991-D DKN04736 0287 D600 009A 497 | DN490 STO L2 $CYLN SAVE CURRENT ARM POS 2-11 DKN04740 0289 C000 498 | LD * DKN04750 028A D101 499 | STO 1 DN978+1-D DKN04760 028B C113 500 | LD 1 DN985-D LOAD AND DKN04770 028C 908D 501 | S DN933 * DECREMENT DKN04780 028D D113 502 | STO 1 DN985-D RESTORE RETRY COUNTER 212 DKN04796 028E 4C20 02BC 503 | BSC L DN550,Z BRANCH TO TRY AGAIN. DKN04800 0290 C08B 504 | LD DN932 LOAD ERROR CODE. DKN04810 0291 4400 01BE 505 | BSI L DN340 DKN04820 0293 4C20 02BC 506 | BSC L DN550,Z BRANCH TO TRY AGAIN. DKN04830 0295 D10D 507 | STO 1 DN983-D CLEAR SEEK FLAG. DKN04840 0296 1090 508 | DN500 SLT 16 CLEAR EXTENSION. DKN04850 0297 C119 509 | LD 1 DN986+1-D LOAD 2ND WORD OF IOCC. DKN04860 0298 180C 510 | SRA 12 BRANCH IF IOCC AND BUFFER DKN04870 0299 4C20 02AF 511 | BSC L DN530,Z *AREA ALREADY SET UP. DKN04880 029B C1FB 512 | DN510 LD 1 DN976-D LOAD LOGICAL DRIVE NO. 2-11 DKN04886 029C D400 0002 513 | STO L DNXR2 *AND STORE IN XR2 2-11 DKN04888 029E C11F 514 | LD 1 DN991-D LOAD WORKING SECT ADDR 2-11 DKN04890 029F E03A 515 | AND DN954 AND OUT ALL BUT SECTOR NO. DKN04900 02A0 E919 516 | OR 1 DN986+1-D OR IN 2ND WORD OF IOCC. DKN04910 02A1 EE00 009F 517 | OR L2 $ACDE OR IN AREA CODE 2-11 DKN04950 02A3 D119 518 | STO 1 DN986+1-D STORE IN 2ND WORD OF IOCC. DKN04960 02A4 1090 519 | SLT 16 CLEAR EXTENSION. DKN04970 02A5 C124 520 | DN520 LD 1 DN992-D LOAD AND SAVE DKN04980 02A6 D125 521 | STO 1 DN993-D *REMAINING WORD COUNT. DKN04990 02A7 4808 522 | BSC + SKIP IF POSITIVE. DKN05000 02A8 7006 523 | MDX DN530 BR IF OPERATION COMPLETE. DKN05010 02A9 9011 524 | S DN951 SUBTRACT DECIMAL 320. DKN05020 02AA D124 525 | STO 1 DN992-D STORE REMAINING WORD COUNT. DKN05030 02AB 4830 526 | DN525 BSC Z- SKIP IF NOT POSITIVE. DKN05040 02AC 1810 527 | SRA 16 CLEAR ACCUMULATOR. DKN05050 02AD 800C 528 | A DN953 ADD DECIMAL 321. DKN05060 02AE D125 529 | STO 1 DN993-D STORE WORD CNT FOR NEXT OP. DKN05070 02AF 1090 530 | DN530 SLT 16 SHIFT EXTENSION INTO ACC. DKN05080 02B0 E90D 531 | OR 1 DN983-D OR IN SEEK FLAG. DKN05090 02B1 4C01 0140 532 | BSC L DN220,O BRANCH IF CALL PROC. 212 DKN05100 02B3 4C20 0248 533 | BSC L DN450,Z BRANCH IF SEEK IN PROGRESS. DKN05110 02B5 70B7 534 | MDX DN480 BRANCH TO SET UP READ/WRITE DKN05120 535 | * DKN05130 536 | * CONSTANTS AND WORK AREAS. DKN05140 537 | * DKN05150 02B6 538 | DN942 BSS E 2 TWO WORD WORK AREA DKN05160 02B8 539 | DN952 BSS E 2 WORK AREA DKN05170 02BA 0141 540 | DN953 DC 321 1 PLUS NO. WDS PER SECTOR DKN05180 02BB 0140 541 | DN951 DC 320 NO OF WORDS PER SECTOR DKN05190 542 | * DKN05200 02BC 2001 543 | DN550 LDS 1 SET OVERFLOW INDICATOR. DKN05210 02BD 705D 544 | MDX DN610 BRANCH TO SET UP SEEK. DKN05220 545 | * DKN05230 02BE C12A 546 | DN560 LD 1 DN994-D LOAD ADDR OF USERS I/O AREA DKN05240 02BF D118 547 | STO 1 DN986-D STORE IN 1ST WORD OF IOCC. DKN05250 02C0 D0F7 548 | STO DN952 DKN05260 02C1 6680 02B8 549 | LDX I2 DN952 DKN05270 02C3 C200 550 | LD 2 0 LOAD WORD COUNT. DKN05280 02C4 4C08 0135 551 | BSC L DN200,+ BR TO PRE-OP ERR IF NOT +. DKN05290 02C6 D106 552 | STO 1 DN980-D SAVE 1ST WORD OF I/O BUFFER DKN05300 02C7 D124 553 | STO 1 DN992-D SAVE WORD COUNT. DKN05310 02C8 C201 554 | LD 2 1 LOAD AND SAVE SECOND DKN05320 02C9 D107 555 | STO 1 DN980+1-D *WORD OF I/O BUFFER. DKN05330 02CA C112 556 | LD 1 DN984-D LOAD FUNCTION CODE. DKN05340 02CB 1802 557 | SRA 2 SEE IF WRITE IMMEDIATE. DKN05350 02CC 4C08 02E6 558 | BSC L DN580,+ BR IF NOT WRITE IMMEDIATE. DKN05360 02CE C1FB 559 | LD 1 DN976-D LOAD LOGICAL DR NO. 2-11 DKN05364 02CF D400 0002 560 | STO L DNXR2 *AND STORE IN XR2 2-11 DKN05365 02D1 C11F 561 | LD 1 DN991-D LOAD USERS SECTOR ADDRESS. DKN05370 02D2 E007 562 | AND DN954 AND OUT ALL BUT SECTOR NO. DKN05380 02D3 EE00 009A 563 | OR L2 $CYLN OR IN CURRENT ARM POS. 2-11 DKN05390 02D5 D11F 564 | STO 1 DN991-D STORE AS WORKING SCTR ADDR. DKN05400 02D6 74FF 014B 565 | MDX L DN230+1,-1 SET FOR RETURN TO CALL+3. DKN05410 02D8 C0A9 566 | LD DN941 LD 2ND WORD OF WRITE IOCC. DKN05420 02D9 7063 567 | MDX DN630 BRANCH TO SET UP FOR WRITE. DKN05430 568 | * DKN05440 02DA 0007 569 | DN954 DC /0007 MASK TO OBTAIN SCTR NO. DKN05450 570 | * DKN05470 02DB 2001 571 | DN570 LDS 1 SET OVERFLOW INDICATOR. DKN05480 02DC C1FB 572 | LD 1 DN976-D LOAD LOGICAL DR NO. 2-11 DKN05486 02DD D400 0002 573 | STO L DNXR2 *AND STORE IN XR2 2-11 DKN05488 02DF C600 009A 574 | LD L2 $CYLN LOAD CURRENT ARM POS. 2-11 DKN05490 02E1 8079 575 | A DN960 ADD TO IT ONE CYLINDER. DKN05500 02E2 D11F 576 | STO 1 DN991-D STORE AS WORKING SECT ADDR. DKN05510 02E3 C112 577 | LD 1 DN984-D LOAD FUNCTION CODE. DKN05520 02E4 1802 578 | SRA 2 DKN05530 02E5 D1FA 579 | STO 1 DN970-D DKN05540 02E6 C9FA 580 | DN580 LDD 1 DN970-D LOAD FUNCTION CODE 2311 DKN05580 02E7 8073 581 | A DN960 DKN05590 02E8 E072 582 | AND DN960 DKN05600 02E9 D8CE 583 | STD DN952 DKN05610 584 | * DKN05616 585 | * SET UP XR2 WITH ADDR OF DR N DEF CYLN TABLE DKN05618 586 | * DKN05620 02EA 6600 00A4 587 | LDX L2 $DCYL XR2 = BASE DEF CYL TBL 2-11 DKN05622 02EC 7680 02B9 588 | MDX I2 DN952+1 *ADDR. ADD THREE TIMES2-11 DKN05624 02EE 7680 02B9 589 | MDX I2 DN952+1 *THE LOGICAL DRIVE 2-11 DKN05626 02F0 7680 02B9 590 | MDX I2 DN952+1 *NUMBER 2-11 DKN05628 02F2 C069 591 | LD DN961 DKN05630 02F3 1890 592 | SRT 16 DKN05640 02F4 D067 593 | STO DN961 DKN05650 02F5 C11F 594 | LD 1 DN991-D LD WORKING SCTR ADDR DKN05660 02F6 69C2 595 | STX 1 DN952+1 SAVE CONTENTS OF XR1. DKN05670 02F7 6103 596 | LDX 1 3 DKN05680 597 | * DKN05690 598 | * CHECK FOR DEFECTIVE CYLINDERS. DKN05700 599 | * DKN05710 02F8 9200 600 | DN590 S 2 0 SUB A DEFECTIVE CYL LIMIT. DKN05720 02F9 4C28 0300 601 | BSC L DN600,Z+ BR IF NOT DEF CYLN DKN05730 02FB 7408 035C 602 | MDX L DN961,8 COUNTER FOR UNUSED SCTRS DKN05740 02FD 4820 603 | BSC Z DKN05750 02FE 90B9 604 | S DN952 DKN05760 02FF 805B 605 | A DN960 INCREMENT SCTR ADDR BY 8 DKN05770 0300 8200 606 | DN600 A 2 0 ADD THE DEFECTIVE CYL LIMIT DKN05780 0301 7201 607 | MDX 2 1 DKN05790 0302 71FF 608 | MDX 1 -1 DKN05800 0303 70F4 609 | MDX DN590 CHECK NEXT DEFECTIVE ADDR. DKN05810 0304 6580 02B9 610 | LDX I1 DN952+1 RESTORE CONTENTS OF XR1. DKN05820 0306 D11F 611 | STO 1 DN991-D LOAD WORKING SECTOR ADDRESS DKN05830 0307 9054 612 | S DN961 CHECK FOR ADDR ABOVE DKN05840 0308 9059 613 | S DN965 *1600 DKN05850 0309 4C10 0133 614 | BSC L DN190,- BR IF OVERFLOW DKN05860 030B 1090 615 | SLT 16 DKN05870 030C D04F 616 | STO DN961 DKN05880 030D C1FB 617 | LD 1 DN976-D LOAD LOGICAL DRIVE NO. 2-11 DKN05885 030E D400 0002 618 | STO L DNXR2 *AND STORE IN XR2 2-11 DKN05890 0310 C600 0095 619 | LD L2 $FPAD LOAD FILE PROTECT ADDR 2-11 DKN05895 0312 1004 620 | SLA 4 SHIFT OUT DR NO DKN05900 0313 1804 621 | SRA 4 DKN05910 0314 911F 622 | S 1 DN991-D DKN05920 0315 4C08 031B 623 | BSC L DN610,+ BR IF ABOVE FILE PROT ADDR DKN05930 0317 C112 624 | LD 1 DN984-D LOAD FUNCTION CODE. DKN05940 0318 1801 625 | SRA 1 SEE IF FUNCTION IS WRITE. DKN05950 0319 4C04 012F 626 | BSC L DN180,E BRANCH IF FUNCTION IS WRITE DKN05960 627 | * DKN05970 628 | * CHECK TO SEE IF A SEEK IS NECESSARY. DKN05980 629 | * DKN05990 031B 09F4 630 | DN610 XIO 1 DN968-1-D SENSE DR N W/RESET 2-11 DKN05992 031C 1004 631 | SLA 4 HOME BIT TO SIGN 2-11 DKN05994 031D 4828 632 | BSC +Z SKIP IF NOT HOME 2-11 DKN05996 031E 7100 633 | MDX 1 0 SKIP IF PHY DR 0 2-11 DKN05998 031F 7003 634 | MDX DN615 BR TO CHECK FOR SEEK 2-11 DKN06000 0320 1010 635 | SLA 16 PHY DR 0 IS HOME. ZERO 2-11 DKN06002 0321 D600 009A 636 | STO L2 $CYLN *CURRENT ARM POSITION 2-11 DKN06004 0323 C11F 637 | DN615 LD 1 DN991-D LOAD WORKING SECT ADDR 2-11 DKN06006 0324 9600 009A 638 | S L2 $CYLN SUB CURRENT ARM POSITIN2-11 DKN06010 0326 1883 639 | SRT 3 SHIFT IN NO OF CYLS TO SEEK DKN06020 0327 4C18 0335 640 | BSC L DN620,+- BR IF NO SEEK NEEDED DKN06030 641 | * DKN06040 642 | * SEEK DKN06050 643 | * DKN06060 0329 1890 644 | SRT 16 NO OF CYLS INTO EXT 2311 DKN06100 032A E033 645 | AND DN963 AND WITH BIT 13. DKN06110 032B E834 646 | OR DN964 OR IN SEEK IOCC WORD. DKN06120 032C EE00 009F 647 | OR L2 $ACDE OR IN AREA CODE 2-11 DKN06130 032E 18D0 648 | RTE 16 DKN06140 032F 4810 649 | BSC - SKIP IF SEEK TOWARD HOME. DKN06150 0330 7002 650 | MDX *+2 SKIP NEXT TWO INSTRUCTIONS. DKN06160 0331 F02B 651 | EOR DN962 COMPLEMENT NO. CYLINDERS TO DKN06170 0332 902A 652 | S DN962 *BE SOUGHT TO GET POS. NO. DKN06180 0333 D884 653 | STD DN952 STORE IOCC WORDS. DKN06190 0334 C028 654 | LD DN962 LOAD NEGATIVE NUMBER. DKN06230 0335 D10D 655 | DN620 STO 1 DN983-D STORE IN SEEK FLAG DKN06240 0336 4C01 0296 656 | BSC L DN500,O BR IF IN INTERRUPT PROCESS DKN06250 0338 C112 657 | LD 1 DN984-D LOAD FUNCTION CODE. DKN06260 0339 1801 658 | SRA 1 DKN06270 033A 802F 659 | A DN978 DKN06280 033B F09E 660 | EOR DN954 DKN06290 033C 1008 661 | SLA 8 DKN06300 033D D119 662 | DN630 STO 1 DN986+1-D STORE IN 2ND WORD OF IOCC. DKN06310 033E 2001 663 | LDS 1 SET OVERFLOW INDICATOR. DKN06320 033F C124 664 | LD 1 DN992-D LOAD REMAINING WORD COUNT. DKN06330 0340 4C30 029B 665 | BSC L DN510,Z- BR IF OPERATION NOT SEEK. DKN06340 0342 C10D 666 | LD 1 DN983-D LOAD SEEK FLAG. DKN06350 0343 4C18 0140 667 | BSC L DN220,+- BR IF SEEK NOT NECESSARY212 DKN06360 0345 4C20 0140 668 | DN640 BSC L DN220,Z BRANCH IF SEEK NECESSARY. DKN06370 0347 2001 669 | LDS 1 SET OVERFLOW INDICATOR. DKN06380 0348 4C00 026D 670 | BSC L DN480 DKN06390 034A 0000 671 | DN700 DC *-* ENTRY/RETURN ADDR 2-11 DKN06400 034B 6A0B 672 | STX 2 DN720+1 SAVE XR2 2-11 DKN06402 034C 6200 673 | LDX 2 0 SET XR2 TO 0 2-11 DKN06404 034D 4C10 0354 674 | BSC L DN710,- BR IF HOME FILE 2-11 DKN06406 034F E00A 675 | AND DN957 AND WITH /B800 2-11 DKN06408 0350 F009 676 | EOR DN957 EOR WITH /B800 2-11 DKN06410 0351 6204 677 | LDX 2 4 SET XR2 TO 4 2-11 DKN06412 0352 4820 678 | BSC Z SKIP IF 2ND 2311 2-11 DKN06414 0353 72FE 679 | MDX 2 -2 IF 1ST 2311 MAKE XR2=2 2-11 DKN06416 0354 C400 0002 680 | DN710 LD L DNXR2 LOAD XRE VAL TO ACC 2-11 DKN06418 0356 6600 0000 681 | DN720 LDX L2 *-* RESTORE XR2 2-11 DKN06420 0358 4C80 034A 682 | BSC I DN700 RETURN TO MAINLINE 2-11 DKN06422 684 | * DKN06427 685 | * CONSTANTS AND WORK AREAS DKN06428 686 | * DKN06429 687 | * DKN06430 035A B800 688 | DN957 DC /B800 MASK FOR PHY DR DETER 2-11 DKN06437 035B 0008 689 | DN960 DC 8 NO. SECTORS PER CYLINDER . DKN06440 035C 0000 690 | DN961 DC *-* TEMPORARY STORAGE DKN06450 035D FFFF 691 | DN962 DC -1 CONSTANT OF MINUS ONE. DKN06460 035E 692 | BSS E 0 ASSURE EVEN BOUNDARY 2-11 DKN06465 035E 0004 693 | DN963 DC 4 SEEK HOME BIT. DKN06470 035F 0000 694 | DN968 DC *-* 2ND WD SENSE IOCC DR 0 2-11 DKN06475 0360 0400 695 | DN964 DC /0400 SEEK IOCC WORD. DKN06480 0361 0000 696 | DC *-* 2ND WD SENSE IOCC DR 1 2-11 DKN06485 0362 0640 697 | DN965 DC 1600 1+MAX SCTR ADDR DKN06490 0363 0000 698 | DC *-* 2ND WD SENSE IOCC DR 2 2-11 DKN06500 0364 699 | BSS E 0 DKN06510 0364 0000 700 | DN970 DC *-* FUNCTION CODE FOR DRIVE 0 DKN06520 0365 0000 701 | DN976 DC *-* LOG DR = OF HOME FILE 2-11 DKN06530 0366 0000 702 | DC *-* FUNCTION CODE FOR DRIVE 1 DKN06540 0367 0000 703 | DC *-* LOG DR = OF 1ST 2311 2-11 DKN06550 0368 0000 704 | DC *-* FUNCTION CODE FOR DRIVE 2 DKN06560 0369 0000 705 | DC *-* LOG DR = OF 2ND 2311 2-11 DKN06570 036A 0001 706 | DN978 DC 1 DKN06820 036B FFFF 707 | DC -1 CURRENT ARM POSITION - DRIVE 0 DKN06830 036C 0001 708 | DC 1 DKN06840 036D FFFF 709 | DC -1 CURRENT ARM POSITION - DRIVE 1 DKN06850 036E 0001 710 | DC 1 DKN06860 036F FFFF 711 | DC -1 CURRENT ARM POSITION - DRIVE 2 DKN06870 0370 712 | DN980 BSS 6 1ST 2 WDS OF I/O AREA 2-11 DKN06920 0376 0000 713 | DN982 DC *-* ADDR OF USERS ERR SUBR - DRIVE 0 DKN06930 0377 0000 714 | DN983 DC *-* SEEK FLAG - DRIVE 0. DKN06940 0378 0000 715 | DC *-* ADDR OF USERS ERR SUBR - DRIVE 1 DKN06950 0379 0000 716 | DC *-* SEEK FLAG - DRIVE 1. DKN06960 037A 0000 717 | DC *-* ADDR OF USERS ERR SUBR - DRIVE 2 DKN06970 037B 0000 718 | DC *-* SEEK FLAG - DRIVE 2. DKN06980 037C 0000 719 | DN984 DC *-* FUNCTION CODE - DRIVE 0. DKN07030 037D 0032 720 | DN985 DC 50 READ/WRITE RETRY CTR - DRIVE 0. DKN07040 037E 0000 721 | DC *-* FUNCTION CODE - DRIVE 1. DKN07050 037F 0032 722 | DC 50 READ/WRITE RETRY CTR - DRIVE 1. DKN07060 0380 0000 723 | DC *-* FUNCTION CODE - DRIVE 2. DKN07070 0381 0032 724 | DC 50 READ/WRITE RETRY CTR - DRIVE 2. DKN07080 0382 725 | DN986 BSS 6 IOCC FOR NEXT OPER. 2-11 DKN07130 0388 0000 726 | DN990 DC *-* ORIGINAL SECTOR ADDR - DRIVE 0. DKN07140 0389 0000 727 | DN991 DC *-* WORKING SECTOR ADDRESS - DRIVE 0 DKN07150 038A 0000 728 | DC *-* ORIGINAL SECTOR ADDR - DRIVE 1. DKN07160 038B 0000 729 | DC *-* WORKING SECTOR ADDRESS - DRIVE 1 DKN07170 038C 0000 730 | DC *-* ORIGINAL SECTOR ADDR - DRIVE 2. DKN07180 038D 0000 731 | DC *-* WORKING SECTOR ADDRESS - DRIVE 2 DKN07190 038E 0000 732 | DN992 DC *-* INTERMEDIATE WORD CNT - DRIVE 0. DKN07240 038F 0000 733 | DN993 DC *-* WORD COUNT FOR NEXT OP - DRIVE 0 DKN07250 0390 0000 734 | DC *-* INTERMEDIATE WORD CNT - DRIVE 1. DKN07260 0391 0000 735 | DC *-* WORD COUNT FOR NEXT OP - DRIVE 1 DKN07270 0392 0000 736 | DC *-* INTERMEDIATE WORD CNT - DRIVE 2. DKN07280 0393 0000 737 | DC *-* WORD COUNT FOR NEXT OP - DRIVE 2 DKN07290 0394 0000 738 | DN994 DC *-* ADDR OF USERS I/O AREA - DRIVE 0 DKN07340 0395 0064 739 | DN995 DC 100 READBACK CHECK COUNTER - DRIVE 0 DKN07350 0396 0000 740 | DC *-* ADDR OF USERS I/O AREA - DRIVE 1 DKN07360 0397 0064 741 | DC 100 READBACK CHECK COUNTER - DRIVE 1 DKN07370 0398 0000 742 | DC *-* ADDR OF USERS I/O AREA - DRIVE 2 DKN07380 0399 0064 743 | DC 100 READBACK CHECK COUNTER - DRIVE 2 DKN07390 03A2 744 | $NEND EQU /03A2 1 + END OF DISKN 2-11 DKN07440 745 | * DKN07450 039A 746 | BSS $NEND-*-6 PATCH AREA 2-11 DKN07460 747 | * DKN07470 039C 00A0 748 | DC @CIL1 CORE IMAGE LDR-PH 1, PH ID DKN07480 039D 0000 749 | DC *-* CORE ADDRESS DKN07490 039E 0000 750 | DC *-* WORD COUNT DKN07500 039F 0000 751 | DC *-* SECTOR ADDRESS DKN07510 03A0 0000 752 | DC *-* WORD COUNT OF CORE LOAD DKN07520 03A1 0000 753 | DC *-* SCTR ADDR OF CORE LOAD DKN07530 036A 754 | D EQU DN978 DKN07540 0001 755 | DNXR1 EQU /0001 POINT TO XR1 2-9 DKN07550 0002 756 | DNXR2 EQU /0002 POINT TO XR2 2-9 DKN07560 0028 757 | $PRET EQU /0028 DKN07580 0032 758 | $IOCT EQU /0032 DKN07590 0085 759 | $PST2 EQU /0085 DKN07600 00EE 760 | $DBSY EQU /00EE DKN07610 0011 761 | @TCNT EQU /0011 DKN07620 00A0 762 | @CIL1 EQU /00A0 DKN07630 009F 763 | $ACDE EQU /009F DKN07640 009A 764 | $CYLN EQU /009A DKN07650 00A4 765 | $DCYL EQU /00A4 DKN07660 0095 766 | $FPAD EQU /0095 DKN07670 03A2 767 | END DN000 DKN07680 There were no errors in this assembly Program transfer address = 00F2 === CROSS REFERENCES ========================================================== Name Val Defd Referenced $ACDE 009F 763 119 217 252 517 647 $CYLN 009A 764 497 563 574 636 638 $DBSY 00EE 760 126 180 181 226 282 283 341 $DCYL 00A4 765 587 $FPAD 0095 766 240 619 $IOCT 0032 758 182 280 $NEND 03A2 744 79 81 746 $PRET 0028 757 159 $PST2 0085 759 212 315 'CIL1 00A0 762 748 'TCNT 0011 761 377 478 D 036A 754 153 185 189 191 195 198 229 231 233 236 244 245 246 248 250 254 255 259 261 298 304 305 307 309 318 321 323 325 327 332 351 354 357 360 362 364 369 370 371 387 393 404 405 409 410 412 414 416 420 424 431 435 441 446 447 449 451 453 457 459 460 463 466 468 470 473 496 499 500 502 507 509 512 514 516 518 520 521 525 529 531 546 547 552 553 555 556 559 561 564 572 576 577 579 580 594 611 617 622 624 630 637 655 657 662 664 666 DN000 00F2 84 213 767 DN020 00F7 88 429 DN030 00FC 92 168 DN040 0100 96 160 DN050 010C 107 98 106 235 DN060 0111 111 167 DN070 0112 112 166 DN090 0120 129 188 201 DN100 0122 135 95 DN110 0124 137 85 90 92 DN120 0129 140 136 DN170 012D 151 258 DN180 012F 153 626 DN190 0133 156 614 DN200 0135 157 109 152 218 262 287 551 DN210 013B 164 87 DN220 0140 173 532 667 668 DN230 014A 184 93 158 565 DN235 0152 189 186 DN236 0160 201 190 192 DN240 0161 203 89 DN250 016B 217 115 227 DN255 0178 228 223 DN260 017A 229 174 274 DN270 018B 242 238 DN280 019F 259 373 DN290 01AC 272 284 316 339 394 DN300 01BB 286 256 DN340 01BE 296 310 330 338 505 DN345 01C6 303 300 DN350 01D0 312 413 DN356 01D8 318 313 DN360 01E4 327 388 DN370 01EA 332 326 DN380 01EC 337 156 DN382 01F0 340 317 DN390 01F9 351 464 DN400 0200 356 322 DN410 020F 368 359 DN415 021D 386 358 DN420 0220 392 355 DN430 0222 394 353 DN440 0224 397 203 DN445 0226 399 403 DN446 022C 404 400 DN450 0248 424 333 395 533 DN460 024F 431 320 331 411 DN470 0264 451 443 DN480 026D 458 534 670 DN490 0287 497 415 417 DN500 0296 508 656 DN510 029B 512 665 DN520 02A5 520 474 DN525 02AB 526 DN530 02AF 530 511 523 DN550 02BC 543 503 506 DN560 02BE 546 263 DN570 02DB 571 267 469 DN580 02E6 580 266 558 DN590 02F8 600 609 DN600 0300 606 601 DN610 031B 630 155 544 623 DN615 0323 637 634 DN620 0335 655 640 DN630 033D 662 567 DN640 0345 668 DN700 034A 671 120 219 682 DN710 0354 680 674 DN720 0356 681 672 DN900 012A 144 151 DN901 012B 145 157 DN902 0166 210 86 94 134 154 299 DN903 012C 147 260 DN904 0164 208 196 199 200 DN911 0216 378 286 314 DN912 0218 380 197 398 419 DN914 0163 204 125 179 225 279 DN920 01F6 347 368 DN921 01F7 348 433 DN930 0215 377 303 458 DN931 01F8 349 253 DN932 021C 384 352 504 DN933 021A 382 324 329 356 448 501 DN934 021B 383 301 DN940 0281 478 386 392 DN941 0282 479 366 566 DN942 02B6 538 408 427 DN951 02BB 541 524 DN952 02B8 539 187 407 418 421 422 426 428 438 440 456 461 462 548 549 583 588 589 590 595 604 610 653 DN953 02BA 540 528 DN954 02DA 569 515 562 660 DN957 035A 688 675 676 DN960 035B 689 575 581 582 605 DN961 035C 690 591 593 602 612 616 DN962 035D 691 651 652 654 DN963 035E 693 337 645 DN964 0360 695 646 DN965 0362 697 613 DN968 035F 694 198 254 255 409 420 470 630 DN970 0364 700 189 261 414 579 580 DN976 0365 701 250 305 405 512 559 572 617 DN978 036A 706 191 416 499 659 754 DN980 0370 712 362 364 451 453 457 552 555 DN982 0376 713 153 233 298 309 DN983 0377 714 185 195 410 412 424 446 468 507 531 655 666 DN984 037C 719 236 246 248 259 318 327 351 556 577 624 657 DN985 037D 720 304 323 325 459 500 502 DN986 0382 725 332 360 369 431 435 460 473 509 516 518 547 662 DN990 0388 726 244 370 DN991 0389 727 245 307 371 447 449 466 496 514 561 564 576 594 611 622 637 DN992 038E 732 520 525 553 664 DN993 038F 733 441 463 521 529 DN994 0394 738 231 546 DN995 0395 739 321 354 357 387 393 DNXR1 0001 755 100 173 273 DNXR2 0002 756 249 361 406 436 513 560 573 618 680