that's a load of horseshit, my friend, and here's why:
megasquirt is written in C, then translated to motorolla assembler, that same HEX code you mention. >NOBODY< writes things in machine code anymore, they're all compiled from either C, C++, or in the case of Formula1 ecus, labview processes, where they stuff a very powerful processor into the box and waste cycles so they can easily model things.
storing data is storing data. it's bits, you're not going to escape an 8 bit byte, a signed/unsigned integer being X bytes long, and that value being translated into a meaningful value inside the source code.
since there's more than one person working on the siemens ecus and programming various aspects of them, it will be in a common language all the engineers can understand, so that's most likely written in C.
enter, the spec sheet for the MS3 main processor, this thing here:
sak-c167cs-lm is the name on it. put it into google, gets you the datasheet for the whole thing, explaining all the registers, all the pins, etc.
http://www.datasheetcatalog.org/datasheets/2300/274904_DS.pdf open it up for yourself and follow along.
looks pretty straight forward, 25/33mhz cpu, MS43 has an onboard crystal, so it's not using the internal clock. 16 megabyte addressable space - interesting, yes ? chip itself doesn't have the amount of space required, so they can offload this stuff into external chip, which is why this particular CPU was picked.
– 3 KBytes On-Chip Internal RAM (IRAM)
– 8 KBytes On-Chip Extension RAM (XRAM)
– 32 KBytes On-Chip Program Mask ROM
is the memory on the chip itself. most likely has the bootloader that fires it up and loads the memory off the remote chip, or many chips.
pdf said:
C167CS-4R, C167CS-L
• High Performance 16-bit CPU with 4-Stage Pipeline
– 80/60 ns Instruction Cycle Time at 25/33 MHz CPU Clock
– 400/303 ns Multiplication (16 × 16 bit), 800/606 ns Division (32/16 bit)
– Enhanced Boolean Bit Manipulation Facilities
– Additional Instructions to Support HLL and Operating Systems
– Register-Based Design with Multiple Variable Register Banks
– Single-Cycle Context Switching Support
– 16 MBytes Total Linear Address Space for Code and Data
– 1024 Bytes On-Chip Special Function Register Area
• 16-Priority-Level Interrupt System with 56 Sources, Sample-Rate down to 40/30 ns
• 8-Channel Interrupt-Driven Single-Cycle Data Transfer Facilities via
Peripheral Event Controller (PEC)
• Clock Generation via on-chip PLL (factors 1:1.5/2/2.5/3/4/5),
via prescaler or via direct clock input
• On-Chip Memory Modules
– 3 KBytes On-Chip Internal RAM (IRAM)
– 8 KBytes On-Chip Extension RAM (XRAM)
– 32 KBytes On-Chip Program Mask ROM
• On-Chip Peripheral Modules
– 24-Channel 10-bit A/D Converter with Programmable Conversion Time
down to 7.8 µs
– Two 16-Channel Capture/Compare Units
– 4-Channel PWM Unit
– Two Multi-Functional General Purpose Timer Units with 5 Timers
– Two Serial Channels (Synchronous/Asynchronous and High-Speed-Synchronous)
– Two On-Chip CAN Interfaces (Rev. 2.0B active) with 2 × 15 Message Objects
(Full CAN/Basic CAN), can work on one bus with 30 objects
– On-Chip Real Time Clock
• Up to 16 MBytes External Address Space for Code and Data
– Programmable External Bus Characteristics for Different Address Ranges
– Multiplexed or Demultiplexed External Address/Data Buses with 8-Bit or 16-Bit
Data Bus Width
– Five Programmable Chip-Select Signals
– Hold- and Hold-Acknowledge Bus Arbitration Support
• Idle, Sleep, and Power Down Modes with Flexible Power Management
• Programmable Watchdog Timer and Oscillator Watchdog
• Up to 111 General Purpose I/O Lines,
partly with Selectable Input Thresholds and Hysteresis
here is the pinout:
since there are only 24 ADC converters, those might be goign through an input multiplexer that the main cpu will talk to via an i2c or another interface to grab additional analog inputs, if there are not enough of on-cpu ADC converters.
REGARDLESS, if you look carefully, the pins with a line above the name are service pins, RSTOUT, RSTIN, CLK, etc, these are for an ICD , in-circuit-debugging to be able to read/write to the processor. there's also the RXD0 and TXD0, that's serial input/output, wonder what's on there and wonder where those go to.
the processor is a C166 family, if you google around, you should be able to find the assembler instructions, if you were so inclined you could decompile the large dumps, which hoppefully include the actual machine code, they'll have all the comparisons, and all the instructions. this is very tedious and i do not wish it upon anyone.
megasquirt 1 was written in motorolla assembly.
in conclusion, it doesn't matter what the hell the thing is written in, it will still store data in a certain format, which should be predictable, and most importantly be meaningful for the program that is using it.
if there's 120 in the cell, that's fine, that 120 may mean 120 half degrees, 120 1/3rd degrees.
there is >ZERO< magic with this, and if the cpu is not internally locked against flashing, one should be able to write a full replacement for whatever siemens put on there.