Jump to content
IGNORED

TurboForth


GDMike

Recommended Posts

im kinda stuck here, id like to do something with the Original SuperCart BUT i can't access it with TF in the cart. port. Anyone have an idea, otherwise im doing it in E/A, ( and im having issues at the moment with that). BUT TF is just more fun! thx in advance.

The program listed is about setting up Text mode but its having an issue with defining the character set. Text mode works fine, but it doesnt like my set.

IMG_20190623_131707726.jpg

IMG_20190623_131408817.jpg

IMG_20190623_131627697.jpg

Edited by GDMike
add photos
Link to comment
Share on other sites

4 hours ago, GDMike said:

im kinda stuck here, id like to do something with the Original SuperCart BUT i can't access it with TF in the cart. port. Anyone have an idea, otherwise im doing it in E/A, ( and im having issues at the moment with that). BUT TF is just more fun! thx in advance.

The program listed is about setting up Text mode but its having an issue with defining the character set. Text mode works fine, but it doesnt like my set.

    <snip>

You are correct about TurboForth not coexisting with the SuperCart. You could use TI Forth because it does not use cartridge space, but, then of course, it is not TurboForth.

 

As to your ALC, we cannot really see everything that is going on without seeing your code for “CHARSO”.

 

For starters, you are not storing the correct value for VR01 in >83D4.  You are storing >01, not the >F0 you intend. Here is one way you can do it:

       LI   R0,>F001     set up R0 backwards for VR01 to accomodate next byte move
       MOVB R0,@>83D4    move high byte (>F0) to >83D4
       SWPB R0           correct R0 for next call (>01F0)
       BLWP @VWTR        call VWTR to set VR01 to >F0

Also, the following code is superfluous because the color table is not used in Text mode. In fact, it is located in the default Text mode screen image!:

       LI   R0,>0380
       LI   R1,>1700
MORE   BLWP @VSBW
       INC  R0
       CI   R0,>039F
       JLT  MORE

...lee

Edited by Lee Stewart
Commented first ALC block for clarity.
Link to comment
Share on other sites

there musta been a typo, sorry..VR0 was actually right with >01F0 sorry bout that...and my colors, even though i received the correct combination, is in fact out of place as you pointed out and i completely forgot about!! thanks, that may be the whole problem!!!

Link to comment
Share on other sites

18 minutes ago, GDMike said:

there musta been a typo, sorry..VR0 was actually right with >01F0 sorry bout that.

I am not sure we understand each other. You, indeed, set up VR01 (VDP Register 1) correctly, but you stored the wrong byte in >83D4. [See changes in my previous post.]

 

...lee

Edited by Lee Stewart
Point to correction of previous post.
Link to comment
Share on other sites

23 minutes ago, GDMike said:

... my colors, even though i received the correct combination, is in fact out of place as you pointed out and i completely forgot about!! thanks, that may be the whole problem!!!

That should not be the problem because you are merely writing >17 into 32 contiguous character locations of the screen image and immediately overwriting those bytes with blanks with the code that follows.

 

...lee

Link to comment
Share on other sites

And <shameless plug> if you want to use files for source code you could use CAMEL99 Forth which leaves the cartridge space open as well. ?

 

If you need some help with that I am happy to help.  Lee's eagle eyes are much better than mine however.

 

Switching to TEXT mode happens when it boots like the other the Forths but currently you need to use E/A Editor on your disk when working with real hardware so its not as fun as an integrated editor but times are pretty fast.

 

There is library file for loading and saving fonts that I worked on with Lee's oversite. 

 

You can also load fonts at compile time as well like the hidden file shows. 

It remembers the dictionary pointer, compiles the data into CPU RAM, blits the data it into VPD RAM then restores the old dictionary pointer.

This might let you try your idea ?

 

Spoiler

\ SANS Serif SOURCE code needs only CAMEL99 KERNEL

HEX
CR
HERE   ( -- addr)             \ the data starts HERE :-)
 007C , 7C7C , 7C7C , 7C00 ,  1E EMIT
 0000 , 0000 , 007C , 7C00 ,  1F EMIT
 0000 , 0000 , 0000 , 0000 ,  .(  )
 1010 , 1010 , 0000 , 1000 ,  .( !)
 2828 , 2800 , 0000 , 0000 ,  .( ")
 2828 , 7C28 , 7C28 , 2800 ,  .( #)
 103C , 5038 , 1478 , 1000 ,  .( $)
 6464 , 0810 , 204C , 4C00 ,  .( %)
 2050 , 5020 , 5448 , 3400 ,  .( &)
 3010 , 2000 , 0000 , 0000 ,  .( ')
 0810 , 2020 , 2010 , 0800 ,  ." ("
 2010 , 0808 , 0810 , 2000 ,  ." )"
 0028 , 107C , 1028 , 0000 ,  .( *)
 0010 , 107C , 1010 , 0000 ,  .( +)
 0000 , 0030 , 3010 , 2000 ,  .( ,)
 0000 , 007C , 0000 , 0000 ,  .( —)
 0000 , 0000 , 3030 , 0000 ,  .( .)
 0002 , 0408 , 1020 , 4000 ,  .( /)
 3844 , 4C54 , 6444 , 3800 ,  .( 0)
 1030 , 1010 , 1010 , 3800 ,  .( 1)
 3844 , 0418 , 2040 , 7C00 ,  .( 2)
 7C08 , 1008 , 0444 , 3800 ,  .( 3)
 0818 , 2848 , 7C08 , 0800 ,  .( 4)
 7C40 , 7804 , 0444 , 3800 ,  .( 5)
 3840 , 4078 , 4444 , 3800 ,  .( 6)
 7C04 , 0810 , 2020 , 2000 ,  .( 7)
 3844 , 4438 , 4444 , 3800 ,  .( 8)
 3844 , 443C , 0404 , 3800 ,  .( 9)
 0000 , 3030 , 0030 , 3000 ,  .( :)
 0030 , 3000 , 3030 , 1020 ,  .( ;)
 0810 , 2040 , 2010 , 0800 ,  .( <)
 0000 , 7C00 , 7C00 , 0000 ,  .( =)
 2010 , 0804 , 0810 , 2000 ,  .( >)
 3844 , 0408 , 1000 , 1000 ,  .( ?)
 3844 , 5C54 , 5C40 , 3C00 ,  .( @)
 3844 , 447C , 4444 , 4400 ,  .( A)
 7844 , 4478 , 4444 , 7800 ,  .( B)
 3844 , 4040 , 4044 , 3800 ,  .( C)
 7844 , 4444 , 4444 , 7800 ,  .( D)
 7C40 , 4078 , 4040 , 7C00 ,  .( E)
 7C40 , 4078 , 4040 , 4000 ,  .( F)
 3844 , 405C , 4444 , 3800 ,  .( G)
 4444 , 447C , 4444 , 4400 ,  .( H)
 3810 , 1010 , 1010 , 3800 ,  .( I)
 3C08 , 0808 , 4848 , 3000 ,  .( J)
 4448 , 5060 , 5048 , 4400 ,  .( K)
 4040 , 4040 , 4040 , 7C00 ,  .( L)
 446C , 5454 , 4444 , 4400 ,  .( M)
 4444 , 6454 , 4C44 , 4400 ,  .( N)
 3844 , 4444 , 4444 , 3800 ,  .( 0)
 7844 , 4478 , 4040 , 4000 ,  .( P)
 3844 , 4444 , 5448 , 3400 ,  .( Q)
 7844 , 4478 , 5048 , 4400 ,  .( R)
 3844 , 4038 , 0444 , 3800 ,  .( S)
 7C10 , 1010 , 1010 , 1000 ,  .( T)
 4444 , 4444 , 4444 , 3800 ,  .( U)
 4444 , 4444 , 2828 , 1000 ,  .( V)
 4444 , 4454 , 5454 , 2800 ,  .( W)
 4444 , 2810 , 2844 , 4400 ,  .( X)
 4444 , 2810 , 1010 , 1000 ,  .( Y)
 7C04 , 0810 , 2040 , 7C00 ,  .( Z)
 3820 , 2020 , 2020 , 3800 ,  .( [)
 0040 , 2010 , 0804 , 0200 ,  .( .)
 3808 , 0808 , 0808 , 3800 ,  .( ])
 1028 , 4400 , 0000 , 0000 ,  .( ^)
 0000 , 0000 , 0000 , 7C00 ,  .( _)
 1810 , 0800 , 0000 , 0000 ,  .( ')
 0000 , 3008 , 3848 , 3C00 ,  .( a)
 4040 , 7048 , 4848 , 7000 ,  .( b)
 0000 , 3840 , 4040 , 3800 ,  .( c)
 0808 , 3848 , 4848 , 3800 ,  .( d)
 0000 , 3844 , 7C40 , 3C00 ,  .( e)
 0010 , 2820 , 7020 , 2000 ,  .( f)
 0000 , 3844 , 443C , 0438 ,  .( g) \ 0000 , 3C44 , 3C04 , 4438 ,  .( g)
 4040 , 7048 , 4848 , 4800 ,  .( h)
 0010 , 0010 , 1010 , 1000 ,  .( i) \ 1000 , 3010 , 1010 , 3800 ,  .( i)
 0008 , 0008 , 0808 , 4830 ,  .( j) \ 1000 , 3010 , 1010 , 1060 ,  .( j)
 4040 , 4850 , 6050 , 4800 ,  .( k)
 0010 , 1010 , 1010 , 1000 ,  .( l)
 0000 , 6854 , 5454 , 5400 ,  .( m)
 0000 , 7048 , 4848 , 4800 ,  .( n)
 0000 , 3844 , 4444 , 3800 ,  .( o)
 0000 , 7048 , 4870 , 4040 ,  .( p)
 0000 , 3848 , 4838 , 0808 ,  .( q)
 0000 , 5860 , 4040 , 4000 ,  .( r)
 0000 , 3840 , 3804 , 7800 ,  .( s)
 2020 , 7820 , 2020 , 1800 ,  .( t)
 0000 , 4848 , 4848 , 3400 ,  .( u)
 0000 , 4444 , 2810 , 1000 ,  .( v)
 0000 , 4444 , 5454 , 2800 ,  .( w)
 0000 , 4428 , 1028 , 4400 ,  .( x)
 0000 , 2424 , 241C , 0438 ,  .( y)
 0000 , 7C08 , 1020 , 7C00 ,  .( z)
 0C10 , 1020 , 1010 , 0C00 ,  .( {)
 1010 , 1010 , 1010 , 1010 ,  .( |)
 6010 , 1008 , 1010 , 6000 ,  .( })
 2454 , 4800 , 0000 , 0000 ,  .( ~)

\ load ALL the data into VDP memory, Pattern descriptor table (PDT)

\  data source  1st    PDT adr   #of chars   b/char  VDP write
\ ------------  -----  -------   ---------   -----   ---------
       DUP      1E 8*  800 +       60         8*     VWRITE

DP !     \ restore dictionary space back to HERE
  
\ CR ." abcdefghijklmnopqrstuvwxyz"

 

 

I really need to get an editor finished and working for this darn thing...

 

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

yes, thats something i may wanna explore, camell99..and Lee has another thing over me too, good eyes, focused attention, but i still got the looks! which says a lot with these eyes..but getting back to this deal, ive got to go see what Lee is talking about..i thought he was speaking of setting 40col mode. ive got that working, just not the char def. the e/a book says the def patt table starts at >800 and i multiply 8 for my R2 count value.  i really dont know whybim having so much trouble..i defined my TI logo just fine with chars 0-10...

  • Like 1
Link to comment
Share on other sites

ok, thanks for yalls patience. its my char set after all..i used my TF set that works there...anyway..i guess ill have to do some redefining. i read its like 8x6 ?? i tried 2 different char "A" only one worked in graphics mode...i went back to the basics and did a redef again. thats how i found my prob.

 

but ill keep at it...yep its just me like usual...

 

15613366111791680286726.jpg

IMG_20190623_200209155.jpg

 

Edited by GDMike
Link to comment
Share on other sites

47 minutes ago, GDMike said:

ok, thanks for yalls patience. its my char set after all..i used my TF set that works there...anyway..i guess ill have to do some redefining. i read its like 8x6 ?? i tried 2 different char "A" only one worked in graphics mode...i went back to the basics and did a redef again. thats how i found my prob.

 

but ill keep at it...yep its just me like usual...

     <snip>

Indeed, the font in Text mode is 8 bits high by 6 bits wide, but this includes the 1-pixel space between lines of text and the 1-pixel space between characters (unless you want them to run together). Because the VDP clips the rightmost two bit-columns of each 8x8 character definition in Text mode, you effectively must define 7x5 pixel characters in the upper left or lower left of an 8x8 grid per character. 

 

...lee

Link to comment
Share on other sites

Here is how you might lay out and define the letter ‘A’ in TMS9900 Assembly Code to blank the leftmost pixel column (provides intercharacter space), the rightmost two pixel columns (ignored in Text mode, but must be there, nonetheless), and the bottommost pixel row (provides line spacing):

 

 

image.png.bd6bc82d06bcadd7d064341401d62820.png

 

...lee

Edited by Lee Stewart
Cleaned up graphic.
Link to comment
Share on other sites

I am pretty sure your problem is one of registration. That is why I must be able to look at the code. I can already see one problem in the code for ‘C’—you are missing a comma after the first word, which renders the remaining 3 words as comment and throws off the registration for the remainder of the font by 6 bytes!

 

...lee

  • Like 1
Link to comment
Share on other sites

I'm so glad you asked for that Char file..and saw that typo...

and there she is...while were here, Lee do you see anything weird on my sound byte code..i think its called "CDATA" 

from what i remember it was playing correctly on its first hit, but on its second round it bacame off frequency.

ok kids, what did Lee teach us? quite a bit, its never a loss when He gets ahold of something!! 

IMG_20190624_175519578.jpg

Edited by GDMike
  • Like 2
  • Haha 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...