For curious people, who want to know everything.
AllocMem (AllocVec,
AllocPooled, CreatePool), Allocate
(AllocEntry), AvailMem, AllocAbs and in the
Device BeginIO.
Oberon-2 and Assembler.
2^40 = 1,0995 TeraByte 1125,9 GigaByte 2^64 = 18446744,074 TeraByte 1,8889465931776e10 GigaByteThe calculation is carried out with a "fast" 32-Bit division.
( 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,
should be LongWordAlligned (adr MOD 4=0), because the processor can access
them faster then. This also applies to data which is sent directly to a device.
AllocMem, Allocate... automatically return an address that is LongWordAlligned.
So you only have to pay attention if you divide a memory block manually.
SendIO instead of DoIO, the command is
executed Async. Not only reading and writing, but also
changeState, motor, protStatus, remove, changeNum ... commands.
At the first start and after choosing Edit/reset to Defaults from the menu, these values will be used:
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 seconds Disk Async delay = 7 seconds Device| Pri | Settings --------------------------------------------------------------------- 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
The return values can be used within a shell-script.
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.