What This Document Is
This document provides a detailed exploration of an alternative method for debugging programs within the Advanced Microcomputer Programming (CS 630) course at the University of San Francisco. Specifically, it investigates a solution to a common problem encountered when debugging code that interacts with keyboard input – contention with the debugger’s own use of the keyboard. The material delves into utilizing a different peripheral device to facilitate program control during single-stepping, moving beyond reliance on standard keyboard input. It focuses on leveraging the serial port for this purpose.
Why This Document Matters
Students enrolled in CS 630, particularly those working on projects involving input/output or interrupt handling (like Project 2 mentioned within), will find this resource invaluable. It’s especially relevant when debugging code that manages keyboard input, where conflicts can arise with the debugging process itself. Understanding this alternative approach will broaden your debugging toolkit and provide a deeper understanding of system-level interactions. This is beneficial when you need more precise control during program execution and analysis.
Common Limitations or Challenges
This material assumes a foundational understanding of x86 assembly language, interrupt handling, and basic computer architecture. It does *not* provide a complete introduction to these concepts; rather, it builds upon existing knowledge. Furthermore, it focuses on a specific hardware setup – utilizing serial ports on classroom workstations – and doesn’t cover debugging techniques for other environments. It also doesn’t offer pre-written code solutions, but rather explains the underlying principles and how to adapt existing code.
What This Document Provides
* An explanation of the problem of keyboard contention during debugging.
* An overview of utilizing serial port communication as a substitute input method.
* Details on the functionality of the 16550 UART interface.
* A comparison of the status registers for keyboard controllers and UARTs.
* Discussion of how to modify existing debugging routines to utilize the UART.
* References to external resources for in-depth UART programming information.