ST NEWS

Volume One, Issue Three, Published on Saturday, August 16th, 1986

ST NEWS is an independent publication of the Public Relations service of The Amazing Cracking Conspiracy™ , a section of the one and only Desaster Area. The information contained in this bulletin is believed to be free of inaccuracies; the views printed are not nessecarily the views of the authors. ST NEWS is published at irregular intervals and distributed by the Amazing Cracking Conspiracy's public relations division™.

Editorial:

 Chief Editor   :  Cronos
 Correspondents :  Antiware and Cronos
 Layout         :  Cronos
 Production     :  The Amazing Cracking Conspiracy™
 Distribution   :  The Amazing Cracking Conspiracy™

SOUND AND MUSIC PROGRAMMING ON THE ST by Cronos

Most people think that the ST's sound chip isn't really much, but it's not that bad at all; you'd better listen to the music in Epyx' "Winter Games" and you'll know that a lot more can be done with the ST's YM 2149 sound chip. All right, it's not as good as the Amiga soundchip, but that one works through a complete different principle; it "knows" a lot of sounds, which are kind of "digitized" inside its memory. When the programmer asks for it, it just spits it out with variable pitch, tone height, etc. People should also know that many Yamaha keyboards actually use the YM 2149 soundchip, like ICG's Yamaha PSR 40. The sound coming from that keyboard isn't bad at all!
Some of us might remember the intro from Psygnosis' "Brataccas"; it uses nice sound effects, as well as something that might be described as "ring-modulation". It just shows that more can be done than most people think on the field of music.
Back on the Commodore 64, some professional musicians started programming music on it, like Rob Hubbard. They knew how to make good music and they also knew the principles of programming the built-in SID soundchip. Other music programmers, like Martin Galway and Ben Dalglish, also knew what they had to do to make good music and sound effects on it. I am sure that good programmers might get almost as much out of the ST's sound chip as that they did on the SID. The Atari 800 XL is also said to have used the YM 2149 and I have heard of quite stunning music on those machines!
Some of us already know that the ST system was originally designed around another sound chip, the "AMY". Instead of the AMY, Atari decided to build in the YM 2149 and the MIDI interface. Antiware's digital preprogrammed synthesizer sounds really great when using MIDI! But more about the AMY; here you will read a part of an interview with Atari's vice president of research and development, Shiraz Shivji. It is taken from a brochure of "Personal Computer World". When you want to get it, together with a software list of ST programs and lots more, please write to: SILICA Shop Ltd., 1-4 The Mews, Hatherley Road, Sidcup, Kent DA14 4DX, England. This part of the interview was made by BYTE's Phil Robinson, in December of last year....

BYTE: What about the sound capabilities?
Shivji: We had a project here started during Alan Kay's tenure - a chip called AMY. And the ST was designed to have the AMY. But the AMY did not happen. We  had silicon, the first pass, in October or November, and we had severe problems with it. It was kind of an orphan project. There were a lot of people that had worked on it. And if you have a chip that takes six or eight people who have worked on it at different times,  the chances of the chip working are slim. But it's a good design.
BYTE: What does it do? What's so special about it?
Shivji: The approach of others is that during horizontal refresh you go out to some place and put some memory out automatically, and that goes through a DAC (digital to analog converter, RED)and you have sound. Essentially, you're sampling at 15.75 kHz, which is the typical frequency. So it's like a digital tape recorder. You have a digitized sound and you're just putting it out. And it needs enormous amounts of memory. The key is: how do you encode sound? Form an information-theoretic point of view,  there are two problems with this approach. One is it's an enormous waste of memory. Because you could encode whatever sound you're going to play, as far as data is concerned in a sound piece, the data rate is extremely low. And doing it in the digital tape recorder way, you're wasting an awful lot of bandwidth and a lot of memory. The second problem with other implementations is that you have only 8 bits and it's not really that good. Especially with CD's coming out.
Amy was a chip that had 16 bits of information coming out. So you could have 96 decibels of range. What you could hear!  Amy was a complete digital sound chip. It's called an additive-digital synthesizer. It had an adder and 64 independent oscillators. It has a model for sound and you feed it the parameters. But if you do that you have to do an awful lot of preprocessing. We had hired a lot of people. We had a VAX 780 devoted to it. We had equipment, fast floating point array processors, and so on, to analyze notes. We would get a tape of piano playing and then the VAX would analyze it and would take the Amy model and give the parameters. To play anything you needed to have parameters tables and feed it to the chip.
BYTE: Is it still a possibility, then?
Shivji: It is still a possibility. We were going to have the Amy, and then it didn't happen. Then we said, look, we have a base machine that's a good machine. Every really doesn't care about great sound, right? (The ACC thinks Mr. Shivji went terribly wrong here! RED) So let's not penalize people that don't really care. Let's put something that will allow people who really care about sound to be able to play things . That's how the MIDI came in. And so if you get Amy, we would even have it out as a MIDI-chip. It's a great chip. Essentially all you do is load it up. Off line you're doing an analysis of all the different things, and then you have it in table form. And you can play it any time you want. And you're not using up the bus that much.
BYTE: If it has that kind of processing capability, it probably could build models for voice, too.
Shivji: Exactly. We actually could reproduce opera sound. As a matter of fact, we had a sound lab. The type of sound that you could hear from that chip was just incredible. Again, 16 bit. Actually, the chip could even give you 17 bits if you wanted it to. The problems are it uses too much memory and it hogs the bandwidth. The bandwidth you could probably get around. However, that's not the whole thing. You still have to move all that data around. Of course you don't get the right data at the right place for free. For example, you have to move it somehow from a disk drive.
BYTE: So the Yamaha chip is there just to give it the basic sound?
Shivji: Yes. Just the basic sounds you need. Though, of course, the ports are very usefull (the YM 2149 in the ST has two 8 bit wide data ports, RED).

Mr. Shivji didn't give all the reasons for not using the Amy in the ST; another reason was the manufacturer of the chip; he simply couldn't produce it in large enough volume.

According to Data Becker's "ST Intern" (ISBN 3-89011-119-X; Data Becker GmbH, Merowingerstraße 30, 4000 Düsseldorf, West Germany), the YM 2149 sound chip is a "soundchip der spitzenklasse", so a very good soundchip. It is compatible with General Instruments' IC AY-3-8910, and it's called a PSG, which stands for Programmable Sound Generator. It has 40 pins. The qualifications of the YM 2149 are (in short):

 -  Three independent programmable tone-oscillators
 -  A programmable noise-genarator
 -  Complete software-controlled Analog output ports
 -  Programmable mixer for tones and noises
 -  Programmable waveforms
 -  two bi-directional 8 bit dataports
 -  TTL-Compatible
 -  Simple 5 volts operating conditions

The YM 2149 has 16 registers, whose functions are explained here:

Registers 0 and 1:
 These registers determine the frequency of the tone signals   coming from ANALOG A. Not all 16 bits are used; only all 8 bits   of register  0 and the low 4 bits of register 1 are used. With   the bits of register 1 one can determine the note roughly, while
  register 0 enables fine tuning. The total 12-bit value of these   registers  determines the height of the tone; the lower the   value, the higher the tone.
Registers 2 and 3:
  The  functions of these registers are the same as those of   registers 0 and 1, but now for channel B.
Registers 3 and 4:
  The   functions  of these registers are the  same  as  those  of
  registers 0 and 1, but now for channel C.
Register 6:
  This registers manipulates the noise generator with its lower 5   bits. Also here: the lower the value,  the higher the noise fre-  quency.
Register 7:
  In this multi-function register, the individual bits determine   different functions:

      Bit 0:  Tone from channel A on (0) or off (1)
      Bit 1:  Tone from channel B on (0) or off (1)
      Bit 2:  Tone from channel C on (0) or off (1)
      Bit 3:  Noise for channel A on (0) or off (1)
      Bit 4:  Noise for channel B on (0) or off (1)
      Bit 5:  Noise for channel C on (0) or off (1)
      Bit 6:  Port A is an output (1) or input (0) port
      Bit 7:  Port B is an output (1) or input (0) port

Register 8:
  The lower 4 bits determine the volume of the signal coming from   channel A. Bit 4 has a special meaning. When it set (also, when   it is 1),  the volume is determined by the waveform register.   Bits 0 to 3 (also the lower 4 bits) are then ignored.
Register 9:
  Just like Register 8, but now for channel B
Register 10:
  Just like Register 8, but now for channel C
Registers 11 and 12:
  All 16 bits of these registers determine the length of the    waveform.  The contents of register 11 are treated as a low    byte, that of register 12 as the high byte.
Register 13:
   Bits 0 to 3 (agains the lower 4 bits) of this register are used    to determine the waveform of the waveform-generator as follows:

   B3 B2 B1 B0            Waveform:

   0  0  -  -             \__________________
   0  1  -  -             /__________________
   1  0  0  0             \\\\\\\\\\\\\\\\\\\
   1  0  0  1             \__________________
   1  0  1  0             \/\/\/\/\/\/\/\/\/\
   1  0  1  1             \------------------     1  1  0  0             ///////////////////
   1  1  0  1             /------------------   1  1  1  0             /\/\/\/\/\/\/\/\/\/
   1  1  1  1             /__________________

Registers 14 and 15:
   These registers belong to the two 8-bit ports. Port A has     register  14, whereas port B has register 15. Is a port     programmed for output (see bits 6 and 7 of register 7), then     the value to be put out can be determined by these registers.     This is the same as they are programmed for input.

So....now we know everything there is to know about the YM 2149 sound chip in the ST systems. But how can the soundchip be controlled from BASIC (the language most people regularly use)? To achieve sound in BASIC, it has two commands: SOUND and WAVE. SOUND isn't really difficult to understand: it needs five parameters to go with it, seperated by a comma:

        SOUND register, volume, note, octave, length

The register can be 1,2 of 3, for channel A,B and C respectively. The volume is determined by 4 bits, so this value can be between 0 and 15 (15 is the maximal volume). The value for the note can be between 1 and 12 (I suppose there are 12 notes in each octave), whereas the value for the octave can be between 1 and 8 (because the YM 2149 has 8 octaves). The length of the note can be between 0 and 255. "1" stands for 1/50 of a second.
Now the WAVE command....that's more difficult, but not too difficult if you've read the register-part of this article.
The WAVE command also needs five parameters, seperated by a comma:

        WAVE channel, determine, waveform, period length, length

Through the "channel" parameter you can determine which channels should be on, and to which channels noise should be added. You must look at this parameter binary; it sets or clears bits 0-5 in register 7. An example: value 37 (that is binary %100101) does the following: you have to know that when a bit is cleared in register 7, the actual channel is activated. In the WAVE command, you have to set the bits to set the channels (and to clear register 7). You see that bits 0,2 and 5 are set with the value 37. This means that channels A and C are activated, while noise is added as well to the latter channel (channel C). Get it? Now, let's go on with the second parameter. That determines whether the volume is set by the volume parameter in the SOUND command, or by the waveform in the WAVE command (that way, the volume differs during the whole note). So it sets or clears bits 4 of registers 8 to 10. This parameter also has to be treated as a binary value of three bits - so the range would be between 0 and 5. Bit 0 of this value is for channel A, bit 1 for channel B and - of course - bit 2 is for channel C. If a bit is cleared, the volume of the corresponding channel is determined by the SOUND command for that channel. When a bit is set, however, the waveform determines the volume. So a value of 0 lets all volumes be determined by the SOUND commands.
The third parameter affects register 15 (see the above), to enable the programmer the choose from 16 waveforms (so the value of this parameter will be between 0 and 15). Look at these waveforms above and you will have to experiment a little, too. The fourth parameter determines the length of a period (vibration) of a musical note. It can be between 0 and 65535, where you might get additional frequencies of the value choosen turns out to be smaller than about 1000. Remember: the shorter the period, the higher the frequency! The fifth parameter, to  close this part of this article, determines - like the SOUND command - the total length of the note. I suppose this value can also be between 0 and 255.

We hope to have told you all you need to know for programming sound on the Atari ST's sound chip. If you think you have made a terrific piece of music (better than "Temple Trilogy", "Brataccas", etc.), please let us know. If it's not too big, we might even publish the source code (or BASIC listing) in a future issue of ST NEWS....

SYNTH SAMPLE II CONTEST by the Amazing Cracking Conspiracy™

We now have this great idea....we organize a contest around Synth Sample II! All you have to do is answer two questions and finish the slogan we already gave the first half of. We will give one price away, but it depends on how many people enter this contest whether the price will be large or small. We thought the following: anyone who wants to join in, should send five guilders to the correspondence address (which you will find somewhere else in this bulletin), together with the answers to our questions and the finished slogan. Amongst the good solutions we will look for a nice slogan and the best one will win all the money that's sent in. It might be his own five guilders, but it might be more as well.

These are the questions you must answer:

1   How many eyes can you see in one complete round of Synth      Sample II?
2    What make is the cassette in the cassette deck from?

And you'll have to finish this slogan:

I always enjoy ACC's Synth Samples, because.......................

Now you'll have to send your answers and the finished slogan, together with your name and address to our correspondence address, which you will find elsewhere in this bulletin.

We wish you lots of fun thinking about a nice slogan  and looking at Synth Sample II............

ALL ABOUT THE BIOS by Cronos

As most of you will know, the word BIOS is short for Basic Input/Output System. One could call it the interface between GEMDOS and the hardware. Before I start talking about all the BIOS functions, you should know a few things:

 Data should be given to the stack before you call a BIOS function

 Sometimes, return values are put into D0

 Except for registers  D0-D2 and A0-A2 will all register stay  intact

 For the BIOS functions, TRAP number 13 was reserved

Most information used in this article is used from "The Hitchhiker's Guide to the BIOS", ©1985 by Atari, Inc.

You can now read a systematic list of BIOS calls: their numbers, names and functions.....

(0) getmpb
 VOID getmpb(p_mpb)
 LONG p_mpb;
Upon entry, 'p_mpb' points to a 'sizeof(MPB)' block to be filled in with the system initial Memory Parameter Block. Upon return, the MPB is filled in.

(1) bconstat
 WORD bconstat(dev)
 WORD dev;
Returns character-device input status, D0.L will be $0000 if no characters are available, or $FFFF if (at least one) character is available. 'dev' can be one of these:

       0   PRT:    printer, the parallel port
       1   AUX:    aux device, the RS232 port
       2   CON:    console, the screen
       3   MIDI:   the midi interface
       4   KBD:    keyboard

Legal operations on character devices are:

                      (0)    (1)    (2)    (3)    (4)
  Operation           PRT    AUX    CON    MIDI   KBD
  ----------------------------------------------------------------  bconstat()          no     yes    yes    yes    no
  bconin()            yes    yes    yes    yes    no
  bconout()           yes    yes    yes    yes    yes
  bcostat()           yes    yes    yes    yes    yes

(2)bconin
 WORD bconin(dev)
 WORD dev;
'dev' is the character device number described in function 1. This does not return until a character has been input (busy-wait). It returns the character value in D0.L, with the high word zero (in case you don't know what a word is: it's 2 bytes = 16 bits, RED).
For the console (CON: device 2) it returns the IBM-PC compatible scancode in the low byte of the upper word, and the Ascii character in the low byte of the low word.
If bit 3 in the system variable 'conterm' is set, then the high byte of the upper word will contain the value of the system variable 'kbdshift' for that keystroke. Normally, bit 3 of 'conterm' is not set (0). If you want to know more about system variables, please read the article about system variables in ST NEWS Volume 1 Issue 2.

(3) bconout
 VOID bconout (dev,c)
 WORD dev, c;
'dev' is the character device number described in function 1.
Output character 'c' to the device. Does not return untill the character has been written.

(4) rwabs
 LONG rwabs(rwflag,buf,count,recno,dev)
 WORD rwflag;
 LONG buf;
 WORD count, recno, dev;
Read or write logical sectors on a device. 'rwflag' is one of:

      0     read
      1     write
      2     read, do not affect media change
      3     write, do not affect media change

'buf' points to a buffer to read or write to (unaligned transfers - on odd boundaries - are permitted, but they are slow). 'count' is the number of sectors to transfer. 'recno' is the logical sector number to start the transfer at. 'dev' is the device number, which can be one of:

      0     floppy drive A
      1     floppy drive B (or 'logical' drive A on single-drive
               systems)
      2+    hard disks, networks, etc.

On return, OL indicates a succesful operation. Any negative number indicates an error condition. (It is the responsibility of the BIOS to detect media changes, and return the appropriate error code)
Modes 2 and 3 force a physical disk operation that will NOT affect the media change, nor result in one (this allows the GEMDOS disk formatter, for instance, to read and write logical sectors after formatting a disk, and still allow the BIOS to recognize a media change on the volume just formatted).

(5) setexc
 LONG setexc(vecnum,vec)
 WORD vecnum
 LONG vec;
'vecnum' is the number of the vector to get or set. 'vec' is the address to setup in the vector slot; no set is done if 'vec' is -1L. The vector's previous value is returned.
Vectors $00 through $FF are reserved for the 68000.
Logical vectors $100 through $1FF are reserved for GEMDOS. Vectors currently implemented are:

       $100            System Timer Interrupt
       $101            Critical Error Handler
       $102            Process terminate hook
     $103-$107         Currently unused, reserved

Logical vectors $200 through $FFFF are reserved for OEM use. The ST BIOS makes no provision for these.

(6) tickcal
 LONG tickcal()
Returns a system-timer calibration value, to the nearest millisecond.
This is a silly function, since the number of elapsed milliseconds is passed on the stack duyring a system-timer trap.

(7) *getbpb
 BPB *getbpb(dev)
 WORD dev;
'dev' is a device number (0 for drive A, etc.). Returns a pointer to the BIOS Parameter Block for the specified drive, or 0L if (for some reason) the BPB cannot be determined.

(8) bcostat
 LONG bcostat(dev)
'dev' is a character device number, as in function 1. Returns the character output status:

           -1       Device is ready to send (no waiting on next
                       device output call)
            0       Device is not ready to send

(9) mediach
 LONG mediach(dev)
 WORD dev
'dev' is a drive number. Returns are on of these:

            0       Media definately has not changed
            1       Media might have changed
            2       Media definately has changed

GEMDOS will respond with a return value of "1" with a read operation. If the BIOS detects an absolute media change, it will return a "media change error" at that time.

(10) drvmap
 LONG drvmap()
Returns a bit-vector that contains a "1" in a bit position (0...31) when a drive is available for that bit, or a 0 if there is no drive available for that bit.
Installable disk drivers must correctly maintain the longword '_drvbits' (see the chapter about system variables in ST NEWS volume 1 issue 2).

(11) kbshift
 LONG kbshift(mode)
 WORD mode
If 'mode' is non-negative, sets the keyboard shift bits accordingly and returns the old shift bits. If 'mode' is less than zero, returns the IBM-PC compatible state of the shift keys on the keyboard, as a bit-vector in the low byte of d0.

  Bit assignments are:

        0        Right shift key
        1        Left shift key
        2        Control key
        3        ALT key
        4        Caps-lock
        5        Right mouse button (CLR/HOME)
        6        Left mouse button (INSERT)
        7        (reserved, currently zero)

That's all for this time; next time more about GEMDOS...

QUESTIONS AND ANSWERS by The Amazing Cracking Conspiracy™

Since this bulletin is written by the Amazing Cracking Conspiracy's Public Relations Division™, we feel we have to relate a bit more to our readers. Therefore, we hereby start a unique service: you can send in your questions to us, and we will answer them in an upcoming issue of ST NEWS. If we cannot answer your question, we will publish it in ST NEWS, together with your name and address, so someone else might be able to answer the question for you. Up to a certain limit, this service may also be used as a kind of advertisement board, but all advertisements have to be strictly legal - if you offer software, you must be the rightful owner of it, etc. We decided for this legal setup, because our correspondence address isn't our own address; it's the address of a good acquintance of ours, who has nothing to do with the Amazing Cracking Conspiracy™, and who has no knowledge about computers whatsoever. We don't want innocent people (like our acqaintance) to be legally procecuted, and therefore all things he takes care of must be strictly legal. It's no use to visit him, etc.; we just get our post through him and that's it.
If you have a question that must be answered immediately (so not in the next issue of ST NEWS), please add a stamp so we can mail the answer to you. If you don't do that, or if the stamp is not of enough value, you will have to wait for the next ST NEWS after all. You can, from now on, also send articles for use in ST NEWS to us. They have to be supplied on disk (3,5") in First Word format. The page layout should be as follows: Page length 66, TOF margin 1, head margin 3, foot margin 3, BOF margin 5, and lines per page should be 54.  The articles must be written in correct English, and you must not forget to supply your name and address for sending back the stuff. Disks will be send back only if you have put the same value of stamps in the envelope as that is supposed to be on the envelope itself when mailing it to us. Try to write to us first, before you enter an article - there might be no need for a certain article at the moment you want to write it, and that might save some post costs. We are especially looking for people who have knowledge about machine language (no C, Modula 2, etc., because you can read more than enough about that in other - regular - magazines) and who would like to write an article about that. Since this bulletin is spread at no cost, we have no income, and we cannot pay people who send in articles (and we aren't looking for a sponsor either, because we want this bulletin to be without f.cking advertisements!). For that same reason, we cannot afford to pay for returning disks with articles either. If you send anything to us, please write clearly on the envelope "Q&A", since our acqaintance tends to have post for himself, too.

But let's start with the questions and answers for this issue....

WANTED:

The Amazing Cracking Conspiracy™ is looking for Music Studio songs to use in a future Synth Sample of ours, as well as nice color pictures. If you think you have any of these things that we could use, please send them on a disk (or several disks) to us, together with enough stamps so we can return them to you. If you have a cracker's name, please write that on a paper and mail it up as well - this to ensure that you get proper greetings and/or credits in a next Synth Sample. Principally, you will have your disks back within half a month. We cannot ensure you that we will actually use your products, because it might lack quality or originality. Please, don't send ripped pictures to us, but original material!
We hope to make our Synth Samples III, IV, etc. better than Synth Sample II, so you get the picture with what we mean with quality, we hope. Send the disks to our correspondence address.

Cronos is looking for a second-hand Commodore 64 (straight) with a datasette recorder. Top bid: 250 guilders. Send your offers to our correspondence address. We cannot ensure answer to every entry, but entries from within not too large a distance from our residence will have a big chance of being contacted.

QUESTIONS:

How do I exactly assemble a machine code source file in AS68 to a .PRG file? When must I use a linker, etc.?
                       Cronos from the ACC
Please send your answers to our correspondence address.

Who has the solution to "The Pawn"? We are quite desperate!
                       The ACC
                       Math C.
                       The ICG
Please send your answers to our correspondence address.

Who has experience with horizontal smooth scrolling in (GFA) Basic? We would like to hear from you, or receive a sample program..
                       The ACC
                       Delta Software Productions
Please send your answers to our correspondence address; if you add a sample program on disk, please add stamps so we can send it back to you. Such a sample might be published in ST NEWS.

There are no more questions this month.......

THE SOLUTION TO "ZORK I" FROM INFOCOM by SHN and Cronos

In our series of adventure solutions (we hope there will be more to come! If you have any, please send them on disk file to our correspondence address; read "Questions and Answers" to know the correct format to send it in to) we hereby present to you the solution of the text adventure "Zork" from the American software house Infocom......

N/N/U/GET EGG/D/S/E/OPEN WINDOW/W/OPEN SACK/GET GARLIC/W/GET LAMP/
E/U/LIGHT LAMP/GET ROPE/GET KNIFE/D/DOUSE LAMP/W/GET SWORD/MOVE RUG/OPEN TRAPDOOR/D/LIGHT LAMP/N/KILL TROLL WITH SWORD/E/E/SE/E/TIE ROPE TO RAILING/D/DOUSE LAMP/GET TORCH/D/S/DROP SWORD/GET CANDELS/DOUSE CANDELS/GIVE EGG TO THIEF/GET BOOK/N/GET BELL/E/OPEN COFFIN/GET SCEPTRE/W/S/PRAY/E/S/E/W/W/READ BOOK/TURN PAGE/DROP ALL EXCEPT TORCH AND LAMP/OPEND TRAPDOOR/D/N/E/E/SE/E/D/
D/D/GET COFFIN/U/S/PRAY/E/S/E/W/W/OPEN CASE/PUT COFFIN IN CASE/GET
BOOK/GET BELL/GET CANDLES/D/S/E/GET  PAINTING/W/N/N/E/E/E/ECHO/GET
BAR/U/E/N/DROP PAINTING/GET MATCHBOOK/S/S/D/W/S/S/E/D/RING BELL/GET CANDLES/LIGHT MATCH/LIGHT CANDLES WITH MATCH/READ PRAYER/
DROP MATCHBOOK/DROP CANDLES/DROP BOOK/S/GET SKULL/N/U/N/N/N/W/W/S/
U/PUT SKULL IN CASE/PUT BAR IN CASE/D/N/W/W/W/U/GET KNIFE AND BAG/
SW/E/S/SE/ODYSSEUS/E/E/PUT BAG IN CASE/DROP RUSTY KNIFE/D/N/E/E/N/
NE/E/D/GET PILE/U/N/N/GET SCREWDRIVER/GET WRENCH/PRESS RED BUTTON/
PRESS YELLOW BUTTON/S/S/TURN BOLT WITH WRENCH/DROP WRENCH/W/W/E/N/
GET TRUNK/S/SW/S/S/W/W/S/U/PUT TRUNK IN CASE/DROP PILE/DROP SCREWDRIVER/D/N/E/E/S/S/TOUCH MIRROR/E/D/GET TRIDENT/S/GET PUMP/S/
S/SW/S/S/W/W/S/U/PUT TRIDENT IN CASE/GET SCEPTRE/GET PILE/D/N/E/E/
E/E/E/DROP PILE/INFLATE PILE/DROP PUMP/GET LABEL/READ LABEL/DROP LABEL/THROW SCEPTRE IN BOAT/ENTER BOAT/LAUNCH/GET SCEPTRE/WAIT/GET
BUOY/WAIT/LAND/GET OUT OF BOAT/N/OPEN BUOY/GET EMERALD/DROP BUOY/ GET SHOVEL/NE/DIG SAND/DIG SAND/DIG SAND/DIG SAND/DROP SHOVEL/GET SCARAB/SW/S/S/WAVE SCEPTRE/W/W/GET POT/SW/U/U/NW/W/W/W/PUT SCEPTRE
IN CASE/PUT POT IN CASE/PUT EMERALD IN CASE/PUT SCARAB IN CASE/GET RUSTY KNIFE/GET NASTY KNIFE/W/W/U/KILL THIEF WITH NASTY KNIFE/GET PAINTING/GET EGG/DROP RUSTY KNIFE/DROP NASTY KNIFE/GET CHALICE/D/E/E/PUT PAINTING IN CASE/GET CANARY/PUT CHALICE IN CASE/
PUT EGG IN CASE/E/E/N/N/E/WIND CANARY/GET BAUBLE/W/S/E/W/W/PUT CANARY IN CASE/PUT BAUBLE IN CASE/GET SCREWDRIVER/GET GARLIC/D/N/ E/E/S/S/TOUCH MIRROR/N/W/N/W/N/E/PUT TORCH IN BASKET/PUT SCREWDRIVER IN BASKET/LIGHT LAMP/N/D/E/NE/SE/SW/D/D/S/GET COAL/N/U/U/N/E/S/N/U/S/PUT COAL IN BASKET/LOWER BASKET/N/D/E/NE/ SE/SW/D/D/W/DROP ALL/W/GET ALL FROM BASKET/S/OPEN LID/PUT COAL IN MACHINE/CLOSE LID/TURN SWITCH WITH SCREWDRIVER/OPEN LID/GET DIAMOND/N/PUT DIAMOND IN BASKET/PUT TORCH IN BASKET/E/GET LAMP/GET
GARLIC/E/U/U/N/E/S/N/GET BRACELET/U/S/RAISE BASKET/GET ALL FROM BASKET/W/GET FIGURINE/S/E/S/D/DROP GARLIC/U/PUT DIAMOND IN CASE/PUT TORCH IN CASE/PUT BRACELET IN CASE/PUT FIGURINE IN CASE/LOOK/GET MAP/EXAMINE MAP/E/E/N/W/SW/W

That's it for today, folks!

DID YOU KNOW THAT...... by Cronos

....rumours are spreading that Commodore Business Machines went     broke?
....the rights to the Amiga have been sold real cheap?
....nobody knows what will now become of the Amiga?
....the Amiga will be about thousand guilders cheaper next month?
....this sounds like computer dumping to me?
....it is not quite definate that the Amiga will never break     through?
....G-DATA (Herr K. Figge, Siemensstraße 16, 4630 Bochum 1, West     Germany) is designing a full software multi-tasking program?
....people at the universities of Dortmund and Berlin are working     on it?
....one group is designing a  GEM-compatible operating system with
    multi tasking?
....the other group is writing a program under GEM to accomplish     multi-tasking?
....G-DATA thinks it is one of the most difficult projects to be     realized on the ST?
....G-Multi will be launched in November or December of this year?
....I have heard that Data Becker (for the address, see the     article  on sound programming in this issue of ST NEWS) is     planning to launch a Commodore 64 emulator for the ST soon?
....it is not known whether it will be software and/or hardware?
....we're now waiting for people to have 64 software on 3,5"?
....this might be achieved be sending over data from a 64 to an ST
    by modem?
....this way, the ST can run about 3000 programs?
....this number will be more, once the MS/DOS emulator is     launched?
....people might desperately need 5,25" disk drives on their ST's?
....real cheap and still good 5,25" disk drives can be bought     through AST (Advanced System Techniques) Ltd.,  87 Bournemouth
    Park Road, Southend-on-Sea, Essex SS2 5JJ, England?
....they cost about £110?
....that is about 400 Dutch guilders?
....these disk drives are double-sided?
....AST also sells 3,5" disk drives for the ST (double-sided)?
....those are about £10 cheaper?
....my hamster, Pippi, ran away recently?
....I found it back after two long days?
....Pippi is now much stronger and healthier?
....Robert from the ICG is designing a real cheap sound digitizer?
....it might turn out to cost less then 250 Dutch guilders?
....it has 8 bits?
....it was originally designed for the Commodore 64?
....it costs less then 40 Dutch guilders on that machine?
....Robert already digitized 20 seconds of "Nineteen" on the 64?
....it might turn out to be the cheapest sound digitizer for the     ST?

NEWS ABOUT THE AMAZING CRACKING CONSPIRACY™ by Cronos

The news that you now are about to hear it the most stunning news ever to have appeared in this column:  The ACC spreading service has quit! Since we think computing can also be a lot of fun if you don't do anything illegally, we decided to quit the whole spreading idea; from now on, we only write software ourselves, and we will continue to publish this bulletin ST NEWS.
Why did we decide to do this? Reason 1: As you might have read in ST NEWS Volume 1 Issue 2, I was contacted by a software house recently. The man on the other end of the phone convinced me that I really shouldn't be spreading their programs. Reason 2: We want to become strictly legal, because we don't want our acqaintance at our correspondence address to get into trouble either. Eventually, the correspondence address might even turn out to be changed to our own address, once we have been legal for quite while.
So we haven't spread Silent Service and Leaderboard at all, because this fell in our first legal days (we are legal since Saturday, August 8th 1986, the day that ST NEWS Volume 1 Issue 2 was published). We hope you will continue to read ST NEWS, in spite of the fact that we've become legal. We will eventually try to make only ST NEWS and Synth Samples........

HINTS AND TIPS FOR (GFA) BASIC by Antiware Cronos

This time, we will have an inside look at text special effects. As you might know, it is possible to print several text sizes, chapes, etc. It is also possible to print text upside down, vertically, etc. I will try to explain some of the basics of variable text printing in this article.
First, we will have a look at how it's done in GFA Basic. To manipulate texts, GFA Basic has two commands: DEFTEXT and TEXT. The DEFTEXT command is really very versatile; its format is as follows:

            DEFTEXT ,Type, Angle, Size

"Type" can be any of the standard character types, being of a value from 0-31. You must look at this as a five-bit value, with each individual bit having a special function:

            Bit 0:      Bold
            Bit 1:      Light
            Bit 2:      Italic
            Bit 3:      Underlined
            Bit 4:      Outlined

When an individual bit is set, the character type is also set. And if you would want e.g. Bold and Outlined, you would just need to set bits 0 and 4. That is %10001 binary, which is 17 decimal.
The second parameter is also a very handy one; it determines the angle at which the text should be printed (upside down, vertically, etc.). Its value can be between 0 and 3150, where the 'boundaries' lie as follows:

            0-449    Normal printing
          450-1349   Vertical printing down-up
         1350-2249   Upside down printing right-left
         2250-3149   Vertical printing up-down

The third parameter, "size", determines the size of the character, ranging from 0 to 26. But watch out: at value 12, the characters become smaller again, to become larger afterwards!
If you trie to PRINT a text after you have used DEFTEXT, you will find out that PRINTing will just be in standard character shape; therefore GFA BASIC has the TEXT command. The format of the TEXT command is as follows:

            TEXT x,y,"text"

The "x" and "y" stand for the x-and y-position of the upper lefthand corner (in pixels) for a normally printed character. From there, the rest of "text" will be printed. "x" can be from 0 to 639, whereas "y" can be from 0 to 399 (both in monochrome mode).

We've got another usefull tip lined up for you: the use of the command FILESELECT of GFA BAsic. With this command it is possible to select items from disk the same way many professional programs do, using the Item Selector Box and the mouse. Its format is as follows:

              FILESELECT "x:name.ext","dummy.ext",filename$

The first statement between quotes is that what comes on the top of the item selector box. Mostly, you would use "A:*.*". But if you want drive B or another drive to respond, you will have to change the value "x" to the identifier of that drive. And if you would only want to display files that begin with "AB" or that have an extension of ".DOC", you can always use "A:AB*.*" or "A:* .DOC" respectively. It doesn't matter if you type in these names in upper or lower case. The second statement between quotes is a dummy name (including extension); if the user immediately clicks the mousebutton on the box labeled "OK", without having selected a file from the directory, that name will appear in the string you defined after the last comma of the command. This way of asking for a LOAD or SAVE name is much better then using a regular INPUT, where the user might have difficulties with folders, etc.

Now, let's leave this wonderful GFA Basic alone for now, and let's have a look at some VDI Calls in ST Basic. We will also specialize in text effects this time.
The format of the text effects is as follows:

 Poke Contrl,106           This is the GEM function number
 Poke Contrl+1,0           Number of values in PTSIN array
 Poke Contrl+3,1           Number of values in INTIN array
 Poke Contrl+6,1           Device (handler) number
 Poke Intin,x              x can be from 0 to 31 (see above)
 Vdisys                    Perform GEM function

Using the VDISYS command, you always have to POKE the GEM function number in Contrl. For "Text Special Effects" it's 106, but there are more, like 122 (Hide Mouse), 123 (Show Mouse), 107 (Set character Cell height, Points Mode), 13 (Set character baseline vector), 113 (User defined linestyle pattern), 16 (Set polyline Line width) and 32 (Set write mode).

Another thing you can do with text is changing the write mode (GEM function 32). With this you can set the text to be written normally, Transparent, XORed or Reversed Transparent (values 1,2,3 and 4 respectively, to be POKEed into Contrl+6). The format is as follows:

   Poke Intin,1
   Poke Contrl,32
   Poke Contrl+2,0
   Poke Contrl+6,x   (see text for explanation)
   Vdisys

So, that's all about text effects for now. Now, let's have some tips for the mouse.....
Although some people find it a bit difficult to "PEEK" the mouse from BASIC (because moving the mouse slows  ST Basic down an awful lot), it really isn't difficult. GEM has reserved three function for that: 122,123 and 124. Their formats are as follows:

    Turn the Mouse on

    Poke Contrl,122
    Poke Contrl+2,0
    Poke Contrl+6,1
    Poke Intin,0
    Vdisys

    Turn the mouse off

    Poke Contrl,123
    Poke Contrl+2,0
    Poke Contrl+6,0
    Vdisys

    "PEEK" the x-and y-positions, etc.

    Poke Contrl,124
    Poke Contrl+2,0
    Poke Contrl+6,0
    Vdisys
    Mouse Button= peek (intout)
    X position  = peek (ptsout)
    Y position  = peek (ptsout+2)-38

Try pressing the different mouse buttons to see what happens to the PEEK of intout......

      

MORE ABOUT DISKMANIPULATION ON THE ATARI SF FLOPPY DISKS by Cronos

In the previous issue of ST NEWS, I have told you some basic things you need to know when you start disk manipulating. In this issue, I'll talk about some specific data and things you'd also need to know if you start manipulating....

First, let's talk a bit about the File Allocation Table or FAT (for people who owned a Commodore 64 before: this can be compared with the Block Availability Map or BAM on the 1541 disk drive). Normally, each FAT entry is 12 bits in size. It can contain several values:

      $000       Cluster unused
      $FF7       Cluster unusable, mostly because of bad medium
      $FFF       Last cluster in a file
      other      Number of the next cluster in a file

Clusters are numbered starting at two, and each cluster normally represents two sectors (so 1024 bytes). Now you know the reason why a 2-byte file takes up a whole kilobyte on disk....
Now the directory. Each directory entry is 32 bytes in size, which are divided as follows:

       1- 8      Filename
       9-11      File extension
        12       File attribute
      13-22      Unused/Reserved
      23-24      Time
      25-26      Date
      27-28      Number of the first cluster of a file
      29-32      Size in bytes

The filename can have upto 8 characters in it, if which nearly all letters, etc. are possible. First Word has difficulties reading filenames with german characters, etc. in it, and the following characters can (may) never be used in a filename:

                         []
                         ()
                         <>
                         =
                         *
                         &
                         ,
                         !
                         |
                         ?
                         /
                         \
                         $
                         .
                         :
                         ;
                         +
                         -
The filename extension cannot be carelessly manipulated, since it determines whether a file can be run or  only shown/printed.  The following extension have special meaning (or can have special meanings):

      PRG        A regular program, that can use GEM. Can be run
      TOS        A program that doesn't use GEM (mouse pointer
                     disappears). Can be run
      TTP        A program where TOS Takes Parameters (TTP), e.g.
                     an assembler, where the source file has to be
                     specified. This can now be done in a box
      IMG        This is normally the extension of a TOS on disk,
                     but is also used in games like "X-TRON", a
                     database called "Zoomracks" and the digitized
                     music demo's from the Desaster Area (Oxygen &
                     Foreign Affair)
      SYS        This is the extension of a program called
                     "ASSIGN", usually present on drawing programs
                     like Easy Draw, Gem Paint, etc. te determine
                     whether the program runs in monochrome or co-                     lor resolution
      ACC        (This is no advertisement) Provided that a pro-                     gram has the format of a desk accesory, up
                     to five of these files can be loaded at sys-                     tem BOOTing to become desk accesories
      DOC        The extension of a First Word text file, but
                     can be used otherwise as well
      TXT        Usually a text file
      ONE        The extension of a DB Master One data file
      ZRX        The extension of a Zoomracks data file
      APP        I don't know exactly what this does...
      ???        Only PRG, TOS, TTP and APP can be loaded....

Now the attributes. What exactly is a file attribute? It is a byte that uses several of its bits to determine certain status-qualities. For example, there's a read-only status, a hidden status, and some more. The bits are located as follows:

      Bit 0:    Read only
      Bit 1:    Hidden
      Bit 2:    System
      Bit 3:    Volume
      Bit 4:    Subdirectory
      Bit 5:    Archive bit (hard disk only: written to & closed)

The read-only attribute seems quite clear: if the specific bit is set, it is not possible to delete or rename the file. The use of both hidden-and system attributes still have to be explained to me, but they take care that a file isn't shown an a regular directory. How it is readable, that's a mystery to me (doesn't that remember you to a certain song?!?). The volume label is set if a file is no file but the name of a disk (the disk label). The subdirectory attribute is set if a file (again!) is no file, but a subdirectory, better known as a folder. The TOS doesn't read it, but opens a subdirectory somewhere else on the disk if it's clicked.
You'd better stay out of the unused/reserved bits; you never know what people might do with these (may be even as part of some clever protection scheme!).
Both time and date are quite difficult to calculate, since you'll have to process individual bits. The two time-bytes are divided as follows:

          Bit 0-4          Seconds
          Bit 5-10         Minutes
          Bit 11-15        Hours

You'll have to multiply the seconds you get with two to get the proper time!
The date bytes are divided as follows:

         Bit 0-4           Day
         Bit 5-8           Month
         Bit 9-15          Year

Here, you'll have to add 1980 to the value of "year"....

That's all folks, for this issue of ST NEWS. Next time, we might go and have a look at some specific disk manipulation. See ya!

SUBSCRIBE TO ST NEWS!!!!

Since we now have a regular correspondence address, we thought we might as well start a subscriber's service. Here's what you must do if you want to get every new issue of ST NEWS (and, the first time, all back-issues) within a week after its launch:

1 Send a good quality envelope (with air-bubbles) to our    correspondence address
2  Put enough stamps on it
3  Put one empty disk in it
4  Put  as many stamps in it as that should have been on the    envelope when you send it to us
5  Put a self-adhesive label in it with  your name  and address on
   it
6  Make sure to send the envelope so we can use it to send the    disk back as well (no glue, etc.)
7  The disk should be formatted single-sided!!
8  This way, you get ST NEWS within a week after its launch!

Now, there is a way to pick up at the hottest news around on your computer system......you simply subcribe to ST NEWS right now!
Except for the post, etc. it is a free service; where do you get this information for nothing!?! The answer: at The Amazing Cracking Conspiracy™ with their ST NEWS!

In the near future, we hope to make it a bit larger and better; we might even start publishing ready-to-type-in listings, together with added files on disk (the whole bulletin is on disk anyway, so why shouldn't we add some files - so you don't have to type in!), and articles written by the readers. If you have any comments, suggestions, etc., please write them to us at our correspondence address!

Some statistics: We expect ST NEWS to be published about 8 or 9 times in a year, which will cost a subscriber less than five guilders for each issue (that is for the post). That should turn out to be a bit more then forty guilders for a year. And if you subcribe at each end of a year, you get all the back-issues for the price of one! But that way, you're never up to date at the beginning of the year.....
So please subscribe to ST NEWS. It's no real subscribing, because your name will not end up in a file or so; each time you want ST NEWS, you just send a disk (so the best is to send a disk right now, and send one every time you get the other back). If you have ST NEWS for the first time, and if you want any back-issues, please say so on a note or so in your envelope.
We think you'll like ST NEWS, because it's so cheap (except for the post, its free!) and because it offers you quite inside information about what's going on on the ST, as well as software reviews, interesting rumours, and lots of Hints & Tips. And if you share the costs of the post with a few friends, you pay even less!
So send a disk to us right now! You won't regret it (and if you would, you can simply NOT send us a disk anymore).......
OUR NEW CORRESPONDENCE ADDRESS

If you want to write articles for ST NEWS, or if you think you have any questions (or answers to questions, for that matter), or if you think you have anything that people want (when it's asked for in "Questions and Answers"), please contact our correspondence address. You can also send in your entries for the Synth Sample II contest to this address. It is:

                 ST NEWS
                 Fuutstraat 2
                 5702 LN  HELMOND
                 The Netherlands

Since we don't want any trouble, please don't send illegally copied programs, etc. to this address! This address is only meant for correspondence with regard to the subjects mentioned in "Questions and Answers", elsewhere in this bulletin. Please put "Q&A" clearly on the top lefthand corner of the envelope. If you wish to have your question answered by anyone particular, please start the letter with "Dear Cronos" or "Dear Antiware"; otherwise, use "L.S.", "Dear ACC", or anything else that might turn out to be correct according to you. You can also send your remarks for our Synth Samples to this address. Letters that have former ACC spreadings as subject, will not be answered!
Again: the people living at this address have no knowledge of computers, and don't even have a computer theirselves. So it's useless to visit them.....

We hope you will like our new service, complete with correspondence address!

GREETINGS TO:

Our fellow-members of the Desaster Area in Germany and Holland, Softrunner, 666, Irata, Mister X, Probyte, Pater Becker, LEN, Skippy, Gamecard, The Invisible Two, Wolfhook, Garfield, Berlin Cracking Service, Bitstoppers, International Cracking Group, Frogware, Active Cracking Crew, Fabulous Breaking Group, The Mercenary Cracker, Flash Cracking Group, 1001, 3001, Crackman Crew, Radwar, Goonies Cracking Group, The Olympic Cracker, MAD, Dynamic Duo, Conan, ADJ, Dr. Freud, GHS, Mario, Newlook, The Institute, Universe, Henksoft, Koala, Wodan, Sodan, R2D2, Federation Against Copyright (ACE), Master Genius, Cronos' mum, Fantasoft, Florasoft, Luco, Tosoft, Space Bert, Bozzuul, Sprinter, ESP, Impeesa, Stichting Bescherming Software (translation: Foundation for the Protection of Software; mean guys!!), SCC, Anselm S., Serjosja V., Hubert van M., Hans N., Peter V., Section Eight, Fred, Gerard, Adri, Robert, Paul (all five of a certain notorious computer shop in Alkmaar, Beverwijk, Haarlem and Amsterdam), Ed van de R. and his wife, Theo van B., Peter V., Léon O., Math C., Eddy S., Luke C.,  Piet D.,   Rob G.,   Tom den D., Vincent van D., Engel G., Cyborg, Pippi (read why in either Synth Sample II or the Amazing Cracking Conspiracy Super Utility Disk Version 1.5), Jeff M., Rob H., Sven K., Peter M., Onno V. (alias Mr. Protect, the "Micro Master"), Theo P., Wim H., Wil H., Hans K., Frans van K., Eddie B, Nite Nat, Jos P., Wilfred K., NIC, MIKEL, THG, OTD, Ron R., Arthur Dent, Delta Software Productions, Faber Software Productions, ABA (for still greeting us on the Commodore 64), Psy the hero, Matt, Demon, PFF, all the people that liked previous issues of ST NEWS, Mr. & Mrs. Mols, Herman de V., Alex S., Ome Toon, The Great Hammond, Jos C., Hans C., all the people at a certain software house in the Netherlands,
(but originally in Germany) that convinced me to quit copying software illegally and The Great Diabolo.

NEXT TIME IN ST NEWS......

More about diskmanipulation

More GFA Basic Tips & Tricks

More about the ST's operating system - GEMDOS functions

A first computer story

Answers to Questions

Reviews of new software for the ST

More stunning facts in "did you know that...."

A built-in Amazing Cracking Conspiracy™ ST chart-booklet!

Some basics of the ST's built-in MIDI interface

Hints & Tips for "Sundog"

And much, much more........

ST NEWS is an independent publication of the Amazing Cracking Conspiracy™, a member of the Desaster Area™, an International Group of ST dedicated freaks in Holland and Germany. No rights reserved; anyone may copy this file to anyone who wants to have it (this bulletin belongs to the freeware, and it thus public domain) but it is not allowed to reproduce the texts contained in this bulletin for a regular magazine, without the written prior permission of The Amazing Cracking Conspiracy™.

           © 1986 by The Amazing Cracking Conspiracy™