senior_falcon Posted March 15 Share Posted March 15 That had me stumped too. Turns out that BYE does the trick. 2 Quote Link to comment Share on other sites More sharing options...
fablug Posted March 15 Author Share Posted March 15 (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 March 15 by fablug 1 Quote Link to comment Share on other sites More sharing options...
+TheBF Posted March 15 Share Posted March 15 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. Quote Link to comment Share on other sites More sharing options...
+TheBF Posted March 15 Share Posted March 15 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. 2 Quote Link to comment Share on other sites More sharing options...
+TheBF Posted March 15 Share Posted March 15 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? Quote Link to comment Share on other sites More sharing options...
fablug Posted March 15 Author Share Posted March 15 (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. But till then, I'm happy with the VIEWER you posted here 😁 Thanks everybody. Edited March 15 by fablug 2 Quote Link to comment Share on other sites More sharing options...
+TheBF Posted March 15 Share Posted March 15 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. 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. 2 Quote Link to comment Share on other sites More sharing options...
senior_falcon Posted March 15 Share Posted March 15 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. 1 2 Quote Link to comment Share on other sites More sharing options...
+TheBF Posted March 15 Share Posted March 15 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. 1 Quote Link to comment Share on other sites More sharing options...
fablug Posted March 15 Author Share Posted March 15 (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 March 15 by fablug 1 Quote Link to comment Share on other sites More sharing options...
senior_falcon Posted March 18 Share Posted March 18 Almost ready with a nice, compact one that lets you read a file, then goes back to XB like you would expect. All that is left is a little work on the error checking and some general polishing. 5 Quote Link to comment Share on other sites More sharing options...
senior_falcon Posted March 18 Share Posted March 18 (edited) 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. (The pauses are from me pressing a key.) Edited March 18 by senior_falcon 10 1 Quote Link to comment Share on other sites More sharing options...
+TheBF Posted March 18 Share Posted March 18 Nice. 2 Quote Link to comment Share on other sites More sharing options...
fablug Posted March 19 Author Share Posted March 19 (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 March 19 by fablug Quote Link to comment Share on other sites More sharing options...
senior_falcon Posted March 21 Share Posted March 21 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 2 1 Quote Link to comment Share on other sites More sharing options...
fablug Posted March 21 Author Share Posted March 21 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! 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.