Robotrontechnik-Forum

Registrieren || Einloggen || Hilfe/FAQ || Suche || Mitglieder || Home || Statistik || Kalender || Admins Willkommen Gast! RSS

Robotrontechnik-Forum » Technische Diskussionen » Disk wird im KC87-Emu nicht geschlossen.. » Themenansicht

Autor Thread - Seiten: -1-
000
30.03.2013, 09:21 Uhr
funkheld



Hallo, guten Tag.
Ich habe ein Fehler beim einlesen einer Diskette die ich mit DOSX eingebunden habe im KC-Emu.
Ich habe eine Leerdisk damit erstellt:

Quellcode:
#!/usr/bin/perl
# vp 31.10.2009 erstellt

$OUT = $ARGV[0] || 'leerdisk.dum';

open OUT, ">$OUT";
binmode OUT;

print OUT "\xE5"x(800*1024);  # 800K-Diskette, mit E5 init.

close OUT;

Startvorgang:
- Disklaufwerk im Emu aktiviert
- 64KB-Ram aktiviert
- megarom gestartet
- leerdisk.dum in Laufwerk A
- DOSX
- DRIVE A:
- BASIC : MEMORY END : 32000
- 2 Zeilen Basicprogramm erstellt
- 6x mal gespeichert mit CSAVE"...."
- Basic verlassen mit "BYE"
- Disk ausgeworfen

jetzt kommt der Fehler : Die letzte Datei wurde auf der Disk nicht geschlossen:

Quellcode:
00 54 45 53 54 31 20 20 20 53 53 53 00 00 00 02 .TEST1   SSS....
03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 54 45 53 54 32 20 20 20 53 53 53 00 00 00 02 .TEST2   SSS....
04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 54 45 53 54 33 20 20 20 53 53 53 00 00 00 02 .TEST3   SSS....
05 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 54 45 53 54 34 20 20 20 53 53 53 00 00 00 02 .TEST4   SSS....
06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 54 45 53 54 35 20 20 20 53 53 53 00 00 00 02 .TEST5   SSS....
07 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 54 45 53 54 36 20 20 20 53 53 53 00 00 00 00 .TEST6   SSS....
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 åååååååååååååååå
E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 åååååååååååååååå
E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 åååååååååååååååå
E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 åååååååååååååååå
E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 åååååååååååååååå
E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 åååååååååååååååå

Ich kann beim nächsten Starvorgang mit der Disk nur das vorletzte Basicprogramm "TEST5" mit CLOAD"...." laden. Beim letzten"TEST6" kommt dann die IO-Fehlermeldung, weil es vorher nicht richtig geschlossen wurde.

Wer kann hier mal weiter helfen und den Fehler beheben ?

Danke.

Gruss
peter

Dieser Beitrag wurde am 30.03.2013 um 13:06 Uhr von funkheld editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
001
30.03.2013, 15:06 Uhr
volkerp
Default Group and Edit
Avatar von volkerp

Das Phänomen hatte ich auch, kann aber nicht sagen, was die Ursache ist. Prinzipiell ist es nicht so einfach, das Kassettenorientierte Fileverfahren auf Diskette bzw. CP/M abzubilden; da gerade die grundlegenden Funktionen Datei öffen und Datei schließen fehlen, völlig anders arbeiten oder optional sind (ausgerechnet closefile )
--
VolkerP

http://hc-ddr.hucki.net
(Z9001, Z1013, LC-80, ...)
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
002
30.03.2013, 16:41 Uhr
funkheld



Wenn ich zb jetzt 5 Dateien mit CSAVE"TEST..." speichere, dann hat die letzte
Datei keinen Abschluss, wenn ich die Disk entfernt habe und da reinschaue.

Wenn ich jetzt zb 5 Dateien mit CSAVE"TEST..." speichere und anschliessend zusätzlich eine leere Datei mit CSAVE" " speichere bevor ich BASIC verlasse, dann bekommt die letzte Datei "TEST5" zb den Diskabschluss.
In der CSAVE" " ist ein Leerzeichen.

Also

Gruss
peter

Dieser Beitrag wurde am 30.03.2013 um 19:18 Uhr von funkheld editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
003
31.03.2013, 23:06 Uhr
jmueller



Ich habe mir die Sache jetzt auch mal angesehen,
um auf einen eventuellen Fehler in JKCEMU zu testen.

Konfiguration:
KC87 + Farbe + 64kRAM + MegaROM + FDC + leere Diskettenimage

Und dann folgende Eingaben getätigt:

DOSX
DRIVE A:
BASIC
32000
10 ?"HALLO"
20 END
CSAVE "TEST1"

Es erscheint die Ausschrift:
BOS-error: file not found
OK

Parallel dazu habe ich einen emulatorinternen Logger mitlaufen lassen
und gesehen, dass das BASIC-Programm auf Spur 8 gespeichert wurde,
aber überhaupt kein Directory geschrieben/aktualisiert wurde.
Es gab insgesamt nur einen einzigen WRITE_DATA-Befehl auf Spur 8.

Für mich sieht das erstmal nach einem Fehler im DOSX aus,
nicht aber nach einem Fehler im Emulator.

Jens
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
004
01.04.2013, 11:30 Uhr
funkheld



Hmm.., danke für den Test.

Ich habe die Leerdisk mit dem Programm aus minicpcm gemacht mit leerdisk.pl.

Bei mir wird die letzte Datei nicht geschlossen.
Das heisst man muss immer eine weitere Datei dranhängen (bei mir eine Leerdatei immer mit gleichen Namen) damit die vorletzte geschlosssen wird. Das funktioniert vorübergehend. Natürlich wenn ich die letzte nicht geschlossene Datei öffne , kommt dieses Error.

Danke.

Gruss
peter

Dieser Beitrag wurde am 01.04.2013 um 15:42 Uhr von funkheld editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
005
01.04.2013, 18:03 Uhr
volkerp
Default Group and Edit
Avatar von volkerp

im aktuellen Mega-Flash vom 1.4. sollte der Fehler behoben sein.
Im BIOS wurde bei write das C-Register nicht korrekt genutzt.
--
VolkerP

http://hc-ddr.hucki.net
(Z9001, Z1013, LC-80, ...)

Dieser Beitrag wurde am 01.04.2013 um 18:03 Uhr von volkerp editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
006
01.04.2013, 19:54 Uhr
funkheld



Jup, danke. Es funktioniert jetzt !!!

Man..., so einen Fehler zu finden ist ja wohl nicht einfach.
Das hast du ja schön hinbekommen.

Danke.

Gruss
peter
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
007
01.04.2013, 20:33 Uhr
jmueller



VolkerP schrieb:

Zitat:
im aktuellen Mega-Flash vom 1.4. sollte der Fehler behoben sein.

Nö, ist er nicht.

Jens
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
008
01.04.2013, 22:12 Uhr
funkheld



Megamodul vom 1.4.13

Ich habe eine Leerdiskette mit : leerdisk.pl erstellt

KC87-Megamodul gestartet.
Dann Diskette in A: gemountet

DOSX
DRIVE A:
BASIC
32000
10 PRINT "HALLO"
20 END
CSAVE "TEST1"
CSAVE"TEST2"
CSAVE"TEST3"

BYE > Basic verlassen
Diskette aus dem Laufwerk entfernt.
Dann habe ich mir die Diskette mit einem Hexprogramm angeschaut.
Alle Dateien geschlossen.

Dann alles wieder von vorn.
Im Basic wieder:
CLOAD"TEST3"
RUN > Basicprogramm läuft
CSAVE"TEST4"
BYE

ALso es klappt ohne Error , keine Fehler beim Betriebsablauf.

Danke.

Gruss
peter

Dieser Beitrag wurde am 01.04.2013 um 22:14 Uhr von funkheld editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
009
01.04.2013, 22:30 Uhr
jmueller



Also ich meinte den "BOS-error: file not found"-Fehler.
Der ist in der aktuellen Version noch drin.

Jens
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
010
02.04.2013, 08:48 Uhr
funkheld



Hmmm..., es kann doch nur der Fehler "BOS-error: file not found" kommen , wenn das File nicht vorhanden ist. Alle Files die ich Speichere in Basic sind vorhanden auf der Disk und können auch wieder einwandfrei eingelesen werden mit der neuen Version vom 1.4.13.


Gruss
peter

Dieser Beitrag wurde am 02.04.2013 um 08:49 Uhr von funkheld editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
011
02.04.2013, 09:20 Uhr
volkerp
Default Group and Edit
Avatar von volkerp

@jens: das kann ich nicht nachvollziehen.

Sicherheitshalber frage ich mal nach: Ist Deine Diskette schreibgeschützt? Oder doch nicht leer?
--
VolkerP

http://hc-ddr.hucki.net
(Z9001, Z1013, LC-80, ...)
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
012
02.04.2013, 17:27 Uhr
jmueller



@Volker:

Ich habe mal ein Video gemacht (35MB).
Da siehst du, dass das Diskettenimage leer und beschreibbar ist.
Aber vielleicht habe ich ja etwas anderes falsch gemacht:

http://www.jens-mueller.org/tmp/dosx.gif

Das Video lösche ich nach geraumer Zeit wieder.

Jens
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
013
02.04.2013, 17:58 Uhr
volkerp
Default Group and Edit
Avatar von volkerp

Hallo Jens, das sieht gut aus. aber Deine Diskette ist nicht formatiert.
Unter CP/M müsste der gleiche Fehler kommen, wenn Du auf eine nicht formatierte Diskette schreiben willst.
--
VolkerP

http://hc-ddr.hucki.net
(Z9001, Z1013, LC-80, ...)
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
014
02.04.2013, 19:12 Uhr
funkheld



Ich habe eine Leerdiskette mit : leerdisk.pl erstellt und die funktioniert so wie sie erstellt wurde mit DOSX und in BASIC.

Die 800KB-Diskette die ich mit dem KC87-EMU erstellt habe, ist nicht formatiert.
Ohne Formatierung habe ich den gleichen Fehler wie du auch.
Nachdem ich die in CP/M mit FORMATZ formatiert habe , funktionierte die Diskette mti DOSX in BASIC Jens.

Jens , der EMU funktioniert 100%-tig und Volker deine Sofware dazu auch 100%-tig. Ihr beide seid Spitze.

Gruss
peter

Dieser Beitrag wurde am 02.04.2013 um 19:31 Uhr von funkheld editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
015
02.04.2013, 19:36 Uhr
jmueller



Nach meinem Verständnis ist die Diskette formatiert,
aber wie ich sehe, reicht es dem DOSX und dem CP/A wohl nicht aus,
nur das Directory mit E5h zu beschreiben,
sondern eine leere Diskette muss bis zum Ende hin E5h-Bytes enthalten.
Na gut, da werde ich die betreffende Funktionalität im JKCEMU entsprechend ändern.

Jens
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
016
02.04.2013, 20:14 Uhr
volkerp
Default Group and Edit
Avatar von volkerp

Alles mit E5 zu formatieren ist der sicherere Weg. Das übliche FORMAT macht das auch so und beschreibt die Sektoren mit E5.

Eine mit "CPM Diskettenabbilddatei erstellen" erstellte 800K-Disk funktioniert nicht direkt unter CP/M:

A>b:
B>dir
No File
B>save 10 leertest
No Space
B>
--
VolkerP

http://hc-ddr.hucki.net
(Z9001, Z1013, LC-80, ...)
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
017
02.04.2013, 22:09 Uhr
funkheld




Zitat:
Nach meinem Verständnis ist die Diskette formatiert,
aber wie ich sehe, reicht es dem DOSX und dem CP/A wohl nicht aus,
nur das Directory mit E5h zu beschreiben,

Deine 800KB-Diskette im KC87-EMU ist nicht nur mit E5h ausgefüllt, sie hat am Anfang 00 00 00 00 01 03 00 04 und das geht dann zwischendurch so weiter mit anderen Werten im Sektor bis zum Ende. Ich weiss nicht was die Aufzählung in den Daten dort bedeutet.

Das ist dies sichere Methode dafür von Volker :

Zitat:
#!/usr/bin/perl
# vp 31.10.2009 erstellt

$OUT = $ARGV[0] || 'cpmdisk.dum';

open OUT, ">$OUT";
binmode OUT;

print OUT "\xE5"x(800*1024); # 800K-Diskette, mit E5 init.

close OUT;

Gibst du hier Info ,wann du dein KCemu geändert hast mit dem Disk-Format ?

Danke.

Gruss
peter

Dieser Beitrag wurde am 02.04.2013 um 22:20 Uhr von funkheld editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
018
03.04.2013, 07:48 Uhr
jmueller



funkheld schrieb:

Zitat:
Deine 800KB-Diskette im KC87-EMU ist nicht nur mit E5h ausgefüllt, sie hat am Anfang 00 00 00 00 01 03 00 04 und das geht dann zwischendurch so weiter mit anderen Werten im Sektor bis zum Ende.

Diese Bytes gehören nicht zum Disketteninhalt,
sondern sind die AnaDisk-spezifischen Headerbytes für jeden einzelnen Sektor.
So ist das AnaDisk-Format nun mal aufgebaut.

Wenn du das Diskimage-File als *.raw oder *.img speicherts,
sind diese Bytes dann nicht mehr da,
weil es sich dann um eine einfache Abbilddatei handelt,
so wie es auch das Perl-Script von Volker erzeugt.

Mehr zu diesen ganzen Formaten findest du in der JKCEMU-Hilfe.

Jens
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
019
03.04.2013, 09:30 Uhr
funkheld



Jup, danke Jens für den Hinweis.
Warum wid hier eigentlich von RAW und IMG geschrieben ?
Haben die beiden Namen für das alle Programme die gleiche Bedeutung ?

Danke.

Gruss
peter
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
020
03.04.2013, 12:48 Uhr
jmueller




Zitat:
Warum wid hier eigentlich von RAW und IMG geschrieben ?
Haben die beiden Namen für das alle Programme die gleiche Bedeutung ?

Es gibt keine Standard-Dateiendung für dieses Format,
weshalb jeder seine eigene Endung nimmt.
Die von JKCEMU verwendeten Endungen *.img, *.image und *.raw
sind die meiner Meinung nach noch am häufigsten vorkommenden,
wobei *.img und *.raw manchmal auch für Bilddateien sein können.
*.dmp habe ich absichtlich nicht verwendet,
da diese Endung (auch) für Oracle Datenbank-Dumps steht.

Jens
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
Seiten: -1-     [ Technische Diskussionen ]  



Robotrontechnik-Forum

powered by ThWboard 3 Beta 2.84-php5
© by Paul Baecher & Felix Gonschorek