Chapter 17 - Interrupts, Traps, and Exceptions
- 17.1 - 80x86 Interrupt Structure and Interrupt Service Routines (ISRs)
- 17.2 - Traps
- 17.3 - Exceptions
- 17.3.1 - Divide Error Exception (INT 0)
- 17.3.2 - Single Step (Trace) Exception (INT 1)
- 17.3.3 - Breakpoint Exception (INT 3)
- 17.3.4 - Overflow Exception (INT 4/INTO)
- 17.3.5 - Bounds Exception (INT 5/BOUND)
- 17.3.6 - Invalid Opcode Exception (INT 6)
- 17.3.7 - Coprocessor Not Available (INT 7)
- 17.4 - Hardware Interrupts
- 17.4.1 - The 8259A Programmable Interrupt Controller (PIC)
- 17.4.2 - The Timer Interrupt (INT 8)
- 17.4.3 - The Keyboard Interrupt (INT 9)
- 17.4.4 - The Serial Port Interrupts (INT 0Bh and INT 0Ch)
- 17.4.5 - The Parallel Port Interrupts (INT 0Dh and INT 0Fh)
- 17.4.6 - The Diskette and Hard Drive Interrupts (INT 0Eh and INT 76h)
- 17.4.7 - The Real-Time Clock Interrupt (INT 70h)
- 17.4.8 - The FPU Interrupt (INT 75h)
- 17.4.9 - Nonmaskable Interrupts (INT 2)
- 17.4.10 - Other Interrupts
- 17.5 - Chaining Interrupt Service Routines
- 17.6 - Reentrancy Problems
- 17.7 - The Efficiency of an Interrupt Driven System
- 17.7.1 - Interrupt Driven I/O vs. Polling
- 17.7.2 - Interrupt Service Time
- 17.7.3 - Interrupt Latency
- 17.7.4 - Prioritized Interrupts
- 17.8 - Debugging ISRs
17.9 Summary
- Chapter 18 - Resident Programs
- 18.1 - DOS Memory Usage and TSRs
- 18.2 - Active vs. Passive TSRs
- 18.3 - Reentrancy
- 18.3.1 - Reentrancy Problems with DOS
- 18.3.2 - Reentrancy Problems with BIOS
- 18.3.3 - Reentrancy Problems with Other Code
- 18.4 - The Multiplex Interrupt (INT 2Fh)
- 18.5 - Installing a TSR
- 18.6 - Removing a TSR
- 18.7 - Other DOS Related Issues
- 18.8 - A Keyboard Monitor TSR
- 18.9 - Semiresident Programs
18.10 Summary
- Chapter 19 - Processes, Coroutines, and Concurrency
- 19.1 - DOS Processes
- 19.1.1 - Child Processes in DOS
- 19.1.1.1 - Load and Execute
- 19.1.1.2 - Load Program
- 19.1.1.3 - Loading Overlays
- 19.1.1.4 - Terminating a Process
- 19.1.1.5 - Obtaining the Child Process Return Code
- 19.1.2 - Exception Handling in DOS: The Break Handler
- 19.1.3 - Exception Handling in DOS: The Critical Error Handler
- 19.1.4 - Exception Handling in DOS: Traps
- 19.1.5 - Redirection of I/O for Child Processes
- 19.2 - Shared Memory
- 19.2.1 - Static Shared Memory
- 19.2.2 - Dynamic Shared Memory
- 19.3 - Coroutines
- 19.3.1 - AMAZE.ASM
- 19.3.2 - 32-bit Coroutines
- 19.4 - Multitasking
- 19.4.1 - Lightweight and HeavyWeight Processes
- 19.4.2 - The UCR Standard Library Processes Package
- 19.4.3 - Problems with Multitasking
- 19.4.4 - A Sample Program with Threads
- 19.5 - Synchronization
- 19.5.1 - Atomic Operations, Test & Set, and Busy-Waiting
- 19.5.2 - Semaphores
- 19.5.3 - The UCR Standard Library Semaphore Support
- 19.5.4 - Using Semaphores to Protect Critical Regions
- 19.5.5 - Using Semaphores for Barrier Synchronization
- 19.6 - Deadlock
19.7 Summary