• AppleWorks 5.1 Finder Loader - Calling Hugh Hood

    From Alex Lee@21:1/5 to All on Thu Mar 2 22:54:12 2023
    Hiya Hugh (and everyone),

    I came across http://www.apple2works.com/aw51finderloaderdemo.mov

    on your site and wanted to know – is this available? I couldn't find
    any additional info. Was this an AW.Init, or something else?

    Also, was there a complete and handy icon set for AppleWorks 5.1 that
    double clicking on the 3 different types of AW files (database,
    spreadsheet, word processor) would load AppleWorks from the System 6
    Finder and then load those docs as seen in the aforementioned video?

    Alex

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Hugh Hood@21:1/5 to Alex Lee at on Thu Mar 2 12:35:07 2023
    Alex,

    It's nice you noticed. I was hoping someone would eventually. ;-)

    Yes, it's a finished working product called the AppleWorks 5.1 Finder File Loader Init. It's just not yet released.

    It works just as the video you saw shows --- double click a single (or
    select multiple files and 'OPEN') AppleWorks ADB, AWP or ASP custom icons
    (and optionally text and Merlin source file icons) and presto, AppleWorks
    5.1 is launched and proceeds automatically to load the selected files (up to
    36 files) to the Desktop.

    It comes with custom AppleWorks Finder icons (or you can use your own).
    Then, you just use an icon editor to set the application path to the
    AppleWorks 5.1 program.

    Now, why hasn't it been released yet?

    1. The main reason is that I have been working on a collection of four new inits to be added to my AppleWorks InitPack. My plan was to release the new InitPack collection in time for KansasFest so that maybe for once I wouldn't 'suck'. ;-) . Three of the four are completed and de-bugged. The fourth is
    in (slow) progress.

    2. The other (secondary) reason is that I need to write documentation for
    the Finder File Loader Init to explain that one must use an icon editor to modify the path if you expect it to work. It seems like writing
    documentation always takes a back seat to writing code when the time is available. But, it WILL get done.

    As with the other inits, I'll provide full source code for the new inits.

    Trivia - this started out as a custom macro task file and morph into an
    init.

    BTW, thanks for you site. Your pre-made GS/OS images have save me tons of
    time.

    Regards,




    Hugh Hood



    in article ttq2p4$9pe3$[email protected], Alex Lee at [email protected] wrote on 3/2/23 5:54 AM:

    Hiya Hugh (and everyone),

    I came across http://www.apple2works.com/aw51finderloaderdemo.mov

    on your site and wanted to know ��is this available? I couldn't find
    any additional info. Was this an AW.Init, or something else?

    Also, was there a complete and handy icon set for AppleWorks 5.1 that
    double clicking on the 3 different types of AW files (database,
    spreadsheet, word processor) would load AppleWorks from the System 6
    Finder and then load those docs as seen in the aforementioned video?

    Alex


    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Joshua Bell@21:1/5 to Hugh Hood on Thu Mar 2 20:21:38 2023
    Neat. I'd be interested to learn more as you progress - I've been meaning to reach out to you about this.

    Recently I've been teaching Apple II DeskTop (a.k.a. MouseDesk) to handle load file types with appropriate handlers, for system files that follow the "$2000 is a jump instruction. $2003 and $2004 are $EE." protocol, where you dump a path in $2006. There
    aren't many such system files - UNSHRINK and BINSCII are two of them. And of course there's BASIC.SYSTEM for BAS files, my new INTBASIC.SYSTEM for INT files, and generic BASIS.SYSTEM files inspired by Bitsy Bye. Alas, APLWORKS.SYSTEM is not such a system
    file. I'd be interested in a ProDOS-8 friendly shim that could invoke AppleWorks and trigger it to load the passed file. Ideally this would work with a stock install of AppleWorks.

    Let's assume the path to AppleWorks is known. (One way to handle this would be to show a prompt or even a filesystem browser on first invocation, another would be to just do a search of the online volumes and directories for APLWORKS.SYSTEM. Either way,
    the shim would remember it for next time.) How coupled is your code to GS/OS? I understand it may need abilities that go beyond what can be done on 8-bit systems to intercept AppleWorks behavior. (I don't know much about AppleWorks extensibility.)

    On Thursday, March 2, 2023 at 10:35:25 AM UTC-8, Hugh Hood wrote:
    Alex,

    It's nice you noticed. I was hoping someone would eventually. ;-)

    Yes, it's a finished working product called the AppleWorks 5.1 Finder File Loader Init. It's just not yet released.

    It works just as the video you saw shows --- double click a single (or select multiple files and 'OPEN') AppleWorks ADB, AWP or ASP custom icons (and optionally text and Merlin source file icons) and presto, AppleWorks 5.1 is launched and proceeds automatically to load the selected files (up to 36 files) to the Desktop.

    It comes with custom AppleWorks Finder icons (or you can use your own). Then, you just use an icon editor to set the application path to the AppleWorks 5.1 program.

    Now, why hasn't it been released yet?

    1. The main reason is that I have been working on a collection of four new inits to be added to my AppleWorks InitPack. My plan was to release the new InitPack collection in time for KansasFest so that maybe for once I wouldn't 'suck'. ;-) . Three of the four are completed and de-bugged. The fourth is in (slow) progress.

    2. The other (secondary) reason is that I need to write documentation for the Finder File Loader Init to explain that one must use an icon editor to modify the path if you expect it to work. It seems like writing documentation always takes a back seat to writing code when the time is available. But, it WILL get done.

    As with the other inits, I'll provide full source code for the new inits.

    Trivia - this started out as a custom macro task file and morph into an init.

    BTW, thanks for you site. Your pre-made GS/OS images have save me tons of time.

    Regards,




    Hugh Hood



    in article ttq2p4$9pe3$[email protected], Alex Lee at [email protected] wrote on
    3/2/23 5:54 AM:
    Hiya Hugh (and everyone),

    I came across http://www.apple2works.com/aw51finderloaderdemo.mov

    on your site and wanted to know ­ is this available? I couldn't find
    any additional info. Was this an AW.Init, or something else?

    Also, was there a complete and handy icon set for AppleWorks 5.1 that double clicking on the 3 different types of AW files (database, spreadsheet, word processor) would load AppleWorks from the System 6 Finder and then load those docs as seen in the aforementioned video?

    Alex


    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Alex Lee@21:1/5 to Hugh Hood on Fri Mar 3 21:45:22 2023
    On 2023-03-02 18:35:07 +0000, Hugh Hood said:

    Alex,

    It's nice you noticed. I was hoping someone would eventually. ;-)

    Yes, it's a finished working product called the AppleWorks 5.1 Finder File Loader Init. It's just not yet released.

    It works just as the video you saw shows --- double click a single (or
    select multiple files and 'OPEN') AppleWorks ADB, AWP or ASP custom icons (and optionally text and Merlin source file icons) and presto, AppleWorks
    5.1 is launched and proceeds automatically to load the selected files (up to 36 files) to the Desktop.

    It comes with custom AppleWorks Finder icons (or you can use your own).
    Then, you just use an icon editor to set the application path to the AppleWorks 5.1 program.

    Now, why hasn't it been released yet?

    1. The main reason is that I have been working on a collection of four new inits to be added to my AppleWorks InitPack. My plan was to release the new InitPack collection in time for KansasFest so that maybe for once I wouldn't 'suck'. ;-) . Three of the four are completed and de-bugged. The fourth is
    in (slow) progress.

    2. The other (secondary) reason is that I need to write documentation for
    the Finder File Loader Init to explain that one must use an icon editor to modify the path if you expect it to work. It seems like writing
    documentation always takes a back seat to writing code when the time is available. But, it WILL get done.

    As with the other inits, I'll provide full source code for the new inits.

    Trivia - this started out as a custom macro task file and morph into an
    init.

    Cool, already something to look forward to for KFest 2023 :-)

    I was struck by the behaviour in the video – I was thinking "I didn't
    think ProDOS 8 programs could do that!" I've been meaning to setup
    AppleWorks classic to see what it's like for word processing.

    If you need to stagger releases of the INITs, you'll get more counts of
    sucking less ;-)


    BTW, thanks for you site. Your pre-made GS/OS images have save me tons of time.

    Very glad to to hear they were useful!

    Alex

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Andrew Roughan@21:1/5 to Joshua Bell on Fri Mar 3 11:33:22 2023
    Joshua Bell <[email protected]> wrote:
    Recently I've been teaching Apple II DeskTop (a.k.a. MouseDesk) to handle load file types with appropriate handlers, for system files that follow
    the "$2000 is a jump instruction. $2003 and $2004 are $EE." protocol,
    where you dump a path in $2006. There aren't many such system files - UNSHRINK and BINSCII are two of them. And of course there's BASIC.SYSTEM
    for BAS files, my new INTBASIC.SYSTEM for INT files, and generic
    BASIS.SYSTEM files inspired by Bitsy Bye.


    DOS 3.3 Launcher also follows this protocol and could be an entertaining
    use case for you.

    Of course, the full ProDOS ports make this obsolete for many games but
    perhaps there’s still a use (non game?) for it.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Steve Nickolas@21:1/5 to Joshua Bell on Fri Mar 3 11:46:46 2023
    On Fri, 3 Mar 2023, Joshua Bell wrote:

    Ah yes. I wrote https://github.com/a2stuff/basys33 as a helper here -
    you can drop it (a BASIS.SYSTEM file) in the same directory as DOS3.3.LAUNCHER and it'll invoke the latter for $F1..$F4 files, or QUIT.
    Or you can just rename DOS3.3.LAUNCHER to BASIS.SYSTEM. I didn't teach
    A2D about these files specifically because the $F1....$F4 types are
    "user defined" and overloaded; A2D itself uses $F1 for its files
    (modules, accessories, etc) with specific auxtypes, and DOS3.3.LAUNCHER
    files aren't easily distinguishable since they use auxtype as load
    address. So putting the launcher adjacent to them to disambiguate is
    kinda needed anyway, and so a custom BASIS.SYSTEM works.

    There are still a handful of non-ported games, but yeah - the rationale
    is dwindling! But anyway, with all of the above I can just double-click
    a DOS3.3.LAUNCHER image file from A2D and it'll run automagically.

    Some of my games use $F1 for their extra files.

    Most of them have an auxtype of 0 (it varies), and many have .OVL or .OVL# (where # is a number) in their filenames.

    -uso.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Joshua Bell@21:1/5 to Andrew Roughan on Fri Mar 3 08:29:48 2023
    On Friday, March 3, 2023 at 3:33:24 AM UTC-8, Andrew Roughan wrote:
    Joshua Bell <[email protected]> wrote:
    Recently I've been teaching Apple II DeskTop (a.k.a. MouseDesk) to handle load file types with appropriate handlers, for system files that follow the "$2000 is a jump instruction. $2003 and $2004 are $EE." protocol, where you dump a path in $2006. There aren't many such system files - UNSHRINK and BINSCII are two of them. And of course there's BASIC.SYSTEM for BAS files, my new INTBASIC.SYSTEM for INT files, and generic BASIS.SYSTEM files inspired by Bitsy Bye.

    DOS 3.3 Launcher also follows this protocol and could be an entertaining
    use case for you.

    Of course, the full ProDOS ports make this obsolete for many games but perhaps there’s still a use (non game?) for it.

    Ah yes. I wrote https://github.com/a2stuff/basys33 as a helper here - you can drop it (a BASIS.SYSTEM file) in the same directory as DOS3.3.LAUNCHER and it'll invoke the latter for $F1..$F4 files, or QUIT. Or you can just rename DOS3.3.LAUNCHER to BASIS.
    SYSTEM. I didn't teach A2D about these files specifically because the $F1....$F4 types are "user defined" and overloaded; A2D itself uses $F1 for its files (modules, accessories, etc) with specific auxtypes, and DOS3.3.LAUNCHER files aren't easily
    distinguishable since they use auxtype as load address. So putting the launcher adjacent to them to disambiguate is kinda needed anyway, and so a custom BASIS.SYSTEM works.

    There are still a handful of non-ported games, but yeah - the rationale is dwindling! But anyway, with all of the above I can just double-click a DOS3.3.LAUNCHER image file from A2D and it'll run automagically.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Joshua Bell@21:1/5 to Steve Nickolas on Fri Mar 3 17:52:43 2023
    Apologies for the thread hijack, Alex!

    On Friday, March 3, 2023 at 8:45:59 AM UTC-8, Steve Nickolas wrote:
    On Fri, 3 Mar 2023, Joshua Bell wrote:

    Ah yes. I wrote https://github.com/a2stuff/basys33 as a helper here -
    you can drop it (a BASIS.SYSTEM file) in the same directory as DOS3.3.LAUNCHER and it'll invoke the latter for $F1..$F4 files, or QUIT. Or you can just rename DOS3.3.LAUNCHER to BASIS.SYSTEM. I didn't teach
    A2D about these files specifically because the $F1....$F4 types are
    "user defined" and overloaded; A2D itself uses $F1 for its files
    (modules, accessories, etc) with specific auxtypes, and DOS3.3.LAUNCHER files aren't easily distinguishable since they use auxtype as load address. So putting the launcher adjacent to them to disambiguate is
    kinda needed anyway, and so a custom BASIS.SYSTEM works.

    There are still a handful of non-ported games, but yeah - the rationale
    is dwindling! But anyway, with all of the above I can just double-click
    a DOS3.3.LAUNCHER image file from A2D and it'll run automagically.
    Some of my games use $F1 for their extra files.

    Most of them have an auxtype of 0 (it varies), and many have .OVL or .OVL# (where # is a number) in their filenames.

    -uso.

    Good to know!

    FWIW, I'd encourage people working on new P-8 projects to not be afraid to pick new type/auxtype values, but also do so conservatively; 16777215 combinations won't last forever! For example, I've been talking with Frank M. about his players and suggested
    ANM $5B / $100x for video files, SND $D8 / $330x for BTc audio, etc. https://github.com/a2infinitum/apple2-filetypes is the closest thing to a modern registry, so I've filed bugs like https://github.com/a2infinitum/apple2-filetypes/issues/5 as an "intent
    to use" for MUS $D5 / $D0E7 for Electric Duet files. A2D then assigns them at least a major-type icon, and can invoke BASIS.SYSTEM (if present on the volume) for playback.

    (My logic in A2D can also look at filename suffixes/extensions.)

    So far as I can tell, despite some squatting ($6x for PC Transporter, $7x for Kreative Software, and $8x for GEOS?), nobody ever claimed $9x filetypes, so those could be meted out carefully if there is truly no usable base type.

    Aaaanyway, here's hoping to hear highlights from Hugh Hood on ye olde $19 ADB / $1A AWP / $1B ASP. (With auxtypes encoding filename case bits. Wheee! ADB decodes the case correctly, but doesn't do spaces... yet)

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Hugh Hood@21:1/5 to Joshua Bell on Fri Mar 3 20:31:40 2023
    On 3/2/2023 10:21 PM, Joshua Bell wrote:

    Recently I've been teaching Apple II DeskTop (a.k.a. MouseDesk) to
    handle load file types with appropriate handlers, for system files
    that follow the "$2000 is a jump instruction. $2003 and $2004 are
    $EE." protocol, where you dump a path in $2006. There aren't many
    such system files - UNSHRINK and BINSCII are two of them. And of
    course there's BASIC.SYSTEM for BAS files, my new INTBASIC.SYSTEM for
    INT files, and generic BASIS.SYSTEM files inspired by Bitsy Bye.
    Alas, APLWORKS.SYSTEM is not such a system file. I'd be interested in
    a ProDOS-8 friendly shim that could invoke AppleWorks and trigger it
    to load the passed file. Ideally this would work with a stock install
    of AppleWorks.



    Funny you ask. Actually, I already wrote this for the $2003/$2004/$2006
    ProDOS startup protocol procedure at the request of John Brooks several
    years ago. I think he was going to use it with his BASIS.SYSTEM.

    I sent it to John and I guess he got busy with other things and so it
    never saw the light of day, AFAIK.

    So, I've just now uploaded it to my website at this address: http://www.apple2works.com/aw51launch.shk

    In that .shk file will be the System file and the source code.

    From the source, here's a brief intro:

    ************************************************************
    * *
    * * AW51Launcher - An AppleWorks File Loader * *
    * *
    * (For Use with BASIS.SYSTEM by John Brooks) *
    * *
    * Version 1.0 (for AppleWorks Version 5.1) *
    * by Hugh Hood (2018) *
    * [Based on prior works by Douglas Gum and Tom Hoover] *
    * *
    * *
    * - A SYSTEM File that Provides - *
    * *
    * 1. Receives the path and file name of a selected *
    * ADB ($19) / AWP ($1A) / ASP ($1B) / TXT ($04) *
    * file from BASIS.SYSTEM *
    * *
    * 2. Moves the passed path and file name to within *
    * an UltraMacros Task File compiled macro table *
    * *
    * 3. Moves the modified compiled macro table into *
    * place at $01/EF00 in Aux Memory for use by *
    * AppleWorks 5.1 *
    * *
    * 4. Launches APLWORKS.SYSTEM and instructs it to use *
    * the compiled macro table previously moved *
    * into place instead of the default macro set *
    * *
    * 5. Upon starting AppleWorks, the UltraMacros code *
    * instructs AppleWorks to load the selected *
    * file to the AppleWorks Desktop, to leave the *
    * user in the file, and then to start the user's *
    * default macro set *
    * *
    * ************** *
    * *
    * * ASSUMPTIONS MADE BY AW51Launcher * *
    * (See ProDOS 8 Technical Reference *
    * Manual, Section 5.1.5.1) *
    * *
    * A. The full pathname to the selected file is *
    * passed at $2006+, per the startup protocol *
    * *
    * B. The full (or partial) pathname to this *
    * AW51Launcher system program is stored *
    * at $280 *
    * *
    * C. This AW51Launcher system program is located *
    * in the same directory as APLWORKS.SYSTEM *
    * * ************************************************************

    There are a few differences between this method and the one I used with
    the GS/OS Finder launcher in the video you saw.

    1. This launcher will only receive 1 file, whereas the other will
    receive up to 36 files;

    2. This launcher uses the ProDOS 8 startup protocol, whereas the other
    uses the GS/OS Message Center;

    3. This launcher is an AppleWorks custom task file and requires the
    program selector to point to 'AW51Launcher' in the same directory as APLWORKS.SYSTEM whereas the other runs as an AppleWorks 'Init' and no
    special program is required.

    Let me know if I can answer any questions on this. Adapt it as you see
    fit for your project.

    BTW, please allow me to say that I am a giant fan of your Apple II
    Desktop work and follow every revision you release. Every time you add
    another Desktop Accessory I tell myself, 'Damn that's clever. That guy
    can really write code.' ;-)




    Hugh Hood

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Joshua Bell@21:1/5 to Hugh Hood on Fri Mar 3 21:53:08 2023
    On Friday, March 3, 2023 at 6:31:50 PM UTC-8, Hugh Hood wrote:
    Funny you ask. Actually, I already wrote this for the $2003/$2004/$2006 ProDOS startup protocol procedure at the request of John Brooks several years ago. I think he was going to use it with his BASIS.SYSTEM.

    I sent it to John and I guess he got busy with other things and so it
    never saw the light of day, AFAIK.

    I was talking with John recently and he actually brought up that discussion. Busy indeed, but not forgotten!

    So, I've just now uploaded it to my website at this address: http://www.apple2works.com/aw51launch.shk

    In that .shk file will be the System file and the source code.

    Awesome! I've grabbed it and after some tinkering have it building byte-identical with my preferred toolchain (ca65).

    I'll tinker with it a bit and report back. Thank you for leaving excellent high-level and low-level comments in the source, it makes it very approachable.

    Let me know if I can answer any questions on this. Adapt it as you see
    fit for your project.

    Will do!

    BTW, please allow me to say that I am a giant fan of your Apple II
    Desktop work and follow every revision you release. Every time you add another Desktop Accessory I tell myself, 'Damn that's clever. That guy
    can really write code.' ;-)

    Thank you!

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Andrew Roughan@21:1/5 to Joshua Bell on Sat Mar 4 09:51:40 2023
    Joshua Bell <[email protected]> wrote:
    FWIW, I'd encourage people working on new P-8 projects to not be afraid
    to pick new type/auxtype values

    In theory, there is a process to follow to be assigned an appropriate file
    type auxtyoe combination.
    In practice, it probably hasn’t been used in a while and needs some maintenance.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Joshua Bell@21:1/5 to Joshua Bell on Sat Mar 4 10:27:14 2023
    On Friday, March 3, 2023 at 9:53:10 PM UTC-8, Joshua Bell wrote:

    I'll tinker with it a bit and report back. Thank you for leaving excellent high-level and low-level comments in the source, it makes it very approachable.

    Quick update - I have POC of "double click an AWP file in A2D, AppleWorks is launched and opens the file" operational. \o/

    Some notes:

    * When Bitsy Bye invokes BASIS.SYSTEM on a file:
    * The ProDOS prefix is set to the directory containing the file. (e.g. "/DOCS")
    * The SYS file's $2006 buffer is populated with just the target filename (e.g. "FILE.AWP")
    * $280 is set to the name of the root volume (e.g. "/VOL")
    * $380 is set to the full path of the launched SYS file (e.g. "/VOL/BASIS.SYSTEM")
    * The paths in $280 and $380 may have high bits set (e.g. '/' encoded as $AF)
    * The AW51LAUNCHER expects:
    * $2006 has the full path to the target file (e.g. "/DOCS/FILE.AWP")
    * $280 has the full path to the SYS file (e.g. "/HD/AW5/AW51LAUNCHER")
    * AppleWorks expects the full path to "APLWORKS.SYSTEM" to be passed at $280

    This means either there needs to be a separate BASIS.SYSTEM that relays to the AW launcher (i.e. you can't just rename it), or we modify AW51LAUNCHER to conform to the Bitsy Bye/BASIS protocol. A2D follows the Bitsy Bye/BASIS protocol when launching
    interpreters, apart from the high-bit thing. The $280 vs. $380 difference is quite unfortunate - I've complained to John about that, but it's too late now.

    My weakly-held preference would be to construct a stand-alone AWLAUNCH.SYSTEM that handles the Bitsy/BASIS protocol and can be outside the AW directory (e.g. looks for /VOL/AW5/APLWORKS.SYSTEM where /VOL is the volume containing the system file; if that
    fails, enumerates online volumes). Otherwise, it would use the same macro/patching/install code from AW51LAUNCHER. This would then be packaged with A2D. If AW isn't found it just QUITs immediately - with modern A2D that saves window state this gets you
    back to where you were, just as if the file type wasn't known.

    Thoughts?

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Hugh Hood@21:1/5 to Joshua Bell on Sat Mar 4 13:43:11 2023
    On 3/4/2023 12:27 PM, Joshua Bell wrote:

    My weakly-held preference would be to construct a stand-alone
    AWLAUNCH.SYSTEM that handles the Bitsy/BASIS protocol and can be
    outside the AW directory (e.g. looks for /VOL/AW5/APLWORKS.SYSTEM
    where /VOL is the volume containing the system file; if that fails, enumerates online volumes).

    Thoughts?


    You bet. That would be super.

    The $380/$280 (along with the other differences from the ProDOS TRM)
    threw me for a loop when John introduced it for BASIS.SYSTEM. So, I sent
    him the launcher using $280 knowing that, 'this guy is brilliant, he'll
    figure it out and make it work with BASIS.SYSTEM.'

    Now you're the guy who has/will figure it out. ;-)

    Let me know if I can re-do the source as far as the AppleWorks end of it
    goes. I'd be happy to, although I suspect you're more than up to the task.

    Also (for anyone following along at home), in the source code within the
    .shk file I linked I painstakingly de-constructed the compiled macro
    table by using the Merlin DB pseudo opcode over and over, line after
    line. I did that for illustrative purposes only.

    In normal practice doing this type of thing, I use the Merlin32 PUTBIN directive to just place the entire compiled task file in memory, and
    then only copy the macro table ($1000 bytes), which begins at offset
    $200 in the file, to $01/EF00. Not only is it much simpler to do it that
    way, it also makes revisions to the macros easy to implement.

    Thanks for jumping on this so quickly, Joshua. You're a driven man.





    Hugh Hood

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Antoine Vignau@21:1/5 to All on Sat Mar 4 11:53:10 2023
    Hi All,

    about file types and aux types, I maintain a list @ https://docs.google.com/spreadsheets/d/1HIg5f1gispUvO0r8t6SEww8XM41eUAtn7wkNNDrNPtQ/edit?usp=sharing

    Your additions are welcome,
    Antoine

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Joshua Bell@21:1/5 to Antoine Vignau on Sat Mar 4 21:13:27 2023
    On Saturday, March 4, 2023 at 11:53:12 AM UTC-8, Antoine Vignau wrote:
    about file types and aux types, I maintain a list @ https://docs.google.com/spreadsheets/d/1HIg5f1gispUvO0r8t6SEww8XM41eUAtn7wkNNDrNPtQ/edit?usp=sharing

    Your additions are welcome,

    Awesome! I added one, and will make sure to log any others Frank M. and I come up with.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Joshua Bell@21:1/5 to Hugh Hood on Sat Mar 4 21:12:55 2023
    On Saturday, March 4, 2023 at 11:43:23 AM UTC-8, Hugh Hood wrote:
    You bet. That would be super.

    Okie dokie. My source is up at https://github.com/a2stuff/a2d/blob/main/extras/awlaunch.system.s - builds as part of the overall system. I basically rewrote the system file part to follow my own conventions, making a few different trade-offs. The macro
    block is of course untouched, apart from compiler differences.

    Right now the path to AppleWorks is fixed - must be on the same volume as the launcher, at /<vol>/AW5/APLWORKS.SYSTEM. We can iterate on a better solution.

    In normal practice doing this type of thing, I use the Merlin32 PUTBIN directive to just place the entire compiled task file in memory, and
    then only copy the macro table ($1000 bytes), which begins at offset
    $200 in the file, to $01/EF00. Not only is it much simpler to do it that way, it also makes revisions to the macros easy to implement.

    I'm assuming for future macro updates - if they're ever needed - we really just need the macro data block, plus offsets to the two strings?

    Thanks for jumping on this so quickly, Joshua. You're a driven man.

    Keeps me out of trouble. ;-)

    Thank you so much for sharing your work and letting me incorporate it!

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Hugh Hood@21:1/5 to Joshua Bell on Sun Mar 5 00:51:28 2023
    On 3/4/2023 11:12 PM, Joshua Bell wrote:

    Okie dokie. My source is up at https://github.com/a2stuff/a2d/blob/main/extras/awlaunch.system.s -
    builds as part of the overall system. I basically rewrote the system
    file part to follow my own conventions, making a few different
    trade-offs. The macro block is of course untouched, apart from
    compiler differences.


    Excellent!

    My goodness. You're a quick study. I see why you're paid to do this
    stuff for a living.



    I'm assuming for future macro updates - if they're ever needed - we
    really just need the macro data block, plus offsets to the two
    strings?


    Correct again. Speaking of macro updates, if you ever decide to pass
    more than one selected filename at a time from A2D, it would seem that
    macro could be expanded to include several more pairs of dummy strings
    (with corresponding offsets) for you to populate and for AppleWorks to automatically load. Just something to mull over.



    Thank you so much for sharing your work and letting me incorporate
    it! >

    You're very generous with your credit. Thanks.

    Truthfully, I'd say that by your adopting and refining my small
    contribution (which was originally based on the concept of the guys I
    credited) you've exposed this technique to an audience several orders of magnitude greater than I ever would have. The pleasure is all mine.





    Hugh Hood

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Speccie@21:1/5 to All on Sun Mar 5 10:37:20 2023
    Antoine,

    about file types and aux types, I maintain a list @ https://docs.google.com/spreadsheets/d/1HIg5f1gispUvO0r8t6SEww8XM41eUAtn7wkNNDrNPtQ/edit?usp=sharing

    Your additions are welcome,
    I have added the three application only file types Spectrum uses.

    I have also built several tools and fonts, and have numbered those sequentially as I created them. I am not sure if there is a repository for those details. Tony Diaz used to collate these details once upon a time.

    Cheers - Ewen

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Antoine Vignau@21:1/5 to All on Sun Mar 5 04:55:56 2023
    Thank you Gentlemen! I see an entry for Electric Duet as well.
    antoine

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Joshua Bell@21:1/5 to Hugh Hood on Sun Mar 5 10:07:13 2023
    On Saturday, March 4, 2023 at 10:51:40 PM UTC-8, Hugh Hood wrote:
    On 3/4/2023 11:12 PM, Joshua Bell wrote:
    I'm assuming for future macro updates - if they're ever needed - we
    really just need the macro data block, plus offsets to the two
    strings?

    Correct again.

    Speaking of macro updates... a tester reports that when opening a WP file the bottom of the document is shown which (depending on pagination) means the user may see a blank screen.

    Looking at the macro ("task") source, I don't see anything specific there. Is that default AW behavior? Is it possible for the macros to force a "scroll to top" for WP files?

    Not a big deal, but it's good to get feedback!

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Hugh Hood@21:1/5 to Joshua Bell on Sun Mar 5 12:33:56 2023
    On 3/5/2023 12:07 PM, Joshua Bell wrote:

    Speaking of macro updates... a tester reports that when opening a WP
    file the bottom of the document is shown which (depending on
    pagination) means the user may see a blank screen.

    Looking at the macro ("task") source, I don't see anything specific
    there. Is that default AW behavior? Is it possible for the macros to
    force a "scroll to top" for WP files?

    Generally speaking, AppleWorks 5.1 will load a WP file with the cursor positioned at the exact same place as it was when the file was last saved.

    There is an option in 'Other Activities' -> 'Standard Settings' -> 'WP
    Options' -> '9. Reset WP when loading' to allow all loads to display the
    top of the file, regardless of the last save setting.

    To your question -- Yes, it is possible to force a "scroll to top"
    regardless of previous save state or default setting state merely by
    adding the UltraMacros command <OA-1> to the compiled task file after
    the file is loaded and prior to the instruction to load and run the
    default macro set (i.e. - seg.um).

    The disadvantage of doing that within the macro, of course, is that it
    forces the user to the top of the document even if they intentionally
    saved the file with the cursor positioned at the same place as they
    wished to return upon their next load.


    Not a big deal, but it's good to get feedback!


    Not only that, but to receive that feedback so quickly. You cast a wide net.




    Hugh Hood

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Hugh Hood@21:1/5 to Hugh Hood on Sun Mar 5 12:57:38 2023
    On 3/5/2023 12:33 PM, Hugh Hood wrote:

    Generally speaking, AppleWorks 5.1 will load a WP file with the cursor positioned at the exact same place as it was when the file was last saved.


    Permit me to modify my statement slightly based on some testing I just completed.

    If the WP document was originally saved with an earlier version of
    AppleWorks (e.g. AppleWorks v2.1), AppleWorks 5.1 will load it and
    display the cursor at or beyond the very end, UNLESS, the default load
    setting under WP is changed to reset.

    This issue does not appear to affect anything saved from AppleWorks 3.0
    or later.

    Once the WP file is re-saved from within AppleWorks, this will not occur
    again.




    Hugh Hood

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Hugh Hood@21:1/5 to Hugh Hood on Sun Mar 5 17:52:20 2023
    On 3/5/2023 12:57 PM, Hugh Hood wrote:

    If the WP document was originally saved with an earlier version of
    AppleWorks (e.g. AppleWorks v2.1), AppleWorks 5.1 will load it and
    display the cursor at or beyond the very end, UNLESS, the default
    load setting under WP is changed to reset.


    More from the 'I'll bet you're sorry you asked department' ...

    I took a look (thanks to Ewen's BrkDown) at why AppleWorks 5.1 (unless
    it is set to 'Reset' in WP settings) loads Version 2.x AWP files with
    the cursor at or beyond the very end of the document.

    The reason is found in a change of purpose between versions of a
    particular 2-byte word that is saved within the file's header.

    In version 2.x, location +$56/$57 within the header ($7C62/$7C63 in
    memory) contains a constant which just points to a fixed AppleWorks
    address. That constant is $7D38.

    In version 5.1, location +$56/$57 within the header ($7C62/$7C63 in
    memory) is used to save the AppleWorks memory pointer to the line
    displayed at the top of the screen when the file was last saved. Those
    pointer values generally start at $4000 and increase by 2 for each line
    in the file.

    Version 5.1 reads the $7D38 as a memory pointer for a line, but in
    almost all cases there is no corresponding line for the pointer, hence
    you see a blank page and a cursor at a non-existent line number.

    So, if you'd like, I can update the macro (and the macro table that
    you've embedded) to test:

    1. Is the file just loaded an AWP file?
    2. If yes, does location $7C62/$7C63 contain $7D38?
    3. If yes, issue an <OA-1> command to move the screen and cursor to the
    top of the file.


    In the very rare instance that someone saved an AppleWorks 5.1 AWP with
    a top of screen line pointer set to $7D38 (that is a valid pointer to a
    line # of approximately 7800 with sufficient memory) the macro would
    return to the top of the file.




    Hugh Hood

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Joshua Bell@21:1/5 to Hugh Hood on Sun Mar 5 16:12:18 2023
    On Sunday, March 5, 2023 at 3:52:33 PM UTC-8, Hugh Hood wrote:
    So, if you'd like, I can update the macro (and the macro table that
    you've embedded) to test:

    1. Is the file just loaded an AWP file?
    2. If yes, does location $7C62/$7C63 contain $7D38?
    3. If yes, issue an <OA-1> command to move the screen and cursor to the
    top of the file.


    In the very rare instance that someone saved an AppleWorks 5.1 AWP with
    a top of screen line pointer set to $7D38 (that is a valid pointer to a
    line # of approximately 7800 with sufficient memory) the macro would
    return to the top of the file.

    Sounds like a good idea - and we can kick the tires on updating the macro table. If you leave the strings empty with "THEN" tokens after them I can find the offsets pretty easily. (And maybe even automate that.)

    Want to email me the results? inexorabletash at gmail dot com

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Hugh Hood@21:1/5 to Joshua Bell on Sun Mar 5 21:12:14 2023
    Sent.


    On 3/5/2023 6:12 PM, Joshua Bell wrote:

    Sounds like a good idea - and we can kick the tires on updating the
    macro table. If you leave the strings empty with "THEN" tokens after
    them I can find the offsets pretty easily. (And maybe even automate
    that.)

    Want to email me the results? inexorabletash at gmail dot com

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Brian Patrie@21:1/5 to Joshua Bell on Mon Mar 6 20:18:12 2023
    Joshua Bell wrote:
    * When Bitsy Bye invokes BASIS.SYSTEM on a file:
    ...
    * $380 is set to the full path of the launched SYS file

    Doesn't that risk colliding with the vectors at the end of page $3?
    (IIRC, ProDOS paths can be up to 128 bytes, incl the length byte.)
    Or are those considered temporarily expendible at that stage?

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Joshua Bell@21:1/5 to Brian Patrie on Tue Mar 7 08:51:53 2023
    On Monday, March 6, 2023 at 6:18:15 PM UTC-8, Brian Patrie wrote:
    Joshua Bell wrote:
    * When Bitsy Bye invokes BASIS.SYSTEM on a file:
    ...
    * $380 is set to the full path of the launched SYS file
    Doesn't that risk colliding with the vectors at the end of page $3?
    (IIRC, ProDOS paths can be up to 128 bytes, incl the length byte.)
    Or are those considered temporarily expendible at that stage?

    You can pass 64-character paths (not counting length). I've heard that internally ProDOS can handle a <=64 character prefix and <=64 character relative path, but you can't pass in or get out a path longer than 64.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)