
;This program compares two files with the same length and makes a table
;of the differences between them. 
;Done by Egon.


	INCDIR	ASM-ONE:INCLUDE2.0/

	INCLUDE LIBRARIES/DOS_LIB.I
	INCLUDE	LIBRARIES/DOS.I
	INCLUDE	LIBRARIES/DISKFONT_LIB.I
	INCLUDE EXEC/EXEC_LIB.I
	INCLUDE	EXEC/MEMORY.I
	INCLUDE	GRAPHICS/GRAPHICS_LIB.I
	INCLUDE INTUITION/INTUITION_LIB.I
	INCLUDE INTUITION/INTUITION.I

	INCDIR	ASM-ONE:


SIZETABLE = $2000		;MAXIMALLY SIZE OF COMPARATIONTABLE (Longwords)

HP	;BRA.S	HP
	BASEREG	DOSBAS,A5
	LEA.L	DOSBAS(PC),A5
	MOVE.L	A0,DATABASE(A5)
	MOVE.L	D0,DATALENGTH(A5)
	MOVE.L	A7,OSSTACK(A5)
	SUBQ.L	#1,A0
.1	ADDQ.L	#1,A0
	CMP.B	#$9,(A0)
	BEQ.S	.1
	CMP.B	#$20,(A0)
	BEQ.S	.1
	CMP.B	#$A,(A0)
	BNE.S	.10
	MOVEQ.L	#20,D0
	RTS

.10	CMP.B	#'?',(A0)
	BNE.S	.2
	MOVE.L	(_SYSBASE).W,A6
	LEA.L	DOSNAM(PC),A1
	MOVEQ.L	#0,D0
	JSR	_LVOOpenLibrary(A6)	;DOS öffnen
	TST.L	D0
	BEQ.W	ERRGENERAL
	MOVE.L	D0,DOSBAS(A5)		;Zeiger sichern

	MOVE.L	DOSBAS(PC),A6
	JSR	_LVOOUTPUT(A6)
	TST.L	D0
	BEQ.W	ERRGENERAL
	MOVE.L	D0,OUTPUTBAS(A5)

	LEA.L	HELPSYNTAX(PC),A0
	MOVEQ.L	#0,D3
	MOVE.L	A0,D2
.9	TST.B	(A0)+
	BEQ.S	.8
	ADDQ.L	#1,D3
	BRA.S	.9

.8	MOVE.L	OUTPUTBAS(PC),D1
	MOVE.L	DOSBAS(PC),A6
	JSR	_LVOWRITE(A6)
	LEA.L	$0.W,A0
	BRA.W	ENDE

.2	LEA.L	LOCK1NAM(PC),A1
	BSR.W	EXAMPARAM
	TST.L	D3
	BNE.S	.3
	MOVEQ.L	#20,D0
	RTS

.3	LEA.L	LOCK2NAM(PC),A1
	BSR.W	EXAMPARAM
	TST.L	D3
	BNE.S	.4
	MOVEQ.L	#20,D0
	RTS

.4	TST.L	D0
	BNE.S	.6
.5	LEA.L	LOCK3NAM(PC),A1
	BSR.W	EXAMPARAM
	TST.L	D3
	BNE.S	.7
.6	ST	NOTSAVE(A5)
.7

MAINPRG	MOVE.L	(_SYSBASE).W,A6
	LEA.L	DOSNAM(PC),A1
	MOVEQ.L	#0,D0
	JSR	_LVOOpenLibrary(A6)	;DOS öffnen
	TST.L	D0
	BEQ.W	ERRGENERAL
	MOVE.L	D0,DOSBAS(A5)		;Zeiger sichern

	MOVE.L	DOSBAS(PC),A6
	JSR	_LVOOUTPUT(A6)
	TST.L	D0
	BEQ.W	ERRGENERAL
	MOVE.L	D0,OUTPUTBAS(A5)

	LEA.L	WRITTEN(PC),A0
	MOVEQ.L	#0,D3
	MOVE.L	A0,D2
.3	TST.B	(A0)+
	BEQ.S	.2
	ADDQ.L	#1,D3
	BRA.S	.3

.2	MOVE.L	OUTPUTBAS(PC),D1
	MOVE.L	DOSBAS(PC),A6
	JSR	_LVOWRITE(A6)

	LEA.L	LOCK1NAM(PC),A1
	MOVE.L	A1,D1
	MOVE.L	#MODE_READWRITE,D2
	MOVE.L	DOSBAS(PC),A6
	JSR	_LVOLOCK(A6)
	TST.L	D0
	BEQ.W	ERRNOTEXIST
	MOVE.L	D0,PARAM1LOCK(A5)
	MOVE.L	PARAM1LOCK(PC),D1
	MOVE.L	#PARAM1INFO,D2
	MOVE.L	DOSBAS(PC),A6
	JSR	_LVOEXAMINE(A6)
	TST.L	D0
	BEQ.W	ERRNOTEXIST
	LEA.L	PARAM1INFO,A0
	CMP.L	#-3,FIB_DIRENTRYTYPE(A0)
	BNE.W	ERRNOFILE

	LEA.L	LOCK2NAM(PC),A1
	MOVE.L	A1,D1
	MOVE.L	#MODE_READWRITE,D2
	MOVE.L	DOSBAS(PC),A6
	JSR	_LVOLOCK(A6)
	TST.L	D0
	BEQ.W	ERRNOTEXIST
	MOVE.L	D0,PARAM2LOCK(A5)
	MOVE.L	PARAM2LOCK(PC),D1
	MOVE.L	#PARAM2INFO,D2
	MOVE.L	DOSBAS(PC),A6
	JSR	_LVOEXAMINE(A6)
	TST.L	D0
	BEQ.W	ERRNOTEXIST
	LEA.L	PARAM2INFO,A0
	CMP.L	#-3,FIB_DIRENTRYTYPE(A0)
	BNE.W	ERRNOFILE

	LEA.L	PARAM1INFO,A0
	MOVE.L	FIB_SIZE(A0),D0
	LEA.L	PARAM2INFO,A0
	CMP.L	FIB_SIZE(A0),D0
	BNE.W	ERROTHERLEN

	MOVE.L	D0,LENGTH(A5)
	ADD.L	#$7,D0
	AND.L	#$FFFF8,D0
	MOVE.L	D0,A2
	MOVE.L	#MEMF_CLEAR,D1
	MOVE.L	(_SYSBASE).W,A6
	JSR	_LVOALLOCMEM(A6)
	TST.L	D0
	BEQ.W	ERRNOTENMEM
	MOVE.L	D0,MEM1BASE(A5)
	MOVE.L	A2,D0
	MOVE.L	#MEMF_CLEAR,D1
	MOVE.L	(_SYSBASE).W,A6
	JSR	_LVOALLOCMEM(A6)
	TST.L	D0
	BEQ.W	ERRNOTENMEM
	MOVE.L	D0,MEM2BASE(A5)

	LEA.L	LOCK1NAM(PC),A1
	MOVE.L	A1,D1
	MOVE.L	#MODE_OLDFILE,D2
	MOVE.L	DOSBAS(PC),A6
	JSR	_LVOOPEN(A6)
	TST.L	D0
	BEQ.W	ERROPENFILE
	MOVE.L	D0,FILHANDLE(A5)
	MOVE.L	FILHANDLE(PC),D1
	MOVE.L	MEM1BASE(PC),D2
	LEA.L	PARAM1INFO,A0
	MOVE.L	FIB_SIZE(A0),D3
	MOVE.L	DOSBAS(PC),A6
	JSR	_LVOREAD(A6)
	TST.L	D0
	BMI.W	ERRLOADFILE
	BEQ.W	ERRLOADFILE
	MOVE.L	FILHANDLE(PC),D1
	MOVE.L	DOSBAS(PC),A6
	JSR	_LVOCLOSE(A6)
	CLR.L	FILHANDLE(A5)

	LEA.L	LOCK2NAM(PC),A1
	MOVE.L	A1,D1
	MOVE.L	#MODE_OLDFILE,D2
	MOVE.L	DOSBAS(PC),A6
	JSR	_LVOOPEN(A6)
	TST.L	D0
	BEQ.W	ERROPENFILE
	MOVE.L	D0,FILHANDLE(A5)
	MOVE.L	FILHANDLE(PC),D1
	MOVE.L	MEM2BASE(PC),D2
	LEA.L	PARAM2INFO,A0
	MOVE.L	FIB_SIZE(A0),D3
	MOVE.L	DOSBAS(PC),A6
	JSR	_LVOREAD(A6)
	TST.L	D0
	BMI.W	ERRLOADFILE
	BEQ.W	ERRLOADFILE
	MOVE.L	FILHANDLE(PC),D1
	MOVE.L	DOSBAS(PC),A6
	JSR	_LVOCLOSE(A6)
	CLR.L	FILHANDLE(A5)

	MOVE.L	PARAM1LOCK(PC),D1
	MOVE.L	DOSBAS(PC),A6
	JSR	_LVOUNLOCK(A6)
	CLR.L	PARAM1LOCK(A5)
	MOVE.L	PARAM2LOCK(PC),D1
	MOVE.L	DOSBAS(PC),A6
	JSR	_LVOUNLOCK(A6)
	CLR.L	PARAM2LOCK(A5)

	MOVE.L	MEM1BASE(PC),A0		;FILE1 ORIGINAL
	MOVE.L	MEM2BASE(PC),A1
	BSR.W	COMP
	CMP.L	#-1,D0
	BEQ.W	ERRTABTOOLONG
	CMP.L	#4,D0
	BEQ.W	NODIFF
	MOVE.L	D0,D4

	TST.B	NOTSAVE(A5)
	BNE.S	.1
	LEA.L	LOCK3NAM(PC),A1
	MOVE.L	A1,D1
	MOVE.L	#MODE_NEWFILE,D2
	MOVE.L	DOSBAS(PC),A6
	JSR	_LVOOPEN(A6)
	TST.L	D0
	BEQ.W	ERRSAVEFILE
	MOVE.L	D0,FILHANDLE(A5)
	MOVE.L	FILHANDLE(PC),D1
	LEA.L	COMPTAB,A0
	MOVE.L	A0,D2
	MOVE.L	D4,D3
	MOVE.L	DOSBAS(PC),A6
	JSR	_LVOWRITE(A6)
	TST.L	D0
	BMI.W	ERRSAVEFILE
	BEQ.W	ERRSAVEFILE
	MOVE.L	FILHANDLE(PC),D1
	MOVE.L	DOSBAS(PC),A6
	JSR	_LVOCLOSE(A6)
.1	CLR.L	FILHANDLE(A5)

ALL_OK	LEA.L	NROK(PC),A0
	MOVE.L	NUMBER(PC),D0
	SWAP	D0
	BSR.S	NEXTNUMBER
	BSR.S	NEXTNUMBER
	BSR.S	NEXTNUMBER
	BSR.S	NEXTNUMBER
	LEA.L	OKDISP(PC),A0
	BRA.S	ENDE

NEXTNUMBER	CLR.W	D0
	ROL.L	#4,D0
	MOVE.B	.NR(PC,D0.W),D0
	MOVE.B	D0,(A0)+
	RTS

.NR	DC.B	'0123456789ABCDEF'
	EVEN

NODIFF	LEA.L	NODIFFDISP(PC),A0
ENDE	MOVEQ.L	#0,D0
	BRA.S	ENDE1

ERRGENERAL	LEA.L	$0.W,A0
	BRA.S	ERR

ERRSAVEFILE	LEA.L	ERRSAVEDISP(PC),A0
	BRA.S	ERR

ERRNOTEXIST	LEA.L	NOTEXISTDISP(PC),A0
	BRA.S	ERR

ERRNOFILE	LEA.L	NOFILEDISP(PC),A0
	BRA.S	ERR

ERROTHERLEN	LEA.L	OTHERLENDISP(PC),A0
	BRA.S	ERR

ERRNOTENMEM	LEA.L	NOTENMEMDISP(PC),A0
	BRA.S	ERR

ERROPENFILE	LEA.L	ERROPENDISP(PC),A0
	BRA.S	ERR

ERRLOADFILE	LEA.L	ERRLOADDISP(PC),A0
	BRA.S	ERR

ERRTABTOOLONG	MOVE.L	MEM1BASE(PC),A0
	MOVE.L	MEM2BASE(PC),A1
	MOVEQ.L	#0,D0
	MOVEQ.L	#0,D1
.2	CMPM.B	(A0)+,(A1)+
	BEQ.S	.1
	ADDQ.L	#1,D1
.1	ADDQ.L	#1,D0
	CMP.L	LENGTH(PC),D0
	BLO.S	.2
	MOVE.L	D1,D0
	LEA.L	NRBIG(PC),A0
	BSR.S	NEXTNUMBER
	BSR.S	NEXTNUMBER
	BSR.S	NEXTNUMBER
	BSR.S	NEXTNUMBER
	MOVE.L	D1,D0
	SWAP	D0
	BSR.W	NEXTNUMBER
	BSR.W	NEXTNUMBER
	BSR.W	NEXTNUMBER
	BSR.W	NEXTNUMBER
	LEA.L	NOTSAVEDISP(PC),A0
ERR	MOVE.L	OSSTACK(PC),A7
	MOVEQ.L	#20,D0

ENDE1
	MOVE.L	D0,-(A7)
	CMP.L	#0,A0
	BEQ.S	.1
	MOVEQ.L	#0,D3
	MOVE.L	A0,D2
.3	TST.B	(A0)+
	BEQ.S	.2
	ADDQ.L	#1,D3
	BRA.S	.3

.2	MOVE.L	OUTPUTBAS(PC),D1
	MOVE.L	DOSBAS(PC),A6
	JSR	_LVOWRITE(A6)

.1	TST.L	FILHANDLE(A5)
	BEQ.S	.9
	MOVE.L	FILHANDLE(PC),D1
	MOVE.L	DOSBAS(PC),A6
	JSR	_LVOCLOSE(A6)

.9	TST.L	PARAM1LOCK(A5)
	BEQ.S	.5
	MOVE.L	PARAM1LOCK(PC),D1
	MOVE.L	DOSBAS(PC),A6
	JSR	_LVOUNLOCK(A6)

.5	TST.L	PARAM2LOCK(A5)
	BEQ.S	.4
	MOVE.L	PARAM2LOCK(PC),D1
	MOVE.L	DOSBAS(PC),A6
	JSR	_LVOUNLOCK(A6)

.4	MOVE.L	LENGTH(PC),D0
	ADD.L	#$7,D0
	AND.L	#$FFFF8,D0
	MOVE.L	D0,A2
	TST.L	MEM1BASE(A5)
	BEQ.S	.8
	MOVE.L	MEM1BASE(PC),A1
	MOVE.L	(_SYSBASE).W,A6
	JSR	_LVOFREEMEM(A6)
.8	TST.L	MEM2BASE(A5)
	BEQ.S	.7
	MOVE.L	A2,D0
	MOVE.L	MEM2BASE(PC),A1
	MOVE.L	(_SYSBASE).W,A6
	JSR	_LVOFREEMEM(A6)

.7	TST.L	DOSBAS(A5)
	BEQ.S	.6
	MOVE.L	(_SYSBASE).W,A6
	MOVE.L	DOSBAS(PC),A1
	JSR	_LVOCLOSELIBRARY(A6)	;DOS-Lib schliessen

.6	MOVE.L	(A7)+,D0
	RTS

;----------------------------------------------------------------------------
EXAMPARAM	MOVEQ.L	#0,D3
	SUBQ.L	#1,A0
.4	ADDQ.L	#1,A0
	CMP.B	#$9,(A0)
	BEQ.S	.4
	CMP.B	#$20,(A0)
	BEQ.S	.4
	CMP.B	#$A,(A0)
	BEQ.S	.3
	MOVEQ.L	#0,D2
	CMP.B	#'"',(A0)
	BNE.S	.6
	ST	D2
	ADDQ.L	#1,A0
.6
.1	MOVE.B	(A0)+,D1
	CMP.B	#$9,D1
	BEQ.S	.2
	CMP.B	#$20,D1
	BEQ.S	.2
	CMP.B	#$A,D1
	BEQ.S	.3
	CMP.B	#'"',D1
	BEQ.S	.5
	MOVE.B	D1,(A1)+
	ADDQ.L	#1,D3
	BRA.S	.1

.2	TST.B	D2
	BEQ.S	.7
	MOVE.B	D1,(A1)+
	ADDQ.L	#1,D3
	BRA.S	.1

.5
.7	MOVE.B	#$0,(A1)+
	MOVEQ.L	#0,D0
	RTS

.3	MOVE.B	#$0,(A1)+
	MOVEQ.L	#-1,D0
	RTS

*******************************************************************************
;A0: ORGPRG		;ORIGINAL PROGRAM
;A1: MODPRG		;MODIFIED PROGRAM

;THE PROGRAM GIVES BACK THE LENGTH OF THE COMPARATION TABLE IN D0
;IF THE TABLE DEFINED IS NOT BIG ENOUGH, #$FFFFFFFF IS IN D0
;THE PROGRAM USES THE REGISTERS D0,D1 AND A0,A1,A2,A3


COMP	CLR.L	NUMBER
	LEA.L	COMPTAB,A2
	MOVE.W	#SIZETABLE+$40-1,D0
.7	CLR.L	(A2)+
	DBF	D0,.7

	LEA.L	COMPTAB,A2
	CLR.B	CMPCOUNT
	MOVEQ.L	#0,D0
.2	CMPM.B	(A0)+,(A1)+
	BEQ.S	.1
	ADD.L	#1,NUMBER
	ADD.B	#1,CMPCOUNT
	CMP.B	#1,CMPCOUNT
	BNE.S	.4
	OR.L	D0,(A2)+
	MOVE.L	A2,A3		;A3 POINTS AT THE LOCATION WHERE LATER THE
				;LENGTH OF THE ACTUAL STRING IS
.4	CMP.B	#2,CMPCOUNT
	BNE.S	.6
	OR.B	#$80,-3(A3)
	MOVE.B	-1(A2),(A2)+
.6	MOVE.B	-1(A1),(A2)+	;WITH FILES, GET THE BYTE FROM THE MODIFIED ONE

	CMP.B	#$FF,CMPCOUNT	;ONLY 1 BYTE RESERVED FOR COUNTER
	BNE.S	.3
	MOVE.B	CMPCOUNT(PC),(A3)	;LENGTH OF STRING
	CLR.B	CMPCOUNT	;CLEAR COUNTER
	MOVE.L	A2,D1		;LET A2 UNCHANGED ON EVEN VALUE
	AND.L	#$FFFFFFFE,D1	;SUBTRACT ONE IF A2 IS ODD
	MOVE.L	D1,A2
	BRA.S	.3

.1	TST.B	CMPCOUNT
	BEQ.S	.3
	CMP.B	#1,CMPCOUNT
	BEQ.S	.5
	MOVE.B	CMPCOUNT(PC),(A3)	;LENGTH OF STRING IF STRING IS NEED
.5	MOVE.L	A2,D1		;LET A2 UNCHANGED ON EVEN VALUE
	AND.L	#$FFFFFFFE,D1	;SUBTRACT ONE IF A2 IS ODD
	MOVE.L	D1,A2
	CLR.B	CMPCOUNT	;CLEAR COUNTER
.3	CMP.L	#COMPTABEND-8,A2
	BHI	ERRCOMP
	ADDQ.L	#1,D0
	CMP.L	LENGTH(PC),D0
	BNE.W	.2
	TST.B	CMPCOUNT
	BEQ.S	.8
	CMP.B	#1,CMPCOUNT
	BEQ.S	.9
	MOVE.B	CMPCOUNT(PC),(A3)	;LENGTH OF STRING IF STRING IS NEED
.9	MOVE.L	A2,D1		;LET A2 UNCHANGED ON EVEN VALUE
	AND.L	#$FFFFFFFE,D1	;SUBTRACT ONE IF A2 IS ODD
	MOVE.L	D1,A2
	CLR.B	CMPCOUNT	;CLEAR COUNTER
.8	OR.L	#$400000,(A2)+
	MOVE.L	A2,D0
	SUB.L	#COMPTAB,D0
	RTS

ERRCOMP	MOVE.L	#-$1,D0
	RTS

CMPCOUNT	DC.B	0
	EVEN
;LENGTH	DC.L	$15C04		;LENGTH OF FILE TO COMPARE
; DATAFORMAT OF COMPTAB
; FIRST ENTRY: $00 (UNUSED)
; NEXT: 3 BYTES ADDRESSOFFSET
; THIS HAS THE REASON, THAT A LONGWORD MUST BE AT AN EVEN MEMORYADDRESS
; ADDRESSOFFSET OF BYTE(S) TO BE CHANGED, IF BIT $17 IS CLEAR -> ONLY THE 
						;FOLLOWING BYTE IS TO MODIFY
						;AT THIS OFFSET
;				OTHERWISE THE LENGTH OF A STRING FOLLOWS,
						;THEN THE STRING ITSELF
;					  IF BIT $16 IS SET -> END OF MODIFYING
						;MEANS A VALUE OF $XX400000
;				  COMBINATION OF BITS $16 AND $17 IS UNUSED
;					  BIT $15 IS RESERVED FOR FUTURE
; AT THE ADRESSOFFSET YOU MUST MASK OUT THE BITS $15-$1F (AND.L #$1FFFFF)
; THE NEXT BYTE IS THE BYTE TO BE MODIFIED 
; OR THE NEXT BYTES ARE THE LENGTH OF A STRING + THE STRING ITSELF 
; + $00 IF THE STRING HAS AN ODD LENGTH
; THE MAXIMUM LENGTH OF A FILE IS SO $1FFFFF, I THINK THIS SHOULD BE ENOUGH


;EXAMPLE

;COMPTAB
;	DC.B   $00,$00,$10,$00 ;MEANS OFFSET $1000 TO FILEBEGIN, 1 BYTE FOLLOWS
;	DC.B   $FC,$80,$FD,$32 ;THE BYTE TO CHANGE AT THE OFFSET $1000 IS $FC
;			       ;THE NEXT OFFSET IS $FD32, A STRING FOLLOWS
;	DC.B   $05,$31,$32,$33,$34,$35 ;LENGTH OF STRING IS $5
;                              ;THE STRING IS $31,$32,$33,$34,$35
;	DC.B   $00,$01,$12,$34 ;UNUSED BYTE DUE TO ODD STRINGLENGTH
;			       ;THE NEXT OFFSET IS $11234
;	DC.B   $45,$40,$00,$00 ;THE BYTE TO CHANGE AT THE OFFSET $11234 IS $45
;			       ;ONLY BIT $16 IS SET -> COMPARE ENDS

************************************************************************

WRITTEN	DC.B	'Compares files and makes a table of differences.',$A
	DC.B	'Written by Egon.',$A,$A
WRITTENEND	DC.B	0
	EVEN

HELPSYNTAX	
	DC.B	'Syntax: MAKECOMPTAB Originalfile Patchedfile {Tablefile}',$A
	DC.B	'If Tablefile is not specified, the comparationtable gained will',$A
	DC.B	'not be saved. You may set the parameters in double quotation marks.',$A
	DC.B	'MAKECOMPTAB belongs to THE PATCHER by Egon.',$A,0
	EVEN

LOCK1NAM	DS.B	$200
	EVEN

LOCK2NAM	DS.B	$200
	EVEN

LOCK3NAM	DS.B	$200
	EVEN

OKDISP	DC.B	'Everything went ok. There were found $'
NROK	DC.B	'0000 differences.',$A,0
	EVEN

NOTSAVEDISP	DC.B	'There were too many differences ($'
NRBIG	DC.B	'00000000) between the files.',$A
	DC.B	'Comparationtable not saved.',$A,0
	EVEN

NODIFFDISP	DC.B	'No differences detected.',$A,0
	EVEN

ERRSAVEDISP	DC.B	'Error while saving comparationtable.',$A,0
	EVEN

NOTEXISTDISP	DC.B	'Error - file does not exist.',$A,0
	EVEN

NOFILEDISP	DC.B	'Error - parameter is not a file.',$A,0
	EVEN

OTHERLENDISP	DC.B	'Error - the files to compare must have the same'
	DC.B	' length.',$A,0
	EVEN

NOTENMEMDISP	DC.B	'Error - Out of memory.',$A,0
	EVEN

ERROPENDISP	DC.B	'Error while opening file.',$A,0
	EVEN

ERRLOADDISP	DC.B	'Error while loading.',$A,0
	EVEN

DOSBAS	DC.L	0
OUTPUTBAS	DC.L	0

FILHANDLE	DC.L	0
OSSTACK		DC.L	0
INTUINAME	DC.B	"intuition.library",0
	EVEN
GRANAME	DC.B	"graphics.library",0
	EVEN
DOSNAM	DC.B	'dos.library',0
	EVEN
DATABASE	DC.L	0
DATALENGTH	DC.L	0
PARAM1LOCK	DC.L	0
PARAM2LOCK	DC.L	0
MEM1BASE	DC.L	0
MEM2BASE	DC.L	0
LENGTH	DC.L	0
NUMBER	DC.L	0
NOTSAVE	DC.B	0
	EVEN

;--------------------------------------------------------------------------

	SECTION	PRG2,BSS
PARAM1INFO	DS.B	$104
PARAM2INFO	DS.B	$104
COMPTAB	DS.L	SIZETABLE
COMPTABEND
	DS.L	$40		;IMPORTANT SPACE

