I was busily applying for jobs within my current employer; we have job openings all over the United States. (I'm hoping that telecommuting will be feasible.) One of the jobs for which I was applying asked me to describe a complex technical problem that I needed to solve, and how I did so. I decided to give an example that, when I look back on it now, makes me realize what a hopeless nerd I was.
I was working for a company that sold Interdata minicomputers. At the time, if you bought a minicomputer, you bought extra RAM from the minicomputer maker. An upstart named Keronix decided to make some money by making aftermarket RAM. The various minicomputer makers were not amused or pleased. No one ever established a connection between Data General and the arson fire that destroyed Keronix--but there were people who did not find this implausible.
Anyway, what I explained on the application was that:
My employer had an Interdata 7/16 minicomputer--but when they put the Keronix RAM into it, it would no longer boot the Interdata operating system. My job was to figure out why.As I said: born to be a nerd.
1. I solved the problem by single stepping through the entire boot sequence, using a somewhat out of date listing of the operating system. I did this by inserting branch to self instructions into memory through the front panel of the minicomputer. (This was very easy: the Branch Short * instruction was a single word--I think X'22FE'.)
2. By this approach, I was able to determine that the last instruction executed before everything went haywire was an OC (Output Command) starting a DMA operation to the hard disk controller. The instruction immediately following the OC was suddenly an illegal instruction.
3. Why? Because immediately after the OC instruction, bit 13 of every word in the first 16K of RAM suddenly turned to zero. This meant that the next instruction was illegal (not defined in that processor's instruction set).
4. The illegal instruction interrupt now took place. And the first instruction of the illegal instruction interrupt service routine (ISR)? Why, that was a DI (Disable Interrupts) command. But because bit 13 was now zero, that DI command was itself illegal--and so the illegal instruction ISR started up again. And again.
This was enough information for our hardware engineer to start poking around, and discover that there was something not quite to spec about the hard disk controller--that caused bit 13 of RAM to turn to zero.
This was my first job, when I was 17.
No comments:
Post a Comment