/***********************************************************************
  wP̂ecb ilaWWVV`j
***********************************************************************/

@h^nAhX

@OeeWg@IN     Xe[^XEWX^
@@@@@@  OUT    R}hEWX^
@OeeXg@IN/OUT gbNEWX^

@Oee`g@IN/OUT ZN^EWX^

@Oeeag@IN/OUT f[^EWX^

@Oeebg@IN     elw
@            OUT    ײޤޤӰON/OFF ڼ޽
@Oeecg@IN     lelw

@Oeedg@IN     PDUl^Cvw

@Oeeeg@IN     TOO^Pl؂ւiӖj

  -------------------------------------------------

  Oeebg ... ײޤޤӰON/OFF ڼ޽

  D7 D6 D5 D4 D3 D2 D1 D0
   | xx xx |  xx xx  |  |
   |       |         +--+-- hCuԍ
   |       +--------------- TChO^P
   +----------------------- [^[ 0=OFF 1=ON

/***********************************************************************
  ecb̃R}h
***********************************************************************/

-- TYPE-1 -- D7 D6 D5 D4 D3 D2 D1 D0
ؽı         O O O O  u r0 r1@wbhgbNOֈړ
          O O O P  u r0 r1@wbhړĨgbNֈړ
ï        O O P   u r0 r1@wbhPXebvړ
ïߥ     O P O   u r0 r1@wbhPgbNֈړ
ïߥ    O P P   u r0 r1@wbhPgbNOֈړ
-- TYPE-2 -- D7 D6 D5 D4 D3 D2 D1 D0
ذޥް    P O O  r d b O@f[^EtB[hǂ
ײĥް     P O P  r d b a0@f[^EtB[h֏
-- TYPE-3 -- D7 D6 D5 D4 D3 D2 D1 D0
ذޥڽ   P P O O O d O O@hctB[hǂ
ذޥׯ    P P P O O d O O@PgbN̑Sf[^ǂ
ײĥׯ     P P P P O d O O@PgbN̑Sf[^
-- TYPE-4 -- D7 D6 D5 D4 D3 D2 D1 D0
̫ P P O P I3 I2 I1 I0@荞(IRQ)𔭐
                                      iwPł͖Ӗj

-- TYPE-1 --
@|||gbNEWX^XVtO
@@@@@OXVȂ
@@@@@PXV
@|||wbhE[hEtO
@@@@@OR}hJnɃwbh
@@@@@PR}hJnɃwbh[h
@u|||gbNQƃtO
@@@@@wbhړAfBXÑgbNԍƃgbNEWX^
@@@@@QƂsw
@@@@@OQƂsȂ
@@@@@PQƂs
@r0,r1 DXebvE[gEtO
@@@@@XebvEpXo͂̏o͊Ԋuw肷
@@@@@OO@Rms  OP@Ums
@@@@@POPOms  PPPTms
-- TYPE-2 --
@|||}`ER[hEtO
@@@@@OPZN^
@@@@@PAZN^
@r|||TChEtOibtOP̂Ǝ̂ݗLj
@@@@@OTChԍ̂kraÔƂvƂ݂Ȃ
@@@@@PTChԍ̂kraP̂ƂvƂ݂Ȃ
@d|||fBEtO
@@@@@OgkcgƂAɂgksTvO
@@@@@PgkcgƂA15ms҂gksTvO
@b|||rtO
@@@@@OTChԍ̔rsȂ
@@@@@PTChԍ̔rs
@a0|||AhXE}[N
@@@@@Of[^EAhXE}[NFBh(Data Mark)
@@@@@Pf[^EAhXE}[NF8h(Deleted Data Mark)
-- TYPE-3 --
@d|||fBEtO
@@@@@OgkcgƂAɂgksTvO
@@@@@PgkcgƂA15ms҂gksTvO
-- TYPE-4 --
@I0=1 -- qd`cx̗͂オłhqp(IRQ=H)
@I1=1 -- qd`cx̗͂łhqp
@I1=1 -- eCfbNXEpX(IP)łhqp
@I1=1 -- łɂhqp

/***********************************************************************
  ecb̃Xe[^X
***********************************************************************/

+--------+-----+-------+-------+-----+-----+-----+-----+----+
| TYPE-1 |D7   |D6     |D5     |D4   |D3   |D2   |D1   |D0  |
+--------+-----+-------+-------+-----+-----+-----+-----+----+
|  S  |NOT  |WRITE  |HEAD   |SEEK |CRC  |TRACK|INDEX|BUSY|
|    |READY|PROTECT|ENGAGED|ERROR|ERROR|00   |     |    |
+--------+-----+-------+-------+-----+-----+-----+-----+----+

+--------+-----+-------+-------+---------+-----+----+-------+----+
| TYPE-2 |D7   |D6     |D5     |D4       |D3   |D2  |D1     |D0  |
+--------+-----+-------+-------+---------+-----+----+-------+----+
|ذ    |NOT  | 0     |RECORD |RECORD   |CRC  |LOST|DATA   |BUSY|
| ް   |READY|       |TYPE   |NOT FOUND|ERROR|DATA|REQUEST|    |
+--------+-----+-------+-------+---------+-----+----+-------+----+
|ײ     |NOT  |WRITE  |WRITE  |RECORD   |CRC  |LOST|DATA   |BUSY|
| ް   |READY|PROTECT|FAULT  |NOT FOUND|ERROR|DATA|REQUEST|    |
+--------+-----+-------+-------+---------+-----+----+-------+----+

+--------+-----+-------+-------+---------+-----+----+-------+----+
| TYPE-3 |D7   |D6     |D5     |D4       |D3   |D2  |D1     |D0  |
+--------+-----+-------+-------+---------+-----+----+-------+----+
|ذ    |NOT  | 0     | 0     |RECORD   |CRC  |LOST|DATA   |BUSY|
| ڽ  |READY|       |       |NOT FOUND|ERROR|DATA|REQUEST|    |
+--------+-----+-------+-------+---------+-----+----+-------+----+
|-    |NOT  | 0     | 0     | 0       | 0   |LOST|DATA   |BUSY|
| ׯ   |READY|       |       |         |     |DATA|REQUEST|    |
+--------+-----+-------+-------+---------+-----+----+-------+----+
|ײ     |NOT  |WRITE  |WRITE  | 0       | 0   |LOST|DATA   |BUSY|
| ׯ   |READY|PROTECT|FAULT  |         |     |DATA|REQUEST|    |
+--------+-----+-------+-------+---------+-----+----+-------+----+

+---------+-----+-------+-------+---+---+-----+-----+---+
| TYPE-4  |D7   |D6     |D5     |D4 |D3 |D2   |D1   |D0 |
+---------+-----+-------+-------+---+---+-----+-----+---+
|s |NOT  |WRITE  |HEAD   | 0 | 0 |TRACK|INDEX| 0 |
|ޖ|READY|PROTECT|ENGAGED|   |   |00   |     |   |
+---------+-----+-------+-------+---+---+-----+-----+---+
|̺|s̃R}h̃Xe[^XƓl̈Ӗ | 0 |
|s   |                                         |   |
+---------+-----+-------+-------+---+---+-----+-----+---+

--- TYPE-1̃Xe[^X ---

BUSY ---------- PŃR}h쒆ł邱Ƃ
INDEX --------- PŃCfbNXEz[oƂ
TRACK 00 ------ PŃwbhgbNȌɂ邱Ƃ
CRC ERROR ----- PID̨ނǂ݂ɃG[Ƃ
SEEK ERROR ---- PID̨ނׯԍׯڼ޽̕sv
HEAD ENGAGED  - PŃwbhfBAɉtĂ邱Ƃ
WRITE PROTECT - PŃfBXNւ݂̏֎~Ă邱Ƃ
NOT READY ----- PŃhCu\ԂłȂƂ

--- TYPE-2̃Xe[^X ---

DATA REQUEST -- PŃf[^̓ǂݏvĂ
LOST DATA ----- PŏvԓɃf[^̓ǂݏsȂ
CRC ERROR ----- Pœǂ݂G[Ƃ
RECORD NOT FOUND -- PŎw̃ZN^ȂƂ
-- [h쎞 --
RECORD TYPE --- ްڽϰF8h(Deleted Data Mark)ȂZbg
@@@@@      FBh(Data Mark)Ȃ烊Zbg
-- Cg쎞 --
WRITE FAULT --- Pŏݓ삪ł؂ꂽƂ

/***********************************************************************
  R}h̔s
***********************************************************************/

@||@V[N@||
@ړĨgbNԍgbNEWX^(I/O:0FF9H)ɏo͂A
@R}hEWX^(I/O:0FF8H)ɃR}hƂ0000xxxxB(00H)
@o͂܂
@wbhgbNԍRֈړꍇA
@@outp(0xff9,0x03); // ׯ=3
@@outp(0xff8,0x00); // 
@Ƃ܂BR}h̉ʂSrbg
@wbhE[hEtOAgbNQƃtO
@ȂĂ܂̂ŁBKvɉăZbg^Zbg܂

@||@Xebv@||
@ÕV[N삪A֌Ă̂ȂցA
@O֌Ă̂ȂOփV[N܂

@||@[hEf[^@||
@܂AgbNEWX^ƃZN^EWX^ZbgA
@[hER}h𔭍s܂
@@outp(0xff9,0x03); // ׯ=3
@@outp(0xffa,0x01); // =1
@@outp(0xff8,0x00); // ذޥް
@ɁAXe[^XEWX^́uD2:DATA REQUESTv
@Zbg܂ő҂܂
@@while((inp(0xff8)&0x02)==0);
@Zbgꂽf[^EWX^PoCgǂݍ݂܂
@@data=inp(0xffb);

