Jump to content
IGNORED

TI professional computer (not ti-99) for now


Recommended Posts

CR would not be needed to define backspace. 

 

On this DOS/WEB F83  CR is defined as CRLF  like this:

 

: CRLF   13 EMIT  10 EMIT    #OUT OFF   1 LINE# +! ; 

 

CR is a DEFER word and it is "assigned" the action of CRLF.

 

I think F83 has a lot of DEFER words. This means you can change what they do for different machines easily. 

 

Backspace for an ansi terminal is just  8 EMIT  and the cursor goes back one character. 

 

  • Like 3
Link to comment
Share on other sites

16 hours ago, TheBF said:

CR would not be needed to define backspace. 

 

On this DOS/WEB F83  CR is defined as CRLF  like this:

 

: CRLF   13 EMIT  10 EMIT    #OUT OFF   1 LINE# +! ; 

 

CR is a DEFER word and it is "assigned" the action of CRLF.

 

I think F83 has a lot of DEFER words. This means you can change what they do for different machines easily. 

 

Backspace for an ansi terminal is just  8 EMIT  and the cursor goes back one character. 

 

I'll test that for going back one position...BUT, will it leave a CRLF behind... well see 

Link to comment
Share on other sites

Yes to make an editor style backspace you usually need to backspace twice because you usually emit a "space" on top on the existing character which moves the cursor forward.

Link to comment
Share on other sites

On 7/29/2024 at 1:34 PM, GDMike said:

But I didn't like the word okay being presented at the end of the line, as the CR routine leaves the ok.

 

On 7/30/2024 at 4:16 PM, GDMike said:

Yes I saw that when I did the "see do". But realized later the "do loop leave" is proper. 

But neither resolved my issue of removing the"ok" when this particular loop is completed. 

I do notice a CR is happening but I couldn't find out where it was in a definition for the backspace. 

 

CR does not issue “ok”. That is done by QUIT , the top-level infinite loop that awaits a line of text and calls INTERPRET , an indefinite loop that terminates at the end of the line only to wind up back in QUIT to issue “ok” and CR before awaiting the next input line.

 

What you want may require you to write your own infinite/indefinite input loop that just calls INTERPRET without the “ok” and CR .

 

...lee

Edited by Lee Stewart
correction
  • Like 2
  • Thanks 1
Link to comment
Share on other sites

47 minutes ago, Lee Stewart said:

 

 

CR does not issue “ok”. That is done by QUIT , the top-level infinite loop that awaits a line of text and calls INTERPRET , an indefinite loop that terminates at the end of the line only to wind up back in QUIT to issue “ok” and CR before awaiting the next input line.

 

What you want may require you to write your own infinite/indefinite input loop that just calls INTERPRET without the “ok” and CR .

 

...lee

Right...I didn't have time today, celebrating a bday, but I'll try again tomorrow.. after cutting the Grass...ok...I'll try to squeeze it in..

  • Like 1
Link to comment
Share on other sites

To show what Lee was talking about Mike,  I de-compiled F83 QUIT and re-typed/formatted it. There's 'ok' lookin' at us.

 

\ f83 quit
: QUIT
  BEGIN
     SP0 @ ' TIB !
     BLK OFF
     [COMPILE] [
     RP0 @ RP!
     STATUS
     QUERY RUN
     STATE @ IF ." ok" THEN
  AGAIN ;

 

Query gets text into the terminal input buffer 

  : QUERY
    TIB 80 EXPECT
    SPAN @ #TIB !  
    BLK OFF >IN OFF ;

 

For some reason STATUS is just DEFERRED CR.   

RUN seems a bit complicated. (?) 

: RUN
    STATE @
    IF ]  STATE @ NOT
          IF INTERPET
          ELSE INTERPRET
          THEN
     THEN ;

 

 

Camel Forth Quit is similar but simpler

: QUIT     ( -- )
      RP0 RP! 
      L0 LP !
      SOURCE-ID OFF
      [COMPILE] [
      BEGIN
        TIB DUP 52 ACCEPT SPACE
        INTERPRET
        STATE @ 0= IF  ."  ok"  THEN CR
      AGAIN ;

 

Now you are learning about what's behind the Forth curtain.

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

Posted (edited)

I found another basic language. I've yet to figure out what it is but it says basic. 

And I found a program on it that is some kind of spreadsheet.

And some of the commands are locate which I couldn't find before, as well as line input. 

Two important items I needed in order to do anything with writing a program.

Color is the other one. 

If I could adapt that into forth I might be able to do something in forth.

 

IMG_20240807_164743856_HDR.jpg

IMG_20240807_165433360_HDR.jpg

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

2 hours ago, GDMike said:

@TheBF, I just came across this..

IMG_20240807_161011906.jpg

IMG_20240807_161022324.jpg

IMG_20240807_161028356.jpg

IMG_20240807_161042885.jpg

IMG_20240807_161046805.jpg

IMG_20240807_161111240.jpg

IMG_20240807_161115777.jpg

IMG_20240807_161410867.jpg

Yes these are the ANSI terminal codes for a terminal like a VT100.  If your TI DOS responds to those codes and F83 is passing them to the right screen output routine in the OS then you can control the cursor.

BUT  if it is using the BIOS ROM routines then these won't work.  

 

You had the beginning of that with the code that was ESC[   

Notice how all the ANSI code begin with "ESC[".   Those two characters <escape> and '['  tell the terminal to interpret the following data and us it to control the terminal. 

 

On my RS232 Forth I use a VT100 emulator (Teraterm) and when Forth boots it auto loads the following file called DSK1.VT100. 

It creates a tiny markup language so I can remember how to control the terminal with words. 

Each of these words just sends ESC[ and the correct text to do the thing that needs doing. 

 

This will make more sense to you now. 

CR .( VT100 terminal control, [0,0] Home coordinates  May 2020 )
DECIMAL
\ type 'n' as a two digit number in base 10, with no space
: <##>   ( n -- )
         BASE @ >R                   \ save radix
         0 <#  DECIMAL # #  #> TYPE  \ convert to 2 digits & print
         R> BASE ! ;                 \ restore radix

\ markup language for terminal control codes
\ : <ESC>   ( -- )   27 EMIT ;
: <ESC>[  ( -- )   27 EMIT  91 EMIT  ;
: <UP>    ( n -- ) <ESC>[ <##> ." A" ;
: <DOWN>  ( n -- ) <ESC>[ <##> ." B" ;
: <RIGHT> ( n -- ) <ESC>[ <##> ." C" ;
: <BACK>  ( n -- ) <ESC>[ <##> ." D" ;
: <HOME>  ( -- )   <ESC>[ ." H"   0 0 VROW 2! ;

\ define Forth words using markup words
: PAGE    ( n -- ) <ESC>[ ." 2J"  <HOME> ;
: AT-XY   ( col row --)
          2DUP VROW 2!  \ store col,row
          <ESC>[ 1+ <##> ." ;" 1+ <##> ." f" ;

Notice on AT-XY Forth uses 0,0 as home but ANSI uses 1,1 so I have to 1+  the col and row inputs to AT-XY 

 

 

 

  • Like 2
Link to comment
Share on other sites

Okay yeah I got a little confused earlier with this but I think I tried this and ended up with a lockup and I know that the driver ansi.sys it's not existent in this version of DOS. 

But let me try this again thanks

Link to comment
Share on other sites

13 minutes ago, GDMike said:

Okay yeah I got a little confused earlier with this but I think I tried this and ended up with a lockup and I know that the driver ansi.sys it's not existent in this version of DOS. 

But let me try this again thanks

I think you beat it up pretty hard and it didn't work. 

There are a couple of Camel99 gotchas in that code I showed. It won't work as is on F83.

 

Yes you will need to remove all the reference to VROW.  CODE below should compile on F83

: <HOME>  ( -- )   <ESC>[ ." H"  ;


: PAGE    ( n -- ) <ESC>[ ." 2J"  <HOME> ;
: AT-XY   ( col row --)
          <ESC>[ 1+ <##> ." ;" 1+ <##> ." f" ;
  • Like 1
Link to comment
Share on other sites

Posted (edited)

Oh yes, I see Vrow...hmm..

Well basic is giving me what I'm looking for at this point..

Except nothing to showing me how to change the screen color only the character colors...

But I'm going to look at the example file that they have on the disc and see if it has any code pertaining to screen color.

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

Some basic 1.2 commands I found that work here.

Pset - place a pixel of any color 0-7 on screen

Pset(650,10),1 places a blue pixel on the screen 

 

X$=time will retrieve the current time

 

Line (10,10)-(200,20) will place a line on the screen of the correct color of the previous color set 

 

System - typing this word will exit the program basic back to DOS 

 

Loading a basic program 

Load "prgm.bas"

Or

Pressing F5

LOAD"  is displayed 

Or

F$="prgm.bas"

Load f$

 

Check memory availability 

Use f=fre(0)

Print f   61042

 

  • Like 2
Link to comment
Share on other sites

Posted (edited)

Using the command in basic called pset 

I'm wanting a TI logo.

And since pset allows any pixel dot to have its own color, 0-7 

Any artist out there want to try a crack at this.

I'm guessing there's eight pixels per char ?

And there's 80 characters per line?

And then what color to make the Texas and i, and bullet logo? 

I would like blue/yellow mix?

 

Edited by GDMike
Link to comment
Share on other sites

35 minutes ago, GDMike said:

Using the command in basic called pset 

I'm wanting a TI logo.

And since pset allows any pixel dot to have its own color, 0-7 

Any artist out there want to try a crack at this.

I'm guessing there's eight pixels per char ?

And there's 80 characters per line?

And then what color to make the Texas and i, and bullet logo? 

I would like blue/yellow mix?

 

Might need that manual. :) 

 

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