Welcome to the second edition of our publication, from the response we have had to the August issue it would seem that we have hit the right note with many of you. The big news since then of course is that all the TI prices have come down making the system much more accessible to potential buyers, indeed sales of the computer have risen to make the TEXAS about the fifth or sixth best selling machine at the lower end of the computer market.
What this means for those of us who already own a 99/4A remains to be seen but it is certain that there will be thousands of new owners after the Chrishmas rush and hopefully that demand will make the publishers of the popular computer magazines sit up at last and take notice.
Once more in this issue we have programs in both BASIC and EXTENDED BASIC, news, hints and programming tips, we continue our look at the extended BASIC cartridge and the advantages it offers and due to the interest shown in the Mini-Memory Module we have a review of its capabilities and uses.
Firstly, something we did not have for the first issue, letters. All enquiries are answered either personally or through TI-User and since August we have been able to help quite a few people with either queries about the machine, peripherals, software and programming problems. Most notable from all these enquiries has been the difficulty encountered when attempting to convert games to run with joysticks as opposed to keyboard inputs, we hope that the article in this issue will clarify this subject.
Remember TI-User is intended to provide an arena for Texas owners to exchange views and information, it therefore depends on its readers to write in with letters, articles, tips and even programs. If you haven't a printer don't worry, send us a cassette and we will take it from there. All programs sent to TI-User will be returned and copyright stays with the author.
The membership of TI-User is growing steadily and is fairly evenly distributed throughout the United Kingdom but we extend special greetings to members in Hong Kong, West Germany and Belgium and members in H.M.Fbrces in BFPO 18, BFPO 29 and BFPO 30. we look forward to receiving contributions for TI-User from some of these users in the future.
Incidentally, we will be selling back issues of TI-User at 75p per copy to members whilst stocks last. Finally, we would like to hear more from young users, so why not write in and tell us about your best scores, favourite games and what you like and dislike about the TI 99/BA ? We look forward to hearing from you, happy computing ...
Congratulations, I have enjoyed the first issue of TI-User, it is excellent, may it continue to be so. Having owned a TI 99/4a for six months I find it a marvellous machine but have one query.
When running a program which uses almost all the memory (unexpanded standard console, the program constantly takes rests, about 1-2 seconds at irregular intervals. The program sequence is unaltered and performs correctly. The rests are most apparent when playing music or executing 'PRINT AT' routines. Could you please offer an explanation as to the reason and possibly provide a solution to this problem.
Other readers may find this useful:- To work out how much memory is
used and what is still available add these three lines to the end of your
program (line numbers used here should be adapted):
The program will end with the error MEMORY FULL IN 10000- Type in 'Print
A*8' and press enter. The number on the screen represents the number of
BYTES left for your program. (A BYTE is enough memory to store one character)..
10010 GOSUB 10020
10020 GOTO 10000
Then enter RUN 10000
There are two possible reasons for the rests outlined in your letter, the first and most likely explanation for all noticeable stoppages is that the computer is re-arranging its own internal storage areas, including the area where our program variables are kept. This is known as 'garbage col- lection' and becomes worse when you have a long program in the memory. Unfortunately it is quite normal and consequently there is nothing you can do about it.
The second and less likely reason for rests can be found most visibly in Extended Basic where you might send a sprite moving across the screen only to discover that it pauses briefly whilst your program is executing 'Print' and 'Display At' commands. The reasons for this are complex and would require a lengthy article to explain although this kind of rest is less of a problem than the other. Once again it is unfortunately not possible to remove these rests.
Thank you for your programming tip, I'm sorry for the bad news.
Could you please tell me how I can learn TMS 9900 machine code without
buying the Editor/Assembler as I already have the Mini-Memory and Line-by-Line
Assembler. Thank you.
For those who don't know, machine code is the fastest computer language available but at the same time it is possibly one of the most complex and you should think carefully before spending large sums trying to gain access to that speed. If you already have the Mini-Memory then you will also have an Assembler which is an essential tool in programming with machine code.
This Assembler requires that you input a series of what are called mnemonics and when you have finished, it will then do all the hard work for you by translating your mnemonic instructions into machine code. The difficulty lies in understanding the use and application of the mnemonic instructions and here you will require a technical manual.
The only manual that I would recommend is the Editor/Assembler manual which can be bought as a separate package and which will have all the information necessary to get you started; be warned, however, this book is not easy ! Other manuals and tutors are available from America and TI but I would make sure that they are exactly what you want before you order them since this kind of literature is expensive.
For more information on the Mini-Memory see our review in this issue.
I have a program called 'Slugs and Snails' but there is one problem, you have to use the keyboard to move. How could I change this in order to use the joystick controllers ?
YVONNE BAMH 0 GATESHEAD
As a newcomer to computing I have found the TI 99/9A a pleasure to use (after an unimpressive spell with the ZX 81) but one application has eluded me, i.e. transferring a keyed program to 'Call Joyst'. Fbr instance, in the program 'Scrumper’ in the August issue of TI-User, the keys 'S' and ’D' are used for direction; how does this convert to 'Call Joyst' ? I would be obliged if you could enlarge a little on the explanation given in the manual. Trusting I am not asking too much.
W. S . RUSSHJ. CHATHAM
An explanation of how to convert programs to run with a joystick option seems to be a popular request so we have devoted a whole article to brightening up this dark little corner of the 'Users Reference Guide'. Thank you for all your letters on this subject.
Congratulations on your first issue. You've got the balance right, but I hope you will develop the book review section, and indicate where books can be bought. I have traced 18 titles readily available in England and am ready and willing to supply a list to anybody who cares to get in touch with me. Good luck with the new venture; may each issue get fatter
H.L. PRETTY CRUYDON
Thank you for your kind offer. I'm sure many people will be interested in . your list and as to getting fatter, just look at us
I found your first issue of TI-User interesting and helpful, especially the 'TI-Tips' section on the use of the control key.
Until now the only drawback I have found with the TI 99/4a is not having a pound sign, but now, thanks to your tips, I have one. The char code I use is 'Call Char (128,"001824207020207C"). (Press CONTROL and the 'comma' to get the sign).
Also, could you tell me, do the new storage devices outlined in the last issue of TI-User only work with the Hexbus or can they be used with the expansion box, and when is it likely they will be available ?
Concerning your footnote about the Mini-Memory Module, could you
please review this as personally I know very little about it and to what
purpose it could be put. Keep up the good work and thank you in anticipation.
The new CC 40 peripherals are not yet available in this country and will probably not be for several more months in a form that can be connected to the 99/4A. This makes it difficult to discover the finer points about these devices so that to your questions we can only say that as of yet we don't know. Hopefully there should not be a problem connecting them to the peripheral box but that remains to be seen. As far as we know the Hexbus devices should be available early next year.
All three games were on display at the Home Entertainments Fair at Olympia this year where they were put on show for the first time. One of the most interesting things about them was that instead of plugging into the cartridge port on the front of the machine, they fit into the port on the right hand side which, amongst other things, mean: that the games do not have to be selected from a menu before you start, they are there immediately. These cartridges are important because they represent the first to be produced for consumption in this country by a large multi-national company other than TEXAS.
This is what I like about the TI 99/4A: I like the sound, how you can make lots of graphics appear on the screen, I like the Basic, I like the games that you can do and last of all I like how you do the Basic.
TI-Basic is not quite as flexible but we can, with a little extra programming, produce the same effect, allowing you, for instance, to print the word 'SCORE' in the top left corner of the screen. How is this done ? Well, let's have a look.
Firstly, we need to store the sentence or word to be displayed. we can
do this with the command :
30 LET A$="WHO NEEDS DISPLAY AT?"
Also, we need to know how many rows down and columns across to print the first character of AS so we add the lines
10 LET ROW=10
20 LET COL=4
(webnote - you can omit the word LET and it makes no difference, it is entirely optional. COL=4 is fine on its own)
With this information stored we can now branch away from our program
to a small subroutine which we can store at the very end of any program we
write. We do this with GOSUB so that when the subroutine has finished print-
ing our message we can carry on from where we left off :
40 Gosub 5000
In this instance, when our message has been printed we will get the pro- gram to pause until we use 'Function' and '4' to break it :
50 Goto 50
In line 40 the program will jump to line 5000 and begin executing the commands it finds there until it meets the command 'RETURN'. This will cause the program to jump back to the line after the Gosub, namely line 50.
At 5000 we are going to use the command 'Hchar' to print each character in the message onto the screen one after the other, starting at 10 rows down and 4 columns across with the first character.
First we must use a FOR/NEXT loop to count how many characters are to be printed
5000 For I=1 to LEN(A$)
'Len(A$)' means the number of characters in the string A$ which is 21. If you use the command 'FOR' you must complete it by using 'NEXT' later on in the program
5020 NEXT I
Now we can put the command Hchar at line 5010 so that it will be executed once for every character in the string A$.
we know that we want to print the message 10 rows down, that's simple enough, but we need also to print each character in the message one column further to the right of the last, we can do this with the following
5010 CALL HCHAR(ROW,(COL+I)-1...
Remember, with each pass of the FOR/NEXT loop, one is added to the
value of I. Adding this to the starting position COL achieves what we are
after. Because the value of I starts at 1 we must subtract 1 from C+I.
For each pass of the FOR/NEXT loop, we must also calculate the ASCII code for each character in the message, this is done with the follow ing :
5010 CALL HCHAR(ROW,(COL+I)-1,ASC(SEG$(A$,I,1)))
It's not as horrific as it looks. What it does is to find the ASCII
value of the segment of A$ starting at 'I' and with a length of one character.
For instance when the value of I is 1, the ASCII code for the first character of the message will be calculated, when the value of I is 2 the second charac- ter's code will be calculated. This will be repeated until the entire message is displayed on the screen.
Having displayed our message we must end the subroutine with line 5050
With this subroutine stored at the end of our programs we can call it up at any time during the rest of the program by setting the values of ROW, COL, and A$ and then using 'Gosub 5000' to print the new value of A$ onto the screen.
The following is the complete program
10 LET ROW=1O
20 LET COL=4
30 LET A$="WHO NEEDS DISPLAY AT?"
40 Gosub 5000
50 Goto 50
5000 For I=1 to Len (A$)
5010 CALL HCHAR(ROW, COL+I)-1,ASC(SEG$, (A$,I,1)))
5020 Next I
(2015 UPDATE- TI USER used lower case in its program listings, used LET and used GO TO instead of GOTO.)
Since the August issue of TI—User, we have had a large number of requests for an explanation of how to convert games from keyboard operation to joystick operation and consequently we have devoted this section to such an explanation. Before getting under way, however, I would like to mention one or two points which some readers should find useful.
The first concerns some owners of version 110 Extended Basic who will have the manual for the older version and will therefore not know of a simple device which can be used to change program line numbers. The procedure is as follows.
1 Edit the line whose number you wish to change
2 Push enter
3 Hold down the 'function' key and push 'REDO' (Key 'B')
The line will then reappear on the screen and you are now able to alter the line number.
RED0 always has the effect of recalling the last thing to be entered.
The second point concerns the editing procedure in TI-Basic. The standard method is to type EDIT and then the line number but there is a faster and less cumbersome method. All you need do is type out the line number, hold down the function key and press 'X' or 'E’.
When you wish to read an input from a joystick there are two commands
available, the first 'Call Joyst' will tell you which position the joystick
is in and the second 'Call Key' will tell you if the fire button has been
pressed. The following lines will scan joystick 1. and check to see if the
fire button has been pressed.
10 CALL KEY(1,K,S)
20 IF K=18 then ......(the fire button has been pressed)
The 1. in line 10 indicates that you wish to scan joystick 1 and the variables K and S return the key number and the status as normal. The key number for the fire button is 18 meaning that the variable K will equal 18 if the button has been pushed.
Call Joyst operates in much the same way, you must specify which joystick you wish to scan by placing either a 1. or a 2. as the first variable.
10 can Joyst(1,A,B)
The difference is that now there is no status variable, A and B will be set to either -4, 4, or 0 depending on the position of the joystick when the scan is done.
If you look at page 94 of the 'Users Reference Guide', the section entitled JOYST Subprogram, you will find a chart giving the various values for A and B for each of the nine positions. What can we make of this chart ?
The most obvious thing is that when the joystick is at rest, both values are zero — this is similar to the status variable with 'Call Key'. What is not quite so obvious is how this translates.
10 CALL KEY(0,K,S)
20 IF S=0 THEN 10
10 CALL JOYST(1,A,B)
20 IF (A=0)*(B=0)THEN 10
Confused ? What line 20 is saying is If A=0 AND B=0 Then jump back to line 10. This kind of logic is called Boolean logic and if you haven't come across it before don't worry, all you need to remember about it is to use the brackets as shown and that the '*' sign can be used to mean 'AND' and the '+' sign to mean 'OR'.
In order to test for each of the diagonal positions you will find this method to be necessary (although other more long-winded methods exist), examples are given below : [use upper case- lower case was given in original article]
10 Call Joyst(1,A,B)
Thankfully, programs which use the keyboard do not often require you
to move diagonally, but use the 'E', 'X', 'S' and 'D' keys to move. Here,
the translation is much simpler.
20 If (A=-4)* (B=4)Then... (up to the left)
50 If (A=-4) * (B=-4)Then... (down to the left)
40 If (A=4)* (B=-4)Then... (down to the right)
50 If (A=4)* (B=4) then ... (up to the right)
If we look at the chart in the reference guide again we will find that whenever the joystick is in the up position, the variable B will be equal to 4. Similarly, when it is down, the variable is equal to -4. When it is held to the left, the variable A is always equal to -4 and to the right, the variable A is equal to 4. This makes translation an easy process.
[use upper case- lower case was given in original article]
10 Call Key(0,K,S)
20 If K=69 Then.... up)
30 If K=88 Then.... down)
40 If K=83 Then.... left)
50 If K=68 Then.... right)
10 Call Joyst(1,A,B)
20 If B=4 Then...... up)
30 If B=-4 Then..... down)
40 If A=-4 Then .... left)
50 If A=4 Then...... right)
Different programs will use different keys than the ones shown here but once you have discovered which direction they control you can then use the appropriate joystick equivalents.
And that's it.
The standard TI99/4a console is unable to utilise expansion memory unless a module is inserted into the console which has been designed to work with memory expansion.
The following modules can use expansion memory:
The 32k memory is split into two distinct portions for use by EXTENDED BASIC.
One area, of 8k is reserved for assembly languaoe utilities (they may however use more than 8k).
The 24k area is reserved for EXTENDED BASIC programs.
The VDP ram is used to store variables.
HOWEVER: when usind a cassette player to store programs, you will not be able to save a program in excess of about 13k. as the cassette utilities use the VDP ram.
This does not mean that you cannot write longer programs in Extended Basic.
Your PROGRAM can now fully utilise the 13k or so available, and you need not worry about the memory used by variables, especially DIMmed arrays.
It is not unusual for a program occupying 13k to need 16k or more of memory which you would not have available without an expansion memory.
Although TI nave not provided a tape loader for machine code programs and utilities, there are some vendors who have written their own in Extended Basic.
It is also possible to load machine code utilities yourself using Extended Basic's CALL LORD to load the individual byte values into the required memory locations.
One vendor has a game which senses whether the 32k ram is connected and automatically loads a machine code utility to speed up program execution if the 32k is found to be there.
If a disk system is available an Extended Basic program may occupy the full 24k available.
The memory expansion also allows you to access the CPU RAM by using CALL LOAD and CALL PEEK. Typically this can allow you to have a program which rewrites itself. The Extended Basic program can be found in CPU RAM addresses -25 downwards. Stainless Software has a sketching program which saves a pseduo hi resolution sketch to the program in this manner.
MINI MEMORY MODULE:
As well as adding 4k ram itself, the Mini Memory Module can use the 32k ram, in several different ways.
The 32k is NOT available for long programs, which still occupy the 16k VDP ram.
The 32k may be utilised as an 'electric disk’ allowing very fast access to data. The 32k is used with the same commands as a disk file, and all the different types of file handling may he carried out.
Althouqh data stored here is lost when the power is disconnected, it is still useful to have this facility.
Data may be stored by one program and used by another, so long as power is not turned off. A program can use this data file as a form of data buffer, to avoid cluttering the memory with too many variables. The access to data in 32k ram is VERY fast, much faster than to disk.
It is also possible to load machine code utilities longer than 4k... when the 32k is connected, machine code is automatically stored in the 32k ram. Mini Memory does provide the means to load such programs from tape.
It is possible to store a TI BASIC program in the 32k ram using a SAVE command, then use another PROGRAM from tape, and then return to the first program using OLD.
The time to load from the 32k ram is very much shorter than loading from tape.
PERSONAL RECORD KEEPING cannot use the 32k ram.
LOGO, TI WRITER and MULTIPLAN all require 32k ram expansion.
TI WRITER is used with a printer and RS232 adaptor, while LOGOD and MULTIPLAN are usually used with a disk system.
TUNNELS OF DOOM : A command cartridge from TI.
The Tunnels of Doom command cartridge recently released in this country by TI is designed to be used by cassette—based adventure programs written specifically for this module. In this respect it is similar to the Adventure module for which you can buy several cassette-based adventure programs. The adventures for this module differ in that they are graphics adventures and if the first in the series called 'Quest for the King' is anything to go by they are exceedingly good too.
As with the adventure module, when you buy the Tunnels of Doom module you get a game with it, 'Quest for the King', so far the only game available for this cartridge (apart from a cut down version of 'Quest for the King' nksigned for beginners and youngsters called •Pennies and Prizes' which is also included with the module). The game starts off by allowing you to select the number of players you wish to have (up to four can play at once) and to choose the kind of character each player will have. Each of the four players can be either a warrior, a wizard, a rogue or if only one player is being used he can be a hero. Each type of character has different abilities and can use different weapons. Oh, and I almost forgot, you can choose the name of your characters, a process which can take longer than the game for the artistically minded
The idea of the game is that the king is trapped on the bottom floor of a series of dungeons iyou select the number of floors from 1 to ten) and his Orb of power is lost, it is therefore up to you and your team to find him and bring him to the surface. This, however, is not a simple matter and you must first purchase arms and ammunition for your team before descending to the first level.
On each floor of the dungeons you move through a three-dimensional maze of corridors, presented in full perspective. Leading off from the corridors are various doors and these doors lead to rooms in which lie sometimes treasures, sometimes monsters, often both and you must enter into battle to proceed. As you enter a room, you are given a view of the room from above and you attack and defend yourself by moving each of your players, one at a time, using the keyboard. At various times you can call up information on the different types of monsters (all the monsters have different characters and tactics and there are many different types) and on the various states of your players whose needs have to be watched over carefully if you are to survive.
Before you can descend to the next level you must find a map of the level you are on although as you move about you can call up an incomplete map showing only the places you have been. On the fourth and eighth floors (if you are using that many) there are stores where you can replenish your arms with better ones and buy rations and ammunition with what gold you have collected on the way down. Somehow, by utilising every source of information, every spell, every trick and weapon you must battle your way to success.
The complexity of this game gives it the atmosphere of a board game and it certainly has many similarities in that respect. The fact that several players can play at once makes it ideal for a family game and there is still that familiar poring over the instruction manual that accompanies all the best board games. If you are a dungeons and dragons fan, then this has to be one of the best available.
EXTENDED BASIC : A programming language from TI
In the Basic Programming section of this issue, we described a way of achieving a form of 'Display At' in TI—Basic. In extended Basic we have this feature built in along with several other new commands which can be used along side Display At in order to enhance the display.
Display At can be used to print numbers or strings at any point on the screen, so that if you wished to, you could print the word 'HELLO' in the centre of the screen by using a single command. One advantage is that it happens very quickly which means that you can use several Display At commands to fill up the screen with graphics almost instantaneously.
Very similar to Display At, is the command Accept At, which will allow you to input data at any point on the screen. This inputting of data happens in exactly the same way as it does with the Input command, only instead of seeing what you type in appear on the bottom line, you can make it appear where you like. For display purposes this is invaluable.
Also, with Accept At you can tell the computer exactly what kind of data you want to be entered and it will then not allow the user to enter any other kind of data. Fbr instance, you might want someone to only input either the letter 'Y' or 'N', in which case you would tell the Accept At command to allow inputs of only one character at a time and to accept only these letters.
Once more this command is great for making up a professional—looking display and when used properly should mean that your programs are extremely user- friendly.
Another feature of these commands is that you can decide that you want
any data you input or display to be laid out on the screen in a specified
fonmat. Fbr instance, you may wish to display several sets of numbers down
the screen, making sure that each number is trimmed to two decimal places.
You could do this by using the Image command to set the format e.g. :
10 IMAGE ####.##
You can then use the command :
100 Display At(10,4):USING 10:N
This will display the number N on the screen using the format specified in line 10, where each '#' sign represents a single digit in the number.
The power and application of such commands as these only become apparent after you have been using Extended Basic for a while, then the idea clicks and you find yourself using them for everything from your simplest programs to your most advanced yet.
With over 40 new commands, discovering Extended Basic is a fascinating and delightful process in itself and with each issue of TI—User we will be covering just some of these commands a few at a time. If you have any specific questions about the Extended Basic module then drop us a line and we will attempt to give answers through these pages.
Description : A Solid State Software Cartridge from TI, giving you an extra 4K of RAM, QK of RUM and 6K of GROM as well as adding several new com ands to give you a more powerful TI-Basic.
There are essentially two reasons why a person should want to purchase the Mini—Memory Module (MMM), the first being that it gives you the ability to write short assembly language programs and the second is that it gives you a more powerful Basic along with 4K of RAM in the module itself which can be used as a fast-access storage area.
The most important thing to note about the 4K of RAM is that it is CPU RAM as opposed to the VDP RAM in which your TI—Basic program is stored. This means two things, one, that you cannot use this area in order to make your Basic program larger, you can only use it as a fast access data storage area, and two, because CPU RAM is directly accessible from the TMS 9900 processor that drives the computer you can use this memory to store machine code programs.
What, I hear you cry, is the advantage of this extra memory if you can't write lengthier Basic programs ? Well, the answer is simple. Inside the Module is a built—in battery which will make sure that any data stored in its memory is not lost when that module is removed from the console. For example, you could write a 4K Basic program, save it in the MMM, remove the cartridge and walk to a friend's house where you could plug in the module and have your program instantly running. Alternatively, it is ideal for storing files which you constantly need to update, since it stores and loads data faster than a disk drive.
Along with the MMM's storage capabilities it gives you an extra seven subprograms which can be used from Basic. These are mostly concerned with aiding you in the use of machine code although some have direct applications in Basic. For instance, Call PeekV and Call PokeV can be used in the same way as Gchar and Hchar although they work at a much greater speed and can accordingly increase the operating speed of your programs.
The assembly language applications of this module are limited only by your own ability with this language and by the 4K of RAM in the MMM itself.
The 4K limit can be overcome by adding the memory expansion unit but it should be stressed that writing assembly language programs is not easy and there are very few books which will aid the beginner in this language.
However, with TI's Editor/Assembler manual (which can be bought separately) it should be possible for someone with a determined nature to glean a rough working knowledge.
Machine code is next to impossible to write straight off and even the professionals who write such games as Parsec and Munchman use a programming tool called an assembler. This allows the programmer to enter his program in the fonm known as mnemonic instruction code (what ?) which makes things somewhat simpler. This is what the Editor/Assembler manual describes amongst other things, and at this stage a program written using mnemonic instructions is said to be an assembly language program. It is then up to the Assembler to translate this program into machine code.
When you buy the MMM, you also get a cassette on which is just such an Assembler ready for you to use and also a flashy demonstration program called Lines which uses the high resolution mode of the TI 99/4A. When you load the Assembler you will find that it takes up more than half of the 4K of RAM leaving you with a small area for your program. In order to use the full 4K, you will have to construct your program in several segments and then write them over the Assembler at a later date.
To aid you in this task you can use a program called Easy Bug, which is built into the MM to help you debug your programs and which, for the beginner, is not at all as easy as the name suggests it is. This program allows you to look at programs in memory and to move or alter them byte by byte.
The MMM comes with two manuals, one describing the use of the Assembler and the other describing in 83 pages, the uses and capabilities of the module. Both manuals are well written but it is important to remember that mental gymnastics are the order of the day where machine code is concerned.
In conclusion, the MM offers a myriad of capabilities for your money but whether or not you will be able to make use of all these abilities is another matter. For most people it will make an excellent data storage device. For those thinking of getting into assembly language this module provides everything you need except a tutorial manual and when you are dealing with a subject such as this, that is a very big 'except'. There are, however, an increasing number of software packages for this module, accessing the high speed of assembly language and that certainly makes it worth keeping an eye on.
Thanks to all those who contributed to this issue of TI—User with letters and programs and especially to A.J.Frampton for his Extended Basic program 'Trax' and to Stephen Shaw for his article on 32K RAM expansion. Remember, we are here to provide a means by which owners of the TI 99/4A can pass information amongst each other, so tell us what you know and we will pass it on and also tell us what you would like to know and we will try and help.
I hope you enjoyed this issue and if you write in, please mark your letter clearly with the name 'TI-User', and send it to the following address
TI—User c/0 Galaxy QQ High °treet M*"·tone K;4t
This issue now completed with everything that was legible.
Some content has been omitted due to poor quality original copy causing scanning problems.
end of article