april/may 1984 - Defence Force

54
11£1. - ... APRIL/MAY 1984 . ISSUE 7 TYPE IN EDUCATIONAL PROGRAMS WE LIST THE SOFTWARE THAT'S AVAILABLE PLA Y PINBALL WITH YOUR ORIC

Transcript of april/may 1984 - Defence Force

11£1. - ...

APRIL/MAY 1984 . ISSUE 7TYPE IN EDUCATIONAL PROGRAMS

WE LIST THE SOFTWARE THAT'S AVAILABLEPLA Y PINBALL WITH YOUR ORIC

The very best in arcade action-

Rat Splat:A revolting game. h

Splat the rats in the sewer before ~.~

'0they consume the cheese, and destroy the monsters (Ut>

before they consume you! 48K. £7.95. d

I! PI- ~J ~

.-

",?E:-

:i¥,,~,~i

~ .,..or let's get down to b~sines~

'~-'~'- - /VII'IGA:l,N£

Tansoft produce a wealth of business and utility software to cater for, ~ ~~ ' -' ,;:fft ~7

ever'!interes,t. Th~ 'not so' games-minded people maybe ,-':-5 ~,~.~ PA -' . -r

r" ~,coming to gnps wlth:- ~~--- 'l~. . ,t" " -1Author: A powerful word-processor program which ~::-~~? 0;" ~~ l1

,. .~

includes word-wrap and word-count. Ideal for letters and ,~~ .reports. 48K. £14.50. 'Oric Calc: A full spread-sheet program allows you to sumcolumns or rows and apply complex formulae. :48K. £14.50.Oric Cad: A computer aided design program for displaying,rotating, enlarging and shading objects on the screen.48K. £9.99.For the full range of Tansoft software - which currentlynumbers over 20 titles - pick up a catalogue in your localComputer Store or contact Tansoft at Unit 1,The Techno Park, 645 Newmarket Road, Cambridge.Tel. Teversham (02205) 2261.

APRIIJMA Y 1984-ISSUE 7

COMMENT, Page 4It's out with the old and in with the new

NEWS, Page 5A successful show, Oric sponsorship and plenty more

SOFTWARE FOR YOU, Page 16Seven programs for you to type in

SOFTWARE LISTINGS, Page 19The listings - and they're large enough to read without amagnifying glass

SIMPLE SENTENCES

PINBALL

CHARACTER DEFINER

3D ROTATION

CHARACTER REDEFlNER

SPELLBUZZ ANALYSIS

SOFTWARE REVIEWS, Page 39Reviews of the software we've been enjoying for the lastfew weeks, and think you should be enjoying too!BOOK REVIEWS, Page 6

The latest releases are assessed

CLUB SPOT, Page 7There's a foreign flavour this time

PRACTICAL MACHINE CODE, Page 9Part two of an easy to follow introduction to thecomplexities of Machine Code

"DEAR ORIC OWNER", Page 13What you have to say to us, and what we say to that

DISASTER AREA, Page 14Had problems with a recent listing. Here's what thelistings should have had in them. . .

COMPETITION, Page 15Win yourself a copy of The Hobbit, a classic adventuregame

--SOFTWARE LISTINGS, Page 40We bet you never thought there was as much softwareas this available for your Oric

QUICKIES, Page 43Plenty of short programs for you to enter. Some aresimply demonstrations, others are more useful

AND FORTHLY . . "Page 46Four new words defined

APPEND/RENUMBER, Page 47A Machine Code porgram that gives far better filehandling on the Oric computer. You can combine twoprograms, and renumber listings

HINTS AND TIPS, Page 52Useful advice from other Oric owners to make yourcomputing easier

NEXT ISSUE'We'll be interviewing the inventor of the Atmos, looking

at the Microdrive, examining Oric's sound features andsupplying all the best listings, reviews and latest news.

Cover illustration by Ains]ie Mac1eodOric Owner 3

-Onc OWl1e~Editor: Kester CranswlckAssistant Editor: Carolyn GroeneveldPublisher: Paul B. KaufmanPrinters: Heffers Pnnters Ltd.Kmg's Hedges Road Cambridge

After two continuous years ofproducing magazines, thetime has come for me tostep down to allow someone

who knows what they are doing totake over. That person is KesterCranswick, who joins us from a wellknown photography magazine. Hisexperience in this field, plus hislong-standing Oric ownership, makeshim the ideal person to develop andexpand Oric Owner magazine.

As Managing Director of Tansoft, Inow have the responsibility ofensuring the continuation of OricOwner and the development of awide range of software for the Oric.I shall submit pieces now and again,particularly on technical subjects suchas Forth.

Kester and I will be available tomeet you at all the major ComputerExhibitions this year and everyone iswelcome to talk about all Oric relatedsubjects. I shall look forward tomeeting you.

Bye bye for now.

I

Publisher

When I bought my Oric, back in theearly days, I never imagined it would

lead to me sitting in the editor's chairof Oric Owner. At that time I was thetechnical editor of a weeklyphotographic magazine, interested inlearning about computers.

Since then I've learnt quite a bitabout the Oric and computing ingeneral. Still, I'm no expert, and makeno claims to be. However, here atOric Owner I'm surrounded byexperts, and part of my job will be toput across information in a way thatevery Oric owner can understand.

I know that the information andprograms that come in every day fromyou is of a very high calibre. I knowbecause I've always read Oric Owner,and benefited tremendously from it.

In the coming months I hope tonake Oric Owner even better than itlas been. There are plenty of plans3.foot,and many ideas to look into. So,.f you have any ideas or suggestions'or the magazine, let me know.

Editor

Oric Owner 1Spublished at b1-monthlyintervals byTansoft Ltd.Units 1 & 2,Cambndge Techno Park,Newmarket RoadCambridgeTel 022052261Reg No. 1632070ISSN 0265-8488Subscriptions. £7 50 [or six issues (UKonly). Overseas rates on requestBacknumbers. £I. 20 (3 and 4 only)@ Tansoft Ltd

4 Onc Owner

RUNNING FOR ORICS

Oric are doing their bit tohelp Britain's athletes get toLos Angeles for this year'sOlympic games, Oric put upprizes for a national Run forBritain, held on the 18thMarch at Wisley Park, Surrey

The prizes went to therunners who raised the mostmoney from their sponsors,Two 16K Oric-l computersare to be awarded to the topmoney raisers, one to anunder 16 runner, one to anover 16 runner. And, just in

case some runners felt they'dnot got enough sponsorship,all runners returning theirsponsorship money by 21stApril will be elegible for aspecial prize draw, First out ofthe barrel in that wins abrand new 48K Oric Atmos,With the lure of a homecomputer like the Oric, thenational organizers hope to goa long way towards achievingthe total target of £1.5 millionpounds needed by the BritishOlympic hopefuls,

LET '84 LAUNCHESWhat's in store for '84 was thetheme of the inauguralLeisure Electronics Tradershow at the Heathrow Pentahotel in mid-February, Thethree day, trade only show,attracted 120 exhibitors,enough to fill three floors,

Oric took space to show offthe new Atmos, the restyledprinter and the yet to bereleased Micro Disc, Therewas plenty of Oric software tobe seen too,

Tansoft had a second

,version of Chess, this timewith synthesised voicecommands, They alsodemonstrated their latestgames and the Author wordprocessing package,

Arcadia were showing asample of Pasta Blasta, thefirst part of a Pasta Warstrilogy, Ocean had rigged upan old Space Invaders arcadegame to demonstrateHunchback Durell wereshowing Harrier Attack on afive foot screen andSalamander were enthusing

about a new racing game,Classic Racing,

With the launch of theAtmos, there seems to be agrowing commitment to Oricsoftware on the part of majorsoftware houses, There are anawful lot of Oric owners outthere just waiting for the rightprograms to come along, 1984is looking set to be a greatyear for Oric software,

TANSOFT DEVELOPSLINK-WORDLANGUAGELEARNING SYSTEMLANGUAGE MASTERCLASS, the very first computerisedLink-Word foreign language learning system,waslaunched recently, at the LET '84 Show by Britishsoftware and publishing house, Tansoft Limited, ofCambridge,

Claimed to provide the ability to communicate at abasic level in a selected language within ten to twelvehours - around a 70% reduction over conventional booklearning methods - MASTERCLASS is essentially aimedat British businessmen who travel abroad, couriers,tourists and home-study students, It is only compatiblewith the new British 48K Oric Atmos microcomputer andits forerunner, the Oric-l 48K, and is now available inFrench, German, Italian and Spanish versions,

TERRY SHURWOODJOINS ORIC BOARDFROM MATTEL

Terry Shurwood (43) hasbeen appointed to the boardof Oric Products InternationalLimited, the Ascot based

electronics company who lastmonth launched the Atmos48K micro computer.

Mr Shurwood joins Oric asSales and Marketing Director,taking over from PeterHarding who assumesresponsibility for new verticalmarkets including Viewdata,

A former National AccountManager for ITT, GeneralSales Manager for IngersolElectronics and, mostrecently, Sales and MarketingDirector for Mattel Electronics(UK) Ltd, one of MrShurwood's responsibilitieswill be the restructuring ofOric's sales force andimproving support to thecompany's 1000 UK microcomputer dealers,

Oric Owner 5

COMPUTINGWITH THEORIC-Ilan HickmanNewnes Technical Books£6.95

The Oric manual has come in.for its fair share of Gustified)criticism. This book is not somuch a rewritten manual as acomplementary volume. Itsets out to fill the gaps of theoriginal manual.It is written without referenceto the Atmos, so takes thebugs of the original Oric intoaccount The MCP40 printeris dealt with too.

So as not to alienatenovices, the author starts witha look at the history ofcomputers, explains commonterms and how to get the Oricrunning. Sections on BASICprogramming, colour,graphics, editing andmathematics follow. They arewell written but if you'vepersevered with the manual,there's little new to begleaned from them.

A chapter on Boolean logicis certainly valuable as that's areal gap in the manual. Thenit's back to strings, moregraphics and soundcommands, with a few helpfultips here and there. Gooddemonstration programs areused throughout to illustratecertain features and points.6 Onc Owner

So far, so so. Now come thegood bits. There's a chapteron tape handling, one onimproving BASIC programstructures and a lengthysection on Machine Codethat's as good an introductionas we've seen anywhere. Achapter on printers is alsoworth reading too, as is theappendix on the Centronicsinterface.

For the beginner, this is afairly good book, though thefinal chapters may well beconfusing. For the moreadvanced user, the firstchapters are unnecessary andthe later sections, very handy.The book thus falls betweentwo interest groups.Depending on yourexperience, it may be whatyou want, or it may not Justlike the curate's egg, it isgood in parts.

lMETEORICPROGRAM-MINGJohn Vander ReydenMelbourne House, £7.95

~

There's no shortage ofprograms to enter into yourOric. This collection of 30listings is one of the mostbalanced around.The usual game variants areincluded - Frogger, Bomber,Lunar Lander, Invaders andso on. They are all quitestraightforward with few frills.Other games include a short

adventure, a threedimensional maze and somerather more original games.

More useful programsinclude basic payroll andsales analysis listing, asynthesizer listing, a workingclock and a drawing aidprogram. And, for MachineCede programmers, the lastsection of the book has someuseful explanations andutilities. These are a MachineCede monitor, a linerenumber and a block linedelete.

Each program is illustratedwith a picture of the screendisplay. That gives an idea ofwhether the program is worthentering in. There are alsogood explanations of programstructures, useful subroutinesand variables. The buddingprogrammer will certainlylearn plenty from this book.

The programs contain a fewbugs, chiefly the dreadedELSE bug. A thoughtfulfeature is the indication of thelengths of empty strings - anidea we wish other programlisters would follow.

If you are on the lookout fora book of programs that willteach as well as entertain, thisis certainly worth getting. Werate it highly.

SIXTYPROGRAMS

~

FOR THEORIC-IErskine!WalwynlStanley/Bews

~

pan, £4.95Produced in collaborationwith Personal ComputerNews, this is a good valuebook of program listings.With 60 programs, it will keepyou busy for weeks.The programs are listed withnothing more than a briefdescription of the game.There are no tips, no screendisplays and the only way toestablish the value of aprogram is to laboriously typeit in.

All the usual programs are

listed, along with a few novelones. The most ambitious is athree part, 20 page gamecalled Evolution. Otherinteresting listings areOptions - to help you decidebetween a number of options,Holiday Expenses, a simplepayroll calculator, abiorhythms listing and amoving message displayer.

The listings are ratherlengthy, enabling theprograms to be of a highstandard. Bugs are uncommon- the publishers will supplycorrections to Alien, Hangmanand Minelay listings. Othererrors will be your fault!

Whatever your gameinterest, there will be a fewprograms here for you. Takethe trouble to type them inand you'll be royallyentertained. At just £4.95, thisbook offers excellent value formoney, if you want a goodcollection of games that youcould improve on. Otherbooks may educate you - thisone is purely for amusementIt does that exceedingly well.

UNDER-STANDINGORIClan McLeanPrentice!Hall £7.95

Were we to recommend justDne book to the Oric owner,this would be the one. For a

user wanting information ontheir Oric, at whatever level,Ian McLean's book is a must.For a start, it has full details 0the Atmos, how it differs fromthe Oric-l and how the newcommands operate. Shouldyou be thinking of upgradingto an Atmos, reading thisbook will detail what you'llbenefit from.

The book starts at the verybeginning - unpacking thecomputer. Experienced usenwill be able to gloss overthese sections, though theyare well written and very we]illustrated, even if the style isa little condescending

Short programs are giventhroughout, encouraging thereader to use his computer.Screen pictures of whatshould be displayed also heIrthe reader too.

BASIC is tackled in ahelpful manner too, withlengthy explanations ofcommands, examples andprogramming ideas. Word

and number handling iscovered effectively. Thesound section is extremelyuseful in its thoroughness andmakes sense of the manual'sinstructions. The graphicschapters are equally good.

A chapter of miscellaneadeals with attributes, POP,PULL, GRAB and RELEASEcommands plus the filehandling features of theAtmos. Then there's a chapteron printers (Oric and others),followed by a shortintroduction to Machine Code.

The back of the bookcontains numerousappendices - ASCII codes,BASIC commands, AssemblyLanguage instructions and soon.

All in all, this book shouldbe bought by every Oricowner, and adopted as amanuaL It is a little short onMachine Code, but for theBASIC programmer, there'snot a better book around.

CALLING ALL ADVERTISERS

The Oric Owner is the only magazme devoted to the Onc-I and Atmoscomputers.

VIrtually every person who buys an Onc will get this magazme. If youare selling Oric related products can you afford to miss this chance toreach the market you are aimmg for?

For full detaIls of our adverhsmg rates contact Carolyn on Teversham2261 and see if she can help you.

How many other Oric ownersdo you know? If you know afew, why not get a clubgoing? We'll provide freepublicity to readers, throughthe magazine, and help withany queries you may have.

For instance, if there areany Oric owners in theHarrow area, James Shieldswould be delighted to hearfrom you. He wrote to us withdetails of his Oric outfit andwanting to contact otherowners, If you'd like to talkOric with James, his addressis 182 Welbeck Road, WestHarrow, Middlesex HA2 ORX.

Moving further afield, anumber of clubs have beenestablished on the continent.Here are the contactaddresses,

BelgiumOric Club VerviersMr Philippe Mawet,52 Rue Waoury,4502 Queue-du-bois,Belgium

BelgiumMr Kaisin,Rue de l'Idylle 19,1080 Bruxelles,Belgium

BelgiumOric Computerclub Floppypia Mathieu Doumen,Dennenlaan 7,3460 Maasmechelen

HollandNedoric,Dhr. G Tax,Gasthuisring 24,5041 OS Tilburg,Nederland

If you're travelling abroad,why not contact these clubs?

If any Oric owners wish toset up a club, give us somedetails and we'll happily passon information for you,

U.K.

Cardiff12 Tregarth Court,Creigiau,Cardtff

Kentclo Roger pyatt,23 Arundel Drive,Orpington,KentTel 66 20281

This is the place to sell yourexcess software andaccessories, Oric Ownerclassifieds will reachthousands of Oric owners whomay be interested,

Classified ads cost Just 15pper word, up to a maximum of30 words, Just write your adclearly and legibly on apostcard and send it to OricOwner, Classifieds, Unit 1 & 2,Techno Park, NewmarketRoad, Cambridge,

Oric-I 48K TAPE COPIERmakes backup copIes ofany standard Oric-lSoftware package, (NBusers must not infringecopyright),Copies basic, machmecode including protectedautorun. Easy to use,repeat copies, instructions,Send £5,50 for cassette andinstructions to:A Johnson, 11 BedburnAvenue, Wear View Est,Sunderland, Tyne andWear.

Onc Owner 7

For the ORIC-1and now also for the ATMOSEducational software. . .

Story Book - A cha 11engi ng game that develops

readi ng ski 11s. Sui tabl e for any level from earlyreader onwards. You choose the text, the game isto reconstruct it by guessing the words. £4.95

Picture Book - A colourful spelling game foryoung children. Build up pictures by typing wordsand seeing the objects appear "by magic". £4.95

Personal finance. . .

Account Book - The money management program.Budgeting and record keeping by automatic doubleentry. Produces full reports on screen or printer.Easy to use and menu driven throughout. £12.50

- Soft backs -Send to:Softbacks, Dept. TS. PO Box 257, Watford, WD1 3LQ.Please state model of computer. (Account Book isfor the 48K ORIC-1 only.)Send sae for further details.DEDUCT50p from total for more than one program.

DUCKWORTBHOME COMPUTING

All books written by Peter Gerrard, fonner editor of CommodoreComputing International, author of two top-selling adventuregames for the Commodore 64, or by Kevin Bergin. Both are regularcontributors to Personal Computer News, Which Micro? and

Software Review and Popular Computing Weekly.

EXPLORING ADVENTURES ON THE ORlC 48Kby Peter Gerrard

This is a complete look at the fabulous world of Adventure Gamesfor the Oric Computer. Starting with an introduction to adventures,and their early history, it takes you gently through the basicprogramming necessary on the Oric before you can start writing

your own games.Inputting information, room mapping, movement, vocabulary -everything required to write an adventure game is explored indetail. There follow a number of adventure scenarios, just to getyou started, and finally three complete listings written specially forthe Oric, which will send you off into wonderful worlds where

almost anything can happen.The three games listed in this book are available on one cassette.

£6.95

Other titles in the series include Sprites & Sound on the 64, 12Simple Electronic Projects for the VIC, Will You Still Love MeWhen I'm 64, Advanced Basic &Machine Code Programming onthe VIC, Advanced Basic & Machine Code Programming on the64, as well as Pocket Handbooks for the VIC, 64, Dragon, Spectrum

and BBC Model B.Write in for a descriptive leaflet (with details of cassettes).

DUCKWORTIIThe Old Piano Factory, 43 Gloucester Crescent, London NWI 7DY

Tel: 01-485 3484

SPECTRUM 16-48K ORIC 16-48KScuba Dive (48K only) Scuba DiveHarrier Attack Harrier AttackJungle Trouble Galaxy 5

Starfighter (48Konly)COMMODORE 64Scuba Dive ATARIHarrier Attack Harrier Attack

DURELLsoFTWAREavailable fromW.H. SMITH. LASKYS . GREENS ATDEBENHAMS . BOOTS, COMPUTERS FORALL. MARTINS, SPECTRUM CENTRESand many otherretail outletsor order direct fromCASTLE LODGECASTLE GREENTAUNTONSOM. TA14ABTRADE ENQUIRIES TO:SOFTWEARCOMMUNICATIONS LTDMARTECH HOUSE4, BAY TERRACEPEVENSEV BAYEAST SUSSEX

TEL: (0323)768456

PRACTICALMACBINECODE

PART 2

Machine Cod. is not as complicated as it looks. D.Sinfi.ld continues hi8 explanations of it from lastiaue. Thi8 time, he looks at 8C1'8en8C1'Olling.

The program to move the top line of the screen in thefirst part of this article (Oric Owner 6) showed thatmachine code programming isn't just for whizz kids whothink in code. Admittedly it is a long way removed fromBASIC and it does require some preparatory workbefore entering a program. A proper monitor orassembler/disassembler can relieve the programmer ofa lot of the drudgery, especially in working out offsetsand looking up opcodes on a chart, but is the extra effortworth it? To answer this question let's now compare thespeed of machine code with that of an analogousprogram in BASIC.

The incrementing and decrementing of the Y indexdone to point to the character position along the screenline can be replaced by a FOR/NEXT loop. This alsotakes care of the conditional branch we used to checkthat the whole line was done. The LDNST A pairs used inthe code can be replaced with PEEKs and POKEs. Theresulting BASIC looks like this:

10 B = PEEK (48079)20 FOR A = 48078 TO 48042 STEP-l30 N = PEEK(A)40 POKE A + 1, N60 NEXT66 POKE 48042, BAdd 6 FOR C = 1 TO 600

60 NEXTto run program 600 times

I have converted all the hex addresses to decimal tomake the program run as quickly as possible. Enter andrun both programs to compare the speed. You shouldfind there's a massive difference. Even using a clumsyBASIC/FOR/NEXT loop to CALL our routine 600 times itonly takes 2.7 seconds. The BASIC takes in the region ofnearly four minutes to do the same thing. The amount ofmemory used can also be critical. The first two lines ofthe BASIC program use more memory than the wholemachine code routine.

I hope you're now convinced that it is worth looking alittle more into machine code programming. First, definewhat you want to do because if you don't know whereyou're going any road will take you there. The linescrolling program can be extended to scroll the whole

screen. The initial flowchart is in Fig. 1. Notice that theflowchart doesn't get any more complicated becausethere is not need to detail the line scroll. We've alreadydone it.

Skip down to 'have we done whole screen?'. For theline scroll program to work we want to enter the addressof the position of the left hand side of the line in 0000 and0001. We can use this to decide when the bottom of thescreen has been reached. The last line's address isBFBA so the program should end when it arrives at thedecision with 0000 containing BA and 0001 containing BF.Have a look at the extended program in Fig. 2. It shouldbe familiar to line 16 but note that the RTS in line 16 ofthe line scrolling program has gone. That was the returnfrom Subroutine to get us back into BASIC (RTS is notalways used like this). Following the familiar bit are sixlines (16 to 21) that decide whether the bottom line hasjust been moved to the right.

These are new and deserve a flowchart of their own(Fig. 3). It looks a bit complex but if you follow it throughstep by step you'll see that the only way to reach the endis to have a 'yes' to both decisions. If the answer to either.question is 'no' there are one or more lines left to do.Now, look at the assembly code in Fig. 2 to see how thishas been achieved. Line 16 is another LoaD Accumulatorinstruction in a new mode. Line 1 is an example of LDAimmediate, line 6 uses the same instruction but indirectindexed and now in line 16 we have zero page LDA. Allit means is that the accumulator should have the value ofzero page address 00 (the low byte of the line pointer)transferred to it in preparation for making the decision.In line 17 the instruction is new but the mode, indicatedby the hash mark (#) should ring some bells. The,instruction is CoMPare. It's very useful because itactually does the subtraction sum required withoutaffecting the contents of the accumulator. How can doinga sum but not producing an answer be helpful? Thesolution lies in the way the 6602 decides whether or notto branch when it comes to a conditional instruction.

The 6602 has a special byte in its architecture calledthe Processor Status Word, often referred to as the PSW.This contains eight single byte 'flags'. It is these bits thatare tested by the Branch instructions. The flags are setand cleared as the result of various instructions. Thedetails of the flags that will be affected by a particularinstruction are given in appendix K of the Oric manual.The flag we are interested in for all the conditionalbranches in this program is the zero flag. It is set if theresult of an instruction is zero and cleared if the result isnon-zero. BNE causes a branch if the zero flag is clearedand BEQ branches if the zero flag is set. Taking anexample from the program so far: line 13 causes theprogram to branch back to line 8 if the zero flag wascleared by the result of line 12 being other than zero.This may seem a convoluted way to go about it but laterwhen the programs get more complicated we will findthat transactions not only in the indices X and Y and the

Oric Owner 9

accumulator but anywhere in RAM can result in changesin the flags and thereby be used as the criteria forbranches.

So the compare instruction does a subtraction andalthough it does not produce an answer it alters therelevant flags. We test the low byte of the addresspointer against BA. If the result is not zero then thebottom of the page has not been reached, there's noneed to check the high byte and the program skips tothe updating of the pointer. If, however, the low byte isequal to BA then it is necessary to check the high orderbyte. This is done by lines 19 and 20 and if the result ofthe comparison of the high byte of the pointer (at 0001) iszero then we want to exit from the program. The Branchat line 21 points to the RTS that returns control to BASIC.

Another of the flags is the carry flag and the nextsection of the program, dealing with updating the screenpointer, uses the carry. The start of the next line on thescreen has an address 28 (hex) higher than the lineabove. To move the pointer down we want to add 28 tothe address pointer. This sounds straight forward butremember that we can only deal with one byte at a timeand addresses are two bytes wide. The first three linesare no problem - they start at BBAA,BBD2 and BBFA andall we need to do is add 28 to the least significant byte.But, how do we calculate that the next line starts atBC22? Both bytes of the address have changed.

Let's deal with the easy one first. Look at lines 23 to 25in the program. The carry flag is in an unknown state - itmay have been set back in BASIC before this routinewas entered. CLear Carry makes sure that the carry flagis zero before we start the calculations. The nextinstruction is one we haven't seen before: ADd withCarry. The hash mark indicates that the instruction is inimmediate mode so the number following is the value tobe used in the transaction. So, 28 is to be added to theaccumulator. If you look at the program you'll find that atthis point in the program the accumulator holds the valuethat was at 0000 - the low byte of the pointer. For the firstiteration of the routine the accumulator holds the valueAA. Line 24 does the following operation:

Accumulator (AA) + Operand (28) + Carry flag (0)

It puts the result in the accumulator. Do a bit of Hexarithmetic and you'll fmd that the answer to the abovecalculation is D2 which sure enough is the low byte ofthe pointer for the next line. Line 25 should be familiar -it stores the accumulator in the zero page address (0000)we are using for the low byte of the pointer. On the thirdpass through the program the accumulator will hold FAand the above sum will be like this:

Accumulator (FA) + Operand (28) + Carry Flag (0)

The result of this calculation is 122. The accumulator isonly one byte wide so clearly this result will not fit. Thisis where the carry comes in. It, in this case, extends the10 OricOwner

accumulator by one bit. I'm not going into the intricacy ofbinary, so believe that the leading 1 in 122 isrepresented by the most significant bit of this binarynumber:

1 0010 0010-~~

1 2 2

The eight least significant bits (the eight on the right) cango into the accumulator. The one that doesn't fit goes intothe carry. The carry need only be one bit wide becausethe largest result by adding two bytes and the carry bitis IFF (FF + FF + 1 = IFF).

Now, go back to the program in hand. On the thirdpass through, the accumulator and carry flag will looklike this after each instruction:

accumulator carry 0000 0001Line 22 FA not known FA BBLine 23 FA 0 FA BBLine 24 22 1 FA BBLine 25 22 1 22 BB

The carry has to be added to the high order byte of thepointer 'held at 0001. Line 26 loads this byte into theaccumulator and line 27 adds just the carry, because theoperand is zero. The result is stored at the address of thehigh order pointer (0001).The process looks like this:

accumulator carry 0000 0001line 26 BB 1 22 BBline 27 BC 1 22 BBline 28 BC 1 22 BC

So, after line 28, the pointers are as we want them andwe know (almost) all therE\ is to know about doubleprecision arithmetic.

All the we now require of the program is to go back tothe point at which we start to do the line. There is aninstruction in the 6502 set called JuMP which does thejob. The addressing mode of JuMP most used is absolute.This means that following the one byte of instruction twobytes of address are given as the destination of the jump.One thing to remember about any of the absolute modeinstructions is that the low byte of the address must begiven first. When it comes to coding the instruction ~ump .

to 9808' it looks like this:

assembler machine codeJMP 9808 4C- opcode, JuMP

08}

operand (destination address)98

Another thing to remember about absolute jumps likethis is that the code is no longer relocatable i.e. it cannotbe moved about in memory without altering the JuMPinstruction. If this is going to be a disadvantage (if you'reusing the FORTH assembler for instance) and you don'tknow what the abolute address of the destination isgoing to be, then a conditional branch can be used aslong as you make sure the condition is going to be true.An example using a flag that we are familiar with wouldbe:

CLC .BCC relative offset

To put this into words: CLear Carry then Branch if CarryClear. It is obvious that the branch will always be carriedout.

The final RTS is only ever executed from the branch atline 21 and it returns control to BASIC.

That's the whole program but by no means the end ofthe story. As it stands the program can be used to scrollright from any line downwards but it will always run tothe bottom of the page. You may remember how to dothis from the earlier line scrolling program. The top ofscreen pointers can be set up from BASIC and theprogram entered at 9808. How can flexibility beimproved? One approach might be to have the bottom of

page address in memory somewhere and instead ofdoing the comparing in lines 17and 20 in the immediatemode, use zero page mode. This means only four bytesof the program need changing:

old new MachineLine no. assembly assembly Code17 CMP #BA CMP 02 C502.20 CMP # BF CMP 03 C5 03

Ifyou do use this then it is essential that the followingrules are observed:1) 0002must contain the low order byte of the address ofthe left hand side of the screen of the line you want to bethe last of those moved, 0003 must contain the high orderbyte.2) The line pointed to by 0002 and 0003must be lowerdown the screen than the line pointed to by 00 and 01.

If either of these conditions are not fulfilled then theprogram will mess about with memory that's not part ofthe screen and will probably crash. This brings to lightone thing to watch in Machine Code - if your finger slipsin BASICand a word is spelled wrong, BASICtraps theerror. No such safeguards operate in Machine Code -you're on your own talking directly with the CPU!

L N. A C A MeR Fig,,1 LDA #AA 9800

1

2 STA 00 I3 LDA # BB I4 STA 01 I5 LDY#25 I6 LDA (00), Y I7 PHA I This should be familiar8 DEY

~ as the line scrolling9 LDA (00), Y I routine

10 INY I11 STA (00), Y I12 DEY I13 BNE F7 I14 PLA I15 STA (00), Y 9817 J16 LDA 00 19 A500 Get low byte of pointer17 CMP #BA IB C9 BA Compare it to last line address18 BNE 06 ID DO06 If it's not equal then skip high byte comparison19 LDA 01 IF A501 Get high byte of pointer20 CMP # BF 21 C9 BF Compare it to bottom line21 BEQ 10 23 FO 10 If it's equal skip to Exit22 LDA 00 25 A5 00 Get low byte23 CLC 27 18 Make sure carry = zero24 ADC #28 28 69 28 Update pointer25 STA 00 2A 85 00 Put it back26 LDA 01 2C A5 01 Get high byte of pointer27 ADC #00 2E 69 00 Add the carry from the low byte28 STA 01 30 8501 Put it back29 JMP 9808 32 4C 0898 Do next line30 RTS 35 60 Go back to BASIC

Cartoons

I hope you won't mind a fewfriendly criticisms of OricOwner. Per page it is costlierthan more general magazines,so readers may be fussier.

My two greatest hobbiesare comics and computers, inthat order. Please, please stopCaptain Tanex, who is doinggreat damage to both, in thatorder.

Please stop thoseinterviews telling us howgreat the Oric is and howclever you all are. Please stopprinting those 'gosh', 'wow'letters too. I have alreadybought my Oric, and you don'thave to keep selling it to me.

Could we have an articleexplaining the PLAYcommand in detail? I mustconfess that having read andreread the relevant chapter inthe manual several times, I'mstill rather uncertain abouthow it functions.

How about a full list ofsystem variables, or two - onefor each BASICrelease? It'ssilly that your contributorstell you how the machinefunctions.Martin Hagstrem, Denmark

We take your points in theright spirit. How do the restof you feel about interviewsand cartoons? As for thearticle suggestions, watchthese pages. Ed

Interf~cingI have now my Oric-l (48K)for about I year, and I'm verypleased with it.

Lots of my friends havebought a Commodore 64 andthey aren't so happy with it(problems with the recorder,HI'Resolution etc. . .). Still, Iwish to make one complaintabout Oric (overseas). TheOric Owner magazine is onlyavailable in Antwerp, I havefound my first issue 2 weeksago (OCT/NOV).

Now to the point of myletter: I'm not so interested incomputer games but I likeprograms like Word-I,Assembler, Disassembler,Databanks, Forth etc. . .

Also I wish to use my microfor external use, therefore I'masking you for a copy of adesign which a VDinterfaceand how to use it. I alreadymade my own joystickinterface and it works verywell.

On the DIN plug (back ofthe Oric) for the recorderthere is a relay-contact. Howcan it be used?Can you also send me a list ofdisc-drives (floppy) that canbe directly connected to theOric-l without interface.BECU Phillippe,BELGIUMIf anybody out there has adesign for an I/O interface, letus know. We'll happily publishdetails.As for a disc drive

.

unit, the Oric drives arepromised for the near future.

The relay contacts of theDIN socket are for remoteoperation of a cassetterecorder, if it has tlle remotefacility. You'll have to use aseven pin DIN cord. Ed

CompositeVideo

There are problems with the'Composite Video From TheOric I circuit featured in OricOwner 5.

Firstly, it will not workmless the sync pulse is~dded.

Secondly, by putting equalresistances in the R, G and Blines, red green and blue will~llcome out in the same3hade of grey. Using softwarewritten for a colour monitor,this could be a problem! The

screen would be a uniformgrey.

The following circuitdiagram does the job quitewell. It is worthexperimenting with differentresistances before doing thefinal assembly.

D.J Wyper, Glasgow

Notice of RenewalBefore you throwaway the envelope this issue of OricOwner came in, look at the address label. If there is an Rnext to your name, it means your subscription should berenewed, and this is the last issue you'll get on yourcurrent subscription.

Fortunately, a new subscription won't cost as much asthe old. We've been able to cut costs, so the next sixissues will cost just £7.50, instead of £10.00.Europeansubscriptions are £10.98 for six issues. Contact us foroverseas rates: You'll find a form at the back of this issue.Alternatively, if you don't want to cut up the issue, dropus a line with a cheque made out to Tansoft Ltd. We lookforward to having you with us for the next six issues.

IBack issues are available for £1.20 each. If you missed your first Ilfree issue contact your dealer or Oric Products International who will IIsupply you with one.

I

AND FORTHLY . . .Forth enthusiasts may bestruggling with the MoneyManager listing given in OricOwner of Decemberl}anuary.

Two screens were omIttedfrom the listing. Here theyare.. .

Screen 10 (PRNTR PACKAGE FOR

MONEY MANAGER-CONTROLS &HEADINGS)

1 : TAB 9 EMIT:: PRINITPON 27 EMIT 64 EMIT: :BIGCH 14 EMIT:

2 : UlL 27 EMIT 45 EMIT 1EMIT: : NUlL 27 EMIT 45EMIT 0 EMIT:

3 : SETTABS 27 EMIT 68EMIT 11 EMIT 28 EMIT 38EMIT 48 EMIT

4 58 EMIT 68 EMIT 0EMIT: : SMCH 20 EMIT:

5 : LICAP TAB BIGCH U/L." LIST OF ITEMS" NUlLSMCH:

6 : LIHEAD UlL ." TITLE"TAB TAB." CR" TAB."

OR" TAB

7 ."START" TAB." FINISH"TAB." PERIOD" NUlL:

8 : FRCAP TAB BIGCH UlL." FORECAST REPORT"NUlL SMCH :

9 : FRHEADl ." FROM"NOW.DATE ." TO" FIN.DATE." WITH A"

10 ." STARTING BALANCEOF #" BAL D@ .STERL :

11 : FRHEAD2UIL." DATE"TAB." TITLE" TAB." CR"TAB

12 ." OR" TAB."BALANCE" NUlL:

13 : CR/DR AMOUNT + D@3 PICK CID + C@ 68 = IFTAB ." #' .STERL

14 ELSE." #" .STERL TABTHEN:

15-

SCREEN 20 (PRNTRPACK/MONEY MGR-USER WORDS LIST-ITEMS

& FORECAST-REPORT)1 : .REC DUP 16 TYPE TAB DUP CR/DR TAB DUP START +

.DATE TAB2 DUP FINISH + .DATE TAB .PERIOD:3 : PRXSAC DUP NEXT + .DATE TAB DUP 16 TYPE TAB

DUP CR/DR TAB4 DUP AMOUNT + D@ ROT CID + C@ = IF DMINUS

THEN BAL D@ 0+5 OVER OVER BAL 2+ ! BAL! DUP ROT ROT." #" .STERL

0< IF .

6 ." OR" ELSE." CR" THEN:7 : LIST-ITEMS RECORD DROP PRINIT SETTABS CR LICAF

CR CR LIHEAD8 CR TOP MAXRECS 0 DO RECORD DUP C@ 32 = 0= IF

CR .REC ELSE DROP9 THENDOWN LOOP CR ." END LIST" CR POFF :

10 : FORECAST-REPORT CLS RECORD DROP FROMTO?PRINIT SETTABS FRCAP

11 CR CR FRHEADl CR CR FRHEAD2 SETIST BEGINEARLIEST DUP NEXT +

12 FIN LATER WHILE DUP DUP NEXT + SWAP FINISH +LATER IF DUP CR

13 PRXSAC THEN UPDNXT REPEAT DROP CR ."ENDREPORT" CR POFF:

14 FORTH DEFINITIONS LATEST 12 +ORIGIN! HERE 28+ORIGIN !

15 HERE 30 +ORIGIN! HERE FENCE! ." ***" :S

CINDERELL1Cinderella, the adventure inOric Owner 5 has a numberof bugs in the listing. Here arethe corrected lines.

400 IF C$="RUN"THENGOSUB 2570

440 IF (B$="N" ORLEFT$(ZS,@)="GO N")AND S%(P%.l)<>OTHEN P% = S%(P%, 1) :K=l

1690 REM INVENTORYROUTINE

1200 DATA on the main roadleading North/South,32,35,0,0

1111 DATA in a hallway. Thestaircase leads up fromhere., 0,0,3,1

2220 .. haven't

ORIC COPYIf you use the Oric Copyprogram from issue 5 you willfind that the MCP40 printerprints a - instead of a £ sign.Mr P. R. Mitchell of Ayrshirehas a modification that willresult in a # being printed.

At #0400, replace 207BF5with 4C6D04.

Then insert the following#0460 C95F [CMP #5F#047F [F006 [BEQ #0477#0471 207BF5 []SR #F57B#04744ClO04 []MP #0410#0477 A923 [LOA #23#04794C7104 UMP #0471

WORD-lWord-l was a simple wordprocessor program publishedin Oric OwnerOctober/November. It hadsome pretty major bugs.Reader Mr R. Entwistle ofSheffield has managed to getit running almost asdescribed, though thesub-editing routine still needsa little work. Here are hissuggested corrections.

Add LORES 0 after every CLS

command. PLOT commandscannot plot in column 0 whenin the TEXT mode.

460 GOTO 120

Y4in 1030 and elsewhereshould be the i symbol.Yeshould be a < sign and% a > sign.

1115 : GOTO 1122

8050 IF P= 1 THEN 8200

TELEPHONE DIRECTORYProblems arose with theTelephone Directory listing ofthe Feb/March Oric Owner.You will not be able to storethe name-number arrayscreated with a simple CSAVEcommand.

If you have an Oric-l thisprogram will not run withoutextensive modification to aive

an array saving and arrayloading routine. However, ifyou own an Atmos, you coulduse the STORE routine. .Replace CSAVE in line 530with STORE. You will alsoneed to build in a routine touse the RECALL command ofthe Atmos to reload the arrayinto memory.

ATMns CnNV~RSTnNAtmbs owners wanting to uselistings for the Oric-lcomputer won't findconversion very difficult. Witha BASIC program, all youneed to do is to add one to

--- - - ----

the first, X co-ordinate of anyPLOT command. Rememberto alter variables that relate tothis figure too. Programs willthen work as they're meant towork.

THE COMPETITION-50 HOBBITS TO BE WONWhy spend £14.95 on :I'heHobbit when you might winone for the cost of a stamp?We have 50 copies of thegame to give away. Solve thepuzzle and one of them couldbe yours.

Entry is simple. The12 names that are from orrelated to The Hobbit. Theycould be written forwards,backwards, horizontally orvertically. All you have to dois find the names, write themon the back of a postcard orsealed envelope and sendthem to us.The address is

Hobbit CompetitionOric OwnerUnit I & 2,Techno Park,Newmarket Road,Cambridge

Entries must arrive by lastpost, 30th April, 1984. Allcorrect entries will be put in abox and the 50 winnerschosen. Only one entry perperson is allowed, and youmust remember to put youraddress on the entry.

The GamePlaying The Hobbit is anexperience. You are plungedinto the fantasy world of]. R. R. Tolkien's MiddleEarth, peopled by trolls,dwarfs, wizards and wargs.Your task is to recover theDragon's treasure. You'll meetmany of the characters fromthe book, converse with them,have them as allies or maybefall out with them Asadventure games go, TheHobbit is a masterpiece. It isonly fitting that it took theinaugural Golden Joystickaward for Best Strategy Gameof the Year.

The game is supplied witha copy of the original book.To solve the adventure, usethe book as a guide. Thegame follows the book's plot

pretty closely. The displayuses both text and graphics.graphics illustrate keylocations, while the text tellsyou what's going on. Thereare no sound effects to annoyneighbours.

While writing The Hobbit,the team devised some newprogramming techniques thatput The Hobbit in a class of itsown. The first is that theprogram accepts inputs veryclose to ordinary English. Thelanguage is called Inglish. Itknows over 500 words and

few hard and fast rules needbe followed to communicatewith the computer. Noadventure game has everbeen this user friendly.

Another breakthrough isAnimaction. The charactersyou'll meet act independentlyas the game proceeds Theymake their own decisions andinfluence the course of thegame. You'll have to learnhow to influence othercharacters. You can talk tothem quite freely in Inglish.

Other useful features of The

Fact sheetCompany: Melbourne HouseEstablished: 1977Offices: UK, USA, AustraliaMail Order address: 131Trafalgar Road, Greenwich,London SElOCustomer Service: ChurchYard, Tring, Herts HP23 5LUSales & Marketing: CableYard House, Cable Yard,Richmond, Surrey TWlO 6TF

Oric software: The Hobbit£14.95

Oric books: MeteoricProgramming, £5.95

Other books: Guide ToPlaying The Hobbit, £3.95

Computer And Video GamesBook Of Adventure, £5.95

Hobbit are a printer toggleso you can get a hard copyrecord of how a gameproceeds, a pause feature,and the facility to save agame to tape for later use.The instruction bookletexplains commandsthoroughly, though playingthe game is a continuallearning experience.

There are many solutions toThe Hobbit, and many, manytraps. For those who getreally stuck, MelbourneHouse will supply tip sheetsfrom their Customer Servicesdepartment. There is also abook, 'The Guide to PlayingThe Hobbit,' by David Elkamand priced at £3.95. It detailsone possible solution. There'sn0 need to go to the lengthsof one player who rangeLondon four times from NewZealand to get out of a trickysituation.

If you are already a Hobbitplayer, and have some tips oradvice for other players, sendit to Oric Owner. If there are

,enough tips, we will start aHobbit Help feature.

Oric Owner 15

PINBALLOnce upon a time every goodpub, cafe andentertainment arcade had at least onepiDhall machine.Now the space invader and it successorshave replacedthe pinball If you regret the passingof that particularaspectof your youth, this program from M. RussellofKeighley, West Yorkshire is well worth entering.

This pinball game is called Demon's Den. Up to fourplayers can compete for top score, with three balls each.Keys 1 to 9 control how hard the ball is struck at thebeginning, and how hard the flippers strike. The higherthe number, the harder the ball is struck. There's no tiltthough, but go easy on your keyboard.

Just like the real pinball machines, the Oric uses soundand colour to good effect. There are bonuses too, and itwill take a good deal of practice to get a high score.We've managed to get 124,268and are sure somebodyout there can beat that.

The program itself is pretty straightforward, and inBASIC. It is well structured and a good example of howlogical thinking can make even the vagaries of thepinball machine be realised by the Oric.

CHARACTER RE DEFINERThe ability to redefine characters is one of the majortoolsof a goodgamesprogrammer. Bere's a shortprogram that lets you redefine any character pixel bypixel. You'll be able to build exactly the character youwant.

Instructions in the program explain how it works. You arepresented with a coloured matrix of eight by six cells.Using the cursor control keys and a simple on/off feature,you can turn any pixel in the matrix on or off to constructthe character you want.

You are also prompted to enter the character you wantredefined, or its ASCII number, and given a repeatoption at the end. Characters will remain redefined untilyour Oric is reset.

This program has no means to store data figures thatcould be used in other programs to duplicate thecharacter you have redefined. However, from the shapeon the matrix, it shouldn't be too difficult to work out thecode for each of the eight lines of the character. The sixcolumns, from the left, have the values 32, 16, 8, 4, 2 and1.Add together the column values for all pixels that areturned on in a line and you have the data number for thatline. Use the eight such numbers from each matrix, andthe code for the character, in future programs.

Now, can anyone redefine their Oric to print Japanesecharacters?

SIMPLE SENTENCESWe alllmow that computers make excellenteducational tools. They are iIUmitely patient, won't makemistakes and can be a great asset in the home. Here's aneducational program S. W. Lucas of Cheadle Hulme,Cheshire, designed to teach young children simple wordrecognition.What it does is to print out a short sentence with a wordmissing. Above the printed sentence, four boxes aredrawn. They each contain a possible solution. An arrowmoves below the boxes and the child presses a keywhen the arrow is below what is thought to be thecorrect solution.

That's the signal for a loud right or wrong sounds, withthe correct answer printed out. After ten sentences, ascore is given, a rating and prompts for entry of thechild's name. A repeat option is also given.

REMs throughout the listing explain how the programis constructed. There are up to sixty sentences to choose

. from, and more could be added. You can also changethe number of questions per round.

The program is aimed at five to seven year olds. So,type it in, sit them down at the keyboard and let Oricplay teacher for a while.

ANAL YSISComputers aren't only for fun and games. There is aserious side to them too. This program puts the Oric towork analysing sales figures. It is by Rob Sibthorpe ofFordingbridge, Hants.

When RUN, you are asked for a title of the analysis, howmany entries there are to be and column headings.There can be up to ten columns for each entry, but thelast must be cost.

You then make the entries, following the on screenprompts. To reserve space for later data, enter O.

A menu appears next on screen. These are theoptions...

1. EXTRACT COSTS2. LIST PARTICULAR ENTRY3. LIST COLUMN VARIATIONS4. LIST LIKE ENTRIES5. LIST ALL ENTRIES6. LIST SPARE ITEMS7. CHANGE ENTRY8. STOP

Follow the prompts fromhere and the program runslike a well oiled machine. It isn't possible to save data totape, but this program should enable an astute analysis ofcosts, sales or whatever, As a BASIC business program,it is very useful and does indeed demonstrate that theOric belongs in the office as well as the home.

Oric Owner 17

SPELLBUZZEducation seems to be a major theme in this issue.Our second program of an educational nature comesfrom Rob Sibthorpe of Fordingbridge in Hampshire.

Written for seven to ten year olds, Spellbuzz is a spellingtest. It runs from a dictionary of 100 words. These couldbe added to or changed to suit different age groups.

When RUN, three alternative spellings of a word, in arandom order, are listed. The child is prompted to enterthe correct spelling. The correct spelling is then printedout double height and a smile or frown face indicates aright or wrong answer. After ten words a rating is givenaccompanied by sound effects.

An unusual feature of this program is a permanent,flashing title display above the text area. Lines 250 to 295do that. Otherwise the program is pretty straightforwardBASIC. Let the kids have a go with it and their spellingshould get much betta!

3D ROTATIONWe've all seen computers doing three dimensionalgraphic representations of objects. Here's a program fOIyour Oric that shows a three dimensional cube rotatingin space on the HIRES screen. It is adapted from aprogram by D. F. Round that appeared in the TansoftGazette two years ago. The updater is Mr M. J. Bunceof Rugby, Warwickshire..

-.

- - -----_.-

Your inputs determine the size of the cube and how itrotates. Be careful with the inputs though, as the wrongtype of figures may crash the program.

You'll first be asked for the eye position, Stick to the150 to 200 range. Smaller values may give too large acube, and a DRAW command will give an errormessage.

Next input are the three direction cosines, separatedby commas, Suggested inputs are

1,0,0- pure rotation about X axis0,1,0 - pure rotation about Y axis1,1,0- rotation about both axes

Finally you'll be asked for the total degrees to berotated and the step, the values separated by a comma,For a pure rotation about one axis, a 900 total is all youneed to see the whole effect. Remember that 3600 givesa full rotation,

For the step, we'd suggest five degrees. Anything lesswill mean very small changes between consecutivedrawings, Larger steps will mean less drawings to reachthe total rotation,

Experiment with different figures and you'll see cubesin ways you never thought possible. Now, who can do arotating pyramid?

~e LiStiJ1@--

INDEX

SIMPLE SENTENCESA program that teaches word recognition, for young children, Page 20

PINBALLIf you didn't misspend your youth, here's your chance to become a pinball

wizard, Page 24

CHARACTER REDEFlNERRedefine characters quickly, easily, so you can make your own games

characters or symbols, Page 28

3D ROTATIONA graphics display program that shows solid objects rotating in space, Page 29

SPELLBUZZImprove spelling abilities with this useful educational listing, Page 31

ANALYSISBusiness people will appreciate this sales analysis program. It does everything

but save data, Page 34

SIMPLE SENTENCES.1 REM ***SIMPLE SENTENCES

***.

2 REM ***SUITABLE FOR 5-7 YEAR OLDS**3 REM

***WRITTEN BY S. W. LUCAS

***4 REM ***<C) Augu~t 1983

***5 AA$="Simple ~entences"6 AB$="wrltten for the ORICl"7 AC$="by S.W. Luc~s "1O HIRES12 PAPER3: I NK416 REM RQUTINE TO PRINT THE TITLES ON T

HE HIGH RESOLUTION SCREEN2O CURSET20,20,33O FOR A = 1 TO LENCAA$J32 CHAR ASCCMID$CAA$,A,IJJ,0,133 CURMOUI0,0,035 NEXT A36 CURSET 20,50,338 FOR A = 1 TO LENCAB$J39 CHAR ASCCMIO$CAB$,A,IJJ,0,140 CURMOUI0,0,041 NEXT A43 CURSET 2O,80,344 FOR A = 1 TO LENCAC$)45 CHAR ASCCMID$CAC$,A,IJJ,0,146 CURMOU 10,0,047 NEXT A100 REM THE ARRAY A$CX,Y) HOLDS THE SEN

TENCE TOGETHER WITH THE FOUR110 REM ALTERNATIVE ANSWERS. THE CORREC

T ANSWER IS HELD AS A NUMBER IN115 REM B$CX) WHICH IS READ FROM THE 5T

H DATA ITEM ON EACH DATA LINE120 DIM A$C60,5),BC60),CCI0)130 GOSUS 270140 GOSUS1280150 GOSUB 1710180 GOSUB1330190 SC=0195 IF CB$="N" OR B$="n"J THEN END200 RUN210 END211 REM THE REMAINDER OF THE PROGRAM CO

NSISTS OF SUBROUTINES ONLY220 REM THE FIRSTSUBROUTINE IS TO23O REM READ THE DATA INTO THE 2-DIMENS

IONAL ARRAY A$CX,YJ

240 REM EACH QUESTION HAS 4 ALTERNATIUE

S250 REM FOLLOWED BY THE NUMBER OF THE C

ORRECT ALTERNATIVE260 REM THIS ANSWER IS HELD IN THE ARRA

Y BCX)

270 FOR X =1 TO 60280 FOR Y = 1 TO 5290 READ A$CX,YJ

30O NEXT Y

310 READ BCX)320 NEXT X

330 DATAJi II found ~ in the s~nd., she I l , shade, s ho p , sh lp, 1

340 DATAYou c~n write with a ---,pin, po.n,pen,tln,3

350 DATAD~d said he had --- the garden,dog,log,dug,bag,3

360 DATABen said "I hit the b~l l with a---",bag,bat,b In,bun,237O DATAThe b~by ~leeps in a ---,cat,cu

t,nut,cot,4

380DATAYou fish with ~ ---,red,rod,rid,rug,2

390 DATATom --- the ball into the pond...h It,hat,hut,hot, 1

400 DATAMum wi II e~t the ---,ban,bin,bu

n,ben,3 \410 DATADad pul the --- In the bin,ten,

t ~n , tip, tin, 4420 DATATom will --- in the bus.,set,si

t,sun,sum,2430 DATAMum put on her --- to sit In th

e sun,hut,hat,hlt,hls,2440 DATABen had --- in the park, lun,sun

, I In, la~, 1450 DATAJ I II took her --- to the shop.,

big, bag, bug, beg, 2

460 DATATom for the bus,runs,pens,put s , dive, 1

470 DATAMum wl II ~ cake lor me,bake , r ak e, Iak e , I ~k e , 1

480 DATAShe met Tom in the , lark,bark, par k , mar k , 3

490 DATAJI It likes to ---~ her bike.,ride,b Ide,s ide,t ide, 1

51313 DATABi II likes to' --~ t~e animdls i

n the zDD.,see,saw,sun,sip,1

5113 DATAThey want to' gO' to' the ,lar

k,mdrk,ddrk,pdrk,4

5213 DATAYQU can ride in 0. , Idr,bdr,cdr,tdr,3

5313 DATAThe like to' edt grdss.,sh

eet, she Il, sh I ps, sheep, 4

5413 DATABi II sat Dn a ,chdir,chdse,ch in,ch ips, I

5513 DATADdd likes to' PldY with the ---,Idt,mdt,cdt,Pdt,3

5613 DATAlt gQes at night.,bdrk,ddrk,mdrk,pdrk,2

5713 DATATDm likes to' redd 0. ,IQQk,tQQk,bQQk,CDQk,3

5813 DATAl WQuld like to' --- 0. cdke,pdt,tdp,edt,bdt,3

5913 DATAMum PQured the mi lk Qut 0'1 a ---,Jug, lug,tug,bug, I

61313 DATAThe bDY wi II gO' to' --- tDnlght.

,bed,bud,bug,bun,1

6113 DATAPdU l wants a --- IQr a pet, lQg,dDg,ID9,JQg,2

6213 DATAThe bQY pldyed with 0. ,kite,mite,s ite,b ite, I

6313 DATAWe put the plant in a p Idnt ---., lDt,tQt,dQt,PDt,4

6413 DATAJQhn played cricket with 0. ----,bu II ,be Il, bd Il, bill, 3

6513 DATAThe drink O'f ted was very ---,hut,h it,hdt,hO't,4

6613 DATAThe number after nine is ,tin,to.n,ten,Dne,3 .

6713 DATAThe bDY wrDte with 0. ,pin,pdn,pun,pen,4

6813 DATAThdt man is very ,tdll,ti lI, te ll, to' Il, I

6913 DATAThe dD9 chases 0. ,cut,cat,cot,sit,2

71313 DATA] like to plo..y the gdme 0'1 ----dnd seek.,h Ide,tide,r ide,s ide, I7]13 DATAJim swam to the 01 the bat

h. , ride, side, h I de, tide, 2

7213 DATAWe went to' the to buy a Cd

ke. ,sh ip,shop,shut,shed,2

7313 DATAJohn went for 0. ride Dn 0. -----

. , t r 0. i l , t r dmp , t r a In, trap, 3

7413 DATAThe number after twO' is ,throw,thdnk,thlnk,three,4

7513 DATAl don't want to dDwn the stdirs. ,tal I,hdll, fall,cdll,3

7613 DATAMdry hdd lots Df --- P ldying witn.. her bdll,sun, lun,bun,run,2

7713 DATADdd WdS --- when he had to gO' home. ,sdd, Idd,dad, lad, I

7813 DATADdd hdd to' his broken bike. ,send, lend, mend, lend, 3

7913 DATAWe had to dt the side 0'1 the rDdd.,stdnd,sting,stdrt,strdy,1

81313 DATAPdU[ went to' the park to' ,p lay,p lug,p lus,p lum, I

8113 DATAPaul was for SChDOI yester

ddY. ,gdte,hate,ro.te, ldte,48213 DATAMum had to her moneY.,spi

J l , spend, s pray, s p e II , 2

8313 DATADdd cut his this mDrning.,

chdin,chdlr,chin,cho.p,3

8413 DATAMdTy put the 10Dd in 0. ,! ish,dish,Wish,WdSh,2,8513 DATAl cDuldn't up this morning

.,Co.ke,rdke,wdke,to.ke,3- 8613 DATAl drank a 0'I wdter., class

,glo.ss,grdsB,brdss,2

8713 DATADdd undid the with his key

. , rDck, dDCk, sDck, lDCk, 4

8813 DATAWe have 0. fish in Dur hDUSe., rdnk ,bdnk, tdnk, sank, 3

8913 DATAJ iIt lDDked at her in 0.mirrDr. ,rdce, fdce, lace,pace,2

91313 DATAWe p lo..nted a rDse in the ,SDi l,loi l,bDi l,toi l,1

9135 DATAThe dD9 likes to' ,mark,bdrk,pdrk, lark,2

9113 DATAl missed the- bus dnd had t

0' wo. lk hQme., [o..st ,mast, CdSt, VdSt, I

9213 DATAShe sees TDm in the ,tDdd,lDdd, rDdd, sad, 3

9313 RETURN9513 REM THE NEXT SUBROUTINE DRAWS 4 BOX

ES ON THE HIRES SCREEN

9513 REM TO HOLD THE 4 ALTERNATIVE ANSWERS965 REM THE BOXES WILL HOLD WORDS OF UPTO 5 LETTERS ONLY 29713 HIRES971 REM RESELECT THE COLOURS OF THE HIR

ES AREA972 Pt'1PER7

973 INK4974 H=20975 FOR Q= I TO 4977 CURSET YY,50,1980 DRAW 39,0,1990 DRAW 0,30,11000 DRAW -39,0,11010 DRAW 0,-30,11020 H=H-t521030 NEXT Q

1040 RETURN

1220 REM THE FOLLOWING SECTION OF THE P~OGRAM

1230 REM CHOOSES A RANDOM SELECTION OF

1240 REM TEN QUESTIONS OUT OF THE 60 POSSIBLE QUESTIONS

1250 REM THE ARRAY CCX) IS USED TO HOLDTHE

1260 REM NUMBER OF THE QUESTIONS TO BEASKED

1270 REM TO CHOOSE MORE QUESTIONS ALTERTHE NEXT LINE

12813 FOR X=1 TO 113

12913 LET CCX)= INTCRNDCl)*60)-tl1291 REM THE NEXT LINE ENSURES THAT TWO

IDENTICAL QUESTIONS

1292 REM DO NOT COME NEXT TO EACH OTHER1293 IF CCX) 1 AND CCCX)=CCX-l)) THEN G

OTO 12913

13013 NEXT X

13113 RETURN13313 SC=B1340 REM FIRST SET THE SCORE =13

13513 REM THEN SET THE 10 QUESTIONS WHIC

H WERE CHOSEN AT RANDOM1357 REM FROM THE 613ALTERNATIUES1360 FOR TT = 1 TO 10

13813REM HIRES IS USED LIKE CLS TO CLEAR THE HIGH RES SCREEN

13913 HIRES:1399 REM THEN DRAW THE 4 BOXES AGAIN141313 GOSUB971314113 GOSUB147014213 GOSUB 17613

14313 GOSUB21401440 NEXT TT

14513 GOSUB24BB14613 RETURN

14713 G=BCA)

14813 A=CCTT)

14913 REM A =CCTT) HOLDS THE NUMBER1493 REM PRINT THE QUESTION AT THE BOTT

OM OF THE SCREEN IN THE TEXT AREA1494 REM CHOOSE A COLOR FOR QUESTION

1495 INK4:PRINT A$CA,I);151313 REM OF THE CURRENT QUESTION1510 REM G=BCA) HOLDS THE ANSWER1520 REM TO THE CURRENT QUESTION

1570 REM THE NEXT SECTION PRINTS THE

15813 REM WORDS IN THE BOXES.1582 PP=22:REM SET X POSITION OF CURSORFOR THE FIRST WORD1584 REM THE NEXT SECTION PRINTS THE 4

ALTERNATIUE WORDS1585 FOR P= 2 TO 515913 CURSET pp,6e,31595 N$=A$CA,P)

16013 FOR Z= 1 TO LENCN$)

16110'1CHAR ASCCMID$CN$,Z,I)),e,116213 CURMOU 7,0,016313 NEXT Z1635 PP=PP-t52:REM MOUE CURSOR FOR NEXT

WORD16413 NEXT P

16513 RETURN

1670 ~EM THIS SUBROUTINE IS TO DEFINE1680 REM THE CHARACTERS TO BE USED16913 REM AS A POINTER17013 REM TO POINT TO THE WORDS17113 GF$=CHR$CI29)17213 GG$= CHR$(94)

1730 GH$= CHR$CI24)

17413 RETURN17613 0=32

17713 E=10e

17813 REM PROCEEDURE TO MOUE ARROW ACROSS

17913 REM THE SCREEN. TO POINT flT THE 4BOXES IN TURN181313 REM UNTIL ANY KEY IS PRESSED18213 REPEAT18313 REM 0 = X POSITION AND E = Y POSIT

ION18413 REM OF THE ARROW18513 ZAP18613 REn SOUNDS PING EACH TIME THE ARRO

W MOUES191313 CURSET D,E,319113 CHAR94,B,11920 CURMOU 13,8,3

193121 CHARI24,12I,1

195121 WAIT 15121

1951 REM CHOOSE APPROPRIATE WAIT TIME F

OR AGE OF PUPIL. SMALL UALUE = HARD196121 REM THEN ERASE THE POINTER

197121 CURSET 0,E,3

198121 CHAR 94,121,2

1985 CURMOUI2I,8,3

1988 CHARI24,12I,221211211210=0+52

21211121 REM MOUE ARROW

212115 REM F= POSITION ARROW STOPS IN

21212121REM IF ARROW GOES OFF SCREEN, RESE

T IT TO POSITION 121214121IF 0>198 THEN 0=32

21215121REM RESET CHOICE WHEN ARROW GOES 0

FF SCREEN21217121S$=KEI$

212175 REM TESTS FOR ANY KEY BEING PRESSE

021218121UNT I L S$ <> ""212185 REM SET UALUE OF F

21219121IF 0=32 THEN F=4

212195 IF 0=84 THEN F=1

21121121IF 0=136 THEN F=2

211121 IF 0=188 THEN F=3

212121 IF F>4 THEN F=4

2125 IF F <1 THEN F=2

213121 RETURN

214121 HIRES

215121 PAPER7

216121 INK 4

218121 REM CHECK FOR CORRECT RESPONSE.

219121 IF F=BCA) THEN GOSUB221121 ELSE GOSU

823112122121121RETURN

221219 REM SUBROUTINE FOR THE CORRECT RES

PONSE

22113 SC=SC+l222121 REM IF RIGHT ;- INCREMENT THE SCOR

E223121 REM NOW PRINT ON THE SCREEN RIGHT

2235 RR$="right"

2236 CURSET 89,75,3

224121 FOR 2= 1 TO LENCRR$)

2242 CHARASCCMIO$CRR$,2,1)),I2I,1

2245 CURMOU8,12I,12I

2248 NEXT 2225121 REM NOW GlUE A SOUND FOR RIGHT ANS

WER

2251 FORX=255 TO 1 STEP -1

2255 SOUN01,X,15

226121 NEXT X

2262 FORX=1 TO 255

2264 SOUND I,X,15

2265 NEXT X2267 SOUND "1,121,121

23121121RETURN

231215 REM SUBROUTINE FOR WRONG ANSWER

231121 WW$="wrong"

2315 REM TO WRITE WRONG ON THE SCREEN

232121 CURSET 89,75,3

2325 FOR 2= 1 TO LENCWW$)

233121 CHARASCCMID$CWW$, 2,1)),121,1

2335 CURMOU 8,121,121

2336 NEXT 2

234121 WW$=" It woos "+A$CA, BCA)+I)

2341 REM TO PRINT THE CORRECT ANSWER

2344 CURSET 5121,15121,32346 FOR 2= 1 TO LENCWW$)

2348 CHARASCCMIO$CWW$,2,1)),I2I, 12349 CURMOU 8,121,121

235121 NEXT 2

2353 REM SOUND EFFECT FOR WRONG ANSWER

2354 FORY=IT03:FOR X= 15121 TO 251212355 SOUN01,X,15

2356 NEXTX,Y

2357 SOUN01,12I,12I

236121 WAIT 2121121

237121 REM PAUSE TO LET CHILD READ WHAT T

HE ANSWER SHOULD HAUE BEEN239121 RETURN

24121121TEXT

241121 REM ROUTINE FOR PRINTING RESULTS

242121 LET A$= ''''243121 IF SOS THEN A$='.good"

244121 IF S07 THEN A$=" very good"

245121 PAPER 7

246121 INK 121

247121 PRINT:PRINT:PRINT:PRINT:PRINT" you

r score was" ;SC;" out of 1121"

248121 PRINT :PRINT :PRINT"Who.t is your no.m

e I:;

249121 INPUT NA$25121121PRINT:PRINT:PRINTCHR$CI29);"Tho.nk

you for playing ";CHR$CI32);NA$

251121 PRINT :PRINT:PRINTCHR$C 13121); "Do yo~want to plOoY again?"

252121 GETB$

253121 RETURN

PINBALL-

5 GRAB10 REM »»»»»>«««««<20 REM> Pinball Demons Den <30 REM> M RusseII 170683 <40 REM> fOT OTic O~neT <45 REM »»»»»>«««««<50 POKE618,10

60 HC2)=1

100 GOSUB40000

105 CLS

110 GOSUB50000

120 OOKE616,514:PRINT:PRINT" HOW"~PRINT

" MANY" :PRINT"PLAYERS" :PRINT" 1 TO 4" :GETQ$

130 DOKE616,514:PRINT:PRINT" ":PRIN

T" ":PRINT" ." :PRINT"140 IFQ$ <"1"ORQ$> "4" THEN SOUND 1 , 200, 15:S

OUND1,0,15:GOT0120

142 FORN=lTOUALCQ$):BCN)=3:SCN)=0:NEXT150 FORN=IT04:A$="SCORE "+RIGHT$CSTR$CN

J,1):PLOT31,N*3+N-2,A$:NEXT

160 FORN=0T04:PLOT32,N*4+4,"000000":NEX

T :PLOT32, 18, "BONUS 2"

170 PLOT32, 24, "BALL 1"175 B=1180 FORP=lTOUALCQ$)181 GOSUB50000

185 POKE616, CP-IJ*4+2:PRINT:POKE617,31:

PR INTCHR$ ( 140)

190 X=28:Y=23:J=0:K=-1200 PLOTX,Y,41

210 PLOT2,0, "PRESS' :PLOT1, 1, "ANY KEY":PLOT2,2,"1 TO 9":PLOTl,3," FOR"220 PLOT 1, 4, "STRENGTH" : PLOTl ,5, "OF FIRS

T":PLOTl,6," SHOT ":GETS$230 FORN=0T06 :PLOTl, N, " " :NEXT240 IFS$<"1"ORS$>"9"THEN~AP:WAIT50:S0UN

0 1 , 0, 15: GOT0210250 S=UALCS$)+20260 PLOTl, 1, "FLIPPER" :PLOT2, 2, "KEYS" :PL

OT2, 3, "I TO 9" :PLOTl, 4,"TO UARY"

270 PLOTl,5,"STRENGTH":PLOT1,6,"OF SHOT!I

280 K$=KEY$: IFK$>=" 1 'ANDK$<="9"ANDD=0THENGOSUB1000

290 IFO>0THENGOSUB2000ELSEPLOT15,23,"!1

300 O=SCRNCX+J,Y+K)310 IFO=32THEN500320 IFO=64THEN4000330 IFO=46THEN4030340 IFO>34ANDO<41THEN4060350 IFO=63THEN4090360 IFO=45THEN4170

370 IFO=42THENI90380 IFO=60THENGOSUB620:GOT0500390 IFO~62THEN4230

400 IFO=79THEN4320410 IFO=59THEN4400

420 IFO=61THEN4400430 IFO=47THEN4470

440 IFO=58THEN4500450 IFO~93THEN4540460 IFO=91THEN4600

470 IFO=123THEN4650480 IFO=125THEN4700500 PLOTX,Y,32

510 X=X+J:Y=Y+K:PLOTX,Y,41520 S=S-A:IFS=0THENGOSUB3000

527 IFY=24THEN532

530 GOT0280

532 PLOTX,Y,32

533 K$=KEY$

535 FORU=5T070:FOR~=lT0100STEPU:SOUND1,

~, 10:NEXTl,U:WAIT10:S0UND1,0,0

536 PLOT30,CP-1)*4+2,32

537 BO=0:PLOT32,20,"000000"

538 PLOT31, 22," ":SCPJ=SCPHHC2)

:GOSUB7000:HC1J=0

539 HC2)=A

540 NEXTP

550 B=B+A

560 1FB=4THEN700570 PLOT37,24,STR$CB)580 GOT0180600 J=A:RETURN610 K=A:RETURN620 J=-A:RETURN630 K=-A:RETURN640 K=0:RETURN650 J=0:RETURN700 PLOT14, 12," GAME OUER"702 FORN=lT04:1FSCN)HC0)THENHC0)=SCN)703 NEXT705 U=280707 PLOT16, 15,"Press Y" :PLOT16, 16,"to p

iay" :PLOT17, 17, "again"

710 K$=KEY$:U=U+1 :IFU=300THENGOSUB800715 1FK$=""THEN710/20 1FK$="Y"THEN105730 1FK$="N'THENENO740 2AP:GOT0710800 PLOT31,1," HIGH':PLOT31,2,"SCORE "810 M=SC 1):P=1 :SCP)=HC0) :GOSUB7000820 WAIT70830 PLOT31, I," ":PLOT31, 2, "SCORE I"835 WA IT 155

840 SCP)=M:P=1 :GOSUB7000:U=0:GOT07101000 O=A:F=A1010 T=UALCK$)2000 ONOGOT02010,2020,20302010 PLOT15, 23," C #" :O=D+F :RETURN2020 PlOT15, 23," C #$" :D=D+F :RETURN2030 PlOT15, 23, "&' C #$%" :F=-l :O=D+F :RET

URN3000 J=0:K=1 :S=S+l3010 RETURN4000 1FK=-AANDJ=ATHENK=A:GOT05004005 1FK=-ATHENGOSUB620:GOT05004010 1FJ=ATHENGOSUB610:GOT05004020 GOSUB620:GOT05004030 1FJ=-ATHENGOSUB610:GOT05004040 1FK=-ATHENGOSUB600:GOT05004050 GOSUB600:GOSUB610:GOT05004060 PLOTX,Y,32:X=X+J:Y=Y+K:PLOTX,Y,414070 K=-A:PLOTX,Y,O4071 IFO<38THENJ=1NTCRNDCl)*2)-A

4072 1FO)37THENJ=1NTCRNOC1)*2)4075 S=S+C1*3)4080 GOT05004090 1FJ*K<)0THEN41304100 J=0-J:K=0-K:GOT05004130 1FK=-AANOSCRNCX,Y-A)=32THENGOSUB65

0:GUT05004135 1FJ=AANDK=-AANOY=3THENK=A:GOT02804136 1FJ=-AANOK=-AANOY=3THENK=A:GOT02804140 1FK=AANOSCRNCX,Y+A)=32THENGOSUB650:GOT05004150 1FJ=-ATHENGOSUB600ElSEGOSUB6204160 GOT05004170 PLOTX,Y,32:X=X+J :Y=Y+K:PLOTX,Y,414180 PLOT11, 1,",A" :PLOT11,2, "_:" :PLOT27

,1,11"",11 :PLOT27, 2, rt_: I1

4185 FORN=0T0200STEP50:S0UNOA,N, 15:WA1T8:NEXT:SOUNDl,0,154188 SCP)=SCP)+2004190 GOSUB70004200 PLOT11, A, '11" :PLOT11,2, "??" :PLOT27,A, "??":PLOT27,2,"??"

4210 GOSUB6104220 PlOTX,Y,0:X=X+J:Y=Y+K:PLOTX,Y,41:G

OT05004230 SCP)=SCP)+1NTCRNDC1)*50)+A:GOSUB70

004235 FORN=0T07:PLAiA,0,N, 1000:NEXT:SOUN

01,0,154250 1FJ*K<)0THEN43004260 1FJ=0ANDRNOCA).5THENJ=-A4265 1FJ=0THENJ=A4270 1FK=0ANORNOCA).5THENK=A4280 1FK=0THENK=-A4290 GOT05004300 1FRNDCA).5THENGOSUB650ELSEGOSUB64

04310 GOT05004320 PLOTX,Y,32:X=X+J:Y=Y+K_4330 PLOTX,Y,41

4331 FOR1=AT01NTCRNOCA)*3)+A4332 BO=BO+3004335 SOUNOA,300, 15:WA1TA:SOUNDA,400,15:

WA1T2:S0UNDA,600,15:WAIT5:S0UNDA,0,154340 M=SCP) :N=P:P=5:SCP)=BO:GOSUB7000

4350 BO=SCP):P~N:SCP)=M4355 NEXTI4360 J=INTCRNDC1J*3)-A:K=INTCRNDC1)*3)-

A4361 IFJ=0ANDK=-ATHEN43604365 S=S+10:W=04370 IFSCRNCX~J,Y+K)<)32THEN43604380 PLOTX,Y,79:X=X+J:Y=Y+K:PLOTX,Y,414390 GOT05004400 IFJ*K<)0THEN44504410 IFJ=0ANDRNDCA).5ANDSCRNCX+A,Y+K)=

32THENJ=-A4412 IFJ=0ANDSCRNCX-A,K+Y)=32THENJ=A4413 IFJ=0THEN44104414 IFK=0ANDRNDCA).5ANDSCRNCX+J,Y-A)=

32THENK=-A4415 IFK=0ANDSCRNCX+J,Y+A)=32THENK=A4416 IFK=0THEN44144450 IFJ=-ATHENGOSUB600:GOT05004460 IFJ=ATHENGOSUB620:GOT05004470 IFJ=0THENJ=A4480 IFK=0THENK=-A4490 IFJ=-AANDK=ATHENJ=04492 IFJ=-AANDK=-ATHENJ=A4495 GOT05004500 IFJ=0THENJ=-A4510 IFK=0THENK=-A4520 IFJ=AANDK=ATHENJ=-A4522 IFJ=AANDK=-ATHENJ=-A4530 GOT05004540 PLOTX,Y,32:X=X+J:Y=Y+K:PLOTX,Y,414550 PLAYA,0,4,5000:S0UNDA,350, 15:S0UND

A,0,154555 IFBO)0THENPLOTl, 23, "GREAT" :PLOT3, 2

4, "SHOH"

4560 SCP)=SCP)+BO:GOSUB7000

4565 IFBO>0THENFORU=AT035:S0UNDA,U*8,A5

:SOUND2,8, 15:NEXT:SOUNDA,0, 15

4570 J=A

4580 PLOTX,Y,93:X=X+J:Y=Y+K:PLOTX,Y,41

4585 PLOTA,23,,. ":PLOT3, 24,

",.

4590 GOT0500

4600 PLOTX,Y,32:X=X+J:Y=Y+K:PLOTX,Y,41

4604 PLAYA,0,4,5000:S0UNDA,350, 15:S0UNDA,0,154606 IFBO>0THENPLOTl, 23, "GREAT" :PLOT3, 2

4, "SHOH"

4608 IFBO>0THENFORU=AT035:S0UNDA,U*8,A5

:SOUND2,8, 15:NEXT:SOUNDA,0, 15

4610 SCP)=SCP)+BO:GOSUB7000

4520 J=-A

4530 PLOTX,Y,91 :X=X+J:Y=Y+K:PLOTX,Y,41

4535 PLOTA, 23," " :PLOT3, 24," "

4540 GOT0500

4550 HCA)=HCA)+A:IFHCA)=10THENPLOT31,22, "2X" :H(2)=2

4560IFHCA)=20THENPLOT31,22," 3X":HC2J=34570 IFHCA)=30THENPLOT31, 22,

" 4X" :HC2J=44580 PLOTX,Y,32:X=X+J:Y=Y+K:PLOTX,Y,414590 J=-A:PLOTX,Y,123:X=X+J :Y=Y+K:GOT05

0O4700 HCAJ=HCAJ+A:IFHCA)=10THENPLOT31,22

,"2X" :H(2)=2

4710 IFHCAJ=20THENPLOT31,22," 3X":HC2J=34720 IFHCA)=30THENPLOT31, 22, " 4X" :

HC2J=44730 ?LOTX,Y,32:X=X+J:Y=Y+K:PLOTX,Y,414740 J=A:PLOTX,Y,125:X=X+J :Y=Y+K:GOT050

°7000 C=SCP)7010 C=C/1000007020 FORU=0T057030 PLOT32+V,P*4,INTCCJ+487040 C=C- INTCC)7050 C=C*107060 NEXTV:RETURN40000 FORN=45360T046439:READA:POKEN,A:N

EXT40010 FORN=46448T046463:READA:POKEN,A:N

EXT40020 FORN=46544T046599:READA:POKEN,A:N

EXT40030 FORN=46816T046823:READA:POKEN,A:N

EXT

40040 FORN=46832T046847:READA:POKEN,A:N

EXT40050 FORN=47072T047079:READA:POKEN,A:N

EXT40055 A=140060 RETURN40070 DATA0.0,0,0,1,30,32,31,0,0,1,14,4

8,0,15,4S,0,12,50,13,13,2,60,0100S0 DATA0,12,19,44,44, 16,15,0,O,O,32,

28,3,0,60,3,0,0,0, 0,32,30, 1,62400S5 DATA0,30,63,63,63,63,30,040090 DATA63,33,33,33,33,33,33,63, 19,30,50,30,19,30,50,30,19,30.50,18,63,30,1240095 DATA040100 DATA63,61,5S,52,40, 16,32,32,32,32,16,40,52,58,61,63, 1,1,2,5, 11,23,47,6340110 DATA0,12,18,33,45,45,45,45,45,45,

45,45,45,45,45,45,45,45,45,45,33, IS40120 DATAI2,040130 DATAI2,30,63,45,30, IS,12,0,63,63,

63,63,63,63,63,63,63,47,23,11,5,2,1,140140 DATA0,0,4,4,7,5,19,26,0,0, 18,23,5

0, 18,38,46,45, 15, 15,7,4, S, 16, 16

4015O DATA26,58,58,48,16,8,4,450000 REM50005 POKE616, 150010 R=32:P$=" ":GOSUB6000050020 P$=CHR$ C tiC) +" DEMONS DEN": R= 10: GOS

UB6000050025 P$=CHR$CI29) :R=-3:GOSUB6000050030 P$=CHR$CI46) :R=-4:GOSUB6000050040 PRINTSPC(8)"?????????????????????

~I

50050 PRINTSPC (8)"7777?? -@7777. -@77777

50060 PRINTSPC(8)"???7? @7? @7???

:-

50070 PRINTSPC(8) "77?7. rn77It

50080 PRINTSPC(8)"777. ») @7711

50090 PRINTSPC(8) "?? @7~I

50i00 PRINTSPC(8)"? ; ; ;; ?tI

50110 PRINTSPCCS) '? = = ~ = ;?!I

50120 PRINTSPCCS)"?O < 7

50130 PRINTSPC(8)"?/ :< 7!I

50140 PRINTSPCCS)"?? ; j ; j ?<?

50150 PRINTSPCCS)"77?= =7 7< 7!I

50160 PRINTSPCC8)"?? =- -= 7< 7

50170 PRINTSPCCS)"77J [7< 7

50180 PRINTSPC(8)"77} {7< 7It

50190 PRINTSPC(8) "77 ?< 7!I

50200 PRINTSPC(8) ''';>. @< 7!t

50210 PRINTSPC(8)"? < ?!r

50220 PRINTSPCC8j"?/ :< 7

50230 PRINTSPCCS) '77/ :7< 7'n

5024'1 PRINfSPC(8)"???/ :77< 7!1

50250 PRINTSPC(8) "?777/ :777< 7

50260 PRINTSPC(8)"7??77/ :?777< 7:1

50270 PRINTSPC(8) "?77777 77777< ?

502S0 PRINTSPC(8) "??77?? 7?777 <:(7!J

50290 PRINTSPCCS) "??777777??????7?7??+7!I

50300 PRINTSPC(27)",";50305 INK5:PAPER050310 RETURN60000 FORI=lTOLENCP$):POKEtlBB83+R+I,ASCC~ID$CP$,I, 1)):NEX7I:RETURN

CHARACTER REDEFINER100 REM ***************************110 REM *** Charar.ter Generator ***120 REM ***************************130 REM140 REM By Kristjon Magnusson150 REM160 CLS:LORES0170 PRINTCHR$(17)180 X$=CHR$ (27)190 PRINT" liCHR$(ll)iX$iISliX$i"A

INSTRUCTIONS liX$ilp"200 PRINT210 PRINT" To determine the r.oordinatewhere"220 PRINT"you want to turn a r.e11 'off' or'on'"230 PRINT"you use the r.ursors. You use '0'and"240 PRINT"'l' to r.hange the r.ontents of ea

r.h"250 PRINT"r.e11. You noW have three options:":PRINT260 PRINT" 1) Continue without seler.tin

g an enlarged r.harar.ter."270 PRINT" 2) Entering a r.harar.ter f~omthe keyboard."280 PRINT" 3) Entering the ASCII r.ode 0

f a r.harar.ter."285 PRINTCHR$(ll)iCHR$(ll)iCHR$(ll)iCHR$(l

1) iCHR$ (11) iCHR$ (11)

290 FORI=0T07300 PLOT14,I+15,I+48310 NEXT320 FORI=0T05330 PLOTI+16,24,53-I340 NEXT350 FORN=15T022360 FORM=16T021

370 PLOTM,N,20380 NEXTM,N390 GETOP$400 IFOP$=11IOROP$="2"OROP$=13"THEN420410 GOT0390420 A$="11

430 PLOT6,6,A$440 FORR=lT06450 PLOT5,R+7,A$460 NEXTR470 IFOP$="1"THENK=32:GOT0500480 IFOP$=12ITHENINPUT" Enter the r.ha

rar.ter "iK$:K=ASC(K$)490 IFOP$=13"THENINPUT" Enter the ASC

11 r.ode "iK500 N=46080+(8*K)510 FORI=NTON+7520 IFPEEK(I»63THENPOKEI,PEEK(I)-64530 NEXTI540 FORI=0T07:D=64:C=PEEK(N+I)550 FORJ=0T05:D=D-(D/2)560 IFC>=DTHENC=C-D:K(I,J)=l570 NEXTJ,I580 FORI=0T07590 FORJ=0T05600 IFK(I,J)=lTHENPLOT16+J,15+I,17ELSEPLOT

16+J,15+I,20610 NEXTJ,I620 PLOT2,25,"press 'RETURN' when you are

finished"630 PLOT14,15,176:PLOT16,24,181:Y=15:X=16640 GETH$650 IFH$="0"THENPLOTX,Y,20660 IFH$="1"THENPLOTX,Y,17670 IFH$=CHR$(13)THEN810680 IFH$=CHR$(10)THENY=Y+1:GOT0740690 IFH$=CHR$(11)THENY=Y-1:GOT0730

700 IFH$=CHR$(8)THENX=X-1:GOT0750710 IFH$=CHR$(9)THENX=X+1:GOT0760720 GOT0640730 IFY<15THENY=15:GOT0640ELSE780740 IFY>22THENY=22:GOT0640ELSE770750 IFX<16THENX=16:GOT0640ELSE790760 IFX>21THENX=21:GOT0640ELSE800770 PLOT14,Y-1,SCRN(14,Y-1)-128:PLOT14,y,S

CRN(14,Y)+128:GOT0640780 PLOT14,Y+1,SCRN(14,Y+1)-128:PLOT14,Y,S

CRN(14,Y)+128:GOT0640790 PLOTX+1,24,SCRN(X+1,24)-128:PLOTX,24,S

CRN(X,24)+128:GOT0640800 PLOTX-1,24,SCRN(X-1,24)-128:PLOTX,24,S

CRN(X,24)+128:GOT0640810 FORM=0T07820 FORN=0T05830 P=SCRN(N+16,M+15)835 C(N,M)=P840 IFC(N,M)=17THENV(M)=V(M)+32/(2AN)850 NEXTN860 V(M)=V(M)+64

870 NEXTM880 CLS:PAPER4:INK6:PRINT890 PRINT"you can now either enter the,":p

RINT900 PRINT" 1) Character,

0 r"910 PRINT" 2) ASCII code.":PRINT:PRINT920 GETR$930 IFR$="l"THENINPUT"Enter the character

";F$:Q=ASC(F$) :GOT0970940 IFR$="2"THENINPUT"Enter the ASCII code

";Q950 IFQ<320RQ>126 THENPRINTCHR$(ll);CHR$(l

4)CHR$(11) :GOT0940:ELSE970960 GOT0920970 FORM=0T07:POKE46080+(8*Q)+M,V(M) :NEXTM975 PRINT:PRINT:PRINT" Press 'Y' if you w

ant to define another character."980 GETY$990 IFY$="y"THENPRINTCHR$(17):RUN~5 PAPER7:INK0:CLS:PRINTCHR$(17)

3D ROTATION50 REM===============================60 REM PROGRAM TO ROTATE ANY 3D SOLID62 REM BODY ABOUT ANY AXIS PASSING64 REM THROUGH ORIGIN THROUGH66 REM PRESCRIBED STEPS,CHECK FOR68 REM VISIBLE FACES,AND PRODUCE70 REM CORRECT PERSPECTIVE PLOT.72 REM===============================80 PAPER0:INK7:CLS:PRINT94 PRINTCHR$(27);"J";SPC(2);" 3D

ROTATION "95 PRINTCHR$(27)i"J"iSPC(2);" ~-- 3D

ROTATION ":PRINT:PRINT:PRINT:PRINT:PRINT:PRINT96 PRINTCHR$(27)i"J"i"ORIGINAL PROGRAM BY

D.F.ROUND 12/2/82"97 PRINTCHR$(27)i"J"i"ORIGINAL PROGRAM BY

D.F.ROUND 12/2/82":PRINT:PRINT98 PRINTCHR$(27)i"J"i"ORIC-1 CONVERSION BYM.J.BUNCE 5/1/84"99 PRINTCHR$(27);"J"i"ORIC-1 CONVERSION BYM.J.BUNCE 5/1/84"100 DIMD(6,4,2) ,R0(3,8) ,R1(3,8) ,A(3,3) ,VE(

3) ,VN (3) ,EY (3) ,VA (3) ,VB (3)

102 WAIT1000104 REM===========================105 REM DATA I/P IN CORRECT ORDER106 REM===========================110 FORV=lT08120 READR0(l,V) ,R0(2,V) ,R0(3,V)130 NEXTV131 DATA-25,-25,25,25,-25,25,25,-25,-25,-2

5,-25,-25132 DATA-25,25,25,25,25,25,25,25,-25,-25,2

5,-25140 FORF=lT06150 FORE=lT04160 READD(F,E,l) ,D(F,E,2)170 NEXTE:NEXTF171 DATA1,2,2,3,3,4,4,1172 DATA5,1,1,4,4,8,8,5173 DATA6,5,5,8,8,7,7,6174 DATA2,6,6,7,7,3,3,2175 DATA1,5,5,6,6,2,2,1176 DATA3,7,7,8,8,4,4,3178 CLS:PRINT:PRINT:PRINT:PRINT180 INPUT"EYE POS'N.(APPROX. 150-200)";EY(

3)190 EY(1)=0200 EY(2)=0210 INPUT"D.C'S.OF AXIS";U1,U2,U3220 INPUT"TOTAL,STEP,ROT'N.";TM,TT230 T=0240 MO=SQR(U1*U1+U2*U2+U3*U3)250 U1=U1/MO260 U2=U2/MO270 U3=U3/MO279 REM===========================280 REM TRANSFORMATION (ROTATION)281 REM===========================290 SI=SIN(T/57.296)300 CO=COS(T/57.296)310 A(1,1)=U1*U1+CO*(1-U1*U1)320 A(1,2)=U1*U2*(1-CO)-U3*SI330 A(1,3)=U3*U1*(1-CO)+U2*SI

340 A(2,1)=U1*U2*(1-CO)+U3*SI350 A(2,2)=U2*U2+CO*(1-U2*U2)360 A(2,3)=U2*U3*(1-CO)-U1*SI370 A(3,1)=U3*U1*(1-CO)-U2*SI380 A(3,2)=U2*U3*(1-CO)+U1*SI390 A(3,3)=U3*U3+CO*(1-U3*U3)400 FORV=lT08410 FORI=lT03420 R1(I,V)=0430 FORJ=lT03440 R1(I,V)=R1(I,V)+A(I,J)*R0(J,V)450 NEXTJ:NEXTI:NEXTV454 REM========================455 REM CHECK FOR HIDDEN FACES456 REM========================460 CLS:HIRES470 FORF=lT06472 FORJ=lT03474 VA(J)=R1(J,D(F,1,2))-R1(J,D(F,1,1))476 VB(J)=R1(J,D(F,2,1))-R1(J,D(F,2,2))478 NEXTJ480 VN(1)=VA(2)*VB(3)-VA(3)*VB(2)482 VN(2)=VA(3)*VB(1)-VA(1)*VB(3)484 VN(3)=VA(1)*VB(2)-VA(2)*VB(1)490 FORU=lT03500 VE(U)=EY(U)-R1(U,D(F,1,2))510 NEXT U520 DP=~530 FORU=lT03540 DP=DP+VN(U)*VE(U)550 NEXTU560 IFDP<0THEN690564 REM========================565 REM PERSPECTIVE PROJECTION566 REM========================570 FORE=lT04580 V1=D(F,E,1)590 PE=ABS(EY(3)/(R1(3,V1)-EY(3)))600 X=INT(PE*R1(1,V1)+120)610 Y=INT(PE*R1(2,V1)+100)614 IFX<0THENX=0

615 IFX)239THENX=239616 IFY)199THENY=199617 IFY<0THENY=0620 CURSETX,Y,3630 V2=D(F,E,2)640 PE=ABS(EY(3)/(Rl(3,V2)-EY(3)))650 N=INT(PE*Rl(1,V2)+120)660 M=INT(PE*Rl(2,V2)+100)665 B=N-X:C=M-Y

670 DRAWB,C,l680 NEXTE690 NEXTF700 T=T+TT710 IFT<=TMTHEN290720 PRINT"ROTATION COMPLETE - PRESS ANY KE

Y ":GETA$730 TEXT740 END

SPELLBUZZ-nr-REM"SPELLBUZZ"15 T$="SPELLBUZZ"20 FORA=47056T047087:READB:POKEA,B:NEXT30 DATA0,24,0,0,24,12,7,0,0,6,0,0,6,12,56,

040 DATA0,24,0,0,7,12,24,0,0,6,0,0,56,12,6,

050 Y$="Z{":N$="I}"55 DIMA$(100,3)60 FORA=lT0100:FORB=lT03:READA$(A,B]:NEXTB,A100 REM DICTIONARY101 DATA"PIECE","PEICE","PEECE"102 DATA"SATURDAY","SATERDAY","SATTERDAY"103 DATA"TUESDAY","TEUSDAY","TOOSDAY"104 DATA"BANANA","BANNANA","BANANNA"105 DATA"THREE","THEREE","THREA"106 DATA"YELLOW","YELOW","YELLOU"107 DATA"ALPHABET","ALFABET","ALFABIT"108 DATA"FRIDAY","FRYDAY","FRIDEY"109 DATA"COMPUTER","COMPUTOR","COMPUTAR"110 DATA"OLIVER","OLIVAR","OLLIVER"111 DATA"TELEVISION","TELIVISUN","TELYVISH

UN"112 DATA"FOUR","FOOR","FUOR"113 DATA"SUSANNAH","SUSANAH","SUSANNA"114 DATA"SUPER","SOOPER","SOUPA"115 DATA"THEIR","THIER","THEER"

116 DATA"EACH","EECH","EATCH"117 DATA"HEAVY","HEVVY","EAVVY"118 DATA"LEAST","LEEST","LAEST"119 DATA"AGAIN","AGEN","AGIN"120 DATA"CUDDLE","CUDDEL"<"CUDEL"121 DATA"THANKS","FANKS","THANGKS"122 DATA"CONNECT","CONECT","CONNEKT"123 DATA"INTRODUCTION","INTREDUCTION","INT

ERODUCTION"124 DATA"AVERAGE","AVARAGE","AVIRAGE"125 DATA"FIRST","FERST","FIRSST"126 DATA"GIRL","GERL","GURL"127 DATA"TABLE","TABEL","TABIL"128 DATAILOOpl,ILOUpl,ILUPE"129 DATA"MOUTH","MOUF","MOWTH"130 DATA"PARALLEL","PARALEL","PARALELL"131 DATA"PERFORM","PURFORM","PIRFORM"132 DATA"PURSUE","PERSUE","PIRSUE"133 DATA"PERSUADE","PURSUADE","PERSWADE"134 DATA"STATEMENT","STATMENT","STATEMEANT

11

135 DATA"REQUIRE","REKWIRE","REQUIR"136 DATA"LETTER","LETER","LETTAR"137 DATA"LETTUCE","LETTICE","LETTIS"138 DATA"TELEPHONE","TELEFONE","TELIFONE"139 DATA"ENEMY","ENIMY","ENEMIE"140 DATA"MOUSE","MOWSE","MOWESE"141 DATA"TRIANGLE","TRYANGLE","TRIANGEL"

142 DATA"COMPLETE","COMPLEET","COMPLEATEII143DATAICOMMAI,ICOMMARI,ICOMMARE"144 DATA"THINK","PINK","THYNKII145DATAIMUSICI,IMUSIKI,IMUESIK"146 DATA"WHICH","WICH","WHICHE"147 DATA"TOGETHER","TOGEVVER","TWOGEVVER"148DATAITHEMEI,ITHEEMI,IPEEM"149 DATA"REVEAL","REVEEL","RE-VEAL"1510 DATA"WONDERPUL","WUNDERPUL","WONDERPUL

L"151 DATA"BEGINNING","BEGINING","BEEGINNING

11

152 DATA"BEAUTY","BAEUTY","BEUATY"153 DATA"ECHO","ECHOE","ECKOE"154 DATA"CHOIR","KWIRE","KWOIR"155DATAITRUMPETI,ITRUMPETTEI,ITRUMPETT"156 DATA"HEAT","HEET","HEATE"157 DATA"PROMISE","PROMISS","PROMIS"158 DATA"WORLD", "WIRLD", "WORLEO"159DATAIMINUTEI,IMINETTEI,IMINIT"1610 DATA"WHEEL","WEELLII,IIWEILL"161DATAIHEIGHTI,IHITEI,IHYTE"162 DATA"PAITHFUL","FAYTHFULL","FAITHFULL"163 DATA"THOUGHT",IITHOUHT","THORT"164 DATA"DESCEND","DEESEND","DESEND"165 DATA"NECESSARY","NECCESARY","NECCESSAR

y"166 DATAIIMOUNTAIN","MOWNTAIN","MOWNTEN"167 DATA"DIFFERENCEII,"DIFERENCE","DIFFERRE

NCE"168 DATA"VALLEY", IIVALLylI,"VALEY"169 DATA"HEARTII,"HAERT",IIHARTE"1710 DATA"EIGHTII,"AITE","EAGHT"171 DATA"SEVEN",IISEVVEN","SEVIN"172 DATA"WEDNESDAY","WENSDAY","WENESDAY"173 DATA"J ANUARY", IIJAm1ARylI, "JANURY"174 DATAIIFEBRUARYI,IIFEBWARY",IFEBUARylI175 DATA"AUGUST",IIAWGUST","ORGUSTII176 DATAIISEPTEMBER",IISETEMBER","SEPTEMBARII177 DATA"DECEMBER",IIDESEMBER","DICEMBERII178 DATA"MALICE","MALISS","MALIS"

179 DATA"LAUGH","LAFF","LARF"1810 DATA"DOCTOR","DOCTER","DOCTAR"181 DATA"REASON","REESON","RIESON"182DATAICREATUREII,IKWEETUREI,ICREETURE"1830ATAIBECAUSEI,IBECOSI,IBEECAUSE"184 DATA"GREATEST","GRATEST",IIGREATIST"185DATAIWHISPERI,IWISPERI,IWISSPER"186DATAITROUBLEI,ITRUBBLEI,ITROUBEL"187DATAIINFERENCEI,IINFERRENCE",IINFERANC

E"188 DATA"PEOPLE","PEEPEL",IIPEEPIL"189 DATA"TURNED","TIRNED","TURND"1910 DATA"SPECIAL","SPESHILL","SPESHALLII191 DATA"VOICE","VOYCEII,IIVOISEII192 DATA"BUILDING","BILLDING","BILDING"193 DATA"MOTHERII,"MUVVER","MOTHAR"194 DATA"GEM","GEMM","JEM"195 DATAIJEWELLERylI,IJEWELRYI,IJEWELREY"196 DATA"CRYSTAL","CRISTAL","CRYSTEL"197 DATA"DIFFICULTY","DIFICULTY","DIFFIKUL

TY"198 DATA"SWORDII,"SORD","SWORED"199 DATA"ISSUE","ISYOU","ISUE"21010 DATA"ACCOMMODATION","ACOMODATION","ACC

OMODATIONII250 POKE524,2552610 DOKE48002,3099270 FORA=lT092810 POKE48014+A,ASC(MID$(T$,A,1))2910 NEXT295 DOKE481024,21075300 CLS3110 PRINTSPC (21010)SPC (231O)CHR$ (4)CHR$ (27) IIN

IIT$CHR$(4)3210 PRINT:PRINT:PRINTSPC(11O)CHR$(96)1I ROB

SIBTHORPE"3310 PRIN'r:PRINT:PRINTSPC(7)lIpress any key

to start"

3410 POKE#26A,2345 PING3510 A$=KEY$

360 IFA$= IIIITHENO=RNO (1) : O=FRE ("") : GOT0350370 POKE#26A,3400 FORN=lT010405 CLS410 0=INT(RNO(1)*100)+1:GOSUB1200415 IFFTHENF=0:GOT0410420 A=INT(RNO(1)*3)+1430 B=INT(RNO(1)*3)+1440 IFB=ATHEN430450 C=6-(A+B)500 PRINT:PRINT:PRINT"Whi~h spelling is ~o

rre~t?"510 PRINT:PRINT:PRINT,A$(O,A)520 PRINT:PRINT,A$(O,B)530 PRINT:PRINT,A$(D,C)535 PRINT,"================"540 PRINT:PRINTSPC(l)542 PLOT3,24,"-=-=-=-=-=-=-=-=-=-=-=-=-=-=

-=-"545 PLOT3,25,"Type answer - then press RET

URN"550 INPUTB$555 PRINT,"================"565 WAIT100:PRINT568 PRINTSPC(2)CHR$(4)CHR$(27)"J";570 FORE=lTOLEN(A$(O,l»580 PRINTMIO$ (A$ (0,1) ,E,l);585 PING:WAIT100590 NEXT #

600 PRINT" ";615 IFB$=A$(D,l)THENPRINTY$:Y=Y+l618 IFB$<>A$(O,l)THENPRINTN$620 PRINTCHR$(4)625 PRINT:PRINT:PRINT:PRINT","You have be

en ~orre~t":PRINT""y" out of "N628 WAIT200630 NEXT700 CLS705 POKE#26A,2

710 PRINTSPC(200)SPC(150)CHR$(4)CHR$(27)"N11.,

720 IFY=10THENPRINTY$" Brilliant "Y$:GOSUB800

730 IFY<10ANOY>6THENPRINT"Fairly good":GOSUB900

740 IFY<7ANOY>3THENPRINTN$" Oh Dear! "N$:GOSUB1000

750 IFY<4THENPRINTN$,N$,N$:GOSUBl100755 PRINTCHR$(4)758 Y=0:N=0760 WAIT200:GOT0300800 FORX=5000T0100STEP-100:S0UND1,X,12:WAI

T10:NEXT:EXPLOOE:RETURN810 S=SIN(X)*100815 IFS<0THENS=-S820 SOUND1,S,9830 WAITS840 NEXT900 FORX=lT050910 S=SIN(X)*100915 IFS<0THENS=-S920 SOUND1,S,9930 WAITS940 NEXT950 FORX=10T015:S0UND1,S,X:WAIT5:NEXT960 FORX=14T00STEP-l:SOUND1,S,X:WAIT5:NEXT970 RETURN1000 FORX=50T01STEP-l:SOUND1,X*100,9:WAIT5

:NEXT:WAIT50:S0UND1,0,0:RETURN1100 FORX=lT0101110 SOUND1,5000,12:WAIT20:S0UND1,0,0:WAIT

10:NEXT:RETURN1120 RETURN1200 D(N)=D1210 FORX=N-IT01STEP-l1220 IFD(N)=D(X)THENF=-l:X=l1230 NEXT1240 RETURN

ANAL YSIS10 REM"ANALYSIS"20 GRAB30 CLS40 PRINT:POKE#26A,250 PRINTSPC(255)SPC(133)CHR$(4)CHR$(27)"N

ANALYSIS":PRINTCHR$(4)60 PLOT7,15,CHR$(96)+" ROB SIBTHORPE 1983"70 PLOT2,24,"Press any key to start progra

mme"80 GET A$90 POKE#26A,3100 CLS105 PRINT:PRINT"WHAT IS THE TITLE OF THIS

ANALYSIS?"110 INPUTTA$115 IFLEN(TA$»16THENTA$=LEFT$(TA$,12)+"..

",120 PRINT:PRINT:PRINT,CHR$(4)CHR$(27)"J"TA

$:PRINTCHR$(4)130 INPUT"HOW MANY ENTRIES WILL THERE BE";

TE135 DIMZ$(TE)140 PRINT:PRINT"Please type r.olumn heading

s required. Make COST the last one"145 PRINT:PRINT"MAXIMUM 10 HEADINGS"150 REPEAT155 INPUTA$160 GOSUB20000165 PRINT"OK"170 UNTILA$="COST"175 WAIT50200 CLS210 PLO'r6,10,"NOW FOR THE ENTRIES"220 PLOT6,12,"Press any key to start"230 GETA$240 CLS250 FORA=lTOTE

260 PRINT:PRINT"ENTRY "A270 PRINTB$;TAB(25-LEN(B$));280 INPUTB$(A)290 IFC$=""THEN560300 PRINTC$;TAB(25-LEN(C$));310 INPUTC$(A)320 IFD$=""THEN560330 PRINTD$;TAB(25-LEN(D$));340 INPUTD$(A)350 IFE$=""THEN560360 PRINTE$;TAB(25-LEN(E$));370 INPUTE$(A)380 IFF$=""THEN560390 PRINTF$;TAB(25-LEN(F$));400 INPUTF$(A)410 IFG$=""THEN560420 PRINTG$;TAB(25-LEN(G$));430 INPUTG$(A)440 IFH$=""THEN560450 PRINTH$;TAB(25-LEN(H$));460 INPUTH$(A)470 IFI$=""THEN560480 PRINTI$;TAB(25-LEN(I$));490 INPUTI$(A)500 IFJ$=""THEN560510 PRINTJ$;TAB(25-LEN(J$));520 INPUTJ$(A)530 IFK$=""THEN560540 PRINTK$;TAB(25-LEN(K$));550 INPUTK$(A)560 NEXT570 WAIT501000 CLS1010 PRINTSPC(40)CHR$(4)CHR$(27)"N"TA$:PRI

NTCHR$(4)1020 PRINT:PRINT:PRINT"Whir.h of the follow

ing do you require?"

113313 PRINT:PRINT"l EXTRACT COSTS"113413 PRINT"2 LIST PARTICULAR ENTRY"113513 PRINT"3 LIST COLUMN VARIATIONS"113613 PRINT"4 LIST LIKE ENTRIES"113713 PRINT"5 LIST ALL ENTRIES"113813 PRINT"6 LIST SPARE ITEMS"113913 PRINT"7 CHANGE ENTRY"11130 PRINT"8 STOP1120 PRINT:PRINT"Press number"1130 GETA$1140 V=VAL(A$)1150 CLS1160 ONVGOSUB2000,3000,400!3,5000,6000,7000,8000,100001170 GOT010002000 PRINT:PRINT:PRINT"EXTRACT COSTS"2010 PRINT:PRINT"INDICATE WHICH CATEGORIESYOU WANT UNDER EACH COLUMN"2020 PRINT:PRINT"...or ALL if appropriate":PRINT:PRINT21330 IFB$="COST"THEN23002040 PRINTB$iTAB(25-LEN(B$))i2050 INPUTBX$2060 IFC$="COST"THEN230021370 PRINTC$iTAB(25-LEN(C$))i21380 INPUTCX$21390 IFD$="COST"THEN230021130 PRINTD$iTAB(25-LEN(D$))i2110 INPUTDX$2120 IFE$="COST"THEN23002130 PRINTE$iTAB(25-LEN(E$))i2140 INPUTEX$2150 IFF$="COST"THEN23002160 PRINTF$iTAB(25-LEN(F$))i2170 INPUTFX$2180 IFG$="COST"THEN23002190 PRINTG$iTAB(25-LEN(G$))i2200 INPUTGX$2210 IFH$="COST"THEN23002220 PRINTH$iTAB(25-LEN(H$))i22313 INPUTHX$

2240 IFI$="COST"THEN23002250 PRINTI$iTAB(25-LEN(I$))i2260 INPUTIX$2270 IFJ$="COST"THEN23002280 PRINTJ$iTAB(25-LEN(J$))i2290 INPUTJX$2300 PRINT:PRINT,CHR$(27)"L HANG ON!"2310 WAIT502320 C3=0:C4=0:C5=02330 FORA=lTOTE2340 C1=0:C2=02350 IFB$="COST"ANDC1=C2THENC3=VAL(B$(A)):

C4=C4+C3:C5=C5+1:GOT028202360 IFB$(A)="0"THEN28202370 C1=C1+12380 IFB$(A)=BX$ORBX$="ALL"THENC2=C2+12390 IFC1<>C2THEN28202400 IFC$=""THEN28202410 IFC$="COST"ANDC1=C2THENC3=VAL(C$(A)):

C4=C4+C3:C5=C5+1:GOT028202420 C1=C1+12430 IFC$(A)=CX$ORCX$="ALL"THENC2=C2+12440 IFC1<>C2THEN28202450 IFD$=''''THEN28202460 IFD$="COST"ANDC1=C2THENC3=VAL(D$(A)):

C4=C4+C3:C5=C5+1:GOT028202470 C1=C1+12480 IFD$(A)=DX$ORDX$="ALL"THENC2=C2+12490 IFC1<>C2THEN28202500 IFE$=""THEN28202510 IFE$="COST"ANDC1=C2THENC3=VAL(E$(A)):

C4=C4+C3:C5=C5+1:GOT028202520 C1=C1+12530 IFE$(A)=EX$OREX$="ALL"THENC2=C2+12540 IFC1<>C2THEN28202550 IFF$=""THEN28202560 IFF$="COST"ANDC1=C2THENC3=VAL(F$(A)):

C4=C4+C3:C5=C5+1:GOT028202570 C1=C1+12580 IFF$(A)=FX$ORFX$="ALL"THENC2=C2+12590 IFC1<>C2THEN2820

2600 IFG$=IIIITHEN28202610 IFG$=IICOSTIIANOC1+C2THENC3=VAL(G$(A)):

C4=C4+C3:C5=C5+1:GOT028202620 C1=C1+12630 IFG$(A)=GX$ORGX$=IIALLIITHENC2=C2+12640 IFC1<>C2THEN28202650 IFH$='"'THEN28202660 IFH$=IICOSTIIANOC1=C2THENC3=VAL(H$(A)):

C4=C4+C3:C5=C5+1:GOT028202670 C1=C1+12680 IFH$(A)=HX$ORHX$=IIALLIITHENC2=C2+12690 IFC1<>C2THEN28202700 IFI $= '"'THEN28 20

2710 IFI $= IICOSTIIANOC1=C2THENC3=VAL (I$ (A) ) :

C4=C4+C3:C5=C5+1:GOT02820

2720 C1=C1+1.

2730 IFI$(A)=IX$ORIX$=IIALLIITHENC2=C2+12740 IFC1<>C2THEN28202750 IFJ$=IIIITHEN28202760 IFJ$=IICOSTIIANOC1=C2THENC3=VAL(J$(A)):

C4=C4+C3:C5=C5+1:GOT028202770 C1=C1+12780 IFJ$(A)=JX$ORJX$=IIALLIITHENC2=C2+12790 IFC1<>C2THEN28202810 C3=VAL(K$(A)) :C4=C4+C3:C5=C5+12820 NEXT2830 CLS2840 PRINT:PRINTB$iTAB(25-LEN(B$)) iBX$2850 PRINTC$iTAB(25-LEN(C$))iCX$2860 PRINTO$iTAB(25-LEN(O$)) iOX$2870 PRINTE$iTAB(25-LEN(E$)) iEX$2880 PRINTF$iTAB(25-LEN(F$))iFX$2890 PRINTG$iTAB(25~LEN(G$))iGX$2900 PRINTH$iTAB(25~LEN(H$))iHX$2910 PRINTI$iTAB(25-LEN(I$))iIX$2920 PRINTJ$iTAB(25-LEN(J$))iJX$2930 PRINTK$iTAB(25-LEN(K$))iKX$2940 PRINT:PRINTII IIC411FOR IIC511ITEMSII

2950 PRINT:PRINTIIAny more EXTRACT COSTS required?lIi

2960 GETA$

2970 IFA$=lIyIlTHEN20002980 RETURN3000 PRINT:PRINT:PRINTllpARTICULAR ENTRyll3010 PRINT:PRINTIIWhic.h onelli3020 INPUTA3030 IFA>TETHENPRINTIITOO HIGH - CHOOSE FRO

M 1 TO IITE:GOT030203040 GOSUB220003050 PRINT:PRINTIIOo you want another PARTI

CULAR ENTRy?lIi3060 GETA$3070 IFA$=lIyIlTHEN30003080 RETURN4000 PRINT:PRINT:PRINTIICOLUMN VARIATIONSII4005 FORA=lTOTE:Z$(A)=IIII:NEXT4010 PRINT:INPUTIIWhic.h c.o1umnlliZ$4020 GOSUB230004030 PRINT:PRINTZ$(l)4040 FORA=2TOTE4050 FL=04060 FORN=A-1T00STEP-14070 IFZ$(N)=Z$(A)THENFL=1:N=04080 NEXTN4090 IFFL=0THENPRINTZ$(A)4100 NEXTA4110 PRINT:PRINTIIOo you want more COLUMN V

ARIATIONS?lIi

4120 GETA$

4130 IFA$=lIyIlTHEN4000

4140 RETURN5000' PRINT:PRINT:PRINTIILIKE ENTRIESII5010 PRINT:INPUTIIWhic.h c.olumnlliZ$5020 PRINT:INPUTIIWhic.h variationlliZX$5030 GOSUB230005040 FORA=lTOTE5050 IFZ$(A)=ZX$THENGOSUB220005055 WAIT2005060 NEXT5070 PRINT:PRINTIIOo you want other LIKE EN

TRIES?lIi

5080 GETA$

5090 IFA$="Y"THEN50005100 RETURN6000 PRINT:PRINT:PRINT"LIST ALL ENTRIES":P

RINT6010 FORA=lTOTE6030 GOSUB220006040 WAIT2006045 NEXT6050 PRINT:PRINT"...again?"6060 GETA$6070 IFA$="Y"THEN60006080 RETURN7000 PRINT:PRINT:PRINT"SPARE ITEMS"7010 FORA=lTOTE7020 IFB$(A)="0"THENPRINTA,7030 NEXT7040 PLOT2,20,"press any key to clear scre

en"7050 GETA$7060 RETURN8000 PRINT:PRINT:PRINT"CHANGE ENTRY"8010 PRINT:INPUT"Which one";A8020 PRINT:PRINTB$;TAB(25-LEN(B$»;B$(A)8050 GOSUB240008060 B$(A)=Z$(A)8070 IFC$=""THEN84308080 PRINTC$;TAB(25-LEN(C$»;C$(A)8090 GOSUB240008100 C$(A)=Z$(A)8110 IFD$=""THEN84308120 PRINTD$;TAB(25-LEN(D$»;D$(A)8130 GOSUB240008140 D$(A)=Z$(A)8150 IFE$=""THEN84308160 PRINTE$;TAB(25-LEN(E$»;E$(A)8170 GOSUB240008180 E$(A)=Z$(A)8190 IFF$=""THEN84308200 PRINTF$;TAB(25-LEN(F$»;F$(A)8210 GOSUB240008220 F$(A)=Z$(A)

8230 IFG$=""THEN84308240 PRINTG$;TAB(25-LEN(G$» ;G$(A)8250 GOSUB240008260 G$(A)=Z$(A)8270 IFH$=""THEN84308280 PRINTH$;TAB(25-LEN(H$»;H$(A)8290 GOSUB240008300 H$(A)=Z$(A)8310 IFI$=""THEN84308320 PRINTI$;TAB(25-L~N(I$» ;I$(A)8330 GOSUB240008340 I$(A)=Z$(A)8350 IFJ$=""THEN84308360 PRINTJ$;TAB(25-LEN(J$»;J$(A)8370 GOSUB240008380 J$(A)=Z$(A)8390 IFK$=""THEN84308400 PRINTK$;TAB(25-LEN(K$»;K$(A)8410 GOSUB240008420 K$(A)=Z$(A)8430 WAIT508440 CLS8450 PRINT:PRINT:PRINT"ENTRY "A" NOW READS

. "8460 GOSUB220008470 PRINT:PRINT"Do you want to CHANGE ano

ther ENTRY?";8480 GETA$8490 IFA$="y"THEN80008500 RETURN10000 PRINTCHR$(17)10010 PRINTSPC(154)CHR$(4)CHR$(27)"N ANALY

SIS : "TA$10020 PRINTCHR$(4)10030 PLOT5,15,"TO continue, type CONT"10040 PLOT5,17," and press RETURN"10050 STOP10060 PRINTCHR$(17)10070 RETURN20000 FL=FL+l20010 IFFL=lTHENB$=A$:DIMB$(TE)

20020 IFFL=2THENC$=A$:DIMC$(TE)20030 IFFL=3THEND$=A$:DIMD$(TE)20040 IFFL=4THENE$=A$:DIME$(TE)20050 IFFL=5THENF$=A$:DIMF$(TE)20060 IFFL=6THENG$=A$:DIMG$(TE)20070 IFFL=7THENH$=A$:DIMH$(TE)20080 IFFL=8THENI$=A$:DIMI$(TE)20090 IFFL=9THENJ$=A$:DIMJ$(TE)20100 IFFL=10THENK$=A$:DIMK$(TE)20110 RETURN22000 PRINT"ENTRY "A:PRINT22005 PRINTB$iTAB(25-LEN(B$))iB$(A)22010 IFC$=""THEN2219022020 PRINTC$iTAB(25-LEN(C$))iC$(A)22030 IFD$=""THEN2219022040 PRINTD$iTAB(25-LEN(D$))iD$(A)22050 IFE$=""THEN2219022060 PRINTE$iTAB(25-LEN(E$))iE$(A)22070 IFF$=""THEN2219022080 PRINTF$iTAB(25-LEN(F$))iF$(A)22090 IFG$=""THEN2219022100 PRINTG$iTAB(25-LEN(G$))iG$(A)22110 IFH$=""THEN2219022120 PRINTH$iTAB(25-LEN(H$)) iH$(A)22130 IFI$=""THEN2219022140 PRINTI$iTAB(25-LEN(I$))iI$(A)22150 IFJ$=""THEN2219022160 PRINTJ$iTAB(25-LEN(J$)) iJ$(A)22170 IFK$=""THEN2219022180 PRINTK$iTAB(25-LEN(K$)) iK$(A)22190 PRINT22200 RETURN23000 FORA=lTOTE23010 IFZ$=B$THENZ$(A)=B$(A) :GOT02311023020 IFZ$=C$THENZ$(A)=C$(A) :GOT02311023030 IFZ$=D$THENZ$(A)=D$(A) :GOT02311023040 IFZ$=E$THENZ$(A)=E$(A) :GOT02311023050 IFZ$=F$THENZ$(A)=F$(A) :GOT02311023060IFZ$=G$THENZ$(A)=G$(A):GOT02311023070IFZ$=H$THENZ$(A)=H$(A):GOT02311023080 IFZ$=I$THENZ$(A)=I$(A) :GOT023110

23090 IFZ$=J$THENZ$(A)=J$(A) :GOT02311023100IFZ$=K$THENZ$(A)=K$(A):GOT02311023110 NEXT23120 RETURN24000 PRINT"...now to read "i24020 INPUTZ$(A)24030 PRINT"OK24040 RETURN

SCUBA DIVEDurell Software£6.95Oric 16K & 48KI must admit it, I have neverbeen a fan of Durell's 'HarrierAttack', I have always felt thatthey could do better. 'ScubaDive' is a far more originaland interesting game, Youhave to get your diver to jumpoff a boat and then swimaround underwater trying toavoid sharks, octupi and otherdenizens of the deep, Yourtask is to pick up pearls fromoysters and collect mineralsand gold from underseacaverns, Of course, you havea time limit controlled by theamount of oxygen in yourtanks,

Graphically, the game isgood although not quite asgood as the version I saw onthe Spectrum and lots of fun,

LOCHNESSMONSTERRomik Software£6.99Oric 48KRomik Software are wellestablished in the Sinclairarea and have ventured intoOric Software with LochnessMonsters, To the strains of'Loch Lomond' you pilot yourboat around Lochness tryingto pick up fish, When youhave collected 25 you areawarded a poison fish whichcan be used as bait for themonsters which appear fromtime to time,

You also have harpoonswhich you can hurl at themonsters but these will onlykill them if they hit the head,

Although the movement ofthe graphics is rather jerky,the scrolling of the lake isquite impressive as you moveyour boat around the screen,Altogether a good entranceinto the Oric fielded by analready well known company,

GRUNEBERGLINKWORDCOURSETansoft Limited£12.95Oric-l & Atmos 48KAvailable for French, Italian,German and Spanish, these

courses give a good basicintroduction to theselanguages, You are suppliedwith an instruction manual, aprogram cassette and aspoken vocabulary cassetteall in a video cassette sizedbox, The courses are basedon a method created byProfessor Michael Grunebergof the University of Swansea,Basically, the method is basedon word association, Forinstance, the Spanish word for'Lobster' is 'Humma', You aretold to imagine a lobster witha sense of humour, thusimmediately giving yousomething to picture in yourmind and an aid to laterrecalL The silliness of some ofthe phrases actually helps youto remember the words,

You are taught around 400words and a goodbackground in grammar.These courses are ideal forthose who are going abroadfor holidays or business andcan give you a lot ofconfidence if you are justbeginning to learn alanguage,

THEULTRAP.S.S.£6.95Orie 48KEvery so often a piece ofsoftware is produced whichbecomes a standard for aparticular computer, Wherethe ORIC-I is concerned thefirst game to fall into thatcategory was, undoubtedly,Xenon I. The second, Ibelieve, is The Ultra,The idea behind The Ultracannot in any way bedescribed as new, the basicprinciple being to vaporise asmany aliens as possiblebefore they do the same toyou, The cassette sleevedescribes The Ultra as a purearcade game and this iscertainly the case,There are 16 different screensof aliens, each having theirown shape and flightformation, Part of theaddictive quality of this game

lies in trying to discover wh-althe next screen of aliens looklike,Screen one of Ultra I consistsof three rows of green craftwhich move across the screenfrom right to left, snappingtheir jaws as they go, I wassoon able to negotiate thesewithout losing any of my fivelives, Screen 2 turned out tobe a bank of menacing bluespace invaders, I soondiscovered that shooting thecraft from the left of theformation created a 'safe' areaon the screen where I couldposition my spaceship withoutany danger of being bombed,A similar principle applies tomany of the other screens: infact the main skills of TheUltra lie in knowing where toposition the spaceship at thebeginning of each screen andin adoption the safest andmost efficient method oftackling the opposition I won'tgive the game away by tellingyou how to play each screen,except to say that Ultra 16 isvery hard and the reward forcompleting it will have beenwell earned,Just in case 'The Ultra' soundstoo easy, one of the game'sfeatures is to penaliseindiscriminate use of the firebutton by informing you thatyour laser has overheated,When this happens you justhave to wait until it coolsdown before you can continuefiring,I would rate 'The Ultra' as oneof the best games of its type,If you are going to buy only afew games for your Oric, buythis one,

BOZY BOACDS Microsystems£5.95Oric 48KThis game is a variation of theold Snakes game, Basicallyyou have to control your Boaaround the screen avoidingthe side and eating beetlesand snails and avoiding theflowers which glow over thescreen,

People have been heard tocomplain that there is notmuch software available forthe Oric-I. This listing,incomplete as it is, shouldshow that that statement ispatently untrue. We have over160 programs on our files,and that's more than enoughfor most owners.

Of course this listing is farfroIl1complete.

If you know of any softwarethat we are not listing, thenplease contact us at OricOwner and we will add thenew programs to our listing.We shall endeavour to be ascomprehensive as possible,though there is no guarantee

that all the software listed willbe available at time of goingto press, and there may wellbe additional items from someof the companies.

A growing number ofsoftware houses are makingtheir software Oric-l andAtmos compatable byrecording two versions of the

programs on the cassettes. Ifyou are an Atmos owner,check with the company oryour dealer as to whether thesoftware is suitable.

You will also have to checkwhether the software issuitable for a 16K machine.Much of it is for the 48Kversion only.

Program Type Price Distributors

3DInvaders Arcade Game £6.95 Quark Data

3D Maze/Breakout Game £7.50 I]K

Ace in the Hole Adventure £5.95 Wild Electromcs

Acheron's Rage Arcade £6.95 Softek

Airline Strategy £6.95 CCS

Arcaine Quest Adventure £5.95 Wild Electronics

Assembler Utility £9.95 Superior

Assembler/Diss. Utility £6.95 Durell

Assembler/Editor Utility £7.95 QED

Asteroids Arcade £5.95 Arctic

Author Business £14.50 Tansoft

Awan Board £5.50 Kenema

Battleships Game £6.90 Aztec

Beseiged Education £9.95 Sulis

£5.95 COS

Bridge Board £9.85 ICB

Candyfloss Game £7.50 I]K

Cassette 50 Game £9.95 Cascade

Centipede Arcade £6.95 SS

Champions Strategy £6.95 Peaksoft

Chess Board £9.99 Tansoft

Chicken Arcade £6.95 Durell

Click Game £4.95 Headfleld

40 Onc Owner

Program Type Price Distributors

Composer Utility £6.50 Sector 7

Dallas Strategy £6.95 CCS

Database Business £19.95 Gemini

Death Satellite Adventure £6.90 A &F Software

Defence Force Arcade £7.95 Tansoft

Design Aid Utility £5.50 Kenema

Dinky Kong Arcade £6.95 Severn

Dracula Adventure £6.90 Mr MIcro

Draculas Revenge Arcade £6.95 Softek

Elementary Maths Education £6.90 Aztec

Evictor Arcade £7.95 Wizard

Extension Mon. Utility £15.00 Kenema

Fantasy Quest Adventure £6.50 I]K

Filestar Business £12.00 Kenema

Fishy Business Adventure £9.95 Salamander

Flight Simulation £4.50 Tansoft

Flight Simulator Simulation £6.95 Quark Data

Forth Utility £15.00 Tansoft

Franklin's Tomb Adventure £9.95 Salamander

Galactic Defend Arcade £4.95 Headfleld

Galaxians Arcade £6.95 Softek

Galaxy 5 Game £6.95 DurelI

Games 01 Game £7.95 Salamander

Program Type Price Distributors

Gamespack Game £7.00 Sector 7

Gauntlet Arcade £6.95 PSS

Grail Adventure £6.95 Severn

Gremlin Arcade £6.95

Harrier Attack Arcade £6.95 Durell

Hells Temple Adventure £12.00 Kenema

Home Business £10.95 QEDManagement

Hopper Arcade £6.95 PSS

Horror Atoll Adventure £5.95 Wild Electronics

.HouseofDeath Adventure £9.99 Tansoft

Hunchback Arcade £6.90 Ocean

lee Giant Arcade £6.95 Softek

Invaders Arcade £7.50 I]K

Invaders Arcade £6.95 PSS

Invaders Arcade £5.50 Arcadla

Invaders Arcade £6.99 Prog. Factory

IslandofDeath Game £6.90 Ocean

Jerico 2 Adventure £6.95 Elephant

Jogger Arcade £6.95 Severn

Johnny Reb Strategy £6.95 Lothlorien

Jungle Trouble Game £6.95 Durell

Just a Mot Education £9.95 Sulis

Key Trainer Business £5.50 Kenema

Program Type Price Distributors

Killer Caverns Adventure £5.95 Virgm

Kmdersoft Education £9.95 Softshop

Leopard Lord Adventure £5.95 WIldElectronics

Light Cycle Arcade £6.95 PSS

Lightning Ass. Utility £9.90 Mr Micro

Lochness Monster Arcade £6.99 Romlk

Loki Game £6.45 Joe the LIon

Lone Raider Arcade £6.95 Severn

Lords of Time Adventure £9.90 Level 9

Lost in Space Adventure £9.95 Salamander

Lunar MIssion Game £7.95 Superior

Mastermynde Game £4.95 Headfield

Maths 4 Education £5.90 IMS

Mines of Saturn Adventure £5.95 Mikro-Gen

Moonster Arcade £6.95 Quark Data

Moria Adventure £6.95 Severn

MrWimpy Game £6.90 Ocean

Multigames I Game £6.90 Tansoft

Multigames 2 Game £6.90 Tansoft

MushroomMania Arcade £5.50 Arcadia

Mutant Invaders Arcade £5.95 R& R

Nowotnik Game £6.90 Tansoft

Oric Golf Game £5.95 R& R

Oric Trek Game £9.95 Salamander

Oric-I Blitz Game £4.95 Kompsoft

Oric-I Composer Utility £4.95 Kompsoft

Oric-I Forth Utility £6.95 Kompsoft

Oric-Cad Utility £9.99 Tansoft

Oric-Cale Business £14.50 Tansoft

Oric Owner 41

Program Type Price Distributors

Oric-Mon Utility £15.00 Tansoft

Oricade Utility £8.50 Severn

Oncbase Business £14.50 Tansoft

Oricle Game £6.95 Quark Data

Oricmon Utility £8.95 PSS

Oricmunch Arcade £7.95 Tansoft

Oricstar Business £12.00 Durell

Orion Ass./Diss. Utility £12.95 Lothlorien

Paragram Game £6.00 Elephant

Pasta Blasta Arcade £5.50 Arcadta

Personal Finance Business £9.99 JUniper

QEDToolkrt Utility £5.95 QED

Quizmaster l/2 Educational £5.59 R&R

Rat Splat Arcade £7.95 Tansoft

Records Business £10.00 Peach

~~ '

~ @" '\} r.. \~'~l:-;)'~'-,."

. :~\ ~,@.~~@r,

~-'---' ..

<~ ~

.

.' /(ii.)-

,

,-

.,..

'.. ,. ~Oi~'._' ~ ". )

,--"',100 :~ .,.;.'

'~".

.~'\~~~ ~.*"!

~,.-r1).!'\~

Reverse Board £6.50 lJK

Reversl Board £5.95 COS

Ring of Darkness Adventure £9.95 Wintersoft

Ringo Game £6.50 Elephant

Road Frog Arcade £6.90 Ocean

Roundesy Adventure £5.95 WIld Electronics

Runelord Adventure £7.50 Modular Concept

Scuba Dive Game £6.95 Durell

Snowball Adventure £9.95 Level 9

Space Crystal Adventure £6.95 Quark Data

Space Docker Game £4.95 Kompsoft

Space Shuttle Game £8.00 Mlcrodeal

Spread Sheet Business £19.95 Gemini

Squirm Arcade £6.90 Aztec

4? nrir nwnpr

Program Type Price Distributors

Star Bingo Game £5.95 R &R

Starfighter Arcade £6.95 Durell

Starship Arcade £6.50 Sector 7

Super Breakout Arcade £4.50 Tansoft

Super FruIt Game £6.95 Quark Data

Super Meteors Arcade £6.95 Softek

Super Trek Game £6.95 Mogul

T-Comp Utility £12.95 Bamby

Terminator Arcade £6.50 Impact

Terror. . Deep Adventure £5.95 Wild Electronics

Tevrog's Kingdom Adventure £9.99 Cable

The Hobblt Adventure £ 14.95 Tansoft M House

The Ultra Arcade £6.95 PSS

Toady Arcade £4.95 Headfield

Toolkit Utility £9.95 Superior

Toolkit Utility £895 IMS

Treasure House Game £6.99 Prog. Factory

Two Gun Turtle Arcade £6.95 Lothlorien

Ultima Zone Arcade £8.50 Tansoft

Vanquisher Game £6.50 Elephant

Vanety Pack 25 Game £5.95 QED

Video Challenge Game £6.95 QED

Warlord Strategy £6.95 Lothlonen

Waydor Adventure £7.50 IMS

Word Processor Business £17.25 JUniper

Word power Education £9.95 Sulis

World Geography Educational £7.95 Superior

Xenon-] Arcade £8.50 lJK

Zodiac Adventure £9.99 Tansoft

Zodiac Adventure £6.90 .A& F Software

Zorgons Revenge Arcade £8.50 lJK

Backgammon Game £7.95 Dormere

Orical Invaders Arcade £5.95 Dormere

Oricald Utility £11.95 Micrograf

MARC. Arcade £6.95 PSS

SPRECHEN SIEDEUTSCH?No, but this English/German quiz from David White ofMalvern, Worcestershire, may help you.

The letters a,o,u and b are poked at the beginning togive the German letters with umlaut accents. Use theseletters in your answers.

Oric will print phrases and you'll have to supply thetranslation. The dictionary can easily be expanded withthe help of a German phrase book. Remember toincrease N in line la if you extend the dictionary.

5 REM ** NUMBER OF WORD PAIRS**10 N=1215 REM** POKE~,o,u,b **20 FORI=lT04:READA:GOSUB260:NEXTI50 DATA46856,34,28,34,34,62,34,34,060 DATA46968,34,28,34,34,34,34,28,070 DATA47016,34,0,34,34,34,34,30,080 DATA46864,20,26,18,22, 18, 17,30,3290 DIME$CN):DIMD$CN)100 FORI = 1TON: READE$CI) : READD$CI ) : NEXTI165 REM ** RANDOM SELECTION **170 K=INTCRND(1)*N+1)180 J=INTCRND(1)+.5)190 IFJ=0THEN230195 REM

**PRINTING ENGLISH **

200 PRINTE$CK):INPUTA$210 IFA$=D$CKHHENPRINT"DAS 1ST RICHTIG

2 "ELSEPRINT"NEIN2 "+D$CK)220 GOT0170225 REM** PRINTING GERMAN**230 PRINTD$CK) :INPUTA$240 I FA$=E$C K HHENPR I NT" CORRECT 2 "ELSEPR

INT"N02 "+E$CK)250 GOT0170255 REM ** CHARACTER POKE ROUTINE **260 FORJ=ATOA+/:READD:POKEJ,D:NEXTJ:RET

URN300 DATA THE HOUSE,DAS HAUS,THE DOG,DERHUND,I SEE, ICH SEHE,HELLO,GUTEN TAG310 DATA GOODBYE,AUF WIEDERSEHEN,TO SLE

EP,SCHLAFEN,OH,ACH SO320 DATA MERRY CHRISTMAS,FROLICHE WEINA

CHTEN, I DON'T KNOW,ICH WEISS NICHT330 DATA OUER NINETY,UBER NEUNEIG,UGLY,

HAESSLICH,ANGRY,BOESE

SOUND DEMOHere's a short program from David Peat thatdemonstrates the sound capabilities of the Oric. PressingS stops the noise. Is it music, we ask?

10 CLS:PAPER4:INK7:PRINTCHR$(6)20 REPEAT30 :SOUND INT(RND(1)*4)+1,INT(RND(1)*700

)+10,040 :PLAY7,7,INT(RND(1)*7)+1,INT(RND(1)*500)+50:WAITRND(1)*10050 UNTILFALSEORKEY$="S":PLAY0,0,0,060 END

REMEMBER THENUMBERSome of us are better at remembering numbers thanothers. This Quickie from Mr Wood of Cheadle,Cheshire, tests that out.

It displays a seven digit number for a brief time andthen prompts you to enter what you thought the numberwas. Changing the WAIT time in line 100 will change thedisplay time.

10 CLS20 PRINT30 PRINT"REMEMBER THE NUMBER"40 WAIT10050 CLS60 TARG=INT(RND(l)*9999999)+170 IFTARG<1000000THEN6080 PRINT:PRINT:PRINT:PRINT90 PRINTTARG100 WAIT150110 CLS120 PRINT:PRINT:PRINT:PRINT130 PRINT"WHAT IS THE NUMBER?"140 PRINT150 INPUTTRY160 PRINT170 IFTRY=TARGTHENPRINT"CORRECT"180 IFTRY<>TARGTHENPRINT"WRONG"190 PRINT200 PRINT"ANOTHER TRY (Y/N)?"210 INPUTAN$220 PRINT230 IFAN$="y"THEN30240 IFAN$="N"THENEND

DRUMPRACTICE

While your Oric may not be a Buddy Rich or Ringo Starrthis short program from J. A. McNamara of Wigan willdemonstrate the drum machine potential of the Oric. Putthe sound through an amplifier and you'll be surprised athow good it is.

°REM***DRUMS BY J.A.Mr.NAMARA***

1O PRINTCHR$(6)2O GOT01503O MUSIC1,1,1,0:PLAY1,0,1,8040 WAITRND(1)*100+505O RETURN6O MUSIC2,2,2,0:PLAY0,2,1,2007O WAITRND(1)*2080 RETURN90 MUSIC3,6,6,0:PLAY4,0,1,60100 WAITRND(1)*20:GOSUB6011O RETURN12O MUSIC1,3,3,0:PLAY1,0,1,8013O WAITRND(1)*50:GOSUB6014O RETURN15O A=RND(1)*4+1.516O ON AGOSUB 3O,6O,8O,12O17O GOT0150

ELLIPSESAn ellipse is a regular oval. This Quickie from twelveyear old Martin Williams of Newmarket will draw out fiverandom ellipses on the HIRES screen.

To give more ellipses, change the 5 in line 15. Tomake the ellipses smoother, use numbers higher than200 in line 3O. Remember that the more steps there are,the longer the program will take to execute.

1 REM COPYRIGHT M.WILLIAMS10 HIRES15 FORP=1T0520 A=INT(RND(1)*50):B=INT(RND(1)*50)30 FORT=1T020040 CURSET120+COS(T)*B,100+SIN(T)*A,150 NEXTTfiG! NF.X'T'P

SONG FORCHILDREN

10 REM *** SONG FOR CHILDREN ***2O FORN=lT0503O READK,T,W40 W=W*1.45O MUSIC1,K,T,06O PLAY1,0,1,500070 WAITW8O NEXTN90 RESTORE:WAIT300:GOT020100 DATA 2,1O,12,3,3,37,3,2,12,3,3,37,3,5,1211O DATA 3,6,37,3,5,12,3,3,37,3,2,12,3,3,5012O DATA 3,3,5O,3,3,8713O DATA 2,10,12,3,3,37,3,2,12,3,3,37,3,5,12 i14O DATA 3,6,37,3,5,12,3,3,37,3,2,:

,12,3,3,501150 DATA 3,3,50,3,3,87160 DATA 3,6,12,3,5,37,3,4,12,3,5,37,3,6,1217O DATA 3,8,50,3,5,37,3,5,12,3,6,37,3,5,1218O DATA 3,6,37,3,1O,12,4,3,50,3,1O,37,3,10,12190 DATA 3,11,37,3,10,12,3,8,37,3,6,12,3,5,37200 DATA 3,3,12,3,2,37,3,,12,3,3,50,3,3,50210 DATA 3,3 ,87 MartinHagstrl1Jffi

UNION JACI{The Oric-l is made in Britain. here's a short programfrom K. J. Diver that results in a full colour display of theUnion Jack, using the graphics mode.

The programs works by the simple expedient ofCURSET and FILL commands. It starts off slowly butfinishes with a flourish and doesn't take long to run.Ther's a repeat option at the end too. Now, do any of ouroverseas readers have listings that will print out the flagsof other countries?

5 REM ***UNION JACK***10 PAPER0:INK7:HIRES:PRINTCHR$(17

)

20 A=20:B=1:C=48:D=232:E=1:F=45:GOSUB100030 A=150:B=-5:C=42:D=228:E=-1:F=-

45:X=0:Y=0:Z=0:GOSUB100040 CURSET222,20,0:FILL131,3,6450 CURSET12,28,0:FILLl12,1,460 CURSET135,20,0:FILL41,1,470 CURSET135,110,0:FILL41,1,480 CURSET105,20,0:FILL131,1,190 CURSETlll,20,1:FILL130,4,127100 CURSET18,71,1:FILL29,34,127110 CURSET12,71,0:FILL29,1,1120 CURSET0,0,0:FILL170,1,23200 INPUT"FLY THE FLAG AGAIN (Y/N

) "; A$210 IFA$="y"THENRUN220 IFA$="N"THENTEXT:GOT0230225 GO'r0200230 PAPER7:INK0:END1000 REPEAT1010 CURSET0,A+Y,0:FILL1,1,41020 CURSET6,A+Y,1:DRAWB+X,0,11030 CURSET12+X,A+Y,0:FILL1,1,11040 CURSET18+X,A+Y,1:DRAW18,0,1

I 1050 CURSETC+X,A+Y,0:FILL1,1,4I 1060 CURSETC+X+6,A+Y,1:DRAW138-2*X,0,11070 CURSET198+Z,A+Y,0:FILL1,1,11080 CURSET204+Z,A+Y,1:DRAW18,0,1

1090 CURSETD~X,A+Y,0:FILL1,1,41100 CURSETD-X+6,A+Y,1:DRAW1+X,0,

11110 X=X+l.5:Y=Y+E:Z=Z-1.51120 UNTILY=F1130 RETURN

BLACKBOARDMartin Walker is a teacher and uses this Quickie todisplay characters double height when they are enteredat the keyboard.

---------

10 REM *** BLACKBOARD ***20 PRINTCHR$(20)30 CLS40 POKE618,1050 FORI=0T02660 PLOT1,I,1070 NEXT I

80 K=l90 J=2100 GETA$110 A=ASC(A$)120 IFA<320RA>126THEN180130 PLOTJ,K,A140 PLOTJ,K+l,A150 J=J+l160 IFJ=39THEN90170 GOT0100180IFA=3THEN270190 IFA=13THEN250200 IFA=27THEN30210 IFA=127ANDJ>2THENJ=J-l220 PLOTJ,K,32230 PLOTJ,K+l,32240 GOT0100250 K=K+4260 IFK<26THEN100263 GOT030270 PRINTCHR$(4);CHR$(20)280 POKE618,3290 CLS300 END

and forthl,ROLLROLL is standard in Forth-79.Executing 'n ROLL' will rotatEthe n'th number down thestack to the top of the stack.So, nln2n3n4nS becomes

n2n3n4nSnl

'3 ROLL' is the same asROT and '2 ROLL' equates toSWAP

ROLL pushes the n-ltopmost entries on the Data

Stack (DS) to the Return Stack(RS). All <R and R< items inthe listing are stored as withina loop, the loop limits areabove RS. At this stage, thetarget nth number is on top ofDS. All the numbers on RSare then pulled back to DS,one by one, and swappedwith the nth number. If n = 1,ROLL has no effect.

: ROLL DUP 1 = IF DROP ELSE DUP 1 DO SWAP R> R> R01>R >R >R LOOP 1 DO R> R> R> ROT. ROT >R >RSWAP LOOP THEN;

ARRAYARRAY defines arrays of anydimension, and uses ROLL.You can define as many arrayfields as you wish.

To build a one field array,FRED, with five integer cells,enter 5 1 ARRAY FRED.

To dimension a two fieldarray of four by ten elementcells, called MICK, enter 4 102 ARRAY MICK

The general from for an Ndimensional array of tl by t2by...tN cells, is tlt2...tN NARRAY NAME

Executing 2 FRED returnsthe address of element 2 inthe array FRED. Executing 2 6MICK puts the address ofelement 2,6 on top of thestack.

You'll note that the range ofelement numbers includes

°as the first element. So, FREDelements are indexed by0,1,2,3.4, and MICK by 0-3,0-9.

Note too that no rangechecks are carried out. Enteran element that doesn't exist.such 7 FRED, - 1 FRED or 210 MICK and you run the riskof reading or writing in thedefinitions of other words.

ARRAY works like this. The> BUILDS part stores N in thenext free cell, loops N times,storing the number (t) in thenext free cell and multiplies itby the others. The finalproduct is then multiplied by

two to give the number ofbytes needed for the arraydata. This number is thenALLOTed. The memory map(Diag. 1) shows what ishappening.

The DOES part is a littlemore complicated. An entry'XIX2X3...XN NAME' should getthe address (AD2) of elementnumber XIX2X3...XNpushed tothe top of DS. The addressADO, containing N, is pushedto the top of DS when DOESis executed. The offset (OFl)from here to the first address(ADl), containing data, is2*(N+ 1) bytes.

If n= 1 then the offset (OF2)from ADl to AD2 is Xl' If N=2then OF2 equals XI + X2*tl,and if n=3, the OF2 equalsXI+tl(X2+t2*X3)' The generalformula for OF2 is OF2 = XI +tl (X2+t2 *(... (XN-l +tN-I *XN)".))

The offsets have beenmeasured in integer cells. Toget the byte offset. justmultiply by two.

So, AD2 = ADO + 2*(OFl+ OF2).

DOES thus gets N frommemory and checks if N= 1. Ifso, OFl=4 (bytes) andOF2=2*xI (bytes). Therefore,AD2=ADO+4+2*xI bytes. IfNI, OFl=2*(N+l). OF2 iscalculated from the OF2general formula, starting fromthe innermost parenthesis.

The program loops n-l

times, each time multiplyingthe result by the next t andadding the next x. This result

is multiplied by 2 to give thebyte offset, and this total isadded to both OFl and ADO.

: ARRAY <BUILDS 1 SWAP DUP , 0 SWAP DO I 1+ ROLLDUP , * - 1 + LOOP 2 * ALLOT DOES> DUP @ DUP 1 = IFDROP 4 + SWAP ELSE 1 SWAP DO DUP I 1 - 2

* + @

ROT*

ROT + SWAP -1 +LOOP DUP @ 1+ ROT + THEN2*+;

Memory MapADDRESS CONTENTS COMMENTS

AD0 N This address ISpushed on slack whenI, 'DOES' is executed12

The conlent of Ihe address above hereare not amended when Ihe arrayonce IS defmed.

INAD! (0,0,..,0.0)

Dala parI.(1,0,...,0,0)

(t1-1,0,..,0,0)(0,1,0,.,0,0)

AD2 (Xl,X2,...,XN) Address of elemenl no. (X1X2,...,XN)

(tj-l,t,-I,...,IN-l)

Memory map - the parenlheses mark thal the conlenl of Ihe celllS an element ofthe array. Note Ihat each line m the map is one mteger cell or two bytes.

CLACLA, CLear Array, is used toclear any array. It uses theERASE function, and the formis 'CLA NAME'. There is noneed to enter the arraydimensions. CLA consists oftwo words.

(CLA) assumes that thePFA of the array to becleared is at the top of the mIt multiplies all the ts in a 1001=that is executed N times. Thisnumber is then multiplied bytwo to give the number ofbytes of memory that are tobe ERASEd.

The start address used byERASE is given byADO+2*(N+ 1) The addresson the stack when.-FIND is

executed is two bytes lowerthan ADO, as the first cell ofthe PFA points to the DOES>part of ARRAY. That's whythere is a 2+ at the start of(CLA)

CLA tries to find the array.If not found, an error messageis displayed and the routineQUITs. If the array is found, acheck is made to see if thecomputer is in the compilatioror execution state.

If executioning, (CLA) iscalled. Otherwise, PFA iscompiled as a literal and(CLA) called. Thus you canuse CLA both directly fromthe keyboard and withinanother word definition.

: (CLA) 1 SWAP 2+ DUP @ 0 DO DUP 11+ 2 * + @ ROTSWAP LOOP DUP @ 2 * + 2+ SWAP 2 * ERASE;

: CLA -FIND IF DROP STATE @ IF [COMPILE] LITERALCOMPILE (CLA) ELSE (CLA) THEN ELSE 0 MESSAGE SPIQUIT THEN; IMMEDlA TE

APPEND/RENUMBER

Ever wished that your collection of useful BASICroutines you got from magazines and suchlike couldbe rationalised into one single me? And how aboutthe times that .you wished that you could tagprograms together instead of retyping something thatyou had done some months before?

With this machine code utility for the 48K modelyou could do precisely that; and as a bonus, youcan also use it to renumber programs with a fust linenumber and increment of your choosing. Three errorand two OK messages are also provided so that anyprograms which fail to 'park' or append would not beaccidentally overwritten or NEWed.

Loading the source codeIdeally, a purpose-made assembler or monitor should beused, but if one is not available, then the BASICLoader/mini-monitor provided should do. If you are usingan assembler, then substitute all RTS instructions withBRKand replace them when each routine has beentested and found to be satisfactory. The zero-pagelocations used are 70H to 7FH and the description ofbreakpoint values are given in the listing. Use a shortBASIC program to do this; you will be able to recognizethe end of the program by a series of three zero bytes.

Using the BASIC Loader/mini-monitorEnter the Loader and simply RUN the lines you require.The input parameter will only accept hex values in theform of a string input; do not include '#' or spaces. Stopentry by entering'S' in response to the prompt.

Test each routine by RUNning 100. Enter the addressto execute in response to the prompt and the routine willbe executed, displaying zero-page locations 70H to 7FHon RTS. Enter'S' to quit; any other key will prompt youfor another address to execute.

RUN 200 to examine the contents of memory. It willdump eight locations at a time and wait for a key pressbefore displaying the next. Pressing'S' will stop theroutine.

CSAVE the completed program with:CSAVE "APPEND", A#B200, E#B443, AUTO

I suggest that you use the Slow mode, but this depends

on your faith! To Load the program from tape, simplyenter:

CLOAD "APPEND"

Usage instructionsBefore entering or Loading any BASIC programs, youwill need to load APPEND first. Then enter NEW andCLEAR or you will find that the computer will insist ondisplaying the "?OUT OF MEMORY" message. APPENDwill not be affected. If the program does not auto-start onloading, enter CALL # B200 to bring up the installedmessage and to ensure that APPEND is in memory.

To park a BASIC program, enter:CALL # B420

You should then get the "OK- IN MEMORY"message.Programs larger than 6.5K will generate a "?SIZEERROR" and will not be parked. You should not attemptto enter HIRES at any time as this will erase APPENDand any parked programs.To append the program, enter:

CALL # B430Note that you cannot recall a parked program into'empty' memory; at least one BASIC line must be presenl- i.e. it must be LISTable. After all, the object is toappend a program! You may append a parked programas many times as you like as long as the combinedprograms do not exceed 37.75K in which case the"?APPEND SIZE ERROR" message will be generated.Both programs however will still be intact but will not becombined.

Line renumberingAPPEND will renumber all lines of the appendedprogram using the last line number of the program itappended to as base reference. The original incrementsare kept; so for example if the last line numbered 4000and the parked program had 10 as its first line, then thefirst line of the appended portion will be numbered 40I0If renumbering exceeds 65535 (FFFFH) the APPEND wilattempt to renumber the entire program in increments 0110 starting with 10. If this still produces a line numbergreater than 65535, then the message "?RENUMBERERROR" is displayed and the program will need to berenumbered 'manually'.

'Manual' renumberingEnter:DOKE #74, with the first line number of your choice.DOKE #76, with the increment.CALL #B319Note that only the line numbers are renumbered,APPEND will not check for GOTO branches.

I can let any reader who has difficulty in entering thesource code have a copy of the program on cassette at£4.00 each and would be pleased to try and assistanyone if they send an SAE to:David Yan, 16 Durban Road, Smethwick, Warley, WestMidlands B66 3SQ

Onc Owner 47

8200: 4C EA 83 JMP $83EA

Find end of BASIC program

#70: LSB Last line#71: MSB position#72: LSB End of program#73: MSB position

8203: A9 01 LOA #$018205: 85 70 STA $70

Renumber from appended portion

#70: LSB Last line position#71: MSB#72 LSB Current line pos.#73: MSB#74: Constant=last line no.#75: MSB Constant#76: LSB Increment#77: MSB

8207: A9 05 LOA #$058209: 85 71 STA $718208: A0 01 LOY #$018200: 81 70 LOA ($70),1820F: 99 72 00 STA $0072,18212: 88 DEI8213: ~0 F8 8EQ $82008215: C8 INY8216: 81 72 LOA ($72),Y8218: F0 0A BEQ $B224821A: A5 72 LOA $72821C: 85 70 STA $70821E: A573 LOA $738220: 85 71 STA $718222: 00 E7 8NE $82088224: C8 1Nl8225: 81 72 LOA ($72),18227: 00 Fl BNE $821A8229: 60 RTS822A: 08 ClO8228: 38 SEC822C: ~5 73 LOA $73822E: E905 SBC #$058230: 48 PHA8231: 38 SEC8232: E9 lA S8C #$lA8234: 80 18 8CS $824E8236: 68 PlA8237: 85 70 STA $70

Check size and load Move values

#78: LSB From#79: MSB#7A: LSB To

#7B: MSB#7C: Remaining no. of bytes#7D: No. of pages to move

8239: A5 72 LOA $728238: 85 7C STA $7C8230: ~9 01 LOA #$01823F: 85 78 STA $788241: A9 05 LOA #$058243: 85 79 STA $798245: A9 01 LOA #$018247: 85 7A STA $7A8249: A998 LOA #$988248: 85 78 STA $788240: 60 RTS824E: 68 PLA824F: 60 RTS8250: AB 70 LOX $70

Block moveon values contained in#78-#7D

8252: F0 10 8EQ $82648254: A000 LOY #$00B256: 81 78 LOA ($78),Y8258: 91 7A STA ($7A),Y825A: 88 DEi8258: 00 F9 8NE $82568250: E679 INC $79825F: E678 INC $788261: CA OEX8262: 00 F0 8NE $82548264: A4 7C LOY $7C8266: 81 78 LOA ($78),Y8268: 91 7A STA ($7A),Y826A: 88 OEY8268: 10 F9 8PL $82668260: F0 F7 8EQ $8266826F: 60 RTS8270: 08 ClO

Check size of new program andload new Move values

#78: LSB From#79: MSB#7A: LSB To#7B: MSB#7D: Remain#7E: Pages

8271: 18 ClC8272: A5 72 LOA $728274: 65 7C ADC $7C8276: A5 73 LOA $738278: 65 70 ADC $70827A: 38 SEC8278: E9 98 S8C #$98

B270: B0 10 BCS $B28FB27F: A901 LOA ~$01B281: 85 78 STA $78B283: A9 98 LOA ~$98B285: 85 79 STA $79B287: A5 72 LOA $728289: 85 7A STA $7A828B: A5 73 LOA $73B280: 85 7B STA $7BB28F: 60 RTS8290: A5 72 LOA $72

Repoint BASIC line pointers#78: LSB Current position#79: MSB being worked on#A: LSB Next position#7B: MSB to be updated#74: Value to substract#75: Value to be subtracted#76: ResuIt=no. of bytes in the line

B292: 85 7A STA $7AB294: A5 73 LOA $73B296: 85 78 STA $7BB298: A9 01 LOA ~$01B29A: 85 74 STA $74B29C: A0 01 LOY ~$01B29E: Bl 7A LOA ($7A),YB2A0: F0 32 8EQ $8204B2A2: A5 7A LOA $7AB2A4: 85 78 STA $78B2A6: A5 78 LOA $78B2A8: 85 79 STA $79B2AA: 88 OEYB2AB: Bl 78 LOA ($78),YB2AO: 85 75 STA $75B2AF: 08 CLOB2B0: 38 SECB2Bl: A5 75 LOA $75B2B3: E5 74 SBC $74B2B5: 85 76 STA $76B2B7: 18 CLC82B8: A5 78 LOA $78828A: 65 76 ADC $76B2BC: 85 7A STA $7AB2BE: AS 79 LOA $79B2C0: 69 00 ADC ~$00B2C2: 85 78 STA $7BB2C4: A5 75 LOA $75B2C6: 85 74 STA $74B2C8: A0 01 LOY ~$01B2CA: B9 7A 00 LOA $007A,YB2CO: 91 78 STA ($78),YB2CF: 88 OEYB200: F0 F8 8EQ $B2CAB202: 30 C8 BMl $B29C

B204: 60 RTSB205: A0 02 LOY ~$02B207: B1 70 LOA ($70),YB209: 85 74 STA $74B20B: C8 1NlB20C: Bl 70 LOA ($70),YB20E: 85 75 STA $75B2E0: A001 LOI ~$01B2E2: Bl 72 LOA ($72),YB2E4: F026 BEQ $830CB2E6: C8 INY82E7: 08 C~OB2E8: 18 C~CB2E9: Bl 72 LOA ($72),YB2EB: 65 74 ADC $74B2EO: 91 72 STA ($72),1B2EF: C8 INYB2F0: B1 72 LOA ($72),YB2F2: 65 75 ADC $75B2F4: 91 72 STA ($72),YB2F6: Be 15 BCS $B300B2F8: EA NOPB2F9: EA NOPB2FA: EA NOP82FB: EA NOPB2FC: A0 01 LOY ~$01B2FE: B1 72 LOA ($72),.B300: 48 PHAB301: 88 OEYB302: F0 FA BEQ $B2FEB304: 68 P~AB305: 85 72 STA $72B307: 68 P~AB308: 85 73 STA $73830A: 90 04 BCC $B2E0B30C: 60 RTSB300: A9 0A LOA ~$0A830F: 85 74 STA $74B311: 85 76 STA $76B313: A9 00 LOA ~$008315: 85 75 STA $758317: 85 77 STA $778319: A9 01 LOA ~$01831B: 85 72 STA $728310: A9 05 LOA ~$05831F: 85 73 STA $738321: A0 01 LO. ~$018323: 81 72 LOA ($72),18325: F0 28 BEQ $B3528327: C8 INY8328: A5 74 LOA $74B32A: 91 72 STA ($72),832C: C8 INYB320: A5 75 LOA $75832F: 91 72 STA ($72),

8331: A0 01 LOY ~$018333: 81 72 LOA ($72),8335: 48 PHA8336: 88 OEY8337: F0 FA 8EQ $83338339: 68 PlA833A: 85 72 STA $72833C: 68 PlA8330: 85 73 STA $73833F : 18 ClC8340: A5 74 LOA $748342: 65 76 ADC $768344: 85 74 STA $74B346: A5 75 LOA $75B348: 65 77 ADC $77834A: 85 75 STA $75834C: 80 06 8CS $8354834E: 90 01 BCC $8321B350: EA NOP8351: EA NOP8352: EA NOP8353: EA NOP8354: 60 RTS8355: 18 ClCB356: A0 00 LOY ~$00

Print message#7E: LSBMessage location#7F: MSB

8358: 81 7E LOA ($7E),Y835A: C9 FF CMP ~$FF835C: F0 06 BEQ $B364835E: 99 80 88 STA $8880,Y8361: C8 INY8362: 00 F4 8NE $B3588364: 60 RTS8365: EA NOP8366 : EA NOP8367: EA NOP8368: EA NOP8369: EA NOPB36A: 41 50 50 45 4E 44

8370: 2F 52 45 4E 55 40 20 60

8378: 44 2E 59 41 4E 20 31 39

8380: 38 34 FF 3F 53 49 5A 45

8388: 20 45 52 52 4F 52 20 20

8390: 20 20 20 20 20 20 20 20

8398: 20 20 20 FF 3F 41 50 50

83A0: 45 4E 44 20 53 49 5A 45

83A8: 20 45 52 52 4F 52 20 20

8380: 20 20 20 20 FF 3F 52 45

838B: 4E 55 40 42 45 52 20 45

83C0: 52 52 4F 52 20 20 20 20

83C8: 20 20 20 20 20 FF 4F 48

8300: 20 20 49 4E 20 40 45 40

8308: 4F 52 59 20 20 20 20 20

83E0: 20 20 20 20 20 20 FF83E7: EA NOP83E8: EA NOPB3E9: EA NOP83EA: A9 6A LOA ~$6AB3EC: 85 7E STA $7E

Message indexllinks to Print Messages

83EE: A9 B3 LOA ~$B3B3F0: 85 7F STA $7F83F2: 20 55 83 JSR $B35583F5: 60 RTSB3F6: A9 83 LOA ~$83B3F8: 85 7E STA $7E83FA: 20 55 83 JSR $835583FO: 60 RTSB3FE: A9 9C LOA ~$9CB400: 85 7E STA $7E8402: 20 55 83 JSR $83558405: 60 RTS8406: A9 85 LOA ~$858408: 85 7E STA $7E840A: 20 55 83 JSR $83558400: 60 RTS840E: A9 CE LOA ~$CE8410: 85 7E STA $7E8412: 20 55 B3 JSR $8355B415: 60 RTSB416: EA NOP

Program driver

8417: EA NOP8418: EA NOPB419: EA NOP841A: EA NOP8418: EA NOP841C: EA NOP8410: EA NOP841E: EA NOP841F: EA NOP8420: 20 03 82 JSR $B2038423: 20 2A B2 JSR $B22A8426: B0 CE BCS $B3F6B428: 20 50 B2 JSR $B250842B: 90 El 8Ce $B40EB420: 4C EA 83 JMP $B3EA8430: 20 03 82 JSR $82038433: 20 70 B2 JSR $B2708436: B0 C6 8CS $83FE8438: 20 50 82 JSR $82508438: 20 90 82 JSR $8290843E: 20 05 82 JSR $82058441: 4C EA 83 JMP $83EA

BLOCK LINE DELETEGetting rid of a chunk ofunwanted program can betedious if you simply type inline numbers and RETURN -particularly if lines arenumbered irregularly. Here'sa simple eight line program totake this drudgery off yourhands.

It is entered in what willhopefully be a free portion ofmemory, starting at line 63325.

63325 X=1281: REM START OF BASIC CHAIN63326 IF DEEK(X+2)<>sss THEN X=DEEK(X) GOTO 6332E63327 Y = DEEK(X)63328 IF DEEK(Y + 2)< >fff THEN PRINT DEEK(Y+ 2),

Y = DEEK(Y): GOTO 6332863329 PRINT INPUT "CONFIRM DELETION (Y/N)"; A$63330 IF A$ = "Y"THEN W = DEEK(X): DOKE X,Y:. GO TO 6333263331 END63332 FOR Z = W TO Y-2: POKE Z,85: NEXT63333 LIST

Atmos owners, with adebugged IF . . .THEN.ELSEcan enter63330 IF A$ = "Y" then W =DEEK(X):DOKE X,Y: ELSEEND and delete 63331.

sss and fff are the markersfor the block to be deleted.When the program is run, allline numbers higher than sssand lower than fffwill bedeleted. You'll have to enterthe relevant line numberswhen typing in the programAlternatively you could insertlines asking for an input,together with checks to venfyentered lines actually exist.

With the program entered,type RUN 63325. You'll beasked if you want confirmationor not, and the block deleted.

If you add any new linesafter the block deletion, thedeleted block will reappearas 28145 UUU UUUUUU... Toclear this, enter 28145 andRETURN.

The Block Line Deleteprogram works very simply.Here's what's happening.63325 Sets X to start of Basic

chain63326 Checks line numbers

for sss63327 Checks line numbers

for block to be deleted

63328 Checks line numbersfor fff, where deletionstops

63329 Checks the range iscorrect

63330 Deletes the specifiedlines by updatingBASIC pointers

63332 Fills deleted block withUs, thus destroyingdeleted lines and theirpointers, so they aren'trediscovered if newlines are added

63333 Lists the final programThis little piece of Oric

wizardry comes from C R.Burnham.

VARIABLES SAVED

David Peat is just 14, but he'ssent us three tips that reallymake us think he's an Oricwhizz kid.

The first comes from hisinterest in l-o-n-g adventureprograms. Even the Oric'smemory isn't big enough tohold them all! So, he's had tostore them on different tapes,and keeping variables andflags stored when loadingdifferent sections of theprogram is a problem WhatDavid does is to POKE all thevariables into an unused partof memory, load the newprogram and then PEEK therrout again. Here's the POKEprogram, for eleven variables

10 FOR N = 0 TO 1020 POKE 1024 + N, A(N)30 NEXT N40 CLOAD(B$)

Variables are poked tolocations from 1024. Increasethe number of loops and you'lbe able to store morevariables.B$ is the name of the nextpart of the program You mus'use brackets around thevariable name. Now, start thesecond program section withthe PEEK program

10 FOR N = 0 TO 1020 LET A(N) =

PEEK(l024 + N)30 NEXT N40 END

If you've saved the newprogram using AUTO, thisfirst section will automaticallyrun and the variables be readin automatically.

TIp number two relates tokey pressed recognitionnumbers. Enter this two liner.

10 PRINT DEEK(783)20 GOTO 10

RUN it and you'll get alisting of five figure numbers,the number depending on thekey pressed. For example:45310 No key pressed48255 Cursor right48319 Cursor down48351 Cursor left48375 Cursor up48375 Space barand so on...So far, interesting only.However DEEK(783) canreally speed up a game, likethis...

POKE 755,X changes thespeed at which the Oric scansthe keys. X = 10 gives a rapidauto repeat and a slowerprogram X = 255 gives aslow auto repeat and a veryfast program However, POKE755,X works only as long asno keyboard input is needed.Use DEEK(783) instead ofKEY$ and you can get a muchfaster games program Usethis method and you will morethan halve the key responsetime in games. Who needsmachine code?

David's third tip is analternative to the CHR$(27)method of changing textcolour. Instead ofCHRS(27)"letter... characters"enter the following, and getthe following effects.

PRINT CHR$(l28) - black textPRINT CHR$(l29) - red textPRINT CHR$(l31) - yellow

textPRINTCHR$(l32) - blue textPRINT CHR$(l33) - magenta

textPRINT CHR$(l34) - cyan textPRINT CHR$(l35) - white

text.

Numbers from 144 to 151 givebackground colours. This tipmay not save time, but itcertainly makes programstidier through getting rid ofattribute letters at the start oftext or strings.

ERROR PEEKA quick way to see all theOric command words anderror messages is to run thisshort program from fifteenyear old M. J. Allen ofBirmingham.

10 PTR = #C0EA20 LAST = #C3CB30 REPEAT40 PRINT CHRS(PEEK(PTR));50 IF PEEK(PTR» 128 THEN

PRINT60 PTR = PTR + I70 UNTIL PTR = LAST

He found an unlistedcommand, EDIT. This acts asLIST but does not print Readybelow the EDITed line andthe cursor comes to rest nextto the EDITed line.

When it comes to speedingup entry of programs, he hasanother little tip for enteringrandom numbers. Entering aline such as

10 A = INT(RND(l)*9)+ Iis tricky. A shorter way to dothe same thing is this".

10 A% = RND(l)*10The variable A% can behandled faster by the Oric,but should always beaddressed as A%, not A

Our Birmingham brain hasalso found a way to speed up

some sections of a BASICprogram. Using the command

CALL # E6CA

turns off the interrupts andwill make program sectionsrun about 20% faster.

There are restrictions tothis. Turning off the interruptskills the keyboard, and theonly way to revive it is toreset the computer. Torestore the interrupts, use thecommand

CALL # E804

You'll need to use thisbefore the program ends, orbefore the followingcommands: GET, INPUT,KEY$,STOP and END - i.e.commands needing a key-board output.

You'll also run intoproblems if you try to switchfrom TEXT to HIRES or viceversa with the interrupts off.Don't do this.

CALL # E804 affects bothTEXT and HIRES screens.Locations to the left of theCAPS sign are effected in thetext mode.

So, with careful use, CALL# E6CA could be a valuableaid to sorts, numbercrunching and so on.

KEYBOARDRESETTINGAnyone whO'S cursea at melocation of the reset buttonwill be grateful for this tipfrom Mr Russell of Keighley ir,West Yorkshire. In one line,you can redefine the 1key toact as a reset.

Type in this..

DOKE #2F5, #F430(RETURN)

Now, whenever you needto reset your Oric, press I,RETURN and you'll have aninstantaneous reset. Now whycouldn't the designers havedone something simple likethat?52 Onc Owner

COLOUR CODESAchieving double height

characters is through usingCTRL D or CHR$(4). You canchange the colour of thecharacters of background orforeground with PAPER andINK commands. It can getconfusing. Here's another wayto do that, contributed by MrT. Arnold of Abingdon,Oxfordshire.

It relies on one basicstatement.POKE #26A,67 : DOKE #26B,#X. CLSThe value of X determines theeffect. Here are some Xvalues, and their effect.OIOA Red, double height

characters on blackscreen, until effectcancelled

020A Green characters, asabove

030A Yellow characters, asabove

040A Blue characters, asabove

050A Magenta characters, asabove

060A Cyan characters, asabove

070A White characters, asabove

llOA White, double heightcharacters on redscreen, until cancelled

120A As above, green screen130A As above, yellow

screen

140A As above, blue screen150A As above, magenta

screen160A As above, cyan screen170A As above, white screen

(you won't see a thing!)180A Corrupts screen

display, don't use

Other values give differentresults, so experiment foryourself.

The last X value brings usto Mr Arnold's second tip. Ifyou either corrupt the displayor crash and lock up thekeyboard, try typing CALL555, and RETURN. Usually thescreen will be restored toPAPER 7, INK 0 and cleared,caps and keyclick on It alsoclears all peeks, pokes andredefined characters. In otherwords, it acts as the fiddlyreset button. So, remember,in an emergency, CALL 555.

This short programdemonstrates the above tipsand will let you try them outyourself.

10 INPUT X : REM"20 POKE #26A,67 : DOKE #

26B,X: CLS30 PRINT: PRINT: "ORIC

TEST"40 PRINT: PRINT: PRINT50 IF X = 999 THEN CALL

55560 GOTO 10

Totally dev~ed to you!Oric Owner is the official magazine devoted to the Oric 1 and Atmos home computers.It's crammed full of in-depth information, advance news on the latest add-ons, superb programs and

interviews with the engineers who designed it.The first issue is absolutely free when you buy your

Oric, so why not keep ahead of the latest developmentsand subscribe to further issues. A years subscriptionof 6 issues is now only £7.50 (overseas p.o.a) so postthe coupon today.

Can you imagine life without it?

IBack issues are available for £ 1.20 each. If you missed your first Ilfree issue contact your dealer or Oric Products International who will II

supply you with one.

IfITanSCFT Tansoft Ltd. Units 1 & 2 I~~bridge Techno Pa~ Newmarket Road. Cambridge CB5 8PB

11

I I

(

I i""!,','.," .,

"

I I I I I :,' \ J I,. (" ;') :j'\ 'i 'I:."", ':;",

~,:' ":,.

'"~

".

'II

I I ",I I I ~ I I I I I j I \ I,' 1 I 'I

,. ,1' ,I I"~'" "( '{'.. ,"

:".' ..''',

"

. ..~ . =.

....::

.'. ~

..' ~"..'

I I " I I I/

"

.:..'

:,",:

.:, ", 'f .'..'... ~.. ~ :; ,!

.'. '\'

.. ", . ."XENON-1 " .'

; :' ~'.,

A true legend In computer softw'are: This 'ga~e::topped the ORIC software,charts in :most hi'g/i:': ,street stores during ,,1983, and ,became ,the'overall best selling computer game In FQll'lce for..'the same period,' g!lining rave, reviews ",throughout the press,

. , ,

',

"':,

', .

..

"Uses the ORICS tremendous capabilities: to ":excellent advantage...truly ",ind boggling.:.th.: :,graphics are absolutely s'uperb, very smootb ',:'indeed...1 can thoroughly recommend, this :'program". " ,,'.: '.',;

",' ':",',,',

,'

,- WHAT MICRO, Sellt. 19~3

"This is the ~e'st arcade game' yet. a,!ailabl. for, ' "the ORIC. The graphics and': animation are", ',.superb". .0' ...," '.0:' ,',.. ".:'.',i.

," ':ORIC OWNER; Sept 1983:':As tleetl commander In., the )('~.;o~" .p~~e. ~:',academy, you 'must protect your 'home' planet,Radon fro'm the:Aards, Paratrons an'dtlle ~orgon "ba"le/- !ltarl This 100%' ;"achln'e, code. ga.,,'e'.feature, ,the 'smoothest, mean'est" arcade action, ",

ndl, ,.',"," "',,

,','..

,,' ,

'". 4~~ ORIC:1 ai!d ,C?iUC:~T~OS,:, f:8.~o Inc. ,:. :.. . '°: . . .. .,". ".>:~ .i<.. . ,: ',: ,".... . "

ZORGONS REVENGE

The second in the Xenon trilogy, written bythe same author ,as Xenon-1, and con-tinuing the high standard of excellence.Zorgons Revenge Is well on its way torepeating the success of Xenon-1, and isagain receiving rave reviews.

"This game certainly is the best arcadestyle effort I have yet seen on the ORIC. Thegraphics are superb...the author deservespralse...and I was impressed with the easewith which the game loaded, even thoughthe cassettes contained 'fJlst' versionsonly". - PERSONAL COMPUTER WO~LDGAMES SPECIAL! 19/W"The animation IS smooth and detailed...this will be a solid gold h'lt". - COMPUTERCHOICE, Feb.1984 ,',' ", .

,"Some'of Ute 6est grapl\ics OiIvailable,for theORIC...recommended". ~ PCG HIT,'PERSONAL C9MPUTER GAMES, Feb. 1984 '"Quite the best game I've' seen for theORIC.'..superb' ,raphics".,-DAILY EXPRES10th Dec. 1:983

""

,',.", ,.,,:' , .

'FoIIOW'i~g their defeat at th~ hands of th'e Xenon fleet the ZQrgons hav~ caPt~red th,:Xe-';o,; p"ince~~'Roz, and ha'ri' ":,, imprisoned her,in their castle. You"are commissioned to rescu~ her by scouring- the fou,'cdrners of.the"Zorgon ,

Empire to 'capture the ;.,aglc stones. These stones, guattded.tJy the Quadnogs, 'T'er,rapbds and ma'ny other strange:, .bea.sts, are needed to bridge tbe bottomless chasm surroundl!'l9 the castle, enabling you to a~hleve your goal.- ,:.Each one of the many varied stages In this sclntillatlrig 1oo~ lJiac11I..,e '.~~ mission will tellt vour arcade abili~y as :never before. ' .',:'

; ."",,',"

'. :"

Forthe4~KORIC-1andORICATMOS'1:8.50inc.'. ,',,','

,

"..,

'OTHER TITLES IN THE I;,i< SOFTWARE ORIC RANGE~:;

INVADERSMachine code

arcade game for16K & 48K ORIC-1and ORIC ATMOS

'1:7.50 inc.

FANTASY QUEST,, Intriguing"adve'nture for48K ORIC.1

and ORIC ATMOS'1:8.50'lnc. "

REVERSESuperb version of

the board gamefor 48K ORIC.1

and ORtC ATMOS.

1:8.50 Inc.

CANDYFLOSS &HANGMAN

Two topeducationalprograms for

48KORIC.1 andORIC ATMOS

1:7.50 Inc.

3D MAZE & '

,

, BREAKOUT,

Arcade action for48K ORIC.1 and

ORIC ATMOS1:7.50 Inc.