This document, "Part 2," outlines the core concepts and capabilities of the DOS/BATCH operating system, detailing its functions across various domains: input/output, data storage, memory management, user control, program development, and system maintenance.
The operating system's primary functions are to organize hardware for program execution and development, and to assist users in maximizing hardware utilization with minimal programming effort. DOS/BATCH prioritizes efficient resource use, speed, and ease of use, suitable for production and program development, but not real-time data acquisition. Its batch operation facilities allow for efficient off-line program preparation and execution.
For input and output (I/O), DOS/BATCH manages data transfers, supporting a wide range of devices and magnetic/non-magnetic media (e.g., disks, tapes, terminals, punched cards, line printers). Key I/O objectives include device independence, diverse access methods (sequential, random, bulk), memory economy, and program efficiency through modular and reentrant I/O routines. Data is logically defined as "datasets" and "files," with flexible specification options via in-program blocks, the Command String Interpreter (CSI), or the ASSIGN command.
Data storage is primarily handled by magnetic media, chosen for their high transfer speeds and capacity. Disk and DECtape support random access through a two-level directory structure (Master and User File Directories) and two file types: contiguous (for random access) and linked (for sequential access). User Identification Codes (UICs) and File Protection Codes ensure user separation and access control (run, read, write, delete). Magnetic tape and cassettes are largely sequential, using header labels for file identification. The system also supports non-magnetic media like paper tape and punched cards for specific uses. Utilities like PIP (Peripheral Interchange Program) and EBASCI facilitate data manipulation and conversion.
Memory management is crucial, with the system maximizing space for user programs. Memory is divided into a Resident Monitor (fixed, bottom of memory), a Program Area (top of memory), and a Dynamic Memory Area in between. The Monitor itself is modular; frequently used modules are resident, while others are swapped from disk (the "system device") as needed. The Dynamic Memory Area accommodates the stack, I/O buffers, device drivers, and temporary Monitor tables, allocated strategically to prevent fragmentation.
Utility routines provide common services, including program loading and unloading, character conversions (e.g., ASCII/Binary, Radix-50), access to system information (memory, date/time, UIC), and basic file management (finding, renaming, appending, deleting files).
User control is achieved through instructions within programs (FORTRAN statements, MACRO Program Requests) and run-time commands. The Monitor communicates via "ready" signals and informative error messages. Batch operation allows users to prepare command streams off-line, significantly increasing efficiency for repetitive tasks or multiple users, and includes special batch-management and "concise" commands that combine multiple actions.
Finally, program development is supported by system programs. Source code can be entered via the EDIT text editor or off-line, then compiled/assembled into object modules and linked (using LINK) into executable load modules, with support for library building (LIBR) and overlay structures. Debugging tools include FILDMP (file dumping), FILCOM (file comparison), and ODT (On-line Debugging Technique) for interactive program analysis. The system's modular design also facilitates its distribution, generation, and modification, allowing for easy installation (SYSLOD) and reconfiguration (CILUS) through core image libraries.
Site structure and layout ©2025 Majenko Technologies