Google
 

Trailing-Edge - PDP-10 Archives - dec-10-omona-u-mc9 - l680.pal
There are 8 other files named l680.pal in the archive. Click here to see a list.
/L680 *680 LOADER*  VERSION-0

/ADDRESSES:	7777 START ADDRESS
/		7755 (1 BELOW RIM) 680 LINE# (NOT TTY#) FOR PDP-10 LOAD
/SWITCHES:	BIT0=1: LOAD FROM ASR-33
/		    =0: LOAD FROM DA-10 (PDP-10)
/
/HALTS ON TRAILER WITH CHECKSUM IN AC (SHOULD BE 0)
/CONTINUE WILL READ AND IGNORE REST OF TAPE
/
/EXAMPLE OF PDP-10 LOAD:
/ASSUME:	680 LINE # 0 = TTY20
/		DESIRED FILE IS ON THE DISK NAMED 'X680.BIN'
/AT 680:	'STOP'
/		SWITCHES _ 7777
/		'LOAD ADDRESS'
/		SWITCHES _ 3777
/		'START'
/AT PDP-10 TTY:	.ASSIGN TTY20
/		-
/		TTY20 ASSIGNED
/		--------------
/		.R PIP
/		-
/		*TTY20:/I_D:X680.BIN
/		-
/AT 680:	SHOULD HALT WITH AC = 0
/			(AC NOT 0 INDICATES CHECKSUM ERROR--
/			AFTER READING TRAILER (BELOW), REPEAT THE LOAD.)
/		'CONTINUE'  TO EMPTY THE PDP-10 BUFFER (OF TRAILER ETC.)
/		'STOP'      AFTER A FEW SECONDS OR WHEN PIP RETURNS A *
/
/AT PDP-10 TTY:	*^C
/		---
/		.DEASSIGN TTY20
/		-
/
/
/TO CHANGE TTY# USED, DEPOSIT CORRESPONDING LINE# IN 7775 BEFOR 'START'
/E.G. IN EXAMPLE ABOVE TTY23 MAY BE USED IF 7755 _ 3.
/
/
/NOTE---DIFERENCES BETWEEN L680 AND STANDARD BINARY LOADER:
/	1. DOESNT HANDLE RUBOUT OR FIELD-CHANGE
/	2. 'CONTINUE' AFTER 'HALT' DOESNT LOAD ANOTHER TAPE.
DAISKP=6371	/DA-10 IOT'S
DARED2=6362
DARED3=6372
DAOSKP=6361
DAOCLR=6351
DALOD2=6364
DALOD3=6374

*7626			/L680 LOWEST ADDRESS


INIT,	OSR CLA		/SELECT DEVICE ACCORDING TO SWITCHES
	SPA CLA
	TAD	KJMP2
	TAD	KJMP1
	DCA	CHAR0

START,	KCC
	DCA	CKSUM	/INIT CKSUM
	DCA	TEMCS
	JMS	WORD	/EAT LEADER
	JMP	.-1

LOOP1,	SNL		/ADDRESS OR DATA?
	JMP	LOOP2	/DATA
	DCA	LOC	/ADDRESS
	JMS	WORD	/GET NEXT WORD
	JMP	STOP	/TRAILER--STOP (ERROR SINCE LAST WD NOT CKSUM)
	JMP	LOOP1

LOOP2,	DCA	TEM1	/SAVE THIS WORD & LOOK AHEAD FOR CKSUM
	JMS	WORD	/IS NEXT WORD TRAILER?
	JMP	STOP	/YES--LAST WORD WAS CHECKSUM--DONT STORE IT
	DCA	TEM2	/NO---STORE LAST WORD
	TAD	TEM1
	DCA I	LOC
	ISZ	LOC	/     BUMP LOC.CTR.
KNOP,	NOP
	TAD	TEM2	/     AND PROCESS THIS WORD
	JMP	LOOP1

STOP,	CLA		/HERE ON TRAILER
	TAD	TEM1	/GET CHECKSUM WORD
	CIA
	TAD	CKSUM	/DISPLAY DIFFERENCE IN LIGHTS
	HLT
STOP2,	CLA	/EAT ANYTHING THAT REMAINS
	JMS	CHAR
	JMP	STOP2
/SUBROUTINE TO BUILD WORD FROM 2 CHARACTERS
/NON-SKIP RETURN IF TRAILER/LEADER (CHANNEL 8 PUNCHED)

/SKIP RETURN OTHERWISE WITH AC=ASSEMBLED WORD,
/	LINK=1 IF NEW ADDRESS (CHANNEL 7 OF 1ST CHAR.)
WORD,	0
	JMS	CHAR	/GET 1ST CHAR
	DCA	TEMW
	TAD	K200	/8TH CHAN. PUNCHED?
	AND	TEMW
	SZA CLA
	JMP I	WORD	/YES--NON-SKIP RETURN
	JMS	CHAR	/NO---GET 2ND CHAR
	DCA	TEMC
	TAD	CKSUM	/ACCUMULATE CHECKSUM
	TAD	TEMCS
	DCA	CKSUM
	TAD	TEMC	/AND PARTIAL SUM
	TAD	TEMW
	DCA	TEMCS
	TAD	TEMW	/ASSEMBLE WORD
	CLL RTL		/LEAVING 7TH CHAN. OF 1ST CHAR IN LINK
	RTL
	RTL
	TAD	TEMC
	ISZ	WORD	/SKIP RETURN
	JMP I	WORD
/SUBROUTINE TO GET NEXT CHAR

CHAR,	0
CHAR0,	NOP		/***MODIFIED FOR DEVICE SELECTION

CHAR1,	DAOCLR		/PDP-10 (DA-10)
	TAD	TTY	/SEND XMIT FLEAG TO PDP-10
	DALOD2
	CLA
	DALOD3
	DAOSKP		/WAIT FOR PDP-10 TO TAKE IT
	JMP	.-1
	DAISKP		/WAIT FOR PDP-10 TO SEND NEXT CHAR
	JMP	.-1
	DARED2		/RIGHT LINE NUM?
	CIA
	TAD	TTY
	SZA
	STA		/NO---FORCE 'JMP CHAR0' BELOW TO IGNORE THIS
	DARED3		/YES--GET CHAR
	SPA		/IS IT MODEM CONTROL?
KJMP1,	JMP	CHAR1	/YES--IGNORE IT THEN
	JMP I	CHAR	/NO---RETURN

CHAR2,	KSF		/ASR-33 PAPER TAPE
	JMP	.-1
	KRB
	JMP I CHAR

CKSUM,	0
LOC,	0
K200,	200
KJMP2,	CHAR2-CHAR1

TEMCS,	0
TEM1,	0
TEM2=WORD
TEMC=CHAR
TEMW,	0

*7755
TTY,	0		/LINE NUMBER

*7756			/RIM LOADER

*7777
	JMP	INIT
	$