home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / lambda / soundpot / p / safram.lbr / SAFRAM.DZC / SAFRAM.DOC
Encoding:
Text File  |  1993-10-25  |  7.0 KB  |  196 lines

  1. *    safram.doc            Roy Lipscomb
  2. *    version 1.0            Aug 1, 1982
  3. *
  4. *    Secures CCP and relocated modules against destruction until
  5. *    system reset.  Operates as is with any standard CP/M-80.
  6. *
  7. *    Copyright 1982 by Roy Lipscomb, Logic Associates, Chicago
  8. *    Copying permitted only for non-commercial/non-profit uses.
  9. *
  10. *    Original distributor:  HP/RCPM, (312) 955-4493
  11. *
  12. *
  13. ********************************************************************
  14. *
  15. * FUNCTION
  16. *
  17. *    SAFRAM creates a safe zone or partition below BDOS in which
  18. *    the CCP and trap modules can reside without fear of being
  19. *    overwritten by transient programs.  The protection lasts until
  20. *    the system is reset.
  21. *
  22. *    SAFRAM makes it possible to load any module below the CCP that
  23. *    previously had to be loaded above CP/M to be secure against
  24. *    warm boots.  Thus, one-size CP/M can now be used with utilities
  25. *    like IOCAP or self-installing drivers for hard disks.
  26. *
  27. *    SAFRAM also makes it possible to create BDOS and/or BIOS
  28. *    extensions without actually installing them in the BDOS and/or
  29. *    BIOS.  This allows them to be RAM-resident only when they are
  30. *    needed.  It also makes possible extensions that are too long
  31. *    to include in the allotted BIOS space on disk.
  32. *
  33. *    Installed, the SAFRAM module occupies less that 128 bytes of
  34. *    RAM.  Each additional execution of SAFRAM will add another
  35. *    3 bytes of overhead.  The CCP (2K) will also be resident
  36. *    whenever SAFRAM has been installed.
  37. *
  38. ********************************************************************
  39. *
  40. * BACKGROUND
  41. *
  42. *    Various utility modules or "traps" install themselves
  43. *    just below the CCP before they begin operation.  This
  44. *    allows other programs to load and execute normally,
  45. *    without overlaying and disrupting operation of the traps.
  46. *
  47. *    Essential to this technique is changing location boot+6
  48. *    to point to the start of the trap.  This is necessary because
  49. *    boot+6 tells the next program what the upper end of the
  50. *    available work space is.
  51. *
  52. *    This technique has been hobbled by the fact that warmboot
  53. *    alters the boot+6 address back to its original coldboot
  54. *    value.  This strips away the module's protection.
  55. *
  56. *    SAFRAM operates by making the address at boot+6 "permanent."
  57. *
  58. ********************************************************************
  59. *
  60. * THEORY OF OPERATION
  61. *
  62. *    In its simplest terms, SAFRAM operates by patching two traps
  63. *    into the BIOS jump table.  The "WARMBOOT" trap sets a flag
  64. *    indicating that a warmboot has been requested, and then
  65. *    jumps to the normal warmboot routine.  The "CONSOLE OUT"
  66. *    trap checks the warmboot flag.  If the flag is set, this trap
  67. *    resets the flag, and restores boot+6 to the way it was just
  68. *    before the last warmboot.  Whether the flag was set or not,
  69. *    this trap finishes by jumping to the normal CONOUT routine.
  70. *
  71. *    Operation of these traps is disrupted only by pressing reset.
  72. *
  73. *    At installation, the SAFRAM trap module relocates itself to
  74. *    just below the CCP (or the currently protected address), and
  75. *    creates the "safe ram" partition around itself.
  76. *
  77. *    SAFRAM will not install if the CCP is not resident and intact.
  78. *    This is to avert any address contention between the CCP and
  79. *    resident traps.  It is recommended that SAFRAM be executed
  80. *    prior to installing any other traps, thus insuring that
  81. *    that the CCP is protected and secured.
  82. *
  83. *    Once SAFRAM is executed, any number of self-relocating
  84. *    utilities may be installed normally.  Simply follow up each
  85. *    installation with an fresh execution of SAFRAM
  86. *    (without pressing the reset button, of course).  SAFRAM
  87. *    will reuse the resident copy of the SAFRAM trap module, rather
  88. *    than create a new copy.
  89. *
  90. *    SAFRAM has two modes of execution.  Executed without param-
  91. *    eters, it will secure the current address in location boot+6
  92. *    (or secure the CCP if boot+6 points higher than the CCP start).
  93. *    Executed with a hex address as its parameter, it will secure
  94. *    that explicit address instead.  Examples:
  95. *
  96. *        Implicit mode:            A>SAFRAM
  97.  
  98. *        Explicit mode:            A>SAFRAM A000
  99. *
  100. *
  101. ********************************************************************
  102. *
  103. * ASSEMBLING
  104. *
  105. *    This source uses the LINK pseudo-operation featured in
  106. *    Ward Christensen's LASM.COM (available on RCPM's) and
  107. *    its predecessor LINKASM.COM (available from CPM Users
  108. *    Group as 36.11 and 36.12).  This feature is used here to
  109. *    link SAFRAM.ASM to itself, and thus introduce two
  110. *    (partial) copies to the assembler.  The two copies are used
  111. *    by the resultant SAFRAM.COM to produce a relocatable module.
  112. *
  113. *    If neither of the above assemblers is available, this
  114. *    source can be assembled in a more roundabout fashion.
  115. *
  116. *    First, delete these three statements from the end of
  117. *    SAFRAM.ASM:
  118. *
  119. *        if not copy1
  120. *        link safram
  121. *        endif
  122. *
  123. *    Next, execute the following commands:
  124. *
  125. *        PIP  SAFRAM2.ASM=SAFRAM.ASM,SAFRAM.ASM
  126. *        ASM  SAFRAM2      (using any standard assembler)
  127. *        LOAD SAFRAM2
  128. *
  129. *    You should now use SAFRAM2 instead of SAFRAM.
  130. *
  131. ********************************************************************
  132. *
  133. * CUSTOMIZING
  134. *
  135. *    Customizing of SAFRAM.ASM is accomplished through several
  136. *    variables:
  137. *
  138. *    VARIABLE        VALUE
  139. *    --------        -----
  140. *
  141. *    BOOT            0 for standard CP/M
  142. *
  143. *    NOTIFY            "yes" for notification of what is
  144. *                the currently secured address.
  145. *                (Displayed at each warmboot.)
  146. *
  147. *    HOTBOOT            0 if not active.  Otherwise gives
  148. *                displacement from start of bios to
  149. *                the first instruction after the end
  150. *                of the CCP/BDOS/BIOS-loading code.
  151. *
  152. *                Used to bypass unnecessary reloading
  153. *                of the CCP and BDOS, which are saved
  154. *                by SAFRAM from being overlaid (with 99%
  155. *                assurance:  somewhere there may be
  156. *                some unlikely program that ignores
  157. *                location boot+6).
  158. *
  159. *    (See document SAFRAM.H for more information on HOTBOOT.)
  160. *
  161. ********************************************************************
  162. *
  163. * APPLICATION NOTES
  164. *
  165. *   []  Self-relocating utility modules that will be protected by
  166. *    SAFRAM should insure that they are not overlaying the CCP.
  167. *
  168. *   []  When securing a module that does not protect itself by changing
  169. *    location boot+6, you should use the explicit-address mode
  170. *    of SAFRAM.  (See THEORY OF OPERATION above.)
  171. *
  172. *   []  There is no option to individually "de-secure" a module.  The
  173. *    only way to nullify security is to press the reset button.
  174. *    The de-securing option was deemed infeasible, since there is
  175. *    no simple way to keep track of what patches may have been
  176. *    intalled by any given trap module, so that they could be
  177. *    reversed if the module were de-secured.
  178. *
  179. *   []  To inspect the CCP using DDT (which normally overlays the CCP),
  180. *    execute SAFRAM before invoking DDT.  The CCP will be intact
  181. *    after DDT has been loaded.
  182. *
  183. *   []  It is sometimes desirable to secure DDT (for instance, for
  184. *    use with BACK2DDT, available on RCPM's).  Use this procedure:
  185. *
  186. *        SAFRAM            (to secure the CCP)
  187. *        DDT SAFRAM.COM
  188. *        -G            (to secure DDT itself)
  189. *
  190. *        (DDT may now be used in the normal fashion.)
  191. *
  192. *
  193. *                                (end)
  194. 
  195. *        DDT SAFRAM.COM
  196. *        -G            (to