In 1976, the first 6502-based hobbyist computers were just starting to appear. MOS Technology's own KIM-1 had a numeric pad and seven-segment display. The competing SYM-1 could draw simple characters on an oscilloscope. But the real breakthrough would come when the computer could receive input from a full keyboard, and output to a television set. Steve Wozniak demonstrated such a device at…
8bitworkshop now supports *five* additional 8-bit platforms! They don't really *fit* in with any of our books, though they use the same toolchains as the other 6502 and Z80 platforms. Thus, you can program all of them in either C or assembler! We'll do some follow-up posts in the near future describing technical and programming details for each platform. For now, we'll give a quick overview,…
We've added yet another platform to the 8bitworkshop IDE, the legendary You can program in both C and 6502 assembler, and there are a ton of examples to get you started. The IDE lets you write *C* using the *cc65* compiler toolchain. While it has lower performance and greater code size than a well-written assembly program, you can still write a pretty good game in C. We use a fork of…
Big news! You can use the 8bitworkshop IDE to [write Verilog code](http://8bitworkshop.com/redir.html?platform=verilog), and see it executed instantly in real-time on a simulated CRT. Most computers are fast enough to render a game at 60 Hz, which requires simulating Verilog at almost 5 million ticks per second. This is all done in JavaScript! For example, here's a simple clock divider module: The…
I came across Fred Quimby's [batari BASIC](http://bataribasic.com/) while developing the first version of 8bitworkshop, and was intrigued. This is a BASIC compiler that targets the 6502, and has specific support for Atari 2600 features. For example, you might define the playfield like this: You could then set the foreground and background colors: And animate the playfield, scrolling it downward…
In 8bitworkshop 3.1.0, we've given the VCS platform plenty of love: There's also some cool new features: You can go back in time and debug something, for instance. You can also embed it a website or blog post using an iframe. that fits into 250 characters. BTW, if you still see "3.0.0" in your browser URL, clear your cache or [navigate directly to the new version](/redir.html). Happy Coding!
Version 3.0.0 of the 8bitworkshop IDE is out! Under the hood, there are lots of changes: This means you can save many more projects locally. It supports multiple include and link files, which is something we'll be taking advantage of in future updates. Listing files can be found here, as well as the Memory Browser and Disassembler views. Note that your browser may have cached the link to the old…
For my recent book, I've had to research the hardware of various arcade game systems. While researching *Galaxian* I stumbled upon a website describing how to hack the graphic ROMs in *Donkey Kong* to turn Mario into Pauline. Reading it, I noticed something curious -- *DK*'s graphics were suprisingly similar to *Galaxian*'s layout. Not only did the background tilemap have the same dimensions and…
font-weight: bold; background: #3333ff; color:#ccccff; white-space: break-spaces; Playing text adventure games is sort of fun, but takes a lot of brain power. Nowadays we have all this spare CPU capacity going to waste. What if we let the computer solve the game, and we just sit back and watch? We don't even need any fancy neural network, we just need good old brute force. We're going to throw…
We use a variety of emulators in [8bitworkshop](https://8bitworkshop.com/). Many of them, like most of the Z80 emulators, are written from scratch in JavaScript directly against our Platform API. This facilitates deep introspection into the emulator state, which comes in handy for things like debugger support and CPU visualization. To save effort, we also integrate a couple of open source…
title: "Sincere Flattery in the Early Arcade Industry" date: 2017-04-27 11:59:03 -0400 categories: history image: /blog/images/littlebrickout.jpg The pioneering days of video games saw a tremendous amount of innovation, but also a lot of unabashed appropriation. Designers were under pressure to develop novel experiences with unfamiliar technology in a new medium, and they often bet conservatively…
To start the IDE, open https://8bitworkshop.com in your web browser and click **Continue to 8bitworkshop IDE**. For best results, use a recent version of Mozilla Firefox, Google Chrome, or Apple Safari. The 8bitworkshop IDE supports a number of different hardware platforms. You can switch between them using the pulldown to the right of the main menu. The IDE is packaged with several example…
I've written before about [cc65](cc65-optimization.md.html) and some of its optimization challenges. It's a stable compiler with a robust toolchain, but its code generator doesn't full advantage of the 6502 when performing 8-bit operations. It places function parameters and many local variables on a separate stack, which requires many calls to helper functions. I've done a [survey of 6502…
Programming directly in 6502 gets a little fiddly, so a higher-level language can make things easier. There have been many [attempts](https://dwheeler.com/6502/) to tame the 6502 to make programming more palatable. Interpreted languages like BASIC, FORTH, and Pascal were popular back in the day, and Infocom games had their own custom [VM](http://www.ifwiki.org/index.php/Z-machine) to run on many…
Most of the platforms in the IDE that are powerful enough to support a C compiler are Z80-based. The Z80 isn't the easiest target for C, but at least it has a lot of registers. While the 6502 only has three 8-bit registers, the 6502 has strengths the Z80 doesn't, as we'll see here. Let's compare the two dominant C compilers for these CPUs. We'll compile a function with the CC65 C compiler for the…