Für neugierige, die alles wissen wollen.
AllocMem (AllocVec,
AllocPooled, CreatePool), Allocate
(AllocEntry), AvailMem, AllocAbs und vom
Device BeginIO verändert.
Oberon-2 und Assembler.
2^40 = 1,0995 TeraByte 1125,9 GigaByte 2^64 = 18446744,074 TeraByte 1,8889465931776e10 GigaByteDie Berechnung wird mit einer "schnellen" 32-Bit Dividierung bewerkstelligt.
( SCSIProgrammer ) ( (include:scsi/commands.h SCSI-2 include files) ) ( Direct Access devices =da ) ( Write Once devices =wo ) ( CD-ROM devices =cd ) ( Scanner devices =sc ) ( Optical memory devices =om ) ( Sequential access devices =sa ) ( Printer devices =prt) ( Processor devices =cpu) scsiREAD6 =$08 ( da wo cd om )(not tested) scsiREAD10 =$28 ( da wo cd sc om ) scsiREAD12 =$A8 ( wo cd om )(not tested) scsiWRITE6 =$0A ( wo om )(not tested) scsiWRITE10 =$2A ( wo om ) scsiWRITE12 =$AA ( wo om )(not tested)
scsiREAD_BUFFER =$3C ( da wo cd sc om sa prt cpu ) scsiWRITE_BUFFER =$3B ( wo cd sc om sa prt cpu ) scsiUPDATE_BLOCK =$3D ( om )
Read/Write gelesen/geschrieben werden,
sollten LongWordAlligned (adr MOD 4=0) ausgerichtet sein, da der Prozessor
dann schneller auf sie zugreifen kann. Das gilt auch für Daten die direkt an
ein Device geschickt werden. AllocMem, Allocate... liefern automatisch
eine Adresse die LongWordAlligned ist zurück. Sie müssen das also nur
beherzigen wenn sie einen Speicherblock manuell zerteilen.
SendIO statt DoIO benutzen, wird
der Befehl Async ausgeführt. Nicht nur beim Lesen und Schreiben, sondern
auch bei changeState, motor, protStatus, remove, changeNum ... Befehlen.
Beim ersten Start und wenn im Menü Edit/reset to Defaults ausgwählt wird, werden folgende Werte benutzt:
Create Icons = FALSE (OFF) Not used FastMemory = 60 KB Not used ChipMemory = 50 KB FastMemFirst = TRUE (ON) View color flash if track moved or deleted = FALSE (OFF) Protect tracks in memory with checksummes = FALSE (OFF) HD Async delay = 4 Sekunden Disk Async delay = 7 Sekunden Device| Pri | Einstellungen --------------------------------------------------------------------- DF0 | 100 | Removeable Disk, Write Async, Verify write DF1 | 100 | Removeable Disk, Write Async, Verify write DF2 | 100 | Removeable Disk, Write Async, Verify write DF3 | 100 | Removeable Disk, Write Async, Verify write DS0 | 80 | Removeable Disk, Write Async, Verify write DS1 | 80 | Removeable Disk, Write Async, Verify write DS2 | 80 | Removeable Disk, Write Async, Verify write DS3 | 80 | Removeable Disk, Write Async, Verify write PC0 | 60 | Removeable Disk, Write Async, Verify write PC1 | 60 | Removeable Disk, Write Async, Verify write PC2 | 60 | Removeable Disk, Write Async, Verify write PC3 | 60 | Removeable Disk, Write Async, Verify write PS0 | 40 | Removeable Disk, Write Async, Verify write PS1 | 40 | Removeable Disk, Write Async, Verify write PS2 | 40 | Removeable Disk, Write Async, Verify write PS3 | 40 | Removeable Disk, Write Async, Verify write CD0 | 20 | Removeable Disk, WriteRetention HD0 | 0 | Write Async HD1 | 0 | Write Async HD2 | 0 | Write Async HD3 | 0 | Write Async DH0 | 0 | Write Async DH1 | 0 | Write Async DH2 | 0 | Write Async DH3 | 0 | Write Async
Die Return Nummern, können Mittels Shell Script abgefragt werden.
Sys:Prefs/FDAPref ENVARC:FDA-AfterBoot.prefs USE
IF WARN ;FDA is not running
        RUN Sys:System/FDA ENVARC:FDA-AfterBoot.prefs QUIET
ENDIF
Sys:System/FDAView >NIL: Kill-FDA
IF NOT WARN ;FDA is running before
        RUN Sys:System/FDA ENVARC:FDA-AfterBoot.prefs QUIET
ENDIF
RUN Sys:System/FDA ENVARC:FDA-AfterBoot.prefs QUIET IF $RC GE 5 ;FDA is running before Sys:Prefs/FDAPref ENVARC:FDA-AfterBoot.prefs USE ENDIF
AlreadyRunning = warn (5) PreferenceCancel = error (10) PreferenceFDAnotRunning = warn (5) NoDeviceCached = fail+1 (20 +1) CanNotCreatePort = fail+2 ReadArgsError = fail+3 CanNotReadPrefs = fail+4 CanNotCreateTask = fail+5 AllocSignalError = fail+6 NoMem = fail+777-fail
Go to the first, previous, next, last section, table of contents.