I've had a Personal Computer News brainwave!

You all know the feeling: after hours, days or even weeks spent on a particular problem you suddenly see the answer. Or, on one of those late-night expeditions through the memory map you find some undiscovered feature. Well, don't keep it to yourself - send it here. We pay £5 for every tip and routine printed and £25 for a genuine Megawave.

Plenty Of Sound On Oric And Atmos

Following the tip in issue 74 by Bjorn M. Ursford, referring to the routine at location #FA6C and its use of 14 bytes of data to generate sound, I have written the following program.

There are literally thousands of in-built sounds within the Oric 1/Atmos in addition to PING, SHOOT, EXPLODE and ZAP. Locations #C000 to #FFFF contain the Operating System, i.e. 16,383 bytes which contain data. Anybody wishing to create unusual sounds can search through the ROM until they find a block of 14 bytes which generates the most suitable sound.

As stated in Bjorn Ursford's Microwave, you must first load the index X and Y with the high and low byte start address of the block of 14. The following program will sequence through the 16K locations, generating the unique sound associated with each block. The user can stop the program by pressing 'S'. Pressing and holding the spacebar will increase the speed of the program.

When the program stops, the 14 bytes of data associated with the last sound will be displayed. These can be used to replace the Ursfords program. Using !RETURN will generate the required sound.

 10 FOR I=#400TO#407
 20 READD:POKEI,D:NEXT
 30 DOKE#2F5,#400                      :REM INITIALISE ! CHARACTER
 40 DATA#A2,#0,#A0,#0,#20,#6C,#FA,#60  :REM SUB-ROUTINE
 50 FORI=#C000TO#FFFF-14               :REM STEP THROUGH ROM
 55 X=I-(INT(I/256)+256)
 60 POKE#401,X:POKE#403,INT(1/256)     :REM POKE ADDRESS FOR INDEX 'X' & 'Y'
 70 PRINTI,HEX$(I)                     :REM PRINT LOCATION ON SCREEN
 80 :                                  :REM CALL ROUTINE
 90 IFPEEK(250)=132THEN120             :REM FASTER IF SPACE BAR
100 WAIT100
110 IFKEY$="S"THENJ=I:I=#FFFF-14       :REM DIVERT IS KEY 'S' PRESSED
120 NEXT                       
130 FORI=0TOD*13                       :REM)
140 PRINTI,PEEK(I)                     :REM) PRINT DATA IN BLOCK OF 14
150 NEXT                               :REM)
160 WAIT100

Mark Williams, Ashton-in-Makerfield, Wigan