ASMB,R,Q,C
*     NAME:   XQPRG 
*     SOURCE: 92070-18162 
*     RELOC:  92070-1X162 
*     PGMR:   HLC 
* 
* 
*  **************************************************************** 
*  * (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 XQPRG,7  92070-1X162  REV.1941  790807  
      ENT XQPRG 
      EXT EXEC,.ENTR,OPEN,IDRPL,CLOSE 
      EXT RMPAR 
* 
*     CALLING SEQUENCE: 
*       CALL XQPRG(DCB,CODE,NAME,FIVE,STRNG,LNG,PRTN,ERR,SEC,CR)
* 
*     WHERE:
*       DCB   = 144 WORD BUFFER FOR USE BY XQPRG
*       CODE  = 9, 10, 23, 24, OR 28, SIMILAR TO EXEC REQUEST CODE
*       NAME  = 5-CHAR PROGRAM NAME OR 6-CHAR FILE NAME 
*       FIVE  = 5 WORD BUFFER TO PASS TO SCHEDULED PROGRAM
*       STRNG = STRING TO PASS TO SCHEDULED PROGRAM 
*       LNG   = LENGTH OF STRING (+WORDS OR -CHARS) 
*       PRTN  = 5 WORD BUFFER PASSED BACK FROM SCHEDULED PROGRAM
*       ERR   = ERROR CODE
*       SEC   = FILE SECURITY CODE
*       CR    = FILE CARTRIDGE REFERENCE
* 
* 
*     ERRORS: 
*       IERR =0     SUCCESS 
*            =1     DUPLICATE PROGRAM 
*                   (PRTN=23) 
*            =2     NO ID SEGMENTS AVAILABLE
*                   (PRTN=14) 
*            =3     PROGRAM NOT FOUND 
*                   (PRTN=-6 OR -32)  
*            =4     FILE OPEN ERROR (OTHER THAN NOT FOUND)
*                   (PRTN= FMP ERROR NUMBER)
*            =5     FILE CLOSE ERROR
*                   (PRTN= FMP ERROR NUMBER)
*            =6     RP ERROR OTHER THAN 'DUPLICATE PROGRAM' 
*                   OR 'NO ID SEGMENTS AVAILABLE':
*                     PRTN=19  --  PROGRAM NOT SET UP FOR CURRENT SYSTEM
*                     PRTN=39  --  PROGRAM TOO LARGE FOR PARTITION
*                     PRTN=40  --  ATTEMPT TO OVERLAY REAL-TIME PROGRAM 
*            =7     PROGRAM BUSY
*            =8     PROGRAM WAS SCHEDULED, BUT THEN ABORTED 
*                   (PRTN=100000B)
*            =9     NOT ENOUGH SYSTEM MEMORY EVER TO PASS STRING
*                   (PRTN='10' (ASCII)=30460B)    (OR SCHEDULING ERROR
*                   OTHER THAN 'SC05'  --  LAST 2 CHARS IN PRTN)
*            =10    BAD 'CODE' PARAMETER  (SHOULD BE 9,10,23,24, OR 28) 
* 
A     EQU 0 
B     EQU 1 
* 
* 
DCB   NOP 
CODE  NOP 
NAME  NOP 
P1    NOP 
STRNG NOP 
LNG   NOP 
RTN   NOP 
ERR   NOP 
SEC   NOP 
CR    NOP 
* 
XQPRG NOP 
      JSB .ENTR     PASS PARAMETER ADDRESSES
      DEF DCB   
      LDA CODE,I
      RAL,CLE,ERA   IGNORE NO-ABORT BIT 
      CPA =D9 
      JMP CODOK     SCHEDULE WITH WAIT
      CPA =D10
      JMP CODOK     SCHEDULE WITHOUT WAIT 
      CPA =D23
      JMP CODOK     QUEUE SCHEDULE WITH WAIT
      CPA =D24
      JMP CODOK     QUEUE SCHEDULE WITHOUT WAIT 
      CPA =D28
      JMP CODOK     REAL-TIME PROGRAM LOAD
* 
      LDB =D10
      JMP EROUT     ILLEGAL 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
* 
TRY   JSB EXEC      TRY TO SCHEDULE THE PROGRAM 
      DEF RTN1
      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 
RTN1  JMP FAIL      SCHEDULE REQUEST FAILED 
      STA RTN,I 
* 
      CLB 
      LDA CODE
      CPA =B100034  EXEC 28, NO ABORT 
      JMP EROUT 
* 
      LDB =D7 
      LDA RTN,I 
      SZA 
      JMP EROUT     PROGRAM BUSY
* 
      JSB RMPAR     GET RETURNED PARAMETERS 
      DEF *+2 
      DEF RTN,I 
      CLB 
      LDA RTN,I 
      CPA =B100000
      LDB =D8       PROGRAM WAS ABORTED 
EROUT STB ERR,I     SAVE ERROR CODE 
      STB A 
      JMP XQPRG,I 
* 
* 
* 
* 
FAIL  CPB =A05
      JMP OPEN6     NO ID SEGMENT 
      STB RTN,I 
      LDB =D9       
      JMP EROUT     NOT ENOUGH SYSTEM MEMORY FOR STRING 
* 
OPEN6 JSB OPEN      OPEN THE TYPE 6 FILE
      DEF RTN2
      DEF DCB,I 
      DEF RTN,I     ERROR CODE
      DEF NAME,I    FILE NAME 
      DEF D1        NON-EXCLUSIVE OPEN
      DEF SEC,I 
      DEF CR,I
RTN2  LDB =D3 
      CPA =D-6
      JMP EROUT     FILE NOT FOUND
      CPA =D-32 
      JMP EROUT     CARTRIDGE NOT FOUND 
      INB 
      SSA 
      JMP EROUT     OPEN FAILED 
* 
      CLA 
      LDB CODE
      CPB =B100034  EXEC 28, NO ABORT 
      CLA,INA 
      STA TEMP  
      JSB IDRPL     'RP' THE PROGRAM
      DEF RTN3
      DEF DCB,I 
      DEF RPERR     ERROR CODE
      DEF NAME,I    PROGRAM NAME
      DEF TEMP      TEMPORARY / PERMANENT  FLAG 
RTN3  JSB CLOSE     CLOSE THE FILE
      DEF *+3 
      DEF DCB,I 
      DEF RTN,I 
      LDB =D5 
      SSA 
      JMP EROUT     CLOSE ERROR 
* 
      LDA RPERR     CHECK FOR IDRPL ERROR 
      STA RTN,I 
      LDB =D2 
      CPA =D14
      JMP EROUT     NO ID AVAILABLE 
      CLB,INB 
      CPA =D23
      JMP EROUT     DUPLICATE PROGRAM 
      LDB =D6 
      SZA 
      JMP EROUT     FILE NOT SET UP FOR CURRENT SYSTEM
      JMP TRY       SUCCESSFUL 'RP', TRY AGAIN
* 
* 
* 
* 
D1    DEC 1 
TEMP  NOP 
RPERR NOP 
      END 
                                                                                                