 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 Armordillo ( [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,7]
; 05-Nov-87  BC    Changed country allocations to Master/Compact
; 18-Nov-87  BC    Added Resource and their AtoD
; 11-Jan-88  BC    Added Armordillo ( [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]
;
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

 ; Allocation of Manufacturer codes

 ^ 0
Manf_AcornUK                    # 1  ; 0
Manf_AcornUSA                   # 1  ; 1
Manf_Olivetti                   # 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_CambridgeRingConsultants   # 1  ; 14
Manf_AAndGElectronics           # 1  ; 15
Manf_SpaceTech                  # 1  ; 16
Manf_CapricornConsulting        # 1  ; 17
Manf_Syntec                     # 1  ; 18

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

 ^ 0
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
ProdType_BBCIO             # 1  ; 6
ProdType_Modem             # 1  ; 7
ProdType_Teletext          # 1  ; 8
ProdType_CDROM             # 1  ; 9
ProdType_IEEE488           # 1  ; 10
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_PROMProgrammer    # 1  ; 18
ProdType_MIDI              # 1  ; 19
ProdType_MonoVPU           # 1  ; 20
ProdType_FrameGrabber      # 1  ; 21
ProdType_SoundSampler      # 1  ; 22
ProdType_VideoDigitiser    # 1  ; 23
ProdType_GenLock           # 1  ; 24
ProdType_CODECSampler      # 1  ; 25
ProdType_ImageAnalyser     # 1  ; 26
ProdType_AnalogueInput     # 1  ; 27
ProdType_CDSoundSampler    # 1  ; 28
ProdType_6MIPSSigProc      # 1  ; 29
ProdType_12MIPSSigProc     # 1  ; 30
ProdType_33MIPSSigProc     # 1  ; 31
ProdType_TouchScreen       # 1  ; 32
ProdType_TransputerLink    # 1  ; 33
ProdType_InteractiveVideo  # 1  ; 34
ProdType_LaserScanner      # 1  ; 35
ProdType_TransputerLink2   # 1  ; 36
ProdType_VMEBus            # 1  ; 37
ProdType_TapeStreamer      # 1  ; 38
ProdType_LaserTest         # 1  ; 39
ProdType_ColourDigitiser   # 1  ; 40
ProdType_WeatherSatellite  # 1  ; 41
ProdType_AutoCue           # 1  ; 42
ProdType_ParallelIO16Bit   # 1  ; 43
ProdType_12BitAToD         # 1  ; 44
ProdType_SerialPortRS423   # 1  ; 45
ProdType_MINI              # 1  ; 46
ProdType_FrameGrabber2     # 1  ; 47
ProdType_InteractiveVideo2 # 1  ; 48
ProdType_WildAtoD          # 1  ; 49
ProdType_WildDtoA          # 1  ; 50

 ; 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
