Most of Motronic maps use the same format.
The code is usually in the beginning of the EPROM, simply because IT vectors start at address $0000. This code is general purpose, very configurable and usable by any Bosch's customer. The other part of the EPROM contains customer's code and data (maps or parameters).
Maps can be 1D or 2D. They are all accessed by the same procedure which
is given a table address and the map number.
We'll call this table Map descriptors.
Each byte of this table describes where and how to find the needed map. The meaning of each map has been defined once forever by Bosch, they refer to these tables in their code. The customer is free to define whether the map is 1D or 2D, which parameters it depends on and where to find it.
The map access procedure reads from DPTR pointers the location of the
table and reads the byte in the requested position (as in a 1D array).
If the read byte is even then the map is 1D, if it's odd - 2D.
In both cases the rest of the byte is used to find the address of the
map. The address is found at: (<map directory addr> +
The map directory address is given by the caller or is known by the procedure. The directory stores 2 byte addresses with the MSByte first. The directory is usually straightforward to find as it contains addresses that point at the socend part of the EPROM address space.