[HN Gopher] Motorola 6800
___________________________________________________________________
Motorola 6800
Author : PaulHoule
Score : 81 points
Date : 2022-06-24 15:39 UTC (7 hours ago)
(HTM) web link (en.wikipedia.org)
(TXT) w3m dump (en.wikipedia.org)
| jhallenworld wrote:
| This was my first microprocessor: I developed assembly language
| for it and the 6809 using Motorola's Exorciser development system
| (which was already old in the mid 80s when I used it). Here is a
| simulator I wrote for it, in case you want to try it in Linux or
| Cygwin:
|
| https://github.com/jhallen/exorsim
|
| 8 inch floppies! I remember we had an old GE chain-train printer
| for it which was awesome because it was so fast.
| aliswe wrote:
| Serious question, why is this on Hacker News? is it a classic of
| some sort?
| Tor3 wrote:
| The 6800 definitely is a classic, yes. The classics included at
| least 6800, 6502, 8080, and Z80. (To some extent 8085, but as
| an "expanded" 8080 the Z80 dominated.) The four of them powered
| the most iconic systems at the start of the microprocessor
| "takeover" at the end of the seventies (at the same time as I
| entered my electronics education). The 6800 was kind of left
| behind by the others eventually, but was used in e.g. the SWTPC
| 6800, and also in a _lot_ of minicomputer (e.g. DEC)
| peripherals at the time (including variants like the 6802 with
| a little on-board RAM)
| AnimalMuppet wrote:
| Was the 8085 ever used much as a microcomputer CPU? I've seen
| it as an embedded CPU, but I don't recall it getting much run
| as a general-purpose CPU.
| FullyFunctional wrote:
| With the optics of _compiled_ code, how do the various 8-bitters
| stack up? (6809/6811, 65C02, Z80, H8, ...)? One would have to
| account for the frequency allowed by the ISA at iso-technologies
| (which makes including AVR somewhat tricky).
|
| I only have experience with Z80 and 65C02 and I believe the
| consensus is that a 4 MHz Z80 beats a 2 MHz 65C02, but neither is
| a particularly nice compiler target.
| klodolph wrote:
| Just for modern perspective... you can use SDCC. It's an open-
| source optimizing C compiler targeting small microprocessors
| like the Z80 and various others. The project itself is terribly
| run--the maintainers recently pushed out an ABI change which
| broke everyone's code, but released it as a minor version bump.
| This ABI change did speed up the code, but that's small
| consolation to anyone who ended up with broken code.
|
| IMO the Z80 is a lot nicer compiler target than the 6502,
| because the stack pointer is 16-bit and it's much easier to use
| the stack in general.
|
| There are a couple C compilers for 6502 (like cc65 and WDC's C
| compiler) but they're not quite as good as SDCC, as far as I
| can tell. They're also not as actively maintained.
| self wrote:
| Some of that can be gleaned from this benchmark, published in
| Byte, in 1981: https://en.wikipedia.org/wiki/Byte_Sieve
|
| Results for a few 8/16 bit processors are here (and on
| subsequent pages): https://archive.org/details/byte-
| magazine-1981-09/page/n193/...
| mysterymath wrote:
| I ran the C version of this benchmark using llvm-mos's Clang
| for the 6502. The results:
|
| 21.4 seconds 5793 bytes
|
| Which is middle of thepack for the Z80 benchmarks, but well
| below the 6502 ones. We're also using a slightly tweaked
| embedded printf written in C, so this could probably be
| improved somewhat there, sans any compiler changes.
| FullyFunctional wrote:
| Very cool. While obviously not ideal, the results are
| probably accurate within a small factor. Unfortunately
| there's no assembly version for 65C02 but Z80 does
| surprisingly well in this test.
|
| I muse what could be done with modern cross-compiler (SAT
| solving for optional code sequences?) A llvm backend for Z80
| has recently kicked back into gear:
| https://github.com/jacobly0/llvm-project
| Gordonjcp wrote:
| The 6809 is ridiculously suitable for running Forth, because
| you've got two stacks, a 16-bit accumulator, and you can
| implement NEXT in two instructions taking about three clocks
| each.
| cmrdporcupine wrote:
| Someone needs to write a WASM VM for it.
| cmrdporcupine wrote:
| I just don't think any of the 8-bits made good compiler
| targets. At least not C compilers. Not enough registers, even
| in the 6809.
| hashmash wrote:
| In theory, a smart compiler could make heavy use of the DP
| register (6809 feature) and then local variables within a
| compiled function could access these "fast" global variables
| instead. This was a common pattern when coding in assembly,
| and it's much faster than accessing variables off the stack.
| The function wouldn't be reentrant, but a compiler pragma
| could be used to enable/disable the DP mode. Declaring the
| local variables as static should be sufficient, however.
| jhallenworld wrote:
| I wrote a multi-tasking OS for the 6809 and used the DP to
| hold the current task ID: task local variables would be in
| the direct page.
| cmrdporcupine wrote:
| The WDC C compiler for the 65816 takes advantage of this
| (relocatable direct page). And the relocatable stack. In
| fact I believe what it does is relocate the stack to at
| least partially overlap the direct page.
|
| It's still an awkward target though.
| PaulHoule wrote:
| When you've got hardly any registers you don't have any
| choices how to allocate them. What's maddening is a chip like
| the 8086 where you have enough registers that how you
| allocate them matters, but still very little space to work
| in. You are left working hard on a register allocator that is
| still not going to be very food.
| rahen wrote:
| These processors were designed for assembly programming,
| hence their very CISC-y ISA. Some 8-bitters designed for
| compiled languages would be the AVR family.
| crest wrote:
| The 6809 had two 16 bit index registers, PC-relative
| addressing, and upper half of the stack and data page address
| was taken from special purpose registers instead of hardwired.
| It should be a fairly straight forward compiler target. On the
| other hand it was late to the game, expensive and not (much)
| faster than 8bit microprocessors. The 6502 very cheap, fast
| enough when it came out, but a really annoying compiler target.
| PaulHoule wrote:
| I had a TRS-80 Color Computer when I was kid which had one
| major drawback: it could only display 32 characters across
| the screen compared to 40 characters for the Apple ][, C64
| and most others at the time.
|
| The Coco could run an operating system called OS-9 which was
| Unix-influenced and came with a good C compiler and also a
| bytecode interpreted structure basic called BASIC09.
|
| I know C compilers were really popular among CP/M users
| running the Z-80 and 8080 chips and also on the IBM PC which
| had a segmentation system to reach beyond 64k that I thought
| felt really elegant in assembly language but was awkward for
| compilers.
|
| Where OS-9 had all the above beat was that it was a real
| multitasking OS and I had two terminals plugged into my coco
| in addition to the TV console and could use it like a
| minicomputer.
|
| When I switched to an IBM PC AT compatible my favorite
| programming language was Turbo Pascal which adds everything
| missing from Pascal to do systems programming. I switched to
| C when I went to college because that was supported on the
| the various UNIX workstations they had.
| jhallenworld wrote:
| The 6809 was nice, but I think the CoCo otherwise was crap.
| Aside from the 32 column display and awful color scheme,
| the built-in serial port was bit-banged. This meant that
| floppy drive and serial access could not happen at the same
| time. This is very relevant when trying to use OS-9.
|
| There was an external serial port as an option, but there
| was only one slot. So you also had to buy a slot expander
| (a Multi-Pak).
| PaulHoule wrote:
| I had the multi pak and the external uart. The entry
| level price of the coco was low but I think I got most of
| the peripherals available for it, particularly the disks
| were crazy expensive. Adding it all up I must have spent
| more than I spent on the AT clone that replaced it
| ($1200)
|
| In most ways the C-64 was a great machine but boy was the
| disk drive slow.
| jhallenworld wrote:
| Perfect system == 6809 + SIO from the Atari800 + C64 SID
| + IBM PC keyboard + C64 VIC or maybe V9938.
| [deleted]
| bitgif wrote:
| klelatti wrote:
| Worth mentioning the 6501 which was launched by MOS Technology
| alongside the 6502 and was pin-compatible with the 6800.
|
| Motorola sued alleging patent infringement and misappropriation
| of trade secrets.
|
| MOS Technology settled, paid Motorola $200,000 and dropped the
| 6501.
| dylan604 wrote:
| $200k sounds like such a small number, but it was the dropping
| of the offending chip that was the gotcha.
| kjs3 wrote:
| Well...200k in 1975 $'s. And MOS was a startup, basically. So
| not a trivial amount. But yeah, a big part of the initial
| pitch was "you can use your same hardware design but replace
| the $300 CPU with our $25 CPU".
| mark-r wrote:
| I knew a guy who tried to build a multi processor system
| with 16 6800s. Made a mistake with the power supply and
| ended up frying all of them.
| engineer_22 wrote:
| I just finished an undergraduate class on microcontroller
| applications that used a MC68HC12 dev board. We coded in Assembly
| and then later in C.
|
| I'm curious, is this a typical platform in other computer
| engineering programs in the US?
| PAPPPmAc wrote:
| The university I'm attached to used 68HC11-family dev boards
| for their intro embedded course until the early/mid 2010s, with
| a smattering of other platforms like 8051 derivatives in
| advanced classes, and have switched to ARM (Small Cortex M
| ARMs, typically TI TM4C123 TivaC boards) for almost all our
| embedded content since. Plus a few little Arduino based
| activities with the freshmen, though the form of that has
| changed over the years.
|
| The intro to embedded systems course used to be only taken by
| Computer Engineers around their Junior year, since ~2017 we do
| it a semester or so earlier and make the EEs take it too as
| part of a streamline; EEs no longer take the computer
| architecture course, and the new embedded course covers some
| basic architecture concepts.
|
| We still do the beginning of the semester in Assembly (we
| really only show them ARM Thumb) and the later part in C.
|
| Possibly the most revelatory thing about that course is that
| the low-level view means we find out and try to correct that
| most of our students (as second semester sophomores who have in
| theory passed at least two programming courses and a digital
| logic course) haven't the slightest idea what code actually
| means/does.
|
| Example: Every semester I've been involved, when we transition
| from assembly to C, we give a simple assignment to sort some
| arrays of (well documented) structs by a specified field and
| order, given the address where first element starts and length
| in elements, in both C and assembly. They are handed a starter
| project with a lightly-obfuscated object file that sets up the
| arrays, calls two provided function headers for them to fill
| in, then tests if the sorts succeeded. Details get changed
| every semester because students cheat compulsively on
| programming assignments, but it's always set up to be easy, the
| structs they handle in ASM are always 16 or 32b in length,
| stored aligned, etc.
|
| Many of them... struggle mightily for two weeks because they
| haven't actually retained anything about number representation,
| memory (size, layout, byte addressing), arguments, the
| difference between a value and a pointer, and so on. The course
| staff spend weeks doing patient remediation around that point
| in the semester. At least we get a chance to make another pass
| over that material and more of them get it after.
| shimonabi wrote:
| At our company we still use a MC68HC11 for an industrial
| device.
| exmadscientist wrote:
| Be careful -- they're rapidly going obsolete. No one wants to
| fab old EPROM processes, and no one wants to package PLCCs
| anymore. If it's neither of those, I think you've got a bit
| more time.
|
| There are "compatibles" out there, and some of them are very
| good indeed, but they're not without their hassles.
| mark-r wrote:
| I think I have a 68HC11 sitting around that I picked up for
| a project and never used. I wonder if it's worth anything?
| [deleted]
| mtnygard wrote:
| I had a similar course using the 68HC11... but that was in 1991
| or '92. I am (pleasantly) surprised to hear that this kind of
| class is still running. Haven't done embedded for a long time,
| so I don't know if the 68HC12 is current or not.
|
| Wouldn't worry thouhg. Even if that chip is not in wide use
| now, the skills you learned are transferrable to any other.
| awful wrote:
| The Heathkit/Zenith ET-3400 trainers with 6800s, and the
| accompanying Heath/Zenith coursework, were fantastic in 1982. 50+
| of us completed it that year, the class final was bit-banging the
| tune of "Anchors Away" as the instructor was a Navy officer and
| educator, retired to civilian teaching. I later learned machine
| language on broken superscalar mainframes as bit-chaser, but the
| 6800 were simply fantastic devices and prepared me well. Flat,
| shared memory, von Neumann architecture. Very nice op codes and
| indexing, as I recall. Ill have to go back to my coursework and
| reminisce...
| Salgat wrote:
| I learned assembly on a 68HC11 heathkit, damn those things were
| awesome!
| B1FF_PSUVM wrote:
| > Flat, shared memory [...] nice op codes and indexing, as I
| recall.
|
| Yeah, that was what the guy working with the Moto chips smirked
| at us slaving on Intel 808x contraptions, back in those days
| ...
| ChrisMarshallNY wrote:
| This was the first microprocessor I programmed.
|
| My kit was for the school I was in. It was an STD Bus-based card,
| nailed onto a piece of wood, with a hex keypad/display.
|
| The card had 256 whole bytes of RAM.
|
| We programmed it in machine code.
| dymk wrote:
| I built a small multitasking kernel with a friend with a 68000
| (m68000) in college. We implemented it on breadboards, I think
| with 30 or so feet of jumpers [0]. I had very little prior
| embedded experience, so it was trial by fire.
|
| It was a wonderful introduction to how kernels work (or at least
| concurrency and scheduling) at their most basic level, without
| having to deal with the complexity of virtual address spaces,
| memory protection, or the byzantine bring-up dance of register
| prodding that x86_64 needs. It prepared me well for my operating
| systems class the next year, and as far as I can tell, was the
| eye-catcher project that got me an internship on a team doing
| kernel development the following summer.
|
| The instruction set is also a dream. Super CISC-y, yet more
| enjoyable (and IMO easier to grok) than x86. Take a look:
| http://wpage.unina.it/rcanonic/didattica/ce1/docs/68000.pdf
|
| My favorite is DBcc - "Test condition, decrement, and branch".
| All in one instruction.
|
| [0] - https://i.imgur.com/MKD7wTv.jpg
|
| Here's the code - I have no idea how it works anymore, and I
| believe it's incomplete compared to what I had running. The
| complete code archive I think is lost to time -
| https://github.com/dymk/68k/blob/master/projects/libraries/l...
|
| My friend wrote up a much more comprehensive document on the
| build:
|
| https://github.com/ZigZagJoe/68k
|
| https://docs.google.com/document/d/1ejW_Ist19tIXeA5HtEWixaLo...
| pinewurst wrote:
| The 6800 is nothing like the 68000.
| dymk wrote:
| Well, it was the predecessor :)
| mek6800d2 wrote:
| There was the 6809 in between. I remember BYTE magazine's
| cover story, "A Microprocessor for the Revolution". Well,
| not quite, as it turned out! :)
| mark-r wrote:
| I never got to use the 6800, but did use both the 6809
| and 68000 in assembler. Both were a joy to work with.
| danachow wrote:
| The 6809 had some hobbyist/consumer prominence on this
| side of the pond in the TRS-80 CoCo - and some European
| similars. And there was a multitasking OS written for it
| - OS-9.
|
| OS-9 has an interesting history in its own right. It was
| ported to a wide range of subsequent architectures. All
| sorts of applications - Fairlight synths, Philips CD-i,
| most of the traffic lights in the US in the 80s and 90s
| to name a few.
| djmips wrote:
| Sort of. I mean they were both made by Motorola and both
| had then #6800 in them...
| Teknoman117 wrote:
| I think the x86_64 chips are fairly unique in terms of how
| hilariously awful the bring-up process is. I'd hate to be a
| microcode engineer on one of them.
|
| So much state. Then throw virtualization into the mix.
| [deleted]
| systems_glitch wrote:
| Very cool! Do note that the Wikipedia page is about the 6800
| (Sixty-Eight Hundred), though, not the 68K. A generation
| earlier, 8-bit, far less popular in end-user applications than
| the 68K. Still a good processor.
| Doctor_Fegg wrote:
| > "Test condition, decrement, and branch". All in one
| instruction
|
| The Z80 had that too - DJNZ (Decrement and Jump if Not Zero).
| Standard way of writing loops.
| ataylor284_ wrote:
| The 8080 lacked this, but even though the 8086 was more or
| less based on the 8080, this probably inspired the 8086
| LOOPNZ instruction. Same idea, hardcoded to use the CX
| register instead of B on the Z80. The unoffical nicknames for
| the AX, BX, CX, DX were accumulator, base, count, and data.
| CX was used for the count for all looping and string move
| instructions. Similarly, BX was special purpose for indirect
| operations and AX/DX for certain logic and arithmetic
| instructions.
| bonzini wrote:
| AX/CX/DX/BX (in machine code this is the order from 000 to
| 011) were intended as equivalent to AF/BC/DE/HL.
| drfuchs wrote:
| The IBM 360 had BCT back in 1964. Rumor had it that it was
| created for Fortran DO statements ("for-loops"), but IBM's
| compiler never emitted it.
|
| "The BCT instruction subtracts 1 from the value of the
| contents of the target register specified in the first
| argument. If the value in the target register after the
| subtraction is zero, no branch occurs. Otherwise the program
| branches to the specified address."
| tablespoon wrote:
| > We implemented it on breadboards, I think with 30 or so feet
| of jumpers [0]...
|
| > [0] - https://i.imgur.com/MKD7wTv.jpg
|
| Based on your description, I expected to see a picture of 30
| feet of breadboards filled with jumpers
| (https://en.wikipedia.org/wiki/Jumper_(computing)), maybe used
| as ROM or something. Your actual project was unfortunately much
| less ridiculous.
| musicale wrote:
| Aha, an 8-bit CPU post that isn't about the 6502 or Z-80!
| le-mark wrote:
| Where's the 8051 love?
| tibbydudeza wrote:
| Bill Mensch and Chuck Peddle - familiar names indeed.
| [deleted]
___________________________________________________________________
(page generated 2022-06-24 23:00 UTC)