28 ms·
I decided to make a graphics card for my Amiga 2000
- dingdingdang 10y agoThe fact that one person can manage this (which would back in the day have taken god knows how many man years of dev time) gives me hope in terms of humanity's capability to somehow deal with the ever increasing technological environment we're enmeshing ourselves into. Thumbs up for a mega cool project!
- stuxnet79 10y agoIndeed. I personally wished I majored in computer engineering instead of CS.
- dave_sullivan 10y agoWith the amount of content online, email, and a couple days per week of dedicated focus, you still can! I think if you set a goal like "build x for y" and struggle through it, learning as you go, you'll learn faster because you skip all the stuff you don't need (because you literally didn't need it to hit your goal). And think of all the money you'll save! Skip college. And if you already went, don't go back!
- bcook 10y ago"... you'll learn faster because you skip all the stuff you don't need". Assuming that nobody can predict the future, how can anyone know the usefulness/uselessness of any knowledge?
- ianai 10y agobecause every field has the 101 stuff that nobody uses anymore but they teach to the newbies 'for experience'
- erikpukinskis 10y agoGenerally, the stuff you need to get something done overlaps pretty well with the stuff you need to get other stuff done. Not 100% but enough you're probably not wasting your time. It's at least as good a heuristic as "prof said it's important".
- analognoise 10y agoMost people who are successful as autodidacts are successful in college, it makes zero sense to avoid it if you're already the kind of person who learns well. Most people are not great autodidacts, as shown by the miserable cometion rates of online courses.
- wolfgke 10y ago> Most people are not great autodidacts, as shown by the miserable cometion rates of online courses. For me (though I consider myself as a pretty good autodidact) the reason why I didn't complete many MOOCs (before you had to pay to even get a certificate) was simply lack of time: My main "job" is completing a PhD in applied mathematics, so if there happened anything for my PhD work that required some time-intense intervention (say, I found out that my proof idea didn't work so well as I originally thought; or if the advisor got the idea (which does not mean that it was always a bad idea, just to be clear) that I should read up more papers in some specific area - also very autodidactic) I sometimes had no other choice than stopping some MOOC that I was attaining.
- 9erdelta 10y agoMeh, I'm an autodidact and I rarely complete a MOOC that I sign up for. There are many reasons for this. Quite a few try to just be copies of the campus course. Others focus too much on lecture and not enough on doing. In some courses, there is a huge disconnect between the difficulty of the assignments, and the content covered in the lectures. But the biggest reason for me is, I usually sign up for a course as a means to help me get going on a project. As soon as I'm up and going with the project, I leave the course behind. There are only a handful of courses where the content was so interesting and well paced that I stayed for the whole thing. The embedded electronics course at edx being one of them.
- patates 10y agoWould you like to share the interesting ones? That'd be great.
- dave_sullivan 10y ago
- userbinator 10y agoOne talented person. I don't think the typical CS grad would be anywhere near this level. This is pretty much a "10x". But there are a few others too; here is someone who made an entire SoC (including CPU, GPU, and audio --- all of his own design) on an FPGA, plus wrote the software to run on it. And this is apparently his first FPGA project: http://www.linusakesson.net/scene/parallelogram/ http://www.linusakesson.net/scene/parallelogram/
- noonespecial 10y ago10x indeed. This is an example of that even rarer creature, the "unstoppable" engineer. Need an FPGA? I'll just learn verilog. Never made a pcb but need one? No prob, just learn kicad and figure out how to solder SMD. No docs? Just reverse engineer. No tools? Make my own. This approaches Woz level engineering, if not 100% technically, at least philosophically.
- SwellJoe 10y agoI believe we're seeing the lever that the Internet provides produce results, in cases like this. Smart kids before the Internet had to dig up information in widely disparate sources; some of these skills and knowledge were the exclusive purview of universities and research institutions. You simply couldn't do some of this stuff if you didn't have access to a lab and someone to show you how to do it. The Internet has caused an increase in access to knowledge comparable to, and maybe even surpassing, the leap from the pre-Gutenberg printing press world. In other words, the Internet is a multiplier that applies to the incredible curiosity and enthusiasm and intelligence of bright kids. So, multiply your 10x (or whatever #x) nerd by the 10x (or probably much greater multiplier) of the Internet, and you get the world we're living in now. Amazingly, the multiplier will likely continue to increase over time. I don't know if it will accelerate in a way comparable to the Internet coming along (I mean, we had centuries between early really big knowledge multiplier leaps), but it might. We live in amazing times is what I'm trying to say, and I'm genuinely jealous of kids coming up today, despite some minor caveats. I was bright and curious, and lucky enough to have access to a computer (C64 first, later C128 and Amiga 2000), but the access to knowledge was still quite limited. Internet didn't come for me until I was an adult. Internet and a boundless curiosity and practically unlimited free time is heady stuff.
- rwmj 10y agoIt's a very cool project. However back in the day I knew someone who made a half-height accelerated graphics card for MVME (68020 processors, VMEbus so similar era and processor). He pretty much did it on his own, although it was his full time job at the time and he had some support selling the boards. Also he used an existing (Hitachi?) GPU and some existing VME interface chip.
- 0xcde4c3db 10y agoIt's probably not common knowledge that Hitachi even made (and Renesas still makes, apparently [1]) graphics hardware. To the best of my knowledge, they designed the sprite/polygon rasterizer ("VDP1") for the Sega Saturn, and the off-the-shelf Hitachi/Renesas chips seem to be loosely related. [1] http://am.renesas.com/products/mix_sig/graphic/index.jsp http://am.renesas.com/products/mix_sig/graphic/index.jsp
- sklogic 10y agoYes, we live in a very interesting time. You can order a decent quality PCB from the likes of OCHPark for peanuts. You can fit an SoC capable of running a usable Linux into an FPGA well under £50. MCUs are cheap and powerful. Great time for a tinkerer.
- amelius 10y ago> gives me hope in terms of humanity's capability to somehow deal with the ever increasing technological environment we're enmeshing ourselves into On the other hand, FPGAs are still complicated pieces of hardware, similar to what a CPU is for normal programming. It's not like anybody could make an FPGA by themselves in their basement in any reasonable amount of time, with limited resources.
- sklogic 10y agoJust for fun: http://blog.notdot.net/2012/10/Build-your-own-FPGA http://blog.notdot.net/2012/10/Build-your-own-FPGA
- amelius 10y agoCute, but of course that approach will not stand a chance in any realistic application.
- sklogic 10y agoJust wait for the plastic circuits printers to become a commodity: http://semiaccurate.com/2015/11/18/arm-charts-path-printed-plastic-chips/ http://semiaccurate.com/2015/11/18/arm-charts-path-printed-p... With this, a homebrew FPGA would become a reality. As well as homebrew ASICs in general.
- CamperBob2 10y agoCool stuff! On the read problem: I found host read timing to be significantly harder to get right, and it's still not perfect. Host reads can't be put in a queue and have to be processed immediately. This interrupts the fetching process; if the host needs to read from a totally different memory location then the display engine is fetching, the SDRAM has to close, refresh and reopen rows, which is a time consuming process. So far, reads from the host cause temporary distortions (glitches) in the display output. I plan to mitigate these problems using either burst mode reads and fast switching and/or inserting CPU wait states via the XRDY signal. ... why not just maintain two copies of the frame buffer, one onscreen and one off? Your hardware FSM then has a much simpler job: make the real VRAM contents match the shadow buffer. In other words, instead of tackling the problem with 1988-era engineering, take advantage of the free parallelism and essentially infinite (from a 1988 perspective) memory that you get with an FPGA board today. Hell, there's probably enough BRAM on that Spartan6 to implement an Amiga frame buffer.
- duskwuff 10y ago> Hell, there's probably enough BRAM on that Spartan6 to implement an Amiga frame buffer. Nowhere near enough. Spartan-6 LX25 has 936 kbit of block RAM; 800x600x16 requires a little under 8 Mbit without double-buffering.
- CamperBob2 10y agoGotcha. I've been spoiled by the bigger parts.
- rasz_pl 10y agoenough to read ahead whole line of pixels at a time
- deleted 10y ago[deleted]
- rasz_pl 10y agoYou are thinking write glitches - this is what double buffering solves. Read glitches happen when two reads collide, and without any delay mechanism you need to choose which one to drop on the floor. What you do to solve this is implementing busy wait on external bus (/DTACK on amiga), you can also read ahead video output data in chunks (think filling cache line using SDRAM Burst mode) giving you more memory controller time in between. This is why back in the day different graphic cards delivered different Doom1/2/quake1 fps, while intuitively there should be no difference games being software renderers. here is a sweet little article By Michael Abrash about vga isa bus hardware optimizations http://www.drdobbs.com/ramblings-in-real-time/184410037 http://www.drdobbs.com/ramblings-in-real-time/184410037
- stevep98 10y agoVery interesting read. Thanks!
- 0xcde4c3db 10y agoThis is pretty great. I especially like the poor man's ChipScope that shows up on the display itself. I'm sometimes surprised by lack of options for a small, cheap GPU that could be readily integrated into a design like this. There's seemingly a big gap between the classic VDP chips like the TMS9918 and its successors (which AFAIK have all been out of production for ~20 years) and modern GPUs that come in monster BGA packages, call for super-fast external RAM and dedicated power supply circuitry on 6+-layer boards, and can't be bought through mortal-friendly channels anyhow. FTDI has the FT800 series, and I'm sure there are still suppliers of S-PPU (the SNES graphics hardware) clones if you know who to talk to in China, but other than that it seems like the options are: 1) Roll your own in an FPGA, like this project 2) Get a fast, preferably multicore microcontroller with suitable I/O and program it to do rendering in software (maybe a Propeller, GA144, or some XMOS chip?) 3) Buy your GPU attached to an ARM core (i.e. Allwinner, Rockchip, Freescale i.MX, TI OMAP/Sitara, etc.) and program it to speak some GPU-oriented protocol (which probably adds a considerable amount of latency, since you'd realistically need to use the Linux drivers)
- rjsw 10y agoThe MediaQ MQ200 was perfect for this kind of thing, it had embedded DRAM and a flexible bus interface. It was BGA though, but so were things like the StrongARM CPU that it was typically connected to. Then NVidia bought the company.
- yoshamano 10y agoIt's funny you mention the TMS9918. I was looking for a good place to link my friend's drop in replacement for the 9918 he made for his TI 99/4A. http://codehackcreate.com/archives/30 http://codehackcreate.com/archives/30 "F18A stands for “FPGA TMS9918A” (hence the project’s title) and will be 100% hardware and pin compatible replacement for a TMS9918A VDP (video display processor)."
- makomk 10y agoNot much market for them. For most applications, you're better off using a SoC with a built-in GPU and running your user interface code on the built-in CPU core(s).
- hoke_t 10y agoHow does one learn how to do this stuff? Low level programming interests me immensely but I can never find a good resource for how to learn. I know C, C++, Java, Javascript, Python, Objective-C, Swift, but the only reason I have been able to learn these languages and their technologies is because of the resources available. Can anyone point me in the right direction to become acquainted with low-level technologies/understanding?
- dsr_ 10y agoStart with an assembly language designed for teaching: MMIX. http://mmix.cs.hm.edu/index.html http://mmix.cs.hm.edu/index.html There are books, courses, homework, and lots of free resources -- in particular, emulators. Then find a project that interests you, and learn what you need to do for that. 68000 assembly? Forth? Graphics on a VGA card emulated in a VM running MS-DOS? All of these things are entirely do-able. Or find a project that is already in development and contribute to it. The important bit is your own motivation.
- jeffreyrogers 10y agoI don't know if MMIX is that useful to learn honestly. It's RISC like, which is good, but the register saving convention is a bit weird and its not that similar to things that are already exist. Most assembly languages are pretty easy to learn (even x86), they just seem hard because they're so low level.
- coupdejarnac 10y agoRead the book Bebop to the Boolean Boogie. It's a fun, well explained introduction to computer engineering fundamentals. Also, the Art of Electeonics is a great resource.
- 13of40 10y agoIf you use windows, I think Microsoft still has a DDK somewhere that contains the final version of MASM, their macro assembler. I assume there's a gnu option out there too. Get one of those and look on google for a hello world tutorial. Write some user mode stuff. Then try a boot sector / boot loader. Use a VM for testing and development. Get a book like The Ultimate PC Hardware Guide and start writing a hardware abstraction layer for your new OS...
- scrame 10y agoWow, I'm really jealous of this. I never even had a 2000, I had a 500 with a side expansion that could use an a2000 card, for extra ram, since there was no HD. I always wanted to do hardware work back then, but never quite had the right opportunity going through school. So cool to see this, that a500 was how I learned so, so, much about computers that I love that it's still a tool for people to learn with.
- nxzero 10y ago>> "The Amiga is probably the last 32-bit personal computer that is fully understood, documented and hackable." So, compare to the Pi, what information is present, anyone know?
- mjg59 10y agoBasically everything is known about the Amiga - people have reimplemented compatible hardware on an FPGA (https://en.wikipedia.org/wiki/Minimig https://en.wikipedia.org/wiki/Minimig). Every piece of code that runs from power on has been examined in detail (there's even a free software from-scratch version of the boot firmware). The Pi still requires closed boot code that runs on the GPU in order to bring up the application processor, and that still isn't well understood.
- Zardoz84 10y agoI would say that a 386/486 PC ISA is well know how works.
- mjg59 10y agoWe know how the platforms work in general, but 386-era is when SMM appears for the first time and so it's unlikely that anybody has full knowledge of the entirety of a specific system.
- hedgehog 10y agoThe MiST project has compiled a collection of HDL reimplementations of old hardware ported to their FPGA board: https://github.com/mist-devel/mist-board/wiki/CoreStatus https://github.com/mist-devel/mist-board/wiki/CoreStatus
- WalterBright 10y ago> I checked eBay for the "big" Amigas I never had, expecting them to be cheap, but found out that these boxes had turned into valuable collector's items. Story of my life. I had an Amiga, got rid of it. Had an H-11, got rid of it. Had a Digicomp I and II, mom got rid of them. All worth a big pile now. My basement is full of old computers I stuck down their as I upgraded. All worthless :-) I have an unerring ability to get it backwards what will be a collectors' item and what won't.
- deleted 10y ago[deleted]
- sixothree 10y agoI enjoy seeing vintage computing posts on Saturday at HN.
- 9erdelta 10y agoSuddenly there's a spike in demand for Amiga 2000s on ebay...or maybe it's just me, I immediately opened a new tab and started searching for one to buy.
- dahart 10y agoTo my eyes, this looks insane. Very impressive, the kind of post that makes me feel both jealous and inspired! It looks like it could have taken up more than just some 'free time', was it truly contained after hours? I'd love to hear what tricks you (author), or anyone else, has for making free time to explore side projects. I'm finding it harder and harder to contain work coding; it seems to consume all available time!
- dynjo 10y agoI made one before :-) http://amiga.resource.cx/exp/harlequin http://amiga.resource.cx/exp/harlequin though my prototypes were much less pretty than yours! http://imgur.com/Y7OOg2i http://imgur.com/Y7OOg2i
- mntmn 10y agoha! super awesome :D
- stuxnet79 10y agoSaw his page and thought it looked familiar. This is the same guy who coded Conway's Game of Life in Brainfuck: http://www.linusakesson.net/programming/brainfuck/ http://www.linusakesson.net/programming/brainfuck/
- kyberias 10y agoNot the same guy. This guy is Lukas F. Hartmann. That guy is Linus Åkesson.
- rasz_pl 10y agoIf you liked this project you might enjoy this blog http://amigaprj.blogspot.com http://amigaprj.blogspot.com Whole journej from building simm based 74 logic driven ram expansion to 50MHz turbo card: http://amigaprj.blogspot.com/2013/05/amiga-fast-ram-expander-with-simm.html http://amigaprj.blogspot.com/2013/05/amiga-fast-ram-expander... http://amigaprj.blogspot.com/2013/06/amiga-500-ide-controller.html http://amigaprj.blogspot.com/2013/06/amiga-500-ide-controlle... http://amigaprj.blogspot.com/2014/09/8-mb-fast-ram-expander-cpld-version.html http://amigaprj.blogspot.com/2014/09/8-mb-fast-ram-expander-... http://amigaprj.blogspot.com/2015/04/scandoubler-ecs-for-a500-a2000.html http://amigaprj.blogspot.com/2015/04/scandoubler-ecs-for-a50... http://amigaprj.blogspot.com/2015/06/amiga-500-68hc000-14-mhz-accelerator.html http://amigaprj.blogspot.com/2015/06/amiga-500-68hc000-14-mh... http://amigaprj.blogspot.com/2015/06/amiga-500-14-mhz-accelerator-with-dram.html http://amigaprj.blogspot.com/2015/06/amiga-500-14-mhz-accele... http://amigaprj.blogspot.com/2015/07/amiga-500-28-mhz-accelerator-with-dram.html http://amigaprj.blogspot.com/2015/07/amiga-500-28-mhz-accele... http://amigaprj.blogspot.com/2015/07/amiga-500-accelerator-card-with-68hc000.html http://amigaprj.blogspot.com/2015/07/amiga-500-accelerator-c... http://amigaprj.blogspot.com/2015/09/hc508-amiga-500-68000-50-mhz.html http://amigaprj.blogspot.com/2015/09/hc508-amiga-500-68000-5...
- bayesian_horse 10y agoFar be it from me to question other people's choice of their side-projects, but I sometimes wonder what these geniuses would be capable of if they applied their talents to problems whose relevancy is more ... agreed upon ...
- harel 10y agoI think the combination of such aptitude combined with the will to change the world for the better, is more rare than those two attributes alone.
- coderjames 10y agoThis is highly relevant to my interests, as I'm currently home-brewing a 68K-based system in need of a video card. Thanks for sharing your work! This is awesome.
- holografix 10y agoUn-effing believable. Someone get this guy onto AI see if he can create a general purpose one in 5 months.