	.TITLE	STRAP
	.IDENT	/DASFLEX/
	.ENABLE	LC
	.NLIST	BEX
;******************************************************************************
;
;	PROGRAMMA STRAP
;	===============
;
;	DIT PROGRAMMA ONTDOET PROGRAMMA'S VAN COMMENTAAR, ZODAT ER WAT
;	MINDER GE..... IN HET DESBETREFFENDE PROGRAMMA VOORKOMT.
;
;	DE NAAM VAN HET TE "STRAPPEN" PROGRAMMA WORDT GEHAALD UIT DE
;	AAN DIT PROGRAMMA AANGEBODEN COMMAND LINE.
;
;	HET RESULTAAT VAN DE BEWERKING IS DAT DE OUDE INPUT FILE NOG
;	NORMAAL BESTAAT. ER IS ECHTER EEN "GESTRAPTE" VERSIE VAN DE
;	DE INPUT FILE ALS OUTPUT FILE GECREEERD.
;
;	DE PROGRAMMA'S WORDEN OP DE VOLGENDE MANIER "GESTRAPPED":
;
;	- ALLE REGELS DIE MET ; BEGINNEN WORDEN NIET NAAR DE 
;         OUTPUT FILE GECOPIEERD
;	- ALLE REGELS WORDEN VANAF ACHTER DOORLOPEN. ALS ER EEN ; WORDT
;	  GEVONDEN EN HET TEKEN DAARVOOR IS EEN <TAB>, WORDT VANAF DIT
;	  PUNT TOT AAN HET EIND VAN DE REGEL ALLES ALS COMMENTAAR BESCHOUWD
;	  EN NIET GECOPIEERD NAAR DE OUTPUT FILE.
;	  ALS VOOR VOORNOEMDE <TAB> ALLEEN MAAR <TAB> EN BLANKS VOORKOMEN,
;	  WORDT DE REGEL IN Z'N GEHEEL NIET GECOPIEERD.
;
;	VOOR DE OPBOUW VAN DE COMMAND LINE WORDT VERWEZEN NAAR HET LABEL
;	"HELP".
;
;******************************************************************************
;
;	ONTWORPEN EN GEPROGRAMMEERD DOOR:
;
;	P. VERGEER + F. LANGEZAAL
;
;	DATUM: 17 MAART 1983
;
;******************************************************************************
;
;	WIJZIGINGEN + DATUM:
;
;******************************************************************************
	.MCALL	GCMLB$,GCMLD$,GCML$,CSI$,CSI$1,CSI$2,EXIT$S,QIOW$S
	.MCALL	FDBDF$,FDAT$A,FDRC$A,FDOP$A,FSRSZ$,OPEN$R,FINIT$
	.MCALL	OPEN$W,CLOSE$,GET$,PUT$,DELET$
	.PAGE
	.SBTTL	PROGRAMMA MACRO'S
;******************************************************************************
;
;	PROGRAMMA MACRO'S
;
;******************************************************************************
	.MACRO	PRINT	X,Y
	MOV	'X,PRADR			;ADRES.
	MOV	'Y,PRBYT			;BYTECOUNT.
;
	CALL	WRITE				;DISPLAY BERICHT.
	.ENDM	PRINT
;
WRITE:
	TST	PRBYT				;TEST OF BYTECOUNT AANWEZIG.
	BEQ	WRIRET				;BRANCH ALS NIET.
;
	QIOW$S	#IO.WVB,#5,#1,,,,<PRADR,PRBYT>
WRIRET:
	RETURN
;
PRADR:	.WORD	.-.				;ADRES.
PRBYT:	.WORD	.-.				;BYTECOUNT.
	.PAGE
	.SBTTL	COMMAND LINE PROCESSING GEDEELTE
;******************************************************************************
;
;	COMMAND LINE PROCESSING GEDEELTE
;
;******************************************************************************
;
;	DEFINIEER GCML OFFSETS
;
;******************************************************************************
	GCMLD$
;******************************************************************************
;
;	FCS DEFINITIES
;
;******************************************************************************
	FSRSZ$	3
FDBIN:	FDBDF$
	FDAT$A	R.VAR,FD.CR
	FDRC$A	,INLEES,132.
	FDOP$A	2,DDPIN,,,FA.ENB!FA.DLK
FDBOUT:	FDBDF$
	FDAT$A	R.VAR,FD.CR
	FDRC$A	,INLEES
	FDOP$A	3,DDPOUT,,,FA.ENB!FA.DLK
;
INLEES:	.BLKB	132.				;RECORD INLEESGEBIED
DDPIN:	.BLKW	6				;DATASET-DESCRIPTOR INFO INPUT FILE
DDPOUT:	.BLKW	6				;DATASET-DESCRIPTOR INFO OUTPUT FILE.
WILCAR:	.WORD	.-.
EERST:	.WORD	.-.
UNIT:	.ASCII	/ :/
UIC:	.BLKB	9.
	.EVEN
	.PAGE
;******************************************************************************
;
;	GCML CONTROL BLOCK DEFEFINITIES
;
;******************************************************************************
GCML:
	GCMLB$	1,STR,,1
;******************************************************************************
;
;	CSI CONTROL BLOCK DEFINITIES
;
;******************************************************************************
	CSI$
CSIBLK:
	.BLKB	C.SIZE
	.EVEN
	.PAGE
	.SBTTL	DISPLAY TEKSTEN
;******************************************************************************
;
;	DISPLAY TEKSTEN.
;
;******************************************************************************
HELTEK:	.ASCII	/HELP/
HELTEC	=	.-HELTEK
;
HELP:
 .ASCII	<12><12><12><12><15>
 .ASCII	%          The STR command  creates a "strapped" output file, which  is%<12><15>
 .ASCII	%          a copy of the specified input file. All comments are removed%<12><15>
 .ASCII	%          in the output file.%<12><15><12><15>
 .ASCII	%          The general formats of the STR command are:%<12><15><12><15>
 .ASCII	%          [dev][uic][outfile]=[dev][uic]infile%<12><15>
 .ASCII	%          @indirect%<12><15><12><15>
 .ASCII	%          The parameters that STR allows are:%<12><15><12><15>
 .ASCII	%          outfile - if filename.typ are null, input%<12><15>
 .ASCII	%                    parameters are preserved.%<12><15>
 .ASCII	%                    Wildcards (*) are not allowed.%<12><15>
 .ASCII	%                    Filename.typ must be null when wildcards%<12><15>
 .ASCII	%                    (*) on infile%<12><15><12><15>
 .ASCII	%          infile  - filename.typ must be specified.%<12><15>
 .ASCII	%                    Wildcards (*) are only allowed for filename.%<12><15><12><15><12><15>
HELPCN	=	.-HELP
;
LFCR:	.ASCII	<12><15>
STR:	.ASCII	<12><15>
	.ASCII	%STR -- %
STRC	=	.-STR
;******************************************************************************
;
;	FOUTEN VAN GET COMMAND LINE.
;
;******************************************************************************
STRCOM:	.ASCII	<12><15>
	.ASCII	%STR -- Get Command Line - %
STRCOC	=	.-STRCOM
;
GEIOR:	.ASCII	%I/O Error%<12><12><15>
GEIORC	=	.-GEIOR
;
GEOPR:	.ASCII	%Failed to Open @ File%<12><12><15>
GEOPRC	=	.-GEOPR
;
GEBIF:	.ASCII	%Syntax Error%<12><12><15>
GEBIFC	=	.-GEBIF
;
GEMDE:	.ASCII	%Nesting-level Exceeded%<12><12><15>
GEMDEC	=	.-GEMDE
;
GERBG:	.ASCII	%Input Buffer too Small%<12><12><15>
GERBGC	=	.-GERBG
;
UNKNO:	.ASCII	%Undefined Error%<12><12><15>
UNKNOC	=	.-UNKNO
;******************************************************************************
;
;	COMMAND SYNTAX ERROR
;
;******************************************************************************
SYNCOM:	.ASCII	<12><15>
	.ASCII	%STR -- Command Syntax Error%<12><12><15>
SYNCOC	=	.-SYNCOM
;******************************************************************************
;
;	ERRORS FROM PARSE
;
;******************************************************************************
PARSE:	.ASCII	<12><15>
	.ASCII	%STR -- Error from Parse - %
PARSEC	=	.-PARSE
;
WILDIR:	.ASCII	%Wildcards (*) on Input UIC%<12><12><15>
WILDC	=	.-WILDIR
;
MOREI:	.ASCII	%Too Ambiguous on Input File%<12><15>
MOREIC	=	.-MOREI
;
NOIN:	.ASCII	%No Input File Specified%<12><15>
NOINC	=	.-NOIN
;
WILDO:	.ASCII	%Wildcards (*) on Output File%<12><12><15>
WILDOC	=	.-WILDO
;
MOREO:	.ASCII	%Too Ambiguous on Output File%<12><15>
MOREOC	=	.-MOREO
;
AMB:	.ASCII	%Too Ambiguous on Output File. Wildcards on Input File%<12><15>
AMBC	=	.-AMB
	.PAGE
;******************************************************************************
;
;	FOUTEN TIJDENS DISK I/O
;
;******************************************************************************
INOPE:	.ASCII	<12><15>
	.ASCII	%STR -- Failed to Open Input File - %
INOPEC	=	.-INOPE
;
NOFIL:	.ASCII	<12><15>
	.ASCII	%STR -- No such File(s)%<12><15>
NOFILC	=	.-NOFIL
;
OUTOP:	.ASCII	<12><15>
	.ASCII	%STR -- Failed to Open Output File - %
OUTOPC	=	.-OUTOP
;
ERRCO:	.ASCII	%Error code -%
ERRVUL:	.ASCII	/../<12><15>
ERRCOC	=	.-ERRCO
;
IN:	.ASCII	<12><15>
	.ASCII	%STR -- I/O-Error on Input File - %
INC	=	.-IN
;
OUT:	.ASCII	<12><15>
	.ASCII	%STR -- I/O-Error on Output File - %
OUTC	=	.-OUT
	.EVEN
	.PAGE
	.SBTTL	ROUTINE	COMMAN
;******************************************************************************
;
;	ROUTINE	COMMAN
;
;	DEZE ROUTINE ONTRAFELT DE COMMAND LINE EN CONTROLEERT OP EVENTUEEL
;	INGETYPTE FOUTEN.
;
;	INDIEN ALLES GOED -> EEN GE-OPENDE INPUT EN OUTPUT FILE
;
;******************************************************************************
COMMAN:
	MOV	R0,-(SP)			;SAVE REGISTERS
	MOV	R1,-(SP)
	MOV	R2,-(SP)
	MOV	R3,-(SP)
	MOV	R4,-(SP)
	MOV	R5,-(SP)
;
	FINIT$
COMOPN:	
	GCML$	#GCML				;LEES COMMAND LINE IN.
	BCC	COM1				;BRANCH ALS GELUKT.
;
	CMPB	GCML+G.ERR,#GE.EOF		;TEST OP END-OF-FILE.
	BNE	COM0				;BRANCH ALS GEEN END-OF-FILE.
	BR	COMUIT
COMEXT:
	BITB	GCML+F.RCTL,#FD.TTY		;TEST OF AANGEROEPEN DOOR @FILE
	BEQ	COMOPN				;BRANCH ALS JA.
COMUIT:
	EXIT$S					;EINDE VAN HET PROGRAMMA.
	.PAGE
;******************************************************************************
;
;	ONDERZOEK FOUTSOORT
;
;******************************************************************************
COM0:
	PRINT	#STR,#STRC			;DISPLAY: STR -- 
	PRINT	GCML+G.CMLD+2,GCML+G.CMLD+0	;DISPLAY INGETYPTE REGEL.
;
	PRINT	#STRCOM,#STRCOC			;DISPLAY: Get Command Line -
;
	CMPB	GCML+G.ERR,#GE.IOR		;TEST OP I/O-ERROR
	BNE	COM01				;BRANCH ALS NIET.
;
	PRINT	#GEIOR,#GEIORC			;DISPLAY: I/O Error
	BR	COMEXT
COM01:
	CMPB	GCML+G.ERR,#GE.OPR		;TEST OF FILE GE-OPEND KON WORDEN.
	BNE	COM02				;BRANCH ALS NIET.
;
	PRINT	#GEOPR,#GEOPRC			;DISPLAY: Failed to Open @ File
	BR	COMEXT
COM02:
	CMPB	GCML+G.ERR,#GE.BIF		;TEST OP SYNTAX ERROR.
	BNE	COM03				;BRANCH ALS NIET.
;
	PRINT	#GEBIF,#GEBIFC			;DISPLAY: Syntax Error
	BR	COMEXT
COM03:
	CMPB	GCML+G.ERR,#GE.MDE		;TEST OP NESTING DIEPTE.
	BNE	COM04				;BRANCH ALS NIET.
;
	PRINT	#GEMDE,#GEMDEC			;DISPLAY: Nesting-level exceeded
	BR	COMEXT
COM04:
	CMPB	GCML+G.ERR,#GE.RBG		;TEST OP INPUTBUFFER TE KLEIN.
	BNE	COM05				;BRANCH ALS NIET.
;
	PRINT	#GERBG,#GERBG			;DISPLAY: Input Buffer too Small
	BR	COMEXT
COM05:
	PRINT	#UNKNO,#UNKNOC			;DISPLAY: Undefined Error
	BR	COMEXT
	.PAGE
;******************************************************************************
;
;	GA TESTEN OF ER "HELP" IS INGEVULD.
;
;******************************************************************************
COM1:
	MOV	GCML+G.CMLD+2,CSIBLK+C.CMLD+2	;ADRES VAN INGETYPTE STRING.
	MOV	GCML+G.CMLD+0,CSIBLK+C.CMLD+0	;BYTECOUNT ERVAN.
	BNE	COM10				;BRANCH ALS INGEVULD.
	JMP	COMOPN				;BEGIN OPNIEUW.
COM10:
	CMP	CSIBLK+C.CMLD,#4		;TEST OF ER "HELP" IS INGETYPT
	BNE	COM110				;BRANCH ALS NIET.
;
	MOV	CSIBLK+C.CMLD+2,R4		;ADRES WAAR TEKST STAAT.
	MOV	#HELTEK,R3			;TEKST "HELP"
	MOV	#HELTEC,R5			;BYTECOUNT.
COM100:
	CMPB	(R4)+,(R3)+			;VERGELIJK TEKSTEN.
	BNE	COM110				;BRANCH ALS GEEN "HELP"
	SOB	R5,COM100			;GA VERDER.
;
	PRINT	#HELP,#HELPCN			;GEEF VERKLARENDE TEKST.
	JMP	COMOPN				;OPNIEUW.
COM110:
	CSI$1	#CSIBLK				;TEST OP SYNTAX ERRORS.
	BCC	COM12				;BRANCH ALS GEEN FOUTEN.
COM11:
	PRINT	#SYNCOM,#SYNCOC			;DISPLAY: Command Syntax Error
	JMP	COMEXT
COM12:
	BITB	CSIBLK+C.STAT,#CS.EQU		;TEST OP = AANWEZIG IN STRING.
	BEQ	COM11				;BRANCH ALS NIET AANWEZIG.
	.PAGE
;******************************************************************************
;
;	CONTROLEER INPUT SPECIFICATIE
;
;******************************************************************************
COM2:
	CLR	WILCAR				;INITIALISEER.
;
	CSI$2	#CSIBLK,INPUT			;COMMAND SEMANTIC PARSER VOOR
	BCC	COM21				;INPUT FILE. BRANCH ALS GELUKT.
COM20:
	PRINT	#STR,#STRC			;DISPLAY: STR --
	PRINT	GCML+G.CMLD+2,GCML+G.CMLD	;DISPLAY INGETYPTE REGEL.
	PRINT	#PARSE,#PARSEC-3		;DISPLAY: Error from Parse
	PRINT	#LFCR,#2			;NIEUWE REGEL.
	PRINT	#LFCR,#2			;NIEUWE REGEL.
	JMP	COMEXT
COM21:
	BITB	CSIBLK+C.STAT,#CS.MOR		;TEST OF MEERDERE FILES ,
	BEQ	COM3				;BRANCH ALS NIET.
;
	PRINT	#PARSE,#PARSEC			;DISPLAY: Error from Parse
	PRINT	#MOREI,#MOREIC			;DISPLAY: Too Ambiguous on Input File
	JMP	COMEXT
COM3:
	MOV	#12.,R5				;SAVE ADRESSEN VAN DATASET-
	MOV	#CSIBLK+C.DSDS,R4		;DESCRIPTOR BLOCK UIT
	MOV	#DDPIN,R3			;CSI CONTROL BLOCK.
COM4:
	MOVB	(R4)+,(R3)+			;MOVE DE ADRESSEN.
	SOB	R5,COM4
;
	BITB	CSIBLK+C.STAT,#CS.NMF		;TEST OF INPUT FILE INGEVULD.
	BNE	COM40				;BRANCH ALS INGEVULD.
;
	PRINT	#PARSE,#PARSEC			;DISPLAY: Error from Parse
	PRINT	#NOIN,#NOINC			;DISPLAY: No Input file specified
	JMP	COMEXT
COM40:
	BITB	CSIBLK+C.STAT,#CS.WLD		;TEST OP WILDCARDS * IN STRING.
	BEQ	COM5				;BRANCH ALS NIET AANWEZIG.
	.PAGE
;******************************************************************************
;
;	WE GAAN NU EVEN KIJKEN WAAR DE * STAAT
;
;******************************************************************************
	MOV	CSIBLK+C.DIRD,R5		;BYTECOUNT DIRECTORY STRING.
	BEQ	COM43				;BRANCH ALS NIET INGEVULD.
;
	MOV	CSIBLK+C.DIRD+2,R4		;ADRES DIRECTORY STRING.
COM41:
	CMPB	(R4)+,#'*			;TEST OP * IN DIRECTORY STRING.
	BEQ	COM42				;BRANCH ALS * IN STRING.
	SOB	R5,COM41			;ZOEK VERDER.
	BR	COM43				;GEEN * IN DIRECTORY STRING.
COM42:
	PRINT	#PARSE,#PARSEC			;DISPLAY: Error from Parse
	PRINT	#WILDIR,#WILDC			;DISPLAY: Wildcards (*) on Input UIC
	JMP	COMEXT
COM43:
	MOV	CSIBLK+C.FILD,R5		;BYTECOUNT FILE NAAM
	MOV	CSIBLK+C.FILD+2,R4		;ADRES FILE NAAM.
	CLR	R3				;* TELLER.
COM44:
	CMPB	(R4)+,#'*			;ER MAG MAAR EEN * IN VOORKOMEN.
	BNE	COM45				;BRANCH ALS GEEN *.
;
	INC	R3				;* TELLER +1.
COM45:
	SOB	R5,COM44			;ZOEK VERDER.
;
	TST	R3				;TEST OF * IN FILE NAAM.
	BEQ	COM5				;BRANCH ALS NIET.
;
	CMP	R3,#1				;TEST OF EEN *.
	BNE	COM47				;ER ZITTEN ER TEVEEL IN.
;*****************************************************************************
;
;	ER ZIT MAAR EEN * IN DE FILE NAAM. WE MOETEN NU EVEN NAGAAN WAAR DIE
;	* ZICH BEVINDT. ALLEEN "*.TYP" IS TOEGESTAAN.
;
;******************************************************************************
COM46:
	MOV	CSIBLK+C.FILD,R5		;BYTECOUNT FILE NAAM
	MOV	CSIBLK+C.FILD+2,R4		;ADRES FILE NAAM.
;
	CMPB	(R4),#'*			;TEST OF 1STE TEKEN * IS.
	BEQ	COM48				;BRANCH ALS JA.
COM47:
	PRINT	#PARSE,#PARSEC			;DISPLAY: Error from Parse
	PRINT	#MOREI,#MOREIC			;DISPLAY: Too Ambiguous on Input File
	JMP	COMEXT
	.PAGE
;******************************************************************************
;
;	WE GAAN NU EVEN KIJKEN OF HET VERSIENUMMER IS INGEVULD.
;	ALS ER EEN EXPLICIET VERSIENUMMER IS INGEVULD, MOGEN WE ALLEEN
;	FILE MET DIT SPECIFIEKE VERSIENUMMER COPIEREN.
;	ANDERS NEMEN WE ALLE FILES VAN HET SPECIFIEKE TYPE OVER.
;
;******************************************************************************
COM48:
	MOV	CSIBLK+C.FILD,R5		;BYTECOUNT FILE NAAM
	MOV	CSIBLK+C.FILD+2,R4		;ADRES FILE NAAM.
COM49:
	CMPB	(R4)+,#';			;TEST OP SCHEIDINGSTEKEN.
	BEQ	COM4B				;BRANCH ALS GEVONDEN.
	SOB	R5,COM49			;ZOEK EN GIJ ZULT VINDEN.
COM4A:
	MOV	CSIBLK+C.FILD,R5		;BYTECOUNT FILE NAAM
	MOV	CSIBLK+C.FILD+2,R4		;ADRES FILE NAAM.
;
	MOV	R4,R3				;GA ER ;* ACHTER ZETTEN.
	ADD	R5,R3				;IN R3 ADRES WAAR ;* MOET KOMEN.
;
	MOVB	#';,(R3)+
	MOVB	#'*,(R3)
						;VERHOOG BYTECOUNT IN
	ADD	#2,DDPIN+8.			;DATA-SET DESCRIPTOR BLOCK.
COM4B:	
	MOV	#1,WILCAR			;WILDCARDS AANWEZIG IN FILE NAAM.
	
	.PAGE
;******************************************************************************
;
;	CONTROLEER OUTPUT SPECIFICATIE
;
;******************************************************************************
COM5:
	CSI$2	#CSIBLK,OUTPUT			;COMMAND SEMANTIC PARSER VOOR
	BCC	COM51				;OUTPUT FILE. BRANCH ALS GELUKT.
	JMP	COM20
COM51:
	BITB	CSIBLK+C.STAT,#CS.WLD		;TEST OP WILDCARDS * IN STRING.
	BEQ	COM52				;BRANCH ALS NIET AANWEZIG.
;
	PRINT	#PARSE,#PARSEC			;DISPLAY: Error from Parse
	PRINT	#WILDO,#WILDOC			;DISPLAY: Wildcards (*) on Output File
	JMP	COMEXT
COM52:
	BITB	CSIBLK+C.STAT,#CS.MOR		;TEST OF MEERDERE FILES ,
	BEQ	COM6				;BRANCH ALS NIET.
;
	PRINT	#PARSE,#PARSEC			;DISPLAY: Error from Parse
	PRINT	#MOREO,#MOREOC			;DISPLAY: Too Ambiguous on Output File
	JMP	COMEXT
COM6:
	MOV	#12.,R5				;SAVE ADRESSEN VAN DATASET-
	MOV	#CSIBLK+C.DSDS,R4		;DESCRIPTOR BLOCK VAN OUTPUT
	MOV	#DDPOUT,R3			;FILE UIT CSI CONTROL BLOCK.
COM7:
	MOVB	(R4)+,(R3)+			;MOVE DE ADRESSEN.
	SOB	R5,COM7
;
	BITB	CSIBLK+C.STAT,#CS.NMF		;TEST OF OUTPUT FILE NAAM INGEVULD.
	BEQ	COM70				;BRANCH ALS NIET INGEVULD.
;
	TST	WILCAR				;TEST OF WILDCARDS IN INPUT STRING.
	BEQ	COM8				;BRANCH ALS NIET.
;
	PRINT	#PARSE,#PARSEC			;DISPLAY: Error from Parse
	PRINT	#MOREO,#MOREOC			;DISPLAY: Too Ambiguous on Output File
	JMP	COMEXT
COM70:
	MOV	DDPIN+8.,DDPOUT+8.		;NEEM NAAM VAN INPUT FILE OVER.
	MOV	DDPIN+10.,DDPOUT+10.
	.PAGE
;******************************************************************************
;
;	ALLES IS GELUKT.
;	OPEN DE INPUT FILE VOOR ALLEEN READ.
;
;******************************************************************************
COM8:
	TST	WILCAR				;TEST OF WILDCARDS AANWEZIG.
	BNE	COMWIL				;BRANCH ALS JA.
;
	OPEN$R	#FDBIN				;OPEN INPUT FILE VOOR READ.
	BCC	COM9				;BRANCH ALS GELUKT.
;
	CMPB	FDBIN+F.ERR,#IE.NSF		;TEST OP NO SUCH FILE(S)
	BNE	COM81				;BRANCH ALS IETS ANDERS.
;
	PRINT	#NOFIL,#NOFILC			;DISPLAY: No such File(s)
COM80:
	CALL	INERR				;DISPLAY FILE NAAM INPUT FILE
	JMP	COMEXT
COM81:
	PRINT	#INOPE,#INOPEC			;DISPLAY: Failed to Open Input File
	CALL	ERRCOD				;VUL ERRORCODE IN.
	PRINT	#ERRCO,#ERRCOC			;DISPLAY FOUTCODE
	BR	COM80
;******************************************************************************
;
;	CREEER DE OUTPUT FILE
;
;******************************************************************************
COM9:
	OPEN$W	#FDBOUT				;CREEER DE OUTPUT FILE.
	BCC	COMRET				;BRANCH ALS GELUKT.
;
	PRINT	#OUTOP,#OUTOPC			;DISPLAY: Failed to Open Output File
	CALL	ERRCOD				;VUL ERRORCODE IN.
	PRINT	#ERRCO,#ERRCOC			;DISPLAY FOUTCODE
;
	CALL	OUTERR				;DISPLAY OUTPUT FILE NAAM.
;
	CLOSE$	#FDBIN				;CLOSE EERST DE INPUT FILE.
	JMP	COMEXT
COMRET:
	MOV	(SP)+,R5			;RESTORE REGISTERS
	MOV	(SP)+,R4
	MOV	(SP)+,R3
	MOV	(SP)+,R2
	MOV	(SP)+,R1
	MOV	(SP)+,R0
	RETURN
	.PAGE
;******************************************************************************
;
;	ER ZIJN WILDCARDS GESPECIFICEERD.
;
;******************************************************************************
COMWIL:
	CALL	WILD				;BEHANDEL WILDCARDS.
	BR	COMRET
	.PAGE
	.SBTTL	ROUTINE ERRCOD
;******************************************************************************
;
;	DEZE ROUTINE KONVERTEERT DE FCS ERRRORCODE NAAR ASCII.
;
;******************************************************************************
ERRCOD:
	MOV	R4,-(SP)			;SAVE R4 EN R5
	MOV	R5,-(SP)
;
	MOVB	F.ERR(R0),R5			;FOUTCODE.
	NEG	R5				;MAAK POSITEF.
;
	CLR	R4
	DIV	#10.,R4				;BEPAAL 10-TAL + REST.
	BISB	#60,R4				;MAAK ASCII VAN 10-TAL.
	MOVB	R4,ERRVUL			;VUL IN.
;
	BISB	#60,R5				;MAAK ASCII REST.
	MOVB	R5,ERRVUL+1			;VUL IN.
;
	MOV	(SP)+,R5			;RESTORE R4 EN R5.
	MOV	(SP)+,R4
	RETURN
	.PAGE
	.SBTTL	ROUTINE INERR
;*****************************************************************************
;
;	DEZE ROUTINE DISPLAYED DE NAAM VAN DE INPUT FILE
;
;*****************************************************************************
INERR:
	PRINT	#FDBIN+F.FNB+N.DVNM,#2		;DEVICE NAAM.
	MOVB	FDBIN+F.FNB+N.UNIT,UNIT		;UNIT NUMMER.
	BISB	#60,UNIT			;MAAK ER ASCII VAN.
	PRINT	#UNIT,#2			;DISPLAY HET.
;
	TST	DDPIN+4				;TEST OF UIC BEKEND IS.
	BNE	IN1				;BRANCH ALS BEKEND.
;
	CALL	.RDFUI				;LEES DEFAULT UIC
	MOV	R1,R3				;IN R3 BINAIRE UIC.
	CLR	R4
	MOV	#UIC,R2				;ADRES WAAR STRING KOMT.
	MOV	R2,R5				;OM BYTECOUNT TE BEPALEN.
	CALL	.PPASC				;KONVERTEER.
	SUB	R5,R2				;BEPAAL BYTECOUNT.
	PRINT	#UIC,R2
	BR	IN2
IN1:
	PRINT	DDPIN+6,DDPIN+4			;UIC
IN2:
	CALL	CONVER				;KONVERTEER NAAM.
	PRINT	#FILSP,R5			;DISPLAY NAAM
;
	PRINT	#LFCR,#2			;EEN PAAR REGELS OVERSLAAN.
	PRINT	#LFCR,#2			;EEN PAAR REGELS OVERSLAAN.
	RETURN
	.PAGE
	.SBTTL	ROUTINE OUTERR
;*****************************************************************************
;
;	DEZE ROUTINE DISPLAYED DE NAAM VAN DE OUTPUT FILE
;
;*****************************************************************************
OUTERR:
	PRINT	#FDBOUT+F.FNB+N.DVNM,#2		;DEVICE NAAM.
	MOVB	FDBOUT+F.FNB+N.UNIT,UNIT	;UNIT NUMMER.
	BISB	#60,UNIT			;MAAK ER ASCII VAN.
	PRINT	#UNIT,#2			;DISPLAY HET.
;
	TST	DDPOUT+4			;TEST OF UIC BEKEND IS.
	BNE	OUT1				;BRANCH ALS BEKEND.
;
	CALL	.RDFUI				;LEES DEFAULT UIC
	MOV	R1,R3				;IN R3 BINAIRE UIC.
	CLR	R4
	MOV	#UIC,R2				;ADRES WAAR STRING KOMT.
	MOV	R2,R5				;OM BYTECOUNT TE BEPALEN.
	CALL	.PPASC				;KONVERTEER.
	SUB	R5,R2				;BEPAAL BYTECOUNT.
	PRINT	#UIC,R2
	BR	OUT2
OUT1:
	PRINT	DDPOUT+6,DDPOUT+4		;UIC
OUT2:
	PRINT	DDPOUT+10.,DDPOUT+8.		;NAAM
;
	PRINT	#LFCR,#2			;EEN PAAR REGELS OVERSLAAN.
	PRINT	#LFCR,#2			;EEN PAAR REGELS OVERSLAAN.
	RETURN
	.PAGE
	.SBTTL	ROUTINE CONVER
;******************************************************************************
;
;	DEZE ROUTINE CONVERTEERT DE NAAM WELKE IN RAD50 IN DE FDB
;	GENOEMD IN R0 STAAT,NAAR ASCII IN HET GEBIED FILSP
;	EN KOMT TERUG MET IN R5 DE BYTECOUNT VAN DE TOTALE FILENAAM.
;
;	EVENTUELE BLANKS, DIE WE VAN FCS TERUG KRIJGEN, WORDEN 
;	NIET IN DE BYTECOUNT OPGENOMEN. TEVENS WORDT DE NAAM
;	ZONDER BLANKS IN FILSP GEZET.
;
;******************************************************************************
CONVER:
	MOV	R0,-(SP)
	MOV	R1,-(SP)
	MOV	R2,-(SP)
	MOV	R3,-(SP)
	MOV	R4,-(SP)
;
	MOV	R0,R3				;VAN-ADRES
	ADD	#F.FNB+N.FNAM,R3
	MOV	(R3),R1				;TE CONVERTEREN WAARDE
;
	MOV	#FILSP,R0			;NAAR ADRES
	CALL	$C5TA
;
	MOV	#3,R4				;TEST OP BLANKS
	SUB	R4,R0
1$:	CMPB	(R0),#' 			;TEST OF BLANK
	BEQ	10$				;BRANCH ALS BLANK
;
	INC	R0
	SOB	R4,1$				;TEST VOLGEND BYTE
;
	MOV	2(R3),R1			;VOLGENDE RADIX CONVERSIE
	CALL	$C5TA
;
	MOV	#3,R4
	SUB	R4,R0
2$:	CMPB	(R0),#' 			;TEST OF BLANK
	BEQ	10$				;BRANCH ALS BLANK
;
	INC	R0
	SOB	R4,2$				;TEST VOLGEND BYTE
;
	MOV	4(R3),R1			;LAATSTE RADIX CONVERSIE NAAM
	CALL	$C5TA
;
	MOV	#3,R4
	SUB	R4,R0				;GA OP 1STE BYTE STAAN
3$:
	CMPB	(R0),#' 			;TEST OP BLANK
	BEQ	10$				;BRANCH ALS BLANK
;
	INC	R0
	SOB	R4,3$				;TEST VOLGEND BYTE
	.PAGE
10$:
	MOVB	#'.,(R0)+			;ZET ER EEN PUNT ACHTER
;
	MOV	6(R3),R1			;CONVERTEER FILE TYPE
	CALL	$C5TA
;
	MOV	#3,R4				;DOE BLANK TEST
	SUB	R4,R0				;GA OP EERSTE BYTE STAAN
11$:
	CMPB	(R0),#' 			;TEST OP BLANK
	BEQ	12$				;BRANCH ALS KLAAR
;
	INC	R0
	SOB	R4,11$				;TEST OF KLAAR
12$:
	SUB	#FILSP,R0			;BEPAAL BYTECOUNT
	MOV	R0,R5				;EN ZET IN R5.
;
	MOV	(SP)+,R4			;RESTORE REGISTERS
	MOV	(SP)+,R3
	MOV	(SP)+,R2
	MOV	(SP)+,R1
	MOV	(SP)+,R0
	RETURN
FILSP:	.ASCII	/123456789.ABC/			;RUIMTE VOOR SPECIFIEKE NAAM
FILSC	=	.-FILSP
	.EVEN
NEXTFI:	.WORD	.-.				;N.STAT UIT FDB VOOR VOLGENDE
	.WORD	.-.				;.FIND OPERATION EN OOK N.NEXT.
	.PAGE
	.SBTTL	COPIEREN *.TYP FILES
;****************************************************************************
;
;	COPIEREN VAN *.TYP FILES.
;
;****************************************************************************
WILD:
	CLR	EERST
	CLR	R5				;R5 = 0 VOOR AANROEP FLETSR
	MOV	#FDBIN,R0			;FDB ADRES
WILD1:
	CALL	FLETSR				;ZOEK FILES.
	BCC	WILD10				;BRANCH ALS EEN FILE GEVONDEN
;
	CMPB	FDBIN+F.ERR,#IE.NSF		;TEST OP NO SUCH FILES
	BNE	WILD2				;BRANCH ALS WEL FILES.
;
	TST	EERST				;TEST OF 1STE MAAL.
	BEQ	WILD01				;BRANCH ALS JA.
;
	TST	(SP)+				;UPDATE STACK.
	JMP	EXIT1				;EINDE PROGRAMMA.
WILD01:
	PRINT	#NOFIL,#NOFILC			;DISPLAY: No such File(s)
WILD02:
	CALL	INERR				;DISPLAY FILE NAAM INPUT FILE
	JMP	COMUIT				;WE GAAN NIET VERDER.
;******************************************************************************
;
;	WE HEBBEN EEN HARDWARE FOUT ONTDEKT.
;
;******************************************************************************
WILD2:
	PRINT	#INOPE,#INOPEC			;DISPLAY: Failed to Open Input File
	CALL	ERRCOD				;VUL ERRORCODE IN.
	PRINT	#ERRCO,#ERRCOC			;DISPLAY FOUTCODE
	BR	WILD02
	.PAGE
;******************************************************************************
;
;	WE HEBBEN EEN FILE GEVONDEN.
;
;******************************************************************************
WILD10:
	MOV	FDBIN+F.FNB+N.STAT,NEXTFI	;SAVE VOOR VOLGENDE .FIND
	MOV	FDBIN+F.FNB+N.NEXT,NEXTFI+2
;
	OPEN$R	#FDBIN				;OPEN INPUT FILE.
	BCC	WILD11				;BRANCH ALS OK
;
	CMPB	FDBIN+F.ERR,#IE.NSF		;TEST OF FILE NU WEG
	BNE	WILD2
	BR	WILD01
WILD11:
	CALL	CONVER				;KONVERTEER FILENAAM
;
	MOV	R5,DDPOUT+8.			;VUL BYTECOUNT IN
	MOV	#FILSP,DDPOUT+10.
;
	OPEN$W	#FDBOUT				;PROBEER DE FILE TE CREEREN.
	BCC	WILRET				;BRANCH ALS GELUKT.
;
	PRINT	#OUTOP,#OUTOPC			;DISPLAY: Failed to Open Output File
	CALL	ERRCOD				;VUL ERRORCODE IN.
	PRINT	#ERRCO,#ERRCOC			;DISPLAY FOUTCODE
;
	CALL	OUTERR				;DISPLAY OUTPUT FILE NAAM.
;
	CLOSE$	#FDBIN				;CLOSE EERST DE INPUT FILE.
;******************************************************************************
;
;	WE GAAN NU VERDER ZOEKEN.
;
;******************************************************************************
WILD20:
	MOV	NEXTFI,FDBIN+F.FNB+N.STAT	;RESTORE WAARDEN VOOR .FIND
	MOV	NEXTFI+2,FDBIN+F.FNB+N.NEXT
;
	MOV	#1,R5				;R5 OP DOORZOEKEN FLETSR
	MOV	#FDBIN,R0			;FDB ADRES
	JMP	WILD1
;******************************************************************************
;
;	EINDELIJK. WE KUNNEN BEGINNEN MET HET COPIEREN VAN DE FILE
;
;******************************************************************************
WILRET:
	RETURN
	.PAGE
	.SBTTL	ROUTINE COPY
;******************************************************************************
;
;	ROUTINE	COPY
;
;	DEZE ROUTINE CONTROLEERT OP IN HET RECORD VAN DE INPUT FILE DE
;	VOLGENDE STATEMENTS VOORKOMEN:
;
;	.ASCII
;	.ASCIZ
;	.ERROR
;	#'<BLANK>
;	#'<TAB>
;	#';
;	#"
;	=
;
;	TEVENS OM OOK PROBLEMEN BIJ INTELFILES TE VOORKOMEN
;
;	DB
;	DW
;
;	ALS EEN VAN DEZE STATEMENTS VOORKOMT, MOET DE GEHELE REGEL NAAR
;	DE OUTPUT FILE WORDEN GECOPIEERD,DAAR WE BIJ DIT SOORT STATEMENTS
;	NIET EXACT KUNNEN KUNNEN ZEGGEN OF ; COMMENTAAR IS OF NIET.
;
;******************************************************************************
COPY:
	CLR	R2				;POINTER NAAR STATEMENT-TABEL.
COP1:
	MOV	FDBIN+F.NRBD,R5			;BYTECOUNT RECORD.
	CLR	R4				;POINTER NAAR RECORD.
COP2:
	CLR	R3				;STRING TELLER.
	MOV	NIET(R2),R1			;IN R1 ADRES VAN STRING.
COP3:
	CMPB	INLEES(R4),(R1)+		;VERGELIJK TEKENS.
	BNE	COP4				;BRANCH ALS NIET GELIJK.
;
	INC	R4
	INC	R3				;UPDATE POINTERS.
	CMP	R3,NIET+2(R2)			;TEST OF STRING GEVONDEN IS.
	BEQ	COP6				;GEVONDEN.
;
	SOB	R5,COP3				;ZOEK VERDER.
	BR	COP5				;STRING NIET GEVONDEN.
COP4:
	INC	R4				;UPDATE POINTERS.
	SOB	R5,COP2
COP5:
	ADD	#4,R2				;VOLGENDE IN STRING TABEL.
	CMP	R2,#NIETCN			;TEST OF KLAAR.
	BMI	COP1				;JAMMER, NOG NIET KLAAR.
;
	SEC					;STRING NIET GEVONDEN.
	RETURN
COP6:
	CLC					;STRING GEVONDEN.
	RETURN
;
ASCII:	.ASCII	/.ASCII/
ASCIC	=	.-ASCII
ASCIZ:	.ASCII	/.ASCIZ/
ASCZC	=	.-ASCIZ
HEK1A:	.ASCII	/#' /
HEK1AC	=	.-HEK1A
HEK1B:	.ASCII	/#'	/
HEK1BC	=	.-HEK1B
HEK1C:	.ASCII	/#';/
HEK1CC	=	.-HEK1C
HEK2:	.ASCII	/#"/
HEK2CN	=	.-HEK2
IS:	.ASCII	/=/
ISCN	=	.-IS
ERROR:	.ASCII	/.ERROR/
ERRORC	=	.-ERROR
DB:	.ASCII	/DB/				;VOOR INTEL MNEMONICS.
DBCN	=	.-DB
DW:	.ASCII	/DW/				;VOOR INTEL MNEMONICS.
DWCN	=	.-DW
	.EVEN
NIET:	.WORD	ASCII,ASCIC
	.WORD	ASCIZ,ASCZC
	.WORD	HEK1A,HEK1AC
	.WORD	HEK1B,HEK1BC
	.WORD	HEK1C,HEK1CC
	.WORD	HEK2,HEK2CN
	.WORD	IS,ISCN
	.WORD	ERROR,ERRORC
	.WORD	DB,DBCN
	.WORD	DW,DWCN
NIETCN	=	.-NIET
	.PAGE
	.SBTTL	ROUTINE WEG
;******************************************************************************
;
;	ROUTINE	WEG
;
;	DEZE ROUTINE CONTROLEERT OP IN HET RECORD VAN DE INPUT FILE DE
;	VOLGENDE STATEMENTS VOORKOMEN:
;
;	.PAGE
;	.SBTTL
;
;	ALS EEN VAN DEZE STATEMENTS VOORKOMT, WORDT DE REGEL NIET NAAR
;	DE OUTPUT FILE GECOPIEERD.
;
;	VOORAFGAANDE AAN BOVENGENOEMDE STATEMENTS MOGEN ALLEEN <TABS> OF
;	BLANKS VOORKOMEN, EN ZE MOETEN ALTIJD MET EEN . BEGINNEN.
;				================================
;
;******************************************************************************
WEG:
	MOV	FDBIN+F.NRBD,R5			;BYTECOUNT RECORD.
	CLR	R4				;POINTER NAAR RECORD.
WEG0:
	CMPB	INLEES(R4),#11			;TEST OF <TAB>
	BEQ	WEG0A				;BRANCH ALS <TAB>
;
	CMPB	INLEES(R4),#' 			;TEST OP BLANK.
	BEQ	WEG0A				;BRANCH ALS BLANK.
;
	CMPB	INLEES(R4),#'.			;HET MAG ALLEEN NOG EEN . ZIJN.
	BNE	WEG5A				;BRANCH ALS HET STATEMENT NIET
						;VOORKOMT.
	BR	WEG0B				;STATEMENT KAN VOORKOMEN.
WEG0A:
	INC	R4				;VOLGEND TEKEN.
	SOB	R5,WEG0				;TEST OF KLAAR.
	BR	WEG5A				;STRING KOMT NIET VOOR.
;******************************************************************************
;
;	ALLES WIJST EROP DAT EEN VAN DE STRINGS VOORKOMT. WE ONDERZOEKEN DIT
;	NU EVEN.
;
;******************************************************************************
WEG0B:
	CLR	R2				;POINTER NAAR STATEMENT-TABEL.
WEG1:
	MOV	FDBIN+F.NRBD,R5			;BYTECOUNT RECORD.
	CLR	R4				;POINTER NAAR RECORD.
WEG2:
	CLR	R3				;STRING TELLER.
	MOV	WEL(R2),R1			;IN R1 ADRES VAN STRING.
WEG3:
	CMPB	INLEES(R4),(R1)+		;VERGELIJK TEKENS.
	BNE	WEG4				;BRANCH ALS NIET GELIJK.
;
	INC	R4
	INC	R3				;UPDATE POINTERS.
	CMP	R3,WEL+2(R2)			;TEST OF STRING GEVONDEN IS.
	BEQ	WEG6				;GEVONDEN.
;
	SOB	R5,WEG3				;ZOEK VERDER.
	BR	WEG5				;STRING NIET GEVONDEN.
WEG4:
	INC	R4				;UPDATE POINTERS.
	SOB	R5,WEG2
WEG5:
	ADD	#4,R2				;VOLGENDE IN STRING TABEL.
	CMP	R2,#WELCN			;TEST OF KLAAR.
	BMI	WEG1				;JAMMER, NOG NIET KLAAR.
WEG5A:
	SEC					;STRING NIET GEVONDEN.
	RETURN
WEG6:
	CLC					;STRING GEVONDEN.
	RETURN
;
PAGE:	.ASCII	/.PAGE/
PAGEC	=	.-PAGE
SBTTL:	.ASCII	/.SBTTL/
SBTTLC	=	.-SBTTL
	.EVEN
WEL:	.WORD	PAGE,PAGEC
	.WORD	SBTTL,SBTTLC
WELCN	=	.-WEL
	.PAGE
	.SBTTL	START VAN HET PROGRAMMA
;******************************************************************************
;
;	START VAN HET PROGRAMMA
;
;******************************************************************************
START:
	CALL	COMMAN				;BEHANDEL COMMAND LINE.
;******************************************************************************
;
;	DE INPUT FILE BESTAAT EN IS GE-OPEND EN DE OUTPUT FILE IS OP EEN
;	JUISTE WIJZE GECREEERD.
;	GA RECORD VOOR RECORD LEZEN UIT DE INPUT FILE. VERRICHT BOVENSTAAND
;	"STRAPPEN" EN SCHRIJF HET EVT BEWERKTE RECORD NAAR DE OUTPUT FILE.
;
;******************************************************************************
ST1:
	GET$	#FDBIN				;LEES RECORD UIT INPUT FILE
	BCC	ST2				;BRANCH ALS GELUKT.
;
	CMPB	FDBIN+F.ERR,#IE.EOF		;TEST OP END-OF-FILE
	BEQ	KLAAR				;BRANCH ALS END-OF-FILE.
;
	PRINT	#IN,#INC			;DISPLAY: I/O Error on Input File
	CALL	ERRCOD				;VUL FOUTCODE IN.
	PRINT	#ERRCO,#ERRCOC			;DISPLAY FOUTCODE.
;
	CLOSE$	#FDBIN				;CLOSE INPUT FILE.
;
	DELET$	#FDBOUT				;DELETE OUTPUT FILE.
	JMP	EXIT
ST2:
	MOV	FDBIN+F.NRBD,R5			;SAVE BYTECOUNT REGEL.
	BEQ	ST1				;BRANCH ALS LEEG RECORD.
;
	CMPB	INLEES,#';			;TEST OF REGEL MET ; BEGINT.
	BEQ	ST1				;BRANCH ALS JA.
;******************************************************************************
;
;	NU GAAN WE CONTROLEREN OF DE VOLGENDE STATEMENTS VOORKOMEN:
;	BV. .ASCII
;	ER ZOU BEST EEN ; IN DE ASCII-STRING KUNNEN STAAN.
;	ALS ZO'N STATEMENT VOORKOMT MOGEN WE NIETS MET DE REGEL DOEN.
;
;	ZIE VOOR ALLE STATEMENTS WAAR OP GEKONTROLEERD WORDT DE ROUTINE COPY
;
;******************************************************************************
	CALL	COPY				;KIJK OF ER EEN "GEVAARLIJK"
						;STATEMENT VOORKOMT.
	BCC	BEG00				;BRANCH ALS JA.
;******************************************************************************
;
;	NU GAAN WE CONTROLEREN OF DE VOLGENDE STATEMENTS VOORKOMEN:
;	BV. .PAGE
;	DEZE STATEMENTS HOEVEN HELEMAAL NIET GECOPIEERD TE WORDEN.
;
;	ZIE VOOR ALLE STATEMENTS WAAR OP GEKONTROLEERD WORDT DE ROUTINE WEG
;
;******************************************************************************
	CALL	WEG				;KIJK OF ER EEN "ONNUTTIG"
						;STATEMENT VOORKOMT.
	BCC	ST1				;BRANCH ALS JA.
;******************************************************************************
;
;	WE KUNNEN NU "RUSTIG" DE STRING VAN ACHTER AF AAN ONDERZOEKEN.
;
;	ZODRA WE EEN ; VINDEN COPIEREN WE DE REGEL TOTAAN DEZE POSITIE.
;	DE ; EN VERDER GAAT DUS NIET MEE.
;
;
;******************************************************************************
	MOV	FDBIN+F.NRBD,R5			;IN R5 BYTECOUNT REGEL.
BEG0:
	CMPB	INLEES-1(R5),#';		;GA VANACHTER AF ; ZOEKEN.
	BEQ	BEG2				;BRANCH ALS GEVONDEN.
	SOB	R5,BEG0				;BRANCH ALS NIET KLAAR.
	.PAGE
;******************************************************************************
;
;	WE HEBBEN GEEN ; GEVONDEN.
;	DE REGEL MOET IN Z'N GEHEEL WORDEN WEGGESCHREVEN NAAR DE OUTPUT FILE.
;
;******************************************************************************
BEG00:
	MOV	FDBIN+F.NRBD,R3			;BYTECOUNT REGEL.
;******************************************************************************
;
;	SCHRIJF RECORD NAAR DE OUTPUT FILE.
;
;******************************************************************************
BEG1:
	PUT$	#FDBOUT,#INLEES,R3		;SCHRIJF REGEL IN OUTPUT FILE
	BCC	ST1				;BRANCH ALS GELUKT.
;
	PRINT	#OUT,#OUTC			;DISPLAY: I/O Error on Output File
	CALL	ERRCOD				;VUL FOUTCODE IN.
	PRINT	#ERRCO,#ERRCOC			;DISPLAY FOUTCODE.
;
	CALL	OUTERR				;DISPLAY OUTPUT FILE NAAM.
;
	CLOSE$	#FDBIN				;CLOSE INPUT FILE.
	DELET$	#FDBOUT				;DELETE OUTPUT FILE.
	JMP	EXIT
;******************************************************************************
;
;	WE HEBBEN EEN ; GEVONDEN.
;	SCHRIJF RECORD NAAR OUTPUT FILE ZONDER ;BLA
;
;******************************************************************************
BEG2:
	DEC	R5				;VERLAAG BYTECOUNT.
	BEQ	ST1				;NIET COPIEREN ALS 0.
;
	MOV	R5,R3				;UPDATE BYTECOUNT. GAAT NAAR R3.
	JMP	BEG1
	.PAGE
;******************************************************************************
;
;	EXIT-GEDEELTE
;	CLOSE DE BEIDE FILES
;
;******************************************************************************
KLAAR:
	CLOSE$	#FDBIN				;CLOSE INPUT FILE
	CLOSE$	#FDBOUT				;CLOSE OUTPUT FILE
EXIT:
	TST	WILCAR				;TEST OF WILDCARDS IN HET SPEL.
	BEQ	EXIT1				;BRANCH ALS NIET.
;
	MOV	#1,EERST
	MOV	#1,R5				;R5 OP DOORZOEKEN FLETSR
	MOV	#FDBIN,R0			;FDB ADRES
;
	CALL	WILD1				;GA VERDER MET ZOEKEN.
	JMP	ST1				;EN BEHANDEL VOLGENDE FILE.
EXIT1:
	BITB	GCML+F.RCTL,#FD.TTY		;BRANCH ALS AANGEROEPEN VIA @FILE
	BNE	UIT				;BRANCH ALS NIET.
	JMP	START				;VOLGENDE COMMAND LINE UIT @FILE.
UIT:
	EXIT$S
	.END	START
