SDLTRS Emulator (Genie I / II / III, LNW80, SpeedMaster)

  • Hmm, ich kann mich nicht an mehrere Zeichensätze erinnern. Dass 32k für das Zeichensatz-RAM reserviert sind ist wohl er der vereinfachten Adressdekodierung (nur A15) zu schulden.

  • Hmm, ich kann mich nicht an mehrere Zeichensätze erinnern. Dass 32k für das Zeichensatz-RAM reserviert sind ist wohl er der vereinfachten Adressdekodierung (nur A15) zu schulden.

    Habe gerade auf http://oldcomputers-ddns.org/p…estueckung_a_bereiche.jpg gesehen, daß die beiden 6116er SRAMs für den Zeichensatz jeweils 2K haben ... in der "Technischen Beschreibung" steht, daß der Adressbereich von 8000 bis FFFF für das Zeichensatz-RAM "freigegeben" wird, deshalb meine Annahme mit den verschiedenen Zeichensätzen ... ;)


    Gibt es das Programm DEF.COM zur "Definition eigener Zeichensätze" noch "irgendwo"? :)

  • Neben der TCS Genie IIIs-Emulation gibt es in SDLTRS Version 1.2.21 auch Unterstützung für den Lubomir Soft Banker (TRS-80 Model I/Video Genie) von Günter Ermer. Das (leicht geänderte) BASIC-Testprogramm funktioniert auch im Disk-BASIC unter G-DOS/NEWDOS:



    ... Zeile 50 sieht etwas "komisch" aus, ist aber korrekt: man kann aus dem ROM lesen und an gleicher Stelle ins RAM schreiben ...


    H-DOS 2.3c (welches Fritz vorgestellt hat) verwendet den EG-64 Memory Banking Adaptor: dieser hat ähnliche Funktionen, ist aber nicht Software-Kompatibel mit dem "Lubomir Soft Banker" (früher wohl "Lubomir Soft Switch" und kompatibel mit dem EG64-3 von TCS) ...


    Im Gegensatz zum EG-64 Memory Banking Adaptor, kann der "Lubomir" (und der EG64-3) auch auf zusätzliche 32 KB im Expander zugreifen: das sind dann 96 KB im Video Genie bzw. Genie I/II (wird von SDLTRS ebenfalls unterstützt) ...


    Eine ältere Version EG64.1 (auch "RAM64.1") kann dies jedoch nicht (Unterstützung ist im aktuellen master-Branch) ...


    Günter Ermer schrieb auf eine Anfrage:

    Zitat

    Der Name "Lubomir" war lediglich der Versuch eine Benennung zu finden, die einzigartig sein sollte, quasi ein Kunstwort. Später hat sich herausgestellt, daß es sich um einen Vornamen handelt, der im tschechischen und slowakischen eher sehr verbreitet ist.

  • Der "Lubomir Soft Switch 1.1" (LSS 1) unterscheidet sich zum "Lubomir Soft Banker" (LSB) dadurch, daß er nur eine Funktion hat: über Bit 7 von Port 0xC0 wird das RAM unterhalb der Adresse 0x4000 ein- bzw. ausgeschaltet ... verschiedene "Banks" und die Nutzung der 32 KB im Expander sind nicht möglich ... Software-Kompatibel sind also nur LSB und EG 64 (ohne MBA-Kennzeichnung) ... Preislich lagen alle 3 Geräte bei 195,- DM: http://oldcomputers-ddns.org/p…schmidtke_katalog_ger.pdf ...

  • Selbstverständlich ist die EG64-3-Karte von Schmidtke electronic (Aachen) und nicht von TCS (das ist nur die EG-64 MBA) ...


    Eine kostenlose "Banking"-Methode hatte Martin Doppelbauer in der c't 8/84 vorgestellt (Artikel auch im Club-Info Bremerhaven 84/10) : dort wurden über Bit 4 von Port 0xFE (2. Cassettenport am Genie) die unteren 16 KB als RAM ein- und ausgeschaltet ...


    Die CP/M Images (Schmidtke und E. Mattes) verwenden genau diese "Banking"-Methode. Das Schmidtke-CP/M lief auch auf dem Genie IIs/SpeedMaster: dort wird allerdings Bit 0 von Port 0xFE für das "Banking" verwendet (deswegen funktioniert das obige Image des Schmidtke-CP/M nicht in der SpeedMaster-Emulation von SDLTRS), vermutlich wurden die beiden CP/Ms also leicht modifiziert ...


    Ohne den Quellcode bleibt das aber nur eine Vermutung. Leider hat auch Günter Ermer keinen mehr ...

  • Quellcode von was genau ? Wenn es Binaries gibt, kann ich die gerne durch Ghidra schicken und disassemblieren/kommentieren.

    Vom CBIOS des Schmidtke-CP/M ... es wird auch der "Lubomir Soft Banker" und die 80-Zeichenkarte (inkl. "Banking") über die jeweiligen I/O-Ports angesprochen: das kann man im Emulator sehen, allerdings ist es nicht ganz so einfach für mich, dann die richtigen "Rückschlüsse" daraus zu ziehen ... ;) Ein kompletter und kommentierter Quellcode eines CP/M-Systems (wie es ihn von Thomas Holte für SpeedMaster, Genie III und Genie IIIs ja gibt), wäre natürlich ideal ... falls also jemand noch etwas hat ... :)

  • Teil 1 - Der Bootloader


    Der macht mir allerdings schon Kopfzerbrechen. Denn hier wird offensichtlich eine Spurnummer erhöht (ram:421d), dann allerdings ins *Daten*register des Floppycontrollers geschrieben (ram:4229) und daraufhin ein "seek" ausgelöst (ram:422f).

    Jedenfalls werden die ersten 5 Sektoren (0..4) von Spur 0 nach 0x6000 gelesen (inkl. Bootsektor) und nach 0x6100 (in 0x6000-0x60ff steht ja der Bootsektor) gesprungen.

  • Teil 2 - BIOS loader


    Da habe ich bisher die Bank-Switching Tests erkannt. Es endet mit einem Sprung nach 0x7400, den ich wiederum nicht verstehe. Denn dort liegen noch keine Daten von der Diskette.

    Port 0xFE Bit 4 schaltet zwischen RAM (bit 4 = 1) und Floppy/Video (bit 4 = 0) um.

    Des weiteren werden die Ports 0xC0, 0xD2 und 0xFF mit 0 beschrieben.

  • Port 0xFE Bit 4 schaltet zwischen RAM (bit 4 = 1) und Floppy/Video (bit 4 = 0) um.

    Das wird das "Banking" von Martin Doppelbauer sein und vermutlich wurde die Funktion vom "Original Schmidtke-CP/M" für SpeedMaster/Genie IIs einfach modifiziert (1): weshalb sollte man eine kostenlose "Banking"-Schaltung unterstützen, wenn man dafür eigene Hardware anbietet? ;) Das "Banking" von Martin Doppelbauer kam wahrscheinlich auch erst etwas später ...


    Port 0xC0 ist "Lubomir" bzw. die EG-64 Karte, 0xD2 ist der "Banking"-Port der 80-Zeichenkarte von Schmidtke (ist da quasi als "Zusatz"). Im Handbuch steht, daß die Ports 0xD0 und 0xD1 für den 6845-CRT benutzt werden. Bei den obigen Disk-Images werden dafür aber 0x10 und 0x11 verwendet ... 0xFF könnte die EG-64.1 ("RAM 64.1") Karte sein ...


    Das CP/M von Eberhard Mattes verwendet ebenfalls das "Banking" von Martin Doppelbauer (jedenfalls in diesen Disk-Images) ...


    Auf jeden Fall erstmal Danke! :thumbup:


    (1) In switch_on_and_delay() befinden sich auch zu viele NOPs ... ;)

    Einmal editiert, zuletzt von JenGun ()

  • Denn hier wird offensichtlich eine Spurnummer erhöht (ram:421d), dann allerdings ins *Daten*register des Floppycontrollers geschrieben (ram:4229) und daraufhin ein "seek" ausgelöst (ram:422f).

    Wenn man davon ausgeht, dass hier Spuren gewechselt werden, wird ein Schuh draus.


    Es werden Spuren 0 - 2 (nur Vorderseite !) nach 0x6000 gelesen.

    Damit macht auch der Sprung nach 0x7400 Sinn, da dort ein "JP (HL)" steht, was zurück nach 0x6200 führt.


    Dort wird mittels eines (Mini?-)BIOS die Datei SYS.SYS gelesen.


    In SYS.SYS steht in den ersten beiden Bytes die Zieladresse. Dann wird noch ziemlich im Speicher hin- und her kopiert. Sieht aus wie ein 'Scrambling' zum Schutz vor direktem Auslesen.


    Es raucht ein wenig der Kopf ... ;)

  • Jetzt habe ich endlich den initialen Loader soweit disassembliert (und verstanden 8)), dass ich einen "diskdefs" Eintrag für cpmtools erstellen kann.


    Erstmal habe ich eine .dmk Datei in .img gewandelt, damit die cpmtools was damit anfangen können. Dafür benutze ich HxC (https://sourceforge.net/projects/hxcfloppyemu):

    Code
    hxcfe -finput:flocpm04.dmk -foutput:flocpm04.img -conv:RAW_LOADER

    Dann folgenden Eintrag für diskdefs:

    Jetzt kann ich das eigentliche BIOS (in SYS.SYS bzw. SYS80.SYS) rauskopieren und entschlüsseln.


    Mühsam ernährt sich das Eichhörnchen ...

  • Denn hier wird offensichtlich eine Spurnummer erhöht (ram:421d), dann allerdings ins *Daten*register des Floppycontrollers geschrieben (ram:4229) und daraufhin ein "seek" ausgelöst (ram:422f).

    Wenn man davon ausgeht, dass hier Spuren gewechselt werden, wird ein Schuh draus.

    Herrje !

    Im WD1771 Datenblatt steht's explizit: "Seek - this command assumes that the track register contains the track number of the current position of the read write head and the **data register** contains the desired track number".


    Wer Lesen kann, ist klar im Vorteil :wand:

  • Vom CBIOS des Schmidtke-CP/M ... es wird auch der "Lubomir Soft Banker" und die 80-Zeichenkarte (inkl. "Banking") über die jeweiligen I/O-Ports angesprochen: das kann man im Emulator sehen, allerdings ist es nicht ganz so einfach für mich, dann die richtigen "Rückschlüsse" daraus zu ziehen ...

    Es gibt einen 6845 CRTC an I/O Ports 0x10 (register) und 0x11 (daten) für eine Ausgabe von 80x22(!) Zeichen.

    Das Videoram ist auf 0x3900 - 0x3fdf gemappt.

    Die Mapping Ports muss ich mir jetzt mal näher anschauen. Es ist ziemlich wild auf den ersten Blick.

  • Mit der geänderten Start-Adresse für das Video-RAM (0x3900) funktioniert SYS80.SYS und SYS80N.SYS:



    ... hätte man 0x3800 bis 0x3FFF genommen, wie beim Genie IIIs, dann wären es auch 80 x 25 Zeichen geworden ...


    Die 80-Zeichenkarte von Schmidtke hat 80 x 25 Zeichen und das Video-RAM wird dort entweder ab Adresse 0xB000 oder 0xF000 "eingeblendet" ... meine Vermutung ist, daß in dem Genie, von dem diese Disk-Images stammen, keine 80-Zeichenkarte von Schmidtke vorhanden war, sonst hätte man sich diesen ganzen "Aufwand" sparen können ... ;)