Fehler bei Übertragung von Datasette auf PC mit mtap

Es gibt 20 Antworten in diesem Thema, welches 3.485 mal aufgerufen wurde. Der letzte Beitrag (20. September 2009 um 13:21) ist von explodingfirst.

  • Hallo

    Versuche gerade ein paar Spiele von Datasette auf den PC zu transferieren. Ich habe dafür ein Kabel zusammengelötet anhand der Skizze vom C64S. Als Software verwende ich mtap unter DOS. Die Daten werden zwar übertragen, aber die erzeugte .tap-Datei auf dem PC ist fehlerhaft, d.h. dass wenn ich das Spiel mit VICE lade, dann bricht es beim Ladevorgang ab. Manchmal mit einer Fehlermeldung (out of Memory) und manchmal erscheint nur ein "Ready". Bei jedem Neuversuch eine TAP-Datei zu erstellen schleicht sich ein neuer Fehler ein. Aufgefallen ist mir außerdem daß die erzeugte TAP-Datei nach jeder Übertragung eine verschiedene Größe hat. Sie variiert immer um ein paar Bytes. Das Kabel ist 100% in Ordnung, habe es zig mal durchgemessen. Auf einen realen C64 funktionieren alle Spiele.

    Das habe ich schon probiert:
    Verschiedene Datasette angeschlossen
    Verschiedene Spiele ausprobiert
    Alle möglichen Parallel-Port-Einstellungen probiert (SSP, ECP...)

    Das Programm Final TAP spuckt mir beim prüfen der erzeugten TAP-Datei folgende Meldung:

    File Name : TEST.TAP

    File Size : 662466 Bytes
    File Date : September 12, 2009

    TAP Version : 1
    Playing Time : 5:10
    Unique Pulsewidths : 98


    UNRECOGNIZED (10)
    PAUSE (10)
    C64 ROM-TAPE HEADER (1)
    C64 ROM-TAPE DATA (3)
    FT Quality Checks...

    Header test : PASS - Recognition test : FAIL - Checksum test : FAIL - Read test : FAIL - Optimization test : FAIL
    General Properties...

    TAP signature check : OK
    TAP version check : OK
    TAP size check : OK
    Total data files : 4
    Total optimized data files : 0/4
    Total un-optimized data files : 4
    Total data files with checksums : 4/4
    Total checksum verified data files : 0/4
    Total failed checksums : 4
    Total read errors : 619
    Total pulses : 662446
    Total pulses accounted for : 18357
    Total pulses un-accounted for : 644089
    Bootable : NO

    Detected Files...

    LA = data Load Address.
    EA = data End Address.
    SZ = data SiZe.
    RE = number of Read Errors.
    CS = CheckSum test result.
    OP = total OPtimization test result.
    CRC32 = CRC32 of extracted data.

    000 [PAUSE] ($00014 -> $00017)
    - Length: 14857776 cycles (15.0802 secs) 001 [UNRECOGNIZED] ($00018 -> $0697F)
    - Length = 26984 pulses 002 [C64 ROM-TAPE HEADER] ($06980 -> $06AB9 -> $079B8 -> $079CD)
    LA:$033C EA:$03FA SZ:191 RE:124 CS:FAIL OP:NO CRC32:$A885EBAA
    - File ID : FIRST
    - DATA FILE type : PRG
    - DATA FILE Load address : $0801
    - DATA FILE End address : $09F6
    - DATA FILE Size (calculated) : 501 bytes
    - Name : "ROAD BLASTERS"
    - Pilot/trailer lengths (pulses) : 133/0
    - Fully optimized? : NO (3752 of 4174 pulses are imperfect)
    - Checksum expected=$E1, actual=$FFFFFFFF 003 [C64 ROM-TAPE DATA] ($079CE -> $07AD1 -> $07F13 -> $07F28)
    LA:$0801 EA:$09F5 SZ:54 RE:54 CS:FAIL OP:NO CRC32:$623C4045
    - File ID : REPEAT (Warning, Data size differs from header info!.)
    - Pilot/trailer lengths (pulses) : 79/0
    - Fully optimized? : NO (1247 of 1371 pulses are imperfect)
    - Checksum expected=$00, actual=$FFFFFFFF 004 [UNRECOGNIZED] ($07F29 -> $08A34)
    - Length = 2828 pulses 005 [PAUSE] ($08A35 -> $08A38)
    - Length: 1942024 cycles (1.9711 secs) 006 [UNRECOGNIZED] ($08A39 -> $09DC3)
    - Length = 5003 pulses 007 [C64 ROM-TAPE DATA] ($09DC4 -> $09FEB -> $0C70D -> $0C722)
    LA:$0801 EA:$09F5 SZ:500 RE:414 CS:FAIL OP:NO CRC32:$42D38693
    - File ID : FIRST (Warning, Data size differs from header info!.)
    - Pilot/trailer lengths (pulses) : 371/0
    - Fully optimized? : NO (9481 of 10591 pulses are imperfect)
    - Checksum expected=$68, actual=$FFFFFFFF 008 [C64 ROM-TAPE DATA] ($0C723 -> $0C826 -> $0CF92 -> $0CFA7)
    LA:$0801 EA:$09F5 SZ:95 RE:27 CS:FAIL OP:NO CRC32:$EFFD3236
    - File ID : REPEAT (Warning, Data size differs from header info!.)
    - Pilot/trailer lengths (pulses) : 79/0
    - Fully optimized? : NO (1975 of 2181 pulses are imperfect)
    - Checksum expected=$0E, actual=$FFFFFFFF 009 [UNRECOGNIZED] ($0CFA8 -> $0EFAA)
    - Length = 8195 pulses 010 [PAUSE] ($0EFAB -> $0EFAE)
    - Length: 1942568 cycles (1.9717 secs) 011 [UNRECOGNIZED] ($0EFAF -> $11258)
    - Length = 8874 pulses 012 [PAUSE] ($11259 -> $1125C)
    - Length: 1953648 cycles (1.9829 secs) 013 [UNRECOGNIZED] ($1125D -> $254DA)
    - Length = 82558 pulses 014 [PAUSE] ($254DB -> $254DE)
    - Length: 1954480 cycles (1.9837 secs) 015 [UNRECOGNIZED] ($254DF -> $656CF)
    - Length = 262641 pulses 016 [PAUSE] ($656D0 -> $656D3)
    - Length: 1956704 cycles (1.9860 secs) 017 [UNRECOGNIZED] ($656D4 -> $81949)
    - Length = 115318 pulses 018 [PAUSE] ($8194A -> $8194D)
    - Length: 1958648 cycles (1.9880 secs) 019 [UNRECOGNIZED] ($8194E -> $A1BB4)
    - Length = 131687 pulses 020 [PAUSE] ($A1BB5 -> $A1BB8)
    - Length: 15720296 cycles (15.9557 secs) 021 [PAUSE] ($A1BB9 -> $A1BBC)
    - Length: 387784 cycles (0.3936 secs) 022 [PAUSE] ($A1BBD -> $A1BC0)
    - Length: 5972872 cycles (6.0623 secs) 023 [UNRECOGNIZED] ($A1BC1 -> $A1BC1)
    - Length = 1 pulse [End of TAP = $A1BC1]

    Sum of all CRC32's : $9E112924


    WARNING : File 001 is unrecognised. Gap size = 26984 pulse(s).
    WARNING : File 002 failed its checksum test.
    WARNING : File 002 caused 124 read error(s) during PRG extraction.
    WARNING : File 003 failed its checksum test.
    WARNING : File 003 caused 54 read error(s) during PRG extraction.
    WARNING : File 004 is unrecognised. Gap size = 2828 pulse(s).
    WARNING : File 006 is unrecognised. Gap size = 5003 pulse(s).
    WARNING : File 007 failed its checksum test.
    WARNING : File 007 caused 414 read error(s) during PRG extraction.
    WARNING : File 008 failed its checksum test.
    WARNING : File 008 caused 27 read error(s) during PRG extraction.
    WARNING : File 009 is unrecognised. Gap size = 8195 pulse(s).
    WARNING : File 011 is unrecognised. Gap size = 8874 pulse(s).
    WARNING : File 013 is unrecognised. Gap size = 82558 pulse(s).
    WARNING : File 015 is unrecognised. Gap size = 262641 pulse(s).
    WARNING : File 017 is unrecognised. Gap size = 115318 pulse(s).
    WARNING : File 019 is unrecognised. Gap size = 131687 pulse(s).
    WARNING : File 023 is unrecognised. Gap size = 1 pulse(s).
    WARNING : TAP contains 4 unoptimized file(s).

    Pulsewidth Occurrences...

    $04 (2)
    $0F (2)
    $10 (8)
    $11 (2)
    $12 (2)
    $13 (2)
    $14 (4)
    $15 (4)
    $16 (5)
    $17 (5)
    $18 (11)
    $19 (3)
    $1A (3)
    $1B (3)
    $1C (7)
    $1D (4)
    $1E (3)
    $1F (35)
    $20 (96)
    $21 (563)
    $22 (44977)
    $23 (135044)
    $24 (54114)
    $25 (57684)
    $26 (34682)
    $27 (29821)
    $28 (6357)
    $29 (232)
    $2A (24)
    $2B (46)
    $2C (546)
    $2D (13546)
    $2E (23831)
    $2F (6738)
    $30 (852)
    $31 (57)
    $32 (13)
    $33 (3)
    $34 (5)
    $35 (11)
    $36 (6)
    $37 (8)
    $38 (4)
    $39 (8)
    $3A (9)
    $3B (12)
    $3C (20)
    $3D (43)
    $3E (604)
    $3F (5242)
    $40 (20521)
    $41 (36556)
    $42 (39885)
    $43 (45812)
    $44 (40657)
    $45 (43334)
    $46 (16026)
    $47 (2053)
    $48 (396)
    $49 (106)
    $4A (25)
    $4B (7)
    $4C (5)
    $4D (7)
    $4E (14)
    $4F (10)
    $50 (7)
    $51 (11)
    $52 (80)
    $53 (373)
    $54 (622)
    $55 (316)
    $56 (60)
    $57 (10)
    $58 (8)
    $59 (8)
    $5A (9)
    $5B (15)
    $5C (8)
    $5D (3)
    $5E (10)
    $5F (9)
    $60 (4)
    $61 (4)
    $62 (6)
    $63 (5)
    $64 (11)
    $65 (16)
    $66 (14)
    $67 (20)
    $68 (30)
    $69 (6)
    $6A (14)
    $6B (4)
    $6C (1)
    $6E (2)
    $70 (1)
    $71 (2)

    Generated by Final TAP 2.7 b2 - (c) Subchrist Software. 2001-2004


    Vielleicht hat ja jemand noch eine Idee woran es liegen könnte.

    Mingo

  • Ich würde es trotzdem mal mit dem XE Kabel probieren. C64S Interface habe ich mir nie getraut, selber zu löten. Manchmal muss man auch den default Speicher von mtap erhöhen. Steht in der Anleitung, glaube -b 5 oder nur die zahl -5.
    Hast Du die Datasette auch richtig justiert und am C64 ausprobiert?

  • Zur Diagnose wäre es evtl. interessant mal eine der defekten TAP-Dateien analysieren zu können.

    10 x=rnd(-1963):fori=1to81:y=rnd(1):next
    20 forj=1to5:printchr$(rnd(1)*16+70);:next
    30 printint(rnd(1)*328)-217

    Bitte melde dich an, um diesen Link zu sehen. - Bitte melde dich an, um diesen Link zu sehen. - Bitte melde dich an, um diesen Link zu sehen.

  • Hallo

    explodingfirst
    Ob das erhöhen des Speichers was bringt glaub ich nicht, der ist bereits auf 4 MB eingestellt (Default) und das Image ist knappe 700kb groß. Werds trotzdem probieren. Das Spiel funktioniert (wie bereits gesagt) am echten C64. Bedeutet das nicht daß die Datasette also richtig justiert ist?

    Unseen
    Die Datei habe ich bereits analysiert, siehe erstes Posting. Oder gibt es noch ein anderes Tool zum analysieren?

    Danke für Eure Antworten
    Mingo

  • Unseen
    Die Datei habe ich bereits analysiert, siehe erstes Posting. Oder gibt es noch ein anderes Tool zum analysieren?


    Ja, Hexeditor und Augen. Die Ausgabe von FinalTap sagt nur, dass die enthaltenen Daten nicht vernünftig decodiert werden können. Die Frage nach dem "warum" kann man aber mit so einer Zusammenfassung schlecht bis gar nicht beantworten.

    Oder im 4chan-Style: TAP-File or GTFO :wink:

    10 x=rnd(-1963):fori=1to81:y=rnd(1):next
    20 forj=1to5:printchr$(rnd(1)*16+70);:next
    30 printint(rnd(1)*328)-217

    Bitte melde dich an, um diesen Link zu sehen. - Bitte melde dich an, um diesen Link zu sehen. - Bitte melde dich an, um diesen Link zu sehen.

  • Also, nachdem ich viele Stunden nach der Lösung gesucht habe und immer noch nichts funktioniert, habe ich die XE-Kabel-Variante probiert. Die TAPSERV.PRG auf den C64 übertragen und mittels mtap die Daten empfangen. Seltsamerweise treten genau die selben Fehler bei der erzeugten TAP-Datei auf. Allerdings sind jetzt die Dateien um ca 1KB größer. Offensichtlich fehlen Teile der erzeugten Datei, deshalb sind sie nach jeder Übertragung verschieden groß. Habe wieder mit mehrere Datasette und Spiele probiert.

    Unseen
    Wenn es dir recht ist, dann kann ich dir eine (oder mehrere) TAP-Dateien schicken, vielleicht findest du den Fehler in der Datei.

    Mingo

  • Unseen
    Wenn es dir recht ist, dann kann ich dir eine (oder mehrere) TAP-Dateien schicken, vielleicht findest du den Fehler in der Datei.


    Na endlich...

    10 x=rnd(-1963):fori=1to81:y=rnd(1):next
    20 forj=1to5:printchr$(rnd(1)*16+70);:next
    30 printint(rnd(1)*328)-217

    Bitte melde dich an, um diesen Link zu sehen. - Bitte melde dich an, um diesen Link zu sehen. - Bitte melde dich an, um diesen Link zu sehen.

  • Versuch mal einen anderen PC für die Übertragung zu verwenden, in den Daten sind immer wieder einzelne Ausreisser zu sehen die IMHO ein Anzeichen dafür sind, dass die Zeitmessung während des Überspielens gelegentlich falsche Ergebnisse liefert.

    Bilder

    10 x=rnd(-1963):fori=1to81:y=rnd(1):next
    20 forj=1to5:printchr$(rnd(1)*16+70);:next
    30 printint(rnd(1)*328)-217

    Bitte melde dich an, um diesen Link zu sehen. - Bitte melde dich an, um diesen Link zu sehen. - Bitte melde dich an, um diesen Link zu sehen.

  • welche Parallelport Einstellungen hast Du denn im BIOS deines PC's eingestellt?
    Ist die Spannungsversorgung der Datasette in Ordnung? (5V)
    Das FinalTap das .tap nicht erkennt kann simpel daran liegen das der verwendete "Tape-Loader" noch nicht erkannt wird.
    Hast Du mal versucht ein .tap zurückzuschreiben (ptap) ?

  • Nur ein paar Überlegungen meinerseits (also nurTheorie!)

    Nutzt du "reines" DOS oder irgenwas unter Windows ?
    Wenn ja welches DOS ?

    Gibts im Bios eine Stromspar-Funktion welche stören könnte und den Prozessor mal kurz schlafen legt ?

  • Unseen
    Habs jetzt auf einem anderen Pc probiert, doch es treten die selben Fehler auf. Die erzeugte TAP-Datei ist allerdings um ca 50 Bytes gewachsen. Irgendwie vermute ich daß die Daten zu schnell übertragen werden und die langsame parallele Schnittstelle kann diese nicht schnell genug verarbeiten.

    @oldskool
    Im Bios habe ich den ECP Modus eingestellt, auf Adresse 378, habe aber auch alle anderen probiert (SPP, Bidirectional, Normal...). Die Spannung am Datasette beträgt ca 5 bis 5,1V.

    Martin_75
    Habs im reinen DOS (6.22) und mit der Windows Bootdiskette probiert.

    Das seltsame ist, daß ich mit den selben Kabel (XE1541) schon Disketten an diesen PC erfolgreich übertragen habe. Habe mittlerweile mit verschiedenen PC's, 2 Datasette, 2 C64, 4 Spiele und 2 Kabel probiert. Jetzt bin ich mit meinem Latein am ende.

  • Vielleicht sind Deine ganzen PCs zu neu und zu schnell. Habe für C64 Floppy und Datasette einen Toshiba Laptop Pentium 2 233Mhz. Davor hatte ich einen K7 AMD Duron 700 Mhz.

  • Vielleicht sind Deine ganzen PCs zu neu und zu schnell. Habe für C64 Floppy und Datasette einen Toshiba Laptop Pentium 2 233Mhz. Davor hatte ich einen K7 AMD Duron 700 Mhz.

    Hmm, daran habe ich noch nicht gedacht. Mein langsamster Pc ist ein Celeron mit 1600 Ghz. Muss mich wohl nach einem Oldtimer umsehen...

  • Habs jetzt auf einem anderen Pc probiert, doch es treten die selben Fehler auf. Die erzeugte TAP-Datei ist allerdings um ca 50 Bytes gewachsen. Irgendwie vermute ich daß die Daten zu schnell übertragen werden und die langsame parallele Schnittstelle kann diese nicht schnell genug verarbeiten.


    Nein, du wirst es nicht schaffen mit einer Datasette Daten zu schnell für die parallele Schnittstelle anzuliefern. Ich tippe eher darauf, dass irgendwas vom Bios her gelegentlich die CPU klaut und danach das Timing der Pulse nicht mehr stimmt - das können zB die schon erwähnten Stromsparmechanismen sein, aber auch die DOS-kompatible Tastatur/Mausemulation wenn selbige eigentlich via USB angeschlossen sind. Ich habe hier ein P4-System stehen bei dem man das sehr deutlich in den Pulsdiagrammen sieht, ungefähr einmal pro Sekunde gibts da einen Ausreisser und die gelesenen Daten sind unbrauchbar.

    Zitat

    Das seltsame ist, daß ich mit den selben Kabel (XE1541) schon Disketten an diesen PC erfolgreich übertragen habe. Habe mittlerweile mit verschiedenen PC's, 2 Datasette, 2 C64, 4 Spiele und 2 Kabel probiert. Jetzt bin ich mit meinem Latein am ende.


    Das serielle Protokoll ist zwar auch timingkritisch, aber es kommt viel besser mit gelegentlichen kurzen Aussetzern klar als das Auslesen von Bändern.

    10 x=rnd(-1963):fori=1to81:y=rnd(1):next
    20 forj=1to5:printchr$(rnd(1)*16+70);:next
    30 printint(rnd(1)*328)-217

    Bitte melde dich an, um diesen Link zu sehen. - Bitte melde dich an, um diesen Link zu sehen. - Bitte melde dich an, um diesen Link zu sehen.

  • Ich verstehe. Also wird das drosseln meines "schnellen" Pc's auch nichts bringen. Stromsparmechanismen hab ich bereits deaktiviert. Bekomme in den nächsten Tagen einen alten Laptop. Mal sehen ob sich dann was ändert. Ich melde mich wenn ich den Laptop bekomme. Inzwischen bedank ich mich für die Mühe und Ratschläge.

    Grüße
    Mingo

  • So, habe den Laptop bekommen. Ein alter Celeron 366 und siehe da, es läuft wie geschmiert. Habe festgestellt daß die Übertragung nur gelingt wenn ich den Modus der parallelen Schnittstelle auf EPP stelle. Bei ECP wird das Image zwar auch erstellt, aber beim Ausführen des erzeugten Images bleibt der Ladevorgang irgendwann stehen. Habs auch mit meinen Commodore Web.it probiert, der ja auch "nur" ein Pc ist, allerdings kommt mtap scheinbar mit dem exotischen Prozessor nicht klar. Bin froh dass es jetzt nach so vielen Stunden Arbeit endlich geklappt hat. Werde ein Tutorial auf meiner Homepage stellen, damit andere auch was davon haben. Ein Danke an Euch für die wertvolle Hilfe, ohne die ich es sicher nicht geschafft hätte.

    Grüße
    Mingo

  • Hast Du auf dem Laptop auch einen USB-Anschluss. Weil manche tap files können schon grösser werden als 1,3 Mbit. Falls nein, dann musst Du die per Programm in 2 Teile machen. Wenn Du mal vor hast, die tap files auf eineren PC zu übertragen.

    Darfst wenigstens den Laptop behalten? Meiner ist ausschließlich für Commodore 64 da. Der Commodore Slave.

  • Weil manche tap files können schon grösser werden als 1,3 Mbit

    Du meinst, sie passen dann nicht mehr auf Diskette? Das stimmt, aber da erweist sich Winrar als sehr praktisch.

    Ja, den Laptop darf ich behalten, der ist mein jetzt mein!

    Eigentlich dienen alle meine Pc's als Commodore-Sklaven :)