Brian Lovin
/
Hacker News
Daily Digest email

Get the top HN stories in your inbox every day.

ryanianian

> The idea of implementing a CPU core inside an FPGA is not new, of course.

Indeed. I took a computer engineering class in undergrad. The capstone project was implementing from scratch a multi-pipeline RISC CPU (including the ALU and a very basic L1 cache) in Verilog that we flashed to FPGAs that we then programmed to play checkers using hand-compiled C. The FPGA was easier to flash and debug than the Spartan-6 mentioned in TFA but was significantly more expensive as well.

It was a brutal class, but it totally demystified computers and the whole industry in a way that made me feel like I really could understand the "whole" stack. Nothing scares me any more, and I no longer fear "magic" in software or hardware.

jwineinger

I had a similar course, using VHDL going on to Spartan-3E kits (which I still have sitting in a box 14 years later). Our professor gave us three C programs -- with the input that would be entered and expected output -- and we had to implement everything to make it work: CPU, VGA output (with "font" definition), keyboard input, and translation of the C programs to our CPU's instruction set.

That was a difficult yet extremely rewarding class. My wife, then girlfriend, still remembers that semester because she barely saw me.

IIRC, bonus points were given to the team with the highest clock speed. I didn't win, but I seem to remember mine being somewhere in the 18MHz range and the winner in the low to mid 20s.

plandis

> Nothing scares me any more, and I no longer fear "magic" in software or hardware.

You sound exactly like my professor for computer architecture. “Computers are not magic!” He mentioned this at least once during every lecture and my experience was similar to yours

chronolitus

Sufficiently expert wizards would probably go around saying "Magic is not magic!"

FPGAhacker

It really depends on how many steps down the ladder of abstraction you go. Computers are still magic if you step down a few more rungs.

pjmorris

Clarke's Third Law: Any sufficiently advanced technology is indistinguishable from magic. [0]

[0] Profiles of the Future, Arthur C. Clarke

picture

Down to the physics of FETs and the underlying chemistry? How much further doe it go?

tuatoru

At the third to bottom rung, all electronics are analog.

Salgat

Ironically computers are as close to magic as you can think of. It's literally a mechanical creature that you control with written spells.

RhysU

And the public raises pitchforks when one person in a castle controls too many of those mechanical creatures at once.

mayli

full stack engineer vs "whole" stack engineer.

tomxor

There's also adjacent stacks... like being able to build your own computer out of crabs and rocks if you get stranded on a desert island. So that you can get them to write SOS in the sand and play pong while you wait.

garfieldnate

Are there any resources online that would let me do a similarly deep study myself? I'm enjoying the famous "Nand to Tetris" course, but it uses a simplified architecture (no pipelining, no cache, no interrupts) and runs in an emulator instead of an FPGA.

erosenbe0

Awesome Base to start with! Lot of things in the next step though: PCIE, JTAG, differential signaling protocols, debuggers/monitors, UEFI firmware, cache coherency, TPM type modules, linkers, loaders, vector instruction sets, sound codecs, DACs, GPUs, multi channel SDRAM, MMUs, display protocols, device trees. Plus latency, throughout, and thermal management in any of the above in a real system.

vvanders

As someone who started pretty high up the stack(Visual Basic!) and kept peeling layers away out of curiosity I will say working with a CPLD/FPGA was really eye-opening. Latency difference between SRAM/DRAM and the "why" in pipelining made a bunch of disjointed approaches to optimization just drop into place.

necovek

Nostalgia is high with this one :D

I've started with gwbasic, then QBasic and moved up to "Visual Basic for DOS" (ncurses-style UI stuff, similar to Turbo Pascal iirc — I don't think many people even knew it existed since Win 3.11 was already big, but I loathed it and only switched to it because of... Trumpet Winsock for the internet!), but that did not stop me from playing with driving serial (COM) ports or parallel ports (LPT) with printer escape sequences. Not really FPGA level low (not even close), but DOS-based stuff was really easy to start hacking up!

moritonal

Yep, not nearly as hardcore, but writing a TCP stack changed how I saw the Internet.

adamgordonbell

Wow, that sounds like an amazing experience. Challenging though I bet.

kabdib

Leonard Tramiel once told me that the "world's record" for a production 6502 was around 25Mhz before the smoke came out. This was in a lab at Commodore, and beer was probably involved (and may have been used to cool the chip).

_abox

Reminds me of when I worked at a computer shop in the Pentium 1 days.. Motherboards had these complex blocks of jumpers in those days to configure the speeds, there was no autodetecting the CPU.

One day I was working at a different branch filling in for someone on sick leave, and I spent an hour trying to get a PC I just built to boot reliably. Every time it crashed after an minute or so. I didn't get it, everything seemed fine.

Eventually it turned out the "cheat sheet" they had of the jumpers was upside down over there. Someone had copy/pasted the pictures so it was matching the orientation of how they usually had the PC on the desk, rather than upside-down as I was used to. But the text was the right way up. So the total thing looked the same as in our branch except it wasn't.

It was a square block so I hadn't noticed the orientation was different. Turned out I had the 100Mhz pentium configured for 180Mhz. Oops. That wasn't even an officially supported speed of the motherboard but the BIOS messages indicated this (which I only noticed afterwards)

As we didn't want to sell this CPU after the torture I had put it through we decided to use it for a display box instead, and we tried to keep it running as long as possible by using compressed air cans upside down to blow dry ice :D It actually ran reliably until the can ran out. Only later I found out that liquid nitrogen extremeclocking was actually a thing :D

myself248

My 486 (nominally 40MHz) had one of those jumper blocks, and it was right near the front corner of the motherboard. Right behind the floppy-drive opening in the case, which had the drives mounted in these little removable sleds. And I didn't use my floppy drive much, and besides, the floppy cable didn't seem to mind being hot-plugged as long as you weren't accessing the disk at the time and unplugged the power connector first.

So during a long download, I didn't need all 40 MHz screaming along (and heating up the chip to the point that it needed a cooling fan -- a COOLING FAN, can you imagine a CPU running so fast it couldn't cool itself on ambient air?), so I decided to see if the clock generator jumpers were hot-pluggable.

Lo and behold, they were! I could reach in and seamlessly downclock the CPU to 8MHz (which was just one jumper-cap different than the 40MHz setting), which was still plenty to service the UART FIFO interrupt. Unplug the CPU fan too, which made the machine silent. Turn the monitor off, kick back in my chair, and take a catnap. The Telemate terminal software would play a little tune when a download finished, which would wake me up, I'd turn the monitor back on, open a DOS prompt, start unzipping the file, and then reach in and clock the CPU back up so the pkunzip process would finish in a timely manner.

It would do 50MHz but the upper half of RAM would disappear, so there weren't a lot of workloads appropriate for that configuration....

einr

and heating up the chip to the point that it needed a cooling fan -- a COOLING FAN, can you imagine a CPU running so fast it couldn't cool itself on ambient air?

This feels super nitpicky but I'm curious about your setup and if you're either remembering the clock speed wrong or if the fan was actually completely extraneous, because in fact neither of the common 40 MHz 486 parts, the Cyrix Cx486DX40 or the AMD Am486DX40, required a fan. The Cyrix one came with a heatsink, which was a rarity at the time.

The first 486-class CPU that pretty much always ran with active cooling was the DX4/100. Even the DX2/66 could run fanless if you had half decent airflow.

jon_adler

This sounds similar to how the 8088 XT motherboards could be toggled with a turbo button on the front of the case.

zwieback

Great story. I remember those days well, I also remember finding every last byte of UMB, elaborate autoexec.bat files and figuring out IRQ assignments to get max functionality. Kids these days don't know how good they got it.

necovek

You mean how bad they got it? :D

I loved modifying CONFIG.SYS with a hex editor to translate MS-DOS 6.2 (?) boot menu.

zepearl

Reading this made me remember that "Turbo button"...

https://en.wikipedia.org/wiki/Turbo_button

> With the introduction of CPUs which ran faster than the original 4.77 MHz Intel 8088 used in the IBM Personal Computer, programs which relied on the CPU's frequency for timing were executing faster than intended. Games in particular were often rendered unplayable. To provide some compatibility, the "turbo" button was added. Engaging turbo mode slows the system down to a state compatible with original 8086/8088 chips.

I never had such a button in my PCs (first one was a 386SX) but I did see it on other PCs and always wondered what it did... => today I finally found that out :P

Osiris

The one I had I believe was a 386. The problem was that it was easy to accidentally bump the button and my Mom would complain the computer was running slow.

jart

> As we didn't want to sell this CPU after the torture I had put it through we decided to use it for a display box instead

Why? What you did is basically a burnintest. All manufacturers torture their hardware by locking it in a hot room for several days at max speed to see if it fails. The basic theory is that if it's able to survive the torture test, then it's less likely to fail once it's been sold to the customer. Parts for things like space missions go through even more severe torture tests, where they're bombarded by radiation and every horrible thing you can imagine and that actually makes the price go up!

QuercusMax

I had a K6 233 MHz I couldn't get to run reliably in windows without underclocking to 200. But it was rock solid on Linux. Always wondered why....

ddingus

I had an old Pentium 90 that would crash on NT consistently. The diagnosis was a crappy bus that resulted in various errors.

Just for fun, I loaded Red Hat 5.2 on to the machine and it ran just fine. The syslog was full of bizzare errors, chattering the whole time too.

LargoLasskhyfv

If something like Windows98 probably because of it not using the HLT instruction of the CPU vs. Linux doing the right thing, resulting in a cooler CPU on average when running under Linux.

See http://www.benchtest.com/rain.html

Reasoning by MS was low quality of the countless low-end power supplies, and maybe voltage regulator modules on mainboards, being 'unreasonably' stressed by load changes that fast.

cmrdporcupine

A 65c02 bought new today from WDC will comfortably do 20mhz, and 25mhz would probably also be no trouble.

undefined

[deleted]

5faulker

Doesn't sound like something one can try at home.

AnimalMuppet

Why not? You can always buy some beer...

jazzyjackson

At the Vintage Computer Fest last week Bill Mensch mentioned to the audience that no one ever hears about the 65C02 and 65C816’s use in defibrillators and pacemakers - life critical applications - unless he tells them!

Does anyone know of good write ups or explanations of what makes the 6502 so reliable and what competition it had in being chosen for medical applications?

jacquesm

Simpler is an advantage in that world, if you can understand the functioning of your device to the cycle level then you have a much better chance of delivering something that will work reliably.

dhosek

One of the things that I loved about the Apple ][ was that it was possible for one person to completely understand everything about that computer from the hardware to the software. I've never had that level of complete understanding of any system I've used since.

mrandish

Yep, similar experience here. My first computer was a Tandy / Radio Shack Color Computer. It had a 6809 processor (8/16-bit precursor to the 68000) @1.8MHz, 4k of RAM (upgradable to 64k), 16k or 24k ROM memory with a quite expansive MSFT Extended Basic Interpreter (supposedly the last ROM OS & BASIC that had assembler written by BillG himself).

I taught myself BASIC, assembler, graphics programming and game programming on that machine over a period of about four years of hacking around on it (including hand-commenting some significant chunks of the ROM). By the time I retired it for a shiny new Amiga 1000 in 1986 I'd upgraded it to 256k of bank switched RAM with a soldered-in hack board, added four floppy drives, various I/O boards and learned OS/9 (a UNIX-inspired multi-tasking, multi-user OS) and hacked in my own extensions to the ROM OS (including adding my own new commands and graphics modes to the BASIC interpreter).

It started out as a lot of trial and error but, on later reflection, ended up being a surprisingly thorough grounding in computer science from which to launch my career. That 6809 machine was also the last time I really felt like I was aware of everything happening in a computer from interrupts to registers to memory mapping down to the metal.

jacquesm

Yes, that was the beauty of the 8 bit era, and many people lost it without even knowing that they lost something very precious. The total control is a very nice feeling.

dirkt

You may like Project Oberon [1] designed by Niklaus Wirth [2] then. His guiding principle was to make a powerful but simple system that could be understood from top to bottom by a single person, from the RISC hardware to the OS to the compiler used to compile and run the OS.

It's quite a bit above the Apple ][ in terms of power.

[1] http://www.projectoberon.com

[2] https://en.wikipedia.org/wiki/Niklaus_Wirth

ddingus

And there is a ton of developed software ready to go. At the least, all the internal code would be very mature at this point.

yitchelle

I don't have any documentation but I would imagine that as these chips have been in existence for so long, its behaviour is extremely well understood, including most, if not all, of its weak points. The work around for these weak points should also be well known.

flohofwoe

The nice thing about the 6502 is that it is completely reverse engineered down to the transistor level, so it's possible to explore what exactly is going on in the chip for each clock cycle even when the original design documents had been lost:

http://visual6502.org/JSSim/index.html

(and shameless plug, my own 'remix' with better performance and more features: https://floooh.github.io/visual6502remix/)

danbolt

I wonder if that makes finding replacements easier too, since you can comfortably find (or even make) new ones.

ncmncm

Blank black window for the remix. What should I be seeing?

[Edit: It's webgl. I don't have webgl in QubesOS :(.]

pkaye

Though I'd think they would use a microcontroller with a 6502 CPU which integrates ROM/RAM/GPIO/peripherals into one. Here is a microcontroller with a 6502.

https://pdf1.alldatasheet.com/datasheet-pdf/view/103795/ETC/...

wvenable

I just read an article recently about how 6502-based chips are used inside of satellite receiver boxes.

I wonder if it's just a function of the time. I imagine anything designed new now would use an ARM based microcontroller but likely when many of these systems were originally designed those were much less common and more expensive.

tzs

I'd expect that there are still a lot of new designs where something like an 8-bit microcontroller such as an AVR makes more sense than using something ARM based.

mlyle

It's getting harder and harder to find places where this is true.

ARM Cortex M0/M0+ blows AVR out of the water, and is usually cheaper except for the very lowest end AVR parts. Generally will use less power, too. And that's assuming your unit counts are so high that firmware developer time is free.

Of course, it's getting impossible to find 5V VCC ARM parts, so that's something that would steer you towards AVR if your system is really a bunch simpler by having a 5V micro.

userbinator

AVR is actually rather expensive, relatively speaking. I believe it's only popular due to Arduino. Even the various PICs will be cheaper, and of course there's still a lot of (very fast) 8051 variants as well as 4-bit MCUs at the ultra-low-cost level (<$0.01).

grishka

I remember reading that space probes, including Mars rovers, use what amounts to a PowerPC G3 but in a radiation-hardened modification.

undefined

[deleted]

tyingq

Similar for the Z80...

There's an FPGA soft core called nextz80 that's supposed to do 4x more per clock cycle than a normal z80.

"Works at up to 40MHZ on Spartan XC3S700AN speed grade -4) - performances similar or better than a real Z80 running at 160Mhz."

https://opencores.org/projects/nextz80

thrtythreeforty

Wouldn't be hard to beat the z80, it's microcoded and can only retire one instruction every 4 cycles

flohofwoe

That idea to treat some memory regions (e.g. memory mapped IO areas) as "external memory" which cause the CPU to run at the system clock speed (instead of the much faster "internal clock") sounds like it could also work well for (software) emulators.

However for "highly integrated" home computers like the Atari 8-bitters and C64 I guess this wouldn't be of much use, because most games and demos depend on proper CPU timing, even when not accessing memory mapped IO regions (for instance in wait-loops to get to the right raster position before reprogramming the video output).

cdcarter

There's a lot of discussion of wait stating and slow-clocking of 6502 and accessories over at 6502.org. In particular, many 65xx series accessories still need a common/regular clock signal to keep their internal timers going, even if the CPU is running faster/slower than normal for a specific access.

This ends up becoming a very fun design problem when you do it with integrated circuits!

whartung

Well, it's not new in the 6502 world either. The Apple IIGS has to do just this to clock down its 2.8Mhz CPU selectively to work with the floppy drives and such, outside of doing that to run as an Apple II.

300bps

C64 I guess this wouldn't be of much use

Correct, and even more - the Commodore 64 used a 6510 processor, not a 6502 processor. They're similar but there are significant differences.

https://en.wikipedia.org/wiki/MOS_Technology_6510

Beyond that, a 6510 isn't the only thing you really need to emulate a Commodore 64. You also need a SID Chip (MOS 6581) for sound and a MOS VIC-II for display and a number of other things.

coldacid

Fortunately, there's already a FPGA plug-in replacement for the SID, which can also act like the later MOS 8580 _and_ supports stereo/dual SID mode.

[0]: https://www.fpgasid.de/

compiler-guy

The cpu in the article is real hardware and pin compatible with the 6502, and they use it by putting it into 6502 sockets on old hardware, so no need to emulate the SID chip or anything else--there would be a real one available.

It would be quite easy to modify the design to full 6510, which just has a few more pins dedicated to IO. The biggest issue is properly emulating the bank switching, which they have done for other hardware, but the 6510 has a more complicated scheme.

vidarh

The C64 bank switching is trivial - the 6510 has a few IO pins mapped to address $1, and a few of them are used for the bank switching.

The bigger problem is that all the RAM is really used for "IO" (in theory anyway) on the C64, as the VICII can remap the character generator (font) location, where it pulls sprites from, and where the screen content is stored.

So a static memory map is insufficient if you want it to just plug into the CPU socket and work.

GekkePrutser

I think the 6502 was in its disk drive IIRC.

I always wondered in those days why the disk drives for 8-bit computers were so crazy expensive. In Holland they cost more than the computers they were meant for.

But only later I learned that they were basically another whole computer themselves. Plus the drive mechanism of course which also wasn't cheap (but not nearly as expensive to warrant the high price).

It was the same for the Atari 800XL I had, I never owned a commodore 64.

retrac

It's all the odder when you consider the Apple II.

It came out before any of those other home machines, and yet had the cheapest floppy disk storage from 1978 onward. That was largely due to Steve Woz's brilliant disk controller design, which did away with everything but some simple glue logic and a couple ROM chips, lifting everything else in software.

Of course, the Apple II had real expansion slots, obviating the need for using a serial connection, too.

From what I can tell, while the Apple II family had a much higher up-front cost, the more serious you were about computing, the more the low-priced home machines with expensive peripherals worked against you in the long run.

rbanffy

> I always wondered in those days why the disk drives for 8-bit computers were so crazy expensive. In Holland they cost more than the computers they were meant for.

The mechanics were also somewhat expensive. In Brazil, an Apple II drive was often as expensive as an Apple II clone.

What makes the intelligent drives a great idea is how easy it is to emulate them - you emulate a nice protocol. When you have to emulate, say, an Apple II drive, you need to emulate the delays the drive mechanics introduce, as well as the head electronics, because the Apple II's 6502 is reading the head and assembling the bits. That's also why accelerating an Apple II requires you to slow it down for a longer time every time it accesses the IO region - because the disk needs to revolve in the exact time the 6502 takes to run some amount of code. With an intelligent peripheral, it doesn't matter you don't wait several seconds between commands, as long as you only issue them at the required speeds.

cbm-vic-20

Here's a demo running directly on the 1541 disk drive. It generates video by hacking the serial cable that's usually used to connect to the computer, and audio from the drive motors.

https://www.youtube.com/watch?v=zprSxCMlECA

vidarh

Yes, the 1541 used a 6502.

They're compatible enough you can drop a 6510 into it with no problems (I tested that, to my parents great despair). You can also swap the IO chips I think, with various effects (you at least can drop the Amiga CIA chips into a C64 - you lose the realtime clock nobody uses, but gain timers).

Putting a 6502 into a C64 may or may not work for some values of work or not at all - I don't recall what the default for the bank switching would be, but the tape drive certainly wouldn't work (the gpio lines on the 6510 is used for bank switching the ROM, and for the tape). But it should be quite easy to make it work except for the tape drive. You just need to ensure the right voltage on 3 pins for the ROM bank switching (various software that expect to be able to change it will fail though)

vidarh

The only difference that matters is the IO pins mapped to address $01. Given this is an FPGA based project it likely would be pretty trivial to make it work in a C64 as well.

bluGill

Depends. Some Atari 8 bit games used the display interrupts for timing, so those could run as fast as possible so long a the display interrupt happened at a consistent 60hz. (now that I think of it, I think some games has issues in countries with 50hz updates)

vidarh

This is true for a lot of older and simpler games for the C64 as well, but at the same time for most of them you'd see absolutely no benefits, since it's common for everything to hang off the interrupt.

A few games that glitches when there's too much stuff going on at the same time might run smoother.

Demos are likely to mostly not work because any remotely fancy effect tends to depend on much more precise timing, though.

tinus_hn

There’s plenty of games and demos that require the exact amount of raster time to function. If you want to display things in the left and right border you have to switch something at exactly the time the graphics chip is displaying the right border. That’ll never work if the timing changes.

djmips

They are already caching / stimulating system memory so why not go the next step and simulate the other devices attached to the bus. ;)

ddingus

I have a 16Mhz Apple 8 bit computer.

What struck me is how lean early tools and applications really are. Many are just usable at 1 Mhz.

At 16, things are generally luxurious. Doing graphics, or writing, even running programs in BASIC all make sense and perform.

100Mhz is crazy! Frankly, one could add to the software and take advantage of the fast electronic storage available today and get real things done.

I wonder just what people will wnd up doing on a BBC Micro, or Apple 8 bit machine fitted with one of these.

I want one! Fun project.

cmrdporcupine

In reality in a machine like the C64, etc. it wouldn't really run at 100mhz, because in that case the bus speed is driven by the VICII chip and the bus access is stolen by it to do its work, and this is all tied to NTSC/PAL speed. So in the design on this FPGA impl it could theoretically internally do a burst of 100mhz-esque work it would only be while the VIC-II (or equivalent in other machines) has given time over to it.

The original article touches on this, the difficulty interfacing an Atari 8 bit, C64, etc.

einr

This was already an issue on the Commodore 128, which had a 2 MHz "fast" mode but you had to manually engage it, and doing so would turn off the VIC-II. Good for doing large calculations or working in 80 column text mode, but useless for games etc.

cmrdporcupine

Yeah I suppose one could use a CPU similar to this 100mhz FPGA one and just have it do ~50 cycles worth of activity every time the VIC-II yielded control to it. Then it'd be idle for 50 cycles, etc. And then have a "fast" mode like you're talking about to do 100 cycles in a clock.

Memory and peripheral access would be seriously wait-stated though. 50 cycles of action doesn't do you much good if memory is slow. Especially when you consider that programs for the 65xx made heavy use of zero page / direct page as an extra bank of pseudo-registers.

So you'd end up implementing some kind of cache, or memory mirroring, or just moving the whole of RAM in the FPGA... and then you start to wonder why you didn't just do the whole thing in FPGA as a C64 SoC.

ddingus

Yes, and that's precisely why the Apple 2 is still on my hobby / workbench. It's simple to interface with, and with a faster clock, remains useful.

And the Apple has slow RAM and fast RAM in a similar way. Really, to get the machine to run at 16Mhz, it's necessary to copy code into the fast RAM on board the card, leaving system RAM unused.

The Color Computer, Apple 2 and some others were made in a simpler way that did not interrupt the CPU for refresh and or video access cycles. That makes projects like this easier.

ddingus

Don't get me wrong. 8 have the Apple on my hobby bench for stuff like this, but I also have my Atari and when I replace it, C64 for gaming goodness.

Just saying...

Simplicitas

"The 65.02 MHz 6502" would be a much better headline

OnlyMortal

Way back when, in the early 90s, I ported a unix 6502 C64 emulator to Macintosh (Classic of course). I used it to play ripped Rob Hubbard tunes when the printer ran out of paper.

It surprised the end users who’d been ignoring the original SysBeep(1) sounds the application previously used.

MarkusWandel

This is somehow super retro cool. I remember the 8032 being the most serious computer I'd seen to date. Wordpro 4+ and something called "The Manager" in use at my high school, plus the rebadged daisywheel printer Commodore had at the time (CBM 6400?) just had "serious computer" written all over them, right before the IBM PC steamrollered all of that into oblivion.

100MHz. The software you could run! Add a megabyte or so of full speed, pageable RAM expansion. Every computer language right up to C++ (if it works on the 8-bit Arduino it could be shoehorned into a fast 6502 - limited stack? Who cares, just do the big stack in software. Special zero page? Just use it as glorified CPU registers).

What's the point really? But awesome all the same.

jandrese

A megabyte of ram on a machine with only a 16 bit address space gets a bit silly. Do you really want to manage 16 memory pages? These aren't multitasking machines, what are you going to do with that ocean of memory you can't access without faulting?

detaro

> These aren't multitasking machines

Why wouldn't a faster machine with more RAM be a multitasking machine? (Obviously without extras you are limited regarding security etc, but plenty early multitasking machines didn't have that)

flenserboy

Indeed. Consider that this was done even for some of the more primitive machines of the day —

https://en.wikipedia.org/wiki/MP/M

jandrese

Without a memory mapper or scheduler it's hard to write a multitasking OS.

RetroSpark

> A megabyte of ram on a machine with only a 16 bit address space gets a bit silly. Do you really want to manage 16 memory pages?

The Game Boy Color has a 16-bit address space and almost all its games are 1MB or larger (although that's ROM rather than RAM). The largest game is 8MB in size - which is managed as 512 banks of 16KB each.

MarkusWandel

Well take Wordpro 4+ for example. In a 32K machine, it had enough memory for a few pages of text. It would have been relatively minor software complexity even at 1MHz to use paged memory to obtain a much bigger text buffer. Ditto BASIC could be readily rigged up to use a paged memory architecture. Not everything needs a linear address space.

reaperducer

A megabyte of ram on a machine with only a 16 bit address space gets a bit silly.

There were plenty of machines kitted out with that amount of RAM. S-100 bus and other multi-user systems in the 70's and 80's could handle dozens of simultaneous users. It's cooperative multitasking, not preemptive multitasking.

rusk

I can put 16MB on my c64 with my 1541 ultimate. Haven’t looked at ir much but I believe there were some commercial productivity apps such as GEOS with very basic multitasking capabilities would be well able use this. Imagine they’d had an amped up CPU too!

buescher

Back in the day, the typical use was as a RAMdisk.

xioxox

I was wondering how quick an emulated 6502 could go. This project claims 10GHz+ using JIT emulation: https://github.com/scarybeasts/beebjit

coldacid

Yeah, but that's not a hard/firmware replacement. Besides, JITs are cheating :D

marcodiego

That's cheating. JIT is more recompilation than emulation.

ncmncm

Cheating is the name of the game.

js2

This got me thinking about the CPU accelerators that were available for the Apple ][ line, including the GS's 658C16. I googled and little did I know that there's an enthusiast community still developing for it, that's gotten the GS is up 18 Mhz:

https://wiki.reactivemicro.com/TransWarp_GS

nevster

I've still got my original unaltered TransWarp GS. It was pretty much essential for the computer at the time.

djmips

Agreed. I get the warm fuzzies thinking back to when I got mine and build times were slashed tremendously.

NL807

Looks like a fun project. I should get back in to FPGA tinkering. Last time I played with one was about 20 years ago. I wonder if the development environment has improved since then?

jacquesm

Yes and no. Much heavier footprint, mostly the same proprietary bs, somewhat faster and much better debugging/simulation tools. Languages have improved somewhat, and as long as you stay within an eco-system and use the vendor supplied tools and software you should be mostly ok, stray outside of that (for instance: open source toolchains for cutting edge FPGAs) and you'll be in for a world of trouble. The fabrics (got a) lot larger and there are some more and interesting building blocks to play with. Higher switching speeds.

Someone who is more active in this field may have a more accurate and broader view than I do.

https://symbiflow.github.io/

Is one of the most recent and - for me - significant developments. Note that for companies that use FPGAs none of the above is considered a hurdle, though their engineers may have a different opinion and that the hobbyist/hacker market for FPGAs is so insignificant compared to the professional one that the vendors do not care about catering to it.

kragen

I think there are a lot of major developments in the last 20 years, although I'm not active in the field. Symbiflow is largely a distribution of yosys, a bunch of other IceStorm projects, and nextpnr (is that part of IceStorm?), in the same sense that Debian is a distribution of Linux. Another one, but I think limited to Lattice FPGAs, is https://github.com/FPGAwars/apio.

I think the biggest development, though, is that there's enormously more off-the-shelf Verilog and VHDL, not just on OpenCores like 20 years ago, but also on GitLab, GitHub, and so on. Easy examples are CPUs like James Beckman's J1A, the VexRiscv design used in Bunnie's Precursor: https://github.com/SpinalHDL/VexRiscv (as little as 504 Artix-7 LUTs and 505 flip-flops), and Google's OpenTitan.

But from my POV the more interesting reason for using an FPGA is for things that aren't CPUs. For example, the SUMP logic analyzer and its progeny OLS https://sigrok.org/wiki/Openbench_Logic_Sniffer (32 channels at 200MHz), although I think both of these require the proprietary vendor tools to synthesize. I'm gonna go out on a limb here and guess that reliably buffering up data at 6.4 gigabits per second is not a thing that any CPU can do, even one that isn't a softcore; CPUs that run at speeds high enough to potentially do it invariably depend on cache hierarchies that monkeywrench your timing predictability.

As I said, though, I'm not active in the field, so all I know is hearsay.

marktangotango

I'd also add as a bystander, that fpga providing onboard hardware for things like DDR3/4 and PCIe seem like significant development. Really tremendous performance is available in these devices.

Daily Digest email

Get the top HN stories in your inbox every day.

The 100 MHz 6502 - Hacker News