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