RISC-V (“risk five”) and the Rust programming language both start with an R, so naturally they fit together. In this blog, we will write an operating system targeting the RISC-V architecture in Rust (mostly). If you have a sane development environment for RISC-V, you can skip the setup parts right to bootloading. Otherwise, it’ll be fairly difficult to get started. This tutorial will progressively build an operating system from start to something that you can show your friends or parents — if they’re significantly young enough. Since I’m rather new at this I decided to make it a “feature” that each blog post will mature as time goes on. More details will be added and some will be clarified. I look forward to hearing from you! Always wanted to to code your own operating system? This tutorial series shows how to create a simple operating system for RISC-V using Rust as your programming language. Currently the two first chapters are available. The code is also available on Github.
General Development Archive
This release is the result of the LLVM community’s work over the past six months (up to trunk r366426 plus commits on the branch). Some highlights include: – Support for asm goto, enabling for example the mainline Linux kernel for x86_64 to build with Clang – The RISCV-V target is no longer experimental, but built by default – Experimental support for C++ for OpenCL As well as many bug fixes, optimizations, and diagnostics improvements. Read the release notes for the detailed information.
Today, we’re introducing a new shell, written in Rust. It draws inspiration from the classic Unix philosophy of pipelines, the structured data approach of PowerShell, functional programming, systems programming, and more. It’s called Nushell, or just Nu for short. We have a book (¡también se habla Español!). We have a repo.
This post recaps some of the C64 coding tricks used in my little Commodore 64 coding competition. The competition rules were simple: make a C64 executable (PRG) that draws two lines to form the below image. The objective was to do this in as few bytes as possible. These people are wizards.
The Visible Lisp Computer is a Lisp interpreter that displays the contents of the Lisp workspace on an OLED display, so you can see program execution and garbage collection in real time. It’s a special version of my uLisp interpreter for ARM boards, designed to run on an Adafruit ItsyBitsy M0, or an ATSAMD21E on a prototyping board, interfaced to an I2C OLED display. If I knew what any of this meant, you’d find a few words about this here. Sadly, I don’t know what any of this means.
Jupiter is an open source and education-oriented RISC-V assembler and runtime simulator. It is written in Java 11 and capable of simulate all the instructions of the base integer ISA (I extension) plus the M and F extensions (RV32IMF), including all the pseudo-instructions described in the user-level instruction set manual. It was developed taking into account that it could be used in various courses such as: Computer Architecture, Compilers and Assembly Programming.
I love fast software. That is, software speedy both in function and interface. Software with minimal to no lag between wanting to activate or manipulate something and the thing happening. Lightness. Software that’s speedy usually means it’s focused. Like a good tool, it often means that it’s simple, but that’s not necessarily true. Speed in software is probably the most valuable, least valued asset. To me, speedy software is the difference between an application smoothly integrating into your life, and one called upon with great reluctance. Fastness in software is like great margins in a book — makes you smile without necessarily knowing why. Nothing to add.
In this talk, we’re going to look at how file systems differ from each other and other issues we might encounter when writing to files. We’re going to look at the file “stack” starting at the top with the file API, which we’ll see is nearly impossible to use correctly and that supporting multiple filesystems without corrupting data is much harder than supporting a single filesystem; move down to the filesystem, which we’ll see has serious bugs that cause data loss and data corruption; and then we’ll look at disks and see that disks can easily corrupt data at a rate five million times greater than claimed in vendor datasheets. Deeply technical, but well-written and pleasant to read.
QBasic lives! QBasic is an old-school, vintage programming language that was designed for beginners. QBasic ran on MS-DOS, and was a more advanced version of BASIC. QB was a lot of people’s first foray into programming (particularly those of us who grew up in the ‘80s and ‘90s). Therefore, a lot of people look back at QBasic with nostalgia. QBasic is one of the very few programming languages I actually ever even used – back when i was a very young kid – so I do have some faint nostalgia for it. Great to see such a dedicated community keeping it alive.
Saw a Windows Calculator bug on reddit. Since calc.exe was open-sourced I thought I’d try to find the bug and fix it. Cloned the code, recreated the bug, and found a minimal fix. Exactly what it says on the tin.
GCC 9.1 is a major release containing substantial new functionality not available in GCC 9.x or previous GCC releases. In this release C++17 support is no longer marked experimental. The C++ front-end implements the full C++17 language (already previous GCC major version implemented that) and the C++ standard library support is almost complete. The C++ front-end and library also have numerous further C++2a draft features. GCC has a new front-end for the D language. GCC 9.1 has newly partial OpenMP 5.0 support and almost complete OpenACC 2.5 support.
This document was designed to help you programming the Game Boy Classic, Game Boy Pocket, Super Game Boy and Game Boy Color (basics – you will need additionaldocuments for GBC specific programming). It was ment to be a complete handbook to start right off coding forthe hardware. The documents consists of three major parts. The first is the ‘GBSpec.txt’ (also known as the Pan Document) by Pan of Anthrox, Marat Fayzullin, Pascal Felber, Paul Robson, Martin Korth, kOOPa. This will be found in paragraph 1. The second is a mixture of several documents from ‘Game Boy Assembly Language Primer (GALP) V1.0’ by GABY (GAmeBoY). It contains opcodes, time duration and the affected flags per ASM command and the. This can befound in paragraph 2. The third is a summary of specifications and commands for Nintendo Super Game Boy speciffic programming bykOOPa and Bowser. See paragraph 3. Some light reading to kick off the week.
LLVM 8.0 has been released. This release contains the work on trunk up to Subversion revision r351319, plus work on the release branch. It’s the result of the LLVM community’s work over the past six months, including: speculative load hardening, concurrent compilation in the ORC JIT API, no longer experimental WebAssembly target, a Clang option to initialize automatic variables, improved pre-compiled header support in clang-cl, the /Zc:dllexportInlines- flag, RISC-V support in lld. And as usual, many bug fixes, optimization and diagnostics improvements, etc.
Swift 5 is a major milestone in the evolution of the language. Thanks to ABI stability, the Swift runtime is now included in current and future versions of Apple’s platform operating systems: macOS, iOS, tvOS and watchOS. Swift 5 also introduces new capabilities that are building blocks for future versions, including a reimplementation of String, enforcement of exclusive access to memory during runtime, new data types, and support for dynamically callable types. You can test the new features and changes in an Xcode playground.
Maryland’s legislature is considering a bill to allow computer coding courses to fulfill the foreign language graduation requirement for high school. A similar bill passed the Florida State Senate in 2017 (but was ultimately rejected by the full Legislature), and a federal version proposed by Senators Bill Cassidy, Republican of Louisiana, and Maria Cantwell, Democrat of Washington, is being considered in Congress. The animating idea behind these bills is that computer coding has become a valuable skill. This is certainly true. But the proposal that foreign language learning can be replaced by computer coding knowledge is misguided: It stems from a widely held but mistaken belief that science and technology education should take precedence over subjects like English, history and foreign languages. This is silly. Programming is certainly not a replacement for foreign language skills. That being said, it’s somewhat defensible considering this is an American story, and since they speak English as their first or second language anyway, they can get by in the world pretty well as it is.
This release represents a year of development effort and over 6,000 individual changes. It contains a large number of improvements that are listed in the release notes below. The main new features in Wine 4.0 are Vulkan support, Direct3D 12 support, game controllers support, and high-DPI support on Android.
This repository is associated with the website of the Virtual AGC project, which provides a virtual machine which simulates the AGC, the DSKY, and some other portions of the guidance system. In other words, if the virtual machine—which we call yaAGC—is given the same software which was originally run by the real AGCs, and is fed the same input signals encountered by the real AGCs during Apollo missions, then it will respond in the same way as the real AGCs did. The Virtual AGC software is open source code so that it can be studied or modified. The repository contains the actual assembly-language source code for the AGC, for as many missions as we’ve been able to acquire, along with software for processing that AGC code. Principal tools are an assembler (to create executable code from the source code) and a CPU simulator (to run the executable code), as well as simulated peripherals (such as the DSKY). Similar source code and tools are provided for the very-different abort computer that resided in the Lunar Module. Finally, any supplemental software material we have been able to find or create for the Saturn rocket’s LVDC computer or for the Gemini on-board computer (OBC) are provided, though these materials are minimal at present. The Apollo moonlanding project is probably one of the greatest – if not the greatest – technological achievement of mankind. Making sure we have all the tools and code necessary to study the code used is a vital project.
How I modified DOSBox and the original Microsoft Flight Simulator 4 from 1989 to run on my immersive multi-display flight simulator set up. If that simple one-sentence introduction doesn’t get you to read this article from June 2017, nothing will.
This is a 8086 assembler written in MSDOS batch. It depends on just two utilities: RPN.COM and APPFB.COM, the rest is completely in batch.
This is wizardry, right?