FORTH 最初是围绕具有原始持久存储系统(“磁盘”)和无文件系统的低级系统的概念设计的——因此没有文件或文件夹或类似的概念。相反,您可以按块号在磁盘上读取和写入固定大小的块。
现代 FORTH 系统(如 gforth)支持文件系统,但也支持按块号访问的低级原始“磁盘”。由于 gforth 通常在具有文件系统且没有低级磁盘访问权限(没有超级用户权限)的操作系统上运行,因此要使用低级磁盘块字,您需要提供一个文件用作原始磁盘块的底层存储——这就是这个USE
词的作用。
如果你想了解如何使用FORTH 中的低级块 I/O 字,你需要阅读有关它的第四本书,但基本上,你使用BLOCK
将块读入缓冲区,UPDATE
将缓冲区标记为已修改,并将FLUSH
修改后的缓冲区刷新到磁盘。从 ANSI 第四规范中,您会发现:
7.6.1.0800 BLOCK (u -- a-addr)
a-addr 是分配给大容量存储块 u 的块缓冲区的第一个字符的地址。
如果 u 不是可用的块号,则存在模棱两可的情况。
如果块 u 已经在块缓冲区中,则 a-addr 是该块缓冲区的地址。
如果块 u 尚未在内存中并且存在未分配的块缓冲区,则将块 u 从大容量存储器转移到未分配的块缓冲区。a-addr 是该块缓冲区的地址。
如果块 u 尚未在内存中并且没有未分配的块缓冲区,则取消分配块缓冲区。
如果该缓冲区中的块已被更新,则将该块传输到大容量存储器并将块 u 从大容量存储器传输到该缓冲区。a-addr 是该块缓冲区的地址。
在操作结束时,a-addr 指向的块缓冲区是当前块缓冲区,并分配给 u。
7.6.1.2400 UPDATE (--)
将当前块缓冲区标记为已修改。如果没有当前块缓冲区,则存在模棱两可的情况。
UPDATE 不会立即导致 I/O。
请参阅:7.6.1.0800 块、7.6.1.0820 缓冲区、7.6.1.1559 刷新、7.6.1.2180 保存缓冲区。