CAREY SCHUG wrote:
I'm going to suggest that the 1620 had the most
HCF instructions of any commercially
produced computer, ever. And the most intentionally used on a daily basis.
<snip>
1. you could press "insert" on the
typewriter and enter a program starting at
location zero which was executed when you hit return. If you wanted to clear memory,
you
typed in 12 digits "310000900010" (transmit record) which meant copy the
character at location 9 to location 10, then 10 to 11, etc until it found the special
character "record mark", which it would never find as you typed in a zero at
the
starting address. watch the address lights till it looped and hit reset.
Note that, as written, your instruction doesn't clear memory, it shifts memory to the
left by one digit every complete cycle through memory, because the destination address is
lower than the source address. What you need to do a "forward smear," where the
source address is lower than the destination address, so that the destination digits
become source digits as the addresses increase, e.g., 310000300002.
That would only work on a 1620 Model 1, however. It wouldn't work on a Model 2. Both
models fetched two digits from memory at a time, but for many instructions (including TR
and TF) the Model 2 would stash the digit at the odd address and use it during the
odd-address fetch cycle, saving a redundant fetch from the same digit pair in memory.
Therefore, the source and destination addresses had to differ by at least 2 -- this will
work on the Model 2: 310000400002.
But nobody bothered with that on the Model 2, because it had a hardware memory clear
mechanism. Simultaneously pressing MODIFY (which wasn't present on the Model 1) and
CHECK RESET on the console would turn on the CLR MEM control gate. Then pressing START
would clear all of memory once and halt.
<snip>
2. remember that record mark? if you ever executed an
instruction with a record mark in
the address, you got a MAR check red light, a hard reset was required to escape.
probably
if in the op code also. And some hard stop for any invalid op code, but these may have
been in the category below.
Shouldn't these be considered good error-trapping features and not in the same league
as HCF? An RM had the 8 and 2 bits set, so it wasn't a valid decimal digit, and
couldn't be used in an address. An RM in the Q field of an immediate instruction was
okay, though.
3. there were other errors, but you could press start
to continue and there was a toggle
switch to ignore at least some of them, like a parity error in memory.
You could press START to continue after a memory parity error or an I/O parity error, but
not after a MAR CHECK.
The PROGRAM/STOP toggle switches (there were four of them, for DISK, MEMORY, I/O, and
arithmetic OVERFLOW) did not cause the errors to be ignored, they just controlled whether
the CPU halted when exceptions occurred. In all cases, internal flags (termed
"indicators") were set, which could be interrogated by the BI and BNI
instructions. The MEMORY switch had no effect on a MAR CHECK -- the CPU always did a hard
stop on those and required a RESET.
<snip>
Paul