Copyright (c) Hyperion Entertainment and contributors.

Amiga Hardware Manufacturer ID Registry

From AmigaOS Documentation Wiki
Jump to navigation Jump to search

Your Manufacturer Number

Attention hardware manufacturers. If you are developing a hardware expansion product for the Classic Amiga (e.g. 500, 2000, 3000) 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 (decimal) 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
5015 KryoFlux, Ltd.
61453 Forefront Technologies Inc.

For any changes/additions to this registry please use the AmigaOS web site contact form.