	.PSECT	MOVE_FILES_CODE,RD,NOWRT,EXE,SHR
	.ENTRY	start,^M<R2,R3,R4,R5,R6,R7,R8,R9,R10,R11>
num_blocks=1000
;
;	Open the input file
;
;
;	Set up output RMS data structures
;
	$FAB_STORE	FAB=OUTPUT_FAB,-
			FAC=<PUT,TRN>,-
			FNA=DUMMY_NAME_STRING,-
			FNS=DUMMY_NAME_LENGTH,-
			FOP=<SQO,SUP>,-
			ORG=seq,-
			RAT=cr,-
			RFM=var,-
			RTV=#0,-
			SHR=<NIL>,-
			XAB=OUTPUT_XAB_all
	$XABALL_STORE	XAB=OUTPUT_XAB_ALL,-
			AID=#0,-
			ALN=#XAB$C_LBN,-
			ALQ=#num_blocks,-
			LOC=#1
	$RAB_STORE	RAB=OUTPUT_RAB,-
			FAB=OUTPUT_FAB,-
			RAC=<SEQ>,-
			ROP=<TPT,WBH,BIO>
	$CREATE	FAB=OUTPUT_FAB
	BLBS	R0,12$	;CHECK FOR ERROR
	$exit_s	r0
12$:	$CONNECT	RAB=OUTPUT_RAB	;CONNECT THE RAB TO THE NOW OPEN OUTPUT
	BLBS	R0,13$	;CHECK FOR ERROR
	PUSHL	#^M<R0>	;SAVE R0 FOR ERROR RETURN AFTER CLEANUP
	$CLOSE	FAB=OUTPUT_FAB
	POPR	#^M<R0>
	$exit_s	r0
13$:
	.PAGE
	.SUBTITLE	MOVE FILE- ACTUAL MOVE FILE CODE BY BLOCKS
;
;	Init the input and output RABS
;
	MOVAL	IO_BUFFER,OUTPUT_RAB+RAB$L_RBF	;repeat for output buffer
	MOVW	#<80>,OUTPUT_RAB+RAB$W_RSZ
	CLRL	OUTPUT_RAB+RAB$L_BKT
num_rec=<num_blocks*512>/<80+2>+10
	movl	#num_rec,r11
25$:	$put	RAB=OUTPUT_RAB			;write to new file
	BLBc	R0,26$				;if no error loop back
	decl	r11
	bgtr	25$
26$:
	.PAGE
	.SUBTITLE	ERROR AND NORMAL EXITS
;
;	If we got here, we have some error trying to write to
;	the new file. No atempt is made to try and recover. The new file
;	is deleted and the old one is left alone
;
	PUSHL	#^M<R0>	;SAVE R0 FOR ERROR RETURN AFTER CLEANUP
	$CLOSE	FAB=OUTPUT_FAB
	$exit_s	r0
	.PAGE
	.SUBTITLE	MOVE FILE DATA AREA
	.PSECT	MOVE_FILES_DATA,RD,WRT,NOEXE,NOSHR,PAGE
DUMMY_NAME_STRING:
	.ascii	/test_file.dat/
DUMMY_NAME_LENGTH:
	.LONG	.-dummy_name_string
	.PAGE
	.SUBTITLE	MOVE FILES RMS DATA STRUCTURES AREA
	.PSECT	MOVE_FILES_RMS_BLOCKS,RD,WRT,NOEXE,NOSHR,PAGE
;
;	INPUT FILE DATA STRUCTURES
;
	.align	long
OUTPUT_FAB:	$FAB
	.ALIGN	LONG
OUTPUT_RAB:	$RAB
	.ALIGN	LONG
OUTPUT_XAB_ALL:	$XABALL
	.PSECT	MOVE_FILES_BUFFER,RD,WRT,NOEXE,NOSHR,LONG
	.ALIGN	LONG
IO_BUFFER:	.BLKB	<512*64>	;BLOCK I/O as 64 block segments
	.end	start
