Io 第四次写信给a";“第四盘”;

Io 第四次写信给a";“第四盘”;,io,read-eval-print-loop,forth,gforth,Io,Read Eval Print Loop,Forth,Gforth,在forth中有一个名为USE的单词,它将创建一个文件 使用xxx(-) 将OS文本文件xxx指定为“第四个磁盘” 但是,不清楚如何在交互式会话中写入这些内容。有诸如FLUSH和UPDATE之类的动词,但它们都不起任何作用。我用的是格沃斯。我在课程中创造单词,并使用它们。我不明白FORTH磁盘在这种情况下是如何工作的。听起来像是R's,只是我没有什么可以保存的。您能否提供一系列命令,这些命令会导致在USE的参数中写入某些内容 FORTH最初是围绕着一个底层系统的思想设计的,该系统有一个原始

在forth中有一个名为
USE
的单词,它将创建一个文件

  • 使用xxx(-)
    将OS文本文件xxx指定为“第四个磁盘”


但是,不清楚如何在交互式会话中写入这些内容。有诸如
FLUSH
UPDATE
之类的动词,但它们都不起任何作用。我用的是格沃斯。我在课程中创造单词,并使用它们。我不明白FORTH磁盘在这种情况下是如何工作的。听起来像是R's,只是我没有什么可以保存的。您能否提供一系列命令,这些命令会导致在
USE
的参数中写入某些内容

FORTH最初是围绕着一个底层系统的思想设计的,该系统有一个原始的持久存储系统(“磁盘”),没有文件系统,因此没有文件或文件夹之类的概念。相反,您可以按块号在磁盘上读写固定大小的块

现代的FORTH系统(如gforth)支持文件系统,但仍然支持通过块号访问的低级原始“磁盘”。由于gforth通常运行在具有文件系统且无低级磁盘访问(无超级用户权限)的操作系统上,要使用低级磁盘块字,您需要提供一个文件作为原始磁盘块的底层存储,而
use
字就是这样做的


如果您想了解如何使用FORTH中的低级块I/O字,您需要阅读一本关于它的FORTH书籍,但基本上,您可以使用
block
将块读入缓冲区,
UPDATE
将缓冲区标记为已修改,以及
FLUSH
将已修改的缓冲区刷新到磁盘。从ANSI forth规范中,您可以发现:

7.6.1.0800块(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更新(-)
将当前块缓冲区标记为已修改。如果没有,则存在不明确的条件 当前块缓冲区。
更新不会立即导致I/O。
请参阅:7.6.1.0800块、7.6.1.0820缓冲区、7.6.1.1559刷新、7.6.1.2180保存缓冲区


FORTH最初是围绕着一个低级系统的概念设计的,该系统具有原始的持久存储系统(“磁盘”),没有文件系统——因此没有文件或文件夹之类的概念。相反,您可以按块号在磁盘上读写固定大小的块

现代的FORTH系统(如gforth)支持文件系统,但仍然支持通过块号访问的低级原始“磁盘”。由于gforth通常运行在具有文件系统且无低级磁盘访问(无超级用户权限)的操作系统上,要使用低级磁盘块字,您需要提供一个文件作为原始磁盘块的底层存储,而
use
字就是这样做的


如果您想了解如何使用FORTH中的低级块I/O字,您需要阅读一本关于它的FORTH书籍,但基本上,您可以使用
block
将块读入缓冲区,
UPDATE
将缓冲区标记为已修改,以及
FLUSH
将已修改的缓冲区刷新到磁盘。从ANSI forth规范中,您可以发现:

7.6.1.0800块(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更新(-)
将当前块缓冲区标记为已修改。如果没有,则存在不明确的条件 当前块缓冲区。
更新不会立即导致I/O。
请参阅:7.6.1.0800块、7.6.1.0820缓冲区、7.6.1.1559刷新、7.6.1.2180保存缓冲区


您可以编写自己的单词来操作块。但这是您第一次可以使用
gforth
()中的简单块编辑器。我将按以下方式使用它。首先,您需要加载它:

use blocked.fb
-此文件是使用文件
blocked.fb
作为第四个磁盘

1加载
-加载词汇表

编辑器
-这是将词汇表更改为新创建的

现在,您可以使用词汇表
编辑器中定义的单词修改文件。例如:

use tmp
0 l
0 t : one-plus-two   1 2 + .  ;
flush
一些词语的简要解释(来自blocked.f):

a
-转到标记位置