Detailed change notes: Fantasm 520
Each item is preceded by CHANGE (a behavior change),TWEAK (a minor change to interface/internal code), BUG (a bug fix) or NEW (new feature).
NEW: Added Search In Project option to Find dialog. This is much faster and more efficient than the old search in folder code. Requires a project is open else option is hidden in the Find dialog. The Search All in Folder option is always available. The folder searched is either that of the frontmost document window or the last known folder.
Find dialog reorganized slightly.
NEW: Pop up labels complete re-write.
Labels are now sorted by type and will correctly handle multiple labels
with the same name (i.e. macro, local, set labels etc.).
[C] - a code label [D] - a data label [E] - an equate [G] - a globoff [M] - a macro [R] - an RS [S] - a set [T] - a toc routine
Labels are sorted by group as per the above list; code labels first then data (this includes ds,dc, cstring and pstring) then equates etc. The labels pop-up requires approx. 80K free memory to operate in. If memory is not available, the menu will show "No Memory" as the only entry. This version handles up to 2000, 60 significant character labels. (Fantasm's limits for label significance varies with the label type and are detailed in LSA0040).
As in the previous version, labels with no colon are not shown.
In addition to that, if the active project uses the file, at the top of the labels pop-up menu will be a list of files this file is dependent on (includes), separated from the labels by a divider line. Selecting an include file will load (if necessary) and switch to it. This requires the project has been built at least once as the DDB is interrogated (if DDBACC isn't loaded, it will be when you press the pop-up button). If there is no project open, or the active project doesn't use the file, there will be no files listed in the pop-up menu.
NEW: If the option is enabled in Build's prefs, the project window will now update as build progresses. Project window shows "Building..." in the lower text area of the project window whilst a build is in progress. The size area of the project window now shows which file is being assembled - the size is replaced with the text "BUSY" whilst a file is being translated if the option "update project windows" is enabled in Build's preferences.
NEW: Project windows remember their size and location. The first time you open a project not updated with this feature, the project window will open at the top left of your screen. This change does not affect the project file revision level.
NEW: Option in general prefs to switch off logging to User Log file in prefs folder.
NEW: Source and Resource files can now be "touched". This will
override the relevant normal logic, forcing either:
This option is available from a file's pop-up menu in a project window.
When touched, the text "Tchd" will appear to the left of the file's
icon. Once touched, the file will remain that way until it has been processed
This change requires Build 4.15 or later to function correctly (Fantasm 5.20 ships with Build v4.16).
NEW: Internal Fantbug support.
NEW: When opening a project if Anvil can't find a low level .def file by its location specification in the project, it will look in the low level defs folder. If a file with the same name is found there the project will be updated accordingly. This prevents the user having to manually search for a .def file when receiving or moving a project from one machine to another.
NEW: Projects now "remember" which files were opened. When you open a project, files that were previously open will be re-opened thus recreating the state at the time the project was last closed (or Anvil quit). Will not work if you are using an external editor as Anvil currently has no way of knowing when an external editor closes a file.
New checkbox in General prefs to switch this behavior on/off. Does not stop projects remembering which files were open, just automatically opening the files when a project is opened.
Uses A_GetIndFile to run through the project looking for files with this_file_is_open
bit set in this_file_options of a file specifier.
NEW: At installation time before the registration dialog is shown a new dialog displays instructions and licensing information. The registration dialog now has a Cancel button.
NEW: You can now select, select all, copy and cut (delete) from the log window.
NEW: Keyboard shortcuts added to comment out block "\" and uncomment block "`".
NEW: Anvil has it's voice back. Switchable from general prefs. (Suggest Macintalk Pro, Bruce.)
NEW: Nav services (NS).
On a PPC machine, with Nav services installed, Anvil will use Nav Services instead of Standard File. (If Nav services is not installed, or it's a 68K Mac, you'll get the old Standard File selectors and Anvil works as per previous versions).
Nav Services changes the way Anvil works a little:
a. The Open command from the file menu can open any kind of Anvil document.
Using the Nav Services "show" menu and setting it to "show
all", you can try to open any kind of document. Text files will go
through Anvil's import filter. Other files will issue a warning that Anvil
can't open the file, but you can proceed at your own peril. Previews available
Normally Anvil shows just Anvil items in the "add file to project"
dialog, but if you use the "Show" menu item to show all, then
you can add any kind of file to your project.
Navigation Services is scheduled to become a standard part of the MacOS in MacOS8.5. Prior to release of MacOS8.5, Navigation Services are available from Apple's developer FTP site.
TWEAK: Transient messages in status bar that generate a beep now stay there for at least half a second.
TWEAK: Ancillary window positions are now remembered better (log, error, find window).
TWEAK: Removed wiggly bits around default dialog box buttons. Reason: Maybe I'm getting old, dunno. Anyway, they just looked naff.
TWEAK: Opening multiple files (from open all files in user folder for example) is now neater in that files no longer have their scrollbars active immediately on opening.
TWEAK: Anvil now prevents user from creating two projects in the same folder.
TWEAK: Increased speed of replace all command and then increased it again.
TWEAK: Filename is now shown in full path information in "Get Info" window. Just looks neater.
TWEAK: Increased error checking and recovery around following areas:
a/. Word wrap to window
CHANGE: Default language is now PPC and searches do not run in the background as a default.
CHANGE: Cleaned up the interface a little. Old square buttons replaced with more normal Mac ones.
CHANGE: When cursoring to EOF, the annoying message that told you it was EOF in log window is gone.
CHANGE: Sliding project windows are no more.
CHANGE: Changed the printer font to Monaco to improve printout quality.
BUG: Contents of r5 now saved over call to GetGrayRegion which could lead to crash in V2.00
BUG: Fixed crash in log_show_file_save on 68K machines
BUG: Fixed a long standing bug where Anvil would erroneously report a corrupt project when multiple projects were open, and a project was subsequently closed. Anvil was purging the active project data rather than the data of the project being closed. Nice to eventually get that one.
BUG: CD: Fixed bug where after selecting a track >10, subsequently selecting a track <10 would result in track 2 being played.
BUG: CD: Some cosmetic display bugs fixed. If there is no CD in the drive
controlled by Anvil, the following is displayed in the CD area:
BUG: CD: Fixed "time remaining" display being off by 1 second, and generally acting weird when switching from 00 to 59 in the seconds display. Affected both "disk remaining" and "track remaining".
BUG: Fixed a bug to do with "Enter Selection" not being dimmed after closing all windows.
BUG: Fixed a bug that could cause the machine to crash when a bracket was double clicked on.
BUG: Fixed COMMAND Keys not working after log window hidden.
NEW: Gains two new preferences.
a/. Update project window when building will do just that.
CHANGE: Support for this_file_is_dirty bit for touched files.
BUG: Fixed some G3 machines not linking because machine was not recognized as a PPC machine.
NEW: RSRESET can now take an optional value for the RS counter - i.e.
NEW: Error is thrown if the hash character is used with globoff or rs. i.e.
fred: globoff.l #1
TWEAK: 5.20 initializes slightly faster than previous versions on PowerMacs.
CHANGE: No longer reports when switching assemblers - no more "Using Fantasm xxxxx assembler" messages on the grounds that they were annoying.
CHANGE: Subtle change: Give error if local label too long - local labels are limited to 18 chars.
BUG: Fixed incompatibility with Sound Manager 3.3.
PEF stands for Preferred Execution Format and is Apple's proprietary loader format. Fragments created with this linker will be smaller than those created with the XCOFF linker (LinkPPC). In addition the PEF linker allows you to "weak link" to shared libraries. This is convenient if you do not want to force your users to use a specific function, for example Speech. You can weak link against SpeechLib and if it isn't available at run time, the imports from SpeechLib will simply contain zeros. You can check the import and if it is zero, you can't use that function.
If you do not weak link, the Finder will report an error if the shared library isn't found when the user tries to launch your program. Your program will not launch in this case.
Please note that LinkPPC PEF requires access to all shared libraries in your project even if they are weak linked, at link time. This is necessary so that LinkPPC PEF can check your imports against all libraries.
To gain access you normally place these shared libraries in your extensions folder, although you can if you want place a copy in both the targets and Anvil's folder, and that should work too.
Use "Export all globals" (from LinkPPC PEF's preferences) for debugging and any global code labels will show up in Macsbug.
This version uses maximum value of 256 for RLE encoding of reloc operands.
LinkPPC PEF is for use with PPC projects only. LinkPPC PEF will only work correctly on a PowerMac.
If LinkPPC PEF is chosen for current project then weak linking for shared libraries is enabled in the project window pop-up menu. If the older LinkPPC (XCOFF linker) is chosen then the option is greyed out.
When a shared library is weak linked, you must check any imports from said library, for example:
lwz r3,xyz_import(rtoc) cmpwi r3,0 beq cant_call Xcall xyz_import cant_call:
Alternatively use a global variable at init time:
lwz r3,xyz_import(rtoc) cmpwi r3,0 li r4,0 stw r4,lib_available?(rtoc) li r4,1 beq no_go *from the cmpwi above stw r4,lib_available?(rtoc) no_go:
BUG: Fixed bug relating to crashes and general weird behavior when ATM 4 is installed.
BUG: Fixed Gestalt OS call in Universal_OS_Calls.LXT and Universal_OS_Calls_Plus.def
BUG: st corrected to set to all 1's (was setting to just 1)