INFO-VAX Fri, 18 Jan 2008 Volume 2008 : Issue 36 Contents: Looking for tape copy program Re: Looking for tape copy program Re: Looking for tape copy program Re: Looking for tape copy program Re: Looking for tape copy program Re: Looking for tape copy program VMS to Nexsan storage? Re: Why Writers Buy Asbestos Undies ---------------------------------------------------------------------- Date: Fri, 18 Jan 2008 06:48:11 -0800 (PST) From: "tomarsin2015@comcast.net" <tomarsin2015@comcast.net> Subject: Looking for tape copy program Message-ID: <67bfb8f9-ea7f-4f5e-9312-265e78aa99e4@i3g2000hsf.googlegroups.com> Hello A few years back, I had a tape program that would allow me to do a tape to tape copy. The program would allow me to copy from 1 format to another (ie dlt to dat etc). I searched thru the freeware software archives and thru some of the sig tapes libraries, but cannot find the program. Does anybody recall the program? tks phil ------------------------------ Date: Fri, 18 Jan 2008 10:44:42 -0500 From: "Richard B. Gilbert" <rgilbert88@comcast.net> Subject: Re: Looking for tape copy program Message-ID: <4790C96A.7060001@comcast.net> tomarsin2015@comcast.net wrote: > Hello > A few years back, I had a tape program that would allow me to do a > tape to tape copy. The program would allow me to copy from 1 format to > another (ie dlt to dat etc). I searched thru the freeware software > archives and thru some of the sig tapes libraries, but cannot find the > program. Does anybody recall the program? > tks > phil I've never had two tape drives on the same system/cluster to play with so I don't know that this will work but . . . How about COPY MKA500:*.* MKB500: ------------------------------ Date: Fri, 18 Jan 2008 10:57:38 -0500 From: "Peter Weaver" <info-vax@weaverconsulting.ca> Subject: Re: Looking for tape copy program Message-ID: <03d701c859ea$da8b4a00$2802a8c0@CHARONLAP> ----- Original Message ----- > A few years back, I had a tape program that would allow me to do a > tape to tape copy. The program would allow me to copy from 1 format to > another (ie dlt to dat etc). I searched thru the freeware software > archives and thru some of the sig tapes libraries, but cannot find the > program. Does anybody recall the program? > tks > phil > This one? Don't remember where I got it from but it worked when I needed to copy a bunch a tapes for a customer that had to hand a bunch of tapes over to a court. $ ty tapecopy.mar .TITLE TapeCopy .IDENT /GKF110990/ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; ; Program makes physical copies of tapes ; including a verification pass. ; ; Input: ; ; input tape must be mounted: ; ; $ MOUNT/FOREIGN tapename: "" TAPECOPY$INPUT ; ; output tape must be mounted: ; ; $ MOUNT/FOREIGN tapename: "" TAPECOPY$OUTPUT ; ; $IODEF ; get IO$... definitions .MACRO Check,?L1 ; check status macro BLBS R0,L1 RET L1: .ENDM Check InputTapeNameDesc: ; logical name input tape .ASCID /TAPECOPY$INPUT/ InputTapeChannel: .BLKW 1 InputTapeIOSB: .BLKW 4 OutputTapeNameDesc: ; logical name output tape .ASCID /TAPECOPY$OUTPUT/ OutputTapeChannel: .BLKW 1 OutputTapeIOSB: .BLKW 4 TapeMarkCount: ; tape marks encountered .BLKL 1 BufferSize=64*1024-1; Buffer: .BLKB BufferSize VerifyBuffer: .BLKB BufferSize ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; ; .ENTRY TapeCopy$Main,0 ; ; assign channel to input tape ; $ASSIGN_S - DEVNAM=InputTapeNameDesc,- CHAN=InputTapeChannel Check ; ; assign channel to output tape ; $ASSIGN_S - DEVNAM=OutputTapeNameDesc,- CHAN=OutputTapeChannel Check CLRL TapeMarkCount ; init TM count ; ; rewind input tape ; $QIOW_S CHAN=InputTapeChannel,- FUNC=#IO$_REWIND,- IOSB=InputTapeIOSB Check MOVZWL InputTapeIOSB,R0 Check ; ; rewind output tape ; $QIOW_S CHAN=OutputTapeChannel,- FUNC=#IO$_REWIND,- IOSB=OutputTapeIOSB Check MOVZWL OutputTapeIOSB,R0 Check ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; ; read next block ; ReadBlock: $QIOW_S CHAN=InputTapeChannel,- FUNC=#IO$_READVBLK,- IOSB=InputTapeIOSB,- P1=Buffer,- P2=#BufferSize Check MOVZWL InputTapeIOSB,R0 BLBS R0,WriteBlock ; ok...,write it CMPL R0,#SS$_ENDOFFILE ; tape mark? BEQL WriteTM ; yes... RET ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; ; write tape mark ; WriteTM: INCL TapeMarkCount ; count this TM $QIOW_S CHAN=OutputTapeChannel,-; write TM FUNC=#IO$_WRITEOF,- IOSB=OutputTapeIOSB Check MOVZWL OutputTapeIOSB,R0 Check CMPL TapeMarkCount,#2 ; end of volume? BEQL GotoVerification ; yes..., now start verification BRW ReadBlock ; no..., read next block ; GotoVerification: BRW Verification ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; ; write next block ; WriteBlock: CLRL TapeMarkCount ; reset TM count MOVZWL InputTapeIOSB+2,R1 ; R1=blocksize block read $QIOW_S CHAN=OutputTapeChannel,- FUNC=#IO$_WRITEVBLK,- IOSB=OutputTapeIOSB,- P1=Buffer,- P2=R1 Check MOVZWL OutputTapeIOSB,R0 Check BRW ReadBlock ; start another copy ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; ; Tape verification ; ; Verification: ; ; rewind input tape ; $QIOW_S CHAN=InputTapeChannel,- FUNC=#IO$_REWIND,- IOSB=InputTapeIOSB Check MOVZWL InputTapeIOSB,R0 Check ; ; rewind output tape ; $QIOW_S CHAN=OutputTapeChannel,- FUNC=#IO$_REWIND,- IOSB=OutputTapeIOSB Check MOVZWL OutputTapeIOSB,R0 Check CLRL TapeMarkCount ; init TM count ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; ; read block from input tape ; ReadInput: ; $QIOW_S CHAN=InputTapeChannel,- FUNC=#IO$_READVBLK,- IOSB=InputTapeIOSB,- P1=Buffer,- P2=#BufferSize Check MOVZWL InputTapeIOSB,R0 BLBS R0,ReadOutput ; normal block INCL TapeMarkCount ; assume it's a TM CMPL R0,#SS$_ENDOFFILE ; tape mark? BEQL ReadTMOnly ; yes... RET ; ReadOutput: ; CLRL TapeMarkCount ; no TM tracing anymore ; ReadTMOnly: ; $QIOW_S CHAN=OutputTapeChannel,- FUNC=#IO$_READVBLK,- IOSB=OutputTapeIOSB,- P1=VerifyBuffer,- P2=#BufferSize Check MOVZWL OutputTapeIOSB,R0 BLBS R0,CompareBlock CMPL R0,#SS$_ENDOFFILE ; tape mark? BEQL CompareTM ; yes... RET ; CompareTM: ; TSTL TapeMarkCount ; any TM expected on output tape? BEQL CompareError ; no... CMPL TapeMarkCount,#2 ; end of tape? BEQL Exit ; yes... BRW ReadInput ; continue ; CompareBlock: ; TSTL TapeMarkCount ; epected TM on output tape? BNEQ CompareError ; yes... CMPW InputTapeIOSB+2,OutputTapeIOSB+2 ; same length? BNEQ CompareError ; no... CMPC3 InputTapeIOSB+2,Buffer,VerifyBuffer ; contents match? BNEQ CompareError ; no... BRW ReadInput ; CompareError: ; MOVL #4,R0 ; end with FATAL nomessage RET ; Exit: MOVL #SS$_NORMAL,R0 RET ; successful exit .END TapeCopy$Main Peter Weaver www.weaverconsulting.ca CHARON-VAX CHARON-AXP DataStream Reflection PreciseMail HP Commercial Hardware ------------------------------ Date: Fri, 18 Jan 2008 08:02:57 -0800 (PST) From: IanMiller <gxys@uk2.net> Subject: Re: Looking for tape copy program Message-ID: <3f1fb19a-c2a0-4c77-9a9b-af61939817f1@e10g2000prf.googlegroups.com> On Jan 18, 2:48 pm, "tomarsin2...@comcast.net" <tomarsin2...@comcast.net> wrote: > Hello > A few years back, I had a tape program that would allow me to do a > tape to tape copy. The program would allow me to copy from 1 format to > another (ie dlt to dat etc). I searched thru the freeware software > archives and thru some of the sig tapes libraries, but cannot find the > program. Does anybody recall the program? > tks > phil TCOPY ? http://mvb.saic.com/freeware/vax83d/tcopy/ ------------------------------ Date: Fri, 18 Jan 2008 11:59:12 -0500 From: norm.raphael@metso.com Subject: Re: Looking for tape copy program Message-ID: <OFF160E0AC.4410CA00-ON852573D4.005D3917-852573D4.005D49C7@metso.com> This is a multipart message in MIME format. --=_alternative 005D49C5852573D4_= Content-Type: text/plain; charset="US-ASCII" Attempts to compile this yield errors: %AMAC-E-DATINCODE, (1) data in code stream %AMAC-E-DATINCODE, (1) data in code stream %AMAC-E-DATINCODE, (1) data in code stream %AMAC-E-DATINCODE, (1) data in code stream %AMAC-E-DATINCODE, (1) data in code stream %AMAC-E-DATINCODE, (1) data in code stream %AMAC-E-DATINCODE, (1) data in code stream %AMAC-E-DATINCODE, (1) data in code stream %AMAC-E-DATINCODE, (1) data in code stream %AMAC-E-DATINCODE, (1) data in code stream %AMAC-E-DATINCODE, (1) data in code stream %AMAC-I-BRANCHBET, (1) branch between routines from routine OUTPUTTAPECHANNEL %AMAC-I-BRANCHBET, (1) branch between routines from routine OUTPUTTAPEIOSB %AMAC-I-BRANCHBET, (1) branch between routines from routine TAPEMARKCOUNT %AMAC-I-BRANCHBET, (1) branch between routines from routine BUFFER %AMAC-I-BRANCHBET, (1) branch between routines from routine VERIFYBUFFER %AMAC-E-DATINCODE, (1) data in code stream %AMAC-E-STORCODLAB, (1) stored code labels must be declared entry points in rout ine OUTPUTTAPECHANNEL %AMAC-E-STORCODLAB, (1) stored code labels must be declared entry points in rout ine OUTPUTTAPECHANNEL %AMAC-E-STORCODLAB, (1) stored code labels must be declared entry points in rout ine OUTPUTTAPECHANNEL %AMAC-E-STORCODLAB, (1) stored code labels must be declared entry points in rout ine OUTPUTTAPECHANNEL %AMAC-E-STORCODLAB, (1) stored code labels must be declared entry points in rout ine OUTPUTTAPECHANNEL %AMAC-E-STORCODLAB, (1) stored code labels must be declared entry points in rout ine OUTPUTTAPECHANNEL %AMAC-E-STORCODLAB, (1) stored code labels must be declared entry points in rout ine OUTPUTTAPECHANNEL %AMAC-E-PREVERROR, (1) previous errors prevent further analysis "Peter Weaver" <info-vax@weaverconsulting.ca> wrote on 01/18/2008 10:57:38 AM: > ----- Original Message ----- > > A few years back, I had a tape program that would allow me to do a > > tape to tape copy. The program would allow me to copy from 1 format to > > another (ie dlt to dat etc). I searched thru the freeware software > > archives and thru some of the sig tapes libraries, but cannot find the > > program. Does anybody recall the program? > > tks > > phil > > > > This one? Don't remember where I got it from but it worked when I needed to > copy a bunch a tapes for a customer that had to hand a bunch of tapes over > to a court. > > $ ty tapecopy.mar > .TITLE TapeCopy > .IDENT /GKF110990/ > ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; > ; > ; Program makes physical copies of tapes > ; including a verification pass. > ; > ; Input: > ; > ; input tape must be mounted: > ; > ; $ MOUNT/FOREIGN tapename: "" TAPECOPY$INPUT > ; > ; output tape must be mounted: > ; > ; $ MOUNT/FOREIGN tapename: "" TAPECOPY$OUTPUT > ; > ; > $IODEF ; get IO$... definitions > > .MACRO Check,?L1 ; check status macro > BLBS R0,L1 > RET > L1: > .ENDM Check > > InputTapeNameDesc: ; logical name input tape > .ASCID /TAPECOPY$INPUT/ > InputTapeChannel: > .BLKW 1 > InputTapeIOSB: > .BLKW 4 > > OutputTapeNameDesc: ; logical name output tape > .ASCID /TAPECOPY$OUTPUT/ > OutputTapeChannel: > .BLKW 1 > OutputTapeIOSB: > .BLKW 4 > > TapeMarkCount: ; tape marks encountered > .BLKL 1 > > BufferSize=64*1024-1; > Buffer: .BLKB BufferSize > VerifyBuffer: > .BLKB BufferSize > > ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; > ; > ; > .ENTRY TapeCopy$Main,0 > > ; > ; assign channel to input tape > ; > $ASSIGN_S - > DEVNAM=InputTapeNameDesc,- > CHAN=InputTapeChannel > Check > ; > ; assign channel to output tape > ; > $ASSIGN_S - > DEVNAM=OutputTapeNameDesc,- > CHAN=OutputTapeChannel > Check > CLRL TapeMarkCount ; init TM count > ; > ; rewind input tape > ; > $QIOW_S CHAN=InputTapeChannel,- > FUNC=#IO$_REWIND,- > IOSB=InputTapeIOSB > Check > MOVZWL InputTapeIOSB,R0 > Check > ; > ; rewind output tape > ; > $QIOW_S CHAN=OutputTapeChannel,- > FUNC=#IO$_REWIND,- > IOSB=OutputTapeIOSB > Check > MOVZWL OutputTapeIOSB,R0 > Check > ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; > ; > ; read next block > ; > ReadBlock: > > $QIOW_S CHAN=InputTapeChannel,- > FUNC=#IO$_READVBLK,- > IOSB=InputTapeIOSB,- > P1=Buffer,- > P2=#BufferSize > Check > MOVZWL InputTapeIOSB,R0 > BLBS R0,WriteBlock ; ok...,write it > CMPL R0,#SS$_ENDOFFILE ; tape mark? > BEQL WriteTM ; yes... > RET > ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; > ; > ; write tape mark > ; > WriteTM: > > INCL TapeMarkCount ; count this TM > $QIOW_S CHAN=OutputTapeChannel,-; write TM > FUNC=#IO$_WRITEOF,- > IOSB=OutputTapeIOSB > Check > MOVZWL OutputTapeIOSB,R0 > Check > CMPL TapeMarkCount,#2 ; end of volume? > BEQL GotoVerification ; yes..., now start verification > BRW ReadBlock ; no..., read next block > ; > GotoVerification: > BRW Verification > ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; > ; > ; write next block > ; > WriteBlock: > > CLRL TapeMarkCount ; reset TM count > MOVZWL InputTapeIOSB+2,R1 ; R1=blocksize block read > $QIOW_S CHAN=OutputTapeChannel,- > FUNC=#IO$_WRITEVBLK,- > IOSB=OutputTapeIOSB,- > P1=Buffer,- > P2=R1 > Check > MOVZWL OutputTapeIOSB,R0 > Check > BRW ReadBlock ; start another copy > ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; > ; > ; Tape verification > ; > ; > Verification: > ; > ; rewind input tape > ; > $QIOW_S CHAN=InputTapeChannel,- > FUNC=#IO$_REWIND,- > IOSB=InputTapeIOSB > Check > MOVZWL InputTapeIOSB,R0 > Check > ; > ; rewind output tape > ; > $QIOW_S CHAN=OutputTapeChannel,- > FUNC=#IO$_REWIND,- > IOSB=OutputTapeIOSB > Check > MOVZWL OutputTapeIOSB,R0 > Check > CLRL TapeMarkCount ; init TM count > ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; > ; > ; read block from input tape > ; > ReadInput: > ; > $QIOW_S CHAN=InputTapeChannel,- > FUNC=#IO$_READVBLK,- > IOSB=InputTapeIOSB,- > P1=Buffer,- > P2=#BufferSize > Check > MOVZWL InputTapeIOSB,R0 > BLBS R0,ReadOutput ; normal block > INCL TapeMarkCount ; assume it's a TM > CMPL R0,#SS$_ENDOFFILE ; tape mark? > BEQL ReadTMOnly ; yes... > RET > ; > ReadOutput: > ; > CLRL TapeMarkCount ; no TM tracing anymore > ; > ReadTMOnly: > ; > $QIOW_S CHAN=OutputTapeChannel,- > FUNC=#IO$_READVBLK,- > IOSB=OutputTapeIOSB,- > P1=VerifyBuffer,- > P2=#BufferSize > Check > MOVZWL OutputTapeIOSB,R0 > BLBS R0,CompareBlock > CMPL R0,#SS$_ENDOFFILE ; tape mark? > BEQL CompareTM ; yes... > RET > ; > CompareTM: > ; > TSTL TapeMarkCount ; any TM expected on output tape? > BEQL CompareError ; no... > CMPL TapeMarkCount,#2 ; end of tape? > BEQL Exit ; yes... > BRW ReadInput ; continue > ; > CompareBlock: > ; > TSTL TapeMarkCount ; epected TM on output tape? > BNEQ CompareError ; yes... > CMPW InputTapeIOSB+2,OutputTapeIOSB+2 ; same length? > BNEQ CompareError ; no... > CMPC3 InputTapeIOSB+2,Buffer,VerifyBuffer ; contents match? > BNEQ CompareError ; no... > BRW ReadInput > ; > CompareError: > ; > MOVL #4,R0 ; end with FATAL nomessage > RET > ; > Exit: > MOVL #SS$_NORMAL,R0 > RET ; successful exit > .END TapeCopy$Main > > > Peter Weaver > www.weaverconsulting.ca > CHARON-VAX CHARON-AXP DataStream Reflection PreciseMail HP Commercial > Hardware > > --=_alternative 005D49C5852573D4_= Content-Type: text/html; charset="US-ASCII" <br><font size=2 face="sans-serif">Attempts to compile this yield errors:</font> <br> <br><font size=2 face="sans-serif">%AMAC-E-DATINCODE, (1) data in code stream</font> <br><font size=2 face="sans-serif">%AMAC-E-DATINCODE, (1) data in code stream</font> <br><font size=2 face="sans-serif">%AMAC-E-DATINCODE, (1) data in code stream</font> <br><font size=2 face="sans-serif">%AMAC-E-DATINCODE, (1) data in code stream</font> <br><font size=2 face="sans-serif">%AMAC-E-DATINCODE, (1) data in code stream</font> <br><font size=2 face="sans-serif">%AMAC-E-DATINCODE, (1) data in code stream</font> <br><font size=2 face="sans-serif">%AMAC-E-DATINCODE, (1) data in code stream</font> <br><font size=2 face="sans-serif">%AMAC-E-DATINCODE, (1) data in code stream</font> <br><font size=2 face="sans-serif">%AMAC-E-DATINCODE, (1) data in code stream</font> <br><font size=2 face="sans-serif">%AMAC-E-DATINCODE, (1) data in code stream</font> <br><font size=2 face="sans-serif">%AMAC-E-DATINCODE, (1) data in code stream</font> <br><font size=2 face="sans-serif">%AMAC-I-BRANCHBET, (1) branch between routines from routine OUTPUTTAPECHANNEL</font> <br><font size=2 face="sans-serif">%AMAC-I-BRANCHBET, (1) branch between routines from routine OUTPUTTAPEIOSB</font> <br><font size=2 face="sans-serif">%AMAC-I-BRANCHBET, (1) branch between routines from routine TAPEMARKCOUNT</font> <br><font size=2 face="sans-serif">%AMAC-I-BRANCHBET, (1) branch between routines from routine BUFFER</font> <br><font size=2 face="sans-serif">%AMAC-I-BRANCHBET, (1) branch between routines from routine VERIFYBUFFER</font> <br><font size=2 face="sans-serif">%AMAC-E-DATINCODE, (1) data in code stream</font> <br><font size=2 face="sans-serif">%AMAC-E-STORCODLAB, (1) stored code labels must be declared entry points in rout</font> <br><font size=2 face="sans-serif">ine OUTPUTTAPECHANNEL</font> <br><font size=2 face="sans-serif">%AMAC-E-STORCODLAB, (1) stored code labels must be declared entry points in rout</font> <br><font size=2 face="sans-serif">ine OUTPUTTAPECHANNEL</font> <br><font size=2 face="sans-serif">%AMAC-E-STORCODLAB, (1) stored code labels must be declared entry points in rout</font> <br><font size=2 face="sans-serif">ine OUTPUTTAPECHANNEL</font> <br><font size=2 face="sans-serif">%AMAC-E-STORCODLAB, (1) stored code labels must be declared entry points in rout</font> <br><font size=2 face="sans-serif">ine OUTPUTTAPECHANNEL</font> <br><font size=2 face="sans-serif">%AMAC-E-STORCODLAB, (1) stored code labels must be declared entry points in rout</font> <br><font size=2 face="sans-serif">ine OUTPUTTAPECHANNEL</font> <br><font size=2 face="sans-serif">%AMAC-E-STORCODLAB, (1) stored code labels must be declared entry points in rout</font> <br><font size=2 face="sans-serif">ine OUTPUTTAPECHANNEL</font> <br><font size=2 face="sans-serif">%AMAC-E-STORCODLAB, (1) stored code labels must be declared entry points in rout</font> <br><font size=2 face="sans-serif">ine OUTPUTTAPECHANNEL</font> <br><font size=2 face="sans-serif">%AMAC-E-PREVERROR, (1) previous errors prevent further analysis</font> <br> <br><font size=2><tt>"Peter Weaver" <info-vax@weaverconsulting.ca> wrote on 01/18/2008 10:57:38 AM:<br> <br> > ----- Original Message ----- <br> > > A few years back, I had a tape program that would allow me to do a<br> > > tape to tape copy. The program would allow me to copy from 1 format to<br> > > another (ie dlt to dat etc). I searched thru the freeware software<br> > > archives and thru some of the sig tapes libraries, but cannot find the<br> > > program. Does anybody recall the program?<br> > > tks<br> > > phil<br> > ><br> > <br> > This one? Don't remember where I got it from but it worked when I needed to <br> > copy a bunch a tapes for a customer that had to hand a bunch of tapes over <br> > to a court.<br> > <br> > $ ty tapecopy.mar<br> > .TITLE TapeCopy<br> > .IDENT /GKF110990/<br> > ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br> > ;<br> > ; Program makes physical copies of tapes<br> > ; including a verification pass.<br> > ;<br> > ; Input:<br> > ;<br> > ; input tape must be mounted:<br> > ;<br> > ; $ MOUNT/FOREIGN tapename: "" TAPECOPY$INPUT<br> > ;<br> > ; output tape must be mounted:<br> > ;<br> > ; $ MOUNT/FOREIGN tapename: "" TAPECOPY$OUTPUT<br> > ;<br> > ;<br> > $IODEF ; get IO$... definitions<br> > <br> > .MACRO Check,?L1 ; check status macro<br> > BLBS R0,L1<br> > RET<br> > L1:<br> > .ENDM Check<br> > <br> > InputTapeNameDesc: ; logical name input tape<br> > .ASCID /TAPECOPY$INPUT/<br> > InputTapeChannel:<br> > .BLKW 1<br> > InputTapeIOSB:<br> > .BLKW 4<br> > <br> > OutputTapeNameDesc: ; logical name output tape<br> > .ASCID /TAPECOPY$OUTPUT/<br> > OutputTapeChannel:<br> > .BLKW 1<br> > OutputTapeIOSB:<br> > .BLKW 4<br> > <br> > TapeMarkCount: ; tape marks encountered<br> > .BLKL 1<br> > <br> > BufferSize=64*1024-1;<br> > Buffer: .BLKB BufferSize<br> > VerifyBuffer:<br> > .BLKB BufferSize<br> > <br> > ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br> > ;<br> > ;<br> > .ENTRY TapeCopy$Main,0<br> > <br> > ;<br> > ; assign channel to input tape<br> > ;<br> > $ASSIGN_S -<br> > DEVNAM=InputTapeNameDesc,-<br> > CHAN=InputTapeChannel<br> > Check<br> > ;<br> > ; assign channel to output tape<br> > ;<br> > $ASSIGN_S -<br> > DEVNAM=OutputTapeNameDesc,-<br> > CHAN=OutputTapeChannel<br> > Check<br> > CLRL TapeMarkCount ; init TM count<br> > ;<br> > ; rewind input tape<br> > ;<br> > $QIOW_S CHAN=InputTapeChannel,-<br> > FUNC=#IO$_REWIND,-<br> > IOSB=InputTapeIOSB<br> > Check<br> > MOVZWL InputTapeIOSB,R0<br> > Check<br> > ;<br> > ; rewind output tape<br> > ;<br> > $QIOW_S CHAN=OutputTapeChannel,-<br> > FUNC=#IO$_REWIND,-<br> > IOSB=OutputTapeIOSB<br> > Check<br> > MOVZWL OutputTapeIOSB,R0<br> > Check<br> > ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br> > ;<br> > ; read next block<br> > ;<br> > ReadBlock:<br> > <br> > $QIOW_S CHAN=InputTapeChannel,-<br> > FUNC=#IO$_READVBLK,-<br> > IOSB=InputTapeIOSB,-<br> > P1=Buffer,-<br> > P2=#BufferSize<br> > Check<br> > MOVZWL InputTapeIOSB,R0<br> > BLBS R0,WriteBlock ; ok...,write it<br> > CMPL R0,#SS$_ENDOFFILE ; tape mark?<br> > BEQL WriteTM ; yes...<br> > RET<br> > ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br> > ;<br> > ; write tape mark<br> > ;<br> > WriteTM:<br> > <br> > INCL TapeMarkCount ; count this TM<br> > $QIOW_S CHAN=OutputTapeChannel,-; write TM<br> > FUNC=#IO$_WRITEOF,-<br> > IOSB=OutputTapeIOSB<br> > Check<br> > MOVZWL OutputTapeIOSB,R0<br> > Check<br> > CMPL TapeMarkCount,#2 ; end of volume?<br> > BEQL GotoVerification ; yes..., now start verification<br> > BRW ReadBlock ; no..., read next block<br> > ;<br> > GotoVerification:<br> > BRW Verification<br> > ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br> > ;<br> > ; write next block<br> > ;<br> > WriteBlock:<br> > <br> > CLRL TapeMarkCount ; reset TM count<br> > MOVZWL InputTapeIOSB+2,R1 ; R1=blocksize block read<br> > $QIOW_S CHAN=OutputTapeChannel,-<br> > FUNC=#IO$_WRITEVBLK,-<br> > IOSB=OutputTapeIOSB,-<br> > P1=Buffer,-<br> > P2=R1<br> > Check<br> > MOVZWL OutputTapeIOSB,R0<br> > Check<br> > BRW ReadBlock ; start another copy<br> > ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br> > ;<br> > ; Tape verification<br> > ;<br> > ;<br> > Verification:<br> > ;<br> > ; rewind input tape<br> > ;<br> > $QIOW_S CHAN=InputTapeChannel,-<br> > FUNC=#IO$_REWIND,-<br> > IOSB=InputTapeIOSB<br> > Check<br> > MOVZWL InputTapeIOSB,R0<br> > Check<br> > ;<br> > ; rewind output tape<br> > ;<br> > $QIOW_S CHAN=OutputTapeChannel,-<br> > FUNC=#IO$_REWIND,-<br> > IOSB=OutputTapeIOSB<br> > Check<br> > MOVZWL OutputTapeIOSB,R0<br> > Check<br> > CLRL TapeMarkCount ; init TM count<br> > ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br> > ;<br> > ; read block from input tape<br> > ;<br> > ReadInput:<br> > ;<br> > $QIOW_S CHAN=InputTapeChannel,-<br> > FUNC=#IO$_READVBLK,-<br> > IOSB=InputTapeIOSB,-<br> > P1=Buffer,-<br> > P2=#BufferSize<br> > Check<br> > MOVZWL InputTapeIOSB,R0<br> > BLBS R0,ReadOutput ; normal block<br> > INCL TapeMarkCount ; assume it's a TM<br> > CMPL R0,#SS$_ENDOFFILE ; tape mark?<br> > BEQL ReadTMOnly ; yes...<br> > RET<br> > ;<br> > ReadOutput:<br> > ;<br> > CLRL TapeMarkCount ; no TM tracing anymore<br> > ;<br> > ReadTMOnly:<br> > ;<br> > $QIOW_S CHAN=OutputTapeChannel,-<br> > FUNC=#IO$_READVBLK,-<br> > IOSB=OutputTapeIOSB,-<br> > P1=VerifyBuffer,-<br> > P2=#BufferSize<br> > Check<br> > MOVZWL OutputTapeIOSB,R0<br> > BLBS R0,CompareBlock<br> > CMPL R0,#SS$_ENDOFFILE ; tape mark?<br> > BEQL CompareTM ; yes...<br> > RET<br> > ;<br> > CompareTM:<br> > ;<br> > TSTL TapeMarkCount ; any TM expected on output tape?<br> > BEQL CompareError ; no...<br> > CMPL TapeMarkCount,#2 ; end of tape?<br> > BEQL Exit ; yes...<br> > BRW ReadInput ; continue<br> > ;<br> > CompareBlock:<br> > ;<br> > TSTL TapeMarkCount ; epected TM on output tape?<br> > BNEQ CompareError ; yes...<br> > CMPW InputTapeIOSB+2,OutputTapeIOSB+2 ; same length?<br> > BNEQ CompareError ; no...<br> > CMPC3 InputTapeIOSB+2,Buffer,VerifyBuffer ; contents match?<br> > BNEQ CompareError ; no...<br> > BRW ReadInput<br> > ;<br> > CompareError:<br> > ;<br> > MOVL #4,R0 ; end with FATAL nomessage<br> > RET<br> > ;<br> > Exit:<br> > MOVL #SS$_NORMAL,R0<br> > RET ; successful exit<br> > .END TapeCopy$Main<br> > <br> > <br> > Peter Weaver<br> > www.weaverconsulting.ca<br> > CHARON-VAX CHARON-AXP DataStream Reflection PreciseMail HP Commercial <br> > Hardware<br> > <br> > <br> </tt></font> --=_alternative 005D49C5852573D4_=-- ------------------------------ Date: Fri, 18 Jan 2008 12:26:26 -0500 From: "Peter Weaver" <info-vax@weaverconsulting.ca> Subject: Re: Looking for tape copy program Message-ID: <042c01c859f7$42122a20$2802a8c0@CHARONLAP> > Attempts to compile this yield errors: > > %AMAC-E-DATINCODE, (1) data in code stream >... Yup, on an Alpha or IA64 but not on a VAX. Add .PSECT NOEXE,WRT,PAGE just before the .ENTRY and it will compile. Peter Weaver www.weaverconsulting.ca CHARON-VAX CHARON-AXP DataStream Reflection PreciseMail HP Commercial Hardware ------------------------------ Date: Fri, 18 Jan 2008 06:44:33 -0800 (PST) From: ewilts@ewilts.org Subject: VMS to Nexsan storage? Message-ID: <2b8680a4-3d6a-4cb9-a51b-e5f48870f4af@i12g2000prf.googlegroups.com> Has anybody connected Nexsan fibre storage to a VMS system? Does it work? Well? We're currently using EVA-based storage but since I have a new SATABeast waiting to be installed, I was hoping I could throw some archives out on the beast. Thoughts? The SATABeast has dual fibre connections that run in an active/failover configuration (similar to the original EVAs). Thanks, .../Ed -- Ed Wilts, Mounds View, MN, USA mailto: ewilts@ewilts.org ------------------------------ Date: Fri, 18 Jan 2008 02:54:41 -0800 (PST) From: IanMiller <gxys@uk2.net> Subject: Re: Why Writers Buy Asbestos Undies Message-ID: <413c5e72-de55-4d61-8c33-9ed220530001@e6g2000prf.googlegroups.com> On Jan 17, 6:48 pm, yyyc186 <yyyc...@hughes.net> wrote: > Here is what the Kirkus reviewer had to say. I guess this explains > why there were no OpenVMS books in their review database. ... or perhaps he just does not like your style. You may find that reviewer has a particular dislike for books with personality. ------------------------------ End of INFO-VAX 2008.036 ************************