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.