10 ' Multi File Copier For RODOS-Amsdos etc.
20 ' Designed & Written By Jason Brooks 1989
30 CALL &BC02:CALL &BBFF:BORDER 0:INK 0,0:INK 1,26:PAPER 0:PEN 1:MODE 2
40 ' Initialize A 2K Buffer & Lower Himem
50 |TAPE:OPENOUT"d":MEMORY &5FFF:CLOSEOUT:|DISC
60 ' Format Silicon Disk
70 PRINT "Formatting Silicon Disc - In The Event Of A Prompt Press Y"
80 |FORMAT,2,8
90 ' Get Source & Destination Drives:-
100 MODE 2
110 template$="AB"
120 PRINT"Rodos To Amsdos To Rodos, A - B - A  Copier Created By Jason Brooks 1989"
130 PRINT "Please Enter Source Drive A or B ?";:GOSUB 620:source$=g.key$
140 IF source$="A" THEN source=0 ELSE source=1
150 PRINT:PRINT"Please Enter Destination Drive A or B ?";:GOSUB 620
160 destination$=g.key$
170 destination=INSTR(template$,destination$)-1
180 ' Get Format Of Files - Either Rodos or Amsdos
190 PRINT:PRINT"Is The Source Files In Amsdos Format Or Rodos Format ?";
200 template$="AR"
210 GOSUB 620:type$=g.key$
220 type=INSTR(template$,type$)-1:IF type=0 THEN type.d$=type$:GOTO 250
230 PRINT:PRINT"Is The Destination Files To Be Amsdos Format Or Rodos Format ?";
240 GOSUB 620:type.d$=g.key$
250 ' Tell User To Insert Source Disk Into Appropriate Drive
260 type.d=INSTR(template$,type.d$)-1
270 MODE 2:PRINT"Insert Source Disk In Drive ";source$;" & Press Space":template$=" ":GOSUB 620:|DRIVE,@source$:zzz=FRE("")
280 MODE 2:CAT
290 ' Initialize More Variables
300 DIM file$(25,4),taged(25,4),cop$(100),cop1$(100):FOR i=1 TO 25:FOR t=1 TO 4
310 file$(i,t)=SPACE$(16):taged(i,t)=0:cop$(t*i)=SPACE$(16):cop1$(t*i)=SPACE$(16):NEXT t,i
320 pointer=1
330 ' Read Off Filenames Available For Copying
340 ON type+1 GOSUB 710,830
350 ' Display Files Available For Copying
360 MODE 2
370 ON type+1 GOSUB 960,1040
380 ' Display Instruction Messages
390 LOCATE 1,25:PRINT"  Moves Pointer T Tag File L Logs On A New Disk Q Exits Copier B Begin Transfer"
400 LOCATE 1,1
410 ' Set Up Template For Keys
420 Template$="TLQB"+CHR$(&FB)+CHR$(&F7)+CHR$(&F3)
430 ' Set Up Start Co-ordinates Of Cursor
440 x=1:y=1
450 ' Display Cursor
460 ON type+1 GOSUB 1110,1760
470 ' Get User Input
480 GOSUB 550
490 keynumber=INSTR(template$,g.key$)
500 zzz=FRE("")
510 ON keynumber GOSUB 1150,1220,1260,1320,1490,1490,1490
520 GOTO 450
530 END
540 PRINT"This Has Been Created By Jason Brooks 1989"
550 ' Get A Single Key Stroke
560 G.KEY$=""
570 WHILE INKEY$<>"":WEND
580 G.KEY$=INKEY$:IF G.KEY$="" THEN 580
590 G.key$=UPPER$(G.key$)
600 IF INSTR(template$,g.key$)=0 THEN 580
610 RETURN
620 ' Get A Single Key Stroke & Print It
630 G.KEY$=""
640 G.KEY$=INKEY$:IF G.KEY$="" THEN 640
650 G.key$=UPPER$(G.key$)
660 IF INSTR(template$,g.key$)=0 THEN 640
670 PRINT " ";g.key$;
680 RETURN
690 PRINT"This Has Been Created By Jason Brooks 1989"
700 ' Tell User To Insert Source Disc In Drive A & Await Keypress
710 ' Type=0 Therefore Source Files Are Amsdos
720 FOR row=4 TO 25:FOR column=1 TO 4
730 readit$=SPACE$(12)
740 FOR readit=1 TO 12
750 LOCATE 20*(column-1)+readit,row
760 MID$(readit$,readit,1)=COPYCHR$(#0):PRINT" ";
770 NEXT readit
780 IF column=1 AND LEFT$(readit$,1)=" " THEN row=25:column=4
790 file$(row-3,column)=readit$
800 NEXT column,row
810 RETURN
820 PRINT"This Has Been Created By Jason Brooks 1989"
830 ' Type=1 Therefore Source Files Are Rodos
840 FOR row=3 TO 25:FOR column=1 TO 4
850 readit$=SPACE$(15)
860 FOR readit=1 TO 15
870 LOCATE 20*(column-1)+readit,row
880 MID$(readit$,readit,1)=COPYCHR$(#0):PRINT" ";
890 NEXT readit
900 IF column=1 AND LEFT$(readit$,1)=" " THEN row=25:column=4
910 IF column=1 AND LEFT$(readit$,10)="Bytes free" THEN row=25:column=4:GOTO 930
920 file$(row-2,column)=readit$
930 NEXT column,row
940 RETURN
950 PRINT"This has been created by Jason Brooks 1989"
960 ' Type 0 Print Filenames Available To Copy Routine
970 FOR row=1 TO 25:FOR column=1 TO 4
980 LOCATE 16*(column-1)+2,row:PRINT file$(row,column);
990 NEXT column
1000 IF LEFT$(file$(row+1,1),1)=" " THEN row=25:column=4
1010 PRINT:NEXT row
1020 RETURN
1030 PRINT"This has been created by Jason Brooks 1989"
1040 ' Type 1 Print Filenames Available To Copy Routine
1050 FOR row=1 TO 25:FOR column=1 TO 4
1060 LOCATE 20*(column-1)+2,row:PRINT file$(row,column)
1070 NEXT column
1080 IF LEFT$(file$(row+1,1),1)=" " THEN row=25:column=4
1090 PRINT:NEXT row
1100 RETURN
1110 ' Display Cursor For 0 type
1120 LOCATE 16*(x-1)+1,y:PRINT"> <";
1130 RETURN
1140 PRINT"This has been created by Jason Brooks 1989"
1150 ' Tag A File
1160 IF taged(y,x)=1 THEN RETURN
1170 taged(y,x)=1
1180 cop$(pointer)=file$(y,x):pointer=pointer+1
1190 PRINT" #"
1200 GOTO 1490
1210 PRINT"This has been created by Jason Brooks 1989"
1220 ' Log On A New Disk
1230 zzz=FRE("")
1240 CLEAR:RUN
1250 PRINT"This has been created by Jason Brooks 1989"
1260 ' Quiticus Gamus
1270 MODE 1:PRINT"Thank You For Your Co-Operation."
1280 PRINT"Signed,"
1290 PRINT"ROBO-COP"
1300 zzz=FRE(""):CLEAR:END
1310 PRINT"This has been created by Jason Brooks 1989"
1320 ' Begin Transfer
1330 ' But First Confirmation Of Transfers
1340 IF pointer=1 THEN RETURN
1350 MODE 1:template$="YN"
1360 IF type$="R" AND type.d$="A" THEN GOSUB 1560 ELSE GOSUB 1730
1370 MODE 2:PRINT"Confirmation Of Files To Copy."
1380 PRINT"=============================="
1390 PRINT"Source Filename         Destination Filename    Copy ? "
1400 PRINT"===============         ====================    ======"
1410 WINDOW 1,80,6,25:CLS
1420 ZONE 24
1430 FOR confirm=1 TO pointer-1:PRINT cop$(confirm),cop1$(confirm),;:GOSUB 550
1440 IF g.key$="N" THEN PRINT"NO":cop$(confirm)=SPACE$(16):GOTO 1460
1450 PRINT"YES"
1460 NEXT confirm
1470 GOTO 1790
1480 PRINT"This has been created by Jason Brooks 1989"
1490 ' Move To Next File
1500 IF type=0 THEN LOCATE 16*(x-1)+1,y:PRINT"   ";:ELSE LOCATE 20*(x-1)+1,y:PRINT"   ";
1510 x=x+1:IF x=5 THEN x=1:y=y+1:IF y=24 THEN y=1
1520 IF LEFT$(file$(y,1),1)=" " THEN y=1
1530 IF LEFT$(file$(y,x),1)=" " THEN 1510
1540 RETURN
1550 ' If Source & Destinations Drives The Same Then This Routine Applies.
1560 ' Confirmation Of RODOS To AMSDOS
1570 template$="YN"
1580 FOR confirm=1 TO pointer-1
1590 ext$=RIGHT$(cop$(confirm),3):filnam$="        ":check=1
1600 WHILE check<>9 AND MID$(cop$(confirm),check,1)<>" "
1610 MID$(filnam$,check,1)=MID$(cop$(confirm),check,1)
1620 check=check+1
1630 WEND
1640 PRINT" Rodos Filename: ";cop$(confirm)
1650 PRINT"Amsdos Filename: ";filnam$;".";ext$
1660 PRINT"Agree ? ";:GOSUB 550
1670 IF g.key$="Y" THEN PRINT"YES":cop1$(confirm)=filnam$+"."+ext$
1680 IF g.key$="N" THEN PRINT:INPUT"Destination Filename ? ",de$:cop1$(confirm)=de$
1690 CLS
1700 NEXT
1710 RETURN
1720 PRINT"This has been created by Jason Brooks 1989"
1730 'Copy Source Filenames To Destination Filenames.
1740 FOR i=1 TO pointer-1:cop1$(i)=cop$(i):NEXT:RETURN
1750 PRINT"This has been created by Jason Brooks 1989"
1760 ' Display Cursor For 1 type
1770 LOCATE 20*(x-1)+1,y:PRINT"> <";
1780 RETURN
1790 'Now We Can Start The Transfer.
1800 'At Last.
1810 template$=" "
1820 IF source$=destination$ THEN 1970
1830 start=1
1840 PRINT" Insert Destination Disk In Drive ";destination$;" & Press Space.":GOSUB 550
1850 |OPT,1,255
1860 IF LEFT$(cop$(start),1)=" " THEN 1900
1870 this$=source$+":"+cop$(start)
1880 this2$=destination$+":"+cop1$(start)
1890 |COPY,@this2$,@this$
1900 start=start+1:IF start<>pointer THEN 1860
1910 PRINT" Copying Complete."
1920 |DRIVE,@destination$
1930 |OPT,1,0
1940 CAT
1950 zzz=FRE(""):CLEAR:END
1960 PRINT"This has been created by Jason Brooks 1989"
1970 ' Transfer Files Routine For When The Source & Destination Files Are
1980 ' The Same.
1990 |OPT,1,255
2000 CLS:PRINT"Insert Source Disk In To Drive ";source$;" & Press Space.":GOSUB 550
2010 start=1
2020 FOR i=1 TO pointer-1
2030 CLS:zzz=FRE("")
2040 IF LEFT$(cop$(i),1)=" " THEN 2100
2050 this$=source$+":"+cop$(i)
2060 this2$="C:"+cop1$(i)
2070 |COPY,@this2$,this$
2080 LOCATE 1,3:df$=COPYCHR$(#0)
2090 IF df$="D" THEN GOSUB 2170
2100 NEXT
2110 GOSUB 2170
2120 PRINT" O.k. That's All Folks"
2130 |DRIVE,@destination$
2140 CAT
2150 END
2160 PRINT"This has been created by Jason Brooks 1989"
2170 'Transfer All Files From Silicon Disk To Destination Drive.
2180 PRINT" Insert Destination Disk In Drive ";destination$;" & Press Space.":template$=" ":GOSUB 550
2190 this3$=destination$+":"
2200 |COPY,@this3$,"c:*"
2210 PRINT" Insert Source Disk In To Drive ";source$;" & Press Space.":GOSUB 550
2220 |ERA,"c:*.*"
2230 RETURN