
			V40 Kickstart Release Notes

   ************************************************************************
   *									  *
   *				COPYRIGHTS				  *
   *									  *
   *		   UNLESS OTHERWISE NOTED, ALL FILES ARE		  *
   *									  *
   *  Copyright (c) 1985-1993 Commodore-Amiga, Inc.  All Rights Reserved  *
   *									  *
   ************************************************************************


   ************************************************************************
   *									  *
   *	    		COPYRIGHTED DEVELOPER MATERIALS		  	  *
   *									  *
   ************************************************************************

   THIS SOFTWARE AND INFORMATION IS COPYRIGHTED.

   THIS SOFTWARE AND INFORMATION MAY NOT BE REDISTRIBUTED, DISCLOSED,
   OR DUPLICATED, IN WHOLE OR IN PART, IN ANY MANNER OTHER THAN AS
   SPECIFIED IN A SIGNED AGREEMENT WITH COMMODORE.
 
   ************************************************************************
   *									  *
   *				DISCLAIMER				  *
   *									  *
   *   THIS SOFTWARE AND INFORMATION IS PROVIDED "AS IS".		  *
   *   NO REPRESENTATIONS OR WARRANTIES ARE MADE WITH RESPECT TO THE	  *
   *   ACCURACY, RELIABILITY, PERFORMANCE, CURRENTNESS, OR OPERATION	  *
   *   OF THIS SOFTWARE AND INFORMATION, AND ALL USE IS AT YOUR OWN RISK. *
   *   NEITHER COMMODORE NOR THE AUTHORS ASSUME ANY RESPONSIBILITY OR	  *
   *   LIABILITY WHATSOEVER WITH RESPECT TO YOUR USE OF THIS SOFTWARE	  *
   *   AND INFORMATION.							  *
   *									  *
   ************************************************************************



			    AMIGA KICKSTART V40.65


A3000:

Building kickstart 40.65 from BuildList <A3000> : 03-Nov-93 17:00:56

            exec 40.10   @ $F80000-$F837D8 Size:  14296  (15.7.93)
          layers 40.1    @ $F837D8-$F8698C Size:  12724  (15.2.93)
          keymap 40.4    @ $F8698C-$F8760C Size:   3200  (12.3.93)
         mathffp 40.1    @ $F8760C-$F87AA8 Size:   1180  (16.3.93)
        scsidisk 40.8    @ $F87AA8-$F8A79C Size:  11508  (3.11.93)
           audio 37.10   @ $F8A79C-$F8B83C Size:   4256  (26.4.91)
       battclock 39.3    @ $F8B83C-$F8C1A8 Size:   2412  (20.4.92)
         battmem 39.2    @ $F8C1A8-$F8C38C Size:    484  (6.3.92)
        rawinput 40.1    @ $F8C38C-$F8D9C0 Size:   5684  (8.3.93)
           wbtag 39.1    @ $F8D9C0-$F8DA84 Size:    196  (20.4.92)
     con-handler 40.2    @ $F8DA84-$F90248 Size:  10180  (12.5.93)
         console 40.2    @ $F90248-$F93ECC Size:  15492  (5.3.93)
            misc 37.1    @ $F93ECC-$F93F7C Size:    176  (8.1.91)
             dos 40.3    @ $F93F7C-$F9DB88 Size:  39948  (1.4.93)
           bonus 40.1    @ $F9DB88-$F9DC88 Size:    256  (15.2.93)
              fs 40.1    @ $F9DC88-$FA3C28 Size:  24480  (15.2.93)
        graphics 40.24   @ $FA3C28-$FBCCB4 Size: 102540  (18.5.93)
            icon 40.1    @ $FBCCB4-$FBF0E4 Size:   9264  (15.2.93)
           strap 40.1    @ $FBF0E4-$FBFFFC Size:   3864  (8.3.93)
   Kickety-Split ------- @ $FC0000-$FC0008 Size:     12 bytes skipped
         utility 40.1    @ $FBFFFC-$FC09C4 Size:   2504  (10.2.93)
      filesysres 40.1    @ $FC09C4-$FC0B64 Size:    416  (15.2.93)
 mathieeesingbas 40.4    @ $FC0B64-$FC0E50 Size:    748  (16.3.93)
           potgo 37.4    @ $FC0E50-$FC0F88 Size:    312  (28.1.91)
             ram 39.4    @ $FC0F88-$FC3400 Size:   9336  (9.8.92)
            disk 37.2    @ $FC3400-$FC3748 Size:    840  (21.4.91)
          ramlib 40.2    @ $FC3748-$FC3B6C Size:   1060  (5.3.93)
        bootmenu 40.5    @ $FC3B6C-$FC517C Size:   5648  (17.3.93)
           shell 40.2    @ $FC517C-$FC965C Size:  17632  (4.3.93)
           timer 39.4    @ $FC965C-$FCA448 Size:   3564  (29.7.92)
       expansion 40.2    @ $FCA448-$FCAFEC Size:   2980  (9.3.93)
       trackdisk 40.1    @ $FCAFEC-$FCCCF4 Size:   7432  (12.3.93)
        ramdrive 39.35   @ $FCCCF4-$FCD2E8 Size:   1524  (21.5.92)
       intuition 40.85   @ $FCD2E8-$FE6C88 Size: 104864  (5.5.93)
        gadtools 40.4    @ $FE6C88-$FEC81C Size:  23444  (24.5.93)
              wb 40.5    @ $FEC81C-$FFDC24 Size:  70664  (24.5.93)
             cia 39.1    @ $FFDC24-$FFE014 Size:   1008  (10.3.92)

Build of kickstart 40.65 completed at : 03-Nov-93 17:01:32


A1200:

Building kickstart 40.65 from BuildList <A1200> : 03-Nov-93 17:05:12

            exec 40.10   @ $F80000-$F837B8 Size:  14264  (15.7.93)
       expansion 40.2    @ $F837B8-$F84290 Size:   2776  (9.3.93)
 mathieeesingbas 40.4    @ $F84290-$F85134 Size:   3748  (16.3.93)
  graphics_aa_nt 40.24   @ $F85134-$F9E5B8 Size: 103556  (18.5.93)
             dos 40.3    @ $F9E5B8-$FA81C4 Size:  39948  (1.4.93)
              fs 40.1    @ $FA81C4-$FAE164 Size:  24480  (15.2.93)
         console 40.2    @ $FAE164-$FB1DE8 Size:  15492  (5.3.93)
          layers 40.1    @ $FB1DE8-$FB4F9C Size:  12724  (15.2.93)
            a300 40.8    @ $FB4F9C-$FB792C Size:  10640  (3.11.93)
     con-handler 40.2    @ $FB792C-$FBA0F0 Size:  10180  (12.5.93)
        bootmenu 40.5    @ $FBA0F0-$FBB700 Size:   5648  (17.3.93)
           audio 37.10   @ $FBB700-$FBC7A0 Size:   4256  (26.4.91)
         cardres 40.4    @ $FBC7A0-$FBD384 Size:   3044  (4.5.93)
         utility 40.1    @ $FBD384-$FBDD40 Size:   2492  (10.2.93)
       battclock 39.3    @ $FBDD40-$FBE6AC Size:   2412  (20.4.92)
        carddisk 40.1    @ $FBE6AC-$FBEFDC Size:   2352  (12.2.93)
            disk 37.2    @ $FBEFDC-$FBF324 Size:    840  (21.4.91)
         mathffp 40.1    @ $FBF324-$FBF7C0 Size:   1180  (16.3.93)
             cia 39.1    @ $FBF7C0-$FBFBB0 Size:   1008  (10.3.92)
           wbtag 39.1    @ $FBFBB0-$FBFC74 Size:    196  (20.4.92)
           potgo 37.4    @ $FBFC74-$FBFDAC Size:    312  (28.1.91)
            misc 37.1    @ $FBFDAC-$FBFE5C Size:    176  (8.1.91)
      filesysres 40.1    @ $FBFE5C-$FBFFFC Size:    416  (15.2.93)
   Kickety-Split ------- @ $FC0000-$FC0008 Size:     12 bytes skipped
          ramlib 40.2    @ $FBFFFC-$FC042C Size:   1072  (5.3.93)
        ramdrive 39.35   @ $FC042C-$FC0A20 Size:   1524  (21.5.92)
           strap 40.1    @ $FC0A20-$FC1938 Size:   3864  (8.3.93)
           timer 39.4    @ $FC1938-$FC2724 Size:   3564  (29.7.92)
          keymap 40.4    @ $FC2724-$FC33A4 Size:   3200  (12.3.93)
        rawinput 40.1    @ $FC33A4-$FC49D8 Size:   5684  (8.3.93)
       trackdisk 40.1    @ $FC49D8-$FC66E0 Size:   7432  (12.3.93)
            icon 40.1    @ $FC66E0-$FC8B10 Size:   9264  (15.2.93)
             ram 39.4    @ $FC8B10-$FCAF88 Size:   9336  (9.8.92)
           shell 40.2    @ $FCAF88-$FCF468 Size:  17632  (4.3.93)
       intuition 40.85   @ $FCF468-$FE8E08 Size: 104864  (5.5.93)
        gadtools 40.4    @ $FE8E08-$FEE99C Size:  23444  (24.5.93)
              wb 40.5    @ $FEE99C-$FFFDA4 Size:  70664  (24.5.93)
         battmem 39.2    @ $FFFDA4-$FFFF88 Size:    484  (6.3.92)

Build of kickstart 40.65 completed at : 03-Nov-93 17:05:50


A4000:

Building kickstart 40.65 from BuildList <A4000> : 03-Nov-93 17:06:28

            exec 40.10   @ $F80000-$F837C0 Size:  14272  (15.7.93)
          layers 40.1    @ $F837C0-$F86974 Size:  12724  (15.2.93)
             cia 39.1    @ $F86974-$F86D64 Size:   1008  (10.3.92)
           strap 40.1    @ $F86D64-$F87C7C Size:   3864  (8.3.93)
           a1000 40.8    @ $F87C7C-$F8A5E8 Size:  10604  (3.11.93)
        bootmenu 40.5    @ $F8A5E8-$F8BBF8 Size:   5648  (17.3.93)
       battclock 39.3    @ $F8BBF8-$F8C564 Size:   2412  (20.4.92)
        ramdrive 39.35   @ $F8C564-$F8CB58 Size:   1524  (21.5.92)
        rawinput 40.1    @ $F8CB58-$F8E18C Size:   5684  (8.3.93)
            disk 37.2    @ $F8E18C-$F8E4D4 Size:    840  (21.4.91)
     con-handler 40.2    @ $F8E4D4-$F90C98 Size:  10180  (12.5.93)
         console 40.2    @ $F90C98-$F9491C Size:  15492  (5.3.93)
           potgo 37.4    @ $F9491C-$F94A54 Size:    312  (28.1.91)
             dos 40.3    @ $F94A54-$F9E660 Size:  39948  (1.4.93)
           bonus 40.1    @ $F9E660-$F9E760 Size:    256  (15.2.93)
              fs 40.1    @ $F9E760-$FA4700 Size:  24480  (15.2.93)
  graphics_aa_nt 40.24   @ $FA4700-$FBDB84 Size: 103556  (18.5.93)
             ram 39.4    @ $FBDB84-$FBFFFC Size:   9336  (9.8.92)
   Kickety-Split ------- @ $FC0000-$FC0008 Size:     12 bytes skipped
           timer 39.4    @ $FBFFFC-$FC0DF4 Size:   3576  (29.7.92)
           audio 37.10   @ $FC0DF4-$FC1E94 Size:   4256  (26.4.91)
      filesysres 40.1    @ $FC1E94-$FC2034 Size:    416  (15.2.93)
           wbtag 39.1    @ $FC2034-$FC20F8 Size:    196  (20.4.92)
         mathffp 40.1    @ $FC20F8-$FC2594 Size:   1180  (16.3.93)
            icon 40.1    @ $FC2594-$FC49C4 Size:   9264  (15.2.93)
          ramlib 40.2    @ $FC49C4-$FC4DE8 Size:   1060  (5.3.93)
            misc 37.1    @ $FC4DE8-$FC4E98 Size:    176  (8.1.91)
 mathieeesingbas 40.4    @ $FC4E98-$FC5D3C Size:   3748  (16.3.93)
           shell 40.2    @ $FC5D3C-$FCA21C Size:  17632  (4.3.93)
          keymap 40.4    @ $FCA21C-$FCAE9C Size:   3200  (12.3.93)
       expansion 40.2    @ $FCAE9C-$FCB9CC Size:   2864  (9.3.93)
       trackdisk 40.1    @ $FCB9CC-$FCD6D4 Size:   7432  (12.3.93)
         utility 40.1    @ $FCD6D4-$FCE090 Size:   2492  (10.2.93)
       intuition 40.85   @ $FCE090-$FE7A30 Size: 104864  (5.5.93)
        gadtools 40.4    @ $FE7A30-$FED5C4 Size:  23444  (24.5.93)
              wb 40.5    @ $FED5C4-$FFE9CC Size:  70664  (24.5.93)
         battmem 39.2    @ $FFE9CC-$FFEBB0 Size:    484  (6.3.92)

Build of kickstart 40.65 completed at : 03-Nov-93 17:07:03


The following notes pertain to differences between Kickstarts 39.106
(Release 3.0) and 40.65 (Release 3.1):

These notes do not include the change notes for the CD32 modules cd.device,
lowlevel.library, or nonvolatile.library since these are new subsystems.
See the autodocs for these new subsystems for more information.
Lowlevel.library and nonvolatile.library are expected to be provided
in disk-loadable library on Workbench 3.1.

Changed:

	bonus 40.1
	bootmenu 40.5
	carddisk.device 40.1
	cardres 40.3
	console.device 40.2
	con-handler 40.2
	dos 40.3
	exec 40.10
	expansion 40.2
	filesysres 40.1
	fs/ffs 40.1
	gadtools 40.4
	graphics 40.24
	icon 40.1
	intuition 40.85
	keymap	40.4
	layers 40.1
	mathffp 40.1
	mathieeesingbas 40.4
	ramlib 40.2
	rawinput 40.1
	scsidisk 40.8
	shell 40.2
	strap 40.1
	trackdisk 40.1
	utility 40.1
	wb 40.5


Details follow:


bonus V40.1 

    - Bumped version to V40.  (40.1)


bootmenu 40.5

    -	Fixed bug where the chip type mutual exclude gadget was being
	displayed even on pre-ECS machines.  (39.20)

    -	Bumped version to V40.  (40.2)

    -	When it brings up the "Expansion Board Diagnostic" screen as a result
	of a bad board in the system, it now reboots the system when the user
	clicks Continue. Added ROM-tag handling to prevent reentering the
	same 	screen after the reboot is done.  (40.2)

    -	Miscellaneous fixes.  (40.4)

    -	Removed clean-up code used right before BootMenu reboots the
	system.  (40.5)


carddisk 40.1

    -	Now uses TaggedOpenLibrary (saves some ROM)  (39.1)

    -	Remove dead code for raw i/o (also saves some ROM)  (39.1)

    -	Flush cache during data writes in anticipation of 040 copyback
	cache on A1200 (no hardware support for PCMCIA memory space data
	cache control provided, so the data cache is still potentially
	a problem when programming flash rom; means turning off the
	data cache globally for 030/040 A1200's to support 6-10us
	write/verify timing).  (39.1)

    -	Bumped version to V40.  (40.1)


cardres 40.3

    -	Now leaves PCMCIA slot disabled if any RAM is configured at $600000;
	this allows use of >4Megs of 24bit RAM on the A1200 at the expense of
	being unable to use the PCMCIA slot.  (39.1)

    -	Partial work around for a hardware bug in our PCMCIA implementation
	which presents 2Meg+ addresses everytime we access ATTRIBUTE memory.
	This causes a problem when a >2Meg card which ignores REG is used
	(and a potential problem with any card which tries to decode the
	entire address when REG is set).  The former problem is kludged
	around by trying to sniff out mirroring of 4 bytes at $A00000 and
	$800000 but not mirrored at $600000.  (39.1):

    -	Considerably faster memory sizing for SRAM/DRAM cards (does test of
	every 256 words/long-words).  (39.1):

    -	BVD1/SC, BVD2/DA, and BSY/IRQ status change interrupts can now be
	individually enabled/disabled.  WR (Write-Protect) status change
	interrupts are always enabled (rare), and there is no change in the
	defaults.  This is intended for future use if needed (e.g., Flash-ROM
	which expects software to poll SC during programming; better
	performance can be obtained if interrupts are not generated).  If
	needed on the A600, this can be implemented as documented work
	around, or SeFunction() of CardMiscControl().  No expected change
	for existing software; defaults are the same as they use to be in
	V37 card.resource. Spurious interrupts (change true, but interrupt
	disabled) are cleared by the resource software, and hidden from the
	status change callback hook.  (39.1)

    -	Secondary callback option for status change interrupts; allows
	high-performance hardware to be serviced via interrupts only (instead
	of Signal()ing a task).  (39.1)
  
	If needed on the A600, this can be implemented as a documented work 
      	around.  To expected change for existing software; default behavior 
	is the same, and the bit used to enable the secondary status change 
        callback has been documented as MUST BE SET TO 0 (and the only known
        device driver is carddisk.device, which does the right thing).

    -	Flush Cache when ReleaseCard() is called.  A flush before full release
	ensures that no more writes will occur once the caller returns from
	ReleaseCard(). This is to support the 040 copyback cache when/if an
	040 becomes available for the A1200.  Would prefer control over the
	data cache for PCMCIA space independent of the first 4MEG of 24bit
	Fast RAM, but we don't have this feature.  Lack of Data Cache control
	for PCMCIA space is still potentially problematic for use of FlashROM
	programming which requires disabling the DATA cache for 030/040
	equipped A1200's so that fast (6-10us) write/read operations can be
	performed during programming.  Disabling the DATA cache during
	FlashROM writes means disabling globally.  (39.1)

    -	Bumped version to V40.  (40.2)

    -	Miscellaneous fixes.  (40.3)


console 40.2 

    -	Bumped version to V40.  (40.1)

    -	Miscellaneous fixes.  (40.2)


con-handler 40.2

    -	Bumped version to V40.  (40.1)

    -	Miscellaneous fixes.  (40.1)

    -	Fixes any possible remaining hole where a ^C could be sent to a
	non-existant process, and removes any chance of an Enforcer hit
	while trying to decide if the process still exists.

	Note that this searches the exec task lists under Disable(), so on
	a heavily-loaded (with tasks) system this might affect MIDI.
	(40.2)


dos 40.3

    -	GetDeviceProc() now returns errors better (especially
	ERROR_NO_MORE_ENTRIES).  It used to lose error codes by calling
	UnLock().  (39.25)

    -	Fixed bug in RemAssignList(): it wouldn't remove the first lock in
	the assign.  (39.26)

    -	AttemptLockDosList() was returning NULL or 1 for failure instead of
	NULL.  (39.26)

    -	Made RunCommand() free any memory added to the tc_MemEntryList by
	the command.  tc_MemEntryList is now saved and emptied before calling
	the command, and restored after any added memory is freed.  (39.26)

    -	Fixed exall emulation to not lose 1 file each time the list is broken
	up into multiple ExAll() calls.  (39.26)

    -	Removed broken attempted fix for rda_Buffer.  Autodocs now reflect
	that you must restore rda_Buffer before each call to ReadArgs() if
	you pass in an RDArgs structure.  Now always clears rda_Buffer in
	FreeArgs().  (39.26)

    -	SetVBuf() re-enabled.  (39.26)

    -	Changed some prototypes to avoid C++ reserved word "template".
	Changed VPrintf()/VFPrintf() prototypes to VOID * from LONG * to
	reduce useless compiler warnings/casts.  (39.26)

    -	SetVBuf() now updates the filehandle so it won't overwrite the buffer
	with a smaller one if SetVBuf() is called before doing buffered IO.
	Also it doesn't allocate anything if the new size is the same as the
	old.  (39.26)

    -	SetVar() now creates subdirectories as needed (including multiple
	ones) if they do not exist already (in ENV: and in ENVARC: if
	GVF_SAVE_VAR is set).  Also, it now preserves any IoErr() and won't
	try to save to ENVARC if there is an error saving to ENV:.  (39.26)

    -	Modified to fix an edge condition which existed when making the mod
	to SetVBuf().  (39.26)

    -	Close() doesn't free a SetVBuf() user-supplied buffer if the
        user Close() the file.  Fixed.  (39.27)

    -	ExAll() emulation doesn't return the directory the user is exalling.
	Fixed.  (39.27)
    
    -	Bumped version to V40.  (40.1)

    -	Fixes Enforcer hit on ExNext with NULL lock.  Now returns
	INVALID_LOCK error.  (40.3)

    -	Fixes bad packet on ExAllEnd.  (40.3)
			

exec 40.10

    -	Now added the full support for the Zorro-III quick interrupts.
	The new LVO (in an old slot) ObtainQuickVector() is used to allocate
	the vector.  There is no deallocation since this is basically
	a configuration issue and not a dynamic thing.  (39.50)

    -	On machines with PCMCIA cards, EXEC now makes sure the interface
	is turned on at boot time and then will turn it off before
	configuration.  This should let a full 8-meg of RAM be added in the
	Zorro-II space.

	This change requires an update to the credit card resource/device
	such that it will correctly turn on the interface if needed.  (39.50)

    -	The Quick Interrupt vectors that have not yet been added used to
	be -1.  Now they point at an Alert that is the new Unexpected
	Quick Interrupt.  (39.50)

      -	Updated the ObtainQuickVector() autodocs to reflect that the
	V37.175 ROMs do not have a blank vector at the end of EXEC. (39.52)  

      -	Changed the copyright information to show 1993.  This will
	thus automatically fix everyone else :-)  (39.55)

    -	Bumped version to V40.  (40.0)

    -	Just changed to V40 so that the Version commands will work right.
	(40.0)

    -	Removed the last of the old Procure/Vacate code.  (40.2)

    -	The SAD documentation was changed to reflect the real command numbers 
	(rather than what was planned). (40.3)

    -	Fixed SAD commands from SAD V39 (write byte was broken and the docs
	were a bit wrong as to the command format...)  (40.6)
      
    -	Miscellaneous housekeeping changes.  (40.7)

    -	Miscellaneous housekeeping changes.  (40.9)

    -	Disabled quick interrupts.  This avoids the problem with the A4091
	and quick interrupts.  V39 exec didn't have quick interrupts enabled,
	only beta V40's.  (40.10)


expansion 40.2

    -	New - A1200 specific build that can detect CPU Slot RAM ($08000000)
	if you have a 32-bit addressing CPU installed.  The CPU slot area
	is 128meg in size (just like the A3000) but has the addition of
	a wrap check at each 1meg of space in the CPU address space to make
	low-cost RAM expansion possible without jumpers.  (It is now possible
	to get 128Meg SIMMs so a single SIMM on a CPU card could make a
	128Meg of FAST RAM system )

	The reason that this has to be A1200 specific (at least for now)
	is that the behavior of the existing A500/A2000 CPU cards with
	respect to 32-bit addresses is very undefined.  They act very
	strangely and differently making it very difficult to safely figure
	out if these cards are operating correctly or not.

	No code changes for anything but the new A1200 version of the
	library.  (39.8)

    -	Bumped version to V40.  (40.1)

    -	Two major bugs found in the A3000 memory test/CPU Card test.
	Both were fixed.  (40.1)

    -	CPU Card space is now able to be more than 128Meg.  (We can grab
	3 * 256Meg more since we don't start Zorro-III until $40000000
	anyway...)  (40.1)

    -	CPU Card space test now also does mirror testing.  (40.1)

    -	Due to the fixes, some forms of the code have gotten a bit smaller,
	specifically, the A3000, A4000, and A1200 versions.  (40.1)

    -	Reworked the memory test to deal with extra-high capacitance
	bus systems.  (40.2)


filesysres 40.1

    -	Now matches the FS version change.  (39.3)

    -	Bumped version to V40, picks up filesystem version.  (40.1)


fs 40.1

    -	Fixed deletion of the destination of a hardlink - this was badly
	broken in all versions of the FS, DCFS just made it easier to hit.
	This was causing spurious "Checksum Error on Block 0" errors (and
	potentially others), especially when UUCP was using a DCFS partition.
	(39.29)

    -	Fixed a returncode which would make softlinks not work if a softlink
	to a directory is in the middle of a path.  (39.30)

    -	Fixed the buffer overrun on ExAll with ED_COMMENT if the first
	character was >$80 (and lost the first character of comments).
	(39.30)

    -	Fixed updating the date of a directory that changes in the parent
	of that directory's dircache.  (39.30)

    -	There were old offsetting bugs in the exall filename/comment copying
	code.  When I fixed the code not to copy too many bytes, the clear was
	being done to the wrong byte. (39.30)

    -	Bumped version to V40.  (40.1)

    -	Fix to deletion of destination of a hardlink - an offset into the
	stack was wrong.  (40.1)

    -	Directory notification re-enabled.  (40.1)

    -	Support for SectorsPerBlock added.  (40.1)


gadtools 40.4

    -	Fixed bugs in clipping code in TEXT_KIND and NUMBER_KIND gadgets. The
	clipping didn't work correctly on right and center justified text, and
	was under-evaluating the number of pixels available for the text in a
	gadget that didn't have borders.  (39.359)

    -	Fixed bug in the calculation of the default value for the
	GTSL_MaxPixelLen tag. This caused odd clipping of the number display
	for sliders whenever the title of the gadget wasn't on the same side
	of the slider as the display of its current value.  (39.359)

    -	Fixed GTJ_CENTER option for the various GTXX_Justification tags. The
	way centering was done could cause certain characters to get lost.
	(39.360)

    -	Bumped version to V40.  (40.1)

    -	Fixed bug where TEXT_KIND and NUMBER_KIND gadgets wouldn't render
	correctly if the text was center or right justified, and GTTX_Clipped
	or GTTX_Border were not used.  (40.1)

    -	Fixed bug where the selected item and the scroll bar would not get
	updated correctly when going from a list with items, to a ~0 list,
	and finally to an empty list. When switching to the empty list, the
	two components would remain unchanged.  (40.2)

    -	Fixed activation/deactivation problem with the arrows on scroller
	gadgets.  Except for the initial creation of a scroller gadget,
	the GA_Disabled tag was being ignored.  (40.3)

    -	Unused items in a listview are now rendered using BACKGROUNDPEN
	instead of being rendered with the window's backfill hook (via
	EraseRect()). This is more appropriate.  (40.4)


graphics 40.24

    -	Fixed some problems with narrow ViewPorts. All work well now in AA
	and ECS machines. Narrow ViewPorts on 'A' machines (and emulated 'A')
	still broken in Hires modes.  (39.97)

    -	These fixes also fixed the problem with ViewPorts narrower than the
	DClips losing pixels on the RHS under ECS (reported a gazillion times
	on BIX with the palette requester screen).  (39.97)

    -	LoadView() was not calling the MonitorSpec->KillView() vector with the
	MonitorSpec in a0, as documented. The only monitor using a KillView()
	so far is the A2024 driver, and that didn't use the MonitorSpec
	parameter anyway, so there is no impact in fixing this.  (39.97)

    -	A minor change made to BestModeIDA() - better weighing of ModeIDs with
	similar aspect ratios. So, if BestModeIDA() is passed a NominalWidth
	and Height of 322x200, the result will be LORES non-laced instead of
	HIRES LACE, which is the same aspect ratio as LORES non-laced, but
	the LORES is a better fit.  (39.97)

    -	CoerceMode() now ignores the AVOID_FLICKER option if the ViewPort
	being coerced is interlaced.  (39.97)

    -	Changed the default value of the ViewExtra->TopLine from 0 to a
	constant TOPLINE.  (39.97)

    -	Fixed sprite bug on ECS machines. If the view was at the maximum
	vertical overscan, the sprite pointer would disappear or screw up on
	the top line of a programmable mode. Fixed MoveSprite to take account
	of the difference in the vertical counter between ECS and AA.  (39.97)

    -	LoadRGB4 with 0 colors now does nothing.  (39.97)

    -	ScrollVPort should now not mess up the bitplane pointers for a
	HAM8 screen.  (39.97)

    -	When blitting from an interleaved source to an interleaved destination
	using BltBitMaskRastPort, the mask data would be interpreted as
	interleaved.  Work-around for versions of graphics library older than
	this one is to copy the source bitmap, and zero its pad field before
	blitting.  (39.97)

    -	Fix for bltbitmap trashing low byte of d7 when interleaved.  (39.97)

    -	ScrollVPort, and ChanegVPBitMap HAM8 fix incorporated.  (39.97)

    -	Change to BuildVP which allows one extra line of vertical overscan
	in programmable modes.  (39.97)

    -	Added vertical blank counter in GfxBase for Intuition use.  (39.97)

    -	Fixed potential Enforcer hit when sprite size is changed while
	the active view is nil.  (39.97)

    -	Huge clean-up of the GfxAssociate()/GfxLookUp()/GfxFree() code. This
	code had two problems:
    
	1) There was no locking around the hash table! This was fixed with a
	   new semphore in GfxBase.

     	2) The hash table was meant to handle hash collisions by chaining 
           entries.  The code never actually did this. All it would do was 
           place the entry in the next available slot. This meant that there 
           could only be n entries in the hash table (where n = 256 from 2.01 
           to 2.03, or n = 8 from 2.04 until now). Now fixed by correctly 
           chaining hash collisions. (39.98)

    -	ViewPorts whose top edge was completely off the bottom of the display
	would have one line of garbage on the last visible line. This was
	because the clipping code clipped the bottom of the ViewPort to the
	bottom of the monitor, but the top of the Viewport was only clipped to
	the top of the monitor. This resulted in a display window whose bottom
	edge was higher than its top edge, although this display window was
	still outside of the displayable region. Now, if this condition is
	found, MakeVPort() will not generate any intermediate copper
	instructions (because they should never be executed), frees the
	vp->DspIns intermediate copper list,  and sets vp->DspIns to NULL.
	When MrgCop() finds a NULL vp->DspIns, it will ignore the whole
	ViewPort, just as it does if the VP_HIDE bit is set. This is so that
	Spr/Clr/UCopIns instructions which are still around will not be
	merged with the other ViewPorts. This may be (though is unlikely) a
	compatibility problem, with anyone expecting their UserCopperlists to
	be merged with the rest of the system, irrespective of their
	ViewPort's position.  (39.100)

    -	Minor autodoc change in AllocBitMap.  (39.100)

    -	Fixed newly introduced bug in ScrollVPort which would word-swap the
	plane pointers in one case.  (39.100)

    -	Fix for TextFit Y clipping in. There may still be a bug in the x
	direction with proportional fonts, this is still being looked at.
	(39.100)

    -	ChangeVPBitMap will now no longer hang with video overscan hires-lace.
	It will also now not flash on a double-ntsc 320x200 screen which is
	dragged down.  (39.100)

    -	The code in MakeVP() that detects the number of sprites requested and
	tries to drop the bandwidth to fit was unecessarily checking if the
	difference between the current DDFSTRT and the required DDFSTRT was
	less than 8. This meant that a Hires screen at MaxOScan with sprite
	#1 would not drop the bandwidth (and sprite 1 would not be visible),
	but if sprite #2 was used it would drop the bandwidth to accomodate,
	and sprite 2 would be visible.  (39.100)

    -	Found another case in the DblPAL monitor where positioning two
	viewports on 256-line boundaries, MrgCop() would build a bad
	copperlist. This code was all in the get_hwait_hack() function, and
	it turned out to be easier to redesign the code that actually
	calculates the X position on line 255 than to hack in another cusp
	case.  Hopefully, all of the possible cases have been trapped,
	including multiple consecutive WAIT(0xff, xxx) instructions for
	monitors with more than 512 lines per frame (namely, DblPAL and
	Motivator). Testing will tell! If there is a bug in this code, it
	will have more chance of being seen in PAL modes.  (39.100)

    -	If the user viewport has a ViewPortExtra attached, ScrollVPort will
	now cache copper-list addresses in it. This can make a major
	difference in performance, particularly on a 256-color screen.
	MrgCop invalidates this cache.  (39.102)

    -	VideoControl() now supports a new tag, VC_IntermediateCLUpdate.
	When this is set to false, ScrollVPort will not affect the 
	intermediate copper-lists for a viewport, thus gaining speed.
	This requires a small bit of Intuition support to be safe in
	a screen. SetRGBxxx and ChangeVPBitMap will soon also pay
	attention to this bit. This flag can be checked for by
	VC_IntermediateCLUpdate_Query,&var. Note that this
	tag introduces a new naming scheme for VideoControl.
	VC_xxx tags use sane parameter returning methods, instead
	of the brain-damaged way that VTAG_xxx tags work.  (39.102)

    -	Size optimization in VideoControl. It was using ti->ti_Data
	zillions of times. Each loop iteration now stores this in a
	variable to save 100 million dereferences.  (39.102)

    -	ChangeVPBitMap now supports VC_IntermediateCLUpdate tag for disabling
	modification of intermediate copper lists. (40.1)

    -	Fixed bug in ChangeVPBitMap when auto-scroll screens were scrolled off
	of the top. Now clips DyOffset against the monitor's min_row. (40.1)

    -	Re-wrote color copper-list poker. Now faster most of the time. It also
	supports VC_IntermediateCLUpdate, which makes color-loading
	significantly  faster ALL the time. Also smaller, and simpler. (40.1)

    -	Code-space optimization. Library init code was using a local variable
	to point to GfxBase most of the time, when it could simply use A6.
	(40.1)

    -	Fixed another MrgCop problem. User Copper lists which execute on 
	line 255 could cause lower viewports to vanish. It will be a miracle
	if this actually works without breaking anything else.  (40.1)

    -	Bumped version to V40. (40.1)

    -	The internal CalcFMode() was looking at the wrong register when
	checking if BytesPerRow was correct for the required alignment. This
	was causing some misaligned promoted screens to be skewed.  (40.1)

    -	Now *safely* changes the default monitor setting. This was previously
	unlocked, and could result in a database query returning the wrong
	information if the default monitor was concurrently being changed.
	(40.1)

    -	Big size optimization in MakeVPort also nearly doubles its
	performance.  (40.1)

    -	Changed ChangeVPBitMap to not reply immediately to the "safe-to-write"
	message when VP_HIDE is set. This should prevent some animations
	from taking 100% CPU when their screen is put behind. Also fixed a
	bug in the signalling system.  (40.1)

    -	Now sets copinit->wait_forever to contain a write to bplcon3.
	This will cause LoadView(NULL) to switch the sprite resolution
	back to normal.  (40.1)

    -	The flag "LPEN_SWAP_FRAMES" is initialized to ON for old Agnii.
	(40.1)

    -	The Genloc enable bit in copinit will now be correct as soon as
	the genloc is detected, instead of until the first screen.  (40.1)

    -	Fixed a bug in BestModeID(). If you pass BestModeID()
	BIDTAG_MonitorID with DEFAULT_MONITOR, the result would always be
	INVALID_ID.  (40.1)

    -	BestModeID() no longer checks monitor compatibility unless passed 
	a special flag from CoerceMode().  (40.1)

    -	Added locking around promotion state changes.  (40.1)

    -	Fixed a bug where, when  booting a AA machine into ECS mode, the
	database values for Max/VideoOScan MaxX in SuperHires were wrong.
	(40.1)

    -	When LightPens are enabled, some versions of Agnus swap the Long
	and Short frames over, some don't, and there is no ID bit software
	can read. I have defined a new DisplayFlags bit called 
	LPEN_SWAP_FRAMES, which is set by default. LPen s/w can then set
	up a test to ask the user if there are visible problems, and if 
	so, clear this flag.  (40.1)
    
    -	The NTSC/PAL ScanDbl modes I introduced last time had the 
	DIPF_IS_WB bit set. This is now cleared.  (40.1)

    -	VC_NoColorPaletteLoad tag for VideoControl() inhibits the loading of
	all color registers except color 0 for the ViewPort.  (40.1)

    -	When switching from lace to non-lace, it was possible Agnus/Alice to
	be stuck in SHF mode.  Now checks that for NTSC/PAL screens, as well
	as the programmed modes which it was checking before, but only writes
	to vposw if the mode is SHF. Hopefully, this won't cause the display
	problems with Amber we had last time we tried this.  (40.1)

    -	Added monitorinfo->mouse_ticks for Intuition use.  (40.1)

    -	Fixed copper.i to match copper.h. (40.4)

    -	Autodoc fix in GetExtSprite (40.4)

    -	WritePixelArray8 totally re-written to use chunkytoplanar hardware.
	(40.4)

    -	This fixed a bug report of a 4 bitplane NTSC interlaced WB in
	front of CED on ECS machines would cause garbled displays. (40.4)

    -	Found a bug in CalcIVG() that had been present since it was first
	written.  CalcIVG() looks at CopIns->Count to count the copper
	instructions.  However, CopIns->Count also includes those
	instructions that are unique to Long and Short frames. In edge
	conditions, it was possible that CalcIVG() would return a value
	one line too large, which naturally causes MrgCop() at line 255
	to fail. (40.4)

    -	Added "non-dual-playfield dual-playfield" support, via
	VC_DUALPF_Disable VideoControl() tag. Changed MakeVPort, 
	VideoControl(), and create_color_bits() (40.6)

    -	Fixed a bug where VC_NoColorPaletteLoad_Query would return the 
	reverse of the current state. (40.6)

    -	Fixed the V39 bug where the "Attach" bits would not be set for 
	sprites created with the SPRITEA_Attached tag. (40.6)

    -	Fixed MrgCop() bugs.  (40.12)

    -	The code that calculates the STRADDLES_256 flag was not halving
	the inter-viewport gap in interlaced screens.  Fixed.  (40.12)

    -	ScrollVPort now behaves as if dual-playfield screens with no
	rasinfo->Next are non-dual-playfield screens.  (40.12)

    -	BOBs would render incorrectly to obscured smart-refresh and
	superbitmap windows on interleaved screens.  Fixed. (40.12)

    -	60/50hz clock bit fix.  (40.16)

    -	Fixed MungWall hit.  (40.16)

    -	Fixed screen flashing with ECS emulation on AA bug.  (40.18)

    -	"GetColorMap fails under memoration" problem fixed.  (40.19)

    -	Some depths of ScanDoubled beam-sync modes required an odd number of
	lines in the inter-viewport gap, but MrgCop() always doubled the
	WAIT position in ScanDouble displays.  Now adds 1 to the WAIT
	position if a flag in the CopList->Flags shows that this is a "half
	line" gap; this flag is set in CalcIVG().  (40.20)

    -	Check if the CopList being merged is vp->SprIns, vp->ClrIns or
	vp->UCopIns before checking the STRADDLES_256 flag.  (40.20)

    -	Removed check for SetDefaultMonitor failing and pulling an alert
	in graphics library init.  (40.23)

    -	When changing between PAL and NTSC views (and presumably between
	other monitor types too), occasionally the machine could freeze.
	The cause is unknown, but our current theory is that disabling
	RASTER DMA in the middle of a fetch cycle could be dangerous. We
	now try to ensure that we don't disable RASTER DMA in the middle
	of a fetch cycle. This is an improvement, although tests show this
	to not be perfect. Brings the crash interval from a few minutes to
	many hours of continuous screen flipping.  (40.23)

    -	ScrollVPort would fail to modify the FMODE value in the intermediate
	copper list of an interlaced screen. This is because it was looking
	for a DIWHIGH move followed by an FMODE move. The interlaced
	intermediate copper lists have two DIWHIGH moves, and have LF/SHF
	bits set in the opcodes.  Fix was to AND out the LF/SHF bits and to
	make it skip as many DIWHIGH writes as appear.
	one AND.L #immed + 1 bra.s.  (40.24)


icon 40.1 

    -	Bumped version to V40.  (40.1)

    -	No longer calls alert for the silly case.  (40.1)


intuition 40.85

    -	Menus are now brought on-screen much faster than before.  The extra
	memory required to do this is freed immediately after the menu is
	drawn onto the display.  If that memory isn't available, menus are
	brought on-screen the old way.  Menus are removed from the screen
	several times faster than before.  (39.2192)

    -	The menu code has been massaged (mostly unifying item-panels and
	subitem-panels), which saved a bunch of code.  (39.2192)

    -	When a window is resized, the window drag-bar no longer flashes.
	(39.2192)

    -	If a screen is opened before DOS sends Intuition the first SetPrefs(),
	the pointer will be the ROM default pointer, instead of being blank.
	(39.2192)

    -	If you used a boopsi string gadget as an integer gadget, with
	Intuition supplying the buffer, and you specified a STRINGA_MaxChars
	of > 15, you would get a mismatched FreeMem() when the gadget is
	disposed.  This is now fixed.  (39.2192)

    -	Certain OpenScreen() failures would erroneously CloseFont()
	GfxBase->DefaultFont even though it had not been opened.  This is now
	fixed.  (39.2192)

    -	For 3.0, there were some changes to clean up autoscroll, in particular
	to fix bugs when an absolute input device (such as a tablet) is used.
	Mostly incidental to that change, a problem was being caused as a
	result of inadvertently switching the autoscroll boundary to be the
	DClip of the active screen, where it used to be the "hull" of the
	DClips of all the screens.  If there are two screens in the system
	with different DClips, the mouse can be way outside the DClip of the
	smaller screen.  If that screen is active, it will AutoScroll at a
	ridiculous rate.  For example, if the mouse is seventeen pixels below
	its DClip, moving it down one pixel causes the screen to autoscroll
	by eighteen, instead of one.  This is now fixed.  (39.2192)

    -	Intuition now updates its internal time values based on (nearly) _any_
	InputEvent it receives, instead of just IECLASS_TIMER ones.  The
	problem was that outgoing IntuiMessages get their time from this
	internal time, which meant that IntuiMessage time was the time-stamp
	of the most recent timer tick, instead of the time-stamp of the event
	that actually triggered this IntuiMessage.  This problem completely
	precludes correlating an IntuiMessage with the InputEvent that caused
	it, which is important for tablet people, for example. (39.2210)

    -	If the TimeStamp of an event would be a step backwards in time or
	farther forward than one second, Intuition doesn't heed it.  However,
	Intuition _always_ respects IECLASS_TIMER TimeStamps, which allows
	changes to system-time to be picked up.  (39.2339)

    -	If a child screen is dragged off the bottom of the display, and the
	scan-rate changes (say by Amiga-M changing to a screen of a different
	scan-rate), the child screen would be accidentally brought up so one
	scan line was visible.  This bug is now fixed.  (39.2339)

    -	In frameiclass, the IM_FRAMEBOX method now accounts for the extra room
	of the new-for-V39 frame types.  In the initial V39, frameiclass
	ignored the new frame types when computing how much bigger the frame
	box needed to be when compared to the contents. (39.2256)

    -	After creating the BarLayer of a SCREENQUIET screen, Intuition now
	changes its backfill hook to the screen's LayerInfo backfill hook.
	This fixes the bug where the part of a window obscuring the title-bar
	area of a SCREENQUIET screen wasn't erased when the window was closed.
	(Effectively, Intuition was relying on a layers side-effect that was
	optimized out for V39).  (39.2339)

    -	Fixed the bug where changing coercion Preferences (specifically the
	"Avoid Flicker" option) could leave a screen illegally positioned.
	(39.2339)

    -	Clarified some comments and removed a redundant test in Intuition's
	MakeVPort() code.  Intuition is verified ready for the graphics fix
	that prevents minor display garbage if a ViewPort is completely off
	the bottom of the display.  (39.2339)

    -	The ImageClass OM_GET method now uses UnpackStructureTags() (the
	packing table already existed for the OM_SET method).  (39.2339)

    -	A child screen fully off the bottom of the display no longer
	autoscrolls up.  The old way, it could trap a parent/child pair of
	screens in an undraggable condition. (39.2275)

    -	Fixed a recent bug where an overscanned screen could get pulled down
	by autoscroll under certain conditions.  (Autoscroll isn't supposed to
	pull screens down below their DClip top).  (39.2339)
 
    -	An off-the-bottom child screen can no longer mess up Intuition's mouse
	limits (which could leave a screen unreachable under certain
	conditions).  (39.2339)

    -	ScreenPosition(SPOS_MAKEVISIBLE) of a coerced screen now works right.
	(39.2339)

    -	The mouse scaling factors are now correct for double-NTSC monitors.
	(39.2339)

    -	Keyboard control of the mouse cursor moves the mouse exactly one
	screen pixel at a time.  This only worked when a window was active,
	but now it works even if no window is active.  (39.2339)

    -	Fixed several bugs with non-draggable child screens (39.2332):

	Non-draggable child screens whose DClips don't match their parent's
  	come up in the right place.
	
	Non-draggable child screens whose widths don't match their parent's
  	no longer wrap when you drag the parent.

	SPOS_FORCEDRAG now allows non-draggable child-screens to move
	horizontally.

	Non-draggable child screens didn't have their top edge validated
  	correctly against their parent's when they are first opened.
	
	When resizing a window, the erasing of the old border and old GRELxxx
	gadgets has been optimized to flash a lot less and be faster.  When
	changing the activation state of a window, the border re-rendering
	has been optimized.

	Fixed a hole in the state machine where a task whose priority exceeds
	that of input.device could get into trouble calling Intuition if a
	function it called (eg.  ScreenToBack()) got deferred because of the
	state Intuition was in (eg.  user was dragging a screen).  Intuition
	was missing a lock and was implicitly relying on task priority for
	things to clean up in the right order.

	If OpenWindow() failed to create the window layer(s), Intuition would
	fail to repair any damage that might have been caused in to other
	windows of the screen.

	If a MENUVERIFY window was ever sent a MENUVERIFY/MENUWAITING message
	(because the user accessed the menus of some other window on the same
	screen), then every normal MENUPICK from that point on would be
	immediately preceded by a spurious MOUSEBUTTONS/MENUUP message.

	While processing a menu command-key, if Intuition timed out waiting
	for the application to reply the MENUVERIFY, Intuition would fail to
	send a MENUPICK/MENUNULL message.  Also, two memory-allocation failure
	paths in the MENUVERIFY code had the same problem.  These are all
	fixed, as MENUVERIFY applications need the guarantee of receiving a
	MENUPICK and/or a MOUSEBUTTONS/MENUUP for every MENUVERIFY.

	Attached screens which are opened as SA_Exclusive now form an
	exclusive family, allowing the benefits of both.  This used to fail.

	SetIPrefs() now bounds-checks the Overscan values it receives, which
	could be illegal if the user added or removed the VGAOnly monitor, or
	changed between PAL and NTSC in BootMenu.

    -	When Intuition splits a single InputEvent into button and movement
	components, the button event is now sent first.  This fixes some
	inconsistencies with extended input information like pressure, as
	well as odd behavior of the qualifiers, in particular
	IEQUALIFIER_MIDBUTTON.  (39.2339)

    -	One of the important input token fields is now longword aligned.
	(39.2339)

    -	When Intuition splits a single InputEvent into button and movement
	components, the button event is now sent first.  This fixes some
	inconsistencies with extended input information like pressure, as
	well as odd behavior of the qualifiers, in particular
	IEQUALIFIER_MIDBUTTON.  (39.2339)

    -	One of the important input token fields is now longword aligned.
	(39.2339)

    -	The code to detect damage caused when a gadget method performs
        ScrollRaster() or ScrollRasterBF() turns out to be in fundamental
        conflict with an application using ScrollRaster() or ScrollRasterBF()
        in an Intuition window.  It turns out that Intuition can throw away
        damage that the application needs.  ScrollWindowRaster() is safe.

        The change is that until a gadget with the GMORE_SCROLLRASTER
        property is added to a window, the ScrollRaster() damage detection
        code does not run for that window.  This means that it is V37-
	compatible until a GMORE_SCROLLRASTER gadget enters the picture.
        If the user app uses one of those, he must switch any use of
        ScrollRaster[BF]() within the application to ScrollWindowRaster().
        The gadget must continue to use ScrollRaster[BF](), however.  The
        biggest complication would come from using some gadget class the user 
        doesn't control the source to.  How does the user know if it
	currently uses GMORE_SCROLLRASTER, or might in the future?  If the
	user uses such a class, switch to ScrollWindowRaster(). (39.2369) 

    -	IESUBCLASS_PIXEL NEWPOINTERPOS events with IEQUALIFIER_RELATIVEMOUSE
        were broken.  This is now fixed. (39.2369)

    -	The WBenchToFront() and WBenchToBack() functions call ScreenDepth() 
        through the LVO. (39.2369)

    -	RefreshWindowFrame() now correctly redraws the window title if someone
        pokes the title string or title string pointer directly. (39.2369) 

    -	When an application obtains use of a sprite other than the pointer
        sprite, by using the old GetSprite() call, Intuition now arranges for
        the sprite pixel resolution to fall back to ECS compatibility.  Users
        of ExtSprites are unaffected. (39.2369)

    -	FreeScreenBuffer() now does a WaitBlit() before FreeBitMap().
        (39.2369)

    -	Figuring out where the user clicked in a string gadget now uses
        TextFit() instead of successive TextLength()s.  (39.2369)

    -	Calls to MoveScreen() or ScreenPosition() have always been ignored
        while the user is dragging a screen or sizing/dragging a window.
        These calls are now deferred, which is preferable and fixes a problem
        encountered with the new Palette Prefs when it opens the color wheel
        on a separate screen. (39.2369)

    -	Did a general autodoc cleanup, including proof-reading of all V39
        references.  Also, there was some minor cleanup to the include files.
        Notable changes:  (39.2369)
      
        The ScrollWindowRaster() autodoc has been elaborated.

	There are now definitions for 2.0-style system gadgets
	(GTYP_WZOOM, GTYP_WDEPTH, etc.).  The 1.3-style definitions
	are now defined in terms of the new ones.

	Pointerclass.h|i now contains notes on the compatibility fallback
	techniques used by Intuition/graphics when sprites other than
	the pointer sprite are used.

    -	Calling NewModifyProp() while the user is dragging the slider knob can
	no longer leaves behind trash remnants of the knob.  (39.2415)

    -	Intuition used to hard-code relationships between monitors and how
	many "database ticks" to move the pointer when the mouse itself moves.
	Intuition now obtains this information from the MonitorInfo structure,
	if it is there, and falls back to the old way if it is absent.  This
	data still needs to be added to the graphics database.  (39.2415)

    -	The string "Workbench Screen" is now localizable.  (39.2415)

    -	Fixed a long-standing Enforcer hit which can occur if you click the
	mouse after the last screen has closed (say during Workbench reset).
	(39.2415)

    -	Fixed a long-standing Enforcer hit which can occur if you activate a
	window with a requester in it by clicking on a system gadget in that
	window.  (The bug is most detectable if no active window has had a
	requester in it since the computer was turned on).  (39.2415)

    -	Graphics has added a performance enhancement via VideoControl()
	which allows an application to request that its ViewPort's
	intermediate copper-lists not be kept up-to-date.  Intuition now
	detects and handles such ViewPorts correctly by ensuring that
	MakeVPort() is always invoked on such a ViewPort if MrgCop() is going
	to be called.  (39.2415)

    -	The public screen list is now case-insensitive.  (39.2415)

    -	Bumped the version to V40.  (40.29)

    -	Fixed a race condition with closing the Workbench which could cause
	LockPubScreen(NULL) to return garbage.  (40.29)
     
    -	Fixed a hole in the public screen uniqueness test where if two
	screens  tried to open simultaneously with the same public screen
	name, it was possible that both would succeed, instead of the second
	one failing  with OSERR_PUBNOTUNIQUE.  (40.29)

    -	Screens whose bitplanes are not sufficiently aligned to be promoted
	are now promoted into a lower resolution, instead of being shown
	scrambled.  This fix requires the latest graphics.library and a new
	DblNTSC and DblPAL monitor.  This ought to allow Boing! to come up
	promoted (albeit in extra-lores).  (40.29)

    -	Added a new tag, SA_MinimizeISG, which requests that Intuition give
	the smallest possible inter-screen gap, instead of enforcing the old
	compatible minimum.  This is required to use the new graphics
	VC_NoColorPaletteLoad VideoControl() tag.  (40.29)

    -	The calculation of the menu panel size now takes into account the
	height of the Amiga-key symbol, and the IntuiText TopEdge.  This fixes
	some possible crashes when using a too-big Amiga-key.  (40.29)

    -	Fixed a bug where if a window failed to zoom due to lack of memory,
	Intuition would nevertheless update the future zoom size/position to
	the current size/position.  A window which uses title-bar zooming
	(like our Prefs editors do) could have been stranded in its small
	state.  (40.29)

    -	Removed code that calls OpenMonitor() and CloseMonitor(), since
	they're unnecessary.  (40.29)

    -	Fixed a small bug in border redrawing when resizing a window which had
	no depth gadget.  This bug crept in with the V40 border redraw
	optimizations.  (40.29)

    -	All non-essential Alert()s are now gone, to save space.  (40.29)

    -	Fixed a bug in AllocScreenBuffer() failure where it called
	FreeScreenBuffer() badly.  (40.34)

    -	Fixed a hole in UnlockPubScreen() where it could race with
	CloseScreen() and die with Enforcer hits.  (40.34)

    -	Holding a gadget down no longer blocks OpenWindow() from completing.
	(40.45)

    -	frbuttonclass no longer crashes if the OM_NEW taglist includes
	GA_Width or GA_Height.  (40.45)

    -	Fixed a small window of vulnerability when ModifyIDCMP() connects
	the window's WindowPort.  This could cause Enforcer hits if
	input.device got to run at the wrong time with respect to the
	client's call to ModifyIDCMP() or OpenWindow().  (40.47)

    -	Fixed a bug where a non-draggable child screen could inadvertently
	be moved by the system if the active monitor changed.  (40.65)

    -	Miscellaneous housekeeping changes.  (40.71)

    -	OpenScreen() now fails if AttachPalExtra() fails.  Otherwise,
	Enforcer hits and awful death may result.  (40.85)

    -	If sysiclass fails to allocate its TmpRas, it would fail to release
	the semaphore which protects class-data, locking out subsequent
	users.  Fixed.  (40.85)


keymap 40.4

    -	Bumped version to V40.  (40.1)

    -	Updated autodocs  (40.4)


layers 40.1 

    -	Bumped version to V40.  (40.1)

    -	Removed calls to Alert for the pathalogical startup cases.  (40.1)


mathffp 40.1

    -	Removed the Expunge code.  (39.1)

    -	Bumped version to V40.  (40.1)


mathieeesingbas 40.4

    -	Bumped version to V40.  (40.1)

    -	Removed the IO FPU support. (Since 68020 and up are really connected 
	to the FPU there is no real need and almost no one makes a IO FPU 
	anymore for the 68000 machines since it is cheaper to make a 68EC030
	plus real FPU and is *MUCH* faster). (40.1)

    -	Removed the Expunge code since there is no real need for it.  (40.3)
    
    -	Miscellaneous changes.  (40.4)


ramlib 40.2 

    -	Bumped version to V40.  (40.1)

    -	Took out alerts that can not happen.  (40.1)

    -	Miscellaneous fixes.  (40.2)


rawinput 40.1 

    -	Bumped version to V40.  (40.1)

    -	Miscellaneous fixes.  (40.1)
    

scsidisk 40.8

    -	Bumped version to V40.  (40.1)

    -	Never uses IDE reads of more than 128 blocks.   (40.1)

    -	Removes a "romboot.device" string that was meaningless (and 
	has been in there since the A590). (40.1)

    -	Bumped version to V40.  (40.1)
    
    -	Uses the new exec Gayle check code for A1200/A600.  (40.3)
  
    -	Some CDROM drives do not generate a media-changed error on the
	first media insertion after reset, but just go from not-ready to
	ready.  The SCSI driver was counting on those errors to notice
	disk changes.  Modified scsidisk to notice that we've quietly
	gone not-ready to ready and notify everyone as appropriate.  (40.4)

    -	Bumped the constant for IDE timeout from 9 seconds to 15 seconds.
	This is to allow for slower spin-up drives such as the new
	Seagates.  (40.5)

    -	Some timeouts were changed for greater future compatibility on
	IDE systems.  (40.7)

    -	A new entry in the error table was added for reporting media changes
	(in particular for supporting Syquest IDE drives).  (40.7)

    -	Some other minor changes to the startup code were added, including
	things like returning real errors instead of -1 in several cases,
	and sending StartUnit to devices that haven't spun up (very good
	for some CDROMs and disk drives which default to not spinning up).

	There's now some dead code in the A4000 IDE handling, but it doesn't
	hurt anything (it plays with a battmem bit it now ignores).  (40.7)

    -	Restored a line of source code that got deleted by mistake in the
	40.7 changes.  (40.8)


shell 40.2

    -	Removed support for "Hold" bit and for 1.3-style redirection (set
	oldredirect on) for space reasons.  (40.1)

    -	Miscellaneous changes.


strap 40.1 

    -	Miscellaneous fixes.  (40.1)


trackdisk 40.1 

    -	Bumped version to V40.  (40.1)

    -	Miscellaneous fixes.  (40.1)


utility 40.1

    -	Bumped version to V40.  (40.1)

    -	There are now two distinct versions of the library generated. One for
	68000 systems, and one for 68020 and above systems. The 68020-only
	version is 316 bytes smaller than the 68000 version. The 68020 version
	is meant for use in the A1200, A3000, and A4000 ROMs. The A1200 is
	currently our smallest ROM, so this extra space will help.  (40.1)


wb 40.5

    -	Adjusted the sizes of the OK/CANCEL and SAVE/CANCEL gadgets in the
	Workbench requesters to match the new font+6 height values.  This
	makes for better gadgets on high-resolution displays such as the
	800x600 modes and also matches the new V39 prefs editors.  (39.51)

    -	Fixed a long standing bug that was just found:  The system would crash
	(sometimes) or cause Enforcer hits if files were deleted within
	a drawer that was also selected for deletion.  This one has
	a fundamental flaw in Workbench which had to be patched with some
	rather tricky organization of tests... (39.52)

    -	Cleaned up the Rename requester such that the user can not type in
	the ":" or "/" characters rather than waiting until later to check
	for them.  (String hook)  (39.54)

    -	Bumped version to V40.  (40.1)

    -	Workbench is now 100% font sensitive!  This means that the
	information requester is now font sensitive and does complete
	layout and fall-back as needed.  (40.1)

    -	Found and fixed the backdrop refresh on startup timing problem
	(it was a very interesting case of rendering the window before it
	was ready to listen to new Preferences).  (40.1)

    -	Information number displays are now all localized numbers.
	That is, they are %lU using GTNM_Format tag of V39.  (40.1)

    -	Fixed bug where physical devices would not show up any more.  Now,
	once again, makes sure that the physical devices show up.  (40.2)

    -	Fixed: WBstartup app calling addAPPXXX can cause alert.  (40.4)

    -	Miscellaneous housekeeping changes.  (40.5)


