Home MagiCMagiC Spezielle Fehlermeldungen von MagiCSpezielle Fehlermeldungen von MagiC Das Iconify in MagiCDas Iconify in MagiC

11.9 Der Hintergrund-DMA von MagiC

Ab MagiC 3 ist das gesamte DOS einschließlich der Zugriffe auf DOS Dateisysteme reentrant und läuft im Hintergrund ab. So ist es möglich, auf Laufwerk A Dateien zu bearbeiten, ohne den Rechner bei den Diskettenzugriffen merklich zu bremsen. Voraussetzung hierfür sind jedoch Disketten- und Festplattenroutinen, die im Hintergrund arbeiten.

Damit der Plattentreiber diese Funktionen nicht zur Verfügung zu stellen braucht, enthält das BIOS von MagiC alle notwendigen Funktionen. Über den MagX-Cookie (Komponente hddrv_functions) erhält man Zugriff auf die folgende Struktur, die Zeiger auf wichtige Routinen des Hintergrund-DMAs enthält:

typedef struct
{
    LONG dma_begin ( VOID);
    LONG dma_end   ( VOID );
    LONG dma_wait  ( d0 = LONG ticks_200hz );
    LONG ncr_begin ( VOID );
    LONG ncr_end   ( VOID );
    LONG ncr_wait  ( d0 = LONG ticks_200hz );
} HDFUNCS;

Hinweis: Direkt vor der Struktur (2 Bytes vorher) liegt ein WORD, das die Tabellenlänge in LONGs angibt (in diesem Fall 6). Alle 6 Zeiger liegen im Systemvariablenbereich und dürfen notfalls verändert werden. Die internen Funktionen für die Floppy springen ebenfalls über die 6 Zeiger. Wichtig: Der Zeiger hddrv_functions im MagX-Cookie darf nicht verändert werden.

Zur Bootzeit ist das präemptive Multitasking abgeschaltet (eigentlich ist auch das Multitasking abgeschaltet), aber die Routinen funktionieren auch vor Installation des AES, wobei die Warteroutinen dann ein 'busy waiting' machen (wie auch beim Abschalten des präemptiven Multitasking), und die Semaphorenroutinen machen (bis auf das Setzen und Löschen von flock) einfach nichts.

Dieser Hypertext enthält Auszüge aus dem BIOS von MagiC, die demonstrieren sollen, wie das ganze funktioniert; dazu einige Worte:

Querverweis: BIOS   GEMDOS   XFS-Konzept in MagiC


Home MagiCMagiC Spezielle Fehlermeldungen von MagiCSpezielle Fehlermeldungen von MagiC Das Iconify in MagiCDas Iconify in MagiC