Jump to content

Photo

80 columns with F18A and Extended BASIC


26 replies to this topic

#1 senior_falcon OFFLINE  

senior_falcon

    Dragonstomper

  • 958 posts
  • Location:Lansing, NY, USA

Posted Thu Feb 2, 2017 11:17 PM

gallery_34177_1071_1829235.gif

Here's a first stab at utilizing the 80 column mode of the F18A with Extended BASIC.  The text is a short story by Mark Twain.  At one point there is a short pause when the text is being displayed - that is in the program, not the result of a garbage collection.  I will post the files tomorrow.  They are ready to go, but I realized there are no docs for them.



#2 jedimatt42 OFFLINE  

jedimatt42

    Stargunner

  • 1,265 posts
  • Location:Beaverton, OR

Posted Thu Feb 2, 2017 11:42 PM

Nice work!  It is great that it switches back to normal graphics mode when you 'break'. I would have imagined XB would have been left in a fit.

 

Do you think this will get added to XB256? 

 

-M@



#3 RXB OFFLINE  

RXB

    River Patroller

  • 2,838 posts
  • Location:Vancouver, Washington, USA

Posted Thu Feb 2, 2017 11:43 PM

Impressive.



#4 Shift838 OFFLINE  

Shift838

    Stargunner

  • 1,958 posts
  • SHIFT838
  • Location:Texas

Posted Thu Feb 2, 2017 11:47 PM

very nice.  I can see this getting use..



#5 --- Ω --- OFFLINE  

--- Ω ---

    TI-Runner

  • 10,689 posts

Posted Thu Feb 2, 2017 11:57 PM

very nice.  I can see this getting use..

 

Oh yeah!  I can see old text games like Hammurabi being modernized.  Heck, I'll probably be dusting off my seldom used programming skills now when I get some time.

 

Besides just displaying text, if I can input numeric and text data while in 80 column mode I'll be a happy camper for sure.  Who said dreams don't eventually come true!  Thanks Senior_Falcon!



#6 Tursi OFFLINE  

Tursi

    River Patroller

  • 4,844 posts
  • HarmlessLion
  • Location:BUR

Posted Fri Feb 3, 2017 3:22 PM

Even continue works? While I never doubted you could pull it off, I'm still impressed. ;)



#7 senior_falcon OFFLINE  

senior_falcon

    Dragonstomper

  • Topic Starter
  • 958 posts
  • Location:Lansing, NY, USA

Posted Fri Feb 3, 2017 9:26 PM

It always feels good when I can impress someone of your stature, Tursi!

 

I've attached the files that I promised yesterday.  Here's how to run the demo program, assuming they are on disk 6:

From the XB command line:

CALL INIT

CALL LOAD("DSK6.80TEST.OBJ")

CALL LINK("T80ON")

OLD DSK6.MYWATCH

RUN

 

The assembly language subroutines are:

CALL LINK("T80ON")     turns on the interrupt driven monitor so that the 80 column text mode will be usable.  Should be done from immediate mode, not from a program

CALL LINK("T80")           Changes graphics mode to the 80 column text mode.  The first time you call this it will load character definitions and clear the screen.

CALL LINK("G32")          Changes the graphics mode to the 32 column mode

CALL LINK("CLS80")      Clears the 80 column screen

CALL LINK("TCOLOR",foreground,background)     Changes the color in the T80 mode to the specified foreground and background

CALL LINK("DISPLY",row,col,string or number)      Displays a string or number at the specified row and column.  If the row is off the bottom of the screen the screen will scroll until the text can be printed.  Example:

                                                                                CALL LINK("DISPLY",25,1,"hello world") will scroll once and then print "hello world" at 1,24

 

 



#8 senior_falcon OFFLINE  

senior_falcon

    Dragonstomper

  • Topic Starter
  • 958 posts
  • Location:Lansing, NY, USA

Posted Fri Feb 3, 2017 9:26 PM

It always feels good when I can impress someone of your stature, Tursi!

 

I've attached the files that I promised yesterday.  Here's how to run the demo program, assuming they are on disk 6:

From the XB command line:

CALL INIT

CALL LOAD("DSK6.80TEST.OBJ")

CALL LINK("T80ON")

OLD DSK6.MYWATCH

RUN

 

The assembly language subroutines are:

CALL LINK("T80ON")     turns on the interrupt driven monitor so that the 80 column text mode will be usable.  Should be done from immediate mode, not from a program

CALL LINK("T80")           Changes graphics mode to the 80 column text mode.  The first time you call this it will load character definitions and clear the screen.

CALL LINK("G32")          Changes the graphics mode to the 32 column mode

CALL LINK("CLS80")      Clears the 80 column screen

CALL LINK("TCOLOR",foreground,background)     Changes the color in the T80 mode to the specified foreground and background

CALL LINK("DISPLY",row,col,string or number)      Displays a string or number at the specified row and column.  If the row is off the bottom of the screen the screen will scroll until the text can be printed.  Example:

                                                                                CALL LINK("DISPLY",25,1,"hello world") will scroll once and then print "hello world" at 1,24

 

 



#9 senior_falcon OFFLINE  

senior_falcon

    Dragonstomper

  • Topic Starter
  • 958 posts
  • Location:Lansing, NY, USA

Posted Fri Feb 3, 2017 9:26 PM

It always feels good when I can impress someone of your stature, Tursi!

 

I've attached the files that I promised yesterday.  Here's how to run the demo program, assuming they are on disk 6:

From the XB command line:

CALL INIT

CALL LOAD("DSK6.80TEST.OBJ")

CALL LINK("T80ON")

OLD DSK6.MYWATCH

RUN

 

The assembly language subroutines are:

CALL LINK("T80ON")     turns on the interrupt driven monitor so that the 80 column text mode will be usable.  Should be done from immediate mode, not from a program

CALL LINK("T80")           Changes graphics mode to the 80 column text mode.  The first time you call this it will load character definitions and clear the screen.

CALL LINK("G32")          Changes the graphics mode to the 32 column mode

CALL LINK("CLS80")      Clears the 80 column screen

CALL LINK("TCOLOR",foreground,background)     Changes the color in the T80 mode to the specified foreground and background

CALL LINK("DISPLY",row,col,string or number)      Displays a string or number at the specified row and column.  If the row is off the bottom of the screen the screen will scroll until the text can be printed.  Example:

                                                                                CALL LINK("DISPLY",25,1,"hello world") will scroll once and then print "hello world" at 1,24

                                                                                CALL LINK("DISPLY",27,1,"HELLO WORLD") will scroll 3 times and then print "HELLO WORLD at 1,24

The T80 and G32 screens are independent of each other and you can make any changes you want to the hidden screen.  Then you can display the screen with T80 or G32 as desired.

 

I've done as much as I'm going to on this.  The file 80TEST.TXT has the source code for the above, and hopefully enough comments to be understandable.  Feel free to add or modify as desired.  The major thing needed to make this a useful package is a way to input text and numbers when in the T80 mode.  

Attached Files


Edited by senior_falcon, Fri Feb 3, 2017 9:33 PM.


#10 --- Ω --- OFFLINE  

--- Ω ---

    TI-Runner

  • 10,689 posts

Posted Fri Feb 3, 2017 10:28 PM

Wow, this will be the first real reason to fire up the big box in months!  Yep, as soon as there is a way to input data I'll be all over this.



#11 RXB OFFLINE  

RXB

    River Patroller

  • 2,838 posts
  • Location:Vancouver, Washington, USA

Posted Sat Feb 4, 2017 7:56 AM

Well the TI Mode you mean the Edit Mode?

Well you could use the RXB command CALL USER(devicepath)

Example: CALL USER('SCS1.VOLUME.FILENAME)

or             CALL USER("PHONEY DSR DEVICE")

 

In this video I used RXB CALL USER("RS232") to talk to another TI computer thru the RS232 Cable and control the other computer like in Edit Mode in XB.

 

CALL USER works just like you are typing into XB but it runs from a file or from a source. Thus you could make a DSR in your code and RXB CALL USER could run from that.

Type in your code then run CALL USER("F80 DSR") and it would install and run.



#12 senior_falcon OFFLINE  

senior_falcon

    Dragonstomper

  • Topic Starter
  • 958 posts
  • Location:Lansing, NY, USA

Posted Sat Feb 4, 2017 8:36 AM

What's needed is an assembly equivalent for ACCEPT AT or INPUT.   Everything works as usual in XB but with the addition of the T80 mode. You can type in programs normally or paste them in using Classic99, which is how the text for the Mark Twain story got loaded.  That's way too much typing for me! Anyone interested can try it out by following the steps in post #9.



#13 Asmusr OFFLINE  

Asmusr

    River Patroller

  • 2,489 posts
  • Location:Denmark

Posted Sat Feb 4, 2017 11:06 AM

Wow, this will be the first real reason to fire up the big box in months!

 

:_(



#14 Ksarul OFFLINE  

Ksarul

    River Patroller

  • 4,232 posts

Posted Sat Feb 4, 2017 1:21 PM

I've seen several good reasons for the big box in the last month or so--Dungeons of Asgard, the Don't Mess With Texas Demo, the progress on several WIP compiled/XB256 games, Sometimes99er's recent Demo and Squary too, and Stuart's Experimental LBL Assembler/Disassembler module. There is lots of new stuff out there, and it is all good. This 80-column adaptation for the F18A is really good too, but it is not the only great thing out there. I am happy for each and every new bit of TI software--and I thank EVERY TI programmer for what they've done to help the community!  :)  :)  :)  :)



#15 InsaneMultitasker OFFLINE  

InsaneMultitasker

    Stargunner

  • 1,742 posts

Posted Sat Feb 4, 2017 1:34 PM

What's needed is an assembly equivalent for ACCEPT AT or INPUT.   Everything works as usual in XB but with the addition of the T80 mode. You can type in programs normally or paste them in using Classic99, which is how the text for the Mark Twain story got loaded.  That's way too much typing for me! Anyone interested can try it out by following the steps in post #9.

 

I wrote this long ago for one of my projects (1995 based on one of the dated comments) and as far as I know it functions as documented.  A few V9938 highlight/blink calls are commented out so it should be F18A compatible. The keyscan routine has something weird in place, possibly for the Geneve.   Anyway... if someone wants to pursue an ACCEPT AT routine to go with your T80 code, this might be a starting point.  The routine would need to be modified to use XB parameters in place of the DATA values/pointers.

 

Spoiler


#16 arcadeshopper OFFLINE  

arcadeshopper

    River Patroller

  • 2,613 posts
  • Location:Portland, Oregon USA

Posted Sat Feb 4, 2017 6:38 PM

Wow, this will be the first real reason to fire up the big box in months!  Yep, as soon as there is a way to input data I'll be all over this.

Open-Mouth-Insert-Foot-Funny-Mouth-Meme-



#17 --- Ω --- OFFLINE  

--- Ω ---

    TI-Runner

  • 10,689 posts

Posted Sat Feb 4, 2017 7:05 PM

Open-Mouth-Insert-Foot-Funny-Mouth-Meme-

 

Not really, I've been concentrating and playing on my 'small footprint' system lately.  I've not used the P-Box in a while.  I'll need disk drive access to use it, so it'll be necessary then.  A lot of the stuff I've used lately comes in FR99 format, and is used with Matts 32K.  For the recent Mega Demo I used an UberGROM cartridge.



#18 Lee Stewart ONLINE  

Lee Stewart

    River Patroller

  • 3,424 posts
  • Location:Silver Run, Maryland

Posted Sat Feb 4, 2017 9:00 PM

...

       REF  KSKAN

...

R6HACK DATA 0            HACK to allow R6 keypress return (KSKAN)

...

GETKEY MOV  R6,@R6HACK
       BL   @KSKAN
       MOV  R6,R1
       MOV  @R6HACK,R6

...

 

What is KSKAN?  Is that a Geneve MDOS routine essentially equivalent to the TI-99/4A console’s SCNKEY (at >000E)?

 

...lee



#19 InsaneMultitasker OFFLINE  

InsaneMultitasker

    Stargunner

  • 1,742 posts

Posted Sat Feb 4, 2017 9:35 PM

 

What is KSKAN?  Is that a Geneve MDOS routine essentially equivalent to the TI-99/4A console’s SCNKEY (at >000E)?

 

...lee

Not quite.   I named the routine "KSKAN" so that I can load either a TI- or Geneve-specific direct keyscan object code during program linkage. Why? I like to split routines and utilities into separate source files, assemble them, and then use REF/DEF to call them.  This lets me recycle subroutines across multiple programs. It also keeps main program assembly time to a minimum for larger projects.

 

If I recall correctly, KSKAN returns the key in R6 and returns >FF if no key was pressed. I'd have to look at the source to determine any other particulars such as debounce characteristics.



#20 senior_falcon OFFLINE  

senior_falcon

    Dragonstomper

  • Topic Starter
  • 958 posts
  • Location:Lansing, NY, USA

Posted Tue Oct 31, 2017 9:52 PM

gallery_34177_1071_227819.gif

I've been doing some work with the 80 column mode.  The results are in the video above and in the attached zipped folder.  RUN "DSK1T80XB" will start it up.  The docs are in a PDF.  This has only been tested with Classic99.  You need to enable the 80 column hack.  If this does not work with the F18A then I will need to know a little more in order to modify it so it does.

 

Omega, here is what you have been wishing for! (See your post #10)

 

Forgot to mention that occasionally the XB program starts with a bogus error message.  Just RUN it again and it should go the second time.  

Attached Files


Edited by senior_falcon, Tue Oct 31, 2017 9:58 PM.


#21 --- Ω --- OFFLINE  

--- Ω ---

    TI-Runner

  • 10,689 posts

Posted Wed Nov 1, 2017 9:25 AM

SA-Weeeeeet!!!   I'll be playing this winter for sure!  

 THANK YOU!        After 30+ years one of my dreams is FINALLY fulfilled!   :thumbsup:  :thumbsup:  :thumbsup:  :thumbsup:  :thumbsup:  :thumbsup:



#22 --- Ω --- OFFLINE  

--- Ω ---

    TI-Runner

  • 10,689 posts

Posted Wed Nov 1, 2017 10:58 AM

BTW - Nice job on the manual!

 

 

 

Attached Files



#23 senior_falcon OFFLINE  

senior_falcon

    Dragonstomper

  • Topic Starter
  • 958 posts
  • Location:Lansing, NY, USA

Posted Wed Nov 1, 2017 8:07 PM

Can you test whether this actually works with the F18A?



#24 Asmusr OFFLINE  

Asmusr

    River Patroller

  • 2,489 posts
  • Location:Denmark

Posted Wed Nov 1, 2017 11:35 PM

Can you test whether this actually works with the F18A?

 

It works with JS99er.net, which has an almost complete emulation of F18A.



#25 Tursi OFFLINE  

Tursi

    River Patroller

  • 4,844 posts
  • HarmlessLion
  • Location:BUR

Posted Thu Nov 2, 2017 9:41 AM

Super awesome! Watching that took me back to the first time I saw the Missing Link demo. :)




0 user(s) are browsing this forum

0 members, 0 guests, 0 anonymous users