+Larry Posted June 19, 2021 Share Posted June 19, 2021 The thread about "Speedcheck" for Atari got me thinking about these again. So I have a question -- in general terms, how did these work? I can imagine it operating like a human, comparing a word to the dictionary, letter by letter. But there there might be other tricks involved to speed things up? Any thoughts? BITD, I used Atariwriter a fair amount and occasionally used a spell checker with it. I remember it being pretty slow, but not much else. I also think I remember one of these that could be put on a ramdisk, so that should have speeded things up greatly. Quote Link to comment Share on other sites More sharing options...
+bob1200xl Posted June 19, 2021 Share Posted June 19, 2021 It seemed that the program just split the 'dictionary' into a memory resident section that could be accessed quickly and a disk resident remainder. It would look up every word, first in memory and then on disk. One variation I saw sorted the text file to make it a linear search for the words without duplicating compares.. Some of them used expanded memory for the dictionary. Something like that. Bob 1 Quote Link to comment Share on other sites More sharing options...
sup8pdct Posted June 19, 2021 Share Posted June 19, 2021 I used to put the spell check disk image on a MIO ram disk. Should have seen it fly through a document then. James 1 Quote Link to comment Share on other sites More sharing options...
flashjazzcat Posted June 19, 2021 Share Posted June 19, 2021 (edited) The one I wrote for the The Last Word scans through the file in memory - top to bottom - once for each letter in the alphabet. On the first pass, the first time it finds a word starting with the current letter, it checks to see if the corresponding plain text dictionary file is loaded into memory (using an extended bank, so >=128K required). If not, the dictionary file is loaded, and once it's resident, it's scanned (using a binary search, since the dictionary list is in alpha order) for the word in question. If it's not found, the user has the option to add it to the dictionary, ignore it, correct the document, etc. We do that until we find no more words beginning with the current letter further down the document. This process is repeated twenty-six times, and as arduous as it sounds, it's actually quite quick, especially on HDD equipped systems. Many of the dictionary files remain reasonably short ('Q', 'Z', etc, being extremely small), and since the first letter is redundant (it's implied) in each of the twenty-six dictionaries, it's omitted from every word in the list to save space (or should be; I forget whether I implemented that yet). It's a simple approach with some arbitrary limits (dictionary size, etc), but it seems to work well. The dictionaries tend to reflect the vocabulary of the user, and thus remain manageably sized. Edited June 19, 2021 by flashjazzcat 1 1 Quote Link to comment Share on other sites More sharing options...
+Larry Posted June 20, 2021 Author Share Posted June 20, 2021 Thanks for the replies! I meant for this to be in the programming section, but I started it on my tablet, and it ended up here. I remember looking at one of the spell checkers with a sector editor, and my recollection is that it was kinda weird -- had a lot of partial words in the sectors. Quote Link to comment Share on other sites More sharing options...
flashjazzcat Posted June 20, 2021 Share Posted June 20, 2021 At the very least, some tokenisation would be required which would explain the apparent garbage in the sectors. I don't know if the Atari could support more complex means of compression without this negatively impacting the performance of the spell checker, but getting a reasonably comprehensive dictionary onto a 90KB floppy disk is no mean feat. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
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.