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.).
Labels in the pop-up menu are preceded by a code in square brackets as follows:

[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:
a/. The file to be translated in the case of source files.
b/. The resources in the file to be copied to the target in the case of resource files.

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 by Build.
NOTE:Touching a file does not affect the Finder's last modified date for the file.

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.
Files are remembered irrespective of how they were opened - either from the project window, the file menu or via hyperjumping.

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 where appropriate.

b. Play Voice note is now redirected to the standard NS open code. Record Voice note uses a modified NS open dialog. No preview for voice notes.

c. Open Project is now redirected to the standard Open NS box, but with a reduced kind list of just projects. There is no preview for open project.

d. Add file to project uses the standard NS open code. Nav Services allows you to select multiple items to be opened, or even all items (from the edit menu "select all" command). Thus to add all items in a folder to a project, just select all [APPLE A] and hit the return key.

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.

e. Anvil Nav Services dialogs handle events, so you can switch out of Anvil, resize and move the Nav Services dialog boxes (they will remember where you put them).

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
b/. Loading of colour sets - hopefully cures problem of BG colour not setting correct when older sets are loaded.
c/. Scrolling via scrollbars.
d/. Chroma coding.
e/. Menu adjustment.
f/. Events handling.
g/. Status bar
h/. CD display.
i/. PMT
j/. Project creation

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:
T-- --:--:--

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.



BUILD v416

NEW: Gains two new preferences.

a/. Update project window when building will do just that.
b/. Save project after each translation will save the project to disk after each file is assembled. This can save you time if machine crashes half way through a large rebuild for example.

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.


Fantasm 5.20

NEW: RSRESET can now take an optional value for the RS counter - i.e.

rsreset 80
Sets the RS counter value to 80

Sets the RS counter value to 0 (as it always did).

NEW: Error is thrown if the hash character is used with globoff or rs. i.e.

fred: globoff.l #1
ERROR. Illegal use of hash character. Hash is not used with globoff.

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.
This version will improve overall stability .




NEW tool.

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

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)

ResCopy 1.12

BUG: Fixed bug relating to crashes and general weird behavior when ATM 4 is installed.


LXT 1.05

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)