Index


RISC World

FasterPC

Dave Lawrence

!FasterPC

Welcome to !FasterPC for Acorn Computers running RISC OS. The !FasterPC package contains the following:

  • !FasterPC application
  • DOS Partition containing DOS and and FasterPC support/utility files
  • This User Guide The User Guide does not attempt to teach you the intricacies of the MS or DR Disc Operating Systems. These programs have been around in one form or another since 1980 when the original IBM PC was released and are complex. There have been many hundreds of books published covering introductions to the subject (some are listed in the bibliography section later in this guide), and the reader is advised to find one of these in his or her local library or computer bookshop if further help is required.

Requirements to use the !FasterPC Emulator In order to be able to use the !FasterPC emulator, the following system is required:

  • An Acorn ARM based computer running RISC OS 2 or higher
  • 2 Mb or more of RAM
  • MS DOS, DR DOS or FreeDOS*
  • A hard disc is optional but very useful If you do not already have MS or DR DOS, see the section later in this chapter 'Obtaining DOS'.

* The RISCWorld version of FasterPC comes with FreeDOS, this is a free clone of DOS, however it may not run all the programs that can run under a real version of DOS. If you would like a real version of MS DOS 3.3 and the printed manuals then contact APDL on 0208 778 2659. The DOS discs and manual cost only 8 including carriage.

Another software PC Emulator?

When I first saw Acorn's PC Emulator, I think it was version 1.33, I was impressed to see a machine with quite a bit of hardware support being emulated by another computer. Simple computers that perform almost all their support functions in software, mainly because of cost, are much easier to emulate. What is more, Acorn's emulator seemed to be running at a reasonable speed. This version only supported the CGA display, and although sometimes painfully slow, it was quite usable.

As Acorn's product was enhanced and EGA and then VGA display emulations were added, the speed of the raw 80188 CPU emulation remained quite respectable but the video display slowed right down to the point where I felt that the 256 colour, 320 x 200 pixel VGA mode was unusable even with software that did not require fast screen updates. Granted, as future ARM processors are released, the speed would improve, but most users want to see their software running acceptably now, not in the future, and I felt that the graphics speed could be significantly improved along with several other features.

My reasons for thinking in this way were based on some past experience. Amongst my previous projects I wrote the Speculator, a Sinclair Spectrum emulator for the Archimedes. [Please note that this application was never released. It is NOT Public Domain NOR Shareware, as the copyright to the Spectrum ROM image does not belong to the author. If you have a copy, I suggest that you destroy it.] The Spectrum was a simple computer with almost no hardware support. That meant that once you had correctly emulated the Z80 CPU, very little else was required in order to get a fully functional Spectrum emulation other than the Spectrum ROM image. That project lasted on and off for about two and a half years and so I felt that I had some idea of the potential problem areas that would turn up in designing and implementing another emulation.

The reason for wanting an IBM PC emulator is that there is a lot of good quality PC/DOS software on the market, and as the PC has been around for such a long time, the older titles are now being heavily discounted. It is these older titles that will work best with !FasterPC or !PCem as they were designed to run on the early slower Intel processors which the Archimedes software emulators can rival in terms of speed.

In September 1991 I found myself on holiday in Tunisia, under a palm umbrella, a cold drink in one hand and "The 8086/8088 Primer", written by one of the designers of the 8086, in the other. In two weeks the initial design of the largest subsystem, CPU, was completed. By February 1992 the MS-DOS prompt was visible, and less than a month later, the emulator was running if somewhat haltingly. Over the next three years further features were added, and the application has now reached its final version other than releases to fix reported faults.

!FasterPC's Advantages

The design of !FasterPC is a compromise. From the start I was after an emulation that was to be fast, and that meant that I was willing to restrict the design in certain areas. The primary restriction for speed was that the PC memory map was to be linear. To allow this, there has to be more than 1 Mb of RAM allocated to !FasterPC to allow it to run, and this obviously prevents it from running on machines with 1 Mb of RAM or less. Another drawback of the linear PC memory map is that most EGA and VGA video modes using paged bit planes are not available under the !FasterPC emulator. Acorn's emulator allows EGA and VGA paged video modes and is slower, !FasterPC does not allow paged video modes and is faster. The main advantages of !FasterPC over version 1.86 of Acorn's PC Emulator !PCem are as follows:

  • much faster graphics handling
  • much more accurate sound implementation
  • support for some Tandy video modes
  • on-line configuration modifications allowed

Acorn !PCem's Advantages

The main advantages of Acorn's PC Emulator over !FasterPC are as follows:

  • almost all EGA and VGA screen modes fully supported
  • comes with MS-DOS, albeit only version 3.2 or 3.3 or DR-DOS
  • multitasks within RISC OS, but this makes it even slower
  • built in emulation of a numeric co-processor Obtaining DOS If you do not have MS-DOS or DR-DOS then A.P.D.L., the Archimedes Public Domain Library, is able to supply MS or DR-DOS at very reasonable prices. The address is on the inside back cover. An alternative (but more expensive) method is to look in one of the current issues of IBM PC magazines, PC Format for example, and purchase a copy from one of the advertisers there. Currently MS-DOS 3.2, 3.3, 5.0, 6.0 and 6.2 and DR-DOS 6.0 have all been tested with !FasterPC and have been found to work successfully.

Hard Disc Installation

Installing !FasterPC onto a hard disc is merely a matter of copying the !FasterPC application and the DOS partition from the RISCWorld software directory disc to the desired hard disc directory.

The !FasterPC application is now installed on your hard disc. If you now run the application, you will emulate an IBM PC clone with only a floppy disc. In order to be able to access PC hard disc partitions, both newly created and those created by Acorn's !PCem, see the chapter 'Configuring !FasterPC'.

Making Backups

As a purchaser of the !FasterPC application, you are entitled to make as many backups of the application and DOS partition as you wish, provided that the backups are only for your own personal use.

SparkFS

As an aside, rather than buying SuperStor or Stacker for !FasterPC in order to increase the amount of PC data that you can cram into your PC hard disc partitions, why don't you consider buying David Pilling's excellent !SparkFS and create your PC partitions in an archive. It is much cheaper than the PC only products (£23 against about £99), and many other uses can be found for it outside the PC environment, for instance creating compressed clip and line art libraries, or storing scanned or digitised images. !FasterPC handles PC hard disc partitions like any other FS file, so using !SparkFS causes no problems. I haven"t actually tried Acorn's !PCem using !SparkFS in this way, but it will probably work in a similar fashion.

Use SparkFS to create a new archive file on your hard disc. Create your hard disc partitions, using the configuration utility as normal, but specify the file to be in the SparkFS archive. Click on the create icon for the new partition and it will be created in the archive. Run !FasterPC as usual and you will be using the compressed file as your hard disc partition. The main effects of this, other than the reduced disc space used, is that starting and exiting !FasterPC will take longer than usual as SparkFS has to process the archive to open and close it. If the archive is small, I think that SparkFS keeps an expanded copy of it in memory (if there is room) and so processing speed during normal operation is almost unchanged. Exiting !FasterPC causes SparkFS to compress the complete partition and write it to the hard disc. If the partition is larger than the available free memory then SparkFS must only hold a subset of the complete partition in memory.

Note that if you do have hard disc partitions in SparkFS archives then SparkFS must be running before you enter !FasterPC or the application will not be able to access the partition file.

!FasterPC Help

The !FasterPC help utility provides brief on-line instructions on the use of the configuration utility and a description of and potential solutions to each of !FasterPC's error reports.

Starting the Help Utility

To start the help utility open the directory viewer containing the !FasterPC application and click on the !FasterPC icon with the mouse menu button, follow the right arrow from the App. '!FasterPC' entry with the mouse pointer and then select the Help option on the submenu displayed. Once started, the utility will open its only window but will not install itself on the icon bar.

Quitting the Help Utility

To quit the help utility, click on the close window icon on the window's title bar.

!FasterPC Configuration

The !FasterPC configuration utility allows the user to define and create the number and size of PC hard disc partitions to be used with the application. It also allows the configuration of the number and type of available floppy disc drives and the presence and amount of expanded memory available to the emulator. !FasterPC was designed to take up the minimum amount of RAM whilst running to allow its use with as many other applications as possible and the configuration and help features of the emulator have been separated from the main application. The reason for this is that the !FasterPC !RunImage has been written in assembler for both speed and compactness. The shared C library and RISC OS libraries added too much of a memory overhead to allow their use to be considered. In addition, the configuration utility, having lots of writable icons, would have been very fiddly to write in pure assembler without a library of RISC OS WIMP routines. For these reasons, the configuration utility has been written in Basic but is only memory resident when you request it. In order to maintain a seamless interface with the main application, the configuration utility does not install itself on the icon bar, but only exists as a window on the desktop. When you have finished with it, close its window and the utility terminates.

Starting the Configuration Utility

To start the configuration utility open the !FasterPC icon bar menu and select the 'Config...' option. Once started, the utility will open its only window but will not install itself on the icon bar.

The Configuration Utility Window

The configuration utility window, shown above, has deliberately been designed to appear similar to !PCem's configuration window for the convenience of users of both applications. The number after the 'Hard disc drive files:' heading indicates how many of the drive files listed in the boxes below it will be included in the configuration file. To increase and decrease the number of hard disc drive files, click on the number with the select or adjust button respectively. The allowable range is from 0 to 4.

Each row in the dark grey box below the number of hard disc drive files refers to a PC hard disc partition. To include an existing partition in the configuration, either type its full path name into the central wide icon or drag its icon from a filer directory window into the central icon. The icon will immediately change to display the full path name of the file that you have dropped and the following icon will display the file's size in megabytes (1024k bytes). Note that the file type of the file that you drag and drop in this way must be DOSDisc (&FC8). Other file types will be rejected and an error message displayed.

To create a new disc partition, you must type the full path and file name of the partition file into one of the central wide white icons. Once this is done, you have to set the desired size of the file by clicking on the white icon next to the path name that you have just entered and typing the required file size, in megabytes. This then defines the file's location and size. Clicking on the create icon to the left of the partition file name will cause the configuration utility to actually create the file. Note that an error will be reported and the file will not be created if a file of the same path and name already exists, or if the current directory structure does not match your requested location, or if the utility is unable to access the disc or directory that you have specified, or if there is insufficient disc space left to hold your file.

The disc partitions created by the configuration utility are ready for partitioning and formatting using the standard MS DOS utilities FDISK.EXE and FORMAT.COM. Note: if you create drive C: and then re-boot !FasterPC without a system floppy disc in the drive, the emulator will try to boot itself from the newly created and empty partition and this will usually result in the 'Illegal opcode detected' message.

Click on the number after 'Floppy disc drives:' with the select or adjust button to increase or decrease the floppy drives visible to !FasterPC. The range is limited by the hardware present in your machine, and, as RISC OS does not know about drive types, select either the 3.5" or 5.25" option for each configured drive.

!FasterPC now supports PC expanded memory, EMS, complying with the LIM 3.2 standard and the next section of the configuration window deals with this. To use expanded memory, select LIM EMS and either choose the maximum available option, or the size option and enter the required amount of memory, in kilobytes, in the writable box. If the requested amount of memory is not available when the emulator is next re-booted, a warning is issued allowing the user to continue with the amount available or to abort the boot. See the next chapter for how to install the expanded memory driver in DOS.

Once the configuration window is set up to your satisfaction, clicking on the save icon causes the configuration utility to check your settings, to see if you have asked for more drives than you have defined paths/files for. If everything appears to be correct, the configuration utility performs three actions:

  • saves your settings in the file 'Drives' in !FasterPC's Resources directory
  • obeys the file 'Drives', setting the system variables to their new values
  • sends a message to !FasterPC, telling it that the configuration has changed

Clicking on the set icon causes the system variables to be set and sends a message to !FasterPC, as above, but does not modify the Drives file. This allows the user to temporarily modify the selected configuration.

Quitting the Configuration Utility

To quit the configuration utility, click on the close window icon on the window's title bar.

!FasterPC's Floppy Drive

Note: to convince MS DOS 3.21 that your floppy disc drive is 720Kb and not 360Kb, add the following line to the CONFIG.SYS file on your bootable partition or system disc.

     DRIVPARM = /D:0 /F:2

Starting !FasterPC

Before you start !FasterPC, you should first install and configure the application as described in the previous two chapters of this guide. This will ensure that the emulator has access to your MS DOS hard disc partitions if you have any, and also that you know how to access the Help information should you require it.

  • Double-click on the !FasterPC icon in the directory display. This loads the application onto the icon bar.
  • Click on the !FasterPC icon on the icon bar with the mouse Select button. This causes the application to start and take over the computer. The screen will clear and display the PC screen.
  • If you have no bootable PC hard disc partitions configured then you will have to insert an MS DOS system disc into the floppy drive and press the space bar at this point. When the PC has finished booting it will display a prompt (usually 'A>' unless you have changed it). Note that if you have no AUTOEXEC.BAT file present in the top or root directory of the system floppy disc, then DOS will ask you to set the system date and time before displaying the above prompt.
  • If you have a configured bootable PC hard disc partition, then when the PC has finished booting, it will display a prompt (usually 'C>' or 'D>' unless you have changed it). Note: if you have no AUTOEXEC.BAT file present in the top or root directory of hard disc partition C, then DOS will ask you to set the system date and time before displaying the above prompt.

Note: If you have a non-DOS floppy disc in the disc drive when you boot !FasterPC, it is possible that the first sector of that disc may be read into memory and !FasterPC will try to run it. This will almost invariably cause the emulator to exit with the 'Illegal or unsupported opcode detected' error. The solution is to remove the floppy disc and reboot !FasterPC by following the instructions given in this section again.

Exiting the PC Environment

To exit the PC environment and return to RISC OS:

Press the mouse Menu button whilst holding down the left hand Alt key. This causes !FasterPC to stop emulating a PC and returns to the Desktop. Any applications that were running in RISC OS before you entered DOS will still be running with their associated data when you return.

Using FPCQuit

Run the FPCQUIT.COM utility supplied on the !FasterPC support disc. This causes !FasterPC to stop the emulation and returns to the Desktop. Any applications that were running in RISC OS before you entered DOS will still be running with their associated data when you return. This command can also be used in batch files to cause the emulator to return to RISC OS at the end of a particular task. See the chapter 'The Support Disc' for more details.

In order to leave the PC in a state where re-entry is possible, the above quit mechanisms indicate that an exit is required and then wait for the emulator to reach a 'clean' state. This waiting period should be in the order of a thousandth of a second. It is possible that a crashed PC program might never get into this clean state and so would never exit. To cater for this infrequent occurrence, an additional exit mechanism, the 'forced' exit, has been implemented. This is actioned by holding down both Alt keys and pressing the mouse Menu button. The emulator will exit immediately, irrespective of its internal state, and therefore re-entry is not possible without re-booting the PC. This feature should only be used if the normal method fails to exit.

Restarting !FasterPC

To re-enter the PC environment causing a DOS re-boot:

Click on the icon bar icon using the mouse Select button. As you will cause !FasterPC to re-boot, if you have already booted the PC, you will be asked for confirmation before this action is performed.

To re-enter the PC environment where you previously left it:

Click on the icon bar icon with the mouse Adjust button. If you have not previously booted the PC environment, an error will be reported here. The PC environment will be re-entered at the point that you left it. Any applications that were running at the time will still be present along with any data associated with them. If !FasterPC last returned to the RISC OS Desktop with an error or via a 'forced' exit (see above), then re-entry will not be available. See below for information about changing !FasterPC's configuration before trying to re-enter the PC environment.

Configuration Changes

The !FasterPC icon bar menu options can be changed at any time that the emulator is paused and the RISC OS desktop is displayed. The CPU type and sound volume/enable settings come into force the next time that !FasterPC is started, whether by re-entry or re-boot (mouse Select or Adjust). The video adaptor settings are also applied at this point with the difference that if !FasterPC was previously in a video mode that has just been disabled and the emulator is re-entered rather than re-booted, then that video mode will still be in use, although changing to that mode again will result in !FasterPC reporting the error 'Attempt to change to an unsupported video mode detected'. The outcome of this is that you may confuse an application if you disable an 'in-use' adaptor during a run, but the effects should not be too serious.

The configuration utility can also be run at any time that the RISC OS desktop is displayed. This allows the configured hard and floppy discs to be changed during a run of the emulator and also the presence and amount of expanded memory (EMS). If you do change any of the configuration settings, the utility will send a message to !FasterPC informing it of this fact, and in turn, if you try to re-enter !FasterPC, it will warn you that the configuration has changed and ask you whether you want to continue with the old configuration. You are obviously not allowed to re-enter !FasterPC using a changed amount of expanded memory or a newly selected disc configuration as the hard disc files would not be open or positioned correctly and the expanded memory would not be set up. I think that this is an improvement over the 'quit and restart' approach that Acorn has taken.

Installing Device Drivers

Once !FasterPC is configured and DOS is running, the supplied device drivers (mouse and expanded memory) can be installed in the AUTOEXEC.BAT and CONFIG.SYS files, if required. Instructions for performing this are contained in the Utilities section describing the above drivers, in the chapter 'The Support Disc'.

The Icon Bar Menu

The first option on the icon bar menu is the information window. The two important items found in this window are the application version number and user serial number.

The application version number is of vital importance if you find a fault in !FasterPC that you would like investigating. It allows the author to set up the debug version of the application to reflect the version that has generated the fault. This should result in the problem being solved more quickly.

The user serial number is a unique code built into !FasterPC prior to being despatched. It identifies a particular copy of the !FasterPC application with the purchaser, and will allow the author to verify whether upgrades are being issued to purchasers of the application, and also to find the original owner of any illegal copies.

Sound Emulation

The next option on the icon bar menu is sound control. This option leads to the sound submenu shown below. The master control for the sound system is the enable option at the top of the sound submenu. If enable is not ticked then the Archimedes sound system is totally disabled and takes up no cpu or memory cycles. If the enable option is ticked, then the volume of the sound is controlled by which of the four remaining settings is ticked. These four options are mutually exclusive, and one of them is always selected. If the sound system is not enabled, then these options are greyed out and cannot be changed until the sound is re-enabled. Note that the volumes set are relative to your overall system volume.

A brief explanation of the IBM PC's sound facilities is in order here. The basic IBM PC, without any added sound cards, has a loudspeaker controlled by a one bit output port. This means that the speaker either has current flowing through it or it does not, it is not an analogue device as far as the computer is concerned. The PC can drive the speaker in one of two ways.

1The PC can turn the output bit on and off when it wants to. This allows fullest control over the speaker and even allows it to play digitised samples. This requires a lot of CPU time for the processor to continually count the time intervals between samples.

2The PC has a timer chip (an Intel 8253) which can be programmed to produce a square wave of any audio frequency, The PC can then allow this square wave to get to the speaker or not. This does not require any software processing once the timer is set up. The processor can set up the frequency, start the note, go and do something else, and later return to stop the note.

It is this second form of sound emulation that the current !FasterPC provides. Having listened carefully to Acorn's !PCem, I am still not sure which of the above sound mechanisms its seemingly random beeping is trying to emulate. When !FasterPC plays a note using method 2, above, it ensures that the pitch remains correct, independent of the speed of the emulation.

When setting up PC software, choose the 'No external sound capabilities' or 'IBM PC internal speaker' option for the sound configuration. Note that if you have the Tandy video adaptor enabled (see below) then the PC software might automatically select Tandy 3 voice or Tandy DAC sound. If this happens the program will seem to keep pausing whilst it plays the digitised sound, which of course you cannot hear. Battle Chess does this. The solution to restore playing speed is to configure the program to no sound, or choose sound off whilst it is running. This effect also occurs when software drives the PC speaker using method 1 described above. If this effect is annoying, the solution is the same, configure the PC program not to generate sound. Disabling the sound using !FasterPC's sound menu will have no effect in this situation.

Video Modes

The next option on the icon bar menu is the video adaptor control. This option leads to the display submenu, as shown below. The video adaptors and their functions are described more fully in the sections below.

!FasterPC comes with the default CGA video adaptor permanently enabled. This is because the emulated PC always needs an adaptor to get information to the screen for the user to see. The first three entries shown in the display submenu are optional adaptors that you can enable or disable in any combination that you wish. Enabling an adaptor causes both the code that handles the screen updating and also the adaptor presence hardware or software to be enabled. The asterisk alongside the EGA entry is a reminder that none of the EGA adaptors video modes are implemented (see below). The final options in the submenu, Override and 50Hz, are described later in this chapter. The 50Hz option is greyed out unticked if your monitor cannot display low resolution modes and ticked if it cannot display high resolution modes.

Moving right over the VGA entry reveals the VGA Palette submenu. This allows the user to select whether the emulated 256 colour VGA screen will be updated whenever the VGA palette registers are reprogrammed, or only when a block of them have changed. The two entries are mutually exclusive, that is, you cannot have both speed and accuracy selected together. The use of this feature is also described in more detail later in this chapter.

In order to make the best use of !FasterPC, the video options must be set correctly, and this takes a little understanding of the systems that we are attempting to emulate. The following questions are those that were asked most frequently during !FasterPC's development. Together with their answers, they cover the reasons for and use of the options described above.

What are all these IBM Video Adaptors?

Since the IBM PC was released in 1980, the most popular video adaptors available for it have been:

CGA

This is the default graphics system supported by the vast majority of IBM PC's and compatibles. It supports several text and graphics modes. Indeed, almost all text programs use a screen mode (number 3) that is provided by this adaptor or its emulation in more advanced adaptors.

Tandy

This graphics standard was introduced by the Tandy Corporation in a series of its computers that sold well in the U.S.A. It is a sort of enhanced CGA and provides 16 colours with 320x200 pixels.

EGA

This graphics adaptor provided many more screen modes than the previous CGA system. It also provided high resolution screens (640x350 pixels in 16 colours) for the first time.

VGA

This graphics adaptor is essentially an enhanced EGA. It provides more screen modes including, for the first time, a 256 colour mode in low resolution (320x200 pixels). Most modern VGA cards can be programmed to produce exceptionally high resolution screens (1024x768 pixels) in up to 256 or even 32768 colours. These are called 'Super VGA' cards.

Which screen modes are supported by !FasterPC ?

The current version of !FasterPC supports the following video modes supplied by various graphics adaptors.

The CGA adaptor is the adaptor which is present (or emulated by other adaptors) in almost all IBM PC compatibles. For this reason, and as the layout of the screen memory is linear, it is almost completely implemented in !FasterPC.

The EGA adaptor is present or emulated in most IBM PC compatibles these days, so it would be useful if it were included amongst !FasterPC's capabilities. Unfortunately, due to the way that the screen memory is arranged in colour bit planes, this is impossible to emulate with !FasterPC. The main loss is that we cannot provide video mode 13 (EGA), and this mode is used by a significant proportion of PC graphics programs. All is not lost though, as the Tandy adaptor provides amongst its video modes, a linear memory mapped mode equivalent to EGA mode 13 as Tandy mode 9. The Tandy adaptor is present in relatively few PC's in the U.K., but I think that it must have been quite popular in the U.S. as most software packages requiring or supporting EGA mode 13 also provide Tandy mode 9 support. Thus, by implementing Tandy mode 9, we can have most of the benefits of EGA mode 13.

The VGA adaptor supports many screen modes including some that an Archimedes cannot display without a multisync monitor. All of its video modes except one use colour bit plane graphics memory and so are unsuitable for !FasterPC emulation. The remaining mode is VGA mode 19, and this mode is emulated with the restriction that as the current VIDC cannot provide 256 user defined colours, an approximation is made. However, the resulting screen provides a fast, colourful display and is used by a large number of games and graphics programs (688 Attack Sub, Star Trek 25th Anniversary, Civilisation, etc.).

What about all the programs that I cannot run in EGA modes?

Almost all programs will run in several screen modes to cater for the many different PC configurations in use today, so it is usually possible to configure programs to run in other video modes.

As an alternative, a lot of PC software, especially games, also run using Tandy mode 9 (see above). Examples of this are Battle Chess, Populous, SimCity, Leisure Suit Larry, etc. If this is the case, configure the program to use Tandy mode 9 and enable the Tandy adaptor option in the !FasterPC display submenu.

What are the adaptor options in the display submenu for?

The adaptor options in the display submenu are used to enable the code that drives the graphics screens and also provides the adaptor detection hardware or software. Thus by leaving an option off, the software running under the !FasterPC will not be able to detect the adaptor and the emulator will raise an error if the software tries to change to one of the unsupported modes.

Why would I want to disable a graphics adaptor?

As not all of the modes provided by the various graphics adaptors are supporting by !FasterPC, if the PC software detects that a particular adaptor is present (as it had been enabled in the display submenu), then it may try to change to one of these unsupported video modes. The software may support another adaptor (e.g. CGA) but if it thinks that an EGA or VGA adaptor is present, then it will not use the CGA mode. Therefore the option to disable a video adaptor is provided to force adaptor detecting software to use another adaptor.

Why can I enable the EGA adaptor when it is not emulated at all ?

Some PC software (e.g. Fractint V12.1) checks for the presence of video adaptors in an 'increasing complexity' order, i.e. they check for CGA, then EGA, then VGA etc. Thus if you want to use VGA mode 19 (256 colours) with Fractint, you have to enable the EGA as well as the VGA adaptor. If you don't, Fractint reports 'Video mode not available with your adaptor' even with the VGA adaptor enabled.

How do I choose software that is compatible with !FasterPC's video emulations?

Almost all PC software has a label on the outside of the box indicating which video adaptors that it will work with. Look for one or more of the following:

  • VGA 256 colour/MCGA - uses VGA mode 19 emulation
  • Tandy compatible - uses Tandy mode 9 emulation
  • CGA - uses CGA adaptor emulation

Note that there are three 'Tandy' modes supported by the real Tandy adaptor and only one is currently supported by !FasterPC. It is possible that software marked 'Tandy compatible' will use one of the other two Tandy modes, and so will not work with the emulator so check this first if possible.

What does the VGA palette speed or accuracy setting do?

This option only affects !FasterPC when running in VGA mode 19 (256 colours). The Archimedes 256 colour default palette is left unchanged when displaying this screen, and as the PC program sets the various palette colours, !FasterPC chooses the closest Archimedes colour to display. There are two ways to reprogram the PC's VGA palette, via ROM BIOS calls or reprogramming the hardware directly.

The BIOS method is better from our point of view as the software tells the BIOS how many VGA palette registers that it wants to change and !FasterPC can then make one pass over the 64Kb screen.

Directly accessing the VGA hardware to reprogram the VGA palette registers is faster than using the BIOS on a real PC. Not so the emulated PC. Consider the following: if the PC software wants to change all 256 VGA palette registers using the direct hardware method, it performs a loop 256 times, each pass through the loop it reprograms one palette register. !FasterPC detects each write to hardware correctly as a palette reprogramming command but it doesn't know whether this is the last palette register that is going to be modified in this batch. The result of this is that !FasterPC has to scan through the entire 64Kb of screen memory after EACH palette register is modified, causing it to scan 256 x 64Kb = 16Mb in setting all of the palette registers. The BIOS method tells the emulator that all 256 registers are changing and it can then save the screen update until all the registers are reprogrammed, making the update much faster.

In an attempt to improve the screen update response in this situation, the direct hardware VGA palette update code can be configured to run in one of two ways. 'Accuracy' mode causes the whole screen to be updated after each register is modified. This always maintains the colour of the Archimedes screen with the VGA palette registers at the expense of execution speed as described above. The other mode, 'Speed', causes the screen update to occur only after a block of palette registers have been modified. In the current implementation the number of registers in a block is 64. Thus, in the case of all 256 palette registers being updated, a screen update would occur after registers 63, 127, 191 and 255 were reprogrammed. This will obviously result in a huge speed improvement over the 'Accuracy' setting but it does have its disadvantages. If the PC software sets the palette registers in blocks that are not a multiple of 64 or which don't start at 0, 64, 128 or 192, then the Archimedes screen may not reflect the true status of the VGA palette registers. The best way to choose which setting to use is to try both and choose the version you prefer. What does the video display override option do ?

The override option forces the application to carry on after a mode change to an unsupported video mode has been detected. This could be used to allow a program that uses VGA mode 19 as its main display and another unsupported VGA mode as a text display to run, as the unsupported mode would be forced to CGA mode 3 but the application would not detect that the mode change had failed. As with the palette speed/accuracy setting and the EGA enabling feature, this option is present in order to allow you to get the greatest use out of the only partially implemented VGA adaptor.

What is the 50Hz menu option ?

!FasterPC runs with all current Acorn monitor types except the high resolution monochrome screen. In order to achieve this, two sets of screen modes are provided. One set, for standard resolution and some multisync monitors, runs at 50Hz vertical refresh rate and the other set, used for all other monitor types, uses a 60Hz refresh rate. The '50Hz' modes run faster as there is less memory to be modified by the emulator and also less to be passed to VIDC less often. !FasterPC automatically chooses the correct set of video modes for your system and if you can only support one set, the 50Hz option is greyed out. Acorn's and some other multisync monitors can support both sets and so the 50Hz option is available to choose which set will be used. Remember that the 50Hz set will run noticeably faster.

CPU Emulation

The next option on the icon bar menu is the CPU type. With the 80186 option unticked, !FasterPC emulates an Intel 8086 processor, with the 80186 option ticked, it emulates an Intel 80186 processor. The 80186 has several extra instructions compared to the 8086, and also handles shifts of more than 16 bits in a different way. Surprisingly, some programs require an 80186 or higher processor in order to run. I suggest that you leave this option enabled.

Disc Write Enable Feature

The next option on the icon bar menu is the disc write enable feature. !FasterPC allows you to prevent the emulated PC from having write access to the floppy and hard disc partitions, independent from the setting of the floppy write enable tag. When the 'Disc Write' option is unticked, any calls to the BIOS to perform writes to any discs are disabled, although the error code returned to the caller indicates that the disc write has been performed successfully. This feature is useful to guarantee virus protection and also provide protection during program development, when a program running wild could destroy the contents of your hard disc partition.

Divide by Zero Protection

This menu option stops the 8086 divide instruction from causing a divide by zero or overflow interrupt. This is provided in order to get around the problem of the screen refresh being unable match a real IBM PC and thus causing the "R6003 Divide by Zero" error. This problem is very rare and thus this feature should only be enabled when absolutely necessary. The only programs currently known to require this feature are Civilisation and FractInt. When not required, make sure that this entry is unselected as you are tampering with the operation of the 8086/80186 CPU.

Saving it all

The next submenu on the icon bar menu is the save menu which allows the user to either save the current settings in an internal file so that when it restarts, !FasterPC is set up in the configuration that the user prefers, or to save the current PC screen. This latter feature is only available if the application has been started, i.e. if there is a screen to save. The standard RISC OS 'drag and drop' save mechanism is implemented, with the file type (text or sprite) depending on whether a text or graphics screen mode is currently selected. Note that VGA mode 19 screens are saved as 256 colour sprites which are not supported by RISC OS 2.

Starting the Configuration Utility

The configuration utility described in chapter 3 is started by clicking on the 'Config...' icon bar menu entry.

Reset

The reset option causes the current PC session to be abandoned and !FasterPC closes any opened hard disc partitions, allowing them to be accessed from the RISC OS Desktop again. After a 'reset', re-entry to the DOS environment without rebooting is not possible. Acorn's !PCem forces you to quit the application, access the partition and then reload the application before you can continue.

Quitting !FasterPC

Clicking on the 'Quit' option causes the !FasterPC application to quit. It is always good practice to quit all DOS applications and leave the emulator displaying the DOS prompt (e.g. 'C:\') before quitting !FasterPC.

The Support Disc

Supplied with the !FasterPC application are the support disc files. These contains several files, utilities, and demonstration programs. The files are described in detail in the following sections and the disc's structure is shown in the diagram below.

Utilities

Present in the UTILS directory of the support disc are five utility programs, the quit utility, FPCQUIT.COM, the expanded memory driver FPCEMS.SYS, the mouse driver FPCMOUSE.COM, the RAM disc FPCRDISC.SYS, the mouse driver FPCMOUSE.COM, the !FasterPC detection program FPCEXIST.COM and an example of how to use it, EXAMPLE.BAT. It is obviously sensible to copy the utilities from the support disc to your PC hard disc partition if you have one.

Executing the quit utility causes !FasterPC to return to the RISC OS desktop. It can be used in DOS batch (.BAT) files to force the emulator to return to RISC OS without the user having to use the Alt-Mouse Menu button mechanism.

The !FasterPC mouse driver allows the use of the Archimedes mouse with certain IBM PC software programs. In order to be able to use the mouse driver, start !FasterPC and place the support disc containing the FPCMOUSE.COM program into the disc drive and type 'A:\UTILS\FPCMOUSE' at the DOS prompt. This must be done before any programs requiring the mouse are run. If you wish, you can add a line running the mouse driver to your AUTOEXEC.BAT file and this will cause the mouse driver to be loaded each time that your emulated PC boots. Some DOS programs use the mouse hardware directly, not via the mouse driver. Such programs will fail to work with mouse support with the current version of !FasterPC.

The third utility supplied is the !FasterPC expanded memory manager, FPCEMS.SYS. This file, when inserted into the CONFIG.SYS file, allows !FasterPC to access any expanded memory allocated to the application via the settings in the configuration utility. It provides version 3.2 compliant Lotus/Intel/Microsoft Expanded Memory (LIM EMS), which allows up to 8 megabytes of RAM to be paged into a 64K page frame of the emulated PC in 16K pages. !FasterPC's driver uses segment &E000 as the EMS page frame. In order to be able to use this extra memory, DOS programs have to be 'EMS aware', but as the specification was released in 1985, by now most programs that can make good use of this memory know to look for expanded memory when they start up. In order to install the EMS driver when !FasterPC boots, add the following line to your CONFIG.SYS file and copy the driver to your DOS directory. See the '!FasterPC Configuration' section in the 'Configuration' chapter for more details.

     DEVICE=C:\DOS\FPCEMS.SYS

The ramdisc installs using a similar line as above as the first line on your DOS CONFIG.SYS file, but with device FPCRDISC.SYS. When !FasterPC boots, the device driver gets loaded and another hard disc drive of size 128Kb becomes available. The drive letter for this drive follows the last 'real' hard disc partition defined. For example, if you have partitions for drives C: and D:, then the ramdisc will appear as drive E:. If you have no hard disc partitions defined, the ramdisc appears as drive C:.

The ramdisc has been written so that it preserves data across a PC reboot (Ctrl-Alt-Del) but not across a restart caused by clicking on the !FasterPC icon bar icon with the mouse select button when in the desktop.

The FPCEXIST.COM utility sets the DOS error level return code to 0 if it is running under !FasterPC and to 1 if it is not. This can be useful in batch files in order to selectively run different utilities depending on which emulator is running it. For an example, see the batch file EXAMPLE.BAT in the UTILS directory.

Music

Present on the support disc in the MUSIC directory are the files, ANTHEM.BAS, ANTHEM.EXE, BACH.BAS and BACH.EXE. You can run the EXE files from the DOS prompt. They play the British National Anthem and J.S.Bach's Gigue from Partita No. 1. They are present to show the accuracy of !FasterPC when playing musical notes. You might like to run the same files using Acorn's !PCem and listen to the difference. They are written in standard DOS Basic and have not been tweaked or fiddled to make them work any better with !FasterPC. The source files, ANTHEM.BAS and BACH.BAS, are present in the same directory for you to examine if you wish. These source files also run under Microsoft's Quick Basic which is supplied with MS DOS V5.0, so you might like to run and/or modify the programs using that, if you have it. The supplied executable files have been compiled using Borland's Turbo Basic.

Graphics

The two directories CGA and VGA, in the GRAPHICS directory, each hold a program that shows the speed enhancement that !FasterPC offers. The assembler source and executable files are present in both directories for you to examine. The tests involve loading a screen picture in CGA mode 6 (640 x 200 pixels in 2 colours) and VGA mode 19 (320 x 200 pixels in 256 colours) and software scrolling the screen. The programs both end after the screen has scrolled once or when the user presses any key. The speed increases demonstrated when comparing !FasterPC and !PCem running these test programs is about the maximum that can be coaxed out of !FasterPC. The programs both spend all their time manipulating video memory and this is where !FasterPC was designed to be faster than !PCem. Almost all PC programs will spend much, or at least some of their time performing other non-video tasks and during this time !FasterPC will be performing roughly as fast as !PCem. The result of this is that the overall speed improvement falls depending on the ratio of the amount of non-video to video processing that a program requires. The reader is directed to the 'How fast is it?' chapter for further details of !FasterPC's performance.

Errors and Solutions

This chapter gives a comprehensive list of the messages that !FasterPC can generate whilst running along with suggested methods for preventing them from occurring. It also includes the mechanism to be used for reporting faults in !FasterPC to the author for investigation.

!FasterPC Error Reports

'Illegal or unsupported opcode detected'

!FasterPC has tried to execute either non-executable data, an unimplemented 8086 or 80186 instruction or an instruction for an 80286 or higher processor.

If you have not enabled the 80186 option on !FasterPC's icon bar menu then enable it and try your PC program again. If the fault is still present then check the documentation associated with the program and ensure that it should run on an 8086 (IBM PC XT or compatible). If this is the case you could contact me following the guidelines at the end of this chapter for an investigation.

'Attempt to change to an unsupported video mode detected' The PC software that you are running has tried to switch to a video mode that is not supported by !FasterPC in its current configuration. This may be because the software does not check whether the required video adaptor is present before performing the mode change, or because you have an adaptor enabled that is not fully supported (EGA, VGA or Tandy).

Try disabling any optional video adaptors, one at a time, and re-running the PC program to see if the problem has gone away. If this fails, try enabling the video override option (if present) in the display submenu to see if this will solve your problem.

'Unsupported palette function detected'

The PC software that you are running has tried to use an unsupported VGA palette function. It thinks that this can be done as you have enabled the VGA adaptor and not all of the palette functions are implemented. This should be quite a rare error as the majority of BIOS palette calls are to do with reprogramming the palette, and these calls are fully implemented.

Try disabling the VGA (and also possibly the EGA) adaptor to see if your program will run in another video mode.

'The Emulator is trying to execute jump vectors'

For some reason, !FasterPC is executing code that is in the 8086 jump vectors (RAM locations 00000h to 00400h). This is probably because it has become confused and mis-interpreted a previous instruction.

Try running your program several times to see if the problem always occurs and whether it always occurs at the same place. If this is the case, the problem is repeatable, and you might like to contact me following the guidelines at the end of this chapter for an investigation.

'Unable to change to required FasterPC screen mode'

This error is reported when !FasterPC has been unable to change to one of its special screen modes. These modes are supported by the VGAmodes module present in the application directory, and RMLoaded when the application is started. It is possible that you do not have sufficient screen memory available before trying to run the emulator. !FasterPC requires 80k bytes of screen memory to run in 50Hz mode and 300k bytes of screen memory otherwise.

Open the task window and free memory by quitting unused applications until the required amount of memory is shown free.

'User forced exit from !FasterPC'

This warning is reported if the user exits !FasterPC with the forced exit mechanism described in chapter 4. This does not indicate that an error has occurred, but is present to warn that re-entry will not be available without a reboot.

'Unable to change to required ColourCard screen mode'

This warning is reported if the user has selected the ColourCard display option and !FasterPC was unable to switch to a ColourCard specific mode. Are you sure that you have a ColourCard installed? !FasterPC relies on your setting this flag correctly.

'An unknown error has occurred'

This error is reported if !FasterPC exits without a valid reason code. This is a 'catch all' error handler and the author has never seen this error reported during the development period. If you get it and are able to repeat it, you might like to contact me following the guidelines at the end of this chapter for an investigation.

Reporting errors for investigation

The occasion may occur when you are unable to correct a possible fault with !FasterPC and some PC software that you are trying to run. The following section presents some guidelines for you to follow in order to get your potential problem investigated.

  • Contact APDL at the normal address, regretfully we cannot provide telephone support for FasterPC beyond the most basic issues.

Additional Features

The current major version number of !FasterPC is 3 and it is intended that this will be the final release of the application save for updates to cover fault fixes as and when faults are found and corrected.

Printer Support

!FasterPC supports a unidirectional parallel printer port. This has been implemented using the RISC OS low level printer handling mechanism, i.e. at the SWI rather than !Printers level. This is because the emulation is of a hardware port and this is necessarily a primitive device over which one has a high level of control.

In order to achieve this, there is a certain amount of switching of printer devices and re-routing of character streams in RISC OS. All this switching is invisible to the user as the machine is returned to its original state when leaving the DOS environment. The switching of the printer device waits until the current printer stream is empty before completing, and if the printer is offline, this could take forever.

In order to prevent this pause when entering the PC environment, two options were considered during development.

1flush the printer buffer of its current contents and try to prevent the RISC OS printer drivers from refilling it.

2check if the printer buffer is empty and disable !FasterPC's printer functions if any data was waiting to be printed. Any PC programs trying to access the printer after disabling will find that the printer reports that it is offline.

The second, less destructive, option was chosen and has been implemented.

Even though the above is designed to protect the user, it is always preferable to complete all the current print jobs in Risc-OS before entering the PC environment and similarly to complete all the current DOS print jobs in !FasterPC before re-entering Risc-OS.

Serial Implementation

!FasterPC has a relatively complete implementation of the 8250 Asynchronous Communications Element UART at both a BIOS and hardware port access level. Due to the limitations of the Archimedes serial subsystem, the emulation represents that of the original IBM PC XT, with maximum transmission/reception rates of 19200 Baud. In addition, only the following data transfer rates are supported: 50, 75, 110, 134.5, 150, 300, 600, 1200, 1800, 2400, 3600, 4800, 7200, 9600 and 19200 Baud whereas the XT can smoothly vary the Baud rate between 50 and 19200 Baud. This is not usually a problem as almost all software makes use of one of the above rates. !FasterPC chooses the nearest value when setting the Baud rate.

Another limitation of the emulation is that when a data receive error occurs, the error is reported immediately to the current PC program, even though RISC OS might be buffering several other incoming serial characters which should be received before the error. This is a feature of the RISC OS serial buffering and should not cause any problems unless the data lines cause many errors in transmission.

The same comments regarding the printer emulation apply to the serial emulation, in that if either the serial input or output buffer is not empty when !FasterPC is started, a warning is displayed and the serial functions are disabled if the user continues with the emulation. This is required because some versions of RISC OS do not allow an application to claim a device and prevent other applications from tampering with it. !FasterPC is trying to see if the serial subsystem is in use and won't use it if it thinks that it is.

The serial emulation has been tested with several "simple" communications programs and seems to function correctly at this level. It also runs the two player serial versions of 688 Attack Sub and Populous successfully. As both of these programs use interrupt driven serial port handlers, I feel that they are a reasonably rigorous test of the implementation.

High Density Disc Support

!FasterPC supports both 1.44Mb 3.5" and 1.2Mb 5.25" high density floppy discs on machines with the appropriate hardware. The configuration utility allows the user to tell the application how many drives of which type are available.

Risc PC Support

!FasterPC is now Risc PC compatible. The enhanced video capabilities of this machine allow the full VGA mode 19 palettes to be displayed. !FasterPC running on an ARM 610 Risc PC provides a small speed increase over the ARM 3 Archimedes versions.

With the Risc PC, the "new" IBM PC AT style keyboard has the backslash (\) key in a different location. In order to use this keyboard with Acorn"s !PCem or !FasterPC you need to include the command KEYB UK in your AUTOEXEC.BAT file.

Real Time Clock

A PC/AT real time clock (RTC) has been implemented. This is complete except that it does not support the alarm function which is almost completely unused by DOS software. Also, both Acorn's !PCem and !FasterPC's RTC do not report the RISC OS 'summer-time' setting to DOS, even if it is set.

101 Key Keyboard Support The keyboard support drivers and PC ROM have been extended in order to emulate the 101 key IBM PC AT keyboard. The main benefit that this provides is that the cursor keypad will now continue to provide cursor codes even when the main numeric keypad is providing numbers with Num Lock on. In addition, the 6 additional editing keys (insert, delete, home, copy, page up and page down) are also fully implemented. In implementing this feature, I have adopted the key codes generated by three 486 machines from different manufacturers rather than those generated by Acorn's !PCem, the difference being in the autorepeat codes. One feature has been observed. If the Tandy display option is enabled, then the PC ROM has a certain byte set to a "Tandy" value in order that software looking for the Tandy adaptor can detect it. The EDIT and QBASIC editors in MS DOS check for Tandy machines and disable the cursor keypad when Num Lock is on. I believe this is because the Tandy keyboards were/are not 101 key PC AT compatible. Thus, if after you have enabled Num Lock the cursor keys in EDIT don't function, it is likely that you have the Tandy adaptor enabled. Disabling it will allow the cursor keys to function if you quit the editor and re-start it.

Credits

The author wishes to thank the following people for their support during the long implementation phase of this project:

Darren Sillett for his help in all things RISC OS, and in testing and reporting bugs in !FasterPC. Without his interest in getting the application working, it would have been left in a corner of my hard disc amongst the hundreds of other abandoned projects. Darren produced the configuration utility using his library of RISC OS routines, leaving me only to have to fill in the hard disc file creation functions. Lastly, and not least, my thanks to Darren for designing the !FasterPC icons and for telling me how a correct RISC OS application should look and behave.

Dr. Peter Hansen of Ionian Software, Oxford, for being a library for all things relating to both MS-DOS and Microsoft Windows. My special thanks go to him for not minding the long phone calls about some obscure I/O port function which I tended to make late in the night when !FasterPC wasn't working correctly.

David Holden, who runs the Archimedes Public Domain Library (A.P.D.L). As well as taking an interest in !FasterPC as soon as it was announced publically, David has been extremely generous in lending me an A3010 in order to help implement the high density disc support. I have also been able to use this system to add VGA and LCD screen support and also to correct some problems relating to the ARM250 processor. A.P.D.L. can supply a large number of high quality PC shareware programs (for example a working Modula 2 compiler and example source files).

Dave Williams, author of the shareware DOS Technical Reference, DOSREF. The information in this publication was essential in the production of !FasterPC. It prevented me from having to acquire many very detailed reference books as all the information was gathered together in one place. Anyone requiring further information regarding DOSREF, its availability and price can contact !FasterPC's author at the address on the back cover of this User Guide.

John Ratcliff, author of 688 Attack Sub, one of the most enjoyable strategy games available on a computer. Indeed, it was seeing this game running painfully slowly under Acorn's !PCem that caused !FasterPC to be conceived. One of the main reasons for adding the serial port hardware emulation to !FasterPC is to get the two player version of 688 Attack Sub running. Acorn's !PCem does not work in this mode, even slowly (I don't think that it handles direct serial port hardware access). If you enjoy strategy games then I can wholeheartedly recommend 688 Attack Sub, published by Electronic Arts, especially as it can be bought these days as part of a 'four pack' for around £25.

Last, and not least, Acorn Computers Ltd for having the foresight to invest in developing the ARM processor at a time when following the more tried and trusted Motorola 680X0 or Intel 80X86 route must have been very tempting. For producing the Archimedes and giving it one of the best GUI's that I have used. Apple Mac, PC Windows and Unix Motif/X desktop users are only just beginning to get man machine interfaces that approach the power, flexibility and ease of use of RISC OS and still they feel that they are at the leading edge of such software! Finally, a plea to Acorn not to rest on its laurels and to continue development of the ARM especially at the top end of the performance range. When you see just how crippled the Intel '486 and Pentium have become with their ever present need for backwards compatibility with the 13 year old 8086 processor, the logical layout of the ARM is obviously a vast improvement.

PC Compatibility

The following MS DOS programs have been tested with the standard !FasterPC and been found to work with the video modes shown. Note: the inclusion of a program in this list does not guarantee that it will work perfectly under all circumstances with this application, rather that it has been tried and, with limited testing, been found to run successfully.

Compatibilty chart

Running PC Software

A general point to note when running PC software is that sometimes !FasterPC will seem to go to sleep after the hard disc rattles when the PC program loads. Users of Acorn's !PCem will already be used to this delay which is due to the emulator running the program initialisation code to set up internal data before the program can run. Not all programs have this pause but most do, and on some it can be as long as 30 seconds. The moral of this is that if !FasterPC doesn't seem to be doing anything for quite a while, give it more time. It will hopefully continue in a few moments.

How fast is it?

Computer performance is generally difficult to quantify. With the IBM PC and compatibles it is even more difficult due to the large number of permutations of CPU, clock speed, co-processor, etc. Originally performance was measured in MIPS (millions of instructions per second) and thus was based almost exclusively on the processor clock speed. This largely went out of favour when RISC CPU's were introduced, as these ran very fast (lots of instructions per second), but each instruction did much less than an instruction on a non-RISC (or CISC) CPU. The Dhrystone benchmark was an alternative which tried to assess the computer's speed in terms of its performance on a set of processing tasks. The latest unit is the SPECMARK, the unit in which most major manufacturers of workstations today quote the performance of their machines.

The IBM PC has been served by several different performance measuring applications, most notably Norton's System Information (SI) and Central Point's PC Tools, both of which have gone through several revisions. These applications seem an ideal way in which to measure the performance improvement that !FasterPC claims to offer. Unfortunately, this is not the case. Take a look at the code in the box below.

This is taken directly from an actual system performance analysis tool. As you can see, the measurement code consists of two nested loops. The outer causes the inner to be repeated 475 times. The inner repeats 100 times for each outer loop and thus executes 47500 times in all. Each pass of the inner loop consists of some register and memory loading and an integer multiply and divide instruction. These last two instructions are implemented in 8086 microcode but, being a CISC (Complex Instruction Set Computer) processor, they take several clock cycles to execute. In fact, the IDIV instruction can take up to 219 cycles, and on a 4.77MHz 8086, this alone would take 2.18 seconds to perform 47500 times. This compares with around 20 cycles for each of the remaining instructions that are within the inner loop. This shows that the overall performance figure is based mainly on how long these IDIV instructions take to complete. As an efficient divide routine is presented in the ARM assembler manual, it is hardly surprising that Acorn's PC Emulator and !FasterPC produce almost identical performance ratings with such software. The actual rating of 4.2 +/- 0.2 times a 4.77MHz IBM XT when running on a 28Mhz ARM3 is not very relevant, as almost all programs spend their time performing other instructions.

So, how do we measure PC emulator performance, given that the programs designed to help are not very applicable? Perhaps the best way is to time both emulators running the same program over an extended period of time to give a 'real world' performance figure. Four such tests are described below.

The Tests

Test A - This test performs a horizontal scroll of a VGA 256 colour graphics screen. The program, supplied as source and executable on the DOS support disc, only measures graphics performance and !FasterPC's large gain figure is the absolute maximum that it can obtain. In practice, real applications will never achieve this figure as other non-graphics processing will reduce !FasterPC's speed advantage.

Test B - This test involved the game 'Xenon2' produced by the Bitmap Brothers. It is a vertically scrolling 'shoot-em-up' arcade game and thus the results are obviously heavily dependent on the speed of the graphics emulation. The test involved timing both emulators from the start of level 1 to a point well into the same level that was easy to time accurately. The test was run in CGA mode on both emulators and also in EGA/Tandy modes which are graphically equivalent.

Test C - This test was based on the time taken to compile a test program using Zortech's V2.1 C++ compiler. This test does not rely on graphics at all and so is only a measure of the speed of the emulation of the CPU.

Test D - This test involved the program Fractint, version 15.1. A full screen Mandelbrot fractal was generated in CGA video mode 4. The fractal was generated twice, once using integer and once using floating point arithmetic. Acorn's emulator gains enormously in the floating point test as it uses its ARM code emulation of the 8087 maths coprocessor whilst !FasterPC has to perform the floating point calculations using emulated 80186 integer arithmetic which is obviously much slower. Note that the integer test shows almost no difference between the emulators as the 8087 is not used.

Dave Lawrence

 Index