
DOS
===

  Much improved dos, and some new commands.

  Look for 'addbuffers dfx: nn'
  which will add nn buffers to the list of sector caches for drive x.
  Smarter caching and new disk layout. For optimal performance; relay
  out your disk by using copy all. 

  New mode for opening files - MODE_READWRITE which opens an old file
  with an exclusive lock. (The actual value is 1004). Provided the
  name MODE_READONLY as a synonym for MODE_OLDFILE. Look for new      
  dos.h. Requestors asking for a disk to be inserted are now only     
  displayed once the light on the disk has been turned off; thus not 
  encouraging users to damage their disks so much.

  CON: and RAW: parameter values are now not checked by dos; they
  will be checked by intuition eventually but as of now they are
  not checked at all.

  Improved handling of sector allocation bitmap; should be fast for
  hard disks.

  RAM:                   handles parent(); allows null file name;
                         seek in empty file not now an error;
                         faster transfer rate; better out of memory
                         handling

The ramdisk released is about 30% faster than the 1.1 ram disk.

Ramdisk now has an icon. It will appear whenever the ram disk
is built. It is built whenever you touch ram disk with a dir,
or copy something into it. You can't get rid of the icon though,
although you can get rid of all the contents of the ramdisk.
Seek works fine on large files now.

AmigaDos SetDate command handles strings correctly now.

Developers Note: WaitForChar() can't be used on non-interactive stream.


Ram Handler
===========

The RAM handlers record of space used is now correct, so INFO
gives the right results.

The ripcord has  been removed, so RAM now only takes about 10k
when first loaded. Instead it checks the free memory pool and
will claim disk full if there is no single block greater than
30k free.


Nil
===
Copy * to NIL:  no longer quits early.


Paths
=====
   Technical Note: The path list is held as a BPTR in the CommandDir
     member of the CLI structure.  Although currently documented
     as the lock on the command directory, this is either 0 or
     a BPTR to a list of path elements, each consisting of:
        BPTR NextPath     (BPTR to next list entry)
        BPTR PathLock     (a lock on the directory)



Ram Handler
===========
The RAM handlers record of space used is now correct, so INFO
gives the right results.

The ripcord has  been removed, so RAM now only takes about 10k
when first loaded. Instead it checks the free memory pool and
will claim disk full if there is no single block greater than
30k free.

The SetFileDate packet (and therefore the SETDATE command) now
work properly on ram: files.


Ramdisk
=======
Seek works fine on large files now.


Requesters
==========
The unit number fields in DOS requestors have been expanded to
two digits.

The text of the requestor put up by the filing system when a
disk is removed while the red light is on has been made more insistent.
It now says:
       
      You MUST replace volume
      xxxxxxxx
      in unit dd !!!

Now the only way to remove this requestor (and read/write error
requestors too) is to click one of the gadgets. It used to go
away if the disk in another drive was changed.


Archive Bit
===========
Bit 4 of the protection field is now cleared whenever a file which
has been written to is closed, or a directory updated. This will
allow an archiving program to scan a disk and detect those file which
have been altered since it last ran. It can use the protect function
to set the archive bit to mark the file as archived.

The PROTECT command has been modified to alter only the lower 4 bits
of the protection field and preserve the rest. It used to set them 
all to 1.


dos.h, dos.i
============
added FIBB_ARCHIVE and FIBF_ARCHIVE


New Dos Packets
===============
   Note - These new packets are not defined in the dosextens headers.
          Define them in your code.

1) SetFileDate (=34L)
   Sets the date of a file or directory to specified date.
   The packet is sent to the MsgPort returned by DeviceProc(filename).
   The args for the packet are
    arg[0] = NULL
    arg[1] = lock on ParentDir of file
    arg[2] = BPTR to BSTR of filename 
    arg[3] = APTR to a DateStamp structure
   A new CLI command SetDate <file> <date> [<time>] is also provided.

   Note that SetFileDate packet and SetDate command did not work
   properly on both ram and disk files until Release version of 1.2.

2) SetRawMode (=994L)
   Switches CON: into raw mode and back again. The single argument
   is DOS TRUE (-1L) for raw mode (as if RAW: had been requested)
   and DOS FALSE (0L) to turn it back to CON: style.  The packet is 
   sent to a (struct MsgPort *)process->pr_ConsoleTask.

   Note that in addition to this an escape sequence may be sent
   by the user if required to turn on or off the automatic translation
   of LF to CR/LF. Normally RAW: does not enable this and CON: does.
   Sending the packet SetRawMode does not affect the translation.
   The code is CSI 20h to enable translation and CSI 20l to disable.

3) Flush (=27L)
   Cause pending blocks to be written out and motor turned off.
   This is expensive, so should not be done after every write.
   It is used by the system before putting up a requestor saying
   "Change Disk" and the packet is only returned when the job
   is done.  This action would be useful in a database when it 
   wished to commit.

4) MoreCache (=18L)
   The single argument indicates the number of extra cache buffers
   to be obtained for use.  Used by ADDBUFFERS command.

5) A DiskInfo packet (ACTION_DISK_INFO = 25L) sent to the console handler 
   ((struct MsgPort *)process->pr_ConsoleTask)) now returns not only the
   window pointer in the id_VolumeNode field, but also a pointer to the 
   console IO block used by the console handler in the id_InUse field.
   (These fields are part of the InfoData structure that is filled
   in by sending the ACTION_DISK_INFO packet).  Remember that you must
   AllocMem your InfoData structure to assure longword alignment 
   since a BPTR to the structure is arg[0] of the packet.
   A pointer to the ConUnit structure (see devices/conunit.h, .i)
   can be found via the console IO block pointer:
      conUnit = (struct ConUnit *)
                   ((struct IOStdReq *)infoData->id_InUse)->io_Unit;

   There is a lot of useful information in the ConUnit structure
   such as text cursor position and limits.  If you are using the
   exec console.device directly, you should be able to get the
   ConUnit pointer from yourIoRequest->io_Unit.

   

Additional Upgrades to Dos
==========================
1) Uses exec CopyMem & CopyMemQuick for all copies in DISK & RAM

2) Ram now writes files in blocks of 512 bytes rather than 1 block
   per write as before.

3) Printa & stripa now handle debug hunks. 

4) There was formerly a race condition when a disk was pulled while the 
   dos was starting the write of a large file.  If the disk was pulled
   in the 1/4-1/2 second interval before the disk light came on, 
   dos used to put up a requester that said I/O error.  If you replaced
   the disk, it crashed.  If you now pull the disk before the light comes
   on, dos puts up a requester that asks you to reinsert the disk, and it
   no longer crashes when you do.

5) Seek() now much faster for larger files.

6) Both directory and data blocks cached, disk layout improved so that
   directory access is much faster.  Also small files (one block) are
   optimized to be placed on the same track as the file header.  This
   means that access to the first 488 bytes of a file is quicker.

7) The search for a free block has been improved so that directory
   access is much faster for large disks.  Note, however, that
   AmigaDOS really does want to know how many tracks, surfaces, and
   sectors on a disk.  If you lie to it in a MOUNT file saying that
   it has one track, one surface, and 32000 sectors then this will
   work, but bitmap and disk access will be slow.

8) More than 26 bitmaps are now supported, so that disks >54Mbytes are OK.

9) The specification of the DevInfo structure has been expanded.  The
   entry GlobVec used when the DevInfo entry refers to a device is
   documented as being a global vector pointer or zero.  Now this value
   may be -1, which means that the handler process does not need a
   global vector pointer and should be called as a C process.
   In a mountlist, GlobVec = 1 may be used to specify a global vector
   of -1 for a non-BCPL handler.

10) Cache buffers may be allocated from chip or fast memory; the
    default is fast memory but the trackdisk device requires chip
    memory.  This value is placed as an extension to the file system
    startup environment data.  In a mountlist, set BufMemType equal
    to the numeric value of the flags for the AllocMem of buffers.
    
11) The Execute() function now returns the result2 field from the last
    command called in the Execute string.  Thus calling IoErr() after
    Execute will provide a zero if the command worked and the error code
    otherwise.  Note this is the error code and not the return code.

12) ^\ does not now generate a newline before the EOF character.


Dos Bugs Fixed
==============
1) Attempting to write a negative number of bytes now fails rather than
   behaving strangely.
2) DIR, LIST and other directory searches do not now loop if CANCEL is
   chosen when the disk is unreadable.
3) Console handler does not now hang if characters are typed rapidly
   at it while new windows are being opened.
4) The timestamp on a disk is updated when the protection, filenote, name 
   or date of a file or directory is altered.
5) Fixed bug which caused the system failing to notice that a new disk
   had been inserted in a new drive.
6) Fixed bug which caused Info() to hang if given a zero lock and no
   disk in the drive.
7) Version 2.32 of the linker now handles overlays correctly.
8) ED now does insert file properly. 
9) ED clears ^D flag (+ others) berfore exiting. 
10) ED understands disk full
11) ED doesn't screw display when resizing windows
12) TYPE Alignment of bytes in last line of a typehex now OK.
13) DIR Pattern matches files & directories
14) LIST No longer always matches files with ! in name
15) STATUS shows proper command name & priorities
16) Ram-handler understands protection & filenotes
17) Ram-handler - seek bugs fixed
18) Ram-handler - Should now not crash system on disk full

DiskCopy won't change the volume name under CLI.
If it doesn't finish the copy if marks the destination disk bad instead
of confusing DOS.

Fix to problem with bitmap not being marked as valid
when small files are rewritten.  Happened when
preferences was saved, causing disk to need to be
revalidated on reboot.

new sys:system/cli program correctly sets the default stack size to 4000.

the run command no longer changes your priority.

Fixed bug in access().  The bug was that writes to existing
files did not get flushed out to disk.  Now the right stuff happens.

new loadwb and system/cli
All in the interest of inheriting a path that is set up
in one's startup sequence.  Therefore the path commands
will be added back to the default startup sequence file.


Bug in CreateProc() which failed when out of memory is fixed.  Also
the name passed to CreateProc() is now copied so the name remains
valid even if the creator is no longer in memory.

Bug in Exit which caused it to not work from standalone processes fixed.










