[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Intel is lucky they have Apple



David Empson wrote:

<snip>

From what i remember, cost is also why we got 65xx instead of a 68xx..
The boys couldnt afford the 68xx...


From memory, the cost difference was in the order of $25 for a 65C02 vs
$300 for a 6800.

Exactly (although sometimes Woz recalls the 6502 price as $20).

But Steve W did plan for either in the beginning from what i heard. (
though having never actually touched a model I, i could have been mislead
)


The 6800 and 6502 have several control signals which differ, but the
address, data and power pins are in the same place. The different pins
are:

Pin     6502                    6800

2       RDY input               HALT input
3       Phi1 clock output       Phi1 clock input
5       N.C.                    Valid Memory Address output
7       SYNC output             Bus Available output
36      N.C.                    Data Bus Enable input
37      Phi0 clock input        Phi2 clock input (equivalent)
38      Set Overflow input      N.C.
39      Phi2 clock output       Three-State Control input

I doubt they had any intention of using the 6800 in an Apple ][, but it
might have been allowed for in the Apple I. I've never seen the
schematic or board layout (let alone a real machine). It would have
required a fair amount of alternative control logic or jumper settings,
but many of the signals in question can be ignored if not using DMA or
similar techniques.

And the Apple I did not use anything fancy.

The 6800 is generally more flexible than the 6502, e.g. it has a 16-bit
stack pointer and index register, two 8-bit accumulators, a more
complete set of branch instructions, etc. Its main disadvantage is only
having a single index register, doesn't have indirect addressing modes,
and the only indexing mode is an unsigned 8-bit offset from the index
register. The 6801/6803 was a slight improvement, as they added a 16-bit
accumulator (combining the two 8-bit ones).

My job started out doing assembly language processing on the 6301/6303,
which is a Hitachi variant of the 6801/6803 with a few more
instructions. A memory move operation was pretty awful: the best
solution I came up with was self-modifying code for one of the addresses
and using the X register for the other address, and it still took
something like 20 cycles per byte moved. Dealing with data structures
larger than 256 bytes is also a pain due to the 8-bit offset from X.

I have a few 6303 SBC's that I was programming a few years ago, and I
found, as you did, that the apparently greater versatility did not
translate into better or faster code.  The 6502 was clearly superior.

Indirect addressing is a wonderful way to avoid incessant address
shuffling to/from the index register.

Although the two architectures are Turing equivalent, the 6502 is much
more adaptable to tight code and fast data operations.  But the larger
stack of the 68xx/63xx is useful to compiler writers who want to use it
directly as a procedure stack.

Fiddling the 68xx/63xx stack pointer is also the fastest way to do a
data move--essentially converting it into another index register.

-michael

Music synthesis for 8-bit Apple II's!
Home page:  http://members.aol.com/MJMahon/

"The wastebasket is our most important design
tool--and it is seriously underused."