💾 Archived View for cugi.ie › newsletter › 1989jun.gmi captured on 2023-07-22 at 16:43:26. Gemini links have been rewritten to link to archived content

View Raw

More Information

⬅️ Previous capture (2023-01-29)

-=-=-=-=-=-=-

    ███████████    █ █ █    ████████████████
   █          █    █ █ █   █               █
  █  ████████ █    █ █ █  █  █████████████ █
 █  █       █ █    █ █ █ █  █            █ █
 █ █  █████ █ █    █ █ █ █ █  ██████████ █ █
 █ █ █    █ █ █    █ █ █ █ █ █         █ █ █
 █ █ █    █ █ █    █ █ █ █ █ █         █ █ █
 █ █ █    █ █  █  █  █ █ █ █ █   █ █ █ █ █ █
 █ █  ███ █  █  ██  █  █ █ █  ████ █ █ █ █ █
 █  █      █  █    █  █  █  █      █ █ █ █ █
  █  ████   █  ████  █    █  ███████ █ █ █ █
   █         █      █      █         █ █ █ █
    █████     ██████        ██████████ █ █ █

CUGI Newsletter / June 1989

In this issue..

Fantavision Revealed

Commodore Show Report

Adventures & RPGs

Microcomputer Interfacing

Compunet

HONORARY CUGI OFFICIALS

Chairman                Geoffrey J. Reeves
Secretary               Rocco Matassa
Treasurer               Brian Ward
General Librarian       Tom Kinsella
Amiga Librarian         Eddy Carroll
Communications          Liam Murphy
Hardware                Steve Kemp
Software                Shane Broadberry
Newsletter Editor       Eddy Carroll

CUGI Meetings are held every second Friday

at 8:00 PM in the computer room at St. Andrew's

College. Bootersiown. All correspondance should

be addressed to:

  CUGI,
  c/o St. Andrew's College,
  Booterstown,
  Blackrock,
  Co. Dublin.

Newsletter Contents

Volume 1 Number 5

June 1989

Editorial                  Eddy Carroll       2
Commodore Show Report      Geoffrey J. Reeves 4
Fantavision                Colm O'Rourke      6
Microcomputer Interfacing  John Pelan         8
Adventures & RPGs          Russell Wallace    10
A Look at Compunet         Ivan McAvinchey    15
VDOS Instructions          Eddy Carroll       16
PC Library                 Brian Ward         17
Tips on Soldering          Steve Kemp         18
1541 Device Change         Tom Kinsella       20
Datel EPROM Programmer     Tom Kinsella       21
C128 Keypress Reader       Geoffrey J. Reeves 22
BASIC Patterns             Steven McGerty     27
Marvellous MOBs            Shane Broadberry   28
BASIC Puzzle Solutions     Steven McGerty     31
CUGI Crossword #3          Rocco Matassa      32

Editorial

Welcome to another issue of the CUGI Newsletter. This is the biggest issue to date with more articles than ever before. Many thanks to all the contributors. This issue marks something of a departure from previous editions, by being book rather than magazine sized. There are a number of reasons for the change, the main one being that the number of articles submitted for publication keeps increasing (incidentally, don't let this fact dissuade you from submitting your masterpiece!). With the old A- format, it was getung quite cumbersome to photocopy. She smaller c17 reduces the work by half. It's also easier to bind it and put on a proper cover. There are also some smaller changes which you may have noticed - there Is now a real cover, and (ready for this.) a Contents page! Hopefully this will make it easier to find things if you retum to an issue after a few months.

Many thanks to Shane tor taking over the job of editor in my absence, and producing an excellent last issue. As most of you are probably aware. I was busw doing exams in college and I didn't even have time to go to CUGI meetinas, let alone produce a newsletter!

So, what else has been happening to me recently? Well, I'm currently working for the Computer Science Department of Trinity College for the summer. My 100 IS to modify the I/O sub-system of COMANDOS (an inhouse operating system which TCD have developed) so that it will work on a UNIX system (using BSD 4.3 Sockets in fact), rather than being tied to the native hardware or the NJ32K Smacad Innitv Workstauon. And if vou didn t understand a word of the previous sentence. don t be too put out because it took ME a week to understand what I was meant to doing, and I've been doing Computer Science for three years!

Anyway, the reason I mention this is because one of the perks of the job is that I now have an account on one of the department's UnIx svstems (which undergraduate students like myself normally don't see very much of). As a result, I've been able to try out something I ve been interested in for a long time, namelv Matt Dillon's NET. Matt Dillon is a well known name to most Amiga users (he wrote programs like Mouse, DME, Commodore's Workbench 1.3 PIPE: device CSH, Derm, Dasm, and many others), and DNeT is yet another masterpiece.

DNET is simply a program which will let you connect together two Amigas, or one Ami2a and one Unix system. just like a terminal program. Unlike most terminal programs though. it has some very useful benefits. For a start. all data sent between the two computers is automatically error-checked, so vou never see any line noise.

You can also open up multiple virtual connections over the single physical phone line. This means that I can have three or four shells (CLIs) open on the Unix system I'm calling. I can be running an editor in the first window, a compiler in the second, chatting to someone else in the third and reading NEWS in the fourth, all at the same lime. Its exactly the same as opening up lots of NEWCLI windows, but with the CLI being on the remote computer.

DNET can also send and receive files in the background, while you are doing other things, and the file transfer can be set to a lower priorty than the other connections, so it doesn't interfere with the response time of interactive tasks such an editor. Finally, it is possible to open up an Amiga CLI from the other computer, so when I'm in work, I can now connect to my Amiga at home by giving a single command. Once connected, I can do anything I would normally do in CLI window, making it very easy for me to retrieve files from my hard disk, do directories etc.

Matt Dillon is currently investigating adding a BBS facility to DNET, which could turn out to be very interesting - imagine being connected to a BBS where you could simultaneously be uploading and downloading files, chatting to the SYSOP, and reading new messages, all at the same time! Anyway, before this editorial turns into a fullblown NET review, I'll leave it there. Perhaps a demo of DNET could be arranged for a future CUGl meeting.

So, what else has been happening! Well. along with the rest of the CUGI crowd, I went over to the Commodore Show, at the start of June (see Gcoff s article for a full report). This year didn't seem to be as good as previous years. There were a lot of bargains as usual, but there was very little that hadn't been seen before. Some of the demos were fabulous though, and I picked up some nice pieces of software (including TxEd. ARexx and Lattice C V5.0, about which vou will be hearing more in the future). As Geoff mentions in his article, he bought a copy of Amiga TeX. a very powerful text formatting package (it comes on 30 disks!) and with a little bit of luck, the next edition of the newsletter may be produced using that rather than Professional Page which is being used at the moment.

That's it for now. Enjoy the new format, and please note that the deadline for the next edition or the newsletter is 1st September l989

E. C

1989 Commodore Show Report

by Geoffrey J. Reeves

This year, as in previous years, a group of us headed over to the Commodore show in London at the start of June. Along this time were myself, Shane Broadbery. Eddy Carroll, Brian Ward, John Pelan and Liam Murphy. So it was that our small party reached London, England. Despite a one-day tube strike, we made it to the umpteenth Commodore Show in the Novotel, Hammersmith. Having arranged weekend passes for ourselves, we began our mission.

Firstly, the main stands were placed - Commodore, ICPUG, Bytes & Pieces. Amiga Computing, etc. It slowly became apparent that there was little new or innovative at the show. Mind you, prices were interesting - Deluxe Paint III was officially priced at £79 but started off at £65 and by the end of the show was readily available under £50. Similarly, Sculpt-3D varied from £70 or so down to about £49.

It was a show for those interested in buying either software (Amiga Infocom adventures were on sale at one point for £S each, some of the C64 ones going for £2 each or less!) or the larger hardware items. I was always near someone carrying his/her new Amiga (£340 was expensive) but bargains such as 'broken' C64s for 215 or 225 were not to be missed. Similarly, the C64 music expansion system was on sale (originally at £199. 99) for as low as £30 - I would really have liked to know what were the differences between it and the MIDI keyboard & softwar package for the Amiga (cost £99) from Eidersoft. I expect to see at least one demo of such an item (homebrew job) at a future CUGI meeting.

Needless to say, blank disks were very cheap but one had to be careful of the rubbish - single-sided disks are useless for the Amiga. If you could afford to buy (and carry!) large numbers of them, it was possible to buy 3.5" disks at around 60-70p each and the 5.25 ones at around 15p. Sadly, our personal and club budgets didn t extend to these bulk quantities but the few we brought back seemed to be appreciated at IRE! cach.

Amiga users interested in expanding their systems were to be found crowded around the Bytes & Pieces stand - £299 for an internal 1.5 Meg board (tull) populated) sickened me (I'd paid £375 some months earlier) (not to mention those us who paid 1$70 last year! - Ed]. I purchased an Adaptor for ST-506 drives and a power supply for it and the drive I'd already bought here. That still has yet to function 100% correctly so I guess I've a few phone calls to make or letters lo write. I still have a few leaflets from that company if anyone is interested.

On behalf of the school at which I work (am employed?) a TeX package was purchased. TeX (pronounced TEK, plebs) is basically a type-setting package with facilities and possibilities which astound me. It consists of 4 or S programs, and I was also advised to get two books - one on the language Tex (pronounce it TEK. said!) and another on the document preparation system called LaTeX. When I to grips with the complete package you can expect to see thuee clear signs of success viz. a demo at a CUGI meeting, an article in the next Newsletter and the next Newsletter (which may well be prepared using LaTeX). It was not cheap £125 for the program and £75 for each set of printer drivers - but my honest face etc. managed to persuade the seller to sell me two printer dnvers for the price of onC The books cost £20 each bringing the total to about 2240. Sall, for what It does I expect it to pay for itself quite quickly.

What else? Well, Shane invested in an accelerator board which he will doubtless descibe in more detail when he gets to grips with it. A few of us renewed subscriptions with Transactor UK (6 issues for £23 is great value). Other bits and pieces were available outside the show (yes ... there WAS a world outside) in a branch of Maplin Electronics (check out their catalogue - CUGI has a copy).

So, what with the bargains at the show, the multitude of cheap second-hand CD shops and varous shops selling Dungeons & Dragons material. it's a case of 320 days or so to go...

Framed

or Fun things to do with Fantavision

by Colm O' Rourke

Fantavision is an easy program to use. It enables you to get basic results with great speed and encourages you to try more adventurous creations which will eventually lead to somethine special. Fantavison is a mover. It animates. Its whole reason for being is to calculate the intermediate positions between frame 1, your magnificent opening and frame 2. your superb next move. As an extra bonus, it will trigger any selected sounds at the correct points. Can it make moving titles for a videotape? It certainly can and it does it without reducing the user to a trembling jelly, blinded by stressful mathematical calculations. The Amiga takes on this workload and discharses I admirably.

Like to try a simple moving title? Okay. First you need the necessary ingredients:

1) Fantavision UK or USA (USA leaves you 56 lines short), and

2) A creative idea (you have to supply the title

Method

First load Fantavision, then select a background colour. This colour can be ans consistancy you like but make sure that it suits our mood because once vou mix in the letters, you could be looking at it tor a long ume. Clone two blank frames to give you headroom later on. You will be starting on frame three. Make your text rectangle and prepare your text tont. A large size IS best. PICk your tavounte colounng and start typing but do remember to leave a space between each letter to allow for the next stage

Cut out each letter individually so that it becomes a seperate object and move them outside the text rectangle. Take your text rectangle and empty the text into the wastepaper basket. Place remainine letters in random order and clone it. You are

now on !rame four. Move the letters to their correct positions and select O. Your title will run in repeat mode.

Congratulations! You have just produced your first moving title. This is a special moment in the creative proce: , and vou should allow yourself the opportuniy to si hack and admire vour work. Smile broadly at the result because after a very onet momento jor tou will not be • satistied with it

Back to the start and try again, and keep trying. This program will eat up hours of your time but it is worth the effort as something good will finally appear. When that ausome moment arrives it is time to commit it to videotape. I use the Amiga modulator to give me a composite video signal for the VTR. The VTR output is or 9 domestic TV.

Set the VTR on Record Pause and Fantavision on frame one (empty). Select GO and as soon as the screen clears. press VTR Play. That's it. The art of moving text and shapes which up to now has been a tedious procedure is at last a simple and rewardine task thanks to Fantavision. The programmers should be congratulated for putting such a powerful and user friendly tool on the market.

Sample artwork produced with Fantavision

Microcomputer Interfacing

Part 1 - Fundamentals and more

by John Pelan

Putting your computer in touch with the real world and vice versa is an obvious necessity. How could it know that you want to load your latest game or how could vou see what WYSIWYG wonders it was doing, without a means of crossing the boundary from CPU-land to Planet Earth? That means is provided by Interfacing.

EXERCISE #l

Make a list of ALL the things that are connected to your computer.

You can see that there are many different devices hooked up to it, and all require an interface: RS-232C, Centronics, Video. Sounds, IEEE-488, Disk drive, SCSI, Ethernet, Serial port, Datasette, Joystick, Mouse, Lightpen, User port and many more. Your machine won't have all of these (if it does, where can I get one?) but with a little ingenuity, we can convert existing ones or add on a new one (ever wanted to control those lights? More later).

At this stage, try to appreciate their diversity and uses. Some consist merely of a few wires while others rely on State of the Art silicon. You must also realise that the hardware is only half of the interface because there's a software driver needed too. We'Il work our way through some (or perhaps all) of the list in good time, but now for something completely different. Before embarking on our journey, we'll need a set of rules and regulations to govern how we go. Here are the first two:

1st Law of Microcomputing Interfacing

The computer is sacred and no harm must ever befall it

2nd Law of Microcomputing Interfacing

No damage must ever arise to any biological system. e.g. Cat/Little Sister/Bold 3, in the immediate vicinity of the intertace or within the Zone of Legal Responsibility, whichever is the greater.

To paraphrase, it's got to be SAFE. The average computer that you're likely to meet runs on electricity. That means it derives its power with the help of electrons that whiz about the place at about an inch a minute. We aren't going to go into the electronics, just yet, but suffice it to give two rules of thumb:

1) Computers work between zero and five volts. Any voltage outside this range, 220V mains or even a 9V battery is potentially lethal and thus to counter any violation of the 1st law, we will keep the voltages within range (TTL levels). Notice how those clever designers put a step-down transformer (and more) between the CPU and the mains socket. They know the rules.

2) Computers aren't an altemative to the ESB. What this means is that the computer's power supply is rated for use by the computer and the fuses generally object when you try to run your train set from it simultaneously. Our interface will therefore have to supply its own power, or if we are careful, we can take a tiny bit from the computer and hope that it doesn't notice. Interfacing involves a lot of thought, care and preparation both in the design and construction of hardware and software. It is a good idea to examine the operation of a few existing interfaces to understand the problems which must be solved, and go back to that list. I'I start in the next issue with the hardest one, the phantom RS-232C interface.

I'll leave you a simple task:

EXERCISE #2

What problems do you expect to encounter when attempting to make two computers communicate?

Until next time!

Adventure and Role-Playing Games

by Russell Wallace

What is a game? A game is a simulation of actual or alternate reality in which the players control simulated beings and attempt to achieve quests, defeat opponents and so on. You can have video games which are exercises in dexterity and reflexes but let's consider the purely intellectual games in this context. Games like chess, Monopoly, Scrabble and Battleships. All these games have a rigid set of rules which gives a totally abstract game world. Why not eliminate all the rules and have the gamee's author create a world, based on the real world or on a fantasy or science fiction universe, give the players alter ego characters in the imaginary world and have them tell the game verbally what they're going to do, and have the game tell them verbally what happens as a result. No clutter of screen displays or boards. You can play game situations as you would play real life. Well, I use "real life" in a liberal sense. A situationn such as:

GAME: 	You are standing at the side of the road. The pedestrian traffic is red.
PLAYER: I wait.
GAME: 	You wait a minute. The light turns green.
PLAYER: Okay, I cross the road.

might be realistc but it would be incredibly boring. More likely you're in some sort of exciting fantasy adventure. For example:

GAME: 	You turn the corner and confront the ferocious dragon
PLAYER: I draw my trusty longsword and charge, shouting heroic battle cries

and other such stuff of which epics are made. But the essence of what we re talking about here is that the game keeps track of an imaginary world and the player has a character in that world (or maybe more than one character) and game and player interact verbally in plain English. Brilliant. Only one slight fly in the ointment. The game is clearly going to require a certain rather large amount of intelligence. How do you implement it? Three solutions have been tried.

One solution is in the "Choose your own Adventure" books. The idea here is that the game is actually a book containing a story divided into many paragraphs. You read a paragraph of story and it then gives you two or more options and directs you to, for example, turn to paragraph 67 to take the left tunnel or paragraph 52 to take the right tunnel. There are other series of books which introduce rules which make the thing a bit more complex but basically that's the idea. Problem here is that this approach is far too inflexible. It allows you very limited choices, you can't go back to a previous position, there are only a couple of dozen possible endings and so on.

Another solution is the computer adventure game. The first one of these was written by Crowther & Woods on a mainframe computer and called simply "Adventure": the entire genre of games was named after it so the original is now usually called the Colossal Cave Adventure to avoid confusion. The idea here is that the computer narrates a story to you and you type simple commands. The "parser" or section of the computer program that interprets what you type in will understand sentences or a few words: e.g.

TAKE STAFF, UPROOT TREE, STRANGLE ELEPHANT, PUT KEY IN BOX.

Commands like:

KILL THE STICK INSECT BY STEPPING ON IT WHILE SINGING "ALL YOU NEED IS LOVE"

will get you a response along the lines of:

SORRY. I DON'T UNDERSTAND YOU.

Of course. the state of the art in parser design is constantly being improved. A decent adventure game requires hundreds of K of memory which is why the onginal one was written on a mainframe. But with machines like the Amiga out these days getting them on home computers is not a problem. Most commercial adventures have pictures to illustrate some of the places within the game but these play no part in the game itself and any true adventure devotee will tell you they re a waste of disk space.

Computer adventure games are pretty good but they have one big problem: the story line is restricted to what the author has taken into account. You might have a door for which vou have to find a key and unlock it before you can get past, and typing:

OPEN DOOR

when you haven't found the key elsewhere in the game will get the response:

YOU DON'T HAVE THE KEY TO UNLOCK IT.

Okay, fair enough. but what if you find a chainsaw instead and type:

DESTROY DOOR WITH CHAINSAW.

Probably the programmer won't have thought of that so it won't work. You won't get a reason as to why it wont work either, just a catch-all.

YOU CAN'T DO THAT.

Computer programs are getting smarter all the time but they're still pretty stupid. Far too stupid to improvise bits of the story on the spur of the moment which is what they'd really want to be able to do. The only being that clever at the moment is a member of the species Homo sapiens.

This is what role-playing games are about. You have a human referee who improvises the story as you go along based on outline notes written beforehand and you have a few players each with one or more characters in the game world. This means that not only is the game intelligently run but also your character is up against other characters which act with true intelligence being run by other humans. The players can compete with each other or cooperate against the non-player characters which are the beings in the game run by the referee (the "Dungeon Master"). (Incidentally you can get the latter element by having a computer adventure game run on a mainframe with many players connected in by modemns, ass in the famous MUD or Multi-User Dungeon.) Okay, so you ve got a human referee running the action, the plavers tell him what their characters are going to do and he tells them the results. Imagine the following (DM is the Dungeon Master):

DM:	The vicious ogre attacks you.
PLAYER:	I nimbly dodge the attack and lop off its head with my sword.
DM:	No you don't. You fail to dodge and the ogre rips your arms and legs off and eats the remains.

Who is right here? You've got to have some way to decide things like this impartially. So you make up rules for combat. You assign abilities to characters (to decide how likely they are to hit an enemy and how much damage they'Il inflict if they do and how much damage they can take before dying themselves. Then you run the combat with each side striking at the other until one or other dies. While you're at the business of making up rules you might as well make up rules to give the character a certain probability for leaping bottomless chasms, breaking down locked doors, swimming a wide river etc. Now you've many dangers to cope with and many ways to solve individual problems. Alos as the character gains experience at fighting and other activities he can become more proficient and therefore more powerful which is a nice incentive to achieve quests, because you can solve an adventure this week and our character will be more powerful and able to solve another, tougher quest next week.

So we have a set of rules (there are many commercial sets available, the original Dungeons & Dragons from which the whole genre of games was named. Advanced Dungeons & Dragons, Traveller, GURPS and numerous others), and then within that set of rules, each group's Dungeon Master makes up adventures for the players MO SOIC Of course we're back to having rules and the object from the beginning was to try and avoid that but now the rules are only guidelines, they don't define the whole game.

(Incidentally, why are so many role-playing games set in fantasy rather than modern or science fiction settings? Partly it's because of the fascination fantasy seems t0 have with people but a lot of it must be so vou can get a good old hack-and-slash swordfight in. A swordfight takes time and involves some risk but basically you know where vou stand. The heroes will slay the villains after a tough fight. Imagine fights in a modem scenario: Players see enemy. Players open fire with submachine guns, bazookas, grenade launchers and flamethrowers. Unsurpnsingly enemy dies rather quickly. Or if enemy are similarly armed and have surprise attack, the players don t stand a chance. And in a science fiction game where everyone has atomic-powered X-ray laser guns...)

Problems. Suppose vou don't have anvone else to play with. e.g. vou don t know any fellow enthusiasts or you just want a quick half-hour session before you go off to the pub. and there isn't time to collect any other players together. That's one advantage of doing thins on the computer. Also, computers are great for keeping track of vast quantities of data which is nice if you want a large complex game. Not to mention the fact that if you write a computer game vou can distribute it to thousands or peopie whereas it you write an adventure for a role-playing system only halt a dozen people will ever hear of the fruits of your genius. It should be possible to work out a reasonable role-plavine game system on a computer.

Remember I said that the disadvantage of compuier games was that the story line and possible actions were limited to what the programmer had thought of. For etample, if the programmer intends you to open a locked door by finding the key the program won't know what you're talking about if you try to break it down instead. There are ways to get around that. For example, as it is, the program will understand picking up and dropping any object and moving to any place in the game. For that sort of thing, once you ve programmed the action for one casa you've programmed it for all cases. Why not do the same with combat? An important part of most role-playing games (were the truth to be told, the main business of the game) involves fighting the villains (or of course you can side with the villains and fight the heroes). That's like picking up objects; if you can do it for one case vou can do it for every case .

That's already been done in some games e.g. Phantasie Ill. Problem is that games like Phantasie Ill have little graphics symbols to give you a very sketchy idea of what's going on and practically no narration, and games with narration have no decent combat system. But there s no reason why that situation should keep up forever. You could also arrange to be able to talk in a very limited way to computer controlled characters, threaten them, bargain with them and ask them to fight your chemies for you. Fairly tough to program but doable and the state of the art is getting better all the time. That would put computer games back on a par with human-moderated ones.

So basically what I'm saying to adventure game enthusiasts is first, get in touch with a group of people playing role-playing games, it's brilliant fun, and second look for adventure games with a combination of text narration and realistic character interaction and we'll have sophisticated gameplay with the advantage of being able to do it on your own home computer. For an example of a sipmle adventure game with combat with and between computer-controlled characters phone Dublin 807094 and ask for a copy of my game Labyrinth II on the Amiga.

A Look at Compunet

by Ivan McAvinchey

Compunet is rather like a very large bulletin board for the C64/C128, Amiga and ST users, with over 8000 members throughout the UK and Ireland. It is however mainly a British service with only 15 Irish members that I know about. Compunet caters for a wide variety of interests, from MUGs (multi-user games) and chatlines to heavy metal and locomotives. And if there isn't already an area for your interest, it's as easy as selecting UPLD (upload) to start one yourself!

On the subject of uploading, I had better mention page/days. Page/days are the number of days an upload will be on the system, multiplied by the length of the upload in K (or, if it's a text upload, by the number of text pages). Therefore 10K program with a life of 30 days will use 300 page/days. A gold level subscription gets 2,000 page/days free every quarter, and after they have been used up, it will cost 1p per page/day thereafter. You can also purchase 45,000 page/days from Compunet for £10 Sterling, essential if you are setting up your own area.

Anyway, enough of uploading - what is there for you to download? The answer is quite simpiy, lots. While mainly text uploads, there are also a lot of programs uploaded - Id say ar least 1,500k each week for 64/128 users. The great majority of these programs are demos, showing off the graphic, music and coding skills of the programmer or group, but there are also useful utilities uploaded - everything from disk management to professional looking graphics packages. Almost all are free, and the demos contain some of the best music, graphics and coding you are ever likely to see! If vou want a few examples, contact me and I'll copy them for you (they are all public domain).

I mentioned text uploads above; there are plenty of these dotted around the net covering pracucally every interest under the sun. Many areas cover a wide range of subjects. Ivans BBS at IVAN has humour, information, reviews interviews (well, an interview), software, character and sprite hacks, and much more. Justin's 6510 ares at 6510 contains news, software, hints & tips, communications, software reviews, magazine reviews, book reviews, hardware reviews, a CLI tutorial and much more. Other areas cater for a more specialised interest: for example, the METNET area information on weather around the country. Zugger's zone is at ZUGGER and is regarded by many as THE Amiga area on the net. The Irish users can he found at EIRE.

Besides all of this, there are also two main clubs on Compunet: Communications Computer Club (CCC) and the Independent Compuner Club (ICC). Both are free to join and I would recommend that you do so. The CCC has very good areas for all computers which can access Compunet, containing valuable programs and information, while the ICC regularly organises chatlines (the incredibly successful Tech Chat can be found at TECH), party nights (with online pantomimes, chats, etc.) and quizes (at QU1Z). They also have very good help services. If you would like more information, send me some mail, to IVAN on Compunet or IVAN MC AVINCHEY on Infomatique.

_____________

A quick guide to VDOS

by Eddy Carroll

Quite a few C64 & C128 owners have been asking me recently for information about DOS, so for their benefit, here's a brief summary of the instructions.

VDOS is normally called "!" on the disk. You can load it by typing LOAD"!",8,1 which automatically installs DOS (no need to type RUN), and doesn't affect anv BASIC program in memory. You can also type LOAD"!*program",8,1 which will get VDOS to install itself, and then automatically load in "program" at high speed. You can make copies of VDOS by typing LOAD"!",8 then putting a new disk in the drive and typing RUN. VDOS will then save itself to the disk.

When VDOS is installed, all LOAD commands now default to device 8 instead of tape, so vou can leave out the ,8. You can still use devices other than 8 by including the device number explicitly. All LOADs will be about 5 times faster, but SAVEs are unaffected. Since the VERIFY command is not normally used with disks, DOS redefines it to give vou access to DOS commands. VERIFY"$" wIll give vou a disk directory, VERIFY "command" will send "command" to the disk drive and VERIFY by itself will print the current disk error message.

VDOS disappears when vou press RUN-STOP/RESTORE or type SYS 320. You can turn it back on by typing SYS 300. Note that this will usuallv work after a reset as well. DOS stores itself under the I/O area at $D000, which is very rarely used so it should be compatible with most programs. As a final bonus, you can use VDOS to help you get back to your BASIC program if you accidentally type NEW. The procedure is as follows: POKE 2050,8 then type 59999 <Return>. Now, LOAD"!",8,1 and VDOS will restore vour program for you.

PC or not PC (That is the Question)

by Brian Ward

There are several of you out there who are now very very confused. Yes this is the CUGI magazine. "But what is a PC article doing in it? I hear you ask. Well as the heading goes, PC or not PC is the question. Whether 'tis nobler to ignore this huge phenomenon known as the Personal Computer, or hop on the band wagon with evervone else.

The committee decided that it was in the club's interest to travel down that long and relatively hazardous road for some very good reasons:

1. Even Commodore themselves couldn't ignore the fact that there are currently more PCs in the world than any other computer, including the now legendan C64, so they produced their own version, the Commodore PC.

2. The hiccest Commodore Users Group in the world. ICPUG in the UK, decided that they could ( ignore this fact either, seeing that they were called after the company. So they set up a massive PC Public Domain library themselves

3. As GUG! Is called atter the same manutacturer as well, it was decided lo do unc same. It was also decided to try and tap the wealth of software thar ICPUG has for our members. as in this countrv. Pl software Is ditticult to obtain and the cost is somew hat prohibiuve

So it us senato lo and ontain as much Pl sontware for the Pl virue of the fact that I use a PC at and set up a work during the dav. It was decided to give me the joo of libranan. However. I am not going to do it all alone. I need help. No. not mentally, but actual PD software The club intends exchanging software with ICPUG. but in the meantime. I have to try and source any PD software on my own, and that's where you come in. If you have any, and I mean any PD software (except of course viruses). I want it. I will any disk in the librar tree. The librar current/v exchange our program contains salisks

So hela mo ant a This sork If is as successtul as we hone. the club will become one of the lest m the world tor PD software. We will do what we can. but it also depends on you.

Tips on Soldering

by Sieve Kemp

Sooner or later, the computer hobbyist encounters the requirement to solder. It may be to cobble up a cable, effect a repair or construct a custom interface. Whatever the reason, the following hints and instructions should enable the novice to produce reasonable results first time.

You will need a soldering iron, solder, side cutters, a damp sponge or cloth and a wire stripper to remove insulation. The soldering iron should be a 17 to 25 wart electric iron with a removable tip. The tip should terminate in an oval shape of around 2 mm in diameter. If the tip is new, it must be tinned by bringing the iron up to its working temperature and touching the solder against the tip so that as soon as the iron is hot enough, the solder melts over the surface of the tip. This will prevent the tip fom oxidising and should be carried out every time a new tip is fitted. Other types of soldering iron are not recommended.

The solder should be 18 swg flux cored 60/40 tin/lead solder. The side cutters are used to snip wire and to cut off excess leads that may protrude. The cutting edges are offset to one side to enable the user to cut close to PCs. The sponge or cloth is used to wipe the tip clean. The wire strippers are useful for preventing chipped enamel on the teeth (another way of removing insulation). Another handy accessory is a soldering iron stand.

Before picking up the soldering iron, the surfaces to be soldered must be thoroughly cleaned. Most failures can be attributed to poor or non-existent surface preparation so attention to this aspect will result in neat and durable work. Unless bright and shiny. PCB's should be given a light rub with a fine grade abrasive paper and wiped with a cloth moistened with methylated spirits. Insulation should be stripped from wire and if stranded, the strands twisted together. Enamelled or laquered wire should be carefully scraped with the blade of a sharp knife so as to remove all enamel. The leads of components will also benefit from a similar scraping. Insert the lead into the hole in the PCB or if joining two wires. twist them logether.

Whalever is being soldered. the surfaces must be held so that they are in close contact and cannot move while being soldered. Blue tak or Selotape can be useful here. I have often enlisted a bulldog clip as a third hand.

Okay, now we do it. Pick up your iron and give it a quick wipe with the damp cloth. Apply a little solder to the tip so as to "wer" it with solder. Not too much. Touch the iron to the joint so as to be in contact with boch surfaces. Firm but not heavy pressure. Wait about two seconds for the area to heat up. Lightly touch the solder to the iron at the point at which all three surfaces are in contact. Wait about half a second and you should see the solder start to flow. Now push more solder into the joint so as to envelop the entire joint area. Withdraw the solder, quickly followed by the iron.

The joint is now complete. Do not move the joint until it has cooled and allow the joint to cool unassisted. To do otherwise will ruin all your careful work. The completed joint should be bright and reflective and the surface slightly concave looking. There. It's done! Tidy up any bits of protuding wire with the side cutters and the job's finished. As practice makes perfect, it is suggested that a few minutes practising with a couple of bits of wire and a piece of stripboard before tackling the actual job will be of benefit.

1541 Device Change

by Tom Kinsella

When I bought my second drive (1541) for my C64/C128, I found that both drives were device number 8. This was annoying, because a lot of the ume, you load in program and only then remember that you've forgotten to do the necessary cryptic command to change the second drive to device 9. I decided that either a permanent change

switchable change would be needed. In the first case, being permanently device 9 could be as bad as being device 8, so I settled on it being switchable with a selection of four device numbers: 8, 9, 10 and 11

To do this change, you will need:

To locate the appropriate tracks on the 1541 drive board, you have to look to the front end of the PCB (printed circuit board). On the left side of the PCB. you will find a pair of 'two semi-circular tracks' that are joined in the middle. On model 1541 (old 1541) these can be found between components C46 (capacitor) and Os (transistor). On the 1S-2 (newer 1541) you will find them between O4 and OS (also transistors). For clanty we will call the one nearest the front Padl and the one at the rear Pad2. Using the following table should make things clearer.

Device          Pad1            Pad2
  8          Not Cut (on)    Not Cut (on)
  9           Cut (off)      Not Cut (on)
  10         Not Cut (on)     Cut (off)
  11          Cut (off)       Cut (off)

Pads

From this. you can see that the drive is set to device 8 when vou first open it. You could just cut the tracks as in the table. or cut both and add switches You con switches to the case anywhere you like as long as it does not intertere with une dave's oneration (hen you tracks, solder a wire to each or the semiCircular tracks (do one switch at a time) and then solder them to the swItch center and one of the outer contacts). Repeat for the second switch. Test before closing back up the anve by trying all the different combinations of device number. The device number will not register until you switch on or do a reset. [CUGI still has lots of C64 reset buttons available to members (free) - Ed]. ' When the drive is on, swIning on and off the device number switches nas no etfect. Thie is because they set up a logic state which is only checked on power up or on reset. Good luck and happy soldering.

——————————

Datel EPROM Programmer Reviewed

by Tom Kinsella

I recently got the Datel EPROM programmer from Geoffrey, our revered chair person, and decided to give it a try. I thought that the Dolphin Dos idea would be nice where you could have two ditterent kernals for your 64 at the flick of a switch. Now although this is nice, coping the Dolphin Dos chip is piracy. However, their idea is not, so wnting your own kernal could be next on the cards.

The Datel package is nice and exposed'. It is very easy to figure out which Is just as well. because the manual leaves a lot to be desired: I think thev thought that u you bought a Commodore Computer you d disappointed with a good manual.

After figuring it out I proceeded to back up a few ROMs just to try it out and I was mildiv surprised with its smooth operation

The software sunolied is simple to operate and easy to follow You get three programs, each an upodica version of the last. When the sortware Is loaded. displavs a menu which is labeled with explanations. You can alter the default sel Up for each size chip but this should not be necessary unless the chip being used has unusual specifications. You can read into memory EPROMs and RUMs and the software supplies a monitor to let you disassemble and ascii dump the memory.

You have the facility to load and save the memory and can control where the data read from the chin will be stored. You can write any memory to the EPROM. even memory under the Basic and Kemal ROMs.

All in all l'd say this is a good buy once you can justify its use. It costs £39. 99 Sterling from Datel Electronics. Compared to other EPROM programmers I ve seen, this Is a nest httle package

C128 Keypress Reader

by Geoffrey J. Reeves

One of the popular routines to begin with, when leaming assembly language, is the one which allows the programmer to specity a set or characters which may be pressed and which will not permit STOP to mess things up. While this is a fairly simple routine on a C64. there is a major problem to be overcome on the C128. namely all the BANK configurations. The program (machine code) will be in Bank O, the string containing the possible keypresses in Bank 1 and and built-in ROM routines in Bank 15.

So what follows is a routine which I culled from a large set of routines I have written for another program. I haven t gone to much trouble to shorten it - in fact there are many subroutines which, since they are called only once. could be incorporated into other routines. In my defense, I hope that you will be encouraged to expand on this program and make up other routines for yourself. The program resides at location af and is called as follows;

SYS 4864: "="

This is when only one char may be pressed.

SYS 4864: "abgx", P

Any one of four chars may be pressed, and P contains the position of the keypress. So, if you press b. then P will contain 2

sys 4864: "ady", p, k$

This acts as above but you can also have a variable which contains the actua keypresses.

Most of the program is documented. Those parts which I left uncommented are either oh ous or too complicated to explain. Trv it - it saves a lot of messing abour with INSTR and returns a value just perfect for the ON val GOTO command. And of course " rakes sarahles! Next time. I will try a search routine which needs machine cle m hoth banks 0 and I but which can search 1000 element arrays in an instant!

Scans of code listing

Part 1

Part 2

Part 3

Part 4

;
; Usage from Basic:
;
; SYS 4864: "key string", p, k$
;
; where p contains the key number
; that was pressed, k$ contains the
; character pressed and they are both
; optional.
;
; Line numbers omitted for clarity
; Assemble with Buddy or a
; similar assembler
;
   sys 4000
      *=  $1300
         . fas
            . mem
               . bank O
               ;
               ; The following are used for
               : bank switching
               ;
               bank = $02
               pchigh = $03
               pclow = $04
               statusreg = $05
               accreg = $06
               xreg = $07
               yreg = $08
               ;
               ;
               index = $24
               txtpntr = $3d
               ;Ptr to current BASIC char
               vardata = $4b
               lenpntr = $63
               fac = $64
               bk1 = $7f
               ;This value is stored in $ff00
pointr = $fa
tl = $fc
;
len = $fd
pos = $fe
;
;The following are used to read, write
; and compare a given byte with an
; address in a different bank.
;
fetch = $02a2
fetchvec = $02aa
stash = $02af
stashvec = $02b9
cmpar = $02be
cmparvec = $02c8
;
buff = $0b00
setfac1 = $8c70
config = $f00
;Configuration register
ram0 = $ff01
;Any store to this address
;switches to bank 0
;
: The following Rom routines
; are used to interface with Basic
;
jsrfar = $ff6e
; Calls subroutine in another bank
strlit = $8690
; Allocates space for tmp string
chkcom =$795c
; Checks if next char is a comma
getvar = $7aaf
: Gets variable pointer from line
assign = $53fa
; Assigns FP Acc #1 to a variable
frestr = $877b
; Clears temporary string

[p24]

;
; Start of program
;
  jmp presskey
  ;
  getachar stx xreg
    sty yreg
      ldx #$e4
        jsr dokernal
          php
            ldx xreg
              ldy yreg
                plp
                  rts
                  ;
                  dokernal stx jl+1
                    idx #0
                      stx config
                        ldx xreg
                        j1 jmp $ffff
                        ;
                        saveregs sta accreg
                        stx xreg
                        sty yreg
                        php
                        pla
                        sta statusreg
                        rts
                        ;
                        ; This routine JSR's to a subroutine
                        ; in a different bank. x/y hold the
                        ; address to call.
                        ;
                        gofar lda #15
                        sta bank
                        stx pchigh
                        sty pclow
                        jsr jsrfar
                        lda statusreg
                        pha
                        ld accreg
                        ldx xreg
                        ldy yreg
                        plp
                        rts
                        ;
                        setupstr jsr saveregs
                        ldx #>strlit
                        ldy #<strlit
                        jmp gofar
                        ;
                        ; Fetches a byte from bank 1
                        ;
                        fetchl ldx #bk1
                        jmp fetch
                        ;
                        ; Stores a byte in bank 1
                        ;
                        stash1 1dx #bk1
                        jmp stash
                        ;
                        ; The following routines load the
                        ; floating point accumulator
                        ; with the number in A, or A/X
                        ;
                        assbyt ldx #0
                        ;
                        assnum sta fac+1
                         stx fac
                         ;
                         assfac ldx #$90
                         jsr setfac1
                         jmp setupnum
                         ;
                         ; Mark old string as garbage
                         ; 
                         dostring sta vardata
                         sty vardata+1
                         lda #vardata
                         sta fetchvec





                         

[p25]

ldy #0
jsr fetch1
beq newstr
pha
ldy #2
;
; Get old pointer to bank 1 string
oldl jsr fetch1
sta pointr-1, y
dey
bne old1
clc
pla
tax
; Add length to point to just after
adc pointr
sta pointr
bcc endstr
inc pointr+1
endstr lda #pointr
sta stashvec
; Now mark it as garbage
txa
jsr stashl
jny
lda = $ff
jsr sash1
;
; Set up space for new string
;
newstr lda len
jsr setupstr
lda #vardata
sta stashvec
ldy #2
mov1 lda lenpntr.y
jsr stash1
dey
bpl mov1
lda len
beq exit
lda #lenpntr+1
sta stashvec
ldy #0
;
mov 2 lda buff,y
jsr stash1
iny
cpy lenpntr
bcc mov2
lda #index
sta stashvec
ldy #1
;
fx2 lda vardata,y
jsr stash1
dey
bpl fx2
exit rts
;
;charget inc txtpntr
bne chargot
inc txtpntr+1
;chargot sta ram0
ldy #0
lda (txtpntr).y
cmp #""
bcs charend
sbc #$2f
sec
sbc #$d0
charend sty config
rts
;
getcomma ldx #>chkcom
ldy #<chkcom
jmp gofar
;

[p26]

commavar jsr getcomma
var ldx #>getvar
ldy #<getvar
jsr gofar
sta vardata
sty vardata+1
rts
;
setupnum ldx #>assign
ldy #<assign
jmp gofar
;
strexpr jsr charget
ldx #>frestr
ldy #<frestr
jsr gofar
sta len
stx pointr
sty pointr+1
rts
;
decodestr jsr strexpr
pha
lda #0
sta t1
lda #pointr
sta fetchvec
sta cmparvec
pla
rts
;
; This is where the Basic SYS arrives
;
presskey jsr decode str
sta len
beq get4
; If null string, set answer. to zero
get1 jsr getachar
beq get1
;Wait for a keypress
ldy #0
; Begin at the first possible char
get2 ldx #bk1
jsr cmpar
beq get3
; Compare it with the string chars
iny 
cpy len
bne get2
jmp get1
; If no match get another keypress
exit1 rs
;
get3 ldx len
cpx #1
beq exit1
; If only one poss char, exit!
sta buff
iny
sty len
;Store char in buff, setup position
get4 jsr commavar
; Read in a comma and a variable
lda len
jsr assbyt
; Assign the positition to variable
jsr chargot
beq exit1
; Is there another char?
lda #1
sta len
; Okay - setup a one char answer
; jsr commavar
 jmp dostring
 ; Get comman and variable and 
 ; assign keypress
 ;
  . end

BASIC Patterns

By Stephen McGerry

With a bit of thought, almost any simple patter can be produced in BASIC. The job is made easier if your version of BASIC supports functions such as STRINGS. SPACES, MOD. MAX and MIN. The following program produces a pattem of concentric squares. It is by no means easy to understand fully, but you might learn some new techniques if you look at the PRINT sections of the program.

REM Concentric squares by S.McGerty.
INPUT "Enter the number of squares:"; N
S$="**********": REM a space after each asterix
X=2*N-1:N=4*N-1
FOR B=-X TO X
A=X-ABS(B)+1
PRINT LEFT$(S$,A);
PRINT STRING$((A MOD 2)* (N-A*2),"*");
PRINT SPACE$(((A+1) MOD 2)*(N-A*2+1));
PRINT LEFT$(S$,A)
NEXT B

When writing such programs, it is often a good idea to have just one variable, and then work nur all the others relative to that. Unfortunately, this can lead to some messy equations is you can see from the above program!

Here are some simpler patter problems which you can try to solve using similar methods. All patters should be printed line by line, starting at the top and working down. Answer appear on page 31.

1) Write a program which produces a single box, of side N.

2) Write a program that produces a diamond of height H. using any character. (H must he odd. Get your program to check for chis.)

3) Write a program that draws a triangle of height H. To make things difficult, use only one PRINT statement, and have the last line printed WITHIN the

main loon, not on its own at the end.

Marvellous MOBs

by Shane Broadberry

Sprites, or Moveable Object Blocks are probably the single most important element in games programming. Although not always necessary, they set apart games wallen on computers such as Amstrads and Spectrums from the superior, glitch-free animation that is so familiar to Commodore owners.

In theory, any computer can support sprites. Most computers however have to use software to achieve the effect, and this method can be extremely difficult to program. In contrast, the C64 has 8 hardware sprites which can be easilv controlled from BASIC. These sprites are the responsibility of the VIC chip. Each sprite made up of 24 x 21 pixels and can be displayed anywhere on the C64's screen (yes, even in the borders, though this requires some work., in any screen mode hires, multicolour etc. They require a minimum of effort to control and setup, yet they result in very impressive, very tast moving objects.

The VIC chip has a number of registers associated with spntes which we access as locations in memory. As we know, the VIC chip resides in memory at $D000 (53248 in decimal). To make this easier to remember, the important locations are usually given as offsets into the VIC chip (i.e. what must be added to the base address of $D000, to attain the correct location). So quite often, we Il reter to, for instance, location 53269 as VIC+21.

Let's get to grips with the setting up of sprites. Try the following:

VIC=53248: POKE VIC+21, 1: POKE VIC, 160: POKE VIC+1, 140

Ok. al things being equal, and assuming no maior faults with vour video chip, there ought to be a rather Il-lo0king spnte roughly in the centre of the screen What have we done? The first POKE places a 1 in location VIC+21. This location tums on ans combination of the eight available sprites. Since there are eight bits In a byte, and eight spntes, each sprite is represented oy a single bit (this arrangeme occurs in several other VIC registers too). So if we place a 27 (00011011 in binary) in location VIC+21, we will have tured on sprites 1, 2, 4 and 5 and turned off the remaining sprites. Note that sprite 1 has the rightmost (least significant) bit of the , while sonte 8 has the leftmost (most significant) bit. A 1 indicates that the spnte is on, a 0 in dicates It Is off.

Now you may be wondering why we don't just place the sprites off the screen when we don't want to see them. There is in fact a very good reason for tuming them off, namely that the 6510, our processor and friend. will run about 4-5% slower with sprites on the screen than it would normally, and this causes timing problems when, for example. loading and saving from tape. Be wamed, blanking the screen will NOT have the same effect as turning off the sprites.

Now the other two locations we poked were locations VIC and VIC+1. The first 16 bytes of the VIC chip from VIC to VIC+15 contain the X & Y coordinates of our eight sprites. VIC and VIC+1 hold the X & Y coordinates of sprite 1 respectively, and similarly VIC+2, VIC+3 for sprite 2 up to VIC+14, VIC+1S'for sprite 8. So all we've actually done in this line of code is to turn on sprite 1 (and sprite I only) and position it at location (160,140). Try putting different values into VIC and VIC+1, and the sprite should jump about.

This method of moving objects is beautifully simple and amazingly powerful - try moving blocks of hires screen about that fast! So what else can we do with out sprites? Well, for starters we can change their colors. Each sprite has its own which can he accessed in memory fm locanans VICa?0 to colour register VIC+46 (VIC+39 controls the colour of spnte I). How about doubling the size of our sprites? No problem. Try:

POKE VIC+29, 1: POKE VIC+23, 1

This should double the size of sprite 1 in the X and Y directions respecavely. Other spntes, or combinations of sontes can be expanded in the same way by setting the addropnate bits in these registers - As you can see. sonies are very versatile and nave a huse dotential fust look ar at some of the o- demos on Compunet. St or which are largely based around spntes.

So far, the only view of sprites that we've had has been a rather poorly defined square (or something like it). Obviously, this is not ideal if what we really want is a 3-dimensional smoothly rotating US Enterprise. So how do we go about converting our square into something we want?

Sprites as mentioned earlier are made up of a grid of 24 x 21 pixels. A byte can represent 8 (mono colour) pixels, so we require 3 bytes * 21 bytes to detine one spite - in other words 63 bvtes. Commodore however allocated 64 oytes per sprite (the extra byte being ignored). This served Commodore's purpose and as a bonus makes our calculations and programming a little more straighttorward.

So what we need to do is design the spite in a 04 Dyte chunk and then tell the VIC chip where this chunk can be found. There are eight consecutive memory locations which are normally found at location 2040, and these contain pointers to the chunks for the eight sprites. Location 2040 holds a number from 0-255. which represents a pointer to sprite 1's definition. The position in memory where definition starts is calculated by multiplying the contents of location 2041 (just peek it) by 64. So if location 2041 for instance holds the value 192, we know that the definition for sprite 2 is at 192 x 64 = 12288 ($3000) in memory. Let's demonstrate this. With sprite I positioned somewhere on the screen as before type:

POKE 2040, 192: FOR X = 0 TO 63: POKE 12288+64+X, 255: NEXT

The sprite on the screen should quickly turn into a solid square, or possibly a rectangle if you have expanded it in one or other of the X and Y directions. Now try the following:

POKE 2040, 193: FOR X=0 TO 63:POKE 12288+64+X, 63: NEXT

We have now set up two different sprite pattems and can switch between them by changing the contents of location 2040 from 192 to 193 and back again. This is a very crude example of how spntes are animated - a number of patterns could be defined for the sprite (e.g. the various views of the Enterprise) and we could then write a small routine to switch between the pattems and animate the spnte as orten as necessary. If more detail is required, two or more spntes can be super-imposed , top or each other, and to top it al, if we wait for the raster haam to reach the bottom, the screen we will end up animuns whic woul man Don Bluth Sit up. And most importanuy, au this takes a minimal amount or.

The sprites that we ve seen so tar have lacked creativity in the extreme. We have simply planket filled memory locations. To create missiles and other sprite designs, we have two choices. one easier than the other. We can leam to envisage what we want the sprite to look like in our minds eye men manuay conver "mase into binarv and then into hexadecimal (this should result in Interesting designs. If not a headache!). Altematively, you can give Tom our librarian £l of your hard earned money and take out disk #16 which contains Eddy Carroll's excellent sonte editor, and let the Co- do all the hard work. The choice is entirely up to you, but either way I hope you have fun playing with sprites!

Recommended reading: The Commodore 64 Programmer's Reference Guide.

Solutions to BASIC Puzzles on Page 27

Note: See BASIC Patterns by Stephen McGerty for puzzles

Solution #1

INPUT "ENTER SIZE OF BOX"; N
FOR A=1 TO N
PRINT STRING$(N,"*")
NEXT A

Solution #2

INPUT "ENTER HEIGHT OF DIAMOND"; H
INPUT "ENTER CHARACTER TO USE": C$
IF H MOD 2 = 0 THEN RUN
H=INT(H/2)
FOR A=-H TO H
X=H-ABS(A)+1
PRINT TAB(H-X+2); STRING$(2*X-1,C$)
NEXT A

Solution #3

REM This program uses conditions as part of expressions. If the
REM condition is true, it retums a value of -1. If the conditon is
REM faIse. It retums a value of 0.
REM Try: PRINT X=0 or PRINT X=2 in direct mode
REM
INPUT "ENTER HEIGHT"; H
FOR A = 1 TO H
PRINT TAB(H-A+1);"*";
PRINT STRING$(-(A>I)*(2* A-3),32-10* (A=H));STRING$(-(A>1),"*")
NEXT A

CUGI Crossword #3

by Rocco Matassa

._______________.
|1 2 3 4#5 6 7 8|
| # # #9  # # # |
|A  # # # # #B  |
| ###CD #EF ### |   
|G H   #I#J  K  |
| # #L      # # |
|MN  # # # #O P |
|# ##Q  #R  ## #|
|S T # #U# #VW X|
| # #Y     Z# # |
|a     # #b     |
| ###c d#e  ### |
|f g# # # # #h  |
| # # #i  # # # |
|j      #k      |
.---------------.

Welcome to another CUGI crossword. This time, we are offering a mystery pnize for the first correct solution received by the committee by the 1st September 1989. This gives vou the whole summer. so you've no excuse for not entering!

(See opposite tor the clues)

Across Clues

1. Could CAIN be big with a garden bird (7)

S. What the farmer's wife does to the mice (7)

9. Shelter (3)

A. Done on a track, maybe a friend would turn up? (3)

B. Australian bird (3)

C. Maybe a full pot (3)

E. An apt source for water (3)

G. This condition for health (6)

J. F' not heavy, keeps a dart on course (6)

L. Was a prison, now the site of the Old Bailey (7)

M. Up father or a way to travel (4)

O. A joint berween ankle and thigh (4)

Q. The definite article (3)

R. Sob (3)

S. West could supply a meal (4)

V. A bad deal weighs heavy (4)

Y. Cats. Evita. Oliver (7)

a. Westem shows (6)

b. Italian painter (6)

c. Cot (3)

e. This here could hide her (3)

f. Sink the black with this stage sign (3)

h. Fool (3)

i. Sounds like your boy lights your life (3)

j. A complex that can exclude your father (7)

k. Would a lady sip a drink tor a show like this (7)

Down Clues

1. First television satellite (7)

2. Could opt lead to a high point (3)

3. A very well known English scientist (6)

4. Applause (4)

S. Rapid transport in the Dublin area (4)

6. Drink a little? (6)

7. Break this to warm up a party (3)

8. Another fast transport system, could go with a bang (7)

D. Leave your door open (4,5)

F. Everythings totalled, could be Geoff's gone home (9)

H. Could an ape lead to an uncomfortable mattress (3)

I. Ova (3)

K. Firearm (3)

N. Grain (3)

P. A time we are uncertain of (3)

S. Hot wind (7)

T. Finish (3)

U. A dir give entrance to this (3)

W. An old testament priest (3)

X. Could this be a Chinese opera (7)

Y. An old 18th century hat (6)

Z. True subjects, not lies for example (6)

d. Sleep for the night, do so (4)

e. This witch could be found on the beach (4)

g. Ned came last with The (3)

h. This way means every way (3)