home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / kaypro / kpmovcpm.doc < prev    next >
Text File  |  1994-07-13  |  10KB  |  200 lines

  1. TITLE:    KPMOVCPM.DOC
  2. SUBJECT:  Making MOVCPM work on a Kaypro 1
  3. AUTHOR:   Barry Siegfried
  4. DATE:     April 21, 1986
  5.  
  6. I am a big fan of software that works, particularly when it is soft-
  7. ware that is supplied by the company that manufactures my computer.
  8. I recently purchased a Kaypro 1 with the 2.2u1 Universal ROM in it.
  9. This ROM, in addition to having made other enhancements to the basic
  10. 8-bit Kaypro CP/M machine, contains much of the working BIOS object
  11. code which has served to drastically reduce the amount of disk-based
  12. BIOS object code in the 2.2u1 CP/M system.
  13.  
  14. The good news here is that there is much more space up in high memory
  15. where you can make patches to your system than there was with previous
  16. Kaypro CP/M BIOSs and ROMs.  This is very valuable to anyone that
  17. hacks extensively with his operating system, such as I do to get pack-
  18. ages like full implementations of ZCPR3 running.
  19.  
  20. The bad news is that much of the code that you would expect to find in
  21. the disk-based BIOS running up in high memory is simply not there, be-
  22. cause it has been relocated to the ROM.  Every time the BIOS is called
  23. to perform I/O, the code up in high memory acts primarily like a traf-
  24. fic director, which bank-switches in the Universal ROM to perform the
  25. real low-level BIOS I/O functions.  This can initially be very confus-
  26. ing to the experienced BIOS hacker, however, after you work with this
  27. configuration for a while, you can and do get used to it.
  28.  
  29. Kaypro provided, on the System Disk that came with the Kaypro 1, a
  30. copy of MOVCPM.COM, which is a utility program by Digital Research
  31. that serves to relocate your CP/M system to a new address.  This is a
  32. valuable capability, because it permits you to move your CP/M system
  33. down, thereby lowering your TPA, but creating free space up above your
  34. BIOS so that you can load and run programs that won't get crashed by
  35. activities in the TPA.  This is excellent for I/O redirection programs
  36. such as BYE, or any other I/O redirection package which might patch
  37. your BIOS and that you wish to have "memory-resident" all the time.
  38.  
  39. Another useful aspect of CP/M system relocation is that it permits you
  40. to install the external support packages of a fully-implemented ZCPR3
  41. system up in high memory above the BIOS where they will be "memory-
  42. resident" all the time and not be in danger of getting crashed by ap-
  43. plication programs.  It was for this reason that I set about to use
  44. MOVCPM.COM to relocate my CP/M system.
  45.  
  46. I quickly found out however that after using MOVCPM to relocate my
  47. CP/M system, and then using SYSGEN to write a new system disk, this
  48. new disk was not bootable, that is, the cold boot sequence was inter-
  49. rupted with a message from the Universal ROM that told me I had no op-
  50. erating system present on my disk.  I thought it a little odd that
  51. Kaypro would provide a program on its System Disk that did not appear
  52. to function properly, particularly one as important as MOVCPM.  I de-
  53. cided then to do a little snooping around on the system tracks of my
  54. disks with DU.COM to see if I could locate the source of the problem.
  55.  
  56. It didn't take long for me to spot the problem.  I discovered on Track
  57. 0, Sector 1, two "mystery bytes" in the last two positions of the sec-
  58. tor.  They represented two 8-bit values (or one 16-bit value) that ap-
  59. parently were specific only for the 62K system that came with the mac-
  60. hine.  Those same bytes, when added to the same positions in Track 0,
  61. Sector 1 of my newly relocated CP/M system disk did not remedy the
  62. problem.  It was obvious that these two bytes bore some kind of rela-
  63. tionship to the data in the rest of the sector, but what that rela-
  64. tionship was was not immediately apparent.  It was also obvious, that
  65. MOVCPM apparently had not been updated to place the proper byte values
  66. in these two positions to compensate for the checking that was now be-
  67. ing done by the Universal ROM.  I decided that it was time to call
  68. Kaypro's software support people.
  69.  
  70. Kaypro, unfortunately, was just a little less than being no help at
  71. all.  In fact, I was a bit surprised to find that the people to whom I
  72. was talking were having a hard time understanding exactly what I was
  73. talking about.  They attempted to tell me that in order to do any BIOS
  74. patching, or revise the BIOS in any way, I needed to purchase their
  75. "toolkit."  I gently informed them that I had all the tools I could
  76. ever possibly need, and that revising the BIOS was not what I was
  77. talking about.  I was talking about a new ROM that was now getting in
  78. the way of MOVCPM.COM performing its function completely.  I didn't
  79. want a "toolkit," I wanted the algorithm to solve the problem.  I
  80. pointed out to them that if they had not wanted the user to have the
  81. capability of relocating CP/M, then they should not have included
  82. MOVCPM.COM on the System Disk.  I have a real problem with companies
  83. who provide commercial software that doesn't work.  Needless to say,
  84. I did not get very far with them and we parted company.
  85.  
  86. I told this story to a friend and member of our small users' group,
  87. who passed it on to our dealer.  Our dealer had been very helpful with
  88. getting some other hardware-related problems resolved, and my friend
  89. thought that perhaps he might be able to look into this situation with
  90. MOVCPM, and get us an answer about it.  The result was that an East
  91. Coast representative of Kaypro called my friend and discussed the
  92. problem with him, and while he did not fully understand and had not
  93. heard of the problem before, he promised to look into it.  This led to
  94. a telephone call from the programmer who wrote the code for the Uni-
  95. versal ROM and the 2.2u1 BIOS to my friend.  The programmer told him
  96. that he was aware of the "mystery bytes" and that yes, they would in-
  97. deed get in the way of MOVCPM providing a new bootable system, but that
  98. he would not divulge the algorithm of the bytes' values.  It appeared
  99. again that Kaypro was not willing support a program which THEY provided
  100. and should have worked in the first place.
  101.  
  102. I decided, therefore, to take action on my own because frankly, I was
  103. a bit disturbed at Kaypro's attitude toward all of this.  My procedure
  104. was to get the Universal ROM object code into a disk file, and then de-
  105. bug the routine that outputs the error message to the machine.  I offer
  106. below, a patch that you can make to the version of MOVCPM.COM that came
  107. bundled with the Kaypro 1, which will calculate the proper values for
  108. those two "mystery bytes," and will store them at the proper location
  109. in your newly relocated CP/M system image:
  110.  
  111. 1. Load MOVCPM.COM into DDT (or ZDT):
  112.  
  113.    A0>DDT MOVCPM.COM
  114.    DDT VERS 2.2
  115.    NEXT  PC
  116.    2500 0100
  117.    -
  118.  
  119. 2. Check and patch the exit JMP at the following address:
  120.  
  121.    -S033D
  122.    033D C3 C3  (JMP)
  123.    033E 00 A0  (03A0 address of checksum routine)
  124.    033F 00 03
  125.    0340 0D .
  126.    -
  127.  
  128.    IMPORTANT:  Make sure you have C3 00 00 in the above 3 bytes
  129.    beginning at 033D before you go any further.  If you do not,
  130.    then it would appear that you do not have the same version of
  131.    MOVCPM.COM that was supplied with the Kaypro 1.
  132.  
  133. 3. Create the routine which calculates the proper value of the
  134.    checksum bytes:
  135.  
  136.    -S03A0
  137.    03A0 00 21   (LXI H)
  138.    03A1 00 00   (0900 address from which to start summing)
  139.    03A2 00 09
  140.    03A3 00 01   (LXI B)
  141.    03A4 00 7E   (007E bytes to sum)
  142.    03A5 00 00
  143.    03A6 00 DD   (LXIX)
  144.    03A7 00 21
  145.    03A8 00 00   (0000 to initialize the summing register)
  146.    03A9 00 00
  147.    03AA 00 16   (MVI D)
  148.    03AB 00 00   (00)
  149.    03AC 00 5E   (MOV E,M)
  150.    03AD 00 DD   (DADX D)
  151.    03AE 00 19
  152.    03AF 00 23   (INX H)
  153.    03B0 00 0B   (DCX B)
  154.    03B1 00 78   (MOV A,B)
  155.    03B2 00 B1   (ORA C)
  156.    03B3 00 20   (JRNZ)
  157.    03B4 00 F7   (to 03AC)
  158.    03B5 00 DD   (PUSH X)
  159.    03B6 00 E5
  160.    03B7 00 E1   (POP H)
  161.    03B8 00 22   (SHLD)
  162.    03B9 00 7E   (097E address to store checksum)
  163.    03BA 00 09
  164.    03BB 00 C3   (JMP)
  165.    03BC 00 00   (0000 to exit)
  166.    03BD 00 00
  167.    03BE 00 .
  168.    -
  169.  
  170.    IMPORTANT:  Make sure you have zeros in all the above bytes
  171.    beginning at 03A0 before you go any further.  If you do not,
  172.    then it would appear that you do not have the same version of
  173.    MOVCPM.COM that was supplied with the Kaypro 1.
  174.  
  175. 4. Exit DDT (or ZDT) and save patched MOVCPM.COM:
  176.  
  177.    -G0  (return to CP/M)
  178.    A0>SAVE 41 MOVCPM.COM
  179.  
  180. Your newly SAVEd MOVCPM.COM will now execute properly and cause SYSGEN
  181. to write bootable disks with the Universal ROM.  It is really a shame
  182. that Kaypro did not come to the aid of their customers on a program as
  183. important as this.  This is a capability that you, as a Kaypro 1 owner,
  184. have the right to have because you, as a Kaypro 1 owner, were supplied
  185. with MOVCPM.COM by Kaypro.  To my mind, this program should have work-
  186. ed from the start, and, since it did not, there is absolutely no ex-
  187. cuse for Kaypro refusing to support it.
  188.  
  189. For those of you who might be interested in implementing ZCPR3 and its
  190. support packages in high memory above the BIOS, instead of low memory
  191. below the CPR where a BIOS warm boot patch is required to fake up the
  192. BDOS entry address in order to fool application programs into protect-
  193. ing this space below the CPR, watch for an installation file shortly.
  194. This author has installed a fully implemented ZCPR3 system on the Kay-
  195. pro 1 using both methods, and the one involving use of MOVCPM to relo-
  196. cate the CP/M system is by far the preferred one.
  197.  
  198.  
  199. End of KPMOVCPM.DOC
  200.