Subject: The good old days.

From: [email-masked] (Robert Ankeney)
Date: Wed, 18 Nov 1992 23:54:07 GMT

Gosh, this group reminds me of the good old days.  I used to work
at the Oregon Museum of Science and Industry (OMSI), the folks who
brought you OMSI-FOCAL and other oddities.  The machine they had there
was a Straight/8 with a serial number of (if I recall correctly) 138,
which replaced the original one they had that had a 2-digit number.
     One thing I was just remembering was a wonderful puzzle from way
back when.  It was a challenge to write a program that zeroed memory.
It had to be written in the first 4K and would zero the entire 4K,
including itself.  So, if you're feeling bored, you might see if you
can do it!  Sadly, I don't remember any solution, but if I recall,
the auto-increment registers at 10-17 might have been useful.

     Robert Ankeney

---

From: [email-masked] (gordon hlavenka)
Date: Thu, 19 Nov 1992 10:26:34 GMT

>the auto-increment registers at 10-17 might have been useful.

A puzzle?  We ran this little ditty on almost a daily basis.
0000 ADDR LD
DCA I 0010
JMP 0000
0000 ADDR LD CLEAR CONT

2 instructions.  Actually, we'd run it with the data field set to 1,
then 2, and finally zero.  The program autoincrements itself right
through the field, finally (in DF0) overwriting the DCA with a zero.
(AND 0000)  Then the loop was a lot tighter -- you could see the
difference in the panel lights.  You do have to make sure that
location 10 has a 10 in it when you start, though...

Why did this get run so often?  Because the teachers didn't know how
to reload BASIC, so if the machine went down they'd have to corral a
convenient student, write him a pass out of his next class, and "make"
him reload it.  If you didn't have a panel key, this program would
bring EDUSYSTEM-20 to its knees:
10 DEF FNA(X)=FNB(X)
20 DEF FNB(X)=FNA(X)
30 PRI FNA(1)
RUN
<CRUNCH>

Another interesting pdp8 trick:  Since we had (4) ASR-33s as our only
IO, we wrote a "fourple loader" which would read a clunk from each TTY
in turn.  (The first character was on tape 1, the second on tape 2,
etc.)  This ended up being almost 4 times as fast as loading
through 1 TTY, since most of the time was spent just waiting for the
reader to come ready again.  Each TTY used a tape with a different
leader character, and the loader would figure out which tape was in
which TTY.  Nowadays I think they call this "reverse multiplexing."

-- 
----------------------------------------------------
Gordon S. Hlavenka           [email-masked]
Vote straight ticket Procrastination party Dec. 3rd!

---

From: [email-masked] (Jonathan E. Quist)
Date: Thu, 19 Nov 1992 15:32:47 GMT

>which TTY.  Nowadays I think they call this "reverse multiplexing."

I love it!  Paper tape striping!

Jeez - if you could add enough serial ports, you could attempt paper
tape virtual memory.....    nah.
-- 
Jonathan E. Quist                              INTERACTIVE Systems Corporation
[email-masked]  '71 CL450-K4 "Gleep", DoD #094        Naperville, IL
        There are many things a person should experience in a lifetime.
       Among them are an infant's first cry, and an infant's first laugh.

---

From: [email-masked] (Charles Lasner)
Date: Fri, 20 Nov 1992 04:26:52 GMT

>location 10 has a 10 in it when you start, though...

When the DF is 10-70, it doesn't much matter what's in 00010, since you just
let it run more than enough times to clobber everything many times over.

With the DF 00, when the DCA I 10 is destroyed, the JMP isn't destroyed.
However, since the switches are zero from the last load address function, the
switches are thus conveniently set to 0000.  Hitting deposit will put a 0000
into the latest location, which since the running program is now:

	*0000

	AND	0
	JMP	0

means that the PC is either 00000 or 00001, so worst case you can either
deposit a 0000 over 00000 and 00001 if you hit deposit twice, or a 0000 over
00001 and 00002 if you hit deposit twice.  This can be done without looking at
the lights if you're in a hurry.  An alternative is to do ADDR LOAD then
DEP DEP but that might take most people a few extra milliseconds.

Here's one for the fans of the (nearly) cleared-out memory PDP-8:

Assume that all of field 0 is all 0000 as the above might accomplish.  ADDR
LOAD 0000, change the switches to 1777, press DEP, CONT.  Describe what the
AC lights are doing, and why.

(On a difficulty scale of 1-10, this problem is rated 2.)

cjl

---

From: [email-masked] (gordon hlavenka)
Date: Sun, 22 Nov 1992 05:05:16 GMT

>AC lights are doing, and why.

That's a weird one!  I just tried it, and now I'll have to sit down
and cipher what is going on in there...

>(On a difficulty scale of 1-10, this problem is rated 2.)

This means you have more?

---

From: [email-masked] (Charles Lasner)
Date: Sun, 22 Nov 1992 19:45:47 GMT

>This means you have more?

Not too many more for just a CPU per se.

Here's one that came up in another newsgroup:

Assume that there is a test location CHAR containing an arbitrary ASCII
character.  (If symbolic gets in the way, then assume it's location 0020,
i.e., CHAR=0020.)

Starting at 0200, write the shortest piece of code that can prove that the 
contents of CHAR are in fact within the range of printable octal digits, i.e,
are in the range 0060-0071.  Assume the worst, i.e., the contents could be
junk.  The idea is to do something which contains:

	*200

START,	CLA CLL			/CLEAN UP
	{whatever you need}
	TAD	CHAR		/GET THE POTENTIAL CHARACTER WE ARE TESTING
	{test it somehow}
	JMP	BAD		/JUMP THERE IF NOT AN OCTAL DIGIT
/	COMES HERE IF THE CHARACTER WAS GOOD.
	HLT			/THIS IS PAST THE CHALLENGE

BAD,	HLT			/COMES HERE WHEN CHAR AIN'T AN OCTAL DIGIT

Literally any 12-bit value might be in CHAR, but we want to weed out the
"good" values as defined.  The idea is to write the MINIMUM amount of code
to check for the good vs. the bad (and the ugly).  You supply the stuff that
belongs in place of the stuff inside of {} in both places.

Note: the AC is allowed to be "dirty" when you get to BAD.

When the CHAR is acceptable, it falls through for more processing, etc, so I
have merely placed a HLT there.  Similarly, the "bad" values, having been
isolated can be further processed at BAD, so I have merely placed a HLT there
as well.  (Hint: the AC=0000 through 0007 depending on whether the original
CHAR value was "0" through "7".)

On an scale of 1-10, this problem has a difficulty rating of 6.

cjl