Slashdot Mirror


Why the Z-80's Data Pins Are Scrambled

An anonymous reader writes "The Z-80 microprocessor has been around since 1976, and it was used in many computers at the beginning of the PC revolution. (For example, the TRS-80, Commodore 128, and ZX Spectrum.) Ken Shirriff has been working on reverse engineering the Z-80, and one of the things he noticed is that the data pins coming out of the chip are in seemingly random order: 4, 3, 5, 6, 2, 7, 0, 1. (And a +5V pin is stuck in the middle.) After careful study, he's come up with an explanation for this seemingly odd design. "The motivation behind splitting the data bus is to allow the chip to perform activities in parallel. For instance an instruction can be read from the data pins into the instruction logic at the same time that data is being copied between the ALU and registers.

[B]ecause the Z-80 splits the data bus into multiple segments, only four data lines run to the lower right corner of the chip. And because the Z-80 was very tight for space, running additional lines would be undesirable. Next, the BIT instructions use instruction bits 3, 4, and 5 to select a particular bit. This was motivated by the instruction structure the Z-80 inherited from the 8080. Finally, the Z-80's ALU requires direct access to instruction bits 3, 4, and 5 to select the particular data bit. Putting these factors together, data pins 3, 4, and 5 are constrained to be in the lower right corner of the chip next to the ALU. This forces the data pins to be out of sequence, and that's why the Z-80 has out-of-order data pins."

43 of 167 comments (clear)

  1. C=128 by rossdee · · Score: 4, Informative

    There was a Z-80 in the C=128 , but it wasn't used.
    There was virtually no CPM software adapted to the C=128

    Typically 128s mostly were used in C=64 mode

    1. Re:C=128 by Ihlosi · · Score: 4, Interesting
      There was a Z-80 in the C=128 , but it wasn't used.

      Yes, I found this part of the article amusing too.

      C128s were cobbled together from too many different parts. And they appeared when the 8-bit generation was already on its way out.

      However, the C128 mode had its uses. The BASIC was had lots of additional features (commands for music, graphics, sprites), and it had a built-in sprite editor. If you didn't know the C64 inside out and could do these things in assembly (blindfolded), the C128 mode gave you much more access to the machines capabilites. Too bad no company ever came up with a killer 8-bit machine. Z80 CPU, more than 64 kB RAM, sound and graphics like SID and VIC-II.

    2. Re:C=128 by scsirob · · Score: 5, Informative

      Too bad no company ever came up with a killer 8-bit machine. Z80 CPU, more than 64 kB RAM, sound and graphics like SID and VIC-II.

      Really? Ever heard of MSX? See: http://en.wikipedia.org/wiki/M...
      It came with graphics, sprites (TMS9918/9929) and was a standard design carried by several manufacturers.

      --
      To Terminate, or not to Terminate, that's the question - SCSIROB
    3. Re:C=128 by MindPrison · · Score: 5, Informative

      Too bad no company ever came up with a killer 8-bit machine. Z80 CPU, more than 64 kB RAM, sound and graphics like SID and VIC-II.

      Really? Ever heard of MSX? See: http://en.wikipedia.org/wiki/M... It came with graphics, sprites (TMS9918/9929) and was a standard design carried by several manufacturers.

      Ah, MSX... weirdest computers in history. The Yamaha MSX computer was an awesome music computer with built in FM synthesis, and then you had the vastly different Spectravideo MSX, it was fully compliant with the MSX standard...but it's just that, not everyone was compliant - every MSX computer seemed to be a special variant of itself, something that confused me something so fierce back in the days, I even had a Memotech MSX, weird WEIRD computer.

      The games on the MSX computers wasn't mind blowing, nowhere near the commodore 64 games, it simply lacked the awesome sound capabilities of the 64. They had a wider color range though.

      I remember the war between us Commodore users (65xx type processors) vs the Z80 series, yes - the Z80 was a far superior processor in many ways and sometimes I wished we had that processor just for the extended registers alone, not to mention that the speed was 4 mhz instead of our meager 0.97mhz (could be doubled if you turned off the screen). But the hardware sprites & scrolling is what beat the living bejeezus outta the other competing products.

      And I nearly cried snot when the Commodore 65 didn't make it. It was a super-cool Commodore 64 with beefed up hardware, higher resolution, stereo SID sound (6 channels!) of pure ring-modulated goodness.

      Ah, I'll go stare at my stash of Z0840004PSC, 27xxxx's and the rest of the Chip Pron in my vast land of NOS components...aaaahh.. :)

      --
      What this world is coming to - is for you and me to decide.
    4. Re:C=128 by Sun · · Score: 5, Informative

      And then Commodore went on to (half inherit, half design) the Amiga. Maybe "cobbled together" is too harsh for it, but still. Floppy controller that can decide, per track, whether to work in MFM or RLL (but not read a single sector, mind you), more DMA channels than the CPU can handle, and a display processor with a built-in three commands machine language (one of which was only ever used by one application ever) to change display resolution mid-monitor.

      I loved it, but the Amiga gave the impression that it was designed by engineers that couldn't make up their mind on what choice to make, so they created hardware that would offload all decisions to software.

      One last anecdote. Many have heard of the famous "Guru meditation". What only Amiga users know is that you knew one was coming because the power led would blink three times. Yes, the power led was software controlled, making the Amiga the first ever computer that could play dead.

      Shachar

    5. Re: C=128 by Anonymous Coward · · Score: 2, Informative

      Actually Z-80 vs 65xx is still a valid debate. The 65xx was much more capable at lower clocks. A good example being the "Woz Machine" floppy controller compared with many Z-80 boxes needing a second 6mhz Z-80 to run their floppy drives.

    6. Re:C=128 by oldhack · · Score: 4, Informative

      Speed of Z80 at 4Mhz was comparable to that of 65xx at 1Mhz - many of Z80 instructions took more cycles to execute than those of 65xx. Sort of CISC-vs.-RISC before the phrase/concepts were invented.

      --
      Fuck systemd. Fuck Redhat. Fuck Soylent, too. Wait, scratch the last one.
    7. Re:C=128 by Anonymous Coward · · Score: 4, Informative

      What only Amiga users know is that the only way the power led can be controlled is by enabling/disabling the low-pass filter on the audio output since the status of the enable signal is indicated by dimming the led. It's not possible to turn it off completely to simulate the computer being dead.
      It's controlled by bit 1 of ciaa->pra. (Address $BFE001)

      It's also possible to read a single sector, but that would require starting the DMA on a timer so it's more cumbersome than reading the entire track and it's not guaranteed to be faster since it's a spinning media. The memory is there so reading a single sector is just pointless. As for MFM/RLL encoding the floppy controller does neither, it reads the raw bits. The order of the bits is interleaved on Amiga formatted disks to allow for blitter accelerated MFM-(de)coding.

      Don't trust anecdotes, the developer guides are available online.

    8. Re:C=128 by Anonymous Coward · · Score: 5, Interesting

      The Z80 was used every time the C128 was turned on. It was added specifically to work around a compatibility issue with the C64 and one single, solitary, cartridge (Magic Voice) for the C64. To make it work, Bill Herd added the Z80, It would start (at address 0x0000), run a handful of instructions that initialised the C128 hardware, and then started the 8502 proper. (The Spectacular Rise And Fall Of Commodore, pg. 368)

    9. Re:C=128 by AmiMoJo · · Score: 3, Informative

      The 6502 may have run at a little under 1MHz, but it was efficient. Most instructions were one or two cycles and they did a lot. It's actually a really fun processor to write for because it's both a nice architecture and very challenging to get the most from.

      --
      const int one = 65536; (Silvermoon, Texture.cs)
      SJW, n: "Someone I don't like, and by the way I'm a fuckwit" - AC
    10. Re:C=128 by NewtonsLaw · · Score: 2

      The problem with the 6502 was that if you were writing code for someone else's environment then your use of Page 0 (which many of the index-based instructions used intensively) was restricted because the OS often took up most of that space.

      If you were writing code that was totally stand-alone (ie: no bios or OS to worry about) then the 6502 environment was *very* nice and could perform incredibly well. However, if you were writing code that sat atop a BIOS/OS layer then the Z80 was just so much simpler and less frustrating to code for.

      Speed-wise, the Ohio Superboard (6502) would roundly trounce a TRS80 Model 1 in single-precision floating point math run through the relevant BASIC interpeters and ultimately and tightly coded 6502 code would also trounce the same written for the Z80 -- unless Page0 was already used up on the 6502 system.

    11. Re:C=128 by neonsignal · · Score: 2

      The problem with the 6502 was that if you were writing code for someone else's environment then your use of Page 0 (which many of the index-based instructions used intensively) was restricted because the OS often took up most of that space.

      Yes, there was a mindset problem when programming the 6502. In hindsight, page 0 RAM should have been treated as a working space register set, whereas at the time it was treated mostly as a fast RAM littered with persistent variables.

    12. Re:C=128 by ChrisMaple · · Score: 3, Informative

      Most Z80 code was written to be compatible with the 8080. As a result, the second register set wasn't used. Floating point math using the second register set for temporary variables made possible a substantial speedup.

      If the 6502 and Z80 waveforms for various instructions are examined, it quickly becomes apparent that the Z80 effectively divided its clock by 2 before using it. This is why, for the technology available in any particular year, they had comparable performance but the Z80 used twice as many clock cycles.

      The 6502 was a tremendously clever design for making effective use of a small number of transistors. The Z80, striving to be a superset of the 8080, was also a clever and powerful design for its time.

      --
      Contribute to civilization: ari.aynrand.org/donate
    13. Re:C=128 by david_thornley · · Score: 2

      Some Z80 instructions could take far more than 20 cycles, such as LDIR (which copied an arbitrary amount of memory from one arbitrary place to another). Most of them were 4 clocks for the first byte and 3 for each succeeding memory access. The Z80 had some additional capabilities that were wedged into the 8080 instruction set, and required long instructions. When I was building the fastest 64-bit multiply I could, I didn't use the index registers (IX, IY), since I could always get better performance with slightly more complexity by avoiding them. The second set of registers was very useful, though.

      My estimate was that a Z80 did approximately half of what a 6502 did per clock cycle.

      --
      "When you have eliminated the unacceptable, whatever is left, however improbable, must be the truthiness" - Holmes
    14. Re:C=128 by tmh+-+The+Mad+Hacker · · Score: 2

      There was virtually no CPM software adapted to the C=128

      I wasn't aware that it needed to be adapted. When I think of CP/M software I don't think of fancy programs highly customized for specific hardware -- if it had a keyboard and at least an 80x24 screen, it was happy! Being able to run CP/M software was one of the main reasons I got a C128, and I did so for several years with no more adaptation than setting up book scripts on the floppy to automatically load everything the way I wanted.

  2. Why didn't they just ask Federico Faggin? by Anonymous Coward · · Score: 5, Insightful

    Why didn't they just ask Federico Faggin? According to Wikipedia, he's still alive.

    1. Re:Why didn't they just ask Federico Faggin? by Lord+Apathy · · Score: 3, Interesting

      This is what I came in here to say. They guy who designed the chip is still alive. Just shoot him a email, phone call, or smoke signals and just ask him.

      I'm going to go out on a limb here and say there is probably a logical reason behind the arrangement and not some conspiracy or something.

      --

      Supporting World Peace Through Nuclear Pacification

    2. Re:Why didn't they just ask Federico Faggin? by Snotnose · · Score: 2

      I'm going to go out on a limb and guess that, due to how primitive the tools were back then, when they got a signal to a pin they celebrated without worrying which pin it came out on.

    3. Re:Why didn't they just ask Federico Faggin? by cold+fjord · · Score: 2

      Why didn't they just ask Federico Faggin? According to Wikipedia, he's still alive.

      Maybe its time for:

      Interviews: Federico Faggin Answers Your Questions
      Last week you had the chance to pose questions to Federico Faggin .... father of Intel's 4004 43 years ago...

      The man is very accomplished and has an amazing history.

      --
      much of left-wing thought is a kind of playing with fire by people who don't even know that fire is hot - George Orwell
    4. Re:Why didn't they just ask Federico Faggin? by Anonymous Coward · · Score: 2, Informative

      Not only is it still manufactured, but it is still used. There is a good probability that your DVD burner has a Z80 in it running the show.

      The Z80 is a great example of a 'limited' CISC design (not enough transistors to be complete CISC like say a Motorola 68000 or a DEC NVAX).

      The 6502 is a great example of a 'limited' RISC design, and quite an efficient one. http://www.visual6502.org is still out there, and you can enjoy that yourself. I'm looking forward to the Z80 version, myself.

      And you can build your own brand-new Z80 machine in the N8VEM system, if you'd like something a bit more satisfying than an emulator and a bit more reliable than an old Kaypro or TRS-80. (Heh, I have a pair of TRS-80 Model 4P's myself......). The Z80 is a great way to learn the fine art of computer engineering with a chip that is easy to understand and apply, with an OS that one person can fully understand and work on (whether that be CP/M or the, in my opinion at least, superior LS-DOS 6.3.1 OS). Both of these OS's are small enough that you can read the full source code in a single weekend, and three or four months of study will be enough to where you can pretty much fully understand it.

      Because, regardless of what toolkits may be available these days, it really does boil down to electrons and machine language (or assembly language mnemonics). Get a good grasp of those basics, and you can learn anything in the computer engineering field. (Computer engineering is not computer science, and vice-versa.)

  3. Mysteries of the past by Anonymous Coward · · Score: 2, Funny

    When I grow up I also want to be an archaelogist.

  4. Why is it necessary to reverse engineer this? by Anonymous Coward · · Score: 3, Insightful

    The Z-80 was a great chip and overall system design supported by very capable support peripheral chips in that family. The best part of working with it, is Zilog's Documentation, which was very well written and demonstrated the consistency of the entire product line (in terms of it's functional programming interfaces). There really is not any need to 'reverse engineer' the chip, everything you need to know is freely available already. I think this article and author means to say "Here are some plausible possible reasons behind some of these physical implementation decisions...".

    I think all first year computer science / programming / engineering students should be introduced to this and learn how to write programs for this environment first before moving on to modern systems. True power is being able to write useful stuff with only 64kb of ram and 1mhz of processor, and have it run in an acceptable time frame, and taking those skills and scaling up today's multi-core/ multi-gigahertz/multi-gigabyte address spaces.

    1. Re:Why is it necessary to reverse engineer this? by cnettel · · Score: 3, Insightful

      I think all first year computer science / programming / engineering students should be introduced to this and learn how to write programs for this environment first before moving on to modern systems. True power is being able to write useful stuff with only 64kb of ram and 1mhz of processor, and have it run in an acceptable time frame, and taking those skills and scaling up today's multi-core/ multi-gigahertz/multi-gigabyte address spaces.

      Cheap memory accesses compared to instruction latency, over your whole memory space. Memory locality basically doesn't matter. Branching is also almost free, since you are not pipelined at all. If you would extrapolate a Z80 machine to multi-gigahertz and multi-gigabyte you would get a much simpler low-level structure than you actually have. Some of the lessons learned regarding being frugal make sense, but you will also learn a lot of tricks that are either directly counter-productive, or at the very least steal your attention from what you should be concerned with, even in those very cases where you are really focusing on performance and power efficiency (in addition to the myriad of valid cases where developer productivity is simply more important than optimality).

      It used to be that you couldn't pre-calculate everything since you didn't have enough storage. These days, you shouldn't pre-calculate everything since it will actually be cheaper to do it again rather than risk hitting main memory with a tremendous amount of random accesses, or even worse, swap. Up to some quite serious size data sets a flat data structure with fully sequential accesses can turn out to be preferable to something like a binary tree with multi-level indirections. (Now, the insane amount of references even for what should be a flat array in anything from Java to Python is one reason for why even very good JITs fall short of well-written C, Fortran, or C++.)

    2. Re:Why is it necessary to reverse engineer this? by Z00L00K · · Score: 2

      Add to it the great book Programming the Z80 by Rodnay Zaks.

      That book is one of the best books I have encountered when it comes to how to utilize a device.

      Personally I think that it should be in the collection of books even if you don't aim to program specifically for the Z80 because it explains a lot of general CPU architecture and logic as well.

      --
      If builders built buildings the way programmers wrote programs, then the first woodpecker would destroy civilization.
    3. Re:Why is it necessary to reverse engineer this? by Earthquake+Retrofit · · Score: 2

      "Back on Earth, I used to go to a little tavern called the Z-80 Club. Programmers from the nearby industrial park usually gathered there after work. A few students like myself were tolerated, but expected to keep out of the way. One guy always came in at 4:30. He looks about 40 years old with long hair and clean shaven. He'd walk in and be treated like he owned the place and always sit the same little table in the corner. 'Who's he?' I asked after noticing all the deference people showed him. 'Assembly programmer.' is all they would say as if that explained it."

      --
      Fifty years of Yippie! 1968-2018
    4. Re:Why is it necessary to reverse engineer this? by khallow · · Score: 2

      How about from the currently esoteric point of view of rebuilding human society from scratch?

      The Z-80 is one of a few chips that has the unusual feature that it is both simple enough to be built out of vacuum tubes or crude handmade integrated circuits (for example, you would need somewhere in the neighborhood of 5k to 10k tubes, complex but not impossible for a small machine shop) yet barely complex enough that you can run a simple version of Linux on it (I gather Linux hasn't yet been ported, but there are apparently people working on it).

      The Z-80 design creates a hardware-side pathway for bootstrapping computer technology from vacuum tubes and transistors to modern software tools and languages. Reverse engineering the design might at some future point put considerable computation power in the hands of a desperate society.

  5. i remember by acdc_rules · · Score: 3, Interesting

    Ahhh, those were the days. a whole CPU in a 40 pin DIP. you could actually do useful things with this mounted on an experimental breadboard. thanks for bringing back memories.

  6. Re:Up-to-the-minute reporting from Slashdot by BringsApples · · Score: 4, Insightful

    Not sure how sarcastic you're trying to be. I know nothing about chip design. I read the article and learned something. These are the type of articles that reflect what I believe slashdot is about. So it's something that I came here to learn about. There's no NSA/Snowden/loss of freedom/political drama/clickbait/ in the article, so there's no trolls. Win win.

    Now if only there were more comments to add to the understanding.

    --
    Politics; n. : A religion whereby man is god.
  7. BASIC vs. Z80 assembly language by MillionthMonkey · · Score: 4, Interesting

    Back in 1980 my parents got me a British ZX81 kit to assemble, with 1024 bytes of RAM. (I still have it buried in the closet along with my other antiques- AFAIK it still works.) It ran BASIC so slowly that you could actually read the code about as fast as it executed, so I was "forced" to learn assembly language. I was amazed by how fast it was- it ran a million operations in just a few seconds! (wow.) You had to start by writing a BASIC program:

    10 REM AAAAAAAAAAAAAAAA
    20 PRINT USR(16514)

    Then you had to POKE each assembly instruction into the comment, starting at 16514 for the first "A". The comment line would slowly turn into "10 REM x&$bL;,$_)[vU7z#AAAAAAAA". The next line was 20 PRINT USR(16514) (printing out the return value from the BC register).

    Saving any ZX81 program onto a cassette tape was excruciating- they recorded as several minutes of loud high-pitched screeching. Usually you needed to save them twice because it failed half the time. Then to load the program you had to cue the tape you had to find exactly where the start of the screeching was, rewind several seconds, play the tape, and only then could you hit enter on LOAD. (Otherwise LOAD got confused by the *click* noise when you pushed the play button on the tape player.)

    You young people don't realize what an easy life you have.

    1. Re:BASIC vs. Z80 assembly language by david.given · · Score: 3, Informative

      If you're interested in Z80 operating systems, go look at CP/M (seriously: get an emulator, some tools, and write programs for it). It's a fascinating look into just how minimal you can make an operating system and still have something that's not just functional but which spawned, back in the day, a vast ecosystem of tools and software. You suddenly realise just how much fat there is in a modern system (and also why modern systems have all this fat).

    2. Re:BASIC vs. Z80 assembly language by Duncan+Booth · · Score: 2

      One thing I remember from CP/M was that when a program terminated you could save the memory it had been running in to disc as an executable program. A lot of programs (e.g. Wordstar) used this to avoid having to read any kind of configuration file: instead you just changed settings within the program, exited, and saved the memory; when you ran the saved version you had your saved defaults. I also always kept a 0 length file around in case I accidentally exited a program such as a text editor without saving: run the 0 length file and it would just restart the editor with everything restored.

  8. Re:The story by Z00L00K · · Score: 4, Interesting

    The news what why it was that way.

    And the Z80 was a major player in computing in the early personal computers before IBM PC. Even today it's still around in variants, and many have seen a variant of it in the Nintendo Gameboy. It was popular enough to render some clones as well, however they weren't always fully compatible, mostly on the undocumented instructions - which caused for example the Sinclair ZX80 to not work unless you had a real one.

    --
    If builders built buildings the way programmers wrote programs, then the first woodpecker would destroy civilization.
  9. I had a different idea for that pin order by damn_registrars · · Score: 5, Funny

    It looks like the firing order for an 8 cylinder engine. I thought maybe the engineer tasked with that pin out was moonlighting in a garage somewhere.

    --
    Damn_registrars has no butt-hole. Damn_registrars has no use for a butt-hole.
  10. Definitely News For Nerds by MikeTheGreat · · Score: 3, Interesting

    It's always refreshing to see stuff like this waft across the front page of /. every now and then - I wish there was a way to re-apply the "News For Nerds... Stuff That Matters" logo to top of the page only on stories like this.

    (Pro-Tip: Please mod this "+1 Nostalgic" :) )

  11. Re:Please, you are kidding? by AaronW · · Score: 3, Interesting

    My father had built a Heathkit H89 computer built around a Z80. As a kid I earned money soldering together boards my father had designed that under software control would double the speed from 2 to 4MHz. The H89 actually had two CPUs since it was also a H19 terminal. While it didn't do color and was limited to text based graphics it was a nice machine. My father's computer had something like 4 floppy drives and a hard drive hooked up to it. It ran both CPM and HDOS which was the first microcomputer operating system with loadable device drivers.

    Later in college we used the Z80 for our microprocessor design class. The Z80 was trivial to wire up and included such things as automatic DRAM refresh support.

    --
    This post is encrypted twice with ROT-13. Documenting or attempting to crack this encryption is illegal.
  12. 5v lines by Alioth · · Score: 4, Informative

    It's not at all unusual for the 5v and 0v (Vcc and GND) lines to be in the middle of a DIP package (the Slashdot summary sort of implies it's an odd thing). It means the leads within the package are shorter for those lines, lowering parasitic inductance and capacitance for the power supply to the chip, generally you want the decoupling capacitors to be as close to the actual chip as possible so they can be as effective as possible as the power demands change. Putting the supply pins at opposite corners (like it's done on things like 14 pin 74-series standard logic) would very significantly lengthen the distance that the actual supply rails on the chip are from the decoupling capacitors.

  13. Super Geek Post by Squidlips · · Score: 2

    Thank you!

  14. 6502 to Z80 work per clock ratio by tepples · · Score: 2

    Speed of Z80 at 4Mhz was comparable to that of 65xx at 1Mhz

    I thought the work per clock ratio between 6502 and Z80 was closer to 2:1, not 4:1. This would put, say, a 1.8 MHz Atari 800 and a 3.5 MHz Spectrum together, or a 1.8 MHz NES and a 3.6 MHz Master System. Where do you get 4:1?

    1. Re:6502 to Z80 work per clock ratio by Anonymous Coward · · Score: 2, Informative

      I don't know about the 6502, but the Z80 takes 4 clockticks per (basic) instruction. IOW, it's a bit below 1 MIPS at 3.57MHz. The later R800, used in the MSX turbo-R, ran at 7MHz at took 1 clocktick per instruction, which gave it the "28MHz Z80 speed" it was sometimes quoted.

    2. Re:6502 to Z80 work per clock ratio by tepples · · Score: 3, Informative

      The 6502 takes 2 to 6 clocks for most instructions: 2 to fetch the instruction itself and the first byte of the operand, then additional cycles to fetch the rest of the operand, perform address generation if necessary, and fetch a value from memory. With fewer register-to-register opcodes, more operations have to use memory. But there are probably plenty of studies from the C64 vs. Speccy flamewars of how this plays out in practice.

  15. Re:C=128 + 6502 cost. by Anonymous Coward · · Score: 2, Informative

    Also cost was a huge factor - the 6502 was significantly less expensive than the Z80s at the time.

    And the 6502 gracefully entered the 16 bit field with 100% backward compatibility in the 65C816.
    Sadly, too late to make a big dent as the 68000 was just around the corner, although Nintendo took
    great advantage of it in their SNES. Franklin Electronic Publishers used the 6502 exclusively in
    their early hand-held spell checkers.

  16. Don't underestimate the importance of our ROOTs. by MindPrison · · Score: 4, Insightful

    Articles like this, makes me warm and fuzzy all over, probably because I'm an old geezer in comparison to kids of today, but I think it's very important for anyone serious about hardware development and/or software development to dive into the past once in a while, it's a great way to learn simplicity and how the hardware inside our relatively complicated devices of today really works.

    I'm a moderator of a major international electronics forum, and I don't have the number on just how many times the young generation feel completely lost when they're fresh out of school, trying to understand very complex structures. They either lack understanding of general electronics, or how the microprocessor works with different layers, ram, rom (especially embedded systems when they are working with complex IDE's with a maze of classes & libraries), they simply forget how the hardware works, and get to focus too much on programming.

    I understand exactly that frustration, especially since this old geezer was lucky enough to grew up with basic home computers like the Commodore 64, Zx81 (Z80 cpu), Spectrum, Oric, Dragon 32, BBC etc. We often did our own hardware modifications, made fast I/O port load&save systems ourselves because we had a basic understanding of how the innards worked, and it really wasn't rocket science.

    Sometimes it is relevant to take a step back in time (Like this article does, explaining some of the oddities with the Z80 processor), and spark interest in these old CPU's and their systems & possible uses even today. As an example, I have a HUGE stash of Micro-Controllers in my workshop, these are an absolute GEM to me. Why? Because they are very simple to work with. Like the good old Commodore 64 or ZX 81 - they don't have advanced hardware layers where you have to do special addressing to access certain memory areas or have to be kind to the operating system in order to write something to control your hardware (homemade or otherwise), it's as simple as writing a few pokes into memory...and you can turn on/off some external units such as relays, lights - or read on/off states from your sensors...maybe build your own satellite tracker the easy way, or control your homemade lawnmover unit.

    And we still have VAST amounts of these MCU's unused all over the world, these are SUPER USEFUL (if you didn't get the above, think standalone apps...like each MCU was an app for a specific task). Many of these CPU's (MCU usually comes with internal memory/Ram/Rom/Flash/ and the most important part...an I/O) ready to use, just program it...and watch it go. If the kids of today understood this, they'd have a BLAST programming these (just watch the maker society with their modern versions...Arduino etc.) and the sky's the limit.

    More articles like these thanks, brings /. back to the roots.

    --
    What this world is coming to - is for you and me to decide.
  17. Re:Future does not bode well by Megane · · Score: 2

    The big difference is that these old 8-bit processors were laid out entirely by hand with a lot of rubylith tape on a large piece of transparency plastic. That's why they're so interesting. But all the new stuff is entirely in CAD, with mostly automated layout.

    --
    #naabhaprzrag, #sverubfr-000, #agi-fcbafberq, negvpyr[pynff*=' negvpyr-ary-'] { qvfcynl: abar !vzcbegnag; }