Jump to content
IGNORED

Classic99 Updates


Tursi

Recommended Posts

@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.

 

  • Like 1
Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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 by Tursi
  • Like 3
Link to comment
Share on other sites

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.

 

Link to comment
Share on other sites

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.

 

  • Like 3
Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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.

 

Link to comment
Share on other sites

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.

  • Like 1
Link to comment
Share on other sites

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.        

Link to comment
Share on other sites

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!

 

  • Like 1
Link to comment
Share on other sites

  • 2 weeks later...
5 hours ago, dhe said:

What is STRead?

 

image.png.374584d69fbfb0300768339f88477dde.png

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 by Tursi
Link to comment
Share on other sites

ERROR LINK NOT FOUND

 

image.png.525e3cd70ec3bac40ca9f77b096fc2ca.png

 

 
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.
 
image.png.eb72e4d01c0944448386cb0f5ab7dc1e.png
 
 
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.
 
 
  • Like 2
Link to comment
Share on other sites

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.

 

image.thumb.png.17671fb930f930ab437915d997bd330e.png

 

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:

 

image.thumb.png.8edd2b3b2089ce2817456815d1546778.png

 

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.

 

  • Like 2
Link to comment
Share on other sites

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

  • Like 1
Link to comment
Share on other sites

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. ;)

 

  • Like 1
Link to comment
Share on other sites

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.

  • Like 6
Link to comment
Share on other sites

  • 1 month later...

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 by jenorton
  • Like 4
Link to comment
Share on other sites

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" ;)

 

 

  • Like 1
  • Haha 2
Link to comment
Share on other sites

  • 1 month later...

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!

 

Link to comment
Share on other sites

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 by Tursi
  • Like 5
  • Thanks 1
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...