ASMB,R,L,C
      HED (FMP) XQPRG: SCHEDULE (IMMEDIATE) PROGRAM 
*     NAME:   XQPRG 
*     SOURCE: 92071-18162 
*     RELOC:  92071-16162 
*     PGMR:   H.L.C.
*     MOD:    E.D.B.
* 
*  **************************************************************** 
*  * (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 HEWLETT-PACKARD COMPANY.        * 
*  **************************************************************** 
* 
      NAM XQPRG,7 92071-1X162 REV.2041 800808 
* 
      ENT XQPRG 
* 
      EXT OPEN, CLOSE 
      EXT IDRPL 
      EXT .ENTR, EXEC, RMPAR
      SUP 
      SKP 
* 
*     DESCRIPTION 
* 
*     XQPRG SCHEDULES A PROGRAM FOR EXECUTION (FROM A FILE) 
* 
*     CALLING SEQUENCE: 
* 
*     CALL XQPRG(DCB,CODE,NAME,FIVE,STRNG,LNG,PRTN,ERR,SEC,CR)
* 
*     WHERE:
* 
*     DCB     IS A DATA CONTROL BLOCK (144-WORD ARRAY)
*             TO BE USED BY XQPRG 
* 
*     CODE    IS THE EXEC REQUEST CODE (9, 10, 23, 24, 28)
*             TO BE USED FOR SCHEDULING PROGRAM.
* 
*     NAME    IS EITHER A 5-CHARACTER PROGRAM NAME
*             OR A 6-CHARACTER FILE NAME (3-WORD ARRAY) 
* 
*     FIVE    IS A BUFFER TO PASS TO SCHEDULED PROGRAM (5-WORD ARRAY) 
* 
*     STRNG   IS A STRING TO PASS TO SCHEDULED PROGRAM
* 
*     LNG     IS THE LENGTH OF STRNG (+WORDS OR -CHARS) 
* 
*     PRTN    WILL BE A BUFFER PASSED BACK FROM SCHEDULED PROGRAM 
*             (5-WORD ARRAY)
* 
*     ERR     WILL BE THE ERROR RETURN CODE 
* 
*     SEC     IS THE FILE'S SECURITY CODE 
* 
*     CR      IS THE FILE'S CARTRIDGE REFERENCE 
* 
*     POSSIBLE ERRORS:
* 
*   IERR  PRTN(1)    MESSAGE
*      0            NO ERROR
*      1   23       DUPLICATE PROGRAM 
*      2   14       NO ID SEGMENTS AVAILABLE
*      3   FMP      PROGRAM NOT FOUND 
*                   -6   FILE NOT FOUND 
*                   -32  CARTRIDGE NOT FOUND
*      4   FMP      FILE OPEN ERROR (OTHER THAN -6 OR -32)
*      5   FMP      FILE CLOSE ERROR
*      6   19       RP ERROR (OTHER THAN 14 OR 23)
*      7   0        PROGRAM BUSY
*      8   100000B  PROGRAM WAS SCHEDULED, BUT THEN ABORTED 
*      9   (ASCII)  SCHEDULING ERROR (OTHER THAN 'SC05')
*                   '04' ILLEGAL BUFFER REQUESTED 
*                   '10' NOT ENOUGH SAM TO PASS BUFFER
*     10   0        BAD 'CODE' PARAMETER (SHOULD BE 9,10,23,24, OR 28)
*     11   0        NOT ENOUGH PARAMETERS PASSED
      SKP 
* 
*     ENTRY 
* 
XQPRG NOP 
      LDA DZERO     SET UP DEFAULT PARAMETERS 
      STA NAME
      STA LNG 
      STA SEC 
      STA CR
      STA DUM5+0
      STA DUM5+1
      STA DUM5+2
      STA DUM5+3
      STA DUM5+4
      LDA DDUM5 
      STA P1
      STA STRNG 
      STA RTN 
      STA ERR 
      LDA XQPRG 
      STA DQPRG 
      JMP DQPRG+1 
* 
DCB   NOP 
CODE  NOP 
NAME  DEF ZERO
P1    DEF DUM5
STRNG DEF DUM5
LNG   DEF ZERO
RTN   DEF DUM5
ERR   DEF DUM5
SEC   DEF ZERO
CR    DEF ZERO
* 
DQPRG NOP 
      JSB .ENTR     PASS PARAMETER ADDRESSES
      DEF DCB 
* 
      LDA NAME      CHECK FOR ENOUGH PARAMETERS 
      CPA DZERO     IF NOT ENOUGH PARAMETERS
      JMP ER11       THEN TAKE ERROR EXIT 
      SKP 
* 
*     PROCESS REQUEST 
* 
      LDA CODE,I
      RAL,CLE,ERA   IGNORE NO-ABORT BIT 
      CPA .9
      JMP CODOK     SCHEDULE WITH WAIT
      CPA .10 
      JMP CODOK     SCHEDULE WITHOUT WAIT 
      CPA .23 
      JMP CODOK     QUEUE SCHEDULE WITH WAIT
      CPA .24 
      JMP CODOK     QUEUE SCHEDULE WITHOUT WAIT 
      CPA .28 
      JMP CODOK     REAL-TIME PROGRAM LOAD
* 
      JMP ER10      ILLEGAL FUNCTION CODE 
* 
CODOK IOR =B100000  ADD 'NO-ABORT' BIT TO REQUEST 
      STA CODE
* 
      LDA P1
      INA 
      STA P2
      INA 
      STA P3
      INA 
      STA P4
      INA 
      STA P5
* 
      LDA CR,I      GET CARTRIDGE REFERENCE NUMBER
      SZA           IF SUPPLIED (NOT ZERO), 
      JMP RPIT       THEN TRY RP'ING IT 
* 
TRY   JSB EXEC      TRY TO SCHEDULE THE PROGRAM 
      DEF *+10
      DEF CODE      EXEC CODE, NO ABORT 
      DEF NAME,I    PROGRAM NAME
      DEF P1,I
P2    NOP 
P3    NOP 
P4    NOP 
P5    NOP 
      DEF STRNG,I 
      DEF LNG,I 
      JMP FAIL      SCHEDULE REQUEST FAILED 
* 
      LDB CODE
      CPB NAB28     IF EXEC 28
      JMP EXIT       THEN TAKE NORMAL EXIT
* 
      SZA           IF PROGRAM BUSY,
      JMP ER7        THEN TAKE ERROR EXIT 
* 
      STA TEMP      SAVE ERROR CODE 
* 
      JSB RMPAR     GET RETURNED PARAMETERS 
      DEF *+2 
      DEF RTN,I 
* 
      LDA RTN,I 
      CPA B100K 
      JMP ER8       PROGRAM WAS ABORTED 
      SKP 
* 
*     EXIT
* 
EXIT  CLB           NO ERROR INTENDED 
      JMP EXIT1 
* 
ER1   LDB .1        DUPLICATE PROGRAM NAME
      JMP EREX
* 
ER2   LDB .2        NO ID SEGMENTS AVAILABLE
      JMP EREX
* 
ER3   LDB .3        PROGRAM NO FOUND
      JMP EREX
* 
ER4   LDB .4        FILE OPEN ERROR 
      JMP EREX
* 
ER5   LDB .5        FILE CLOSE ERROR
      JMP EREX
* 
ER6   LDB .6        OTHER RP ERROR
      JMP EREX
* 
ER7   LDB .7        PROGRAM BUSY
      CLA            CLEAR AUXILLARY ERROR
      JMP EREX
* 
ER8   LDB .8        PROGRAM ABORTED 
      JMP EREX
* 
ER9   LDB .9        SCHEDULING ERROR
      JMP EREX
* 
ER10  LDB .10       BAD FUNCTION CODE 
      CLA            CLEAR AUXILLARY ERROR
      JMP EREX
* 
ER11  LDB .11       NOT ENOUGH PARAMETERS 
      CLA 
* 
EREX  STA RTN,I     SAVE FMP ERROR CODE 
* 
EXIT1 STB ERR,I     SAVE XQPRG ERROR CODE 
      JMP DQPRG,I 
      SKP 
* 
*     SCHEDULE REQUEST FAIL SECTION 
* 
FAIL  STB A         MOVE SC ERROR INTO A-REG
      CPA "05       IF PROGRAM NOT FOUND, 
      JMP RPIT       THEN TRY TO RP IT
      JMP ER9        ELSE TAKE ERROR EXIT 
* 
RPIT  JSB OPEN      OPEN THE TYPE 6 FILE
      DEF *+7 
      DEF DCB,I 
      DEF TEMP      ERROR CODE
      DEF NAME,I    FILE NAME 
      DEF .1        NON-EXCLUSIVE OPEN
      DEF SEC,I 
      DEF CR,I
* 
      CPA N6        IF FILE NOT FOUND,
      JMP ER3        THEN EXIT
* 
      CPA N32       IF CARTRIDGE NOT FOUND, 
      JMP ER3        THEN EXIT
* 
      SSA           IF ANY OTHER ERROR, 
      JMP ER4        THEN OPEN FAILED 
* 
      CLA           BUILD PERMANENT/TEMPORARY FLAG
      LDB CODE
      CPB NAB28     EXEC 28, NO ABORT 
      CLA,INA 
      STA TEMP
* 
      JSB IDRPL     'RP' THE PROGRAM
      DEF *+5 
      DEF DCB,I 
      DEF RPERR 
      DEF NAME,I    PROGRAM NAME
      DEF TEMP      TEMPORARY / PERMANENT  FLAG 
* 
      JSB CLOSE     CLOSE THE FILE
      DEF *+3 
      DEF DCB,I 
      DEF TEMP
* 
      SSA           IF ANY ERROR, 
      JMP ER5        THEN TAKE ERROR EXIT 
* 
      LDA RPERR     CHECK FOR IDRPL ERROR 
* 
      CPA .14       IF NO ID SEGMENT AVAILABLE, 
      JMP ER2        THEN TAKE ERROR EXIT 
* 
      CPA .23       IF DUPLICATE PROGRAM NAME,
      JMP ER1        THEN TAKE ERROR EXIT 
* 
      CPA .??       IF PROGRAM ALREADY RP'ED, 
      JMP TRY        THEN TRY TO EXECUTE IT 
* 
      SZA           IF ANY OTHER ERROR, 
      JMP ER6        THEN TAKE ERROR EXIT 
* 
      JMP TRY       SUCCESSFUL 'RP'; TRY AGAIN
      SKP 
* 
*     STORAGE AREA
* 
ZERO  DEC 0 
* 
N6    DEC -6
N10   DEC -10 
N32   DEC -32 
* 
.1    DEC 1 
.2    DEC 2 
.3    DEC 3 
.4    DEC 4 
.5    DEC 5 
.6    DEC 6 
.7    DEC 7 
.8    DEC 8 
.9    DEC 9 
.10   DEC 10
.11   DEC 11
.14   DEC 14
.23   DEC 23
.24   DEC 24
.28   DEC 28
.??   DEC 70
* 
B100K OCT 100000
* 
NAB28 OCT 100034
"05   ASC 1,05
* 
DZERO DEF ZERO
DDUM5 DEF DUM5
* 
RPERR NOP           IDRPL ERROR RETURN CODE 
TEMP  NOP           TEMPORARY STORAGE 
* 
DUM5  BSS 5         DUMMY STORAGE FOR PARAMETER PASSING 
* 
A     EQU 0 
B     EQU 1 
* 
END   EQU * 
* 
      END 
                                                                                      