Content deleted Content added
Matthiaspaul (talk | contribs) →top: CE |
Matthiaspaul (talk | contribs) m →Further reading: -typo |
||
Line 78:
* {{cite journal |title=CP/M 2 lernt dazu. Modulare Systemerweiterungen auch für das 'alte' CP/M |language=de |type=part 1 |author-first1=Eckhard |author-last1=Lieber |author-first2=Thomas |author-last2=von Massenbach |journal=[[c't - magazin für computertechnik]] |publisher=[[Heise Verlag]] |date=1987 |volume=1987 |issue=1 |pages=124–135 |postscript=;}} {{cite journal |title=CP/M 2 lernt dazu. Modulare Systemerweiterungen auch für das 'alte' CP/M |language=de |type=part 2 |author-first1=Eckhard |author-last1=Lieber |author-first2=Thomas |author-last2=von Massenbach |journal=[[c't - magazin für computertechnik]] |publisher=[[Heise Verlag]] |date=1987 |volume=1987 |issue=2 |pages=78–85 |postscript=;}} {{cite web |title=RSM für CP/M 2.2 |language=de |date=2016-10-09 |author-first=Alex |author-last=Huck |work=Homecomputer DDR |url=http://hc-ddr.hucki.net/wiki/doku.php/cpm:rsm:ct |access-date=2016-11-25 |url-status=live |archive-url=https://web.archive.org/web/20161125023237/http://hc-ddr.hucki.net/wiki/doku.php/cpm%3Arsm%3Act |archive-date=2016-11-25}}
* {{cite web |title=Re: CP/M assembly language programming |author-first=Charles "Chuck" P. |author-last=Guzis |date=2015-03-16 |work=Vintage Computer Forum |series=Genre: CP/M and MP/M |url=http://www.vcfed.org/forum/showthread.php?46767-CP-M-assembly-language-programming&p=360328#post360328 |access-date=2020-02-01 |url-status=live |archive-url=https://web.archive.org/web/20200201052736/http://www.vcfed.org/forum/showthread.php?46767-CP-M-assembly-language-programming&p=360328 |archive-date=2020-02-01 |quote=[…] Ever wonder how {{ill|MOVCPM|pl|MOVCPM (CP/M)}} works? Since the [[BDOS]] and [[Console Command Processor|CCP]] is in high memory, above the user application, addresses have to be changed every time the system memory size is changed. Now that requires relocating addresses in [[8080]] code, since [[relative addressing]] is not part of the hardware. Without implementing a full-blown relocating assembler and loader, how does one go about this? It's actually pretty clever and [[MP/M]] even uses this scheme to construct its page-relocatable files. You simply assemble the source program ''twice'' with the second assembly origin 100H (256 bytes) higher than the first. The two binary images are then compared, byte for byte, and a [[bitmap|map]] constructed of where pairs of bytes differ in value by exactly 100H. The result is a list of locations where the relocation value needs to be adjusted if the ___location of a program in memory is to be moved. MP/M calls this sort of file PRL (page relocatable), but I don't know that CP/M 2.2 ever coined a name for it. […]}}
* {{cite web |title=Re: How does MOVCPM.COM work? |author-first=Charles "Chuck" P. |author-last=Guzis |date=2015-07-29 |work=Vintage Computer Forum |series=Genre: CP/M and MP/M |url=http://www.vcfed.org/forum/showthread.php?48532-How-does-MOVCPM-COM-work&p=376438#post376438 |access-date=2020-02-01 |url-status=live |archive-url=https://web.archive.org/web/20200201053054/http://www.vcfed.org/forum/showthread.php?48532-How-does-MOVCPM-COM-work=&p=376438 |archive-date=2020-02-01 |quote=[…] {{ill|MOVCPM|pl|MOVCPM (CP/M)}} uses an early type of PRL format. Basically, [[CP/M]] is assembled twice; the second time is 100H bytes offset. The two binaries are compared and a [[bitmap]] constructed. A set bit implies that the [[high-order byte]] of an address is to be adjusted. Low order address bytes are not affected; hence, "Page
* {{cite web |title=Re: Is it safe to use RST 28h in CP/M assembly programs? |author-first=Charles "Chuck" P. |author-last=Guzis |date=2016-11-08 |work=Vintage Computer Forum |series=Genre: CP/M and MP/M |url=http://www.vcfed.org/forum/showthread.php?54822-Is-it-safe-to-use-RST-28h-in-CP-M-assembly-programs&p=434954#post434954 |access-date=2020-02-01 |url-status=live |archive-url=https://web.archive.org/web/20200201053327/http://www.vcfed.org/forum/showthread.php?54822-Is-it-safe-to-use-RST-28h-in-CP-M-assembly-programs&p=434954 |archive-date=2020-02-01 |quote=[…] I've referenced PRL files and how they originally got their start with {{ill|MOVCPM|pl|MOVCPM (CP/M)}}, but became an integral part of [[MP/M]] and [[CP/M 3.0]]. But PRL files use a [[bitmap|bit map]] in which every bit corresponds to a memory ___location; one bits indicate that a page relocation offset should be added to the corresponding memory ___location. If you have very few absolute memory references (as opposed to relative ones) you may want to employ a pointer list (2 bytes per reference) rather than a bitmap. This is unlikely in [[8080]] code which doesn't have relative jumps, but may be a consideration for [[Z80]] code. The trick to quickly find this out is to assemble your program twice; the second time offset by 100H, then compare the two binaries. The advantage of [[runtime (program lifecycle phase)|run-time]] relocation is that you don't have to incur a penalty for code that attempts to get around the relocation issue--no "tricks"; just write straight code. […]}}
* {{cite journal |author-first=Richard L. |author-last=Roth |title=Relocation Is Not Just Moving Programs |___location=Ridgefield, CA, USA |journal=[[Dr. Dobb's Journal of Computer Calisthenics & Orthodontia]] |publisher=[[People's Computer Company]] |id=#22 |volume=3 |number=2 |date=February 1978 |orig-date=1977 |pages=14–20<!-- in the issue --> (70–76<!-- in the volume -->) |isbn=0-8104-5490-4<!-- of the volume --> |url=https://archive.org/stream/dr_dobbs_journal_vol_03/dr_dobbs_journal_vol_03_djvu.txt |access-date=2019-04-19 |url-status=live |archive-url=https://web.archive.org/web/20190420010941/https://archive.org/stream/dr_dobbs_journal_vol_03/dr_dobbs_journal_vol_03_djvu.txt |archive-date=2019-04-20}}
|