This site hosts the KWAK-8 fantasy console.
Instruction set | 8-bit AVR |
RAM | 64k |
ROM | 128k |
Display | 240x180 (hires mode 480x360) |
Colours | 16 from a set of 256 (more available by tricks) |
Speed | 8Mhz (probably, might boost to 16Mhz) |
Audio | 8 synth voices |
Storage | None yet,planned |
The KWAK-8 never existed as a physical computer. Like Lexaloffle's excellent PICO-8. The KWAK-8 is an emulated system for enthusiasts of constrained environments.
When compared to the PICO-8, the main difference is rather than a scripting language, The KWAK-8 uses an 8-bit instruction set (compatible with The Arduino UNO). It fully embraces the idea of 8-bit coding. To do numbers larger than 256 you will have to join multiple 8-bit values together, just like they did in the old days. If you like the idea of programming assembly for fun then this might be the fantasy console for you.
Assembly programming is not absolutely required. Because the KWAK-8 instruction set is mostly compatable with the 8-bit AVR, many tools designed for the Arduino ecosystem can be repurposed to work on the KWAK-8. This includes Assemblers, compilers and interpreted languages. You can write programs in Assembly, C, Pascal or a variety of languages that already have AVR support.
KWAK-8 programs are stored in Cartridge images. (the emulator also supports .hex files)
The image contains the program data hidden in subtle variations of the color data. Click on the cartridge image to run the program.
Visit the Gallery to browse the full selections of cartrides.
The main difference between the KWAK-8 architecture and real 8-bit computers and consoles is how they manage the display. Most of the classic 8-bit computers connected to a television or monitor and generated their own image to send out in the video signal. The video image was generated as needed, just in time for the video beam to pass. There was not nearly enough memory available at the time to provide a framebuffer with a ready made image. The consequence of this is that the image itself was a transient thing, with no real existence outside of the time between data-fetch and pixel output.
The ephemeral nature of the image is what lead to many of the amazing tricks performed on the machines. Hardware resources can be re-purposed multiple times during a video frame as long as they are in the right place for the pixels currently being output.
What was a boon for old hardware is a drain on emulators though. To accurately emulate those old machines, you need incredibly precise timing. Programs had to get all of their ducks in a row on a deadline measured in microseconds. Emulators have to note not only what happened, but when it happened if they want to accurately reproduce the behaviour.
To ameliorate this emulation cost, The KWAK-8 strikes a balance. It utilizes a write only buffer for the screen area. This buffer has no direct RAM interface. This can be considered simalar to old video beam displays. The screen of a video beam output is a write only display, with the constraint that the image must be written serially and with precise timing. The KWAK-8 relaxes those contraints.
The KWAK-8 display is still a write only device, but pixels may be written at any time and need not be strictly serial.
This does mean that an entire class of tricks that old computers could do are not available in this emulator. There are no raster interrupts and there is no beam-racing. In compensation, The emulator provides quite a capable blitter and a hardware register set that is designed to allow creative tricks.