diff --git a/FDC.PAS b/FDC.PAS new file mode 100644 index 0000000..baf42c9 --- /dev/null +++ b/FDC.PAS @@ -0,0 +1,479 @@ +unit FDC; + +interface + +const + FDC_MAX_TRACK = 84; + + FDC_REG_SRA = $3F0; + FDC_REG_SRB = $3F1; + FDC_REG_DOR = $3F2; + {3F2H ‡ ¯¨áì: ¥£¨áâà ã¯à ¢«¥­¨ï + Ö7Â6Â5Â4Â3Â2Â1Â0· + úD C B A³ ³ ³ ú + ÓÄÁÄÁÄÁÄÁÒÁÒÁÄÁĽ ¡¨âë + ÈÍÍËÍͼ ú ú ÈÍÊÍ. 0-1: ‚ë¡®à ¤à ©¢¥à  0-3 (AT: ¡¨â 1 ­¥ ¨á¯.) + ú ú ÈÍÍÍÍÍ. 2: 0=‘¡à®á ª®­â஫«¥à  HƒŒ„; 1= §à¥è¥­¨¥ ª®­â஫«¥à  + ú ÈÍÍÍÍÍÍÍ. 3: 1= §à¥è¨¨âì à ¡®âã á DMA ¨ ¯à¥à뢠­¨ï¬¨ + ÈÍÍÍÍÍÍÍÍÍÍÍÍ. 4-7: ‚ª«îç¨âì ¬®â®à ¤à ©¢¥à . …᫨ ¡¨â ãáâ ­®¢«¥­ â® ‚Š‹. + (AT: ¡¨âë 6-7 ¨£­®à¨àã¥â)} + FDC_REG_MSR = $3F4; + {3F4H ’®«ìª®-¤«ï ç⥭¨ï: ƒ« ¢­ë© ॣ¨áâà áâ âãá  + Ö7Â6Â5Â4Â3Â2Â1Â0· + ú ³ ³ ³ ³D C B Aú + ÓÒÁÒÁÒÁÒÁÄÁÄÁÄÁĽ ¡¨âë + ú ú ú ú ÈÍÍÍÍÍÊÍ. 0: ‚ë¡®à ¤à ©¢¥à  (AT: ¡¨âë 2-3 ­¥ ¨á¯®«ì§ã¥â) + ú ú ú ÈÍÍÍÍÍÍÍÍÍ. 4: 1=‘¨£­ « ª®­â஫«¥à  (ˆ¤¥â ç⥭¨¥ ¨«¨ § ¯¨áì) + ú ú ÈÍÍÍÍÍÍÍÍÍÍÍ. 5: 1=H…-DMA ०¨¬; 0=DMA ०¨¬ ¢ª«î祭 + ú ÈÍÍÍÍÍÍÍÍÍÍÍÍÍ. 6: ‘¨£­ « ã¯à ¢«¥­¨ï: 1 = FDCÍ.CPU; 0 = CPUÍ.FDC + ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ. 7: ‡ ¯à®á ­  ‡ ¯¨áì. 1=OK ¥à¥¤ ç /ਥ¬ ª®¬ ¨«¨ ¤ ­.} + + FDC_REG_DR = $3F5; + {3F5H —⥭¨¥/‡ ¯¨áì: ¥£¨áâà ¤ ­­ëå + K¬¤ ޝ¨á ­¨¥ + ßßß ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß + 0E6H —¨â âì ¤ ­­ë¥ (’ॡã¥â: 8 ¯ à ¬¥â஢; P¥§ã«ìâ â : 7 ¯ à ¬¥â஢) + 0C5H ¨á âì ¤ ­­ë¥ (’ॡã¥â 8 ¯ à ¬¥â஢; P¥§ã«ìâ â : 7 ¯ à ¬¥â஢) + 04DH ”®à¬ â¨à®¢ âì ¤®à®¦ªã (’ॡã¥â 5 ¯ à ¬¥â஢;P¥§ã«ìâ â : 7 ¯ à ¬¥â஢) + 007H ¥ª «¨¡à®¢ âì (’ॡã¥â 1 ¯ à ¬¥â஢; P¥§ã«ìâ â : H…’) + 00FH “áâ ­®¢¨âì ­  ¤®à®¤ªã (’ॡã¥â 2 ¯ à ¬¥â஢;P¥§ã«ìâ â : H…’} + + FDC_REG_DIR = $3F7; + {3F7H ÝATÞ ’®«ìª®-¤«ï ç⥭¨ï : ¥£¨áâà ᨣ­ ¤®¢ ¢å®¤  + Ö7Â6Â5Â4Â3Â2Â1Â0· + ú ³ ³ ú + ÓÒÁÄÁÄÁÄÁÄÁÄÁÄÁÒ½ ¡¨âì + ú ÈÍÍÍÍËÍÍÍͼ ÈÍ. 0: 1= ‚ë¡à ­  ¤¢®©­ ï ¯«®â­®áâì; 0= ‚ë᮪ ï ¯«®â­®áâì + ú ÈÍÍÍÍÍÍÍÍ. 1-6: ‡ à¥§¥à¢¨à®¢ ­ë. + ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ. 7: 1= ந§®è«  § ¬¥­  ¤¨áª¥âë} + + FDC_REG_CCR = $3F8; + {3F8H ÝATÞ ‡ ¯¨áì : ¥£¨áâà ª®­ä¨£ãà æ¨¨ + Ö7Â6Â5Â4Â3Â2Â1Â0· + ú ³ ú + ÓÄÁÄÁÄÁÄÁÄÁÄÁÄÁĽ ¡¨âë + ÈÍÍÍÍËÍÍÍͼ ÈÍÊÍ. 0-1: ᪮à®áâì ¯¥à¤ ç¨ ¤ ­­ëå + ú 00=500 KBS, 01=300 KBS, 10=250 KBS, 11=§ à¥§¥à. + ÈÍÍÍÍÍÍÍÍÍÍ. 2-7: ‡ à¥§¥à¢¨à®¢ ­®} + + FDC_CMD_READ_TRACK = $02; + FDC_CMD_SPECIFY = $03; + FDC_CMD_GET_STATUS3 = $04; + FDC_CMD_WRITE_DATA = $05; + FDC_CMD_READ_DATA = $06; + FDC_CMD_RECALIBRATE = $07; + FDC_CMD_WRITE_DELETED_DATA = $09; + FDC_CMD_READ_DELETED_DATA = $0C; + FDC_CMD_SEEK = $0F; + + { for FDC_CMD_READ_DATA } + FDC_HCMD_SK = $20; { BIT5: SK stands for Skip Deleted Data Addres Mark } + FDC_HCMD_MFM = $40; { BIT6: if high, MFM mode is selected } + FDC_HCMD_MT = $80; { BIT7: If MT is high, a multi-track operation is } + + FDC_SPEED_500 = $00; + FDC_SPEED_300 = $01; + FDC_SPEED_250 = $02; + FDC_SPEED_125 = $03; + FDC_SPEED_COUNT = $03; + + FDC_SECTOR_256 = 1; + FDC_SECTOR_512 = 2; + FDC_SECTOR_1024 = 3; + FDC_SECTOR_2048 = 4; + FDC_SECTOR_4096 = 5; + FDC_SECTOR_8192 = 6; + + { + +----------+-----------------+-----+-----+------+--------+----------------+ + | FORMAT | SECTOR SIZE | N | SC | GPL1| GPL2 | REMARKS | + +----------+-----------------+-----+-----+------+--------+----------------+ + | |256 | 01 | 1A | 0E | 36H |IBM Diskette 2D | + | |512 | 02 | 0F | 1B | 54H | | + | MFM Mode |1024 | 03 | 08 | 36H | 74H |IBM Diskette 2D | + | |2048 | 04 | 04 | __ | __ | | + | |4096 | 05 | 02 | __ | __ | | + | |8192 | 06 | 01 | __ | __ | | + +----------+-----------------+-----+-----+------+--------+----------------+ + Note : 1. GPL1 Suggested values of GPL in Read or Write Commands to avoid + splice point between data and ID field of contiguous sections. + + 2 GPL2, Suggested values of GPL in format command. + } + + FDC_OK = 0; + FDC_ERR_BAD_CONTROLLER = 1; + FDC_ERR_TIMEOUT = 2; + FDC_ERR_SEEK_ERROR = 3; + FDC_ERR_DRIVE_NOT_READY = 4; + FDC_ERR_END_OF_CYLINDER = 5; + FDC_ERR_BAD_SECTOR = 6; + FDC_ERR_DMA_ERROR = 7; + FDC_ERR_SECTOR_NOT_FOUND = 8; + FDC_ERR_WRITE_PROTECT = 9; + FDC_ERR_UNKNOWN = 10; + +type + TFDCBbuffer = array[1..8192] of byte; + +var + fdcBuf: TFDCBbuffer; + fdcIOError: byte; + fdcStatus: array[1..8] of byte; + +procedure fdcMotorOn(drv: byte); +procedure fdcMotorOff; + +procedure fdcRecalibrate(drv: byte); +procedure fdcSeek(drv, trck: byte); +procedure fdcSpecify; +procedure fdcReadSector(drv, track_id, head_id, sector_id, sector_size_id, last_sector_id: byte); + +procedure fdcInit(drv, sector_size_id: byte); +function fdcErrorStr(value: byte): string; +function fdcSpeedStr(value: byte): string; + +implementation + +uses + crt; + +{ HELPERS } + +{----------------------------------------------------------------------------} +function strr(value: longint): string; +var + r: string; +begin + str(value, r); + + strr:= r; +end; + +{----------------------------------------------------------------------------} +function TestBit(Num, Bit: byte): boolean; +const + Bits: array[0..7] of word = (1,2,4,8,16,32,64,128); +begin + TestBit:= (Num and Bits[Bit]) <> 0; +end; + +{----------------------------------------------------------------------------} +procedure IncPtr(var p: pointer; off: Word); +begin + asm + push ds + lds di,p + mov ax,Off + add [di],ax + jnc @1 + add word ptr [di+2],1000h +@1: pop ds + end; +end; + +{----------------------------------------------------------------------------} +procedure ConvPtr(p: pointer; var page, off: word); +begin + asm + push ds + lds dx,p + mov bx,ds + mov ax,bx + mov cl,4 + shl ax,cl + add ax,dx + pushf + lds di,off + mov [di],ax + mov ax,bx + mov cl,12 + shr ax,cl + popf + jnc @1 + inc ax +@1: lds di,page + mov [di],ax + pop ds + end; +end; + +{ PRIVATE } + +{----------------------------------------------------------------------------} +procedure fdc_out(value: byte); +var + i: longint; +begin + i:= 128; + while (port[FDC_REG_MSR] and $C0) <> $80 do + begin + dec(i); + if i = 0 then break; + end; + + fdcIOError:= FDC_OK; + if i <> 0 then + port[FDC_REG_DR]:= value + else + fdcIOError:= FDC_ERR_TIMEOUT; +end; + +{----------------------------------------------------------------------------} +function fdc_in: byte; +var + i: longint; +begin + i:= 128; + while (port[FDC_REG_MSR] and $C0) <> $C0 do + begin + dec(i); + if i = 0 then break; + end; + + if i <> 0 then + begin + fdcIOError:= FDC_OK; + fdc_in:= port[FDC_REG_DR] + end + else + begin + fdcIOError:= FDC_ERR_TIMEOUT; + fdc_in:= 0; + end; +end; + +{----------------------------------------------------------------------------} +procedure fdc_wait; +var + WasInt: byte; + Timer: word; +begin + fdcIOError:= FDC_OK; + + WasInt:= 0; + Timer:= 2000; + + while (WasInt = 0) and (Timer > 0) do + begin + dec(Timer); + delay(1); + asm + push DS + push AX + xor AX, AX + mov DS, AX + test byte ptr DS:[43Eh], 80h + jz @noInt + and byte ptr DS:[43Eh], 7Fh + mov WasInt, 1 + @noInt: + pop AX + pop DS + end; + end; + + if WasInt = 0 then + fdcIOError:= FDC_ERR_TIMEOUT; +end; + +{ PUBLIC } + +{----------------------------------------------------------------------------} +procedure fdcMotorOn(drv: byte); +begin + { port[FDC_REG_DOR]:= (drv+1)*16+$C+drv; } + + if drv = 0 then + port[FDC_REG_DOR]:= 28 + else + port[FDC_REG_DOR]:= 45; + + { wait until motor take rpm } + delay(1000);{} +end; + +{----------------------------------------------------------------------------} +procedure fdcMotorOff; +begin + port[FDC_REG_DOR]:= 12; { 12 = $0C = 00001100, bit 3 and 4 } +end; + +{----------------------------------------------------------------------------} +procedure fdcRecalibrate(drv: byte); +begin + fdc_out(FDC_CMD_RECALIBRATE); + fdc_out(drv); + fdc_wait; +end; + +{----------------------------------------------------------------------------} +procedure fdcSeek(drv, trck: byte); +var + a: byte; +begin + fdc_out(FDC_CMD_SEEK); + fdc_out(drv); + fdc_out(trck); + fdc_wait; + + delay(100); +end; + +{----------------------------------------------------------------------------} +procedure fdcSpecify; +var + SRT, HUT, HLT, DMA: byte; +begin +{ +SRT - Step Rate Interval. +Sets the minimum delay between two drive step pulses. +(1-16 ms, SRT = 0Fh corresponds to 1 ms). +Older PC drives did not perform 3- or 4-ms step rates, +and some cannot perform with 2- or even 1-ms step rates. + +HUT - Head Unload Time. +The delay between the completion of a read/write operation and the head lifting. +(16-240 ms, HUT = 0 corresponds to 16 ms). It is usually set to 240 ms. + +HLT - Head Load Time. +The delay between the head load command and the start of a read/write operation. +(2-254 ms, HLT=1-2 ms). Usually set to 2 ms. + +ND - 0: DMA mode. 1: Non-DMA mode. +} + + SRT:= $0F; + HUT:= $0D; + HLT:= $01; + DMA:= $00; + + fdc_out(FDC_CMD_SPECIFY); + fdc_out(SRT or (HUT shl 4)); + fdc_out(DMA or (HLT shl 1)); +end; + +{---------------------------------------------------------------------------} +procedure fdcInit(drv, sector_size_id: byte); +begin + { reset } + port[$3F2]:= 0; + port[$3F2]:= 4; + + fdcMotorOn(drv); + fdcRecalibrate(drv); + fdcRecalibrate(drv); + fdcSeek(drv, 20); + fdcRecalibrate(drv); + fdcSpecify; +end; + +{---------------------------------------------------------------------------} +procedure fdcReadSector(drv, track_id, head_id, sector_id, sector_size_id, last_sector_id: byte); +var + gpl_id: byte; + DMAPage,DMAOfs:word; + BlockSize:word; +begin + { init DMA } + ConvPtr(@fdcBuf, DMAPage, DMAOfs); + BlockSize:= (128 SHL sector_size_id); + asm cli end; + port[$0A]:= $06; { mask channel 2 } + port[$0C]:= $46; { reset trigger } + port[$0B]:= $46; { mode: FDD -> Memory } + port[$04]:= DMAOfs and $FF; + port[$04]:= DMAOfs shr 8; + port[$81]:= DMAPage and $FF; + port[$05]:= (BlockSize-1) and $FF; + port[$05]:= (BlockSize-1) shr 8; + port[$0A]:= $02; { unmask channel 2 } + asm sti end; + + { read data command } + fdc_out(FDC_HCMD_MFM or FDC_CMD_READ_DATA);{} +{ fdc_out( ((head_id and $01) shl 2) or (drv and $03) ); { head (1 bit), drive (2 bits) } + fdc_out(drv); + fdc_out(track_id); + fdc_out(head_id and $01); + fdc_out(sector_id); + fdc_out(sector_size_id); { N: sector size id } + fdc_out(last_sector_id); { EOT: last sector_id on track } + + { GPL values for MFM mode ONLY } + case sector_size_id of + FDC_SECTOR_256: gpl_id:= $0E; + FDC_SECTOR_512: gpl_id:= $1B; + FDC_SECTOR_1024: gpl_id:= $3F; + FDC_SECTOR_2048: gpl_id:= $99; + FDC_SECTOR_4096: gpl_id:= $C8; + FDC_SECTOR_8192: gpl_id:= $C8; { TODO: need to calc it } + else gpl_id:= $2A; { default value } + end; + fdc_out(gpl_id); { GPL: stands for the length of Gap3 } + + { should be FF in MFM mode } + fdc_out($FF); { DTL: if N>0 should be FF and will be ignored } + + fdc_wait; + + fdcStatus[1]:= fdc_in; + fdcStatus[2]:= fdc_in; + fdcStatus[3]:= fdc_in; + fdcStatus[4]:= fdc_in; + fdcStatus[5]:= fdc_in; + fdcStatus[6]:= fdc_in; + fdcStatus[7]:= fdc_in; + + fdc_out(FDC_CMD_GET_STATUS3); + fdc_out(drv); + fdcStatus[8]:= fdc_in; + + { fdcIOError } + fdcIOError:= FDC_OK; + if (fdcStatus[1] and $C0) <> 0 then + begin + fdcIOError:= FDC_ERR_UNKNOWN; + if TestBit(fdcStatus[1],3) then fdcIOError:= FDC_ERR_DRIVE_NOT_READY; + if TestBit(fdcStatus[2],7) then fdcIOError:= FDC_ERR_END_OF_CYLINDER; + if TestBit(fdcStatus[2],5) or TestBit(fdcStatus[3],5) or TestBit(fdcStatus[3],0) then fdcIOError:= FDC_ERR_BAD_SECTOR; + if TestBit(fdcStatus[2],2) or TestBit(fdcStatus[2],4) then fdcIOError:= FDC_ERR_SECTOR_NOT_FOUND; + if TestBit(fdcStatus[2],4) then fdcIOError:= FDC_ERR_DMA_ERROR; + end; + + if (TestBit(fdcStatus[8],1)) then fdcIOError:= FDC_ERR_DRIVE_NOT_READY; +end; + +{----------------------------------------------------------------------------} +function fdcErrorStr(value: byte): string; +begin + fdcErrorStr:= 'Unknown ('+strr(value)+')'; + Case value of + 0: fdcErrorStr:= 'OK'; + 1: fdcErrorStr:= 'Bad Controller'; + 2: fdcErrorStr:= 'Time Out'; + 3: fdcErrorStr:= 'Seek Error'; + 4: fdcErrorStr:= 'Drive Not Ready'; + 5: fdcErrorStr:= 'End Of Cylinder'; + 6: fdcErrorStr:= 'Bad Sector'; + 7: fdcErrorStr:= 'DMA Error'; + 8: fdcErrorStr:= 'Sector Not Found'; + 9: fdcErrorStr:= 'Write Protect'; + 10: fdcErrorStr:= 'Unknown Error'; + 27: fdcErrorStr:= 'User Break'; + End; +end; + +{----------------------------------------------------------------------------} +function fdcSpeedStr(value: byte): string; +begin + fdcSpeedStr:= 'Unexpected format'; + Case value of + 0: fdcSpeedStr:= '500 kb/s (0)'; + 1: fdcSpeedStr:= '300 kb/s (1)'; + 2: fdcSpeedStr:= '250 kb/s (2)'; + 3: fdcSpeedStr:= '125 kb/s (3)'; + End; +end; + +end. diff --git a/HELPERS.PAS b/HELPERS.PAS new file mode 100644 index 0000000..fce5019 --- /dev/null +++ b/HELPERS.PAS @@ -0,0 +1,236 @@ +unit helpers; + +interface + +function strlo(s: string): string; +function mid(str: string; ind1,ind2: integer): string; +function nosp(s: string): string; +function strr(value: longint): string; +function vall(value: string): longint; + +function hob2pc(name: string): string; +function CheckFile(myfile: string): byte; +function GetOf(fullpath: string; what: byte): string; +function CheckEx(myfile: string): string; + +function dec2hex(decn: string): string; + +implementation + +uses + dos; + +{----------------------------------------------------------------------------} +function strlo(s: string): string; +var + f: byte; + a: string; + x: byte; +begin + a:= ''; + for f:= 1 to Length(s) do + begin + x:= 0; + if (((s[f] >= 'A')and(s[f] <= 'Z'))or((s[f] >= 'À')and(s[f] <= 'Ï'))) then x:= 32; + if (s[f] >= 'Ð')and(s[f] <= 'ß') then x:= 80; + a:= a + chr(ord(s[f]) + x); + end; + +strlo:= a; +end; + +{----------------------------------------------------------------------------} +function mid(str: string; ind1,ind2: integer): string; +begin + mid:= Copy(str, ind1, ind2-ind1+1); +end; + +{----------------------------------------------------------------------------} +function nosp(s: string): string; +var + f,l,r: byte; + a: string; +begin + a:= ''; + l:=1; while s[l]=' ' do inc(l); + r:= length(s); while s[r]=' ' do dec(r); + + nosp:= mid(s,l,r); +end; + +{----------------------------------------------------------------------------} +function strr(value: longint): string; +var + r: string; +begin + str(value, r); + + strr:= r; +end; + +{----------------------------------------------------------------------------} +function vall(value: string): longint; +var + rrr: longint; + code: integer; +begin + val(value, rrr, code); + vall:= rrr; +end; + +{----------------------------------------------------------------------------} +function hob2pc(name: string): string; +var + i, m: byte; + s, d: string; +begin + s:= nosp(mid(name,1,8)); + d:= copy(strlo(s), 1, 3); + if (d='com') or (d='lpt') or (d='nul') or (d='con') or (d='aux') or (d='prn') then s:= s + d; + + for i:= 1 to length(s) do + begin + if s[i] = ' ' then s[i]:= '_'; + if s[i] in ['.',':',',','\','/','?','*','>','<','+','"',#39] then s[i]:= '-'; + if s[i] = #0 then s[i]:= '0'; + if s[i] = #1 then s[i]:= '1'; + if s[i] = #2 then s[i]:= '2'; + if s[i] = #3 then s[i]:= '3'; + if s[i] = #4 then s[i]:= '4'; + if s[i] = #5 then s[i]:= '5'; + if s[i] = #6 then s[i]:= '6'; + if s[i] = #7 then s[i]:= '7'; + if s[i] = #8 then s[i]:= '8'; + if s[i] = #9 then s[i]:= '9'; + if s[i] = #10 then s[i]:= 'A'; + if s[i] = #11 then s[i]:= 'B'; + if s[i] = #12 then s[i]:= 'C'; + if s[i] = #13 then s[i]:= 'D'; + if s[i] = #14 then s[i]:= 'E'; + if s[i] = #15 then s[i]:= 'F'; + if s[i] = #16 then s[i]:= 'G'; + if s[i] = #17 then s[i]:= 'H'; + if s[i] = #18 then s[i]:= 'I'; + if s[i] = #19 then s[i]:= 'J'; + if s[i] = #20 then s[i]:= 'K'; + if s[i] = #21 then s[i]:= 'L'; + if s[i] = #22 then s[i]:= 'M'; + if s[i] = #23 then s[i]:= 'N'; + if s[i] = #24 then s[i]:= 'O'; + if s[i] = #25 then s[i]:= 'P'; + if s[i] = #26 then s[i]:= 'Q'; + if s[i] = #27 then s[i]:= 'R'; + if s[i] = #28 then s[i]:= 'S'; + if s[i] = #29 then s[i]:= 'T'; + if s[i] = #30 then s[i]:= 'U'; + if s[i] = #31 then s[i]:= 'V'; + end; + + hob2pc:= s; +end; + +{----------------------------------------------------------------------------} +{$I-} +function CheckFile(myfile: string): byte; +var + ff: searchrec; +begin + filemode:= 0; + findfirst(myfile, anyfile, ff); + CheckFile:= doserror; +end; +{$I+} + +{----------------------------------------------------------------------------} +function GetOf(fullpath: string; what: byte): string; +var + dosdir :dirstr; + dosname :namestr; + dosext :extstr; +begin + FSplit(fullpath, dosdir, dosname, dosext); + if length(dosdir) <> 3 then dosdir := Copy(dosdir, 1, Length(dosdir)-1); + case what of + 1: GetOf := dosdir; + 2: GetOf := dosname; + 3: GetOf := dosext; + end; +end; + +{----------------------------------------------------------------------------} +function CheckEx(myfile: string): string; +var + e: byte; + s,t,fn,ex: string; + i: longint; +begin + CheckEx:= myfile; + + {file exists} + e:= CheckFile(myfile); + if e <> 0 then + exit; + + fn:= GetOf(myfile,2); + ex:= GetOf(myfile,3); + + i:= 0; + while (e = 0) do + begin + inc(i); + t:= strr(i); + s:= copy(fn,1,5); + s:= s + copy('00000000', 1, 8-length(s)-length(t)) + t; + + e:= CheckFile(s+ex); + end; + + CheckEx:= s+ex; +end; + +{----------------------------------------------------------------------------} +function dec2hex(decn: string): string; +var + hex: string; + f, tdec, valcode, h3, h4: integer; + decm: array [1..2] of real; + i: longint; +label + fin; +begin + hex:= ''; + Val(decn, tdec, valcode); + if (tdec < 0) or (tdec > 65535) then + begin + hex:= 'error'; + goto fin; + end; + decm[1]:= int(tdec / 256); + decm[2]:= tdec - 256 * decm[1]; + for i:= 1 to 2 do + begin + h3:= 48; + h4:= 48; + for f:= 1 to round(decm[i]) do + begin + h4:= h4 + 1; + if (h4 > 57) and (h4 < 65) then + h4:= h4 + 7; + if h4 > 70 then + begin + h3:= h3 + 1; + h4:= 48; + end; + if (h3 > 57) and (h3 < 65) then + h3:= h3 + 7; + end; + hex:= hex + chr(h3) + chr(h4); + end; +fin: + if vall(decn) > 255 then + dec2hex:= hex + else + dec2hex:= copy(hex, 3, 2); +end; + +end. \ No newline at end of file diff --git a/LD-ISDOS.PAS b/LD-ISDOS.PAS new file mode 100644 index 0000000..8a006e7 --- /dev/null +++ b/LD-ISDOS.PAS @@ -0,0 +1,354 @@ +uses + dos, crt, + helpers, + fdc; + +const + SEP = '--------------------------------------------------------------------------'; + +var + tmp: TFDCBbuffer; + drive: byte; + i: integer; + startTrack, maxTrack: byte; + ff: file; + tries, track, head, sector, sc: byte; + out_file_name, d: string; + fdcIOErrorBackup: byte; + maxTries: byte; + testMode, motorOffMethod, showDump: boolean; + c: char; + showDumpSector: byte; + +{----------------------------------------------------------------------------} +function fdcGetSpeed(drv: byte): byte; +var + speed_id: byte; +begin + fdcGetSpeed:= 255; { speed unknown } + + for speed_id:= 0 to FDC_SPEED_COUNT do + begin + port[FDC_REG_DIR]:= speed_id; + + fdcReadSector(drv,0,0,1,FDC_SECTOR_1024,9); { ISDOS specific } + if fdcIOError = FDC_OK then + begin + fdcGetSpeed:= speed_id; + exit; + end; + end; + + fdcIOError:= FDC_ERR_SECTOR_NOT_FOUND; +end; + +{----------------------------------------------------------------------------} +function GetMaxTrack(param: string): byte; +begin + GetMaxTrack:= 79; + + if param[3] = '1' then GetMaxTrack:= 80; + if param[3] = '2' then GetMaxTrack:= 81; + if param[3] = '3' then GetMaxTrack:= 82; + if param[3] = '4' then GetMaxTrack:= 83; + if param[3] = '5' then GetMaxTrack:= 84; + + if length(param) = 2 then GetMaxTrack:= 82; +end; + +{----------------------------------------------------------------------------} +function GetMaxTries(param: string): byte; +begin + GetMaxTries:= 3; + + if param[3] = '4' then GetMaxTries:= 4; + if param[3] = '5' then GetMaxTries:= 5; + if param[3] = '6' then GetMaxTries:= 6; + if param[3] = '7' then GetMaxTries:= 7; + if param[3] = '8' then GetMaxTries:= 8; + if param[3] = '9' then GetMaxTries:= 9; +end; + +{----------------------------------------------------------------------------} +begin + ClrScr; + + drive:= 0; + startTrack:= 0; + maxTrack:= 79; + out_file_name:= '_isdos.isd'; + maxTries:= 5; + testMode:= false; + motorOffMethod:= false; + showDump:= false; + showDumpSector:= 1; + +{----------------------------------------------------------------------------} + if ParamCount = 1 then + begin + d:= strlo(ParamStr(1)); + + { drive } + if d = 'a:' then drive:= 0; + if d = 'b:' then drive:= 1; + end; + + if ParamCount > 1 then + begin + d:= strlo(ParamStr(1)); + + { drive } + if d = 'a:' then drive:= 0; + if d = 'b:' then drive:= 1; + + d:= strlo(ParamStr(2)); + + { out file name} + if d[1] <> '/' then out_file_name:= d; + end; + + for i:= 1 to ParamCount do + begin + d:= strlo(ParamStr(i)); + if copy(d,1,2) = '/t' then + begin + testMode:= true; + startTrack:= 80; + maxTrack:= GetMaxTrack(d); + continue; + end; + if copy(d,1,2) = '/m' then + begin + maxTrack:= GetMaxTrack(d); + continue; + end; + if copy(d,1,2) = '/r' then + begin + maxTries:= GetMaxTries(d); + continue; + end; + if copy(d,1,2) = '/o' then + begin + motorOffMethod:= true; + continue; + end; + if copy(d,1,2) = '/d' then + begin + showDump:= true; + if (length(d) = 3) and (d[3] = '1') then showDumpSector:= 1; + if (length(d) = 3) and (d[3] = '2') then showDumpSector:= 2; + if (length(d) = 3) and (d[3] = '3') then showDumpSector:= 3; + if (length(d) = 3) and (d[3] = '4') then showDumpSector:= 4; + if (length(d) = 3) and (d[3] = '5') then showDumpSector:= 5; + if (length(d) = 3) and (d[3] = '6') then showDumpSector:= 6; + if (length(d) = 3) and (d[3] = '7') then showDumpSector:= 7; + if (length(d) = 3) and (d[3] = '8') then showDumpSector:= 8; + if (length(d) = 3) and (d[3] = '9') then showDumpSector:= 9; + continue; + end; + end; + +{----------------------------------------------------------------------------} + writeln('ZX Spectrum Navigator v1.15 Reading iS-DOS floppy disk'); + writeln('https://zxsn.ru, RomanRom2@gmail.com'); + writeln('Copyright (c) 1996-2026 RomanRom2'); + writeln(SEP); + + if strlo(ParamStr(1)) = '/h' then + begin + writeln('LD-ISDOS.EXE drive|key '); + writeln(' - key /dN try to show dump of track 0 head 0 sector N'); + writeln(' by default N=1, means /d is the same /d1'); + writeln(' - key /o enable MotorOff method each 4,6,8 tries'); + writeln(' - key /rN set max tries to read bad sector'); + writeln(' by default N=5'); + writeln(' - key /mN enable 8N tracks, N = 1..5 means 81-85 tracks'); + writeln(' /m is the same /m3 for 83'); + writeln('by default drive [A:], file name gets from disk name'); + writeln(SEP); + writeln('Examples:'); + writeln('LD-ISDOS.EXE /m5 - dump disk A: names as DiskName with max tracks'); + writeln('LD-ISDOS.EXE b: - dump disk B: names as DiskName'); + writeln('LD-ISDOS.EXE a: MYDSK - dump disk A: names as MYDSK'); + writeln('LD-ISDOS.EXE a: MYDSK /m2 - dump disk A: names as MYDSK with 82 tracks'); + writeln('LD-ISDOS.EXE a: /d9 - dump disk A: names as DiskName with dump sector 9'); + writeln('LD-ISDOS.EXE /d /r2 - dump disk A: names as DiskName with dump sector 1'); + writeln(' and 2 retries to read bad sectors'); + end + else + begin + writeln('LD-ISDOS.EXE /h - for help'); + end; + writeln(SEP); + + writeln; + if strlo(ParamStr(1)) = '/h' then exit; + +{----------------------------------------------------------------------------} + + writeln('Drive ',chr(drive+65),': is initializing...'); + + fdcInit(drive, FDC_SECTOR_1024); + if fdcIOError <> FDC_OK then + begin + writeln('FDC init error ['+fdcErrorStr(fdcIOError)+']'); + fdcRecalibrate(drive); + fdcMotorOff; + exit; + end; + + writeln(fdcErrorStr(fdcIOError),', ',fdcSpeedStr(fdcGetSpeed(drive)));{} + + { do not show it in test mode } + if not testMode then + begin + { check 1st sector for disk name } + fdcReadSector(drive,0,0,1,FDC_SECTOR_1024,9); + if fdcIOError <> FDC_OK then + begin + writeln('1st sector read error ['+fdcErrorStr(fdcIOError)+']'); + fdcRecalibrate(drive); + fdcMotorOff; + exit; + end; + + { get disk name } + d:=''; for i:=1 to 8 do if fdcBuf[i+2]<>32 then d:=d+chr(fdcBuf[i+2]); + if out_file_name = '_isdos.isd' then out_file_name:= hob2pc(d)+'.isd';; + write('Disk name: [',d,']'); + + out_file_name:= CheckEx(out_file_name); + writeln(' (',out_file_name,')'); + + if motorOffMethod then writeln('MotorOff method each 4,6,8 tries is enabled'); + + if showDump then + begin + { dump 1st sector } + fdcReadSector(drive,0,0,showDumpSector,FDC_SECTOR_1024,9); + writeln(SEP); + for i:= 0 to 15 do + begin + for track:= 0 to 15 do + begin + gotoxy((track+1)*3,wherey); write(dec2hex(strr(fdcBuf[1+i*16+track]))); + gotoxy(51+(track+1),wherey); + if fdcBuf[1+i*16+track]>31 then write(chr(fdcBuf[1+i*16+track])) else write('.'); + end; + writeln; + end; + + writeln(SEP); + writeln('ESC - cancel, any key - continue'); + + c:= readkey; + if c = #27 then + begin + writeln; + writeln('Canceled.'); + fdcRecalibrate(drive); + fdcMotorOff; + exit; + end; + end; + + writeln; + writeln('Dumping ',maxTrack+1,' tracks...'); + end + else + begin + writeln; + writeln('TEST [',startTrack,'..',maxTrack+1,'] TRACKS MODE'); + end; + + +{----------------------------------------------------------------------------} + if not testMode then + begin + { do not dump in test mode } + assign(ff, out_file_name); + rewrite(ff, 1); + end; + + + for track:= startTrack to maxTrack do + begin + fdcSeek(drive, track); + + for head:= 0 to 1 do + Begin + for i:=1 to 5*1024 do tmp[i]:= 0; { empty buffer by zero } + + for sector:= 1 to 5 do + begin + if keypressed then break; + + sc:= sector; + if sector = 5 then sc:= 9; + + write('Track:',track:2,' Head:',head:1,' Sector:',sc,' '); + + { mark sector as a bad sector } + for i:=1 to 1024 do tmp[(sector-1)*1024+i]:= ord('B'); + + for tries:= 1 to maxTries do + begin + if keypressed then break; + + fdcReadSector(drive+(head shl 2),track,head,sc,FDC_SECTOR_1024,9); + fdcIOErrorBackup:= fdcIOError; + + if fdcIOErrorBackup = FDC_OK then break; + + write('.'); + + if motorOffMethod then + begin + if tries in [4,6,8] then + begin + fdcMotorOff; + delay(100); + fdcMotorOn(drive); + continue; + end; + end; + + if track > 4 then fdcSeek(drive, track-4) else fdcSeek(drive, 0); + fdcSeek(drive,track); + end; + + if fdcIOErrorBackup = FDC_ERR_BAD_SECTOR then + write(fdcErrorStr(fdcIOErrorBackup)+' (saved) '+#13) + else + write(fdcErrorStr(fdcIOErrorBackup)+' '+#13); + + if fdcIOErrorBackup <> FDC_OK then writeln; + + { save buffer only if [OK] or [BAD_SECTOR] } + if fdcIOErrorBackup in [FDC_OK, FDC_ERR_BAD_SECTOR] then + for i:=1 to 1024 do tmp[(sector-1)*1024+i]:= fdcBuf[i]; + end; + + { do not dump in test mode } + if not testMode then + BlockWrite(ff, tmp, 5*1024); { dump full track } + End; + + if KeyPressed then + if ReadKey = #27 then + begin + writeln(#13#10'... break pressed'); + break; + end; + end; + + { do not dump in test mode } + if not testMode then + close(ff); + + fdcRecalibrate(drive); + fdcMotorOff; + + write(#13' '); + writeln(#13#10'Done.'#13#10); +end. diff --git a/LD-TRDOS.PAS b/LD-TRDOS.PAS new file mode 100644 index 0000000..e3ed364 --- /dev/null +++ b/LD-TRDOS.PAS @@ -0,0 +1,363 @@ +uses + dos, crt, + helpers, + fdc; + +const + SEP = '--------------------------------------------------------------------------'; + +var + tmp: TFDCBbuffer; + drive: byte; + i: integer; + startTrack, maxTrack: byte; + ff: file; + tries, track, head, sector: byte; + out_file_name, d: string; + fdcIOErrorBackup: byte; + HOBETA: boolean; + maxTries: byte; + testMode, motorOffMethod, showDump: boolean; + c: char; + showDumpSector: byte; + +{----------------------------------------------------------------------------} +function fdcGetSpeed(drv: byte): byte; +var + speed_id: byte; +begin + fdcGetSpeed:= 255; { speed unknown } + + for speed_id:= 0 to FDC_SPEED_COUNT do + begin + port[FDC_REG_DIR]:= speed_id; + + fdcReadSector(drv,0,0,9,FDC_SECTOR_256,16); { TRDOS specific } + if fdcIOError = FDC_OK then + begin + fdcGetSpeed:= speed_id; + exit; + end; + end; + + fdcIOError:= FDC_ERR_SECTOR_NOT_FOUND; +end; + +{----------------------------------------------------------------------------} +function GetMaxTrack(param: string): byte; +begin + GetMaxTrack:= 79; + + if param[3] = '1' then GetMaxTrack:= 80; + if param[3] = '2' then GetMaxTrack:= 81; + if param[3] = '3' then GetMaxTrack:= 82; + if param[3] = '4' then GetMaxTrack:= 83; + if param[3] = '5' then GetMaxTrack:= 84; + if param[3] = '6' then GetMaxTrack:= 85; { extra } + if param[3] = '7' then GetMaxTrack:= 86; { extra } + + if length(param) = 2 then GetMaxTrack:= 84; +end; + +{----------------------------------------------------------------------------} +function GetMaxTries(param: string): byte; +begin + GetMaxTries:= 3; + + if param[3] = '4' then GetMaxTries:= 4; + if param[3] = '5' then GetMaxTries:= 5; + if param[3] = '6' then GetMaxTries:= 6; + if param[3] = '7' then GetMaxTries:= 7; + if param[3] = '8' then GetMaxTries:= 8; + if param[3] = '9' then GetMaxTries:= 9; +end; + +{----------------------------------------------------------------------------} +begin + ClrScr; + + drive:= 0; + startTrack:= 0; + maxTrack:= 79; + out_file_name:= '_trdos.trd'; + HOBETA:= false; + maxTries:= 5; + testMode:= false; + motorOffMethod:= false; + showDump:= false; + showDumpSector:= 1; + +{----------------------------------------------------------------------------} + if ParamCount = 1 then + begin + d:= strlo(ParamStr(1)); + + { drive } + if d = 'a:' then drive:= 0; + if d = 'b:' then drive:= 1; + end; + + if ParamCount > 1 then + begin + d:= strlo(ParamStr(1)); + + { drive } + if d = 'a:' then drive:= 0; + if d = 'b:' then drive:= 1; + + d:= strlo(ParamStr(2)); + + { out file name} + if d[1] <> '/' then out_file_name:= d; + end; + + for i:= 1 to ParamCount do + begin + d:= strlo(ParamStr(i)); + if copy(d,1,2) = '/t' then + begin + testMode:= true; + startTrack:= 80; + maxTrack:= GetMaxTrack(d); + continue; + end; + if copy(d,1,2) = '/m' then + begin + maxTrack:= GetMaxTrack(d); + continue; + end; + if copy(d,1,2) = '/r' then + begin + maxTries:= GetMaxTries(d); + continue; + end; + if copy(d,1,2) = '/o' then + begin + motorOffMethod:= true; + continue; + end; + if copy(d,1,2) = '/d' then + begin + showDump:= true; + if (length(d) = 3) and (d[3] = '1') then showDumpSector:= 1; + if (length(d) = 3) and (d[3] = '2') then showDumpSector:= 2; + if (length(d) = 3) and (d[3] = '3') then showDumpSector:= 3; + if (length(d) = 3) and (d[3] = '4') then showDumpSector:= 4; + if (length(d) = 3) and (d[3] = '5') then showDumpSector:= 5; + if (length(d) = 3) and (d[3] = '6') then showDumpSector:= 6; + if (length(d) = 3) and (d[3] = '7') then showDumpSector:= 7; + if (length(d) = 3) and (d[3] = '8') then showDumpSector:= 8; + if (length(d) = 3) and (d[3] = '9') then showDumpSector:= 9; + continue; + end; + end; + +{----------------------------------------------------------------------------} + writeln('ZX Spectrum Navigator v1.15 Reading TR-DOS floppy disk'); + writeln('https://zxsn.ru, RomanRom2@gmail.com'); + writeln('Copyright (c) 1996-2026 RomanRom2'); + writeln(SEP); + + if strlo(ParamStr(1)) = '/h' then + begin + writeln('LD-TRDOS.EXE drive|key '); + writeln(' - key /dN try to show dump of track 0 head 0 sector N'); + writeln(' by default N=1, means /d is the same /d1'); + writeln(' - key /o enable MotorOff method each 4,6,8 tries'); + writeln(' - key /rN set max tries to read bad sector'); + writeln(' by default N=5'); + writeln(' - key /mN enable 8N tracks, N = 1..5 means 81-85 tracks'); + writeln(' /m is the same /m3 for 83'); + writeln('by default drive [A:], file name gets from disk name'); + writeln(SEP); + writeln('Examples:'); + writeln('LD-TRDOS.EXE /m5 - dump disk A: names as DiskName with max tracks'); + writeln('LD-TRDOS.EXE b: - dump disk B: names as DiskName'); + writeln('LD-TRDOS.EXE a: MYDSK - dump disk A: names as MYDSK'); + writeln('LD-TRDOS.EXE a: MYDSK /m2 - dump disk A: names as MYDSK with 82 tracks'); + writeln('LD-TRDOS.EXE a: /d9 - dump disk A: names as DiskName with dump sector 9'); + writeln('LD-TRDOS.EXE /d /r2 - dump disk A: names as DiskName with dump sector 1'); + writeln(' and 2 retries to read bad sectors'); + end + else + begin + writeln('LD-TRDOS.EXE /h - for help'); + end; + writeln(SEP); + + writeln; + if strlo(ParamStr(1)) = '/h' then exit; + +{----------------------------------------------------------------------------} + writeln('Drive ',chr(drive+65),': is initializing...'); + + fdcInit(drive, FDC_SECTOR_256); + if fdcIOError <> FDC_OK then + begin + writeln('FDC init error ['+fdcErrorStr(fdcIOError)+']'); + fdcMotorOff; + exit; + end; + + writeln(fdcErrorStr(fdcIOError),', ',fdcSpeedStr(fdcGetSpeed(drive))); + + { check hobeta style format (HEAD ID always = 0) } + fdcReadSector(drive+(1 shl 2),0,1,9,FDC_SECTOR_256,16); + if fdcIOError <> FDC_OK then + begin + writeln('HOBETA or real TR-DOS formatted'); + HOBETA:= true; + end; + + { do not show it in test mode } + if not testMode then + begin + { check 9th system sector for disk name } + fdcReadSector(drive,0,0,9,FDC_SECTOR_256,16); + if fdcIOError <> FDC_OK then + begin + writeln('9th sector read error ['+fdcErrorStr(fdcIOError)+']'); + fdcRecalibrate(drive); + fdcMotorOff; + exit; + end; + + { get disk name } + d:=''; for i:=1 to 8 do if fdcBuf[$F5+i]<>32 then d:=d+chr(fdcBuf[$F5+i]); + if out_file_name = '_trdos.trd' then out_file_name:= hob2pc(d)+'.trd';; + write('Disk name: [',d,']'); + + out_file_name:= CheckEx(out_file_name); + writeln(' (',out_file_name,')'); + + if motorOffMethod then writeln('Motor off method each 4,6,8 tries is enabled'); + + if showDump then + begin + { dump 1st sector } + fdcReadSector(drive,0,0,showDumpSector,FDC_SECTOR_256,16); + writeln(SEP); + for i:= 0 to 15 do + begin + for track:= 0 to 15 do + begin + gotoxy((track+1)*3,wherey); write(dec2hex(strr(fdcBuf[1+i*16+track]))); + gotoxy(51+(track+1),wherey); + if fdcBuf[1+i*16+track]>31 then write(chr(fdcBuf[1+i*16+track])) else write('.'); + end; + writeln; + end; + + writeln(SEP); + writeln('ESC - cancel, any key - continue'); + + c:= readkey; + if c = #27 then + begin + writeln; + writeln('Canceled.'); + fdcRecalibrate(drive); + fdcMotorOff; + exit; + end; + end; + + writeln; + writeln('Dumping ',maxTrack+1,' tracks...'); + end + else + begin + writeln; + writeln('TEST [',startTrack,'..',maxTrack+1,'] TRACKS MODE'); + end; + +{----------------------------------------------------------------------------} + if not testMode then + begin + { do not dump in test mode } + assign(ff, out_file_name); + rewrite(ff, 1); + end; + + for track:= startTrack to maxTrack do + begin + fdcSeek(drive, track); + + for head:= 0 to 1 do + Begin + for i:= 1 to 16*256 do tmp[i]:= 0; { empty buffer by zero} + + for sector:= 1 to 16 do + begin + if keypressed then break; + + write('Track:',track:2,' Head:',head:1,' Sector:',sector:2,' '); + + { mark sector as a bad sector } + for i:=1 to 256 do tmp[(sector-1)*256+i]:= ord('B'); + + for tries:= 1 to maxTries do + begin + if keypressed then break; + + i:= head; + if HOBETA then i:= 0; + + fdcReadSector(drive+(head shl 2),track,i,sector,FDC_SECTOR_256,16); + fdcIOErrorBackup:= fdcIOError; + + if fdcIOErrorBackup = FDC_OK then + break; + + write('.'); + + if motorOffMethod then + begin + if tries in [4,6,8] then + begin + fdcMotorOff; + delay(100); + fdcMotorOn(drive); + continue; + end; + end; + + if track > 4 then fdcSeek(drive, track-4) else fdcSeek(drive, 0); + fdcSeek(drive, track); + end; + + if fdcIOErrorBackup = FDC_ERR_BAD_SECTOR then + write(fdcErrorStr(fdcIOErrorBackup)+' (saved) '+#13) + else + write(fdcErrorStr(fdcIOErrorBackup)+' '+#13); + + if fdcIOErrorBackup <> FDC_OK then writeln; + + { save buffer only if [OK] or [BAD_SECTOR] } + if fdcIOErrorBackup in [FDC_OK, FDC_ERR_BAD_SECTOR] then + for i:=1 to 256 do tmp[(sector-1)*256+i]:= fdcBuf[i]; + end; + + { do not dump in test mode } + if not testMode then + BlockWrite(ff, tmp, 16*256); { dump full track } + End; + + if KeyPressed then + if ReadKey = #27 then + begin + writeln(#13#10'... break pressed'); + break; + end; + end; + + { do not dump in test mode } + if not testMode then + close(ff); + + fdcRecalibrate(drive); + fdcMotorOff; + + write(#13' '); + writeln(#13#10'Done.'#13#10); +end. diff --git a/docs/8272.txt b/docs/8272.txt new file mode 100644 index 0000000..9ffe92f --- /dev/null +++ b/docs/8272.txt @@ -0,0 +1,486 @@ + Š®­â஫«¥à ƒŒ„ i8272. ÉÍÍÍÍÍË» + ޝ¨á ­¨¥ à ¡®âë ª®­â஫«¥à  ¨ á¨áâ¥¬ë ª®¬ ­¤. ºi8272ºº + ÈÍÍÍÍÍʼ + „«ï ¤®áâ㯠 á® áâ®à®­ë ¯à®æ¥áá®à  ª®­â஫«¥à 8272 ¨¬¥¥â 2 ॣ¨áâà : +ॣ¨áâà á®áâ®ï­¨ï ¨ ॣ¨áâà ¤ ­­ëå. ¥£¨áâà á®áâ®ï­¨ï (Main Status Register) +ᮤ¥à¦¨â ¨­ä®à¬ æ¨î ® á®áâ®ï­¨¨ ª®­â஫«¥à  ¨ ¬®¦¥â ¡ëâì áç¨â ­ ¯à®æ¥áá®à®¬ ¢ +«î¡®¥ ¢à¥¬ï. —¥à¥§ ॣ¨áâà ¤ ­­ëå ª®­â஫«¥à  ®áãé¥á⢫ï¥âáï ¤®áâ㯠ª® ¢á¥¬ +¢­ãâ७­¨¬ ॣ¨áâà ¬ 8272, ¢ ­¥£® § ¯¨á뢠îâáï ª®¬ ­¤ë ¨ ®áãé¥á⢫ï¥âáï ®¡¬¥­ +¤ ­­ë¬¨ á ¤¨áª®¬. ¥£¨áâà á®áâ®ï­¨ï ¬®¦­® ⮫쪮 áç¨â뢠âì. „«ï ¢ë¡®à  ®¤­®£® +¨§ ¤¢ãå ॣ¨áâ஢ ¨á¯®«ì§ã¥âáï ¢ë¢®¤ €0 8272 (¢ë¢.5). ਠ€0=0  ¤à¥áã¥âáï +ॣ¨áâà á®áâ®ï­¨ï, ¯à¨ €0=1  ¤à¥áã¥âáï ॣ¨áâà ¤ ­­ëå. + + ”®à¬ â ॣ¨áâà  á®áâ®ï­¨ï: + ÉÍÍÍÍÍËÍÍÍÍÍËÍÍÍÍÍËÍÍÍÍÍËÍÍÍÍÍËÍÍÍÍÍËÍÍÍÍÍËÍÍÍÍÍ» + º RQM º DIO º NDM º CB º D3B º D2B º D1B º D0B º + ÌÍÍÍÍÍÎÍÍÍÍÍÎÍÍÍÍÍÎÍÍÍÍÍÎÍÍÍÍÍÎÍÍÍÍÍÎÍÍÍÍÍÎÍÍÍÍ͹ + º DB7 º DB6 º DB5 º DB4 º DB3 º DB2 º DB1 º DB0 º + ÈÍÍÍÍÍÊÍÍÍÍÍÊÍÍÍÍÍÊÍÍÍÍÍÊÍÍÍÍÍÊÍÍÍÍÍÊÍÍÍÍÍÊÍÍÍÍͼ + + ޝ¨á ­¨¥ à §à冷¢ ॣ¨áâà  á®áâ®ï­¨ï: + + RQM - Request For Master + ¨­ä®à¬¨àã¥â ¯à®æ¥áá®à ® £®â®¢­®á⨠ª ®¡¬¥­ã ¤ ­­ë¬¨ ¯® 設¥ ¤ ­­ëå. + RQM = 1 - ª®­â஫«¥à ª ®¡¬¥­ã £®â®¢. + DIO - Data Input/Output + ¨­ä®à¬¨àã¥â ¯à®æ¥áá®à ®¡ ®¦¨¤ ¥¬®¬ ­ ¯à ¢«¥­¨¨ ¯¥à¥á뫪¨ ¤ ­­ëå: + DIO = 1 - ­ ¯à ¢«¥­¨¥ ¯¥à¥á뫪¨ - ¢ ¯à®æ¥áá®à (Read), + DIO = 0 - ­ ¯à ¢«¥­¨¥ ¯¥à¥á뫪¨ - ¨§ ¯à®æ¥áá®à  (Write). + NDM - Non DMA Mode + ‚ ०¨¬¥ …-„ ¡¨â NDM = 0 ¯®ª §ë¢ ¥â, çâ® § ª®­ç¥­  ä §  ¨á¯®«­¥­¨ï + ª®¬ ­¤ë. + CB - FDC Busy + …᫨ ¡¨â CB = 1, íâ® ®§­ ç ¥â, çâ® ª®­â஫«¥à ¢ ¤ ­­ë© ¬®¬¥­â § ­ïâ - + ¢ë¯®«­ï¥âáï ®¯¥à æ¨ï ç⥭¨ï/§ ¯¨á¨. + DB3..DB0 - Drive n Busy + ⨠¡¨âë ¯®ª §ë¢ îâ á®áâ®ï­¨¥ ª ¦¤®£® ¨§ 4-å ­ ª®¯¨â¥«¥©. …᫨ + ᮤ¥à¦¨¬®¥ ¡¨â  = 1, §­ ç¨â ¤«ï ᮮ⢥âáâ¢ãî饣® ­ ª®¯¨â¥«ï ¢ + ­ áâ®ï饥 ¢à¥¬ï ¢ë¯®«­ï¥âáï ª®¬ ­¤  Seek. + + ޡ饥 ®¯¨á ­¨¥ ª®­â஫«¥à . + ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ + ‚ á¨á⥬㠪®¬ ­¤ ª®­â஫«¥à  8272 ¢å®¤¨â 15 ª®¬ ­¤. Š ¦¤ ï ª®¬ ­¤  +¨¤¥­â¨ä¨æ¨àã¥âáï ¬­®£®¡ ©â­®© ¯¥à¥á뫪®© ¯® 設¥ ¤ ­­ëå ¢ ॣ¨áâà ¤ ­­ëå +ª®­â஫«¥à . ¥§ã«ìâ â ¢ë¯®«­¥­¨ï ª®¬ ­¤ë â ª¦¥ ¬®¦¥â ¡ëâì ¬­®£®¡ ©â­ë¬. +Š ¦¤ãî ª®¬ ­¤ã 㤮¡­® ¯à¥¤áâ ¢«ïâì á®áâ®ï饩 ¨§ 3-å ä §: + * ” §  ¯à¨ª §  - ª®­â஫«¥à ¯à¨­¨¬ ¥â ®â ¯à®æ¥áá®à  ¯®á«¥¤®¢ â¥«ì­®áâì + ¡ ©â, ­¥®¡å®¤¨¬ëå ¤«ï ¢ë¯®«­¥­¨ï ª®¬ ­¤ë. + * ” §  ¨á¯®«­¥­¨ï - ª®­â஫«¥à ¢ë¯®«­ï¥â ¯¥à¥¤ ­­ãî ¥¬ã ª®¬ ­¤ã. + * ” §  १ã«ìâ â  - ¯à®æ¥áá®à áç¨â뢠¥â á®áâ®ï­¨¥ ª®­â஫«¥à  ¯®á«¥ + ¢ë¯®«­¥­¨ï ª®¬ ­¤ë ¨ ¤àã£ãî ¨­ä®à¬ æ¨î. + +   ä § å ¯à¨ª §  ¨ १ã«ìâ â  ¯¥à¥¤ ¯¥à¥¤ ç¥© ª ¦¤®£® ¡ ©â  ¨§/¢ ॣ¨áâà +¤ ­­ëå ª®­â஫«¥à , ¯à®æ¥áá®à ¤®«¦¥­ áç¨â뢠âì ᮤ¥à¦¨¬®¥ ॣ¨áâà  á®áâ®ï­¨ï +ª®­â஫«¥à . ¨âë RQM ¨ DIO ॣ¨áâà  á®áâ®ï­¨ï ¤®«¦­ë ¡ëâì ãáâ ­®¢«¥­ë ¢ 1 ¨ +0 ᮮ⢥âá⢥­­® ¯¥à¥¤ ⥬, ª ª ®ç¥à¥¤­®© ¡ ©â ¡ã¤¥â ¯¥à¥¤ ­ ¢ ª®­â஫«¥à. +Œ­®£¨¥ ª®¬ ­¤ë ïîâáï ¬­®£®¡ ©â®¢ë¬¨, ¯®í⮬㠤«ï ­¨å ­¥®¡å®¤¨¬® áç¨â뢠âì +¨ ¯à®¢¥àïâì ॣ¨áâà á®áâ®ï­¨ï ¯¥à¥¤ ¯¥à¥á뫪®© ª ¦¤®£® ¡ ©â  ¢ ª®­â஫«¥à.   +ä §¥ १ã«ìâ â  ¡¨âë RQM ¨ DIO ¤®«¦­ë ¡ëâì ãáâ ­®¢«¥­ë ¢ 1 ¯¥à¥¤ ç⥭¨¥¬ +ª ¦¤®£® ¡ ©â  ¨§ ª®­â஫«¥à . Žâ¬¥â¨¬, çâ® ç⥭¨¥ ॣ¨áâà  á®áâ®ï­¨ï ¯¥à¥¤ +¯¥à¥á뫪®© ª ¦¤®£® ¡ ©â  ­¥®¡å®¤¨¬® ⮫쪮 ­  ä § å ¯à¨ª §  ¨ १ã«ìâ â . +   ä §¥ ¨á¯®«­¥­¨ï ॣ¨áâà á®áâ®ï­¨ï áç¨â뢠âì ­¥ ­ã¦­®. …᫨ ª®­â஫«¥à +­ å®¤¨âáï ¢ ०¨¬¥ NON DMA (…-„), ¯®ï¢«¥­¨¥ ®ç¥à¥¤­®£® ¡ ©â  ¤ ­­ëå ¯à¨ +ç⥭¨¨ á ¤¨áª  ᮯ஢®¦¤ ¥âáï ¯®ï¢«¥­¨¥¬ ᨣ­ «  ¯à¥à뢠­¨ï INT=1. ਠ+¯®ï¢«¥­¨¨ ᨣ­ «  ç⥭¨ï (RD=0), ᨣ­ « ¯à¥à뢠­¨ï á¡à á뢠¥âáï ¨ ¤ ­­ë¥ +¢ë¤ îâáï ­  設㠤 ­­ëå.  ¯à¨¬¥à, ¥á«¨ ¯à®æ¥áá®à ­¥ ¬®¦¥â ®¡á«ã¦¨¢ âì +¯à¥à뢠­¨ï ¤®áâ â®ç­® ¡ëáâà® (ª ¦¤ë¥ 13 ¬ªá¥ª. ¯à¨ ¤¢®©­®© ¯«®â­®áâ¨), ®­ +¬®¦¥â ®¯à è¨¢ âì ॣ¨áâà á®áâ®ï­¨ï ¨ ¡¨â D7 (RQM) ᮮ⢥âáâ¢ã¥â ᨣ­ «ã +¯à¥à뢠­¨ï. ਠ¢ë¯®«­¥­¨¨ ª®¬ ­¤ë § ¯¨á¨  ­ «®£¨ç­® ᨣ­ « § ¯¨á¨ WR=0 +á¡à á뢠¥â ¯à¥à뢠­¨¥. + …᫨ ª®­â஫«¥à ­ å®¤¨âáï ¢ ०¨¬¥ DMA („), â® ¯à¥à뢠­¨¥ ­  ä §¥ +¨á¯®«­¥­¨ï ­¥ £¥­¥à¨àã¥âáï. Š®­â஫«¥à ¢ í⮬ á«ãç ¥ ¢ë¤ ¥â ᨣ­ « DRQ +(§ ¯à®á „) ª®£¤  ¯®ï¢«ï¥âáï ®ç¥à¥¤­®© ¡ ©â ¤ ­­ëå. Š®­â஫«¥à „ ®â¢¥ç ¥â +­  íâ®â § ¯à®á ᨣ­ «®¬ ¯®¤â¢¥à¦¤¥­¨ï „ DACK=0 ¨ RD=0. ਠ¯®ï¢«¥­¨¨ +ᨣ­ «  DACK á¡à á뢠¥âáï ᨣ­ « DRQ. ਠ¢ë¯®«­¥­¨¨ ®¯¥à æ¨¨ § ¯¨á¨ ¢¬¥áâ® +ᨣ­ «  RD £¥­¥à¨àã¥âáï ᨣ­ « WR=0. + ® ®ª®­ç ­¨¨ ä §ë ¨á¯®«­¥­¨ï (¯à¨ ¯®ï¢«¥­¨¨ ᨣ­ «  ’‘ - ª®­¥æ áç¥â ) +£¥­¥à¨àã¥âáï ¯à¥à뢠­¨¥, ®§­ ç î饥 ­ ç «® ä §ë १ã«ìâ â . ਠç⥭¨¨ +¯¥à¢®£® ¡ ©â  १ã«ìâ â  ᨣ­ « ¯à¥à뢠­¨ï á¡à á뢠¥âáï. + ¥®¡å®¤¨¬® ¯®¤ç¥àª­ãâì, çâ® ­  ä §¥ १ã«ìâ â  ¢á¥ ¡ ©âë, 㪠§ ­­ë¥ ¢ +â ¡«¨æ¥ ª®¬ ­¤, ¤®«¦­ë ¡ëâì áç¨â ­ë ¯à®æ¥áá®à®¬.  ¯à¨¬¥à, ª®¬ ­¤  ç⥭¨ï +¤ ­­ëå ¨¬¥¥â 7 ¡ ©â १ã«ìâ â  ¨ ¢á¥ 7 ¡ ©â ¤®«¦­ë ¡ëâì áç¨â ­ë ¢ ¯®à浪¥, +㪠§ ­­®¬ ¢ â ¡«¨æ¥ ª®¬ ­¤, ¤«ï ãᯥ譮£® § ¢¥à襭¨ï ®¯¥à æ¨¨. Š®­â஫«¥à ­¥ +¢®á¯à¨¬¥â á«¥¤ãîéãî ª®¬ ­¤ã ¤® â¥å ¯®à, ¯®ª  ­¥ ¡ã¤ãâ áç¨â ­ë ¢á¥ 7 ¡ ©â +१ã«ìâ â  ¯®á«¥ ¢ë¯®«­¥­¨ï ª®¬ ­¤ë ç⥭¨ï. + Š®­â஫«¥à 8272 ᮤ¥à¦¨â 5 ॣ¨áâ஢ á®áâ®ï­¨ï: £« ¢­ë© ॣ¨áâà +á®áâ®ï­¨ï (Main Status Register) ¨ ॣ¨áâàë ST0-ST3. ƒ« ¢­ë© ॣ¨áâà +á®áâ®ï­¨ï (¨«¨ ¯à®á⮠ॣ¨áâà á®áâ®ï­¨ï) ¬®¦¥â ¡ëâì áç¨â ­ ¯à®æ¥áá®à®¬ ¢ +«î¡®¥ ¢à¥¬ï. ¥£¨áâàë ST0-ST3 ¤®áâã¯­ë ¯à®æ¥áá®àã ⮫쪮 ­  ä §¥ १ã«ìâ â  ¨ +¬®£ãâ ¡ëâì áç¨â ­ë ¨¬ ¯®á«¥ § ¢¥à襭¨ï ­¥ª®â®à®© ª®¬ ­¤ë. Š®­ªà¥â­ ï ª®¬ ­¤  +®¯à¥¤¥«ï¥â, ᪮«ìª® ¨ ª ª¨¥ ॣ¨áâàë ¬®£ãâ ¨ ¤®«¦­ë ¡ëâì áç¨â ­ë. +  ©âë ¤ ­­ëå, § ¯¨á뢠¥¬ë¥ ¢ ª®­â஫«¥à ­  ä §¥ ¯à¨ª §  ¨ áç¨â뢠¥¬ë¥ ¨§ +­¥£® ­  ä §¥ १ã«ìâ â , ¤®«¦­ë á«¥¤®¢ âì ¢ ¯®à浪¥, 㪠§ ­­®¬ ¢ â ¡«¨æ¥ +ª®¬ ­¤. ˆ§¬¥­¥­¨¥ íâ¨å ¯®á«¥¤®¢ â¥«ì­®á⥩ ­¥ ¤®¯ã᪠¥âáï. ®á«¥ ¯®«ã祭¨ï +¯®á«¥¤­¥£® ¡ ©â  ª®¬ ­¤ë ª®­â஫«¥à  ¢â®¬ â¨ç¥áª¨ ­ ç¨­ ¥â ¢ë¯®«­ïâì ª®¬ ­¤ã, +¯¥à¥å®¤ï ª ä §¥ ¨á¯®«­¥­¨ï. ®á«¥ ⮣®, ª ª ­  ä §¥ १ã«ìâ â  áç¨â뢠¥âáï +¯®á«¥¤­¨© ¡ ©â, ª®­â஫«¥à áç¨â ¥â íâã ª®¬ ­¤ã § ¢¥à襭­®© ¨ £®â®¢ ª +®¡à ¡®âª¥ á«¥¤ãî饩 ª®¬ ­¤ë. Š®¬ ­¤  ¬®¦¥â ¡ëâì ¯à¥ªà é¥­  ⮫쪮 ¯®¤ ç¥© +ᨣ­ «  ª®­æ  áç¥â  ’‘=1. ⮠㤮¡­®¥ á।á⢮ ¤«ï "¯à¨¢«¥ç¥­¨ï ¢­¨¬ ­¨ï" +ª®­â஫«¥à  ¢ ªà¨â¨ç¥áª¨å á¨âã æ¨ïå. + ®á«¥ ¯¥à¥¤ ç¨ ¢ ª®­â஫«¥à ª®¬ ­¤ë Specify, è¨­ë ¢ë¡®à  ­ ª®¯¨â¥«ï +­ ç¨­ îâ  ¢â®¬ â¨ç¥áª¨ ᪠­¨à®¢ âìáï ¢ ¯à®¬¥¦ãâª å ¬¥¦¤ã ª®¬ ­¤ ¬¨ (  â ª¦¥ +¬¥¦¤ã ¨¬¯ã«ìá ¬¨ è £  ¢ ª®¬ ­¤¥ Seek). Š®­â஫«¥à ®¯à è¨¢ ¥â á®áâ®ï­¨¥ +ᨣ­ «  £®â®¢­®á⨠Ready ¢á¥å 4-å ­ ª®¯¨â¥«¥©. …᫨ ᨣ­ « Ready ¨§¬¥­ï¥â +᢮¥ á®áâ®ï­¨¥ (®¡ëç­® ¨§-§  ®âªàëâ¨ï ¤¢¥àª¨ ­ ª®¯¨â¥«ï), ª®­â஫«¥à +£¥­¥à¨àã¥â ¯à¥à뢠­¨¥. à®æ¥áá®à ¯¥à¥¤ ç¥© ª®¬ ­¤ë Sense Interrupt Status +áç¨â뢠¥â ᮤ¥à¦¨¬®¥ ॣ¨áâà  ST0 ¨ ¯® ¡¨âã NR (Not Ready) ॣ¨áâà  ST0 +®¯à¥¤¥«ï¥â á®áâ®ï­¨¥ ­ ª®¯¨â¥«ï. + + ޝ¨á ­¨¥ ª®¬ ­¤ 8272. + ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ +   ä §¥ ¯à¨ª §  ¯¥à¥¤ ¢¢®¤®¬ ª ¦¤®£® ¡ ©â  ¤®«¦¥­ ®¯à è¨¢ âìáï ॣ¨áâà +á®áâ®ï­¨ï 8272. ਠí⮬ ¡¨âë DIO (D6) ¨ RQM (D7) ¤®«¦­ë ¨¬¥âì §­ ç¥­¨ï 0 ¨ 1 +ᮮ⢥âá⢥­­® ¯¥à¥¤ § ¯¨áìî ª ¦¤®£® ¡ ©â  ª®¬ ­¤ë ¢ ª®­â஫«¥à.  ç «® ä §ë +¢ë¯®«­¥­¨ï ¢ë§ë¢ ¥â ãáâ ­®¢ªã íâ¨å ¡¨â®¢ ¢ 1 ¨ 0 ᮮ⢥âá⢥­­®. + + Read Data —⥭¨¥ ¤ ­­ëå + ÍÍÍÍÍÍÍÍÍ ÍÍÍÍÍÍÍÍÍÍÍÍÍ + „«ï § ¤ ­¨ï í⮩ ª®¬ ­¤ë ¢ ª®­â஫«¥à ¯¥à¥¤ ¥âáï ¯®á«¥¤®¢ â¥«ì­®áâì ¨§ 9 +¡ ©â (á¬. â ¡«¨æã ª®¬ ­¤). ®á«¥ ¯®«ã祭¨ï í⮩ ¯®á«¥¤®¢ â¥«ì­®á⨠ª®­â஫«¥à +¢ë¤ ¥â ᨣ­ « ¯®¤¢®¤  £®«®¢ª¨ ª ¯®¢¥àå­®á⨠¤¨áª  (¥á«¨ ®­  ®â¢¥¤¥­ ), +®âà ¡ â뢠¥â ¯ ã§ã ¤«ï ¯®¤¢®¤  £®«®¢ª¨ (§ ¤ ­­ãî ¢ ª®¬ ­¤¥ Specify) ¨ +­ ç¨­ ¥â ¯®¨áª  ¤à¥á­®© ¬¥âª¨ ᥪâ®à , ¯®á«¥ 祣® áç¨â뢠¥â ¯®«¥ +¨¤¥­â¨ä¨ª â®à  ᥪâ®à . Š®£¤  ⥪ã騩 ­®¬¥à ᥪâ®à  ("R"), åà ­ï騩áï ¢ +ॣ¨áâॠIDR ᮢ¯ ¤ ¥â á ­®¬¥à®¬ ᥪâ®à , áç¨â ­­®£® á ¤¨áª , ª®­â஫«¥à +­ ç¨­ ¥â ¢¢®¤¨âì ¤ ­­ë¥ ¨§ ¯®«ï ¤ ­­ëå ᥪâ®à  ¨ ¯®á«¥¤®¢ â¥«ì­®, ¡ ©â §  +¡ ©â®¬, ¢ë¤ ¢ âì ¨å ­  設㠤 ­­ëå. + ®á«¥ ®ª®­ç ­¨ï ç⥭¨ï ᥪâ®à  ª®­â஫«¥à ¨­ªà¥¬¥­â¨àã¥â ­  1 ­®¬¥à +ᥪâ®à  ¨ ­ ç¨­ ¥â áç¨â뢠âì ¤ ­­ë¥ ¨§ á«¥¤ãî饣® ᥪâ®à . ’ ª®© ®¡¬¥­ ­®á¨â +­ §¢ ­¨¥ ¬ã«ìâ¨á¥ªâ®à­®£®. ‚믮«­¥­¨¥ ª®¬ ­¤ë ¬®¦¥â ¡ëâì ¯à¥ªà é¥­® ¯®¤ ç¥© +ᨣ­ «  TC (Terminal Count - ª®­¥æ áç¥â ). ®á«¥ ¯à¨­ïâ¨ï ᨣ­ «  ’‘ +ª®­â஫«¥à ¯à¥ªà é ¥â ¯¥à¥¤ ç¨ ¯® 設¥ ¤ ­­ëå, ®¤­ ª® ¯à®¤®«¦ ¥â ç¨â âì +¤ ­­ë¥ ⥪ã饣® ᥪâ®à  ¢¯«®âì ¤® ¡ ©â®¢ CRC-ª®­â஫ï, ¯®á«¥ 祣® ®¯¥à æ¨ï +¯à¥ªà é ¥âáï. + Š®«¨ç¥á⢮ ¡ ©â, ¯®¤«¥¦ é¨å áç¨â뢠­¨î, § ¢¨á¨â ®â §­ ç¥­¨© ¡¨â®¢ MT, +MFM ¨ N, § ¤ ­­ëå ¢ ª®¬ ­¤¥. + ¨â Œ’ § ¤ ¥â ¬­®£®¤®à®¦¥ç­ë© (multitrack) ०¨¬ ª®­â஫«¥à , +¯®§¢®«ïî騩 ¥¬ã áç¨â뢠âì ¤ ­­ë¥ á ®¡¥¨å áâ®à®­ (¤®à®¦¥ª) ¤¨áª . ‚ í⮬ +á«ãç ¥ ¤«ï 㪠§ ­­®£® 樫¨­¤à  ¡ã¤ãâ ¯¥à¥¤ ­ë ¢á¥ ᥪâ®à , ­ ç¨­ ï á ᥪâ®à  +1 áâ®à®­ë 0 ¨ § ª ­ç¨¢ ï ¯®á«¥¤­¨¬ ᥪâ®à®¬ áâ®à®­ë 1. ‡ ¬¥â¨¬, çâ® íâ®â +०¨¬ ®â­®á¨âáï ⮫쪮 ª ®¤­®¬ã 樫¨­¤àã. + ‚ á«ãç ¥ N=0 §­ ç¥­¨¥ DTL ®¯à¥¤¥«ï¥â ª®«¨ç¥á⢮ ¤ ­­ëå, ª®â®àë¥ +ª®­â஫«¥à ¤®«¦¥­ âࠪ⮢ âì ª ª ®¤¨­ ᥪâ®à. …᫨ DTL ¬¥­ìè¥ ¨á⨭­®£® +à §¬¥à  ᥪâ®à , â® ¤ ­­ë¥ ¨§ ᥪâ®à  ¯®á«¥ ¯¥à¥¤ ç¨ DTL ¡ ©â ­¥ ¯¥à¥¤ îâáï +­  設㠤 ­­ëå. Š®­â஫«¥à ¦¥ áç¨â뢠¥â ᥪâ®à ¯®«­®áâìî, ¢¯«®âì ¤® ¡ ©â®¢ +CRCª®­âà®«ï ¨, ¥á«¨ íâ® § ¤ ­® ¢ ª®¬ ­¤¥, ¬®¦¥â ¯à®¤®«¦¨âì ¬ã«ìâ¨á¥ªâ®à­®¥ +ç⥭¨¥. …᫨ N > 0, â® §­ ç¥­¨¥ DTL ¨£­®à¨àã¥âáï ¨ ãáâ ­ ¢«¨¢ ¥âáï ¢ 0FFH. + ®á«¥ § ¢¥à襭¨ï ç⥭¨ï ª®­â஫«¥à ­¥ ®â¢®¤¨â £®«®¢ªã ­ ª®¯¨â¥«ï ®â +¯®¢¥àå­®á⨠¤¨áª  ¤® ¨áâ¥ç¥­¨ï ¨­â¥à¢ «  ¢à¥¬¥­¨, 㪠§ ­­®£® ¢ ª®¬ ­¤¥ +Specify. ®í⮬㠬¥¦¤ã ¤¢ã¬ï ¯®á«¥¤®¢ â¥«ì­ë¬¨ ç áâ묨 ®¡à é¥­¨ï¬¨ £®«®¢ª  +®áâ ¥âáï ¯à¨¦ â®© ª ¯®¢¥àå­®á⨠¤¨áª . + …᫨ ª®­â஫«¥à ¢â®à®© à § ®¡­ à㦨¢ ¥â ¨­¤¥ªá­ë© ¨¬¯ã«ìá, ­¥ ®¡­ à㦨¢ +¯à ¢¨«ì­®£® ­®¬¥à  ᥪâ®à  (§ ¤ ­­®£® R), ®­ ãáâ ­ ¢«¨¢ ¥â ä« £ ND (No Data) +¢ ॣ¨áâॠST1 ¨ § ª ­ç¨¢ ¥â ¢ë¯®«­¥­¨¥ ª®¬ ­¤ë (¢ ॣ¨áâॠST0 â ª¦¥ +ãáâ ­ ¢«¨¢ îâáï ¡¨âë D7 ¨ D6 ¢ 0 ¨ 1 ᮮ⢥âá⢥­­®). + ®á«¥ ç⥭¨ï ¯®«ï ¨¤¥­â¨ä¨ª â®à  ¨ ¯®«ï ¤ ­­ëå ª ¦¤®£® ᥪâ®à , +ª®­â஫«¥à ¯à®¨§¢®¤¨â CRC-ª®­â஫ì áç¨â ­­ëå ¡ ©â®¢. …᫨ ®¡­ à㦥­  ®è¨¡ª  +CRC ¢ ¯®«¥ ¨¤¥­â¨ä¨ª â®à  ᥪâ®à , ª®­â஫«¥à ãáâ ­ ¢«¨¢ ¥â ä« £ DE (Data +Error) ¢ ॣ¨áâॠST1, ¥á«¨ ¦¥ ®è¨¡ª  ®¡­ à㦥­  ¢ ¯®«¥ ¤ ­­ëå ᥪâ®à , +ª®­â஫«¥à ãáâ ­ ¢«¨¢ ¥â ä« £ DD (Data error in Data field) ¢ ॣ¨áâॠST1. ‚ +®¡®¨å á«ãç ïå ãáâ ­ ¢«¨¢ îâáï ¡¨âë D7 ¨ D6 ¢ ॣ¨áâॠST0 ¢ 0 ¨ 1 +ᮮ⢥âá⢥­­®, ¨ ¢ë¯®«­¥­¨¥ ª®¬ ­¤ë § ¢¥àè ¥âáï. + …᫨ ª®­â஫«¥à ¢áâà¥ç ¥â  ¤à¥á­ë© ¬ àª¥à 㤠«¥­­ëå ¤ ­­ëå ¨ ¥á«¨ ¡¨â SK +(Skip - ¡¨â D5 ¢ ª®¬ ­¤¥) ­¥ ãáâ ­®¢«¥­, â® ª®­â஫«¥à ãáâ ­ ¢«¨¢ ¥â ä« £ CM +(Control Mark) ¢ ॣ¨áâॠST2 ¨ § ª ­ç¨¢ ¥â ®¯¥à æ¨î ¯®á«¥ ç⥭¨ï ¢á¥å ¤ ­­ëå +ᥪâ®à . …᫨ ¦¥ ¡¨â SK=1, ª®­â஫«¥à ¯à®¯ã᪠¥â íâ®â ᥪâ®à ¨ ­ ç¨­ ¥â +áç¨â뢠âì á«¥¤ãî騩. + ‚® ¢à¥¬ï ¯¥à¥¤ ç¨ ¤ ­­ëå ¯à®æ¥áá®à ¤®«¦¥­ ®¡á«ã¦¨¢ âì ª®­â஫«¥à ­¥ ०¥ +1 à §  ¢ 27 ¬ªá¥ª. ¯à¨ ®¤¨­ à­®© ¯«®â­®á⨠¨ 13 ¬ªá¥ª. - ¯à¨ ¤¢®©­®©. ‚ +¯à®â¨¢­®¬ á«ãç ¥ ª®­â஫«¥à ãáâ ­ ¢«¨¢ ¥â ä« £ OR (Over Run) ¢ ॣ¨áâॠST1 ¨ +§ ª ­ç¨¢ ¥â ®¯¥à æ¨î. + ®á«¥ § ¢¥à襭¨ï ®¯¥à æ¨¨ ç⥭¨ï (íâ® â ª¦¥ ®â­®á¨âáï ¨ ª ª®¬ ­¤¥ § ¯¨á¨ +¤ ­­ëå) ¨­ä®à¬ æ¨ï, áç¨â뢠¥¬ ï ¨§ ª®­â஫«¥à  ­  ä §¥ १ã«ìâ â  (¡ ©âë +C-H-R-H) § ¢¨á¨â ®â §­ ç¥­¨ï ¡¨â®¢ Œ’ ¨ ¡ ©â  …Ž’ ª®¬ ­¤ë. + + + Write Data ‡ ¯¨áì ¤ ­­ëå + ÍÍÍÍÍÍÍÍÍÍ ÍÍÍÍÍÍÍÍÍÍÍÍÍ + „«ï § ¤ ­¨ï í⮩ ª®¬ ­¤ë ¢ ª®­â஫«¥à ¯¥à¥¤ ¥âáï ¯®á«¥¤®¢ â¥«ì­®áâì +¨§ 9 ¡ ©â (á¬. â ¡«¨æã ª®¬ ­¤). ®á«¥ ¯®«ã祭¨ï ¯®á«¥¤­¥£® ¡ ©â  ª®¬ ­¤ë +ª®­â஫«¥à ¢ë¤ ¥â ᨣ­ « ¯®¤¢®¤  £®«®¢ª¨ ª ¯®¢¥àå­®á⨠¤¨áª  (¥á«¨ ®­  ¡ë«  +®â¢¥¤¥­ ) ¨ ®âà ¡ â뢠¥â § ¤¥à¦ªã ¤«ï ¯®¤¢®¤  £®«®¢ª¨, § ¤ ­­ãî ¢ ª®¬ ­¤¥ +Specify ¨ ­ ç¨­ ¥â ¯®¨áª ¯®«ï ¨¤¥­â¨ä¨ª â®à  ᥪâ®à . …᫨ ⥪ã騩 ­®¬¥à +ᥪâ®à  ("R") åà ­ï騩áï ¢ ॣ¨áâॠIDR, ᮢ¯ ¤ ¥â á ­®¬¥à®¬ ᥪâ®à , +áç¨â ­­ë¬ á ¤¨áª  ¨§ ¯®«ï ¨¤¥­â¨ä¨ª â®à  ᥪâ®à , ª®­â஫«¥à ¯®á«¥¤®¢ â¥«ì­®, +¡ ©â §  ¡ ©â®¬, § ¯à è¨¢ ¥â ¤ ­­ë¥ ã ¯à®æ¥áá®à  ¯® 設¥ ¤ ­­ëå ¨ § ¯¨á뢠¥â +¨å ¢ ¯®«¥ ¤ ­­ëå ᥪâ®à  ­  ¤¨áª. ®á«¥ ®ª®­ç ­¨ï § ¯¨á¨ ¤ ­­ëå ⥪ã騩 ­®¬¥à +ᥪâ®à  㢥«¨ç¨¢ ¥âáï ­  1 ¨ ¯à®¨§¢®¤¨âáï § ¯¨áì á«¥¤ãî饣® ¯®«ï ¤ ­­ëå. +’ ªãî ¬ã«ìâ¨á¥ªâ®à­ãî ®¯¥à æ¨î § ¯¨á¨ ª®­â஫«¥à ¯à®¤®«¦ ¥â ¤® â¥å ¯®à, ¯®ª  +­¥ ¯®«ãç¨â ᨣ­ « ’‘ (ª®­¥æ áç¥â ). ਠ¯®áâ㯫¥­¨¨ ᨣ­ «  ’‘ ª®­â஫«¥à +¯à®¤®«¦ ¥â § ¯¨áì ¤ ­­ëå ¢ ⥪ã騩 ᥪâ®à ¤® ¥£® § ¯®«­¥­¨ï. …᫨ ª®­â஫«¥à +¯à¨­¨¬ ¥â ᨣ­ « ’‘ ¢ ¯à®æ¥áᥠ§ ¯¨á¨ ¤ ­­ëå, â® ®á⠢襥áï ¯®«¥ ¤ ­­ëå +§ ¯®«­ï¥âáï ­ã«ï¬¨. + Š®­â஫«¥à áç¨â뢠¥â ¨¤¥­â¨ä¨ª â®à ª ¦¤®£® ᥪâ®à  ¨ ¯à®¨§¢®¤¨â +CRC-ª®­â஫ì áç¨â ­­ëå ¡ ©â. …᫨ ®­ ®¡­ à㦨¢ ¥â ®è¨¡ªã CRC ¢ ®¤­®¬ ¨§ +ᥪâ®à®¢, ®­ ãáâ ­ ¢«¨¢ ¥â ä« £ DE (Data Error) ¢ ॣ¨áâॠST1 ¨ § ª ­ç¨¢ ¥â +®¯¥à æ¨î (¢ ॣ¨áâॠST0 ¡¨âë D7 ¨ D6 ãáâ ­ ¢«¨¢ îâáï ¢ 0 ¨ 1 +ᮮ⢥âá⢥­­®). + Š®¬ ­¤  § ¯¨á¨ ¢® ¬­®£®¬  ­ «®£¨ç­  ª®¬ ­¤¥ ç⥭¨ï ¤ ­­ëå. ¨¦¥ +¯¥à¥ç¨á«¥­ë ¢á¥ å à ªâ¥à¨á⨪¨,  ­ «®£¨ç­ë¥ ª®¬ ­¤¥ ç⥭¨ï ¤ ­­ëå: + * Š®«¨ç¥á⢮ ¯¥à¥¤ ¢ ¥¬ëå ¤ ­­ëå. + * ”« £ EN (ENd of cylinder). + * ”« £ ND (No Data). + *  ã§  ¤® ®â¢®¤  £®«®¢ª¨ HUT. + * ˆ­ä®à¬ æ¨ï, áç¨â뢠¥¬ ï ­  ä §¥ १ã«ìâ â , ¥á«¨ ¯à®æ¥áá®à ¯à¥à뢠¥â + ¢ë¯®«­¥­¨¥ ª®¬ ­¤ë. + * Ž¯à¥¤¥«¥­¨¥ DTL, ª®£¤  N=0 ¨«¨ N>0. + + ‚ ०¨¬¥ § ¯¨á¨ ¤ ­­ë¥ ®â ¯à®æ¥áá®à  ¨«¨ ª®­â஫«¥à  „ ¤®«¦­ë +¯à¨å®¤¨âì ­¥ ०¥ 1 à §  ¢ 31 ¬ªá¥ª. ¯à¨ ®¤¨­ à­®© ¯«®â­®á⨠¨ 15 ¬ªá¥ª. - +¯à¨ ¤¢®©­®©. ‚ ¯à®â¨¢­®¬ á«ãç ¥ ª®­â஫«¥à ãáâ ­ ¢«¨¢ ¥â ä« £ OR (Over Run) ¢ +ॣ¨áâॠST1 ¨ § ª ­ç¨¢ ¥â ®¯¥à æ¨î. + + Write Deleted Data ‡ ¯¨áì 㤠«¥­­ëå ¤ ­­ëå + ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ + Š®¬ ­¤   ­ «®£¨ç­  ª®¬ ­¤¥ Write Data §  ¨áª«î祭¨¥¬ ⮣®, çâ® ¢¬¥áâ® + ¤à¥á­®£® ¬ àª¥à  ¤ ­­ëå § ¯¨á뢠¥â  ¤à¥á­ë© ¬ àª¥à 㤠«¥­­ëå ¤ ­­ëå. + + Read Deleted Data —⥭¨¥ 㤠«¥­­ëå ¤ ­­ëå + ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ + Š®¬ ­¤   ­ «®£¨ç­  ª®¬ ­¤¥ Read Data §  ¨áª«î祭¨¥¬ á«ãç ï, ª®£¤  +ª®­â஫«¥à ®¡­ à㦨¢ ¥â  ¤à¥á­ë© ¬ àª¥à ¤ ­­ëå ¢ ­ ç «¥ ¯®«ï ¤ ­­ëå ᥪâ®à . +…᫨ ¡¨â SK=0, ª®­â஫«¥à áç¨â뢠¥â ¢á¥ ¤ ­­ë¥ ᥪâ®à , ãáâ ­ ¢«¨¢ ¥â ä« £ CM +¢ ॣ¨áâॠST2 ¨ § ª ­ç¨¢ ¥â ®¯¥à æ¨î. …᫨ ¡¨â SK=1, ª®­â஫«¥à ¯à®¯ã᪠¥â +íâ®â ᥪâ®à ¨ ¯¥à¥å®¤¨â ª ç⥭¨î á«¥¤ãî饣®. + + Read a Track —⥭¨¥ ¤®à®¦ª¨ + ÍÍÍÍÍÍÍÍÍÍÍÍ ÍÍÍÍÍÍÍÍÍÍÍÍÍÍ + Š®¬ ­¤  ¯®¤®¡­  ª®¬ ­¤¥ Read Data §  ¨áª«î祭¨¥¬ ⮣®, çâ® ¤ ­­ë¥ ¡ã¤ãâ +áç¨â뢠âìáï ­¥¯à¥à뢭® ¨§ ª ¦¤®£® ᥪâ®à  ¤®à®¦ª¨. ‘à §ã ¦¥ ¯®á«¥ ®¡­ à㦥­¨ï +¨­¤¥ªá­®£® ¨¬¯ã«ìá  ª®­â஫«¥à ­ ç¨­ ¥â áç¨â뢠âì ¢á¥ ¯®«ï ¤ ­­ëå ­  ¤®à®¦ª¥ +ª ª ­¥¯à¥àë¢­ë© ¡«®ª ¤ ­­ëå. …᫨ ª®­â஫«¥à ®¡­ à㦨¢ ¥â ®è¨¡ªã CRC ¢ ¯®«¥ +¨¤¥­â¨ä¨ª â®à  ¨«¨ ¤ ­­ëå, ®­ ¯à®¤®«¦ ¥â áç¨â뢠âì ¤ ­­ë¥ á ¤®à®¦ª¨. +Š®­â஫«¥à áà ¢­¨¢ ¥â ¨­ä®à¬ æ¨î ¨§ ¯®«ï ¨¤¥­â¨ä¨ª â®à , áç¨â ­­ãî ¨§ ª ¦¤®£® +ᥪâ®à , á® §­ ç¥­¨¥¬ ¢ IDR ¨ ãáâ ­ ¢«¨¢ ¥â ä« £ ND ¢ ॣ¨áâॠST1, ¥á«¨ ®­¨ +­¥ ᮢ¯ ¤ îâ. ¨âë Œ’ ¨ SK ­¥ ®ª §ë¢ îâ ¢«¨ï­¨ï ­  ª®­â஫«¥à. + ‚믮«­¥­¨¥ ª®¬ ­¤ë § ª ­ç¨¢ ¥âáï, ª®£¤  ª®­â஫«¥à áç¨â ¥â …Ž’ ᥪâ®à®¢. +…᫨ ª®­â஫«¥à ­¥ ­ è¥«  ¤à¥á­®£® ¬ àª¥à  ¯®«ï ¨¤¥­â¨ä¨ª â®à  ¤® ⮣®, ª ª +¢â®à®© à § ¯à¨­ï« ¨­¤¥ªá­ë© ¨¬¯ã«ìá, ®­ ãáâ ­ ¢«¨¢ ¥â ä« £ Œ€ (Missing +Address Mark) ¢ ॣ¨áâॠST1 ¨ § ª ­ç¨¢ ¥â ®¯¥à æ¨î (¢ ॣ¨áâॠST0 +ãáâ ­ ¢«¨¢ îâáï ¡¨âë D7 ¨ D6 ¢ 0 ¨ 1 ᮮ⢥âá⢥­­®). + + Read ID —⥭¨¥ ¨¤¥­â¨ä¨ª â®à  + ÍÍÍÍÍÍÍ ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ + â  ª®¬ ­¤  ¨á¯®«ì§ã¥âáï ¤«ï ®¯à¥¤¥«¥­¨ï ⥪ã饣® ¯®«®¦¥­¨ï £®«®¢ª¨ +§ ¯¨á¨/ç⥭¨ï ­ ª®¯¨â¥«ï. Š®­â஫«¥à § ¯®¬¨­ ¥â ¨­ä®à¬ æ¨î, áç¨â ­­ãî ¨§ +¯¥à¢®£® ¢áâà¥ç¥­­®£® ¯®«ï ¨¤¥­â¨ä¨ª â®à  ᥪâ®à . …᫨ ¤® ¯à¨å®¤  ¢â®à®£® +¨­¤¥ªá­®£® ¨¬¯ã«ìá  ª®­â஫«¥à ­¥ ¢áâà¥â¨«  ¤à¥á­®£® ¬ àª¥à  ¯®«ï +¨¤¥­â¨ä¨ª â®à , ®­ ãáâ ­ ¢«¨¢ ¥â ä« £ Œ€ ¢ ॣ¨áâॠST1. …᫨ ¦¥ ª®­â஫«¥à +­¥ ­ è¥« ¤ ­­ëå, â® ®­ ãáâ ­ ¢«¨¢ ¥â ä« £ ND ¢ ॣ¨áâॠST1 ¨ ®¯¥à æ¨ï +§ ª ­ç¨¢ ¥âáï. + + Format a Track ”®à¬ â¨à®¢ ­¨¥ ¤®à®¦ª¨ + ÍÍÍÍÍÍÍÍÍÍÍÍÍÍ ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ + Š®¬ ­¤  ä®à¬ â¨àã¥â ¢áî ¤®à®¦ªã. ®á«¥ ®¡­ à㦥­¨ï ¨­¤¥ªá­®£® ¨¬¯ã«ìá  +­  ¤¨áª § ¯¨á뢠îâáï á«¥¤ãî騥 ¤ ­­ë¥: GAPS,  ¤à¥á­ë© ¬ àª¥à, ¯®«¥ +¨¤¥­â¨ä¨ª â®à  ¨ ¯®«¥ ¤ ­­ëå, ᮮ⢥âáâ¢ãî騥 áâ ­¤ àâã IBM System 34 +(®¤¨­ à­ ï ¯«®â­®áâì) ¨ IBM System 3740 (¤¢®©­ ï ¯«®â­®áâì). + ”®à¬ â § ¤ ¥âáï ¢ ª®¬ ­¤¥ á«¥¤ãî騬¨ ¯à®£à ¬¬¨à㥬묨 §­ ç¥­¨ï¬¨: + * N - ç¨á«® ¡ ©â ¢ ᥪâ®à¥. + * SC - ç¨á«® ᥪâ®à®¢ ­  樫¨­¤à¥. + * GPL - ¤«¨­  ¬¥¦á¥ªâ®à­®£® ¯à®¬¥¦ã⪠. + * D - ¡ ©â ¤«ï § ¯®«­¥­¨ï ®¡« á⨠¤ ­­ëå. +⨠¯ à ¬¥âàë ¯¥à¥¤ îâáï ¢ ª®­â஫«¥à ¯à®æ¥áá®à®¬ ­  ä §¥ ¯à¨ª § . ®«¥ +¤ ­­ëå ª ¦¤®£® ᥪâ®à  ¡ã¤¥â § ¯®«­¥­® ¡ ©â ¬¨ D. ®«¥ ¨¤¥­â¨ä¨ª â®à  ¤«ï +ª ¦¤®£® ᥪâ®à  § ¤ ¥âáï ¯à®æ¥áá®à®¬ ­  ä §¥ ¨á¯®«­¥­¨ï. ¥®¡å®¤¨¬ë ¯® 4 +§­ ç¥­¨ï ¤«ï ª ¦¤®£® ᥪâ®à : + * C - ­®¬¥à 樫¨­¤à  + * H - ­®¬¥à £®«®¢ª¨ (¯®¢¥àå­®áâ¨) + * R - ­®¬¥à ᥪâ®à  + * N - ª®¤ ¤«¨­ë ᥪâ®à  +â® §­ ç¨â, çâ® ¤¨áª ¯à¨ ­¥®¡å®¤¨¬®áâ¨, ¬®¦¥â ¡ëâì ®âä®à¬ â¨à®¢ ­ ­¥ +¯®á«¥¤®¢ â¥«ì­ë¬¨ ­®¬¥à ¬¨ ᥪâ®à®¢. + ®á«¥ ä®à¬ â¨à®¢ ­¨ï ª ¦¤®£® ᥪâ®à  ¯à®æ¥áá®à ¤®«¦¥­ ¯¥à¥¤ âì ­®¢ë¥ +§­ ç¥­¨ï C,H,R,N ¤«ï ª ¦¤®£® ᥪâ®à  ­  ¤®à®¦ª¥. ‘®¤¥à¦¨¬®¥ ॣ¨áâà  R +㢥«¨ç¨¢ ¥âáï ­  1 ¯®á«¥ ä®à¬ â¨à®¢ ­¨ï ª ¦¤®£® ᥪâ®à , ¨, á«¥¤®¢ â¥«ì­®, +íâ®â ॣ¨áâà ¡ã¤¥â ᮤ¥à¦ âì §­ ç¥­¨¥ R+1 ¯à¨ áç¨â뢠­¨¨ ­  ä §¥ १ã«ìâ â . +â®â ¯à®æ¥áá ¡ã¤¥â ¯à®¤®«¦ âìáï ¤«ï ¢á¥© ¤®à®¦ª¨, ¯®ª  ¢â®à®© à § ­¥ ¡ã¤¥â +®¡­ à㦥­ ¨­¤¥ªá­ë© ¨¬¯ã«ìá. ®á«¥ í⮣® ¢ë¯®«­¥­¨¥ ª®¬ ­¤ë § ¢¥àè ¥âáï. …᫨ +¯à¨ § ¯¨á¨ ®â ­ ª®¯¨â¥«ï ¯à¨­¨¬ ¥âáï ᨣ­ « Fault, ª®­â஫«¥à ãáâ ­ ¢«¨¢ ¥â +ä« £ …‘ ¢ ॣ¨áâॠST0 ¨ § ª ­ç¨¢ ¥â ®¯¥à æ¨î (¡¨âë D7 ¨ D6 ¢ ॣ¨áâॠST0 +ãáâ ­ ¢«¨¢ îâáï ¢ 0 ¨ 1 ᮮ⢥âá⢥­­®). Žâáãâá⢨¥ ᨣ­ «  Ready á +­ ª®¯¨â¥«ï ¢ ­ ç «¥ ä §ë ¨á¯®«­¥­¨ï â ª¦¥ ¯à¥ªà é ¥â ¢ë¯®«­¥­¨¥ ª®¬ ­¤ë. + ‚ â ¡«¨æ¥ ¯à¨¢¥¤¥­ë ᮮ⭮襭¨ï ¬¥¦¤ã N, SC, GPL ¤«ï à §«¨ç­ëå à §¬¥à®¢ +ᥪâ®à®¢. + ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ» + º SD - (MFM = 0) º DD (MFM = 1) º + ÉÍÍÍÍÍÍËÍÍÍÍÎÍÍÍÍÍÍËÍÍÍÍÍÍËÍÍÍÍÍÍÎÍÍÍÍÍÍËÍÍÍÍÍÍËÍÍÍÍÍ͹ + º‘¥ªâ®àº N º SC º GPL1 º GPL2 º SC º GPL1 º GPL2 º + ÌÍÍÍÍÍÍÎÍÍÍÍÎÍÍÍÍÍÍÎÍÍÍÍÍÍÎÍÍÍÍÍÍÎÍÍÍÍÍÍÎÍÍÍÍÍÍÎÍÍÍÍÍ͹ + º 128 º 0 º 1A º 07 º 1B º -- º -- º -- º + º 256 º 1 º 0F º 0E º 2A º 1A º 0E º 36 º + º 512 º 2 º 08 º 1B º 3A º 0F º 1B º 54 º + º 1024 º 3 º 04 º 47 º 8A º 08 º 3F º 74 º + º 2048 º 4 º 02 º C8 º FF º 04 º 99 º FF º + º 4096 º 5 º 01 º C8 º FF º 02 º C8 º FF º + º 8192 º 6 º -- º -- º -- º 01 º C8 º FF º + ÈÍÍÍÍÍÍÊÍÍÍÍÊÍÍÍÍÍÍÊÍÍÍÍÍÍÊÍÍÍÍÍÍÊÍÍÍÍÍÍÊÍÍÍÍÍÍÊÍÍÍÍÍͼ + + + Scan Commands Š®¬ ­¤ë ᪠­¨à®¢ ­¨ï + ÍÍÍÍÍÍÍÍÍÍÍÍÍ ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ + Š®¬ ­¤ë ᪠­¨à®¢ ­¨ï ¯®§¢®«ïîâ áç¨â ­­ë¥ á ¤¨áª  ¤ ­­ë¥ áà ¢­¨âì á +¤ ­­ë¬¨, ¢ë¤ ¢ ¥¬ë¥ ¯à®æ¥áá®à®¬ (ª®­â஫«¥à®¬ „). Š®­â஫«¥à áà ¢­¨¢ ¥â +¤ ­­ë¥ ¯®á«¥¤®¢ â¥«ì­®, ¡ ©â §  ¡ ©â®¬ ¨ ¯à®¢¥àï¥â ãá«®¢¨ï: + DD = DP DD <= DP DD >= DP +£¤¥ DD - ¤ ­­ë¥ á ¤¨áª ; DP - ¤ ­­ë¥ ®â ¯à®æ¥áá®à . + ®á«¥ ¯à®¢¥àª¨ ¢á¥£® ᥪâ®à , ¥á«¨ ãá«®¢¨¥ ­¥ ¢ë¯®«­ï¥âáï, ¯à®¨§¢®¤¨âáï +¨­ªà¥¬¥­â ­®¬¥à  ᥪâ®à  (R + STR -> R) ¨ ®¯¥à æ¨ï ᪠­¨à®¢ ­¨ï ¯à®¤®«¦ ¥âáï. +ޝ¥à æ¨ï ¡ã¤¥â ¯à®¤®«¦ âìáï ¤® â¥å ¯®à, ¯®ª  ­¥ ¯à®¨§®©¤¥â ®¤­® ¨§ á«¥¤ãîé¨å +ãá«®¢¨©: + * ¢ë¯®«­¨âáï ãá«®¢¨¥ ᪠­¨à®¢ ­¨ï (à ¢­®, ¡®«ìè¥ ¨«¨ ¬¥­ìè¥) + * ¤®á⨣­ãâ ¯®á«¥¤­¨© ᥪâ®à (…Ž’) + * ¯à¨­ïâ ᨣ­ « ’‘ +…᫨ ãá«®¢¨¥ ᪠­¨à®¢ ­¨ï 㤮¢«¥â¢®à¥­®, ª®­â஫«¥à ãáâ ­ ¢«¨¢ ¥â ä« £ SH +(Scan Hit) ¢ ॣ¨áâॠST2 ¨ § ¢¥à蠥⠪®¬ ­¤ã. …᫨ ãá«®¢¨¥ ­¥ 㤮¢«¥â¢®à¥­® +¢ ¯à®¬¥¦ã⪥ ¬¥¦¤ã ­ ç «ì­ë¬ ᥪâ®à®¬ (§ ¤ ­­ë¬ R) ¨ ¯®á«¥¤­¨¬ ᥪâ®à®¬ +樫¨­¤à  (…Ž’), ª®­â஫«¥à ãáâ ­ ¢«¨¢ ¥â ä« £ SN (Scan Not Satisfied) ¢ +ॣ¨áâॠST2 ¨ § ¢¥à蠥⠪®¬ ­¤ã. + …᫨ ¢® ¢à¥¬ï ®¯¥à æ¨¨ ¯®áâ㯨« ᨣ­ « ’‘ ®â ¯à®æ¥áá®à  ¨«¨ ª®­â஫«¥à  +„, ª®­â஫«¥à ¯à¥ªà é ¥â áà ¢­¥­¨¥ ­  ⥪ã饬 ¡ ©â¥ ¨ § ¢¥à蠥⠪®¬ ­¤ã. + ¨¦¥ ¢ â ¡«¨æ¥ ¯à¨¢¥¤¥­ë á®áâ®ï­¨ï ¡¨â®¢ SH ¨ SN ¯®á«¥ à §«¨ç­ëå ãá«®¢¨© +᪠­¨à®¢ ­¨ï: + ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÍÍÍÍ» + º º¥£.ST2º º + º ‘ª ­¨à®¢ ­¨¥ ¤®.. ÌÍÍÍËÍÍ͹ ਬeç ­¨¥º + º º SNº SHº º + ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÎÍÍÍÎÍÍÍÎÍÍÍÍÍÍÍÍÍÍ͹ + º  ¢­® º 0 º 1 º DD = DP º + º º 1 º 0 º DD <>DP º + ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÎÍÍÍÎÍÍÍÎÍÍÍÍÍÍÍÍÍÍ͹ + º Œ¥­ìè¥ ¨«¨ à ¢­® º 0 º 1 º DD = DP º + º º 0 º 0 º DD < DP º + º º 1 º 0 º DD > DP º + ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÎÍÍÍÎÍÍÍÎÍÍÍÍÍÍÍÍÍÍ͹ + º ®«ìè¥ ¨«¨ à ¢­® º 0 º 1 º DD = DP º + º º 0 º 0 º DD > DP º + º º 1 º 0 º DD < DP º + ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÊÍÍÍÊÍÍÍÍÍÍÍÍÍÍͼ + + + …᫨ ª®­â஫«¥à ®¡­ à㦨¢ ¥â  ¤à¥á­ë© ¬ àª¥à 㤠«¥­­ëå ¤ ­­ëå ¢ ®¤­®¬ ¨§ +ᥪâ®à®¢ ¨ ¡¨â SK=0, ®­ áç¨â ¥â íâ®â ᥪâ®à ¯®á«¥¤­¨¬ ᥪâ®à®¬ 樫¨­¤à , +ãáâ ­ ¢«¨¢ ¥â ä« £ CM (Control Mark) ¢ ॣ¨áâॠST2 ¨ § ¢¥à蠥⠪®¬ ­¤ã. …᫨ +¦¥ ¡¨â SK=1, ª®­â஫«¥à ¯à®¯ã᪠¥â íâ®â ᥪâ®à ¨ áç¨â뢠¥â á«¥¤ãî騩. ‚ í⮬ +á«ãç ¥ ª®­â஫«¥à ãáâ ­ ¢«¨¢ ¥â ä« £ CM ¢ ॣ¨áâॠST2, ᨣ­ «¨§¨àãî騩 ® +⮬, çâ® ¡ë« ¢áâà¥ç¥­ 㤠«¥­­ë© ᥪâ®à. + Š®£¤  ¢ë ¯à®£à ¬¬¨àã¥â¥ §­ ç¥­¨ï STP (STP=01 ¤«ï ®¡à ¡®âª¨ +¯®á«¥¤®¢ â¥«ì­ëå ᥪâ®à®¢, STP=02 ¤«ï ç⥭¨ï ç¥à¥§ ®¤¨­ ᥪâ®à) ¨«¨ Œ’ +(Multitrack), ­¥®¡å®¤¨¬® ¯®¬­¨âì, çâ® ¯®á«¥¤­¨© ᥪâ®à ­  ¤®à®¦ª¥ ¤®«¦¥­ ¡ëâì +áç¨â ­.  ¯à¨¬¥à, ¥á«¨ STP = 02, Œ’ = 0, ᥪâ®à  ¯à®­ã¬¥à®¢ ­ë +¯®á«¥¤®¢ â¥«ì­® ®â 1 ¤® 26, ª®¬ ­¤ã Scan ­ ç¨­ ¥¬ á ᥪâ®à  21, â® ãᯥ譮 +¡ã¤ãâ ®¡à ¡®â ­ë ᥪâ®à  21, 23 ¨ 25. „ «¥¥ ᥪâ®à 26 ¡ã¤¥â ¯à®¯ã饭,   § â¥¬ +¯à¨¤¥â ¨­¤¥ªá­ë© ¨¬¯ã«ìá. â® ¢ë§®¢¥â ­¥­®à¬ «ì­®¥ § ¢¥à襭¨¥ ®¯¥à æ¨¨. …᫨ +¡ë …Ž’ à ¢­ï«®áì 25,   ᪠­¨à®¢ ­¨¥ ¡ë ­ ç¨­ «®áì á ᥪâ®à  20, â® ®¯¥à æ¨ï +Scan § ¢¥à訫 áì ¡ë ãᯥ譮. + €­ «®£¨ç­® ª®¬ ­¤ ¬ ç⥭¨ï/§ ¯¨á¨, ¯à®æ¥áá®à ¨«¨ ª®­â஫«¥à „ ¤®«¦¥­ +®¡á«ã¦¨¢ âì ª®­â஫«¥à ª ¦¤ë¥ 27 ¬ªá¥ª. ¯à¨ ®¤¨­ à­®© ¯«®â­®á⨠¨ 13 ¬ªá¥ª. +¯à¨ ¤¢®©­®©. ‚ ¯à®â¨¢­®¬ á«ãç ¥ ª®­â஫«¥à ¢ëáâ ¢¨â ä« £ OR (Over Run) ¢ +ॣ¨áâॠST1 ¨ ¯à¥ªà â¨â ¢ë¯®«­¥­¨¥ ª®¬ ­¤ë. + + + Seek Š®¬ ­¤  ¯®§¨æ¨®­¨à®¢ ­¨ï + ÍÍÍÍ ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ + ƒ®«®¢ª  § ¯¨á¨/ç⥭¨ï ­ ª®¯¨â¥«ï ¯¥à¥¬¥é ¥âáï á æ¨«¨­¤à  ­  樫¨­¤à ¯® +ª®¬ ­¤¥ Seek. Š®­â஫«¥à áà ¢­¨¢ ¥â ᮤ¥à¦¨¬®¥ ॣ¨áâà  PCN (Present Cylinder +Number), ª®â®àë© åà ­¨â ⥪ã饥 ¯®«®¦¥­¨¥ £®«®¢ª¨ ¨ ᮤ¥à¦¨¬®¥ NCN (New +Cylinder Number) - ­®¢®¥ ¯®«®¦¥­¨¥ £®«®¢ª¨, § ¤ ­­®¥ ¢ ª®¬ ­¤¥ ¨ ¢ +§ ¢¨á¨¬®á⨠®â १ã«ìâ â  áà ¢­¥­¨ï ¢ë¯®«­ï¥â á«¥¤ãî騥 ¤¥©á⢨ï: + * PCN < NCN - ᨣ­ « ­ ¯à ¢«¥­¨ï ¤«ï ­ ª®¯¨â¥«ï ãáâ ­ ¢«¨¢ ¥âáï ¢ "1" ¨ + ¢ë¤ ¥âáï ¨¬¯ã«ìá è £ . + * PCN > NCN - ᨣ­ « ­ ¯à ¢«¥­¨ï ¤«ï ­ ª®¯¨â¥«ï ãáâ ­ ¢«¨¢ ¥âáï ¢ "0" ¨ + ¢ë¤ ¥âáï ¨¬¯ã«ìá è £ . + + ‘ª®à®áâì ¢ë¤ ç¨ ¨¬¯ã«ìᮢ è £  § ¤ ¥âáï ¢ ª®¬ ­¤¥ Specify §­ ç¥­¨¥¬ SRT +(Stepping Rate Time). ®á«¥ ª ¦¤®£® ¨¬¯ã«ìá  è £  ¢­®¢ì áà ¢­¨¢ îâáï §­ ç¥­¨ï +PCN ¨ NCN ¨ ª®£¤  PCN = NCN, ª®­â஫«¥à ãáâ ­ ¢«¨¢ ¥â ä« £ SE (Seek End) ¢ +ॣ¨áâॠST0 ¨ § ¢¥à蠥⠢믮«­¥­¨¥ ª®¬ ­¤ë. +   ä §¥ ¯à¨ª §  ª®­â஫«¥à ­ å®¤¨âáï ¢ á®áâ®ï­¨¨ FDC Busy (§ ­ïâ), +®¤­ ª® ­  ä §¥ ¨á¯®«­¥­¨ï ª®­â஫«¥à ¯¥à¥å®¤¨â ¢ á®áâ®ï­¨¥ NON Busy (­¥ +§ ­ïâ). Š®£¤  ª®­â஫«¥à ­ å®¤¨âáï ¢ á®áâ®ï­¨¨ NON Busy, ¥¬ã ¬®¦­® § ¤ âì +¤à㣨¥ ®¯¥à æ¨¨ Seek ¨ ¢ í⮬ á«ãç ¥ ª®¬ ­¤  ¯®§¨æ¨®­¨à®¢ ­¨ï ¡ã¤¥â +¢ë¯®«­ïâìáï ®¤­®¢à¥¬¥­­® ¤«ï ­¥áª®«ìª¨å (¤® 4-å) ­ ª®¯¨â¥«¥©. + …᫨ ¯¥à¥¤ ­ ç «®¬ ä §ë ¨á¯®«­¥­¨ï ¨«¨ ¢® ¢à¥¬ï ¨á¯®«­¥­¨ï ª®¬ ­¤ë Seek +­ ª®¯¨â¥«ì ­ å®¤¨âáï ¢ á®áâ®ï­¨¨ Not Ready (­¥ £®â®¢), ª®­â஫«¥à +ãáâ ­ ¢«¨¢ ¥â ä« £ NR (Not Ready) ¢ ॣ¨áâॠST0 ¨ ª®¬ ­¤  § ¢¥àè ¥âáï. + + Recalibrate ¥ª «¨¡à®¢ª  (®âª â) + ÍÍÍÍÍÍÍÍÍÍÍ ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ + Š®¬ ­¤  ¯¥à¥ãáâ ­ ¢«¨¢ ¥â £®«®¢ªã ç⥭¨ï/§ ¯¨á¨ ­ ª®¯¨â¥«ï ­  +¤®à®¦ªã 0.  ª®¯¨â¥«ì ¢ í⮬ á«ãç ¥ ¤®«¦¥­ ¢ë¤ âì ᨣ­ « TR00. Š®­â஫«¥à +á¡à á뢠¥â ᮤ¥à¦¨¬®¥ ॣ¨áâà  PCN ¨ ¯à®¢¥àï¥â ᨣ­ « TR00 á ­ ª®¯¨â¥«ï. ®ª  +íâ®â ᨣ­ « ¨¬¥¥â ­¨§ª¨© ã஢¥­ì, ª®­â஫«¥à ãáâ ­ ¢«¨¢ ¥â ¢ "1" ᨣ­ « +­ ¯à ¢«¥­¨ï Dir ¨ ¢ë¤ ¥â ¨¬¯ã«ìáë è £  ­  ­ ª®¯¨â¥«ì. Š®£¤  ᨣ­ « TR00 +áâ ­®¢¨âáï ¢ë᮪¨¬, ª®­â஫«¥à ãáâ ­ ¢«¨¢ ¥â ä« £ SE (Seek End) ¢ ॣ¨áâॠ+ST0 ¨ § ¢¥à蠥⠪®¬ ­¤ã. …᫨ ¯®á«¥ ¢ë¤ ç¨ 77 ¨¬¯ã«ìᮢ è £  á®áâ®ï­¨¥ +ᨣ­ «  ­¥ ¨§¬¥­¨«®áì, ª®­â஫«¥à ãáâ ­ ¢«¨¢ ¥â ä« £¨ SE (Seek End) ¨ EC +(Equipment Check) ¢ ॣ¨áâà ST0 ¨ ª®¬ ­¤  § ¢¥àè ¥âáï. Š®¬ ­¤  ¬®¦¥â +¯à®¨§¢®¤¨âì ४ «¨¡à®¢ªã ®¤­®¢à¥¬¥­­® ¢á¥å 4-å ­ ª®¯¨â¥«¥©. ¥ ªæ¨ï ­  +¨á祧­®¢¥­¨¥ ᨣ­ «  Ready á ­ ª®¯¨â¥«ï  ­ «®£¨ç­  ॠªæ¨¨ ¢ ª®¬ ­¤¥ Seek. + + Sense Interrupt Status ‘ç¨â âì á®áâ®ï­¨¥ ¯à¥à뢠­¨ï + ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ + ‘¨£­ « ¯à¥à뢠­¨ï INT £¥­¥à¨àã¥âáï ª®­â஫«¥à®¬ ¢ á«¥¤ãîé¨å á«ãç ïå: + 1.   ä §¥ १ã«ìâ â  á«¥¤ãîé¨å ª®¬ ­¤: + * Read Data + * Read a Track + * Read ID + * Read Deleted Data + * Write Data + * Write Deleted Data + * Format a Track + * Scan Sommand + 2. ˆ§¬¥­¥­¨¥ ᨣ­ «  Ready á ­ ª®¯¨â¥«ï + 3. ‚ ª®­æ¥ ª®¬ ­¤ Seek ¨«¨ Recalibrate + 4.   ä §¥ ¢ë¯®«­¥­¨ï ¢ ०¨¬¥ NON DMA +à¥à뢠­¨ï ¢ á«ãç ïå (1) ¨ (4) «¥£ª® à á¯®§­ îâáï ¯à®æ¥áá®à®¬, â.ª. +¯à®¨§¢®¤ïâáï ¢® ¢à¥¬ï ­®à¬ «ì­®£® ¨á¯®«­¥­¨ï ª®¬ ­¤. ޤ­ ª® ¯à¥à뢠­¨ï ¢ +á«ãç ïå (2) ¨ (3) ¬®£ãâ ¡ëâì ¨¤¥­â¨ä¨æ¨à®¢ ­ë ¯à®æ¥áá®à®¬ ⮫쪮 ¯ã⥬ +¢ë¯®«­¥­¨ï ª®¬ ­¤ë ç⥭¨ï á®áâ®ï­¨ï ¯à¥à뢠­¨ï. â  ª®¬ ­¤  á¡à á뢠¥â ᨣ­ « +¯à¥à뢠­¨ï ¨ ¯®á।á⢮¬ ¡¨â®¢ 5-7 ॣ¨áâà  ST0 ¯à®æ¥áá®à ¬®¦¥â ®¯à¥¤¥«¨âì +¯à¨ç¨­ã ¯à¥à뢠­¨ï. + + ÉÍÍÍÍÍËÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ» + º SE º INT Code º º + ÌÍÍÍÍÍÎÍÍÍÍÍËÍÍÍÍ͹ º + º ¡¨â º ¡¨â º ¡¨â º à¨ç¨­  ¯à¥à뢠­¨ï º + º 5 º 6 º 7 º º + ÌÍÍÍÍÍÎÍÍÍÍÍÎÍÍÍÍÍÎÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹ + º 0 º 1 º 1 º ˆ§¬¥­¥­¨¥ ᨣ­ «  Readu º + º º º º á ­ ª®¯¨â¥«ï º + ÌÍÍÍÍÍÎÍÍÍÍÍÎÍÍÍÍÍÎÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹ + º 1 º 0 º 0 º ®à¬ «ì­®¥ § ¢¥à襭¨¥ ª®¬ ­¤ º + º º º º Seek ¨ Recalibrate º + ÌÍÍÍÍÍÎÍÍÍÍÍÎÍÍÍÍÍÎÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹ + º 1 º 1 º 0 º Žè¨¡®ç­®¥ § ¢¥à襭¨¥ ª®¬ ­¤ º + º º º º Seek ¨ Recalibrate º + ÈÍÍÍÍÍÊÍÍÍÍÍÊÍÍÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ + + Š®¬ ­¤ë Seek ¨ Recalibrate ­¥ ¨¬¥îâ ä §ë १ã«ìâ â , ¯®í⮬ã âॡã¥âáï +¨á¯®«ì§®¢ ­¨¥ ª®¬ ­¤ë Sense Interrupt Status ¤«ï ¨å ãᯥ譮£® § ¢¥à襭¨ï ¨ +¯à®¢¥àª¨ ¯®«®¦¥­¨ï £®«®¢ª¨ ­ ª®¯¨â¥«ï (PCN). + + Specify “áâ ­®¢¨âì ¯ à ¬¥âàë ­ ª®¯¨â¥«ï + ÍÍÍÍÍÍÍ ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ + Š®¬ ­¤  § ¤ ¥â §­ ç¥­¨ï 3 ¢à¥¬¥­­ëå ¨­â¥à¢ «®¢ - ¯ à ¬¥â஢ ­ ª®¯¨â¥«¥©: + * HUT - ¯ ã§  ¤® ®â¢®¤  £®«®¢ª¨. ‡ ¤ ¥â ¢à¥¬ï ®â ®ª®­ç ­¨ï ®¯¥à æ¨¨ + ç⥭¨ï/§ ¯¨á¨ ¤® ¬®¬¥­â  ®â¢®¤  £®«®¢ª¨ ®â ¯®¢¥àå­®á⨠¤¨áª . + ‚à¥¬ï § ¤ ¥âáï ¢ ¥¤¨­¨æ å ¯® 16 ¬á¥ª. ¨ «¥¦¨â ¢ ¯à¥¤¥« å + 16..240 ¬á¥ª. + * SRT - ¢à¥¬ï è £  £®«®¢ª¨. ‡ ¤ ¥â ¢à¥¬ï § ¤¥à¦ª¨ ¬¥¦¤ã ¤¢ã¬ï + ¯®á«¥¤®¢ â¥«ì­ë¬¨ ¨¬¯ã«ìá ¬¨ è £ . ‚à¥¬ï § ¤ ¥âáï ¢ ¥¤¨­¨æ å + ¯® 1 ¬á¥ª. ¨ «¥¦¨â ¢ ¯à¥¤¥« å 1..16 ¬á¥ª. + ‚­¨¬ ­¨¥! ®«ì訥 ç¨á«  § ¤ îâ ¬¥­ì襥 ¢à¥¬ï è £ : + 0FH - 1 ¬á¥ª., 0EH - 2 ¬á¥ª. ¨ â.¤. + * HLT - ¢à¥¬ï ¯®¤¢®¤  £®«®¢ª¨. ‡ ¤ ¥â ¢à¥¬ï ¬¥¦¤ã ¢ë¤ ç¥© ᨣ­ «  + ¯®¤¢®¤  £®«®¢ª¨ ª ¤¨áªã ¨ ­ ç «®¬ ®¯¥à æ¨¨ ç⥭¨ï/§ ¯¨á¨. + ‡ ¤ ¥âáï ¢ ¥¤¨­¨æ å ¯® 2 ¬á¥ª. ¨ «¥¦¨â ¢ ¯à¥¤¥« å 2..254 ¬á¥ª. + ‚ᥠ¢à¥¬¥­­ë¥ ¨­â¥à¢ «ë, 㪠§ ­­ë¥ ¢ëè¥, á¢ï§ ­ë á ⠪⮢®© ç áâ®â®© +ª®­â஫«¥à  (CLK, ¢ë¢.19) ¨ ¯à¨¢¥¤¥­ë ¤«ï á«ãç ï, ª®£¤  CLK = 8 Œƒæ (203 ¬¬. +¤¨áª). …᫨ ¦¥ CLK = 4 Œƒæ (133 ¬¬. ¤¨áª), â® ¢á¥ §­ ç¥­¨ï 㬥­ìè âáï ¢ 2 +à § . + ¨â ND ¢ ª®¬ ­¤¥ ®áãé¥á⢫ï¥â ¢ë¡®à ०¨¬  „ ¤«ï ª®­â஫«¥à : ¥á«¨ ¡¨â +ND=1, ¢ë¡¨à ¥âáï ०¨¬ NON DMA (­¥-„), ¥á«¨ ¦¥ ND=0, â® ¢ë¡¨à ¥âáï ०¨¬ +DMA („). + + Sense Drive Status —⥭¨¥ á®áâ®ï­¨ï ­ ª®¯¨â¥«ï + ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ + Š®¬ ­¤  ¬®¦¥â ¡ëâì ¨á¯®«ì§®¢ ­  ¯à®æ¥áá®à®¬, ª®£¤  ¥¬ã ­¥®¡å®¤¨¬® ã§­ âì +á®áâ®ï­¨¥ ­ ª®¯¨â¥«ï. ¥£¨áâà ST3 ᮤ¥à¦¨â ¨­ä®à¬ æ¨î ® á®áâ®ï­¨¨ ­ ª®¯¨â¥«ï. + + Invalid ¥¤®¯ãá⨬ ï ª®¬ ­¤  + ÍÍÍÍÍÍÍ ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ + …᫨ ¢ ª®­â஫«¥à ¯¥à¥¤ ¥âáï ª®¬ ­¤ , ­¥ ®¯®§­ ­­ ï ª ª ®¤­  ¨§ +¢ë襯¥à¥ç¨á«¥­­ëå, ª®­â஫«¥à § ¢¥à蠥⠪®¬ ­¤ã. ‚ í⮬ á«ãç ¥ ¯à¥à뢠­¨¥ ­¥ +£¥­¥à¨àã¥âáï. ¨âë 6 ¨ 7 ¢ ॣ¨áâॠá®áâ®ï­¨ï (DIO ¨ RQM) ãáâ ­ ¢«¨¢ îâáï ¢ +1, 㪠§ë¢ ï ¯à®æ¥áá®àã ­  ­¥®¡å®¤¨¬®áâì ¢ë¯®«­¥­¨ï ä §ë १ã«ìâ â  - ç⥭¨ï +ॣ¨áâà  ST0. ‚ ॣ¨áâॠST0 ­ å®¤¨âáï ¡ ©â 80, ¯®ª §ë¢ î騩 ­¥¤®¯ãá⨬ãî +ª®¬ ­¤ã. + ¥®¡å®¤¨¬® ®â¬¥â¨âì, çâ® ¯®á«¥ ®¯¥à æ¨© Seek ¨ Recalibrate +(¢®§­¨ª­®¢¥­¨ï ¯à¥à뢠­¨ï ¯®á«¥ ®ª®­ç ­¨ï ª®¬ ­¤ë), ª®­â஫«¥à ¤®«¦¥­ +¯®«ãç¨âì ª®¬ ­¤ã Sense Interrupt Status, ¨­ ç¥ ®­ ¢®á¯à¨¬¥â á«¥¤ãîéãî ª®¬ ­¤ã +ª ª ­¥¤®¯ãá⨬ãî. + ®«ì§®¢ â¥«ì ¯à¨ ­¥®¡å®¤¨¬®á⨠¬®¦¥â ¨á¯®«ì§®¢ âì íâã ª®¬ ­¤ã, ª ª +ª®¬ ­¤ã NOP (­¥â ®¯¥à æ¨¨) ¤«ï ¯à¨¢¥¤¥­¨ï ª®­â஫«¥à  ¢ ¨§¢¥áâ­®¥ á®áâ®ï­¨¥ +¨«¨ ¢ á®áâ®ï­¨¥ ¡¥§ ®¯¥à æ¨¨. + \ No newline at end of file diff --git a/docs/8272CMD.DOC b/docs/8272CMD.DOC new file mode 100644 index 0000000..5464f11 --- /dev/null +++ b/docs/8272CMD.DOC @@ -0,0 +1,144 @@ + + + + + ‘¨á⥬  ª®¬ ­¤ ª®­â஫«¥à  ƒŒ„ i8272 + +ÉÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍËÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ» +º º R º ˜¨­  ¤ ­­ëå º º +º ” §  º / ÌÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍ͹ ਬ¥ç ­¨¥ º +º º W º 7 ³ 6 ³ 5 ³ 4 ³ 3 ³ 2 ³ 1 ³ 0 º º +ºÍÍÍÍÍÍÍÍÍÍÍÍÍÎÍÍÍÎÍÍÍÏÍÍÍÏÍÍÍÏÍÍÍÏÍÍÍÏÍÍÍÏÍÍÍÏÍÍÍÎÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹ +º ਪ § º W º Read/Write/Scan º Š®¬ ­¤­®¥ á«®¢® º +º º ÇÄÄÄÂÄÄÄÂÄÄÄÂÄÄÄÂÄÄÄÂÄÄÄÂÄÄÄÂÄÄĶ (á¬. â ¡«¨æã) º +º º º 0 ³ 0 ³ 0 ³ 0 ³ 0 ³HDS³DS0³DS1º º +º º ÇÄÄÄÁÄÄÄÁÄÄÄÁÄÄÄÁÄÄÄÁÄÄÄÁÄÄÄÁÄÄĶ º +º º º C º º +º º º H º º +º º º R º º +º º º N º º +º º º EOT º º +º º º GPL º º +º º º DTL º º +ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÎÍÍÍÎÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÎÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹ +º ˆá¯®«­¥­¨¥ º º ‚믮«­¥­¨¥ ®¯¥à æ¨¨ º º +ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÎÍÍÍÎÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÎÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹ +º ¥§ã«ìâ â º R º ST0 º º +º º º ST1 º º +º º º ST2 º º +º º º C º º +º º º H º º +º º º R º º +º º º N º º +ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ + Š®¬ ­¤­ë¥ á«®¢  + ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍËÍÍÍÍÍÍÍ» + º Š®¬ ­¤  º 7 ³ 6 ³ 5 ³ 4 ³ 3 ³ 2 ³ 1 ³ 0 º ਬ. º + ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÎÍÍÍØÍÍÍØÍÍÍØÍÍÍØÍÍÍØÍÍÍØÍÍÍØÍÍÍÎÍÍÍÍÍÍ͹ + º Read Data º MT³MFM³ SK³ 0 ³ 0 ³ 1 ³ 1 ³ 0 º º + º Read Del.Data º MT³MFM³ SK³ 0 ³ 1 ³ 1 ³ 0 ³ 0 º º + º Write Data º MT³MFM³ SK³ 0 ³ 0 ³ 1 ³ 0 ³ 1 º º + º Write Del.Data º MT³MFM³ SK³ 0 ³ 1 ³ 0 ³ 0 ³ 1 º º + º Read a Track º MT³MFM³ SK³ 0 ³ 0 ³ 0 ³ 1 ³ 0 º º + ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÎÍÍÍØÍÍÍØÍÍÍØÍÍÍØÍÍÍØÍÍÍØÍÍÍØÍÍÍÎÍÍÍÍÍÍ͹ + º Scan Equal º MT³MFM³ SK³ 1 ³ 0 ³ 0 ³ 0 ³ 1 º * º + º Scan Low or Eq. º MT³MFM³ SK³ 1 ³ 1 ³ 0 ³ 0 ³ 1 º * º + º Scan High or Eq. º MT³MFM³ SK³ 1 ³ 1 ³ 1 ³ 0 ³ 1 º * º + ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÏÍÍÍÏÍÍÍÏÍÍÍÏÍÍÍÏÍÍÍÏÍÍÍÏÍÍÍÊÍÍÍÍÍÍͼ + * ‚ ª®¬ ­¤ å ᪠­¨à®¢ ­¨ï ¯®á«¥¤­¨© ¡ ©â ¯à¨ª §  DTL § ¬¥­ï¥âáï ­  STD + + +ÉÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍËÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ» +º º R º ˜¨­  ¤ ­­ëå º º +º ” §  º / ÌÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍ͹ ਬ¥ç ­¨¥ º +º º W º 7 ³ 6 ³ 5 ³ 4 ³ 3 ³ 2 ³ 1 ³ 0 º º +ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÊÍÍÍÏÍÍÍÏÍÍÍÏÍÍÍÏÍÍÍÏÍÍÍÏÍÍÍÏÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÍ͹ +º Read ID º 4AH/0AH º +ÌÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍËÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍËÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÍ͹ +º ਪ § º W º 0 ³MFM³ 0 ³ 0 ³ 1 ³ 0 ³ 1 ³ 0 º Š®¬ ­¤­®¥ á«®¢® º +º º ÇÄÄÄÅÄÄÄÅÄÄÄÅÄÄÄÅÄÄÄÅÄÄÄÅÄÄÄÅÄÄĶ º +º º º 0 ³ 0 ³ 0 ³ 0 ³ 0 ³HDS³DS0³DS1º º +ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÎÍÍÍÎÍÍÍÏÍÍÍÏÍÍÍÏÍÍÍÏÍÍÍÏÍÍÍÏÍÍÍÏÍÍÍÎÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹ +º ˆá¯®«­¥­¨¥ º º ‚믮«­¥­¨¥ ®¯¥à æ¨¨ º º +ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÎÍÍÍÎÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÎÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹ +º ¥§ã«ìâ â º R º ST0 º º +º º º ST1 º º +º º º ST2 º º +º º º C º º +º º º H º º +º º º R º º +º º º N º º +ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÍ͹ +º Format a Track º 4DH/0DH º +ÌÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍËÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍËÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÍ͹ +º ਪ § º W º 0 ³MFM³ 0 ³ 0 ³ 1 ³ 1 ³ 0 ³ 1 º Š®¬ ­¤­®¥ á«®¢® º +º º ÇÄÄÄÅÄÄÄÅÄÄÄÅÄÄÄÅÄÄÄÅÄÄÄÅÄÄÄÅÄÄĶ º +º º º 0 ³ 0 ³ 0 ³ 0 ³ 0 ³HDS³DS0³DS1º º +º º ÇÄÄÄÁÄÄÄÁÄÄÄÁÄÄÄÁÄÄÄÁÄÄÄÁÄÄÄÁÄÄĶ º +º º º N º  §¬¥à ᥪâ®à  º +º º º SC º Š®«¨ç¥á⢮ ᥪâ®à®¢ º +º º º GPL º Œ¥¦á¥ªâ®à­ë© GAP º +º º º D º ‡ ¯®«­¨â¥«ì º +ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÎÍÍÍÎÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÎÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹ +º ˆá¯®«­¥­¨¥ º º ‚믮«­¥­¨¥ ®¯¥à æ¨¨ º º +ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÎÍÍÍÎÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÎÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹ +º ¥§ã«ìâ â º R º ST0 º º +º º º ST1 º º +º º º ST2 º º +º º º C º º +º º º H º º +º º º R º º +º º º N º º +ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍ͹ +º Recalibrate º 07H º +ÌÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍËÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍËÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍ͹ +º ਪ § º W º 0 ³ 0 ³ 0 ³ 0 ³ 0 ³ 1 ³ 1 ³ 1 º Š®¬ ­¤­®¥ á«®¢® º +º º ÇÄÄÄÅÄÄÄÅÄÄÄÅÄÄÄÅÄÄÄÅÄÄÄÅÄÄÄÅÄÄĶ º +º º º 0 ³ 0 ³ 0 ³ 0 ³ 0 ³HDS³DS0³DS1º º +ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÎÍÍÍÎÍÍÍÏÍÍÍÏÍÍÍÏÍÍÍÏÍÍÍÏÍÍÍÏÍÍÍÏÍÍÍÎÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹ +º ˆá¯®«­¥­¨¥ º º ‚믮«­¥­¨¥ ®¯¥à æ¨¨ º ” §ë १ã«ìâ â  ­¥â º +ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍ͹ +º Sense Interrupt Status º 08H º +ÌÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍËÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍËÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍ͹ +º ਪ § º W º 0 ³ 0 ³ 0 ³ 0 ³ 1 ³ 0 ³ 0 ³ 0 º Š®¬ ­¤­®¥ á«®¢® º +ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÎÍÍÍÎÍÍÍÏÍÍÍÏÍÍÍÏÍÍÍÏÍÍÍÏÍÍÍÏÍÍÍÏÍÍÍÎÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹ +º ¥§ã«ìâ â º R º ST0 º ” §ë ¨á¯®«­¥­¨ï ­¥â º +º º º PCN º º +ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍ͹ +º Specify º 03H º +ÌÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍËÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍËÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍ͹ +º ਪ § º W º 0 ³ 0 ³ 0 ³ 0 ³ 0 ³ 0 ³ 1 ³ 1 º Š®¬ ­¤­®¥ á«®¢® º +º º ÇÄÄÄÁÄÄÄÁÄÄÄÁÄÄÄÅÄÄÄÁÄÄÄÁÄÄÄÁÄÄĶÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹ +º º º SRT ³ HUT º ¥â ä § १ã«ìâ â  º +º º ÇÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÂÄÄĶ ¨ ¨á¯®«­¥­¨ï º +º º º HLT ³ NDº º +ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÏÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ + +ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍ» +º Sense Drive Status º 04H º +ÌÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍËÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍËÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍ͹ +º ਪ § º W º 0 ³ 0 ³ 0 ³ 0 ³ 1 ³ 1 ³ 0 ³ 1 º Š®¬ ­¤­®¥ á«®¢® º +º º ÇÄÄÄÅÄÄÄÅÄÄÄÅÄÄÄÅÄÄÄÅÄÄÄÅÄÄÄÅÄÄĶ º +º º º 0 ³ 0 ³ 0 ³ 0 ³ 0 ³HDS³DS0³DS1º º +ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÎÍÍÍÎÍÍÍÏÍÍÍÏÍÍÍÏÍÍÍÏÍÍÍÏÍÍÍÏÍÍÍÏÍÍÍÎÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹ +º ¥§ã«ìâ â º R º ST3 º ” §ë ¨á¯®«­¥­¨ï ­¥â º +ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍ͹ +º Seek º 0FH º +ÌÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍËÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍËÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍ͹ +º ਪ § º W º 0 ³ 0 ³ 0 ³ 0 ³ 1 ³ 1 ³ 1 ³ 1 º Š®¬ ­¤­®¥ á«®¢® º +º º ÇÄÄÄÅÄÄÄÅÄÄÄÅÄÄÄÅÄÄÄÅÄÄÄÅÄÄÄÅÄÄĶ º +º º º 0 ³ 0 ³ 0 ³ 0 ³ 0 ³HDS³DS0³DS1º º +º º ÌÍÍÍÏÍÍÍÏÍÍÍÏÍÍÍÏÍÍÍÏÍÍÍÏÍÍÍÏÍÍ͹ º +º º º NCN º º +ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÎÍÍÍÎÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÎÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹ +º ˆá¯®«­¥­¨¥ º º ‚믮«­¥­¨¥ ®¯¥à æ¨¨ º ” §ë १ã«ìâ â  ­¥â º +º º º º ƒ¥­¥à¨àã¥â ¯à¥à뢠­¨¥ º +ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍ͹ +º Invalid º XXH º +ÌÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍËÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍ͹ +º ਪ § º W º ¥¤®¯ãáâ¨¬ë© ª®¤ ®¯¥à æ¨¨ º º +ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÎÍÍÍÎÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÎÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹ +º ¥§ã«ìâ â º R º ST0 º ST0=80H - ¯à¨§­ ª º +º º º º ®è¨¡ª¨ º +ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ + \ No newline at end of file diff --git a/docs/8272FORM.DOC b/docs/8272FORM.DOC new file mode 100644 index 0000000..4bd0d5b --- /dev/null +++ b/docs/8272FORM.DOC @@ -0,0 +1,74 @@ + ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ» + º ”®à¬ â åà ­¥­¨ï ¨­ä®à¬ æ¨¨ ­  £¨¡ª®¬ ¤¨áª¥. º + º ‘â ­¤ àâ IBM System 34 (SD) ¨ IBM System 3740 (DD). º + ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ + + ÉÍÍÍÍÍ» <-- ˆ­¤¥ªá (­ ç «® ¤®à®¦ª¨). Hex Hex + º º ÉÍÍÍÍËÍÍÍÍ» + º º º SD º DD º + º º <-- ®á⨭¤¥ªá­ë© ¯à®¬¥¦ã⮪ ÌÍÍÍÍÎÍÍÍ͹ + º º „«¨­  ¯à®¬¥¦ã⪠ (¡ ©â) - º 28 º 50 º + º º ‡ ¯¨á뢠¥âáï ¡ ©â - º FF º 4E º + ÌÍÍÍÍ͹ ÈÍÍÍÍÊÍÍÍͼ + º º <-- Š®¤ ᨭåà®­¨§ æ¨¨ ÉÍÍÍÍËÍÍÍÍ» + º º „«¨­  ¯®«ï (¡ ©â) - º 6 º 0C º + º º ‡ ¯¨á뢠¥âáï ¡ ©â - º 00 º 00 º + ÌÍÍÍÍ͹ ÌÍÍÍÍÎÍÍÍ͹ + º º <-- €¤à¥á­ ï ¬¥âª  ¨­¤¥ªá  º º º + º º (4 ¡ ©â ) º FC º C2*º + º º ‡ ¯¨á뢠¥âáï ¡ ©â - º ⨠º C2*º + º º º(D7)º C2*º + º º º º FC º + ÌÍÍÍÍ͹ ÌÍÍÍÍÎÍÍÍ͹ + º º <-- ஬¥¦ã⮪ (¡ ©â) - º 1A º 32 º + º º ‡ ¯¨á뢠¥âáï ¡ ©â - º FF º 4E º + ÈÍÍÍÍͼ ÈÍÍÍÍÊÍÍÍͼ +„ «¥¥ 横«¨ç¥áª®¥ ¯®¢â®à¥­¨¥ ¤«ï ª ¦¤®£® ᥪâ®à : + ÉÍÍÍÍÍ» ÉÍÍÍÍËÍÍÍÍ» + º º <-- Š®¤ ᨭåà®­¨§ æ¨¨. „«¨­ : º 6 º 0C º + º º ‡ ¯¨á뢠¥âáï ¡ ©â - º 00 º 00 º + ÌÍÍÍÍ͹ ÌÍÍÍÍÎÍÍÍ͹ + º º <-- €¤à¥á­ ï ¬¥âª  ¨¤¥­â¨ä¨ª â®à  º FE º A1*º + º º (4 ¡ ©â ) º ⨠º A1*º + º º º(C7)º A1*º + º º º º FE º + ÌÍÍÍÍ͹ ÈÍÍÍÍÊÍÍÍͼ + º C º <-- ®¬¥à ¤®à®¦ª¨ + ÌÍÍÍÍ͹ + º H º <-- ®¬¥à ¯®¢¥àå­®á⨠+ ÌÍÍÍÍ͹ + º R º <-- ®¬¥à ᥪâ®à  + ÌÍÍÍÍ͹ + º N º <-- Š®¤ ¤«¨­ë ᥪâ®à : + º º 00 - 128, 01 - 256, 02 - 512, 03 - 1024 ¨ â.¤. + ÌÍÍÍÍ͹ ÉÍÍÍÍËÍÍÍÍ» + º º <-- ஬¥¦ã⮪. „«¨­ : º FE º 4E º + º º ‡ ¯¨á뢠¥âáï ¡ ©â - º 0B º 16 º + º º º º º + º º º º º + ÌÍÍÍÍ͹ ÈÍÍÍÍÊÍÍÍͼ + º º <-- 2 ¡ ©â  CRC - ª®­â஫ï + ÌÍÍÍÍ͹ ÉÍÍÍÍËÍÍÍÍ» + º º <-- Š®¤ ᨭåà®­¨§ æ¨¨. „«¨­ : º 0B º 16 º + º º ‡ ¯¨á뢠¥âáï ¡ ©â - º FF º 4E º + ÌÍÍÍÍ͹ ÌÍÍÍÍÎÍÍÍ͹ + º º <-- €¤à¥á­ ï ¬¥âª  ¤ ­­ëå º ⨠º A1*º + º º º(C7)º A1*º + º º º º A1*º + º º „«ï ¤ ­­ëå - º FB º FB º + º º „«ï 㤠«¥­­ëå ¤ ­­ëå - º F8 º F8 º + ÌÍÍÍÍ͹ ÈÍÍÍÍÊÍÍÍͼ + º º <-- ®«¥ ¤ ­­ëå: 128, 256, 512 ... ¡ ©â. + ÌÍÍÍÍ͹ + º º <-- 2 ¡ ©â  CRC - ª®­â஫ï + ÌÍÍÍÍ͹ + º º <-- ®áâᥪâ®à­ë© ¯à®¬¥¦ã⮪. ÉÍÍÍÍËÍÍÍÍ» + º º ‡ ¯¨á뢠¥âáï ¡ ©â º FF º 4E º + º º „«¨­  ¯à®¬¥¦ã⪠ (¡ ©â): ÌÍÍÍÍÎÍÍÍ͹ + º º 8 ᥪâ®à®¢ º 3A º 74 º + º º 15 ᥪâ®à®¢ º 2A º 54 º + º º 26 ᥪâ®à®¢ º 1B º 36 º + ÈÍÍÍÍͼ ÈÍÍÍÍÊÍÍÍͼ + ⨠- â ªâ®¢ë¥ ¨¬¯ã«ìáë + A1*, C2* - § ¯¨áì á ¢ë¯ ¤¥­¨¥¬ ⠪⮢ëå ¨¬¯ã«ìᮢ + \ No newline at end of file diff --git a/docs/8272STAT.DOC b/docs/8272STAT.DOC new file mode 100644 index 0000000..6cd8176 --- /dev/null +++ b/docs/8272STAT.DOC @@ -0,0 +1,109 @@ +ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ» +º ¥£¨áâàë á®áâ®ï­¨ï ST0 - ST3 º +ÌÍÍÍÍËÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍËÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹ +º ¨âº  §¢ ­¨¥ º Ž¡®§­º ޝ¨á ­¨¥ º +ÌÍÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹ +º ¥£¨áâà á®áâ®ï­¨ï ST0 º +ÌÍÍÍÍËÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍËÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹ +º D7 º Interrupt º IC º ¨âë D7,D6 ᮢ¬¥áâ­® ¯®ª §ë¢ îâ ¨á室 ª®¬ ­¤ë, ¢ë§¢ ¢è¥© ¯à¥à뢠­¨¥: º +º D6 º Code º º 00 - ­®à¬ «ì­®¥ § ¢¥à襭¨¥ ª®¬ ­¤ë (NT - Normal Termination) º +º º º º 01 - ®è¨¡®ç­®¥ § ¢¥à襭¨¥ ª®¬ ­¤ë (AT - Abnormal Terminated) º +º º º º ª®¬ ­¤  ¡ë«  ­ ç â , ­® ­¥ ¢ë¯®«­¥­  ãᯥ譮. º +º º º º 10 - ­¥¤®¯ãá⨬ ï ª®¬ ­¤  (IC - Invalid Command). º +º º º º 11 - ­¥­®à¬ «ì­®¥ § ¢¥à襭¨¥ ª®¬ ­¤ë ¨§-§  ¨§¬¥­¥­¨ï ᨣ­ «  Readyº +º º º º á ­ ª®¯¨â¥«ï. º +ÌÍÍÍÍÎÍÍÍÍÍÍÍÍÍÍÍÍÍÎÍÍÍÍÍÍÎÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹ +º D5 º Seek End º SE º Š®£¤  ª®­â஫«¥à ¢ë¯®«­¨« ª®¬ ­¤ã Seek, íâ®â ¡¨â ãáâ ­®¢«¥­ ¢ "1". º +ÌÍÍÍÍÎÍÍÍÍÍÍÍÍÍÍÍÍÍÎÍÍÍÍÍÍÎÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹ +º D4 º Equipment º EC º …᫨ á ­ ª®¯¨â¥«ï ¯à¨è¥« ᨣ­ « Fault ¨«¨ ¯®á«¥ 77 è £®¢ ­¥ ¯®«ã祭 º +º º Check º º ᨣ­ « TR00, íâ®â ¡¨â ãáâ ­ ¢«¨¢ ¥âáï ¢ "1". º +ÌÍÍÍÍÎÍÍÍÍÍÍÍÍÍÍÍÍÍÎÍÍÍÍÍÍÎÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹ +º D3 º Not Ready º NR º …᫨ ­ ª®¯¨â¥«ì ¢ á®áâ®ï­¨¨ Not Ready ¨ § ¤ ¥âáï ª®¬ ­¤  ç⥭¨ï º +º º º º ¨«¨ § ¯¨á¨, íâ®â ¡¨â ãáâ ­ ¢«¨¢ ¥âáï ¢ "1". º +ÌÍÍÍÍÎÍÍÍÍÍÍÍÍÍÍÍÍÍÎÍÍÍÍÍÍÎÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹ +º D2 º Head Addressº HD º ”« £ ¨á¯®«ì§ã¥âáï ¤«ï 㪠§ ­¨ï á®áâ®ï­¨ï £®«®¢ª¨ ¯à¨ ¯à¥à뢠­¨¨. º +ÌÍÍÍÍÎÍÍÍÍÍÍÍÍÍÍÍÍÍÎÍÍÍÍÍÍÎÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹ +º D1 º Unit º US1 º „¢  ¡¨â  㪠§ë¢ îâ ­®¬¥à ­ ª®¯¨â¥«ï ¯à¨ ¯à¥à뢠­¨¨. º +º D0 º Select º US0 º º +ÌÍÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹ +º ¥£¨áâà á®áâ®ï­¨ï ST1 º +ÌÍÍÍÍËÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍËÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹ +º D7 º End OF º EN º Š®£¤  ª®­â஫«¥à ¯ëâ ¥âáï ¯®«ãç¨âì ¤®áâ㯠ª ᥪâ®àã á ­®¬¥à®¬, º +º º Cylinder º º ¯à¥¢ëè î騬 ­®¬¥à ¯®á«¥¤­¥£® ᥪâ®à  樫¨­¤à , ä« £ ãáâ ­ ¢«¨¢ ¥âáï. º +ÌÍÍÍÍÎÍÍÍÍÍÍÍÍÍÍÍÍÍÎÍÍÍÍÍÍÎÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹ +º D6 º ----- º º ¥ ¨á¯®«ì§ã¥âáï, ¢á¥£¤  = 0 º +ÌÍÍÍÍÎÍÍÍÍÍÍÍÍÍÍÍÍÍÎÍÍÍÍÍÍÎÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹ +º D5 º Data Error º DE º ”« £ ãáâ ­ ¢«¨¢ ¥âáï ¯à¨ ¢ë¥­¨¨ ®è¨¡ª¨ CRC ¢ ¯®«ïå º +º º º º ¤ ­­ëå ¨«¨ ¨¤¥­â¨ä¨ª â®à  ᥪâ®à . º +ÌÍÍÍÍÎÍÍÍÍÍÍÍÍÍÍÍÍÍÎÍÍÍÍÍÍÎÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹ +º D4 º Over Run º OR º ”« £ ãáâ ­ ¢«¨¢ ¥âáï, ¥á«¨ ª®­â஫«¥à ­¥ ®¡á«ã¦¥­ á¨á⥬®© º +º º º º ¢® ¢à¥¬ï ¯¥à¥¤ ç¨ ¤ ­­ëå (¯®â¥àï ¤ ­­ëå). º +ÌÍÍÍÍÎÍÍÍÍÍÍÍÍÍÍÍÍÍÎÍÍÍÍÍÍÎÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹ +º D3 º ----- º º ¥ ¨á¯®«ì§ã¥âáï, ¢á¥£¤  = 0. º +ÌÍÍÍÍÎÍÍÍÍÍÍÍÍÍÍÍÍÍÎÍÍÍÍÍÍÎÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹ +º D2 º No Data º ND º ‚ ª®¬ ­¤ å Read Data, Write Deleted Data ¨«¨ Scan ¥á«¨ º +º º º º ª®­â஫«¥à ­¥ ¬®¦¥â ­ ©â¨ ᥪâ®à, 㪠§ ­­ë© ॣ. IDR, ä« £ = "1". º +º º º ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹ +º º º º ‚ ª®¬ ­¤¥ Read ID, ¥á«¨ ª®­â஫«¥à ­¥ ¬®¦¥â áç¨â âì ¯®«¥ º +º º º º ¨¤¥­â¨ä¨ª â®à  ᥪâ®à  ¡¥§ ®è¨¡ª¨, ä« £ ãáâ ­ ¢«¨¢ ¥âáï ¢ "1". º +º º º ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹ +º º º º ‚ ª®¬ ­¤¥ Read a Cylinder, ¥á«¨ ­ ç «ì­ë© ᥪâ®à ­¥ ­ ©¤¥­, º +º º º º ä« £ ãáâ ­ ¢«¨¢ ¥âáï ¢ "1". º +ÌÍÍÍÍÎÍÍÍÍÍÍÍÍÍÍÍÍÍÎÍÍÍÍÍÍÎÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹ +º D1 º Not º NW º ‚ ª®¬ ­¤ å § ¯¨á¨ ¨ ä®à¬ â¨à®¢ ­¨ï, ¥á«¨ ª®­â஫«¥à ®¡­ à㦨¢ ¥â º +º º Writable º º ᨣ­ « § é¨âë ®â § ¯¨á¨ á ­ ª®¯¨â¥«ï, ä« £ ãáâ ­ ¢«¨¢ ¥âáï. º +ÌÍÍÍÍÎÍÍÍÍÍÍÍÍÍÍÍÍÍÎÍÍÍÍÍÍÎÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹ +º D0 º Missing º MA º …᫨ ­¥ ­ ©¤¥­  ¤à¥á­ë© ¬ àª¥à ¨¤¥­â¨ä¨ª â®à  ᥪâ®à  ¤® ¯à¨å®¤  º +º º Address º º ¢â®à®£® ¨­¤¥ªá­®£® ¨¬¯ã«ìá , ä« £ ãáâ ­ ¢«¨¢ ¥âáï ¢ "1". º +º º Mark º ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹ +º º º º …᫨ ­¥ ®¡­ à㦥­  ¤à¥á­ë© ¬ àª¥à ¤ ­­ëå ¨«¨ 㤠«¥­­ëå ¤ ­­ëå, ä« £ º +º º º º ãáâ ­ ¢«¨¢ ¥âáï. ਠí⮬ ãáâ ­ ¢«¨¢ ¥âáï ä« £ MD ¢ ॣ¨áâॠST2. º +ÈÍÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ +ÉÍÍÍÍËÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍËÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ» +º ¨âº  §¢ ­¨¥ º Ž¡®§­º ޝ¨á ­¨¥ º +ÌÍÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹ +º ¥£¨áâà á®áâ®ï­¨ï ST2 º +ÌÍÍÍÍËÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍËÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹ +º D7 º ------ º º ¥ ¨á¯®«ì§ã¥âáï, ¢á¥£¤  = 0. º +ÌÍÍÍÍÎÍÍÍÍÍÍÍÍÍÍÍÍÍÎÍÍÍÍÍÍÎÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹ +º D6 º Control º CM º ‚ ª®¬ ­¤ å Read Data ¨ Scan ¯à¨ ®¡­ à㦥­¨¨ ᥪâ®à  á º +º º Mark º º  ¤à¥á­ë¬ ¬ àª¥à®¬ 㤠«¥­­ëå ¤ ­­ëå ä« £ ãáâ ­ ¢«¨¢ ¥âáï ¢ "1". º +ÌÍÍÍÍÎÍÍÍÍÍÍÍÍÍÍÍÍÍÎÍÍÍÍÍÍÎÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹ +º D5 º Data Error º DD º ”« £ ãáâ ­ ¢«¨¢ ¥âáï ¢ "1" ¯à¨ ®¡­ à㦥­¨¨ ®è¨¡ª¨ CRC º +º º in Data º º ¢ ¯®«¥ ¤ ­­ëå ᥪâ®à . º +º º Field º º º +ÌÍÍÍÍÎÍÍÍÍÍÍÍÍÍÍÍÍÍÎÍÍÍÍÍÍÎÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹ +º D4 º Wrong º WC º “áâ ­ ¢«¨¢ ¥âáï ᮢ¬¥áâ­® á ¡¨â®¬ ND, ¥á«¨ ᮤ¥à¦¨¬®¥ º +º º Cylinder º º ॣ¨áâà  ‘ ®â«¨ç ¥âáï ®â ᮤ¥à¦¨¬®£® ॣ¨áâà  IDR. º +ÌÍÍÍÍÎÍÍÍÍÍÍÍÍÍÍÍÍÍÎÍÍÍÍÍÍÎÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹ +º D3 º Scan Equal º SH º ‚ ª®¬ ­¤ å Scan ¯à¨ 㤮¢«¥â¢®à¥­¨¨ ãá«®¢¨ï "à ¢­®" º +º º Hit º º íâ®â ¡¨â ãáâ ­ ¢«¨¢ ¥âáï ¢ "1". º +ÌÍÍÍÍÎÍÍÍÍÍÍÍÍÍÍÍÍÍÎÍÍÍÍÍÍÎÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹ +º D2 º Scan Not º SN º ‚ ª®¬ ­¤ å Scan, ¥á«¨ ­¥ ­ ©¤¥­ ᥪâ®à,®â¢¥ç î騩 º +º º Satisfied º º § ¤ ­­®¬ã ãá«®¢¨î, ä« £ ãáâ ­ ¢«¨¢ ¥âáï ¢ "1". º +ÌÍÍÍÍÎÍÍÍÍÍÍÍÍÍÍÍÍÍÎÍÍÍÍÍÍÎÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹ +º D1 º Bad º BC º “áâ ­ ¢«¨¢ ¥âáï ᮢ¬¥áâ­® á ¡¨â®¬ ND, ¥á«¨ ᮤ¥à¦¨¬®¥ º +º º Cylinder º º ॣ¨áâà  ‘ ®â«¨ç ¥âáï ®â ᮤ¥à¦â¬®£® IDR ¨ ‘ = 0FFH. º +ÌÍÍÍÍÎÍÍÍÍÍÍÍÍÍÍÍÍÍÎÍÍÍÍÍÍÎÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹ +º D0 º Missing º MD º …᫨ ¯à¨ ç⥭¨¨ ­¥ ¢áâà¥ç¥­  ¤à¥á­ë© ¬ àª¥à ¤ ­­ëå ¨«¨ º +º º Address Markº º  ¤à¥á­ë© ¬ àª¥à 㤠«¥­­ëå ¤ ­­ëå, ä« £ ãáâ ­ ¢«¨¢ ¥âáï ¢ "1". º +º ºin Data Fieldº º º +ÌÍÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹ +º ¥£¨áâà á®áâ®ï­¨ï ST3 º +ÌÍÍÍÍËÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍËÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹ +º D7 º Fault º FT º Žâà ¦ ¥â á®áâ®ï­¨¥ ᨣ­ «  Fault á ­ ª®¯¨â¥«ï. º +ÌÍÍÍÍÎÍÍÍÍÍÍÍÍÍÍÍÍÍÎÍÍÍÍÍÍÎÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹ +º D6 º Write º WP º Žâà ¦ ¥â á®áâ®ï­¨¥ ᨣ­ «  Write Protect (§ é¨â  ®â § ¯¨á¨) º +º º Protect º º á ­ ª®¯¨â¥«ï. º +ÌÍÍÍÍÎÍÍÍÍÍÍÍÍÍÍÍÍÍÎÍÍÍÍÍÍÎÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹ +º D5 º Ready º RDY º Žâà ¦ ¥â á®áâ®ï­¨¥ ᨣ­ «  Ready á ­ ª®¯¨â¥«ï. º +ÌÍÍÍÍÎÍÍÍÍÍÍÍÍÍÍÍÍÍÎÍÍÍÍÍÍÎÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹ +º D4 º Track 00 º T0 º Žâà ¦ ¥â á®áâ®ï­¨¥ ᨣ­ «  Track 00 á ­ ª®¯¨â¥«ï. º +ÌÍÍÍÍÎÍÍÍÍÍÍÍÍÍÍÍÍÍÎÍÍÍÍÍÍÎÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹ +º D3 º Two Side º TS º Žâà ¦ ¥â á®áâ®ï­¨¥ ᨣ­ «  Two Side á ­ ª®¯¨â¥«ï. º +ÌÍÍÍÍÎÍÍÍÍÍÍÍÍÍÍÍÍÍÎÍÍÍÍÍÍÎÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹ +º D2 º Head Addressº HD º “ª §ë¢ ¥â ­  ¢ë¡à ­­ãî ¯®¢¥àå­®áâì ¤¨áª . º +ÌÍÍÍÍÎÍÍÍÍÍÍÍÍÍÍÍÍÍÎÍÍÍÍÍÍÎÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹ +º D1 º Unit º US1 º „¢  ¡¨â  ¯®ª §ë¢ îâ ¢ë¡à ­­ë© ­ ª®¯¨â¥«ì. º +º D0 º Select º US0 º º +ÈÍÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ diff --git a/docs/I8272.DOC b/docs/I8272.DOC new file mode 100644 index 0000000..7fa9dd2 --- /dev/null +++ b/docs/I8272.DOC @@ -0,0 +1,2194 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + INTEL + + 8272 + + SINGLE/DOUBLE DENSITY FLOPPY DISK + + CONTROLLER. + + + + + + + + + + + + + + + + + Û IBM Compatible in Both Single and Û Data Transfers in DMA or Non-DMA + Double Density Recording Formats Mode + + Û Programmable Data Record Lengths : Û Parallel Seek Operations on Up to + 128,256,512, or 1024 Bytes/Sector Four Drives + + Û Drive Up to 4 Floppy Disks Û Compatible with Most + Microprocessors Including 8080A, + Û Data Scan Capability - Will Scan a 8085A,8086 and 8088 + Single Sector or an Entire Cylinder's + Worth of Data Fields, Comparing on a Û Single-Phase 8 MHz Clock + Byte by Byte Basics, Data in the + Processor's Memory with Data Read Û Single +5 Volt Power Supply + from the Diskette + Û Available in 40-Pin Plastic Dual-in + -line Package + + + + + + + The 8272 is an LSI Floppy Disk Controller (FDC) Chip, WHICH contains the + circulty and control functions for interfacing a processor to 4 Floppy Disk + Drives. It is capable of supporting either IBM 3740 single density format + (FM),or IBM System 34 Double Density format (MFM) including double sided + recording. The 8272 provides control signals which simlify the design of an + external phase locked loop, and write precompensation circultry. The FDC + simplifies and hanles most of the burdens associated with implementing + a Floppy Disk Drive Interface. + + + + + +_______________________________________________________________________________ + + + PIN CONFIGURATION + + + ÚÄÄÄ¿ ÚÄÄÄÄ¿ + RESETÄÄ´1 ÀÄÄÄÙ 40 ÃÄÄVcc + _RDÄÄ´2 39 ÃÄÄ_RW/SEEK + _WRÄÄ´3 38 ÃÄÄLCT/DIR + _CSÄÄ´4 37 ÃÄÄFR/STP + A0ÄÄ´5 36 ÃÄÄMDL + DB0ÄÄ´6 35 ÃÄRDY + DB1ÄÄ´7 34 ÃÄÄWP/TS + DB2ÄÄ´8 33 ÃÄÄFLT/TRK0 + DB3ÄÄ´9 32 ÃÄÄPS0 + DB4ÄÄ´10 31 ÃÄÄPS1 + DB5ÄÄ´11 30 ÃÄÄWR DATA + DB6ÄÄ´12 29 ÃÄÄDS0 + DB7ÄÄ´13 28 ÃÄÄDS1 + DRQÄÄ´14 27 ÃÄÄHDSEL + _DACKÄÄ´15 26 ÃÄÄMFM + TCÄÄ´16 25 ÃÄÄWE + IDXÄÄ´17 24 ÃÄÄVc0 + INTÄÄ´18 23 ÃÄÄRD DATA + CLRÄÄ´19 22 ÃÄÄDW + GNDÄÄ´20 21 ÃÄÄWR CLK + ÀÄÄÄÄÄÄÄÄÄÄÄÄÙ + + + + + + + + 8272 INTERNAL BLOCK DIAGRAM + + + + + + + ³ ³ ÚÄÄÄÄÄÄÄÄÄÄ¿ + ÚÄÄÄÄÄÄÄ¿ ³ ³ ³ ³ + /__\ ³ ³ /__\ ³ ³ /__\ ³ ³ + DB0-7<____>³ DATA ³<___ >³8³<____>³ ³ + \ / ³ BUS ³ \ / ³2³ \ / ³REGISTERS ³ + ³ BUFFER³ ³7³ ³ ³ + ³ ³ ³2³ ³ ³ + ³ ³ ³ ³ ³ ³ + ÀÄÄÄÄÄÄÄÙ ³I³ ³ ³ + ÄÄÄÄÄ¿ ³N³ ÀÄÄÄÄÄÄÄÄÄÄÙ + TERMINAL ³ ³T³ + COUNT \³ / ³E³ ÚÄÄÄÄÄÄÄÄÄÄ¿ + \/ ³R³ ³ SERIAL ³<------- WR CLOCK + ÚÄÄÄÄÄÄÄÄ¿ ³N³ ³ INTERFACE³-------> WR DATA + DRQ<---³ ³ ³A³ /__\ ³CONTROLLER³-------> WR ENABLE + DACK--->. READ ³ ³L³<____>³ ³-------> PRE-SHIFT0 + INT<---³ WRITE ³ ³ ³ \ / ³ ³-------> PRE-SHIFT1 + ID--->. DMA ³ /__\ ³B³ ³ ³<------- READ DATA + WR--->. CONTROL³<____>³U³ ³ ³<------- DATA WINDOW + A0--->³ LOGIC ³ \ / ³S³ ÀÄÄÄÄÄÄÄÄÄÄÙ-------> Vco SYNC + RESET--->³ ³ ³ ³ ÚÄÄÄÄÄÄÄÄÄÄ¿ + ³ ³ ³ ³ ³ ³ ÚÄÄÄÄÄ¿ + ÀÄÄÄ.ÄÄÄÄÙ ³ ³ ³ ³ /__³ ³ + /³\ ³ ³ ³ DRIVE ³<___³INPUT³ + ³ ³ ³ /__\ ³INTERFACE ³ \ ³ PORT³ + ³ ³ ³<____>³CONTROLLER³ ³ ³ + ³ ³ ³ \ / ³ ³ ÀÄÄÄÄÄÙ + CS ÄÄÄÄÄÙ ³ ³ ³ ³ /\ ÚÄÄÄÄÄ¿ + ³ ³ ³ ³<-->³ ³-->DRIVE SEL0 + ³ ³ ÀÄÄÄÄÄÄÄÄÄÄÙ \/ ³ OUT ³-->DRIVE SEL1 + ³ ³ ³ ³-->MFM MODE + CLK ---> ³ ³ ³ PORT³-->R/W SEEK + Vcc ---> ³ ³-->HEAD LOAD + GND ---> ³ ³-->HEAD SELECT + ³ ³-->LOW + ³ ³ CURRENT/DIRECTION + ÀÄÄÄÄÄÙ-->FAULT RESET/STEP + + + + + + + + + + 8272 SYSTEM BLOCK DIAGRAM + + + + + ÚÄÄÄÄÄÄ¿ + ³ ³ + ³ CPU ³ + ³ ³ + ÀÄÄÄÄÄÄÙ + ^ + / \ + / \ + | | + | | + \ / + \ / +  + ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ + SYSTEM BUS + ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ + ^ ^ + / \ / \ + / \ / \ + | | | | + | | | | + \ / \ / + \ / \ / +   + ÚÄÄÄÄÄÄÄÄÄÄ¿ ÚÄÄÄÄÄÄÄÄÄÄ¿ DATA ÚÄÄÄ¿ ÚÄÄÄÄÄÄÄÄÄÄ¿ + ³ ³ DRQ ³ ³ WINDOW ³ ³ ³ ÄÄ´ + ³ ³<--------³ ³<-----------³FLL³---³ ³ + ³ ³ ³ ³ ³ ³ | ³ + ³ 8237 ³ ³ 8272 ³ ÀÄÄÄÙ | ³ DRIVE ³ + ³ DMA ³ _DACK ³ ³ RD DATA | ³ ³ + ³CONTROLLER³-------->³ FDC ³<------------------ ³INTERFACE + ³ ³ ³ ³ WR DATA ³ ³ + ³ ³ ³ ³------------------->³ ³ + ³ ³ ³ ³ / ³ ³ + ³ ³-------->³ ³ / -----------------³ ³ + ÀÄÄÄÄÄÄÄÄÄÄÙ TC ³ ³< INPUT CONTROL ³ ³ + ³ ³ \ -----------------³ ³ + (TERMINAL COUNT)³ ³ \ ³ ³ + ³ ³ \ ³ ³ + ³ ³------------------\ ³ ³ + ³ ³ OUTPUT CONTROL >³ ³ + ÀÄÄÄÄÄÄÄÄÄÄÙ------------------/ ÀÄÄÄÄÄÄÄÄÄÄÙ + / + + + DESCRIPTION + + Hand-shaking signals are provided in the 8272 which make DMA operation + easy to incorporate with the aid of an external DMA Controller chip, such + as the 8237. The FDC will operate in einther DMA or Non-DMA mode. In the + Non-DMA mode,the FDC generates interrupts to the processor for every transfer + of data byte between the CPU and 8272. In the DMA mode, the processor need + only load command into the FDC and all data transfers occur under control of + the 8272 and DMA controller. + + There are 15 separate commands which the 8272 will execute. Each of these + commands require multiple 8-bit bytes to fully specify the operation which + the processor wishes the FDC to perform. The following commands are available: + + Read Data Write Data + Read ID Format a Track + Read Deleted Data Write Deleted Data + Read a Track Seek + Scan Equal Recalibrate (Restore to Track 0) + Scan High or Equal Sense Interrupt Status + Scan Low or Equal + Specify Sense Drive Status + + + + + FEATURES + + Addres mark detection circultry is internal to the FDC which simlifies the + phase locked loop and read electronics. The track stopping rate, head load + time, and head unload time may be programmed by user. The 8272 offers many + additional features such as multiple sector transfers in both read and write + modes with a single command, and full IBM compatibillity in both single (FM) + and double density (MFM) modes. + + + 8272 REGISTERS - CPU INTERFACE + + The 8272 contain two registers which may accessed by the main system + processor: a Status Register and a Data Register. The 8-bit Main Status + Register contains the status information of the FDC ,and may be accessed at + any time. The 8-bit Data Register ( actually consists of several registers in + a stack with only one register presented to the data bus at time), stores + data ,commands,parameters, and FDD status information. Data bytes are read + out of, or written into, the Data Register in order to program or obtain the + results after execution of command. The Status Register may only be read and + is used to facilitate the transfer of data between the processor and 8272. + + The relationship between the Status/Data registers and the signals _RD,_WR, + and A0 is shown below. + + ÚÄÄÄÂÄÄÄÄÄÂÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ + ³A0 ³ _RD ³ _WR ³ FUNCTION ³ + ÆÍÍÍØÍÍÍÍÍØÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͵ + ³ 0 ³ 0 ³ 1 ³ Read Main Status ³ + ³ ³ ³ ³ Register ³ + ÆÍÍÍØÍÍÍÍÍØÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͵ + ³ 0 ³ 1 ³ 0 ³ illegal ³ + ÆÍÍÍØÍÍÍÍÍØÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͵ + ³ 0 ³ 0 ³ 0 ³ illegal ³ + ÆÍÍÍØÍÍÍÍÍØÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͵ + ³ 1 ³ 0 ³ 0 ³ illegal ³ + ÆÍÍÍØÍÍÍÍÍØÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͵ + ³ 1 ³ 0 ³ 1 ³ Read from Data Register ³ + ÆÍÍÍØÍÍÍÍÍØÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͵ + ³ 1 ³ 1 ³ 0 ³ Write into Data Register ³ + ³ ³ ³ ³ ³ + ÀÄÄÄÁÄÄÄÄÄÁÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ + + + + The bits in the Main Status Register are defined as follows: + + ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ + ³ BIT NUMBER ³ NAME ³ SYMBOL ³ DESCRIPTION ³ + ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ + ³ DB0 ³ FDD0 Busy ³ D0B ³ FDD number 0 is in the³ + ³ ³ ³ ³ seek mode. ³ + ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ + ³ DB1 ³ FDD1 Busy ³ D1B ³ FDD number 1 is in the³ + ³ ³ ³ ³ seek mode. ³ + ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ + ³ DB2 ³ FDD2 Busy ³ D2B ³ FDD number 2 is in the³ + ³ ³ ³ ³ seek mode ³ + ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ + ³ DB3 ³ FDD3 Busy ³ D30 ³ FDD number 3 is in the³ + ³ ³ ³ ³ seek mode ³ + ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ + ³ DB4 ³ FDD4 Busy ³ CB ³ A read or write command³ + ³ ³ ³ ³ is in progress ³ + ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ + ³ DB5 ³ Non - DMA ³ NDM ³ The FDC is in the non -³ + ³ ³ mode ³ ³ DMA mode. This bit is ³ + ³ ³ ³ ³ set only during the ³ + ³ ³ ³ ³ execution phase in ³ + ³ ³ ³ ³ non-DMA mode.Transitien³ + ³ ³ ³ ³ ts "G" state indicates ³ + ³ ³ ³ ³ execution phase has ³ + ³ ³ ³ ³ ended ³ + ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ + ³ DB6 ³ Data Input ³ DIO ³ Indicates direction of ³ + ³ ³ -Output ³ ³ data transfer between ³ + ³ ³ ³ ³ FDC and Data Register. ³ + ³ ³ ³ ³ If DIO is "1",then ³ + ³ ³ ³ ³ transfer is from Data ³ + ³ ³ ³ ³ Register to the ³ + ³ ³ ³ ³ processor.If DIO is "0",³ + ³ ³ ³ ³ then transfer is from ³ + ³ ³ ³ ³ the Processor to Data ³ + ³ ³ ³ ³ Register. ³ + ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ + ³ DB7 ³ Request for³ RQM ³ Indicates Data Register ³ + ³ ³ ³ ³ is ready to send or ³ + ³ ³ Master ³ ³ receive data to or from ³ + ³ ³ ³ ³ the Processor.Both bits ³ + ³ ³ ³ ³ DIO and RQM should be ³ + ³ ³ ³ ³ used to perfom the ³ + ³ ³ ³ ³ handshaking functios of ³ + ³ ³ ³ ³ "ready" and "direction" ³ + ³ ³ ³ ³ to the processor. ³ + ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ + + + + + + PIN DESCRIPTION + ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ + ³ ³ ³ ³ ³ + ³ PIN ³ I/O ³ CONNECTION ³ DESCRIPTION ³ + ÃÄÄÄÄÄÂÄÄÄÄÄÄÄÄ´ ³ ³ ³ + ³ ³ ³ ³ TO ³ ³ + ³ NO. ³ SYMBOL ³ ³ ³ ³ + ÃÄÄÄÄÄÅÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ + ³ 1 ³ RST ³ I ³ mP ³ Reset Places FDC in idts ³ + ³ ³ ³ ³ ³ state Resets output lines to ³ + ³ ³ ³ ³ ³ FDD is "0" (low) ³ + ÃÄÄÄÄÄÅÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ + ³ ³ ³ ³ ³ Read:Control signal for ³ + ³ 2 ³ _RD ³ I* ³ mP ³ transfer of data from FDC to ³ + ³ ³ ³ ³ ³ Data Bus, when "0" (low) ³ + ÃÄÄÄÄÄÅÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ + ³ ³ ³ ³ ³ Write: Control signal for ³ + ³ 3 ³ _WR ³ I* ³ mP ³ transfer of data to FDC via Data ³ + ³ ³ ³ ³ ³ Bus, when "0" (low) ³ + ÃÄÄÄÄÄÅÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ + ³ 4 ³ _CS ³ I ³ mP ³ Chip Select: IC selected ³ + ³ ³ ³ ³ ³ when "0" (low), allowing ³ + ³ ³ ³ ³ ³ _RD and _WR to be enabled ³ + ÃÄÄÄÄÄÅÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ + ³ 5 ³ A0 ³ I* ³ mP ³ Data/Status Reg Select: ³ + ³ ³ ³ ³ ³ Select Data Reg (A0=1) or ³ + ³ ³ ³ ³ ³ Status Reg (A0=0) ³ + ³ ³ ³ ³ ³ content be sent to Data Bus ³ + ÃÄÄÄÄÄÅÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ + ³6-13 ³DB0-DB7 ³ I/O* ³ mP ³ Data Bus: Bidirectional ³ + ³ ³ ³ ³ ³ 8 - Bit Data Bus ³ + ÃÄÄÄÄÄÅÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ + ³ 14 ³ DRQ ³ O ³ DMA ³ Data DMA Request: DMA ³ + ³ ³ ³ ³ ³ Request is being made by ³ + ³ ³ ³ ³ ³ FDC when DRQ "1" ³ + ÃÄÄÄÄÄÅÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ + ³ 15 ³_DACK ³ I ³ DMA ³ DMA Acknowledge: DMA ³ + ³ ³ ³ ³ ³ cycle is active when "0" ³ + ³ ³ ³ ³ ³ (low) and Controller is ³ + ³ ³ ³ ³ ³ performing DMA transfer ³ + ÃÄÄÄÄÄÅÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ + ³ 16 ³ TC ³ I ³ DMA ³ Terminal Count: Indicates ³ + ³ ³ ³ ³ ³ the termination of a DMA ³ + ³ ³ ³ ³ ³ transfer when "1" (high) ³ + ÃÄÄÄÄÄÅÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ + ³ ³ ³ ³ ³ ³ + ³ 17 ³ IDX ³ I ³ FDD ³ Index: Indicates the beginning ³ + ³ ³ ³ ³ ³ of a disk track ³ + ÃÄÄÄÄÄÅÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ + ³ ³ ³ ³ ³ ³ + ³ 18 ³ INT ³ O ³ mP ³ Interrupt: Interrupt Request ³ + ³ ³ ³ ³ ³ Generated by FDC ³ + ÃÄÄÄÄÄÅÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ + ³ ³ ³ ³ ³ ³ + ³ 19 ³ CLK ³ I ³ ³ Check: Single Phase 6MHz ³ + ³ ³ ³ ³ ³ Squarewave Check ³ + ÃÄÄÄÄÄÅÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ + ³ ³ ³ ³ ³ ³ + ³ 20 ³ CND ³ ³ ³ Ground: D.C. Power Return ³ + ÀÄÄÄÄÄÁÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ + Note * :Disabled when _CS = 1. + + ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ + ³ ³ ³ ³ ³ + ³ PIN ³ I/O ³ CONNECTION ³ DESCRIPTION ³ + ÃÄÄÄÄÄÂÄÄÄÄÄÄÄÄ´ ³ ³ ³ + ³ ³ ³ ³ TO ³ ³ + ³ NO. ³ SYMBOL ³ ³ ³ ³ + ÃÄÄÄÄÄÅÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ + ³ 40 ³ Vcc ³ ³ ³ POWER ³ + ÃÄÄÄÄÄÅÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ + ³ ³ ³ ³ ³ Read Write/SEEK. When "1" ³ + ³ 39 ³_RWseek ³ O ³ FDD ³ (high) seek mods selected and ³ + ³ ³ ³ ³ ³ when "0" (low) Read/Write ³ + ³ ³ ³ ³ ³ mode selected ³ + ÃÄÄÄÄÄÅÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ + ³ ³ ³ ³ FDD ³ Low Current direction.Lawers ³ + ³ 38 ³ LGT/DIR³ O ³ ³ Write current on inner tracks ³ + ³ ³ ³ ³ ³ in Read/Write mode,determines ³ + ³ ³ ³ ³ ³ direction head will step ³ + ³ ³ ³ ³ ³ in Seek mode ³ + ÃÄÄÄÄÄÅÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ + ³ ³ ³ ³ ³ Fault Reset/Step: Resets fault ³ + ³ 37 ³ FR/STP ³ O ³ FDD ³ FF in FDD in Read/Write ³ + ³ ³ ³ ³ ³ mode, provides step pulses to ³ + ³ ³ ³ ³ ³ move head to another cylinder ³ + ³ ³ ³ ³ ³ in Seek mode ³ + ÃÄÄÄÄÄÅÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ + ³ ³ ³ ³ ³ Head Load: Command which ³ + ³ 36 ³ HDL ³ O ³ FDD ³ causes read/write head in FDD ³ + ³ ³ ³ ³ ³ to contact diskette ³ + ÃÄÄÄÄÄÅÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ + ³ ³ ³ ³ ³ Ready: Indicates FDD is ready ³ + ³ 35 ³ RDY ³ I ³ FDD ³ to send or receive data ³ + ÃÄÄÄÄÄÅÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ + ³ 34 ³ WP/TS ³ I ³ FDD ³ Write Protect/Two-Side: ³ + ³ ³ ³ ³ ³ Senses Write Protect status in ³ + ³ ³ ³ ³ ³ Read/Write mode,and Two ³ + ³ ³ ³ ³ ³ Side Media in Seek mode ³ + ÃÄÄÄÄÄÅÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ + ³ ³ ³ ³ ³ Fault/Track 0: Senses FDD ³ + ³ 33 ³FLT/TRK0³ I ³ FDD ³ fault condition in Read/Write ³ + ³ ³ ³ ³ ³ mode and Track 0 condition ³ + ÃÄÄÄÄÄÅÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ + ³ ³ ³ ³ ³ Precompensation (pre-shift): ³ + ³31,32³PS1,PS2 ³ O ³ FDD ³ Write precompensation status ³ + ³ ³ ³ ³ ³ during MFM mode, Determines ³ + ³ ³ ³ ³ ³ early,late,and normal times. ³ + ÃÄÄÄÄÄÅÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ + ³ ³ ³ ³ ³ Write Data: Serial clock and ³ + ³ 30 ³WR DATA ³ O ³ FDD ³ data bits to FDD ³ + ÃÄÄÄÄÄÅÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ + ³ ³ ³ ³ ³ ³ + ³28,29³DS1,DS0 ³ O ³ FDD ³ Drive Select: Selects FDD until ³ + ÃÄÄÄÄÄÅÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ + ³ 27 ³ HDSEL ³ O ³ FDD ³ Head Select: Head 1 selected ³ + ³ ³ ³ ³ ³ when "1" (high) Head 0 ³ + ³ ³ ³ ³ ³ selected when "0" (low) ³ + ÃÄÄÄÄÄÅÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ + ³ 26 ³ MFM ³ O ³ FLL ³ MFM Mode. MFM mode when ³ + ³ ³ ³ ³ ³ "1", FM mode when "0" ³ + ÀÄÄÄÄÄÁÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ + + + + ÚÄÄÄÄÄÂÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ + ³ ³ ³ ³ ³ Write Enable: Enables write ³ + ³ 25 ³ WE ³ O ³ FDD ³ data into FDD ³ + ³ ³ ³ ³ ³ ³ + ÃÄÄÄÄÄÅÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ + ³ ³ ³ ³ ³ VCO Sync: Inhibits VCO in ³ + ³ 24 ³ VCO ³ O ³ FLL ³ FLL when "0" (low), enables ³ + ³ ³ ³ ³ ³ VCO when "1" ³ + ÃÄÄÄÄÄÅÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ + ³ ³ ³ ³ ³ Read Data. Read data from ³ + ³ 23 ³RD DATA ³ I ³ FDD ³ FDD. containing clock and ³ + ³ ³ ³ ³ ³ data bits ³ + ÃÄÄÄÄÄÅÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ + ³ ³ ³ ³ ³ Data Window: Generated by FLL, ³ + ³ 22 ³ DW ³ I ³ FLL ³ and used to sample dats ³ + ³ ³ ³ ³ ³ from FDD ³ + ÃÄÄÄÄÄÅÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ + ³ ³ ³ ³ ³ Write Clock: Write dats rate to ³ + ³ 21 ³ WR CLK ³ I ³ ³ FDD FM = 500 kHZ,MFM=1 ³ + ³ ³ ³ ³ ³ MHz,with a pulse witdh of 250 ms³ + ³ ³ ³ ³ ³ for both FM and MFM ³ + ³ ³ ³ ³ ³ Must be unabled for all ³ + ³ ³ ³ ³ ³ operations, both Read and Write ³ + ÀÄÄÄÄÄÁÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ + + + + + + + + + + + + The DIO and RQM bits in the Status Register indicate: + when Data is eady and in which direction data will be transferred on the + Data Bus. + + + + READY + + ÍÍÍÍÍÍÍ» NOTÉÍÍÍÍÍÍ» ÉÍÍÍÍÍÍÍÍÍ» ÉÍÍÍÍÍ» ÉÍÍÍÍÍÍ͸ + REQUEST º º º º º º º º ³ + FOR º RDYº º º º º º º + MASTER ÈÍÍÍ͹ ÌÍͼ ÈÍÍÍ͹ ÈÍÍÍÍÍͼ ³ + (RQM) ³ ³ ³ + ³ ³ ³ ³ ³ + ³ ³ ³ + ³ ³ ³ ³ + ³ ³ ³ ³ ³ + ³ ³ ³ ³ + ÍÍÍÍÍ» ÉÍÍÍÍÑÍÍÍÍ» ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ + _WR º º ³ º º ³ ³ ³ ³ + È͹ È͹ ³ ³ + ³ ³ ³ ³ ³ ³ ³ + ÍÍÍÍÍÍÍØÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍ» ÉÍÍÍÍÍÍÍÍ» ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍ + ³ ³ ³ ³ º º ³ º º ³ ³ + _RD Èͼ Èͼ + ³ ³ ³ ³ ³ ³ ³ + ³ ³ ³ + ÚÄÄÄÄÂÄÄÄÄÂÄÄÄÄÄÄÂÄÄÂÄÄÄÄÂÄÄÄÄÂÄÄÄÄÂÄÄÄÄÄÂÄÄÄÄÂÄÅÄÄÄÄÄÄÄ¿ + ³ A ³ B ³ A ³B ³ A ³ C ³ D ³ C ³ D ³B³ A ³ + ÀÄÄÄÄÁÄÄÄÄÁÄÄÄÄÄÄÁÄÄÁÄÄÄÄÁÄÄÄÄÁÄÄÄÄÁÄÄÄÄÄÁÄÄÄÄÁÄÁÄÄÄÄÄÄÄÙ + + + + + NOTE : (A) - DATA REGISTER READY TO BE WRITTEN INTO BY PROCESSOR + (B) - DATA REGISTER NOT READY TO BE WRITTEN INTO AT PROCESSOR + (C) - DATA REGISTER READY FOR NEXR DATA BYTE TO BE READ BY THE + PROCESSOR. + (D) - DATA REGISTER NOT READY FOR NEXT DATA BYTE TO BE READ BY + PROCESSOR + + + + + + + Pic. STATUS REGISTER TIMING + + + + + + + + + The 8272 is capable of executing 15 different commands. Each command is + initiated by a multi-byte transfer from the proaessor, and the result after + execution of the command may also be a multi-byte transfer back to the + processor. Because of this multi-byte interchange of information between + the 8272 and the processor, it is convenient to consider each command as + consisting of three phases: + + Command Phase: The FDC receives all information required to perform + a particular operation from the processor. + + Execution Phase: The FDC performs the operation it was instructed + to do. + Result Phase: After completion of the operation, status and other + housekeeping information are made available to the + processor. + + During Command or Result Phases the Main Status Register (described earlier) + must be read by the processor before each byte of information is written into + or read from the Data Register. Bits D6 and D7 in the Main Status Register + must be in a 0 and 1 state, respectively,before each byte of the command word + may be written into the 8272. Many of the commands require multiple bytes, + and as a result the Main Status Register must be read prior to each byte + transfer to the 8272. On the other hand, during the Result Phase, D6 and D7 + in the Main Status Register must both 1's (D6=1 and D7=1) before reading each + byte from the Data Register. Note, this reading of the Main Status Register + before each byte transfer to the 8272 is required in only the Command and + Result Phases, and NOT during the Execution Phase. + + During the Execution Phase, the Main Status Register need not be read. If the + 8272 is in the NON-DMA Mode, then the receipt of each data byte (if 8272 is + reading data from FDD) is indicated by an interrupt signal on pin 18 (INT=1). + The generation of Read signal (_RD=0) will reset the interrupt as well as + output the Data onto the Data Bus. For example, if the processor connot handle + interrupts fast enough (every 13 ms for MFM mode) then it may poll the Main + Status Register and then bit D7 (RQM) functions just like the interrupt signal. + If a Write Command is in process then the _WR signal performs the reset to the + interrupt signal. + If the 8272 is in the DMA Mode, no interrupts are generated during the + Execution Phase. The 8272 generated DRQ's (DMA Requests) when each byte of + data is available. The DMA Controller responds to this request with both a + _DACK =0 (DMA Acknowledge) and a _RD = 0 (Read signal). + When the DMA Acknowlege signal goes low (_DACK=0) then the DMA Request is + reset (DRQ=0). If a Write Command has been prorammed then a _WR signal will + appear instead of _RD. After the Execution Phase has been completed (Terminal + Count has occurred) then an interrupt will occur (INT=1). This signifies the + beginning of the Result Phase. When the first byte of data is read during the + Result Phase, the interrupt is automatically reset (INT=0). + + + It is important to note that during the Result Phase all bytes shown in the + Command Table must be read. The Read Data Command, for example, has seven + bytes of data in the Result Phase. All seven bytes must be read in order to + succesfully complete the Read Data Command. The 8272 will not accept a new + command until all seven bytes have been read. Other commands may require fewer + bytes to be read during the Result Phase. + + The 8272 contains five Status Register. The Main Status Register mentioned + above may be read by the processor at any time. The other four Status + Registers (ST0,ST1,ST2, and ST3) are only available during the Result Phase, + and may be read only after successfully completing command. The particular + command which has been executed determines how many of the Status Register + will be read. + + The bytes of data which are sent to the 8272 in the Result Phase, must occur + in the order shown in the Command Table. That is ,the Command Code must be + sent first and the other bytes sent in the prescribed sequence. + No foreshortening of the Command of Result Phases are allowed. After the last + byte of data in the Command Phase is sent to the 8272 the Execution Phase + automatically starts. In a similar fashion, when the last byte of data is read + out in the Result Phase, the command is automtically ended and the 8272 is + ready for a new command. Acommand may be aborted by simply sending a Terminal + Count to pin 16 (TC=1). This is convenient means of ensuring that the + processor may always get the 8272's attention even if the disk system hangs + up in an abnormal manner. + + POLLING FEATURE OF THE 8272 + + After the Specify command has been sent to the 8272, the Drive Select Lines + DS0 and DS1 will automatically go into a polling mode. In between commands + (and between step pulses in the SEEK command) the 8272 polls all four FDD + looking for a change in the Ready line from any of the drives. If the Ready + line changes state (usually due to a door opening of closing) then the 8272 + will generate an interrupt. When Status Register 0 (ST0) is read (after Sense + interrupt Status is issued), Not Ready (NR) will be indicated. The polling of + the Ready line by the 8272 occurs continuously between instructions, thus + notifying the processor which drives are on or off line. + + + + + + + + + + + + TABLE 1. 8272 COMMAND SET + + ÚÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ + ³ ³ ³ DATA BUS ³ ³ + ³ ³ ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ³ + ³PHASE ³ R/W ³ D7 D6 D5 D4 D3 D2 D1 D0 ³REMARKS ³ + ÃÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ + ³ READ DATA ³ + ÃÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ + ³Command ³ W ³ MT MFM SK 0 0 1 1 0 ³Command Codes ³ + ³ ³ W ³ 0 0 0 0 0 HDS DS1 DS0³ ³ + ³ ³ W ³ ³ ³ + ³ ³ W ³-------------C-------------------³Sector ID information ³ + ³ ³ W ³-------------H-------------------³prior to Command ³ + ³ ³ W ³-------------R-------------------³execution ³ + ³ ³ W ³-------------N-------------------³ ³ + ³ ³ W ³------------EOT------------------³ ³ + ³ ³ W ³------------GPL------------------³ ³ + ³ ³ W ³------------DTL------------------³ ³ + ³ ³ ³ ³ ³ + ³Execution³ ³ ³Data transfer ³ + ³ ³ ³ ³between the FDD ³ + ³ ³ ³ ³and the main - system ³ + ³ ³ ³ ³ ³ + ³ ³ ³ ³ ³ + ³Result ³ R ³------------ST0------------------³Status information ³ + ³ ³ R ³------------ST1------------------³after Command ³ + ³ ³ R ³------------ST2------------------³execution ³ + ³ ³ R ³-------------C-------------------³ ³ + ³ ³ R ³-------------H-------------------³Sector ID information ³ + ³ ³ R ³-------------R-------------------³after command ³ + ³ ³ R ³-------------N-------------------³execution ³ + ÀÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ + + + + + + + + + + + + + + + + + + + ÚÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ + ³ ³ ³ DATA BUS ³ ³ + ³ ³ ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ³ + ³PHASE ³ R/W ³ D7 D6 D5 D4 D3 D2 D1 D0 ³REMARKS ³ + ÃÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ + ³ READ DELETED DATA ³ + ÃÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ + ³Command ³ W ³ MT MFM SK 0 1 1 0 0 ³Command Codes ³ + ³ ³ W ³ 0 0 0 0 0 HDS DS1 DS0³ ³ + ³ ³ W ³ ³ ³ + ³ ³ W ³-------------C-------------------³Sector ID information ³ + ³ ³ W ³-------------H-------------------³prior to Command ³ + ³ ³ W ³-------------R-------------------³execution ³ + ³ ³ W ³-------------N-------------------³ ³ + ³ ³ W ³------------EOT------------------³ ³ + ³ ³ W ³------------GPL------------------³ ³ + ³ ³ W ³------------DTL------------------³ ³ + ³ ³ ³ ³ ³ + ³Execution³ ³ ³Data transfer ³ + ³ ³ ³ ³between the FDD ³ + ³ ³ ³ ³and the main - system ³ + ³ ³ ³ ³ ³ + ³ ³ ³ ³ ³ + ³Result ³ R ³------------ST0------------------³Status information ³ + ³ ³ R ³------------ST1------------------³after Command ³ + ³ ³ R ³------------ST2------------------³execution ³ + ³ ³ R ³-------------C-------------------³ ³ + ³ ³ R ³-------------H-------------------³Sector ID information ³ + ³ ³ R ³-------------R-------------------³after command ³ + ³ ³ R ³-------------N-------------------³execution ³ + ÀÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ + + + + + + + + + + + + + + + ÚÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ + ³ ³ ³ DATA BUS ³ ³ + ³ ³ ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ³ + ³PHASE ³ R/W ³ D7 D6 D5 D4 D3 D2 D1 D0 ³REMARKS ³ + ÃÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ + ³ WRITE DATA ³ + ÃÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ + ³Command ³ W ³ MT MFM 0 0 0 1 0 1 ³Command Codes ³ + ³ ³ W ³ 0 0 0 0 0 HDS DS1 DS0³ ³ + ³ ³ W ³ ³ ³ + ³ ³ W ³-------------C-------------------³Sector ID information ³ + ³ ³ W ³-------------H-------------------³prior to Command ³ + ³ ³ W ³-------------R-------------------³execution ³ + ³ ³ W ³-------------N-------------------³ ³ + ³ ³ W ³------------EOT------------------³ ³ + ³ ³ W ³------------GPL------------------³ ³ + ³ ³ W ³------------DTL------------------³ ³ + ³ ³ ³ ³ ³ + ³Execution³ ³ ³Data transfer ³ + ³ ³ ³ ³between the FDD ³ + ³ ³ ³ ³and the main - system ³ + ³ ³ ³ ³ ³ + ³ ³ ³ ³ ³ + ³Result ³ R ³------------ST0------------------³Status information ³ + ³ ³ R ³------------ST1------------------³after Command ³ + ³ ³ R ³------------ST2------------------³execution ³ + ³ ³ R ³-------------C-------------------³ ³ + ³ ³ R ³-------------H-------------------³Sector ID information ³ + ³ ³ R ³-------------R-------------------³after command ³ + ³ ³ R ³-------------N-------------------³execution ³ + ÀÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ + + + + + + + + + + + + + + ÚÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ + ³ ³ ³ DATA BUS ³ ³ + ³ ³ ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ³ + ³PHASE ³ R/W ³ D7 D6 D5 D4 D3 D2 D1 D0 ³REMARKS ³ + ÃÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ + ³ WRITE DELETED DATA ³ + ÃÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ + ³Command ³ W ³ MT MFM 0 0 1 0 0 1 ³Command Codes ³ + ³ ³ W ³ 0 0 0 0 0 HDS DS1 DS0³ ³ + ³ ³ W ³ ³ ³ + ³ ³ W ³-------------C-------------------³Sector ID information ³ + ³ ³ W ³-------------H-------------------³prior to Command ³ + ³ ³ W ³-------------R-------------------³execution ³ + ³ ³ W ³-------------N-------------------³ ³ + ³ ³ W ³------------EOT------------------³ ³ + ³ ³ W ³------------GPL------------------³ ³ + ³ ³ W ³------------DTL------------------³ ³ + ³ ³ ³ ³ ³ + ³Execution³ ³ ³Data transfer ³ + ³ ³ ³ ³between the FDD ³ + ³ ³ ³ ³and the main - system ³ + ³ ³ ³ ³ ³ + ³ ³ ³ ³ ³ + ³Result ³ R ³------------ST0------------------³Status information ³ + ³ ³ R ³------------ST1------------------³after Command ³ + ³ ³ R ³------------ST2------------------³execution ³ + ³ ³ R ³-------------C-------------------³ ³ + ³ ³ R ³-------------H-------------------³Sector ID information ³ + ³ ³ R ³-------------R-------------------³after command ³ + ³ ³ R ³-------------N-------------------³execution ³ + ÀÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ + + + + + + + + + + + + + ÚÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ + ³ ³ ³ DATA BUS ³ ³ + ³ ³ ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ³ + ³PHASE ³ R/W ³ D7 D6 D5 D4 D3 D2 D1 D0 ³REMARKS ³ + ÃÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ + ³ READ TRACK ³ + ÃÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ + ³Command ³ W ³ 0 MFM SK 0 0 0 1 0 ³Command Codes ³ + ³ ³ W ³ 0 0 0 0 0 HDS DS1 DS0³ ³ + ³ ³ W ³ ³ ³ + ³ ³ W ³-------------C-------------------³Sector ID information ³ + ³ ³ W ³-------------H-------------------³prior to Command ³ + ³ ³ W ³-------------R-------------------³execution ³ + ³ ³ W ³-------------N-------------------³ ³ + ³ ³ W ³------------EOT------------------³ ³ + ³ ³ W ³------------GPL------------------³ ³ + ³ ³ W ³------------DTL------------------³ ³ + ³ ³ ³ ³ ³ + ³Execution³ ³ ³Data transfer ³ + ³ ³ ³ ³between the FDD ³ + ³ ³ ³ ³and the main - system. ³ + ³ ³ ³ ³FDC read all of ³ + ³ ³ ³ ³cylinders contents ³ + ³ ³ ³ ³from index hole to ³ + ³ ³ ³ ³EOT ³ + ³ ³ ³ ³ ³ + ³ ³ ³ ³ ³ + ³Result ³ R ³------------ST0------------------³Status information ³ + ³ ³ R ³------------ST1------------------³after Command ³ + ³ ³ R ³------------ST2------------------³execution ³ + ³ ³ R ³-------------C-------------------³ ³ + ³ ³ R ³-------------H-------------------³Sector ID information ³ + ³ ³ R ³-------------R-------------------³after command ³ + ³ ³ R ³-------------N-------------------³execution ³ + ÀÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ + + + + + + + + + + + + + + ÚÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ + ³ ³ ³ DATA BUS ³ ³ + ³ ³ ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ³ + ³PHASE ³ R/W ³ D7 D6 D5 D4 D3 D2 D1 D0 ³REMARKS ³ + ÃÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ + ³ READ ID ³ + ÃÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ + ³Command ³ W ³ 0 MFM 0 0 1 0 1 0 ³Command Codes ³ + ³ ³ W ³ 0 0 0 0 0 HDS DS1 DS0³ ³ + ³ ³ ³ ³ ³ + ³ ³ ³ ³ ³ + ³ ³ ³ ³ ³ + ³Execution³ ³ ³The first correct ID ³ + ³ ³ ³ ³information on the ³ + ³ ³ ³ ³Cylinder is stored in ³ + ³ ³ ³ ³Data Register ³ + ³ ³ ³ ³ ³ + ³ ³ ³ ³ ³ + ³ ³ ³ ³ ³ + ³ ³ ³ ³ ³ + ³ ³ ³ ³ ³ + ³Result ³ R ³------------ST0------------------³Status information ³ + ³ ³ R ³------------ST1------------------³after Command ³ + ³ ³ R ³------------ST2------------------³execution ³ + ³ ³ R ³-------------C-------------------³ ³ + ³ ³ R ³-------------H-------------------³Sector ID information ³ + ³ ³ R ³-------------R-------------------³during Execution ³ + ³ ³ R ³-------------N-------------------³Phase. ³ + ÀÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ + + + + + + + + + + + + + + + + + + + + ÚÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ + ³ ³ ³ DATA BUS ³ ³ + ³ ³ ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ³ + ³PHASE ³ R/W ³ D7 D6 D5 D4 D3 D2 D1 D0 ³REMARKS ³ + ÃÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ + ³ FORMAT A TRACK ³ + ÃÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ + ³Command ³ W ³ 0 MFM 0 0 1 1 0 1 ³Command Codes ³ + ³ ³ W ³ 0 0 0 0 0 HDS DS1 DS0³ ³ + ³ ³ W ³-------------N-------------------³Bytes/Sector ³ + ³ ³ W ³------------SC-------------------³Sectors/Cylinder ³ + ³ ³ W ³------------GPL------------------³Gap 3 ³ + ³ ³ W ³-------------D-------------------³Filler byte ³ + ³ ³ ³ ³FDC formats an ³ + ³ ³ ³ ³entire cylinder ³ + ³Execution³ ³ ³ ³ + ³ ³ ³ ³ ³ + ³ ³ ³ ³ ³ + ³ ³ ³ ³ ³ + ³ ³ ³ ³ ³ + ³ ³ ³ ³ ³ + ³Result ³ R ³------------ST0------------------³Status information ³ + ³ ³ R ³------------ST1------------------³after Command ³ + ³ ³ R ³------------ST2------------------³execution ³ + ³ ³ R ³-------------C-------------------³ ³ + ³ ³ R ³-------------H-------------------³In this case, the ID ³ + ³ ³ R ³-------------R-------------------³information has no ³ + ³ ³ R ³-------------N-------------------³meaning ³ + ÀÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ + + + + + + + + + + + + + + + ÚÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ + ³ ³ ³ DATA BUS ³ ³ + ³ ³ ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ³ + ³PHASE ³ R/W ³ D7 D6 D5 D4 D3 D2 D1 D0 ³REMARKS ³ + ÃÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ + ³ SCAN EQUAL ³ + ÃÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ + ³Command ³ W ³ MT MFM SK 1 0 0 0 1 ³Command Codes ³ + ³ ³ W ³ 0 0 0 0 0 HDS DS1 DS0³ ³ + ³ ³ W ³ ³ ³ + ³ ³ W ³-------------C-------------------³Sector ID information ³ + ³ ³ W ³-------------H-------------------³prior to Command ³ + ³ ³ W ³-------------R-------------------³execution ³ + ³ ³ W ³-------------N-------------------³ ³ + ³ ³ W ³------------EOT------------------³ ³ + ³ ³ W ³------------GPL------------------³ ³ + ³ ³ W ³------------DTL------------------³ ³ + ³ ³ ³ ³ ³ + ³Execution³ ³ ³Data compared ³ + ³ ³ ³ ³between the FDD ³ + ³ ³ ³ ³and the main - system. ³ + ³ ³ ³ ³ ³ + ³ ³ ³ ³ ³ + ³ ³ ³ ³ ³ + ³ ³ ³ ³ ³ + ³ ³ ³ ³ ³ + ³ ³ ³ ³ ³ + ³Result ³ R ³------------ST0------------------³Status information ³ + ³ ³ R ³------------ST1------------------³after Command ³ + ³ ³ R ³------------ST2------------------³execution ³ + ³ ³ R ³-------------C-------------------³ ³ + ³ ³ R ³-------------H-------------------³Sector ID information ³ + ³ ³ R ³-------------R-------------------³after command ³ + ³ ³ R ³-------------N-------------------³execution ³ + ÀÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ + + + + + + + + + + + + + ÚÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ + ³ ³ ³ DATA BUS ³ ³ + ³ ³ ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ³ + ³PHASE ³ R/W ³ D7 D6 D5 D4 D3 D2 D1 D0 ³REMARKS ³ + ÃÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ + ³ SCAN LOW OR EQUAL ³ + ÃÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ + ³Command ³ W ³ MT MFM SK 1 1 0 0 1 ³Command Codes ³ + ³ ³ W ³ 0 0 0 0 0 HDS DS1 DS0³ ³ + ³ ³ W ³ ³ ³ + ³ ³ W ³-------------C-------------------³Sector ID information ³ + ³ ³ W ³-------------H-------------------³prior to Command ³ + ³ ³ W ³-------------R-------------------³execution ³ + ³ ³ W ³-------------N-------------------³ ³ + ³ ³ W ³------------EOT------------------³ ³ + ³ ³ W ³------------GPL------------------³ ³ + ³ ³ W ³------------STP------------------³ ³ + ³ ³ ³ ³ ³ + ³Execution³ ³ ³Data compared ³ + ³ ³ ³ ³between the FDD ³ + ³ ³ ³ ³and the main - system. ³ + ³ ³ ³ ³ ³ + ³ ³ ³ ³ ³ + ³ ³ ³ ³ ³ + ³ ³ ³ ³ ³ + ³ ³ ³ ³ ³ + ³ ³ ³ ³ ³ + ³Result ³ R ³------------ST0------------------³Status information ³ + ³ ³ R ³------------ST1------------------³after Command ³ + ³ ³ R ³------------ST2------------------³execution ³ + ³ ³ R ³-------------C-------------------³ ³ + ³ ³ R ³-------------H-------------------³Sector ID information ³ + ³ ³ R ³-------------R-------------------³after command ³ + ³ ³ R ³-------------N-------------------³execution ³ + ÀÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ + + + + + ÚÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ + ³ ³ ³ DATA BUS ³ ³ + ³ ³ ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ³ + ³PHASE ³ R/W ³ D7 D6 D5 D4 D3 D2 D1 D0 ³REMARKS ³ + ÃÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ + ³ SCAN HIGH OR EQUAL ³ + ÃÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ + ³Command ³ W ³ MT MFM SK 1 1 1 0 1 ³Command Codes ³ + ³ ³ W ³ 0 0 0 0 0 HDS DS1 DS0³ ³ + ³ ³ W ³ ³ ³ + ³ ³ W ³-------------C-------------------³Sector ID information ³ + ³ ³ W ³-------------H-------------------³prior to Command ³ + ³ ³ W ³-------------R-------------------³execution ³ + ³ ³ W ³-------------N-------------------³ ³ + ³ ³ W ³------------EOT------------------³ ³ + ³ ³ W ³------------GPL------------------³ ³ + ³ ³ W ³------------STP------------------³ ³ + ³ ³ ³ ³ ³ + ³Execution³ ³ ³Data compared ³ + ³ ³ ³ ³between the FDD ³ + ³ ³ ³ ³and the main - system. ³ + ³ ³ ³ ³ ³ + ³ ³ ³ ³ ³ + ³ ³ ³ ³ ³ + ³ ³ ³ ³ ³ + ³ ³ ³ ³ ³ + ³ ³ ³ ³ ³ + ³Result ³ R ³------------ST0------------------³Status information ³ + ³ ³ R ³------------ST1------------------³after Command ³ + ³ ³ R ³------------ST2------------------³execution ³ + ³ ³ R ³-------------C-------------------³ ³ + ³ ³ R ³-------------H-------------------³Sector ID information ³ + ³ ³ R ³-------------R-------------------³after command ³ + ³ ³ R ³-------------N-------------------³execution ³ + ÀÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ + + + + + ÚÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ + ³ ³ ³ DATA BUS ³ ³ + ³ ³ ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ³ + ³PHASE ³ R/W ³ D7 D6 D5 D4 D3 D2 D1 D0 ³REMARKS ³ + ÃÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ + ³ RECALIBRATE ³ + ÃÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ + ³Command ³ W ³ 0 0 0 0 0 1 1 1 ³Command Codes ³ + ³ ³ W ³ 0 0 0 0 0 0 DS1 DS0³ ³ + ³ ³ ³ ³ ³ + ³ ³ ³ ³ ³ + ³Execution³ ³ ³Head retracted to ³ + ³ ³ ³ ³Track 0 ³ + ÀÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ + + + + ÚÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ + ³ ³ ³ DATA BUS ³ ³ + ³ ³ ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ³ + ³PHASE ³ R/W ³ D7 D6 D5 D4 D3 D2 D1 D0 ³REMARKS ³ + ÃÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ + ³ SENSE INTERRUPT STATUS ³ + ÃÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ + ³Command ³ W ³ 0 0 0 0 1 0 0 0 ³Command Codes ³ + ³ ³ ³ ³ ³ + ³ ³ ³ ³ ³ + ³ ³ ³ ³ ³ + ³Result ³ R ³-------------ST0-----------------³Status information at ³ + ³ ³ R ³-------------PCN-----------------³the end of each seek ³ + ³ ³ ³ ³operation about the ³ + ³ ³ ³ ³FDC ³ + ³ ³ ³ ³ ³ + ÀÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ + + + + + ÚÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ + ³ ³ ³ DATA BUS ³ ³ + ³ ³ ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ³ + ³PHASE ³ R/W ³ D7 D6 D5 D4 D3 D2 D1 D0 ³REMARKS ³ + ÃÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ + ³ SPECIFY ³ + ÃÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ + ³Command ³ W ³ 0 0 0 0 0 0 1 1 ³Command Codes ³ + ³ ³ ³ ³ ³ + ³ ³ W ³----SRT------------------HUT-----³ ³ + ³ ³ ³ ³ ³ + ³ ³ W ³----HLT------------------------ND³ ³ + ³ ³ ³ ³ ³ + ³ ³ ³ ³ ³ + ³ ³ ³ ³ ³ + ³ ³ ³ ³ ³ + ÀÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ + + + + + + ÚÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ + ³ ³ ³ DATA BUS ³ ³ + ³ ³ ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ³ + ³PHASE ³ R/W ³ D7 D6 D5 D4 D3 D2 D1 D0 ³REMARKS ³ + ÃÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ + ³ SENSE DRIVE STATUS ³ + ÃÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ + ³Command ³ W ³ 0 0 0 0 0 1 0 0 ³Command Codes ³ + ³ ³ ³ ³ ³ + ³ ³ W ³ 0 0 0 0 0 HDS DS1 DS0³ ³ + ³ ³ ³ ³ ³ + ³Result ³ R ³------------ST3------------------³ Status information ³ + ³ ³ ³ ³ about FDD ³ + ³ ³ ³ ³ ³ + ³ ³ ³ ³ ³ + ³ ³ ³ ³ ³ + ÀÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ + + + + + + ÚÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ + ³ ³ ³ DATA BUS ³ ³ + ³ ³ ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ³ + ³PHASE ³ R/W ³ D7 D6 D5 D4 D3 D2 D1 D0 ³REMARKS ³ + ÃÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ + ³ SEEK ³ + ÃÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ + ³Command ³ W ³ 0 0 0 0 1 1 1 1 ³Command Codes ³ + ³ ³ ³ ³ ³ + ³ ³ W ³ 0 0 0 0 0 HDS DS1 DS0³ ³ + ³ ³ ³ ³ ³ + ³ ³ W ³------------NCN------------------³ Status information ³ + ³ ³ ³ ³ about FDD ³ + ³Execution³ ³ ³ ³ + ³ ³ ³ ³Head is positioned ³ + ³ ³ ³ ³over proper Cylinder ³ + ³ ³ ³ ³on Diskette ³ + ÀÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ + + + + + + ÚÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ + ³ ³ ³ DATA BUS ³ ³ + ³ ³ ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ³ + ³PHASE ³ R/W ³ D7 D6 D5 D4 D3 D2 D1 D0 ³REMARKS ³ + ÃÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ + ³ INVALID ³ + ÃÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ + ³Command ³ W ³ -------INVALID CODE------------³Invalid Command ³ + ³ ³ ³ ³Codes (NoOp - FDC ³ + ³ ³ ³ ³goes into Standby ³ + ³ ³ ³ ³State) ³ + ³ ³ ³ ³ ³ + ³ ³ ³ ³ ³ + ³Result ³ R ³------------ST0------------------³ST0=80 HEX. ³ + ÀÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ + + + + + + + Note: 1. Symbols used in this table are described at the end of this section. + 2. A0 = 1 for all operations. + 3. X = Don't care, usually made to equal binary 0. + + + + + TABLE 2. COMMAND MNEMONICS + ÚÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ + ³ SYMBOL ³ NAME ³ DESCRIPTION ³ + ³ ³ ³ ³ + ÃÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ + ³ ³ ³ ³ + ³ A0 ³Addres line 0 ³A0 controls selection of Main Status ³ + ³ ³ ³ ³ + ³ ³ ³Register (A0=0) or Data Register (A0=1) ³ + ÃÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ + ³ C ³Cylinder Number ³C stands for the current selected Cylinder ³ + ³ ³ ³track number 0 trough 76 of the medium. ³ + ÃÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ + ³ D ³Date ³D stands for the data pattern which is ³ + ³ ³ ³going to be written into a Sector. ³ + ÃÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ + ³ D7-D0 ³Data Bus ³8-bit Data where D7 is the most ³ + ³ ³ ³significant bit,and D0 is the least ³ + ³ ³ ³significant bit. ³ + ÃÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ + ³ DS0,DS1 ³Drive Select ³DS stands for a selected drive number 0 ³ + ³ ³ ³or 1. ³ + ÃÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ + ³ DTL ³Date Length ³When N is defined as 00,DTL stands for ³ + ³ ³ ³the data length which users are going to ³ + ³ ³ ³read out or write into the Sector. ³ + ÃÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ + ³ EOT ³ End of Track ³EOT stands for the final Sector number of ³ + ³ ³ ³a Cylinder. ³ + ÃÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ + ³ GPL ³ Gap Length ³GPL stands for the length of Gap 3 ³ + ³ ³ ³(spacing between Sector excluding VCO ³ + ³ ³ ³Sync.Field). ³ + ÃÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ + ³ H ³ Head Addres ³ H stands for head number 0 or 1,as ³ + ³ ³ ³ specified in ID field. ³ + ÃÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ + ³ HDS ³ Head Select ³ HDS stands for a selected head number 0 ³ + ³ ³ ³ or 1 (H=HDS in all command words). ³ + ÃÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ + ³ HLT ³ Head Load Time ³ HLT stands for the head load time in the ³ + ³ ³ ³ FDD (2 to 254 ms in 2 ms increment). ³ + ÃÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ + ³ HUT ³ Head Unload Time³ HUT stands for the head unload time after ³ + ³ ³ ³ a read or write operation has occure (16 ³ + ³ ³ ³ to 240 ms in 16 ms increments). ³ + ÃÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ + ³ ³ ³ If MF is low, FM mode is selected end if ³ + ³ MFM ³FM or MFM Mode ³ it is high, MFM mode is selected ³ + ÃÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ + ³ MT ³Multi-Track ³ If MT is high, a multi-track operation is to ³ + ³ ³ ³ be performed (a cylinder under both HD0 ³ + ³ ³ ³ and HD1 will be read or written). ³ + ÃÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ + ³ ³ ³ ³ + ³ N ³ Number ³ N stands for the number of data bytes ³ + ³ ³ ³ written in a Sector. ³ + ÀÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ + + + + + + + + ÚÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ + ³ SYMBOL ³ NAME ³ DESCRIPTION ³ + ³ ³ ³ ³ + ÃÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ + ³ ³ ³ ³ + ³ NCN ³New Cylinder ³NCN stands for a new Cylinder number, ³ + ³ ³ Number ³which is going to be reachad as a result ³ + ³ ³ ³of the Seek operation.Desired position of Head.³ + ÃÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ + ³ ND ³NON-DMA Mode ³ND stands for operation in the NON-DMA Mode ³ + ³ ³ ³ ³ + ÃÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ + ³ PCN ³Present Cylinder ³PCN stands for the Cylinder number at the ³ + ³ ³ Number. ³completion of SENSE INTERRUPT STATUS Command. ³ + ³ ³ ³Position of Head at present time. ³ + ÃÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ + ³ ³ ³ ³ + ³ R ³Record ³It stands for the Sector number, which will ³ + ³ ³ ³be read or writen ³ + ³ ³ ³ ³ + ÃÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ + ³ ³ ³ ³ + ³ R/W ³Read/Write ³Read or Write signal ³ + ³ ³ ³or 1. ³ + ÃÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ + ³ SC ³Sector ³SC indicates the number of Sectors per ³ + ³ ³ ³cylinder ³ + ³ ³ ³ ³ + ÃÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ + ³ ³ ³ ³ + ³ SK ³ Skip ³SK stands for Skip Deleted Data Addres Mark ³ + ³ ³ ³ ³ + ÃÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ + ³ ³ ³ ³ + ³ SRT ³ Step Rate Time ³SRT stands for the Stepping Rate for the ³ + ³ ³ ³FDD (1 to 16 ms in 1 ms increments).The same ³ + ³ ³ ³Stepping Rate applies to all drives (F=1ms ³ + ³ ³ ³E=2ms. etc) ³ + ÃÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ + ³ ST0 ³ Status 0 ³ST0-3 stand for one of four registers which ³ + ³ ST1 ³ Status 1 ³ store the status information after a command ³ + ³ ST2 ³ Status 2 ³ has been executed. This information is ³ + ³ ST3 ³ Status 3 ³ availaible during the result phase after ³ + ³ ³ ³ command execution. These registers should not ³ + ³ ³ ³ be cofused with the main status register ³ + ³ ³ ³ (selected by A0 = 0). ST0-3 may be read only ³ + ³ ³ ³ after a command has been executed and contain ³ + ³ ³ ³ information relevant to that particular ³ + ³ ³ ³ command. ³ + ÃÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ + ³ ³ ³ During a Scan operation, if STP=1, the data ³ + ³ STP ³ ³ in contiguous sectors is compared byte by byte³ + ³ ³ ³ with data sent from the processor (or DMA), ³ + ³ ³ ³ and if STP=2, then alternats sectors are read ³ + ³ ³ ³ and compared. ³ + ÀÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ + + + + + + + COMMAND DESCRIPTIONS + + + During the Commnd Phase, the Main Status Register must be polled by the CPU + before each byte is written into the Data Register. The DIO (DB6) and RQM + (DB7) bits in the Main Status Register must be in the "0" and "1" states + respectivety, before each byte of the command may be written into the 8272. + The beginning of the execution phase for any of these commands will chuse + DIO and RQM to switch to "1" and "0" states respectively. + + + READ DATA + + + A set of nine (9) byte words are required to place the FDC into the Read Data + Mode. After the Read Data commands has been issued the FDC loads the head + (if it is in the unloaded state), waits the specified head setting time + (defined in the Specify Command), and begins reading ID Address Mark and ID + fields. When the current sector number ("R") stored in the ID Register (IDR) + compares with the sector number read off the diskette, then FDC outputs data + (from the data field) byte-byte to the main system via the data bus. + + After completion of the read operatipn from the current sector, the Sector + Number is incremented by one , and the data from the next sector is read and + output on the data bus. This continuous read function is called a "Multi- + Sector Read Operation". The Read Data Command may be the receipt of a Terminal + Count signal. Upon receipt of this signal, the FDC stops outputting data to + the processor, but will continue to read data from the current sector, check + CRC (Cyclic Redundancy Count) bytes, and then at the end of the sector + terminate the Read Data Command. + + The amount of data wchich can be hanled with a single command to the FDC + depends upon MT (multo-track), MFM (MFM/FM), and N (Number of Bytes/Sector). + Table 3 below shows the Transfer Capacity. + + + + + TABLE 3. TRANSFER CAPACITY + +ÚÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄ¿ +³Multi-Track³ MFM/FM³ Bytes/Sector³ Maximum Transfer Capacity ³ Final ³ +³ MT ³ MFM ³ N ³ (Bytes/Sector)(Number of Sectors³ Sector ³ +³ ³ ³ ³ ³ Read ³ +³ ³ ³ ³ ³ from ³ +³ ³ ³ ³ ³ Diskette³ +ÃÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄ´ +³ 0 ³ 0 ³ 00 ³ (128)(26)=3.325 ³26 at ³ +³ 0 ³ 1 ³ 01 ³ (256)(26)=6.656 ³Side 0 or³ +³ ³ ³ ³ ³Side 1 ³ +ÃÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄ´ +³ ³ ³ ³ ³ ³ +³ 1 ³ 0 ³ 00 ³ (128)(52)=6.656 ³ 26 ³ +³ 1 ³ 1 ³ 01 ³ (256)(52)=13.312 ³ at Side1³ +ÃÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄ´ +³ ³ ³ ³ ³Side 1 ³ +³ 0 ³ 0 ³ 01 ³ (256)(15)=3.840 ³ or 0 ³ +³ 0 ³ 1 ³ 02 ³ (512)(15)=7.680 ³ 15 ³ +ÃÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄ´ +³ ³ ³ ³ ³ 15 ³ +³ 1 ³ 0 ³ 01 ³ (256)(30)=7.680 ³ at ³ +³ 1 ³ 1 ³ 02 ³ (512)(30)=15.360 ³Side 1 ³ +ÃÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄ´ +³ ³ ³ ³ ³8 at Side³ +³ 0 ³ 0 ³ 02 ³ (512)(8)=4.095 ³0 or 8 at³ +³ 0 ³ 1 ³ 03 ³ (1024)(8)=8.192 ³Side 1 ³ +ÃÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄ´ +³ ³ ³ ³ ³ ³ +³ 1 ³ 0 ³ 02 ³ (512)(16)=8.192 ³8 at ³ +³ 1 ³ 1 ³ 03 ³ (1024)(16)=16.384 ³Side 1 ³ +³ ³ ³ ³ ³ ³ +ÀÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÙ + + + + + + The "multi-track" function (MT) allows the FDC to read data from sides of the + diskette. For a particular cylinder, data will be transferred starting at + Sector 1,Side 0 and completing at Sector L, Side 1 ( Sector L- last sector + on the side). Note, this function pertains to only one cylinder (the same + track ) on each side of the diskette. + + When N=0, then DTL defines the length which the FDC must treat as a sector. + If DTL is smaller than the actual data length in a Sector, the data beyong DTL + in the Sector, is not sent to the Data Bus. The FDC reads (internally) the + complete Sector performing the CRC check, and depending upon the manner of + command termination, may perform a Multi-Sector Read Operation. When N is + no-zero, then DTL has no meaning and should be set to 0FFH. + + At the completion of the Read Data Command, the head is not unloaded until + after Head Unload Time inteval (specified in the Specify Command) has elapsed. + If the processor issues another command before the head unloads then the head + setting time may be saved between subsequent reads. This time out is + particulary valuable when a diskette is copied from one drive to another. + + + If the FDC detects the Index Hole twice without finding the riht sector, + (indicated in "R"), then the FDC sets the ND (No Data) flag in Status Register + 1 to a 1 (high), and terminates the Read Data Command. (Status Register 0 also + has bits 7 and 6 set to 0 and 1 respectively). + + After reading the ID and Data Fields in each sector, the FDC checks the CRC + bytes . If a read error is detected (incorrect CRC in ID field), the FDC sets + the DE (Data Error) flag in Status Register 1 to a 1 (high), and if a CRC + error occurs in the Data Field the FDC also sets the DD(Data Error in Data + Field) flag in Status Register 2 to a 1 (high), and terminates the Read Data + Command. (Status Register 0 also has bits 7 and 6 set to 0 and 1 respectively) + + + If the FDC reads a Deleted Data Address Mark off the diskette, and the SK bit + (bit D5) in the first Command Word) is not set (SK=0), then the FDC sets the + CM (Control Mark) flag in Status Register 2 to a 1 (high), and terminates the + Read Data Command,after reading all the data in the Sector. If SK=1, the FDC + skips the sector with the Deleted Data Address Mark and reads the next sector. + + During disk data transfers between the FDC and the processor, via data bus, + FDC must be serviced by the processor every 27 ms in the FM Mode, and every + 13 ms in the MFM Mode, or the FDC sets the OR (Over Run) flag in Status + Register 1 to a 1 (high), and terminates the Read Data Command. + + If the processor terminates a read (or write) operation in the FDC, then the + ID information in the Result Phase is dependent upon the state of the MT bit + and EOT byte. Table 4 shows the values for C,H,R, and N, when the processor + terminates the Command. + + + + + TABLE 4. ID INFORMATION WHEN PROCESSOR TERMINATES COMMAND + +ÚÄÄÄÄÂÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ +³ MT ³ EOT ³ Final Sector Transferred ³ ID information at Result Phase ³ +³ ³ ³ Processor ÃÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄ´ +³ ³ ³ ³ C ³ H ³ R ³ N ³ +ÃÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄ´ +³ ³ 1A ³Sector 1 to 25 at Side 0 ³ NC ³ NC ³ R+1 ³ NC ³ +³ ³ ³ ³ ³ ³ ³ ³ +³ ³ 0F ³Sector 1 to 14 at Side 0 ³ ³ ³ ³ ³ +³ ³ ³ ³ ³ ³ ³ ³ +³ ³ 08 ³Sector 1 to 7 at Side 0 ³ ³ ³ ³ ³ +³ ÃÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄ´ +³ ³ 1A ³Sector 26 at Side 0 ³ ³ ³ ³ ³ +³ ³ 0F ³Sector 15 at Side 0 ³ C+1 ³ NC ³ R=01 ³ NC ³ +³ ³ 08 ³Sector 8 at Side 0 ³ ³ ³ ³ ³ +³ 0 ÃÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄ´ +³ ³ ³ ³ ³ ³ ³ ³ +³ ³ 1A ³Sector 1 to 25 at Side 1 ³ ³ ³ ³ ³ +³ ³ 0F ³Sector 1 to 14 at Side 1 ³ ³ ³ ³ ³ +³ ³ 08 ³Sector 1 to 7 at Side 1 ³ NC ³ NC ³ R+1 ³ NC ³ +³ ÃÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄ´ +³ ³ ³ ³ ³ ³ ³ ³ +³ ³ 1A ³Sector 26 at Side 1 ³ ³ ³ ³ ³ +³ ³ 0F ³Sector 15 at Side 1 ³ C+1 ³ NC ³ R=01 ³ NC ³ +³ ³ 08 ³SEctor 8 at Side 1 ³ ³ ³ ³ ³ +³ ³ ³ ³ ³ ³ ³ ³ +ÃÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄ´ +³ ³ 1A ³Sector 1 to 25 at Side 0 ³ NC ³ NC ³ R+1 ³ NC ³ +³ ³ ³ ³ ³ ³ ³ ³ +³ ³ 0F ³Sector 1 to 14 at Side 0 ³ ³ ³ ³ ³ +³ ³ ³ ³ ³ ³ ³ ³ +³ ³ 08 ³Sector 1 to 7 at Side 0 ³ ³ ³ ³ ³ +³ ÃÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄ´ +³ ³ 1A ³Sector 26 at Side 0 ³ ³ ³ ³ ³ +³ ³ 0F ³Sector 15 at Side 0 ³ NC ³ LSB ³ R=01 ³ NC ³ +³ ³ 08 ³Sector 8 at Side 0 ³ ³ ³ ³ ³ +³ 1 ÃÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄ´ +³ ³ ³ ³ ³ ³ ³ ³ +³ ³ 1A ³Sector 1 to 25 at Side 1 ³ ³ ³ ³ ³ +³ ³ 0F ³Sector 1 to 14 at Side 1 ³ ³ ³ ³ ³ +³ ³ 08 ³Sector 1 to 7 at Side 1 ³ NC ³ NC ³ R+1 ³ NC ³ +³ ÃÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄ´ +³ ³ ³ ³ ³ ³ ³ ³ +³ ³ 1A ³Sector 26 at Side 1 ³ ³ ³ ³ ³ +³ ³ 0F ³Sector 15 at Side 1 ³ C+1 ³ LSB ³ R=01 ³ NC ³ +³ ³ 08 ³SEctor 8 at Side 1 ³ ³ ³ ³ ³ +³ ³ ³ ³ ³ ³ ³ ³ +ÀÄÄÄÄÁÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÙ + + + + + Note : 1. NC (No Change); The same valua as the one at the beginning of + command execution. + + 2. LSB (Least Significant Bit); The least significant bit of H is + completed + + + + + + + + + + WRITE DATA + + + A set of nine (9) bytes are required to set the FDC into the Write Data mode. + After the Write Data command has been issued the FDC loads the head (if it + is in the unloaded stste),waits the specified head setting time ( defined + in the Specify Command), and begins reading ID Fields. When the current number + ("R"), stored in the ID Register (IDR) compares with the sector number read + off the diskette, then the FDC takes data from the processor byte-by-byte via + the data bus, and outputs it to the FDD. + + After writing data into the current sector, the Sector Number stored in "R" is + incremented by one, and the next data field is written into. The FDC continues + this "Multi-Sector Write Operation" until the issuance of a Terminal Count + signal. If a Terminal Count signal is sent to the FDC it continues writing + into the current sector to complete the data field. If the Terminal Count + signal is received while a data field is being written then the remainder of + the data field is filled with 00 (zeros). + + The FDC reads the ID fields of each sector and checks the CRC bytes. If the + FDC detects a read error (incorrect CRC) in one of the ID Fields, it sets the + DE (Data Error) flag of Status Register 1 to a 1 (high), and terminates the + Write Data Command. (Status Register 0 also has bits 7 and 6 set to 0 and 1 + respectively.) + + + The Write Command operates in much the same manner as Read Command. The + following items are the same; refer to the Read Data Command for details; + + + + Þ Transfer Capacity + + Þ EN (end of Cylinder) Flag + + Þ ND (No Data) Flag + + Þ Head Unload Time Interval + + Þ ID Information when the processor terminates + command (see Table 2) + Þ Definition of DTL when N=0 and when N!=0 + + In the Write Data mode, data transfers between the processor and FDC must + occur every 31 ms in the FM mode, and every 15 ms in the MFM mode. If the + time interval between data transfers is longer than this then the FDC sets the + OR (Over Run) flag in Status Register 1 to a 1 (high), and terminates the + Write Data Command. + + + + WRITE DELETED DATA + + This command is the same as the Write Data Command except a Deleted Data + Address Mark is written at the beginning of the Data Field instead of the + normal Data Address Mark. + + + READ DELETED DATA + + + This command is the same as Read Data Command except that when the FDC + detects a Data Address Mark at the beginnin of a Data Field ( and SK = 0 + (low)), it will read all the data in the sector and set the CM flag in Status + Register 2 to a 1 (high), and then terminate the command . If SK=1, then the + FDC skips the sector with the Data Address Mark and reads the next sector. + + + READ A TRACK + + + This command is similar to READ DATA Command except that the entire data + field is read continuously from each of the sectors of a track. Immediately + after encountering the INDEX HOLE, the FDC starts reading all data fields on + the track as continuous blocks of data. If the FDC finds an error in the ID + or DATA CRC check bytes, it continues to read data from the track. The FDC + compares the ID information read from each sector with the valua stored in the + IDR, and sets the ND flag of Status Register 1 to 1 (high) if there is no + comparison. Multi-track or skip operations are not allowed with this command. + + This command terminates when EOT number of sectors have been read. If the FDC + does not find an ID Address Mark on the diskette after it encountera the INDEX + HOLE for the second time, then it sets the MA (missing address mark) flag in + Status Register 1 to 1 (high), and terminates the command. (Status Register 0 + has bits 7 and 6 set to 0 and 1 respectively.) + + + READ ID + + + The Read ID Command is used to give the present position of the recording + head. The FDC stores the values from the first ID Field it is able to read. + If no proper ID Address Mark is found on the diskette, before the INDEX HOLE + is encountered for the second time then the MA (Missing Address Mark) flag in + Status Register 1 is set to 1 (high), and if no data is found then ND (No + Data ) flag is also set in Status Register 1 to 1 (high) and the command is + terminated. + + + + + FORMAT TRACK + + + The Format Command allows an entire track to be formatted. After the INDEX + HOLE is detected, Data is written on the Diskette:Gaps,Address Marks,ID Fields + and Data Fields, all per the IBM System 34 (Double Density) or System 3740 + (Single Density) Format are recorded. The particular format which will be + written is controlled by the values programmed into N (number of bytes/sector), + SC (sector/cylinder), GPL (Gap Length), and D (Data Pattern) which are + supplied by the processor during the Command Phase. The Data Field is filled + with the Command Phase. The Data Field is filled with the Byte of data stored + in D. The ID Field for each sector is supplied by the processor; that is, four + data requests per sector are made by the FDC for C (Cylinder Number), H (Head + Number), R(Sector Number) and N (Number of Bytes/Sector). This allows the + diskette to be formatted with nonsequential sector numbers, if desired. + + After formatting each sector, the processor must send new values for C,H,R, + and N to the 8272 foe each sector on the track. The contents of the R register + is incremented by one after each sector is formatted, thus, the R register + contains a value of R+1 when it is read during the Result Phase. This + incrementing and formatting continues for the whole track until the FDC + encounters the INDEX HOLE for the second time , where-upon it terminates the + command. + + If a FAULT signal is recelved from the FDD at the end of a write operation, + then the FDC sts the EC flag of Status Register 0 to a 1 (high), and + terminates the command after setting bits 7 and 6 of Status Register 0 to 0 + and 1 respectively. Also the loss of a READY signal at the beginnig of a + command execution phase causes command termination. + + Table 5 shows the relationship between N,SC, and GPL for various sector sizes: + + + TABLE 5. SECTOR SIZE RELATIONSHIPS + + ÚÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÂÄÄÄÄÄÂÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ + ³ FORMAT ³ SECTOR SIZE ³ N ³ SC ³ GPL1³ GPL2 ³ REMARKS ³ + ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ + ³ ³128 bytes/Sector ³ 00 ³ 1A ³ 07 ³ 1B ³ IBM Diskette 1 ³ + ³ FM Mode ³256 ³ 01 ³ 0F ³ 0E ³ 2A ³ IBM Diskette 2 ³ + ³ ³512 ³ 02 ³ 08 ³ 1B ³ 3A ³ ³ + ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ + ³ ³1024 bytes/Sector³ 03 ³ 04 ³ __ ³ __ ³ ³ + ³ FM Mode ³2048 ³ 04 ³ 02 ³ __ ³ __ ³ ³ + ³ ³4096 ³ 05 ³ 01 ³ __ ³ __ ³ ³ + ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ + ³ ³256 ³ 01 ³ 1A ³ 0E ³ 36H ³IBM Diskette 2D ³ + ³ ³512 ³ 02 ³ 0F ³ 1B ³ 54H ³ ³ + ³ MFM Mode ³1024 ³ 03 ³ 08 ³ 36H ³ 74H ³IBM Diskette 2D ³ + ³ ³2048 ³ 04 ³ 04 ³ __ ³ __ ³ ³ + ³ ³4096 ³ 05 ³ 02 ³ __ ³ __ ³ ³ + ³ ³8192 ³ 06 ³ 01 ³ __ ³ __ ³ ³ + ÀÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÁÄÄÄÄÄÁÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ + + + + Note : 1. GPL1 Suggested values of GPL in Read or Write Commands to avoid + splice point between data and ID field of contiguous sections. + + 2 GPL2, Suggested values of GPL in format command. + + + + + SCAN COMMANDS + + + The SCAN Commands allow data which is being read from the diskette to be + compared against data which is being supplied from the main system (Processor + in NON-DMA mode, and DMA Controller in DMA mode). The FDC compares the data + on a byte - by - byte basis, and looks for a sector of data which meets the + conditions of D_FDD = D_Processor,D_FDD<=D_Processor,or D_FDD>=D_Processor. + Ones complement arithmetic is used for comparison (FF=larget number, + 00=smallest number). After a whole sector of data is compared, if the + conditions are not met, the sector number is incremented (R+STP -> R) + and the scan operation is continued.The scan operation continues one of the + following conditions occur: the conditions for scan are met (equal,low,or + high),the last sector on the track is reached (EOT), or the terminal count + signal is received. + + If the conditions for scan are met the FDC sets the SH (Scan Hit) flag of + Status Register 2 to 1 (high), and terminates the Scan Command. If the + conditions for scan are not met between the starting sector (as specified by + R) and the last sector on the cylinder (EOT), then the FDC sets the SN (Scan + Not Satisfied) flag of Status Register 2 to a 1 (high), and terminates the + Scan Command. The receipt of a TERMINAL COUNT signal from the Processor or DMA + Controller during the scan operation will cause the FDC to complete the + comparison of the particular byte which is in process, and then to terminate + the command. Table 6 shows the status of bits SH and SN under various + conditions of SCAN. + + + TABLE 6. SCAN STATUS CODES + ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ + ³ ³ STATUS REGISTER 2 ³ ³ + ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ³ + ³ COMMAND ³BIT 2 = SN ³ BIT 3 = SH ³ COMMENTS ³ + ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ + ³ Scan Equal ³ 0 ³ 1 ³D_FDD = D_Processor ³ + ³ ³ 1 ³ 0 ³D_FDD != D_Processor ³ + ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ + ³ ³ 0 ³ 1 ³D_FDD = D_Processor ³ + ³Scan Low or Equal³ 0 ³ 0 ³D_FDD < D_Processor ³ + ³ ³ 1 ³ 0 ³D_FDD !< D_Processor ³ + ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ + ³ ³ 0 ³ 1 ³D_FDD = D_Processor ³ + ³Scan High or Equ.³ 0 ³ 0 ³D_FDD > D_Processor ³ + ³ ³ 1 ³ 0 ³D_FDD !> D_Processor ³ + ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ + + + + + If the FDC encounters a Deleted Data Address Mark on one of the sectors + (and SK = 0), then it regards the sector as the last sector on the cylinder, + sets CM ( Control Mark) flag of Status Register 2 to a 1 (high) and terminates + the command. If SK = 1, the FDC skips the sector with the Deleted Address + Mark, and reads the next sector. In the second case (SK = 1), the FDC sets the + CM (Contol Mark) flag of Status Register 2 to a 1 (high) in order to show that + a Deleted Sector had been encountered. + + + When either the STP (contiguous sectors STP = 01, or alternate sectors STP=02 + sectors are read) or the MT(Multi-Track) are programmed, it is necessary to + remember that the last sector on the track must be read. For example, if + STP = 02, MT = 0 ,the sectors are numbered sequentially 1 through 26, and we + start the Scan Command at sector 21; the following will happen. + Sectors 21,23, and 25 will be read, then the next sector (26) will be skipped + and the Index Hole will be encountered befor the EOT value of 26 can be read. + This will result in an abnormal termination of the command.If the EOT had been + set at 25 or the scanning started at sector 20, then the Scan Command would be + completed in a normal manner. + + During the Scan Command data is supplied by either the processor or DMA + Controller for comparison against the data read from the diskette. In order to + avoid having the OR (Over Run) flag set in Status Register 1, it is necessary + to have the data available in less than 27 ms (FM Mode) or 13 ms (MFM Mode). + If Overrun occurs the FDC terminates the command. + + + SEEK + + + The read/write head within the FDD is moved from cylinder under control of the + Seek Command. The FDC compares the PCN (Present Cylinder Number) which is the + current head position with the NCN (New Cylinder Number), and performs the + following operation if there is difference: + + PCN < NCN: Direction signal to FDD set to a 1 (high), and Step Pulses are + issued. (Step in.) + + PCN > NCN: Direction signal to FDD set to a 0 (low), and Step Pulses are + issued. (Step Out.) + + + + The rate which Step Pulses are issued is controlled by SRT (Stepping Rate + Time) in the SPECIFY Command. After each Step Pulse is issued NCN is compared + against PCN, and when NCN = PCN, then the SE ( Seek End) flag is set in Status + Register 0 to a 1 (high), and the command is terminated. + + During the Command Phase of the Seek operation the FDC in the FDC BUSY state, + but during the Execution Phase it is in the NON BUSY state. While the FDC is + in the NON BUSY state, another Seek Command may be issued, and in this manner + parallel seek operation may be done on up to 4 Drives at once. + + + If an FDD is in a NOT READY state at the beginnig of the command execution + phase or during the seek operation, then the NR (NOT READY) flag is set in + Status Register 0 to 1 (high), and the command is terminated. + + + + + + RECALIBRATE + + + This command causes the read/write head within the FDD to retract to the + Track 0 position. The FDC clears the contents of the PCN counter, and checks + the status of the Track 0 signal from the FDD. As long as the Track 0 signal + is low, the Direction signal remains 1 (high) and Step Pulses are issued. + When the Track 0 signal goes high, the SE (SEEK END) flag in Status Register 0 + is set to 1 (high) and the command is terminated. If the Track 0 signal is + still low after 77 Stop Pulses have been issued, the FDC sets the SE + (SEEK END) and EC (EQUIPMENT CHECK) flags of Status Register 0 to both 1s + (highs), and terminates the command. + + The abillity to overlap RECALIBRATE Commands to Multiple FDDs, and the loss + of the READY signal, as described in the SEEK Command, also applies to the + RECALIBRATE Command. + + + + SENSE INTERRUPT STATUS + + + + An interrupt signal is generated by the FDC for one of the following reasons: + 1. Upon entering the Result Phase of: + a. Read Data Command + b. Read a Track Command + c. Read ID Command + d. Read Deleted Data Command + e. Write Data Command + f. Format a Cylinder Command + g. Write Deleted Data Command + h. Scan Commands + 2. Ready Line of FDD changes state + 3. End of Seek or Recalibrate Command + 4. During Execution Phase in the NON-DMA Mode + + Interrupts causes by reasons 1 and 4 above occur during normal command + operations and are easilly discernible by the processor. However, interrupts + causes by reasons 2 and 3 above may be uniquely identified with the aid of the + Sense Interrupt Status Command. This command when issued resets the interrupt + signal and via bits 5,6, and 7 of Status Register 0 identifies the cause of + the interrupt. + + + + + TABLE 7. SEEK. INTERRUPT CODES + + ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ + ³ SEEK END ³ INTERRUPT CODE ³ CAUSE ³ + ³ ÃÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄ´ ³ + ³ BIT 5 ³ BIT 6 ³ BIT 7 ³ ³ + ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ + ³ 0 ³ 1 ³ 1 ³ Ready Line changed ³ + ³ ³ ³ ³ state, either polarity ³ + ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ + ³ ³ ³ ³ Normal Termination ³ + ³ 1 ³ 0 ³ 0 ³ of Seek or Recalibrate ³ + ³ ³ ³ ³ Command ³ + ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ + ³ ³ ³ ³ Abnormal Termination of³ + ³ ³ ³ ³ Seek or Recalibrate ³ + ³ 1 ³ 1 ³ 0 ³ Command ³ + ³ ³ ³ ³ ³ + ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ + + + + Neither the Seek or Recalibrate Command have a Result Phase. Therefore, it + is mandatory to use the Sense Interrupt Status Command after these commands + to effectively terminate the and to provide verification of the head position + (PCN). + + + + SPECIFY + + + The Specify Command sets the initial values for each of the three internal + timers. The HUT (Head Unload-Time) defines from the end of the Execution + Phase of one of the Read/Write Commands to the head unload state. This is + programmable from 16 to 240 ms in increments of 16 ms (01 = 16 ms,02 = 32 ms.. + ...OF = 240 ms ). The SRT ( Step Rate Time) defines the time interval between + adjacent step pulses. This timer is programmable from 1 to 16 ms in increments + of 1 ms (F = 1 ms, E = 2ms, etc.). The HLT (Head Load Time) defines the time + between when the Head Load signal goes high and when the Read/Write operation + starts. This timer is programmable from 2 to 254 ms in increments of 2 ms + (01 = 2 ms, 02 = 4 ms, 03 = 6 ms ...FE = 254 ms). + + The time intervals mentioned above are a direct function of the clock (CLK on + pin 19). Times indicated above are for an 8 MHz clock, if the clock was + reduced to 4 MHz (mini-floppy application) then all time intervals are + increased by a factor of 2. + + + The choice of DMA or NON-DMA operation is made by the ND (NON-DMA) bit. + When this bit is high (ND = 1) the NON=DMA mode is selected, and when ND = 0 + the DMA mode is selected. + + + + + SENSE DRIVE STATUS + + + + This command may be used by the processor whenever it wishes to obtain the + status of the FDDs. Status Register 3 contains the Drive Status Information. + + + + INVALID + + + If an invalid command is sent to the FDC ( a command not defined above), then + the FDC will terminate the command. No interrupt is generated by the 8272 + during this condition. Bit 6 and bit 7 (DIO and RQM) in the Main Status + Register are above both high ("1") indicating to the processor that the 8272 + is in the Result Phase and the contents of Status Register 0 (ST0) must be + read. When the processor reads Status Register 0 it will find a 80h indicating + an invalid command was received. + + A Sense Interrupt Status Command must be sent after a Seek or Recalibrate + interrupt, otherwise the FDC will consider the next command to be an invalid + Command. + + In some applications the user may wish to use this command as a No-Op command, + to place the FDC in a standby or no operation state. + + + + + + TABLE 8. STATUS REGISTERS + + ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ + ³ ³ ³ + ³ BIT ³ ³ + ÃÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄ´ DESCRIPTION ³ + ³NO ³ NAME ³ SYMBOL ³ ³ + ÃÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ + ³ STATUS REGISTER 0 ³ + ÃÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ + ³D7 ³Interrupt ³ IC ³ D7 = 0 and D6 = 0 ³ + ³ ³Code ³ ³ Normal Termination of Command, ³ + ³ ³ ³ ³ (NT) Command was completed and ³ + ³ ³ ³ ³ properly executind. ³ + ³ ³ ³ ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ + ³ ³ ³ ³D7=0 and D6 = 1 ³ + ³D6 ³ ³ ³Abnormal Tremination of Command, ³ + ³ ³ ³ ³(AT). Execution of Command ³ + ³ ³ ³ ³was started, but was not ³ + ³ ³ ³ ³successfully completed. ³ + ³ ³ ³ ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ + ³ ³ ³ ³ D7 = 1 and D6 = 0 ³ + ³ ³ ³ ³ Invalid Command issued. (IC). ³ + ³ ³ ³ ³ Command which was issued was ³ + ³ ³ ³ ³ never started. ³ + ³ ³ ³ ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ + ³ ³ ³ ³ D7 = 1 and D6 = 1 ³ + ³ ³ ³ ³ Abnormal Termination because ³ + ³ ³ ³ ³ during command execution the ³ + ³ ³ ³ ³ ready signal from FDD changed ³ + ³ ³ ³ ³ state. ³ + ÃÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ + ³ ³ ³ ³ When the FDC completes the ³ + ³D5 ³ Seek End ³ SE ³ SEEK Command, this flag is set to 1 ³ + ³ ³ ³ ³ (high). ³ + ÃÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ + ³D4 ³ Equipment ³ EC ³ If fault Signal is received from the ³ + ³ ³ Check ³ ³ FDD, or if the Track 0 Signal fails to ³ + ³ ³ ³ ³ occur after 77 Step Pulses (Recalibrate³ + ³ ³ ³ ³ Command) then this flag is set. ³ + ÃÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ + ³D3 ³ Not Ready ³ NR ³ When the FDD is in the not-ready ³ + ³ ³ ³ ³ state and a read or write command is ³ + ³ ³ ³ ³ issued. This flag is set.If a read or ³ + ³ ³ ³ ³ write command is issued to Side 1 ³ + ³ ³ ³ ³ of single sided drive,then this flag ³ + ³ ³ ³ ³ is set. ³ + ÃÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ + ³D2 ³ Head ³ ³ This flag is used to indicate the ³ + ³ ³ Address ³ HD ³ state of the head at interrupt ³ + ÃÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ + ³ ³ Unit ³ ³ ³ + ³D1 ³ Select 1 ³ US1 ³ These flags are used to indicate a ³ + ÃÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄ´ Drive Unit Number at interrupt ³ + ³D0 ³ U.Select 0 ³ US0 ³ ³ + ÀÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ + + + ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ + ³ ³ ³ + ³ BIT ³ ³ + ÃÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄ´ DESCRIPTION ³ + ³NO ³ NAME ³ SYMBOL ³ ³ + ÃÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ + ³ STATUS REGISTER 1 ³ + ÃÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ + ³D7 ³End of ³ EN ³ When the FDC tries to access a ³ + ³ ³Cylinder ³ ³ Sector beyond the final Sector of a ³ + ³ ³ ³ ³ Cylinder, this flag is set. ³ + ÃÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ + ³D6 ³ ³ ³Not used. This bit is always 0 (low). ³ + ÃÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ + ³D5 ³Data Error ³ DE ³When the FDC detects a CRC error ³ + ³ ³ ³ ³in either the ID field or the data field³ + ³ ³ ³ ³this flag is set. ³ + ÃÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ + ³D4 ³Over Run ³ OR ³If the FDC is not serviced by the ³ + ³ ³ ³ ³main-systems during data transfers, ³ + ³ ³ ³ ³within a certain time interval, this ³ + ³ ³ ³ ³flag is set. ³ + ÃÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ + ³D3 ³ ³ ³Not used. This bit is always 0 (low). ³ + ÃÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ + ³ ³ ³ ³ During execution of READ DATA, ³ + ³D2 ³ No Date ³ ND ³ WRITE DELETED DATA or SCAN ³ + ³ ³ ³ ³ Command, if the FDC cannot find the ³ + ³ ³ ³ ³ Sector specified in the IDR Register, ³ + ³ ³ ³ ³ this flag is set. ³ + ³ ³ ³ ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ + ³ ³ ³ ³ During execution the READ ID Command, ³ + ³ ³ ³ ³ if the FDC cannot read the ID field ³ + ³ ³ ³ ³ without an error, then this flag is ³ + ³ ³ ³ ³ set. ³ + ³ ³ ³ ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ + ³ ³ ³ ³ During the execution of the READ A ³ + ³ ³ ³ ³ Cylinder Command, if the starting ³ + ³ ³ ³ ³ sector cannot be found, then this ³ + ³ ³ ³ ³ flag is set. ³ + ÃÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ + ³ ³ Not ³ ³ During execution of WRITE DATA, ³ + ³D1 ³ Writable ³ NW ³ WRITE DELETED DATA or Format A ³ + ³ ³ ³ ³ Cylinder Command, if the FDC detects ³ + ³ ³ ³ ³ a write protect signal from the FDD, ³ + ³ ³ ³ ³ then this flag is set. ³ + ÃÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ + ³D0 ³ Missing ³ MA ³ If the FDC cannot detect the ID ³ + ³ ³ Address ³ ³ Address Mark after encountering the ³ + ³ ³ Mark ³ ³ index hole twice, then this flag is set³ + ³ ³ ³ ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ + ³ ³ ³ ³ If the FDC cannot detect the Data ³ + ³ ³ ³ ³ Address Mark or Deleted Data ³ + ³ ³ ³ ³ Address Mark,this flag is set. Also at ³ + ³ ³ ³ ³ the same time, the MD (Missing Address ³ + ³ ³ ³ ³ Mark in Data Field) of Status Register ³ + ³ ³ ³ ³ 2 is set. ³ + ÀÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ + + + + + + + + ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ + ³ ³ ³ + ³ BIT ³ ³ + ÃÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄ´ DESCRIPTION ³ + ³NO ³ NAME ³ SYMBOL ³ ³ + ÃÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ + ³ STATUS REGISTER 2 ³ + ÃÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ + ³D7 ³ ³ ³ Not used. This bit is always 0 (low). ³ + ÃÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ + ³D6 ³ Control ³ CM ³ During execution the READ DATA or ³ + ³ ³ Mark ³ ³ SCAN Command, if the FDC encounters ³ + ³ ³ ³ ³ a Sector which contains a Deleted Data ³ + ³ ³ ³ ³ Address Mark, this flag is set. ³ + ÃÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ + ³D5 ³ Data Error ³ DD ³If the FDC detects a CRC error in the ³ + ³ ³ in Data ³ ³data field then this flag is set. ³ + ÃÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ + ³D4 ³ Wrong ³ WC ³This bit is related with the ND bit, ³ + ³ ³ Cylinder ³ ³and when the contents of C on the ³ + ³ ³ ³ ³medium is different from that stored ³ + ³ ³ ³ ³in the IDR, this flag is set. ³ + ÃÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ + ³D3 ³ Scan Equel ³ SH ³ During execution, the SCAN Command, ³ + ³ ³ Hit ³ ³ if the condition of "equel" is ³ + ³ ³ ³ ³ satisfied, this flag is set. ³ + ÃÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ + ³ ³ Scan Not ³ SN ³ During execution the SCAN Command, if ³ + ³D2 ³ Satisfied ³ ³ the FDC cannot find a Sector on the ³ + ³ ³ ³ ³ cylinder which meets the condition, ³ + ³ ³ ³ ³ then this flag is set. ³ + ÃÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ + ³D1 ³ Bad ³ BC ³ This bit is related with the ND bit, ³ + ³ ³ Cylinder ³ ³ and when the content of C on the ³ + ³ ³ ³ ³ medium is different from that stored ³ + ³ ³ ³ ³ in the IDR and the content of C is ³ + ³ ³ ³ ³ FF, then this flag is set. ³ + ÃÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ + ³D0 ³ Missing ³ ³ When data is read from the medium, ³ + ³ ³ Address ³ MD ³ if the FDC cannot find a Data Address ³ + ³ ³ Mark in ³ ³ Mark, then this flag is set. ³ + ³ ³ Data ³ ³ ³ + ³ ³ Field ³ ³ ³ + ÀÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ + + + + + + + + + ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ + ³ ³ ³ + ³ BIT ³ ³ + ÃÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄ´ DESCRIPTION ³ + ³NO ³ NAME ³ SYMBOL ³ ³ + ÃÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ + ³ STATUS REGISTER 3 ³ + ÃÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ + ³D7 ³ Fault ³ FT ³ This bit is used to indicate the status³ + ³ ³ ³ ³ of the Fault signal from the FDD ³ + ÃÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ + ³D6 ³ Write ³ ³ This bit used to indicate the status ³ + ³ ³ Protected ³ WP ³ of the Write Protected signal from the ³ + ³ ³ ³ ³ FDD. ³ + ÃÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ + ³D5 ³ Ready ³ RDY ³ This bit used to indicate the status ³ + ³ ³ ³ ³ of the Ready signal from the FDD ³ + ÃÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ + ³D4 ³ Track 0 ³ T0 ³ This bit used to indicate the status ³ + ³ ³ ³ ³ of the Track 0 signal from the FDD ³ + ÃÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ + ³D3 ³ Two Side ³ TS ³ This bit used to indicate the status ³ + ³ ³ ³ ³ of the Two Side signal from the FDD. ³ + ÃÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ + ³D2 ³ Head ³ HD ³ This bit used to indicate the status ³ + ³ ³ Address ³ ³ of Side Select signal to the FDD. ³ + ÃÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ + ³D1 ³ Unit ³ US1 ³ This bit used to indicate the status of³ + ³ ³ Select 1 ³ ³ the Unit Select 1 signal to the FDD. ³ + ÃÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ + ³D0 ³ Unit ³ US0 ³ This bit used to indicate the status of³ + ³ ³ Select 0 ³ ³ the Unit Select 0 signal to the FDD. ³ + ³ ³ ³ ³ ³ + ÀÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ + + + + + + + + + + diff --git a/release/LD-ISDOS.EXE b/release/LD-ISDOS.EXE new file mode 100644 index 0000000..163097f Binary files /dev/null and b/release/LD-ISDOS.EXE differ diff --git a/release/LD-TRDOS.EXE b/release/LD-TRDOS.EXE new file mode 100644 index 0000000..af817c0 Binary files /dev/null and b/release/LD-TRDOS.EXE differ