IMD 1.16: 2/09/2008 13:28:29 84-93720-03 c100 f72003 scout ufdc listing file - part 1    @0|)wwЀЀtQql)  " }gA `_l M@IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIOS4 MF282092110080200820921100802 820921100802 .F72003 VOLSCOUT UFDC LISTING FILE - PART I   IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII_l M@iGyy GGG`HZ@ b G`^Y e IQ BBp@;:9 :7P@ G:پN 8!0. * C'xC# b# }B!9 @0DAJL w+™ЀЀΖQA1"   i ž} š} @EEFF)DEۄF8 џ} ԟ} ̟} * `jUBBI,v BI, # @ G9H@pܾrCHC C GTq` Lg"gEXC P+s=胾P+c fQN p $Rxnj  ޔniZ ތ⊞ } }HGž Ÿ@ALS)"$ C k20j.h( +$`%ꂜ\1 !M' y %'+os慾)sY ed|{ @8 o O m J K i gN )V% t%sLn`"E F. F„ D>) =`;nrgy w"G,{Kq1 A&}E*`(t@% ;c  765y342(.OS:: SYS"iwvc Bc A@6<# Ic B# gIjHc r1PAGE 0001 MACRO (F400) SCOUT UNIVERSAL FLOPPY DISK CONTROLLER TEST PROGRAM 93720-10C1 1982/09/30 08:59:28.75 TITLE PAGE SI = DM01.UFDCDIAG.ASM SO = DM01.UFDCDIAG.OBJ LO = DM01.UFDCDIAG.LST 0003 * 0004 * SCOUT UNIVERSAL FLOPPY DISK CONTROLLER 0005 * 0006 * 0007 * TEST PROGRAM 0008 * 0009 * 0010 * 84-93720-10C1  0011 * 0012 * 0013 * 0014 * 0015 *  0016 * COPYRIGHT 1982 COMPUTER AUTOMATION INC. 0017 * 0018 * 1PAGE 0002 MACRO (F400) SCOUT UNIVERSAL FLOPPY DISK CONTROLLER TEST PROGRAM 93720-10C1 1982/09/30 08:59:29.25 REVISION HISTORY 0020 ****************************** 0021 * 0022 * REVISION HISTORY 0023 * 0024 ****************************** 0025 * 0026 * REVISION ISSUE DATE COMMENTS 0027 * -------- ---------- -------- 0028 *   0029 * A0 1980 ORIGINAL RELEASE 0030 * SCOUT HARDWARE FUNCTION TEST 0031 * 0032 * B0 3/82 REWRITE BY 0033 * ROBERT ROBINSON 0034 * 0035 * C0 8/82 UPDATED FOR SCOUT MULTI- 0036 * CHANNEL BY MARK HAYES.  0037 * SEE 'SETRDY', 'CLEANUP', 0038 * 'MCSIN', 'MCSOUT', & MCSFLG. 0039 * 0040 * C1 9/82 1. ADDED STATUS-CHECK TO TECH TEST. 0041 * 2. PROG RUNS W/ OR W/O PROG CONSOLE. 0042 * 3. FIXED OV LIGHT, SIS FUNCTION, SEEK 0043 *  FUNCTION, & OTHER ASSORTED BUGS. 0044 * MARK HAYES. 0045 * 00004331 0046 REV: EQU 'C1' LATEST REVISION 1PAGE 0003 MACRO (F400) SCOUT UNIVERSAL FLOPPY DISK CONTROLLER TEST PROGRAM 93720-10C1 1982/09/30 08:59:30.25 HARDWARE REQUIREMENTS 0048 ****************************** 0049 * 0050 * HARDWARE REQUIREMENTS 0051 *  0052 ****************************** 0053 * 0054 * 1. SCOUT 4/04 PROCESSOR (PROGRAMMER'S CONSOLE OPTIONAL; 0055 * IT IS NEEDED TO RUN THE TECH TEST). 0056 *  0057 * 2. MINIMUM OF 16K WORDS OF READ/WRITE MEMORY 0058 * 0059 * 3. SCOUT UNIVERSAL FLOPPY DISK CONTROLLER CONNECTED WITH, 0060 * UP TO 4, FLOPPY DISK DRIVES 0061 *  0062 * 4. SCOUT SERIAL PERIPHERAL INTERFACE UNIT(S) CONNECTED TO: 0063 * A) A TTY/CRT WITH A DEVICE ADDRESS OF :F8 (OPTIONAL); 0064 * B) A LINE PRINTER WITH A DEVICE ADDRESS OF :FE (OPTIONAL).  0065 * -OR- 0066 * SCOUT 2/4 CHANNEL SERIAL I/O BOARD WITH A DEVICE ADDRESS 0067 * OF :40 : 0068 * A) WITH A TTY/CRT CONNECTED TO CHANNEL 0 (OPTIONAL); 0069 * B) WITH A LINE PRINTER CONNECTED TO CHANNEL 1 (OPTIONAL). 0070 * 1PAGE 0004 MACRO (F400) SCOUT UNIVERSAL FLOPPY DISK CONTROLLER TEST PROGRAM 93720-10C1 1982/09/30 08:59:31.00 LINKER INFORMATION 0072 ****************************** 0073 * 0074 * LINKER INFORMATION 0075 *  0076 ****************************** 0077 * 0078 EXTR DEBUG4 LINK TO DEBUG 0200 0079 NAM G:0 LINK ADD. 0080 * 0020 0081  OBJNOTE ' UFDCDIAG.OBJ - REV. ',REV:%-8,REV:&:FF 0020 0055 0046 0044 0043 0044 0049  0041 0047 002E 004F 0042 004A 0020 002D 0020 0052 0045 0056 002E 0020 0043 0031 1PAGE 0005 MACRO (F400) SCOUT UNIVERSAL FLOPPY DISK CONTROLLER TEST PROGRAM 93720-10C1 1982/09/30 08:59:31.25 SCOUT UFDC TEST INFORMATION 0083 ******************************  0084 * 0085 * SCOUT UFDC TEST INFORMATION 0086 * 0087 ****************************** 0088 * 0089 * CONSISTS OF: 0090 *  0091 * DIAG: TESTS 0092 * 0093 * TEST A - INITIALIZES THE CONTROLLER AND PERFORMS SEVERAL 0094 * BASIC TESTS OF THE CONTROLLER INTERNAL OPERATION 0095 *  (SIMILAR TO THE 'ISOLITE' TEST). 0096 * 0097 * TEST B - CHECKS THE SEEK OPERATION FOR THE SPECIFIED 0098 * TRACKS, ON OVERLAPPED UNITS. 0099 *  0100 * TEST C - CHECKS BOTH THE SEEK AND READ ID OPERATIONS 0101 * FOR THE SPECIFIED TRACKS. 0102 * 0103 * TEST D - CHECKS BOTH THE SEEK AND READ ID OPERATIONS  0104 * FOR THE SPECIFIED TRACKS, ON OVERLAPPED UNITS. 0105 * 0106 * TEST E - CHECKS THE SCAN EQUAL OPERATION FOR THE 0107 * SPECIFIED TRACKS. 0108  * 0109 * TEST F - FORMATS THE SPECIFIED SECTORS/TRACKS, IN THE 0110 * SPECIFIED DENSITY AND DATA PATTERN. 0111 * 0112 * TEST G - CHECKS THE WRITE DATA AND READ DATA OPERATIONS. 0113 * A ONE-BYTE PATTERN SELECTED BY THE USER IS 0114 *  WRITTEN TO THE SPECIFIED SECTORS/TRACKS. DATA 0115 * THEN IS READ FROM THE SECTORS/TRACKS AND 0116 * COMPARED TO THE USER-SPECIFIED PATTERN FOR 0117 *  CORRECTNESS. 0118 * 1PAGE 0006 MACRO (F400) SCOUT UNIVERSAL FLOPPY DISK CONTROLLER TEST PROGRAM 93720-10C1 1982/09/30 08:59:32.50 SCOUT UFDC TEST INFORMATION 0119 * TEST H - CHECKS THE WRITE DATA AND READ DATA OPERATIONS 0120 * FOR PARTIAL SECTOR I/O. A 66 BYTE RECORD IS 0121 *  WRITTEN TO THE SPECIFIED SECTORS/TRACKS USING 0122 * THE INCREMENTING DATA PATTERN :0-:41. EACH 0123 * SECTOR IS THEN READ TO VERIFY THE DATA PATTERN 0124 *  AND THE TRAILING NULLS. 0125 * 0126 * TEST I - CHECKS THE WRITE DATA AND READ DATA OPERATIONS 0127 * FOR MULTIPLE SECTOR I/O. A '2 SECTOR' RECORD IS 0128 *  WRITTEN TO THE SPECIFIED SECTORS/TRACKS USING 0129 * THE INCREMENTING DATA PATTERN :0 -:FF. EACH 0130 * SECTOR IS THEN READ TO VERIFY THE DATA 0131 * PATTERN AND THE TRAILING NULLS. 0132 * 0133 * TEST J - CHECKS THE WRITE DATA AND READ DATA OPERATIONS FOR 0134 * CROSS CYLINDER INTERFERENCE. ALTERNATE TRACKS OF 0135 * ZEROS AND ONES ARE WRITTEN TO THE SPECIFIED 0136 * SECTORS/TRACKS. THE FIRST REQUESTED TRACK 0137 * WILL BE WRITTEN WITH ZEROS AND THE TRACK 0138 *  CONTENTS WILL THEN ALTERNATE. EACH REQUESTED 0139 * TRACK IS THEN READ TO VERIFY EACH SECTOR. 0140 * 0141 * DIAG: DEFAULT TEST GROUPS 0142 * 0143 * P - SELECTS THE DEFAULT TEST GROUP FOR TESTING 0144 * SINGLE-SIDED 5 1/4" DRIVES ("PICO-FLOPPIES"). 0145 * 0146 * M - SELECTS THE DEFAULT TEST GROUP FOR TESTING  0147 * DOUBLE-SIDED 5 1/4" DRIVES ("MINI-FLOPPIES"). 0148 * 0149 * S - SELECTS THE DEFAULT TEST GROUP FOR TESTING 0150 * SINGLE-SIDED 8" DRIVES ("STANDARD FLOPPIES"). 0151 * 0152 * Q - SELECTS THE DEFAULT TEST GROUP FOR TESTING  0153 * DOUBLE-SIDED 8" DRIVES ("QUAD FLOPPIES"). 0154 * 1PAGE 0007 MACRO (F400) SCOUT UNIVERSAL FLOPPY DISK CONTROLLER TEST PROGRAM 93720-10C1 1982/09/30 08:59:34.00 SCOUT UFDC TEST INFORMATION  0155 * R - REPEATS THE LAST TEST GROUP RUN. THIS IS 0156 * USEFUL AFTER THE OPERATOR HAS SET UP A 0157 * NON-STANDARD TEST GROUP. 0158 *  0159 * N - SELECTS THE INTERACTIVE DIALOG FOR CONFIGURING 0160 * A NON-STANDARD TEST SEQUENCE. 0161 * 0162 * T - SELECTS THE TECH TEST. 0163 *  0164 * E - EXITS THE DIAGNOSTIC AND RETURNS CONTROL 0165 * TO DEBUG.  0166 * 0167 *** 0168 * 0169 * CTRL. OPTIONS: CTRL. WORD  0170 * 0171 * BIT OPTION 0172 * 0 COMPRESSED ERROR REPORT  0173 * 1 HALT AFTER ONE PASS 0174 * 2 HALT ON ERROR 0175 *  3 LINE PRINTER 0176 * 4 ERROR TALLIES 0177 * 5 INPUT BUF. DUMP  0178 * 6 RING BELL ON ERROR 0179 * 0180 * CTRL. OPTIONS: SENSE SWITCH 0181 * 0182 * SET - SUPPRESS ALL OUTPUT OF MESSAGES. 0183 *  0184 ****************************** 1PAGE 0008 MACRO (F400) SCOUT UNIVERSAL FLOPPY DISK CONTROLLER TEST PROGRAM 937 20-10C1 1982/09/30 08:59:34.75 EQUATES (UFDC FUNCTION CODE EQUATES) 0186 ******************************  0187 * 0188 * UFDC FUNCTION CODE EQUATES 0189 * 0190 ****************************** 0191 * 00000000 0192 UF:INV EQU 0 INVALID COMMAND  00000001 0193 UF:INIT EQU 1 INITIALIZE UFDC (RESET, SPECIFY) 0194 * 00000002  0195 UF:RD EQU 2 READ DATA 00000003 0196 UF:RDEL EQU 3 READ DELETED DATA 00000004 0197 UF:RDID EQU 4 READ ID 0198 * 00000005 0199 UF:WD EQU 5  WRITE DATA 00000006 0200 UF:WDEL EQU 6 WRITE DELETED DATA 0201 * 00000007 0202 UF:SCEQ EQU 7 SCAN EQUAL 00000008 0203 UF:SCLE EQU 8 SCAN LOW OR EQUAL 00000009 0204 UF:SCHE EQU 9 SCAN HIGH OR EQUAL 0205 * 0000000A 0206 UF:RECAL EQU 10 RECALIBRATE 0000000B 0207 UF:SEEK EQU 11 SEEK 0208 *  0000000C 0209 UF:SDS EQU 12 SENSE DRIVE STATUS 0000000D 0210 UF:SIS EQU 13 SENSE INTERRUPT STATUS 0211 * 0000000E 0212 UF:FMT EQU 14 FORMAT A TRACK 1PAGE 0009  MACRO (F400) SCOUT UNIVERSAL FLOPPY DISK CONTROLLER TEST PROGRAM 93720-10C1 1982/09/30 08:59:35.75 EQUATES (UFDC OP CODE EQUATES) 0214 ****************************** 0215 * 0216 * UFDC OP CODE EQUATES 0217 * 0218 ****************************** 0219 * 00000103 0220 OP:INIT EQU :103 INITIALIZE UFDC (RESET, SPECIFY) 0221 * 00000106 0222 OP:RD EQU :106 READ DATA 0000010C 0223 OP:RDEL EQU :10C READ DELETED DATA 0000010A 0224 OP:RDID EQU :10A READ ID 00000102 0225 OP:RDTR EQU :102 READ TRACK 0226  * 00000005 0227 OP:WD EQU :005 WRITE DATA 00000009 0228 OP:WDEL EQU :009 WRITE DELETED DATA 0229 * 00000111 0230 OP:SCEQ EQU :111 SCAN EQUAL 00000119 0231  OP:SCLE EQU :119 SCAN LOW OR EQUAL 0000011D 0232 OP:SCHE EQU :11D SCAN HIGH OR EQUAL  0233 * 00000107 0234 OP:RECAL EQU :107 RECALIBRATE 0000010F 0235 OP:SEEK EQU  :10F SEEK 0236 * 00000104 0237 OP:SDS EQU :104 SENSE DRIVE STATUS 00000108 0238 OP:SIS EQU :108 SENSE INTERRUPT STATUS 0239 * 0000000D 0240 OP:FMT EQU :00D FORMAT TRACK 1PAGE 0010 MACRO (F400) SCOUT UNIVERSAL FLOPPY DISK CONTROLLER TEST PROGRAM 93720-10C1 1982/09/30 08:59:36.75 EQUATES (UFDC MODE REGISTER BITS) 0242 ******************************   0243 * 0244 * UFDC MODE REGISTER BITS 0245 * 0246 ****************************** 0247 * 00000000 0248 MR:INTDS EQU 0 BIT 0 - INTERRUPT DISABLE  0249 * 00000001 0250 MR:5OR8 EQU 1 BIT 1 - 5 1/4" OR 8" DRIVES 0251 * 00000002 0252 MR:STINV EQU 2 BIT 2 - STEP INVERT 0253 * 00000003 0254 MR:FCRST EQU 3 BIT 3 - FLOPPY CONTROLLER RESET 0255 * 00000004 0256 MR:MOTOR EQU 4  BIT 4 - MOTOR ON 0257 * 00000005 0258 MR:DMTST EQU 5 BIT 5 - DMA TEST 1PAGE 0011 MACRO (F400) SCOUT UNIVERSAL FLOPPY DISK CONTROLLER TEST PROGRAM 93720-10C1 1982/09/30 08:59:37.50 EQUATES (UFDC MAIN STATUS REGISTER BITS) 0260 ****************************** 0261 * 0262 * UFDC MAIN STATUS REGISTER BITS 0263 * 0264 ****************************** 0265 * 00000000 0266 MSR:DR0 EQU 0 BIT 0 - DRIVE 0 SEEKING 0267 * 00000001 0268 MSR:DR1 EQU 1 BIT 1 - DRIVE 1 SEEKING 0269 * 00000002 0270 MSR:DR2 EQU 2  BIT 2 - DRIVE 2 SEEKING 0271 * 00000003 0272 MSR:DR3 EQU 3 BIT 3 - DRIVE 3 SEEKING 0273 * 00000004 0274 MSR:BUSY EQU 4 BIT 4 - BUSY FLAG 0275 * 00000005 0276 MSR:DMA EQU 5 BIT 5 - DMA IN PROGRESS 0277 * 00000006 0278 MSR:DIR EQU 6 BIT 6 - DIRECTION FOR COMMAND/RESULT BYTE 0279 * 00000007 0280 MSR:RDY EQU 7 BIT 7 - READY FOR COMMAND/RESULT BYTE 0281 * 00000008 0282 MSR:INT EQU 8 BIT 8 - INTERRUPT BIT - 0283 * 00000009 0284 MSR:UIM EQU 9 BIT 9 - UNINSTALLED MEMORY BIT - 1PAGE 0012 MACRO (F400) SCOUT UNIVERSAL FLOPPY DISK CONTROLLER TEST PROGRAM 93720-10C1 1982/09/30 08:59:38.00 EQUATES (STATUS BYTE 0) 0286 ****************************** 0287 *  0288 * STATUS BYTE 0 EQUATES 0289 * 0290 ******************************  0291 * 00000007 0292 ST0:IC1 EQU 7 BIT 7 - INTERRUPT CONTROL (BIT 1) 0293 * 00000006 0294 ST0:IC0 EQU 6 BIT 6 - INTERRUPT CONTROL (BIT 0) 0295 * 00000005 0296 ST0:SE EQU 5 BIT 5 - SEEK END 0297 * 00000004 0298 ST0:EC EQU 4 BIT 4 - EQUIPMENT CHECK 0299 * 00000003 0300 ST0:NR EQU 3 BIT 3 - NOT READY 0301 * 00000002 0302 ST0:HD EQU 2 BIT 2 - HEAD ADDRESS 0303 * 00000001 0304 ST0:US1 EQU 1 BIT 1 - UNIT SELECT (BIT 1) 0305 * 00000000  0306 ST0:US0 EQU 0 BIT 0 - UNIT SELECT (BIT 0) 1PAGE 0013 MACRO (F400) SCOUT UNIVERSAL FLOPPY DISK CONTROLLER TEST PROGRAM 93720-10C1 1982/09/30 08:59:38.75 EQUATES (STATUS BYTE 1) 0308 ****************************** 0309 * 0310 * STATUS BYTE 1 EQUATES 0311 * 0312  ****************************** 0313 * 00000007 0314 ST1:EN EQU 7 BIT 7 - END OF CYLINDER 0315 * 00000006 0316 ST1:6 EQU 6 BIT 6 - RESERVED 0317 * 00000005 0318 ST1:DE EQU 5 BIT 5 - DATA ERROR 0319 * 00000004 0320 ST1:OR EQU 4 BIT 4 - OVER RUN 0321 * 00000003 0322 ST1:3 EQU 3 BIT 3 - RESERVED 0323 * 00000002 0324 ST1:ND EQU 2 BIT 2 - NO DATA 0325 * 00000001 0326 ST1:NW EQU 1 BIT 1 - NOT WRITABLE 0327 * 00000000 0328 ST1:MA EQU 0 BIT 0 - MISSING ADDRESS MARK 1PAGE 0014 MACRO (F400) SCOUT UNIVERSAL FLOPPY DISK CONTROLLER TEST PROGRAM 93720-10C1 1982/09/30 08:59:39.50 EQUATES (STATUS BYTE 2) 0330 ****************************** 0331 * 0332 * STATUS BYTE 2 EQUATES 0333 * 0334 ****************************** 0335 * 00000007 0336 ST2:7 EQU 7 BIT 7 - RESERVED  0337 * 00000006 0338 ST2:CM EQU 6 BIT 6 - CONTROL MARK 0339 * 00000005 0340 ST2:DD EQU 5 BIT 5 - DATA ERROR IN DATA FIELD 0341 * 00000004 0342 ST2:WC EQU 4 BIT 4 - WRONG CYLINDER 0343 * 00000003 0344 ST2:SH EQU 3  BIT 3 - SCAN EQUAL HIT 0345 * 00000002 0346 ST2:SN EQU 2 BIT 2 - SCAN NOT SATISFIED 0347 * 00000001 0348 ST2:BC EQU 1 BIT 1 - BAD CYLINDER  0349 * 00000000 0350 ST2:MD EQU 0 BIT 0 - MISSING ADDRESS MARK IN DATA FIELD 1PAGE 0015 MACRO (F400) SCOUT UNIVERSAL FLOPPY DISK CONTROLLER TEST PROGRAM 93720-10C1 1982/09/30 08:59:40.00 EQUATES (STATUS BYTE 3)  0352 ****************************** 0353 * 0354 * STATUS BYTE 3 EQUATES  0355 * 0356 ****************************** 0357 * 00000007 0358 ST3:FT EQU 7 BIT 7 - FAULT 0359 * 00000006 0360 ST3:WP EQU 6 BIT 6 - WRITE PROTECTED 0361 * 00000005 0362 ST3:RY EQU 5 BIT 5 - READY 0363  * 00000004 0364 ST3:T0 EQU 4 BIT 4 - TRACK 0 0365 * 00000003 0366 ST3:TS EQU 3 BIT 3 - TWO SIDE 0367 * 00000002 0368 ST3:HD EQU 2 BIT 2  - HEAD ADDRESS 0369 * 00000001 0370 ST3:US1 EQU 1 BIT 1 - UNIT SELECT (BIT 1)  0371 * 00000000 0372 ST3:US0 EQU 0 BIT 0 - UNIT SELECT (BIT 0) 1PAGE 0016 MACRO (F400) SCOUT UNIVERSAL FLOPPY DISK CONTROLLER TEST PROGRAM 93720-10C1 1982/09/30 08:59:40.75 EQUATES (UFDC CONTROL BLOCK EQUATES)  0374 ****************************** 0375 * 0376 * UFDC CONTROL BLOCK EQUATES 0377 * 0378 ****************************** 0379 *  0380 * SECTOR ID INFORMATION BEFORE COMMAND EXECUTION 0381 * 00000000 0382 UF:C EQU 0  CYLINDER NUMBER 0 TO 76 00000001 0383 UF:H EQU 1 HEAD ADDRESS 0 OR 1 00000002 0384 UF:R EQU 2 RECORD (SECTOR) NUMBER 00000003 0385 UF:N EQU 3 NUMBER OF BYTES IN A SECTOR 0386 * 0387 * OTHER INPUTS BEFORE COMMAND EXECUTION 0388 *  00000004 0389 UF:EOT EQU 4 END OF TRACK - FINAL SECTOR NUMBER 00000005 0390 UF:GPL EQU  5 GAP LENGTH BETWEEN SECTORS 00000006 0391 UF:DTL EQU 6 DATA LENGTH WHEN N=0 00000007 0392 UF:SC EQU 7 SECTORS PER CYLINDER 00000008 0393 UF:D EQU 8 DATA BYTE TO WRITE INTO SECTOR 00000009 0394 UF:STP EQU 9 IF STP=1, SCAN EACH SECTOR. 0395 IF STP=2, SCAN ALTERNATE SECTOR. 00000000 0396 UF:NCN EQU UF:C NEW CYLINDER NUMBER 0397 * 0398 * STATUS INFORMATION AFTER COMMAND EXECUTION 0399 * 0000000A 0400 UF:ST0 EQU 10 STATUS BYTE 0 0000000B 0401 UF:ST1 EQU 11  STATUS BYTE 1 0000000C 0402 UF:ST2 EQU 12 STATUS BYTE 2 00000011 0403 UF:ST3 EQU 17 STATUS BYTE 3 0000000D 0404 UF:PCN EQU UF:C2 PRESENT CYLINDER NUMBER 0405  * 0406 * SECTOR ID INFORMATION AFTER COMMAND EXECUTION 0407 * 0000000D 0408 UF:C2 EQU 13 CYLINDER NUMBER 0 TO 76 0000000E 0409 UF:H2 EQU 14 HEAD ADDRESS 0 OR 1 1PAGE 0017 MACRO (F400) SCOUT UNIVERSAL FLOPPY DISK CONTROLLER TEST PROGRAM 93720-10C1 1982/09/30 08:59:42.00 EQUATES (UFDC CONTROL BLOCK EQUATES) 0000000F 0410 UF:R2 EQU 15 RECORD (SECTOR) NUMBER 00000010 0411 UF:N2 EQU 16 NUMBER OF BYTES IN A SECTOR 0412 * 0413 * OTHER CONTROL PARAMETERS 0414 * 00000012 0415 UF:DA EQU 18 UFDC DEVICE ADDRESS 00000013 0416 UF:FC EQU 19 FUNCTION CODE 00000014 0417 UF:ERR EQU 20 ERROR CODE 00000015  0418 UF:TMP EQU 21 TEMPORARY 00000016 0419 UF:STAT EQU 22 MAIN STATUS REGISTER   00000017 0420 UF:DMA EQU 23 DMA ADDRESS 00000018 0421 UF:BCT EQU 24 DMA BYTE COUNT 00000019 0422 UF:MODE EQU 25 MODE REGISTER 00000001 0423 UF:HD EQU UF:H  SAME AS HEAD ADDRESS 0 OR 1 0000001A 0424 UF:US EQU 26 UNIT SELECT 0 TO 3 0000001B 0425 UF:MT EQU 27 IF 0, SINGLE TRACK. IF 1, MULTIPLE TRACKS. 0000001C 0426 UF:MF EQU 28  IF 0, SINGLE DENSITY. IF 1, DOUBLE DENSITY. 0000001D 0427 UF:SK EQU 29 IF 0, NO SKIP. IF 1, SKIP DELETED DATA. 0000001E 0428 UF:SRT EQU 30 STEP RATE TIME 0 TO 15 = 1 TO 16 MILLISEC 0000001F 0429 UF:HUT EQU 31 HEAD UNLD TIME 0 TO 15 = 1 TO 240 MILLISEC 00000020 0430 UF:HLT EQU 32  HEAD LOAD TIME 0 TO 127 = 2 TO 256 MILLISEC 00000021 0431 UF:OP EQU 33 COMMAND OP CODE  00000022 0432 UF:EX0 EQU 34 EXPECTED STATUS BYTE 0 00000023 0433 UF:EX1 EQU 35  EXPECTED STATUS BYTE 1 00000024 0434 UF:EX2 EQU 36 EXPECTED STATUS BYTE 2 00000025 0435 UF:EX3 EQU 37 EXPECTED STATUS BYTE 3 1PAGE 0018 MACRO (F400) SCOUT UNIVERSAL FLOPPY DISK CONTROLLER TEST PROGRAM 93720-10C1 1982/09/30 08:59:43.25 EQUATES (ERROR CODE EQUATES) 0437 ******************************  0438 * 0439 * ERROR CODE EQUATES 0440 * 0441 ****************************** 0442 * 00000001 0443 ERR001 EQU 001 AFTER 200 ATTEMPTS, A RESULT BYTE 0444 COULD NOT BE READ FROM THE UFDC. 0445 * 00000002 0446 ERR002 EQU 002 AN ACTUAL INTERRUPT DID NOT 0447 OCCUR AFTER APPROXIMATELY A 1 0448 MILLISECOND DELAY 0449 *  00000003 0450 ERR003 EQU 003 AN UNEXPECTED ACTUAL INTERRUPT OCCURRED. 0451 * 00000004 0452 ERR004 EQU 004 AN UNKNOWN ERROR CODE WAS RETURNED 0453  AFTER AN I/O OPERATION. 0454 * 00000005 0455 ERR005 EQU 005 STATUS BYTE 0 - ABNORMAL TERMINATION 0456 OF COMMAND. EXECUTION OF COMMAND 0457 WAS STARTED BUT WAS NOT SUCCESSFULLY 0458 COMPLETED. 0459 * 00000006 0460 ERR006 EQU 006 STATUS BYTE 0 - INVALID COMMAND WAS  0461 ISSUED BUT WAS NEVER STARTED. 0462 * 00000007 0463 ERR007 EQU 007 STATUS BYTE 0 - ABNORMAL TERMINATION 0464 OF COMMAND. DURING COMMAND 0465 EXECUTION THE READY SIGNAL FROM   0466 THE FLOPPY DISK DRIVE CHANGED 0467 STATE. 1PAGE 0019 MACRO (F400) SCOUT UNIVERSAL FLOPPY DISK CONTROLLER TEST PROGRAM 93720-10C1 1982/09/30 08:59:44.25 EQUATES (ERROR CODE EQUATES) 00000008 0469 ERR008 EQU 008 STATUS BYTE 0 - TRACK 0 SIGNAL FAILED  0470 TO OCCUR AFTER 77 STEP PULSES 0471 (RECALIBRATE COMMAND); 'EC - 0472 EQUIPMENT CHECK' BIT (BIT 4)  0473 IS '1' - SHOULD BE '0'. 0474 * 00000009 0475 ERR009 EQU  009 STATUS BYTE 0 - SEEK COMMAND DID NOT 0476 COMPLETE; 'SE - SEEK END' BIT 0477 (BIT 5) IS '0' - SHOULD BE '1'. 0478 * 0000000A 0479 ERR010 EQU 010 STATUS BYTE 0 - 'SE - SEEK END' BIT 0480  (BIT 5) IS '1' - SHOULD BE '0'. 0481 * 0000000B 0482 ERR011 EQU 011 STATUS BYTE 0 - 'EC - EQUIPMENT 0483 CHECK' BIT (BIT 4) IS '1' - 0484 SHOULD BE '0'. 0485 * 0000000C 0486 ERR012 EQU 012  STATUS BYTE 0 - THE FLOPPY DISK DRIVE 0487 WAS IN THE NOT-READY STATE WHEN 0488 A READ OR WRITE COMMAND WAS 0489  ISSUED; 'NR - NOT READY' BIT 0490 (BIT 3) IS '1' - SHOULD BE '0'. 1PAGE 0020 MACRO (F400) SCOUT UNIVERSAL FLOPPY DISK CONTROLLER TEST PROGRAM 93720-10C1 1982/09/30 08:59:45.25 EQUATES (ERROR CODE EQUATES) 0000000F 0492 ERR015 EQU 015 STATUS BYTE 1 - THE FLOPPY DISK 0493  CONTROLLER TRIED TO ACCESS A 0494 SECTOR BEYOND THE FINAL SECTOR 0495 OF A CYLINDER; 'EN - END OF 0496  CYLINDER' BIT (BIT 7) IS '1' 0497 - SHOULD BE '0'. 0498 * 00000010 0499 ERR016 EQU 016 STATUS BYTE 1 - BIT 6 IS '1' -  0500 SHOULD ALWAYS BE '0'. 0501 * 00000011 0502 ERR017 EQU 017 STATUS BYTE 1 - THE FLOPPY DISK 0503 CONTROLLER DETECTED A CRC  0504 ERROR IN EITHER THE DATA 0505  FIELD OR THE ID FIELD; 'DE 0506 - DATA ERROR' BIT (BIT 5)  0507 IS '1' - SHOULD BE '0'. 0508 * 00000012 0509 ERR018 EQU   018 STATUS BYTE 1 - THE FLOPPY DISK 0510 CONTROLLER WAS NOT SERVICED 0511 BY THE CPU DURING DATA 0512  TRANSFER WITHIN A CERTAIN 0513 TIME INTERVAL; 'OR - OVER  0514 RUN' BIT (BIT 4) IS '1' - 0515 SHOULD BE '0'. 0516 * 00000013 0517 ERR019 EQU 019 STATUS BYTE 1 - BIT 3 IS '1' -  0518 SHOULD ALWAYS BE '0'. 0519 * 00000014 0520 ERR020 EQU 020 STATUS BYTE 1 - THE FLOPPY DISK 0521 CONTROLLER COULD NOT FIND 0522 THE SECTOR SPECIFIED IN THE 0523  ID REGISTER; 'ND - NO DATA' 0524 BIT (BIT 2) IS '1' -  0525 SHOULD BE '0'. 1PAGE 0021 MACRO (F400) SCOUT UNIVERSAL FLOPPY DISK CONTROLLER TEST PROGRAM 93720-10C1 1982/09/30 08:59:47.00 EQUATES (ERROR CODE EQUATES) 00000015 0527 ERR021 EQU 021  STATUS BYTE 1 - THE FLOPPY DISK 0528 CONTROLLER COULD NOT READ  0529 THE ID FIELD WITHOUT AN 0530 ERROR; 'ND - NO DATA' BIT 0531 (BIT 2) IS '1' - SHOULD 0532  BE '0'. 0533 * 00000016 0534 ERR022 EQU 022 STATUS BYTE 1 - THE STARTING SECTOR 0535 COULD NOT BE FOUND; 'ND - 0536 DATA' BIT (BIT 2) IS '1' 0537 - SHOULD BE '0'. 0538 * 00000017 0539 ERR023 EQU 023 STATUS BYTE 1 - THE FLOPPY DISK  0540 CONTROLLER DETECTED A 0541 WRITE PROTECT SIGNAL 0542 FROM THE FLOPPY DISK DRIVE; 0543  'NW - NOT WRITABLE' BIT 0544 (BIT 1) IS '1' - SHOULD BE 0545 '0'. 0546 * 00000018 0547 ERR024 EQU 024 STATUS BYTE 1 - THE FLOPPY DISK 0548 CONTROLLER COULD NOT DETECT 0549 THE ID ADDRESS MARK AFTER 0550  ENCOUNTERING THE INDEX 0551 HOLE TWICE; 'MA - MISSING  0552 ADDRESS MARK' BIT (BIT 0) 0553 IS '1'  - SHOULD BE '0'. 0554 * 00000019 0555 ERR025 EQU 025 STATUS BYTE 1 - THE FLOPPY DISK 0556 CONTROLLER COULD NOT DETECT 0557  THE DATA ADDRESS MARK OR 0558 THE DELETED DATA ADDRESS  0559 MARK; 'MA - MISSING 0560 ADDRESS MARK' BIT (BIT 0) 0561 IS '1' - SHOULD BE '0'. 1PAGE 0022 MACRO (F400) SCOUT UNIVERSAL FLOPPY DISK CONTROLLER TEST PROGRAM 93720-10C1 1982/09/30 08:59:48.25 EQUATES (ERROR CODE EQUATES) 0000001A  0563 ERR026 EQU 026 STATUS BYTE 2 - BIT 7 IS '1' - 0564 SHOULD ALWAYS BE '0'. 0565 * 0000001B 0566 ERR027 EQU 027 STATUS BYTE 2 - THE FLOPPY DISK 0567 CONTROLLER DETECTED A CRC 0568  ERROR IN THE DATA FIELD; 0569 'DD - DATA ERROR IN DATA  0570 FIELD' BIT (BIT 5) IS '1' 0571 - SHOULD BE '0'. 0572 * 0000001C 0573 ERR028 EQU 028 STATUS BYTE 2 - THE CYLINDER  0574 NUMBER IN THE ID FIELD IS 0575  DIFFERENT FROM THAT IN THE 0576 ID REGISTER; 'WC - WRONG 0577 CYLINDER' BIT (BIT 4) IS 0578 '1' - SHOULD BE '0'. 0579 * 0000001D 0580 ERR029 EQU 029 STATUS BYTE 2 - THE FLOPPY DISK  0581 CONTROLLER COULD NOT FIND 0582  A SECTOR ON THE CYLINDER 0583 WHICH MEETS THE CONDITION; 0584 'SN - SCAN NOT SATISFIED' 0585 BIT (BIT 2) IS '1' - 0586 SHOULD BE '0'. 0587 * 0000001E 0588 ERR030 EQU 030 STATUS BYTE 2 - THE CYLINDER 0589 NUMBER IN THE ID FIELD 0590 IS :FF; 'BC - BAD 0591  CYLINDER' BIT (BIT 1) 0592 IS '1' - SHOULD BE '0'. 1PAGE 0023 MACRO (F400) SCOUT UNIVERSAL FLOPPY DISK CONTROLLER TEST PROGRAM 93720-10C1 1982/09/30 08:59:49.50 EQUATES (ERROR CODE EQUATES)  0000001F 0594 ERR031 EQU 031 STATUS BYTE 2 - THE FLOPPY DISK 0595  CONTROLLER COULD NOT FIND 0596 A DATA ADDRESS MARK OR   0597 DELETED DATA ADDRESS MARK; 0598  ' MD - MISSING DATA 0599 ADDRESS MARK IN DATA FIELD' 0600  BIT (BIT 0) IS '1' - 0601 SHOULD BE '0'.  0602 * 00000020 0603 ERR032 EQU 032 STATUS BYTE 3 - THE 'FT - FAULT' 0604 BIT (BIT 7) IS '1' - 0605 SHOULD BE '0'.  0606 * 00000021 0607 ERR033 EQU 033 STATUS BYTE 3 - THE 'HD - HEAD 0608 ADDRESS' BIT (BIT 2) IS NOT 0609 THE SAME AS WAS SENT TO THE 0610 UFDC (UF:H). 0611 * 00000022 0612 ERR034 EQU 034 STATUS BYTE 3 - THE 'US1, US0 - 0613 UNIT SELECT" BITS (BITS 0,1) 0614 ARE NOT THE SAME AS WAS SENT 0615 TO THE UFDC (UF:US). 0616 * 00000023 0617 ERR035 EQU 035  PRESENT CYLINDER NUMBER (UF:PCN), 0618 RETURNED AFTER A 'SEEK' OR  0619 'RECALIBRATE' AND 'SENSE 0620  INTERRUPT' COMMANDS WERE 0621 EXECUTED, DOES NOT MATCH THE  0622 CYLINDER NUMBER SENT IN THE 0623 'SEEK' COMMAND OR IS NOT 0 0624 FOR THE 'RECALIBRATE' COMMAND. 1PAGE 0024 MACRO (F400) SCOUT UNIVERSAL FLOPPY DISK CONTROLLER TEST PROGRAM 93720-10C1 1982/09/30 08:59:50.75 EQUATES (ERROR CODE EQUATES)  00000024 0626 ERR036 EQU 036 RETURNED CYLINDER NUMBER (UF:C2) 0627  DOES NOT MATCH THE CYLINDER 0628 SENT TO THE UFDC.  0629 * 00000025 0630 ERR037 EQU 037 DATA MISCOMPARE ERROR 0631 * 00000026 0632 ERR038 EQU 038 INCORRECT STATUS WAS RETURNED AFTER AN 0633  'INVALID' COMMAND WAS SENT 0634 TO THE UFDC - SHOULD BE ':80'.  0635 * 00000027 0636 ERR039 EQU 039 STATUS BYTE 0 - SEEK TO TRACK 0 0637  (RECALIBRATE) COMMAND DID NOT 0638 COMPLETE; 'SE - SEEK END' BIT 0639 (BIT 5) IS '0' - SHOULD BE '1'. 0640 * 00000029 0641 ERR041 EQU 041 AN INTERRUPT IN THE MAIN STATUS REGISTER 0642   DID NOT OCCUR AFTER APPROXIMATELY A 0643 1 MILLISECOND DELAY. 0644 * 0000002A 0645 ERR042 EQU 042 AFTER 200 ATTEMPTS, A SPECIFICATION BYTE 0646 COULD NOT BE SENT TO THE UFDC 0647  SPECIFICATION REGISTER. 0648 * 0000002B 0649 ERR043 EQU 043 AFTER 200 ATTEMPTS, A COMMAND WORD 0650 COULD NOT BE SENT TO THE UFDC 0651 COMMAND REGISTER. 0652 * 0000002C 0653 ERR044 EQU 044  THE RETURNED DEVICE ADDRESS AFTER A 'SAL' 0654 INSTRUCTION DOES NOT MATCH 'DEVICE ADDRESS' 0655 QUERY VALUE. 1PAGE 0025 MACRO (F400) SCOUT UNIVERSAL FLOPPY DISK CONTROLLER TEST PROGRAM 93720-10C1 1982/09/30 08:59:52.00 EQUATES (MISCELLANEOUS UFDC EQUATES)  0657 ****************************** 0658 * 0659 * MISCELLANEOUS UFDC EQUATES  0660 * 0661 ****************************** 0662 * 0663 * RETURNED Q-REG. ERROR CODES 0664 * 00000000 0665 NORML: EQU 0 NO ERROR 000000F0 0666 UFDC:RE1 EQU :F0 TOO MANY REPEATS ON READ, BAD STATUS 000000F1 0667 UFDC:NIA EQU :F1 NO ACTUAL INTERRUPT (TIME OUT) 000000F2 0668 UFDC:UXI EQU :F2 UNEXPECTED INTERRUPT 000000F3 0669 UFDC:NIB EQU :F3 NO INTERRUPT IN MAIN STATUS REG. 000000F4 0670 UFDC:RE2 EQU :F4 TOO MANY REPEATS TO SEND SPEC. BYTE 000000F5 0671 UFDC:RE3 EQU :F5 TOO MANY REPEATS TO SEND COM. WORD  0672 * 0673 * WAIT CONSTANTS FOR UFDC INTERRUPT 0674 * FFFFFFFD 0675 DLYSHRT EQU -3 0003MS DELAY (READY, INTERRUPT) FFFFFDA8 0676 DLYMEDM EQU -600 0600MS DELAY (8" SINGLE CYLINDER I/O) FFFFFB50 0677 DLY1200 EQU -1200 1200MS DELAY (5" SINGLE CYLINDER I/O) FFFFFA24 0678 DLYLONG EQU -1500 1500MS DELAY (SEEK, RECALIBRATE) 1PAGE 0026 MACRO (F400) SCOUT UNIVERSAL FLOPPY DISK CONTROLLER TEST PROGRAM 93720-10C1 1982/09/30 08:59:52.75 EQUATES (PROGRAM EQUATES) 0680 ****************************** 0681 * 0682 * PROGRAM EQUATES 0683 *  0684 ****************************** 0685 * 0686 * ASCII CTRL. CHARS. 0687 * 0000000C 0688 PAGE EQU :0C ASCII CTRL. CHAR. TO CLEAR SCREEN (TOF) 0000000D 0689 CR  EQU :0D ASCII CR 0000000A 0690 LF EQU :0A ASCII LF 00000007 0691 BELL  EQU :07 BELL (ALARM) 0692 * 0693 * I/O DEVICE ADDS 0694  * 00000000 0695 CONSL EQU :00 CONSOLE DEVICE ADD. 0000007C 0696 DTTYDA EQU :7C  CRT/TTY DEVICE ADD. (SPI) 0000007F 0697 DLPDA EQU :7F LP DEVICE ADD. (SPI) 00000040  0698 MCSDA EQU :40 MULTI-CHANNEL DEVICE ADDRESS 00000030 0699 UFDCDA EQU :30 UFDC DEFAULT DEVICE ADD. 0700 * 0701 * CONSOLE FUNCTION CODES 0702 * 00000000 0703 SSW EQU :00 CONSOLE SENSE SWITCH FUNCTION CODE 00000001 0704 INT EQU :01  CONSOLE INT. LIGHT FUNCTION CODE 00000004 0705 CDR EQU :04 CONSOLE DATA REG. FUNCTION CODE 0706 * 0707 * CONTROL WORD EQUATES 0708 * 00000000 0709 ERR EQU 0 BIT 0 - COMPRESSED ERR. REPORT (0-NO,1-YES) 00000001 0710 RUN EQU 1  BIT 1 - HALT AFTER ONE PASS (0-NO,1-YES) 00000002 0711 HLT EQU 2 BIT 2 - HALT ON ERROR  (0-NO,1-YES) 00000003 0712 LPR EQU 3 BIT 3 - LINE PRINTER (0-NO,1-YES) 00000004 0713 ETL EQU 4 BIT 4 - ERROR TALLIES (0-NO,1-YES) 00000005 0714 DMP EQU 5 BIT 5 - INPUT BUFFER DUMP (0-NO,1-YES) 00000006 0715 BEL EQU 6 BIT 6 - RING ALARM ON ERROR (0-NO,1-YES) 1PAGE 0027 MACRO (F400) SCOUT UNIVERSAL FLOPPY DISK CONTROLLER TEST PROGRAM 93720-10C1 1982/09/30 08:59:54.25 EQUATES (PROGRAM EQUATES) 0716 * 0717 * PSW BIT EQUATES 0718 * 00000000 0719 CY: EQU 0 CARRY BIT 00000001 0720 OV: EQU 1 OVERFLOW BIT 00000002 0721 BY: EQU 2 BYTE MODE BIT 00000004 0722 CI: EQU 4  CONSOLE INT. ENABLE BIT 00000005 0723 RC: EQU 5 REAL-TIME-CLOCK INT. ENABLE BIT 00000006 0724 XA: EQU 6 EXTENDED ADDRESSING BIT 00000008 0725 GI: EQU 8 GLOBAL INT. ENABLE BIT 0000000C 0726 EI: EQU 12 EOB INTS. BIT 0000000D 0727 DI: EQU  13 DATA INS. BIT 1PAGE 0028 MACRO (F400) SCOUT UNIVERSAL FLOPPY DISK CONTROLLER TEST PROGRAM 93720-10C1 1982/09/30 08:59:54.75 EQUATES (CDR DISPLAY) 0729 ****************************** 0730 *  0731 * CDR DISPLAY EQUATES 0732 * 0733 ******************************  0734 * 0735 * END OF TESTING DISPLAY 0736 * 00000000 0737 FINI EQU  0 TESTING IS ALL DONE 0738 * 0739 * TRAP/EXCEPTION CONSOLE INT. DISPLAYS  0740 * 00003000 0741 ER3000 EQU :3000 CONSOLE INT. 00003100 0742 ER3100 EQU  :3100 UNIMPLEMENTED INSTRUCTION TRAP 00003200 0743 ER3200 EQU :3200 UNINSTALLED MEMORY TRAP   00003300 0744 ER3300 EQU :3300 POWER FAIL 00003400 0745 ER3400 EQU :3400 STACK OVERFLOW 00003500 0746 ER3500 EQU :3500 USER TRAP 00003600 0747 ER3600 EQU :3600 SYSTEM TRAP 00003700 0748 ER3700 EQU :3700 ARITHMETIC TRAP 00004000 0749 ER4000 EQU :4000 LINE PRINTER TIMEOUT 0750 * 0751 * DEMAND MODE QUERY ERROR DISPLAYS  0752 * 0000BAD0 0753 BAD:TG EQU :BAD0 INCORRECT TEST GROUP 0000BAD1 0754 BAD:DA EQU  :BAD1 INCORRECT DEVICE ADD. 0000BAD2 0755 BAD:ID EQU :BAD2 INCORRECT BOARD ID 0000BAD3 0756 BAD:CW EQU :BAD3 INCORRECT CTRL. WORD 1PAGE 0029 MACRO (F400) SCOUT UNIVERSAL FLOPPY DISK CONTROLLER TEST PROGRAM 93720-10C1 1982/09/30 08:59:55.75 MACROS (HEADLP & LPHEAD) 0758 ******************************  0759 * 0760 * HEADLP - THIS MACRO SETS UP A HEAD LOOP. 0761 *  0762 * LPHEAD - THIS MACRO FINISHES A HEAD LOOP. 0763 * 0764 * CALLING SEQUENCE:  0765 * 0766 * HEADLP START LOOP,END LOOP 0767 * 0768 * LPHEAD END LOOP,START LOOP 0769 * 0770 *****************************  0771 * 0772 HEADLP XMACRO 0773 COPY =0,A SET FIRST HEAD NUMBER 0774 COPY A,HEAD CURRENT HEAD=0 0775 #(1) COPY HEAD,A  GET CURRENT HEAD 0776 COPY HEADS,Q AND REQUIRED HEADS 0777 CLSN Q,=2 BOTH HEADS? 0778 JMP $+4 YES, DO THE CODE! 0779  CSN A,Q NO , BUT IS HEAD=HEADS? 0780 JMP $+2 YES, DO THE CODE! 0781 JMP #(2) NO MATCH, SKIP THE CODE 0782 ENDM  0783 * 0784 * 0785 * 0786 LPHEAD XMACRO 0787 #(1) COPY HEAD,A GET CURRENT HEAD 0788 CLSN A,=1 IF 1 THEN DONE!  0789 JMP $+3 YES, EXIT 0790 IMS HEAD NO, BUMP HEAD  0791 JMP #(2) TRY ANOTHER HEAD 0792 ENDM 1PAGE 0030 MACRO (F400) SCOUT UNIVERSAL FLOPPY DISK CONTROLLER TEST PROGRAM 93720-10C1 1982/09/30 08:59:56.75 MACROS (TSTMAC) 0794 ****************************** 0795 * 0796 * TSTMAC - DISPLAY TEST TITL - CRT & CDR  0797 * 0798 * CALLING SEQUENCE: 0799 * 0800 * TSTMAC CDR DISPLAY,TEST LETTER 0801 * 0802 ****************************** 0 803 * 0804 TSTMAC XMACRO 0805 COPY =#(1),A GET CDR TEST DISPLAY  0806 OR TSTCDR,A OR IN TEST GROUP 0807 SELP A,CONSL;CDR SEND TO CDR 0808 COPY =' ##(2)',A GET TEST LETTER 0809 COPY A,TNUM:  SET CURRENT TEST 0810 JST MSGA OUTPUT TITLE 0811 WORD  TSTNUM 'TEST ' 0812 * 0813 ENDM 1PAGE 0031 MACRO (F400) SCOUT UNIVERSAL FLOPPY DISK CONTROLLER TEST PROGRAM 93720-10C1 1982/09/30 08:59:57.25 STANDARD TRAP ADDS./DIO INT. LOCATIONS  0815 ****************************** 0816 * 0817 * STANDARD TRAPS/EXCPETION ADDS.  0818 * 0819 * DIO INT. LOCATIONS 0820 * 0821 * ROM MOVE ROUTINE 0822 * 0823 ****************************** 0824 * 0004 0001 0825 MACHINE =:0001 SCOUT 0826 * 0827 * ROM MOVE ROUTINE 0828 * 0000 0000 0829 ABS 0 0000 0000 0830 WORD 0 DEBUG USE WORD 0001 2010 0831 COPY P,X P->X FROM 0002 C28A 0832 WORD :C28A 'COPY NEG2,Q' 0003 2042 0833 ADD Q,X ADJUST 'FROM' POINTER 0004 6900 0834 COPY =0,Y 0->Y 0005 C286 0835 WORD :C286 'COPY LENGTH,Q' 00000006 0836 MOVLP EQU $ 0006 8080 0000 0837 COPY 0(X),A GET FROM WORD 0007 8440 0000 0838 COPY A,0(Y) STORE AT 'TO' ADDRESS 0008 2B01 0839 ADD =1,X BUMP 'FROM' ADDR. 0009 6B01 0840 ADD =1,Y  BUMP 'TO' ADDR. 000A 54BB 0006 0841 IJNE Q,MOVLP LOOP IF NOT THRU 000B 9F82 0842  WORD :9F82 'JMP DEBUG4' 000C D000 0843 LENGTH WORD -:3000 MOVE :3000 WORDS 000D FFFE 0844 NEG2 WORD -2 000E 0200 0845 WORD DEFSTR 0846 * 0080 0000 0847  ABS :80 POWER UP 0080 BF80 0081 0848 JST *$+1 JUMP TO POWER UP ROUTINE 0081 12BD  0849 WORD POWRUP ADD. OF ROUTINE 0850 * 1PAGE 0032 MACRO (F400) SCOUT UNIVERSAL FLOPPY DISK CONTROLLER TEST PROGRAM 93720-10C1 1982/09/30 08:59:58.50 STANDARD TRAP ADDS./DIO INT. LOCATIONS 0084 0000 0851 ABS :84 TRAP ADD. :0084 0084 0000 0852 RES 2,0 UNIMPLEMENTED INSTRUCTION TRAP 0086 BF80 0087 0853 JST *$+1 JUMP TO SERVICE ROUTINE 0087 12A6 0854 WORD  UITRT ADD. OF ROUTINE 0855 * 0088 0000 0856 RES 2,0 UNINSTALLED MEMORY TRAP 008A BF80 008B 0857 JST *$+1 JUMP TO SERVICE ROUTINE 008B 12B8 0858 WORD   UMRT ADD. OF ROUTINE 0859 * 008C 0000 0860 RES 2,0 POWER FAIL 008E BF80 008F 0861 JST *$+1 JUMP TO SERVICE ROUTINE 008F 12C2 0862 WORD PFRT ADD. OF ROUTINE 0863 * 0094 0000 0864 ABS :94 CONSOLE INT. 0094 BF80 0095 0865 JST *$+1 CONSOLE INT. LOCATION 0095 12D8 0866 WORD CIRT ADD. OF SERVICE ROUTINE 0867 * 009C 0000 0868 ABS :9C TRAP ADD. :009C 009C 0000 0869  RES 2,0 STACK OVERFLOW 009E BF80 009F 0870 JST *$+1 JUMP TO SERVICE ROUTINE 009F 12C4 0871 WORD SORT ADD. OF ROUTINE 0872 * 00A0 0000 0873 RES 2,0 USER TRAP 00A2 BF80 00A3 0874 JST *$+1 JUMP TO SERVICE ROUTINE 00A3 12C9 0875 WORD UTRT ADD. OF ROUTINE 0876 * 00A4 0000 0877 RES 2,0  SYSTEM TRAP 00A6 BF80 00A7 0878 JST *$+1 JUMP TO SERVICE ROUTINE 00A7 12CE 0879 WORD STRT ADD. OF ROUTINE 0880 * 00A8 0000 0881 RES 2,0 ARITHEMETIC ERROR 00AA BF80 00AB 0882 JST *$+1 JUMP TO SERVICE ROUTINE 00AB 12D3 0883 WORD  AERT ADD. OF ROUTINE 1PAGE 0033 MACRO (F400) SCOUT UNIVERSAL FLOPPY DISK CONTROLLER TEST PROGRAM 93720-10C1 1982/09/30 08:59:59.50 PROGRAM STARTUP 0885 ****************************** 0886 *  0887 * PROGRAM STARTUP 0888 * 0889 * :200 - DEFSTR (DEFAULT MODE START)  0890 * :202 - DEMSTR (DEMAND MODE START) 0891 * 0892 * RESET STATUS REG. 0893 * RESET SENSE SWITCH 0894 * RESET CONSOLE INT. 0895 * SET STACK POINTERS 0896 * SET MULTI-CHANNEL FLAG 0897 * SET MODE FLAG 0898 * 0899 ****************************** 0900 * 0200 0000 0901 ABS :200 PROGRAM START 00000200 0902 G:0 EQU $ DEBUG LINK 0200 6900 0903 DEFSTR COPY =0,Y SET Y TO ZERO 0201 9E81 0203 0904 JMP FLGSTR SET FLAG 0905 * 0202 6901 0906 DEMSTR COPY =1,Y SET Y TO ONE 0203 E7A0 0224 0907 FLGSTR COPY Y,MDEFLG SET MODE FLAG 0204 6900 0908 STRTUP COPY =0,Y RESET Y-REG. 0205 3060 0909  COPY Y,S RESET STATUS REG. 0206 6201 0910 OUT Y,CONSL;INT RESET CONSOLE INT. 0207 E79A 0222 0911 COPY Y,LPFLG RESET LP FLAG 0208 6200 0912 OUT Y,CONSL;SSW RESET SENSE SWITCH 0209 E79B 0225 0913 COPY Y,CONSOL ASSUME NO CONSOLE 020A 1642 020D 0914 JT SS,$ +3 IF SS STILL ON, NO CONSOLE 020B 6901 0915 COPY =1,Y ELSE, SET FLAG FOR CONSOLE 020C E798 0225 0916 COPY Y,CONSOL 020D E298 0226 0917 COPY =STACK,Y SET A TO LOW STACK 020E 5060  0918 COPY Y,L SET LOW STACK LIMIT 020F 6B80 0919 ADD =128,Y SET STACK SIZE 0210 7060 0920 COPY Y,K SET STACK POINTER 1PAGE 0034 MACRO (F400) SCOUT UNIVERSAL FLOPPY DISK CONTROLLER TEST PROGRAM 93720-10C1 1982/09/30 09:00:01.00 PROGRAM STARTUP 0211 61F9 0921 IN DTTYDA%1;1,Y GET SPI BOARD STATUS IF THERE IS ONE 0212 71C3 0216 0922 JNE Y,STRT2 JUMP IF THERE IS A SPI THERE 0213 6901 0923 COPY =1,Y 1 MEANS MULTI-CHANNEL BOARD 0214 E792 0227 0924 COPY Y,MCSFLG SET MULTI-CHANNEL FLAG 0215 BF92 0228 0925 JST SETRDY SET UP THE MULTI-CHANNEL 0216 E38D 0224 0926 STRT2 COPY MDEFLG,Y GET MODE FLAG 0217 7147 021F 0927 JEQ Y,DEFLT IF ZERO, DEFAULT MODE 0218 E38C 0225 0928 COPY CONSOL,Y GET PROG CONSOLE FLAG 0219 7141 021B 0929 JEQ Y,NOGOOD NEED A CONSOLE IN DEMAND MODE 021A 9E82 021D 0930 JMP GOOD YES CONSOLE, DO DEMAND MODE 021B 0E0D 0931 NOGOOD HLT KILL IT 021C 9E7E 021B 0932 JMP $-1 THAT'S ALL FOLKS 021D 9F80 021E 0933 GOOD JMP *$+1 ELSE DEMAND MODE 021E 054F 0934 WORD DMMOD 021F BF83 0223 0935 DEFLT JST MSGA OUTPUT TITLE OF DIAG. 0220 1426 0936 WORD TITLE MESS. ADD. 0221 9E88 022A 0937 JMP QERY10 DO QUERIES 0938 * 0008 0939  LPOOL 0222 12FA LPFLG 0223 10BD MSGA 0224 12F9 MDEFLG 0225 1317 CONSOL 0226 1FC1 STACK 0227 12FB MCSFLG 0228 11BD SETRDY 0229 1PAGE 0035 MACRO (F400) SCOUT UNIVERSAL FLOPPY DISK CONTROLLER TEST PROGRAM 93720-10C1 1982/09/30 09:00:01.75 QUERIES-DEFAULT MODE (TEST GROUP) 0941 ***************************** 0942 * 0943 * TEST GROUP 0944 * 0945 * QUERY: 0946 * 0947 *  TEST GROUP (P,M,[S],Q,R,N,T,E)= 0948 * 0949 * SELECTION: 0950 *  0951 * P - SINGLE SIDED 5 1/4" DRIVES 0952 * M - DOUBLE SIDED 5 1/4" DRIVES  0953 * S - SINGLE SIDED 8" DRIVES 0954 * Q - DOUBLE SIDED 8" DRIVES  0955 * R - REPEATS THE LAST TEST GROUP 0956 * N - CONFIGURE A NON-STANDARD TEST SEQUENCE  0957 * T - TECH TEST 0958 * E - GO TO DEBUG 0959 * DEFAULT IS 'S'. 0960 * 0961 ***************************** 0962 * 0000022A  0963 QERY10 EQU $ 022A 2901 0964 COPY =1,X 022B A7D1 027D 0965 COPY X,FIRST  RESET 1ST-TIME FLAG 022C 2900 0966 COPY =0,X RESET X-REG. 022D A774 0222 0967 COPY  X,LPFLG RESET LP FLAG 022E BF74 0223 0968 JST MSGA OUTPUT QUERY 022F 1445 0969  WORD QRYM10 MESS. ADD. 0230 FFC7 0278 0970 QERY11 JSK IKB GET RESPONSE 0231 BFC7 0279 0971  JST CHARCK CHECK FOR SPECIAL CHARS. 0232 9E77 022A 0972 JMP QERY10 '/' 0233 9E76 022A 0973 JMP QERY10 '^' 0234 9E75 022A 0974 JMP QERY10 '_' 0235 9E95 024B 0975  JMP QERY12 CR 0236 3168 025F 0976 JEQ X,QERY13 '#' 1PAGE 0036 MACRO (F400) SCOUT UNIVERSAL FLOPPY DISK CONTROLLER TEST PROGRAM 93720-10C1 1982/09/30 09:00:03.00 QUERIES-DEFAULT MODE (TEST GROUP) 0237 9E72 022A 0977 JMP QERY10 ',' 0238 31B1 022A 0978 JNE X,QERY10 IF X-REG. SET, BAD 0239 0C50 0979 CLSN A,='P' PICO-FLOPPIES? 023A 2901 0980 COPY =1,X SINGLE SIDED 5 1/4" 023B 0C4D 0981 CLSN A,='M' MINI-FLOPPIES? 023C 2902 0982 COPY =2,X  DOUBLE SIDED 5 1/4" 023D 0C53 0983 CLSN A,='S' STANDARD FLOPPIES? 023E 2903 0984  COPY =3,X SINGLE SIDED 8" 023F 0C51 0985 CLSN A,='Q' QUAD-FLOPPIES? 0240 2904  0986 COPY =4,X DOUBLE SIDED 8" 0241 0C4E 0987 CLSN A,='N' DIALOG? 0242 2905 0988 COPY =5,X SET UP DIALOG DEFAULTS 0243 0C54 0989 CLSN A,='T' TECH TEST? 0244 2906 0990 COPY =6,X SET TECH TEST JUMP 0245 0C45 0991 CLSN A,='E' EXIT? 0246 2907 0992 COPY =7,X SET DEBUG JUMP 0247 0C52 0993 CLSN A,='R' REPEAT? 0248 2908 0994 COPY =8,X REPEAT LAST TEST GROUP 0249 3120 022A 0995  JEQ X,QERY10 IF X-REG. = 0, INCORRECT RESPONSE 024A 9E65 0230 0996 JMP QERY11 GET TERMINATOR 024B 6900 0997 QERY12 COPY =0,Y RESET ADD. 024C 4901 0998 COPY =1,Q SET DEFAULT FLAG FOR TEST GROUP 024D 2C08 0999 CLSN X,=8 REPEAT? 024E 9E94 0263 1000 JMP  QERY14 GO FOR IT 024F 2C07 1001 CLSN X,=7 DEBUG? 0250 9FA6 0277 1002 JMP  *QERY19 DO IT TO IT 0251 2C06 1003 CLSN X,=6 TECH TEST? 0252 9E95 0268 1004 JMP QERY16 YES, DO IT 0253 2C05 1005 CLSN X,=5 DIALOG? 0254 9E90 0265 1006 JMP QERY15 YES, DO IT 0255 2C04 1007 CLSN X,=4 DS 8" 0256 E2A7 027E 1008 COPY =DS8INTBL,Y SET PARM ADD. 0257 2C03 1009 CLSN X,=3 SS 8" 0258 E2A6 027F 1010 COPY =SS8INTBL,Y SET PARM ADD. 0259 2C02 1011 CLSN X,=2 DS 5" 025A E2A5 0280 1012   COPY =DS5INTBL,Y SET PARM ADD. 1PAGE 0037 MACRO (F400) SCOUT UNIVERSAL FLOPPY DISK CONTROLLER TEST PROGRAM 93720-10C1 1982/09/30 09:00:04.50 QUERIES-DEFAULT MODE (TEST GROUP) 025B 2C01 1013 CLSN X,=1 SS 5" 025C E2A4 0281 1014 COPY =SS5INTBL,Y SET PARM ADD. 025D 71CC 026A 1015 JNE Y,QERY17 IF ADD., JUMP 025E 9E81 0260 1016 JMP $+2 IF CR, JUMP 025F 4904 1017 QERY13 COPY =4,Q SET FLAG FOR DEFAULT 0260 2903 1018 COPY =3,X SET CDR DISPLAY FOR SS 8" 0261 E29D 027F 1019  COPY =SS8INTBL,Y DEFAULT SINGLE SIDED 8" 0262 9E87 026A 1020 JMP QERY17 INSERT PRAMS 0263 839E 0282 1021 QERY14 COPY TBLADD,A PREVIOUS TEST PRAMS? 0264 11D1 0276 1022 JNE A,QERY18 YES, DO AGAIN 0265 4902 1023 QERY15 COPY =2,Q SET FLAG FOR DIALOG 0266 2905 1024 COPY =5,X SET CDR DISPLAY 0267 9E81 0269 1025 JMP $+2 INSERT PRAMS 0268 4903 1026 QERY16 COPY =3,Q SET FLAG FOR TECH TEST 0269 E299 0283 1027 COPY =DIALOG,Y GET DEFAULT TABLE 026A C799 0284 1028 QERY17 COPY Q,TESTFLG STORE FLAG 026B E796 0282 1029 COPY Y,TBLADD SET TABLE ADD. 026C A798 0285 1030 COPY X,TSTCDR STORE CDR DISPLAY 026D E682 0270 1031 COPY Y,$+3 SET ADD. FOR MOVE 026E 08E0 1032 COPY =-PRMSZ,A SET TABLE SIZE 026F BF8A 027A 1033 JST MOVE MOVE IN PRAMS 0270 0000 1034 WORD 0 'FROM' 0271 1330 1035 WORD  PRAMS 'TO' 0272 BF88 027B 1036 JST TESTCK WHICH WAY? 0273 9F92 0286 1037 JMP QERYF0 TEST GROUP 0274 9E95 028A 1038 JMP QERY20 DIALOG 0275 9F91 0287 1039 JMP QERYG0 TECH TEST 0276 9F85 027C 1040 QERY18 JMP QERYEND DEFAULT 1041 * 0277 0000 1042 QERY19 WORD DEBUG4 EXIT TEST PROGRAM 1043 * 0012 1044 LPOOL 0278 10D2 IKB 0279 126D CHARCK 027A 1294 MOVE 027B 1099 TESTCK 1PAGE 0038 MACRO (F400) SCOUT UNIVERSAL FLOPPY DISK CONTROLLER TEST PROGRAM 93720-10C1 1982/09/30 09:00:05.75 QUERIES-DEFAULT MODE (TEST GROUP) 027C 04D4 QERYEND 027D 1316 FIRST 027E 13D0 DS8INTBL 027F 13B0 SS8INTBL 0280 1390 DS5INTBL 0281 1370 SS5INTBL 0282 1305 TBLADD 0283 1350 DIALOG 0284 1306 TESTFLG 0285 1304 TSTCDR 0286 04B5 QERYF0 0287 04E2 QERYG0 0288 0289 1PAGE 0039 MACRO (F400) SCOUT UNIVERSAL FLOPPY DISK CONTROLLER TEST PROGRAM 93720-10C1 1982/09/30 09:00:06.00 QUERIES-DEFAULT MODE (DIAGNOSTIC TESTS) 1046 ****************************** 1047 * 1048 * DIAGNOSTIC TESTS 1049 * 1050 * QUERY: 1051 * 1052 * TESTS ([A,F,C,E,G,H,I,J],B,D)= 1053 *  1054 * SELECTION: 1055 * 1056 * A - TEST A 1057  * B - TEST B 1058 * C - TEST C 1059 * D - TEST D 1060  * E - TEST E 1061 * F - TEST F (FORMAT) 1062 * G - TEST G  1063 * H - TEST H 1064 * I - TEST I 1065 * J - TEST J  1066 * DEFAULT IS 'A,F,C,E,G,H,I,J'. 1067 * 1068 ****************************** 1069 * 0000028A 1070 QERY20 EQU $ 028A 08F4 1071 COPY =-TSTSZE,A TEST TABLE SIZE 028B BF6E 027A 1072 JST MOVE MOVE IN TESTS 028C 1350 1073 WORD DIALOG FROM 028D 1330 1074 WORD TESTS TO 028E 490A 1075 COPY =NTESTS,Q GET TEST TABLE SIZE 028F E29E 02AE 1076 COPY =TESTS,Y GET TEST TABLE ADD. 0290 BF12 0223 1077 JST MSGA OUTPUT QUERY 0291 1456 1078 WORD QRYM20 MESS. ADD. 0292 FF65 0278 1079 QERY21 JSK IKB GET AN INPUT 0293 BF65 0279 1080 JST CHARCK CHECK FOR SPECIAL CHARS. 0294 9E15 022A 1081 JMP QERY10 '/' 1PAGE 0040 MACRO (F400) SCOUT UNIVERSAL FLOPPY DISK CONTROLLER TEST PROGRAM 93720-10C1 1982/09/30 09:00:07.00 QUERIES-DEFAULT MODE (DIAGNOSTIC TESTS) 0295 9E92 02A8 1082 JMP QERY22  '^' 0296 9E73 028A 1083 JMP QERY20 '_' 0297 9E9B 02B3 1084 JMP QERY30 CR  0298 9E92 02AB 1085 JMP QERY23 '#' 0299 9E78 0292 1086 JMP QERY21 ',' 029A 0D4A 1087 CSK A,='J' SEE IF INPUT IS 029B 0D41 1088 CSK A,='A' BETWEEN A AND K INCLUSIVE 029C 9E6D 028A 1089 JMP QERY20 NO 029D 0000 1090 NOP YES 029E 0ABF 1091 SUB ='A',A GENERATE OFFSET 029F 8A8F 02AF 1092 ADD =TESTBL,A  ADD IN TABLE ADD. 02A0 2000 1093 COPY A,X PUT INTO X-REG. 02A1 8080 0000 1094 COPY  0(X),A GET TEST ADD. 02A2 8440 0000 1095 COPY A,0(Y) PUT INTO WORKING TEST TABLE 02A3 08FF  1096 COPY =-1,A SET TERMINATOR 02A4 8441 0001 1097 COPY A,1(Y) PUT INTO TABLE 02A5 6B01 1098 ADD =1,Y INC. POINTER 02A6 55AB 0292 1099 JNED Q,QERY21 LOOP FOR MORE 02A7 9E62 028A 1100 JMP QERY20 TOO MANY 02A8 4C0A 1101 QERY22 CLSN Q,=NTESTS ANY INPUTS YET? 02A9 9E00 022A 1102 JMP QERY10 NO, JUMP 02AA 9E5F 028A 1103 JMP QERY20  YES, DON'T 02AB 4C0A 1104 QERY23 CLSN Q,=NTESTS ANY INPUTS YES? 02AC 9F4F 027C 1105 JMP QERYEND NO, JUMP 02AD 9E5C 028A 1106 JMP QERY20 YES, DON'T 1107 * 0005  1108 LPOOL 02AE 1330 TESTS 02AF 13F8 TESTBL 02B0 02B1 02B2 1PAGE 0041 MACRO (F400) SCOUT UNIVERSAL FLOPPY DI SK CONTROLLER TEST PROGRAM 93720-10C1 1982/09/30 09:00:08.25 QUERIES-DEFAULT MODE (UNIT NUMBERS) 1110 ****************************** 1111 * 1112 * UNIT NUMBERS 1113 *  1114 * QUERY: 1115 * 1116 * UNIT NUMBERS TO TEST ([0,1],2,3)=  1117 * 1118 * SELECTION: 1119 * 1120 * 0 - UNIT 0  1121 * 1 - UNIT 1 1122 * 2 - UNIT 2 1123 * 3 - UNIT 3  1124 * DEFAULT IS '0,1'. 1125 * 1126 ******************************  1127 * 000002B3 1128 QERY30 EQU $ 02B3 08FC 1129 COPY =-4,A SET MOVE COUNT TO 4 02B4 BF45 027A 1130 JST MOVE MOVE IN DEFAULT PRAMS. 02B5 1360 1131 WORD UNITS-PRAMS+DIALOG FROM 02B6 1340 1132 WORD UNITS TO 02B7 BF9C 02D4 1133 JST MSGA  OUTPUT QUERY 02B8 1467 1134 WORD QRYM30 MESS. ADD. 02B9 A29C 02D6 1135 COPY =UNITS,X GET TABLE ADD. 02BA 4900 1136 COPY =0,Q RESET INPUT COUNT 02BB FF3C 0278 1137 QERY31  JSK IKB GET INPUT 02BC BF3C 0279 1138 JST CHARCK CHECK FOR CHARS. 02BD 9F97 02D5 1139 JMP QERY10 '/' 02BE 9E91 02D0 1140 JMP QERY32 '^' 02BF 9E73 02B3 1141  JMP QERY30 '_' 02C0 9E97 02D8 1142 JMP QERY40 CR 02C1 9E90 02D2 1143 JMP QERY33 '#' 02C2 9E78 02BB 1144 JMP QERY31 ',' 02C3 4C04 1145 CLSN Q,=4  4 INPUTS YET? 1PAGE 0042 MACRO (F400) SCOUT UNIVERSAL FLOPPY DISK CONTROLLER TEST PROGRAM 93720-10C1 1982/09/30 09:00:09.25 QUERIES-DEFAULT MODE (UNIT NUMBERS) 02C4 9E6E 02B3 1146 JMP QERY30 YES, TOO MANY 02C5 0D33 1147 CSK A,='3' IS IT BETWEEN 02C6 0D30 1148 CSK A,='0' 0 AND 3 02C7 9E6B 02B3 1149 JMP QERY30 NO, IS BAD 02C8 0000 1150 NOP YEP 02C9 0AD1  1151 SUB ='0'-1,A SUBTRACT OFFSET 02CA 8480 0000 1152 COPY A,0(X) PUT IN TABLE 02CB 0900 1153 COPY =0,A RESET A-REG. 02CC 8481 0001 1154 COPY A,1(X) SET TERM. IN UNIT TABLE 02CD 2B01 1155 ADD =1,X INC. ADD. 02CE 4B01 1156 ADD =1,Q  INC. COUNT 02CF 9E6B 02BB 1157 JMP QERY31 LOOP FOR MORE 02D0 51A2 02B3 1158 QERY32 JNE Q,QERY30 CAN'T 02D1 9E38 028A 1159 JMP QERY20 CAN 02D2 51A0 02B3 1160 QERY33 JNE Q,QERY30  CAN'T 02D3 9F28 027C 1161 JMP QERYEND CAN 1162 * 0004 1163 LPOOL 02D4 10BD MSGA 02D5 022A QERY10 02D6 1340 UNITS 02D7 1PAGE 0043 MACRO (F400) SCOUT UNIVERSAL FLOPPY DISK CONTROLLER T EST PROGRAM 93720-10C1 1982/09/30 09:00:10.00 QUERIES-DEFAULT MODE (DRIVE BANK) 1165 ****************************** 1166 * 1167 * DRIVE BANK 1168 * 1169 * QUERY: 1170 * 1171 * 8 INCH DRIVE BANK ([Y] OR N)= 1172 *  1173 * SELECTION: 1174 * 1175 * Y - 8 INCH DRIVE BANK 1176 *  N - 5 1/4 INCH DRIVE BANK 1177 * DEFAULT IS 'Y'. 1178 * 1179  ****************************** 1180 * 000002D8 1181 QERY40 EQU $ 02D8 839F 02F8 1182  COPY DRIVE-PRAMS+DIALOG,A GET DEFAULT VALUE 02D9 879F 02F9 1183 COPY A,DRIVE STORE IN WORKING TABLE 02DA 4900 1184 COPY =0,Q RESET INPUT FLAG 02DB 2040 1185 COPY Q,X  DITTO 02DC BF77 02D4 1186 JST MSGA OUTPUT QUERY 02DD 1479 1187 WORD QRYM40  MESS. ADD. 02DE FF19 0278 1188 QERY41 JSK IKB GET INPUT 02DF BF19 0279 1189 JST CHARCK  CHECK CHARS. 02E0 9F74 02D5 1190 JMP QERY10 '/' 02E1 9E8E 02F0 1191 JMP QERY42  '^' 02E2 9E75 02D8 1192 JMP QERY40 '_' 02E3 9E98 02FC 1193 JMP QERY50 CR 02E4 9E91 02F6 1194 JMP QERY43 '#' 02E5 9E72 02D8 1195 JMP QERY40 ',' 02E6 31B1 02D8 1196 JNE X,QERY40 IF INPUT, TRY AGAIN 02E7 0C4E 1197 CLSN A,='N' 5 1/4 INCH? 02E8 4902 1198 COPY =2,Q YES, SET FLAG 02E9 0C59 1199 CLSN A,='Y' 8 INCH? 02EA 4901 1200 COPY =1,Q YES, SET FLAG 1PAGE 0044 MACRO (F400) SCOUT UNIVERSAL FLOPPY DISK CONTROLLER TEST PROGRAM 93720-10C1 1982/09/30 09:00:11.00 QUERIES-DEFAULT MODE (DRIVE BANK) 02EB 512C 02D8 1201  JEQ Q,QERY40 BAD INPUT 02EC 2040 1202 COPY Q,X SET INPUT FLAG 02ED 4AFF 1203  SUB =1,Q DEC. 02EE C78A 02F9 1204 COPY Q,DRIVE STORE IT 02EF 9E6E 02DE 1205  JMP QERY41 GET TERMINATOR 02F0 31A7 02D8 1206 QERY42 JNE X,QERY40 CAN'T 02F1 BF09 027B 1207  JST TESTCK WHICH WAY? 02F2 0000 1208 NOP TEST GROUP 02F3 9E3F 02B3 1209 JMP QERY30 DIALOG 02F4 9F85 02FA 1210 JMP QERYH0 TECH TEST 02F5 9E3D 02B3 1211  JMP QERY30 DEFAULT 02F6 31A1 02D8 1212 QERY43 JNE X,QERY40 CAN'T 02F7 9F04 027C 1213  JMP QERYEND CAN 1214 * 0004 1215 LPOOL 02F8 135D 02F9 133D DRIVE 02FA 0517 QERYH0 02FB 1PAGE 0045 MACRO (F400) SCOUT UNIVERSAL FLOPPY DISK CONTROLLER TEST PROGRAM 93720-10C1 1982/09/30 09:00:11.75 QUERIES-DEFAULT MODE (INVERT STEP) 1217 ****************************** 1218 *   1219 * INVERT STEP 1220 * 1221 * QUERY: 1222 *  1223 * INVERT STEP DIRECTION POLARITY ([Y] OR N)= 1224 * 1225 * SELECTION:  1226 * 1227 * Y - INVERT STEP 1228 * N - DON'T INVERT STEP  1229 * DEFAULT IS 'Y'. 1230 * 1231 *****************************  1232 * 000002FC 1233 QERY50 EQU $ 02FC 839E 031B 1234 COPY STEPINV-PRAMS+DIALOG,A GET DEFAULT VALUE 02FD 879E 031C 1235 COPY A,STEPINV STORE IN WORKING TABLE 02FE 4900 1236 COPY =0,Q RESET INPUT FLAG 02FF 2040 1237 COPY Q,X DITTO 0300 BF53 02D4 1238  JST MSGA OUTPUT QUERY 0301 1489 1239 WORD QRYM50 MESS. ADD. 0302 FF95 0318 1240 QERY51 JSK IKB GET INPUT 0303 BF95 0319 1241 JST CHARCK CHECK FOR SPECIAL CHARS. 0304 9F50 02D5 1242 JMP QERY10 '/' 0305 9E8E 0314 1243 JMP QERY52 '^' 0306 9E75 02FC  1244 JMP QERY50 '_' 0307 9E96 031E 1245 JMP QERY60 CR 0308 9E8D 0316 1246  JMP QERY53 '#' 0309 9E72 02FC 1247 JMP QERY50 ',' 030A 31B1 02FC 1248 JNE  X,QERY50 IF INPUT, TRY AGAIN 030B 0C4E 1249 CLSN A,='N' NO INVERT STEP? 030C 4901 1250 COPY =1,Q YES, SET FLAG 030D 0C59 1251 CLSN A,='Y' INVERT STEP? 030E 4902 1252 COPY =2,Q YES, SET FLAG 1PAGE 0046 MACRO (F400) SCOUT UNIVERSAL FLOPPY DISK CONTROLLER TEST PROGRAM 93720-10C1 1982/09/30 09:00:13.00 QUERIES-DEFAULT MODE (INVERT STEP) 030F 512C 02FC 1253 JEQ Q,QERY50 IF ZERO, ERROR 0310 2040 1254 COPY Q,X SET INPUT FLAG 0311 4AFF 1255 SUB =1,Q DEC. 0312 C789 031C 1256 COPY Q,STEPINV STORE IT 0313 9E6E 0302 1257 JMP  QERY51 GET TERMINATOR 0314 31A7 02FC 1258 QERY52 JNE X,QERY50 CAN'T 0315 9E42 02D8 1259 JMP QERY40 CAN 0316 31A5 02FC 1260 QERY53 JNE X,QERY50 CAN'T 0317 9F82 031A 1261 JMP QERYEND CAN 1262 * 0006 1263 LPOOL 0318 10D2 IKB 0319 126D CHARCK 031A 04D4 QERYEND 031B 135E 031C 133E STEPINV 031D 1PAGE 0047 MACRO (F400) SCOUT UNIVERSAL FLOPPY DISK CONTROLLER TEST PROGRAM 93720-10C1 1982/09/30 09:00:13.50 QUERIES-DEFAULT MODE (STEP RATE TIME) 1265 ******************************  1266 * 1267 * STEP RATE TIME 1268 * 1269 * QUERY:  1270 * 1271 * TRACK TO TRACK STEP RATE TIME (1-15,[6])= 1272 *  1273 * SELECTION: 1274 * 1275 * 1 TO 15 1276 * DEFAULT I S '6'. 1277 * 1278 ***************************** 1279 * 0000031E 1280 QERY60 EQU $ 031E 839D 033C 1281 COPY SRT-PRAMS+DIALOG,A GET DEFAULT VALUE 031F 879D 033D 1282  COPY A,SRT STORE IN WORKING TABLE 0320 4900 1283 COPY =0,Q RESET INPUT FLAG 0321 BF32 02D4 1284 JST MSGA OUTPUT QUERY 0322 14A0 1285 WORD QRYM60 MESS. ADD. 0323 FF96 033A 1286 JSK IDEC INPUT RESPONSE 0324 31C3 0328 1287 JNE X,$+4 IF NON-ZERO, OK 0325 A395 033B 1288 COPY IDCTM3,X GET CHAR. COUNT 0326 3147 032E 1289 JEQ X,QERY61 IF ZERO, JUMP 0327 9E76 031E 1290 JMP QERY60 0 INPUT IS BAD 0328 2D0F 1291  CSK X,=15 MUST BE BETWEEN 0329 2D01 1292 CSK X,=1 1 AND 15 032A 9E73 031E 1293  JMP QERY60 IS BAD 032B 0000 1294 NOP IS GOOD 032C A790 033D 1295  COPY X,SRT STORE IT 032D 4020 1296 COPY X,Q SET INPUT FLAG 032E BF6A 0319 1297 QERY61 JST CHARCK CHECK TERMINATOR 032F 9F25 02D5 1298 JMP QERY10 '/' 0330 9E85 0336 1299 JMP QERY62 '^' 0331 9E6C 031E 1300 JMP QERY60 '_' 1PAGE 0048 MACRO (F400) SCOUT UNIVERSAL FLOPPY DISK CONTROLLER TEST PROGRAM 93720-10C1 1982/09/30 09:00:14.75 QUERIES-DEFAULT MODE (STEP RATE TIME)  0332 9E8C 033F 1301 JMP QERY70 CR 0333 9E84 0338 1302 JMP QERY63 '#' 0334 9E69 031E 1303 JMP QERY60 ',' 0335 9E68 031E 1304 JMP QERY60 ANYTHING ELSE IS STUPID 0336 51A7 031E 1305 QERY62 JNE Q,QERY60 CAN'T 0337 9E44 02FC 1306 JMP QERY50 CAN 0338 51A5 031E 1307 QERY63 JNE Q,QERY60 CAN'T 0339 9F60 031A 1308 JMP QERYEND CAN 1309 * 0005 1310 LPOOL 033A 1108 IDEC 033B 1123 IDCTM3 033C 135F 033D 133F SRT 033E 1PAGE 0049 MACRO (F400) SCOUT UNIVERSAL FLOPPY DISK CONTROLLER TEST PROGRAM 93720-10C1 1982/09/30 09:00:15.00 QUERIES-DEFAULT MODE (INTERRUPTS) 1312 ****************************** 1313 * 1314 * INTERRUPTS  1315 * 1316 * QUERY: 1317 * 1318 * TEST INTERRUPTS FROM UFDC ([Y] OR N)= 1319 * 1320 * SELECTION: 1321 * 1322 * Y - INTERRUPTS 1323 * N - NO INTERRUPTS 1324 * DEFAULT IS 'Y'.  1325 * 1326 ***************************** 1327 * 0000033F 1328 QERY70 EQU $ 033F 839B 035B 1329 COPY INTDIS-PRAMS+DIALOG,A GET DEFAULT VALUE 0340 879B 035C 1330 COPY A,INTDIS STORE IN WORKING TABLE 0341 4900 1331 COPY =0,Q RESET INPUT FLAG 0342 2040   1332 COPY Q,X RESET X-REG. 0343 BF10 02D4 1333 JST MSGA OUTPUT QUERY 0344 14B6 1334 WORD QRYM70 MESS. ADD. 0345 FF52 0318 1335 QERY71 JSK IKB GET INPUT  0346 BF52 0319 1336 JST CHARCK CHECK FOR CHARS. 0347 9F0D 02D5 1337 JMP QERY10 '/' 0348 9E8E 0357 1338 JMP QERY72 '^' 0349 9E75 033F 1339 JMP QERY70 '_' 034A 9E93 035E 1340 JMP QERY80 CR 034B 9E8D 0359 1341 JMP QERY73 '#' 034C 9E72 033F 1342 JMP QERY70 ',' 034D 31B1 033F 1343 JNE X,QERY70 IF INPUT, JUMP 034E 0C4E 1344 CLSN A,='N' NO? 034F 4901 1345 COPY =1,Q YES, SET FLAG 0350 0C59 1346 CLSN A,='Y' YES? 0351 4902 1347 COPY =2,Q YES, SET FLAG 1PAGE 0050 MACRO (F400) SCOUT UNIVERSAL FLOPPY DISK CONTROLLER TEST PROGRAM 93720-10C1 1982/09/30 09:00:16.00 QUERIES-DEFAULT MODE (INTERRUPTS) 0352 512C 033F 1348 JEQ Q,QERY70 IF ZERO, ERROR 0353 2040 1349 COPY Q,X  SET INPUT FLAG 0354 4AFF 1350 SUB =1,Q DEC. 0355 C786 035C 1351 COPY Q,INTDIS STORE IT 0356 9E6E 0345 1352 JMP QERY71 GET TERMINATOR 0357 31A7 033F 1353 QERY72 JNE X,QERY70 IF INPUT FLAG SET, DON'T 0358 9E45 031E 1354 JMP QERY60 OTHERWISE DO IT 0359 31A5 033F 1355 QERY73 JNE X,QERY70 IF INPUT FLAG SET, DON'T 035A 9F3F 031A 1356 JMP QERYEND ELSE DO IT  1357 * 0003 1358 LPOOL 035B 135C 035C 133C INTDIS 035D 1PAGE 0051 MACRO (F400) SCOUT UNIVERSAL FLOPPY DISK CONTROLLER TEST PROGRAM 93720-10C1 1982/09/30 09:00:16.50 QUERIES-DEFAULT MODE (TRACKS)  1360 ****************************** 1361 * 1362 * TRACKS 1363 *  1364 * QUERY: 1365 * 1366 * RANGE OF TRACKS (0-76,[73-76])=  1367 * 1368 * SELECTION: 1369 * 1370 * 0 TO 76  1371 * DEFAULT IS '73,76'. 1372 * 1373 *******************************  1374 * 0000035E 1375 QERY80 EQU $ 035E 08FE 1376 COPY =-2,A SET MOVE COUNT TO 2 035F BFA9 0389 1377 JST MOVE MOVE IN DEFAULT PRAMS. 0360 1365 1378 WORD TRACKS-PRAMS+DIALOG FROM 0361 1345 1379 WORD TRACKS TO 0362 BFA7 038A 1380 JST MSGA  OUTPUT QUERY 0363 14CA 1381 WORD QRYM80 0364 E2A7 038C 1382 COPY =TRACKS,Y GET TABLE ADD. 0365 48FF 1383 COPY =-1,Q RESET INPUT COUNT 0366 FF53 033A 1384 QERY81 JSK IDEC GET LOW TRACK 0367 31C3 036B 1385 JNE X,$+4 IF NOT ZERO,OK 0368 A352 033B 1386  COPY IDCTM3,X GET INPUT COUNT., 0369 3146 0370 1387 JEQ X,QERY82 IF ZERO, SINGLE CHAR. 036A 2900 1388 COPY =0,X SET X TO ZERO 036B 2D4C 1389 CSK X,=76 DO RANGE CHECK 036C 9E81 036E 1390 JMP $+2 OK 036D 9E70 035E 1391 JMP QERY80 BAD 036E A440 0000 1392 COPY X,0(Y) STORE IT 036F 4B01 1393 ADD =1,Q INC. INPUT FLAG 0370 BF28 0319 1394 QERY82 JST CHARCK CHECK FOR CHARS. 0371 9F99 038B 1395 JMP QERY10 '/' 1PAGE 0052 MACRO (F400) SCOUT UNIVERSAL FLOPPY DISK CONTROLLER TEST PROGRAM 93720-10C1 1982/09/30 09:00:17.75 QUERIES-DEFAULT MODE (TRACKS) 0372 9E87 037A 1396 JMP QERY83 '^' 0373 9E6A 035E 1397 JMP QERY80  '_' 0374 9E87 037C 1398 JMP QERY84 CR 0375 9E8D 0383 1399 JMP QERY85 '#' 0376 9E8E 0385 1400 JMP QERY86 ',' 0377 0C2D 1401 CLSN A,='-' DASH? 0378 9E8C 0385 1402 JMP QERY86 IF SO, IS GOOD 0379 9E64 035E 1403 JMP QERY80 ANYTHING ELSE 037A 5323 035E 1404 QERY83 JGE Q,QERY80 CAN'T 037B 9E43 033F 1405 JMP QERY70 CAN 037C 838F 038C 1406 QERY84 COPY TRACKS,A GET LOW TRACK 037D 51C1 037F 1407 JNE Q,$+2 IF SECOND TRACK OR DEFAULT, JUMP 037E 878E 038D 1408 COPY A,TRACKS+1 ELSE SET AS HIGH TRACK 037F BB8D 038D 1409  CSK A,TRACKS+1 DO RANGE CHECK 0380 9E81 0382 1410 JMP $+2 OK 0381 9E5C 035E 1411  JMP QERY80 BAD 0382 9E8D 0390 1412 JMP QERY90 GO ON 0383 531A 035E 1413 QERY85 JGE  Q,QERY80 CAN'T 0384 9F15 031A 1414 JMP QERYEND CAN 0385 5198 035E 1415 QERY86 JNE Q,QERY80 BEEN HERE BEFORE 0386 4B01 1416 ADD =1,Q SET FLAG 0387 6B01 1417 ADD  =1,Y INC. TABLE ADD. 0388 9E5D 0366 1418 JMP QERY81 GET HIGH TRACK 1419 * 0007 1420 LPOOL 0389 1294 MOVE 038A 10BD MSGA 038B 022A QERY10 038C 1345 TRACKS 038D 1346 038E 038F 1PAGE 0053 MACRO (F400) SCOUT UNIVERSAL FLOPPY DISK CONTROLLER TEST PROGRAM 93720-10C1 1982/09/30 09:00:18.75 QUERIES-DEFAULT MODE (SECTORS) 1422 ****************************** 1423 * 1424 * SECTORS 1425 * 1426 * QUERY: 1427 * 1428 * RANGE OF SECTORS ([1-26])= 1429 * 1430 * SELECTION: 1431 * 1432 * 1 TO 26 1433 * DEFAULT IS '1,26'. 1434 * 1435 ****************************** 1436 * 00000390 1437 QERY90 EQU $ 0390 08FE 1438 COPY  =-2,A SET MOVE COUNT TO 2 0391 BF77 0389 1439 JST MOVE MOVE IN DEFAULT PRAMS. 0392 1367   1440 WORD SECTORS-PRAMS+DIALOG FROM 0393 1347 1441 WORD SECTORS TO 0394 BF75 038A 1442 JST MSGA OUTPUT QUERY 0395 14DB 1443 WORD QRYM90 MESS. ADD. 0396 E2A6 03BD 1444 COPY =SECTORS,Y GET TABLE ADD. 0397 48FF 1445 COPY =-1,Q RESET INPUT COUNT 0398 FF21 033A 1446 QERY91 JSK IDEC GET LOW SECTOR 0399 31C3 039D 1447 JNE X,$+4  IF NOT ZERO, OK 039A A320 033B 1448 COPY IDCTM3,X GET CHAR. COUNT 039B 3146 03A2 1449 JEQ  X,QERY92 IF ZERO, SINGLE CHAR. 039C 9E73 0390 1450 JMP QERY90 ZERO INPUT IS WRONG 039D 2D1A  1451 CSK X,=26 DO RANGE CHECK 039E 9E81 03A0 1452 JMP $+2 OK 039F 9E70 0390 1453 JMP QERY90 BAD 03A0 A440 0000 1454 COPY X,0(Y) STORE IT 03A1 4B01 1455 ADD =1,Q INC. INPUT FLAG 03A2 BF98 03BB 1456 QERY92 JST CHARCK CHECK FOR CHARS. 03A3 9F67 038B 1457 JMP QERY10 '/' 1PAGE 0054 MACRO (F400) SCOUT UNIVERSAL FLOPPY DISK CONTROLLER TEST PROGRAM 93720-10C1 1982/09/30 09:00:20.25 QUERIES-DEFAULT MODE (SECTORS) 03A4 9E87 03AC 1458 JMP QERY93  '^' 03A5 9E6A 0390 1459 JMP QERY90 '_' 03A6 9E87 03AE 1460 JMP QERY94 CR 03A7 9E8D 03B5 1461 JMP QERY95 '#' 03A8 9E8E 03B7 1462 JMP QERY96 ',' 03A9 0C2D  1463 CLSN A,='-' DASH? 03AA 9E8C 03B7 1464 JMP QERY96 IS GOOD 03AB 9E64 0390 1465 JMP QERY90 ANYTHING ELSE 03AC 5323 0390 1466 QERY93 JGE Q,QERY90 CAN'T 03AD 9E30 035E 1467 JMP QERY80 CAN 03AE 838E 03BD 1468 QERY94 COPY SECTORS,A GET LOW SECTOR 03AF 51C1 03B1  1469 JNE Q,$+2 IF SECOND SECTOR OR DEFAULT, JUMP 03B0 878D 03BE 1470 COPY A,SECTORS+1 ELSE SET AS HIGH SECTOR 03B1 BB8C 03BE 1471 CSK A,SECTORS+1 DO RANGE CHECK 03B2 9E81 03B4 1472 JMP $+2 OK 03B3 9E5C 0390 1473 JMP QERY90 BAD 03B4 9E8C 03C1 1474 JMP QERYA0 GO ON 03B5 531A 0390 1475 QERY95 JGE Q,QERY90 CAN'T 03B6 9F85 03BC 1476 JMP QERYEND  CAN 03B7 5198 0390 1477 QERY96 JNE Q,QERY90 BEEN HERE BEFORE 03B8 4B01 1478 ADD =1,Q  SET FLAG 03B9 6B01 1479 ADD =1,Y INC. TABLE ADD. 03BA 9E5D 0398 1480 JMP QERY91 GET HIGH SECTOR 1481 * 0006 1482 LPOOL 03BB 126D CHARCK 03BC 04D4 QERYEND 03BD 1347 SECTORS 03BE 1348 03BF 03C0 1PAGE 0055 MACRO (F400) SCOUT UNIVERSAL FLOPPY DISK CONTROLLER TEST PROGRAM 93720-10C1 1982/09/30 09:00:21.25 QUERIES-DEFAULT MODE (HEADS) 1484 ******************************  1485 * 1486 * HEADS 1487 * 1488 * QUERY: 1489 *   1490 * HEADS ([0], 1, OR 2=BOTH)= 1491 * 1492 * SELECTION:  1493 * 1494 * 0 - HEAD 0 1495 * 1 - HEAD 1 1496 * 2 - BOTH HEADS 1497 * DEFAULT IS '0'. 1498 * 1499 ******************************* 1500 * 000003C1 1501 QERYA0 EQU $ 03C1 839C 03DE 1502 COPY  HEADS-PRAMS+DIALOG,A GET DEFAULT PRAM. 03C2 879C 03DF 1503 COPY A,HEADS STORE IN TABLE 03C3 BF46 038A 1504 JST MSGA OUTPUT QUERY 03C4 14EA 1505 WORD QRYMA0 MESS. ADD. 03C5 4900 1506 COPY =0,Q RESET INPUT FLAG 03C6 FF95 03DC 1507 JSK IDEC GET INPUT  03C7 31C3 03CB 1508 JNE X,$+4 IF NON-ZERO, JUMP 03C8 A394 03DD 1509 COPY IDCTM3,X GET CHAR. COUNT 03C9 3146 03D0 1510 JEQ X,QERYA1 IF ZERO, SINGLE CHAR. 03CA 2900 1511 COPY =0,X RESET INPUT AGAIN 03CB 2D02 1512 CSK X,=2 DO RANGE CHECK 03CC 9E81 03CE 1513 JMP $+2 IF LESS, OK 03CD 9E73 03C1 1514 JMP QERYA0 BAD 03CE A790 03DF 1515  COPY X,HEADS STORE IT 03CF 4B01 1516 ADD =1,Q SET INPUT FLAG 03D0 BF6A 03BB  1517 QERYA1 JST CHARCK CHECK FOR CHARS. 03D1 9F39 038B 1518 JMP QERY10 '/' 03D2 9E85 03D8 1519 JMP QERYA2 '^' 1PAGE 0056 MACRO (F400) SCOUT UNIVERSAL FLOPPY DISK CONTROLLER TEST PROGRAM 93720-10C1 1982/09/30 09:00:22.25 QUERIES-DEFAULT MODE (HEADS) 03D3 9E6D 03C1 1520 JMP QERYA0 '_' 03D4 9E8C 03E1 1521 JMP QERYB0 CR 03D5 9E84 03DA 1522 JMP QERYA3 '#' 03D6 9E6A 03C1  1523 JMP QERYA0 ',' 03D7 9E69 03C1 1524 JMP QERYA0 ANYTHING ELSE 03D8 51A8 03C1  1525 QERYA2 JNE Q,QERYA0 CAN'T 03D9 9E36 0390 1526 JMP QERY90 CAN 03DA 51A6 03C1 1527 QERYA3 JNE Q,QERYA0 CAN'T 03DB 9F60 03BC 1528 JMP QERYEND CAN 1529 * 0005 1530 LPOOL 03DC 1108 IDEC 03DD 1123 IDCTM3 03DE 1369 03DF 1349 HEADS 03E0 1PAGE 0057 MACRO (F400) SCOUT UNIVERSAL FLOPPY DISK CONTROLLER TEST PROGRAM 93720-10C1 1982/09/30 09:00:22.75 QUERIES-DEFAULT MODE (DENSITY)  1532 ****************************** 1533 * 1534 * DENSITY 1535 * 1536 * QUERY: 1537 * 1538 * DOUBLE DENSITY ([Y] OR N)=  1539 * 1540 * SELECTION: 1541 * 1542 * Y - DOUBLE DENSITY  1543 * N - SINGLE DENSITY 1544 * DEFAULT IS 'Y'. 1545 *  1546 ******************************* 1547 * 000003E1 1548 QERYB0 EQU $ 03E1 839 B 03FD 1549 COPY DENSITY-PRAMS+DIALOG,A GET DEFAULT PRAM. 03E2 8799 03FC 1550 COPY A,DENSITY STORE IN TABLE 03E3 BF26 038A 1551 JST MSGA OUTPUT QUERY 03E4 14F9 1552 WORD QRYMB0 MESS. ADD. 03E5 4900 1553 COPY =0,Q RESET INPUT FLAG 03E6 2040 1554 COPY Q,X DITTO 03E7 FF96 03FE 1555 QERYB1 JSK IKB GET INPUT 03E8 BF52 03BB 1556 JST  CHARCK CHECK CHARS. 03E9 9F21 038B 1557 JMP QERY10 '/' 03EA 9E8D 03F8 1558 JMP  QERYB2 '^' 03EB 9E75 03E1 1559 JMP QERYB0 '_' 03EC 9E93 0400 1560 JMP QERYC0  CR 03ED 9E8C 03FA 1561 JMP QERYB3 '#' 03EE 9E72 03E1 1562 JMP QERYB0 ','  03EF 0C59 1563 CLSN A,='Y' YES? 03F0 2902 1564 COPY =2,X DOUBLE DENSITY 03F1 0C4E 1565 CLSN A,='N' NO? 03F2 2901 1566 COPY =1,X SINGLE DENSITY 03F3 312D 03E1 1567 JEQ X,QERYB0 BAD INPUT 1PAGE 0058 MACRO (F400) SCOUT UNIVERSAL FLOPPY DISK CONTROLLER TEST PROGRAM 93720-10C1 1982/09/30 09:00:23.75 QUERIES-DEFAULT MODE (DENSITY) 03F4 4020 1568 COPY  X,Q SET INPUT FLAG 03F5 2AFF 1569 SUB =1,X DEC. 03F6 A785 03FC 1570 COPY  X,DENSITY STORE FLAG 03F7 9E6F 03E7 1571 JMP QERYB1 GET TERMINATOR 03F8 51A8 03E1 1572 QERYB2  JNE Q,QERYB0 CAN'T 03F9 9E47 03C1 1573 JMP QERYA0 CAN 03FA 5126 03E1 1574 QERYB3 JEQ  Q,QERYB0 CAN'T 03FB 9F40 03BC 1575 JMP QERYEND CAN 1576 * 0004 1577 LPOOL 03FC 134A DENSITY 03FD 136A 03FE 10D2 IKB 03FF 1PAGE 0059 MACRO (F400) SCOUT UNIVERSAL FLOPPY DISK CONTROLLER TEST PROGRAM 93720-10C1 1982/09/30 09:00:24.25 QUERIES (BYTES/SECTOR) 1579 ****************************** 1580 * 1581 * BYTES/SECTOR 1582 * 1583 * QUERY:  1584 * 1585 * SECTOR SIZE (128, [256], OR 512)= 1586 *  1587 * SELECTION: 1588 * 1589 * 128 - 128 BYTES/SECTOR 1590 * 256 - 256 BYTES/SECTOR 1591 * 512 - 512 BYTES/SECTOR 1592 * DEFAULT IS '256'. 1593 * 1594 ****************************** 1595 * 00000400  1596 QERYC0 EQU $ 0400 83B6 0437 1597 COPY N-PRAMS+DIALOG,A GET DEFAULT 0401 87B6 0438 1598  COPY A,N STORE IT IN TABLE 0402 4900 1599 COPY =0,Q RESET INPUT FLAG 0403 BF06 038A 1600 JST MSGA OUTPUT QUERY 0404 1508 1601 WORD QRYMC0 MESS. ADD. 0405 FF56 03DC 1602 JSK IDEC GET INPUT 0406 31C3 040A 1603 JNE X,$+4 IF NOT ZERO, OK  0407 A355 03DD 1604 COPY IDCTM3,X GET CHAR. COUNT 0408 314B 0414 1605 JEQ X,QERYC2 IF ZERO, OK 0409 9E76 0400 1606 JMP QERYC0 BAD INPUT 040A 2A80 1607 SUB =128,X  128 BYTES/SECTOR? 040B 3146 0412 1608 JEQ X,QERYC1 YES, STORE IT 040C 2A80 1609 SUB  =128,X 256 BYTES/SECTOR? 040D 3143 0411 1610 JEQ X,QERYC1-1 YES, STORE IT 040E 2A00 1611  SUB =256,X 512 BYTES/SECTOR? 040F 31B0 0400 1612 JNE X,QERYC0 NO, BAD INPUT 0410 2B01 1613 ADD =1,X 512 0411 2B01 1614 ADD =1,X 256 1PAGE 0060 MACRO (F400) SCOUT UNIVERSAL FLOPPY DISK CONTROLLER TEST PROGRAM 93720-10C1 1982/09/30 09:00:25.50 QUERIES (BYTES/SECTOR) 0412 A7A5 0438 1615 QERYC1 COPY X,N STORE IT 0413 4B01 1616 ADD =1,Q SET INPUT FLAG 0414 BF26 03BB 1617 QERYC2 JST CHARCK CHECK CHARS. 0415 9F9C 0432 1618 JMP QERY10 '/' 0416 9E85 041C 1619 JMP QERYC3 '^' 0417 9E68 0400 1620 JMP QERYC0 '_' 0418 9E87 04IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII  IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII! IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIe820921100802820921100802820930092010e@820921100802820921100802820930092008" e820921100802820921100802820921100802e820921100802820921100802820921100802820921100802820921100802820921100802ea8209300911492582093009152700820930091952# $ % & ' ( ) * + . UFDCDIAG:1 LST, 20 1621 JMP QERYC5 CR 0419 9E84 041E 1622 JMP QERYC4 '#' 041A 9E65 0400 1623  JMP QERYC0 ',' 041B 9E64 0400 1624 JMP QERYC0 ANYTHING ELSE IS WRONG 041C 51A3 0400 1625 QERYC3 JNE Q,QERYC0 CAN'T 041D 9E43 03E1 1626 JMP QERYB0 CAN 041E 51A1 0400 1627 QERYC4 JNE Q,QERYC0 CAN'T 041F 9F1C 03BC 1628 JMP QERYEND CAN 0420 A397 0438 1629 QERYC5  COPY N,X GET CODE 0421 31C5 0427 1630 JNE X,$+6 IF NOT ZERO, IS OK 0422 A359 03FC 1631 COPY DENSITY,X GET DENSITY FLAG 0423 3143 0427 1632 JEQ X,$+4 IF SINGLE DENSITY, JUMP 0424 BF8E 0433 1633 JST MSGA OUTPUT ERROR MESS. 0425 158A 1634 WORD QRYEMC0  'BAD COMBINATION' 0426 9E59 0400 1635 JMP QERYC0 TRY AGAIN 0427 BF8C 0434 1636 JST TESTCK WHICH WAY? 0428 0000 1637 NOP TEST GROUP 0429 9E90 043A 1638 JMP  QERYD0 DIALOG 042A 9E81 042C 1639 JMP $+2 TECH TEST 042B 9E8E 043A 1640 JMP  QERYD0 DEFAULT 042C 8388 0435 1641 COPY TSTFUNC,A GET TEST TECH FUNC. 042D 0D13 1642  CSK A,=19 DO RANGE CHECK 042E 0D10 1643 CSK A,=16 DITTO 042F 9E8A 043A 1644  JMP QERYD0 DATA PATTERN 0430 0000 1645 NOP 0431 9F84 0436 1646 JMP QERYI0  WORD PATTERN 1647 * 0008 1648 LPOOL 0432 022A QERY10 0433 10BD MSGA 1PAGE 0061 MACRO (F400) SCOUT UNIVERSAL FLOPPY DISK CONTROLLER TEST PROGRAM 93720-10C1 1982/09/30 09:00:26.50 QUERIES (BYTES/SECTOR) 0434 1099 TESTCK 0435 1308 TSTFUNC 0436 0535 QERYI0 0437 136B 0438 134B N 0439 1PAGE 0062 MACRO (F400) SCOUT UNIVERSAL FLOPPY DISK CONTROLLER TEST PROGRAM 93720-10C1 1982/09/30 09:00:26.75 QUERIES-DEFAULT MODE (PATTERN) 1650 ****************************** 1651 * 1652 * PATTERN 1653 *  1654 * QUERY: 1655 * 1656 * DATA PATTERN (:00-:FF,[:C6])=: 1657 * 1658 * SELECTION: 1659 * 1660 * :00 TO :FF 1661 * DEFAULT IS ':C6'. 1662 * 1663 ****************************** 1664 * 0000043A 1665 QERYD0 EQU $ 043A 839F 045A 1666 COPY PATTERN-PRAMS+DIALOG,A GET DEFAULT VALUE 043B 879F 045B 1667 COPY A,PATTERN STORE IN TABLE 043C 4900 1668 COPY =0,Q  RESET INPUT FLAG 043D BF75 0433 1669 JST MSGA OUTPUT QUERY 043E 151A 1670 WORD QRYMD0 MESS. ADD. 043F FF96 0456 1671 JSK IHEX GET INPUT 0440 33B9 043A 1672 JLT  X,QERYD0 IF MINUS, IS BAD 0441 31C3 0445 1673 JNE X,$+4 IF NOT ZERO, OK 0442 A394 0457 1674 -  COPY HXTMP2,X GET CHAR. COUNT 0443 3146 044A 1675 JEQ X,QERYD1 IF ZERO, OK 0444 2900  1676 COPY =0,X SET INPUT TO ZERO 0445 2DFF 1677 CSK X,=:FF DO RANGE CHECK 0446 9E81 0448 1678 JMP $+2 OK 0447 9E72 043A 1679 JMP QERYD0 BAD 0448 A792 045B 1680 COPY X,PATTERN STORE PATTERN 0449 4B01 1681 ADD =1,Q SET INPUT FLAG 044A BF8D 0458 1682 QERYD1 JST CHARCK CHECK CHARS. 044B 9F66 0432 1683 JMP QERY10 '/'  044C 9E85 0452 1684 JMP QERYD2 '^' 044D 9E6C 043A 1685 JMP QERYD0 '_' 1PAGE 0063 MACRO (F400) SCOUT UNIVERSAL FLOPPY DISK CONTROLLER TEST PROGRAM 93720-10C1 1982/09/30 09:00:28.00 QUERIES-DEFAULT MODE (PATTERN) 044E 9E8E 045D 1686 JMP QERYE0 CR 044F 9E84 0454 1687 JMP QERYD3 '#' 0450 9E69 043A 1688 JMP QERYD0 ',' 0451 9E68 043A 1689 JMP QERYD0 ANYTHING ELSE 0452 51A7 043A 1690 QERYD2 JNE Q,QERYD0 CAN'T 0453 9E2C 0400 1691 JMP QERYC0 CAN 0454 51A5 043A 1692 QERYD3 JNE Q,QERYD0 CAN'T 0455 9EFE 04D4 1693 JMP QERYEND CAN 1694 * 0007 1695 LPOOL 0456 1217 IHEX 0457 1233 HXTMP2 0458 126D CHARCK 0459 04D4 QERYEND 045A 136C  045B 134C PATTERN 045C 1PAGE 0064 MACRO (F400) SCOUT UNIVERSAL FLOPPY DISK CONTROLLER TEST PROGRAM 93720-10C1 1982/09/30 09:00:28.25 QUERIES-DEFAULT MODE (DEVICE ADD.) 1697 ****************************** 1698 *  1699 * DEVICE ADD. 1700 * 1701 * QUERY: 1702 *  1703 * DEVICE ADDRESS (:04-:FC,[:30])=: 1704 * 1705 * SELECTION:  1706 * 1707 * :04 TO :FC 1708 * DEFAULT IS ':30'. 1709 * 1710 ****************************** 1711 * 0000045D 1712 QERYE0 EQU $ 045D 83A8 0486 1713 COPY DEVADR-PRAMS+DIALOG,A GET DEFAULT VALUE 045E 87A8 0487 1714 COPY A,DEVADR STORE IN TABLE 045F 4900 1715 COPY =0,Q RESET INPUT FLAG 0460 BF52 0433 1716 JST MSGA OUTPUT QUERY 0461 152B 1717 WORD QRYME0 MESS. ADD. 0462 FF73 0456 1718  JSK IHEX GET INPUT 0463 31C3 0467 1719 JNE X,$+4 IF NOT ZERO, OK 0464 A372 0457 1720 COPY HXTMP2,X GET CHAR. COUNT 0465 3147 046D 1721 JEQ X,QERYE1 IF ZERO, OK 0466 9E76 045D 1722 JMP QERYE0 IF 0 IS BAD 0467 2DFC 1723 CSK X,=:FC MUST BE BETWEEN 0468 2D04 1724 CSK X,=:04 :04 AND :FC 0469 9E73 045D 1725 JMP QERYE0 BAD  046A 0000 1726 NOP GOOD 046B A79B 0487 1727 COPY X,DEVADR STORE IN TABL. E 046C 4B01 1728 ADD =1,Q SET INPUT FLAG 046D BF6A 0458 1729 QERYE1 JST CHARCK CHECK CHARS. 046E 9F43 0432 1730 JMP QERY10 '/' 046F 9E85 0475 1731 JMP QERYE2 '^' 0470 9E6C 045D 1732 JMP QERYE0 '_' 1PAGE 0065 MACRO (F400) SCOUT UNIVERSAL FLOPPY DISK CONTROLLER TEST PROGRAM 93720-10C1 1982/09/30 09:00:29.75 QUERIES-DEFAULT MODE (DEVICE ADD.) 0471 9E92 0484 1733 JMP QERYE4 CR 0472 9E8F 0482 1734 JMP QERYE3 '#' 0473 9E69 045D 1735 JMP QERYE0  ',' 0474 9E68 045D 1736 JMP QERYE0 ANYTHING ELSE IS WRONG 0475 51A7 045D 1737 QERYE2 JNE Q,QERYE0 CAN'T 0476 BF3D 0434 1738 JST TESTCK WHICH WAY? 0477 9F3A 0432 1739 JMP QERY10 TEST GROUP 0478 9E41 043A 1740 JMP QERYD0 DIALOG 0479 9E81 047B 1741 JMP $+2  TECH TEST 047A 9E3F 043A 1742 JMP QERYD0 DEFAULT 047B 8339 0435 1743 COPY TSTFUNC,A GET FUNCTION 047C 11C1 047E 1744 JNE A,$+2 IF >0, JUMP 047D 9EE4 04E2 1745 JMP  QERYG0 ELSE IS 0 047E 0D0F 1746 CSK A,=15 DO RANGE CHECK 047F 9E81 0481 1747 JMP $+2 IF LESS, GO 1 BACK 0480 9F35 0436 1748 JMP QERYI0 ELSE WORD QUERY 0481 9E38 043A 1749 JMP QERYD0 CAN 0482 519A 045D 1750 QERYE3 JNE Q,QERYE0 CAN'T 0483 9ED0 04D4 1751  JMP QERYEND CAN 0484 9E84 0489 1752 QERYE4 JMP QERYFF0 NOW GET THE BOARD ID  1753 * 0004 1754 LPOOL 0485 04E2 QERYG0 0486 136D 0487 134D DEVADR 0488 1PAGE 0066 MACRO (F400) SCOUT UNIVERSAL FLOPPY DISK CONTROLLER TEST PROGRAM 93720-10C1 1982/09/30 09:00:30.50 QUERIES-DEFAULT MODE (BOARD ID)  1756 ****************************** 1757 * 1758 * BOARD ID 1759 * 1760 * QUERY: 1761 * 1762 * BOARD ID (:1-:E,[:5])=:  1763 * 1764 * SELECTION: 1765 * 1766 * :1 TO :E  1767 * DEFAULT IS ':5' 1768 * 1769 ******************************  1770 * 00000489 1771 QERYFF0 EQU $ 0489 83A8 04B2 1772 COPY BDID-PRAMS+DIALOG,A GET DEFAULT VALUE 048A 87A8 04B3 1773 COPY A,BDID STORE IN TABLE 048B 4900 1774 COPY =0,Q  RESET INPUT FLAG 048C BF26 0433 1775 JST MSGA OUTPUT QUERY 048D 153D 1776 WORD  QRYMFF0 MESS. ADD. 048E FF47 0456 1777 JSK IHEX GET INPUT 048F 31C3 0493 1778 JNE X,$+4 IF NOT ZERO, OK 0490 A346 0457 1779 COPY HXTMP2,X GET CHAR. COUNT 0491 3147 0499 1780 JEQ X,QERYFF1 IF ZERO, OK 0492 9E76 0489 1781 JMP QERYFF0 ELSE 0 IS BAD 0493 2D0E /  1782 CSK X,=:E DO RANGE CHECK 0494 2D01 1783 CSK X,=:1 DITTO 0495 9E73 0489 1784 JMP QERYFF0 BAD 0496 0000 1785 NOP GOOD 0497 A79B 04B3 1786 COPY X,BDID STORE IN TABLE 0498 4B01 1787 ADD =1,Q SET INPUT FLAG 0499 BF3E 0458 1788 QERYFF1 JST CHARCK CHECK CHARS. 049A 9F17 0432 1789 JMP QERY10 '/' 049B 9E85 04A1 1790 JMP QERYFF2 UP ARROW 049C 9E6C 0489 1791 JMP QERYFF0 BACK ARROW 1PAGE  0067 MACRO (F400) SCOUT UNIVERSAL FLOPPY DISK CONTROLLER TEST PROGRAM 93720-10C1 1982/09/30 09:00:31.75 QUERIES-DEFAULT MODE (BOARD ID) 049D 9E8F 04AD 1792 JMP QERYFF4 CR 049E 9E8C 04AB 1793 JMP QERYFF3 '#' 049F 9E69 0489 1794 JMP QERYFF0 ',' 04A0 9E68 0489 1795 JMP QERYFF0 ANYTHING ELSE IS WRONG 04A1 51A7 0489 1796 QERYFF2 JNE Q,QERYFF0 CAN'T 04A2 BF11 0434 1797 JST TESTCK  WHICH WAY? 04A3 9F0E 0432 1798 JMP QERY10 TEST GROUP 04A4 9E38 045D 1799 JMP QERYE0  DIALOG 04A5 9E81 04A7 1800 JMP $+2 TECH TEST 04A6 9E36 045D 1801 JMP QERYE0  DEFAULT 04A7 830D 0435 1802 COPY TSTFUNC,A GET FUNCTION 04A8 0C15 1803 CLSN A,=21  'SAL'? 04A9 9EB8 04E2 1804 JMP QERYG0 YES, JUMP 04AA 9E32 045D 1805 JMP QERYE0  ELSE GO BACK ONE 04AB 519D 0489 1806 QERYFF3 JNE Q,QERYFF0 CAN'T 04AC 9EA7 04D4 1807 JMP QERYEND CAN 04AD BF06 0434 1808 QERYFF4 JST TESTCK WHICH WAY? 04AE 9E86 04B5 1809 JMP QERYF0 TEST GROUP 04AF 9E85 04B5 1810 JMP QERYF0 DIALOG 04B0 9EA3 04D4 1811 JMP QERYEND TECH TEST 04B1 9E83 04B5 1812 JMP QERYF0 DEFAULT 1813 * 0003 1814  LPOOL 04B2 136E 04B3 134E BDID 04B4 1PAGE 0068 MACRO (F400) SCOUT UNIVERSAL FLOPPY DISK CONTROLLER TEST PROGRAM 93720-10C1 1982/09/30 09:00:32.50 QUERIES-DEFAULT MODE (CONTROL WORD) 1816 ******************************  1817 * 1818 * CONTROL WORD 1819 * 1820 * QUERY:  1821 * 1822 * CONTROL WORD (:00-:7F,[:00])=: 1823 * 1824 * SELECTION: 1825 * 1826 * :00 TO :7F 1827 * DEFAULT IS ':00'. 1828 * 1829 ****************************** 1830 * 000004B5 1831 QERYF0 EQU $ 04B5 83A7 04DD 1832 COPY CNTWD-PRAMS+DIALOG,A GET DEFAULT VALUE 04B6 87A7 04DE 1833  COPY A,CNTWD STORE IN TABLE 04B7 4900 1834 COPY =0,Q RESET INPUT FLAG 04B8 BFA2 04DB 1835 JST MSGA OUTPUT QUERY 04B9 154A 1836 WORD QRYMF0 MESS. ADD. 040 BA FF1B 0456 1837 JSK IHEX GET INPUT 04BB 33B9 04B5 1838 JLT X,QERYF0 NEGATIVE IS BAD 04BC 31C3 04C0 1839 JNE X,$+4 IF NON ZERO, OK 04BD A319 0457 1840 COPY HXTMP2,X  GET CHAR. COUNT 04BE 3146 04C5 1841 JEQ X,QERYF1 IF ZERO, OK 04BF 2900 1842 COPY =0,X SET INPUT TO 0 04C0 2D7F 1843 CSK X,=:7F DO RANGE CHECK 04C1 9E81 04C3 1844  JMP $+2 OK 04C2 9E72 04B5 1845 JMP QERYF0 NOT OK 04C3 A79A 04DE 1846 COPY  X,CNTWD STORE IN TABLE 04C4 4B01 1847 ADD =1,Q SET INPUT FLAG 04C5 BF12 0458 1848 QERYF1 JST CHARCK CHECK FOR CHARS. 04C6 9F95 04DC 1849 JMP QERY10 '/' 04C7 9E85 04CD 1850  JMP QERYF2 '^' 04C8 9E6C 04B5 1851 JMP QERYF0 '_' 1PAGE 0069 MACRO (F400) SCOUT UNIVERSAL FLOPPY DISK CONTROLLER TEST PROGRAM 93720-10C1 1982/09/30 09:00:33.75 QUERIES-DEFAULT MODE (CONTROL WORD) 04C9 9E8A 04D4 1852 JMP QERYEND CR 04CA 9E88 04D3 1853 JMP QERYF3 '#' 04CB 9E69 04B5 1854 JMP QERYF0 ',' 04CC 9E68 04B5 1855 JMP QERYF0 ANYTHING ELSE IS WRONG 04CD 51A7 04B5 1856 QERYF2 JNE Q,QERYF0 04CE BF90 04DF 1857 JST TESTCK WHICH WAY? 04CF 9F8C 04DC 1858  JMP QERY10 TEST GROUP 04D0 0000 1859 NOP DIALOG 04D1 0000 1860  NOP TECH TEST 04D2 9E36 0489 1861 JMP QERYFF0 DEFAULT 04D3 51A1 04B5 1862  QERYF3 JNE Q,QERYF0 CAN'T 04D4 8389 04DE 1863 QERYEND COPY CNTWD,A GET CTRL. WORD 04D5 4900 1864 COPY =0,Q SET FOR CRT ONLY 04D6 003F 1865 TBIT LPR,A LINE PRINTER? 04D7 36C1 04D9 1866 JF OV,$+2 IF NO, JUMP 04D8 4901 1867 COPY =1,Q ELSE SET FOR CRT & LP 04D9 C786 04E0 1868 COPY Q,LPFLG STORE LP FLAG 04DA 9F86 04E1 1869 JMP TCTL10  DO IT TO IT 1870 * 0007 1871 LPOOL 04DB 10BD MSGA 04DC 022A QERY10 04DD 136F 04DE 134F CNTWD 04DF 1099 TESTCK 04E0 12FA LPFLG 04E1 05A2 TCTL10 1PAGE 0070 MACRO (F400) SCOUT UNIVERSAL FLOPPY DISK CONTROLLER TEST PROGRAM 93720-10C1 1982/09/30 09:00:34.75 QUERIES-DEFAULT MODE (TECH TEST FUNCTION) 1873 ****************************** 1874 * 1875 * TECH TEST FUNCTION 1876 *  1877 * QUERY: 1878 * 1879 * FUNCTION (0-20,[0])= 1880 *  1881 * SELECTION: 1882 * 1883 * 0 - READ MAIN STATUS REGISTER  1884 * 1 - INITIALIZE UFDC 1885 * 2 - READ DATA 1886 * 3 - READ DELETED DATA 1887 * 4 - READ ID 1888 * 5 - WRITE DATA 1 1889 * 6 - WRITE DELETED DATA 1890 * 7 - SCAN EQUAL 1891 * 8 - SCAN LOW OR EQUAL 1892 * 9 - SCAN HIGH OR EQUAL 1893 * 10 - RECALIBRATE  1894 * 11 - SEEK 1895 * 12 - SENSE DRIVE STATUS 1896 * 13 - SENSE INTERRUPT STATUS 1897 * 14 - FORMAT TRACK 1898 * 15 - INVALID COMMAND  1899 * 16 - WRITE DMA ADDRESS POINTER 1900 * 17 - WRITE INTERRUPT VECTOR ADDRESS  1901 * 18 - WRITE DMA BYTE COUNT REGISTER 1902 * 19 - WRITE MODE REGISTER 1903 * 20 - 'SAL' INSTRUCTION 1904 * DEFAULT IS 0 1905 * 1906 ****************************** 1907 * 000004E2 1908 QERYG0 EQU $ 1PAGE 0071 MACRO (F400) SCOUT UNIVERSAL FLOPPY DISK CONTROLLER TEST PROGRAM 93720-10C1 1982/09/30 09:00:35.50 QUERIES-DEFAULT MODE (TECH TEST FUNCTION)  04E2 4903 1909 COPY =3,Q 04E3 C7AC 0510 1910 COPY Q,FIRST IGNORE 1ST 3 PASSES ON THE TECH TEST 04E4 C2A6 050B 1911 COPY =:A5A5,Q SET DEFAULT WORD PATTERN 04E5 C7A6 050C 1912 COPY  Q,WPAT STORE IT 04E6 4901 1913 COPY =1,Q SET UNIT TO FIRST ONE ONLY 04E7 C7A5 050D 1914 COPY Q,UNITS STORE IN TABLE 04E8 4900 1915 COPY =0,Q SET END OF TBLE 04E9 C7A7 0511 1916 COPY Q,UNITS+1 SET IN TABLE 04EA C7A7 0512 1917 COPY Q,TSTFUNC ALSO DEFAULT FUNCTION 04EB BF6F 04DB 1918 JST MSGA OUTPUT QUERY 04EC 155B 1919 WORD QRYMG0  MESS. ADD. 04ED FFA5 0513 1920 JSK IDEC GET FUNCTION 04EE 31C3 04F2 1921 JNE X,$+4 IF NON-ZERO, OK 04EF A3A4 0514 1922 COPY IDCTM3,X GET INPUT COUNT 04F0 3147 04F8 1923  JEQ X,QERYG1 IF ZERO, SINGLE CHAR. 04F1 2900 1924 COPY =0,X SET X TO ZERO 04F2 2D14  1925 CSK X,=20 DO RANGE CHECK 04F3 2D00 1926 CSK X,=0 LOWER LIMIT 04F4 9E6D 04E2 1927 JMP QERYG0 BAD 04F5 0000 1928 NOP OK 04F6 A79B 0512 1929 COPY X,TSTFUNC STORE FUNCTION 04F7 4901 1930 COPY =1,Q SET INPUT FLAG 04F8 BF95 050E 1931 QERYG1 JST CHARCK CHECK FOR CHARS. 04F9 9F62 04DC 1932 JMP QERY10 '/' 04FA 9E85 0500 1933 JMP QERYG2 '^' 04FB 9E66 04E2 1934 JMP QERYG0 '_' 04FC 9E87 0504 1935 JMP QERYG4 CR 04FD 9E84 0502 1936 JMP QERYG3 '#' 04FE 9E63 04E2 1937 JMP QERYG0 ',' 04FF 9E62 04E2 1938 JMP QERYG0 ANYTHING ELSE 0500 51A1 04E2 1939 QERYG2 JNE Q,QERYG0 CAN'T 0501 9F5A 04DC 1940 JMP QERY10 CAN 0502 519F 04E2 1941 QERY2 G3 JNE Q,QERYG0 CAN'T 0503 9E50 04D4 1942 JMP QERYEND CAN 0504 838D 0512 1943 QERYG4 COPY TSTFUNC,A GET FUNCTION 0505 11C1 0507 1944 JNE A,$+2 IF NOT 0, JUMP 1PAGE 0072 MACRO (F400) SCOUT UNIVERSAL FLOPPY DISK CONTROLLER TEST PROGRAM 93720-10C1 1982/09/30 09:00:37.00 QUERIES-DEFAULT MODE (TECH TEST FUNCTION) 0506 9F88 050F 1945 JMP QERYE0 ELSE DO DEVICE ADD. 0507 0D10 1946 CSK A,=16  DO RANGE CHECK 0508 9E8E 0517 1947 JMP QERYH0 DO UNIT 0509 0000 1948 NOP 050A 9EAA 0535 1949 JMP QERYI0 DO WORD PATTERN 1950 * 000C 1951 LPOOL  050B A5A5 050C 1309 WPAT 050D 1340 UNITS 050E 126D CHARCK 050F 045D QERYE0 0510 1316 FIRST 0511 1341 0512 1308 TSTFUNC 0513 1108 IDEC 0514 1123 IDCTM3 0515 0516 1PAGE 0073 MACRO (F400) SCOUT UNIVERSAL FLOPPY DISK CONTROLLER TEST PROGRAM 93720-10C1 1982/09/30 09:00:37.75 QUERIES-DEFAULT MODE (TECH TEST UNIT) 1953 ******************************  1954 * 1955 * TECH TEST UNIT NUMBER 1956 * 1957 * QUERY: 1958 * 1959 * UNIT NUMBER ([0], 1, 2, 3)= 1960 * 1961 * SELECTION: 1962 * 1963 * 0 - UNIT 0 1964 * 1 - UNIT 1 1965 * 2 - UNIT 2 1966 * 3 - UNIT 3 1967 * DEFAULT IS 0 1968 * 1969 ****************************** 1970 * 00000517 1971 QERYH0 EQU $ 0517 4901 1972 COPY =1,Q SET DEFAULT TO FIRST UNIT 0518 C774 050D 1973  COPY Q,UNITS STORE UNIT NUMBER 0519 4900 1974 COPY =0,Q SET END OF TABLE 051A C776 0511 1975 COPY Q,UNITS+1 STORE IN TABLE 051B BF3F 04DB 1976 JST MSGA OUTPUT QUERY 051C 1567 1977 WORD QRYMH0 MESS. ADD. 051D FF94 0532 1978 QERYH1 JSK IKB GET DRIVE NUMBER 051E BF6F 050E 1979 JST CHARCK CHECK CHARS. 051F 9F3C 04DC 1980 JMP QERY10 '/' 0520 9E8D 052E 1981 JMP QERYH2 '^' 0521 9E75 0517 1982 JMP QERYH0 '_' 0522 9F90 0533 1983 JMP QERY40 CR 0523 9E8C 0530 1984 JMP QERYH3 '#' 0524 9E72 0517 1985 JMP QERYH0 ',' 0525 51B1 0517 1986 JNE Q,QERYH0 IF INPUT TRY AGAIN 0526 0D33 1987 CSK A,='3' DO RANGE CHECK 0527 0D30 1988 CSK A,='0' DITTO 1PAGE 0074 MACRO (F400) SCOUT UNIVERSAL FLOPPY DISK CONTROLLER TEST PROGRAM 93720-10C1 1982/09/30 09:00:38.75 QUERIES-DEFAULT MODE (TECH TEST UNIT) 0528 9E6E 0517 1989 JMP QERYH0 BAD 0529 0000 1990 NOP  OK 052A 4000 1991 COPY A,Q SET INPUT FLAG 052B 0AD1 1992 SUB 3 ='0'-1,A GENERATE UNIT NUMBER 052C 8760 050D 1993 COPY A,UNITS SET UNIT NUMBER 052D 9E6F 051D 1994  JMP QERYH1 GET TERMINATOR 052E 51A8 0517 1995 QERYH2 JNE Q,QERYH0 CAN'T 052F 9E32 04E2 1996 JMP QERYG0 CAN 0530 51A6 0517 1997 QERYH3 JNE Q,QERYH0 CAN'T 0531 9E22 04D4 1998  JMP QERYEND CAN 1999 * 0003 2000 LPOOL 0532 10D2 IKB 0533 02D8 QERY40  0534 1PAGE 0075 MACRO (F400) SCOUT UNIVERSAL FLOPPY DISK CONTROLLER TEST PROGRAM 93720-10C1 1982/09/30 09:00:39.25 QUERIES-DEFAULT MODE (TECH TEST WORD PATTERN) 2002 ****************************** 2003 *  2004 * TECH TEST WORD PATTERN 2005 * 2006 * QUERY: 2007 *  2008 * WORD PATTERN (:0000-:FFFF,[:A5A5])=: 2009 * 2010 * SELECTION:  2011 * 2012 * :0000 TO :FFFF 2013 * DEFAULT IS :A5A5  2014 * 2015 ****************************** 2016 * 00000535 2017 QERYI0 EQU $ 0535 C255 050B 2018 COPY =:A5A5,Q SET WORD PATTERN 0536 C755 050C 2019 COPY Q,WPAT TO ITS DEFAULT 0537 4900 2020 COPY =0,Q RESET INPUT FLAG 0538 BF22 04DB 2021  JST MSGA OUTPUT QUERY 0539 1576 2022 WORD QRYMI0 MESS. ADD. 053A FF92 054D 2023  JSK IHEX GET INPUT 053B 31C3 053F 2024 JNE X,$+4 IF NON-ZERO, OK 053C A391 054E 2025 COPY HXTMP2,X GET CHAR. COUNT 053D 3143 0541 2026 JEQ X,QERYI1 IF ZERO, SINGLE CHAR 053E 4900 2027 COPY =0,Q ELSE IS ZERO 053F A74C 050C 2028 COPY X,WPAT STORE PATTERN 0540 4B01 2029 ADD =1,Q SET INPUT FLAG 0541 BF4C 050E 2030 QERYI1 JST CHARCK CHECK CHARS. 0542 9F19 04DC 2031 JMP QERY10 '/' 0543 9E85 0549 2032 JMP QERYI2  '^' 0544 9E70 0535 2033 JMP QERYI0 '_' 0545 9F49 050F 2034 JMP QERYE0 CR  0546 9E84 054B 2035 JMP QERYI3 '#' 0547 9E6D 0535 2036 JMP QERYI0 ',' 0548 9E6C 0535 2037 JMP QERYI0 ANYTHING ELSE 1PAGE 0076 MACRO (F400) SCOUT UNIVERSAL FLOPPY DISK CONTROLLER TEST PROGRAM 93720-10C1 1982/09/30 09:00:40.50 QUERIES-DEFAULT MODE (TECH TEST WORD PATTERN) 0549 51AB 0535 2038 QERYI2 JNE Q,QERYI0 CAN'T 054A 9E17 04E2 2039 JMP QERYG0 CAN 054B 51A9 0535 2040 QERYI3 JNE Q,QERYI0 CAN'T 054C 9E07 04D4 2041 JMP QERYEND CAN 2042 * 0002 2043  LPOOL 054D 1217 IHEX 054E 1233 HXTMP2 1PAGE 0077 MACRO (F400) SCOUT UNIVERSAL FLOPPY DISK CONTROLLER TEST PROGRAM 93720-10C1 1982/09/30 09:00:40.50 QUERIES-DEMAND MODE (TEST GROUP) 2045 ****************************** 4  2046 * 2047 * TEST GROUP 2048 * 2049 * Q-REG. CONTAINS THE TEST GROUP SELECTION 2050 * 2051 * SELECTION: 2052 * 2053 * :0001 - PICO-FLOPPIES 2054 * :0002 - MINI-FLOPPIES 2055 * :0003 - STANDARD-FLOPPIES 2056 * :0004 - QUAD-FLOPPIES 2057 * DEFAULT IS :0003 2058 *  2059 * IF > :0004 THEN ERROR 2060 * 'BAD0' 2061 * WILL BE DISPLAYED IN THE CDR 2062 * 2063 ******************************* 2064 * 0000054F 2065 DMMOD EQU $ 054F C7BF 058F 2066 COPY Q,TEMP1 SAVE TEST GROUP 0550 87BF 0590 2067  COPY A,TEMP2 SAVE DEVICE ADDRESS 0551 A7BF 0591 2068 COPY X,TEMP3 SAVE BOARD ID 0552 0104 2069 IN CONSL;CDR,A GET CTRL. WORD 0553 87BE 0592 2070 COPY A,TEMP4 SAVE IT TOO 0554 2900 2071 COPY =0,X RESET INPUT FLAG 0555 4C00 2072 CLSN Q,=0  DEFAULT? 0556 4903 2073 COPY =3,Q SINGLE-SIDED 8" 0557 4C01 2074 CLSN Q,=1  PICO-FLOPPIES? 0558 A2BA 0593 2075 COPY =SS5INTBL,X SINBLE-SIDED 5 1/4" 0559 4C02 2076  CLSN Q,=2 MINI-FLOPPIES? 055A A2B9 0594 2077 COPY =DS5INTBL,X DOUBLE-SIDED 5 1/4" 055B 4C03  2078 CLSN Q,=3 STANDARD-FLOPPIES? 055C A2B8 0595 2079 COPY =SS8INTBL,X SINGLE-SIDED 8" 055D 4C04 2080 CLSN Q,=4 QUAD-FLOPPIES? 1PAGE 0078 MACRO (F400) SCOUT UNIVERSAL FLOPPY DISK CONTROLLER TEST PROGRAM 93720-10C1 1982/09/30 09:00:41.75 QUERIES-DEMAND MODE (TEST GROUP) 055E A2B7 0596 2081 COPY =DS8INTBL,X DOUBLE-SIDED 8" 055F 3149 0569 2082 JEQ X,BAD-1 IF ZERO, IS BAD 0560 C7B6 0597 2083 COPY Q,TSTCDR SET CDR DISPLAY 0561 A682 0564 2084 COPY X,$+3 STORE PARAMETER ADDRESS 0562 08E0 2085 COPY =-PRMSZ,A SET TABLE SIZE 0563 BFA9 058D 2086 JST MOVE  MOVE IN TABLE 0564 0000 2087 WORD 0 FROM 0565 1330 2088 WORD PRAMS  TO 0566 0901 2089 COPY =1,A SET JUMP FLAG TO TEST GROUP 0567 87B0 0598 2090 COPY  A,TESTFLG STORE FLAG 0568 9E84 056D 2091 JMP DMMOD1 GO ON 0569 82AF 0599 2092 COPY =BAD:TG,A ERROR - INCORRECT TEST GROUP 056A 0404 2093 BAD SELP A,CONSL;CDR DISPLAY ERROR CODE 056B 0E0D  2094 HLT HALT HERE 056C 9E7E 056B 2095 JMP $-1 NO NO 1PAGE 0079 MACRO (F400) SCOUT UNIVERSAL FLOPPY DISK CONTROLLER TEST PROGRAM 93720-10C1 1982/09/30 09:00:42.50 QUERIES-DEMAND MODE (DEVICE ADD.) 2097 ***************************** 2098 * 2099 * DEVICE ADD. 5  2100 * 2101 * A-REG. CONTAINED THE DEVICE ADD. 2102 * 2103 * SELECTION: 2104 * 2105 * :0004 TO :00FC 2106 * DEFAULT IS :0030 2107 * 2108 * IF > :00FC THEN ERROR 2109 * 'BAD1'  2110 * WILL BE DISPLAYED IN THE CDR 2111 * 2112 ******************************  2113 * 0000056D 2114 DMMOD1 EQU $ 056D 83A2 0590 2115 COPY TEMP2,A GET DEVICE ADD. 056E 1148 0577 2116 JEQ A,DMMOD2 IF ZERO, THEN DEFAULT 056F 879E 058E 2117 COPY A,DEVADR SET INTO TABLE 0570 0DFC 2118 CSK A,=:FC DO RANGE CHECK 0571 0D04 2119 CSK A,=:04 DITTO 0572 9E82 0575 2120 JMP $+3 BAD 0573 0000 2121 NOP 0574 9E82 0577 2122 JMP DMMOD2 GOOD 0575 82A4 059A 2123 COPY =BAD:DA,A ERROR - INCORRECT DEVICE ADD. 0576 9E73 056A 2124 JMP BAD DISPLAY ERROR 1PAGE 0080 MACRO (F400) SCOUT UNIVERSAL FLOPPY DISK CONTROLLER TEST PROGRAM 93720-10C1 1982/09/30 09:00:43.25 QUERIES-DEMAND MODE (BOARD ID) 2126 ****************************** 2127 * 2128 * BOARD ID 2129 * 2130 * X-REG. CONTAINED THE BOARD ID 2131 * 2132 * SELECTION: 2133 *  2134 * :0001 TO :000E 2135 * DEFAULT IS :000B 2136 *  2137 * IF > :000E THEN ERROR 2138 * 'BAD2' 2139 * WILL BE DISPLAYED IN THE CDR 2140 * 2141 ******************************* 2142 * 00000577 2143 DMMOD2 EQU $ 0577 8399 0591 2144 COPY TEMP3,A GET BOARD ID 0578 1148 0581 2145 JEQ  A,DMMOD3 IF ZERO, THEN DEFAULT 0579 87A1 059B 2146 COPY A,BDID SET INTO TABLE 057A 0D0E 2147 CSK A,=:E DO RANGE CHECK 057B 0D01 2148 CSK A,=:1 DITTO 057C 9E82 057F 2149 JMP $+3 BAD 057D 0000 2150 NOP 057E 9E82 0581 2151 JMP DMMOD3 GOOD 057F 829C 059C 2152 COPY =BAD:ID,A ERROR - INCORRECT BOARD ID 0580 9E69 056A 2153 JMP BAD DISPLAY ERROR 1PAGE 0081 MACRO (F400) SCOUT UNIVERSAL FLOPPY DISK CONTROLLER TEST PROGRAM 93720-10C1 1982/09/30 09:00:44.00 QUERIES-DEMAND MODE (CONTROL WORD) 2155 ******************************  2156 * 2157 * CONTROL WORD 2158 * 2159 * CONSOLE DATA REGISTER CONTAINED THE CTRL. WORD 2160 * 2161 * SELECTION: 2162 * 2163 * :0000 TO :007F 2164 * 2165 * BIT HEX OPTION 2166 * 06  :0001 COMPRESSED ERROR REPORT 2167 * 1 :0002 HALT AFTER 1 PASS 2168 * 2 :0004 HALT ON ERROR 2169 * 3 :0008 LP 2170 * 4 :0010 ERROR TALLIES  2171 * 5 :0020 DUMP INPUT BUF. 2172 * 6 :0040 BELL ON ERROR 2173 * 0-NO, 1-YES 2174 * DEFAULT IS :0000 2175 * 2176 * IF > :007F THEN ERROR 2177 * 'BAD3' 2178 * WILL BE DISPLAYED IN THE CDR 2179 *  2180 ****************************** 2181 * 00000581 2182 DMMOD3 EQU $ 0581 8390 0592 2183 COPY TEMP4,A GET CTRL. WORD 0582 879A 059D 2184 COPY A,CNTWD PUT INTO TABLE 0583 2000 2185 COPY A,X PUT INTO X-REG. 0584 0E69 2186 SHIFT A,RO,7  DO RANGE CHECK 0585 1142 0588 2187 JEQ A,$+3 IF GOOD, JUMP 0586 8297 059E 2188 COPY =BAD:CW,A ERROR - INCORRECT CTRL. WORD 0587 9E62 056A 2189 JMP BAD DISPLAY ERROR 0588 203F 2190 TBIT LPR,X LP? 1PAGE 0082 MACRO (F400) SCOUT UNIVERSAL FLOPPY DISK CONTROLLER TEST PROGRAM 93720-10C1 1982/09/30 09:00:45.00 QUERIES-DEMAND MODE (CONTROL WORD) 0589 36C1 058B 2191 JF OV,$+2 IF NO, JUMP 058A 08FF 2192 COPY =-1,A SET LP FLAG TO LP ONLY 058B 8793 059F 2193 COPY A,LPFLG STORE LP FLAG 058C 9E95 05A2 2194 JMP TCTL10 DO IT TO IT 2195 * 0015  2196 LPOOL 058D 1294 MOVE 058E 134D DEVADR 058F 12FC TEMP1 0590 12FD TEMP2 0591 12FE TEMP3 0592 12FF TEMP4  0593 1370 SS5INTBL 0594 1390 DS5INTBL 0595 13B0 SS8INTBL 0596 13D0 DS8INTBL 0597 1304 TSTCDR 0598 1306 TESTFLG 0599 BAD0 BAD:TG 059A BAD1 BAD:DA 059B 134E BDID 059C BAD2 BAD:ID 059D 134F CNTWD 059E BAD3 BAD:CW 059F 12FA LPFLG 05A0 05A1 1PAGE 0083 MACRO (F400) SCOUT UNIVERSAL FLOPPY DISK CONTROLLER TEST PROGRAM 93720-10C1 1982/09/30 09:00:45.50 TEST CTRL. (START UP) 2198 ****************************** 2199 * 2200 * TEST CTRL. - START UP 2201 * 2202 * THIS SECTION WILL INITIALIZE THE 2203 *  DEVICE ADDRESS FOR THE I/O SUBROUTINES, 2204 * THE PASS COUNT AND ERROR TALLIES.  2205 * 2206 ****************************** 2207 * 000005A2 2208 TCTL10 EQU $ 05A2 0900 2209 COPY =0,A RESET A-REG. 05A3 87C9 05ED 2210 COPY A,PASSN INITIALIZE PASS COUNT 05A4 87C9 05EE 2211 COPY A,HARDE CLEAR ERROR TOTALS 05A5 08FD 2212 COPY =-3,A SET MOVE COUNT TO 3 05A6 BF66 058D 2213 JST MOVE CLEAR IT OUT 05A7 1300 2214 WORD HARDE FROM 05A8 1301 2215 WORD HARDE+1 TO 7  2216 * 05A9 4907 2217 COPY =DASIZ-1,Q GET TABLE SIZE 05AA A2C4 05EF 2218 COPY =DAFRST,X GET I/O TABLE ADD. 05AB E080 0000 2219 TCTL11 COPY 0(X),Y GET I/O INSTRUCTION ADD. 05AC 0803 2220  COPY =-:FD,A MASK FOR I/O INSTRUCTION 05AD 9440 0000 2221 AND 0(Y),A 'AND' OUT OLD DEVICE ADD. 05AE B75F 058E 2222 OR DEVADR,A 'OR' IN NEW DEVICE ADD. 05AF 8440 0000 2223 COPY  A,0(Y) STORE NEW I/O INSTRUCTION 05B0 2B01 2224 ADD =1,X INC. TABLE ADD. 05B1 55B9 05AB 2225 JNED Q,TCTL11 LOOP FOR MORE 1PAGE 0084 MACRO (F400) SCOUT UNIVERSAL FLOPPY DISK CONTROLLER TEST PROGRAM 93720-10C1 1982/09/30 09:00:46.75 TEST CTRL. (INITIALIZATION) 2227 ******************************  2228 * 2229 * TEST CTRL. - INITIALIZATION 2230 * 2231 *  THIS SECTION WILL COMPUTE THE 2232 * MODE REGISTER AND THE DRIVE 2233 * TIMERS NEEDED. ALSO THE CONSOLE 2234 * INTERRUPT WILL BE ENABLED.  2235 * 2236 * THE 5" DISK IS NOT SPINNING UNTIL THE DRIVE IS ACCESSED.  2237 * SINCE IT TAKES SOME TIME FOR THE DISK TO SPIN UP, ANY 2238 * COMMAND (READ & WRITE) THAT NEEDS TO SEE THE ADDRESS 2239 * MARK WILL MISS IT ON THE FIRST REVOLUTION. THEREFORE, 2240 * THE FIRST COMMAND IS IGNORED (ALONG WITH THE ERRORS). 2241 *  BY THIS TIME THE DISK IS UP TO SPEED. 2242 * 2243 * THIS ALSO APPLIES TO THE 8" DRIVES. THEY ARE ALWAYS 2244 * SPINNING BUT ARE DAISEY-CHAINED BEHIND THE 5" WHICH 2245 * BOGGS DOWN THE SIGNAL. 2246 * (MARK HAYES 8/82)  2247 * 2248 ******************************* 2249 * 000005B2 2250 TCTL20  EQU $ 05B2 C3BD 05F0 2251 COPY N,Q GET BYTES/SECTOR CODE 05B3 82BD 05F1 2252 COPY  =512,A 512 BYTES TO START 05B4 4C00 2253 CLSN Q,=0 128 BYTES? 05B5 0980 2254  COPY =128,A YES, SET NUMBER 05B6 4C01 2255 CLSN Q,=1 256 BYTES? 05B7 82BA 05F2 2256 COPY =256,A YES, SET NUMBER 05B8 87BA 05F3 2257 COPY A,NBYTES STORE ACTUAL BYTES/SECTOR 2258 * 05B9 A2BA 05F4 2259 COPY =SDTABLE,X GET SINGLE DENSITY TABLE 05BA 83BA 05F5 2260 COPY DENSITY,A GET DENSITY FLAG 05BB 1141 05BD 2261 JEQ A,$+2 IF SINGLE DENSITY, JUMP 05BC A2B9 05F6 2262 COPY =DDTABLE,X GET DOUBLE DENSITY TABLE 1PAGE 0085 MACRO (F400) SCOUT UNIVERSAL FLOPPY DISK CONTROLLER TEST PROGRAM 93720-10C1 1982/09/30 09:00:48.00 TEST CTRL. (INITIALIZATION) 05BD 4E11 2263 8  SHIFT Q,LO,2 SHIFT BYTES/SECTOR CODE 05BE 2042 2264 ADD Q,X CORRECT BYTES/SECTOR 05BF 83B7 05F7 2265 COPY DRIVE,A GET DRIVE SELECTION 05C0 0E01 2266 SHIFT A,LO,1  *2 05C1 2002 2267 ADD A,X CORRECT DRIVE 05C2 8080 0000 2268 COPY 0(X),A  GET SECTORS/TRACK 05C3 C081 0001 2269 COPY 1(X),Q GET GAP LENGTHS 05C4 1341 05C6 2270 JGE  A,$+2 IF GOOD, JUMP 05C5 9FB2 05F8 2271 JMP QERYC5+3 'INVALID SECTOR SIZE/DENSITY COMBINATION' 05C6 87B2 05F9 2272 COPY A,SC SECTORS/TRACK 05C7 C7B2 05FA 2273 COPY Q,GPL GAP LENGTH 2274 * 05C8 0908 2275 COPY =1%MR:FCRST,A MODE = NO RESET 05C9 C3B1 05FB 2276  COPY INTDIS,Q INTERRUPTS? 05CA 5141 05CC 2277 JEQ Q,$+2 NO, JUMP 05CB 000C 2278 SBIT MR:INTDS,A YES, INTDIS = 1 05CC C3AA 05F7 2279 COPY DRIVE,Q MINIFLOPPY? 05CD 5142 05D0 2280 JEQ Q,$+3 NO, JUMP 05CE 001C 2281 SBIT MR:5OR8,A 5" = 1 05CF 004C  2282 SBIT MR:MOTOR,A MOTOR = 1 05D0 C3AB 05FC 2283 COPY STEPINV,Q STEP INVERT? 05D1 5141 05D3 2284 JEQ Q,$+2 NO, JUMP 05D2 002C 2285 SBIT MR:STINV,A YES, STEPINV = 1 05D3 E2A9 05FD 2286 COPY =Y1,Y SET FIRST Y-CTRL. BLK. ADD. 05D4 8459 0019 2287 COPY A,UF:MODE(Y) MODE REGISTER 05D5 C3A8 05FE 2288 COPY SRT,Q STEP RATE TIME 05D6 5145 05DC 2289 JEQ Q,TCTL21 IF ZERO, USE MAX. VALUE 05D7 4AFF 2290 SUB =1,Q GET INTO RANGE OF 0-> :(1)F 05D8 001F 2291 TBIT MR:5OR8,A MINIFLOPPY? 05D9 36C3 05DD 2292 JF OV,TCTL22 NO, JUMP 05DA 4B01 2293 ADD =1,Q ROUND UP 05DB 51C1 05DD 2294 JNE Q,TCTL22 NO OVERFLOW ON ROUND UP 05DC 490F 2295 TCTL21 COPY =:F,Q FORCE MAX. 05DD 580F 2296 TCTL22 AND =:F,Q MASK IT 05DE 570F 2297 XOR =:F,Q FLIP BITS 05DF C45E 001E 2298 COPY Q,UF:SRT(Y) STEP RATE TIME 1PAGE 0086 MACRO (F400) SCOUT UNIVERSAL FLOPPY DISK CONTROLLER TEST PROGRAM 93720-10C1 1982/09/30  09:00:49.50 TEST CTRL. (INITIALIZATION) 05E0 090F 2299 COPY =15,A 15*16 = 240 MILLISEC 05E1 845F 001F 2300 COPY A,UF:HUT(Y) HEAD UNLOAD TIME 05E2 0919 2301 COPY =25,A 15*2 = 50 MILLISEC 05E3 8460 0020 2302 COPY A,UF:HLT(Y) HEAD LOAD TIME 05E4 8329 058E 2303 COPY DEVADR,A GET UFDC DEVICE ADD. 05E5 8452 0012 2304 COPY A,UF:DA(Y) SET ADD. 05E6 0E45 2305 SBIT CI:,S ENABLE CONSOLE INT. 05E7 0E85 2306 SBIT GI:,S ENABLE INTS. 2307 * 05E8 BF96 05FF 2308 JST TESTCK WHICH WAY? 05E9 0000 2309 NOP TES9 T GROUP 05EA 9E98 0603 2310 JMP TCTL30 DIALOG 05EB 9F94 0600 2311 JMP TECHT TECH TEST 05EC 9E96 0603 2312 JMP TCTL30 DEFAULT 2313 * 0016 2314 LPOOL 05ED 12F8 PASSN 05EE 1300 HARDE 05EF 13F0 DAFRST 05F0 134B N 05F1 0200 05F2 0100 05F3 130D NBYTES 05F4 1318 SDTABLE 05F5 134A DENSITY 05F6 1324 DDTABLE 05F7 133D DRIVE 05F8 0423 05F9 130E SC 05FA 130F GPL 05FB 133C INTDIS 05FC 133E STEPINV 05FD 179B Y1 05FE 133F SRT 05FF 1099 TESTCK 0600 0941 TECHT 1PAGE 0087 MACRO (F400) SCOUT UNIVERSAL FLOPPY DISK CONTROLLER TEST PROGRAM 93720-10C1 1982/09/30 09:00:50.25 TEST CTRL. (INITIALIZATION) 0601 0602 1PAGE 0088 MACRO (F400) SCOUT UNIVERSAL FLOPPY DISK CONTROLLER TEST PROGRAM 93720-10C1 1982/09/30 09:00:50.25 TEST CTRL. (TEST EXECUTION)  2316 ****************************** 2317 * 2318 * TEST CTRL. - TEST EXECUTION AND CTRL. 2319 * 2320 * THIS SECTION WILL EXECUTE THE REQUESTED 2321  * DIAGNOSTIC TESTS. ALSO THE PASS NUMBER, 2322 * UNIT NUMBER AND ERROR TALLIES (IF SO 2323 * DESIRED) WILL BE PRINTED IN THIS 2324 * SECTION.  2325 * 2326 ****************************** 2327 * 00000603 2328 TCTL30 EQU $ 0603 8369 05ED 2329 COPY PASSN,A GET PASS NUMBER 0604 BAC4 0649 2330 CSK A,=10000 DO RANGE CHECK 0605 DF67 05ED 2331 IMS PASSN INC. NUMBER 0606 0000 2332 NOP 0607 BFBF 0647 2333 JST MSGA PRINT PASS MESS. 0608 1778 2334 WORD PASSMG  'PASS ' 0609 8363 05ED 2335 COPY PASSN,A GET PASS NUMBER 060A FFBF 064A 2336 JSK ODEC  PRINT PASS NUMBER 060B 8262 05EE 2337 COPY =HARDE,A GET ERROR TALLY ADD. 060C 87BE 064B 2338  COPY A,ERRTADD STORE IT 060D 82BE 064C 2339 COPY =UNITS,A GET UNIT TABLE ADD. 060E 87BE 064D 2340 COPY A,UNTADD SET STARTING ADD. 0000060F 2341 TCTL31 EQU $ 060F BFB7 0647 2342  JST MSGA PRINT UNIT MESS. 0610 1797 2343 WORD UNTMG 'UNIT ' 0611 A3BB 064D 2344 COPY UNTADD,X GET UNIT TABLE ADD. 0612 8080 0000 2345 COPY 0(X),A GET UNIT 0613 0AFF 2346 SUB =1,A GENERATE CORRECT NUMBER 0614 87B3 0648 2347 COPY A,UNIT STORE CURRENT UNIT 0615 FFB4 064A 2348 JSK ODEC DISPLAY IT 0616 82B7 064E 2349 COPY =TESTS,A GET TEST TABLE ADD. 0617 87B7 064F 2350 COPY A,TSTADD SET STARTING ADD. 00000618 2351 TCTL32 EQU $ 1PAGE 0089 MACRO (F400) SCOUT UNIVERSAL FLOPPY DISK CONTROLLER TEST PROGRAM 93720-10C1 1982/09/30 09:00:52.00 TEST CTRL. (TEST EXECUTION) 0618 A3B6 064F 2352 COPY TSTADD,X GET TABLE ADD. 0619 A080 0000 2353 :  COPY 0(X),X GET TEST ADD. 061A 33C3 061E 2354 JLT X,TCTL33 IF END OF TESTS, JUMP OUT 061B FC80 0000 2355 JSK 0(X) ELSE DO TEST 061C DFB2 064F 2356 IMS TSTADD INC. TEST TABLE ADD. 061D 9E7A 0618 2357 JMP TCTL32 LOOP FOR MORE 061E DFAE 064D 2358 TCTL33 IMS UNTADD INC. UNIT TABLE ADD. 061F DFAB 064B 2359 IMS ERRTADD INC. ERROR TABLE ADD. 0620 A3AC 064D 2360 COPY UNTADD,X GET UNIT ADD. 0621 8080 0000 2361 COPY 0(X),A GET UNIT NUMBER 0622 11AC 060F 2362 JNE A,TCTL31 IF NOT ZERO, DO NEXT UNIT 2363 * 0623 83AC 0650 2364  COPY CNTWD,A GET THE CTRL. WORD 0624 004F 2365 TBIT ETL,A ERROR TALLIES? 0625 36D6 063C 2366 JF OV,TCTL35 IF NO, DON'T PRINT 0626 BFA0 0647 2367 JST MSGA PRINT PASS NUMBER 0627 1778 2368 WORD PASSMG 'PASS ' 0628 8344 05ED 2369 COPY PASSN,A GET PASS NUMBER 0629 FFA0 064A 2370 JSK ODEC PRINT IT 062A BF9C 0647 2371 JST MSGA  PRINT ERROR TALLY MESS. 062B 177F 2372 WORD ETALLM MESS. ADD. 062C A29F 064C 2373 COPY =UNITS,X GET UNIT ADD. TABLE 062D E240 05EE 2374 COPY =HARDE,Y GET ERROR TOTALS 062E FFA2 0651  2375 TCTL34 JSK CRLF DO CRLF 062F FFA2 0652 2376 JSK SPACE3 SPACE OVER 0630 FFA1 0652 2377 JSK SPACE3 SPACE OVER 0631 8080 0000 2378 COPY 0(X),A GET UNIT NUMBER 0632 1149 063C 2379 JEQ A,TCTL35 IF END, EXIT 0633 0AFF 2380 SUB =1,A GENERATE CORRECT NUM. 0634 FF95 064A 2381 JSK ODEC PRINT IT 0635 FF9C 0652 2382 JSK SPACE3  SPACE OVER 0636 FF9B 0652 2383 JSK SPACE3 SPACE OVER 0637 8040 0000 2384 COPY 0(Y),A  GET HARD ERRS. 0638 FF91 064A 2385 JSK ODEC PRINT IT 0639 2B01 2386 ADD =1,X INC. UNIT TABLE ADD. 063A 6B01 2387 ADD =1,Y INC. ERROR TABLE ADD. 1PAGE 0090 MACRO (F400) SCOUT UNIVERSAL FLOPPY DISK CONTROLLER TEST PROGRAM 93720-10C1 1982/09/30 09:00:53.50 TEST CTRL. (TEST EXECUTION) 063B 9E72 062E 2388 JMP TCTL34 LOOP FOR MORE 2389 * 063C 0900 2390 TCTL35 COPY =FINI,A SET CDR DISPLAY FOR ALL DONE 063D 0404 2391 SELP A,CONSL;CDR DISPLAY IT 063E 8391 0650 2392 COPY CNTWD,A GET THE CTRL. WORD 063F 001F 2393 TBIT RUN,A RUN CONTINUOUSLY? 0640 3641 0642 2394 JT OV,$+2 IF NOT, STOP HERE 0641 9E41 0603 2395 JMP TCTL30  ELSE DO AGAIN 0642 8390 0653 2396 COPY MDEFLG,A GET MODE FLAG 0643 11C1 0645 2397 JNE  A,$+2 IF DEMAND MODE, JUMP 0644 9F8F 0654 2398 JMP QERY10 ELSE GO TO BEGINNING 0645 0E0D ;  2399 HLT WAIT HERE 0646 9E7E 0645 2400 JMP $-1 CAN'T GO ANYWHERE  2401 * 000E 2402 LPOOL 0647 10BD MSGA 0648 1313 UNIT 0649 2710 064A 1235 ODEC 064B 130A ERRTADD 064C 1340 UNITS 064D 130B UNTADD 064E 1330 TESTS 064F 130C TSTADD 0650 134F CNTWD 0651 128F CRLF 0652 10A5 SPACE3 0653 12F9 MDEFLG 0654 022A QERY10 1PAGE 0091 MACRO (F400) SCOUT UNIVERSAL FLOPPY DISK CONTROLLER TEST PROGRAM 93720-10C1 1982/09/30 09:00:54.25 TESTS (TEST A) 2404 ****************************** 2405 *  2406 * TEST A - THE TEST WILL INITIALIZE THE UFDC 2407 * AND PERFORM SEVERAL BASIC TESTS OF 2408 * THE CONTROLLER INTERNAL OPERATION. 2409 * 2410 * CALLING SEQUENCE: 2411 * JSK TESTA 2412 * 2413 ****************************** 2414 * 00000655 2415 TESTA EQU $ 0655 0900 2416 COPY =0,A 0656 87AB 0682 2417 COPY A,FIRST FLAG NO NEEDED IN TEST A 0657 0900 2418 COPY =:00,A  GET CDR TEST DISPLAY 0658 B7AA 0683 2418+ OR TSTCDR,A OR IN TEST GROUP 0659 0404 2418+ SELP A,CONSL;CDR SEND TO CDR 065A 82B4 068F 2418+ COPY =' A',A GET TEST LETTER 065B 87A8 0684 2418+ COPY A,TNUM: SET CURRENT TEST 065C BF6A 0647 2418+ JST MSGA OUTPUT TITLE 065D 1772 2418+ WORD TSTNUM 'TEST ' 2418+ * 065E BFA6 0685 2419 JST SPECIFY  INITIALIZE 065F BFA6 0686 2420 JST ERROR DISPLAY ANY ERRORS 0660 0900 2421 COPY  =UF:INV,A INVALID FUNCTION CODE 0661 8453 0013 2422 COPY A,UF:FC(Y) STORE FUNCTION CODE 0662 0980  2423 COPY =:80,A EXPECTED STATUS BYTE 0 0663 8462 0022 2424 COPY A,UF:EX0(Y) STORE BYTE 0664 FFA2 0687 2425 JSK UFDC:EX DO IT 0665 BFA2 0688 2426 JST STATUS CHECK STATUS 0666 BF9F 0686 2427 JST ERROR DISPLAY ANY ERROR 0667 0900 2428 COPY =0,A  SET FIRST HEAD NUMBER 0668 87A0 0689 2428+ COPY A,HEAD CURRENT HEAD=0 0669 839F 0689 2428+ AHEAD COPY HEAD,A GET CURRENT HEAD 066A C39F 068A 2428+ COPY HEADS,Q AND REQUIRED HEADS 066B 4C02  2428+ CLSN Q,=2 BOTH HEADS? 1PAGE 0092 MACRO (F400) SCOUT UNIVERSAL FLOPPY DISK CONTROLLER TEST PROGRAM 93720-10C1 1982/09/30 09:00:56.00 TESTS (TEST A) 066C 9E83 0670 2428+ JMP $+4 YES, DO THE CODE! 066D 400A 2428+ CSN A,Q NO , BUT IS HEAD=HEADS? 066E 9E81 0670 2428+ JMP $+2  YES, DO THE CODE! 066F 9E8C 067C 2428+ JMP HEADA NO MATCH, SKIP THE CODE 0670 BF9A 068B 2429  JST RECAL: RECALIBRATE 0671 BF94 0686 2430 JST ERROR DISPLAY ANY ERRORS <  2431 * 0672 8399 068C 2432 COPY TRACKS,A GET STARTING TRACK 0673 8799 068D 2433 TSTA00 COPY  A,TRM SET TRACK NUMBER 0674 BF99 068E 2434 JST SEEK: DO SEEK OPERATION 0675 BF90 0686 2435  JST ERROR DISPLAY ANY ERRORS 0676 8396 068D 2436 COPY TRM,A GET CURRENT TRACK 0677 0B01 2437 ADD =1,A INC. TRACK NUMBER 0678 BB97 0690 2438 CSK A,TRACKS+1 DO RANGE CHECK 0679 9E79 0673 2439 JMP TSTA00 STILL MORE TO GO 067A 9E81 067C 2440 JMP $+2  DONE 067B 9E77 0673 2441 JMP TSTA00 STILL MORE TO GO 067C 838C 0689 2442 HEADA COPY HEAD,A GET CURRENT HEAD 067D 0C01 2442+ CLSN A,=1 IF 1 THEN DONE! 067E 9E82 0681 2442+  JMP $+3 YES, EXIT 067F DF89 0689 2442+ IMS HEAD NO, BUMP HEAD 0680 9E68 0669 2442+ JMP AHEAD TRY ANOTHER HEAD 0681 2309 2443 RSK ALL DONE  2444 * 000F 2445 LPOOL 0682 1316 FIRST 0683 1304 TSTCDR 0684 1776 TNUM: 0685 0B83 SPECIFY 0686 0EFA ERROR 0687 0CE7 UFDC:EX 0688 0E42 STATUS 0689 1311 HEAD 068A 1349 HEADS 068B 0BC1 RECAL: 068C 1345 TRACKS 1PAGE 0093 MACRO (F400) SCOUT UNIVERSAL FLOPPY DISK CONTROLLER TEST PROGRAM 93720-10C1 1982/09/30 09:00:57.00 TESTS (TEST A) 068D 1310 TRM 068E 0BDC SEEK: 068F 2041 0690 1346 1PAGE 0094 MACRO (F400) SCOUT UNIVERSAL FLOPPY DISK CONTROLLER TEST PROGRAM 93720-10C1 1982/09/30 09:00:57.00 TESTS (TEST B) 2447 ***************************** 2448 * 2449 * TEST B - THIS TEST WILL CHECK THE SEEK OPERATION 2450 * FOR THE SPECIFIED TRACKS ON OVERLAPPED 2451 * UNITS IF MORE THAN ONE 'DIFFERENT' UNIT 2452 *  IS SELECTED. 2453 * 2454 * IF ONE OR THE SAME UNIT IS SELECTED  2455 * THIS TEST WILL BE BYPASSED. 2456 * 2457 * CALLING SEQUENCE:  2458 * JSK TESTB 2459 * 2460 **************************** 2461 * 00000691 2462 TESTB EQU $ 0691 0900 2463 COPY =0,A 0692 876F 0682 2464  COPY A,FIRST FLAG NOT NEEDED IN TEST B 0693 0910 2465 COPY =:10,A GET CDR TEST DISPLAY 0694 B76E 0683 2465+ OR TSTCDR,A OR IN TEST GROUP 0695 0404 2465+ SELP A,CONSL;CDR SEND TO CDR 0696 82A6 06BD 2465+ COPY =' B',A GET TEST LETTER 0697 876C 0684 2465+ COPY A,TNUM: SET CURRENT TEST 0698 BF2E 0647 2465+ JST MSGA OUTPUT TITLE 0699 1772 2465+ WORD TSTNUM 'TEST ' 2465+ * 069A BF9E 06B9 2466 JST UNITFND FIND ANOTHER UNIT TO TEST 069B 2309 2467 RSK COULDN'T SO EXIT 069C BF68 0685 2468 JST SPECIFY =  INITIALIZE 069D BF68 0686 2469 JST ERROR DISPLAY ANY ERRORS 069E 0900 2470 COPY  =0,A SET FIRST HEAD NUMBER 069F 8769 0689 2470+ COPY A,HEAD CURRENT HEAD=0 06A0 8368 0689 2470+ BHEAD COPY HEAD,A GET CURRENT HEAD 06A1 C368 068A 2470+ COPY HEADS,Q AND REQUIRED HEADS 06A2 4C02 2470+ CLSN Q,=2 BOTH HEADS? 06A3 9E83 06A7 2470+ JMP $+4 YES, DO THE CODE! 1PAGE 0095 MACRO (F400) SCOUT UNIVERSAL FLOPPY DISK CONTROLLER TEST PROGRAM 93720-10C1 1982/09/30 09:00:58.25 TESTS (TEST B) 06A4 400A 2470+ CSN A,Q NO , BUT IS HEAD=HEADS? 06A5 9E81 06A7 2470+ JMP $+2 YES, DO THE CODE! 06A6 9E8A 06B1 2470+ JMP HEADB NO MATCH, SKIP THE CODE 06A7 FF92 06BA 2471 JSK RECAL2 DO RECALIBRATE 06A8 8363 068C 2472 COPY TRACKS,A GET STARTING TRACK 06A9 8763 068D 2473 TSTB00 COPY A,TRM SET IT 06AA FF90 06BB 2474 JSK SEEK2 DO SEEKS 06AB 8361 068D 2475 COPY TRM,A GET CURRENT TRACK 06AC 0B01 2476 ADD =1,A  INC. TRACK NUMBER 06AD BB62 0690 2477 CSK A,TRACKS+1 DO RANGE CHECK 06AE 9E7A 06A9 2478 JMP  TSTB00 STILL MORE TO GO 06AF 9E81 06B1 2479 JMP $+2 DONE 06B0 9E78 06A9 2480 JMP TSTB00 STILL MORE TO GO 06B1 8357 0689 2481 HEADB COPY HEAD,A GET CURRENT HEAD 06B2 0C01 2481+ CLSN A,=1 IF 1 THEN DONE! 06B3 9E82 06B6 2481+ JMP $+3 YES, EXIT 06B4 DF54 0689 2481+ IMS HEAD NO, BUMP HEAD 06B5 9E6A 06A0 2481+ JMP BHEAD TRY ANOTHER HEAD 06B6 8385 06BC 2482 COPY UNITA,A GET FIRST UNIT 06B7 8710 0648 2483 COPY A,UNIT  IS CURRENT UNIT 06B8 2309 2484 RSK EXIT 2485 * 0006 2486  LPOOL 06B9 0B1D UNITFND 06BA 0CAA RECAL2 06BB 0CA6 SEEK2 06BC 1314 UNITA 06BD 2042 06BE 1PAGE 0096 MACRO (F400) SCOUT UNIVERSAL FLOPPY DISK CONTROLLER TEST PROGRAM 93720-10C1 1982/09/30 09:00:59.25 TESTS (TEST C) 2488 ****************************** 2489 * 2490 * TEST C - THIS TEST WILL CHECK BOTH THE SEEK  2491 * AND READ ID OPERATIONS FOR THE 2492 * SPECIFIED TRACKS.  2493 * 2494 * CALLING SEQUENCE: 2495 * JSK TESTC 2496 *  2497 ****************************** 000006BF 2498 TESTC EQU $ 06BF 0920 2499 COPY =:20,A GET CDR TEST DISPLAY 06C0 B742 0683 2499+ OR TSTCDR,A OR IN TEST GROUP 06C1 0404  2499+ SELP A,CONSL;CDR SEND TO CDR 06C2 82BA 06FD 2499+ COPY =' C',A GET TEST LETTER 06C3 8740 0684 2499+ COPY A,TNUM: SET CURRENT TEST 06C4 BF02 0647 2499+ JST MSGA OUT> PUT TITLE 06C5 1772 2499+ WORD TSTNUM 'TEST ' 2499+ * 06C6 BF3E 0685 2500  JST SPECIFY INITIALIZE 06C7 BF3E 0686 2501 JST ERROR DISPLAY ANY ERRORS 000006C8 2502 TESTC2 EQU $ START OVER POINT 06C8 0900 2503 COPY =0,A SET FIRST HEAD NUMBER 06C9 873F 0689 2503+ COPY A,HEAD CURRENT HEAD=0 06CA 833E 0689 2503+ CHEAD COPY HEAD,A GET CURRENT HEAD 06CB C33E 068A 2503+ COPY HEADS,Q AND REQUIRED HEADS 06CC 4C02 2503+ CLSN  Q,=2 BOTH HEADS? 06CD 9E83 06D1 2503+ JMP $+4 YES, DO THE CODE! 06CE 400A 2503+  CSN A,Q NO , BUT IS HEAD=HEADS? 06CF 9E81 06D1 2503+ JMP $+2 YES, DO THE CODE! 06D0 9EA5 06F6 2503+ JMP HEADC NO MATCH, SKIP THE CODE 06D1 BF39 068B 2504 JST RECAL:  RECALIBRATE 06D2 BF33 0686 2505 JST ERROR DISPLAY ANY ERRORS 2506 * 06D3 8338 068C 2507 COPY TRACKS,A GET STARTING TRACK 06D4 8738 068D 2508 TSTC00 COPY A,TRM SET FIRST TRACK 1PAGE 0097 MACRO (F400) SCOUT UNIVERSAL FLOPPY DISK CONTROLLER TEST PROGRAM 93720-10C1 1982/09/30 09:01:00.50 TESTS (TEST C) 06D5 BF38 068E 2509 JST SEEK: DO SEEK OPERATION 06D6 BF2F 0686 2510 JST ERROR DISPLAY ANY ERRORS 2511 * 06D7 0904 2512 COPY =UF:RDID,A READ ID FUNCTION CODE 06D8 8453 0013 2513 COPY A,UF:FC(Y) STORE FUNCTION CODE 06D9 83A2 06FC 2514 COPY DENSITY,A  GET DENSITY FLAG 06DA 845C 001C 2515 COPY A,UF:MF(Y) STORE DENSITY 06DB 8041 0001 2516 COPY  UF:HD(Y),A GET HEAD ADDRESS 06DC 0E11 2517 SHIFT A,LO,2 SHIFT INTO PLACE 06DD B45A 001A 2518  OR UF:US(Y),A 'OR' IN UNIT SELECT 06DE 8462 0022 2519 COPY A,UF:EX0(Y) EXPECTED STATUS BYTE 0 06DF 0900 2520 COPY =0,A RESET A-REG. 06E0 8463 0023 2521 COPY A,UF:EX1(Y) EXPECTED STATUS BYTE 1 06E1 8464 0024 2522 COPY A,UF:EX2(Y) EXPECTED STATUS BYTE 2 06E2 2900 2523  COPY =0,X SET STATUS CHECK FLAG 06E3 FF23 0687 2524 JSK UFDC:EX DO IT 06E4 BF23 0688 2525 JST STATUS CHECK STATUS 06E5 BF20 0686 2526 JST ERROR DISPLAY ANY ERRORS 06E6 831B 0682 2527 COPY FIRST,A GET 1ST-TIME FLAG 06E7 1143 06EB 2528 JEQ A,$+4 JUMP IF NOT 1ST TIME 06E8 0900 2529 COPY =0,A OTHERWISE TURN OFF FLAG 06E9 8718 0682 2530 COPY A,FIRST 06EA 9E5D 06C8 2531 JMP TESTC2 START OVER 06EB 804D 000D 2532 COPY UF:C2(Y),A GET RET. CYLINDER 06EC 9B20 068D 2533 XOR TRM,A SAME AS CURRENT? 06ED 1142 06F0 2534  JEQ A,$+3 IF SO, JUMP 06EE 0924 2535 COPY =ERR036,A 'CYLINDER NUMBER MISMATCH' 06EF BF? 16 0686 2536 JST ERROR DISPLAY ERROR 2537 * 06F0 831C 068D 2538 COPY TRM,A GET CURRENT TRACK 06F1 0B01 2539 ADD =1,A INC. TRACK NUM. 06F2 BB1D 0690 2540  CSK A,TRACKS+1 DO RANGE CHECK 06F3 9E60 06D4 2541 JMP TSTC00 STILL MORE TO GO 06F4 9E81 06F6 2542 JMP $+2 DONE 06F5 9E5E 06D4 2543 JMP TSTC00 STILL MORE TO GO 06F6 8312 0689 2544 HEADC COPY HEAD,A GET CURRENT HEAD 1PAGE 0098 MACRO (F400) SCOUT UNIVERSAL FLOPPY DISK CONTROLLER TEST PROGRAM 93720-10C1 1982/09/30 09:01:02.25 TESTS (TEST C) 06F7 0C01 2544+ CLSN A,=1 IF 1 THEN DONE! 06F8 9E82 06FB 2544+ JMP $+3 YES, EXIT 06F9 DF0F 0689 2544+ IMS HEAD  NO, BUMP HEAD 06FA 9E4F 06CA 2544+ JMP CHEAD TRY ANOTHER HEAD 06FB 2309 2545 RSK  ALL DONE 2546 * 0003 2547 LPOOL 06FC 134A DENSITY 06FD 2043 06FE 1PAGE 0099 MACRO (F400) SCOUT UNIVERSAL FLOPPY DISK CONTROLLER TEST PROGRAM 93720-10C1 1982/09/30 09:01:02.50 TESTS (TEST D)  2549 ****************************** 2550 * 2551 * TEST D - THIS TEST WILL CHECK BOTH THE SEEK AND 2552 * READ ID OPERATIONS FOR THE SPECIFIED 2553 *  TRACKS ON OVERLAPPED UNITS IF MORE THAN 2554 * ONE 'DIFFERENT' UNIT IS SELECTED.  2555 * 2556 * IF ONE OR THE SAME UNIT IS SELECTED 2557 * THIS TEST WILL BE BYPASSED. 2558 * 2559 * CALLING SEQUENCE: 2560 * JSK TESTD 2561 * 2562 ****************************** 2563 * 000006FF 2564  TESTD EQU $ 06FF 0930 2565 COPY =:30,A GET CDR TEST DISPLAY 0700 B702 0683 2565+  OR TSTCDR,A OR IN TEST GROUP 0701 0404 2565+ SELP A,CONSL;CDR SEND TO CDR 0702 82D2 0755 2565+ COPY =' D',A GET TEST LETTER 0703 87C7 074B 2565+ COPY A,TNUM: SET CURRENT TEST 0704 BFC7 074C 2565+ JST MSGA OUTPUT TITLE 0705 1772 2565+ WORD TSTNUM 'TEST '  2565+ * 0706 BF32 06B9 2566 JST UNITFND FIND ANOTHER UNIT TO TEST 0707 2309 2567  RSK EXIT IF NONE FOUND 0708 BFC4 074D 2568 JST SPECIFY INITIALIZE 0709 BFC4 074E 2569 JST ERROR DISPLAY ANY ERRORS 0000070A 2570 TESTD2 EQU $ START OVER POINT 070A 0900 2571 COPY =0,A SET FIRST HEAD NUMBER 070B 87C3 074F 2571+ COPY A,HEAD CURRENT HEAD=0 070C 83C2 074F 2571+ DHEAD COPY HEAD,A GET CURRENT HEAD 070D C3C2 0750 2571+  COPY HEADS,Q AND REQUIRED HEADS 070E 4C02 2571+ CLSN Q,=2 BOTH HEADS? 070F 9E83 0713 2@ 571+ JMP $+4 YES, DO THE CODE! 0710 400A 2571+ CSN A,Q NO , BUT IS HEAD=HEADS? 1PAGE 0100 MACRO (F400) SCOUT UNIVERSAL FLOPPY DISK CONTROLLER TEST PROGRAM 93720-10C1 1982/09/30 09:01:04.00 TESTS (TEST D) 0711 9E81 0713 2571+ JMP $+2 YES, DO THE CODE! 0712 9EB2 0745 2571+ JMP HEADD NO MATCH, SKIP THE CODE 0713 FF26 06BA 2572 JSK RECAL2 DO RECALIBRATE 0714 83BC 0751 2573  COPY TRACKS,A GET STARTING TRACK 2574 * 0715 87BC 0752 2575 TSTD00 COPY A,TRM  SET TRACK NUMBER 0716 FF24 06BB 2576 JSK SEEK2 DO SEEKS 2577 * 0717 0904 2578 COPY =UF:RDID,A READ ID FUNCTION CODE 0718 8453 0013 2579 COPY A,UF:FC(Y) STORE FUNCTION CODE 0719 8362 06FC 2580 COPY DENSITY,A GET DENSITY FLAG 071A 845C 001C 2581 COPY A,UF:MF(Y)  STORE DENSITY 071B 8041 0001 2582 COPY UF:HD(Y),A GET HEAD ADDRESS 071C 0E11 2583 SHIFT  A,LO,2 SHIFT INTO PLACE 071D B45A 001A 2584 OR UF:US(Y),A 'OR' IN UNIT SELECT 071E 8462 0022 2585 COPY A,UF:EX0(Y) EXPECTED STATUS BYTE 0 071F 0900 2586 COPY =0,A RESET A-REG. 0720 8463 0023 2587 COPY A,UF:EX1(Y) EXPECTED STATUS BYTE 1 0721 8464 0024 2588 COPY A,UF:EX2(Y) EXPECTED STATUS BYTE 2 0722 2900 2589 COPY =0,X SET STATUS CHECK FLAG 0723 FFB2 0756 2590  JSK UFDC:EX DO IT 0724 BFAE 0753 2591 JST STATUS CHECK STATUS 0725 BFA8 074E 2592  JST ERROR DISPLAY ANY ERRORS 0726 83AD 0754 2593 COPY FIRST,A GET 1ST-TIME FLAG 0727 1143 072B 2594 JEQ A,$+4 JUMP IF NOT THE 1ST TIME 0728 0900 2595 COPY =0,A  OTHERWISE RESET FLAG 0729 87AA 0754 2596 COPY A,FIRST 072A 9E5F 070A 2597 JMP TESTD2 START OVER 072B 804D 000D 2598 COPY UF:C2(Y),A GET RET. CYL. 072C 9BA5 0752 2599 XOR TRM,A  SAME AS CURRENT? 072D 1142 0730 2600 JEQ A,$+3 IF SO, JUMP 072E 0924 2601 COPY  =ERR036,A 'CYLINDER NUMBER MISMATCH' 072F BF9E 074E 2602 JST ERROR DISPLAY ERROR  2603 * 0730 830B 06BC 2604 COPY UNITA,A GET FIRST UNIT 0731 87A5 0757 2605 COPY A,UNIT  SET UNIT 1PAGE 0101 MACRO (F400) SCOUT UNIVERSAL FLOPPY DISK CONTROLLER TEST PROGRAM 93720-10C1 1982/09/30 09:01:05.50 TESTS (TEST D) 0732 845A 001A 2606 COPY A,UF:US(Y) STORE UNIT 0733 8041 0001 2607 COPY UF:HD(Y),A GET HEAD ADDRESS 0734 0E11 2608 SHIFT A,LO,2 SHIFT INTO PLACE 0735 B45A 001A 2609  OR UF:US(Y),A 'OR' IN UNIT SELECT 0736 8462 0022 2610 COPY A,UF:EX0(Y) EXPECTED STATUS BYTE 0 0737 FF9E 0756 2611 JSK UFDC:EX DO IT 0738 BF9A 0753 2612 JST STATUS CHECK STATUS A  0739 BF94 074E 2613 JST ERROR DISPLAY ANY ERRORS 073A 804D 000D 2614 COPY UF:C2(Y),A  GET RET. CYL. 073B 9B96 0752 2615 XOR TRM,A SAME AS CURRENT? 073C 1142 073F 2616 JEQ A,$+3 IF SO, JUMP 073D 0924 2617 COPY =ERR036,A 'CYLINDER NUMBER MISMATCH' 073E BF8F 074E 2618 JST ERROR DISPLAY ERROR 2619 * 073F 8392 0752 2620 COPY TRM,A  GET CURRENT TRACK 0740 0B01 2621 ADD =1,A INC. TRACK NUM. 0741 BB96 0758 2622 CSK  A,TRACKS+1 DO RANGE CHECK 0742 9E52 0715 2623 JMP TSTD00 STILL MORE TO GO 0743 9E81 0745 2624  JMP $+2 ALL DONE 0744 9E50 0715 2625 JMP TSTD00 STILL MORE TO GO 0745 8389 074F  2626 HEADD COPY HEAD,A GET CURRENT HEAD 0746 0C01 2626+ CLSN A,=1 IF 1 THEN DONE! 0747 9E82 074A 2626+ JMP $+3 YES, EXIT 0748 DF86 074F 2626+ IMS HEAD NO, BUMP HEAD 0749 9E42 070C 2626+ JMP DHEAD TRY ANOTHER HEAD 074A 2309 2627 RSK  EXIT 2628 * 000E 2629 LPOOL 074B 1776 TNUM: 074C 10BD MSGA 074D 0B83 SPECIFY 074E 0EFA ERROR 074F 1311 HEAD 0750 1349 HEADS 0751 1345 TRACKS 0752 1310 TRM 1PAGE 0102 MACRO (F400) SCOUT UNIVERSAL FLOPPY DISK CONTROLLER TEST PROGRAM 93720-10C1 1982/09/30 09:01:06.75 TESTS (TEST D) 0753 0E42 STATUS 0754 1316 FIRST 0755 2044 0756 0CE7 UFDC:EX 0757 1313 UNIT 0758 1346 1PAGE 0103 MACRO (F400) SCOUT UNIVERSAL FLOPPY DISK CONTROLLER TEST PROGRAM 93720-10C1 1982/09/30 09:01:06.75 TESTS (TEST E) 2631 ****************************** 2632 * 2633 * TEST E - THIS TEST WILL CHECK THE SCAN 2634 * EQUAL OPERATION FOR THE SPECIFIED 2635 * TRACKS. 2636 * 2637 * CALLING SEQUENCE:  2638 * JSK TESTE 2639 * 2640 ******************************  2641 * 00000759 2642 TESTE EQU $ 0759 0940 2643 COPY =:40,A GET CDR TEST DISPLAY 075A B7C7 07A2 2643+ OR TSTCDR,A OR IN TEST GROUP 075B 0404 2643+ SELP A,CONSL;CDR SEND TO CDR 075C 82CB 07A8 2643+ COPY =' E',A GET TEST LETTER 075D 876D 074B 2643+ COPY A,TNUM: SET CURRENT TEST 075E BF6D 074C 2643+ JST MSGA OUTPUT TITLE 075F 1772 2643+  WORD TSTNUM 'TEST ' 2643+ * 0760 BF6C 074D 2644 JST SPECIFY INITIALIZE 0761 BF6C 074E 2645 JST ERROR DISPLAY ANY ERRORS 00000762 2646 TESTE2 EQU $ START OVER POINT 0762 0900 2647 COPY =0,A SET FIRST HEAD NUMBER 0763 876B 074F 2647+ COPY  A,HEAD CURRENT HEAD=0 0764 836A 074F 2647+ EHEAD COPY HEAD,A GET CURRENT HEAD 0765 C36A 0750 2647+ B  COPY HEADS,Q AND REQUIRED HEADS 0766 4C02 2647+ CLSN Q,=2 BOTH HEADS? 0767 9E83 076B 2647+ JMP $+4 YES, DO THE CODE! 0768 400A 2647+ CSN A,Q NO , BUT IS HEAD=HEADS? 0769 9E81 076B 2647+ JMP $+2 YES, DO THE CODE! 076A 9EB1 079C 2647+ JMP HEADE NO MATCH, SKIP THE CODE 076B BFB7 07A3 2648 JST RECAL: RECALIBRATE 076C BF61 074E 2649  JST ERROR DISPLAY ANY ERRORS 2650 * 076D 8363 0751 2651 COPY TRACKS,A  GET STARTING TRACK 1PAGE 0104 MACRO (F400) SCOUT UNIVERSAL FLOPPY DISK CONTROLLER TEST PROGRAM 93720-10C1 1982/09/30 09:01:08.00 TESTS (TEST E) 076E 8763 0752 2652 TSTE01 COPY A,TRM SET FIRST TRACK 076F BFB4 07A4 2653  JST SEEK: DO SEEK OPERATION 0770 BF5D 074E 2654 JST ERROR DISPLAY ANY ERRORS  2655 * 0771 83B3 07A5 2656 COPY SECTORS,A GET STARTING SECTOR 0772 87B3 07A6 2657 TSTE02 COPY  A,SECTOR SET AS CURRENT SEC. 0773 FFB3 07A7 2658 JSK BUFUSER SET UP BUFFER 0774 835B 0750 2659  COPY HEADS,A GET HEAD NUMBER 0775 0C02 2660 CLSN A,=2 BOTH HEADS? 0776 9E8A 0781 2661 JMP TSTE03 YES, SCAN BOTH SIDES, MT=1 0777 0900 2662 COPY =0,A NO, SCAN ONE SIDE, MT=0 0778 FFB0 07A9 2663 JSK SCAN: SCAN EQUAL - 1 SECTOR 0779 BF59 0753 2664 JST STATUS CHECK STATUS 077A BF53 074E 2665 JST ERROR DISPLAY ANY ERRORS 077B 8358 0754 2666 COPY FIRST,A GET 1ST-TIME FLAG 077C 1143 0780 2667 JEQ A,$+4 JUMP IF NOT THE 1ST TIME 077D 0900 2668 COPY =0,A OTHERWISE RESET FLAG 077E 8755 0754 2669 COPY A,FIRST 077F 9E62 0762 2670 JMP TESTE2 START OVER 0780 9E90 0791 2671 JMP TSTE04 CONTINUE 2672 * 0781 834D 074F 2673 TSTE03 COPY HEAD,A GET CURRENT HEAD 0782 1141 0784 2674  JEQ A,$+2 IF ZERO, DO IT 0783 9E8D 0791 2675 JMP TSTE04 ELSE DON'T 0784 83A1 07A6 2676 COPY SECTOR,A GET CURRENT SECTOR 0785 BBA4 07AA 2677 CSK A,SC EQUAL TO SECTORS/TRACKS? 0786 9E8A 0791 2678 JMP TSTE04 NO, SKIP 0787 0000 2679 NOP 0788 0901 2680 COPY =1,A SCAN BOTH SIDES, MT=1 0789 FF9F 07A9 2681 JSK SCAN: SCAN EQUAL - 2 SECTORS 078A BF48 0753 2682 JST STATUS CHECK STATUS 078B BF42 074E 2683 JST ERROR  DISPLAY ANY ERRORS 078C 8347 0754 2684 COPY FIRST,A GET 1ST-TIME FLAG 078D 1143 0791 2685 JEQ A,$+4 JUMP IF NOT THE 1ST TIME 078E 0900 2686 COPY =0,A OTHERWISE RESET FLAG 078F 8744 0754 2687 COPY A,FIRST 1PAGE 0105 MACRO (F400) SCOUT UNIVERSAL FLOPPY DISK CONTROLLER TEST PROGRAM 93720-C 10C1 1982/09/30 09:01:09.50 TESTS (TEST E) 0790 9E51 0762 2688 JMP TESTE2 START OVER  2689 * 0791 8394 07A6 2690 TSTE04 COPY SECTOR,A GET CURRENT SECTOR 0792 0B01 2691 ADD =1,A INC. SECTOR NUM. 0793 BB97 07AB 2692 CSK A,SECTORS+1 EQUAL TO MAX SECTOR? 0794 9E5D 0772 2693  JMP TSTE02 NO, TRY SOME MORE 0795 0000 2694 NOP YES, DONE 0796 833B 0752 2695 COPY TRM,A GET CURRENT TRACK 0797 0B01 2696 ADD =1,A INC. TRACK NUM. 0798 BB3F 0758 2697 CSK A,TRACKS+1 DO RANGE CHECK 0799 9E54 076E 2698 JMP TSTE01 STILL MORE TO GO 079A 9E81 079C 2699 JMP $+2 DONE 079B 9E52 076E 2700 JMP TSTE01  STILL MORE TO GO 079C 8332 074F 2701 HEADE COPY HEAD,A GET CURRENT HEAD 079D 0C01 2701+ CLSN A,=1 IF 1 THEN DONE! 079E 9E82 07A1 2701+ JMP $+3 YES, EXIT 079F DF2F 074F 2701+  IMS HEAD NO, BUMP HEAD 07A0 9E43 0764 2701+ JMP EHEAD TRY ANOTHER HEAD 07A1 2309  2702 RSK EXIT 2703 * 000B 2704 LPOOL 07A2 1304 TSTCDR 07A3 0BC1 RECAL: 07A4 0BDC SEEK: 07A5 1347 SECTORS 07A6 1312 SECTOR 07A7 0B3B BUFUSER 07A8 2045 07A9 0BFC SCAN: 07AA 130E SC 07AB 1348 07AC 1PAGE 0106 MACRO (F400) SCOUT UNIVERSAL FLOPPY DISK CONTROLLER TEST PROGRAM 93720-10C1 1982/09/30 09:01:10.50 TESTS (TEST F) 2706 ****************************** 2707 * 2708 * TEST F - THIS TEST WILL FORMAT THE 2709 * SPECIFIED SECTORS/TRACKS, IN THE 2710 * SPECIFIED DENSITY AND DATA PATTERN. 2711 * 2712 * CALLING SEQUENCE:  2713 * JSK TESTF 2714 * 2715 ******************************  2716 * 000007AD 2717 TESTF EQU $ 07AD 0900 2718 COPY =0,A 07AE 8725 0754 2719  COPY A,FIRST FLAG NOT NEEDED IN TEST F 07AF 0950 2720 COPY =:50,A GET CDR TEST DISPLAY  07B0 B771 07A2 2720+ OR TSTCDR,A OR IN TEST GROUP 07B1 0404 2720+ SELP A,CONSL;CDR SEND TO CDR 07B2 82A4 07D7 2720+ COPY =' F',A GET TEST LETTER 07B3 8717 074B 2720+ COPY A,TNUM: SET CURRENT TEST 07B4 BF17 074C 2720+ JST MSGA OUTPUT TITLE 07B5 1772 2720+ WORD TSTNUM 'TEST ' 2720+ * 07B6 BF16 074D 2721 JST SPECIFY INITIALIZE 07B7 BF16 074E 2722 JST ERROR DISPLAY ANY ERRORS 07B8 0900 2723 COPY =0,A SET FIRST HEAD NUMBER 07B9 8715 074F 2723+ COPY A,HEAD CURRENT HEAD=0 07BA 8314 074F 2723+ FHEAD COPY HEAD,A GET CURRENT HEAD 07BB C314 0750 2723+ COPY HEADS,Q AND REQUIRED HEADS 07BC 4C02 2723+ D  CLSN Q,=2 BOTH HEADS? 07BD 9E83 07C1 2723+ JMP $+4 YES, DO THE CODE! 07BE 400A  2723+ CSN A,Q NO , BUT IS HEAD=HEADS? 07BF 9E81 07C1 2723+ JMP $+2 YES, DO THE CODE! 07C0 9E8F 07D0 2723+ JMP HEADF NO MATCH, SKIP THE CODE 07C1 BF61 07A3 2724 JST  RECAL: RECALIBRATE 07C2 BF0B 074E 2725 JST ERROR DISPLAY ANY ERRORS 2726 * 1PAGE 0107 MACRO (F400) SCOUT UNIVERSAL FLOPPY DISK CONTROLLER TEST PROGRAM 93720-10C1 1982/09/30 09:01:11.75 TESTS (TEST F) 07C3 830D 0751 2727 COPY TRACKS,A GET STARTING TRACK 07C4 870D 0752 2728 TSTF00 COPY A,TRM  SET TRACK NUM. 07C5 BF5E 07A4 2729 JST SEEK: DO SEEK OPERATION 07C6 BF07 074E 2730 JST ERROR DISPLAY ANY ERRORS 07C7 FF90 07D8 2731 JSK FORMAT FORMAT TRACK 07C8 BF0A 0753 2732 JST STATUS CHECK STATUS 07C9 BF04 074E 2733 JST ERROR DISPLAY ANY ERRORS  2734 * 07CA 8307 0752 2735 COPY TRM,A GET CURRENT TRACK 07CB 0B01 2736 ADD  =1,A INC. TRACK NUM. 07CC BB8C 07D9 2737 CSK A,TRACKS+1 DO RANGE CHECK 07CD 9E76 07C4 2738  JMP TSTF00 STILL MORE TO GO 07CE 9E81 07D0 2739 JMP $+2 DONE 07CF 9E74 07C4 2740 JMP TSTF00 STILL MORE TO GO 07D0 8385 07D6 2741 HEADF COPY HEAD,A GET CURRENT HEAD 07D1 0C01 2741+ CLSN A,=1 IF 1 THEN DONE! 07D2 9E82 07D5 2741+ JMP $+3 YES, EXIT 07D3 DF82 07D6 2741+ IMS HEAD NO, BUMP HEAD 07D4 9E65 07BA 2741+ JMP FHEAD TRY ANOTHER HEAD 07D5 2309 2742 RSK EXIT 2743 * 0004 2744  LPOOL 07D6 1311 HEAD 07D7 2046 07D8 0C2B FORMAT 07D9 1346 1PAGE 0108 MACRO (F400) SCOUT UNIVERSAL FLOPPY DISK CONTROLLER TEST PROGRAM 93720-10C1 1982/09/30 09:01:13.00 TESTS (TEST G) 2746 ******************************  2747 * 2748 * TEST G - THIS TEST WILL CHECK THE WRITE DATA AND 2749 *  READ DATA OPERATIONS. A ONE-BYTE PATTERN 2750 * SELECTED BY THE USER IS WRITTEN TO THE  2751 * SPECIFIED SECTORS/TRACKS. DATA IS THEN 2752 * READ FROM THE SECTORS/TRACKS AND COMPARED 2753 * TO THE USER-SPECIFIED PATTER FOR 2754 * CORRECTNESS. 2755 * 2756 * CALLING SEQUENCE: 2757 * JSK TESTG  2758 * 2759 ****************************** 2760 * 000007DA 2761 TESTG EQU $ 07DA 0960 2762 COPY =:60,A GET CDR TEST DISPLAY 07DB B746 07A2 2762+ OR TSTCDR,A OR IN TEST GROUP 07DC 0404 2762+ SELP A,CONSL;CDR SEND TO CDR 07DD 82CD 082B 2762+ CE OPY =' G',A GET TEST LETTER 07DE 87BF 081E 2762+ COPY A,TNUM: SET CURRENT TEST 07DF BFBF 081F 2762+ JST MSGA OUTPUT TITLE 07E0 1772 2762+ WORD TSTNUM 'TEST '  2762+ * 07E1 FF45 07A7 2763 JSK BUFUSER INITIALIZE BUFFER TO USER PATTERN 07E2 BFBD 0820 2764  JST SPECIFY INITIALIZE 07E3 BFBD 0821 2765 JST ERROR DISPLAY ANY ERRORS 000007E4 2766 TESTG2 EQU $ START OVER POINT 07E4 0900 2767 COPY =0,A SET FIRST HEAD NUMBER 07E5 8770 07D6 2767+ COPY A,HEAD CURRENT HEAD=0 07E6 836F 07D6 2767+ GHEAD COPY HEAD,A  GET CURRENT HEAD 07E7 C3BA 0822 2767+ COPY HEADS,Q AND REQUIRED HEADS 07E8 4C02 2767+ CLSN Q,=2 BOTH HEADS? 07E9 9E83 07ED 2767+ JMP $+4 YES, DO THE CODE! 07EA 400A 2767+  CSN A,Q NO , BUT IS HEAD=HEADS? 07EB 9E81 07ED 2767+ JMP $+2 YES, DO THE CODE! 1PAGE 0109 MACRO (F400) SCOUT UNIVERSAL FLOPPY DISK CONTROLLER TEST PROGRAM 93720-10C1 1982/09/30 09:01:14.25 TESTS (TEST G) 07EC 9EAB 0818 2767+ JMP HEADG NO MATCH, SKIP THE CODE 07ED BF35 07A3 2768 JST RECAL: RECALIBRATE 07EE BFB2 0821 2769 JST ERROR DISPLAY ANY ERRORS 2770 * 07EF 83B3 0823 2771 COPY TRACKS,A GET STARTING TRACK 07F0 87B3 0824 2772 TSTG00 COPY A,TRM SET CURRENT TRACK NUM. 07F1 BF32 07A4 2773 JST SEEK: DO SEEK OPERATION 07F2 BFAE 0821 2774 JST  ERROR DISPLAY ANY ERRORS 2775 * 07F3 8331 07A5 2776 COPY SECTORS,A GET STARTING SECTOR 07F4 8731 07A6 2777 TSTG01 COPY A,SECTOR SET CURRENT SECTOR NUM. 07F5 C3AF 0825 2778 COPY NBYTES,Q GET SECTOR SIZE IN BYTES 07F6 FFAF 0826 2779 JSK WRITES WRITE SECTOR 07F7 BFAF 0827 2780 JST STATUS CHECK STATUS 07F8 BFA8 0821 2781 JST ERROR DISPLAY ANY ERRORS 07F9 83AE 0828 2782 COPY FIRST,A GET 1ST-TIME FLAG 07FA 1143 07FE 2783 JEQ A,$+4 JUMP IF NOT THE 1ST TIME 07FB 0900 2784 COPY =0,A OTHERWISE RESET FLAG 07FC 87AB 0828 2785 COPY A,FIRST 07FD 9E66 07E4 2786 JMP TESTG2 START OVER 07FE 8327 07A6 2787 COPY SECTOR,A GET CURRENT SECTOR 07FF 0B01 2788 ADD =1,A INC. SECTOR NUM. 0800 BB2A 07AB 2789  CSK A,SECTORS+1 DO RANGE CHECK 0801 9E72 07F4 2790 JMP TSTG01 NO, TRY AGAIN 0802 9E81 0804 2791 JMP $+2 DONE 0803 9E70 07F4 2792 JMP TSTG01 NO, TRY AGAIN 2793 * 0804 8320 07A5 2794 COPY SECTORS,A GET STARTING SECTOR 0805 8720 07A6 2795 TSTG02 COPY A,SECTOR SET CURRENT SECTOR NUM. 0806 FFA2 0829 2796 JSK READS READ SECTOR 0807 BF9F 0827 2797 F  JST STATUS CHECK STATUS 0808 BF98 0821 2798 JST ERROR DISPLAY ANY ERRORS 0809 0900  2799 COPY =0,A SET FOR 1 SECTOR COMPARE 080A BF9F 082A 2800 JST BUFCOMP DO BUFFER COMPARE 080B BF95 0821 2801 JST ERROR DISPLAY ANY ERRORS 080C 8319 07A6 2802 COPY SECTOR,A GET CURRENT SECTOR 1PAGE 0110 MACRO (F400) SCOUT UNIVERSAL FLOPPY DISK CONTROLLER TEST PROGRAM 93720-10C1 1982/09/30 09:01:16.00 TESTS (TEST G) 080D 0B01 2803 ADD =1,A INC. SECTOR NUM. 080E BB1C 07AB 2804 CSK A,SECTORS+1 DO RANGE CHECK 080F 9E75 0805 2805 JMP TSTG02 NO, TRY AGAIN 0810 9E81 0812 2806 JMP $+2 DONE 0811 9E73 0805 2807 JMP TSTG02 NO, TRY AGAIN  2808 * 0812 8391 0824 2809 COPY TRM,A GET CURRENT TRACK 0813 0B01 2810 ADD  =1,A INC. TRACK NUM. 0814 BB44 07D9 2811 CSK A,TRACKS+1 DO RANGE CHECK 0815 9E5A 07F0 2812  JMP TSTG00 STILL MORE TO GO 0816 9E81 0818 2813 JMP $+2 DONE 0817 9E58 07F0 2814 JMP TSTG00 STILL MORE TO GO 0818 833D 07D6 2815 HEADG COPY HEAD,A GET CURRENT HEAD 0819 0C01 2815+ CLSN A,=1 IF 1 THEN DONE! 081A 9E82 081D 2815+ JMP $+3 YES, EXIT 081B DF3A 07D6 2815+ IMS HEAD NO, BUMP HEAD 081C 9E49 07E6 2815+ JMP GHEAD TRY ANOTHER HEAD 081D 2309 2816 RSK EXIT 2817 * 0011 2818  LPOOL 081E 1776 TNUM: 081F 10BD MSGA 0820 0B83 SPECIFY 0821 0EFA ERROR 0822 1349 HEADS 0823 1345 TRACKS 0824 1310 TRM 0825 130D NBYTES 0826 0C5C WRITES 0827 0E42 STATUS 0828 1316 FIRST 0829 0C7D READS 082A 0B66 BUFCOMP 082B 2047 082C 082D 1PAGE 0111 MACRO (F400) SCOUT UNIVERSAL FLOPPY DISK CONTROLLER TEST PROGRAM 93720-10C1 1982/09/30 09:01:16.75 TESTS (TEST G) 082E 1PAGE 0112 MACRO (F400) SCOUT UNIVERSAL FLOPPY DISK CONTROLLER TEST PROGRAM 93720-10C1 1982/09/30 09:01:16.75  TESTS (TEST H) 2820 ****************************** 2821 * 2822 * TEST H - THIS TEST WILL CHECK THE WRITE DATA AND 2823 * READ DATA OPERATIONS FOR PARTIAL SECTOR  2824 * I/O. A 66 BYTE SECTOR IS WRITTEN TO 2825 * THE SPECIFIED SECTORS/TRACKS USING THE 2826 * INCREMENTING DATA PATTERN :00-:41. EACH 2827 * SECTOR IS THEN READ TO VERIFY THE DATA 2828 * PATTERN AND THE TRAILING NULLS. 2829 *  2830 * CALLING SEQUENCE: 2831 * JSK TESTH 2832 * 2833 ****************************** 2834 * 0000082F 2835 TESTH EQU $ 082F 0970 2836  COPY =:70,A GET CDR TEST DISPLAY 0830 B7C3 0874 2836+ OR TSTCDR,A OR IN TEST GROUP 0831 0G 404 2836+ SELP A,CONSL;CDR SEND TO CDR 0832 82C8 087B 2836+ COPY =' H',A GET TEST LETTER 0833 876A 081E 2836+ COPY A,TNUM: SET CURRENT TEST 0834 BF6A 081F 2836+ JST MSGA  OUTPUT TITLE 0835 1772 2836+ WORD TSTNUM 'TEST ' 2836+ * 0836 0942 2837  COPY =66,A SET RECORD LENGTH OF 66 BYTES 0837 FFBD 0875 2838 JSK BUFINCR SET UP BUFF.  0838 BF67 0820 2839 JST SPECIFY INITIALIZE 0839 BF67 0821 2840 JST ERROR DISPLAY ANY ERRORS 0000083A 2841 TESTH2 EQU $ START OVER POINT 083A 0900 2842 COPY =0,A SET FIRST HEAD NUMBER 083B 871A 07D6 2842+ COPY A,HEAD CURRENT HEAD=0 083C 8319 07D6 2842+ HHEAD COPY HEAD,A GET CURRENT HEAD 083D C364 0822 2842+ COPY HEADS,Q AND REQUIRED HEADS 083E 4C02 2842+ CLSN Q,=2 BOTH HEADS? 083F 9E83 0843 2842+ JMP $+4 YES, DO THE CODE! 0840 400A 2842+ CSN A,Q NO , BUT IS HEAD=HEADS? 1PAGE 0113 MACRO (F400) SCOUT UNIVERSAL FLOPPY DISK CONTROLLER TEST PROGRAM 93720-10C1 1982/09/30 09:01:18.00 TESTS (TEST H) 0841 9E81 0843 2842+ JMP  $+2 YES, DO THE CODE! 0842 9EAB 086E 2842+ JMP HEADH NO MATCH, SKIP THE CODE 0843 BFB2 0876  2843 JST RECAL: RECALIBRATE 0844 BF5C 0821 2844 JST ERROR DISPLAY ANY ERRORS  2845 * 0845 835D 0823 2846 COPY TRACKS,A GET STARTING TRACK 0846 875D 0824 2847 TSTH00 COPY A,TRM SET CURRENT TRACK NUMBER 0847 BFAF 0877 2848 JST SEEK: DO SEEK OPERATION 0848 BF58 0821 2849 JST ERROR DISPLAY ANY ERRORS 2850 * 0849 83AE 0878 2851 COPY SECTORS,A GET STARTING SECTOR 084A 87AE 0879 2852 TSTH01 COPY A,SECTOR SET CURRENT SECTOR NUM. 084B 4942 2853 COPY =66,Q SET RECORD LENGTH 084C FF59 0826 2854 JSK WRITES DO WRITE SECTOR OPERATION 084D BF59 0827 2855 JST STATUS CHECK STATUS 084E BF52 0821 2856 JST ERROR DISPLAY ANY ERRORS 084F 8358 0828 2857 COPY FIRST,A GET 1ST-TIME FLAG 0850 1143 0854 2858  JEQ A,$+4 JUMP IF NOT THE 1ST TIME 0851 0900 2859 COPY =0,A OTHERWISE RESET FLAG 0852 8755 0828 2860 COPY A,FIRST 0853 9E66 083A 2861 JMP TESTH2 START OVER 0854 83A4 0879 2862 COPY SECTOR,A GET CURRENT SECTOR 0855 0B01 2863 ADD =1,A INC. SECTOR NUM. 0856 BBA5 087C 2864 CSK A,SECTORS+1 DO RANGE CHECK 0857 9E72 084A 2865 JMP TSTH01  NO, TRY AGAIN 0858 9E81 085A 2866 JMP $+2 DONE 0859 9E70 084A 2867 JMP TSTH01  NO, TRY AGAIN 2868 * 085A 839D 0878 2869 COPY SECTORS,A GET STARTING SECTOR 085B 87H 9D 0879 2870 TSTH02 COPY A,SECTOR SET CURRENT SECTOR NUM. 085C FF4C 0829 2871 JSK READS DO READ SECTOR OPERATION 085D BF49 0827 2872 JST STATUS CHECK STATUS 085E BF42 0821 2873 JST  ERROR DISPLAY ANY ERRORS 085F 0900 2874 COPY =0,A SET FOR 1 SECTOR COMPARE 0860 BF49 082A 2875 JST BUFCOMP DO BUFFER COMPARE 0861 BF3F 0821 2876 JST ERROR DISPLAY ANY ERRORS 1PAGE 0114 MACRO (F400) SCOUT UNIVERSAL FLOPPY DISK CONTROLLER TEST PROGRAM 93720-10C1 1982/09/30 09:01:19.75 TESTS (TEST H) 0862 8396 0879 2877 COPY SECTOR,A GET CURRENT SECTOR 0863 0B01 2878 ADD =1,A INC. SECTOR NUM. 0864 BB97 087C 2879 CSK A,SECTORS+1 DO RANGE CHECK 0865 9E75 085B 2880  JMP TSTH02 NO, TRY AGAIN 0866 9E81 0868 2881 JMP $+2 DONE 0867 9E73 085B 2882  JMP TSTH02 NO, TRY AGAIN 2883 * 0868 833B 0824 2884 COPY TRM,A GET CURRENT TRACK 0869 0B01 2885 ADD =1,A INC. TRACK NUM. 086A BB92 087D 2886 CSK A,TRACKS+1 DO RANGE CHECK 086B 9E5A 0846 2887 JMP TSTH00 STILL MORE TO GO 086C 9E81 086E 2888  JMP $+2 DONE 086D 9E58 0846 2889 JMP TSTH00 STILL MORE TO GO 086E 838B 087A 2890 HEADH COPY HEAD,A GET CURRENT HEAD 086F 0C01 2890+ CLSN A,=1 IF 1 THEN DONE! 0870 9E82 0873 2890+ JMP $+3 YES, EXIT 0871 DF88 087A 2890+ IMS HEAD NO, BUMP HEAD 0872 9E49 083C 2890+ JMP HHEAD TRY ANOTHER HEAD 0873 2309 2891 RSK EXIT  2892 * 000B 2893 LPOOL 0874 1304 TSTCDR 0875 0B47 BUFINCR 0876 0BC1 RECAL: 0877 0BDC SEEK: 0878 1347 SECTORS 0879 1312 SECTOR 087A 1311 HEAD 087B 2048 087C 1348 087D 1346 087E IF 1 THEN DONE! 0870 9E82 0873 2890+ JMP $+3 YES, EXIT 0871 DF88 087A 2890+ IMS HEAD NO, BUMP HEAD 0872 9E49 083C 2890+ JMP HHEAD TRY ANOTHER HEAD 0873 2309 2891 RSK EXIT  2892 * 000B 2893 LPOOL 0874 1304 TSTCDR 0875 0B47 BUFINCR 0876 0BC1 RECAL: 0877 0BDC S COPY =0,A SET FIRST HEAD NUMBER 087C 876D 086A 2899+ COPY A,HEAD CURRENT HEAD=0 087D 836C 086A 2899+ IHEAD COPY HEAD,A GET CURRENT HEAD 087E C312 0811 2899+ COPY HEADS,Q AND REQUIRED HEADS 087F 4C02 2899+ CLSN Q,=2 BOTH HEADS? 0880 9E83 0884 2899+ JMP $+4  YES, DO THE CODE! ERRORS 0000087B 2898 TESTI2 EQU $ START OVER POINT 087B 0900 2899IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJ IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIK IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIL IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII