Chapter 1: Binary Computers
- 1.1 Introduction
- 1.2 Binary Numbers
- 1.3 Large Binary Numbers
- 1.4 Binary Computers
- 1.5 Bit Manipulation
- Chapter 1 Glossary
- Chapter 1 Exercises
Chapter 2: Machine Language
- 2.1 Algorithms and Machine Language
- 2.2 Bit Endianess
- 2.3 Assembly Language
- 2.4 Create a Program in Assembly Language
- 2.5 Variable sizes and roll over
- 2.6 Branching and Loops in Assembly Language
- Chapter 2 Glossary:
- Chapter 2 Exercises:
Chapter 3: Compiled Systems
- 3.1 Origin of the C Language
- 3.2 C Language Basics
- 3.3 C Language Data Types and Sizes
- 3.4 C Language Math and Bit Manipulation
- 3.5 C Language Functions
- 3.6 C Language Organization
- 3.7 The C main() function
- 3.8 C Language Variable Scope and Volatility
- Chapter 3 Glossary:
- Chapter 3 Exercises:
Chapter 4: System Architecture
- 4.1 Address Space and Software Memory Map
- 4.2 Memory Address and Pointers
- 4.3 Using C Pointers with Peripheral Registers
- 4.4 Create Software with an Editor and Compiler
- 4.5 Creating an Executable with the Linker
- 4.6 Configuring General Purpose Input Output (GPIO) pins
- 4.7 Debugging
- Chapter 4 Glossary:
- Chapter 4 Exercises:
Chapter 5: Timer Design
- 5.1 Hardware Clocks
- 5.2 System Software for Hardware Clocks
- 5.3 Software Interface for Clocks
- 5.4 Software timer uses
- 5.5 Building Software with Make
- 5.6 Project Management
- 5.7 System Software Organization
- Chapter 5 Glossary:
- Chapter 5 Exercises:
Chapter 6: Universal Asynchronous Receiver Transmitter (UART)
- 6.1 UART Introduction
- 6.2 UART Hardware
- Important
- 6.3.1 Configure the Development PC
- 6.3.2 Configure the System Software
- 6.4 Send Data with Software
- 6.5 Receive data with Software
- 6.6 System Shell
- Chapter 6 Glossary:
- Chapter 6 Exercises:
Chapter 7: Boot Loader and Xmodem
- 7.1 Boot Loader Design
- 7.2 RAM Layout Overview
- 7.3 Xmodem Protocol
- 7.4 Memory and String Interface
- 7.5 Xmodem Receiver Software
- 7.6 UART Flush
- 7.7 Xmodem Boot Loader
- 7.8 Standard Input Output
- Chapter 7 Glossary:
- Chapter 7 Exercises:
Chapter 8: Operating Systems
- 8.1 Operating System Design
- 8.2 Periodically Executed Tasks
- 8.3 Periodically Executed Task Scheduler
- 8.4 System Shell Periodic Task
- 8.5 Periodic Shell Command Execution
- 8.6 System Software Organization
- Chapter 8 Glossary:
- Chapter 8 Exercises:
Chapter 9: Frame Buffer
- 9.1 Frame Buffer Design Overview
- 9.2 Transactions
- 9.3 GPU and Mail boxes
- 9.4 Properties and Screen Resolution
- 9.5 Frame buffers
- 9.6 Pixel Colors
- 9.7 Screen Interface
- 9.8 Screen Device
- Chapter 9 Glossary:
- Chapter 9 Exercises:
Chapter 10: Console
- 10.1 Console Design Overview
- 10.2 Character Font Maps
- 10.3 Cursors and lines of text
- 10.4 Scrolling Lines of Text
- 10.5 Static Windowing
- 10.6 Optimizing memory copy
- Chapter 10 Glossary:
- Chapter 10 Exercises:
Chapter 11: Video Games
- 11.0 Why Video Games?
- 11.1 Grid of Tiles Design Overview
- 11.2 Linked Lists and Inline Functions
- 11.3 Game Grid
- 11.4 Sprites and Movement
- 11.5 Player Interface
- 11.6 Randomness
- 11.7 Game Logic
- 11.8 Ray Casting Tiles
- Chapter 11 Glossary:
- Chapter 11 Exercises:
Chapter 12: Animation
- 12.1 Structure Up and Down Casting
- 12.2 Timer Scheduler
- 12.3 Animation
- 12.4 Sprite Actions
- 12.5 Game Rounds
- Chapter 12 Glossary:
- Chapter 12 Exercises: