:
January 5, 2020 - permanent link
A new version of ReAsm now treats an operand such as “0(A3)” the same as “(A3)”, using addressing mode 2 instead of addressing mode 5 with a zero offset. This is useful when the offset is a named constant for the offset of a field in a record, so that you can efficiently use a field with the same syntax regardless of whether it is the first field. In the unlikely case that you really want to use address mode 5 with an offset of 0, there is a new syntax, “0!(A3)”. (I decided upon this syntax instead of the OPT directive of the MPW assembler, to avoid modes.)
A new development version of ClipOut begins to take advantage of this change in ReAsm syntax and also the new “=” synonym for “EQU”.
A new version of FDisasm generates the new “!” syntax for address mode 5 with an offset of 0, to be compatible with the new version of ReAsm. (Which is incompatible with the MPW assembler, but this should be a rare issue.) It also fixes a recent issue where it would not work if “format” is absent. It also changes the behavior if “bin_map” is absent - instead of a hex dump, it will disassemble assuming it is code. This is inappropriate for most files, but on the whole is still more useful than a hex dump, for the times it is appropriate, such as for testing a few instructions in FDisasm. For most files where it is inappropriate, you would use FindRes first, which creates the “bin_map” file.
December 29, 2019 - permanent link
A new version of ReAsm checks for undefined local labels upon reaching the “}”, allowing a more useful error. It also allows using “=” as a synonym for “EQU”.
December 22, 2019 - permanent link
There is now an initial Alpha branch of ClipOut that has been ported to ReAsm, to further test ReAsm and FDisasm.
A new version of FDisasm, when compiled in listing mode, will now always mark (with “!!”) a program relative address that has no name defined, to make it easier to find problems that prevent reassembly.
A new development version of FindRes, when writing resource names to a comment, will replace illegal characters in a resource name with %XX syntax.
December 15, 2019 - permanent link
I've obtained a Mac Mini so as to be able to better support recent version of MacOS. Mini vMac seems to run fine on 10.14 Mojave and 10.15 Catalina. The operating systems though seemed a bit flaky, when trying to get both installed on different volumes. But I got it working eventually.
Also, I’ve tried out putting the signed checksum in a separate text file, instead of on the web page, for 5 Mini vMac extras in development: ReAsm, FindRes, DoLaunch, CopyRoms, DAFKEY. This is to make it easier to save with the downloaded file. The size information after the download link has been replaced with a link (labeled “info”) to the signed checksum, which now includes the file size.
December 8, 2019 - permanent link
A new version of FDisasm adds a new option, “|” that indicates the options following it apply after the end of the current instruction. This is used print comments after the end of a instruction, and can be a bit more clear and convenient than what would previously be needed, to have comments that precede the following instruction.
A new development version of FindRes makes use of this new syntax.
There is now an Alpha branch of DoLaunch that has been ported to ReAsm, to test the latest changes FindRes and FDisasm.
The formatting information for the Macintosh Plus version 3 ROM at the Alpha FDisasm ROM page has been updated to match recent changes in resource format produced by FindRes, including using “|”
December 1, 2019 - permanent link
The Alpha branch of CopyRoms has been edited to try to have a more readable format.
A new development version of FindRes matches the new format in CopyRoms. Also, it now checks if the “format” and “bin_map” already exist, and refuses to overwrite them, to avoid accidentally losing work.
And, the Alpha branch of DAFKEY has also been updated to this new formatting.
November 24, 2019 - permanent link
A new version of ReAsm supports in a more places a constant expression with addition and subtraction, rather than only a simple numeric constant or named constant (i.e. “a - b + $5” instead of “$5” or “a”).
The Alpha branch of CopyRoms has also been updated to take advantage.
November 17, 2019 - permanent link
There is now an Alpha branch of CopyRoms that has been ported to ReAsm, to make it more open source, and to continue testing of ReAsm and FDisasm. CopyRoms is a bit more complicated than the last port, of DAFKEY.
A new version of FDisasm supports using the “CN” option for addressing mode 5. Also, the “CN” option nos supports negative numbers.
November 10, 2019 - permanent link
A new version of ReAsm allows using short strings as integers. For example, using 'DRVR' instead of $44525652.
A new version of FDisasm adds an “IS” option for outputting such strings instead of hexadecimal integers. Also, the “BN” option for generating binary integers instead of hexadecimal integers can now be used for instruction arguments, not just DC directives.
The formatting information for the Macintosh Plus version 3 ROM at the Alpha FDisasm ROM page has been updated to take advantage of the new “IS” option.
And, the Alpha branch of DAFKEY has also been updated to take advantage of this option.
November 3, 2019 - permanent link
A new version of ReAsm adds a way to restrict the scope of a global label. After the line “a_label>”, a_label can no longer be used (but it can be redefined to something else). Before the line “a_label<”, forward references to a_label can not be used. As a convenience, the line “a_label:<” is equivalent to “a_label<” followed by “a_label:”. (“:<” is used instead of “<:” to make it easier to search for the definition of a label.)
This syntax also works for identifiers defined by EQU and OPWORD. “an_identifier>” ends the scope. There are no forward references to these identifiers, but it is still legal to use “an_identifier<”.
Made possible by this new feature of ReAsm, there is now an Alpha branch of DAFKEY that has been ported to ReAsm. The binary is so far identical to the stable version, but eventually I'll take advantage of the complete control offered by ReAsm to clean up a few things. But the main reason for porting to ReAsm is to make it more open source. Now anyone can compile or modify DAFKEY without needing development tools that aren't for sale anymore. DAFKEY was chosen to port first since it is one of the simplest Mini vMac extras.
A new version of FDisasm fixes a bug affecting parsing floating hex constants. Which prevented disassembling the Mac II ROM correctly.
October 20, 2019 - permanent link
A new version of ReAsm supports using a register name with the EQU directive. It also fixes including an empty file.
October 13, 2019 - permanent link
The formatting information for the Macintosh Plus version 3 ROM at the Alpha FDisasm ROM page has been updated to start to take advantage of new features in last weeks FDisasm.
A new version of ReAsm can assemble the resulting listing.
October 6, 2019 - permanent link
A new version of FDisasm allows using the AC/SC options, and J/D options, for Absolute addressing modes of instruction arguments.
Also, Immediate Data arguments can be treated as absolute addresses, looking them up in “abs_names” file, by using a new “AD” option.
And also, a new “CN” option allows specifying that an Immediate Data argument is a named constant. The previous technique of using “AC” to name the constant, with the remaining zero value suppressed, no longer works (the zero is not suppressed).
September 29, 2019 - permanent link
A new version of FDisasm allows using the AC/SC/DC options, and J/D options, for constant arguments of instructions. (Previously these could only be used DC directives.)
September 22, 2019 - permanent link
A new version of FDisasm allows using names for the AC, SC, and DC options, like the J option does. For AC and SC the value can now be zero, which can be useful for a named constant of value zero. To implement this, there is now a flag variable to indicate which options, since zero can’t be used to indicated the option isn’t used. Similarly, the value for DC can be one.
The AC/SC/DC options can now persist across multiple DC directives, just like it does for the J option. These options are cleared when there is a new type option, or when instructions are disassembled.
The J option can now be used without specifying the D option, it is just implied.
The AC/SC/DC options can now also be used for DC directives that are not the difference of two labels. In this case, if there is an AC option value that is equal to the data, then the “0 +” is suppressed. So this provides a way to specify a named constant.
September 15, 2019 - permanent link
A new version of FDisasm begins to add the same basic concept of types that ReAsm has. This is used to correctly to correctly handle instructions such as “FAdd.S #"$5F800000", FP0”, seen in the Macintosh IIci ROM.
The Alpha FDisasm ROM page has updated formatting information for the Macintosh IIci ROM to take advantage.
Further, FDisasm now has type options that can be used for DC directives: in addition to B/W/L, there is SB/SW/SL for signed and UB/UW/UL for unsigned.
September 8, 2019 - permanent link
The Alpha FDisasm ROM page has the start of formatting information for the Macintosh IIci ROM, begun for further testing of ReAsm and FDisasm. I think this is the first Macintosh ROM to make significant use of MMU instructions.
A new version of ReAsm fixes a few things found. It implements the PFlushA instruction. It fixes a bug with FMoveM for control registers with predecrement addressing. And it implements 68020 long branches.
There is also a new version of FDisasm to fix a bug with the ALIGNB directive.
September 1, 2019 - permanent link
A new version of ReAsm implements the few 68851 PMMU instructions used in the Macintosh II and IIx ROMs.
These instructions were already implemented in FDisasm (by Rob Braun). But there is still a new version of FDisasm to output these instructions in the format compatible with ReAsm.
The Alpha FDisasm ROM page has updated formatting information for both versions of the Macintosh II ROM and the Macintosh IIx ROM, to take advantage. (Instead of using DC.W constants for these instructions.)
August 25, 2019 - permanent link
The Alpha FDisasm ROM page now has formatting information both versions of the Macintosh II ROM, and also for the Macintosh IIx ROM. ReAsm can be used on the output to get back exactly the original ROM image.
These ROMs have a few 68851 PMMU instructions which are not supported by ReAsm and FDisasm yet. So these instructions are just treated as DC.W constants for now.
August 18, 2019 - permanent link
A new version of ReAsm implements a few things previously missed. Like the Pack, Unpk, BFTST, BFSET, Tcc, and TPcc instructions, and k factors for FMove.P.
There is also new version of FDisasm. Taking the compiled form of the ReAsm test suite and running it through FDisasm turned up a number of things to fix. Like implementing Pack, Unpk, Tcc, and TPcc instructions, and k factors for FMove.P. And the FSave, FRestore, FScc, FDBcc, FTcc, and FTPcc instructions. Also using FBT instead of FBRA to match MPW syntax. And using a colon instead of comma for the FSinCos to match MPW syntax. “FBF (* + 2)” is recognized as FNop. FMoveM of a single control register is recognized as FMove. For instructions like FInt, if the source and destination are the same, the second argument can be omitted.
August 11, 2019 - permanent link
A new version of ReAsm implements the remaining MC68881 FPU instructions that were not needed for the Macintosh II ROM.
------
Thanks to Chris Hanson, David Kuntz, Anonymous, Robert Braun, Robert Anderson, Michael Hix, Patrick Ronquillo, Shawn McKee, Gian-Reto Theus, Ian Miller, Jason Heiser, Jeffry Rollins, Anonymous, Keith Palmer, Mark Hilary Williams, Charles Gascoigne, Andrew Johnstone, Mirko Holzer, Macintosh Repository, Joe Ho, Juan Sanz, Thomas Chan, Villa Vianci di Ceccherini Chiara, Anonymous, Paul Powers, Thomas Harvey, Matti Riikonen, Anthony Allen, Sverre Svenningsen, Ben Rentfrow, Eric DeStefano, Scott Rickard, Matthew Kirschenbaum, Hayden Ganadi, Pascal Kamina, Kustaa Nyholm, Arthur Fritzsche, Doug Bergen, David Watson, John Sutley, Thomas Hemenway, Chaled Schmidt, Austin-Zande Imagery, Alexis Gargaloni, William Sniegowski, Andrew Ego, Richard Hillier, Erik Anderson, Sabine Busse, Francisco José Ramírez Vicente, Chris Royle, Marie Friis, Andrew Gray, Paul Day, RevereWareParts.com, Frédéric Blondiau, Joshua Russell, Ed Brandt, Hans-Josef Leuninger, Mohideen Haja, Christopher Tar, Stephen Fenwick, Ryan Baumgart, Henry Shawcross, Alex Rader, Johannes Bittner, Nathanael Tronerud, Alexis Gargaloni, Joshua Russell, and Mario Spachtholz for sponsoring over 110 days of health insurance.
Thanks to Gregory Christie, Nicholas Rezmerski, James Denton, Janne Tompuri, James Torck, and Anonymous for sponsoring 14 months of web hosting for the Gryphel project.
August 4, 2019 - permanent link
A new version of ReAsm now implements enough FPU instructions to be able to correctly reassemble the complete Macintosh II ROM.
July 21, 2019 - permanent link
A new version of ReAsm now has a basic concept of types. Previously, it is some places it would use a byte to represent the size of an integer: Byte, Word, or Long. Now, it still uses a byte, but only the low nibble represents the size, and the high nibble represents the class - so far for signed, unsigned, and unknown sign integers.
One use of this is to provide better error checking. For example, previously, if there was a byte field representing the difference between two labels, it could only check whether the value was between -128 and 255, since it did not know whether the field was signed or unsigned. Now, if it is known to be signed, it can check the value is between -128 and 127, and if it is known to be unsigned, it can check the value is between 0 and 255.
The DC directive, in addition to supporting sizes of “.B”, “.W”, and “.L”, now also supports “.SB”, “.SW”, and “.SL” for signed fields, and “.UB”, “.UW”, and “.UL” for unsigned fields.
But the actual reason adding a type representation now is to have a way of dealing with floating point types, for implementing FPU instructions.
------
Thanks to Derek Etnyre, Tim Rodgers, John Feinberg, Lance Lannigan, Japhy Riddle, John Prchal, John Leake, Bronstrup Creative, Bruce Rayne, Ellery Bann, Matthew Tubbs, Thomas Jouneau, Sharon Lam, Macintosh Repository, Randall Trowbridge, Golan Klinger, FUJITA TAKUJI, Richard Lawson, David OConnor, Polycarpos Kostrivas, Bennett Foddy, Chris Hanson and Henry Shawcross for sponsoring three months of web hosting for the Gryphel project and over 23 days of health insurance.
July 14, 2019 - permanent link
A new version of ReAsm adds support for more 68020 instructions and addressing modes. It can assemble up to byte 0x29524 of 0x40000 in the Macintosh II ROM, at which point starts the floating point package implementation using the FPU. So the next step is to add support for FPU instructions.
The Alpha FDisasm ROM page has updated formatting information for the PowerBook 100 ROM, which merges in output from the current FindRes tool.
A new version of ReAsm adds support for just enough additional 68020 instructions and addressing modes to assemble the PowerBook 100 ROM. (This ROM has some support for 68020, even though the PowerBook 100 doesn’t have one.)
The Alpha FDisasm ROM page now has formatting information for the PowerBook 100 ROM. ReAsm can be used on the output to get back exactly the original ROM image.
June 30, 2019 - permanent link
The Alpha FDisasm ROM page now has formatting information for 7 other ROM versions in addition to the Macintosh Plus v3. For all of them, ReAsm can be used on the output to get back exactly the original ROM image.
June 23, 2019 - permanent link
A new development version of FindRes uses the new nested local scopes feature of ReAsm and FDisasm for pascal strings. It is also updated to remove the deprecated “JM” option of FDisasm, instead using the “J . <address> = <name>” syntax. And this syntax is now also used for the AM option. The new “T” size option of FDisasm and ReAsm is used for 3 byte fields. And a few bugs in dealing with a Resources in ROM input file are fixed.
A new version of FDisasm, when outputting a blank line, indents it to the label field, to be compatible with ReAsm. Also, “#define MakeListingMode 0”, is now used for the default compile. So, what was variation 2, producing output suitable for ReAsm, is now the default. And the previous default, with address and hex fields, is now variation 3.
The FDisasm alpha page includes a new version of formatting information for the Macintosh Plus ROM, that merges in the output from the current FindRes. The deprecated “&” format option is completely removed.
June 16, 2019 - permanent link
A new version of FDisasm adds options “{” and “}” to output nested locals scopes as implemented in ReAsm. Using these loses compatibility with the MPW assembler, but I think can make the assembly code much easier to read.
It also add an “IN” option to output an INCLUDE directive, so that the resulting “main.a” file can be directly used by ReAsm.
There are two new options for outputting comments on a separate line, with different indentations. “C1” indents a comment to the directive field, and “C2” indents a comment to the continuation field. (The existing “!” option indents a comment to the label field on a separate line, and the existing “;” option puts a comment at the end of a line.)
Since compatibility with the MPW assembler is no longer being required, I’ve added a new size option “T”, like the existing “B”, “W”, and “L” options, but meaning 3 bytes (instead of 1, 2, or 4). This is useful, for example, in expressing the reference list structure of a Macintosh resource fork, which has a one byte attributes field followed by a three byte offset field.
A new version of ReAsm adds support for using the new “T” size with the DC directive. It also permits a comment indented to the continuation field, without needing a continuation character (“\”) on the previous line, as is generated by the new C2 option of FDisasm.
The FDisasm alpha page includes a new version of formatting information for the Macintosh Plus ROM, that starts to take advantage of the new features.
An additional change to FDisasm is that the LblWithInstr compile time option (for including a label on the same line as an instruction) always defaults to false, since this is not supported by ReAsm. The LabelFieldW compile time option now defaults to 4, instead of 11, when LblWithInstr is false. (This same value is used for indenting for the nested local scope options.) Outputting unknown data no longer tries to keep it aligned, since, align to what? Aligning to the beginning of the file isn’t usually useful. Output mode now always set to unknown data when the bin_map file indicates a transition to a non code region, even if the preceding region was also not code. When using both the SC and AC options, the subtraction is now output first, as this is what ReAsm requires. The “,” option previously did not work to specify options for the second argument, if there were no options for the first argument.
A new version of ReAsm now uses a hash table for symbols, making it much faster. The size of the table is chosen dynamically depending on available memory.
A number of possible hash functions were tried out on the over 8000 symbols used for the Macintosh Plus ROM assembly, and the results analyzed with help of Data Desk. The chosen function is surprisingly good, with results distributed much like a truly random function, but a bit more uniform. At first that doesn’t seem possible, but I think it is because most of labels are in sequences like “L2461”, “L2462”, “L2463”. If labels are the same except for the last couple characters, which are digits, the chosen function will always generate different hashes, while a more random function may not. The chosen function is:
x = RotateLeft(x, 8) - x; x = RotateLeft(x, 4) - x; x = x + s[i];
(Loop on every character of string s. Then take the desired number of low order bits. x is 32 bit unsigned integer initialized to 0.)
A new version of ReAsm partially implements the OPWORD and EQU directives, which allows it to correctly assemble the Macintosh Plus ROM, from source disassembled by FDisasm, using “trap_names” and “abs_names”.
It is currently very inefficient, because the data structure for looking up symbols is just a linked list. Replacing this with a hash table should make it much faster.
A new version of ReAsm can now correctly assemble the Macintosh Plus ROM, from source disassembled by a new version FDisasm, if the “trap_names” and “abs_names” aren’t used.
ReAsm now supports the MoveC instruction, which is for 68020. The Macintosh Plus ROM uses this instruction to detect whether it is running on a 68020, which it will actually work with. Also supported is using an offset from a label, instead of just the label, such as in “Jmp (DT20 - $2)(D0.W)”.
FDisasm now has both an alpha branch and a stable branch, just like Mini vMac itself has different branches. The new alpha branch of FDisasm now uses “MoveC” instead of “MOVEC” (ReAsm is case sensitive), and outputs size “.L” for MoveC. Also the DBcc instructions are no longer given a “.W” size.
A new version of ReAsm implements an “ALIGNB” directive, align to base, which is generated by FDisasm. (When using the MPW assembler, ALIGNB can be implemented with a macro.)
Another change is that labels now follow the MPW rules - the first character can be a letter, ‘_’, or ‘@’, and following characters can also include numbers, ‘#’, ‘$’, or ‘%’. For this to work, the numeric constants are now handled at the tokenization level. This made it simple to add support for decimal constants. (FDisasm only generates hexadecimal and binary constants for speed.) The tokenization level can now report syntax errors the same as previously was done for higher level errors, including file name and line number.
April 28, 2019 - permanent link
A new version of ReAsm supports the specific constant expressions that can be generated by FDisasm with the AC, SC, and DC options. Also, it now uses single quotes instead of double quotes for string constants and INCLUDE directives, to match the MPW assembler.
And, the “err_log” file now includes the file name and path, not just the line number. Further, it gives this not just for the line with the error, but for any INCLUDE directives that got it there.
And also, if a folder named “source” exists in the folder containing the application, ReAsm will now look for source in that folder.
April 21, 2019 - permanent link
A new version of ReAsm implements the “INCLUDE” directive, which can be arbitrarily nested. Also, the implementation of buffered read of input files is now more efficient.
April 14, 2019 - permanent link
A new version of ReAsm now uses the MPW Assembler syntax for line continuations - using a backslash character. Also, the Immediate addressing mode is now handled by the same code used for “DC”, and so now supports subtraction of 2 labels. Debugging infrastructure code has been added.
ReAsm no longer displays an alert for syntax errors. Instead it creates a file name “err_log”. This makes it easier to use ReAsm from MPW scripts. If an error occurs, the output “bin” file is deleted. If no error occurs, the “err_log” is deleted if it already exists. The line number where a syntax error occurred is written to the “err_log” file.
April 7, 2019 - permanent link
A new version of ReAsm now supports “DBcc” and “MoveM” instructions, which I think completes the set of 68000 instructions. (There are additional instructions for 68020 and later not yet implemented.) There is also support for using labels for some kinds of pc relative addressing modes. There is also some change in syntax for greater compatibility with the MPW assembler, and FDisasm - global labels no longer start with ‘.’, and binary constants just start with “%” instead of “$%”.
There is also a new version of FDisasm with improved compatibility with ReAsm. It will now output “.W” for word sized operations, rather than relying on the default being word. I feel this is better style and ReAsm currently requires it. There is also some new compile time options for ReAsm compatibility, such as forcing labels to be on a separate line, and using tab to indent instructions. These options are used in the fdis0002 variation I provide.
March 31 2019
A new version of ReAsm now supports “AsL”, “AsR”, “LsL”, “LsR”, “ROL”, “ROR”, “ROXL”, “ROXR”, “Rtr”, “TrapV”, “Illegal”, “Trap”, “Stop”, “Chk”, “Tas”, “MoveP”, “MulU”, “MulS”, “DivU”, “DivS”, and “TDivU”, instructions.
March 24 2019
A new version of ReAsm now supports “And”, “AndI”, “Or”, “OrI”, “Eor”, “EorI”, “Cmp”, “CmpI”, “CmpA”, “CmpM, “MoveQ”, “Nop”, “Rte”, “Reset”, “Exg”, “Ext”, “ExtB”, “Swap”, “Scc”, “Link”, “Unlk”, “Abcd”, “Sbcd”, “Nbcd”, “BChg”, “BClr”, “BSet”, and “BTst” instructions.
March 17 2019
A new version of ReAsm now supports “Move” to/from CCR/SR/USP, “MoveA”, “Add”, “AddA”, “AddI”, “AddX”, “AddQ”, “Sub”, “SubA”, “SubI”, “SubX”, “SubQ”, “Neg”, “NegX”, “Not”, and “Tst” instructions.
March 10 2019
A new version of ReAsm now supports “Jmp”, “Jsr”, “Rts”, “Pea”, and “Lea” instructions.
March 3, 2019 - permanent link
A new version of ReAsm now supports the brief extension word format for addressing mode 6 and mode 7,3. The full extension word format remains to be implemented.
February 24, 2019 - permanent link
A new version of ReAsm now supports “Clr” and “Move” instructions. And more significantly, implements all the addressing modes of these instructions, with exceptions of mode 6, and mode 7 with reg 3 (which are more complicated than all the rest of the modes put together). Once a couple instructions are implemented completely and satisfactorily, it will be a relatively simple to add most of the rest.
February 17, 2019 - permanent link
Today’s version of FDisasm fixes a bug reported by Ryan that affected disassembling floating point conditional long branches. It also partially reverts for now a change made in 1.2.6. If an instruction (or data) that is about to be output is longer than the space left to be disassembled, it will now not abort outputting the instruction, and just give a warning. This version also starts to provide ways to avoid the situations that lead to this problem. Disassembly of PC relative addressing modes can now use the AC and SC options for adding or subtracting a constant. There is a new ‘,’ option to indicate which argument options like AC and SC apply to. It also now checks that such one time options are actually used by the current instruction, and prints a warning if not.
In today’s version of ReAsm, string constants can have continuation lines. A return character, optionally followed by one or more tab characters, is accepted in a string constant and ignored. If you want a return character in the string constant, “\r” should be used intead. Tabs are not allowed elsewhere in string constant, “\t” should be used instead. A space character is not allowed before or after a return charcter in a string constant, “\s” should be used instead. Any arbitrary character can now be put in a string constant, by specifying it in hexadecimal, such as “\xB5”.
February 10, 2019 - permanent link
In today’s version of ReAsm, white space is now significant in the syntax of the input, which makes it possible to be closer to other 680x0 assemblers such as the MPW assembler. The “Bra” now supports normal manual size options (like "Bra.B"), in addition to the previous automatic size. Global labels are now disallowed inside a local context defined by “{” and “}”. Also, local labels can be used outside of “{” and “}”, where each global label starts a new local context, which is how the MPW assembler does local labels. String constants now support using a “\” escape mechanism to specify characters that cannot be used directly inside a string constant, like the double quote character.
February 3, 2019 - permanent link
A new version of ReAsm now supports “Bra” statements which automatically chooses whether to use the Byte or Word offset form. This is a bit tricky, because which form is used changes the size of the instruction, which can change whether Byte form can be used in that instruction and other instructions. Wanting this capability affects the architecture of ReAsm, which is why this was added before implementing all the normal instructions.
Also added in this version is support for string constants.
January 27, 2019 - permanent link
A new version of ReAsm now supports binary constants and local labels. An example input file is included. (But the same warnings still apply.)
January 20, 2019 - permanent link
A new version of ReAsm now supports labels, and constant fields that are the difference between two labels. An example input file is included. But ReAsm is still not fit for any purpose. The syntax of the input will change. The source code is lousy - it is in the exploratory stage, while I'm still working out exactly what the program will do and how it will work.
January 13, 2019 - permanent link
ReAsm ReAsm is a new application for reassembling the output of FDisasm. Or that is the eventual intention. It doesn’t do much yet.
Unlike other Macintosh Assemblers, ReAsm will have no awareness of the structures of a Macintosh application, or even the structure of a Macintosh resource fork. It instead it can be used to produce any arbitrary flat data file. This makes it better suited for reassembling output of FDisasm, after making some desired change.
January 6, 2019 - permanent link
The FindRes 1.2.5 and FDisasm 1.2.6 tools are updated.
FDisasm now has a “BN” option that modifies “B”, “W” and “L” to display binary instead of hex. FindRes now uses this for ‘ICN#’, ‘ICON’, ‘CURS’, ‘SICN’, ‘PAT ’ and ‘ics#’.
FindRes now supports the newer form of ‘ALRT’ and ‘DLOG’ resources, which have an additional “Auto Position” field. Support for “DRVR” resources is improved.
FDisasm now has a compile time configuration file “CONFIGUR.i”, with default values specified in the file “CNFGDLFT.i”. In particular I provide for download a variation that doesn’t output the address and hex dump fields, so that the result is suitable input for an assembler.
December 30, 2018 - permanent link
The FindRes 1.2.4 tool is updated to give information for resource types ‘vers’, ‘BNDL’, ‘SIZE’, ‘STR#’, ‘STR ’, ‘ALRT’, ‘DLOG’, ‘WIND’, ‘CNTL’, ‘MBAR’, ‘MENU’, ‘ICN#’, ‘ICON’, ‘SICN’, ‘ics#’, ‘CURS’ and ‘PAT ’. Also, support for ‘CODE’ and ‘DITL’ resources is improved.
FDisasm 1.2.5 is updated to properly limit the size of the hex field. Previously the hex field would be incorrect for very long lines, such as can be generated with the new “C” option. (For the future, it would be good to limit the length of lines generated by this option.)
December 23, 2018 - permanent link
The FindRes 1.2.3 tool is updated to give information for resource types ‘FREF’ and ‘DITL’. To support this, FDisasm 1.2.4 is updated to support an alignment option in the format file. (Items in a DITL are padded to an even number of bytes.)
December 16, 2018 - permanent link
FDisasm 1.2.3 is updated to add new options for the format file, to support text fields, and adding more modifiers for offset fields.
The FindRes 1.2.2 tool is updated to begin to take advantage of these new FDisasm features.
So now if you re-assemble the output of FDisasm that was based on output of FindRes, you can make changes to the assembly file that affect the length of resources, and still have a valid resource fork.
December 9, 2018 - permanent link
Thinking that the Advanced Variations Service may be too advanced, I have renamed it to the Text Based Variations Service, and then made a new Advanced Variations Service that is like the Basic Variations Service but with more options, that is, the same as what the only Variations Service was for Mini vMac 3.5.8, but with new Mini vMac 36 options added.
FDisasm is updated to add the ability to specify labels in the format file (in addition to the "bin_names" file), so that a single address can have multiple labels. Also in the format file, you can now specify a one time name to use in an address field argument (overriding the "bin_names" file). Similarly, in the format file, can you specify a name to use for the current base address used by the D option.
The FindRes tool is updated to begin to take advantage of these new FDisasm features.
December 2, 2018 - permanent link
FindRes is updated to support AppleSingle format, such as created by asPack.
November 25, 2018 - permanent link
I’ve updated FindRes to use the latest versions of my common source code, in preparation for making it support AppleSingle format. But these updates are not yet public. Thanksgiving and stuff took time this past week.
November 18, 2018 - permanent link
asUnpack is a new application to unpack a file in AppleSingle format. It is the inverse of last week’s asPack.
November 11, 2018 - permanent link
asPack is a new application to convert a file you select into AppleSingle format.
AppleSingle format saves all the parts of a Macintosh file (including the data fork, the resource fork, file type and creator, the creation/modification dates, and other meta data) into a single simple sequence of bytes that can be transferred to non Macintosh file systems without losing any information.
But the intended use for asPack is for use with FDisasm, as an alternative to GetRsFrk, once FindRes is updated to support the AppleSingle format. This is why the output of asPack is saved to a file named “bin”.
November 4, 2018 - permanent link
Galactic Frontiers has been added to the software hosted by the Gryphel Project.
(As part of continued testing of the newly officially released Mini vMac 36.04.)
October 28, 2018 - permanent link
Mini vMac 36.04 is now officially released. That is, it is now declared to be the stable version, with no change made to the source code or compiled applications. It is available from the main Mini vMac Download page. The Changes file lists what has changed since Mini vMac 3.5.8.
The old Mini vMac 3.5.8 is still available for download, in case there are any serious problems with the new version. For this release I’m trying something different. Instead of a long beta period and then no further changes after, with bug fixes only in the development branch, this time the beta period was shorter and there may still be further bug fix releases to the stable branch.
October 21, 2018 - permanent link
TypeIt4Me has been added to the software hosted by the Gryphel Project. (As part of testing the new Mini vMac 36.04 beta.)
All the digital signatures on this website have been updated to the GRY format. This was accomplished in a reasonable time by using MPW scripting and my signature tools for MPW. The tools SigChkTl, SigWrtTl, and MkKeysTl, have been updated to spin the cursor, so as to work better with the AutoSlow feature of Mini vMac. There is also a new tool PSgChkTl, for checking the old MacPGP format signatures.
October 14, 2018 - permanent link
Sound Mover 1.74 has been added to the software hosted by the Gryphel Project.
(As part of testing the new Mini vMac 36.04 beta.)
October 7, 2018 - permanent link
The latest Mini vMac 36.04 beta fixes a few issues in the classic Macintosh port. (The fixes were developed inside Mini vMac.)
The new “-svd 0” option is now implemented in classic Macintosh port. While doing this, it turned out that the build system was generating an incorrect Rez command for the MPW development environment. It also turned out that if debug logging was turned on for this port, and the log already existed when Mini vMac started, the log wasn’t cleared.
An unrelated change is that default version of XCode chosen by the build system is now 9.4.1, the latest version supported. Since XCode is no longer used for official Mini vMac builds, there is no reason to default to the specific antique version previously used. Similarly, Microsoft Visual Studio 2017 is now the default version chosen for that development environment.
September 30, 2018 - permanent link
The latest Mini vMac 36.03 beta attempts preliminary translations for the strings “copy variation options” and “Variation options copied”, by looking at Apple’s translated strings for the Edit menu of the Finder, and using Google Translate. Only “Copy” and “Copied” are translated, not “Variation Options”. The Localization pages are updated accordingly.
September 23, 2018 - permanent link
I have begun moving the Gryphel Project to “GRY” format digital signatures. There are three new keys:
Gryphel Key 3 is the new main public key, to be used only for signing other keys.
Gryphel Key 4 is for signing variations. The Gryphel Project Variations Service now uses this key, for both Mini vMac 3.5.8 and Mini vMac 36 in beta.
Gryphel Key 5 is for signing other downloads. The Mini vMac standard variations are now signed with this key.
The MPW tools for digital signatures, SigChkTl, SigWrtTl, and MkKeysTl, have been updated to the latest code and use “GRY” format.
:
September 16, 2018 - permanent link
Today’s Mini vMac 36.02 beta has a few fixes.
The game PowerMonger was reported not to work in Mini vMac 3.5.8, though it worked in 3.4.1. This was due to a bug in emulating the TRAPcc instruction.
While looking into a report of issues with Num Lock, I found that on Windows, if Num Lock is on, the operating passes virtual key codes like VK_NUMPAD0 through VK_NUMPAD9, but if Num Lock is off, it passes virtual key codes like VK_LEFT, VK_RIGHT, VK_UP, and VK_DOWN. A flag bit indicates whether VK_LEFT means the left arrow key or the 4 key on the keypad. So now Mini vMac will check that flag, and map the keys on the keypad to the emulated Macintosh keypad, regardless of whether Num Lock is on. (But this doesn’t fully explain the reported issue.)
It also turns out that on Windows (at least on some machines and os versions) the operating system does not use virtual key codes VK_LCONTROL/VK_RCONTROL/VK_LMENU/VK_RMENU, but instead uses VK_CONTROL/VK_MENU with that same flag bit to indicate whether it was the left or right key. If Mini vMac is compiled with “-km” options that require distinguishing between left and right, then that is checked for VK_CONTROL/VK_MENU.
Also on Windows, I noticed that the “menu key” (VK_APPS), is usually on the right side of key (if present at all), and so now maps to the right option key instead of the left, if -km options require distinguishing them.
The Cocoa OS X port now implements distinguishing between left and right modifier keys. But this requires looking at undocumented flags of the key event, which might or might not always work, so it is not done unless -km options are used that require it. (I have not found any way to distinguish left and right modifiers in the Carbon OS X port.)
Also in the Cocoa OS X port, launching Mini vMac by drag and drop of a disk image on to the application icon would not work because of the new code to allow drag and drop of the ROM image. Some initialization stuff for Cocoa caused file open requests to be received earlier than expected, so that initialization has been moved later, after the ROM has been looked for in the usual places.