3 ms·
That's a good question. I'm completely guessing, but the Datapoint probably used 0x00 and 0xff as HALT opcodes so you ended up in uninitialized or missing memor
by kens 4y ago
That's a good question. I'm completely guessing, but the Datapoint probably used 0x00 and 0xff as HALT opcodes so you ended up in uninitialized or missing memory the processor would halt. Maybe 0x01 was the "intentional" halt instruction.
- rep_lodsb 4y ago>Maybe 0x01 was the "intentional" halt instruction. 00 would be "increment A", 01 "decrement A". I would guess these weren't supported because of how that register is connected to the ALU? FF = "load memory from memory", same as the HLT on the 8080.
- jchw 4y agoAh, that's a really good point. Having 0x00 be a NOP or maybe worse, instruction that actually is valid and does something, would be a hell of a lot worse for debugging, because after the fact it'd be extremely hard to figure out how you got there.
- pcwalton 4y agoIt's also bad for security. IIRC code execution is easier on MIPS because 0x0 is a NOP.
- jchw 4y agoDefinitely. Lot easier to heap spray when most of the memory is a free nopslide.
- anyfoo 4y agoIt's worth nothing though, that that likely wasn't much of a consideration at all at the time. Networks for one were barely a thing, at least on systems so tiny that they'd use an 8086. And even when they were, they tended to be extremely trusting until way into the 90s.
- deleted 4y ago[deleted]