On 10/27/2010 4:20 PM, Fred Cisin wrote:
My memories from ~1968 are not very clear, and
definitions of
memory-mapped I/O may vary, . . .
Didn't the 1401 sort-of have it? Not fully automatic memory-mapped I/O
such as the TRS80 and PC video RAM, more like the CP/M and PC's PSP DTAs.
I seem to recall there being a command to read a card into a fixed buffer
in memory, and another to write a card from anbother fixed buffer. I
remember "cheating" and using those buffer spaces when I ran short of
space writing short programs on the 1401 emulator on the 1620.
If my dim memories are correct that is correct for the 1402 card reader
and punch connected to a 1401. I'm pretty sure the 1403 printer also
had a separate fixed address output buffer as well. I think mag tape
could be read to or written from anywhere. I think "read a card",
"punch a card" and "print a line" were pretty much single character
instructions, though I think there were additional modifier characters
in some cases for things like pocket selection, etc. I could go dig out
my programmer's reference card if anyone really cares, which I seriously
doubt. :-)
The earliest example of memory mapped I/O in a general purpose sense for
me was the Motorola 6800, but Wiki says that was introduced in 1974 and
I suppose that is too late for what we were discussing. ISTR in our
hardware design the ACIA's etc. were just decoded at some memory address
range in the 6800's memory address space, and one used an ordinary
"store register contents at memory address" instruction to write to the
peripheral registers for example.
Strange, . . .
I remember more about that than I do about PDQ FORTRAN on the 1620, nor
about "141 SPS"? on the 1401.
Ah yes, good old Symbolic Programming
System, I think. I don't recall
seeing specifically the terminology "141 SPS", but it has been quite a
while! SPS was just an assembler as I recall. I don't believe there
was a linker. I think every program just had an absolute start address
(usually above the printer buffer, though not required if you wished to
"cheat") and SPS punched an executable deck that could then be loaded
and executed. If your program never punched or printed, you could start
your code just above the card reader buffer which I think was at 0-79.
Later,
Charlie C.
--
Grumpy Ol' Fred cisin at
xenosoft.com