        SUBT    Exported Podule constants => &.Hdr.Podule

OldOpt  SETA    {OPT}
        OPT     OptNoList+OptNoP1List

; ***********************************
; ***    C h a n g e   L i s t    ***
; ***********************************

; Date       Name  Description
; ----       ----  -----------
; 12-May-87  BC    Added DeviceType_Link to allow for adding ROMS
; 19-Jun-87  BC    Removed speed/access stuff
; 22-Jul-87  BC    Added stand alone MIDI ProdType
; 23-Jul-87  BC    Added DeviceType_PartNumber
; 10-Aug-87  BC    Added Intelligent Interfaces
; 11-Aug-87  BC    Added Caman
; 12-Aug-87  BC    Added ProdType_FrameGrabber
; 20-Aug-87  BC    Left RawRead and RawWrite in permanently
; 01-Sep-87  BC    Added Armardillo ( [7,22], [7,23] )
; 09-Sep-87  BC    Added SoftOption GenLock [8,24]
; 15-Sep-87  BC    Put in EXPORT of masking constants
; 05-Oct-87  BC    Added CODEC sampler [25]
; 09-Oct-87  BC    Added Wild Vision Analysis [9,26]
; 05-Nov-87  BC    Added Anglo Computers [10,27]
; 05-Nov-87  BC    Changed country allocations to Master/Compact
; 18-Nov-87  BC    Added Resource and their AtoD [11,??]
; 11-Jan-88  BC    Added Armardillo ( [7,28..33] )
; 10-Feb-88  BC    Added Allied Interacive [12,34]
; 18-Feb-88  BC    Added Musbury Consultants [13,??]
; 02-Mar-88  BC    Added ProdType_LaserScanner [35]
; 10-May-88  BC    Added SWI Podule_HardwareAddress
; 12-May-88  BC    Added CamRingCons., [14,36], Moved VMEBus Added FastRing2
; 12-May-88  BC    Added ProdType_TapeStreamer 38
; 24-May-88  BC    Added ProdType_LaserTest 39 for JGreen
; 15-Jun-88  BC    Added A&G Electronics VideoDigitiser [15,40]
; 15-Jun-88  BC    Added SpaceTech WeatherSatellite [16,41]
; 29-Jul-88  BC    Added Capricorn Consulting's Auto Cue [17,42]
; 19-Aug-88  BC    Added II ProdTypes [5,43..45]
; 06-Sep-88  BC    Added Syntec's MINI [18,46]
; 19-Sep-88  BC    Added four products for WildVision [9,47..50]
; 12-Oct-88  BC    Added ElectroMusic's Studio24Plus [19,51]
; 13-Oct-88  BC    Added Millipede's Prisma3 [20,53]
; 13-Oct-88  BC    Added Acorn FloatingPointCrutch CoProc [0,52]
; 17-Oct-88  BC    Added Video Electronics Limited's Arvis [21,54]
; 17-Oct-88  SKS   Checked II allocation against letter, added a bit of XRef's
; 18-Oct-88  BC    Added ProdType_4by4MIDI for Syntec [18,55]
; 04-Nov-88  BC    Added BraneSoft's dual serial, & parallel [22,56]
; 09-Nov-88  SKS   Checked WV allocation, added WV [9, 57..59]
; 11-Nov-88  SKS   Added ASP manf+podule ids [23,60]
; 05-Dec-88  BC    Added Ireland & Lendac's Pluto [(22)24,61]
; 10-Jan-89  BC    Added Cambridge Microsystem's Logic Analyser [25,62]
; 16-Jan-89  BC    Added ProdType_MIDIAndUserPort for Acorn [0,63]
; 23-Jan-89  BC    Added ProdType_JBComputingSCSI for John Ballance [26,64]
; 20-Feb-89  BC    Added ProdType_SiPlanADCAndDAC for Si-Plan Electronics Research [27,65]
; 22-Feb-89  BC    Added ProdType_DualUserPort for Science Frontiers [28,66]
; 03-Mar-89  TMD   Changed "MIDIAndUserPort" to "UserPortAndMIDI"
; 03-Mar-89  BC    Changed ProdType_Studio24Plus to EMRMIDI4 [19,51]
; 03-Mar-89  BC    Added ProdType_EMRSampler8 [19,67]
; 03-Mar-89  BC    Added ProdType_EMRSMTP [19,68]
; 03-Mar-89  BC    Added ProdType_EMRMIDI2 [19,69]
; 17-Mar-89  BC    Added Manf_PineappleSoftware [29]
; 17-Mar-89  BC    Added ProdType_PinappleDigitiser [29,70]
; 17-Apr-89  BC    Changed Manufacturer 2 to OlivettiResearch [2]
; 17-Apr-89  BC    Added two products for Olivetti [2,71], [2,72]
; 17-Apr-89  BC    Added Manf_NexusElectronics [32]
; 17-Apr-89  BC    Added two products for Nexus [32,73], [32,74]
; 20-Apr-89  BC    Added Hong Kong as a country (22)
; 26-Apr-89  BC    Changed CambridgeRingConsultants to GnomeComputers [14]
; 26-Apr-89  BC    Added ProdType_TRAMMotherBoard [14,75]
; 26-Apr-89  BC    Added ProdType_Transputer [14,76]
; 10-May-89  BC    Added Manf_Technomatic [30]
; 10-May-89  BC    Added ProdType_EPROMProgrammer [30,18]
; 10-May-89  BC    Added ProdType_OpticalScanner [30,77]
; 10-May-89  BC    Added ProdType_DigitisingTablet [30,78]
; 10-May-89  BC    Added Manf_IrlamEnterprise [31]
; 10-May-89  BC    Added ProdType_200dpiScanner [31,79]
; 17-May-89  BC    Added five ProdTypes for Wild Vision [9,80..84]
; 18-May-89  BC    Added ProdType_SMTPEInterface [18,85]
; 18-May-89  BC    Added ProdType_8BitAtoD [18,86]
; 19-May-89  BC    Added ProdType_MFMHDControler [30,87]
; 08-Jun-89  BC    Added Manf_OakComputers [33]
; 08-Jun-89  BC    Added ProdType_OakSCSI [33,88]
; 19-Jun-89  BC    Added ProdType_QuadSerial for Hugh Symons [34,89]
; 23-Jun-89  BC    Changed CapricornConsultants to Manf_AtomwideLimited [17]
; 23-Jun-89  BC    Added ProdType_PalProgrammer and ProdType_I2CBus [17,90..91]
; 30-Jun-89  BC    Added Manf_Beebug [35]
; 30-Jun-89  BC    Added ProdType_BeebugScanner [35,92]
; 14-Jul-89  TMD   Corrected ProdType_DigitalI/O to ProdType_DigitalIO
; 23-Aug-89  BC    Added Teknomusik [36] and PandordQuadMidi [36,93]

SWIClass SETS "Podule"
 ^ Module_SWISystemBase + PoduleSWI * Module_SWIChunkSize
 AddSWI ReadID
 AddSWI ReadHeader
 AddSWI EnumerateChunks
 AddSWI ReadChunk
 AddSWI ReadBytes
 AddSWI WriteBytes
 AddSWI CallLoader
 AddSWI RawRead
 AddSWI RawWrite
 AddSWI HardwareAddress
PoduleSWICheckValue * @

 ; The hardware address handed to loaders by the Podule manager consists of
 ; two parts, the Synchronous base address, and the CMOS base address.
 ; These two parts are combined into a single word as with the CMOS address
 ; (the first of four bytes) in the bottom 12 bits.  The remainder is the
 ; hardware address, with the exception that the top six bits are undefined
 ; at present.
 ;
 ;  31        26 25                                 12 11                0
 ;  +-----------+-------------------------------------+------------------+
 ;  | Undefined |   Hardware base address ( Sync )    |   CMOS address   |
 ;  +-----------+-------------------------------------+------------------+
 ;
 ; So this means that entry points expecting the hardware base address should
 ; now mask the incoming register value;
 ;
 ;        LDR    Rmv, =2_11111100000000000000111111111111
 ;        BIC    Rba, Rha, Rmv
 ; OR
 ;        LDR    Rmv, =2_00000011111111111111000000000000
 ;        AND    Rba, Rha, Rmv
 ;
 ; To obtain the true base address, and they should also mask to obtain the
 ; CMOS address for use in R1 in the SWI XOS_Byte for ReadCMOS or WriteCMOS;
 ;
 ;        LDR    Rmv, =2_11111111111111111111000000000000
 ;        BIC    Rca, Rha, Rmv
 ; OR
 ;        LDR    Rmv, =2_00000000000000000000111111111111
 ;        AND    Rca, Rha, Rmv
 ;
 ; These four constants are exported below.

Podule_BaseAddressBICMask * 2_11111100000000000000111111111111
Podule_BaseAddressANDMask * 2_00000011111111111111000000000000

Podule_CMOSAddressBICMask * 2_11111111111111111111000000000000
Podule_CMOSAddressANDMask * 2_00000000000000000000111111111111

 ; Allocation of Country codes
 ; Done in accordance with Master & Compact

 ^ 0
Country_UK              * 0
Country_Italy           * 4
Country_Spain           * 5
Country_France          * 6
Country_Germany         * 7
Country_Portugal        * 8
Country_Greece          * 10
Country_Sweden          * 11
Country_Finland         * 12
Country_Denmark         * 14
Country_Norway          * 15
Country_Iceland         * 16
Country_Canada          * 17
Country_Turkey          * 20
Country_Ireland         * 22
Country_HongKong        * 23

 ; Allocation of Manufacturer codes

 ^ 0
Manf_AcornUK                    # 1  ; 0
Manf_AcornUSA                   # 1  ; 1
Manf_OlivettiResearch           # 1  ; 2
Manf_Watford                    # 1  ; 3
Manf_ComputerConcepts           # 1  ; 4
Manf_IntelligentInterfaces      # 1  ; 5
Manf_Caman                      # 1  ; 6
Manf_Armadillo                  # 1  ; 7
Manf_SoftOption                 # 1  ; 8
Manf_WildVision                 # 1  ; 9
Manf_AngloComputers             # 1  ; 10
Manf_Resource                   # 1  ; 11
Manf_AlliedInteractive          # 1  ; 12
Manf_MusburyConsultants         # 1  ; 13
Manf_GnomeComputers             # 1  ; 14
Manf_AAndGElectronics           # 1  ; 15
Manf_SpaceTech                  # 1  ; 16
Manf_AtomwideLimited            # 1  ; 17
Manf_Syntec                     # 1  ; 18
Manf_ElectroMusicResearch       # 1  ; 19
Manf_Millipede                  # 1  ; 20
Manf_VideoElectronicsLimited    # 1  ; 21
Manf_BrainSoft                  # 1  ; 22
Manf_ASP                        # 1  ; 23
Manf_LendacDataSystems          # 1  ; 24
Manf_CambridgeMicrosystems      # 1  ; 25
Manf_JohnBallanceComputing      # 1  ; 26
Manf_SiPlanElectronicsResearch  # 1  ; 27
Manf_ScienceFrontiers           # 1  ; 28
Manf_PineappleSoftware          # 1  ; 29
Manf_Technomatic                # 1  ; 30
Manf_IrlamEnterprise            # 1  ; 31
Manf_NexusElectronics           # 1  ; 32
Manf_OakComputers               # 1  ; 33
Manf_HughSymons                 # 1  ; 34
Manf_Beebug                     # 1  ; 35
Manf_Teknomusik                 # 1  ; 36

 ; Podule types for within Acorn, Olivetti,
 ; and the rest of the known universe.

 ^ 0                            ; No. Manafacturer name [number]
ProdType_HostTube           # 1 ; 0 (To the BBC machine)
ProdType_ParasiteTube       # 1 ; 1 (To a second processor)
ProdType_SCSI               # 1 ; 2
ProdType_Ethernet           # 1 ; 3
ProdType_IBMDisc            # 1 ; 4
ProdType_RAMROM             # 1 ; 5  Acorn [0]
ProdType_BBCIO              # 1 ; 6  Acorn [0]
ProdType_Modem              # 1 ; 7
ProdType_Teletext           # 1 ; 8
ProdType_CDROM              # 1 ; 9
ProdType_IEEE488            # 1 ; 10 Intelligent Interfaces [5] checked 17/10/88
ProdType_Winchester         # 1 ; 11
ProdType_ESDI               # 1 ; 12
ProdType_SMD                # 1 ; 13
ProdType_LaserPrinter       # 1 ; 14
ProdType_Scanner            # 1 ; 15
ProdType_FastRing           # 1 ; 16
ProdType_FastRing2          # 1 ; 17
ProdType_EPROMProgrammer    # 1 ; 18 Technomatic [30]
ProdType_MIDI               # 1 ; 19 Acorn [0]
ProdType_MonoVPU            # 1 ; 20
ProdType_FrameGrabber       # 1 ; 21
ProdType_SoundSampler       # 1 ; 22 Armadillo [7]
ProdType_VideoDigitiser     # 1 ; 23 Armadillo [7]
ProdType_GenLock            # 1 ; 24 Soft Option [8]
ProdType_CODECSampler       # 1 ; 25
ProdType_ImageAnalyser      # 1 ; 26 Wild Vision [9]
ProdType_AnalogueInput      # 1 ; 27 Anglo Computers [10]
ProdType_CDSoundSampler     # 1 ; 28 Armadillo [7]
ProdType_6MIPSSigProc       # 1 ; 29 Armadillo [7]
ProdType_12MIPSSigProc      # 1 ; 30 Armadillo [7]
ProdType_33MIPSSigProc      # 1 ; 31 Armadillo [7]
ProdType_TouchScreen        # 1 ; 32
ProdType_TransputerLink     # 1 ; 33
ProdType_InteractiveVideo   # 1 ; 34 Allied Interactive [12]
ProdType_LaserScanner       # 1 ; 35
ProdType_TransputerLink2    # 1 ; 36 Cambridge Ring Consultants [14]
ProdType_VMEBus             # 1 ; 37
ProdType_TapeStreamer       # 1 ; 38
ProdType_LaserTest          # 1 ; 39
ProdType_ColourDigitiser    # 1 ; 40 A & G Electronics [15]
ProdType_WeatherSatellite   # 1 ; 41 SpaceTech [16]
ProdType_AutoCue            # 1 ; 42 Capricorn Consulting [17]
ProdType_ParallelIO16Bit    # 1 ; 43 Intelligent Interfaces [5] checked 17/10/88
ProdType_12BitAToD          # 1 ; 44 Intelligent Interfaces [5] checked 17/10/88
ProdType_SerialPortRS423    # 1 ; 45 Intelligent Interfaces [5] checked 17/10/88
ProdType_MINI               # 1 ; 46 Syntec [18]
ProdType_FrameGrabber2      # 1 ; 47 Wild Vision [9]
ProdType_InteractiveVideo2  # 1 ; 48 Wild Vision [9]
ProdType_WildAtoD           # 1 ; 49 Wild Vision [9]
ProdType_WildDtoA           # 1 ; 50 Wild Vision [9]
ProdType_EMRMIDI4           # 1 ; 51 ElectroMusic Research [19]
ProdType_FloatingPointCP    # 1 ; 52 Acorn [0]
ProdType_Prisma3            # 1 ; 53 Millipede [20]
ProdType_Arvis              # 1 ; 54 Video Electronics Ltd. [21]
ProdType_4by4MIDI           # 1 ; 55 Syntec [18]
ProdType_BiSerialParallel   # 1 ; 56 BraneSoft [22]
ProdType_Chroma300Genlock   # 1 ; 57 Wild Vision [9]
ProdType_Chroma400Genlock   # 1 ; 58 Wild Vision [9]
ProdType_ColourConverter    # 1 ; 59 Wild Vision [9]
ProdType_8BitSampler        # 1 ; 60 ASP [23]
ProdType_PlutoInterface     # 1 ; 61 Lendac [(22)24]
ProdType_LogicAnalyser      # 1 ; 62 Cambridge Microsystems [25]
ProdType_UserPortAndMIDI    # 1 ; 63 Acorn [0]
ProdType_JBComputingSCSI    # 1 ; 64 John Ballance Computing [26]
ProdType_SiPlanADCAndDAC    # 1 ; 65 Si-Plan Electronics Research [27]
ProdType_DualUserPort       # 1 ; 66 Science Frontiers [28]
ProdType_EMRSampler8        # 1 ; 67 ElectroMusic Research [19]
ProdType_EMRSMTP            # 1 ; 68 ElectroMusic Research [19]
ProdType_EMRMIDI2           # 1 ; 69 ElectroMusic Research [19]
ProdType_PineappleDigitiser # 1 ; 70 Pineapple Software colour digitiser [29]
ProdType_VideoFrameCapture  # 1 ; 71 ORC [2]
ProdType_MonoOverlayFrStore # 1 ; 72 ORC [2]
ProdType_MarketBuffer       # 1 ; 73 Nexus Electronics [32]
ProdType_PageStore          # 1 ; 74 Nexus Electronics [32]
ProdType_TRAMMotherBoard    # 1 ; 75 Gnome Computers [14]
ProdType_Transputer         # 1 ; 76 Gnome Computers [14]
ProdType_OpticalScanner     # 1 ; 77 Technomatic [30]
ProdType_DigitisingTablet   # 1 ; 78 Technomatic [30]
ProdType_200dpiScanner      # 1 ; 79 IrlamEnterprise [31]
ProdType_DigitalIO          # 1 ; 80 Wild Vision [9]
ProdType_PresenterGenlock   # 1 ; 81 Wild Vision [9]
ProdType_ColourFrameGrabber # 1 ; 82 Wild Vision [9]
ProdType_Chroma200Genlock   # 1 ; 83 Wild Vision [9]
ProdType_WVSoundSampler     # 1 ; 84 Wild Vision [9]
ProdType_SMTPEInterface     # 1 ; 85 Syntec [18]
ProdType_8BitAtoD           # 1 ; 86 Syntec [18]
ProdType_MFMHDControler     # 1 ; 87 Technomatic [30]
ProdType_OakSCSI            # 1 ; 88 Oak Computers [33]
ProdType_QuadSerial         # 1 ; 89 Hugh Symons [34]
ProdType_PalProgrammer      # 1 ; 90 Atomwide [17]
ProdType_I2CBus             # 1 ; 91 Atomwide [17]
ProdType_BeebugScanner      # 1 ; 92 Beebug [35]
ProdType_PandoraQuadMidi    # 1 ; 93 Teknomusik [36]

 ; Operating system identity bytes for load chunks
 ^ 2_10000000 ; OS=0, Arthur
OSType_Loader           # 1
OSType_Module           # 1
OSType_BBCROM           # 1
OSType_Sprite           # 1
OSType_File             # 1 ; General get out mechanism

 ^ 2_10010000 ; OS=1, ARX
ARXType_Loader          # 1

 ^ 2_10100000 ; OS=2, Unix
UnixType_Loader         # 1

 ^ 2_11110000 ; OS=7, Device data
DeviceType_Link         # 1 ; Used to link directory sections together
DeviceType_SerialNumber # 1
DeviceType_Date         # 1
DeviceType_Modification # 1
DeviceType_Place        # 1
DeviceType_Description  # 1
DeviceType_PartNumber   # 1

DeviceType_Empty        * &FF ; Used to patch ROMS
 ASSERT @ <= DeviceType_Empty

        OPT     OldOpt
        END
