Hier ein Beispiel, welches Sektoren von der MMC/SD Karte einliest und auf der Seriellen Schnittstelle ausgibt.

Bei den Funktionen DriveReadSector und DriveWriteSector ist zu beachten, dass ein Adresspointer übergeben wird.
Das gibt den Funktionen die Möglichkeiten, jeden Bereich im SRAM auf die Karte zu schreiben, bzw vor dort zu überschreiben, ohne dass dort eine Variable deklariert sein muss. Soll jedoch in eine Variable (Byte-Array mit 512 Bytes) geschrieben werden, muss man zuerst mit VarPtr die Adresse auslesen (siehe dazu das Beispiel)


Code:
$Regfile =  "M162def.dat"
$Crystal = 8000000
$HWStack = 32
$SWStack = 32
$FrameSize = 64
$Baud = 9600

Declare Sub Sramdump(byval pwsrampointer As Word , Byval Pwlength As Word)
$Include "Config_MMC.bas"
'$Include "Config_XRAMDrive0.bas" ' Zum Testen mit dem Simulator

If gbDriveError <> 0 then
   Print "MMC/SD Initialisierung fehlgeschlagen"
   end
Endif



Dim bError as Byte
Dim aBuffer(512) as Byte     ' SRAM-Bereich für den Transfer
Dim wSRAMPointer as Word     ' Adress-Pointer für den Drive... Routine
Dim lSectorNumber as Long    ' Variable für Sektor-Nummer


' Adresse des Buffers in die Variable

wSRAMPointer =VarPtr(aBuffer(1))

' Die ersten 100 Sektoren ausgeben
For lSectorNumber = 0 to 100

   bError = DriveReadSector( wSRAMPointer , lSectorNumber)
   ' Konnte der Sektor eingelesen werden?
   if bError > 0 then
      Print "Drive Fehler: " ; bError ; " bei Sektor " ; lSectorNumber
      exit for
   endif

   Print "Sektor " ; lSectorNumber

   ' Sektor ausgeben
   SRAMDump wSRAMPointer, 512

next
end





Sub Sramdump(byval pwsrampointer As Word , Byval Pwlength As Word)
    ' Dump a Part of SRAM to Print-Output #1
    ' pwSRAMPointer: (Word) Variable which holds the address of SRAM to dump
    ' pwLength: (Word) Count of Bytes to be dumped (1-based)
    Local Lsdump As String * 16
    Local Lbyte1 As Byte , Lbyte2 As Byte
    Local Lword1 As Word , Lword2 As Word
    Local Llong1 As Long

    If Pwlength > 0 Then
      Decr Pwlength
      For Lword1 = 0 To Pwlength
         Lword2 = Lword1 Mod 8
         If Lword2 = 0 Then
            If Lword1 > 0 Then
               Print  " " ;
            End If
         End If
         Lword2 = Lword1 Mod 16
         If Lword2 = 0 Then
            If Lword1 > 0 Then
               Print  "  " ; Lsdump
            End If
            Llong1 = Lword1
            Print  Hex(llong1) ; "  " ;
            Lsdump = "                "
            Lbyte2 = 1
         End If
         Lbyte1 = Inp(pwsrampointer)
         Incr Pwsrampointer
         Print  Hex(lbyte1) ; " " ;
         If Lbyte1 > 31 Then
            Mid(lsdump , Lbyte2 , 1) = Lbyte1
         Else
             Mid(lsdump , Lbyte2 , 1) = "."
         End If
         Incr Lbyte2
      Next
      Print  "   " ; Lsdump
    End If
    Incr Pwlength
End Sub
Für den Transfer vom SRAM auf die Karte ist die Funktion DriveWriteSector in gleicher Weise zu verwenden.