From a08458350f35c884644b17e61da5427f0dbadf03 Mon Sep 17 00:00:00 2001 From: Thomas Walker Lynch Date: Sat, 18 Jul 2026 11:08:35 +0000 Subject: [PATCH] . --- document/book/TM-2026.html | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/document/book/TM-2026.html b/document/book/TM-2026.html index a8a06d1..ece380b 100644 --- a/document/book/TM-2026.html +++ b/document/book/TM-2026.html @@ -519,11 +519,11 @@

The unspecified symbol

-

In the first edition of this book, I introduced a "read only after write" rule while working towards an architectural Turing Machine because conventional computer architectures do not maintain a concept of empty memory. The approach described in this section moves the "read only after write" rule back into a computation theoretic machine by designing in the concept of being unspecified, which then displaces the concept of a cell being empty.

+

In the first edition of this book, I introduced a "read only after write" rule while working towards an architectural Turing Machine because conventional computer architectures do not maintain a concept of empty memory. The approach described in this section integrates the "read only after write" into a computation theoretic machine by designing in the concept of being unspecified, which then displaces the concept of a cell being empty.

-

The standard 9-track tape introduced by IBM in 1964 came from the factory unformatted. The format operation would write a header and an EOF marker to mark the end of the device file. Then, a standard library call such as open(), followed by write(), would write over the EOF marker, continue writing data, and finally append a new EOF marker, essentially pushing the EOF boundary back. EOF could be pushed back until the physical EOM marker was struck. This matches, in some ways, how the empty symbol is used on the computation theoretic Turing Machine in the Hopcroft and Ullman book if we consider it to be an EOF marker. However, a difference exists in that real machines do not use an EOF to erase data characters.

+

The standard 9-track tape introduced by IBM in 1964 came from the factory unformatted. The format operation would write a header and an EOF marker to mark the end of the device file. Then, a standard library call such as open(), followed by write(), would write over the EOF marker, continue writing data, and finally append a new EOF marker, effectively pushing the EOF boundary back. EOF could be pushed back until the physical EOT marker was struck. This matches, in some ways, how the empty symbol is used on the computation theoretic Turing Machine in the Hopcroft and Ullman book, if we consider it to be an EOF marker. However, a difference exists in that real machines do not use an EOF to erase data characters.

-

While using the standard library to write tapes, the uninitialized part of the tape could not be read until after it was written, so early tape machines indeed enforced the "read only after a write" rule. However, if the programmer were to seek the head back into the device file to do fresh work and perform reads and writes, the device EOF would be nowhere in sight. The burden of the "read only after a write" rule would then fall on the shoulders of the programmer, as would the task of structuring the data.

+

While using the standard library to write tapes, the uninitialized part of the tape could not be read until after it was written, so early tape machines indeed enforced the "read only after write" rule. However, if the programmer were to seek the head back into the device file to do fresh work and perform reads and writes, the device EOF would be nowhere in sight. The burden of the "read only after write" rule would then fall on the shoulders of the programmer, as would the task of structuring the data.

Core memory, and later system memory, was random access and initially fully accessible. The data would be whatever scrambled mess the machine booted with, or in early virtual memory systems, whatever was left over from the prior use of the page. The approach of recycling pages was a security hazard, so today a page is initially allocated from a read-only zero page, and due to a copy-on-write trap, a new page will be created in memory then the original page copied to it, thus scrubbing it with zeros. If the computational Turing Machine's empty symbol maps to a word of zeros, then the empty symbol remains a poor model, because generally the data message, say sent between the input writer and the recognizer receiver, will also contain many zeros. The advantage is that if a programmer attempts to dereference a zero pointer, a segmentation fault occurs. So in this system, the programmer is again burdened with maintaining the "read only after write" rule.

@@ -570,7 +570,7 @@

To execute the programmed TTCA Turing Machine, a person must maintain the current machine variables MV and evaluate the programmed logic in an infinitely repeating two-phase cycle. Because this is a Moore-style architecture, the execution of an action is isolated from the evaluation of the next state transition.

Initialization

-

Before the first cycle begins, the tape is populated with data. The read/write head is positioned over the initial tape cell. The machine variables are initialized as follows:

+

Before the first cycle begins, a tape selected and mounted. The read/write head is positioned over the leftmost tape cell. The machine variables are initialized as follows: