NNNNNNHp NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNN@`  @`! #@%`')+-/13@579;=?A C@E`IKMOQ S@U`WY[]_a c@e`gikmoq s@u`wy{} o O ` @ ` / @ @ ` ɠ O ` ٠  O @`!Aa  /o!#A%a')+/1!579;?A!CAEaGIKMOQ!SAUaWY[@`  @`! #@%`')+-/13@579;=?A C@E`IKMOQ S@U`WY[]_a c@e`gikmoq s@u`wy{} o O ` @ ` / @ @ ` ɠ O ` ٠  O @`!Aa  /o!#A%a')+/1!579;?A!CAEaGIKMOQ!SAUaWY[ST_NEWS 2_4DATA PROGRAMS &ST_NEWS PRGw=YzDESKTOP INFJt \READ_ME TXT]m. .. DOC03 DOC04  DOC05  wDOC06 u&DOC08 aDOC09 2DOC11 Ã6CDOC13 ǃGCDOC14 ˃XQNDOC17 σl@,DOC19 ҃xV-DOC20 Ճ,DOC23 ׃ DOC27 ڃ DOC28 ݃DOC30 *DOC33 DOC16 9DOC24 DOC26 2%DOC12 DOC15 # DOC22 2 DOC29 DOC32 |DOC07 DOC18 DOC21  DOC25 DOC01 EDITORIAL - TWO YEARS OF COMPUTER FREAKIN' Hi! Welcome to yet another issue of the international disk magazine ST NEWS (Volume 2 Issue 4), published on Saturday, June 13th, 1987 by occasion of the second birthday of the ACC. Yes, we started two years ago, back on the good ol' Commodore 64 and I might say we have come a long way since then. We used to be a bit of a hacker's group back then but about one year ago we realised you can also make yourself useful on a computer in more sympathetic ways: the idea behin ST NEWS was born. Right now, we have published 10 issues in about 11 months, containing a bit less than 1000 DIN A4 written pages with the most various kinds of information on a total of 7 single sided disks (of which one was maxi-formatted): That's almost 2.5 Mb of information, documents and programs! Just compare: In 10 months, another disk magazine ("F.A.S.T.E.R.") has launched five issues, offering about 50-60 articles in total (I think I'm being optimistic) on not even half as much comparable space: About 400 DIN A4 written pages. And these pages, in spite of the fact that they are far less in quantity, take up 5 maxi-formatted disks - that's about 2 Mb of disk space! And, whereas ST NEWS is free of costs, "F.A.S.T.E.R." costs about 30 German marks per issue: A total of 150 German marks! Just compare again and note that ST NEWS (including disks and postage costs) costs just about 40 German marks - all issues are included then! Thus, we offer over twice as much information/programs on 1,25 times the space and at less than one third of the comparable price! That's something to think about when you read ST NEWS and when you hear people fussin' about a disk magazine called "F.A.S.T.E.R."... But this editorial column is not meant to destroy what the people of "F.A.S.T.E.R." do - what they offer is of high standard indeed. The only thing that they should never have done is becoming commercial... It's about time now to thank all the people that have contributed to the success of ST NEWS: Math Claessens, Jos Schilders, Herman de Vrees, Howard Chalkley, Chris Scheybeler, Phil Camp, Frank Oakes, Frank Lemmen, Frans Ottenhof, Felix Gooyaerts, Robert van Cruchten, Arjen de Jong, Tom den Duijf, Marcel van Valen, Casper Jansen, Mark van den Boer, Wilfred Kilwinger, Wilfried de Graaf, Cora from Atari Benelux, Rowan, Laura and Cecilia from Centerfold, Paul Kolenbrander, Adrie van der Weijden, Lon Obers, Hubert van Mil, Arjan Pot, Wicher Gispen, Stephen Thorne, Meindert Honig, Anthony Rush, Rufus Camphausen, Rob de Swaan, Joop Stokvis, Gerardo Greco, Stefan Colombier, Les Ellingham, Ewe Hkansson, Dustin Greenfield, Dagmar Fajardo, Engel Geukens, Ed van der Rest, Adri from Cafka, Marko Software, Toon Hermsen, Hans de Lange, Hans van der Linden, Thomas Maier, Jrgen Goeldner, Lucas van den Berg, Kees Puytel, Theo van Beeck, Rick van de Kerkhof, Peter Vlemmings, Eerk Hofmeester, Robert Heessels, Roland Heessels, Jonathan Ellis, Steve van de Horst, Markus Herfort, Hans Nijsen, Gerard Faber, Pim & Jan Coenradie, Ivo van Vlaenderen, Holger Gehrmann, Rob Hubbard, Jeff Minter, Rhotron GmbH, Amanda Reid-Young, Volker Ritzhaupt, A. van der Veen, Ruud van de Kruisweg, Luuk van Beijnen, Lon Elins, Jos Velleman, Klaus Schultheis, Jean Miles, Richard van Helden, Micheal Osinski, Gerald Hulshorst, Michael Bernards, 't Patronaat (for a certain phone call), Ernst Blok, Pat Bitton, Rdiger Eichin, Hans Fousert, Reinhard Frank, Friedrich W. Hoffmann, C. Janssen, Mathias Kerkhoff, Dirk Leichtweis, Egon Lubbers, C. Lai, Raymond Laguesse, Lou Meijers, Gnter Neuhaus, Tore Nestenius, Ron Randasche, Hans Schellekens, Guus Surtel, Ralph Scherer, Cor Struyck, Jacq Tillemans, Helmut A. Troess, Sientjo van der Veen, Jos Verkroost, Peter Claessens, Roland van der Kamp, Fairlight and many more that I might have forgotten. Special thanks must go to Stefan Posthuma, who contributed not only to the high quality of the articles generally offered in ST NEWS, but who also did some programming for me - in the next issue of ST NEWS you will probably find a faster Page Viewing Mode, done by him. He also offered much constructive criticism! Many other thanks must go to the creator of GfA Basic, Frank Ostrowski, also for his new book about 'his GfA Basic'. I am surely looking forward to GfA Basic version 3.0! Further, I feel I must thank the following people/groups for their constant inspiration on my work (although they will themselves probably not know that they did): Queensrche (for "The Warning" and "Rage for Order"), Kreator (for the fastest trash metal around), Yngwie Malmsteen (for the guitar solos), Venom (for my older inspirations), Jean Michel Jarre (for the phantastic sound effects), Jan Hammer (just because he's good), Deep Purple (for all live albums), Samantha Fox (for her......), Microdeal (for good software), Nicole Winters (for giving me tummy aches, sleepless nights, even lower figures for school than I imagined possible as well as for breakin' my heart when I found out her age....) and the Strike-a-Light Group (for their warm support and nice criticism as well as a sleepless night in Amsterdam before the SAG day, thanks to Roland's snoring). I hope to be able to go on with ST NEWS for at least another year, but I hope you'll realise that it will sometimes be launched a bit later then expected - due to exams that I will probably have to take the coming year as well as the time that I spend in my coperation with other computer magazines like ST Club Eindhoven's "ST Clipboard", Stichting ST's "ST", SAG's "Atari Magazine" and a new magazine, "Atari News". Quite some time will soon be spent on some translating that I want to do to make my wallet survive another year of ST NEWS as well as the launch of a Dutch edition of ST NEWS (that will be published twice a year and which will feature the best articles from the last half year's English issues). This Dutch version will be made on special request from ST Club Eindhoven and will be launched as Low Price Software at a price that still has to be figured out. This Dutch ST NEWS Compedium will take up one double sided, maxi- formatted protected disk and will contain about 700 Kb documents. It will be sold together with the disk in a neat package. That's about it I want to say concerning this time's ST NEWS issue. I hope you'll like what we bring to you, and wishing you fun reading, I remain, Richard Karsmakers (Editor of ST NEWS) ST NEWS COLOFON ST NEWS is a magazine written for and written by Atari ST computer enthusiasts. It is published at irregular intervals by the Amazing Cracking Conspiracy, and spread through the Public Domain. It may be copied freely to anyone you wish. Editorial staff: Richard Karsmakers (Editor/GfA Basic/Software) Frank Lemmen (MIDI/Music) Official ST NEWS distributors outside The Netherlands: Gerardo Greco Via Roma, 75 I-80055 Portici-NA ITALY Ivo van Vlaenderen Lostraat 23 3100 Heist-op-den-Berg BELGIE Ewe Hkansson Pilspetsv. 4 291 65 Kristianstad SWEDEN Stefan Colombier Marienburger Str. 17 5300 Bonn 1 WEST GERMANY Page 6 Les Ellingham P.O. Box 54 Stafford ST16 1DR ENGLAND The following other people contributed to this issue of ST NEWS: Gerardo Greco Stefan Colombier Mark van den Boer Markus Herfort Paul Kolenbrander C. Janssen Ronald van der Kamp Lucas van den Berg Math Claessens Hubert van Mil Les Ellingham Marcel van Valen Ewe Hkansson Ivo van Vlaenderen Robert Heessels Eerk Hofmeester Dustin Greenfield David Walker Wilfred Kilwinger Rob Hubbard Danny Espinosa Jos Schilders Stefan Posthuma Roland Heessels Hans Fousert Wicher & Hans Gispen Joop Stokvis Frank Ostrowski Adrie van der Weijden Kai Figge (G-Data Software) Ruud van de Kruisweg The editor accepts no responsibility for any damage caused directly or indirectly by the use of any of the information given in this issue of ST NEWS nor the information contained in previous issues or issues to come. Writers remain responsible for their viewpoints and possible conflicts with other people caused by the publication of their article(s) in ST NEWS. Although ST NEWS belongs to the Public Domain, the individual articles may not be used in other magazines, in English or any other language, before the permission therefore is given by the author of the article. If you think ST NEWS is worthy of a contribution from your side, please feel free to donate any amount of money on giro account number 5060326, t.n.v. Richard Karsmakers, Helmond, The Netherlands. Thank you in anticipation! SOON COMING IN ST NEWS (P)Reviews: Defender of the Crown Airball Boulder Dash Construction Kit Gauntlet (?) 1942 (?) Gunship (?) Hades Nebula Pro Sound Designer Guild of Thieves Hardball The Last Disk Utility (?) Aladin (?) Programs: Tron X ACC Copy V1.0 The Ultimate Diskmonitor Features: Interview with David Whittaker Interview with Franz "Signum" Schmerbeck Interview with Rob Hubbard Interview with Harald Faltermeier (?) TV Modulator Kit The Consumer Electronics Show (Chicago) The MIDI Dump Standard Video Digitizer Kit (256x256 pixels) Solution to Brataccas Solution to Spiderman Solution to Ballyhoo Solution to Wishbringer Solution to Enchanter Solution to Magnetik Tank Solution to Roadwar 2000 Solution to Fahrenheit Solution to Seastalker Solution to Mindshadow Solution to Tass Times in Tonetown Novel: RAM Space Pop Poll Results Educational: 'C' Tips & Tricks Forth Course Part III MC 68000 Course Part VI Modula-2 Course Part II GfA Basic Tips & Tricks Programming the Bootsector Windows in Modula-2 All about the DESKTOP.INF file More undocumented system variables (especially VDI) A new series about Disk manipulation Regulars: Did you know that.... Questions & Answers The Modem Connection The Music Corner User Group Update PD Library ST Software News And much, much more... HOW TO ORDER BACK ISSUES OF ST NEWS If you are thinking about ordering previous issues of ST NEWS, we hereby supply you with a list of contents of every issue that's still available through our Reader's Service. As you'll see, we have relaunched the old 'vintage' issues of ST NEWS: Volume 1 Issues 1 and 2. Have a look for yourself how we were at the very beginning of this era... 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 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 12 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, August 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 Monday, September 8th, 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 GfA Tips & Tricks Hi to.... Low to High converter The Amazing Cracking Conspiracy's 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 Volume 1 Issue 5 Published on Sunday, October 5th, 1986 Size: 214510 bytes on 117 pages Additions: Listings on Disk: ULT_EXAM.BAS 11378 bytes PATTERN .BAS 7304 bytes IRQ .C 1419 bytes GEMVDI_2.BAS 5681 bytes Diverse on Disk: FILL .LST 481 bytes MOUSE .LST 967 bytes SPRITE .LST 931 bytes READ_ME .TXT 1824 bytes ST Software News GfA Basic Tips & Tricks Report on the Annual Usergathering at Utrecht on September 20th, 1986 All about XBIOS Functions Hints & Tips for Winter Games The Ultimate Examamining Utility V2.8 The Music Corner Pattern Editor Something about Interrupts The Disc Are you a good ST Owner? User Group Update Software Mega-review: New Psygnosis Games Cleaning your mouse Questions & Answers RTOS, A multitasking OS for the ST The ST I/O Port Did you know that.... Final Hints & Tips to "The Pawn" Part I USeful PEEKs and POKEs GEM VDI Calls Part II More about the ACC's Reader's Service (P)review: Some Astronomy Programs Super Huey Review ST NEWS Volume 1 Issue 6 Published on Saturday, November 15th, 1986 Size: 217891 bytes on 106 pages Additions: Listings on Disk: DEMO .C 1778 bytes GEM_VDI .BAS 3344 bytes HEBREW .LST 1299 bytes HOUSE .BAS 14888 bytes IRQ .C 1390 bytes NUMROLOG.LST 4787 bytes SCROLLED.LST 8515 bytes Diverse on Disk: DEMO .PRG 2982 bytes EPROM .PI3 32034 bytes LINKAPP .BAT 123 bytes LINKTOS .BAT 120 bytes READ_ME .TXT 4960 bytes SCHEDULE.PI3 32034 bytes ST Software News GfA Basic Tips & Tricks Did you know that.... Sound Digitizer Service Connecting a Normal B/W Monitor to the ST without Modulator Hints & Tips for playing Brataccas GEM VDI Calls Part III User Group Update Starfiend Questions & Answers Part One of the MC68000 Machine Language Course A Day in Amsterdam: Visiting the Efficiency Beurs and Commedia The Mirage Two Chess programs Compared: XChess and Psion Chess ACC Hiscores Michtron Software - Old but Good Solid State RAMdisk for the ST Simple Draw Esoteric ST Column: Hebrew on the ST Esoteric ST Column: Numerological Computations Writing your own Adventures Scroll Message Editor Review: Strip Poker, a sizzling Game of Chance The ACC's Reader's Service The MAC Cartridge Final Hints & Tips to "The Pawn" Part II Review: Extensor Neochrome User Manual Our Italian Distributor ST NEWS Volume 2 Issue 1 Published on Saturday, Januari 3rd, 1987 Size: 277084 document bytes on 1 disk Turn your Joystick into a JEM Synth Sample III & IV The Solution to The Pawn Pop Poll/Software Top 10 Questions & Answers Did you know that.... ST Software News The Music Corner The ACC's Reader's Service User Group Update PD Library Our Correspondence Address Editorial ST NEWS Colofon Now to order Back-issues of ST NEWS Soon coming in ST NEWS 68000 Assembler Course Part II GEM VDI Calls Part IV (Final Part) GfA Basic Tips & Tricks Hints & Tips to Borrowed Time Hints & Tips to King's Quest I Flightsimulator II Art-and Film Director GfA Basic Version 2.0 and the GfA Basic Compiler Musix32 New Epyx Games List of opcodes for the MC68000 Processor Hollywood Poker ARC - The file Archive Utility Neochrome V1.0 The Mercenary Compendium Degas Elite - The Ultimate Drawing Program The Rhotron Bussystem The NEC Multisync Fairlight - a glance at real computers Das Floppy Arbeitsbuch Professional GEM Das groe GfA Basic Buch ST Intern ST Peeks & Pokes In memoriam STY-X Software  ST NEWS Volume 1 Compendium Published on Sunday, Januari 18th, 1987 Size: 282912 document bytes on 1 disk Something about Interrupts Little Computer People The Disc All about system variables Disk Manipulation Part I GfA Basic (Preview) Sound and Music Programming on the ST All about the BIOS The solution to Zork I Diskmanipulation Part II All about XBIOS Functions Part I GfA Basic Tips & Tricks Part I Low to High Converter GEMDOS Functions The Tempelmann Monitor All about the MIDI Interface New Psygnosis Games GfA Basic Tips & Tricks Part II GEM VDI Calls Part I All about XBIOS Functions Part II GEM VDI Calls Prt II The Ultimate Examining Utility Pattern Editor GfA Basic Tips & Tricks Part III Starfiend 68000 Machine Language Course Part I XChess & Psion Chess Scroll Message Editor Strip Poker Extensor GEM VDI Calls Part III Michtron Software - old but good! Writing your own Adventures Our Correspondence Address Editorial ST NEWS Colofon  ST NEWS Volume 2 Issue 2 Published on Saturday, Februari 28th, 1987 Size: 258558 document bytes on 1 disk Solution to Gateway Solution to Borrowed Time Solution to Space Quest Solution to The Hitchhiker's Guide to the Galaxy Novel: Mind Probe The ArtiST Index of ST NEWS Volume 1 ST Basic Disk I/O Interview with Jeff Minter New Atari Products JEM Error Update Questions & Answers Did you know that.... ST Software News ACC's Reader's Service User group update The Modem Connection PD Library Our Correspondence address ST NEWS Colofon How to order back-issues of ST NEWS Soon Coming in ST NEWS MC 68000 Part III GfA Basic Tips & Tricks Three Karate Programs GfA Vectors Art-and Film Director Flightsimulator II Lock_It & Crypt_It Mac Software TimeKeeper Clock Cartridge Grafik-Anwendungen Concise Atari ST 68000 Programmer's Guide ST NEWS Volume 2 Issue 3 Published on Saturday, April 11th, 1987 Size: 258203 document bytes on 1 disk Solution to Black Cauldron Novel: Dumb Oracle Solution to King's Quest I solution to King's Quest II A Day at the CeBit Solution to Amazon User Group Update B/W and Color at once Questions & Answers Did you know that.... ST Software News ACC's Reader's Service PD Library Our Correspondence Address Editorial ST NEWS Colofon How to order Back-issues Soon Coming in ST NEWS MC 68000 Course Part IV The XBIOS 'Dosound' Function explained Advanced Sound Programming Forth Course Part I Modula-2 GfA Basic Tips & Tricks Crimson's Column - A Hardcore introduction to Sundog Speech on the Atari ST Review: Signum Review: Super Directory Mac Software: MacZap Tools ADAP Sound Rack Video Digitizer Review: The Art Tizer Atari ST Floppy und Harddisk book review All issues of ST NEWS Volume 1 need to be loaded into "1st Word", "1st Word Plus" or any compatible word processor to be viewed. All issues in Volume 2 are supplied with a GEM-driven program that enables you to look at the documents without using a word processor.  The Second Issue of Crimson's Column  a description of Phantasie  by Logical Design Works through Tales of Wonder - witness accounts of The Rescue of Gelnor  Tale of the Trader  As I left the inn to give in to one of Mother Nature's most frequent urges (I could have used the men's room but there are certain limits to what my nose will cope with) a strange spectacle caught my attention. Out in the street, just leaving the Guild next door, a colorful gathering of humanoids, men and women, made their way to the bank on the other side of City Square. Anyone could see at once that they did not belong in the town of Pelnor; their actions much too loud and uncontrolled. No born Pelnorian (or Gelnorian for that matter) would talk with so little humility or walk the streets with such defiant absence of fear. They just had to be strangers; and if my eyes did not betray me I was witnessing the formation of yet another band of adventurers, all too eager to accept the threat posed by Nikademus' Black Knights and all the other usurpers of Gelnor. Experience told me it was useless to interfere with their business, or to warn them of their dangers. I knew right away that if they ever left town the chances of their return were slim at best. So if I had any sense, I told myself, I would do what I set out to do, ignore the strangers completely and get back into my bargaining session with Jerry "Hard-nickel" Josephson. Times are rough for all of us; no sense getting mixed up in rebellions; however just they may be. Now I have this problem. My father, a no-good lazy sod who never earned an honest copper in his whole life, spent much of his time (of the little time he spent home with his family, that is) with me, and he always talked of his adventures. Between you and me, and not meaning any disrespect to his dear memory, I doubt if he ever had the nerve to even lift a dagger, let alone partake in mighty fights and battles. But I was a kid, and his stories impressed me. And there was one thing that sustained their credibility. My father, only the Gods know how, had a magic potion that he showed me every couple of months, to bring back my belief and awe when these had diminished beyond the point of reverence he expected of me. He would then disappear for a while, and come back with a small vial that held a greenish liquid of great viscosity. It's the only thing of any value I inherited from my old man. When I returned to the inn, I saw the party of adventurers standing out in the street, and it looked like they were pondering what equipment to buy with the little gold they had to start their travels with. I made a decision then, walked past the inn, went to get that magic potion my old man was so proud of, and secretly brought it to the armory where I put it on one of the shelves. I know Furry; he never asks where anything comes from. None of us Pelnorians have a great love for the forces of Nikademus. I figured it was the least I could do to help. After all, they were here to help us.  So that's how I lost the one heirloom my father left to the family. When I visited the armory later that afternoon, the vial was gone. I sure do hope that's a real magic potion. Kerlin Battings Hello and welcome again to Crimson's Column. I don't know if you've read last issue's article, and as I've been raised with what people of a lesser education might well consider to be "good manners", I won't tell you what I think of you if you haven't. Let it suffice to say that the aforementioned article served as an introduction or, if you like, playing aid to FTL's SUNDOG - The Frozen Legacy. In this article I also explained what kind of approach I favor in adventure tips & tricks, and as plagiarism is always something to be loathed, I will not repeat. Anyone interested in the ethics involved is hereby referred to the section of ST NEWS where the making of back orders is explained. For this time, SSI's PHANTASIE is reviewed (actually, the game is Phantasie I and forms the first part of a trilogy). Using a somewhat different approach within the same set up, I will try to give a general idea of the game in short descriptive accounts larded with hints and tips on how to use magic, weapons, menu options and so forth. For those new to the game, Phantasie is a Dungeons and Dragons type game where magic spells, enchanted swords, healing potions and many other Tolkienish accesories serve you to survive the many battles that stand between you and the completion of your quest - the destruction of the Black Lord. At the end of this article, I will give a short explanation of the mechanics of the game, and I'll give you the information you need to start a group of six adventurers on their quest. But Lo! here's another excerpt. Diary of the Miller's Daughter  Today when I went to the forest to gather mushrooms I saw the strangest thing. Just before I entered the edge of the pinewoods, I heard loud voices approaching. Knowing that many evil and dangerous things roam our country, I quickly hid behind the first trees. There I waited, and after a few moments, coming from the east, I saw an unusual company make its way toward me. At first I was too scared to keep looking, but when I was sure no-one had seen me, I peeked from under a large branch and tried to see who it was, speaking with such bravour and eloquence. "I don't know about the rest of you", said a short, fat, sturdy dwarf with a long black beard tucked into his belt - next to a large hammer - "but I could sure use a bath. We've been travelling for a long time and my beard has gathered more dust than all the floors in the Endless Caves of Jaro. I hope we find a town before long." "Well Ranp, I don't think you'll need to worry," came the light voice of an Elf, "if my nose doesn't play tricks on me there's a pond of some sort nearby. I smell fresh water." "All hail the elfin nose. Lead the way, Sly, we're right behind you." When I saw who they were, my eyes opened in wonder. Not only was it strange to see such a mingled company of races, but their outfits! One of them, a halfling, was wearing a large pointed hat and a woollen cloak adorned with many mystic symbols. Another one, a strange creature with two horns growing from over his ears, wore grey armor and a large shield. There were four others, among them the elf and the dwarf who had spoken of water, and all were riding on horseback. Alone in my hiding place, I felt safe, but worried. The elf had smelled water, and there was only one place where it could come from. A few miles ahead, there was a forbidden pond. Its water crystal clear, it seemed an innocent place to rest - but those who drank would all be changed. Although the change that comes upon humanoids (my father says only thinking races profit from its exotic effects, because animals do not know how to understand the magic gift) is benificiary, none of us Gelnorians ever drink - the Black Knights mercilessly execute those who ignore their commands. For a moment, I wanted to shout, but then they had disappeared. I wondered if they would bathe? If they did, some of them would be stronger, others smarter, still others would have more vigor in their veins. Somehow I was glad I hadn't warned them. They looked like one of the rare bands of adventurous travellers that sometimes ride in our country, until they are defeated by Black Knights or slain by some strange monster from far east. It is rumored that many powerful beings live there, and that there are two more magical ponds where none dare drink these days. I hope some day a hero will be strong enough to enter the Black Lord's Palace and remove his dark reign from Gelnor - but it is said that it takes great courage to enter his domain, and that it can only be done with the help of the Gods. May Zeus be with that hero, whenever he comes. --taken from Josella Kreylers diary--  The Vicar's Sermon  ...and saw how this servant of Satan stalked the party of warriors, and how the minotaur knight who was standing guard was surprised by the presence of the devil and failed to wake his companions in time. The devil, merely playing with his victims, clawed at one of the sleeping forms while the minotaur drew a long, shining sword. As the enchanted metal of the fighter cut the substance of the devil great flames burst forth. I could just see how on the other side of the fire the figure of a man, a priest of an order unknown to me, started a prayer; and how this prayer was answered by a great sound as of a gong reverberating, waking all those whose lives were now threatened by the presence of Satans vile subject. Now the devil was no longer playing, and while a number of warriors took their weapons and shields and attacked him, and while another started mystic signs to tap his magic resources, the devil started his most powerful incantation. As metal cut flesh, the evil creature brought down a powerful blast of negative force on his attacker, slaying the brave warrior with one mighty stroke of the evil power bestowed upon him. And yet, victory was not his, for only seconds later the magician finished his great spell and an enormous flamebolt struck the devil and scattered him about in a thousand pieces of horrid black flesh... ...almost decided to stop following them when my patience was finally rewarded. The party had come upon another band of servants of Nikademus, but this time they were not surprised by the foul beings. While both sides started their preparations for battle, I tried to discern the identity of the party's adversaries. Again they were forces of evil, two mighty high demons assisted by a large number of skeletons. I saw how the magic man of the party, a hobbit wearing a strange blue outfit, broke off an incantation as if he suddenly realised that the monsters were too near to be affected by his spell. The priest, however, took out his holy symbol and softly vocalised his God's help to turn away the undead creatures that threatened them. I also saw how a sparsely clothed sinewy individual brought an incantation down on himself, and started to glow brightly. The new fighter in the party, realising it was no use trying to hit a demon with steel, tried to hit the skeletons; just as another woman, a slender pixie who, according to her stealth, had been trained in the abilities of thieves, who tried to walk around the demons to attack one of the lesser undead in the back. The other fighter, a ranger by the looks of him, seemed to trust in the magical force of his sword and attacked one of the demons. Of all these strategies the last one was the least successful; for no enchantment of steel can ever be sufficient to hurt a being of such devastating power as a high demon. And more went awry, for the presence of these dark beings was so overwhelming that the priest's attempts to turn their minor disciples was to no avail. The magician, incapable of anything but defensive manoeuvres, was hit time and again, and only one of his parries was successful. When the second high demon used his dark force, the magician was struck dead. Now it seemed that none of the party members would escape with their lives, for the ranks of their opponents had paid only the toll of two demolished skeletons - a mere token. While the priest beseeched his God to restore life to the dead wizard, both the fighter and the thief took defensive positions. Now, the demons were further away, too far to claw, but close enough to emit their dark forces. The skeletons, coming closer, were hewn down by the monk, whose powerful lithe body fought like a dervish, killing four skeletons in a matter of seconds. This brought new energy and faith to the party, and while the fighters finished off the remaining skeletons, and the resurrectured wizard and the monk started casting their most effective spells, the priest called upon his deity to confuse Satan's vicious helpers, so that they would no longer be able to tap their black magic resources. This turned the battle in the party's favor, for both High Demons were felled by the fierce raw force of the flames drawn hither by the magicians." Part of Vicar McMurray's Sermon #381 The Druid's Tale  In the Course of Time a Keeper of Nature will see many things strange and wondrous. Some of these things will be good and beautiful and enhance Nature's quality, other things vile and dark will cause pain and chaos. In these last years, a true storm of darkness has wounded our Gelnor, and it is no secret that he who causes these wounds is none other than Nikademus, the Dark Lord. For many years now the inhabitants of our Islands await the coming of a party of adventurers, heroes strong enough to waylay the evil that Nikademus plans for the Universe. Many parties have already attempted the near-impossible task, but none have succeeded. Today I have been witness to the coming of a party, and from their conversations I have learned that here, at last, our country has a chance for its liberation. This is what I've heard them speak; read, and hope, and maybe soon we'll all rejoice. "I think this last fight was it," spoke the fighter of the party, "we should go to town and see if we've gained enough experience to be trained." "Experience we have enough, Rob, but what with the looks of you I doubt if we've got enough money to afford training." "Will you listen to him? If you're such a handsome, Mr. Elf, why don't you charm our ememies instead of us having to fight them all the time? Who knows, you might even make a useful contribution." "Come on, boys, enough of that," warned a pixie, "we've got to make up our minds." "About what?" asked the wizard, who had been reading. "About whether or not we're ready to confront the Black Lord. If so, we should go to town, train, see about more spells; then rest and distribute our belongings." "And look at that last scroll we found," added the priest. "And buy all the damn potions we can, magic and healing," completed the ranger. "True," said the monk, "and the way I see it, we might as well try now. Cause I'm not getting any younger, that's for sure." There was a short silence; then the wizard spoke. "Okay then, let's see. We needed nine rings. These we have." "Aye, we sure do. Nine rings," confirmed the dwarf. "Further, we had to gather the four runes. We did so, and together with our experience in combat and the rings, this finally enabled us to get that most precious of runes, the fifth or God Rune, bestowed upon us by Zeus, on Olympus." "Correct." "Now, the way I see it, the God Rune is supposed to ward off the evil that surrounds the fortress of the black knights. Once within, we need nothing but our health, strength and magic." "Not to mention luck, that is," added the thief. "And maybe the aid of a summoned elemental," said the monk. "Of course. The question is: do we have enough experience to confront the Black Lord on his own territory?" Thus spoke a party strange and wondrous in appearance, and before long, I saw them make their way to town, no doubt on their way for the last training, needed to confront the Black Lord himself. May the arcane help of the elementals go with them for strength and protection. An account of Tanger Idon, druid of Gelnor Island. So far for the playing hints, tips and guidelines. I will now explain, concisely, the mechanics of starting a new game; which is what you do if you've just bought Phantasie, or when you've used the UTILIES program on your disk for STARTING A NEW GAME FROM SCRATCH. From now on, words or sentences in CAPITALS are taken literally from the dialog or menu options in the game. First of all, if you have an adequate copying program, make backups of both your disks. Disk 1 is protected, disk 2 isn't (and if you make a protected backup of disk two you may find yourself in trouble). Now write protect your disk 1 (do not write protect disk 2 as the program keeps score of which parts of the island have been discovered - also you will probably want to save your game at several occasions). To start play, insert disk 1 and double click either START.PRG (with music etc.) or PHANT.PRG (without intro). After loading, exchange disk 1 for disk 2. Press a key. Put disk 1 away, you won't need it again for as long as you continue play. Now, you are ready to form a party. You're in Pelnor, one of the towns/cities on the Island Gelnor, and before you can go on your way you need to find, select and equip a party of adventurers. To do this, you enter the GUILD. Entering buildings is done by clicking on their respective doors (but remember, you need to assemble a party before you can do anything else). Inside the GUILD, the city menu changes. As you see, only ADD MEMBER, NEW MEMBER and INSPECT MEMBER can be chosen. Choose NEW MEMBER. Now, pick a race. Then pick a character class. Keep the rulebook in mind: it's no use making illogic combinations (like an Ogre Thief (bad dexterity) or a Halfling Fighter (insufficient strength). For a good party, all scores should be 10+ and prime requisites (strength for a fighter, intelligence for a wizard, dexterity for a thief etc) 15+, preferably 18+. For a Great Party you must have patience and get low scores around 15, highest scores over twenty. This may take several hours of constantly picking a race (remember RANDOM races often occur only once; i.e. if you have stored a pixie you will not get another one until you PURGE it), then a class, and then PURGING if the statistics aren't up to your standard. If the scores are alright, KEEP your adventurer, NAME it and thus store it. You can store something over thirty characters in your GUILD. Once you have an adequate set of characters, you put them in a party by choosing ADD MEMBER from the GUILD OPTIONS. A complete party for a fresh game will consist of six adventurers. It is up to you to select their respective professions (or CLASSES). Remember you will need at least one PRIEST (for HEALING and PROTECTION purposes), one WIZARD (for aggressive magic such as FIREBALLS and MINDBLASTS) and one THIEF (for DISARMING TRAPS and OPENING LOCKS). Now that you have your party (you can always INSPECT MEMBER in the guild to see how their abilities, skills, equipment etc. are developing) you should get them the best equipment you can. Go to the BANK, WITHDRAW a couple hundred GOLD, and subsequently enter the armory. Here you can buy lots of things (you should try to get all the POTIONS and different SCROLLS available) to equip your characters with. HEALING POTIONS restore hit points, the higher the number, the more effective they are. The same goes for MAGIC POTIONS, but these restore magic points. MAGIC 1 restores 3 mp, MAGIC 2 restores 6 mp and so on. As the maximum number of magic points you'll ever achieve is 20, anything over MAGIC 7 potions is wasted (minor game bug, I presume). W(eapons), A(rmor) & S(hields): When you generate new characters, they are usually outfitted with a Club, Clothes and a Small Shield. The notation for a club is, for instance, CLUB W 4. This means that a CLUB is a W(eapon) and has a point value of 4. The higher the point values for W, A & S, the more effective they are. When an item is followed by the word "UNUSABLE" this normally means that the character who is purchasing cannot use it due to lack of strength. If you wish to protect your weaker party members (wizards, thieves) you should make sure that they have sufficient strength to wear heavy armor and use good shields. Okay, you bought your equipment. Maybe each bought the right items at once, but let's distribute anyway. Enter the INN. Click on DISTRIBUTE. You see your party, followed by 0 values for W(eapon), A(rmor) and S(hield). Underneath is a list of items (starting off with weapons), followed by numbers 1 to 6, of which some may be invisible. The clue is, these numbers refer to your party members, and UNUSABLE items will cause the relevant party member number to disappear behind the items' values. (i.e. if a SWORD+1 W 7 is followed by 12 4 6, this means that party members 3 and 5 are unable to use the weapon due to strength limitations). If you click on one of the party members, the top (highlighted) item in the stack will be given to the character in question, and the item's name will disappear from the stack; moving all other items one place up. In this way, you can distribute all your equipment. Anytime you encounter an item you don't need, click on SELL ITEM. Part of the item's gold value will be added to your account, furthermore it will be available in the town's armory for some time. Equipment ready - now you can pay a visit to see how the local Old Mystic estimates your progress; otherwise all there's left to do is read the scrolls you bought. Do this with the USE ITEM menu option. Okay, you're ready to leave town - click on the exit road and move around with either mouse (a drag) or arrow keys (much easier). Using the menu options available, I'm sure you'll find your way around the game. Just one fighting tip: to start, first click on a character, then select an action. When all characters perform their required actions, click on fight - and earn those sorely needed experience points. Have a good time in PHANTASIE, and when you're near the Black Lord, remember (this is the voice of your conscience speaking) this: Honesty is a Virtue; Wealth & Riches are unacceptable Perversions of the Mind. As usual, your Spontaneous Reactions (bribes, questions, review requests, donations, bomb letters, sarcasms, telephone calls, hints, and all those other things I always fill my waste paper basket with) are appreciated by: Lucas van den Berg Marienburgsetraat 47 6511 RL Nijmegen Telephone 080-238586 -- The Netherlands -- One more thing. For those of you missed last issue's Great Admonition concerning convenient times for calling and disastrous results for those who fail to respect my period of rest, Heed My Warning: Thou shallst not awaken thy software's reviewer. Claus Kuch from Stuttgart, Germany failed to comply to this humble request. After he had assembled all the parts that had come in through the mail (in the FREE HARDWARE package from Crimsondeal Inc.) he put the plug in the socket and switched on his beautiful new debugger - only to find out later that the delivered package in fact constituted a heavy-duty 20-pound electro magnet. (But I swear, Your Honor, none of his disks contain a bug anymore!) THE SOLUTION TO INFIDEL by Math Claessens START:(IN TENT) STAND-S(OUTSIDE YOUR TENT)-SW(OUTSIDE SUPPLY TENT)-W(SUPPLY TENT)-GET ALL-E(OUTSIDE SUPPLY TENT)-SE(OUTSIDE WORK TENT)-WAIT-OPEN CRATE-GET BOX-S(WORK TENT)-GET ALL-READ NOTE-DROP NOTE-N(OUTSIDE WORK TENT)-N(FIRE PIT)-GET MATCHBOOK- N(OUTSIDE YOUR TENT)-N(YOUR TENT)-BREAK LOCK WITH AXE-GET LOCK- DROP LOCK-OPEN TRUNK-GET BEEF AND MAP-S(OUTSIDE YOUR TENT)- =W(NEAR THE NILE)-W(RIVER BANK)-DRINK WATER-DRINK WATER-DROP SACK-GET CANTEEN-OPEN CANTEEN-FILL CANTEEN-CLOSE CANTEEN-PUT ALL IN SACK(READ THE TEXT.THAT'S FUN)GET SACK-E (NEAR THE NILE)-SE (FIRE PIT)-SE (SOUTHERN PATH)-E (DESERT)-E (DESERT)-DIG GROUND- DIG GROUND-DIG GROUND-DIG GROUND-DIG GROUND-DROP SACK-DROP SHOVEL-GET MAP-UNFOLD MAP-GET CUBE-PUT CUBE IN HOLE-GET SACK- DOWN (CHAMBER OF RA)-GET ALL-OPEN JAR-WET TORCH WITH LIQUID- DROP SACK-GET MATCHBOOK-OPEN MATCHBOOK-GET A MATCH-LIGHT IT-LIGHT TORCH-DROP MATCH-PUT MATCHBOOK IN SACK-PUT JAR IN SACK-GET SACK- S (SOUTH LANDING)-S (NARROW HALLWAY)-NE (NARROW HALLWAY)-NW (BARGE CHAMBER)-N (CENTER OF BARGE)-DROP SACK-EAT BEEF- GETCANTEEN-OPEN CANTEEN-DRINK WATER-CLOSE CANTEEN-PUT CANTEEN AND MAP IN SACK-GET SACK-E (AFT CABIN)-DOWN (BELOW DECK)-W (WEST END OF HOLD)-EXAMINE SLOT-GET SHIM-DROP SHIM-E (BELOW DECK)-UP (AFT CABIN)-W (CENTER OF BARGE)-GET BEAM (LOOK IF YOU HAVE THE BEAM)- W (FORE CABIN)-GET SCROLL-DROP SACK-PUT SCROLL IN SACK-E (CENTER OF BARGE)-S (BARGE CHAMBER)-E (BARGE CHAMBER)-N (BARGE CHAMBER)- W (BARGE CHAMBER)-N (STEEP PASSAGEWAY)-N-N-N (TEMPLE CHAMBER)- N (INNER CHAMBER)-E (SILVER ROOM)-S (SILVER ALCOVE)-GET SILVER (LOOK IF YOU HAVE THE BEAM.SO NOT ,THEN GO BACK)-N-W-W-S (GOLDEN ALCOVE)-GET GOLD-N-E-S-S-S-S-S-E-S-W-SE-SW-N-N (CHAMBER OF RA)- DROP SACK-PUT SILVER IN SACK-TIE ROPE TO ALTAR-THROW ROPE TO NORTH-GET SACK-CLIMB DOWN ROPE (CIRCULAR ROOM)-DROP SACK-GET CLUSTER-PUT CLUSTER IN SACK-PUSH STATUE-GET HEAD-PUSH STATUE NW- DROP HEAD-SE (CIRCULAR ROOM)-SE (SOUTHEATS HALLWAY)-SE (ROOM OF NEITH)-GET OPAL-NW-NW-NW-GET HEAD-PUSH STATUE SE-AGAIN-DROP HEAD- NW-NW-NW (ROOM OF NEPHTHYS)-GET DIAMOND-SE-SE-SE-GET HEAD-PUSH STATUE NW-PUSH STATUE NE-DROP HEAD-SW-SW-SW (ROOM OF ISIS)-GET EMERALD-NE-NE-PUT ALL CLUSTER IN SACK-NE-GET HEAD-PUSH STATUE SW- AGAIN-DROP HEAD-NE-NE-NE (ROOM OF SELKIS)-GET RUBY-SW-SW-GET SACK-CLIMB ROPE-DROP SACK-WET TORCH WITH LIQUID-GET SACK-W (CUBE)-E (CUBE)-S (CUBE)-DROP SACK-GET SCROLL-READ SCROLL-DROP SCROLL-GET FIRST-DROP IT-(ON THE SCROLL YOU HAVE SEEN WICH BRICK YOU MUST FIRST TAKE OUT)-GET THIRD-DROP IT-GET FIFTH-DROP IT-GET SACK-E (TURNING PASSAGE)-N (TOP OF STAIRWAY)-W (BOTTOM OF STAIRS)-DROP SACK-GET AXE-GET SACK-CHOP PLASTER WITH AXE-W-W-W- PUT BEAM ACROSS NICHESS-STAND ON BEAM-CHOP PLASTER WITH AXE-OPEN DOOR-W (ANTECHAMBER)-GET BEAM-S (ANTECHAMBER)-PUT BEAM IN DOORWAY-OPEN DOOR-W (ANNEX)-DROP SACK-PUT DIAMOND IN FIRST HOLE- PUT RUBY IN SECOND HOLE-PUT EMERALD IN THIRD HOLE-PUT OPAL IN FOURTH HOLE-LIFT SLAB-GET BOOK-GET SACK-E (ANTE CHAMBER)-GET BEAM-N-N-PUT BEAM UNDER LINTEL-CHOP SEAL WITH AXE-OPEN DOOR-N (BURIAL CHAMBER)-E (TREASURY)-DROP SACK-GET GOLDEN CHALICE AND SILVER AND CANTEEN-OPEN CANTEEN-POUR WATER INTO SILVER CHALICE- PUT SILVER CHALICE ON RIGHT-PUT GOLDEN CHALICE ON LEFT-GET SCARAB-WEST (BURIAL CHAMBER)-PUT SCARAB ON SMALL RECESS-PUT BOOK ON LARGE RECESS-TURN NEITH-TURN SELKIS-TURN ISIS-TURN NEPHTHYS- OPEN COVER!!!!!!!!!!!!!!!!!!!!HURAY-HURAY-THE END!!!!!!!!!!!! Greetings to all Atari ST users and to all adventure players! Do you have any questions about an adventure? Then please call me or write to me and I'll see what I can do for you! My address is on the next page. MATH CLAESSENS WAGENAARSTRAAT 58 6164 XM GELEEN (L) THE NETHERLANDS 04494-52532 TOMORROW'S WORLD by Andrew Walker Once again we have found a nice novelette to publish in this issue of ST NEWS. Next time, the last novelette will be published. This one's called "Tomorrow's World", written by Andrew Walker. 1984 by Business Press International, Ltd. De Crecy watched Madame Zsa-Zsa's ample bosom heaving after their exertions. Only a true patriot could make l'amour  so passionately; she could not be an English spy. Suddenly the door burst open and the macho Don Sebastian, Ambassador to King Philip of Spain, strode in holding his weapon. "French whore," the Spaniard declared. "This is how you keep faith with me." His rapier rested upon De Crecy's nipple. "Prepare to die, you cur." Fearlessly, the brave De Crecy awaited the final thrust. INSPIRATION EXHAUSTION ABORT "Oh shit," said Lord Seymore. A monocle fell from his eye. "Ouch," said the gold-rimmed monocle as it hit the floor. The trappings of his ancient peerage surrounded him in the library of the family's medieval mansion: Bookshelves piled high with fusty books; deathwatch beetle tap, tap, tapping overhead; dust collecting on the disc drives, keyboard, and VDU, and even on Seymore himself. Dirty sunbeams oozed through dirty window panes, staining the floor with anaemic light. Seymore had struggled all day dictating another best-seller into his word processor, but the story had gone. His second Nobel prize would have to wait: He could not afford to buy another one at the moment. He glanced outside at the police storming the gates. "Shit," he repeated. He slammed the microphone on to the desk. "Ouch," said the microphone. "Oooh," squealed the masochistic desk with pleasure. Seymore muttered something under his breath about "goddamn intelligent machines". "Curtains," he commanded, and the curtains drew across the window just as one of the policemen mounted the fence and was fried in a laser beam. "Three-D TV," Seymore commanded, swivelling in his chair to face the screen. The picture was fuzzy. He had had to repair it himself, because the rental company was reluctant to lose any more staff. They were still suing him over the last five repair men, who had been disintegrated by his over-zealous bodyguards. The President was speaking. "Furthermore," she said, projecting her voice across the country, "it is my view - and the view of the American people - that this man should not escape punishment lightly, that his advantaged position should not afford him the slightest clemency. Therefore, in accordance with the powers vested in me, I decree that he should spend no less than 25 years in the state penitentiary for the crime of attempting to pervert the course of justice." She paused to allow her audience to stand up and clap and pick each other's pockets. It was election year and the man she was sentencing was a senator on her own staff. He was the vote-saving sacrificial goat. He had originally been convicted of underbribing a public official and sentenced to 50 lashes. Being 93 years old he had died of exposure the moment his shirt was ripped from his back. The public cry of outrage had shaken the foundations of the White House. A presidential aide had gone unpunished: Had his money tipped the scales of justice? Had the President bent the law to suit her own ends? Had his lawyers found a new loophole in the penal system? Rumour abounded. Defeat had previously been inconceivable. She had risen to power with a landslide victory: Mount Rushmore had mysteriously crumbled and her opponent was crushed in the rubble of Washington's left nostril. She was the idol of the American minorities. Her biography showed her to be black, Roman Catholic and of Chinese and Puerto Rican descent, which gave her the backing of 75 precent of the people. Despite this, her position has been threatened by the moral indignation surrounding the senator's indiscretions. The senator was also disliked by her biographer, the influential chief programmer for Robo-of-America, who had designed and still maintained her. Mad Dan the gardener walked rudely between Seymore and the television carrying his blood-stained axe. Tall and gaunt, he spoke to no one but carried out his duties while whistling a tune. He swiped at a fly as he left the room. The fly dodged. "Missed me you old..." Its curse was cut short as it flew into the wall. It picked itself up, dusted itself off, and followed Dan from the room into the large cobweb-ridden hallway. There it ignored Dan and made for the nearest of the mousetraps that littered the floor. The cheese looked good but a mouse beat him to it and pounced. The trap snapped shut. "Ouch," cried the mousetrap. "Aaaagh," screamed the mouse, which otherwise kept its trap shut. The cook rushed from the ktichen, her heart set on the fresh ex- rodent. "Mouseburger and chips for His Lordship's lunch," she chortled, licking her lips enviously. The fly, grateful to her for opening the door, flew into the kitchen. A slab of steaming red meat lay on the window sill, playground for a gang of bluebottles and a million bacteria. "Lord Seymore - enemy of the people!" An instinct that had been burned into his memory flashed before him. His mission: To assassinate Lord Seymore by contaminating his food. The American Nationalist Army of liberation had plotted the mass murder of all imperialist oppressors for 10 years. They had designed the super bluebottle at a cost of several billions, and each one was individually programmed for a specific target. The creature's eyes lit up when he glanced into the corner where the potatoes lay in a pile. A soft, warm pile of doggy-droppings. As he made the approach run his senses were raised to new heights. The excrement's aroma grew, his lust became insatiable, a tidal wave of desire washed over him. INTERRUPT "COME-INTO-MY-PARLOUR" WARNING With a swipe of contempt he brushed aside his logic chips and landed. He could not move. With all his might he tried to lift his feet but not one of them would bulge. Panic seized him, a subconscious awareness of danger. He looked around to cry for help...his friends on the sill. He called out. They did not hear. A fast-rising horizon blotted them from view. This mass that once promised heaven now threatened hell. It swelled before him, putrefying as it did so. And then it was a mountain, towering above him, engulfing him, burying him in an insecticidal tomb. "My God, these fiendish humans," was his final thought. "And now a word from our sponsors," the TV blasted. Ted Teeth, smiling adman, was earning another million plugging the latest microproducts. "Yes, folks, take it from me - it really fools all known insects. Remember the name: Crap-a-Fly, the world's first fly- catching dog turd. Made by Turdomatic Inc., a subsidiary of tonight's sponsors, Robo-of-America." So now what? Should he return to De Crecy's predicament? He shook his head: Not in the mood. What about the children's story he was dabbling with? What was it called? He searched his memory, drumming his fingers on the desk top, sending its insatiable sensors into electro-orgasm. "Susan the Dragon and the Robot Gang-bang," he recalled aloud. It had a certain ring to it. Queen Henry was executing orphans for not writing games programs on their micro computers. Prince Peregrine was playing Dungeons and Dragons with the real thing, while King Twit III was molesting sheep on the croquet lawn. It was rubbish, Seymore knew, but that was what the kids wanted. He just could not conjure up any enthusiasm for it, though. Perhaps tomorrow. "I'm not waiting all day," thought the microphone. and switched itself off. He considered setting the machine on auto. His agent had insisted that he had his brain profile saved on disc. Brain profiles were all the rage. Every cell was copied - the sum total of his thoughts for the rest of his life. The computer could use the disc to generate new ideas, working in parallel on up to four novels, writing in hours what would have taken Seymore a lifetime. Many rejected the whole thing as inhuman, claiming that literature was the last bastion of natural creativity and that it should be defended against the invading automaton hordes. Most writers set them to work and retired to live off the 10 best- sellers a year that they produced. Unscrupulous publishers killed their authors, taking the profit from the obedient, prolific emulators. "It'll guarantee this year's Nobel," Seymore pointed out. But he shook his head. It was too impersonal. He preferred the human touch. "Curtains." Daylight flooded the room, and before Seymore's admiring eyes lay the scene of Death Valley. It was all there: The Tower of London, Buckingham Palace, Ben Nevis, Blackpool's Golden Mine: Most of Britain had been shipped to the States, leaving only Scunthorpe and bits of Manchester behind. Mad Dan walked across the garden cutting grass, short and black as it was. All the time he looked at the sky. The flowers were in midsummer bloom with charred petals on withered stems. The goldfish were sunbathing, or so Seymore thought. Actually they had died from radiation poisoning, which caused them to glow in the dark, a phenomenon that had always puzzled him. Albert was watching the fish: He had nothing better to do. Being Lord Seymore's favourite gnome was no fun; being his only gnome made it unbearable. The others had run off because of the conditions and poor wages. They had gone to work on the Paris Underground, getting jobs as Metrognomes. Albert rolled his trousers down and began defecating flowers. A duck-billed-chicken-rabbit hopped across the garden, its fluffy feathers ruffled by the hot nuclear breeze. It was one of the few Nubreeds still permitted to roam wild. Amateur Genetic Engineering had taken off a big way until the world's governments had banned the disastrous experiments of the less ethically minded participants. The last straw was the nesting of elephant-sparrows, and the terror of the red-admiral- piranha still lived in the memories of the survivors. Seymore himself had built up a large safari park of these quirks of science. His rinocerhorse, resembling the unicorn of legend, had been a great crowd-puller, while around thanksgiving the delicious octopus-turkey sold well to large families who all wanted a leg. "Quack," said the lion-giraffe-duck. Despite government orders, Seymore refused to destroy all his creatures. It bit Albert's head off. "Ouch," cried Albert's head, the cry echoing down the long throat as he slid slowly along. His body squatted above the flowers, nonplussed, wondering where his head had gone. A laser flash caught Seymore's eye. The security team was defending his freedom again. Police Commissioner Macdonald had been converted to a heap of cinders as he dropped over the fence, shotgun in hand. Seymore tut-tutted. All the money in bribes and this was how the likes of Macdonald repaid him. "Damned enemployed scroungers", he cursed. Ever since he had been replaced by Commissioner Macrobot, Macdonald and his men had lain siege to the Seymore estate. Seymore had never understood people's rejection of phased leisure progression. Why work when the government was willing to let you retire and have a machine do your job? He shook his head in wonder. The police no longer had to face day-to-day dangers: No more homicidal maniacs, no more shootouts with liquor-store robbers. Anyway, most of the big-time crooks had robots of their own built to do the jobs for them. Who else was out there? Seymore panned the camera. It was hard to recognize anyone, charred and bloodied as they were from the pounding they were taking fronm the Cybercops. The media where there in force with their autofocus, remote- control cameras, relaying live television pictures and their image-translators that turned the pictures into the written word for the newspapers. Vultures gorged on the carrion of the day's crises. The auto-reporters paid particular attention to the old journalist, who with the ex-cops and others were trying to tear down the fences. Le Blanc was there, the physicist famous for perfecting hand- held laser weapons. Wilson and Tate, the science-fiction writers, had reached the inner perimeter but had fallen into the clutches of the voracious doberman-cockroaches and were quickly being devoured by the seven-feet-wide genetic abominations. The members of the Computer Programmers Union had long since perished in the same way. The defences were gradually being overwhelmed as more of the rioters climbed over the wires, pushing the Cybercops back step by step, drowning them in numbers. The drone of engines caught everyone's attention. The fighting stopped, all eyes cast to the sky. Mad Dan burst into aimless, rabid action. The aeroplane came out of the sun, unmarked and mysterious. As it passed overhead, a single parachute began to descend. a deathly silence fell over the valley. Rioter and Cybercop stood side by side. The chilling thought ran through all minds: "Was it the enemy's super-bacteria? Was this the end of the world?" Lives flashed before eyes. Who would remember them when tomorrow had come? The insignificance of their existence hit them like a slap in the face. How could they start again, afresh? Images of what could have been, what still could be, reflected in the tear- stained mirrors of their eyes, shining through the dim myopia of reality. But it was too late. The package cradled beneath the parachure landed with a thud. Mad Dan ran forward through the concentrated gaze of the onlookers, ripping it open to reveal the coffin-like box within. He prised the lid up and stopped, wide-eyed. She was beautiful: An Amazon. He pulled her from the container and stood her up to admire her full glory. "I'm gonna turn you on, baby," he promised learfully. His hand strayed nervously to her left breast, and with a hasty jab of his finger he flicked the bright red switch on the nipple. She simmered into life, stretching felinely, displaying every elegant sensuous curve. "Hello Big Boy," she oozed, letting rip with a slow, deliberate wink. "Robo-of-America made me yesterday. You can make me today." She was barely able to keep her feet as Dan dragged her home. A wave of relief washed over the rioters. It had not been the super-bacteria after all. When tomorrow came they would still be there. They could build a new tomorrow. Le Blanc started it. He lashed out at the nearest robot with a length of broken gatepost. The victim crumbled to the ground and pandemonium broke out all around. As the blood poured from the shattered skull Le Blanc realised that he had made a mistake. "Ouch," cried the fence as it fell down under the weight of the Artists Against Robots society. Le Blanc's head skimmed across the grass, severed from its shoulders by the slash of a razor- sharp laser, and landed at the feet of a guard-roach. "Gulp. Jummy," said the doberman-cockroach as it licked its lips. The Nuke Warning light suddenly flashed red. Lightning instincts crashed Seymore's fist on the alert button. "Ouch," screamed the button. Sirens wailed, blast-proof shutters clamped down on doors and windows. The Cybercops stopped beating the invaders and retreated to the sasfety of the fallout shelters. The guard-roaches withdrew into the woodwork. The rioters simply stopped, looking for something to fight. Seymore was livid: This was an unscheduled attack and a blatant infringement of the right to riot. Silence fell on the rioters, then death. Through heavily filtered screens Seymore watched the flash of the bomb. Then the crowd outside melted away. "Unemployment Down," cried the headlines. Albert ran blindly for his own shelter, but without a head he bumped into trees, ricocheting like a pinball ubntil at last he fell into the pond. Seymore sadly watched his last gnome turning into jelly in the intense heat. Quite a strange story, don't you think? Next time, we will publish "Ram Space", the last novelette to be published by us. 'Til then! TRAP IN AND TRAP OUT by Ronald van der Kamp How to fiddle with some low-level stuff 1. Introduction You readers, will all have heard by now about TRAPs that are in use on our ST machines. Some of us, Modula programmers, will have wondered what these are used for, because we do not have to know in detail about our traps, the library modules take care of difficult stuff like that. So in this artikel I will explain the use of the traps by our operating system and how you can make your own traps, why you should do it and for what kind of things to use them. 2.Traps and the operating system. Let us take for example the action of writing a string to the midi port. After some searching you will find a procedure 'MIDIWS' in the extended BIOS module (with the name 'XBIOS'). In the definition module the description is "PROCEDURE MIDIWS(VAR string: ARRAY OF BYTE; length: CARDINAL);" so that this action is very simple for us. On another (lower) level we can see what kind of things should be done in the implementation of this call. The manuals tell us that we can write a string to the midi port by doing a trap number 14, function number 12, with the parameters on the stack. But what does this mean? To explain this, I have first to tell you about our CPU , the 68000 and some of its workings. 3. The 68000 and Exception Processing. When you walk undisturbed for 50.000 miles and then suddenly falls into a trap, that is something very exceptional to you. While the CPU is executing instructions, there can come from outside (the I/O chips for instance) an interrupt; an external exception. When a division by zero is attempted (and this is impossible) then an internal generated exception is done. When the instruction the CPU executes is a TRAP instruction, also an internal exception is generated. What the CPU then does is the following (as far as is needed to know at this point): a. the contents of the CPU status register ( 16 bits) is put on the supervisor stack; b. the value of the CPU program counter register (32 bits) is placed on the supervisor stack; c. a memory location is calculated as follows: 128+(trapnumber times 4); so for trap number 11 the address is 172(decimal); d. the CPU goes into supervisor mode (if he was not already) and fetches the address (of 4 bytes length), that stands in the calculated memory position, into the program counter register and start executing the code from this point. By using traps it is possible to write software that will function o.k. with different versions of the TOS. (I know of 4 versions now, but maybe there are more) Although the routines that cater for the traps may be in different places in memory (depending on your TOS version), the address of the start of a traphandler code is always to be found in the same (low) memory location. ( see point c. above) 4. Inheritance of Traps. When the TOS system is booted, the following traps are set and usable: Trap #1 for GEMDOS calls, Trap #2 for GEM/GSX, trap #13 for the BIOS and trap #14 for the XBIOS. These correspond with our TDI library modules with the names GEMDOS,( nothing for #2),BIOS and XBIOS. As soon as a modula program starts, he will find these traps available (he inherits them). As you know, any modula program needs at least one other link file with the name GEMX. (and accessories need a different version of this LNK file). This GEMX module contains the Modula- run-time-system that has some initial actions to perform, before your own code is executed. One of its actions is installing the traps numbers 5 (for IOTRANSFER), number 7 (for TRANSFER) and number 8 for the runtime-errors. (For version 2 of TDI Modula there is an error in the manual; not trap #6 but #5 is used for IOTRANSFER.) So, as long as there are no accessories or other 'concurrent' programs in the machine (as for instance programs in the vertical blank list) that meddle with traps, all goes well. 5.Trap installation and use. Doing a Trap is very simple in principle. Say, want want our own Trap #11 handling. Activating the trap can be done with the statement: "CODE(4E40h + 11);" What we need is also a procedure as: PROCEDURE NewTrap11; BEGIN (* do your trap actions here*) .... CODE(4E73h); (* RTE=ReTurn from Exception*) END NewTrap11; to perform our actions when the trap is activated. Now things become less simple. First we shall want to pass some values to a traphandling procedure, just as you pass values to every normal procedure with a parameter list. The parameter passing as done in the Modula code is not compatible to the mechanism of the exception processing of the CPU. The accepted method for passing values to procedures is by putting them 'on the stack' before the procedure call and have the procedure 'read them from the stack'. The activation of our trap with one parameter of WORD size ( the value 15 in this case) would be done with: SETREG(D7,15)(* with CONST D7=7; according to TDI convention*) CODE(3F07h);(* MOVE.W d7,-(A7) =put word on stack*) CODE(4E4Bh);(* TRAP #11 =do the trap now*) CODE(548Fh);(* ADDQ.L #2,A7 = clean the stack (2bytes=1word)*) This way of passing parameters makes things for the reciever (the traphandling procedure) rather complicated. First of all the traphandler should not have any entry code with him. So use the compiler option (*$P- *) to stop the generating of entry and exit code by the compiler. The procedure header should not have a parameter list, and there should also be no variables declared local within the handler (No VAR statement). Remember that by using the (*$P- *) compiler option, no exit code is generated for the procedure, so the last executed statement should be ( in our case ) a RTE.(and not an RTS (ReTurn from Subroutine) as would be normal.) As told before, the CPU puts itself into supervisor mode when the exception processing is initiated. So from the first statement of the traphandler to the last ( the RTS) the CPU is by default in supervisor mode. In our case this means trouble because the stackpointer register A7 is a little bit 'dual'. When we talk about address register A7 and the CPU is in supervisor mode, the register A7 denotes the Supervisor Stack Pointer, and when in user mode this register A7 contains the User Stack Pointer. When the CPU is in supervisor mode there are privileged instructions like 'MOVE USP,A0' that let you get the value of the User Stack Pointer, while A7 contains the Supervisor Stack pointer. It stands to reason that in user mode you cannot get at the supervisor stack. We have said that it is a nice thing to be able to pass values to the traphandler; values that are 'put on the stack'. Now it is considered a good programming technique not to make any restrictions on the status of the CPU when a trap is initiated. The program that activates the traphandler will normally be in user mode, but it is not right to suppose that it is always the case. So how can the traphandler know in what state the program was that activated him? As told before, when the CPU does an exception processing, the contents of the status register is put on de supervisor stack. And this stack is pointed to by register A7 when the traphandler becomes active. Before we illustrate this article with some lines of Modula statements, a small remark first. In the traphandling procedure there will always be a use of some CPU registers. When we exit the traphandler we should restore the registers to the values they contained when the traphandler was activated. (and also the stackpointers should be set o.k.) 6.How we make a traphandler. First we take care of the saving of used register from the traphandler. We define: TYPE regStack = RECORD heap: ARRAY [0..127] OF ADDRESS; (*stackspace*) SP : ADDRESS (* our own StackPointer*) END; and declare: VAR regSaved : regStack; then there is some initialisation needed: WITH regSaved DO SP := ADR(SP) END; and so our own stack is now ready to be used. The traphandler now starts with: (*$P- *) PROCEDURE NewTrap11; BEGIN (* in super mode*) SETREG(A0,regSaved.SP); (* set our own stackpointer*) CODE(48E0h,047Eh);(* MOVEM.L D5/A1-A6 -(A0) *) (* these registers will be used in this handler *) regSaved := REGISTER(A0); (* set our own stackptr *) Where A0 equals 8 according to the TDI convention of numbering the registers for the REGISTER and SETREG functions. In this way the register contents we are going to destroy, are kept safe by copying them to our own stack, so we are able to reconstruct them later on. We know that there is an exception frame on the supervisor stack. If we define TYPE exceptionFrame = RECORD Stat : statusRegister; PC : ADDRESS END; with TYPE statusRegister = SET OF status; whereby TYPE status = (carry,overflow,zero,negative,extend, r1,r2,r3,i1,i2,i3,r4,r5,supervisor,trace); Further on we declare: VAR toExceptionFrame : POINTER TO exceptionFrame; and now we can get the pointer to the exception frame with: toExceptionFrame := REGISTER (A7); (* A7=15 according to TDI *) If we now ask: IF supervisor IN toExceptionFrame^.stat THEN we know if the function frame, containing the parameters we pass to the traphandler, is on the supervisor stack, or in other words : if the activator was in super mode or user mode and so placed its info on de super- or userstack. If the last statement is true then we perform the actions: CODE(204Fh);(* MOVE.L A7,A0 *) CODE(0D0FCh,TSIZE(exceptionFrame));(* ADDA.W size,A0 *) because the stack grows downward, we add (6 bytes) to the copy of the super stack pointer in CPU register A0. In the other case we can get the function frame more simple: ELSE CODE(4E68h);(* MOVE USP,A0 a priveleged instruction *) END; (*if*) Now we have to save the pointer to the function frame: toFunctionFrame := REGISTER(A0); In our example the function frame is: TYPE functionFrame = RECORD fNr : CARDINAL END; and a declaration of VAR toFunctionFrame : POINTER TO functionFrame; to keep the address of the frame. Now that we have the pointer to the functionFrame we can read our parameters from the function frame with statements like: yyy := toFunctionFrame^.fNr; By having the values of the given parameters to our disposal, all needed actions of the traphandler can be done, but take care not to change A7 (SSP) or USP. Do not suppose there is much space left on either of these two stacks. Every call to a procedure will use up at least 4 bytes on the stack (for the return addres), so do not nest too many calls! You are strongly adviced to take some actions to set all the stacks o.k. before exiting the traphandler (with an RTE instruction). The following path should be taken: in case the function frame is on the supervisor stack, it should be removed and the exception frame should be shifted 'upward' with the needed amount (= the length of the function frame). With a copy of the exception frame available, the actions are simple: declare: VAR savedExcFrame : exceptionFrame; and the stack is cleaned with the statements: If supervisor IN toExceptionFrame^.stat THEN savedExcFrame := toExceptionFrame^; CODE(0DEFCh,TSIZE(functionFrame));(* ADDA.W size,A7 *) toExceptionFrame := REGISTER(A7); toExceptionFrame^ := savedExcFrame; ELSE CODE(4E68h);(* MOVE USP,A0 *) CODE(0D0FCh,TSIZE(functionFrame));(* ADDA.W size,A0 *) CODE(4E60h);(* MOVE.L A0,USP *) END;(*if*) All kind of other actions can be done now, but do not end simply with and RTE; restore first all the registers we had in use. ( see the start of the traphandler) with: SETREG(A0,regSaved.SP); CODE(4CD8h,7E20h);(* MOVEM.L (A0)+,D5/A1-A6 *) savedD5 := REGISTER(D5);(* sorry, next action destroys him*) regSaved.SP := REGISTER(A0); SETREG(D5,savedD5); CODE(4E73h); (* RTE *) END NewTrap11; Do not let your understanding of this piece of code be clouded by the D5 stuff; a habit of the generation of code by the compiler is to use D5 as intermediate for even the most simple assignments. The central point of the code is to fill all registers of the CPU with values they contained when the handling of our trap was started. A copy of these values was stored in our own stack. The stackpointers A7 (SSP) and USP are already earlier cleaned up, so an RTE is possible. 7.The installation of a Trap In the module 'BIOS' we find a procedure to install a trap. Of course, strictly spoken, we can put the adress of our traphandler in the right memory position (172 for Trap #11), but this is very much bad programming practice. Always use a system function call, because you never are sure whether your idea of trapinstallation is what the system itself does. The statement becomes: BIOS.SetException(trap11VectorNr,NewTrap11); whereby CONST trap11VectorNr=43; (* = 172 DIV 4 *) Mostly you will want a construction in which a program is activated at boot-time ( what can be done by putting the .PRG file in the AUTO folder of the boot-disk), then installs the traphandler, and deactivates itself, keeping the code of the traphandler in memory. In this case you must take care of ending the installation program not in the normal way ( that is with a call to the GEMDOS.Term ) but with a call of: GEMDOS.TermRes(numBytes,exitCode) whereby numBytes gives the number of bytes of memory that are kept (should be as much as the program needs for itself) counting from the start of the program code. ExitCode is 0 (zero) for no-error.(otherwise >0) This termination call will deactivate the program and keep the memory block intact by not giving it back to the free memory space. So later programs and data will never overwrite this program code. The reason for using this call is that you must not end up in a situation where the traphandler is noted down as being available, while the code of the traphandler is gone to the dogs. 8. Redefinition of available (system) traps. When you wish to redirect all the output of the printer port to say the Midi port, you will need an own traphandler, that takes the place of the system function GEMDOS.PrnOut. This function is implemented as Trap #1 with function number 5 and the character to print is on the stack ( in a WORD, because the stack serviced by CPU register A7 works in units of WORDs). The program that installs the traphandler has to save the address of the trap number 1 that is already in existence ( the normal system trap). This is done with: oldTrap1 := BIOS.GetException(trap1VectorNr);(* vector=33*) and in the traphandler we do a test after we have found the functionframe: IF toFunctionFrame^.fNr <> 5 THEN (* nothing for me to do *) SETREG(A0,regSaved.SP);(* restore the registers *) CODE(4CD8h,7E20h);(* MOVEM.L (A0)+,D5/A1-A6 *) savedD5 := REGISTER(D5); (* next statement uses D5 *) regSaved.SP := REGISTER(A0);(* set stackpointer back*) SETREG(D5,savedD5); (* D5 got smashed *) SETREG(A0,oldTrap1);(* the normal system trap *) CODE(4ED0h);(* JUMP(A0) *) ELSE ......my trap handling actions Make sure that, when you trap through to the old system trap handler, the whole situation should be restored that was in existence when the traphandler was activated. 9. Conclusion When you want to have some extra built-in functions in your ST so that it looks like an extended TOS is invented, or when you need one or more operating system functions to behave different, you should construct your own traphandler and make a program to install that traphandler in the operating system. There is a listing of a trap test program written in Modula with this article and a ready to run version (=compiled and linked) of the test program will be somewhere on this disk. When you make the traphandler and starts with the rather minimal source code of the test program, it will not be unduly difficult to make a usefull traphandler. The TDI post-mortem debugger is not a useable tool for debugging traphandlers. So build your traphandlers 'bit by bit', otherwise it becomes very frustating to develop this kind of software. (c) Stichting Modula Nederland (april 1987) Bakkersteeg 9 A 2311 RH LEIDEN The Netherlands For the things we have to learn before we can do them, we learn by doing them.  Aristotle  STRENGTH IN FORTH  part two THE GREEK CONNECTION  Last time I left you on the stack, with nothing to do. But we did some arithmetic, remember ? We solved 3 5 + . This time we are going to do some more of that. (That's why I would have left you on the stack anyway !). In FORTH arithmetic is a matter of to stack or not to stack....and numbers of course. It is therefore essential to study thoroughly the stack's magic and FORTH's numbers. NUMBER & BUMPER  Now for the numbers. If you aren't acquainted with the basic (sic !) ins and outs of binary and hexadecimal representation of numbers both inside and outside a computer, I suggest you to buy a book on that stuff. It would be tiresome to get through all that here and now. So I assume at least you know enough, to understand the following explication. A computer does it in binary; all ones and nulls. Thus, computer's maths are in binary as well. Numbers are stored in binary. To store numbers you need some place to store them: locations, memorylocations. A computer can find each location by its address. The smallest piece of memory used to store numbers is called a byte. (Of course you may write, if you think you know better; but it will cost you a life-time working to pay the back-postage ). A byte consists of 8 bits. Each bit can have the value of either 1 or 0. If you should write down all possible combinations of 0's and 1's that fit into a byte, you would have a collection of 256 numbers, ranging from 0 to 255 inclusive.  THE GREAT DECEPTION  Meanwhile, did you notice that a bit can be 0 or 1, i.e positive (= 1), or not-positive (= 0), but NOT NEGATIVE. Handling positive numbers may well be a natural way-of-life for a computer. To handle negative numbers, we need to mislead the computer. We can deceive it by the two's- complement arithmetrick. Now, FORTH is 16-bit oriented. In unsigned 16-bit arithmetic the lowest number you might represent is zero. In binary: 0000000000000000. And the highest appears in binary as 1111111111111111, which is 65535 in decimal. In this constellation there are 65536 numbers. Now watch the trick !! Consider what happens, if I add 1 to the highest number(65535). 1111111111111111 + 0000000000000001  (1)0000000000000000 As I have only 16 bits, the 1 in the 17th place is lost. The remaining 16 bits are stored as the value zero. IF WE ADD A 1 TO A NUMBER AND THE RESULT IS 0, WE THEN CAN EASILY INTERPRET THE ORIGINAL NUMBER (I.E. 1111111111111111) AS THE VALUE -1. In this way the computer is mislead to think 16 positive bits is -1. So, if 16 bits are positive (= TRUE), a number is interpreted as -1. Now it will be clear to you, why in computerlogic TRUE is -1; because all bits are TRUE ! Keep that in mind: 16-bit numbers can be thought of as either signed or unsigned numbers. Signed numbers range from -32768 up to 32767. Unsigned numbers range from 0 up to 65535. All numbers are integers. To learn how to ride on horseback, you have to sit on...and ride. To use FORTH, you need to know how it works, to know how it works you need to use FORTH. We are going to use FORTH, to see if we were right about FORTH's numberhandling. Just enter: -1 {DUP} {.} {U.}  -1 65535OK. Let's trace back and see what happened. 1. -1 TOS 2. DUP (means duplicate value TOS) 3. . (outputs the number TOS) 4. U. (outputs the number TOS). The stack shows: -1 -1 Now {.} removes the value TOS and prints it as a signed number. The stack shows: -1 {U.} removes the value TOS and prints it as a unsigned number. That's where the U stands for: Unsigned. For further elucidations on this subject we need to examine the binary form of -1 and 65535. We can (I can, you can't) achieve our goal by making a new word by defining a colondefinition. The name 'colondefinition' is quite obvious. The first character is a colon. Here it is. : B. BASE C@ 2 BASE C! SWAP U. BASE C! ;  OK. As a colon is a FORTH-word, seperate it by a space from other words. Semi-colon always ends a colondefinition. Perhaps you didn't realize, but all numbers till now were output in decimal base, FORTH's default base. You can easily change that base, simply by storing a new basevalue in the word {BASE}. In the word {B.} that was done through the sequence ..2 BASE C!.. Do it now. 2 {BASE} C!  OK. Now FORTH is in binary base. Again, changing to octal base. 1000 {BASE} C!  OK. Why on earth 1000 ? Because we were in binary and 1000 is eight in binary. Back to decimal again. Well said, but how to type ten in octal ? Believe me, it is 12. So 12 {BASE} C!  OK. The rest of {B.} is set up to return to decimal from binary. There is one word of interest: {SWAP}. {SWAP} exchanges the two top stack values. Type 3 5  OK. The stack shows: 5 3 Type {SWAP}  OK. Type {.}  3OK. It is not much like {.} to print out the second top stack item, so {SWAP} must have exchanged our two little numbers, 5 becoming second and 3 becoming TOS. Let's try {B.} (say bee-dot). (One rainy day I will teach how to define a Dolly-Dot-word, you bet.) Type -1 {DUP} {B.} {.}  1111111111111111 -1OK. Type 65535 {DUP} {B.} {U.}  1111111111111111 65535OK. See, in binary there isn't any difference between -1 and 65535. It is {.} and {U.} that makes a different OUTPUT. And my Greek connection Aristotle proved he was right in what he was saying about learning things by doing them. With {B.} you may examine in which way FORTH stores 16-bit numbers internally. With {.} and {U.} you may have a look at their signed and unsigned visual shapes. (If you own a non-83- standard FORTH, it may be that the stackwidth is not 16-bit, but 32-bit. All what was said and all what is to be said about 16-bit applies equally for the numbers and operators designed for a 32- bit stack. We'll make further remarks on 32-bit stacks in part 3) Most arithmetic in FORTH is very simple. Because you always deal with integers of a fixed range. FORTH supplies sufficient operators to do all sorts of maths. Sometimes you will have to write an operator yourself. I will give examples in this course . There is still more to tell about numbers. But for now the subject is closed. We will examine the operators. All operators to be spoken of in the next few lines, work on 16-bits integers only. Sixteen-bit numbers are referred to as single-length or single-precision numbers. I prefer single-length: short s.l. So we discuss s.l.-operators.  FAMILYPORTRAIT  We've met one member of the clan, {+}. You already know him, so say hello. Let's proceed with {-} (say: minus). Minus acts similar to the tax-official, it subtracts. It takes the two numbers TOS, subtracts and places the result back TOS. Type 345 344 {-} {.}  1OK. Mind, the number to be subtracted must be highest on the stack. Next to Minus is {*} (say: star). Star's job is to multiply the two numbers highest on the stack and place the product back. Pay special attention to Star, because it is likely to produce large numbers, which may exceed the 16-bit range. Type 37 3 {*} {.}  111OK. The fourth clanmember is {/} (say: slash). Slash was born to divide, so he does. Whithout compassion: nothing remains. Enter e.g. 83 4 {/} {.}  20OK. The remainder (3) is lost. Slash' twin brother is {MOD} (say: mod). Mod ignores the quotient and saves the remainder only. So 83 4 {MOD} {.}  3OK. The combination of Slash and Mod gives you and a quotient and a remainder. It is written as {/MOD} and pronounced slashmod. Enter 83 4 {/MOD} {.} {.}  20 3OK . The result is not 20.3 or the like, as {/MOD} puts the quotient and the remainder as two 16-bit numbers on the stack. Star and Slash both have a specialised nephew {2*} and {2/} (say: twostar - twoslash). These are very fast operators. As dividing and multiplying by two are most common in use, FORTH's demand for speed is due to their birth. Mind the difference between 2 {*} and {2*}, as in writing (space), as well as in speed. STARSLASH, THE MENACE  Some lines ago I warned you when you use {*}, to be careful to stay within the sixteen-bit range. Now here I present you the menace of the clan. The next operator isn't quite loyal to the Sixteenbitclan. It has a miscellaneous character. You write it as {*/} and pronounce it as starslash. This is how it acts. Enter please 113 768 {*} 8 {/} {.}  and that's not the right answer. Now enter 113 768 8 {*/} {.}  10973OK. And that's right. What happened ? In the first example the result of 113 768 {*} didn't fit into 16 bits (113 x 768 = 87784). In the second example the result of the multiplication-part of the operator {*/} is as long as 32 bits ! This intermediate result is then divided by 8 and the final result is put TOS as a s.l.-number. (In 32 bits signed numbers can range from -2147483648 to +2147483647 inclusive.) The input on the stack for use by {*/} is always the two numbers to be multiplied first, followed by the divider. Starslash does not supply a remainder, as does {*/MOD}. The latter gives you everything: speed, 32-bits intermediate result, quotient and remainder. I will discuss more fundamental aspects of these two words together with the subject of floating-point and scaling. The family-portrait of our Sixteenbitters shows still some unknown faces. Here are {NEGATE} and {ABS}. They both perform exactly that kind of action, you expect them to do from their name. {NEGATE} changes the sign of a number, {ABS} returns the absolute value of a number. E.g. 18 {NEGATE} {.}  -18OK -18 {NEGATE} {.}  18OK; . -18 {ABS} {.}  18OK 18 {ABS} {.}  18OK. Look carefully at the output of the examples. Two pairs of words seem to be superfluous: {1-} {1+} and {2-} {2+}. You may look upon them in the same way as {2*} and {2/}. They perform very common stackactions and as putting numbers on the stack is somewhat slowing down FORTH's speed (He thinks, though), these words are especially designed for speed. So 1 {+} is slower than {1+}. Not noticeable when the plussing is done one time, but the time- saving aspect of {1+} becomes substantial if the operation has to be carried out thousands and thousands of times. UNSPOKEN  I owe you some explanation. I didn't want to disturb the procedure of what was to be explained about 16-bit numbers too much, so two words were unspoken off: {C@} and {C!} in the definition of {B.}. For now this will do. {C@} extracts a byte value from the word {BASE} and put that value TOS. Which value depends on the numberbase FORTH is working in: a 2 in binary, a 10 in decimal, a 16 in hexadecimal base. {C!} is the opposite of {C@}: it stores a byte-value into a word. So 5 {BASE} {C!} will put the value of 5 into the word {BASE}. The value has to be TOS. I invited you to define the word {B.}. If you accepted my invitation the definition was put in the dictionary. But....if you disconnect the powersupply or reset your machine you'll have to reload FORTH. You will then discover, that our {B.}-word has disappeared from the dictionary. If you want it back, you'll have to define it anew. There is of course a way to preserve self-defined words on disc. Wait for the editor to be explained....... Next time we will discuss the stack's magic. Two spells I gave already: {DUP} and {SWAP}. But there are some more. And we will have a look at FORTH relational and logical operators too....and seeing things double right now ? We will discuss double-length arithmetic as well. Keep smiling !!  SUMMARY  FORTH's arithmetic takes place on the stack. FORTH supplies a lot of arithmetic operators with specific functions. Numbers are 16-bits (or 32-bits) long and integer. Single-length or single- precision arithmetic deals with 16-bits numbers. The s.l. arithmetic operators are designed to work on s.l. numbers exclusively: a list is provided in this part two. In s.l. arithmetic signed numbers range from -32768 to +32767 inclusive. In unsigned form s.l. numbers range from 0 to 65535 inclusive. Exceeding these limits will give unreliable results. All signed numbers are in two's complement form. On 32-bit stacks there is no distinction between single- and double-length numbers. REMEMBER Two's complement - The two's complement of a number is the exact equal absolute value but with opposite sign. Integer - An integer is a number with no fractional parts. E.g. 123, 2, -365 are integers. Numberbase - A number is a complex symbol. In daily life we use decimal base. Ten is the base. To compose a number there are two main points to observe: the value of a figure, and the place of that figure in the number. The place is calculated from right (=0) to left. An example. Number 23456. The 6 has a value of six and place 0. The decimal value of 6 is now 6 * 10^0. Now 10^0=1. So the 6 in place 0 is worth six. As for the 5. The decimal value of the 5 is 5 * 10^1= 5*10=50. The 4: 4*10^2=4*100=400, the 3: 3*10^3=3*1000=3000. In place 0 the basenumber is raised to the power of 0, in place 1 to the power of 1, in place 2 to the power of 2 etc. etc. When you choose another base, the one thing to change in the example above is the 10. E.g. we choose base 8, octal base. The 6 is 6*8^0=6*1=6. The 5: 5*8^1=5*8=40. The 4: 4*8^2=4*64=256 etc. etc. You may change to whatever base you like, the calculation remains the same. The most common bases used are decimal, binary and hexadecimal. Dolly Dots - A worldfamous (in Holland, though) female popgroup. Colondefinition - A colondefinition is the most common way of defining new words. The word {:} always opens the definition, followed by a space and the name of the new word. Then other words follow to define the action of the new word. The last word always is {;}. Aristotle - Greek philosofer (4th cent. b.C.). The quotation is to be found in 'Nicomachean Ethics'. _________________________________________________________________ | word | stackaction | description | |||| | + | (n1\n2 -- sum: n1+n2) | Add | | - | (n1\n2 -- dif: n1-n2) | Subtract | | * | (n1\n2 -- prd: n1*n2) | Multiply | | / | (n1\n2 -- quo: n1/n2) | Divide (integer) | | MOD | (n1\n2 -- remainder ) | Remainder of n1/n2 | | /MOD | (n1\n2 -- rem\quo ) | Leave quotient with | | | | remainder beneath | | */ | (n1\n2\n3 -- n1*n2/n3) | Intermediate product n1*n2| _________________________________________________________________ | word | stacknotation | description | |||| | | | is stored as 32-bit number| | */MOD |(n1\n2\n3 -- rem\n1*n2/n3)| As */ but also leaves | | | | remainder beneath | | NEGATE | (n1 -- -n1) | Change sign | | ABS | (n1 -- |n1|) | Absolute value | | 1+ | (n1 -- n2) | Add 1 to top stack item | | 1- | (n1 -- n2) | Subtract 1 from top stack | | | | item | | 2+ | (n1 -- n2) | Add 2 to top stack item | | 2- | (n1 -- n2) | Subtract 2 from top stack | | | | item | | 2* | (n1 -- n2) | Fast multiply by 2 | | 2/ | (n1 -- n2) | Fast divide by 2 | |________|__________________________|___________________________|  EXTRAS  A very popular word in FORTH is FIG. Although it is a FORTH-word you never will encounter it in a dictionary. It stands for FORTH Interest Group. This group exists to promote interest in and use of FORTH. The parent-group is found in the USA; but almost each country has its own branch. Enquire your computerclub for addresses. I give you only the USA-address: FORTH Interest Group PO Box 1105 San Carlos Ca 94070 U.S.A. And if you write, please enclose a Self Addressed Stamped Envelope (SAE)!!  EXERCISES  1. Put (as many as you like) negative numbers on the stack. Have them output by {B.}. Be sure {B.} is in the dictionary. Mark the state of the 16th bit. Clear the stack with help of {SP!}. Repeat, but this time with positive numbers. Again, mark the state of the 16th bit. What can you tell now about signed numbers regarding the 16th bit ? Explain why that bit is called the sign-bit ! 2. Remember Starslash ? On that subject I gave an example that turned out to give false answers: 113 768 {*} 8 {/}. Rewrite this example to give the right answer, not using {*/}. 3. Rewrite this formula:344 X 105 in R.P.N. in two ways. 35 4. What is the remainder of: 576 X 861  15 5. What is the unsigned equivalent of -986 ? 6. Write the next formula down in such a way, that all operands are on one side and the operators on the other side: (69 + 3) X 5 e.g. 1480 5 3 97 * + / 18 7. {*/MOD} has two 16-bit numbers put on the stack, a quotient and a remainder. Which of them two is the higher on the stack? Use your brains, not the stacknotation ! 8. Subtract: 8 - 4, but don't use {-}. 9. Explain the following stacknotation: (n -- n^2). Here is the word, I wrote. : QUAD DUP * ;. 10. Write your own word of which the stacknotation is (n -- n^3). Next time I'll give the solutions. Till then !!! ST NEWS PD LIBRARY by Richard Karsmakers It has been a period of many launches since we've launched the previous issue of ST NEWS. Many commercial programs, but also superb PD software. I have recently significantly reorganised our PD library, so it's now only possible to order PD on pre-filled disks, as in regular PD libraries. It remain free of additional costs, however. Please refer to the end of this article for more info about ordering and post costs. In the following list of PD software, the following conventions are used with regard to program remarks: Works on Color Monitors Works on Monochrome Monitors * Only works on 1 Megabyte machines Only works on Double sided disk drives Supplied on a protected disk - The Artist V1.1a () A superb monochrome drawing program from master programmer Stefan Posthuma, written in GfA Basic. It enables multiple advanced block operations and many more or less useful options. See our review in ST NEWS Volume 2 Issue 2. - Shiny Bubbles () A very cute demo of animating balls in 3D. It works better on megabyte machines, tough. - Activision ST Demo () In the very beginning of the ST, Activision and Audio Light made a nice ST demo, in which they didn't only advertise for the ST itself, but also for The Music Studio and N-Vision. It features nice music and good graphics. - Paradox ST Demo () This is the demo from ST Karate, Fireblaster, Warzone, Protector and Space Station (slide show), together with a real game called Haunted House. Very nice, and the music is MIDI compatible. The program includes a copier. - ST Forth () A Dutch Forth implementation for the ST, supplied with a Dutch usermanual on disk. For specific info about Forth, please refer to our Forth Course starting in ST NEWS Volume 2 Issue 3. - Randomize Picture Show I () Our friends from the International Cracking Group made this very original slode show with several self-drawn Degas-format pictures. - Compilation disk #1 Music Construction Set (), a sound programming tool. Moving Figures (), a animation design tool by the same guy. Speedwriter V1.0 (), an interactive way of writing letters. Black (), a program that takes care that your screen doesn't burn into your monitor. Fujiboink (), a fantastic bouncing Atari sign demo (!!). SPMod (), the program for the article on speech in ST NEWS Volume 2 Issue 3, also able to speak for itself. - Compilation disk #2 Neofun (), a way to have fun with Neochrome pictures. 512 Colors (), 512 colors at once on the screen. Balldemo (), the notorious bouncing ball demo. Hexacolor (), a demo that displays the ST's color potentials. Lowdemo (), a nice color demo from Sweden. Popcorn (), have you ever seen many bouncing balls? Superbox (), just a nice color demo. Windpic (), enables you to load many pictures in windows. Krabat Schach V1.0b (), very good German chess program. - Puzzle Puzzle () A swell puzzle product from Tommy Software. Try to complete it and you'll know how good it is! - ST NEWS Volume 1 Issues 1-4 () Yes, you read it well! Our old vintage issues have been re-issued (uncensored and with all the old errors still in it). A must for the collector! Not suited for software developers! - ST NEWS Volume 1 Issue 5 () Our fifth issue to be launched in 1986... - ST NEWS Volume 1 Issue 6 () The last word processor issue of ST NEWS, and also the last to be published in 1986. Get the taste of pure good old devotion! - ST NEWS Volume 2 Issue 1 () The first issue using our new setup using GEM, the mouse and Alert boxes. More information then ever, as well as a picture and music! - ST NEWS Volume 2 Issue 2 () The second official ST NEWS issue with the new 'look'. This offers advance WP possibilities as well as built-in copy options. - ST NEWS Volume 2 Issue 3 () Yet another issue of the new ST NEWS, with very surprising news, courses and more. - ST NEWS Volume 1 Issue 4 () After a temporary weakness that manifested itself in the preceding issue, now another high-classed publication again! - ST NEWS Volume 1 Compendium () The most interesting articles from the volume 1 WP-issues brought together in our new, more userfriendly GEM look. Get it and you'll know it! - Synth Sample I () Our first music demo, that also offers some original B/W artwork. - Synth Sample II () The sequal to our Synth Sample I, but this time for color monitors, offering some stunning graphic artwork as well as some new musix (among which is one exclusive own composition). - Synth Sample III () When looked at the graphics side, our best product ever to be launched. Featuring many own compositions (Axel F, Telstar, Biskaya), many new pictures and some Amiga graphics! - Compilation Disk #3 Synth Sample IV () Our second B/W Synth Sample, offering no graphics but superb music (e.g. Popcorn, Beguine, and much more). Piano (), a music making utility - not bad at all! Unix Shell (), a DOS shell accesory. Strings (), a handy utility. Tiny (), a picture crunch-and view utility. ST Splitter (), makes several smaller files from one file. ST Basic->GfA Basic Converter (), a truly extensive tool. Variable Modifier (), a utility for GfA Basic Zarath (), VIP Professional music and intro. - Picworks V1.1 () The most enhanced and extended picture print utility you've ever seen, that enables you to print pictures from all drawing programs known, even on super-large size! - Compilation Disk #4 DrieDim (), a program that allows 3D graphics display. Templemon V1.6 (), the latest version from Thomas Tempelmann's machine language debugger/monitor/hacker. Straight from the Hannover Messe! Floppy Disk Indexer (), THE way to make a software list. Intersect Ramdisk (), a removable RAMdisk as accesory. SpeedTOS (), makes load/save 2 or 3 times faster. Accesory. - The Formula (*) Digidemo 'new style'. Quite an exclusive! - The Fixx (Secret Seperation) (*) The best sound-digi-demo I've ever heard. Though not mixed, it sounds superb! - Matt's Mood (*) The digi-demo that's missing in most PD libraries. But not in ours! - Foreign Affair (from Mike Oldfield) (*) Who doesn't know this demo already? Finally to be ordered free through us! - Oxygene (Jean Michel Jarre Disco Mix) (*) Also a very old digi-demo, now also to be gained through our own PD - free of costs! - Golden Girls () Very naughty (nasty?) picture show. Definately X-Rated, so the software selection doesn't think this one's suitable for kiddos under 18 years of age! - California Beach Girls (*) Extremely beautiful picture show, which does include some nude but is very well programmed as well as very well digitised! See the review in ST NEWS Volume 2 Issue 3. - Smoothtalker Demo () First Byte's revolutionary speech technology demo, which also allows the user to type in own words/numbers. Truly amazing! This demo also works on monochrome, but not perfectly! - Aladin Demo (*) Finally it's there - the demo program from ProfiComp's new MacIntosh enhancer. Very nicely programmed slideshow with amazing text effects! - Goldrunner demo () Microdeal's new shoot-'em-up program demo, featuring excellent music, and superb scrolling/graphics. The music can also be heard on monochrome, but in that case the graphics won't work! Addition on the disk: A disk library program in GfA Basic, for monochrome only. - ST Replay demo () The first half-meg digidemo (also works on 1 Meg). Features a piece of "A-Ha" and Jean Michel Jarre's "Equinoxe". A bit short, though. - Compilation Disk #5 ARC, the file archiver (), a file crunching & archiving tool. Reset Resistant RAMdisk (), including source and documents. Turbo Nibbler (), copy program for protected software. Little Sound Demo (), super duper sound demo from Germany. - Compilation Disk #6 68000 Assembler (), the assembler to be used with the assembly language course from the German magazine "ST Computer". It is supplied with a German user manual on disk. Deluxe Fontmaster (), a superb utility to print out documents using different fonts (that can be made with this program). Allows use of proportional characters as well (German). - MTV Demo (*) A fantastic new digitized sound demo featuring an excerpt from Dire Straits' "Money for Nothing". - The Arkanoid Construction Kit (*) The most original PD programming concept ever seen! Make your own levels for the game "Arkanoid" (which you must have to be able to work with this offering) with this versatile editor. Over 100 ready levels supplied on the disk, the longest scrolling ever seen and a nice music hack makes this PD product stand out amongst others! - Compilation Disk #7 The only program that was supplied on this disk at the moment this issue of ST NEWS was published was "Sound demo", the demo from the winning music program from the "ST Computer" contest. It works only on color monitors. It might very well be that there is more on this disk when you order it - some hot new stuff. Let yourself be surprised! To order any of the above mentioned disks, please send the correct amount of disks in an envelope, together with a return envelope, to: ST NEWS, Kievitstraat 50, 5702 LE, Helmond, The Netherlands. Don't forget to put enough stamps on it (uncorrectly stamped packages, resulting in postage costs for ST NEWS, will not be treated and sent back immediately - unopened) and don't forget to enclose return postage either (according to the following table - see next page): # of disks: Stamps (Holland): Bfr: DM: Engl.Pounds: IRCs: 1 150 Cents 30 2 1 2 2 225 Cents 50 3 1 3 3-8 300 Cents 80 4 1 3 9 375 Cents 100 4 2 4 If you live outside the EEC, please enclose the correct number of International Reply Coupons (IRCs) and add three extra! If you live in Belgium, West Germany or England, it is possible to enclose an amount of money in the envelope, but I'd rather have IRCs! In Holland, enclosing money instead of stamps will also work (although I dont' prefer it to stamps). The above list is for disks with a normal padded envelope included in the weight. If you include money in the package, please be sure to pack it firmly, since it if officially not allowed to send money by mail! Donations may be sent to the PD address, as well as transfered to giro account number 5060326, t.n.v. Richard Karsmakers, Helmond, The Netherlands. Thank you! THE ACC'S READER'S SERVICE by Richard Karsmakers Here you can read all about what you can do with our correspondence address (ST NEWS, Kievitstraat 50, 5702 LE, Helmond, The Netherlands), like sending in articles for use in ST NEWS, remarks, critics, subscribing, ordering Public Domain software, etc. Subscribing to ST NEWS Since ST NEWS Volume 1 Issue 3 was launched, over half a year ago, it is possible to subscribe to ST NEWS. The setup is very simple: You simply send us an empty, formatted, single sided disk, together with enough stamps (or International Reply Coupons if you live outside of Holland) and a note which says "Next ST NEWS". We will then take care that you get any new issue of ST NEWS immediately after its launch. This way, it is possible to get it within two days if you live in Holland or a matter of one or two weeks of you live abroad. You can also order back-issues of ST NEWS (read more about that in the article "How to order back-issues"), with which you must not forget to mention the volume number of the issues you want. Don't close your envelope too tightly, since we must be able to use that same envelope to send the stuff back to you. If you do, however, you can also add an additional envelope in your package. Ordering ST NEWS is free of costs, except for the post and the disks (you simply supply those yourself), but donations are always welcome (my giro account number will undoubtedly be found somewhere in this issue of ST NEWS). Please refer to the article about our PD Library for correct postage quantities for certain numbers of disks to be sent. Please don't add foreign currencies, as it takes quite a lot of trouble to exchange e.g. 2000 lire in a bank here. Remarks, critics, comments, etc. to ST NEWS and/or any of our other products (such as our Synth Samples). Each time we finish an issue of ST NEWS or another product (like Synth Samples), we want to be sure that it answers to as many needs as possible. Therefore, we need to know your needs and opinions about ST NEWS as well as all our other products. One of the main things that was achieved recently through criticism was the fact that ST NEWS was too big in size. You see: We have splitted it into parts so even people with about 160 Kb of free memory can enjoy it. Whatever we do, we try to make you, our readers, as happy and satisfied as possible. If you think we do something wrong, please write to us as soon as possible so we can have a look at a solution or compromise. If you want a personal answer to your remarks or critics, please be sure to add stamps or International Reply Coupons (the latter if you live outside of Holland; please add TWO of those every time you write) in your envelope. GfA Basic problems Since I am currently also working for the "Stichting ST" in Holland for their GfA Basic problems column, as well as the SAG and ST Club Eindhoven, I will hereby offer this same possibility to all readers of ST NEWS. Simply write down your problem (together with programs on disk, if necessary) and send it to our correspondence address. Be sure to add postage (stamps or International Reply Coupons) of course. I will try to solve your problem or I will try to let someone else solve the problem if I wouldn't be able to do it myself (because of a lack of time or a lack of knowledge). Most problems will also be treated in the GfA Basic Tips & Tricks column of ST NEWS as well as that contained in the magazines of the "Stichting ST", the SAG and the ST Club Eindhoven. It might just be nice to know that there's someone out here that will try to help you with any of your problems (that he will surely have had earlier himself in most cases). Sending in articles for use in ST NEWS You'll understand that it is impossible for me to write all articles in ST NEWS by myself; that's where we need you, to send in some articles for use in ST NEWS. Many people have already sent in articles, mostly about subjects that I don't know much about (like machine language, astrology programs, numerological computations, writing your own adventures on the ST and articles about several hardware projects). The conditions for sending in articles are very simple: You just write an article using either "1st Word" or "1st Word Plus", and you send it to us on a single sided disk. Please don't forget to add stamps or International Reply Coupons (the latter if you live outside of Holland) if you want the stuff to be returned to you. Now, what are the things you need to look out for? - All articles have to have a page layout that results in 22 lines per page - You must have used Justify and Word Wrap in WP Mode - You must have used 65 characters per line - You must not use any (conditional or whatever) pagebreaks (or footnotes) - You must write in correct English - You mustn't use super-subscript and other font styles too often; that makes the text a bit 'busy' and 'messy' - If you offer programs/listings on disk, you must refer to them in your article - You mustn't use pictures! This only confines these documents to a certain resolution, which isn't our target - Whenever you mention ST NEWS, write it down in bold and capitals - Watch your English! Plurals are without a comma, so Samples instead of Sample's. And usual, useful, etc. are with one 'l'! Since we have no income of any kind (except for a few donations), we aren't able to pay our writers any amount of money whatsoever. Therefore, writing for ST NEWS is done out of knowledge-sharing reasons instead of writing articles just for the money. On one side, this keeps the articles of true and high quality, but on the other side we feel we have little to offer to our writers. We still hope you'll find it useful to write articles for us, and we are looking forward to hearing from you. Dealer enquiries * Synth Samples Since our Synth Samples tend to be nice to look at and to listen to, they might help selling ST computers in a computer shop. We already have produced some custom versions of our Synth Samples to some well known computer shops in Holland and Germany; these mostly exist of regular Synth Samples with one or two pictures replaced by advertisement artwork (like the shop's logo or so). Please contact us if you're interested in having your own custom Synth Sample (by the way, we only do this with Synth Sample II and our latest offering Synth Sample III). The typical time it'll take when it's ready will be about half a month. But it might be sooner. Just feel free to enquire about this exclusive service, and don't forget to enclose stamps or International Reply Coupons if you want us to answer you properly. Up to a certain limit, we are also able to adapt other dia-shows for your own (commercial) use. Please contact us at our correspondence address. * Commercial software Since we feel we deserve our strength mainly because of the many software reviews of very current software, we think ST NEWS is THE magazine to have your programs reviewed in. People of various software houses have already sent us stuff to review and they all are very satisfied. What about G-Data, Rushware, Golden Games, Commedia, Alphatronic, Psygnosis, Tommy Software, and many others. And we're still negotiating with Starsoft, Boston Computer, Epyx, SubLOGIC, Pharma Data Systems and many others. Good co-operation has thus far resulted in quality reviews of quality software (sometimes, in cases of e.g. "Time Blast" and "Super Huey" less quality software). Just send in some new programs that you think we would be interested in reviewing, and we'll do the rest. If you want us to send the stuff back, please state this clearly and add stamps or International Reply Coupons. We are sure you won't regret sending any reviewing samples to us. * Public Domain software If you think you have written a very nice program, and if you have decided on spreading it through the Public Domain, we may be able to help you spread it. I must say that we are quite tough in our decisions whether a programs is or is not allowed to be included in our PD library. Unlike many PD libraries, we don't want quantity but we want quality. We don't just publish any program that appears in the Freeware circuit, because we don't need to say "we have the largest PD library there is!". You simply send in your programs to us on a single sided disk (we're not yet interested in double sided stuff), together with enough stamps or International Reply Coupons so we can send your disk back to you. Please refer to our article about our PD Library for correct quantities of postage for certain amounts of disks. Since ST NEWS is, above all, a magazine, we can also publish an article about your program, to promote it a bit or to explain what is does or wat it can do (we publish these articles all the time for our own products, like Synth Sample III & IV in this very issue of ST NEWS). Public Domain service We still are the cheapest PD service anywhere in Europe: We still offer our PD free of any charge. You simply supply us with a disk or several disks and enough stamps or International Reply Coupons and we'll do the rest. But read more about this in the article about our "PD Library"! Questions & Answers Since we get more readers by the day, ST NEWS offers a great service to get rid of all your problems and to get answers to all your questions in the "Questions & Answers" column, elsewhere to be found in this issue of ST NEWS. You can ask here whatever you need to know, and non-commercial advertisements are also allowed. We will try to answer your questions ourselves, and if we aren't able to do that we will shake heaven and earth to have someone else do it for us (we have therefore established good contacts with several people who know a lot, like some people at Atari, people at GfA Systemtechnik and all our programmers). Just send your question, written clearly on a piece of paper, to our correspondence address. You'll be able to find the answer(s) in an upcoming issue of ST NEWS, so you don't need to send any postage for the way back in these cases ('cause we don't need to send anything back). Cheapware To support a good initiative from ST Club Eindhoven, we are currently selling Low Price Software (Cheapware) through our service. For prices and conditions, please refer to the review of Low Price Software, elsewhere in this issue of ST NEWS. Any correspondence with the editorial staff of ST NEWS can be done in Dutch, German or English. We are afraid we don't know one word of e.g. French (except for "non" and "jetaime") so we will probably not be able to help you. Best is to write English all the time, except if you live in Holland in which case you might better use Dutch. OUR CORRESPONDENCE ADDRESS by Richard Karsmakers For anything that you think you want to write to us for, you should direct your correspondence, disks, etc. to: ST NEWS Kievitstraat 50 5702 LE Helmond The Netherlands For more information about our Public Domain library, please refer to the article "PD Library"; for more information about the specific services we offer as well as for information with regard to the sending in of articles and programs, please read the article about our reader's service. BOOK REVIEW: DAS GFA BASIC BUCH by Stefan Posthuma A lot of people can write books about GfA, but there is only one who can reveal all the secrets: Frank Ostrowski. (In case you don't know who Frank Ostrowski is, he is the guy who created GfA!) He has written a book, that proves to be a GEM. It costs 89 Dutch guilders and comes with a diskette containing most of the programs of the book. It has a black hardcover and has exactly 288 pages. The book is certainly not a "how to program in GfA" kind of book. If you are not familiar with pointers, varptrs and other more specialized GfA-stuff, this book won't help you any further. But if you are an experienced GfA programmer and want to get the most of it, this book is something you just can't do without! The book is written in German and there is no Dutch version (yet) available. But even I, who used to do all sorts of interesting things (except paying attention) during classes, can read it so it shouldn't be much of a problem. I bought it at The Great SAG Meeting in Amsterdam and it should be in all self-respecting computer stores right now. The book consists of two parts. The first part gives general information. It starts with a chapter about optimising your programs - how to save memory and time. Very interesting here is the Quicksort routine, which I had been looking for a very long time. After this, Mr. Ostrowski tells all about graphics, how to use clipping, how to use BITBLT, and how to use screen-switching to create smooth graphics. After the graphics part, there are some very interesting programs and routines. To name a few: - Screen-dump routine - Directory-routines - How to create .TTP programs - Disk-formatting - Superfast machine-code zoom routine - Recursion - Using other fonts The second part of the book delves really deep into the Operating System of your computer. All GEMDOS, BIOS and XBIOS routines are listed and described. After this, the part about the AES tells you how to use menubars, objects, forms, and all kinds of routines like dragbox, growbox ect. The RecourSCe part tells you all about loading and using Rescources in your GfA programs. This means that you can create Recources with the Recource Construction Set and use them in GfA! Everything is covered, windows, menubars, sliders and dialog boxes. It is completed with a program that uses a custom-desktop with icons, windows and the lot. At the end, all the GEMDOS, BIOS and XBIOS are listed once again with corresponding page numbers for quick reference. Of course they didn't forget to add an index. This book contains a huge source of information for the experienced GfA programmer, and it is well worth the money! I covered this book very globally, because if I wanted to tell you all the things that are in it, I probably needed this entire ST NEWS! THE SOLUTION TO STARTREK - PREVIEW VERSION by Hans and Wicher Gispen After spending 32 full (earth) hours behind the computer we (mostly my brother Hans) can now proudly present our solution to Startrek. First I want to tell you what you can not expect in this article: namely all functions of all instruments and planets. This is why: We calculated that there must be more then 400 different solar systems in Startrek .Most of them you will not need, to solve this weird adventure. For statistics: Hans explored The Quarantine Zone (20 solar systems), the Region Zone (91 solar systems) and a little part of the Local zone (45 from 400/500 solar systems (most without life support)). Well, what can you expect: Two different solutions to Startrek but there are more much more! This solution is complete we will give you the location of objects you will need to purchase to solve Startrek, how to get those objects and eventually some general hints. Oh yes, and finally the very disappointing last scenery. Here we go: General Knowledge about Startrek: The Universe is divided into 3 zones. 1. The Quarantine Zone (20 solar systems) 2. The Region Zone (91 solar systems) 3. The Local Zone (estimated 500 solar systems) Each solar system contains various planets with various functions: Life Support planets are the only planets at which you can beam down. Space Discontinuum planets bring you to a random place in the Universe. If a solar system is under federation government you can repair and tank your ship with the following planets: Weapons Dump : you get 50 torpedoes phaser power is doubled (25% becomes 50%) Repair Drone Dock: repairs damage of your ship Dilithium Mining Complex: warp is restored (100%) Energy Refinery: Impulse+ Energy restored (100%) The other planets (for instance Robot Fortress) with their functions are unfamiliar to us, sorry... 1st Solution: It's your task to destroy the Klingon Primitter. This device is the cause that federation commanders become rebel commanders. Goto Tokan IV 6,10,16 (4th planeth of Tokan) beam down use following people for following obstacles: generator Kirk generator 2 Tsjechov generator 3 Uhura Smelt Gun take it goto Xumiaz (Quarantaine Zone) door Spock door Kirk Helix Gun take it generator Uhura robot Uhura Soma Emitter take it Goto Zornaz (Local Zone) is situated by Diliuz (Reginal Zone) (10,13,20,QZ) Klingon Imperial Guard use Soma Emitter sec Bomb Scotty generator McCoy generator Mc Coy Klingon Primitter Console Use Smeltgun Now the very disappointing end Spock says "Live long and prosperous " then you get a very cheap animation ending with a look at the universe. After spending all that time at this very simple and not worth buying adventure we really felt stupid well at least we solved it. The first solution we had was one where you did not have to go to the Local Zone . The solution was very time intensive and not worth while publicating. You had to destroy 6 I-beam generators with 6 Lepton guns so this takes a well trained player about 45 minutes. Cause the end is the same (grmblll) we'll keep it with the solution above. PS if there is anyone who has a different ending of the game please let us know will you? BBS LIST THE NETHERLANDS by Arjen Lentz This list 1987 by Nederlandse Sysop Vereniging, Postbus 7458, 1007 JL, Amsterdam, The Netherlands. The editor of ST NEWS wishes to extend his gratitude to Joop Stokvis from BBS Waterland who sent it to him! Date: May 4th 1987. ---------------------------------------------------------------------- Legend: [a] 300 BPS [c] 2400 BPS The BBSs in the upper part are [b] 1200 BPS [d] 1200/75 BPS member of the NSV ---------------------------------------------------------------------- BPS: SYSTEM NAME: TELEPHONE: OPEN: NSV SYSOP: NODE: ====================================================================== ab.. AINEX-RBBS 033 -17193 22-08 Arjen Lentz 508/8 .bc. Bamestra_RBBS_1 02998-3602 24 uur Jan Terpstra ab.. Bamestra_RBBS_2 02998-3603 24 uur Jan Terpstra a..d BBC_BBS 015 -145697 24 uur Evert Snel ab.. BBS_The_Future 020 -979405 24 uur Cafka Redactie ab.. BBS_Waterland 02990-40202 24 uur Joop Stokvis a..d BBS_Westfriesland 02290-61369 22-10 Henk Meijen ---------------------------------------------------------------------- BPS: SYSTEM NAME: TELEPHONE: OPEN: NSV SYSOP: NODE: ====================================================================== abcd CHEBULL_1 040 -834001 24 uur Anton van Kimmenade abcd FIDO_HCC_Alkmaar 072 -126783 24 uur Peter van Diepen 500/28 abcd FIDO_HCC_Amsterdam 020 -154154 24 uur Olf van Reijen 500/11 abcd FIDO_HCC_CP/M_gg 074 -423860 24 uur Bert Koopman 500/100 abcd FIDO_HCC_Hoorn 02290-34046 24 uur Frank Bieri 500/20 a..d FIDO_HCC_IBMPC_gg 02286-1421 24 uur Han Halewijn 500/101 abcd FIDO_HCC_Leiden 071 -125125 24 uur Gerard Versteeg 500/15 abcd FIDO_HCC_Zoetermeer 079 -510425 24 uur Reinier de Groot 500/24 abcd FIDO_PHCC-Apeldoorn 055 -421284 24 uur Ignaat Simons 508/4 abcd FIDO_SDG_Gerard_I 04784-2301 24 uur Gerard Snoek 500/203 abcd FIDO_SDG_Gerard_II 04780-80417 24 uur Joop Mellaart 500/206 .bc. INFO_Board 04750-15492 24 uur Alex Bausch ab.d NEABBS 020 -717666 24 uur Max Keizer 508/11 abcd PC_Square 03473-77800 24 uur Rob Hamerlig ab.. T.E.A.B.B.S. 02220-5458 24 uur Piet Raa 508/18 ...d V.O.C._BBS_Data 020 -194334 24-09 Peter Vos ----------------------------------------------------------------------- No members of the NSV, but controlled anyway..... BPS: SYSTEM NAME: TELEPHONE: OPEN: SYSTEM OPERATOR: NODE: ======================================================================= a... BBS_Info_Lijn 010 -452710024 uur Onno Tijdgat .bc. FIDO_ACS_Zoelen 03448-1234 22-09 Hans Kuyt 28/3 abcd FIDO_Ben 03480-21407 24 uur Ben Eliazer 500/200 ab.d FIDO_Eddysoft 01131-2715 24 uur Eddy van Loo 508/2 abcd FIDO_Fred 02968-4927 24 uur Fred van Arkel 500/207 abcd FIDO_Friesland 05130-25641 24 uur Harry Dijkstra 508/9 abcd FIDO_GTH 035 -61643 24 uur Gerard de Haan 508/7 abcd FIDO_HCC_Almelo 05490-62542 24 uur Jan Verschaeren 500/21 abcd FIDO_HCC_Amersfoort 033 -755444 24 uur John Glaser 500/13 abcd FIDO_HCC_Apeldoorn 055 -211811 24 uur Ron Goossen 500/25 a..d FIDO_HCC_Apple_gg 015 -622421 24 uur Jan Willem Oomen 500/107 abcd FIDO_HCC_Arnhem 085 -233377 24 uur Jeanette Kooy 500/17 abcd FIDO_HCC_Commodoregg03404-21728 24 uur Jelle van Douwen 500/108 abcd FIDO_HCC_CP/M_SWBOSS070 -694081 24 uur Dick Spork 500/104 abcd FIDO_HCC_DB 030 -935137 24 uur Jan A. van Gasteren 500/10 abcd FIDO_HCC_Den_Haag 070 -295088 24 uur Ed Hanzon 500/26 abcd FIDO_HCC_Eindhoven 040 -481792 24 uur Hans van Melis 500/14 abcd FIDO_HCC_Emmen 05910-21000 24 uur Jan Leyerweerd 500/31 BPS: SYSTEM NAME: TELEPHONE: OPEN: SYSTEM OPERATOR: NODE: ======================================================================= abcd FIDO_HCC_Genealogieg01651-2849 24 uur Jos Swerts 500/111 abcd FIDO_HCC_Gouda 01820-22314 24 uur Hans Ligthelm 500/30 abcd FIDO_HCC_Groningen 050 -145145 24 uur Frans Hardijzer 500/19 abcd FIDO_HCC_Herpen 04123-2332 24 uur Frans Boeyen 500/27 abcd FIDO_HCC_Hoorn 02290-17748 24 uur Henk de Hen 500/33 abcd FIDO_HCC_Kampen 05202-24380 24 uur Rob van der Broek 500/18 abcd FIDO_HCC_Middelburg 01180-34336 24 uur Jaap Delvoye 500/22 abcd FIDO_HCC_Mill 08859-54500 24 uur Jan Leijerweerd 500/32 a... FIDO_HCC_MSX_gg 020 -982502 24 uur Maciek Kollo 500/102 abcd FIDO_HCC_NL1 08380-37156 24 uur Henk Wevers 500/1 abcd FIDO_HCC_Olivetti_gg079 -517575 24 uur Majel Migo 500/106 a... FIDO_HCC_Rotterdam 010 -484854824 uur Ed Rijnhout 500/29 abcd FIDO_HCC_Rozenburg 01819-18168 24 uur Loek Jansen 500/12 abcd FIDO_HCC_Sharp/MZ_gg03240-38866 24 uur Henk Slegh 500/103 abcd FIDO_HCC_Sittard 04755-2041 24 uur Leo Reijnen 500/16 abcd FIDO_HCC_Utrecht 030 -733908 24 uur Peter van der Post 500/34 abcd FIDO_John 040 -531453 24 uur John Pansters 500/204 ab.d FIDO_MAC_gg 02159-31261 24 uur Bob VetOer 508/5 a..d FIDO_NOS_Hobbyscoop 035 -45395 24 uur Luc Bijleveld 500/202 abcd FIDO_PHCC-G 03462-65395 24 uur Anton Doornenbal 508/1 BPS: SYSTEM NAME: TELEPHONE: OPEN: SYSTEM OPERATOR: NODE: ======================================================================= ab.. FIDO_SAGAnet 020 -924442 24 uur Kees Huyser 508/15 abcd FIDO_Santech 03489-839 24 uur Frans Cieremans 500/205 a... FIDO_SWOE 040 -551887 24 uur Nick Brok 508/10 abcd FIDO_The_Inner_Circl070 -898822 24 uur Frans Hagelaars 508/6 abcd Gaasperdam_RBBS 020 -978493 24 uur Ronald Koridon a..d HUCO_BBS 010 -470847924 uur Peet Scholte ab.. Mello_BBS 050 -270143 22-10 Melle Oudman ab.. RBBS_Oud_West 020 -163499 24 uur John Janssen abcd SAG_BUL 03473-76815 24 uur Casper Jansen ab.. STennis 020 -854900 24 uur Paul Molenaar .bc. VEC_NET 04904-17950 24 uur Henk Verheijen ----------------------------------------------------------------------- ATARI ST MEMORY MAP by Richard Karsmakers I bet you must have seen some memory map somewhere already. But, like most people, you'll probably have thought: "That's no bloody memory map at all!". Especially people who were formerly used to the Commodore 64's programmer's reference guide will surely have been ultimately disappointed when they saw anything of the kind - uptil now. Some time ago I went digging in the ST's operating system, together with Frank. After many, many nights of documenting the ROM (we're still not ready by miles), we think we have now gained some information that we already want to share with you. The memory map that I offer in this article is still not complete - it would take a whole issue of ST NEWS to write all that down if we would have found out all of it. A warning needs to be given before you all start using the given information: With the launch of the new Mega STs, it might very well be possible that the undocumented system variables/addresses will change. So programs that run smoothly on a regular ROM TOS ST, might then not work at all! All numbers in the following table are given in hexadecimal notation. The characters behind the address indicate whether the address contains a byte (.B), word (.W) or longword (.L) value. If an asterisk (*) is added as well, this means that the address mentioned is undocumented - so beware! For more specific information about the addresses, I fear I must direct you to either "ST Intern" or the "Concise Atari ST 68000 Programmer's Reference Guide". Exception vectors $000.L Reset initial SSP value $004.L Reset initial PC address $008.L Bus error $00C.L Address error $010.L Illegal instruction $014.L Division by zero $018.L Chk instruction $01C.L Trapv instruction $020.L Privilege violation $024.L Trace mode $028.L Line 1010 (Line A routine) $02C.L Line 1111 (Used by AES) $030.L Unassigned $034.L Coprocessor protocol violation (for MC68020) $038.L Format error (for MC68020) $03C.L Uninitialised interrupt vector $040.L Unassigned $044.L Unassigned $048.L Unassigned $04C.L Unassigned $050.L Unassigned $054.L Unassigned $058.L Unassigned $05C.L Unassigned $060.L Spurious interrupt (Hacked to level 3) $064.L Interrupt level 1 (Used when user wants Hblanks) $068.L Interrupt level 2 (Hblank sync) $06C.L Interrupt level 3 (Normal processor interrupt level) $070.L Interrupt level 4 (Vblank sync) $074.L Interrupt level 5 $078.L Interrupt level 6 (MK68901 MFP Interrupts) $07C.L Interrupt level 7 (NMI) $080.L Trap #0 $084.L Trap #1 (GEMDOS interface calls) $088.L Trap #2 (Extended DOS calls) $08C.L Trap #3 $090.L Trap #4 $094.L Trap #5 $098.L Trap #6 $09C.L Trap #7 $0A0.L Trap #8 $0A4.L Trap #9 $0A8.L Trap #10 $0AC.L Trap #11 $0B0.L Trap #12 $0B4.L Trap #13 (BIOS interface calls) $0B8.L Trap #14 (XBIOS interface calls) $0BC.L Trap #15 $0C0-$0FF Unassigned MFP hardware bound interrupt vectors $100.L Parallel port interrupt_0 (Centronics Busy) $104.L RS232 carrier detect (dcd) interrupt_1 $108.L RS232 clear to send (cts) interrupt_2 $10C.L Graphics blt done interrupt_3 $110.L RS232 baud rate generator (Timer D) $114.L 200 Hz system clock (Timer C) $118.L Keyboard/MIDI (6850) interrupt_4 $11C.L Polled fdc/_hdc interrupt_5 $120.L Horizontal blank counter (Timer C) $124.L RS232 transmit error interrupt $128.L RS232 transmit buffer empty interrupt $12C.L RS232 receive error interrupt $130.L RS232 receive buffer full interrupt $134.L User/application (Timer A) $138.L RS232 ring indicator interrupt_6 $13C.L Polled monochrome detect interrupt_7 $140-$1FF Unassigned Application interrupts $200-$37F Reserved for Other Equipment Manufacturers (OEMs) Processor state (Post mortem dump area) $380.L Proc_lives $384.L Proc_regs (saved D0) $388.L Proc_regs (saved D1) $38C.L Proc_regs (saved D2) $390.L Proc_regs (saved D3) $394.L Proc_regs (saved D4) $398.L Proc_regs (saved D5) $39C.L Proc_regs (saved D6) $3A0.L Proc_regs (saved D7) $3A4.L Proc_regs (saved A0) $3A8.L Proc_regs (saved A1) $3AC.L Proc_regs (saved A2) $3B0.L Proc_regs (saved A3) $3B4.L Proc_regs (saved A4) $3B8.L Proc_regs (saved A5) $3BC.L Proc_regs (saved A6) $3C0.L Proc_regs (saved A7_ssp) $3C4.L Proc_pc $3C8.L Proc_usp $3CC.W Proc_stk (total of 16 words) $3CE.W Proc_stk $3D0.W Proc_stk $3D2.W Proc_stk $3D4.W Proc_stk $3D6.W Proc_stk $3D8.W Proc_stk $3DA.W Proc_stk $3DC.W Proc_stk $3DE.W Proc_stk $3E0.W Proc_stk $3E2.W Proc_stk $3E4.W Proc_stk $3E6.W Proc_stk $3E8.W Proc_stk $3EA.W Proc_stk $3EC-$3FF Unassigned System Variables $400.L Etv_timer (Timer handoff) $404.L Etv_critic (Critical error handoff vector) $408.L Etv_term (Process terminate handoff vector) $40C.L Etv_xtra (Space for additional GEM vectors) $410.L Etv_xtra $414.L Etv_xtra $418.L Etv_xtra $41C.L Etv_xtra $420.L Memvalid (Cold start OK if #$752019F3) $424.B Memcntlr (Memory controller low nibble) $425.B Unassigned $426.L Resvalid (#$31415926 to jump through 'resvector') $42A.L Resvector (System reset bailout vector) $42E.L Phystop (Physical RAM top) $432.L _Membot (Available memory bottom) $436.L _Memtop (Available memory top) $43A.L Memval2 (#$237698AA) $43E.W Flock (Floppy FIFO lock variable) $440.W Seekrate (Floppy seekrate) $442.W _Timr_ms (System timer calibration) $446.W _Fverify (Floppy verify flag) $448.W Palmode $44A.B Desfshftmd (Default video res if monitor changed) $44B.B Unassigned $44C.B Sshiftmd (Shadow shiftmode hardware register) $44D.B Unassigned $44E.L _V_bas_ad (Screen memory base pointer) $452.W Vblsem (Vertical blank mutual exclusionm semaphore) $454.W Nvbls (No. of longwords 'vblqueue' points to) $456.L _Vblqueue (Vblank handler pointer to pointers) $45A.L Colorptr $45E.L Screenpt (Screen base next vbl pointer) $462.L _vbclock (Vertical blank interrupt count) $466.L _Frclock (Count vblank interrupts not vblsem'd) $46A.L Hdv_init (Hard disk intitialise vector) $46E.L Swv_vec (Monitor changed vector) $472.L Hdv_bpb (Hard disk vector to return BPB) $476.L Hdv_rw (Hard disk vector to read/write) $47A.L Hdv_boot (Hard disk boot routine vector) $47E.L Hdv_mediach (Disk media change routine vector) $482.W _Cmdload $484.B Conterm (Console sys) $485.B Unassigned $486.L Trp14ret (Saved Trap #14 return address) $48A.L Criticret (Saved return address for Etv_critic) $48E.L Themd (GEMDOS memory descriptors) (M_link) $492.L Themd (M_start) $496.L Themd (M_length) $49A.L Themd (M_own) $49E.L _Md $4A2.L Savptr (BIOS register save area pointer) $4A6.W _Nflops (Number of floppies attached) $4A8.L Con_state (State of Conout() parser) $4AC.W Save_row (Save row# for x-y addressing) $4AE.L Save_contxt (Pointer to saved processor context) $4B2.L _Bufl (Data sector buffer) $4B6.L _Bufl (FAT and DIR sectors buffer) $4BA.L _Hz_200 (Raw 200 Hz timer tick) $4BE.L The_env (Default environment string) $4C2.L _Drvbits (32 bit vector of live block devices) $4C6.L Dskbufp (Pointer to common disk buffer - 1 Kb) $4CA.L _Autopath (Pointer to autoexec path) $4CE.L _Vbl_list (A total of 8 longwords that are executed at every vertical blank) $4D2.L _Vbl_list $4D6.L _Vbl_list $4DA.L _Vbl_list $4DE.L _Vbl_list $4E2.L _Vbl_list $4E6.L _Vbl_list $4EA.L _Vbl_list $4EE.W _Prt_cnt (Print counter, intially -1, ALT-HELP inc) $4F0.W _Prtabt (Printer abort flag) $4F2.L _Sysbase (Base of OS pointer) $4F6.L _Shell_p (Global shell info pointer) $4FA.L End_os (Pointer to end of OS memory usage) $4FE.L Exec_os (Pointer to shell addr. to exec on startup) $502.L* Hardcopy (Hardcopy routine vector) $506.L* Listin (Parallel port status routine) $50A.L* Lstout (Output character to parallel port routine) $50E.L* Auxostat (RS232 output status routine) $512.L* Auxout (RS232 output routine) $516-$83F Unassigned Other more or less useful addresses $840 * Pathname buffer (e.g. PATH= A:\) $93A.L* Return address for Auto files $93E.L* Pathname address (\AUTO\*.PRG) $942.L* Filename address (\*.PRG) $946.L* DMA address $964 * Filename in autofolder buffer (e.g. NAME.PRG) $972 * Whole name buffer (e.g. \AUTO\NAME.PRG) Memory address that are used by the OS hardcopy routine $992.L* Buffer for '_V_bas_ad' when hardcopy $996.W* Offset $998.W* Screen width $99A.W* Screen height $99C.W* Left $99E.W* Right $9A0.W* Buffer for 'sshiftmd' $9A2.W* Quality mode $9A4.L* Color palette address $9A8.W* Printer table $9AA.W* Parallel/serial flag $9AC.W* Mask pointer Memory addresses that are used by the floppies $9B0.W* Retrycnt (Retry count) $9B2.W* Write Protect status $9B4.W* Cdev ('wplatch'?) $9C6 * Sector number $9CC.B* CDMA (DMA buffer for bad sector list) $9CD.B* DMA high $9CE.B* DMA mid $9CF.B* DMA low $A06 * DSB Drive A Buffers $A0E * RS232 Input buffer $B0E * RS232 Output buffer $C0E * Keyboard buffer $D0E * MIDI buffer $DCC * Keyboard/MIDI table $E28 * Mouse buffer Addresses that are used by XBIOS function 32, 'Dosound' $E44.L* Music data pointer $E48.L* Temporary storage register Miscellaneous other addresses $167A-$1879* Sector buffer (Boot sector) $29B4.L* Max access time *20 ms $5220 * Directory buffer THE PCM SHOW by Richard Karsmakers It must have been around 9 o'clock in the morning of that sunny Saturday, May 23rd 1987. The day before I had called Adrie van de Weijden and he had agreed to bring Frank and myself to Utrecht to visit the PCM (Personal Computer Magazine) Show. On that Saturday morning I was far, far away in dreamland when suddenly the doorbell rang. I woke up. Hadn't I told Adrie to fetch me at 10? I knew I had, but when I opened the door with sleep-drenched eyes (still wearing my pyjamas) I vaguely recognized Adrie smiling and saying "I just thought to get up a bit more on time". Grrmblbl. I could have lynched the guy. I directed him to Frank (who appeared to be up already) so I could at least wash myself a bit before we had to be representable on the PCM show. At about 10 minutes past nine he was at my doorstep again. Lucky enough I was ready, so we jumped in his car (small but quite fast) and arrived at Utrecht at about 10.10 AM. As usual, the show was quite big - it took up about two halls of the Jaarbeurshal. Most companies represented there turned out to be manufacturers of PC clones, but there were some interesting stands as well - like the one from Atari and the one from PDS. Atari had their PC on display (it was said that it was the only working version currently ready in the world) which showed impressive graphics as well as some MEGA ST4s. Some of the guys of ST Club Eindhoven were working for Atari Benelux there, and lucky Arjan Pot was demonstrating the memory size of one of the Mega STs when we dropped in. Ouch. A little less than 4000 Kb free. I thought my teeth fillings were dropping out but then I remembered that I didn't have any. Hubert van Mil, the 'big boss' of ST CLub Eindhoven, was demonstrating a 15.000 Dutch guilders Laserprinter with "Publishing Partner". I must say the printout quality is extremely good (I dare say even better than all I'd seen from "Signum"). But it should be - the price is accordingly. But Atari also demonstrated their own (<3000 Dutch guilders) laser printer which displayed equal quality so it seemed. Frank, Adrie and myself then went strolling through the show. The most interesting stand of all (except that from Atari, of course) probably was that of PDS (Pharma Data Systems). The marketing director of the English company Eidersoft was there, demonstrating "Pro Sprite Editor" and "Pro Sound Designer". We were very impressed by the latter program, which we will now also buy (review in the next issue of ST NEWS if all goes well). It comprised a hardware add-on to sample sounds and play them again through your amplifier as well as a piece of super-userfriendly software that not only allowed editing, sequencing and mixing of digitized sounds, but also the creation of standard soundchip sounds using the XBIOS 32 format (see the previous issue of ST NEWS for more information about the XBIOS function #32). And the price: 199 Dutch guilders, all in! The only thing you will probably need to buy as well if you want even more excellent quality is a 15 extension for enabling sound to be heard through your amp as well. The rest of the whole show was quite lousy. Commodore stole the show by not being present and I met some weird people (Amiga 2000 owners for example). The food was hellish expensive there (a piece of bread with something on it costed a massive 3 Guilders for which you can buy a whole bag of bread in your local shop) as well. After the show, we went girl-looking at the nearby shopping centre "Hoog Catharijne" and also tried to find "68000'er" magazine in which ST NEWS was mentioned so we heard. We didn't succeed. At around 17.00 hours we were back down in Helmond, dreaming of that superb sound designer that we would soon have.... THE SAG DAY, APRIL 25TH 1987 door Richard Karsmakers It was a warm Friday afternoon when I left Amsterdam central station with my sleeping bag, toothbrush and airmatras. The sun was shining terribly hard and on the square a band stood playing music, which didn't sound bad at all. The heavily bearded (ZZ-Top like) guitarist/singer tried to bring some happyness in the atmosphere, which seemed to be necessary. I started my quest for tram 9. Lucky enough it wasn't difficult to find it - and I even succeeded in asking the driver with my soft 'g' where I should have to get out. "Kruislaan", was the answer of the man who probably recognized a non-hostile but quite backward guy from the Southern Netherlands in me. And after about half an hour's trip in the bleedin' hot tram I put my feet on the ground again - in the Kruislaan. "Entrance Jaap Eden Icetrack/Eden Hall" I read on a large sign on the corner of the street, so I decided to follow the arrow that was also drawn on it (not the grafitti stuff, but the real one). That way I came at the Jaap Eden Hall (the place where the SAG day would be held the day after) cheerfully but dead-tired (yes, computer freaks most of the time have a non-too-good condition and I fear I'm not quite an exception to that rule) at three minutes past four. Inside, some large lamps lighted the hall and it was deliciously cool inside, especially when comparison was made with the subtropical temperatures outside. The only people present were the SAG boss, someone of the Jaap Eden Hall and some people that were building up an impressive stand for Cafka/Soft ST. I faintly seemed to remember the words of ST Club Eindhoven's cordinator, Hubert van Mil, which sounded like something in the range of "We'll be there at four o'clock!". And, stupid me, I had been afraid that I would be late and now there wasn't even a soul present from them! But my worries (Car in the ditch? Cordinator arrested for ridiculous appearance? Arjan (the club's PD man) caught for smuggling PD to 'above the rivers'?) turned out to be nothing more but phantasies - at somewhat about five Arjan dropped in in a car loaded to its full extend in which also (yes, miracles don't only happen at Lourdes!) Wicher Gispen had find some space to be transported in. After a very interesting chat with the SAG boss and a role of biscuit (which seemes to be indigestable so I could make up from some of Arjan's remarks - too bad, but now Wicher and yours truly simply has some more of them) we started discharging the poor axles of Arjan's vehicle. When this quest had finally taken place, the next load came driving in: Eric Wisselo (ST Club Eindhoven's hardware man) with another helper also called Erik in a kind of busted 'camper' that was filled to its very brim with computer hardware, new Clipboards (the magazine that is published every month by ST Club Eindhoven) and much, much more. Our stand was beginning to look like the chaos we were used to when Hubert, our dearly beloved cordinator, dropped in together with Stefan Posthuma and another helping hand called Pieter in a rented Passat. Yes, our Hubert always knows how to arrange work-consuming events so that they have already taken place when he finally shows up. He seemed to have made a non-voluntary sight-seeing tour through the whole of Amsterdam (what do you want: "Behind the Ajax stadium" can be interpreted in quite some different ways). When his car was also unloaded, Arjan and yours truly were sent on a pilgrimage to arrange refreshments for the crowd - fish and chips to be more specific. Arjan also knew how to show me some very interesting spots in beautiful Amsterdam and the adjacent countryside - the Bijlmer (prison), Amstel station and further southward (I already thought to see the Eiffel Tower but this might have been my vivid imagination) - before it finally dawned upon his computerized mind that the fish & chips store was a good 200 metres distance from the Hall. A bit later than expected we came back to the hungry herd of ST users that were already dripping from the corners of their mouths when the first smell of chips and drinks reached the labyrinths of their inner nostrils. They immediately and violantly attacked us and that's how we got rid of all food in nanoseconds of time. Arjan and myself were lucky to keep something ourselves. After this 'meal' and several bottles of Dr. Pepper, Coke and apple juice we started with the actual preparations for the next day. Stefan started assembling packages and copying disks for the next day's selling of his new offering "The ArtiST+", Hubert installed his CD player (to start torturing us with music from Kate Bush, Wham and Micheal McDonald), Eric Wisselo built up his demonstration ST configuration (with hard disk) that would on the next day only be used for entertaining little sniffery noses with "Strikey", Arjan copied like he was haunted by the chief of Evil himself so he could sell quite some PD the next day, Pieter and Erik started building the weirdest obstacles, Wicher started helping the SAG boss on some nerve-wrecking job and yours truly all the time tried to insert proper music (like the one from Jean Michel Jarre) in Hubert's CD player on every possible unguarded moment. Around 10 o'clock we started wondering where the "Strike- a-Light" group (Robert Heessels and Roland & Eerk Hofmeester) stayed, while eating the first crisps and drink-nuts (that's - probably bad - English for the nuts in tasty shells that you tend to eat when drinking something). "Oh," assured Hubert, "they will turn up any moment now!". All well - at around midnight they did arrive, after a non-voluntary and random sight-seeing tour through Amsterdam as well. Their arrival revealed itself to us when we suddenly heard loud banging on the metal doors of the hall. No panic (just like "The Hitchhiker's Guide to the Galaxy") - some generous soul succeeded in showing them in. Around one o'clock it became time to start looking for a place to sleep. Lucky enough I had already inflated my airbed in radiating enthusiasm some hours ago - I wouldn't have to do that anymore so that I could lay down peacefully in the catacombs of the hall. Nice, sleeping in my sleeping bag, dreaming about the ST version of "Defender of the Crown" and good figures for chemistry. But alas! Ridges in my airbed, cushions forgotten and some strange noises from the hall kept me from closing a single eye. Eric was currently copying disks using FCopy, which caused a hihg-volumed and very irritating beep every time the disk had to be swapped since he had the nerve to hook up his installation on a heavy duty amplifier. Some bad CD music also entered the voids in my mind while I was trying to get a decent night's rest. When Pieter and Stefan finally had gone to sleep, I decided to go to hell with all biology laws and stood up. Back in the hall, I found that the lights were dimmed - this created a very special atmosphere. Sleep really started intoxicating me from then on. Hubert and the others by that time also decided to go to bed by three o'clock and there I was - alone with only the heavily programming "Strike-a-Light" group present. Roland, after half an hour, also decided to go to sleep in Robert's Simca (that has not been disapproved of by insurance policies due to reasons seeming quite miraculous to me). "Not a bad idea at all," I said to myself, "that sounds well - and, above all, silent". So I also went to the parking lot and I positioned myself in the driver's seat (quite uncomfortable for my feet, I can assure), next to Roland. I simply adored the silence out there. The airconditioning of the hall now and then started buzzing but that was no bother at all. The only light that could be seen was that of twinkling stars high above our sleepy heads. I was just trying to close my eyes for the Xth time when I suddenly heard a sound that would have made maximum-volumed CD music sound like the most perfect silence obtainable. I startled. An attempt at our lives? Doomsday? The ultimate Armageddon of the whole civilized world? Was there a junk trying to fight his way into the car by means of a chainsaw that just caught cold, trying to steal the car radio (that wasn't even present)? But I soon found out the real reason - it was but a peacefully snoring Roland. Gone was the silence. Everything that might have been described as the beginning of my own peaceful sleep was suddenly interrupted by sudden dive bombers flying through the front window, the violations of all known nuclear laws and other sounds that are generally refered to as belonging to the same family as those sounds I mentioned before. Strange - these sounds all displayed a striking resemblance to the sound that filled the car until six o'clock in the morning. When we left our 'sleeping' place at around that time, we had to move heaven and earth to get in. Nobody noticed our wild banging on the same metal doors that were molested six hours earlier, until Robert (who looked quite sleepy) opened the door and showed us in. He and Eerk decided to turn in for a while when Roland and yours truly went to the toilets to relieve our teeth of unnecessary balast and wash away our nightly traumas. Now, the activities really started breakin' loose. Around 7 AM quite some standholders had arrived that now feverishly started making the wooden tables look representable. Not after too long a time, Frank Lemmen and Adrie van der Weijden (everyone knows Frank, of course, but Adrie is the video-digitizing freak from ST Club Eindhoven) dropped in as well, together with a wagonload of computer hardware amongst which my ST as well as my dear old '64 were situated (that 64 would cause the strangest reactions during the day, from pure raw violence to well-meant interest in 'this new ST coprocessor'). Tako Jan Goossen dropped in a bit later, who was accompanied by Coert Kea and Guus Surtel (all members of the 'board of directors' from ST Club Einhoven, except for good old Guus), and Harry Niens completed the gang as the last man. As far as we were concerned, the doors could now burst open for the activities of the day. This happened at 09.30 hours and from that moment on, Hubert was everywhere and nowhere (that's what he tended to call "active promotion"). Adrie started demonstrating his video-digitizing capabilities, Coert started retailing Clipboards, Frank started messing with MIDI, Stefan began to sell "The ArtiST+" like his very life depended on it, Eric built up a kind of hardware service (it's amazing to see how many people insert their TOS ROMs the wrong way around) and the complete "Strike-a-Light" group zealously started disposing "Strikey" and their new offering "Picworks V2.0". Yours truly started conjuring a bit with ST NEWS, bit this altogether didn't prove to be much of a crowd-puller (quite understandable). That's why I booted up the "Goldrunner" demo and left my space to have a stroll around the building to see what was happening elsewhere. Soon I discovered that Frank Ostrowski's book "GfA Basic" was being sold, so I could soon afterwards call a copy of that book mine (a review of this phantastic book may be found elsewhere in this issue of ST NEWS). "Bits & Chips" sold "Goldrunner" (they had but one copy, which was sold at around 14.00 hours) and "Flightsimulator II" was also sold somewhere (an impressive product that might turn out to satisfy frustrated monochrome users for a while longer - it worked on color-as well as monochrome monitors). Compudress was offering Data Becker books at discount prices (sitting opposite to Data Becker Holland) and there wasn't much more to see. Just opposite Stefan and yours truly, an impressive MIDI demonstration was set up, which caused Frank to demonstrate "Star Trek" as soon as he could. Almost deadly became the initiative of one of us to mount some empty "Strikey"-and "ArtiST+" packages on the obstacles that were made the evening before and that were now placed on top of the tables. Innocent visitors frequently almost became victim of the packages that started falling down as the temperature rose, missing some people's heads by only fractions of an inch. Around noon it must have been terribly hot outside. The temperature in the hall was surely bearable, but suddenly all visitors turned out to be wearing Hawaiian shirts, shorts and sandals (with the Zandvoort beach under their toenails). When the doors shut at around 16.00, it turned out that these doors had been passed by a bit less than 4000 people, that had taken care of reasonable sales. The computers were again put in their packings and the stands were being dissectioned again. Adrie and Frank left quite soon, and they had to miss an exclusive meal offered by the SAG (French fries with croquet or some 'thing' with fish). The fries were eatable, but the rest definately wasn't. Lucky enough, so Take Jan found out, the dog that tended to roam in the restaurant did like the food. Have you ever seen a 6 feet high dog jump just as high to snap half a 'thing' from the air? I bet Arjan's still wet from it! After this delicious dinner (at least for the dog is appeared to be something like that - it will now have to follow a bread-diet for some weeks) we all made for home. I had the honour to travel home with Guus, Coert and Tako (in the latter's car). Here and there braking where he suspected a copper, he drove us all home with reasonable speed - he dropped me off at my humble residence at around 22.30 hours. The hardware was unloaded and put in the hall - next day that stuff would have to go up but now I only thought of one thing: Sleeping on a normal bed, with cushion, without FCopy beep, without CD music and without the music from "Strikey". And most of all: Without noisy chainsaw massacres! LOW PRICE SOFTWARE by Richard Karsmakers In the previous issue of ST NEWS, you could already read something about a new and quite revolutionary initiative that had been launched by ST Club Eindhoven - selling software at prices between PD and commercial software called "Low Price Software". In this article I want to review the two programs that can currently be obtained, but first I want to display a list of software that will shortly be available through this initiative (the programs can also be bought through ST NEWS): Number: Name: Price: Availability: LP 1 Picworks 2.0 79,95 (65,-) Medio June LP 2 Strikey 49,95 (39,95) Directly LP 3 Strike Adres 49,95 (39,95) Medio June LP 4 The ArtiST+ 79,95 (65,-) Directly The prices between brackets are for members of ST Club Eindhoven. If they want to order any of the programs, they should specify that they are a member and supply their member number. The prices are given in Dutch guilders. The programs can be ordered by transfering the requested amount onto giro account number 5060326, t.n.v. Richard Karsmakers, Helmond, The Netherlands. All prices are including post & packaging worldwide. You will have the packages delivered to your home as soon as possible! Let's go on with the reviews I promised. First: "Strikey". In the "ST Software News" article of last time's issue of ST NEWS, one could already read a preview of this program in which I have been a bit harsh. The "Strike-a-Light" guys immediately thought: "Shit! We will have to build in a few improvements!". So they did. The new version of "Strikey", which can be recognized by the fact that you need not put the mouse in the upper lefthand corner of the screen at the beginning anymore, is much better. The first level has been changed (this due to problems that might have arisen when the original - very "PacMan"-like - would have been sold worldwide) and the overall graphics have been made much better as well. The joystick movements still have to be gotten used to, but are much better now. The irritating high tone that used to reveal itself when the ghosties were about to get normal again has been replaced by a more decent sound and some of the old bugs have been removed as well. Now, it can be called a very addictive game, especially if you have always been a kind of a "PacMan" freak. Especially when compared with the price, this game can really make it throughout Europe - and perhaps throughout the world with the help of ST NEWS). Now, let's go on with "The ArtiST+" of my good old pal Stefan Posthuma. He already wrote "The ArtiST", a drawing program for monochrome monitors that is currently available through many Public Domain libraries (also through ours). But he has recently launched a far more enhanced version, called "The ArtiST+". It still works only on monochrome monitors, but it offers some stunning features: - A maximum of 15 workscreens - Circle, draw, box, etc. in zoom mode - Several zoom levels - Fast drawing functions The whole program is written in GfA Basic and is totally GEM controlled. It only works on machines with one Megabyte of memory, but that's about the only limitation. Working with the program is very easy, though you indeed have to get used to the menu operations if you've previously worked with e.g. "Degas (Elite)" or "MonoSTar(+)". The block options are very extensive indeed as well. Sinus, bend, fold, resize, and many more options are included. A user manual (a bit short, though) is included in the package. 'Til now, Low Price Software has given birth to some remarkable programs of quite high quality. In the near future, ST Club Eindhoven will launch more of these programs (among which probably a Dutch version of ST NEWS that will include the most interesting articles from all past issues - more about that in the editorial column!). If ST Club Eindhoven continues with this initiative, it might bring down software prices a bit - which isn't all that bad of course. That's why Low Price Software can also be obtained through ST NEWS. SECRETS OF THE ST by Wilfred Kilwinger and Richard Karsmakers On May 23rd, on the PCM Show at Utrecht, Mr. Kilwinger ('chief' at the Software department of Atari Benelux) gave me permission to translate his articles that he had published in SAG's "Atari Magazine". Since he also covers subjects in those articles that are already discussed or that will be discussed a bit broader in the near future, I have hereby included translations of all relevant pieces of some of his articles that were published uptil now. Some of you that are familiar with the SAG articles will note that all articles that have to do with the disk drive are not included - this is since I intend to write a full series of articles about this subject in the near future. This time something about System Errors, starting on the next page. Every computer owner will undoubtedly recognize the following event: One is running a program and suddenly the whole thing crashes - God knows why. And the worst thing about it all is that the system has to be reset before you can go on. For a programmer, this is even much more serious - he needs information about the error through which he will then be able to locate the error (and get rid of it, of course). We can thus classify the errors in two, or rather, three categories: Error messages for the user, errors for the programmer and error messages about internal (hardware) system errors. The ST also knows these kinds of errors. In this table you can see the kinds of error messages the ST knows with information about who made the erros, for whom it was meant and how they are visualised. Category: Caused by: Meant for: Display: BIOS User/hardware User By program GEMDOS Program/user User/programmer TOS error.. SYSTEM Program Programmer Bombs With BIOS error messages, one most of the time doesn't quite realise that these belong to the system errors, since the errors are displayed by the program itself (the way it is done can vary, since each programmer chooses another way to display them). BIOS, by the way, means Basic Input Output System and this is a part of the Operating System of your computer. Examples of BIOS error messages are those that have to do with disk drive and/or printer, like "Write Protected" or "Paper Empty". These errors are plainly caused by the user and are very easy to get rid of. With GEMDOS errors this is totally different. These can, most of the time, not be solved by the user and are meant for the programmer. These errors are put together in the following list: Number: Description: Possible Cause: -32 Invalid function Wrong GEMDOS function number number -33 File not found Wrong filename specified -34 Path not found Wrong pathname (folder name) spec. -35 Too many files open Too many files or records opened by programmer or user Number: Description: Possible Cause: -36 Access denied -37 Invalid file File header damaged descriptor -39 Insufficient memory The program tries to use too much memory -40 Invalid memory block address -46 Invalid drive You tried to use an invalid drive specified -49 No more files -64 Range error -66 Invalid program load format -67 Setblock failure GEMDOS errors are displayed to the user by means of the message "TOS Error:..", or sometimes by means of used software. Every experienced ST users knows TOS Error 35. What you'll notice immediately is that this one isn't contained in the list on the previous page, but that -35 in fact is included. Right. You have to get rid of the minus sign in front of the error to get the right number. Error number 35 and 37 are most frequently caused by damage of the contents of a disk. This especially occurs when one disk is written to by several disk drives. Sometimes, you can get a TOS error that is far above 60000. At Atari the people didn't bohter to document these errors, as they in fact should not occur at all. A possible explanation might be the fact that the bit that specifies the minus sign has dropped out. The standard conversion routine doesn't detect this drop-out and produces a wrong error number. The BIOS-and GEMDOS errors that are already mentioned belong to the category of the errors that genarally don't cause much damage at that won't crash your system. With the bomb-messages, this is totally different. These errors are per definition not caused by the user, but caused by the programmer or maybe even system applications like the desktop. With a crash, the user principally doesn't get any info about the error. The programmer still needs that information, and that's why Atari wrote a so-called 'Bomb-handler', and why Motorola (the manufacturer of our dear 68000 microprocessor, ED) designed the processor so that it could recognize certain errors. These specific routines can repair or 'trap' the errors. These errors that are recognized by the processor are called exceptions and the routines that are mentioned are called exception handlers. A handler, thus, is a certain routine that handles an error that has occured. The pointer to a handler is located on a specific place somewhere in memory (have a look at the Memory Map, an article elsewhere in this issue of ST NEWS). This piece of memory is called LOW MEM (the lower 64 Kb of the machine). A reset also leaves this LOW MEM intact. If an exception has occured, the programmer first has to look at address $380 and check of the longword $12345678 is located there. In that case, the information happens to be intact. From address $384 on, you can find all saved address-and data registers: D0-D7, A0-A6 and the supervisor register, in this order. A7 is the stackpoint register. A Stackpointer is a pointer to the 'notebook' op the 68000 processor. De 68000 has two kinds of 'notebooks' (one for supervisor mode and one for user mode). Thus, two A7s are stored down there as well. The following table comprises a look-up table of all bomb errors: Number: Description: Cause: 2 Bus error Program tried to write at LOW MEM, ROM, or the I/O memory 3 Address error You tried to read/write a word or longword from an odd address 4 Illegal instruction The processor encountered an instruction unknown to him 5 Division by zero The processor was instructed to perform a division by zero 6 Chk instruction This instruction is quite legal, but the software will first have to install a handler 7 Trapv instruction See at 'Chk instruction' Number: Description: Cause: 8 Priviliged violation The processor was in user mode, tried to write on a piece of memory reserved for supervisor mode 9 Trace Trace bit is set 10 Line A Unjust way to call the Line A interface 11 Line F Unjust way to call the line F interface 12-23 These errors should not occur. Undefined 24 Spurious Interrupt Bus error during interrupt processing 25-31 Autovector interrupt Odd numbers should not occur and even numbers just don't occur bacause of the interrupt routines The exception number is stored on $3C4 and the user register is stored at $3C8. Finally, from $3CC you can find 16 upper words from the supervisor stack. The meaning of this information is enabling the programmer to find back his error. The user doesn't notice this safe-keeping of the information, and that's why the ST shows that something went wrong. It does this by displaying bombs or thunderclouds. By counting the bombs, the user can have some insight in the kind of error that has occured, but he can normally not do anything with the information. Like it's said, the user normally has nothing to do with this information, but maybe it can control your lust for information. For programmers, however, this information is of great importance. ASSEMBLY LANGUAGE COURSE - PART V by Mark van den Boer Logical Operations Instruction: AND Syntax: AND ,Dn AND Dn, Data sizes: byte, word, long Condition codes affected: X not affected N set to the most significant bit of the result Z set if the result is zero, cleared otherwise V,C always cleared Addressing modes: Source: (destination is Dn) Dn (An) (An)+ -(An) w(An) b(An,Rn) w l w(PC) b(PC,Rn) Destination: (source is Dn) (An) (An)+ -(An) w(An) b(An,Rn) w l Function: Perform a boolean bitwise AND from source to destination. Examples: Instruction Before After AND.B d0,d1 d0=33333333 d0=33333333 d1=ffffffff d1=ffffffcc AND.W d0,d1 d0=33333333 d0=33333333 d1=ffffffff d1=ffffcccc AND.L d0,d1 d0=33333333 d0=33333333 d1=ffffffff d1=cccccccc Instruction: ANDI Syntax: ANDI #, Data sizes: byte, word, long Condition codes affected: X not affected N set to the most significant bit of the result Z set if the result is zero, cleared otherwise V,C always cleared Addressing modes: Destination: Dn (An) (An)+ -(An) w(An) b(An,Rn) w l CCR, SR Function: Perform a boolean bitwise AND from source to destination. Examples: Instruction Before After ANDI.B #7,d0 d0=33333333 d0=33333330 ANDI.W #$ff00,SR SR=ffff SR=ff00 Instruction: EOR Syntax: EOR Dn, Data sizes: byte, word, long Condition codes affected: X not affected N set to the most significant bit of the result Z set if the result is zero, cleared otherwise V,C always cleared Addressing modes: Destination: Dn (An) (An)+ -(An) w(An) b(An,Rn) w l Function: Perform a bitwise exclusive or from source to destina- tion. You will notice that this instruction can only take a data register as the source, unlike the AND and OR instructions. I think the designers of the 68000 should have mode addressing modes more orthogonal. Examples: Instruction Before After EOR.L d0,d1 d0=ffffffff d0=ffffffff d1=f0f0f0f0 d1=0f0f0f0f Instruction: EORI Syntax: EORI #, Data sizes: byte, word, long Condition codes affected: X not affected N set to the most significant bit of the result Z set if the result is zero, cleared otherwise V,C always cleared Addressing modes: Destination: Dn (An) (An)+ -(An) w(An) b(An,Rn) w l CCR, SR Function: Perform a bitwise exclusive or from source to destination. Examples: Instruction Before After EORI.B #$ff,d0 d0=33333330 d0=333333cf EORI.W #$00ff,SR SR=ff32 SR=ffcd Instruction: NOT Syntax: NOT Data sizes: byte, word, long Condition codes affected: X not affected N set to the most significant bit of the result Z set if the result is zero, cleared otherwise V,C always cleared Addressing modes: Destination: Dn (An) (An)+ -(An) w(An) b(An,Rn) w l Function: Perform a bitwise not to the effective address operand. Note that NOT.W d0 is the same as EORI.W #$ffff,d0. Examples: Instruction Before After NOT.B #$ff,d0 d0=ffffff78 d0=ffffff87 Instruction: OR Syntax: OR ,Dn OR Dn, Data sizes: byte, word, long Condition codes affected: X not affected N set to the most significant bit of the result Z set if the result is zero, cleared otherwise V,C always cleared Addressing modes: Source: (destination is Dn) Dn (An) (An)+ -(An) w(An) b(An,Rn) w l w(PC) b(PC,Rn) Destination: (source is Dn) (An) (An)+ -(An) w(An) b(An,Rn) w l Function: Perform a boolean bitwise OR from source to destination. Examples: Instruction Before After OR.B d0,d1 d0=ffffffff d0=ffffffff d1=33333333 d1=333333ff OR.W d0,d1 d0=ffffffff d0=ffffffff d1=33333333 d1=3333ffff OR.L d0,d1 d0=ffffffff d0=ffffffff d1=33333333 d1=ffffffff Instruction: ORI Syntax: ORI #, Data sizes: byte, word, long Condition codes affected: X not affected N set to the most significant bit of the result Z set if the result is zero, cleared otherwise V,C always cleared Addressing modes: Destination: Dn (An) (An)+ -(An) w(An) b(An,Rn) w l CCR, SR Function: Perform a boolean bitwise OR from source to destina- tion. Examples: Instruction Before After ORI.B #7,d0 d0=33333330 d0=33333333 ORI.W #$00ff,SR SR=ff00 SR=ffff DID YOU KNOW THAT.... by Richard Karsmakers ...Atari and Commodore have recently been involved in a court case? ...it was Atari vs Commodore? ...Atari was a bit mad because it had turned out that the Amiga's custom chips had in fact been promised to Mr. Tramiel at Atari? ...Commodore lost the case and had to pay quite an amount of money to Atari? ...this has unfortunately not yet caused the bankruptcy of Commodore Business Machines? ...this will probably happen in due course? ...we, ST NEWS, have been mentioned in the big German magazine "68000'er" from June this year? ...the people there seem to think we're doing great work? ...we find this a great compliment? ...we hope to be mentioned in other computer magazines worldwide as well? ...we hereby wish to extend our gratitude to 'al' from this particular magazine? ...dozens and dozens of software packages have been announced recently for the ST? ...they were far too much to be included in this column? ...I have therefore included them in this issue's "ST Software News" article? ...we will probably have to start a competitive struggle with another disk magazine soon? ...this remark is meant especially for Germany? ...they have now launched the first issue of a magazine called "CIP ST"? ...it is also very cheap, just like ours? ...the first issue was completely filled by one man: Ulrich Veigel? ...I herefore have deepest respect for him, since I think I also know what it is to do something like that? ...you should send a disk + DM 3,- to them if you want to obtain it? ...their address is: CIP (Club fr Informatik und Programmierung), Ulrich Veigel, Khlstrae 9, 7100 Heilbronn, West Germany? ...their magazine is written in German and is also programmed in GfA Basic? ...we surely hope to get contact with them soon, so we can help each other a bit? ...I hope we can exchange some articles sometimes? ...this non-competitive spirit seems much more attractive to me? ...I really don't think disk magazines should try to sweep each other right off their fundaments? ...I wish them lots of success with conquering Germany? ...Frank is currently busy writing educational software? ...I think he's gone out of his mind? ...he plans on winning Atari Benelux' Mega ST or maybe sell the program against thousands of guilders? ...he has already done quite some coding and the whole program is now already taken shape? ...Engel G. bought an Amiga 2000?!?!???!!!!!?&*^%$$??!!?! ...he must have been as much out of his mind when he did that, like Frank is at the moment, writing all that educational stuff? ...he used to be such a nice person to chat with? ...I hope he will regain his senses soon? ...I will probably call his doctor as soon as I've finished this article? ...Mrs. G. and his two little sons hereby receive my deepest sympathy? ...there actually is very little to say for this time's "Did you know that...."? ...I will therefore close down this article before I start writing down pure rubbish like some sentences before? ...I hope to see you in the next issue of ST NEWS? Goodbye! CONNECTING YOUR ST TO AN AMPLIFIER by Frank Lemmen Recently I must have blown up some chip inside the internal amplifier in my monitor, so I didn't hear any sound coming from my computer. Being the freak I am, I immediately opened my monitor to have a look at the damage that apparantly had taken place. Ough. An IC had burned out. I took the chip out and went to the local electronic's shop. Unfortunately, the poor man behind the counter hadn't ever heard of this particular chip so I went home with just as filled a wallet but still without any sound!!! If you don't have any sound capabilities aboard your monitor while playing "Typhoon", the game is quite worthless - but then again, there are games that can be played better without any sound (like "Arkanoid" with some very irritating sound effects). But after many hours of desperate and deep (ooouuugh) thinking I found the solution - why shouldn't I connect my good old ST to my amp? After about ten minutes of sweating heavily and sniffinf the solder damps, the cable was ready for the first test. First, I connected the cable to my ST. Nothing went wrong. Then to the amplifier. Now, the big moment of truth had finally arrived. I switched on my ST (Oh God), but lucky for me there weren't any smoke clouds or suspicious smells to be percepted. When I stroke the space bar I nearly lost my hearing - my amplifier's volume has been boosted up to a massive '10' and with two times 140 Watts it's not what can be called healthy for you. But the most important thing was that I had SOUND again. The following diagram shows you how you can connect your ST to your amp: Seen from the back of your ST's monitor plug _________ _________ / | \ / | \ seen from the back of | o o o +_______________________________ | the DIN plug | o o o o | | o + | | o o o o | | o o | \ +-------------------------------+ / If you follow this diagram you see that pin 1 (ground) from the monitor plug is connected to the pin 2 of the DIN plug and that pin 13 (audio out) is connected to pin 1 of the DIN plug. So if you make the correct connections you can get totally stoned on one of the TEX demos which we recently added to our PD library. Note from the editor: I have also done the connecting described in this article. Whereas Frank evidently succeeded in using pin 13 (ground) from his ST's plug (his machine is Rev. C so I've understood), I had to use pin 8, which also has ground. Also, the DIN plug connections may vary according the amplifier that you use! THE MUSIC CORNER By Frank Lemmen Hi, music freaks. I'm back with a new Music Corner. In this Music Corner I will give you a review of a new MIDI music program from Michtron called "Super Conductor"; also, I wil give some tips how you can program your MIDI synth using simple GfA-Basic commands and programs. Super Conductor  "Super Conductor" is a new MIDI program from the software company Michtron Inc. When you start up the program you expect to see a screen filled with buttons and displays (like "Twenty Four V2.0). But if "Super Conductor" starts up, you'll see nothing but a simple GEM menu bar and you see F1-F10 printed in the middle of your screen. At first sight I thought that it was a simple sequenzer and nothing more. After a few seconds I pushed one of the function keys on the keyboard. ZAP! Another screen came with lots of functions and 16 record tracks. So, under each function key are 16 tracks - that's a total of 160 tracks (since we have 10 function keys). Even "Twenty Four V2.0" and "Miditrack Professional" don't have that much tracks if you add them together. When I saw the new screen I saw the option 'load song'. I executed this option and loaded the song "Eyesky" into my ST's memory. After I loaded the song I had a free memory space of 707 Kb. When you see the screen after you loaded a song, you will see that the tracks are divided into blocks. Each blok has its own length and name. With the block options, like 'Edit', 'Quantitize', 'Copy', 'Delete', 'Name' and 'Transpose', you can work with these blocks. When you choose the edit option, you have to type in the block's name and after you've done that you will see the notes that you've played, program change, channel pressure, control changes, etc. You can change all of these things. So the program is very user- friendly. When I played the song "Eyesky", the computer started to play on his internal soundchip and on the synthesizer simultaneously. So you can play a song trough MIDI, record it and play it back on the internal sound chip of your ST. You can set a channel onto the internal chip by changing the MIDI channel to I1, I2 or I3 - so, the 'I' stands for internal. There are two options that I would like to see in further updates from this program. The first one is that you can change the settings of the the internal chip (waveforms, ADSR etc.) and the option so that it can display notes on paper. If the writers include these options and make the program a bit further userfriendly, it can compete with the BIG boys like "Twenty Four" or "Miditrack Professional". Our next item is to program your MIDI synth with simple GfA-Basic routines. The routines I'm going to give you are extremely utterly magnificently disgustingly simple, so don't expect wonders from them. With this first routine, you can put PORTAMENTO ON and OFF (see next page): Out 3,176 !This command Out 3,65 !sets the portamento Out 3,127 !on pause 100 ' ======================= Out 3,176 !and off again Out 3,65 Out 3,0 ' ====================== This routine changes the synth program to another program: Out 3,192 !program change Out 3,Sound !sound stands for the select sound that you want With this last routine you can get a kind of echo effect. This option is also included in "Super Conductor". ' ====================== Do ! with this program you get a sort of echo effect A%=Inp(3) ! if you set the pause on 1 the echo wil be later ' Pause 0 ! the higher the number, the later the echo Out 3,A% Loop ' ====================== These example programs only work if you have a synth with a MIDI, so these routines do not affect the internal chip. Pity. Well I hope you've learned something about it. If you have written some nice routines yourself, please let us know. The next time, I shall publish a program wich can set the speed of the drumcomputer in a Casio CZ-230S CHANGING YOUR ICONS by Richard Karsmakers and "Strike-a-Light" People who use MacIntosh or Amiga computers are probably quite familiar with the fact that each program can be specified by an icon of its own. A game program can actually be signified by a joystick or even a small 'high-res' screen taken from the program. The only limitation, most of the time, is that the icon can only use one color and the background color. The ST's possibilities with regard to this changing of the icons are far more limited: There are only five possible icons, excluding the Atari sign in the "About" option of the desktop. These can, however, be changed. The principle is extremely simple. You simply make a bit pattern of an icon and calculate that into numbers. You then start hunting for those numbers and that's all. A new icon can simply be loaded onto that space, somewhere in RAM. A program to achieve this, written for Data Becker's "Profimat", is the following (written by Robert Heessels): TEXT clr.l -(sp) ; supervisor mode move #$20,-(sp) trap #1 addq.l #6,sp move.l d0,d7 move.l #0,$4d2 ; disable "STARTGEM" interrupt move.l #$d000,a6 ; hunt for Icon start address move.l #$20000,a1 ; and the ending address zoek: cmp.l #$80000263,(a6) ; this is a bit pattern in the ; disk drive Icon beq zoek_einde ; found? Then stop search! add.l #2,a6 cmp.l a1,a6 ; end address reached? bne zoek ; no - continue bra einde ; jump to end zoek_einde: sub.l #180,a6 ; start of all icons move #0,-(sp) ; Open file for new icon data move.l #naam,-(sp) move #$3d,-(sp) ; Open file trap #1 addq.l #8,sp tst d0 ; Error? bmi einde move d0,d6 move.l a6,-(sp) ; load file at icon data move.l #1280,-(sp) ; file length (5*256) move d6,-(sp) move #$3f,-(sp) ; Read trap #1 add.l #12,sp einde: ; user mode move.l d7,-(sp) move #$20,-(sp) trap #1 addq.l #6,sp clr.l -(sp) ; terminate trap #1 DATA naam: dc.b 'a:\new_icon.icn',0 END On the disk, you'll find a sample Icon file as well as a program called GEMSTART that is needed in the AUTO folder if you want to start it from on system bootup. Simply copy the GEMSTART program in the auto folder and make sure the actual program is in the root directory. If the program would be NEW_ICON.PRG, you'd have to create a file called GEMSTART.INF on the disk, containing the following line: A:NEW_ICON.PRG Of course, you can also use folders, etc., or other disk drives. Any other program using GEM can also be started up automatically using this program. But now more about the icon format. Each icon is made up of a mask and a 'sprite'. Each one of these is represented 128 bytes: 4 bytes wide and 32 bytes high. Horizontally, the bits are used to specify if bits are on or off. You'll just have to look at it binary. A bit pattern like this would create a 'sprite' like a chessboard: %11111111000000001111111100000000 %11111111000000001111111100000000 %11111111000000001111111100000000 %11111111000000001111111100000000 %11111111000000001111111100000000 %11111111000000001111111100000000 %11111111000000001111111100000000 %11111111000000001111111100000000 %00000000111111110000000011111111 %00000000111111110000000011111111 %00000000111111110000000011111111 %00000000111111110000000011111111 %00000000111111110000000011111111 %00000000111111110000000011111111 %00000000111111110000000011111111 %00000000111111110000000011111111 %11111111000000001111111100000000 %11111111000000001111111100000000 %11111111000000001111111100000000 %11111111000000001111111100000000 %11111111000000001111111100000000 %11111111000000001111111100000000 %11111111000000001111111100000000 %11111111000000001111111100000000 %00000000111111110000000011111111 %00000000111111110000000011111111 %00000000111111110000000011111111 %00000000111111110000000011111111 %00000000111111110000000011111111 %00000000111111110000000011111111 %00000000111111110000000011111111 %00000000111111110000000011111111 Get it? It's that easy! The only problem is that the icons are always located on a different location in memory (this changes if you use an AUTO folder or not). That's why a search routine has been included in the source file from a few pages back. By the way, if the program need not be started from an AUTO folder, the GEMSTART program can be omitted. THE ARKANOID CONTRUCTION KIT by Richard Karsmakers Hackin' groups can actually do something useful on a computer. Just take us for an example: We used to be hackers, too, but found out that there's more than just hacking - we started ST NEWS for example. In this issue's "ST Software News" you might already have read something about other hackin' groups that are doing swell things on the ST - "TEX" and "DMA". But as this issue ran to its close, another program from the latter (DMA = Dutch Muggers Association) dropped in - "The Arkanoid Construction Kit". Everybody should now "Arkanoid" by now - one of the most addicting games that were launched on the ST in the last few months. But nobody has ever heard of the "Arkanoid Construction Kit", and that's why I have included this article in ST NEWS - to promote this Public Domain product (which can also be ordered through our PD service). "The Arkanoid Construction Kit" allows you to manipulate any of the levels in the program, load them from or save them to disk seperately (over 150 additional levels are included on the disk). It's even possible to make a trainer version of "Arkanoid" through the construction kit (a version in which you won't loose any lives), or unmake such a version. The whole program is mouse-controlled and is extremely easy to use. After having read the world-record length scrolling text (that takes about half an hour to pass), you can load or save "Arkanoid" levels (no worry, you can also abandon the scrolling earlier), load or save the complete "Arkanoid" main file, change the screen hertz (I suppose they must have pinched that from me), toggle the bonus music (very good) on or off and edit the levels currently on the screen. It might very well turn out that the "Arkanoid Construction Kit" is the best Public Domain initiative to be launched since our own "Speedwriter" (which, although it sounds unmodest, just happened to be very original indeed!). I have tried making some levels myself and I must confess that that's very easy to do. You simply select a building stone on the left hand side of the screen and put that anywhere on the edit grid. When clicking the right mouse button, it disappears. I also had a look at some of the levels that were supplied on the disk. In spite of the fact that the scrolling text (which contains a user manual, but which works only on 60 Hz mode, due to timing errors I presume) refers to two folders with levels, the actual disk contains three of them (apart from the AUTO folder that reorganizes and redefines the desktop icons - according to techniques explained in another article in this issue of ST NEWS). The first one, which is called "DEFAULT.LVL" contains 32 levels that were taken from the original "Arkanoid". Very handy indeed if one desires to make an original version again after messing around a bit with all the other levels. The other two are called "DMA.LVL" and "DMA_II.LVL", and they contains numerous levels that vary from odd and simple to ingenious and super-difficult. The maker(s) must have been heavy metal fans (just like me), since they have named levels like "Carrion" (a song from Kreator's "Pleasure to Kill"), "NM_156" (just like "WARNING", "EN_FORCE" and "TAKEHOLD", these will probably have been based upon compositions from "Queensrche"). But their imagination looks to be unlimited. I, for one, surely would not have been able to create such a variety of levels which such a wide variety of names ("MADONNA" and "SAMANTHA" (Fox) are also present, for the freaks). Concluding, it must be said that every "Arkanoid" freak must have this PD offering in his/her collection (YES! On June 4th we got the first reaction of someone called "Annelies", undoubtedly a 'her'! And I was just beginning to think this was a 'men only' world....Lucky enough, it isn't!). It is very well programmed, very userfriendly, and very easy to use. It seems to have been well thought about, and I could not discover any bugs (although you must not try to 'cancel' after a 'disk is write-protected' error!). The user manual is not really necessary, as most of the options explain themselves. Reading the scrolling can cause quite some fun here and there, although the DMA guys are not too kind to people who 'decrack' their 'crackings'! QUESTIONS & ANSWERS by Richard Karsmakers This time, you'll note that there are very few questions nor answers. This is not only due to the fact that people seem to know everything they want to know at the moment, but also because some of the GfA Basic questions have been tranfered to the "GfA Basic Tips & Tricks" column. We've got one really tough question. We program quite a lot, but we still have not found out how we can move the mousepointer on the screen (without moving the desk or mouse itself). It is sure that this can be done (it is done in e.g. "N-Vision" and "Music Studio"). Please help us to find it out! The "Strike-a-Light" group I also have one question, that is still left unanswered: What does VDIBASE stand for? How long is this area of memory? Are there some interesting POKEs? Which memory location does what? Richard Karsmakers How do I use "Music Studio" songs in self-written programs? The "Strike-a-Light" group and Richard Karsmakers How do I use smooth scrolling animation or 100% transparent PUT modi? Gerard van Dalen I fear you'll have to wait for the next issue of ST NEWS, in which these problems will both be tackled (at least, so we hope) in the "GfA Basic Tips & Tricks" column. See you then! Richard Karsmakers  GFA BASIC TIPS & TRICKS by Richard Karsmakers Since there haven't been much problems lately, you'll notice that this article isn't really big this time. But those that actually occured weren't too difficult to answer. The problems that reached me in this issue were: 1) How do I make sure that an item selector box doesn't destroy my whole screen when activated in low res? Answer: The only way to do this, is to buffer the screen and put it back on the proper place again after the fileselector is de- activated. Thus: Sget Buffer$ Fileselect "*.*","",Load$ Sput Buffer$ 2) I use several screens in my program, located on different locations in memory. I swap between them using the XBIOS function number 5. But now and then, my screens get messed up and menu bars that I use are scrambled after switching. What must I do? Answer: Your program probably uses the same space as that are used by GfA Basic to store variables, or to buffer certain operations. This can be avoided by starting your program with the following line: Reserve 150000 In most cases, this line leaves enough space (150 Kb) for Basic. If not, just increase or decrease the number. 3) How do I calculate length of a string that will contain a piece of the screen taken by GET, before it is taken? Typing in the following program (on the next page) will give the result. The cordinates are specified by the variables X1, Y1, X2 and Y2. The last line is included to check the accuracy. X%=Xbios(4) !Get res If X%=0 !Low res X=4 !4 bit planes Endif If X%=1 !Med res X=2 !2 bit planes Else !High res X=1 !1 bit plane Endif X1=0 !Coordinates are here (can vary) Y1=0 X2=1 Y2=79 U=((Y2-Y1)+1)*X*(2*((Int((X2-X1)/16))+1))+6 Print U Get X1,Y1,X2,Y2,A$ Print Len(A$) 4) Is there a way to make files readable again that are saved with the help of the 'PSAVE' command? Answer: Yes, there is! It is quite a complicated thing to do, ans I was just trying to find it out (together with Frank Lemmen) when an acquaintance of mine had me copy one of his PD disks containing a "PSAVE REVERSE" program. The listing is contained on this ST NEWS disk, contained in the folder "PROGRAMS". 5) How do use the ST Basic (uugh!) command LPRINT USING in GfA Basic? Answer: Since I do not have a printer myself, I am not sure the solution I give will be full-proof. But I think you'll have to add one of the lines OPEN "O",#1,"LST:" !For Centronics OPEN "O",#1,"AUX:" !For RS232 before you start printing. The actual printing would have to be replaced by PRINT #1,USING............(etc.) After printing, you'll need to close the channel again by adding the line CLOSE #1 There also were some problems that I could not solve. Maybe you, our reader, can help out. 1) How do I perform communication with modem or such in GfA? R. Bitter 2) How do I change the shape of the cursor (not the mousecursor)? G.A.J. van Oene That was it for today! I only hope someone will find an answer some time to my VDIBASE problem (see the "Questions & Answers" column of this issue)! JUST FOR FUN  After all the serious talking about hardware and software in this issue of ST NEWS, I think it is time for a bit of laughter. Oh, Richard Karsmakers is a very decent guy, no foul words about him, but we can't allways be talking about computers, can we? Therefore I think it is a good idea to relax (say no more!) a bit with some nice, humoristic pronouncements of some leading persons in computer-land. So, just sit back and enjoy it. Weinberg's law: If builders built buildings the way programmers write programs, then the first woodpecker that came along would destroy civili- zation. Cann's axiom When all else fails, read the instructions. Wood's axiom As soon as a still-to-be-finished computer task becomes a life or death situation, the power fails. Sattinger's law It works better if you plug it in. Murphy's fourth law If there is a possibility of several things going wrong, the one that will cause the most damage will be the one to go wrong. Nixon's theorem The man who can smile when things go wrong has thought of someone he can blame it on. Well, that was it! Have you amused yourself a bit? Maybe, when I have more of these interesting, moralizing no-nonsense you will find them in one of the next issues of ST NEWS. And now it is time to go back to the cruel reality of every day's life! Goodbye! USER GROUP UPDATE by Richard Karsmakers In some of the previous issues of ST NEWS, you'll probably have noticed on huge file (just a bit less than what GfA Basic allows to be handled as string) with the user group update. I have now gathered some additional addresses of user groups, but I didn't feel inclined to include all the other addresses again (also, because this would make sure that a shortage of disk space would occur). So, here they are: - The Netherlands ----------------------------------------------- Stichting Atari ST Computer Club Nederland Postbus 5011 2000 CA Haarlem Computer Vereniging Waterland Postbus 464 1442 AL Purmerend - West Germany -------------------------------------------------- ST User Club Bonn Alexander Grbing Siegstr. 12 5300 Bonn 2 Sozialistischer Computerclub Joachim Graf Landsbergerstr. 223 8000 Mnchen 21 (Mailbox 089/5706448 - 300 Baud) DOC02 DOC10 DOC31 # j ST SOFTWARE NEWS by Richard Karsmakers Wagonloads of new software have reached ST users during the creation of this issue of ST NEWS. I will try to cover them all in this article, but I hope you'll forgive me when I forget a certain title. Many new companies have launched their first releases for the ST, but it also needs to be said that hackin' groups start delivering quality material nowadays for our machine. Let's start off with "Farmsong I", a Public Domain HP demo (seperate color-and monochrome versions) made by a group called DMA (Dutch Muggers Association). I must confess this is even harder than the old but well known "Golden Girls" from the German Denise Team, but it offers true animation and a "Space Pilot" music hack! According to the name of this product, many other demos of this kind will soon hit the streets. One Megabyte and at least 18 years of age are definately required with this product! Another product from these guys, "The Arkanoid Construction Kit", is of such importance to the PD world that I found it better to write a complete article about it - read it elsewhere in this issue of ST NEWS! Another hackin' group that has launched some terrific stuff (much better than DMA's project) is called TEX, which is short for The Exceptions. They have recently written three demos, all for color monitors. The first offers a very well drawn picture and an "Extensor" music hack, using >16 colors, two smooth scrollings at various speeds that overlap each other, etc. Much better, however, is the one called "Little Sound Demo", a kind of extremely modest name for an equally extremely superb demo! It starts up with a >16 colors picture with 4 different smooth scrollings (of which, again, two overlap each other at different speeds), color cycling and........ginormous music! One of their members, called Mad Max, has deviced a way to convert Rob Hubbard (yes, him again!) music from the Commodore 64 to the good old ST with its trashy soundchip (?!). The results are almost equal in quality to the Commodore 64 versions of the music, and I must say that this put new hart into me, being an old nutty 64-music freak as I am. The demo features the music from "International Karate" (unfortunately, only the first half), an "International Karate" mix, music from "Monty on the Run", "Commando" (all three songs) and "Flash Gordon" as well as some of Mad Max' own compositions. The best of the three is "LCD", the third demo, which stands for "Little Color Demo". Again these guys tend to be really modest, but they again offer superb quality music (again from Rob Hubbard, featuring the music from "Crazy Comets", "One Man and his Droid", some "Human Race" tunes, "Master of Magic" and some more) - but now much better graphics! The scrolling (two overlapping each other at different speeds) start up normally, but boosts up to one with 100 colors after a while! The graphics as a whole are also very impressive, complete with many colour effects, animating Atari signs and portraits of the master himself - Rob Hubbard. Really swell, this demo! Unfortunately, they mention (in their scrolling text) not to make another demo before anyone makes a better one than theirs - which seems quite impossible to me! Yes! Yes! Microdeal has finally launched "Goldrunner", their mega-fantastic shoot-'em-up game! The demo has not shown any exaggeration - the game is truly fantastic and offers the smoothest scrolling you've ever seen (which can also be very, very fast indeed). The music from Rob Hubbard completes it all and makes it a classic in ST's game history, just like the early "Time Bandits", also from Microdeal. The purpose of the game is to demolish as many ground and air targets as is possible, until an icon on the right hand side of the screen has gone completely (a butterfly, explosion, whatever). Once that's done, you can fly into one of three huge bulbs through which you will be transported to an next level (first halting for a bonus-round that looks like an enhanced and much faster version of "XTron"). I think "Goldrunner" is the best game currently available for the ST in its kind. I sincerely hope that Microdeal will continue writing these excellent products for the ST - not ever again will we need to be embarassed when we position our ST next to an Amiga at a user club that happens to be playing "Defender of the Crown", "Mindshadow" or "Marble Madness". Another one of the products that Microdeal has launched the last couple of weeks is "Digidrums". The demo didn't promise much, but the actual program cannot be considered bad at all! The drumming sounds are very realistic, especially when played through an amplifier or such. It is possible to edit patterns, load additional sounds from a sound library disk (that's also available), load or save complete pattern sets forming a whole song, and much more. The programs works on monochrome-as well as color monitors (the latter in medium res), but the program unfortunately seems to shut off the mouse (while it still uses drop-down menus, etc.). This now has to be done by use of the cursor arrow keys. As far as I have worked with the program, the latter is the only problem. Also, it isn't MIDI compatible or such. The U.S. company "The Software Toolworks" has launched a truly terrific chess program called "The Chessmaster 2000". It is a common chess program for color/monochrome monitors that is enhanced by means of high quality speech and several more or less useful chess options. I don't think there's much to say about just another chess program so I won't. It's sufficient to say that it's much better and more userfriendly than any of the other chess programs I have had my hands on (even better than "Psion", "Krabat" and "Techmate"). The graphics are as impressive as the speech and it's much fun to play. Let's shift to the subject of addiction - not addiction to any drugs (whether hard or soft), but addiction to computer games. Some real addictive stuff has reached us in the last couple of weeks and I must admit that my school figures have now lowered themselves under the minimum that's normally allowed to pass a class - one of the reasons why this issue of ST NEWS is about three quarters of a month later than usual, together with the fact that the ACC happens to exist two years at the day of this issue's launch. The first one's called "Plutos" and was programmed by Derek Johnston from Micro Value. It is an invader-type game that combines the graphics from "Quasar", the variety of "XTron"'s sprite movements and all other positive qualities of any invader on the market today. It incorporates a unique two-player mode in which it is possible to get quite high scores (Frank and myself got to 240600), nice smooth scrolling, high difficulty and an enormous variety of sprites, backgrounds, and sprite movements. This is the most addicting game to be previewed by me since I bought the ST (on the old 64 I used to be quite addicted to "Lode Runner", but that's not quite finished on the ST at the moment). You do get sprained trigger fingers, busted firebuttons and sleepless nights, but that's what a really addictive game should give you, don't you think? Just take heed to my warning: Heroine, LSD and other harmless knick knacks would sooner be legalised than this game if the same laws would be apply to this game! The second program in our row of arcade addictives is called "Arkanoid" and is published by Ocean/Imagine. This game was (like many other games) already written for the Commodore 64, and when I compared that to the new ST version I immediately recognized better graphics in the ST version. The 64 version was equipped with better sound but that's all - the ST version leaves its little brother way behind on all other fronts. On first sight, most people with probably look at "Arkanoid" and say "Well, it's just another one of these 'Breakout' things". Right they are - at first sight. But when one succeeds in getting to the second level (which isn't all that easy at the beginning, since the game uses the mouse instead of a joystick) one immediately sees that the standard 'Breakout' principle has been broken - no simple walls anymore but more or less complicated figures that have to be blasted away. Another interesting feature is the fact that now and then some cylinders come dropping down that give you extra possibilities - e.g. a sticky surface, multi-balls, extra broad surface, or even lasers or a possibility to go to the next level without finishing the current level. My personal hiscore for this very addictive game (the hookability would be 9 if "Plutos" was 10) is 239430 (level 17). A final tip for "Arkanoid": Start up a disk monitor and change the (hex) 342Eth byte (there should read 53 39 00 03 0E D5) in the largest file of the program in 4E 71 4E 71 4E 71. Have fun! But we're not yet finished in the addictive games department this time. In recent weeks something has happened what I had never thought would happen: I got into arcade adventure playing and now I'm hooked on one - SSI's "Roadwar 2000". The game is built up much like the well known "Phantasie" series (read more about that elsewhere in this issue of ST NEWS), but has a more realistic setting and subject: A war between road gangs in the year 2000. The earth has been largely devastated by a nuclear war and the whole of the U.S. is now controlled by gangs like The Mob, Survivalists, The Invaders and other scum. You, together with your gang, need to clear the country of all trash that wanders around, including wandering gangs of Skulls, Redneck Yahoos, Invader Death Squads and the zombies which are called Mutants. Whilst conquering as many cities and lesser towns as possible, thus forming as large a roadgang empire as possible, you have to find several scientists and bring them to an underground laboratory which is situated in Akron. Let me hereby give you a few hints: Gloria Mills can be found in Tijuana, Myron Smidlapp in Salt Lake City, Donny Dade in Orlando and Gabriel Washington in Yngstwn/Warren (that just North East of Akron). You have to have enough vehicles to carry persons and goods (a van, for example, can carry only 24 people, a sports car hardtop can carry 80 supplies/goods, etc.). The best way to play the game is to get 5 contruction vehicles (for much fuel and food as well as other goods) and 1 bus (which can carry most of the crew). Don't arrange too many men, since they'll eat your ears right off your head! The game only works on color monitors, and is one of the best strategic games I have ever played, maybe even better than FTL's "Sundog"! We already saw "Plutos" of Micro Value, but they have launched another game as well, called "Mouse Trap". It's a kind of "Blagger" (ex-C-64 or C-64 owners will now probably know what I'm talking about): You are a mouse that has to collect bits of food in several levels (an acquaintance of mine got to level 21...). You are hindered by the strangest creatures and many other things. The music will probably sound familiar to the same people I meant a few lines above - it sounds just like the music from "Super Pipeline". The graphics are quite well taken care of, but the game as a whole is not really a huge hit. I still prefer other games above this one, but I think it's not bad for starter's. We have had to wait long for "Ice & Fire", an English adventure from Germany (Nightrider Software & ICC). I had seen some screenshots in the computer magazine 68000'er, which seemed to promise a lot. But screenshots can be misguiding, and thus is the case with this graphic adventure which works with color-as well as monochrome monitors and which comes supplied on 3 double sided disks (that's why it's also called "The 2 Mbyte adventure"). When I saw the intro I at once put this game in the very top 3 of my favourite software titles - fantastic digitized hart beat, that slowly changes into a flashy piece of digitized music. The front picture is very good (also digitized, like all the other pictures) and everybody will undoubtedly think "Wow!" when they see it and listen to the music. But after the intro has finished playing, the game immediately drops down from 2nd to Xth place (where X can be any number, but higher than 100); the graphics are very blurry, the colors are trash, the vocabulary is very limited (words like "HUT" and "MOVE" result in an error) and altogether the game just takes up to much space for the 'quality' it offers. The overall quality is equally bad as the intro is good. It might very well be that Jens Werstein's plot/book is very good, but they should have put the whole thing in a more neat surrounding. Not something to get excited about, this game! Firebird has recently launched their first program for the ST: "The Golden Path". According to what I've heard this program will be the first in an impressive row in which "The Sentinel" and "Thrust" will also find their place (by the way, I'm currently negotiating with Firebird whether I'll be allowed to make an ST version of the "Thrust Rock Concert" as the music is also written by.....Rob Hubbard!). "The Golden Path" is a "King's Quest"-like arcade adventure with better graphics, some nice music and some thrilling digitized sound effects. In the game, you are a kind of druid that has to perform several tasks. You can walk from screen to screen and you have to fight the strangest creatures. There's quite some depth in this game, as many screens are enriched with long adventure-like texts. Although I do not particularly like this specific game, I can easily imagine that certain freaks can get hooked to it within seconds. I suppose it's one of those games that you either like or hate. Probe has recently done some arcade hall conversions for Namco: "Metro Cross" and "Xevious" are now launched on both the ST and the Commodore 64. The '64 versions are said to look really trashy, but the ST versions seem to look just like the arcade machines (as does another game that I will talk about in just a moment - "Prohibition"). "Metro Cross" is a very nice game, which is supplied with ultimately 'dry' music, however. But this does not spoil or disturb the playing fun. Frank has reached level 9 or so with a high score of a bit less than 100000. The target of the game is to run through a long hall that is covered with grass, booby-traps, jump-board, "Speed-up" pills, and much more. You must get from one end to the other within a certain time. Sounds easy but I can assure you that it isn't - especially level 6 is extremely difficult! "Xevious" is quite an ordinary shoot- 'em-up game, which can be compared the best with the '64 game "Flak". You are an airplane (which moves terribly slow - that makes it very difficult!) that has to blast everything that comes before the mouths of its guns. The scrolling background is not exactly beautiful, but the sprites are. However, I think the game's a bit too difficult to play for fun. A French program called "Prohibition" has also recently been published. It actually is a conversion from the arcade hall machine called "Street Fight", and a pal of mine (who always spends much money on arcade machines) told me it was just like the real thing! In the game, you are a Fed agent who has to kill bootleggers and trash of the same sort in the time of prohibition in the U.S. 1930s. You 'simply' shoot them from their positions in several buildings. The big disadvantage - they shoot back! A very challenging game which offers quite some room to kill - about 3x15 screens size to be exactly. The outer of this time's issue of ST NEWS definately is the program "Missile Command", a program published by Atari. I was used to reasonable programs from Atari (just have a look at "Millipede" and "Battle Zone" - I used to be addicted to the first one), but this one's really trash. It's a game in which the player has to protect several rocket launchers against multi- warhead nuclear missiles (a bit like "Armageddon" on the '64, but even worse). The game offers stupid graphics and, to make it even worse, it uses key controls. It really is a very bad product - and I hope to stay clean from trash of this kind in the future! My current list of worst software (games): Third place occupied by that game with the pink helicopter in a "Skramble"-like environment (I don't seem to remember its name - oh yeah, it was "Time Blaster"), second place (down from one) firmly held by Cosmi's "Super Huey". We now have a new number one: "Missile Command"! Another real trashy product is "Willy the Kid", a German adventure that offers rude graphics, stupid sound, a not very original plot and...German language. For Germans, it might be something to play for a few minutes but I am afraid that for people who do not master the German language this product is potentially trashcan-addictive! Mastertronics recently published "Ninja Mission" (remember? The game with the phantastic music that I mentioned in the previous issue) and has now also launched a kind of none-too-good flightsimulator called "Renegade". Again, the music is truly excellent, programmed by one if the best people currently around on the ST - David Whittaker. The front picture is also fine artwork, but the rest of the game is not really what some people tend to call a 'hit'. You simply have to blast everything out of the 3D sky that moves - not much of a challenge. I think the people at Mastertronic could have done better with the capabilities of the ST. The only reason that's left that would justify the game's purchase is perhaps the nice front page and the very good music. But that's where it stops. Oh. I almost forgot one more piece of software that could be previewed by me (I must say it was about time): "Star Trek" from Beyond. "Star Trek" has long been one of those programs that all computer owners wanted to see or wanted to play, but none of them had ever succeeded in doing so. And the thing that most people still don't know is that the preview version is going round. Beyond is currently finding out who was the bastard that spread their product (a serial number was contained in the program), and will not launch the final version (with more sound effects and more digitized stuff) before the guy's caught. I could now play with the review version for a while, anyway (and I must say a good acquaintance of mine solved the game in many hours of joyful playing - the fruits of his labour are published in the article "Solution to Star Trek" in this issue of ST NEWS) and I must admit that the game is very well taken care of. The graphics are truly excellent (Spock is  Spock, Scotty is  Scotty, etc.) and all sounds are very well digitized (although I have heard that the programmers took the music from TV, which takes care of quite some background noise). The one disadvantage of this (memory consuming) technique is that the sounds that are normally produced by the soundchip sound irritatingly loud (this is the case with the alarm sound). The intro music, by the way, is also very good (though non-digitized). What a pity that it only turned out to be the preview version! Altogether, "Star Trek" is quite the game most people expected from it. It is quite difficult to get used to while playing, and very difficult to solve (no doubt, this will be mentioned as well in the article I spoke of a few lines above). It's very much a winner for color monitor owners and semi-adventure freaks. The French people at Ere Informatique have once again launched a game that's very nice to play: "Altair". It's a kind of compromise between "Quasar" and "Plutos", but much, much more difficult. The sound effects are also very much better. The intro is made of some (digitized) music that doesn't sound really stunning as well as a well drawn presentation picture. The game isn't as addicting as "Plutos", but still offers quite some nice touches and the scrolling is just as smooth. The big advantage over "Quasar" is that it works normally, without having to load in a French TOS version first. Long expected, and finally there is Tommy Software's first game: "Dizzy Wizard". It's a very difficult game that works on color-as well as monochrome monitors. It has several characteristics of "Marble Madness" (no worry, I hereby don't refer to the ST version that still has to be waited for), but is much more difficult (I cannot say it too often). Although the game's not quite what I had expected from it, it's still fun to play (I suppose) for those who know how to handle the controls properly. The intro is made complete by some very 'dry' digitized music (building in digitized music in intros seemes to become a habit of most people - they'd rather use some hardware instead of programming decent sound). More news from the Public Domain software front. There's a new digitized music demo that offers stunning musical quality - The "MTV Digi Demo" from Scotland (unnecessary to say, it's included in our PD). It works on color, double sided disk drive and one Megabyte of memory (at least) and offers an excerpt from "Money for Nothing (Chicks for Free)" from the Dire Straits. Hooking up a heavy duty amplifier makes it sound just like CD, except for some noise that Dolby can't get rid of. "Mission Elevator" has also finally been launched for the Atari ST. Good news for the monochrome freaks - the game works on monochrome as well as color monitors! In the game, you are a secret agent that has to find certain keys to open doors, etc. It sounds a bit "Temple-of-Apshai"-like, but the graphics are much better, the setup is different (you're in a building with multiple floors, with elevators moving between them). You are hindered by villains that shoot to kill - lucky enough you can shoot back as well. A very nice game to play, I must admit. A bit like "Xevious" is the game "Sky Fighter". I really didn't like "Xevious" all that much, but this game's a bit better. Nice graphics flipping and quite nicely digitized intro music make it somehwat better than the other game. The rest is nearly exactly the same, but with strange things happening to your disk drive LED if you're throwing bombs. Not a real must for the arcade freak, but very well programmed so it seemed to me. Let's close this article with some quite hot news, compiled by Ruud van de Kruisweg from many issues of "Computer & Video Games" and other magazines. It concerns some of the forthcoming releases of many software manufacturers. Andrew Braybrook has sold rights to his game "Uridium" to an American company. It will now be rewritten for the Apple, IBM, Amiga and the Atari ST. "Uridium" used to be one of the very best games on the '64. Rob Hubbard also told me something about new products that would feature his music on the ST. Apart from "Thrust", which I mentioned earlier, he will also write the music for "Jupiter Probe" from Microdeal and he will probably also start working for Mastertronics (David Whittaker's domain - think of the very good music from "Ninja Mission" and the current Mastertronics release "Renegade") in a while. "You will be amazed at what you hear on the ST in a year's time!" Mr. Hubbard told me; optimistic notes from a guy that thought the ST to be too bad not more than one year ago. U.S. Gold has long ago announced the launch of "Gauntlet", and later published "Metro Cross" which I already mentioned, but now already enhances its list with "Gauntlet: The Deeper Dungeons", "Masters of the Universe", the "Boulderdash Construction Kit", a "Famous Courses of the World" extension for Access' program "Leaderboard", "Alternate Reality II" and "Roadrunner", while they also intend to convert "Indiana Jones" for the ST. Many companies are now advertising with "Gauntlet", so it should be there any moment now. "Knight Games", "Leviathan" and "Elektraglide" will be published by English Software, "The Living Daylights" will see the light soon at Domark's, "Phantasie" and "Roadwar 2000" will soon be joined by more SSI (Strategic Simulations, Inc.) products called "Rings of Zilfin", "Basketball", "Wizard's Crown", "Shards of Spring" and "Colonial Conquest". I recently had a shat with my good old 'friend' the Destroyer (currently on the Amiga, thank God), who told me that Activision would be launching "Enduro Racer" soon. Together with a list that I obtained that mentioned "Wonderboy", "Game Maker" (+ Library Disk), "Quartet", "Pebble beach" , "Zoids" and "Portal", (maybe even "Spindizzy"), this makes quite an extensive list of software to be launched by them in the near future. And Electronic Arts (that made those horrible ST versions of "Sky Fox" as well as "Arcticfox") decided not to stop launching software for the ST either. Sales of their previous ST products must have been impressive enough (strange, but true) so that they still want to write versions for the ST of "Return to Atlantis", "Golden Oldies" and good old "Marble Madness". Mirrorsoft obviously didn't want to keep their ST offerings limited to "Strike Force Harrier" and "Fleet Street Publisher" either; they already announced "Spitfire '40" (should be launched by now) and also want to publish "Orbiter", "Falcon" and "PT 109" shortly. They also intend to launch "The Bermuda Project", "3D Helicopter" and "F15 Flight Simulator". Mirrorsoft will also, so I've heard, be the European distributor for the Cinemaware stuff (see at the end of this article - just remember the name "Defender of the Crown"). SubLOGIC, the company that has made its name with the excellent "Flightsimulator II" (combined monochrome-and color version is now also available) also desires to launch some new products in the near future, of which "Jet" and the "Scenery Diskettes" will probably say most to you (the latter disks are for use with either "Jet" or "Flightsimulator II" itself). "Sub Battle Simulator" and "Summer Games" are written down high on the list of Epyx' forthcoming releases, whereas Mindscape (well known on the ST from "SDI", and writer of the graphically best game you've ever seen - on the Amiga - called "Defender of the Crown") will soon bring out "Deja Vu", "Sinbad", "King of Chicago" and.......yes! "Defender of the Crown"! Rainbird, well known from their excellent games "The Pawn" and "Starglider" as well as their less excellent adventure compilation "Jewels of Darkness", is still saying to launch "The Guild of Thieves" (the long awaited 'sequel' to "The Pawn"?) any month now, as well as some other stuff called "Tracker", "Over Westminster Bridge" and "Knight Orc" (the latter two will be adventures). Many screenshots of "The Guild of Thieves" have already found their way to several computer magazines, but the game is still not available as far as I now. Let's hope that their new products live up to the same (or higher) standard as their two best known products. The same can be said from System 3, known from "International Karate". They intend to make "The Last Ninja" and "Bangkok Nights" available before long. Ooough. My fingers start to hurt a bit and I suppose your eyes are hurting as well by now. But we're halfway (yes, much can be expected on the ST soon!)... Sierra on Line apparently also found their "Donald Duck's Playground" a success on the ST. What a shame. They now want to torture us with another childish game called "Mickey's Space Adventure" and a sequel (?) to the "King's Quest" series called "Police Quest". They will further publish "Aratoon" and "Leisure Suit Larry". Origin will bring "Ultima IV" and "Autoduell" out for the ST; these games will then be the flag ships of their impressive row of software. Most "Sundog" freaks hope that FTL (Faster Than Light) will soon launch the final version of their new arcade adventure "Dungeon Master". The demo was impressive, but was first sighted about one year ago - where is the actual program staying?! The U.S. company Microprose also wants to continue producing ST software. "F15 Strike Eagle", "Hellcat Ace", "Cruisade in Europe" and "Gunship" can be expected before long, and now it's only waiting for the launch of their best programs they made for the 64: "Kennedy Approach", "Solo Flight II" and "Acrojet"! Some bad news for Microprose: In Germany, people found their product "Silent Service" to be too realistic - it is not allowed to be sold there now! And Infocom never gets enough of writing more and more text adventures for all computers commonly available everywhere on the world - they have now said to launch "Hollywood Hijinx" and "Bueaurocracy" in a while. Psygnosis, well known from their early game "Brataccas" and their more recent games "Deep Space" and "Arena", will shortly launch "Barbarian" and "Terrorpods" (the latter hopefully before the summer hollidays). Now some last companies and games: Ocean (together with Imagine, they launched "Arkanoid") will launch "Tai-Pan", "Deathstar" and "Top Gun", Konami (reknown for arcade hall hits like "Yie-Ar Kung Fu", "Jailbreak" and "Comic Bakery") will launch "Nemesis", Logotron will publish "Xor", Micropool will launch "Nuclear Embargo", Penguin comes with "The Coveted Mirror", Kingsoft intends to bring "Karate King" (="Black Belt"?), Microleague will will write "WWF Wrestling", Atari will launch their classic "Robotron", Creative Sparks will offer "Vikings", The Edge will publish "Warlock", "Bobby Bearing" and "Fairlight Trilogy", Eidersoft will bring "Extravaganza" and "Xenon", Firebird will also launch "Elite" (yes, freaks!), "Droid" and "Pandora", Robtek will write "Checkmate", the Silica Shop will start selling some American stuff called "Electro Solitaire" and "Wizard of Oz", Polarware will bring "Frak & Ernest Adventure", "Guitar Wizard", "Video Vegas" and "Rainy Day Games", Brderbund is finally said to be bringing "Lode Runner", and finally, Mr. Minter's Llamasoft will soon give birth to yet another piece of distinctive entertainment software called "Colourspace II". Oooof. I sincerely hope to offer you as much news as I offer you this time in the next issue of ST NEWS, although this hope will probably be in vain. But there will definately be new programs then, so keep an eye on this column! THE SOLUTION TO SORCERER by Math Claessens BEFORE WE START, FIRST SOME THINGS. IN BELBOZ ROOM YOU SEE THE NAME OF A CREATURE IN A JOURNAL. REMEMBER THE NAME OF THE CREATURE,AND WHEN YOU ARRIVE TO THE CLOSED TRUNK LOOK TO THIS STORY. EVERY TIME YOU START THE ADVENTURE THERE IS ANOTHER CREATURE IN THE JOURNAL. WHEN YOU SEE:BLODWORM PRESS WHITE,GRAY,BLACK,RED,BLACK. BROGMOID PRESS RED,PURPLE,RED,BLACK,PURPLE. DRYAD PRESS BLACK,GRAY,WHITE,RED,RED. HELLHOUND PRESS PURPLE,WHITE,GRAY,RED,GRAY. YIPPLE PRESS GRAY,PURPLE,WHITE,PURPLE,BLACK. ORC PRESS RED,GRAY,PURPLE,GRAY,RED. ROTGRUB PRESS GRAY,RED,GRAY,PURPLE,RED. SURMIN PRESS BLACK,BLACK,PURPLE,RED,BLACK. NABIZ PRESS PURPLE,BLACK,BLACK,BLACK,RED. GRUE PRESS BLACK,BLACK,RED,BLACK,PURPLE. KOBOLD PRESS RED,PURPLE,BLACK,PURPLE,RED. DORN PRESS GRAY,PURPLE,BLACK,GRAY,WHITE. NOW WE START WITH THE SOLUTION: (TWISTED FOREST)-WAIT-FROTZ MYSELF (YOUR QUARTERS)-STAND-W (HALLWAY)-W (BELBOZ'S QUARTERS)-LIFT HANGING-GET KEY-OPEN DESK- GET JOURNAL-OPEN JOURNAL WITH KEY-READ JOURNAL-(READ CURRENT CODE AND REMEMBER IT)-E (HALLWAY)-S (HALLWAY)-S (LOBBY)-W (STORE ROOM)-GET MATCHBOOK-GET VIAL-E (LOBBY)-OPEN RECEPTACLE-PUT MATCHBOOK IN RECEPTACLE-CLOSE RECEPTACLE-OPEN VIAL-DRINK POTION-E (LIBRARY)-GET SCROLL-GNUSTO SCROLL-W-OPEN RECEPTACLE-GET ORANGE VIAL-DOWN (CELLAR)-(ENTER CURRENT CODE COLOR,SEE THE COLORS ABOVE BEHIND THE CREATURES,YOU HAVE SEEN THE NAME OF THE CREATURE IN THE THE JOURNAL)-NOW THE TRUNK IS OPEN-GET MOLDY SCROLL-AIMFIZ BELBOZ-NE (FOREST EDGE)-LEARN PULVER-E (MEADOW)-NE (RIVER BANK)- PULVER RIVER-DOWN (RIVER BED)-NE (HIDDEN CAVE)-GET ALL-DOWN (PIT OF BONES)-SW (DUNGEON)-UP (RUINS)-W (DRAWBRIDGE)-W (MEADOW)-NE (RIVER BANK)-SE (FORT ENTRANCE)-E (PARADE GROUND)-PULL ROPE-DROP KEY-DROP JOURNAL-GET FLAG-EXAMINE FLAG-DROP FLAG AND OCHRE VIAL AND AMBER VIAL-GNUSTO SCROLL-GET AQUA VIAL-E (GUN EMPLACEMENT)- PUT GUANO IN CANNON-GET SCROLL-W (PARADE GROUND)-W (FORT ENTRANCE)-NW (RIVER BANK)-SW (MEADOW)-W (FOREST EDGE)DOWN (SNAKE PIT)-DOWN (SLIMY ROOM)-S (CRATOR)-W (EDGE OF CHASM)-LEARN IZYUK- IZYUK MYSELF-W (BARE PASSAGE)-W (ELBOW ROOM)-N (TREE ROOM)-GET COIN-S-E-LEARN IZYUK-IZYUK MYSELF-E (EDGE OF CHASM)-E(CRATOR)- SLEEP-S (WINDING TUNNEL)-SW (PARK ENTRANCE)-W (PARK ENTRANCE)- GIVE COIN TO GNOME-W (EAST END MIDWAY)-W (WEST END)-S (ARCADE)- OPEN AQUA VIAL-DRINK AQUA POTION-GET BALL-THROW BALL AT BUNNY-N-W (CASINO)-GNUSTO MALYON-(PULL LEVER UNTIL YOU HAVE WON ONE COIN- GET COIN-E-E-E-NE-N-NE (EDGE OF CRATER)-NE (BEND)-E (HIGHWAY)-E (TOLL GATE)-WAKE GNOME-GIVE COIN TO GNOME-E (OUTSIDE STORE)-E (END HIGHWAY)-N (ENTRANCE HALL)-N (OUTSIDE GLASS ARCH)-LEARN FWEEP-LEARN FWEEP-LEARN FWEEP-LEARN FWEEP-LEARN FWEEP-DROP ALL-E (INSIDE GLASS MAZE)-FWEEP MYSELF-N-E-S-S-W-DOWN-E-E-N-N-UP-UP-S-E (HOLLOW)-GET SCROLL-PUT SCROLL IN HOLE-FWEEP MYSELF-W-W-S-E-DOWN- DOWN-W-W-UP-UP-N-N-DOWN-E-FWEEP MYSELF-S-E-N-DOWN-W-S-W-UP-W- WAIT-WAIT-SLEEP-GET ALL-S (ENTRANCE HALL)-S (END HIGHWAY)-E (STONE HUT)-GET SCROLL-GNUSTO PARCHMENT SCROLL-W-W-W-W-W-SW (EDGE OF CRATER)-SW-S (WINDING TUNNEL)-S (HALL OF CARVINGS)-YONK MALYON-LEARN MALYON-MALYON DRAGON-OPEN ORANGE VIAL-S (SOOTY ROOM)-E (COOL BIN ROOM)-DRINK VILSTU POTION-(REMEMBER THE COMBINATION THAT YOUR TWIN TELLS YOU)-GIVE BOOK TO TWIN-E (DIAL ROOM)-TURN DIAL TO ...(NUBER FROM TWIN)-OPEN DOOR-E (SHAFT BOTTEM)-GET ROPE-UP (SHAFT TOP)-SW (COAL MINE)-GET TIMBER-E-NW- W(TOP OF CHUTE)-TIE ROPE TO TIMBER-PUT TIMBER ACROSS CHUTE-PUT ROPE INTO CHUTE-DROP ALL-CLIMB DOWN ROPE-GET SCROLL-GOLMAC MYSELF-OPEN LAMP-GET SMELLY SCROLL-E (COAL BIN ROOM)-(NOW TYPE):TWIN,THE COMBINATION IS ...(NUMBER)-ASK TWIN FOR SPELL BOOK-DOWN (LAGOON SHORE)-SLEEP-LEARN MEEF-DROP BOOK-E (SURFACE LAGOON)-DOWN (LAGOON FLOOR)-MEEF WEEDS-GET CRATE-(IF YOU DON'T GET THE CRATE,FIRST GO SLEEP)-UP-W-DROP CRATE-GET SPELL BOOK- GNUST VARDIK-OPEN CRATE-GET SUIT-NE (OCEAN SHORE NORTH)-N (MOUTH OF RIVER)-LEARN MEEF-MEEF VINES-W (GRUE LAIR)-W (MAMMOTH CAVERN)- OPEN WHITE DOOR-LEARN VARDIK-VARDIK MYSELF-LEARN SWANZO-SWANZO BELBOZ----------THE END IF YOU ARE STUCK IN A ADVENTURE CALL ME; MAYBE I CAN HELP. MATH CLAESSENS WAGENAARSTRAAT 58 6164 XM GELEEN THE NETHERLANDS TEL: 04494-52532 NEW G-DATA SOFTWARE by Richard Karsmakers Mr. Figge from G-DATA Software (Siemensstr. 16, 4630 Bochum 1, West Germany) recently sent me some review stuff - "G-Ramdisk II" and "AS Sound Sampler". In this article I will try to cover both programs as good as possible. Let's start with the first: "G-Ramdisk II". I really haven't worked much with their "G-Ramdisk (I)", but I do not seem to be able to discover any differences or enhancements. Only the presentation is different, and the new version creates a dummy file on the disk it uses on boot-up (the only disadvantage as far as I could see). "G-Ramdisk II" offers a built-in printer spooler, RAMdisk facilities (including a reset-resistant RAMdisk!), and this at a price of DM 49,-. Very affordable indeed. It can be turned off as well, and is said to be resistant even after a system crash! Even more interesting is their "AS Sound Sampler", costing DM 79,-. It is a program that allows the recording and playing of sounds through a so-called sound digitizer. We haven't actually built the sound digitizer belonging to this package (costing DM 129,- as a ready device), but tried the software with the hardware from the "Pro Sound Designer" from Eidersoft, of which we will publish an extensive test/review in the upcoming issue of ST NEWS. The software is not really userfriendly, and several options were not included in the version I obtained - MIDI playing for example wasn't included yet. One automatically compares the program with the "Pro Sound Designer" software, which is super-userfriendly but which doesn't offer the same quality. It is possible to record about 2'30'' of reasonable quality sound on a one Megabyte machine with the help of "AS Sound Sampler", whereas the highest quality (which is HIGH indeed) 'only' allows 40 seconds of music to be recording. Please note: If you have recorded your memory filled to the top, you'll need a maxi-formatted disk (double-sided) to store it! All the people that have bought sound digitizers (e.g. the hardware from "Pro Sound Designer" should really use this program instead. It offers quite limited possibilities, but the quality is the highest that can be obtained. But I would very much more like the program if it had been possible to break off recording or playing with a key combination or so, which is now quite impossible. Also, the documentation supplied with the package is not really extensive (can be compared with 6 DIN A4 pieces of paper). If the program could maintain the quality it has, but at the same time could offer the user-friendlyness of the "Pro Sound Designer" from Eidersoft, it would be the very best program available! . '.. 'MODULA_2 (NEW_ICON L3PSAVE BAST8. ).. )CPUMODE DEF *wCPUMODE LNK-CPUMODE MOD 0CPUMODE SYM3lPROGRAM DEF5PROGRAM LNK8|PROGRAM MOD; PROGRAM SYM@TRAPTESTLNKB NTRAPTESTMODE"+TRAPTESTPRGI-8(**************************************** * * * CPUMode (definition) * * ****************************** * * * * Implementation for ATARI ST * * * * To switch you from user mode * * into supervisor mode with a * * choice of stack (USP/SSP). * * * * Version 1.0 of 27.4.86 * * * * Stichting MODULA Nederland * * Bakkersteeg 9 A * * 2311 RH LEIDEN * * * *+++++++++++++++++++++++++++++++++++++++* * * * Author: R.J. van der Kamp * ****************************************) DEFINITION MODULE CPUMode; (* in the manuals of GEMDOS there is no mention of function number 32 ( 20h ). This function brings you into or out of supervisor mode. See the expanation in the definition module. *) FROM SYSTEM IMPORT ADDRESS; EXPORT QUALIFIED Mode ; PROCEDURE Mode ( stack : ADDRESS ) : ADDRESS ; (* We use TRAP #1 , function number 20h *) (* 'stack' can be: -1=0FFFFFFFFh = proc returns 1 for super mode, 0 for user mode 0= supervisor stack will be same as user stack when going from user to super mode. Then old value of systemstack pointer will be returned, so you can (and have) to reset this system stack pointer. The call toggles you between super and user mode. /***********************************************/ MODULE TEST; (* Demo: how to use this all *) FROM SYSTEM IMPORT ADDRESS; FROM CPUMode IMPORT Mode; VAR savedssp,dummy : ADDRESS; BEGIN /* now doing user mode actions */ savedssp := Mode(0); /* now super mode, using user stack as system stack */ /* do here the super things */ dummy := Mode(savedssp); /* now back in user mode, stack ok. */ END TEST. /************************************************/ *) END CPUMode. 5HCPUModevZEG,pNNVp"./?< NA*-E N^NupN9Z(NpNNVN^N.I p(**************************************** * * * CPUMode (imp) * * ****************************** * * * * Implementation for ATARI ST * * * * To switch you from user mode * * into supervisor mode with a * * choice of stack (USP/SSP). * * * * * * Version 0.3 of 17.4.86 * * * * Stichting MODULA Nederland * * Bakkersteeg 9 A * * 2311 RH LEIDEN * * * *+++++++++++++++++++++++++++++++++++++++* * * * Author: R.J. van der Kamp * ****************************************) IMPLEMENTATION MODULE CPUMode; (* in the manuals of GEMDOS there is no mention of function number 32 ( 20h ). This function brings you into or out of supervisor mode. *) FROM SYSTEM IMPORT ADDRESS,REGISTER,SETREG,CODE; CONST D0 = 0 ; D1 = 1 ; (* modula reg numbers *) trap1 = 4E41h; (* TRAP #1 *) cleard0 = 7000h ; (* MOVEQ.L #0.D0 *) stackd1 = 2F01h ; (* MOVE.L D1,-(SP) = *) stackfunctionnumber = 3F3Ch ; (* MOVE.W #xxxx,-(SP) *) PROCEDURE Mode ( stack : ADDRESS ) : ADDRESS ; BEGIN CODE(cleard0); SETREG(D1,stack); CODE(stackd1); CODE(stackfunctionnumber,20h); CODE(trap1); RETURN REGISTER (D0); END Mode; BEGIN (* no initialising actions *) END CPUMode. vZCPUModevZCPUModeSYSTEMModeModeSYSTEMADDRESSSYSTEMADDRESSDEFINITION MODULE Program;(*voorlopige versie;wordt aangevuld. *) FROM SYSTEM IMPORT ADDRESS; FROM GEMX IMPORT ErrorProcessorType; EXPORT QUALIFIED AddShutDowner,NormalExit,FatalError,SimpleAlert, Mode ; TYPE ShutDownProc = PROCEDURE(); VAR oldErrorProcessor : ErrorProcessorType ; PROCEDURE AddShutDowner(formal : ShutDownProc); PROCEDURE NormalExit; PROCEDURE FatalError (VAR s : ARRAY OF CHAR); PROCEDURE SimpleAlert(VAR s : ARRAY OF CHAR); PROCEDURE Mode ( stack : ADDRESS ) : ADDRESS ; (* We use TRAP #1 , function number 20h *) (* 'stack' can be: -1=0FFFFFFFFh = proc returns 1 for super mode, 0 for user mode 0= supervisor stack will be same as user stack when going from user to super mode. Then old value of systemstack pointer will be returned, so you can (and have) to reset this system stack pointer. The call toggles you between super and user mode. /***********************************************/ MODULE TEST; (* Demo: how to use this all *) FROM Program IMPORT Mode; VAR savedssp,dummy : ADDRESS; BEGIN /* now doing user mode actions */ savedssp := Mode(0); /* now super mode, using user stack as system stack */ /* do here the super things */ dummy := Mode(savedssp); /* now back in user mode, stack ok. */ END TEST. /************************************************/ *) END Program. 5HProgramGEMX6GEMDOSTl~1AESFormsTlStrings4GM2Conversions4tr v~ <HNNV?<4HyN\?9?<?<PHnNO *<(9 /?<?<PHn NO ?<Hy6?<PHn?<PHn\NO?<PHn\?< Hy@?<PHnNO?<PHn?<PHn ?<PHnNO?<PHnN\N^Nu 2`  $ 6 @V F \j 5  { a pNNVUBgNT_N^Nu + .zPpNNV yo(nN?<+HyLN\:9KEI)PRyN^NuV4VUVm"V (V0W 3e3 33 $4 (44.4sRUNTIME ERROR !|Re-boot if no further|messages appearERROR # at Offset Increase lastShutDowner in module 'Program' [3][FATAL ERROR|][BAH][1][][BAH]IMPLEMENTATION MODULE Program; IMPORT GEMX, GEMDOS, AESForms; FROM SYSTEM IMPORT ADDRESS,REGISTER,SETREG,CODE; FROM Strings IMPORT String,Concat; FROM M2Conversions IMPORT ConvertInteger,ConvertAddrHex; CONST lastShutDowner = 128; D0 = 0 ; D1 = 1 ; (* modula reg numbers *) trap1 = 4E41h; (* TRAP #1 *) cleard0 = 7000h ; (* MOVEQ.L #0.D0 *) stackd1 = 2F01h ; (* MOVE.L D1,-(SP) = *) stackfunctionnumber = 3F3Ch ; (* MOVE.W #xxxx,-(SP) *) (* from Definition: VAR oldErrorProcessor : GEMX.ErrorProcessorType; *) VAR nrShutDowners : INTEGER; ShutDowner : ARRAY[0..lastShutDowner] OF ShutDownProc; PROCEDURE RunTimeErrorHandler; VAR s,s1,s2,dest : String; BEGIN SimpleAlert('RUNTIME ERROR !|Re-boot if no further|messages appear'); ConvertInteger(GEMX.ErrorContext.Error,4,s); ConvertAddrHex(GEMX.ErrorContext.PC - ADDRESS(RunTimeErrorHandler),8,s2); Concat('ERROR # ',s,s1); Concat(s1,' at Offset ',s); Concat(s,s2,dest); FatalError(dest); END RunTimeErrorHandler; PROCEDURE Halt(); VAR dummy : BOOLEAN; BEGIN dummy := GEMDOS.Term(0) END Halt; PROCEDURE AddShutDowner(formal : ShutDownProc); BEGIN IF nrShutDowners > lastShutDowner THEN formal(); FatalError("Increase lastShutDowner in module 'Program' "); END; ShutDowner[nrShutDowners] := formal; INC(nrShutDowners); END AddShutDowner; PROCEDURE NormalExit; VAR i : INTEGER; BEGIN FOR i := 0 TO nrShutDowners-1 DO ShutDowner[nrShutDowners-1-i]() END; Halt; END NormalExit; PROCEDURE FatalError( VAR s : ARRAY OF CHAR); VAR dummy : INTEGER; as : String; BEGIN Concat("[3][FATAL ERROR|",s,as); Concat(as,"][BAH]",as); dummy := AESForms.FormAlert(1,as); NormalExit; END FatalError; PROCEDURE SimpleAlert( VAR s : ARRAY OF CHAR); VAR as : String; dummy : INTEGER; BEGIN Concat("[1][",s,as); Concat(as,"][BAH]",as); dummy := AESForms.FormAlert(1,as); END SimpleAlert; PROCEDURE Mode ( stack : ADDRESS ) : ADDRESS ; BEGIN CODE(cleard0); SETREG(D1,stack); CODE(stackd1); CODE(stackfunctionnumber,20h); CODE(trap1); RETURN REGISTER (D0); END Mode; BEGIN (* init actions of Program *) nrShutDowners := 0; oldErrorProcessor := GEMX.ErrorProcessor ; GEMX.ErrorProcessor := RunTimeErrorHandler; END Program. Program6GEMXSYSTEMErrorProcessorType ErrorProcessorTypeProgramSYSTEMGEMXShutDownProcAddShutDownerNormalExitFatalErrorSimpleAlertModeoldErrorProcessor ShutDownProcAddShutDownerShutDownProcNormalExitFatalError CHARSimpleAlert CHARModeSYSTEMADDRESSSYSTEMADDRESSoldErrorProcessorGEMXErrorProcessorType5HTrapTest<0uGEMDOSTl~XProgramGEMX6IaBIOSTkp1CPUModevZi4*m` pNNVIG* )EN^Nu yH~*#*#(y: g O\NNh*#(y Tg, yL~ *#*#*9 yNN(y: g0(yG&6*#(yG(8N NhN`3(<*NTRy( yQ(f yL~ *#*#*9pNsjt6 <NHT\^bh8t>n [1 !"pNNV?<+/9N\N^Nu >NpNNVNY?<+NT#Y?<NT#?<+/<N\/<NXYBNX#~?NKT~?NKTY/9NX#"NN^N # C {( 4<; F L TW Z f9n= w "(**************************************** * * * TrapTest (program) * * ********************************** * * * * How to use the TRAP's of the * * 68000 CPU in the Atari ST * * computers. * * * * * * * * * * Written for TDI Modula 2 * * compiler and linker of release * * 3 of april 1987 by: * * R.J.van der Kamp * * Stichting Modula Nederland * * Bakkersteeg 9a * * 2311 RH Leiden-Holland * ****************************************) MODULE TrapTest;(*to catch your own traps *) IMPORT GEMDOS; IMPORT Program; (* for all needed shut-down actions *) FROM SYSTEM IMPORT ADDRESS,CODE,ADR,SETREG,REGISTER,TSIZE; FROM BIOS IMPORT SetException,GetException; FROM CPUMode IMPORT Mode; (****************************************************) (* The following TRAP's are in use when the program *) (* starts up in a newly powered up ST machine with *) (* only TOS in ROM and no boot-disk in the drive and*) (* also no extra cartridges in the ROM port etc. *) (* *) (* TRAP 0 not in use *) (* TRAP 1 GEMDOS interface *) (* TRAP 2 BDOS (GEM,GSX) *) (* TRAP 3->4 free *) (* TRAP 5 IOTRANSFER of TDI Modula runtime system *) (* TRAP 6 reserved for runtime system *) (* TRAP 7 TRANSFER of TDI runtime system *) (* TRAP 8 modula runtime errors *) (* TRAP 9->12 free *) (* TRAP 13 GEMBIOS *) (* TRAP 14 BIOS extensions *) (* TRAP 15 possible use for TOS directory bug *) (****************************************************) (* in this program TRAP 11 is used *) CONST trap11VectorNr = 43; (* =172 div 4 *) VectorNr5= 5 ; trap11 = 4E40h + 0Bh; (* assembler code TRAP #11 *) A0=8; A7=15; D5=5; D7=7; (* reg nrs according to TDI *) TYPE (* names of the bits in the status register of CPU60000: *) status = ( carry,overflow,zero,negative,extend, res1,res2,res3, int1,int2,int3, res4,res5,supervisor,res6,trace ) ; statusRegister = SET OF status; (* an exception places info on the system stack in the form: *) exceptionFrame = RECORD stat:statusRegister; (* as before exception *) PC:ADDRESS (* Program Counter: address of last instr*) END; (* For a bus- or and address error the system stack is different: *) (* This is true for our CPU68000, but not For a CPU68010 accessType = (b15,b14,b13,b12,b11,b10,b9,b8,b7,b6,b5, readAborted,exceptionProcessing,functionCode); instructionRegister = WORD; functionFrame = RECORD access: SET OF accessType; toCurrentCycle: ADDRESS; instruction: instructionRegister; status : statusRegister;) PC : ADDRESS; END; *) (* Before doing a trap it is a normal thing to give the *) (* traphandler some info about its params and wanted actions. *) (* The code that wants the trap to be activated should, *) (* according to good programming rules for the TOS system, *) (* place its params simply on the stack. Here only one number *) (* is visualised to be on the stack. Is there more, make the *) (* function frame according to your wishes: *) functionFrame = RECORD fNr:CARDINAL; (* function number, according *) (*to the TOS way of doing trap s*) (*the first to have on the stack*) (* other stuff on stack , mostly parameters *) END; (* In principle a trap should be reentrant. So make your own *) (* stack space; do not count on enough space on the system *) (* stack : *) regStack = RECORD heap :ARRAY [0..255] OF ADDRESS; (* stackspace*) SP:ADDRESS (* my own current stack pointer *) END; VAR oldTrap11, (* restore in the end the old status *) errorVector : ADDRESS;(* for making a runtime error *) savedExcFrame : exceptionFrame;(* we make a copy *) toExceptionFrame : POINTER TO exceptionFrame; toFunctionFrame : POINTER TO functionFrame; regSaved : regStack; (* we save all used reg in traphandler *) savedD5 : ADDRESS;(* SETREG destoys D5 *) savedSSP,dummy : ADDRESS;(* for switching user-supermode and back *) ch : CHAR; i : INTEGER; PROCEDURE InitRegisterStack; (* to set the initial stackpointer for the stack that is used to save the registers during a trap *) BEGIN WITH regSaved DO SP:= ADR(SP) END END InitRegisterStack; (*$P- *) PROCEDURE NewTrap11(); (*************************************************) (* New Handler for TRAP #11 *) (* Always executed in supervisor mode *) (* There is on the stack : *) (* .. .. *) (* stuff on stack *) (* given StackPtr -> 0 function number *) (* *) (* .. .. *) (* PC0 PC1 --| *) (* PC2 PC3 | exc. frame *) (* SSP (A7) -> SRH SRL --| *) (* *) (* SSP= system (supervisor) Stack Pointer *) (* given Stackptr=stack pointer from caller *) (* =SSP+6 als caller in supermode *) (* =USP (user stack ptr)(usermode)*) (*************************************************) BEGIN (* CPU in supervisor mode *) SETREG(A0,regSaved.SP);(* save used regs *) CODE(48E0h,047Eh); (* MOVEM.L D5/A1-A6 -(A0) *) regSaved.SP:=REGISTER(A0); (* now get the pointer to the exception frame *) toExceptionFrame:=REGISTER(A7); (* SSP *) (* now get the pointer to the function frame *) IF supervisor IN toExceptionFrame^.stat THEN (* the frame is also on the supervisorstack *) CODE(204Fh); (* MOVE.L A7 A0 *) (* A7=SSP *) CODE(0D0FCh,TSIZE(exceptionFrame)); (* ADDA.W size,A0 *) ELSE (* on user stack, so very simple: *) CODE(4E68h); (* MOVE USP A0 *)(*priviliged instr*) END; toFunctionFrame := REGISTER(A0); (* what kind of action is to be done? *) (* we have put a word on the stack to indicate *) IF toFunctionFrame^.fNr <> 19 THEN (* do the trap in the old manner *) SETREG(A0,regSaved.SP); (* set all regs back *) CODE(4CD8h,7E20h); (* MOVEM.L (A0)+ D5/A1-A6 *) savedD5:=REGISTER(D5); (* next statement uses D5 *) regSaved.SP:=REGISTER(A0);(* set stackpointer back *) SETREG(D5,savedD5); (* D5 got smashed in last instr*) SETREG(A0,errorVector);(* normally oldtrap11handler *) (*force a Modula runtime error handler active now *) CODE(4ED0h); (* JUMP (A0) *) (* instead of this,you could always jump to the old *) (* traphandler that was inexistence before your own *) (* handler was installed. This can be very useful, *) (* because you can now catch for instance the system*) (* trap number 1 function 5 ( prit a character to *) (* the standard (parallel ) printer port) and switch*) (* the output to a disk file while retaining all the*) (* other BDOS functions. *) ELSE (* my special trap catcher: *) (* --------------------- *) (* depending on the kind of function, the amount of info *) (* that was placed on the stack can de different. *) (* get stuff from stack with yyy:= toFunctionFrame^.xx *) IF supervisor IN toExceptionFrame^.stat THEN (* the function frame is 'in' the exception frame *) savedExcFrame := toExceptionFrame^; (* save exception frame *) (* remove the function frame from the super system stack*) CODE( 0DEFCH, TSIZE(functionFrame)); (* ADDA.W size, A7 *) toExceptionFrame := REGISTER(A7); (* replace frame pointer *) toExceptionFrame^ := savedExcFrame;(* replace exceptionframe *) ELSE (* remove the function frame from user stack *) CODE(4E68h); (* MOVE USP A0 *) (* privileged instr *) CODE(0D0FCh, TSIZE(functionFrame)); (* ADDA.W size, A0 *) CODE(4E60h); (* MOVE A0 USP *) (* can only be done in super mode *) END; (* now both the two stacks are in the good state to continue, and *) (* ending this proc with a RTE instruction is possible later on. *) (* do your things ( trap handling actions ) here *) (*------------*) FOR i := 1 TO 80 DO GEMDOS.ConOut('*') END; (*------------*) (* get old regs back, restore CPU to old state *) SETREG(A0,regSaved.SP); CODE(4CD8h,7E20h); (* MOVEM.L (A0)+ D5\A1-A6 *) savedD5 := REGISTER(D5);(* next statement destroys D5 *) regSaved.SP := REGISTER(A0); SETREG(D5,savedD5); (* and return from this exception with a clean stack *) CODE(70FFh); (* MOVEQ #-1, D0 *) (* set a return error code *) CODE(4E73h); (* RTE *) (* and the stacks are ok for this *) END; END NewTrap11; (*$P+ *) (* the next procedure should always be activated when this *) (* trap test program ends , either normally or abnormally *) PROCEDURE ResetTrap11; (* this is a decent thing to do : *) (* never leave an address of a procedure that is not *) (* available after this program ends *) BEGIN SetException(trap11VectorNr,PROC(oldTrap11)) END ResetTrap11; BEGIN InitRegisterStack; oldTrap11 := GetException(trap11VectorNr); errorVector := GetException(VectorNr5); SetException(trap11VectorNr,NewTrap11); Program.AddShutDowner(ResetTrap11); savedSSP := Mode(0); (* to super mode here *) SETREG(D7,19);(* a normal trap *) CODE(3F07h); (* MOVE.W D7, -(A7) *) CODE(trap11);(* TRAP #11 *) CODE(548Fh) ;(* ADDQ.L #2, A7 *) SETREG(D7,15); (* a runtime error is done *) CODE(3F07h); (* MOVE.W D7, -(A7) *) CODE(trap11);(* TRAP #11 *) CODE(548Fh) ;(* ADDQ.L #2, A7 *) dummy := Mode(savedSSP);(* back to user mode*) Program.NormalExit; END TrapTest. `PN _b ШNYN"pNGNuNV*x ڄ=E*P-E@-M-VNh-H ng nf-n*.P-ENB nf Nh-hN. nf BBN n e Nh-PN-n IX8B,)n9n)n )n)n)n|.n 9T/@>,VNhYN`NsN^NuNVBn:.EIBtPRn nfI* -EI* -EI* -EI* -EI* -Ez-E=| Bn=|BnBn <I* "NB=|N=|=|=|Bn=|z-E <I* "NB=|4=|=|=|Bn=|(mI* -E <I* "NB=|Bn=|BnBn <I* "NBNpL?09XNAN^NuNV/-+NIGz+WBn:.IJ4PgRn`=yX n d:.I0PN(z:. HEBEHE HEx0D8.I@Rnz:. HEx0D8.I@RnI:GzWBn:.I8.nGP@Rn:.IJ4Pg`N+_N^Nu OAbrpNGNuF'/NNn-/=-/H"Q ,IL?/^>/^Nf,oNsF'/NNn-/=-/H"Q G*- =/^Nf,oNs/NNn-/=/-/H _"h$",HL?/^>/^Nf,oNsF'SSfWWNsSf>NsSfF NsSfNqNsSf N0NsNhBBB 9!B*H$C! `N <L? <NAN`WNsNVHx". $.bBCh8BAHA62HC6BAHA`B6HCBAHA8<㑲eRCQ-C -ALN^NuF'pN0NsF'pN0NsF'pN0NsF'pN0NsF'pN0NsF'pN0NsNV . /2.??<NM*-E n b:.EI)PN:.E EI)PN^NuNV/9?<N:\/9?<N:\/9?<N:\/9?<N:\/9?<N:\/9?<N:\/9?<'N:\/9?<&N:\/9?<%N:\N^NuNqNqNq O h*#P(yP# ( ШШ(y*,Ѕ.@//??<JNA (yP*,ڬ ڬڬ#/<?<N:\/<?<N:\/<?<N:\/<?<N:\/<?<N:\/<,?<N:\/<?<'N:\/<V?<&N:\/<?<%N:\#LTpNGNGEMXModula-2/ST (c) Copyright Modula 2 Software Ltd. 1985,1986,1987. (c) Copyright TDI Software Inc. 1985,1986,1987. The team : Chris Hall, Paul Curtis, and Phil Camp .[3][Modula-2 Run Time Error : | | #][OK]NV?.?. NA*-E N^NuNVY?<z.?aX-_N^NuNVY?<L?.aXJWDE N^NuNVIF89n9n 9n 9n <I* "NB3r=yN^NuN8NVI(B BBBBIGF* (G(* )EGP* )EGr* )E G* )EG* )EN^N |NV3P(n* #U?<4?<?<?<BgNO =_N^NuNVB9N^NuNVU:. ?(nHTa`\=_:.REnd :.RE=EBn:.SE?0.WoN&:.(n8.&nP@0.WlRn`T:.nb:.(nPN^NuNVU:.?(nHTa\=_U:.?(nHTa\=_:.nJEf(nN:.n8. TDEc`N~:. ?(nHT:.?(nHTaO =n:.nSE?0.WcN*:.n(n8.&nP@0.WdRn`T:.n(nPN^NuNVBn:. ?0.WcN.:.(n4P9f =nN^Nu0.WdRn`T:. RE=EN^NuNNVaN^N NVBy:.JElDE3/9?.<< Jn]D:. ?(nHTa8ON^NuNV/.?.<< B':. ?(nHTa ON^NuNVBnz. N Rz-ERn:.IBPN2z-ERn:.IHPNz -EN N D(Rn/./.N.-_z cz0ڮ8.I@Nz7ڮ8.I@/./.NX-_Jg`J.gRn:.I-P:.ndBnN:.n=EBn:.nd:.(nPN:.I8.&nP@SnRnJng`:.n b :.(nB4PN^Nu <HN@NV?<4HyNN\?9X?<?<PHnN O *< p(9\/?<?<PHn N O ?<Hy?<PHn?<PHn\N :O?<PHn\?< Hy?<PHnN :O?<PHn?<PHn ?<PHnN :O?<PHnN(\N^NupN@NVUBgNxT_N^NupN@NV yo(nN?<+HyN(\:9KEI)PRyN^NupN@NVBn:9SE?0.WoN6:9SEnKEIH(tPNL 0.WlRn`TNRN^NupTN@NV?<Hy:. ?(nHT?<PHnN :O?<PHn?<Hy?<PHnN :OU?<?<PHnN `P=_NN^NupTN@NV?<Hy:. ?(nHT?<PHnN :O?<PHn?<Hy?<PHnN :OU?<?<PHnN `P=_N^NuN vpN@NVBy#T# pTN^NTRUNTIME ERROR !|Re-boot if no further|messages appearERROR # at Offset Increase lastShutDowner in module 'Program' [3][FATAL ERROR|][BAH][1][][BAH]NV/.?. ?<NMN^NuNVHx?.?<NM*-E N^NupN@NVp"./?< NA*-E N^NupN(NpN@NVN^NpN@NVIG* )EN^Nu yH~*#*#(y: g O\NNh*#(y Tg, yL~ *#*#*9 yNN(y: g0(yG&6*#(yG(8N NhN`3<*NXTRy yQf yL~ *#*#*9pNspN@NV?<+/9N\N^NuNNpN@NVNhY?<+NT#Y?<NT#?<+/<N\/<NrXYBN"X#~?NKT~?NKTY/9N"X#NN^Nu<@ *lD 2         (          F(    P20 rjD "  $   $             . M3.. MGEMSTARTPRGN4NEW_ICONICNQ6`rAl BgHz~?<=NAPJ@jHz{?< NA\?<NAT`K:Hz/<@??<?NA JkrAB(??<>NAXB?< NA\Ot#,*|:<JgXQHy;?< NA\`(E**EV$/?< NA\OABg/?<1NABgNAp,g4A& PB y,C"C #, h h$h C"Nu o Pf#, zCfHy?<NA\?<'Hz?<NNAPJ@fjKB@|ߐ<A??<NAXRI:<?JgQ:<? $\gQRBHyJ?<;NA\ o PgTgf zR->+}R7z6R?kR;7or+ڲu}dmGfABASIC0 RRRR^^brrrrANTWOORD FILE_BEKENDXYZDUMMYFILE1MFILE2 OPSLAG_START LENGTE_FILEAANTAL_VARIABELENTOTAALBYTET1T2TLOCATIE LENGTE_DEEL1 LENGTE_DEEL15 LENGTE_DEEL2GROEPWAARDEXYBHBYTEGROEPLABEL1INTRO LEES_BYTESVERANDER_BYTES SCHRIJF_BYTES Psave reverse 1.00  s,A GfA BAsic program written by S. Nijssen  8Translating done by Richard Karsmakers, June 5th 1987  eXFe,FGYF**`` !`` F  X |JF6)!$Not enough Memory...|Remove Ram-disk!!OK!F7`F! F! ! |FgEzz Fe|FEF EFEYFE>Y(! ",Which GfA Basic file should be treated ?Fef\*.BAS!!Fk  JF8EFile & cannot be found|on this disk, sorry..F)!!!OK!FaEF FE FK 7I!M!F EsM F8MFM   `JF EFile  is too shortF|)!!!OK!Fs-F! F !F YF0Y(! "Under which name should I save?Ff\*.BAS!!FeYF&Y(! "Be patient please. "Fl EHHF",FH EFEG FgE F F   JFYF(EFile  is no|GFA Basic file.F)!!!OK!Fs-F! F ,F!,F! @ JF4)!#This disk is full|Take another one!!!OK!F-FD F deel1!!`Fe2deel2!`!``F,   Now make the middle (part15) o aEF EF EGF EF!F !F !F EFF 6JFEF EF FE Fdeel15!!F7I!M!deel1F EsM F8MFM7I!M!deel15F EsM F8MFM7I!M!deel2FF EsM F8MFMdeel1!Fldeel15! Fdeel2!  Fl!!   FlYFB File ""0 can now be loaded into GfA Basic and run/listedFFJE To make the program run properly again, you'll first have to performF some proceedings:FmF" 1) Stop this program.F. 2) Load file "" in GFA Basic.F82 3) Write this file with help of 'Save,A' .Fs 4) Enter 'New'.F:5 5) Load the latter file with help of 'Merge'.F60 6) Save this file on disk with 'Save' .FgF0HC If the listing does not contains strange sign now anymore, it willF*$ be possible to start it with 'Run'.FaF. P.S. Watch out for :FF(" Variablenames that end with '!' :F.F)HB These can be 'conquered' with the help of the 'Replace' function.FFF@ Supply these variables with another name with this function andF. continue at point 3.FF&81 ( Press the left mouse button for the next page)"F F3 RFF RFYF$ Lines that start with '==>' :FfFHC Find a common variable in those lines that causes the syntax errorFHB if the '==>' is removed before these lines. Replace this variableFFHB in the whole program by a totally different name with help of theFF:5 'replace' function. After this, continue at point 3.FF+:5 ( Press the right mouse button to exit this program)F2, ( Press the left mouse button to run again)FpF2 "!!F  F F R F JF`F F-F  +FEG`Fp E2 F F  E F  E FE00F E GFp$ E  Fu( E   Fe( E  ` Fe E  @ F  E FEF F.F  +F E F E FE00F E GF E F E F E F E F E F E F E F  E FEF FEG`FF EF ! F FF.F  +F EF EF E GFF  EF F EGFF E F F .F  +F!F%!!FYF!E FEHHFE FEHHFFE!!!FE F EFH!FF!F%!!FFF!!!!F0!F0!@FH!F HHF!!!F F PSave reverse FFD? With this program, it is possible to make files readable againF60 after having been written to disk with 'Psave'.FrF*:4 ( Press the left mouse button to start the program)Fa.( ( Press the right mouse button to exit)FhF= "!!F  F F RF JF`F F.F`p R` Efv*oM X m HPHUBg?<JNA(m)m -:gS)@ -OK1PC#HNHx?<HNA@)@l/?<HNA)@h&@)@XЬl)@d)@`ARCpr Ѝ"QHNFALNHz2?< NA\pdAxr0XQ)K\NNjjj|||N ,`NuJrBjNuHz?<&NN\NCAp$L Qp N9lrBlJpNNpMN9@pdAr 0Q0tr N9lNNupealp`NuaNJHz?<&NNBWNANC2A@p222NrҌ0<NB0,rNurA9Ar`v C9Cr`rt9@9A9BNrrҌpsNB0,Nu9@N`rDҌpsNBNuC2 @ e @}bA@p222Nr,Ҍ0<NBNu pa2|a>:><|a4g RGj`a(0GVfA1G<ap??<?<NM\Nu??< NMXNu&8*:EENuHnX 2$4BBNuAd RdQRB BbABJk 0NuJBjBBXNu 0Nu 2$NuE`B<gJEgEjCDEDF Fe( F dF8BCHC` F0bFHC8v` HD8HDkDуdQRBNuDdBDA@kgAр[SBk0NuJlJBk&Nu0g H@rB JkЀ[` BbNuJBj prtNuHPAJgPpr$< _Nup _NtNu&8*JEgJBgJjBEB:HC҅H@:|ۆ҄ۆ<HC>H@ЃdHA@B@H@хk HAҁHAрSB BbNuNpNNuCDEJEgJBgJjBEBQ*HE?<>0rHGGdHGGdSWDуdi\?<>0rHGGdHGGdSWDуdiN?<>0rHGGdHGGdSW2 H@N?<,>CEdGH@0r`?<`JBgVB&8TTDуdQRBNuDAр&AdRAрAрDуNuprt|=|,  g +g -f .g20  b 0e 9b da`RF` .f 0e 9b dajSF` Eg efX +g -f 0e 9oSH`00  b&Hz0  b E Do`HJjDDDS4</NJFkSFk&aQN`Ha"FFaQL8N6.,JgtBn,Nupr$<NuJBk4<rpAC v JBgJjv-| Bb BkH>aaNRFBdL8?N<JBga2SF Be BgQRB`ApdR e <rRF&0xafEv+0JFjDFv-Hƌd0BFHF 0HF0ANuprt|`2:HQ A dGe GbFGNu G0dFGHANu~NuAd RdQRB6Ce0 C/jC C@j C jr0H@{0DH@Nur{0Nu{0NutNuJj(:,af AfBfNu&<x*<NxHn&r$g4jDk( b4<J@`@[H@0Nu4<Ѐ[Nu4<NuNuAd RdQRBBkBjDBJjDNupNufJj fJAkNupNdRdRrxaAffBWHNuJjDBDA@JBfprJjDEDD@JEfvxNuaغBffAVHNuCDEaEf fDUHNu]HNuCDEaEffDftNuJBgRBNuJBgCjtNu"l`Qd&&|-KNuN"l`Qep[N c R nPNu _\-KN$@Hz ?<&NN\NupNu$@Hz ?<&NN\Nup0NuE`$@Hz ?<&NN\Nu NuA$@.Hz ?<&NN\NuNuA$@.Hz ?<&NN\Nu4NuNN NNRH"HN2N$N2p `p ap Cpln<,(AL$I"vz x `gfURf~QjJFj4\Fk.aPHS&I.N``p???<NM\Qj&_Nu|HQ/g ??<@NAXXfNuJkp%NNu09?<%NNTNuJBfNu <r$<Nux&k@FC Be& B dЄeNu B0dHDDdRdQRBNu&<x*<NxFC Be B djNu B0dDdSkfJAftNuAр[SBNu"l`d&6JBft&&| NuN"l`ep N c 2$F4BBNJBgB*#E8#&#Jjh`,J]o6\`6 c 2$4BBN*#8#&#Jk:JkִEffDbAeABJk0!NuRdQRB`JjҺBf̶fȸA`p`pN @ddAgH`p`p9@(9@*BlNuNpCpN2ENX`"A<,(Ntp`pN0<9@:, IN$J@g@8 FN$ EdbAJfE @e4r$Wf"FANuPRN:LST:AUX:CON:MID:IKB:VID:,J@fC E& B Og& Rgl Ag@ Ug2 Ig $CpNp=`pNAXJ@jNNu?Hl?<6NAP0,NuN$J@g,A,BBgHQ?<=NAP FJ@k??<>NAXtNutNuBNNx]N&vN)@p `H@)@prtNAHplrtNB 2pNpNpapaprapalpalpalpaTpaTpaTBp'a?<NNT@B){L9|0<rtNpapap9@p`pvNv`v`vj`v `v`v`v`?Aa*` Al 2l 4)lVH)lRprtNAl 2l 4HVNuAl 2l 4L VA0000000000prtN9Cp rtNAv` Av `Avl 2l 4)lVHNaBp0,l 2Nua40,HNua*p0,l 4Nuaprt0,l 22,l 44,NuN9||BlBlrҌpsNBNu@((?<NN.?<NNX@LvA HA HNuNup9@HA)A,N FN$ @e024E$ Bb5B5A6CC5CK5CAB008:Dk`Ek\00<,>,SFSGFnHGnDDDk9DBlDEk9EBlFcllGcll0,lb 0,lcNupmrtA)HA)HNpN2HHPN4 _:8><DbFEbGCHP@dʾAdBD2ƞE29|C???FF22N23BRG0@\@N2"2)IN(* 9AJA)H@@[000][ˈN$ Evz`* [g" ]g |g QSz` zQSpQ][ɈN$ Dvx`* [g" ]g |g QSx` xQSpQ]Bp4NHNu@9@JpNNr|<N$ @xepw2A$JBjDFHB t`0QBl9F)lVTAtp 9| N2(g"P@g2RADAH""l`r2oZAe 1@#)I`Nuk1@Nup NN"l`dpNAtrdJhk\QpaNH ld$l`"Hg: k&@0+R`g k#&@0+S@H3 Q&f)I`LNuApNNR$N$BS@kH2QNupC ұd"X0Pg"RA$D#Nu"X0NuN$J@gpNu _0HpN _0HpNp"_0HqN2p"_0HqN2E ұeHHQ0)N2$_$ZR@H`2QNu$Y0gHR@@"D%$X0P2g# R@%NupE $ $X0dP.gRG,D%pr Y2dP.gRG,D!p4Ae4v`VfANuNWHNu2)A IJAfr4(Ae*RBBc0*SA?N$E$R`QˈN$ ENup`(* 0(iN$E 4R`Q$D 4R`QˈN$ DN$ ENua NuN$ IHPg"B  g &gNJBjt BNut`Rptr ae OgT Xgj HgSRB ae Fb$0k  c_  c b退`tSJBkNRB0 b b瀀`RB0 fрd`2p <0N`QNupC 0(gFd"P$I` *N$E$R(S@jv A(Wf( ae zb Q DNuH&NրNjNu?r`??, N$$F Z268SDĒDcCc2Ac0`QNuHRp` HRpJQfpNNq Y Qfd ЀЀNuNzN$_& if"QdփփHRNNxN~~,Nq8DRzXEEg"7PNqR$HBJBgpNJgJigp`eetЂ`"ЀeЁdp`ЀeЀe"Ѕe$W.H@@NL"2` NqR YEjrd0` SjN YQf "_Nq*eN~Nx*< NqbІSGfN~$_NxЀЀ N" KC`e N`d \N l\Ӭ\ NupNd d3 d# d# # d# # # # d# # # # # # # # dB` # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # QNu??<NMXNu?k?<NM"UAf J@fH@NuDW?<NMXNu0,p2,rR@RANuS@SA9@p9ArNu9@pN4, 6fprta0,2,NuA4, 6f9@9Ap rt`C l ", Ⲭ dfѬ SA 0! Nup"NNNJfNup#`"p`tdbDA0Hg<<R@f|0HN*JFk*HQ/??<?NAXfX ENuJkpNp`p`\F( &I.` ??<NMXJ[j E&DNuak NupNuakfpNupNtddA0oH?<?B?<BNA Jk.,?<?B?<BNA *kBg?/?<BNA JkNuNp`pNu)H9@Jp4NP'J&f H LNu P&NuQ'` J,'fJ,&gHA#ȇeC! B,&LNu-W)K20, 8k8@ gJl&f"Nu , 8g"P 8 @/, 8N  8fQ 8J,'gNupB <``L@ H)l26)z @W , Jf`CfSHj-D@Hd0H@H 0H@0`fSC\fS , @a"C\fApNNN~HP?< NA\NuH@aa/a a Nu@0 9c^Nu| PC>$Error # ][Abort]\f.B &lX)K\)ld` lp ,BQjNup(NV)l g,vARC( g9CJ9|Lp!,N FPeNuhA JpBQA/)H )l gBlJpNB Aprt0 0BBB R@ @efA000 0PB0 *00 000\0X0 *0000 0P0BX0, *@00p1| 1|QBX0 $HTH0P &0 *0,NupNSk [0NupNuHPaH8 _&X Pf/|~ K!zag @ ep 24C"2 S@ػ Td BTA3A0C4$I2a222B"0@2A\xvaRg<2#M 4B3BS@ -f ػ Td>BAAb8RGRC`3RSG5GC5C J1DcaRF F e`RG GcdNuXASF1F41R 1h4 x1EDgVA)H)H 9|J?<NNTU@g,ACg dRhdRh(gpL8Np>L8NAJ0?C bL000zH?A/.)HpNLrHH/>Bl/,ff.f.ffNu l /.g&, ^`D&, N`>&, R`8&, V`2&, Z`,2,/4WAARA0,/6A hfRAS@f9A/,&, Jo ? CN0`@k Ap0(/.NuA Nup)@JphNLtH &JKBCH .A/~0 1PP1P1PA L? &<@>AFG0000X0000X0000X0000C ~AJ0g0  pi, N"F QNuYp-KNu"l`Yd&-KNN"l`YepN&#k"C-KN"Cփk փk2##`փk"`2`$Y8gHRDD*D%H8#$c2g# HRDD%H`p"l`Qd&&| NuN"l`QepZN"X0gBPHR@@"D#NuAI0NAD$NA3@NAANA1NN6`N~NXpNCjNHPN\ Scrolling Message"_N@fN&^A9JNpNCjNHPNh Quits"_N@fN&HxNh Are you sure?HPN\YES|NOr"_ N(+@ -UWHfN&N&AHNN~pNCjNHPNh Invert Screen Color "_N@fN'&A1,NpNCjNHPNh Help me!l"_N@fN'^Ad>NpNCjNHPN\ About ST NEWS"_N@fN'A1NpNCjNHPNh Change Hertz"_N@fN'AHnNpNCjNHPN\ Invert Screen"_N@fN(4 -UVHfN(*AoNN(4A1,NpNCjNHPN\ User Group Update"_N@fN(xHxAo"NpNCjNHPNh ST Software News"_N@fN(HxAo"NpNCjNHPN\ Editorial"_N@fN(HxAo"NpNCjNHPN\ ST NEWS Colofon"_N@fN):HxAo"NpNCjNHPNh Soon Coming in ST NEWS4"_N@fN)HxAo"NpNCjNHPNh How to order Back-issues4"_N@fN)HxAo"NpNCjNHPNh Crimson's Column - Phantasie4"_N@fN* HxAo"NpNCjNHPN\ Solution to Infidel"_N@fN*fHx Ao"NpNCjNHPNh Solution to Sorcerer4"_N@fN*Hx Ao"NpNCjNHPN\ Novel: Tomorrow's World"_N@fN*Hx Ao"NpNCjNHPN\ MC 68000 Part V"_N@fN+:Hx Ao"NpNCjNHPN\ Modula-2: Traps"_N@fN+|Hx Ao"NpNCjNHPN\ Forth Part II"_N@fN+HxAo"NpNCjNHPN\ Did you know that...."_N@fN,HxAo"NpNCjNHPN\ The SAG Day"_N@fN,BHxAo"NpNCjNHPNh PD Library"_N@fN,HxAo"NpNCjNHPN\ Questions & Answers"_N@fN,HxAo"NpNCjNHPNh ACC's Reader's Service4"_N@fN-HxAo"NpNCjNHPNh Our Correspondence Address4"_N@fN-^HxAo"NpNCjNHPN\ GfA Basic"_N@fN-HxAo"NpNCjNHPNh GfA Basic Buch4"_N@fN-HxAo"NpNCjNHPNh Low Price Software4"_N@fN."HxAo"NpNCjNHPNh Just for Fun"_N@fN.bHxAo"NpNCjNHPN\ Secrets of the ST"_N@fN.HxAo"NpNCjNHPN\ Solution to Star Trek"_N@fN.HxAo"NpNCjNHPNh BBS List (The Netherlands)4"_N@fN/&B+|B -N&<x*<NpJBgp/ -N&<x*<NpJBgp/ -N&<x*<NpJBgp/ -N&<x*<NpJBgp/ -N&<x*<NpJBgp/ -N&<x*<NpJBgp$VHfN?$BB+| -N&<x*<NpJBgp/ - N&<x*<NpJBgp$VHfN?N< -SWHfN@+|ANvN6AN&S -NH - NN.&<x*<NxL8NxNXN+@ABNN< -N&<x*<NpJBgp/ -^HpJBgp$VHfN@PN< -SWHfN@+|ANvN6AN&R ABNN< -SWHfN@N@NN - WHfNGAhN - .WHfNGAZ 0AIN - WHfNHAZ 0AIN - WHfNHjHxNh Are you sure?HPN\YES|NOr"_ N(+@ -UWHfNHfNHjN~N -UWHfNHAoNNH+| -N WHfNH <"-NNH <"-NN -"<@N -""<BN -&"<DN -*"<FNN?<?<NNXr @ N <@N+@ <BN+@" <DN+@& <FN+@*Bm:A< 0AB @0AH `0AN `0AT `0NHxN\"Copy ST NEWS?|(Single Sided only!)HPN\YES|NOr"_ N(+@ -UWHfNJNPHxN\Should I verify|TARGET disk?HPN\YES|NOr"_ N(+@ -SWHfNJv+mށ.NJzB. <N+@ -S^HfNJA` 0pBNCNNJpANCNBmdBmjB2HxN\ Should I format|the Target Disk?HPN\YES|NOr"_ N(+@6 -6UWHfNK4NKfASNAfN&<x*<NfNKfNPA`N&<x*<NfNM\HxN\@Please insert|ST NEWS disk in drive A and|Target disk in drive BHPN\OKr"_ N(+@ <NCNB:pOA:NBAZN?Bg?-BBA20NAlN+@:A NAlNNxNXA:NB -: O^Hg NNNRAZN?Bg?-CvN/?<NNA0NA0NzNg NNNRR>Np`NqNqA0NzNgNP(HxN\$Please insert|Target disk in drive AHPN\OKr"_ N(+@AlN+@:A NAlNNxNXA:NB -: O^Hg NNOAZN?Bg?-Bm A`N&<x*<NfNQBmpA NAlNnAlN/A CvNN`NqNqNA0N&<x*<NfNQRNhDrive not Ready4CNA0N&<x*<NfNQN\Checksum ErrorCNA0N&<x*<NfNQNhTrack not Found4CNA0N&<x*<NfNR$Nh#Unknown Media - Error in BootsectordCNA0N&<x*<NfNRdN\Sector not foundCNA0N&<x*<NfNRNh Write ErrorCNA0N&<x*<NfNRN\ Read ErrorCNA0N&<x*<NfNS$NhDiskette Write protected!BCNA0N&<x*<NfNShN\Bad Sector at VerifyCNHxN\A disk error has occured:|HPA"_NHPNh |Copy Aborted!4"_NHPNhHoly...4r"_ N(+@N -2JWHfNTXHxNh#Please insert TARGET disk|in Drive HPA"_NHPNh |(Formatting)o"_NHPN\OKr"_ N(+@B:pOA:NB? @ 8 8 6 > 4 4 < @ D 2 8 < 6 : > D < < : < 6 @ B  (N VD&"Z  Vfff H( BL>Pb@.& bj FF "LT $"r&"RN  LJR$RN$ : Z@>@T@<:J @8 ~  `8<&"&\0L">,H04 R  R  | p4V  Hx t&(tj$pn(( #a000000 #b000000 #c0007777000600070055200505552220770557075057705503110802 #d #E 93 02 #W 00 00 16 06 1E 0D 07 A:\*.*@ #W 00 00 0A 01 1E 17 00 @ #W 00 00 0E 09 15 0B 00 @ #W 00 00 2E 09 15 0B 00 @ #M 00 01 00 FF B DISK DRIVE B@ `@ #M 00 00 00 FF A DISK DRIVE A@ @ #T 00 03 02 FF TRASH@ @ #F FF 04 @ *.*@ #D FF 01 @ *.*@ #G 03 FF *.APP@ @ #G 03 FF *.PRG@ @ #F 03 04 *.TOS@ @ #P 03 04 *.TTP@ @  *.TOS@ @ #P 03 04 *.TTP@ @ Dear ST User, I know - it has been a long time since the launch of the previous issue of ST NEWS. No worry - you can read the reason in the scrolling message in the program or in the article "Editorial". In the last few weeks I have had to work through a couple of hundred post packages of people that wanted ST NEWS, and I might say this also contributed a bit to the later appearance of this time's issue. On this disk, you should find two folders (DATA and PROGRAMS) and three other entries in the root directory: DATA PROGRAMS DESKTOP .INF SAVEd Desktop READ_ME .TXT This file ST_NEWS .PRG The ST NEWS Prg. In the folder called DATA, you should find DOC01-DOC33. The folder PROGRAMS should contain: MODULA_2 Modula folder NEW_ICON Icon Change folder PSAVE .BAS A De-PSave program The folder MODULA_2 should contain 11 items; the folder NEW_ICON should have 2 items in it. I wish you much fun reading ST NEWS, Sincerely, Richard Karsmakers (Editor of ST NEWS)