Knowledge (XXG)

Self-relocation

Source đź“ť

223:) and then relocate only its (typically much smaller) resident portion into a suitable free memory area in upper memory. In addition, advanced self-relocating TSRs (even if already loaded into upper memory by the operating system) can relocate over most of their own PSP segment and command line buffer and free their environment segment in order to further reduce the resulting 1281:) It's basically a tricky file header, a different code to parse the command line, a different entry point and exit line, and some segment magics to overcome the ORG 0 / ORG 100h difference. Self-loadhighing a device driver is a bit more tricky as you have to leave the driver header where it is and only relocate the remainder of the driver 1265:= directives prior to any INSTALL= statements, regardless of their order in the file. software may require the mouse driver to be present as a device driver, as mouse drivers have always been device drivers back in the old times. These mouse drivers have had specific device driver names depending on which protocol they used (" 66:
One form of self-relocation occurs when a program copies the code of its instructions from one sequence of locations to another sequence of locations within the main memory of a single computer, and then transfers processor control from the instructions found at the source locations of memory to the
210:
etc. since DOS 5) in order to maximize the memory available for applications. This is down to the fact that the operating system has no knowledge of the inner workings of a driver to be loaded and thus has to load it into a free memory area large enough to hold the whole driver as a block including
1550:
at the memory location being accessed is a little slow, the Z80 may get the wrong bit pattern when it fetches an instruction, but get the right one when it reads data. the built-in memory test won't catch this type of problem it's strictly a data read/write test. During the test, all instruction
915:
and a 47K CP/M. It'd just be ridiculous to have a hard compile in the addresses. So Gary figured this out one night, probably in the middle of the night thinking about some coding thing, and this really made CP/M possible to commercialize. I really think that without that relocation it would have
1564:
and then fetches the instruction at that address. If the RAM ICs are okay at that address, the CPU relocates the test program to the next memory location, prints the new address, and repeats the procedure. But, if one of the RAM ICs is slow enough to return an incorrect bit pattern, the CPU will
255:
to remain in conventional or upper memory in order to coordinate the access to the relocation target area, and in the case of device drivers also because the driver's header must always remain in the first megabyte. In order to achieve this, the drivers must be specially designed to support
1565:
misinterpret the instruction and behave unpredictably. However, it's likely that the display will lock up showing the address of faulty IC. This narrows the problem down eight ICs, which is an improvement over having to check as much as 32. The program will perform a
231:. Some self-relocating TSRs can also dynamically change their "nature" and morph into device drivers even if originally loaded as TSRs, thereby typically also freeing some memory. Finally, it is technically impossible for an external loader to relocate drivers into 306:
As an extreme example of (many-time) self-relocation, also called dynamic self-relocation, it is possible to construct a computer program so that it does not stay at a fixed address in memory, even as it executes, as for example used in
911:. it didn't matter how much memory the computer had, the operating system could always be moved into the high memory. Therefore, you could commercialize this on machines of different amounts of memory. you couldn't be selling a 64K 1569:
by pushing an RST 7 (RESTART 7) instruction from the low end of memory on up to the last working address. The rest of the program remains stationary and handles the display of the current location of the RST 7 command and its
219:. This might cause the driver not to be loaded into the most suitable free memory area or even prevent it from being loaded high at all. In contrast to this, a self-relocating driver can be loaded anywhere (including into 1600: 1559:
passing the memory test but still operating erratically on some programs. This is a program that tests memory by relocating itself through RAM. As it does so, the CPU prints the current address of the program on the
410:
logic, however, as this condition isn't met in general, generic DOS drivers cannot take advantage of it (unless they would explicitly test on this condition beforehand). Otherwise, a stub is also not necessary under
74:(after the operating system has loaded the software and passed control to it, but still before its initialization has finished), sometimes also when changing the program's configuration at a later stage during 259:
Some advanced DOS drivers also contain both a device driver (which would be loaded at offset +0000h by the operating system) and TSR (loaded at offset +0100h) sharing a common code portion internally as
684: 1273:
for example), and some software may search for these drivers in order to find out the correct type of mouse to be used. Another advantage would be that device drivers usually consume less memory (no
272:
already; this is similar to the fix-up stage of self-relocation but with the code already being loaded at the target location by the operating system's loader (instead of done by the driver itself).
31:
its own address-dependent instructions and data when run, and is therefore capable of being loaded into memory at any address. In many cases, self-relocating code is also a form of
719: 67:
instructions found at the destination locations of memory. As such, the data operated upon by the algorithm of the program is the sequence of bytes which define the program.
928:, to be precise. You could therefore always relocate it with just a bitmap of where those Laws: Certainly the most eloquent explanation I've ever had of dynamic relocation 427:
so that the kernel's gate A20 handler will provide the functionality of the stub. Still, the driver has to perform self-relocation in order to function correctly in the HMA.
1694: 1439:
problem programs self-relocating. DOSRELO accomplishes the self-relocation capability for all programs, regardless of the language, by adding entry point logic to the
868: 717: 534: 294:
relocated executable programs when they were loaded into memory. Only one copy of the program was required, but once loaded the program could not be moved (so called
916:
been a very tough problem. To get people to buy it, it'd seem complicated to them, and if you added more memory you'd have to go get a different operating system.
286:
did not have the ability to relocate programs during loading. Sometimes multiple versions of a program were maintained, each built for a different load address (
826:
offset relocation method based on a somewhat similar approach was independently conceived and implemented by Matthias R. Paul and Axel C. Frinke for their
1361: 1832: 1811: 480: 647:
to minimize its memory footprint depending on the hardware, operating system and driver configuration as well as the selected feature set and locale.)
55:
when a program is copied from external storage into main memory; the difference is that it is the loaded program itself rather than the loader in the
1423: 1476: 1629: 530: 476: 287: 1221: 1238: 179: 1878: 1174: 1118: 1071: 295: 75: 1302: 211:
its initialization code, even if that would be freed after the initialization. For TSRs, the operating system also has to allocate a
1680: 701: 520: 466: 423:) only hook the multiplex interrupt INT 2Fh, because they can then utilize a backdoor interface to hook into the interrupt chain in 1795: 1613: 1574:. Incidentally, the program is called a worm test because, as the RST 7 instruction moves up through memory, it leaves behind a 715: 1793: 1640: 1394: 1856: 1653: 1069: 91:
As an example, self-relocation is often employed in the early stages of bootstrapping operating systems on architectures like
1246: 1116: 733:
Conference Record: Tenth Annual Asilomar Conference on Circuits, Systems and Computers: Papers Presented November 22–24, 1976
335: 1067: 857: 1737: 1114: 1902: 1262: 827: 795: 632: 577: 386: 324: 44: 28: 1024: 736:. Asilomar Hotel and Conference Grounds, Pacific Grove, California, USA: Western Periodicals Company. pp. 420–424. 693: 1514: 1163: 1135: 1088: 1041: 996: 951: 1022: 290:). A special class of programs, called self-relocating programs, were coded to relocate themselves after loading. IBM 244: 1161: 979: 1719: 1140:. Z-System Corner - Some New Applications of Type-4 Programs (55). S. Plainfield, New Jersey, USA: Socrates Press: 977: 562: 1672: 896: 727: 175: 754: 136: 268:, it requires some form of internal address fix-up similar to what would otherwise have been carried out by a 1826: 1801: 1807: 1609: 1349: 1274: 931: 864: 502: 448: 248: 1571: 1323: 1319: 1278: 900: 778: 774: 624: 600: 374: 212: 140: 124: 1241:
and a device driver - similar to our FreeKEYB advanced keyboard driver. This is not really needed under
924:, right, for the memory addresses. But they were always in the same place, so you could relocate it on a 1595: 1141: 1047: 1002: 957: 849: 815: 679: 420: 1463: 1094: 584:
as well as a framework of automatic pre- and post-processing analysis tools to generate dependency and
1724:"Computer Recreations - A Core War bestiary of viruses, worms and other threats to computer memories" 845: 265: 228: 20: 1728: 1668: 1419: 1378: 811: 644: 640: 628: 416: 220: 216: 32: 731: 1763: 1625: 1448: 1270: 892: 884: 807: 782: 723: 675: 616: 128: 104: 100: 52: 48: 1294: 992:"Z3PLUS & Relocation - Information on ZCPR3PLUS, and how to write self relocating Z80 code" 1777: 1686: 1676: 1617: 1539: 1145: 1098: 1051: 1006: 961: 925: 781:(DDT) to relocate itself into higher memory. The same approach was independently developed by 737: 697: 604: 526: 516: 506: 472: 462: 452: 403: 350: 269: 92: 60: 1870: 1561: 1543: 1492: 1408: 1390: 1353: 830:
to dynamically minimize the runtime footprint of resident drivers and TSRs (like FreeKEYB).)
803: 512: 458: 399: 340: 308: 236: 224: 56: 1186: 904: 726:(1977) . "A Simple Technique for Static Relocation of Absolute Machine Code". Written at 592: 581: 569: 370: 252: 240: 232: 1357: 1213: 1472: 1444: 1295:"Re: [fd-dev] On GRAFTABL and DISPLAY.SYS (Was: Changing codepages in FreeDOS)" 888: 841: 823: 786: 345: 1130: 1083: 1036: 991: 946: 332:- a DR-DOS API to assist remote/network boot code in relocating itself while DOS boots 1896: 1773: 1413: 1182: 921: 853: 608: 585: 171: 1848: 768: 620: 424: 382: 183: 1723: 1535: 1531: 1440: 1330: 596: 195: 96: 398:
There are two exceptions to the stub requirement for a driver to load into the
16:
Program that relocates its own address-dependent instructions and data when run
1664: 1579: 1373:(NB. Gives an overview on load-high methods under DOS, including the usage of 1315: 1250: 1249:= is supported since DR DOS 3.41+ and DR DOS preserves the order of 1234: 933: 903:. He took advantage of the fact that the only byte was always going to be the 819: 612: 412: 312: 261: 203: 1781: 1621: 1149: 1102: 1055: 1010: 965: 741: 611:
and it implements advanced self-relocation techniques (including into normal
1575: 1566: 1556: 1506: 1418:(advertisement). Vol. VI, no. 44. San Francisco, California, USA: 636: 588: 573: 199: 186:
more effectively than possible for externally provided "high"-loaders (like
111:) move themselves out of place in order to load the next stage into memory. 71: 777:
for programs to run. It was also utilized dynamically by the CP/M debugger
1266: 607:, the driver supports to be variously loaded and install itself as TSR or 1768: 1547: 1374: 407: 329: 207: 187: 151: 1542:
cycle performing other chores, it doesn't have as much time to fetch an
1093:. Z-System Corner (54). S. Plainfield, New Jersey, USA: Socrates Press: 1436: 1233:
Add a SYS device driver header to the driver, so that CTMOUSE could be
1082:
Sage, Jay (January–February 1992). Carlson, Art; McEwen, Chris (eds.).
759: 565: 283: 158:
programs which were self-relocatable through an embedded stub as well.
1654:"III. Useful 68000 Routines and Techniques, 16. The Worm Memory Test" 1382: 1258: 1254: 1242: 908: 899:
he came bouncing into the lab and he said, I have figured out how to
887:" of the OS. Can you tell us what that is and why it was important? 763: 378: 291: 191: 1601:
Dr. Dobb's Journal of Software Tools for the Professional Programmer
1594:
Steinman, Jan W. (1986-09-01). Written at West Linn, Oregon, USA.
680:"A simple technique for static relocation of absolute machine code" 1037:"More on relocatable code, PRL files, ZCPR34, and Type-4 programs" 917: 1803:
RISC OS Application Image Format (previously Arthur Image Format)
1326:
segment (offset +60h and upwards) to minimize its resident size.
662:
FreeKEYB - Advanced international DOS keyboard and console driver
1690: 1129:
Sage, Jay (May–June 1992) . Carlson, Art; McEwen, Chris (eds.).
912: 790: 147: 120: 1552: 1527: 280: 167: 108: 685:
Dr. Dobb's Journal of Computer Calisthenics & Orthodontia
858:"Legacy of Gary Kildall: The CP/M IEEE Milestone Dedication" 107:(VBR) and initial boot stages of operating systems such as 990:
Mitchell, Bridger (July–August 1988). Carlson, Art (ed.).
170:, self-relocation is sometimes also used by more advanced 1409:"Throughput - Are you getting all you deserve? - DOSRELO" 1333:
GRAFTABL 2.00+ supports dynamic self-relocation as well.)
1035:
Sage, Jay (September–October 1988). Carlson, Art (ed.).
863:(video transscription). Pacific Grove, California, USA: 730:, Monterey, California, USA. In Titus, Harold A. (ed.). 1806:(Technical Memorandum) (1.00 ed.). Cambridge, UK: 568:-based dynamically configurable driver supporting most 251:), because these methods require small driver-specific 1253:
directives but it would improve the flexibility on
1214:"Re: [fd-dev] ANNOUNCE: CuteMouse 2.0 alpha 1" 1343: 1341: 1339: 1207: 1205: 1203: 1001:. Advanced CP/M (33). Columbia Falls, Montana, USA: 895:
did was mind boggling. I remember the day at the
655: 653: 1352:[Loading drivers dynamically] (in German). 1046:. ZCPR3 Corner (34). Columbia Falls, Montana, USA: 956:. ZCPR3 Corner (32). Columbia Falls, Montana, USA: 558:
FreeKEYB - Enhanced DOS keyboard and console driver
369:An exception to the requirement for a stub is when 556:Paul, Matthias R.; Frinke, Axel C. (1997-10-13) , 415:and higher, when resident system extensions (like 802:of this method was later utilized by dynamically 660:Paul, Matthias R.; Frinke, Axel C. (2006-01-16), 848:; Laws, David; Michel, Howard E.; Halla, Brian; 146:In 1988, the alternative command line processor 1377:etc. commands and self-relocating methods into 1138:(TCJ) - Programming, User Support, Applications 1091:(TCJ) - Programming, User Support, Applications 1044:(TCJ) - Programming, User Support, Applications 999:(TCJ) - Programming, User Support, Applications 954:(TCJ) - Programming, User Support, Applications 945:Sage, Jay (May–June 1988). Carlson, Art (ed.). 856:; Kampe, Bill (2014-04-25). Laws, David (ed.). 8: 70:Static self-relocation typically happens at 1416:- The Newsweekly For The Computer Community 508:Operating Systems: A Concept-based Approach 406:is permanently enabled on machines without 264:. If the shared code is not designed to be 1849:"Nachladbare Treiber unter CP/M - PRL2COM" 1800:Smith, Lee; Haines, Lionel (1989-02-02) . 1505:Wilkinson, William "Bill" Albert (2003) . 822:and higher. A much more sophisticated and 752:(609 pages). (This "resize" method, named 1538:. since the Z80 must spend half of each 454:Systems Programming and Operating Systems 381:, and thus it is effectively accessed as 1810:, Programming Languages Group. PLG-AIF. 1661:Dr. Dobb's Toolbook of 68000 Programming 1407:Boothe Management Systems (1972-11-01). 1389:necessary for TSRs to relocate into the 664:(User Manual) (7 (preliminary) ed.) 1386: 631:recombination) and byte-level granular 440: 362: 135:to the top of available memory through 1659:. Written at West Linn, Oregon, USA. 1546:as it does a data byte. If one of the 1507:"The H89 Worm: Memory Testing the H89" 182:(TSRs) loading themselves "high" into 1762:Harrell III, John B. (October 1983). 1526:Besides fetching an instruction, the 799: 315:is a dynamic self-relocator as well. 7: 1608:(9). Redwood City, California, USA: 1435:DOSRELO provides a method of making 867:. CHM Reference number: X7170.2014. 180:terminate-and-stay-resident programs 1511:Bill Wilkinson's Heath Company Page 1322:relocates itself over parts of its 758:, could be applied statically to a 296:one-time position-independent code 256:self-relocation into these areas. 43:Self-relocation is similar to the 14: 1598:. The Right to Assemble (TRTA). 1348:Paul, Matthias R. (2002-02-02). 1293:Paul, Matthias R. (2001-08-18). 1212:Paul, Matthias R. (2002-04-06). 1881:from the original on 2020-02-21 1869:Pohlers, Volker (2017-04-24) . 1859:from the original on 2020-02-21 1835:from the original on 2017-08-31 1814:from the original on 2017-08-30 1740:from the original on 2017-07-04 1700:from the original on 2021-12-13 1517:from the original on 2021-12-13 1482:from the original on 2019-05-15 1426:from the original on 2020-02-06 1395:intra-segment offset relocation 1364:from the original on 2017-09-09 1305:from the original on 2017-09-04 1261:systems, which always execute 1224:from the original on 2020-02-07 874:from the original on 2014-12-27 623:, or raw memory also utilizing 537:from the original on 2020-02-20 511:. Education. New Delhi, India: 483:from the original on 2020-02-01 457:. Education. New Delhi, India: 402:: A stub is not necessary when 276:IBM DOS/360 and OS/360 programs 1828:Properties of ARM Image Format 1555:, not from RAM result in the 1179:Caldera DR-DOS 7.02 User Guide 143:(TPA) for programs to run in. 63:that performs the relocation. 1: 1624:. #119. ark:/13960/t74v34p9p 1614:The People's Computer Company 1350:"Treiber dynamisch nachladen" 828:dynamic dead-code elimination 796:paragraph boundary relocation 633:dynamic dead code elimination 580:. Utilizing an off-the-shelf 325:Dynamic dead code elimination 1175:"Chapter 10 Managing Memory" 1131:"Type-3 and Type-4 Programs" 947:"ZCPR 3.4 - Type-4 Programs" 852:; Berg, Brian; Su, Weilian; 560:(User Manual) (6.5 ed.) 1720:Dewdney, Alexander Keewatin 846:Rolander, Thomas "Tom" Alan 721:. Originally presented at: 1919: 1776:: 160, 162, 164–168, 170. 1673:Simon & Schuster, Inc. 1530:uses half of the cycle to 1443:of the program before the 1387:more sophisticated methods 806:self-relocating TSRs like 706:. #22 ark:/13960/t8hf1g21p 377:by the memory manager via 176:resident system extensions 95:, where lower-level chain 27:program is a program that 1847:Huck, Alex (2016-08-14). 1652:Steinman, Jan W. (1986). 773:in order to maximize the 728:Naval Postgraduate School 694:People's Computer Company 643:and reconfigurability at 139:in order to maximize the 1610:M&T Publishing, Inc. 755:page boundary relocation 591:to be embedded into the 137:page boundary relocation 47:process employed by the 1808:Acorn Computers Limited 1385:API. It also discusses 865:Computer History Museum 789:to produce relocatable 599:and a self-discarding, 503:Dhamdhere, Dhananjay M. 449:Dhamdhere, Dhananjay M. 1784:. ark:/13960/t8z906r42 1596:"The Worm Memory Test" 1491:(3 pages) (NB. From a 1152:. ark:/13960/t4dn54d22 1105:. ark:/13960/t89g6n689 1058:. ark:/13960/t0ks7pc39 1013:. ark:/13960/t36121780 968:. ark:/13960/t1wd4v943 907:. And so he created a 850:Wharton, John Harrison 779:Dynamic Debugging Tool 625:program segment prefix 375:permanent upper memory 213:Program Segment Prefix 141:Transient Program Area 125:Dynamic Debugging Tool 1616:: 114–115 (662–663). 1551:fetches are from the 1251:[D]CONFIG.SYS 1185:1998 . Archived from 154:introduced so called 1903:Computer programming 1465:The Worm Memory Test 1136:The Computer Journal 1089:The Computer Journal 1042:The Computer Journal 997:The Computer Journal 952:The Computer Journal 266:position-independent 21:computer programming 1729:Scientific American 1669:Prentice Hall Press 1447:catalogs it on the 1420:Computerworld, Inc. 1084:"Ten Years of ZCPR" 824:byte-level granular 724:Kildall, Gary Arlen 676:Kildall, Gary Arlen 641:self-modifying code 629:environment segment 564:(NB. FreeKEYB is a 221:conventional memory 217:environment segment 33:self-modifying code 1675:pp. 341–350. 1449:Core Image Library 1271:Mouse Systems Mode 885:dynamic relocation 783:Bruce H. Van Natta 678:(February 1978) . 373:is converted into 336:Garbage collection 105:volume boot record 101:master boot record 93:IBM PC compatibles 1663:. New York, USA: 1540:instruction fetch 926:256 byte boundary 762:disk image using 696:: 10–13 (66–69). 605:relocating loader 531:978-0-07-061194-8 477:978-0-07-463579-7 351:Quine (computing) 309:worm memory tests 270:relocating loader 1910: 1889: 1887: 1886: 1875:Homecomputer DDR 1867: 1865: 1864: 1853:Homecomputer DDR 1843: 1841: 1840: 1822: 1820: 1819: 1792: 1790: 1789: 1749: 1748: 1746: 1745: 1716: 1710: 1709:(1+5+10+1 pages) 1708: 1706: 1705: 1699: 1658: 1649: 1643: 1639: 1637: 1636: 1591: 1585: 1584: 1582:(NO OPERATION). 1544:instruction byte 1523: 1522: 1502: 1496: 1495:service manual.) 1493:Vector Graphic 3 1490: 1488: 1487: 1481: 1470: 1460: 1454: 1453: 1432: 1431: 1404: 1398: 1372: 1370: 1369: 1358:de.comp.os.msdos 1345: 1334: 1328: 1311: 1310: 1290: 1284: 1283: 1230: 1229: 1209: 1198: 1197: 1195: 1194: 1171: 1165: 1160: 1158: 1157: 1126: 1120: 1113: 1111: 1110: 1079: 1073: 1066: 1064: 1063: 1032: 1026: 1021: 1019: 1018: 987: 981: 976: 974: 973: 942: 936: 930: 880: 879: 873: 862: 837: 831: 772: 751: 749: 748: 714: 712: 711: 672: 666: 665: 657: 648: 627:overloading and 570:keyboard layouts 561: 553: 547: 545: 543: 542: 513:Tata McGraw-Hill 499: 493: 491: 489: 488: 459:Tata McGraw-Hill 445: 428: 396: 390: 367: 341:Self-replication 237:high memory area 225:memory footprint 57:operating system 1918: 1917: 1913: 1912: 1911: 1909: 1908: 1907: 1893: 1892: 1884: 1882: 1868: 1862: 1860: 1846: 1838: 1836: 1825: 1817: 1815: 1799: 1787: 1785: 1772:. Review (45). 1761: 1758: 1756:Further reading 1753: 1752: 1743: 1741: 1718: 1717: 1713: 1703: 1701: 1697: 1683: 1656: 1651: 1650: 1646: 1634: 1632: 1593: 1592: 1588: 1520: 1518: 1504: 1503: 1499: 1485: 1483: 1479: 1468: 1462: 1461: 1457: 1429: 1427: 1406: 1405: 1401: 1367: 1365: 1347: 1346: 1337: 1308: 1306: 1292: 1291: 1287: 1227: 1225: 1211: 1210: 1201: 1192: 1190: 1173: 1172: 1168: 1155: 1153: 1128: 1127: 1123: 1108: 1106: 1081: 1080: 1076: 1061: 1059: 1034: 1033: 1029: 1016: 1014: 989: 988: 984: 971: 969: 944: 943: 939: 905:high order byte 877: 875: 871: 860: 842:Eubanks, Gordon 840:Huitt, Robert; 839: 838: 834: 820:DR DOS 6.0 800:another variant 766: 746: 744: 722: 709: 707: 704: 674: 673: 669: 659: 658: 651: 593:executable file 582:macro assembler 555: 554: 550: 540: 538: 523: 515:. p. 231. 501: 500: 496: 486: 484: 469: 461:. p. 232. 447: 446: 442: 437: 432: 431: 397: 393: 371:expanded memory 368: 364: 359: 321: 304: 278: 241:extended memory 233:expanded memory 164: 162:x86 DOS drivers 123:, the debugger 117: 115:CP/M extensions 89: 84: 41: 25:self-relocating 17: 12: 11: 5: 1916: 1914: 1906: 1905: 1895: 1894: 1891: 1890: 1844: 1823: 1797: 1757: 1754: 1751: 1750: 1722:(March 1985). 1711: 1681: 1644: 1586: 1497: 1475:. 2015-10-21. 1473:Vector Graphic 1455: 1445:Linkage Editor 1399: 1381:utilizing the 1335: 1285: 1199: 1166: 1121: 1074: 1027: 982: 937: 922:bytes reversed 854:Kildall, Scott 832: 787:IMS Associates 702: 667: 649: 595:alongside the 548: 521: 494: 467: 439: 438: 436: 433: 430: 429: 391: 361: 360: 358: 355: 354: 353: 348: 346:Self-reference 343: 338: 333: 327: 320: 317: 303: 302:Other examples 300: 277: 274: 163: 160: 116: 113: 88: 85: 83: 80: 40: 37: 15: 13: 10: 9: 6: 4: 3: 2: 1915: 1904: 1901: 1900: 1898: 1880: 1877:(in German). 1876: 1872: 1858: 1855:(in German). 1854: 1850: 1845: 1834: 1830: 1829: 1824: 1813: 1809: 1805: 1804: 1798: 1796: 1794: 1783: 1779: 1775: 1774:1001001, Inc. 1771: 1770: 1765: 1764:"DOSPLUS 3.5" 1760: 1759: 1755: 1739: 1735: 1731: 1730: 1725: 1721: 1715: 1712: 1696: 1692: 1688: 1684: 1682:0-13-216649-6 1678: 1674: 1670: 1666: 1662: 1655: 1648: 1645: 1641: 1631: 1627: 1623: 1619: 1615: 1611: 1607: 1603: 1602: 1597: 1590: 1587: 1583: 1581: 1577: 1573: 1568: 1563: 1558: 1554: 1549: 1545: 1541: 1537: 1533: 1529: 1516: 1512: 1508: 1501: 1498: 1494: 1478: 1474: 1467: 1466: 1459: 1456: 1452: 1450: 1446: 1442: 1438: 1425: 1421: 1417: 1415: 1414:Computerworld 1410: 1403: 1400: 1396: 1392: 1388: 1384: 1380: 1376: 1363: 1359: 1355: 1351: 1344: 1342: 1340: 1336: 1332: 1327: 1325: 1321: 1317: 1314:At least the 1304: 1300: 1296: 1289: 1286: 1282: 1280: 1276: 1272: 1268: 1264: 1260: 1256: 1252: 1248: 1244: 1240: 1236: 1223: 1219: 1215: 1208: 1206: 1204: 1200: 1189:on 2017-08-30 1188: 1184: 1183:Caldera, Inc. 1180: 1176: 1170: 1167: 1164: 1162: 1151: 1147: 1143: 1139: 1137: 1132: 1125: 1122: 1119: 1117: 1115: 1104: 1100: 1096: 1092: 1090: 1085: 1078: 1075: 1072: 1070: 1068: 1057: 1053: 1049: 1045: 1043: 1038: 1031: 1028: 1025: 1023: 1012: 1008: 1004: 1000: 998: 993: 986: 983: 980: 978: 967: 963: 959: 955: 953: 948: 941: 938: 934: 932: 929: 927: 923: 919: 914: 910: 906: 902: 898: 894: 890: 886: 870: 866: 859: 855: 851: 847: 843: 836: 833: 829: 825: 821: 817: 813: 809: 805: 801: 798: 797: 792: 788: 784: 780: 776: 770: 765: 761: 757: 756: 743: 739: 735: 734: 729: 725: 720: 718: 716: 705: 703:0-8104-5490-4 699: 695: 691: 687: 686: 681: 677: 671: 668: 663: 656: 654: 650: 646: 642: 638: 634: 630: 626: 622: 618: 614: 610: 609:device driver 606: 602: 598: 594: 590: 587: 586:code morphing 583: 579: 578:country codes 575: 571: 567: 563: 559: 552: 549: 536: 532: 528: 524: 522:0-07-061194-7 518: 514: 510: 509: 504: 498: 495: 482: 478: 474: 470: 468:0-07-463579-4 464: 460: 456: 455: 450: 444: 441: 434: 426: 422: 418: 414: 409: 405: 401: 395: 392: 388: 384: 380: 376: 372: 366: 363: 356: 352: 349: 347: 344: 342: 339: 337: 334: 331: 328: 326: 323: 322: 318: 316: 314: 310: 301: 299: 297: 293: 289: 285: 282: 275: 273: 271: 267: 263: 257: 254: 250: 246: 242: 238: 234: 230: 229:fragmentation 226: 222: 218: 215:(PSP) and an 214: 209: 205: 201: 197: 193: 189: 185: 181: 177: 173: 169: 161: 159: 157: 153: 149: 144: 142: 138: 134: 130: 126: 122: 114: 112: 110: 106: 102: 98: 94: 86: 81: 79: 77: 73: 68: 64: 62: 58: 54: 50: 46: 38: 36: 34: 30: 26: 22: 1883:. Retrieved 1874: 1861:. Retrieved 1852: 1837:. Retrieved 1827: 1816:. Retrieved 1802: 1786:. Retrieved 1767: 1742:. Retrieved 1733: 1727: 1714: 1702:. Retrieved 1660: 1647: 1633:. Retrieved 1605: 1599: 1589: 1525: 1519:. Retrieved 1510: 1500: 1484:. Retrieved 1464: 1458: 1434: 1428:. Retrieved 1412: 1402: 1366:. Retrieved 1329:(NB. A post- 1313: 1307:. Retrieved 1298: 1288: 1232: 1226:. Retrieved 1217: 1191:. Retrieved 1187:the original 1178: 1169: 1154:. Retrieved 1134: 1124: 1107:. Retrieved 1087: 1077: 1060:. Retrieved 1040: 1030: 1015:. Retrieved 995: 985: 970:. Retrieved 950: 940: 882: 876:. Retrieved 835: 794: 753: 745:. Retrieved 732: 708:. Retrieved 689: 683: 670: 661: 621:video memory 557: 551: 539:. Retrieved 507: 497: 485:. Retrieved 453: 443: 425:kernel space 394: 383:upper memory 365: 305: 279: 258: 184:upper memory 165: 155: 150:3.4 for the 145: 132: 118: 97:boot loaders 90: 87:Boot loaders 69: 65: 42: 24: 18: 1576:slime trail 1536:dynamic RAM 1441:object code 1422:p. 9. 1331:DR-DOS 7.03 1299:freedos-dev 1275:environment 1259:PC DOS 1243:DR DOS 1237:, a normal 1235:both in one 1218:freedos-dev 767: [ 639:as well as 597:binary code 546:(799 pages) 492:(658 pages) 404:high memory 235:(EMS), the 196:INSTALLHIGH 129:dynamically 1885:2020-02-21 1863:2020-02-21 1839:2017-08-31 1818:2017-08-30 1788:2020-02-06 1744:2017-07-04 1704:2021-12-13 1665:Brady Book 1635:2021-12-13 1572:relocation 1521:2021-12-13 1486:2021-12-13 1430:2020-02-07 1393:utilizing 1368:2017-07-02 1316:MS-DOS 6.0 1309:2017-09-04 1228:2020-02-07 1193:2017-08-30 1156:2021-11-29 1109:2021-11-29 1062:2020-02-09 1017:2020-02-09 972:2021-11-29 935:(33 pages) 878:2020-01-19 747:2021-12-06 710:2017-08-19 613:DOS memory 574:code pages 541:2020-02-20 487:2011-11-08 435:References 413:DR DOS 6.0 385:, not via 313:Apple Worm 262:fat binary 227:and avoid 204:DEVICEHIGH 178:(RSXs) or 131:relocated 99:(like the 45:relocation 1871:"PRL2COM" 1782:0744-7868 1736:: 38–39. 1642:(2 pages) 1622:1044-789X 1567:worm test 1548:RAM chips 1354:Newsgroup 1267:PC$ MOUSE 1150:0748-9331 1103:0748-9331 1056:0748-9331 1011:0748-9331 966:0748-9331 793:code. As 742:1058-6393 637:load-time 619:, unused 589:meta data 288:partition 239:(HMA) or 200:HIINSTALL 72:load-time 29:relocates 1897:Category 1879:Archived 1857:Archived 1833:Archived 1831:. 1993. 1812:Archived 1769:80 Micro 1738:Archived 1695:Archived 1691:86-25308 1515:Archived 1477:Archived 1424:Archived 1375:LOADHIGH 1362:Archived 1320:GRAFTABL 1303:Archived 1245:because 1222:Archived 920:had the 901:relocate 891:: what 883:Laws: " 869:Archived 645:run-time 601:relaxing 535:Archived 505:(2006). 481:Archived 451:(1999). 408:gate A20 330:RPLOADER 319:See also 249:CLOAKING 208:HIDEVICE 188:LOADHIGH 152:Z-System 82:Examples 39:Overview 1532:refresh 1356::  1247:INSTALL 889:Eubanks 816:NLSFUNC 760:CP/M-80 566:Unicode 421:NLSFUNC 284:DOS/360 172:drivers 103:(MBR), 76:runtime 1780:  1689:  1679:  1630:DDJOEB 1628:  1620:  1383:XMSUMB 1269:" for 1263:DEVICE 1255:MS-DOS 1148:  1101:  1054:  1009:  964:  909:bitmap 897:school 818:under 814:, and 764:MOVCPM 740:  700:  576:, and 529:  519:  475:  465:  379:EMSUMB 311:. The 292:OS/360 192:HILOAD 166:Under 156:type-4 133:itself 127:(DDT) 119:Under 53:loader 49:linker 1698:(PDF) 1657:(PDF) 1626:CODEN 1480:(PDF) 1469:(PDF) 1277:, no 1144:–19. 1050:–25. 1005:–15. 960:–17. 918:Intel 872:(PDF) 861:(PDF) 812:SHARE 771:] 692:(2). 417:SHARE 357:Notes 253:stubs 243:(via 61:shell 1778:ISSN 1687:LCCN 1677:ISBN 1618:ISSN 1580:NOPs 1534:the 1379:UMBs 1146:ISSN 1099:ISSN 1097:–7. 1052:ISSN 1007:ISSN 962:ISSN 913:CP/M 893:Gary 808:KEYB 791:PL/M 738:ISSN 698:ISBN 617:UMBs 603:and 527:ISBN 517:ISBN 473:ISBN 463:ISBN 419:and 245:DPMS 174:and 148:ZCPR 121:CP/M 23:, a 1734:285 1578:of 1562:CRT 1557:H89 1553:ROM 1528:Z80 1437:DOS 1391:HMA 1324:PSP 1279:PSP 1239:TSR 804:HMA 785:of 775:TPA 635:at 400:HMA 387:EMS 298:). 281:IBM 247:or 202:or 168:DOS 109:DOS 59:or 19:In 1899:: 1873:. 1851:. 1766:. 1732:. 1726:. 1693:. 1685:. 1671:/ 1667:/ 1612:/ 1606:11 1604:. 1524:. 1513:. 1509:. 1471:. 1451:. 1433:. 1411:. 1397:.) 1360:. 1338:^ 1318:+ 1312:. 1301:. 1297:. 1231:. 1220:. 1216:. 1202:^ 1181:. 1177:. 1142:13 1133:. 1086:. 1048:20 1039:. 994:. 958:10 949:. 881:. 844:; 810:, 769:pl 688:. 682:. 652:^ 615:, 572:, 533:. 525:. 479:. 471:. 194:, 78:. 35:. 1888:. 1866:; 1842:. 1821:. 1791:. 1747:. 1707:. 1638:. 1489:. 1371:. 1257:/ 1196:. 1159:. 1112:. 1095:3 1065:. 1020:. 1003:9 975:. 750:. 713:. 690:3 544:. 490:. 389:. 206:/ 198:/ 190:/ 51:-

Index

computer programming
relocates
self-modifying code
relocation
linker
loader
operating system
shell
load-time
runtime
IBM PC compatibles
boot loaders
master boot record
volume boot record
DOS
CP/M
Dynamic Debugging Tool
dynamically
page boundary relocation
Transient Program Area
ZCPR
Z-System
DOS
drivers
resident system extensions
terminate-and-stay-resident programs
upper memory
LOADHIGH
HILOAD
INSTALLHIGH

Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.

↑