[ Go to Stephen's Entry Page ]
[ TI Book front page   |    TI Resources Page |   PC99 Review    |   PC99 Programs |   TI Articles ]
contact - please use subject="pc99 page" to avoid spam trap!

Items extracted from the second issue of EAR 99ER (June 1987) produced by Scott and JoAnn Copeland in Lakenheath, Suffolk.
The regional users group was for owners of the Texas Instruments TI-99/4a Home Computer.

Strange Figures

by Keith G Koch, taken from New Hampshire 99ers April 1987:

So how accurate is it? Huh?? when all is said and done computers are really nothing more than elaborate, expensive, number manipulators. All of our programming and visual results on the screen are nothing more than the results of "number crunching" (the very fast switching of ones and zeroes).

Creative Computing Magazine gave the results of 170 tests of a benchmark program involving 140 different computers: mainframes, mini’s, micros and one TI SR-50 calculator. These tests were designed to determine the speed, accuracy, and ability of the random number generator.

The results are "strange figures":
Speed: fastest was the Cray 1 in 0.1 seconds, the slowest was the TI SR-50 in 12.7 days. Five computers were under 1 second, 58 under 1 minute, 39 between 1-2 minutes, 15 in 2-4 minutes, and 23 over 4 minutes. The TI99/4a finished in 3 minutes and 46 seconds.

Accuracy: the best came in at .0000000000160298 and the worst was .32959. The TI-99/4a had an error of only .000000011 (only 22 computers were better and none were the large mainframe types).

Random: the TI-99/4a ranked 5th with a 2.7 - remember these rankings are against 140 different computers, including the Cray 1, IBM mainframes, DEC Vax's, etc.

Let’s compare the TI with the "home" computers (remember the smaller the number the more accurate the computer):
COMPUTER / ACCURACY SCORE / RANDOM SCORE
TI-99/4A   0.000000110000   2.7
Coleco Adam   0.000426292419   6.2
Commodore 64   0.0010414235   8.9
VIC 20   0.0010414235   23.7
Apple IIe   0.0010414235   12.0
IBM PC   0.01159668   6.3
Atari 400/800   0.012959000000   23.8
TRS-80 Model III   0.033874500000   5.8

Not programming tips

from Jim Beck of Edmonton 99er Computer Users Society, April 1987:

[sjs 2016- several of these are utterly irrelevant to the TI99/4a computer].

1* Never comment your code; it only helps people to find redundancys in it. .

2* Remember - if it ain’t a game, it ain't worth programming. (Unless someone pays you.)

3* Never work on a program for more than four hours. If it takes that long, save it on a disk, place it in your disk box (preferably at the back) and forget about it. Plan on finishing it between now and the death of your great grandchildren.

4* Never use structure programming techniques. All programs should look sloppy, confusing, and completely unreadable. When programming in BASIC, every third statement should be a GOTO. This, when others look at your listings will make you look like a genius. (Which in most cases is a sharp contrast to reality!)

5* Never organize your disks. Remember - a tidy disk box is the sign of an exceptionally weak mind.

6* Debugging is to programs as decaffeinating is to coffee! Never keep your source code after you’ve compiled it. Only an idiot puts out later "bug-free" versions.

7* Always use global variables. Programmers have enough problems without passing parameters.

8* Never make flowcharts or pseudocode. A program should come from the top (or in some cases the bottom) of your head. It should never do what was planned for it and should seldom, if ever, do what it does completely correctly.

9* Try not to use descriptive variable names. In languages that require you to predefine your variables, predefine all possible combinations of letters and save it as a template for all your programs. This allows you to use whatever variables you want without having to go back and insert.

10* Never spill Coke on your keyboard more than once a week

11* Only use disks as coasters under cold drinks

12* Always have an excuse if things don't work properly. Some good examples are: "It’s not supposed to do that!" "The instructions were unclear/unreadable/completely wrong!" And of course, "This computer is broke!"

XX* Never use the number 13 in your programs; it’s unlucky Define it as a constant, such as "XX".

14* Do not hit your computer with objects like wooden baseball bats. Use aluminum ones - you’l1 have less problems with static.

l5* Never, but never, read the instructions. If it doesn't work, plug it in, fix it, or bang it against the wall.

PS: By the way, if your computing teacher says anything contrary to these basic rules, calmly point it out to them. If they still disagree, then ask them why they make their living teaching instead of programming, if they’re so smart!

Game review

SPACESTATION PHETA

A challenging game of skill where you explore a mysterious abandoned Spacestation. Written in Wycove Forth this game includes graphics; color; sound; realistic animation; 79 built-in screens; create your own screen designs; built-in solutions for boards you get stuck on; joystick or keyboard control; game speed control; and more.

Thus begins an introduction to Spacestation Pheta! I'11 admit now that I spent many hours on this and prove I’m as much a kid as anyone else! (High score to date 151,850 and practicing! - and I scored this without a FCTN Z!) If I had seen this in a store before purchasing it, I still would have brought it home!

Spacestation Pheta requires 32K Memory Expansion, Disk Controller and Disk Drive. Use either Extended Basic, Editor/Assembler, Mini-Memory, or TI-Writer to load. After loading, you find a cute little guy standing on a platform!

You start with 4 spacemen and gain extras at 10000, 20000, 40000, etc. The object of the game being to exit through the appropriate doors farthest right on the screen to gain entrance to the next level. Not as easy as it states, though. You carry one key at a time to find out which door it opens. If it happens to open the wrong door - you’re stuck! You pick up oxygen to help make it through the screen in time (if you run out of oxygen you have to do the whole screen again!) and energy packs and keys award points. Bonus points are gained depending on the amount of time left when you finish a screen.

So, here you are running around collecting a key to see what door it opens... you can jump 1 level without killing yourself, and pick up oxygen and energy packs. You need to climb stairs; jump ledges; keep from falling off of temporary floors; go down chutes (WHEEEE!); go through materializers and transporters; get spit out of cannons (UP, UP, UP WE GO!!!!); use falling floors to make a pit-stop; use anti-gravity fields; use booters to fly across the screen; walk on conveyor belts; get fried on an electrical floor; find the key to the secret ladders; and walk on top ot copyright symbols. Yes, folks, and more!

On top of the 79 built-in screens (level 80 starts off on 1 again), you can build your own screens with your own solutions and problem solving! Can slightly be compared to Gravity Master - but this offers SO much more your imagination is left open! You can also start off on different levels (for practice maybe?) and give yourself extra men any time you want by pressing FCTN Z! This comes in helpful more than once, but it takes any High Score achievement away from you...so use it only if you have to. Three years ago this went on the drawing board, and at the time Tad (the author) was 13 years old. Released three years later after being refined, it was worth the wait! Spacestation Pheta is interesting, challenging, and FUN!

[There is no indication who wrote this review]

Control Codes

INTRODUCTION - ADDED 2016

Printer Control Codes

See also May 1987 issue.

The article following is about the special characters that the TI Editors such as TI Writer and Funlweb can display when you are directly typing in control codes for your printer. Unfortunately these use a special character set not readily available in modern browsers.
The character set is only eight pixels high! The main printers in use at the time used the Epson Escape Control Codes- you can still buy dot matrix printers that use this for a high price...
The article did not specify any particular printer so TI Printer must be assumed.

NOTE: Control U mode in TI Writer etc: To insert the control characters you go into Control U mode by pressing CTRL and U together- again to exit- the cursor will change to an underline to show the mode. This mode allows you to enter from the keyboard ascii characters below the usual alphabetic range. These were used in Epson printers to switch features on and off.

NOTE- In CTRL-U mode you can type the character hex 1 with SHIFT A, hex 2 is SHIFT B and so on.

Escape F would look like this in TI Writer: image of TI characters for ESC F
but in the article below we have used the CSS formatted:
1 6  F

Control U vs Other Commands
[No authors name is given]

We’re going to investigate Margin and Page Length Commands this article as we continue our examination of CTRL U Special Command Mode vs. programming &/or transliteration. As I stated last article, each way works - it just depends on what mode the User is most accustomed to using, and what is more comfortab1e for the User.

[2016 note- the notes below refer to setting the PRINTER tabs. You can rather more easily set the tabs in the TI Writer Editor and use those- however they are not so useful if you are using differing font widths or inserting images. The Editor displays all your text as a single width even if you insert commands to change the printer font width]

Let’s see what we can do with a Left Margin Command in a program:
10 OPEN #1:"PIO"
20 ESC$=CHR$(27)
25 LH$=CHR$ (77)
30 PRINT #1:ESC$;LH$;CHR$(15)
40 PRINT #1:"THIS IS A TEST"
50 CLOSE #1
60 END
Line 30, where it states CHR$(15) informs the printer you want a left margin at 15. If you were to enter 35, your left margin would be at 35, entering 20 gives a left margin of 20, etc. So, typing this program in Extended Basic with the printer on, you type RUN (Enter) and the line THIS IS A TEST types out with your left margin set at the number you entered. The printer holds the command until turned off.

[note 2016- or until you set a different left margin]

What if you needed to change the left margin several times? Needless to say, we wouldn’t want to type out several changes to keep running the program. Another way is using the Margin Commands in the TI-Writer Manual (covered in previous articles). Such a use would be:
eg: .FI;AD;LM 10;RM 65 where the left margin ie at 10.

Several lines down in your text file you could change this to:
eg: .FI;AD;LM 5;RM 65 where your 1eft margin is now at 5.

Typing your text through the Formatter would then make these changes.

CTRL U can do this also.
1 6  Mn
FCTN R (in CTRL U Mode) followed by a Capital M and value sets your Left Margin (n representing a numerical value)

If you wanted your Left Margin at 5 the command would be:
1 6  M 0 5
(FCTN R in CTRL U mode, a Capital M (out of CTRL U mode) followed by Shift E in CTRL U mode).

Likewise, if you wanted to change the Left Margin to 30, the command would be: 1 6  M_
(FCTN R in CTRL U mode, a Capital M (out of CTRL U mode) followed by Shift 6 in CTRL U mode).

In each case, the Left Margin is set and the command will be held until another command is encountered changing it.

If you wanted a Left Margin of 40, use Character Code 40 which is the ( sign. The ! would give you a left margin of 33. If you follow your printer manual, you can change your 1eft margin to any desired number.

The same rule applies for the Right Margin. You can change this margin with the TI-Writer Command:
eg: .FI;AD;LM 10;RM 65 where Right Margin is 65.

To change it to 70 just type in the following:
eg: .FI;AD;LM 10;RM 70

The Formatter will recognize these commands and your text will print out as such.

Again CTRL U mode looks like:
1 6  Qn
(where n represents a numerical value)

Instead of using a Capital M for the Left Margin, we now use a Capital Q for the Right Margin. Again, n represents a numerical value and your printer manual helps with the character codes:
1 6  QF

(F = character code 70, or Right Margin at 70).

Replace F with H for a Right Margin of 75, as H equals character code 75, etc. Easy, huh?

Now, on to Form Length... Most of us have had the occasion to acquire paper, whether perforated computer paper or singularly fed sheets, that was another length besides the 66 lines (normal 8 1/2" X 11" size).

A problem with the Formatter is that it will page after the 66 lines.

[[2016: Not so much a problem as a deliberate programming choice well documented in the manual...]]

Ever told the Formatter via your text to change that? .FL 70 should advise the Formatter to page at 70 lines per page.

Every time I did this, it would print a sheet, and then wildly skip a sheet to start printing again - only off 1/4 inch. As each page went on, that 1/4 inch grew to where it was printing half on one page and halfway into the next page!

[2016- can you guess! The PRINTER was keeping tabs of how much sheet it had printed. Setting the page length with the formatter only tells the formatter how often to send a page feed. When it does the printer will go to a new page. BUT the printer also keeps tab on page length and if the printer thinks a page is 10 inches and you send a page feed every 12 inches, you will get ten blank inches..... read on...]

Investigating the CTRL U commands a group of us found the command:
1 6  C


1 6  CF

Again, FCTN R in CTRL U mode, followed by a Capital C (out of CTRL U mode) changes the Form Length to n lines. Here, character code 70 (F) sets the form length to 70 lines per page.

Changing the F to K sets form length to 75 lines per page. Change K to P for 80 lines per page. You’ll now find the Formatter doesn't skip or otherwise mess up on paging.

You can also change Form Length to n inches, instead of n lines. This command would be:
1 6  C0


1 6  C0 C R


(FCTN R in CTRL U Mode, Exit CTRL U Mode, Capital C, Zero, Enter CTRL U Mode for Shift M)
advises the printer to form length 13 inches per page, rather than the normal 11. This can be changed to however many inches you require by typing:
FCTN R in CTRL U mode, emit CTRL U mode for a Capital C, a Zero, and then the character that represents the number of inches you want per page.

I usually use the n lines command as it is easier representing character codes in that command.
Following my printer manual I check out the Standard ASCII character set page and go from there. You’l1 find it is easier using higher numbers for n lines rather than n inches.
Little bits leit to cover involve Line Feed Length, Reset Commands, and Buzzer complaints (yes - buzzer). Then maybe all you lucky people will finally be able to get rid of me! Until then, happy word processing! .....

[2016: Remember the software formatter and the printer are separate but work together and you need to use settings that recognise this. Can you guess someone who hardly ever used the Formatter? Hint: me ]

Starcross

[This item refers to an Infocom text adventure program. No authors name is given.]

TO: All Spacecraft Owners and Operators
FROM: Bureau of Extra-Solar Intelligence
SUBJECT: Encounters with Aliens
DATE: June 1, 2130

We understand you are having difficulty in obtaining your destination.

SHAME! All you need are the three coordinates! If you examine your mass detector, read it, look at screen, your display shows the appropriate MASS UM and number. EASY! You’ll need a code designation and appropriate R, Theta, and Phi coordinates. After you have your designated UM number, such as UM70, type the following:

>Computer, R is 100.Theta is 120.Phi is 101
>Computer, confirm new course

Or, for UM 31:
>Computer, R is 150.Theta is 105.Phi is 067
>Computer, confirm new course

If you get a response from your shipboard computer saying "There’s nothing out there" - you got it wrong!

Once your ship lands (and keep the seat belt on until you do!) exit your ship (with your space suit on). Here you begin your journey to find the following rods (yes, rods):

Black (arrive at Red Air Lock), Red (Rat-Ant Nest), Yellow (Blue Spherical Ship), Silver (Weapons Deck), Gold (Computer), Pink (Among Debris at Yellow Dock), Blue (Laboratory), Green (Maintenance Garage), Brown (Village Center), Violet (Control Room, Green Dock), Clear (Observatory), White (Drive Bubble).

Some of these will be put into appropriate items and some will help you get into appropriate locations. (Huh?) You should also find the Red Hall, Blue Hall, Yellow Hall, and Green Hall, (and the Warren).

Each Rod is 25 Points. To equal 400, you also need to get through the Red Airlock; Enter the Control Bubble (each for 25 Points); and Return to Earth (for 50 Points)!
And you don’t return the way you came either...

After you exit your ship, you find yourself at the Red Air Lock area. You have to push an appropriate column (number) which in turn makes something happen. Try pushing again and see what happens. Go up.

The Yellow Rod may help you gain Emergency Lighting if you put it in the appropriate place.
The Red Rod can give you a fresh air supply. Go to the Repair Room for an appropriate slot.
The Chief helps you get a Brown Rod. He's kinda' greedy, though. He also helps you get to the Warren if you know what to do!

That funny looking Ceramic Square you find is not all it seems. There's a panel just waiting for it somewhere!
When you fix the computer, you need to see a *READY* sign, or you didn’t do it correctly. Likely to die of coal gas poisoning while you're at it...

The projector is likely to blind you (take my word for it) Try looking at it through something...
The Rat-Ant Nest is easier than you think. Instead of getting bitten, try throwing something at it!
Did you know the Blue and Red Disks are transporters? No? Well, they are...
Your basket helps with the sphere. So do the transporters
That cute little mouse is quite helpful. Letting him pick up something you thought you needed might help.

That stinky old skeleton is better than you thought. Most card players hold something up their s1eeve...Wonder if this guy ever played cards?
WHEEEEE! Remember that in most adventures? Helps again here Try "JUMP".

Don’t shoot the gun where it isn’t needed. And, remember, interplanetary rules state "do not kill" another human being (or alien). Think this might help out at the Drive Bubble? No? Okay...

Another pentagon? with five slots and five rods 1eft? Hmmm... the slots are colored and so are the rods. A display shows nearby space until you press one of the spots (yes, press a spot). Where were we headed, anyway?

Now, is it a parabola looping around Earth? A line terminating in the Center of Earth? A line terminating in an ellipse surrounding Earth? Or a line terminating in a circle around Earth? Your guess is as good as mine... By the way, SAVE before you do anything further...

If you complete this correctly you should see the remarks:

"Congratulations, you who have passed our test. You have succeeded where others failed. Your race shall benefit thereby."
"I expect to see you in person, someday."
Your score would be 400 (total of 400 points), in '?'?'? moves This score gives you the rank of Galactic Overlord.
Good luck and Happy Hunting!

CALL LOAD

PROGRAMMING TECHNIQUES
by SCOTT COPELAND

Did you know that you can load an assembly language program into the console memory or the memory expansion unit directly from Extended Basic? You can use EXBASIC’s Call Load subroutine to load the values to be written to the CPU RAM or the Memory Expansion Unit. Letting ExBasic poke the assembly code values into memory will allow the user to load an assembly based program with his ExBasic program, using normal ExBasic commands. You are probably wondering how this can be done. Well, let’s look at it.

An assembly language program, when assembled, is a list of binary values that are expressed in a hexidecimal notation form. These hexadecimal codes can be loaded directly into memory from ExBasic.

Let's look at an assembly language instruction:
B *R11
is translated to hexadecimal as : >045B but when translating to ExBasic it is equal to two values. The first value >04 is = to 4 and the second value >5B = 91. So if you load a memory address with the values 4 and 9, you would in reality, be entering B *R11. From an ExBasic standpoint it would look something like this:
CALL LOAD(xxxxx,4,91) which will place the instruction B *R11 at memory address xxxxx

Most ExBasic programs that place an assembly language program in memory are called ExBasic loaders.
To load a complete assembly language program directly into memory from ExBasic, you will be required to load its decimal equivalents one byte at a time.

[2016 note: you saw above how one CALL LOAD put TWO values into memory in one go. Subject to length constraints you can place several values into memory with a single CALL LOAD!]

To get the necessary decimal equivalents you should look at an assembled source listing and convert the hex codes to decimal. See the following listing.

[The next four pages are heavily formatted - not exactly suitable for direct web use. I do not have the time to produce a readable mobile-friendly web page from this content and therefore rather than lose the material entirely it is presented as a series of full page images- these are in .png format. If you wish to contribute a mobile friendly html representation that makes sense- do contact me!]
Click on the small images to see the full page in a size you can read then use your browser back button to get back here- or right click and save to view later etc.

ear june 87 machine code ear june 87 machine code ear june 87 machine code ear june 87 machine code


[ TI Book front page   |    TI Resources Page    |   TI99/4a articles    |   PC99 and MESS Programs ]