In this article I will tell you some of my experience about improving the programs you write in GfA basic. But speaking of improving I would first like to congratulate the makers of ST NEWSwho keep improving their magazine every time.

In my article you could read in ST NEWS 2.5 (RCS FILES IN GfA BASIC) I told you how you could use resource files. Using them is a good way to make your programs look professional. All the space that is needed by buttons, inputs, etc. can be well shaped using resource files.

But what about the space on the screen that is not occupied by buttons and inputs? What about the information shown on the screen, the output to the user? What about the name of the programand the programmer when they are shown on the screen? What about help pages?

Using functions like TEXT, LINE, CIRCLE, RBOX, etc. can improve your program, but there is another way.You can use a drawing program like DEGAS ELITE to make pictures which can cheer up your program. These pictures can be full screens as well as parts of the screen (blocks). You can draw whatever you like using all the nice functions of a drawing program, and then use the picture files from within your program.

All drawing programs save their pictures in different formats. In this article I will assume you use DEGAS or DEGAS ELITE. If you have another drawing program you can use programs like PICWORKS 2.0 (made by us) to convert your pictures to DEGAS files.

First you'll have to know how a DEGAS picture file is constructed. You must use the uncompressed files: *.PI1 *.PI2 *.PI3.Such a file is 32034 bytes long. A screen (in the computer) is, no matter what resolution, 32000 bytes of information. This means that the file contains 34 bytes of information, that is: 17 words.The first word (2 bytes) of the file is the resolution information.Then follow 16 words which are the colour information.Then follow 32000 bytes which are the screen information.You won't need the first word, so all there is left is the colour information, and the screen information. Quite simple, isn't it?

As I told you a screen in the memory of the ST is 32000 bytes long. Such a screen can be laid on every memory location you like.In fact there are always 2 screens. One screen on which the computer does things like printing, drawing lines, etc., and on the other screen does nothing change. That is the screen the user is looking at.The first screen is called the logical screen, the second is called the physical screen. In most cases the two screens are on the same memory location, so you will see all changes happen.

If you want to put something on the screen, but you don't want the user to see it (yet), then you must lay the two screens on different memory locations. You can, for example make smooth animation by building your picture on the logical screen, and then change the two screens, etc.You can change the two screen locations using the XBIOS 5 function:

Void Xbios(5,L:logic%,l:physic%,-1)Before you change the screen locations you'll have to free the memory, otherwise basic will screw up the screen contents. You can do this by:

Reserve 100000

The number indicates how much memory there will be left for the program and his variables. If you want more or less memory free, that's OK, but 100000 bytes will be quite right for most purposes.

Now you've done this you can ask the computer at which memory location the memory is free for you to use. You do this by:

Memorytop%=Himem

In most ST computers the Memorytop% variable will be around &H47000. It is wise to lay your screens only at locations like &H48000, &H50000, &H58000, &H60000, &H68000, etc.By the way, the memory of your computers ends at &H80000 (1/2 meg) or &H100000 (1 meg).

Now we can load a DEGAS ELITE picture file into the memory. Because the screen location is at &H78000 we will load the picture at &H70000. The steps of &H8000 are in fact 32768 bytes long, so there is enough memory between the locations to leave the extra 34 bytes of the picture file. We will load the picture at &H70000-34, so the screen information will immediately be at the location of &H70000.

Bload "A:\PICTURE.PI1",&H70000-34

Now we can't see the picture, because it is not on the screen memory. We will now move to picture information to the screen. Do this by:

Bmove &H70000,&H78000,32000 ! move 32000 bytes &H70000 > &H78000

Now the picture is on the screen. Tada!!! But wait ... What happened to the colours? We didn't tell the computer anything about the colours, so he didn't change them. Quite logical. But how do we the the computer to show the right colours:

Void Xbios(6,L:&H70000-32) ! get colours at &H70000-32

Remember the colours were right before the screen information, so at &H70000-32. Xbios 6 is used to get the colours at a certain location.By experimenting with this stuff you must be able to use pictures from within your program.

If you have any questions you're welcome to write to me. I will answer them if I can.

I wish you a successful and joyful journey through the hazardous bits of your kompjoeter.

Disclaimer
The text of the articles is identical to the originals like they appeared
in old ST NEWS issues. Please take into consideration that the author(s)
was (were) a lot younger and less responsible back then. So bad jokes,
bad English, youthful arrogance, insults, bravura, over-crediting and
tastelessness should be taken with at least a grain of salt. Any contact
and/or payment information, as well as deadlines/release dates of any
kind should be regarded as outdated. Due to the fact that these pages are
not actually contained in an Atari executable here, references to scroll
texts, featured demo screens and hidden articles may also be irrelevant.