Google
 

Trailing-Edge - PDP-10 Archives - BB-R595B-SM_11-9-85 - mcb/utilities/edtmg.lst
There is 1 other file named edtmg.lst in the archive. Click here to see a list.
								12-Apr-1985 07:09:20	TOPS-20 Bliss-36 4A(225)	    Page   1
								30-Dec-1982 17:30:31	DNET61:<DECNET.UTILITIES>EDTMG.BLI.1 (1)

;   0001  0	
;   0002  0	MODULE EDTMG (					!Edit data into ASCII string.
;   0003  0			IDENT = '001020',
;   0004  0			LANGUAGE (BLISS16, BLISS36) %BLISS36 (, ENTRY ($EDMSG))
;   0005  0			) =
;   0006  1	BEGIN
;   0007  1	!
;   0008  1	!
;   0009  1	!
;   0010  1	!                    COPYRIGHT (c) 1980, 1981, 1982
;   0011  1	!                    DIGITAL EQUIPMENT CORPORATION
;   0012  1	!                        Maynard, Massachusetts
;   0013  1	!
;   0014  1	!     This software is furnished under a license and may  be  used
;   0015  1	!     and copied only in accordance with the terms of such license
;   0016  1	!     and with the inclusion of the above copyright notice.   This
;   0017  1	!     software  or any other copies thereof may not be provided or
;   0018  1	!     otherwise made available to any other person.  No  title  to
;   0019  1	!     and ownership of the software is hereby transferred.
;   0020  1	!
;   0021  1	!     The information  in  this  software  is  subject  to  change
;   0022  1	!     without  notice  and should not be construed as a commitment
;   0023  1	!     by DIGITAL EQUIPMENT CORPORATION.
;   0024  1	!
;   0025  1	!     DIGITAL assumes no responsibility for the use or reliability
;   0026  1	!     of  its  software  on  equipment  which  is  not supplied by
;   0027  1	!     DIGITAL.
;   0028  1	!
;   0029  1	
;   0030  1	!++
;   0031  1	! FACILITY: SYSTEM LIBRARY
;   0032  1	!
;   0033  1	! ABSTRACT:
;   0034  1	!
;   0035  1	!
;   0036  1	! THIS MODULE CONTAINS A GENERAL PURPOSE ROUTINE TO EDIT BINARY DATA
;   0037  1	! INTO AN ASCII TEXT STRING SUITABLE FOR DISPLAY
;   0038  1	!
;   0039  1	!
;   0040  1	! ENVIRONMENT: ANY
;   0041  1	!
;   0042  1	! AUTHOR: ALAN D. PECKHAM, CREATION DATE: 25-AUG-78
;   0043  1	!
;   0044  1	! MODIFIED BY:
;   0045  1	!
;   0046  1	!	, : VERSION
;   0047  1	! 01	-
;   0048  1	!--
;   0049  1	
;   0050  1	!
;   0051  1	! TABLE OF CONTENTS:
;   0052  1	!
EDTMG								12-Apr-1985 07:09:20	TOPS-20 Bliss-36 4A(225)	    Page   2
001020								30-Dec-1982 17:30:31	DNET61:<DECNET.UTILITIES>EDTMG.BLI.1 (1)

;   0053  1	
;   0054  1	FORWARD ROUTINE
;   0055  1	    $EDMSG,					!Edit binary data into text
;   0056  1	    NEXT_PRM,					!Return the next parameter.
;   0057  1	    REPEAT : NOVALUE;				!Call routine repeatedly.
;   0058  1	
;   0059  1	!
;   0060  1	! INCLUDE FILES
;   0061  1	!
;   0062  1	!	NONE
;   0063  1	!
;   0064  1	! MACROS:
;   0065  1	!
;   0066  1	!	NONE
;   0067  1	!
;   0068  1	! EQUATED SYMBOLS:
;   0069  1	!
;   0070  1	
;   0071  1	LITERAL
;   0072  1	    SPACE = %C' ',
;   0073  1	    TAB = %C'	';
;   0074  1	
;   0075  1	!
;   0076  1	! OWN STORAGE:
;   0077  1	!
;   0078  1	
;   0079  1	OWN
;   0080  1	    BUF_PTR,					!Current position in output buffer.
;   0081  1	    PRM_LIST : REF VECTOR,			!Address of next parameter to fetch.
;   0082  1	    REPT;					!Repetition count.
;   0083  1	
;   0084  1	GLOBAL
;   0085  1	    $LNCNT : INITIAL (0);			!Count of new lines.
;   0086  1	
;   0087  1	!
;   0088  1	! EXTERNAL REFERENCES:
;   0089  1	!
;   0090  1	
;   0091  1	EXTERNAL ROUTINE
;   0092  1	    $C5TA,					!Convert RAD50 to ASCII
;   0093  1	    $CBDMG,					!Convert binary to unsigned decimal
;   0094  1	    $CBDSG,					!Convert binary to signed decimal
;   0095  1	    $CBOMG,					!Convert binary to unsigned octal
;   0096  1	    $CBOSG,					!Convert binary to signed octal
;   0097  1	    $CBTMG,					!Convert binary byte to unsigned octal
;   0098  1	    $CDTB,					!Convert decimal ASCII to binary
;   0099  1	    $DAT,					!Insert specified date in output buffer
;   0100  1	    $TIM;					!Insert specified time in output buffer
;   0101  1	
EDTMG								12-Apr-1985 07:09:20	TOPS-20 Bliss-36 4A(225)	    Page   3
001020								30-Dec-1982 17:30:31	DNET61:<DECNET.UTILITIES>EDTMG.BLI.1 (2)

;   0102  1	GLOBAL ROUTINE $EDMSG (BUF_PTR_ADR, PATTERN_PTR, PARAMETER_LIST) =
;   0103  1	
;   0104  1	!++
;   0105  1	! FUNCTIONAL DESCRIPTION:
;   0106  1	!
;   0107  1	!
;   0108  1	!	DIRECTIVES:
;   0109  1	!
;   0110  1	!	%A %nA %#A		ASCII STRING
;   0111  1	!
;   0112  1	!	%B %nB %#B		BINARY BYTE TO OCTAL
;   0113  1	!
;   0114  1	!	%D %nD %#D		BINARY SIGNED DECIMAL (NO SUPPRESSION)
;   0115  1	!
;   0116  1	!	%E %nE %#E		EXTENDED ASCII
;   0117  1	!
;   0118  1	!	%M %nM %#M		BINARY TO DECIMAL MAGNITUDE (ZERO SUPPRESSION)
;   0119  1	!
;   0120  1	!	%O %nO %#O		BINARY TO SIGNED OCTAL
;   0121  1	!
;   0122  1	!	%P %nP %#P		BINARY TO OCTAL MAGNITUDE
;   0123  1	!
;   0124  1	!	%R %nR %#R		RAD50
;   0125  1	!
;   0126  1	!	%nS %#S			SPACE
;   0127  1	!
;   0128  1	!	%T %nT %#T		TAB TO COLUMN (1 TO N)
;   0129  1	!
;   0130  1	!	%U %nU %#U		BINARY TO DECIMAL MAGNITUDE (NO SUPPRESSION)
;   0131  1	!
;   0132  1	!	%X %nX %#X		FILE NAME
;   0133  1	!
;   0134  1	!	%Y			DATE CONVERSION
;   0135  1	!
;   0136  1	!	%0Z %1Z			CONVERT UP HOURS 'HH'
;   0137  1	!
;   0138  1	!	%2Z			CONVERT UP TO MINUTES 'HH:MM'
;   0139  1	!
;   0140  1	!	%3Z			CONVERT UP TO SECONDS 'HH:MM:SS'
;   0141  1	!
;   0142  1	!	%4Z %5Z			CONVERT UP UP TO TICKS 'HH:MM:SS.S'
;   0143  1	!
;   0144  1	!	%^ %n^ %#^		FORM FEED
;   0145  1	!
;   0146  1	!	%/ %n/ %#/		NEW LINE (CR/LF)
;   0147  1	!
;   0148  1	!	%+ %n+			BYPASS PARAMETERS
;   0149  1	!
;   0150  1	!	%- %n-			BACK UP PARAMETERS
;   0151  1	!
;   0152  1	!	%@			CALL USER ROUTINE
;   0153  1	!
EDTMG								12-Apr-1985 07:09:20	TOPS-20 Bliss-36 4A(225)	    Page   4
001020								30-Dec-1982 17:30:31	DNET61:<DECNET.UTILITIES>EDTMG.BLI.1 (2)

;   0154  1	!	%%			INSERT SINGLE CHARACTER '%'
;   0155  1	!
;   0156  1	!	%n<			DEFINE BYTE FIELD
;   0157  1	!
;   0158  1	!	%n>			LOCATE FIELD MARK
;   0159  1	!
;   0160  1	!
;   0161  1	! FORMAL PARAMETERS:
;   0162  1	!
;   0163  1	!	.BUF_PTR_ADR				!Address of character sequence
;   0164  1	!						!pointer to buffer to receive
;   0165  1	!						!text.
;   0166  1	!	.PATTERN_PTR				!Character sequence pointer to
;   0167  1	!						!ASCIZ pattern string.
;   0168  1	!	.PARAMETER_LIST				!Address of list of parameters
;   0169  1	!						!for inclusion in output.
;   0170  1	!
;   0171  1	! IMPLICIT INPUTS:
;   0172  1	!
;   0173  1	!	NONE
;   0174  1	!
;   0175  1	! IMPLICIT OUTPUTS:
;   0176  1	!
;   0177  1	!	The buffer pointer ..BUF_PTR_ADR is updated to point past
;   0178  1	!	the information inserted.
;   0179  1	!
;   0180  1	! ROUTINE VALUE:
;   0181  1	!
;   0182  1	!	A count of the number of characters inserted is returned.
;   0183  1	!
;   0184  1	! SIDE EFFECTS
;   0185  1	!
;   0186  1	!	The global variable $LNCNT is updated to count and CR/LFs inserted
;   0187  1	!	into the text.
;   0188  1	!
;   0189  1	!--
;   0190  1	
;   0191  2	    BEGIN
;   0192  2	
;   0193  2	    MAP
;   0194  2		PARAMETER_LIST : REF VECTOR;
;   0195  2	
;   0196  2	    LOCAL
;   0197  2		BUF_PTR_INI,				!INITIAL POINTER INTO BUFFER
;   0198  2		CHAR,					!CURRENT PATTERN CHARACTER
;   0199  2		PAT_PTR;				!POINTER INTO PATTERN
;   0200  2	
;   0201  2	    BUF_PTR_INI = (BUF_PTR = ..BUF_PTR_ADR);	!Save the initial buffer position
;   0202  2	    PAT_PTR = .PATTERN_PTR;			!Copy the pointer to the pattern
;   0203  2	    PRM_LIST = .PARAMETER_LIST;			!and to the parameters.
;   0204  2	
;   0205  2	    !+
EDTMG								12-Apr-1985 07:09:20	TOPS-20 Bliss-36 4A(225)	    Page   5
001020								30-Dec-1982 17:30:31	DNET61:<DECNET.UTILITIES>EDTMG.BLI.1 (2)

;   0206  2	    ! Pick up consecutive characters from the pattern until
;   0207  2	    ! we hit the null byte.
;   0208  2	    !-
;   0209  2	
;   0210  2	    WHILE (CHAR = CH$RCHAR_A (PAT_PTR)) NEQ 0 DO
;   0211  2	
;   0212  2		IF .CHAR NEQ %C'%'			!Check if it is a directive.
;   0213  2		THEN 					!If not, then
;   0214  2		    CH$WCHAR_A (.CHAR, BUF_PTR)		!just transfer the character.
;   0215  2		ELSE 					!Look for a repeat count.
;   0216  3		    BEGIN
;   0217  3		    CHAR = CH$RCHAR (.PAT_PTR);		!Peek at the next character
;   0218  4		    REPT = (SELECTONE .CHAR OF
;   0219  4			SET
;   0220  4			[%C'0' TO %C'9'] :
;   0221  4	
;   0222  4			    !+
;   0223  4			    ! A number is provided in the pattern
;   0224  4			    !-
;   0225  4	
;   0226  4			    $CDTB (PAT_PTR);		!Call the decimal-to-binary converter
;   0227  4			[%C'#'] :
;   0228  4	
;   0229  4			    !+
;   0230  4			    ! A number is provided in the parameter list
;   0231  4			    !-
;   0232  4	
;   0233  5			    BEGIN
;   0234  5			    PAT_PTR = CH$PLUS (.PAT_PTR, 1);	!Bypass the pattern character
;   0235  5			    NEXT_PRM ()			!and return the next parameter.
;   0236  4			    END;
;   0237  4			[OTHERWISE] :
;   0238  4	
;   0239  4			    !+
;   0240  4			    ! The default count is one.
;   0241  4			    !-
;   0242  4	
;   0243  4			    1;
;   0244  3			TES);
;   0245  3	
;   0246  3		    !+
;   0247  3		    ! Now check to see which directive is being invoked
;   0248  3		    ! and perform the appropriate action.
;   0249  3		    !-
;   0250  3	
;   0251  4		    CASE (CHAR = CH$RCHAR_A (PAT_PTR))	!Get the next character.
;   0252  3		    FROM %C'%' TO %C'^' OF 		!Range it on our list
;   0253  3			SET
;   0254  3	
;   0255  3			[%C'%'] :
;   0256  3	
;   0257  3			    !+
EDTMG								12-Apr-1985 07:09:20	TOPS-20 Bliss-36 4A(225)	    Page   6
001020								30-Dec-1982 17:30:31	DNET61:<DECNET.UTILITIES>EDTMG.BLI.1 (2)

;   0258  3			    ! Insert a '%' into the output stream
;   0259  3			    !-
;   0260  3	
;   0261  3			    CH$WCHAR_A (%C'%', BUF_PTR);
;   0262  3	
;   0263  3			[%C'+'] :
;   0264  3	
;   0265  3			    !+
;   0266  3			    ! Bypass some parameters
;   0267  3			    !-
;   0268  3	
;   0269  3			    PRM_LIST = PRM_LIST [.REPT];
;   0270  3	
;   0271  3			[%C'-'] :
;   0272  3	
;   0273  3			    !+
;   0274  3			    ! Back up over some parameters
;   0275  3			    !-
;   0276  3	
;   0277  3			    PRM_LIST = PRM_LIST [-.REPT];
;   0278  3	
;   0279  3			[%C'/'] :
;   0280  3	
;   0281  3			    !+
;   0282  3			    ! Insert one or more cr/lf pairs
;   0283  3			    !-
;   0284  3	
;   0285  3			    DO
;   0286  4				BEGIN
;   0287  4				$LNCNT = .$LNCNT + 1;
;   0288  4				CH$WCHAR_A (13, BUF_PTR);
;   0289  4				CH$WCHAR_A (10, BUF_PTR)
;   0290  4				END
;   0291  3			    UNTIL (REPT = .REPT - 1) LEQ 0;
;   0292  3	
;   0293  3			[%C'<'] :
;   0294  3	
;   0295  3			    !+
;   0296  3			    ! Initialize field mark
;   0297  3			    !-
;   0298  3	
;   0299  4			    BEGIN
;   0300  4	
;   0301  4			    LOCAL
;   0302  4				PTR;
;   0303  4	
;   0304  4			    PTR = .BUF_PTR;
;   0305  4	
;   0306  4			    WHILE (REPT = .REPT - 1) GEQ 0 DO
;   0307  4				CH$WCHAR_A (SPACE, PTR);
;   0308  4	
;   0309  4			    CH$WCHAR (0, .PTR);
EDTMG								12-Apr-1985 07:09:20	TOPS-20 Bliss-36 4A(225)	    Page   7
001020								30-Dec-1982 17:30:31	DNET61:<DECNET.UTILITIES>EDTMG.BLI.1 (2)

;   0310  3			    END;
;   0311  3	
;   0312  3			[%C'>'] :
;   0313  3	
;   0314  3			    !+
;   0315  3			    ! Position to end of field
;   0316  3			    !-
;   0317  3	
;   0318  4			    BEGIN
;   0319  4	
;   0320  4			    LOCAL
;   0321  4				PTR;
;   0322  4	
;   0323  4			    PTR = CH$FIND_CH (.REPT, .BUF_PTR, 0);
;   0324  4			    BUF_PTR = (IF CH$FAIL (.PTR) THEN CH$PLUS (.BUF_PTR, .REPT) ELSE .PTR);
;   0325  3			    END;
;   0326  3	
;   0327  3			[%C'A'] :
;   0328  3	
;   0329  3			    !+
;   0330  3			    ! Transfer character string to output stream.
;   0331  3			    !-
;   0332  3	
;   0333  4			    BEGIN
;   0334  4	
;   0335  4			    LOCAL
;   0336  4				PTR;			!Pointer into paramter string
;   0337  4	
;   0338  4			    PTR = NEXT_PRM ();		!Get the pointer
;   0339  4	
;   0340  4			    WHILE (REPT = .REPT - 1) GEQ 0 DO
;   0341  4				CH$WCHAR_A (CH$RCHAR_A (PTR), BUF_PTR);
;   0342  4	
;   0343  3			    END;
;   0344  3	
;   0345  3			[%C'B'] :
;   0346  3	
;   0347  3			    !+
;   0348  3			    ! Display character item as unsigned octal number.
;   0349  3			    ! Parameter item is a pointer to characters.
;   0350  3			    !-
;   0351  3	
;   0352  3			    IF .REPT GTR 0
;   0353  3			    THEN
;   0354  4				BEGIN
;   0355  4	
;   0356  4				LOCAL
;   0357  4				    PTR;
;   0358  4	
;   0359  4				PTR = NEXT_PRM ();
;   0360  4				$CBTMG (BUF_PTR, CH$RCHAR_A (PTR), 1);
;   0361  4	
EDTMG								12-Apr-1985 07:09:20	TOPS-20 Bliss-36 4A(225)	    Page   8
001020								30-Dec-1982 17:30:31	DNET61:<DECNET.UTILITIES>EDTMG.BLI.1 (2)

;   0362  4				WHILE (REPT = .REPT - 1) GTR 0 DO
;   0363  5				    BEGIN
;   0364  5				    CH$WCHAR_A (SPACE, BUF_PTR);
;   0365  5				    $CBTMG (BUF_PTR, CH$RCHAR_A (PTR), 1);
;   0366  4				    END;
;   0367  4	
;   0368  3				END;
;   0369  3	
;   0370  3			[%C'D'] :
;   0371  3	
;   0372  3			    !+
;   0373  3			    ! Display parameter as signed decimal.
;   0374  3			    !-
;   0375  3	
;   0376  3			    REPEAT ($CBDSG, 0, TAB);
;   0377  3	
;   0378  3			[%C'E'] :
;   0379  3	
;   0380  3			    !+
;   0381  3			    ! Insert character string while editing undisplayable
;   0382  3			    ! characters to the character '.'.
;   0383  3			    !-
;   0384  3	
;   0385  4			    BEGIN
;   0386  4	
;   0387  4			    LOCAL
;   0388  4				CHAR,			!Current character being processed
;   0389  4				PTR;			!Pointer into paramter string
;   0390  4	
;   0391  4			    PTR = NEXT_PRM ();		!Get the pointer
;   0392  4	
;   0393  4			    WHILE (REPT = .REPT - 1) GEQ 0 DO
;   0394  5				BEGIN
;   0395  5				CHAR = CH$RCHAR_A (PTR) AND 127;
;   0396  5	
;   0397  5				IF .CHAR LSS 32 OR .CHAR EQL 127 THEN CHAR = SPACE;
;   0398  5	
;   0399  5				CH$WCHAR_A (.CHAR, BUF_PTR)
;   0400  4				END;
;   0401  4	
;   0402  3			    END;
;   0403  3	
;   0404  3			[%C'M'] :
;   0405  3	
;   0406  3			    !+
;   0407  3			    ! Display parameter as unsigned decimal.
;   0408  3			    !-
;   0409  3	
;   0410  3			    REPEAT ($CBDMG, 0, TAB);
;   0411  3	
;   0412  3			[%C'O'] :
;   0413  3	
EDTMG								12-Apr-1985 07:09:20	TOPS-20 Bliss-36 4A(225)	    Page   9
001020								30-Dec-1982 17:30:31	DNET61:<DECNET.UTILITIES>EDTMG.BLI.1 (2)

;   0414  3			    !+
;   0415  3			    ! Display parameter as signed octal.
;   0416  3			    !-
;   0417  3	
;   0418  3			    REPEAT ($CBOSG, 0, TAB);
;   0419  3	
;   0420  3			[%C'P'] :
;   0421  3	
;   0422  3			    !+
;   0423  3			    ! Display parameter as unsigned octal.
;   0424  3			    !-
;   0425  3	
;   0426  3			    REPEAT ($CBOMG, 1, TAB);
;   0427  3	
;   0428  3			[%C'R'] :
;   0429  3	
;   0430  3			    !+
;   0431  3			    ! Translate parameter from RAD50 format to ASCII.
;   0432  3			    !-
;   0433  3	
;   0434  3			    DO
;   0435  3				$C5TA (BUF_PTR, NEXT_PRM ())
;   0436  3			    UNTIL (REPT = .REPT - 1) LEQ 0;
;   0437  3	
;   0438  3			[%C'S'] :
;   0439  3	
;   0440  3			    !+
;   0441  3			    ! Insert one or more spaces.
;   0442  3			    !-
;   0443  3	
;   0444  3			    WHILE (REPT = .REPT - 1) GEQ 0 DO
;   0445  3				CH$WCHAR_A (%C' ', BUF_PTR);
;   0446  3	
;   0447  3			[%C'T'] :
;   0448  3	
;   0449  3			    !+
;   0450  3			    ! Tab to specified column.
;   0451  3			    !-
;   0452  3	
;   0453  4			    BEGIN
;   0454  4	
;   0455  4			    LOCAL
;   0456  4				NEW_BUF_PTR;
;   0457  4	
;   0458  4			    NEW_BUF_PTR = CH$PLUS (.BUF_PTR_INI, .REPT - 1);
;   0459  4	
;   0460  4			    WHILE CH$DIFF (.NEW_BUF_PTR, .BUF_PTR) GTR 0 DO
;   0461  4				CH$WCHAR_A (%C' ', BUF_PTR);
;   0462  4	
;   0463  4			    BUF_PTR = .NEW_BUF_PTR
;   0464  3			    END;
;   0465  3	
EDTMG								12-Apr-1985 07:09:20	TOPS-20 Bliss-36 4A(225)	    Page  10
001020								30-Dec-1982 17:30:31	DNET61:<DECNET.UTILITIES>EDTMG.BLI.1 (2)

;   0466  3			[%C'U'] :
;   0467  3	
;   0468  3			    !+
;   0469  3			    ! Display next parameter as unsigned decimal.
;   0470  3			    ! no zero suppression is done.
;   0471  3			    !-
;   0472  3	
;   0473  3			    REPEAT ($CBDMG, 1, TAB);
;   0474  3	
;   0475  3			[%C'X'] :
;   0476  3	
;   0477  3			    !+
;   0478  3			    ! Display next four parameters as a file name and extension.
;   0479  3			    !-
;   0480  3	
;   0481  3			    0;				!Not ready yet.
;   0482  3	
;   0483  3			[%C'Y'] :
;   0484  3	
;   0485  3			    !+
;   0486  3			    ! Date converion.
;   0487  3			    !-
;   0488  3	
;   0489  3			    $DAT (BUF_PTR, NEXT_PRM ());
;   0490  3	
;   0491  3			[%C'Z'] :
;   0492  3	
;   0493  3			    !+
;   0494  3			    ! Time conversion.
;   0495  3			    !-
;   0496  3	
;   0497  3			    $TIM (BUF_PTR, NEXT_PRM (), .REPT);
;   0498  3	
;   0499  3			[%C'@'] :
;   0500  3	
;   0501  3			    !+
;   0502  3			    ! Call user supplied routine.
;   0503  3			    !-
;   0504  3	
;   0505  4			    BEGIN
;   0506  4	
;   0507  4			    BIND ROUTINE
;   0508  4				USER_ROUTINE = NEXT_PRM ();
;   0509  4	
;   0510  4			    USER_ROUTINE (BUF_PTR, PAT_PTR, PRM_LIST);
;   0511  3			    END;
;   0512  3	
;   0513  3			[%C'^'] :
;   0514  3	
;   0515  3			    !+
;   0516  3			    ! Insert one or more form-feeds.
;   0517  3			    !-
EDTMG								12-Apr-1985 07:09:20	TOPS-20 Bliss-36 4A(225)	    Page  11
001020								30-Dec-1982 17:30:31	DNET61:<DECNET.UTILITIES>EDTMG.BLI.1 (2)

;   0518  3	
;   0519  3			    WHILE (REPT = .REPT - 1) GEQ 0 DO
;   0520  3				CH$WCHAR_A (12, BUF_PTR);
;   0521  3	
;   0522  3			[INRANGE, OUTRANGE] :
;   0523  3	
;   0524  3			    !+
;   0525  3			    ! Invalid character - insert the directive sequence
;   0526  3			    ! into the output stream.
;   0527  3			    !-
;   0528  3	
;   0529  3			    0;				!Not ready yet.
;   0530  3			TES;
;   0531  3	
;   0532  2		    END;
;   0533  2	
;   0534  2	    CH$WCHAR (0, .BUF_PTR);			!Make result ASCIZ.
;   0535  2	    .BUF_PTR_ADR = .BUF_PTR;			!Return updated buffer pointer
;   0536  2	    CH$DIFF (.BUF_PTR, .BUF_PTR_INI)		!Return the number of characters inserted.
;   0537  1	    END;					!OF EDMSG


	TITLE	EDTMG
	TWOSEG


	ENTRY	$EDMSG


	.REQUEST  SYS:B362LB.REL


	RELOC	0				;					000000'
BUF_PTR:BLOCK	1				;					000000'
PRM_LIST:
	BLOCK	1				;					000001'
REPT:	BLOCK	1				;					000002'
$LNCNT::EXP	0				;					000003' 000000	000000


	EXTERN	$C5TA, $CBDMG, $CBDSG, $CBOMG, $CBOSG, $CBTMG, $CDTB, $DAT, $TIM


AC0=	0
AC1=	1
AC2=	2
AC3=	3
AC4=	4
AC5=	5
AC6=	6
AC7=	7
AC10=	10
EDTMG								12-Apr-1985 07:09:20	TOPS-20 Bliss-36 4A(225)	    Page  12
001020								30-Dec-1982 17:30:31	DNET61:<DECNET.UTILITIES>EDTMG.BLI.1 (2)

AC11=	11
AC12=	12
AC13=	13
AC14=	14
FP=	15
AC16=	16
SP=	17


	RELOC	400000				;					400000'
$EDMSG::PUSH	SP,AC13				; SP,AC13				400000' 261 17 0 00 000013		0102
	PUSH	SP,AC14				; SP,AC14				400001' 261 17 0 00 000014
	PUSH	SP,AC16				; SP,AC16				400002' 261 17 0 00 000016
	ADJSP	SP,1				; SP,1					400003' 105 17 0 00 000001
	MOVE	AC1,-7(SP)			; AC1,BUF_PTR_ADR			400004' 200 01 0 17 777771		0201
	MOVE	AC2,0(AC1)			; AC2,0(AC1)				400005' 200 02 0 01 000000
	MOVEM	AC2,BUF_PTR			; AC2,BUF_PTR				400006' 202 02 0 00 000000'
	MOVE	AC13,0(AC1)			; BUF_PTR_INI,0(AC1)			400007' 200 13 0 01 000000
	MOVE	AC1,-6(SP)			; AC1,PATTERN_PTR			400010' 200 01 0 17 777772		0202
	MOVEM	AC1,0(SP)			; AC1,PAT_PTR				400011' 202 01 0 17 000000
	MOVE	AC1,-5(SP)			; AC1,PARAMETER_LIST			400012' 200 01 0 17 777773		0203
	MOVEM	AC1,PRM_LIST			; AC1,PRM_LIST				400013' 202 01 0 00 000001'
L.1:	ILDB	AC14,0(SP)			; CHAR,PAT_PTR				400014' 134 14 0 17 000000		0210
	JUMPE	AC14,L.40			; CHAR,L.40				400015' 322 14 0 00 400354'
	CAIN	AC14,45				; CHAR,45				400016' 306 14 0 00 000045		0212
	JRST	L.2				; L.2					400017' 254 00 0 00 400022'
	IDPB	AC14,BUF_PTR			; CHAR,BUF_PTR				400020' 136 14 0 00 000000'		0214
	JRST	L.1				; L.1					400021' 254 00 0 00 400014'		0212
L.2:	MOVE	AC1,0(SP)			; AC1,PAT_PTR				400022' 200 01 0 17 000000		0217
	ILDB	AC14,AC1			; CHAR,AC1				400023' 134 14 0 00 000001
	CAIL	AC14,60				; CHAR,60				400024' 301 14 0 00 000060		0220
	CAILE	AC14,71				; CHAR,71				400025' 303 14 0 00 000071
	JRST	L.3				; L.3					400026' 254 00 0 00 400034'
	MOVEI	AC1,0(SP)			; AC1,PAT_PTR				400027' 201 01 0 17 000000		0226
	PUSH	SP,AC1				; SP,AC1				400030' 261 17 0 00 000001
	PUSHJ	SP,$CDTB			; SP,$CDTB				400031' 260 17 0 00 000000*
	ADJSP	SP,-1				; SP,-1					400032' 105 17 0 00 777777
	JRST	L.5				; L.5					400033' 254 00 0 00 400044'		0218
L.3:	CAIE	AC14,43				; CHAR,43				400034' 302 14 0 00 000043		0227
	JRST	L.4				; L.4					400035' 254 00 0 00 400043'
	MOVE	AC1,0(SP)			; AC1,PAT_PTR				400036' 200 01 0 17 000000		0234
	IBP	AC1				; AC1					400037' 133 00 0 00 000001
	MOVEM	AC1,0(SP)			; AC1,PAT_PTR				400040' 202 01 0 17 000000
	PUSHJ	SP,NEXT_PRM			; SP,NEXT_PRM				400041' 260 17 0 00 000000V		0235
	JRST	L.5				; L.5					400042' 254 00 0 00 400044'		0218
L.4:	MOVEI	AC1,1				; AC1,1					400043' 201 01 0 00 000001
L.5:	MOVEM	AC1,REPT			; AC1,REPT				400044' 202 01 0 00 000002'
	ILDB	AC14,0(SP)			; CHAR,PAT_PTR				400045' 134 14 0 17 000000		0251
	MOVE	AC1,AC14			; AC1,CHAR				400046' 200 01 0 00 000014
	SUBI	AC1,45				; AC1,45				400047' 275 01 0 00 000045
	JUMPL	AC1,L.1				; AC1,L.1				400050' 321 01 0 00 400014'
	CAIGE	AC1,72				; AC1,72				400051' 305 01 0 00 000072
EDTMG								12-Apr-1985 07:09:20	TOPS-20 Bliss-36 4A(225)	    Page  13
001020								30-Dec-1982 17:30:31	DNET61:<DECNET.UTILITIES>EDTMG.BLI.1 (2)

	JRST	L.6(AC1)			; L.6(AC1)				400052' 254 00 0 01 400054'
	JRST	L.1				; L.1					400053' 254 00 0 00 400014'
L.6:	JRST	L.7				; L.7					400054' 254 00 0 00 400146'
	JRST	L.1				; L.1					400055' 254 00 0 00 400014'
	JRST	L.1				; L.1					400056' 254 00 0 00 400014'
	JRST	L.1				; L.1					400057' 254 00 0 00 400014'
	JRST	L.1				; L.1					400060' 254 00 0 00 400014'
	JRST	L.1				; L.1					400061' 254 00 0 00 400014'
	JRST	L.8				; L.8					400062' 254 00 0 00 400151'
	JRST	L.1				; L.1					400063' 254 00 0 00 400014'
	JRST	L.9				; L.9					400064' 254 00 0 00 400152'
	JRST	L.1				; L.1					400065' 254 00 0 00 400014'
	JRST	L.10				; L.10					400066' 254 00 0 00 400155'
	JRST	L.1				; L.1					400067' 254 00 0 00 400014'
	JRST	L.1				; L.1					400070' 254 00 0 00 400014'
	JRST	L.1				; L.1					400071' 254 00 0 00 400014'
	JRST	L.1				; L.1					400072' 254 00 0 00 400014'
	JRST	L.1				; L.1					400073' 254 00 0 00 400014'
	JRST	L.1				; L.1					400074' 254 00 0 00 400014'
	JRST	L.1				; L.1					400075' 254 00 0 00 400014'
	JRST	L.1				; L.1					400076' 254 00 0 00 400014'
	JRST	L.1				; L.1					400077' 254 00 0 00 400014'
	JRST	L.1				; L.1					400100' 254 00 0 00 400014'
	JRST	L.1				; L.1					400101' 254 00 0 00 400014'
	JRST	L.1				; L.1					400102' 254 00 0 00 400014'
	JRST	L.11				; L.11					400103' 254 00 0 00 400165'
	JRST	L.1				; L.1					400104' 254 00 0 00 400014'
	JRST	L.14				; L.14					400105' 254 00 0 00 400176'
	JRST	L.1				; L.1					400106' 254 00 0 00 400014'
	JRST	L.37				; L.37					400107' 254 00 0 00 400337'
	JRST	L.16				; L.16					400110' 254 00 0 00 400207'
	JRST	L.18				; L.18					400111' 254 00 0 00 400215'
	JRST	L.1				; L.1					400112' 254 00 0 00 400014'
	JRST	L.20				; L.20					400113' 254 00 0 00 400241'
	JRST	L.21				; L.21					400114' 254 00 0 00 400243'
	JRST	L.1				; L.1					400115' 254 00 0 00 400014'
	JRST	L.1				; L.1					400116' 254 00 0 00 400014'
	JRST	L.1				; L.1					400117' 254 00 0 00 400014'
	JRST	L.1				; L.1					400120' 254 00 0 00 400014'
	JRST	L.1				; L.1					400121' 254 00 0 00 400014'
	JRST	L.1				; L.1					400122' 254 00 0 00 400014'
	JRST	L.1				; L.1					400123' 254 00 0 00 400014'
	JRST	L.23				; L.23					400124' 254 00 0 00 400255'
	JRST	L.1				; L.1					400125' 254 00 0 00 400014'
	JRST	L.24				; L.24					400126' 254 00 0 00 400257'
	JRST	L.26				; L.26					400127' 254 00 0 00 400262'
	JRST	L.1				; L.1					400130' 254 00 0 00 400014'
	JRST	L.27				; L.27					400131' 254 00 0 00 400264'
	JRST	L.28				; L.28					400132' 254 00 0 00 400274'
	JRST	L.29				; L.29					400133' 254 00 0 00 400301'
	JRST	L.32				; L.32					400134' 254 00 0 00 400316'
	JRST	L.1				; L.1					400135' 254 00 0 00 400014'
EDTMG								12-Apr-1985 07:09:20	TOPS-20 Bliss-36 4A(225)	    Page  14
001020								30-Dec-1982 17:30:31	DNET61:<DECNET.UTILITIES>EDTMG.BLI.1 (2)

	JRST	L.1				; L.1					400136' 254 00 0 00 400014'
	JRST	L.1				; L.1					400137' 254 00 0 00 400014'
	JRST	L.35				; L.35					400140' 254 00 0 00 400323'
	JRST	L.36				; L.36					400141' 254 00 0 00 400331'
	JRST	L.1				; L.1					400142' 254 00 0 00 400014'
	JRST	L.1				; L.1					400143' 254 00 0 00 400014'
	JRST	L.1				; L.1					400144' 254 00 0 00 400014'
	JRST	L.39				; L.39					400145' 254 00 0 00 400347'
L.7:	MOVEI	AC1,45				; AC1,45				400146' 201 01 0 00 000045		0261
	IDPB	AC1,BUF_PTR			; AC1,BUF_PTR				400147' 136 01 0 00 000000'
	JRST	L.1				; L.1					400150' 254 00 0 00 400014'		0251
L.8:	SKIPA	AC1,REPT			; AC1,REPT				400151' 334 01 0 00 000002'		0269
L.9:	MOVN	AC1,REPT			; AC1,REPT				400152' 210 01 0 00 000002'		0277
	ADDM	AC1,PRM_LIST			; AC1,PRM_LIST				400153' 272 01 0 00 000001'
	JRST	L.1				; L.1					400154' 254 00 0 00 400014'		0251
L.10:	AOS	$LNCNT				; $LNCNT				400155' 350 00 0 00 000003'		0287
	MOVEI	AC1,15				; AC1,15				400156' 201 01 0 00 000015		0288
	IDPB	AC1,BUF_PTR			; AC1,BUF_PTR				400157' 136 01 0 00 000000'
	MOVEI	AC1,12				; AC1,12				400160' 201 01 0 00 000012		0289
	IDPB	AC1,BUF_PTR			; AC1,BUF_PTR				400161' 136 01 0 00 000000'
	SOSLE	REPT				; REPT					400162' 373 00 0 00 000002'		0291
	JRST	L.10				; L.10					400163' 254 00 0 00 400155'		0285
	JRST	L.1				; L.1					400164' 254 00 0 00 400014'		0251
L.11:	MOVE	AC1,BUF_PTR			; PTR,BUF_PTR				400165' 200 01 0 00 000000'		0304
L.12:	SOSGE	REPT				; REPT					400166' 375 00 0 00 000002'		0306
	JRST	L.13				; L.13					400167' 254 00 0 00 400173'
	MOVEI	AC2,40				; AC2,40				400170' 201 02 0 00 000040		0307
	IDPB	AC2,AC1				; AC2,PTR				400171' 136 02 0 00 000001
	JRST	L.12				; L.12					400172' 254 00 0 00 400166'		0306
L.13:	SETZ	AC2,				; AC2,					400173' 400 02 0 00 000000		0309
	IDPB	AC2,AC1				; AC2,AC1				400174' 136 02 0 00 000001
	JRST	L.1				; L.1					400175' 254 00 0 00 400014'		0251
L.14:	PUSH	SP,REPT				; SP,REPT				400176' 261 17 0 00 000002'		0323
	PUSH	SP,BUF_PTR			; SP,BUF_PTR				400177' 261 17 0 00 000000'
	PUSH	SP,C.2				; SP,[0]				400200' 261 17 0 00 400373'
	PUSHJ	SP,CHFCH%			; SP,CHFCH%				400201' 260 17 0 00 000000*
	JUMPN	AC1,L.15			; PTR,L.15				400202' 326 01 0 00 400205'		0324
	MOVE	AC1,REPT			; AC1,REPT				400203' 200 01 0 00 000002'
	ADJBP	AC1,BUF_PTR			; AC1,BUF_PTR				400204' 133 01 0 00 000000'
L.15:	MOVEM	AC1,BUF_PTR			; AC1,BUF_PTR				400205' 202 01 0 00 000000'
	JRST	L.38				; L.38					400206' 254 00 0 00 400345'
L.16:	PUSHJ	SP,NEXT_PRM			; SP,NEXT_PRM				400207' 260 17 0 00 000000V		0338
L.17:	SOSGE	REPT				; REPT					400210' 375 00 0 00 000002'		0340
	JRST	L.1				; L.1					400211' 254 00 0 00 400014'
	ILDB	AC2,AC1				; AC2,PTR				400212' 134 02 0 00 000001		0341
	IDPB	AC2,BUF_PTR			; AC2,BUF_PTR				400213' 136 02 0 00 000000'
	JRST	L.17				; L.17					400214' 254 00 0 00 400210'		0340
L.18:	SKIPG	REPT				; REPT					400215' 337 00 0 00 000002'		0352
	JRST	L.1				; L.1					400216' 254 00 0 00 400014'
	PUSHJ	SP,NEXT_PRM			; SP,NEXT_PRM				400217' 260 17 0 00 000000V		0359
	MOVE	AC16,AC1			; PTR,AC1				400220' 200 16 0 00 000001
	PUSH	SP,C.3				; SP,[0,,BUF_PTR]			400221' 261 17 0 00 400374'		0360
EDTMG								12-Apr-1985 07:09:20	TOPS-20 Bliss-36 4A(225)	    Page  15
001020								30-Dec-1982 17:30:31	DNET61:<DECNET.UTILITIES>EDTMG.BLI.1 (2)

	ILDB	AC1,AC16			; AC1,PTR				400222' 134 01 0 00 000016
	PUSH	SP,AC1				; SP,AC1				400223' 261 17 0 00 000001
	PUSH	SP,C.4				; SP,[1]				400224' 261 17 0 00 400375'
	PUSHJ	SP,$CBTMG			; SP,$CBTMG				400225' 260 17 0 00 000000*
L.19:	SOSG	REPT				; REPT					400226' 377 00 0 00 000002'		0362
	JRST	L.38				; L.38					400227' 254 00 0 00 400345'
	MOVEI	AC1,40				; AC1,40				400230' 201 01 0 00 000040		0364
	IDPB	AC1,BUF_PTR			; AC1,BUF_PTR				400231' 136 01 0 00 000000'
	PUSH	SP,C.3				; SP,[0,,BUF_PTR]			400232' 261 17 0 00 400374'		0365
	ILDB	AC1,AC16			; AC1,PTR				400233' 134 01 0 00 000016
	PUSH	SP,AC1				; SP,AC1				400234' 261 17 0 00 000001
	PUSH	SP,C.4				; SP,[1]				400235' 261 17 0 00 400375'
	PUSHJ	SP,$CBTMG			; SP,$CBTMG				400236' 260 17 0 00 000000*
	ADJSP	SP,-3				; SP,-3					400237' 105 17 0 00 777775		0363
	JRST	L.19				; L.19					400240' 254 00 0 00 400226'		0362
L.20:	PUSH	SP,C.5				; SP,[0,,$CBDSG]			400241' 261 17 0 00 400376'		0376
	JRST	L.25				; L.25					400242' 254 00 0 00 400260'
L.21:	PUSHJ	SP,NEXT_PRM			; SP,NEXT_PRM				400243' 260 17 0 00 000000V		0391
L.22:	SOSGE	REPT				; REPT					400244' 375 00 0 00 000002'		0393
	JRST	L.1				; L.1					400245' 254 00 0 00 400014'
	ILDB	AC3,AC1				; AC3,PTR				400246' 134 03 0 00 000001		0395
	LDB	AC2,C.1				; CHAR,[POINT 7,AC3,35]  <0,7>		400247' 135 02 0 00 400372'
	CAIL	AC2,40				; CHAR,40				400250' 301 02 0 00 000040		0397
	CAIN	AC2,177				; CHAR,177				400251' 306 02 0 00 000177
	MOVEI	AC2,40				; CHAR,40				400252' 201 02 0 00 000040
	IDPB	AC2,BUF_PTR			; CHAR,BUF_PTR				400253' 136 02 0 00 000000'		0399
	JRST	L.22				; L.22					400254' 254 00 0 00 400244'		0393
L.23:	PUSH	SP,C.6				; SP,[0,,$CBDMG]			400255' 261 17 0 00 400377'		0410
	JRST	L.25				; L.25					400256' 254 00 0 00 400260'
L.24:	PUSH	SP,C.7				; SP,[0,,$CBOSG]			400257' 261 17 0 00 400400'		0418
L.25:	PUSH	SP,C.2				; SP,[0]				400260' 261 17 0 00 400373'
	JRST	L.34				; L.34					400261' 254 00 0 00 400320'
L.26:	PUSH	SP,C.8				; SP,[0,,$CBOMG]			400262' 261 17 0 00 400401'		0426
	JRST	L.33				; L.33					400263' 254 00 0 00 400317'
L.27:	PUSH	SP,C.3				; SP,[0,,BUF_PTR]			400264' 261 17 0 00 400374'		0435
	PUSHJ	SP,NEXT_PRM			; SP,NEXT_PRM				400265' 260 17 0 00 000000V
	PUSH	SP,AC1				; SP,AC1				400266' 261 17 0 00 000001
	PUSHJ	SP,$C5TA			; SP,$C5TA				400267' 260 17 0 00 000000*
	ADJSP	SP,-2				; SP,-2					400270' 105 17 0 00 777776
	SOSLE	REPT				; REPT					400271' 373 00 0 00 000002'		0436
	JRST	L.27				; L.27					400272' 254 00 0 00 400264'		0434
	JRST	L.1				; L.1					400273' 254 00 0 00 400014'		0251
L.28:	SOSGE	REPT				; REPT					400274' 375 00 0 00 000002'		0444
	JRST	L.1				; L.1					400275' 254 00 0 00 400014'
	MOVEI	AC1,40				; AC1,40				400276' 201 01 0 00 000040		0445
	IDPB	AC1,BUF_PTR			; AC1,BUF_PTR				400277' 136 01 0 00 000000'
	JRST	L.28				; L.28					400300' 254 00 0 00 400274'		0444
L.29:	MOVE	AC16,REPT			; AC16,REPT				400301' 200 16 0 00 000002'		0458
	SUBI	AC16,1				; AC16,1				400302' 275 16 0 00 000001
	ADJBP	AC16,AC13			; AC16,BUF_PTR_INI			400303' 133 16 0 00 000013
L.30:	PUSH	SP,AC16				; SP,NEW_BUF_PTR			400304' 261 17 0 00 000016		0460
	PUSH	SP,BUF_PTR			; SP,BUF_PTR				400305' 261 17 0 00 000000'
EDTMG								12-Apr-1985 07:09:20	TOPS-20 Bliss-36 4A(225)	    Page  16
001020								30-Dec-1982 17:30:31	DNET61:<DECNET.UTILITIES>EDTMG.BLI.1 (2)

	PUSHJ	SP,CHDIF%			; SP,CHDIF%				400306' 260 17 0 00 000000*
	ADJSP	SP,-2				; SP,-2					400307' 105 17 0 00 777776
	JUMPLE	AC1,L.31			; AC1,L.31				400310' 323 01 0 00 400314'
	MOVEI	AC1,40				; AC1,40				400311' 201 01 0 00 000040		0461
	IDPB	AC1,BUF_PTR			; AC1,BUF_PTR				400312' 136 01 0 00 000000'
	JRST	L.30				; L.30					400313' 254 00 0 00 400304'		0460
L.31:	MOVEM	AC16,BUF_PTR			; NEW_BUF_PTR,BUF_PTR			400314' 202 16 0 00 000000'		0463
	JRST	L.1				; L.1					400315' 254 00 0 00 400014'		0251
L.32:	PUSH	SP,C.6				; SP,[0,,$CBDMG]			400316' 261 17 0 00 400377'		0473
L.33:	PUSH	SP,C.4				; SP,[1]				400317' 261 17 0 00 400375'
L.34:	PUSH	SP,C.9				; SP,[11]				400320' 261 17 0 00 400402'
	PUSHJ	SP,REPEAT			; SP,REPEAT				400321' 260 17 0 00 000000V
	JRST	L.38				; L.38					400322' 254 00 0 00 400345'		0376
L.35:	PUSH	SP,C.3				; SP,[0,,BUF_PTR]			400323' 261 17 0 00 400374'		0489
	PUSHJ	SP,NEXT_PRM			; SP,NEXT_PRM				400324' 260 17 0 00 000000V
	PUSH	SP,AC1				; SP,AC1				400325' 261 17 0 00 000001
	PUSHJ	SP,$DAT				; SP,$DAT				400326' 260 17 0 00 000000*
	ADJSP	SP,-2				; SP,-2					400327' 105 17 0 00 777776
	JRST	L.1				; L.1					400330' 254 00 0 00 400014'		0251
L.36:	PUSH	SP,C.3				; SP,[0,,BUF_PTR]			400331' 261 17 0 00 400374'		0497
	PUSHJ	SP,NEXT_PRM			; SP,NEXT_PRM				400332' 260 17 0 00 000000V
	PUSH	SP,AC1				; SP,AC1				400333' 261 17 0 00 000001
	PUSH	SP,REPT				; SP,REPT				400334' 261 17 0 00 000002'
	PUSHJ	SP,$TIM				; SP,$TIM				400335' 260 17 0 00 000000*
	JRST	L.38				; L.38					400336' 254 00 0 00 400345'
L.37:	PUSHJ	SP,NEXT_PRM			; SP,NEXT_PRM				400337' 260 17 0 00 000000V		0508
	PUSH	SP,C.3				; SP,[0,,BUF_PTR]			400340' 261 17 0 00 400374'		0510
	MOVEI	AC2,-1(SP)			; AC2,PAT_PTR				400341' 201 02 0 17 777777
	PUSH	SP,AC2				; SP,AC2				400342' 261 17 0 00 000002
	PUSH	SP,C.10				; SP,[0,,PRM_LIST]			400343' 261 17 0 00 400403'
	PUSHJ	SP,0(AC1)			; SP,0(AC1)				400344' 260 17 0 01 000000
L.38:	ADJSP	SP,-3				; SP,-3					400345' 105 17 0 00 777775		0508
	JRST	L.1				; L.1					400346' 254 00 0 00 400014'		0251
L.39:	SOSGE	REPT				; REPT					400347' 375 00 0 00 000002'		0519
	JRST	L.1				; L.1					400350' 254 00 0 00 400014'
	MOVEI	AC1,14				; AC1,14				400351' 201 01 0 00 000014		0520
	IDPB	AC1,BUF_PTR			; AC1,BUF_PTR				400352' 136 01 0 00 000000'
	JRST	L.39				; L.39					400353' 254 00 0 00 400347'		0519
L.40:	SETZ	AC2,				; AC2,					400354' 400 02 0 00 000000		0534
	MOVE	AC1,BUF_PTR			; AC1,BUF_PTR				400355' 200 01 0 00 000000'
	IDPB	AC2,AC1				; AC2,AC1				400356' 136 02 0 00 000001
	MOVE	AC1,-7(SP)			; AC1,BUF_PTR_ADR			400357' 200 01 0 17 777771		0535
	MOVE	AC2,BUF_PTR			; AC2,BUF_PTR				400360' 200 02 0 00 000000'
	MOVEM	AC2,0(AC1)			; AC2,0(AC1)				400361' 202 02 0 01 000000
	PUSH	SP,BUF_PTR			; SP,BUF_PTR				400362' 261 17 0 00 000000'		0536
	PUSH	SP,AC13				; SP,BUF_PTR_INI			400363' 261 17 0 00 000013
	PUSHJ	SP,CHDIF%			; SP,CHDIF%				400364' 260 17 0 00 000000*
	ADJSP	SP,-3				; SP,-3					400365' 105 17 0 00 777775
	POP	SP,AC16				; SP,AC16				400366' 262 17 0 00 000016		0102
	POP	SP,AC14				; SP,AC14				400367' 262 17 0 00 000014
	POP	SP,AC13				; SP,AC13				400370' 262 17 0 00 000013
	POPJ	SP,				; SP,					400371' 263 17 0 00 000000
EDTMG								12-Apr-1985 07:09:20	TOPS-20 Bliss-36 4A(225)	    Page  17
001020								30-Dec-1982 17:30:31	DNET61:<DECNET.UTILITIES>EDTMG.BLI.1 (2)

C.1:	POINT	7,AC3,35			; 7,AC3,35				400372' 00 07 0 00 000003
C.2:	EXP	0				; 0					400373' 000000	000000
C.3:	XWD	0,BUF_PTR			; 0,BUF_PTR				400374' 000000	000000'
C.4:	EXP	1				; 1					400375' 000000	000001
C.5:	XWD	0,$CBDSG			; 0,$CBDSG				400376' 000000	000000*
C.6:	XWD	0,$CBDMG			; 0,$CBDMG				400377' 000000	000000*
C.7:	XWD	0,$CBOSG			; 0,$CBOSG				400400' 000000	000000*
C.8:	XWD	0,$CBOMG			; 0,$CBOMG				400401' 000000	000000*
C.9:	EXP	11				; 11					400402' 000000	000011
C.10:	XWD	0,PRM_LIST			; 0,PRM_LIST				400403' 000000	000001'

; Routine Size:  260 words


;   0538  1	
EDTMG								12-Apr-1985 07:09:20	TOPS-20 Bliss-36 4A(225)	    Page  18
001020								30-Dec-1982 17:30:31	DNET61:<DECNET.UTILITIES>EDTMG.BLI.1 (3)

;   0539  1	ROUTINE NEXT_PRM =
;   0540  1	
;   0541  1	!++
;   0542  1	! FUNCTIONAL DESCRIPTION:
;   0543  1	!
;   0544  1	!
;   0545  1	! FORMAL PARAMETERS:
;   0546  1	!
;   0547  1	!	NONE
;   0548  1	!
;   0549  1	! IMPLICIT INPUTS:
;   0550  1	!
;   0551  1	!	NONE
;   0552  1	!
;   0553  1	! IMPLICIT OUTPUTS:
;   0554  1	!
;   0555  1	!	The variable .PRM_LIST is left to address the next parameter
;   0556  1	!	to fetch.
;   0557  1	!
;   0558  1	! ROUTINE VALUE:
;   0559  1	!
;   0560  1	!	The value of the parameter addressed by .PRM_LIST[0] .
;   0561  1	!
;   0562  1	! SIDE EFFECTS:
;   0563  1	!
;   0564  1	!	NONE
;   0565  1	!
;   0566  1	!--
;   0567  1	
;   0568  2	    BEGIN
;   0569  2	
;   0570  2	    LOCAL
;   0571  2		PARAMETER;
;   0572  2	
;   0573  2	    PARAMETER = .PRM_LIST [0];
;   0574  2	    PRM_LIST = PRM_LIST [1];
;   0575  2	    .PARAMETER
;   0576  1	    END;					!End of NEXT_PRM


NEXT_PRM:
	MOVE	AC1,PRM_LIST			; AC1,PRM_LIST				400404' 200 01 0 00 000001'		0573
	MOVE	AC1,0(AC1)			; PARAMETER,0(AC1)			400405' 200 01 0 01 000000
	AOS	PRM_LIST			; PRM_LIST				400406' 350 00 0 00 000001'		0574
	POPJ	SP,				; SP,					400407' 263 17 0 00 000000		0539

; Routine Size:  4 words
EDTMG								12-Apr-1985 07:09:20	TOPS-20 Bliss-36 4A(225)	    Page  19
001020								30-Dec-1982 17:30:31	DNET61:<DECNET.UTILITIES>EDTMG.BLI.1 (4)

;   0577  1	ROUTINE REPEAT (ROUTINE_ADR, FLAGS, SEPARATOR) : NOVALUE =
;   0578  1	
;   0579  1	!++
;   0580  1	! FUNCTIONAL DESCRIPTION:
;   0581  1	!
;   0582  1	!
;   0583  1	! FORMAL PARAMETERS:
;   0584  1	!
;   0585  1	!	.ROUTINE_ADR				!Conversion routine to call.
;   0586  1	!	.FLAGS					!Flag word to feed the
;   0587  1	!						!conversion routine.
;   0588  1	!	.SEPARATOR				!Separating character to insert
;   0589  1	!						!between converted texts.
;   0590  1	!
;   0591  1	! IMPLICIT INPUTS:
;   0592  1	!
;   0593  1	!	.REPT					!Number of times to repeat.
;   0594  1	!	.BUF_PTR				!Contains pointer to buffer
;   0595  1	!						!to receive text.
;   0596  1	!
;   0597  1	! IMPLICIT OUTPUTS:
;   0598  1	!
;   0599  1	!	The buffer pointer .BUF_PTR is updated to point past the information
;   0600  1	!	inserted.
;   0601  1	!
;   0602  1	! ROUTINE VALUE:
;   0603  1	!
;   0604  1	!	NONE
;   0605  1	!
;   0606  1	! SIDE EFFECTS:
;   0607  1	!
;   0608  1	!	".REPT" parameters are obatined from the parameter list.
;   0609  1	!	The contents of REPT is undefined on return.
;   0610  1	!
;   0611  1	!--
;   0612  1	
;   0613  2	    BEGIN
;   0614  2	
;   0615  2	    BIND ROUTINE
;   0616  2		CVTNUM = .ROUTINE_ADR;
;   0617  2	
;   0618  2	    IF .REPT GTR 0
;   0619  2	    THEN
;   0620  3		BEGIN
;   0621  3		CVTNUM (BUF_PTR, NEXT_PRM (), .FLAGS);
;   0622  3	
;   0623  3		WHILE (REPT = .REPT - 1) NEQ 0 DO
;   0624  4		    BEGIN
;   0625  4		    CH$WCHAR_A (.SEPARATOR, BUF_PTR);
;   0626  4		    CVTNUM (BUF_PTR, NEXT_PRM (), .FLAGS)
;   0627  4		    END
;   0628  4	
EDTMG								12-Apr-1985 07:09:20	TOPS-20 Bliss-36 4A(225)	    Page  20
001020								30-Dec-1982 17:30:31	DNET61:<DECNET.UTILITIES>EDTMG.BLI.1 (4)

;   0629  3		END
;   0630  3	
;   0631  1	    END;					!Of routine REPEAT


REPEAT: PUSH	SP,AC16				; SP,AC16				400410' 261 17 0 00 000016		0577
	MOVE	AC16,-4(SP)			; AC16,ROUTINE_ADR			400411' 200 16 0 17 777774		0616
	SKIPG	REPT				; REPT					400412' 337 00 0 00 000002'		0618
	JRST	L.43				; L.43					400413' 254 00 0 00 400435'
	PUSH	SP,C.3				; SP,[0,,BUF_PTR]			400414' 261 17 0 00 400374'		0621
	PUSHJ	SP,NEXT_PRM			; SP,NEXT_PRM				400415' 260 17 0 00 400404'
	PUSH	SP,AC1				; SP,AC1				400416' 261 17 0 00 000001
	PUSH	SP,-5(SP)			; SP,FLAGS				400417' 261 17 0 17 777773
	PUSHJ	SP,0(AC16)			; SP,0(AC16)				400420' 260 17 0 16 000000
L.41:	SOSN	REPT				; REPT					400421' 376 00 0 00 000002'		0623
	JRST	L.42				; L.42					400422' 254 00 0 00 400434'
	MOVE	AC1,-5(SP)			; AC1,SEPARATOR				400423' 200 01 0 17 777773		0625
	IDPB	AC1,BUF_PTR			; AC1,BUF_PTR				400424' 136 01 0 00 000000'
	PUSH	SP,C.3				; SP,[0,,BUF_PTR]			400425' 261 17 0 00 400374'		0626
	PUSHJ	SP,NEXT_PRM			; SP,NEXT_PRM				400426' 260 17 0 00 400404'
	PUSH	SP,AC1				; SP,AC1				400427' 261 17 0 00 000001
	PUSH	SP,-10(SP)			; SP,FLAGS				400430' 261 17 0 17 777770
	PUSHJ	SP,0(AC16)			; SP,0(AC16)				400431' 260 17 0 16 000000
	ADJSP	SP,-3				; SP,-3					400432' 105 17 0 00 777775		0624
	JRST	L.41				; L.41					400433' 254 00 0 00 400421'		0623
L.42:	ADJSP	SP,-3				; SP,-3					400434' 105 17 0 00 777775		0620
L.43:	POP	SP,AC16				; SP,AC16				400435' 262 17 0 00 000016		0577
	POPJ	SP,				; SP,					400436' 263 17 0 00 000000

; Routine Size:  23 words


;   0632  1	END
;   0633  1	
;   0634  0	ELUDOM




; Low  segment length:       4 words
; High segment length:     287 words





; Size:		287 code + 4 data words
; Run Time:	   00:04.6
; Elapsed Time:	   00:05.8
; Lines/CPU Min:    8289
; Lexemes/CPU-Min: 18539
; Memory Used:	32 pages
EDTMG								12-Apr-1985 07:09:20	TOPS-20 Bliss-36 4A(225)	    Page  21
001020											

; Compilation Complete