ASMB,R,L,C HED @RQPR-PROCESS CENTRAL'S REQUESTS. *(C) HEWLETT-PACKARD CO. 1976* NAM @RQPR,1,2 91705-16107 REV.A 760401 SPC 1 ****************************************************************** * * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1976. 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. * ****************************************************************** SPC 1 * * @RQPR * SOURCE: 91705-18107 REV.A * BINARY: 91705-16107 REV.A * JIM HARTSELL * JULY 30, 1974 * MODIFIED BY: CHW (01-06-76) [DERIVED FROM: 91705-18007 REV.B] * * CORE RESIDENT RTE-C SATELLITE PROGRAM SCHEDULED BY * @INTR UPON RECEIPT OF A REQUEST FROM THE CENTRAL STATION. * WHEN SCHEDULED, (B) = ADDR OF REQUEST BUFFER ADDRESS. * ENT @RQPR * EXT EXEC,$LIBR,$LIBX,$MESS,$TYPE EXT %LU,%RQUE,%DLER EXT %ACT SUP A EQU 0 B EQU 1 * * MOVE PARAM VALUES TO INTERNAL BUFFER. * @RQPR LDA %RQUE GET ADDR OF PARMB. STA RQADR SAVE IT. ADA B5 LDB DV0 * JSB MOVE MOVE PARAM VALUES. MD11 DEC -11 * LDA RQADR,I CHECK FOR REMOTE CONTROL CPA B7 OF SATELLITE BY JMP RMCON CENTRAL OPERATOR. * CPA D8 JMP FRCLD FORCED-LOAD. * CPA B5 JMP DEXEC DISTRIBUTED EXEC. * LDA AS.IL RETURN "ILRQ". LDB AS.RQ JMP SAVE * FIND TYPE OF EXEC CALL AND GO EXECUTE IT. * DEXEC LDA V1 REQUEST CODE. IOR SIGN SET SIGN BIT. STA V1 USE FOR LOCAL EXEC CALLS. ELA,CLE,ERA LDB B2 CPA B1 JMP RD/WR READ FROM I/O DEVICE. LDB B1 CPA B2 JMP RD/WR WRITE ON I/O DEVICE. CPA B3 JMP CNTRL I/O CONTROL. CPA D10 JMP SCHED SCHEDULE PROGRAM. CPA D11 JMP TIME TIME OF DAY. CPA D12 JMP XTIME EXECUTION TIME. CPA D13 JMP STAT I/O STATUS. * * ILLEGAL REQUEST CODE. * LDA AS.RQ LDB AS.SP JMP SAVE * * READ OR WRITE SATELLITE I/O DEVICE. * RD/WR ADB SIGN ADD NO-ABORT FLAG TO REQUEST CODE. STB IRW SET FOR SEND/RECV DATA. LDB V3 CHECK LENGTH <512 WORDS. SZB,RSS IF DATA LENGTH =0, JMP RDWRT IGNORE THE COMM. LINE DATA CALL. ADB MD513 SSB,RSS JMP ERLEN ADB D1537 SSB JMP ERLEN CPA B2 JSB DATA WRITE. GET DATA FROM CENTRAL. * RDWRT JSB EXEC READ/WRITE CALL. DEF *+7 DEF V1 RCODE. DEF V2 CONTROL WORD. DEF BUF BUFFER. DEF V3 BUFFR LENGTH. DEF V4 OPT. PARM 1. DEF V5 OPT. PARM 2. NOP STA REPLY+5 SAVE A,B IN REPLY. STB REPLY+6 * LDA V1 ELA,CLE,ERA CPA B1 JSB DATA READ. SEND DATA TO CENTRAL. * JMP REP GO SEND REPLY. * * PERFORM I/O CONTROL ON SATELLITE DEVICE. * CNTRL JSB EXEC DEF *+4 DEF V1 RCODE. DEF V2 CONTROL WORD. DEF V3 OPT. PARM. * NOP JMP SAVE * * SCHEDULE A SATELLITE PROGRAM. * SCHED LDA D10 FORCE "WITHOUT WAIT". IOR SIGN STA V1 * JSB EXEC DEF *+8 DEF V1 RCODE. DEF V2 PROGRAM NAME. DEF V5 OPT. PARAMS. DEF V6 DEF V7 DEF V8 DEF V9 * NOP JMP SAVE * * GET SATELLITE REAL-TIME. * TIME JSB EXEC DEF *+3 DEF V1 RCODE. DEF REPLY+7 TIME ARRAY. * NOP JMP SAVE * * SCHEDULE SATELLITE PROGRAM AT SPECIFIED TIME. * XTIME LDA V2 IF PROG NAME = 0, SZA JMP XTIM1 LDA AS.SC "SC02" ERROR. LDB AS.02 JMP SAVE * XTIM1 LDA V7 FIND WHICH VERSION. SSA,RSS JMP ABS * JSB EXEC INITIAL OFFSET VERSION. DEF *+6 DEF V1 RCODE. DEF V2 PROGRAM NAME. DEF V5 RESOLUTION CODE. DEF V6 EXECUTION MULTIPLE. DEF V7 INITIAL OFFSET. * NOP JMP SAVE * ABS JSB EXEC ABSOLUTE START TIME VERSION. DEF *+9 DEF V1 RCODE. DEF V2 PROGRAM NAME. DEF V5 RESOLUTION CODE. DEF V6 EXECUTION MULTIPLE. DEF V7 HOURS. DEF V8 MINUTES. DEF V9 SECONDS. DEF V10 TENS OF MILLISECONDS. * NOP JMP SAVE * * GET I/O STATUS OF SATELLITE I/O DEVICE. * STAT JSB EXEC DEF *+5 DEF V1 RCODE. DEF V2 CONTROL WORD. DEF REPLY+7 STATUS WORD 1. DEF REPLY+8 STATUS WORD 2. * NOP JMP SAVE * ERLEN LDA AS.DS ILLEGAL LENGTH. LDB AS.03 * * SAVE A,B REGISTERS IN REPLY BUFFER. * SAVE STA REPLY+5 STB REPLY+6 * * COPY HEADER WORDS FROM PARMB TO REPLY. * REP LDA RQADR PARMB IS IN @PTPQ MODULE. LDB DFREP JSB MOVE DEC -5 * * SEND REPLY TO CENTRAL STATION. * SNREP LDA REPLY SET REPLY AND IOR RPLFL FRIENDLY BITS(#14,#11). STA REPLY LDA MD11 INITIALIZE THE STA RTRY RETRY COUNTER. LDB RQADR GET ADDRESS OF THE REQUEST BUFFER. ADB D33 POINT TO THE TIME-TAG WORD. DLD B,I GET THE ORIGINAL TIME-TAGS, DST REPLY+33 AND ADD THEM TO THE REPLY. * SEND JSB EXEC TRANSMIT REQUEST ONLY. DEF *+7 DEF IWRT WRITE--NO ABORT. DEF %LU DEF REPLY DEF D35 DEF DUMMY DEF DUMMY JMP DOWN REPORT THE ERROR--IF ANY. * DST XSTAT (DEBUG AID ONLY) SLA,RAR JMP REXIT NO ERRORS. * SWP AND B40 ISOLATE EQT12 BIT#5 (REMOTE BUSY). CLE,ERB MOVE BUSY-REJECT BIT(EQT5 #1) TO . SEZ,SZA,RSS BUSY-REJECT/REMOTE BUSY OR BOTH? JMP DOWN NEITHER--DRIVER ERROR! SEZ,RSS WAS THE REMOTE SYSTEM BUSY? JMP BZWT YES. GO TO WAIT ONE SECOND. LDB MD8 80 MSEC DELAY IF DRIVER BUSY SZA,RSS WAS IT SIMULTANEOUS REQUEST? JSB WAIT NO, DRIVER BUSY, WAIT AWHILE JMP SEND RETRY * BZWT ISZ RTRY O.K. TO RE-TRY? RSS YES. DO SO VIA TIME LIST. JMP DOWN NO. REPORT THE ERROR! LDB MD100 1 SEC DELAY JSB WAIT JMP SEND TIME'S UP--TRY AGAIN. * SKP * DOWN JSB EXEC DEF *+5 DEF B2 DEF B1 DEF DSMES DEF DSLEN * * EXIT. * REXIT JSB EXEC TERMINATE. DEF *+2 DEF B6 * DSMES ASC 11,DS01 RQPR: REPLY ERROR * * THE CENTRAL OPERATOR HAS SENT AN ASCII RTE-C COMMAND. * PROCESS THE COMMAND THRU RTE-C AS IF IT WAS ENTERED * FROM THE LOCAL OPERATOR CONSOLE, AND SEND ANY REPLY * MESSAGES BACK TO CENTRAL. * RMCON BSS 0 IF SATELLITE OPERATOR IS LDB OPFLG,I CURRENTLY ENTERING A COMMAND, SZB,RSS REJECT CENTRAL OPERATOR. JMP CLJOB * LDA BZYMS LDB DFREP ADB B6 JSB MOVE DEC -6 LDA D12 JMP STLEN * CLJOB JSB JOB PROCESS COMMAND. STLEN STA REPLY+5 STORE +CHAR COUNT IN REPLY. CLA,INA STA REPLY+4 SET REPLY SWITCH. LDA RQADR RETURN SUB-STREAM. INA LDA A,I STA REPLY+1 LDA B7 STORE STREAM. STA REPLY * JMP SNREP GO SEND REPLY. * SKP * CENTRAL HAS SENT A FORCED-LOAD OR PLIST REQUEST. * SCHEDULE APLDR WITH WAIT, THEN SEND REPLY. * FRCLD LDA D9 IOR SIGN STA V5 * JSB EXEC SCHEDULE APLDR WITH WAIT. DEF *+8 DEF V5 DEF APLDR DEF V0 SCHED PARAMS. DEF V1 DEF V2 DEF V3 DEF V4 * NOP STA REPLY+5 SAVE A,B IN REPLY. STB REPLY+6 * SZA,RSS IF APLDR NOT DORMANT, JMP STATS LDA MD70 SEND BUSY ERROR CODE. STA REPLY+7 JMP SCAN * STATS LDA %DLER STORE APLDR ERROR NUMBER LDB DFREP IN REPLY BUFFER. ADB B7 JSB MOVE DEC -4 * * DON'T SEND REPLY IF A PARMB IS PENDING. * SCAN LDA %ACT HEAD OF ACTIVE LIST. LOOP2 LDA A,I ADDR OF NEXT ENTRY. SZA,RSS JMP REP NO PARMB PENDING. * STA V10 SAVE ENTRY ADDRESS. INA LDA A,I FLAG WORD. CPA B2 JMP DELY ENTRY IS PENDING. LDA V10 NOT PENDING. JMP LOOP2 GO TO NEXT ENTRY. * DELY LDB MD1 SUSPEND FOR SHORT TIME. JSB WAIT JMP SCAN GO LOOK AGAIN. * WAIT NOP STB OFSET JSB EXEC DEF *+6 DEF D12 DEF B0 DEF B1 DEF B0 DEF OFSET * CPB OFSET JMP WAIT,I JMP @RQPR * OFSET NOP * SKP * * SUBR TO PASS COMMAND TO RTE-C AS IF ENTERED LOCALLY. * JOB NOP JSB $LIBR DISABLE INTERRUPTS. NOP LDA JOB LDB HERE SZB,RSS JMP THERE CLA JSB $LIBX DEF *+1 DEF EXIT THERE STA RTN LDB 1735B SZB JMP EXIT1 STA HERE STA JOB LDA RQADR ADA B6 STA PNTR1 LDA TYPE SSA,RSS JMP *+3 ELA,CLE,ERA LDA A,I ADA MD22 STA PNTR2 LDA V0 CMA,INA ARS STA CNTR JSB XFER LDB V0 JSB $MESS SZA,RSS JMP EXIT LDB A,I STB SAVE1 ADB MD1 BRS STB CNTR INA STA PNTR1 LDA DFREP ADA B6 STA PNTR2 JSB XFER LDA SAVE1 CMA,INA EXIT CLB STB HERE EXIT1 JSB $LIBX DEF RTN XFER NOP LOOP1 LDA PNTR1,I STA PNTR2,I ISZ PNTR1 ISZ PNTR2 ISZ CNTR JMP LOOP1 JMP XFER,I RTN NOP HERE NOP TYPE DEF $TYPE * * SUBROUTINE TO SEND OR RECEIVE DATA. * DATA NOP LDA RQADR PARMB ADDRESS ADA D33 POINT TO TIME-TAGS STA TITAG SAVE THEIR ADDRESS INA ADDRESS FOR THE STA TITAG+1 DATA ONLY DRIVER CALL LDA B300 GET DRIVER MODE-BITS FOR DATA-ONLY. IOR %LU INCLUDE THE LOGICAL UNIT NUMBER. STA CONWD SAVE THE CONFIGURED CONTROL WORD. LDA V3 GET BUFFER LENGTH. STA XBUFL SSA,RSS JMP DATA1 CMA,INA NEGATIVE. MAKE POSITIVE INA WORD COUNT. ARS STA XBUFL * DATA1 JSB EXEC DEF *+7 DEF IRW READ WRITE--NO ABORT. DEF CONWD DEF BUF DEF XBUFL TITAG NOP NOP JMP DATER DRIVER ERROR--INFORM CENTRAL. * SLA JMP DATA,I RETURN IF NO ERRORS. * DATER LDA AS.DS ERROR. RETURN "DS02". LDB AS.02 JMP SAVE * * SUBROUTINE TO MOVE N WORDS. * MOVE NOP DST BUF LDB MOVE,I GET COUNT LOOP LDA BUF,I STA BUF+1,I ISZ BUF ISZ BUF+1 INB,SZB JMP LOOP ISZ MOVE JMP MOVE,I SKP * * CONSTANTS AND WORKING STORAGE. * DV0 DEF V0 V0 NOP # PARAMS IN USER CALL. V1 NOP REQUEST CODE. V2 NOP V3 NOP V4 NOP V5 NOP V6 NOP V7 NOP V8 NOP V9 NOP V10 NOP * B0 OCT 0 B1 OCT 1 B2 OCT 2 B3 OCT 3 B5 OCT 5 B6 OCT 6 B7 OCT 7 B40 OCT 40 B300 OCT 300 IWRT OCT 100002 CONWD NOP D8 DEC 8 D9 DEC 9 D10 DEC 10 D11 DEC 11 DSLEN EQU D11 D12 DEC 12 D13 DEC 13 D33 DEC 33 D35 DEC 35 D1537 DEC 1537 DUMMY NOP MD1 DEC -1 MD8 DEC -8 MD22 DEC -22 MD70 DEC -70 MD100 DEC -100 MD513 DEC -513 OPFLG OCT 1735 AS.SC ASC 1,SC AS.DS ASC 1,DS AS.02 ASC 1,02 AS.03 ASC 1,03 AS.IL ASC 1,IL AS.RQ ASC 1,RQ AS.SP ASC 1, APLDR ASC 3,APLDR BZYMS DEF *+1 ASC 6,REMOTE BUSY RQADR NOP IRW NOP XBUFL NOP RPLFL OCT 44000 SIGN OCT 100000 RTRY NOP XSTAT OCT 0,0 DFREP DEF REPLY REPLY BSS 35 BUF BSS 512 PNTR1 EQU BUF PNTR2 EQU BUF+1 CNTR EQU BUF+2 SAVE1 EQU BUF+3 * SIZE EQU * * END @RQPR