Copyright (c) Hyperion Entertainment and contributors.
Amiga Hardware Manufacturer ID Registry
Your Manufacturer Number
Attention hardware manufacturers. If you are developing a hardware expansion product for the Amiga then you will need to obtain a special manufacturer ID number from the AmigaOS development team to identify your product. This manufacturer number is used by the Amiga to link your hardware with its driver software at boot time.
Your manufacturer number is part of the special protocol that the Amiga uses to automatically configure all expansion devices on the bus without the user having to cut jumpers or adjust dip switches. This is called auto-config.
At start-up time, the system first polls each board in the system and assigns the board its own address space. If it is a memory board, its RAM is linked into the memory free pool. Later in the boot sequence, after DOS is initialized, the binddrivers program is run. Binddrivers will search the directory SYS:Expansion for the drivers that go with the boards.
To do this binddrivers looks in the Tool Type field of all icon files in SYS:Expansion. If the first seven bytes of the Tool Type field are "PRODUCT", then this is an icon file for a driver.
Binddrivers will then attempt to match the drivers it has found with the boards that were found earlier. This is where your manufacturer number comes in.
Your manufacturer number goes in two places. First, it is burned in hex form into the PAL which is part of ALL auto-config expansion products. Second, it appears in ASCII in the Tool Type field of the icon file for your product's driver. By matching these two numbers, the Amiga can automatically configure your board and bind it's software driver into the system as well.
The manufacturer's number is a 16-bit ID which appears in PAL offsets $10-$17. There is also an 8-bit product number which you assign. The product number is for uniquely identifying different products from the same vendor. The product number will appear in PAL offsets $04-$07. This gives you a total of 24 bits to identify each of your products.
These 24 bits of information in the PAL which identify your product are matched against the information in the Tool Type field of all icon files in the SYS:Expansion drawer. For example, suppose you are manufacturer #1019. You have two products, #1 and #2 which both use the same driver. The icon for your driver for these two products would have a Tool Type set to "PRODUCT=1019/1|1019/2". This means: I am an icon for a driver that works with product number 1 or 2 from manufacturer 1019, now bind me. Spaces are not legal. Here are two other examples:
- PRODUCT=1208/11
- is the Tool Type for a driver for product 11 from manufacturer number 1208.
- PRODUCT=1017
- is the Tool Type for a driver for any product from manufacturer number 1017.
For an informal explanation of the auto-configuration process, see the chapter on Software Expansion Architecture from the 2nd Annual Amiga Developer's Conference Notes (available on ADCD 2.1). For the details of timing, power, the PAL equations and PAL address specifications and the expansion library documentation, see sections 3.1 to 3.3 of the A500/A2000 Technical Reference Manual ($40). The original auto-config spec appears in the A1000 Schematics and Expansion Specification ($20).
Manufacturer's numbers are assigned by the AmigaOS development team. To obtain your unique manufacturer number use the AmigaOS web site contact form.
Be sure and include your name, email, developer number (if any), and the type of expansion product you are developing. For those doing prototype boards, we have a temporary hacker's number set aside.
The auto-config process makes the addition of expansion products to the system very easy. All the user has to do is put the board in any slot and copy the driver from the release disk to his own SYS:Expansion drawer. Everything else is automatic. There are no jumpers or dip switches to set. Best of all, you will get a lot less support calls asking how to make your product work with the XYZ-Corp-battery-backed-clock.
Example code
/*-----------------------------------------------*/ /* Here is a short program which will tell you */ /* about the expansion boards configured in your */ /* system without you opening up the machine. */ /* Code by Bill Koester of CATS */ /*-----------------------------------------------*/ #include <libraries/configvars.h> #include <libraries/expansion.h> struct ExpansionBase *ExpansionBase; void main(); void cleanup(); void printdev(); void main() { struct ConfigDev *MyConfigDev; /*----------------------------------*/ /* Open the expansion library, */ /* if there is a problem then exit */ /*----------------------------------*/ ExpansionBase =(struct ExpansionBase *) OpenLibrary(EXPANSIONNAME,0); if(ExpansionBase==NULL) { printf("Error opening expansion library!!\n"); cleanup(); exit(0); } /*--------------------------------------------*/ /* Use FindConfigDev to get info on the first */ /* expansion board on the list maintained by */ /* Exec. If there are no expansion boards in */ /* the system then exit. */ /*--------------------------------------------*/ MyConfigDev = NULL; /*--------------------------------------------------*/ /* FindConfigDev(oldConfigDev,manufacturer,product) */ /* oldConfigDev = NULL for the top of the list */ /* manufacturer = -1 for any manufacturer */ /* product = -1 for any product */ /*--------------------------------------------------*/ MyConfigDev = FindConfigDev(NULL,-1,-1); if(MyConfigDev==NULL) { printf("No Configured Devices found!!\n"); cleanup(); exit(0); } printdev(MyConfigDev); /*-----------------------------------*/ /* OK, there is at least one board, */ /* so loop and get the entire list */ /* printing as we go with printdev() */ /*-----------------------------------*/ while(MyConfigDev = FindConfigDev(MyConfigDev,-1,-1)) { printdev(MyConfigDev); } cleanup(); } /*-------------------*/ /* Close up shop... */ /*-------------------*/ void cleanup() { if(ExpansionBase) CloseLibrary(ExpansionBase); } /*----------------------------------*/ /* Print out the contents of the */ /* dev structure for this expansion */ /* product. */ /*----------------------------------*/ void printdev(dev) struct ConfigDev *dev; { char buff[200]; printf("Flags = "); if(dev->cd_Flags==NULL) printf("NULL "); if(dev->cd_Flags&CDF_SHUTUP) printf("CDF_SHUTUP "); if(dev->cd_Flags&CDF_CONFIGME) printf("CDF_CONFIGME "); printf("\n"); printf("Board Address = %x\n",dev->cd_BoardAddr); printf("Board Size = %d bytes\n",dev->cd_BoardSize); printf("Slot Address = %d\n",dev->cd_SlotAddr); printf("Slot Size = %d\n",dev->cd_SlotSize); printf("Driver code at %x\n",dev->cd_Driver); printf("er_Type = %x\n",dev->cd_Rom.er_Type); printf("er_Product = %x\n",dev->cd_Rom.er_Product); printf("er_Flags = %x\n",dev->cd_Rom.er_Flags); printf("er_Reserved03 = %x\n",dev->cd_Rom.er_Reserved03); printf("er_Manufacturer = %x\n",dev->cd_Rom.er_Manufacturer); printf("er_SerialNumber = %x\n",dev->cd_Rom.er_SerialNumber); printf("er_InitDiagVec = %x\n",dev->cd_Rom.er_InitDiagVec); printf("er_Reserved0c = %x\n",dev->cd_Rom.er_Reserved0c); printf("er_Reserved0d = %x\n",dev->cd_Rom.er_Reserved0d); printf("er_Reserved0e = %x\n",dev->cd_Rom.er_Reserved0e); printf("er_Reserved0f = %x\n",dev->cd_Rom.er_Reserved0f); printf("Hit Return to continue:\n"); gets(buff); }
Registry
ID | Manufacturer |
---|---|
1001 | Tecmar |
1002 | Telesys |
1003 | The Micro-Forge |
1004 | Card Co. (Supra) |
1005 | ASquared |
1006 | Comspec Communications |
1007 | HT Electronics |
1008 | RDS Software |
1009 | Anakin Research |
1010 | MicroBotics |
1011 | Bob Krauth |
1012 | Access Associates |
1013 | Mini Comp Systems Ltd. |
1014 | Cypress Technology |
1015 | Fuller Computers |
1016 | Galaxy Computers |
1017 | ADA Research |
1018 | Computer Service Italia |
1019 | Amigo |
1020 | Micro-Solutions Inc. |
1021 | Stacar International |
1022 | Video Precisions |
1023 | ASDG, Inc. |
1025 | Ing. Buero Kalawsky |
1026 | Computer Tuning |
1027 | Interplan Unternehmensberatung |
1028 | Peter Ohlich |
1030 | Productivity Center |
1041 | Design Labs |
1042 | MCS |
1043 | B. J. Freeman |
1044 | Side Effects Inc. |
1045 | Oklahoma Personal Comp. |
1046 | Advanced Micro Innovations |
1047 | Industrial Support Services |
1048 | Technisoft |
1049 | Prolific, Inc. |
1050 | Softeam, Inc. |
1051 | GRC Electronics |
1052 | David Lai |
1053 | Ameristar |
1054 | Cline Refrigeration |
1055 | Cardiac Pacemakers, Inc. |
1056 | Supra Corp. (Creative Microsystems) |
1057 | Wayne Diener |
1058 | CSA |
1059 | Trionix, Inc. |
1060 | David Lucas |
1061 | Analog Precision |
1061 | D & L Distributing |
1267 | RBM Digitaltechnik |
2002 | Mimetics Corp. |
2003 | ACDA |
2004 | Finn R. Jacobsen |
2005 | Elthen Electronics |
2006 | Nine Tiles Computer Systems Ltd. |
2007 | Analog Electronics |
2008 | Bell & Howell |
2009 | Roland Kochler |
2010 | Byte Corp. |
2012 | DKB, Inc. ("Michigan Software") |
2013 | Pacific Peripherals |
2014 | Sysaphus Software |
2015 | Digitronics |
2016 | Akron Systems |
2017 | Great Valley Products |
2018 | Calmos |
2019 | Dover Research |
2020 | David Krehbiel |
2021 | Synergy Peripheral Systems |
2022 | Xetec |
2023 | Micron Technology |
2024 | CH Electronics |
2025 | American Liquid Light |
2026 | Progressive Peripherals & Software |
2027 | Wicat Systems |
2028 | Applied Systems & Peripherals |
2029 | Delaware Valley Software |
2030 | Palomax |
2031 | Incognito Software |
2032 | Jadesign |
2033 | BVR |
2034 | Spirit Tech |
2035 | Spirit Tech |
2036 | Atronic |
2037 | Scott Karlin |
2038 | Howitch |
2039 | Sullivan Brothers Visual Engineers |
2040 | G I T |
2041 | Amigo Business Computers |
2042 | Micro E Ab |
2043 | Ralph Kruse |
2044 | Clearpoint Research |
2045 | Kodiak |
2046 | Phoenix Electronics |
2047 | No Name Shown |
2048 | Commodore Braunschweig |
2049 | Elaborate Bytes |
2050 | C-Ltd. |
2051 | Spartanics |
2052 | Computer Tuning |
2053 | Trans Data Systems |
2054 | Applied Systems & Peripherals Ltd. |
2055 | Amiga Solutions |
2056 | Adept Development |
2057 | Advanced Computer Design |
2058 | Sir Netics |
2059 | Expert Services |
2060 | Digital Art Systems |
2061 | Adept Development |
2062 | Expansion Technologies |
2063 | Alphatech |
2064 | Edotronik GmbH |
2065 | Logical Design Works |
2066 | Bowden, Williams, Full & Assoc. |
2067 | NES, Inc. |
2068 | Amdev |
2069 | Big Brother Security Systems |
2070 | Active Circuits Inc. |
2071 | ICD, Inc. |
2072 | Multi-Meg Electronique |
2073 | Kupke Computertechnik GmbH |
2074 | The Checkered Ball |
2075 | Hi Tension Computer Services Ltd. (UK) |
2076 | Elmtech Research, Ltd. (UK) |
2077 | Clartscreen, Ltd. (UK) |
2078 | Interworks |
2079 | Galysh Enterprises |
2080 | Realtime Games Software Ltd. |
2081 | GBS |
2082 | Circum Design Inc. |
2083 | Alberta Micro Electronic Center |
2084 | Bestech |
2085 | Lasar Fantasy |
2086 | Pulsar |
2087 | Ivis |
2088 | Applied Engineering |
2089 | Solid-State Design & Development |
2090 | Vison Quest |
2091 | Seaview Software |
2092 | BSC |
2092 | ADS (Advanced Development Software) |
2093 | Bernd Culenfeld |
2094 | American Liquid Light |
2095 | CEGITES |
2096 | EV Industries |
2097 | Silicon Peace |
2098 | Black Belt Systems |
2099 | Steve Yaeger |
2100 | ReadySoft |
2101 | Phoenix Micro Technologies |
2102 | Preferred Technology |
2103 | Rombo Productions |
2104 | Impulse Inc. |
2105 | Beta Unlimited |
2106 | Memory Expansion System, Ltd. |
2107 | Vortex Computer Systems GmbH |
2108 | Platypus Systems |
2109 | Gigatron OHG |
2110 | PG Electronics |
2111 | New Technologies Group |
2112 | Interactive Video Systems |
2113 | H. K. Computer |
2114 | C. H. Helfrich Elektronik |
2115 | Xanadu |
2116 | AMS |
2117 | X-Pert |
2118 | The Amiga Centre |
2119 | Digital Pacific |
2120 | Solid State Leisure |
2121 | Analog Electronics |
2122 | Cumana |
2123 | KAPS 2C Conception |
2124 | Mike Mason |
2125 | For Your Eyes |
2126 | Volkmar Breitfeld Computersysteme |
2127 | Sunrize Industries |
2128 | Scott Advanced Micro Designs |
2129 | Digital Micronics |
2130 | Alfa-Laval |
2131 | Multigros A/S |
2132 | Archos |
2133 | Icom Simulations |
2134 | Commodore Test Engineering Group |
2135 | Microcreations |
2136 | Shoestring Productions |
2137 | Faberushi |
2138 | Evesham Micro Ltd. |
2139 | Panagolin Laser Software |
2140 | Thomas Rudloff |
2141 | Daniel Hohabir |
2142 | GfxBase, Inc. |
2143 | Axellabs |
2144 | Roctec Electronics Inc. |
2145 | Omega Datentechnik |
2146 | Atlantis |
2147 | Skytec Computers |
2148 | Protar Electronics |
2149 | ACS |
2150 | University of Illinois |
2151 | Infinity Systems Design Group |
2152 | Trade It |
2153 | Suntec, Inc. |
2154 | Tritec Marketing |
2155 | Power Computing Ltd. |
2156 | MacroSystems |
2157 | Masoboshi GmbH |
2158 | HAL Software Hardware Handel |
2159 | Michael Lamm Computersysteme |
2160 | Digital Processing System |
2160 | bbdp Electronics |
2161 | Design Computer Systems |
2162 | The Station |
2163 | Bryan Williams |
2164 | Superformance Computer Engineering GmbH |
2165 | Overland Engineering |
2166 | Thomas Hamren |
2167 | Village Tronic |
2168 | Toolbox Design |
2169 | Digital Processing System |
2170 | Superformance |
2171 | Utilities Unlimited |
2172 | phase 5 |
2180 | Juergen Kommos |
2174 | Electronic Design |
2175 | James Cook University of North Queensland |
2176 | Amitrix Development |
2177 | Ferranti |
2178 | Leviathan Development |
2179 | United Video Inc. |
2180 | GPSoft Pty. Ltd. |
2181 | O. Bausch |
2182 | CP Computer |
2183 | AMOK - Amiga Module & Oberon Klub |
2184 | ITEK Neser & Sieber GbR |
2185 | Phillip C. Lello |
2186 | Cyborg Design Services |
2187 | G2 Systems |
2188 | Pro System Computersysteme |
2189 | MSPI (Markt & Technik) |
2190 | Altatech |
2191 | NewTek |
2192 | Hardware Design Udo Neuroth |
2193 | Viona Development |
2194 | Marpet Developments |
2195 | Ingenieurbuero Helfrich |
2196 | The Neo Group |
2197 | Cyon |
2198 | Bob Research Group |
2199 | Richmond Sound Design Ltd. |
2200 | US Cybernetics |
2201 | Fulvio Ieva |
2202 | Silicon Studio |
2203 | Micro System Devices |
2204 | Conspector Entertainment |
2205 | Laserforum |
2206 | Elbox Computer |
2207 | Applied Magic Inc. |
2208 | SDL Ltd. |
3643 | AmigaKit |
4626 | Individual Computers |
4648 | Flesch Hornemann Computer Elec. |
4754 | MacroSystems |
5000 | ITH |
5001 | VMC |
5010 | Ambience Creation Technology |
5011 | Creative Development |