CBM RD 2008
Zurück   Index    FAQ        5 User online       




Prototyp CBM RAM-Drive 2008 (CBM 8296)

Bei dem Laufwerk handelt es sich eigentlich um eine sehr flexible Speichererweiterung für den CBM 8296, die über einen eigenen Bereich für Treibersoftware verfügt. Die Schaltung entspricht in groben Zügen der vom C64 bekannten Georam oder auch der aktuelleren Version Neoram. Allerdings werden bei dieser Version für den CBM 64kB-Pages verwendet.
So ist im Betrieb der Aufwand etwas verringert. Durch die vier mal so großen Pages braucht man im günstigsten Fall vier mal weniger durch die Speicherseiten zu schalten. Eine Speicherseite entspricht 256 Sektoren mit jeweils 256 Bytes.
Der ROMRAM-Bereich verfügt über 4 x 2kB RAM, dessen Speicherseite über 2 bits vorgewählt werden kann. Wenn man den kompletten RAM der Erweiterung als RAM-Laufwerk verwenden möchte, ist zum Puffern der Daten eine konstante Stromquelle notwendig. Zur Pufferung kann z.B. die Schaltung des
    Neoram-Cartridge oder als Komfort-Lösung ein MAX691 verwendet werden.

Diary
21.09.2008Das DOS wurde nochmal überarbeitet. Ein kleines Hilfsprogramm zum Faken von DIR-Einträgen wurde erstellt. Die BAM wurde erstmal gestrichen. Im Moment entstehen diverse Kern-Routinen und da wird immer mal wieder etwas optimiert.
15.09.2008Ein paar Fehler auf der Seite korrigiert. Das erste Quick-Format-Programm ist fertig.
14.09.2008Erste WEB-Seite online. Die fehlenden Informationen werden folgen. Im Moment soll erst mal ein Formatierungs-Programm entstehen.

Adressen
    $A000: Bit 0 - 7 : Sektoren
    $A001: Bit 0 - 7 : A16 | A17 | A18 | B0 | B1 | R11 | R12 | LED
                        |     |     |     |    |     |    |     |____
                        |     |     |     |    |     |____|___       -LED
                        |     |     |     |____|___           -ROMRAM Banking 4 x 2 kB
                        |_____|_____|___           -RAM 0 - 3 (A19, A20)
                                        - 64kB Pages

    $A400: Datenport (256 Bytes)
    $A800: ROMRAM (2kB Bank) Auswahl der Bank mit $A001: Bit 5-6 (R11,R12)

    Die Register $A000 und $A001 können nur geschrieben werden !

        Der Schaltplan
    Die grundlegende Logik-Schaltung.

        Prototyp
    Der erste handgemachte Prototyp. Die Aufnahme wurde vor dem Entfernen der Zinnkrümel im
    Rechner gemacht. So eine moderne Digi-Cam sieht erstaunlich viel. ;)
    Material ca. 15 Euro, die Arbeit: unbezahlbar.

   

Wie man in der Übersicht erkennen kann, liegen die Adressen im Bereich $A000. Um diese Erweiterung am Memory-Port des CBM8296 nutzbar zu machen, muss man nur den Jumper JU6 auf der Rechnerplatine schliessen. Dazu bietet sich ein Schalter mit Kabel an, falls man ebenfalls den ROM-Steckplatz ohne Erweiterung nutzen möchte. Sobald der Jumper geschlossen ist, werden die Lesezugriffe auf den Bereich $A000-$AFFF nur am Memory-Port durchgeführt. Diese Adresse wurde gewählt, damit der Schaltungsaufwand so gering wie möglich gehalten werden konnte. Die Chip-Select-Leitungen der beiden Erweiterungs-ROMs ($A000, $9000) sind ebenfalls am Mem.-Port vorhanden.
Im Normalbetrieb werden die ROMs gelesen und der Memory-Port nur beschrieben. Da es bei einer Speichererweiterung notwendig ist, deren Inhalt ebenfalls zu lesen, ist das Schließen von JU6 umbedingt erforderlich.
Mit der vorliegenden Schaltung ist eine Speichererweiterung von 2 MB möglich. Wie man im
    Schaltplan leicht erkennen kann, sind noch weitere Register möglich. Mit einem weiteren Register und einem Dekoder könnte man die Erweiterung leicht bis 10 MB ausbauen. Ich verwende für mein RAM-Laufwerk aber einen Minimal-Ausbau von 1 MB, da eine solche Material-Schlacht am Ende kaum einen Nutzen bringen wird.



Konzeption des RAM-Laufwerks - 1MB
     --------------------------------------------------------
     | Track (je 16386 Bytes)  |  Einzelheiten (Sektoren)   |
     --------------------------------------------------------
     |   0                     |  0     :  ROM-Boot         |
     |       BAM & MISC        |  1     :  Directory Header |
     |   Sub-Directories       |  2-3   : BAM               |
     |                         |  4-31  :  Reserved         |
     |                         | 32-63  :  Sub-Directories  |
     |                         |                            |
     --------------------------------------------------------
     |   1                     |                            |
     |       DIR (Files)       |  1 Eintrag : 32 Bytes      |
     |                         |                            |
     --------------------------------------------------------
     |  2-63  (jeweils 64 S.)  |                            |
     |                         |                            |
     |     Datensektoren       |   62 virtuelle Tracks      |
     |                         |                            |
     |      3968 Blocks        |   1015808  Bytes           |
     |                         |                            |
     --------------------------------------------------------
Die Speichererweiterung wird in 64 Tracks mit jeweils 64 Blocks unterteilt. Im ersten Block liegen der ROM-Boot-Sektor. Hier wird ein Kickstart-Code für das ROMRAM untergebracht. Dann ist nach dem Einschalten der Erweiterung ein Start der Erweiterungs-Software mit SYS 41984 ($A400) möglich.


Track 0
      -----------------------------------------------------
     | Eintrag: Directory-Header                          |
      -----------------------------------------------------
     |  Byte   |   Bedeutung                               |
      -----------------------------------------------------
     |  0-15   |   Name der virtuellen Disk                |
     | 16-17   |   Virtual OS-Version                      |
     | 18-19   |   Blocks free                             |
     | 20-31   |   Reserved                                |
      -----------------------------------------------------
 Im Sektor für den Directory-Header sind ebenfalls die Versions-Nummer der Software und die Anzahl der noch freien Blocks untergebracht  In der BAM wird die Belegung der einzelnen Sektoren angezeigt. Sektor 4-30 sind im Moment noch nicht verplant.
      -----------------------------------------------------
     |  Eintrag: Sub-Directory                             |
      -----------------------------------------------------
     |  Byte   |   Bedeutung                               |
      -----------------------------------------------------
     |   0     |   ID                                      |
     |   1     |   Status : $00:DEL , $01:USED             |
     |  2-17   |   Unterverzeichnis-Name                   |
     | 18-31   |   Reserved                                |
      -----------------------------------------------------
 Kenner werden es schon bemerkt haben. Die Struktur ist sehr an das File-System von C= angelehnt. Nur die Sub-Directories sind eigentlich neu und sollen etwas zur Übersicht beitragen. Allerdings ist in der ersten Software-Version nur eine Verzeichnistiefe von 1 geplant.
Track 1
      -----------------------------------------------------
     |  File-Eintrag: Directory                            |
      -----------------------------------------------------
     |  Byte   |   Bedeutung                               |
      -----------------------------------------------------
     |   0-1   |   ID l/h                                  |
     |   2     |   Filetyp ($00:DEL, $01:PRG)              |
     |   3-4   |   Track und Sektor (Daten)                |
     |   5-20  |   Filename  ($20: Fuellbyte)              |
     |   21    |   DIR-Byte ($00:Root)                     |
     |   22-23 |   Pointer                                 |
     |   24    |   Blocks                                  |
     |   25-31 |   Reserved                                |
      -----------------------------------------------------
 In Track 1 werden die 512 möglichen Dateinamen untergebracht.
Track 2 - 63
      -----------------------------------------------------
     |  Sektoren                                          |
      -----------------------------------------------------
     |  Byte   |   Bedeutung                               |
      -----------------------------------------------------
     |   0-255 |   Daten-Bytes                             |
      -----------------------------------------------------
 3968 Sektoren mit jeweils 256 Daten-Bytes. Das entspricht 992kB Datenspeicher.


Programmierung
Basic

  Für einen ersten Test reicht Basic :

       10 poke 40960,0
       20 poke 40961,0: REM poke 40961,128 falls die LED eingeschaltet werden soll.
       30 for a = 0 to 255
       40 poke 41984+a,a
       50 next a

       So wird der erste Sektor mit den Zahlen 0-255 beschrieben.

       10 poke 40960,0
       20 poke 40961,0: REM poke 40961,128 falls die LED eingeschaltet werden soll.
       30 for a = 0 to 255
       40 print peek(41984+a,a);
       50 next a

       Mit Print Peek kann der Inhalt des Sektors gelesen und auf den Bildschirm gebracht werden.

       Mit dem gleichen Prinzip läßt sich das ROMRAM testen. Hierbei muss aber zusätzlich auf
       das Banking geachtet werden. Mit den Bits 5 und 6 von $A001 kann die gewünschte 2kB-Bank vorge-
       wählt werden.

       Bit 5 : R11  | Bit 6 : R12 | 2kB-Bereich
       ----------------------------------------
           0        |     0       | $0000-$07FF
           1        |     0       | $0800-$0FFF
           0        |     1       | $1000-$17FF
           1        |     1       | $1800-$1FFF

Assembler

  Beispiele werden folgen.
Software
Memtest Memory-Test

Ein erster einfacher Speicher-Test. Es wird nur die Speichererweiterung geprüft und kein umfangreicher Adressierungstest ausgeführt.



Download First Memory-Test
Periscope Periscope Beta

Ein erster kleiner Speichermonitor, damit man auch mal in die "Steine" reinschauen kann.
Steuerung :
Taste 1 Page -1 , Taste 2 Page +1
Taste 0 Sektor -1 , Taste "." Sektor +1
Taste P : Page direkt eingeben als HEX
Taste S : Sektor direkt eingeben als HEX
Die Eingabe von Sektor oder Page muß immer zweistellig erfolgen !
Download Periscope Beta

Quick-Format Quick-Format Beta

Formatiert das Laufwerk und schreibt die BAM. Zudem wird der Name "Test" als Drive-Name und das Root-Verzeichnis eingetragen.


Formatierung bei 1MB gut 10 Sekunden ! :0)

Download Quick-Format Beta



Sonstiges
Memtest Die aktuelle Schaltung

Schaltplan und Board ohne Akku-Beschaltung. Bitte selbst überprüfen ! Der Schaltplan und das Board wurden nochmals ausgetauscht. Es fehlten zwei Dioden !

Download Eagle Schaltplan und Board




Valid XHTML 1.0 Transitional Valid CSS!

© 1999-2016 Retro-CMS by M. Sachse http://www.cbmhardware.de