first working version after 30 years :)
This commit is contained in:
parent
348c96574b
commit
a0a775ee8a
479
FDC.PAS
Normal file
479
FDC.PAS
Normal file
@ -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 ‡ ¯¨áì: <20>¥£¨áâà ã¯à ¢«¥¨ï
|
||||||
|
Ö7Â6Â5Â4Â3Â2Â1Â0·
|
||||||
|
úD C B A³ ³ ³ ú
|
||||||
|
ÓÄÁÄÁÄÁÄÁÒÁÒÁÄÁĽ ¡¨âë
|
||||||
|
ÈÍÍËÍͼ ú ú ÈÍÊÍ. 0-1: ‚ë¡®à ¤à ©¢¥à 0-3 (AT: ¡¨â 1 ¥ ¨á¯.)
|
||||||
|
ú ú ÈÍÍÍÍÍ. 2: 0=‘¡à®á ª®â஫«¥à HƒŒ„; 1=<3D> §à¥è¥¨¥ ª®â஫«¥à
|
||||||
|
ú ÈÍÍÍÍÍÍÍ. 3: 1=<3D> §à¥è¨¨âì à ¡®âã á 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 <20>¥à¥¤ ç /<2F>ਥ¬ ª®¬ ¨«¨ ¤ .}
|
||||||
|
|
||||||
|
FDC_REG_DR = $3F5;
|
||||||
|
{3F5H —⥨¥/‡ ¯¨áì: <20>¥£¨áâà ¤ ëå
|
||||||
|
K¬¤ ޝ¨á ¨¥
|
||||||
|
ßßß ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
||||||
|
0E6H —¨â âì ¤ ë¥ (’ॡã¥â: 8 ¯ à ¬¥â஢; P¥§ã«ìâ â : 7 ¯ à ¬¥â஢)
|
||||||
|
0C5H <20>¨á âì ¤ ë¥ (’ॡã¥â 8 ¯ à ¬¥â஢; P¥§ã«ìâ â : 7 ¯ à ¬¥â஢)
|
||||||
|
04DH ”®à¬ â¨à®¢ âì ¤®à®¦ªã (’ॡã¥â 5 ¯ à ¬¥â஢;P¥§ã«ìâ â : 7 ¯ à ¬¥â஢)
|
||||||
|
007H <20>¥ª «¨¡à®¢ âì (’ॡã¥â 1 ¯ à ¬¥â஢; P¥§ã«ìâ â : H…’)
|
||||||
|
00FH “áâ ®¢¨âì ¤®à®¤ªã (’ॡã¥â 2 ¯ à ¬¥â஢;P¥§ã«ìâ â : H…’}
|
||||||
|
|
||||||
|
FDC_REG_DIR = $3F7;
|
||||||
|
{3F7H ÝATÞ ’®«ìª®-¤«ï ç⥨ï : <20>¥£¨áâà ᨣ ¤®¢ ¢å®¤
|
||||||
|
Ö7Â6Â5Â4Â3Â2Â1Â0·
|
||||||
|
ú ³ ³ ú
|
||||||
|
ÓÒÁÄÁÄÁÄÁÄÁÄÁÄÁÒ½ ¡¨âì
|
||||||
|
ú ÈÍÍÍÍËÍÍÍͼ ÈÍ. 0: 1= ‚ë¡à ¤¢®© ï ¯«®â®áâì; 0= ‚ë᮪ ï ¯«®â®áâì
|
||||||
|
ú ÈÍÍÍÍÍÍÍÍ. 1-6: ‡ १¥à¢¨à®¢ ë.
|
||||||
|
ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ. 7: 1= <20>ந§®è« § ¬¥ ¤¨áª¥âë}
|
||||||
|
|
||||||
|
FDC_REG_CCR = $3F8;
|
||||||
|
{3F8H ÝATÞ ‡ ¯¨áì : <20>¥£¨áâà ª®ä¨£ãà æ¨¨
|
||||||
|
Ö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.
|
||||||
236
HELPERS.PAS
Normal file
236
HELPERS.PAS
Normal file
@ -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.
|
||||||
354
LD-ISDOS.PAS
Normal file
354
LD-ISDOS.PAS
Normal file
@ -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 <file> <keys>');
|
||||||
|
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.
|
||||||
363
LD-TRDOS.PAS
Normal file
363
LD-TRDOS.PAS
Normal file
@ -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 <file> <keys>');
|
||||||
|
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.
|
||||||
486
docs/8272.txt
Normal file
486
docs/8272.txt
Normal file
@ -0,0 +1,486 @@
|
|||||||
|
Š®â஫«¥à <20>ƒŒ„ i8272. ÉÍÍÍÍÍË»
|
||||||
|
ޝ¨á ¨¥ à ¡®âë ª®â஫«¥à ¨ á¨áâ¥¬ë ª®¬ ¤. ºi8272ºº
|
||||||
|
ÈÍÍÍÍÍʼ
|
||||||
|
„«ï ¤®áâ㯠ᮠáâ®à®ë ¯à®æ¥áá®à ª®â஫«¥à 8272 ¨¬¥¥â 2 ॣ¨áâà :
|
||||||
|
ॣ¨áâà á®áâ®ï¨ï ¨ ॣ¨áâà ¤ ëå. <20>¥£¨áâà á®áâ®ï¨ï (Main Status Register)
|
||||||
|
ᮤ¥à¦¨â ¨ä®à¬ æ¨î ® á®áâ®ï¨¨ ª®â஫«¥à ¨ ¬®¦¥â ¡ëâì áç¨â ¯à®æ¥áá®à®¬ ¢
|
||||||
|
«î¡®¥ ¢à¥¬ï. —¥à¥§ ॣ¨áâà ¤ ëå ª®â஫«¥à ®áãé¥á⢫ï¥âáï ¤®áâ㯠ª® ¢á¥¬
|
||||||
|
¢ãâ२¬ ॣ¨áâà ¬ 8272, ¢ ¥£® § ¯¨áë¢ îâáï ª®¬ ¤ë ¨ ®áãé¥á⢫ï¥âáï ®¡¬¥
|
||||||
|
¤ 묨 á ¤¨áª®¬. <20>¥£¨áâà á®áâ®ï¨ï ¬®¦® ⮫쪮 áç¨âë¢ âì. „«ï ¢ë¡®à ®¤®£®
|
||||||
|
¨§ ¤¢ãå ॣ¨áâ஢ ¨á¯®«ì§ã¥âáï ¢ë¢®¤ €0 8272 (¢ë¢.5). <20>ਠ€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
|
||||||
|
‚ ०¨¬¥ <20>…-<2D>„<EFBFBD> ¡¨â NDM = 0 ¯®ª §ë¢ ¥â, çâ® § ª®ç¥ ä § ¨á¯®«¥¨ï
|
||||||
|
ª®¬ ¤ë.
|
||||||
|
CB - FDC Busy
|
||||||
|
…᫨ ¡¨â CB = 1, íâ® ®§ ç ¥â, çâ® ª®â஫«¥à ¢ ¤ ë© ¬®¬¥â § ïâ -
|
||||||
|
¢ë¯®«ï¥âáï ®¯¥à æ¨ï ç⥨ï/§ ¯¨á¨.
|
||||||
|
DB3..DB0 - Drive n Busy
|
||||||
|
<20>⨠¡¨âë ¯®ª §ë¢ îâ á®áâ®ï¨¥ ª ¦¤®£® ¨§ 4-å ª®¯¨â¥«¥©. …᫨
|
||||||
|
ᮤ¥à¦¨¬®¥ ¡¨â = 1, § ç¨â ¤«ï ᮮ⢥âáâ¢ãî饣® ª®¯¨â¥«ï ¢
|
||||||
|
áâ®ï饥 ¢à¥¬ï ¢ë¯®«ï¥âáï ª®¬ ¤ Seek.
|
||||||
|
|
||||||
|
ޡ饥 ®¯¨á ¨¥ ª®â஫«¥à .
|
||||||
|
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
|
||||||
|
‚ á¨á⥬㠪®¬ ¤ ª®â஫«¥à 8272 ¢å®¤¨â 15 ª®¬ ¤. Š ¦¤ ï ª®¬ ¤
|
||||||
|
¨¤¥â¨ä¨æ¨àã¥âáï ¬®£®¡ ©â®© ¯¥à¥á뫪®© ¯® 訥 ¤ ëå ¢ ॣ¨áâà ¤ ëå
|
||||||
|
ª®â஫«¥à . <20>¥§ã«ìâ ⠢믮«¥¨ï ª®¬ ¤ë â ª¦¥ ¬®¦¥â ¡ëâì ¬®£®¡ ©âë¬.
|
||||||
|
Š ¦¤ãî ª®¬ ¤ã 㤮¡® ¯à¥¤áâ ¢«ïâì á®áâ®ï饩 ¨§ 3-å ä §:
|
||||||
|
* ” § ¯à¨ª § - ª®â஫«¥à ¯à¨¨¬ ¥â ®â ¯à®æ¥áá®à ¯®á«¥¤®¢ ⥫ì®áâì
|
||||||
|
¡ ©â, ¥®¡å®¤¨¬ëå ¤«ï ¢ë¯®«¥¨ï ª®¬ ¤ë.
|
||||||
|
* ” § ¨á¯®«¥¨ï - ª®â஫«¥à ¢ë¯®«ï¥â ¯¥à¥¤ ãî ¥¬ã ª®¬ ¤ã.
|
||||||
|
* ” § १ã«ìâ â - ¯à®æ¥áá®à áç¨âë¢ ¥â á®áâ®ï¨¥ ª®â஫«¥à ¯®á«¥
|
||||||
|
¢ë¯®«¥¨ï ª®¬ ¤ë ¨ ¤àã£ãî ¨ä®à¬ æ¨î.
|
||||||
|
|
||||||
|
<20> ä § å ¯à¨ª § ¨ १ã«ìâ â ¯¥à¥¤ ¯¥à¥¤ 祩 ª ¦¤®£® ¡ ©â ¨§/¢ ॣ¨áâà
|
||||||
|
¤ ëå ª®â஫«¥à , ¯à®æ¥áá®à ¤®«¦¥ áç¨âë¢ âì ᮤ¥à¦¨¬®¥ ॣ¨áâà á®áâ®ï¨ï
|
||||||
|
ª®â஫«¥à . <20>¨âë RQM ¨ DIO ॣ¨áâà á®áâ®ï¨ï ¤®«¦ë ¡ëâì ãáâ ®¢«¥ë ¢ 1 ¨
|
||||||
|
0 ᮮ⢥âá⢥® ¯¥à¥¤ ⥬, ª ª ®ç¥à¥¤®© ¡ ©â ¡ã¤¥â ¯¥à¥¤ ¢ ª®â஫«¥à.
|
||||||
|
Œ®£¨¥ ª®¬ ¤ë ïîâáï ¬®£®¡ ©â®¢ë¬¨, ¯®í⮬㠤«ï ¨å ¥®¡å®¤¨¬® áç¨âë¢ âì
|
||||||
|
¨ ¯à®¢¥àïâì ॣ¨áâà á®áâ®ï¨ï ¯¥à¥¤ ¯¥à¥á뫪®© ª ¦¤®£® ¡ ©â ¢ ª®â஫«¥à. <20>
|
||||||
|
ä §¥ १ã«ìâ â ¡¨âë RQM ¨ DIO ¤®«¦ë ¡ëâì ãáâ ®¢«¥ë ¢ 1 ¯¥à¥¤ ç⥨¥¬
|
||||||
|
ª ¦¤®£® ¡ ©â ¨§ ª®â஫«¥à . Žâ¬¥â¨¬, çâ® ç⥨¥ ॣ¨áâà á®áâ®ï¨ï ¯¥à¥¤
|
||||||
|
¯¥à¥á뫪®© ª ¦¤®£® ¡ ©â ¥®¡å®¤¨¬® ⮫쪮 ä § å ¯à¨ª § ¨ १ã«ìâ â .
|
||||||
|
<20> ä §¥ ¨á¯®«¥¨ï ॣ¨áâà á®áâ®ï¨ï áç¨âë¢ âì ¥ 㦮. …᫨ ª®â஫«¥à
|
||||||
|
室¨âáï ¢ ०¨¬¥ NON DMA (<28>…-<2D>„<EFBFBD>), ¯®ï¢«¥¨¥ ®ç¥à¥¤®£® ¡ ©â ¤ ëå ¯à¨
|
||||||
|
ç⥨¨ á ¤¨áª ᮯ஢®¦¤ ¥âáï ¯®ï¢«¥¨¥¬ ᨣ « ¯à¥àë¢ ¨ï INT=1. <20>à¨
|
||||||
|
¯®ï¢«¥¨¨ ᨣ « ç⥨ï (RD=0), ᨣ « ¯à¥àë¢ ¨ï á¡à áë¢ ¥âáï ¨ ¤ ë¥
|
||||||
|
¢ë¤ îâáï è¨ã ¤ ëå. <20> ¯à¨¬¥à, ¥á«¨ ¯à®æ¥áá®à ¥ ¬®¦¥â ®¡á«ã¦¨¢ âì
|
||||||
|
¯à¥àë¢ ¨ï ¤®áâ â®ç® ¡ëáâà® (ª ¦¤ë¥ 13 ¬ªá¥ª. ¯à¨ ¤¢®©®© ¯«®â®áâ¨), ®
|
||||||
|
¬®¦¥â ®¯à 訢 âì ॣ¨áâà á®áâ®ï¨ï ¨ ¡¨â D7 (RQM) ᮮ⢥âáâ¢ã¥â ᨣ «ã
|
||||||
|
¯à¥àë¢ ¨ï. <20>ਠ¢ë¯®«¥¨¨ ª®¬ ¤ë § ¯¨á¨ «®£¨ç® ᨣ « § ¯¨á¨ WR=0
|
||||||
|
á¡à áë¢ ¥â ¯à¥àë¢ ¨¥.
|
||||||
|
…᫨ ª®â஫«¥à 室¨âáï ¢ ०¨¬¥ DMA (<28>„<EFBFBD>), â® ¯à¥àë¢ ¨¥ ä §¥
|
||||||
|
¨á¯®«¥¨ï ¥ £¥¥à¨àã¥âáï. Š®â஫«¥à ¢ í⮬ á«ãç ¥ ¢ë¤ ¥â ᨣ « DRQ
|
||||||
|
(§ ¯à®á <20>„<EFBFBD>) ª®£¤ ¯®ï¢«ï¥âáï ®ç¥à¥¤®© ¡ ©â ¤ ëå. Š®â஫«¥à <20>„<EFBFBD> ®â¢¥ç ¥â
|
||||||
|
íâ®â § ¯à®á ᨣ «®¬ ¯®¤â¢¥à¦¤¥¨ï <20>„<EFBFBD> DACK=0 ¨ RD=0. <20>ਠ¯®ï¢«¥¨¨
|
||||||
|
ᨣ « DACK á¡à áë¢ ¥âáï ᨣ « DRQ. <20>ਠ¢ë¯®«¥¨¨ ®¯¥à 樨 § ¯¨á¨ ¢¬¥áâ®
|
||||||
|
ᨣ « RD £¥¥à¨àã¥âáï ᨣ « WR=0.
|
||||||
|
<20>® ®ª®ç ¨¨ ä §ë ¨á¯®«¥¨ï (¯à¨ ¯®ï¢«¥¨¨ ᨣ « ’‘ - ª®¥æ áç¥â )
|
||||||
|
£¥¥à¨àã¥âáï ¯à¥àë¢ ¨¥, ®§ ç î饥 ç «® ä §ë १ã«ìâ â . <20>ਠç⥨¨
|
||||||
|
¯¥à¢®£® ¡ ©â १ã«ìâ â ᨣ « ¯à¥àë¢ ¨ï á¡à áë¢ ¥âáï.
|
||||||
|
<20>¥®¡å®¤¨¬® ¯®¤ç¥àªãâì, çâ® ä §¥ १ã«ìâ ⠢ᥠ¡ ©âë, 㪠§ ë¥ ¢
|
||||||
|
â ¡«¨æ¥ ª®¬ ¤, ¤®«¦ë ¡ëâì áç¨â ë ¯à®æ¥áá®à®¬. <20> ¯à¨¬¥à, ª®¬ ¤ ç⥨ï
|
||||||
|
¤ ëå ¨¬¥¥â 7 ¡ ©â १ã«ìâ â ¨ ¢á¥ 7 ¡ ©â ¤®«¦ë ¡ëâì áç¨â ë ¢ ¯®à浪¥,
|
||||||
|
㪠§ ®¬ ¢ â ¡«¨æ¥ ª®¬ ¤, ¤«ï ãᯥ讣® § ¢¥àè¥¨ï ®¯¥à 樨. Š®â஫«¥à ¥
|
||||||
|
¢®á¯à¨¬¥â á«¥¤ãîéãî ª®¬ ¤ã ¤® â¥å ¯®à, ¯®ª ¥ ¡ã¤ãâ áç¨â ë ¢á¥ 7 ¡ ©â
|
||||||
|
१ã«ìâ â ¯®á«¥ ¢ë¯®«¥¨ï ª®¬ ¤ë ç⥨ï.
|
||||||
|
Š®â஫«¥à 8272 ᮤ¥à¦¨â 5 ॣ¨áâ஢ á®áâ®ï¨ï: £« ¢ë© ॣ¨áâà
|
||||||
|
á®áâ®ï¨ï (Main Status Register) ¨ ॣ¨áâàë ST0-ST3. ƒ« ¢ë© ॣ¨áâà
|
||||||
|
á®áâ®ï¨ï (¨«¨ ¯à®á⮠ॣ¨áâà á®áâ®ï¨ï) ¬®¦¥â ¡ëâì áç¨â ¯à®æ¥áá®à®¬ ¢
|
||||||
|
«î¡®¥ ¢à¥¬ï. <20>¥£¨áâàë ST0-ST3 ¤®áâã¯ë ¯à®æ¥áá®àã ⮫쪮 ä §¥ १ã«ìâ â ¨
|
||||||
|
¬®£ãâ ¡ëâì áç¨â ë ¨¬ ¯®á«¥ § ¢¥àè¥¨ï ¥ª®â®à®© ª®¬ ¤ë. Š®ªà¥â ï ª®¬ ¤
|
||||||
|
®¯à¥¤¥«ï¥â, ᪮«ìª® ¨ ª ª¨¥ ॣ¨áâàë ¬®£ãâ ¨ ¤®«¦ë ¡ëâì áç¨â ë.
|
||||||
|
<20> ©âë ¤ ëå, § ¯¨áë¢ ¥¬ë¥ ¢ ª®â஫«¥à ä §¥ ¯à¨ª § ¨ áç¨âë¢ ¥¬ë¥ ¨§
|
||||||
|
¥£® ä §¥ १ã«ìâ â , ¤®«¦ë á«¥¤®¢ âì ¢ ¯®à浪¥, 㪠§ ®¬ ¢ â ¡«¨æ¥
|
||||||
|
ª®¬ ¤. ˆ§¬¥¥¨¥ íâ¨å ¯®á«¥¤®¢ ⥫ì®á⥩ ¥ ¤®¯ã᪠¥âáï. <20>®á«¥ ¯®«ã票ï
|
||||||
|
¯®á«¥¤¥£® ¡ ©â ª®¬ ¤ë ª®â஫«¥à ¢â®¬ â¨ç¥áª¨ ç¨ ¥â ¢ë¯®«ïâì ª®¬ ¤ã,
|
||||||
|
¯¥à¥å®¤ï ª ä §¥ ¨á¯®«¥¨ï. <20>®á«¥ ⮣®, ª ª ä §¥ १ã«ìâ â áç¨âë¢ ¥âáï
|
||||||
|
¯®á«¥¤¨© ¡ ©â, ª®â஫«¥à áç¨â ¥â íâã ª®¬ ¤ã § ¢¥à襮© ¨ £®â®¢ ª
|
||||||
|
®¡à ¡®âª¥ á«¥¤ãî饩 ª®¬ ¤ë. Š®¬ ¤ ¬®¦¥â ¡ëâì ¯à¥ªà é¥ â®«ìª® ¯®¤ 祩
|
||||||
|
ᨣ « ª®æ áç¥â ’‘=1. <20>⮠㤮¡®¥ á।á⢮ ¤«ï "¯à¨¢«¥ç¥¨ï ¢¨¬ ¨ï"
|
||||||
|
ª®â஫«¥à ¢ ªà¨â¨ç¥áª¨å á¨âã æ¨ïå.
|
||||||
|
<20>®á«¥ ¯¥à¥¤ ç¨ ¢ ª®â஫«¥à ª®¬ ¤ë Specify, è¨ë ¢ë¡®à ª®¯¨â¥«ï
|
||||||
|
ç¨ î⠢⮬ â¨ç¥áª¨ ᪠¨à®¢ âìáï ¢ ¯à®¬¥¦ãâª å ¬¥¦¤ã ª®¬ ¤ ¬¨ ( â ª¦¥
|
||||||
|
¬¥¦¤ã ¨¬¯ã«ìá ¬¨ è £ ¢ ª®¬ ¤¥ Seek). Š®â஫«¥à ®¯à 訢 ¥â á®áâ®ï¨¥
|
||||||
|
ᨣ « £®â®¢®á⨠Ready ¢á¥å 4-å ª®¯¨â¥«¥©. …᫨ ᨣ « Ready ¨§¬¥ï¥â
|
||||||
|
᢮¥ á®áâ®ï¨¥ (®¡ëç® ¨§-§ ®âªàëâ¨ï ¤¢¥àª¨ ª®¯¨â¥«ï), ª®â஫«¥à
|
||||||
|
£¥¥à¨àã¥â ¯à¥àë¢ ¨¥. <20>à®æ¥áá®à ¯¥à¥¤ 祩 ª®¬ ¤ë Sense Interrupt Status
|
||||||
|
áç¨âë¢ ¥â ᮤ¥à¦¨¬®¥ ॣ¨áâà ST0 ¨ ¯® ¡¨âã NR (Not Ready) ॣ¨áâà ST0
|
||||||
|
®¯à¥¤¥«ï¥â á®áâ®ï¨¥ ª®¯¨â¥«ï.
|
||||||
|
|
||||||
|
ޝ¨á ¨¥ ª®¬ ¤ 8272.
|
||||||
|
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
|
||||||
|
<20> ä §¥ ¯à¨ª § ¯¥à¥¤ ¢¢®¤®¬ ª ¦¤®£® ¡ ©â ¤®«¦¥ ®¯à 訢 âìáï ॣ¨áâà
|
||||||
|
á®áâ®ï¨ï 8272. <20>ਠí⮬ ¡¨âë DIO (D6) ¨ RQM (D7) ¤®«¦ë ¨¬¥âì § 票ï 0 ¨ 1
|
||||||
|
ᮮ⢥âá⢥® ¯¥à¥¤ § ¯¨áìî ª ¦¤®£® ¡ ©â ª®¬ ¤ë ¢ ª®â஫«¥à. <20> ç «® ä §ë
|
||||||
|
¢ë¯®«¥¨ï ¢ë§ë¢ ¥â ãáâ ®¢ªã íâ¨å ¡¨â®¢ ¢ 1 ¨ 0 ᮮ⢥âá⢥®.
|
||||||
|
|
||||||
|
Read Data —⥨¥ ¤ ëå
|
||||||
|
ÍÍÍÍÍÍÍÍÍ ÍÍÍÍÍÍÍÍÍÍÍÍÍ
|
||||||
|
„«ï § ¤ ¨ï í⮩ ª®¬ ¤ë ¢ ª®â஫«¥à ¯¥à¥¤ ¥âáï ¯®á«¥¤®¢ ⥫ì®áâì ¨§ 9
|
||||||
|
¡ ©â (á¬. â ¡«¨æã ª®¬ ¤). <20>®á«¥ ¯®«ã票ï í⮩ ¯®á«¥¤®¢ ⥫ì®á⨠ª®â஫«¥à
|
||||||
|
¢ë¤ ¥â ᨣ « ¯®¤¢®¤ £®«®¢ª¨ ª ¯®¢¥àå®á⨠¤¨áª (¥á«¨ ® ®â¢¥¤¥ ),
|
||||||
|
®âà ¡ âë¢ ¥â ¯ ã§ã ¤«ï ¯®¤¢®¤ £®«®¢ª¨ (§ ¤ ãî ¢ ª®¬ ¤¥ Specify) ¨
|
||||||
|
ç¨ ¥â ¯®¨áª ¤à¥á®© ¬¥âª¨ ᥪâ®à , ¯®á«¥ 祣® áç¨âë¢ ¥â ¯®«¥
|
||||||
|
¨¤¥â¨ä¨ª â®à ᥪâ®à . Š®£¤ ⥪ã騩 ®¬¥à ᥪâ®à ("R"), åà ï騩áï ¢
|
||||||
|
ॣ¨áâॠIDR ᮢ¯ ¤ ¥â á ®¬¥à®¬ ᥪâ®à , áç¨â ®£® á ¤¨áª , ª®â஫«¥à
|
||||||
|
ç¨ ¥â ¢¢®¤¨âì ¤ ë¥ ¨§ ¯®«ï ¤ ëå ᥪâ®à ¨ ¯®á«¥¤®¢ ⥫ì®, ¡ ©â §
|
||||||
|
¡ ©â®¬, ¢ë¤ ¢ âì ¨å è¨ã ¤ ëå.
|
||||||
|
<20>®á«¥ ®ª®ç ¨ï ç⥨ï ᥪâ®à ª®â஫«¥à ¨ªà¥¬¥â¨àã¥â 1 ®¬¥à
|
||||||
|
ᥪâ®à ¨ ç¨ ¥â áç¨âë¢ âì ¤ ë¥ ¨§ á«¥¤ãî饣® ᥪâ®à . ’ ª®© ®¡¬¥ ®á¨â
|
||||||
|
§¢ ¨¥ ¬ã«ìâ¨á¥ªâ®à®£®. ‚믮«¥¨¥ ª®¬ ¤ë ¬®¦¥â ¡ëâì ¯à¥ªà 饮 ¯®¤ 祩
|
||||||
|
ᨣ « TC (Terminal Count - ª®¥æ áç¥â ). <20>®á«¥ ¯à¨ïâ¨ï ᨣ « ’‘
|
||||||
|
ª®â஫«¥à ¯à¥ªà é ¥â ¯¥à¥¤ ç¨ ¯® 訥 ¤ ëå, ®¤ ª® ¯à®¤®«¦ ¥â ç¨â âì
|
||||||
|
¤ ë¥ â¥ªã饣® ᥪâ®à ¢¯«®âì ¤® ¡ ©â®¢ CRC-ª®â஫ï, ¯®á«¥ 祣® ®¯¥à æ¨ï
|
||||||
|
¯à¥ªà é ¥âáï.
|
||||||
|
Š®«¨ç¥á⢮ ¡ ©â, ¯®¤«¥¦ é¨å áç¨âë¢ ¨î, § ¢¨á¨â ®â § 票© ¡¨â®¢ MT,
|
||||||
|
MFM ¨ N, § ¤ ëå ¢ ª®¬ ¤¥.
|
||||||
|
<20>¨â Œ’ § ¤ ¥â ¬®£®¤®à®¦¥çë© (multitrack) ०¨¬ ª®â஫«¥à ,
|
||||||
|
¯®§¢®«ïî騩 ¥¬ã áç¨âë¢ âì ¤ ë¥ á ®¡¥¨å áâ®à® (¤®à®¦¥ª) ¤¨áª . ‚ í⮬
|
||||||
|
á«ãç ¥ ¤«ï 㪠§ ®£® 樫¨¤à ¡ã¤ãâ ¯¥à¥¤ ë ¢á¥ á¥ªâ®à , ç¨ ï á ᥪâ®à
|
||||||
|
1 áâ®à®ë 0 ¨ § ª 稢 ï ¯®á«¥¤¨¬ ᥪâ®à®¬ áâ®à®ë 1. ‡ ¬¥â¨¬, çâ® íâ®â
|
||||||
|
०¨¬ ®â®á¨âáï ⮫쪮 ª ®¤®¬ã 樫¨¤àã.
|
||||||
|
‚ á«ãç ¥ N=0 § 票¥ DTL ®¯à¥¤¥«ï¥â ª®«¨ç¥á⢮ ¤ ëå, ª®â®àë¥
|
||||||
|
ª®â஫«¥à ¤®«¦¥ âà ªâ®¢ âì ª ª ®¤¨ ᥪâ®à. …᫨ DTL ¬¥ìè¥ ¨á⨮£®
|
||||||
|
à §¬¥à ᥪâ®à , â® ¤ ë¥ ¨§ ᥪâ®à ¯®á«¥ ¯¥à¥¤ ç¨ DTL ¡ ©â ¥ ¯¥à¥¤ îâáï
|
||||||
|
è¨ã ¤ ëå. Š®â஫«¥à ¦¥ áç¨âë¢ ¥â ᥪâ®à ¯®«®áâìî, ¢¯«®âì ¤® ¡ ©â®¢
|
||||||
|
CRCª®âà®«ï ¨, ¥á«¨ íâ® § ¤ ® ¢ ª®¬ ¤¥, ¬®¦¥â ¯à®¤®«¦¨âì ¬ã«ìâ¨á¥ªâ®à®¥
|
||||||
|
ç⥨¥. …᫨ N > 0, â® § 票¥ DTL ¨£®à¨àã¥âáï ¨ ãáâ ¢«¨¢ ¥âáï ¢ 0FFH.
|
||||||
|
<20>®á«¥ § ¢¥à襨ï çâ¥¨ï ª®â஫«¥à ¥ ®â¢®¤¨â £®«®¢ªã ª®¯¨â¥«ï ®â
|
||||||
|
¯®¢¥àå®á⨠¤¨áª ¤® ¨áâ¥ç¥¨ï ¨â¥à¢ « ¢à¥¬¥¨, 㪠§ ®£® ¢ ª®¬ ¤¥
|
||||||
|
Specify. <20>®í⮬㠬¥¦¤ã ¤¢ã¬ï ¯®á«¥¤®¢ ⥫ì묨 ç áâ묨 ®¡à 饨ﬨ £®«®¢ª
|
||||||
|
®áâ ¥âáï ¯à¨¦ ⮩ ª ¯®¢¥àå®á⨠¤¨áª .
|
||||||
|
…᫨ ª®â஫«¥à ¢â®à®© à § ®¡ à㦨¢ ¥â ¨¤¥ªáë© ¨¬¯ã«ìá, ¥ ®¡ à㦨¢
|
||||||
|
¯à ¢¨«ì®£® ®¬¥à ᥪâ®à (§ ¤ ®£® R), ® ãáâ ¢«¨¢ ¥â ä« £ ND (No Data)
|
||||||
|
¢ ॣ¨áâॠST1 ¨ § ª 稢 ¥â ¢ë¯®«¥¨¥ ª®¬ ¤ë (¢ ॣ¨áâॠST0 â ª¦¥
|
||||||
|
ãáâ ¢«¨¢ îâáï ¡¨âë D7 ¨ D6 ¢ 0 ¨ 1 ᮮ⢥âá⢥®).
|
||||||
|
<20>®á«¥ çâ¥¨ï ¯®«ï ¨¤¥â¨ä¨ª â®à ¨ ¯®«ï ¤ ëå ª ¦¤®£® ᥪâ®à ,
|
||||||
|
ª®â஫«¥à ¯à®¨§¢®¤¨â 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 ¨
|
||||||
|
§ ª 稢 ¥â ®¯¥à æ¨î.
|
||||||
|
<20>®á«¥ § ¢¥àè¥¨ï ®¯¥à 樨 ç⥨ï (íâ® â ª¦¥ ®â®á¨âáï ¨ ª ª®¬ ¤¥ § ¯¨á¨
|
||||||
|
¤ ëå) ¨ä®à¬ æ¨ï, áç¨âë¢ ¥¬ ï ¨§ ª®â஫«¥à ä §¥ १ã«ìâ â (¡ ©âë
|
||||||
|
C-H-R-H) § ¢¨á¨â ®â § ç¥¨ï ¡¨â®¢ Œ’ ¨ ¡ ©â …Ž’ ª®¬ ¤ë.
|
||||||
|
|
||||||
|
|
||||||
|
Write Data ‡ ¯¨áì ¤ ëå
|
||||||
|
ÍÍÍÍÍÍÍÍÍÍ ÍÍÍÍÍÍÍÍÍÍÍÍÍ
|
||||||
|
„«ï § ¤ ¨ï í⮩ ª®¬ ¤ë ¢ ª®â஫«¥à ¯¥à¥¤ ¥âáï ¯®á«¥¤®¢ ⥫ì®áâì
|
||||||
|
¨§ 9 ¡ ©â (á¬. â ¡«¨æã ª®¬ ¤). <20>®á«¥ ¯®«ãç¥¨ï ¯®á«¥¤¥£® ¡ ©â ª®¬ ¤ë
|
||||||
|
ª®â஫«¥à ¢ë¤ ¥â ᨣ « ¯®¤¢®¤ £®«®¢ª¨ ª ¯®¢¥àå®á⨠¤¨áª (¥á«¨ ® ¡ë«
|
||||||
|
®â¢¥¤¥ ) ¨ ®âà ¡ âë¢ ¥â § ¤¥à¦ªã ¤«ï ¯®¤¢®¤ £®«®¢ª¨, § ¤ ãî ¢ ª®¬ ¤¥
|
||||||
|
Specify ¨ ç¨ ¥â ¯®¨áª ¯®«ï ¨¤¥â¨ä¨ª â®à ᥪâ®à . …᫨ ⥪ã騩 ®¬¥à
|
||||||
|
ᥪâ®à ("R") åà ï騩áï ¢ ॣ¨áâॠIDR, ᮢ¯ ¤ ¥â á ®¬¥à®¬ ᥪâ®à ,
|
||||||
|
áç¨â ë¬ á ¤¨áª ¨§ ¯®«ï ¨¤¥â¨ä¨ª â®à ᥪâ®à , ª®â஫«¥à ¯®á«¥¤®¢ ⥫ì®,
|
||||||
|
¡ ©â § ¡ ©â®¬, § ¯à 訢 ¥â ¤ ë¥ ã ¯à®æ¥áá®à ¯® 訥 ¤ ëå ¨ § ¯¨áë¢ ¥â
|
||||||
|
¨å ¢ ¯®«¥ ¤ ëå ᥪâ®à ¤¨áª. <20>®á«¥ ®ª®ç ¨ï § ¯¨á¨ ¤ ëå ⥪ã騩 ®¬¥à
|
||||||
|
ᥪâ®à 㢥«¨ç¨¢ ¥âáï 1 ¨ ¯à®¨§¢®¤¨âáï § ¯¨áì á«¥¤ãî饣® ¯®«ï ¤ ëå.
|
||||||
|
’ ªãî ¬ã«ìâ¨á¥ªâ®àãî ®¯¥à æ¨î § ¯¨á¨ ª®â஫«¥à ¯à®¤®«¦ ¥â ¤® â¥å ¯®à, ¯®ª
|
||||||
|
¥ ¯®«ãç¨â ᨣ « ’‘ (ª®¥æ áç¥â ). <20>ਠ¯®áâ㯫¥¨¨ ᨣ « ’‘ ª®â஫«¥à
|
||||||
|
¯à®¤®«¦ ¥â § ¯¨áì ¤ ëå ¢ ⥪ã騩 ᥪâ®à ¤® ¥£® § ¯®«¥¨ï. …᫨ ª®â஫«¥à
|
||||||
|
¯à¨¨¬ ¥â ᨣ « ’‘ ¢ ¯à®æ¥áᥠ§ ¯¨á¨ ¤ ëå, â® ®á⠢襥áï ¯®«¥ ¤ ëå
|
||||||
|
§ ¯®«ï¥âáï ã«ï¬¨.
|
||||||
|
Š®â஫«¥à áç¨âë¢ ¥â ¨¤¥â¨ä¨ª â®à ª ¦¤®£® ᥪâ®à ¨ ¯à®¨§¢®¤¨â
|
||||||
|
CRC-ª®â஫ì áç¨â ëå ¡ ©â. …᫨ ® ®¡ à㦨¢ ¥â ®è¨¡ªã CRC ¢ ®¤®¬ ¨§
|
||||||
|
ᥪâ®à®¢, ® ãáâ ¢«¨¢ ¥â ä« £ DE (Data Error) ¢ ॣ¨áâॠST1 ¨ § ª 稢 ¥â
|
||||||
|
®¯¥à æ¨î (¢ ॣ¨áâॠST0 ¡¨âë D7 ¨ D6 ãáâ ¢«¨¢ îâáï ¢ 0 ¨ 1
|
||||||
|
ᮮ⢥âá⢥®).
|
||||||
|
Š®¬ ¤ § ¯¨á¨ ¢® ¬®£®¬ «®£¨ç ª®¬ ¤¥ çâ¥¨ï ¤ ëå. <20>¨¦¥
|
||||||
|
¯¥à¥ç¨á«¥ë ¢á¥ å à ªâ¥à¨á⨪¨, «®£¨çë¥ ª®¬ ¤¥ çâ¥¨ï ¤ ëå:
|
||||||
|
* Š®«¨ç¥á⢮ ¯¥à¥¤ ¢ ¥¬ëå ¤ ëå.
|
||||||
|
* ”« £ EN (ENd of cylinder).
|
||||||
|
* ”« £ ND (No Data).
|
||||||
|
* <20> ã§ ¤® ®â¢®¤ £®«®¢ª¨ HUT.
|
||||||
|
* ˆä®à¬ æ¨ï, áç¨âë¢ ¥¬ ï ä §¥ १ã«ìâ â , ¥á«¨ ¯à®æ¥áá®à ¯à¥àë¢ ¥â
|
||||||
|
¢ë¯®«¥¨¥ ª®¬ ¤ë.
|
||||||
|
* Ž¯à¥¤¥«¥¨¥ DTL, ª®£¤ N=0 ¨«¨ N>0.
|
||||||
|
|
||||||
|
‚ ०¨¬¥ § ¯¨á¨ ¤ ë¥ ®â ¯à®æ¥áá®à ¨«¨ ª®â஫«¥à <20>„<EFBFBD> ¤®«¦ë
|
||||||
|
¯à¨å®¤¨âì ¥ ०¥ 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, ¥á«¨ ®¨
|
||||||
|
¥ ᮢ¯ ¤ îâ. <20>¨âë Œ’ ¨ SK ¥ ®ª §ë¢ îâ ¢«¨ï¨ï ª®â஫«¥à.
|
||||||
|
‚믮«¥¨¥ ª®¬ ¤ë § ª 稢 ¥âáï, ª®£¤ ª®â஫«¥à áç¨â ¥â …Ž’ ᥪâ®à®¢.
|
||||||
|
…᫨ ª®â஫«¥à ¥ 襫 ¤à¥á®£® ¬ àª¥à ¯®«ï ¨¤¥â¨ä¨ª â®à ¤® ⮣®, ª ª
|
||||||
|
¢â®à®© à § ¯à¨ï« ¨¤¥ªáë© ¨¬¯ã«ìá, ® ãáâ ¢«¨¢ ¥â ä« £ Œ€ (Missing
|
||||||
|
Address Mark) ¢ ॣ¨áâॠST1 ¨ § ª 稢 ¥â ®¯¥à æ¨î (¢ ॣ¨áâॠST0
|
||||||
|
ãáâ ¢«¨¢ îâáï ¡¨âë D7 ¨ D6 ¢ 0 ¨ 1 ᮮ⢥âá⢥®).
|
||||||
|
|
||||||
|
Read ID —⥨¥ ¨¤¥â¨ä¨ª â®à
|
||||||
|
ÍÍÍÍÍÍÍ ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ
|
||||||
|
<20>â ª®¬ ¤ ¨á¯®«ì§ã¥âáï ¤«ï ®¯à¥¤¥«¥¨ï ⥪ã饣® ¯®«®¦¥¨ï £®«®¢ª¨
|
||||||
|
§ ¯¨á¨/çâ¥¨ï ª®¯¨â¥«ï. Š®â஫«¥à § ¯®¬¨ ¥â ¨ä®à¬ æ¨î, áç¨â ãî ¨§
|
||||||
|
¯¥à¢®£® ¢áâà¥ç¥®£® ¯®«ï ¨¤¥â¨ä¨ª â®à ᥪâ®à . …᫨ ¤® ¯à¨å®¤ ¢â®à®£®
|
||||||
|
¨¤¥ªá®£® ¨¬¯ã«ìá ª®â஫«¥à ¥ ¢áâà¥â¨« ¤à¥á®£® ¬ àª¥à ¯®«ï
|
||||||
|
¨¤¥â¨ä¨ª â®à , ® ãáâ ¢«¨¢ ¥â ä« £ Œ€ ¢ ॣ¨áâॠST1. …᫨ ¦¥ ª®â஫«¥à
|
||||||
|
¥ 襫 ¤ ëå, â® ® ãáâ ¢«¨¢ ¥â ä« £ ND ¢ ॣ¨áâॠST1 ¨ ®¯¥à æ¨ï
|
||||||
|
§ ª 稢 ¥âáï.
|
||||||
|
|
||||||
|
Format a Track ”®à¬ â¨à®¢ ¨¥ ¤®à®¦ª¨
|
||||||
|
ÍÍÍÍÍÍÍÍÍÍÍÍÍÍ ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ
|
||||||
|
Š®¬ ¤ ä®à¬ â¨àã¥â ¢áî ¤®à®¦ªã. <20>®á«¥ ®¡ à㦥¨ï ¨¤¥ªá®£® ¨¬¯ã«ìá
|
||||||
|
¤¨áª § ¯¨áë¢ îâáï á«¥¤ãî騥 ¤ ë¥: GAPS, ¤à¥áë© ¬ થà, ¯®«¥
|
||||||
|
¨¤¥â¨ä¨ª â®à ¨ ¯®«¥ ¤ ëå, ᮮ⢥âáâ¢ãî騥 áâ ¤ àâã IBM System 34
|
||||||
|
(®¤¨ à ï ¯«®â®áâì) ¨ IBM System 3740 (¤¢®© ï ¯«®â®áâì).
|
||||||
|
”®à¬ â § ¤ ¥âáï ¢ ª®¬ ¤¥ á«¥¤ãî騬¨ ¯à®£à ¬¬¨à㥬묨 § 票ﬨ:
|
||||||
|
* N - ç¨á«® ¡ ©â ¢ ᥪâ®à¥.
|
||||||
|
* SC - ç¨á«® ᥪâ®à®¢ 樫¨¤à¥.
|
||||||
|
* GPL - ¤«¨ ¬¥¦á¥ªâ®à®£® ¯à®¬¥¦ã⪠.
|
||||||
|
* D - ¡ ©â ¤«ï § ¯®«¥¨ï ®¡« á⨠¤ ëå.
|
||||||
|
<EFBFBD>⨠¯ à ¬¥âàë ¯¥à¥¤ îâáï ¢ ª®â஫«¥à ¯à®æ¥áá®à®¬ ä §¥ ¯à¨ª § . <20>®«¥
|
||||||
|
¤ ëå ª ¦¤®£® ᥪâ®à ¡ã¤¥â § ¯®«¥® ¡ ©â ¬¨ D. <20>®«¥ ¨¤¥â¨ä¨ª â®à ¤«ï
|
||||||
|
ª ¦¤®£® ᥪâ®à § ¤ ¥âáï ¯à®æ¥áá®à®¬ ä §¥ ¨á¯®«¥¨ï. <20>¥®¡å®¤¨¬ë ¯® 4
|
||||||
|
§ ç¥¨ï ¤«ï ª ¦¤®£® ᥪâ®à :
|
||||||
|
* C - ®¬¥à 樫¨¤à
|
||||||
|
* H - ®¬¥à £®«®¢ª¨ (¯®¢¥àå®áâ¨)
|
||||||
|
* R - ®¬¥à ᥪâ®à
|
||||||
|
* N - ª®¤ ¤«¨ë ᥪâ®à
|
||||||
|
<EFBFBD>â® § ç¨â, çâ® ¤¨áª ¯à¨ ¥®¡å®¤¨¬®áâ¨, ¬®¦¥â ¡ëâì ®âä®à¬ â¨à®¢ ¥
|
||||||
|
¯®á«¥¤®¢ ⥫ì묨 ®¬¥à ¬¨ ᥪâ®à®¢.
|
||||||
|
<20>®á«¥ ä®à¬ â¨à®¢ ¨ï ª ¦¤®£® ᥪâ®à ¯à®æ¥áá®à ¤®«¦¥ ¯¥à¥¤ âì ®¢ë¥
|
||||||
|
§ 票ï C,H,R,N ¤«ï ª ¦¤®£® ᥪâ®à ¤®à®¦ª¥. ‘®¤¥à¦¨¬®¥ ॣ¨áâà R
|
||||||
|
㢥«¨ç¨¢ ¥âáï 1 ¯®á«¥ ä®à¬ â¨à®¢ ¨ï ª ¦¤®£® ᥪâ®à , ¨, á«¥¤®¢ ⥫ì®,
|
||||||
|
íâ®â ॣ¨áâà ¡ã¤¥â ᮤ¥à¦ âì § 票¥ R+1 ¯à¨ áç¨âë¢ ¨¨ ä §¥ १ã«ìâ â .
|
||||||
|
<EFBFBD>â®â ¯à®æ¥áá ¡ã¤¥â ¯à®¤®«¦ âìáï ¤«ï ¢á¥© ¤®à®¦ª¨, ¯®ª ¢â®à®© à § ¥ ¡ã¤¥â
|
||||||
|
®¡ à㦥 ¨¤¥ªáë© ¨¬¯ã«ìá. <20>®á«¥ í⮣® ¢ë¯®«¥¨¥ ª®¬ ¤ë § ¢¥àè ¥âáï. …᫨
|
||||||
|
¯à¨ § ¯¨á¨ ®â ª®¯¨â¥«ï ¯à¨¨¬ ¥âáï ᨣ « 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 Š®¬ ¤ë ᪠¨à®¢ ¨ï
|
||||||
|
ÍÍÍÍÍÍÍÍÍÍÍÍÍ ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ
|
||||||
|
Š®¬ ¤ë ᪠¨à®¢ ¨ï ¯®§¢®«ïîâ áç¨â ë¥ á ¤¨áª ¤ ë¥ áà ¢¨âì á
|
||||||
|
¤ 묨, ¢ë¤ ¢ ¥¬ë¥ ¯à®æ¥áá®à®¬ (ª®â஫«¥à®¬ <20>„<EFBFBD>). Š®â஫«¥à áà ¢¨¢ ¥â
|
||||||
|
¤ ë¥ ¯®á«¥¤®¢ ⥫ì®, ¡ ©â § ¡ ©â®¬ ¨ ¯à®¢¥àï¥â ãá«®¢¨ï:
|
||||||
|
DD = DP DD <= DP DD >= DP
|
||||||
|
£¤¥ DD - ¤ ë¥ á ¤¨áª ; DP - ¤ ë¥ ®â ¯à®æ¥áá®à .
|
||||||
|
<20>®á«¥ ¯à®¢¥àª¨ ¢á¥£® ᥪâ®à , ¥á«¨ ãá«®¢¨¥ ¥ ¢ë¯®«ï¥âáï, ¯à®¨§¢®¤¨âáï
|
||||||
|
¨ªà¥¬¥â ®¬¥à ᥪâ®à (R + STR -> R) ¨ ®¯¥à æ¨ï ᪠¨à®¢ ¨ï ¯à®¤®«¦ ¥âáï.
|
||||||
|
ޝ¥à æ¨ï ¡ã¤¥â ¯à®¤®«¦ âìáï ¤® â¥å ¯®à, ¯®ª ¥ ¯à®¨§®©¤¥â ®¤® ¨§ á«¥¤ãîé¨å
|
||||||
|
ãá«®¢¨©:
|
||||||
|
* ¢ë¯®«¨âáï ãá«®¢¨¥ ᪠¨à®¢ ¨ï (à ¢®, ¡®«ìè¥ ¨«¨ ¬¥ìè¥)
|
||||||
|
* ¤®á⨣ãâ ¯®á«¥¤¨© ᥪâ®à (…Ž’)
|
||||||
|
* ¯à¨ïâ ᨣ « ’‘
|
||||||
|
…᫨ ãá«®¢¨¥ ᪠¨à®¢ ¨ï 㤮¢«¥â¢®à¥®, ª®â஫«¥à ãáâ ¢«¨¢ ¥â ä« £ SH
|
||||||
|
(Scan Hit) ¢ ॣ¨áâॠST2 ¨ § ¢¥àè ¥â ª®¬ ¤ã. …᫨ ãá«®¢¨¥ ¥ 㤮¢«¥â¢®à¥®
|
||||||
|
¢ ¯à®¬¥¦ã⪥ ¬¥¦¤ã ç «ìë¬ á¥ªâ®à®¬ (§ ¤ ë¬ R) ¨ ¯®á«¥¤¨¬ ᥪâ®à®¬
|
||||||
|
樫¨¤à (…Ž’), ª®â஫«¥à ãáâ ¢«¨¢ ¥â ä« £ SN (Scan Not Satisfied) ¢
|
||||||
|
ॣ¨áâॠST2 ¨ § ¢¥àè ¥â ª®¬ ¤ã.
|
||||||
|
…᫨ ¢® ¢à¥¬ï ®¯¥à 樨 ¯®áâ㯨« ᨣ « ’‘ ®â ¯à®æ¥áá®à ¨«¨ ª®â஫«¥à
|
||||||
|
<EFBFBD>„<EFBFBD>, ª®â஫«¥à ¯à¥ªà é ¥â áà ¢¥¨¥ ⥪ã饬 ¡ ©â¥ ¨ § ¢¥àè ¥â ª®¬ ¤ã.
|
||||||
|
<20>¨¦¥ ¢ â ¡«¨æ¥ ¯à¨¢¥¤¥ë á®áâ®ï¨ï ¡¨â®¢ SH ¨ SN ¯®á«¥ à §«¨çëå ãá«®¢¨©
|
||||||
|
᪠¨à®¢ ¨ï:
|
||||||
|
ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÍÍÍÍ»
|
||||||
|
º º<>¥£.ST2º º
|
||||||
|
º ‘ª ¨à®¢ ¨¥ ¤®.. ÌÍÍÍËÍÍ͹ <20>ਬeç ¨¥º
|
||||||
|
º º SNº SHº º
|
||||||
|
ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÎÍÍÍÎÍÍÍÎÍÍÍÍÍÍÍÍÍÍ͹
|
||||||
|
º <20> ¢® º 0 º 1 º DD = DP º
|
||||||
|
º º 1 º 0 º DD <>DP º
|
||||||
|
ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÎÍÍÍÎÍÍÍÎÍÍÍÍÍÍÍÍÍÍ͹
|
||||||
|
º Œ¥ìè¥ ¨«¨ à ¢® º 0 º 1 º DD = DP º
|
||||||
|
º º 0 º 0 º DD < DP º
|
||||||
|
º º 1 º 0 º DD > DP º
|
||||||
|
ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÎÍÍÍÎÍÍÍÎÍÍÍÍÍÍÍÍÍÍ͹
|
||||||
|
º <20>®«ìè¥ ¨«¨ à ¢® º 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), ¥®¡å®¤¨¬® ¯®¬¨âì, çâ® ¯®á«¥¤¨© ᥪâ®à ¤®à®¦ª¥ ¤®«¦¥ ¡ëâì
|
||||||
|
áç¨â . <20> ¯à¨¬¥à, ¥á«¨ STP = 02, Œ’ = 0, ᥪâ®à ¯à®ã¬¥à®¢ ë
|
||||||
|
¯®á«¥¤®¢ â¥«ì® ®â 1 ¤® 26, ª®¬ ¤ã Scan ç¨ ¥¬ á ᥪâ®à 21, â® ãᯥè®
|
||||||
|
¡ã¤ãâ ®¡à ¡®â ë ᥪâ®à 21, 23 ¨ 25. „ «¥¥ ᥪâ®à 26 ¡ã¤¥â ¯à®¯ãé¥, § ⥬
|
||||||
|
¯à¨¤¥â ¨¤¥ªáë© ¨¬¯ã«ìá. <20>â® ¢ë§®¢¥â ¥®à¬ «ì®¥ § ¢¥à襨¥ ®¯¥à 樨. …᫨
|
||||||
|
¡ë …Ž’ à ¢ï«®áì 25, ᪠¨à®¢ ¨¥ ¡ë ç¨ «®áì á ᥪâ®à 20, â® ®¯¥à æ¨ï
|
||||||
|
Scan § ¢¥à訫 áì ¡ë ãᯥè®.
|
||||||
|
€ «®£¨ç® ª®¬ ¤ ¬ ç⥨ï/§ ¯¨á¨, ¯à®æ¥áá®à ¨«¨ ª®â஫«¥à <20>„<EFBFBD> ¤®«¦¥
|
||||||
|
®¡á«ã¦¨¢ âì ª®â஫«¥à ª ¦¤ë¥ 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). <20>®á«¥ ª ¦¤®£® ¨¬¯ã«ìá è £ ¢®¢ì áà ¢¨¢ îâáï § 票ï
|
||||||
|
PCN ¨ NCN ¨ ª®£¤ PCN = NCN, ª®â஫«¥à ãáâ ¢«¨¢ ¥â ä« £ SE (Seek End) ¢
|
||||||
|
ॣ¨áâॠST0 ¨ § ¢¥àè ¥â ¢ë¯®«¥¨¥ ª®¬ ¤ë.
|
||||||
|
<20> ä §¥ ¯à¨ª § ª®â஫«¥à 室¨âáï ¢ á®áâ®ï¨¨ FDC Busy (§ ïâ),
|
||||||
|
®¤ ª® ä §¥ ¨á¯®«¥¨ï ª®â஫«¥à ¯¥à¥å®¤¨â ¢ á®áâ®ï¨¥ NON Busy (¥
|
||||||
|
§ ïâ). Š®£¤ ª®â஫«¥à 室¨âáï ¢ á®áâ®ï¨¨ NON Busy, ¥¬ã ¬®¦® § ¤ âì
|
||||||
|
¤à㣨¥ ®¯¥à 樨 Seek ¨ ¢ í⮬ á«ãç ¥ ª®¬ ¤ ¯®§¨æ¨®¨à®¢ ¨ï ¡ã¤¥â
|
||||||
|
¢ë¯®«ïâìáï ®¤®¢à¥¬¥® ¤«ï ¥áª®«ìª¨å (¤® 4-å) ª®¯¨â¥«¥©.
|
||||||
|
…᫨ ¯¥à¥¤ ç «®¬ ä §ë ¨á¯®«¥¨ï ¨«¨ ¢® ¢à¥¬ï ¨á¯®«¥¨ï ª®¬ ¤ë Seek
|
||||||
|
ª®¯¨â¥«ì 室¨âáï ¢ á®áâ®ï¨¨ Not Ready (¥ £®â®¢), ª®â஫«¥à
|
||||||
|
ãáâ ¢«¨¢ ¥â ä« £ NR (Not Ready) ¢ ॣ¨áâॠST0 ¨ ª®¬ ¤ § ¢¥àè ¥âáï.
|
||||||
|
|
||||||
|
Recalibrate <20>¥ª «¨¡à®¢ª (®âª â)
|
||||||
|
ÍÍÍÍÍÍÍÍÍÍÍ ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ
|
||||||
|
Š®¬ ¤ ¯¥à¥ãáâ ¢«¨¢ ¥â £®«®¢ªã ç⥨ï/§ ¯¨á¨ ª®¯¨â¥«ï
|
||||||
|
¤®à®¦ªã 0. <20> ª®¯¨â¥«ì ¢ í⮬ á«ãç ¥ ¤®«¦¥ ¢ë¤ âì ᨣ « TR00. Š®â஫«¥à
|
||||||
|
á¡à áë¢ ¥â ᮤ¥à¦¨¬®¥ ॣ¨áâà PCN ¨ ¯à®¢¥àï¥â ᨣ « TR00 á ª®¯¨â¥«ï. <20>®ª
|
||||||
|
íâ®â ᨣ « ¨¬¥¥â ¨§ª¨© ã஢¥ì, ª®â஫«¥à ãáâ ¢«¨¢ ¥â ¢ "1" ᨣ «
|
||||||
|
¯à ¢«¥¨ï Dir ¨ ¢ë¤ ¥â ¨¬¯ã«ìáë è £ ª®¯¨â¥«ì. Š®£¤ ᨣ « TR00
|
||||||
|
áâ ®¢¨âáï ¢ë᮪¨¬, ª®â஫«¥à ãáâ ¢«¨¢ ¥â ä« £ SE (Seek End) ¢ ॣ¨áâà¥
|
||||||
|
ST0 ¨ § ¢¥àè ¥â ª®¬ ¤ã. …᫨ ¯®á«¥ ¢ë¤ ç¨ 77 ¨¬¯ã«ìᮢ è £ á®áâ®ï¨¥
|
||||||
|
ᨣ « ¥ ¨§¬¥¨«®áì, ª®â஫«¥à ãáâ ¢«¨¢ ¥â ä« £¨ SE (Seek End) ¨ EC
|
||||||
|
(Equipment Check) ¢ ॣ¨áâà ST0 ¨ ª®¬ ¤ § ¢¥àè ¥âáï. Š®¬ ¤ ¬®¦¥â
|
||||||
|
¯à®¨§¢®¤¨âì ४ «¨¡à®¢ªã ®¤®¢à¥¬¥® ¢á¥å 4-å ª®¯¨â¥«¥©. <20>¥ ªæ¨ï
|
||||||
|
¨á祧®¢¥¨¥ ᨣ « Ready á ª®¯¨â¥«ï «®£¨ç ॠªæ¨¨ ¢ ª®¬ ¤¥ Seek.
|
||||||
|
|
||||||
|
Sense Interrupt Status ‘ç¨â âì á®áâ®ï¨¥ ¯à¥àë¢ ¨ï
|
||||||
|
ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ
|
||||||
|
‘¨£ « ¯à¥àë¢ ¨ï INT £¥¥à¨àã¥âáï ª®â஫«¥à®¬ ¢ á«¥¤ãîé¨å á«ãç ïå:
|
||||||
|
1. <20> ä §¥ १ã«ìâ â á«¥¤ãîé¨å ª®¬ ¤:
|
||||||
|
* 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. <20> ä §¥ ¢ë¯®«¥¨ï ¢ ०¨¬¥ NON DMA
|
||||||
|
<EFBFBD>à¥àë¢ ¨ï ¢ á«ãç ïå (1) ¨ (4) «¥£ª® à ᯮ§ îâáï ¯à®æ¥áá®à®¬, â.ª.
|
||||||
|
¯à®¨§¢®¤ïâáï ¢® ¢à¥¬ï ®à¬ «ì®£® ¨á¯®«¥¨ï ª®¬ ¤. ޤ ª® ¯à¥àë¢ ¨ï ¢
|
||||||
|
á«ãç ïå (2) ¨ (3) ¬®£ãâ ¡ëâì ¨¤¥â¨ä¨æ¨à®¢ ë ¯à®æ¥áá®à®¬ ⮫쪮 ¯ã⥬
|
||||||
|
¢ë¯®«¥¨ï ª®¬ ¤ë ç⥨ï á®áâ®ï¨ï ¯à¥àë¢ ¨ï. <20>â ª®¬ ¤ á¡à áë¢ ¥â ᨣ «
|
||||||
|
¯à¥àë¢ ¨ï ¨ ¯®á।á⢮¬ ¡¨â®¢ 5-7 ॣ¨áâà ST0 ¯à®æ¥áá®à ¬®¦¥â ®¯à¥¤¥«¨âì
|
||||||
|
¯à¨ç¨ã ¯à¥àë¢ ¨ï.
|
||||||
|
|
||||||
|
ÉÍÍÍÍÍËÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
|
||||||
|
º SE º INT Code º º
|
||||||
|
ÌÍÍÍÍÍÎÍÍÍÍÍËÍÍÍÍ͹ º
|
||||||
|
º ¡¨â º ¡¨â º ¡¨â º <20>à¨ç¨ ¯à¥àë¢ ¨ï º
|
||||||
|
º 5 º 6 º 7 º º
|
||||||
|
ÌÍÍÍÍÍÎÍÍÍÍÍÎÍÍÍÍÍÎÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹
|
||||||
|
º 0 º 1 º 1 º ˆ§¬¥¥¨¥ ᨣ « Readu º
|
||||||
|
º º º º á ª®¯¨â¥«ï º
|
||||||
|
ÌÍÍÍÍÍÎÍÍÍÍÍÎÍÍÍÍÍÎÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹
|
||||||
|
º 1 º 0 º 0 º <20>®à¬ «ì®¥ § ¢¥à襨¥ ª®¬ ¤ º
|
||||||
|
º º º º Seek ¨ Recalibrate º
|
||||||
|
ÌÍÍÍÍÍÎÍÍÍÍÍÎÍÍÍÍÍÎÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹
|
||||||
|
º 1 º 1 º 0 º Žè¨¡®ç®¥ § ¢¥à襨¥ ª®¬ ¤ º
|
||||||
|
º º º º Seek ¨ Recalibrate º
|
||||||
|
ÈÍÍÍÍÍÊÍÍÍÍÍÊÍÍÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
|
||||||
|
|
||||||
|
Š®¬ ¤ë Seek ¨ Recalibrate ¥ ¨¬¥îâ ä §ë १ã«ìâ â , ¯®í⮬ã âॡã¥âáï
|
||||||
|
¨á¯®«ì§®¢ ¨¥ ª®¬ ¤ë Sense Interrupt Status ¤«ï ¨å ãᯥ讣® § ¢¥àè¥¨ï ¨
|
||||||
|
¯à®¢¥àª¨ ¯®«®¦¥¨ï £®«®¢ª¨ ª®¯¨â¥«ï (PCN).
|
||||||
|
|
||||||
|
Specify “áâ ®¢¨âì ¯ à ¬¥âàë ª®¯¨â¥«ï
|
||||||
|
ÍÍÍÍÍÍÍ ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ
|
||||||
|
Š®¬ ¤ § ¤ ¥â § 票ï 3 ¢à¥¬¥ëå ¨â¥à¢ «®¢ - ¯ à ¬¥â஢ ª®¯¨â¥«¥©:
|
||||||
|
* HUT - ¯ ã§ ¤® ®â¢®¤ £®«®¢ª¨. ‡ ¤ ¥â ¢à¥¬ï ®â ®ª®ç ¨ï ®¯¥à 樨
|
||||||
|
ç⥨ï/§ ¯¨á¨ ¤® ¬®¬¥â ®â¢®¤ £®«®¢ª¨ ®â ¯®¢¥àå®á⨠¤¨áª .
|
||||||
|
‚à¥¬ï § ¤ ¥âáï ¢ ¥¤¨¨æ å ¯® 16 ¬á¥ª. ¨ «¥¦¨â ¢ ¯à¥¤¥« å
|
||||||
|
16..240 ¬á¥ª.
|
||||||
|
* SRT - ¢à¥¬ï è £ £®«®¢ª¨. ‡ ¤ ¥â ¢à¥¬ï § ¤¥à¦ª¨ ¬¥¦¤ã ¤¢ã¬ï
|
||||||
|
¯®á«¥¤®¢ ⥫ì묨 ¨¬¯ã«ìá ¬¨ è £ . ‚à¥¬ï § ¤ ¥âáï ¢ ¥¤¨¨æ å
|
||||||
|
¯® 1 ¬á¥ª. ¨ «¥¦¨â ¢ ¯à¥¤¥« å 1..16 ¬á¥ª.
|
||||||
|
‚¨¬ ¨¥! <20>®«ì訥 ç¨á« § ¤ îâ ¬¥ì襥 ¢à¥¬ï è £ :
|
||||||
|
0FH - 1 ¬á¥ª., 0EH - 2 ¬á¥ª. ¨ â.¤.
|
||||||
|
* HLT - ¢à¥¬ï ¯®¤¢®¤ £®«®¢ª¨. ‡ ¤ ¥â ¢à¥¬ï ¬¥¦¤ã ¢ë¤ 祩 ᨣ «
|
||||||
|
¯®¤¢®¤ £®«®¢ª¨ ª ¤¨áªã ¨ ç «®¬ ®¯¥à 樨 ç⥨ï/§ ¯¨á¨.
|
||||||
|
‡ ¤ ¥âáï ¢ ¥¤¨¨æ å ¯® 2 ¬á¥ª. ¨ «¥¦¨â ¢ ¯à¥¤¥« å 2..254 ¬á¥ª.
|
||||||
|
‚ᥠ¢à¥¬¥ë¥ ¨â¥à¢ «ë, 㪠§ ë¥ ¢ëè¥, á¢ï§ ë á ⠪⮢®© ç áâ®â®©
|
||||||
|
ª®â஫«¥à (CLK, ¢ë¢.19) ¨ ¯à¨¢¥¤¥ë ¤«ï á«ãç ï, ª®£¤ CLK = 8 Œƒæ (203 ¬¬.
|
||||||
|
¤¨áª). …᫨ ¦¥ CLK = 4 Œƒæ (133 ¬¬. ¤¨áª), â® ¢á¥ § 票ï 㬥ìè âáï ¢ 2
|
||||||
|
à § .
|
||||||
|
<20>¨â ND ¢ ª®¬ ¤¥ ®áãé¥á⢫ï¥â ¢ë¡®à ०¨¬ <20>„<EFBFBD> ¤«ï ª®â஫«¥à : ¥á«¨ ¡¨â
|
||||||
|
ND=1, ¢ë¡¨à ¥âáï ०¨¬ NON DMA (¥-<2D>„<EFBFBD>), ¥á«¨ ¦¥ ND=0, â® ¢ë¡¨à ¥âáï ०¨¬
|
||||||
|
DMA (<28>„<EFBFBD>).
|
||||||
|
|
||||||
|
Sense Drive Status —⥨¥ á®áâ®ï¨ï ª®¯¨â¥«ï
|
||||||
|
ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ
|
||||||
|
Š®¬ ¤ ¬®¦¥â ¡ëâì ¨á¯®«ì§®¢ ¯à®æ¥áá®à®¬, ª®£¤ ¥¬ã ¥®¡å®¤¨¬® ã§ âì
|
||||||
|
á®áâ®ï¨¥ ª®¯¨â¥«ï. <20>¥£¨áâà ST3 ᮤ¥à¦¨â ¨ä®à¬ æ¨î ® á®áâ®ï¨¨ ª®¯¨â¥«ï.
|
||||||
|
|
||||||
|
Invalid <20>¥¤®¯ãá⨬ ï ª®¬ ¤
|
||||||
|
ÍÍÍÍÍÍÍ ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ
|
||||||
|
…᫨ ¢ ª®â஫«¥à ¯¥à¥¤ ¥âáï ª®¬ ¤ , ¥ ®¯®§ ï ª ª ®¤ ¨§
|
||||||
|
¢ë襯¥à¥ç¨á«¥ëå, ª®â஫«¥à § ¢¥àè ¥â ª®¬ ¤ã. ‚ í⮬ á«ãç ¥ ¯à¥àë¢ ¨¥ ¥
|
||||||
|
£¥¥à¨àã¥âáï. <20>¨âë 6 ¨ 7 ¢ ॣ¨áâॠá®áâ®ï¨ï (DIO ¨ RQM) ãáâ ¢«¨¢ îâáï ¢
|
||||||
|
1, 㪠§ë¢ ï ¯à®æ¥áá®àã ¥®¡å®¤¨¬®áâì ¢ë¯®«¥¨ï ä §ë १ã«ìâ â - ç⥨ï
|
||||||
|
ॣ¨áâà ST0. ‚ ॣ¨áâॠST0 室¨âáï ¡ ©â 80<38>, ¯®ª §ë¢ î騩 ¥¤®¯ãá⨬ãî
|
||||||
|
ª®¬ ¤ã.
|
||||||
|
<20>¥®¡å®¤¨¬® ®â¬¥â¨âì, çâ® ¯®á«¥ ®¯¥à 権 Seek ¨ Recalibrate
|
||||||
|
(¢®§¨ª®¢¥¨ï ¯à¥àë¢ ¨ï ¯®á«¥ ®ª®ç ¨ï ª®¬ ¤ë), ª®â஫«¥à ¤®«¦¥
|
||||||
|
¯®«ãç¨âì ª®¬ ¤ã Sense Interrupt Status, ¨ ç¥ ® ¢®á¯à¨¬¥â á«¥¤ãîéãî ª®¬ ¤ã
|
||||||
|
ª ª ¥¤®¯ãá⨬ãî.
|
||||||
|
<20>®«ì§®¢ â¥«ì ¯à¨ ¥®¡å®¤¨¬®á⨠¬®¦¥â ¨á¯®«ì§®¢ âì íâã ª®¬ ¤ã, ª ª
|
||||||
|
ª®¬ ¤ã NOP (¥â ®¯¥à 樨) ¤«ï ¯à¨¢¥¤¥¨ï ª®â஫«¥à ¢ ¨§¢¥á⮥ á®áâ®ï¨¥
|
||||||
|
¨«¨ ¢ á®áâ®ï¨¥ ¡¥§ ®¯¥à 樨.
|
||||||
|
|
||||||
144
docs/8272CMD.DOC
Normal file
144
docs/8272CMD.DOC
Normal file
@ -0,0 +1,144 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
‘¨á⥬ ª®¬ ¤ ª®â஫«¥à <20>ƒŒ„ i8272
|
||||||
|
|
||||||
|
ÉÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍËÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
|
||||||
|
º º R º ˜¨ ¤ ëå º º
|
||||||
|
º ” § º / ÌÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍ͹ <20>ਬ¥ç ¨¥ º
|
||||||
|
º º W º 7 ³ 6 ³ 5 ³ 4 ³ 3 ³ 2 ³ 1 ³ 0 º º
|
||||||
|
ºÍÍÍÍÍÍÍÍÍÍÍÍÍÎÍÍÍÎÍÍÍÏÍÍÍÏÍÍÍÏÍÍÍÏÍÍÍÏÍÍÍÏÍÍÍÏÍÍÍÎÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹
|
||||||
|
º <20>ਪ § º W º Read/Write/Scan º Š®¬ ¤®¥ á«®¢® º
|
||||||
|
º º ÇÄÄÄÂÄÄÄÂÄÄÄÂÄÄÄÂÄÄÄÂÄÄÄÂÄÄÄÂÄÄĶ (á¬. â ¡«¨æã) º
|
||||||
|
º º º 0 ³ 0 ³ 0 ³ 0 ³ 0 ³HDS³DS0³DS1º º
|
||||||
|
º º ÇÄÄÄÁÄÄÄÁÄÄÄÁÄÄÄÁÄÄÄÁÄÄÄÁÄÄÄÁÄÄĶ º
|
||||||
|
º º º C º º
|
||||||
|
º º º H º º
|
||||||
|
º º º R º º
|
||||||
|
º º º N º º
|
||||||
|
º º º EOT º º
|
||||||
|
º º º GPL º º
|
||||||
|
º º º DTL º º
|
||||||
|
ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÎÍÍÍÎÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÎÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹
|
||||||
|
º ˆá¯®«¥¨¥ º º ‚믮«¥¨¥ ®¯¥à 樨 º º
|
||||||
|
ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÎÍÍÍÎÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÎÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹
|
||||||
|
º <20>¥§ã«ìâ â º R º ST0 º º
|
||||||
|
º º º ST1 º º
|
||||||
|
º º º ST2 º º
|
||||||
|
º º º C º º
|
||||||
|
º º º H º º
|
||||||
|
º º º R º º
|
||||||
|
º º º N º º
|
||||||
|
ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
|
||||||
|
Š®¬ ¤ë¥ á«®¢
|
||||||
|
ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍËÍÍÍÍÍÍÍ»
|
||||||
|
º Š®¬ ¤ º 7 ³ 6 ³ 5 ³ 4 ³ 3 ³ 2 ³ 1 ³ 0 º <20>ਬ. º
|
||||||
|
ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÎÍÍÍØÍÍÍØÍÍÍØÍÍÍØÍÍÍØÍÍÍØÍÍÍØÍÍÍÎÍÍÍÍÍÍ͹
|
||||||
|
º 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 º ˜¨ ¤ ëå º º
|
||||||
|
º ” § º / ÌÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍ͹ <20>ਬ¥ç ¨¥ º
|
||||||
|
º º W º 7 ³ 6 ³ 5 ³ 4 ³ 3 ³ 2 ³ 1 ³ 0 º º
|
||||||
|
ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÊÍÍÍÏÍÍÍÏÍÍÍÏÍÍÍÏÍÍÍÏÍÍÍÏÍÍÍÏÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÍ͹
|
||||||
|
º Read ID º 4AH/0AH º
|
||||||
|
ÌÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍËÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍËÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÍ͹
|
||||||
|
º <20>ਪ § º W º 0 ³MFM³ 0 ³ 0 ³ 1 ³ 0 ³ 1 ³ 0 º Š®¬ ¤®¥ á«®¢® º
|
||||||
|
º º ÇÄÄÄÅÄÄÄÅÄÄÄÅÄÄÄÅÄÄÄÅÄÄÄÅÄÄÄÅÄÄĶ º
|
||||||
|
º º º 0 ³ 0 ³ 0 ³ 0 ³ 0 ³HDS³DS0³DS1º º
|
||||||
|
ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÎÍÍÍÎÍÍÍÏÍÍÍÏÍÍÍÏÍÍÍÏÍÍÍÏÍÍÍÏÍÍÍÏÍÍÍÎÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹
|
||||||
|
º ˆá¯®«¥¨¥ º º ‚믮«¥¨¥ ®¯¥à 樨 º º
|
||||||
|
ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÎÍÍÍÎÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÎÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹
|
||||||
|
º <20>¥§ã«ìâ â º R º ST0 º º
|
||||||
|
º º º ST1 º º
|
||||||
|
º º º ST2 º º
|
||||||
|
º º º C º º
|
||||||
|
º º º H º º
|
||||||
|
º º º R º º
|
||||||
|
º º º N º º
|
||||||
|
ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÍ͹
|
||||||
|
º Format a Track º 4DH/0DH º
|
||||||
|
ÌÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍËÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍËÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÍ͹
|
||||||
|
º <20>ਪ § º W º 0 ³MFM³ 0 ³ 0 ³ 1 ³ 1 ³ 0 ³ 1 º Š®¬ ¤®¥ á«®¢® º
|
||||||
|
º º ÇÄÄÄÅÄÄÄÅÄÄÄÅÄÄÄÅÄÄÄÅÄÄÄÅÄÄÄÅÄÄĶ º
|
||||||
|
º º º 0 ³ 0 ³ 0 ³ 0 ³ 0 ³HDS³DS0³DS1º º
|
||||||
|
º º ÇÄÄÄÁÄÄÄÁÄÄÄÁÄÄÄÁÄÄÄÁÄÄÄÁÄÄÄÁÄÄĶ º
|
||||||
|
º º º N º <20> §¬¥à ᥪâ®à º
|
||||||
|
º º º SC º Š®«¨ç¥á⢮ ᥪâ®à®¢ º
|
||||||
|
º º º GPL º Œ¥¦á¥ªâ®àë© GAP º
|
||||||
|
º º º D º ‡ ¯®«¨â¥«ì º
|
||||||
|
ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÎÍÍÍÎÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÎÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹
|
||||||
|
º ˆá¯®«¥¨¥ º º ‚믮«¥¨¥ ®¯¥à 樨 º º
|
||||||
|
ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÎÍÍÍÎÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÎÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹
|
||||||
|
º <20>¥§ã«ìâ â º R º ST0 º º
|
||||||
|
º º º ST1 º º
|
||||||
|
º º º ST2 º º
|
||||||
|
º º º C º º
|
||||||
|
º º º H º º
|
||||||
|
º º º R º º
|
||||||
|
º º º N º º
|
||||||
|
ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍ͹
|
||||||
|
º Recalibrate º 07H º
|
||||||
|
ÌÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍËÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍËÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍ͹
|
||||||
|
º <20>ਪ § º W º 0 ³ 0 ³ 0 ³ 0 ³ 0 ³ 1 ³ 1 ³ 1 º Š®¬ ¤®¥ á«®¢® º
|
||||||
|
º º ÇÄÄÄÅÄÄÄÅÄÄÄÅÄÄÄÅÄÄÄÅÄÄÄÅÄÄÄÅÄÄĶ º
|
||||||
|
º º º 0 ³ 0 ³ 0 ³ 0 ³ 0 ³HDS³DS0³DS1º º
|
||||||
|
ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÎÍÍÍÎÍÍÍÏÍÍÍÏÍÍÍÏÍÍÍÏÍÍÍÏÍÍÍÏÍÍÍÏÍÍÍÎÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹
|
||||||
|
º ˆá¯®«¥¨¥ º º ‚믮«¥¨¥ ®¯¥à 樨 º ” §ë १ã«ìâ ⠥⠺
|
||||||
|
ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍ͹
|
||||||
|
º Sense Interrupt Status º 08H º
|
||||||
|
ÌÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍËÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍËÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍ͹
|
||||||
|
º <20>ਪ § º W º 0 ³ 0 ³ 0 ³ 0 ³ 1 ³ 0 ³ 0 ³ 0 º Š®¬ ¤®¥ á«®¢® º
|
||||||
|
ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÎÍÍÍÎÍÍÍÏÍÍÍÏÍÍÍÏÍÍÍÏÍÍÍÏÍÍÍÏÍÍÍÏÍÍÍÎÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹
|
||||||
|
º <20>¥§ã«ìâ â º R º ST0 º ” §ë ¨á¯®«¥¨ï ¥â º
|
||||||
|
º º º PCN º º
|
||||||
|
ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍ͹
|
||||||
|
º Specify º 03H º
|
||||||
|
ÌÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍËÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍËÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍ͹
|
||||||
|
º <20>ਪ § º W º 0 ³ 0 ³ 0 ³ 0 ³ 0 ³ 0 ³ 1 ³ 1 º Š®¬ ¤®¥ á«®¢® º
|
||||||
|
º º ÇÄÄÄÁÄÄÄÁÄÄÄÁÄÄÄÅÄÄÄÁÄÄÄÁÄÄÄÁÄÄĶÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹
|
||||||
|
º º º SRT ³ HUT º <20>¥â ä § १ã«ìâ â º
|
||||||
|
º º ÇÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÂÄÄĶ ¨ ¨á¯®«¥¨ï º
|
||||||
|
º º º HLT ³ NDº º
|
||||||
|
ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÏÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
|
||||||
|
|
||||||
|
ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍ»
|
||||||
|
º Sense Drive Status º 04H º
|
||||||
|
ÌÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍËÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍËÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍ͹
|
||||||
|
º <20>ਪ § º W º 0 ³ 0 ³ 0 ³ 0 ³ 1 ³ 1 ³ 0 ³ 1 º Š®¬ ¤®¥ á«®¢® º
|
||||||
|
º º ÇÄÄÄÅÄÄÄÅÄÄÄÅÄÄÄÅÄÄÄÅÄÄÄÅÄÄÄÅÄÄĶ º
|
||||||
|
º º º 0 ³ 0 ³ 0 ³ 0 ³ 0 ³HDS³DS0³DS1º º
|
||||||
|
ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÎÍÍÍÎÍÍÍÏÍÍÍÏÍÍÍÏÍÍÍÏÍÍÍÏÍÍÍÏÍÍÍÏÍÍÍÎÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹
|
||||||
|
º <20>¥§ã«ìâ â º R º ST3 º ” §ë ¨á¯®«¥¨ï ¥â º
|
||||||
|
ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍ͹
|
||||||
|
º Seek º 0FH º
|
||||||
|
ÌÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍËÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍËÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍ͹
|
||||||
|
º <20>ਪ § º W º 0 ³ 0 ³ 0 ³ 0 ³ 1 ³ 1 ³ 1 ³ 1 º Š®¬ ¤®¥ á«®¢® º
|
||||||
|
º º ÇÄÄÄÅÄÄÄÅÄÄÄÅÄÄÄÅÄÄÄÅÄÄÄÅÄÄÄÅÄÄĶ º
|
||||||
|
º º º 0 ³ 0 ³ 0 ³ 0 ³ 0 ³HDS³DS0³DS1º º
|
||||||
|
º º ÌÍÍÍÏÍÍÍÏÍÍÍÏÍÍÍÏÍÍÍÏÍÍÍÏÍÍÍÏÍÍ͹ º
|
||||||
|
º º º NCN º º
|
||||||
|
ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÎÍÍÍÎÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÎÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹
|
||||||
|
º ˆá¯®«¥¨¥ º º ‚믮«¥¨¥ ®¯¥à 樨 º ” §ë १ã«ìâ ⠥⠺
|
||||||
|
º º º º ƒ¥¥à¨àã¥â ¯à¥àë¢ ¨¥ º
|
||||||
|
ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍ͹
|
||||||
|
º Invalid º XXH º
|
||||||
|
ÌÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍËÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍ͹
|
||||||
|
º <20>ਪ § º W º <20>¥¤®¯ãáâ¨¬ë© ª®¤ ®¯¥à 樨 º º
|
||||||
|
ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÎÍÍÍÎÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÎÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹
|
||||||
|
º <20>¥§ã«ìâ â º R º ST0 º ST0=80H - ¯à¨§ ª º
|
||||||
|
º º º º ®è¨¡ª¨ º
|
||||||
|
ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
|
||||||
|
|
||||||
74
docs/8272FORM.DOC
Normal file
74
docs/8272FORM.DOC
Normal file
@ -0,0 +1,74 @@
|
|||||||
|
ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
|
||||||
|
º ”®à¬ â åà ¥¨ï ¨ä®à¬ 樨 £¨¡ª®¬ ¤¨áª¥. º
|
||||||
|
º ‘â ¤ àâ IBM System 34 (SD) ¨ IBM System 3740 (DD). º
|
||||||
|
ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
|
||||||
|
|
||||||
|
ÉÍÍÍÍÍ» <-- ˆ¤¥ªá ( ç «® ¤®à®¦ª¨). Hex Hex
|
||||||
|
º º ÉÍÍÍÍËÍÍÍÍ»
|
||||||
|
º º º SD º DD º
|
||||||
|
º º <-- <20>®á⨤¥ªáë© ¯à®¬¥¦ã⮪ ÌÍÍÍÍÎÍÍÍ͹
|
||||||
|
º º „«¨ ¯à®¬¥¦ã⪠(¡ ©â) - º 28 º 50 º
|
||||||
|
º º ‡ ¯¨áë¢ ¥âáï ¡ ©â - º FF º 4E º
|
||||||
|
ÌÍÍÍÍ͹ ÈÍÍÍÍÊÍÍÍͼ
|
||||||
|
º º <-- Š®¤ á¨åந§ 樨 ÉÍÍÍÍËÍÍÍÍ»
|
||||||
|
º º „«¨ ¯®«ï (¡ ©â) - º 6 º 0C º
|
||||||
|
º º ‡ ¯¨áë¢ ¥âáï ¡ ©â - º 00 º 00 º
|
||||||
|
ÌÍÍÍÍ͹ ÌÍÍÍÍÎÍÍÍ͹
|
||||||
|
º º <-- €¤à¥á ï ¬¥âª ¨¤¥ªá º º º
|
||||||
|
º º (4 ¡ ©â ) º FC º C2*º
|
||||||
|
º º ‡ ¯¨áë¢ ¥âáï ¡ ©â - º ⨠º C2*º
|
||||||
|
º º º(D7)º C2*º
|
||||||
|
º º º º FC º
|
||||||
|
ÌÍÍÍÍ͹ ÌÍÍÍÍÎÍÍÍ͹
|
||||||
|
º º <-- <20>஬¥¦ã⮪ (¡ ©â) - º 1A º 32 º
|
||||||
|
º º ‡ ¯¨áë¢ ¥âáï ¡ ©â - º FF º 4E º
|
||||||
|
ÈÍÍÍÍͼ ÈÍÍÍÍÊÍÍÍͼ
|
||||||
|
„ «¥¥ 横«¨ç¥áª®¥ ¯®¢â®à¥¨¥ ¤«ï ª ¦¤®£® ᥪâ®à :
|
||||||
|
ÉÍÍÍÍÍ» ÉÍÍÍÍËÍÍÍÍ»
|
||||||
|
º º <-- Š®¤ á¨åந§ 樨. „«¨ : º 6 º 0C º
|
||||||
|
º º ‡ ¯¨áë¢ ¥âáï ¡ ©â - º 00 º 00 º
|
||||||
|
ÌÍÍÍÍ͹ ÌÍÍÍÍÎÍÍÍ͹
|
||||||
|
º º <-- €¤à¥á ï ¬¥âª ¨¤¥â¨ä¨ª â®à º FE º A1*º
|
||||||
|
º º (4 ¡ ©â ) º ⨠º A1*º
|
||||||
|
º º º(C7)º A1*º
|
||||||
|
º º º º FE º
|
||||||
|
ÌÍÍÍÍ͹ ÈÍÍÍÍÊÍÍÍͼ
|
||||||
|
º C º <-- <20>®¬¥à ¤®à®¦ª¨
|
||||||
|
ÌÍÍÍÍ͹
|
||||||
|
º H º <-- <20>®¬¥à ¯®¢¥àå®áâ¨
|
||||||
|
ÌÍÍÍÍ͹
|
||||||
|
º R º <-- <20>®¬¥à ᥪâ®à
|
||||||
|
ÌÍÍÍÍ͹
|
||||||
|
º N º <-- Š®¤ ¤«¨ë ᥪâ®à :
|
||||||
|
º º 00 - 128, 01 - 256, 02 - 512, 03 - 1024 ¨ â.¤.
|
||||||
|
ÌÍÍÍÍ͹ ÉÍÍÍÍËÍÍÍÍ»
|
||||||
|
º º <-- <20>஬¥¦ã⮪. „«¨ : º FE º 4E º
|
||||||
|
º º ‡ ¯¨áë¢ ¥âáï ¡ ©â - º 0B º 16 º
|
||||||
|
º º º º º
|
||||||
|
º º º º º
|
||||||
|
ÌÍÍÍÍ͹ ÈÍÍÍÍÊÍÍÍͼ
|
||||||
|
º º <-- 2 ¡ ©â CRC - ª®â஫ï
|
||||||
|
ÌÍÍÍÍ͹ ÉÍÍÍÍËÍÍÍÍ»
|
||||||
|
º º <-- Š®¤ á¨åந§ 樨. „«¨ : º 0B º 16 º
|
||||||
|
º º ‡ ¯¨áë¢ ¥âáï ¡ ©â - º FF º 4E º
|
||||||
|
ÌÍÍÍÍ͹ ÌÍÍÍÍÎÍÍÍ͹
|
||||||
|
º º <-- €¤à¥á ï ¬¥âª ¤ ëå º ⨠º A1*º
|
||||||
|
º º º(C7)º A1*º
|
||||||
|
º º º º A1*º
|
||||||
|
º º „«ï ¤ ëå - º FB º FB º
|
||||||
|
º º „«ï 㤠«¥ëå ¤ ëå - º F8 º F8 º
|
||||||
|
ÌÍÍÍÍ͹ ÈÍÍÍÍÊÍÍÍͼ
|
||||||
|
º º <-- <20>®«¥ ¤ ëå: 128, 256, 512 ... ¡ ©â.
|
||||||
|
ÌÍÍÍÍ͹
|
||||||
|
º º <-- 2 ¡ ©â CRC - ª®â஫ï
|
||||||
|
ÌÍÍÍÍ͹
|
||||||
|
º º <-- <20>®áâᥪâ®àë© ¯à®¬¥¦ã⮪. ÉÍÍÍÍËÍÍÍÍ»
|
||||||
|
º º ‡ ¯¨áë¢ ¥âáï ¡ ©â º FF º 4E º
|
||||||
|
º º „«¨ ¯à®¬¥¦ã⪠(¡ ©â): ÌÍÍÍÍÎÍÍÍ͹
|
||||||
|
º º 8 ᥪâ®à®¢ º 3A º 74 º
|
||||||
|
º º 15 ᥪâ®à®¢ º 2A º 54 º
|
||||||
|
º º 26 ᥪâ®à®¢ º 1B º 36 º
|
||||||
|
ÈÍÍÍÍͼ ÈÍÍÍÍÊÍÍÍͼ
|
||||||
|
⨠- â ªâ®¢ë¥ ¨¬¯ã«ìáë
|
||||||
|
A1*, C2* - § ¯¨áì á ¢ë¯ ¤¥¨¥¬ ⠪⮢ëå ¨¬¯ã«ìᮢ
|
||||||
|
|
||||||
109
docs/8272STAT.DOC
Normal file
109
docs/8272STAT.DOC
Normal file
@ -0,0 +1,109 @@
|
|||||||
|
ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
|
||||||
|
º <20>¥£¨áâàë á®áâ®ï¨ï ST0 - ST3 º
|
||||||
|
ÌÍÍÍÍËÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍËÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹
|
||||||
|
º <20>¨âº <20> §¢ ¨¥ º Ž¡®§º ޝ¨á ¨¥ º
|
||||||
|
ÌÍÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹
|
||||||
|
º <20>¥£¨áâà á®áâ®ï¨ï ST0 º
|
||||||
|
ÌÍÍÍÍËÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍËÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹
|
||||||
|
º D7 º Interrupt º IC º <20>¨âë 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 º º
|
||||||
|
ÌÍÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹
|
||||||
|
º <20>¥£¨áâà á®áâ®ï¨ï ST1 º
|
||||||
|
ÌÍÍÍÍËÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍËÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹
|
||||||
|
º D7 º End OF º EN º Š®£¤ ª®â஫«¥à ¯ëâ ¥âáï ¯®«ãç¨âì ¤®áâ㯠ª ᥪâ®àã á ®¬¥à®¬, º
|
||||||
|
º º Cylinder º º ¯à¥¢ëè î騬 ®¬¥à ¯®á«¥¤¥£® ᥪâ®à 樫¨¤à , ä« £ ãáâ ¢«¨¢ ¥âáï. º
|
||||||
|
ÌÍÍÍÍÎÍÍÍÍÍÍÍÍÍÍÍÍÍÎÍÍÍÍÍÍÎÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹
|
||||||
|
º D6 º ----- º º <20>¥ ¨á¯®«ì§ã¥âáï, ¢á¥£¤ = 0 º
|
||||||
|
ÌÍÍÍÍÎÍÍÍÍÍÍÍÍÍÍÍÍÍÎÍÍÍÍÍÍÎÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹
|
||||||
|
º D5 º Data Error º DE º ”« £ ãáâ ¢«¨¢ ¥âáï ¯à¨ ¢ë¥¨¨ ®è¨¡ª¨ CRC ¢ ¯®«ïå º
|
||||||
|
º º º º ¤ ëå ¨«¨ ¨¤¥â¨ä¨ª â®à ᥪâ®à . º
|
||||||
|
ÌÍÍÍÍÎÍÍÍÍÍÍÍÍÍÍÍÍÍÎÍÍÍÍÍÍÎÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹
|
||||||
|
º D4 º Over Run º OR º ”« £ ãáâ ¢«¨¢ ¥âáï, ¥á«¨ ª®â஫«¥à ¥ ®¡á«ã¦¥ á¨á⥬®© º
|
||||||
|
º º º º ¢® ¢à¥¬ï ¯¥à¥¤ ç¨ ¤ ëå (¯®â¥àï ¤ ëå). º
|
||||||
|
ÌÍÍÍÍÎÍÍÍÍÍÍÍÍÍÍÍÍÍÎÍÍÍÍÍÍÎÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹
|
||||||
|
º D3 º ----- º º <20>¥ ¨á¯®«ì§ã¥âáï, ¢á¥£¤ = 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 º ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹
|
||||||
|
º º º º …᫨ ¥ ®¡ à㦥 ¤à¥áë© ¬ àª¥à ¤ ëå ¨«¨ 㤠«¥ëå ¤ ëå, ä« £ º
|
||||||
|
º º º º ãáâ ¢«¨¢ ¥âáï. <20>ਠí⮬ ãáâ ¢«¨¢ ¥âáï ä« £ MD ¢ ॣ¨áâॠST2. º
|
||||||
|
ÈÍÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
|
||||||
|
ÉÍÍÍÍËÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍËÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
|
||||||
|
º <20>¨âº <20> §¢ ¨¥ º Ž¡®§º ޝ¨á ¨¥ º
|
||||||
|
ÌÍÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹
|
||||||
|
º <20>¥£¨áâà á®áâ®ï¨ï ST2 º
|
||||||
|
ÌÍÍÍÍËÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍËÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹
|
||||||
|
º D7 º ------ º º <20>¥ ¨á¯®«ì§ã¥âáï, ¢á¥£¤ = 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º º º
|
||||||
|
ÌÍÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹
|
||||||
|
º <20>¥£¨áâà á®áâ®ï¨ï 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 º º
|
||||||
|
ÈÍÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
|
||||||
2194
docs/I8272.DOC
Normal file
2194
docs/I8272.DOC
Normal file
File diff suppressed because it is too large
Load Diff
BIN
release/LD-ISDOS.EXE
Normal file
BIN
release/LD-ISDOS.EXE
Normal file
Binary file not shown.
BIN
release/LD-TRDOS.EXE
Normal file
BIN
release/LD-TRDOS.EXE
Normal file
Binary file not shown.
Loading…
Reference in New Issue
Block a user