home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / lambda / soundpot / p / z3user.lbr / Z3USER.SZ / Z3USER.SI
Encoding:
Text File  |  1993-10-25  |  53.5 KB  |  1,882 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8.  
  9.    ***********************************************************
  10.    *                                                         *
  11.    *          USER'S PERSPECTIVE -- An Introduction          *
  12.    *                                                         *
  13.    *                           for                           *
  14.    *                                                         *
  15.    *  ZCPR3 -- Z80 Command Processor Replacement, Version 3  *
  16.    *                                                         *
  17.    ***********************************************************
  18.  
  19.  
  20.                                by
  21.  
  22.                           Richard Conn
  23.  
  24.  
  25.  
  26.                        User's Perspective
  27.                           11 June 1984
  28.  
  29.  
  30.  
  31.  
  32.  
  33.  
  34.                         ZCPR3 Version 3.0
  35.  
  36.                Copyright (c) 1984 by Richard Conn
  37.                        All Rights Reserved
  38.  
  39.  
  40.  
  41.      Thσáá ZCPR│á System¼áá includinτá it≤á utilitie≤áá anΣáá it≤ ì
  42. documentatioε files¼á i≤ copyright¼á 1984¼á b∙ RicharΣ Conn«  Thσ ì
  43. appendi° list≤ al∞ file≤ covereΣ b∙ thi≤ copyright.
  44.  
  45.  
  46.  
  47.      CP/═ i≤ ß registereΣ trademarδ oµ Digita∞ Research.
  48.      WordStar is a registered trademark of Micropro.
  49.  
  50. .pa
  51. è.pn 1
  52. .po 5
  53. .he                 ZCPR3 from the User's Perspective
  54.  
  55.  
  56.  
  57.         THE USER'S PERSPECTIVE - AN INTRODUCTION TO ZCPR3
  58.  
  59.                          by Richard Conn
  60.  
  61.  
  62.  
  63.  
  64.      Thσá ZCPR│ Systeφ i≤ ß collectioε oµ program≤á baseΣá arounΣ ì
  65. thσá ZCPR│á CommanΣ Processor«á  Forminτ aε integrateΣ systeφá oµ ì
  66. tools¼á thσá ZCPR│á Systeφá offer≤ ßá numbe≥á oµá convenien⌠á anΣ ì
  67. sometime≤á morσá user-friendl∙á feature≤ t∩ thσá CP/═á 2.▓á user«  ì
  68. Maintaininτá CP/═á 2.▓á compatibilit∙á a⌠ al∞á time≤á (al∞á knowε ì
  69. commercia∞áá CP/═áá 2.▓áá program≤á ruεáá unde≥áá ZCPR│áá withou⌠ ì
  70. modification)¼á thσ ZCPR│ Systeφ bring≤ t∩ it≤ user≤ ß variet∙ oµ ì
  71. tool≤á whicΦá conceptuall∙á implemen⌠á feature≤á founΣá iεá othe≥ ì
  72. operatinτá systems¼á includinτ TOPS-2░ (1)¼á UNI╪ (2)¼á NO╙á (3)¼ ì
  73. MULTIC╙á (4)¼á anΣ VM╙ (5)¼á anΣ tool≤ whicΦá implemen⌠á feature≤ ì
  74. uniquσ t∩ thσ ZCPR│ Systeφ (t∩ m∙ knowledge).
  75.  
  76.      Thi≤á Introductioεá i≤ intendeΣ t∩ outlinσ somσ oµá thσá ke∙ ì
  77. feature≤á oµá thσá ZCPR│á Systeφá froφá thσá user'≤á perspective«  ì
  78. Knowledgσ oµ CP/═ 2.▓ i≤ assumed¼á anΣ somσ experiencσ witΦ ZCPR▓ ì
  79. i≤á usefu∞á iε orde≥ t∩ understanΣ thσ followinτ presentatioεá iε ì
  80. detail«á  Thσá majo≥á feature≤á oµ thσá ZCPR│á Systeφá whicΦá arσ ì
  81. describeΣ iε thi≤ Introductioε include:
  82.  
  83.           o Directories       o Wheel Users and Passwords
  84.           o Command Lines     o Command Processing
  85.           o Error Handlers         o Resident Command Packages
  86.           o Aliases                o Flow Command Packages
  87.           o "Secure" Systems       o ZEX Command Files
  88.           o Shells            o Z3TCAP
  89.                o Variable          o Screen-Oriented Terminal
  90.                o MENU                   Configuration
  91.                o VFILER
  92.  
  93.  
  94.      Thσá followinτ screeε display≤ arσ intendeΣ t∩ conve∙á idea≤ ì
  95. only«á  Thesσá display≤ werσ generateΣ whilσ thσ ZCPR│ Systeφ wa≤ ì
  96. beinτá developed¼á anΣ thσ versioε number≤ anΣ operatioεá oµá thσ ì
  97. ZCPR│á utilitie≤á a≤ distributeΣ diffe≥ froφ thosσ showε iεá thi≤ ì
  98. document.
  99.                       ---- Trademarks ----
  100.      (1) TOPS-20 -  Digital Equipment Corporation
  101.      (2) UNIX -     Bell Laboratories
  102.      (3) NOS -      Control Data Corporation
  103.      (4) MULTICS -  Honeywell
  104.      (5) VMS -      Digital Equipment Corporation
  105.  
  106. .fo ZCPR3 Directories                                  #
  107.  
  108. 1. D i r e c t o r i e s 
  109.  
  110. ááááááááá      Unde≥ ZCPR3¼ ß logica∞ disδ caε bσ though⌠ oµ ì
  111. ááááááááát∩á contaiε tw∩ type≤ oµ directories«á  Onσ i≤á thσ ì
  112. áááááááááphysica∞ directory¼á whicΦ i≤ usuall∙ locateΣá jus⌠ ì
  113. áááááááááafte≥á thσá systeφ track≤ oεá mos⌠á floppies«á  Thσ ì
  114. áááááááááothe≥ i≤ thσ logica∞ directory¼á iε whicΦ eacΦ filσ ì
  115. áááááááááoεá ßá disδá ha≤ ß use≥ numbe≥ associateΣá witΦá i⌠ ì
  116. ááááááááá(froφ ░ t∩ 31)¼á anΣ thσ combinatioε oµ ß disδá anΣ ì
  117. áááááááááuse≥áá numbe≥áá identifie≤á uniquel∙á thσáá logica∞ ì
  118. ááááááááádirector∙ iε whicΦ thσ filσ belongs«á  DDT.CO═á ma∙ ì
  119. ááááááááábσ locateΣ oε disδ A¼á use≥ 5¼á whilσ tw∩ copie≤ oµ ì
  120. áááááááááED.CO═ ma∙ bσ locateΣ oε disδ A¼ use≥ ╡ anΣ disδ A¼ ì
  121. áááááááááuse≥ 0«á  Thσ combinatioε oµ thσ disδ referencσ anΣ ì
  122. áááááááááuse≥á numbe≥ identifie≤ thσ logica∞ director∙ whicΦ ì
  123. áááááááááa file belongs in.
  124.  
  125. ááááááááá      Thσ logica∞ director∙ i≤ usuall∙ indicateΣ a≤ ì
  126. ááááááááápar⌠á oµ thσ prompt«á  Iε thσ example≤á below¼á thσ ì
  127. áááááááááreade≥ caε seσ thσ logica∞ director∙ referreΣ t∩ b∙ ì
  128. áááááááááit≤ disδ anΣ use≥ numbe≥ and¼á iε mos⌠ cases¼á b∙ ß ì
  129. ááááááááánamσ associateΣ witΦ thσ disδ anΣ use≥ number«  Thσ ì
  130. áááááááááfollowinτá example≤á illustratσ thσ usσ oµá thσá D╒ ì
  131. ááááááááá(disk/user⌐ forφ anΣ thσ DI╥ (director∙ name⌐á forφ ì
  132. ááááááááát∩ loτ int∩ variou≤ use≥ area≤ anΣ directories.
  133.  
  134. A0:BASE>15:
  135. A15:ROOT>4:
  136. A4>b:
  137. B4:WORK4>0:
  138. B0:WORK1>a14:
  139. A14>a0:
  140. A0:BASE>root:
  141. A15:ROOT>work2:
  142.  
  143. ááááááááá      Command≤ ma∙ usσ eithe≥ thσ D╒ o≥ DI╥ forφ t∩ ì
  144. áááááááááreferencσá thσ logica∞ directorie≤ the∙ arσ t∩á ac⌠ ì
  145. áááááááááupon«  Interpretatioε oµ thσ namσ oµ ß director∙ i≤ ì
  146. ááááááááábuil⌠á int∩ thσ ZCPR│ commanΣ processo≥ itself¼á s∩ ì
  147. áááááááááever∙á commanΣ caε worδ witΦ thσ D╒ anΣá DI╥á form≤ ì
  148. áááááááááwitΦ equa∞ ease.
  149.  
  150. ááááááááá      Command≤á likσá DBAS┼ whicΦ don'⌠ kno≈á abou⌠ ì
  151. áááááááááthσ D╒ o≥ DI╥ form≤ wil∞ usuall∙ jus⌠ pa∙ attentioε ì
  152. ááááááááát∩á thσá disδ referenceΣ anΣ no⌠ thσá use≥á number«  ì
  153. áááááááááFo≥ command≤ likσ these¼ i⌠ i≤ usuall∙ bes⌠ t∩ jus⌠ ì
  154. áááááááááemplo∙á thσá disδ lette≥ wheεá referrinτá t∩á thei≥ ì
  155. áááááááááarguments.
  156.  
  157.  
  158. B1:WORK2>dir base:
  159.  RHEX    .COM    2 
  160.             A0:BASE --     1 Files Using     2K (  206K Left)
  161.  
  162. B1:WORK2>base:
  163.  
  164. ááááááááá      Thσáá PW─á commanΣá display≤á thσá name≤á anΣ ì
  165. áááááááááassociateΣá D╒á form≤á oµá al∞á directorie≤áá whicΦ ì
  166. ááááááááácurrentl∙ááá havσááá name≤áá assigneΣáá t∩ááá them«  ì
  167. áááááááááAdditionally¼ wheε usinτ thσ DI╥ forφ t∩ loτ int∩ ß ì
  168. ááááááááádirector∙ (seσ PRIVAT┼ below)¼ ß director∙ s∩ nameΣ ì
  169. áááááááááma∙ havσ ß passworΣ associateΣ witΦ it«  Iµ so¼ thσ ì
  170. áááááááááuse≥ i≤ prompteΣ fo≥ thi≤ passworΣ anΣ thσá commanΣ ì
  171. áááááááááwil∞á fai∞á iµá hσá doe≤ no⌠á providσá thσá correc⌠ ì
  172. ááááááááápassword.
  173.  
  174. A0:BASE>pwd
  175. PWD, Version 1.0
  176.  DU : DIR Name     DU : DIR Name     DU : DIR Name     DU : DIR Name    
  177. ----  --------    ----  --------    ----  --------    ----  --------    
  178. A  0: BASE        A  1: PRIVATE     A 15: ROOT        
  179.  
  180. B  0: WORK1       B  1: WORK2       B  2: WORK3       B  4: WORK4       
  181. B  5: TEXT        B  6: MAIL        
  182.  
  183. A0:BASE>private:
  184. PW? unknown
  185.  
  186. A0:BASE>private:
  187. PW? mypass
  188.  
  189. A1:PRIVATE>dir
  190.             A1:PRIVATE --     0 Files Using     0K (  206K Left)
  191.  
  192. A1:PRIVATE>base:
  193.  
  194. A0:BASE>dir private:
  195. PW? mypass
  196.             A1:PRIVATE --     0 Files Using     0K (  206K Left)
  197. A0:BASE>dir a1:
  198.             A1:PRIVATE --     0 Files Using     0K (  206K Left)
  199.  
  200. .fo Wheel Users and Passwords                          #
  201.  
  202. 2. W h e e l   U s e r s   a n d   P a s s w o r d s 
  203.  
  204. ááááááááá      PassworΣá protectioε i≤ commoεá unde≥á ZCPR3«  ì
  205. áááááááááSevera∞á oµ thσ ZCPR│ utilitie≤ responΣ onσ wa∙á iµ ì
  206. áááááááááthσ use≥ i≤ privelegeΣ (ß Wheel⌐ o≥ no⌠ priveleged«  ì
  207. ááááááááá┴á use≥á become≤á privelegeΣ b∙ runninτá thσá WHEE╠ ì
  208. ááááááááácommanΣ anΣ givinτ thσ Whee∞ Password.
  209.  
  210. A0:BASE>mkdir
  211. MKDIR, Version 3.0
  212.  Permission to Run MKDIR Denied - Not Wheel
  213.  
  214. A0:BASE>pwd pass
  215. PWD, Version 1.0
  216.  Password Request Denied - Not Wheel
  217.  DU : DIR Name     DU : DIR Name     DU : DIR Name     DU : DIR Name    
  218. ----  --------    ----  --------    ----  --------    ----  --------    
  219. A  0: BASE        A  1: PRIVATE     A 15: ROOT        
  220.  
  221. B  0: WORK1       B  1: WORK2       B  2: WORK3       B  4: WORK4       
  222. B  5: TEXT        B  6: MAIL        
  223.  
  224. A0:BASE>wheel /s
  225. WHEEL, Version 3.0
  226.  Wheel Password?  Wheel Byte is ON
  227.  
  228. A0:BASE>pwd pass
  229. PWD, Version 1.0
  230.  DU : DIR Name - Password     DU : DIR Name - Password    
  231. ----  --------   --------    ----  --------   --------    
  232. A  0: BASE     -             A  1: PRIVATE  - MYPASS      
  233. A 15: ROOT     -             
  234.  
  235. B  0: WORK1    -             B  1: WORK2    -             
  236. B  2: WORK3    -             B  4: WORK4    -             
  237. B  5: TEXT     -             B  6: MAIL     -             
  238.  
  239. A0:BASE>private:
  240. PW? mypass
  241.  
  242. A1:PRIVATE>root:
  243.  
  244.  
  245. A15:ROOT>mkdir sys.ndr
  246. MKDIR, Version 3.0
  247.  
  248. MKDIR Command (? for Help)? C
  249. ** MKDIR Change Mode **
  250. Directory Entry (?<RETURN> for Help)? a2:priv2
  251.         Adding PRIV2    -- Password? mypass2
  252.  10 Entries in Directory
  253. Directory Entry (?<RETURN> for Help)? 
  254.  DU : DIR Name - Password     DU : DIR Name - Password    
  255. ----  --------   --------    ----  --------   --------    
  256. A  0: BASE     -             A  1: PRIVATE  - MYPASS      
  257. A  2: PRIV2    - MYPASS2     A 15: ROOT     -             
  258.  
  259. B  0: WORK1    -             B  1: WORK2    -             
  260. B  2: WORK3    -             B  4: WORK4    -             
  261. B  5: TEXT     -             B  6: MAIL     -             
  262.  
  263. Directory Entry (?<RETURN> for Help)? x
  264. MKDIR Command (? for Help)? X
  265.  
  266. Directory has changed since last Write
  267. Do you want to write Directory to Disk (Y/N)? Y
  268.  
  269. Name of File (<RETURN> = A 15: SYS     .NDR)? special.ndr
  270. Writing Directory to Disk ... Done
  271.  
  272.  
  273. ááááááááá      Iµá ß use≥ know≤ thσ righ⌠ password≤ anΣá ha≤ ì
  274. áááááááááthσ prope≥ Whee∞ privelege¼ hσ caε radicall∙ changσ ì
  275. áááááááááthσ director∙ structure¼á bringinτ ne≈á directorie≤ ì
  276. áááááááááwhicΦ werσ previousl∙ undefineΣ int∩ existence.
  277.  
  278. ááááááááá      Thσá abilit∙á t∩ loτ int∩ ß director∙ caεá bσ ì
  279. ááááááááácontrolleΣ b∙ thσ installer«  A⌠ installatioε time¼ ì
  280. áááááááááthσá abilit∙á t∩ usσ D╒ anΣ DI╥ form≤ t∩á loτá int∩ ì
  281. ááááááááádirectorie≤áá o≥á referencσá directorie≤áá caεáá bσ ì
  282. áááááááááestablished«  Oε ß morσ securσ system¼ fo≥ example¼ ì
  283. áááááááááthσá abilit∙á t∩á usσ thσ D╒ forφá ma∙á bσá denied«  ì
  284. áááááááááThen¼á onl∙á directorie≤á defineΣá b∙ namσá ma∙á bσ ì
  285. áááááááááaccesseΣ (DI╥ form)¼ and¼ iµ thesσ directorie≤ havσ ì
  286. ááááááááápassword≤áá associateΣá witΦáá them¼áá thσáá prope≥ ì
  287. ááááááááápassword≤ mus⌠ bσ given.
  288.  
  289. A15:ROOT>ldr special.ndr
  290. ZCPR3 LDR, Version 1.0
  291.  Loading SPECIAL.NDR
  292.  
  293.  
  294. A15:ROOT>pwd
  295. PWD, Version 1.0
  296.  DU : DIR Name     DU : DIR Name     DU : DIR Name     DU : DIR Name    
  297. ----  --------    ----  --------    ----  --------    ----  --------    
  298. A  0: BASE        A  1: PRIVATE     A  2: PRIV2       A 15: ROOT        
  299.  
  300. B  0: WORK1       B  1: WORK2       B  2: WORK3       B  4: WORK4       
  301. B  5: TEXT        B  6: MAIL        
  302.  
  303. A15:ROOT>priv2:
  304. PW? mypass2
  305.  
  306. A2:PRIV2>wheel system r
  307. WHEEL, Version 3.0
  308.  Wheel Byte is OFF
  309.  
  310. A2:PRIV2>pwd pass
  311. PWD, Version 1.0
  312.  Password Request Denied - Not Wheel
  313.  DU : DIR Name     DU : DIR Name     DU : DIR Name     DU : DIR Name    
  314. ----  --------    ----  --------    ----  --------    ----  --------    
  315. A  0: BASE        A  1: PRIVATE     A  2: PRIV2       A 15: ROOT        
  316.  
  317. B  0: WORK1       B  1: WORK2       B  2: WORK3       B  4: WORK4       
  318. B  5: TEXT        B  6: MAIL        
  319.  
  320. .fo Command Lines                                      #
  321. 3. C o m m a n d   L i n e s 
  322.  
  323. ááááááááá      Thσáá followinτá termina∞á sessioεáá extract≤ ì
  324. áááááááááshoulΣá bσá clea≥ abou⌠ commanΣ line≤ unde≥á ZCPR3«  ì
  325. áááááááááComment≤ arσ includeΣ iε thσ termina∞ sessions.
  326.  
  327.  
  328. A0:BASE>; Any Line beginning with a semicolon is a comment
  329. A0:BASE>note Any line whose verb is the word "NOTE" is a comment
  330. A0:BASE>note NOTE is handy to insert comments into lines with more than
  331. A0:BASE>note   one command in them
  332. A0:BASE>note Such lines separate commands with a semicolon
  333.  
  334.  
  335. A0:BASE>dir;note I just did a directory display
  336.  RHEX    .COM    2 
  337.             A0:BASE --     1 Files Using     2K (  204K Left)
  338.  
  339.  
  340. A0:BASE>dir;NOTE This line contains 3 commands (incl one NOTE);dir root:
  341.  RHEX    .COM    2 
  342.             A0:BASE --     1 Files Using     2K (  204K Left)
  343.  MYTERM  .Z3T    2r| SPECIAL .NDR    2 | SYS     .ENV    2r| SYS     .FCP    2r
  344.  SYS     .NDR    2r| SYS     .RCP    2r| SYS1    .FCP    2r| SYS1    .RCP    2r
  345.  SYS2    .FCP    2r| SYS2    .RCP    2r| SYS3    .RCP    2r| Z3TCAP  .TCP    8r
  346.              A15:ROOT --    12 Files Using    30K (  204K Left)
  347.  
  348.  
  349. A0:BASE>era *.com i;dir;NOTE See the extended options on the basic commands?
  350.  RHEX    .COM - Erase (Y/N)? n
  351.  RHEX    .COM    2 
  352.             A0:BASE --     1 Files Using     2K (  204K Left)
  353.  
  354. .fo Command Processing                                 #
  355. 4. C o m m a n d   P r o c e s s i n g 
  356.  
  357. ááááááááá      Wheεá ßá ZCPR│á use≥á issue≤á ßá command¼áá ß ì
  358. ááááááááásequencσ oµ event≤ take≤ placσ iε orde≥ t∩ identif∙ ì
  359. ááááááááátha⌠ commanΣ anΣ executσ it.
  360.  
  361. ááááááááá      This sequence is outlined briefly:
  362.  
  363. ááááááááá           1⌐ thσ commanΣ i≤ parsed╗ thσ firs⌠ worΣ ì
  364. áááááááááiεá thσ commanΣ linσ (o≥ sublinσ iµ semicolon≤á arσ ì
  365. áááááááááuseΣá t∩á placσá severa∞ command≤ oε onσá line⌐á i≤ ì
  366. ááááááááátaken to be the name of the command
  367.  
  368. ááááááááá           2⌐á ZCPR│ check≤ t∩ seσ iµ thi≤á commanΣ ì
  369. ááááááááái≤á ß Flo≈ CommanΣ (IF/ELSE/FI/XIF)¼á and¼á iµá so¼ ì
  370. áááááááááZCPR3 runs the command
  371.  
  372. ááááááááá           3⌐á ZCPR│á theεá check≤ t∩á seσá iµá thσ ì
  373. ááááááááácurren⌠á I╞ conditioε i≤ TRUE╗á IF≤ ma∙á bσá nesteΣ ì
  374. áááááááááeigh⌠á level≤ dee≡ unde≥ ZCPR3╗á iµ thσ curren⌠á I╞ ì
  375. áááááááááconditioε i≤ TRUE¼ ZCPR│ continues¼ elsσ i⌠ flushe≤ ì
  376. áááááááááthe command and goes on to the next command
  377.  
  378. ááááááááá           4⌐á ZCPR│á theεá check≤ t∩á seσá iµá thσ ì
  379. ááááááááácommanΣá i≤ buil⌠ int∩ thσ ZCPR│ CommanΣá Processo≥ ì
  380. áááááááááitself╗ iµ so¼ ZCPR│ run≤ thσ command
  381.  
  382. ááááááááá           5⌐á ZCPR│á theεá check≤ t∩á seσá iµá thσ ì
  383. ááááááááácommanΣ i≤ buil⌠ int∩ thσ curren⌠ Residen⌠á CommanΣ ì
  384. áááááááááPackage (RCP); if so, ZCPR3 runs the command
  385.  
  386. ááááááááá           6⌐ ZCPR│ theε searche≤ alonτ ß serie≤ oµ ì
  387. ááááááááádirectorie≤á indicateΣ b∙ ß command-searcΦ patΦ fo≥ ì
  388. áááááááááßá CO═ filσ witΦ thσ samσ namσ a≤ thσá command╗á iµ ì
  389. áááááááááfound, ZCPR3 loads the COM file and runs it
  390.  
  391. ááááááááá           7⌐ finally¼á iµ al∞ oµ thσ abovσá fails¼ ì
  392. áááááááááZCPR│á invoke≤á aεá erro≥ handle≥á o≥á aεá extendeΣ ì
  393. ááááááááácommanΣá processo≥á t∩á proces≤ thσ commanΣá a≤á aε ì
  394. áááááááááerror or to try to resolve it further
  395.  
  396. ááááááááá      Some examples:
  397.  
  398. A0:BASE>work2:
  399.  
  400. B1:WORK2>dir
  401.             B1:WORK2 --     0 Files Using     0K (  302K Left)
  402.  
  403.  
  404. B1:WORK2>NOTE in many ZCPR3 systems, you will find RCPs -
  405. B1:WORK2>NOTE   Resident Command Packages
  406. B1:WORK2>NOTE this system has several, located in the ROOT
  407. B1:WORK2>dir root:*.rcp
  408.  SYS     .RCP    2r| SYS1    .RCP    2r| SYS2    .RCP    2r| SYS3    .RCP    2r
  409.              A15:ROOT --     4 Files Using     8K (  204K Left)
  410.  
  411. B1:WORK2>NOTE SYS.RCP is the default RCP I use
  412. B1:WORK2>NOTE the H command tells the user what RCP he has loaded and
  413. B1:WORK2>NOTE    what commands are available in it
  414. B1:WORK2>h
  415. SYS 1.0A
  416.   CP    ECHO  ERA   LIST
  417.   NOTE  P     POKE  PROT
  418.   REN   TYPE
  419.  
  420. B1:WORK2>NOTE there are 10 commands in this RCP
  421. B1:WORK2>cp work2:=base:rhex.com
  422.  Done
  423.  
  424. B1:WORK2>dir
  425.  RHEX    .COM    2 
  426.             B1:WORK2 --     1 Files Using     2K (  300K Left)
  427.  
  428. B1:WORK2>cp rhex2.com=rhex.com
  429.  Done
  430.  
  431. B1:WORK2>dir
  432.  RHEX    .COM    2 | RHEX2   .COM    2 
  433.             B1:WORK2 --     2 Files Using     4K (  298K Left)
  434.  
  435. B1:WORK2>era *.com i
  436.  RHEX    .COM - Erase (Y/N)? n
  437.  RHEX2   .COM - Erase (Y/N)? y
  438.  
  439. B1:WORK2>cp rhex1.com=rhex.com;cp rhex2.com=rhex.com
  440.  Done
  441.  Done
  442.  
  443. B1:WORK2>prot *.* r
  444.  RHEX    .COM Set to R/O
  445.  RHEX1   .COM Set to R/O
  446.  RHEX2   .COM Set to R/O
  447.  
  448. B1:WORK2>dir
  449.  RHEX    .COM    2r| RHEX1   .COM    2r| RHEX2   .COM    2r
  450.             B1:WORK2 --     3 Files Using     6K (  296K Left)
  451.  
  452. B1:WORK2>prot rhex1.com
  453.  RHEX1   .COM Set to R/W
  454.  
  455.  
  456. B1:WORK2>era *.com
  457.  RHEX    .COM is R/O
  458.  RHEX1   .COM
  459.  RHEX2   .COM is R/O
  460.  
  461. B1:WORK2>dir
  462.  RHEX    .COM    2r| RHEX2   .COM    2r
  463.             B1:WORK2 --     2 Files Using     4K (  298K Left)
  464.  
  465. B1:WORK2>echo this command simply echos the command line, as in messages
  466. THIS COMMAND SIMPLY ECHOS THE COMMAND LINE, AS IN MESSAGES
  467.  
  468. B1:WORK2>ed demo.txt
  469.  
  470. NEW FILE
  471.      : *i
  472.     1:  This is a test
  473.     2:  This is only a test
  474.     3:  
  475.      : *e
  476.  
  477. B1:WORK2>cp demo2.txt=demo.txt
  478.  Done
  479.  
  480. B1:WORK2>dir *.txt
  481.  DEMO    .TXT    2 | DEMO2   .TXT    2 
  482.             B1:WORK2 --     2 Files Using     4K (  294K Left)
  483.  
  484. B1:WORK2>ren demo1.txt=demo2.txt
  485.  
  486. B1:WORK2>cp demo2.txt=demo.txt
  487.  Done
  488.  
  489. B1:WORK2>dir *.txt
  490.  DEMO    .TXT    2 | DEMO1   .TXT    2 | DEMO2   .TXT    2 
  491.             B1:WORK2 --     3 Files Using     6K (  292K Left)
  492.  
  493. B1:WORK2>ren demo1.txt=demo2.txt
  494.  DEMO1   .TXT - Erase (Y/N)? n
  495.  
  496. B1:WORK2>type demo.txt
  497.  
  498. This is a test
  499. This is only a test
  500.  
  501.  
  502. B1:WORK2>type *.txt
  503.  
  504. This is a test
  505. This is only a test
  506.  
  507.  Typing  DEMO    .TXT -  
  508.  
  509. This is a test
  510. This is only a test
  511.  
  512.  Typing  DEMO1   .TXT -  
  513.  
  514. This is a test
  515. This is only a test
  516.  
  517. B1:WORK2>p 8000 801f;NOTE I look at memory
  518.  Peek at 8000
  519.  8000 -  C3 29 00 C3 CE 80 C3 47 81 C3 82 81 C3 67 81 C3 |C).CN.CG.C..Cg.C|
  520.  8010 -  7E 81 C3 E9 80 C3 22 81 C3 10 81 80 F3 00 00 11 |~.Ci.C".C...s...|
  521.  
  522. B1:WORK2>p 0 f;NOTE anywhere in memory
  523.  Peek at 0000
  524.  0000 -  C3 03 E2 01 11 C3 06 D4 00 FF 00 FF 00 FF 00 FF |C.b..C.T........|
  525.  
  526. B1:WORK2>poke 8000 1 2 3 "this is a test
  527.  Poke at 8000
  528.  
  529. B1:WORK2>p 8000 801f
  530.  Peek at 8000
  531.  8000 -  01 02 03 54 48 49 53 20 49 53 20 41 20 54 45 53 |...THIS IS A TES|
  532.  8010 -  54 81 C3 E9 80 C3 22 81 C3 10 81 80 F3 00 00 11 |T.Ci.C".C...s...|
  533.  
  534. B1:WORK2>NOTE the RCP commands can be changed by loading a new RCP
  535. B1:WORK2>ldr root:sys3.rcp
  536. ZCPR3 LDR, Version 1.0
  537.  Loading SYS3.RCP
  538. B1:WORK2>h
  539. SYS 1.0C
  540.   CP    ECHO  ERA   NOTE
  541.   P     POKE  REN   TYPE
  542.   WHL   WHLQ
  543.  
  544. B1:WORK2>cp demo3.txt=demo.txt
  545.  No Wheel
  546.  
  547. B1:WORK2>era *.txt
  548.  No Wheel
  549.  
  550. B1:WORK2>wheel system s
  551. WHEEL, Version 3.0
  552.  Wheel Byte is ON
  553.  
  554.  
  555. B1:WORK2>cp demo3.txt=demo.txt
  556.  Done
  557.  
  558.  
  559. ááááááááá      Somσ example≤ oµ Flo≈ Commands¼á invokeΣ froφ ì
  560. áááááááááFlo≈ CommanΣ Package≤ (FCPs⌐ follow:
  561.  
  562. B1:WORK2>NOTE now for Flow Command Packages:
  563. B1:WORK2>NOTE under FCPs, we have IF/ELSE/FI (ENDIF)/XIF (Exit All IFs)
  564. B1:WORK2>NOTE   Flow Commands:
  565.  
  566. B1:WORK2>if exist demo.txt
  567.  IF T
  568.  
  569. B1:WORK2>type demo.txt
  570.  
  571. This is a test
  572. This is only a test
  573.  
  574. B1:WORK2>else
  575.  IF F
  576.  
  577. B1:WORK2>type demo2.txt
  578.  
  579. B1:WORK2>fi
  580.  To No IF 
  581.  
  582. B1:WORK2>if ~exist demo.txt
  583.  IF F
  584.  
  585. B1:WORK2>type demo.txt
  586.  
  587. B1:WORK2>else
  588.  IF T
  589.  
  590. B1:WORK2>type demo2.txt
  591.  
  592. This is a test
  593. This is only a test
  594.  
  595. B1:WORK2>fi
  596.  To No IF 
  597.  
  598. B1:WORK2>if exist *.txt
  599.  IF T
  600.  
  601. B1:WORK2>type demo.txt
  602.  
  603. This is a test
  604. This is only a test
  605.  
  606.  
  607. B1:WORK2>echo we are in a TRUE IF
  608. WE ARE IN A TRUE IF
  609.  
  610. B1:WORK2>xif
  611.  To No IF 
  612.  
  613. B1:WORK2>NOTE IFs can be nested up to 8 levels deep:
  614. B1:WORK2>if exist demo.txt
  615.  IF T
  616. B1:WORK2>if exist demo2.txt
  617.  IF T
  618. B1:WORK2>if exist demo.txt
  619.  IF T
  620. B1:WORK2>if exist demo3.txt
  621.  IF T
  622. B1:WORK2>else
  623.  IF F
  624. B1:WORK2>fi
  625.  To IF T
  626. B1:WORK2>fi;fi;fi
  627.  To IF T
  628.  To IF T
  629.  To No IF 
  630.  
  631. ááááááááá      CommanΣ file≤ anΣ commanΣ filσ processor≤ arσ ì
  632. ááááááááádiscusseΣ next«á  ZEX¼á ß memory-baseΣ commanΣ filσ ì
  633. áááááááááprocessor¼á i≤á designeΣ t∩ bσ thσá principa∞á too∞ ì
  634. áááááááááused.
  635.  
  636.  
  637. B1:WORK2>NOTE ZEX is the command-file processor, memory-based
  638. B1:WORK2>NOTE   Under ZEX, there is a GOTO command which works
  639. B1:WORK2>NOTE   in conjunction with IFs to provide looping capability
  640. B1:WORK2>ed demo.zex
  641.  
  642. NEW FILE
  643.      : *i
  644.     1:  NOTE Set Register 1 to 0;reg s1 0
  645.     2:  ;=loop
  646.     3:  NOTE Exit all pending IFs;xif
  647.     4:  NOTE Add 1 to Register 1;reg p1
  648.     5:  NOTE Test for end of loop;if ~1 3
  649.     6:  NOTE Branch to LOOP if Register 1 <> 3;goto loop
  650.     7:  NOTE Done with IF if Register 1 = 3;fi
  651.     8:  
  652.      : *e
  653.  
  654.  
  655. B1:WORK2>type demo.zex
  656.  
  657. NOTE Set Register 1 to 0;reg s1 0
  658. ;=loop
  659. NOTE Exit all pending IFs;xif
  660. NOTE Add 1 to Register 1;reg p1
  661. NOTE Test for end of loop;if ~1 3
  662. NOTE Branch to LOOP if Register 1 <> 3;goto loop
  663. NOTE Done with IF if Register 1 = 3;fi
  664.  
  665.  
  666. ááááááááá      Herσá i≤ aε actua∞ ruε oµ ß ZE╪ commanΣá filσ ì
  667. ááááááááá(DEMO.ZEX⌐ whicΦ illustrate≤ looping:
  668.  
  669. B1:WORK2>zex demo
  670. ZEX, Version 3.0
  671.  
  672.                             -- Pass 1 --
  673.  
  674. B1:WORK2> ZEX: NOTE Set Register 1 to 0;reg s1 0
  675. REG, Version 1.0
  676.  Reg 1 =   0
  677. B1:WORK2> ZEX: ;=loop
  678. B1:WORK2> ZEX: NOTE Exit all pending IFs;xif
  679.  To No IF 
  680. B1:WORK2> ZEX: NOTE Add 1 to Register 1;reg p1
  681. REG, Version 1.0
  682.  Reg 1 =   1
  683. B1:WORK2> ZEX: NOTE Test for end of loop;if ~1 3
  684.  IF T
  685. B1:WORK2> ZEX: NOTE Branch to LOOP if Register 1 <> 3;goto loop
  686.  GOTO Label LOOP
  687.  
  688.                             -- Pass 2 --
  689.  
  690. B1:WORK2> ZEX: NOTE Exit all pending IFs;xif
  691.  To No IF 
  692. B1:WORK2> ZEX: NOTE Add 1 to Register 1;reg p1
  693. REG, Version 1.0
  694.  Reg 1 =   2
  695. B1:WORK2> ZEX: NOTE Test for end of loop;if ~1 3
  696.  IF T
  697. B1:WORK2> ZEX: NOTE Branch to LOOP if Register 1 <> 3;goto loop
  698.  GOTO Label LOOP
  699.  
  700.  
  701.                             -- Pass 3 --
  702.  
  703. B1:WORK2> ZEX: NOTE Exit all pending IFs;xif
  704.  To No IF 
  705. B1:WORK2> ZEX: NOTE Add 1 to Register 1;reg p1
  706. REG, Version 1.0
  707.  Reg 1 =   3
  708. B1:WORK2> ZEX: NOTE Test for end of loop;if ~1 3
  709.  IF F
  710.  
  711.                              -- Done --
  712.  
  713. B1:WORK2> ZEX: NOTE Branch to LOOP if Register 1 <> 4;goto loop
  714. B1:WORK2> ZEX: NOTE Done with IF if Register 1 = 3;fi
  715.  To No IF 
  716. B1:WORK2> ZEX: Done>
  717.  
  718.  
  719. ááááááááá      Thσá examplσ abovσ wa≤ fo≥ academiπ purposes«  ì
  720. áááááááááTw∩ example≤ oµ ZE╪ commanΣ file≤ whicΦ ╔ usσ ever∙ ì
  721. áááááááááda∙á follow«á  Onσ commanΣ filσ assemble≤á program≤ ì
  722. áááááááááfo≥ mσ usinτ thσ MA├ assembler¼á anΣ thσ othe≥ use≤ ì
  723. áááááááááthσ M8░ assemble≥ witΦ none¼á one¼á two¼á three¼ o≥ ì
  724. áááááááááfou≥ libraries¼á generatinτ differen⌠ commanΣ line≤ ì
  725. ááááááááádependinτ upoε ho≈ man∙ librarie≤ werσ specifieΣ iε ì
  726. áááááááááthσ origina∞ commanΣ line.
  727.  
  728.                ---- Command File for MAC Assembly ----
  729.  
  730. ;  MAC -- CP/M Standard MACRO Assembler and Loader
  731. MAC $1 $$PZ SZ
  732. IF INPUT Type N or F to Abort if Errors Exist
  733. ERA $1.BAK
  734. ERA $1.COM
  735. MLOAD $1
  736. FI
  737. ERA $1.HEX
  738. ;  Assembly Complete
  739.  
  740.  
  741.                ---- Command File for M80 Assembly ----
  742.  
  743. ;
  744. ;  M80.ZEX -- MACRO-80 Assembler and Linker
  745. ;     Up to 4 Libraries Specified
  746. ;
  747. ;  ^& Suppress FALSE IF Printout
  748. ;
  749. if nul $1 ;note Print Error Message
  750. echo      **** No Parameter Specified ****
  751. else      ;note Perform Assembly
  752. M80 =$1
  753. if input Type T to Continue or F to Abort (in case of Errors)
  754. ERA $1.BAK
  755. ERA $1.COM
  756. if ~nul $5 ;note Link 4 Additional Libraries
  757. L80 /P:100,$1,$2/S,$3/S,$4/S,$5/S,A:Z3LIB/S,A:SYSLIB/S,$1/N,/U,/E
  758. goto done
  759. fi
  760. if ~nul $4 ;note Link 3 Additional Libraries
  761. L80 /P:100,$1,$2/S,$3/S,$4/S,A:Z3LIB/S,A:SYSLIB/S,$1/N,/U,/E
  762. goto done
  763. fi
  764. if ~nul $3 ;note Link 2 Additional Libraries
  765. L80 /P:100,$1,$2/S,$3/S,A:Z3LIB/S,A:SYSLIB/S,$1/N,/U,/E
  766. goto done
  767. fi
  768. if ~nul $2 ;note Link 1 Additional Library
  769. L80 /P:100,$1,$2/S,A:Z3LIB/S,A:SYSLIB/S,$1/N,/U,/E
  770. goto done
  771. else       ;note Standard Link
  772. L80 /P:100,$1,A:Z3LIB/S,A:SYSLIB/S,$1/N,/U,/E
  773. ;=done          Done with Link
  774. fi         ;note on IF ~NUL Tests
  775. fi         ;note on IF INPUT
  776. ERA $1.REL
  777. fi         ;note on IF NUL
  778. ;
  779. ;  Assembly Complete
  780. ;
  781.  
  782. .fo Error Handlers                                     #
  783. 5. E r r o r   H a n d l e r s 
  784.  
  785. ááááááááá      Erro≥á Handler≤á arσá program≤á whicΦá handlσ ì
  786. ááááááááácommanΣ linσ error≤ iε ß "niceó way«á  The∙ ma∙á bσ ì
  787. áááááááááuseΣ anywhere¼á includinτ withiε ZE╪ commanΣ files«  ì
  788. ááááááááá┴ fe≈ examples:
  789.  
  790. B1:WORK2>NOTE There are a number of error handlers on this system:
  791. B1:WORK2>dir root:error?.com s
  792.  ERROR1  .COM    2r| ERROR2  .COM    4r| ERROR3  .COM    2r| ERROR4  .COM    2r
  793.              A15:ROOT --     4 Files Using    10K (  204K Left)
  794.  
  795.  
  796. ááááááááá      Erro≥ Handler≤ arσ installeΣ b∙ simpl∙ givinτ ì
  797. ááááááááátheir name.
  798.  
  799. B1:WORK2>error4
  800. ERROR4, Version 1.0
  801.  Error Handler Installed
  802.  
  803. B1:WORK2>NOTE ERROR4 is a simpler error handler
  804. B1:WORK2>NOTE with the invalid command "XXXX";xxxx
  805.  
  806.  File XXXX.COM Not Found
  807.  
  808. B1:WORK2>NOTE ERROR4 simply says what happened
  809.  
  810.  
  811. ááááááááá      Erro≥á Handler≤á ma∙á var∙á iεá feature≤á anΣ ì
  812. ááááááááácomplexity«á  ERROR▒á i≤ onσ oµ thσá morσá complex«  ì
  813. áááááááááERROR2¼ b∙ thσ way¼ i≤ ß screen-orienteΣ versioε oµ ì
  814. áááááááááERROR1¼á usinτ reversσ vide∩ anΣ curso≥ addressing«  ì
  815. áááááááááSee the section on Z3TCAP later for more details.
  816.  
  817. B1:WORK2>error1;NOTE ERROR1 is a more sophisticated error handler
  818. ERROR1, Version 1.0
  819.  Error Handler Installed
  820.  
  821.  
  822. B1:WORK2>xxxx
  823.  
  824. ERROR1, Version 1.0
  825.  
  826. Error Line is:
  827.    XXXX
  828.  
  829. Options are: 
  830.  1. Replace Command in Error with a New Command
  831.      Replace XXXX
  832.  2. Advance to Next Command and Resume Processing
  833.      Advance to 
  834.  3. Replace Entire Line with a New Line
  835.      Replace XXXX
  836.  4. Throw Away Entire Line and Continue
  837.      Throw Away XXXX
  838.  
  839. Select Option - 1
  840. Replacement Command?
  841.   dir
  842.  DEMO    .BAK    0 | DEMO    .TXT    2 | DEMO    .ZEX    2 | DEMO1   .TXT    2 
  843.  DEMO2   .TXT    2 | DEMO3   .TXT    2 | RHEX    .COM    2r| RHEX2   .COM    2r
  844.              B1:WORK2 --     8 Files Using    14K (  288K Left)
  845. B1:WORK2>xxxx;dir *.com
  846.  
  847. ERROR1, Version 1.0
  848.  
  849. Error Line is:
  850.    XXXX;DIR *.COM
  851.  
  852. Options are: 
  853.  1. Replace Command in Error with a New Command
  854.      Replace XXXX
  855.  2. Advance to Next Command and Resume Processing
  856.      Advance to DIR *.COM
  857.  3. Replace Entire Line with a New Line
  858.      Replace XXXX;DIR *.COM
  859.  4. Throw Away Entire Line and Continue
  860.      Throw Away XXXX;DIR *.COM
  861.  
  862. Select Option - 2
  863.  
  864.  RHEX    .COM    2r| RHEX2   .COM    2r
  865.             B1:WORK2 --     2 Files Using     4K (  288K Left)
  866.  
  867. .fo Aliases                                            #
  868. 6. A l i a s e s 
  869.  
  870. ááááááááá      Aliase≤á arσ CO═ file≤ createΣ b∙á thσá ALIA╙ ì
  871. ááááááááácommanΣá whicΦá contaiε onσ o≥ morσá commanΣá line≤ ì
  872. áááááááááwhicΦá arσá invokeΣ wheε thσ Alia≤ namσá i≤á typed«  ì
  873. áááááááááParamete≥á passinτ int∩ thσ commanΣ line≤ withiε aε ì
  874. áááááááááAlia≤á i≤ supporteΣ iε ß manne≥ simila≥ t∩á commanΣ ì
  875. áááááááááfilσ paramete≥ passing«á  Aliase≤ arσ convenien⌠ t∩ ì
  876. ááááááááácreatσá commanΣ script≤ whicΦ arσ useΣá repeatedly¼ ì
  877. áááááááááanΣ thσ specia∞ commands¼á sucΦ a≤ STARTU╨ (useΣ oε ì
  878. ááááááááácolΣ boo⌠ t∩ ruε ß serie≤ oµ program≤ t∩ initializσ ì
  879. áááááááááthe system), are created as Aliases.
  880.  
  881.  
  882. B1:WORK2>NOTE you have to be a WHEEL to create ALIASes
  883. B1:WORK2>wheel /s
  884. WHEEL, Version 3.0
  885.  Wheel Password?  Wheel Byte is ON
  886.  
  887. B1:WORK2>NOTE a number of parameters and some information can be determined
  888. B1:WORK2>NOTE   and expanded by an alias
  889. B1:WORK2>alias
  890. ALIAS, Version 1.0
  891.  
  892.  Input Alias (RETURN to Abort)
  893.  --> echo The name of this Alias is $0;      <-- I ended these
  894. echo The current DU is $d$u:;                <-- lines with ^E
  895. echo and the first 4 parameters are:;
  896. echo $1 $2 $3 $4
  897.  Name of ALIAS Command (RETURN to Abort)? cmdstat
  898.  Alias Created
  899.  
  900. B1:WORK2>NOTE the alias is a very short file (under 2K)
  901. B1:WORK2>dir cmdstat.com
  902.  CMDSTAT .COM    2 
  903.             B1:WORK2 --     1 Files Using     2K (  292K Left)
  904.  
  905. B1:WORK2>cmdstat
  906.  
  907. THE NAME OF THIS ALIAS IS CMDSTAT
  908. THE CURRENT DU IS B1:
  909. AND THE FIRST 4 PARAMETERS ARE:
  910.  
  911. B1:WORK2>cmdstat this is a very short demo
  912.  
  913. THE NAME OF THIS ALIAS IS CMDSTAT
  914. THE CURRENT DU IS B1:
  915. AND THE FIRST 4 PARAMETERS ARE:
  916. THIS IS A VERY
  917.  
  918.  
  919. B1:WORK2>cmdstat hello, world
  920.  
  921. THE NAME OF THIS ALIAS IS CMDSTAT
  922. THE CURRENT DU IS B1:
  923. AND THE FIRST 4 PARAMETERS ARE:
  924. HELLO, WORLD  
  925.  
  926. B1:WORK2>NOTE aliases are convenient for a number of things --
  927. B1:WORK2>NOTE   they are intended primarily to replace tedious command
  928. B1:WORK2>NOTE   sequences with a simple command
  929. B1:WORK2>alias
  930. ALIAS, Version 1.0
  931.  
  932.  Input Alias (RETURN to Abort)
  933.  --> dir $1;era $1 i;dir $1
  934.  Name of ALIAS Command (RETURN to Abort)? exera
  935.  Alias Created
  936.  
  937. B1:WORK2>NOTE I now have an ALIAS which displays a directory of selected
  938. B1:WORK2>NOTE   files, allows me to erase them with inspection, and then
  939. B1:WORK2>NOTE   displays the same directory again to let me see the
  940. B1:WORK2>NOTE   results
  941. B1:WORK2>dir
  942.  CMDSTAT .COM    2 | DEMO    .TXT    2 | DEMO    .ZEX    2 | DEMO1   .TXT    2 
  943.  DEMO2   .TXT    2 | DEMO3   .TXT    2 | EXERA   .COM    2 | RHEX    .COM    2r
  944.  RHEX2   .COM    2r
  945.             B1:WORK2 --     9 Files Using    18K (  284K Left)
  946.  
  947.  
  948. ááááááááá      The following runs an Alias:
  949.  
  950. B1:WORK2>exera demo?.txt
  951.  
  952.  DEMO    .TXT    2 | DEMO1   .TXT    2 | DEMO2   .TXT    2 | DEMO3   .TXT    2 
  953.              B1:WORK2 --     4 Files Using     8K (  284K Left)
  954.  DEMO    .TXT - Erase (Y/N)? n
  955.  DEMO1   .TXT - Erase (Y/N)? y
  956.  DEMO2   .TXT - Erase (Y/N)? y
  957.  DEMO3   .TXT - Erase (Y/N)? n
  958.  DEMO    .TXT    2 | DEMO3   .TXT    2 
  959.             B1:WORK2 --     2 Files Using     4K (  288K Left)
  960.  
  961. B1:WORK2>exera demo3.txt
  962.  
  963.  DEMO3   .TXT    2 
  964.             B1:WORK2 --     1 Files Using     2K (  288K Left)
  965.  DEMO3   .TXT - Erase (Y/N)? y
  966.             B1:WORK2 --     0 Files Using     0K (  290K Left)
  967.  
  968.  
  969. B1:WORK2>NOTE also, since IFs are everywhere, they can be used in aliases:
  970. B1:WORK2>alias
  971. ALIAS, Version 1.0
  972.  
  973.  Input Alias (RETURN to Abort)
  974.  --> if exist $1;type $1 p;fi
  975.  Name of ALIAS Command (RETURN to Abort)? typeit
  976.  Alias Created
  977.  
  978. B1:WORK2>typeit demo.txt
  979.  
  980.  IF T
  981.  
  982. This is a test
  983. This is only a test
  984.  
  985.  To No IF 
  986.  
  987. B1:WORK2>cp demo1.txt=demo.txt
  988.  Done
  989.  
  990. B1:WORK2>dir demo?.txt
  991.  DEMO    .TXT    2 | DEMO1   .TXT    2 
  992.             B1:WORK2 --     2 Files Using     4K (  286K Left)
  993.  
  994. B1:WORK2>typeit demo?.txt
  995.  
  996.  IF T
  997.  
  998. This is a test
  999. This is only a test
  1000.  
  1001.  Typing  DEMO    .TXT -  
  1002.  
  1003. This is a test
  1004. This is only a test
  1005.  
  1006.  To No IF 
  1007.  
  1008. B1:WORK2>typeit nofile.txt
  1009.  
  1010.  IF F
  1011.  To No IF 
  1012.  
  1013.  
  1014. B1:WORK2>NOTE or I can expand TYPEIT to be better
  1015. B1:WORK2>alias typeit
  1016. ALIAS, Version 1.0
  1017.  Alias Name: TYPEIT  
  1018.  Old Alias Command Line:
  1019.   1 --> IF EXIST $1;
  1020.   2 --> TYPE $1 P;
  1021.   3 --> FI
  1022.  
  1023.  Input Alias (RETURN to Abort)
  1024.  --> if exist $1;type $1 p;else;echo file $1 not found;fi
  1025.  File TYPEIT  .COM Exists - Overwrite (Y/N)? Y
  1026.  
  1027.  Alias Created
  1028.  
  1029. B1:WORK2>typeit demo.txt
  1030.  
  1031.  IF T
  1032.  
  1033. This is a test
  1034. This is only a test
  1035.  
  1036.  IF F
  1037.  To No IF 
  1038.  
  1039. B1:WORK2>typeit nofile.txt
  1040.  
  1041.  IF F
  1042.  IF T
  1043. FILE NOFILE.TXT NOT FOUND
  1044.  To No IF 
  1045.  
  1046. .fo Shells                                             #
  1047. 7. S h e l l s 
  1048.  
  1049. ááááááááá      ZCPR│á Shell≤ arσ front-end≤ whicΦ providσá ß ì
  1050. áááááááááuse≥ interfacσ iε placσ oµ thσ norma∞ ZCPR│ prompt«  ì
  1051. áááááááááThσá followinτ termina∞ session≤ sho≈ thσ MEN╒á anΣ ì
  1052. áááááááááS╚ shell≤ iε action.
  1053.  
  1054.  
  1055. B1:WORK2>NOTE Shells are Front-End Processors which can run in place
  1056. B1:WORK2>NOTE   of the ZCPR3 Command Processor
  1057. B1:WORK2>NOTE Actually, the ZCPR3 Command Processor is still being
  1058. B1:WORK2>NOTE   used, but it is transparent to the user now
  1059. B1:WORK2>NOTE Two shells I am going to demonstrate now are MENU and
  1060. B1:WORK2>NOTE   SH:
  1061.  
  1062. B1:WORK2>dir root:menu.* a;dir root:sh*.* a
  1063.  MENU    .COM    4r
  1064.             A15:ROOT --     1 Files Using     4K (  204K Left)
  1065.  SH      .COM    4r| SHDEFINE.COM    4r| SHFILE  .COM    2r| SHOW    .COM    4r
  1066.  SHVAR   .COM    4r
  1067.             A15:ROOT --     5 Files Using    18K (  204K Left)
  1068.  
  1069. B1:WORK2>NOTE The MENU shell consists of only MENU.COM
  1070. B1:WORK2>NOTE The SH shell is SH.COM, but can use SHDEFINE, SHFILE, and SHVAR
  1071. B1:WORK2>NOTE   for support
  1072. B1:WORK2>NOTE First, MENU:
  1073.  
  1074. B1:WORK2>ed menu.cpr
  1075.  
  1076. NEW FILE
  1077.      : *i
  1078.     1:  -dx
  1079.     2:  #
  1080.     3:       Sample Menu
  1081.     4:   D - Directory Display
  1082.     5:   Z - Run Any ZCPR3 Command
  1083.     6:  
  1084.     7:   1 - Set Name of Working File (Currently $f1)
  1085.     8:   2 - Edit Working File
  1086.     9:   3 - Type Working File
  1087.    10:  #
  1088.    11:  d!dir
  1089.    12:  z!"Enter Command Line -- "
  1090.    13:  1setfile 1 "Enter File Name -- "
  1091.    14:  2ed $f1
  1092.    15:  3!type $f1
  1093.    16:  ##
  1094.    17:  
  1095.      : *e
  1096.  
  1097.  
  1098. ááááááááá      To run the MENU shell, just give its name.
  1099.  
  1100. B1:WORK2>menu
  1101.  Shell Installed
  1102. MENU  Version 3.0
  1103.      Sample Menu
  1104.  D - Directory Display
  1105.  Z - Run Any ZCPR3 Command
  1106.  
  1107.  1 - Set Name of Working File (Currently .)
  1108.  2 - Edit Working File
  1109.  3 - Type Working File
  1110. Command (<CR>=Menu, ^C=ZCPR3) - D
  1111.  CMDSTAT .COM    2 | MENU    .BAK    0 | DEMO    .TXT    2 | DEMO    .ZEX    2 
  1112.  DEMO1   .TXT    2 | EXERA   .COM    2 | MENU    .CPR    2 | RHEX    .COM    2r
  1113.  RHEX2   .COM    2r| TYPEIT  .COM    2 
  1114.             B1:WORK2 --    10 Files Using    18K (  284K Left)
  1115.  
  1116.  
  1117. MENU  Version 3.0 Strike Any Key - 
  1118.  
  1119.      Sample Menu
  1120.  D - Directory Display
  1121.  Z - Run Any ZCPR3 Command
  1122.  
  1123.  1 - Set Name of Working File (Currently .)
  1124.  2 - Edit Working File
  1125.  3 - Type Working File
  1126. Command (<CR>=Menu, ^C=ZCPR3) - Z
  1127. Enter Command Line -- dir *.com;era *.com i
  1128.  CMDSTAT .COM    2 | EXERA   .COM    2 | RHEX    .COM    2r| RHEX2   .COM    2r
  1129.  TYPEIT  .COM    2 
  1130.             B1:WORK2 --     5 Files Using    10K (  284K Left)
  1131.  CMDSTAT .COM - Erase (Y/N)? y
  1132.  EXERA   .COM - Erase (Y/N)? y
  1133.  RHEX    .COM is R/O
  1134.  RHEX2   .COM is R/O
  1135.  TYPEIT  .COM - Erase (Y/N)? y
  1136.  
  1137. MENU  Version 3.0 Strike Any Key - 
  1138.  
  1139.      Sample Menu
  1140.  D - Directory Display
  1141.  Z - Run Any ZCPR3 Command
  1142.  
  1143.  1 - Set Name of Working File (Currently .)
  1144.  2 - Edit Working File
  1145.  3 - Type Working File
  1146. Command (<CR>=Menu, ^C=ZCPR3) - Z
  1147. Enter Command Line -- prot rhex?.com;era rhex?.com
  1148.  RHEX    .COM Set to R/W
  1149.  RHEX2   .COM Set to R/W
  1150.  RHEX    .COM
  1151.  RHEX2   .COM
  1152. è
  1153. MENU  Version 3.0 Strike Any Key - 
  1154.  
  1155.      Sample Menu
  1156.  D - Directory Display
  1157.  Z - Run Any ZCPR3 Command
  1158.  
  1159.  1 - Set Name of Working File (Currently .)
  1160.  2 - Edit Working File
  1161.  3 - Type Working File
  1162. Command (<CR>=Menu, ^C=ZCPR3) - D
  1163.  DEMO    .BAK    0 | DEMO    .TXT    2 | DEMO    .ZEX    2 | DEMO1   .TXT    2 
  1164.  MENU    .CPR    2 
  1165.             B1:WORK2 --     5 Files Using     8K (  294K Left)
  1166.  
  1167.  
  1168. ááááááááá      MEN╒ support≤ u≡ t∩ ┤ filσ name≤ whicΦ caε bσ ì
  1169. áááááááááuseΣáá a≤á variable≤á withiεá MENU«áá  Thσáá commoε ì
  1170. áááááááááapplicatioεá i≤ t∩ usσ thesσ file≤ name≤ t∩ specif∙ ì
  1171. áááááááááworkinτ files.
  1172.  
  1173. MENU  Version 3.0 Strike Any Key - 
  1174.  
  1175.      Sample Menu
  1176.  D - Directory Display
  1177.  Z - Run Any ZCPR3 Command
  1178.  
  1179.  1 - Set Name of Working File (Currently .)
  1180.  2 - Edit Working File
  1181.  3 - Type Working File
  1182. Command (<CR>=Menu, ^C=ZCPR3) - 1
  1183. Enter File Name -- myfile.txt
  1184. SETFILE, Version 1.0
  1185.  File Name 1 is MYFILE  .TXT
  1186.  
  1187.  
  1188. MENU  Version 3.0
  1189.      Sample Menu
  1190.  D - Directory Display
  1191.  Z - Run Any ZCPR3 Command
  1192.  
  1193.  1 - Set Name of Working File (Currently MYFILE.TXT)
  1194.  2 - Edit Working File
  1195.  3 - Type Working File
  1196. Command (<CR>=Menu, ^C=ZCPR3) - 2
  1197.  
  1198. NEW FILE
  1199.      : *i
  1200.     1:  This is MYFILE.TXT
  1201.     2:  Isn't this fun?
  1202.     3:  
  1203.      : *b0p
  1204.     1:  This is MYFILE.TXT
  1205.     2:  Isn't this fun?
  1206.     1: *e
  1207. è
  1208. MENU  Version 3.0
  1209.      Sample Menu
  1210.  D - Directory Display
  1211.  Z - Run Any ZCPR3 Command
  1212.  
  1213.  1 - Set Name of Working File (Currently MYFILE.TXT)
  1214.  2 - Edit Working File
  1215.  3 - Type Working File
  1216. Command (<CR>=Menu, ^C=ZCPR3) - 3
  1217.  
  1218. This is MYFILE.TXT
  1219. Isn't this fun?
  1220.  
  1221. MENU  Version 3.0 Strike Any Key - 
  1222.  
  1223.      Sample Menu
  1224.  D - Directory Display
  1225.  Z - Run Any ZCPR3 Command
  1226.  
  1227.  1 - Set Name of Working File (Currently MYFILE.TXT)
  1228.  2 - Edit Working File
  1229.  3 - Type Working File
  1230. Command (<CR>=Menu, ^C=ZCPR3) - 2
  1231.      : *#a
  1232.     1: *i
  1233.     1:  I have modified MYFILE.TXT
  1234.     2:  
  1235.     2: *b0p
  1236.     1:  I have modified MYFILE.TXT
  1237.     2:  This is MYFILE.TXT
  1238.     3:  Isn't this fun?
  1239.     1: *e
  1240.  
  1241. MENU  Version 3.0
  1242.      Sample Menu
  1243.  D - Directory Display
  1244.  Z - Run Any ZCPR3 Command
  1245.  
  1246.  1 - Set Name of Working File (Currently MYFILE.TXT)
  1247.  2 - Edit Working File
  1248.  3 - Type Working File
  1249. Command (<CR>=Menu, ^C=ZCPR3) - 3
  1250.  
  1251. I have modified MYFILE.TXT
  1252. This is MYFILE.TXT
  1253. Isn't this fun?
  1254.  
  1255.  
  1256. MENU  Version 3.0 Strike Any Key - 
  1257.  
  1258.      Sample Menu
  1259.  D - Directory Display
  1260.  Z - Run Any ZCPR3 Command
  1261.  
  1262.  1 - Set Name of Working File (Currently MYFILE.TXT)
  1263.  2 - Edit Working File
  1264.  3 - Type Working File
  1265. Command (<CR>=Menu, ^C=ZCPR3) - ^C
  1266. B1:WORK2>
  1267.  
  1268.  
  1269.  
  1270. ááááááááá      Thσ followinτ i≤ ß demonstratioε oµ thσ ZCPR│ ì
  1271. áááááááááNamed-Variablσ Shell¼á SH«á  S╚ allows¼ amonτ othe≥ ì
  1272. áááááááááthings¼á thσá use≥á t∩á specif∙á variable≤á iεá hi≤ ì
  1273. ááááááááácommanΣ line≤ whicΦ arσ expandeΣ a≤ macro≤ wheε thσ ì
  1274. ááááááááácommanΣá line≤á arσ interpreteΣá b∙á SH«á  S╚á theε ì
  1275. ááááááááápasse≤á thσá expandeΣá commanΣ line≤ t∩á thσá ZCPR│ ì
  1276. áááááááááCommanΣ Processor¼ whicΦ execute≤ them.
  1277.  
  1278. B1:WORK2>NOTE Now I will demonstrate SH
  1279. B1:WORK2>sh
  1280. Shell Installed
  1281. B1:WORK2>> ;first, SH looks like the normal ZCPR3, except that the
  1282. B1:WORK2>> ;prompt is >>
  1283. B1:WORK2>> 
  1284. B1:WORK2>> ;commands run normally under SH:
  1285.  
  1286. B1:WORK2>> dir *.txt
  1287.  DEMO    .TXT    2 | DEMO1   .TXT    2 | MYFILE  .TXT    2 
  1288.             B1:WORK2 --     3 Files Using     6K (  292K Left)
  1289.  
  1290. B1:WORK2>> error4
  1291. ERROR4, Version 1.0
  1292.  Error Handler Installed
  1293.  
  1294. B1:WORK2>> NOTE Shells, like many things under ZCPR3, can be nested:
  1295. B1:WORK2>> menu
  1296.  Shell Installed
  1297. MENU  Version 3.0
  1298.      Sample Menu
  1299.  D - Directory Display
  1300.  Z - Run Any ZCPR3 Command
  1301.  
  1302.  1 - Set Name of Working File (Currently MYFILE.TXT)
  1303.  2 - Edit Working File
  1304.  3 - Type Working File
  1305. Command (<CR>=Menu, ^C=ZCPR3) - 3
  1306.  
  1307. I have modified MYFILE.TXT
  1308. This is MYFILE.TXT
  1309. Isn't this fun?
  1310.  
  1311. MENU  Version 3.0 Strike Any Key - 
  1312.  
  1313.      Sample Menu
  1314.  D - Directory Display
  1315.  Z - Run Any ZCPR3 Command
  1316.  
  1317.  1 - Set Name of Working File (Currently MYFILE.TXT)
  1318.  2 - Edit Working File
  1319.  3 - Type Working File
  1320. Command (<CR>=Menu, ^C=ZCPR3) - Z
  1321. Enter Command Line -- NOTE and, when I exit, I'm back to SH
  1322.  
  1323.  
  1324. MENU  Version 3.0 Strike Any Key - 
  1325.  
  1326.      Sample Menu
  1327.  D - Directory Display
  1328.  Z - Run Any ZCPR3 Command
  1329.  
  1330.  1 - Set Name of Working File (Currently MYFILE.TXT)
  1331.  2 - Edit Working File
  1332.  3 - Type Working File
  1333. Command (<CR>=Menu, ^C=ZCPR3) - ^C
  1334.  
  1335.  
  1336. B1:WORK2>> ; SH has some built-in commands, which can be determined by
  1337. B1:WORK2>> ; a ? command:
  1338. B1:WORK2>> ?
  1339. SH Commands --
  1340.   ?         SHCMT     SHECHO    SHEXIT  
  1341.  
  1342.  
  1343. B1:WORK2>> ; guess what SHEXIT does:
  1344. B1:WORK2>> shexit
  1345. Exiting Shell
  1346.  
  1347. B1:WORK2>NOTE oh, well, back to ZCPR3 ... but we were talking
  1348. B1:WORK2>NOTE about SH:
  1349. B1:WORK2>sh
  1350. Shell Installed
  1351.  
  1352. B1:WORK2>> ; SHCMT is intended to switch SH into a comment
  1353. B1:WORK2>> ; mode, for times like this when I want to record
  1354. B1:WORK2>> ; a lot of text and a few commands:
  1355. B1:WORK2>> shcmt
  1356.  
  1357. B1:WORK2; note that the prompt is now "B1:WORK2; "
  1358. B1:WORK2; I don't have to type the leading ; or the word NOTE
  1359. B1:WORK2; 
  1360. B1:WORK2; If I want to execute a command, I simply prefix it with
  1361. B1:WORK2; an exclamation mark:
  1362. B1:WORK2; !dir *.txt
  1363.  DEMO    .TXT    2 | DEMO1   .TXT    2 | MYFILE  .TXT    2 
  1364.             B1:WORK2 --     3 Files Using     6K (  292K Left)
  1365.  
  1366. B1:WORK2; !menu
  1367.  Shell Installed
  1368. MENU  Version 3.0
  1369.      Sample Menu
  1370.  D - Directory Display
  1371.  Z - Run Any ZCPR3 Command
  1372.  
  1373.  1 - Set Name of Working File (Currently MYFILE.TXT)
  1374.  2 - Edit Working File
  1375.  3 - Type Working File
  1376. Command (<CR>=Menu, ^C=ZCPR3) - 3
  1377.  
  1378. èI have modified MYFILE.TXT
  1379. This is MYFILE.TXT
  1380. Isn't this fun?
  1381.  
  1382. MENU  Version 3.0 Strike Any Key - 
  1383.  
  1384.      Sample Menu
  1385.  D - Directory Display
  1386.  Z - Run Any ZCPR3 Command
  1387.  
  1388.  1 - Set Name of Working File (Currently MYFILE.TXT)
  1389.  2 - Edit Working File
  1390.  3 - Type Working File
  1391. Command (<CR>=Menu, ^C=ZCPR3) - ^C
  1392.  
  1393. B1:WORK2; and we are back:
  1394. B1:WORK2; !?
  1395. SH Commands --
  1396.   ?         SHCMT     SHECHO    SHEXIT  
  1397.  
  1398. B1:WORK2; all commands work that way under SH
  1399. B1:WORK2; as I mentioned, SH is a Variable Shell
  1400. B1:WORK2; by this I mean that it supports named variables, which
  1401. B1:WORK2; can be defined (in groups) by SHDEFINE or one at a time
  1402. B1:WORK2; by SHVAR
  1403. B1:WORK2; 
  1404. B1:WORK2; SHVAR with no args displays the names of the current
  1405. B1:WORK2; variables
  1406. B1:WORK2; !shvar
  1407. SHVAR, Version 1.0
  1408.  Shell Variables --
  1409.   -- No Variables Defined --
  1410.  
  1411.  
  1412. B1:WORK2; 
  1413. B1:WORK2; with an arg (actually, 2 args), SHVAR defines variables
  1414. B1:WORK2; !shvar file1 myfile.txt
  1415. SHVAR, Version 1.0
  1416.  Shell Variable FILE1 = MYFILE.TXT
  1417.  Writing Shell Variable File SH      .VAR
  1418.  
  1419.  
  1420. B1:WORK2; 
  1421. B1:WORK2; and now I can reference variables by preceeding them with
  1422. B1:WORK2; a % character
  1423. B1:WORK2; !type %file1
  1424.  
  1425. I have modified MYFILE.TXT
  1426. This is MYFILE.TXT
  1427. Isn't this fun?
  1428.  
  1429.  
  1430. B1:WORK2; does the same as
  1431. B1:WORK2; !type myfile.txt
  1432.  
  1433. I have modified MYFILE.TXT
  1434. This is MYFILE.TXT
  1435. Isn't this fun?
  1436.  
  1437. B1:WORK2; note that SH variables can only be used under SH
  1438. B1:WORK2; don't confuse these with aliases, which can be used
  1439. B1:WORK2; anywhere, including under SH
  1440. B1:WORK2; !alias
  1441. ALIAS, Version 1.0
  1442.  
  1443.  Input Alias (RETURN to Abort)
  1444.  --> echo hello, world - my name is $0
  1445.  Name of ALIAS Command (RETURN to Abort)? hello
  1446.  Alias Created
  1447.  
  1448. B1:WORK2; !hello
  1449.  
  1450. HELLO, WORLD - MY NAME IS HELLO
  1451.  
  1452. B1:WORK2; !shexit
  1453. Exiting Shell
  1454.  
  1455. B1:WORK2>hello
  1456.  
  1457. HELLO, WORLD - MY NAME IS HELLO
  1458.  
  1459. B1:WORK2>sh
  1460. Shell Installed
  1461.  
  1462. B1:WORK2>> shcmt
  1463. B1:WORK2; also, SH variables can be referenced by other SH variables,
  1464. B1:WORK2; up to 20 levels deep:
  1465. B1:WORK2; !shvar cmddemo type %%file1
  1466. SHVAR, Version 1.0
  1467.  Shell Variable CMDDEMO = TYPE %FILE1
  1468.  Writing Shell Variable File SH      .VAR
  1469.  
  1470. B1:WORK2; note my use of the double %% to indicate that I wanted
  1471. B1:WORK2; the % character substituted -- If I used just 1 %, then
  1472. B1:WORK2; the value of the variable would be substituted:
  1473.  
  1474.  
  1475. B1:WORK2; !shvar cmddemo1 type %file1
  1476. SHVAR, Version 1.0
  1477.  Shell Variable CMDDEMO1 = TYPE MYFILE.TXT
  1478.  Writing Shell Variable File SH      .VAR
  1479.  
  1480.  
  1481. B1:WORK2; see the difference?
  1482. B1:WORK2; so, to execute:
  1483. B1:WORK2; !%cmddemo
  1484.  
  1485. I have modified MYFILE.TXT
  1486. This is MYFILE.TXT
  1487. Isn't this fun?
  1488.  
  1489. B1:WORK2; !%cmddemo1
  1490.  
  1491. I have modified MYFILE.TXT
  1492. This is MYFILE.TXT
  1493. Isn't this fun?
  1494.  
  1495. B1:WORK2; as a side comment, the SHECHO command can be used to make
  1496. B1:WORK2; SH show you the command line it is generating:
  1497. B1:WORK2; !shecho
  1498.  Echo of Shell Commands is ON
  1499.  
  1500. B1:WORK2; !%cmddemo
  1501. TYPE MYFILE.TXT
  1502.  
  1503. I have modified MYFILE.TXT
  1504. This is MYFILE.TXT
  1505. Isn't this fun?
  1506.  
  1507. B1:WORK2; Now, if I change the definition of FILE1:
  1508. B1:WORK2; !shvar file1 hisfile.txt
  1509. SHVAR FILE1 HISFILE.TXT
  1510. SHVAR, Version 1.0
  1511.  Shell Variable FILE1 = HISFILE.TXT
  1512.  Writing Shell Variable File SH      .VAR
  1513.  
  1514. B1:WORK2; the meaning of CMDDEMO is different:
  1515. B1:WORK2; !%cmddemo
  1516. TYPE HISFILE.TXT
  1517.  No Files
  1518.  
  1519. B1:WORK2; while CMDDEMO1 remains unchanged
  1520. B1:WORK2; !%cmddemo1
  1521. TYPE MYFILE.TXT
  1522.  
  1523. I have modified MYFILE.TXT
  1524. This is MYFILE.TXT
  1525. Isn't this fun?
  1526.  
  1527.  
  1528. B1:WORK2; !ed %file1
  1529. ED HISFILE.TXT
  1530.  
  1531. NEW FILE
  1532.      : *i
  1533.     1:  This is HISFILE.TXT
  1534.     2:  
  1535.      : *e
  1536.  
  1537. B1:WORK2; !%cmddemo;%cmddemo1
  1538. TYPE HISFILE.TXT;TYPE MYFILE.TXT
  1539.  
  1540. This is HISFILE.TXT
  1541.  
  1542.  
  1543. I have modified MYFILE.TXT
  1544. This is MYFILE.TXT
  1545. Isn't this fun?
  1546.  
  1547. B1:WORK2; and so on ...
  1548.  
  1549. B1:WORK2; !shexit
  1550. Exiting Shell
  1551. B1:WORK2>
  1552.  
  1553. .fo Z3TCAP                                             #
  1554. 8. Z 3 T C A P 
  1555.  
  1556.  
  1557. ááááááááá      Thσ ZCPR│ TCA╨ (Termina∞ Capability⌐ Facilit∙ ì
  1558. ááááááááá(Z3TCAP⌐ allow≤ ZCPR│ t∩ havσ ß variet∙ oµá easily-ì
  1559. ááááááááátransportablσá screen-orienteΣ utilities«á  ERROR2¼ ì
  1560. áááááááááVFILER¼á SHOW¼á anΣ VMEN╒ arσ sucΦ utilitie≤á founΣ ì
  1561. áááááááááunde≥ thσ ZCPR│ System.
  1562.  
  1563.  
  1564. B1:WORK2>NOTE The ZCPR3 TCAP (Z3TCAP) facility is supported by
  1565. B1:WORK2>NOTE   three programs and one data file:
  1566. B1:WORK2>dir root:tc*.com a;dir root:*.tcp
  1567.  TCCHECK .COM    2r| TCMAKE  .COM    6r| TCSELECT.COM    4r
  1568.             A15:ROOT --     3 Files Using    12K (  202K Left)
  1569.  Z3TCAP  .TCP    8r
  1570.             A15:ROOT --     1 Files Using     8K (  202K Left)
  1571.  
  1572.  
  1573. B1:WORK2>NOTE TCCHECK is used to check the validity of Z3TCAP.TCP:
  1574. B1:WORK2>root:
  1575. A15:ROOT>tccheck
  1576. TCCHECK, Version 1.0
  1577. Z3TCAP File Check of Z3TCAP  .TCP Version 1.0 
  1578.         File Checks with    43 Terminals Defined
  1579.  
  1580.  
  1581. ááááááááá      Ove≥á fort∙ terminal≤ arσ currentl∙ supporteΣ ì
  1582. áááááááááunde≥ thσ Z3TCAP«  Thei≥ selectioε anΣ installatioε ì
  1583. áááááááááint∩ ß ZCPR│ Systeφ i≤ illustrated:
  1584.  
  1585. A15:ROOT>work2:
  1586. B1:WORK2>NOTE TCSELECT is used to select your terminal from one of the
  1587. B1:WORK2>NOTE  terminals in Z3TCAP.TCP:
  1588.  
  1589.  
  1590. B1:WORK2>tcselect myterm
  1591. TCSELECT, Version 1.0
  1592.  
  1593. ** Terminal Menu 1 for Z3TCAP Version 1.0  **
  1594.  
  1595. A.  AA Ambassador           K.  Concept 100             
  1596. B.  ADDS Consul 980         L.  Concept 108             
  1597. C.  ADDS Regent 20          M.  CT82                    
  1598. D.  ADDS Viewpoint          N.  DEC VT52                
  1599. E.  ADM 2                   O.  DEC VT100               
  1600. F.  ADM 31                  P.  Dialogue 80             
  1601. G.  ADM 3A                  Q.  Direct 800/A            
  1602. H.  ADM 42                  R.  General Trm 100A        
  1603. I.  Bantam 550              S.  Hazeltine 1420          
  1604. J.  CDC 456                 T.  Hazeltine 1500          
  1605.  
  1606. Enter Selection, + for Next, or ^C to Exit - +
  1607.  
  1608. ** Terminal Menu 2 for Z3TCAP Version 1.0  **
  1609.  
  1610. A.  Hazeltine 1510          K.  SOROC 120               
  1611. B.  Hazeltine 1520          L.  Super Bee               
  1612. C.  Heathkit H19            M.  TAB 132                 
  1613. D.  HP 2621                 N.  Teleray 1061            
  1614. E.  IBM 3101                O.  Teleray 3800            
  1615. F.  Micro Bee               P.  TTY 4424                
  1616. G.  Microterm ACT IV        Q.  TVI 912                 
  1617. H.  Microterm ACT V         R.  TVI 920                 
  1618. I.  P Elmer 1100            S.  TVI 950                 
  1619. J.  P Elmer 1200            T.  VC 404                  
  1620.  
  1621. Enter Selection, - for Last, + for Next, or ^C to Exit - +
  1622.  
  1623. ** Terminal Menu 3 for Z3TCAP Version 1.0  **
  1624.  
  1625. A.  VC 415                  
  1626. B.  Visual 200              
  1627. C.  WYSE 50                 
  1628.  
  1629.  
  1630. Enter Selection, - for Last, or ^C to Exit - -
  1631.  
  1632. ** Terminal Menu 2 for Z3TCAP Version 1.0  **
  1633.  
  1634. A.  Hazeltine 1510          K.  SOROC 120               
  1635. B.  Hazeltine 1520          L.  Super Bee               
  1636. C.  Heathkit H19            M.  TAB 132                 
  1637. D.  HP 2621                 N.  Teleray 1061            
  1638. E.  IBM 3101                O.  Teleray 3800            
  1639. F.  Micro Bee               P.  TTY 4424                
  1640. G.  Microterm ACT IV        Q.  TVI 912                 
  1641. H.  Microterm ACT V         R.  TVI 920                 
  1642. I.  P Elmer 1100            S.  TVI 950                 
  1643. J.  P Elmer 1200            T.  VC 404                  
  1644.  
  1645. Enter Selection, - for Last, + for Next, or ^C to Exit - S
  1646.  
  1647.   Selected Terminal is: TVI 950                  -- Confirm (Y/N)? Y
  1648.  
  1649. File MYTERM  .Z3T Created
  1650. B1:WORK2>dir *.z3t
  1651.  MYTERM  .Z3T    2 
  1652.             B1:WORK2 --     1 Files Using     2K (  286K Left)
  1653.  
  1654.  
  1655. B1:WORK2>NOTE Once you have a Z3T file, LDR can load it and, at this
  1656. B1:WORK2>NOTE   time (after loading), your terminal will be known
  1657. B1:WORK2>NOTE   to the ZCPR3 system and the ZCPR3 utilities can
  1658. B1:WORK2>NOTE   make use of its features, such as cursor positioning,
  1659. B1:WORK2>NOTE   reverse video, arrow keys, etc
  1660. B1:WORK2>ldr myterm.z3t
  1661. ZCPR3 LDR, Version 1.0
  1662.  Loading MYTERM.Z3T
  1663.  
  1664. B1:WORK2>NOTE The commands SHOW and VFILER are now configured for
  1665. B1:WORK2>NOTE   a TVI 950, as per my selection
  1666.  
  1667.  
  1668. ááááááááá      No⌠á everyone'≤á termina∞á wil∞á bσá iεáá thσ ì
  1669. ááááááááádefaul⌠ Z3TCAP«á  T∩ mee⌠ thi≤ problem¼ thσ utilit∙ ì
  1670. áááááááááTCMAK┼ i≤ available.
  1671.  
  1672. B1:WORK2>NOTE If you terminal is not on the list of terminals in
  1673. B1:WORK2>NOTE   Z3TCAP.TCP, then TCMAKE can be used to define it
  1674. B1:WORK2>NOTE   I will define my TVI 950 here:
  1675.  
  1676.  
  1677. B1:WORK2>tcmake myterm1
  1678. TCMAKE, Version 1.0
  1679.  
  1680.  
  1681.         ** Z3TCAP Main Menu for File MYTERM1 .Z3T **
  1682.  
  1683. Define: 1. Clear Screen Sequence
  1684.         2. Cursor Motion Sequence
  1685.         3. Clear to End of Line Sequence
  1686.         4. Standout Mode Sequences
  1687.         5. Terminal Init/Deinit Sequences
  1688.         6. Arrow Keys
  1689.         7. Terminal Name
  1690.  
  1691. Status: S. Print Status (Definitions so far)
  1692.  
  1693. Exit:   X. Exit and Write File
  1694.         Q. Quit and Abort Program without Writing File
  1695.  
  1696. Command? 1
  1697.  
  1698. ááááááááá      ╔á won'⌠á borσ yo⌡ witΦá detail≤á here«á  Thσ ì
  1699. ááááááááátermina∞á sessioε i≤ quitσ long¼á illustratinτá thσ ì
  1700. ááááááááámajor features of TCMAKE.
  1701.  
  1702. .fo "Secure" Systems                                   #
  1703. 9. " S e c u r e "   S y s t e m s 
  1704.  
  1705.  
  1706. ááááááááá      WitΦ passworΣ protectoε anΣ nameΣ directorie≤ ì
  1707. ááááááááá(DI╥á form⌐ buil⌠ int∩ ZCPR3¼á ZCPR│ offer≤ ßá mucΦ ì
  1708. ááááááááámorσ securσ environmen⌠ thaε CP/M«á  Iε particular¼ ì
  1709. áááááááááiµ thσ D╒ forφ i≤ disabled¼á thσ onl∙ directorie≤ ß ì
  1710. áááááááááuse≥ caε acces≤ arσ thosσ hσ caε name¼á anΣ somσ oµ ì
  1711. áááááááááthosσ ma∙ havσ passworΣ protection≤ oε them.
  1712.  
  1713. ááááááááá      Here is a complete session:
  1714.  
  1715.  
  1716. AMPRO 51K TPA CP/M 2.2 with ZCPR 3.0
  1717.  BIOS Version 1.2 on March 24, 1984
  1718.  
  1719. ZCPR3 LDR, Version 1.0
  1720.  Loading SYS.ENV
  1721.  Loading SYS.NDR
  1722.  Loading SYS.FCP
  1723.  Loading SYS.RCP
  1724. ERROR4, Version 1.0
  1725.  Error Handler Installed
  1726.  WELCOME TO ZCPR III
  1727.  
  1728. BASE>dir
  1729.  AMPZ358R.COM   10 | SYS3R   .RCP    2 
  1730.             A0:BASE --     2 Files Using    12K (  266K Left)
  1731.  
  1732. BASE>pwd
  1733. PWD, Version 1.0
  1734.  DU : DIR Name     DU : DIR Name     DU : DIR Name     DU : DIR Name    
  1735. ----  --------    ----  --------    ----  --------    ----  --------    
  1736. A  0: BASE        A  1: PRIVATE1    A  2: PRIVATE2    A 15: ROOT        
  1737.  
  1738. B  0: DEMO1       B  1: DEMO2       B  2: DEMO3       B  3: DEMO4       
  1739. B  4: DEMO5       B  5: INTRO       B  6: MAIL        
  1740.  
  1741. BASE>dir root:
  1742. PW? unknown
  1743.  AMPZ358R.COM   10 | SYS3R   .RCP    2 
  1744.             A0:BASE --     2 Files Using    12K (  266K Left)
  1745.  
  1746. BASE>dir root:
  1747. PW? rpass
  1748.  DIR     .COM    2 | ERROR4  .COM    2 | GOTO    .COM    2 | LDR     .COM    4 
  1749.  MENU    .COM    4 | MKDIR   .COM    6 | PWD     .COM    2 | SETFILE .COM    2 
  1750.  SH      .COM    4 | SHDEFINE.COM    4 | SHFILE  .COM    2 | SHOW    .COM    4 
  1751.  SHVAR   .COM    4 | SPECIAL .NDR    2 | STARTUP .COM    2 | SYS     .ENV    2 
  1752.  SYS     .FCP    2 | SYS     .NDR    2 | SYS     .RCP    2 | TCCHECK .COM    2 
  1753.  TCMAKE  .COM    6 | TCSELECT.COM    4 | WHEEL   .COM    2 | Z3TCAP  .TCP    8 
  1754.  ZEX     .COM    6 
  1755.             A15:ROOT --    25 Files Using    82K (  266K Left)
  1756. BASE>xxx
  1757.  
  1758. è File XXX.COM Not Found
  1759.  
  1760.  
  1761. ááááááááá      Notσ tha⌠ thσ D╒ forφ i≤ simpl∙ ignored«á  N∩ ì
  1762. áááááááááchangσ t∩ file≤ o≥ director∙ locatioε i≤ made.
  1763.  
  1764. BASE>1:
  1765. BASE>a:
  1766. BASE>b:
  1767. BASE>dir 1:
  1768.  AMPZ358R.COM   10 | SYS3R   .RCP    2 
  1769.             A0:BASE --     2 Files Using    12K (  266K Left)
  1770.  
  1771. BASE>dir demo1:
  1772.  AMPZ3-58.COM   10 | AMPZ3-60.COM   10 | AMPZ3-61.COM   10 | AMPZ358R.COM   10 
  1773.  BDOS58  .COM    4 | BDOS60  .COM    4 | BDOS61  .COM    4 | CPM58   .COM   10 
  1774.  CPM60   .COM   10 | CPM61   .COM   10 | SYS3R   .RCP    2 
  1775.             B0:DEMO1 --    11 Files Using    84K (  284K Left)
  1776.  
  1777. BASE>demo1:
  1778. DEMO1>root:
  1779. PW? rpass
  1780.  
  1781. ROOT>wheel /s
  1782. WHEEL, Version 3.0
  1783.  Wheel Password?  Wheel Byte is ON
  1784.  
  1785. ROOT>NOTE We now have one directory structure:
  1786. ROOT>pwd
  1787. PWD, Version 1.0
  1788.  DU : DIR Name     DU : DIR Name     DU : DIR Name     DU : DIR Name    
  1789. ----  --------    ----  --------    ----  --------    ----  --------    
  1790. A  0: BASE        A  1: PRIVATE1    A  2: PRIVATE2    A 15: ROOT        
  1791.  
  1792. B  0: DEMO1       B  1: DEMO2       B  2: DEMO3       B  3: DEMO4       
  1793. B  4: DEMO5       B  5: INTRO       B  6: MAIL        
  1794.  
  1795.  
  1796. ááááááááá      WitΦáá thσá abilit∙á t∩á havσá severa∞á nameΣ ì
  1797. ááááááááádirector∙á files¼á wσá caεá havσá severa∞á set≤á oµ ì
  1798. ááááááááádirectories¼á includinτ somσ directorie≤ whicΦá arσ ì
  1799. ááááááááábotΦá hiddeεá anΣ totall∙ inaccessablσ t∩ thσá use≥ ì
  1800. áááááááááunles≤ hσ ha≤ thσ abilit∙ t∩ loaΣ thσ prope≥á nameΣ ì
  1801. ááááááááádirector∙ (NDR⌐ file.
  1802.  
  1803. ROOT>NOTE Now that I am a WHEEL and in ROOT, I can define another
  1804. ROOT>NOTE   directory structure which is special:
  1805.  
  1806.  
  1807. ROOT>ldr special.ndr
  1808. ZCPR3 LDR, Version 1.0
  1809.  Loading SPECIAL.NDR
  1810. ROOT>pwd
  1811. PWD, Version 1.0
  1812.  DU : DIR Name     DU : DIR Name     DU : DIR Name     DU : DIR Name    
  1813. ----  --------    ----  --------    ----  --------    ----  --------    
  1814. A  0: BASE        A  1: PRIVATE1    A  2: PRIVATE2    A 14: SYSROOT     
  1815. A 15: ROOT        
  1816.  
  1817. B  0: DEMO1       B  1: DEMO2       B  2: DEMO3       B  3: DEMO4       
  1818. B  4: DEMO5       B  5: INTRO       B  6: MAIL        
  1819.  
  1820. ROOT>NOTE Note that there is a 2nd root, called SYSROOT, which
  1821. ROOT>NOTE   was not known (OR ACCESSIBLE) under the old system
  1822. ROOT>NOTE   (SYS.NDR)
  1823. ROOT>
  1824.  
  1825. ROOT>NOTE Also, as a wheel, I can obtain passwords:
  1826.  
  1827. ROOT>pwd pass
  1828. PWD, Version 1.0
  1829.  DU : DIR Name - Password     DU : DIR Name - Password    
  1830. ----  --------   --------    ----  --------   --------    
  1831. A  0: BASE     -             A  1: PRIVATE1 - MYPASS1     
  1832. A  2: PRIVATE2 - PASS        A 14: SYSROOT  - SPASS       
  1833. A 15: ROOT     - RPASS       
  1834.  
  1835. B  0: DEMO1    -             B  1: DEMO2    -             
  1836. B  2: DEMO3    -             B  3: DEMO4    -             
  1837. B  4: DEMO5    -             B  5: INTRO    -             
  1838. B  6: MAIL     - MPASS       
  1839.  
  1840. ROOT>private1:
  1841. PW? mypass1
  1842. PRIVATE1>wheel /r
  1843. WHEEL, Version 3.0
  1844.  Wheel Password?  Wheel Byte is OFF
  1845.  
  1846. PRIVATE1>pwd pass
  1847. PWD, Version 1.0
  1848.  Password Request Denied - Not Wheel
  1849.  DU : DIR Name     DU : DIR Name     DU : DIR Name     DU : DIR Name    
  1850. ----  --------    ----  --------    ----  --------    ----  --------    
  1851. A  0: BASE        A  1: PRIVATE1    A  2: PRIVATE2    A 14: SYSROOT     
  1852. A 15: ROOT        
  1853.  
  1854. B  0: DEMO1       B  1: DEMO2       B  2: DEMO3       B  3: DEMO4       
  1855. B  4: DEMO5       B  5: INTRO       B  6: MAIL        
  1856.  
  1857.  
  1858. PRIVATE1>ldr root:sys.ndr
  1859. PW? rpass
  1860. ZCPR3 LDR, Version 1.0
  1861.  Loading SYS.NDR
  1862.  
  1863. PRIVATE1>ldr root:special.ndr
  1864. PW? rpass
  1865. ZCPR3 LDR, Version 1.0
  1866.  Loading SPECIAL.NDR
  1867.  
  1868. PRIVATE1>sysroot:
  1869. PW? spass
  1870.  
  1871. SYSROOT>root:
  1872. PW? rpass
  1873.  
  1874. ROOT>ldr sys.ndr
  1875. ZCPR3 LDR, Version 1.0
  1876.  Loading SYS.NDR
  1877.  
  1878. ROOT>sysroot:
  1879. ROOT>NOTE SYSROOT is not even defined now
  1880.  
  1881.  
  1882.                ---- End of Introduction to ZCPR3 ----
  1883.  
  1884.  
  1885.  
  1886. .FI B:Z3USER.IDX
  1887.