您想要谈论的任何文件系统或操作系统对我来说都很好。真好!
在ZX Spectrum上,初始化LOAD
命令将使系统陷入紧密的循环,读取Audio In行。
数据的开始用恒定的音调表示,之后是长脉冲/短脉冲序列,其中短脉冲用于二进制,0
而较长脉冲用于二进制1
(https://en.wikipedia.org/ wiki / ZX_Spectrum_software)。紧负载循环收集位,直到填充一个字节(8位),然后将其存储到内存中,增加内存指针,然后循环返回以扫描更多位。
通常,加载程序首先要读取的是简短的固定格式的标头,它至少指示期望的字节数,并可能包含其他信息,例如文件名,文件类型和加载地址。读取此简短标题后,程序可以决定是继续加载大部分数据,还是退出加载例程并为用户显示适当的消息。
文件结束状态可以通过接收所需的任意数量的字节(固定数量的字节,在软件中进行硬连线,或可变数量(如标头中指示))来识别。如果加载环路在一定时间内未收到预期频率范围内的脉冲,则会引发错误。
关于这个答案的一点背景
所描述的过程从普通的音频磁带中加载数据-因此需要扫描“音频输入”(它与标准插头连接到录音机)。从LOAD
技术上说,命令与open
文件相同-但实际上与实际加载文件有关。这是因为录音机不受计算机控制,并且您不能(成功)打开文件但不能加载它。
之所以提到“紧密循环”,是因为(1)CPU,Z80-A(如果有内存),速度非常慢:3.5 MHz,并且(2)Spectrum没有内部时钟!这意味着它必须准确地记录每个状态的T状态(指令时间)。单。指令。在该循环内,只是为了保持准确的蜂鸣时间。
幸运的是,较低的CPU速度具有明显的优势,您可以计算一张纸上的周期数,从而可以计算出实际的时间。
C
Linux。因为Linux和Windows的功能不同。否则,范围太广。同样,任何高级语言最终都将为系统调用C API或编译为C以执行,因此保留为“ C”级别会将其置于最小公分母。