RK磁盘 - ikarishinjieva/unixV6-code-analyze-chs GitHub Wiki
- RK磁盘为 pdp11/40 使用的磁盘存储器
- 在此我们只讨论与unix源代码有关的RK磁盘寄存器,对于工作原理不作讨论
- 每扇区 = 256字
- 每道 = 12扇区
- 每面 = 200
- 每盒 = 2面
寄存器名 | 英文名 | 英文缩写 | 寄存器地址 |
---|---|---|---|
磁盘状态寄存器 | Drive Status Register | RKDS | 177400 |
磁盘错误寄存器 | Error Register | RKER | 177402 |
磁盘控制状态寄存器 | Control Status Register | RKCS | 177404 |
字计数寄存器 | Word Count Register | RKWC | 177406 |
总线地址寄存器 | Current Bus Address Register | RKBA | 177410 |
磁盘地址寄存器 | Disk Address Register | RKDA | 177412 |
维护寄存器 (?) | Maintenance Register | RKMR | 177414 |
数据缓冲寄存器 | Data Buffer Register | RKDB | 177416 |
- 参看 参考文献 之 PDP-11 Peripherals Handbook 1972
- 在此,我们只关注 RKCS RKWC RKDA RKBA
- 我们只关心以下标志位,其他标志位请参考参考文献 之 PDP-11 Peripherals Handbook 1973(参考文献 之 PDP-11 Peripherals Handbook 1972在此处叙述有纰漏)
- 0位 设备启动位,置位则启动设备
- 1-3位 模式位,指定此次启动设备的模式,常用模式如下,其他模式参考参考文献 之 PDP-11 Peripherals Handbook 1973
- 写模式 001
- 读模式 010
- 4-5位 内存地址扩展位,RKBA为低16位,此两位为高2位,拼成18位内存地址
- 6位 中断允许位,若置位,则设备I/O错误或I/O完成时,向地址220发出中断
- 7位 当磁盘控制器准备接受命令时,置此位
- 15位 若RKER中任何一位被置为,则此位置位
- 内存地址的低16位
- 存放 要传输字数的补码
- 0-3位 扇区位置(0~11)
- 4位 面号(0~1)
- 5-12位 柱号(0~202)(Lions源代码分析与此不符,这里参考参考文献 之 PDP-11 Peripherals Handbook 1973)
- 13-15位 驱动器号(0~7)
- RK磁盘I/O操作主要指
- 从磁盘读取数据到内存
- 从内存写入数据到磁盘
- 内存地址:由 RKCS 4-5位,拼接RKBA的16位,组成18位内存地址
- 磁盘地址:由RKDA指向
- I/O模式:由RKCS 1-3位指示
- I/O操作完成或错误,由RKCS 6位指示是否引发中断220