Google
 

Trailing-Edge - PDP-10 Archives - decuslib10-01 - 43,50035/munich.opr
There are no other files named munich.opr in the archive.
	HOW TO USE THE MUNICH REAL-TIME DATA ACQUISITION SYSTEM


I	DESIGN PHILOSOPHY

	THE MUNICH REAL-TIME DATA ACQUISITION SYSTEM CONSISTS
OF A NUMBER OF PDP-8'S ATTACHED DIRECTLY TO THE PDP-10.  THE
PDP-8'S CONTROL THE DATA ACQUISITION HARDWARE AND MAINTAIN THE
REAL-TIME DISPLAY.  THE PDP-8'S DO ALL OF THE DATA COLLECTION AND DATA
DISPLAYING AND THE PDP-10 HANDLES ALL DATA REDUCTION AND DISPLAY
FORMATTING.

	A USER AT A PDP-8 TERMINAL CAN USE THE PDP-8 CONSOLE TELETYPE
TO INITIATE JOBS ON THE PDP-10.  THE PDP-10 JOBS CAN THEN READ OR
WRITE PDP-8 CORE JUST AS IF THE PDP-8 WERE A STANDARD PDP-10 DEVICE.
THE PDP-8 USER CAN ALSO LOAD PROGRAMS INTO THE PDP-8 (FROM EITHER
THE PDP-8 OR THE PDP-10) WHICH COMMUNICATE WITH THE PDP-10 PROGRAM
THROUGH A SOFTWARE INTERRUPT NETWORK.  TYPICALLY A USER AT A PDP-8
TERMINAL WILL LOAD TANDEM PROGRAMS INTO BOTH THE PDP-10 AND THE PDP-8,
THE PDP-8 DOING DATA COLLECTION AND THE PDP-10 DOING DATA REDUCTION.
THESE PROGRAMS WILL COMMUNICATE WITH EACH OTHER THROUGH THE 
SOFTWARE INTERRUPT SYSTEM TO SEND AND RECEIVE DATA WHENEVER BUFFERS
FILL UP OR WHEN THE DISPLAY NEEDS REFRESHING.


II	PDP-8 TELETYPE MONITOR SERVICE ROUTINE (TMSR)

	TMSR IS THE PDP-8 MONITOR PROGRAM WHICH HANDLES ALL TELETYPE
INTERRUPTS AND CONTROLS ALL COMMUNICATIONS WITH THE PDP-10.  TMSR
IS 4 PAGES LONG USING LOCATIONS 200-1177.  IT ALSO USES LOCATIONS
0-5 AND 170-177 ON PAGE 0.  THE REMAINING CORE IS AVAILABLE FOR USER
PROGRAMS.  TMSR CAN SATISFY ANY PROGRAMMING REQUIREMENT PROVIDED
THAT THE FOLLOWING CONVENTIONS ARE FOLLOWED.


III	PDP-8 USER MONITOR SOFTWARE INTERFACE

   A)	INITIALIZATION OF TMSR

	WHENEVER THE PDP-8 SYSTEM IS STARTED, TMSR MUST BE INITIALIZED.
THIS IS ACCOMPLISHED BY JUMPING TO ABSOLUTE LOCATION 200.  TMSR
WILL RETURN TO THE USER PROGRAM BY THE FOLLOWING INSTRUCTION:
	JMP I START	/START=170
THUS BEFORE INITIALIZING TMSR THE USER PROGRAM MUST SET UP "START"
(LOCATION 170) WITH THE PROPER RETURN ADDRESS.

   B)	EXTERNAL HARDWARE INTERRUPTS OTHER THAN TTY OR DA-25

	TMSR HANDLES ALL TELETYPE INTERRUPTS AND ALL HARDWARE
INTERRUPTS FROM THE PDP-10 OVER THE DA-25.  IF THE PDP-8 RECEIVES
ANY OTHER INTERRUPTS THEN TMSR WILL PASS CONTROL TO THE USER'S
PROGRAM BY DOING A "JMP I CHAIN" (CHAIN=171).  "CHAIN" (LOC 171)
MUST HAVE BEEN PREVIOUSLY LOADED WITH THE ADDRESS OF THE USER'S
INTERRUPT SERVICE ROUTINE.  IT SHOULD BE NOTED THAT THE USER'S
INTERRUPT SERVICE ROUTINE MUST HANDLE ALL INTERRUPTS OTHER THAN THE
TELETYPE AND THE DA-25.  FAILURE TO DO THIS WILL HANG THE PDP-8
SYSTEM.
	TO DISMISS FROM THE USER'S INTERRUPT SERVICE ROUTINE THE
USER PROGRAM MUST ISSUE A "JMP I DISMIS" (DISMIS=176).  THIS
WILL RESTORE THE ORIGINAL LINK AND AC AND RETURN TO THE INTERRUPTED
USER PROGRAM.  THE INTERRUPT SERVICE ROUTINE MUST NEVER
TURN THE INTERRUPT SYSTEM ON (ION), AND THE USER PROGRAM MUST NEVER
EXECUTE A "JMP I DISMIS" UNLESS IT IS DISMISSING FROM
A HARDWARE INTERRUPT.  AGAIN IF THE USER FAILS TO SERVICE ALL HARDWARE
INTERRUPTS PROPERLY, CLEARING ALL FLAGS, THE PDP-8 SYSTEM WILL HANG.


   C)	SOFTWARE TRAPS FROM TMSR TO THE USER PROGRAM

	THERE ARE THREE SEPARATE SOFTWARE INTERRUPT CHANNELS
BETWEEN TMSR AND THE USER PROGRAM:  ONE FOR TELETYPE INPUT TO THE
PDP-8 USER PROGRAM, ONE FOR TELETYPE OUTPUT FROM THE PDP-8 USER
PROGRAM, AND ONE FOR SOFTWARE INTERRUPTS FROM THE PDP-10 USER
PROGRAM.  COMMUNICATION BETWEEN TMSR AND THE PDP-8 USER PROGRAM
IS ACCOMPLISHED THROUGH THREE LOCATIONS ON PAGE 0:
IRQFL (LOC 172), KEYFL (LOC 173), DONFL (LOC 174).

	1) TELETYPE INPUT TO THE PDP-8 USER PROGRAM.

    CHARACTERS TYPED ON THE PDP-8 CONSOLE TELETYPE ARE DIRECTED BY
TMSR TO EITHER THE PDP-10 OR THE PDP-8 USER PROGRAM
DEPENDING ON THE POSITION OF AC SWITCH 0.  IF SWITCH 0 IS OFF
THEN ALL CHARACTERS TYPED ON THE KEYBOARD GO TO THE PDP-10.  IF 
SWITCH 0 IS ON, THEN ALL CHARACTERS GO TO THE PDP-8 PROGRAM.
IF TMSR DETERMINES THAT A CHARACTER IS TO GO TO THE PDP-8 USER
PROGRAM, IT FIRST EXAMINES KEYFL (LOC 173).  IF THE USER HAS LOADED
THIS LOCATION WITH AN ADDRESS, THEN TMSR WILL STORE THE CHARACTER IN
CHREC (LOC 175)  AND EXECUTE A JMS I KEYFL (JMS I 173).  IF THE USER
PROGRAM HAS NOT LOADED KEYFL (LOC 173) WITH AN ADDRESS, THEN TMSR
TREATS KEYFL AS A FLAG, SETTING IT TO 1 WHENEVER A CHARACTER IS TYPED.
IN THIS MODE THE USER PROGRAM OCCASIONALLY EXAMINES KEYFL AND IF IT IS
SET, THEN IT CLEARS THE FLAG AND PICKS UP THE CHARACTER OUT OF
CHREC (LOC 175).

	2) TELETYPE OUTPUT FROM THE PDP-8 USER PROGRAM.

    CHARACTERS CAN BE TYPED OUT ON THE PDP-8 TELETYPE FROM THE
PDP-8 USER PROGRAM BY LOADING THE AC WITH THE DESIRED CHARACTER
AND THEN DOING A JMS I TSYNC (JMS I 177).  THE USER PROGRAM IS
NOTIFIED THAT THE TYPING OF THE CHARACTER HAS FINISHED THROUGH
DONFL (LOC 174).  THIS FLAG WORKS LIKE KEYFL.  IF THE USER LOADS AN
ADDRESS INTO DONFL, THEN TMSR WILL EXECUTE A JMS I DONFL WHEN THE
USER'S CHARACTER IS FINISHED TYPING.  IF DONFL IS NOT LOADED
WITH A TRAP ADDRESS, THEN TMSR WILL SET THIS FLAG TO 1 WHENEVER
THE PRINTER HAS FINISHED.

	3) INTERRUPTS FROM THE PDP-10 PROGRAM.

   THE PDP-10 PROGRAM CAN INTERRUPT THE PDP-8 PROGRAM GIVING IT A
SINGLE 12 BIT WORD.  WHEN THE PDP-10 INTERRUPTS PDP-8, THIS 12 BIT
WORD IS ANDED INTO LOCATION 5 AND TMSR TRAPS TO THE ADDRESS IN
IRQFL (LOC 172).  IF THERE IS NO ADDRESS IN IRQFL, THEN TMSR TREATS
IRQFL AS A FLAG LOCATION SETTING IT TO 1.


   D) DISMISSING FROM A SOFTWARE TRAP

   SINCE ALL SOFTWARE TRAPPING IS DONE WITH THE INTERRUPT SYSTEM
ENABLED (ION), TMSR CLEARS THE TRAP FLAG (IRQFL, KEYCL, OR DONFL)
BEFORE TRAPPING.  THIS ENSURES THAT A SECOND TRAP COULD NOT OCCUR
DURING THE SERVICING OF THE FIRST ONE AND DESTROY THE RETURN
ADDRESS.  THE PROPER WAY TO EXIT FROM A SOFTWARE TRAP IS AS FOLLOWS:

	IOF		/TURN OFF INTERRUPT SYSTEM
	TAD TRAPFL	/PICK UP PROPER TRAP FLAG (IRQFL,KEYFL,DONFL)
	SZA		/HAS THERE BEEN ANOTHER INTERRUPT?
	JMP BACK 	/YES, PROCESS THIS NEXT ONE (DON'T FORGET
			/TO TURN INTERRUPT SYSTEM BACK ON)
	TAD (TRPRTN)	/PICK UP ADDRESS OF TRAP ROUTINE
	DCA TRAPFL	/STORE IT IN TRAP FLAG
	TAD ACSAV	/RESTORE AC WHICH WAS SAVED AT START
	ION		/TURN INTERRUPT SYSTEM ON AGAIN
	JMP I TRPRTN	/RETURN TO INTERRUPTED ROUTINE

IT SHOULD ALSO BE NOTED THAT IT IS UP TO THE USER TRAP ROUTINE
TO SAVE AND RESTORE THE AC AND THE LINK DURING A SOFTWARE TRAP.


   E) INTERRUPTING THE PDP-10 PROGRAM FROM THE PDP-8

   THE PDP-8 USER CAN CAUSE A SOFTWARE TRAP IN THE PDP-10 USER
PROGRAM AND SEND ACROSS A 12 BIT WORD TO THE PDP-10.  THE PROPER INSTRUCTION 
SEQUENCE IS AS FOLLOWS:


	TAD INTWRD		/PICK UP INTERRUPT WORD FOR PDP-10
				/PROGRAM
	IOF			/NECESSARY IF EXECUTED WITH INTERRUPT
				/SYSTEM ON
	DCA 4			/LOC 4 C}NTAINS 12 BIT INTERRUPT 
				/WORD
	JMS I 3			/GO INTERRUPT PDP-10
	CLA			/NOTE AC IS NOT ALWAYS CLEARED BY TMSR

NOTE: TMSR WILL DETERMINE IF THE INTERRUPT SYSTEM IS SUPPOSED
TO BE ON OR OFF AND WILL EXIT IN THE PROPER MODE.

IV	PDP-10 USER INTERFACE TO THE PDP-8

   THE CORE OF EACH PDP-8 CAN BE READ OR WRITTEN UNDER PDP-10
PROGRAM CONTROL.  THE DEVICE MNEMONIC FOR THE PDP-8'S IS ECM (EIGHT
CONNECTED TO MEMORY).  SINCE THERE CAN BE MORE THAN ONE PDP-8 ON 
THE SYSTEM, THE PDP-8'S BECOME ECM0, ECM1,ECM2,ETC. THE DEVICE
NUMBER CORRESPONDS TO THE HARDWARE SWITCH SETTING ON THE DA-25/A
(THE PDP-8 MEMORY INTERFACE).  THE PDP-10 MONITOR CAN BE BUILT TO
RECOGNIZE UP TO 16 PDP-8'S (ECM0-ECM17) BY ANSWERING THE APPRO-
PRIATE QUESTION IN MONGEN.
THE CONSOLE TELETYPE OF EACH PDP-8 FUNCTIONS AS AN ADDITIONAL TIME-
SHARING TERMINAL ON THE PDP-10.  THE TTY NUMBERS OF THE PDP-8'S CORE
BETWEEN THE HIGHEST LINE ON THE DC-10 AND THE CTY.  (FOR 7 DC-10
LINES THE PDP-8'S WOULD BE TTY10, TTY11, ETC.)  A PDP-10 PROGRAM
CAN DO OUTPUT TO THESE TELETYPES USING THE STANDARD INPUT AND OUTPUT
UUO'S OR BY THE TTCALL UUO.

   A)  INITIALIZING THE PDP-8 AS A RANDOM ACCESS I/O DEVICE

    THERE ARE TWO MODES FOR READING AND/OR WRITING THE PDP-8 CORE
MEMORY: PACKED (MODE 16) AND UNPACKED (MODE 17).  THESE ARE BOTH DUMP
MODES - THERE IS NO BUFFERED MODE I/O.  THE UNPACKED MODE MAPS ONE
PDP-8 WORD INTO A SINGLE PDP-10 WORD RIGHT ADJUSTED. THE PACKED MODE
MAPS 3 PDP-8 WORDS INTO A SINGLE PDP-10 WORD: THE FIRST PDP-8 WORD GOING TO OR
COMING FROM THE LEFT-MOST 12 BITS (0-11), THE SECOND WORD FROM THE
MIDDLE 12 BITS (12-23), AND THE THIRD WORD FROM
THE RIGHT-MOST 12 BITS (24-35).  THE INITIALIZATION SEQUENCE IS STANDARD.

	INIT D, MODE		; D = CHANNEL # AND MODE = 16
				  OR 17 (PACKED = 16 AND
				  UNPACKED = 17)

	SIXBIT /ECM0/

	0

	ERROR RETURN

	NORMAL RETURN

   B)  SPECIFYING A STARTING ADDRESS IN PDP-8 CORE MEMORY

THE STARTING ADDRESS FOR A READ SEQUENCE IS SPECIFIED BY A LOOKUP UUO,
AND THE STARTING ADDRESS FOR A WRITE SEQUENCE IS SPECIFIED BY AN 
ENTER UUO.

	LOOKUP D, INADR		;LOCATION INADR CONTAINS THE FIRST
				;FIRST WORD TO BE READ
	ERROR RETURN


	ENTER D, OUTADR		;LOCATION OUTADR CONTAINS THE PDP-8
				;ADDRESS OF THE FIRST WORD TO BE OVER
	ERROR RETURN		;WRITTEN

   C)  READING AND WRITING PDP-8 CORE

	THE READING AND WRITING OF PDP-8 CORE IS DONE WITH THE STANDARD
DUMP MODE UUO'S AND DUMP MODE I/O COMMAND LISTS.

	THE FIRST TIME THAT DATA IS READ IT IS TAKEN FROM THE PDP-8
STARTING AT THE ADDRESS GIVEN IN THE LOOKUP UUO.  THE NEXT
INPUT UUO'S WILL TAKE DATA FROM THE PDP-8 CORE STARTING AT THE 
LOCATION FOLLOWING THE LAST BLOCK OF DATA READ.  THUS, TO READ THE
SAME AREA OF PDP-8 CORE CONTINUOUSLY, A LOOKUP AND AN INPUT MUST
BE DONE FOR EACH READ.  THE SAME METHOD OF SEQUENTIAL DATA TRANSFER IS
USED FOR THE ENTER AND OUTPUT UUO'S.


   D)  SENDING SOFTWARE INTERRUPTS TO THE PDP-8 USER PROGRAMS

	THE PDP-10 USER PROGRAM CAN INTERRUPT THE PDP-8 USER
PROGRAM, SENDING IT A 12 BIT DATA WORD WITH THE FOLLOWING INSTRUCTIONS:

	USETO D, ADR		;D=PDP-10 TO SOFTWARE 
				;CHANNEL NUMBER
				;ADR IS THE ADDRESS OF THE DATA WORD

THIS INSTRUCTION CAUSES AN "IRQFL" SOFTWARE TRAP AS DESCRIBED IN THE
PDP-8 SECTION.

   E)  SETTING UP FOR AND DISMISSING FROM PDP-8 USER INTERRUPTS

	TO RECEIVE PDP-8 USER INTERRUPTS THE PDP-10 USER PROGRAM
MUST TELL THE MONITOR WHERE TO TRAP ON SUCH AN INTERRUPT.  THIS IS DONE
WITH THE FOLLOWING UUO:

	USETI D, ADR		;D =PDP-10 SOFTWARE CHANNEL NUMBER
				;ADR IS WHERE TO STORE PDP-8 INTERRUPT
				;BITS
				;ADR+1 IS WHERE PROGRAM CONTROL IS
				;TRANSFERRED.

THE PDP-8 PROGRAM CAN SEND A NUMBER BETWEEN 0 AND 36 TO THE PDP-10.  THIS
NUMBER IS TRANSFORMED INTO A BIT POSITION IN THE INTERRUPT WORD.  THE
MONITOR SETS THIS BIT AND STORES THE INTERRUPT WORD IN THE PDP-10 TRAP
LOCATION AND TRANSFERS CONTROL TO THE TRAP LOCATION PLUS ONE.  IF OTHER
INTERRUPTS ARE RECEIVED WHILE SERVICING THE FIRST ONE, THESE WILL BE
STORED IN THE MONITOR UNTIL THE PDP-10 USER DISMISSES THE CURRENT
INTERRUPT.  WHEN THE USER HAS DISMISSED THE INTERRUPT, THE MONITOR WILL
INTERRUPT THE USER AGAIN, SEDNING THE PROGRAM THE LATEST PDP-8 INTERRUPT
BITS.

	TO DISMISS THE SOFTWARE INTERRUPT, THE USER MUST ISSUE THE
FOLLOWING UUO:

	UGETF D,		;D=THE PDP-10 SOFTWARE CHANNEL NUMBER

THIS WILL RETURN CONTROL TO THE INTERRUPTED USER PROGRAM.
PDP-10 PROGRAMMING EXAMPLE:

	INIT 1,17		;UNPACKED MODE
	SIXBIT/ECM0/		;PDP-8 0
	0		
	JRST ERROR		;ERROR RETURN
	USETI 1,INT		;SET UP USER INTERRUPT LOCATION

INT:	0			;LOCATION WHERE INTERRUPT BITS 
				;ARE STORED
	LOOKUP 1,PDP8AD		;PDP-8 AREA TO BE READ
	JRST ERROR		;ERROR RETURN
	
	INPUT 1,CL		;READ IN DATA
	USETO 1, INTWRD		;TELL PDP-8 THAT BUFFER HAS BEEN READ
	UGETF 1,		;DISMISS INTERRUPT





PDP-8 PROGRAMMING EXAMPLE:

	START=170
	CHAIN=171
	IRQFL=172
	KEYFL=173
	DONFL=174
	CHREC=175
	DISMIS=176
	TSYNC=177

*1200

INIT,	TAD (BEGIN)
	DCA START	/SET UP START LOC
	TAD (INT)
	DCA CHAIN	/SET UP INTERRUPT CHAIN
	TAD (USRINT)
	DCA IRQFL	/SET UP FOR PDP-10 INTERRUPTS
	TAD (TTYINT)
	DCA KEYFL	/SET UP TTY INPUT
	JMP I (200)	/GO INITIALIZE TMSR   RETURNS TO BEGIN

BEGIN,	JMP BEGIN	/BACKGROUND JOB DOES NOTHING

INT,	JMS SERVIC	/GO SERVICE HARDWARE INTERRUPT
	TAD IBITS	/NEXT 3 INSTRUCTIONS GENERATE PDP-10 INTERRUPT
	DCA 4		/LOC 4 CONTAINS BITS TO SEND TO PDP-10
	JMS I 3		/GO INTERRUPT THE PDP-10
	JMP I DISMIS	/DISMIS THE INTERRUPT

TTYINT,	0		/RETURN ADDRESS IS STORED HERE
	DCA ACSAV	/SAVE THE AC
	TAD CHREC	/GET THE CHARACTER
	DCA I 10	/STORE IN CHARACTER BUFFER
	IOF		/PREPARE TO DISMIS TTY INTERRUPT
	TAD KEYFL	/GET KEYBOARD FLAG
	SZA CLA		/IS THERE ANOTHER CHARACTER READY?
	JMP TTYINT+2	/YES, GO GET IT
	TAD (TTYINT)
	DCA KEYFL	/RESTORE KEYFL TRAP ADDRESS
	TAD ACSAV	/RESTORE AC
	ION
	JMP I TTYINT	/RETURN TO INTERRUPTED PROGRAM

USRINT,	0		/RETURN ADDRESS STORED HERE
	DCA ACSAV1	/SAVE AC
USRIN1,	IOF		/PREPARE TO PICK UP INTERRUPT BITS OUT OF 5
	TAD 5		/TURN OFF INTERRUPT SYSTEM SO NO BITS ARE LOST
	DCA BITS
	DCA 5		/CLEAR LOC 5
	ION
	TAD I 11	/PICK UP A CHARACTER TO TYPE
	JMS I TSYNC	/GO TYPE IT OUT
	CLA
WAIT,	TAD DONFL	/GET DONE FLAG FOR PRINTER
	SNA CLA		/HAS CHARACTER FINISHED
	JMP WAIT	/NO, WAIT FOR IT TO FINISH
	IOF		/YES, PREPARE TO DISMIS TRAP
	TAD IRQFL	/CHECK FOR OTHER INTERRUPTS
	SZA CLA
	JMP USRIN1	/ANOTHER INTERRUPT HAS COME IN
	TAD (USRINT)	/GET INTERRUPT ADDRESS
	DCA IRQFL	/SET UP TRAP ADDRESS
	TAD ACSAV1	/RESTORE AC
	ION		/TURN INTERRUPT SYSTEM BACK ON
	JMP I USRINT	/DISMISS