Selfie is an educational project consisting of a compiler for a subset of C that generates code for a simplified RISC-V instruction set, a small emulator for that architecture, and a tiny hypervisor.
Selfie can compile and execute itself.
There are various extensions for Selfie that include a simple garbage collector and a symbolic executor.
http://selfie.cs.uni-salzburg.at/
#c #riscv #system #programming #lowlevel #compiler #osdev #hv #virt
Selfie can compile and execute itself.
There are various extensions for Selfie that include a simple garbage collector and a symbolic executor.
http://selfie.cs.uni-salzburg.at/
#c #riscv #system #programming #lowlevel #compiler #osdev #hv #virt
Faux86 is a bare metal 8086 emulator for Raspberry Pi.
https://github.com/jhhoward/Faux86
#c #arm #x86 #virt #system #programming
https://github.com/jhhoward/Faux86
#c #arm #x86 #virt #system #programming
GitHub
GitHub - jhhoward/Faux86: A portable, open-source 8086 PC emulator for bare metal Raspberry Pi
A portable, open-source 8086 PC emulator for bare metal Raspberry Pi - jhhoward/Faux86
Morphcat Games has released yet another masterpiece for the NES retro platform. You can watch the video with the gameplay on Youtube. This game perfectly complements their previous creation, which I wrote about earlier.
https://www.youtube.com/watch?v=Uor-iTY-FqQ
#nes #gamedev #retro
https://www.youtube.com/watch?v=Uor-iTY-FqQ
#nes #gamedev #retro
YouTube
Böbl Trailer (NES)
Free NES ROM download at https://morphcatgames.itch.io/bobl
- you're a bubble
- water is your friend, solid blocks kill you
- "rubber ducky jumps" only
i.e., hold A to dive, then release and let buoyancy handle the rest
Made for NESdev competition 2019/20.…
- you're a bubble
- water is your friend, solid blocks kill you
- "rubber ducky jumps" only
i.e., hold A to dive, then release and let buoyancy handle the rest
Made for NESdev competition 2019/20.…
Stoneknife Forth is a minimal forth translator that can compile itself. This compiler is so simple that it recognizes only one-letter identifiers.
This can be bootstrapped in two steps:
First of all Stoneknife is compiled by itself being interpreted by a slow interpreter written in python.
The second step is compiling with the compiler produced by the previous step. The result is a bootstrapped x86 ELF executable.
https://github.com/kragen/stoneknifeforth
#compiler #lowlevel #system #programming
This can be bootstrapped in two steps:
First of all Stoneknife is compiled by itself being interpreted by a slow interpreter written in python.
The second step is compiling with the compiler produced by the previous step. The result is a bootstrapped x86 ELF executable.
https://github.com/kragen/stoneknifeforth
#compiler #lowlevel #system #programming
GitHub
GitHub - kragen/stoneknifeforth: a tiny self-hosted Forth implementation
a tiny self-hosted Forth implementation. Contribute to kragen/stoneknifeforth development by creating an account on GitHub.
I have already written about Rui Ueyama and the family of small C compilers: 8cc and 9cc. I also mentioned chibicc, a project that complements Rui's book.
Last time I didn't notice how the author organized the repository of chibicc. Each commit is a single step from zero to a full-featured C11 compiler (without optimizations and proper allocation of registers).
The first commit in the repository only involves a simple compiler that reads a number and generates a program that can return this number on completion. The last commit includes all the source code of the compiler that can build real projects like Git, SQLite and libpng!
https://github.com/rui314/chibicc
#c #compiler #lowlevel #system #programming
Last time I didn't notice how the author organized the repository of chibicc. Each commit is a single step from zero to a full-featured C11 compiler (without optimizations and proper allocation of registers).
The first commit in the repository only involves a simple compiler that reads a number and generates a program that can return this number on completion. The last commit includes all the source code of the compiler that can build real projects like Git, SQLite and libpng!
https://github.com/rui314/chibicc
#c #compiler #lowlevel #system #programming
GitHub
GitHub - rui314/chibicc: A small C compiler
A small C compiler. Contribute to rui314/chibicc development by creating an account on GitHub.
Lagrange is a browser for Geminispace.
If you still don't know, Gemini is a new protocol that replaces Gopher. Gemini sites follow a very ascetic aesthetic, which is in stark contrast to the modern web. Most of the sites are created by interesting people with deep technical background.
I like the Lagrange browser because it goes its own road. It doesn't use any popular graphical toolkit. In opposite to most modern GUI apps it is based on its own object system and widget library. But it doesn't look like an amateur handicraft, on the contrary, this program is very convenient and beautiful.
https://gmi.skyjake.fi/lagrange/
#c #oop #gui #gemini #gopher
If you still don't know, Gemini is a new protocol that replaces Gopher. Gemini sites follow a very ascetic aesthetic, which is in stark contrast to the modern web. Most of the sites are created by interesting people with deep technical background.
I like the Lagrange browser because it goes its own road. It doesn't use any popular graphical toolkit. In opposite to most modern GUI apps it is based on its own object system and widget library. But it doesn't look like an amateur handicraft, on the contrary, this program is very convenient and beautiful.
https://gmi.skyjake.fi/lagrange/
#c #oop #gui #gemini #gopher
Pika is a bottom-up right to left parsing algorithm based on ideas of the packrat parser. It uses a dynamic programming approach to resolve two well known problems of recursive descent parsers: left recursion and error recovery.
https://arxiv.org/pdf/2005.06444.pdf
#parsing #plt #paper
https://arxiv.org/pdf/2005.06444.pdf
#parsing #plt #paper
Ultibo is a bare metal environment to run FreePascal applications on any available RaspberryPi board. It provides APIs for networking, USB access, preemptive threading on multiple CPUs, filesystem access, exception handling, hardware accelerated OpenGL ES graphics, etc. All of the features are available without any operating system!
https://ultibo.org/wiki/Main_Page
#osdev #pascal #rpi #system #programming
https://ultibo.org/wiki/Main_Page
#osdev #pascal #rpi #system #programming
A tutorial on bare metal programming for Raspberry Pi 4.
https://isometimes.github.io/rpi4-osdev/
#osdev #lowlevel #pri #baremetal #system #programming
https://isometimes.github.io/rpi4-osdev/
#osdev #lowlevel #pri #baremetal #system #programming
rpi4-osdev
Writing a “bare metal” operating system for Raspberry Pi 4
Tutorial: Writing a “bare metal” operating system for Raspberry Pi 4
A perfect new NES game from Morphcat Games.
Trailer:
https://www.youtube.com/watch?v=fuOkfqogLro
Free ROM download:
https://morphcatgames.itch.io/spacegulls
#nes #retro #game
Trailer:
https://www.youtube.com/watch?v=fuOkfqogLro
Free ROM download:
https://morphcatgames.itch.io/spacegulls
#nes #retro #game
YouTube
Spacegulls Trailer (NES)
Free NES ROM download at https://morphcatgames.itch.io/spacegulls
A combination of Joust and Mega Man.
Made for NESdev competition 2020/21. You can check out the other competition entries here: http://forums.nesdev.com/viewtopic.php?f=36&t=21635
To play…
A combination of Joust and Mega Man.
Made for NESdev competition 2020/21. You can check out the other competition entries here: http://forums.nesdev.com/viewtopic.php?f=36&t=21635
To play…
An article about reconstruction of an old unpublished NES game. Its source code has been buried on floppy disks for years.
Article:
https://gamehistory.org/days-of-thunder-nes-unreleased/
Source code and ROMs:
https://github.com/DickBlackshack/Days-of-Thunder-NES-Unpublished
#nes #retro #game #system #programming #lowlevel
Article:
https://gamehistory.org/days-of-thunder-nes-unreleased/
Source code and ROMs:
https://github.com/DickBlackshack/Days-of-Thunder-NES-Unpublished
#nes #retro #game #system #programming #lowlevel
Video Game History Foundation
Reconstructing a lost NES game from 30-year-old source code disks | Video Game History Foundation
Resurrecting Days of Thunder from dying floppy disks took tenacity...and a little bit of luck.
You may remember I said that I was working on a small book about virtualization. A lot has changed since then, I had more work to do, and I quit working on the book.
A friend of mine recently shared with me a link to a series of articles on Qemu internals posted by Airbus. I hope you find these materials interesting.
https://airbus-seclab.github.io/qemu_blog/
#virt #qemu #system #programming
A friend of mine recently shared with me a link to a series of articles on Qemu internals posted by Airbus. I hope you find these materials interesting.
https://airbus-seclab.github.io/qemu_blog/
#virt #qemu #system #programming
QEMU internals
Introduction
A series of posts about QEMU internals:
An article on an ahead of time binary translator that translates NES ROMs to native x86_64 executables.
https://andrewkelley.me/post/jamulator.html
#nes #plt #virt #system #programming #llvm
https://andrewkelley.me/post/jamulator.html
#nes #plt #virt #system #programming #llvm
Cowgol is a simple programming language inspired by Ada. The language has been greatly simplified to enable easy but effective compilation for small platforms like Zilog Z80, Intel 8080, MOS 6502, Motorola 68K, and others.
The Cowgol compiler is bootstrapped and written in Cowgol itself. It uses a simple table-driven code generator but performs several optimizations. The code of the compiler is very accurate and pleasant to read.
https://github.com/davidgiven/cowgol
#plt #compiler #system #programming
The Cowgol compiler is bootstrapped and written in Cowgol itself. It uses a simple table-driven code generator but performs several optimizations. The code of the compiler is very accurate and pleasant to read.
https://github.com/davidgiven/cowgol
#plt #compiler #system #programming
GitHub
GitHub - davidgiven/cowgol: A self-hosted Ada-inspired programming language for very small systems.
A self-hosted Ada-inspired programming language for very small systems. - davidgiven/cowgol
PDFGen is a simple C library for generating PDF documents with text and basic graphics. It is a public domain software.
https://github.com/AndreRenaud/PDFGen
#pdf #c #library #unlicense
https://github.com/AndreRenaud/PDFGen
#pdf #c #library #unlicense
GitHub
GitHub - AndreRenaud/PDFGen: Simple C PDF Writer/Generation library
Simple C PDF Writer/Generation library. Contribute to AndreRenaud/PDFGen development by creating an account on GitHub.
Camlboot is an attempt to bootstrap the OCaml compiler.
The approach is as follows:
- Compile guile with GCC;
- Run MiniML compiler written in guile;
- Compile OCaml interpreter written in MiniML;
- Run the OCaml interpreter to compile OCaml.
https://github.com/Ekdohibs/camlboot
#plt #fp #ocaml #bootstrap #guile #lisp #gcc
The approach is as follows:
- Compile guile with GCC;
- Run MiniML compiler written in guile;
- Compile OCaml interpreter written in MiniML;
- Run the OCaml interpreter to compile OCaml.
https://github.com/Ekdohibs/camlboot
#plt #fp #ocaml #bootstrap #guile #lisp #gcc
GitHub
GitHub - Ekdohibs/camlboot: Experiment on how to bootstrap the OCaml compiler
Experiment on how to bootstrap the OCaml compiler. Contribute to Ekdohibs/camlboot development by creating an account on GitHub.
This is a totally crazy thing! You definitely know Windows Subsystem for Linux. This project implements a kind of DOS Subsystem for Linux. You can run a Linux session from your DOS command shell and then exit back to DOS. The implementation details are very interesting!
https://github.com/haileys/doslinux
#lowlevel #dos #assembly #system #programming #linux
https://github.com/haileys/doslinux
#lowlevel #dos #assembly #system #programming #linux
GitHub
GitHub - haileys/doslinux: Run Linux programs on DOS
Run Linux programs on DOS. Contribute to haileys/doslinux development by creating an account on GitHub.
Any sufficiently advanced technology is indistinguishable from magic.
We use the terminal all the time rarely wondering how it works. How does a command shell interact with a terminal emulator in a graphical environment? How can libraries like ncurses render pseudographic windows and controls?
Aram Drevekenin has created a wonderful interactive article where he explains how the various components of the system interact with each other to create such a familiar console experience.
Anatomy of a Terminal Emulator
#unix #terminal #programming #linux
We use the terminal all the time rarely wondering how it works. How does a command shell interact with a terminal emulator in a graphical environment? How can libraries like ncurses render pseudographic windows and controls?
Aram Drevekenin has created a wonderful interactive article where he explains how the various components of the system interact with each other to create such a familiar console experience.
Anatomy of a Terminal Emulator
#unix #terminal #programming #linux
Anatomy of a Terminal Emulator
How does a terminal emulator work? What are ANSI escape codes? Understanding terminal internals for development, fun and mischief.
Do you remember toys from your childhood?
I have vivid memories of just a few of them. One of them is an eight-bit video game console, a pirate clone of the Nintendo Entertainment System (NES), which was sold in Russia under the Dendy brand. I spent a lot of time playing the immortal games for this platform.
Later, when I started working as a system programmer I became interested in how one of the best toys of my childhood was arranged. Information had to be collected bit by bit. Then I marveled at the engineering genius of the NES developers.
Fortunately, today there is more information about the NES hardware and games for it. For example, here is a good illustrated book (still unfinished) about the NES internals and how to develop games for it in assembly language.
Famicom Party. Making NES Games in Assembly
#nes #programming #gamedev #retro #assembly #lowlevel
I have vivid memories of just a few of them. One of them is an eight-bit video game console, a pirate clone of the Nintendo Entertainment System (NES), which was sold in Russia under the Dendy brand. I spent a lot of time playing the immortal games for this platform.
Later, when I started working as a system programmer I became interested in how one of the best toys of my childhood was arranged. Information had to be collected bit by bit. Then I marveled at the engineering genius of the NES developers.
Fortunately, today there is more information about the NES hardware and games for it. For example, here is a good illustrated book (still unfinished) about the NES internals and how to develop games for it in assembly language.
Famicom Party. Making NES Games in Assembly
#nes #programming #gamedev #retro #assembly #lowlevel
I've always been attracted to minimalistic programming languages. Among them were Scheme, TCL, Rebol, Smalltalk and of course Forth. I didn’t write big programs on these languages, but each of them taught me something. Unfortunately, many of them have remained niche and are not widely used in business. Well, okay, the main thing is that programming in these languages makes us a little happier, right? Today I propose to take a look at a modern programming language that develops ideas of Forth.
Retro is a minimalistic modern Forth-like language with a miniature virtual machine implemented in a variety of programming languages. Despite its minimalism, it remains a pragmatic language that allows you to solve real problems.
Just in case, let me remind that I have already written about other Forth-like modern languages, for example, about Factor (1, 2).
#forth #minimalism #plt #programming #retro
Retro is a minimalistic modern Forth-like language with a miniature virtual machine implemented in a variety of programming languages. Despite its minimalism, it remains a pragmatic language that allows you to solve real problems.
Just in case, let me remind that I have already written about other Forth-like modern languages, for example, about Factor (1, 2).
#forth #minimalism #plt #programming #retro
Telegram
Zero Dereference
Factor is a modern concatenative programming language with FORTH-like syntax and a rich standard library.
http://factorcode.org
#forth #plt #programming #retro #compiler
http://factorcode.org
#forth #plt #programming #retro #compiler