home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / cpm / debug / peekcpm.lbr / PK13.DQC / PK13.DOC
Text File  |  1985-10-06  |  5KB  |  108 lines

  1.                               PK.DOC
  2.                               ------
  3.                       Documentation for PK.COM 
  4.                   Version 1.2  (c) 07/84  E.Meyer
  5.  
  6.  
  7.         PK.COM is a handy PeeK and PoKe utility for CP/M.  Written
  8. in 8080 assembler, it takes only 1K of disk space.  It allows you
  9. to examine or change the contents of any location in RAM.  You can
  10. also read or send a byte to a hardware port.
  11.         Here is a brief summary of PK syntax ("[]" = optional):
  12.                    A>pk [b:]aaaa[+nn][=vv]
  13.                or  A>pk [b:]aaaa=vvvv....
  14.                or  A>pk #pp[=vv]
  15. Be careful to use only valid hex digits 0-f, and specify ALL digits,
  16. even leading 0's, to avoid unpredictable results.
  17.         The "b:" parameter in the above examples is used only on
  18. systems with banked memory; see NOTE below.
  19.  
  20.  
  21. I.  PEEK: Examine memory locations
  22.  
  23.         You can examine anything from a single byte to a full page
  24. (256 bytes) of memory.  There are two different formats:
  25.  
  26.     (1) To examine a single byte:   A>pk aaaa
  27.     (2) To examine many bytes:      A>pk aaaa+nn
  28.  
  29. Examples: PK 003B shows the value at address 003B.
  30.        PK 0600+4F shows all bytes from 0600 to 064F.
  31.  
  32. PK always displays the requested location(s) in hex and ASCII:
  33.  
  34.     A>pk 005d+07
  35.  
  36.     PK 1.2  - 07/84 -  E.Meyer
  37.  
  38.     005D:                               30 30 35             >005<
  39.     0060:  44 2B 30 37 20                           >D+07 <
  40.  
  41. Of course 005C is the address of CP/M's first FCB, so its contents
  42. were simply the argument we gave on the command line with PK.
  43.  
  44.  
  45. II.  POKE: Change memory locations
  46.  
  47.         PK also allows you to poke desired values into memory.
  48. There are three different formats for doing this.
  49.  
  50.     (1) To poke a single byte:  A>pk aaaa=vv
  51.     (2) To poke the same value
  52.               into many bytes:  A>pk aaaa+nn=vv
  53.     (3) To poke a series of up
  54.         to 16 different values:  A>pk aaaa=vvvv....
  55.  
  56. Examples: PK 309D=E5 pokes value E5 into address 309D.
  57.        PK 4000+07=00 pokes value 00 into addresses 4000-4007.
  58.         PK 0006=43FB pokes 43 into 0006 and FB into 0007.
  59.  
  60. The values that display on screen are the values just poked.
  61.  
  62.  
  63. III.  IN/OUT:  Communicate with hardware port
  64.  
  65.         PK also allows you to talk to hardware ports using the IN
  66. and OUT assembler commands.  To do this, the argument should begin
  67. with a number sign "#" and the port number, "pp".
  68.  
  69.      (1) To read a hardware port:  A>pk #pp
  70.      (2) To send a value to it:    A>pk #pp=vv
  71.  
  72. Examples: PK #0D reads the byte from port 0D.
  73.        PK #0C=E8 sends byte E8 to port 0C.
  74.  
  75. The port number and the value read or sent will be displayed.
  76.  
  77.  
  78.  
  79.      -------- NOTE ON BANKED MEMORY (CP/M PLUS ONLY) --------
  80.  
  81.       If you do not have banked memory (found in most implementations
  82. of CP/M 3.0), do not use the "b:" parameter.  If you intend to use it,
  83. be sure to install your machine's bank control port number with SID
  84. at location 0103 in PK.COM.  The default is 00, for an Osborne Executive.
  85. The "b:" parameter may not work on your machine if its bank selection
  86. protocols are different.  When PK sees a "7:" before the address "aaaa"
  87. on the command line, for example, it sends the byte 01000000 to the
  88. control port, enabling bank 7 (as well as 0 of course) before operating
  89. on memory.  The original bank configuration is restored on exit.  
  90.         The default bank is "1:", the TPA.  Accessing other banks can
  91. be hazardous.  Often they are "reserved" for system use.  Sometimes the
  92. same addresses can refer to different entities on reading and writing.
  93. If you use an address that doesn't exist in the specified bank, you will
  94. be operating on bank 0.  Review your machine's manual carefully.
  95.         PK has to use an odd trick to switch banks, in order to avoid
  96. losing itself, since switching banks disables bank 1, which is where
  97. PK itself resides.  The BDOS, though, is usually visible under any bank
  98. selection, as is a small amount of RAM just below it.  PK.COM puts a
  99. little piece of itself (about 20 bytes) up in high memory, just under
  100. the BDOS, on the assumption that it won't get wiped out by the bank
  101. switch.  This should work, unless so many RSXs are present that PK can't
  102. get itself high enough.  For example, it will work on my Executive
  103. unless there are more than two pages of RSXs in memory.  If you find
  104. that PK crashes when you try to access another bank, and you don't have
  105. RSXs that you could remove, it's a sign that this trick isn't working
  106. on your machine, and you just won't be able to reach that bank.
  107.  you could remove, it's a sign that this trick isn't working
  108. on your machine, and you just won't be able to