General Compatability with the PC Card

If you have additions / modifications to this information then please email me at web@ultrasnd.demon.co.uk.

Introduction

The PC card is really just a PC processor on a card with an ASIC (Application Specific Integrated Circuit) to allow it to 'talk' to the RPC. The PCx86 application is essentially a software emulator with hardware acceleration provided by the PC CPU. This means that the PC card will never be 100% the same as a PC clone and differences will remain.

You can go direct to the are you are interested in using one of the links below.


Memory

The maximum amount of memory that the PC can be configured to use depends on which version of the PCx86 software you are using with versions prior to v1.87 being limited to 16MB and from 1.87 on up to 32MB. The actual ammount of memory which can be allocated within this limit increases in 1MB steps up to 16Mb and from then on in 4MB steps.

Once a PCx86 session is being run it is not possible to change the configured amount of memory, unless you first exit the application.

[Back to Index]

Screen Modes

Windows

You can choose what combination of colours and resolution that you want to run windows in from the PCConfig application. However, if the mode you require is not available from the list of available one then you can edit the configuration file directly. The config file, which is located inside the PCx86 application folder, contains a line where the WinDrvMode variable is defined and this follows the normal mode format, eg. x1024y768c256p, which gives 1024x768 in 256 colours with a programable palette. The syntax being (fairly obviously) the x resolution, the y resolution, the number of colours and a p to select a programable palatte.

If the programable palatte option isn't set then you will see some unusual colours being used in windows, especially with Netscape. If you have been using a setup without the p option and you change to it you may find that the icons in program manager have unusual colours. To correct this, select each icon in turn, press alt-enter and then click on OK.

DOS

The screen mode used in DOS is:

When deciding if a particular mode can be used, the 'Monitortype' status item set for the RPC is examined to decide if it is possible to display a requested mode. If this can't be selected then the PC card will return to multi-tasking mode.

If your monitortype is set to 'Auto' then the PC card software cannot tell what modes it can single-task in and so will revert to multi-tasking if WinDrvMode is set to 31 (for example) unless you are already in mode 31. Change your Monitortype to reflect the actual type of your monitor to stop this happening.

This forced multi-tasking is also often caused by software which tries to generate illegal video modes (non-CGA/EGA/VGA). Note that the biggest VGA mode is 640x480x16. DOS Software which needs more pixels or colour than this will not run (except 800x600x16 using VESA support).

These are the modes supported by the PC Card software. The host system will not be able to display modes beyond 10h if you do not have a VGA-standard monitor (eg A300, A400 systems)

Standard DOS modes (Modes 8-0Ch aren't officially defined)

SuperVGA modes

Odd modes

On RISCOS 3.5, will also support other modes obtained by messing round with VGA regs, provided they are supported by the display & fit into one of the following categories:

"Messing round with the VGA regs" is a highly moveable target, so there will still be some software that will not work.

[Back to Index]

Serial Port

In order to be able to use the serial port from the PC card it is necessary to enable the direct serial option from the configuration application.

With version 1.87 of the PCx86 application, control of the serial port was not returned to Risc OS once the PCx86 application had been quitted. To get around this is actually quite simple. The last line of the !Run file just needs to be uncommented, ie the | (vertical bar) which is the first character needs to be deleted.

However from version 1.90 and above, the serial port status is restored and the RMReinit SerialDriver line should be removed from the !Run file if you have modified it as it now may cause problems.

The following notes written by James Miller has some technical details about how the PC card uses the serial port and how to solve some potential problems.

!PC486 seizes the serial port by brute force via an apparently subterranean interface.

Programs running on the PC card will configure the serial port as they wish. Changes are NOT reflected back to RiscOS. That is to say, using SerialOP calls (0, 5 and 6) to find data format and baud rate won't show what the PC card has changed.

In reverse, if you use SerialOP calls to change data format and baud rate when the card is running, these work; programs running on the PC card are affected.

When the PC card is running, all serial data i/o is controlled by the card.

If you set the PC card to "Freeze" (close its window or use the Menu option or indeed quit) then the serial port remains jammed in the card's favour, but ...

If you then issue RMReInit SerialDeviceDriver RiscOS serial control resumes working once more, usually ...

The usually caveat is that some RiscOS serial port software may have done a *FX2,2 and then the RMReInit will fail with an error message "Serial device is in use". To obviate that, precede the RMReInit with *FX2

Obviously, if you have issued a RMReInit SerialDeviceDriver, all RiscOS serial port programs will have to re-initialise themselves. Most do this. For example, !SLIPdial does when you select a PoP from the menu, and it starts dialling. !Hearsay and !ArcFax do likewise when you load them or use ADJUST on their iconbar icon.

A great deal of experimenting shows that the following fragment includes the calls that a generic serial port program should make to initialise or re- initialise itself:

  DEF PROCinit_RS423
  SYS"OS_Byte",2,0:         REM Disable serial input buffer
  SYS"XOS_Module",3,"SerialDeviceDriver":  REM Re-initialise module    
    SYS"OS_SerialOp",5,8:     REM RX 19200 baud         )
    SYS"OS_SerialOp",6,8:     REM TX 19200 baud         )  or whatever
    SYS"OS_SerialOp",1,0:     REM Format 8N1            )  you need
    SYS"OS_SerialOp",0,6,0:   REM Ignore DCD and DSR.   )
  SYS"OS_Byte",2,2:         REM Enable Keyboard + serial port for input
  ENDPROC

This appears to be bomb proof, and certainly restores RiscOS to health after the !PC486 has been "frozen". You can then have a sleeping PC card, with other serial port programs running as normal.

If you do not use the serial port with your PC card, then ensure that the "Direct serial port support" option in the !PCconfig window is NOT ticked. Then the PC card won't affect the serial port in any way.

Naturally all the above applies to the internal serial port only.

It is also good practice to propose to other tasks that you are about to grab the serial port by broadcasting a DeviceClaim message. This lets other tasks complain if need be. Most, but not all, programs do this. !PC486 certainly does not.

In preparing these notes I thank:

for suggestions or comments that provided pointers to the right direction.

I also commend to serial port tinkerers a nice monitor called !Rs232stat which can be found at Hensa as /micros/arch/riscos/b/b199/rs232stat.arc

Notes dated: 1995 Jun 13 [Tue] 1413 utc james@jrmiller.demon.co.uk

[Back to Index]

[Inter Pages] [Acorn] [PC card]
For more information about this site, contact : web@ultrasnd.demon.co.uk

This space is provided by Interpages Media Services, for more information contact: info@interpages.co.uk