IDENT GETUTAB
ENTRY GETUTAB
SYSCOM B1
TITLE GETUTAB - GET USER TABLE.
*COMMENT GETUTAB - GET USER TABLE.
COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
GUT SPACE 4,10
*** GETUTAB - GET USER TABLE.
*
* G.K. CHACE. 83/02/03.
GUT SPACE 4,10
*** GETUTAB READS A PACKED SMFEX USER TABLE ENTRY INTO
* AN EXPANDED VECTOR. THE SYMPL CODE IN SMFEX MUST AGREE
* WITH THIS ALGORITHM AS TO FORMAT OF EACH ARRAY.
*
* THE VECTOR HAS ONE WORD PER VALUE. ONE-BIT VALUES
* ARE IN THE SIGN BITS. LARGER FIELDS ARE AT RIGHT OF WORD.
GUT SPACE 4,15
*** CALLING SEQUENCE.
*
* *SYMPL* CALL -
*
* GETUTAB(UTAB,VECTOR);
*
* UTAB = PACKED USER TABLE.
* FIRST WORD OF USERTABLE ENTRY
* FOURTEEN 1-BIT FIELDS
* FOUR UNUSED BITS
* THREE SIX-BIT FIELDS
* TWO TWELVE BIT FIELDS
* SECOND WORD OF USERTABLE ENTRY
* TWO TWELVE BIT FIELDS
* ONE THIRTY-BIT FIELD
* SIX UNUSED BITS
* VECTOR = ONE WORD PER FIELD.
GUT SPACE 4,10
** GETUTAB - GET USER TABLE.
*
* ENTRY (A1) = FWA OF FORMAL PARAMETER LIST.
*
* USES X - 0, 2, 3, 4, 6, 7.
* A - 2, 3, 4, 6, 7.
* B - 1, 2, 7.
GETUTAB SUBR ENTRY/EXIT
SB1 1
SA2 A1+B1 GET ADDR SECOND PARM
SA3 X1 READ FIRST TABLE WORD
SA4 X1+B1 READ SECOND (LAST) TABLE WORD
SB7 X2 ADDRESS OF VECTOR
SB2 14 LOOP COUNT
MX0 1 MASK
LOOP1 BX7 X3*X0 ISOLATE ONE BIT TO SIGN
LX3 1 BRING UP ANOTHER BIT
SA7 B7 STORE IT
SB2 B2-B1 DECREMENT LOOP COUNT
SB7 B7+B1 INCREMENT VECTOR POINTER
NZ B2,LOOP1 UNTIL ALL 14 FLAGS COPIED
LX3 4+6 WASTE UNUSED BITS AND GET 6 BITS TO RIGHT
MX0 -6 MASK TO ISOLATE 6 BITS AT BOTTOM
SB2 3 LOOP COUNT
LOOP2 BX7 -X0*X3 ISOLATE 6 BITS AT RIGHT
LX3 6 BRING UP NEXT 6 BITS
SA7 B7 STORE IT
SB2 B2-B1 DECREMENT LOOP COUNT
SB7 B7+B1 INCREMENT VECTOR POINTER
NZ B2,LOOP2 UNTIL ALL 3 FIELDS COPIED
LX3 6 ROTATE TO ALIGN 12 BITS AT BOTTOM
MX0 -12 MASK TO ISOLATE 12 BITS AT BOTTOM
BX6 -X0*X3 ISOLATE FIRST 12-BIT FIELD
LX3 12 BRING UP LAST 12-BIT FIELD OF FIRST WORD
SA6 B7 SAVE
BX7 -X0*X3 ISOLATE LAST DATA OF FIRST WORD
SA7 A6+B1 SAVE LAST DATA FROM FIRST WORD
LX4 12 BRING FIRST DATA OF SECOND WORD TO RIGHT
BX6 -X0*X4
LX4 12 BRING SECOND 12-BIT FIELD OF SECOND WORD
BX7 -X0*X4
SA6 A7+B1
SA7 A6+B1
LX4 30 BRING 30-BIT FIELD TO BOTTOM
MX0 -30
BX7 -X0*X4
SA7 A7+B1
EQ GETUTAB RETURN
END
IDENT SAVUTAB
ENTRY SAVUTAB
SYSCOM B1
TITLE SAVUTAB - SAVE USER TABLE ENTRY.
*COMMENT SAVUTAB - SAVE USER TABLE ENTRY.
COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
SUT SPACE 4,10
*** SAVUTAB - SAVE USER TABLE ENTRY.
*
* G.K. CHACE. 83/02/03.
SUT SPACE 4,10
*** *SAVUTAB* PRODUCES A COMPACTED USER TABLE FOR *SMFEX*
* FROM THE EXPANDED VECTOR FORMAT. THE DEFINITIONS AND CODE
* IN SMFEX MUST AGREE WITH THIS ROUTINE.
*
* THE EXPANDED TABLE USES ONE WORD PER ENTRY, WITH ONE-BIT
* FIELDS AT THE SIGN BITS, ALL LARGER FIELDS RIGHT-JUSTIFIED.
SUT SPACE 4,15
*** CALLING SEQUENCE.
*
* *SYMPL* CALL -
*
* SAVUTAB(UTAB,VECTOR);
*
* UTAB = PACKED USER TABLE.
* FIRST WORD OF USERTABLE ENTRY
* FOURTEEN 1-BIT FIELDS
* FOUR UNUSED BITS
* THREE SIX-BIT FIELDS
* TWO TWELVE BIT FIELDS
* SECOND WORD OF USERTABLE ENTRY
* TWO TWELVE BIT FIELDS
* ONE THIRTY-BIT FIELD
* SIX UNUSED BITS
* VECTOR = ONE WORD PER FIELD.
*
* ORDINAL = TERMINAL MODEL NUMBER (1-5).
* MNEMONIC = USER, VKX, 722, VT100, OR Z19.
SUT SPACE 4,10
** SAVUTAB - SAVE USER TABLE ENTRY.
*
* ENTRY (A1) = FWA OF FORMAL PARAMETER LIST.
*
* USES X - 0, 1, 2, 7.
* A - 1, 2, 7.
* B - 1, 2, 7.
SAVUTAB SUBR ENTRY/EXIT
SB1 1
SA2 A1+B1 GET ADDR SECOND PARM
SB7 X1
SA1 X2 START FETCHING VECTOR WORDS
SA2 A1+B1
MX7 0 CLEAR ACCUMULATOR
MX0 1 FIELD ISOLATION MASK
SB2 7 LOOP COUNTER
LOOP1 BX1 X1*X0 PURIFY DATA
BX7 X7+X1 ACCUMULATE A FLAG
SA1 A2+B1 PREFETCH ANOTHER
LX7 1 MAKE ROOM FOR MORE DATA
BX2 X2*X0
BX7 X7+X2 ACCUMULATE ANOTHER FLAG
SA2 A1+B1 PREFETCH ANOTHER
SB2 B2-B1 DECREMENT LOOP COUNT
LX7 1 MAKE ROOM FOR MORE DATA
NZ B2,LOOP1 UNTIL 14 FLAGS COPIED
LX7 4+6 ALLOW FOUR SPARES, ALLOCATE 6 BITS
MX0 -6 FIELD ISOLATION MASK
BX1 -X0*X1 PURIFY DATA - FIRST 6-BIT FIELD
BX7 X7+X1 ACCUMULATE
SA1 A2+B1 PREFETCH ANOTHER
LX7 6 ROOM FOR NEXT
BX2 -X0*X2 SAME SEQUENCE - SECOND 6-BIT
BX7 X7+X2
SA2 A1+B1
LX7 6
BX1 -X0*X1 SAME - THIRD AND LAST 6-BIT FIELD
BX7 X7+X1
SA1 A2+B1
LX7 12 NOW MAKE ROOM FOR 12-BITS
MX0 -12 FIELD ISOLATION MASK
BX2 -X0*X2 ISOLATE FIRST 12-BIT FIELD
BX7 X7+X2
SA2 A1+B1
LX7 12
BX1 -X0*X1 SECOND 12-BIT FIELD
BX7 X7+X1
SA1 A2+B1
SA7 B7 STORE FIRST PACKED WORD
MX7 0 CLEAR NEW ACCUMULATOR
BX2 -X0*X2 ISOLATE NEXT 12-BIT FIELD
BX7 X7+X2
SA2 A1+B1
LX7 12
BX1 -X0*X1 ISOLATE LAST 12-BIT FIELD
BX7 X7+X1
LX7 30 ALLOCATE 30 BITS
MX0 -30 ISOLATION MASK
BX2 -X0*X2 ISOLATE 30-BIT DATA FIELD
BX7 X7+X2
LX7 6 FINAL BIT ALIGNMENT IN SECOND WORD
SA7 A7+B1
EQ SAVUTAB RETURN
END
IDENT FINDBIT
ENTRY FINDBIT
SYSCOM B1
TITLE FINDBIT - FIND BIT ON IN SMFEX BITMAP.
*COMMENT FINDBIT - FIND BIT ON IN SMFEX BITMAP.
COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
FBO SPACE 4,10
*** FINDBIT - FIND BIT ON IN SMFEX BITMAP.
*
* G.K. CHACE. 83/02/03.
FBO SPACE 4,10
*** *FINDBIT* SEARCHES AN *SMFEX* BITMAP TO FIND THE FIRST BIT
* WHICH IS ON. WE CHECK UP TO *LIMIT* WORDS TO FIND A BIT ON.
* IF WE DONT FIND ANY, WE RETURN -1. THE NORMAL FUNCTION
* RESULT IS A BIT INDEX. THE FORMAT IS 32 BITS PER WORD,
* STARTING 12 BITS FROM THE LEFT. THE BOTTOM 16 BITS MUST BE
* ZERO. THIS FORMAT ALLOWS EFFICIENT SCANNING OF THE WORD
* WITH NORMALIZE AND ALSO ALLOWS EASY SPLITTING OF THE BIT
* POSITION INTO WORD OFFSET AND BIT-WITHIN-WORD OFFSET. THE
* RESULT MUST BE SATISFIED BY BOTH BITMAP AND BITMASK.
FBO SPACE 4,10
*** CALLING SEQUENCE.
*
* *SYMPL* CALL -
*
* INDEX=FINDBIT(LIMIT,BITMAP,BITMASK);
*
* LIMIT = NUMBER OF WORDS IN BITMAP AND BITMASK.
* BITMAP = ALLOCATION BITS.
* BITMASK = ADDITIONAL BITS AND-ED WITH BITMAP.
FBO SPACE 4,10
** FINDBIT - FIND BIT ON IN SMFEX BITMAP.
*
* ENTRY (A1) = FWA OF FORMAL PARAMETER LIST.
*
* USES X - ALL.
* A - 1, 2, 3, 4.
* B - 1, 6, 7.
FINAL SB6 B6+B1 CORRECT WORD OFFSET
SX7 B7-B6 COMPUTE WORD OFFSET
LX7 5 MULT BY 32 TO MERGE BIT OFFSET
IX6 X6+X7 FINAL RESULT
FINDBIT SUBR ENTER HERE
SB1 1
SA2 A1+B1 X2->BITMAP
SA1 X1 X1=LIMIT
SA3 A2+B1 X3->BITMASK
MX0 1 GEN 2000 MASK
LX0 59
SB6 X1 REMEMBER
SB7 X1 DITTO
SA1 X2 START PREFETCH BOTH ARRAYS
SA3 X3
SA2 A1+B1
SA4 A3+B1
LOOP BX6 X1*X3 MERGE MAP,MASK IN SCRATCH REG
SA1 A2+B1 PREFETCH MORE
SA3 A4+B1 DITTO
BX7 X2*X4 SAME SEQUENCE
SA2 A1+B1
SA4 A3+B1
BX6 X6+X0 MERGE 2000 DUMMY EXPONENTS
BX7 X7+X0
NX5 X6,B4 SEARCH FOR BIT ON
SB6 B6-B1 CHECK LOOP EXPIRED
MI B6,EXHAUST
SX6 B4 TENTATIVE RESULT
NZ X5,FINAL IF REALLY FOUND ONE
NX5 X7,B4 SAME SEQUENCE
SB6 B6-B1
MI B6,EXHAUST
SX6 B4
NZ X5,FINAL
EQ LOOP AND GO AROUND
EXHAUST SX6 -1
EQ FINDBIT
END
IDENT SPREAD
ENTRY SPREAD
SYSCOM B1
TITLE SPREAD - SPREAD RETURN JUMP WORDS TO ENTRIES.
*COMMENT SPREAD - SPREAD RETURN JUMP WORDS TO ENTRIES.
COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
SRJ SPACE 4,10
*** SPREAD - SPREAD RETURN JUMP WORDS TO ENTRIES.
*
* G.K. CHACE. 83/02/03.
SRJ SPACE 4,10
*** *SPREAD* IS A SPECIAL-PURPOSE ROUTINE FOR THE SMFEX
* SUBSYSTEM. SMFEX CALLS SPREAD JUST BEFORE INVOKING A NEW
* USER SUBTASK, TO RESTORE ALL RETURN JUMP WORDS TO THEIR
* PREVIOUS STATE. WE ASSUME THE STACK WAS USED IN THE GATHER
* ROUTINE EARLIER TO SAVE THE RJ WORDS. THE STACK CONSISTS
* OF SINGLE-WORD ENTRIES. THE UPPER 30 BITS ARE THE
* MACHINE-GENERATED *EQ* INSTRUCTION USED TO RETURN OUT OF
* THE SUBROUTINE. THE LOWEST 18 BITS ARE THE ADDRESS OF THE
* SUBROUTINE.
SRJ SPACE 4,15
*** CALLING SEQUENCE.
*
* *SYMPL* CALL -
*
* SPREAD(RSTKPTR,RENTSTK);
*
* RSTKPTR = NUMBER OF WORDS IN STACK ARRAY.
* RENTSTK = THE STACK ARRAY BUILT BY GATHER ROUTINE.
SRJ SPACE 4,10
** SPREAD - SPREAD RETURN JUMP WORDS TO ENTRIES.
*
* ENTRY (A1) = FWA OF FORMAL PARAMETER LIST.
*
* USES X - 1, 2, 3, 4, 6, 7.
* A - 1, 2, 3, 4, 6, 7.
* B - 1, 2, 4, 7.
SPREAD SUBR
SB1 1
SA2 A1+B1 GET ADDR STACK
SA1 X1 GET VALUE STACK LEVEL
SB2 B1+B1 CONSTANT 2
SB4 B2+B2 CONSTANT 4
SB7 X1 LOOP CONTROL
SA1 X2 START PREFETCH
SA2 X2+B1
SA3 A1+B2
SA4 A2+B2
LOOP BX6 X1
SB7 B7-B1
SA1 A1+B4 PREFETCH ANOTHER
ZR B7,SPREAD CHECK IF DONE
SA6 X6
BX7 X2
SB7 B7-B1
SA2 A2+B4
ZR B7,SPREAD
SA7 X7
BX6 X3
SB7 B7-B1
SA3 A3+B4
ZR B7,SPREAD
SA6 X6
BX7 X4
SB7 B7-B1
SA4 A4+B4
ZR B7,SPREAD
SA7 X7
EQ LOOP
END
IDENT GATHER
ENTRY GATHER
SYSCOM B1
TITLE GATHER - GATHER RETURN JUMP WORDS FROM ENTRIES.
*COMMENT GATHER - GATHER RETURN JUMP WORDS FROM ENTRIES.
COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
GRJ SPACE 4,10
*** GATHER - GATHER RETURN JUMP WORDS FROM ENTRIES.
*
* G.K. CHACE. 83/02/03.
GRJ SPACE 4,10
*** *GATHER* SCANS AN ARRAY WHICH STACKS THE ADDRESSES OF THE
* ENTRY POINTS FOR ALL ACTIVE *SYMPL* SUBROUTINES. THE SMFEX
* SUBSYSTEM AND FSE EDITOR ARE ONLY CAPABLE OF KEEPING ENTRY
* POINT ADDRESSES, AND CANNOT KEEP RETURN ADDRESSES, DUE TO
* THE CODE-GENERATION LIMITATIONS OF THE SYMPL COMPILER.
* SMFEX CALLS GATHER WHEN HALTING ONE USER SUBTASK. GATHER
* SCANS THE VECTOR OF ENTRY ADDRESSES, AND READS UP THE
* RETURN JUMP WORDS AT EACH ENTRY POINT, THEN PACKS THE
* RETURN JUMP BACK INTO THE VECTOR. THE ENHANCED VECTOR THEN
* CONTAINS ENTRY/EXIT CODE IN THE TOP 30 BITS OF EACH ENTRY,
* AND THE ADDRESS FOR RESTORATION OF THAT CODE, IN THE LOWER
* 18 BITS. SMFEX SAVES THIS VECTOR AND USES THE *SPREAD*
* ROUTINE TO RESTORE THE ENTRY POINTS FOR RESUMPTION OF THE
* SUBTASK.
GRJ SPACE 4,10
*** CALLING SEQUENCE.
*
* *SYMPL* CALL -
*
* GATHER(RSTKPTR,RENTSTK);
*
* RSTKPTR = NUMBER OF WORDS IN STACK.
* RENTSTK = THE REENTRANCY STACK.
GRJ SPACE 4,10
** GATHER - GATHER RETURN JUMP WORDS FROM ENTRIES.
*
* ENTRY (A1) = FWA OF FORMAL PARAMETER LIST.
*
* USES X - 0, 1, 2, 3, 4, 6, 7.
* A - 1, 2, 3, 4, 6, 7.
* B - 1, 2, 6, 7.
GATHER SUBR
SB1 1
SA2 A1+B1 GET ADDR STACK
SA1 X1 GET VALUE STACKLEVEL
SB2 B1+B1 CONSTANT 2
SB6 X2+B2 BRACKETED BY PRE AND POST PROCESSES
SB7 X1 LOOP CONTROL
SA1 X2 START PREFETCH
SA2 X2+B1
SA3 A1+B2
SA4 A2+B2
MX0 30
LOOP SA1 X1 NOW LOAD RJ-GENERATED WORDS
SA2 X2
SA3 X3
SA4 X4
SX6 A1 PREPARE TO MERGE HALVES
SX7 A2
BX1 X1*X0 PURIFY
BX2 X2*X0
IX6 X6+X1 MERGE ENTRY AND RETURN ADDRESSES
IX7 X7+X2
SA1 B6+B2 PREFETCH MORE FROM STACK
SB7 B7-B1 LOOPCONTROL
SA2 A1+B1
ZR B7,GATHER WHEN DONE
SB7 B7-B1
SA6 B6-B2
ZR B7,GATHER
SA7 A6+B1
SB6 B6+B2
SX6 A3 PREPARE OTHER MERGES
SX7 A4
BX3 X3*X0
BX4 X4*X0
IX6 X6+X3
IX7 X7+X4
SA3 B6+B2
SB7 B7-B1
SA4 A3+B1
ZR B7,GATHER
SB7 B7-B1
SA6 B6-B2
ZR B7,GATHER
SA7 A6+B1
SB6 B6+B2
EQ LOOP
END
IDENT READECS
ENTRY READECS
SYSCOM B1
TITLE READECS - READ EXTENDED MEMORY BLOCK.
*COMMENT READECS - READ EXTENDED MEMORY BLOCK.
COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
REM SPACE 4,10
*** READECS - READ EXTENDED MEMORY BLOCK.
*
* G.K. CHACE. 83/02/03.
REM SPACE 4,10
*** *READECS* READS A BLOCK OF TEXT FROM THE EXTENDED MEMORY
* FIELD LENGTH AND REPORTS THE SUCCESS OR FAILURE.
REM SPACE 4,15
*** CALLING SEQUENCE.
*
* *SYMPL* CALL -
*
* READECS(NWORDS,FROMECS,TOCM,ERRFLG);
*
* NWORDS = NUMBER OF WORDS IN BLOCK.
* FROMECS = EXTENDED MEMORY ARRAY OF TEXT.
* TOCM = CENTRAL MEMORY ARRAY TO RECEIVE TEXT.
* ERRFLG = SUCCESS/FAILURE RESULT.
* 0 = SUCCESSFUL ON FIRST TRY.
* 1 = SUCCESSFUL AFTER ONE RETRY.
* 2 = SUCCESS AFTER WORD-BY-WORD RETRY.
* 3 = FAILURE.
REM SPACE 4,10
** READECS - READ EXTENDED MEMORY BLOCK.
*
* ENTRY (A1) = FWA OF FORMAL PARAMETER LIST.
*
* USES X - 0, 1, 2, 3, 4, 6.
* A - 0, 1, 2, 3, 4, 6.
* B - 1, 2, 7.
TOP SA6 X4 STORE RESULT FLAG
SA0 B2 RESTORE A0
READECS SUBR ENTRY/EXIT
SB1 1
SA2 A1+B1 ->FROMECS
SA3 A2+B1 ->TOCM
SA4 A3+B1 ->ERRFLG
SA1 X1 =NWORDS
SB2 A0 SAVE FOR LANGUAGES
BX0 X2 ->ECS
SA0 X3 ->CM
SB7 X1 =NWORDS
MX6 0 NORMAL ERRFLAG
RE B7 FAST TRANSFER
EQ ERROR IF TROUBLE
EQ TOP NORMAL EXIT
ERROR SX6 X6+B1 BAD NEWS
RE B7 TRY ENTIRE BLOCK AGAIN
EQ ERROR2 IF SECOND ERROR
EQ TOP NORMAL EXIT
ERROR2 SX6 X6+B1 WORSE NEWS
SX1 B1 60-BIT ONE
LOOP RE B1 TRY SINGLE WORD LOOP
EQ ERROR3 TERRIBLE
SA0 A0+B1 INCREMENT POINTERS
IX0 X0+X1
SB7 B7-B1 DECREMENT WORD COUNT
GT B7,LOOP
EQ TOP
ERROR3 SX6 X6+B1 HIGHER ERROR LEVEL
EQ TOP
END
IDENT WRITECS
ENTRY WRITECS
SYSCOM B1
TITLE WRITECS - WRITE EXTENDED MEMORY BLOCK.
*COMMENT WRITECS - WRITE EXTENDED MEMORY BLOCK.
COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
WEM SPACE 4,10
*** WRITECS - WRITE EXTENDED MEMORY BLOCK.
*
* G.K. CHACE. 83/02/03.
WEM SPACE 4,10
*** *WRITECS* COPIES A BLOCK OF TEXT FROM CENTRAL MEMORY TO
* THE EXTENDED MEMORY FIELD LENGTH.
WEM SPACE 4,15
*** CALLING SEQUENCE.
*
* *SYMPL* CALL -
*
* WRITECS(NWORDS,TOECS,FROMCM,ERRFLG);
*
* NWORDS = NUMBER OF WORDS IN BLOCK.
* TOECS = EXTENDED MEMORY ARRAY TO RECEIVE TEXT.
* FROMCM = CENTRAL MEMORY ARRAY OF TEXT.
* ERRFLG = SUCCESS/FAILURE RESULT.
* 0 = SUCCESSFUL ON FIRST TRY.
* 1 = SUCCESSFUL AFTER ONE RETRY.
* 2 = SUCCESS AFTER WORD-BY-WORD RETRY.
* 3 = FAILURE.
WEM SPACE 4,10
** WRITECS - WRITE EXTENDED MEMORY BLOCK.
*
* ENTRY (A1) = FWA OF FORMAL PARAMETER LIST.
*
* USES X - 0, 1, 2, 3, 4, 6.
* A - 0, 1, 2, 3, 4, 6.
* B - 1, 2, 7.
TOP SA6 X4 STORE RESULT FLAG
SA0 B2 RESTORE A0
WRITECS SUBR ENTRY/EXIT
SB1 1
SA2 A1+B1 ->FROMCM
SA3 A2+B1 ->TOECS
SA4 A3+B1 ->ERRFLG
SA1 X1 =NWORDS
SB2 A0 SAVE FOR LANGUAGES
BX0 X3 ->ECS
SA0 X2 ->CM
SB7 X1 =NWORDS
MX6 0 NORMAL ERRFLAG
WE B7 FAST TRANSFER
EQ ERROR IF TROUBLE
EQ TOP NORMAL EXIT
ERROR SX6 X6+B1 BAD NEWS
WE B7 TRY ENTIRE BLOCK AGAIN
EQ ERROR2 IF SECOND ERROR
EQ TOP NORMAL EXIT
ERROR2 SX6 X6+B1 WORSE NEWS
SX1 B1 60-BIT ONE
LOOP WE B1 TRY SINGLE WORD LOOP
EQ ERROR3 TERRIBLE
SA0 A0+B1 INCREMENT POINTERS
IX0 X0+X1
SB7 B7-B1 DECREMENT WORD COUNT
GT B7,LOOP
EQ TOP
ERROR3 SX6 X6+B1 HIGHER ERROR LEVEL
EQ TOP
END
IDENT FLDLEN
ENTRY FLDLEN
SYSCOM B1
TITLE FLDLEN - CHANGE FIELD LENGTH.
*COMMENT FLDLEN - CHANGE FIELD LENGTH.
COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
CFL SPACE 4,10
*** FLDLEN - CHANGE FIELD LENGTH.
*
* G.K. CHACE. 83/02/03.
CFL SPACE 4,10
*** *FLDLEN* CHANGES THE JOB*S FIELD LENGTH.
CFL SPACE 4,15
*** CALLING SEQUENCE.
*
* *SYMPL* CALL -
*
* FLDLEN(CMWORDS);
*
* CMWORDS = DESIRED FIELD LENGTH.
CFL SPACE 4,10
** FLDLEN - CHANGE FIELD LENGTH.
*
* ENTRY (A1) = FWA OF FORMAL PARAMETER LIST.
*
* USES X - 2
* A - 2
*
* MACROS MEMORY.
FLDLEN BSS 1 STAT,WORDS
SA2 X1 GET DESIRED SIZE
MEMORY CM,,R,X2
EQ FLDLEN
END
IDENT TESTECS
ENTRY TESTECS
SYSCOM B1
TITLE TESTECS - TEST FOR ECS AVAILABILITY.
*COMMENT TESTECS - TEST FOR ECS AVAILABILITY.
COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
TEC SPACE 4,10
*** TESTECS - TEST FOR ECS AVAILABILITY.
*
* G.K. CHACE. 83/02/03.
TEC SPACE 4,10
*** *TESTECS* DETERMINES HOW LARGE OF AN EXTENDED MEMORY FIELD
* LENGTH THE JOB IS VALIDATED TO OBTAIN AND THE SYSTEM IS
* ABLE TO DELIVER.
TEC SPACE 4,15
*** CALLING SEQUENCE.
*
* *SYMPL* CALL -
*
* TESTECS(FLAG)
*
* FLAG .NE. 0 IF USER ECS ENABLED AND VALIDATED.
TEC SPACE 4,10
** TESTECS - TEST FOR ECS AVAILABILITY.
*
* ENTRY (A1) = FWA OF FORMAL PARAMETER LIST.
*
* USES X - 1, 2, 6.
* A - 1, 2, 6.
* B - 1.
*
* MACROS MEMORY.
TESTECS SUBR
SB1 1
BX6 X1 SAVE PARAMETER ADDRESS
SA6 SAVE
MX6 29 GENERATE -1 IN UPPER HALF
SA6 STAT
MEMORY ECS,STAT,R
SA1 STAT WILL RETURN UPPER HALF
SA2 SAVE
MX6 30
BX6 X6*X1
SA6 X2
EQ TESTECS
SAVE BSSZ 1
STAT BSSZ 1
END
IDENT FLDLENE
ENTRY FLDLENE
SYSCOM B1
TITLE FLDLENE - CHANGE ECS FIELD LENGTH.
*COMMENT FLDLENE - CHANGE ECS FIELD LENGTH.
COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
CFL SPACE 4,10
*** FLDLENE - CHANGE ECS FIELD LENGTH.
*
* G.K. CHACE. 83/02/03.
CFL SPACE 4,10
*** *FLDLENE* CHANGES THE JOB*S FIELD LENGTH.
CFL SPACE 4,15
*** CALLING SEQUENCE.
*
* *SYMPL* CALL -
*
* FLDLENE(ECSWORDS);
*
* ECSWORDS = DESIRED FIELD LENGTH.
CFL SPACE 4,10
** FLDLENE - CHANGE ECS FIELD LENGTH.
*
* ENTRY (A1) = FWA OF FORMAL PARAMETER LIST.
*
* USES X - 2.
* A - 2.
* B - 1.
*
* MACROS MEMORY.
FLDLENE SUBR
SB1 1
SA2 X1 GET DESIRED SIZE
MEMORY ECS,STAT,R,X2
EQ FLDLENE
STAT DATA 1
END
IDENT LINESZ
ENTRY LINESZ
EXT FATAL
EXT LINSIZ
SYSCOM B1
TITLE LINESZ - MEASURE LINE SIZE AND REPAIR.
*COMMENT LINESZ - MEASURE LINE SIZE AND REPAIR.
COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
MLS SPACE 4,10
*** LINESZ - MEASURE LINE SIZE AND REPAIR.
*
* G.K. CHACE. 83/02/03.
MLS SPACE 4,10
*** *LINESZ* SCANS A TEXT LINE, CODED IN INTERNAL CHARACTER
* SET, TO MEASURE ITS LENGTH IN WORDS. THIS ROUTINE ALSO
* REPAIRS THE TOP FOUR BITS OF EACH WORD IN THE LINE IMAGE,
* SO THAT THE SIGN BIT INDICATES WHETHER A WORD IS THE LAST
* WORD OF A LINE.
*
* THE FULL SCREEN EDITOR INTERNAL CHARACTER SET USES 7 BITS
* PER CHARACTER, 8 CHARACTERS PER WORD, WITH THE TOP FOUR
* BITS OF EACH WORD NOT BELONGING IN ANY CHARACTER FIELD.
* THE SIGN BIT IS A FLAG FOR THE LAST WORD IN EACH LINE
* IMAGE, AND THE NEXT THREE BITS ARE RESERVED AND NORMALLY
* ZEROED. EACH LINE IMAGE IS TERMINATED BY A CHARACTER WHOSE
* SEVEN BITS ARE ALL ONES. THE EDITING CODE NORMALLY
* MAINTAINS THE END OF LINE CHARACTER BUT NEGLECTS THE LAST
* WORD SIGN BIT, WHILE THE WORKFILE MANAGER LOOKS ONLY FOR
* THE SIGN BIT.
*
* THE ALGORITHM IS TO *AND* A WORD AGAINST ITSELF SHIFTED
* EVERY BIT SUCCESSIVELY, THEN *AND* IT WITH A MASK
* CONTAINING 1'S AT THE TOP BIT FOR EACH SEVEN-BIT CHARACTER
* POSITION. IF THE RESULT IS NON-ZERO, THEN THE WORD MUST
* HAVE CONTAINED A 177 CHARACTER.
MLS SPACE 4,15
*** CALLING SEQUENCE.
*
* *SYMPL* CALL -
*
* NUMWORDS=LINESZ(LINEBUF);
*
* LINEBUF = INTERNALLY FORMATTED LINE BUFFER.
MLS SPACE 4,10
** LINESZ - MEASURE LINE SIZE AND REPAIR.
*
* ENTRY (A1) = FWA OF FORMAL PARAMETER LIST.
*
* USES X - ALL.
* A - 1, 2, 4, 5, 6, 7.
* B - 1, 2, 3, 5, 6.
*
* CALLS LINSIZ, FATAL.
FINAL BX7 X1+X0 SET LAST WORD FLAG
SX6 A1-B5 COMPUTE FUNCTION RESULT
SA7 A1 STORE FLAGGED WORD
SX6 X6+B1 FIX FUNCTION RESULT
LINESZ SUBR ENTRY POINT
SA5 MASK TOP BIT EACH CHARACTER
SA4 LINSIZ LIMITATION
SB1 1
SB5 X1 ADDR OF TEXT LINE
SA1 X1 START FETCHING DATA
SA2 B5+B1 FETCH MORE
SB2 B1+B1 2
SB3 B2+B1 3
SB6 X4 MAX NUM WORDS
LOOP MX0 1 WILL FIX TOP BIT WORD 1
BX6 -X0*X1
BX0 X2 MERELY SAVE SECOND WORD
SA6 A1
LX3 X1,B1 COPY AND SHIFT 1
LX4 X2,B1 DITTO
BX6 X1*X3 FIRST MERGE
BX7 X2*X4 DITTO
SA1 A1+B2 PREFETCH NEXT
SA2 A2+B2 DITTO
LX3 X6,B2 START FUNNY CUT AND PASTE
LX4 X7,B2
BX6 X6*X3
BX7 X7*X4
LX3 X6,B3
LX4 X7,B3
BX6 X6*X3
BX7 X7*X4
BX6 X6*X5 ISOLATE CRUCIAL BITS
BX7 X7*X5 DITTO
EQ B6,B0,ERROR NO CHANCE
NZ X6,FOUND1
EQ B6,B1,ERROR LAST CHANCE
NZ X7,FOUND2
SB6 B6-B2 DECREMENT LOOP
MX6 1 NOW CAN FIX TOP BIT 2ND WORD
BX7 -X6*X0
SA7 A2-B2
EQ LOOP
FOUND1 SA1 A1-B2 RE-FETCH LAST WORD TO FIX
MX0 1 NEED TO FIX TOP BIT AGAIN
EQ FINAL
FOUND2 SA1 A2-B2 AS ABOVE
MX0 1 NEED TO FIX TOP BIT AGAIN
EQ FINAL
ERROR SA1 PARM
RJ FATAL
MASK DATA 02010040201004020100B
PARM CON STRING
STRING DATA C*LINESZ TOO LONG$*
END
IDENT LENGTH
ENTRY LENGTH
EXT FATAL
EXT LINSIZ
SYSCOM B1
TITLE LENGTH - COUNT CHARACTERS IN LINE.
*COMMENT LENGTH - COUNT CHARACTERS IN LINE.
COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
CCL SPACE 4,10
*** LENGTH - COUNT CHARACTERS IN LINE.
*
* G.K. CHACE. 83/02/03.
CCL SPACE 4,10
*** *LENGTH* SCANS A TEXT LINE, CODED IN INTERNAL CHARACTER
* SET, TO MEASURE ITS LENGTH IN CHARACTERS. THIS LENGTH
* VALUE IS EQUIVALENT TO THE ZERO-BASED CHARACTER POSITION
* OF THE END OF LINE CHARACTER.
*
* THE FULL SCREEN EDITOR INTERNAL CHARACTER SET USES 7 BITS
* PER CHARACTER, 8 CHARACTERS PER WORD, WITH THE TOP FOUR
* BITS OF EACH WORD NOT BELONGING IN ANY CHARACTER FIELD.
* THE SIGN BIT IS A FLAG FOR THE LAST WORD IN EACH LINE
* IMAGE, AND THE NEXT THREE BITS ARE RESERVED AND NORMALLY
* ZEROED. EACH LINE IMAGE IS TERMINATED BY A CHARACTER WHOSE
* SEVEN BITS ARE ALL ONES. THE EDITING CODE NORMALLY
* MAINTAINS THE END OF LINE CHARACTER BUT NEGLECTS THE LAST
* WORD SIGN BIT, WHILE THE WORKFILE MANAGER LOOKS ONLY FOR
* THE SIGN BIT. *LENGTH* DOES NO REPAIR OF THE SIGN BITS,
* WHILE THE *LINESZ* ROUTINE DOES REPAIR THE SIGN BITS.
*
* THE ALGORITHM IS TO *AND* A WORD AGAINST ITSELF SHIFTED
* EVERY BIT SUCCESSIVELY, THEN *AND* IT WITH A MASK
* CONTAINING 1'S AT THE TOP BIT FOR EACH SEVEN-BIT CHARACTER
* POSITION. IF THE RESULT IS NON-ZERO, THEN THE WORD MUST
* HAVE CONTAINED A 177 CHARACTER. WITH THE LAST WORD FOUND,
* THE LAST PHASE OF THE ALGORITHM ROTATES THE LAST WORD ON
* A CHARACTER BY CHARACTER BASIS TO IDENTIFY THE END OF LINE.
CCL SPACE 4,15
*** CALLING SEQUENCE.
*
* *SYMPL* CALL -
*
* NUMCHARS=LENGTH(LINEBUF);
*
* LINEBUF = INTERNALLY FORMATTED LINE BUFFER.
CCL SPACE 4,10
** LENGTH - COUNT CHARACTERS IN LINE.
*
* ENTRY (A1) = FWA OF FORMAL PARAMETER LIST.
*
* USES X - ALL.
* A - 1, 2, 4, 5.
* B - 1, 2, 3, 5, 6.
*
* CALLS FATAL, LINSIZ.
FOUND1 LX7 X6,B0 SPECIFY PARTIAL RESULT
SX6 A1-B2 SPECIFY WORD OFFSET
LX7 57 GET IT A CHAR POS OFF
FINAL IX6 X6-X0 WORD OFFSET
LX6 3 CHAR OFFSET
SB5 B0-B1 GEN CONSTANT -1
SX6 X6+B5 TRICK OFFSET DOWN 1
FINLOOP LX7 7 TEST NEXT CHAR FLAG
SX6 X6+B1
PL X7,FINLOOP
LENGTH SUBR ENTRY POINT
SA4 LINSIZ LIMITATION
SA5 MASK TOP BIT EACH CHARACTER
SB1 1
SX0 X1 ADDR OF TEXT LINE
SA1 X1 START FETCHING DATA
SA2 X0+B1 FETCH MORE
SB2 B1+B1 2
SB3 B1+B2 3
SB6 X4 MAX NUM WORDS
LOOP LX3 X1,B1 COPY AND SHIFT 1
LX4 X2,B1 DITTO
BX6 X1*X3 FIRST MERGE
BX7 X2*X4 DITTO
SA1 A1+B2 PREFETCH NEXT
SA2 A2+B2 DITTO
LX3 X6,B2 START FUNNY CUT AND PASTE
LX4 X7,B2
BX6 X6*X3
BX7 X7*X4
LX3 X6,B3
LX4 X7,B3
BX6 X6*X3
BX7 X7*X4
BX6 X6*X5 ISOLATE CRUCIAL BITS
BX7 X7*X5 DITTO
EQ B6,B0,ERROR NO CHANCE
NZ X6,FOUND1
EQ B6,B1,ERROR LAST CHANCE
NZ X7,FOUND2
SB6 B6-B2 DECREMENT LOOP
EQ LOOP
FOUND2 LX7 57 SPECIFY PARTIAL RESULT
SX6 A2-B2 NEED WORD OFFSET
EQ FINAL
ERROR SA1 PARM
RJ FATAL
MASK DATA 02010040201004020100B
PARM CON STRING
STRING DATA C*LENGTH TOO LONG$*
END
IDENT NOSWDSZ
ENTRY NOSWDSZ
SYSCOM B1
TITLE NOSWDSZ - MEASURE ZERO BYTE TERMINATOR.
*COMMENT NOSWDSZ - MEASURE ZERO BYTE TERMINATOR.
COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
MZB SPACE 4,10
*** NOSWDSZ - MEASURE ZERO BYTE TERMINATOR.
*
* G.K. CHACE. 83/02/03.
MZB SPACE 4,10
*** *NOSWDSZ* DETERMINES THE LENGTH IN WORDS OF A DISPLAY CODE
* LINE OF TEXT. IF IT NO END OF LINE IS FOUND WITHIN THE
* SIZE LIMIT, THE VALUE RETURNED IS ONE MORE THAN THE LIMIT.
* THE ALGORITHM IS SIMPLY TO LOOK FOR A WORD WITH THE LAST 12
* BITS ZERO.
MZB SPACE 4,15
*** CALLING SEQUENCE.
*
* *SYMPL* CALL -
*
* NUMWORDS=NOSWDSZ(LIMIT,LINEBUF);
*
* LIMIT = MAXIMUM ALLOWABLE LINE SIZE.
* LINEBUF = THE LINE BUFFER.
MZB SPACE 4,10
** NOSWDSZ - MEASURE ZERO BYTE TERMINATOR.
*
* ENTRY (A1) = FWA OF FORMAL PARAMETER LIST.
*
* USES X - ALL.
* A - 1, 2, 3, 4.
* B - 1, 2, 4, 6, 7.
FOUND SX6 B6-B7 INDICATE WORD COUNT
MI B7,EXHAUST IN CASE SLIPPING OFF END
NOSWDSZ SUBR ENTRY EXIT
SB1 1 CONSTANT
SA2 A1+B1 GET TEXT ADDR
SA1 X1 GET LIMIT VALUE
SB2 B1+B1 CONSTANT
SB4 B2+B2 CONSTANT
SB6 X1 REMEMBER FOR FINAL COMPUTATION
SB7 X1 COUNTS EACH WORD DOWN
SA1 X2 START PREFETCH
SA2 X2+B1 DITTO
SA3 A1+B2 DITTO
SA4 A2+B2 DITTO
LOOP MX0 -12 GEN MASK
BX5 -X0*X1 FOR TESTING FIRST EOL
SA1 A1+B4 START ANOTHER PREFETCH
BX6 -X0*X2 SAME SEQUENCE
SA2 A2+B4
BX7 -X0*X3
SA3 A3+B4
BX0 -X0*X4
SA4 A4+B4
SB7 B7-B1 DECR FOR FIRST TEST
ZR X5,FOUND THIS IS FIRST EOL TEST
SB7 B7-B1 SAME SEQUENCE
ZR X6,FOUND
SB7 B7-B1
ZR X7,FOUND
SB7 B7-B1
ZR X0,FOUND
GT B7,LOOP WHILE NOT OUTRIGHT EXHAUSTED
EXHAUST SX6 B6+B1 SHOW LIMIT+1
EQ NOSWDSZ NOW GET OUT
END
IDENT MOVELN
ENTRY MOVELN
EXT LINSIZ MAX LENGTH OF LINE
SYSCOM B1
TITLE MOVELN - MOVE AND MEASURE INTERNAL LINE.
*COMMENT MOVELN - MOVE AND MEASURE INTERNAL LINE.
COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
MML SPACE 4,10
*** MOVELN - MOVE AND MEASURE INTERNAL LINE.
*
* G.K. CHACE. 83/02/03.
MML SPACE 4,10
*** *MOVELN* MOVES A LINE IMAGE FROM ONE BUFFER TO ANOTHER, AND
* MEASURES THE NUMBER OF WORDS. THE LINE IMAGES MUST BE
* CODED IN THE FULL SCREEN EDITOR INTERNAL CHARACTER SET, AND
* MUST BE IN THE REPAIRED FORMAT AS PRODUCED BY THE *LINESZ*
* ROUTINE. THE INTERNAL CHARACTER SET USES SEVEN BITS PER
* CHARACTER, EIGHT CHARACTER PER WORDS, WITH THE 56 DATA BITS
* RIGHT JUSTIFIED IN EACH WORD. ONCE REPAIRED BY *LINESZ*,
* THE SIGN BIT OF EACH WORD INDICATES THE LAST WORD OF EACH
* LINE.
*
* THIS ROUTINE PERFORMS THE MEASUREMENT FUNCTION ONLY, WITH
* NO MOVE, IF THE TARGET ADDRESS IS ZERO.
MML SPACE 4,15
*** CALLING SEQUENCE.
*
* *SYMPL* CALL -
*
* NUMWORDS=MOVELN(FROM,TO);
*
* FROM = SOURCE BUFFER, INTERNAL CHARACTER SET.
* TO = TARGET BUFFER, INTERNAL CHARACTER SET.
MML SPACE 4,10
** MOVELN - MOVE AND MEASURE INTERNAL LINE.
*
* ENTRY (A1) = FWA OF FORMAL PARAMETER LIST.
*
* USES X - 1, 2, 3, 4, 5, 6, 7.
* A - 1, 2, 3, 4, 5, 7.
* B - 1, 3.
*
* CALLS FATAL, LINSIZ.
EOL SB3 -B3
SX6 X5+B3
MOVELN SUBR
SB1 1
SA5 LINSIZ
SA4 A1+B1 ADDR OF TO
SA1 X1 START PREFETCH
SA2 A1+B1
SA3 A2+B1
SB3 X5 INIT LOOP COUNTER
ZR X4,SCAN ONLY COMPUTE SIZE IF NULL TARGET
BX7 X1 STORE FIRST WORD
SA7 X4
SA4 A3+B1 ONE LAST PREFETCH
LOOP SB3 B3-B1 HERE GOES
MI X7,EOL
BX7 X2
SA1 A4+B1
SA7 A7+B1
SB3 B3-B1
MI X7,EOL
BX7 X3
SA2 A1+B1
SA7 A7+B1
SB3 B3-B1
MI X7,EOL
BX7 X4
SA3 A2+B1
SA7 A7+B1
SB3 B3-B1
MI X7,EOL
BX7 X1
SA4 A3+B1
SA7 A7+B1
LE B3,FULL IF OVERFLOWED LIMIT
EQ LOOP
SCAN SB3 B3-B1 DECREMENT COUNT
MI X1,EOL WHEN DONE
SA1 A3+B1 PICK UP NEXT WORD
SB3 B3-B1
MI X2,EOL
SA2 A1+B1
SB3 B3-B1
MI X3,EOL
SA3 A2+B1
EQ SCAN SCAN ANOTHER THREE WORDS IN PARALLEL
FULL SA1 PARM
RJ =XFATAL
PARM CON MSG
MSG DIS ,/MOVELN - LINE TOO LONG$/
END
IDENT FASTCNI
ENTRY FASTCNI
SYSCOM B1
TITLE FASTCNI - CONVERT NORMAL INPUT.
*COMMENT FASTCNI - CONVERT NORMAL INPUT.
COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
CNI SPACE 4,10
*** FASTCNI - CONVERT NORMAL INPUT.
*
* G.K. CHACE. 83/02/03.
CNI SPACE 4,10
*** *FASTCNI* PROVIDES AN OPTIMIZED ALGORITHM TO CONVERT LINE
* IMAGES FROM THE DISPLAY CODE CHARACTER SET AND ZERO-BYTE
* TERMINATION, TO THE FULL SCREEN EDITOR INTERNAL CHARACTER
* SET AND END OF LINE CHARACTER TERMINATION. THE FSE
* CHARACTER SET USES SEVEN BITS PER CHARACTER AND EIGHT
* CHARACTERS PER WORD, WITH THE 56 DATA BITS RIGHT JUSTIFIED
* IN EACH WORD. END OF LINE IS SIGNALLED BY A CHARACTER OF
* ALL ONE BITS. THE REMAINING BITS OF THE LAST WORD ARE
* RANDOM. CHARACTER VALUES ARE IDENTICAL.
CNI SPACE 4,15
*** CALLING SEQUENCE.
*
* *SYMPL* CALL -
*
* FASTCNI(FSELINE,NOSLINE,FSEWORDS,NOSWORDS);
*
* FSELINE = FSE-FORMAT LINE BUFFER.
* NOSLINE = NOS-FORMAT LINE BUFFER.
* FSEWORDS = MAXIMUM CAPACITY OF FSELINE.
* NOSWORDS = MAXIMUM CAPACITY OF NOSLINE.
CNI SPACE 4,10
** FASTCNI - CONVERT NORMAL INPUT.
*
* ENTRY (A1) = FWA OF FORMAL PARAMETER LIST.
*
* USES X - 0, 2, 3, 4, 5, 6, 7.
* A - 2, 3, 4, 5, 6.
* B - ALL.
FASTCNI SUBR
SB1 1
* X1->FSELINE
SA2 A1+B1 X2->NOSLINE
SA3 A2+B1 X3->FSELIMIT
SA4 A3+B1 X4->NOSLIMIT
SA3 X3 X3=FSELIMIT
SA4 X4 X4=NOSLIMIT
SB3 X3 REMEMBER
SB4 X4 REMEMBER
SB7 X1 REMEMBER OUTPUT ADDR
SA5 X2 FETCH FIRST INPUT
SA4 A5+B1 EXTRA PREFETCH
SX7 10 USEFUL CONSTANT
SB5 X7 INPUT CHAR COUNT
SB6 8 OUTPUT CHAR COUNT
MX6 0 CLEAR OUTPUT ACCUM
MX0 6 INPUT CHAR ISOLATION
SB2 55 INITAL ROTATE COUNT
LOOP ZR B5,NXTINPT NO INPUT TO USE
ZR B6,NXTOUTP MUST CLEAR OUTPUT
BX3 X5*X0 ISOLATE INPUT CHAR
ZR X3,COLON TO TELL COLON FROM EOL
DOCHAR LX3 B2 LINE UP UNDER NOSWORD
BX5 -X0*X5 REMOVE INPUT CHAR
BX6 X6+X3 ADD OUTPUT CHAR
LX5 6 NEXT INPUT CHAR
SB2 B2-7 NEXT ROTATE COUNT
SB5 B5-B1 DECR CHAR COUNTS
SB6 B6-B1
EQ LOOP DO MORE CHARACTERS
* NXTOUTP IS RIGHT AFTER THE LOOP, BEFORE NXTINPT, SINCE
* IT USED FIRST AND MORE OFTEN, THE STACK PREFETCH WILL
* WORK WELL AND A CYBER175 WILL NEVER VOID STACK TILL COLON.
NXTOUTP SA6 B7 STORE THE FULL WORD
SB7 B7+B1 POINT TO NEXT
MX6 0 CLEAR FOR MORE ACCUM
SB3 B3-B1 DECR LIMIT
SB6 8 RESET CHAR CTR
SB2 55 RESET ROTATE CTR
LE B3,FORCEOL WE ARE IN TROUBLE
EQ LOOP USUAL EXIT
NXTINPT BX5 X4 BRING UP PREFETCHED
SA4 A4+B1 PREFETCH ANOTHER
SB5 X7 RESET CHAR CTR
SB4 B4-B1 CHECK LIMIT
LE B4,GOTEOL NO MORE INPUT
EQ LOOP USUAL EXIT
COLON NZ X5,DOCHAR DEFINITELY NOT EOL
SX0 B5-B1 SEE IF 10-TH CHAR
NZ X0,GOTEOL DEFINITELY EOL
MX0 6 REBUILD MASK
NZ X4,DOCHAR NOT EOL IF NXT WORD NOT EOL
GOTEOL MX3 7 GEN AN EOL FSE CHAR
LX3 B2 LINE UP
LX3 1 LINE UP
BX6 X6+X3 ACCUMULATE IT
SA6 B7 STORE IT
EQ FASTCNI NORMAL COMPLETION
FORCEOL MX6 7 EMERGENCY TERMINATE
LX6 56
SA6 B7-B1 STORE AGAIN IN LAST WORD
EQ FASTCNI
END
IDENT FASTCNO
ENTRY FASTCNO
SYSCOM B1
TITLE FASTCNO - CONVERT NORMAL OUTPUT.
*COMMENT FASTCNO - CONVERT NORMAL OUTPUT.
COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
CNO SPACE 4,10
*** FASTCNO - CONVERT NORMAL OUTPUT.
*
* G.K. CHACE. 83/02/03.
CNO SPACE 4,10
*** *FASTCNO* PROVIDES AN OPTIMIZED ALGORITHM TO CONVERT LINE
* IMAGES FROM THE FULL SCREEN EDITOR CHARACTER SET TO THE NOS
* DISPLAY CODE CHARACTER SET. THE FSE CHARACTER SET USES
* SEVEN BITS PER CHARACTER, EIGHT CHARACTERS PER WORD, WITH
* THE 56 DATA BITS RIGHT JUSTIFIED. END OF LINE IS INDICATED
* BY A CHARACTER CONTAINING ALL ONE BITS. THE NOS LINE
* FORMAT USES DISPLAY CODE WITH A ZERO BYTE TERMINATOR. THE
* CHARACTER VALUES ARE IDENTICAL.
CNO SPACE 4,15
*** CALLING SEQUENCE.
*
* *SYMPL* CALL -
*
* FASTCNO(FSELINE,NOSLINE,FSEWORDS,NOSWORDS);
*
* FSELINE = FSE-FORMAT LINE IMAGE BUFFER.
* NOSLINE = NOS-FORMAT LINE IMAGE BUFFER.
* FSEWORDS = MAXIMUM CAPACITY OF FSELINE.
* NOSWORDS = MAXIMUM CAPACITY OF NOSLINE.
CNO SPACE 4,10
** FASTCNO - CONVERT NORMAL OUTPUT.
*
* ENTRY (A1) = FWA OF FORMAL PARAMETER LIST.
*
* USES X - ALL.
* A - 2, 3, 4, 5, 6.
* B - ALL.
FASTCNO SUBR
SB1 1
* X1->FSELINE
SA2 A1+B1 X2->NOSLINE
SA3 A2+B1 X3->FSELIMIT
SA4 A3+B1 X4->NOSLIMIT
SA3 X3 X3=FSELIMIT
SA4 X4 X4=NOSLIMIT
SB3 X3 REMEMBER
SB4 X4 REMEMBER
SB7 X2 REMEMBER FIRST OUT ADDR
SA5 X1 PREFETCH FIRSTINPUT
SA4 A5+B1 PREFETCH EXTRA
MX6 0 CLEAR OUTPUT ACCUMULATOR
SX7 8 USEFUL CONSTANT
SB5 X7 INPUT CHAR CTR
SB6 10 OUTPUT CHAR CTR
MX0 7 ISOLATION MASK
MX1 59 CLEAR SEVENTH BIT AWAY
LX0 56
SB2 60 INITIAL ROTATE CTR
LOOP ZR B5,NXTINPT IF NEED MORE INPUT
ZR B6,NXTOUTP IF MUST CLEAR OUTPUT
BX3 X5*X0 ISOLATE INPUT
BX2 X3-X0 SEE IF ALL ONES - EOL
ZR X2,GENEOL
LX3 5 TO TOP AND SPILL SURPLUS BIT
LX5 7 NEXT INPUT CHAR
BX3 X3*X1 GET RID OF SEVENTH BIT
LX3 B2 NOW ALIGN UNDER ACCUM
SB2 B2-6 NEXT ROTATE COUNT
BX6 X6+X3 ACCUMULATE IT
SB5 B5-B1 DECR CHAR CTRS
SB6 B6-B1
EQ LOOP DO ANOTHER CHAR
* NXTINPT COMES NEXT AND BEFORE NXTOUTO, SINCE NXTINPT IS
* FIRST AND MORE OFTEN, THE STACK PREFETCH WILL GET BOTH
* NXTINPT AND NXTOUTP INTO THE STACK QUICKLY ENOUGH THAT
* WE NEVER VOID THE CYBER175 STACK.
NXTINPT BX5 X4 BRING UP PREFETCHED
SA4 A4+B1 PREFETCH ANOTHER
SB5 X7 RESET CHAR CTR TO 8
SB3 B3-B1 CHEC LIMIT
LE B3,GENEOL EMERGENCY EXIT
EQ LOOP USUAL EXIT
NXTOUTP SA6 B7 STORE
SB7 B7+B1 POINT TO NEXT
MX6 0 CLEAR ACCUM
SB4 B4-B1 CHECK LIMIT
SB6 10 RESET CHAR CTR
SB2 60 RESET ROTATE CTR
LE B4,FORCEOL EMERGENCY EXIT
EQ LOOP NORMAL EXIT
GENEOL SA6 B7 STORE WHAT WE HAVE
MX0 48 ASSURE 12 BIT ENDOFLINE
BX6 -X0*X6
ZR X6,FASTCNO
MX6 0 PREVIOUS WORD NOT EOL ITSELF
SA6 B7+B1
EQ FASTCNO
FORCEOL MX6 0 CLOBBER AN EOL
SA6 B7-B1 STORE AGAIN TO ASSURE EOL
EQ FASTCNO
END
IDENT FASTCAI
ENTRY FASTCAI
SYSCOM B1
TITLE FASTCAI - CONVERT ASCII INPUT.
*COMMENT FASTCAI - CONVERT ASCII INPUT.
COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
CAI SPACE 4,10
*** FASTCAI - CONVERT ASCII INPUT.
*
* G.K. CHACE. 83/02/03.
CAI SPACE 4,10
*** *FASTCAI* PROVIDES AN OPTIMIZED ALGORITHM TO CONVERT LINE
* IMAGES FROM THE NOS LINE FORMAT WITH 6/12 ASCII CHARACTERS,
* TO THE FULL SCREEN EDITOR INTERNAL FORMAT AND CHARACTER
* SET. THE FSE CHARACTER SET USES SEVEN BITS PER CHARACTER
* AND EIGHT CHARACTERS PER WORD, WITH THE 56 DATA BITS RIGHT
* JUSTIFIED IN EACH WORD. END OF LINE IS DENOTED BY A
* CHARACTER OF ALL ONE BITS, AND THE REST OF THE LAST WORD
* MAY BE RANDOM.
*
* THE TOP BIT OF EACH FSE CHARACTER IS AN ESCAPE FLAG WHICH
* EFFECTIVELY MIMICS THE UPARROW OF THE 6/12 FORMAT. THE
* LOWER SIX BITS OF EACH FSE CHARACTER EQUAL THE DISPLAY CODE
* VALUES OF THE 6/12 FORMAT. UNTRANSLATABLE CHARACTERS ARE
* CHANGED TO COMMERCIAL AT SYMBOLS. A STATUS CODE IS RETURNED
* TO THE CALLER TO INDICATE WHETHER UNTRANSLATABLE CHARACTERS
* AND/OR 00B FORMAT COLONS WERE ENCOUNTERED.
CAI SPACE 4,15
*** CALLING SEQUENCE.
*
* *SYMPL* CALL -
*
* FASTCAI(FSELINE,NOSLINE,FSELIMIT,NOSLIMIT,ZEROFLG);
*
* FSELINE = FSE-FORMAT LINE IMAGE BUFFER.
* NOSLINE = 6/12 NOS ASCII LINE IMAGE BUFFER.
* FSELIMIT = MAXIMUM CAPCITY OF FSELINE.
* NOSLIMIT = MAXIMUM CAPACITY OF NOSLINE.
* ZEROFLG = BAD CHARACTER AND/OR 00B COLON STATUS.
CAI SPACE 4,10
** FASTCAI - CONVERT ASCII INPUT.
*
* ENTRY (A1) = FWA OF FORMAL PARAMETER LIST.
*
* EXIT NOSLINE CONTAINS CONVERTED LINE IN INTERNAL FORMAT.
* ZEROFLG = 0 IF NO BAD CHARACTERS OR 00B COLONS FOUND.
* = 1 IF 00B COLON(S) FOUND.
* = 2 IF BAD CHARACTER CODE(S) CHANGED.
* = 3 IF BOTH 00B COLON(S) AND BAD CHARACTER(S).
*
* USES X - ALL.
* A - 1, 2, 3, 4, 5, 6, 7.
* B - ALL.
FASTCAI SUBR
SB1 1
SA2 A1+B1 X1->FSELINE, X2->NOSLINE
SA3 A2+B1 X3->FSELIMIT
SA4 A3+B1 X4->NOSLIMIT
SA5 A4+B1 GET ZEROFLG
SA3 X3 X3=FSELIMIT
SA4 X4 X4=NOSLIMIT
BX6 X5 SAVE POINTER TO ZEROFLG
SA6 SAVADDR
MX7 0 CLEAR ACCUMULATOR
SA7 SAVBADC CLEAR FLAGS
SA7 SAVZCOL
SB7 X1 OUTPUT POINTER
SB3 X3 REMEMBER LIMIT COUNTERS
SB4 X4 DITTO
SA5 X2 PREFETCH FIRST NOS WORD
SA4 A5+B1 ADDITIONAL PREFETCH
MX0 6 6-BIT MASK
SB6 8 NUM FSE CHAR/WORD
SB5 8 NUM NOS CHAR/WORD MINUS PRE-FETCH
SB2 49 INIT ALIGNMENT SHIFTER
LX0 6 WE WILL WORK AT BOTTOM OF WORD
LX5 6 DITTO
BX1 X0*X5 PRELOAD FIRST TWO CHARS
BX5 -X0*X5
LX5 6
BX2 X0*X5
BX5 -X0*X5
LX5 6
LOOP ZR B5,NXTINPT IF NEED ANOTHER CM READ
ZR B6,NXTOUTP IF NEED ANOTHER CM WRITE
ZR X1,COLON SPECIAL CASE
SX3 X1-1R@ SPECIAL CASE
ZR X3,ATSIGN
SX3 X1-1R^ PARTLY SPECIAL
NZ X3,GENCHAR
SX1 X2+100B SHIFTED ALPHA CHAR
SX2 X2-77B CHECK FOR *US* CONTROL CHARACTER
ZR X2,BADCHAR IF *US* CONTROL CHARACTER MUST DISCARD
EXTRACH BX2 X0*X5 GEN NEXT CHAR
BX5 -X0*X5
LX5 6
SB5 B5-B1 DECR CHAR/WORD
NZ B5,GENCHAR IF NORMAL
RJ GETINPT IF ENDING WORD
GENCHAR LX1 B2 ALIGN FSE CHAR UNDER ACCUM
SB2 B2-7
BX7 X7+X1 ACCUMULATE
BX1 X2 ADVANCE THE TWO CHARACTERS
BX2 X0*X5
BX5 -X0*X5
LX5 6
SB6 B6-B1 DECR CHAR/WORD COUNTERS
SB5 B5-B1
EQ LOOP
NXTOUTP SA7 B7 WRITE A RESULT WORD
SB7 B7+B1 INCR PTR FOR NXT
MX7 0 CLEAR ACCUM
SB3 B3-B1 CHECK LIMIT
SB6 8
SB2 49
LE B3,FORCEOL IF IN TROUBLE
EQ LOOP
NXTINPT BX5 X4 ADVANCE PREFETCH
SA4 A4+B1 PREFETCH ANOTHER
SB5 10 RESET COUNTER
SB4 B4-B1 CHECK LIMIT
LX5 6 PRE-SHIFT TO BOTTOM
LE B4,GOTEOL
EQ LOOP
GETINPT BSSZ 1
BX5 X4 ADVANCE PREFETCHED
SA4 A4+B1 PREFETCH ANOTHER
SB5 10 RESET COUNTERS
SB4 B4-B1 CHECK LIMIT
LX5 6 PRE-SHIFT TO BOTTOM
LE B4,GOTEOL
EQ GETINPT
ATSIGN SX3 X2-1RA CHECK FOUR KNOWN SEQUENCES
ZR X3,ATSIGNA
SX3 X2-1RB
ZR X3,ATSIGNB
SX3 X2-1RD
ZR X3,ATSIGND
SX3 X2-1RG
ZR X3,ATSIGNG
BADCHAR SX6 2 NOTE THAT BAD CHARACTER OCCURRED
SA6 SAVBADC
ATSIGNA SX1 74B
EQ EXTRACH
ATSIGNB SX1 76B
EQ EXTRACH
ATSIGND SX1 0
EQ EXTRACH
ATSIGNG SX1 100B FSE ACCENT-GRAVE
EQ EXTRACH
ZERCHAR SX6 B1 NOTE THAT 00B FORMAT COLON OCCURRED
SA6 SAVZCOL
MX1 0 REGENERATE INTERNAL CHARACTER VALUE
EQ GENCHAR PROCEED TO GENERATE THE COLON
COLON NZ X2,ZERCHAR IF NEXT CHAR NOT ALSO COLON
SX3 B5-10 SEE IF LAST 2 CHARS OF WORD
ZR X3,GOTEOL THATS THE WHOLE STORY
NZ X5,ZERCHAR IF MORE TO CHECK
* EQ GOTEOL DRIFT INTO END-OF-LINE
GOTEOL SX1 177B FSE EOL CHAR
LX1 B2 POSITION UNDER ACCUM
BX7 X7+X1
SETFLAG SA3 SAVBADC GET BAD CHARACTER FLAG
SA2 SAVZCOL GET 00B COLON FLAG
SA7 B7 PUT LINE TERMINATOR IN PLACE
SA1 SAVADDR GET STATUS WORD ADDRESS
BX7 X2+X3 RETURN 00B COLON / BAD CHARACTER STATUS
SA7 X1+
EQ FASTCAI NORMAL EXIT
FORCEOL SX7 177B EMERGENCY EXIT
LX7 49
SB7 B7-B1 BACK UP ONE WORD
EQ SETFLAG SET 00B COLON AND BAD CHARACTER FLAGS
SAVADDR CON 0 ADDRESS OF STATUS RETURN WORD
SAVBADC CON 0 BAD CHARACTER FLAG
SAVZCOL CON 0 00B FORMAT COLON FLAG
END
IDENT FASTCAO
ENTRY FASTCAO
SYSCOM B1
TITLE FASTCAO - CONVERT ASCII OUTPUT.
*COMMENT FASTCAO - CONVERT ASCII OUTPUT.
COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
CAO SPACE 4,10
*** FASTCAO - CONVERT ASCII OUTPUT.
*
* G.K. CHACE. 83/02/03.
CAO SPACE 4,10
*** *FASTCAO* COPIES AND CONVERTS A LINE IMAGE FROM THE FULL
* SCREEN EDITOR CHARACTER SET AND LINE FORMAT, TO THE 6/12
* ASCII NOS CHARACTER SET AND LINE FORMAT. THE FSE CHARACTER
* SET USES SEVEN BITS PER CHARACTER, EIGHT CHARACTERS PER
* WORD, WITH THE 56 DATA BITS RIGHT JUSTIFIED. THE END OF
* LINE IS DENOTED BY A CHARACTER OF ALL ONE BITS. THE TOP
* BIT OF EACH CHARACTER MIMICS THE UPARROW ESCAPE CONVENTION
* OF THE 6/12 CHARACTER SET, AND THE LOWER SIX BITS OF EACH
* CHARACTER EQUAL THE DISPLAY CODES. THE 6/12 LINE IMAGE
* USES THE NOS ZERO BYTE TERMINATOR.
CAO SPACE 4,10
* *SYMPL* CALL -
*
* FASTCAO(FSELINE,NOSLINE,FSELIMIT,NOSLIMIT);
*
* FSELINE = FSE-FORMAT LINE IMAGE BUFFER.
* NOSLINE = 6/12 ASCII LINE IMAGE BUFFER.
* FSELIMIT = MAXIMUM CAPACITY OF FSELINE.
* NOSLIMIT = MAXIMUM CAPACITY OF NOSLINE.
CAO SPACE 4,10
** FASTCAO - CONVERT ASCII OUTPUT.
*
* ENTRY (A1) = FWA OF FORMAL PARAMETER LIST.
*
* USES X - ALL.
* A - 0, 2, 3, 4, 5, 7.
* B - ALL.
FASTCAO SUBR
SB1 1
SA2 A1+B1 X1->FSELINE, X2->NOSLINE
SA3 A2+B1 X3->FSELIMIT
SA4 A3+B1 X4->NOSLIMIT
SA5 A4+B1 X5->COLONFLG
SB7 X2 REMEMBER OUTPUT ADDR
SA3 X3 X3=FSELIMIT
SA4 X4 X4=NOSLIMIT
SA5 X5 X5=COLONFLG
MX0 7 ISOLATE FSE CHARACTER
LX0 56 IN POSITION
SB2 54 INITIAL ROTATE COUNT
SB5 8 CHAR/WORD
SB6 10 CHAR/WORD
SA0 -6 USEFUL CONSTANT
SB3 X3 REMEMBER
SB4 X4
BX6 X5
SA5 X1 PREFETCH FIRST FSE WORD
SA4 A5+B1 PREFETCH ANOTHER
MX7 0 CLEAR ACCUMULATOR
MX3 54 HELPS FIND SPECIAL CHARS
EQ LOOP START ITERATION
GENCHAR LX1 B2 POSITION THE CHARACTER
SB2 B2+A0 DECR SHIFT COUNT
BX7 X7+X1 ACCUMULATE IT
LX5 7 BRING UP NEXT FSE CHAR
SB6 B6-B1 DECR CHAR/WORD
SB5 B5-B1 DECR CHAR/WORD
LOOP ZR B5,NXTINPT
ZR B6,NXTOUTP
BX1 X0*X5 ISOLATE CURRENT FSE CHAR
BX2 X1-X0 CHECK FOR FSE EOL CHAR
ZR X2,GENEOL
LX1 11 PUT IT AT BOTTOM OF WORD
BX2 -X3*X1 LOOK FOR COLON + ACCENT
ZR X2,SPECIAL
SX2 X2-73B LOOK FOR OTHER SPECIALS
PL X2,SPECIAL SOME WILL COME RIGHT BACK
TSTSHFT SX2 X1-100B NOW LOOK FOR SHIFTED
MI X2,GENCHAR NORMAL
SX2 1R^ ESTABLISH SHIFT CHAR
LX2 B2 GEN EXTRA CHAR
SB6 B6-B1 DECR COUNTER
SB2 B2+A0 DECR SHIFT COUNTER
BX7 X7+X2 ACCUMULATE POSITIONED CHAR
BX1 -X3*X1 GET RID OF SHIFT BIT IN CHAR
NZ B6,GENCHAR IF USUAL CASE, GENERATE OTHER CHAR
EQ GENOUTP WHEN CROSSING WORDS RIGHT NOW
NXTINPT BX5 X4 ADVANCE PREFETCHED
SA4 A4+B1 PREFETCH ANOTHER
SB5 8 RESET CHAR/WORD
SB3 B3-B1 CHECK LIMIT
LE B3,GENEOL
EQ LOOP
NXTOUTP SA7 B7 STORE IT
SB7 B7+B1
MX7 0 CLEAR ACCUM
SB4 B4-B1 CHECK LIMIT
SB6 10 RESET CHAR/WORD
SB2 54 RESET POSITIONER
LE B4,FORCEOL ABNORMAL SITUATION
EQ LOOP
GENOUTP SA7 B7
SB7 B7+B1
MX7 0
SB4 B4-B1
SB6 10
SB2 54
LE B4,FORCEOL
EQ GENCHAR
SPECIAL ZR X1,COLON
SX2 X1-1R@ CHECK EACH SPECIAL CASE
ZR X2,ATSIGN
SX2 X1-1R^
ZR X2,UPARROW
SX2 X1-100B
ZR X2,ACCENT
EQ TSTSHFT ONE OF THE NORMAL CHARS 73-77
COLON ZR X6,GENCHAR IF GEN 00
SX1 04B IF GEN 7404
SX2 74B
EQ GENSPEC
ATSIGN SX2 74B
SX1 01B
EQ GENSPEC
UPARROW SX2 74B
SX1 02B
EQ GENSPEC
ACCENT SX2 74B
SX1 07B
* EQ GENSPEC
GENSPEC LX2 B2 ALIGN UNDER ACCUM
SB6 B6-B1 DECR COUNTERS
SB2 B2+A0
BX7 X7+X2
NZ B6,GENCHAR IF USUAL CASE
EQ GENOUTP WHEN CROSSING WORD BOUNDARY
GENEOL SA7 B7 STORE CURRENT WORD
MX0 48 ASSURE 12 BIT ENDOFLINE
BX7 -X0*X7
ZR X7,FASTCAO
MX7 0 PREVIOUS WORD NOT EOL ITSELF
SA7 A7+B1
EQ FASTCAO
FORCEOL MX7 0 GENERATE CRISIS END-OF-LINE
SA7 B7-B1 STORE LAST WORD AGAIN
EQ FASTCAO
END
IDENT FASTFND
ENTRY FASTFND
SYSCOM B1
TITLE FASTFND - FIND STRING IN LINE.
*COMMENT FASTFND - FIND STRING IN LINE.
COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
FSL SPACE 4,10
*** FASTFND - FIND STRING IN LINE.
*
* G.K. CHACE. 83/02/03.
FSL SPACE 4,10
*** *FASTFND* SEARCHES AN INTERNALLY FORMATTED LINE IMAGE FOR A
* CHARACTER STRING. THE INTERNAL LINE FORMAT USES SEVEN BITS
* PER CHARACTER AND EIGHT CHARACTERS PER WORD, WITH THE 56
* DATA BITS RIGHT JUSTIFIED. THE CALLER PROVIDES BOUNDARIES
* FOR THE FIRST AND LAST CHARACTER POSITIONS WITHIN THE LINE
* WHERE THE SEARCH CAN BE ATTEMPTED. THE CALLER PROVIDES A
* MASK WHICH EFFECTIVELY DETERMINES WHETHER THE TOP BIT OF
* EACH CHARACTER (THE LOWER CASE FLAG) SHALL BE CHECKED OR
* IGNORED. THIS ROUTINE RETURNS A TRUE/FALSE FUNCTION VALUE
* FOR THE SUCCESS OR FAILURE OF THE SEARCH, PLUS A CHARACTER
* POSITION WHERE THE SEARCH SUCCEEDS.
FSL SPACE 4,15
*** CALLING SEQUENCE.
*
* *SYMPL* CALL -
*
* SUCCESS=FASTFND(LINE,LAST,FIRST,STRING,STRLEN,SLTS,POS,MASK);
*
* SUCCESS = BOOLEAN SEARCH RESULT.
* LINE = LINE IMAGE BUFFER.
* LAST = LAST POSITION TO SEARCH IN.
* FIRST = FIRST POSITION TO SEARCH IN.
* STRING = LINE IMAGE BUFFER WITH SEARCH KEY.
* STRLEN = NUMBER OF SEVEN-BIT CHARACTERS IN STRING.
* SLTS = LENGTH OF STRING LESS TRAILING SPACES.
* POS = IF SEARCH SUCCEEDS, POSITION WHERE FOUND.
* MASK = UPPER/LOWER SIGNIFICANCE BITMASK.
FSL SPACE 4,10
** FASTFND - FIND STRING IN LINE.
*
* ENTRY (A1) = FWA OF FORMAL PARAMETER LIST.
*
* EXIT (X6) = 0, IF STRING NOT FOUND.
* (X6) = 1, IF STRING FOUND.
* (POS) = POSITION OF STRING IN LINE, IF STRING FOUND.
*
* USES X - ALL.
* A - 0, 1, 2, 3, 4, 5, 6.
* B - ALL.
FASTFND BSS 1
SB1 1
SX6 A1+
SA6 FNDA
* X1 = LINE
SA2 A1+B1 X2 = LEN
SA3 A2+B1 X3 = START
SA5 A3+B1 X5 = FOR
SA4 A5+B1 X4 = FORLEN
SA2 X2 X2 = LEN
SA3 X3 X3 = START
SA5 X5 X5 = FOR[0]
SX6 X3 X6 = WHERE (INIT TO START)
SA3 A4+B1
SA4 X4 X4 = FORLEN
SA3 X3 X3 = FORLEN LESS TRAILING SPACES
PL X3,FND0 IF SOME NON-SPACE CHARACTERS
BX3 X3-X3
FND0 NG X4,FND12 IF NULL KEY
IX0 X2-X6 GET NUMBER TO LOOK FOR IN OUTER
IX0 X0-X3
SB6 X0+B1
LE B6,FND12 IF NOT ENOUGH CHARACTERS
LX3 30
BX4 X4+X3 X4 = FORLEN-T.S.(59-30), FORLEN(29-0)
BX7 X6 X7 = START/8
AX7 3
MX0 -3 X0 = MOD(START,8)
BX0 -X0*X6
SB3 X7 A3,X3 = LINE[START/8]
SA3 X1+B3
SA1 A1+7 READ CHARACTER MASK ADDRESS
SA1 X1+
BX7 X1 X7 = CHAR MASK
BX1 X4 X1 = FORLEN-T.S.(59-30), FORLEN(29-0)
ZR X0,FND1 IF ON WORD BOUNDRY
SX2 8 B2 = # CHARS LEFT IN WORD
IX2 X2-X0
SB2 X2
BX2 X3 X2 = LINE[START/8]
SX3 7 LEFT SHIFTED MOD(START,8) CHARS
IX3 X3*X0
SB3 X3
LX2 B3
SA3 A3+1 ENTER BYTE LOOP
SB6 B6-B2
GT B6,FND2 IF NOT LAST WORD
SB2 B6+B2 FIX LAST WORD
SB6 X0+B2
SB6 -B6
EQ FND2 BEGIN FIRST BYTE COMPARISON
FND1 LE B6,FND12 IF END OF LINE
BX2 X3 GET NEXT WORD
SB2 8
SA3 A3+B1
GE B2,B6,FND4 IF ON THE LAST WORD
SB6 B6-B2
FND2 BX0 X5-X2 COMPARE CHAR
BX0 X0*X7
ZR X0,FND5 IF FIRST CHARACTERS MATCH
FND3 SX6 X6+1 STEP TO NEXT CHARACTER
LX2 7
SB2 B2-B1
NE B2,FND2 IF WORD NOT EXHAUSTED
EQ FND1 GET NEXT WORD
FND4 SB2 B6 FIX UP LAST WORD
SB6 -B6
EQ FND2 CONTINUE FIRST BYTE COMPARISON
FND5 SB7 X1+
LX1 30
SB4 B2+X1
LX1 30
LT B6,FND6 IF WORKING ON LAST WORD
SB4 B4+B6
FND6 GT B4,B7,FND7 IF MORE LEFT THAN STRING LENGTH
SB7 B4-1 ONLY COMPARE REMAINDER
FND7 LE B7,FND13 IF ZERO STRING LENGTH
BX4 X5 X4 = WORKING FOR WORD
SB5 A5+B1 B5 = WORKING FOR ADDR
SB4 8 B4 = # CHARS LEFT IN X4
SA0 B2+ SAVE B2
BX3 X2 SAVE X2
SB3 A3 B3 = WORKING LINE ADDR
GE B6,FND8 IF NOT LAST WORD
SB2 B4+B2 CORRECT CHAR COUNT OF X2
SB2 B2+B6
FND8 LX2 7 SHIFT LINE WORD
SB2 B2-B1
NE B2,FND9 IF NOT END OF WORD
SA2 B3
SB3 B3+B1
SB2 8
FND9 LX4 7 SHIFT FOR WORD
SB4 B4-B1
NE B4,FND10 IF NOT END OF WORD
SA4 B5
SB5 B5+B1
SB4 8
FND10 BX0 X4-X2 COMPARE CHARS
BX0 X0*X7
NZ X0,FND11 IF COMPARISON FAILED
SB7 B7-1
NE B7,FND8 IF MORE TO COMPARE
EQ FND13 EXIT WITH STRING MATCH
FND11 BX2 X3 RESTORE X2
SA3 A3 START UP PREFETCH
SB2 A0+
EQ FND3 REENTER OUTER LOOP
FND12 SX6 B0+ FASTFND = FALSE
EQ FASTFND RETURN
FND13 SA1 FNDA RETURN DISP OF FOUND STRING
SA1 X1+6 IN *POS* PARM
SA6 X1
SX6 B1 FASTFND = TRUE
EQ FASTFND RETURN
FNDA BSS 1 PARAMETER LIST ADDRESS
END
IDENT FASTRLC
ENTRY FASTRLC
SYSCOM B1
TITLE FASTRLC - RELOCATE VALUES IN VECTOR.
*COMMENT FASTRLC - RELOCATE VALUES IN VECTOR.
COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
RLC SPACE 4,10
*** FASTRLC - RELOCATE VALUES IN VECTOR.
*
* G.K. CHACE. 83/02/03.
RLC SPACE 4,10
*** *FASTRLC* PROVIDES AN OPTIMIZED ALGORITHM TO CHECK A VECTOR
* OF INTEGERS FOR VALUES EQUAL TO OR GREATER THAN A THRESHOLD
* AND INCREMENT OR DECREMENT THOSE VALUES BY AN OFFSET.
RLC SPACE 4,15
*** CALLING SEQUENCE.
*
* *SYMPL* CALL -
*
* FASTRLC(STACK,NWORDS,THRESH,INCR);
*
* STACK = THE ARRAY OF RELOCATABLE VALUES.
* NWORDS = SIZE OF STACK.
* THRESH = THRESHOLD VALUE FOR RELOCATION TO OCCUR.
* INCR = OFFSET TO BE ADDED.
RLC SPACE 4,10
** FASTRLC - RELOCATE VALUES IN VECTOR.
*
* ENTRY (A1) = FWA OF FORMAL PARAMETER LIST.
*
* USES X - 0, 2, 3, 4, 5, 7.
* A - 2, 3, 4, 7.
* B - 1, 2.
FASTRLC SUBR
* A1->PARMS, X1->STACK
SA2 A1+1 X2->NWORDS
SA3 A1+2 X3->CURL
SA4 A1+3 X4->INCR
SB1 1
SA2 X2 X2=NWORDS
SA3 X3 X3=CURL
SA4 X4 X4=INCR
SB2 X2 B2=NWORDS, X2 FREE
SA2 X1 X2=FIRST WORD, X1 FREE
MX0 30 USEFUL MASK
LOOP BX1 X2 BRING IN THE PREFETCHED WORD
SA2 A2+B1 PREFETCH NEXT
SB2 B2-B1 DECREMENT LOOP COUNT
IX5 X1-X3 COMPARE FOR RELOCATION
NG B2,FASTRLC WHEN EXHAUSTED
NG X5,LOOP IF NEEDS NO HELP
IX7 X1+X4 RELOCATE IT
SA7 A2-B1 RE-STORE IT
EQ LOOP
END
IDENT MOVEWD
ENTRY MOVEWD
SYSCOM B1
TITLE MOVEWD - MOVE WORDS.
*COMMENT MOVEWD - MOVE WORDS.
COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
MVW SPACE 4,10
*** MOVEWD - MOVE WORDS.
*
* G.K. CHACE. 83/02/03.
MVW SPACE 4,10
*** *MOVEWD* MOVES A BLOCK OF CENTRAL MEMORY TO ANOTHER LOCATION.
MVW SPACE 4,15
*** CALLING SEQUENCE.
*
* *SYMPL* CALL -
*
* MOVEWD(LENGTH,FROM,TO);
*
* LENGTH = NUMBER OF WORDS.
* FROM = SOURCE ARRAY.
* TO = TARGET ARRAY.
MVW SPACE 4,10
** MOVEWD - MOVE WORDS.
*
* ENTRY (A1) = FWA OF FORMAL PARAMETER LIST.
*
* USES X - 1, 2, 3, 4, 6, 7.
* A - 1, 2, 3, 4, 6, 7.
* B - ALL.
MOVEWD BSS 1
SB1 1
SA2 A1+B1
SA3 A2+B1
SA1 X1
* NOW X1=COUNT, X2 POINTS FROM, X3 POINTS WHERE
ZR X1,MOVEWD IF NULL COUNT
SB5 X1 B5 = COUNT
SB6 X2 B6 POINTS FROM
SB7 X3 B7 POINTS TO
SB3 B7-B6 ADDRESS OFFSET
ZR B3,MOVEWD IF NULL OFFSET
PL B3,HIGHER IF MOVE TO HIGHER ADDRESS
SB2 1
SB3 2
SB4 8
EQ START
HIGHER SB2 -1
SB3 -2
SB4 -8
SB6 B6+B5
SB7 B7+B5
SB6 B6-B1 LWA OF FROM
SB7 B7-B1 LWA OF TO
START SA1 B6 START PREFETCH OF DATA
SA2 A1+B2
SA3 A2+B2
SA4 A3+B2
SB5 B5-8 SEE IF ALREADY NEAR DONE
NG B5,FINAL
LOOP BX6 X1
SA1 A3+B3 PREFETCH MORE
BX7 X2
SA2 A4+B3
SA6 B7
SA7 B7+B2
BX6 X3
SA3 A1+B3
BX7 X4
SA4 A2+B3
SA6 A6+B3
SA7 A7+B3
BX6 X1
SA1 A3+B3
BX7 X2
SA2 A4+B3
SA6 A6+B3
SA7 A7+B3
BX6 X3
SA3 A1+B3
BX7 X4
SA4 A2+B3
SA6 A6+B3
SA7 A7+B3
SB5 B5-8 DECREMENT COUNT
SB7 B7+B4 INCREMENT OUTPUT ADDRESS
PL B5,LOOP IF NOT WITHIN 7 OR LESS WORDS
* HANDLE LAST 1 TO 7 WORDS IN LINE
FINAL SB5 B5+8
ZR B5,MOVEWD
BX6 X1
SB5 B5-B1
SA6 B7
ZR B5,MOVEWD
BX6 X2
SB5 B5-B1
SA6 A6+B2
ZR B5,MOVEWD
BX6 X3
SB5 B5-B1
SA6 A6+B2
ZR B5,MOVEWD
BX6 X4
SB5 B5-B1
SA6 A6+B2
ZR B5,MOVEWD
SA1 A3+B3
BX6 X1
SB5 B5-B1
SA6 A6+B2
ZR B5,MOVEWD
SA2 A4+B3
BX6 X2
SB5 B5-B1
SA6 A6+B2
ZR B5,MOVEWD
SA3 A1+B3
BX6 X3
SB5 B5-B1
SA6 A6+B2
EQ MOVEWD
END
IDENT ZEROWD
ENTRY ZEROWD
SYSCOM B1
TITLE ZEROWD - ZERO WORDS.
*COMMENT ZEROWD - ZERO WORDS.
COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
ZWD SPACE 4,10
*** ZEROWD - ZERO WORDS.
*
* G.K. CHACE. 83/02/03.
ZWD SPACE 4,10
*** *ZEROWD* ZEROES OUT A BLOCK IN MEMORY.
ZWD SPACE 4,15
*** CALLING SEQUENCE.
*
* *SYMPL* CALL -
*
* ZEROWD(ARRAY,LENGTH);
*
* ARRAY = TARGET ADDRESS.
* LENGTH = NUMBER OF WORDS.
ZWD SPACE 4,10
** ZEROWD - ZERO WORDS.
*
* ENTRY (A1) = FWA OF FORMAL PARAMETER LIST.
*
* USES X - 2, 6.
* A - 2, 6.
* B - 1, 2.
ZEROWD BSS 1 FROM,NW
SB1 1 MAKE SURE
SA2 A1+B1 X2=NW ADR
MX6 0 GET A ZERO
SA2 X2 X2=NW
SB2 X2-1 B2=MAX OFFSET
ZEROWD1 MI B2,ZEROWD
SA6 X1+B2 ZERO TOPMOST WORD
SB2 B2-B1 DECREMENT
EQ ZEROWD1 LOOP
END
IDENT FIXCTL
ENTRY FIXCTL
SYSCOM B1
TITLE FIXCTL - FIX CONTROL BYTES.
*COMMENT FIXCTL - FIX CONTROL BYTES.
COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
FCB SPACE 4,10
*** FIXCTL - FIX CONTROL BYTES.
*
* G.K. CHACE. 83/02/03.
FCB SPACE 4,10
*** *FIXCTL* SCANS A ZERO-TERMINATED LINE IMAGE IN EITHER
* DISPLAY CODE OR 6/12 ASCII, SUPPRESSING ANY CONTROL BYTES
* BY CHANGING THEIR COLONS TO SEMICOLONS.
FCB SPACE 4,15
*** CALLING SEQUENCE.
*
* *SYMPL* CALL -
*
* FIXCTL(LIMIT,LINE);
*
* LIMIT = MAXIMUM CAPACITY OF LINE BUFFER.
* LINE = THE LINE BUFFER.
FCB SPACE 4,10
** FIXCTL - FIX CONTROL BYTES.
*
* ENTRY (A1) = FWA OF FORMAL PARAMETER LIST.
*
* USES X - ALL.
* A - 1, 2, 4, 5, 7.
* B - 1, 2, 3, 4, 6, 7.
*
* CALLS NOSWDSZ.
FIXCTL SUBR
SX7 A1 SAME PARAMETER LIST ADDR
SA7 SAVPARM
RJ =XNOSWDSZ GET LENGTH IN WORDS
SB1 1
SB6 X6 SAVE LENGTH COMPUTED BY NOSWDSZ
MX6 0 DEFAULT RESULT IS NO CTL BYTES
MX0 48 USEFUL MASK
START SA1 SAVPARM
SA1 X1+B1
SB2 B6 THIS IS LENGTH OF LINE
SA1 X1 FETCH FIRST DATA
SA2 A1+B1 PREFETCH ANOTHER
OUTLOOP SB7 60 BIT POINTER FOR REPAIR
BX7 X1 SAVE VIRGIN COPY DATA FOR REPAIR
INLOOP ZR X1,ENDWORD SEE IF ANYTHING TO DO
LX1 12 ROTATE NEXT DOUBLE BYTE
BX3 -X0*X1 ISOLATE
BX1 X0*X1 REMOVE
SX4 X3-0001B LOWEST CONTROL BYTE
SX5 X3-0016B LARGEST PLUS ONE
BX4 -X4*X5 LOOK FOR X4 PLUS, X5 MINUS
MI X4,GOT THIS IS A CONTROL BYTE
NOGOT SB7 B7-12 ADJUST BIT POINTER
EQ INLOOP
ENDWORD BX1 X2 BRING UP PREFETCHED DATA
SA2 A2+B1 PREFETCH MORE
SB2 B2-B1 DECREMENT WORD COUNT
NZ B2,OUTLOOP
EQ FIXCTL WHEN ALL DONE
GOT SA4 MASK CONTROLS WHICH TESTS
SB3 X3 NEED ORDINAL FOR ROTATE COUNT
LX4 B3 EOL FLAG TO SIGN BIT
PL X4,GOT2 NOT INTERESTED IN EOL
NZ X1,NOGOT DEFINITELY NOT EOL
SB4 B7-12
NZ B4,GOT2 DEFINITELY IS EOL
NZ X2,NOGOT NOT EOL
GOT2 LX4 20 BOW FLAG TO SIGN
PL X4,GOT3 NOT INTERESTED IN BEGIN-WORD
SB4 B7-60
NZ B4,NOGOT NOT BEGIN OF WORD
GOT3 LX4 20 BOL FLAG TO SIGN
PL X4,ZAP NOT INTERESTED IN BEGIN-LINE
SA5 SAVPARM
SA5 X5+B1
SB4 X5
SB4 A2-B4 COMPARE ADDRESSES
SB4 B4-B1
NZ B4,NOGOT IF NOT BEGIN OF LINE
ZAP MX6 -1 SHOW SOME WERE FOUND
MX5 6 GENERATE A SEMICOLON
LX5 B7 LINE UP TO POINTED BIT
BX7 X7+X5 INSERT SEMICOLON
SA7 A2-B1 STORE BACK WHERE CAME FROM
EQ START RE-SCAN ALL OVER
SAVPARM BSSZ 1
MASK DATA 37132000751000130000B
END
IDENT FASTLNB
ENTRY FASTLNB
SYSCOM B1
TITLE FASTLNB - IDENTIFY LAST NON BLANK.
*COMMENT FASTLNB - IDENTIFY LAST NON BLANK.
COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
LNB SPACE 4,10
*** FASTLNB - IDENTIFY LAST NON BLANK.
*
* G.K. CHACE. 83/02/03.
LNB SPACE 4,10
*** *FASTLNB* COMPUTES THE NUMBER OF TRAILING BLANKS IN AN FSE
* LINE BUFFER. THESE CODED LINES ARE IN THE SPECIAL
* CHARACTER SET AND LINE FORMAT USED INTERNALLY BY FSE.
*
* *FASTLNB* THEN SUBTRACTS THIS FROM THE LINE LENGTH, ALREADY
* COMPUTED VIA LENGTH FUNCTION, TO SHOW WHERE AN END-OF-LINE
* CHARACTER MAY BE OVERWRITTEN TO TRIM THE LINE BUFFER.
LNB SPACE 4,15
*** CALLING SEQUENCE.
*
* *SYMPL* CALL -
*
* LASTNON=FASTLNB(LINE);
*
* LASTNON = FUNCTION RESULT IS POSITION OF NON BLANK.
* LINE = LINE IMAGE BUFFER, FSE INTERNAL FORMAT.
LNB SPACE 4,10
** FASTLNB - IDENTIFY LAST NON BLANK.
*
* ENTRY (A1) = FWA OF FORMAL PARAMETER LIST.
*
* USES X - ALL.
* A - 1, 2, 3, 4, 5.
* B - ALL.
*
* CALLS LENGTH.
TOP SX6 B7-B6 SUBTRACT TRAIL COUNT FROM LENGTH
FASTLNB SUBR
SX6 X1 SAVE TEXT POINTER
SA6 SAVPARM
RJ =XLENGTH CALL LENGTH FUNCTION, SAME PARM
SA1 SAVPARM REBUILD PARM CHAIN
SB1 1
SB2 -8 USEFUL CONSTANT
* X6=LENGTH IN CHARACTERS
ZR X6,FASTLNB IF NOTHING TO DO
BX4 X6 BREAK TOTAL INTO WORDS, CHARS
MX0 57D
AX4 3
BX5 -X0*X6
SB4 X4 B4=WORDS-1
SB5 X5 B5=EXTRA CHARS
SB6 B0 NOW B6 IS RESULT ACCUMULATOR
SB7 X6+8 OFFSET LENGTH BY 8 ...
SB7 B7-B5 ... AND BY SURPLUS CHARACTERS
SA3 X1+B4 LOAD ENDING WORD
SA4 DIVIDE USEFUL FOR DIVISION
SA5 FLIP USEFUL TO CHANGE 055 TO 000
SA1 A3-B1 PREFETCH MORE WORDS DOWN FROM TOP
SA2 A1-B1 DITTO
SX6 B5 NEED TO MULTIPLY CHAR COUNT BY 7
SX0 7
IX6 X6*X0
MX7 4 WILL BE 4+7*CHARS LONG
SX0 B1 FOR FUTURE 60-BIT DECREMENT
SB3 X6 GET VARIABLE BIT COUNT
AX7 B3 THIS IS 4+7*CHARS BITS LONG
BX3 X3-X5 CONVERT ANY 055 FIELD TO 000
BX3 X3*X7 FORCE TRAILER TO ARTIFICIAL BLANKS
IX6 X3-X0 CHANGE LOW ZEROES TO LOW ONES
BX3 X3-X6 ELIMINATE MOST SIGNIFICANT UPPER BITS
BX3 X3*X4 CONSIDER ONLY TOPS OF CHAR FIELDS
CX3 X3 HOW MANY REAL+ARTIFICAL TRAIL BLANKS
SB6 B6+X3 ACCUMULATE RESULT
SX3 X3+B2 SEE IF ALL EIGHT BLANKS
ZR B4,TOP IF NO OTHER WORDS TO DO
NZ X3,TOP DONT DO MORE IF NON-BLANK
LOOP BX6 X1 MOVE PREFETCHED TO SCRATCH
BX7 X2 DITTO
SA1 A2-B1 PREFETCH MORE
SA2 A1-B1 DITTO
BX6 X6-X5 CONVERT 055 FIELDS TO 000
BX7 X7-X5 DITTO
IX3 X6-X0 CHANGE LOW ZEROES TO LOW ONES
BX6 X6-X3 REMOVE MOST UPPER BITS
IX3 X7-X0 CHANGE LOW ZEROES TO LOW ONES
BX7 X7-X3 REMOVE MOST UPPER BITS
BX6 X6*X4 CONSIDER ONLY TOPS OF CHAR FIELDS
BX7 X7*X4 DITTO
CX6 X6 COUNT TRAILING BLANKS
CX7 X7 DITTO
SB6 B6+X6 ACCUMULATE RESULT
SX6 X6+B2 SEE IF ALL EIGHT WERE BLANKS
SB4 B4-B1 DECREMENT WORD COUNT
NZ X6,TOP NO, NOTHING MORE TO DO
ZR B4,TOP WHEN ALL WORDS DONE
SB6 B6+X7 ACCUMULATE ANOTHER RESULT
SX7 X7+B2 SEE IF ALL EIGHT BLANKS
SB4 B4-B1 DECREMENT WORD COUNT
NZ X7,TOP MUST NOT DO MORE SINCE A NON-BLANK
ZR B4,TOP WHEN ALL WORDS DONE
EQ LOOP DO SOME MORE
SAVPARM BSSZ 1
FLIP VFD 4/0,7/55B,7/55B,7/55B,7/55B,7/55B,7/55B,7/55B,7/55B
DIVIDE VFD 4/0,7/100B,7/100B,7/100B,7/100B,7/100B,7/100B,7/100B,7/100B
END
IDENT EXCHWD
ENTRY EXCHWD
SYSCOM B1
TITLE EXCHWD - EXCHANGE BLOCKS OF WRODS.
*COMMENT EXCHWD - EXCHANGE BLOCKS OF WRODS.
COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
XCH SPACE 4,10
*** EXCHWD - EXCHANGE BLOCKS OF WRODS.
*
* G.K. CHACE. 83/02/03.
XCH SPACE 4,10
*** *EXCHWD* EXCHANGES THE TEXT BETWEEN TWO BLOCKS OF WORDS
* IN CENTRAL MEMORY.
XCH SPACE 4,15
*** CALLING SEQUENCE.
*
* *SYMPL* CALL -
*
* EXCHWD(LENGTH,ARRAY1,ARRAY2);
*
* LENGTH = NUMBER OF WORDS.
* ARRAY1, ARRAY2 = THE TWO AREAS TO EXCHANGE.
XCH SPACE 4,10
** EXCHWD - EXCHANGE BLOCKS OF WRODS.
*
* ENTRY (A1) = FWA OF FORMAL PARAMETER LIST.
*
* USES X - 1, 2, 3, 4, 6, 7.
* A - 1, 2, 3, 4, 6, 7.
* B - 1, 2, 5.
EXCHWD SUBR
SB1 1
SA2 A1+B1 X2 -> A
SA3 A2+B1 X3 -> B
SA1 X1 X1 = N
SB2 B1+B1
ZR X1,EXCHWD
MI X1,EXCHWD
SB5 X1 B5 = N
SA1 X2 PREFETCH DATA
SA3 X3
SA2 A1+B1
SA4 A3+B1
LOOP BX6 X1
SA1 A1+B2
BX7 X3
SA3 A3+B2
SB5 B5-B1
SA6 A3-B2
SA7 A1-B2
ZR B5,EXCHWD
BX6 X2
SA2 A2+B2
BX7 X4
SA4 A4+B2
SB5 B5-B1
SA6 A4-B2
SA7 A2-B2
ZR B5,EXCHWD
EQ LOOP
END
IDENT SFMSSTF
ENTRY SFMSSTF
SYSCOM B1
TITLE SFMSSTF - USE SFM TO ENABLE SUBSYSTEM.
*COMMENT SFMSSTF - USE SFM TO ENABLE SUBSYSTEM.
COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
SST SPACE 4,10
*** SFMSSTF - USE SFM TO ENABLE SUBSYSTEM.
*
* G.K. CHACE. 83/02/03.
SST SPACE 4,10
*** *SFMSSTF* CALLS *SFM* WITH THE *SSTF* FUNCTION CODE TO
* SET THE SUBSYSTEM ACCESSABILITY FLAG.
SST SPACE 4,10
** COMMON DECKS.
*CALL COMSSFM
SST SPACE 4,15
*** CALLING SEQUENCE.
*
* *SYMPL* CALL -
*
* SFMSSTF;
SST SPACE 4,10
** SFMSSTF - USE SFM TO ENABLE SUBSYSTEM.
*
* USES B - 1.
*
* MACROS SYSTEM.
SFMSSTF SUBR
SB1 1
SYSTEM SFM,R,XXX,SSTF*100B
EQ SFMSSTF
XXX CON 0
END
IDENT SFMCSTF
ENTRY SFMCSTF
SYSCOM B1
TITLE SFMCSTF - USE SFM TO DISABLE SUBSYSTEM.
*COMMENT SFMCSTF - USE SFM TO DISABLE SUBSYSTEM.
COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
CST SPACE 4,10
*** SFMCSTF - USE SFM TO DISABLE SUBSYSTEM.
*
* G.K. CHACE. 83/02/03.
CST SPACE 4,10
*** *SFMCSTF* CALLS *SFM* WITH THE *CSTF* FUNCTION CODE TO
* CLEAR THE SUBSYSTEM ACCESSABILITY FLAG.
CST SPACE 4,10
** COMMON DECKS.
*CALL COMSSFM
CST SPACE 4,15
*** CALLING SEQUENCE.
*
* *SYMPL* CALL -
*
* SFMCSTF;
CST SPACE 4,10
** SFMCSTF - USE SFM TO DISABLE SUBSYSTEM.
*
* ENTRY (A1) = FWA OF FORMAL PARAMETER LIST.
*
* USES B - 1.
*
* MACROS SYSTEM.
SFMCSTF SUBR
SB1 1
SYSTEM SFM,R,XXX,CSTF*100B
EQ SFMCSTF
XXX CON 0
END
IDENT SETNAD
ENTRY SETNAD
SYSCOM B1
TITLE SETNAD - SET NO AUTO DROP FLAG.
*COMMENT SETNAD - SET NO AUTO DROP FLAG.
COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
NAD SPACE 4,10
*** SETNAD - SET NO AUTO DROP FLAG.
*
* G.K. CHACE. 83/02/03.
NAD SPACE 4,10
*** *SETNAD* USES *LFM* TO SET THE NO-AUTO-DROP FLAG ON
* THE SPECIFIED FILE.
NAD SPACE 4,15
*** CALLING SEQUENCE.
*
* *SYMPL* CALL -
*
* SETNAD(FET);
*
* FET = FET FOR THE FILE TO BE PROCESSED.
NAD SPACE 4,10
** SETNAD - SET NO AUTO DROP FLAG.
*
* ENTRY (A1) = FWA OF FORMAL PARAMETER LIST.
*
* USES X - 2.
* B - 1.
*
* MACROS SETFS.
SETNAD SUBR
SB1 1
BX2 X1
SETFS X2,NAD
EQ SETNAD
END
IDENT SETAUC
ENTRY SETAUC
SYSCOM B1
TITLE SETAUC - COMPUTE AND SET APPLICATION UNIT CHARGE.
*COMMENT SETAUC - COMPUTE AND SET APPLICATION UNIT CHARGE.
COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
AUC SPACE 4,10
*** SETAUC - COMPUTE AND SET APPLICATION UNIT CHARGE.
*
* G.K. CHACE. 83/05/27.
AUC SPACE 4,10
*** *SETAUC* USES *CPM* TO SET THE APPLICATION UNIT CHARGE.
AUC SPACE 4,10
** COMMON DECKS.
*CALL COMCCMD
*CALL COMSSRU
AUC SPACE 4,10
*** CALLING SEQUENCE.
*
* *SYMPL* CALL -
*
* SETAUC(CIO,SECTOR,TERMINAL);
*
* CIO = NUMBER OF CIO CALLS.
* SECTOR = NUMBER OF SECTORS TRANFERRED VIA CIO.
* TERMINAL = NUMBER OF WORDS OF TERMINAL OUTPUT.
AUC SPACE 4,10
** SETAUC - COMPUTE AND SET APPLICATION UNIT CHARGE.
*
* ENTRY (A1) = FWA OF FORMAL PARAMETER LIST.
*
* USES X - 0, 1, 2, 3, 6, 7.
* A - 1, 2, 3, 6, 7.
* B - 1.
*
* MACROS SETAUC.
SETAUC SUBR ENTRY/EXIT
SB1 1
SA2 A1+B1
SA3 A2+B1
SA1 X1 NUMBER OF CIO CALLS
SA2 X2 NUMBER OF PRU-S
SA3 X3+ NUMBER OF WORDS OF TERMINAL OUTPUT
SX0 IMRD READ OPERATION CHARGE
IX1 X1*X0
LX2 IMPT PRU TRANSFER CHARGE
IX6 X1+X2 MS UNITS
SX0 1000 TEMPORARY SCALE TO PREVENT TRUNCATION
IX3 X3*X0
SA6 AUCD
SX0 IFCO CPU PER OUTPUT, MSEC PER WORD
IX3 X3*X0
SX0 "IFCO_D"
IX6 X3/X0 CP TIME
SA6 AUCC
AUC1 SA1 AUCC GET CP TIME
SA2 A1+B1 GET MS UNITS
IX3 X1+X2
ZR X3,SETAUCX IF NO MORE INCREMENTS
SX6 B0
BX3 X3-X3
SA2 AUCE MAXIMUM CP TIME
ZR X1,AUC2 IF NO MORE CP TIME
IX6 X1-X2
BX3 X2
PL X6,AUC2 IF MAXIMUM CP TIME EXCEEDED
BX3 X1 CP TIME INCREMENT
SX6 B0 NO MORE CP TIME
AUC2 SA6 A1 CP TIME OVERFLOW
SX7 B0
SA2 AUCA
SA7 A2+B1 WORD ZERO
BX6 X2+X3
SA6 A7+1 CP TIME WORD ONE
SA1 AUCD MS UNITS
SX2 1777B MAXIMUM MS UNITS
BX3 X3-X3
SX6 B0
ZR X1,AUC3 IF NO MORE MS UNITS
IX6 X1-X2
BX3 X2
PL X6,AUC3 IF MAXIMUM MS UNITS EXCEEDED
SX6 B0 NO MORE MS UNITS
BX3 X1 MS UNITS INCREMENT
AUC3 SA6 AUCD MS UNITS OVERFLOW
LX3 40-0
BX6 X3
SA6 AUCB+2 MS UNITS WORD TWO
SX7 B0
SA7 A6+B1 WORD THREE
SA7 A7+1 WORD FOUR
SETAUC AUCB APPLY CHARGES
EQ AUC1 LOOP FOR NEXT INCREMENT
AUCA VFD 6/1,54/0
AUCB BSSZ 5 SETAUC PARAMETER BLOCK
AUCC CON 0 CP TIME
AUCD CON 0 MS UNITS
AUCE CON 37777777777B MAXIMUM CP TIME INCREMENT
*CALL COMCCPM
END
IDENT ONSW
ENTRY ONSW
SYSCOM B1
TITLE ONSW - SET SENSE SWITCHES.
*COMMENT ONSW - SET SENSE SWITCHES.
COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
ONS SPACE 4,10
*** ONSW - SET SENSE SWITCHES.
*
* G.K. CHACE. 83/02/03.
ONS SPACE 4,15
*** CALLING SEQUENCE.
*
* *SYMPL* CALL -
*
* ONSW(PARAMETER);
*
* PARAMETER = PARAMETER TO PASS TO ONSW MACRO.
ONS SPACE 4,10
** ONSW - SET SENSE SWITCHES.
*
* ENTRY (A1) = FWA OF FORMAL PARAMETER LIST.
*
* USES X - 1.
* A - 1.
* B - 1.
*
* MACROS ONSW.
TOP ONSW X1
ONSW SUBR
SB1 1
SA1 X1
EQ TOP
END
IDENT DISSJ
ENTRY DISSJ
SYSCOM B1
TITLE DISSJ - DISABLE/ENABLE SSJ=.
*COMMENT DISSJ - DISABLE/ENABLE SSJ=.
COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
DISSJ SPACE 4,10
*** DISSJ - DISABLE/ENABLE SSJ=.
*
* E.D. REDIG. 84/03/01.
DISSJ SPACE 4,15
** COMMON DECKS.
*CALL COMCMAC
DISSJ SPACE 4,15
*** CALLING SEQUENCE.
*
* *SYMPL* CALL -
*
* DISSJ(PARAMETER);
*
* PARAMETER = PARAMETER TO PASS TO DISSJ MACRO.
* = 2, DISABLE SSJ= PRIVILEGES.
* = 3, ENABLE SSJ= PRIVILEGES.
DISSJ SPACE 4,10
** DISSJ - DISABLE/ENABLE SSJ=.
*
* ENTRY (A1) = FWA OF FORMAL PARAMETER LIST.
*
* USES X - 1.
* A - 1.
* B - 1.
*
* MACROS DISSJ.
DISSJ SUBR ENTRY/EXIT
SB1 1
SA1 X1+
DISSJ X1
EQ DISSJX RETURN
END
IDENT SETRFLE
ENTRY SETRFLE
SYSCOM B1
TITLE SETRFLE - SET RFL FOR EXTENDED MEMORY.
*COMMENT SETRFLE - SET RFL FOR EXTENDED MEMORY.
COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
RFL SPACE 4,10
*** SETRFLE - SET RFL FOR EXTENDED MEMORY.
*
* G.K. CHACE. 83/02/03.
RFL SPACE 4,15
*** CALLING SEQUENCE.
*
* *SYMPL* CALL -
*
* SETRFLE(PARAMETER);
*
* PARAMETER = PARAMETER TO PASS TO SETRFL MACRO.
RFL SPACE 4,10
** SETRFLE - SET RFL FOR EXTENDED MEMORY.
*
* ENTRY (A1) = FWA OF FORMAL PARAMETER LIST.
*
* USES X - 1.
* A - 1.
* B - 1.
*
* MACROS SETRFL.
TOP SETRFL ,X1
SETRFLE SUBR
SB1 1
SA1 X1
EQ TOP
END
IDENT GETFLCE
ENTRY GETFLCE
SYSCOM B1
TITLE GETFLCE - DETERMINE EXTENDED MEMORY FIELD LENGTH.
*COMMENT GETFLCE - DETERMINE EXTENDED MEMORY FIELD LENGTH.
COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
FLC SPACE 4,10
*** GETFLCE - DETERMINE EXTENDED MEMORY FIELD LENGTH.
*
* G.K. CHACE. 83/02/03.
FLC SPACE 4,15
*** CALLING SEQUENCE.
*
* *SYMPL* CALL -
*
* GETFLCE(PARAMETER);
*
* PARAMETER = PARAMETER TO PASS TO GETFLC MACRO.
FLC SPACE 4,10
** GETFLCE - DETERMINE EXTENDED MEMORY FIELD LENGTH.
*
* ENTRY (A1) = FWA OF FORMAL PARAMETER LIST.
*
* USES B - 1.
*
* MACROS GETFLC.
TOP GETFLC ,X1
GETFLCE SUBR
SB1 1
EQ TOP
END
IDENT PROTEON
ENTRY PROTEON
SYSCOM B1
TITLE PROTEON - PROTECT EXTENDED MEMORY FIELD LENGTH.
*COMMENT PROTEON - PROTECT EXTENDED MEMORY FIELD LENGTH.
COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
PRO SPACE 4,10
*** PROTEON - PROTECT EXTENDED MEMORY FIELD LENGTH.
*
* G.K. CHACE. 83/02/03.
PRO SPACE 4,15
*** CALLING SEQUENCE.
*
* *SYMPL* CALL -
*
* PROTEON(PARAMETER);
*
* PARAMETER = PARAMETER TO PASS TO PROTECT MACRO.
PRO SPACE 4,10
** PROTEON - PROTECT EXTENDED MEMORY FIELD LENGTH.
*
* ENTRY (A1) = FWA OF FORMAL PARAMETER LIST.
*
* USES B - 1.
*
* MACROS PROTECT.
TOP PROTECT ON
PROTEON SUBR
SB1 1
EQ TOP
END
IDENT GETFNT
ENTRY GETFNT
SYSCOM B1
TITLE GETFNT - ACCESS LOCAL FNT-S.
*COMMENT GETFNT - ACCESS LOCAL FNT-S.
COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
FNT SPACE 4,10
*** GETFNT - ACCESS LOCAL FNT-S.
*
* G.K. CHACE. 83/02/03.
FNT SPACE 4,15
*** CALLING SEQUENCE.
*
* *SYMPL* CALL -
*
* GETFNT(PARAMETER);
*
* PARAMETER = PARAMETER TO PASS TO GETFNT MACRO.
FNT SPACE 4,10
** GETFNT - ACCESS LOCAL FNT-S.
*
* ENTRY (A1) = FWA OF FORMAL PARAMETER LIST.
*
* USES X - 2.
* B - 1.
*
* MACROS GETFNT.
TOP GETFNT X2
GETFNT SUBR
SB1 1
BX2 X1
EQ TOP
END
IDENT FILINFO
ENTRY FILINFO
SYSCOM B1
TITLE FILINFO - ACCESS FILE INFORMATION.
*COMMENT FILINFO - ACCESS FILE INFORMATION.
COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
FIL SPACE 4,10
*** FILINFO - ACCESS FILE INFORMATION.
*
* G.K. CHACE. 83/02/03.
FIL SPACE 4,15
*** CALLING SEQUENCE.
*
* *SYMPL* CALL -
*
* FILINFO(PARAMETER);
*
* PARAMETER = PARAMETER TO PASS TO FILINFO MACRO.
FIL SPACE 4,10
** FILINFO - ACCESS FILE INFORMATION.
*
* ENTRY (A1) = FWA OF FORMAL PARAMETER LIST.
*
* USES X - 2.
* B - 1.
*
* MACROS FILINFO.
TOP FILINFO X2
FILINFO SUBR
SB1 1
BX2 X1
EQ TOP
END
IDENT GETJO
ENTRY GETJO
SYSCOM B1
TITLE GETJO - GET JOB ORIGIN.
*COMMENT GETJO - GET JOB ORIGIN.
COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
GJO SPACE 4,10
*** GETJO - GET JOB ORIGIN.
*
* G.K. CHACE. 83/02/03.
GJO SPACE 4,15
*** CALLING SEQUENCE.
*
* *SYMPL* CALL -
*
* GETJO(PARAMETER);
*
* PARAMETER = PARAMETER TO PASS TO GETJO MACRO.
GJO SPACE 4,10
** GETJO - GET JOB ORIGIN.
*
* ENTRY (A1) = FWA OF FORMAL PARAMETER LIST.
*
* USES B - 1.
*
* MACROS GETJO.
TOP GETJO X1
GETJO SUBR
SB1 1
EQ TOP
END
IDENT USERNUM
ENTRY USERNUM
SYSCOM B1
TITLE USERNUM - GET USER NUMBER.
*COMMENT USERNUM - GET USER NUMBER.
COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
GUN SPACE 4,10
*** USERNUM - GET USER NUMBER.
*
* G.K. CHACE. 83/02/03.
GUN SPACE 4,15
*** CALLING SEQUENCE.
*
* *SYMPL* CALL -
*
* USERNUM(PARAMETER);
*
* PARAMETER = PARAMETER TO PASS TO USERNUM MACRO.
GUN SPACE 4,10
** USERNUM - GET USER NUMBER.
*
* ENTRY (A1) = FWA OF FORMAL PARAMETER LIST.
*
* USES B - 1.
*
* MACROS USERNUM.
TOP USERNUM X1
USERNUM SUBR
SB1 1
EQ TOP
END
IDENT GETSS
ENTRY GETSS
SYSCOM B1
TITLE GETSS - GET SUBSYSTEM TYPE.
*COMMENT GETSS - GET SUBSYSTEM TYPE.
COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
GSS SPACE 4,10
*** GETSS - GET SUBSYSTEM TYPE.
*
* G.K. CHACE. 83/02/03.
GSS SPACE 4,15
*** CALLING SEQUENCE.
*
* *SYMPL* CALL -
*
* GETSS(PARAMETER);
*
* PARAMETER = PARAMETER TO PASS TO GETSS MACRO.
GSS SPACE 4,10
** GETSS - GET SUBSYSTEM TYPE.
*
* ENTRY (A1) = FWA OF FORMAL PARAMETER LIST.
*
* USES B - 1.
*
* MACROS GETSS.
TOP GETSS X1
GETSS SUBR
SB1 1
EQ TOP
END
IDENT SETLOF
ENTRY SETLOF
SYSCOM B1
TITLE SETLOF - SET LIST OF FILES.
*COMMENT SETLOF - SET LIST OF FILES.
COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
LOF SPACE 4,10
*** SETLOF - SET LIST OF FILES.
*
* G.K. CHACE. 83/02/03.
LOF SPACE 4,15
*** CALLING SEQUENCE.
*
* *SYMPL* CALL -
*
* SETLOF(PARAMETER);
*
* PARAMETER = PARAMETER TO PASS TO SETLOF MACRO.
LOF SPACE 4,10
** SETLOF - SET LIST OF FILES.
*
* ENTRY (A1) = FWA OF FORMAL PARAMETER LIST.
*
* USES B - 1.
*
* MACROS SETLOF.
TOP SETLOF X1
SETLOF SUBR
SB1 1
EQ TOP
END
IDENT EXCST
ENTRY EXCST
SYSCOM B1
TITLE EXCST - EXECUTE CONTROL STATEMENT.
*COMMENT EXCST - EXECUTE CONTROL STATEMENT.
COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
XCS SPACE 4,10
*** EXCST - EXECUTE CONTROL STATEMENT.
*
* G.K. CHACE. 83/02/03.
XCS SPACE 4,15
*** CALLING SEQUENCE.
*
* *SYMPL* CALL -
*
* EXCST(PARAMETER);
*
* PARAMETER = PARAMETER TO PASS TO EXCST MACRO.
XCS SPACE 4,10
** EXCST - EXECUTE CONTROL STATEMENT.
*
* ENTRY (A1) = FWA OF FORMAL PARAMETER LIST.
*
* USES X - 2.
* B - 1.
*
* MACROS EXCST.
TOP SYSTEM TCS,R,X1,X2
EXCST SUBR
SB1 1
SX2 500B
EQ TOP
END
IDENT DISTCON
ENTRY DISTCON
SYSCOM B1
TITLE DISTCON - DISABLE TERMINAL CONTROL.
*COMMENT DISTCON - DISABLE TERMINAL CONTROL.
COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
DTC SPACE 4,10
*** DISTCON - DISABLE TERMINAL CONTROL.
*
* G.K. CHACE. 83/02/03.
DTC SPACE 4,15
*** CALLING SEQUENCE.
*
* *SYMPL* CALL -
*
* DISTCON(PARAMETER);
*
* PARAMETER = PARAMETER TO PASS TO DISTC MACRO.
DTC SPACE 4,10
** DISTCON - DISABLE TERMINAL CONTROL.
*
* ENTRY (A1) = FWA OF FORMAL PARAMETER LIST.
*
* USES X - 5.
* B - 1.
*
* MACROS DISTC.
DISTCON SUBR
SB1 1
BX5 X1
DISTC ON,X5
EQ DISTCON
END
IDENT CSETA
ENTRY CSETA
SYSCOM B1
TITLE CSETA - SET 6/12 ASCII CHARACTER SET.
*COMMENT CSETA - SET 6/12 ASCII CHARACTER SET.
COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
CSA SPACE 4,10
*** CSETA - SET 6/12 ASCII CHARACTER SET.
*
* G.K. CHACE. 83/02/03.
CSA SPACE 4,15
*** CALLING SEQUENCE.
*
* *SYMPL* CALL -
*
* CSETA;
CSA SPACE 4,10
** CSETA - SET 6/12 ASCII CHARACTER SET.
*
* USES B - 1.
*
* MACROS CSET.
CSETA SUBR
SB1 1
CSET ASCII
EQ CSETA
END
IDENT CSETN
ENTRY CSETN
SYSCOM B1
TITLE CSETN - SET NORMAL CHARACTER SET.
*COMMENT CSETN - SET NORMAL CHARACTER SET.
COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
CSN SPACE 4,10
*** CSETN - SET NORMAL CHARACTER SET.
*
* G.K. CHACE. 83/02/03.
CSN SPACE 4,15
*** CALLING SEQUENCE.
*
* *SYMPL* CALL -
*
* CSETN;
CSN SPACE 4,10
** CSETN - SET NORMAL CHARACTER SET.
*
* USES B - 1.
*
* MACROS CSET.
CSETN SUBR
SB1 1
CSET NORMAL
EQ CSETN
END
IDENT TSTATUS
ENTRY TSTATUS
SYSCOM B1
TITLE TSTATUS - GET TERMINAL STATUS.
*COMMENT TSTATUS - GET TERMINAL STATUS.
COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
GTS SPACE 4,10
*** TSTATUS - GET TERMINAL STATUS.
*
* G.K. CHACE. 83/02/03.
GTS SPACE 4,15
*** CALLING SEQUENCE.
*
* *SYMPL* CALL -
*
* TSTATUS(PARAMETER);
*
* PARAMETER = PARAMETER TO PASS TO TSTATUS MACRO.
GTS SPACE 4,10
** TSTATUS - GET TERMINAL STATUS.
*
* ENTRY (A1) = FWA OF FORMAL PARAMETER LIST.
*
* USES X - 5.
* B - 1.
*
* MACROS TSTATUS.
TSTATUS SUBR
SB1 1
BX5 X1
TSTATUS X5
EQ TSTATUS
END
IDENT SYSREQ
ENTRY SYSREQ
SYSCOM B1
TITLE SYSREQ - PARAMETERIZED SYSTEM REQUEST.
*COMMENT SYSREQ - PARAMETERIZED SYSTEM REQUEST.
COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
SYS SPACE 4,10
*** SYSREQ - PARAMETERIZED SYSTEM REQUEST.
*
* G.K. CHACE. 83/02/03.
SYS SPACE 4,15
*** CALLING SEQUENCE.
*
* *SYMPL* CALL -
*
* SYSREQ(STRING,R,PARM1,PARM2);
*
* STRING = THREE-CHARACTER NAME OF RA+1 REQUEST.
* R = ZERO OR ONE FOR AUTO RECALL.
* PARM1 = FIRST PARAMETER.
* PARM2 = SECOND PARAMETER.
SYS SPACE 4,10
** SYSREQ - PARAMETERIZED SYSTEM REQUEST.
*
* ENTRY (A1) = FWA OF FORMAL PARAMETER LIST.
*
* USES X - 0, 1, 2, 4, 6.
* A - 1, 2, 3, 4.
* B - 1.
*
* MACROS SYSTEM.
TOP LX2 40
LX4 18
BX6 X1+X2
BX6 X6+X3
BX6 X6+X4
SYSTEM
SYSREQ SUBR
SB1 1
SA2 A1+1
SA3 A1+2
SA4 A1+3
SA1 X1
SA2 X2
SA3 X3
SA4 X4
MX0 18
BX1 X0*X1
EQ TOP
END
IDENT EESET
ENTRY EESET
SYSCOM B1
TITLE EESET - ENABLE EVENT.
*COMMENT EESET - ENABLE EVENT.
COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
EES SPACE 4,10
*** EESET - ENABLE EVENT.
*
* G.K. CHACE. 83/02/03.
EES SPACE 4,15
*** CALLING SEQUENCE.
*
* *SYMPL* CALL -
*
* EESET(PARAMETER);
*
* PARAMETER = PARAMETER TO PASS TO EESET MACRO.
EES SPACE 4,10
** EESET - ENABLE EVENT.
*
* ENTRY (A1) = FWA OF FORMAL PARAMETER LIST.
*
* USES X - 1.
* A - 1.
* B - 1.
*
* MACROS EESET.
TOP EESET X1
EESET SUBR
SB1 1
SA1 X1
EQ TOP
END