File: SRCC50.LS of Disk: V50/Source/Source-Listing-PAL-2
(Source file text) 


/ OS8 SOURCE COMPARE V50		  PAL8-V50X 29-AUG-88 PAGE 1

		/ OS8 SOURCE COMPARE V50
		/
		/
		/
		/
		/
		/
		/
		/
		/
		/COPYRIGHT  (C)  1977 BY DIGITAL EQUIPMENT CORPORATION
		/		 
		/
		/
		/
		/
		/
		/
		/
		/
		/
		/THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT NOTICE
		/AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
		/CORPORATION.  DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY
		/FOR ANY ERRORS THAT MAY APPEAR IN THIS DOCUMENT.
		/
		/THE SOFTWARE DESCRIBED IN THIS DOCUMENT IS FURNISHED TO THE PURCHASER
		/UNDER A LICENSE FOR USE ON A SINGLE COMPUTER SYSTEM AND CAN BE COPIED
		/(WITH INCLUSION OF DIGITAL'S COPYRIGHT NOTICE) ONLY FOR USE IN SUCH
		/SYSTEM, EXCEPT AS MAY OTHERWISE BE PROVIDED IN WRITING BY DIGITAL.
		/
		/DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY FOR THE USE
		/OR RELIABILITY OF ITS SOFTWARE ON EQUIPMENT THAT IS NOT SUPPLIED BY
		/DIGITAL.
		/
		/
		/
		/
		/
		/
		/
		/
		/
		/

/ OS8 SOURCE COMPARE V50		  PAL8-V50X 29-AUG-88 PAGE 2


		/LAST EDITED 4/28/77
		/
		/
		/COPYRIGHT 1973,1977
		/DIGITAL EQUIPMENT CORPORATION
		/MAYNARD, MASS. 01754
		/
		/PDP-8 SOURCE COMPARISON PROGRAM
		/STOLEN FROM PDP-10 SRCCOM BY R. LARY

		DECIMAL
	0062	VERSIO=	50		/CHANGE EVERY MAJOR EDIT
	0301	PATCH="A
		OCTAL
		/GERMAN=1

			IFNDEF	CORE	<CORE=2	/DEFAULT IS 8K SYSTEM>
	7643		MPARAM=7643	/COMMAND DECODER PARAMETER BLOCK

	0000		IFZERO	CORE-2	<F1=0	/FIELD FOR FILE 1
	0010				F2=10	/FIELD FOR FILE 2
	2000				LNBEG=2000   /BEGINNING OF LINE BUFFER
		>
			IFZERO	CORE-4	<F1=20
					F2=30
					LNBEG=20
		>
	6555				BUFLIM=FBLOCK-1001 /END OF LINE BUFFER
	6556				INBUF=FBLOCK-1000	 /INPUT BUFFER

/ OS8 SOURCE COMPARE V50		  PAL8-V50X 29-AUG-88 PAGE 3


		/SRCCOM FIELD 0 PAGE 0

	0000		FIELD 0
	0001		*1
000001  6232		CIF 30
000002  5001		JMP	1	/FOR SYMBIONT

	0010		XR=10

	0020		*20
000020  0000	SCT,	0		/TEMPORARY
000021  0000	OFILNM,	ZBLOCK	4	/OUTPUT FILE NAME
000025  0000	IFPTR,	0		/TEMPORARY
		SETUP1,	NOPUNCH
	7556		*7556		/JAM PARAMETERS UP AGAINST TOP OF USER CORE
		FBLOCK,	ENPUNCH

		/LAYOUT OF FILE PARAMETER TABLE
		/THERE IS A COPY OF THIS TABLE IN FIELDS F1 AND F2. EACH COPY
		/CONTAINS ALL THE INFORMATION ABOUT THE FILE WHOSE BUFFERS
		/ARE IN THE SAME FIELD


007556  0001	PGNUM,	1		/CURRENT INPUT PAGE
007557  0000	CURLIN,	0		/CURRENT LINE (IN LINE BUFFER)
007560  0000	TOPLIN,	0		/NUMBER OF LINES IN LINE BUFFER
007561  0000	TMPLIN,	0		/TEMPORARY STORAGE FOR "CURLIN"
007562  0001	OLDLIN,	1		/LINE OPTIMIZATION COUNTER
007563  2000	OLDPTR,	LNBEG		/LINE OPTIMIZATION POINTER
				/THE NEXT SEVERAL WORDS ARE A SUBROUTINE
				/WHICH READS A BUFFER IN FROM THE INPUT FILE
007564  0000	INTEMP,	0		/SHIFT REGISTER FOR "GCHAR" ROUTINE
007565  6202		CIF 0
007566  4775		JMS I	INHNDL
007567  7777	INCHCT,	7777		/COUNT OF CHARACTERS IN BUFFER
007570  0000	INPTR,	0		/POINTS TO CURRENT WORD IN BUFFER
007571  0000	INREC,	0		/CONTAINS CURRENT INPUT RECORD
007572  2364		ISZ	INTEMP	/SUBROUTINE SKIPS ON INPUT ERROR
007573  6212		CIF 10
007574  5764		JMP I	INTEMP
007575  0000	INHNDL,	0		/POINTS TO ENTRY POINT OF INPUT HANDLER

007576  0000	INEOF,	0		/END-OF-FILE INDICATOR
007577  0000	INRCNT,	0		/COUNT OF RECORDS REMAINING IN THIS FILE
			IFNZRO	.-7600	<_ERROR_>
	0050		*SETUP1+.-FBLOCK/PUT ASSEMBLER LOCATION COUNTER BACK
	0050		SETUP2=.

/ OS8 SOURCE COMPARE V50		  PAL8-V50X 29-AUG-88 PAGE 4




			/CORE ALLOCATION FOR 8K SYSTEM

		/		FIELD 0
		/
		/0000-0377	CONTROL CODE
		/0400-0777	INPUT HANDLER 1
		/1000-1377	INPUT HANDLER 2
		/1400-1777	OUTPUT HANDLER
		/2000-6555	FILE 1 LINE BUFFER
		/6556-7555	FILE 1 INPUT BUFFER
		/7556-7577	FILE 1 CONTROL BLOCK
		/
		/		FIELD 1
		/
		/0000-1377	SRCCOM PROPER
		/1400-1777	OUTPUT BUFFER
		/2000-6555	FILE 2 LINE BUFFER
		/6556-7555	FILE 2 INPUT BUFFER
		/7556-7577	FILE 2 CONTROL BLOCK
		/
		/
		/	FORMAT OF LINE BUFFER:
		/	THE LINE BUFFER CONSISTS OF SOURCE LINES. THE FIRST WORD
		/	OF EACH LINE IS A LENGTH WORD GIVING THE LENGTH OF THE
		/	LINE (INCLUDING THE LENGTH WORD ITSELF) AS A POSITIVE
		/	NUMBER.  THE NEXT WORD IS THE NUMBER OF THE SOURCE PAGE
		/	ON WHICH THIS LINE WAS FOUND.  SUBSEQUENT WORDS CONTAIN THE
		/	CHARACTERS OF THE LINE ITSELF, PACKED ONE PER WORD.


		NODFMS,
000050  0316	IFNDEF GERMAN <	"N;"O;" ;"D;"I;"F;"F;"E;"R;"E;"N;"C;"E;"S;0>
000051  0317
000052  0240
000053  0304
000054  0311
000055  0306
000056  0306
000057  0305
000060  0322
000061  0305
000062  0316
000063  0303
000064  0305
000065  0323
000066  0000
		IFDEF  GERMAN < "I;"d;"e;"n;"t;"i;"s;"c;"h;"!;0 ;0 ;0 ;0 ;0>

/ OS8 SOURCE COMPARE V50		  PAL8-V50X 29-AUG-88 PAGE 5


000067  0000	SETUP,	0		/ROUTINE TO SET UP FILE PARAMETERS
000070  1177		TAD	[SETUP1-SETUP2
000071  3020		DCA	SCT
000072  1176		TAD	[TAD SETUP1
000073  3076		DCA	INST2
000074  1175		TAD	[FBLOCK-1
000075  3010		DCA	XR
000076  7402	INST2,	HLT		/MOVE THE SKELETON PARAMETER BLOCK
000077  3410		DCA I	XR	/UP INTO THE DESIRED FIELD
000100  2076		ISZ	INST2
000101  2020		ISZ	SCT
000102  5076		JMP	INST2
000103  6214		RDF
000104  1174		TAD	[6201
000105  3132		DCA	SETCDF	/SAVE FIELD NUMBER
000106  6211		CDF 10
000107  1425		TAD I	IFPTR
000110  6201		CDF 0
000111  7450		SNA
000112  5573		JMP I	[INERR1	/NO INPUT FILE - BAD
000113  6212		CIF 10
000114  4572		JMS I	[200	/ASSIGN DEVICE HANDLER
000115  0001		1
000116  0000	DVPAGE,	0
000117  7402		HLT		/NEVER HOPPEN
000120  6211		CDF 10
000121  1425		TAD I	IFPTR
000122  0171		AND	[7760	/COMPUTE FILE LENGTH
000123  7440		SZA
000124  1170		TAD	[17
000125  7132		CLL CML RTR
000126  7012		RTR
000127  3020		DCA	SCT	/SAVE IT AWAY TEMPORARILY
000130  2025		ISZ	IFPTR
000131  1425		TAD I	IFPTR
000132  7402	SETCDF,	HLT		/RESET DATA FIELD
000133  3567		DCA I	[INREC	/SAVE STARTING BLOCK NUMBER
000134  1020		TAD	SCT
000135  3566		DCA I	[INRCNT	/SAVE FILE LENGTH
000136  1116		TAD	DVPAGE
000137  3565		DCA I	[INHNDL	/SAVE DEVICE HANDLER ENTRY POINT
000140  2025		ISZ	IFPTR
000141  5467		JMP I	SETUP	/RETURN

/ OS8 SOURCE COMPARE V50		  PAL8-V50X 29-AUG-88 PAGE 6


	0200		*200		/INITIALIZATION CODE
000200  2343	SRCCOM,	ISZ	NOCHN
000201  6212		CIF 10
000202  4564		JMS I	[7700
000203  0010		10		/BRING USR INTO CORE
000204  1343	SRCCD,	TAD	NOCHN	/HAVE WE BEEN CHAINED TO?
000205  7650		SNA CLA
000206  5213		JMP	NOSRCD	/YES
000207  6212		CIF 10
000210  4572		JMS I	[200
000211  0005		5		/COMMAND DECODE
000212  0000		0		/NO DEFAULT EXTENSIONS
000213  1163	NOSRCD,	TAD	[7617
000214  3025		DCA	IFPTR	/SET IFPTR POINTING TO FILE 1
000215  1162		TAD	[401
000216  3116		DCA	DVPAGE	/FILE 1 HANDLER GOES IN 400-777
000217  6201		CDF F1
000220  4067		JMS	SETUP	/SET UP FILE 1 PARAMETER AREA
000221  1161		TAD	[1001
000222  3116		DCA	DVPAGE	/FILE 2 HANDLER GOES INTO 1000-1377
000223  6211		CDF F2
000224  4067		JMS	SETUP	/SET UP FILE 2 PARAMETER AREA
000225  1160		TAD	[1401
000226  3253		DCA	OUPAGE	/OUTPUT HANDLER GOES INTO 1400-1777
000227  6211	GTOUHN,	CDF 10
000230  1557		TAD I	[7600	/GET OUTPUT DEVICE #
000231  6201		CDF 0
000232  7440		SZA		/IS THERE ONE?
000233  5250		JMP	ASSOUT
000234  3241		DCA	TTYNO
000235  6212		CIF 10		/NO - LOOK UP "TTY"
000236  4572		JMS I	[200
000237  0012		12		/INQUIRE
000240  5524		5524		/=2424+3100 = TTY
000241  0000	TTYNO,	0
000242  0000		0
000243  5350		JMP	OUERR1	/NO TELETYPE
000244  1241		TAD	TTYNO
000245  6211		CDF 10
000246  3557		DCA I	[7600
000247  5227		JMP	GTOUHN	/BACK TO GET IT AGAIN
000250  6212	ASSOUT,	CIF 10
000251  4572		JMS I	[200
000252  0001		1
000253  0000	OUPAGE,	0
000254  5350		JMP	OUERR1

/ OS8 SOURCE COMPARE V50		  PAL8-V50X 29-AUG-88 PAGE 7


000255  1156		TAD	[-4
000256  3020		DCA	SCT
000257  1157		TAD	[7600
000260  3010		DCA	XR
000261  1155		TAD	[DCA OFILNM
000262  3265		DCA	INST1
000263  6211		CDF 10		/MOVE OUTPUT FILE NAME INTO FIELD 0
000264  1410		TAD I	XR
000265  7402	INST1,	HLT
000266  2265		ISZ	INST1
000267  2020		ISZ	SCT
000270  5264		JMP	INST1-1
000271  1331		TAD	PFILNM
000272  3304		DCA	ORCNO	/SET UP ENTER
000273  1024		TAD	OFILNM+3
000274  7450		SNA
000275  1154		TAD	[1423	/ASSUMED OUTPUT EXTENSION = .LS
000276  3024		DCA	OFILNM+3
000277  1557		TAD I	[7600
000300  6201		CDF 0
000301  6212		CIF 10
000302  4572		JMS I	[200
000303  0003		3
000304  0000	ORCNO,	0		/POINTS TO FILE NAME
000305  0000	OLEN,	0
000306  5350		JMP	OUERR1
000307  6212		CIF 10
000310  4572		JMS I	[200
000311  0011		11		/KICK USR OUT OF CORE
000312  3332		DCA	OCOUNT
000313  6213		CDF CIF 10
000314  1304		TAD	ORCNO
000315  3553		DCA I	[OUREC
000316  1253		TAD	OUPAGE
000317  5720		JMP I	.+1
000320  1330		SRCOPT		/GO SET UP OPTION SWITCHES AND COMPARE

/ OS8 SOURCE COMPARE V50		  PAL8-V50X 29-AUG-88 PAGE 8


000321  6212	OCLOSE,	CIF 10
000322  4564		JMS I	[7700
000323  0010		10		/GET USR INTO CORE
000324  6213		CDF CIF 10
000325  1557		TAD I	[7600	/GET OUTPUT DEVICE NUMBER
000326  6201		CDF 0
000327  4572		JMS I	[200
000330  0004		4		/CLOSE OUTPUT FILE
000331  0021	PFILNM,	OFILNM
000332  0000	OCOUNT,	0		/COUNT OF BLOCKS WRITTEN
000333  5350		JMP	OUERR1	/ERROR ON CLOSE
000334  2343	SRCATS,	ISZ	NOCHN	/IN CASE WE LOOP, CLEAR "CHAINED TO" FLAG
000335  6211		CDF 10
000336  1552		TAD I	[MPARAM-1	/GET ALTMODE FLAG
000337  6201		CDF 0
000340  7710		SPA CLA
000341  5551		JMP I	[7605	/GO AWAY IF ALTMODE
000342  5204		JMP	SRCCD	/GO BACK FOR MORE

000343  0000	NOCHN,	0

000344  6214	INERR1,	RDF
000345  7112		CLL RTR
000346  7010		RAR
000347  1156		TAD [-4
000350  1150	OUERR1,	TAD	[4005
000351  1147	NOROOM,	TAD	[260
000352  3067		DCA	SETUP
000353  1146		TAD	[277
000354  4372		JMS	TYPE	/OUTPUT "?N" WHERE N IS THE ERROR NUMBER
000355  1067		TAD	SETUP
000356  4372		JMS	TYPE
000357  1145		TAD	[215
000360  4372		JMS	TYPE
000361  1144		TAD	[212
000362  4372		JMS	TYPE
000363  1067		TAD	SETUP
000364  7710		SPA CLA		/IS THE USR IN CORE?
000365  5334		JMP	SRCATS	/YES - DON'T LOAD IT
000366  6212		CIF 10
000367  4564		JMS I	[7700	/NO - LOAD IT
000370  0010		10
000371  5334		JMP	SRCATS

000372  0000	TYPE,	0
000373  6046		TLS
000374  6041		TSF
000375  5374		JMP	.-1
000376  7200		CLA
000377  5772		JMP I	TYPE

/ OS8 SOURCE COMPARE V50		  PAL8-V50X 29-AUG-88 PAGE 9


		/	PAGE 0 LITERALS
000144  0212
000145  0215
000146  0277
000147  0260
000150  4005
000151  7605
000152  7642
000153  1245
000154  1423
000155  3021
000156  7774
000157  7600
000160  1401
000161  1001
000162  0401
000163  7617
000164  7700
000165  7575
000166  7577
000167  7571
000170  0017
000171  7760
000172  0200
000173  0344
000174  6201
000175  7555
000176  1026
000177  7756
	0001		FIELD 1

/ OS8 SOURCE COMPARE V50		  PAL8-V50X 29-AUG-88 PAGE 10


			/PAGE 0 FOR SRCCOM

	0000		*0
010000  0000	T1,	0
010001  0000	T2,	0
010002  0000	T,	0
010003  0000	CT,	0

	0011		XR1=11
	0012		XR2=12

	0020		*20

		/***************   SRCCOM SWITCHES   ***************

010020  0000	CSW,	0	/"C" SWITCH - ON=-257, MEANING IGNORE COMMENTS
				/            OFF=+521, MEANING COMPARE COMMENTS
010021  0000	SSW,	0	/"S" SWITCH - ON=-240, MEANING IGNORE SPACES & TABS
				/            OFF=-200, MEANING COMPARE SPACES&TABS
010022  0000	TSW,	0	/"T" SWITCH - ON=20  , MEANING CONVERT TABS ON OUTPUT
				/	     OFF=0   , MEANING PRINT TABS ON OUTPUT
010023  0000	XSW,	0	/"X" SWITCH - ON=1   , MEANING DON'T INPUT COMMENTS
				/	     OFF=0   , MEANING INPUT COMMENTS INTO CORE
010024  0000	ALLSW,	0	/"B" SWITCH - ON=2000, MEANING COMPARE BLANK LINES
				/            OFF=0   , MEANING IGNORE BLANK LINES
010025  0000	NUMLIN,	0	/NUMERICAL ARGUMENT - NUMBER OF LINES CONSTITUTING
				/A MATCH - SET TO -3 IF NO NUMERICAL ARGUMENT

010026  0000	MLIMIT,	0
010027  0000	GETCNT,	0
010030  0000	GETFIL,	0
010031  0000	CHAR,	0
010032  0000	IPTR,	0
010033  0000	NUMTMP,	0
010034  0000	PLNCNT,	0
010035  0000	PNTPGN,	0
010036  0000	OUHNDL,	0		/THESE 5 WORDS ARE USED BY OUTPUT ROUTINE
010037  0000	OUCHCT,	0
010040  0000	OUPTR,	0
010041  0000	OUXPTR,	0
010042  0000	OUTEMP,	0
010043  0000	TABCT,	0
010044  0000	DIFFS,	0		/DIFFERENCES FOUND FLAG

010045  0000	CTCCHK,	0
010046  1177		TAD	[200
010047  6034		KRS		/GET A CHAR FROM THE TELETYPE
010050  1176		TAD	[-203	/CHECK FOR EITHER PARITY ^C
010051  7650		SNA CLA
010052  6031		KSF		/WITH THE KEYBOARD FLAG UP
010053  5445		JMP I	CTCCHK	/NOPE
010054  6203		CDF CIF 0	/YUP - RETURN TO OS/8
010055  5575		JMP I	[7600

/ OS8 SOURCE COMPARE V50		  PAL8-V50X 29-AUG-88 PAGE 11


	0200		PAGE

010200  0000	SETONE,	0		/ROUTINE TO FIND WHERE A LINE IS
010201  1574		TAD I	[CURLIN	/GET LINE NUMBER
010202  3230		DCA	TLNNUM	/SAVE IT AWAY
010203  1573		TAD I	[OLDPTR	/GET THE POINTER TO THE LATEST LINE
010204  3002	SETOPT,	DCA	T	/SAVE THE STARTING POINTER
010205  1230		TAD	TLNNUM	/GET THE TARGET LINE
010206  7140		CMA CLL
010207  1572		TAD I	[OLDLIN	/IS IT BEFORE OR AFTER THE LATEST LINE?
010210  7430		SZL
010211  5231		JMP	SETRST	/BEFORE - WE MUST START SEARCHING FROM LINE 1
010212  3003		DCA	CT	/AFTER - START SEARCHING FROM LATEST LINE
010213  2003	TLOOP,	ISZ	CT
010214  5224		JMP	KEEPON	/NOT THERE YET
010215  1230		TAD	TLNNUM	/WE FOUND IT - MAKE THIS LINE
010216  3572		DCA I	[OLDLIN	/THE NEW "LATEST LINE"
010217  1002		TAD	T	/TO SPEED UP
010220  3573		DCA I	[OLDPTR	/FUTURE SEARCHES.
010221  7240		CLA CMA
010222  1002		TAD	T
010223  5600		JMP I	SETONE	/RETURN POINTER FOR AUTO-XR
010224  1402	KEEPON,	TAD I	T
010225  1002		TAD	T	/ADD LENGTH OF THIS LINE TO POINTER
010226  3002		DCA	T	/TO GET POINTER TO NEXT LINE
010227  5213		JMP	TLOOP
010230  0000	TLNNUM,	0		/TEMPORARY FOR SETONE - DO NOT USE ANYWHERE ELSE

010231  7201	SETRST,	CLA IAC		/RESET THE "LATEST LINE" POINTERS TO THE FIRST
010232  3572		DCA I	[OLDLIN	/LINE, SINCE THE LINE WE SEEK IS BEFORE
010233  1171		TAD	[LNBEG	/THE CURRENT "LATEST LINE"
010234  5204		JMP	SETOPT	/GO BACK AND FIND THE LINE

/ OS8 SOURCE COMPARE V50		  PAL8-V50X 29-AUG-88 PAGE 12


010235  0000	MOVEUP,	0		/SUBR TO DELETE LINES FROM CORE
010236  1574		TAD I	[CURLIN	/GET FIRST LINE NOT TO BE DELETED
010237  7041		CIA
010240  1570		TAD I	[TOPLIN
010241  3570		DCA I	[TOPLIN	/REDUCE THE NUMBER OF LINES IN THE BUFFER
010242  1570		TAD I	[TOPLIN	/GET NEW LINE COUNT
010243  7450		SNA		/IF ALL LINES DELETED, DON'T MOVE CORE
010244  5264		JMP	MOVXIT	/JUST CLEAN UP AND GET OUT
010245  7001		IAC
010246  4200		JMS	SETONE	/GET POINTER TO LAST LINE+1
010247  7041		CIA
010250  3026		DCA	MLIMIT	/SAVE AS LIMIT ON MOVE
010251  7001		IAC
010252  4200		JMS	SETONE	/GET POINTER TO THE FIRST LINE NOT TO DELETE
010253  3011		DCA	XR1
010254  1167		TAD	[LNBEG-1
010255  3012		DCA	XR2
010256  1411	MLOOP,	TAD I	XR1
010257  3412		DCA I	XR2	/AREN'T AUTO-XRS WONDERFUL
010260  1011		TAD	XR1
010261  1026		TAD	MLIMIT	/(ACTUALLY, NO)
010262  7640		SZA CLA
010263  5256		JMP	MLOOP
010264  7201	MOVXIT,	CLA IAC		/AFTER MOVING CORE AROUND, WE MUST
010265  3572		DCA I	[OLDLIN	/RESET THE "LATEST LINE" POINTERS TO THE FIRST
010266  1171		TAD	[LNBEG	/LINE SINCE IT IS THE ONLY ONE WHICH
010267  3573		DCA I	[OLDPTR	/HAS A KNOWN POSITION.
010270  5635		JMP I	MOVEUP

/ OS8 SOURCE COMPARE V50		  PAL8-V50X 29-AUG-88 PAGE 13


010271  0000	COMPL,	0		/SUBROUTINE TO COMPARE TWO LINES
010272  6201		CDF F1
010273  4200		JMS	SETONE	/GET POINTER TO CURRENT LINE IN FILE 1
010274  1166		TAD	[2	/SKIP OVER PROLOGUE
010275  3011		DCA	XR1
010276  6211		CDF F2
010277  4200		JMS	SETONE	/GET POINTER TO CURRENT LINE IN FILE 2
010300  1166		TAD	[2	/SKIP OVER PROLOGUE
010301  3012		DCA	XR2
010302  6201	COMP1,	CDF F1
010303  1411		TAD I	XR1	/GET A CHAR FROM FILE 1
010304  3000		DCA	T1
010305  6211	COMP2,	CDF F2
010306  1412		TAD I	XR2
010307  3001		DCA	T2	/AND A CHAR FROM FILE 2
010310  1001	COMP0,	TAD	T2
010311  7041		CIA
010312  1000		TAD	T1
010313  7640		SZA CLA		/ARE THEY EQUAL?
010314  5326		JMP	COMP4	/NO
010315  1000	COMP5,	TAD	T1
010316  7440		SZA
010317  1020		TAD	CSW	/IF AT END OF LINE, OR IF AT A "/"
010320  7640		SZA CLA		/AND "IGNORE COMMENTS" SWITCH ON,
010321  5302		JMP	COMP1
010322  5671		JMP I	COMPL	/TAKE "LINES MATCH" RETURN

010323  6201	COMP3,	CDF F1
010324  1411		TAD I	XR1	/GET THE NEXT CHAR FROM FILE 1
010325  3000		DCA	T1
010326  1000	COMP4,	TAD	T1
010327  1021		TAD	SSW	/IF T1 IS A BLANK OR A TAB
010330  7440		SZA
010331  1165		TAD	[27	/(27=BLANK-TAB)
010332  7650		SNA CLA		/AND WE ARE IGNORING BLANKS,
010333  5323		JMP	COMP3	/THEN IGNORE T1
010334  1001		TAD	T2
010335  1021		TAD	SSW	/DO THE SAME WITH T2
010336  7440		SZA
010337  1165		TAD	[27
010340  7650		SNA CLA
010341  5305		JMP	COMP2
010342  1000		TAD	T1
010343  7041		CIA
010344  1001		TAD	T2	/NOW THAT WE HAVE (MAYBE) ELIMINATED BLANKS
010345  7650		SNA CLA		/ARE T1 AND T2 STILL UNEQUAL?
010346  5315		JMP	COMP5	/NO - THERE'S STILL HOPE
010347  1000		TAD	T1	/YES - NOW TEST COMMENT SWITCH
010350  7040		CMA
010351  0001		AND	T2
010352  1020		TAD	CSW	/IF T1 IS A CARRIAGE RETURN AND T2 IS A "/"
010353  7650		SNA CLA		/WITH THE COMMENT SWITCH ON WE'VE SUCEEDED
010354  5671		JMP I	COMPL	/SO TAKE "LINES MATCH" RETURN
010355  1001		TAD	T2

/ OS8 SOURCE COMPARE V50		  PAL8-V50X 29-AUG-88 PAGE 13-1

010356  7040		CMA
010357  0000		AND	T1	/SAME IF T2=CARRIAGE RETURN AND T1="/"
010360  1020		TAD	CSW
010361  7640		SZA CLA
010362  2271		ISZ	COMPL	/OTHERWISE TAKE "LINES DON'T MATCH" RETURN
010363  5671		JMP I	COMPL

010364  0000	GETTWO,	0		/SUBROUTINE TO GET A LINE FROM EACH FILE
010365  7346		CLA CLL CMA RTL
010366  3027		DCA	GETCNT
010367  3030		DCA	GETFIL	/ZERO INDICATOR AS TO WHICH FILE IS NULL
010370  6201		CDF F1
010371  4564		JMS I	[GLINE	/GET A LINE FROM FILE 1
010372  6211		CDF F2
010373  4564		JMS I	[GLINE	/DITTO FILE 2
010374  2027		ISZ	GETCNT	/HOW MANY LINES DID WE GET?
010375  5764		JMP I	GETTWO	/LESS THAN TWO - TAKE EOF RETURN
010376  2364		ISZ	GETTWO
010377  5764		JMP I	GETTWO	/TAKE NORMAL RETURN

	0400		PAGE

/ OS8 SOURCE COMPARE V50		  PAL8-V50X 29-AUG-88 PAGE 14


010400  0000	GLINE,	0		/SUBROUTINE TO GET A LINE FROM A FILE
010401  1574		TAD I	[CURLIN
010402  7041		CIA
010403  1570		TAD I	[TOPLIN
010404  7640		SZA CLA		/IS THE LINE IN CORE?
010405  5250		JMP	GLEXIT	/YES
010406  7201		CLA IAC
010407  4577		JMS I	[SETONE	/GET POINTER TO THIS LINE
010410  3011		DCA	XR1
010411  7326		CLA CLL CML RTL
010412  3411		DCA I	XR1	/SET WORD COUNT TO 2
010413  1011		TAD	XR1
010414  3002		DCA	T	/SAVE POINTER TO LENGTH WORD
010415  4045		JMS	CTCCHK	/CHECK FOR ^C TYPED
010416  2011		ISZ	XR1
010417  4256	GLINE2,	JMS	GCHAR	/MAIN LOOP - GET A CHARACTER
010420  4563		JMS I	[TSTXSW	/SEE WHETHER WE SHOULD INPUT COMMENTS
010421  7344		CLA CLL CMA RAL
010422  1031		TAD	CHAR
010423  1024		TAD	ALLSW	/IF THE CHAR IS A CARRIAGE RETURN AND THE
010424  1402		TAD I	T	/"B" SWITCH IS OFF AND THE LINE COUNT IS 2,
010425  7650		SNA CLA		/THEN WE SHOULD IGNORE THIS BLANK LINE.
010426  5217		JMP	GLINE2
010427  1031		TAD	CHAR
010430  3411		DCA I	XR1	/SALT IT AWAY
010431  1011		TAD	XR1
010432  7100		CLL
010433  1162		TAD	[4-BUFLIM	/COMPARE AGAINST END OF BUFFER
010434  7620		SNL CLA
010435  5240		JMP	.+3
010436  6203		CDF CIF 0	/LINE OVERFLOWS CORE - BAD!
010437  5561		JMP I	[NOROOM	/TELL THE WORLD
010440  2402		ISZ I	T	/BUMP COUNTER OF WORDS IN LINE
010441  1031		TAD	CHAR
010442  7640		SZA CLA		/WAS IT A CARRIAGE RETURN?
010443  5217		JMP	GLINE2	/NO
010444  2570		ISZ I	[TOPLIN	/YES - BUMP COUNT OF LINES IN CORE
010445  2002		ISZ T
010446  1560		TAD I [PGNUM
010447  3402		DCA I T
010450  2027	GLEXIT,	ISZ	GETCNT	/BUMP COUNTER OF # OF LINES GOTTEN
010451  6214		RDF
010452  1157		TAD	[6201
010453  3030		DCA	GETFIL	/INDICATE THAT THIS FILE WAS NOT NULL
010454  2574		ISZ I	[CURLIN	/BUMP CURRENT LINE POINTER
010455  5600		JMP I	GLINE

/ OS8 SOURCE COMPARE V50		  PAL8-V50X 29-AUG-88 PAGE 15


010456  0000	GCHAR,	0		/SUBROUTINE TO GET A CHAR FROM A FILE
010457  1556		TAD I	[INPTR
010460  3032		DCA	IPTR	/SAVE POINTER TO CURRENT BUFFER WORD
010461  2555		ISZ I	[INCHCT	/BUMP CHAR COUNTER
010462  5330		JMP	GETIN
010463  1554		TAD I	[INEOF	/END OF BUFFER
010464  7640		SZA CLA		/END OF FILE??
010465  5375		JMP	GEOF+1	/YES
010466  7326		CLA CLL CML RTL
010467  1553		TAD I	[INRCNT	/BUMP COUNT OF REMAINING RECORDS BY 2
010470  7430		SZL		/OVERFLOW?
010471  2554		ISZ I	[INEOF	/YES - SET END OF FILE FLAG
010472  7420		SNL
010473  3553		DCA I	[INRCNT	/RESTORE COUNTER IF NO OVERFLOW
010474  7166		CLL CMA CML RTL
010475  7006		RTL
010476  7006		RTL
010477  1152		TAD	[401	/COMPUTE INPUT CONTROL WORD
010500  6214		RDF
010501  3555		DCA I	[INCHCT
010502  1151		TAD	[INBUF
010503  3556		DCA I	[INPTR	/PUT BUFFER ADDRESS INTO CALLING SEQUENCE
010504  6214		RDF
010505  1150		TAD	[6203
010506  3307		DCA	.+1
010507  7000		NOP		/SET INSTRUCTION FIELD TO DATA FIELD
010510  4547		JMS I	[INTEMP	/CALL SUBR TO READ IN BUFFER
010511  5315		JMP	.+4	/NO ERROR
010512  7710		SPA CLA		/FATAL ERROR?
010513  5546		JMP I	[INERR	/YES
010514  2554		ISZ I	[INEOF	/NO - SET END OF FILE FLAG
010515  2545		ISZ I	[INREC
010516  2545		ISZ I	[INREC	/BUMP RECORD NUMBER BY 2
010517  1144		TAD	[10
010520  3547		DCA I	[INTEMP	/INITIALIZE SHIFT REGISTER
010521  1555		TAD I	[INCHCT
010522  7104		CLL RAL
010523  1555		TAD I	[INCHCT
010524  0175		AND	[7600
010525  7040		CMA
010526  3555		DCA I	[INCHCT	/COMPUTE CHAR COUNT FROM BUFFER CONTROL WD
010527  5257		JMP	GCHAR+1	/START ALL OVER WITH NEW BUFFER

/ OS8 SOURCE COMPARE V50		  PAL8-V50X 29-AUG-88 PAGE 16


010530  1547	GETIN,	TAD I	[INTEMP
010531  7510		SPA		/IF WE HAVE A CHAR IN THE SHIFT BUFFER
010532  3432		DCA I	IPTR	/WRITE OVER THE CURRENT BUFFER WORD WITH IT
010533  3547		DCA I	[INTEMP	/AND ZERO THE SHIFT BUFFER
010534  1432		TAD I	IPTR	/GET THE CURRENT BUFFER WORD
010535  0143		AND	[7400
010536  7104		CLL  RAL
010537  1547		TAD I	[INTEMP
010540  7006		RTL		/SHIFT THE HIGH ORDER 4 BITS
010541  7006		RTL		/INTO THE SHIFT BUFFER
010542  7500		SMA		/DID WE GET A COMPLETE CHARACTER?
010543  2556		ISZ I	[INPTR	/NO - BUMP WORD POINTER
010544  3547		DCA I	[INTEMP
010545  1432		TAD I	IPTR
010546  0142		AND	[177	/USE LOW ORDER 7 BITS OF THE CURRENT WORD
010547  7440		SZA		/AS THE CHARACTER
010550  1141		TAD	[-177	/IGNORING BLANK TAPE, RUBOUTS, LINE-FEEDS
010551  7440		SZA		/AND VERT. TABS
010552  1140		TAD	[177-13
010553  7440		SZA
010554  7001		IAC
010555  7450		SNA
010556  5257		JMP	GCHAR+1
010557  1137		TAD	[12-14
010560  7450		SNA
010561  5372		JMP	FFEED	/FORM FEED IS SPECIAL
010562  1136		TAD	[14-32
010563  7450		SNA
010564  5374		JMP	GEOF	/^Z SIGNIFIES END-OF-FILE
010565  1135		TAD	[32-15
010566  7440		SZA
010567  1134		TAD	[215	/AND CARRIAGE RETURN IS MAPPED INTO 0
010570  3031		DCA	CHAR
010571  5656		JMP I	GCHAR

010572  2560	FFEED,	ISZ I	[PGNUM	/BUMP THE PROPER PAGE COUNT ON A FORM FEED
010573  5257		JMP	GCHAR+1	/BUT OTHERWISE IGNORE IT

010574  2554	GEOF,	ISZ I	[INEOF	/SET END-OF-FILE FLAG
010575  7240		CLA CMA
010576  3555		DCA I	[INCHCT	/FORCE AN EMPTY BUFFER
010577  5600		JMP I	GLINE	/RETURN FROM GLINE WITHOUT SETTING GETFIL

	0600		PAGE

/ OS8 SOURCE COMPARE V50		  PAL8-V50X 29-AUG-88 PAGE 17


		/	INITIALIZATION
010600  4533	STARTC,	JMS I	[OUSETP	/INITIALIZE OUTPUT BUFFER POINTERS
010601  7201		CLA IAC
010602  3035		DCA	PNTPGN	/FUDGE PNTPGN WHILE PRINTING HEADER LINES
010603  1132		TAD	[HEDING-1
010604  4531		JMS I	[PNTHDG	/PRINT SRCCOM HEADING LINE
010605  4530		JMS I	[GETTWO	/GET TITLE LINES
010606  5323		JMP	FINISH	/ONE FILE IS EMPTY - ABORT COMPARISON
010607  6201		CDF F1
010610  4527		JMS I	[PNTTXT	/PRINT FILE 1 HEADER
010611  6211		CDF F2
010612  4527		JMS I	[PNTTXT	/AND FILE 2 HEADER
010613  3035		DCA	PNTPGN	/INITIALIZE PAGE NUMBER
010614  7240		STA
010615  3044		DCA	DIFFS	/INITIALIZE FLAG TO NO DIFFERENCES

		/	MAIN LOOP

010616  6201	MAIN,	CDF F1
010617  4526		JMS I	[MOVEUP
010620  6211		CDF F2
010621  4526		JMS I	[MOVEUP	/DELETE ANY USELESS LINES
010622  6201	MAINST,	CDF F1
010623  3574		DCA I	[CURLIN
010624  6211		CDF F2
010625  3574		DCA I	[CURLIN
010626  4530		JMS I	[GETTWO	/GET TWO INPUT LINES
010627  5267		JMP	MAIN15	/ONE FILE IS EMPTY
010630  4525		JMS I	[COMPL	/COMPARE THE LINES
010631  5216		JMP	MAIN	/EQUAL - DELETE AND CONTINUE
010632  3044		DCA	DIFFS	/UNEQUAL - CLEAR "NO DIFFERENCES" FLAG

/ OS8 SOURCE COMPARE V50		  PAL8-V50X 29-AUG-88 PAGE 18


010633  4530	MAIN10,	JMS I	[GETTWO	/GET TWO MORE LINES
010634  5267		JMP	MAIN15	/ONE FILE RAN OUT
010635  6201		CDF F1
010636  3574		DCA I	[CURLIN	/INITIALIZE FILE 1 LINE NO.
010637  2574	MAIN12,	ISZ I	[CURLIN	/BUMP TO NEXT LINE IN FILE 1
010640  4525		JMS I	[COMPL	/COMPARE NEW LINE FROM FILE 2
010641  4332		JMS	MULTI	/WITH THIS LINE FROM FILE 1
010642  6211		CDF F2		/AND IF MATCH IS FOUND CHECK MULTIPLE LINES
010643  1574		TAD I	[CURLIN
010644  7041		CIA
010645  6201		CDF F1
010646  1574		TAD I	[CURLIN
010647  7640		SZA CLA		/THROUGH WITH FILE 1 LINES?
010650  5237		JMP	MAIN12	/NO
010651  6211		CDF F2
010652  7201		CLA IAC
010653  3574		DCA I	[CURLIN	/NOW INITIALIZE FILE 2 LINE NO.
010654  1574	MAIN14,	TAD I	[CURLIN
010655  7041		CIA
010656  6201		CDF F1
010657  1574		TAD I	[CURLIN
010660  7650		SNA CLA		/HAVE WE EXHAUSTED FILE 2 LINES?
010661  5233		JMP	MAIN10	/YES - NO MATCH AT ALL
010662  4525		JMS I	[COMPL	/NO - COMPARE ALL FILE 2 LINES
010663  4332		JMS	MULTI	/AGAINST NEW FILE 1 LINE
010664  6211		CDF F2		/AND, IF MATCH, CHECK MULTIPLE LINES
010665  2574		ISZ I	[CURLIN	/GO TO NEXT FILE 2 LINE
010666  5254		JMP	MAIN14	/AND LOOP

/ OS8 SOURCE COMPARE V50		  PAL8-V50X 29-AUG-88 PAGE 19


010667  1030	MAIN15,	TAD	GETFIL
010670  7450		SNA		/FIND WHICH FILE WAS EMPTY
010671  5323		JMP	FINISH	/BOTH - ALL DONE
010672  3320		DCA	MAIN18
010673  6201		CDF F1
010674  1574		TAD I	[CURLIN
010675  6211		CDF F2
010676  7640		SZA CLA
010677  1574		TAD I	[CURLIN
010700  7650		SNA CLA		/IS EITHER FILE EXHAUSTED IN CORE?
010701  5320		JMP	MAIN18	/YES - PRINT ALL OF OTHER FILE
010702  1320		TAD	MAIN18	/GET CDF OF LONG FILE
010703  7041		CIA
010704  1124		TAD	[4402+F1+F2	/COMPUTE CDF OF SHORT FILE
010705  3306		DCA	MAIN17
010706  7000	MAIN17,	NOP
010707  1574		TAD I	[CURLIN
010710  7140		CMA CLL
010711  1570		TAD I	[TOPLIN
010712  7620		SNL CLA		/IS CURLIN < TOPLIN?
010713  5233		JMP	MAIN10	/NO - WE STILL HAVE SOME COMPARING TO DO
010714  2574		ISZ I	[CURLIN
010715  4525		JMS I	[COMPL
010716  4332		JMS	MULTI
010717  5306		JMP	MAIN17

010720  7000	MAIN18,	NOP		/SET DF TO DATA FIELD OF LONG FILE
010721  4527		JMS I	[PNTTXT	/PRINT IT
010722  5216		JMP	MAIN

010723  6201	FINISH,	CDF F1
010724  1574		TAD I	[CURLIN
010725  6211		CDF F2
010726  1574		TAD I	[CURLIN
010727  7640		SZA CLA		/ARE BOTH CORE BUFFERS EMPTY?
010730  4523		JMS I	[PNTBTH	/NO - PRINT THEM
010731  5522		JMP I	[EOCOMP

/ OS8 SOURCE COMPARE V50		  PAL8-V50X 29-AUG-88 PAGE 20


		/	MULTI-LINE COMPARATOR
010732  0000	MULTI,	0
010733  6201		CDF F1
010734  1574		TAD I	[CURLIN
010735  3521		DCA I	[TMPLIN
010736  6211		CDF F2
010737  1574		TAD I	[CURLIN
010740  3521		DCA I	[TMPLIN	/STORE CURLIN AWAY IN A TEMPORARY
010741  1025		TAD	NUMLIN
010742  3033		DCA	NUMTMP	/GET COUNT OF LINES TO COMPARE
010743  5352		JMP	MULT6

010744  4530	MULT2,	JMS I	[GETTWO	/GET TWO LINES
010745  5350		JMP	MULT4	/ONE FILE HAS NO MORE
010746  4525		JMS I	[COMPL	/COMPARE THEM
010747  5352		JMP	MULT6	/THEY COMPARE - KEEP GOING
010750  4362	MULT4,	JMS	SWAPCT	/RESET OLD CURLIN
010751  5732		JMP I	MULTI
010752  2033	MULT6,	ISZ	NUMTMP	/LINE COUNT EXHAUSTED?
010753  5344		JMP	MULT2	/NO - KEEP COMPARING
010754  4362		JMS	SWAPCT	/RESTORE OLD CURLIN
010755  4523		JMS I	[PNTBTH	/PRINT OUT DIFFERENCES
010756  1120		TAD	[-10
010757  4517		JMS I	[PNTAST	/PRINT OUT SEPARATOR
010760  4362		JMS	SWAPCT	/RE-SWAP FOR DELETION
010761  5216		JMP	MAIN	/DELETE THRU MATCHING LINES AND CONTINUE

/ OS8 SOURCE COMPARE V50		  PAL8-V50X 29-AUG-88 PAGE 21


010762  0000	SWAPCT,	0
010763  6201		CDF F1
010764  4370		JMS	SWAPX	/SWAP CURLIN AND TMPLIN FOR FILE 1
010765  6211		CDF F2
010766  4370		JMS	SWAPX	/DITTO FOR FILE 2
010767  5762		JMP I	SWAPCT
010770  0000	SWAPX,	0
010771  1574		TAD I	[CURLIN
010772  3033		DCA	NUMTMP
010773  1521		TAD I	[TMPLIN
010774  3574		DCA I	[CURLIN
010775  1033		TAD	NUMTMP
010776  3521		DCA I	[TMPLIN
010777  5770		JMP I	SWAPX

	1000		PAGE

/ OS8 SOURCE COMPARE V50		  PAL8-V50X 29-AUG-88 PAGE 22


011000  0000	PNTBTH,	0		/PRINT BOTH TEXT BUFFERS
011001  1116		TAD	[212
011002  4515		JMS I	[OCHAR	/SEPARATOR
011003  6201		CDF F1
011004  4214		JMS	PNTTXT	/PRINT FILE 1 BUFFER
011005  1114		TAD	[-4
011006  4322		JMS	PNTAST	/PRINT SEPARATOR
011007  6211		CDF F2
011010  4214		JMS	PNTTXT	/PRINT FILE 2 BUFFER
011011  1116		TAD	[212
011012  4515		JMS I	[OCHAR	/SEPARATOR
011013  5600		JMP I	PNTBTH

011014  0000	PNTTXT,	0		/PRINT A TEXT BUFFER
011015  1574		TAD I	[CURLIN
011016  7041		CIA
011017  3034		DCA	PLNCNT	/GET # OF LINES TO PRINT
011020  3043	PNTLP,	DCA	TABCT	/ZERO TAB COUNTER (IN CASE "T" SW ON)
011021  6214		RDF
011022  7112		CLL RTR
011023  7010		RAR		/GET FILE NUMBER
011024  1113		TAD	[261	/260 FOR 12K VERSION
011025  4515		JMS I	[OCHAR
011026  1112		TAD	[251
011027  4515		JMS I	[OCHAR	/PRINT RPAR
011030  1034		TAD	PLNCNT
011031  7001		IAC
011032  4577		JMS I	[SETONE	/GET POINTER TO LINE
011033  7001		IAC
011034  3011		DCA	XR1
011035  1411		TAD I	XR1	/GET THE PAGE NUMBER OF THE LINE
011036  3002		DCA	T
011037  1002		TAD	T
011040  7041		CIA
011041  1035		TAD	PNTPGN
011042  7650		SNA CLA		/DID THE PAGE NUMBER JUST CHANGE?
011043  5271		JMP	PNTTAB	/NO - DON'T PRINT IT
011044  1356		TAD	TENTAD
011045  3257		DCA	PNTTAD
011046  1002		TAD	T
011047  3035		DCA	PNTPGN	/UPDATE THE CURRENT PAGE NUMBER
011050  7346		CLA CLL CMA RTL
011051  3003		DCA	CT	/PRINT 3 DECIMAL DIGITS

/ OS8 SOURCE COMPARE V50		  PAL8-V50X 29-AUG-88 PAGE 23


011052  3000	DIGLP1,	DCA	T1
011053  5256		JMP	.+3
011054  3002	DIGLP2,	DCA	T
011055  2000		ISZ	T1
011056  1002		TAD	T
011057  7402	PNTTAD,	HLT		/ADD IN A POWER OF 10
011060  7500		SMA
011061  5254		JMP	DIGLP2	/KEEP GOING
011062  7200	PN7200,	CLA
011063  2257		ISZ	PNTTAD	/GOT A DIGIT - GO TO NEXT POWER OF 10
011064  1000		TAD T1
011065  1111		TAD	[260
011066  4515		JMS I	[OCHAR	/PRINT DIGIT
011067  2003		ISZ	CT	/THROUGH?
011070  5252		JMP	DIGLP1	/NO
011071  1022	PNTTAB,	TAD	TSW
011072  7650		SNA CLA		/SHOULD WE SIMULATE TABS?
011073  5310		JMP	PNTCHR	/NO
011074  1110		TAD	[240	/YES - PRINT A BLANK
011075  4515		JMS I	[OCHAR
011076  1043		TAD	TABCT
011077  0107		AND	[7
011100  7640		SZA CLA		/KEEP PRINTING BLANKS UNTIL WE REACH A MULTIPLE OF
011101  5271		JMP	PNTTAB	/EIGHT COLUMNS.
011102  1411	PNTCLP,	TAD I	XR1	/GET A CHARACTER FROM THE LINE
011103  7450		SNA		/END?
011104  5313		JMP	PNTCR	/YES
011105  1155		TAD	[-211
011106  7450		SNA		/IS IT A TAB?
011107  5271		JMP	PNTTAB	/YES
011110  1106	PNTCHR,	TAD	[211	/NO - RESTORE THE CHAR
011111  4515		JMS I	[OCHAR
011112  5302		JMP	PNTCLP	/PRINT IT AND LOOP
011113  1134	PNTCR,	TAD	[215	/PRINT CRLF
011114  4515		JMS I	[OCHAR
011115  1116		TAD	[212
011116  4515		JMS I	[OCHAR
011117  2034		ISZ	PLNCNT
011120  5220		JMP	PNTLP	/LOOP FOR EACH LINE IN BUFFER
011121  5614		JMP I	PNTTXT

/ OS8 SOURCE COMPARE V50		  PAL8-V50X 29-AUG-88 PAGE 24


011122  0000	PNTAST,	0		/ROUTINE TO PRINT ASTERISKS
011123  3003		DCA	CT	/SAVE COUNTER
011124  1105		TAD	["*
011125  4515		JMS I	[OCHAR
011126  2003		ISZ	CT
011127  5324		JMP	.-3	/PRINT REQUIRED NUMBER OF ASTERISKS
011130  1134		TAD	[215
011131  4515		JMS I	[OCHAR	/TERMINATE THE LINE
011132  1116		TAD	[212
011133  4515		JMS I	[OCHAR
011134  3035		DCA	PNTPGN	/KILL CURR. PAGE NUMBER
011135  5722		JMP I	PNTAST

011136  2044	EOCOMP,	ISZ	DIFFS	/ANY DIFFERENCES?
011137  5343		JMP	.+4	/YES
011140  6201		CDF 0		/MESSAGE IN FIELD 0
011141  1104		TAD	[NODFMS-1
011142  4531		JMS I	[PNTHDG	/NO - PRINT MESSAGE
011143  1262		TAD	PN7200	/ROUTINE TO FINISH UP OUTPUT
011144  3003		DCA	CT
011145  1103		TAD	[214
011146  4515		JMS I	[OCHAR	/TERMINATE THE OUTPUT FILE
011147  1102		TAD	[232	/WITH A FORM FEED AND A ^Z
011150  4515		JMS I	[OCHAR
011151  2003		ISZ	CT
011152  5350		JMP	.-2	/FILL WITH ZEROS TO FORCE BUFFER OUT
011153  6203		CDF CIF 0
011154  5755		JMP I	.+1	/GO TO FIELD 0 TO FINISH UP AS WE WILL BE
011155  0321		OCLOSE		/OVERLAYED BY THE USR DURING THE CLOSE

011156  1357	TENTAD,	TAD	.+1	/TABLE OF POWERS OF TEN
011157  7634		-144
011160  7766		-12
011161  7777		-1

011162  6214	INERR,	RDF		/INPUT ERROR - ERROR NUMBER=FILE NUMBER
011163  7112		CLL RTR
011164  7010		RAR
011165  7001		IFZERO	CORE-2	<IAC>
			IFZERO	CORE-4	<TAD	[-1>
011166  6203		CDF CIF 0
011167  5561		JMP I	[NOROOM	/GO TO COMMON ERROR ROUTINE

/ OS8 SOURCE COMPARE V50		  PAL8-V50X 29-AUG-88 PAGE 25


011170  0000	PNTHDG,	0		/ROUTINE TO PRINT A LITERAL LINE
011171  3011		DCA	XR1	/POINTER TO LINE IN AC
011172  1370		TAD	PNTHDG
011173  3214		DCA	PNTTXT	/WE WORK BY FAKING OUT PNTTXT
011174  7240		STA
011175  3034		DCA	PLNCNT	/SET LINE COUNTER TO 1
011176  5302		JMP	PNTCLP

	1200		PAGE

/ OS8 SOURCE COMPARE V50		  PAL8-V50X 29-AUG-88 PAGE 26


011200  0000	OCHAR,	0		/LOW LEVEL OUTPUT ROUTINE
011201  0101		AND	[377
011202  3042		DCA	OUTEMP
011203  2043		ISZ	TABCT	/BUMP TAB COUNTER
011204  6214		RDF
011205  1157		TAD	[6201
011206  3261		DCA	OCDF
011207  6211		CDF 10
011210  1037		TAD	OUCHCT	/GET CHAR COUNTER - CHAR COUNTER COUNTS
011211  7012		RTR		/FOUR TIMES FOR EACH THREE CHARACTERS.
011212  7020		CML		/WHEN THE LOW ORDER BITS OF THE COUNT ARE 10,
011213  7730		SZL SPA CLA	/ITS TIME TO SQUEEZE A CHAR INTO THE HIGH
011214  5232		JMP	OUNORM	/ORDER BITS - OTHERWISE JUST STORE IT
011215  2037		ISZ	OUCHCT	/WE MUST SQUEEZE - BUMP OUCHCT AN EXTRA
011216  1042		TAD	OUTEMP	/TIME
011217  7006		RTL
011220  7006		RTL
011221  0143		AND	[7400
011222  1441		TAD I	OUXPTR	/FIRST WORD OF DOUBLET
011223  3441		DCA I	OUXPTR
011224  1042		TAD	OUTEMP
011225  7002		BSW
011226  7106		CLL RTL
011227  0143		AND	[7400
011230  1440		TAD I	OUPTR	/SECOND WORD OF DOUBLET
011231  5236		JMP	OUCOMN

/ OS8 SOURCE COMPARE V50		  PAL8-V50X 29-AUG-88 PAGE 27


011232  1040	OUNORM,	TAD	OUPTR
011233  3041		DCA	OUXPTR	/REMEMBER LAST WORD
011234  2040		ISZ	OUPTR
011235  1042		TAD	OUTEMP
011236  3440	OUCOMN,	DCA I	OUPTR
011237  2037		ISZ	OUCHCT	/BUMP CHAR COUNT
011240  5261		JMP	OCDF	/RETURN
011241  6202		CIF 0		/CHAR COUNT OVFLO - OUTPUT BUFFER
011242  4436		JMS I	OUHNDL
011243  4210		4210
011244  1400		1400
011245  0000	OUREC,	0
011246  5255		JMP	OUERR2
011247  4263		JMS	OUSETP	/INITIALIZE FOR NEXT BUFFER
011250  2245		ISZ	OUREC	/BUMP RECORD NUMBER
011251  6201		CDF 0
011252  2500		ISZ I	[OCOUNT	/BUMP CLOSING COUNT
011253  2477		ISZ I	[OLEN	/AND LENGTH OF HOLE
011254  5261		JMP	OCDF
011255  7126	OUERR2,	CLL CML RTL	/OUTPUT ERROR OR FILE TOO BIG - GENERATE
011256  7001		IAC		/A 3 OR A 4 MESSAGE, RESPECTIVELY
011257  6203		CDF CIF 0
011260  5561		JMP I	[NOROOM
011261  7402	OCDF,	HLT	/RESTORE DATA FIELD
011262  5600		JMP I	OCHAR	/RETURN

/ OS8 SOURCE COMPARE V50		  PAL8-V50X 29-AUG-88 PAGE 28


011263  0000	OUSETP,	0
011264  1076		TAD	[7000	/4 COUNTS FOR 2 WORDS
011265  3037		DCA	OUCHCT
011266  1075		TAD	[1377
011267  3040		DCA	OUPTR
011270  5663		JMP I	OUSETP

011271  0000	TSTXSW,	0		/SUBROUTINE TO IGNORE COMMENTS ON INPUT
011272  1031		TAD	CHAR	/IF "X" SWITCH SET
011273  1074		TAD	[-257
011274  7650		SNA CLA
011275  1023		TAD	XSW	/IF XSW IS OFF OR THE CURRENT CHAR ISN'T A /
011276  7650		SNA CLA
011277  5671		JMP I	TSTXSW	/RETURN
011300  4473		JMS I	[GCHAR
011301  1031		TAD	CHAR	/SKIP CHARACTERS UNTIL CARRIAGE RETURN
011302  7640		SZA CLA
011303  5300		JMP	.-3
011304  7344	TSTXLP,	CLA CLL CMA RAL
011305  1402		TAD I	T
011306  7650		SNA CLA		/ARE WE AT THE BEGINNING OF A LINE?
011307  5671		JMP I	TSTXSW	/YES - GLINE WILL DELETE IT IF NECESSARY
011310  1011		TAD	XR1
011311  3327		DCA	TX
011312  1727		TAD I	TX
011313  1072		TAD	[-240
011314  7440		SZA		/IS THE PREVIOUS CHARACTER A SPACE
011315  1165		TAD	[240-211
011316  7640		SZA CLA		/OR A TAB?
011317  5671		JMP I	TSTXSW	/NO
011320  7040		CMA
011321  1011		TAD	XR1
011322  3011		DCA	XR1	/BACK UP CHAR PTR
011323  7040		CMA
011324  1402		TAD I	T
011325  3402		DCA I	T	/AND CHAR CTR
011326  5304		JMP	TSTXLP	/LOOP
011327  0000	TX,	0

/ OS8 SOURCE COMPARE V50		  PAL8-V50X 29-AUG-88 PAGE 29


011330  3036	SRCOPT,	DCA	OUHNDL
011331  1471		TAD I	[MPARAM
011332  7040		CMA
011333  0123		AND	[1000	/"C" OPTION
011334  1074		TAD	[-257
011335  3020		DCA	CSW
011336  7332		CLA CLL CML RTR
011337  0471		AND I	[MPARAM
011340  3024		DCA	ALLSW	/"B" OPTION
011341  1470		TAD I	[MPARAM+1
011342  7040		CMA
011343  0067		AND	[40	/"S" OPTION
011344  1072		TAD	[-240
011345  3021		DCA	SSW
011346  1470		TAD I	[MPARAM+1
011347  0066		AND	[20	/"T" OPTION
011350  3022		DCA	TSW
011351  7201		CLA IAC
011352  0470		AND I	[MPARAM+1
011353  3023		DCA	XSW	/"X" OPTION
011354  1465		TAD I	[MPARAM+3
011355  7041		CIA		/GET NEGATIVE OF NUMERICAL ARGUMENT
011356  7450		SNA
011357  7346		CLA CLL CMA RTL	/DEFAULT VALUE IS 3
011360  3025		DCA	NUMLIN	/TO NUMBER OF LINES NECESSARY FOR A MATCH
011361  5762		JMP I	.+1
011362  0600		STARTC

	0005		VV1=VERSION%12
	0062		VV2=VV1^12
011363  0323	HEDING,	"S;"r;"c;"C;"o;"m;" ;"V;VV1+"0;VERSION-VV2+"0;PATCH;212;0
011364  0362
011365  0343
011366  0303
011367  0357
011370  0355
011371  0240
011372  0326
011373  0265
011374  0260
011375  0301
011376  0212
011377  0000

/ OS8 SOURCE COMPARE V50		  PAL8-V50X 29-AUG-88 PAGE 30


		/PAGE 0 LITERALS FOR FIELD 1
			$-$-$	/END OF ASSEMBLY OF SRCCOM
010065  7646
010066  0020
010067  0040
010070  7644
010071  7643
010072  7540
010073  0456
010074  7521
010075  1377
010076  7000
010077  0305
010100  0332
010101  0377
010102  0232
010103  0214
010104  0047
010105  0252
010106  0211
010107  0007
010110  0240
010111  0260
010112  0251
010113  0261
010114  7774
010115  1200
010116  0212
010117  1122
010120  7770
010121  7561
010122  1136
010123  1000
010124  4412
010125  0271
010126  0235
010127  1014
010130  0364
010131  1170
010132  1362
010133  1263
010134  0215
010135  0015
010136  7762
010137  7776
010140  0164
010141  7601
010142  0177
010143  7400
010144  0010
010145  7571
010146  1162
010147  7564
010150  6203

/ OS8 SOURCE COMPARE V50		  PAL8-V50X 29-AUG-88 PAGE 30-1

010151  6556
010152  0401
010153  7577
010154  7576
010155  7567
010156  7570
010157  6201
010160  7556
010161  0351
010162  1227
010163  1271
010164  0400
010165  0027
010166  0002
010167  1777
010170  7560
010171  2000
010172  7562
010173  7563
010174  7557
010175  7600
010176  7575
010177  0200

/ OS8 SOURCE COMPARE V50		  PAL8-V50X 29-AUG-88 PAGE 31

ALLSW  0024      MAIN10 0633      PNTTAD 1057      
ASSOUT 0250      MAIN12 0637      PNTTXT 1014      
BUFLIM 6555      MAIN14 0654      PN7200 1062      
CHAR   0031      MAIN15 0667      SCT    0020      
COMPL  0271      MAIN17 0706      SETCDF 0132      
COMP0  0310      MAIN18 0720      SETONE 0200      
COMP1  0302      MLIMIT 0026      SETOPT 0204      
COMP2  0305      MLOOP  0256      SETRST 0231      
COMP3  0323      MOVEUP 0235      SETUP  0067      
COMP4  0326      MOVXIT 0264      SETUP1 0026      
COMP5  0315      MPARAM 7643      SETUP2 0050      
CORE   0002      MULTI  0732      SRCATS 0334      
CSW    0020      MULT2  0744      SRCCD  0204      
CT     0003      MULT4  0750      SRCCOM 0200      
CTCCHK 0045      MULT6  0752      SRCOPT 1330      
CURLIN 7557      NOCHN  0343      SSW    0021      
DIFFS  0044      NODFMS 0050      STARTC 0600      
DIGLP1 1052      NOROOM 0351      SWAPCT 0762      
DIGLP2 1054      NOSRCD 0213      SWAPX  0770      
DVPAGE 0116      NUMLIN 0025      T      0002      
EOCOMP 1136      NUMTMP 0033      TABCT  0043      
FBLOCK 7556      OCDF   1261      TENTAD 1156      
FFEED  0572      OCHAR  1200      TLNNUM 0230      
FINISH 0723      OCLOSE 0321      TLOOP  0213      
F1     0000      OCOUNT 0332      TMPLIN 7561      
F2     0010      OFILNM 0021      TOPLIN 7560      
GCHAR  0456      OLDLIN 7562      TSTXLP 1304      
GEOF   0574      OLDPTR 7563      TSTXSW 1271      
GETCNT 0027      OLEN   0305      TSW    0022      
GETFIL 0030      ORCNO  0304      TTYNO  0241      
GETIN  0530      OUCHCT 0037      TX     1327      
GETTWO 0364      OUCOMN 1236      TYPE   0372      
GLEXIT 0450      OUERR1 0350      T1     0000      
GLINE  0400      OUERR2 1255      T2     0001      
GLINE2 0417      OUHNDL 0036      VERSIO 0062      
GTOUHN 0227      OUNORM 1232      VV1    0005      
HEDING 1363      OUPAGE 0253      VV2    0062      
IFPTR  0025      OUPTR  0040      XR     0010      
INBUF  6556      OUREC  1245      XR1    0011      
INCHCT 7567      OUSETP 1263      XR2    0012      
INEOF  7576      OUTEMP 0042      XSW    0023      
INERR  1162      OUXPTR 0041      
INERR1 0344      PATCH  0301      
INHNDL 7575      PFILNM 0331      
INPTR  7570      PGNUM  7556      
INRCNT 7577      PLNCNT 0034      
INREC  7571      PNTAST 1122      
INST1  0265      PNTBTH 1000      
INST2  0076      PNTCHR 1110      
INTEMP 7564      PNTCLP 1102      
IPTR   0032      PNTCR  1113      
KEEPON 0224      PNTHDG 1170      
LNBEG  2000      PNTLP  1020      
MAIN   0616      PNTPGN 0035      
MAINST 0622      PNTTAB 1071      



ERRORS DETECTED: 0
LINKS GENERATED: 0