Tumgik
techav · 1 day
Text
More Speed, More Power, Pretty Pictures
I added some crude functions to the ROM monitor on my Wrap030 project to read the root directory of a FAT16-fomatted disk and load binary files into memory to execute. This opens up a new option for developing programs and running them on the computer, and makes it easier to keep programs on-hand for loading when I demonstrate the computer.
So what new program do I build first for running from disk? The same Mandelbrot renderer I've been using all along, of course! All I needed to do to get it running from disk was adjust a few load instructions to use PC-relative addressing and then change the vasm output to raw binary.
It ran without issue ... mostly. I had been noticing some instability with the system in general. It's not really related to the programming work I've been doing, it just tended to show itself more when doing the kind of FPU-intensive processing required for the Mandelbrot program. Sometimes the system wouldn't boot at all, sometimes it would continually reset. Other times it would run fine for a while, but randomly throw a coprocessor protocol exception (especially when using double- or extended-precision floating point values).
I had a pretty good idea of where this instability was coming from ...
Tumblr media
As someone on Discord put it, that's a pretty little antenna I've got there.
High speed computers don't like excessively-long wiring between components. I made the ribbon cables long because there were other boards I developed for this system. But, I'm only using the CPU board, the FPU + IDE mezzanine board, and the video generator board. All that extra wire is just making things more difficult.
A year ago, when I first put these three boards together, I had to bump the bus speed down to 25MHz to get it to run. I could run the CPU board up to 56MHz by itself, and I could get it to run with one expansion board or the other up to 40MHz, but with all three boards, 25MHz was the best I could do (out of the oscillators I had on hand). I have some 33MHz oscillators now, and while I could get it to run sometimes, it was obviously far more unstable.
It was time to trim those pretty little antennas.
Tumblr media
I left room for one more card, in case I can get my DRAM card working later, but trimmed a few inches off. The result? Rock solid at 25MHz now.
... and at 32MHz.
... but 40MHz still doesn't run.
I am quite pleased with that result. My target for this system in the beginning was 25MHz. That extra 30% speed increase is very noticeable, especially when running a program like the Mandelbrot renderer.
But I had a thought.
My FPU is rated for 25MHz, and here it's running solid at 32MHz along with the rest of the system. But my FPU board was designed to support the FPU running at a separate clock speed from the rest of the system (the 68881/68882 FPU is actually designed to support this, so I implemented it when I built my mezzanine board).
What would happen if I tried running the FPU even faster? Perhaps using that 40MHz oscillator that I couldn't use for the complete system?
Surprisingly, not a problem running the CPU at 32MHz and the FPU at 40MHz.
... or 50MHz
... or 55MHz
... or 67MHz!
Once again, I've run out of faster oscillators. This computer is running stable with its FPU clocked at over two and a half times its rated speed.
The video above is a real-time capture of the VGA output of this machine running that Mandelbrot renderer (now modified to use 96-bit extended-precision floating-point arithmetic!) with the CPU & main bus clocked at 32MHz and the FPU clocked at 67MHz. Some frames take minutes to render. Some complete in as little as seven seconds.
I am in awe. While I had big dreams when I first started working on this project six years ago, I never could have imagined it running this well at that kind of speed. I am very happy with how this project has turned out so far, and can't quite believe I actually built something like this.
I typically wrap up these posts with a plan of where to take the project next, but the project has already exceeded my expectations. There is so much it is already capable of now that I have a permanent storage option available. I guess I could try getting that DRAM card running to expand the main memory beyond 2MB, or try adding a keyboard and some text routines to complement the video card. Both are good options towards getting a proper operating system running, which has always been a goal of the project.
Either way, I'm sure I'll have fun with it.
Tumblr media
17 notes · View notes
techav · 8 days
Text
Revisiting Wrap030 Disk Access
Tumblr media
I have more ideas for projects than time or budget to work on them. Already this year I've gone completely through the design process for two new large homebrew projects that are currently too large for my project budget, plus a few small ones I never got around to ordering. So rather than spend more than I should taking on a new project, I decided to revisit an existing one.
It's been over a year since I last worked on the original Wrap030 project — my old stack-of-boards MC68030 system. Its current configuration includes the main board with CPU, ROM, RAM, UART, & glue logic; a hand-wired breakout board to add a second UART; a custom video output board; and a mezzanine board with FPU and provision for an IDE disk that is not yet working. It has been functional in this configuration since last February.
My goal for this project from the beginning was to build something capable of running a proper operating system, like Unix System V or Linux. To do that though, I'm going to need to get disk access working.
I had started on disk access, but didn't quite have it functional when I turned my focus to integrating all of boards into the single Wrap030-ATX motherboard. I had added IDE cycles to the CPLD on the mezzanine board, and had added a few rough drafts of disk functions to my ROM. I set the project aside when I realized my function for checking dish presence was reporting a disk was present when there wasn't one.
I have worked with IDE before — my original 68000 project had an IDE port on it. I had gotten that project to the point where I could read a sector of data from the disk, but never could wrap my head around how to actually navigate even a simple file system like FAT16. It was this code that I had adapted for Wrap030, so when it didn't work, I assumed it was a problem with my logic.
Turns out I had just inadvertently clobbered a register in the disk check function. The logic worked just fine. I was able to write a couple quick BASIC programs to read a sector of data and even run code from the boot sector.
Tumblr media Tumblr media
My assembly function for reading data from disk however was still not working.
I tried rewriting it.
I tried rewriting it in C instead of assembly.
I tried again, and again, and again. I added delays and loops and print statements and everything I could think of. I scoured datasheets, read though all the different release versions of the ATA specification, ported code from other projects, looked at every example of reading from an IDE disk I could find.
No matter what I did, I always got the same result.
Tumblr media
This did not make any sense. Reading from an IDE disk involves setting up the sector address, the number of sectors to transfer, sending a read command, and then reading the IDE data port 256 times per sector. Each time the data port is read, the disk will give another 16-bit word of data. But for some reason, all I was getting was the first word of data returned 256 times.
There is nothing in the specification to explain this.
I knew there was nothing wrong with my logic, because I could read the data just fine with my BASIC program or by manually poking the right addresses using the monitor. Maybe there was some edge case affecting timing when running in assembly, but even adding delay loops and print statements didn't have any effect.
I reached out for help. I got great feedback on my read functions and my timing and how IDE and CompactFlash cards worked, but still could not solve this problem.
But then @ZephyrZ80 noticed something —
Tumblr media
I had shared my code and was explaining that I had added some extra NOP instructions to enforce minimum time between IDE access cycles in PIO-0 mode. At 25MHz with cache enabled, the 68030 can complete an instruction in as little as 80ns, so a few NOPs would ensure enough time elapsed between cycles.
With cache enabled.
… cache enabled.
… cache.
The 68030 has 256 bytes of data cache. My disk read function is running in a tight loop that only really hits a few addresses; not nearly enough to invalidate and flush the entire 256 bytes of cache. The CPU does have a cache inhibit signal to use with peripherals that return new data on subsequent access to the same address, but it turns out I was only asserting it when accessing the UART on the main board.
It's a simple enough hypothesis to test. When I initially added support in my ROM for enabling cache at startup, I included user functions for enabling and disabling cache.
Tumblr media
… It was cache all along.
Now I need to add some way to inhibit cache while accessing the IDE port, and then I can move on to trying to use the disk for loading programs.
37 notes · View notes
techav · 22 days
Text
If It's a Hack and It Works, Is It Really a Hack?
I have a couple servers at home — one running Proxmox VE and one running Proxmox Backup. I use the VM server when I need to spin up a development environment, for running the odd game server, serving files locally, running Home Assistant, etc. I also like to donate spare cycles to Folding@Home. The backup server of course is in case I do something stupid on the VM server.
There's just one problem with that. My second-hand 8-year-old dual-Xeon server runs hot.
It was too much to keep running in my home office. Between the two servers, my desktop, and my work laptop, I was regularly seeing ambient temperatures around 26°C. It was just too warm for comfort.
Last summer I moved my network gear and the two servers into the front coat closet. This was great for me working in my home office, but not so great for my servers. Despite adding a passthrough vent to the closet door and a vent fan to the ceiling, the closet was still consistently in the 26°-30°C range.
The ideal solution would probably be to use an enclosed server rack and run an exhaust vent up from the top. Unfortunately, rack-mount server cases are expensive, enclosed racks are very expensive, and my closet is too small for that anyway.
So I hacked together a solution.
Tumblr media
I built a frame out of some cheap 1x2 lumber and wrapped a piece of thin sheet steel around the sides to make a crude plenum. On top, I added a 10x6 register box with a semirigid vent hose coming out of it. This gives me a guide for drawing air out of the servers and guiding it up to the vent fan in the ceiling.
To help things along, I added a 120mm fan inside the register box. But not some whisper-quiet Noctua. This is (if the Amazon listing is to be believed) a 5000 RPM, 210 CFM monster of a fan. It's loud, but moves a lot of air.
Too loud in fact. Its droning could not be silenced by any mere closet door. I had to add a PWM fan speed controller to calm it down. It's a cheap unit from Amazon, but it came with a temperature probe and it has a configurable operating range.
Tumblr media
The result? Where previously the entire closet was consistently above 26°C, now it's staying around 23°. There is a difference of 5°C between ambient in the closet and the air inside the exhaust duct, so it is doing its job of redirecting the hot air from the servers.
I call that a successful hack.
18 notes · View notes
techav · 1 month
Text
Kits like these are where I got my start. I was stealing them from my brother by the time I was 7. The theory they tried to teach never really made it through to me, but they are where I learned the names of different components, their schematic symbols, how to read their values. I learned the truth tables for all the basic logic gates. I learned how to read and follow schematics, and even draw some of my own.
They were an excellent starting point, a sandbox for learning the basics.
These days, I still may not quite understand the theory, but all the projects I have built and shared here over the past several years were built on the foundation provided by these kits.
And I would have killed for one with a programmable microcontroller at its core.
Tumblr media
Childhood memories. I had several of these Radio Shack X-in-one kits growing up, where you page through hundreds of projects and build them by connecting wires through little springs.
To be honest, I did not learn much circuit theory building these. But it sure planted the bug for being interested in electronics, and eventually computers
233 notes · View notes
techav · 2 months
Text
Tumblr media
They are already selling data to midjourney, and it's very likely your work is already being used to train their models because you have to OPT OUT of this, not opt in. Very scummy of them to roll this out unannounced.
96K notes · View notes
techav · 2 months
Note
I absolutely adore the passion you have when you're speaking about this old tech hehehe
Well thank you!
This has been my hobby of choice for about 20 years now, I'm in it because I enjoy it. Why take half-measures with what you love to do?
If this is the sort of thing you enjoy as well, and you want to interact with more of the vintage computer enthusiast community, you can always come hang out with the rest of the Retrotech Crew on Discord.
Tumblr media
We spend our time talking about pre-Y2K computers and other sorts of technology. Lots of the discussion pertains to people fixing stuff, programming for old machines, or playing games. Minicomputers, micros, game systems, televisions, associated ephemera, and the community events where these machines are celebrated are all common points of discussion. Meanwhile, others are homebrewing their own computers using processors of yore to get the 1970s DIY experience (it's where I built my 6502 homebrew: the Cactus).
I always think about the sort of informal space that I wanted when I was first getting into the hobby, when the forums I was traversing felt too daunting to a newcomer who didn't know all that much like myself. Hopefully it's fulfilling its purpose of being a good place for folks to interact and share in that enjoyment, regardless of experience level. Many of the earlier members all came from here on tumblr initially, after which we started a Skype group chat, which migrated to Discord in 2017. Since then we've picked up folks from many other circles of the community at large, so I hope that means we're doing something right.
Tumblr media
46 notes · View notes
techav · 2 months
Photo
When I was a child, I used to daydream about all the things I could build if I had the things in the Radio Shack catalog (I mean, I still do, but I did then too).
This tiny microcontroller was high on my list.
Imagine the things I could build if I could program them to do things! Robots and submarines and alarms and cartoonish spy gear and ..
The possibilities were endless.
There was just one catch — programming required a computer, and computers were expensive.
I did eventually get a Parallax Propeller development board. It was long after Arduino had taken over that market segment and Radio Shack was closing all their stores.
... But it just wasn't the same.
This miniature board, with its 9V battery contacts and tiny prototyping area, just holds the imagination the way only something you daydream about as a child can.
Perhaps some day I should dig one up and finally build that robot I always wanted.
Tumblr media
Have fun with your 25 bytes of RAM.  You heard me.
There was a time when a compact microcontroller development board was a novel concept.  The Parallax BASIC Stamp 1 was 1992′s answer to the problem. 
429 notes · View notes
techav · 3 months
Text
There's a little demonstration some friends of ours did over the past few years to show just how much abuse some of these old machines can take, and still be brought back to life in skilled hands — or even not-so-skilled hands.
https://hackaday.com/2024/01/23/crusty-the-story-of-the-mac-se-that-could/
At first glance, the story of Crusty might sound horrible — intentionally exposing a functioning vintage computer to the elements? Buried for months, left to rot in a pond??
The point here is — even after all that, poor Crusty still powered up. Its CPU still ran code. There is still hope for getting it running again.
It just takes someone who cares enough to give it a shot. Someone willing to learn.
Under all that dirt in the original photo is still a beautiful SOL-20 computer. It still has lessons it can teach to anyone who takes the time to listen.
Just because it looks a little, well, crusty, doesn't mean it's beyond hope of repair.
If you've come across a machine like this that's seen some hard times and want to learn how to breathe new life into it, I would recommend checking out Adrian's Digital Basement on YouTube. [Adrian Black] has some wonderful deep-dives into the troubleshooting process — how to identify what parts actually failed, instead of replacing parts and hoping for the best — and he shows how to do it with cheap, readily accessible tools.
And if you get stumped or realize it's beyond your current abilities to repair, as @commodorez said there is a whole community of us who get excited at the opportunity to restore these machines and teach a new generation the lessons they have for us.
Tumblr media
471 notes · View notes
techav · 3 months
Text
This is something that's always bothered me about DNS. To me it just makes more sense for things to be ordered from least to most specific.
I guess it's a throwback from my journalism days, where news stories are written broadly to start, and add more specific details as the article progresses (inverted pyramid).
Dates in YYYYMMDD format sort easily with just a simple numeric comparison.
TLD.Server.Service formats the hierarchical information in the order we read it.
But now we have this horrible convention where we use DNS, which is ordered least-to-most specific, and then tack on a file path ordered most-to-least specific.
... and don't even get me started on American date formatting
fun fact: in the UK, they used JANET Name Registration Scheme (NRS) through the 80s and early 90s, instead of the Domain Name System (DNS), which is what the internet works now. This is basically the same as how domain names work today... except they were BACKWARDS.
NRS started with the top level domain (TLD), then the domain, then any subdomains.
So if the UK has stuck with their old naming scheme and it had caught on instead of the american DNS, you'd be reading this on com.tumblr.www
177 notes · View notes
techav · 3 months
Text
Highly recommend buying your own domain and building a stupid little website
446 notes · View notes
techav · 3 months
Note
The eTower 600is was a particularly low-end model, shipping with only 32MB of RAM for $400* in 2001. I had the similar, but older and slightly less low-end eTower 566irx which shipped with 64MB of RAM for $800* in 2000. I'm betting they have the same motherboard, just different overall system configuration.
Can confirm — it was not a good experience running 98SE on it, and I'm sure ME would have been even worse.
But, with the max 256MB of RAM installed, it actually ran 2000 rather well. It also did well as an Ubuntu server in the v4/v5 days.
It didn't do so well with earlier releases of XP, but it's ok with SP3.
But yes, the "Never Obsolete Sleeper" has been done to death already.
* eMachines never actually advertised the real price of the system, just the "after rebates" price
But but but the e-machine is never obsolete, i-it says so on the computer.
But in actually, I unironically just want to get the case, stickers and all, and gut it to build a gaming computer inside its carcass. Just for kicks and grins.
I've seen that done before.
Sometimes I wonder if my eTower 600is could have been salvaged if I had taken the time to upgrade the hardware appropriately, and install a better OS than Windows ME. 98SE comes to mind... maybe 2K? In the end, it was still a shitty eMachine at heart.
24 notes · View notes
techav · 3 months
Text
Tumblr media
28 notes · View notes
techav · 5 months
Text
I've been working in technology for higher ed for over a decade now. Earlier in my career I heard a lot about "Digital Natives". Kids grow up with a tablet in their hands so surely they must know all about computers and technology, right? I mean after all they can do things on those tablets that we adults (i.e. Boomers) could never dream of!
"Digital Natives" is a myth.
Sure, there are a lot of children who do grow up with a tablet in their hands these days — a walled-garden device that intentionally hides its underlying structure, built to cash in on dopamine addiction, and constructed in such a way as to be nearly impossible to repair (both hardware and software). These children aren't learning how a computer works or even how to use one. They're learning how to use apps, nothing more.
The result is what we're starting to see: teenagers and young adults trying to enter a workforce dominated by computer conventions established roughly 40 years ago but with none of the skills required to succeed.
Eventually computer conventions will catch up to the new ones being established by the smartphone/tablet industry and people raised on tablets will be able to accomplish the tasks needed for their jobs. But the core problem will still remain.
The job field I think will suffer the most from this? Tech support. It's getting harder to dive into the core of a computerized system. Rootless operating systems with untouchable boot partitions and locked, cryptographically-signed bootloaders don't allow much room for getting to know how it all really works. All the current nonsense about generative AI eventually replacing tech jobs like computer programming ignores the fact that someone is still going to need to know how the system works when it inevitably breaks down.
I think people are finally starting to catch on. It's been a while since I've had to correct someone on the myth of the Digital Native. But I have little faith the problem will be resolved. Between hardware/software that is increasingly locked down in the interest of "security" and years of cuts to education budgets (in the US at least), I don't see any way that k12 schools could ever again develop the kind of computer literacy programs that existed in the 80's & 90's.
seriously, though. i work in higher education, and part of my job is students sending me transcripts. you'd think the ones who have the least idea how to actually do that would be the older ones, and while sure, they definitely struggle with it, i see it most with the younger students. the teens to early 20s crowd.
very, astonishingly often, they don't know how to work with .pdf documents. i get garbage phone screenshots, sometimes inserted into an excel or word file for who knows what reason, but most often it's just a raw .jpg or other image file.
they definitely either don't know how to use a scanner, don't have access to one, or don't even know where they might go for that (staples and other office supply stores sometimes still have these services, but public libraries always have your back, kids.) so when they have a paper transcript and need to send me a copy electronically, it's just terrible photos at bad angles full of thumbs and text-obscuring shadows.
mind bogglingly frequently, i get cell phone photos of computer screens. they don't know how to take a screenshot on a computer. they don't know the function of the Print Screen button on the keyboard. they don't know how to right click a web page, hit "print", and choose "save as PDF" to produce a full and unbroken capture of the entirety of a webpage.
sometimes they'll just copy the text of a transcript and paste it right into the message of an email. that's if they figure out the difference between the body text portion of the email and the subject line, because quite frankly they often don't.
these are people who in most cases have done at least some college work already, but they have absolutely no clue how to utilize the attachment function in an email, and for some reason they don't consider they could google very quickly for instructions or even videos.
i am not taking a shit on gen z/gen alpha here, i'm really not.
what i am is aghast that they've been so massively failed on so many levels. the education system assumed they were "native" to technology and needed to be taught nothing. their parents assumed the same, or assumed the schools would teach them, or don't know how themselves and are too intimidated to figure it out and teach their kids these skills at home.
they spend hours a day on instagram and tiktok and youtube and etc, so they surely know (this is ridiculous to assume!!!) how to draft a formal email and format the text and what part goes where and what all those damn little symbols means, right? SURELY they're already familiar with every file type under the sun and know how to make use of whatever's salient in a pinch, right???
THEY MUST CERTAINLY know, innately, as one knows how to inhale, how to type in business formatting and formal communication style, how to present themselves in a way that gets them taken seriously by formal institutions, how to appear and be competent in basic/standard digital skills. SURELY. Of course. RIGHT!!!!
it's MADDENING, it's insane, and it's frustrating from the receiving end, but even more frustrating knowing they're stumbling blind out there in the digital spaces of grown-up matters, being dismissed, being considered less intelligent, being talked down to, because every adult and system responsible for them just
ASSUMED they should "just know" or "just figure out" these important things no one ever bothered to teach them, or half the time even introduce the concepts of before asking them to do it, on the spot, with high educational or professional stakes.
kids shouldn't have to supplement their own education like this and get sneered and scoffed at if they don't.
24K notes · View notes
techav · 6 months
Text
Tumblr media
I finally uploaded my full gallery from VCF Southwest 2023. It includes far more than I posted here to tumblr over the past few months, so enjoy!
36 notes · View notes
techav · 8 months
Text
Tumblr media
The Bendix G-15 from 1956, the world's first "personal computer." One of these cabinets weighed a literal 1000 lbs. and cost half a million dollars in today's money. Or you could rent it for the equivalent of $17,000 a month.
It was numeric only, you had to "talk" to it via a typewriter, and when you turned it off it 'forgot' everything. It used 'drum memory,' which used the same rust-covered-spinning-magnetic-thing technology all hard drives would continue to use until flash memory became a thing. But in the Bendix it looked something like this (one from a slightly earlier computer):
Tumblr media
This computer is so old no one seems to have figured out what 'bits' it is. All I know is that drum thing "holds 2,160 words of twenty-nine bits." It can also do basic math problems in 270 microseconds. ...Which sounds fast, but that means it can do 2+2=4 in 27 thousandths of a second. Which is probably exactly how long it took your stupid brain to do that. For slightly more complex math, hiring a human mathematician at this time would be both cheaper and easier than dealing with this computer.
This is a "vacuum tube / diode analog architecture" computer, and it already had some kind of OS that meant you didn't have to know machine code? But that slowed it down even more...?
I have absolutely no idea how analog computers worked, or how anyone used one. There are tape decks on this thing, and it is plugged into a typewriter. Like I get the digital 1 and 0 thing, but I have no concept how you make light bulbs and blobs of germanium do that electronically.
But someone did, and this eventually led to you streaming Now That's What I Call Music! No. 86 on a Samsung phone.
So obviously all of this was a good idea...
827 notes · View notes
techav · 9 months
Text
Tumblr media
This computer is being a real pain in the ass right now.
If it's not one thing, it's another.
Keyboard wasn't working at all for a bit, and now it's working sometimes.
RESET line wouldn't work from the keyboard with the 74123 monostable in there to make it a clean pulse, so I had to bypass it -- pissed about that.
GFX toggle was not working at all, needed a pull-down resistor to fix that.
DEL line continues to interfere with the GFX signal, meaning if you press one, you toggle the graphics layer.
Just upgraded the CPU board to include a second 1702A ROM which is old enough to require -9V and 5V, but no ground signal? Fuckin. PMOS.
Now the additional ROM means the -9V rail is overtaxed by like... 3 things, and my bench supply for testing was like "nah, I won't push more current to keep the voltage within tolerance" so that's now I have to figure out a new way to deliver power for testing.
I've had to rewire multiple sections of it to enable different kinds of EPROMs to work, because of course none of this crap is straight forward. The documentation for how to implement it isn't all that complete either.
Computers used to be really hard to maintain, and I'm really getting a taste for that here.
57 notes · View notes
techav · 9 months
Text
Failure Unrelated
Tumblr media
Someone asked me a question — am I able to separate the bus speed from the CPU speed, since all my logic is synchronous and timing depends on the clock speed?
My initial thought was no, that wouldn't be possible; I didn't design the system that way. The idea got stuck in my head though. I started looking over the board layout and it looked like it might be easier than I initially thought — just cut a trace here, run a bodge there, and build a little adapter board.
... Which of course turned into another cut trace, a few more bodge wires, and a lifted pin on a PLCC socket. But still, the idea seemed solid. I had the CPU and FPU wired to one clock pin, and all of the bus logic was wired to another clock pin. I had an adapter with sockets for two oscillators and a jumper that would let me select whether the bus had its own clock or just used the CPU clock. That last feature was key for testing — I could set the bus to use the CPU clock initially so I could make sure everything was still running the same as before I made any changes.
Tumblr media
Fire it up and ... nothing.
Ok, just a loose connection on that PLCC socket. Firm up that connection and try again. This time it boots as expected. I can swap out the oscillator and run the system at different speeds, just like I could before. Time to move the jumper and add a separate bus clock.
Fire it up and ... nothing.
Maybe a different set of oscillators?
... nothing.
Ok, take a step back. Remove the bus oscillator and set the jumper back to run the bus off the CPU clock.
... nothing.
Try a different oscillator, maybe?
... nothing.
Maybe it's that PLCC socket bodge again. I should redo that.
... nothing.
Ok, clearly I've broken something. I'll move those bodges all back to the old primary oscillator pin and remove my adapter board from the mix.
... still nothing.
Time to break out the logic analyzer and see what the heck is going on. Solder some 30 gauge wire to the test points I left on the board — 50mil rectangles of no solder mask on 10mil traces. Add test leads to the top 8 bits of the address bus so I can see what the CPU is trying to access. Add test leads to clock, reset, address & data strobes, bus error, and data strobe acknowledge signals so I can keep track of the start and end of cycles. Then ran a few captures, resetting the system a few times to watch its behavior.
Tumblr media
Power comes up, reset triggers, the CPU comes to life and requests the first long word (reset vector) from address $0000,0000. Since I'm running an 8-bit ROM, the bus controller asserts DSACK0#, and the CPU continues fetching bytes until it has the long word. Same thing for the initial stack pointer. The next read is from address $F000,0000, since that is where ROM is located. There's a bus cycle targeting address $E000,0000, which is the first instruction on my ROM (move.b #7,$E0000000). Another 4 cycles targeting ROM for the next instruction long word fetch. Then another 4. It's definitely running code. Then another 4 ... on the fourth access the CPU sits with Address Strobe asserted for nearly 16 microseconds before the bus controller times out and asserts Bus Error.
The CPU tries to read the Bus Error vector. Bus Error. The CPU tries to address the serial port. Bus Error. The CPU tries to read address 0 again. Bus Error. From that point on, every 16 microseconds until the system is reset 6 seconds later ... Bus Error.
That's ... odd. Because the Bus Error can only be asserted by the Bus Controller, and only when the CPU is not addressing ROM or the serial port (since the Bus Controller is responsible for timing accesses to those devices).
I have no idea what is failing, but it does not appear to be the fault of the clock signal. It actually reminds me of a problem I was having when I tried to bring up both the FPU and video chips, where suddenly the bus controller was asserting the UART enable signal when the CPU was addressing the video generator. Perhaps I should take a closer look at my bus controller.
22 notes · View notes