Jump to content
IGNORED

Anecdotes On the Creation of TI Logo


pixelpedant

Recommended Posts

Since creating a video on TI Logo and its merits and strengths recently, I've heard back from a couple folks involved with its creation.  And I wanted to collect some key information from interactions with these folks, who contributed such a wonderful piece of software to the TI-99.  Mark Gross and Ed Hardebeck shared their experiences, and these are some of the gems they had to offer, in recollection of TI Logo's creation.  Particularly compelling facts apropos of TI Logo's history are highlighted.  Thanks to them for all of this!  And thanks to Eric Scharff for getting me in contact with Mark Gross. 

 

 

Reminiscences from Ed Hardebeck:

 

Q: Anything you can tell me about your experience of the project?  Did TI provide any specific design requirements?  And was it developed on a TI minicomputer, as TI's internal projects tended to be?  I'd be delighted to hear anything you can tell me about its creation and your experience with it.

 

A: They didn't really except it had to work on the 99/4, the memory expansion was required of course.  Originally it was a big flat black box that sat under the 99/4, bigger than the computer itself.  The project was a joint effort with TI, MIT and the Lamplighter School in Dallas.  The Logo interpreter itself was first written in Pascal by Gary Drescher.  I was an undergrad at MIT when I started on it at the AI Lab Logo Group, later a staff employee.  The first part of my job was to rewrite the Pascal interpreter in assembly language.  Yes this was done on a TI-990 mini-computer which had the same instruction set, and well before we got an actual 99/4.  Mark Gross wrote the turtle graphics, I wrote the sprite stuff and the shape and text editors you showed off.

 

I'm glad you mentioned how the base machine had 256 whole bytes of RAM! (that's bytes kids, not MB or even KB).  Even with the expansion we had to swap in and out chunks of the program (like the editors or the disk io routines) from the cartridge EPROM.  I understand BASIC stored it's programs in the video memory (read/write was arduous), which left it even less graphics to work with.

 

 

Another fascinating observation from Ed Hardebeck:

 

After this my next job was working on Logo for the Apple II.  I developed Sprite Logo, we made a hardware display board for the Apple II that contained a TMS9918A processor. This guy has one https://www.bluerwhite.org/2014/03/boxing-sprite-logo/ https://www.bluerwhite.org/2014/04/lcsi-sprite-card/ (so do I still), and even got it running https://www.bluerwhite.org/2014/07/running-sprite-logo/

 

Sprite Logo ("second-system syndrome" aside) I think was much better.  All 32 sprites were turtles and could draw, even while moving.  You could command them in (more-or-less) parallel with TELL, ALL and EACH commands.  For more capabilities with the sprite shapes I made the SNAP command which copied the bitmap under the sprite into its shape, and STAMP which copied the shape to the bitmap underneath.  Combined with motion, there were a lot of interesting things that could be done.

 

 

And yet more reminiscences from Ed Hardebeck:

 

* The first time I went down to Dallas to meet with TI, file transfer consisted of bringing the 990 disk pack on the flight as carry-onThe office was the same one where they had the sound studio for recording for the Speak-and-Spell.  When we got there no one was there to meet us, but the door had one of those mechanical push button combination locks.  To kill time we started iterating combinations and within half an hour were in.  Probably good we didn't get shot.

* The TI liason for the project was originally the infamous Al Riccomi, you can google that.  I heard he tried to run the project from jail for a time.

* TI-Logo had a "demons" feature that ran lists of Logo code asynchronously (I don't remember if it made it into the final product).  Mark Gross who implemented it had a PODS (Print Out DemonS) command to list them.  So he added a PEAS command that just printed "Work for peace every day".  When we got the EPROMS back from TI, the command instead printed out "Work for Reagan every day".  A little trolling from a bit more innocent days of red/blue state rivalry.

 

And some reminiscences from Mark Gross:


Three of us (mostly) worked on the project at the MIT Logo Lab in ~1979-1980.   Seymour Papert had contracted with TI to produce Logo for their home computer — his connection was probably through the Lamplighter School in Dallas, which (must have) had a Logo project in their classrooms.  ("A child is not a vessel to be filled but a lamp to be lit.")  Gary Drescher wrote the interpreter (Ed may have worked on it too) and Ed and I designed and wrote the graphics system. Danny Hillis, who was part of our community at the time, had thought about sprites earlier and provided some input on the design of the graphics system, although I think mostly we just thought and argued about how we'd like to access the capabilities of the hardware.  We were all recent graduates with almost no professional software development experience (I had worked for a brief time on Ray Kurzweil's reading machine for the blind, but that was an undergraduate internship).  The essentials of a Logo interpreter was familiar ground based on previous implementations for other hardware, but the graphics system was new territory.  Even today I'm a bit surprised we were able to deliver on Seymour's promise to TI.  

 

Your video is spot on in pointing out the more sophisticated (and powerful) language design of Logo vs. BASIC (i.e., functional language, lists as data structures, etc.) and highlighting that Logo is (far) more than turtle graphics.  For years, as a faculty member, I'd get students who'd experienced Logo in 3d grade, but who'd never gotten past FD 10; RT 90.   And, the TI 99/4 hardware indeed had special graphics features; I think we were all frustrated with the way the hardware was packaged in the end.  I still find it hard to believe that TI produced a keyboard without a "delete" (rubout) key.  No doubt there were reasons.

 

And indeed, three longhaired hippie programmers from MIT meets corporate HQ in Dallas (and for a while Lubbock, where apparently hardware development was actually taking place) was beyond weird.  We'd do most of our work in Cambridge but we'd be flown down to Texas for meetings and for testing on their still-under-development hardware in Lubbock. Late night programming in an open-office with armed uniformed security guards ... talk about creativity under constraints.  

 

 

Finally, here's a lovely thing shared by Ed.  One of the "I didn't work on the 99/4" buttons done up as an inside joke among TI folks back in the day:

 

 

image.thumb.png.0d56b83d2503408fecbc77e314c0dcfd.png

 

 

We are richer in our TI-99 development tools, thanks to the work of Ed and Mark and others who contributed to the TI Logo project. 

 

And we are are richer in our knowledge of its origins today, thanks to their recollections. 

 

 

 

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

That is so cool, thanks for providing these tidbits!

I’m also very impressed with your video, you can really tell a lot of work went into that. Thank you for that.

 

Wonder if there are any TI Logo 2 design documents available and/or did the source code survive?

Would also be very interested in memory locations used for the interpreter and where in memory logo code is stored.

 

  • Like 3
Link to comment
Share on other sites

5 hours ago, pixelpedant said:

Sprite Logo ("second-system syndrome" aside) I think was much better.  All 32 sprites were turtles and could draw, even while moving.  You could command them in (more-or-less) parallel with TELL, ALL and EACH commands.  For more capabilities with the sprite shapes I made the SNAP command which copied the bitmap under the sprite into its shape, and STAMP which copied the shape to the bitmap underneath.  Combined with motion, there were a lot of interesting things that could be done.

Unbelievable. I'd love to see this!

  • Like 3
Link to comment
Share on other sites

Another absolutely fantastic TI Logo anecdote shared with me by a TI Legend:

 

 

 

From Paul Urbanus:

 

We (Jim Dramis) and I used TI Logo's live tile editor to create the wire-frame tumbling asteroids in Parsec. It was really cool to have a simple Logo procedure flip through the various tumble 'views' of the asteroids while live editing the definitions. This made refining the asteroids' animation shapes easy and fun.

 

 

 

I really think if more people gave TI Logo a try, they would have realised how good it is as a tool for designing sprite and tile assets and dumping them to disk, and this would have made it the standard tool for doing that. 

 

But evidently Dramis and Urbanus realised this from the get-go!

 

  • Like 12
Link to comment
Share on other sites

53 minutes ago, digdugnate said:

I'm a touch younger than most (mid-40s)

Same. I went to a Montessori school for a year before going to the regular public elementary, and it had probably one of the first computer labs in town, chuck full of TIs.   There was even a robotic turtle that we'd have move around. 

  • Like 2
Link to comment
Share on other sites

2 hours ago, senior_falcon said:

How does LOGO2 differ from LOGO? Is the manual for LOGO applicable to LOGO2?

Broadly, yes.  With very small exceptions, Logo I programs run identically under Logo II. 

 

Logo II's biggest addition is support for constructing, loading, and playing sound lists for the purpose of playing music (where Logo I just has BEEP and NOBEEP). 

 

It also adds support for magnified sprites, joystick input, and a collection of other minor expansions on the Logo feature set. 

 

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

The BYTE Magazine review of several Logo implementations found in this issue...

 

https://vintageapple.org/byte/pdf/198208_Byte_Magazine_Vol_07-08_Logo.pdf

 

...concludes with, “Mr. Bynum also told me about about a second version of TI Logo that will be available before the end of the year. This version will include such enhancements as music capability, double-size sprites, a workspace almost twice as large as that of the first version, more extensive documentation, and the ability to print procedures via the RS-232C port. In addition, the new version will no longer "hang up" when it runs out of workspace, and BUTFIRST of a single-letter word will be an .empty word. (All other criticisms given here will still be valid.) These improvements will correct many of the current faults of TI Logo.”

 

The entire issue is more or less dedicated to Logo, with several informative articles. 

 

Interestingly (and apparently coincidentally), Steve Ciarcia's Circuit Cellar article, "High Resolution Sprite-Oriented Color Graphics" describes his design of a board for the Apple II utilizing a 9918a VDP, which he described at great length and in very positive terms (without ever mentioning the 99/4a.) 

Edited by Reciprocating Bill
  • Like 3
  • Thanks 1
Link to comment
Share on other sites

3 hours ago, pixelpedant said:

Broadly, yes.  With very small exceptions, Logo I programs run identically under Logo II. 

 

Logo II's biggest addition is support for constructing, loading, and playing sound lists for the purpose of playing music (where Logo I just has BEEP and NOBEEP). 

 

It also adds support for magnified sprites, joystick input, and a collection of other minor expansions on the Logo feature set. 

 

my copy of the TI LOGO manual refers to both versions, highlighting some differences.

One of the programs in the LOGO Sampler package (probably DESIGN, but I am not sure now), requires a modification (actually to enter a command interactive mode) in order to run in TI LOGO II, while of course runs as-it-is in LOGO I.

Edited by Count9929A
added the possible name of the program
  • Like 6
  • Thanks 2
Link to comment
Share on other sites

On 4/21/2022 at 4:37 PM, pixelpedant said:

I briefly showed what this kind of "live" editing looks like in my video, here.

I really liked the video, and all your videos (especially the PEB video - I LIKE the fan noise! Although my wife has always said it sounds like a plane taking off). I’m gonna have to pull out Logo again since I haven’t used it since my now-middle-aged kids were in elementary school. I forgot how much it can do, and I guess I never paid attention to how fast and smoothly it handles graphics and sprites. (And you also whetted my appetite to try some XB fancy music programming too).

  • Like 2
Link to comment
Share on other sites

  • 1 month later...
  • 4 months later...

I was very interested in trying to get Sprite Logo running in Mame's apple2 driver but I think it needs a dump of the 2k 2516 rom on the Sprite Logo board.

 

Studying the Sprite Logo board from pictures on bluerwhite.org it looks very unusual from most apple2 cards in that it doesn't use IOSEL or IOSTB, instead using the INH line as far as I can tell.

 

I was able to get it to do something but it doesn't run properly.  It appears to upload the font to the card and sets up screen memory then crashes.

 

I've always been fascinated by Logo, and especially Logos that had sprites.  It's surprising how big Logo was back in the early 80s.

 

It's interesting to compare the different versions of LCSI Logo that ran on TMS9918 chips:

 

LCSI Sprite Logo for the Apple II (had a TMS9918 on a Sprite Card)

MSX Logo

Coleco Adam Smartlogo

TI 99 Logo

 

I've been able to run most of these inside MAME.

(logo needs a 32k memory expansion in the PEB)

 

./mame ti99_4a  logo2  -ioport peb -ioport:peb:slot2 32kmem

./mame ti99_8 logo2     (the ti99_8 driver runs logo without adding the peb)

 

 

./mame adam smartlog

 

(The only msxlogos that I could find are NL and Spanish (Philips))

./mame nms8245 msxlogo            (msx2 running an msx1 cart)

./mame canonv20 msxlogo            (msx1 running an msx1 cart)

 

It's a little difficult to use the Spanish MSX-Logo as all the keywords are in Spanish,

left = izquierda/iz   right = derecha/de  setspeed = fvel  forward = avanza/av   setcolor = fct

makeshape = edfi

 

They are all very similar, yet they have slightly different syntax and capabilities.  For example, the TI-99 version has tile editing support, but the Adam SmartLOGO doesn't use tiles, instead using the TMS9918 full color mode (no out of ink errors).

Edited by Golden Child
  • Like 3
Link to comment
Share on other sites

11 hours ago, Golden Child said:

It's a little difficult to use the Spanish MSX-Logo as all the keywords are in Spanish,

left = izquierda/iz   right = derecha/de  setspeed = fvel  forward = avanza/av   setcolor = fct

makeshape = edfi

Note that the TI implementation of TI Logo includes several language variants: Dutch, French, German, Italian, and Argentine Spanish are all known to exist. French, German, and Argentine Spanish exist as Logo I cartridges (I am only missing the French variant) and all five varieties exist in Logo II form (I am only missing the German one here). Several others were planned, but were never implemented.

  • Like 1
Link to comment
Share on other sites

11 hours ago, Golden Child said:

It's a little difficult to use the Spanish MSX-Logo as all the keywords are in Spanish,

left = izquierda/iz   right = derecha/de  setspeed = fvel  forward = avanza/av   setcolor = fct

makeshape = edfi

Seems like the multiple localized implementations of LOGO would make it not a very portable language.  I would assume (hope) saved files are tokenized so when saved in Spanish they load up in English as expected.  That would only leave printed programs in question.

  • Like 1
Link to comment
Share on other sites

At least in TI LOGO, nothing is tokenised.  It's all plaintext.  The only exception is graphics data, which is stored ready to load directly into VDP. 

 

This makes it more or less the precise opposite of TI BASIC.  Which stores program code in a format ready to be loaded directly into VDP, but with graphics and sound data usually contained within that as plaintext strings (inasmuch as CALL CHAR patterns are usually quoted strings and CALL SOUND arguments are usually unquoted strings, in TI BASIC). 

  • Like 2
Link to comment
Share on other sites

For fun, I thought I'd compare the two version of MSX-Logo from NL and ES.

 

Doing a hexdump and writing each to a file:

 

hexdump -C MSXLOGO.ROM > nl.txt
hexdump -C MSXLOGO_ES.rom > es.txt

 

then doing a diff:

 

diff --side-by-side --width=170  nl.txt es.txt

 

and what's interesting is that the two files are virtually identical except for a few ranges, basically the error messages and the language keywords.

 

It looks like they actually made the keywords shorter than the english version and left the original English part as well as french that wasn't overwritten in at the end.

 

The last NL keywords before the English keywords (in alpha order) are zetyv and zin.  The last keywords in the ES rom before the English keywords are actually french keywords that haven't been overwritten (in alpha order are vit vitesse vitx vity vrai vt).

 

English keywords that aren't overwritten are putsh px quotient random rc)

 

00007d40  6f 70 7a 65 74 74 65 6b  73 74 7a 65 74 76 7a 65  |opzettekstzetvze|        |    00007d40  65 3f 76 69 73 69 62 6c  65 3f 76 69 74 76 69 74  |e?visible?vitvit|
00007d50  74 76 61 61 72 74 7a 65  74 78 7a 65 74 78 76 7a  |tvaartzetxzetxvz|        |    00007d50  65 73 73 65 76 69 74 78  76 69 74 79 76 72 61 69  |essevitxvityvrai|
00007d60  65 74 79 7a 65 74 79 76  7a 69 6e 68 70 78 71 75  |etyzetyvzinhpxqu|        |    00007d60  76 74 75 63 74 70 75 70  75 74 73 68 70 78 71 75  |vtuctpuputshpxqu|
00007d70  6f 74 69 65 6e 74 72 61  6e 64 6f 6d 72 63 72 65  |otientrandomrcre|        |    00007d70  6f 74 69 65 6e 74 72 61  6e 64 6f 6d 72 63 72 65  |otientrandomrcre|

 

I was able to translate a bunch of the NL keywords into english, aided by an online translator and finding a keyword that printed out all the primitives in a list, "primitieven".

 

So if you had a translation table, porting to a different language should be just 1:1 replacing keywords.

 

NL --> English

 

achteruit/at = back
afstand = distance
allemaal = all
drukaf = print
ding = thing
eind = end

elk = each
ev = edit sprite  (edit vormn)  (ev 36 will edit first turtle sprite pointing up)
eerste = first
rechts/re = right
links/li = left
richting = heading
penneer/pn = pen down
penop/po  = pen up
punt = point (draw a dot at a point eg punt [ 10 10 ]
kleursp = set sprite color
spkleur = get sprite color
vooruit/vt = forward
vormn = (form for shape, get shape number)
wie = who
vaart = speed
vals = false
waar = true
wacht = wait
zetv = setshape (set vormn)
yvaart = yvel
zeg = tell
zetpk = setpencolor
zetvaart = setspeed
zetx = setx
zety = sety
sw = turtle hide
ts = turtle show
ms = clear graphics
tw = clear text  (text wipe?)
ss = clear text and graphics
kleurscherm = background color
kleur.over = color of dot under turtle
etc:

 

This would actually be a pretty good way to learn a little bit of a foreign language, at least a few words anyway.

 

 

 

Screenshot from 2022-11-03 15-48-49.png

Screenshot from 2022-11-03 18-52-29.png

Edited by Golden Child
  • Like 3
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...