TriOS [aktuelle Arbeitsversion und Log im ersten Beitrag]

Du hast ein Betriebssystem für den Hive geschrieben oder beschäftigst dich mit den grundlegenden Systemfunktionen, dann bist du hier richtig!
Benutzeravatar
drohne235
Administrator
Beiträge: 2284
Registriert: So 24. Mai 2009, 10:35
Wohnort: Lutherstadt Wittenberg
Kontaktdaten:

Re: TriOS [aktuelle Arbeitsversion und Log im ersten Beitrag]

Beitrag von drohne235 »

Für ein paar Experimente mit dem SID-Player einige DMP-Files. Der Stereomodus mit zwei SIDCogs ist echt cool... :twisted:
Dateianhänge
comp1.zip
Monsterpaket :)
(7.37 MiB) 426-mal heruntergeladen
SID.zip
Kleines Paket
(510.42 KiB) 438-mal heruntergeladen
"Ob Sie denken, dass Sie es können, oder ob Sie denken, dass Sie es nicht können - in beiden Fällen haben Sie recht." Henry Ford
Benutzeravatar
frida
Beiträge: 40
Registriert: Di 1. Sep 2009, 18:28
Wohnort: Middelfart Dänemark

Re: TriOS [aktuelle Arbeitsversion und Log im ersten Beitrag]

Beitrag von frida »

Hallo drohne 235

Du hast mir kopf schmerzen gegeben.
Ich habe nun zwei tage gebraucht um eine AUTOMOUNTER zu kreieren.
Erst eine DIRTY, es virkt.
Es war nicht der AUTOMOUNTER sondern der fehlerzuge.
Erst wenn ich in der SYSTEM das file admflash.adm gesperrt,
hatte es angefangen zu fungieren.

Deine letzte ZIPFILE hast CRC fehler, selbst unter Windows.

I like your work.

HIVE 085
Benutzeravatar
drohne235
Administrator
Beiträge: 2284
Registriert: So 24. Mai 2009, 10:35
Wohnort: Lutherstadt Wittenberg
Kontaktdaten:

Re: TriOS [aktuelle Arbeitsversion und Log im ersten Beitrag]

Beitrag von drohne235 »

Automounter klingt cool. :)

Ich hab mal das Archiv aktualisiert und auch getestet - jetzt sollte es sich ohne CRC-Fehler (bei mir gab es auch diesen Fehler) entpacken lassen. Schau mal bitte ob es jetzt funktioniert.

Ich habe übrigens noch einen Fehler in der FATEngine gefunden: Exakt der Aufruf Nr. 4096 von "sdfat.readData(@buffer,25)" erzeugt ein fehlerhaftes Datum. Die Testroutine in komponenten/sidcog/stereosiddumpplay-fatengine zeigt das ganz deutlich. Im gleichen Verzeichnis liegt auch ein Screenshot, an dem man das sehen kann. Man hört es auch wenn man ein längeres SID abspielt - ab dem Registersatz 4096 kommt nur noch Soundmüll. Verwendet man die Funktion "sdfat.readCharacter", funktioniert es korrekt. In den WAV-Routinen hab ich auch die readData-Funktion verwendet, aber ich vermute, bei der Wiedergabe von WAV-Dateien hört man den kleinen Fehler einfach nicht.
"Ob Sie denken, dass Sie es können, oder ob Sie denken, dass Sie es nicht können - in beiden Fällen haben Sie recht." Henry Ford
Benutzeravatar
frida
Beiträge: 40
Registriert: Di 1. Sep 2009, 18:28
Wohnort: Middelfart Dänemark

Re: TriOS [aktuelle Arbeitsversion und Log im ersten Beitrag]

Beitrag von frida »

Autounmount kommt auch, nach ziehen der karte.

HIVE 085
Benutzeravatar
frida
Beiträge: 40
Registriert: Di 1. Sep 2009, 18:28
Wohnort: Middelfart Dänemark

Re: TriOS [aktuelle Arbeitsversion und Log im ersten Beitrag]

Beitrag von frida »

Hallo drohne 235

Der Automount ist dar, und Autounmount auch.

HIVE-DÄNE
Dateianhänge
send1.zip
(47.19 KiB) 438-mal heruntergeladen
Benutzeravatar
drohne235
Administrator
Beiträge: 2284
Registriert: So 24. Mai 2009, 10:35
Wohnort: Lutherstadt Wittenberg
Kontaktdaten:

Re: TriOS [aktuelle Arbeitsversion und Log im ersten Beitrag]

Beitrag von drohne235 »

Ich hab das Problem nochmal anders gelöst, ich glaube die zwei Modis in sd_mount brauchen wir nicht:

admflash.spin:
- Keinen Modus M/B für sd_mount, da immer die Dir-Marker gesetzt werden müssen und können.
- Bei der Initialisierung init_chip das Laufwerk immer mounten.

Allerdings kann es sein, dass ich da etwas übersehe, denn bei den Änderungen in der admflash-fat hab ich noch keine Ahnung was sie bewirken. Hab ich da etwas übersehen, oder ist das noch ein Fehler in der FATEngine?

Eigendlich hab ich die Routinen sd_dmget/sd_dmput vorgesehen, um das Userverzeichnis zu sichern, damit man das aktuelle Dir nach einem booten des Administra-Codes wieder herstellen kann. Aber wenn ich im IOS diese Funktionen einfüge, funktioniert das nicht korrekt. Muß ich noch untersuchen.

Aktuelle Version hänge ich gleich noch im ersten Beitrag an.
"Ob Sie denken, dass Sie es können, oder ob Sie denken, dass Sie es nicht können - in beiden Fällen haben Sie recht." Henry Ford
Benutzeravatar
drohne235
Administrator
Beiträge: 2284
Registriert: So 24. Mai 2009, 10:35
Wohnort: Lutherstadt Wittenberg
Kontaktdaten:

Re: TriOS [aktuelle Arbeitsversion und Log im ersten Beitrag]

Beitrag von drohne235 »

Hmm, jetzt hab ich das mit dem Modus auch geschnallt... :oops:

Code: Alles auswählen

PUB sd_mount(mode) | err                                'sdcard: sd-card mounten frida
''funktionsgruppe               : sdcard
''funktion                          : eingelegtes volume mounten
''eingabe                          : mode = "M" - mount / "B" - boot
''ausgabe                         : -
''busprotokoll                    : [001][put.error]
''                                     : error - fehlernummer entspr. list

  err := \sdfat.mountPartition(0,0)                     'karte mounten
  siglow(err)
  if mode == "M"                                        'frida
    bus_putchar(err)                                    'fehlerstatus senden
  ifnot err
    dmarker[RMARKER] := sdfat.getDirCluster             'root-marker setzen
    err := \sdfat.changeDirectory(string("system"))
    ifnot err
      dmarker[SMARKER] := sdfat.getDirCluster           'system-marker setzen
    sdfat.setDirCluster(dmarker[RMARKER])               'root-marker wieder aktivieren
    hss.sfx_play(1, @SoundFX8)                          'on-sound
Ich hab den Modus jetzt also wieder eingebaut. In der Initialisierung wiederhole ich den Versuch, dass Laufwerk zu mounten, bis es funktioniert. Im Modus "B" braucht es aber kein bus_putchar(err), da die Funktion nicht direkt von Regnatix initiiert wurde. Schau mal ob das bei dir auch so funktioniert, ich glaub so ist richtig. Ich erstelle gleich noch eine neue Arbeitsversion.

Zwei Sachen die mir noch einfallen:

1. Es wäre ja gut, wenn bei relevanten Zugriffen auf das Laufwerk, Administra bei Bedarf versucht ein eventuelles Laufwerk automatisch mit sd_mount("B") zu mounten. Ist keine Karte im Laufwerk, so ist der Hive zwar blockiert, aber sobald man eine Karte einlegt (oder vergessen hat manuell zu mounten), geht es dann weiter. Funktioniert auch schon beim Systemstart, wenn man keine Karte eingelegt hat. Ich bin mir auf der einen Seite aber momentan nicht sicher, ob es Konflikte bei diversen Dateioperationen gibt und auf der anderen Seite verkomplizieren Automatismen die Sache irgendwie unnötig. Intuitiv ist mir da eine ordentliche Fehlermeldung lieber, als ein Automatismus der für mich "denken" will - da geht mir die Direktheit verloren.

2. Jede Änderung zieht immer weitere Kreise:

- IOS ändern --> danach in die entsprechenden Verzeichnisse verteilen
- Kernroutinen in admflash ändern --> Änderung der gleichen Routinen auch in admini, admsid usw. (Leider gibt es keine include-Anweisung).
- Nach Änderung ausführbare Dateien im bin-Verzeichnis neu komilieren.

Da ich momentan mit dem bst unter Linux arbeite, könnte man sich dafür teilweise einen Script basteln, quasi so eine Art makefile, da ja ein Kommandozeilencompiler und auch ein Flashtool dabei ist. Bst ist eh zu empfehlen, da er den Code besser optimiert und vor allem Routinen aus Objekten auf Wunsch nicht einbindet, welche nicht verwendet werden! So ist es kein Problem, zum Beispiel die SID- und HSS-Routinen in die gleiche IOS-Datei zu packe - je nach Code werden nur die entsprechenden Teile kompiliert.
"Ob Sie denken, dass Sie es können, oder ob Sie denken, dass Sie es nicht können - in beiden Fällen haben Sie recht." Henry Ford
BorgKönig
Beiträge: 598
Registriert: So 24. Mai 2009, 11:24

Re: TriOS [aktuelle Arbeitsversion und Log im ersten Beitrag]

Beitrag von BorgKönig »

vieleicht als anregung für euch: wenn beim boot keine sd-card vorhanden ist, bzw. zur laufzeit die sd-card mit dem os entfernt wurde, sollen alle 3 leds des hive's rythmisch blinken. 1-2 sek. takt sollte da ausreichen.

falls möglich, sollte der screen auch noch in rot getaucht werden. alles andere sollte ausgeblendet werden..
Benutzeravatar
frida
Beiträge: 40
Registriert: Di 1. Sep 2009, 18:28
Wohnort: Middelfart Dänemark

Re: TriOS [aktuelle Arbeitsversion und Log im ersten Beitrag]

Beitrag von frida »

Hallo drohne 235
drohne 235 hat geschrieben: Ich habe übrigens noch einen Fehler in der FATEngine gefunden: Exakt der Aufruf Nr. 4096 von "sdfat.readData(@buffer,25)" erzeugt ein fehlerhaftes Datum.
Versuchen Sie die folgende Zeile zu ändern im 'readData(addressToPut, count)':

Code: Alles auswählen

  repeat while((count > 0) and readWriteCurrentCluster("R", "F"))
in:

Code: Alles auswählen

  repeat while(count > 0)
    if(readWriteCurrentCluster("R", "F"))
Bitte Einkerbung auf der restlichen Zeilen, so dass es funktioniert.
Ich weiß noch nicht, warum es funktioniert.
25 geht in 512 acht Mal, bevor es ein Fehler auftritt.
8 mal 512 ist gleich dem 4096.
Warum es nicht passieren, die übrigen 7 mal, kenne ich noch nicht.

HIVE 085
Benutzeravatar
drohne235
Administrator
Beiträge: 2284
Registriert: So 24. Mai 2009, 10:35
Wohnort: Lutherstadt Wittenberg
Kontaktdaten:

Re: TriOS [aktuelle Arbeitsversion und Log im ersten Beitrag]

Beitrag von drohne235 »

Ich hab es mal schnell im SID-Bios geändert und es scheint zu funktionieren. :) Wenn es morgen nicht ganz so heiß ist, werde ich mal einen ordentlichen Testcode in admtest einbauen, um den Fehler zu provozieren.
Dateianhänge
admsid2.adm.zip
(6.69 KiB) 441-mal heruntergeladen
"Ob Sie denken, dass Sie es können, oder ob Sie denken, dass Sie es nicht können - in beiden Fällen haben Sie recht." Henry Ford
Antworten