top of page

Links to other parts of this web site are at the bottom of the page.

Other TI99/4A sections:
Book- Getting Started    | TI Articles    | TI Resources Page    | PC99 Review    | Programs for the TI99/4A and emulations


Jump to:
ExBas: Hi res graphics    || Issue 12   || Debugging a program, or why won't it work

TIhome TIdings Issue 11 - VOLUME 2, No. 5 OCTOBER, 1982

from (DR) JEFF FREEMAN 0N35 8N3439 Sherborne
I cannot answer sophisticated questions - I am not that far ahead yet. But can I thank Steve Shaw for the help he gives so readily over the phone. Fancy my buying a computer that can't PRINT AT

Rambles OCT 82 by Stephen Shaw

Greetings and welcome any new readers. Here are some Rambles

Starting this month with a brief look at 99'er Magazine,Issue 6.
(Available online as a 63MB PDF file from whtech.com)
If you don't subscribe, the magazine is recommended to you. At time of writing the only reliable source is direct sub, from the USA at $43 for 6 issues (air-mail), but there may be news of supply elsewhere in this Tidings -or coming soon.
Issue 6 has the usual crop of games and other programs for the 99/4A, in TI BASIC, Extended Basic, Assembly Language, and LOGO.
The Games programs this time are quite simple - and one game has the final lines omitted!
The Assembly Code program uses the 'Multi-Color' mode, to draw pictures using joysticks. The mode has a resolution of 64x48, and each square can be any colour.
There is an ad on the back page which lists some of the new modules to come - and very exciting they seem too. One new 'independent' module is OTHELL0 by Gabriel Industries - they own the trade mark,so the program should be pretty good.

TI have now brought out in the States DISK-BASED versions of Tombstone City, TI Invaders, and MunchMan - at half the module price - so if you are able to run Assembly language disks, these are good buys for you!

Issue 6 has an EXCELLENT article on CASSETTE operation. Recommended.

'Programming Basic with the TI HOME COMPUTER' by H D Peckham is reported as containing MANY errors (Available from TI Books). The alternative is 'Introduction to TI BASIC' by Inman,Zamora and Albrecht, published by Hayden. ALSO available from TI Books

LOGO 2 in on the way...with music,double the user memory etc etc....


the International 99/4 Users-Group

IUG Volume 2 Issue 4 of their newsletter, July 1982, gives interesting information- (the link is to a 1MB PDF file at whtech.com)
There are disagreements with TI's marketing policy in the States too!

The Box system is in very short supply (delivery Spt-Oct) -largely due to incredibly fast expansion of the market.
TI WRITER is a word processor module (US$100 only) which will only work on the A model. Includes text/line insertion/deletion, automatic paragraph indentation,right justification,automatic word wrapping ( in brown paper ? ) ,overstriking and underlining. etc etc etc. Incredible value.
uh oh - snag - it requires the 32k memory expansion,disk system, RS232, and a printer (The new 80 col printer is GBP 400 here...).

If you have been looking enviously at VISICALC and like ilk, watch out for Microsoft Multiplan (US$100 - also requires disk and 32k memory.

The new games are reviewed- apparently it breaks new ground by using -for the first time - 'digitised speech' - the review does not say if the synthesiser is required - possibly not? The voice is female.... and the game similar to Defender.

TI LOGO II requires 32k memory expansion system and has a US retail of US$130.


Although I mention here interesting snippets of news from other - journals, please bear in mind the rather long press dates. The early pages are written towards the beginning of August,and the final pages (of Rambles) were written at the end of September. For up to date news, do subscribe direct! (to the other journals that is - as well as TI HOME Tidings of course!!).

HARDWARE REVIEW: NEW STYLE TI JOYSTICKS:

Well- they look nice. The 'stick' is quite long.
First noticed- only the 4 cardinal points are marked. The diagonal moves are quite difficult as
i) The position of the stick has to be within about one degree
ii) They are VERY stiff and for diagonals you really have to push the stick.

TI consider the joysticks better than the old ones- guarantee has been doubled to 12 months. TOMBSTONE CITY plays much better with these joysticks. Probably not suitable for small children due to the size of the base and the pressure required.

You guessed it- I bought the joysticks to play with the multicolour mode Assembly program in 99er.
It is very good - except that it uses absolute addresses, and so MUST be run with the "LOAD and RUN" option of the Editor/ Assembler

The program can save the screen to disk - and when reloaded ,your design appears VERY quickly. Interesting- the screen design is saved as a PROGRAM file (7 sectors).


HEALTH HAZARDS:
If you wear glasses, whether for long or short sightedness, they have not been designed for computer use. In general the computer will be farther then a rending book and nearer than the horizon (!).

If you an a lot of computing, you will be more comfortable wearing glasses designed for work at that particular distance - which may be useful for tv watching too - and for indoor wear,you may be satisfied with the cheapest NHS frame. Ask your opticians advice.

If you DON'T wear glasses - still take care. The recommendations to business users of VDUs are that:
Staff shall have ANNUAL eyechecks.
Staff shall have regular rest periods away from their screens, doing something else - amounting to 20 minutes per hour. (update- now shortened to 10 minutes!)
Treat yourself gently - at least look at a distant object every so often, to relax your eyes

Some folk are affected by close proximity to monitors - the air is charged in their vicinity,and there is usually more dust around than usual. There may be breathing problems or in some cases outbreaks of spots or skin irritation. Your computer is NOT out to kill you, but as with so many things, excessive use requires that you take care, and are at least aware of the potential problems.


Go to top of page

Huge shortage of CASSETTE CABLES in MANCHESTER on 27th August - ARGOS (two shops) -NONE IN STOCK. BOOTS-NONE IN STOCK. MICRO-C -NONE IN STOCK GREENS- TWO ONLY IN STOCK !!

As a result of the improved availability of 99er I shall not in future be reporting on the contents. If you wish to know what is in 99er - buy it! It is VERY strongly recommended to you.

TI JOYSTICKS again Sorry about this, yet another health hazard - the new joysticks.
They can give rise to a nasty case of congested thumb, if you support the control with your fingers and place the ball of your thumb over the top of the stick.
Prolonged use gives you a very sore thumb, which takes a while to recover.
Recommended: You fill in that depression at the top of the stick with a filler such as Araldite etc.

News from the States (Dated 31.8.62) that the new BOX system is selling much faster than TI's wildest dreams - leading to a considerable shortage. Extra production facilities hove been drafted in but a shortage is expected for the rest of the year. Under these circumstances perhaps we should not expect much availability ( or marketing- which would be wasted!) here in the UK.

Comment from the States: '...feel that they (TI) put too little faith in their own product....' ( Agreed. )

The DISK versions of Invaders and. Munch Man are NOW available, (In USA), and TI WRITER and P-Code Disk Based software products were expected to be available October 15th.

Perhaps we should rejoice that the product has now obviously achieved viability - even if only in the Staten - as this should ensure continuity.

I see that in my error I have been referring to TI HOME, (with a space) which in incorrect. It should be TIHOME. Apologies.

This years PCW Show has been and gone.
Nice to see so such interest in the TI stand and to meet (for the first time!) some fellow members (also for the first time,some fellow OWNERS!).

The signs are that this issue will be going to lots of new owners, who by this page may be wondering what RAMBLES is You have no doubt realised that I am NOT a writer by profession.... and I don't even work in the computer industry - just a bank clerk.

RAMBLES is therefore not a profound look at any one (or two...) subject, but a 'pot-pourri' of news items and random comment, which may be of interest to 99/4A owners.

Your good Editor has considered it to be in a word, a charivari. (Dictionary exercise).
There is a great deal to learn about our computer - how best to program it, how to use it, program conversion etc etc. YOU may be the person to write in and tell us....

As our membership is now quickly growing it is not amiss to include some helpful hints on cassette operation-
First- keep the tone control at maximum treble
Also- keep the ALPHA/CAPS key locked DOWN
Setting the volume:
With grossly insufficient volume you will receive:
ERROR - NO DATA FOUND (also if volume much too loud) With not quite enough, or slightly too much volume,
ERROR DETECTED IN DATA
To fine tune the 'slight error' you can use your tape counter - note where the ERROR message appeared, make a very slight adjustment and try again - did the computer read MORE (move volume a bit more in same direction) or did it read LESS (move volume control in opposite direction).
An important note: Every time the tape passes the recorder heads, a little bit of the signal in lost due to the minute magnetic field which slowly builds up on the head. This will limit the life of your tapes, and where possible you should keep a backup copy on a separate tape.

The use of a tape head demagnetiser, regularly, is of benefit, and the demagnetisers built into a cassette case are very easy to use.
You should also use a head cleaning tape from time to time (but not too often as they tend to increase head wear!). Of course you should store your tapes AWAY from magnetic fields (eg, the TV!)
And bear in mind that as the width of recorded tape is so narrow,only a very small change in the position of the head will stop you reading your old tapes - or anyone elses - although of course you will be able to play recent recordings. The change will not be audibly noticeable, but your computer will spot the difference! Treat your recorder gently!

Some of the programs I am offering have been on the US market for TWO YEARS - and still I have to remove bugs or request a re-write!! In fairness, I have received great cooperation from other authors, who clearly have NOT received any complaints - it implies nothing if no-one contacts you.

All the programs I sell have been very carefully checked. In some cases the programs are limited by the system -either the language or free memory - but within those constraints they are considered (by me) to be good value.

Good news if you live in the North West - the first TI peripheral ever to be displayed in a Manchester retailers has now been sighted - the stand-alone 32k memory expansion has been seen in Manchester's newest TI dealer - a branch of The Computer Supermarket. (Curiously - they are in a shop which TI once used, and which has been 'To Let' ever since TI moved out over a year ago...).
As you may have seen from their ads, they have most of the peripherals and a good range of modules. If you don't see what you want,ask - the Personal Record Keeping Module is not in their current list, but it IS available from them.

Go to top of page

MINI MEMORY:
. After a brief look at this module in an earlier tidings, another look, after I have had a chance to use all of its facilities:

The new BASIC commands - CALL INIT,CALL PEEK,PEEKV,POKE,POKEV - these are useful for looking at and amending all the RAM in the machine.

You may POKE to the screen,or PEEK at the screen - this is made a little confusing because ASCII codes are not used.
'A' with an ASCII code of 65 has a PEEKV code of 161 (etc) - top left hand corner starts at memory location O.
You may POKE and PEEK your PROGRAM - this enables you to write interesting programs which write themselves.
The screen,character and color definitions and your program, reside in VDP RAM and PEEKV and POKEV are used.

You may SAVE and OLD programs up to 4k TO THE MODULE - and when you power down, the program stays there. OLDing from the module is considerably faster than even disk

You may use the module (and the 32k ram if you have it) as solid state disks, to store data. You open a file and save or read in almost the same manner as to tape or disk - but saving and loading is very much faster than disk. If you use the minimem then the data stays there when you power down. If you use the 32k ram (of which you can use 24k) then switching off destroys your data.

You may load an assembly program into the module (up to 4k) from tape or disk, and that also stays there on power down. A Basic program can utilise assembly subprograms (Call LINK is used).

There is a cassette provided,with a line-by-line assembler, to enable you to write assembly programs - but it is not a simple matter, and there is a definite need for more literature on the subject. The manual provided is not sufficient for a beginner.

There is a lot in this little module.

ExBas: HiRes Graphics

Gary Harding modifies Peter Brooks pseudo hi-res plotting facility for Extended Basic.

In a vain attempt to beat Pete into print, I've produced an Extended Basic subprogram which, whilst modeled closely on Mr. Brooks' original, utilizes XB's facilities and requires less initialization in the calling program as a consequence. Of course, with XB you run out of redefinable characters when you reach 143 rather than 159, so you pay for the increased speed and simplicity with a smaller scope for plotting over the whole of the screen. Nevertheless, it's a nice routine. Well, I think it is, anyway!

Initialization required:

80 CALL SCREEN(2):: S=31:: CALL HCHAR(1,1,S,768)
90 FOR I=1 TO 14:: CALL COLOR(I,16,2):: NEXT I

Your routines here

1000 SUB PLOT(R,C,S)
1010 Y=INT(R/8+.875):: X=INT
(C/8+.875)
1015 H$="0123456789ABCDEF"
1020 B=C-X*8+8:: P=2*R-16*Y+
16+(B<5)
1030 IF B>4 THEN B=B-4
1040 CALL GCHAR(Y,X,H)
1050 IF H>31 THEN 1080 ELSE
IF S=143 THEN SUBEXIT
1060 S=S+1:: D$=RPT$("0",16)
:: CALL CHAR(S,D$)
1070 CALL HCHAR(Y,X,S):: H=S
:: GOTO 1090
1080 CALL CHARPAT(H,D$)
1090 N=(POS(H$,SEG$(D$,P,1),
1)-1) OR(2^(4-B))
1100 D$=SEG$(D$,1,P-1)&SEG$(
H$,N+1,1)&SEG$(D$,P+1,16-P)
1110 CALL CHAR(H,D$):: SUBEN
D
The Boolean "OR" in line 1090 effectively set the bit in the relevant digit of the character-definition hex-string corresponding to the pixel which it is required to plot.

Peter Brooks writes

TI Basic - Rems.

Not many people know this, but - you can add comments to certain TI Basic lines, just as you can add "tail remarks" to Extended Basic lines. At present the best candidates are:
GOTO
GOSUB
ON GOTO
ON GOSUB
IF...THEN...ELSE
There are others, but these are the best examples. How do we do it, I hear you ask. (Go on, then, ask!). Well, all you have to do is to enclose your comments in quotes and place them after the last "destination" line number in the statement. For example,
100 GOTO 220"JUMP OVER SUBROUTINES AND CONTINUE WITH MAIN PROGRAM"
or:
770 GOSUB 330"DISPLAY MESSAGE"
or:
1000 IF blah blah THEN 630 ELSE 1010"JUMP BACK IF blah blah IS FALSE"
Note that the comment appears AFTER the last destination line number in the statement. Also:
1760 ON blah GOTO 100,220,350,700,100,"BRANCH TO MAIN SUBPROGRAMS"

Although I tend to avoid the use of REMs in programs, the use of this kind of comment can be of help when preparing programs, an you don't run the risk if making a REM the destination of a jump, and you can delete the comments later without altering the line number sequence. In the example using ON GOTO, don't forget to make the line list as long as is required by the value given by "blah" (an original expression if ever I saw one).

Other possibilities are RESTORE (with a line number), TRACE, and even END. The format for those is not so straightforward or as readable as with the others, so I have not delved as deeply into them. The format looks like this:
RESTORE 200+COMMENTS+MUST+NOT+EXCEED+FIFTEEN+LETTERS+LONG+AND+MUST+BE+SEPARATED+BY+A+VALID+MATHS+FUNCTION



Go to top of page



TIHOME Tidings 12th issue, December 1982

Volume 2 Number 6

Jump to Start of Rambles article || Debugging a program, or why won't it work

TIHOME 1982 December 21. Volume 2 No. 6

from paul dicks:
Now the price of the 99/4A has reached GBP 149 the membership of TI HOME increases by leaps and bounds. Current membership is 700 and counting. I trust that all the new members find the information that the older members are able to give to be of value. New members may not realise that older members had to pay GBP 748 for their 99/4. TI have only recently become sensible when it comes to pricing.

From Mike O'Regan:
Thanks to Robin Frowd's kind offer of software for published programs, I now have two new modules to add to my growing collection (23 at the last count - can anyone top that?).

From Pete Brooks-
Stephen pointed out an "inexactitude" in my review of Extended Basic v110: using ON BREAK you do not necessarily get stuck with an unBREAKable program, requiring a general reset (FCTN = or SHIFT Q) to get unstuck. If your routine has a halt for input (ACCEPT or INPUT) then you can BREAK in the normal way.
Stephen has also been giving me some answers to my queries over CALL PEEK and searching for program listings. Since buying the Mini Memory module some of that information has been underlined, with the result that the clouds of uncertainty have largely blown away, to be replaced by just mists of uncertainty.
It appears that CALL PEEK and CALL LOAD can only address CPU RAM; that is, memory which is directly addressable by the central processor. The additional memory provided by modules like Mini Memory and by peripherals like the Expansion Memory are also CPU RAM. The console only possesses a mere 256 bytes of RAM in the standard system; your programs and the system's own variables are stored in VDP RAM, under the control of the video display processor. In order to execute your program therefore the CPU has to address the VDP's RAM as though it were a peripheral, like the Thermal Printer, through the CRU (Communications Register Unit - I have also heard it called a Control Register Unit). The CPU uses just two bytes of its 256 in order to carry this out. Further details are not yet available.

Computer & Video Games, Monthly, 75p
This mag came out dedicated mostly to arcade games and how to play them well, but it came in for a lot of criticism for its habit of obscuring those listings it did publish by overprinting with color pictures - not very clever. Stephen Shaw has had a couple of his programs published, and also acts I believe as unpaid software reviewer.
CORRECTION: Stephen Shaw has never reviewed any computer program for any commercial magazine.
This mag is slowly evolving, publishing articles about games programming techniques, but alas it is going to be dropped from my list after Christmas because other, more pressing demands are being made on my funds and I cannot justify buying a mag which only marginally covers my fields of interest (even though Stephen says that the editor is pro-TI - sorry!).

From Robin Frowd Texas Instruments Ltd
TI news - Here at TI everything is go, with the considerable increase in demand for the TI-99/4A we are all very busy.
I shall start this newsletter by answering some of the points that arose in October's edition of TIHOME. Module serial numbers starting with LTA and ATA refer to the site of manufacture

e.g. L(TA) is Lubbock, Texas, America
and A(TA) A... Abilene Texas America,
(webnote: TI UK said ATA was Holland but there is a great deal of evidence to suggest this was incorrect and the text above and below has been amended. The datamath calculator museum confirmed that ATA was Abilene whilst ATD was Austin, Texas- unusual in having an American site with a final letter D instead of A - too many Texan facilities beginning with A.)
ACH is Almelo, (Common Market)- in Holland.
RCI is Rieti (Common Market)- Italy.
The numbers eg 2083 refer to week number and year - in this case week 20 of 1983.

TI Invaders was released long after the introduction of the TI-99/4A, and users should not see any differences between the 4 and 4A on this game. The only difference that very few of you will see applies to those of you who own an NTSC TI-99/4A, since you will have a longer screen size.

Now on to new products. In January we will be launching a new module, called Parsec, it is a high speed arcade type game and I believe it is the best we have produced to date. Parsec is similar to Defender as sold for Atari, although I think the graphics are better. Judging by the reaction of the people here in the office once seen you cannot put it down. Parsec is also the first game to include speech, not your standard boring male voice either, but a sultry females voice. It is worth pointing out that the Speech Synthesiser is not required to run Parsec, but if used will make the game even more enjoyable.

I understand from Paul Dicks that membership is booming, sales of the TI-99/4A have increased dramatically and we are now sold out for the rest of the year.


Rambles by Stephen Shaw

Greetings and welcome to Rambles.

Tape recorders
I recently had a phone call from a TI owner who had tried an awful lot of recorders - and none would work. The problem was the Remote Control operation. With many recorders sold in the UK it is necessary to reverse the polarity of the remote lead - and TI include with the cassette cable two small adapters for this purpose (one for CS1 and one for CS2). Use one of these for trouble free operation - do not do as a second TI owner did and discard them!

ALPHA LOCK key
At the left of the keyboard is a key which switches from small letters to large letters - in the down position the computer will print the larger letters. This seems to be causing a little problem with several owners.
When you are keying in or loading a program, you should keep this key in the DOWN position. It is usually essential to keep it DOWN while RUNNING a program, but there is one important exception - see the next section.
Joysticks
When the program uses Joysticks you must keep the ALPHA LOCK key in the UP position - otherwise they do not work well. We have heard of several owners returning joysticks to their dealers as "not working" when all that has been wrong is the position of the ALPHA LOCK key!

Loading third party cassette programs
With the best tape recorders there is no problem, but with the intermediate tape recorders - probably the majority held by 99/4A owners - you will find you will have to increase the volume setting to load a third party program. The volume range at which the program will load may also be reduced. For those few third party programs which come with Data Files (the tape runs and stops several times to load them) there is also a problem of one or more files being missed - this usually gives an error message such as BAD VALUE - which is not quickly associated with loading problems! This difficulty usually means the volume is a tiny bit too low.


Go to top of page

Program debugging

While receiving a lot of comments on the programs in Computer & Video Games, some have experienced no problems while for others the programs just will not run!

Bear in mind the earlier note about the ALPHA LOCK key! It is VERY easy to make an error in keying in a program - and spotting a missing comma or bracket may not be so easy. Much harder to spot are letter O's used instead of figure zeros or letter I's instead of number 1's.

The 99/4A has some good features for helping to spot errors but when the error is many lines away from the line producing the error message, you have to understand the program and the computer.

A recent problem reported to me involved a program which when RUN gave the error message:
DATA ERROR IN xxx
The owner found xxx to be in a FOR-NEXT loop, so adjusted the TO NNN number downwards, and found the program ran OK - but an error occurred elsewhere:
BAD ARGUMENT IN . . .
The SYNTAX of this new line was OK - so what was going wrong? (Can you guess?)

Whenever an error message is generated, the program is halted but all the variables retain their values until you edit a program line. By looking at these variables you can work out what went wrong. In this case, the FOR-NEXT loop which had been adjusted was loading DATA into an array R$(n), and the BAD ARGUMENT line was using the function VAL(R$(n)).

First step: type in PRINT R$(n) - the result was a single line scroll - e.g. R$(n) was a null string, resulting in the bad argument. (You cannot VAL("")). The next step was to look at all the data items, and see to what variable the last data item appeared to be READ to - in this case R$(15) - which was NULL.

Now we had to trace the SIZE of the problem - by stepping back a few DATA items ( PRINT R$(N-1) ) and telling the computer to print the variable we thought should have been loaded with that string - this time there was a result - but not the expected one. The computer printed the PREVIOUS data item - which told us that ONE comma had been omitted in one of the DATA lines - so back to do a careful check of that section. If the DATA section had been very large we could have checked "anticipated" values for a series of variables, to see when we had the anticipated answer - and when the answer was wrong. (This does require a careful check, both of data items, and of READ statements, which are usually in a FOR-NEXT loop).

So - if you have a problem with a program, as well as checking every comma in every line, the computer CAN help you to find your mistake. In the above example the action taken at first (assuming a magazine print error) only served to obscure the real problem - a DATA ERROR should lead you immediately to check your DATA lines, using the above procedure.

Magazines make some mistakes of course - but the chances are that it's your typing! As you develop a knowledge of your computer you WILL learn how to spot and correct some magazine printing errors (there aren't THAT many!).


Screen dump

If you wish to save a screenful of information or graphics, how do you do it? You could use CALL GCHAR and then save the variables to a tape file - but it is both slow and uses an awful lot of tape - and you cannot (normally) verify tape data files. If your screen contains redefined characters you may not have enough tape to save the definitions (assuming the use of CALL CHARPAT - XB).

So how ?
Using a disk system for the data files is a lot faster - but still not especially fast.
You could write a program which saves the data TO the program (using either Mini Memory or XB with 32K RAM). This is certainly faster, but all those CALL CHAR lines take up a great deal of memory. It is OK if you are not redefining the characters - then all you have is 24 "PRINT" lines to overwrite.
You can do wonders with Assembly Language of course, and such a utility could fit into the Mini Memory - but the Mini Memory module has Basic utilities which come in very handy. Below you will find an example - the first program saves the screen to the Mini Memory, the second program reads it out - and in between you can power down and remove the Mini Memory.

Tape storage is possible using the "L" and "S" options of EASY BUG on the MM - the files CAN be verified and load quite quickly. These examples also save definitions. Can you follow these programs?:

REQUIRES MINI MEMORY MODULE:

LOAD to Mini Memory 
1000 CALL INIT 
1010 FOR T=0 TO 750 STEP 24 
1020 CALL PEEKV(T,A1,A2,A3,A 
4,A5,A6,A7,A8,A9,B1,B2,B3,B4 
,B5,B6,B7,B8,B9,C1,C2,C3,C4, 
C5,C6) 
1030 CALL LOAD(T+29000,A1,A2 
,A3,A4,A5,A6,A7,A8,A9,B1,B2, 
B3,B4,B5,B6,B7,B8,B9,C1,C2,C 
3,C4,C5,C6) 
1040 NEXT T 
1050 FOR T=1024 TO 2041 STEP 
20 
1060 CALL PEEKV(T,A1,A2,A3,A 
4,A5,A6,A7,A8,A9,B1,B2,B3,B4 
,B5,B6,B7,B8,B9,C1,C2) 
1070 CALL LOAD(T+30000,A1,A2 
,A3,A4,A5,A6,A7,A8,A9,B1,B2, 
B3,B4,B5,B6,B7,B8,B9,C1,C2) 
1080 NEXT T 
1090 END 


DISPLAY 
READ FROM MINIMEMORY AND RESTORE TO SCREEN:
100 CALL CLEAR 
110 FOR T=1024 TO 2041 STEP 
20 
120 CALL PEEK(T+30000,A1,A2, 
A3,A4,A5,A6,A7,A8,A9,B1,B2,B 
3,B4,B5,B6,B7,B8,B9,C1,C2) 
130 CALL POKEV(T,A1,A2,A3,A4 
,A5,A6,A7,A8,A9,B1,B2,B3,B4, 
B5,B6,B7,B8,B9,C1,C2) 
140 NEXT T 
150 FOR T=0 TO 750 STEP 24 
160 CALL PEEK(T+29000,A1,A2, 
A3,A4,A5,A6,A7,A8,A9,B1,B2,B 
3,B4,B5,B6,B7,B8,B9,C1,C2,C3 
,C4,C5,C6) 
170 CALL POKEV(T,A1,A2,A3,A4 
,A5,A6,A7,A8,A9,B1,B2,B3,B4, 
B5,B6,B7,B8,B9,C1,C2,C3,C4,C 
5,C6) 
180 NEXT T 
190 GOTO 190

  
These listing are not as bad as they look.
CALL PEEKV reads values from VDP RAM - that is where the screen contents and character definitions are kept - and in TI Basic, also your program.
CALL PEEK (no V) reads values from CPU RAM - the console on its own has only 256 bytes (actually in the CPU chip). In this program it is used to look at CPU RAM in the Mini Memory module.
CALL POKEV places values into VDP RAM while CALL LOAD places values in to CPU RAM.
The format is:
CALL PEEK(memory location,value,value,value … etc)
The first value is that in the memory location, the second value is that in the next highest memory location, and so on.
Although not used here, you can also split the commands by using a null string, e.g.
CALL PEEK(location one,value,value,"",location two,value)

So let's have a look at those two listings (and see what is wrong with them!):
LOAD
CALL INIT clears the CPU RAM and ensures you don't trip over anything already there.
Lines 1010 to 1040 look at the screen contents, details of which are in VDP RAM at location 0 to 767 (32 x 24) with 0 at top left and 767 at bottom right. The values stored in these locations are the ASCII code plus 96 (e.g. A is 161).

I have used several locations in each CALL for greater speed. The CALL LOAD places these values into the Mini Memory CPU RAM - the actual address used is not important so long as the address used is actually IN the Mini Memory! (location 28672 to 32767 - ALL numbers used here are decimal). Having placed the values into Mini Memory, they will stay there even when you switch off - until you initialise or replace them. The can be saved to save - with verify function.

So - we have read the screen and placed it into the Mini Memory.
Now lines 1050 to 1080 read the character definitions from VDP RAM and place them into the Mini Memory.
Character definitions for ASCII 32 to 96 are held in memory locations 1024 to 1535. Each character definition takes up 8 bytes. We can infer that the "lower case" characters are initially derived as they are not defined. When you define a character over 96, the definition uses a higher memory location, from 1536 up. The highest memory location used in character definitions is thus 2040.

Now the information is in Mini Memory it can be recalled to the screen by reversing the process - reading Mini Memory and placing the values in VDP RAM.

DISPLAY
The DISPLAY program does just this - moving values from one location to the other, to recreate the screen. I have first transferred the character definitions and then placed the characters onto the screen.

Note A: In this example if you have used characters 97 and 98 you may notice something odd. In normal use memory location 1536 up is used for the VALUE STACK (e.g. variables), and if you define extra characters with CALL CHAR the value stack is automatically moved up to make room for the extra definitions.

In this case we have only moved the definitions to this area of memory - we have not instructed the computer that the value stack starts at a higher address - so it carries on using 1536 up - messing up our definitions for CHARs 97 and 98.

You could get round this by forcing the stack higher by using:

FOR T = 97 to 159 
CALL CHAR(T,"0") 
NEXT T 
before you move the data from Mini Memory to VDP. Note B: If you do not have redefined characters you need only transfer VDP addresses 0 to 750. If characters ARE defined you need only transfer the data for the redefined characters - ASCII 32 is in 1024 to 1031 etc, up.

Note C: The programs given take 25 seconds to recreate the screen, which is the same as using CALL CHAR for every character and then using 24 PRINT statements. This way is much easier to save redefined characters.

Note D: Once in Mini Memory the data can be quickly saved to cassette using the EASY BUG commands "S" and "L" for locations (hex) 7000 to 7FFF. You will be able to use the tape-verify option, and not much tape is used.

This example is given to show you something the Mini Memory is capable of - it is not the best solution to every problem!
===========================
Go to top of page


Here is another program to try with the Mini Memory - can you do this any faster in any other way?

(Use a stopwatch!). 
100 CALL CLEAR 
110 FOR T=0 TO 768 STEP 33 
120 CALL POKEV(T,126) 
130 NEXT T 
140 GOTO 140 
* * *


Crime
Watch out for modules offered for sale without manuals. Watch out for modules offered for sale with a piece of chain attached. Sad to say, after the theft of hand controllers at PCW, Computer Supermarket have suffered the loss of an Extended Basic nodule - which was chained to the display stand! Now, as the module is rarer than gold, they cannot demonstrate my programs. If you are in the North West and want to see some of the programs I offer, call in to Computer Supermarket.

Extended Basic
News from America of a variation in firmware which is causing problems in programs with Sprites moving upwards or downwards - XB v110 contains a new subroutine which keeps track of the number of sprites in use.

Normally when a sprite moves downwards off screen it is still considered "active" and movement from bottom to top is smooth - even though you cannot see the sprite for some of the time.
It is apparent that in some versions of XB v110 this is not the case - the "off screen" section is no longer considered as an active area, and sprites "suddenly" appear, just as they do at screen left.

This has been causing problems in programs where:
1. A sprite is started from "off screen" - it will actually start in a different location than intended.
2. Sprites move vertically with different rates - there can be timing differences in the program execution.

So - if you need a fully transportable program you can no longer start a sprite in the invisible off-screen area, nor can you rely on vertical timing. Apparently only SOME v110 modules behave this way. Please would TI inform us if this applies to EARLY releases or to the CURRENT release. v110 only is affected. v100 doesn't keep count of sprites.

* * *

* * *
I have a mountain of software to review, another mountain "in transit" (including an Assembly Language Asteroids for the Minimem), contracts to negotiate, dealers to supply - help! Why don't days have 30 hours . . .


Access Key Details
Stephen's Entry Page | TI99/4a |Linux |Search | History St Thomas Church Heaton Chapel | Entertainment | Music Links
Light Reference | Educational Reference | Science Fiction | Travel | News Links | Anime