ASMB,R,L,C ** RTE-M I EXECUTIVE MODULE ** HED ** RTE-M I EXECUTIVE MODULE ** * * NAME : $MEX1 * SOURCE: 92064-18002 * RELOC: PART OF 92064-16001 * PROGMR: E.J.W.,J.U.F * BASED ON RTE-III VERSIONS G.A.A.,L.W.A.,D.L.S. * * **************************************************************** * * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979. ALL RIGHTS * * * RESERVED. NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, * * * REPRODUCED OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE WITHOUT * * * THE PRIOR WRITTEN CONSENT OF HEWLETT-PACKARD COMPANY. * * **************************************************************** * * NAM $MEX1 92064-16001 REV.1940 790629 * * ENT EXEC,$ERMG,$RQST ENT $LIBR,$LIBX ENT $ERAB,$PVCN,$REIO,$RSRE,$ABRE ENT $PWR5 * EXT $CVT3,$SYMG,$LIST,$XEQ,$IRT EXT $RENT,$ABRT,$SCD3 EXT $SCLK,$MPFT SUP A EQU 0 B EQU 1 MIC SVR,105620B,2 MIC RSR,105621B,2 * ***** < EXEC > PROGRAM DESCRIPTION ***** * * THE PRIMARY FUNCTION OF THIS PROGRAM IS * TO PROVIDE GENERAL CHECKING AND EXAMINATION * OF SYSTEM SERVICE REQUESTS AND TO CALL THE * APPROPRIATE PROCESSING ROUTINE IN OTHER * SECTIONS OF THE REAL-TIME EXECUTIVE. * * THIS PROGRAM IS CALLED DIRECTLY FROM THE * CENTRAL INTERRUPT CONTROL SECTION * WHEN A MEMORY PROTECT VIOLATION IS ACKNOWLEDGED. * ALL SYSTEM REQUESTS BY A USER PROGRAM CAUSE A * PROTECT VIOLATION. * * SYSTEM REQUEST FORMAT: * ---------------------- * * THE GENERAL FORMAT OF A SYSTEM REQUEST IS * A BLOCK CONTAINING AN EXECUTABLE INSTRUCTION * TO GAIN ENTRY TO THE EXECUTIVE AND AN ADDRESS * LIST OF PARAMETERS. THE FIRST PARAMETER IS * A NUMERIC CODE IDENTIFYING THE REQUEST TYPE. * THE LENGTH OF THE PARAMETER LIST VARIES * ACCORDING TO THE AMOUNT OF INFORMATION RE- * QUIRED FOR EACH REQUEST (OR VARIATIONS WITHIN * A SINGLE REQUEST). THIS FORMAT ALLOWS SYSTEM * REQUESTS TO BE SPECIFIED IN A FORTRAN CALL * STATEMENT IN ADDITION TO ASSEMBLY LANGUAGE FORMAT. * * CALL EXEC (P1,P2,...PN) * * OR * * EXT EXEC * JSB EXEC (CAUSES MEMORY PROTECT VIOLATION) * DEF *+1+N DEFINE EXIT POINT, N= # PARAMETERS * DEF RCODE DEFINE REQUEST CODE * DEF P1 DEFINE PARAMETER LIST, 1 TO N * . * . (PARAMETERS MAY BE INDIRECTLY * . REFERENCED, E.G. DEF P3,I) * DEF PN * - EXIT POINT - * * RCODE DEC N * P1 DEC/OCT/DEF,ETC TO DEFINE A VLAUE * * * RE-ENTRANT LIBRARY REQUEST * -------------------------- * * THE SYSTEM LIBRARY (RESIDENT) CONTAINS * PROGRAMS STRUCTURED IN 'RE-ENTRANT' FORMAT * OR IN 'PRIVILEGED' EXECUTION FORMAT. * * - RE-ENTRANT FORMAT ALLOWS A LIBRARY * PROGRAM TO BE RE-ENTERED BY A CALL FROM * A HIGHER-PRIORITY PROGRAM DURING THE * PROCESSING OF A CALL FROM A LOWER-PRIORITY * PROGRAM. * * - PRIVILEGED EXECUTION FORMAT ALLOWS A * SHORT-RUNNING LIBRARY PROGRAM TO BE EXECUTED * WITH THE INTERRUPT SYSTEM DISABLED. * * * MEMORY PROTECT ERROR: * --------------------- * * IF THE INSTRUCTION CAUSING THE PROTECT VIOLATION * IS NOT A JSB EXEC OR A JSB TO LIBRARY * PROGRAM, THEN A USER PROGRAM ERROR IS * ASSUMED. A DIAGNOSTIC IS OUTPUT TO THE SYSTEM * TELETYPE LISTING THE PROGRAM NAME AND ADDRESS * OF VIOLATING INSTRUCTION AND THE PROGRAM IS * SET DORMANT IN THE PROGRAM ABORT PROCEDURE. * * * $RQST LIB 5 GET ADDRESS OF VIOLATION. LIA 4 DO NOT REARRANGE!!! CPA D4 POWER FAIL? LDB $PWR5 YES, USE LAST INTERRUPT ADDR. STF 5 REENABLE PARITY ERROR OPTION. STB XSUSP,I SET POSSIBLY DIFFERENT ADDR HLT 5 SIGNAL MP OR PARITY ERROR JMP $IRT PRESSED 'RUN' TO IGNORE IT * RQP2A DEF RQP2 VADR NOP $PWR5 NOP ADDR OF INTERRUPT BEFORE POWER FAIL DM9 DEC -9 $SGAF NOP * EXEC NOP ENTRY-EXIT CLF 0 DISABLE INTERRUPT SYSTEM STA XA,I CLA,INA JSB PRVIO ALLOW PRIV-I/O, SAVE REGS. LDB EXEC SAVE RETURN STB $LIBR ADDRESS ADB DM1 SAVE CALL ADDRESS STB XSUSP,I AS POINT OF SUSPENSION * * * ANALYZE SYSTEM REQUEST * R0 LDA $LIBR,I (A) = RETURN ADDRESS OF JSB EXEC. ISZ $LIBR SET $LIBR TO FIRST PRAM. (RQ) ADDRESS. STA RQRTN SAVE IN BASE PAGE LDB $LIBR CACULATE THE NUMBER OF CMB,CLE PARAMETERS IN REQUEST ADB A LESS THE REQUEST CODE. STB RQCNT AND SAVE # OF ACTUAL PARAMETERS. STB A STB CNT CMB,SEZ,CME SKIP IF RETURN IS BAD (< JSB +2) * ADA DM9 CLA,SEZ JMP RQERR ERROR IF >8. * STA RQP2 ZERO STA RQP3 PARAMETER STA RQP4 STA RQP5 ADDRESS STA RQP6 STA RQP7 AREA STA RQP8 STA RQP9 * * * CHECK LEGALITY OF REQUEST CODE * LDA $LIBR GET ADDR OF THE REQ PARAM LDA A,I RAL,CLE,SLA,ERA REMOVE INDIRECTS JMP *-2 LDA A,I GET ACTUAL REQ CODE LDB XEQT COMPUTE ADB D15 THE STATUS WORD STB TEMP3 ADDRESS AND SAVE LDB B,I GET STATUS RAL,CLE,ERA PUT ABORT OPTION BIT RBL,ERB IN SIGN OF STATUS STB TEMP3,I AND RESET IN ID-SEG. SSB IF OPTION SELECTED ISZ RQRTN STEP RETURN ADDRESS. STA RQP1 SAVE THE REQUEST CODE. SZA IF ZERO SKIP TO REJECT ADA CODE# IF RQUEST CODE IF NOT DEFINED SSA,RSS -THEN JMP RQERR TOUGH LUCK, YOU'RE A DEAD DUCK! * ADA RQTBL GET ADDRESS OF PROCESSOR TO A LDA A,I GET ADDRESS SZA,RSS IF NOT LOADED JMP RQERR THEN REQUEST CODE ERROR * STA VADR SAVE THE ADDRESS * * TEST EACH PRAMETER FOR BEING BELOW THE FENCE IF * THE CALL CAUSES A STORE TO THE AREA DEFINED. * LDB RQP1 USE REQUEST CODE CLE,ERB TO INDEX INTO ADB RQTBL THE BY NAME TABLE LDA B,I GET THE FLAG WORD SEZ,RSS IF EVEN REQUEST, ROTATE BITS ALF,ALF TO USE HIGH HALF STA FLAGS * ISZ $LIBR LDA $LIBR GET ADDR OF 2ND PARAM LDB RQP2A GET ADDR OF 2ND BP PARAM MIC1 JMP NOMC2 -LRR- IF HAVE MICROCODE * OCT 105622 MACRO CALL FOR LRR CNT OCT 0 COUNT OF PARAMS LEFT FLAGS OCT 0 BITS FOR PARAM ADDR CHECK DEF FENCE ADDR OF FENCE WORD RSS ERROR RETURN JMP VADR,I SUCCESSFUL RETURN * SZB,RSS JMP $ERAB JMP RQERR * NOMC2 STB TEMP2 SAVE BP PTR LDA CNT CMA,INA,SZA,RSS NEGATE COUNT JMP VADR,I DO REQ. IF 0 PARAMS STA CNT * R3 LDA $LIBR GET ADDR OF PARAM ADDR R1D1 LDA A,I GET ACTUAL PARAM ADDR SZA CPA D1 IS IT POINTING TO A OR B REGS? JMP RQERR YES, ERROR. RAL,CLE,SLA,ERA INDIRECT? JMP R1D1 GO GET DIRECT ADDR * STA TEMP2,I SAVE DIRECT ADDR ON BP CMA,CLE READY TO SUBTR FROM FENCE LDB FLAGS SLB,RBR NEED TO TEST AGAINST MP FENCE? ADA FENCE YES, SUBTRACT STB FLAGS SAVE SHIFTED FLAG BITS CLB,SEZ PARAM ADDR < FENCE? JMP ER1 YES, RQ00 ERROR * ISZ $LIBR INCRE TO NEXT USER PARAM ISZ TEMP2 INCRE TO NEXT BP LOC ISZ CNT DONE YET? JMP R3 NO JMP VADR,I YES, DO THE REQUEST * ER1 LDA RQ1 SET A FOR ERROR JMP $ERAB GO SEND 'RQ00' ERROR SPC 1 D1 DEC 1 D2 DEC 2 D15 DEC 15 DM1 DEC -1 CODE# ABS TBL-TBLE-1 NEGATIVE OF NUMBER OF REQUEST+1 RQTBL DEF TBLE ADDRESS INDIRECT OF LAST + 1. HED ** SUPERVISORY CONTROL OF LIBRARY PROGRAM EXECUTION ** * * SUPERVISORY CONTROL OF PROGRAM LIBRARY EXECUTION * * ALL LIBRARY PROGRAMS REFERENCED BY USER PROGRAMS * IN THE SYSTEM ARE COMBINED IN A BLOCK OF MEMORY * WHICH IS PROTECTED FROM THE REAL-TIME AREA. THE * LIBRARY AREA IS IMMEDIATELY BELOW THE RT AREA * AND JUST ABOVE THE SYSTEM AREA. * * A USER LIBRARY CALL CAUSES A PROTECT VIOLATION. * THIS SECTION FACILITATES ENTRY INTO THE LIBRARY * PROGRAM BY PERFORMING THE NECESSARY PROCESSING * FOR RE-ENTRANCY OR OPERATING THE PROGRAM WITH H= * THE INTERRUPT SYSTEM TURNED OFF FOR A 'PRIVILEGED' * EXECUTION PROGRAM. * * RE-ENTRANT OR PRIVILEGED PROGRAM FORMAT: * ---------------------------------------- * * ENTRY NOP * JSB $LIBR * DEF TDB (OR 'NOP' IF PRIVILEGED) * - FIRST INSTRUCTION FOR FUNCTION - * - CODE * - TO * - PERFORM * - PROGRAM FUNCTION * EXIT JSB $LIBX * DEF TDB (OR DEF ENTRY IF PRIVILEGED) * DEC N RETURN ADJUSTMENT FOR RE-ENTRANT * - * TDB NOP HOLDS SYSTEM POINTER TO ID-EXTENSION. * DEC N LENGTH OF TEMPORARY DATA BLOCK * NOP RETURN ADDRESS OF CALL. * - BLOCK USED FOR * HOLDING TEMPORARY * VALUES GENERATED * BY THE ROUTINE. * * * < $LIBR> IS ENTERED WHEN A LIBRARY * PROGRAM IS CALLED. IF THE CALLED * PROGRAM IS 'RE-ENTRANT' AND IS CALLED * DURING THE PROCESSING OF A PREVIOUS * CALL, THE TEMPORARY-DATA-BLOCK IS * MOVED INTO A BLOCK IN AVAILABLE MEMORY * BEFORE THE ROUTINE IS ENTERED. * * * * *CALLING SEQUENCES: ENTRY TERMINATION * *PRIVILEGED: JSB $LIBR JSB $LIBX * NOP DEF (PROGRAM ENTRY PT) * *RE-ENTRANT: JSB $LIBR JSB $LIBX * DEF TDB DEF TDB * DEC 0 OR 1 * * BASIC ASSUMPTION: PRIVILEGED ROUTINES MAY NOT CALL * RE-ENTRANT ROUTINES * * $LIBR NOP CLF 0 TURN OFF INTERRUPTS STA XA,I SAVE A-REG LDA $LIBR,I GET TYPE OF $LIBR CALL IN (A) JSB PRVIO LET PRIV-I/O CONTINUE LDA $LIBR,I ALL REGS SAVED FOR $LIBR RENT ISZ $LIBR STEP TO RETURN ADDR SZA WHAT KIND OF $LIBR CALL? JMP LRRNT RE-ENTRANT, TDB ADDR IN A * LDA XA,I PRIVILEGED CALL ISZ $PVCN BUMP DEPTH COUNTER JMP $LIBR,I ENTER PRIVILEGED SUBROUTINE * LRRNT STA TEMP1 SAVE TDB ADDR LDA $PVCN SZA TRY TO GO RE-ENTRANT WHILE PRIVILEGED? JMP ERE01 YES, ABORT PROG * LDB TEMP1,I GET TDB WORD 1 SZB,RSS WAS SUBR ALREADY ENTERED? JMP LRENT NO, ENTER NOW * LDA XEQT IF SUBR ENTERED BY THIS PROG EARLIER, ADA D20 THEN IGNORE BUSY FLAG CPA B THIS ALLOWS A PROG TO COMMIT RECURSION JMP LRENT (FORBIDDEN, BUT NO CHECK IS MADE) * LDA B,I GET TDB OWNER'S ID SEG WORD 21 AND B2000 SZA IS IT STILL IN RE-ENTRANT CODE? JMP LRWAT YES, WAIT TILL IT'S DONE * LRENT LDB XEQT ADB D20 STB TEMP1,I SET TDB OWNER'S ID ADDR WORD 21 LDA B,I IOR B2000 SET REENTRANT BIT (BIT 10) STA B,I IN OWNER'S ID STATUS WORD LDB TEMP1 ADB D2 (B) = ADDR OF TDB WORD 3 LDA $LIBR ADA N3 LDA A,I (A) = RETURN ADDR FROM SUBR STA B,I SAVE RETURN ADDR IN TDB LDA $LIBR CHANGE POINT OF SUSPENSION STA XSUSP,I TO EXECUTE SUBR JMP $RENT * LRWAT LDA $LIBR CALCULATE ADDR OF CALL TO ADA N3 THE BUSY RE-ENTRANT SUBROUTINE CCB ADB A,I STB XSUSP,I AND SET AS POINT OF SUSPENSION LDA TEMP1,I FOR NEW-COMERS TO WAIT FOR STA XTEMP,I CURRENT TDB OCCUPANT TO FINISH JSB $LIST SUSPENSION IN THE GENERAL WAIT LIST OCT 503 (1ST TEMP = ID WORD 21 OF OCCUPANT) JMP $XEQ * * * $LIBX NOP CLF 0 TURN OFF INTERRUPTS STA XA,I SAVE A-REG LDA $PVCN SZA,RSS EXIT FROM PRIV-SUB MODE? JMP LXRNT NO, EXIT REENTRANT MODE. * CLA EXIT PRIV-SUB JSB PRVIO LET PRIV I/O GO LDA $PVCN SUBTRACT ONE FROM COUNT CMA,INA WITH OUT AFFECTING CMA,SZA,RSS "E" ($PVCN >0 ) JMP LXPRX IF NOT STILL PRIV. JMP * STA $PVCN STILL PRIV. SET THE COUNTER BACK LDA $LIBX,I TRACK DOWN THE RETURN LDA A,I ADDRESS STA $LIBX AND SET IT LDA XA,I RESTORE A AND JMP $LIBX,I RETURN TO LIBRARY AREA * LXPRX STA $PVCN RETURN NON PRIV. SET COUNTER LDA $LIBX,I GET THE LDA A,I RETURN ADDRESS STA XSUSP,I AND SAVE IT LDA XA,I JSB SAVER SAVE REGISTERS JMP $RENT RETURN TO USER * * * RE-ENTRANT PROGRAM RETURNING TO USER CALL. * LXRNT CLA,INA (A)#0 FOR SAVE REGS JSB PRVIO AND LET PRIV-I/O CONTINUE. LDB $LIBX,I SET -TDB- ADDRESS. STB TEMP1 IN TEMP1. ISZ $LIBX SET TO (P+2) OF CALL TO -$LIBX-. ADB D2 GET LDA B,I RETURN POINT ADJUSTMENT. ADA $LIBX,I ADD TO (P+1) OF LIBRARY CALL STA XSUSP,I AND SET FOR RETURN TO USER. * LDB TEMP1,I GET OWNER'S ID WORD 21 ADDR CMA,CLE,INA ADA $SGAF SEZ IS RETURN TO RES.LIB. AREA? JMP LXAGN YES, DON'T CLEAR RENT BIT * LDA B,I NO, CLEAR RENT BIT, GO BACK TO USER XOR B2000 CLEAR REENTRANT BIT OF STA B,I OWNER'S ID STATUS WORD * LXAGN CLA STA TEMP1,I CLEAR CURRENT TDB OCCUPANT WORD LDA B JSB $SCD3 RESCHEDULE WAITERS JMP $XEQ RETURN VIA DISPATCHER * * $PVCN NOP TEMP1 NOP TEMP2 NOP TEMP3 NOP N3 DEC -3 D20 DEC 20 B2000 OCT 2000 * * * SUBROUTINES: AND USED FOR * SAVING AND RESTORING REGISTERS * IN LIBRARY PROGRAM PROCESSING. * SAVER NOP MIC3 JMP MIC4 OR STA XA,I IF NO MICRO STB XB,I ERA,ALS SOC INA STA XEO,I MX3 JMP SAVER,I RETURN IF NOT MX, CXA IF MX DST XI,I JMP SAVER,I * MIC4 SVR XA,I XI,I SAVE REGS MICRO CALL JMP SAVER,I RETURN * RSTR NOP MIC5 JMP MIC6 OR LDA XEO,I IF NO MICRO CLO SLA,ELA STF 1 MX4 JMP NMX4 IF NOT MX, DLD IF MX DEF XI,I CAX CBY NMX4 LDA XA,I LDB XB,I JMP RSTR,I RETURN * MIC6 RSR XA,I XI,I RESTORE REGS MICRO CALL JMP RSTR,I RETURN * * PRVIO CALLING SEQUENCE * CLF 0 TURN OFF INTERRUPTS * STA XA,I SAVE A-REG * LDA OPT =0 NO SAVE REGS, #0 SAVE ALL REGS * JSB PRVIO CALL PRVIO * (A) AND (B) MEANINGLESS ON RETURN * PRVIO NOP ENABLE PRIV-I O AND SZA,RSS SAVE REGS IF (A)#0 JMP SW1 JUST TURN OFF INTERRUPTS * LDA XA,I SAVE ALL REGS JSB SAVER * SW1 JMP PRVIO,I OR STC DUMMY CLC 6 CLC 7 STF 0 REENABLE INTS FOR PRIV-I/O CARDS JMP PRVIO,I RETURN * * $REIO NOP DUMMY $REIO ROUTINE FOR RTIOC CALL JMP $REIO,I * $RSRE NOP DUMMY $RSRE ROUTINE FOR DISPA CALL JMP $RSRE,I * $ABRE NOP CLEAN UP RE-ENTRANT STUFF WHEN ADB D20 A PROGRAM IS ABORTED LDA B,I GET WORD 21 OF ID SEG AND B2000 SZA,RSS WAS PROG IN RE-ENTRANT CODE? JMP $ABRE,I NO, RETURN * LDA B YES, RESCHEDULE WAITERS FOR TDB JSB $SCD3 IF THERE ARE ANY JMP $ABRE,I RETURN * HED * EXEC - ERROR MESSAGE SECTION * * * ERROR SECTION * * THE FOLLOWING DIAGNOSTICS ARE OUTPUT ON THE * SYSTEM TELETYPEWRITER ON DETECTION OF: * * 1) REQUEST CODE UNDEFINED OR ILLEGAL * NUMBER OF PARAMETERS * * RQ -PNAME- -PADDR- * * THE ROUTINE -$ERMG- IS USED TO FORMAT * THE DIAGNOSTIC AND CALL FOR ITS OUTPUT. * * ERE01 LDA RE (A) = 'RE' RSS RQERR LDA RQ1 (A) 'RQ' LDB BLANK (B) = BLANKS JSB $ERMG JMP $XEQ * AS00 ASC 1,00 RQ1 ASC 1,RQ RE ASC 1,RE * $ERAB ADB AS00 ADD ASC "00" JSB $ERMG PRINT ERROR DIAG.,ABORT PROG JMP $XEQ -EXIT- SPC 3 * SUBROUTINE: <$ERMG> * * PURPOSE: THIS ROUTINE FORMATS A DIAGNOSTIC * MESSAGE WHICH CONTAINS A FOUR * CHARACTER MNEMONIC DESCRIBING THE * ERROR WITH THE PROGRAM NAME AND * LOCATION OF THE ERROR. IT THEN * CALLS THE ROUTINE <$SYMG> TO * OUTPUT THE MESSAGE. * * CALL: (A),(B) CONTAIN A 4 ASCII CHARACTER * MNEMONIC OR CODE DESCRIBING THE ERROR * * (P) JSB $ERMG * (P+1) - RETURN - (REGISTERS MEANINGLESS) SPC 2 * $ERMG JMP $I.EX DO INIT STUFF * STA MSG+1 SET ERROR MNEMONIC IN STB MSG+2 FIRST 4 CHARACTERS OF MESSAGE. * LDB XEQT SET (B) = ADDRESS OF POINT OF ADB D8 SUSPENTION IN ID-SEG. STB PRVIO AND SAVE FOR ABORT OPTION ADB D4 SET (B) = ADDRESS OF 3-WORD NAME LDA B,I AND SET STA MSG+4 PROGRAM INB NAME LDA B,I IN STA MSG+5 MESSAGE. CLE,INB (E=0 FOR ASCII CONVERSION) LDA B,I AND C377 IOR B40 STA MSG+6 INB GET THE STATUS LDA B,I WORD AND IF RAL,CLE,SLA,ERA ABORT OPTIN IN EFFECT JMP NOABT GO SET IT UP. * ERM LDA XSUSP,I GET LOCATION OF ERROR JSB $CVT3 CONVERT TO OCTAL/ASCII FORMAT LDB A,I MAKE STB MSG+7 5-DIGIT MEMORY ADDRESS. INA SET DLD A,I GET THE OTHER TWO WORDS DST MSG+8 AND SET IN THE MESSAGE * LDA MSGA CALL TO JSB $SYMG OUTPUT DIAGNOSTIC. * LDA XEQT NOW GO JSB $ABRT ABORT THE PROGRAM * JMP $ERMG,I D4 DEC 4 D8 DEC 8 C377 OCT 177400 * NOABT ADB DM6 SET A,B ADDRESS STB DSTAD SET DOUBLE STORE ADDRESS DLD MSG+1 GET THE ERROR CODE DST DSTAD,I SET A,B TO THE ERROR CODE DSTAD EQU *-1 DOUBLE STORE ADDRESS * CCA,CLE USE THE RETURN ADDR - 1 FOR CPB BLANK (BUT IF "MP","RQ", OR "RE" JMP ERM ABORT ANYWAY) ADA RQRTN STA PRVIO,I THE RETURN ADDRESS TO THE PGM. JSB $LIST OCT 501 JMP $ERMG,I RETURN * DM6 DEC -6 B40 OCT 40 * MSGA DEF *+1 MSG DEC -18 ASC 2, BLANK ASC 7, SPC 2 EXT $MIC $I.EX EQU * SYSTEM INITIALIZATION CODE LDA DUMMY GET DUMMY CARD ADDR SZA,RSS JMP NOPRV NO PRIVILEGED I/O IOR STC STA SW1 SET CONFIGURED STC INSTRUCTION NOPRV EQU * LIA 6 SZA,RSS WHAT KIND OF CPU? JMP NMX NOT MX OR XE. LDA .CXA IT IS MX OR XE STA MX3 LDA .DLD STA MX4 * NMX LDA $MIC SZA,RSS IS THERE MICROCODE? JMP NMC0 =0, NO MICRO LDA .LRR #0, YES, MICRO STA MIC1 JMP $SCLK DONE NMC0 LDB SAXAI NO MICRO STB MIC3 LDB LAEOI STB MIC5 LDA $MPFT SET ADDR OF SSGA ADA D4 LDA A,I ADA DM1 STA $SGAF JMP $SCLK DONE * .DLD DLD 0 .CXA CXA .LRR OCT 105622 STC STC 0 SAXAI STA XA,I LAEOI LDA XEO,I * HED * EXEC -- REQUEST CODE TABLE * *** REQUEST CODE TABLE *** * * THIS DEFINES THE RELATION FOR SYSTEM * REQUEST CODES AND CORRESPONDING PROCESSORS. * THE TABLE CONSISTS OF ONE-WORD ENTRIES IN * NUMERIC ORDER CORRESPONDING TO THE DEFINED * SYSTEM REQUEST CODES. THE CONTENTS OF EACH * ENTRY IS THE BASE PAGE LINKAGE ADDRESS OF * THE WORD CONTAINING THE ENTRY POINT ADDRESS * * OF THE PROCESSOR. AN -EXT- MUST BE USED * WITH THE -DEF- IN DEFINING THE TABLE. * * THE WORD LABELED -CODE#- CONTAINS THE NEGATIVE OF * ONE + THE TOTAL # OF REQUEST CODES. * EXT $IORQ TBL DEF $IORQ CODE 1 I/O READ DEF $IORQ CODE 2 I/O WRITE DEF $IORQ CODE 3 I/O CONTROL NOP CODE 4 DISC TRACK ALLOCATION NOP CODE 5 DISC TRACK RELEASE * EXT $MPT1 DEF $MPT1 CODE 6 PROGRAM COMPLETION * EXT $MPT2 DEF $MPT2 CODE 7 OPERATOR SUSPENSION NOP CODE 8 LOAD PROGRAM SEG$MNT * EXT $MPT4 DEF $MPT4 CODE 9 SCHEDULE WITH WAIT * EXT $MPT5 DEF $MPT5 CODE 10 SCHEDULE PROGRAM * EXT $MPT6 DEF $MPT6 CODE 11 REAL TIME/DATE * EXT $MPT7 DEF $MPT7 CODE 12 TIME SCHEDULE DEF $IORQ CODE 13 I/O DEVICE STATUS NOP CODE 14 NO SUCH CALL NOP CODE 15 GLOBAL TRACK ASSIGNMENT NOP CODE 16 GLOBAL TRACK RELEASE NOP CODE 17 READ CLASS I/O NOP CODE 18 WRITE CLASS I/O NOP CODE 19 CONTROL CLASS I/O NOP CODE 20 WRITE-READ CLASS I/O NOP CODE 21 GET CLASS I/O * EXT $MPT8 DEF $MPT8 CODE 22 SWAP/CORE USAGE REQUEST DEF $MPT4 CODE 23 SCHEDULE WITH WAIT/WAIT DEF $MPT5 CODE 24 SCHEDULE NO WAIT/WAIT * * * DEFINE END OF TABLE AND # ENTRIES IN TABLE. * -ADDITIONAL REQUESTS MAY BE INSERTED * AT THIS POINT. * TBLE EQU * * * THE NAMTB WHICH FOLLOWS CONTAINS A BIT FOR EACH PRAMETER * IN AN EXEC CALL WHICH SHOULD BE CALLED BY NAME...THAT IS * THE SYSTEM WILL NORMALLY STORE INTO THE LOCATION DEFINED * BY THE PRAMETER. THIS TABLE IS USED TO CHECK SUCH * PRAMETERS TO SEE IF THEY ARE ABOVE THE CURRENT * FENCE ADDRESS. * * 8 BITS ARE DEVOTED TO EACH CALL. THE LEAST BIT REFERS * TO PRAMETER NUMBER TWO AND SO ON. * THE 'L' AND 'H' NUMBERS ARE SET UP TO REFER TO EACH * PRAMETER BY NUMBER WHERE L REFERS TO THE LOW OR ODD * CALL FOR EACH WORD AND H REFERS TO THE HIGH OR EVEN CALL. * H = HIGH(EVEN CALL) * L = LOW(ODD CALL) * NAMTB ABS L3 0/1 (READ BUFFER) ABS 0 2/3 ABS H3+H4+H5 4/5 (ALLOCATE PRAMS) ABS 0 6/7 ABS 0 8/9 ABS L2+L3 10/11 (TIME VALUES) ABS L3+L4+L5 12/13 (STAT RETURN) ABS L3+L4+L5 14/15 (GLOBAL ALLOCATE PRAMETERS) ABS L7 16/17 (CLASSWORD FOR 17,18,20) ABS H7+L4 18/19 (CLASSWORD) ABS H7+L3+L5+L6+L7 20/21 (CLASSWORD,BUFFER,AND OPT PRAMS) ABS 0 22/23 ABS L3+L4+L5 24/25 SPC 2 L2 EQU 1 L3 EQU 2 L4 EQU 4 L5 EQU 10B L6 EQU 20B L7 EQU 40B L8 EQU 100B H2 EQU 400B H3 EQU 1000B H4 EQU 2000B H5 EQU 4000B H6 EQU 10000B H7 EQU 20000B H8 EQU 40000B HED * * SYSTEM BASE PAGE COMMUNICATION AREA * * XI EQU 1647B . EQU 1650B ESTABLISH ORIGIN OF AREA * * SYSTEM TABLE DEFINITION * * * * SYSTEM REQUEST PROCESSOR /'EXEC' COMMUNICATION * * RQCNT EQU .+22 # OF REQUEST PARAMETERS -1 RQRTN EQU .+23 RETURN POINT ADDRESS RQP1 EQU .+24 ADDRESSES RQP2 EQU .+25 RQP3 EQU .+26 OF REQUEST RQP4 EQU .+27 RQP5 EQU .+28 PARAMETERS RQP6 EQU .+29 RQP7 EQU .+30 (SET FOR MAXIMUM OF RQP8 EQU .+31 9 PARAMETERS) RQP9 EQU .+32 * * DEFINITION OF EXECUTING PROGRAM ID SEGMENT' * * XEQT EQU .+39 ID SEGMENT ADDR. OF CURRENT PROG. XTEMP EQU .+41 'TEMPORARY (5-WORDS) XSUSP EQU .+48 'POINT OF SUSPENSION' XA EQU .+49 'A REGISTER' AT SUSPENSION XB EQU .+50 'B REGISTER' XEO EQU .+51 'E AND OVERFLOW * * SYSTEM MODULE COMMUNICATION FLAGS * * DUMMY EQU 1737B DUMMY CARD FOR PRIV-I/O * * UTILITY PARAMETERS * FENCE EQU .+85 MEM PROTECT FENCE ADDRESS * ORG * PROGRAM LENGTH END EXEC