Overlay (programming): Difference between revisions

Content deleted Content added
notes; IBLDR; nomenclature; NPOV
Historical use: Fortran II, IBLDR, OS/360
Line 55:
 
==Historical use==
IBM introduced the concept of a ''chain job'' <ref>{{cite manual
| title = IBM 7090/7094 Programming Systems - FORTRAN II Programming
| id = C28-6054-4
| date = August 1963
| section = Chapter 12 The Chain Job
| section-url = http://bitsavers.org/pdf/ibm/7090/C28-6054-4_7090_FORTRANII.pdf#page=34
| pages = 34-35
| url = http://bitsavers.org/pdf/ibm/7090/C28-6054-4_7090_FORTRANII.pdf
| work = Systems Reference Library
| publisher = IBM
}}
</ref>
in FORTRAN II,
The program had to explicitly call the CHAIN subroutine to load a new link,
and the new link replaced all of the old link's storage except for the Fortran COMMON area.
 
IBM introduced more general overlay handling<ref>{{cite manual
| title = IBM 7090/7094 Programming Systems - IBJOB Processor - Overlay feature of IBLDR
| id = C28-6331
| year = 1963
| url = http://bitsavers.org/pdf/ibm/7090/C28-6331_IBLDR_overlay_1963.pdf
| work = Systems Reference Library
| publisher = IBM
}}
</ref> in [[IBSYS]]/IBJOB, including including a tree structure and automatic loading of links as part of CALL processing.
 
In OS/360, IBM extended the overlay facility of IBLDR by allowing an overlay program to have independent overlay regions, each with its own overlay tree. OS/360 also had a simpler overlay system for transient [[Supervisor call|SVC]] routines, using 1024-byte SVC transient areas.
 
<!-- Need information on other vendors here. -->
 
In the [[home computer]] era overlays were popular because the operating system and many of the computer systems it ran on lacked virtual memory and had very little RAM by current standards: the original [[IBM PC]] had between 16K and 64K, depending on configuration. Overlays were a popular technique in [[Commodore BASIC]] to load graphics screens. In order to detect when an overlay was already loaded, a [[flag (computing)|flag variable]] could be used.<ref name="Commodore"/>