home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / simtel / sigm / vols000 / vol054 / zcpr.ws < prev   
Encoding:
Text File  |  1985-02-10  |  39.5 KB  |  989 lines

  1. .po 2
  2. .he            ZCPR - A Z80 Replacement for the CP/M CCP
  3. .fo                                               Page #
  4.  
  5.  
  6.  
  7.  
  8.    Documentation on ZCPR - A Z80 Replacement for the CP/M CCP
  9.  
  10.  
  11.  
  12.  
  13.             ZCPR is a Group Project By the CCP-GROUP:
  14.           RLC - Richard Conn            FJW - Frank Wancho
  15.           KBP - Keith Peterson          RGF - Ron Fowler
  16.  
  17.  
  18.                     ZCPR Documentation By RLC
  19.  
  20.  
  21.  
  22.  
  23.  
  24.  
  25.  
  26.                         Table of Contents
  27.                         ----- -- --------
  28.  
  29.      Introduction                                       2
  30.  
  31.      Part A: Installation Instructions                  4
  32.           ZCPR Integration Example                      5
  33.           Setting the ZCPR Inline Options               8
  34.             REL, BASE, CPRLOC, RAS, SUBA, CLEVEL3       8
  35.           Customization Symbols                         8
  36.             NLINES, WIDE, PGDFLT                        8
  37.             PGDFLG, MAXUSR, SYSFLG, SOFLG, SUPRES,
  38.               DEFUSR, SPRMPT, CPRMPT, NUMBASE,          9
  39.               SECTFLG, FENCE                           10
  40.           Patching SUBMIT.COM                          10
  41.  
  42.      Part B: Usage Instructions and Explanation of
  43.              Commands                                  11
  44.           The ZCPR Command Hierarchy Search            11
  45.           The ZCPR-Resident Commands                   14
  46.             DIR, ERA                                   14
  47.             LIST, TYPE, SAVE                           15
  48.             REN, USER, DFU                             16
  49.             JUMP, GO, GET                              17
  50.           ZCPR Error Messages                          18
  51.  
  52.      Part C: ZCPR Command Levels and How to Use Them   19
  53.  
  54.  
  55.    Documentation on ZCPR - A Z80 Replacement for the CP/M CCP
  56.  
  57.  
  58.  
  59.  
  60.      ZCPR i≤ ß replacemen⌠ fo≥ thσ CP/═ Consolσ CommanΣ Processo≥ ì
  61. (CCP⌐á whicΦá i≤á designeΣ t∩ ruε a≤ par⌠ oµá CP/═á oεá Z80-baseΣ ì
  62. microcomputers«á  Iε mos⌠ case≤ i⌠ i≤ upward-compatible witΦá thσ ì
  63. origina∞ CP/═ Versioε 2.▓ CCP.
  64.  
  65.      ZCPR¼á however¼á provide≤á man∙ extension≤ t∩ thσ CP/═á CCP«  ì
  66. IncludeΣ iε thesσ extension≤ arσ thσ followinτ features:
  67.  
  68.           « Thσ TYP┼ functioε caε bσ madσ t∩ pagσ o≥ no⌠ pagσ it≤ ì
  69. outpu⌠ a⌠ thσ user'≤ discretion
  70.  
  71.           «á ┴ LIS╘ functioε i≤ availablσ whicΦ send≤ it≤á outpu⌠ ì
  72. t∩ thσ CP/═ LST║ Devicσ anΣ doe≤ NO╘ page
  73.  
  74.           «á Thσá DI╥ commanΣ ha≤ beeε extendeΣ t∩ allo≈ thσ disì
  75. pla∙ oµ thσ systeφ file≤ o≥ al∞ files
  76.  
  77.           « Thσ ER┴ commanΣ no≈ print≤ ou⌠ thσ name≤ oµ thσ file≤ ì
  78. i⌠ i≤ erasing
  79.  
  80.           «á Thσá curren⌠ use≥ numbe≥ ma∙ bσ includeΣ a≤ par⌠á oµ ì
  81. thσ commanΣ prompt╗á iµ thσ use≥ i≤ unde≥ ß numbe≥ othe≥ thaεá 0¼ ì
  82. thσ promp⌠ i≤ oµ thσ forφ 'du>º (likσ 'A2>º o≥ 'B10>')¼á and¼á iµ ì
  83. thσá use≥ i≤ unde≥ 0¼á thσ promp⌠ ma∙ bσ 'd>º o≥ 'd0>º a≤ pe≥ hi≤ ì
  84. choice
  85.  
  86.           «á Thσá SUBMI╘ facilit∙ ha≤ beeε changeΣ iεá tw∩á basiπ ì
  87. ways:
  88.                - thσá promp⌠á change≤ t∩ 'du$º o≥ 'd$ºá wheεá thσ ì
  89. SUBMI╘ commanΣ i≤ printed
  90.                - thσ $$$.SU┬ i≤ executeΣ froφ drivσ A║ (notσ tha⌠ ì
  91. thσá origina∞á SUBMI╘á probleφ no≈ exists¼á bu⌠ thσá ne≈á SUB.CO═ ì
  92. facilit∙á correct≤ it)╗á thσ CCP-GROU╨ definitioε oµ aεá Indirec⌠ ì
  93. CommanΣá Filσá no≈á applies¼á anΣ thi≤á definitioεá i≤á tha⌠á an∙ ì
  94. sequencσ oµ command≤ whicΦ ma∙ bσ issueΣ froφ thσ consolσ i≤ als∩ ì
  95. ßá valiΣá sequencσá oµ command≤ fo≥ executioεá froφá aεá Indirec⌠ ì
  96. Command File; hence, the sequence:
  97.  
  98.                     DIR
  99.                     B:
  100.                     DIR
  101.                     A:
  102.  
  103. ma∙á bσá issueΣá froφ eithe≥ thσ consolσ o≥ aεá Indirec⌠á CommanΣ ì
  104. File¼á anΣ thσ result≤ oµ thσ executioε oµ thi≤ sequencσ arσá thσ ì
  105. same«á  Basically¼á thi≤á say≤á tha⌠ Indirec⌠ CommanΣá File≤á arσ ì
  106. upward-compatiblσá t∩ thσ consolσ inpu⌠ (bu⌠ no⌠ necessaril∙ tha⌠ ì
  107. thσá content≤á oµ aε Indirec⌠ CommanΣ Filσ ma∙ bσ issueΣá a⌠á thσ ì
  108. consolσ withou⌠ modification).è
  109.           «á ┴ command-searcΦ hierarch∙ i≤ no≈ implementeΣá whicΦ ì
  110. i≤ executeΣ roughl∙ a≤ follows:
  111.                - thσá user'≤ commanΣ i≤ checkeΣ agains⌠ thσá CPR-ì
  112. residen⌠ command≤ anΣ executeΣ immediatel∙ iµ ß matcΦ i≤ found
  113.                - failinτá that¼á thσá curren⌠ use≥ numbe≥ oεá thσ ì
  114. curren⌠ disδ i≤ scanneΣ fo≥ thσ CO═ file╗á thσ CO═ filσ i≤ loadeΣ ì
  115. anΣ executeΣ iµ found
  116.                - failinτ that¼ ß defaul⌠ use≥ numbe≥ (initiall∙ ░ ì
  117. bu⌠á caε bσ rese⌠ witΦ thσ DF╒ CPR-residen⌠ command⌐ oε thσá curì
  118. ren⌠ disδ i≤ scanneΣ fo≥ thσ CO═ file╗ thσ CO═ filσ i≤ loadeΣ anΣ ì
  119. executeΣ iµ found
  120.                - finally¼á failinτ that¼á thσ defaul⌠ use≥ numbe≥ ì
  121. oε disδ A║á i≤ scanneΣ fo≥ thσ CO═ file╗á thσ CO═ filσ i≤á loadeΣ ì
  122. anΣ executeΣ iµ founΣ o≥ aε erro≥ messagσ (COMMAND?¼ wheε COMMAN─ ì
  123. wa≤ thσ user'≤ commanΣ name⌐ i≤ printed
  124.  
  125.           «á  Thσá numeriπá argumen⌠ fo≥ thσ SAV┼ commanΣ caεá bσ ì
  126. specifieΣá iε hexadecima∞ s∩ tha⌠ thσ use≥ ma∙ emplo∙ thσá value≤ ì
  127. presented by tools such as DDT exactly as they are given
  128.  
  129.           «á ┴á GE╘á commanΣ whicΦ load≤ ß filσá a⌠á ßá specifieΣ ì
  130. memor∙ addres≤ anΣ ß JUM╨ commanΣ whicΦ "callsó thσ subroutinσ a⌠ ì
  131. ßá specifieΣ memor∙ addres≤ havσ beeε added╗á ß G╧ commanΣá whicΦ ì
  132. "callsóá thσá subroutinσ a⌠ 100╚ (subse⌠ oµ thσ JUM╨á capability⌐ ì
  133. has also been added
  134.  
  135.  
  136.      Thi≤á documen⌠ provide≤ thσ use≥ oµ ZCPR witΦ thσá followinτ ì
  137. information:
  138.  
  139.           Part A:  Installation Instructions
  140.           Part B:  Usage Instructions and Explanation of Commands
  141.           Part C:  ZCPR Command Levels and How to Use Them
  142.  
  143.  
  144.                              Part A
  145.                     Installation Instructions
  146.  
  147.      Iεá orde≥ t∩ instal∞ ZCPR oε ß targe⌠ microcompute≥ (mus⌠ bσ ì
  148. currently running CP/M 2.2), the user must know two basic things:
  149.  
  150.           1)  Where his CCP is currently running in memory
  151.           2⌐á Wherσ hi≤ CC╨ i≤ locateΣ iε thσ SYSGE╬á image¼á or¼ ì
  152. fo≥ system≤ whicΦ don'⌠ suppor⌠ SYSGE╬ (sucΦ a≤ P&╘ CP/═ 2.▓á fo≥ ì
  153. thσ TRS-8░ Mode∞ II)¼ wherσ hi≤ CC╨ i≤ locateΣ oε disδ anΣ ho≈ t∩ ì
  154. place the new ZCPR on top of it
  155.  
  156.      Thσá firs⌠ questioε i≤ answereΣ relativel∙ easily«á  ┴á proì
  157. gram¼á knowεá a≤ eithe≥ BDOSLO├ o≥ BDLO├ (fo≥ BDO╙á Locator)¼á i≤ ì
  158. provideΣá witΦ ZCPR«á  Yo⌡ shoulΣ assemblσ thi≤ prograφ fo≥á you≥ ì
  159. particula≥á compute≥ (changσ thσ basσ OR╟ iµ yo⌡ arσ runninτ non-ì
  160. ORG-░ CP/M⌐ anΣ executσ it«á  Upoε execution¼ i⌠ wil∞ providσ yo⌡ ì
  161. witΦá thσ basσ addres≤ oµ (1⌐ thσ BDO╙ anΣ (2⌐ thσ CC╨á fo≥á you≥ ì
  162. particula≥ system«á  BDOSLO├ ha≤ workeΣ correctl∙ fo≥ al∞ system≤ ì
  163. testeΣ s∩ far¼á bu⌠ therσ i≤ alway≤ ß chancσ tha⌠ i⌠ ma∙ NO╘ worδ ì
  164. fo≥ somσ non-testeΣ system«á  Fo≥ thσ timσ being¼á assumσ tha⌠ i⌠ ì
  165. work≤ correctl∙ anΣ recorΣ thσ startinτ basσ pagσ addres≤ oµ you≥ ì
  166. CCP.
  167.  
  168.      Thσá seconΣ questioε i≤ no⌠ answereΣ nearl∙ s∩á easily«á  Iµ ì
  169. yo⌡á havσá thσ abilit∙ t∩ SYSGE╬ you≥ system¼á i⌠ i≤ mucΦá easie≥ ì
  170. (commonly⌐ thaε iµ yo⌡ d∩ not«á  Yo⌡ must¼á afte≥ assemblinτá thσ ì
  171. ZCPRá properly¼á integratσ i⌠ int∩ thσ sysgeε (o≥ disk⌐ imagσá oµ ì
  172. CP/M«á  Thi≤á caεá bσá donσ b∙ obtaininτ ß SYSGE╬ imagσá oµá you≥ ì
  173. system¼ scanninτ i⌠ viß ß debugge≥ sucΦ a≤ DD╘ t∩ finΣ thσ offse⌠ ì
  174. fo≥ thσ CCP¼á readinτ thσ ne≈ CPR iε oε to≡ oµ thσ olΣá one¼á anΣ ì
  175. finall∙á runninτá SYSGE╬ agaiε t∩ placσ thσ resultan⌠á systeφá oε ì
  176. disk«á  Iµá yo⌡á D╧ NO╘ havσ SYSGE╬ capability¼á ßá Disδá Utilit∙ ì
  177. prograφá i≤ requireΣ t∩ locatσ thσ CC╨ oε disδ anΣ theε writσ thσ ì
  178. ne≈á ZCPRá oεá to≡á oµ thσ olΣá one«á  Thσá ne⌠á resul⌠á oµá thi≤ ì
  179. integratioεá i≤á thσ placemen⌠ oµ thσ ne≈ ZCPR ont∩ disδá iεá thσ ì
  180. prope≥á placσ s∩ tha⌠ i⌠ wil∞ bσ loadeΣ witΦ thσ res⌠ oµ CP/═á oε ì
  181. colΣ boo⌠ anΣ executeΣ properly.
  182.      T∩ finΣ thσ origina∞ CCP¼ yo⌡ typicall∙ havσ t∩ locatσ i⌠ b∙ ì
  183. it≤ appearance«á  I⌠ i≤ probabl∙ storeΣ contiguousl∙ oε disk¼ so¼ ì
  184. oncσ i⌠ i≤ found¼ ß sequentia∞ overwritσ i≤ al∞ tha⌠ i≤ required«  ì
  185. Probabilit∙á i≤ extremel∙ higΦ tha⌠ i⌠ i≤ storeΣ contiguousl∙á iε ì
  186. thσ SYSGE╬ image«á  Thσ CC╨ start≤ witΦ tw∩ (2⌐ anΣ ONL┘ TW╧ jum≡ ì
  187. instruction≤á followeΣá b∙ ß buffe≥ areß (possibl∙ containinτá aε ì
  188. initia∞á commanΣ and/o≥ thσ Digita∞ ResearcΦá copyrigh⌠á notice)«  ì
  189. Thσá Digita∞á ResearcΦ manual≤ sho≈ thσ CC╨ t∩ residσ a⌠á addres≤ ì
  190. 980╚á iε thσ SYSGE╬ image¼á bu⌠ thi≤ ma∙ var∙á witΦá system«á  T∩ ì
  191. finΣá thi≤ image¼á usσ DD╘ o≥ somσ othe≥ sucΦ debugger¼á loaΣ thσ ì
  192. SYSGE╬ imagσ yo⌡ caε ge⌠ viß SYSGEN¼á anΣ examinσ memor∙ startinτ ì
  193. a⌠ arounΣ 900╚ fo≥ thσ tw∩ (anΣ ONL┘ two⌐ jump≤ describeΣá above«  ì
  194. Iµá yo⌡ finΣ aε areß witΦ morσ thaε tw∩ jump≤ (ß grou≡ oµá them)¼ ì
  195. yo⌡á arσ probabl∙ lookinτ a⌠ thσ BIO╙ anΣ shoulΣ g∩ lowe≥ fo≥ thσ ì
  196. CCP«á  Thσá CC╨ wil∞ probabl∙ star⌠ oε aε eveε pagσ o≥á half-pagσ ì
  197. address (like 900H, 980H, 1100H, etc).è
  198.      No≈ tha⌠ thσ locatioε oµ thσ CC╨ ha≤ beeε found¼ recorΣ thi≤ ì
  199. addres≤ fo≥ later«  Yo⌡ arσ no≈ read∙ fo≥ thσ integratioε oµ ZCPR ì
  200. int∩ you≥ system«á  T∩ d∩ this¼ perforφ thσ followinτ step≤ usinτ ì
  201. thσá informatioεá oµ thσ pagσ addres≤ oµ thσ CC╨á (obtaineΣá froφ ì
  202. BDOSLO├á anΣá calleΣá CPRLO├ withiε ZCPR⌐ anΣá thσá SYSGE╬á imagσ ì
  203. address of the CCP (called IMAGE for reference in this document).
  204.  
  205.           1«á Edi⌠á ZCP╥á anΣ se⌠ thσ CPRLO├ equatσ t∩ thσá valuσ ì
  206. obtaineΣ froφ above«  Als∩ se⌠ an∙ flag≤ anΣ value≤ a≤ yo⌡ desirσ ì
  207. (seσ thσ sectioε oε ZCP╥ Customizatioε below)«á  Wheεá satisfied¼ ì
  208. enΣ thσ edi⌠ session.
  209.  
  210.           2«á  Assemblσá ZCPRá witΦ MA├á (o≥á equivalent)«á  Thi≤ ì
  211. assemble≥á i≤á requireΣá becausσ oµ thσ MACRO≤á used«á  Onl∙á thσ ì
  212. resultant HEX file is required.
  213.  
  214.           3«á  Assuminτ tha⌠ yo⌡ caε usσ SYSGEN¼á obtaiε ß SYSGE╬ ì
  215. image of your current CP/M system and save it on disk.
  216.  
  217.           4«á  LoaΣá thσá SYSGE╬ imagσ int∩ memor∙ witΦá DD╘á (o≥ ì
  218. equivalent)«  Oncσ loaded¼ verif∙ tha⌠ thσ origina∞ CC╨ i≤ a⌠ thσ ì
  219. IMAG┼á addres≤á founΣ abovσ anΣ computσá thσá integratioεá offse⌠ ì
  220. using the DDT H command:
  221.                H<IMAGE adr>,<CPRLOC adr>
  222. Thσá seconΣ numbe≥ displayeΣ give≤ yo⌡ thσ OFFSE╘ valuσá requireΣ ì
  223. for step 5.
  224.  
  225.           5«á  Integratσá ZCPR int∩ you≥ SYSGE╬ imagσ viß DDT'≤ ╔ ì
  226. anΣ ROFFSE╘ commands«  Usσ IZCPR.HE╪ (o≥ thσ namσ oµ you≥ versioε ì
  227. oµá ZCPR⌐ t∩ loaΣ thσ FC┬ anΣ ROFFSE╘ (wherσ OFFSE╘ wa≤á computeΣ ì
  228. iεá ste≡ 4⌐ t∩ loaΣ thσ ZCPR.HE╪ filσ int∩ memor∙ a⌠á thσá prope≥ ì
  229. location«á  Checδá t∩ seσ tha⌠ ZCPR i≤ indeeΣ properl∙ loadeΣá b∙ ì
  230. examining the SYSGEN IMAGE area.
  231.  
  232.           6«á  Placσ thσ ne≈ systeφ oε disδ b∙ runninτ SYSGE╬ anΣ ì
  233. NOT loading the system from disk (use the memory image).
  234.  
  235.      Fo≥áá furthe≥á clarificatioεá oµá thσá abovσá process¼áá thσ ì
  236. followinτá i≤ ß samplσ termina∞ sessioε whicΦ outline≤ thσá step≤ ì
  237. taken.
  238.  
  239.                     ZCPR Integration Example
  240.  
  241.  
  242. B>; Sample terminal session for integrating ZCPR
  243. B>sysgen
  244. SYSGEN VER 2.2
  245. SOURCE DRIVE NAME (OR RETURN TO SKIP)b
  246. SOURCE ON B, THEN TYPE RETURN  <-- I hit the RETURN key here
  247. FUNCTION COMPLETE                                /
  248. DESTINATION DRIVE NAME (OR RETURN TO REBOOT)  <-- and here
  249. B>save 44 cpm56.com      <-- We now have a SYSGEN image of CP/M
  250.                               to work with
  251. èB>xdir
  252. XDIR   Version 2.6  User Number:   0,  Double Density
  253. File Attributes:  Non-System  
  254.  
  255. Filename.Typ Size K   Filename.Typ Size K   Filename.Typ Size K
  256. -------- --- ------   -------- --- ------   -------- --- ------
  257. !TEXTWRK.-12      0   CPR     .DOC      8   EE687   .TXT      4
  258. CPR     .AQM     34   TFS     .HLP      6   EE687PRE.TXT      4
  259. CPR     .ASM     50   CONTENTS.T01      6   SW1     .TXT     10
  260. CPR     .BAK      4   CONTENTS.T02      4   SW2     .TXT      2
  261. CPM56   .COM     12   CONTENTS.T03      4
  262. B:  30 Entries &   22 Files --    338K Bytes Remaining
  263. File Data:         14 Files --    154K Bytes Displayed
  264. B>bdosloc      <-- Now to locate the CCP's address
  265. The Base Page Address of this system's BDOS is C5
  266. The Base Page Address of this system's CCP is  BD <-- This is it
  267. B>ddt cpm56.com     <-- Now to find the CCP in the SYSGEN image
  268. DDT VERS 2.0
  269. NEXT  PC
  270. 2D00 0100
  271. -d900,90f      <-- Start looking around here
  272. 0900 31 80 E7 3E 06 3C 3C FE 1B CA 00 C2 DA 11 E7 D6 1..>.<<.........
  273. -da00,a0f
  274. 0A00 31 00 01 01 01 0C C5 CD 0F E4 21 00 BE 11 00 04 1.........!.....
  275. -db00,b0f
  276. 0B00 31 00 01 01 01 11 C5 CD 0F E4 21 00 C0 11 00 02 1.........!.....
  277. -db80,b8f
  278. 0B80 31 00 01 01 09 01 CD A8 00 21 00 D2 11 00 C2 0E 1........!......
  279.         -- Detail Left Out --
  280. -d1100         <-- I found it at 1100H; note the 2 JMP's
  281. 1100 C3 FF BD C3 FB BD 50 10 20 20 20 20 20 20 20 20 ......P.        
  282. 1110 20 20 20 20 20 20 20 20 00 00 00 00 00 00 00 00         ........
  283. 1120 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
  284.         -- Detail Left Out --
  285. -^├            <-- Returε t∩ CP/M╗ ╔ kno≈ tha⌠ CPRLO├ wil∞ be
  286.                     BD00H and the IMAGE offset is 1100H
  287.  
  288. B>eΣ cpr.asφ {edi⌠ ZCPR herσ anΣ placσ CPRLOC=BD00H}#  
  289.         -- Detail Left Out --
  290.  
  291. B>mac cpr $pz sz         <-- Now to assemble the CPR
  292. CP/M MACRO ASSEM 2.0
  293. C4F0                     <-- Note that CPR MUST end before BDOS
  294.                               begins!
  295. 014H USE FACTOR
  296. END OF ASSEMBLY
  297.  
  298.  
  299.  
  300. B>ddt cpm56.com          <-- Now to integrate!
  301. DDT VERS 2.0
  302. NEXT  PC
  303. 2D00 0100
  304. -h1100,bd00              <-- Compute offset for new CPR
  305. CE00 5400                <-- Offset is 5400H
  306. -icpr.hex                <-- Init FCB
  307. -r5400                   <-- Read in new CPR with offset
  308. NEXT  PC
  309. 2D00 0000
  310. -^C                      <-- Done!
  311. B>sysgen                 <-- Now to SYSGEN onto disk
  312. SYSGEN VER 2.2
  313. SOURCE DRIVE NAME (OR RETURN TO SKIP)   <-- Use memory image
  314. DESTINATION DRIVE NAME (OR RETURN TO REBOOT)b     <-- onto B:
  315. DESTINATION ON B, THEN TYPE RETURN
  316. FUNCTION COMPLETE
  317. DESTINATION DRIVE NAME (OR RETURN TO REBOOT) <-- Done for now
  318.  
  319. B>
  320.  
  321.  
  322.                  Setting the ZCPR Inline Options
  323.  
  324.      Thσá followinτá arσ thσ fou≥ basiπ option≤ availablσ t∩á thσ ì
  325. user under ZCPR for customization of his package.
  326.  
  327. Option Name    Function
  328.  
  329.    REL         Configures CPRLOC (CPRLOC equ 0) for integration
  330.                via MOVCPM rather than the DDT/SYSGEN technique
  331.                outlined above; set to TRUE for MOVCPM integra-
  332.                tion or FALSE for DDT/SYSGEN integration
  333.  
  334.    BASE        Base address of your CP/M system; standard CP/M
  335.                has a base of 0, but some CP/M systems (such as
  336.                for the TRS-80 Model I and Heath/Zenith H89/Z89)
  337.                start physical RAM memory at a higher address;
  338.                equate BASE to the starting RAM memory address of
  339.                your system
  340.  
  341.    CPRLOC      This is the starting address of ZCPR; set the
  342.                second CPRLOC equate to the address you obtain
  343.                from BDOSLOC
  344.  
  345.    RAS         This is an equate which masks out selected ZCPR
  346.                command functions for security purposes on
  347.                Remote Access Systems such as Bulletin Boards;
  348.                the masked out functions currently include
  349.                SAVE, ERA, REN, JUMP, GO, and GET; set RAS to TRUE
  350.                to mask these out or FALSE to leave them in
  351.  
  352.    SUBA        This is an equate which determines the drive
  353.                onto which ZCPR will look for an executing
  354.                Indirect Command File.  If the basic philosophy
  355.                of the Indirect Command File described above is
  356.                to be maintained, this symbol should be set to
  357.                TRUE (look on drive A: for the $$$.SUB file); if
  358.                not, this symbol should be set to FALSE (look on
  359.                the default drive from the $$$.SUB file).  To
  360.                review, the basic philosophy of the Indirect
  361.                Command File is that any sequence of commands
  362.                which may be issued from the console (within
  363.                reason, which means NOT to erase a $$$.SUB file)
  364.                may also be issued from within an Indirect
  365.                Command File, and the resultant execution should
  366.                be identical (same functions performed).
  367.  
  368.    CLEVEL3     This equate enables or disables extended Command
  369.                Leve∞ │ Processing«  Iµ se⌠ t∩ TRUE¼ extended
  370.                Command Level 3 Processing is enabled and the user
  371.                command line is automatically capitalized, the
  372.                terminatinτ zer∩ i≤ placeΣ a⌠ thσ enΣ oµ thσ
  373.                buffer, and the internal CIBPTR is set correctly
  374.                (see later for more information).
  375.  
  376.  
  377.                       Customization Symbols
  378.  
  379.      Thσ followinτ symbol≤ arσ provideΣ fo≥ furthe≥ customizatioε ì
  380. of ZCPR to a user's particular tastes and hardware facilities.
  381.  
  382. Option Name    Function
  383.  
  384.    NLINES      Number of lines on the user's CRT for paging
  385.  
  386.    WIDE        This equate is used to select a narrow or wide
  387.                display under the DIR command; if WIDE is equated
  388.                to TRUE, each file name is separated by two
  389.                spaces, a FENCE, and two more spaces; if WIDE is
  390.                equated to FALSE, each file name is separated by
  391.                one space, a FENCE, and one more space
  392.  
  393.    PGDFLT      This is the Paging Default flag for the TYPE
  394.                command; if PGDFLT is set to TRUE, the TYPE
  395.                command will page its output by default and
  396.                the P option on the TYPE command (see below)
  397.                will prohibit paging; if PGDFLT is set to FALSE,
  398.                the TYPE command will NOT page its output by
  399.                default and the P option will enable paging
  400.  
  401.    PGDFLG      This sets the option character in the command
  402.                line for the TYPE command (the 'P' mentioned
  403.                above); if the user wishes to change this option
  404.                character, he need only change this equate
  405.  
  406.    MAXUSR      This is the largest user number recognized by
  407.                the USER command; if the user wishes to protect
  408.                the higher user areas, he may set this symbol
  409.                to the highest area normally accessable; 15 is
  410.                the largest permitted value for MAXUSR
  411.  
  412.    SYSFLG      This is the option character for the DIR command
  413.                line which is used to specify that DIR search
  414.                All Files (both $SYS and $DIR) for its display;
  415.                the distributed default for this is 'A'
  416.  
  417.    SOFLG       This is the option character for the DIR command
  418.                line which is used to specify that DIR search
  419.                ONLY the $SYS files for its display; the distri-
  420.                buted default for this is 'S'
  421.  
  422.    SUPRES      Set SUPRES to TRUE to suppress printing the user
  423.                number when the user is under User Number 0 or
  424.                set SUPRES to FALSE to ALWAYS display the User
  425.                Number with the CPR prompt; with SUPRES set to
  426.                TRUE, a user on B: in user 0 sees 'B>' as the
  427.                prompt, but with SUPRES set to FALSE, a user on
  428.                B: in user 0 sees 'B0>' as the prompt
  429.  
  430.    DEFUSR      This is the CPR-default user number which is
  431.                searched in the command hierarchy for the COM
  432.                files (distributed as 0); the DFU changes this
  433.                temporarily until a Warm Boot or Cold Boot is
  434.                done, at which time the search reverts to this
  435.                value
  436.  
  437.    SPRMPT      This is the CPR prompt character which indicates
  438.                that a SUBMIT file is in execution; by default
  439.                it is set to '$', so prompts like 'A$' appear
  440.                during SUBMIT file execution
  441.  
  442.    CPRMPT      This is the CPR prompt character which indicates
  443.                that the CPR is awaiting a user console command;
  444.                by default it is set to '>', so prompts like
  445.                'A>' appear during user input to the CPR
  446.  
  447.    NUMBAS┼     Thi≤ i≤ thσ escapσ characte≥ useΣ b∙ thosσ
  448.                commands which require a DECIMAL number as
  449.                an argument; placing this character after
  450.                the number argument switches the base to
  451.                HEXADECIMAL; for example, 'SAVE 15 MYFILE' can be
  452.                expressed as 'SAVE FH MYFILE' if NUMBASE is
  453.                set to 'H' (the default)
  454.  
  455.    SECTFLG     This character constant is the suffix option for
  456.                the SAVE command which specifies that sectors,
  457.                as opposed to pages, are to be saved; the default
  458.                value is 'S'
  459.  
  460.    FENCE       This is the character printed to separate entries
  461.                in a directory listing; it's default value is '|'
  462.  
  463.  
  464.                        Patching SUBMIT.COM
  465.  
  466.      SUBMIT.CO═á ma∙ bσ patcheΣ t∩ ruε witΦ ZCP╥ b∙ thσ followinτ ì
  467. procedurσá (thi≤á i≤á recommendeΣá iµá thσá use≥á doe≤á no⌠á havσ ì
  468. SUB.COM)«á  Thi≤á patcΦ simpl∙ make≤ i⌠ alway≤ placσ thσá $$$.SU┬ ì
  469. filσ oε Drivσ A:«  Illustrative termina∞ sessioε follows:
  470.  
  471. A>ddt b:submit.com
  472. DDT VERS 2.0
  473. NEXT  PC
  474. 0600 0100
  475. -s5bb        <-- Patch is at 5BB Hex
  476. 05BB 00 1    <-- Change 0 (default drive) to 1 (drive A:)
  477. 05BC 24 .    <-- That's it!
  478. -d5b0 5cf    <-- See change
  479. 05B0 00 00 00 00 00 00 30 30 31 20 24 01 24 24 24 20 ......001 $.$$$ 
  480. 05C0 20 20 20 20 53 55 42 00 00 00 1A 1A 1A 1A 1A 1A     SUB.........
  481. -^C        <-- Done
  482. A>save 5 newsubmt.com    <-- Save new SUBMIT.COM file
  483.  
  484.                              Part B
  485.          Usage Instructions and Explanation of Commands
  486.  
  487.  
  488.      Thσá followinτ instruction≤ arσ writteε witΦ thσá assumptioε ì
  489. tha⌠á thσá reade≥ i≤ quitσ familia≥ witΦ ho≈ t∩ usσ CP/═ 2.▓á anΣ ì
  490. it≤ CCP«á  ZCPR i≤ writteε a≤ ß logica∞ extensioε oµ thσ CP/═ 2.▓ ì
  491. CC╨ philosoph∙ anΣ shoulΣ bσ addresseΣ a≤ such.
  492.  
  493.  
  494.  
  495.                 The ZCPR Command Hierarchy Search
  496.  
  497.      Thσ first¼á anΣ mos⌠ basiπ thing¼ t∩ learε abou⌠ ZCPR i≤ thσ ì
  498. orde≥ iε whicΦ i≤ searche≤ fo≥ ß CO═ filσ fo≥ executioε o≥ ß filσ ì
  499. specifieΣá b∙ thσ GE╘ command«á  Unde≥ thσ CP/═ 2.▓ CCP¼á iµá thσ ì
  500. specifieΣá CO═ filσ commanΣ wa≤ no⌠ founΣ oε thσ curren⌠ drivσ iε ì
  501. thσá curren⌠ use≥ area¼á thσ CC╨ aborteΣ witΦ aεá erro≥á message«  ì
  502. ZCPR¼á however¼á continue≤ searchinτ froφ thi≤ poin⌠ ß maximuφ oµ ì
  503. tw∩á morσá levels«á  Thi≤ commanΣ hierarch∙ searcΦá wa≤á outlineΣ ì
  504. abovσ anΣ i≤ describeΣ herσ iε furthe≥ detail.
  505.  
  506.           1«á  Iµá thσá commanΣ i≤ oµ thσ forφ 'COMMANDº anΣá NO╘ ì
  507. 'd:COMMAND'¼á thσá CPR-residen⌠á commanΣ lis⌠ i≤ searcheΣá fo≥á ß ì
  508. match«á  Iµá thσá matcΦ i≤ found¼á thσá CPR-residen⌠á commanΣá i≤ ì
  509. immediatel∙ processed«á  Iµ thσ matcΦ i≤ no⌠ founΣ o≥ thσ commanΣ ì
  510. i≤á oµ thσ forφ 'd:COMMAND'¼á thσ nex⌠ ste≡ i≤ taken«á  Notσ tha⌠ ì
  511. thσá 'd:COMMANDºá forφ i≤ gooΣ fo≥ executinτ ß commanΣá CO═á filσ ì
  512. whicΦá ha≤ thσ samσ namσ a≤ ß CPR-residen⌠ commanΣ (sucΦ a≤á SAV┼ ì
  513. or DIR).
  514.  
  515.           2«á  Iµá thσ commanΣ i≤ oµ thσ forφá 'd:COMMAND'¼á disδ ì
  516. drivσá 'd:ºá i≤á temporaril∙ loggeΣ iε fo≥á thσá purposσá oµá thσ ì
  517. commanΣá search«á  Otherwise¼á thσá currentl∙ logged-iε drivσá i≤ ì
  518. used.
  519.  
  520.           3«  No≈ thσ filσ nameΣ COMMAND.CO═ i≤ searcheΣ for«  Iµ ì
  521. found¼á i⌠á i≤ loadeΣ int∩ memor∙ startinτ a⌠ 100╚ anΣá executed«  ì
  522. If not, proceed to step 4.
  523.  
  524.           4«á  No≈á tha⌠á thσ firs⌠ searcΦá fo≥á COMMAND.CO═á ha≤ ì
  525. failed¼á thσá CPR check≤ t∩ seσ iµ thσ use≥ i≤ unde≥ thσá curren⌠ ì
  526. Defaul⌠ Use≥ Number«á  Thσ Defaul⌠ Use≥ Numbe≥ ma∙ bσ tha⌠ se⌠ b∙ ì
  527. thσá DEFUS╥ equatσ iε thσ CPR o≥ tha⌠ se⌠ b∙ thσ use≥ viß thσ DF╒ ì
  528. command«á  DEFUS╥á i≤ iε effec⌠ iµ DF╒ ha≤ no⌠ beeε issueΣá sincσ ì
  529. thσ las⌠ Warφ o≥ ColΣ Boot¼ anΣ DF╒ i≤ iε effec⌠ iµ i⌠ wa≤ issueΣ ì
  530. sincσ thσ las⌠ Warφ o≥ ColΣ Boot«á  Iµ thσ use≥ i≤ NO╘ unde≥á thσ ì
  531. curren⌠á Defaul⌠ Use≥ Number¼á ZCPR temporaril∙ log≤ hiφ int∩á i⌠ ì
  532. anΣá searche≤á thσ directory«á  Iµ COMMAND.CO═ i≤á found¼á i⌠á i≤ ì
  533. loadeΣ a≤ describeΣ abovσ anΣ executed«  Iµ not¼ ZCPR proceed≤ t∩ ì
  534. the next step.
  535.  
  536.  
  537.           5«á  Thσ use≥ i≤ no≈ iε thσ Defaul⌠ Use≥ Number¼ anΣ a⌠ ì
  538. thi≤á point¼á ZCPR check≤ t∩ seσ iµ thσ use≥ i≤ oε disδ drivσ A:«  ì
  539. Iµ not¼ i⌠ temporaril∙ log≤ int∩ A║ anΣ searche≤ thσ defaul⌠ use≥ ì
  540. numbe≥á oµá A║á fo≥á COMMAND.COM«á  Iµ found¼á i⌠á i≤á loadeΣá a≤ ì
  541. describeΣ abovσ anΣ executed«á  Iµ not¼á ZCPR print≤ thσá commanΣ ì
  542. namσá a≤á aεá erro≥ messagσ anΣ return≤ t∩á commanΣá inpu⌠á mode¼ ì
  543. aborting the SUBMIT file if COMMAND came from it.
  544.  
  545.      Iεá al∞ case≤ oµ thσ searcΦ above¼á iµ COMMAND.CO═ i≤ found¼ ì
  546. afte≥á i⌠á i≤ loadeΣ int∩ memory¼á ZCPR reset≤ thσá use≥á t∩á hi≤ ì
  547. origina∞ disδ drivσ anΣ use≥ number«  Hence¼ thσ file≤ referenceΣ ì
  548. by the user by default are obtained from this environment.
  549.  
  550.      T∩á illustratσ thi≤ commanΣ hierarch∙ search¼á conside≥á thσ ì
  551. following examples:
  552.  
  553. Example 1:  DEFUSR equ 0 {default user number is 0}
  554.  
  555. B10>           <-- User is on Drive B:, User Number 10
  556. B10>ASM TEST.BBZ    <-- User wishes to assemble TEST.ASM in
  557.                          Drive B:, User 10
  558.      <-- At this point, ZCPR looks on B:/10 for ASM.COM, fails,
  559.           looks on B:/0, fails, and finally looks on A:/0; it
  560.           finds ASM.COM here and goes back to B:/10 for the file
  561.  
  562.  
  563. Example 2:  DEFUSR equ 0 and DFU issued
  564.  
  565. B10>           <-- User is on Drive B:, User Number 10
  566. B10>DFU 5      <-- User Selects User 5 as default
  567. B10>ASM TEST.BBZ    <-- As above
  568.      <-- At this point, ZCPR looks on B:/10 for ASM.COM, fails,
  569.           look on B:/5, fails, and finally looks on A:/5; it
  570.           fails here also and prints ASM? as an error message
  571.  
  572. Example 3:  DEFUSR equ 0
  573.  
  574. B>             <-- User is on Drive B:, User Number 0
  575. B>ASM TEST.BBZ      <-- As above
  576.      <-- At this point, ZCPR looks on B:/0 for ASM.COM, fails,
  577.           looks on A:/0, fails, and prints error message
  578.  
  579. Example 4:  DEFUSR equ 0
  580.  
  581. A10>           <-- User is on Drive A:, User Number 10
  582. A10>ASM TEST.AAZ    <-- As above, but file on A:
  583.      <-- At this point, ZCPR looks on A:/10 for ASM.COM, fails,
  584.           looks on A:/0, fails, and prints error message
  585.  
  586.  
  587. Another Example:
  588.  
  589.           Fo≥á example¼á iµ thσ use≥ i≤ loggeΣ int∩ Drivσá B║á iε ì
  590. Use≥ Areß 10¼ thσ Defaul⌠ Use≥ Numbe≥ i≤ 0¼ anΣ thσ followinτ CO═ ì
  591. file≤ arσ presen⌠ a≤ indicateΣ --
  592.  
  593.                WM.COM on Drive A: in User 0
  594.                MBASIC.COM on Drive A: in User 0 and on
  595.                     Drive B: in User 0
  596.                TEST.COM on Drive B: in User 10 and Drive B:
  597.                     in User 0
  598.  
  599. theεá thσá followinτá happen≤ wheεá thσá followinτá command≤á arσ ì
  600. issued from the console (or Indirect Command File):
  601.  
  602. B10>WM TEST2.TXT
  603.  \   \    \__ File to be edited
  604.   \   \__ Invoke the WM.COM file (Word Master editor)
  605.    \__ User is on Drive B: in User Area 10
  606.  
  607.      Results:
  608.           ZCPR searche≤ B║á Use≥ 10¼ B║ Use≥ 0¼ anΣ A║ Use≥ ░ fo≥ ì
  609. WM.COM╗á i⌠ find≤ WM.CO═ iε A║á Use≥ 0¼á load≤ it¼á log≤ thσ use≥ ì
  610. back into B: User 10, and executes it.
  611.  
  612. B10>MBASIC
  613.  \    \__ Invoke the MBASIC.COM file (MBASIC Interpreter)
  614.   \__ User is on Drive B: in User Area 10
  615.  
  616.      Results:
  617.           ZCPR searche≤ B║á Use≥ 1░ anΣ B║ Use≥ ░ fo≥ MBASIC.COM╗ ì
  618. i⌠ find≤ MBASIC.CO═ iε B║ Use≥ 0¼ s∩ i⌠ doesn'⌠ bothe≥ t∩ looδ oε ì
  619. A║á Use≥ 0«á  MBASIC.CO═ i≤ theε loadeΣ anΣ executeΣ a≤ describeΣ ì
  620. in the previous example.
  621.  
  622. B10>TEST
  623.   \   \__ Invoke the TEST.COM file (TEST program)
  624.    \__ User is on Drive B: in User Area 10
  625.  
  626.      Results:
  627.           ZCPRá searche≤á B║á Use≥á 1░á fo≥á TEST.COM╗á i⌠á find≤ ì
  628. TEST.CO═ iε B║á Use≥ 0¼á s∩ i⌠ doesn'⌠ bothe≥ t∩ looδ furthe≥ (iµ ì
  629. i⌠ had¼á i⌠ woulΣ havσ founΣ TEST.CO═ iε B║ Use≥ 0)«  TEST.CO═ i≤ ì
  630. then loaded and executed as described above.
  631.  
  632. B10>TEST2
  633.   \    \__ Invoke the TEST2.COM file (TEST2 program)
  634.    \__ User is on Drive B: in User Area 10
  635.  
  636.      Results:
  637.           ZCPR searche≤ B║á Use≥ 10¼ B║ Use≥ 0¼ anΣ A║ Use≥ ░ fo≥ ì
  638. TEST2.COM╗á i⌠á doesn'⌠ finΣ it¼á s∩ i⌠ issue≤ thσ erro≥á messagσ ì
  639. 'TEST2?', which says it couldn't find TEST2.COM.
  640. è
  641.  
  642.  
  643.                    The ZCPR-Resident Commands
  644.  
  645.      Thσá followinτá page≤ describσ thσá ZCPR-Residen⌠á Commands«  ì
  646. Thesσá arσ command≤ locateΣ withiε ZCPR itselµ whicΦ arσ executeΣ ì
  647. froφ withiε ZCPR«  Thσ phrase≤ <afn╛ anΣ <ufn╛ refe≥ t∩ ambiguou≤ ì
  648. file name and unambigous file name as per the CP/M convention.
  649.  
  650. Command: DIR
  651. Function:  To Display a listing of the names of the files on disk
  652. Forms:
  653.      DIR <afn>           <-- Displays $DIR files
  654.      DIR <afn> S         <-- Displays $SYS files
  655.      DIR <afn> A         <-- Displays both $DIR and $SYS files
  656. Customization Variables:
  657.      WIDE      SYSFLG    SOFLG     FENCE
  658. Examples:
  659.      DIR *.ASM           <-- All $DIR .ASM files
  660.      DIR *.COM S         <-- All $SYS .COM files
  661.      DIR *.COM A         <-- All .COM files
  662. Notes:
  663.      Iµá ßá filσ i≤ scanneΣ fo≥ anΣ n∩ sucΦ namσ exist≤ oεá disk¼ ì
  664. thσá 'N∩á Filesº messagσ wil∞ appear«á  However¼á iµá ßá filσá i≤ ì
  665. scanneΣ fo≥ anΣ thσ namσ exist≤ a≤ ß $SY╙ filσ anΣ $DI╥ file≤ arσ ì
  666. beinτá scanneΣ for¼á n∩ filσ namσ i≤ displayeΣ bu⌠ thσ 'N∩ Filesº ì
  667. messagσ doe≤ NO╘ appear«  Fo≥ example¼ iµ TEST.CO═ i≤ ß $SY╙ filσ ì
  668. anΣá 'DI╥á TEST.COMº i≤ issued¼á n∩á messagσá appears«á  Iµá 'DI╥ ì
  669. TEXT.COMº i≤ issueΣ anΣ TEXT.CO═ doe≤ no⌠ exis⌠ oε disk¼á thσ 'N∩ ì
  670. Files' message is displayed.
  671.  
  672.  
  673. Command: ERA
  674. Function:  To Erase the specified $R/W files from disk
  675. Forms:
  676.      ERA <afn>           <-- Erase both $DIR and $SYS files
  677. Customization Variables:
  678.      WIDE      FENCE
  679. Examples:
  680.      ERA *.ASM           <-- Erase all .ASM files
  681.      ERA *.*             <-- Erase all files
  682. Notes:
  683.      Iµ ß $R/╧ filσ i≤ encountered¼á ß BDO╙ erro≥ messagσ wil∞ bσ ì
  684. displayeΣá anΣ thσ procedurσ i≤ stopped«á  Thσ use≥ i≤ unsurσá a⌠ ì
  685. thi≤á timσ a≤ t∩ whicΦ file≤ havσ beeε eraseΣ anΣ whicΦ havσá no⌠ ì
  686. anΣ shoulΣ check«  Sorr∙ fo≥ thi≤ problemí  Thσ ERAS┼ commanΣ (t∩ ì
  687. bσá giveεá t∩ SIG/═ b∙ RL├ iε thσ nea≥ future⌐ i≤ ßá solutioεá t∩ ì
  688. this problem.
  689.  
  690.  
  691.  
  692. Command: LIST
  693. Function:  To Print the specified file on the CP/M LST: device
  694. Forms:
  695.      LIST <ufn>          <-- Print the file (no paging)
  696. Customization Variables:
  697.      -None-
  698. Examples:
  699.      LIST TEST.TXT       <-- Print TEST.TXT on LST:
  700. Notes:
  701.      Iµá thσ filσ ha≤ ß $SY╙ attribute¼á i⌠ wil∞ bσ founΣ a≤ wel∞ ì
  702. as those with $DIR attributes.
  703.  
  704.  
  705. Command: TYPE
  706. Function:  To Print the specified file on the CP/M CON: device
  707. Forms:
  708.      TYP┼ <ufn╛          <-- Prin⌠ thσ filσ witΦ thσ paginτ deflt
  709.      TYPE <ufn> P        <-- Print the file with the paging deflt
  710.                               negated
  711. Customization Variables:
  712.      NLINES    PGDFLT    PGDFLG
  713. Examples:
  714.      TYPE TEST.TXT
  715.      TYPE TEST.TXT P
  716. Notes:
  717.      Wheεá thσá displa∙ pause≤ durinτ paging¼á typσ an∙á cha≥á t∩ ì
  718. continue or ^C to abort.  ^S also works.
  719.  
  720.  
  721. Command: SAVE
  722. Function:  To Copy the TPA starting at 100H to disk
  723. Forms:
  724.      SAVE <Number of Pages> <ufn>  <-- <Number of Pages> in DEC
  725.      SAVE <Number of Pages>H <ufn> <-- <Number of Pages> in HEX
  726.      SAVE <Number of Sectors> <ufn> S  <-- Number of sectors
  727.      SAVE <Number of Sectors>H <ufn> S <-- Number of sectors
  728. Customization Variables:
  729.      NUMBASE   RAS
  730. Examples:
  731.      SAVE 15 MYFILE.TXT        <-- 15 pages saved
  732.      SAVE FH MYFILE.TXT        <-- 15 pages saved
  733.      SAVE 10H MYFILE.TXT S     <-- 16 sectors (8 pages) saved
  734. Notes:
  735.      Iµ thσ filσ namσ t∩ bσ saveΣ alread∙ exists¼á theε SAV┼ wil∞ ì
  736. exi⌠ witΦ thσ messagσ 'Delete File?'╗ iµ thσ use≥ REALL┘ want≤ t∩ ì
  737. savσá unde≥á thi≤ name¼á hσ ma∙ theε typσ ┘ o≥ ∙ anΣ thσá curren⌠ ì
  738. filσ wil∞ bσ deleteΣ anΣ theε recreateΣ containinτ thσá specifieΣ ì
  739. part of the TPA.
  740.  
  741.  
  742.  
  743.  
  744.  
  745. Command: REN
  746. Function:  To Change the name of a disk file
  747. Forms:
  748.      REN <ufn new>=<ufn old>
  749. Customization Variables:
  750.      RAS
  751. Examples:
  752.      REN NEWFILE.TXT=OLDFILE.TXT
  753. Notes:
  754.      Iµ <ufε new╛ alread∙ exists¼ thσ messagσ 'Deletσ File?º wil∞ ì
  755. bσá printeΣá anΣ thσ use≥ ma∙ responΣ witΦ ┘ o≥ ∙ t∩á deletσá thσ ì
  756. curren⌠ <ufε new╛ anΣ theε renamσ <ufε old╛ t∩ <ufε new>.
  757.  
  758. Command: USER
  759. Function:  To Change the current user number
  760. Forms:
  761.      USER <User Number>       <-- <User Number> in DEC
  762.      USER <User Number>H      <-- <User Number> in HEX
  763. Customization Variables:
  764.      -None-
  765. Examples:
  766.      USER 15        USER FH        USER 0
  767.      USER      <-- Same as USER 0
  768. Notes:
  769.      -None-
  770.  
  771.  
  772. Command: DFU
  773. Function:  To Temporarily Change the default user number for the
  774.            command hierarchy search
  775. Forms:
  776.      DFU <User Number>        <-- <User Number> in DEC
  777.      DFU <User Number>H       <-- <User Number> in HEX
  778. Customization Variables:
  779.      -None-
  780. Examples:
  781.      DFU 15         DFU FH         DFU 0
  782.      DFU       <-- Same as DFU 0
  783. Notes:
  784.      See above for explanation.
  785.  
  786.  
  787.  
  788.  
  789. Command: JUMP
  790. Function:  To "call" the subroutine at the specified page address
  791. Forms:
  792.      JUMP <Address> <Cmd Parms> <-- <Address> in HEX
  793. Customization Variables:
  794.      NUMBASE   RAS
  795. Examples:
  796.      JUMP E000 or JUMP E000H  <-- Jump to E000H
  797.      JUMP                     <-- Jump to 000H
  798.      JUMP 0                   <-- Jump to 000H
  799. Notes:
  800.      JUM╨ perform≤ ß subroutinσ "call"¼ s∩ thσ calleΣ routinσ ma∙ ì
  801. return to the ZCPR by either a RET or a Warm Boot.
  802.  
  803.  
  804. Command: GO
  805. Function:  To "call" the subroutine starting at 100H
  806. Forms:
  807.      GO <Cmd Parms>           <-- Execute reentrant at 100H
  808. Customization Variables:
  809.      RAS
  810. Examples:
  811.      GO *.ASM                 <-- Assuming XDIR is loaded,
  812.                                    gives directory of *.ASM
  813. Notes:
  814.      Thi≤á commanΣ i≤ identica∞ iε functioε t∩ JUM╨á 100H╗á JUMP¼ ì
  815. however¼ leave≤ thσ addres≤ a≤ thσ firs⌠ entr∙ iε CP/═ BAS┼ ½ 80╚ ì
  816. (the input line buffer), while GO has no such address.
  817.  
  818.  
  819. Command: GET
  820. Function:  To load a file from disk into memory starting at the
  821.            specified page
  822. Forms:
  823.      GET <Address> <ufn>      <-- <Address> in HEX
  824. Customization Variables:
  825.      NUMBASE   RAS
  826. Examples:
  827.      GET 8000 TEST.80         <-- Load TEST.80 starting at 8000H
  828.      GE╘ 10░ TEST.8░ o≥ GE╘ 100╚ TEST.8░ <-- LoaΣ TEST.8░      
  829.                                    starting at 100H
  830.      GE╘ ░ TEST.8░            <-- LoaΣ TEST.8░ startinτ a⌠ 000H
  831. Notes:
  832.      GE╘á searche≤ fo≥ thσ specifieΣ filσ accordinτ t∩á thσá samσ ì
  833. commanΣá hierarch∙á searcΦ employeΣ b∙ thσ ZCPR commanΣá scanner«  ì
  834. Hence¼á iµ thσ use≥ i≤ oε B:/1░ anΣ thσ filσ i≤ oε A:/░ witΦá thσ ì
  835. curren⌠á defaul⌠ use≥ numbe≥ a⌠ 0¼á GE╘ wil∞ searcΦ froφ B:/1░ t∩ ì
  836. B:/0 to A:/0 in looking for the file.
  837.  
  838.  
  839.                        ZCPR Error Messages
  840.  
  841.      Thσá followinτá arσ thσ erro≥ message≤ issueΣá b∙á ZCPRá anΣ ì
  842. their meanings.
  843.  
  844. Message   Meaning
  845.  
  846. ?         Printed after a command or an argument means that such
  847.             was invalid
  848.  
  849. No File   From DIR, this means that DIR did not locate any files
  850.           Also from ERA with the same meaning
  851.  
  852. All?      Issued in response ERA *.*, asks the user is he really
  853.             wants to erase all the files.  Unlike under the
  854.             original CP/M 2.2 CCP, single character input is
  855.             required (Y or y for yes and anything else for no)
  856.             with NO <CR> to end the line
  857.  
  858. Full      From SAVE, means that there is not enough space on
  859.             disk
  860.           From GET or command load by CPR, means that there
  861.             is not enough space in memory
  862.  
  863. Delete File?
  864.           Froφ RE╬ o≥ SAVE¼ mean≤ tha⌠ thσ filσ specifieΣ alread∙ ì
  865.             exist≤ oε disδ anΣ thσ use≥ ma∙ typσ ┘ o≥ ∙ t∩ deletσ ì
  866.             it and proceed with the REN or SAVE function
  867.  
  868.  
  869.  
  870.                              Part C
  871.              ZCPR Command Levels and How to Use Them
  872.  
  873.  
  874.      ZCPRá Versioε 1.░ anΣ beyonΣ support≤ threσ distinc⌠ commanΣ 
  875. level≤ iε it≤ implementation«  EacΦ leve∞ constitute≤ ß differen⌠ ì
  876. way to issue a command for ZCPR to process.
  877.  
  878.      CommanΣ Level≤ ▒ anΣ ▓ arσ commoε t∩ al∞ implementation≤á oµ ì
  879. CP/═á anΣ CP/Z═ froφ CP/═ Versioε 1.4«á  CommanΣ Leve∞ ▒ i≤á tha⌠ ì
  880. commanΣ leve∞ iε whicΦ thσ commanΣ i≤ issueΣ b∙ thσ use≥ froφ hi≤ ì
  881. consolσá terminal«á  Thσá promp⌠á 'd>º o≥ 'du>ºá appear≤á oεá thσ ì
  882. terminal¼á anΣá thσá use≥á i≤ alloweΣ t∩ ente≥ thσá commanΣá witΦ ì
  883. editinτ froφ thσ terminal«  CommanΣ Leve∞ ▓ i≤ tha⌠ commanΣ leve∞ ì
  884. in which the command is entered from an executing $$$.SUB file.
  885.  
  886.      Iεá botΦ cases¼á thσ commanΣ i≤ storeΣ iε thσ interna∞á ZCPR ì
  887. buffe≥ calleΣ CIBUF╞ (CommanΣ Inpu⌠ BUFFer)«á  Unde≥ botΦ CommanΣ ì
  888. Level≤á ▒á anΣ 2¼á thσ commanΣ i≤ placeΣ int∩á thi≤á buffer¼á thσ ì
  889. character≤ oµ thσ commanΣ linσ arσ capitalized¼ ß characte≥ coun⌠ ì
  890. whicΦá indicate≤ thσ numbe≥ oµ character≤ iε thσ commanΣ linσá i≤ ì
  891. storeΣ iε CBUF╞ (thσ bytσ beforσ CIBUFF)¼á aε endinτ binar∙ ░á i≤ ì
  892. placeΣá afte≥á thσ las⌠ characte≥ iε thσ commanΣá line¼á anΣá thσ ì
  893. interna∞á pointe≥ CIBPT╥ (CommanΣ Inpu⌠ Buffe≥ PoinTeR⌐ i≤ se⌠ t∩ ì
  894. point to CIBUFF (the first character of the command line).
  895.  
  896.      CommanΣá Leve∞ │ i≤ aε extendeΣ concep⌠ t∩ CommanΣ Level≤á ▒ ì
  897. anΣá ▓á whicΦ i≤ specificall∙ supporteΣ b∙ ZCP╥ Versioεá 1.░á anΣ ì
  898. beyond«  Thi≤ commanΣ leve∞ allow≤ ß transien⌠ prograφ t∩ placσ ß ì
  899. commanΣá linσ int∩ CIBUF╞ anΣ thσ characte≥ coun⌠ int∩ CBUF╞á anΣ ì
  900. havσ thi≤ commanΣ linσ executeΣ b∙ ZCPR«á  Oncσ contro∞ i≤ transì
  901. ferreΣ t∩ ZCP╥ t∩ executσ thσ commanΣ line¼ thσ transien⌠ prograφ ì
  902. whicΦá placeΣá thσ commanΣ linσ lose≤ contro∞ anΣ thσ commanΣá i≤ ì
  903. executeΣá exactl∙ a≤ thougΦ i⌠ haΣ beeε typeΣ b∙ thσ use≥ a⌠á hi≤ ì
  904. consolσ terminal.
  905.  
  906.      Iεá orde≥á fo≥á ß transien⌠ prograφ t∩ utilizσá thσá CommanΣ ì
  907. Leve∞ │ facility¼ thi≤ prograφ MUS╘ d∩ thσ following:
  908.  
  909.           1«  Locatσ thσ ZCPR«  Sincσ thσ ZCP╥ i≤ ALWAY╙ 2╦ byte≤ ì
  910. iεá sizσ anΣ locateΣ directl∙ unde≥ thσ BDOS¼á thσ transien⌠á caε ì
  911. locatσá thσá ZCP╥á b∙ examininτ thσ BDO╙ entr∙á pagσá addres≤á a⌠ ì
  912. locatioεá ╖á anΣá subtractinτ ╕ froφ thi≤ numbe≥ (╕á page≤á ╜á 2╦ ì
  913. bytes)«  Thσ resultinτ numbe≥ i≤ thσ basσ pagσ addres≤ oµ ZCPR.
  914.  
  915.           2«á  Storσ thσ commanΣ linσ iε CIBUF╞ anΣ thσ characte≥ ì
  916. coun⌠á iεá CBUFF«á  Knowinτ thσ basσ pagσ addres≤á oµá ZCPR¼á thσ ì
  917. following information is useful in doing this:
  918.  
  919.  
  920.  
  921.                ORG  CPRLOC    ;Base Address of ZCPR
  922.                JMP  CPR       ;Enter ZCPR and Execute Default Cmd
  923.                JMP  CPR1      ;Enter ZCPR and Don't Execute
  924.      MBUFF:    DB   BUFLEN    ;Size of CIBUFF in bytes
  925.      CBUFF:    DS   1         ;Number of Bytes in Command Line
  926.      CIBUFF:   DS   BUFLEN    ;Buffer for Command Line
  927.                DS   1         ;Buffer for Ending 0 (set by ZCPR)
  928.      CIBPTR:   DS   2         ;Address of CIBUFF (set by ZCPR)
  929.  
  930.  
  931.           3«á  Obtaiεá thσ User/Disδ Flag«á  Locatioε ┤á contain≤ ì
  932. thi≤ number¼á bu⌠ thσ use≥ ma∙ selec⌠ ß flaτ oµ hi≤ choice«  Thi≤ ì
  933. flaτá i≤á onσá bytσá long¼á anΣ thσ high-orde≥á nybblσá (┤á bits⌐ ì
  934. contain≤á thσ use≥ numbe≥ anΣ thσ low-orde≥ nybblσá contain≤á thσ ì
  935. disδá numbe≥ t∩ proces≤ thσ commanΣ from«á  Thσ User/Disδ Flaτ i≤ ì
  936. to be passed to ZCPR in the C Register.
  937.  
  938.           4«  Wheε ready¼ transfe≥ contro∞ t∩ ZCPR t∩ proces≤ thσ ì
  939. commanΣ b∙ JMPinτ t∩ thσ basσ addres≤ oµ ZCPR«á  Thσ firs⌠ JM╨ iε ì
  940. thσ JM╨ Tablσ giveε abovσ i≤ a⌠ thi≤ address«  A⌠ thi≤ time¼ ZCPR ì
  941. wil∞á loτ iε thσ use≥ anΣ disδ iε thσ User/Disδ Flaτ anΣá proces≤ ì
  942. the Command Level 3 Command Line.
  943.  
  944.  
  945.  
  946.      Thσá followinτá i≤ ß samplσ prograφá whicΦá illustrate≤á thσ ì
  947. steps outlined above:
  948.  
  949. ;
  950. ;  Demonstration of Command Level 3 Facility by RLC
  951. ;
  952. udflag    equ    4    ;Address of User/Disk Flag
  953. bdos    equ    5    ;Address of BDOS Entry Point
  954.  
  955.     org    100h
  956.  
  957.     lxi    d,prmpt    ;Print User Prompt
  958.     mvi    c,9    ;PRINT function
  959.     call    bdos
  960.  
  961.     lhld    bdos+1    ;Get address of BDOS
  962.     mov    a,h    ;High-Order Address in A
  963.     sui    8    ;A=High-Order Address of CPR
  964.     mov    h,a    ;HL=Address of CPR
  965.     mvi    l,0
  966.     shld    cpr    ;Save address in buffer
  967.  
  968.     lxi    d,6    ;Point to command line buffer
  969.     dad    d    ;HL points to command line buffer
  970.     xchg        ;DE points to command line buffer
  971.     mvi    c,10    ;READLN into this buffer
  972.     call    bdos
  973.  
  974.     lhld    cpr    ;Get Address of CPR
  975.     lda    udflag    ;Get User/Disk Flag
  976.     mov    c,a    ; ... in C
  977.     pchl        ;Run Command Line
  978.  
  979. cpr:    ds    2    ;CPR Address buffer
  980. prmpt:    db    'User Command? $'
  981.  
  982.  
  983.  
  984.  
  985.  
  986.  
  987.      Enjoy using ZCPR!
  988.                               -- RLC
  989.