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.