The problems of machine language programming, in the broad sense of coding in which it is possible to write each instruction out explicitly, have been curiously neglected in the literature. There are still many problems which must be coded in the hardware language of the computer on which they are to run, either because of stringent time and space requirements or because no suitable higher level language is available. It is a sad fact, however, that a large number of these problems never run at all because of the inordinate amount of effort required to write and debug machine language programs.
The necessary tools for this task are an assembler and a debugger. For the latter the essential prerequisite is an interactive environment, in which the power of the computer is available at a console for long periods of time. The combination of of such an assembler and debugger is a powerful one which can reduce by a factor of perhaps five the time required to write and debug a machine language program. A full system, however, can do much more and, if properly designed, need not be more difficult to implement the basic ideas behind such a system are these:
1. Complete integration of assembler and the debugging system, so that all input goes through the same processor.
2. Commands for editing the symbolic source program that simultaneously modify the binary program in core.
3. A powerful string-handling capability in the assembler, which makes it quite easy to write complex macros.