ASMB,R,F,B,C,L HED * REAL TIME (RTC) EXEC. CONTROL A-92000-60003-2 REV. B * NAME: RTC * LISTING: A-92000-60003-2 * SOURCE: 92000-80003 * RELOC: 92000-60003 * * ********************************** ****************************** * * THIS PROGRAM CONTAINS INFORMATION WHICH IS PROPRIETARY TO * * * THE HEWLETT-PACKARD COMPANY. IT IS NOT TO BE DISCLOSED TO * * * ANY THIRD PARTIES OR REPRODUCED EXCEPT FOR ARCHIVE PURPOSES * * ********** ****************************************************** NAM RTC,7 92000-60003 750404 REV.B SUP * * * * * ENTRY POINTS FOR SYSTEM * * * ENT $LIST,$XCIC,$CIC,$STRT,EXEC,$TIME ENT $LIBX,$LIBR,.OPSY ENT $T MP1,$TMP2,$TMP3,$TMP4,$TMPW ENT $ER04,$XEQ,$RXIT,$IOER,$WRD2 ENT $L.13,$L.51,$L.55,$R02,$L.10 ENT $CVEQ,$SCLK,$UPIO ENT $PWR5,$MESS,$WORK ENT $L.16,$L.56,$R06 * EXT $ALC,$RTN * * * ***** < EXEC > PR OGRAM DESCRIPTION ***** * * THE PRIMARY FUNCTION OF THIS PROGRAM IS * TO PROVIDE GENERAL CHECKING AND EXAMINATION * OF SYSTEM SERVICE REQUESTS AND TO CALL THE * APPROPRIATE PROCESSING ROUTINE IN OTHER * SECTIONS OF THE REAL-TIME EXECUTIVE. * * THIS PROGRAM IS CALLED BY THE USERS PROGRAM. * * SYSTEM REQUEST FORMAT: * ---------------------- * * THE GENERAL FORMAT OF A SYSTEM REQUEST IS * A BLOCK CONTAINING AN EXECUTABLE INSTRUCTION * TO GAIN ENTRY TO THE EXECUTIVE AN D AN ADDRESS * LIST OF PARAMETERS. THE FIRST PARAMETER IS * A NUMERIC CODE IDENTIFYING THE REQUEST TYPE. * THE LENGTH OF THE PARAMETER LIST VARIES * ACCORDING TO THE AMOUNT OF INFORMATION RE- * QUIRED FOR EACH REQUEST (OR VARIATIONS WITHIN * A SINGLE REQUEST). THIS FORMAT ALLOWS SYSTEM * REQUESTS TO BE SPECIFIED IN A FORTRAN CALL * STATEMENT IN ADDITION TO ASSEMBLY LANGUAGE FORMAT. * * CALL EXEC (P1,P2,...PN) * * OR * * EXT EXEC * JSB EXEC * DEF *+1+N DEFINE EXIT POINT, N= # PARAMETERS * DEF RCODE DEFINE REQUEST CODE * DEF P1 DEFINE PARAMETER LIST, 1 TO N * . * . (PARAMETERS MAY BE INDIRECTLY * . REFERENCED, E.G. DEF P3,I) * DEF PN * -- ERROR RETURN IF NEGATIVE RCODE * -- NORMAL RETURN * - EXIT POINT - * * RCODE DEC N * P1 DEC/OCT/DEF,ETC TO DEFINE A VLAUE * * * SKP * EXEC NOP CLF 0 LDB EXEC * ANALYZE SYSTEM REQUEST * LDA B,I GET EXIT ADDRESS, ADB N1 STB XSUSP,I SAVE SUSPEND LOCATION INB STA RQRTN SAVE IN BASE PAGE STB TEMP1 SAVE REQUEST WORD 2 ADDRESS. CMB,INB SUBTRACT WORD 2 ADDRESS FROM ADA B EXIT ADDRESS. ADA N2 STA RQCNT AND SAVE # OF ACTUAL PARAMETERS. STA B * ADA N9 IS GREATER SSA,RSS THAN JMP RQERR 8. * LDA RQP1A SET (TEMP2) = STA TEMP2 ADDRESS OF RQP1 IN B.P. CMB ISZ TEMP1 SET (TEMP1) = ADDR OF WORD 4 R1 JSB EFFAD GET EFFECTIVE ADDRESS STA TEMP2,I SET IN B.P. ISZ TEMP2 INDEX ISZ TEMP1 ADDRESSES AND INB,SZB PARAMETER COUNT. JMP R1 - CONTINUE - SKP * * CHECK LEGALITY OF REQUEST CODE * LDA RQP1,I GET REQUEST CODE LDB XEQT GET ID SEG A DDR ADB .15 COMPUTE STATUS WORD ADDRESS STB TEMP1 AND SAVE LDB B,I GET STATUS WORD RAL,CLE,ERA PUT aBORT OPTION IB (E) RBL,ERB PUT ABORT OPTION STB TEMP1,I IN STATUS WORD SSB IF ABORT OPTION SET ISZ RQRTN THEN INCREMENT RETURN STA RQP1 SAVE REQUEST CODE SZA,RSS ERROR IF JMP RQERR ZERO CMA,INA SSA,RSS JMP RQERR SUBTRACT FROM # ADA .3 SSA,RSS JMP R3 CPA N10 R3 JMP IOREQ IF REQ=1,2,3,6 OR 13 ITS OK CPA N3 IS THIS EXEC(6)/COMPLETION REQUEST JMP PCOMP YES! JMP RQERR * * SUBROUTINE , COMPUTE EFFECTIVE ADDRESS * EFFAD NOP LDA TEMP1,I GET ADDRESS SZA,RSS ERROR IF JMP RQERR ADDRESS = CPA .1 0 OR 1 JMP RQERR (A OR B REGISTERS) RAL,CLE,SLA,ERA TEST I-BIT AND CLEAR RSS -INDIREC T- JMP EFFAD,I RETURN WITH (A) = ADDRESS. LDA A,I GET NEXT ADDRESS IN INDIRECT JMP EFFAD+2 CHAIN AND PROCESS. SPC 1 .3 DEC 3 N1 DEC -1 N2 DEC -2 N9 DEC -9 RQP1A DEF RQP1 * * * PROGRAM COMPL ETION REQUEST * * ALL PARAMETERS OTHER THAN REQUEST CODE=6 * ARE IGNORED. PROGRAM IS PUT IN DORMANT LIST * * PCOMP LDA XEQT ID SEG ADDR OF CURRENT PROGRAM STA *+3 JSB $LIST DORMANT REQUEST OCT 100 DEF * JMP $XEQ * HED SIMULATED $LIBR AND $LIBX SUBR. A-92000-60003-2 REV. B * *CALLING SEQUENCES: ENTRY TERMINATION * *PRIVILEGED: JSB $LIBR JSB $LIBX * NOP DEF (PROGRA M ENTRY PT) * *RE-ENTRANT: JSB $LIBR JSB $LIBX * DEF TDB DEF TDB * DEC 0 OR 1 * * BASIC ASSUMPTION: PRIVILEGED ROUTINES MAY NO CALL * RE-ENTRANT ROU TINES * * $LIBR NOP CLF 0 OFF THE INTERRUPTS STA TEMPA SAVE A LDA $LIBR,I ISZ $LIBR SET RETURN ADDRESS SZA NOP(PRIV) OR DEF TDB(RE-ENT) JMP RENT R RE-ENTRANT ISZ PRIV ADD ONE TO PRIV FLAG JMP EXITR EXIT RENTR ADA .2 A=DEF TDB+2=RETURN ADDRESS STB TEMPB SAVE B ERB STB TEMPE SAVE E LDB $LIBR ADB N3 B=WORD BEFOR "JSB $LIBR" * =RETURN ADDRESS LDB B,I LOAD RETURN ADDRESS STB A,I AND STORE IN TDB+2 LDB TEMPE ELB RESTORE E LDB TEMPB RESTORE B EXITR LDA TEMPA RESTORE A JMP $LIBR,I RETURN * $LIBX NOP STA TEMPA SAVE A STB TEMPB SAVE B ERB STB TEMPE SAVE E LDA $LIBX,I LDB PRIV IF PRIV = 0? SZB,RSS JMP RENTX THIS IS A RE-ENTRANT ROUTINE ADB N1 ELSE PRIVILEGED STB PRIV SET PRIV=PRIV-1 LDA A,I A=RETURN ADDRESS JMP EXITX EXIT RENTX ADA .2 A=DEF TDB+2 LDA A,I A=ADDRESS IN TDB+2 ISZ $LIBX $LIBX POINTS TO DEC 0 OR 1 ADA $LIBX,I ADD O OR 2 TO RETURN ADDRESS EXITX STA $LIBX CLA CPA PRIV LDA STFO STA STFX LDA TEMPA RESTORE A LDB TEMPE ELB RESTORE E LDB TEMPB RESTORE B STFX NOP JMP $LIBX,I RETURN * PRIV OCT 0 STFO STF 0 * * HED SYSTEM ABORT SECTION A-92000-60003-2 REV. B * * * ROUTINE: < ABORT > * * PURPOSE: THIS ROUTINE PROVIDES FOR REMOVING * A USER PROGRAM FROM EXECUTION USUALLY * AFTER AN ERROR CONDITION IS DETECTED * WHICH PROHIBITS CONTINUED EXECUTION. * THE PROGRAM IS THEN RESTARTED. * * CALL: (P) JMP ABORT * (P+1) DOES NOT RETURN * ABORT JSB IOCL CLEAR I/O DEVICE QUEUE JSB $LIST REMOVE PROGRAM FROM SCHEDULE LIST OCT 100 ABP NOP RSTRT JSB $LIST RESCEDULE BASIC OCT 101 BASA NOP JMP $XEQ * RS1 OCT 25000 RESET VALUE FOR TIME RS2 OCT 177574 $TIME OCT 25000 TIME OF DAY IN NEG 10S OF MS OCT 177574 OCT 33633 DAY 000 YEAR 197X .2 OCT 2 * * HED REAL TIME CLOCK PROCESSOR A-92000-60003-2 REV. B ******************************************************************** * THE REAL TIME CLOCK PROCESSOR SECTION OF HP-2100 REAL TIME* * EXECUTIVE HANDLES ALL TIME DEPENDENT FUNCTIONS: * * 1. INCREMEN T REAL TIME CLOCK VALUES EVERY 10 MILLISECOND. * * 2. RESTARTS THE REAL TIME CLOCK AFTER POWER FAILURES. * ******************************************************************** ** ** THE $SCLK ROUTINE IS CONFIGURED IN THE STARTUP ROUTINE A ND * ** IS CALLED BY THE POWER FAIL ROUTINE. * ** ONCE ENTERED, $SCLK RESTARTS THE SYSTEM CLOCK AND EXITS * ** BACK TO THE POWER FAIL DRIVER. * * * $SCLK NOP LDA .2 SETUP TIME BASE OTATB OTA 0 CONFIGURED TO STC TBG STCTB OCT 1100 CONFIGURED TO STC TBG,C STFTB OCT 1600 CONFIGURED TO STF TBG JMP $SCLK,I EXIT * * * * * THE $CLCK ROUTINE FUNCTIONS AS FOLLOWS: * * THE ROUTINE IS ENTERED EVERY 10 MILLISECOND DUE * * TO TIME BASE GENERATOR INTERRUPTS. * * THE TIME VALUE IS INCREMENTED BY 100MS * * THE TIME-OUT CLOCKS F OR ALL ACTIVE DEVICES ARE * UPDATED. IF ANY DEVICE HAS TIMED-OUT, * RTIOC IS ENTERED TO PROCESS THE CONDITION. * * * $CLCK ISZ $TIME INCREMENT TIME BY 10MS JMP IOTOP ISZ $TIME+1 JMP IOTOP LDA RS1 RESET THE COUNTER LDB RS2 TO THE FULL DAYS WORTH STA $TIME OF TENS OF MS. STB $TIME+1 * * PROCESS DEVICE TIME-OUT CLOCKS * IO TOP LDA EQT# SET NEGATIVE OF CMA,INA NUMBER OF EQT STA TEMP ENTRIES FOR INDEX LDA EQTA POINT TO WORD 15 IOTO2 ADA .14 OF EQT ENTRY LDB A,I LOAD WORKING CLOCK- SZB IS IT ACTIVE ? ISZ A,I YES: INCREMENT IT INA,RSS IT HAS NOT TIMED-OUT JMP $DEVT GO TO TIME-OUT PROCESSOR ISZ TEMP THRU? JMP IOTO2 NO: GO DO NEXT ONE * * * * * * * SKP HED ** R EAL TIME SYSTEM SCHEDULER ** A-92000-60003-2 REV. B * * THE $XEQ SECTION OF THE HP-2100 REAL TIME EXECUTIVE * * PERFORMS THE FOLLOWING FUNCTIONS: * * 1. IDLE LOOP WHEN NO PROGRAMS ARE SCHEDULED OR CA NNOT BE * * EXECUTED. * * * CALLING SEQUENCE * JMP $XEQ * $XEQ LDA SKEDD GET ID SEQ ADDRESS SZA IF ZERO, THEN NO PROG SCHED JMP X0010 GO TO PROCESS SCHED LIST * * NO PROGRAM SCHEDULED--SETUP FOR IDLE LOOP * * * THE IDLE LOOP SECTION CONSISTS OF: * * CLEARING XEQT WORD TO SIGNIFY THAT NO P ROGRAM * * CURRENTLY EXECUTING. * * STORE ADDRESS OF 4 DUMMY WORDS INTO XSUSP-XSUSP+3 * * DUE TO I/O PROCESSING. * * TURN INTERRUPT SYSTEM BACK ON * * JUMP TO * * * * LDA N4 SET XSUSP TO XSUSP+3 TO ADDR STA TMP OF FOU R DUMMY WORDS LDB DSUSP ADDRESS OF XSUSP LDA VSUSP ADDRESS OF IDLE DUMMY WORDS STA B,I INA INB ISZ TMP JMP *-4 CLA STA XEQT CLEAR XEQT ADDRESS VALUE STF 0 TURN ON INTERRUPTS JMP * IDLE LOOP XQDEF DEF XEQT XEQT TABLE ADDRESS DSUSP DEF XSUSP ADDRESS OF XEQT SUSPEND VALUE VSUSP DEF *+1 ADDRESS OF IDLE DUMMY WORDS BSS 4 DUMMY XEQT IDLE WORDS * * THE SWITCHING SEC TION USES THE SCHEDULE LIST TO DETERMINE * * WHICH PROGRAM TO EXECUTE-STARTING FROM TOP OF LIST. * * IF PROGRAM FROM LIST OF LOWER PRIORITY, THEN * * EXECUTION OF CURRENT PROGRAM CONINUES. * * IF PROGRAM FROM LIST OF HIGHER PRIORITY * * EXECUTION SWITCHING TAKES PLACE.* * X0010 STA ZWORK SCHED LIST PROG ID SEG ADDR ADA .6 STA ZPRIO PRIORITY ADDRESS LDA XEQT IS PR OGRAM CURRENTLY EXECUTING SZA,RSS YES! JMP X0040 NO, SO EXECUTE IT LDA XPRIO,I IS CURRENT PRIO=NEW PRIO CMA,INA ADA ZPRIO,I SZA,RSS NO! JMP X0020 YES,CONTINUE EXISTING PROG SSA IS NEW PROG HIGHER PRIO JMP X0040 YES! X0020 LDA XSUSP,I CONTINUE AT PT OF SUSPENSION X0025 STA TEMP RETURN ADDRESS STORED * RESTORE REGISTERS, MEMORY PROTECT, AND TURN ON INTERRUPT SYSTEM LDA XEO,I RESTORE CLO E, SLA,ELA OVERFLOW STF 1 LDA XA,I A AND LDB XB,I B REGISTERS STF 0 TURN ON INTERRUPTS JMP TEMP,I GO TO EXECUTE PROGRAM * * * * * LOAD PROGRAM ID SEGMEN T ADDRESSES INTO XEQT AREA X0040 LDA N12 LOAD PROGRAM TO BE EXECUTED STA TMP INTO XEQT AREA LDA XQDEF LDB ZWORK STB 0,I INA STB 0,I INB ISZ TMP JMP *-4 LDA XSUSP,I C HECK IF PROGRAM SUSPENDED SZA,RSS NO, SO START AT PRIMARY ENTRY LDA XPENT,I SET TO PRIMARY START ADDRESS JMP X0025 GO TO SET FENCE,REGISTERS AND XEQ * * * LLIST DEF DORMT TOP OF LIST ADDRESSES * .14 DEC 14 .15 DEC 15 N12 DEC -12 * HED RTE SCHED.LIST PROCESSOR SECTION A-92000-60003-2 REV. B * * THE $LIST PROCESSOR SECTION OF THE HP-2100 REAL TIME * * EXECUTIVE PROCESSES THE FOLLOWING LIST REQUESTS * * 1. D ORMANT * * 2. SCHEDULE * * 3. OPERATOR SUSPEND * * 4. NON-OPERATOR SUSPEND * * A. I/O * * B. MEMORY AVAILABLE * * * * CALLING SEQUENCE * * * JSB $LIST * * OCT (ADDRESS CODE)(FUNCTION CODE) * DEF (ADDRESS) * * WHERE * FUNCTION CODE * 0 = DORMANT REQUEST * 1 = SCHEDULE REQUEST * 2 = I/O SUSPEND REQUEST * 3 = *****NOT CURRENTLY USED***** * 4 = MEMORY AVAILABEL REQUEST * 6 = OPERATOR SUSPEND REQUEST * 17 = RELINK PROGRAM REQUEST * 10 THRU 16 ARE NOT ASSIGNED * * ADDRESS CODE * 1 = ID SEGMENT ADDRESS * 2 = ASCII PROGRAM NAME * 3 = NOT USED * 4 = ID SEGMENT ADDRESS IN (B) * * * ADDRESS * 1 = ID SEGMENT ADDRESS * 2 = ASCII PROGRAM NAME ADDRESS * * :THIS WORD MUS T NOT BE SUPPLIED * FOR ADDRESS CODE = 4 * SKP $LIST NOP ENTRY/EXIT LDA $LIST,I WORD 1 AND .15 STA $WORK SAVE REQUEST CODE XOR $LIST,I FORM ALF,ALF A DDRESS RAL,RAL CODE CPA .4 SEG. ADDR. IN B-REG.?? JMP XXXX YES, GO PROCESS REQUEST ISZ $LIST STEP TO ADDRESS WORD LDB $LIST,I GET IT TO B CPA .1 DEF TO SEG. JM P XXXX ADDRESS IN B-REG?? * JSB TNAME ADDRESS OF ASCII NAME IN B SZA,RSS ID SEG.ADDR. FOUND??? JMP $LIST,I NO. THIS IS AN ERROR RETURN * * XXXX STB WORK STB WLINK LINKAGE ADDRESS ADB .6 STB WPRIO PRIORITY ADDRESS ADB .2 STB WSUSP ADB .7 STB WSTAT STATUS ADDRESS LDA WSTAT,I GET OLD STATUS LDB $WORK GET REQUEST CODE FROM TEMP STORAGE STB WSTAT,I SET NEW STATUS AND .1 5 RRR 16 SWAP REGISTERS HED LINK UPDATE PROCESSOR A-92000-60003-2 REV. B * * THE LINK PROCESSOR SECTION OF THE HP-2116 REAL TIME * * EXECUTIVE * * 1. REMOVES A PROGRAM FROM A LIST * * AND * * 2. ENTERS THE PROGRAM INTO ANOTHER LIST AT THE PROPER PLACE * * ACCORDING TO PRIORITY LEVEL. * * * * * * WHERE * B = CODE OF REMOVAL LIST * A = CODE OF INSERTION LIST * THE ID SEGMENT IS ASSUM ED TO BE LOCATED IN WORK * AND WLINK AND WPRIO SET * * * * THE REMOVAL OF PROGRAM FROM A LIST CONSISTS OF: * * 1. IF I/O LIST (CODE 2), THEN T HIS IS SPECIAL CASE * * AND DOES NOT REQUIRE REMOVAL. * * 2. IF NULL LIST, THEN ERROR EXIT TAKEN. * * 3. IF FIRST AND ONLY PROGRAM IN LIST, THEN LIST * * VALU E SET TO ZERO. * * 4. IF FIRST PROGRAM IN LIST, BUT NOT THE ONLY * * PROGRAM IN LIST(LINKAGE NOT ZERO), THEN SET LIST * * VALUE TO THE LINKAGE VALUE. * * 5. IF IN MIDDLE OF LIST, THE LINKAGE OF THE ID SEG * * MENT WHICH POINTS TO THE PROGRAM TO BE REMOVED * * IS SET TO THE LINKAGE VALUE OF THE PROGRAM THAT * * IS REMOVED. * * 6. IF LAST PROGRAM IN LIST, THE LINKAGE VALUE OF * * PREVIOUS PROGRAM IN LIST IS SET TO ZERO. * * SZB REMOVAL CODE IN B IGNORE DORMANT CPB .2 I/O LISj REQ UESTS JMP LK100 YES, SEE IF ADDITION. ADB LLIST ADD TOP OF LIST POINTER * LK010 STB TEMP TOP OF REMOVAL LIST LDB B,I GET TOP OF LIST POINTER SZB,RSS END OF LIST? JMP LK150 YES, RETURN CPB WORK MATCHES PROGRAM? RSS YES JMP LK010 NO, KEEP SEARCHING LDB WLINK,I UPDATE LINKAGE TO BYPASS STB TEMP,I THE DELETED ID SEG HED LINK PROC.-ADD PROGRAM TO A LIST A-92000-60003-2 REV. B * * ADD A PROGRAM TO A LIST * * THE ADDITION OF PROGRAM TO A LIST CONSISTS OF: * * 1. IF I/O LIST (CODE 2), THEN THIS IS SPECIAL CASE * * AND NO ADDITION MADE TO LIST. * * 2. IF NULL LIST, THEN LIST VALUE SET TO POINT TO ID * * SEGMENT OF PROGRAM TO BE ADDED AND THE LINKAGE * * SET TO ZERO. * * 3. IF NOT NULL LIST, THE PROGRAM IS I NSERTED INTO * * LIST ACCORDING TO PRIORITY LEVEL AND LINKAGES * * CHANGED TO REFLECT THIS INSERTION. * * 4. IF OF LOWER PRIOR. THAN ANY PROGRAM IN LIST, THEN* * LAST LINKA GE IS SET TO POINT TO THE PROGRAM TO * * BE ADDED AND THE PROGRAM LINKAGE IS CLEARED. * * LK100 SZA,RSS TEST FOR DORMANT REQUEST JMP CLRID CLEAR ID SEG PT OF SUSPENSION CPA .2 I/O LIST REQUESTS JMP LK150 YES, RETURN LK101 ADA LLIST ADD TOP OF LIST POINTER * LK110 STA TEMP SAVE TOP OF LIST POINTER LDA A,I GET POINTER SZA,RSS END OF LIST? JMP LK140 YES, LINK IN NEW PROG CPA WORK IS IT A DUPLIC. PROG? JMP LK150 YES, DUPLIC SO RETURN STA B NOT DUPLIC, COMPARE PRIORITY ADB .6 OF WORK ID SEG LDB B,I AGAINST CMB,INB CURRENT ADB WPRIO,I ID SEG SS B,RSS WORK < CURRENT? JMP LK110 NO, SEE NEXT ONE * LK140 STA WLINK,I LINK THIS TO FOLLOW WORK LDA WORK LINK WORK TO FOLLOW STA TEMP,I PREVIOUS PROG * LK150 ISZ $LIST INCRE RETURN ADDR * CLA *FORCE XEQT RE-LOAD* STA XEQT CLEAR CURRENTLY " EXECUTING" POINTER * JMP $LIST,I FOR RETURN * * * CLEAR PROGRAM ID SEG FOR RESTART * * CLRID STA OPFLG CLEAR OPERATOR FLAG STA WSUSP,I CLEAR SUSPENSION P OINT STA XEQT JMP LK150 * .6 OCT 6 * HED PROGRAM ID SEARCH ROUTINE A-92000-60003-2 REV. B ********************************************************************* ****************PROGRAM ID SEARCH ROUTINE************* *************** * * * * * * * ON ENTRY * * (B)=ADDRESS OF ASCII PROGRAM NAME * * * * ON RETURN * * IF ID SEGMENT FOUND. * * (B)=ADDRESS OF REQUESTED SEGMENT * * (E)=0 * * * * IF ID SEGMENT NOT FOUND. * * (A)=0 * * (E)=1 * * * ********************************************************************* * TNAME NOP ENTRY EXIT CCE SET E FOR ERROR RETURN STB TMP10 ADDRESS OF NAME CHAR 1&2 INB INCREMENT ADDRESS POINTER STB TMP11 ADDRESS OF NAME CHAR 3&4 INB INCREMENT ADDRESS POINTER LDA B,I FETCH CHAR 5&X AND MASKU (OCT 177400) AND OFF X STA TMP5. SAVE CHARACTER 5 SZA LDA KEYWD FETCH TOP OF KEYWORD LIST STA KEY SET FOR SEARCH * * TN005 LDA KEY,I CHECK TOP OF LIST SZA,RSS IF END JMP TNAME,I ERROR RETURN ADA .12 INCREMENT TO NAME CHAR 1&2 LDB A,I FETCH ASCII NAME CHAR 1&2 CPB TMP10,I COMPARE WITH REQUESTED CHAR 1&2 INA,RSS COMPARES JMP TN030 DOES NOT COMPARE-GO TO NEXT PROG. LDB A,I FETCH CHAR 3&4 CPB TMP1 1,I COMPARE WITH REQUESTED CHAR 3&4 INA,RSS COMPARES JMP TN030 DOES NOT COMPARE-GO TO NEXT PROG LDA A,I FETCH CHAR 5 AND MASKU MASK OFF EXTRA CHAR CPA TMP5. COMPARE WITH REQUESTED CHAR 5 JMP TN040 COMPARES * * TN030 ISZ KEY INCREMENT TO NEXT ID SEGMENT JMP TN005 GO COMPARE NEXT PROGRAM * * TN040 LDB KEY,I PLACE ID SEGMENT ADDRESS IN B CLE CLEAR E FOR NORMAL RETURN JMP TNAME,I EXIT * * MASKU OCT 177400 .12 DEC 12 HED MESSAGE PROCESSOR SIMULATOR ROUTINE A-92000-60003-2 REV. B *************************************************************** *************************************************************** * THE MESSAGE PROCESSOR ROUTINE PROVIDES * * COMPATABILITY FOR THE POWER-FAIL DRIVER. * * THEREFORE,$MESS CAN ONLY BE CALLED BY * * DVP43. THE CALL IS THEN MAPPED INTO A CALL * * TO $LIST(TO ABORT AUTOR) . * * PRIOR TO CALLING $LIST, A SEARCH OF ID. * * SEGMENTS IS PERFORMED(VIA A CALL TO TNAME). * * IF AUTOR IS NOT FOUND,A 1 IS RETURNE D TO * * DVP43 IN THE A-REGESTER. IF AUTOR IS FOUND, $LIST * * IS CALLED AND AUTOR IS ABORTED.RETURN IS TO $XEQ. * *************************************************************** ************************************************ *************** $MESS NOP ADA .2 POSITION POINTER TO RRR 16 ASCII NAME(AUTOR) JSB TNAME SEARCH ID SEGMENTS * SEZ,INA AUTOR NOT FOUND JMP $MESS,I RETURN TO P/F ROUTINE * JSB $LIS T ABORT AUTOR OCT 400 ID SEG ADDR. IN B JMP $XEQ EXIT HED SYSTEM START UP A-92000-60003-2 REV. B ******************************************************************** * THE START SECTION: * * CLEARS INTERRUPT SYSTEM. * * SETS THE FENCE REGISTER TO 0. * * CLEARS XEQT. * * CONFIGURES AND STARTS THE SYSTEM CLOCK * * CALCULATES SYSTEM AVAILABLE MEMORY AND * * INITIALIZES THE MEMORY ALOCATION ROUTINE. * * CAN BE ENTERED ONLY ONCE FOR START UP. * * AFTER THAT IT IS USED FOR TEMP STORAGE * ******************************************************************** * * $STRT CLC 0 CLEAR INTERRUPT SYSTEM * WPRIO CLA STA FENCE SET FENCE TO 0 OTA 5B WLINK STA XEQT CLEAR XEQT WORD WSUSP LDB KEYWD FIND THE LAST ID SEGMENT WSTAT LDA B,I IN KEYWORD TABLE BECAUSE WORK INB THE EXECUTBLE PROGRAM ZWORK SZA WILL ALWAYS BE IN THAT ZPRIO JMP WSTAT POSITION. OR ELSE! TEMP ADB N2 TMP LDA B,I GOT THE LAST ID SEGMENT ADDRESS COMPL STA BASA SET UP START UP PROGRAM TEMP1 STA SSP SET UP SUSPEND PTR TEMP2 STA ABP SET UP ABORT POTR * SPC 1 TEMP3 LDA TBG SET UP TIME BASE TEMP4 IOR OTA TEMP5 STA TEMPL TMP5. STA OTATB TEMP6 IOR M1100 TEMP9 STA TEMPW KEY STA STCTB CONFL XOR STFTB SCONF STA STFTB TEMP0 LDA .2 TEMPL OTA 0 SET TBG INTERVAL TO 10MS TEMPW STC 0,C * LDB AVMEM RELEASE AVAIL. STB FWA. CMB,INB MEMORY FOR USE ADB BKORG BY $ALC STB RTN. JSB $RTN FWA. NOP RTN. NOP JMP $ALC GO INITIALIZE MEMORY ALLOCATION ROUTINE $WORK LDA BEGIN RETURN FROM $ALC INI TIALIZATION TMP10 JSB SYSMG OUTPUT "SET TIME" MESSAGE TMP11 JMP RSTRT