Tursi Posted July 12, 2022 Author Share Posted July 12, 2022 @jenorton Thanks for having a play with it! The continuous mode actually works by doing a diff on the screen about once per second, so how the data gets there doesn't matter. However, any change to a line (even if it's a non-readable change) flags the entire line for reading. I'm not sure why sometimes BASIC re-reads previous lines. I think that sometimes the diff catches a line in mid-scroll - so only half the line has scrolled. Then by the time it looks again, it's finished scrolling but now the diff is messed up. I've tried to minimize that but it's pretty hard to know what the computer is really doing. The Scott Adams adventures are kind of a write-off in their current form... they would need either patches or a custom reader. For some reason, they put new information at the top (that's okay), but scroll all the user input and responses downwards from the middle of the screen... so the diff approach (which only recognizes the entire screen scrolling up) can't cope with it. The other issue I noted with Scott Adams was that he used the underscore for a cursor - and the speech routines see it blinking on and off as new text. I will probably add a filter for that. I don't think I have Hitchhikers... I would have to see what it does to the screen. IIRC, though, there's a status line at the top of the screen that never scrolls. That would break the scroll detection I wrote and make it re-read the entire rest of the screen. Sounds like there are at least two cases where detecting partial scrolls might be advantageous. I will have to think on that for a while. 1 Quote Link to comment Share on other sites More sharing options...
Tursi Posted July 12, 2022 Author Share Posted July 12, 2022 I was able to configure the default voice as you described. They buried it pretty well. I miss the old control panel interface. But much happier since the faster voice keeps up much better 2 Quote Link to comment Share on other sites More sharing options...
GDMike Posted July 12, 2022 Share Posted July 12, 2022 1 hour ago, Tursi said: You probably have either F18A disabled or Enable 80 Column Hack disabled. Look under options. Not it. It definitely set exactly like my windows machine, BUT.. I've since blown away that version of OS for raspberry. So, not going to use it under twister, since twister is a hog and slow, or my pi needs 8Gb and I've got 2... probably has something to do with it. Quote Link to comment Share on other sites More sharing options...
Tursi Posted July 13, 2022 Author Share Posted July 13, 2022 (edited) Classic99 399.062 One more quick push before I leave it alone for a while. I decided to try using a modern diff as the basis for the continuous screen reader, and found some algorithm called Myer's diff. It works pretty well and speaks only the new words, no matter what the scroll did. In fact, sometimes it's a little TOO aggressive. For instance, going from the selection page to TI BASIC, it only says "READY" instead of "TI BASIC READY", because the previous screen already said "TI BASIC". But, I think it makes the Scott Adam's Adventures playable (though the command replies are still in reverse order, and the status at the top of the screen will only speak changes), and in many places the fewer words are arguably more natural... (?) Though, it no longer repeats entered lines in TI BASIC, and I have mixed opinions of that. I still don't have Hitchhiker's to try that. The biggest downside is that the aggressive delta can drop a word in the middle of a sentence if that word was on the previous page. I would need to spend more time thinking about how to make that better. But the concept seems to work. Give it a try, and see if it works better or if you prefer the old routine. Control-F4 will always re-read the entire screen in case context is missing. http://harmlesslion.com/software/classic99 Edited July 13, 2022 by Tursi 3 Quote Link to comment Share on other sites More sharing options...
jenorton Posted July 13, 2022 Share Posted July 13, 2022 Hi: Just saw the update. Going to give it a go. I'm playing with Stranger, so that's probably a good test of normal BASIC scrolling. Got away from the first few spiders. I'm deliberately not going to list the program and try to figure out what to do next. Thanks for working on this. To my knowledge, this is something that has never been done before. Heading off to the unzipper. Quote Link to comment Share on other sites More sharing options...
jenorton Posted July 13, 2022 Share Posted July 13, 2022 Hi: Good news! I think you're definitely moving in the right direction. I see what you mean about skipping words here and there. However, this algorithm made a huge difference with Hitchhiker (and I suspect any other Infocom title), not to mention some other programs. It didn't read the status line unless the score changed, and, pretty-much sailed right along. Again, a word or two missed here and there, but, nothing I couldn't handle. Mostly little words every-so-often. I played right through to the "Heart of Gold", without any problems, which is a pretty good testament as to the usability of this feature. Even did a couple saves and restores, again, everything worked like a top. Thanks again for this addition. 3 Quote Link to comment Share on other sites More sharing options...
+OLD CS1 Posted July 13, 2022 Share Posted July 13, 2022 I like how the speaker attempts to expand perceived contractions and abbreviations. For instance, it knows that "NC" is "North Carolina," but it sees "HR=1" as "hours=1," STR$ as "STRINGS-DOLLAR" (not too bad, really,) and some other amusing things. It plows through mathematical formulas, does not speak parenthesis or quotes, commas, &c. While I can be critical and academically curious of the reader, were I seriously visually impaired or blind this would certainly be better than nothing. This is really cool. Quote Link to comment Share on other sites More sharing options...
Tursi Posted July 14, 2022 Author Share Posted July 14, 2022 1 hour ago, OLD CS1 said: I like how the speaker attempts to expand perceived contractions and abbreviations. For instance, it knows that "NC" is "North Carolina," but it sees "HR=1" as "hours=1," STR$ as "STRINGS-DOLLAR" (not too bad, really,) and some other amusing things. It plows through mathematical formulas, does not speak parenthesis or quotes, commas, &c. While I can be critical and academically curious of the reader, were I seriously visually impaired or blind this would certainly be better than nothing. This is really cool. Yeah.. it's fairly clever. Though, since everything on the TI is usually uppercase, words that conflict with common acronyms get expanded. If you run Demonstration, instead of "it" it reliably says "I.T.", for example. I suppose that's something we just have to live with, if I convert everything to lowercase then the opposite probably will just happen. Oddly, sometimes it says "TI" as "T.I." and sometimes as "Tee", and I don't know what the difference is. Quote Link to comment Share on other sites More sharing options...
jenorton Posted July 14, 2022 Share Posted July 14, 2022 I don't have a problem with leaving the text alone. It seems to do fairly well. I had forgotten bout most things being upper case. As a blind person, I do not expect 100% accuracy. This is more accurate then, say, the TE2 speech. As far as a program listing, if I want to have it totally accurate, I can list to the CLIP device and my Windows screen reader has the ability for me to set punctuation levels and such. Also, I just thought about this: If I paste a long program listing back in, I had probably better disable the continuous mode, otherwise it'd talk me to death :). Back in '85 when I had a serial synthesizer, more than once, I wished I had a key to shut it up. That was thoughtful to have that in there at the first. No one wants a runaway speech synthesizer :-). Anyway, I'm still amazed that you thought of this and got it implemented. Thanks to this addition, I'm hearing the TI in a way I've never heard before. I'm working on a very short audio demonstration I'm planning to send to a podcaster in New Zealand who likes to talk about blindness issues, including technology. I have a feeling that some of us blind folks back in 1981 may have thought, "This is going to be a computer I can use?" After all, the Apple and the IBM PC didn't have an off-the-shelf speech synthesizer you could bring home with you the same day and have it talking. Hey, I just thought of something. Do you think you could fix it so that, when the screen reader continuous mode is turned on, that it would also enable the f10 shortcut? Or, maybe just add it into the options dialog when you get a chance--that might be better--you decide. I don't want to ask too much. This is more than I ever imagined. Thanks again for all your help. 1 Quote Link to comment Share on other sites More sharing options...
jenorton Posted July 14, 2022 Share Posted July 14, 2022 You know, on second thought, would that cause weird behavior if f10 were linked to screen reader funcion? Someone might want it on without screen reading. It's hard to know what's the best way to handle some of these things. Anyway, it's still nice to have these things available. BTW, if you all would be interested, I'll post a link to the episode of the podcast if my recording gets used. Quote Link to comment Share on other sites More sharing options...
Tursi Posted July 15, 2022 Author Share Posted July 15, 2022 Yeah... it's a tough call. I think for now it might be better to leave it as a configuration setting since it's non-standard - though I do see the use case. I expect that alt-F4 would be in the same boat. I will think on it for a bit. I'm really happy that it's giving you some fun with the system! I would be very interested in seeing the podcast! 1 Quote Link to comment Share on other sites More sharing options...
Tursi Posted July 15, 2022 Author Share Posted July 15, 2022 Classic99 399.063 - Added configuration of F10 and Alt-F4 to the options menu (Options->options). http://harmlesslion.com/software/classic99 3 Quote Link to comment Share on other sites More sharing options...
+dhe Posted July 25, 2022 Share Posted July 25, 2022 What is STRead? Quote Link to comment Share on other sites More sharing options...
Tursi Posted July 26, 2022 Author Share Posted July 26, 2022 (edited) 5 hours ago, dhe said: What is STRead? What scanline the status register was last first read at (for a particular frame). I was playing with ideas to estimate the CPU load of a particular piece of software. It's not really reliable yet. Edited July 26, 2022 by Tursi Quote Link to comment Share on other sites More sharing options...
+dhe Posted July 27, 2022 Share Posted July 27, 2022 ERROR LINK NOT FOUND While doing some self education with the debugger in classic99, I came upon one neat little nugget of wisdom. I wrote a seven line program to trigger a breakpoint at >A000 and then allow me to do a couple of steps to show that values changed as expected. Instead, when I tried to load and run the program, the load worked fine, but when I tried to run - I got the ERROR LINK NOT FOUND. I'd never seen that error mentioned before. I went and got my morning coffee and looked again. Ah. There, I'd mis-typed >0000 instead of >A000. So, I guess when the link loader runs, it keeps track of where the defs are supposed to be, but also checks that the link is actually there before branching to it. Which of course it wouldn't be when it tries to load a program over (into) ROM. 2 Quote Link to comment Share on other sites More sharing options...
Tursi Posted July 28, 2022 Author Share Posted July 28, 2022 12 hours ago, dhe said: I went and got my morning coffee and looked again. Ah. There, I'd mis-typed >0000 instead of >A000. So, I guess when the link loader runs, it keeps track of where the defs are supposed to be, but also checks that the link is actually there before branching to it. Which of course it wouldn't be when it tries to load a program over (into) ROM. It doesn't actually check that the link is actually there, so that's an interesting discovery. What 80 column editor is that? Anyway, I was curious, so I tried it myself. When you use LOAD AND RUN, the DEFs are stored in a table that starts at the top of low memory and works backwards. So if you go to CPU view in the debugger, and enter >3F00, you can see all the DEFs that the Editor/Assembler cart pre-loads for you. Your own defs appear above that and it continues to build backwards in memory. You can see that START did get loaded, with an address of >0000. (The first 6 bytes are always the name, then two bytes of address). REF statements use this table to look up the addresses that they need. So when I told it to run START, I got this error. I am guessing you are not using raw Editor/Assembler, so your error is a little different: A little surprising, to be certain! I dug into it a bit more... the RUN option ends up calling an assembly program at >2128. It actually does find the entry for START, but it checks if the address is 0. An interesting test, possibly meant to indicate a REF that was not yet filled in...? At any rate, upon seeing the zero it sets the error flag and jumps back into GPL, which brings up the message. 2 Quote Link to comment Share on other sites More sharing options...
+dhe Posted July 28, 2022 Share Posted July 28, 2022 Thanks Tursi, I'll need to do some more poking. I use FRED's 80-Column Edit - using the F18A hooks built in to Classic99. I used the E/A cart that comes with Classic99 - it has edit and assembler built in. I used option 3 load, hit enter to get to program and typed in start. That additional piece of information where the link tables grow is something I want to explorer more, I might even pop over to Thieery's site and take a look at the e/a disassembly. Let me say - being able to load my code have it halt at the start and watch it change with each instruction is a huge game changer for me. Some of the instructions especially in loops are just to hard for me to envision in my head what they are going to do! W00T 1 Quote Link to comment Share on other sites More sharing options...
Tursi Posted July 28, 2022 Author Share Posted July 28, 2022 11 hours ago, dhe said: Let me say - being able to load my code have it halt at the start and watch it change with each instruction is a huge game changer for me. Some of the instructions especially in loops are just to hard for me to envision in my head what they are going to do! W00T Yeah, that's how I do it myself, not only when it crashes - but also when running new code for the first time. I step through to make sure it's doing what I expect. Good way to find bugs before they trigger. Strange that you used E/A and got that unusual message, though... that text does not exist in the E/A module, and redo/back is never presented as an option on the error message, only Enter. Maybe something was left over in memory from a previous load. A key part of debugging - "strange" is an indication that a piece of understanding is missing. When chasing a bug, never ignore 'strange'. Since we aren't chasing a bug, I'm content to let it go. 1 Quote Link to comment Share on other sites More sharing options...
jenorton Posted July 31, 2022 Share Posted July 31, 2022 Well, here's something else Classic99 can do that I hadn't thought of. I've got a little set of bluetooth earbuds, and, I dropped one of them somewhere and couldn't find it. Being blind, I thought of using CALL SOUND to do a sort-of sweep tone, put that in, turned my volume all the way up and we found the missing earbud. Classic99 is just so handy--you can just bring it up and it's ready. 6 Quote Link to comment Share on other sites More sharing options...
jenorton Posted September 23, 2022 Share Posted September 23, 2022 (edited) A while back, I mentioned I would be featureing Classic99 on a podcast, and, my submission got used. No comment on it by the host, but, he did put it in there, and thought I'd share a link to the particular episode where I feature Classic99. The podcast is called "Mosen at Large". It focuses on the blind community and things of interest to it. Here is a link to the episode in question. Note my submission is the first one: https://mosen.org/episode-198-microphone-advice-laptop-advice-and-one-of-these-26-things-is-not-like-the-other/ Enjoy! Edited September 23, 2022 by jenorton 4 Quote Link to comment Share on other sites More sharing options...
Tursi Posted September 26, 2022 Author Share Posted September 26, 2022 That was a really nice submission! Thanks for that! You've got a good voice and your explanations were really good. Also nice to hear how it's being used. Word actually came up in the newest version and warned me that the manual had some screen-reader issues, so I tried to improve that (a few months ago now). I forgot that the quit dialog says "Classic99 go byebye" 1 2 Quote Link to comment Share on other sites More sharing options...
retrodroid Posted November 20, 2022 Share Posted November 20, 2022 Hi, Apple-silicon (M1) MacOS user here. At the risk of quickly falling into the "not my problem" category ;), I've been trying to get classic99 working under Wine on my mac. So far I've gotten it running, with sound and everything, but the application window always opens blank (nothing shows on the screen). I can interact with it, type in a basic program and run it, but only hear the output. I noticed this comment in your release notes back in 2020: "1 November 2020 - minor tweaks to make it build in 64-bit, but the 64 bit build is not going to be released" I was just wondering if you or anyone else had ever made a pure 64-bit build available? The M1 mac only really supports 64-bit x86 apps and it's possible that a 64-bit version of classic99 might work a little better. Thanks for your amazing contribution to the 99'er community! Quote Link to comment Share on other sites More sharing options...
Tursi Posted November 22, 2022 Author Share Posted November 22, 2022 (edited) I'd be surprised, but if it were true, I would keep that in mind going forward. Here's a 64-bit build if you want to test it. There are a lot of warnings when I build this, so I do not consider this a stable build for daily use, but see if it comes up and runs correctly. If it looks good, I'll fix the warnings and make 64-bit builds normal going forward. Classic99x64_nosupport.zip Edited November 22, 2022 by Tursi 5 1 Quote Link to comment Share on other sites More sharing options...
retrodroid Posted November 23, 2022 Share Posted November 23, 2022 Woot! The 64-bit build works! I was only able to run a quick test but the screen is visible now. Much appreciated! 2 1 Quote Link to comment Share on other sites More sharing options...
Tursi Posted November 23, 2022 Author Share Posted November 23, 2022 4 hours ago, retrodroid said: Woot! The 64-bit build works! I was only able to run a quick test but the screen is visible now. Much appreciated! Oh, that's fascinating. Okay, thanks for reporting back! 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.