Am 13.09.16 um 20:27 schrieb Gerhard Stoll:
> Das PC Carddrive HPC301.
Ist zwar schon ein paar Tage her aber trotzdem zur Rückmeldung.
Ich hatte mich entschlossen keinen Gerätetreiber zuschreiben. Einmal
habe ich trotz dem Beispiel aus Scheibenkleister II da nix zustande
gebracht, zum anderem sind die Daten einer MemoryCard doch ziemlich
unterschiedlich das ich denke das das TOS damit nicht zurecht kommt.
Die Karten haben grundsätzlich eine FAT und einen Cluster pro Sektor.
Ein Sektor kann 128, 256 oder 512 Bytes besitzen.
Da ich eine Lib gefunden habe welche damit zurecht kommt habe ich diese
genommen. Für den Milan gibt das Ergebins als Programm hier:
<
http://www.atari-forum.com/viewtopic.php?f=96&t=32412&sid=27daade0cb88e68a74c642ae49838219>
Schreiben geht auch, allerdings nur eine Datei auf einmal und nur ins
Wurzelverzeichnis.
Zur Technik des PC Carddrive HPC301:
Da ich keine Doku finden konnte habe ich den MS-DOS Treiber disassembliert.
Dabei hat sich heraus gestellt, das die Karte vier Adressen im ISA Bus
belegt.
Adr1 ist zum lesen und schreiben von Bytes
Adr2 und Adr3 zum setzen der Adresse auf der Speicherkarte.
Adr4 ist eine Status- und Steuerregister
Interessant bei der Sache ist das man an Adr2 und Adr3 nur einmal die
Adresse angeben muss. Greift man mit Adr1 auf ein Byte zu wird auf der
Karte weitergezählt und man bekommt mit dem nächsten Zugriff das nächste
Byte.
Das Lesen eine Sektors sieht dann in meinem Programm so aus:
--------------- cut ------------------
SetzeSektor ( sector ); /* Setzen der Adresse */
for ( i = 0; i < BPB.recsiz; i++)
{
*Buf = inb ( Adr1 );
Buf++;
}
--------------- cut ------------------
Angeregt durch einen Nutzer habe ich mal probiert ob es auch mit der
EtherNEC funkrioniert, was der Fall ist. Zumindest an meinem MegaST kann
ich das Inhaltsverzeichnis auslesen und den Status des
Schreibschutzschalter ermitteln. Letztes bedeutet das auch das Schreiben
geht.
Das obige Programm läuft nur auf dem Milan.
Gerhard