home *** CD-ROM | disk | FTP | other *** search
/ Carousel Volume 2 #1 / carousel.iso / mactosh / code / bas_bloc.sit / BAS-BLOCKCOPYL / BAS-BLOCKCOPYL
Encoding:
Text File  |  1989-07-03  |  3.6 KB  |  99 lines  |  [TEXT/WORD]

  1.  
  2. 5  REM  BLOCK COPY PROGRAM   (C) 1984 BY G S HELLER   07/23/84  VER 1.1
  3. 6  REM   PORTIONS OF THIS PROGRAM WERE EXTRACTED FROM:
  4. 10 REM *****  DskZap.BAS     Macintosh Disk Zap Program  *****
  5. 20 REM         (c)1984 by Gary Boudreaux          07/10/84      v1.00
  6. 30 REM         Permission granted for personal, non-commercial use,
  7. 40 REM          provided that this notice is included intact.
  8. 50 REM
  9. 60 REM     Significant portions of the above program were extracted from:
  10. 70 REM     DskDmp.BAS   Quick & Dirty  Macintosh Disk Dump
  11. 80 REM      (c)1984 by R. H. Nicholson          04/20/84      v.02
  12. 90 REM
  13. 100 S$="":E$="":S=0:E=0:I=0:LP=1:LINE1=0:BLK=-1
  14. 104 HEX=0:DEC=0:X=0:HX$="":X9=0:I9=0:X8=0:X7=127:HEXX$=""
  15. 108 CMD$="":PAR$=""
  16. 112 DIM CDSK%(47),DBUF%(256)
  17. 116 HEXX$="0123456789ABCDEF"
  18. 120 CALL TEXTFONT(4):CALL TEXTSIZE(12):CALL TEXTFACE(1)
  19. 130 WIDTH 70
  20. 140 CLS
  21. 145 PRINT "               BLOCKSMITH - (c) 1984  G S HELLER"
  22. 146 CALL TEXTSIZE(9)
  23. 150 PRINT:PRINT "           A MACINTOSH BLOCK COPY UTILITY  ( V1.1  7/23/84)"
  24. 151 PRINT
  25. 152 PRINT " This utility copies Blocks (500 Bytes) from the internal drive to
  26. the external drive."
  27. 153 PRINT
  28. 154 PRINT"1.  Eject Blocksmith disk from Internal drive using  CMD SHIFT 1."
  29. 156 PRINT"2.  Insert  write protected disk to be copied in internal drive."
  30. 158 PRINT"3.  Insert initialized disk in external drive."
  31. 160 GOSUB 300 : REM print command menu
  32. 170 GOSUB 600 : REM init code array
  33. 180 GOTO 1000
  34. 220 REM ********** x to hx$ **********
  35. 222 HX$="":X9=X
  36. 224 X8=X9:X9=INT(X9/16):X8=X8 -16*X9
  37. 226 HX$=MID$(HEXX$,X8+1,1)+HX$:IF(X9<>0) AND LEN(HX$)<8 THEN 224
  38. 228 IF LEN(HX$)<4 THEN HX$="0"+HX$:GOTO 228
  39. 230 RETURN
  40. 300 REM ********** print command menu **********
  41. 305 PRINT
  42. 310 PRINT
  43. 350 PRINT" Type C  <RET> to begin copy
  44. 360 PRINT
  45. 390 RETURN
  46. 500 REM ********** read block from disk **********
  47. 502 IF PAR$="" THEN BEEP : RETURN
  48. 504 CDSK%(8)=&HA002: CDSK%(19)=&HA002
  49. 506 DEC=VAL(PAR$) : BLK=DEC : DEC=DEC*512
  50. 508 GOTO 520
  51. 510 REM ********** write buffer back to disk **********
  52. 512 IF BLK=-1 THEN BEEP : RETURN
  53. 514 CDSK%(8)=&HA003: CDSK%(19)=&HA003: DEC=BLK*512
  54. 520 REM ***** common section for disk read and write *****
  55. 522 CDSK%(16+23)=INT(DEC/65536!)
  56. 524 X=DEC-65536!*INT(DEC/65536!) : IF X >= 32768! THEN X=X-65536!
  57. 526 CDSK%(16+24)=X
  58. 530 PTR=VARPTR(DBUF%(0))
  59. 532 CDSK%(16+16)=INT(PTR/65536!)
  60. 534 X=PTR-65536!*INT(PTR/65536!) : IF X >= 32768! THEN X=X-65536!
  61. 536 CDSK%(16+17)=X
  62. 540 IF CDSK%(0)<>&H41FA THEN STOP
  63. 550 X=VARPTR(CDSK%(0)): CALL X
  64. 560 X=CDSK%(15):IF X<>0 THEN GOSUB 220:BEEP:PRINT "Return code = ";HX$
  65. 570 RETURN
  66. 600 REM ********** load code array **********
  67. 604 I=0
  68. 608 RESTORE 650
  69. 610 READ X : IF X<>-1 THEN CDSK%(I)=X : I=I+1 : GOTO 610
  70. 620 RETURN
  71. 650 DATA &h41FA,&h001E,&h2278,&h011C
  72. 655 DATA &h2269,&h0010,&h2251,&h4280,&hA002
  73. 660 DATA &h41FA,&h000A,&h3080,&h4E75,&h7268,&h6e00,0
  74. 665 DATA &h0000,&h0000,&h0005,&hA002
  75. 670 DATA &h0000,&h0000,&h0000,&h0000
  76. 675 DATA &h0001,&h0000,&h0000,&h0001
  77. 680 DATA &hFFFB,&h0008,&h0001,&hFF02
  78. 685 DATA &h0001,&h3000,&h0000,&h0200
  79. 690 DATA &h0000,&h0000,&h0001,&h0000,&h0000
  80. 695 DATA -1
  81. 1000 REM ********** get command character and parameter **********
  82. 1002 PRINT : INPUT ">",CMD$ : IF CMD$="" THEN GOTO 1000
  83. 1004 PAR$=RIGHT$(CMD$,LEN(CMD$)-1)
  84. 1006 CMD$=LEFT$(CMD$,1)
  85. 1008 IF CMD$>="a" THEN CMD$=CHR$(ASC(CMD$)-32)
  86. 1065 IF CMD$ =  "C" THEN GOSUB 1072:GOTO 1000
  87. 1072 CALL MOVETO(250,175)
  88. 1073 PRINT"Now copying Block #"
  89. 1075 FOR Z=0 TO 799
  90. 1077 PAR$ = STR$(Z)
  91. 1078 CALL MOVETO(250,200):PRINT Z
  92. 1079 CDSK%(27)=&H1:GOSUB 500
  93. 1080 CDSK%(27)=&H2:GOSUB 510:NEXT Z
  94. 1085 CALL MOVETO(175,190)
  95. 1090 PRINT"DONE":BEEP:BEEP
  96. 1100 END
  97.  
  98. -------
  99.