OS/8 is the primary operating system used on the Digital Equipment Corporation 's PDP-8 minicomputer .
49-409: PDP-8 operating systems which precede OS/8 include: Other/related DEC operating systems are OS/78 , OS/278, and OS/12. The latter is a virtually identical version of OS/8, and runs on Digital's PDP-12 computer. Digital released OS/8 images for non-commercial purposes which can be emulated through SIMH . OS/8 provides a simple operating environment that is commensurate in complexity and scale with
98-695: A TECO macro. OS/8 volumes have a limited maximum storage size (4096 blocks of 256 twelve-bit words) and the RK05 (2.4MB) moving-head disk exceeds this size: "1.6 million words of storage". Because of this, RK05 cartridges are divided into two partitions. For example, the first RK05 on a system is known as both RKA0: (SY:) and RKB0:. This division refers to "the outer cylinders" and "the inner cylinders". There are two systems for handling ASCII text. ASCII files are stored as three 8-bit characters per pair of 12-bit words. The first two characters (marked with bits a0–a7 and b0–b7 below) are stored whole in their words, while
147-478: A VT52 case and had an Intersil 6100 microprocessor running at 2.2 MHz. The standard configuration included an RX02 dual 8-inch floppy disk unit which was housed in the pedestal that the computer rested on. Introduced in 1980, this machine was built into a VT100 case. It had a 10 MHz clock and 32 Kwords of memory. It was also known as the VT278. As part of a three-pronged strategy against IBM ,
196-468: A Winchester disk . It can also have a coprocessor board added, to allow it to run CP/M . There was a choice of three coprocessor boards, one with a Z80 and 64 KB RAM, and a choice of two boards with both a Z80 and an Intel 8086 , the difference being that they had either 256 KB or 512 KB RAM. Manufacture ceased in 1986. It was superseded by the DECmate III, introduced in 1984. This
245-618: A message-based protocol for communicating with their devices—as user-mode drivers. If such drivers malfunction, they do not cause system instability. The Kernel-Mode Driver Framework (KMDF) model continues to allow development of kernel-mode device drivers, but attempts to provide standard implementations of functions that are known to cause problems, including cancellation of I/O operations, power management, and plug and play device support. Apple has an open-source framework for developing drivers on macOS , called I/O Kit. In Linux environments, programmers can build device drivers as parts of
294-499: A further 32 Kwords containing code which was used for device emulation. Code running in this second bank was nicknamed "slushware", in contrast to firmware since it was loaded from floppy disk as the machine booted. It was also known as the PC278. The model could be expanded, either by adding another pair of 5.25-inch floppy disk drives, and it could also support either an additional pair of RX01 or RX02 8-inch floppy disk drives or
343-487: A high-level application for interacting with a serial port may simply have two functions for "send data" and "receive data". At a lower level, a device driver implementing these functions would communicate to the particular serial port controller installed on a user's computer. The commands needed to control a 16550 UART are much different from the commands needed to control an FTDI serial port converter, but each hardware-specific device driver abstracts these details into
392-564: A paper tape writer if the machine has one, whereas EDU25 understands the structure of a filesystem, can load from DECtape or disk, and can create files on DECtape or disk. Both can run multiple BASIC programs simultaneously using a primitive task-scheduler that round-robins among the attached terminals. Memory is always tight because the PDP-8 uses core memory, which was extremely expensive compared to RAM technology. In 8K of 12-bit words EDU20 can support up to 4 terminals at once, although more memory
441-678: A separate CPU, only sharing memory with the PDP-8 CPU. With the FPP-8 option installed, the FORTRAN runtime code detects it and uses the FPP-8 to run the main program code, and the PDP-8 CPU runs as an I/O processor. Lacking the FPP-8, the runtime code instead calls an FPP-8 interpreter running on the PDP-8 CPU, so the program runs at reduced speed. This FORTRAN IV compiler in version 1 has the interesting bug that DO loops counted incorrectly: DO loops would count 1,2,3,5,6,7,… (skipping 4). A quick patch
490-437: A target for exploits . Bring Your Own Vulnerable Driver (BYOVD) uses signed, old drivers that contain flaws that allow hackers to insert malicious code into the kernel. Drivers that may be vulnerable include those for WiFi and Bluetooth, gaming/graphics drivers, and drivers for printers. There is a lack of effective kernel vulnerability detection tools, especially for closed-source OSes such as Microsoft Windows where
539-854: Is directly patterned after the CCL found on Digital's PDP-10 systems running TOPS-10 . In fact, much of the OS/8 software system is deliberately designed to mimic, as closely as possible, the TOPS-10 operating environment. (The CCL command language is used on PDP-11 computers running RT-11 , RSX-11 , and RSTS/E , providing a similar user operating environment across all three architectures: PDP-8s, PDP-10s, and PDP-11s.) The basic OS and CCL implements many rather sophisticated commands, many of which still do not exist in modern command languages, not even in MS-DOS , Windows , or Unix-like operating systems. For example,
SECTION 10
#1732787177050588-563: Is important that the hardware manufacturer provide information on how the device communicates. Although this information can instead be learned by reverse engineering , this is much more difficult with hardware than it is with software. Microsoft has attempted to reduce system instability due to poorly written device drivers by creating a new framework for driver development, called Windows Driver Frameworks (WDF). This includes User-Mode Driver Framework (UMDF) that encourages development of certain types of drivers—primarily those that implement
637-407: Is improved stability, since a poorly written user-mode device driver cannot crash the system by overwriting kernel memory. Because of the diversity of modern hardware and operating systems, drivers operate in many different environments. Drivers may interface with: Common levels of abstraction for device drivers include: So choosing and installing the correct device drivers for given hardware
686-472: Is often a key component of computer system configuration. Virtual device drivers represent a particular variant of device drivers. They are used to emulate a hardware device, particularly in virtualization environments, for example when a DOS program is run on a Microsoft Windows computer or when a guest operating system is run on, for example, a Xen host. Instead of enabling the guest operating system to dialog with hardware, virtual device drivers take
735-556: Is only 256 words; 128 words at the top of Field 0 and 128 words at the top of Field 1. The rest of the operating system (the USR, "User Service Routines") swaps in and out of memory transparently (with regard to the user's program) as needed. This disk-resident (or more properly, system-device-resident) part of OS/8 is the first 14K words (56 blocks) of the SYS: device, including swap space. The remaining memory contents are preserved between some of
784-481: Is stored contiguously in a single "extent". Allocation works as follows: a program first opens a tentative file (using the User Service Router (USR) "ENTER" function). This assigns either the largest free extent to the file, or if the desired file size is known in advance, the smallest extent that it fits in. ENTER returns the starting block number and size of the file to the program which then writes to
833-508: Is that they can be loaded only when necessary and then unloaded, thus saving kernel memory. Depending on the operating system, device drivers may be permitted to run at various different privilege levels . The choice of which level of privilege the drivers are in is largely decided by the type of kernel an operating system uses. An operating system which uses a monolithic kernel , such as the Linux kernel , will typically run device drivers with
882-400: Is via protection rings . On many systems, such as those with x86 and ARM processors, switching between rings imposes a performance penalty, a factor that operating system developers and embedded software engineers consider when creating drivers for devices which are preferred to be run with low latency, such as network interface cards . The primary benefit of running a driver in user mode
931-584: The COMPILE command automatically finds the right compiler for a given source file and starts the compile/assemble/link cycle. The ASSIGN and DEASSIGN commands permit the use of logical device names in a program instead of physical names (as required in MS-DOS). For example, a program can write to device FLOP:AAA.TXT , and with an initial " ASSIGN FLOP: RXA2: " then the file is created on physical device RXA2 (the second floppy disk drive). VAX / VMS and
980-557: The Amiga 's operating system AmigaOS (and other OSes built around TRIPOS ) make considerable use of this feature. The SET command is capable of setting many system options by patching locations in the system binary code. One of them, a command under OS-78, is SET SYS OS8 , which re-enables the MONITOR commands that are not part of OS-78. The BUILD command can reconfigure the OS on
1029-612: The PCI bus or USB is identified by two IDs which consist of two bytes each. The vendor ID identifies the vendor of the device. The device ID identifies a specific device from that manufacturer/vendor. A PCI device has often an ID pair for the main chip of the device, and also a subsystem ID pair that identifies the vendor, which may be different from the chip manufacturer. Computers often have many diverse and customized device drivers running in their operating system (OS) kernel which often contain various bugs and vulnerabilities , making them
SECTION 20
#17327871770501078-516: The PDP-10 , where such memory is known as a context. OS/8 can boot from a hard disk and present the command prompt in under half a second. Early versions of OS/8 have a very rudimentary command-line interpreter with very few basic commands : GET , SAVE , RUN , ASSIGN , DEASSIGN , and ODT . With version 3 they add a more sophisticated overlay called CCL ( Concise Command Language ) that implements many more commands. OS/8's CCL
1127-405: The interrupt handling required for any necessary asynchronous time-dependent hardware interface. The main purpose of device drivers is to provide abstraction by acting as a translator between a hardware device and the applications or operating systems that use it. Programmers can write higher-level application code independently of whatever specific hardware the end-user is using. For example,
1176-529: The kernel , separately as loadable modules , or as user-mode drivers (for certain types of devices where kernel interfaces exist, such as for USB devices). Makedev includes a list of the devices in Linux, including ttyS (terminal), lp ( parallel port ), hd (disk), loop, and sound (these include mixer , sequencer , dsp , and audio). Microsoft Windows .sys files and Linux .ko files can contain loadable device drivers. The advantage of loadable device drivers
1225-544: The CPU and screen update speeds were noticeably slower than the older PDP-8 systems. Device driver In the context of an operating system , a device driver is a computer program that operates or controls a particular type of device that is attached to a computer or automaton . A driver provides a software interface to hardware devices, enabling operating systems and other computer programs to access hardware functions without needing to know precise details about
1274-572: The GET command or executed immediately with R or RUN commands. Information about the currently loaded program is maintained in the CCB (Core Control Block), which is located on the SYS: device. This information includes which parts of memory are used by the program (which parts should be saved) and the program's starting address. This concept of preserved memory being associated with a user or job also appears in other DEC operating systems, including TOPS-10 for
1323-618: The OS/78 or OS/278 operating systems , which were extensions of OS/8 for the PDP-8. Aimed at the word processing market, they typically ran the WPS-8 word-processing program. Later models optionally had Intel 8080 or Z80 microprocessors which allowed them to run CP/M . The range was a development of the VT78 which was introduced in July 1977. Introduced in July 1977, this machine was built into
1372-656: The PC24P. The DECmates were acceptable for word-processing, but due to various hardware quirks, were somewhat incompatible with many existing PDP-8 programs, largely eliminating one potential advantage of the DECmate series over the IBM PC systems. The I/O interfaces worked slightly differently, which meant that most existing user and system programs could not detect Control-C and exit reliably. Every program, both user and system, had to be patched to fix this anomaly. Additionally,
1421-523: The PDP-8 computers on which it ran. I/O is supported via a series of supplied drivers which uses polled (not interrupt-driven) techniques. The device drivers have to be cleverly written as they can occupy only one or two memory pages of 128 12-bit words, and have to be able to run in any page in field 0. This often requires considerable cleverness, such as the use of the OPR instruction (7XXX) for small negative constants. The memory-resident "footprint" of OS/8
1470-619: The PNT() function within PRINT, for example use PNT(27) to print an ASCII ESC character. OS/8 allocates the PDP-8's 12 bit words for storing dates per: The insufficiency of a three-bit year field, capable of storing only eight years, was recognized when COS-310 was developed. The CUSPs (Commonly-Used System Programs, that is utilities) supplied with OS/8 include: A single-user BASIC and two multi-user versions of BASIC are available as options. The single-user BASIC uses several overlays to provide
1519-517: The basic user commands. This is exploited by the process by which executable programs are built: for example, an assembly language program is first assembled into a .BN (binary) file. Then one or more .BN files are loaded into memory using the LOAD (ABSLDR) command. You could then execute the loaded program with the START command, debug it with ODT, or SAVE it to a .SV file which can be later retrieved with
OS/8 - Misplaced Pages Continue
1568-805: The company released this model in 1982 at the same time as the PDP-11 -based PRO-350 and the Intel 8088 -based Rainbow 100 . The DECmate II resembles the Rainbow 100 but uses the 6120 processor. Its two operating systems are the WPS-8 word processing system, and the COS-310 Commercial Operating System running DIBOL . Like the others it had a monochrome VR201 ( VT220 -style) monitor, an LK201 keyboard and dual 400 KB single-sided quad-density 5.25-inch RX50 floppy disk drives. It had 32 Kwords of RAM for use by programs, and
1617-399: The contents of memory to DECtape or disk and restores it upon exit. But EDU20 cannot do this as it is targeted at hardware configurations without any block-replaceable device. In addition to a freely available FORTRAN II compiler, there is also a rather complete FORTRAN IV compiler available. This compiler generates code for the optional FPP-8 floating-point processor, which is essentially
1666-681: The design of their hardware. Moreover, it was traditionally considered in the hardware manufacturer 's interest to guarantee that their clients can use their hardware in an optimal way. Typically, the Logical Device Driver (LDD) is written by the operating system vendor, while the Physical Device Driver (PDD) is implemented by the device vendor. However, in recent years, non-vendors have written numerous device drivers for proprietary devices, mainly for use with free and open source operating systems . In such cases, it
1715-440: The file by directly calling the device driver. Once writing is complete, the program calls the USR "CLOSE" function. CLOSE marks the tentative file as a permanent file and creates an extent for the remaining free space for future allocations. It also deletes (marks as available free space) any other file with the same name. This facilitates replacing an existing file with a new version, for example after editing ("CLOSE" doubles as
1764-559: The file deletion call). Only one tentative file per volume may be open at a time. This seems limiting, but works for something like the PAL8 assembler since only one output file is generated at a time for each pass. PIP includes an option to compress ("squeeze") the filesystem, so that all unallocated space is moved to a single extent at the end of the disk. This can be invoked by the SQuish CCL command, much as MUNG can be used to run
1813-424: The fly, even adding device drivers , often without having to reboot the OS. OS/8 supports a simple, flat file system on a variety of mass storage devices including: Filenames on the PDP-8 take the form of FFFFFF.XX where "F" represents an uppercase, alphanumeric character of the filename and "X" represents an uppercase, alphanumeric character of the extension (filetype). The contents of any given file
1862-483: The full functionality of the language; when OS/8 is booted from a DECtape, a noticeable delay occurred each time BASIC is required to switch overlays as they need to be read from tape. The multi-user versions of BASIC (EDU20 and EDU25) differ only in whether or not they support block-replaceable devices (DECtape or disk). Due to cost constraints, many PDP-8s have punched paper tape readers as their only mass-storage I/O device. EDU20 loads from paper tape and can do output to
1911-461: The hardware being used. A driver communicates with the device through the computer bus or communications subsystem to which the hardware connects. When a calling program invokes a routine in the driver, the driver issues commands to the device (drives it). Once the device sends data back to the driver, the driver may invoke routines in the original calling program. Drivers are hardware dependent and operating-system-specific. They usually provide
1960-446: The opposite role and emulates a piece of hardware, so that the guest operating system and its drivers running inside a virtual machine can have the illusion of accessing real hardware. Attempts by the guest operating system to access the hardware are routed to the virtual device driver in the host operating system as e.g., function calls . The virtual device driver can also send simulated processor-level events like interrupts into
2009-410: The rest of the system. Even drivers executing in user mode can crash a system if the device is erroneously programmed . These factors make it more difficult and dangerous to diagnose problems. The task of writing drivers thus usually falls to software engineers or computer engineers who work for hardware-development companies. This is because they have better information than most outsiders about
OS/8 - Misplaced Pages Continue
2058-499: The same (or similar) software interface. Writing a device driver requires an in-depth understanding of how the hardware and the software works for a given platform function. Because drivers require low-level access to hardware functions in order to operate, drivers typically operate in a highly privileged environment and can cause system operational issues if something goes wrong. In contrast, most user-level software on modern operating systems can be stopped without greatly affecting
2107-509: The same privilege as all other kernel objects. By contrast, a system designed around microkernel , such as Minix , will place drivers as processes independent from the kernel but that use it for essential input-output functionalities and to pass messages between user programs and each other. On Windows NT , a system with a hybrid kernel , it is common for device drivers to run in either kernel-mode or user-mode . The most common mechanism for segregating memory into various privilege levels
2156-452: The source code of the device drivers is mostly not public (open source) and drivers often have many privileges. A group of security researchers considers the lack of isolation as one of the main factors undermining kernel security , and published an isolation framework to protect operating system kernels, primarily the monolithic Linux kernel whose drivers they say get ~80,000 commits per year. An important consideration in
2205-455: The third character (bits c0–c7) is stored with half of its bits in word 1 and the other half in word 2. 6-bits per character uppercase only ASCII strings are also used. In this case, two characters efficiently fit in each word. This is used for filenames in directory entries, but also for strings in BASIC. In BASIC, even though strings use 6-bit characters, you may print any 8-bit code by using
2254-451: The virtual machine. Virtual devices may also operate in a non-virtualized environment. For example, a virtual network adapter is used with a virtual private network , while a virtual disk device is used with iSCSI . A good example for virtual device drivers can be Daemon Tools . There are several variants of virtual device drivers, such as VxDs , VLMs , and VDDs. Solaris descriptions of commonly used device drivers: A device on
2303-455: Was introduced in 1984. It had a smaller system case, color monitor, 8 MHz clock, two 5.25-inch RX50 floppy disk drives, 32 KB user RAM, 32 KB system RAM. It was also known as the PC238. This was introduced in 1985 and withdrawn in 1990. It included a hard disk controller as part of the basic configuration. Otherwise, it was very similar to the DECmate III. It was also known as
2352-414: Was recommended. EDU25 requires an additional 4K memory bank (for a minimum of 12K) because the code contains a disk device driver and a filesystem handler. While running, EDU20 and EDU25 are self-contained programs that don't use any OS/8 system calls. Immediately upon being invoked from the OS/8 command interpreter, they overwrite OS/8's entire resident portion – all 256 words of it. Upon startup, EDU25 saves
2401-538: Was released to fix this. DECmate DECmate was the name of a series of PDP-8 -compatible computers produced by the Digital Equipment Corporation in the late 1970s and early 1980s. All of the models used an Intersil 6100 (later known as the Harris 6100) or Harris 6120 (an improved Intersil 6100) microprocessor which emulated the 12-bit DEC PDP-8 CPU. They were text-only and used
#49950