1. Hilfsprogramme für den Daten-Transfer

 

MAKEDISK

 

MAKEDISK ist ein BASIC-Programm, das auch als vollständiges Listing vorliegt. Mit MAKEDISK kann eine D64-Datei wie z.B. der Download beispiele.d64 auf eine Original-C64-Diskette übertragen werden. Voraussetzung für MAKEDISK ist die SD2IEC-Steckkarte für den C64, sowie eine Floppy mindestens der Version 1541-I. Am besten ist es, die SD2IEC-Steckkarte auf Laufwerk-Nummer 9 und die 1541 auf die Laufwerknummer 8 einzustellen. Manchmal ist dies bei sehr alten 1541-Floppys der ersten Stunde auch die einzige Option, zumindest ohne tiefgreifende Elektrotechnik-Kenntnisse und Lötpraxis. MAKEDISK ist ein lauffähiges C64-Programm und kann direkt nach dem Download in das Stammverzeichnis einer Mikro-SD-Karte kopiert werden. Diese Mikro-SD-Karte wird anschließend in den entsprechenden Slot der SD2IEC-Platine eingesteckt. MAKEDISK wird anschließend ganz normal mit LOAD geladen und anschließend mit RUN ausgeführt.

 

MAKED64

 

MAKED64 ist ein BASIC-Programm, das auch als vollständiges Listing vorliegt. Mit MAKED64 kann eine D64-Datei aus einer Original-C64-Diskette erzeugt werden, um diese z.B. in einem C64-Emulator zu verwenden. Voraussetzung für MAKED64 ist die SD2IEC-Steckkarte für den C64, sowie eine Floppy mindestens der Version 1541-I. Am besten ist es, die SD2IEC-Steckkarte auf Laufwerk-Nummer 9 und die 1541 auf die Laufwerknummer 8 einzustellen. Manchmal ist dies bei sehr alten 1541-Floppys der ersten Stunde auch die einzige Option, zumindest ohne tiefgreifende Elektrotechnik-Kenntnisse und Lötpraxis. MAKED64 ist ein lauffähiges C64-Programm und kann direkt nach dem Download in das Stammverzeichnis einer Mikro-SD-Karte kopiert werden. Diese Mikro-SD-Karte wird anschließend in den entsprechenden Slot der SD2IEC-Platine eingesteckt. MAKED64 wird anschließend ganz normal mit LOAD geladen und anschließend mit RUN ausgeführt.

 

SDFCOPY

 

SDFCOPY ist ein BASIC-Programm, das auch als vollständiges Listing vorliegt. Mit SDFCOPY können einzelne Dateien von der SD-Karte in der SD2IEC-Steckkarte auf eine C64-Diskette kopiert werden. Dazu wird das Inhaltsverzeichnis des Quell-Laufwerks angezeigt. Anschließend wird abgefragt, ob Sie die angezeigte Datei kopieren wollen. Voraussetzung für SDFCOPY ist die SD2IEC-Steckkarte für den C64, sowie eine Floppy der Version 1571 (bei der 1541 kann es aufgrund von Firmware-Bugs zu Programmabstürzen kommen). Am besten ist es, die SD2IEC-Steckkarte auf Laufwerk-Nummer 9 und die 1541 auf die Laufwerknummer 8 einzustellen. Manchmal ist dies bei sehr alten 1541-Floppys der ersten Stunde auch die einzige Option, zumindest ohne tiefgreifende Elektrotechnik-Kenntnisse und Lötpraxis.

 

BASIC-Listing MAKEDISK

 

1 PRINT"[SHIFT+CLR/HOME]COPY WHICH D64 FILE";:INPUT F$

2 PRINT"SRC DRIVE NUMBER";:INPUT SD

3 PRINT"DST DRIVE NUMBER";:INPUT DD

15 POKE 53272,22:PRINT"[SHIFT+CLR/HOME]";

20 FOR I=49152 TO 49201:READ A:POKE I,A:NEXT I

25 FOR I=49300 TO 49349:READ A:POKE I,A:NEXT I

30 OPEN 3,SD,2,F$:T=1

40 READ I:IF I=0 THEN GOTO 70

45 FOR S=0 TO I

46 PRINT"[SHIFT+CLR/HOME]TRACK";T;"SECTOR";S

50 POKE 780,3:POKE 781,80:POKE 782,4:SYS 49152

55 GOSUB 1000

60 NEXT S

65 T=T+1:GOTO 40

70 CLOSE 1

80 POKE 781,0:SYS 65478

90 POKE 781,0:SYS 65481

100 PRINT"[SHIFT+CLR/HOME]THE DISK-IMAGE WAS WRITTEN":POKE 53272,21

110 END

1000 REM *** BLOCK WRITE ***

1010 OPEN 2,DD,2,"#"

1020 OPEN 1,DD,15

1030 PRINT#1,"B-P 2 0 0"

1040 POKE 780,2:POKE 781,80:POKE 782,4:SYS 49300

1050 PRINT#1,"U2 2 0 ";T;S

1060 CLOSE 1:CLOSE 2

1070 RETURN

10000 REM *** BLOCKLOAD ***

10010 DATA 141,232,3,8,72,165,248,72,165,249,72,134,248,132,249,138,72

10020 DATA 152,72,174,232,3,32,198,255,160,0,32,228,255,145,248,200,192

10030 DATA 0,208,246,104,168,104,170,104,133,249,104,133,248,104,40,96

11000 REM *** BLOCKSAVE ***

11010 DATA 141,232,3,8,72,165,248,72,165,249,72,134,248,132,249,138,72

11020 DATA 152,72,174,232,3,32,201,255,160,0,177,248,32,210,255,200,192

11030 DATA 0,208,246,104,168,104,170,104,133,249,104,133,248,104,40,96

20000 REM *** BLOCKDATA ***

20010 DATA 20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20

20020 DATA 18,18,18,18,18,18,18

20030 DATA 17,17,17,17,17,17

20040 DATA 16,16,16,16,16,0

 

BASIC-Listing MAKED64

 

10 PRINT"[SHIFT+CLR/HOME]CREATE WHICH D64 FILE";:INPUT F$

20 PRINT"SRC DRIVE NUMBER";:INPUT SD

30 PRINT"DST DRIVE NUMBER";:INPUT DD

40 FOR I=49152 TO 49201:READ A:POKE I,A:NEXT I

50 FOR I=49300 TO 49349:READ A:POKE I,A:NEXT I

51 OPEN 15,DD,15,"S:"+F$:CLOSE 15

52 OPEN 3,DD,1,F$

60 T=1:S=0:POKE 53272,22:TI$="000000"

70 READ I:IF I=0 THEN GOTO 130

80 FOR S=0 TO I

90 PRINT"[SHIFT+CLR/HOME]TRACK";T;"SECTOR";S;"TIME ";

95 PRINT LEFT$(TI$,2)+":"+MID$(TI$,3,2)+":"+RIGHT$(TI$,2)

100 GOSUB 1000

110 NEXT S

120 T=T+1:GOTO 70

130 CLOSE 3

140 POKE 781,0:SYS 65478:POKE 781,0:SYS 65481

150 POKE 53272,21

160 PRINT"[SHIFT+CLR/HOME]D64 IMAGE WAS WRITTEN."

170 PRINT"TIME TAKEN:";

180 PRINT LEFT$(TI$,2)+":"+MID$(TI$,3,2)+":"+RIGHT$(TI$,2)

190 END

1000 REM *** BLOCK COPY ***

1010 OPEN 2,SD,2,"#"

1020 OPEN 1,SD,15

1030 PRINT#1,"B-P 2 0 0"

1040 PRINT#1,"U1 2 0 ";T;S

1050 POKE 780,2:POKE 781,80:POKE 782,4:SYS 49152

1055 POKE 781,0:SYS 65478:POKE 781,0:SYS 65481

1060 CLOSE 1:CLOSE 2

1070 POKE 780,3:POKE 781,80:POKE 782,4:SYS 49300

1075 POKE 781,0:SYS 65478:POKE 781,0:SYS 65481

1080 RETURN

10000 REM *** BLOCKLOAD ***

10010 DATA 141,232,3,8,72,165,248,72,165,249,72,134,248,132,249,138,72

10020 DATA 152,72,174,232,3,32,198,255,160,0,32,228,255,145,248,200,192

10030 DATA 0,208,246,104,168,104,170,104,133,249,104,133,248,104,40,96

11000 REM *** BLOCKSAVE ***

11010 DATA 141,232,3,8,72,165,248,72,165,249,72,134,248,132,249,138,72

11020 DATA 152,72,174,232,3,32,201,255,160,0,177,248,32,210,255,200,192

11030 DATA 0,208,246,104,168,104,170,104,133,249,104,133,248,104,40,96

20000 REM *** BLOCKDATA ***

20010 DATA 20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20

20020 DATA 18,18,18,18,18,18,18

20030 DATA 17,17,17,17,17,17

20040 DATA 16,16,16,16,16,0

 

BASIC-Listing SDFCOPY

 

10 PRINT"[SHIFT+CLR/HOME]";:M=0:FP=130:AD=32768

20 FOR I=49152 TO 49249:READ A:POKE I,A:NEXT I

25 GOSUB 3000

30 OPEN 1,SD,2,"$":OPEN 15,SD,15

40 POKE 781,0:POKE 782,128:POKE 1000,1:POKE 1001,254:SYS 49152:GOSUB 50000

41 POKE 781,0:POKE 782,128:POKE 1000,1:POKE 1001,254:SYS 49152:GOSUB 50000

50 IF (FP AND 128)=0 THEN GOTO 100

60 GOSUB 1000

70 PRINT"COPY FILE (Y/N)"

80 GET A$:IF A$="" THEN 80

85 IF A$="Y" THEN GOSUB 4000

90 GOTO 50

100 CLOSE 1:CLOSE 15

110 GOSUB 50000

120 END

1000 REM *** GET NEXT FILE ***

1010 F$="":ZZ=0

1020 TT=AD:FP=PEEK(AD)

1025 IF (FP AND 128)=0 THEN RETURN

1030 AD=AD+3

1040 IF PEEK(AD)=160 OR ZZ=16 THEN GOTO 1065

1050 PRINT CHR$(PEEK(AD));:F$=F$+CHR$(PEEK(AD))

1060 AD=AD+1:ZZ=ZZ+1:GOTO 1040

1065 J=AD-TT

1066 FOR K=J TO 30:PRINT" ";:NEXT K

1070 AD=TT:LO=PEEK(AD+28):HI=PEEK(AD+29)

1080 FL=256*HI+LO

1090 PRINT FL

1100 AD=TT+32:M=M+1

1110 IF M=8 THEN M=0:AD=32768:GOSUB 2000

1120 RETURN

2000 REM *** NEXT FILE BLOCK ***

2010 POKE 781,0:POKE 782,128:POKE 1000,1:POKE 1001,254:SYS 49152:GOSUB 50000

2020 RETURN

3000 REM *** GET USER DATA ***

3010 PRINT"SOURCE DRIVE";:INPUT SD

3020 PRINT"DESTINATION DRIVE";:INPUT DD

3030 PRINT"[SHIFT+CLR/HOME]";

3040 RETURN

4000 REM *** COPY FILE ***

4010 OPEN 5,DD,15,"S:"+F$:CLOSE 5

4020 OPEN 6,SD,2,F$

4030 OPEN 7,DD,1,F$

4040 FOR Y=1 TO FL

4050 POKE 781,0:POKE 782,64:POKE 1000,6:POKE 1001,254:SYS 49152:GOSUB 50000

4060 POKE 781,0:POKE 782,64:POKE 1000,7:POKE 1001,254:SYS 49200:GOSUB 50000

4070 NEXT Y

4080 CLOSE 6:CLOSE 7:RETURN

10010 DATA 120,8,72,165,248,72,165,249,72,134,248,132,249,138,72,152,72,174

10020 DATA 232,3,32,198,255,160,0,32,228,255,145,248,200,204,233,3,208

10030 DATA 245,104,168,104,170,104,133,249,104,133,248,104,40,96,120,8,72

10040 DATA 165,248,72,165,249,72,134,248,132,249,138,72,152,72,174,232

10050 DATA 3,32,201,255,160,0,177,248,32,210,255,200,204,233,3,208,245

10060 DATA 104,168,104,170,104,133,249,104,133,248,104,40,96

50000 REM *** RESET ALL CHANNELS ***

50010 POKE 781,0:SYS 65478

50020 POKE 781,0:SYS 65481

50030 RETURN