ASMB,L,R,C HED DEXEC: DS/1000 REMOTE EXEC ROUTINE *(C) HEWLETT-PACKARD CO.1980* NAM DEXEC,7 91740-16038 REV 2001 790405 SPC 1 * *************************************************************** * * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1980. ALL RIGHTS * * * RESERVED. NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, * * * REPRODUCED OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE WITHOUT* * * THE PRIOR WRITTEN CONSENT OF THE HEWLETT-PACKARD COMPANY. * * *************************************************************** SPC 1 * NAME: DEXEC * SOURCE: 91740-18038 * RELOC: 91740-16038 * PGMR: C. HAMILTON [ 04/05/79 ] SPC 1 * (DISTRIBUTED EXECUTIVE) IS THE DS/1000 USER INTERFACE FOR * 'TRANSPORTABLE' CALLS TO EITHER THE LOCAL, OR REMOTE-NODE RTE SYSTEM. * * WILL ACCEPT ALL VALID REQUEST CODES FOR 'LOCAL' EXECUTION. * * FOR EXECUTION AT A REMOTE NODE, WILL ACCEPT REQUEST CODES: * 1, 2, 3, 6, 9, 10, 11, 12, 13, 23, 24, 25, <99> * ONLY * * * ** UNACCEPTABLE REQUESTS WILL BE REJECTED WITH A "DS06" ERROR! * * ** "IO01" IS RETURNED UPON DETECTION OF INCORRECT, MISSING, OR * TOO MANY (>9) PARAMETERS. * * ** "IO04" WILL BE RETURNED FOR BUFFER-ERROR SPECIFICATIONS: * 'Z-BIT(#12)' SET IN CONWD, REMOTE READ/WRITE BUFFER LENGTH * GREATER THAN 512 WORDS, INTERACTIVE WRITE LENGTH > READ LENGTH. * * ** "SC01" INDICATES A MISSING SCHEDULING PARAMETER. * * ** "SC05" INDICATES AN IMPROPER PROGRAM NAME SPECIFICATION. * * REQUEST CODES: 1,2,3,6,10,11,12,13,25,99 WILL BE TRANSMITTED TO THE REMOTE * NODE, VIA STREAM #5, TO BE PROCESSED BY . MASTER (THIS NODE), * AND SLAVE (REMOTE NODE) TIMEOUTS, ESTABLISHED WITH , WILL BE * USED TO PROCESS THESE REQUESTS. REQUEST CODES: 9,23,24 WILL BE * TRANSMITTED TO THE REMOTE NODE, VIA STREAM #3, TO BE PROCESSED BY * . A LONG MASTER TIMEOUT (APPROX. 20 MIN.) WILL BE ALLOWED, * IN ORDER TO PROVIDE SUFFICIENT TIME FOR SCHEDULE-WITH-WAIT REQUESTS. * * CALLING SEQUENCE: CALL DEXEC(NODE,P1,P2,P3,P4,P5,P6,P7,P8,P9) * * RETURN (X&Y INTACT) : - NORMAL COMPLETION, IF REQUEST CODE SIGN =0 * CONTAIN 'EXEC' RETURN INFORMATION * * : ERROR DETECTED: ABORT & PRINT MESSAGE, IF RC#15 =0 * * : - FOR DETECTED ERRORS, IF RC#15 =1 * CONTAIN ASCII ERROR CODES * * : - FOR NORMAL COMPLETION, IF RC#15 =1 * CONTAIN 'EXEC' RETURN INFORMATION * * NODE - SPECIFIES CALL-EXECUTION LOCATION: LOCAL=-1, REMOTE= 0 TO 32767 * [ CALL WILL ALSO EXECUTE, LOCALLY, IF THE 'LOCAL' NODE IS USED ] * * P1 TO P9 - NORMAL 'EXEC' CALLING PARAMETERS (P1 = REQUEST CODE, ETC.) * * WILL ALLOW THE USER TO PERFORM A COMBINED, INTERACTIVE, * WRITE-READ OPERATION IN A SINGLE CALLING SEQUENCE. SUCH A REQUEST * WILL BE MOST USEFUL FOR EFFICIENTLY COMMUNICATING WITH A REMOTE * OPERATOR. TO SPECIFY AN INTERACTIVE WRITE-READ: REQUEST CODE =1, * CONWORD BIT#11 =1, P8 = WRITE BUFFER ADDRESS, AND P9 = WRITE * BUFFER LENGTH (<=READ BUFFER LENGTH). * * * * RCODE=99: PROGRAM STATUS; P2:PGM.NAME ADDR; P3: OPTIONAL STATUS ADDR. * RTN: #15=1: SHORT I.D.,#3-0: STATUS; =-1:ERROR; ALWAYS=0. SKP ENT DEXEC EXT .ENTR,$LIBR,$LIBX,EXEC,REIO EXT #NODE,D65AB,D65MS,PGMAD SUP DEXEC NOP DST SAVEA SAVE FOR RETURN-PARAMETER CHECKS. STX SAVEX SAVE REGISTER. STY SAVEY SAVE REGISTER. ERA,ALS MOVE TO SIGN BIT. SOC IF THE OVERFLOW BIT IS SET, INA THEN SET BIT #0, ALSO. STA SAVEO SAVE THE STATES OF & . LDA DEXEC GET THE RETURN POINTER. STA EXIT SAVE FOR '.ENTR' PROCESSING. LDX D12 CLA SAX PRAMS-1 INITIALIZE PARAMETER AREA DSX JMP *-3 JMP GETPR GO TO OBTAIN PARAMETER ADDRESSES. SPC 1 CALEX JSB RQLEN,I LOCAL-EXECUTION CALL TO 'EXEC'/'REIO' PRAMS REP 10 PARAMETER ADDRESSES/LOCAL EXECUTION AREA NOP NOP NOP SEZ,RSS LOCAL EXECUTION: ANY ERRORS DETECTED? ISZ EXIT NO. ESTABLISH RETURN TO . STA IRBUF+4 SAVE , TEMPORARILY. JMP RSTEO GO TO RESTORE REGISTERS AND RETURN. SPC 1 EXIT NOP GETPR JSB .ENTR GET DIRECT ADDRESSES DEF PRAMS FOR THE USER-SPECIFIED PARAMETERS. LDA PRAMS+1 GET THE ADDRESS OF THE REQUEST CODE. SZA,RSS WAS THE PARAMETER PROVIDED? JMP ERR NOT PROVIDED, ERROR! LDB PRAMS+1,I GET THE REQUEST CODE. RBL,CLE,ERB REMOVE THE NO-ABORT BIT, AND SAVE IN STB ICODE & ICODE FOR MAPPING & POST PROCESSING. * LDA PRAMS,I GET THE DESTINATION CPA #NODE FOR US ? JMP LOCAL YES. GO TO LOCAL PROCESSING. INA,SZA,RSS IS IT AN ABSOLUTE LOCAL REFERENCE? JMP LOCAL YES. GO TO LOCAL PROCESSING. SKP * SPLOC LDX D15 NOT LOCAL--SET COUNT FOR REQUEST BUFFER. CLA,CCE =0: BUFFER INIT; =1: CONWORD PREP. SAX IRBUF-1 INITIALIZE REQUEST BUFFER DSX JMP *-3 * STA WRLEN SET THE 'NO DATA' STA RDLEN DEFAULT CONDITIONS. * ERA SET THE 'ERROR-RETURN' FLAG FOR STA CONWD THE CALLING SEQUENCE. * LDA PRAMS,I GET THE DESTINATION STA IRBUF+3 SAVE IT IN THE REQUEST * LDA D5 GET THE STREAM TYPE STA IRBUF SET IT IN THE REQUEST * LDA ICODE GET THE REQUEST CODE STA IRBUF+4 INITIALIZE WORD #5 OF REQUEST BUFFER. CPA D99 IF THE REQUEST IS FOR PROGRAM STATUS, JMP PGMST THEN PROCESS IT INDEPENDENTLY. SZA REQUEST CODE =0? ADA UPLIM NO. SEE IF IT'S WITHIN SSA,RSS THE RANGE: 0 < RC < 27 ? JMP ERR ERROR, OUT OF RANGE: RC=0, OR RC>26! LDA PRAMS+2 SZA,RSS WAS A THIRD PARAMETER SPECIFIED? JMP ERIO1 NO, ERROR! * * SELECT THE PRE-PROCESSOR ROUTINE, VIA MAPPED REQUEST CODE. * ADB SUBAD MAP ICODE IN PRE-PROCESS MENU JMP B,I GO DO IT [= THIRD PARAMETER ADDRESS] * SKP * PRE-PROCESSOR JUMP TABLE * SUBAD DEF SUBS-1,I SUBS DEF IC1/2 READ RC=01 DEF IC1/2 WRITE RC=02 DEF ICOD3 CONTROL RC=03 DEF ERR * TRACK ALLOCATION RC=04 DEF ERR * TRACK RELEASE RC=05 DEF ICOD6 PROGRAM TERMINATION RC=06 DEF ERR * PROGRAM SUSPEND RC=07 DEF ERR * SEGMENT LOAD RC=08 DEF SCHW SCHEDULE W/WAIT RC=09 DEF ICD10 SCHEDULE W/O WAIT RC=10 DEF ICD11 TIME RC=11 DEF ICD12 TIME SCHEDULE RC=12 DEF ICD13 I/O STATUS RC=13 DEF ERR * GET STRING RC=14 DEF ERR * GLOBAL TRACK ALLOCATE RC=15 DEF ERR * GLOBAL TRACK RELEASE RC=16 DEF ERR * CLASS READ RC=17 DEF ERR * CLASS WRITE RC=18 DEF ERR * CLASS CONTROL RC=19 DEF ERR * CLASS WRITE/READ RC=20 DEF ERR * CLASS GET RC=21 DEF ERR * SWAP CONTROL RC=22 DEF SCHW QUEUE-SCHEDULE W/WAIT RC=23 DEF SCHW QUEUE-SCHEDULE W/O WAIT RC=24 DEF PARST PARTITION STATUS RC=25 DEF ERR * MEMORY STATUS (RTE-IV) RC=26 * UPLIM ABS SUBAD-* REQUEST CODE LIMIT-VALUE:-(MAX.RCODE +1) HED DEXEC: PRE-PROCESSORS * (C) HEWLETT-PACKARD CO. 1980 * IC1/2 LDA PRAMS+2,I GET CONTROL WORD RC=1,2 STA IRBUF+5 SET IN REQUEST ALF,SLA DOUBLE-BUFFER REQUEST (BIT#12 =1)? JMP ERIO4 YES--ERROR FOR REMOTE REQUESTS! * LDA PRAMS+3 GET BUFFER ADDRESS SZA,RSS WAS IT SUPPLIED? JMP ERIO1 NO BUFFER, ERROR! STA BUFA SET IT IN CALL TO D65MS * LDB PRAMS+4 GET THE BUFFER-LENGTH ADDRESS. SZB,RSS WAS IT SUPPLIED? JMP ERIO1 NO BUFFER LENGTH PROVIDED, ERROR! JSB LENCK GO VERIFY & GET BUFFER WORD COUNT. LDB ICODE GET THE REQUEST CODE. SLB IF THIS IS A READ(1) REQUEST, STA RDLEN THEN CONFIGURE READ LENGTH FOR ; SLB,RSS ELSE, IF THIS IS A WRITE(2) REQUEST, STA WRLEN THEN CONFIGURE 'WRLEN' FOR . * LDA PRAMS+4,I GET LENGTH AGAIN STA IRBUF+6 SAVE IN REQUEST * LDB PRAMS+5 GET ADDR OF 1ST OPT. PARAM SZB,RSS SPECIFIED ? JMP SRQLN NO, SHORT REQUEST * LDA PRAMS+5,I GET FIRST OPTIONAL PARAMETER STA IRBUF+7 CLA PREPARE FOR MISSING PARAMETER. LDA PRAMS+6,I GET SECOND OPTIONAL PARAMETER STA IRBUF+8 * LDB IRBUF+5 GET THE USER'S CONTROL WORD. BLF POSITION WRITE-READ BIT(#11) TO SIGN. SSB,RSS IF THIS IS A WRITE-READ REQUEST: SKIP; JMP NOMOV ELSE, NO ADDITIONAL PROCESSING NEEDED. * LDA RDLEN FORCE ADEQUATE S.A.M TO BE # STA WRLEN ALLOCATED AT RECEIVING NODE. # * LDB PRAMS+6 GET ADDRESS FOR WRITE-BUFFER LENGTH. JSB LENCK GO VERIFY & GET 'WRITE' WORD COUNT. STA LENCK SAVE THE WORD-MOVE LENGTH, TEMPORARILY. CMA,INA,SZA,RSS NEGATE THE COUNT, & IF =0, JMP NOMOV NO NEED TO MOVE THE 'WRITE' BUFFER. * ADA RDLEN IF THE WRITE LENGTH SSA IS GREATER THAN THE 'READ' LENGTH, JMP ERIO4 THEN THE REQUEST IS INVALID! * LDA PRAMS+5 GET THE 'WRITE' BUFFER ADDRESS LDB PRAMS+3 AND THE 'READ' BUFFER ADDRESS. CPA B IF THEY ARE THE SAME, THEN THE JMP NOMOV 'WRITE' DATA NEED NOT BE MOVED; ELSE, MVW LENCK MOVE 'WRITE' DATA TO 'READ' BUFFER. * LDA CONWD GET THE CONTROL WORD. ARS SET THE LONG TIMEOUT BIT(#14). STA CONWD RESTORE CONWD [140000B]. * NOMOV LDA D9 SET REQUEST LENGTH JMP SETLN WE ARE ALL SET SPC 3 ICOD3 LDA A,I GET THE CONTROL WORD RC=03 STA IRBUF+5 SET IT IN THE REQUEST CLA LDA PRAMS+3,I GET OPTIONAL PARAMETER STA IRBUF+6 SET IT IN THE REQUEST SRQLN LDA D7 GO TO ESTABLISH A JMP SETLN REQUEST LENGTH = 7 WORDS. SPC 3 ICOD6 LDB PRAMS+9 IF MORE THAN EIGHT PARAMETERS RC=06 SZB,RSS WERE PASSED, OR IF THE CPB PRAMS+3 'INUM' PARAMETER WAS NOT PASSED, JMP ERIO1 THEN THE CALL IS INCORRECT! * SPC 3 PGMST LDA PRAMS+2 PROGRAM STATUS SHARES SCHED CODE. RC=99 * ICD10 JSB NAMP GO TO PROCESS THE PROGRAM NAME. RC=10 * LDX DM7 BUILD LOOP COUNTER LOOP3 LAX PRAMS+10 GET PARAMETER ADDRESS SZA,RSS IS IT THERE? JMP DON10 NO-EXIT LDA A,I YES, GET ITS VALUE SAX IRBUF+15 STORE INTO REQUEST ISY ADVANCE THE PARAMETER COUNT. ISX PROCESSING STRING-LENGTH PARAMETER? JMP LOOP3 NO, CONTINUE LDB PRAMS+9 YES. GET THE STRING-LENGTH ADDRESS. JSB LENCK GO TO CHECK THE STRING-BUFFER LENGTH. STA WRLEN CONFIGURE WRITE LENGTH FOR . LDB PRAMS+8 GET THE STRING BUFFER ADDRESS. STB BUFA CONFIGURE 'D65MS' TO PASS DATA. * DON10 CYA GET THE PARAMETER COUNT JMP SETLN GO TO ESTABLISH REQUEST LENGTH. SPC 2 ICD11 LDA D13 GO TO ESTABLISH A RC=11 JMP SETLN REQUEST/REPLY LENGTH =13 WORDS. * SKP SPC 2 ICD12 JSB NAMP GO TO PROCESS THE PROGRAM NAME. RC=12 * LDX D3 SET A LOOP COUNTER CLA LDA PRAMS+5,I GET 6TH PARAMETER SSA JMP LOOP1 ADX D3 ABSOLUTE TIME, MORE PARAMETERS * LOOP1 LAX PRAMS+2 GET A PARAMETER ADDRESS SZA,RSS JMP ERSC1 ABSENT, ERROR LDA A,I GET THE PARAMETER SAX IRBUF+7 SET IT IN THE REQUEST IRBF7 EQU *-1 [ DEF IRBUF+7 ] ISY ADVANCE THE PARAMETER COUNT DSX ALL DONE ? JMP LOOP1 NO, CONTINUE * CYA GET THE PARAMETER COUNT. JMP SETLN READY TO SEND * SPC 2 PARST EQU * PARTITION STATUS RC=25 * ICD13 LDA A,I GET CONTROL WORD/PARTITION NUMBER. RC=13 STA IRBUF+5 SET IT IN THE REQUEST * LDA PRAMS+3 DO THEY HAVE ANY ROOM ? SZA,RSS JMP ERIO1 NO, GET OUT! * LDB ICODE GET THE REQUEST CODE. CPB D25 IF THIS IS A PARTITION-STATUS REQUEST, CLB,RSS THEN SKIP TO CHECK FOR ENOUGH PRAMS; JMP IC13X ELSE, OTHER PARAMETERS ARE OPTIONAL. * CPB PRAMS+5 USER PREPARED TO ACCEPT 3 PARAMETERS? JMP ERIO1 NO. THE CALL IS INCORRECT! * IC13X LDA D10 SET THE LENGTH OF THE REQUEST/REPLY. JMP SETLN * SPC 2 SCHW LDB D3 SET THE STREAM-TYPE RC=9/23/24 STB IRBUF FOR THE SCHEDULE-WITH-WAIT MONITOR. RBR,RBR MODIFY THE CONTROL WORD FOR STB CONWD WRITE & LONG TIMEOUT (140000B). JMP ICD10 PROCESS ALL PARAMETERS. SKP * COMMON PRE-PROCESSING SUBROUTINES * LENCK NOP BUFFER LENGTH PROCESSING. LDB B,I GET THE BUFFER LENGTH. SSB,RSS WORDS OR -BYTES? JMP WORDS POSITIVE WORDS. BRS NEGATIVE BYTES--CONVERT TO -WORDS. CMB,INB MAKE THAT +WORDS WORDS LDA B SAVE +WORDS IN FOR RETURN. ADB DM513 CHECK FOR VALIDITY OF LENGTH SSB,RSS JMP ERIO4 >512, TOO MUCH * JMP LENCK,I RETURN. * SPC 1 NAMP NOP CHECK AND MOVE PROGRAM NAME. LDB A,I IF THE FIRST TWO CHARACTERS SZB,RSS ARE NULLS, THEN JMP ERSC5 THE CALL IS INCORRECT! * LDB NAMA GET POINTER TO NAME, IN REQUEST MVW D3 MOVE THE NAME TO THE REQUEST LDY D8 INITIALIZE THE PARAMETER COUNTER. JMP NAMP,I RETURN * SKP * SEND THE REMOTE EXEC REQUEST VIA "D65MS" AND AWAIT REPLY * SETLN STA RQLEN ESTABLISH REQUEST LENGTH FOR . * JSB D65MS CALL MASTER REQUEST INTERFACE ROUTINE DEF *+8 DEF CONWD CONTROL WORD DEF IRBUF REQUEST BUFFER DEF RQLEN REQUEST LENGTH BUFA DEF * CONFIGURED DATA BUFFER ADDRESS--IF ANY. DEF WRLEN WRITE DATA LENGTH -- IF ANY DEF RDLEN READ DATA LENGTH -- IF ANY DEF D15 MAXIMUM REPLY LENGTH EXPECTED =15 WORDS. JMP ERROR * ERROR DETECTED BY "D65MS"--REPORT IT * LDB ICODE IF THE REQUEST CODE WAS FOR A: CPB D11 - TIME REQUEST, THEN THE JMP IPD11 TIME VALUES MUST BE POST-PROCESSED; CPB D13 - DEVICE-STATUS REQUEST, THEN THE DEVICE JMP IPD13 PARAMETERS NEED POST-PROCESSING; CPB D25 - PARTITION-STATUS REQUEST, THEN THE JMP IPD13 PARTITION PARAMETERS NEED PROCESSING; CPB D99 - PROGRAM-STATUS REQUEST, THEN CHECK THE JMP IPD13 STATUS PARAMETER FOR POST-PROCESSING. * SKP * DEXEC POST-PROCESSING: MOVE DATA TO REPLY BUFFER & CHECK FOR ERRORS. * IPOST LDA IRBUF+6 SSA ANY ERROR ? JMP ERROR YES LDA PRAMS+1,I GET ICODE SSA WAS THE NO ABORT BIT SET ? ISZ EXIT YES PUSH RETURN ADDRESS * LDB ICODE GET THE REQUEST CODE. CPB D9 SCHEDULE WITH WAIT? CCA,RSS YES. SET VALUE FOR PARAMETER CHECK. CPB D23 QUEUE SCHEDULE WITH WAIT? CCA,RSS YES. SET VALUE FOR PARAMETER CHECK. JMP ATEND NO. PARAMETER PROCESSING NOT REQUIRED. * LDB SAVEB GET CALLER'S ORIGINAL CONTENTS. CPA IRBUF+5 IF RETURNED PARAMETERS, THEN JMP MVPRM GO TO MOVE PARAMETERS TO I.D. SEGMENT. JMP ATEND+1 IGNORE FROM REPLY BUFFER. * MVPRM LDA IRBF7 GET ADDRESS OF RETURNED PARAMETERS. LDB XTEMP GET ADDRESS OF I.D. SEG. TEMP AREA. JSB $LIBR GAIN ACCESS TO SYSTEM AREA. NOP MVW D5 MOVE PARAMETERS TO CALLER'S I.D. SEG. LDB XTEMP POINT CALLER'S TO PARAMETERS. JSB $LIBX RESTORE PROTECTION DEF *+1 AND RETURN TO DEF ATEND+1 COMPLETE THE PROCESSING. * ATEND LDB IRBUF+5 GET FROM THE REPLY BUFFER. LDX SAVEX RESTORE THE ORIGINAL CONTENTS LDY SAVEY OF BOTH THE & REGISTERS. RSTEO LDA SAVEO GET ORIGINAL STATES FOR & . CLO INITIALIZE OVERFLOW TO CLEAR STATE. SLA,ELA RESTORE , AND IF WAS SET, STO THEN RESTORE IT, ALSO. LDA IRBUF+4 SET FOR RETURN TO CALLER. JMP EXIT,I RETURN TO CALLER SKP IPD11 LDA IRBF7 GET ADDRESS OF THE TIME VALUES. LDB PRAMS+2 GET USER'S BUFFER ADDRESS MVW D5 PASS 5 WORDS TO THE USER LDB IRBUF+12 GET THE CURRENT 'YEAR'. STB PRAMS+3,I PASS THE YEAR (OPTIONALLY) JMP IPOST FINISH THE JOB SPC 1 IPD13 LDA IRBUF+7 GET THE FIRST RETURN-PARAMETER. STA PRAMS+3,I PASS: EQT5/STARTING PAGE/PROG. STATUS CPB D99 IF THE REQUEST WAS FOR PROGRAM STATUS, JMP IPOST THE POST-PROCESSING IS COMPLETE; * LDB IRBUF+8 ELSE, GET THE NEXT RETURN-PARAMETER. STB PRAMS+4,I RC=13: OPTIONAL EQT4; RC=25: NO. PAGES. LDB IRBUF+9 RC=13: OPTIONAL LU STATUS & SUB. CHAN; STB PRAMS+5,I ELSE, IF RC=25: PARTITION STATUS. JMP IPOST GO FINISH SPC 2 * DEXEC ERROR ROUTINES. * ERIO1 LDB "01" INCORRECT,MISSING,OR TOO MANY PARAMETERS JMP GETIO ERIO4 LDB "04" IMPROPER BUFFER SPECIFICATION. GETIO LDA "IO" JMP ERRS ERROR: "IO0X". ERSC1 LDB "01" MISSING SCHEDULEING PARAMETER. JMP GETSC ERSC5 LDB "05" INCORRECT PROGRAM NAME. GETSC LDA "SC" JMP ERRS ERROR: "SC0X" SPC 2 ERR DLD DS06 IMPROPER REQUEST: "DS06". ERRS DST IRBUF+4 ERROR CODE INTO REQ.BUFR ERRA EQU *-1 ERROR MESAGE ADDRESS [DEF IRBUF+4]. SPC 2 ERROR LDA PRAMS+1,I GET ICODE SSA NO ABORT BIT SET ? JMP ATEND YES, IT IS * CCA ADA DEXEC WE HAVE THE ADDRESS OF THE JSB LDB ERRA GET ADDRESS OF THE ERROR MESSAGE JSB D65AB WE DO NOT COME BACK FROM THIS CALL * * "01" ASC 1,01 "04" ASC 1,04 "05" ASC 1,05 "IO" ASC 1,IO "SC" ASC 1,SC DS06 ASC 1,DS06 * HED DEXEC: LOCAL PROCESSING * (C) HEWLETT-PACKARD CO. 1980 LOCAL CPB D99 IF THIS IS A PROGRAM STATUS REQUEST, JMP LOCST THEN PROCESS IT INDEPENDENTLY. CPB D1 IF THIS IS A READ REQUEST, JMP *+2 THEN SKIP FOR FURTHER CHECKING; JMP LCHEK ELSE, CONTINUE LOCAL PROCESSING. LDA PRAMS+2,I GET THE CONWORD. ALF IF THE INTERACTIVE BIT(#11) SSA IS SET, THEN THE REQUEST MUST BE JMP SPLOC PASSED TO FOR PROCESSING. * LCHEK LDB GETPR+1 GET ADDRESS OF DEF'S FOR CALL. LDX DM10 UP TO 9 PARAMETERS; MORE = ERROR; LOCL INB ADVANCE THE RETURN POINTER. LAX PRAMS+11 GET A PARAMETER ADDRESS SZA,RSS PRESENT ? JMP LOC1 NO ISX MORE THAN 10 PARAMETERS PASSED? JMP LOCL NO. CONTINUE CHECKING. JMP ERIO1 YES. TOO MANY--BUFFER MAY BE DESTROYED! * LOC1 STB PRAMS SET THE "DEF RETURN" DLD CCERS GET ERROR-DETECTION INSTRUCTIONS. DST PRAMS,I INSERT AT RETURN LOCATIONS. LDB ICODE GET REQUEST CODE. LDA EXECX GET "EXEC" ADDRESS ADB DM3 SSB,RSS IS IT READ OR WRITE? JMP LOCLN NO, DO "EXEC" CALL LDB PRAMS+5 SZB,RSS OPT.PARAMETERS SPECIFIED? LDA REIOX NO, OK TO USE REIO! LOCLN STA RQLEN SAVE ADDR FOR MP CHECK LDX SAVEX RESTORE THE REGISTER, DLD SAVEA AND THE REGISTERS, JMP CALEX AND GO EXECUTE THE CALL. * LOCST JSB PGMAD GET THE CURRENT STATUS DEF *+2 FOR THE USER-SPECIFIED DEF PRAMS+2,I PROGRAM NAME. SZA DOES THE PROGRAM EXIST? JMP GETST YES. GO TO PROCESS THE STATUS. CCA NO. SET =-1 FOR ERROR INDICATION. STA PRAMS+3,I RETURN ERROR TO USER'S PARAM.--IF ANY. JMP ERXIT TAKE THE ERROR EXIT. * GETST LDA B GET THE PROGRAM'S STATUS WORD. AND D15 ISOLATE THE STATUS BITS(#3-0), AND RAL,ERA SET SHORT I.D. BIT(#15)--IF TRUE. STA PRAMS+3,I RETURN IT TO CALLER'S PARAMETER--IF ANY. LDB PRAMS+1,I GET THE CALLER'S REQUEST CODE. CLE,SSB IF THE NO-ABORT BIT(#15) IS SET, ISZ EXIT THEN SET RETURN POINTER TO , ERXIT CLB CLEAR --IT CONTAINS NO DATA, LDX SAVEX RESTORE THE REGISTER, & RETURN JMP EXIT,I STATUS IN (OR -1:ERROR); =0. HED DEXEC: CONSTANTS AND STORAGE * (C) HEWLETT-PACKARD CO. 1980 * * A EQU 0 B EQU 1 XTEMP EQU 1721B ADDRESS OF I.D. SEGMENT TEMP AREA. * SAVEA NOP SAVEB NOP SAVEO NOP SAVEX NOP SAVEY NOP * * * * MAINTAIN ORDER OF NEXT TWO INSTRUCTIONS * * * * CCERS CCE,RSS CLE * IRBUF BSS 15 DM513 DEC -513 DM10 DEC -10 DM7 DEC -7 DM3 DEC -3 D1 DEC 1 D3 DEC 3 D5 DEC 5 D7 DEC 7 D8 DEC 8 D9 DEC 9 D10 DEC 10 D11 DEC 11 D12 DEC 12 D13 DEC 13 D15 DEC 15 D23 DEC 23 D25 DEC 25 D99 DEC 99 RQLEN NOP ICODE NOP WRLEN NOP RDLEN NOP NAMA DEF IRBUF+5 EXECX DEF EXEC REIOX DEF REIO CONWD NOP * END