Autor Thema: MagiC Hades Sourcecode  (Gelesen 217 mal)

0 Mitglieder und 1 Gast betrachten dieses Thema.

Offline KarlMüller

  • Benutzer
  • Beiträge: 242
MagiC Hades Sourcecode
« am: Di 04.12.2018, 19:34:13 »
Um das ganze mal zu entzerren.

Was bisher geschah:
Hades? Ich sehe das BIOS nicht. Ist es möglich?

Gerade mal getestet. Da scheint noch eine Datei für zu fehlen (hades.inc) scheinbar mit Definitionen für die Hardware-Addressen. Er meckert über solche Sachen wie pci_vga_reg, hlt (head load time) etc. Weiss jemand wo man da Ersatz für finden kann?

Hades? Ich sehe das BIOS nicht. Ist es möglich?

Gerade mal getestet. Da scheint noch eine Datei für zu fehlen (hades.inc) scheinbar mit Definitionen für die Hardware-Addressen. Er meckert über solche Sachen wie pci_vga_reg, hlt (head load time) etc. Weiss jemand wo man da Ersatz für finden kann?

;video auflîsung  2=st high 6=tt high           
vidmo:          equ 2
vidmo00:        equ vidmo*$100           
pci_vga_base:   equ $80000000   ;screen ram beginn
isa_vga_base:   equ $ff000000   ;screen ram beginn
pci_vga_reg:   equ $b0000000   ;vga register
isa_vga_reg:   equ $fff00000   ;vga register
pci_conf1:   equ $a0010000   ;pci config
pci_conf2:   equ $a0020000   ;pci config
pci_conf3:   equ $a0040000   ;pci config
pci_conf4:   equ $a0080000   ;pci config
mem_max:   equ $40000000   ;memory maximum 1 GB

;hades hardwareregister
main_status:   equ $fff00080
data_reg:   equ $fff00082
ldor:      equ $fff000c0
ldcr:      equ $fff000e0

; Hardwareregister
dmahigh:   equ $FFFF8608
dmamid:      equ $FFFF860B
dmalow:      equ $FFFF860D
gpip:      equ $FFFFFA81   ; TTMFP: Interface Port Datenregister

; sonstige Variablen
defhdinf:   equ $302      ; Default hdinf. byt 0 -> anzahl versuche byt 1 -> taktrate (hd default)
ed:      equ 0         ; clockraten fÅr verschiedene format
hd:      equ 2
dd:      equ 3
hlt:      equ 3         ;head load time in milisekunden (in 1ms schriten 1-128ms)
hut:      equ 120         ;head unload time in ms (in 16ms schritten 8-120ms)

Noch etwas?

Noch etwas?

Ja, ein paar SCSI-Addressen noch, aber die standen noch als Kommentar irgendwo anders. Den Rest konnte ich mir grösstenteils zusammen reimen.  Vielen Dank!

Was mich noch irritiert:
gpip:      equ $FFFFFA81 ; TTMFP: Interface Port Datenregister

Hat der Hades den "normalen" MFP gar nicht?

Ja, ein paar SCSI-Addressen noch, aber die standen noch als Kommentar irgendwo anders.
Das liegt daran, weil die Routinen eins zu eins den Modifikationen des TOS 3.06 für den Hades entnommen sind.

Was mich noch irritiert:
gpip:      equ $FFFFFA81 ; TTMFP: Interface Port Datenregister

Hat der Hades den "normalen" MFP gar nicht?
Doch hat er. Liegt ganz normal an den Adressen wie beim ST/TT.

Offline KarlMüller

  • Benutzer
  • Beiträge: 242
Re: MagiC Hades Sourcecode
« Antwort #1 am: Di 04.12.2018, 19:46:38 »
Bleibt nur noch eine Ungereimtheit: im exception-handler wird der SP auf eine Addresse gesetzt die nirgendwo definiert ist. In der ST-Version wird das nicht gemacht. Da muss ich mir jetzt noch ein freies Plätzchen suchen.

Ich nehme an Du meinst in HAD_EXEC.S die Variable "startup_stk". Die ist
startup_stk:   equ $5758

Allerdings macht das meiner Meinung keinen Sinn bei MagiC. Die Adresse stammt aus TOS 3.06

Auszug aus der BSS von TOS 3.06:
$00004b54: _msec
$00004b56: _prtbbval
$00004f58: _supstk 2*1024=$800
$00005758: _prtbflg
$0000575A: _prtbdmask
Wenn ich das richtig verstanden habe ist das der Supervisor Stack.

Könnte in MagiC dazu den Inhalt der Variable pgm_superst genutzt werden? Diese wird zumindest am Anfang des Bios definiert.

Offline Thorsten Otto

  • Benutzer
  • Beiträge: 286
Re: MagiC Hades Sourcecode
« Antwort #2 am: Di 04.12.2018, 23:46:46 »
Ja genau, die meinte ich. Dort Addressen von TOS 3.06 zu nehmen macht logischerweise keinen Sinn, die internen Variablen von Magic sind natürlich ganz woanders.

Ob man den  pgm_superstk nehmen kann bin ich nicht sicher, sieht mir so aus als ob der nach Ausführung der Auto-Ordner-Programm vom AES geerbt wird. Der liegt auch nicht am  Anfang des BIOS, sondern wird per Mxalloc angefordert. Ich bin mir auch nicht ganz sicher warum das überhaupt gemacht wird, das wird weder in der "normalen" Version von MagiC, noch in TOS 3.06 gemacht. I.d.R. wird das Programm kurz danach sowieso beendet. Wenn du da mehr weisst, immer her damit ;) Mit Hades kenne ich mich kaum aus (gibt ja auch nicht viel offizielle Dokumentation dazu).

Offline KarlMüller

  • Benutzer
  • Beiträge: 242
Re: MagiC Hades Sourcecode
« Antwort #3 am: Sa 08.12.2018, 10:18:04 »
Ja genau, die meinte ich. ...

Wenn du da mehr weisst, immer her damit
Tut mir leid ich habe da auch nicht mehr und versuche auch nur aus dem wenig was zu finden.

Hier kann nur Andreas Kromke oder Fredi Aschwanden helfen. Andere alternative wäre ein vorhandenes MAGIC.RAM vom Hades.

Der Code von MagiC ist fast ein zu ein aus dem was ich als Patch kenne. In letztem fehlt die Möglichkeit per "Return" ins Programm zurück zukehren.
Der Sinn des ganzen könnte sein das der vorhanden Stack nicht überschrieben wird um korrekte Daten aus dem möglicherweise defekten Stack zu bekommen. Die exception Routine spring ja mal nach reg_aus oder string_out.
Wenn nur die Kaltstart Funktion vorhanden wäre, würde ich einfach in hades.inc der Variable startup_stk einen Speicherbereich zuordnen.

Offline Thorsten Otto

  • Benutzer
  • Beiträge: 286
Re: MagiC Hades Sourcecode
« Antwort #4 am: Sa 08.12.2018, 10:43:31 »
Andere alternative wäre ein vorhandenes MAGIC.RAM vom Hades.

Würde ich auch nehmen ;) Wenn ich davon ausgehe, daß da nur Kleinigkeiten anders als in dem veröffentlichten Source sind, sollten sich die Stellen eigentlich relativ schnell finden lassen.

Zitat
In letztem fehlt die Möglichkeit per "Return" ins Programm zurück zukehren.

Das ist auch so eine Sache. IMHO macht es in den wenigsten Fällen Sinn zu versuchen das Programm fortzuführen. In den meisten Fällen würde der gleiche fehlerhafte Befehl nur gleich wieder ausgeführt werden, und dann gleich wieder krachen.

Zitat
einfach in hades.inc der Variable startup_stk einen Speicherbereich zuordnen.

Ja, habe ich jetzt auch erstmal gemacht, damit es sich übersetzen lässt.

PS.:
Gabs eigentlich jemals ne 'offzielle' ROM-Version von Magic 6? Ich hab hier nur ein Tool gefunden das ein *.ram reloziert, scheint aber nur für ältere MagiX-Versionen zu funktionieren.

Offline TheNameOfTheGame

  • Benutzer
  • Beiträge: 22
  • Almost Heaven, West Virginia
Re: MagiC Hades Sourcecode
« Antwort #5 am: So 09.12.2018, 14:43:53 »
Ich habe 2 magic.ram-Dateien auf meinem Hades.
Im AUTO-Ordner befindet sich mhades.ram
Auf dem C-Drive-Root befindet sich magic.ram
Hier sind sie.

Edit:  Auch magxboot.prg und magxbo32.prg aus dem AUTO-Ordner.

« Letzte Änderung: So 09.12.2018, 15:04:23 von TheNameOfTheGame »

Offline KarlMüller

  • Benutzer
  • Beiträge: 242
Re: MagiC Hades Sourcecode
« Antwort #6 am: So 09.12.2018, 16:56:33 »
Danke für Dateien!

Im AUTO-Ordner befindet sich mhades.ram
Das ist ein verschlüsselte Version. Wahrscheinlich die 6.20. Kann/konnte man mal bei ASH downloaden.

Auf dem C-Drive-Root befindet sich magic.ram
Die passt. Thorsten wird es auch schon gesehen haben, die eigenartige Adresse ist dort auch drin.

Du kannst ja mal die Version testen, welche im anderen Thread im Archiv "mmilan.zip.pdf" drin ist.
« Letzte Änderung: So 09.12.2018, 17:32:34 von KarlMüller »

Offline Thorsten Otto

  • Benutzer
  • Beiträge: 286
Re: MagiC Hades Sourcecode
« Antwort #7 am: So 09.12.2018, 17:24:26 »
Ja, danke, hatte auch schon festgestellt daß die eine Version verschlüsselt ist. Wäre auch seltsam, das Bootprogramm ist identisch zu der normalen Version, und das sucht nur nach magic.ram.

Offline TheNameOfTheGame

  • Benutzer
  • Beiträge: 22
  • Almost Heaven, West Virginia
Re: MagiC Hades Sourcecode
« Antwort #8 am: So 09.12.2018, 17:49:01 »
Ja, danke, hatte auch schon festgestellt daß die eine Version verschlüsselt ist. Wäre auch seltsam, das Bootprogramm ist identisch zu der normalen Version, und das sucht nur nach magic.ram.

Ah, mhades.ram ist nur ein Relikt. Es war schon da, als ich die Maschine kaufte.

Offline Thorsten Otto

  • Benutzer
  • Beiträge: 286
Re: MagiC Hades Sourcecode
« Antwort #9 am: Gestern um 21:59:43 »
Schon mal vorab ein paar sachen die mir in der Zwischenzeit aufgefallen sind:

  • Das Bios-Datum der angehängten Datei ist vom 5.5.2001, die Sourcen hatten ursprünglich 11.09.2001. Ausser den unten genannten Sachen konnte ich aber keine Unterschiede feststellen.
  • Die Version ist eine US-Version, und hat auch nicht das PAL-Flag im Header gesetzt. Das PAL-Flag wird (warum auch immer) in den veröffentlichten Sourcen immer gesetzt.
  • Die Tastatur-Tabellen haben (im Gegensatz zu den Sourcen) auch Alt-Tabellen. Macht das überhaupt Sinn für eine US-Tastatur?
  • Der _IDT Cookie wird entgegen des OS-Headers auf $112e wie bei der deutschen Version gesetzt. Kann es sein daß die Tastatur-Tabellen und der Header nachträglich gepatcht wurden?
  • Einige Texte wie z.b. SYSTEM ÜBERSCHRIEBEN sind seltsamerweise trotzdem in deutsch
  • Rogers MBSU Patch ist da offensichtlich drüber gelaufen (deaktiviert den Floppy-Test beim booten, und gaukelt dem System stattdessen 2 Floppies vor). In der übersetzten Version ist der jetzt nicht mehr drin, wenn man das möchte einfach nochmal drüber laufen lassen, funktioniert auch mit der neuen Version.
  • Auch wenns keinen Sinn macht, verwendet er $5758 als Supervisor-Stack im Exception-Handler. Offensichtlich hat da jemand vergessen das anzupassen. $5758 ist für MagiC ungeeignet, weil es ausserhalb des vom System reservierten Bereichs liegt (oberhalb von _membot)
  • Die XFS95 Routinen sind da seltsamerweise einkompiliert, werden aber scheinbar nicht angesprochen.
  • Allgemein scheinen die Hades TOS Sourcen auf TOS 3.05 zu basieren. Ich hab jetzt noch nicht geprüft ob sich in den übernommenen Stellen bei 3.06 was geändert hat. Überhaupt scheint (vermutlich noch aus der Zeit von KAOS) ziemlich viel bei TOS "geklaut" zu sein.