home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Archive Magazine 1997
/
ARCHIVE_97.iso
/
text
/
hints
/
vol_01
/
issue_07
< prev
next >
Wrap
Text File
|
1995-02-16
|
18KB
|
485 lines
Å GETfile and PUTfile on the MS-DOS emulator are difficult to use if
you only have a single drive. However, if you configure a RAM disc with
MS-DOS you can then copy MS-DOS files onto it and then form the ADFS
files on the physical drive and vice versa to take ADFS files in to the
MS-DOS file system.
1.7
Å Programs that work under the PC-emulator. Iæve had lots of informa
tion about MS-DOS software that does work, but has anyone found any
software that does NOT work under the PC-emulator?
1.7
Å With version 1.09 of the PC emulator, if you do the following╔
1.7
*LOAD PC.Emulate 10000
1.7
?&137C8=0
1.7
*SAVE PC.Emulate2 10000
1.7
you will find that the memory isnæt cleared when you press the reset
button.
1.7
Å One good book to help new MS-DOSæers (sorry!) is öQuick Reference
Guide to MS-DOSò by Van Wolverton, published by Microsoft Press,
obtainable via Watford Electronics at ú3.95. (ISBN 1-55615-025-3)
1.7
Å From various reports, it seems that CHKDSK does work properly though
it has to be used with care. It can be used to repair the File Allo
cation Table (FAT) and repair errors in directories. Files are not
necessarily stored contiguously on an MS-DOS disc, so if part of a file
is lost then CHKDSK can be used to convert lost chains to files (i.e.
write to a disc directory). Generally, CHKDSK by itself is safe. CHKDSK
*.* /V is usually safe, but CHKDSK *.* /F is dangerous if you donæt know
what you are doing!
1.7
Å One reader says he has solved the problem of öTo linefeed or not to
linefeedɕ by adding a single pole switch in parallel with the contact
on the printer dip-switch that sets the auto-linefeed on and off,
leaving the dip-switch in the open position, of course. Donæt forget
though that most printers only look at the dip-switch settings at power-
up, though some do so when you do a software reset with 27,64.
1.7
Å With Arc-Writer, to get it not to double space on a Panasonic
printer, use the AW_PCedit program, select the RX80D and change the
number of steps per 100 units vertically from 21600 to 600.
1.7
Å View 3 works under the emulator if you poke locations A8A1, A8A2 and
A8A3 with &EA.
1.7
Å Acornsoft ISO Pascal, Comal, Prolog and LISP all work under the
emulator says one reader.
1.7
Å Share Analyser (Synergy Software) works perfectly under the 6502
emulator.
1.7
Å Four floppies on 1.2 OS. If you try *con. floppies 4, you will find
that it tells you the number is too big, but if you use *FX162,135,4 and
do a <ctrl-break>, you will finds that *STATUS tells you that you have
four floppies.
1.7
Å Booting other drives. In contrast with the BBC micros, you can, on
Archimedes, *MOUNT 1 and then <shift-break> to boot the disc in drive 1.
1.7
Å WIMP Manager. Be aware that the first time Wimp_poll is called, it
clears the screen.
1.7
Å Fitting the backplane: It is an awkward job to fit the backplane
because two plastic spacers are used into which self-tapping screws have
to be inserted. This is best done in a vice to avoid stripping screw
heads and/or sticking screwdrivers through your fingers!
1.7
Å ÉUnknown IRQ at &00000000æ. If you get this error message (and
possibly find that the machine hangs up on you) check whether your RS423
lead is properly screened, if at all. If it is not screened, it seems to
be able to pick up interference (remember the micro-wave problems
mentioned in issue 5, page 8?) and this generates spurious interrupts.
1.7
Å More ideas on the black art of RS423 communication! Here is one
readeræs recipe for succesful RS423 transfer, though it may not work for
everyone╔ Try using the Éfixæ module (Archive 1.6 program disc) with
pins 1,4,8 and 9 linked together and 6 (DSR) and 7 (RTS) as the control
lines.
1.7
Å Running more than one BASIC program. If you have a BASIC program you
want to run while you are working on another program in memory, you can
program a couple of keys with:
1.7
*KEY 4 P%=PAGE : PAGE=&30000
1.7
: CHAIN ötestprogò|M
1.7
*KEY 5 PAGE=P% : OLD|M
1.7
Å System Delta Plus: If you have trouble loading newly formed
databases and get öNo Roomò when you know there is plenty of room, add a
.D to the filename when loading, i.e. type in the filename as, say,
öRECORDS.Dò.
1.7
Å Inter-Word: If you have come from the desktop, you will find that
the tab key does not work. This can be corrected with *FX219,9.
1.7
If you want the ú sign, you will find it is produced by the ` key (far
top left key).
1.7
If you want the ` sign╔ tough! (The ú sign duplicates the öinsert rulerò
function!)
1.7
Å Stuck in a black hole? If you find yourself typing in black on
black, try typing MODE MODE<return>. It allows you to type again, but
maintains the mode you were in.
1.7
Å SystemDevs module. The redirection commands, some of which we said
didnæt seem to work, are sensitive to spacing. The correct forms are as
follows where the spaces are represented by bullets (Å):
1.7
*CATÅ{Å>ÅinfoÅ }
1.7
Spools catalogue to file öinfoò
1.7
*CATÅ{Å>>ÅinfoÅ }
1.7
Adds catalogue to file öinfoò
1.7
*BASICÅ{Å<ÅdataÅ }ÅPROG
1.7
Runs öPROGò and uses information in file ödataò for input.
1.7
Å Using the Acorn ROM Podule: No links are available for the RAM
sockets, although you can configure the sockets by software for 8k, 32k
or 128k RAM chips. Using HM6264LP-15 ram in the sockets and configuring
them as 8k does not immediately work. However if you configure them as
32k chip and apply an offset of &2000 when loading i.e.:
1.7
*RMLoad <podule number>
1.7
<socket> <filename> 2000
1.7
then your data will load correctly. This is because the Chip Select (CS)
on the 8k chips is on the pin Address 13 (pin 26) on the 32k and 128k.
This causes the 8k chip to be mapped into 8-16k and 24-32k hence the
offset of 8k. The inverted CS on pin 20 is common to all three devices.
(Without configuring them as 32k, the operating system reports that the
device is not big enough for an 8k offset.)
1.7
Å Concerning Acornsoft C and TWIN: ÉConcurrencyæ (keeping text in one
window and compiling a program in the other) does not work. The compiler
(v1.5A) has a bug in it that prevents it from working. Acorn said that
it used to work OK on the pre-release version! However, compiler output
can be sent to a file called tmp.temp if the -spool option is used.
1.7
It may be necessary to relocate TWIN in order to compile programs. My
version of TWIN loaded at &60000 but needed to be relocated to &80000 to
allow the compiler enough space. (See below.) If the compiler crashes,
try increasing the SystemSize using *configure.
1.7
The two compiler messages, ÉFatal I/O erroræ and ÉBinary output erroræ,
simply mean that your disc is full!
1.7
Å More about TWIN. Twin is an editor which seems to have one or two
hidden features; firstly it is a relocatable program, and consequently
can be loaded anywhere where RAM exists (barring overwriting OS
workspace etc.). I have created a version which I call LoTwin which
loads at &10000; this leaves space for BASIC programs only 256 bytes
fewer than are available on a BBC Master using Shadow RAM, and yet it
allows me considerably more work space than the standard Twin.
1.7
To create a version of Twin called ÉMYTWINæ which loads and runs other
than at the Énormalæ address, perform the following actions:
1.7
*DIR <diræry_containing _Twin>
1.7
*LOAD TWIN <new_load_address>
1.7
*EX
1.7
*SAVE MYTWIN <new_load_
1.7
address> +<size>
1.7
<size> is obtained from the 3rd column of hex data after the É*EXæ.
1.7
Then, to invoke the new version, type
1.7
*MYTWIN
1.7
and it will run. Pressing <shift-f5> followed by <T> after entering
MYTWIN will show the load address on the top line immediately to the
left of the time.I have yet to see mentioned in print the Éwarm startæ
for TWIN. If something nasty happens and your Archimedes locks up just
as you have spent a couple of hours typing in something using TWIN, and
you have no option but to press <ctrl-break>, or even <ctrl-reset>, do
not despair, simply type:
1.7
*GO <twin_start_address> -WARM
1.7
and you will find yourself back in TWIN exactly as you were when the
Énastyæ happened, barring any corruption caused by the Énastyæ. Donæt
forget the É-æ preceding the öWARMæ! I have found myself in this
position after a momentary power cut, and although the warm start did
not restore TWIN as a fully functional editor (due to corruption), it
restored Twinæs ability to save text, so I saved what I had done, and
was then able to reload Twin, and then reload my text.
1.7
Å Iso Pascal: Be warned before you buy Iso Pascal, it has NO support
for Arthur Ö otherwise, says one reader, it is an excellent implementa
tion. Also (in common with C) it comes with a very thin manual, so a
copy of TWIN and a book about the language (see the mini-review on page
25) will be needed for most people.
1.7
(More information about other languages was sent in, but this was all I
could digest with my limited knowledge of languages other than BASIC.
Would anyone be prepared to receive all the öother languagesò informa
tion and knock it up into a special section each month?)
1.7
Using the Computer Concepts ROM Podule
1.7
How many times have you had to press <ctrl-break> and muttered under
your breath because youæve lost your function key definitions? That need
never happen again if you have Computer Conceptsæs ROM podule with some
battery-backed RAM on it. All you do is configure the system to start up
in the RFS instead of the ADFS and also configure it to auto-boot. Then
in the RFS, you put a boot file something like:
1.7
REM > RFS:!BOOT
1.7
*SET Run$Path ,ADFS:$.,RFS:$.%.
1.7
*ADFS
1.7
*FX255,8
1.7
PRINT öAcorn ADFSòÉ
1.7
*KEY 0 These are
1.7
*KEY 1 my favourite
1.7
*KEY 2 key definitions
1.7
*SET ALIAS$> Cat
1.7
*SET ALIAS$? HELP etc
1.7
*BASIC
1.7
(You will notice that the Run$Path uses É$æ instead of É%æ as stated on
page 28 of the Computer Concepts manual.)
1.7
Å To get the Inter series software to boot up with a simple call such
as *ISHEET, copy 65Arthur into the RAM area using *COPY
ADFS:Modules.65Arthur RFS:65Arthur and, providing you have set up the
Run$Path as above, *ISHEET, *IWORD and *ICHART will automatically load
the emulator and then the appropriate software.
1.7
Å Installing Wordwise Plus. If you copy the Archimedes version of
Wordwise Plus from Computer Conceptsæs disc (filename öWW+ò) into the
RFS calling it, say, WWIMAGE, you can modify the BASIC program öISHEETò
and save it as öWW+ò so that, as above, you can just type *WW+ and it
will auto-load the emulator and run the software. The modifications are
to change the references to öISIMAGEò at lines 130 and 270 into
öWWIMAGEò.
1.7
Å If you want to modify any of the programs in a ROM, all you do is
either LOAD it, edit it and SAVE it or, if you have the modified version
on disc, just *COPY it. If you tell it to SAVE a file with a name that
exists in ROM it gives the ram version precedence over the ROM version.
1.7
To find out whether a particular file is in ROM or RAM, use the *INFO
<filename> command. If it comes up with a ö*ò before the final figure of
the information, the file is in the RAM area. To get the ROM version
back, you either have to do a <ctrl-break> or type *RMREINIT RFS
<return> because *delete filename removes all trace of it so that even
the ROM version is inaccessible.
1.7
Thanks to Adrian Look for all the following hints and tips.
1.7
Å X-SWIæs. When using SWIæs if you put an X before the name then the
SYS call from BASIC will not generate an error. For example:
1.7
SYS öXOS_CLIò,block
1.7
Å Modes & drawing speed. The VIDC receives the video data down the
data bus lines of the ARM processor. While this is happening the RISC
chip cannot perform any processing. This means that the screen modes
using higher memory will be slower. Try timing a FOR-NEXT loop of
1,000,000! So, if speed is of the essence, it may be better to go into
mode 0, do the calculations and save them in an array and then go into
mode whatever to plot the results.
1.7
However, there is a compensating factor. The lower memory modes use one
byte to represent several pixels, thus addressing pixels requires extra
calculation Ö whereas the higher memory modes use only one byte to
represent a pixel so addressing pixels is much quicker. This means that
graphics will be quicker in higher modes.
1.7
Mode F/N loop Draw Mem. Colours
1.7
(secs) (secs) (k)
1.7
0 14.9 51 20 2
1.7
1 14.9 38 20 4
1.7
2 15.6 34 40 16
1.7
3 15.6 Ö 40 Text
1.7
4 14.9 38 20 2
1.7
5 14.9 32 20 4
1.7
6 14.9 Ö 20 Text
1.7
7 15.6 Ö 80 T-Text
1.7
8 15.6 54 40 4
1.7
9 15.6 40 40 16
1.7
10 17.1 39 80 256
1.7
11 15.6 Ö 40 Text
1.7
12 17.1 61 80 16
1.7
13 17.1 45 80 256
1.7
14 17.1 Ö 80 Text
1.7
15 21.3 79 160 256
1.7
16 19.6 Ö 132 Text
1.7
17 19.5 Ö 132 Text
1.7
18 15.4 70 40 2
1.7
19 16.9 77 80 4
1.7
20 21.0 98 160 16
1.7
Å OS_Pretty Print. Have you ever wondered how the operating system
manages to display all its messages without any of the words getting
split at the end of a screen line, no matter what mode it is in? Well,
the answer is ÉOS_ PrettyPrintæ.
1.7
If you print all your strings using this call it will stop any words
going over the end-of-line boundary. This call recognises the following
control characters in a special way:
1.7
Ö CR (CHR$(13)) causes not just a carriage return but also a newline.
1.7
Ö TAB (CHR$(9)) causes a tabulation to the next multiple of eight
columns.
1.7
Ö CHR$(31) is a Épad characteræ, that is, the procedure will print a
space when this code occurs but it will not break the string up at this
point.
1.7
Example:
1.7
A$=öHello my name is...ò
1.7
SYS öOS_PrettyPrintò,A$
1.7
Å The QUICK option When you use the (Q)uick option in the *COPY and
*BACKUP commands, the OS will use all available memory. This means that
if you are in high memory screen modes then you will have less memory to
use. So if you want even quicker *COPYing or *BACKUPs then try it in a
mode which uses less memory.
1.7
Å Run$Path and File$Path. The FileSwitch uses two system variables
called Run$Path and File$Path. You can see their values by typing
either:
1.7
*SHOW File$Path <return> and/or
1.7
*SHOW Run$Path <return>
1.7
You will probably get the following results:
1.7
File$Path : type String, value :
1.7
Run$Path : type String, value : ,%.
1.7
These are the default settings. The values stored in the File$Path and
Run$Path variables are actually a list of directory filenames separated
by commas and terminated with dots.
1.7
When the FileSwitch is told to read a file it will look at File$Path
variable and search for the file in each of the directories listed until
it finds a match. Similarly the FileSwitch will do the same when it is
told to execute a file, only it will use the Run$Path variable as the
list of directories. For example:
1.7
*SET File$Path RFS:%.,,%.
1.7
This would cause the FileSwitch to search for the file first in the RFS
filing systemæs library directory, then in the current filing systemæs
current directory (hence the ö,,ò which means donæt add anything to the
filename as entered), and finally in the current filing systemæs library
directory.
1.7
Here is a list of all the possible directory prefixes (although you can
actually specify any directory by name Ö wildcards may be used):
1.7
* Ö all
1.7
$ Ö root
1.7
& Ö user
1.7
@ Ö current
1.7
^ Ö parent
1.7
% Ö library
1.7
} Ö previous
1.7
Å Flushing the Mouse. You may have noticed that the mouse has a buffer
of its own. This means that the Arc stores all the mouse movements and
clicks just as it stores the keyboard entries. How many of you play
around with the mouse when a program is Éthinkingæ or waiting for a
screen to load? This will leave a whole load of mouse positions and
clicks in the buffer, so any subsequent MOUSE X,Y,B readings will not
reflect the true position of the mouse but the positions stored in the
buffer!!! So how do you clear the buffer? To flush all the buffers,
type:
1.7
*FX 15 <return>
1.7
to flush just the mouse buffer, type:
1.7
*FX 21,9 <return>
1.7
Å Local DATA statements. (Based on an idea sent in by C.R.Fitch) In
answer to the query last month, it is possible to have DATA statements
in a program that does not rely on line numbers. What you can do is to
use the error handler to pin-point a line number just before the local
data statements. For every data set you want to access, just use the
following format:
1.7
DEFPROCdata_set
1.7
LOCAL ERROR
1.7
ON ERROR LOCAL RESTORE ERL
1.7
IF ERL=0 THEN ERROR 1,öget line
1.7
numberö
1.7
RESTORE ERROR
1.7
DATA 1,2,3,4,5 : REM put your
1.7
own data here
1.7
ENDPROC
1.7
Then if you want to use the data set, just call the procedure, as for
example:
1.7
PROCdata_set
1.7
FOR i=1 TO 5
1.7
READ data:PRINT data
1.7
NEXT i
1.7
The procedure leaves everything exactly as it was (except the data
pointer) so it does not affect the program at all. The only snag is that
we donæt know where the old data pointer was so we canæt continue
reading data from where we left off! Any ideas??
1.7
(The remaining information in this section is about using the MS-DOS
emulator. More information than this was sent in, but this was all I
could digest with my limited knowledge of MS-DOS. Would anyone be
prepared to receive all such information and knock it up into a special
MS-DOS section each month?)
1.7
1.7