Latest News
!System updates

Development tools
C/C++ Tools

Writing 32-bit code
32-bit introduction
32-bit overview
32-bit technical
Memory issues
Developer tools
Paul Skirrow's Guide (PDF)
Download area

32-bit APIs
API changes
CallASWI
FileCore

RISC OS 5
Overview
BBC BASIC
CDFS driver
OS_ClaimDeviceVector behaviour
CDFS
Draw clipping
GraphicsV
HAL
Internet
UTF8 & Japanese support
International IME support
MIMEMap
Module PostInit/Final
PCI Manager
PDumper
Podules
Resource allocation
SCSI
Service Calls
UCS fonts
USB
WIMP API Changes
WIMP Flags

IYONIX pc
DDR memory
Help system
Keyboard layout
Miscellaneous
PCI slots

Opportunities

Iyonix Ltd
IYONIX home page
Contact details

   

Podules

Introduction

The IYONIX pc provides podule slots to enable existing podules to be used. In most cases it will be necessary to update the software in the podule ROM to update it to be 32-bit compatible. This may involve physically replacing the podule ROM or upgrading it via a Flash ROM programming utility.

RISC OS 5 will silently ignore expansion card modules that are not 32-bit compatible and will silently replace 26-bit loaders with a dummy 32-bit one.

SWI Changes

The Podule Manager SWIs have been updated for The IYONIX pc as follows:

Podule_CallLoader (SWI &40286)

No changes. However, loaders which are not marked as being 32-bit safe with 32OK after their opening 4 word table will report an error. This is covered separately in the 32-bit documentation.

Podule_ReadInfo (SWI &4028D)

Though not explicitly mentioned, addresses returned of zero signify that that region is not present (eg entering with bit 29 set and getting back zero means there is no MEMC space).

Podule_SetSpeed (SWI &4028E)

In the IYONIX pc, there are 4 new speeds defined for EFGH cycles, and also the restriction on being able to select only A and C cycles on the Risc PC series platform has been removed.

The defined speeds are:

Podule_Speed_TypeA   1
Podule_Speed_TypeB   2
Podule_Speed_TypeC   3
Podule_Speed_TypeD   4
Podule_Speed_TypeE   5
Podule_Speed_TypeF   6
Podule_Speed_TypeG   7
Podule_Speed_TypeH   8
The timings are now all defined in terms of a 64MHz master clock (rather than 16MHz clock in the Extended Expansion card specification issue 5):
ABCDEFGH
pre nEASI run in44442222
nEASI to nIOR/nIOW66223311
nIOR/nIOW low time1612848642
nIOR/nIOW to nEASI62223111
post nEASI run out44442222
total cycle time362820161814108
These speeds may not all be available on future platforms, so your code should check for Podule manager returning with V=1 for invalid combinations. The most compatible approach would be:
  1. Choose fastest access speed the EASI card can manage
  2. Call XPodule_SetSpeed with the R0=corresponding speed setting
  3. If it returns with V=1 then decrement R0 and repeat step 2

Podule_HardwareAddress (SWI &40289) and
Podule_HardwareAddresses (SWI &4028B)

See the note below about ROM sections in R3.

ROM sections (value passed in R3)

As detailed in PRM 5a, with the exception of Podule_ReturnNumber the value passed in R3 need not be simply an expansion card number or ROM section number.

The PRM details some pseudo code with various AND masks to show how the address passed in R3 is mapped back to an expansion card number.

The pseudo code described in volume 5a Expansion card support is no longer used internally by the module, though this is of no concern since the externally visible interface remains unchanged. Podule manager now does simple address matching in an attempt to deduce which podule you are trying to refer to.

Where R3 contains a combined hardware address (see Podule_HardwareAddress(es)) note that bits 0-10 are the CMOS RAM address and 11 upwards define the address which is now arbiter.

Unchanged SWIs

The following SWIs have not changed from the RISC OS 3.50 version of the Podule Manager, as documented in the RISC OS 3 Programmer's Reference Manual:
  • Podule_ReadID (SWI &40280)
  • Podule_ReadHeader (SWI &40281)
  • Podule_EnumerateChunks (SWI &40282)
  • Podule_EnumerateChunksWithInfo (SWI &4028A)
  • Podule_ReadChunk (SWI &40283)
  • Podule_ReadBytes (SWI &40284)
  • Podule_ReturnNumber (SWI &4028C)
  • Podule_WriteBytes (SWI &40285)
  • Podule_RawRead (SWI &40287)
  • Podule_RawWrite (SWI &40288)

    Making Expansion ROM Images

    An updated version of Acorn's MakeExpROM is available to download as expansion.zip. A summary of the changes is included in a text file.

    © 2006 IYONIX Ltd 32-bit RISC OS