ST NEWS

Volume One, Issue Five, Published on Sunday, October 5th, 1986

ST NEWS is an independent publication of the Public Relations service of The ACC™.
The information contained in this bulletin is believed to be free of inaccuracies. ST NEWS is published at irregular intervals and
is distributed by the ACC™'s public relations division.

THIS TIME IN ST NEWS.........

ST SOFTWARE NEWS                                                4
 Some nice new programs have been seen since the launch of the   previous issue of ST NEWS.  A quick look over some of these   titles in this article....
GFA BASIC TIPS & TRICKS                                         6
  A more in-deep look at GfA BASIC commands,  to reveal more and   more of this fabulous new BASIC language....
REPORT ON THE NATIONAL ST USERGATHERING AT UTRECHT ON SEPTEMBER 20TH, 1986                                                     11
  The foundation "ST" already held a large meeting on March 22nd,   but the meeting from September 20th was even more succesful....
ALL ABOUT XBIOS FUNCTIONS                                      13
  In the previous  three issues of ST NEWS we glanced through   several aspects of the ST: System variables, BIOS functions and   GEMDOS functions. This time, we're going to have a look at the   XBIOS functions....
HINTS & TIPS FOR WINTER GAMES                                  33
  In ST NEWS volume 1, issue 3, we already reviewed this very nice   game of the American softwarehouse Epyx. This time, we will give   you some useful hints & tips for the game: Did you know how you   could jump a '10' for Hotdog? Read it there!....
THE ULTIMATE EXAMINING UTILITY V2.8                            36
  This  is the second issue of ST NEWS that is supplied with some   listings on the disk. This is one of the programs for this time.
  It is  not meant as a thoroughly useful program, but to learn   more about the MENU command of GfA BASIC (explained elsewhere in
  this bulletin), as well as some other commands....
THE MUSIC CORNER                                               47
  This column will from now on be  present in every issue of ST   NEWS, and is written by our Music-and MIDI specialist Antiware..
PATTERN EDITOR                                                 49
  A very useful program that enables you  to succesfully design   your own fill pattern, mousepointers and sprites, written in GfA
  BASIC (ofcourse)....   SOMETHING ABOUT INTERRUPTS                                     56
  By Mark van de B. Here you can read all about interrupts, etc...
THE DISC                                                       60
  A novelette by Micheal Abbott....
ARE YOU A GOOD ST OWNER?                                       65
  Another  article from Delta Software Productions (Remember him?   He wrote the first article about GfA BASIC in ST NEWS Volume 1,   Issue 2), that wonders if you are a good ST owner....
USER GROUP UPDATE                                              67
  From now on,  you will be able to read the addresses of all ST   user clubs we know, all over the world...
SOFTWARE MEGA-REVIEW: NEW PSYGNOSIS GAMES                      70
  Recently, the company that wrote 'Brataccas',  Psygnosis,   published two new amazing games for the ST:  Deep Space and   Arena. A review if those games can be found here.....

CLEANING YOUR MOUSE                                            73   In this short article, Antiware explains how you can clean  your
  mouse, to assure smooth and optimal mouse movement....
QUESTIONS AND ANSWERS                                          74
  Yet more questions to answer and answers to questions....
RTOS, A MULTITASKING OS FOR THE ST                             79
  Finally, tru Multi Tasking on the ST....
THE ST I/O PORT                                                81
  Now,  a real 32-bit I/O port for the ST, to do all kinds of   things with external devices hooked up to your system....
DID YOU KNOW THAT?....                                         83
  More  news and things everyone ought to know in this all-  revealing, exciting column....
HINTS & TIPS TO "THE PAWN" PART I                              89
  The first man to solve "The Pawn",  the superb Rainbird-  adventure,  has now written a two-part article for the people   that have never succeeded to do so. In the next issue of ST NEWS   we will publish part II, and in issue 7 we will launch..........   THE SOLUTION (By Math C.)!!
USEFUL PEEKS & POKES                                           91
  Here you can read something about POKEing sound and reading the   joysticks from BASIC....
GEM VDI CALLS PART II                                          94
  We were  quite lucky that Manus could finish this article in   time, but here it is....
MORE ABOUT THE ACC'S READER'S SERVICE                         105
  Last time,  we published a lengthy article about our reader's   service:  What can be done with it, and what shouldn't you do   with it? Read it here again....
(P)REVIEW: SOME ASTRONOMY PROGRAMS                            110
  Written by the utterly amazing computer freak - in the broadest   possible  meaning of the word - Rufus Camphausen of the Canopus   Esoteric Information Service (whatever that may mean).....
SUPER HUEY REVIEW                                             112
  Read our opinion  about this C-64 conversion in this short   article.....
NEXT TIME IN ST NEWS:                                         113
  Read here what you may expect to read in ST NEWS Volume 1 Issue   6, that will be launched in about the second week of November...
HOW TO ORDER BACK-ISSUES OF ST NEWS OF THE ACC™               114
  What did  we write in earlier issues of ST NEWS? How can you   order back-issues? We explain it in this short article....
ST NEWS COLOFON                                               116
  Again, we feel obliged to our writers to include this colofon...

"A Computer Story" written by myself has been discontinued, mainly because I felt a great lack of inspiration and self-confidence. Another reason was, that we have now come accross some really good novelettes (and there's no use in publishing two computer stories, is there?). These are much better (both the plot and the use of English).
            Cronos from The ACC™

ST SOFTWARE NEWS by Cronos

The time that has elapsed between ST NEWS volume 1 issue 4 and this issue, has turned out to be rather actionless with regard to new launches of software. I must say, the previous months were quite the contrary. But we have succeeded to have a good look at some new programs, the first of which is called "Phantasie".
"Phantasie" is what the Germans call "ein Rollenspiel", so not an adventure, but also not not  an adventure. This is one of those games for which one can say: One has to like it ever to play it. Indeed, if you're not a fan of these games, but more the "Time Bandit", "Joust" and "Major Motion" freak, I think you'll never like it. It can be compared a bit to Epyx' "Temple Trilogy" or "Rogue". I know a few nuts that are truly addicted to these games (especially "Rogue", eh, FSP?), but it's not my piece of cake. "Phantasie" is a bit better than Epyx' products, maybe because the graphics are better taken care of.
One starts in the city of Pelnor (if one start a new game afresh - for which possibility a utility is added to the disk). There, you have to assemble a group, consisting of wizards, priests, sprites, fighters, etc. They may be of various types: What about human, gnome, dwarf, and there's more. When you leave the city (after having bought the essential food and armour) you walk across a large country. In that country, you'll have to fight monsters, be strategic and map dungeons. It's quite attractive to play,  but it shouldn't be done too long - then, the game starts being rather slow to play - and dull, too.
Now, it's time to review some Public Domain again. This time, another 100% software magazine called "F.A.S.T.E.R." will be looked at. Firstly, it's completely different than ST NEWS. Where they (a group of Canadians) use a completely self-written program, we use "First Word Plus". Because of that, their magazine takes up quite a lot of space: one issue regularly is one disk side in length (when cut down to English only - when you leave all the French files on the disk as well, it's one double sided disk in length). They publish it once in two months, and each issue generally contains 2 of 3 reviews, 2 tutorials and 2 or 3 programs (sometimes very handy ones, I must admit!). The program runs in high-or medium resolution, for which the authors made different front pictures. The pictures are generally very good (but that you can see for yourself if you order "F.A.S.T.E.R." through our PD service - have a look at the article "The Amazing Cracking Conspiracy™ Reader's Service", almost at the end of this bulletin). The magazine is an initiative of a bulletin board in Montreal, Canada. It isn't spread like ST NEWS. Personally, we think that their magazine looks better, but ours offers more information. Also, our magazine is published more often. But you can make up your opinion yourself through our PD service. Oh yes, their PD offerings are massive (especially for picture freaks!).

Another commercial program to be launched recently is "X-Tron V2.0". You might remember that we talked a bit about "X-Tron" a little while ago; now, RDS software has launched the follower-up. Principally, the game is still the same. But in this version you get different opponents on each level (which also move differently sometimes!). Furtheron, you get a bonus ship on every thousand points instead of after each finished level (that means much less lives!). The music (digitized) in the beginning seems to be a little bit re-mixed, but is practically the same.  Apart from subtle changes to the game screen and the color change of the author's names, "X-Tron V2.0" is much alike "X-Tron". But it's much more difficult. Our record is getting to level 10 (but the opponents on that level are very difficult to hit; you'll understand why when you see it!). Whereas the previous "X-Tron" wasn't that difficult (Antiware went to level 18), "X-Tron V2.0" is a tough nut to crack. But it is surely one of the best arcade shoot-'em-up games! Brought out by RDS software, Germany (for the address, please refer to the "Useful addresses" section of ST NEWS Volume 1, Issue 4).

GFA BASIC TIPS & TRICKS by Cronos

In this issue of ST NEWS, we're going to have a look at some GfA BASIC commands. I know you are all desperate to learn about the SPRITE command, but you'll have to wait for the next issue to read about that.

Firstly, we'll have a look at the ERROR command, which format is as follows:

             ERROR x

The value of 'x' can be between -128 and 127, but has to be integer. This command simulates the occurance of an error with the number of 'x'. It can be handy when you are developing error-handling routines. A command that is very closely related to the ERROR command is the function ERR. This function gives you the number of the error code belonging to an error that has just occured. Also belonging to these is the command ON ERROR. If you add the line "ON ERROR GOSUB procname" (where procname is the name of a procedure or subroutine), the program will jump to that procedure whenever an error might occur during execution of the program. When it is necessary to jump to that routine a second time (or more times), you must turn it on again in the error routine itself (with "ON ERROR GOSUB procname"). When you want to turn off this function (so that you'd get normal errors), you'll have to add the line "ON ERROR".
By the way, there is a nice feature about procedures in GfA BASIC: you can actually define local variables. Have a look at this example program:

     GOSUB Subroutine(7)
     PRINT "When back from the subroutine, A=";A
     END
     PROCEDURE Subroutine(A)
       PRINT "In the subroutine, A=";A
     RETURN

You see that A gets the value 7, but if you try to PRINT that same 'A' outside the procedure, you'll get 0 as a result. By the way, the line with 'END' on it may be left away, because a program end execution when it runs into a procedure (so through this way you will never have to annoy yourself agian about "RETURN without GOSUB errors" at the end of a program. Another thing that might be handy to know is how you can define variables to be 'local' without sending them with the GOSUB or receiving them with the PROCEDURE. You can achieve this by using e.g. 'LOCAL A'. That way, 'A' will be a local variable.

Now, let's have a look at pull down menus etc.  In this article, I will describe the basics of menu programming; you'll have to look at the listing of "The Ultimate Examining Utility", elsewhere in this bulletin, for an example of how to use these basics.

Concerning 'menu' functions, GfA BASIC is equiped with several commands. They are:

         MENU array()
         MENU KILL
         MENU OFF
         MENU n,x
         ON MENU GOSUB procname
         MENU (x)
         ON MENU KEY GOSUB procname
         ON MENU MESSAGE GOSUB procname
         ON MENU IBOX a,x,y,w,h GOSUB procname
         ON MENU OBOX a,x,y,w,h GOSUB procname
         ON MENU

Quite a list, don't you think? Now, let's explain these commands so you also know how to use them. Here's what you must do to set up a menu bar with pull-down menus.
Firstly, you must 'DIM' an array, which must be one-dimensional. It can have any name. The array must have a defined setup. For example, each menu title with the pull down-titles must be parted from another one of those lists by an empty string. The first menu strings might look like this: "Desk", " About Examine","--------", 1,2,3,4,5,6,"". The menu bar title will be "Desk", and when you touch that name with the mousepointer it will reverse and a pull-down menu will drop down with the name " About Examine". You won't find any numbers, nor will you find the "------------" (unless you have any desk accesories in your system). The six numbers are so called dummy strings, and the "--------" is necessary to divide the whole; it will only show when there are any desk accesories. To close it all, there's the empty string ("") to close this series. Have a look at "The Ultimate Examining Utility" to see how we've done it. And don't forget: you'll need to close ALL the titles (the last pull down menu-name of the last menu bar-title) with two empty string. You can see those defined after the FOR....NEXT loop (also, have a look at the technique we used to leave the loop once there are no strings anymore to be read. This way, you may add menu entries without altering the loop all the time. A note on the dummy-strings: their length must be unequal to zero.
After defining the menu, you can turn it on by "MENU array()", where 'array' is the name of the array you used to put in all the entries. You must not put anything between the "()"! In the example, we use Aa$().
Thus, you have created the menubar on the screen. By moving the mousepointer to a title, the menu will drop down and you can select an option you programmed. Immediately after you've set up your menu-bar, you must use a line with "ON MENU GOSUB proc_name". The 'proc_name' must be the name of the procedure that handles all the subroutines, etc. After that line, you can create an endless loop, for example by using the DO...LOOP command. In that loop, you must use the line "ON MENU". Each time something happens to that menu, the program will now branch to the routine called 'proc_name'.
Please have a look at our program now, and you'll see the structure. Don't forget the line "MENU OFF", otherwise it might be possible that menu bar titles will stay reverse when you don't want it. The MENU OFF command takes care that all menu titles that might have been reversed, are set normally.
There are a few variations to the ON MENU command. For example, there is the ON MENY KEY GOSUB command. It works just like the ON MENU GOSUB command, but this time for examining which key is pressed on the keyboard. The commands ON MENU IBOX GOSUB and ON MENU OBOX GOSUB are used to determine whether the mouse pointer is in (IBOX) or out (OBOX) of a certain area on the screen, determined by the coördinates x and y and the width w and height h. The a is used to define which of the two boxes you use.
Then there's the ON MENU MESSAGE GOSUB command determines the handle routines for GEM messages. MENU KILL turns off the whole menu bar. The command MENU n,x can be used to perform things with individual menu entries, of which the 'n' must be the index number in the array of the menu (in our example, ACC$). The 'x' may have the following values:

      0         Removes a sign before the menu entry
      1         Places a sign before the menu entry (to use this
                 succesfully, you must have at least one space
                 at the start of that menu entry)
      2         Makes the menu entry light, so that it cannot be
                 choosen anymore
      3         Makes the entry normal, so that it can be choosen
                 again

The last command for use with menus is the MENU(x) command. This enables swapping parameters from the ON MENU GOSUB routines to your program. 'n' must be an integer value. Below, you'll find a list of the possible values and the proper functions:

      0         Gives the number of a pull-down menu point, when
                 it happens to be clicked
      1-8       Gives the entries of the message-buffer
      9         Gives a flag that indicates what has happened,
                just like int_out[0]
     10,11      Gives the coördinates of the mouse
     12         Gives the status of the mouse buttons
     13         Gives the status of the keyboard-switchkeys
     14         Gives scan code in high byte and ASCII code in low
                 byte
     15         Gives the number of mouseclicks
     -1         Gives the address of the menu object tree

Now, let's have a look at the MOUSE command. With the help of this, it is possible to determine the current x-and y-position of the mousepointer, as well as the current status of the mouse buttons. Its format is:
                
                MOUSE x,y,k

'x', 'y' and 'k' are variables, that will get the appropriate values for x-and y position and the mouse buttons status. The x-and y positions speak for theirselves, but the status of the mousebuttons needs some explanation. It can have the following values: 0 if no buttons are pressed, 1 if the left button is pressed, 2 if the right button is pressed and 3 if both buttons are pressed.
The next command I promised to write about in the previous issue of ST NEWS was GRAPHMODE. Its format is:

                GRAPHMODE x

'x' can be a number from 1 to 4. This command determines the Graphics mode of the ST. Normally (value 1), the old graphics are replaced by the new graphics. If it is 2, the old image will still be visible through the new image (the new image is transparent). Something like that happens when the value of x is 4. But here, the new image is set there reversely. When x has the value 4, each dot that was used by the old image will be cleared when it is also used by the new image, and when the new image uses a dot that wasn't used before, it will set is.
That's it for the commands I promised to explain. Now, let's have a look at some of GfA BASIC's special operating system commands.

GfA BASIC enables the programmer to make use of standard OS routines, implemented in GEMDOS, BIOS or XBIOS.
The formats of these commands are:

                BIOS (f [,parameterlist])
                XBIOS (f [,paremeterlist])
                GEMDOS (f [,parameterlist])

Hereby, 'f' is the number of the function, and the 'parameterlist' must be included with some functions as well. I think it's best to just write down some examples here. You will be able to think of some examples yourself when you have a good look at "ST Intern" from Data Becker.

   a=XBIOS(20)              Hardcopy

   A$=SPACE$(512)
   a=BIOS(4,0,L:VARPTR(A$),1,1,0)
        This defines a 512 byte long string variable, in which a
        disk sector can be read.
        4 = Function Number
        0 = Flag: 0=read, 1=write, 2=read and ignore media change,
                  3=write and ignore media change
        L:VARPTR(A$) = Determines the address in memory where the
                       sector contents should be written to
        1 = Read one sector
        1 = First logical sector to read
        0 = Device number (A)

These commands definately widen the range of GfA BASIC's capabilities. I sure hope to hear from you if you have had some interesting experience with these commands. Next time, more about these GfA BASIC commands: SETTIME, SPRITE, UPPER$, GET, PUT and PSAVE.

        

REPORT ON THE ANNUAL ST USER GATHERING ON SEPTEMBER 20TH by Cronos

On Saturday, September 20th, the foundation ST organized a large usermeeting for ST owners, together with the Hobby Computer Club (HCC). I was there, together with the Bitbuster (of whom you'll find a few articles further in this bulletin!). Later on, Antiware arrived, as well as Dr. Freud, 666 and DSP.
We both brought our equipment with us - we had better not done that, for now I wasn't able to have a good look at all the stands.

I had to get up early that day, because Bitbuster came to pick me up at nine. I had just watched "North Sea Hijack" the evening before and me eyes weren't quite capable of opening when my clock woke me up. Bitbuster was on time - which  is quite seldom so it appears in the world of hobby computing, and we immediately drove down to Utrecht, where the meeting was to take place. I had called Tom, the chief editor of "ST" magazine, a few days ago and he had supplied me with a description of the route we should follow. Fortunately, we succeeded in getting at the Technical School "De Bron" in time to conquer some tables to put down our equipment on. I immediately started copying ST NEWS Volume 1, issues 3 and 4, and I am afraid I didn't stop with that until about half past three in the afternoon (I had started at about half past ten). A conservative estimate: ST NEWS was copied to about 250 people.
Bitbuster was busy most of the time demonstrating his RTOS (although he seemed to have some trouble with it sometimes), and constantly letting people see his Mac Cartridge - without any Mac ROMs, unfortunately.
Between the copying activities, I was lucky enough to find the possibility to slip away for a while and have a stroll around the hall. I knew there were MIDI and GfA Basic meetings elsewhere, but I didn't go there. Antiware, who arrived later with his dad, told me there was just one ST there, together with a wall of AKAI equipment. Unfortunately, I also missed the GfA meeting (Markosoft, the importer of the program, was also there).
I talked a bit to the people of Compudress, Rastermouse and Byte, about the setup of ST NEWS and ST NEWS having the possibility to review some of the software packages of theirs. The man of Byte was quite enthusiastic, as were the people of Rastermouse. These people had sold "Strippoker" early in the morning, but when I came to ask for an evaluation sample they had sold their last copy. What a pity. But the people of Rastermouse told me they would get the real "Flightsimulator II" within two weeks. They would send it to us for review. Time would later prove that SubLOGIC once again let them - and us - down, be announcing that the program was to be luanched after another three weeks?
The people at Compudress were less enthusiastic with regard to ST NEWS, but who knows? By the way, Compudress Atari harddisk for about 2200 guilders. They had it in stock! They also sold Atari 1040 STF + SC1224 color monitor at stunt prices. Also, they sold Data Becker books at stunt prices: I even bought "ST Peeks and Pokes".

In the opposite corner to Compudress, the foundation was copying PD software. Also, people could update their German user manual for Dutch ones there for 12.50 Dutch guilders. I also went to get one of those.
At the end of the day, lots of disk-boxes turned out to be empty, so I suppose the PD software selling of the foundation went extremely well (did you know that our monochrome offering "Synth Sample I" was also sold there?).
In general, the meeting was visited very well (I think about a thousand people visited the day). ST NEWS was spread very well, maybe because it was copied free of charge. Therefore, I wish to extend my gratitude to 666, who proved to be of significant help in the copying process. Was I glad I had a copy-program that could write on a target disk many times after the source disk was only read once!
At the end of the day, I wished I had asked but 1 guilder for each copy; I would have had a double sided disk drive, then!
The softwareshops had very good and new software to offer, and they sold quite well, so it seemed to me. All in all, quite a succesfull day for all ST freaks.

Here are a few meetings that will be organized this year:

         18 oct   ST meeting, Technische School "De Bron",
                  Vaderrijndreef, Utrecht
         25 oct   St meeting, "De Meervaart", Amsterdam
        21-22 nov HCC Days (very big!). Jaarbeurshallen, Utrecht
          6 dec   ST meeting, "De Meervaart", Amsterdam
         13 dec   HCC Day, Technische School "De Bron"

I think we will be present at some of these meetings as well. We hope to offer you our newest issues of ST NEWS by then. See ya!

ALL ABOUT XBIOS FUNCTIONS by Cronos

In the previous issues of ST NEWS we already had a little chat concerning System Variables, BIOS routines and GEMDOS routines; this time, we'll have an in-depth look at XBIOS routines, sometimes called EBIOS routines - it stands for Extended BIOS. These functions are there to enable the programmer to use specific hardware characteristics of the Atari ST. For MC68000 programmers, it is handy to know that TRAP #14 is needed for calling these routines. Thereby, the function number must be put on the stack.
While writing this article, we made use of Data Becker's "ST Intern" (ISBN 3-89011-119-X, Data Becker, Merowingestr. 30, 4000 Düsseldorf, West Germany; in Holland: Postbus 8411, 3503 RK, Utrecht, Tel. 030-430254). If you want to know everything  about XBIOS functions, you should buy that publication; it's a must for all serious ST programmers/users. In this article, we will only have a look at how to program these routines from assembler. All C freaks will definately have to get "ST Intern", as will the people that want better examples....
In each example, you might wonder why we added the last line, that usually includes an 'add' instruction. This instruction is necessary to clear the stack (as far as I've understood). The number that goes with it, can be calculated as follows:
Each .l you put on the stack: +4
Each .w you put on the stack: +2
Each .b you put on the stack: +1
See? Now, let's go on.....

0 initmous

Example: move.l vector,-(sp)
         move.l parameter,-(sp)
         move.w type,-(sp)
         move.w #0,-(sp)
         trap #14
         add.l#12,sp

This function can be used to initialize all routines that handle the mouse.

'vector' is the address of a routine that is called by the  keyboard processor when a mouse-report occurs.
'type' can choose one of the following alternatives:
         0        Disable Mouse
         1        Enable Mouse, Relative mode
         2        Enable Mouse, Absolute mode
         3        Unused
         4        enable Mouse, Keyboard mode
'parameter' points to a parameter block, that is built up as follows:
         char topmode
         char buttons
         char xparam
         char yparam
'topmode' can have on of the following values:
         0        Y=0 is located at the bottom corner
         1        Y=0 is located at the top corner
'buttons' is a parameter for the 'Set Mouse Buttons' command of the IKBD (we might publish an article about that in the near future as well).
'xparam' & 'yparam' are factors for the mouse movement. When you have choosen 'type' to be 2 (that means that you work with the mouse in absolute mode), vier additional parameters are added to the parameterblock:
         int xmax
         int ymax
         int xstart
         int ystart
These are the x-and y-coördinates of the maximal value of the mouse, and the other parameters specify the position at which the mouse should originally be put.

1 ssbrk

Example: move.w quantity,-(sp)
         move.w #1,-(sp)
         trap #14
         addq.l #4,sp

This function may be used to allocate (reserve) a piece of memory.

'quantity' is the number of bytes that should be reserved. That chunk of memory will be allocated at the top of memory. This function should be called before the Operating System starts Initialization.

2 physbase

Example: move #2,-(sp)
         trap #14
         addq.l #2,sp

This function returns a longword, that signifies the Base of the physical screen. On a 512 K machine, this would result in $78000.

3 logbase

Example: move #3,-(sp)
         trap #14
         addq.l #2,sp

This function sets the logical base of screen memory. All operations that use screen memory will be working on this part of memory. If physical and logical screen memory are the same, you will also be able to see what happens on the screen. The function returns a longword, which will be $78000 if you have a 512 K machine.

4 getrez

Example: move.w #4,-(sp)
         trap #14
         addq.l #2,sp

The 'getrez' function returns the screen resolution, which can be one of the following values:
         0        Low Resolution (320x200 pixels; 16 colors)
         1        Medium Resolution (640x200 pixels; 4 colors)
         2        High Resolution (640x400 pixels; 2 colors)

5 setscreen

Example: move.w res,-(sp)
         move.l physaddr,-(sp)
         move.l logaddr,-(sp)
         move.w #5,-(sp)
         trap #14
         add.l #10,sp

This function allows the user to change the screen parameters that could be read using one of the three functio s we already mentioned before. If one of those parameters should not be set, it is necess

                                                           

                                                           
                                                       e even. The colors will be loaded at the next VBL. If you know how to handle this routine quite well, it's possible to simulate more then 16 colors on your screen at one time. I think Magnetic Scrolls used this trick on the first picture of "The Pawn" (which is said to use 500 colors!). Examples: $000 is black, $777 is white, $700 is red, $070 is green and $007 is blue.

7 setcolor

Example: move.w color,-(sp)
         move.w colnumber,-(sp)
         move.w #7,-(sp)
         trap #14
         addq.l #6,sp

This function makes it possible to change just one color at a time (just like "Press '1' or '2' to Start" with Michtron's "Time Bandit V2.0").
'colnumber' is the number of the color that should be changed.
'color' is the new value of that color, ranging from $000-$777.
If you enter -1 as color, you will simply get the old color value of the color with the number 'colnumber'.

8 floprd

Example: move.w count,-(sp)
         move.w side,-(sp)
         move.w track,-(sp)
         move.w sector,-(sp)
         move.w device,-(sp)
         clr.l -(sp)
         move.l buffer,-(sp)
         move.w #8,-(sp)
         trap #14
         add.l #20,sp

This function enables the reading of one or several sectors from a disk.
'count' is the number of tracks that should be read sequentially. Values between 1 and 9 are normally possible (number of sectors per track), but with maxi-formatted disks I see no reason why one shouldn't use '10' as well.
'side' selects the side that should be read from. 0 is side A, and 1 is side B. On single sided floppy-drives (like the one I have - snif, snif!) you can only use 0 - side A.
'track' specifies the number of the track the sectors should be read from. This value can vary; it depends on the number of tracks per side. Mostly, this will be 80 (so the value can be from 0 to 79), but is can also be 40, 83, or even another value (that is because of the flexibility of the Disk format for Atari system disk drives).
'sector' is the sector number of the sector that should be read first. Normally, this can be from 0-9, but sometimes it can be 10 as well (on maxi-formatted disks).
'device' is the number of the device the information should be read from. This can be 0 (for drive A) or 1 (for drive B).
The line 'clr.l -(sp)' just puts an empty longword on the stack. This is unused.

'buffer' is the address of a piece of memory where the data read should be put. This should always be at a longword-boundary, and there should be enough room to put to info in (512 bytes x the number of sectors you read).

The 'floprd' function returns an error code. This can be:
         0        OK
        -1        General Error
        -2        Drive not Ready
        -3        Unknown command
        -4        CRC Error
        -5        Bad Request
        -6        Seek Error
        -7        Unknown Media
        -8        Sector not Found
        -9        (No Paper)
       -10        Write Error
       -11        Read Error
       -12        General error
       -13        Disk is Writeprotected
       -14        Disk has been Changed
       -15        Unknown Device
       -16        Bad Sector
       -17        Put Disk in Drive

9 flopwr

Example: move.w count,-(sp)
         move.w side,-(sp)
         move.w track,-(sp)
         move.w sector,-(sp)
         move.w device,-(sp)
         clr.l -(sp)
         move.l buffer,-(sp)
         move.w #9,-(sp)
         trap #14
         add.l #20,sp

This function enables the user to write one or several sectors to a disk. The parameters have the same meaning as those listed at function 8 (floprd). This function also returns an error code, which can also be one of those listed at the 'floprd' function.

10 flopfmt

Example: move.w virgin.-(sp)
         move.l magic,-(sp)
         move.w interleave,-(sp)
         move.w side,-(sp)
         move.w track,-(sp)
         move.w sectra,-(sp)
         move.w device,-(sp)         clr.l -(sp)
         move.l buffer,-(sp)
         move.w #10,-(sp)
         trap #14
         add.l #26,sp

This routine can format one single track. The parameters have the following meaning:
'virgin' is the value with which all sectors of the specified track will be filled when formatted. $E5E5 is mostly used for this. You must look out not to use $F as value for the high nibble!
'magic' is the magic number (the ST is crawling with them!) that has to accompany the formatting. In this case, it has to be $87654321 (I suppose the people at Atari had a lack of originality when they used introduced this magic number; some other 'magic' numbers are birth-dates, BIOS launch-dates, etc.).
'interleave' specified the sequence in which sectors are written to disk. Normally this is 1. I think the guy who designed Copystar at RDS software used this variable for his "fast-load disk"-bit.
'side' determines the side on which the track is located that should be formatted. Ofcourse, one cannot select another value for this than 0 if one has a single sided disk drive.
'track' is the number of the track that should be formatted. Normally, this will be 0-79, but it can also be a higher number (even upto 83!). Watch out: if you want the track to be used for program storage, the boot sector must 'know' that there are such high tracks! Also, not all disk drives are able to read tracks above number 79. As a part of copy protection, this function can cause quite a lot of grey hairs with certain people.
'sectra' is the number of sectors on that track. Unless you're designing some hot-shot copy protection, this should be of the same value that all other tracks are formatted with. This will normally be from 0 to 9, but it can also be 10.
'device' is the device number (have a look at 'floprd' for whihc numbers you may use).
'clr.l -(sp)' is here used to put an empty - unused - longword on the stack, just like its counterpart in the function 'floprd' and 'flopwr'.
'buffer' for the complete trackdata. If you use 9 sectors per track, this must be at least 8 Kb in size.

The function returns an error code. If it is -16, bad sector, it means that the data couldn't be properly verified. In that case, the buffer will contain a list of bad sectors (seperated by '0'). You can try to format the track again, or you can mark the bad sectors.

Just like the 'floprd' and 'flopwr' functions, you can check for an error with the followin g sequence:
         tst d0
         bmi error
         ....Rest of the program
   error ....Error handle routine

11 unused

12 midiws

Example: move.l pntr,-(sp)
         move.w count,-(sp)
         move.w #12,-(sp)
         trap #14
         addq.l #8,sp

With this function, it is possible to send a string of data to the MIDI OUT port.
'pntr' is the pointer to the memory address on which the string is located.
'count' is the number of bytes that should be sent -1. So if you want to send 12 bytes, that value should be 11.

13 mfpint

Example: move.l vector,-(sp)
         move.w number,-(sp)
         move.w #13,-(sp)
         trap #14
         addq.l #8,sp

This function is used to initialize an Interrupt routine in the MFP.
'number' is the number of the MFP-Interrupt, which can be from 0 to 15.
'vector' is the address on which the vector that belongs to that Interrupt routine is located.

14 iorec

Example: move.w device,-(sp)
         move.w #14,-(sp)
         trap #14
         addq.l #4,sp

This routine is there to get the pointer to a buffer-data-line for an input device. The following input devices may be selected:
         0        RS232
         1        Keyboard
         2        MIDI
The buffer-data-line is built up as follows:
         long     ibuf       Pointer to input buffer
         int      ibufsize   Size of input buffer
         int      ibufhd     Head Index
         int      ibuftl     Tail Index
         int      ibuflow    Low water Mark
         int      ibufhi     High water Mark
For more specific information, I am afraid I must tell you to have a look at pages 200 and 201 of Data Becker's "ST Intern". The specifications and examples mentioned there might make working with this XBIOS function more clear, whereas talking about them in this article would be too much of a hassle.

15 rsconf

Example: move.w scr,-(sp)
         move.w tsr,-(sp)
         move.w rsr,-(sp)
         move.w ucr,-(sp)
         move.w ctrl,-(sp)
         move.w baud,-(sp)
         move.w #15,-(sp)
         trap #14
         add.l #14,sp

This XBIOS function configurates the RS232 Interface. The parameters thereby have the following meaning:
'scr' is the Synchronous Character Register in the MFP.
'tsr' is the Transmitter Status Register in the MFP.
'rsr' is the Receiver Status Register in the MFP.
'ucr' is the USART Control Register in the MFP.
'ctrl' is a communication-parameter.
'baud' is the baudrate.
Whenever a parameter turns out to be -1, the old value is kept on the MFP 68901. You should have a look at some documentation about the MFP 68901 processor for the meaning of the MFP registers.
'ctrl' is used to specify the Handshake-Mode:
         0        No Handshake (that is default on power-up)
         1        XON/XOFF
         2        RTS/CTS
         3        XON/XOFF and RTS/CTS (not very useful)

'baud' can have one of the followibng values:
         0        19200
         1         9600
         2         4800
         3         3600
         4         2400
         5         2000
         6         1800
         7         1200
         8          600
         9          300
        10          200
        11          150
        12          134
        13          110
        14           75
        15           50

16 keytbl

Example: move.l capslock,-(sp)
         move.l shift,-(sp)
         move.l normal,-(sp)
         move.w #16,-(sp)
         trap #14
         addq.l #14,sp

This function enables you to redefine the keyboard tables (3 in all). Therefore, you'll have to specify the addresses on which the tables are located for normal keys ('normal'), keys with Shift ('shift') and keys with Caps Lock ('capslock'). Each table must be 128 bytes in length. The function returns the pointer to a table in which all three vectors are written. If one of the keyboard tables should not be changed, you should specify -1 instead of the memory address. The tables are scanned through the key-scancode and they will result in giving the ASCII-code belonging to that key.

17 random

Example: move.w #17,-(sp)
         trap #14
         addq.l #2,sp

This function returns a 24-bit random number. Bits 24-31 will be 0 (cleared). At each call of this function, one will get a different random number. At each system power-up, another starting-value will be generated.

18 protobt

Example: move.w execflag,-(sp)
         move.w disktype,-(sp)
         move.l serialnr,-(sp)
         move.l buffer,-(sp)
         move.w #18,-(sp)
         trap #14
         add.l #14,sp

This function enables you to create a boot sector. The boot sector is located on track 1, sector 0 and tells to TOS all kinds of things about the disk format, e.g. disk type. If this boot sector is set to be executable, the Operating System can be loaded. With this function you can change or create a boot sector.
'execflag' is used to specify if the boot sector is executable or not:
         0        Not executable
         1        Executable
        -1        The boot sector stays like it was
'disktype' can have one of the following values:
         0        40 tracks, single sided (180K)
         1        40 tracks, double sided (360K)
         2        80 tracks, single sided (360K)
         3        80 tracks, double sided (720K)
'serialnr' is a 24-bit serial number, that will be written into the bootsector. This serial number is supposed to be never the same on any disk, and TOS therefore uses it to check if a disk is changed. If you specify a value larger than 24 bits (e.g. $01000000), a random serial number will be created with function number 18 (see previous page). If it's -1, the serial number will not be changed. In this part of the disk, a serious error can be found. For example, when one formats a disk with the program "ST Happy + Maxiformatter" it will always have the same serial number. If you have for instance opened a folder, and if you change a disk and then hit the ESC key, you will get a garbled directory (which can cause a system crash sometimes). Normally, you'd get an empty directory.
'buffer' is the pointer to a 512-byte buffer, located somewhere in memory, that contains the contents of the boot sector to be written.

A bootsector is normally built up like this:

Address:        80 Track SS:      80 Track DS:

 0-1             Branch-instruction on boot-code if executable
 2-7             'Loader'
 8-10            24-bit serial number
11-12    BPS     512               512
13       SPC       2                 2
14-15    RES       1                 1
16       FAT       2                 2
17-18    DIR     112               112
19-20    SEC     720              1440
21       MEDIA   248               249
22-23    SPF       5                 5
24-25    SPT       9                 9
26-27    NSIDE     1                 2
28-29    NHID      0                 0
30-31    EXECFLG
32-33    LDMODE
34-35    SSECT
36-37    SECTCNT
38-41    LDADDR
42-45    FATBUF
46-56    FNAME
57       (Reserved)
58-509   BOOTIT Code
510-511  CHECKSUM

'Loader' is for use with several programming tools, to enable them to recognize a Loader boot sector.
'BPS' is the number of bytes per sector. Normally, this is 512 bytes but it can also be 1024 bytes or another value.
'SPC' is the number of sectors per cluster. Normally, this is 2, but it is possible to format a disk so that it is 1 or maybe 3 or more. The smaller the number, the more economical is disk usage (with a value of 2, 2*512=1024 bytes are allocated even for a 1-byte file!).
'RES' is the number of reserved sectors at the beginning of the disk, including the boot sector.
'FAT' is the number of FATs (File Allocation Tables; one can compare it with the Block Availability Map or BAM on the Commodore 1541 disk drives) on a disk. The more FATs, the safer is your data on the disk. But it takes quite a lot of space as well.
'DIR' is the maximal number of directory entries on a disk. A directory entry is any entry on the disk's root directory (so all the names that appear on a disk drive window once you've opened it, including the folders).
'SEC' is the total number of sectors on your disk.
'MEDIA' is the Media Descriptor Byte. ST BIOS doesn't use this byte, but other file systems might!
'SPF' is the number of sectors that are included in each FATY entry (read more about the FAT in previous issues of ST NEWS - the articles about disk manipulation in issues 2 and 3).
'SPT' is the number of sectors per track. This value is normally 9, but can range from 0 to 11 theoretically (1 to 10 practically).
'NSIDE' is the number of sides on the disk. Logically, this will be 1 on any single-sided disk, and 2 on any double sided disk.
'NHID' is the number of "Hidden" sectors on the disk. ST BIOS ignores this value for floppies.
'EXECFLG' is a word that is copied to the system variable _cmdload. As you could have read in ST NEWS Volume 1 Issue 2, when this system variable is set to 0, the desktop will appear after booting. If set to nonzero, TOS will try to load an application (DOS shell, etc.) first. An example of an application is the Command Shell of Atari. The file must be called COMMAND.PRG.
'LDMODE' specifies the load mode. If it is zero, the file with the name 'FNAME' will be loaded and executed. If 'LDMODE' is nonzero, however, 'SECTCNT' sectors (starting at logical sector number 'SSECT') will be loaded and executed.
'SSECT' is the logical sector number to start loading from. This value is only useful when 'LDMODE' is nonzero.
'SECTCNT' is the number of sectors to load. Like 'SSECT', this value is only useful when 'LDMODE' is nonzero.
'LDADDR' is the memory-address on which a file (or sectors) will be loaded. In case of TOS on disk, this will be $40000.
'FATBUF' points to a memory location where the FAT-and directory sectors can be put.
'FNAME' is the filename of the file that will be loaded when 'LDMODE' equals zero. It consists of the normal eight characters of the name, together with three characters for the file extension.
'BOOTIT' is bootcode.

Because the bootsector is MS-DOS 2.x compatible, all 16-bit words are written in 8086-format: Low-byte first, High-byte second.

19 flopver

Example: move.w count,-(sp)
         move.w side,-(sp)
         move.w track,-(sp)
         move.w sector,-(sp)
         move.w device,-(sp)
         clr.l -(sp)
         move.l buffer,-(sp)
         move.w #19,-(sp)
         trap #14
         add.l #16,sp

This function enables you to verify one or several sectors of a disk. The sectors will be read from disk and compared with the contents of a buffer. The parameters have the same meaning as those explained by the commands to read or write sectors. When the contents of the buffer are the same as the contents of the sectors, the function returns the value 0. When an error occurs, you will find that (as a negative value) in D0. The error codes are explained by the function 'floprd'.
When it turns out that one or more sectors do not match with the buffer contents, you will be able to find a list of bad sectors in the buffer you specified, each as a longword. The last sector number will be marked by a zero after it.
When you use the BIOS function 5 (rwabs),  and when the system variable _fverify is set (that is the variable at location $444), sectors are automatically verified.

20 scrdmp

Example: move.w #20,-(sp)
         trap #14
         addq.l #2,sp

This function makes it possible to make a screen hardcopy on a printer that is hooked up to your ST. Thereby, XBIOS uses the pre-set printer parameters. This function can be called at any time by simultaneously pressing ALTERNATE and HELP or choosing "Print Screen" from the Desktop ("Options").

21 cursconf

Example: move.w rate,-(sp)
         move.w function,-(sp)
         move.w #21,-(sp)
         trap #14
         addq.l #6,sp

This function can specify the function of the cursor (in case you didn't know: that's the small black rectangle somewhere on the screen of you're working with First Word (Plus)).
'function' can have one of the following values:
         0        Turn cursor off
         1        Turn cursor on
         2        Flashing cursor
         3        Non-flashing cursor
         4        Set cursor flash-rate
         5        Get cursor flash-rate
The value of 'rate' depends on if you're using a monochrome-or a color video display. With a monochrome monitor this is 70 Hz, whereas this value if 50 Hz for color monitors. When you want to change the flash-rate, only then you'll have to use the 'rate' parameter. Example:  you can specify 30 if you want the cursor to invert after every 30/70th second on a monochrome monitor or every 30/50th second on a color display.

22 settime

Example: move.l time,-(sp)
         move.w #22,-(sp)
         trap #14
         addq.l #6,sp

This function enables you to set the date and time of the system. Therefore you must set up the longword like this:
         Bit  0- 4 Seconds/2
         Bit  5-10 Minutes
         Bit 11-15 Hours
         Bit 16-20 Day 1-31
         Bit 21-24 Month 1-12
         Bit 25-31 Year 0-119 (minus Offset 1980)

23 gettime

Example: move.w #23,-(sp)
         trap #14
         addq.l #2,sp

This function returns the current date and time of the system in D0.

24 bioskeys

Example: move.w #24,-(sp)
         trap #14
         addq.l #2,sp

If you have changed the keyboard table(s) with XBIOS 16 (keytbl), this function enables you to get back to the standard key tables. It is handy if you call this routine after ending your own program that uses another keyboard table.

25 ikbdws

Example: move.l pointer,-(sp)
         move.w quantity,-(sp)
         move.w #25,-(sp)
         trap #14
         addq.l #8,sp

This function allows you to send commands to the keyboard processor.
'pointer' is the address of a string  that contains the commands.
'quantity' is the number of bytes in the string, of which 1 must be substracted.

26 jdisint

Example: move.w number,-(sp)
         move.w #26,-(sp)
         trap #14
         addq.l #4,sp

This function allows the user to halt an interrupt of the MFP 68901 processor.
'number' is the number of the interrupt, from 0 to 15.

These are the Interrupts of the MFP 68901 processor:
         0        Centronics Busy
         1        RS232 DCD
         2        RS232 CTS
         3        Unused
         4        RS232 Baudrate generator, Timer D
         5        Timer C
         6        Keyboard and MIDI ACIAs
         7        Floppy Controller and DMA
         8        Linefeed counter, Timer B
         9        RS232 Sending error
        10        RS232 Sending buffer empty
        11        RS232 Receivance error
        12        RS232 Receivance buffer filled
        13        System Clock Timer A
        14        RS232 Ring Indicator
        15        Monochrome Monitor Detect
For more information about interrupt levels, etc., please refer to pages 268-274 in "ST Intern", chapter 3.5.1.

27 jenabint

Example: move.w number,-(sp)
         move.w #27,-(sp)
         trap #14
         addq.l #4,sp

This function is the opponent to the 'jdisint' function described above. It is used to enable a MFP Interrupt again.
'number' is the number of the interrupt level to reactivate. See above for a list of MFP Interrupt levels.

28 giaccess

Example: move.w #register,-(sp)
         move.w #data,-(sp)
         move,w #28,-(sp)
         trap #14
         addq.l #6,sp

This functions lets you access the GI-soundchip.
'register' must be the soundchip's register number, ranging from 0 to15. The meaning of the seperate registers can be read in ST NEWS Volume 1, Issue 3. Bit 7 of the register number specifies if the register should be read from or written to:
         0        Read
         1        Write
If you want to write to a register, 'data' will have to contain the 8-bit value of the code to write. When this function is used to read the register with the specified number, you get the value of that register.

29 offgibit

Example: move.w #bitnumber,-(sp)
         move.w #29,-(sp)
         trap #14
         addq.l #4,sp

This function sets a selected bit in port A of the Soundchip. The individual bits have the following meaning:
         0        Floppy Select side 0/side 1
         1        Floppy Select drive A
         2        Floppy Select drive B
         3        RS232 RTS (Request to Send)
         4        RS232 DTR (Data Terminal Ready)
         5        Centronics Stobe
         6        General Purpose Output
         7        Unused

30 ongibit

Example: move.w #bitnumber,-(sp)
         move.w #30,-(sp)
         trap #14
         addq.l #4,sp

This function clears s selected bit in Port A of the Soundchip. The bitnumbers have the same meaning as described above.

31 xbtimer

Example: move.l vector,-(sp)
         move.w fata,-(sp)
         move.w control,-(sp)
         move.w timer,-(sp)
         move.w #31,-(sp)
         trap #14
         add.l #12,sp

With this function one can start an MFP Timer, and specify an Interrupt routine for it.
'timer' is the number of the timer in the MFP:
         0        Timer A
         1        Timer B
         2        Timer C
         3        Timer D
'data' and 'control' are the values that will be given to the specified timer's data-and control-registers. Have a look at any MFP 68901 hardware description concerning that.
'vector' is the address of the interrupt routine that belongs to the specified timer.

The four timers of the MFP are partly used by the system already:
         A        Reserved for the user
         B        Horizontal Blank Counter
         C        200 Hz system Timer
         D        RS232 Baudrate-generator
                  (the vector belonging hereto is free)

32 dosound

Example: move.l pointer,-(sp)
         move.w #32,-(sp)
         trap #14
         addq.l #6,sp

This function enables the user to comfortable use sounds.
'pointer' has to point to a string of sound-commands. These commands may be used.

Commands $00-$0F
These commands are interpreted as register numbers, always to be followed by a byte that will be loaded in the corresponding register.

Command $80
This command is followed by an argument that will be loaded in a temporary register.

Command $81
This command must be followed by three arguments. The first one must be the soundchip register number in which the contents of the temporary will be copied. The second argument is a values that complements that value. The command reaches its end when the third byte (the end criterium) is equal to the contents of the temporary register.

Commands $82-$FF
These commands are always to be followed by one more argument. When that argument equals zero, sound processing will be cut off. When it isn't it specifies the number of timerticks (20ms, 50Hz) that pass until the next sound processing occurs.

33 setprt

Example: move.w config,-(sp)
         move.w #33,-(sp)
         trap #14
         addq.l #4,sp

This function makes it possible to change or read the printer configuration. When 'config' is -1, the configuration is read, otherwise 'config' is installed as printer configuration.

The individual bits in 'config' have the following meaning:

         0        Matrixprinter (0) or Daisywheel printer (1)
         1        Color Printer (0) or Monochrome printer (1)
         2        ATARI printer (0) or Epson printer (1)
         3        Test mode (0) or Quality mode (1)
         4        Centronics port (0) or RS232 port (1)
         5        Tractorfeed (0) or Single sheet (1)
         6-14     Reserved
        15        Always 0

34 kbdvbase

Example: move.w #34,-(sp)
         trap #14
         addq.l #2,sp

This function returns the pointer to a table of vectors that contains the addresses to certain routines that handle the keyboard processor. It is built up like this:
         long     midivec    MIDI input
         long     vkbderr    Keyboard error
         long     vmiderr    MIDI error
         long     statvec    IKBD status
         long     mousevec   Mouse-routines
         long     clockvec   Time routines
         long     joyvec     Joystick routines (have a look at                                this issue's "Question & Answers
                               for more information about this)
'midivec' points to a routine that writes MIDI data from the MIDI-IN (from D0) to the MIDI buffer.
'vkbderr' and 'vmiderr' are called whenever an overflow is detected from Keyboard-or MIDI-ACIAs.
The other vectors handle packets that come from mouse, joystick, etc. If you write routines for this, you must watch out that they end with an RTS and that they don't take more than 1 millisecond the perform.
The vectortable is located at $A0E and has the following vectors in it:
         midivec  $79C6
         vkbderr  $759C
         vmiderr  $759C
         statvec  $7034
         mousevec $15296
         clockvec $6A46
         joyvec   $7034

35 kbrate

Example: move.w repeat,-(sp)
         move.w wait,-(sp)
         move.w #35,-(sp)
         trap #14
         addq.l #6,sp

This function enables manipulation of the keyboard-repeat.
'wait' specifies the time that passes before the key is automatically repeated. The time is based upon the 50 Hz system tact.
'repeat' specifies the time that passes for each repeat.
These two values can be changed from the Control Panel desk accesory.
When one of the parameters is set to -1, the corresponding value is not changed. That way, this function will give the value at the current moment in one word: bit 0-7 contain the 'repeat' value, whereas bits 8-15 contain the 'wait' value.

36 prtblk

Example: move.l parameter,-(sp)
         move.w #36,-(sp)
         trap #14
         addq.l #6,sp

This function looks very much liek XBIOS function 20 (scrdmp), but this one expects a parameterlist. 'parameter' is the address of that parameterlist, that is built up like this:
         long     blkprt    Address of screen-RAM
         int      offset
         int      width     Screen width
         int      height    Screen height
         int      left
         int      right
         int      scrres    Screen resolution (1,2 or 3)
         int      dstres    Printer resolution (1 or 2)
         long     colpal    Address of the color palette
         int      type      Printer type (0-3)
         int      port      Printer Port (0=Centronics,1=RS232)
         long     masks     Pointer to half-tone mask

37 wvbl

Example: move.w #36,-(sp)
         trap #14
         addq.l #2,sp

This function can be used to synchronize graphics with wvbl   of the screen. It just waits until wvbl has occured.

38 supexec

Example: move.l address,-(sp)
         move.w #38,-(sp)
         trap #14
         addq.l #6,sp

This function may be used to execute the routine at 'address' in Supervisor Mode of the 68000.

39 puntaes

Example: move.w #39,-(sp)
         trap #14
         addq.l #2,sp

This function turns of AES, as long as its not in ROM.

That was it for today, folks. I've told you all I know about XBIOS functions. I hope you will write to us if you have experienced specific things with XBIOS functions, or if you have succesfully used some rare XBIOS functions in GfA Basic using the XBIOS command. Our address: ST NEWS, Fuutstraat 2, 5702 LN, Helmond, The Netherlands.

HINTS AND TIPS FOR PLAYING "WINTERGAMES" by Antiware

As you all know, Wintergames is a sport game. But did you know that EPYX held it in Calgary, Canada and that it is in the year 1988?
The tips I'm going to give you are in order of the game, so I'll start with some tips for the first event:

HOT DOG AERIALS

The joystick movements and their stunts are as following:

upper left diagonal  - Daffy (leg spreading)
down left diagonal   - Mule kick (ski's straight down)
upper right diagonal - Back scratch (knees bend 90°)
down right diagonal  - Swan (knees and body forward)
left                 - Back flip
right                - Forward flip
middle               - Land

The points that you can get are as following:
1 stunt              - 6,3 points
2 equal stuns        - 8,7 points
1 flip               - 7,2 points
2 equal flips        - 9,2 points
2 different stunts   - 9,6 points
1 stunt + 1 flip     - 10,0 points
2 different flips    - 10,0 points

The ACC got 10 points by doing 1 stunt and 1 flip, so try to break our record...

The next event is:

BIATHLON

This event has seven joystick movements. They are as following:
left and right - these movements are necessary to move your men on the flat surface. If you must climb a hill you must move the joystick faster from the left to the right. If your are going downhill you must move the joystick up and down. After a while you get on the shooting track the joystick movements are then up for loading the gun and down for opening the chamber and fire for shooting.

TIP:
Try to memorize the track.

The ACC record on this event is 1'43''.

SPEED SKATING

This event can be played with two players at the same time. Otherwise you can race against the computer pacer (weak guy). The clue to this event is trying to find a good rythm with the joystick wich you must move carefully left and right.

The ACC record on this event is 28 seconds. 
FIGURE SKATING

This and free style skating are the most difficult events on Wintergames. The girl that you can see can make the following stunts (with joystick movements):

upper left diagonal  - camel spin
down                 - sit spin
upper right diagonal - double axel jump
down right diagonal  - triple axel jump
up                   - double lutz jump
down left diagonal   - triple lutz jump
right                - skate forward
left                 - skate backward

The points you get are for style and gracefulness of the exercise.
The point are as following:

camel spin           0,7
sit spin             0,7
double axel jump     0,6
triple axel jump     1,1
double lutz jump     0,6
triple lutz jump     1,1
camel into sit spin  1,2

every time you fall you lose 0,7 points and for every failed stunt you lose 0,2 points.

The highest score you can make is 6,0 points

The ACC record on this event is 5,3 points

SKI JUMP

Ski jump is one of my favorites because of the great sound. To start the ski-jump you must push the fire button on your joystick and when the skieër gets on the platform you must press the button again for the jump. When you are in the air you must try to get the skis horizontal.  Then you must correct the skieër by pushing your joystick to the left,  right and diagonal. The points you get are given for the distance and the style. The distance is being multiplied by three and the style point are add to it and that is your total. If you reach 60 meters and 20 style points it is a good jump.

The ACC record is 205 total points.

FREESTYLE SKATING

This event is the same as figure skating although the difficulty is much higher. The points you can get are also different, as you can see below:
camel                0,3
sit spin             0,3
double axel jump     0,2
triple axel jump     0,4
double lutz jump     0,2
triple lutz jump     0,4
camel into sit spin  0,5

BOBSLED

This is also one of my favourites. You start the game by pushing fire on your joystick. Then you must you move your joystick in opposite direction of the corner e.g. in a left corner you must push your joystick to the right. You can reach high speeds by taking some risks in the corners.

TIP:
try to memorize the track an practice many times.

The ACC record on this event is 21.51 seconds.

I wish you lots of fun with while playing "Winter Games".
                     
(Editorial comment: With the skating disciplines, don't forget to push the fire button when you move the joystick to perform a 'stunt'. Also, push the fire button several times after that, so you'll get back on you feet again - this must be used for all movements except left and right)

THE ULTIMATE EXAMINING UTILITY V2.8 by Cronos

In the previous issue of ST NEWS, you might remember that I promised "The Ultimate Examining Utility". Well, it took a long time but it's finally finished. I might say it took quite a while, and I am a bit disappointed in myself for not being able to include the following options: Sector Examine (so all  sectors, and not just the boot sector), Get BIOS Parameter Block and Format Track. My original plan was to include a monitor/disassembler as well, but I couldn't do that either.
But it wasn't meant as a superb utility in the first place, but more as an example of how to work with GfA Basic on a somewhat higher level. You will find the program listing down here, while there's also a working version of the program supplied on the disk with this issue of ST NEWS.
If you have any questions with regard to "The Ultimate Examining Utility" Version 2.8, I hereby ask you to send them to our correspondence address. Please add a stamp (or, if you live outside of Holland, an International Reply Coupon) so we can answer your question(s).

' The Amazing Cracking Conspiracy™ proudly presents
'
' The Ultimate Examining Utility V2.8, Sunday, September 28th,1986
'
' Published in ST NEWS Volume 1 Issue 5
'
' This program belongs to the Public Domain and may be
           copied freely
Gosub Init
' Install menu bar
Menu Aa$()
Openw 0
' When an error occurs, branch to subroutine "Ho"
On Break Gosub Ho
On Menu  Gosub Proceed
Do
  On Menu
Loop
' Break routine
Procedure Ho
  Alert 3,"This program cannot|be stopped!|
           Cute, eh?",1,"Continue",A
Return
' Here, all menu titles are checked
Procedure Proceed
  Menu Off
  If Aa$(Menu(0))=" Quit"
    Gosub Finito
  Endif
  If Aa$(Menu(0))=" About Examine "
    Gosub About
  Endif
  
  If Aa$(Menu(0))=" View Decimal "
    Gosub Decimal
  Endif
  If Aa$(Menu(0))=" View ASCII"
    Gosub Ascii
  Endif
  If Aa$(Menu(0))=" Invert Screen "
    Gosub Invert
  Endif
  If Aa$(Menu(0))=" memcntlr"
    Gosub Memcntlr
  Endif
  If Aa$(Menu(0))=" phystop"
    Gosub Phystop
  Endif
  If Aa$(Menu(0))=" _membot"
    Gosub Membot
  Endif
  If Aa$(Menu(0))=" _memtop"
    Gosub Memtop
  Endif
  If Aa$(Menu(0))=" seekrate... "
    Gosub Seekrate
  Endif
  If Aa$(Menu(0))=" _fverify..."
    Gosub Fverify
  Endif
  If Aa$(Menu(0))=" _bootdev"
    Gosub Bootdev
  Endif
  If Aa$(Menu(0))=" palmode"
    Gosub Palmode
  Endif
  If Aa$(Menu(0))=" _cmdload"
    Gosub Cmdload
  Endif
  If Aa$(Menu(0))=" conterm"
    Gosub Conterm
  Endif
  If Aa$(Menu(0))=" _nflops"
    Gosub Nflops
  Endif
  If Aa$(Menu(0))=" _dskbufp"
    Gosub Dskbufp
  Endif
  If Aa$(Menu(0))=" _sysbase"
    Gosub Sysbase
  Endif
  If Aa$(Menu(0))=" end_os"
    Gosub Endos
  Endif
  If Aa$(Menu(0))=" Boot Sector "
    Gosub Bootsect
  Endif
  If Aa$(Menu(0))=" DFree"
    Gosub Dfree
  Endif
  Defmouse 3
Return
' Quit program
Procedure Finito
  ' Make screen white with black characters
  Spoke 16745024,1
  Cls
  ' Quit program without alert box
  Edit
Return
' This is the "About Examine" subroutine
Procedure About
  Alert 0,Ac$,1,"OK",B
Return
' this subroutine first checks the state of the screen colors,
       then inverts
Procedure Invert
  A=&HFF8240
  B=Peek(A)
  If B/2=Int(B/2) Then
    Spoke 16745024,1
  Else
    Spoke 16745024,0
  Endif
Return
' From here on downward, the system variables are displayed
Procedure Memcntlr
  A=&H424
  B=Peek(A)
  B$=Bin$(B)
  Alert 1,Co$+"Memory Controller|Configuration Nibble|
           is",1,"%"+B$,B
Return
Procedure Phystop
  A=&H42E
  B=Lpeek(A)
  B$=Hex$(B)
  Alert 1,Co$+"Physical Top of RAM|is",1,"$"+B$,B
Return
Procedure Membot
  A=&H432
  B=Lpeek(A)
  B$=Hex$(B)
  Alert 1,Co$+"Bottom of Available Memory|is",1,"$"+B$,B
Return
Procedure Memtop
  A=&H436
  B=Lpeek(A)
  B$=Hex$(B)
  Alert 1,Co$+"Top of Available Memory|is",1,"$"+B$,B
Return
Procedure Seekrate
  A=&H440
  B=Dpeek(A)
  B$=Bin$(B)
  If B=0 Then
    Sr$="6"
  Else
    If B=1 Then
      Sr$="12"
    Else
      If B=2 Then
        Sr$="2"
      Else
        Sr$="3"
      Endif
    Endif
  Endif
  Alert 1,Co$+"Floppy Seek Rate|is",2,"%"+B$+"|"+Sr$+" ms",B
  Alert 2,"Do you want to|Change the seek rate?",2,"YES|NO",B
  If B=1 Then
    Gosub Whichrate
  Endif
Return
Procedure Whichrate
  Alert 2,"Which seekrate|Do you want?",2,"2ms|3ms|6ms",C
  If C=1 Then
    X%=2
  Else
    If C=2 Then
      X%=3
    Else
      X%=0
    Endif
  Endif
  Sdpoke 1088,X%
Return
Procedure Fverify
  A=&H444
  B=Dpeek(A)
  B$=Str$(B)
  If B=0 Then
    Fv$="OFF"
  Else
    Fv$="ON"
  Endif
  Alert 1,Co$+"Floppy Verify Flag|is",2,B$+"|"+Fv$,B
  Alert 2,"Do you want to|Change the Verify Flag?",2,"YES|NO",B
  If B=1 Then
    Gosub Whichflag
  Endif
Return

Procedure Whichflag
  Alert 2,"Please Select the|Verify Flag status",1,"ON|OFF",B
  If B=1 Then
    Sdpoke &H444,65280
  Else
    Sdpoke &H444,0
  Endif
Return
Procedure Bootdev
  A=&H446
  B=Dpeek(A)
  B$=Str$(B)
  Alert 1,Co$+"Device Number the|System was Booted from|
           is",1,"#"+B$,B
Return
Procedure Palmode
  A=&H448
  B=Dpeek(A)
  B$=Str$(B)
  If B<>0 Then
    Pm$="PAL"
  Else
    Pm$="NTSC"
  Endif
  Alert 1,Co$+"Pal Mode Indicator|is",2,B$+"|"+Pm$,B
Return
Procedure Cmdload
  A=&H482
  B=Dpeek(A)
  B$=Str$(B)
  If B<>0 Then
    Cl$="COMMAND"
  Else
    Cl$="DESKTOP"
  Endif
  Alert 1,Co$+"Command-load flag|is",2,B$+"|"+Cl$,B
Return
Procedure Conterm
  A=&H484
  B=Peek(A)
  B$=Bin$(B)
  If B$="" Then
    B$="0000"
  Endif
  If Mid$(B$,4,1)="1" Then
    Bell$="BELL ON"
  Else
    Bell$="BELL OFF"
  Endif
  If Mid$(B$,4,1)="1" Then
    Ke$="REP ON"
  Else
    Ke$="REP OFF"
  Endif
  Alert 1,Co$+"Console Terminal|is",1,"%"+B$+"|"+Bell$+"|"+Ke$,A
Return
Procedure Nflops
  A=&H4A6
  B=Dpeek(A)
  B$=Str$(B)
  Alert 1,Co$+"Number of|Floppy Disks attached|is",1,B$,B
Return
Procedure Dskbufp
  A=&H4C6
  B=Lpeek(A)
  B$=Hex$(B)
  Alert 1,Co$+"1024-byte Disk Buffer|Pointer is",1,"$"+B$,B
Return
Procedure Sysbase
  A=&H4F2
  B=Lpeek(A)
  B$=Hex$(B)
  Alert 1,Co$+"Base of Operating System|
           (In ROM or RAM)|is",1,"$"+B$,B
Return
Procedure Endos
  A=&H4FE
  B=Lpeek(A)
  B$=Hex$(B)
  Alert 1,Co$+"Last byte+1 that is used|in Low RAM by the|
           OS is",1,"$"+B$,B
Return
' Here, all disk function are performed
Procedure Bootsect
  Fla=0
  A$=Space$(512)
  ' Now, BIOS function 4 is called to read a sector 
          -the bootsector- into a$
  ' 4=BIOS function number, rwabs
  ' 2=Read sector, ignore disk change
  '   Leaving away the 2, and making a 0 of it, would sometimes
  '   sometimes result in an error -14 (Disk was changed)
  ' L:Varptr(a$)=Tells BIOS where to put the sector(s)
  ' 1=Read one sector
  ' 0=Start at logical sector 0 (The bootsector)
  ' 0=Drive number (0=A)
  A=Bios(4,2,L:Varptr(A$),1,0,0)
  If A<>0 Then
    Gosub Diskerror
  Endif
  If Fla=1 Then
    Goto Label1
  Endif
  ' Calculate serial number
  Se$=Mid$(A$,9,3)
  Se=Asc(Left$(Se$))+256*Asc(Mid$(Se$,2))+65536*Asc(Right$(A$))
  Se$=Str$(Se)
  Alert 1,"The Serial Number is:",1,Se$,A
  Gosub Go_on
  If Fla=1 Then
    Goto Label1
  Endif
  ' Bytes per sector
  Bp$=Mid$(A$,12,2)
  Bp=Asc(Left$(Bp$))+256*Asc(Right$(Bp$))
  Bp$=Str$(Bp)
  Alert 1,Cp$+"Bytes per Sector|is:",1,Bp$,A
  Gosub Go_on
  If Fla=1 Then
    Goto Label1
  Endif
  ' Sectors per cluster
  Sp$=Mid$(A$,14)
  Sp=Asc(Sp$)
  Sp$=Str$(Sp)
  Alert 1,Cp$+"Sectors per Cluster|is:",1,Sp$,A
  Gosub Go_on
  If Fla=1 Then
    Goto Label1
  Endif
  ' Reserved sectors
  Re$=Mid$(A$,15,2)
  Re=Asc(Left$(Re$))+256*Asc(Right$(Re$))
  Re$=Str$(Re)
  Alert 1,Cp$+"Reserved Sectors at the|Beginning of the disk|
           (Incl. Bootsector) is:",1,Re$,A
  Gosub Go_on
  If Fla=1 Then
    Goto Label1
  Endif
  ' FATs
  Fa$=Mid$(A$,17)
  Fa=Asc(Fa$)
  Fa$=Str$(Fa)
  Alert 1,Cp$+"FAT tables on the|whole disk is:",1,Fa$,A
  Gosub Go_on
  If Fla=1 Then
    Goto Label1
  Endif
  ' Directory entries
  De$=Mid$(A$,18,2)
  De=Asc(Left$(De$))+256*Asc(Right$(De$))
  De$=Str$(De)
  Alert 1,Cp$+"Directory entries|(maximal) is:",1,De$,A
  Gosub Go_on
  If Fla=1 Then
    Goto Label1
  Endif
  ' Sectors
  Ns$=Mid$(A$,20,2)
  Ns=Asc(Left$(Ns$))+256*Asc(Right$(Ns$))
  Ns$=Str$(Ns)
  Alert 1,Cp$+"Sectors on the disk|(total) is:",1,Ns$,A
  Gosub Go_on
  If Fla=1 Then
    Goto Label1
  Endif
  ' Media descriptor byte
  Md$=Mid$(A$,22)
  Md=Asc(Md$)
  Md$=Str$(Md)
  Alert 1,"The Value of the|Media Descriptor Byte|is:",1,Md$,A
  Gosub Go_on
  If Fla=1 Then
    Goto Label1
  Endif
  ' Sectors per FAT
  Sf$=Mid$(A$,23,2)
  Sf=Asc(Left$(Sf$))+256*Asc(Right$(Sf$))
  Sf$=Str$(Sf)
  Alert 1,Cp$+"Sectors per FAT entry is:",1,Sf$,A
  Gosub Go_on
  If Fla=1 Then
    Goto Label1
  Endif
  ' Sectors per track
  St$=Mid$(A$,25,2)
  St=Asc(Left$(St$))+256*Asc(Right$(St$))
  St$=Str$(St)
  Alert 1,Cp$+"Sectors per Track is:",1,St$,A
  Gosub Go_on
  If Fla=1 Then
    Goto Label1
  Endif
  ' Sides
  Si$=Mid$(A$,27,2)
  Si=Asc(Left$(Si$))+256*Asc(Right$(Si$))
  Si$=Str$(Si)
  Alert 1,Cp$+"Sides is:",1,Si$,A
  Gosub Go_on
  If Fla=1 Then
    Goto Label1
  Endif
  ' Hidden sectors
  Hi$=Mid$(A$,29,2)
  Hi=Asc(Left$(Hi$))+256*Asc(Right$(Hi$))
  Hi$=Str$(Hi)
  Alert 1,Cp$+"Hidden Sectors is:",1,Hi$,A
  Gosub Go_on
  If Fla=1 Then
    Goto Label1
  Endif
  ' Execflg
  Ex$=Mid$(A$,31,2)
  Ex=Asc(Left$(Ex$))+256*Asc(Right$(Ex$))

  If Ex<>0 Then
    Jj$="COMMAND"
  Else
    Jj$="DESKTOP"
  Endif
  Alert 1,"The Execflg determines|The following:",1,Jj$,A
  Gosub Go_on
  If Fla=1 Then
    Goto Label1
  Endif
  ' Ldmode
  Ld$=Mid$(A$,33,2)
  Ld=Asc(Left$(Ld$))+256*Asc(Right$(Ld$))
  If Ld<>0 Then
    Jj$="TRACKS"
  Else
    Jj$="FILE"
  Endif
  Alert 1,"Ldmode is set to|specify the following|
           Load mode:",1,Jj$,A
  Gosub Go_on
  If Fla=1 Then
    Goto Label1
  Endif
  ' Now, the program decided how to continue after "Ldmode"
  If Ld<>0 Then
    Goto Tracks
  Else
    Goto File
  Endif
  File:
  ' Filename
  Fn$=Mid$(A$,47,8)
  Et$=Mid$(A$,55,3)
  Alert 1,"File name and File extension|
           of the program to load are:",1,Fn$+"|"+Et$,A
  Gosub Go_on
  If Fla=1 Then
    Goto Label1
  Endif
  Goto Join
  Tracks:
  ' Logical sector to start loading from
  Lo$=Mid$(A$,35,2)
  Lo=Asc(Left$(Lo$))+256*Asc(Right$(Lo$))
  Lo$=Str$(Lo)
  Alert 1,Cp$+"the Logical Sector to start|
           Loading from is:",1,Lo$,A
  Gosub Go_on
  If Fla=1 Then
    Goto Label1
  Endif

  ' Number of sectors to load
  Sc$=Mid$(A$,37,2)
  Sc=Asc(Left$(Sc$))+256*Asc(Right$(Sc$))
  Sc$=Str$(Sc)
  Alert 1,Cp$+"Sectors to be loaded is:",1,Sc$,A
  Gosub Go_on
  If Fla=1 Then
    Goto Label1
  Endif
  ' Here do both branches join together
  Join:
  ' Load address
  La$=Mid$(A$,39,4)
  La=Asc(Right$(La$))+256*Asc(Mid$(La$,3))
         +65536*Asc(Mid$(La$,2))+1048576*Asc(Left$(La$))
  La$=Hex$(La)
  Alert 1,"The load address is:",1,"$"+La$,A
  Gosub Go_on
  If Fla=1 Then
    Goto Label1
  Endif
  ' FAT buffer
  Fa$=Mid$(A$,43,4)
  Fa=Asc(Right$(Fa$))+256*Asc(Mid$(Fa$,3))
         +65536*Asc(Mid$(Fa$,2))+1048576*Asc(Left$(Fa$))
  Fa$=Hex$(Fa)
  Alert 1,"The Address where FAT and|Directory sectors are|
         buffered is:",1,"$"+Fa$,A
  Label1:
Return
' Here, the return value of BIOS function 4 is worked with 
         (compare with D0)
Procedure Diskerror
  A$=Str$(A)
  Alert 3,"DISK ERROR!|Number:",1,A$,A
  Fla=1
Return
Procedure Go_on
  Fla=0
  Alert 2,"Continue?",2,"Quit|More",A
  If A=1 Then
    Fla=1
  Endif
Return
Procedure Dfree
  ' Look at the free bytes on the current drive
  A=Dfree(0)
  Fr$=Str$(A)
  Alert 1,"The available bytes|on the current drive are:",1,Fr$,A
Return

'Procedure Init
  Defmouse 3
  Spoke 16745024,1
  Restore
  Dim Aa$(50)
  For X=0 To 50
    Read Aa$(X)
    Exit If Aa$(X)="Z"
  Next X
  Aa$(X)=""
  Aa$(X+1)=""
  Dim Ab$(3)
  For X=0 To 3
    Read Ab$(X)
  Next X
  Ac$=Ab$(0)+Ab$(1)+Ab$(2)+Ab$(3)
  Co$="The value of|"
  Cp$="The number of|"
Return
' Menu bar + Pull down menu data
Data Desk," About Examine "
Data ---------------Data 1,2,3,4,5,6,""
Data Files, Invert Screen , Quit,""
Data Variables, memcntlr, phystop, _membot, _memtop," seekrate... "
Data " _fverify...", _bootdev, palmode, _cmdload, conterm
Data " _nflops", _dskbufp, _sysbase, end_os,""
Data Diskmon , Boot Sector , DFree
Data ----------------,""
Data Z
' "About Examine" data
Data The Ultimate Examining Utility|
Data "         Version 2.8|"
Data "   ST NEWS Volume 1 Issue 5|"
Data "       ©1986 by The ACC™"
' End of program

A remark for people who like disk manipulation: Remember that the positions of bytes in the boot sector starts counting at 0, whereas the MID$ command starts at 1. That's why I define each MID$ one higher 'as normal'!

THE MUSIC CORNER by Antiware

This is a new article that I will be writing in all upcoming issues of ST NEWS from now on. In every issue I'll be writing about music on the ST. This also includes MIDI, MIDI interfaced (cheap) synthesizers, Music Programs and Samplers.  In this first article I will write something about my own MIDI  interfaced synthesizer and about a sampler I am going to build.

THE CASIO CZ-230S COSMO SYNTHESIZER.

The CZ-230S is a digital preprogrammed synthesizer. The Features are:
     - 100 presets
     - 20  preset rhythms
     - 80 programmable rhythms
     - MT mode (load and save data on cassette)
     - MIDI mode
     - 8 notes polyphonic
     - and more

This was a summary of features that are on the CZ-230S. I have bought this CASIO because of his MIDI interface, and also because because it was cheap (I had to pay 1395 Dutch guilders).
The keyboard on it is a 49 key, 4 octave and 8 notes polyphonic.
The rhythms that you can hear are PCM (pulse code modulation) and if you hear it it sounds like real.
The hundred preset voices you can hear cannot be reprogrammed but the numbers 96-100 can be reprogrammend through MIDI. The presets are very well choosen. For example, you have a piano, a scratch sound, typhoon sound, symphonic sound, etc.
You can create your own rhtyhms with a built-in PCM drumcomputer.
After you've created a rhythm you can store it on cassette with the MT function.
The MIDI interface is a nice feature; with this interface you can connect the ST to the CZ-230S. After you have done this you can use all kinds of MIDI-programs, like "The Music Studio", "MIDI Play", "Twenty-Four"  and  "MIDI Recorder". With these programs you can create or play back music on the e.g. CZ-230S. Some games and demo programs use the MIDI interface simultaneously with the regular YM-2149 sound chip. If the man in "Little Computer People"
plays his organ or plays a record you can hear this on the synthesizer as well (very nice), for example. Also, one can program the MIDI interface from e.g. GFA-basic. If you want to know more about the CASIO CZ-230S please write to
me at the correspondence address. 

Digitizer

Hello again, music freaks. I am going to build   a sound digitizer. With this sound digitizer you can "sample" music. I suppose you've all heard Billy Ocean, The Commodores, Mike Oldfield and Jean Michel Jarre already: They were digitized on the same digitizer I will build. In fact, this is a 6-bit digitizer, and not an 8-bitter (as some people say).
If you are interested, please let  me know. The price of the digitizer will probably be about 150 Dutch guilders.
If you want to build one yourself, please send an envelope with a letter why you are interested, as well as 4 stamps of 75 cents for the cost of photocopies of the layouts, as well as explanation. If you live outside Holland, please add four International Reply Coupons.
Please send this letter to our correspondence address with "Digitizer" written in the upper lefthand corner, so we know it's about the digitizer.

PATTERN EDITOR by Delta Software Productions and Cronos

As the second major listing in this issue of ST NEWS, we hereby offer the Pattern Editor I promised in the previous issue. It is a program written in GfA Basic, that enables you to define FILLs, SPRITEs and MOUSEs for use with GfA Basic's DEFMOUSE, DEFFILL and SPRITE commands.

A short user guide to Pattern Editor version 1.4a.

The first thing that appears on the screen, is the title page. Just go on by hitting return or clicking "OK" in the Alert Box.
Next, you must choose whether you wish to design a FILL, MOUSE or SPRITE. In all three modes, you get one or two grids, in which you can turn dots on by clicking on the appropriate grid box with the left mouse key, whereas they can be cleared by using the right mouse key. When you want to stop the input, simply move the mouse pointer to "END OF INPUT", at the bottom of the screen, and click the mouse. With FILL and MOUSE, you can now choose if you want to SAVE you work to disk or if you just want to quit. The last option brings you back into the first selection menu. When you have designed a SPRITE, however, you're asked first if you want it to be a normal or and XOR sprite. These are the two sprite types GfA Basic supports.
Data is SAVEd in the following format:
  Data MKI$(&X................)
If you want to use the data in your own program, simply MERGE the data into your program, and then add up all the MKI$() in a single string, e.g. A$. If you would now use "SPRITE A$,100,100", a SPRITE would appear on the screen with the form you had just designed. The action point will be located on the coördinates 100,100. Both SPRITEs and MOUSEs have action points, on which all SPRITE-and MOUSE function will afterwards be specified. With MOUSE, if you use the normal arrow, this would be 0,0. Please refer to the GfA Basic manual or articles about GfA Basic in ST NEWS for more specifications about FILL, SPRITE and MOUSE.

Now something about the programming. Mainly, the program consists of three parts, of which two are almost exact duplicates of each other. This we did to accomplish better overall summary of the program. In fact, only the SAVE routines from SPRITE and MOUSE differ significantly.
You might wonder why we used "PAUSE 10" quite often. We did this to get rid of nasty bells when working with Alert Boxes. Try getting them out and you'll know what we mean.

This Pattern Editor took several weeks to finish, and was ready on Sunday, September 28th, 1986 (at about half past nine, to be exact). We hope you'll like it. And we hope you'll use it. We will!
Here is the program listing; you'll find a working version of the program in GfA Basic format on the disk of this issue of ST NEWS, as well as an example for a FILL, MOUSE and SPRITE.

' The Amazing Cracking Conspiracy™ and Delta Software Productions
' Proudly present: Pattern Editor V1.4a, Sunday, 
          September 28th, 1986
'
' Published in ST NEWS Volume 1 Issue 5
'
' This program is Public Domain and may be spread freely
'
Gosub Init
Do
  Clear
  Pause 10
  Alert 1,"Please select the|Editor you want:",0,"FILL|
           MOUSE|SPRITE",A
  On A Gosub Edit_fill,Edit_mouse,Edit_sprite
Loop
'
Procedure Edit_fill
  Dim A(16)
  Cls
  Xp=10
  Yp=10
  Gosub Set_raster
  Box 166,358,310,375
  Box 164,356,312,377
  Text 196,372,"END OF INPUT"
  Do
    X=Int((Xp+Mousex)/16)
    Y=Int((Xp+Mousey)/16)
    If Mousek=1 And X>0 And X<17 And Y>0 And Y<17 Then
      Deffill 1,2,4
      Pbox (X*16)-4,(Y*16)-4,(X*16)+8,(Y*16)+8
      A(Y)=A(Y) Or 2^(16-X)
      K$=""
      For I=1 To 16
        K$=K$+Mki$(A(I))
      Next I
      Deffill 1,K$
      Pbox 400,10,630,390
    Endif
    If Mousek=2 And X>0 And X<17 And Y>0 And Y<17 Then
      Deffill 0,2,4
      Pbox (X*16)-4,(Y*16)-4,(X*16)+8,(Y*16)+8
      A(Y)=A(Y) And (65535-(2^(16-X)))
      K$=""
      For I=1 To 16
        K$=K$+Mki$(A(I))
      Next I
      Deffill 1,K$
      Pbox 400,10,630,390
    Endif
    Exit If X>10 And X<20 And Y>22 And Y<24 And Mousek<>0
  Loop

  Q=Mousek
  Pause 10
  Alert 2,"Should I Store your work|or quit without saving?|
            File will be saved as a|.LST-File 
            (Can be MERGEd)",1," SAVE | QUIT ",A
  If A=1
    Fileselect "A:\*.LST","FILL.LST",C$
    Open "O",#1,C$
    For I=1 To 16
      Print #1,"DATA MKI$(&X"+Bin$(A(I))+")"
    Next I
  Endif
Return
'
'
Procedure Edit_mouse
  Dim A(16),V(16)
  Cls
  Xp=330
  Yp=10
  Gosub Set_raster
  Xp=10
  Yp=10
  Gosub Set_raster
  Box 166,358,310,375
  Box 164,356,312,377
  Text 196,372,"END OF INPUT"
  Do
    X=Int((Xp+Mousex)/16)
    Y=Int((Xp+Mousey)/16)
    If Mousek=1 And X>0 And X<17 And Y>0 And Y<17 Then
      Deffill 1,2,4
      Pbox (X*16)-4,(Y*16)-4,(X*16)+8,(Y*16)+8
      A(Y)=A(Y) Or 2^(16-X)
      K$=""
      For I=1 To 16
        K$=K$+Mki$(A(I))
      Next I
    Endif
    If Mousek=2 And X>0 And X<17 And Y>0 And Y<17 Then
      Deffill 0,2,4
      Pbox (X*16)-4,(Y*16)-4,(X*16)+8,(Y*16)+8
      A(Y)=A(Y) And (65535-(2^(16-X)))
      K$=""
      For I=1 To 16
        K$=K$+Mki$(A(I))
      Next I
    Endif
    If Mousek=1 And X>20 And X<37 And Y>0 And Y<17 Then
      Deffill 1,2,4
      Pbox (X*16)-4,(Y*16)-4,(X*16)+8,(Y*16)+8
      V(Y)=V(Y) Or 2^(36-X)
      K$=""

      For I=1 To 16
        K$=K$+Mki$(V(I))
      Next I
    Endif
    If Mousek=2 And X>20 And X<37 And Y>0 And Y<17 Then
      Deffill 0,2,4
      Pbox (X*16)-4,(Y*16)-4,(X*16)+8,(Y*16)+8
      V(Y)=V(Y) And (65535-(2^(36-X)))
      K$=""
      For I=1 To 16
        K$=K$+Mki$(V(I))
      Next I
    Endif
    Exit If X>10 And X<20 And Y>22 And Y<24 And Mousek<>0
  Loop
  Action:
  Print At(5,21);"Please Click On The Action Point 
            For The Mouse In The Left Block"
  Pause 10
  Repeat
    X=Int((Xp+Mousex)/16)
    Y=Int((Xp+Mousey)/16)
  Until Mousek<>0
  If X>16 Or Y>16 Then
    Goto Action
  Endif
  Pause 10
  Alert 2,"Should I Store your work|or quit without saving?|
           File will be saved as a|.LST-File 
           (Can be MERGEd)",1," SAVE | QUIT ",A
  If A=1
    Fileselect "A:\*.LST","MOUSE.LST",C$
    Open "O",#1,C$
    Print #1,"DATA MKI$(&X"+Bin$(X)+")"
    Print #1,"DATA MKI$(&X"+Bin$(Y)+")"
    Print #1,"DATA MKI$(1)"
    Print #1,"DATA MKI$(0)"
    Print #1,"DATA MKI$(1)"
    For I=1 To 16
      Print #1,"DATA MKI$(&X"+Bin$(A(I))+")"
    Next I
    For I=1 To 16
      Print #1,"DATA MKI$(&X"+Bin$(V(I))+")"
    Next I
  Endif
Return
'
'

Procedure Edit_sprite
  Dim A(16),V(16)
  Cls
  Xp=330
  Yp=10
  Gosub Set_raster
  Xp=10
  Yp=10
  Gosub Set_raster
  Box 166,358,310,375
  Box 164,356,312,377
  Text 196,372,"END OF INPUT"
  Do
    X=Int((Xp+Mousex)/16)
    Y=Int((Xp+Mousey)/16)
    If Mousek=1 And X>0 And X<17 And Y>0 And Y<17 Then
      Deffill 1,2,4
      Pbox (X*16)-4,(Y*16)-4,(X*16)+8,(Y*16)+8
      A(Y)=A(Y) Or 2^(16-X)
      K$=""
      For I=1 To 16
        K$=K$+Mki$(A(I))
      Next I
    Endif
    If Mousek=2 And X>0 And X<17 And Y>0 And Y<17 Then
      Deffill 0,2,4
      Pbox (X*16)-4,(Y*16)-4,(X*16)+8,(Y*16)+8
      A(Y)=A(Y) And (65535-(2^(16-X)))
      K$=""
      For I=1 To 16
        K$=K$+Mki$(A(I))
      Next I
    Endif
    If Mousek=1 And X>20 And X<37 And Y>0 And Y<17 Then
      Deffill 1,2,4
      Pbox (X*16)-4,(Y*16)-4,(X*16)+8,(Y*16)+8
      V(Y)=V(Y) Or 2^(36-X)
      K$=""
      For I=1 To 16
        K$=K$+Mki$(V(I))
      Next I
    Endif
    If Mousek=2 And X>20 And X<37 And Y>0 And Y<17 Then
      Deffill 0,2,4
      Pbox (X*16)-4,(Y*16)-4,(X*16)+8,(Y*16)+8
      V(Y)=V(Y) And (65535-(2^(36-X)))
      K$=""
      For I=1 To 16
        K$=K$+Mki$(V(I))
      Next I
    Endif
    '
    Exit If X>10 And X<20 And Y>22 And Y<24 And Mousek<>0
  Loop
  Point:
  Print At(5,21);"Please Click On The Action Point For The
          Sprite In The Left Block"
  Pause 10
  Repeat
    X=Int((Xp+Mousex)/16)
    Y=Int((Xp+Mousey)/16)
  Until Mousek<>0
  If X>16 Or Y>16 Then
    Goto Point
  Endif
  Pause 10
  Alert 2,"Which Sprite type do you want?",1,"NORMAL|XOR",B
  If B=1 Then
    Ty=0
  Else
    Ty=1
  Endif
  Ty$=Str$(Ty)
  Pause 10
  Alert 2,"Should I Store your work|or quit without saving?|
           File will be saved as a|.LST-File 
           (Can be MERGEd)",1," SAVE | QUIT ",A
  If A=1
    Fileselect "A:\*.LST","SPRITE.LST",C$
    Open "O",#1,C$
    Print #1,"DATA MKI$(&X"+Bin$(X)+")"
    Print #1,"DATA MKI$(&X"+Bin$(Y)+")"
    Print #1,"DATA MKI$("+Ty$+")"
    Print #1,"DATA MKI$(0)"
    Print #1,"DATA MKI$(1)"
    For I=1 To 16
      Print #1,"DATA MKI$(&X"+Bin$(A(I))+")"
      Print #1,"DATA MKI$(&X"+Bin$(V(I))+")"
    Next I
  Endif
Return
Procedure Set_raster
  '
  For I=0 To 16
    Line Xp+I*16,Yp+256,Xp+I*16,Yp
    Line Xp+256,Yp+I*16,Xp,Yp+I*16
  Next I
  Box Xp-2,Yp-2,Xp+258,Yp+258
Return

Procedure Init
  Spoke 16745024,0
  Deftext ,16,0,20
  Text 70,50,"THE ACC™ AND DSP PROUDLY PRESENTS"
  Text 70,100,"   PATTERN EDITOR VERSION 1.4a"
  Deftext ,0,0,13
  Alert 1,"Hit Return to Continue",1,"OK",A
  Spoke 16745024,-1
Return
' End of program

In the next issue of ST NEWS, that will be Volume 1, Issue 6, we hope to publish a Scroll Message Editor, as well as a powerful monochrome drawing program called "Simple Draw". But that's not sure yet, as we are still negotiating with the author.
If you have written a nice program, preferably in GfA Basic or machine code, please send it in for us to use in ST NEWS. Of course, you will get all the credits you deserve. Please refer to our "Reader's Service" section for more information about how you should do that.

SOMETHING ABOUT INTERRUPTS by Mark van de B.

	On the ST there are some different types of interrupts. In this 	piece of writing I will discuss some ways to program timed 	interrupts. Maybe some other time I will discuss the other kinds 	of interrupts.
	But first another problem arises: In which language should I 	program interrupts? There are two languages suitable for the 	job, C and 68000 machine language. Advantages of C: Easier and 	faster to write programs in. Disadvantages of C: Not as fast as 	machine language and also you need to know which overhead is 	produced by the C-compiler when translating a function. There is 	also no easy way in C to execute the RTE instruction (ReTurn 	from exception). I will give an example of a C-interrupt routine 	later. Advantages of machine language: Fast and more efficient. 	Disadvantages of machine language: Harder to understand than C 	and it also takes more time to write a routine than in C. 	Personally I prefer machine language to program interrupts 	because I think that the disadvantages of C are too big. By the 	way: When you have written an interrupt routine in machine 	language it is still possible to call this routine from a 	program written in C. This can be done by linking the assembled 	machine language routine together with your compiled C program.
	Now for the 'real' work, how to get the machine executing your 	interrupt routine. Two types of timed interrupts can be 	programmed on the ST: start your own timer and synchronize your 	routine with the system interrupt.
	Starting your own timer: First I will show a little program from 	which I will explain what to do to get the interrupt running.

	*
	* Interrupt routine written in 68000
	*
	_interrupt:
	* always put an underscore in front of the interrupt routine
	* otherwise it is impossible to call this routine from C.
	* C compilers put an underscore before every variable or
	* function
		addq.w   #1,_var  * some variable to count interrupts
	* between here and the RTE-instruction can be a lot of
	* instructions, including privileged ones, because an inter-	* rupt is always executed in supervisor mode.
		bclr	    #4,$fffffa11 * interrupt no longer in service
		rte		        * ReTurn form Exception (interrupt)

	/* now some C code */
	#include <osbind.h>
	long int var=0;

	insttimer()
	{ Xbtimer(3,0x6,0xff,interrupt);
  /* 3: timer D
     0x6: value of control register
	   0xff: value for data register
     interrupt: address of interrupt routine
  */
	}

	main()
	{ insttimer(); /* start timed interrupt */
	  Cconin();
	  printf("I executed %d interrupts",var);
	  Jdisint(4); /* disable interrupt */
	  Cconin(); /* give chance to read text */
	}

	Xbtimer starts the desired timer and installs the interrupt 	routine. For more information about Xbtimer and its parameters, 	refer to page 217-218,47-48-49,272,81-82. Never  forget to clear 	the according bit in the interrupt-in-service register, or your 	interrupt will occur only once.
  (Editorial comment: The pages that Mark refers to, are in "ST   Intern" from Data Becker).

	Synchronizing a routine with the system interrupt: This is a 	very simple thing to do and it can be done very easily from C. 	Now follows another program in C in which does the job.

	#include <osbind.h>
	long int var;
	short int index;

	synchronize(routine)
	int (*routine)(); /* pointer to (=address of) function */
	{ register long *vblqueue;
    register short *nvbls;
    register long i,j;
    register short bool=FALSE;
    register long save;
    /* next install a routine in the VBL-queue */
    save=Super(0); /* switch to supervisor status */
    nvbls=0x454; /* address of number of VBL routines */
    i=(*nvbls); /* get the number */
    vblqueue=0x456; /* address of pointer to VBL queue */
    vblqueue=(*vblqueue); /* address of VBL queue */

    for(j=0;j<i;j++)
      { IF *(vblqueue+j)==0 /* check if place is used */
        THEN *(vblqueue+j)=routine; /* install */
             bool=TRUE; /* synchronizing succeeded */
             break
        FI
      }
    index=j; /* remember index of VBL queue where routine was */
    if(!bool)
    { Cconws("Unable to synchronise routine with VBL-irq");
      Super(save);
      Cconin();
      Pterm0() /* synchronisation failed, quit */
    }
    Super(save); /* restore previous state */
  }

  rmsync()
  { register long *vblqueue;
    register long save;
    save=Super(0);
    vblqueue=0x456;
    vblqueue=(*vblqueue);
    *(vblqueue+index)=0;
    Super(save);
  }

	countirqs()
	{ var++;
  }

	main()
	{ synchronize(countirqs);
	  Cconin();
	  printf("%d VBL-interrupts have been executed",var);
	  rmsync();
	  Cconin();
	}

	Ohh, uhh, yes, you might say now. Don't panic.
	In the ST a VBL (Vertical BLank) routine is executed every 1/60 	th of a second. It is called vertical blank because at the time 	when the interrupt occurs your ST has drawn all lines on the 	screen from top to bottom. During this VBL interrupt some things 	which are essential for your ST's behavior are done. After 	having done this the ST checks a table which contains eight 	addresses of subroutines (pointers to functions). The 4-byte 	address of this table is at address $456 and address $454 	contains the maximum number of routines in the table. There are 	two kinds of entries in this table: entries that contains zero 	and the others, containing non-zero. If an entry (which are of 	course 4 bytes) is zero then it won't be executed, however if an 	entry is non zero then a Jump to SubRoutine is executed to the 	address at that entry.
	Well, now you'll understand what the synchronize function does, 	don't you? It searches for a free entry in the table, if it 	found one it installs the routine and sets the variable index to 	the number of the entry. If it didn't find one it will tell you 	and abort the program (Of course there is a solution to this 	problem but it is very unlikely that there are no free entries 	in the table, so I won't discuss this).
	The rmsync function just sets the entry at which the address of 	your routine stood to zero, so it won't be executed anymore.
	Well, that's it for this time. Maybe I will tell you something 	more about the ST in forthcoming editions of ST NEWS, but that 	also depends on the chief-editor, designer, writer etc., also 	called Cronos. So if you liked it, let him now, and he can 	contact (sooiks) me. Nano nano.

  (Editorial comment:  The C-Compiler Mark used was the Digital   Research C-Compiler of the Atari Developer's Package).

THE DISC by Michael Abbott

On our search for nice novelettes that have something to do with computers, the computer age, or even pure science fiction, we have come across some old computer magazines  (this story is rewritten from one of July 1984). ©1984 by Business Press International, Ltd.

 To look at it, the processor was merely a disc about 160 mm in diameter and perhaps 60mm thick. Somewhere beneath its mirror-polished surface was a power source wringing out the last of its energy after an eternity in space.
 One of the disc's surfaces was more glassy than the others and when observed through an infrared viewer it scintillated delicately as though sprinkled with 'stardust'. Every few minutes pictures would form, as if it were a high-resolution dot display, but the graphics meant nothing to any scientists present. Most of the time the millions of optical fibres twinkled randomly with single bits of data.
 State-of-the-art technology had been clumsily applied to the magic surface in an attempt to interface it to the supercomputer that towered alongside. The hastily constructed optical interface was of the highest resolution achievable, yet each of its fibres blotted over some 10,000 or 15,000 of the disc's tiny pixels. It had taken engineers 18 months to prepare for what could turn out to be the most amazing dialogue or the greatest anticlimax in history.
 "It's like trying to couple an antique clockwork mechanism to a naked microchip but this is the best we can do." The resigned comment came from Professor Jim Hamner, who was on attachment to the Department of Defence.
 The President was tired and dishevelled. It would soon be dawn and there had been nothing to see yet. His ebony-spectacled bodyguards checked the presence of their guns, which they hid beneath perfectly tailored suits. "Well, apart from nearly triggering off a war, what else is there to know about this thing?" the President asked.
 The mysterious processor had arrived from deep space, borne on a vehicle no larger than the avarage satellite, and had slipped into a declining orbit. A shuttle had been called out to retrieve the visitor only after all the powers with space capability had denied they had anything to do with it.
 Hamner broke his gaze. "Nothing else to know yet, Mr. President. But with the country's top programmers and some lateral thinking, we hope to achieve communication with the disc. It just might be possible using our own supercomputer and the makeshift interface you see before you."
 "In the short then, Jim, all we know is that this disc is some kind of computer and it's extraterrestrial?" The President was looking for a summary of the situation, as usual.
 Hamner agreed, and appended an afterthought ruefully. "And that its designers were hundreds of years in advance of our own even when they built this thing. What level of civilisation must they have reached by now?"
 "We have not ascertained its origin then, Jim? No guesses, eh?"
 "It could have popped right out of a black hole for all we know, Mr. President."
 The President prepared to leave. The unimpressively small device had been playing havoc with his engagements. "Keep me posted," he barked.

Five meaningless rows of characters flashed on to the supercomputer's screen. The President pulled back his chair and sat on it cowboy-style. For several minutes the two men watched the cyphered data incredulously, until the President became irritated by the regimented nonsense that paraded before him.
 Hamner was more calm. He lit his pipe and nodded knowingly. "We may not need those programmers after all, Mr. President. It looks like the disc has its own ideas about driving our computer."
 Still more jumbled tabulations marched across the screen but not a single meaningful word appeared.
 "Different civilisation, different language!" Hamner declared.
 "No interpreter I use can handle that lingo. Couldn't even pronounce it," said the President. "The disc could be trying to tell us something. How do we translate it?"
 "They're not words," Hamner laughed. "They're a kind of bastard, halfway translation. If we are patient, I think we might get to see something that'll really tax the imagination."
 By now, the entire scientific team had gathered around the computer. Security cameras were rolling already to record everything and a third computer running in the background was set up to record all data exchanges.
 Then, astonishment! A silent almost matter-of-fact conversion to intelligible read-out had taken place. The screen cleared, leaving these words:

 Good day. I am friend.
 Interface reconfigured at 1.5 percent resolution.
 Parallel bi-directional mode.
 Language algorithm 48 percent efficient.
 Therefore please re-educate on error.

 The President clawed his thinning hair in bewilderment.
 "Oh, it's nothing to do with our machine, sir. That's the disc speaking."
 Like any polite, unsolicited caller, the disc began to explain the reason behind its visit.

 My name translates Envoy Sixty.
 Planet of origin  negative on translation to your language.  Approximates:
 Blackstuff. Will relate celestial position once interface with
 your astronomy database affected. As yet insufficient data source
 for terminological translation. Read more.

 The scientists were still smiling at the disc's struggle with their illogical language when the President announced his suspicion that the whole thing was a hoax aimed at his administration. Defiantly, the screen cleared and began a fresh message.

 My journey: Two million your years.
 Velocity: Marginal sub-light speed.
 Purpose: Contact other civilisations.
 100 launches total. Envoy Sixty targeted your galaxy. On arrival,
 local radio signals indicated high life probability this planet.

 Hamner signalled his assistant to organise the database linkups. "Get the astro-database laid on first. It'll take time to rotate through the billions of stars necessary to match a completely alien map of the universe with our own. The civilisation that spawned this machine observes the heavens from a totally different viewpoint and has different names for anything in it. It could even exist in space that's uncharted by us. There's a thought! There might be nothing to match!"
 "Then extend the general database. The disc's ability to communicate with us freely will depend upon its knowledge of our language, environment and culture." Hamner was clear about how he wanted the situation handled. He knew it was no hoax.

For decades sensitive receivers had been listening for unnatural radio signals from outer space, signals which might have come from a distant civilisation. Latterly, the broadcasting of mathematical patterns had, so scientists claimed, given distant civilisations a greater chance of discovering they were not alone is this universe too. It was obvious the disc's creators had long since gone one stage further by launching numerous intelligent pods towards promising galaxies. They could not dispatch people, so instead they sent their most intelligent machines as envoys.
 Hamner sat at the keyboard and set down his pipe. The disc was doubtless loaded with fantastic information about a far-off people, their civilisation, technology and culture. He typed in a restrained question.

 Have you the means to notify your home planet of your discovery
 of life?

 The screen cleared for the reply, then came

 Affirmative.

 Nothing was added. Hamner tapped at the keyboard again.

 Have you notified your home planet that you have discovered
 life?

 Another word appeared casually below the last.

 Negative.

 Again there was no follow up. No explanation. The President offered his own explanation. "Maybe they don't wanna know back home two million years later. They've probably invented a faster way to travel and overtook the thing before it got here. There are enough UFO sightings to support that possibility."
 But Hamner was not satisfied. He typed in a simple question:

 Why not?

 These chilling words appeared on the screen:

 Launches were automatic. Last 42 were post-war. No one to notify.

 A great deal of silence filled the room. The President's bodyguards glanced at each other with rare animation. No one spoke: there is no suitable comment for such an occasion.

 Immediately the databases were on-line the visual display began to wriggle with merging stellar patterns. The disc had assumed control over the matching process and was throwing up observations of interest as it proceeded.
 "Looks like we've got a bright new boy on the team," the President said. The VDU patterns were reflecting in his eyes in the half-light.
 "It's a pretty versatile machine," Hamner agreed. The disc was simultaneously managing to access the general database.
 The scientist wandered across to the laboratory's small windows and gazed wistfully through the glass. Quite suddenly, the desire to know where Envoy Sixty came from, and to discovers what its creators actually looked like, was stronger than the desire to plunder its data bank. There seemed to be an element of bad taste in taking privileged information from a civilisation that had died since making the offer. But he was fatigued. Perhaps matters would assume different proportions after some sleep - whenever that would be. Then Hamner raised a stubby finger towards the sky. "My God!"
 The President was preoccupied reading aloud the facts coming up on the screen. "It says they called this galaxy M31 Nebula. The disc claims to come from a spiral galaxy like ours. And look! Apparently we have 150,000,000,000 suns out here."
 A fresh-faced young technician,  awed by the President's company, stepped forward. "All galaxies have mind-boggling numbers of suns, Mr. President, sir. Each one at the centre of an entire planetary system. The numbers of planets involved is countless and the chances of life extreme."
 Hamner was still observing the sky. A shaft of light sprang across his sunken eyes as an immense golden orb climbed away from the city's jagged skyline, followed by a smaller sun that threw off an intense blue light.

 "I don't believe it!" Hamner grunted. "It's morning already."
 "And a beautiful one at that," the President added before returning his attention to the VDU.
 The young technician cleared his throat. "And of course, Mr. President, they're not all binary systems like ours."
 The President interrupted, "Ha! It now says a closer translation for the home planet is Earth. Cute name for a planet, don't you think, son?"
 The President cast his shadow across the glassy disc. "Well, old traveller, your home is Meeson now, and you're most welcome. Perhaps you'll help us avoid the same mistakes your folks made."

ARE YOU A GOOD ST OWNER? by DSP
 1) YOUR FRIEND SAYS HIS AMIGA GAMES ARE BETTER THAN THE ST's
	Would you:
	A) Melt his keyboard.
	B) Ignore him.
	C) Keep paying his bills at the mental asylum.

2) THE LOCAL KNOW-ALL OFFERS TO SWAP HIS SONY SHIT-BIT FOR YOUR ATARI
	Would you:
	A) Die laughing.
	B) Agree to the swap.
	C) Let him see 10 seconds of "Time Bandits".

3) A BURGLAR STEALS YOUR ST
	Would you:
	A) Check the houses of all the local 64 owners.
	B) Steal somebody elses ST.
	C) Be grateful there's at least one sensible burglar around.

4) YOU WATCH SOMEONE GETTING STUCK ON AN ADVENTURE YOU KNOW THE    SOLUTION TO.
	Would you:
	A) Barge in and show him how it's done.
	B) Congratulate him warmly for having got as far as he has.
	C) Chortle away to yourself, just loud enough for him to 	   hear.

5) YOUR SF354 DISKDRIVE STARTS TO MAKE FUNNY NOISES.
     Would you:
	A) Kick it.
	B) Ignore it, because it's supposed to do that.
	C) Tell your little sister to stop feeding it raspberry jam 	   sandwiches.

6) THE GOVERNMENT DECIDES TO PUT AN EXTRA TAX ON COMPUTER     GAMES.
	Would you:
	A) Buy a Commie and play Mastertronic games.
	B) Pray for a win on the pools.
	C) Not worry because your're a filthy little pirate anyway.
 7) YOUR MOTHER GIVES YOUR ST TO A JUNK YARD.
	Would you:
	A) Give your mother's record player to a junk yard.
	B) Give your mother to a junk yard.
	C) Spend all day hunting for the ST amid the mountains of 	   64's, Speccies and MSX's.

8) YOU'RE SPOTTED AT THE V&D HOLDING AN "MSX INFO"
	Would you:
	A) Commit suicide.
	B) Point out that it was only for a giggle.
	C) Swallow hard and buy the magazine.

9) YOU ARE INVITED TO TAKE PART IN A COMPUTER-GAMES CONTEST.
	Would you:
	A) Go hiding under a stone for a few years.
	B) Pray for a power failure during the contest.
	C) Have the contest on "ROGUE" and hope your opponent falls 	   asleep first.

That's all folks, and remember:

ATARITURI TE SALUTUM ! 
(Those who are going to watch their Atari are greeting you)

USER GROUP UPDATE by Cronos

In this part of ST NEWS, that will be written in any issue from now on, you will be able to read a summary of all the computer clubs that support the Atari ST that we've heard of. If you have an address of a user group that isn't yet included, please contact us at our correspondence address.

Vereniging ST gebruikers Zuidnederland
Pastoor de Kroonstraat 20
5211 SP Den Bosch
The Netherlands

Stichting Huiscomputers Nederland (SHN)
Fazantlaan 61-63
6641 BX Beuningen
The Netherlands

Computer Club Veldhoven (CCV)
Braak 119
5501 DH Veldhoven
The Netherlands

Micro Computer Gebruikers Vereniging Triorex
Cortenbachstraat 81
5707 TE Helmond
The Netherlands

Bund der atari ST Anwender
Otto-Hahn-Straße 26
4000 Düsseldorf 13
West Germany

Stichting Atari Gebruikers (SAG)
Postbus 180
4130 ED Vianen
The Netherlands

ST gebruikers
Groeze 8
6581 TL Malden
The Netherlands

ST Club Eindhoven
T.a.v. Hubert van Mil
Postbus 1424
5602 BK Eindhoven
The Netherlands

Most usergroups have a monthly day on which they meet to exchange information, PD programs, etc., or just chat a bit about their computers, their newest software and how much better heir computer is when compared with another one's. I suggest that you have a look at a few of those meetings before you decide to join one of them. Here are a few data and addresses:

Stichting Huiscomputers Nederland (SHN)
  1st Saturday of the month:
    Restaurant 'De Engel'
    Burg. Wallerweg 2
    Houten-Dorp
    From 10-15 hours
    Mostly there: Atari ST, C-64, C-Amiga, C-128
  2nd Saturday of the month:
    Gebouw 'Interstudie'
    Van Schuijlenburgweg 3
    Nijmegen
    From 11-16 hours
    Mostly there: Atari ST, C-64, C-Amiga, C-128
    We visit this meeting regularly
  3rd Saturday of the month:
    LTS 'De Hagerlei'
    Van Nijvenheimstr. 23
    Venlo
    From 11-16 hours
    Mostly there: Atari ST, C-64, C-Amiga, C-128
    We visit this meeting regularly

Computer Club Veldhoven (CCV)
  Last Saturday of the month:
    't Patronaat (voorheen Gemeenschapshuis Zeelst)
    Blaarthemseweg 18
    Veldhoven (Zeelst)
    From 10-16 hours
    Mostly there: Atari ST, C-64, C-128, MSX, Oric, more
    We try to be here every month

Micro Computer Gebruikers Vereniging Triorex
  2nd Saturday of the month:
    Mediatheek v.d. 1e LTS
    Keizerin Marialaan 2
    Helmond
    From 10-14 hours
    Mostly there: C-64, VIC-20, unfortunately also some Amigas...
    We are never there, but mostly we go on Wednesdays (from
     19-22 hours), when there's a weekly meeting

ST Club Eindhoven
  1st Saturday of the month:
    Gebouw 'De Ketting'
    Tinelstraat 3a
    Eindhoven
    From 10.30-15.30 hours
    Mostly there: Atari ST, 600XL, 800XL (No Commodores!!!!!)
    We try to be there every month

ST Gebruikers
  2nd Saturday of the month:
    See SHN, 2nd Saturday of the month
    Mostly there: Atari ST (No Commodores!!!!!!!!)

We hope to have brought you the most up-to-date information available on this subject. If you know another computer club that supports the ST, anywhere in Europe, please contact us so we can mention that group, as well as their opening dates, etc.
As we have contacted some people in Germany that might be acquainted with several user groups there, we hope to bring you a thorough list of names & addresses of German user clubs in an upcoming (maybe the next?) issue of ST NEWS.
Our address: ST NEWS, Fuutstraat 2, 5702 LN,  Helmond, The Netherlands.

    

SOFTWARE MEGA-REVIEW: NEW PSYGNOSIS GAMES by Cronos

Everyone must have heard from Psygnosis' first game on the ST (now, also supplied on expanded Amiga or Fat Mac), 'Brataccas'. This used to be one of the very first games on the ST, but it still set standards for software to come.
Recently, they published two new packages: 'Arena' and 'Deep Space'; again, Psygnosis seems to set standards.....

Deep Space  

After booting up the program, one is welcomed by an astounding picture of a metal owl, with the text "Psygnosis Presents". My first thought was: "If the rest of the game is as good as this picture, it will sure be a hit!". Well, after a bit of loading (heavily speed-up!) another picture appears, which is just as good (or maybe even better) as the first: A sturdily built owl that just leaves his hawk-like space craft. If all goes well in the game, you'll never see him back (as far as I know). This picture also commands you to insert disk B. When you've done that, the drive will start loading again. After a while, the screen turns black and the game starts.
At first, the game looks very much like 'Star Raiders'. But soon, it turns out to be a somewhat enhanced spacecraft you're in.
The dashboard is divided into four sections: from left to right the on-board computer, steering part, weapon installations and scanner. You can turn the on-board computer on or off by either clicking on the "OFF" or "ON" word on the screen or pressing F1. Once you've choosen to turn it on, you can select various options (either with F2-F7 or the corresponding signs under the computer display). Here you can order various drones (repair drones, energy drones, and more), look if you're on course, specify your flight target, and a lot of other things. The steering part consists of one steering weel. You can 'drag' it left, right, up, down, etc. with the mouse, thus steering your spacecraft. You can also accomplish this by moving the joystick on port #1 or using the arrow keys of your keyboard.
To the right of the steering wheel you can see a 2 by 3 grid of option switches. Here you select missiles, quarks, and various other options. You can e.g. retro thrust, lock/free windows, etc.
The scanner can be activated using either F10 or clicking the arrow up on the screen (right of the 2 by 3 I've just talked about). Here you can have a look at the positions of enemy vehicles, etc.
During game play, you're attacked by extraterrestrials, like Vexon scouts, who whizz past you and blow hell out of you if you don't know what you're doing. The action graphics are superb!
Your target is to trade a bit with various planets. As you gain more money, the quest starts to be somewhat easier. But watch my choice of words: easier, but not easy!
You must look out not to crash into any Vexon scouts, and you must avoid being hit too often. When you don't do that, you end up bleeding to death outside your craft, somewhere in Deep Space....

Arena  

'Arena' is a sports game, for 1-4 players. One can compete in various events: Hundred Meters (Dash), Long Jump, High Jump, Pole Vault, Shot Put and Javelin.
Actions and options are choosen using the left mouse key (that you'll have to double-click), whereas you use the right mouse key twice to quit or pause an event.
After starting the game, I was quite disappointed. I had just seen "Deep Space" and one can safely say that anyone can create the "Arena" front picture (the second; the first is the metal owl, again, which looks the same - very good).
But when I've inserted the second disk, a very nice picture appears after a short while (again, short, because Psygnosis used a disk-turbo). From this picture, that shows action scenes from all the sporting events, you can select your event. You can also choose to load or save a game, start a new game (with new names), quit, or look at the score board.
The animation is very good, especially the individual movements. The smooth link-up between movements could be done better, but that's because I used to be very spoiled with looking at the superb movement of sprites in Epyx' "Summer Games" (both I and II) back on the Commodore 64 (cough! cough!). And now here comes the only disadvantage of the game: It uses the keyboard to get the athletes moving: the "A" and "'" key, to be exact. After starting the event (after the appearance of the athlete, this can be done by double-clicking the left mouse key), you have to press "A" and "'" by turns. The quicker you do that, the better the performances are (let's not talk about the keyboard). If you don't act immediately, the athlete starts to say things (in "Brataccas"-like air bubbles), like "We seem to be lacking the competitive spirit here", "Will you pay attention", "Somebody...wake him up" or "How about a game of Deep Space...another classic from Psygnosis".
After you've had your turn, an umpire appears on the scene, that tells (or rather, insinuates) you how you've done. When you've had a foul, he might say things like "It's a foul...ha....ha....ha", "How Amusing"  or "Oh...how very  unfortunate for you...snigger...
snigger". If you've done a bad job, he comes up with sentences like "My 4 year old son can do better than this...it's pathetic", "Gasp..wheeve...cough..choke", "The moral of the story is....give up", "Well, we might as well pack up now" or "Ever thought of taking up golf". When you've made a foul at high jump, he might add something like "How unfortunate....you seem to have knocked the bar off....snigger". But the athlete isn't silent - he automatically replies, with remarks like "Push off....shorty" or "Out of the way...short stop". In those cases, the umpire sometimes adds "OK Mr. Average".

All on all a very amusing game, but I think Psygnosis had better used the joystick facilities of the ST instead of the mouse-and keyboard facilities. And there are a few little bugs in "Arena" as well: When you play Pole Vault, quite a big piece of the stick is missing. You'll only notice it once it hits the ground - but you will still not see it. And there's one more: Sometimes, another athlete appears on the background (practicing, I suppose), who seems to walk in front of some bushes an some other umpires on the fore-ground. But these are mere beauty bugs. It's still a very good game.

Game rating:

Name                    Deep Space            Arena
Authors                 David H. Lawson       Ian Hetherington
                        Garvan Corbett        Colin Rushby
Graphics                8                     7.5
Sound                   7                     6
Setup                   8                     9
During attractiveness   8                     7.5
Overall rating          8                     8

For more information, please write to:
            Psygnosis
            1st Floor
            Port of Liverpool Building
            Pier Head
            Liverpool L3 1BY
            England

In Holland, these games are for sale at:
            Telekoder Computers
            Hoogstraat 26-53-65
            Rotterdam

And here are some hiscores I made that you can try to break:
            Long Jump                         7.42 metres
            100 Metres (Dash)                10.03 seconds
            Javelin                          70.21 metres
            Pole Vault                        4.01 metres
            Shot Put                         14.09 metres
            High Jump                         1.89 metres

Good luck!!

HOW TO CLEAN YOUR MOUSE by Antiware

If you have read your Atari ST manual you can read that it is important that your mouse must roll on a clean and flat surface.
But no matter how clean the surface is your mouse always gets dirty. The only thing that you can do about this is cleaning your mouse. You must turn off your computer and lay the mouse on his back,   so you can  see two screws.   You must get them out with a proper screwdriver. After you have done this you must take out the ball by taking off the 'door' that is holding it. If  you have got that right you must turn the mouse on his 'feet' again an take off
the cover. After you have done this you'll see three iron wheels which are the heart of your mouse.  If your mouse is dirty you can see a thick black ring on it, you must get that off the iron wheels with a knife of a sharp utensil (watch out that you do not scrub too hard). If this is done, you should reassemble the mouse. And see how she rolls....

QUESTIONS AND ANSWERS by The ACC™

In this issue of ST NEWS, you'll be able to read the first answers to some questions.

QUESTIONS AND ANSWERS

The answer to the question of Mark van de B., in the previous issue of ST NEWS: "How do I check the joystick controls from C or assembler? especially:  how do I get firebutton data from port #1?".
Well, Mark, this answer needs quite a lot of space. Firstly, one needs to know a bit about the physical realities. The ST has two DB-9 ports, that are located on the right side of the ST (with an Atari 1040 ST, they'll be under the keyboard). They are called Joy0 (the one on the front) and Joy1 (the one on the back). Joy0 can support either Joystick or Mouse, whereas Joy1 can only support Joysticks. Neither of both ports have the possibility to support paddles.
Each port is four bits on the 6301 Keyboard Controller. Normally, these ports are set to be input ports, while they can also be programmed for output (but we won't look at these output facilities, since they have nothing to do with Mark's question).
The task of that 6301 Microprocessor is to check which keys are pressed, and to check mouse status, mouse position, and joystick status. It then has to tell the details about those events to the main processor - the 68000.
The joystick handler of the ST works in one of five modes: Disabled, Keycode, Monitoring, Interrogation and Event Reporting. This is a bit more complex than working with joysticks on the 8-bit Ataris, but with complexity comes power!
Why don't we have a look at these modes:
 DISABLED: This is the default mode on TOS power-up. Not one of the ports is checked for joystick information. To enable the reading of information, the keyboard must be told which type of joystick scan it must perform, first.
Here's how you can disable joystick reporting:

68000:                  C:

move.w #$1a,-(sp)         #define IKBD 4
move.w #$4,-(sp)               :
move.w #$3,-(sp)               :
trap #13                       :
addq.w #6,sp            Bconout(IKBD,0x1a)

 KEYCODE: In this mode, standard cursor-key make/break control codes are returned by the joystick. The directions will emulate the cursor arrow keys and the firebuttons will return $74/$f4 (for Joy0) and $75/$f5 (for Joy1).

 MONITORING: With this mode, is it possible to instruct the keyboard to scan the joysticks every X hundredths of a second. This mode is largely incompatible with the default joystick handler, so you'd better use another mode for general purpose programming (such as event, keycode or interrogation). Monitoring mode is used mainly for game programming.
 EVENT REPORTING: In this mode, the Joystick's status is reported at the moment that an event occurs (so when you move th joystick, only then the status will be sent through). This mode is supported by the IKBD handler, but first has to be turned on with the EVENT REPORTING MODE command ($14). A program doing that could look like this:

68000:                  C:

move.w #$14,-(sp)         #define IKBD 4
move.w #$4,-(sp)                 :
move.w #$3,-(sp)                 :
trap #13                         :
addq.w #6,sp            Bconout(IKBD,0x14)

INTERROGATION: In this mode, the joystick status is reported every time the interrogation command ($16) is sent to the keyboard. It is also supported by the IKBD handler. Here, again, you must enable this mode first. You can do that by the INTERROGATION MODE ENABLE command ($15). A program doing that can look like this:

68000                   C:

move.w #$15,-(sp)         #define IKBD 4
move.w #4,-(sp)                  :
move.w #3,-(sp)                  :
trap #13                         :
addq.w #6,sp            Bconout(IKBD,0x15);

The actual interrogation of the joysticks is sampled in this program, using instruction $16:

68000:                  C:

move.w #$16,-(sp)         #define IKBD 4 move.w #$4,-(sp)                 :
move.w #$3,-(sp)                 :
trap #13                         :
addq.w #6,sp            Bconout(IKBD,0x16);

To start working with joysticks, you must activate them first. You can do this by using BIOS #34 (KBDVBASE) to determine where the beginning of the Intelligent Keyboard Vector Base Table is located. Vector #6 (when counting from 0-8 in the Table) is the pointer to a routine that handles joystick interrupt. BIOS #34 returns a 4-byte (LONG) pointer to the Base of the Table. To know where vector #6 is located, just add 24 to the address you'll get. Now you must place the LONG address of your own routine there.
Which data does one actually get from the joystick?  These data are called Back Packets, and there are two kinds of Back Packets, each 2 bytes in length. When you're using Event Reporting Mode, the first byte of the packet describes the joystick the status belongs to. Joy0 would be $FE, whereas Joy1 would be $FF. The second byte determines the actual joystick position. Therefore, you'll have to look at that byte bit-wise; each bit has a specific meaning:

 bxxxRLBF 
Bit 7 (so the leftmost bit) is set whenever the fire button is pressed. Bits 0-3 are set for the joystick directions:

 R = Right  L = Left  B = Back  F = Front 
Bits 4-6 aren't used at all.
In Interrogation Mode, however, every time an interrogation command is sent, both joysticks are returned. The first byte of the Back Packet belongs to Joy0, whereas the second byte belongs to Joy1. The bit patterns of these bytes are the same as those described above (at the Event Reporting Mode).
Now some final things you should look after when you're programming the joysticks: Your joystick interrupt handler should (at least) save all used registers to the stack, and then set a flag to show that a new Back Packet has been received. The 520ST puts the address of the Back Packet in A0 (and the stack).
Be sure to put the Packet into your own buffer a quickly as possible, because a newly generated Packet can overwrite it. After that, unstack and restore all used registers before you jump back through RTS. Watch out: all this should take less than 1 millisecond, and the interrupt routine is performed in supervisor mode! Mark, I hope I have answered your question clearly enough; for checking the joystick in Basic I direct you to the article "Useful PEEKs and POKEs", further in this bulletin,
                       Cronos of the ACC™ 
How do I connect my ST to e.g. a stereo installation?
                       Bitbuster

Well, Bitbuster, it is very easy to do that, but it will require some soldering around on the plug that's usually plugged in the monitor socket on the back of your ST. When you have a look your ST's user manual, you'll see that you have a pin called "Audio Out" and a pin called "Ground". These are the pins you must use. But watch out! On some STs (the older ones), there are two pins labeled "Ground". You'll have to use pin 13, that's the lowest pin, on the bottom of the socket. The "Audio Out" pin is numbered 1, and it's located on the top right side (when you look at the socket from the back). What must you do? Firstly, you must find a way of tapping pin 1 to the Audio In pin of your amplifier. After that, you'll have to connect ground pin 13 of your ST with the ground pin on your amplifier! This method used to work back on my 64, and Atari Benelux assured me that this can also be done on the ST. But watch out not to cut off the line to your monitor: You might need normal monitor-sound at some time again!                        Cronos from the ACC™ 
How do I adapt the hardcopy routine on ALTERNATE-HELP with TOS in ROM to properly make a hardcopy on a Star NL-10?
Right now, I only get the left 2/3 of the screen on paper!
                       A3 (Henksoft)

How do I assemble a source file with the AS68 assembler to  an executable program file? When must I use a linker?
Who has experience with the C: command of GfA Basic?
                       Cronos from the ACC™

ADVERTISEMENTS:

I am looking for hard-or software that enables me to synthesize speech on the ST. Layouts are also welcome!
                       Bitbuster

I have heard that there's a layout that shows how to use low-and medium resolution on the SM124. Where can I get that? I need it badly!
                       Bitbuster

People who have my phone number, please call me between 17 and 18 hours only!
                       Cronos from the ACC™

I am looking for hard-or software that enables me to sample sound on the ST. Layouts are very welcome as well!
                       Bitbuster

Who knows the address of the company that makes Fairlight computers?
                       Cronos from the ACC™

Who has Trimbase, Laserbase or DBMan, and is willing to communicate about their experience with them/it?
                       Rufus Camphausen

Who knows a database - or a trick to do it - that can sort historic dates both BC and AD? Please contact me!
                       Rufus Camphausen

What do YOU consider the state-of-the-art ST-DATABASE? I want to use it for large research-projects such as needed in order to write well-documented articles & books?
                       Rufus Camphausen

Well, Rufus. The only database I ever use - I know it sound silly - is DB Master One. But I've heard that Laserbase and Zoomracks are very good. DBMan has a few nasty disadvantages that I've forgotten. Maybe our reader's can help yoo with your question?                        Cronos from The ACC 

WHO, with research-interests and DATABASE/TEXTPROCESSOR (which?), is interested to exchange setup/formats &/or information on disk? We all could save ourselves a lot of time doing similar things? Do YOU have an 'EX LIBRIS.FILE' for your Library? A 'HISTORY OF WARs'? Any attempt to start a special COSMIC CONSPIRACY ENCYCLOPEDIA? A collection of very special and interesting QUOTES? It is far out there's a circle of people exchanging answers to games, .BAS, .ACC etc. But there's also that OTHER SIDE OF THE COMPUTER: INFORMATION & DATA. May be we can - via ST NEWS - get something posting and whirring along such lines, too!?!
                       Rufus Camphausen

RTOS, A MULTITASKING O.S. FOR THE ST by Bitbuster

  The German computer magazine C`t has just released a new, multitasking Operating System for the ST called RTOS (Real-time Operating System). Original Name isn't it? But anyway, it comes complete with a high level language called PEARL (Process and Experiment Automation Real time Language), another original, and allows multitasking on the ST. It opens various very interesting possibilities for programs. What to think of a database program that prints labels or sorts records  while you simultaneously update another file, or a wordprocessor that prints a document while you edit another. Even better are the prospects for those of you who want to automate processes. Think of the possibilities of running an alarm system, monitor your heating and for example control a robot arm all at the same time with just the one ST. Wouldn't that be challenging. There is but one minor drawback, RTOS isn't compatible to TOS. Anyone  who isn't interested in pro- gramming better skip this article, since what comes now will hold no appeal to you. So now that we are among ourselves, here come the goodies.

  The system comes on two or four EPROMS, depending on what you want, together with an utility disk. You will need either to build the EPROM bank which C`t developed or if you are more demanding their I/O-port. The EPROM bank can accomodate either the two or the four  EPROM  version, but the I/O-port only the two EPROM version. The difference is that on the four EPROM version the PEARL compiler is on two of the EPROMS and with the two EPROM version has to be loaded from disk. But once loaded it stays resident, so that's no big drawback if you consider the fact that by sacrificing the compiler you get a real 32 Bit I/O port.

  How about your wallet? Well, the two EPROM version costs DM 198.
The four EPROM version DM 228. Both include utility diskette, manual, the RTOS O.S., PEARL Compiler, 68000 Assembler, Linker/Loader, Monitor/Debugger with 68000 Dis-assembler and Editor.

  The EPROMBoard or I/O-port have to be bought seperately, either as a do-it-yourself print for respectively 29DM and 49DM or if you are not keen on soldering, ready made. Adresses and known prices will be given at the end of the article

Technical data:

Free RAM (1-Meg ST)                     ca. 980 KByte
Number of quasi-parallel tasks          almost infinite
Reaction Time on Processinterrupt       <220 µs
Maximum Task change frequency           >2.2 KHz
Compiler speed                          ca. 500 lines per minute

Dual user possibility, by connecting a terminal to the RS232 port.
HIRES fast color graphics are supported
Funktion Keys can be programmed with ease
No need for RAMdisk or Printerspooler
Hardware-dependent systempart fully documented
The development of ROM-resident software is supported.

In the next issue an article containing more detailed information will be published.

Adresses:

RTOS and prints (also more detailed information about RTOS)
Verlag Heinz Heise GmbH
Postfach 610407
D-3000 HANNOVER 61
West-Germany

Ready-made prints:

STOCKEM Computertechnik
Berghausen 13a
D-5778 MESCHEDE
West Germany
Tel: 0291 / 1221
EPROMBANK           DM 48

MARFLOW Computing
Vahrenwalder Str. 7
D-3000 HANNOVER 1
West-Germany
Tel: 0511 / 3563-280
EPROMBANK           DM 45
I/O-port            DM 198 
Dipl. Ing. Eberhard Meyer
Computer & Elektronik
Keplerstr. 6
D-3000 HANNOVER 1
West-Germany
Tel: 0511 / 3504500
EPROMBANK           DM 49  (with precision sockets)
I/O port            DM 215

THE ST I/O-PORT by Bitbuster

  In the beginning of this year, the German computer magazine C`t finally presented the solution to a problem many a happy ST user was facing, namely that of using the ST for controlling external processes. But how do you do this without a user port as in the good old days of the ZX-Spectrum and the Commodore 64. Well let's try the printer port, allright, you get an 8 bit port, but that's either input or output data, it can't be done simultaneously. And more important, you lose your printer connection. Well then let's roll up our sleeves, get out the old soldering iron, open the case and attack the innards to create an I/O port. Halt, remember, you might still be in the warranty period and you risk incompatibility with future hardware extensions. More promising is the ROM port on the left of the machine.   The only problem is that the Atari engineers, in their infinite wisdom, internally connected the read/write signal to the adresses of the ROM port. Therefore, by every write command to the ROM port GLUE creates a Bus-error, thus causing you ST to say goodbye and crash.

  What are problems for but to overcome them. Let us take a closer look at this ROM port. There should be enough address lines and there are UDS(Upper Data Strobe) and LDS(lower Data Strobe) and both selection lines RS3 and RS4. The only thing to do is to persuade these lines to, during a read operation on them, act like a well-behaved I/O port would during a write operation. The trick is to reconfigure the address lines into data lines. This is done by using A0 - A15 for output, where A0 can be substituted by UDS/LDS. This even is supported by the 68000 with the command: MOVE.B 0(An,Dx.L)Dy, where An is the Base adrress adressed by ROM-select 3 ($FB0000). The Data register Dx is added to this. The high 16 bits of the register must have the value zero, the lower contain the data to be outputted. Dy is a Dummy address where during every output operation the value $FF is written to. This is the input state of the for output not usable data lines. This creates a fast 16-Bit output port. By turning it into a 16-Bit counter, a counter frequency of 140 KHz was reached. Of course only a 16-Bit output  is possible, but this is no great disadvantage, since singlebit-manipulations like Bit-Set, -Change, Clear or AND and OR can be do in the data register to be outputted. It isn't neccesary to program this port in assembler, Atari basic is sufficient also, but slower and not as powerful.

  Attentive readers might already have concluded the I/O port doesn't use the lower 64KByte of the ROM port. This is correct, here there is room for two 27256-EPROM`s. Here for example, diagnostics software could reside, since after Reset, the ST checks the ROM port just to see if there are EPROMs in place.  If so, it executes the program(s) on these EPROMs.    More detailed information on the exact workings of this port, including schematics and the programming for the PAL that is used, can be found in C`t issue 3. Or can be requested from the publisher, whose address is at the end of this article. They also supply ready made PALs and do-it-yourself prints.  For adresses that supply fully build I/O ports see the RTOS article in this issue of ST News.

Verlag Heinz Heise GmbH
Postfach 61 04 07
D-3000 HANNOVER 1
West Germany
I/O-port print      DM 49
programmed PAL      DM 29

  

DID YOU KNOW THAT... by Cronos and others

....we have finally seen screen shots of the GEM version of VIP     Professional?
....there also is some news coming from the American front?
....we are hereby talking about nobody less than Datasoft?
....they are rewriting "Alternate Realities" for the ST?
....they are already working on it since last November?
....they hope to have it ready by Christmas?
....Datasoft is also rewriting "The Goonies"?
....you should write to them for more Info?
....their address is: Datasoft, 19808 Nordhoff Place, Chatsworth,     CA 91311, U.S.A.?
....some more games are being launched on the ST at the moment?
....a few of them are: Gato (a submarine simulator), Exploding     Fist (a karate program from the Melbourne House, England) and     Summer Games (from Epyx)?
....we are now sure that the ST's sound chip really is very good?
....we heard a really nice German 800 XL music demo lately?
....it turns out that we, like most people, have largely     underestimated the ST's sound capabilities?
....it's not for nothing that compatible sound chips have been put     in other computer systems as well, like the Amstrad (with Rob     Hubbard programming on it!), the Atari XLs and nearly all MSX     (uugh! uugh!) computers?
....a lot may be expected from it?
....Cafka Computers has now reached a really stunning low price     for the Atari 1040 STF?
....they ask 2549 guilders for it, without monitor?
....you get one year guarantee?
....you'll still have to buy a monitor with it?
....the SM 124 costs 599 guilders by them?
....the SC 1224 (color) costs 1599 guilders by them?
....it seems the 1040 STF now offers unbeatable value for money?
....the price of 1Kb RAM would thus be about 2.48 guilders?
....Atari is releasing something called an 'Octobussy'?
....this isn't dirty or so?
....it is a device to enable several link-ups on the DMA bus?
....they thus enable you to hook up a hard disk and a CD rom for     instance, simultaneously?
....Sam Tramiel is talking about the AMY chip again?
....it is supposed to be quite alive and kickin' already?
....we hope this will be no false alarm?
....ST owners now will finally have the chip that makes the Amiga     (uugh! uggh!) look like a child's toy?
....the ST version of Atari's "Joust" has better graphics than the     arcade hall version?
....,if Commodore is really going broke, Amiga sales might boost?
....that may be because ST owners want to use it as a coprocessor?
....there might be a boost in MacIntosh sales as well?
....this might happen because ST owners will need the MacIntosh     ROMs for their MacCartridge?

....that you should check a second had Mac from now, especially if     the  previous owner is now proudly showing an ST running Mac     software?
....some ROM chips might be missing?
....the German ST magazine C`t has now published a layout for an     EPROM RAM disk?
....it is now possible to have your favourite programs on     cartridge?
....in the USA, the ST's Mekka, no expansion like this has been     seen?
...."Strip Poker" from the American Softwarehouse Artworx is now     available on the ST?
....Douglas McFarland made sure the girls look even hotter on the     ST as that they did on the 64?
....the poker program itself is largely improved as well?
....I wasn't able to undress any girl when I saw the program the     first time?
....the girl took off my clothes instead?
....a new ST shop has been opened?
....it is called Commedia, Eerste Looiers Dwarsstraat 12, in     Amsterdam?
....it is opened since October 1st?
....its opening times are: 10-18 hours (Wednesday-Saturday)?
....the phone number is 020-380103?
....the Dutch company Xfun has finally launched XChess?
....it is a stunning program that works in 3D on monochrome-as     well as color monitors?
....we are working on getting a review version soon?
....,for information, you should write to Xfun, P.O. Box 744, 4116     ZJ, Buren (GL), The Netherlands?
....there is a bulletin board in Veldhoven?
....it is especially for ST owners?
....its phone number is: 040-531453?
....Print & Technik is selling a really good video digitizer for     599 guilders?
....they also offer a pro-version for about 200 guilders more?
....their address is: Print & Technik, Herr Brockner, Nikolaistr.     2, 8000 München, West Germany?
....Henksoft will probably write an article about video digitizers     (or rather, his  video digitizer) in ST NEWS?
....we hope someone else will follow with an article about sound     digitizers?
....we got the first reply to our Reader's Service on September     20th?
....it was someone who ordered "Synth Sample III" in advance?
....we are now working extra hard to finish it soon?
....Brøderbund is launching a game called "Brimstone" on the ST?
....this might mean that they might eventually also publish "Lode     Runner", "Raid on Bungeling Bay", etc.?
....quite a lot of golf programs will appear on the ST?
....some of them are "Championship Golf" (from Activision) and     "Golf Construction Set", as well as "Hole in One"?
....Electronic Arts isn't only working on "Marble Madness" at the     moment, but on "Sky Fox" as well?
....a lot of Flight Simulators will appear on the ST as well?
....some of them are from Michtron, Island Logic, Mirrorsoft and -     of course - Sublogic?
....Andromeda is publishing "Star Raiders II"?
....Andromeda has also launched "Animate!" and "ST Art"?
....these programs are very good indeed, and make very good use of     the ST's graphic capabilities?
...."ST Art" is a bit slow, however?
....this might be because it uses an own programming language that
    it 'compiles' during the process of graphic operations?
....Oasis software is publishing an extended Forth compiler called     "White Lightning"?
....we eventually hope that they will publish "Machine Lightning"     and "Basic Lightning" as well?
....a software company called First Byte is now launching "Smooth     Talker"?
....we now finally have included the Canadian software newsletter     "F.A.S.T.E.R." in our PD offerings?
....you can also write to André Lafrenière, 1161 Des Fauvettes,     Boucherville, Québec, Canada J4B 6A8 for more information?
....,if you write to them. we would very much like you to send our      ST NEWS to them as well?
....rumours go that "Summer Games" isn't even being worked on at     the moment?
....we hope this isn't tru?
....ST NEWS might soon be spread all over the world?
....it might as well go to the U.S, Canada and Austria?
....we think that's very nice?
....the "Foundation ST" has had some trouble with their PD     offerings recently?
....they were spreading the pre-release of "1st Word Plus", as     well as the newest version of "Copystar" - version 1.5?
....they were knocked on their fingers by Atari Benelux?
....it turned out that these programs weren't PD after all?
....the foundation will now probably be more careful in the near     future?
....,now "Super Huey" has appeared on the ST, the softwarehouse     that wrote it  - Cosmi - might start rewriting more of their     games for the ST?
....a few of their titles are: "Forbidden Forest" (with the sequel
    "Beyond the Forbidden Forest") and "Aztec Challenge"?
....these games appeared back on the Commodore 64 about two years     ago?
...."Super Huey" was a much more recent product (about summer-    autumn 1985)?
....we hope Cosmi will do a better job on those others?
...."Super Huey" really isn't that good....to say the least?
....many other software firms seem to be rewriting their most     recent titles first?
....we hope Epyx will launch on the ST massively in the near     future?
....this is because they launched some new games on the Commodore     64 recently?

....a title to look forward to is "Championship Wrestling", a     wrestling game with excellent graphics?
....it might even prove to be better than Melbourne House's "Rock     and Wrestle"?
...."ST Karate" is announced to arrive on VERY short terms?
....someone I know has seen a simply smashing demo of a ST program     called "Karate Kid II"?
....he says the man from the movie (have you seen it?) looks     exactly the same in the demo?
....we hope to publish a review of it in ST NEWS Volume 1 Issue 6?
....some other games have been or will be imported shortly from     the U.K.?
....some names are: "VIP Lite" (should cost about 700 Dutch     Guilders), "Fireblaster" and "Protector"?
....we don't know anything more about these programs (prizes,     looks, etc.)?
....Antiware and myself competed in a games-contest evening at     Triorex computer Club recently?
....the games were played on a Commodore 64?
....Antiware won the second prize on "Rock and Wrestle", only to     be beaten by one of those TWR succers?
....I won the first prize at the prehistoric game "Soccer"?
....all Commodore 64 owners competing that evening should have     been  ashamed of theirselves, because two 64 veterans walked     away with two prizes?
....the first prize for "Soccer" was a high quality,superb TDK D60     audio cassette?
....this lets you know at what level this particular user group     operates?
...."Elektronica Land" in Den Bosch (you might remember them; they     have founded an ST user club), held a meeting on September the     20th, too (on the same date as the Foundation ST)?
....they attracted people by saying they would show a 2-megabyte     expansion for the ST?
....Henksoft, our correspondent at the spot, told me that it     wasn't even there?
....the price was to be massive?
....we won't mention it here?
....Henksoft thinks you should better forget it completely?
....the chairman of the Computer Club Veldhoven went to Germany     recently, to have a look at ST hardware expansions?
....he brought some nice stuff back with him?
....these were: H.F. Modulator, a Real-Time battery-backed clock,     a  floppy cable for the connection of other disk drives and a     14-p. floppy plug?
....you can contact him at CCV for more information?
....several other things can be ordered through him, like     Epromboards, Prommers, Monitor plugs (!), and much more?
....especially the clock is amazing?
....it plugs into the expansion port and costs only DM 99,-?
....there IS a fabulous astrology program  coming that's  already
    announced for the ST?
....it comes from a softwarehouse in the the US?
....its price is proud (US$ 300.00), but so are its capabilities?
....no-one is distributing it, yet, and no store has it in store?
....this is no advertisement, but just news?
....there's more information about this program - as well as two     other astrology programs - elsewhere in this issue of ST NEWS?
....SubLOGIC's "Flight Simulator II" will have to be waited for     for at least another three weeks?
....DBMan V2.2 includes more commands than DBase III (PC), of     which it is supposed to be a clone?
....Marble Madness, VIP Professional (GEM version), Superbase,     Degas  Deluxe and Paperclip Deluxe are announced for half     November?
....a new and stunning copy-program is launched on the ST in     Germany?
....it is called "Copystar V1.8" and it is supposed to cost DM     179,-?
....the program is bought including an  - uptil now unfindable -     registration number?
....rumours are spreading that Michtron's "Goldrunner" will not be     launched in the near future?
....this is caused by some naughty bugs that the programmer's at     Michtron can't get rid of?
....at the recent ST gathering in London, 2080-(2 Mb), 4160-(4     Mb)-and Advance-(100% MacIntosh compatible) STs were shown to     a limited number of people?
...."Deep Space", a new game from "Psygnosis", is hard to play,     even with the user manual at hand constantly?
....the follower-up to "The Pawn" from Rainbird (Magnetic Scrolls)     is supposed to be ready before Christmas?
....I've heard that it includes....Animation?
...."Star Glider" and "Mercenary" are not yet launched, in spite     of advertisements in computer magazines, etc.?
...."The Pawn" is launched on the Amiga, too?
....it contains sound.....Commodore 64 quality?
....the game locks up if you enter a wrong command several times?
....Michtron's BBS V2.0 is marketed with (too) many bugs?
...."Smart-Team" modems will be available for the ST soon for 599     Dutch Guilders (incl Tax)?
....these modems have 100% Hayes-compatibility, Auto answer/dial     and 300/1200 Full Duplex?
....the PC 1200 modem from Teletron does not really use 1200 full     duplex?
....they achieve "semi-full-duplex" by using "Interspeeding"?
....this slows the modem down significantly?
....there are 12 different 520 STs at the moment?
....that not even includes the STM and 1040 versions?
....a Dutch, fastloading TOS will be available soon, on EPROM?
....Neochrome V1.0 is already launched?
....this version includes several extra options?
....it still isn't possible to animate?
....Data Becker Netherlands has published the Dutch versions of     Textomat and Text Design?
...., in Germany, Profimat is already published by them?
....that is supposed to be an excellent assembler?
....Access has launched the "Leaderboard Tournament Disk"?
....Artworx, well known from "Strippoker", has written "Paggammon"     for the ST?
...."Print Master" freaks can now look out for "The Print Master     Art Gallery II"?
....ABC Software (a Dutch company that writes Dutch software) has     now brought out "Gemcash V2.00a"?
....this program should even be better than the previous version?
...."UCSD Pascal V4.21" in now out on the streets?
....a powerful monochrome drawing program called "JackPaint" is     now written for the ST?
....another monochrome drawing program called "Monostar" is     launched, too?
....Microdeal is publishing a game called "Space Shuttle"?
....XLent has now finished a program that enables you to print     several fonts, called "Megafont"?
....you should try to get your hands on two programs that are     supposed to be truly and utterly amazing?
....I hereby mean "Art Director" and "Film Director"?
....these are all the things that are worth mentioning during the     making of this issue of ST NEWS?
....we will therefore hope to supply you with more facts in ST     NEWS Volume 1 Issue 6?
....that issue will be launched approximately in the first half of
    November this year?

FINAL HINTS & TIPS FOR "THE PAWN" by Rob de Swaan

These hints & tips may only be reproduced by any means AFTER permission of the author.

Below, you'll find a few tips & tricks for those who either have no manual (let's say, eaten by the dog) or those who are really stuck.
The big problem with "The Pawn" is that it is quite impossible to say what the player has done wrong; there are several ways through which the game can be completed.
Apart from the options in the drop-down menu, there are a few others that significantly enhance the playing speed:
            1) Typing in "Graphics" toggles the graphics on/off
            2) Typing in "Function" enables you to define certain
               function keys for macros: you can for example call
               the word 'examine' (which you are supposed to use
               quite often) with one key-stroke this way
            3) Typing in "Again" repeats the last entered command
               line

And these are the tricks:

Since the parser of "The Pawn" uses a very broad dictionary, and because the game only responds to specific words at specific places, I will sometimes specify the only right command line at a hint.

Immediately after the beginning of the game all hell breaks loose. You stumble into Kronos, the magician, who offers you a note. From that moment, you'll only get one chance to ask him something. Otherwise, you can forget it. You must leave here with two  extra items in your posession.

After that, you'll have to pay a visit to the gardens of King Erik of Kerovnia's palace. Get all that you can possibly get there; and examine the whole lot as well. In  one place, examining doesn't help a great deal. You must use "Look in" there. Have you found the plant? Compare it to the one on your T-shirt and try to smoke it. Just keep in mind that you'll have to look under, on, in, behind, etc. certain things in the game. Some things even have to been first before you can get them. Plant the plant.

Now, you'll have to go to Honest (Honest?) John and buy an item there. But do watch out: Not all of Honest John's items are of good quality!

Now, let's go to the guru. Quite annoying, all that laughing, isn't it? Let's 'cover' something and see........ The human body consists of about 90% of water. And water falls out of the sky in many different forms. Don't just take the bowl, but get the rice as well. That makes out some difference when paying Honest John. Now follow the path till you arrive in front of a large boulder, to the north.

Here, you must try to create a lever. Try "Tie hoe to rake with..." and "Lever boulder with hoe". The '....' stands for an item that you're carrying with you.

Once, you've moved these boulders, you must go and fetch the thing the guru wants of you: "The Essential Nourishment......". Once you've got that, go back to the guru and listen carefully to what he says. Let's split and go to the Forest Clearing.

Did you find the pouch? Mix all of it.

Now, try to find the Climbeable Tree and climb in it. Unlock the door and enter it. Can't you remove the boards? Come on, you weren't born in the church, were you? "Move or Remove Plank" could help as well.

Now, go down and make sure you get back with the following: Coin, hard hat, rope, carrot (why don't you eat is, it tastes good) and stroll back to the plateau.

Plateau. The snowman looks great, but.......
What now? Why don't you throw a hot item to him and enter the icy tower. Fetch everything that you can possibly get there and wear the boots. Get back to the climbeable tree to the place where you saw some lumps lying. Srape with your boots and see....you can get them. Oh yes, you haven't forgotten to take up the item you'd thrown at the snowman, again? Let's go to the cave.

Cave (after the boulders)
Search for a cave that has a vertical shaft going up. Drop everything (carefully!), except for your light. Go up, break the wall and see.....the lava has coagulated! You MUST fetch a key down here, otherwise you won't get 350 points! This key fits into the Safe, but also on the door of the Princess' bedroom...
But look out...you can only use it once, but it fits in two locks! I won't tell you what's best!(Ha ha!)

After you've used the blue key, you can go into several directions. Which one? That's something I know and you don't! But be sure to carry at least the following items with you:

Adventurer, white, boots (wear them), rice, lumps, whisky, beer, and a rope.

Please keep in mind, after reading this article, that there is no standard solution to "The Pawn". It depends completely on the way you estimate items and just the way in which you generally play.
In the next issue of ST NEWS, you will find the next part of this epistle, so be sure to get it!
Let them have it!

Editorial note: In ST NEWS 7, a complete solution will be present!

USEFUL PEEKS AND POKES by Cronos

It is actually quite strange that most ST owners aren't drowning in the ST PEEKs and POKEs; back on the Commodore 64, we used to know quite a lot of those, even at the very beginning, back in 1984. But on the ST, I suppose there's a great lack of people who are exploring the machine. That's why there aren't a great deal of PEEKs and POKEs, yet.
In this article I want to have a look at some of the most useful PEEKs and POKEs, so you will be able to enhance your programming a bit. If you want to know a lot more of them, I suggest you to buy the book "ST PEEKS AND POKES", from Data Becker, Written by Stefan Dittrich (ISBN 3-89011-148-3, Data Becker: Merowingestr. 30, 4000 Düsseldorf, West Germany; Data Becker Holland: Postbus 8411, 3503 RK Utrecht, Tel. 030-430254). It costs 39 guilders in Holland.

First, we'll have a look at reading joysticks from Basic.
To do that, you'll have to command the keyboard to check the joystick. This can be done with the help of the OUT x,n command. 'x' is the channel to which the byte 'n' will be sent. Thereby, the following channels are possible:

         0        LST:
         1        AUX:
         2        CON:
         3        MID:
         4        IKB:
         5        VID:

It is clear: IKB (the Intelligent Keyboard) must be used. The value of 'n' can be one of the following commands:

         7        Set the reaction-time for clicking mouse-keys
         8        Immediately gives the relative mouse-position
         9        Immediately gives the absolute mouse-position
        10        Output mouse movent as cursorkey-press
        11        Set wait time untill mouse position is returned
        12        Set scala for mouse position
        13        Check for absolute mouse position
        14        Set the internal coördinate systems
        15        Y-coördinate 0 lies below
        16        Y-coördinate 0 lies above
        17        Resume sending data (after 19)
        18        Turn off mouse
        19        Quit sending data
        20        Immediately gives any joystickmovement
        21        Turn off function 20
        22        Check Joystick
        23        Immediately gives constant joystick-movements
        24        Immediately gives firebutton status
        25        Immediately gives joystick movement (Joy0) as
                   cursor-key presses
        26        Turn off Joystick
        27        Set time
        28        Read time
        32        Load keyboard memory
        33        Read keyboard memory
        34        Start a program in keyboard memory

Also, it's clear: we have to use command #22. The first line in your subroutine that checks joystick movement must thus be:
         OUT 4,22
The result of that command can afterwards be found on memory location 2633. That can be read with the following line:
         VARIABLE=PEEK(2633)
Watch out! This is a 16-bit PEEK! People who want to use GfA Basic must use DPEEK(2633). The 'VARIABLE' may be any numeric variable.
The x-position can be obtained with the following calculation:
         X=X+(VARIABLE AND 8)/8-(VARIABLE AND 4)/4
The y-position can be obtained with this calculation:
         Y=Y+(VARIABLE AND 2)/2-(VARIABLE AND 1)/1
Of course, you can leave the '/1' at the end of the last line away, but I included it just to show you the principles of the algorhythm. After getting the X-and Y-position, you can use them, or PRINT them. Then, you can run through the routine again to check another time, and another timer, and another time, etc.

The second thing that I'm going to have a look at, is programming sound without using either the SOUND or the WAVE command. It can also be done with one simple POKE! Read on the next page how this can be achieved...

The keyboard click, as well as the clock that sounds when errors occur, are controlled through an Interrupt. This interrupt simply throws some data through the soundchip that is located in a table, to where the pointer on location $A86 points. For example, if you would like to hear the bell sound, you should type in 'POKE 2696,32090'. The table of the bell is located at 32090.  The table of the keyboard click is located at 32120. Of course, you can design your own tables.
These tables can be entire musical pieces, where data is sent in pairs: the first byte specifies the register of the sound chip, and the second byte specifies the value that should be loaded in that register. Quite simple, isn't it?
You'll have to experiment a bit, though, before you get good sounds...

GEM VDI CALLS PART II by Manus

In this article, I'll give you some more GEM-routines which you can use in ST BASIC. The subjects in this article are:
 - getting the mouse-position
 - definition of a new mouse
 - mark-statements
 - some graphic statements

MOUSE-POSITION AND KEYS:

To get the mouse-position is certainly the most interesting routine in GEM, because with this routine you can make your programs professional; no more input of a character, but just click the wanted option.
The routine gives you the wanted values in the variables XMOUSE, YMOUSE and KEY, but remember we have to correct the values in XMOUSE and YMOUSE (see PART 1, RECTANGLE).
The variable KEY can have three different values:

   Pressed key       Value
 -------------       -----     Left              1
     Right             2
 Left and right        3

The syntax is:

     gosub MOUSE  
The routine is:

63000 MOUSE:
63002 ' <----- XMOUSE ; YMOUSE ; KEY
63004 poke contrl, 124
63006 vdisys
63008 xmouse = peek(ptsout    ) - 1
63010 ymouse = peek(ptsout + 2) - 38
63012 key = peek(intout)
63014 return

Try this:

5   ' merge "MOUSE.bas"
10  fullw 2: clearw 2
20  color 1,1,1,1,1
30  start:   gosub MOUSE
40  if key = 1 then pcircle xmouse, ymouse, 5, 0, 3600:
50  if key = 2 then gotoxy 0,0 : print xmouse, ymouse
60  if key = 3 then clearw 2
70  goto start

SHOW-MOUSE:

Sometimes, it is very annoying that you can not see the mouse-symbol at all times, because he gets invisible with every output on the screen or every input on your keyboard. Only when you move the mouse, you can see him again.
With the next GEM-routine you can make the mouse visible at any time you want.The syntax is:

     gosub SHOWMOUSE 

The routine is:

63030 SHOWMOUSE:
63032 poke contrl, 122
63034 poke intin, 0
63036 vdisys
63038 return

 MOUSE-SHAPE:

The Atari has 8 different mouse-shapes, which we can also use in Basic. The mouse-shapes are:

   Shape:           Value:
---------------     ------Arrow                 0
Stretched rounded X   1
Bee                   2
Pointing hand         3
Open hand             4
Cross                 5
Fat cross             6
Outlined cross        7

To do this, we have to use a little AES-programming. The syntax is:
     MOUSENUMBER = 0...7 :
     gosub MOUSESHAPE  
                     The routine is:
63280 MOUSESHAPE:
63282 ' -----> MOUSENUMBER
63284 '         0 - 7
63286 if mousenumber > 7 then return
63288 add# = gb
63290 gintin = peek(add# + 8 )
63292 addrin = peek(add# + 16)
63294 poke gintin, mousenumber
63296 poke addrin, 0
63298 gemsys (78)
63300 return
  DEFINITION OF A MOUSE-SYMBOL:

It is possible to create your own mouse-symbol, like in drawing-programs, with the VDI-routine 111. The grid and the backgroundgrid are each 16 words of 16 bits. We have to POKE these values on certain addresses. The backgroundgrid defines which screenpoint of the field (16 by 16) under the mouse-symbol has to stay visible and which point has to been wiped. That is specially important when the mouse-symbol goes over a dark field. Therefore it is advisable to make the backgroundgrid greater then the mouse-grid.
We have to use the next addresses:
 INTIN + 8    color of the mouse: black or white
 INTIN + 6    color of the backgroundgrid
 INTIN + 2  ) point of the mouse, valid for determination
 INTIN + 4  )  of the mouse-position
In the following program we have put the information of different mouse-symbols in DATA-lines. To read these DATA we have to put the DATA-pointer to these data.
The syntax is:

               Restore dataline                gosub MOUSEDATA 

The routine is on the next page.

63140 '--------------- MOUSEDATA --------------------------63141 HAMMER:
63142 data 96,480,960,1984,3968,8064
63143 data 7936,16256,15872,32512,32512,65408
63144 data 65408,65472,63424,65504,25568,65520
63145 data 496,62456,248,508,124,254
63146 data 62,127,31,63,14,31
63147 data 4,14
63150 COFFEE:
63151 data 4624,16184,9248,32376,4640,16368
63152 data 4672,16352,4384,16352,2624,8128
63153 data 0,16320,16352,32764,16380,32766
63154 data 16358,32767,16354,32767,16358,32767
63155 data 16380,32767,16352,32766,8128,16352
63156 data 0,8128
63160 WORM:
63161 data 0,8064,8064,16320,16320,32736
63162 data 26208,65520,30560,65520,32736,65532
63163 data 29132,65534,16318,32767,8054,16383
63164 data 7782,16383,7372,16382,7384,16380
63165 data 4080,8184,2022,4095,60,2046
63166 data 24,62
63199 '-------------------------------------------------63200 MOUSEDATA:
63202 '---> restore line
63204 for a = 0 to 15
63206 read gridfront,gridback
63208 poke intin + a * 2 + 42, gridfront
63210 poke intin + a * 2 + 10, gridback
63212 next
63214 '-------------------------------------------------63250 MOUSENEW:
63252 poke contrl    , 111
63254 poke contrl + 6, 37
63256 poke intin    , 5
63258 poke intin + 2, 5
63260 poke intin + 4, 1
63262 poke intin + 6, 0
63264 poke intin + 8, 1
63266 vdisys
63268 out 2,7
63270 return

                            Example:
5   ' merge "MOUSEDATA.bas"
6   ' merge "SHOWMOUSE.bas"
9   '
10  restore worm: gosub mousedata: gosub showmouse
20  waiting = inp(2)
30  restore hammer: gosub mousedata: gosub showmouse
40  waiting = inp(2)
50  restore coffee: gosub mousedata: gosub showmouse
60  waiting = inp(2)
70  end
MOUSE-EDITOR:

This next program can be used to create mouse-symbols; it calculates the necessary bit-values and pokes them in the addresses. After the input of:
                gosub MOUSEEDITOR 
the new calculated mouse-symbol appears on the screen.
You have to write down the decimal values of the mouse-grid and its backgroundgrid and put them in DATA-lines (see line 63106, remove the REM-statement) like in MOUSEDATA. Using DATA-statements is much faster then using this program for your new mouse-symbol.
When your new mouse-symbol disappears you can recall it through:
               gosub MOUSENEW 
The routine is:

63050 MOUSEEDITOR:
63052 dim a$(16),b$(16)
63054 a$( 0)="---*--*----*----":b$( 0)="--******--***---"
63056 a$( 1)="--*--*----*-----":b$( 1)="-******--****---"
63058 a$( 2)="---*--*---*-----":b$( 2)="--**********----"
63060 a$( 3)="---*--*--*------":b$( 3)="--*********-----"
63062 a$( 4)="---*---*--*-----":b$( 4)="--*********-----"
63064 a$( 5)="----*-*--*------":b$( 5)="---*******------"
63066 a$( 6)="----------------":b$( 6)="--********------"
63068 a$( 7)="--*********-----":b$( 7)="-*************--"
63070 a$( 8)="--************--":b$( 8)="-**************-"
63072 a$( 9)="--*********--**-":b$( 9)="-***************"
63074 a$(10)="--*********---*-":b$(10)="-***************"
63076 a$(11)="--*********--**-":b$(11)="-***************"
63078 a$(12)="--************--":b$(12)="-***************"
63080 a$(13)="--*********-----":b$(13)="-**************-"
63082 a$(14)="---*******------":b$(14)="--*********-----"
63084 a$(15)="----------------":b$(15)="---*******------"
63086 for a = 0 to 15
63088 gridfront = 0: gridback = 0
63090 for b = 15 to 0 step -1
63092 if mid$(a$(a),b+1,1)="*" then bit = 1 else bit = 0
63094 gridfront = gridfront + 2 ^(15 - b) * bit
63096 if mid$(b$(a),b+1,1)="*" then bit = 1 else bit = 0
63098 gridback = gridback + 2^(15 - b) * bit
63100 next
63102 poke intin + a * 2 + 42, gridfront
63104 poke intin + a * 2 + 10, gridback
63106 ' lprint gridfront, gridback
63108 next
63110 goto mousenew
63112 '---------------------------------------------------

POLYMARK:

We can use different drawings as mark, these drawings are:
 - point                      - cross
 - star                       - rectangle
 - slanting cross             - diamond
All marks can be made in every size. The syntax is:
     XPOS = .... : YPOS = ....
     MARKFORM = ....
     MARKSIZE = ....
     gosub POLYMARK To draw an other one:       XPOS = .... : YPOS = ....
     gosub POLYMARK 
It is possible to draw several marks at the same time. We have to use some addresses:
    PTSIN + 4, PTSIN + 6, ....    Positionparameters
    CONTRL + 2                    Number of marks

Theoretical we can wipe a mark by drawing it again with the backgroundcolor. But then we lose the background-information and it is impossible to draw on dark backgrounds.
Therefore we use the routine 'TEXTFORM' with its option XOR (form=3). By using XOR twice we get the original screeninformation again and the background stays unchanged.
The routine is:

63400 POLYMARK:
63402 ' ----> XPOS ; YPOS
63404 ' ----> MARKFORM ; MARKSIZE
63406 '
63408 poke contrl    , 18
63410 poke contrl + 2, 0
63412 poke contrl + 6, 1
63414 poke intin, markform
63416 vdisys
63418 poke contrl    , 19
63420 poke contrl + 2, 1
63422 poke contrl + 6, 0
63424 poke ptsin    , 0
63426 poke ptsin + 2, marksize
63428 vdisys
63430 '
63432 MARKSETTING:
63434 ' (----> XPOS ; YPOS )
63436 poke contrl    , 7
63438 poke contrl + 2, 1 : ' or more
63440 poke ptsin    , xpos + 1
63442 poke ptsin + 2, ypos + 38
63444 vdisys
63446 return
63448 '---------------------------------------------------

The routine 'TEXTFORM':

65130 TEXTFORM:
65132 ' -----> FORM ( 1 - 4)
65134 '
65138 poke contrl    ,32
65140 poke contrl + 2,0
65142 poke contrl + 6,1
65144 poke intin, form
65146 vdisys
65148 return

A test:

5   ' merge "POLYMARK.bas"
6   ' merge "TEXTFORM.bas"
9   '
10  fullw 2: clearw 2
20  color 1,1,1,1,1
30  form = 3: gosub TEXTFORM
40  pellipse 310, 200, 140, 80, 0, 3600
50  start:
60  xpos = 50: ypos = 160 : marksize = 50
70  for markform = 1 to 7
80  xpos = xpos + 60
90  gosub POLYMARK
100 next
110 gotoxy 15,11: print "ST NEWS IS THE BEST"
120 waiting = inp(2)
125 end
130 goto start

POLYLINE:

This routine is the same as the statement 'LINEF' in ST Basic, but much faster.
The syntax is:

     XCOORD ( 1,.....,N )      YCOORD ( 1,.....,N )      gosub POLYLINE 

The routine is:

64300 POLYLINE:
64301 ' -----> NUMBER ; XCOORD ; YCOORD
64302 poke contrl    , 6
64304 poke contrl + 6, 0
64306 poke contrl + 2, number
64308 for i = 0 to number
64310 poke ptsin + i * 4, xcoord(i) + 1
64312 poke ptsin + 2 + i * 4, ycoord(i) + 38
64314 next
64316 vdisys
64318 return
64320 '---------------------------------------------------
Try this and compare the speed:

5   ' merge "POLYLINE.bas"
9   '
10  dim xcoord(200), ycoord(200)
20  fullw 2: clearw 2
30  number = 80
40  for i = 0 to number
50  xcoord(i) = 10 + i * 600/number
60  ycoord(i) = 100 + rnd(1) * 200
70  next
80  gosub polyline
90  waiting = inp(2)
100 end

POLYGON:

With this routine we can draw and fill all imaginable figures. The routine works much faster then the 'LINEF' - and 'FILL'-statement.
The grid is defined through the 'COLOR'-statement.
The syntax is:

    XCOORD ( 1,.....,N )     YCOORD ( 1,.....,N )     gosub POLYGON 

The routine is:

64140 POLYGON:
64142 ' -----> ANGLES ; XCOORD ; YCOORD
64144 poke contrl    , 9
64146 poke contrl + 6, 0
64148 poke contrl + 2, angles
64150 for i = 1 to angles
64152 poke ptsin + (i - 1) * 4, xcoord(i) + 1
64154 poke ptsin + 2 + (i - 1) * 4, ycoord(i) + 38
64156 next
64158 vdisys
64160 return
64162 '---------------------------------------------------
Example:

5   ' merge "POLYGON.bas"
9   '
10  dim xcoord(20), ycoord(20)
20  color 1,1,1,7,2
30  fullw 2: clearw 2
40  angles = 6
50  for i = 1 to angles
60  read xcoord(i), ycoord(i)
70  next
80  gosub polygon
90  waiting = inp(2)
100 end
110 data  10,100,400, 40,250,200
120 data 380,290,150,230, 70,240

POLYGON2:

This routine is a special Polygon-routine for drawing symmetrical polygons with self-defined number of angles.
The syntax is:

    XPOS = ....   : YPOS = ....
    RADIUS = .... : ANGLES = ....
    gosub POLYGON2 

The 'COLOR'-statement defines the grid. The routine is:

64100 POLYGON2:
64102 ' -----> XPOS ; YPOS
64104 '        RADIUS ; ANGLES
64106 phi = 3.141593/angles/2
64108 STAR:
64110 ' -----> PHI
64112 poke contrl    , 9
64114 poke contrl + 6, 0
64116 poke contrl + 2, angles
64118 for angle = 0 to angles * 4 step 4
64120 poke ptsin+angle    ,  1+xpos+cos(phi*angle)*radius
64122 poke ptsin+(angle+2), 38+ypos+sin(phi*angle)*radius
64124 next
64126 vdisys
64128 return
64130 '--------------------------------------------------
Example:

5   ' merge "POLYGON2.bas"
9   '
10  fullw 2: clearw 2
20  color 1,1,1,7,2
30  xpos = -50 : ypos = 150
35  radius = 50
40  for angles = 3 to 7
50  xpos = xpos + 120
55  gosub polygon2
60  next
70  waiting = inp(2)
80  end

STARS:

Using the routine 'POLYGON2' and with  a little adjustment of the angle and like magic beautiful stars appear on the screen (something for Christmas ?)

5   ' merge "POLYGON2.bas"
9   '
10  fullw 2: clearw 2
20  color 1,1,1,8,2
30  ypos = 150 : radius = 50
40  angles = 7
50  xpos = 100 : phi = 3.1416/2/angles * 2   : gosub star
60  xpos = 200 : phi = 3.1416/2/angles * 3   : gosub star
70  xpos = 300 : phi = 3.1416/2/angles * 2.8 : gosub star
80  xpos = 400 : phi = 3.1416/2/angles * 1.7 : gosub star
90  xpos = 500 : phi = 3.1416/2/angles * 2.5 : gosub star
100 angles = 11: ypos = 250
110 xpos = 100 : phi = 3.1416/angles * 1.5   : gosub star
120 xpos = 200 : phi = 3.1416/angles * 2     : gosub star
130 xpos = 300 : phi = 3.1416/angles * 2.5   : gosub star
140 xpos = 400 : phi = 3.1416/angles * 1.9   : gosub star
150 xpos = 500 : phi = 3.1416/angles * 2.6   : gosub star
160 waiting = inp(2)
170 end

Please have a look at the directory of this ST NEWS disk; you'll find a program on it, written in ST Basic, which is called "GEMVDI_2.BAS". 
Preview from GEM-VDI CALLS PART III:
 - routines for colordefinition
 - using AES-routines:
    - Windowmanipulation
    - Using the full screen
    - Get it moving
    - Mouse-commands

THE ACC™ READER'S SERVICE by Cronos

In this article, you can read all you need to know with regard to our correspondence address, like sending in articles, subscribing, sending in remarks, etc.

Subscribing to ST NEWS

Since ST NEWS volume 1, issue 3, it is possible to subscribe to ST NEWS. That way, you'll be sure to receive ST NEWS within a week after its launch. All you have to do is send a single sided, formatted disk to us in an air bubble envelope, together with stamps so we can return it to you as well as a note on which you write down which issues you would like to receive. If you want to subscribe in 1987,  you must also add the volume number on that note. The envelope shouldn't be closed too tightly, since we will have to use that envelope for returning the disk.
If you write from outside Holland, please enclose sufficient International Reply Coupons instead of stamps!

Remarks, critics, comments, etc. to ST NEWS or our Synth Samples

We try to make our offerings as good as can be, and therefore we would very much like to hear from you what you think of either ST NEWS or our Synth Samples. If you think we do something wrong, please write to us what you think we do wrong and why you think we do it wrong. Nice comments and remarks (compliments?) would also be nice to receive. As we cannot afford to reply all the people who send in their views and comments, you'll have to enclose a stamp  (or, if you write from outside The Netherlands, an International Reply Coupon) so we can answer you if you want to.

Graphix and Musix for Synth Sample III

We are still working very hard to launch Synth Sample III before Christmas. We think we will eventually succeed to do that, but it can't be done without a little bit of help. Some enthusiastic people have already sent in some nice stuff, but we need more. especially on the field of graphics, we need some significant contributions. Here's a list of pictures we're looking for:

  *  Any Iron Maiden album/mini-album/maxi-single cover
  *  A picture of James Bond through the focus with blood dripping
  *  The Beverly Hills Cop sitting on the hood of his Mercedes
  *  Any action picture

We aren't looking for pictures of comic-book characters, or pictures that look like comic-book scenes. We aren't looking for 'ripped' pictures either. All pictures should be life-like.
Please don't forget to enclose stamps for the way back.
If you write from outside Holland, please enclose sufficient International Reply Coupons instead of stamps!

Sending in articles for use in ST NEWS

Since we are quite unable to write all the articles in each issue of ST NEWS all by ourselves, we call upon your help. If you think you have an interesting subject to write about, please write to us if we can use an article on that subject (mostly, we can). Quite a lot of people have sent in articles already: Math C., DSP, Manus, Mark van de B., to name just a few. We need articles about programming in machine language, Hints & Tips for software packages (either utilities or games), solutions to well-known adventures (The Pawn, Borrowed Time, Mindshadow, etc.), hardware reviews (and hints & tips on hardware as well) and all news you've read anywhere (to add to "Did you know that?...).
You should send in your articles using the standard starting-up layout of First Word Plus V1.16 (USA), with Word Processing mode turned on and Word Wrap. Don't use different character types too often, and use correct English. You should enter your disks on a single sided disk, and if your article is accompanied by a program or source listing, you should make clear in which language it was written (e.g. on which BASIC or on which Assembler, etc.). We cannot pay anything to our authors, because we don't have any income - except for the post costs, ST NEWS is supplied free of charge and belongs to the Public Domain (freeware).
If you write from outside Holland, please enclose sufficient International Reply Coupons instead of stamps!

Dealer enquiries

* Synth Samples
Since our Synth Samples tend to be nice to listen to and rather nice to look at as well, they might help selling ST computers at a computer shop. The Amazing Cracking Conspiracy™ has already supplied some computershops with adapted Synth Samples as well as adapted dia-shows, and we can do it for others as well! If you happen to be an employee of a computer shop, please contact us at our correspondence address and we'll see what we can do for you.
* Commercial Programs
If you are an author of software, and you think your program might need some extra attention (like a nice review, for example), we will be happy to review it in an upcoming issue of ST NEWS. Just send it to our correspondence address, together with enough stamps if you want us to return it to you. We will write a review about the program as soon as possible (and you needn't worry: we won't spread it!). If you want to receive a copy if the ST NEWS we reviewed your program in, please add an extra disk to we can put it on it.
If you write from outside Holland, please enclose sufficient International Reply Coupons instead of stamps!

* Public Domain programs
Ofcourse, we will also be happy to review new Public Domain programs. And if they turn out to be very good, we will spread them as well through our Public Domain service. The conditions are the same as with commercial software, with the only difference that we spread PD programs whereas we don't spread commercial software. Just send a disk to our correspondence address, together with enough stamps so we can return it to you if you want to. If you want to receive the issue of ST NEWS in which your program is reviewed, please add an extra disk. If your program happens to be written in GfA BASIC, we would very much like permission to publish it in ST NEWS as well (so people get the program together with ST NEWS). That way, we won't publish a review but a documented listing of the program.
If you write from outside Holland, please enclose sufficient International Reply Coupons instead of stamps!
We hope you'll have the faith in us to let us review your programs. If you do, we thank you in anticipation.

Public Domain service

As you might know, ST NEWS has become quite legal since issue 3. And since we think no legal magazine (whether it is on paper or on software) can do without a proper Public Domain service. And, as it is, our service is the cheapest PD service anywhere! All you have to do is send in a single sided, formatted disk to our address, together with enough stamps so we can return it to you, in an air-bubble envelope. Don't close it too tightly, since we use it to send the disk back as well! Please write down the program(s) you want on a note, which may be one (or several) of the following programs:

  *  DrieDim (kind of CAD program) V2.1
  *  Krabat Schach (a German chess program) V1.0a (monochrome)
  *  Tempelmann Monitor (a machine code monitor) V1.3 (monochrome)
  *  Synth Sample I (a monochrome music show)
  *  Synth Sample II (a color music-and graphics show)
  *  Randomize Picture Show I (a color graphics show)
  *  Synth Sample III (still to be finished, but it can be ordered
      already through us!) (color)
  *  F.A.S.T.E.R. Number 1 (a Canadian magazine on disk)
  *  F.A.S.T.E.R. Number 2 (a Canadian magazine on disk)
  *  F.A.S.T.E.R. Number 3 (a Canadian magazine on disk)
  *  Bouncing Ball Demo (color)
  *  Activision & Audio Light ST Graphics & Sound Demo (color)
  *  ST Grafics ("STAD" demo, monochrome)
  *  DLX Piano V1.0
  *  Gobang V3.1 (five on a row, monochrome)
  *  Bananas (Adults only! Monochrome)
  *  GfA Basic Run only Interpreter (for running GfA programs)
  *  512 Colors at once (made by Wilfred Kilwinger, color only)
  *  Hexa-colors (color)

We hope to have these programs in our Public Domain offerings soon:

  *  Oxygen (digitized Music demo, double sided disk & ST+)
  *  Foreign Affair (digitized Music demo, double sided disk & ST+)
  *  X-Tron demo (double sided disk, color & ST+ only)
  *  Glass boucing ball demo (double sided disk, color & ST+ only)
  *  A cruncher!

If you write from outside Holland, please enclose sufficient International Reply Coupons instead of stamps!
If you want a PD program to be spread that you wrote yourself, please contact us at our correspondence address for further information. We do not spread just any PD program: it has to be very good!  Read elsewhere (at the "Dealer Enquiries"-part of this article) how you can send in PD programs to review (or publish) them. If they are good enough, we will spread them automatically.

Questions & Answers

Elswhere in this issue of ST NEWS, you will find an article called "Questions & Answers". In this article, it is possible to ask questions that we will then answer ourselves or publish fully to have them answered by our readers if we cannot answer them. It is also possible to answer questions though this service, that were asked in an earlier issue of ST NEWS. Please specify the question(s) you're answering in that case. If you have a question that must be answered immediately (that is, within a week), please add a note of five guilders to cover possible phone costs if we have to contact someone who might know the answer if we don't know it ourselves.

Synth Sample II contest

You'll have to be quick to have your entry in before the first of December, the closing date of this contest, now! The winner will be announced in ST NEWS volume 2, Issue 1; he (or she) will receive the money won before Christmas. Remember the questions? They were:

     1          How many eyes can you see in one complete round of
                Synth Sample II?
     2          Which make is the cassette in the cassette deck
                from?
     3          Finish this slogan: "I always enjoy listening to
                ACC's Synth Samples, because........"

Ofcourse, we will publish a contest around Synth Sample III as well, once it is launched. We are planning to do this with every launch of any Synth Sample.

User groups

We will be happy to publish all dates and addresses of all computer user groups that support the ST system all over the world. So if you think your club isn't visited enough, please let us change that! Just send in the club address, the meetings address, the meeting dates and times and the other computers your club supports, and send it to: ST NEWS, Fuutstraat 2, 5702 LN, Helmond, The Netherlands.

What you must not do

The Amazing Cracking Conspiracy™ reader's service is set up for all of our readers to use. Please don't spoil it by sending illegal programs to it, or by sending letters to it in which you use terms like 'cracking', 'copying', etc. (if you know what we mean).
We want to keep the people that live at our correspondence address out of any trouble - that's why we decided to do legal things only from now on. These people are an older, retired couple who enjoy their pension and we don't want to mess around with the SBS or the coppers.

Our correspondence address is located on:

                ST NEWS
                Fuutstraat 2
                5702 LN Helmond
                The Netherlands

We hope you'll enjoy our services....

(P)REVIEW: SOME ASTROLOGY PROGRAMS by Rufus C. Camphausen

This first installment of 'The Esoteric STComputer' will be welcomed by all those who are waiting for a program to do their astrological computations and to draw (print out) charts, leaving the astrologer with 'only' the task of interpretation, something still better left to the Human Biocomputer (Brain/Mind) than to an IBM or even an ST...
Though none of the programs announced here have been tested by myself I felt that everyone interested (and I've heard the question several times that Saturday in Utrecht) should know, can then decide whether to wait or to order/buy.
First thing I heard was that HCC started a special user-group for astrology in June '86. The astrological magazine SPICA announced (Vol 10, Nr.2) that 'someone' is working on a re-write of Commodo-re software.
That didn't make me feel very enthusiastic, and I wrote to (in-)famous CompAstrologer A.T. Mann (a friend in U.K.), and asked "What's up?" and a few days later the BIG SURPRISE was in my mailbox:  Coming from MATRIX SOFTWARE is a BLUE STAR,  a topper in astrological programming with very advanced features. Its earlier version (IBM PC) proudly featured the following:
- 3000 year Ephemeris (BC 600 - 2400 AD)
- accuracy of 1 second of arc (all 3000 years)
- on-screen ASTRO-CLOCK (a mini-chart of the current HERE & NOW)
- Notebook.ACC
- 20st century quick-scan for high-speed transit-searches
- 20st century data on TIME-CHANGES, LONGITUDES & LATITUDES for   over 1200 cities (US and WORLD)
- choice of screen-messages (English, French, German, DUTCH(!))
- different pattern of chart (for printout)
- and of course all the normal things you'd expect such as several   house-systems, progressions, etc., etc.
- you can also build up your library of charts on disk and let the   machine search and compare, select and show ...
- the proud program has - of course - a proud price as well, but   to my mind the goods offered are very  special. I'm not sure   whether the  price is £(GB) 210 or $(US) 300: find out for   yourself by writing to: Matrix software 
                          315 Marion Avenue
                          Big Rapids
                          MI 49307      USA
                          Telephone     09-1-800-6224070

Well, so far the VERY good news. But there's more. I've received a friendly letter from B.R.(of Stichting ST) and he informed me on TWO other astro-programs. Though there is no data on either their capabilities,nor their price, you can find out for yourself by writing to the following two adresses. Since there was a sample printout, the programs must be ready and available right now.

   1)             "STAR TRUCK - THE ASTROLOGER"          from     Electric Software Ltd.
                  Unit 8, Cromwell Business Centre
                  New Road, St. Ives
                  CAMBS PE17 4BG, England

   2)             "PROGRAMM DES LEBENS"   (version 5.0)
         from     Biosystems H. Beck
                  Scherbaumstr. 33
                  D-8000 München 83                     West Germany

So far this time's Esoteric STComputer, the whirring new column of ST NEWS. In other issues we may discuss programs, hints, ideas and
problems concerning NUMEROLOGY, QABBALAH, the I CHING etc. as well as ESOTERIC NETWORKING, whatever that may be. Communications (disks +/or letters) to Rufus Camphausen, Kramatweg 15, 1095 JP, Amsterdam, The Netherlands.                 

SUPER HUEY REVIEW by Antiware and Cronos

Do you want to have a good cry behind your computer? Do you want to get headaches because of the loathsome music? Do you want to sell your ST to buy a 64 instead? Buy this new release of a year-old original version and you'll be sure of it. In one word: Awful! That's all there is to say about this game by Cosmi.

Super Huey used to cause regular amazement back on the 64, for stunning music and nice graphics. We still remember those good old times. When we had a look at the ST conversion, our first reaction was to push the little button on the back of the ST, but we managed to survive the awful 'soundtrack' and had a look at the actual game. Cosmi certainly launched one of the worst games uptil now on the ST, only being beaten by Rock Hard Soft's "Pool", "Pac Man" and "Invaders".
We can imagine an ex-64 addict buying a color monitor so he can play the game he used to love back on his old machine. Well, if you're one of these: Don't! Please don't!
The conversion is really bad; the only thing that is worth having a look at is the intro. And you'd better hit a key immediately so you don't have to listen to the awful, awful 'music' (really, 'music' isn't the right word for it).
Apart from the fact that the setup itself, which isn't all that super, is rather boring, the sound FX are even worse! And when you fly a bit through the sky, the ground 'bumps' by. The fact that the whole game is directed by using the mouse (it's about time that they realize that not all games are fun playing with that little rodent! I needn't remember you of "Major Motion", I hope...) is also something that decrements the game's value (I suppose that will be a negative figure...). When you fly to the left or the right, the horizon is tilted very clumsily (I suppose the programmers used 160*100 resolution).

Let us warn you: Never buy this game! You'd regret it for the rest of your life!
But the game has one big advantage: It's so bad, that software pirates will not bother to crack/spread it!

Game Rating:

Name:                          Super Huey
Publisher:                     Cosmi
Original concept:              Chris Norman
Graphics:                      4
Sound:                        -1
Setup:                         6
During attractiveness:         3.5
Overall rating:                4
Remarks:                       Very poor! They could have done
                               better....

NEXT TIME IN ST NEWS....

ST Software News

Software reviews: ST Karate (!?)
                  Michtron Software (old, but good!)
                  Flightsimulator II (?)
                  Midiplay
                  XChess (3D chess program)
                  Animate!
                  ST Art

All about the New Mac Cartridge

GfA Tips & Tricks: SETTIME, SPRITE, GET/PUT, and more

More about RTOS

Another Esoteric ST column about Astrology

More about machine language

Listings: Scroll Message Editor
          Simple Draw (a monochrome drawing program) - but this is
            not sure, yet: we're still negotiating....
          Hiscore Terminal ST

The Music Corner

Final Hints & Tips to "The Pawn" Part II

All about ST Basic Disk I/O

Part I of an MC 68000 machine language course

An article about video digitizers (or rather, Henksoft's digi- tizer; we're not sure about his, yet, because he still has to
 buy it!)

The Brain under the ST-keyboard

Did you know that....

Hints & Tips for playing Brataccas

Starfiend, a novelette by L.S. Murray

Gem VDI calls part III

ST NEWS Volume 1 Issue 6 will probably be launched somewhere around the first two weeks of November. Read how you can get it in the article about our Reader's Service, elsewhere in this issue.

BACK ISSUES OF "ST NEWS" BY THE ACC™

If you are thinking about ordering back-issues of ST NEWS, we hereby supply you with a list of contents of the issues that can still be obtained through our reader's service.

ST NEWS volume 1 issue 1

Published on Saturday, July 26th, 1986
Size: 34896 bytes on 16 pages

 The Amazing Cracking Conspiracy™
 New software on the Atari ST
 The Amazing Cracking Conspiracy™ spreading service
 ST Tips & Tricks
 Little Computer People (House-on-a-Disk)
 New Amazing Cracking Conspiracy™ products
 Some Hints & Tips for "The Pawn"
 Stop Press - did you know that....

ST NEWS volume 1 issue 2

Published on Saturday, August 9th, 1986
Size: 39817 bytes on 21 pages

 More news about the  Amazing Cracking Conspiracy™ spreading    service
 Synth Sample II
 All about System variables
 Did you know that....
 Illegal software - what is allowed and what isn't?
 Diskmanipulation on the Atari SF Disk Drives
 GfA Basic
 Winter Games
 Hackers'n'Crackers on the Atari ST

ST NEWS volume 1 issue 3

Published on Saturday, July 16th, 1986
Size: 56638 bytes on 26 pages

 Sound and Music programming on the ST
 Synth Sample II contest
 All about the BIOS
 Questions & Answers
 The solution to "Zork I" from Infocom
 Did you know that....
 News about the Amazing Cracking Conspiracy™
 Hints & Tips for (GfA) Basic
 More about Diskmanipulation on the Atari SF Floppy Disks
 Subscribe to ST NEWS!
 Our new Correspondence Address

ST NEWS volume 1 issue 4

Published on Sunday, September 7th, 1986
Size: 152458 bytes on 88 pages
Additions: Two listings on disk: CONVERT .BAS  2868 bytes
                                 VDI_CALL.BAS  3769 bytes

 ST Software news
 ICG's Randomize Picture Show I
 GfA Tips & Tricks
 Hi to....
 Low to High Converter
 The Amazing Cracking Conspiracy™ Reader's Service
 Gemdos functions
 Useful Addresses
 The Tempelmann Monitor
 A Computer Story
 Questions & Answers
 Did you know that....
 Future Releases of the Amazing Cracking Conspiracy™
 The Amazing Cracking Conspiracy's built-in ST Chart Booklet
 All about the ST's MIDI Interface
 Hints & Tips for playing Sundog
 Software Mega Review - Floyd
 Gem VDI calls Part I
 The Solution to Zork II

ST NEWS COLOFON

ST NEWS is an independent bulletin written by and written for users of Atari ST computers.

Published by/Editorial address:
ST NEWS
Fuutstraat 2
5702 LN Helmond
The Netherlands

Subscribing:
ST NEWS is published at irregular intervals. Read how you can subscribe to ST NEWS in the article about our reader's service.

Editorial:
Cronos (Editor & Correspondent)
   Regular columns: Did you know that...
                    ST Software news
Antiware (Correspondent)
   Regular columns: Music Corner

Design, layout and corrections:
Cronos

The following people helped with this issue of ST NEWS:
Bitbuster
DSP
Math
Manus
A3 (Henksoft)
Antiware
Cronos
Mark van de B.
Léon
ST Club Eindhoven (SAG)
Data Becker
Atari Benelux B.V.
Rastermouse
Xfun
Commedia
Rufus Camphausen
Rob de Swaan
and others...

Distribution & Production:
The ACC™

All texts contained in this issue of ST NEWS are free of copyright unless stated otherwise, but it's not allowed to publish them in any other magazine in any form without prior written permission of The Amazing Cracking Conspiracy™. Requests concerning duplication of articles may be send to ST NEWS, Fuutstraat 2, 5702 LN, Helmond, The Netherlands.
People who send in articles for use in ST NEWS will still be responsible for them once they're published. It is not the responsibility of The Amazing Cracking Conspiracy™ to check if the articles are copyrighted or not before they are published, so it is possible that duplications from articles in other magazines are included here. The writers will stay responsible for that, as well as irregularities or faulty facts in their articles.
The views expressed in any articles are not necessarily the views of the publisher.

This bulletin belongs to the Public Domain (freeware) and may hence be copied freely for non-commercial purposes*. We would even like you to spread this bulletin with some effort, so ST NEWS will be read by a vast quantity of ST users. That way, we hope to remain on a qualitively good level; we might even be able to improve the whole idea of ST NEWS.

* Exceptions to this rule are made for Bulletin Boards who ask    payment just so people can use it, or Public Domain libraries    anywhere that ask payment  for the copying and the disk (like    "ST" does).
   We would very  much like to hear from you if you have bought    this bulletin anywhere through someone else. We can then have a
   chat with that person!

Very many special thanks to all the people who wanted to copy ST NEWS either in Eindhoven (on September 13th) or in Utrecht (on September 20th), as well as all the people who will have the faith in us to let us review their new software packages. Also many thanks to the people living at our correspondence address and all the people who have already written!