Anyone know?.. I know of the 68HC11, and maybe the 68705?..
any others?
Steve
The 68HC11 might be based on the 6809 (I don't know), but it certainly
is very different... They have different addressing modes and different
registers. I don't know about the 68705. As far as I know, you could
say all the 68* processors are based on the same instruction set, including
the 68000.
--
Michael Coughlin mi...@gnu.ai.mit.edu Cambridge, MA USA
As far as I am aware the 6811 is based on the 6805 family, but with some
enhancements. The 6805 is itself a rehash of the 6800uP to make it into
a single chip micro. The 6800, 6805 and 6809 are similar in architectures
but are not completely code compatible. The 6809 is closer to the 6800
than the 6805. The 68000 is totally incompatible in terms of machine code.
I do not know of any 6809 compatible processors.
--
P. J. Harding
CDSS Ltd.
I don't think the above is quite right. I'm doing this from memory, but
a bunch of years ago I did the side-by-side comparisons from the data
books, and concluded that the HC11 is a 6801 with another register and
a divide instruction.
The 6800 is the base of the tree for all of these families - the 01/HC11,
05, and 09 series'.
Being Motorola parts, the 68Ks retain much of the 8-bit philosophy, such
as big-endianess (?), but it's in no way upward compatible with them. It's
much more like a PDP-11 than anything else.
This has been previously mentioned, but the Hitachi 6309 parts are code-
compatible with the 6809s.
--
Jonathan Levine | jona...@virtual.cuc.ab.ca
|
voice: 403-261-5652 | Virtual Universe Corporation (Calgary AB)
fax : 237-0005 | Survival Research Laboratories (SF CA)
>>As far as I am aware the 6811 is based on the 6805 family, but with some
>
>I don't think the above is quite right. I'm doing this from memory, but
>a bunch of years ago I did the side-by-side comparisons from the data
>books, and concluded that the HC11 is a 6801 with another register and
>a divide instruction.
>
>The 6800 is the base of the tree for all of these families - the 01/HC11,
>05, and 09 series'.
>
>Being Motorola parts, the 68Ks retain much of the 8-bit philosophy, such
>as big-endianess (?), but it's in no way upward compatible with them. It's
>much more like a PDP-11 than anything else.
>
>This has been previously mentioned, but the Hitachi 6309 parts are code-
>compatible with the 6809s.
I stand corrected, but what does 'big-endianess' mean?
Big-endian and little-endian are adjectives applied to a CPU or
computer. They describe which end of a number is stored at lower
locations in memory. Suppose I wanted to store the number $31415926
(that's hexadecimal), starting at location $100:
Big-endian Little-endian
100 31 26
101 41 59
102 59 41
103 26 31
As you can see, a little-endian architecture puts the least significant
byte first, while the big-endian version puts it last.
IMHO, big-endian is more intuitive. The advantage of little-endian is
that it is a little better suited for multiple-precision arithmetic.
For what it's worth, all Motorola processors are big-endian; all Intel
processors are little-endian. The Internet protocols are big-endian.
--
Stephen Trier (tr...@ins.cwru.edu - MIME OK)
Network Software Engineer
IRIS/INS/T
Case Western Reserve University
Major Correction:
MC68HC11 is the HCMOS follower of MC6801/3 , having about 91 new instructions
and one new register (Y index register)
the porting of an Mc6800/01/02/03/08 application to 68HC11 Is quite easy .
MC6809 is the best of motorola's NMOS 8bit processors (HC11 is HCMOS and 68K
is 16bit) and porting from previous exept HC11 is also pretty easy.
porting from MC6809 to HC11 may be easy but only in the unprobable case
if user stack pointer is not used, nor fancy postincrements and predecrements,
and if the programmer that wrote 6809 stuff did not have proper knowledge
of 'Oh nines powerfull instructionset enhancements, but such programmers would
get fired, would'nt they?
MC6805 family was downgraded 6800/02/01 with embedded controlling in mind
(most 6805 variants have internal ROM or EPROM and more or much more I/O)
MC68705xX is eprom variant of NMOS 6805xX
MC68HC705xX is eprom variant of MC68HC05xX (here x is letter and X is number)
MC1468705xX is eprom variant of MC146805
common denominator for previous 3 lines of totas some 200 processors is '6805'
or nowdays HC05 for the middle
MC6804/MC68704 and MC68HC04/MC68HC704 were attempt to get 8bit MCU at 4bit
price, those were downgraded 6805's with special 1bit serial bus at 11MHz
a good basis for studying Motorola's 8bit family genealogy is the 1984/1985
8bit microprocessor & peripherial databook (now obsolete) pages 1-2..1-5
it was printew when there was only 1 HC11 variant and only 1 HC05 variant.
further enligtment might be found from the latter 1988 book DL139 or
Microprocessor,microcontroller and peripherial Data Vol I pages 1-2,1-3
nowdays HC11 family has more variants than total of all M68xx NMOS MPU's
(that is 6805 nmos excluded)
and the MC68HC08 will continue 68HC05 family upwards as MC68HC16 does to HC11
--
Disclaimer: opinions are and will stay mine, my employer just pays my salary
Eero "HC11F1" A. Sarlin E-Mail : ee...@gandalf.field.fi
Motorola FAE HC11/HC16/DSP56K /Field Oy.
sysop of Field OTP (in Finland 9700-8560) Phone : +358 0 777 57 237
You'll run into a lot of this if you read the architecture groups. It
refers to the order in which sections of words wider than the data path
are stored. For example, in an 8-bit machine like the 09 or HC11, the
two-byte address is stored: Upper byte in lower storage byte,
lower byte in lower storage byte +1. Therefore the address $90AB stored
at $1234 would have $90 in $1234 and $AB in $1235. The CPU reads out the
16 bit word in the same order as you'd read it. This is big-endian.
Some processors, like Intel (ugh), reverse this byte ordering, and are
called little-endian. In architecture this is one of those areas in
which people get religious. I happen to prefer the Motorola method.
>In article <743070...@cdss.demon.co.uk> Pe...@cdss.demon.co.uk writes:
>>
>Some processors, like Intel (ugh), reverse this byte ordering, and are
>called little-endian. In architecture this is one of those areas in
>which people get religious. I happen to prefer the Motorola method.
Which other 8-bit cpus are also little endian? I know the 65xx series
processors are. My religious leaning is also towards big endian, i quote from
the Motorola New Testament: "And the big endians shall rise up, from the most
significant to the least, squashing those little endians in their wake"
Lindsay Meek
Laurent Desnogues
The 6809 I regard as the Rolls-Royce of 8 bit processors. It's a shame that
it came on the scene so late that it got overrun by 16 bit machines (Wasn't
the 68000 released in the same year as the 6809?). My first "real" computer
was a 6809 machine - long live 6809!!
==============================================================
Bruce Ward wa...@scico1.chchp.ac.nz
Christchurch Polytechnic Phone: +64-3-379 8150
Christchurch, New Zealand Fax: +64-3-364 9468
==============================================================
How about half a disassembler written in Perl?? (Only about 2 hours work --
mostly typing in the instruction set. Still needs support for multi-byte
op-codes. This was actually written for the 68HC11 and if you choose to modify
it will give an idea of how differnt the 11 and 09 really are. Well here it is
.. don't laugh to hard :-)
---------------------8<---Cut here--------8<----------------------------------
#!/usr/local/bin/perl
# Use the file they specified, if specified
open(STDIN,$ARGV[0]) || die "Can't open $ARGV[0]: $!\n"
if $ARGV[0];
%formats = (
'dd mm rr', "%4.4X %2.2X %2.2X %2.2X %2.2X %s \$%2.2X,#\$%2.2X,\$%4.4X\n",
'ff mm rr', "%4.4X %2.2X %2.2X %2.2X %2.2X %s \$%2.2X,X,\$%2.2X,\$%4.4X\n",
'dd mm', "%4.4X %2.2X %2.2X %2.2X %s \$%2.2X,#\$%2.2X\n",
'ff mm', "%4.4X %2.2X %2.2X %2.2X %s \$%2.2X,X \$%2.2X\n",
'jj kk', "%4.4X %2.2X %2.2X %2.2X %s #\$%2.2X%2.2X\n",
'hh ll', "%4.4X %2.2X %2.2X %2.2X %s \$%2.2X%2.2X\n",
'rr', "%4.4X %2.2X %2.2X %s \$%4.4X\n",
'dd', "%4.4X %2.2X %2.2X %s \$%2.2X\n",
'ii', "%4.4X %2.2X %2.2X %s #\$%2.2X\n",
'ff', "%4.4X %2.2X %2.2X %s #\$%2.2X,X\n",
'', "%4.4X %2.2X %s\n",
);
# init the array of OpCodes
@map = (
"TEST",
"NOP",
"IDIV",
"FDIV",
"LSRD",
"ASLD",
"TAP",
"TPA",
"INX",
"DEX",
"CLV",
"SEV",
"CLC",
"SEC",
"CLI",
"SEI",
"SBA",
"CBA",
"BRSET dd mm rr",
"BRCLR dd mm rr",
"BSET dd mm",
"BCLR dd mm",
"TAB",
"TBA",
"(Page2)",
"DAA",
"(Page3)",
"ABA",
"BSET ff mm",
"BCLR ff mm",
"BRSET ff mm rr",
"BRCLR ff mm rr",
"BRA rr",
"BRN rr",
"BHI rr",
"BLS rr",
"BCC rr",
"BCS rr",
"BNE rr",
"BEQ rr",
"BVC rr",
"BVS rr",
"BPL rr",
"BMI rr",
"BGE rr",
"BLT rr",
"BGT rr",
"BLE rr",
"TSX",
"INS",
"PULA",
"PULB",
"DES",
"TSX",
"PSHA",
"PSHB",
"PULX",
"RTS",
"ABX",
"RTI",
"PSHX",
"MUL",
"WAI",
"SWI",
"NEGA",
"FCB aa",
"FCB aa",
"COMA",
"LSRA",
"FCB aa",
"RORA",
"ASRA",
"ASLA",
"ROLA",
"DECA",
"FCB aa",
"INCA",
"TSTA",
"FCB aa",
"CLRA",
"NEGB",
"FCB aa",
"FCB aa",
"COMB",
"LSRB",
"FCB aa",
"RORB",
"ASRB",
"LSLB",
"ROLB",
"DECB",
"FCB aa",
"INCB",
"TSTB",
"FCB aa",
"CLRB",
"NEG ff",
"FCB aa",
"FCB aa",
"COM ff",
"LSR ff",
"FCB aa",
"ROR ff",
"ASR ff",
"ASL ff",
"ROL ff",
"DEC ff",
"FCB aa",
"INC ff",
"TST ff",
"JMP ff",
"CLR ff",
"NEG hh ll",
"FCB aa",
"FCB aa",
"COM hh ll",
"LSR hh ll",
"FCB aa",
"ROR hh ll",
"ASR hh ll",
"ASL hh ll",
"ROL hh ll",
"DEC hh ll",
"FCB aa",
"INC hh ll",
"TST hh ll",
"JMP hh ll",
"CLR hh ll",
"SUBA ii",
"CMPA ii",
"SBCA ii",
"SUBD jj kk",
"ANDA ii",
"BITA ii",
"LDAA ii",
"FCB aa",
"EORA ii",
"ADCA ii",
"ORAA ii",
"ADDA ii",
"CPX jj kk",
"BSR rr",
"LDS jj kk",
"XGDX",
"SUBD dd",
"CMPA dd",
"SBCA dd",
"SUBD dd",
"ANDA dd",
"BITA dd",
"LDAA dd",
"STAA dd",
"EORA dd",
"ADCA dd",
"ORAA dd",
"ADDA dd",
"CPX dd",
"JSR dd",
"LDS dd",
"STS dd",
"SUBA ff",
"CMPA ff",
"SBCA ff",
"SUBD ff",
"ANDA ff",
"BITA ff",
"LDAA ff",
"STAA ff",
"EORA ff",
"ADCA ff",
"ORAA ff",
"ADDA ff",
"CPX ff",
"JSR ff",
"LDS ff",
"STS ff",
"SUBA hh ll",
"CMPA hh ll",
"SBCA hh ll",
"SUBD hh ll",
"ANDA hh ll",
"BITA hh ll",
"LDAA hh ll",
"STAA hh ll",
"EORA hh ll",
"ADCA hh ll",
"ORAA hh ll",
"ADDA hh ll",
"CPX hh ll",
"JSR hh ll",
"LDS hh ll",
"STS hh ll",
"SUBB ii",
"CMPB ii",
"SBCB ii",
"ADDD jj kk",
"ANDB ii",
"BITB ii",
"LDAB ii",
"FCB aa",
"EORB ii",
"ADCB ii",
"ORAB ii",
"ADDB ii",
"LDD jj kk",
"(Page4)",
"LDX jj kk",
"STOP",
"SUBB dd",
"CMPB dd",
"SBCB dd",
"ADDD dd",
"ANDB dd",
"BITB dd",
"LDAB dd",
"STAB dd",
"EORB dd",
"ADCB dd",
"ORAB dd",
"ADDB dd",
"LDD dd",
"STD dd",
"LDX dd",
"STX dd",
"SUBB ff",
"CMPB ff",
"SBCB ff",
"ADDD ff",
"ANDB ff",
"BITB ff",
"LDAB ff",
"STAB ff",
"EORB ff",
"ADCB ff",
"ORAB ff",
"ADDB ff",
"LDD ff",
"STD ff",
"LDX ff",
"STX ff",
"SUBB hh ll",
"CMPB hh ll",
"SBCB hh ll",
"ADDD hh ll",
"ANDB hh ll",
"BITB hh ll",
"LDAB hh ll",
"STAB hh ll",
"EORB hh ll",
"ADBC hh ll",
"ORAB hh ll",
"ADDB hh ll",
"LDD hh ll",
"STD hh ll",
"LDX hh ll",
"STX hh ll",
);
$offset = 0xA000;
# $idx -- index into opcode map
# @inst -- instruction template for dis-assembler
# $mn_inst -- mnemonic form of the instruction
while (($len = read(STDIN,$data,1)) == 1)
{
$idx = unpack('C1', $data);
@inst = split(" ", $map[$idx]);
read(STDIN, $data2, $#inst);
@args = unpack("C$#inst", $data2);
if ($rel = ($inst[$#inst] =~ 'rr'))
{
@args2 = unpack("c$#inst", $data2);
$args2[$#args] = $offset + @inst + $args2[$#args2];
}
$mn_inst = shift(@inst);
$fmt = $formats{join(" ",@inst)};
printf($fmt, $offset, $idx, @args, $mn_inst, ($rel == 0) ? @args: @args2);
$offset += @inst + 1;
}
---------------------8<---Cut here--------8<----------------------------------
Also another thread asked about free C for the 09. I know that GNU C has
been aimed at the 09, can someone please post the location?
-----------------------------------------------------------------------------
Charles H. Stevens | cha...@rosemount.com
Senior Technical Support Specialist |
Rosemount Inc. (M.S. PE-03) |
8200 Market Blvd. | voice (612) 949-7461
Chanhassen, MN 55317 | fax (612) 949-7626