home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Archive Magazine 1995
/
ARCHIVE95.iso
/
text
/
hints
/
volume_04
/
issue_01
next >
Wrap
Text File
|
1995-02-16
|
8KB
|
188 lines
Å 160k ADFS discs for the Archimedes? If you have upgraded to the
Archimedes from a Master, or even a Beeb with ADFS, you might have some
5.25ö discs you want to transfer. According to the manuals, the
Archimedes will only read and write to 640k (L) format, Arthur 800k (D)
format, or the RISC-OS 800k (E) format using either 3.5ò or 5.25ö discs
(80T). However, the Master could read and write 40T 160k (S) format,
80T 320k (M) format, or 80T 640k (L) format discs. I discovered by
accident that the Archimedes will quite happily read 5.25ò 160k (S)
discs in 40T mode, and in fact save them Ö I have not been able to try
out 320k discs since I do not have any. You cannot, however, format
discs at either 160k or 320k on the Archimedes but then why would you
want to anyway? Chris Hughes (Wakefield BBC Micro User Group).
4.01
Å Apocalypse Tips Ö Progressing from planet to planet is really simple.
At the start of the game, a map of your selected planet is displayed.
All the objects on the planetæs surface are represented by coloured
dots, about 80% of which must be destroyed for your craft to be
withdrawn and for you to be allocated another planet.
4.01
As you progress through the game and return to the ÉGuild of Spacingsæ
you will be given various add-ons for your ship. These include a super-
cooler for your laser-canon and better shielding. It is vital that you
have these if you intend to progress at a reasonable pace, so it is
advisable to get them as soon as possible. Remember, you can only
return a maximum of five times before being rejected by the Guild. When
you have destroyed your 80% or so, you will automatically be withdrawn
by the Guild Ö this may take some time so donæt give up too quickly!
4.01
If you prefer rather more action and less running away, the following
lines of the BASIC file É!Apocalyps.Apocalypseæ can be changed.
4.01
Line 290 is your starting score.
4.01
Replace line 330 with: 330 !shieldcharge=16 :
!rapidturnF=1:!guntempcooler=0
4.01
Now delete lines 340 to 380 inclusive for all the extra features and
(very) strong shields.
4.01
Replace line 770 with: UNTIL 0 for infinite lives. At line 1970
!impcounter is the number of objects you have shot, which determines how
many you have to go before advancing to the next planet. For instant
withdrawal, replace 1970 with: 1970 !impcounter=10000.
4.01
Line 6910 is how many times you can return to the guild before rejection
(this is normally 5).
4.01
Å HFORM v1.72 bug or feature? If you try to format an ST506 hard disc
that has had a different profile (e.g. it was used on a PC beforehand)
with the Acorn HFORM program supplied on the RISC-OS Supplement Disc,
the new disc shape option will not be acknowledged and so the full
capacity of the drive may not be realised. This can be overcome by
removing the line that reads:
4.01
2130 IF cyl%=0 IF head%=0 IF Formatted% GOTO 2180
4.01
Brian Oliver.
4.01
Å Hostages cheat mode Ö If you hold down the <R>, <U>, <T> and <H> keys
once the title screen has loaded and press <return>, you will enter into
the cheat mode. This allows you to jump to either section two or three
of the game with three hostages and seven terrorists.
4.01
Å RAM discs for the PC Emulator Ö It is possible to create a hard disc
partition in any filing system. For example, by altering the !PC.!Run2
file so that the path for Drive D is ÉRAM:$.RamDiscæ and using the FDISK
program to create a RAMFS hard disc partition, you can obtain any size
RAM disc you require _ memory and pages sizes permitting. Michael Ben-
Gershon.
4.01
Å Reading a system variable from BASIC Ö The question was, öIæve got a
system variable being set in the !Run obey file:
4.01
Set MaxNumberOfFonts 32
4.01
and I want to be able to read this value into a BASIC variable but when
I use:
4.01
value% = VAL (ö<MaxNumberOfFonts>ò)
4.01
it produces the error ÉVariable not foundæ, because it takes the É<æ
character as meaning Éless thanæ rather than Éstart of system variableæ.
Using the BASIC keyword EVAL has the same effect.
4.01
The first thing we need to do is to extract the value of the system
variable into a string that we can manipulate. After searching through
the PRM volume II, I eventually found OS_ReadVarVal (SWI&23) on page
750. On entry, R0 points to the name of the system variable to be read,
R1 points to a suitable buffer to store the string in, R2 is the maximum
length of this buffer, R3 is set to 0 to use the first occurance of the
named system variable, and R4 is set to 3 so that an expanded string is
returned in the buffer.
4.01
On exit, we should now have the value of the system variable in the form
of a string. The next task is to convert this string into an integer,
and this is easily performed by using OS_ReadUnsigned (SWI &21) on page
585. On entry, R0 is set to 0 so that the base number used is assumed
to be 10 unless the string indicates otherwise, R1 is the pointer to the
string (note that this is the same as R1 for OS_ReadVarVal, which is
preserved on exit). On exit R2 contains the value of the system
variable as an integer, using only two SWI calls.
4.01
This is easily implemented in both BASIC and ARM assembler.
4.01
In BASIC this can be achieved with 4 instructions:
4.01
MaxBufferLength = 16
4.01
DIM BufferPtr MaxBufferLength
4.01
SYS öOS_ReadVarValò, öMaxNumberOfFontsò, BufferPtr,
MaxBufferLength,0,3
4.01
SYS öOS_ReadUnsignedò,0,BufferPtr TO ,,value%
4.01
and if you want to do in Arm assembler, then only eight instructions are
necessary:
4.01
...
4.01
ADR R0, SystemVariablePtr ; point to system variable
4.01
ADR R1, BufferPtr; point to buffer
4.01
MOV R2, #MaxBufferLength ; length of buffer
4.01
MOV R3, #0 ; use first one found
4.01
MOV R4, #3 ; expand fully
4.01
SWI XOS_ReadVarVal ; R1 preserved
4.01
MOV R0, #0 ; use default base
4.01
SWI XOS_ReadUnsigned ; R2 = value%
4.01
SystemVariablePTr = öMaxNumberOfFontsò, 0 ; note no É<æ or É>æ are
used
4.01
ALIGN
4.01
MaxBufferLength * 16
4.01
BufferPtr % MaxBufferLength ; reserve MaxBufferLength
4.01
ALIGN ; bytes of workspace
4.01
To give a quick example of its use. ÉSetMaxNumberOfFonts 16æ gives
value% = 16. ÉSetMaxNumberOfFonts &20 gives value% = 32.
4.01
This may be of use to programmers, as it allows constants to be set up
in the !Run obey file and users can modify them to fit their require
ments, without having to modify the program itself. John ÉLoftyæ
Wallace.
4.01
Å System Variables for the Filer Module (Archive 3.11 p7) Ö The problem
with the Filer module not allowing you to include system variables can
be solved a lot easier (and without taking up any valuable RMA space).
4.01
I like to use icons for the directories which contain the third party
applications, demos, utilities, etc. This meant using an application
directory and I wanted a general purpose !Run obey file to open the
directory viewer (using Filer_OpenDir). However, I came across the same
problem as Simon Callan. The solution I present here was passed on to
me by Paul Fellows (who wrote ÉArchimedes Basic Compileræ amongst other
things) and so I donæt wish to take the credit for such a neat idea.
4.01
So that I donæt have the !Run, !Sprites, etc with the actual programs I
want to view, I create a directory É_æ inside that application directory
to hold them. Thus my !Run obey file reads as follows:
4.01
|!Run obey file
4.01
|
4.01
IconSprites <Obey$Dir>.!Sprites
4.01
Set Alias$OpenDir Filer_OpenDir <Obey$Dir>._
4.01
OpenDir
4.01
Setting a command string as an ÉAliasæ will expand any system variables
within that command string. This gets around the problem which Simon
describes, and also means that you donæt need to run a program every
time you switch the machine on. John ÉLoftyæ Wallace.
4.01