cdc:nos2.source:nam5871:xsttp
Table of Contents
XSTTP
Table Of Contents
Source Code
- XSTTP.txt
- *DECK XSTTP
- IDENT XSTTP
- SST
- EXT ABORT
- EXT XTRACE
- ENTRY XSTTP
- *#
- *1DC XSTTP
- * 1. PROC NAME AUTHOR DATE
- * XSTTP Y.J.POLAK 81/03/03
- * 2. FUNCTIONAL DESCRIPTION
- * THIS ROUTINE IS RESPONSIBLE FOR ACCESSING THE VARIOUS STATE
- * TABLES.IT IS CALLED BY EACH OF THE FOUR STATE TABLE
- * PROCESSORS (NCSTTP,NBSTTP,HCSTTP,HBSTTP).EACH ONE OF THESE
- * SPECIFIES THE STATE TABLE TO BE PROCESSED BY PASSING THE
- * PROPER ORDINAL.
- * 3. METHOD USED
- * THE STATE TABLES ARE DEFINED BY USING THE FOLLOWING MACROES
- * (DEFINED IN COMDECK STBLMAC):INITBL,STATE,TRIG,ENDTBL.
- * INITIALLY INITBL IS INVOKED WITH THE STATE TABLE NAME OF 2
- * CHARACTERS,THE MAXIMUM STATE NUMBER AND THE MAXIMUM TRIGGER
- * TRIGGER NUMBER.
- * NEXT FOR EACH STATE ALL LEGAL TRIGGERS ARE DEFINED,BY
- * INVOKING A STATE MACRO WITH THE STATE NUMBER FOLLOWED BY
- * THE TRIG MACRO FOR EACH LEGAL TRIGGER IN THAT STATE.THE TRIG
- * MACRO HAS THE FOLLOWING PARAMETERS (IN THIS ORDER):
- * TRIGN - TRIGGER NUMBER
- * NEWST - NEW STATE AS A RESULT OF THIS TRIGGER
- * ACTION- ACTION ORDINAL OF CODE TO BE PERFORMED IN THIS CASE
- * TRIGC - TRIGGER NO, TO BE SENT TO CORRESP. CONNECTION STATE
- * TABLE
- * TRIGB - TRIGGER NO. TO BE SENT TO CORREP. BLOCK PROTOCOL
- * STATE TABLE.
- * EXCEPT TRIGN ALL PARAMETERS MAY BE LEFT BLANK BY ADJACENT
- * COMMAS,IN WHICH A NO CHANGE VALUE (NOCHG) WILL BE FILLED IN.
- * ALL STATES MUST BE DEFINED IN ORDER STARTING FROM THE SPECIAL
- * NO CONNECTION STATE (STATX),THEN STATE 0,STATE 1 AND SO ON.
- * ALL STATES MUST HAVE AT LEAST ONE LEGAL TRIGGER.FINALLY THE
- * MACRO ENDTBL MUST BE INVOKED WITH THE 2-CHAR NAME OF THE
- * STATE TABLE.
- * THE STATE TABLES MACROES ARE DEVISED SUCH THAT ONLY LEGAL
- * TRIGGERS NEED TO BE SPECIFIED.ONLY IN THESE CASES ARE ANY
- * PARAMETERS STORED IN THE STATE TABLE.AT THE SAME TIME A
- * BITMAP IS CONSTRUCTED WITH ONE BIT PER POSSIBLE CASE (BOTH
- * LEGAL AND ILLEGAL).IF THE TRIGGER IS DEFINED THAT MEANS THAT
- * THE CASE IS LEGAL AND THE APPROPRIATE BIT IS SET.IF TRIGGER
- * NUMBERS ARE SKIPPED THIS MEANS THAT THOSE CASES ARE ILLEGAL
- * AND THE APPROPRIATE BITS ARE CLEARED.
- * WHEN ROUTINE XSTTP IS CALLED IT CALCULATES THE FOLLOWING
- * BASED ON THE CALL PARAMETERS:
- * (CURRENT STATE NO.*(MAX TRIGGER VALUE+1))+CURRENT TRIGGER NO
- * THIS IS THE APPROPRIATE BIT-NUMBER IN THE BITMAP FOR THIS
- * CASE.IF IT IS CLEAR THE CASE IS ILLEGAL AND ZEROES ARE
- * RETURNED IN THE RESPONSE.IF IT IS SET THEN THE CASE IS
- * LEGAL AND THE RESPONSE PARAMETERS ARE TO BE LOCATED IN THE
- * STATE TABLE.THIS IS DONE BY COUNTING THE ONE BITS PRECEDING
- * THIS CASE IN THE BITMAP,USING THE POPULATION COUNT
- * MACHINE INSTRUCTION.BASED ON THE NUMBER OF PRECEDING LEGAL
- * CASES THE PARAMETER-LOCATION IN THE ACTUAL STATE TABLE IS
- * CALCULATED (EACH LEGAL CASE OCCUPIES 30 BITS,CURRENTLY).
- * FINALLY THAT INFO IS PASSED IN THE RESPONSE PARAMETER.
- * 4. ENTRY PARAMETERS
- * ORD STATE TABLE ORDINAL (0-3)
- * CURST CURRENT STATE OF CONNECTION OR 76B IF NO
- * CONNECTION EXISTS
- * TRIGNO CURRENT TRIGGER NUMBER
- * 5. EXIT PARAMETER.
- * STATRSP RESPONSE WORD CONTAINING THE FOLLOWING FIELDS
- *
- * LEGALB BOOLEAN(LEFTMOST BIT)
- * IF FALSE THEN THE TRIGGER WAS NOT LEGAL
- * THE CURRENT STATE
- * IF TRUE THEN THE TRIGGER WAS LEGAL FOR THE
- * CURRENT STATE AND THE FOLLOWING FIELDS (6-
- * BITS EACH) ARE CONTAINED IN THE RIGHMOST
- * 30 BITS OF STATRSP:
- *
- * NEWST NEW STATE OF CONNECTION
- * ACTION ACTION INDICATOR OF CODE TO BE PERFORMED
- * TRIGC TRIGGER TO CORRESPONDING CONNECTION
- * STATE TABLE
- * TRIGB TRIGGER TO CORRESPONDING BLOCK PROTOCOL
- * STATE TABLE
- * RES RESERVED (77B)
- *
- *
- * A VALUE OF NOCHG(77B) INDICATES THAT NO STATE CHANGE,
- * ACTION OR TRIGGER IS NEEDED
- * A SPECIAL VALUE OF STATX (76B) FOR THE NEW STATE IMPLIES
- * THERE IS NO CONNECTION ANYMORE
- *
- * 6. COMDECKS CALLED.
- * MACDEF CYBERDEFS STBLDEF INPARU STBLMAC
- * 7. ROUTINES CALLED.
- * ABORT
- * 8. DAYFILE MESSAGES
- * NONE DIRECTLY
- * VIA ABORT: ERR IN STATE TABLE PROCESSOR CALL (XSTTP)
- *
- *#
- *CALL MACDEF
- *CALL CYBERDEFS
- *CALL INPARU
- *CALL STBLDEF
- *CALL STBLMAC
- *CALL STATTBL
- XSTTP SUBR =
- IFEQ DEBUG,1,6
- SX6 A1
- SA6 TEMP
- SX1 XNAME
- RJ XTRACE
- SA1 TEMP
- SA1 X1
- SB7 WL
- SB1 1
- SA2 X1 PAR LIST,PICK UP STTBL ORDINAL
- SA2 X2+TBLPNTR POINTER TABLE INDEXED BY ORDINAL
- SB2 X2 SAVE LEGBM ADDRESS
- MX7 48
- LX2 12 SHIFT POINTER TABLE ENTRY
- BX1 -X7*X2 MAXIMUM TRIGGER VALUE
- SX1 X1+B1 ADD ONE
- LX2 12 SHIFT AGAIN AND PICK UP
- BX3 -X7*X2 LENGTH OF LEGAL CASE BITMAP IN WORDS
- SB3 X3 SAVE IN B3
- SA3 A1+B1 NEXT PAR:CURRENT STATE
- SA5 X3
- SX4 X5-STATX
- ZR X4,NOCONN IF STATE OF NO CONNECTION SKIP
- SX3 X5+B1 ADD ONE FOR NO CONN STATE
- IX4 X1*X3 CALCULATE CUR STATE*MAX TRIGVAL+1
- NOCONN SA3 A3+B1 NEXT PAR:TRIGNO
- SA5 X3
- IX3 X5+X4 ADD IT TO X4
- SB4 X3 SAVE IN B4 (CURST*(MAXTR+1))+TRIGNO
- SB6 B0
- LT B4,B7,FNDWD IF VALUE LESS THAN 60 THEN FOUND WORD
- LOOP SB4 B4-B7 OTHERWISE SUBTRACT 60 AND
- SB6 B6+B1 KEEP WORD COUNT IN B6
- GE B4,B7,LOOP MORE TO GO
- FNDWD GE B6,B3,ERR ILLEGAL VALUE IN B4
- SA1 B2+B6 FETCH PROPER LEGBM WORD
- LX5 X1,B4 SHIFT TO PROPER BIT
- NG X5,LEGVAL LEGAL TRIGGER,JUMP
- MX6 0 ILLEGAL TRIGGER
- SA3 A3+B1 SET EXIT PAR TO 0
- SA6 X3 STORE AND EXIT
- EQ XSTTPX
- LEGVAL MX6 1 COUNT NO OF PRECEDING ENTRIES
- AX7 B4,X6 BUILD MASK FOR ALL PRECEDING BITS
- BX5 X7*X1 X1 CONTAINS LEGBM WORD
- CX3 X5 NUMBER OF ONES IN WORD
- EQ B6,NOMORE JUMP IF NO PRECEDING WORDS
- MORE SB6 B6-B1 CHECK PRECEDING WORDS IN LEGBM
- SA1 B2+B6 PREVIOUS WORD
- CX5 X1 COUNT ONES
- IX3 X3+X5 ADD TO RESULT
- GT B6,MORE MORE TO GO
- NOMORE SX3 X3-1 SUBTRACT ONE FOR ORIG ENTRY
- * X3 NOW HOLDS THE NUMBER OF PRECEDING LEGAL ENTRIES IN STTBL
- * BASED ON 30 BIT ENTRY LENGTH WE DIVIDE BY 2 IN ORDER TO
- * CALCULATE THE PROPER ADDRESS
- AX4 B1,X3
- SB3 X4
- LX5 B1,X4 MULT BACK BY 2AND CALCULATE LOGICAL
- BX4 X5-X3 DIFFERENCE TO KNOW SIDE OF ENTRY
- * X2 STILL HOLDS POINTER TABLE WORD FOR PROPER ORDINAL
- LX2 18 SHIFT TO POSITION
- SA1 X2+B3 FETCH PROPER STTBL WORD
- NZ X4,RIGHTSD TAKE PROPER SIDE
- LX1 30 LEFT OR
- RIGHTSD MX7 30 RIGHT
- BX5 -X7*X1 MASK THE 30 BITS AND ADD
- BX7 X5+X6 HIGH ORDER BIT TO INDICATE
- SA3 A3+B1 LEGAL VALUE
- SA7 X3 STORE IN EXIT PARAMETER
- EQ XSTTPX
- ERR SX1 ERRMSG
- RJ ABORT ABORT WITH PROPER ERROR MESSAGE IN DAYFILE
- ERRMSG DIS ,* ERROR IN XSTTP CALL*
- XNAME DATA L*XSTTP*
- TEMP BSS 1
- END
cdc/nos2.source/nam5871/xsttp.txt ยท Last modified: 2023/08/05 17:23 by Site Administrator