ASMB,R,C,Q HED MESSS * NAME: MESSS * SOURCE: 92067-18443 * RELOC: PART OF 92067-16261 * PGMR: G.A.A.,C.M.M.,G.L.M. * * *************************************************************** * * (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 MESSS,7 92067-16261 REV.1903 790420 * ENT MESSS EXT $LIBR,$LIBX,$MESS,.ENTP,$WORK,$PVCN,$$OP,CAPCK EXT $ESTB,VSCBA,IDGET SPC 2 BUFFR NOP LNGTH NOP P1 NOP ISES NOP MESSS NOP JSB $LIBR GO PRIVILEGED. CNTR NOP JSB .ENTP GET PARAMETERS. DEF BUFFR LDB MESSS LDA HERE SZA JMP EXIT2 STB RTN A IS ZERO SO STB HERE - LDB DEFEF - STB MESSS THE FOLLOWING DEPENDS ON A=0 ******* * LDB ISES,I SEE IF SCB PASSED SZB,RSS IF NONE PASSED JSB $ESTB USE CURRENT USERS STB ISES SAVE POSSIBLE SCB ADDR * * * CAPCK RETURNS THE REQUESTED COMMAND IN THE A REGISTER * JSB CAPCK SEE IF REQUEST IS ALLOWED DEF BCK DEF BUFFR,I DEF LNGTH,I DEF ISES BCK EQU * * * CPA DM1 COMMAND ERROR? JMP CKERR YES * SSB CAPABILITY ERROR? JMP CPERR YES * CPA "EN" ENABLE SYSTEM CONSOLE ? JMP LU1? CONTINUE CHECKS * CPA "OP" SYS/SES CON OPERATOR REQUEST ? JMP LU1? YES - CONTINUE CHECKING * CPA "RU" IF RU JMP CKID * CPA "ON" OR ON JMP CKID * CPA "IT" OR IT, GO CHECK SESSION WORD JMP CKID TO SEE IF WE CAN DO THIS COMMAND * NSES CLA STA $PVCN LDA BUFFR LDB LNGTH,I JSB $MESS PASS MESSAGE TO SYSTEM. ISZ $PVCN SZA,RSS JMP CHECK IF NO RETURNED MESSAGE, THEN CHECK XLB A,I FOR SPECIAL PATCHING OF 'RU' OR 'ON' STB LNGTH OTHERWIZE PROCESS MESSAGE. BRS STB CNTR LOOP INA XLB A,I STB BUFFR,I ISZ BUFFR ISZ CNTR JMP LOOP * LDA LNGTH EXIT CLB STB HERE STB P1 STB ISES JSB $LIBX DEF DEF RTN RTN NOP HERE NOP DEFEF DEF DEF * EXIT2 CLA JMP EXIT HED CHECK FOR RU AND ON PROCESSING * * THE FIRST CHECK IS MADE TO SEE IF THE SESSION WORD (ID32) * HAS TO BE SET UP FOR THE TARGET PROGRAM ("RU" OR "ON" ONLY). * * CHECK XLA $$OP,I GET THE OP CODE THE SYS PARSED. CPA "ON" ON ? JMP DP1 CPA "RU" RU ? JMP DP1 JMP EXIT2 NOT A "RU" OR "ON" * DP1 LDA ISES FETCH POSSIBLE PASSED SCB ADDR SSA IF NEG SESSION ADDR CMA,INA SET IT POS SZA,RSS IF NOT PASSED OR NOT SESSION JMP PROPA GO PROPAGATE CALLERS SESSION WORD * STA ISES SAVE POSITIVE VALUE FOR TEST JSB VSCBA GO VERIFY THE SCB ADDR DEF ID.2 DEF ISES ID.2 EQU * * SZA,RSS IF GOOD SCB ADDR, (A) WON'T BE ZERO JMP PROPA * LDA ISES USE PASSED SCB ADDR JMP PROP2 * PROPA LDA XEQT GET MY ID ADDR ADA D32 GET CALLER'S SESSION WORD XLA A,I PROP2 LDB $WORK PROPAGATE TO ADB D32 SON'S ID XSA B,I * * NOW SEE IF THE FIRST TEMP WORD OF THE TARGET PROGRAM'S ID * SHOULD BE STUFFED WITH THE TERMINAL LU. * LDA BUFFR,I IF RUN OR ON WAS SPECIFIED IN COL #1 CPA "ON" WE MUST TEST FURTHER JMP DP2 * CPA "RU" RU? JMP DP2 MORE TESTS REQUIRED JMP EXIT2 NOT IN FIRST COL, EXIT * DP2 LDB $WORK GET PROGRAMS ID SEGMENT ADDRESS INB ADVANCE TO FIRST TEMP WORD XLA B,I IF 1ST PARM SPECIFIED SZA,RSS DON'T MESS WITH FIRST TEMP * * NOTE: THE NEXT LINE DEPENDS ON (A)=0 * LDA P1,I ELSE FETCH PASSED LU# XSA B,I RESTORE TEMP1 (IN ID SEGMENT) * JMP EXIT2 * * HED SYS/SES CONSOLE COMMAND PRE-PROCESSOR * LU1? LDA ISES THESE COMMANDS ARE PERMITTED SZA,RSS ON LU 1 ONLY. IF NOT SESSION, CONTINUE JMP NSES * SSA CHECK FOR NEG VALUE CMA,INA STA ISES * JSB VSCBA FETCH SESSION ID DEF IS.1 DEF ISES IS.1 EQU * * CPA D1 SESSION ID RETURNS IN (A) JMP NSES WERE OK * CKERR LDA OPER OP CODE ERROR RSS CPERR LDA CPER BUFFER ADDR GOES IN (A) RSS ILSTA LDA ISTAT ILLEGAL STATUS ERROR LDB A,I FETCH LENGTH STB ISES SAVE IN TEMP INA ADVANCE TO START OF BUFFER LDB BUFFR FETCH ADDRESS OF USER BUFFER MVW ISES MOVE ERROR MESSAGE INTO USER BUFFER * LDA ISES FETCH BUF LEN ALS MAKE IT A BYTE COUNT CMA,INA SET IT NEG JMP EXIT AND GET OT * * * * CHECK TARGET PROGRAM FOR TIME LIST RESTRICTIONS * * IF TARGET IS IN THE TIME LIST AND IT'S UNDER SESSION, THE REQUEST * MUST BE BY THE SAME SESSION. * * CKID LDA ISES FETCH SCB ADDR FOR THIS REQUEST SZA,RSS IF CALLER NOT IN SESSION JMP NSES NO CHECKS ARE DONE * STX IDAD CAPCK RETURNS ADDR OF PARM1 IN (X) JSB IDGET GO GET ID ADDR DEF *+2 DEF IDAD,I * SZA,RSS FIND IT ? JMP NSES NO SUCH PROG, LET OP SYS RETURN ERROR * LDB D14 ADB A ADVANCE TO TYPE WORD XLA B,I &FETCH AND D15 & ISOLATE CPA D5 IF IT'S A SEGMENT JMP NSES CONTINUE * INB ADVANCE TO STATUS XLA B,I AND GET IT AND D15 ISOLATE STATUS SZA IF NOT DORMANT JMP ILSTA RETURN ILLEGAL STATUS * ADB D2 ADVANCE TO TIME LIST WORD XLA B,I ALF,SLA IF IN TIME LIST (AND DORMANT) RSS MUST GO CHECK SESSION WORD JMP NSES NOT IN TIME LIST * ADB D15 ADVANCE TO SESSION WORD XLA B,I FETCH IT CPA ISES DOES IT MATCH THE REQUEST SESSION JMP NSES YES, GO DO THE COMMAND SZA CHECK FOR MTM SSA OR NON SESSION JMP NSES LET THE COMMAND WORK ON THEM ALSO JMP ILSTA * * CPER DEF *+1 D8 DEC 8 ASC 8,CAPABILITY ERROR OPER DEF *+1 D6 DEC 6 ASC 6,OP CODE ERR * ISTAT DEF *+1 D7 DEC 7 ASC 7,ILLEGAL STATUS * "ON" ASC 1,ON "RU" ASC 1,RU "IT" ASC 1,IT "EN" ASC 1,EN "OP" ASC 1,OP D1 DEC 1 D2 DEC 2 D5 DEC 5 D14 DEC 14 D15 DEC 15 D32 DEC 32 DM1 DEC -1 IDAD NOP A EQU 0 B EQU 1 XEQT EQU 1717B * END