Machine code monitor

From Wikipedia, the free encyclopedia

The Commodore 128 included a built-in machine language monitor, shown here performing a BASIC interpreter ROM dump.  Immediately above the display of the ROM contents can be seen a register dump.
The Commodore 128 included a built-in machine language monitor, shown here performing a BASIC interpreter ROM dump. Immediately above the display of the ROM contents can be seen a register dump.

A machine code monitor (aka machine language monitor) is software built-into or separately available for various computers, allowing the user to enter commands to view and change memory locations on the machine, with options to load and save memory contents from/to secondary storage.

Machine code monitors became something of a mass software product in the home computer era of the late 1970s and into the 1980s. Some full-featured machine code monitors provided detailed control of the execution of machine language programs (much like a debugger), and included absolute-address assembler and disassembler capability. It was not unheard of to do all of one's programming with a monitor (indeed, in the first years of home computing, many people made do with entering (in BASIC: "POKE-ing") hand-assembled opcodes and operands into program memory).

Even after full-featured assemblers became readily available, a machine code monitor was indepensible for debugging programs. The usual technique was to set break points in the code being worked on (e.g., with a BRK instruction in 6502 assembly language), start the program and when the processor hit the break point, control would be transferred to the machine code monitor. Typically this would trigger a register dump and then the monitor would await programmer input.

The general decline in scratch-written assembly language programs has made the use of a machine code monitor somewhat of a lost art. On most systems, where higher level languages are employed, debuggers are used to present a more abstract (and friendly) view of what is happening within a program.

In other languages