home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / assemblr / library / sampler0 / ramade.doc < prev    next >
Text File  |  1987-01-13  |  9KB  |  246 lines

  1. :gdoc sec='IBM Internal Use Only'
  2. .rc 2 |
  3. :body
  4. :h1.RAMADE - Enable use of RAM in segments A, D and E
  5. :xmp
  6. .rc 1 on
  7. .rc 2 on
  8. .sx c |Version 1.21    ||      Cornell Wright|
  9. .sx c |1/12/87         ||   WRIGHT at PKEDVM8|
  10. .rc 2 off
  11. .rc 1 off
  12. :exmp
  13. :p.:hp3.WARNING - WARNING - WARNING - WARNING - WARNING:ehp3.
  14. .rc 1 on
  15. :ol
  16. :li.RAMADE is a program which has the potential for conflicting with
  17. the ROM and RAM addresses of existing and unannounced adapter cards.
  18. :li.RAMADE has had only limited use and testing.  Please
  19. read :hdref refid=prob. before using it.
  20. :li.Use it with care and at your own risk.
  21. :eol
  22. .rc 1 off
  23. :h2.Function
  24. :p
  25. This program enables the utilization of 192 k of RAM in
  26. addition to the 640 k normal maximum for a PC. The
  27. additional RAM must be installed at segment addresses A000,
  28. D000 and E000. The 64k of RAM in segment A is contiguous
  29. with the normal 640k and is used simply by extending the
  30. memory size above 640. The 128k in segments D and E is not
  31. contiguous with the rest of RAM.  It is used for loading
  32. various resident extensions, thus freeing up RAM in the main
  33. area (0-704k).
  34. :p
  35. See RAMCHIP QUERY on IBMPC for a discussion of methods for installing
  36. additional memory.
  37. .rc 1 on
  38. :h2.Changes
  39. :dl tsize=22
  40. .rc 2 on
  41. :dt.Ver 1.21 - 1/12/87
  42. :dd.Added save restore of segment register around DOS call to invoke
  43. secondary command processor.  This is to fix a problem under DOS 2.1.
  44. :p.Added code to modify the DOS memory allocation blocks so that DOS
  45. will "forget" about the memory above the contiguous area.
  46. This fixes the problem where Filecmd will not cancel because it thinks
  47. something is installed above it.
  48. :p.Added test for 0 length clear in address table.
  49. .rc 2 off
  50. :dt.Ver 1.10 - 11/05/85
  51. :dd.Placed constants for storage addresses in a table in the module
  52. as an interim approach to configurability.  This will facilitate
  53. patching the addresses.  See :hdref refid=zap. for more information.
  54. :dt.Ver 1.00 - 11/03/85
  55. :dd.First release.
  56. :edl
  57. .rc 1 off
  58. :h2.Description
  59. :p
  60. The memory size is set to the end of segment E by resetting
  61. the bios memory size and rebooting.  Storage in segments A,
  62. D and E is tested and cleared. Miscompares are detected,
  63. but no attempt is made to handle the more common case of
  64. parity checks during the test.
  65. :p
  66. Resident extensions are loaded in segments D and E by a
  67. secondary command processor which is invoked by RAMADE.
  68. After issuing a SETBLOCK function call to free the 128 K
  69. bytes in segments D and E, RAMADE invokes the secondary
  70. command processor with a command of 'AUTOLOAD'.  This should
  71. be a bat file which contains the commands to load the
  72. resident extensions.
  73. :p
  74. After loading the resident extensions, RAMADE issues other
  75. memory management function calls which leave segments B and
  76. C allocated and free up unused memory below segment B.
  77. :p
  78. In addition, the warm boot flag in low storage is reset.
  79. The system bios sets this flag when doing a ctl-alt-del
  80. reset, but never clears it, apparently relying on power
  81. dropping to clear the area.  (I've recently installed 256k
  82. chips on my system board, and after this installation,
  83. sometimes my system was warm booting when it should have
  84. been cold booting after turning the power off briefly.)
  85. :h2.Use
  86. :ol
  87. :li.Install 832 k of RAM in your PC as described above.
  88. :li.Create AUTOLOAD.BAT.  This should contain the commands
  89. to invoke the resident extensions you wish to load in segments
  90. D and E. (See sample below.)
  91. :li.Invoke RAMADE early in your AUTOEXEC.BAT.  (See sample
  92. below.)
  93. :eol
  94. :h4.Sample AUTOEXEC.BAT:
  95. :xmp
  96. echo off
  97. cls
  98. verify on
  99. cd \sys
  100. path c:\cmd;c:\dos31;
  101. ramade >nul
  102. keyin >nul
  103. pcutil sw cl
  104. pcutil sw cl
  105. copy graphic.fx prn >nul
  106. xtime
  107. echo  
  108. echo  
  109. iplmsg
  110. prompt $e[H$e[0;34;43m$p$e[K$e[;56H$t$h$h$h   $d$e[0m$e[25;H$e[33m══$e[36m
  111. ver
  112. cd \misc
  113. keyin [4]
  114. :exmp
  115. :h4.Sample AUTOLOAD.BAT:
  116. :xmp
  117. echo off
  118. cls
  119. fastk /s /f /p >nul
  120. *keyin >nul
  121. retrieve retrieve.pro >nul
  122. puff >nul
  123. spi 32 >nul
  124. print /d&gml.lpt1 >nul
  125. fspause off /tm&gml.on /tv&gml.5 >nul
  126. set ff=c:\global
  127. filefac /i /o /nc /nm >nul
  128. cls
  129. scrfix.exe
  130. pctermon.com >nul
  131. fc3 /q
  132. :exmp
  133. :h4.MEMMAP output from the above:
  134. :xmp
  135. Seg 07E6  M  Size 04E4  Owner 0008
  136. Seg 0CCB  M  Size 00C0  Owner 0CCB
  137. Seg 0D8C  M  Size 000A  Owner 0CCB
  138. Seg 0D97  M  Size 0004  Owner 0000
  139. Seg 0D9C  M  Size 0005  Owner 0DA9
  140. Seg 0DA2  M  Size 0006  Owner 0DA2
  141. Seg 0DA9  M  Size 0158  Owner 0DA9
  142. Seg 0F02  M  Size 000A  Owner 0F0D
  143. Seg 0F0D  M  Size A0F2  Owner 0F0D
  144. Seg B000  M  Size 2000  Owner 0DA2
  145. Seg D001  M  Size 00CB  Owner 0000
  146. Seg D0CD  M  Size 0005  Owner D0D3
  147. Seg D0D3  M  Size 002F  Owner D0D3
  148. Seg D103  M  Size 0005  Owner D109
  149. Seg D109  M  Size 026D  Owner D109
  150. Seg D377  M  Size 0005  Owner D37D
  151. Seg D37D  M  Size 0561  Owner D37D
  152. Seg D8DF  M  Size 0005  Owner D8E5
  153. Seg D8E5  M  Size 0840  Owner D8E5
  154. Seg E126  M  Size 0005  Owner E26C
  155. Seg E12C  M  Size 013F  Owner E12C
  156. Seg E26C  M  Size 0055  Owner E26C
  157. Seg E2C2  M  Size 0006  Owner E2C9
  158. Seg E2C9  M  Size 005E  Owner E2C9
  159. Seg E328  M  Size 0006  Owner E32F
  160. Seg E32F  M  Size 0011  Owner E32F
  161. Seg E341  M  Size 0006  Owner E348
  162. Seg E348  M  Size 0042  Owner E348
  163. Seg E38B  M  Size 0006  Owner E392
  164. Seg E392  M  Size 0850  Owner E392
  165. Seg EBE3  Z  Size 041D  Owner 0000
  166. :exmp
  167. :h2 id=prob.Cautions, Problems and Notes
  168. :p.This program is still somewhat experimental.  It has had limited
  169. use and testing.  Use it with caution, and let me know if you have any
  170. problems.
  171. :h4.Testing Environment
  172. :ul
  173. :li.PC/XT with 832k RAM
  174. :li.MicroScience 20 meg file and Western Digital controller
  175. :li.DOS 3.1
  176. :li.DOS extensions as listed in the sample installation
  177. :eul
  178. :h4.Known Problems
  179. :ol
  180. :li.When KEYIN is installed in the discontiguous area and is later
  181. invoked from the lower area, I get a 'GENERAL FAILURE' on the C drive.
  182. This could be related to my particular controller.  I now have KEYIN
  183. installed in the lower area.
  184. :li.Norton Utilities 'Unerase' function fails with 'Error 7'.  It appears
  185. to update the FAT, but not the directory.  I used DR to get out of trouble
  186. on this one.
  187. :li.MASM was failing with 'OUT OF MEMORY'.  I applied a patch from PROGRAM
  188. PATCHES on IBMPC and everything is fine.
  189. :eol
  190. .rc 1 on
  191. :h2 id=zap.Patching RAMADE to use Different Addresses
  192. :p
  193. The RAMADE.COM module contains a table of segment addresses and lengths.
  194. The existing values in the table support the addresses described in the rest
  195. of this document.  If your PC has a different adapter configuration which
  196. requires a different arrangement of RAM above 640 K, it may be possible
  197. to patch this table to configure RAMADE to your PC.
  198. :p
  199. RAMADE views RAM as consisting of a contiguous area which starts at 0 and
  200. a discontiguous area which starts above the end of the contiguous area (with
  201. some intervening gap).  There are values in the table to identify these areas.
  202. RAMADE also tests and clears 3 areas of RAM.  The starting addresses and
  203. lengths of these areas are also in the table.
  204. .rc 2 on
  205. If the length is set to 0000, clearing that area will be skipped.
  206. .rc 2 off
  207. :p
  208. .rc 2 on
  209. The table is at offset 3C8h in the com module.  It is immediately proceeded
  210. by the ASCII string 'ADDR TAB'.  The table contains 9 words:
  211. .rc 2 off
  212. :dl
  213. :dt.+00
  214. :dd.End of the contiguous area.  Paragraph address of the first byte after
  215. the contiguous area.  Default is b000h.
  216. :dt.+02
  217. :dd.Start of the discontiguous area.  Paragraph address of the first byte of
  218. the discontiguous area.  Default is d000h.
  219. :dt.+04
  220. :dd.End of the discontiguous area.  Paragraph address of the first byte after
  221. the discontiguous area.  Default is f000h.
  222. :dt.+06
  223. :dd.Start of the first area to test and clear.  Paragraph address of the first
  224. byte of the area.  Default is a000h.
  225. :dt.+08
  226. :dd.Length of the first area to test and clear.  Length in words.
  227. Default is 8000h.
  228. :dt.+0A
  229. :dd.Start of the second area to test and clear.  Paragraph address of the first
  230. byte of the area.  Default is d000h.
  231. :dt.+0C
  232. :dd.Length of the second area to test and clear.  Length in words.
  233. Default is 8000h.
  234. :dt.+0E
  235. :dd.Start of the third area to test and clear.  Paragraph address of the first
  236. byte of the area.  Default is e000h.
  237. :dt.+10
  238. :dd.Length of the third area to test and clear.  Length in words.
  239. Default is 8000h.
  240. :edl
  241. :p
  242. Remember that words are stored last-byte-first.  Thus b000 is stored as
  243. 00b0.  Got that ?
  244. .rc 1 off
  245. :egdoc
  246.