This book takes a single line of code—the extremely concise BASIC program for the Commodore 64 inscribed in the title—and uses it as a lens through which to consider the phenomenon of creative computing and the way computer programs exist in culture. The authors of this collaboratively written book treat code not as merely functional but as a text—in the case of 10 PRINT, a text that appeared in many different printed sources—that yields a story about its making, its purpose, its assumptions, and more. They consider randomness and regularity in computing and art, the maze in culture, the popular BASIC programming language, and the highly influential Commodore 64 computer.
Buy or download for free.
An implementation of BASIC for the BBC micro:bit, written in Micropython.
SizeCoding.org is a wiki dedicated to the art of creating very tiny programs for most popular types of CPUs. As sizecoding is also popular on other hardware, we recently opened the website for other platforms as well, check the links below. By "very tiny programs", we mean programs that are 256 bytes or less in size, typically created by members of the demoscene as a show of programming skill. The size of these tiny programs is measured by their total size in opcode bytes, and are usually presented as an executable binary.
Despite their tiny size, these programs are able to produce amazing graphical displays, playable games, and sometimes music. There are even some surprisingly effective programs in just 16 bytes or even 8 bytes.
The intent of this wiki is to teach assembler programmers the various techniques used to create tiny demoscene intros. While these techniques can be used for other applications (boot sectors, ROM, BIOS and firmware code, etc.), the information presented here is firmly oriented towards the demoscene. Practicality and common sense are sometimes thrown out the window just to shave a single byte. Consider yourself warned.
An SDK for developing DOS software for x86 machines, including IBM PC compatibles and NEC PC-98.
Since a PC is composed of a number of off-the-shelf chips, the SDK is structured in a way to reflect this. This means that the definitions related to specific chips such as the 6845, the 8253, 8259 etc. are separated from how they are implemented in the PC architecture (the IO addresses, memory addresses, IRQ and other resources they use). A header file for a specific chip will only contain the generic information for the chip. A separate system-specific header file (in this case IBMPC.inc/IBMPC.h or PC98.inc/PC98.h) will then contain the information specific to the implementation of that system. This allows you to use the header file for the chip for any system that implements it. This is especially useful for writing code for both IBM PC and NEC PC-98, which mostly use the same hardware, but not at the same locations. In future, it may also be expanded to other systems, such as the Tandy 2000.
Cyber is a new language for fast, efficient, and concurrent scripting. Easy to learn. Dynamic and gradual types. Concurrency with fibers. Multithreaded. Memory safe. FFI and Embeddable. Cyber wants to provide fast and delightful scripting. You can embed Cyber into your applications, games, and engines on desktop or the web. Cyber also comes with a CLI so you can do scripting on your computer. Aims toward memory safety.
NOTE: Cyber is currently at (v0.1) and is unstable. Multithread features are still in the design phase.
Github: https://github.com/fubark/cyber
The Federal Virtual Training Environment (FedVTE) provides the following courses free of charge and without login requirements. You must use a modern browser (Edge, Chrome, Firefox) and have cookies enabled to track your progress in these courses.
At the bottom of this file you will find a payload -- a blob of data that has been obfuscated in some way. When it is decoded correctly, the payload will turn into another text file with another puzzle. There are many puzzles wrapped inside each other, like a matryoshka doll, or the layers of an onion.
You will need to write code to do the decoding. This can be done using any programming language.
Every layer clearly explains how to decode its payload. These are puzzles with deterministic solutions, like Sudoku, not riddles. I'm a software developer, not the sphinx of Thebes.
There is a little bit of educational value in each layer. In order to progress, you will need to learn and use computery concepts like bitwise operations, encodings, cryptography, error detection, and so on.
Pebble is a complete modular music engine in the form of a simple text editor. Using the Pebble code language, you can create custom sounds and arrange them into full songs using a dynamic piano-roll notation.
The editor supports live playback and looping, as well as WAV export. For more information about using Pebble, see the Guide page on this site or type help in the FILE bar in the program!
You can get the software from itch.io: https://nashhigh.itch.io/pebble
This is an in-depth guide to the different elements of the Pebble code language. It is set up to be a reference more than a tutorial, so if you are just starting out, you might want to go through the welcome document first. (This is the first file that loads when you start Pebble.) Or you could try out one of the demo files, by typing demo1, demo2, or demo3 into the File bar and pressing Load. You can also enter help to access this guide in-program, or use ref to get the quick-reference guide. The default soundpack is sounds which you can import (IMP sounds) to access many basic sounds, or you can load it directly to scope out how they are created.
The Pebble code language is modular, which means that all the sounds, instruments, and patterns are created by combining and arranging different modules, each of which typically performs a simple function (like addition, or changing volume).
Rexx is a versatile programming language that combines ease of use with power. Runs on nearly all platforms. Tries to strike a balance between the ease of BASIC but the power of other languages. Has OO and Java-compatible variants. Can be used as an embedded scripting language.
A site that starts with explaining NAND gates and from that basic principle teaches you how to build a complete computer.
A Portable ANS-like Forth written in ANSI C.
The Forth Interest Group (FIG) was a world-wide, non-profit organization for education in and the promotion of the Forth computer language. This website offers an on-line literature database, programming tools, reference works, public-domain and experimental implementations of the Forth programming language for various platforms, technical conferences, and connections to other Forth resources.
Although FIG as an organization has dissolved, this website will continue to reflect the on-going interest in Forth.
A complete textbook on computer architecture and assembly language programming, as a website, in easy-to-digest pages.
What can you do with Vision BASIC? Pretty much anything you want to. Speed will no longer be a problem! Why? Because on it's own, Vision BASIC is VERY fast! But when you need to crank out even more speed, all you need to do is insert machine language anywhere you wish to. Yes, you can actually type machine language instructions right next to BASIC commands! You won't need to load in external machine language files, and you won't need to poke machine language code to memory. This is because Vision BASIC also doubles as an assembler – you can write BASIC programs with it or machine language programs with it, or a blend of the two!
Vision BASIC also includes a whole new batch of commands to help you realize your programming dreams! Need sprites? Vision BASIC's got you covered! Need sound and graphics? Yep, gotcha covered there too! Vision BASIC was designed to greatly minimize your need to POKE around with all those crazy registers. In fact, you might never need to POKE again! And if you find yourself needing a command or function that isn't available, you can simply create it yourself – by creating the needed subroutine and calling it by whatever name you choose to give it. These "user defined" commands and functions can be saved into separate files and added to your programs whenever you need them!
The story of Mel (a real programmer). Annotated.
flashrom is a utility for identifying, reading, writing, verifying and erasing flash chips. It is designed to flash BIOS/EFI/coreboot/firmware/optionROM images on mainboards, network/graphics/storage controller cards, and various other programmer devices. Supports more than 476 flash chips, 291 chipsets, 500 mainboards, 79 PCI devices, 17 USB devices and various parallel/serial port-based programmers. Supports parallel, LPC, FWH and SPI flash interfaces and various chip packages. No physical access needed, root access is sufficient (for mainboards, presumably).
Notes on how to use the minipro F/OSS chip programming software. Because the docs are missing important stuff, like how to use it.
Cloned to Windbringer.
An open source program for controlling the MiniPRO TL866xx series of chip programmers. This program exists because the manufacturer of the MiniPRO TL866xx series of chip programmers does not provide a program for use on Linux or other flavors of Unix. We who keep this project going prefer a simple, free, and open-source program that presents a command-line interface that allows for a GUI front-end if desired.
Compatible with Minipro TL866CS, TL866A, and TL866II+ from Autoelectric. Supports more than 13000 target devices (including AVRs, PICs, various BIOSes and EEPROMs).
It's even in the AUR: https://aur.archlinux.org/packages/minipro
The official, canonical documentation for batari BASIC.