Jump to content
IGNORED

The Last Word 3.11 RC1


Recommended Posts

...until the VBXE disk version and the all-conquering cart version, that is. icon_smile.gif

 

After several false-starts with hideously buggy version 3.11 betas, largely thanks to dwhyte's detailed bug reports, here's Release Candidate 1 of the final standard disk version of the word processor:

 

Info

 

Direct download

 

 

CHANGES AND FEATURES

 

1. The status line is replaced by a progress bar during most disk I/O operations. This is because previous versions kept a raster interrupt running during SIO calls, which resulted in screen corruption if DOS turned off DLIs during critical, high speed disk transfers. Thanks to AtariAge forum member Rybags who came up with the idea of using a progress bar. I think it ties in nicely with the motif on the loading screen.

 

2. The colour customisation dialogue has been completely redesigned. The old one was a bit of an afterthought and was hard to navigate. In RC1, you press <CTRL+K>, then cycle through the different regions of the screen (which flash when selected) with the left and right arrow keys, and alter the colour of the chosen area with the up and down arrow keys. <Return> accepts the current scheme, while <Esc> cancels it.

 

3. In print preview and print views, formatting or I/O errors don't dump you straight back into the editor. Instead, the preview freezes with an error message so you get some idea of what went wrong and where. Tracing formatting errors in INCLUDED print files could previously have been a real PITA. One particular user - who has a document with about forty included files - will probably find it helpful!

 

4. The "Where's the Cursor?" command (a concept first seen in TextPro and refined here to work across linked files and banks) now properly reports formatting errors and missing INCLUDE files.

 

5. The contentious ICON bar of LW 3.11 Beta 3 has been relegated to extension status. Load with <CTRL+;>, ICON.EXT. It's also on the disk as "LW.EXT", so will load at boot-up if RAM permits. You access it with the <Esc> key as before.

 

6. Accessing the icon bar with <Esc> is possible because the <Esc> key is now the third editor extension key (along with CTRL+T and SHIFT+CTRL+T). I did this so the old Escape key functionality could be restored via a suitable extension, but with the key also available to run an (optional) menu system.

 

The rest of the 3.11 stuff is mostly still there, including:

 

* Faster editing via a much more sophisticated screen update routine

 

* Faster font rendering achieved by pre-bit shifting 80 column fonts on the fly after loading

 

* Tagged multi-file rename operations with wildcard support

 

* Many keyboard shortcuts are Windows compatible

 

* CTRL+key characters can be typed easily using International Lock mode (toggled with SHIFT+CTRL+CAPS)

 

* Polish Fonts

 

* XBWDOS Compatibility

 

 

BUG FIXES IN RC1 (SINCE 3.11 BETA 3)

 

1. The print formatter was comprehensively wrecked in the 3.11 betas. Thanks to David for bringing this to my attention; cue much frantic debugging. Problems were mainly confined to headers and footers when using extended memory, and printing included files. Fortunately these rather catastrophic and embarassing errors have been fixed in RC1.

 

2. A file could be left corrupted in RAM following an incomplete save (disk full error). I was unable to duplicate this error during testing, but I have made changes which should prevent data loss.

 

3. The program no longer crashes on loading when using SpartaDOS X with the TD Line turned on.

 

 

Serious and trivial bug reports appreciated (and expected).

 

Enjoy! icon_smile.gif

Edited by flashjazzcat
Link to comment
Share on other sites

Jon,

How do I get to the 10th bank in MyDOS? Using CTRL+SHIFT+1-9 I can get to all banks except BANK 10. I did notice that CTRL+7 pressed repeatedly will cycle through all BANKS to 10.

 

Woops! I found it CTRL+4+0. I noticed also that CTRL+5 will cycle through BANKS also.

 

Great Beta......

This testing done with Emulator.

Edited by rdea6
Link to comment
Share on other sites

Everything checks out, Jon. It's working perfectly. The garbage on the status line is gone. No crashing on the title screen with TDLINE activated, though the status line jumps the first time it's seen when TDLINE is on. Subsequent disk accesses and it doesn't jump. Other than that, everything is running great.

 

EDIT: It just crashed on me on the title screen, but pressing RESET brought me into the editor.

Edited by dwhyte
Link to comment
Share on other sites

I saw an error in the emulator last night when accessing the print preview from the Icon bar extension. Error 133. Haven't had time to verify on real hardware yet.

 

post-14167-127788361138_thumb.jpg

 

Good one, spookt! It never occurred to me to check out the icon bar functions as I've never really used the icon bar; I find it quicker to use the key commands.

 

I can confirm this bug too, Jon. However, I'm not getting an Error 133. I'm getting an Error 135.

 

post-11306-127788854063_thumb.png

Edited by dwhyte
Link to comment
Share on other sites

Thanks guys! Keep it up. :) We're close to the finish line.

 

Something strikes me about the general intermittent lock up problems you have, Dave: I have no NTSC hardware to test with and lock-ups like these seem to be confined to American set-ups. A 1200XL is clearly required! :D

 

Stupid question, perhaps, but you guys are using the ICONS.EXT/LW.EXT files which came on the RC1 disk and not from an earlier version? I only ask because I can't duplicate the Error 133/135 bug at all. Can someone send me precise set-up details and sample files so I can test this out?

Link to comment
Share on other sites

Thanks guys! Keep it up. :) We're close to the finish line.

 

Something strikes me about the general intermittent lock up problems you have, Dave: I have no NTSC hardware to test with and lock-ups like these seem to be confined to American set-ups. A 1200XL is clearly required! :D

 

Stupid question, perhaps, but you guys are using the ICONS.EXT/LW.EXT files which came on the RC1 disk and not from an earlier version? I only ask because I can't duplicate the Error 133/135 bug at all. Can someone send me precise set-up details and sample files so I can test this out?

 

I can probably drag my 1200 out and try the RC there to see if I can duplicate the bugs, although I'll have to drag out my NTSC compatible TV too. However it would be the weekend at the earliest as I have the final paper for my college course to write over the next few days so I'll be a little busy.

 

I'll check that I'm using the latest release (pretty sure I am) and if so I can post an ATR with setup and a sample file tonight.

Link to comment
Share on other sites

I can probably drag my 1200 out and try the RC there to see if I can duplicate the bugs, although I'll have to drag out my NTSC compatible TV too. However it would be the weekend at the earliest as I have the final paper for my college course to write over the next few days so I'll be a little busy.

 

I'll check that I'm using the latest release (pretty sure I am) and if so I can post an ATR with setup and a sample file tonight.

Nice one - thanks. Hopefully a 1200XL will come my way some time; as a developer, I should really obtain at least one piece of NTSC hardware. The ATR will be useful, too, since I can't imagine the print bug having anything to do with the VBLANK interval.

 

I did test the program in NTSC emulation to ensure the stage 1 VB wasn't overloaded; it seemed fine, but I still think the cycle count could be tightened up.

Link to comment
Share on other sites

It would be nice to see continued releases that are not on cartridge. Of course, it's nice to see the Last Word at all! Thanks!!! Really shows would "coulda/shoulda" been on A8 word processor and it's the only one I'd even bother to load up in 2010! Bravo.

Link to comment
Share on other sites

It would be nice to see continued releases that are not on cartridge. Of course, it's nice to see the Last Word at all! Thanks!!! Really shows would "coulda/shoulda" been on A8 word processor and it's the only one I'd even bother to load up in 2010! Bravo.

Thanks. I may conduct a straw poll re: disk versions. I intend to do a VBXE only version on disk and thereafter it's either cart or 130XE only. Demanding extended memory is more flexible: I'm dying to implement multi-level undo/redo (quite trivial to write) using one or two banks of extended RAM, but it's too costly to have as an "option" in the current versions. Even the cart version would require 128K+ to accomplish this feat.

 

Both cart version and 130XE version would usefully avoid shadow RAM, making them compatible with disk SpartaDOS, RealDOS, DOS XE (!), etc...

Edited by flashjazzcat
Link to comment
Share on other sites

Found a new one to pester you with, Jon. Switching to 40 columns on X crashes the system now.

 

Here's my configs that I'm using:

 

SpartaDOS X: CONFIG.SYS for 576kb XL/XE

USE BANKED
DEVICE SPARTA
DEVICE SIO
DEVICE ATARIDOS
DEVICE COMEXE
DEVICE RTIME8
DEVICE QUICKED

 

The Last Word: LW.SYS

; LW.SYS file for use with extensions (extended RAM machines only)
; You MUST use this file in order to use the supplied extensions
;
BANKED ON
BANKS 1,2,3,4,5,6,7,8
RESERVE 1
BUFFER OFF
extpages 4 ; reserve 8 pages for extensions

 

The Last Word: LW.CFG

TMARGIN 5
BMARGIN 61
LMARGIN 10
RMARGIN 70
PAGELEN 66
HFLEFTMARG 10
HFRIGHTMARG 70
SPACING 1
HEADOFF 2
FOOTOFF 2
EOLCHAR 219
PADCHAR 0
TEXTCOL 10
SCREENCOL 148
PROMPTCOL 10
BORDERCOL 0
KEYDELAY 30
KEYREPEAT 3
TABWIDTH 5
FILESORT 2
PAGEWIDTH 80
80COLUMNS ON
PAGEWAIT OFF
WORDWRAP ON
INSERT ON
CASESENS OFF
CAPSLOCK OFF
KEYCLICK ON
SIONOISE OFF
ATTRACT OFF
WILDCARDS ON
DOCMODE OFF
SDXDIR ON
WARNINGS ON
FILEEXT TXT
DRIVE D2:
FILESPEC *.*

Edited by dwhyte
Link to comment
Share on other sites

TD line is causing all the problems: I smell a rat with the deferred vblank vector pointing anywhere but at the OS routine (bearing in mind LW code sits in shadow RAM). This is the interrupt handler. Opinions appreciated:

 

INTHAND
     	BIT      	NMIST
     	BPL      	NOTDLI
     	JMP      	(VDSLST)
NOTDLI
     	PHA
     	TXA
     	PHA
     	LDA      	#>      	EXITINT
     	PHA
     	LDA      	#<      	EXITINT
     	PHA
     	TSX
     	LDA      	$0105,X
     	PHA
     	CLD
     	PHA
     	TXA
     	PHA
     	TYA
     	PHA
     	LDA      	PORTB
     	STA      	PBSAVE
     	ORA      	#1
     	STA      	PORTB
     	STA      	NMIRES
     	JMP      	(VVBLKI)
;
IRQHAND
     	PHA
     	LDA      	#>      	EXITIRQ
     	PHA
     	LDA      	#<      	EXITIRQ
     	PHA
     	PHP
     	LDA      	PORTB
     	STA      	PBSAVE
     	ORA      	#1
     	STA      	PORTB
     	JMP      	(VIMIRQ)
;
EXITINT
     	PLA
     	TAX
EXITIRQ
     	LDA      	PBSAVE
     	STA      	PORTB
     	PLA
     	RTI
;

 

Anything wrong with the above? TD line monitors display list vector and adjusts SDLSTL ($560) to point to the TD line DL if it gets changed. The end of the TD line display list then has a jump instruction to the original (user) display list, skipping a few of the blank lines. It also alters the jump instruction at the end of the user display list to point to the TD display list.

 

When LW switches from 80 column mode to 40 column mode and vice versa, it changes SDLSTL to point to the appropriate display list. TD line is supposed to then kick in in the deferred VB and do its adjustments. The reason this version of LW causes the TD line to jitter during disk I/O is that the stage 2 VB hasn't had time to alter the "wait for vblank" vector at the end of the user display list after LW has redirected the bottom of the display list to point to the progress bar DL instead of the status bar DL. Explicitly loading the contents of SDLSTL into the "jump and wait" vector when amending the display list will solve that problem. However, the lock up during screen mode changes is puzzling.

 

I can't imagine the stage 2 VB running out of cycles when resetting the display list vector.

 

It should be noted that LW frequently crashes on startup with the TD line active. Workaround at the moment: DON'T use the TD line. It's difficult to control (hence crashing on loading screen), and unless a fix is found soon I will drop support for TD altogether.

Edited by flashjazzcat
Link to comment
Share on other sites

It should be noted that LW frequently crashes on startup with the TD line active. Workaround at the moment: DON'T use the TD line. It's difficult to control (hence crashing on loading screen), and unless a fix is found soon I will drop support for TD altogether.

 

I'm voting that you just have a check to see if TDLINE is running and if it is then return to the DOS prompt, telling the user to turn off TDLINE instead of having all the frustration of writing "work around" code. But... I can foresee something of this nature breaking something else in your code.

 

On a side note: Is there any information written down yet on regards to extension programming? I wouldn't mind having a go at writing a time display extension for you. Press a key combo and have the time and date show up statically on the status line sort-of-thing.

Edited by dwhyte
Link to comment
Share on other sites

I'm voting that you just have a check to see if TDLINE is running and if it is then return to the DOS prompt, telling the user to turn off TDLINE instead of having all the frustration of writing "work around" code.

 

On a side note: Is there any information written down yet on regards to extension programming? I wouldn't mind having a go at writing a time display extension for you. Press a key combo and have the time and date show up statically on the status line sort-of-thing.

If I had any sense I'd probably drop support for TD: even Draco suggested this course of action at one point; however, this problem appeals to my Rottweiler tendencies! :) I actually considered (eerily pre-empting your later suggestion) putting the time on the status line if I could find room for it: on non-SDX systems, it would show the elapsed editing time. The problem is where to put it on the 40 column display (80 column = no problem).

 

I was hoping someone would want to have a crack at writing extensions. The pre-requisite there will be a complete equate list (finalised) for the entire program. I wasn't able to put in a vector table (which would itself have consumed a couple of KB) so the extensions rely on absolute addresses. Still, nothing to stop you writing one to insert a formatted time/date line into a document, etc. There's already one (to be recompiled) to insert an SDX style directory into the text. Documentation for add-ins will be a considerable undertaking, however: all the common routines (such as printf, getkey, input), 100 page zero variables, etc, will require documentation. I'll publish the source code for the supplied extensions when they're finalized.

 

I'd love to see what kind of extensions you'd come up with. :)

Link to comment
Share on other sites

I'm voting that you just have a check to see if TDLINE is running and if it is then return to the DOS prompt, telling the user to turn off TDLINE instead of having all the frustration of writing "work around" code.

 

On a side note: Is there any information written down yet on regards to extension programming? I wouldn't mind having a go at writing a time display extension for you. Press a key combo and have the time and date show up statically on the status line sort-of-thing.

If I had any sense I'd probably drop support for TD: even Draco suggested this course of action at one point; however, this problem appeals to my Rottweiler tendencies! :) I actually considered (eerily pre-empting your later suggestion) putting the time on the status line if I could find room for it: on non-SDX systems, it would show the elapsed editing time. The problem is where to put it on the 40 column display (80 column = no problem).

 

I was hoping someone would want to have a crack at writing extensions. The pre-requisite there will be a complete equate list (finalised) for the entire program. I wasn't able to put in a vector table (which would itself have consumed a couple of KB) so the extensions rely on absolute addresses. Still, nothing to stop you writing one to insert a formatted time/date line into a document, etc. There's already one (to be recompiled) to insert an SDX style directory into the text. Documentation for add-ins will be a considerable undertaking, however: all the common routines (such as printf, getkey, input), 100 page zero variables, etc, will require documentation. I'll publish the source code for the supplied extensions when they're finalized.

 

I'd love to see what kind of extensions you'd come up with. :)

 

I envision inserting the time and date into the document as well as displaying it on the status line. Another extension I wouldn't mind attempting is a word count goal. Are there any interrupts in TLW's kernel that are available for polling, or are extensions just called upon once a certain key is pressed.

Edited by dwhyte
Link to comment
Share on other sites

Okay... scratch that polling idea. I was tired when I wrote that and didn't realize how stupid that would be to be polling the word count. It would slow the system down to a crawl, and we don't need that. However, I could poll the word count with the extension and compare it to a word count goal. That would work. Have it output a percentage towards the goal, sort-of-thing when the extension is called..

 

I'm getting excited to start coding again. TLW extensions are really the only thing I'd like to program on my Atari at the moment, actually.

Link to comment
Share on other sites

Okay... scratch that polling idea. I was tired when I wrote that and didn't realize how stupid that would be to be polling the word count. It would slow the system down to a crawl, and we don't need that. However, I could poll the word count with the extension and compare it to a word count goal. That would work. Have it output a percentage towards the goal, sort-of-thing when the extension is called..

 

I'm getting excited to start coding again. TLW extensions are really the only thing I'd like to program on my Atari at the moment, actually.

Good to hear that. I've waited a decade to find a reason to get the extension developer docs written. icon_smile.gif You're right to state that polling the word count would slow the system down, however. Your revised idea sounds completely do-able. Give me time to sort through the mire I'm bogged down in right now, and I'll give you what you need to get started.

 

One of the best extensions I ever wrote for the original LW back in 2001 was an auto-repeat. This wasn't too invasive since it just patched into the space key and scanned the last word typed against a table of substitutions/corrections.

 

LW's "kernel" wasn't really designed for easy extension so I'll probably re-write it for the cart/130XE version. I've long wanted to have a BASIC-like macro language and an SDX-type library for extensions to completely do away with absolute addresses. Anyway, they are ambitious goal and we need to work with what we have at the moment. In the editor, there are "official" hooks for:

 

  • ESC key
  • CTRL+T
  • SHIFT+CTRL+T

Patching into other keys would involve remapping one of the normal keys onto the extension hooks. We also usefully have the following hooks:

 

  • Reset
  • Un-hook (just before a new extension is loaded, so that an agressively patched extension can un-patch code)
  • Init
  • Autorun

Here's the source code for the SYSINFO.EXT extension (sorry about the crappy spacing):

 

; SYSTEM INFO
;
.INCLUDE LWEQ.ASM
;
; INCLUDE D:LW.INC
;
clrwindow = $2bee
printf = $9246
xmax = $846f
putchar = $9536
current_bank = $84c4
banks = $8452
bank = $8469
banksel = $cedd
gotowindownum = $2b4b
do_wordcount = $cded
fnbuff = $7f84
;
.bank
 *= $3800 ; add-in buffer
;
.BYTE 3 ; VERSION NUMBERS
.BYTE 11
;
.WORD 0 ; init
.WORD 0 ; autorun
.WORD 0 ; reset
.WORD 0 ; unhook
;
.WORD systeminfo ; editor #1
.WORD 0 ; editor #2
.WORD 0 ; editor #3
;
.WORD 0 ; disk menu #1
.WORD 0 ; disk menu #2
;
.WORD 0 ; print stage 1 #1
.WORD 0 ; print stage 1 #2
.WORD 0 ; print stage 2 #1
.WORD 0 ; print stage 2 #2
;
.word 0 ; print init
.word 0 ; print exit
;
systeminfo
jsr clrwindow
lda #0
sta vx
sta vy
jsr printf
.byte " # Name",0
lda xmax
sec
sbc #19
tax
blanksloop
lda #0
jsr putchar
dex
bne blanksloop
jsr printf
.byte "Bytes Words ",0
;
ldy #1
sty vy
dey
sta current_bank
sta fileptr
sta fileptr+1
sta pptr
sta pptr+1
sinfoloop
lda current_bank
cmp banks
beq sidone
jsr banksel
jsr do_wordcount
lda fileptr
clc
adc temp2
sta fileptr
lda fileptr+1
adc temp2+1
sta fileptr+1
lda temp3
clc
adc pptr
sta pptr
lda temp3+1
adc pptr+1
sta pptr+1
lda #0
sta vx
inc current_bank
jsr printf
.byte "%2b %64n %5d %5d",0
.word current_bank,fnbuff,temp2,temp3
inc vy
bne sinfoloop
sidone
lda bank
jsr banksel
inc vy
lda #0
sta vx
jsr printf
.byte "%d words in %d bytes",0
.word fileptr,pptr
jmp gotowindownum

Link to comment
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.
Note: Your post will require moderator approval before it will be visible.

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...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...