Uploaded October 2021 | Updated September 2026, 2 weeks ago
=[ 🔗 Links 🔗 ]=
🎥 Series Playlist: youtube.com/watch?v=ER7h4ZTe19A&list=PLP29wDx6QmW4sXTvFYgbHrLygqH8_oNEH
💌 Updates to your inbox: tinyletter.com/lowleveljavascript
🗣 Discord: discord.gg/FPWaVgk
⭐️ Patreon: patreon.com/lowleveljavascript
💻 Github Repo (emulator): github.com/LowLevelJavaScript/RISC-V-Emulator
=[ 🔗 Links 🔗 ]=
🎥 Series Playlist: youtube.com/watch?v=ER7h4ZTe19A&list=PLP29wDx6QmW4sXTvFYgbHrLygqH8_oNEH
💌 Updates to your inbox: tinyletter.com/lowleveljavascript
🗣 Discord: discord.gg/FPWaVgk
⭐️ Patreon: patreon.com/lowleveljavascript
💻 Github Repo (emulator): github.com/LowLevelJavaScript/RISC-V-Emulator
![Cryptographically Signed Firmware :: Bare Metal Programming Series 14
In the final episode of the Bare Metal Programming Series, were implementing signed firmware updates! Everything from using AES in the CBC-MAC configuration in the bootloader, to writing a signing application, to updating the firmware updater to work with the new images.
And of course, where would we be without a false celebration before the ultimate solution 😉
=[ 🔗 Links 🔗 ]=
AES Blog Post: https://github.com/francisrstokes/githublog/blob/main/2022/6/15/rolling-your-own-crypto-aes.md
Spec: https://nvlpubs.nist.gov/nistpubs/fips/nist.fips.197.pdf
Deeper justifications and analysis: https://csrc.nist.gov/csrc/media/projects/cryptographic-standards-and-guidelines/documents/aes-development/rijndael-ammended.pdf
Attacking AES with power analysis: https://www.youtube.com/watch?v=5Hn2D5lrzVo
🎥 Series Playlist: https://www.youtube.com/playlist?list=PLP29wDx6QmW7HaCrRydOnxcy8QmW0SNdQ
🗣 Discord: https://discord.gg/FPWaVgk
⭐️ Patreon: https://www.patreon.com/lowleveljavascript
💻 Github Repo: https://github.com/lowbyteproductions/bare-metal-series Cryptographically Signed Firmware :: Bare Metal Programming Series 14](https://i.ytimg.com/vi/Veu_fDPecM8/mqdefault.jpg)
![Designing A Packet Protocol :: Bare Metal Programming Series 7.1
In this episode of the bare metal programming series, were going over the design of a packet protocol, that runs on top of the UART physical layer weve been building up over the last few videos.
This protocol consists of a binary packet format, which includes a mechanism for validating the integrity of a packet, as well as a state machine for processing incoming packets, validating them, and automatically requesting retransmission if the packet fails the check.
=[ 🔗 Links 🔗 ]=
🎥 Series Playlist: https://www.youtube.com/playlist?list=PLP29wDx6QmW7HaCrRydOnxcy8QmW0SNdQ
🗣 Discord: https://discord.gg/FPWaVgk
⭐️ Patreon: https://www.patreon.com/lowleveljavascript
💻 Github Repo: https://github.com/lowbyteproductions/bare-metal-series Designing A Packet Protocol :: Bare Metal Programming Series 7.1](https://i.ytimg.com/vi/VzOPdQukW1Q/mqdefault.jpg)
![Ints, Uints, and Parsing an IP Packet Header [Parser Combinators From Scratch] Episode 7
In this episode we finish up with binary parsing by building (almost) arbitrary precision integer and unsigned integer parsers, as well as a parser for extracting ascii strings.
Apologies for my voice in this one - I recorded at the tail end of a chest infection at 6am and it turns out thats when my voice is at its most Barry White.
=[ ℹ About ℹ ]=
During this series we will develop an understanding of the concept of parsing, and build our own parser combinator system from scratch. The system we build will be capable of parsing both binary and text data. Well make use of both object-oriented and function programming principles to develop an effective and intuitive library.
=[ 🔗 Links 🔗 ]=
- ⭐️ Patreon: https://www.patreon.com/lowleveljavascript
- 💌 Updates to your inbox: https://tinyletter.com/lowleveljavascript
- Playlist: https://www.youtube.com/watch?v=6oQLRhw5Ah0&list=PLP29wDx6QmW5yfO1LAgO8kU3aQEj8SIrU
- Github Repo: https://github.com/LowLevelJavaScript/Parser-Combinators-From-Scratch
- LLJS Subreddit: https://reddit.com/r/lowleveljavascript
- IP Packets: https://en.wikipedia.org/wiki/IPv4#Packet_structure
- IP Packet Breakdown: http://www.cs.miami.edu/home/burt/learning/Csc524.092/notes/ip_example.html
- Ben Eater: https://www.youtube.com/user/eaterbc
- Twos Complement: https://en.wikipedia.org/wiki/Two%27s_complement
- Signed Binary: https://en.wikipedia.org/wiki/Signed_number_representations#Signed_magnitude_representation_(SMR) Ints, Uints, and Parsing an IP Packet Header [Parser Combinators From Scratch] Episode 7](https://i.ytimg.com/vi/X1sKg0_r4JM/mqdefault.jpg)
![A parser for every instruction? (16-Bit VM in JavaScript 010)
In this episode we build a parser that can handle every instruction that the VM currently supports.
=[ ℹ About ℹ ]=
This series is all about building a powerful virtual machine in JavaScript with the following features:
- A flexible, extensible, register-based virtual machine
- Support for signed, unsigned and floating point operations
- A call stack
- Interrupt capabilities
- Ability to do memory mapping for IO
- An assembly language with macro and module support
- A higher level, C like language. Well use and expand the library from the parser combinators from scratch series
- And finally, to be able to take the whole thing into the browser and extend it to create a sort of fantasy console - an emulator for a machine that never existed
- 💌 Updates to your inbox: https://tinyletter.com/lowleveljavascript
- ⭐️ Patreon: https://www.patreon.com/lowleveljavascript
- Series Playlist: https://www.youtube.com/playlist?list=PLP29wDx6QmW5DdwpdwHCRJsEubS5NrQ9b&playnext=1&index=1
- Github Repo: https://github.com/LowLevelJavaScript/16-Bit-Virtual-Machine
- arcsecond: https://github.com/francisrstokes/arcsecond
- Parser Combinators From Scratch: https://www.youtube.com/watch?v=6oQLRhw5Ah0&list=PLP29wDx6QmW5yfO1LAgO8kU3aQEj8SIrU A parser for every instruction? (16-Bit VM in JavaScript 010)](https://i.ytimg.com/vi/YYZopr1dr_E/mqdefault.jpg)
![What is a spinlock? //Source Dive// 002
In this installment of //Source Dive//, were back in the xv6 OS codebase, exploring timers, the early boot process, and a very useful concurrency primitive: The Spinlock!
=[ 🔗 Links 🔗 ]=
🐋 RISC-V Docker Image: https://github.com/francisrstokes/rv-toolchain-docker/pkgs/container/rv-toolchain-docker
🎥 Series Playlist:
🗣 Discord: https://discord.gg/FPWaVgk
⭐️ Patreon: https://www.patreon.com/lowleveljavascript
💻 Github Repo: https://github.com/mit-pdos/xv6-riscv What is a spinlock? //Source Dive// 002](https://i.ytimg.com/vi/ZE9OODanrDA/mqdefault.jpg)
![Ones and Zeros: Binary Part 1 [Parser Combinators from Scratch] Episode 6
In this episode the parser combinator system is turned on binary data. We learn how to specify and extract individual bits, Typed Arrays, ArrayBuffers and DataViews, and about important concepts like bit ordering.
=[ ℹ About ℹ ]=
During this series we will develop an understanding of the concept of parsing, and build our own parser combinator system from scratch. The system we build will be capable of parsing both binary and text data. Well make use of both object-oriented and function programming principles to develop an effective and intuitive library.
=[ 🔗 Links 🔗 ]=
- ⭐️ Patreon: https://www.patreon.com/lowleveljavascript
- 💌 Updates to your inbox: https://tinyletter.com/lowleveljavascript
- Playlist: https://www.youtube.com/watch?v=6oQLRhw5Ah0&list=PLP29wDx6QmW5yfO1LAgO8kU3aQEj8SIrU
- Github Repo: https://github.com/LowLevelJavaScript/Parser-Combinators-From-Scratch
- LLJS Subreddit: https://reddit.com/r/lowleveljavascript
- IP Packet Structure: https://en.wikipedia.org/wiki/IPv4#Packet_structure
- ArrayBuffer: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer
- DataView: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DataView
- Typed Arrays: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray Ones and Zeros: Binary Part 1 [Parser Combinators from Scratch] Episode 6](https://i.ytimg.com/vi/ZgHlc3Q2YjU/mqdefault.jpg)
![Writing A Game For The Fantasy Console Emulator
In this video were continuing to develop a Frogger-like game for the Fantasy Console, built on top of the 16-Bit Virtual Machine! One thing were covering is bounds - making sure that when sprites go out of bounds they are correctly placed on the other side of the screen. The other is collision detection - where we can check and react on the idea of sprites intersecting with each other.
=[ 🔗 Links 🔗 ]=
- First Episode of Frogger Dev: https://www.youtube.com/watch?v=UkPB1ukAgbI
- 16BitVM Playlist: https://www.youtube.com/watch?v=fTBwD3sb5mw&list=PLP29wDx6QmW5DdwpdwHCRJsEubS5NrQ9b
- Fantasy Console Episodes: https://www.youtube.com/watch?v=g29vCtzZPuk&list=PLP29wDx6QmW6S4B2oQUN-fI-idy6UcesG
- Twos Complement: https://www.youtube.com/watch?v=vgbOTf8lgTQ
💌 Updates to your inbox: https://tinyletter.com/lowleveljavascript
🗣 Discord: https://discord.gg/FPWaVgk
⭐️ Patreon: https://www.patreon.com/lowleveljavascript
💻 Github Repo: https://github.com/LowLevelJavaScript/16-Bit-Virtual-Machine Writing A Game For The Fantasy Console Emulator](https://i.ytimg.com/vi/_eu8hFZP0oU/mqdefault.jpg)
![Bootloader Firmware Update Mechanism :: Bare Metal Programming Series 10
In this episode, were finally building the core firmware update mechanism in the bootloader! This involves taking all the elements weve been working on until now - timers, state machines, the packet protocol on top of uart, etc - and putting them together into a bootloader firmware that is able to communicate with a host PC and receive a firmware update.
In the next video, well build the PC side application, and complete this major milestone, before moving on to implementing a cryptographic code signing mechanism, to ensure only authorised code can be loaded onto the device.
=[ 🔗 Links 🔗 ]=
🎥 Series Playlist: https://www.youtube.com/playlist?list=PLP29wDx6QmW7HaCrRydOnxcy8QmW0SNdQ
🗣 Discord: https://discord.gg/FPWaVgk
⭐️ Patreon: https://www.patreon.com/lowleveljavascript
💻 Github Repo: https://github.com/lowbyteproductions/bare-metal-series Bootloader Firmware Update Mechanism :: Bare Metal Programming Series 10](https://i.ytimg.com/vi/_hd6FITV_Hw/mqdefault.jpg)
![[stream] More bus piracy, logic analysis, and e-SPI-onage
=[ 🔗 Links 🔗 ]=
🎥 Stream Playlist: https://www.youtube.com/playlist?list=PLP29wDx6QmW7jg0LgRJYAmHLM6G_6NDw6
💌 Updates to your inbox: https://tinyletter.com/lowleveljavascript
🗣 Discord: https://discord.gg/FPWaVgk
⭐️ Patreon: https://www.patreon.com/lowleveljavascript
💻 Github Repo: [stream] More bus piracy, logic analysis, and e-SPI-onage](https://i.ytimg.com/vi/_wGYhp6RxQ0/mqdefault.jpg)
![Operations! [The Bits And Bytes Of Binary ep.2]
This mini series is all about binary. Over the course of the series, well be building a library that gives us precise control of every bit and operation.
Youll learn how the logical and arithmetic operations work, how different kinds of numbers are encoded, how to set, clear and toggle bits, and how we can create representations of structured binary data.
1. Bits
2. Operations
3. Unsigned Numbers
4. Addition
5. Zero Extension
6. Twos complement
7. Overflow Addition and Sign Extension
8. Shifting
9. Setting, Clearing, and Toggling Bits
10. Endianness
11. Structures
=[ 🔗 Links 🔗 ]=
💌 Updates to your inbox: https://tinyletter.com/lowleveljavascript
⭐️ Patreon: https://www.patreon.com/lowleveljavascript
🎥 Playlist: https://www.youtube.com/watch?v=pOM86M1pGb4&list=PLP29wDx6QmW47oPsNBFNEi_SYTOLDJXqQ
💻 Github Repo: https://github.com/LowLevelJavaScript/The-Bits-And-Bytes-Of-Binary
=[ 🎶 Music 🎶 ]=
Bad Snacks - Take It Easy Operations! [The Bits And Bytes Of Binary ep.2]](https://i.ytimg.com/vi/a23wQcaBfpc/mqdefault.jpg)
![How Are State Machines Used In Parsing? (16-Bit VM in JavaScript 008)
In this episode we begin building the parser for this VMs assembly language. During the process well encounter a tricky problem with parser combinators, and how we can solve it using state machines.
=[ ℹ About ℹ ]=
This series is all about building a powerful virtual machine in JavaScript with the following features:
- A flexible, extensible, register-based virtual machine
- Support for signed, unsigned and floating point operations
- A call stack
- Interrupt capabilities
- Ability to do memory mapping for IO
- An assembly language with macro and module support
- A higher level, C like language. Well use and expand the library from the parser combinators from scratch series
- And finally, to be able to take the whole thing into the browser and extend it to create a sort of fantasy console - an emulator for a machine that never existed
- ⭐️ Patreon: https://www.patreon.com/lowleveljavascript
- 💌 Updates to your inbox: https://tinyletter.com/lowleveljavascript
- Series Playlist: https://www.youtube.com/playlist?list=PLP29wDx6QmW5DdwpdwHCRJsEubS5NrQ9b&playnext=1&index=1
- Github Repo: https://github.com/LowLevelJavaScript/16-Bit-Virtual-Machine
- arcsecond: https://github.com/francisrstokes/arcsecond
- Parser Combinators From Scratch: https://www.youtube.com/watch?v=6oQLRhw5Ah0&list=PLP29wDx6QmW5yfO1LAgO8kU3aQEj8SIrU
- Building A Language Parser and Interpreter: https://youtu.be/PzodUuERBZc
- Contextual Parsers: https://youtu.be/yPEwjpIWOGg
- State Machines: https://en.wikipedia.org/wiki/Finite-state_machine
- The Left Recursion Problem: https://en.wikipedia.org/wiki/Left_recursion How Are State Machines Used In Parsing? (16-Bit VM in JavaScript 008)](https://i.ytimg.com/vi/ai63l4OUxSs/mqdefault.jpg)