home *** CD-ROM | disk | FTP | other *** search
/ 8bitfiles.net/archives / archives.tar / archives / genie-commodore-file-library / C64-128Toolkit / MSD-DU07.ARC / SD.BACKUP.C64 (.txt) < prev    next >
Encoding:
Commodore BASIC  |  2019-04-13  |  3.0 KB  |  94 lines

  1. 1 GOTO72
  2. 2 POKE2,PEEK(56):POKE56,PEEK(46)+10:CLR:F=PEEK(56):I=1:OF=0:BO=4:FB=1
  3. 3 SD=PEEK(916):H=I:N=255:IFPEEK(2)<>160THENN=PEEK(2)
  4. 4 N=N-F-I:D=F*256:M=828:DIMB%(35,20)
  5. 5 PRINT"[147]"N"BUFFERS AVAILABLE":OPEN1,8,15:D$="S":GOSUB61:F$=H$
  6. 6 IFA$+B$<>"2A"THENPRINT"CAN'T COPY THIS DISK[146]":GOTO68
  7. 7 GOSUB48:T=J:S=.:Z=I:V=T:Q=S
  8. 8 GOSUB35:PRINT"READING BUFFER #";
  9. 9 IFB%(V-OF,Q)=.THENGOSUB36:Z=Z+I:IFZ>NTHEN12
  10. 10 Q=Q+I:IFQ>20THENQ=.:V=V+I
  11. 11 IFV<=LTHEN9
  12. 12 PRINT"":CLOSE3
  13. 13 D$="D":GOSUB61:IFH$<>C$THENGOTO13
  14. 14 GOSUB35:PRINT"WRITING BUFFER #";:Z=I:V=T:Q=S
  15. 15 IFB%(V-OF,Q)=.THENGOSUB41:Z=Z+I:IFZ>NTHEN18
  16. 16 Q=Q+I:IFQ>20THENQ=.:V=V+I
  17. 17 IFV<=LTHEN15
  18. 18 PRINT"":CLOSE3:S=Q+I:IFS>20THENS=.:V=V+I
  19. 19 T=V:IFNOT(T>L)THEN24
  20. 20 IFSD<>2THEN26
  21. 21 CLOSE1:OPEN1,8,15:SD=3:PRINT"[147]SIDE 2...":OF=35:BO=0:FB=0
  22. 22 D$="S":GOSUB61:IFH$<>F$THEN22
  23. 23 GOTO7
  24. 24 D$="S":GOSUB61:IFH$<>F$THEN24
  25. 25 Z=I:V=T:Q=S:GOTO8
  26. 26 CLOSE1:PRINT"BACKUP DONE":GOTO68
  27. 27 INPUT"HAS OUTPUT DISK BEEN FORMATTED ? N[157][157][157]";A$:IFA$="Y"THEN33
  28. 28 IFA$<>"N"THENPRINT"[145][145][145]":GOTO27
  29. 29 INPUT"ENTER DISK NAME: ?  [157][157][157]";A$:X=LEN(A$):IFX<IORX>16THEN29
  30. 30 INPUT"ENTER UNIQUE DISK-ID: ?  [157][157][157]";C$:IFC$=F$ORLEN(C$)<>2THEN30
  31. 31 PRINT#1,"N0:"+A$+","+C$:GOSUB60:IFETHEN67
  32. 32 H=.:RETURN
  33. 33 GOSUB65:C$=H$:IFC$<>F$THEN32
  34. 34 PRINT:PRINTG$" DISK-ID NOT UNIQUE":GOTO29
  35. 35 PRINT#1,"I0":OPEN3,8,3,"#":RETURN
  36. 36 C=.
  37. 37 PRINT#1,"U1";3;0;V;Q:GOSUB60:IFNOTETHEN39
  38. 38 C=C+I:IFC<3GOTO37
  39. 39 PRINT#1,"B-P";3;0:GOSUB46:SYSM:GOSUB47:W=ST:IFW=.ORW=64THENRETURN
  40. 40 GOSUB59:GOTO67
  41. 41 C=.:PRINT#1,"B-A";0;V;Q:PRINT#1,"B-P";3;0
  42. 42 GOSUB46:SYSM+3:GOSUB47:W=ST:IFW>.ANDW<>64THEN67
  43. 43 PRINT#1,"U2";3;0;V;Q:GOSUB60:IFNOTETHENRETURN
  44. 44 C=C+I:IFC<3THEN43
  45. 45 GOTO40
  46. 46 PRINTRIGHT$(" "+STR$(Z),3)"[157][157][157]";:P=PEEK(3):R=PEEK(4):POKE4,F+Z:RETURN
  47. 47 POKE3,P:POKE4,R:RETURN
  48. 48 J=I+OF:L=.:U=.:B=BO+FB:Z=.:V=18+OF:Q=.:GOSUB35:GOSUB37
  49. 49 S=.:K=INT((B-BO)/(3+FB))+I+OF:PRINT"*"K"[145]":G=21:IFK>17+OFTHENG=19
  50. 50 IFK>24+OFTHENG=18
  51. 51 Y=0:IFK>30+OFTHENG=17
  52. 52 A=PEEK(D+B):FORX=.TO7:YY=2^XANDA:B%(K-OF,S)=YY:IFYY=0THENY=Y+I
  53. 53 S=S+I:IFS<GTHENNEXT:B=B+I:GOTO52
  54. 54 B=B+I+FB:IFG<21THENFORX=GTO20:B%(K-OF,X)=-I:NEXT
  55. 55 U=U+Y:IFY=.ANDJ=KTHENJ=J+I:GOTO57
  56. 56 IFYTHENL=K
  57. 57 IFB<(139-OF+BO)THEN49
  58. 58 CLOSE3:PRINT"FIRST TRACK ="J" LAST TRACK ="L
  59. 59 PRINT"BLOCKS TO COPY: "U:RETURN
  60. 60 INPUT#1,E$,M$,T$,S$:E=VAL(E$):E$=E$+" "+M$+" "+T$+" "+S$:RETURN
  61. 61 G$="SOURCE":IFD$="D"THENG$="OUTPUT"
  62. 62 PRINT"INSERT "G$" DISK, PRESS SPACE[146]"
  63. 63 GETA$:IFA$<>" "THEN63
  64. 64 IFHANDD$="D"THENGOSUB27
  65. 65 OPEN2,8,0,"$0":GOSUB60:IFETHEN67
  66. 66 FORX=ITO14:GET#2,A$,B$:NEXTX:H$=A$+B$:GET#2,A$,A$,B$:CLOSE2:RETURN
  67. 67 PRINT"ERROR: ST="W;E$
  68. 68 INPUT"BACKUP ANOTHER (Y/N)N[157][157][157]";Y$
  69. 69 IFY$="Y"THENPOKE56,PEEK(2):CLR:RUN
  70. 70 IFY$<>"N"THENPRINT"[145][145][145]":GOTO68
  71. 71 POKE56,PEEK(2):CLR:END
  72. 72 IFPEEK(46)=16THEN2
  73. 73 PRINT"[147]        C=64 SINGLE-DRIVE BACKUP"
  74. 74 PRINT" (TO BACKUP 2 SIDES YOU MUST HAVE"
  75. 75 PRINT"  A 1571 DISK DRIVE AND MEDIA.)":PRINT"[145][145][145][145][145]"
  76. 76 INPUT" BACKUP 1 OR 2 SIDES1[157][157][157]";SD$
  77. 77 IFSD$<>"1"ANDSD$<>"2"THENPRINT"[145][145][145][145]":GOTO76
  78. 78 X=VAL(SD$):POKE916,X:IFX<>2THEN82
  79. 79 OPEN1,8,15,"U0>M1":OPEN2,8,2,"#":PRINT#1,"U1:"2;0;53;0:INPUT#1,A,B$,C,D
  80. 80 CLOSE2:CLOSE1:IFA=0THEN82
  81. 81 PRINT" USE A 1571 DRIVE TO BACKUP 2 SIDES.":GOTO74
  82. 82 PRINT""
  83. 83 PRINT" DO NOT TRY TO SAVE A COPY OF THIS":PRINT" PROGRAM AFTER RUNNING IT!"
  84. 84 PRINT" <<PRESS ANY KEY TO CONTINUE>>"
  85. 85 GETA$:IFA$=""THEN85
  86. 86 FORX=828TO915:READN:POKEX,N:NEXT
  87. 87 POKE45,140:POKE46,16:POKE55,0:POKE4239,0:POKE4240,0:GOTO2
  88. 88 DATA76,66,3,76,97,3,162,3,32,198,255,160,0,132,3,32,207,255,32,138,3
  89. 89 DATA145,3,32,128,3,165,144,208,3,200,208
  90. 90 DATA238,32,204,255,96,162,3,32,201,255,160,0,132
  91. 91 DATA3,32,138,3,177,3,32,128,3,32
  92. 92 DATA210,255,165,144,208,3,200,208,238,32,204,255
  93. 93 DATA96,72,165,1,9,3,133,1,88,104,96,72,120,165,1,41,252,133,1,104,96
  94.