发信人: shangbings()
整理人: cobe(2001-08-06 13:03:58), 站内信件
|
第三章 磁盘控制卡的认识
3-1 磁碟控制卡的介绍
磁碟控制卡上的 uPD765A 是整个磁碟作业的核心 ,而 uPD765A 靠著3个I/O 埠的暂存器与 CPU 沟通 ,这三个暂存器如下 :
&h3F2 : 数位输出暂存器
&h3F4 : 主状态暂存器
&h3F5 : 资料/状态 暂存器
资料传输到磁片时 ,又可分为 DMA 与 非DMA 模式 ,由於与主题无关略过。
uPD765A 磁碟控制卡可下达以下指令 :
┌━━━━━━━━━━━━━━━━━━━━━━━━━━┐
┃ Read Data (读取资料) ┃
┃ Write Data (写入资料) ┃
┃ Read ID (读取 ID) ┃
┃ Format A Track (将磁轨格式化) ┃
┃ Read Deleted Dtat (读取已删除的资料) ┃
┃ Write Delete Data (写入已删除的资料) ┃
┃ Read A Track (读取磁轨) ┃
┃ Seek (找寻磁轨) ┃
┃ Scan EQUAL (扫瞄比对相等) ┃
┃ Scan high or equal (扫瞄大於或等於) ┃
┃ Scan low or equal (扫瞄小於或等於) ┃
┃ Recalibrate (校准磁头 ,磁头回到第零轨) ┃
┃ Sense Interrupt status (感测中断状态) ┃
┃ Sense Driver Status (感测磁碟机状态) ┃
┃ Specify (指定) ┃
└━━━━━━━━━━━━━━━━━━━━━━━━━━┘
3-2 工作方式
┌━━━━━┐
┃ CPU ┃
└━━━━━┘
↑
↓
系统汇流排 (SYSTEM BUS)
↑ ↑
↓ ↓ 资料窗 ┌━━━┐
┌━━━━━┐ DRQ ┌━━━━━┐←━━━━━┤ RLL ├┬━ ┬━━┐
┃ ┃←━ ┃ ┃ RD DATA └━━━┘┃ ┃ 磁 ┃
┃ ┃ ┃ ┃←━━━━━━━━━━┘ ┃ 碟 ┃
┃ 8237 ┃DACK ┃ uPD765A ┃━━━━━━━━━━━━→ ┃ 机 ┃
┃ ┃━→ ┃ ┃ WR DATA ┃ 介 ┃
┃DMA 控制器┃ ┃ FDC ┃ 输入控制 ┃ 面 ┃
┃ ┃ ┃ ┃ → ┃ ⊙ ┃
┃ ┃━→ ┃ ┃ → ┴━━┘
└━━━━━┘ TC └━━━━━┘ 输出控制
终结计数
3-3 中断简介
由于汇编高手甚多 ,因此各中断向量便不再介绍 ,只介绍几个与磁盘有关的功能 ,其它中断请自行查书。
INT 13h
(AH)=0 : 重置软驱 ,将磁头拉到 TRACK 0
(AH)=1 : 读入磁盘状态
(AH)=2 : 将指定扇区读入记忆体
(AH)=3 : 将记忆体数据写入扇区
(AH)=4 : 查验扇区
(AH)=5 : 格式化指定扇区
返回代码 (AH or AL 值,以二进位来看)
00000001 传给软驱 I/O 指令不正确
00000010 找不到位址标记
00000011 磁盘贴有写保护
00000100 找不到指定扇区
00001000 DMA 越界
00001001 超过DMA边界(有64K)处存取数据
00010000 CRC 错误
00100000 软驱控制卡损坏
01000000 Seek 动作错误
10000000 时间超过而软驱仍未动作
INT 1Eh
INT 1E 指向的位址就是磁盘参数表 ,一般指向 0000:522-52C
0000:0522 DF 步进速率
0000:0523 02 表 DMA 传输数据
0000:0524 25 马达起动时等待 25ms
0000:0525 02 N值为2 (512Bytes)
0000:0526 09 可容许最大扇区编
0000:0527 2A 间隙(Gap)长度
0000:0528 FF 扇区数据长
0000:0529 50 格式化时的间隙长度
0000:052A F6 填入空白扇区的位元值
0000:052B 0F 移动每一道后等待25ms再读写数据
0000:052C 02 马达起动时间
|
|