[Search for users] [Overall Top Noters] [List of all Conferences] [Download this site]

Conference noted::hackers_v1

Title:-={ H A C K E R S }=-
Notice:Write locked - see NOTED::HACKERS
Moderator:DIEHRD::MORRIS
Created:Thu Feb 20 1986
Last Modified:Mon Aug 03 1992
Last Successful Update:Fri Jun 06 1997
Number of topics:680
Total number of notes:5456

143.0. "GT40 bootstrap code" by REX::MINOW () Tue Jul 30 1985 12:48

A while back in some notesfile (CTNOTES or the somewhat belly-up
HACKERS), someone was asking for the GT40 down-line loader format
It is just the standard PDP-11 absolute loader.  However, it uses
six-bit data (ignoring random carriage-returns).

While cleaning out my office, I came upon a paper copy of the
bootstrap.  The relevant parts follow the form feed.  Note that
I'm just typing them in -- and haven't assembled or tested them.

This was taken from Jack Burness's GT40 bootstrap, "BOOTVT S09"
Copyright 1973, 1974, Digital Equipment Inc.

With hope that this reaches the requestor...

Martin.

;
; GET8 gets an eight-bit byte (absldr calls it to read binary data):
; Uses r2, r4 (permanently).  Returns the 8-bit byte in r0.
;
get8:	jsr	pc,getsix		; Get a six-bitter
	mov	r0,-(sp)		; save
	br	getp84			; and off we go
;
; GET84 is entered when the "which byte" counter overflows
get84:	clr	r2			; reset the counter
getp84:	tst	(r2)+			; next position
	add	get8tb-2(r2),pc		; off we go.
;
; Dispatch table, don't move it.
get8tb:	.word	get81-get8tb
	.word	get82-get8tb
	.word	get83-get8tb
	.word	get84-get8tb
;
get81:	jsr	pc,getsix		; get a character now
	mov	r0,r4			; save for a second
	asl	r0
	asl	r0			; shift to left of byte
	aslb	r0
	rolb	@sp			; pack them in
	aslb	r0
	rolb	@sp			; a good 8 bit thing
	mov	(sp)+,r0		; pop and return now
	rts	pc
;
get82:	asl	r0			; worst case, shift 4
	asl	r0
	aslb	r0
	rolb	r4
	aslb	r0
	rolb	r4
	aslb	r0
	rolb	r4
	mov	r4,r0
	mov	(sp)+,r4
	rts	pc
;
get83:	rol	r0
	rol	r0
	ror	r4
	rorb	r0
	ror	r4
	rorb	r0			; final character assembled
	tst	(sp)+			; fudge stack
	rts	pc
;
; Getsix gets one byte from the DL11E
;
getsix:	jsr	pc,getkb		; Any traffic to host?
	tstb	@#DLICSR		; Any traffic from host?
	bpl	getsix			; Loop until we have work to do
	jsr	r5,getbyt		; Get the byte
	  br	getsix			; Ignore <cr>, etc.
	rts	pc			; And return
;
; Getbyt is called from interrupt and non-interrupt modes to obtain
; one byte and strip off garbage.  Result in r0.  Return:
;	 (r5)	if the byte is not alphanumeric
;	2(r5)	if the byte is alphanumeric.
;
getbyt	mov	@#DLIBUF,r0		; Get the byte from the DL11E
	bic	@#177600,r0		; Remove junk and parity
	cmpb	r0,#137			; Is it too big?
	bhi	1$			; If so, return to (r5)
	cmpb	r0,#40			; Is it too small
	blo	1$			; Return to (r5) if so.
	tst	(r5)+			; Alphanumeric, return to 2(r5)
1$:	rts	r5			; Exit.
	.end

T.RTitleUserPersonal
Name
DateLines
143.1BELKER::LUWISHTue Jul 30 1985 13:387
Thank you for evoking memories of working with Jack.  I have a moving-company
box full of listings of some work he did while a contractor here.  Most of
his comments end with the word "now", and "off we go!" is another of his
stylistic "signatures".  He was also known for profane and obscene commentary:
he was so annoyed that Decus stripped out his juiciest comments from Lunar
Lander that he submitted a useful program that had an executable profane .ASCII
string - if removed the program failed to function!
143.2SNOV10::QUODLINGWed Jul 31 1985 00:015
re .0

Twas I that twas asking, Martin. Thank you kindly.

Peter Q.
143.3REX::MINOWWed Jul 31 1985 12:397
When they submitted the moon lander sources (after censorship), Jack
was reported to have chuckled that they missed the "diagonal ones".

Peter, If you'd like, I could xerox the rest of the absldr -- I can't
seem to find the papertape anywhere, though.

Martin.