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