Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!mnetor!uunet!husc6!cmcl2!rutgers!iuvax!bsu-cs!dhesi From: dhesi@bsu-cs.UUCP (Rahul Dhesi) Newsgroups: comp.sys.tandy Subject: Re: Ldos vs. NeWDOS Message-ID: <1133@bsu-cs.UUCP> Date: Fri, 11-Sep-87 16:03:21 EDT Article-I.D.: bsu-cs.1133 Posted: Fri Sep 11 16:03:21 1987 Date-Received: Sat, 12-Sep-87 19:02:28 EDT References: <52@nancy.UUCP> <18@umn-d-ub.D.UMN.EDU> Reply-To: dhesi@bsu-cs.UUCP (Rahul Dhesi) Organization: CS Dept, Ball St U, Muncie, Indiana Lines: 22 Summary: Software relocation A couple of people said that MSDOS can load programs at any address only because the hardware supports relocation. Actually, relocation under MSDOS happens in two ways. Programs that use only near pointers and near jumps can be loaded at any address (probably aligned at a 16-byte boundary, I think). The segmented architecture takes care of the relocation. Programs that use 4-byte pointers, however, need to have relocation done load time. This is done by the MSDOS loader routine looking at the relocation table that EXE format load modules have. The MSDOS linker produces EXE format files by default. What Radio Shack needed was a documented load module format that allowed for a relocation table. To the best of my knowledge, none was ever provided. I had many struggles with programs that wanted to load over each other, most commonly an applications program I was trying to trace or debug, and a debugger. -- Rahul Dhesi UUCP: !{iuvax,pur-ee,uunet}!bsu-cs!dhesi