top | item 45822013

(no title)

thristian | 3 months ago

Steve Wozniak was incredibly foresighted when designing the Apple II, to make sure that expansion cards could disable the default ROMs and even disable the CPU, making this kind of thing possible. The article mentions a chunk of memory "used by peripheral devices"; every expansion card got its own slice of the address space, so you could plug a card in any slot and it would Just Work (maybe you'd have to tell software what slot the card was in). I was very disappointed when I "upgraded" to a 386 and suddenly cards had to be manually configured to non-conflicting IRQs and I/O addresses.

discuss

order

Joe_Cool|3 months ago

And if something didn't work he included a complete debugger inside "Apple II Machine Language Monitor" in ROM so you could always just disassemble and poke at things, pipe disassembly to the printer, read memory, change code, add own macros to CTRL+Y and rerun stuff. All that without extra software or a massive pile of printed assembly.

from BASIC:

  CALL -151 (short for CALL 65385, but BASIC can't handle unsigned INT so that wouldn't work)  
  F666G  
and the machine is your playground.

kurlberg|3 months ago

I don't think this is entirely due to Wozniak. Early "home" computer systems were based on connecting cards to a bus (eg the S-100 bus), eg. with one card supporting the CPU, another RAM, a third for disk drive, video card etc, etc. The cards where then memory mapped, presumably you controlled the memory mapping by setting jumpers. (I guess you're saying that Apple II managed this automatically?) Of course the full story might be a bit more complicated: 6502 and 6800 used memory mapped I/O, whereas 8080 (and Z80?) had certain I/O pins coming out of the CPU.

raw_anon_1111|3 months ago

Memory mapping happened automatically. Each card was mapped based on the slot it was in. $C000 - $C700 I believe with each slot assigned 256 bytes.

TMWNN|3 months ago

>to make sure that expansion cards could disable the default ROMs and even disable the CPU, making this kind of thing possible.

Today we would call this bus mastering, yes?

wslh|3 months ago

Clearly Steve Wozniak was a very unique [technical and geeky] guy at that time. Thinking about interoperability at that time was prophetic.

cbm-vic-20|3 months ago

I woldn't go so far as to say it was "prophetic". Contemporary DEC PDP-8 (OMNIBUS) and PDP-11 (UNIBUS / QBUS) systems have a similar approach to "interoperability", where cards for peripherals were also mapped into the machine's address space. It was great that Woz saw the utility of this and brought it into the homebrew/microcomputer design.

tasty_freeze|3 months ago

I think it was more driven by his own desire to not limit what future hardware hacking he wanted to do with this computer he just designed.