Jump to content
Sign in to follow this  
flashjazzcat

The Last Word 3.11 RC1

Recommended Posts

Have been disassembling the Sparta TD line and have come across a flaw in it. When TD line "traces" the display list to locate the "jump wait for vblank" instruction ($41) followed by the vector it needs to change to point to its own display list, it does not take note of standard ANTIC "jump" instructions ($01). LW's display lists contain these jump instructions and therefore the TD line will never be properly set up (the end of the display list will always point back to the top of LW's display list, not that of the TD line as it should).

 

Whether this is causing crashes remains to be seen, but it does mean that the deferred interrupt is locked into a long and fruitless loop searching for $41 in the DL every time the SDLSTL is changed. TD line should include the following code:

 

search lda ($80),y ; ZP pointer for scanning the Display List
iny
beq not_found
cmp #$01 ; jump and wait
beq got_jump
cmp #$41
bne search
;
; existing code to alter jump and wait vector here
;
got_jump ; new code
iny
lda ($80),y ; get LSB
pha
iny
lda ($80),y ; get MSB
sta $81 ; adjust pointer
pla
sta $80
ldy #0
beq search

 

...OK: rearranging the display lists in RAM solved the crashing on screen mode change problem. The reason that 40 column mode was causing a crash was that display lists were laid out thus:

 

<40 column display list>
ANTIC JUMP to 40 column status bar display list

<80 column display list>
ANTIC JUMP to 80 column status bar display list

<80 column status bar display list>
ANTIC JUMP AND WAIT FOR VBLANK ($41)

<40 column status bar display list>
ANTIC JUMP AND WAIT FOR VBLANK ($41)

<80 column progress bar display list>
ANTIC JUMP AND WAIT FOR VBLANK ($41)

<40 column progress bar display list>
ANTIC JUMP AND WAIT FOR VBLANK ($41)

 

The program was initializing the 80 column display because the ANTIC JUMP/WAIT FOR VBL instruction for the 80 column display is within reach of the Y register when TD line's pointer is set to search from the top of the 80 column display list. However, when switching to 40 column mode, a jump and wait instruction is not encountered by TD line's search routine, since the first occurence of $41 was more than a page away from the top of the 40 column display list. The deferred VBLANK therefore overruns the allocated cycles and the system crashes on coming out of the OS exit from VB routine.

 

The solution was to move the 40 column status bar display list to a point immediately following the main 40 column display list. TD line's search is then always fruitful and the deferred interrupt completes in a suitably short time. LW's way of changing the bottom half of the DL using ANTIC jump instructions still foxes TD line, however. Changes to a dynamic display list such as those used by The Last Word are harder for TD line to monitor without exhaustively tracing the display list as outlined above during each and every interrupt just to see if any ANTIC JUMP ($01) instructions have had their vectors changed.

 

TD line is a useful feature of SDX but very hard to make bulletproof with applications which don't appreciate its foibles. I think I can make LW compatible with the TD line again by programming around it.

Edited by flashjazzcat

Share this post


Link to post
Share on other sites

That sounds like a bug that should be fixed in TD in the new SDX... or at least documented. icon_smile.gif

I will surely forward some suggestions to Draco. In any case, I have fixed the problems in the word processor. The only problem is that the system still crashes about one out of every twenty times during the transition from the loading screen to the edit screen with the TD line on. I believe it may be something to do with TD being reactivated at the same instant that the DL pointer changes. I have a way of dealing with that...

Share this post


Link to post
Share on other sites

The secret was a half second delay after turning the deferred interrupt (and thus TD line) back on.

 

Download the corrected RC1 here.

 

I've also debugged (i.e. probably broke) the "PATH" handling code. I think it was Stephen complaining a while back that he couldn't load fonts and macros from drive 2.

Share this post


Link to post
Share on other sites

The ESC key when not in a sub menu causes a crash in Atariwin800 plus. I got quite use to using the ESC key a lot for macros and testing ICONs. Using MyDOS from a directory.

 

Moved the ATR to C:\ drive and now I don't get a crash with the ESC key.

Edited by rdea6

Share this post


Link to post
Share on other sites

The ESC key when not in a sub menu causes a crash in Atariwin800 plus. I got quite use to using the ESC key a lot for macros and testing ICONs. Using MyDOS from a directory.

 

Moved the ATR to C:\ drive and now I don't get a crash with the ESC key.

It was loading LW.EXT from the previous test release which isn't compatible with this version. Moving the executable solved it because LW.EXT was no longer being loaded. Get rid of LW.EXT, SYSINFO.EXT, and ICONS.EXT and replace them with the versions supplied on the ATR you just downloaded.

Share this post


Link to post
Share on other sites

The ESC key when not in a sub menu causes a crash in Atariwin800 plus. I got quite use to using the ESC key a lot for macros and testing ICONs. Using MyDOS from a directory.

 

Moved the ATR to C:\ drive and now I don't get a crash with the ESC key.

It was loading LW.EXT from the previous test release which isn't compatible with this version. Moving the executable solved it because LW.EXT was no longer being loaded. Get rid of LW.EXT, SYSINFO.EXT, and ICONS.EXT and replace them with the versions supplied on the ATR you just downloaded.

OK I got pissed and opened the original LW311RC1_corrected.atr and I still get the crash using ESC key I know that is original because it has the NON beta loading screen.

If I CTRL+; and run icons.ext it doesn't crash.

 

Tested twice with the 2.5 Dos atr.

extracted lw.ext and icons.ext from the ATR and compaired them and they are not equal.

Share this post


Link to post
Share on other sites

OK I got pissed and opened the original LW311RC1_corrected.atr and I still get the crash using ESC key I know that is original because it has the NON beta loading screen.

If I CTRL+; and run icons.ext it doesn't crash.

 

Tested twice with the 2.5 Dos atr.

extracted lw.ext and icons.ext from the ATR and compaired them and they are not equal.

OK - apologies for that. I'm overworked. icon_smile.gif

 

When you've sobered up (or calmed down: not sure which), copy ICONS.EXT over LW.EXT, or rename ICONS.EXT to LW.EXT, or delete them both if you don't need icons.

 

LW311RC1_Corrected.zip

 

Now... back to SPI code, drilling, milling, soldering, flashing EPROMs... :D

Edited by flashjazzcat

Share this post


Link to post
Share on other sites

I'm happy to report that 3.11rc1 is working great... under DOS 3! :lol:

 

I also haven't had any issues with it working under X while having the TD line active either. The progress line doesn't jump anymore as well.

 

Great work, Jon!!!

 

EDIT: Crashing on printing <SELECT>+<G> linking now. :(

Edited by dwhyte

Share this post


Link to post
Share on other sites

I'm happy to report that 3.11rc1 is working great... under DOS 3! icon_lol.gif

 

I also haven't had any issues with it working under X while having the TD line active either. The progress line doesn't jump anymore as well.

 

Great work, Jon!!!

 

EDIT: Crashing on printing <SELECT>+<G> linking now. icon_sad.gif

LOL. Laughter and tears reading the same post... OK, I'll look at that over the next day or two. Very odd because I tested linked printing.

 

On a different topic, I'd like advice on how to handle the "PATH" variable in LW. You can specify a search path for fonts, macros, etc:

 

D8:>;D1:>LW>

 

The above example searches the RAMdisk then the LW folder on drive one when you load a macro, font, extension, etc, from the status line's input prompt (NOT from the file selector). Since the current logged drive # is now always placed at the front of the filespec (following a feature request: it used to default to "D:" - i.e. the DOS default drive), I made a change in the latest beta to search the original device ID the user typed after the rest of the path has been searched. Previously, if you typed "D2:file.ext" with the path set up as per the example, "D2:" didn't get searched at all. Now it gets searched last.

 

Problem is, when LW loads its startup files, they're described in memory as "D1:LW.ext". So, at startup, assuming the path is set by a SpartaDOS X environment variable, LW goes trawling through D1: even if you specifically don't want it to (i.e. you omit it from the path).

 

The only thing I can suggest is to omit the device ID off the startup files altogether and include code to add "D:" only if no path has been specified. This would force LW to load its startup files off the DOS default drive unless there was a path, and since there was no device ID in the original path, specifying a path would prevent access to the "default" drive.

 

Complicated? Just a bit...

 

Suggestions appreciated.

Share this post


Link to post
Share on other sites

I'm happy to report that 3.11rc1 is working great... under DOS 3! icon_lol.gif

 

I also haven't had any issues with it working under X while having the TD line active either. The progress line doesn't jump anymore as well.

 

Great work, Jon!!!

 

EDIT: Crashing on printing <SELECT>+<G> linking now. icon_sad.gif

LOL. Laughter and tears reading the same post... OK, I'll look at that over the next day or two. Very odd because I tested linked printing.

 

 

I forgot to mention that it's crashing under emulation. I haven't yet tested on my real machine if it's working properly. I'll do so tomorrow. Sorry to be such a pain in the arse, Jon.

Share this post


Link to post
Share on other sites

I forgot to mention that it's crashing under emulation. I haven't yet tested on my real machine if it's working properly. I'll do so tomorrow. Sorry to be such a pain in the arse, Jon.

No problem David; I can hardly blame beta testers for being vigilant and spotting bugs I've missed, can I? :)

Share this post


Link to post
Share on other sites

OK I got pissed and opened the original LW311RC1_corrected.atr and I still get the crash using ESC key I know that is original because it has the NON beta loading screen.

If I CTRL+; and run icons.ext it doesn't crash.

 

Tested twice with the 2.5 Dos atr.

extracted lw.ext and icons.ext from the ATR and compaired them and they are not equal.

OK - apologies for that. I'm overworked. icon_smile.gif

OK not pissed at program or the programmer, just at self.

 

I pulled all media and changed out atrs on:

800xl Blackbox hard drive directory via APE & SIO2PC

1200XL internal Myide partition via APE & SIO2PC

 

USB2SIO usb stick copied new atr over old atr

SIO2SD sd card copied new atr over old atr

 

cleaned bewedos.atr lastword directory on MyIDE internal harddrive

cleaned MyDos.atr lastword directory on MyIDE internal harddrive

cleaned SD33a.atr lastword directory on MyIDE internal harddrive

 

Fix was quick and easy as you said "delete LW.EXT". Glad to not have to open hardware again.

 

Good to know that it was not my hardware.icon_lust.gif

 

 

 

 

 

Share this post


Link to post
Share on other sites

OK not pissed at program or the programmer, just at self.

 

I pulled all media and changed out atrs on:

800xl Blackbox hard drive directory via APE & SIO2PC

1200XL internal Myide partition via APE & SIO2PC

 

USB2SIO usb stick copied new atr over old atr

SIO2SD sd card copied new atr over old atr

 

cleaned bewedos.atr lastword directory on MyIDE internal harddrive

cleaned MyDos.atr lastword directory on MyIDE internal harddrive

cleaned SD33a.atr lastword directory on MyIDE internal harddrive

 

Fix was quick and easy as you said "delete LW.EXT". Glad to not have to open hardware again.

 

Good to know that it was not my hardware.icon_lust.gif

Better keep my head down for a bit... icon_smile.gif Sorry about that!

 

If it's any consolation I spent an hour making a parallel AVR cable today then a further two hours insanely trying to get it to work with PonyProg (don't ask). It was only by chance that I eventually realized (after more or less giving up altogether) that I already had the correct AVR flash program in the SIO2IDE distribution package...

 

Then there's the 600XL supervideo mod I botched with a simple short circuit and spent hours fixing, the plain SIO2SD PCB to which I soldered a 40 pin machine socket on the underside of the board and then spent 90 minutes removing... the list goes on...

 

Anyway, the linked file printing problem was just as daft. The upper part of the shadow RAM code had overrun the hardware interrupt vectors by 1 byte... easy to fix (actually found two bytes of redundant code), and it didn't alter the equates for the extensions. icon_smile.gif

 

These interim releases are getting beyond a joke, but I know a couple of people who use the program will be peed off by the disastrous print inclusion bug:

 

LW311RC1_corrected_2.zip

 

One thing remains to clear up: the path business. Once I figure out some subtle changes to suit the myriad startup configurations, DOSes, and multi-drive setups, version 3.11 will be a done deal.

Edited by flashjazzcat

Share this post


Link to post
Share on other sites

i had a small problem with BEWEDOS, i solved it by installing everything from LW311RC1 into the dos directory, as it seems the only path available to BEWEdos is the DOS subdirectory.

Share this post


Link to post
Share on other sites

One thing remains to clear up: the path business. Once I figure out some subtle changes to suit the myriad startup configurations, DOSes, and multi-drive setups, version 3.11 will be a done deal.

 

I can't find a single thing wrong with this version, Jon! I thought I had found a bug there for a bit when I was trying to <SELECT>+<Y> and set the starting page number. I started writing the post in the forum here until I had the bright idea of <SELECT>ing the start number as well, and lo and behold: it worked!

 

Great job, Jon. TLW is the main reason for me firing up my A8 every day. Hopefully I have no edit to this post forthcoming with some unfortunate bad news. /crossingFingers

 

Now... to get around to gathering enough money to get a suped-up 1200XL with a hefty ram upgrade. I might as well have a decent A8 keyboard to type my next novel on, eh... ;)

 

EDIT: /sigh. It seems I've spoken too soon. There's an issue with the headers now, Jon. Garbage text is being printed instead of what's specified with <SELECT>+<H>. Other than this problem, I can find absolutely nothing else wrong.

 

Edited by dwhyte

Share this post


Link to post
Share on other sites

One thing remains to clear up: the path business. Once I figure out some subtle changes to suit the myriad startup configurations, DOSes, and multi-drive setups, version 3.11 will be a done deal.

 

I can't find a single thing wrong with this version, Jon! I thought I had found a bug there for a bit when I was trying to <SELECT>+<Y> and set the starting page number. I started writing the post in the forum here until I had the bright idea of <SELECT>ing the start number as well, and lo and behold: it worked!

 

Great job, Jon. TLW is the main reason for me firing up my A8 every day. Hopefully I have no edit to this post forthcoming with some unfortunate bad news. /crossingFingers

 

Now... to get around to gathering enough money to get a suped-up 1200XL with a hefty ram upgrade. I might as well have a decent A8 keyboard to type my next novel on, eh... icon_wink.gif

 

EDIT: /sigh. It seems I've spoken too soon. There's an issue with the headers now, Jon. Garbage text is being printed instead of what's specified with <SELECT>+<H>.

 

Not to worry, as they say! I'll look at it tonight. When did this header bug first surface? The fact it's (more or less) an alpha sequence of letters should mean it's easy to track down, at least.

 

Do you have published works online I can have a look at, by the way? Or some kind of biography or resume?

 

EDIT: I need exact information regarding this latest header bug: I can't reproduce it, even with a "makefile" including files which in turn redefine the headers. They all come out OK.

Edited by flashjazzcat

Share this post


Link to post
Share on other sites

Not to worry, as they say! I'll look at it tonight. When did this header bug first surface? The fact it's (more or less) an alpha sequence of letters should mean it's easy to track down, at least.

 

Do you have published works online I can have a look at, by the way? Or some kind of biography or resume?

 

EDIT: I need exact information regarding this latest header bug: I can't reproduce it, even with a "makefile" including files which in turn redefine the headers. They all come out OK.

 

This issue reared it's ugly head with the latest release. Any subsequent versions this issue never existed.

 

As to published works online... well... I've used quite a few pseudonyms over the course of 16 years on the intersurf, but I'm still a little shy in regards to revealing them. No resume or CV online either. Perhaps one day I'll overcome my shyness and reveal the man behind the curtain.

Share this post


Link to post
Share on other sites

Okay... I've discovered what the issue is. It's when using TLW under DOS 3 where the headers get buggered up. I tested it under 2.5 and X and everything checks out.

 

Call me quirky, but I still have a fondness for DOS 3 as I used it exclusively for 2 years until actually meeting other Atari users--everyone else in my city either used Commodores or Apples--and became acquainted with SpartaDOS and DOS 2.5.

Edited by dwhyte

Share this post


Link to post
Share on other sites

Here's one to test, though, Jon. I tried making my headers with italics. With <SELECT>+<I>s bookending the header text, it ended up italicizing the whole document. Am I missing something?

Share this post


Link to post
Share on other sites

Okay... I've discovered what the issue is. It's when using TLW under DOS 3 where the headers get buggered up. I tested it under 2.5 and X and everything checks out.

 

Call me quirky, but I still have a fondness for DOS 3 as I used it exclusively for 2 years until actually meeting other Atari users--everyone else in my city either used Commodores or Apples--and became acquainted with SpartaDOS and DOS 2.5.

I may a little frazzled to start adding specific DOS 3 support: it's an interesting OS, although as curios go I prefer DOS 4. Haven't tried LW with that, either. icon_smile.gif

 

Here's one to test, though, Jon. I tried making my headers with italics. With <SELECT>+<I>s bookending the header text, it ended up italicizing the whole document. Am I missing something?

 

This is what LW produced when I bookended the header of the footnote demo file with italic toggles using the EPSON printer driver:

 

post-21964-127866481288_thumb.png

 

The string at the top is the printer initialisation string. The codes either side of the header text (IIRC) are the escape codes for italic on and off.

 

Something worth bearing in mind here is that special effects on the headers and footers will balls-up any effects in the body text if they fall in the wrong place. For example, if the header occurs in the middle of an italic paragraph, the header will print out it italics unless it sends appropriate codes to ensure this doesn't happen. If it does that, it'll likely turn the body text italics off mid-paragraph. This is because LW doesn't keep separate its tracking of the print styling between headers/footers and body text. It's a shortcoming, but common to a few word processors. It would be quite complex to program around, although certainly doable given sufficient code space (which is one thing we don't have at the moment). The print formatter should really send out a formatting string which reflects the current body styling after each header and footer, and we need a (shallow) stack so that the toggle status of the headers and footers is separate from that in the body text.

 

Thanks to your bringing it up, however, it'll be on the to-do list for subsequent versions. The more I think about it, the more of a bummer the current system seems.

Edited by flashjazzcat

Share this post


Link to post
Share on other sites

Thanks to your bringing it up, however, it'll be on the to-do list for subsequent versions. The more I think about it, the more of a bummer the current system seems.

 

I wouldn't call it a bummer. I can live without italicizing my headers. Other than that issue, I foresee the RC being dropped from the version number soon... ;)

 

I'll also give it a go under DOS 4 tomorrow.

 

Now... I'm returning to smithing some words...

Edited by dwhyte

Share this post


Link to post
Share on other sites

I wouldn't call it a bummer. I can live without italicizing my headers. Other than that issue, I foresee the RC being dropped from the version number soon... icon_wink.gif

 

I'll also give it a go under DOS 4 tomorrow.

 

Now... I'm returning to smithing some words...

Nevertheless, a way occurs to me of correcting this lack of functionality (reset all the style flags before printing a header/footer, and reinstate them afterwards; meanwhile keep a separate character style flag table for the headers and footers)...

 

I have a short story assignment to complete by the end of July for which I fully intend to use LW. :)

Share this post


Link to post
Share on other sites

Okay... I've discovered what the issue is. It's when using TLW under DOS 3 where the headers get buggered up. I tested it under 2.5 and X and everything checks out.

 

Call me quirky, but I still have a fondness for DOS 3 as I used it exclusively for 2 years until actually meeting other Atari users--everyone else in my city either used Commodores or Apples--and became acquainted with SpartaDOS and DOS 2.5.

 

 

Ha ha! I used DOS 3 for a while, back in the day. When I bought my first 1050 (my first drive) it came with DOS 2 and an explanation that DOS 3 would be shipped to me later when I filled out the warranty card. It was. I converted over, then found out "it sucks" from the magazines. I had used it for a while, but not until after I had already used 2.0s. So when I switched back, it wasn't so painful. But I can't remember if I switched "back" to 2.0 or 2.5. I'm thinking 2.5 came significantly later, now.

Share this post


Link to post
Share on other sites

I may a little frazzled to start adding specific DOS 3 support: it's an interesting OS, although as curios go I prefer DOS 4. Haven't tried LW with that, either.

 

When you create the retail packaging, you'll be able to place a banner on the top corner of the box: "EXCLUSIVE! NOW WITH DOS 3 SUPPORT!!!"

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...