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