RK磁盘 - ikarishinjieva/unixV6-code-analyze-chs GitHub Wiki

Table of Contents

概述

  • 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

RKCS

我们只关心以下标志位,其他标志位请参考参考文献 之 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中任何一位被置为,则此位置位

RKBA

  • 内存地址的低16位

RKWC

  • 存放 要传输字数的补码

RKDA

RK磁盘的I/O操作

  • RK磁盘I/O操作主要指
    • 从磁盘读取数据到内存
    • 从内存写入数据到磁盘
  • 内存地址:由 RKCS 4-5位,拼接RKBA的16位,组成18位内存地址
  • 磁盘地址:由RKDA指向
  • I/O模式:由RKCS 1-3位指示
  • I/O操作完成或错误,由RKCS 6位指示是否引发中断220
⚠️ **GitHub.com Fallback** ⚠️