home *** CD-ROM | disk | FTP | other *** search
Text File | 1989-07-03 | 3.6 KB | 99 lines | [TEXT/WORD] |
-
- 5 REM BLOCK COPY PROGRAM (C) 1984 BY G S HELLER 07/23/84 VER 1.1
- 6 REM PORTIONS OF THIS PROGRAM WERE EXTRACTED FROM:
- 10 REM ***** DskZap.BAS Macintosh Disk Zap Program *****
- 20 REM (c)1984 by Gary Boudreaux 07/10/84 v1.00
- 30 REM Permission granted for personal, non-commercial use,
- 40 REM provided that this notice is included intact.
- 50 REM
- 60 REM Significant portions of the above program were extracted from:
- 70 REM DskDmp.BAS Quick & Dirty Macintosh Disk Dump
- 80 REM (c)1984 by R. H. Nicholson 04/20/84 v.02
- 90 REM
- 100 S$="":E$="":S=0:E=0:I=0:LP=1:LINE1=0:BLK=-1
- 104 HEX=0:DEC=0:X=0:HX$="":X9=0:I9=0:X8=0:X7=127:HEXX$=""
- 108 CMD$="":PAR$=""
- 112 DIM CDSK%(47),DBUF%(256)
- 116 HEXX$="0123456789ABCDEF"
- 120 CALL TEXTFONT(4):CALL TEXTSIZE(12):CALL TEXTFACE(1)
- 130 WIDTH 70
- 140 CLS
- 145 PRINT " BLOCKSMITH - (c) 1984 G S HELLER"
- 146 CALL TEXTSIZE(9)
- 150 PRINT:PRINT " A MACINTOSH BLOCK COPY UTILITY ( V1.1 7/23/84)"
- 151 PRINT
- 152 PRINT " This utility copies Blocks (500 Bytes) from the internal drive to
- the external drive."
- 153 PRINT
- 154 PRINT"1. Eject Blocksmith disk from Internal drive using CMD SHIFT 1."
- 156 PRINT"2. Insert write protected disk to be copied in internal drive."
- 158 PRINT"3. Insert initialized disk in external drive."
- 160 GOSUB 300 : REM print command menu
- 170 GOSUB 600 : REM init code array
- 180 GOTO 1000
- 220 REM ********** x to hx$ **********
- 222 HX$="":X9=X
- 224 X8=X9:X9=INT(X9/16):X8=X8 -16*X9
- 226 HX$=MID$(HEXX$,X8+1,1)+HX$:IF(X9<>0) AND LEN(HX$)<8 THEN 224
- 228 IF LEN(HX$)<4 THEN HX$="0"+HX$:GOTO 228
- 230 RETURN
- 300 REM ********** print command menu **********
- 305 PRINT
- 310 PRINT
- 350 PRINT" Type C <RET> to begin copy
- 360 PRINT
- 390 RETURN
- 500 REM ********** read block from disk **********
- 502 IF PAR$="" THEN BEEP : RETURN
- 504 CDSK%(8)=&HA002: CDSK%(19)=&HA002
- 506 DEC=VAL(PAR$) : BLK=DEC : DEC=DEC*512
- 508 GOTO 520
- 510 REM ********** write buffer back to disk **********
- 512 IF BLK=-1 THEN BEEP : RETURN
- 514 CDSK%(8)=&HA003: CDSK%(19)=&HA003: DEC=BLK*512
- 520 REM ***** common section for disk read and write *****
- 522 CDSK%(16+23)=INT(DEC/65536!)
- 524 X=DEC-65536!*INT(DEC/65536!) : IF X >= 32768! THEN X=X-65536!
- 526 CDSK%(16+24)=X
- 530 PTR=VARPTR(DBUF%(0))
- 532 CDSK%(16+16)=INT(PTR/65536!)
- 534 X=PTR-65536!*INT(PTR/65536!) : IF X >= 32768! THEN X=X-65536!
- 536 CDSK%(16+17)=X
- 540 IF CDSK%(0)<>&H41FA THEN STOP
- 550 X=VARPTR(CDSK%(0)): CALL X
- 560 X=CDSK%(15):IF X<>0 THEN GOSUB 220:BEEP:PRINT "Return code = ";HX$
- 570 RETURN
- 600 REM ********** load code array **********
- 604 I=0
- 608 RESTORE 650
- 610 READ X : IF X<>-1 THEN CDSK%(I)=X : I=I+1 : GOTO 610
- 620 RETURN
- 650 DATA &h41FA,&h001E,&h2278,&h011C
- 655 DATA &h2269,&h0010,&h2251,&h4280,&hA002
- 660 DATA &h41FA,&h000A,&h3080,&h4E75,&h7268,&h6e00,0
- 665 DATA &h0000,&h0000,&h0005,&hA002
- 670 DATA &h0000,&h0000,&h0000,&h0000
- 675 DATA &h0001,&h0000,&h0000,&h0001
- 680 DATA &hFFFB,&h0008,&h0001,&hFF02
- 685 DATA &h0001,&h3000,&h0000,&h0200
- 690 DATA &h0000,&h0000,&h0001,&h0000,&h0000
- 695 DATA -1
- 1000 REM ********** get command character and parameter **********
- 1002 PRINT : INPUT ">",CMD$ : IF CMD$="" THEN GOTO 1000
- 1004 PAR$=RIGHT$(CMD$,LEN(CMD$)-1)
- 1006 CMD$=LEFT$(CMD$,1)
- 1008 IF CMD$>="a" THEN CMD$=CHR$(ASC(CMD$)-32)
- 1065 IF CMD$ = "C" THEN GOSUB 1072:GOTO 1000
- 1072 CALL MOVETO(250,175)
- 1073 PRINT"Now copying Block #"
- 1075 FOR Z=0 TO 799
- 1077 PAR$ = STR$(Z)
- 1078 CALL MOVETO(250,200):PRINT Z
- 1079 CDSK%(27)=&H1:GOSUB 500
- 1080 CDSK%(27)=&H2:GOSUB 510:NEXT Z
- 1085 CALL MOVETO(175,190)
- 1090 PRINT"DONE":BEEP:BEEP
- 1100 END
-
- -------