Email Interview with Harry Wilhelm by Dan Eicher September 2001. Question: How did you get started with the TI? I took a computer course in 1974 and learned to program in Fortran IV, and then did nothing with computers for almost 10 years. A friend got a VIC 20 which I played with a bit and which gave me the bug to get a computer for myself. I didn't have a lot of money to spend on one so when TI pulled the plug on the 4A and the price came down to $49.99 I decided it was time to get one. That was in November or December of 1983. As time went on I added to the system-first a casette recorder, then a 32K matchbox expansion (in console), then a captain's wheel 3 slot expansion box kit which added disk drive capabilities. Then a corcomp RS232 and a Star printer. Later I bought out someone and got an official TI expansion box and color monitor. I added the 32K 16bit bus internal expansion and a Horizon Ram disk with built in RAMBO. The system I use now has the console with speech and 16bit 32K built in. The TI expansion box has 2 half height drives, Ti disk controller, corcomp RS232 interface, Horizon Ram disk in it. How did you make the jump from Basic to Assembler? I worked through the BASIC book that came with the TI and a bunch of Regena's programs in COMPUTE! magazine. I wrote some BASIC programs of my own. Then I got two books on assembly programming: M.S. Morely's book and the COMPUTE! book by Peter Lottrup. Both of these are designed for the MiniMemory and line by line assembler. These books made Assembly language sound interesting, powerful, and challenging. At the time I didn't have an expansion system so the MiniMemory seemed like the way to go. I liked Lottrup's book because he provided a lot of info in how to do graphics. At some point I became interested in writing assembly language subroutines to be called from BASIC programs. After working through the book I wrote 40 column routines for TI BASIC and the MiniMemory cartridge. These were crude, but functional-just what you'd expect from a beginning Assembly programmer. All my early work was done with the MiniMemory, Line by Line Assembler, and a tape recorder. The original EZ-Keys was written with this setup. It was quite a revelation when I got my first disk system and could actually edit the source code!! What gave you the start to want to write TML? It always bugged me that the bit-mapped graphics mode wasn't available to BASIC programmers - after all, other computers of that era such as the Atari gave you access to bit mapped graphics. The textbooks all said it was impossible because of the way the VDP memory was laid out. I started experimenting with different ways to rearrange the VDP memory to free up the areas that are needed for the bit-mapped graphics. After quite a bit of time I was able to get a blank screen and had one subroutine that could plot a pixel anywhere on that screen. Doing that was the fun part. At that point I decided to see how many graphics subroutines could be sqeezed into the low memory area. That's when the real work began on TML. TML allows XB to do some wonderous things, how did you manage to figure out how to get XB to do what you did? Did you have the source to XB? Actually, I'm pretty much clueless about how XB works. My specialty on the TI was finding creative ways to get around my ignorance to achieve the desired results. Most of my programs involve an interrupt driven routine that looks for some condition (usually in VDP ram)and changes data when that condition is found. The memory maps provided with MG Explorer were extremely useful in finding out what goes where in XB. In my experiments that led to TML I found that moving the disk buffer area to a different place in VDP got part of the memory I needed. The next obstacle was that a "garbage collection" would reset a pointer so that strings would overwrite a memory area that was needed for graphics. It took an interrupt driven routine that constantly looks for that pointer being reset. When it is reset the interrupt routine restores the pointer to what I want it to be. I had no idea whether it would actually work, but gave it a try anyway - sure enough, it works fine. Also, it takes an interrupt routine to determine whether the program is running or has broken with . The interrupt routine then sets the appropriate graphics mode. There are a couple of other tricks to get around the fact that the "XB system area" can't be moved, but they are kind of hard to explain, so I won't try. Millions of (especially assembler) programs have been started for the TI, it is a rare individual that was actually able to bring it to completion, what do you feel was the main drive that actually separated you from the crowd? Most assembly programs are open ended-that is, you could write from now till doomsday and still not consider it to be done. There's always something else to add. On the other hand, with TML I could always keep the finish line in sight. My goal was to fill up the 8K low memory area with graphics subroutines. When that area was full, the job was done. This is not to say that the job was an easy one, but it was fun because I got a sneak preview of all the routines as they were being written. Also I knew that if I didn't write it no one else would. (After all, all the books said it was impossible!) How did the patches to video chess come along? Video chess is one of the big reasons I got into the Ti-99/4A. In 1982 or 3 I was looking at computers to buy. I compared Video chess on the TI with Sargon II on the Vic20 and really was impressed by the graphics on the TI. (As it turns out, I think that Sargon II plays a slightly better game, but that's another story.) After I got my disk system, it was annoying that you couldn't save Chess games to disk. I found out where the PAB was set up in the VDP ram when saving to cassette. I wrote an interrupt driven routine to look there 60 times a second and when it finds "CS1" it doctors it to allow saving to disk. A similar process led to the screen dump and joystick control-they all rely on an interupt routine to look for certain conditions, then to change those conditions. Did you ever think about dis-assembling video chess and making other mods? That's far beyond my abilities! At one time I actually thought about writing my own chess playing program, but after figuring out the graphics I kind of fizzled out! What was the biggest technical hurdle that you ever overcome on the TI? Probably the biggest hurdle was figuring out how to shuffle the memory areas around so that bit mapped graphics could coexist with Extended Basic. That's what made The Missing Link possible. What gave you the biggest feeling of accomplishment? I get a great feeling of accomplishment every time I finish any complex program. Early on I wrote a yachtzee program, a morse code tutor, a typing tutorial, and optical ray tracing programs for designing telescope objectives. All of them were in BASIC, and all were very satisfying when they were finally working and debugged. In assembly, EZKeys, EZKeys Plus, Beyond Video Chess, The Missing Link were my commercial programs, and each of them was right at the limits of my ability at the time. Other assembly programs include a stereogram generator (ala the Magic Eye) and a BASIC compiler that can compile most BASIC programs and gives a 10-15 times increase in speed. Then I wrote a FREECELL solitaire program specifically for my compiler. Last winter I ran a pinewood derby for my cubscout pack. I designed a system that uses infrared sensors to determine first, second and third place and an XB program to keep track of who is racing and what place they are in. Nobody could believe that someone was still using a computer like the TI, but all were quite impressed with the results! So the real answer to the question is "all of the above." What is your most memorable TI moment? This may be because it is so recent, but I would have to say that it was running the pinewood derby for over 50 kids using the TI to sense the cars as they crossed the finish line. Everything was rushed to completion at the last minute, but the whole system actually worked and worked well! (Remember, if you wait till the last minute, it only takes a minute!) What is your favorite piece of TI hardware? I'm assuming you mean 3rd party hardware. That'd have to be the Horizon 4000 RAM disk. This gives awesome power to the TI. I can't believe more hasn't been done with the RAMBO, but I guess it came along too late to make a difference. What was your favorite piece of software that you didn't write? SPAD XIII Mk II. I spent many, many enjoyable hours with that program. Most programs are fairly straightforward and I could imagine writing most of them given enough time and motivation. I wouldn't even know where to start with SPAD 13. A very close second would be Video Chess which is one of the reasons I wound up with the TI. What development tools did you use? Mostly for debugging I used MG Explorer-it is a great debugging tool for the type of programs I wrote. I think for very large programs it wouldn't work so well because of memory conflicts. i.e. MG Explorer wanting to be in the same areas as the program you're trying to debug. During your development days, did you develop any development tools to aid you? The only development tool I can remember being of any use was a pad peeker program. It used an interrupt to look at a memory location (either CPU or VDP) and would display the memory location and its contents at the top of the screen. This was particularly useful in making programs that would merge smoothly with XB. Who was your favorite TI personality? My favorite personality was Ollie Hebert who I considered to be a good friend even though we never met in person. We had many long enjoyable phone conversations, mostly talking about the TI, but other things as well. I was very saddened to hear of his loss last year. Another good friend was Bruce Harrison who I'm sure is known to everyone who is reading this. Bruce was one of the most enthusiastic programmers I ever met and was so organized it was almost unreal. At one time he was something like an entire year ahead in his assembly tutorials for Micropendium! What are you doing these days? I am working for the Laboratory of Plasma Studies at Cornell University in Ithaca, NY. I am a technician working on an experiment called FIREX which stands for Field Reversing Ion Ring experiment. In a nutshell, we are trying to create a toroidal (donut shaped) magnetic structure with closed field lines. This is the sort of magnetic structure needed for one type of controlled nuclear fusion. Tokamaks generate them one way. Our way promises to be much simpler which may translate into a more economical reactor. If you had had unlimited time and money, what program would you have liked to have written for the TI? I would have liked to finish my compiler. At present it can deal with most of TI Basic. My FREECELL program was written in BASIC specifically to be compiled and it runs great. The disk access routines are not written. Also, it can only handle a few of the XB goodies. It can't handle sprites, nor can it process the more sophisticated IF THEN ELSE statements that XB allows. E.O.F. - 8.29.2001