Uploaded February 2022 | Updated September 2026, 2 weeks ago
=[ 🔗 Links 🔗 ]=
🎥 Stream Playlist: youtube.com/playlist?list=PLP29wDx6QmW7jg0LgRJYAmHLM6G_6NDw6
💌 Updates to your inbox: tinyletter.com/lowleveljavascript
🗣 Discord: discord.gg/FPWaVgk
⭐️ Patreon: patreon.com/lowleveljavascript
💻 Github Repo:
=[ 🔗 Links 🔗 ]=
🎥 Stream Playlist: youtube.com/playlist?list=PLP29wDx6QmW7jg0LgRJYAmHLM6G_6NDw6
💌 Updates to your inbox: tinyletter.com/lowleveljavascript
🗣 Discord: discord.gg/FPWaVgk
⭐️ Patreon: patreon.com/lowleveljavascript
💻 Github Repo:
![What is Memory Mapped I/O? (16-Bit VM in JavaScript 005)
This this episode we implement memory mapped I/O, where the address space is utilised as common bus for components to communicate.
=[ ℹ 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 exend it to create a sort of fantasy console - an emulator for a machine that never existed
=[ 🔗 Links 🔗 ]=
- ⭐️ 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
- Memory Mapped IO: https://en.wikipedia.org/wiki/Memory-mapped_I/O
- Address Space: https://en.wikipedia.org/wiki/Address_space What is Memory Mapped I/O? (16-Bit VM in JavaScript 005)](https://i.ytimg.com/vi/hLYGTpvoMgE/mqdefault.jpg)
![Unpacking squished bits (Bit Packer part 2)
In this video, were writing the unpack half of the Bit Packer API, where we can recognise patterns in the bitstream, and return the value they actually represent!
=[ 🔗 Links 🔗 ]=
🎥 Series Playlist:
💌 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/Bit-Packer Unpacking squished bits (Bit Packer part 2)](https://i.ytimg.com/vi/haaa3XEIsFo/mqdefault.jpg)
![Fixed-point math is better than floating point (sometimes)
In this video, were learning about fixed-point: A different method for doing non-integer arithmetic without floats!
Floating point is a ubiquitous standard that works everywhere, but it needs specialised hardware to have any chance of running fast. This can make calculations on low-powered microcontrollers extremely expensive. Fixed-point solves, giving us a method for cheaply computing fractional results with flexible precision!
00:00:00 Intro
00:03:46 Floating point vs fixed point
00:10:07 Fixed point bit representation
00:17:10 Code: Fixed point defines
00:21:30 Getting to the integer and fractional parts
00:24:24 Sign function and representing ints in fixed point
00:32:14 Converting to and from floating point
00:36:23 Addition and subtraction
00:38:27 Multiplication
00:42:20 Division
00:48:52 Rounding operations
00:50:14 Absolute value
00:54:50 Floor
00:58:57 Getting the fractional part
01:02:38 Ceiling
01:05:37 Round
01:14:14 Motivating example: Analog to digital converter readings
01:30:10 Next time: Sines and cosines
=[ 🔗 Links 🔗 ]=
⭐️ Become a patron and get bonus videos! https://www.patreon.com/lowleveljavascript
🗣 Discord: https://discord.gg/FPWaVgk
💻 Github Repo: https://github.com/lowbyteproductions/fixed-point-math Fixed-point math is better than floating point (sometimes)](https://i.ytimg.com/vi/i1phJl-0v54/mqdefault.jpg)
![The mechanics of VIRTUAL MEMORY //Source Dive// 005
In this installment of //Source Dive//, were back in xv6, learning how address translation works with the virtual memory subsystem.
=[ 🔗 Links 🔗 ]=
more in depth talk: https://youtu.be/dFIqNZ8VbRY?si=ZGKcZRex96AUtwlT
🐋 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 The mechanics of VIRTUAL MEMORY //Source Dive// 005](https://i.ytimg.com/vi/iTic6EV4DP8/mqdefault.jpg)

![[stream] USB: Reverse Engineering and Writing Drivers
=[ 🔗 Links 🔗 ]=
Book: USB Complete by Jan Axelson
Marcan reverse engineering a MIDI controller: https://www.youtube.com/watch?v=cUVuTBH51GY
USB 2.0 Spec: https://www.usb.org/document-library/usb-20-specification
Blog with useful resources: https://hackernoon.com/usb-reverse-engineering-down-the-rabbit-hole-c4809a5b55c4
GreatFET: https://greatscottgadgets.com/greatfet/
🎥 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: https://github.com/francisrstokes/GMMK-Driver [stream] USB: Reverse Engineering and Writing Drivers](https://i.ytimg.com/vi/is9wVOKeIjQ/mqdefault.jpg)
![gateware-ts basics: Digital design for FPGA with TypeScript
In this video, were taking going into the basics of modular digital design with the gateware-ts library.
Some of the tools/hardware used in this video, and how to install them:
- https://1bitsquared.com/products/icebreaker
- http://bygone.clairexen.net/icestorm/
- http://iverilog.icarus.com/
- http://gtkwave.sourceforge.net/
=[ 🔗 Links 🔗 ]=
💌 Updates to your inbox: https://tinyletter.com/lowleveljavascript
🗣 Discord: https://discord.gg/FPWaVgk
⭐️ Patreon: https://www.patreon.com/lowleveljavascript
💻 Github Repo: TODO gateware-ts basics: Digital design for FPGA with TypeScript](https://i.ytimg.com/vi/jDaQY6DgKCE/mqdefault.jpg)
![PWM and Timers :: Bare Metal Programming Series 3
in this episode of the bare metal programming series, were examining PWM, or pulse width modulation: a technique for creating repeating square-wave like signals with a variable duty cycle.
PWM is just one function of the built in Timer peripheral, which, as the name implies, is able to keep very accurate time.
=[ 🔗 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 PWM and Timers :: Bare Metal Programming Series 3](https://i.ytimg.com/vi/kHUGY05ImWU/mqdefault.jpg)
![The Last Instructions!: RISC-V ep.11
In this installment of the RISC-V series, were _finally_ implementing the very last instructions! Additionally, we add a reset mechanism to the pipeline stages in order to prevent hazardous conditions when dealing with traps.
=[ 🔗 Links 🔗 ]=
🎥 Series Playlist: https://www.youtube.com/watch?v=ER7h4ZTe19A&list=PLP29wDx6QmW4sXTvFYgbHrLygqH8_oNEH
💌 Updates to your inbox: https://tinyletter.com/lowleveljavascript
🗣 Discord: https://discord.gg/FPWaVgk
⭐️ Patreon: https://www.patreon.com/lowleveljavascript
💻 Github Repo (emulator): https://github.com/LowLevelJavaScript/RISC-V-Emulator The Last Instructions!: RISC-V ep.11](https://i.ytimg.com/vi/mAeF2Fmi1NY/mqdefault.jpg)
![5 Stage Pipeline: RISC-V Processor In TS (part 3)
=[ 🔗 Links 🔗 ]=
🎥 Series Playlist: https://www.youtube.com/watch?v=ER7h4ZTe19A&list=PLP29wDx6QmW4sXTvFYgbHrLygqH8_oNEH
💌 Updates to your inbox: https://tinyletter.com/lowleveljavascript
🗣 Discord: https://discord.gg/FPWaVgk
⭐️ Patreon: https://www.patreon.com/lowleveljavascript
💻 Github Repo (emulator): https://github.com/LowLevelJavaScript/RISC-V-Emulator 5 Stage Pipeline: RISC-V Processor In TS (part 3)](https://i.ytimg.com/vi/mICAAvCi9Ws/mqdefault.jpg)
![What is the Stack and why do we need it? (16-Bit VM in JavaScript 003)
In this episode we understand what a stack is, how it can be implemented on the lowest level, and how it can then be harnessed to allow the Virtual Machine to run subroutines without losing state.
=[ ℹ 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 exend it to create a sort of fantasy console - an emulator for a machine that never existed
=[ 🔗 Links 🔗 ]=
- ⭐️ 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
- Stack Data Structure: https://en.wikipedia.org/wiki/Stack_(abstract_data_type)
- Subroutine: https://en.wikipedia.org/wiki/Subroutine What is the Stack and why do we need it? (16-Bit VM in JavaScript 003)](https://i.ytimg.com/vi/mamop8aqFNk/mqdefault.jpg)