Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP
Posting-Version: version B 2.10.2 9/18/84; site ucla-cs.ARPA
Path: utzoo!watmath!clyde!burl!ulysses!mhuxr!mhuxn!ihnp4!qantel!hplabs!sdcrdcf!ucla-cs!scw
From: scw@ucla-cs.UUCP
Newsgroups: net.bizarre
Subject: Re: Bizarre Code
Message-ID: <6814@ucla-cs.ARPA>
Date: Tue, 10-Sep-85 15:53:15 EDT
Article-I.D.: ucla-cs.6814
Posted: Tue Sep 10 15:53:15 1985
Date-Received: Sun, 15-Sep-85 12:10:22 EDT
References: <462@moncol.UUCP> <29712@lanl.ARPA> <1582@peora.UUCP>
Reply-To: scw@ucla-cs.UUCP (Stephen C. Woods)
Organization: UCLA Computer Science Department
Lines: 48
Summary: 

In article <1582@peora.UUCP> jer@peora.UUCP (J. Eric Roskos) writes:
>> The most bizarre code I ever had to program follows (in FORTRAN)
>>
>> 100 IF (IREQ.EQ.0) GO TO 100
>
>That's not so bizarre... reminds me of some code in the DEC OS/8 boot loader
>(I think it was for the RK8/E):
>
>	jmp     .
>
>The way it worked was that the jmp was at the starting address for the code
>being loaded; the program would initiate the I/O operation, then sit there
>looping.  When the I/O completed, some new code would appear there, and
>it would start off running again...
>-- 
Actually it was sort of neat.:

    Boot program		real boot
address	code	meaning		code	meaning
20	6733	read block (0)  6734	skip on I/o done
21	5021	jump .		5020	jump .-1
				6732    get status
				...

What you did was toggle in the 2 instruction bootstrap then start 20.
The I/O actually started at 0 when 21 was read in the hard jmp . turned into
a wait for I/O loop. When the I/O finally did compleat the program just skiped
the jmp .-1 and ran along (really very nifty).

Stranger still was the bootstrap for the PDP-12 , Linc-8 and Linc. There were
2 sets of 12 switches on the front panel (left and right) to boot the machine
you put a Read Linc Tape block in the left switches and a block number and count
in the right switches, there was another switch on the front panel marked
DO, when you pressed the DO switch the instruction in the switches was
executed (as I recall to boot os/8 you read block 0 (0701 0000) and to
boot Dial you read 7 blocks from the middle of the tape (0700 7300)).

Dial was as bizzare an operating system as you'd never want to see, you
used the A-D knobs to control the cursor (you were ALWAYS either in the
editor or running an application program). They did however have some
interesting instructions on the machine (display 1/2 a character [put
the 12 bits in the ACC on the screen as either the right or left half
of character]).

Another oddity that just came to mind. The LINC (DEC's first product)
didn't have any serial output devices, what they did was to use 2 of the
relays (6 of them altogether as I recall) to toggle a current loop line
to drive a TTY-33 for a printer.