A retrocomputing project, details of the journey - Page 1
Forum section: electronics / projects

author: slburris
author_rank: Frequent Contributor
timestamp: September 07, 2010, 03:25:05 am
content: Hi,I'm going to post the details of a retrocomputing project I'm working on.It would be ideal for a blog, except I don't have a blog and probably won'tstart one anytime soon :-)If you're not interesting in retrocomputing, Z80s, FPGAs, or just listening tome mumble about why I'm doing things the way I am, you may want to skip thistopic.Part 1 - BackgroundWhen I was a teenager, my father bought an Altair 8800b kit for me to puttogether. I had built Heathkits before, but nothing like a computer. If youneed some background on the Altair, check out:http://en.wikipedia.org/wiki/Altair_8800My kit had an optional 16K dynamic memory board. This board was muchcheaper than the standard static memory board available at the time.However, I had tons of problems getting it to run reliably. I tried addingextra capacitors but that rarely helped. Eventually, I put a sheet of plasticon both sides of the board, then covered front and back with aluminum foiland grounded the foil. Voila, most problems magically went away!I also had a Microterm ACT-IV serial terminal, a huge beast at the time:http://www.pecos-softwareworks.com/pics/northstar/micro_term_front.jpgUnfortunately, I didn't have the costly serial I/O board to drive it. I did havean LED on the front panel that I could turn on and off under program control,the "Interupts Enabled" LED. So by enabling and disabling interrupts at theproper rate, and building a little transistor circuit to make that output into+-12V RS232 levels, I could send data to the serial terminal, woohoo!But the only input I had was an interrupt signal. I thought I could gethave the input from the terminal go to the interrupt line, and by timingthe interrupts I could figure out in software what character was sent.But the interrupt line was *level sensitive* not edge sensitive. So whenthe interrupt was triggered, I had to disable interrupts for a while toprevent being interrupted again. But this turned off the LED I was usingfor transmit. You can see where this is going. Never got it to work right.Eventually, I wire wrapped a serial board using some funky UART chip,a TR1602B from Western Digital I think (back when they used to makechips instead of disk drives). It required +5 and -12volts, yikes!Next came a long series of attempts to build a cassette tape interface.I no longer remember whose design I used, but I got it to work about60% of the time, not bad for those days.Then I got the big toy, two 8" floppy disk drives and a floppy controllerfrom Thinker Toys. That controller caused no end of problems. Tosave money, it didn't have a DMA circuit to move data to/from thefloppy to memory. Instead, it forced the processor to move the dataitself. When the processor tried to read a byte from the controller, ifthe byte was not ready yet because not all the bits had been read fromthe floppy, the controller simply halted the processor until the bytewas available. Brilliant! Except that I had dynamic memory andhalting the processor also halted the refresh of the RAM. So wheneverI accessed the floppy drive, my memory would randomly lose bits, bah!A tech note got published on how to modify your controller to allowrefresh to continue, and that fixed that.Eventually, I got CP/M running, as well as a word processor (Wordstar)and a compiler (Pascal/MT+).Sadly, I did not realize at the time that I had so much history of theearly computing era, and junked most of this -- I still have the Altair'sfront panel though.I was recently playing with SIMH (http://simh.trailing-edge.com/)running CP/M on a simulated Z80 computer. While that works, it seemslike an awful lot of computing power to throw at the problem.So I decided I wanted to build some sort of Z80 based computerjust for fun and relive the CP/M days. While it would be temptingto build a replica Altair (http://www.altairkit.com/) I wanted somethingmore compact.In another post, I'll move on to part 2, requirements.Scott

author: EEVblog
author_rank: Unknown
timestamp: September 07, 2010, 03:51:54 am
content: Awesome, keep posting.I didn't know there was an Altair kit available!Dave.

author: slburris
author_rank: Frequent Contributor
timestamp: September 07, 2010, 04:07:01 am
content: Part 2 - requirementsFirst up, I need to make the big decision, do I use a Z80 CPU chipor do I put this in an FPGA? Well, I have the Z80 CPU, SIO, PIO, DMA,and CTC chips in my junkbox, so I could just go build a real Z80 computer.But I want to be able to display register and memory contents onsome sort of virtual front panel, maybe single step through a program,etc, just like the old Altair used to do. The Altair accomplished thisthrough some extreme ugliness involving forcing instructions onto thedata bus and putting the results in latches to light LEDs. Probably don'twant to recreate that mess.Also, I just don't want to be limited to 4Mhz. I'd like to do at least 20Mhz.There are 8Mhz Z80 chips, but no support chips for that speed that I canfind. And you know, I wirewrapped several Z80 computers in the 80's, soI've been there and done that....So we're going to use an FPGA with a soft Z80 core in it, the T80 fromOpenCores:http://opencores.org/project,t80Using a soft core will let use do many things we can't easily do with areal Z80 CPU chip.OK, decision 1 down. Uh, but what FPGA chip? My current favorite chipis the Xilinx Spartan 3A series, partly because they can boot from serialflash, and partly because they only require 2 voltages, 3.3v and 1.2v.The T80 core won't fit in the smallest FPGA (50K gates), so the next oneup is a 200K gate part, the XC3S200A. This comes in only one hobbyistfriendly (non-BGA) package, the 100pin VQFP, so that's what we'll target.Decision 2, what kind of memory do we use?The Spartan chip comes with internal block RAM, but I want the Z80 computerto have the full 64K of memory, and maybe more through bank switchingin case I want to run MP/M. Well, there's not enough internal block RAM tohandle this. So we'll need to connect external memory to our FPGA.OK, dynamic RAM or static RAM? I don't really want to deal withthe refresh issues of dynamic RAM, and 12ns static RAM is easy to come by,so I'll use static RAM unless I hit a wall in the design.Decision 3, how do I talk to this thing?Traditionally, you connected a serial console off your Z80 computer.But how many people have serial terminals these days? Few, I think.Sure, you could wire it up to a serial port on your computer, but thenthat kinda goes against the grain of this exercise, which is to not usea huge amount of computing power just to get this system running.So what I think I will do is provide a VGA output to connect to a monitor,and PS/2 style keyboard and mouse inputs. The VGA output will havea serial window emulating some kind of serial terminal (VT100 maybe),and windows with other displays, perhaps the CPU registers, memory dump,or the like? Have to work out the design of this in more detail, butthis will do for now. Hmm, maybe should accept USB keyboard and mouse?That's harder....Decision 4, storageThis is easy, no floppies, no spining disks, solid state storage only.Probably looking at a small SD card here. This would let me writeboot images from another system, such as a pre-built CP/M system.I want to have several system images on the SD card, so I could boota CP/M 2.2 system, or boot an MP/M system, or something else.These partitions should be invisible to the Z80, so the FPGA hardwarewill have to vitualize the storage somehow - to be determined.Speaking of booting, how will this system boot? Z80's don't haveflash, they require an external boot ROM. Have some ideas here, butwill save this for another post.Decision 5, other stuffI think we'll include a serial port and/or USB port for connectivity.Probably also need to throw on an EEPROM to save configurationinformation (such as which system to boot). Hmm, maybe I'll usean Atmel serial dataflash to boot the FPGA, and use the leftoverstorage for configuration. Yeah, that's the ticket.Part 3 in another post.Scott

author: slburris
author_rank: Frequent Contributor
timestamp: September 07, 2010, 04:16:55 am
content: Quote from: EEVblog on September 07, 2010, 03:51:54 amThe site doesn't seem to have been updated since 2007, so I'm not sure ifthe kit is still available or not.I saw an original Altair 8800 (not b) at Maker Faire in San Mateo this year.Sadly I didn't get a chance to talk to the owner. Maybe next year.Funny thing about Maker Faire -- I had to drag my wife reluctantly to itand she found so many things she's interested in that she wants togo back next year!Scott

author: slburris
author_rank: Frequent Contributor
timestamp: September 07, 2010, 05:17:44 am
content: I hope you're enjoying this view into the twisty way my mind workson designing a new project.Rarely do my designs go linearly from an idea to requirements to design toprototype. I usually bounce back and forth quite a bit betweenthe early stages and eventually hope to get something that worksat the end of it.Presumably the professionals have a better plan for their projects,at least until the requirements get changed half-way through, but Inever seem to be able to work that way.Anyway, onto part 3.Part 3 - thoughts about power suppliesSince I envision this to end up as a small PCB, I think I'll just go withthe usual wall wart, center positive. I want to take any reasonablevoltage, up to 18v or so.Why? Well I had a board from a company I won't name, which took5v only as input. Eventually I made a mistake and connected oneof my 9v unregulated adapters instead of the 5v regulated one designedfor this board.What happened? Well there was a bang, followed by some smoke, andthen active flame! Ah, so yes, tantalum capacitors *do* burst into flamewhen they are overvolted, just as I have read!I think that the worst that should happen if you use the wrong adapteris that the board doesn't work -- not catch on fire!While I think anything but center positive adapters are evil, if you connecta center negative to my board, I want it to quietly not work, sofirst up we're going to put a diode in series with what we think is thepositive supply. Maybe we'll use a Schottky rectifier so we have a lowvoltage drop.Oh, and I hate fuses, but there should be some overcurrent protection, sowe'll throw in a polyfuse of some kind.For center positive supplies I want to just run with anything from +5v to+18v or so, if the adapter can supply adequate current. This suggestsusing a switcher. I've used National's Simple Switcher series on other designsto handle up to about 42v, so I'll probably do some variant of that.But what voltages do we need? Well, the FPGA requires 3.3v and 1.2v.I don't *think* anything will require 5v, unless maybe the USB stuff does.Hmm, I want to have both host and device USB ports, so I can connecta keyboard and mouse, and also plug into another computer.How to do that? I could put USB phy chips on the board, and do the USBprotocol either in the Z80 (yuck!) or FPGA hardware, or a second embeddedprocessor on the FPGA. Or toss one of those Cypress USB chips on the boardand wash my hands of it. Can the Cypress chip look like both a host and deviceport? And I need a USB hub chip so I can connect both the keyboard and mouse.Does any of this require +5v? Don't know, have to go off and try to naildown how the USB is going to work.And how much current do we need for the +3.3 and +1.2 rails? Well, funnything about FPGAs is that it's really hard to know what their powerconsumption needs are until the design is finallized, because the power drawdiffers depending on the design put into them.This is where "hobby engineering" comes in. How about I just provide circuitry thatcan provide between 0.5 and 1amp on each rail and just hope for the best? Yeah,let's do that.So assuming I don't need to +5v for now, I've got four basic choices.1) Generate 3.3v from the input using a switcher. Then generate 1.2v usingan LDO on the 3.3v line.2) Generate 3.3v using a switcher. Separately, generate 1.2v using a second switcher,also from the main input.3) Generate 3.3v using a switcher, then run a second switcher off the 3.3v supply.This means the second switcher doesn't have to have the same wide input rangeas the first switcher.4) Get a two output switcher chip, and generate both 3.3v and 1.2vWhat kind of switcher chips? Well, I like the ones with integrated MOSFETs, becausethen the chips can do thermal shutdown if I screw up and they get too hot.That's harder to provide for if I use an external MOSFET, plus it's another component.It would be nice if the chip did synchronous rectification, so then I don't have to havea Schottky catch diode, but it's not a big deal.OK, so my head already hurts from all the choices.Now if some part of the circuit requires +5v, then I can generate +5v and use thatas the input rail for the +3.3 and +1.2v needs.Looks like I'm going to have to go play with National's WEBBench software and tryout some scenarios once I figure out if I need +5v.Then I have to check if all of the parts pass the Digikey test. What's the Digikey test?Well, I have to find the parts *in stock* at either Digikey or Mouser, because life istoo short to have to go try to source hard to find parts for a power supply.Plus as a hobbyist, I have no clout whatsoever in trying to get rare parts.Usually, for switchers, that hard part is the inductor. It's easy to get low ESRtantalums or ceramics, and pretty much any Schottky diode with the right voltageand current specs generally work.Choices choices.....Part 4 will be next.Scott

author: slburris
author_rank: Frequent Contributor
timestamp: September 07, 2010, 01:42:59 pm
content: A few updated thoughts.I realized I left a topic off the power supply section, namely power supply sequencing.When you have multiple supplies, is it important what order they come up in?Currently, the only chip which has multiple supplies is the Xilinx FPGA, and thedatasheet says explicitly that power may come up in any order. So unless the designgets modified, we should be good for now.My thoughts on USB were a bit muddled yesterday (shouldn't post technicalstuff late at night I guess).For connection to a PC, it's pretty easy to just use an FTDI chip to present as a serialport. So the hard part is how to interface a USB mouse and USB keyboard. Now I'mthinking maybe I can use the Vinculum chips from FTDI. I know they can be used tointerface USB disk drives -- I'll have to go check the documentation to see if theycan be used for human interface devices as well.So then using the Cypress FX1 chip falls by the wayside. Cypress has another chipwhich has both host and device ports, but it's only available in BGA, and I have zeroconfidence in my ability to reflow BGA parts, so that's out.Scott

author: slburris
author_rank: Frequent Contributor
timestamp: September 07, 2010, 02:32:38 pm
content: Here's a block diagram of what I think I'm talking about :-)Scott

author: slburris
author_rank: Frequent Contributor
timestamp: September 08, 2010, 02:40:23 pm
content: For the power supply, I've decided on two switchers, one feeding the other.The first switcher has a wide-input range, so we'll be able to take anythingfrom 5 volts to 28 volts and be just fine with it. Using a National SemiconductorLM22675, the first circuit produces 3.3v.This is then fed to a second switcher to provide the 1.2v.Scott

author: Zad
author_rank: Super Contributor
timestamp: September 08, 2010, 06:27:36 pm
content: If I were building it, I would go the non-FPGA route. To me, abstracting stuff into software (which is kinda what an FPGA is) removes you from the physical presence a system has. If you are going to FPGA it, you might as well just simulate the whole thing on a PC, which is a bit pointless. Hardware FTWOh, and don't worry too much about power sequencing. Unless you are using really rather exotic stuff, it won't matter a jot.

author: Mechatrommer
author_rank: Super Contributor
timestamp: September 08, 2010, 07:57:35 pm
content: Quote from: slburris on September 07, 2010, 03:25:05 amif u want, i can put your blog on my web. all you need to do is design your own website like files with index.htm or whatever as main. i'll create a folder for you in my web. so you can separate the every long sections into clickable menu, so to become more user friendly and interactive. that only if you want to. from the pictures you posted, it seem interesting, but sadly i'm kind of guy who hate to read long textual postsorry.

author: slburris
author_rank: Frequent Contributor
timestamp: September 09, 2010, 04:02:03 am
content: Quote from: Zad on September 08, 2010, 06:27:36 pmI get what you are saying about being abstracted away from the hardware, but I don't want to simulate thison a PC, I can already do that with the simh software. But it would be kinda fun to dig out the old Z80 chips.I know I said I did this with real chips before, but I'm warming to the idea of recreating that.Hmm, maybe I should split this into two project, a "classic Z80" system, which will be big but, uh, classic, andmy little FPGA design which is more virtual but more adaptable. My colleague across the hall from me at workalready want me to make him one of my FPGA designs (he also wants me to build an old DEC PDP-11 in an FPGA,but that's a whole different level of pain!)So for the "classic" system, how about 4Mhz clock, Z80 CPU, Z80 CTC (counter/timer), Z80 SIO (serial I/O), anda Z80 PIO (parallel I/O) with an EPROM monitor to boot from? We'll use an SD card for storage, and maybe throwin a battery backed up real-time clock for good measure. The parallel I/O will be used to access the SD card andclock -- I think I can bit-bang stuff with the PIO, can't remember off the top of my head, but luckily I have acomplete original Z80 documentation set.Not sure how much glue logic I need -- I suppose I could drop in a small CPLD if needed.I'll have to write a driver for the SD card for CP/M in Z80 assembly, I guess. And a monitor program.OK, so now we have the "classic" project, and the FPGA project. Moving along...Scott

author: slburris
author_rank: Frequent Contributor
timestamp: September 09, 2010, 04:41:26 am
content: And this is why I'm a natural born packrat -- "I know I'll need this stuff someday"Found a Z80-CPU and Z80-PIO manual from 1977, and a full Zilog databook from1981.Worse, I ran across a bunch of Motorola 68000 docs in my library, and I know Ihave 68000 and 68020 CPUs in one of my parts cabinets! I know what my nextretrocomputing project will be after this one...Scott

author: baljemmett
author_rank: Unknown
timestamp: September 09, 2010, 09:50:57 am
content: Quote from: slburris on September 09, 2010, 04:02:03 amSpeaking of which, have you seenhttp://chrisfenton.com/homebrew-cray-1a/? Pretty neat stuff...Watching your project (projects?) with interest!

author: slburris
author_rank: Frequent Contributor
timestamp: September 09, 2010, 11:56:45 am
content: Quote from: baljemmett on September 09, 2010, 09:50:57 amYes, I've seen that, pretty cool. Neat that you can emulate the first supercomputerin an FPGA these days.I've never seen an entire Cray 1 in person, just a slice of that circular design ina museum. I think it was the Bradbury Science Museum in Los Alamos, NM.A weirdly fascinating place if you ever get to go there.I did get experience with some Cray J90s about 13 years ago, but thosewere baby Crays -- nothing as exotic as the originals, but still verydifferent from any machines I had run before.Scott

author: slburris
author_rank: Frequent Contributor
timestamp: September 09, 2010, 08:35:44 pm
content: Random Thoughts about the "classic" optionI spent a bit of time reviewing the PIO, SIO, etc. chips and it's just amazinghow little they do. I had forgotten there's no baud rate generator, for instance.So I guess I'll drive the CTC with some appropriate clock that it can divide downsome appropriate frequency.The SD card for storage presents a few problems. First, it's a 3.3v device andeverything else in this system is 5v. Yes, I could use some bidirectional levelshifters. But I'm not looking forward to bitbanging communications with theSD card with the Z80. That just seems it would be quite slow. I'm thinkingof using a CompactFlash card instead. That would run at 5volts and has anIDEish parallel interface. This seems to be a better fit.I also remembered something which bit me in the past. The pins of thesechips are TTL compatible, *except for the clock input*! It has a muchhigher Vh spec. In the past, I tried adding a pullup resistor to a TTL clockoscillator. That didn't always work well, presumably because I wasviolating rise or fall time of the clock. Later, I passed the TTL clock througha CMOS buffer chip and that worked fine. For this design, I'll just use a4Mhz CMOS oscillator and be done with it.I'm also think I'm going to have to pay attention to stuff I haven't needed to for 15 years orso, namely fan in/fan out. With TTL you had to count how many loads a pin could driveand how many loads a pin presented as an input. With CMOS, you can basicallyignore this. Well not ignore because each pin presents a capacitance, butfor most reasonable designs you don't have to worry about fan in/out. Butthese are not CMOS devices....I forgot there was a Z80-DMA chip. Have to work that into the design somehow!Maybe it can transfer data from the CompactFlash card.So the next question is what kind of memory should I put in this? The Z80 has hardwaresupport for dynamic RAM. However, I'm not sure I have RAM *small enough*, i.e. withfew enough rows, for the auto refresh to work. I'll have to dig through my junkbox andsee what I have. At worst, I can easily find 5volt static RAM.More thinking to be done.Scott

author: slburris
author_rank: Frequent Contributor
timestamp: September 10, 2010, 05:38:10 pm
content: I've been scrounging for chips for the "classic" design. I foundgenuine Zilog parts for all the Z80 chips. I also seem to have a lot ofMostek second source parts. Heh, chips aren't second sourcedvery often these days!So we have from right to left, the CPU, PIO, SIO, DMA, and CTC chips.I also went looking for a few supporting chips. Really hard to find smallEPROMs. I was hoping to find a 2708, but did find a small number of27128A's. I have lots of EPROMs bigger than the entire memory spaceof the Z80, but that would be silly to use those.Also found some fast 32Kx8 SRAMs, the W24257's from Windbond.Some nice 20ns parts so the Z80 shouldn't need waitstates for the SRAM,although it probably will for the EPROM.I ran across some GAL chips -- I may end up using them for the gluelogic. This would make this design mostly through hole (except forthe switching power supply).Scott

author: slburris
author_rank: Frequent Contributor
timestamp: September 10, 2010, 11:24:05 pm
content: Here's a first pass at the block diagram for the classic version.Scott

author: slburris
author_rank: Frequent Contributor
timestamp: September 12, 2010, 04:02:22 am
content: I've started drawing up the schematics for the "classic" design. I've beentrying really hard to like the Design Spark software, but its lack of the Z80parts sent me running back to Eagle. Yes, I've tried their Eagle to Sparkconverter and it crashed and burned on a library of FPGA parts I was tryingto bring over.I've been thinking about the memory design, how the system is going to boot,how to handle 64K of SRAM and 16K of EPROM, etc. The Z80's reset vectoris at location 0 in memory space, so we have to map the EPROM there temporarily,then get it out of the way, because CP/M will want low memory space tobe read/write.So what I'm going to do is the following: On power up reset, a flip flop willbe set to generate a signal ROMENA (ROM enable). When this signal isactive, reads from memory space will be mapped to the EPROM. Writesto memory space will go to the SRAM. On the first I/O port access(IORQ going low), the flip flop will be reset, and both reads and writeswill go to SRAM.The intent is that the boot routine will copy itself to SRAM somewhereup in high memory space, then do an I/O port access. At that instant,the EPROM switches off and execution continues from the shadow copyin SRAM. In this way, the entire SRAM space can in theory be madeavailable to CP/M.All of this will require glue logic, as will the I/O port decoding I haven'tyet done. I was thinking of doing this all in discrete logic, but nowI'm starting to add up all the little chips this requires, and I'm leaningtowards either using some GALs or just sweeping this all into a 5vCPLD (a Xilinx XC9500 series).Scott

author: JohnS_AZ
author_rank: Frequent Contributor
timestamp: September 12, 2010, 04:35:50 am
content: I think I have some 2708s somewhere. I'll go dig through the drawers if you say you'd want them.

author: Zad
author_rank: Super Contributor
timestamp: September 12, 2010, 04:46:12 am
content: In ye olde days it was common to select the EPROM page with an I/O register. Bottom 16kB can be static, next 16kB could map any of the other pages into the same space. Similarly with the RAM area. I didn't realise CP/M liked low memory to be R/W, it seems odd given the Z80 architecture!

author: gbowne1
author_rank: Contributor
timestamp: September 13, 2010, 03:55:15 am
content: I miss CP/M.. Last time I ran it was on a DEC Rainbow. Now there's retro-computing for you.Somewhere I saw a homebrew 1st Generation TRS-80 Model 1, complete with the external modem board, disk drives, expansion interface, etc.What would be cool is something more like the TRS-80 Model 100 which was portable.. but then there was a TRS-80 pocket computer.. which was kind of a glorified calculator. Lobo systems built a TRS-80 compatible computer too.Still my favorite of that line was the Model III and IV. The first all in one design.. well, with the exception of the Macintosh (128k, Plus, etc).I would like to see a MC68000 system. But a nice classic Z80 design would be really cool.Greg

author: tycz
author_rank: Regular Contributor
timestamp: September 13, 2010, 11:37:28 am
content: Quote from: slburris on September 07, 2010, 05:17:44 amIf you look at the way switched DC jacks work, and consider that this type of connecter is almost exclusively used to provide isolated DC low voltage, you'll see that centre negative is the more practical configuration.

author: slburris
author_rank: Frequent Contributor
timestamp: September 13, 2010, 02:35:38 pm
content: Quote from: gbowne1 on September 13, 2010, 03:55:15 amIt's funny, the last Z80 design I did was about 25 years ago. All done on a wirewrapboard and the schematics were drawn by hand. It worked, but sometimes you had topress down in a certain area on the wirewrap board to get things to work :-)For debugging, I had a logic probe and a 5 Mhz Heathkit oscilloscope.Things are a bit different now! Using a CAD program to do the schematic and thenI'll have a PCB made. I still have the same logic probe and Heathkit scope, butit's more likely I'll be using a 100Mhz Tektronix scope and a 100Mhz logic analyzerif I run into any problems, whew!Gotta go find my EPROM erasers. I have two, just have to get one working.Scott

author: JohnS_AZ
author_rank: Frequent Contributor
timestamp: September 13, 2010, 05:48:59 pm
content: Man, you're making me nostalgic. A couple weeks ago I came across a couple of 8052AH-BASIC chips I've had for 30 years. They were for the very first microprocessor project I built up from scratch. Programmed and ran it from a DecWriter.Wonder if I can find some ram to fire them up?

author: slburris
author_rank: Frequent Contributor
timestamp: September 13, 2010, 06:56:03 pm
content: Quote from: JohnS_AZ on September 13, 2010, 05:48:59 pmWhat kind of RAM do you need? I have 2114s somewhere, and probably other 8K and 32K static RAMchips.Scott

author: slburris
author_rank: Frequent Contributor
timestamp: September 13, 2010, 07:00:04 pm
content: I found one of my EPROM erasers, a Heathkit 4803 fromthe 1980's. I fired it up and the lamp lit, so I think I'mgood to go. Good thing too, where in the world wouldI find a replacement UV lamp for this nowdays?Pics taken with an original iPhone camera instead of myreal camera, so the quality isn't too good.Scott

author: JohnS_AZ
author_rank: Frequent Contributor
timestamp: September 13, 2010, 07:02:22 pm
content: I don't know, I'll have to look it up. It -HAS- been a long time. :-)There's no way I'll find the Radio Shack alophone speech chips I used.Did you find the right eproms you were looking for?

author: slburris
author_rank: Frequent Contributor
timestamp: September 13, 2010, 08:23:29 pm
content: For you nostalgia fans, I found my copy of the CP/M documentation.Good thing too, because I don't remember the details of howyou build the interface to the serial console and the disk controlleranymore.Scott

author: DJPhil
author_rank: Frequent Contributor
timestamp: September 13, 2010, 11:59:50 pm
content: Quote from: slburris on September 13, 2010, 07:00:04 pmIt might use a fairly standard 15-20W fluorescent bulb, and those are still available in most hardware stores. Thanks to modern air freshening technology (and a little bit of hypochondria) there's a good selection ofgermicidal UV bulbsout there that might work too.

author: slburris
author_rank: Frequent Contributor
timestamp: September 15, 2010, 02:31:30 pm
content: I've spent the last couple days reviewing CP/M documentation, refreshing my memory ofthe BDOS, BIOS, TPA, DPHs, DPBs (all acronyms that should be familiar tothe CP/M fan). I'm struggling with ideas about how to use the flash storage.If I've done my calculations correctly, CP/M supports disks up to 32MB in size, soI can create drive letters A: through P: each with a 32MB chunk.It would be most convenient to have the CP/M disks actually be files on aFAT16 formatted flash card. Then I could easily build images usingthe simh simulator.The question is, do I have enough space in the BIOS area to read/write aFAT formatted filesystem under the covers, yet present it as a "disk" with128 byte sectors to CP/M? I'm kinda doubting it.Well then, I could drop in a PIC or Atmel chip to handle the FAT stuff, andhave it be an intelligent peripheral of the Z80. So the Z80 BIOS would just ask fora particular cylinder/head/sector and the controller would go off and do the right thing.Somehow it seems wrong to drop a modern processor into a retrocomputerdesign though. I'm already going to use a buck regulator chip and probablyan FTDI USB chip for serial interfacing and those are already anachronisticin this design.Hmm, I could drop in a second Z80 system with code to manage the storage inEPROM, and have the second Z80 be a peripheral of the first Z80. Of coursethen I'm starting to have an unreasonable number of chips just to get anything done!Or I could chuck the whole using files on a FAT filesystem idea, partition the flashcard into 32MB chunks, and then have the BIOS use that. That makes writing outthe disk images from a PC much less convenient though, and I really have to dothat to get stuff like Wordstar and Pascal/MT+ running.Decisions, decisions...And of course the choice made here directly affects the schematic/PCB design and if Imade the wrong one, I'll be on my way to making my first set of green coastersScott

author: baljemmett
author_rank: Unknown
timestamp: September 16, 2010, 12:04:04 pm
content: Quote from: slburris on September 15, 2010, 02:31:30 pmYou could take a halfway-house approach, perhaps, and create a number of contiguous 32MB files in a FAT partition in convenient locations (starting on cylinder boundaries, etc.); that way you can write into them fine from a PC, and the CP/M BIOS code can also know where they are simply by adding a cylinder offset.Could even perhaps have enough smarts in the BIOS to find a small file describing where they are (kinda like a partition table - just keep it in one cluster so it's just a scan through the root directory with no need to understand FAT properly), and would probably be wise to have a small program on the PC to check that they're still where you expect, etc.

author: slburris
author_rank: Frequent Contributor
timestamp: September 16, 2010, 02:54:37 pm
content: "How are you going to program those newfangled EPROM chips?"Glad you asked. Digging through dusty old boxes, I found aModular Circuit Technology Enhanced PLD Programmer modelMOD-LPP.What's that? I *think* MCT is a private branding that Jameco Electronicsuses (www.jameco.com). Doing a little digging, I found this is just arebranding of the ChipMax by EETools. Checking out their website(www.eetools.com), I found that although the hardware is no longersupported, they are still releasing programming software whichsupports this unit! Yea EETools!Being so old, the interface to this is a parallel port. Well, my twoWindows boxes are both running Windows 7 64-bit. No parallel portaccess for the EEtools software :-(However, I found that I could run Windows 2000 under VMware andgive that virtual machine access to the parallel port. Tada! It works.Scott

author: slburris
author_rank: Frequent Contributor
timestamp: September 21, 2010, 03:47:05 am
content: This isn't done yet, but here is a copy of the in-progress schematic forclassic system. It's already getting very busy, so I'll probably break itup into several schematic sheets before I'm done.This is just to give you an idea of where I'm going with this.Scott

author: Zad
author_rank: Super Contributor
timestamp: September 21, 2010, 03:34:40 pm
content: Talking of retro computing, how about this!http://www.visual6502.org/They have taken a 6502, photographed it at high resolution, worked out the metallisation and diffusion layers to see exactly how it works (nothing unusual there really) but then gone on to graphically simulate the physical chip, showing which conductors have a charge. That must have taken a huge amount of work!

author: slburris
author_rank: Frequent Contributor
timestamp: September 25, 2010, 03:45:08 am
content: Quote from: Zad on September 21, 2010, 03:34:40 pmWow, these guys are quite mad!Scott

author: slburris
author_rank: Frequent Contributor
timestamp: September 25, 2010, 03:50:05 am
content: I've been working on the I/O decoding and memory decoding, and the designwas starting to take up quite a few jelly bean logic chips.So to symplify things yet stay with technology of the era, I've decided tosweep the glue logic into a GAL chip. Yes, I should probably use a PAL,but I don't have any, and I don't fancy programming one-time programmablechips anyway, since I invariably get things wrong!In my junk box, I have a bunch of ATF22V10, which is Atmel's GAL22V10 chip.I haven't touched anything like this in years. These days I program FPGAsand CPLDs in VHDL. But GALs?Time to wrap my head around WinCUPL and try to remember how you programin this language. It sure seems much clumsier to me than VHDL....Anyone, here's my first shot at the CUPL description for the GAL:Name z80 ;PartNo 00 ;Date 9/24/2010 ;Revision 01 ;Designer Engineer ;Company - ;Assembly None ;Location ;Device g22v10 ;/* input pins */pin 1 = !reset;pin 2 = !mreq;pin 3 = !iorq;pin 4 = !rd;pin 5 = !wr;pin 6 = !m1;pin [7..9] = [a5..a7];pin 10 = a15;/* output pins */pin 14 = !siosel;pin 15 = !ctcsel;pin 16 = !piosel;pin 17 = !cfsel;pin 18 = !memlow;pin 19 = !memhigh;pin 22 = !promena;field ioaddr = [a5..7];field iosel = [siosel,ctcsel,piosel,cfsel];field iodecode = [sio,ctc,pio,cf,mem];table ioaddr => iodecode {[00..1f] => 'b'10000;[20..3f] => 'b'01000;[40..5f] => 'b'00100;[60..7f] => 'b'00010;[80..9f] => 'b'00001;}siosel = !m1 & iorq & sio;ctcsel = !m1 & iorq & ctc;piosel = !m1 & iorq & pio;cfsel = !m1 & iorq & cf;memena = !m1 & iorq & mem;promena.ar = memena;promena.sp = 'b'1;memlow = mreq & !a15 & (!rd # !promena);memhigh = mreq & a15 & (!rd # !promena);

author: slburris
author_rank: Frequent Contributor
timestamp: September 25, 2010, 11:30:36 pm
content: Lets try posting again, first time didn't work....Time for an update.I've completed 90% of the schematic work and attached the three schematicsheets to this posting.I've done a layout of the PCB and did a preliminary routing test.Next up, I need to finished the schematic and PCB, print out the PCB atactual size, get all the components together, and do a fit test on paper.Once that all looks good, then it will be time to order PCBs and builda prototype.Scott

author: Zad
author_rank: Super Contributor
timestamp: September 26, 2010, 04:25:23 am
content: Maybe it is because I am a hardware person rather than a software one, but give me logic gate diagrams any day, so much easier to understand what is going on!

author: slburris
author_rank: Frequent Contributor
timestamp: September 26, 2010, 02:06:28 pm
content: Test to see if posting to this topic still works.

author: slburris
author_rank: Frequent Contributor
timestamp: September 26, 2010, 02:59:08 pm
content: Going to continue in "Retrocomputing, part 2"