TITLE SYSCON - UUO HANDLER SUBTTL 8-9-65 EXTERNAL CLOSE1,ILLINS,IN,JOBAC,JOBADR,JOBDAT EXTERNAL MTAPE1,OUT,RELEA1,UINBF,UINIT,UOUTBF EXTERNAL USRJDA,USRSAV,USTATO,USTATS,USTATZ EXTERNAL ERROR,UUOERR,CLDS,CLEN EXTERNAL IOIERR,MJOBPD,JOBPDL,WAIT1,USRREL,PUUOAC EXTERNAL JOBPDL,MJOBPD,USETST , DEC 06 00 EX UUO L PT PRE 06 UUO HANDLER , 3/10/65 , ALL UUOS DROP THEMSELVE IN REAL LOCATION 40, AND TRAP , TO 41. THE UUO HANDLER SHUFFLES THE UUO OFF TO THE USERS , 40,41, IF IT IS NOT A SYSTEM UUO. , SYSTEM UUOS FALL INTO THREE CLASSES, HANDLED DIFFERENTLY , (1) SYSTEM FUNCTIONS: LOAD ACS PDP, PROG, AND DISPATCH TO THE , FUNCTION. , (2) DEVICE INDEPENDENT I/O UUO: ALSO LOAD ACS DEVDAT AND IOS , AND GO THE THE SYSTEM FUNCTION. , (3) DEVICE DEPENDENT I/O UUOS: DO (1) AND (2), THEN DISPATCH , THROUGH THE TABLE WHOSE ADDRESS IS IN THE RIGHT HALF OF DEVSER(DEVD , CONTROL MAY ALWAYS BE RETURNED BY EXECUTING A , JRST UXIT , WHICH WILL RESTORE THE ACS, ARP BITS, AND RETURN. , THE UUO HANDLER IS PURE IF THE FOLLOWING RESTRICTIONS ARE OBSERVED. , RESTRICTIONS: UUOS CANNOT BE CALLED BY INTERRUPT SERVICE ROUTINES. , MONITOR INTERFACE , STORAGE: 89 , ROUTINES CALLED: ILLINS, ADRCK, EXCLK, UUOH, SETIOS,UUOUSR , UUOS CALLED: CALL, INIT, RELEAS, CLOSE, OUTBUF, INBUF , STATS, STATO, STATZ, OUTPUT, INPUT , DEVICE DEPENDENT: DEN, DLK, DSO, DSI, DGF , SYMBOLS SET/USED: , ACCUMULATORS: POP S/U TAC S/U , PROG S/U TAC1 S/U , SUB S , SYSTEM PARAMETERS: UIO U , USYS U , USYSN U , JOB AREA: JOBAC U JOBDAT U , JOBPDP U , SYSTEM ADDRESSES: CLK S/U , JOBADR U , USRLEV S/U , DEVICE DATA BLOCK: DEVSER U , INTERNAL ADDRESSES: 40 S/U , UUO0 S/U , UUSAV S/U INTERNAL UUO0 UUO0: 0 EXCH TAC,40 ;SAVE TAC; PICK UP UUO MOVEM 17,USRSAV ;SAVE 17 TLNE TAC,77000 ;0 UUO IS ILLEGAL TLNE TAC,740000 ;UUO FOR SYSTEM? JRST UUOSYS ;YES MOVE 17,JOBADR ;GET JOB AREA ADDRESS MOVEM TAC,40(17) ;STORE UUO IN USERS 40 HRRZ TAC,41(17) ;PICK UP ADR OF USERS JSR JUMPE TAC,UUOSYS ;IF ADDRESS=0,ILLEGAL USER UU HLL TAC,UUO0 ;PICK UP PROCESSOR FLAGS FOR TLNN TAC,USRMOD ;WAS UUO FROM USER? JRST UUOSYS ;NO, ILLEGAL NUUO FROM SYSTEM MOVEI 17,(TAC) ;17 NOW HAS REL. ADR. OF USER CAMG 17,USRREL ;DONT INCREMENT RETURN IF PC HRRI TAC,1(TAC) ;INCREMENT PC EXCH TAC,UUO0 ;SET UP RETURN TO USER, PICK ;UP USERS FLAGS,PC CAMLE 17,USRREL ;LEGAL MEMORY? JRST .+3 ;NO. DONT STORE PC ADD 17,JOBADR ;MAKE REL. ADR. INTO ABS. ADR MOVEM TAC,(17) ;STORE FLAGS AND PC LIKE JSR MOVE TAC,40 ;RESTORE TAC MOVE 17,USRSAV ;RESTORE 17 JRST 2,@UUO0 ;RETURN TO USER UUOSYS: EXCH TAC,40 ;RESTORE TA. RESTORE THE UUO MOVE 17,UUO0 ;PICK UP PROCESSOR FLAG TLNN 17,USRMOD ;SYSTEM UUO FROM SYSTEM? JRST UUOSY1 ;YES MOVE 17,JOBADR ;NO. PICK UP ADR. OF USER PRO MOVEM 16,16(17) ;STORE AC16 IN USER 16 HRRZ 16,17 ;SET UP BLP POINTER BLT 16,15(17) ;MOVE REAL ACS TO USER AREA MOVE 0,USRSAV ;MOVE USER 17 TO USERS AREA MOVEM 0,17(17) MOVE JDAT,JOBDAT ;LOAD UP JOB DAT AREA ADDRES MOVSI PDP,MJOBPD ;LOAD UP PUSH DOWN AC AND HRRI PDP,JOBPDL(JDAT) ;MAKE ABSOLUTE PATH SKIPA PROG,17 ;PROGRAM BASE ADDRESS UUOSY1: MOVE 17,USRSAV ;RESTORE AC17 IF UUO FROM SYS PUSH PDP,UUO0 ;SAVE RETURN ON PUSH DOWN LIS MOVE UUO,40 ;GET THE UUO INTO AC(UUO) LDB TAC1,[POINT 9,UUO,8] ;PICK UP UUO OP COD CAIL TAC1,100 ;ILLEGAL INSTRUCTION? JRST ILLINS ;YES CAIGE TAC1,40 ;SYSTEM UUO? JRST UUOERR ;NO. ILLEGAL LDB TAC,PUUOAC MOVE DEVDAT,USRJDA(TAC) ;GET DDB CAIGE TAC1,100-UUOT2L ;AN IO UUO? JRST UUODSP ;NO CAIE TAC1,70 ;CLOSE AND RELEASE ARE ALWAYS LEGAL CAIN TAC1,71 JUMPE DEVDAT,UXIT JUMPE DEVDAT,IOIERR ;CHANNEL MUST BE ASSIGNED MOVE IOS,DEVIOS(DEVDAT) ;GET DATA BLOCK STA JRST UUOT2-77+UUOT2L-1(TAC1) ;DISPATCH UUODSP: CAIGE TAC1,40+UUOT1L ;LEGAL SYSTEM UUO? JRST UUOT1-40(TAC1) ;YES. DISPATCH JRST UUOERR UUOT1: JRST UCALL ;40 JRST UINIT ;ADD NON IO UUOS HERE UUOT1L=.-UUOT1 UUOT2: ;ADD IO UUOS HERE JRST USETST JRST USTATO JRST USTATS JRST USTATZ JRST UINBF JRST UOUTBF JRST IN JRST OUT JRST CLOSE1 JRST RELEA1 JRST MTAPE1 JRST UDGF JRST UDSI JRST UDSO JRST UDLK JRST UDEN ;77 UUOT2L=.-UUOT2 ,DISPATCH TO SPECIAL ROUTINE DEFINE DSPT(A) UDSP: MOVE TAC,DEVSER(DEVDAT) MOVE TAC1,DEVCHR(DEVDAT) TLNN TAC1,IORET MOVEI TAC,NRTOSP-4 ;IGNORE THESE CALLS FOR NON- POPJ PDP, NRTOSP: JRST CUXIT1 ;SKIP RETURN JRST CUXIT1 ;SKIP RETURN JSP DAT,ERROR ;DUMP0 JSP DAT,ERROR ;DUMP1 JRST UUOERR ;USETO JRST UUOERR ;USETI JRST UUOERR ;GETF UDEN: PUSHJ PDP,WAIT1 TLO IOS,IOBEG TRZ IOS,776000 MOVEM IOS,DEVIOS(DEVDAT) LDB TAC,PUUOAC TLO DEVDAT,ENTRB TLZ DEVDAT,CLOSB HLLM DEVDAT,USRJDA(TAC) PUSHJ PDP,UDSP JRST DEN(TAC) UDLK: PUSHJ PDP,WAIT1 TDZ IOS,[XWD IOEND,776000] MOVEM IOS,DEVIOS(DEVDAT) LDB TAC,PUUOAC TLO DEVDAT,LOOKB TLZ DEVDAT,CLOSB HLLM DEVDAT,USRJDA(TAC) PUSHJ PDP,UDSP JRST DLK(TAC) DSPT(DSO) DSPT(DSI) DSPT(DGF) , 6-CSS-DEC-CALL-PL-PRE2 , H. R. MORSE 64-11-17 , CALLING SEQUENCE , CALL 0,[SIXBIT/NAME/] , WHERE NAME IS THE NAME OF A SYSTEM ROUTINE. , IF NO SYSTEM ROUTINE WITH THE SPECIFIED NAME IF FOUND, THIS ROUTINE , EXISTS TO ERROR. , MONITOR INTERFACE , ROUTINES CALLED: ERROR, HASH, SYSTEM ROUTINES DEFINED BY , USE OF UCALIN. , SYMBOLS SET/USED: , ACCUMULATORS: DAT S/U PROG U , PDP U UUO S/U ;CONTENTS OF USER AC PLACED IN AC TAC UCALL: TLO UUO,JDAT ;RELATIVIZE UUO ADDRESS MOVE DAT,@UUO; DAT:=NAME OF SYSTEM ROUTINE C MOVSI TAC1,-UCLLEN CAME DAT,UCLTAB(TAC1); SEARCH SYSTEM TOUTINE NAME TA AOBJN TAC1,.-1 LDB DAT,PUUOAC ;USER UUO AC FIELD HRLI DAT,JDAT MOVE TAC,@DAT ;PICK UP CONTENTS OF USER AC JUMPL TAC1,@UCLJMP(TAC1) JRST UUOERR DEFINE NAMES < X DDTIN,DDTIN X DDTOUT,DDTOUT X DDTGT,DDTGT X DDTRL,DDTRL X SETDDT,SETDDT X DEVCHR,DVCHR X GETCHR,DVCHR X WAIT,WAIT X RESET,RESET X EXIT,EXIT X LDRBLT,LDRBLT X UTPCLR,UTPCLR X DATE,DATE X SETPOV,SETPOV X SWITCH,SWITCH X TIMER,TIMER > DEFINE X (A,B) < SIXBIT /A/ > UCLTAB: NAMES UCLLEN=.-UCLTAB DEFINE X(A,B) < JRST B EXTERNAL B > UCLJMP: NAMES , DEV 06 00 EX COM L PT PRE 02 UXIT , H. R. MORSE 64-12-26 , CALLING SEQUENCE , ANY TRANSFER OF CONTROL TO UXIT , EXITS THIS UUO CALL. , MONITOR INTERFACE , SYMBOLS SET/USED: , ACCUMULATORS: MAY RESTORE ALL ACCUMULATORS , JDAT U , PDP U , 17 S/U , JOB AREA: JOBAC U , SYSTEM ADDRESSES: USRUXT U , USRLEV S/U INTERN UXIT,CUXIT1,CUXIT2 CUXIT2: AOS (PDP) CUXIT1: AOS (PDP) UXIT: POP PDP,USRSAV ;RESTORE UUO EXIT ADDRESS FRO EXCH TAC,USRSAV TLNN TAC,USRMOD ;WAS ENTRY FROM USER MODE? JRST UXIT2 MOVEM TAC,USRSAV ;SET UP RETURN MOVSI 17, JOBAC(JDAT) ;RESTORE ACCUMULATO BLT 17,17 UXIT1: JRST 2,@USRSAV ;RETURN TO USERS PROGRAM UXIT2: EXCH TAC,USRSAV JRST 2,@USRSAV END,