Jump to content
IGNORED

TI Basic Interpreter Documentation


Toucan

Recommended Posts

This weekend I plan on scanning in the 2 TI Basic Interpreter System books that I have. Now, I know we need a copy of the Greenburg book, but what about the other one titled, "Specification of a TI standard of the BASIC Language"? Has that been scanned in already?

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

It's definitely interesting to see from this document how 99/4 TI BASIC came to be, and then what was added to make Extended BASIC, and then what went into the 99/8's Extended BASIC II - each a superset of the previous, but each very much defined by this standard.  Equally interesting is what was defined by the standard but not used in any of the Home Computer BASICs.  Some make sense (the keyed file stuff that was used on the 990) but the values returned by CALL ERR I found interesting.  Extended BASIC gives only a passing definition of the error severity ("this value is always 9") but the standard had several possible values for this.  Thanks *very much* for sharing this with us!

  • Like 1
Link to comment
Share on other sites

After reading thrugh this, it becomes quite obvious that this BASIC was NOT for a Dimension 4 or a TI-99/4. It expected an 80-column, Model 911 VDT, had numerous hooks that would have connected to TI's TX operating system (to include all 15 XOPS), and it was expecting a full 64K of system memory space in the form of RAM. All of this tells me that the two BASIC specification documents go together though, as the first document posted provided the required framework for TI BASIC on all machines, whereas this second document specified TI BASIC on some flavor of the TI-990. Since the first specification applied to anything developed at TI using the BASIC language and enforced high-level compatibility, the fact that folks conflated the Microsoft Assembler development of BASIC for a professional system (a TI-990) with the internal work on the GPL-based BASIC in the Dimension X/99/4 systems is quite understandable. It is even likely that there were instances where Mr. Greenberg talked to the consumer team to iron out potential differences between the two implementations, all in the effort of maintaining the enforced conformity between system implementations. That would also explain the recollections of having seen him once or twice during the development process, as he wouldn't have been tied to that team, but he would have had to coordinate some specifics of what he was doing on the other side (the 990 side) with them.

  • Like 3
Link to comment
Share on other sites

This is interesting:

 

Quote

The main complication in the stack flushing algorithms is

that, while most control operations work in LIFO manner, FOR
loops have an extended range. That is, a FOR loop can
contain GOTOs (and other types of transfers) that may or may
not leave the range of the FOR-block. When transfer is made
out of a FOR-block, the user may or may not intend to return
to the loop. The stack entry is therefore left on the stack
until it can be determined that the user probably does not
want to transfer control back into the loop . This can be
inferred whenever the user RETURNs, FNENDs, or SUBEXITs to
an entry earlier in t he stack , and also whenever the same
FOR-loop is re-executed at its beginning.

 

It seemed some kind of logic had to be implemented to account for GOTOs which may prematurely exit a FOR-loop.  I was always very careful not to leave unresolved FOR-loops like this in my programs, though I am certain I did by accident without a second thought because, as demonstrated below, this logic is implemented in TI BASIC:

 

10 FOR I=1 TO 10
20 IF I=5 THEN 40
30 NEXT I
40 FOR I=11 TO 20
50 NEXT I

When RUN, this completes without error.  Changing line 20 to a GOTO instead of an IF-THEN also does not elicit an error.

 

Similarly, this runs without error:

10 FOR I=1 TO 10
20 IF I=5 THEN 40
30 NEXT I
35 STOP
40 X=1
50 GOTO 30

 

These are bad and neither actually executes.  Each NEXT appears to be paired with a preceding FOR during scan and both programs produce a * FOR-NEXT ERROR.

10 FOR I=1 TO 10
20 IF I<5 THEN 40
30 FOR I=11 TO 20
40 NEXT I
10 FOR I=1 TO 10
20 IF I=5 THEN 40
30 NEXT I
35 STOP
40 FOR I=11 TO 20
50 GOTO 30

 

During Static Scan:

Quote

5. Check for properly nested FOR loops and function
DEFs

  • Like 1
Link to comment
Share on other sites

5 hours ago, kl99 said:

Awesome. Big effort from your side to preserve these documentation. Thank you so much. This allows closing down the rumours on the involvement of Microsoft in TI Basic for the TI-99.

Need to read this in Detail.

 

After reading the Greenberg document, I had these questions:


1. Is Greenberg writing as the author of the BASIC interpreter source? Or just a consultant on the documentation?
2. How many ideas did he bring in from other BASIC interpreters?
3. When did DX BASIC become a product?
4. Did Greenberg write both documents?
5. Why no Section I of the Greenberg document?

 

Ideas about DX BASIC in general

 

From bitsavers, I see the BASIC 4.0 manual in 1983.

http://www.bitsavers.org/pdf/ti/990/basic/

 

 

 

Since the Feb 78 TI-990 catalog has Item 243 BASIC in an essentially finished form, the June 1978 Specification
is a description written long after the DX10 BASIC shipped. Item 244 Business BASIC has a different choice of features from the spec (see Subsetting p.160)

 

http://www.bitsavers.org/pdf/ti/990/brochures/990_Computer_Family_Catalog_Feb78.pdf

 

The Mar77 brochure also offers Multiuser BASIC (along with FORTRAN IV, COBOL, and assembly language.)

 

http://www.bitsavers.org/pdf/ti/990/brochures/

 

Two hypotheses about Greenberg:

  1. Greenberg wrote a new BASIC interpreter described in his source documentation.
  2. Greenberg consulted on system documentation to support a extension or a port of the existing DX BASIC.

 

  • Like 2
Link to comment
Share on other sites

On 2/21/2020 at 8:45 AM, FarmerPotato said:

 

 

 

Two hypotheses about Greenberg:

  1. Greenberg wrote a new BASIC interpreter described in his source documentation.
  2. Greenberg consulted on system documentation to support a extension or a port of the existing DX BASIC.

if he consulted on a port, I feel, there would be more reference to what was being ported and why the direction was taken. this reads in a more straight forward fashion, little justifications. More like, maybe, TI handed him the 990 code and said, modify this and do it this way with these tools and we want it to look like this when your done.

 

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