Jump to content
IGNORED

Text viewer for TI99


Recommended Posts

Posted (edited)
38 minutes ago, Lee Stewart said:

 

Did you try <break> (FCTN+4)?

 

...lee

Hi, nothing happens if I do FCTN+4 .... command BYE seems working instead. Thank you Lee

9 minutes ago, senior_falcon said:

That had me stumped too. Turns out that BYE does the trick.

True... of course... How couldn't I have thought about it! It works 😁  thank you!

Edited by fablug
  • Like 1
Link to comment
Share on other sites

8 hours ago, Tursi said:

>It starts up on Turis's loader but doesn't run.

 


I don't fully make sense of it, but the last sequence is part of this scratchpad code, the execution loop? 

8388: MOV *R7+,R9
838A: MOV *R9+,R8
838C: MOV *R8+,R5
838E: B *R5

The loop seems to run fine for a bit, but in the final loop (post increment) R7 is >FF40, R9 is >DC0B, and R8 is >0002 (implying R8 got 0). This loads R5 with >83E0, which is the boot vector workspace, and it jumps there to crash. You can get the crash quickly in Classic99 by setting Debug->Break on Illegal Opcode in the debugger... but it'll probably take working backwards from there to see why it did that.

Remember you can log writes to a memory location, so you could get a pseudo trace by logging your registers... maybe it'll help. Looks like it's not in the manual but it is in the '?' box - use L0000=# -> 0000 is the address you want to log all writes to, and # is a number from 1-9 that will be used to name the disk file. (In testing, this seems to log only bytes, it might not be as useful, I meant it mostly for capturing speech data ;) )

 


 

 

Thanks for giving it a look.

That sequence is the Forth Interpreter.

Specifically 8388 is the "EXIT" routine that runs at the end of a sequence of addresses.

It pops the return stack into the interpreter pointer register R9.

838A  does the indirect threading thing , Reading the address from R9 then reading the address in the address then branching. (pointer to a pointer madness)

 

So I saw that too.  And I don't get it because it ran this EXIT sequence twice in a row, which should never happen. 

 

I pretty am sure you are correct that it's some small difference in the PAD RAM between E/A and XB carts that I don't init.

One clue is that when I try to load the Development kernel which uses disk on boot-up it bounces out to the splash page right away.

 

 

 

 

Link to comment
Share on other sites

19 minutes ago, fablug said:

Hi, nothing happens if I do FCTN+4 .... command BYE seems working instead. Thank you Lee

True... of course... How couldn't I have thought about it! It works 😁  thank you!

I would complain to the manager about their documentation.

 

Very sorry I forgot to give you some instructions.

  • Like 2
Link to comment
Share on other sites

29 minutes ago, senior_falcon said:

That had me stumped too. Turns out that BYE does the trick.

Is it possible to jump back into BASIC if this thing was loaded from the FunnelWeb loader?

Link to comment
Share on other sites

Posted (edited)

In my dreams, somewhere somehow there'll be a text viewer for the TI99, you can run from XB and where you can switch from 32 to 40 to 64 cols.

Maybe using the famous TASWORD font (Zx Spectrum program) which could reach 64 cols having 3 pixel-wide characters.

image.thumb.png.98892948ce22ccf59e04bb08a495030b.png

But till then, I'm happy with the VIEWER you posted here 😁

Thanks everybody. 

 

Edited by fablug
  • Like 2
Link to comment
Share on other sites

11 minutes ago, fablug said:

In my dreams, somewhere somehow there'll be a text viewer for the TI99, you can run from XB and where you can switch from 32 to 40 to 64 cols.

Maybe using the famous TASWORD font (Zx Spectrum program) which could reach 64 cols having 3 pixel-wide characters.

image.thumb.png.98892948ce22ccf59e04bb08a495030b.png

But till then, I'm happy with the VIEWER you posted here 😁

Thanks everybody. 

 

Oh man now you are throwing the gauntlet down. :) 

 

That font is part of TI-FORTH, an unreleased TI product.

I believe it was created by the late Dr. C. H. Ting for a 64 column editor to give credit.

You need to switch into bit map mode on the TI to use it which doesn't leave much room for file buffers.

One day my stack of projects might get low enough to try this. 

 

I am glad the viewer was useful.  

  • Like 2
Link to comment
Share on other sites

2 hours ago, TheBF said:

Is it possible to jump back into BASIC if this thing was loaded from the FunnelWeb loader?

There should be no big problem in writing this in assembly. Then after loading it, you would run it from XB with something like:

CALL LINK("VIEW","DSK2.FILE")

 

Unless someone beats me to it (hint), I will take a look doing this in the next couple of days.

There would be no problem in returning to XB. 40 columns is easy, and you would return to same XB screen you came from.  64 seems like a lot of work for little gain.

80 columns would be much easier, but for it to work on real iron you would need a graphics card upgrade such as F18.

 

Funnelweb is a massive program and I am not sure the loader could be removed from it. To use Funnelweb for this would be like using a front end loader to measure your coffee grounds. 

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

48 minutes ago, senior_falcon said:

There should be no big problem in writing this in assembly. Then after loading it, you would run it from XB with something like:

CALL LINK("VIEW","DSK2.FILE")

 

Unless someone beats me to it (hint), I will take a look doing this in the next couple of days. 

I am thinking nobody is going to beat you to it. :)

 

  • Like 1
Link to comment
Share on other sites

Posted (edited)
1 hour ago, TheBF said:

Oh man now you are throwing the gauntlet down. :) 

 

That font is part of TI-FORTH, an unreleased TI product.

I believe it was created by the late Dr. C. H. Ting for a 64 column editor to give credit.

You need to switch into bit map mode on the TI to use it which doesn't leave much room for file buffers.

One day my stack of projects might get low enough to try this. 

 

I am glad the viewer was useful.  

If you find the time and decide to go for it give me a shout 🙂

 

59 minutes ago, senior_falcon said:

There should be no big problem in writing this in assembly. Then after loading it, you would run it from XB with something like:

CALL LINK("VIEW","DSK2.FILE")

 

Unless someone beats me to it (hint), I will take a look doing this in the next couple of days.

There would be no problem in returning to XB. 40 columns is easy, and you would return to same XB screen you came from.  64 seems like a lot of work for little gain.

80 columns would be much easier, but for it to work on real iron you would need a graphics card upgrade such as F18.

 

Funnelweb is a massive program and I am not sure the loader could be removed from it. To use Funnelweb for this would be like using a front end loader to measure your coffee grounds. 

Great! Looking forward to it 😁

Edited by fablug
  • Like 1
Link to comment
Share on other sites

Here you go - give this a try.

DV80VIEWER

This is an XB program, so just OLD DSK1.DV80VIEWER and RUN

The assembly is loaded to low memory, then you are prompted with a question mark.

Enter a file name such as DSK1.TEXT

The screen goes to 40 columns and the file is read from disk and printed on the screen.

Press any key to pause the listing. Press any key to resume. When done reading the file, it pauses and you just press a key to return to XB

Press Fctn 4 to end the listing, then press any key to return to XB

Enter a null string to end the program.

Once this has run, the assembly code loaded to low memory and you can use XB normally. If you want to view a DV80 program you can

CALL LINK("VIEW","DSK1.TEXT")

CALL LINK("VIEW80","DSK1.TEXT") will display the file in 80 columns if you have a way to view in 80 columns. In Classic99, under Video you can enable the 80 column hack.

 

in XB 2.9 G.E.M., the screen will be displayed in the same colors used by the editor.  CALL LOAD(9456,foreground*16+background-17) can be used to change the screen colors in any flavor of XB.

244 is white on dark blue, and 17 is black on cyan. You may need the CALL SCREEN to set the desired screen color when returning to XB.


1 !DV80 viewer for XB
10 CALL INIT :: CALL LOAD(8192,255,172):: CALL LINK("X")
20 CALL CLEAR :: CALL LOAD(9456,78)
30 CALL SCREEN(8):: INPUT A$ :: IF A$="" THEN END
40 CALL LINK("VIEW",A$):: GOTO 30

 

The code interferes the advanced graphics modes in XB 2.9 G.E.M.

TEXTVIEWER.GIF.c5c0a8d95dea6cf2f88f0d0db6d11d9e.GIF

(The pauses are from me pressing a key.)

 

 

Edited by senior_falcon
  • Like 10
  • Thanks 1
Link to comment
Share on other sites

Posted (edited)

@senior_falcon very good!! fantastic. It works perfectly, thank you.

Just out of curiosity (I'm a newbie) I assume the L/M code is loaded within the xb program even if I see only the xb instructions.
Does it use standard GROM routines or did you write it from scratch?

thank you again

Edited by fablug
Link to comment
Share on other sites

On 3/19/2023 at 9:00 AM, fablug said:

@senior_falcon very good!! fantastic. It works perfectly, thank you.

Just out of curiosity (I'm a newbie) I assume the L/M code is loaded within the xb program even if I see only the xb instructions.
Does it use standard GROM routines or did you write it from scratch?

thank you again

     There are no grom routines in this. It is written pretty much from scratch, but I did use my 40 and 80 column editor routines as a guide to what memory locations to use.

The assembly language code is contained inside the XB program and copied into low memory. it works fine there, but as I mentioned, one problem is that it will interfere with the advanced graphics modes in XB 2.9 G.E.M.

 

     Here is a slightly modified version that gets around that problem. All the code is in high memory where XB programs are normally kept, which avoids overwriting XB256 or The Missing Link. When the program runs, it checks whether CALL INIT has been performed. If not, then it does CALL INIT. It then changes the pointer at 8192 (>2000) to point to my own assembly lookup routine in high memory.

     The program uses ON BREAK NEXT so you cannot stop the program with Fctn 4. You have to exit the program by entering a blank file name. This way, when the program ends, it is able to reset the pointer at 8192 to the proper value for the assembly lookup routine, and now XB256 or The Missing Link will be able to find their routines and work properly.

 

VIEWDV80XB

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

19 hours ago, senior_falcon said:

     There are no grom routines in this. It is written pretty much from scratch, but I did use my 40 and 80 column editor routines as a guide to what memory locations to use.

The assembly language code is contained inside the XB program and copied into low memory. it works fine there, but as I mentioned, one problem is that it will interfere with the advanced graphics modes in XB 2.9 G.E.M.

 

     Here is a slightly modified version that gets around that problem. All the code is in high memory where XB programs are normally kept, which avoids overwriting XB256 or The Missing Link. When the program runs, it checks whether CALL INIT has been performed. If not, then it does CALL INIT. It then changes the pointer at 8192 (>2000) to point to my own assembly lookup routine in high memory.

     The program uses ON BREAK NEXT so you cannot stop the program with Fctn 4. You have to exit the program by entering a blank file name. This way, when the program ends, it is able to reset the pointer at 8192 to the proper value for the assembly lookup routine, and now XB256 or The Missing Link will be able to find their routines and work properly.

 

VIEWDV80XB 1.38 kB · 3 downloads

Thank you for all the explanation! 

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