;STEP CODE KEY COMMENT ;========================================================= ; PRIME 0000 FC04 CNTRL-2 SELECT DISK. #1 0001 F800 A AND IM CLEAR A REG. 0002 8D00 LA (ADDR = 01XX) M TO 256 0003 1400 A TO M(+1) CLEAR 256-511 0004 A223 B0TL BR. AD8 ON 0005 1400 A TO M(+1) CLEAR 0-255 0006 B2D5 B0FL BR. AD8 OFF 0007 C803 A OR IM 03 TO A REG. 0008 8DE8 LA (ADDR = 01XX) M TO 488 0009 1000 A TO M(N) 03 TO 488 000A 8DFF LA (ADDR = 01XX) M TO 511 000B 1000 A TO M(N) 2ND 03 TO 511 ; FMT. 000C A74E B1TH BR. CARRY ON ; NO FMT. 000D 89DE UB (IC = 01XX) BR. TO BEGINNING 000E FB00 ST1 AND IM CLEAR CARRY 000F 8A30 UB (IC = 10XX) BR. TO 400 MSEC. DELAY 0010 A742 B1TH BR. CARRY ON 0011 8800 UB (IC = 00XX) BR. TO PRIME 0012 898F UB (IC = 01XX) BR. TO 1 SEC. DELAY ; WRITE FORMAT CONT. 0013 E901 K ADD IM K+1 0014 DD13 BR K <> 0 BR. <> 819.2 MSEC. 0015 EC26 CNTRL-1 PRESET CRC 0016 883B UB (IC = 00XX) ; READ ROUTINE CONT. 0017 F900 K AND IM CLEAR K REG. 0018 E901 K ADD IM K+1 0019 95B8 BR K <> MH BR. <> 563.2 MSEC. 001A F900 K AND IM CLEAR K REG. 001B 887A UB (IC = 00XX) ; ZERO HEAD 001C FFFF 001D FFFF 001E FFFF 001F FC23 CNTRL-2 START 40 MSEC. 0020 A240 B0TL BR. 40 MSEC. ON 0021 B7D5 B1FH BR. = TRACK 00 0022 EC10 CNTRL-1 SET DIRECTION 0023 EC50 CNTRL-1 STEP -> TRACK 00 0024 881F UB (IC = 00XX) 0025 A747 B1TH BR. CARRY ON 0026 8926 UB (IC = 01XX) BR. READ/WRITE 0027 89CB UB (IC = 01XX) 0028 A718 B1TH BR. SECTOR MARK ON 0029 B7E9 B1FH BR. SECTOR MARK OFF 002A 8858 UB (IC = 00XX) 002B 8A20 UB (IC = 10XX) 002C FFFF 002D FFFF 002E FFFF 002F FFFF 0030 B7E0 B1FH BR. SECTOR MARK OFF 0031 A584 BKTH BR. TO WRITE FORMAT 0032 8858 UB (IC = 00XX) BR. TO READ FORMAT ; FORMAT WRITE 0033 B7E3 B1FH BR. SECTOR MARK OFF 0034 8DD4 LA (ADDR = 01XX) WRITE FORMAT 0035 EC26 CNTRL-1 WRITE GATE ON 0036 EC26 CNTRL-1 PRESET CRC 0037 F900 K AND IM CLEAR K REG. 0038 E901 K ADD IM K+1 0039 DD38 BR K <> 0 BR. <> 819.2 MSEC. 003A 8813 UB (IC = 00XX) 003B A22B B0TL BR. AD8 ON 003C B2DC B0FL BR. AD8 OFF 003D E901 K ADD IM K+1 003E B5BD BKFH BR. <> 103.4 MSEC. 003F F900 K AND IM CLEAR K REG. 0040 EC24 CNTRL-1 STOP WRITE ; SECTORS COUNTED DURING FORMAT WRITE 0041 0000 NOOP(N) 0042 0000 NOOP(N) 0043 8DEA LA (ADDR = 01XX) SECTOR LOCATION 0044 2000 M TO A(N) SECTOR LOC. TO A 0045 D809 A XOR IM 0046 800D BR A = ML BR. = SECTOR 9 0047 2000 M TO A(N) SECTOR TO A 0048 E801 A ADD IM SECTOR +1 0049 1000 A TO M(N) NEXT SECTOR TO M 004A 8833 UB (IC = 00XX) BR. TO WRITE NEXT SECTOR ; TRACKS COUNTED DURING FORMAT WRITE 004B 0000 NOOP(N) 004C 0000 NOOP(N) 004D 1800 A TO M(-1) SECTOR 0 TO M 004E 2000 M TO A(N) TRACK LOC. TO A 004F E801 A ADD IM TRACK +1 0050 A426 BATH BR. = TRACK 32 0051 1000 A TO M(N) NEXT TRACK TO M 0052 EC44 CNTRL-1 STEP -> TRACK 34 0053 FC23 CNTRL-2 START 40 MSEC. 0054 A244 B0TL BR. 40 MSEC. ON 0055 89CB UB (IC = 01XX) BR. TO SECTOR 0 NEXT TRACK 0056 9031 BR A <> ML BR. TRACK <> 35 0057 89CC UB (IC = 01XX) BR. TO READ SECTOR 0 ; READ HEADER BYTES AND STORE IN MEMORY 0058 8D20 LA (ADDR = 01XX) TRACK BYTE LOCATION 0059 F900 K AND IM CLEAR K REG. 005A E901 K ADD IM K+1 005B 95CA BR K <> MH 005C EC15 CNTRL-1 READ GATE ON 005D EC35 CNTRL-1 PRESET CRC 005E A21E B0TL BR. WRDY = 1 005F 1400 A TO M(+1) TRACK BYTE TO M 0060 B2E0 B0FL BR. WRDY = 0 0061 1400 A TO M(+1) SECTOR BYTE TO M 0062 EC35 CNTRL-1 PRESET CRC ; COMPARE HEADER BYTES WITH REQUESTED ADDRESS 0063 8D20 LA (ADDR = 01XX) TRACK BYTE 0064 2100 M TO K(N) TRACK BYTE TO K 0065 8DE9 LA (ADDR = 01XX) TRACK ADDRESS 0066 5D00 K XOR M(+1)RTB XOR REQUESTED TRACK WITH TRACK READ 0067 DDA3 BR K <> 0 TRACK ERROR 0068 2100 M TO K(N) SECTOR ADDRESS TO K 0069 8D21 LA (ADDR = 01XX) SECTOR BYTE 006A 5D00 K XOR M(+1)RTB XOR REQUESTED SECTOR WITH SECTOR READ 006B DDA8 BR K <> 0 SECTOR ERROR ; 006C 8D31 LA (ADDR = 01XX) STATUS LOCATION 006D C980 K OR IM CRC ERROR BIT 006E 4900 K OR M(-1) CRC ERROR TO M 006F F900 K AND IM CLEAR K REG. 0070 A745 B1TH BR. CARRY ON 0071 8D10 LA (ADDR = 01XX) 1ST ADDRESS BYTE 0072 2100 M TO K(N) 1ST BYTE TO K 0073 B5B5 BKFH BR. IF READ 0074 897B UB (IC = 01XX) BR. TO WRITE ; READ ROUTINE INCLUDING FORMAT 0075 F900 K AND IM CLEAR K REG. 0076 8C00 LA (ADDR = 00XX) DATA BUFFER 0077 E901 K ADD IM K+1 0078 95B7 BR K <> MH BR. <> 563.2 MSEC. 0079 8817 UB (IC = 00XX) 007A EC25 CNTRL-1 PRESET CRC 007B A21B B0TL BR. WRDY = 1 007C 1400 A TO M(+1) DATA TO MEMORY 007D 8880 UB (IC = 00XX) BR. TO CHECK AD8 007E C904 K OR IM 007F 88C4 UB (IC = 00XX) BR. SEND CRC ERROR 0080 A225 B0TL BR. AD8 ON 0081 B2E1 B0FL BR. WRDY = 0 0082 1400 A TO M(+1) DATA TO MEMORY 0083 A225 B0TL BR. AD8 ON 0084 8878 UB (IC = 00XX) BR. TO WAIT WRDY 0085 A215 B0TL BR. WRDY = 1 (1ST CRC) 0086 1400 A TO M(+1) CRC TO M 0087 B2E7 B0FL BR. WRDY = 0 (2ND CRC) 0088 EC10 CNTRL-1 STOP READ ; CHECK CRC 0089 2401 M TO A(+1) 1ST CRC TO A 008A DC2B BR A <> 0 BR. IF CRC ERROR 008B 2001 M TO A(N) 2ND CRC TO A 008C DC2B BR A <> 0 BR. IF CRC ERROR 008D A74F B1TH BR. CARRY ON ; SECTORS COUNTED FORMAT READ 008E 8959 UB (IC = 01XX) 008F 8DEA LA (ADDR = 01XX) SECTOR LOCATION 0090 2000 M TO A(N) SECTOR TO A 0091 D809 A XOR IM 0092 8007 BR A = ML BR. = SECTOR 9 0093 2000 M TO A(N) SECTOR TO A 0094 E801 A ADD IM SECTOR +1 0095 1000 A TO M(N) NEXT SECTOR TO M 0096 8830 UB (IC = 00XX) BR. TO READ NEXT SECTOR ; TRACKS COUNTED FORMAT READ 0097 1800 A TO M(-1) SECTOR 0 TO M 0098 2000 M TO A(N) TRACK LOC. TO A 0099 E8FF A ADD IM TRACK -1 009A 1000 A TO M(N) NEXT TRACK TO M 009B D8FF A XOR IM 009C DC9F BR A <> 0 BR. <> TRACK 0 009D FB00 ST1 AND IM CLEAR CARRY 009E 8800 UB (IC = 00XX) BR. TO PRIME 009F EC54 CNTRL-1 STEP HEAD -> TRACK 0 00A0 FC23 CNTRL-2 START 40 MSEC. 00A1 A241 B0TL BR. 40 MSEC. ON 00A2 89CC U8 (IC = 01XX) BR. TO SECTOR 0 NEXT TRACK ; ERROR ROUTINE 00A3 EC04 CNTRL-1 STOP READ 00A4 8D31 LA (ADDR = 01XX) STATUS LOCATION 00A5 2000 M TO A(N) STATUS TO A 00A6 C808 A OR IM TRACK ERROR BIT 00A7 1000 A TO M(N) TRACK ERROR TO M 00A8 EC04 CNTRL-1 STOP READ 00A9 F900 K AND IM CLEAR K REG. 00AA 8D30 LA (ADDR = 01XX) ERROR COUNT 00AB 2000 M TO A(N) ERROR COUNT TO A 00AC E801 A ADD IM A+1 00AD 1400 A TO M(+1) ERROR COUNT TO M 00AE 0000 NOOP(N) 00AF 0000 NOOP(N) 00B0 B7B2 B1FH BR. CARRY OFF 00B1 89A3 U8 (IC = 01XX) 00B2 8424 BR A = MH BR. 32 ERRORS 00B3 8828 UB (IC = 00XX) BR. REREAD SECTOR 00B4 2000 M TO A(N) STATUS TO A 00B5 F900 K AND IM CLEAR K REG. 00B6 B478 BAFH BR. FORMAT BYTE ERROR 00B7 887E UB (IC = 00XX) 00B8 A08B BATL BR. TRACK ERROR 00B9 C902 K OR IM SECTOR ERROR BIT 00BA 88C4 UB (IC = 00XX) SECTOR ERROR TO 2200 00BB A419 BATH BR. IF HEAD MOVED 00BC C810 A OR IM 00BD 1000 A TO M(N) HEAD MOVED STATUS TO M 00BE 8D10 LA (ADDR = 01XX) 1ST ADDRESS BYTE 00BF 2000 M TO A(N) 1ST ADDRESS BYTE TO A 00C0 C820 A OR IM 00C1 8911 UB (IC = 01XX) BR. TO ZERO HEAD ; REINITIALIZE 00C2 0000 NOOP(N) 00C3 FB00 ST1 AND IM CLEAR CARRY 00C4 8D30 LA (ADDR = 01XX) ERROR LOCATION 00C5 F800 A AND IM CLEAR A REG. 00C6 F90F K AND IM MASK OUT HIGH ORDER 00C7 1400 A TO M(+1) ERROR COUNT 00C8 E910 K ADD IM 00C9 9597 BR K <> MH 00CA 8DE9 LA (ADDR = 01XX) TRACK LOCATION 00CB 1400 A TO M(+1) CLEAR TRACK 00CC F90F K AND IM MASK OUT HIGH ORDER 00CD FC00 CNTRL-2 CLEAR SELECT 00CE 8D32 LA (ADDR = 01XX) ADDRESS, ERROR OR REINT TO 2200 00CF 1100 K TO M(N) 00D0 A612 B0TH BR. NOT REINITIALIZE 00D1 89D8 UB (IC = 01XX) 00D2 B672 B0FH WAIT KBD 00D3 FC13 CNTRL-2 STROBE TO 2200 00D4 89DE UB (IC = 01XX) ; 3 ADDRESS BYTES FROM 2200 00D5 B6D5 B0FH LOOK END STROBE 00D6 A618 B0TH BR. NOT REINITIALIZE 00D7 88C2 UB (IC = 00XX) BR. TO REINITIALIZE 00D8 0400 NOOP(+1) MEMORY +1 00D9 1100 K TO M(N) ADDRESS BYTE TO M 00DA E801 A ADD IM A+1 00DB B67B B0FH WAIT KBD 00DC FC13 CNTRL-2 STROBE TO 2200 00DD A03F BATL BR. = 3RD BYTE 00DE 89EE UB (IC = 01XX) LOOK NEXT BYTE 00DF A24F B0TL BR. 40 MSEC. ON 00E0 0000 NOOP(N) DELAY ; CHECK FOR ILLEGAL ADDRESS 00E1 8D10 LA (ADDR = 01XX) 1ST ADDRESS BYTE 00E2 2400 M TO A(+1) 1ST BYTE TO A 00E3 9007 BR A <> ML BR. ILLEGAL ADDRESS 00E4 2400 M TO A(+1) 2ND BYTE TO A 0DE5 9407 BR A <> MH BR. ILLEGAL ADDRESS 00E6 89B5 UB (IC = 01XX) BR. NOT ILL. ADDR. ; ILL. ADDR. TO 2200 00E7 F900 K AND IM CLEAR K REG. 00E8 C901 K OR IM 01 -> K 00E9 88C4 UB (IC = 00XX) ILL. ADDR. TO 2200 ; TRACK + SECTOR CONVERSION 00EA 8D11 LA (ADDR = 01XX) 2ND ADDRESS BYTE 00EB 2400 M TO A(+1) 2ND BYTE TO A 00EC 2100 M TO K(N) 3RD BYTE TO K 00ED 1800 A TO M(-1) 00EE 1100 K TO M(N) 00EF F800 A AND IM CLEAR A REG. 00F0 C8F6 A OR IM F6 -> A 00F1 C9FF K OR IM FF -> K 00F2 FB00 ST1 AND IM CLEAR CARRY 00F3 8D11 LA (ADDR = 01XX) 00F4 3C00 A PWC M(+1)RTB RESULT TO A 00F5 3D00 K PWC M(+1)RTB RESULT TO K 00F6 89F3 UB (IC = 01XX) 00F7 8DE9 LA (ADDR = 01XX) 00F8 2100 M TO K(N) 00F9 E901 K ADD IM K+1 00FA 1100 K TO M(N) 00FB 88EF UB (IC = 00XX) 00FC E80A A ADD IM A+10 00FD 8DEA LA (ADDR = 01XX) SECTOR LOC. 00FE 1000 A TO M(N) 00FF 8A40 UB (IC = 10XX) ; SELECT DESIRED DISK AND TURN MOTOR ON (LOAD HEAD) 0100 2000 M TO A(N) 1ST BYTE TO A 0101 A417 BATH BR. DISK #2 0102 B275 B0FL BR. MOTOR OFF (#1) 0103 FC01 CNTRL-2 SELECT #1 0104 8A00 UB (IC = 10XX) 0105 FC01 CNTRL-2 SELECT #1 0106 8990 UB (IC = 01XX) BR. TO 1 SEC. DELAY 0107 B6BA B0FH BR. MOTOR OFF (#2) 0108 FC02 CNTRL-2 SELECT #2 0109 8A10 UB (IC = 10XX) 010A FC02 CNTRL-2 SELECT #2 010B 8990 UB (IC = 01XX) ; CHECK FOR PLATTER 010C FC23 CNTRL-2 START 40 MSEC. 010D A24F B0TL BR. 40 MSEC. ON 010E 88E7 UB (IC = 00XX) ERROR 010F B7ED B1FH BR. SECTOR MARK OFF 0110 A240 B0TL BR. 40 MSEC. ON ; SELECT APPROPRIATE TRACK ADDRESS AND ; CHECK IF HEAD SHOULD BE ZEROED 0111 0000 NOOP(N) 0112 8DE9 LA (ADDR = 01XX) TRACK ADDRESS 0113 2100 M TO K(N) TRACK TO K 0114 0000 NOOP(N) 0115 A41C BATH BR. DISK #2 0116 8D25 LA (ADDR = 01XX) DISK #1 TRACK LOC. 0117 A42E BATH TRACK ERROR, ZERO HEAD 0118 2000 M TO A(N) TRACK LOC. TO A 0119 A48D BATH ALREADY ZEROED HEAD 011A 8821 UB (IC = 00XX) BR. TO ZERO HEAD 011B 0000 NOOP(N) 011C 8923 UB (IC = 01XX) 011D 8925 UB (IC = 01XX) 011E F800 A AND IM CLEAR A REG. 011F 1000 A TO M(N) SET TRACK LOC. TO 00 0120 8821 UB (IC = 00XX) BR. TO ZERO HEAD 0121 0000 NOOP(N) 0122 0000 NOOP(N) 0123 8D26 LA (ADDR = 01XX) DISK #2 TRACK LOC. 0124 8917 UB (IC = 01XX) ; STEP HEAD TO DESIRED TRACK 0125 F87F A AND IM MASK OUT 80 BIT 0126 C980 K OR IM 80 -> K (HEAD ZEROED) 0127 1100 K TO M(N) 0128 D87F A XOR IM 0129 3C00 A PWC M(+1)RTB RESULT TO A 012A A74D B1TH BR. CARRY ON 012B D8FF A XOR IM 012C 89D1 UB (IC = 01XX) 012D E801 A ADD IM A+1 012E EC00 CNTRL-1 SET DIRECTION -> TRACK 34 012F EC40 CNTRL-1 STEP HEAD 0130 FC23 CNTRL-2 START 40 MSEC. 0131 A241 B0TL BR. 40 MSEC. ON 0132 E8FF A ADD IM A-1 0133 CC39 BR A = 0 0134 B7B6 B1FH BR. CARRY OFF 0135 892E UB (IC = 01XX) 0136 EC10 CNTRL-1 SET DIRECTION -> TRACK 00 0137 EC50 CNTRL-1 STEP HEAD 0138 8930 UB (IC = 01XX) 0139 FB00 ST1 AND IM CLEAR CARRY 013A FC23 CNTRL-2 START 40 MSEC. 013B A24B B0TL BR. 40 MSEC. ON ; HEAD MOVED PREVIOUSLY? 013C 8D31 LA (ADDR = 01XX) STATUS LOCATION 013D 2000 M TO A(N) STATUS TO A 013E 0000 NOOP(N) 013F 0000 NOOP(N) ; ANSWER LAST ADDRESS BYTE 0140 B4E3 BAFH BR. HEAD NOT MOVED 0141 8828 UB (IC = 00XX) BR. READ/WRITE 0142 88C2 UB (IC = 00XX) BR. TO REINT. 0143 8D10 LA (ADDR = 01XX) 1ST ADDRESS BYTE 0144 2800 M TO A(-1) 0145 B675 B0FH WAIT KBD 0146 FC13 CNTRL-2 STROBE TO 2200 0147 A44C BATH BR. IF WRITE ; DATA FROM CPU (WRITE) 0148 A628 B0TH WAIT 2200 STROBE 0149 B6D9 B0FH WAIT END STROBE 014A B6E2 B0FH REINITIALIZE 014B 8957 UB (IC = 01XX) 014C F800 A AND IM CLEAR A REG. 014D 8C00 LA (ADDR = 00XX) DATA BUFFER 014E A62E B0TH WAIT 2200 STROBE 014F B6DF B0FH WAIT END STROBE 0150 A612 B0TH BR. NOT REINT. 0151 88C2 UB (IC = 00XX) BR. TO REINT. 0152 1100 K TO M(N) DATA BYTE TO M ; SEND DATA AND LRC ON READ 0153 89C0 UB (IC = 01XX) BR. TO GENERATE LRC 0154 0000 NOOP(N) 0155 0000 NOOP(N) 0156 0000 NOOP(N) 0157 EC04 CNTRL-1 STOP READ 0158 8828 UB (IC = 00XX) BR. TO WRITE 0159 F900 K AND IM CLEAR K REG. 015A 8D10 LA (ADDR = 01XX) 1ST ADDRESS BYTE 015B 2800 M TO A(-1) 015C B67C B0FH WAIT KBD 015D FC13 CNTRL-2 STROBE TO 2200 015E 0000 NOOP(N) DELAY 015F 0000 NOOP(N) DELAY 0160 0000 NOOP(N) DELAY 0161 8C00 LA (ADDR = 00XX) DATA BUFFER 0162 A48E BATH BR. IF COMPARE 0163 F800 A AND IM CLEAR A REG. 0164 B674 B0FH WAIT KBD 0165 FC13 CNTRL-2 STROBE TO 2200 0166 0000 NOOP(N) DELAY 0167 0000 NOOP(N) DELAY 0168 6C00 A ADD M(+1)RTB GENERATE LRC 0169 B2D4 B0FL BR. AD8 OFF 016A 1000 A TO M(N) LRC TO MEMORY 016B B67B B0FH WAIT KBD 016C FC13 CNTRL-2 LRC TO 2200 016D 89DE UB (IC = 01XX) BR. TO BEGINNING ; DATA FROM 2200 FOR WRITE COMPARE 016E A62E B0TH WAIT 2200 STROBE 016F B6DF B0FH WAIT END STROBE 0170 5D00 K XOR M(+1)RTB XOR DATA READ WITH DATA FROM 2200 (RESULT TO K) 0171 CD73 BR K = 0 BR. DATA COMPARE 0172 C8FF A OR IM 0173 A225 B0TL BR. AD8 ON 0174 896E UB (IC = 01XX) BR. TO COMPARE 0175 A625 B0TH WAIT 2200 STROBE 0176 B6D6 B0FH WAIT END STROBE 0177 8009 BR A = ML BR. NO ERROR ON COMPARE 0178 88E7 UB (IC = 00XX) BR. SEND ERROR 0179 F900 K AND IM CLEAR K REG. 017A 898A UB (IC = 01XX) ; WRITE ROUTINE 017B EC04 CNTRL-1 STOP READ 017C F800 A AND IM CLEAR A REG. 017D F900 K AND IM CLEAR K REG. 017E E901 K ADD IM K+1 017F 959E BR K <> MH BR. <> 460.8 MSEC. 0180 89D3 UB (IC = 01XX) 0181 EC26 CNTRL-1 WRITE GATE ON 0182 EC26 CNTRL-1 PRESET CRC 0183 B7E6 B1FH BR. SECTOR MARK ON 0184 EC00 CNTRL-1 STOP WRITE 0185 88E7 UB (IC = 00XX) BR. TO SEND ERROR 0186 A223 B0TL BR. AD8 ON 0187 0000 NOOP(N) 0188 B7E8 B1FH BR. SECTOR MARK OFF 0189 EC00 CNTRL-1 STOP WRITE 018A B2D5 B0FL BR. AD8 OFF 018B 0000 NOOP(N) 018C F900 K AND IM CLEAR K REG. 018D 88C4 UB (IC = 00XX) LAST BYTE TO 2200 018E 0000 NOOP(N) ; 1 SEC. MOTOR ON DELAY 018F FC05 CNTRL-2 SELECT DISK #1 0190 F900 K AND IM CLEAR K REG. 0191 FC23 CNTRL-2 START 40 MSEC. 0192 A242 B0TL BR. 40 MSEC. ON 0193 E901 K ADD IM K+1 0194 9511 BR K <> MH 0195 9141 BR K <> ML BR. <> 1 SEC. 0196 A748 B1TH BR. CARRY ON 0197 890C UB (IC = 01XX) BR. READ/WRITE ; COUNT FORMAT RETRIES 0198 881F UB (IC = 00XX) BR. FORMAT 0199 0000 NOOP(N) 019A 0000 NOOP(N) 019B A74D B1TH BR. CARRY ON 019C 88E7 UB (IC = 00XX) ERROR TO 2200 019D BD33 LA (ADDR = 01XX) FORMAT RETRIES 019E 2000 M TO A(N) 019F E801 A ADD IM A+1 01A0 1000 A TO M(N) 01A1 A043 BATL BR. = 4 RETRIES 01A2 89B0 UB (IC = 01XX) ; FLASH FORMAT LIGHT 01A3 F800 A AND IM CLEAR A REG. 01A4 E801 A ADD IM A+1 01A5 FC23 CNTRL-2 START 40 MSEC. 01A6 A246 B0TL BR. 40 MSEC. ON 01A7 90F4 BR A <> ML 01A8 F800 A AND IM CLEAR A REG. 01A9 FC00 CNTRL-2 TURN OFF DISK #1 01AA E801 A ADD IM A+1 01AB FC23 CNTRL-2 START 40 MSEC. 01AC A24C B0TL BR. 40 MSEC. ON 01AD 90FA BR A <> ML 01AE FC01 CNTRL-2 SELECT DISK #1 01AF 89A3 UB (IC = 01XX) ; RETRY FORMAT 01B0 F800 A AND IM CLEAR A REG. 01B1 8DE9 LA (ADDR = 01XX) TRACK LOC. 01B2 1400 A TO M(+1) CLEAR TRACK 01B3 1400 A TO M(+1) CLEAR SECTOR 01B4 881F UB (IC = 00XX) ; ILLEGAL ADDRESS? 01B5 B017 BAFL BR. <> ILL. ADDR. 01B6 88E7 UB (IC = 00XX) BR. TO ERROR 01B7 B0EC BAFL BR. <> ILL. ADDR. 01B8 F800 A AND IM CLEAR A REG. 01B9 C8A2 A OR IM 01BA 3C00 A PWC M(+l)RTB RESULT TO A 01BB A746 B1TH BR. CARRY ON 01BC 88EA UB (IC = 00XX) TO CONVERSION ; GENERATE LRC 01BD FFFF 01BE FFFF 01BF FFFF 01C0 6C00 A ADD M(+1)RTB GENERATE LRC 01C1 A223 B0TL BR. AD8 ON 01C2 894E UB (IC = 01XX) BR. TO NEXT BYTE 01C3 A623 B0TH WAIT 2200 STROBE 01C4 B6D4 B0FH WAIT END STROBE 01C5 8D34 LA (ADDR = 01XX) LRC LOCATION 01C6 1100 K TO M(N) LRC TO MEM. 01C7 5C00 A XOR M(+1)RTB LRC BYTE FROM 2200 WITH LRC BYTE GENERATED (RESULT TO A) 01C8 DCCA BR A <> 0 BR. LRC ERROR 01C9 8957 UB (IC = 01XX) BR. TO WRITE 01CA 88E7 UB (IC = 00XX) BR. TO SEND ERROR ; LOOK FOR INDEX AND SECTOR FMT. 01CB C980 K OR IM 80 -> K (HEAD ZEROED) 01CC F980 K AND IM MASK OUT 01CD B3ED B1FL BR. INDEX OFF 01CE A31E B1TL BR. INDEX ON 01CF B7EF B1FH BR. SECTOR MARK OFF 01D0 8831 UB (IC = 00XX) ; 01D1 CC3C BR A = 0 01D2 8934 UB (IC = 01XX) 01D3 F900 K AND IM CLEAR K REG. 01D4 E901 K ADD IM K+1 01D5 9594 BR K <> MH 01D6 8DF9 LA (ADDR = 01XX) 01D7 8981 UB (IC = 01XX) ; INITIALIZE REPLY 01D8 F900 K AND IM CLEAR K REG. 01D9 C9C0 K OR IM C0 -> K 01DA 1100 K TO M(N) CO -> MEM. 01DB B67B B0FH WAIT KBD 01DC FC13 CNTRL-2 STROBE TO 2200 01DD 89F9 UB (IC = 01XX) ; CLEAR DRIVE IF NO STROBE WITHIN 10 SEC. 01DE FC00 CNTRL-2 01DF 8D0F LA (ADDR = 01XX) 01E0 B6DF B0FH BR. STROBE ON 01E1 C9F8 K OR IM 01E2 B6DF B0FH BR. STROBE ON 01E3 FC23 CNTRL-2 START 40 MSEC. 01E4 B6DF B0FH BR. STROBE ON 01E5 A244 B0TL BR. 40 MSEC. ON 01E6 E801 A ADD IM A+l 01E7 B6DF B0FH BR. STROBE ON 01E8 DCE2 BR A <> 0 BR. 10 SEC. 01E9 E901 K ADD IM K+l 01EA B6DF B0FH BR. STROBE ON 01EB DDE2 BR K <> 0 01EC ED88 CNTRL-1 STOP MOTOR 01ED 8D0F LA (ADDR = 01XX) 01EE A62E B0TH BR. NO STROBE 01EF 88D5 UB (IC = 00XX) ; CONVERSION CONTINUED 01F0 FFFF 01F1 FFFF 01F2 FFFF 01F3 8D11 LA (ADDR = 01XX) 01F4 1400 A TO M(+l) 01F5 1100 K TO M(N) 01F6 B7B8 B1FH BR. CARRY OFF 01F7 88F7 UB (IC = 00XX) 01F8 88FC UB (IC - 00XX) ; CLEAR DISK IF DRIVE IS NOT ACCESSED WITHIN 8 SEC. ; OF LAST OPERATION OF THAT DRIVE 01F9 0000 NOOP(N) 01FA 0000 NOOP(N) 01FB 0000 NOOP(N) 01FC 89ED UB (IC = 01XX) 01FD FFFF 01FE FFFF 01FF FFFF 0200 8D40 LA (ADDR = 01XX) 0201 2100 M TO K(N) 0202 F900 K AND IM 0203 1500 K TO M(+1) 0204 2100 M TO K(N) 0205 E901 K ADD IM K+1 0206 1100 K TO M(N) 0207 A529 BKTH BR. = 8 SEC. 0208 890C UB (IC = 01XX) 0209 F900 K AND IM CLEAR K REG. 020A 1100 K TO M(N) 020B A41E BATH BR. DISK #2 020C EC80 CNTRL-1 CLEAR DISK #2 020D 890C UB (IC = 01XX) 020E ED00 CNTRL-1 CLEAR DISK #1 020F 890C UB (IC = 01XX) 0210 8D41 LA (ADDR = 01XX) 0211 2100 M TO K(N) 0212 F900 K AND IM 0213 1900 K TO M(-1) 0214 8A04 U8 (IC = 10XX) ; COUNT # OF ERRORS 0215 FFFF 0216 FFFF 0217 FFFF 0218 FFFF 0219 FFFF 021A FFFF 021B FFFF 021C FFFF 021D FFFF 021E FFFF 021F FFFF 0220 EC04 CNTRL-1 0221 8D30 LA (ADDR = 01XX) SECTOR ERROR LOC. 0222 2000 M TO A(N) 0223 F800 A AND IM CLEAR ERROR 0224 1000 A TO M(N) 0225 8D38 LA (ADDR = 01XX) CRC ERROR LOC. 0226 2000 M TO A(N) 0227 E801 A ADD IM A+1 0228 1000 A TO M(N) 0229 841B BR A = M(N) BR. = 16 ERRORS 022A 8828 UB (IC = 00XX) BR. TO RETRY 022B 887E UB (IC = 00XX) BR. TO CRC ERROR 022C FFFF 022D FFFF 022E FFFF 022F FFFF ; 400 MSEC. DELAY 0230 F900 K AND IM CLEAR K REG. 0231 FC23 CNTRL-2 START 40 MSEC. 0232 FB00 ST1 AND IM CLEAR CARRY 0233 A242 B0TL BR. 40 MSEC. ON 0234 E901 K ADD IM K+1 0235 91A1 BR K <> ML 0236 8810 UB (IC = 00XX) ; 0237 FFFF 0238 FFFF 0239 FFFF 023A FFFF 023B FFFF 023C FFFF 023D FFFF 023E FFFF 023F FFFF ; CONVERSION CONTINUED 0240 809A BR A = ML 0241 808C BR A = ML 0242 8046 BR A = ML 0243 B0BE BAFL 0244 8058 BR A = ML 0245 806A BR A = ML 0246 D806 A XOR IM 0247 1000 A TO M(N) 0248 8D10 LA (ADDR = 01XX) 0249 8900 UB (IC = 01XX) 024A D80E A XOR IM 024B 8A47 UB (IC = 1OXX) 024C D80C A XOR IM 024D 8A47 UB (IC = 10XX) 024E 6000 A ADD M(N) 024F 6000 A ADD M(N) 0250 8A48 UB (IC = 10XX) 0251 FFFF 0252 FFFF 0253 FFFF 0254 FFFF 0255 FFFF 0256 FFFF 0257 FFFF 0258 FFFF 0259 FFFF 025A FFFF 025B FFFF 025C FFFF 025D FFFF 025E FFFF 025F FFFF 0260 FFFF 0261 FFFF 0262 FFFF 0263 FFFF 0264 FFFF 0265 FFFF 0266 FFFF 0267 FFFF 0268 FFFF 0269 FFFF 026A FFFF 026B FFFF 026C FFFF 026D FFFF 026E FFFF 026F FFFF