Uploaded August 2019 | Updated September 2026, 2 weeks ago
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. We'll make use of both object-oriented and function programming principles to develop an effective and intuitive library.
=[ 🔗 Links 🔗 ]=
- ⭐️ Patreon: patreon.com/lowleveljavascript
- 💌 Updates to your inbox: tinyletter.com/lowleveljavascript
- Playlist: youtube.com/watch?v=6oQLRhw5Ah0&list=PLP29wDx6QmW5yfO1LAgO8kU3aQEj8SIrU
- Github Repo: github.com/LowLevelJavaScript/Parser-Combinators-From-Scratch
- LLJS Subreddit: reddit.com/r/lowleveljavascript
- IP Packet Structure: en.wikipedia.org/wiki/IPv4#Packet_structure
- ArrayBuffer: developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer
- DataView: developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DataView
- Typed Arrays: developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray
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. We'll make use of both object-oriented and function programming principles to develop an effective and intuitive library.
=[ 🔗 Links 🔗 ]=
- ⭐️ Patreon: patreon.com/lowleveljavascript
- 💌 Updates to your inbox: tinyletter.com/lowleveljavascript
- Playlist: youtube.com/watch?v=6oQLRhw5Ah0&list=PLP29wDx6QmW5yfO1LAgO8kU3aQEj8SIrU
- Github Repo: github.com/LowLevelJavaScript/Parser-Combinators-From-Scratch
- LLJS Subreddit: reddit.com/r/lowleveljavascript
- IP Packet Structure: en.wikipedia.org/wiki/IPv4#Packet_structure
- ArrayBuffer: developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer
- DataView: developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DataView
- Typed Arrays: developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray
![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)
![Digital Circuit Simulator In JavaScript: 7400 Subscriber Special!
=[ ℹ About ℹ ]=
In this special 7400 subscriber special of Low Level JavaScript were going to build a digital logic simulator, inspired by the famous 7400 series logic chips. Starting with logic gates and moving up to Flip Flops, Registers, and more - this simulator could be used to build something as complex as even a CPU!
=[ 🔗 Links 🔗 ]=
- ⭐️ Patreon: https://www.patreon.com/lowleveljavascript
- 💌 Updates to your inbox: https://tinyletter.com/lowleveljavascript
- Github Repo: https://github.com/LowLevelJavaScript/Digital-Logic-Simulator
- Ben Eater: https://www.youtube.com/user/eaterbc
- Boolean Logic: https://en.wikipedia.org/wiki/Boolean_algebra
- Building A Real D-Flip Flop in Hardware: https://www.youtube.com/watch?v=YW GkUguMM
- High Impedance: https://en.wikipedia.org/wiki/High_impedance#Digital_electronics
- Tristate Logic: https://en.wikipedia.org/wiki/Three-state_logic
- Logisim: http://www.cburch.com/logisim/
- Renato Bohlers Logosim Project (logisim in JS): https://github.com/renato-bohler/logossim Digital Circuit Simulator In JavaScript: 7400 Subscriber Special!](https://i.ytimg.com/vi/anZPHeA0WKU/mqdefault.jpg)
![Expanding Beyond 64kb of Memory with Bank Switching (16-Bit VM in JavaScript 012)
In this episode were learning about memory bank switching - a technique common in the retro game console days - that allows us to address more memory than the limited address space that 16 bits provides!
=[ ℹ 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
- Bank Switching: https://en.wikipedia.org/wiki/Bank_switching
- 16BitVM Episode 5: https://youtu.be/hLYGTpvoMgE
=[ 🔗 Links 🔗 ]=
- Playlist: https://www.youtube.com/playlist?list=PLP29wDx6QmW5DdwpdwHCRJsEubS5NrQ9b&playnext=1&index=1
- Github Repo: https://github.com/LowLevelJavaScript/16-Bit-Virtual-Machine Expanding Beyond 64kb of Memory with Bank Switching (16-Bit VM in JavaScript 012)](https://i.ytimg.com/vi/araYkE3KAms/mqdefault.jpg)
![Worlds Simplest Bootloader :: Bare Metal Programming Series 4
In this episode of the bare metal programming series, were taking our first steps into building a fully fledged bootloader! To do this, we need to split the application in two, build some supporting scripts, learn how to use linker scripts, and understand some of the internal CPU registers for relocating the interrupt vector table at runtime.
=[ 🔗 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 Worlds Simplest Bootloader :: Bare Metal Programming Series 4](https://i.ytimg.com/vi/cfNJ85cX-ms/mqdefault.jpg)
![The End Of Low Level JavaScript
Low Level JavaScript is no more.
=[ 🔗 Links 🔗 ]=
💌 Updates to your inbox: https://tinyletter.com/lowleveljavascript
🗣 Discord: https://discord.gg/FPWaVgk
⭐️ Patreon: https://www.patreon.com/lowleveljavascript The End Of Low Level JavaScript](https://i.ytimg.com/vi/cpb02XgX_FA/mqdefault.jpg)
![[stream] Driver For SPI Flash + Bus Pirate in TypeScript
=[ 🔗 Links 🔗 ]=
💌 Updates to your inbox: https://tinyletter.com/lowleveljavascript
🗣 Discord: https://discord.gg/FPWaVgk
⭐️ Patreon: https://www.patreon.com/lowleveljavascript
💻 Github Repo: [stream] Driver For SPI Flash + Bus Pirate in TypeScript](https://i.ytimg.com/vi/e7_lAcVndNo/mqdefault.jpg)
![16-Bit Virtual Machine in JavaScript 001
In this episode we begin implementing a 16-bit virtual machine from scratch in JavaScript. The concepts of computation are introduced, along with the basics of assembly language and machine code.
=[ ℹ 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
- Playlist: https://www.youtube.com/playlist?list=PLP29wDx6QmW5DdwpdwHCRJsEubS5NrQ9b&playnext=1&index=1
- Github Repo: https://github.com/LowLevelJavaScript/16-Bit-Virtual-Machine
- 16BitJS: https://github.com/francisrstokes/16bitjs
- VMFC: https://github.com/francisrstokes/vmfc
- Turing Machine: https://en.wikipedia.org/wiki/Turing_machine
- Von Neumann architecture: https://en.wikipedia.org/wiki/Von_Neumann_architecture
- CPU: https://en.wikipedia.org/wiki/Central_processing_unit
- Stack Machine: https://en.wikipedia.org/wiki/Stack_machine
- Register Machine: https://en.wikipedia.org/wiki/Register_machine
- Instruction set architecture: https://en.wikipedia.org/wiki/Instruction_set_architecture 16-Bit Virtual Machine in JavaScript 001](https://i.ytimg.com/vi/fTBwD3sb5mw/mqdefault.jpg)