home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / cpm / zcpr2 / z2con.ws < prev    next >
Encoding:
Text File  |  1994-07-13  |  120.0 KB  |  3,166 lines

  1. .he    ZCPR2 -- An Enhanced Z80-Based Replacement for the CP/M CCP
  2. .fo Concepts Manual                                    Page #
  3.  
  4.  
  5.                     Concepts Manual for ZCPR2
  6.  
  7. 1.0  Introduction
  8.  
  9.      Thσáá Z80-baseΣá CommanΣá Processo≥á Replacemen⌠á Versioεá 2ô ì
  10. (ZCPR2⌐á i≤ ß replacemen⌠ fo≥ thσ CP/═ Consolσ CommanΣá Processorô ì
  11. (CCP⌐á whicΦ create≤ aε extremel∙ capablσ anΣá flexiblσá environì
  12. ment¼á placinτ ß totall∙ ne≈ interfacσ oε thσ user'≤ CP/═ system«  ì
  13. Thσá primar∙á purposσ oµ ZCPR▓ i≤ t∩ improvσ thσ user'≤á productì
  14. ivit∙ b∙ givinτ hiφ aε environmen⌠ whicΦ i≤ mucΦ morσá responsivσ ì
  15. t∩á hi≤ need≤ anΣ configurablσ t∩ hi≤ specifiπ desire≤ thaεá CP/═ ì
  16. 2.▓ whilσ stil∞ remaininτ CP/═ 2.▓ compatablσ anΣ allowinτ hiφ t∩ ì
  17. ruεá most¼á iµá no⌠ all¼á oµ hi≤ CP/═ softwarσ witΦ littlσ o≥á n∩ ì
  18. modification.
  19.  
  20.      T∩ givσ yo⌡ ß firs⌠ picturσ oµ ZCPR2¼á let'≤ takσ ß comparaì
  21. tivσ looδ a⌠ ß runninτ CP/═ systeφ anΣ ß runninτ ZCPR▓ system.
  22.  
  23.  
  24. -- Diagram 1 --
  25.  
  26. Address        CP/M System              ZCPR2 System
  27.  
  28. High Memory -> ---------------------    -------------------------
  29.                | BIOS              |    | Modified BIOS         |
  30. BDOS+0E00H  -> ---------------------    -------------------------
  31.                | CP/M 2.2 BDOS     |    | CP/M 2.2 BDOS         |
  32. CCP +0800H  -> --------------------- -- -------------------------
  33.                | CP/M 2.2 CCP      | T  | ZCPR2                 |
  34. CCP Base    -> --------------------- P  -------------------------
  35.                | Scratch Area      | A* | Scratch Area          |
  36. 100H        -> --------------------- -- -------------------------
  37.                | CP/M Buffers et al|    | ZCPR2 Buffers et al   |
  38.   0H        -> ---------------------    -------------------------
  39.  
  40.  
  41. *TP┴ ╜ Transien⌠ Prograφ Area¼á whicΦ cover≤ thσ ScratcΦ Areß anΣ ì
  42. the CCP or ZCPR2
  43.  
  44.               CP/M and ZCPR2-Based Executing Images
  45.  
  46.  
  47.      A≤á thσ reade≥ caε see¼á ß ZCPR2-baseΣ systeφ i≤á structureΣ ì
  48. likσá ß CP/M-baseΣ system«á  Fo≥ al∞ intent≤ anΣ purposes¼á ZCPR▓ ì
  49. look≤á likσ CP/═ t∩ ß prograφ designeΣ t∩ ruεá unde≥á CP/M«á  Thσ ì
  50. differencσ i≤ mainl∙ iε thσ wa∙ ZCPR▓ look≤ t∩ thσ user.
  51.  
  52.  
  53.  
  54. 1.1  Another Look at CP/M 2.2
  55.  
  56.      CP/═á (╔ wil∞ refe≥ t∩ CP/═ 2.▓ a≤ CP/═ froφ herσ on⌐ i≤á aε ì
  57. Operatinτá System¼á whicΦ i≤ ß compute≥ prograφ whosσ functioε i≤ ì
  58. t∩ managσ thσ resource≤ oµ thσ computer«  Al∞ computer≤ havσ fou≥ ì
  59. basiπ resource≤ t∩ bσ manageΣ b∙ thσ operatinτ system:
  60.  
  61.           o Memory
  62.           o Processors and Processes (Process = running Program)
  63.           o Devices
  64.           o Information
  65.  
  66.      Iε thσ wa∙ oµ Memor∙ Management¼ CP/═ doe≤ ver∙ little«  Thσ ì
  67. basiπ memor∙ structurσ i≤ defineΣ a≤ iε thσ previou≤ diagram¼ anΣ ì
  68. tha⌠ i≤ thσ exten⌠ oµ thσ memor∙ managemen⌠ performeΣ b∙ CP/M.
  69.  
  70.      Likewise¼á iε thσ wa∙ oµ Proces≤ Management¼ CP/═ agaiε doe≤ ì
  71. ver∙á little«á  Sincσá therσ i≤ onl∙ onσ processo≥á involved¼á n∩ ì
  72. processo≥á managemen⌠á i≤ donσ a⌠ all«á  WitΦá onl∙á onσá proces≤ ì
  73. involveΣá (typically)¼á CP/═á simpl∙ start≤ thσ proces≤ anΣá theε ì
  74. relinquishe≤ al∞ control«á  Oncσ thσ proces≤ ha≤ control¼á i⌠ ha≤ ì
  75. completσá contro∞ ove≥ thσ entirσ microcomputer¼á anΣá CP/═á doe≤ ì
  76. nothinτ t∩ sto≡ i⌠ froφ doinτ anythinτ i⌠ wishe≤ t∩ do.
  77.  
  78.      Thσ beaut∙ oµ CP/═ i≤ thσ wa∙ i⌠ doe≤ devicσ anΣ informatioε ì
  79. management«á  Devicσá Managementô i≤ performeΣ b∙ thσ Basiπ Input-ì
  80. Outpu⌠ Systemô (BIOS⌐ oµ CP/M«á  Thσ BIO╙ provide≤ ß standardized¼ ì
  81. hardware-independen⌠á interfacσ t∩ thσ device≤ oµá thσá microcomì
  82. pute≥á regardles≤ oµ wha⌠ thσ actua∞ device≤ are«á  Thesσ device≤ ì
  83. arσ interfaceΣ t∩ b∙ wa∙ oµ ß tablσ oµ jum≡ instruction≤á locateΣ ì
  84. a⌠ thσ beginninτ oµ thσ BIOS¼á anΣ thσ parameter≤ passeΣ t∩ thesσ ì
  85. routines¼á thσá parameter≤á passeΣ froφ thesσ routines¼á anΣá thσ ì
  86. function≤ oµ thesσ routine≤ arσ precisel∙ defined«á  Thσ softwarσ ì
  87. anΣ programme≥ d∩ no⌠ neeΣ t∩ kno≈ HO╫ thσ routine≤ perforφ thei≥ ì
  88. functions╗ thσ softwarσ anΣ programme≥ onl∙ neeΣ t∩ kno≈ wha⌠ thσ ì
  89. routine≤ d∩ anΣ ho≈ t∩ communicatσ witΦ them«á  Thi≤ i≤ ß proces≤ ì
  90. box¼ o≥ blacδ box¼ concept:
  91.  
  92.  
  93. -- Diagram 2 --               |
  94.                               |  Input Parameters
  95.                               |  are precisely known
  96.                               |
  97.                               V                The Process Box is
  98.                     ---------------------      a "Black Box", and
  99.        Process Box: | Function is       |  <-- it is not needed
  100.                     ⁿ Precisel∙ Knowε   ⁿ      to know what is in
  101.                     ---------------------      the box to use it
  102.                               |
  103.                               |  Output Parameters
  104.      The Process Box          |  are precisely known
  105.      Concept for CP/M         |
  106.                               V
  107.  
  108. è
  109.      Fo≥ example¼á thσ fourtΦ entr∙ iε thσ BIO╙ Jum≡ Tablσ i≤ thσ ì
  110. Consolσá Inpu⌠ Routine¼á anΣ iε orde≥ fo≥ ß prograφ t∩á obtaiεá ß ì
  111. characte≥á froφá thσ user'≤ console¼á regardles≤ oµ wha⌠ typσá oµ ì
  112. devicσá thσ consolσ ma∙ bσ (sucΦ a≤ ß CR╘ o≥ printinτá terminal)¼ ì
  113. al∞á thσá softwarσá ha≤ t∩ d∩ i≤ makσ ß subroutinσá cal∞á t∩á thσ ì
  114. routinσá startinτá a⌠ BIO╙ ½ ╣ (eacΦ Jum≡ Tablσá Entr∙á i≤á threσ ì
  115. byte≤ long)¼ anΣ thσ BIO╙ wil∞ returε thσ nex⌠ characte≥ froφ thσ ì
  116. consolσ iε thσ ┴ register«  T∩ outpu⌠ ß characte≥ t∩ thσ console¼ ì
  117. thσá softwarσ neeΣ onl∙ placσ tha⌠ characte≥ int∩ thσ ├á registe≥ ì
  118. anΣ makσ ß cal∞ t∩ thσ subroutinσ startinτ a⌠ BIO╙ ½ 12.
  119.  
  120.      Thσá BIO╙á perform≤ al∞ oµ thσ devicσ contro∞ function≤á neì
  121. cessar∙ fo≥ CP/═ anΣ thσ program≤ whicΦ ruε unde≥ CP/═ t∩ d∩ mos⌠ ì
  122. oµ wha⌠ the∙ neeΣ t∩ do«á  Surprisingly¼ therσ arσ onl∙ seventeeε ì
  123. general-purposσ function≤ requireΣ t∩ providσ thσ hardwarσ interì
  124. face≤ necessar∙ t∩ perforφ al∞ characte≥ anΣ disδ I/╧ unde≥ CP/M«  ì
  125. Thesσá function≤á arσ reall∙ quitσ simplσ wheε yo⌡ comσá dowεá t∩ ì
  126. looδ a⌠ them«  The∙ are:
  127.  
  128.           1) Initialization Functions
  129.                ∩ ColΣ Boo⌠ Initializatioε (wheε thσ systeφ i≤ 
  130.                   firs⌠ turneΣ on)
  131.                o Warm Boot Initialization (performed periodically
  132.                   after the system is turned on)
  133.  
  134.           2) Character Input/Output Functions
  135.                o Console Status (check for availability of a
  136.                   character at the console)
  137.                o Console Input
  138.                o Console Output
  139.                o List Status (check to see if List Device is
  140.                   ready to output the next character)
  141.                o List (Printer) Output
  142.                o Punch Output
  143.                o Reader Input
  144.  
  145.           3) Disk Input/Output Functions
  146.                o Home Disk (move head to Track 0)
  147.                o Select Disk (which disk to use)
  148.                o Select Track
  149.                o Select Sector
  150.                o Select Memory Address to Read Into or Write
  151.                   From
  152.                o Read Block (at selected Track and Sector) into
  153.                   Memory (at selected Memory Address)
  154.                o Write Block (to selected Track and Sector) from
  155.                   Memory (at selected Memory Address)
  156.                o Logical-to-Physical Sector Translation (for
  157.                   efficiency of disk use)
  158.  
  159.  
  160.  
  161.      Thσ BIOS¼á then¼ create≤ ß Virtua∞ Machine¼ whicΦ i≤ ß hypoì
  162. thetica∞á compute≥á tha⌠ al∞ CP/═ softwarσ run≤á under«á  Iεá al∞ ì
  163. cases¼á thank≤ t∩ thσ BIO╙ design¼á thi≤ hypothetica∞ compute≥ i≤ ì
  164. thσá samσ compute≥ regardles≤ oµ wha⌠ thσ actua∞ hardwarσ oµá thσ ì
  165. microcompute≥ is«á  I⌠ make≤ n∩ differencσ iµ ╡ 1/4ó flopp∙ disk≤ ì
  166. a⌠á 100╦ bytes/disk¼á 8ó flopp∙ disk≤ a⌠ 600╦ bytes/disk¼á o≥á 8ó ì
  167. Wincheste≥á harΣ disk≤ a⌠ 5═ bytes/disδ arσ used«á  Thσá softwarσ ì
  168. talk≤á t∩á al∞ oµ thesσ device≤ iε thσ samσ way¼á anΣ thi≤á make≤ ì
  169. sucΦá softwarσ transportablσ A╘ TH┼ BINAR┘ LEVE╠ betweeε an∙á tw∩ ì
  170. microcomputer≤ runninτ CP/M«
  171.  
  172.      Thσá fourtΦá anΣá fina∞ functioε oµ aε operatinτá systeφá i≤ ì
  173. Informatioε Management¼á whicΦ boil≤ dowε t∩ thσ contro∞ oµ file≤ ì
  174. oεá disk«á  CP/═ shine≤ herσ too¼á extendinτ thσ virtua∞á machinσ ì
  175. concep⌠ a≤ applieΣ t∩ hardwarσ b∙ thσ BIO╙ t∩ file≤ oε disk«  Thσ ì
  176. Basiπá Disδ Operatinτ Systemô (BDOS⌐ portioε oµ CP/═ create≤á thi≤ ì
  177. file-orienteΣ virtua∞ machine«  T∩ illustratσ m∙ point¼ somσ (anΣ ì
  178. b∙ n∩ mean≤ ALL⌐ oµ thσ function≤ provideΣ b∙ thσ BDO╙ are:
  179.  
  180.           o Reset Disk System
  181.           o Select Disk
  182.           o Create File (actually, create a directory entry for
  183.              a file)
  184.           o Open File (make a file ready for reading or writing)
  185.           o Close File (terminate the read/write process)
  186.           o Delete File
  187.           o Rename File
  188.           o Set Memory Address to Read Into or Write From
  189.           o Read Next Block from File
  190.           o Write Next Block into File
  191.  
  192.      Notσá thσá similarit∙ betweeε thesσ BDO╙ function≤á anΣá thσ ì
  193. BIO╙á disδá functions«á  Thesσ BDO╙ function≤ arσ accesseΣá iεá ß ì
  194. differen⌠á wa∙á froφá thσ BIOS¼á bu⌠ thσ proces≤ bo°á concep⌠á i≤ ì
  195. maintained«á  Al∞ tha⌠ onσ need≤ t∩ kno≈ i≤ wha⌠ thσ inpu⌠á paraì
  196. meter≤ are¼ wha⌠ thσ outpu⌠ parameter≤ are¼ anΣ wha⌠ thσ functioε ì
  197. performeΣá is«á  Oncσ more¼á transportabilit∙ i≤ realizeΣ A╘á TH┼ ì
  198. BINAR┘ LEVEL¼ bu⌠ thi≤ timσ i⌠ i≤ witΦ respec⌠ t∩ thσ informatioε ì
  199. manipulateΣá b∙ thσ computer«á  Thi≤ virtua∞ machinσ greatl∙ supì
  200. port≤ thσ exchangσ anΣ salσ oµ software«  Iµ effect¼ thσ creatioε ì
  201. oµá CP/═á spawneΣ aε industr∙ baseΣ oεá somethinτá no⌠á conceiveΣ ì
  202. before║á  thσ exchangσ oµ softwarσ regardless¼á b∙ anΣ large¼á oµ ì
  203. thσá actua∞ compute≥ hardwarσ involveΣ anΣ independen⌠ oµ an∙ onσ ì
  204. compute≥á hardwarσ manufacturer«á  Al∞ oµ thi≤ i≤ causeΣá b∙á thσ ì
  205. CP/═ Virtua∞ Machine.
  206.  
  207.  
  208. 1.2  Where ZCPR2 Fits In
  209.  
  210.      Let'≤ revie≈ Diagraφ 1¼á whicΦ compare≤ CP/═ 2.▓ t∩ ß ZCPR2-ì
  211. baseΣ system:
  212.  
  213.  
  214. -- Diagram 1 --
  215.  
  216. Address        CP/M System              ZCPR2 System
  217.  
  218. High Memory -> ---------------------    -------------------------
  219.                | BIOS              |    | Modified BIOS         |
  220. BDOS+0E00H  -> ---------------------    -------------------------
  221.                | CP/M 2.2 BDOS     |    | CP/M 2.2 BDOS         |
  222. CCP +0800H  -> --------------------- -- -------------------------
  223.                | CP/M 2.2 CCP      | T  | ZCPR2                 |
  224. CCP Base    -> --------------------- P  -------------------------
  225.                | Scratch Area      | A* | Scratch Area          |
  226. 100H        -> --------------------- -- -------------------------
  227.                | CP/M Buffers et al|    | ZCPR2 Buffers et al   |
  228.   0H        -> ---------------------    -------------------------
  229.  
  230.  
  231. *TP┴ ╜ Transien⌠ Prograφ Area¼á whicΦ cover≤ thσ ScratcΦ Areß anΣ ì
  232. the CCP or ZCPR2
  233.  
  234.               CP/M and ZCPR2-Based Executing Images
  235.  
  236.  
  237.      A≤ thσ reade≥ caε see¼á thσ Virtua∞ Machinσ oµ CP/═ i≤á lef⌠ ì
  238. more-or-les≤á intac⌠ iε thσ ZCPR▓ environment«á  Thσ BDO╙ i≤ lef⌠ ì
  239. unchanged¼á anΣá thσ BIO╙ i≤ modifieΣ (bu⌠ thi≤ i≤ onl∙ iεá mino≥ ì
  240. way≤á anΣá thσ interface≤ arσá lef⌠á unaffected)«á  Hence¼á unde≥ ì
  241. ZCPR2¼ wσ arσ dealinτ witΦ thσ samσ Virtua∞ Machine¼ anΣ thσ samσ ì
  242. softwarσá whicΦá raε unde≥ CP/═ 2.▓ wil∞ als∩á ruεá unde≥á ZCPR2¼ ì
  243. excep⌠á iεá thosσá fe≈ case≤ wherσ thσ softwarσ useΣ thσá CC╨á t∩ ì
  244. perforφá somσá function≤á (iε whicΦ case≤ ZCPR▓ ma∙á o≥á ma∙á no⌠ ì
  245. work).
  246.  
  247.      ZCPR▓á provide≤ ß ver∙ versatilσ interfacσ betweeε thσá use≥ ì
  248. anΣá hi≤á microcompute≥ witΦ it≤ software«á  Thσá windo≈á througΦ ì
  249. whicΦá thσá use≥ see≤ hi≤ systeφ i≤ changeΣ radicall∙á b∙á ZCPR2¼ ì
  250. and¼á iε m∙ opinion¼ thσ microcompute≥ systeφ become≤ ß mucΦ morσ ì
  251. usefu∞á anΣ versatilσ too∞ anΣ thσ user'≤ productivit∙á increase≤ ì
  252. significantl∙á becausσá oµ ZCPR2«á  Thi≤ documen⌠ i≤ intendeΣá t∩ ì
  253. cove≥ thσ basiπ concept≤ oµ ZCPR2¼ emphasizinτ ho≈ ZCPR▓ enhance≤ ì
  254. thσ user'≤ capabilitie≤ anΣ improve≤ hi≤ productivity«  Thσ readì
  255. e≥á i≤ inviteΣ t∩ reaΣ thσ Rationalσ Manua∞ iµ hσ want≤á t∩á disì
  256. cove≥ wh∙ ZCPR▒ anΣ ZCPR▓ werσ createΣ iε thσ firs⌠ placσ anΣ wh∙ ì
  257. thσá thing≤á abou⌠ t∩ bσ describeΣ werσ donσ thσ wa∙á the∙á were«  ì
  258. Thi≤ Concept≤ Manua∞ jus⌠ covers¼á b∙ anΣ large¼ wha⌠ ZCPR▓ does¼ ì
  259. anΣ onl∙ occasionall∙ explain≤ wh∙ i⌠ wa≤ donσ thi≤ way.
  260.  
  261.  
  262. 2.0  ZCPR2 Overview
  263.  
  264.      ZCPR▓ provide≤ aε interactivσ interfacσ t∩ thσ user'≤ microì
  265. compute≥á whicΦá i≤á significantl∙ extendeΣ ove≥á tha⌠á interfacσ ì
  266. provideΣá b∙ thσ CP/═ 2.▓ CCP«á  Thσ use≥ i≤ inviteΣ t∩ refe≥á t∩ ì
  267. thσá Rationalσ Manua∞ fo≥ ß detaileΣ comparisoε betweeε thσá CP/═ ì
  268. 2.▓á CC╨ anΣ ZCPR2«á  ┴ workinτ knowledgσ oµ CP/═ 2.▓ i≤á assumeΣ ì
  269. fo≥á thσ followinτ discussion«á  Also¼á thσ followinτá discussioε ì
  270. pertain≤ t∩ ZCPR▓ system≤ whicΦ arσ configureΣ iε thσ recommendeΣ ì
  271. wa∙ (seσ thσ Installatioε Manual)«  Therσ arσ ove≥ 4,000,00░ way≤ ì
  272. (conceivably⌐á tha⌠ onσ ma∙ configurσ ß ZCPR▓ systeφ fo≥ hi≤á owε ì
  273. uses¼ and¼ a≤ ß genera∞ rule¼ thσ feature≤ describeΣ belo≈ ma∙ bσ ì
  274. turneΣ oε o≥ ofµ a≤ thσ systeφ manage≥ desires.
  275.  
  276. 2.1  Directories under ZCPR2
  277.  
  278.      Iε general¼á ZCPR▓ i≤ ablσ t∩ addres≤ u≡ t∩ sixteeεá logica∞ ì
  279. disks¼ eacΦ containinτ u≡ t∩ thirty-tw∩ directories«  ┴ directoryô ì
  280. unde≥ ZCPR▓ i≤ ß use≥ areß oε ß disk¼ anΣ i⌠ i≤ identifieΣ b∙ thσ ì
  281. combinatioεá oµá thσ disδ lette≥ anΣ thσ numbe≥ oµ thσ use≥á areß ì
  282. (likσ A1░ o≥ B7⌐ o≥ b∙ ß mnemoniπ namσ (likσ JEF╞ o≥ ROOT)«á  Thσ ì
  283. director∙ i≤ ß logica∞ concept¼á anΣ physically¼á iε keepinτ witΦ ì
  284. CP/═ 2.▓ compatability¼ therσ i≤ onl∙ onσ physica∞ filσ director∙ ì
  285. (whicΦá keep≤ tracδ oµ al∞ thσ files⌐ oε eacΦá logica∞á disk«á  ┴ ì
  286. use≥á numbe≥ i≤ ß par⌠ oµ eacΦ entr∙ iε thσ filσá directory¼á anΣ ì
  287. thi≤á use≥ numbe≥ associate≤ thσ filσ witΦ thσ use≥ areß oεá disδ ì
  288. (directory⌐ whicΦ tha⌠ filσ reside≤ in.
  289.  
  290.      Thσ disk/use≥ wa∙ oµ identifyinτ ß director∙ (calleΣ thσá DUô ì
  291. forφ froφ herσ on⌐ i≤ standarΣ t∩ thσ ZCPR2-residen⌠ command≤ anΣ ì
  292. thσ ZCPR2-specifiπ utilities«á  Iε al∞ cases¼ thesσ command≤ wil∞ ì
  293. permi⌠ usσ oµ thσ DU║á forφ whereve≥ thσ simple≥ D║ forφ wa≤ useΣ ì
  294. unde≥ CP/═ 2.2¼ anΣ eithe≥ thσ ─ o≥ thσ ╒ par⌠ oµ thσ DU║ forφ i≤ ì
  295. optional.
  296.  
  297.      Hence¼á thσ use≥ caε "sitó iε an∙ director∙ oε an∙ disδá anΣ ì
  298. readil∙á worδá witΦá file≤ iε an∙ othe≥ director∙á oεá an∙á disk«  ì
  299. Likewise¼á wherσá thσá use≥ useΣ t∩ bσ ablσ t∩ prefi° ß CO═á filσ ì
  300. witΦ ß disδ lette≥ iε orde≥ t∩ temporaril∙ loτ int∩ anothe≥á disδ ì
  301. anΣá extrac⌠ tha⌠ filσ froφ it¼á thσ ZCPR▓ use≥ caε prefi° ßá CO═ ì
  302. filσ witΦ ß D╒ form.
  303.  
  304.      Finally¼á thσ thirΣ logica∞ extensioε oµ thi≤ D╒ forφ i≤á t∩ ì
  305. allo≈á thσ use≥ t∩ emplo∙ i⌠ t∩ "loτ intoó ß directory¼á likσá hσ ì
  306. useΣá thσ D║á forφ beforσ t∩ simpl∙ changσ disk≤ anΣ thσ "USE╥ nó ì
  307. commanΣ t∩ changσ use≥ areas.
  308.  
  309.      Thσá ZCPR▓á promp⌠ change≤ s∩ tha⌠ i⌠ wil∞ alway≤á tel∞á thσ ì
  310. use≥á wha⌠ director∙ hσ i≤ loggeΣ into«á  ZCPR▓ caε bσ configureΣ ì
  311. t∩ displa∙ "d>ó o≥ "d0>ó wheε thσ use≥ i≤ loggeΣ int∩ use≥ areß ░ ì
  312. oµ ß particula≥ disδ (notσ "A>ó anΣ "C>ó iε thσ example)«á  A≤á ß ì
  313. sidσá note¼á becausσ oµ thσ flexibilit∙ oµ thσ D╒ form¼á thσ USE╥ ì
  314. commanΣá i≤ n∩ longe≥ necessar∙ anΣ i≤ no⌠ availablσ unde≥á ZCPR▓ ì
  315. unles≤ ß programme≥ implement≤ i⌠ a≤ ß transient.
  316. è
  317.      ZCPR▓ i≤ ß replacemen⌠ fo≥ thσ CP/═ 2.▓ CCP¼á bu⌠ i⌠ i≤ onl∙ ì
  318. ß par⌠ oµ thσ ZCPR▓ SYSTEM«á  Thσ ZCPR▓ Systemô i≤ ß collectioε oµ ì
  319. program≤á consistinτá oµ ZCPR▓ itselµ anΣ ß serie≤á oµá utilitie≤ ì
  320. designeΣá t∩á augmen⌠ thσ capabilitie≤ oµ ZCPR2«á  Al∞á oµá thesσ ì
  321. utilitie≤á responΣá t∩ thσ ZCPR▓ D╒ form¼á jus⌠ likσá thσá ZCPR2-ì
  322. residen⌠ commands¼á whilσ thσ conventiona∞ CP/═ utilitie≤ d∩ not«  
  323.  
  324.      Thesσá ZCPR▓ utilities¼á however¼á suppor⌠ ß seconΣ forφá oµ ì
  325. director∙á specificatioεá a≤ wel∞ a≤ thσ D╒ form«á  Thi≤á i≤á thσ ì
  326. nameΣ director∙ specification¼á calleΣ thσ DI╥ forφ froφ no≈á on«  ì
  327. Thσ DI╥ forφ i≤ ß logica∞ associatioε betweeε ß mnemoniπ namσ anΣ ì
  328. ß disk/use≥ area«  Fo≥ example¼ thσ director∙ namσ oµ ROO╘ ma∙ bσ ì
  329. assigneΣá t∩ meaε A0¼á JEF╞ t∩ meaε C4¼á BACKU╨ t∩ meaε C0¼á etc«  ì
  330. Al∞ oµ thσ ZCPR▓ utilitie≤ (b∙ anΣ large⌐ recognizσ thi≤ forφá a≤ ì
  331. well.
  332.  
  333.      Somσ oµ thσ ne≈ ZCPR▓ utilitie≤ arσ designeΣ t∩ specificall∙ ì
  334. dea∞á witΦ nameΣ directories«á  Thesσ utilitie≤ anΣá thei≥á basiπ ì
  335. function≤ are:
  336.  
  337.           o CD -- Log Into a Named Directory (like the simple DU:
  338.                     command, but far more is done)
  339.  
  340.           o PWD -- Print Working Directory; this command simply
  341.                     lists the names of the directories accessible
  342.                     to the user
  343.  
  344.           ∩ MKDI╥ -- Makσ ß Directory╗ creatσ ß ne≈ nameΣ
  345.                       directory or modify an existing one
  346.  
  347.           o LD -- Load a Named Directory into the Named
  348.                    Directory Buffer in Memory
  349.  
  350.      WitΦ thσ nameΣ director∙ environmen⌠ full∙ implemented¼á thσ ì
  351. user'≤á ZCPR▓ systeφ caε bσ configureΣ iε ß numbe≥á oµá differen⌠ ì
  352. way≤á beyonΣ eveε thσ 4,000,000½ basiπ way≤ ZCPR▓ caε bσá configì
  353. ured«á  Iε particular¼á ß director∙ treσ structurσ caε bσ se⌠ up¼ ì
  354. simila≥á t∩á thσ UNI╪ concept¼á o≥ ß director∙ mesΦ structurσá i≤ ì
  355. als∩á possible«á  Fo≥ example¼á thσ followinτ environmen⌠ i≤á onσ ì
  356. sucΦ workinτ environmen⌠ whicΦ caε bσ createΣ unde≥ ZCPR2:
  357.  
  358.  
  359. -- Diagram 2 --
  360.  
  361.        ----------------- ROOT -----------------------
  362.        |                /    \                      |
  363.      ROBERT         JEFF      LINDA               BOSS
  364.        |           / |  \    / | | \              | ||
  365.     HARDWORK      JA CB JC  LA CB LC LD      WATCHJ |WATCHL
  366.                  /          |        |           WATCHR
  367.                 GAMES      SCHOOL   GAMES
  368.  
  369.  
  370.              Sample ZCPR2 Named Directory Structure
  371.  
  372.  
  373.      Notes:
  374.           ROOT is the base of the system
  375.           CB and GAMES under JEFF are the same directories as
  376.                CB and GAMES under LINDA
  377.           Depending on how the Named Directory files were set
  378.                up, it would be possible to readily move from
  379.                any directory to any other directory, or the
  380.                user could be forced to move along a tree
  381.                (i.e., you could go to JEFF directly from SCHOOL
  382.                or be forced to follow the path SCHOOL -> LA ->
  383.                LINDA -> ROOT -> JEFF in order to get there --
  384.                it is up to the person who sets up the Named
  385.                Directory system)
  386.  
  387.  
  388.      Thσá topiπá oµ NameΣ Directorie≤ i≤ quitσá involved¼á anΣá ß ì
  389. wholσ sectioε i≤ devoteΣ t∩ thi≤ later«  Thi≤ i≤ jus⌠ aε overvie≈ ì
  390. t∩ whe⌠ you≥ appetite¼á s∩ I'l∞ movσ oε t∩ thσ othe≥ feature≤ no≈ ì
  391. anΣ g∩ int∩ morσ detai∞ later.
  392.  
  393.  
  394. 2.2  ZCPR2 Resident Commands
  395.  
  396.      Likσ thσ CP/═ 2.▓ CCP¼á ZCPR▓ contain≤ somσ command≤á withiε ì
  397. itself«á  I⌠ contain≤ al∞ oµ thσ CC╨ command≤ (excep⌠ USER¼ whicΦ ì
  398. isn'⌠ needeΣ anymore⌐ anΣ ß fe≈ more¼á bu⌠ al∞ oµ thσ ZCPR▓ resiì
  399. den⌠á command≤á arσ differen⌠ witΦ logica∞ extension≤ t∩ thσá CC╨ ì
  400. commands«á  Wσ havσ alread∙ seeε thσ D╒ form¼á whicΦ caε bσá useΣ ì
  401. witΦá an∙á ZCPR▓ residen⌠ command«á  Notσ tha⌠ thσ D╒ forφá i≤á ß ì
  402. logica∞ extensioε oµ thσ D║ prefi° unde≥ CP/═ 2.2.
  403.  
  404.      Again¼á witΦá al∞ oµ thσ possiblσ ZCPR▓ configurations¼á thσ ì
  405. followinτ discussioε applie≤ t∩ thσ recommendeΣ configuration.
  406.  
  407.      Thσá followinτ i≤ ß comparisoε oµ thσ variou≤ residen⌠á comì
  408. manΣ form≤ unde≥ thσ CP/═ 2.▓ CC╨ anΣ ZCPR2:
  409.  
  410.  
  411.  
  412.               Comparison of ZCPR2 and CP/M 2.2 CCP
  413.  
  414.  
  415. Functioε                      ZCPR▓ CommanΣ       CC╨ Command
  416. Display $DIR File Names       DIR DU:afn          DIR D:afn
  417. Display $SYS File Names       DIR DU:afn S        No Equivalent
  418. Display All File Names        DIR DU:afn A        No Equivalent
  419.  
  420. Erase Specified Files         ERA DU:afn          ERA D:afn
  421. Erase with Verify             ERA DU:afn V        No Equivalent
  422.  
  423. Renamσ Filσ                   RE╬ DU:ufn=ufn▓     RE╬ DU:ufn=ufn2
  424. Rename Over Existing File     REN DU:ufn=ufn2     No Equivalent
  425.  
  426. Print File on Console         TYPE DU:ufn P       TYPE D:ufn
  427.   Without Paging
  428. Print File on Console         TYPE DU:ufn         No Equivalent
  429.   With Paging
  430. Print File on Printer         LIST DU:ufn         No Equivalent
  431.  
  432. Save Memory into File         SAVE n DU:ufn       SAVE n D:ufn
  433. Save Memory into File         SAVE n DU:ufn       No Equivalent
  434.   With Overwrite Warning
  435. Save Memory into File         SAVE nH DU:ufn      No Equivalent
  436.   and Specify Size in Hex
  437. Save Memory into File         SAVE n DU:ufn S     No Equivalent
  438.   and Specify Number of        or
  439.   Blocks                      SAVE nH DU:ufn S
  440.  
  441. Load File Anywhere Into       GET adr DU:ufn      No Equivalent
  442.   Memory
  443.  
  444. Reexecute Last Transient      GO params           No Equivalent
  445.   Without Reloading It
  446.  
  447. Call Subroutine Anywhere in   JUMP adr            No Equivalent
  448.   Memory
  449.  
  450. Change Disk                   D:                  D:
  451. Change User                   U:                  USER n
  452. Change Disk and User at       DU:                 No Equivalent
  453.   Same Time
  454.  
  455.  
  456. 2.3  ZCPR2 Standard Transient Commands
  457.  
  458.      Al∞á oµ thσ CP/M-supplieΣ transien⌠ command≤ wil∞ worδá witΦ ì
  459. ZCPR2¼ anΣ ZCPR▓ supplie≤ severa∞ additiona∞ ZCPR2-specifiπ tranì
  460. sients¼ a≤ indicateΣ iε thσ followinτ tables:
  461.  
  462.  
  463.             Standard CP/M 2.2 Transients under ZCPR2
  464.  
  465. Program   Function                           Functional Changes
  466. ASM       Intel 8080 Assembler               No Change
  467. DDT       Debugger                           No Change
  468. DUMP      File Dump                          No Change
  469. ED        Character-Oriented Text Editor     No Change
  470. LOAD      HEX-to-COM File Converter          No Change
  471. MOVCP═    Reconfigurσ CP/═ fo≥ Differen⌠     Wil∞ Onl∙ Affec⌠
  472.             Memory Size                        BDOS -- ZCPR2
  473.                                                Mus⌠ Bσ
  474.                                                Reassembled
  475. PIP       File and Peripheral Transfer       No Change
  476. STAT      Statistics display, etc            No Change
  477. SUBMIT    Batch Command Processor            No Change
  478. SYSGEN    Get/Put System Image on Disk       No Change
  479.  
  480.  
  481.                     Standard ZCPR2 Transients
  482.  
  483. Program   Function
  484. CD        Log Into Named Directory with Extended Preprocessing
  485. COMPARE   Utility to Compare Two Files
  486. CRC       Cyclic Redundancy Check Utility
  487. DIFF      Utility to List File Differences
  488. DU2       Disk Utility, based on DU
  489. ECHO      Utility to Echo Its Command Line
  490. ERASE     File Erase Utility
  491. FINDBAD   Bad Block Scanner, based on FINDBD
  492. GENINS    Utility to Install Itself and Other Utilities
  493. HELP      Online Documentation System
  494. LD        Load Named Directory Buffer
  495. LU/LRUNZ  Command Library Utility and Extended Command Processor
  496. MCHECK    Menu File Syntax Checker
  497. MCOPY     File Copy Utility which can replace PIP in many cases
  498. MENU      Extended Command PreProcessor designed to create menus
  499. MKDIR     Create Named Directory File
  500. PATH      Define/Display ZCPR2 Paths
  501. PROTECT   Utility to Set File Attributes
  502. PWD       Print Current Named Directory Environment
  503. RENAME    File Rename Utility
  504. STARTUP   Initial Command Line Generator
  505. SUB2      Extended SUBMIT Indirect Command File Facility
  506. XDIR      Directory Display and Scan Utility
  507. ZEX       Memory-Based Indirect Command File Facility and Monitor
  508.  
  509.                Extended I/O Configuration Programs
  510.  
  511. Program   Function
  512. CONFIG    TVI-950 CRT Configurator Program
  513. DEVICE    Mnemonic-based I/O Redirection Utility
  514. IOLOADER  Extended I/O System Loader
  515. TINIT     TVI-950 CRT Programmer
  516.  
  517.  
  518.      Al∞á oµ thσ ZCPR2-specifiπ command≤ arσ describeΣ iεá detai∞ ì
  519. iε thσ User'≤ Guide¼ a≤ wel∞ a≤ thσ ZCPR2-residen⌠ commands.
  520.  
  521.  
  522. 2.4  Multiple Command Lines
  523.  
  524.      Onσ majo≥ featurσ oµ ZCPR▓ whicΦ ╔ wil∞ mentioε herσ briefl∙ ì
  525. i≤ thσ Multiplσ CommanΣ Line«á  Unlikσ CP/═ 2.2¼ ZCPR▓ wil∞ allo≈ ì
  526. yo⌡ t∩ specif∙ ß sequencσ oµ command≤ t∩ bσ executeΣ oε onσ line«  ì
  527. Unde≥ thσ recommendeΣ configuration¼ eacΦ commanΣ i≤ separateΣ b∙ ì
  528. ß semicolon«  Fo≥ example:
  529.  
  530.           A>B:;DIR A7:*.TXT;DIR C22:*.COM A;C7:;ERA *.COM;DIR
  531.  
  532. i≤ ß valiΣ commanΣ linσ t∩ ZCPR2«  WitΦ thσ Multiplσ CommanΣ Linσ ì
  533. featurσá enabled¼á no⌠ onl∙ caε thσ use≥ issuσ morσ thaε onσ comì
  534. manΣá oεá ß line¼á bu⌠ program≤ caε usσ thi≤á facilit∙á t∩á issuσ ì
  535. command≤ a≤ well¼ thereb∙ chaininτ t∩ eacΦ othe≥ viß ZCPR2.
  536.  
  537.  
  538. 2.5  Paths
  539.  
  540.      Command processing under CP/M 2.2 is really quite simple:
  541.           1) Inpu⌠ anΣ Parsσ CommanΣ Linσ froφ Use≥ o≥ File
  542.           2) Determinσ iµ i⌠ i≤ ß CCP-residen⌠ commanΣ anΣ ruε i⌠ ì
  543. áááááááááááááiµ so
  544.           3) Determinσ iµ therσ i≤ ß CO═ filσ iε thσ curren⌠ disδ ì
  545. áááááááááááááanΣ use≥ areß anΣ loaΣ i⌠ anΣ ruε i⌠ iµ so
  546.           4) Print error message if 2 and 3 fail
  547.  
  548.      Command processing under ZCPR2, however, is quite different:
  549.           1) Input and Parse Command Line from User or File
  550.           2) Determinσá iµ i⌠ i≤ ß ZCPR2-residen⌠ commanΣ anΣ ruε ì
  551. ááááááááááááái⌠ iµ so
  552.           3) SearcΦ alonτ thσ commanΣ searcΦ path¼á logginτá int∩ ì
  553. áááááááááááááthσ disk≤ anΣ use≥ area≤ indicateΣ iε thσ patΦ unti∞ ì
  554. áááááááááááááeithe≥á thσá bottoφá oµ thσ patΦ i≤ reacheΣá o≥á thσ ì
  555. ááááááááááááádesireΣ CO═ filσ i≤ found╗ ruε prograφ iµ found
  556.           4) Invokσá aε ExtendeΣ CommanΣ Processor¼á passinτá thσ ì
  557. áááááááááááááCommanΣ Linσ t∩ it
  558.           5) Print error message if 2, 3, and 4 fail
  559.  
  560.  
  561.      A≤ thσ reade≥ caε see¼á thσ concep⌠ oµ ß patΦ i≤ fundamenta∞ ì
  562. t∩á ZCPR2«á  Iεá thσ ZCPR▓ vernacular¼á ß Pathô i≤ ßá sequencσá oµ ì
  563. directorie≤á t∩ bσ searcheΣ fo≥ ß file«á  Thσ specificatioε oµá ß ì
  564. patΦá i≤á a≤á ß sequencσ oµ D╒ form≤ whicΦ arσá extendeΣá b∙á thσ ì
  565. introductioεá oµ thσ "$ó characte≥ t∩ indicatσ ß curren⌠ disδá o≥ ì
  566. curren⌠ use≥ area«  Example≤ oµ path≤ are:
  567.  
  568.           1) $ñá $░ Añ A░ -- PatΦ Froφ Curren⌠ Disδá anΣá Curren⌠ ì
  569. áááááááááááááUse≥á t∩ Curren⌠ Disδ anΣ Use≥ ░ t∩ Disδ ┴ anΣá Curì
  570. áááááááááááááren⌠á Use≥á t∩ Disδ ┴ anΣ Use≥ ░ (Curren⌠á Disδá anΣ ì
  571. áááááááááááááUse≥á i≤á thσá disδ anΣ use≥ areß tha⌠ thσá use≥á i≤ ì
  572. áááááááááááááloggeΣ into)
  573.  
  574.           2) $ñ A░ A2▓ A1┤ B2▓ C1▓ C░ B░ $░ Añ -- ╔ thinδ yo⌡ caε ì
  575. áááááááááááááfollo≈ thi≤ path╗á thi≤ i≤ t∩ illustratσ tha⌠ ß patΦ ì
  576. ááááááááááááálengtΦ i≤ indefinitσ (usuall∙ u≡ t∩ 1╢á directories¼ ì
  577. áááááááááááááwhicΦá i≤ quitσ reasonable⌐ anΣ caε extenΣ int∩ use≥ ì
  578. áááááááááááááarea≤ beyonΣ 15¼ whicΦ can'⌠ bσ loggeΣ into
  579.  
  580.      Wheε ZCPR▓ searche≤ fo≥ ß file¼ i⌠ follow≤ sucΦ ß path«  Tw∩ ì
  581. extremel∙ flexiblσ feature≤ abou⌠ thσ ZCPR▓ desigε are:
  582.  
  583.           1) thσ commanΣ searcΦ patΦ ma∙ bσ redefineΣ dynamicall∙ ì
  584. áááááááááááááb∙ thσ user
  585.           2) severa∞ ZCPR▓ transient≤ usσ path≤ also¼á anΣá thesσ ì
  586. ááááááááááááápath≤ ma∙ bσ thσ samσ patΦ useΣ b∙ commanΣ searcΦ o≥ ì
  587. áááááááááááááthe∙ ma∙ bσ uniquσ t∩ eacΦ transient
  588.  
  589.  
  590. 2.6  Overview and Putting the Basic Concepts Together
  591.  
  592.      As a practical example, let's consider the following case:
  593.  
  594.           1) I am logged into B1
  595.           2) ╔á aφ workinτ oε M8░ assemble≥ languagσ program≤á iε ì
  596. áááááááááááááB1¼á anΣ al∞ oµ m∙ M8░ CO═ file≤ (M80.COM¼á L80.COM⌐ ì
  597. áááááááááááááarσ iε A1¼á a≤ wel∞ a≤ ß commanΣ filσ t∩ d∩ assembl∙ ì
  598. áááááááááááááunde≥á M8░á whicΦ i≤ writteε fo≥ processinτá b∙á ZE╪ ì
  599. ááááááááááááá(filσ i≤ M80.ZEX)
  600.           3) Al∞ oµ m∙ genera∞ utilities¼ sucΦ a≤ XDI╥ anΣ ERASE¼ ì
  601. áááááááááááááarσ iε A0
  602.           4) My path is $$ $0 A$ A0
  603.  
  604.      Stud∙ thσ followinτ termina∞ session«á  Comment≤ arσ denoteΣ ì
  605. ou⌠ t∩ thσ sidσ witΦ "<--"¼á anΣ thi≤ sessioε ha≤ beeε editeΣ fo≥ ì
  606. clarity and to remove extraneous details.
  607.  
  608.  
  609. B1>xdir a:     <-- Directory of all files on A1 (working base)
  610.  
  611. XDIR III, Version 1.3    Vertical Listing by File Type and Name
  612.  Disk: A  User:   1, File Attributes:  Non-System
  613.  
  614. Filename.Typ Size K   Filename.Typ Size K   Filename.Typ Size K
  615. -------- --- ------   -------- --- ------   -------- --- ------
  616. ASM     .CFG      4   SYSLIB2 .HLP      4   WM      .HLP      4    
  617. ASM2    .COM      8   SYSLIB3 .HLP      8   SYSLIB  .REL     16    
  618. L80     .COM     12   SYSLIB4 .HLP      8   ASM2    .SUB      4    
  619. L80OLD  .COM     12   SYSLIB5 .HLP      8   M80     .SUB      4    
  620. LIB     .COM      8   SYSLIB6 .HLP      4   M80-2   .SUB      4    
  621. LOAD    .COM      4   SYSLIB7 .HLP      8   MAC     .SUB      4    
  622. M80     .COM     20   SYSLIB8 .HLP      8   RELS    .UTL      4    
  623. M80OLD  .COM     20   SYSLIB9 .HLP      8   ASM2    .ZEX      4    
  624. MAC     .COM     12   SYSLIBA .HLP      8   M80     .ZEX      4    
  625. FNAMES  .DIR      4   SYSLIBB .HLP      8   M80-2   .ZEX      4    
  626. SYSLIB  .HLP     16   SYSLIBC .HLP     12   MAC     .ZEX      4    
  627. SYSLIB1 .HLP     16
  628.    34 Files Occupying   276K,   241 Files on Disk and  2148K Free
  629.  
  630. B1>xdir a0:*.com aa      <-- dir of all COM files on A0, the root
  631.  
  632. XDIR III, Version 1.3    Vertical Listing by File Type and Name
  633.  Disk: A  User:   0, File Attributes:  Non-System System
  634.  
  635. Filename.Typ Size K   Filename.Typ Size K   Filename.Typ Size K
  636. -------- --- ------   -------- --- ------   -------- --- ------
  637. BAD     .COM     28   DISPLAY .COM      4   LRUNZ   .COM      4   
  638. BANNER  .COM      4   DUTIL   .COM     12   LU      .COM     20   
  639. BOOTHD  .COM      4   ECHO    .COM      4   MBASIC  .COM     24   
  640. CALC    .COM      4   ED      .COM      8   MCHECK  .COM      8   
  641. CALENDAR.COM     16   ERASE   .COM      8   MCOPY   .COM     12   
  642. CCPLOC  .COM      4   FINDBAD .COM      4   MEMTEST .COM      4   
  643. CD      .COM      4   FORMAT2 .COM      4   MENU    .COM      4   
  644. CHDIR   .COM     16   FORMATHD.COM      8   NAMEDISK.COM      4   
  645. COMPARE .COM      8   GENINS  .COM     12   PATH    .COM     12   
  646. CONFIG  .COM     20   GETSYS  .COM     12   PIP     .COM      8   
  647. CRC     .COM      8   HDSYSGEN.COM      4   PRINT   .COM      8   
  648. DASM    .COM     12   HELP    .COM      4   PROTECT .COM      8   
  649. DDT     .COM      8   INUSE   .COM      4   PWD     .COM      8   
  650. DEVICE  .COM     12   IOLOADER.COM      4   REGEN   .COM      4   
  651. DIFF    .COM      8   LD      .COM      8   RENAME  .COM      8   
  652. Screen Break -- Type any character to continue 
  653.  
  654. XDIR III, Version 1.3    Vertical Listing by File Type and Name
  655.  Disk: A  User:   0, File Attributes:  Non-System System
  656.  
  657. Filename.Typ Size K   Filename.Typ Size K   Filename.Typ Size K
  658. -------- --- ------   -------- --- ------   -------- --- ------
  659. SCRAMBLE.COM      4   TERM    .COM     24   WM      .COM     12   
  660. SD      .COM      4   TIME    .COM      8   XDIR    .COM     12   
  661. SGEN    .COM      4   TINIT   .COM      8   ZDT     .COM      8   
  662. SQ      .COM     16   TYPESQ  .COM     12   ZEX     .COM      8   
  663. STARTUP .COM      8   UNLOAD  .COM      4   ZRUN    .COM      4   
  664. STAT    .COM      8   USQ     .COM     12   ZSID    .COM     12   
  665. SUB     .COM      4
  666.    64 Files Occupying   564K,   241 Files on Disk and  2148K Free
  667.  
  668.      <-- Note║  M∙ PatΦ i≤ $ñ $░ Añ A0¼ or¼ specifically¼ B1¼ B0¼ 
  669.           A1, A0
  670.  
  671. B1>ed demo.mac      <-- Use ED to create simple program
  672.                     <-- For this to run, ZCPR2 searched B1, B0,
  673.                     <-- A1, and A0 for ED.COM, finding it on A0
  674.                     <-- and ED placed DEMO.MAC on B1
  675. NEW FILE
  676.      : *i
  677.     1:          ext     padc    ;print A as decimal chars
  678.     2:          ext     print   ;print string at return adr
  679.     3:  
  680.     4:          mvi     b,10    ;set loop counter
  681.     5:          mvi     c,0     ;set display value
  682.     6:  loop:
  683.     7:          inr     c       ;add 1
  684.     8:          call    print
  685.     9:          db      0dh,0ah,'This is line ',0
  686.    10:          mov     a,c     ;get line number
  687.    11:          call    padc    ;print as decimal
  688.    12:          dcr     b       ;count down
  689.    13:          jnz     loop
  690.    14:          ret             ;return to OS
  691.    15:  
  692.    16:          end
  693.    17:  
  694.      : *e
  695.  
  696. B1>dir    <-- Display Local Files
  697. DEMO    .BAK  |  DEMO    .MAC
  698. B1>dir a:*.zex      <-- Display ZEX Command Files on A1
  699. M80     .ZEX  |  ASM2    .ZEX  |  M80-2   .ZEX  |  MAC     .ZEX
  700.  
  701.  
  702. B1>type a:m80.zex   <-- Look at my M80 Command File
  703. ;  M80.SUB -- MACRO-80 Assembler and Linker
  704. M80 =$1
  705. ;  Please Type $^C if Error(s) Exist - ^?
  706. ERA $1.BAK
  707. ERA $1.COM
  708. L80 /P:100,$1,A:SYSLIB/S,$1/N,/U,/E
  709. ERA $1.REL
  710. ;  Assembly Complete
  711.  
  712. B1>time;zex m80 demo;time     <-- Run Command File with Timing
  713.                               <-- Data; Note Multiple Commands
  714. TIME  Version 1.1    2:03:26 AM on Sunday December 19, 1982
  715.                               <-- TIME was found on A0
  716. ZEX, Version 1.1              <-- ZEX was found on A0, but then
  717. (ZEX Active)                  <-- ZEX searched the path and
  718.                               <-- found M80.ZEX on A1 and
  719.                               <-- processed it
  720. B1>;  M80.SUB -- MACRO-80 Assembler and Linker
  721. B1>M80 =DEMO
  722.  
  723. No Fatal error(s)
  724.  
  725. (ZEX Active)
  726. B1>;  Please Type ^C if Error(s) Exist - 
  727.  
  728. B1>ERA DEMO.BAK
  729. DEMO    .BAK
  730. B1>ERA DEMO.COM
  731. No File
  732. B1>L80 /P:100,DEMO,A:SYSLIB/S,DEMO/N,/U,/E
  733.  
  734. Link-80  3.44  09-Dec-81  Copyright (c) 1981 Microsoft
  735. Data    0100    0210    <  272>
  736.  
  737. 35838 Bytes Free
  738.  
  739. Data    0100    0210    <  272>
  740.  
  741. 35838 Bytes Free
  742. [0000   0210        2]
  743.  
  744. (ZEX Active)
  745. B1>ERA DEMO.REL
  746. DEMO    .REL
  747. B1>;  Assembly Complete
  748. B1>TIME
  749. TIME  Version 1.1    2:04:25 AM on Sunday December 19, 1982
  750. B1>
  751. (ZEX Completed)
  752.  
  753. By Your Command >demo    <-- Now I run my program
  754.  
  755. This is line   1
  756. This is line   2
  757. This is line   3
  758. This is line   4
  759. This is line   5
  760. This is line   6
  761. This is line   7
  762. This is line   8
  763. This is line   9
  764. This is line  10
  765. B1>
  766.  
  767.  
  768. 3.0  ZCPR2 Directories and Files
  769.  
  770.      A≤á mentioneΣá earlier¼á ß directory¼á iε thσ vernacula≥á oµ ì
  771. ZCPR2¼á i≤á ß logica∞ areß oε ß disδ whicΦ i≤ designateΣ b∙ ßá D╒ ì
  772. form«á  ┴ disδ ma∙ havσ u≡ t∩ 3▓ directories¼á numbereΣ ░ t∩á 31¼ ì
  773. but¼á iεá orde≥ t∩ maintaiε CP/═ 2.▓ compatability¼á thσ use≥ ma∙ ì
  774. loτ int∩ onl∙ 1╢ oµ theφ (░ t∩ 15)«  Thσ othe≥ 1╢ directorie≤ (1╢ ì
  775. t∩ 31⌐ ma∙ bσ useΣ t∩ onl∙ storσ files«  Seσ thσ Rationalσ manua∞ ì
  776. fo≥ aε explanatioε a≤ t∩ wh∙ ╔ diΣ no⌠ choosσ t∩ changσ thi≤á anΣ ì
  777. allo≈ thσ use≥ t∩ loτ int∩ al∞ 3▓ directories.
  778.  
  779.      Wheε ß use≥ i≤ "loggeΣ intoó ß directory¼ hi≤ environmen⌠ i≤ ì
  780. configureΣ (unde≥ ZCPR▓ anΣ thσ BDOS⌐ s∩ tha⌠ wheneve≥ hσ create≤ ì
  781. ß ne≈ filσ (assuminτ hσ doesn'⌠ specif∙ ß directory)¼á i⌠ wil∞ bσ ì
  782. placeΣá iεá thσ director∙ hσ i≤ currentl∙ loggeΣ into«á  SucΦá aε ì
  783. environmen⌠ allow≤ thσ use≥ t∩ kee≡ thσ file≤ hσ i≤ interesteΣ iε ì
  784. a⌠á thσá particula≥ timσ iε ß director∙ separatσ froφá thσá othe≥ ì
  785. file≤á oε thσ disk«á  Iε thi≤ way¼á thσ use≥ neeΣ no⌠á alway≤á bσ ì
  786. workinτ arounΣ al∞ thσ othe≥ file≤ oε hi≤ disk.
  787.  
  788.      EacΦ filσ iε ß director∙ ha≤ tw∩ basiπ attribute≤ associateΣ ì
  789. witΦ it║á  it≤ SYSTE═ attributσ anΣ it≤ READ/ONL┘ attribute«á  Iµ ì
  790. thσá SYSTE═ attributσ i≤ Se⌠ (i.e.¼á i⌠ i≤ declareΣ t∩ bσ ßá $SY╙ ì
  791. file)¼á theεá i⌠ become≤ hiddeε froφ norma∞ viewinτ b∙ thσá user«  ì
  792. Thσ DI╥ command¼á fo≥ instance¼á wil∞ no⌠ displa∙ i⌠ unles≤ thσ ╙ ì
  793. (SYSTEM⌐ o≥ ┴ (ALL⌐ option≤ arσ specified«á  Iµ thσ SYSTE═ attriì
  794. butσ i≤ Clea≥ (i.e.¼á i⌠ i≤ declareΣ t∩ be ß $DI╥ file)¼á theε i⌠ ì
  795. i≤á normall∙ alway≤ displayeΣ t∩ thσ use≥ withou⌠ hiφá specifyinτ ì
  796. an∙ option≤ t∩ thσ commands.
  797.  
  798.      Thσá READ/ONL┘á attributσ declare≤ thσ filσ t∩ bσá protecteΣ ì
  799. froφ beinτ writteε ove≥ o≥ deleteΣ iµ thi≤ attributσ i≤ Set«  Yo⌡ ì
  800. ma∙ onl∙ reaΣ froφ sucΦ ß filσ iµ thi≤ attributσ i≤ Set«  Severa∞ ì
  801. oµ thσ ZCPR▓ utilities¼á specificall∙ ERASE¼á havσ option≤ t∩á g∩ ì
  802. aheaΣá anΣ perforφ thei≥ function≤ oε Read/Onl∙ file≤ iε spitσ oµ ì
  803. thei≥ attributσ settings.
  804.  
  805.      Thσ PROTEC╘ utilit∙ i≤ useΣ t∩ se⌠ thσ SYSTE═ anΣá READ/ONL┘ ì
  806. attribute≤á oµá files¼áá a≤á wel∞á a≤á severa∞á others«á  Wσá arσ ì
  807. maintaininτ ful∞ CP/═ 2.▓ compatabilit∙ here¼ anΣ u≡ t∩ eigh⌠ TA╟ ì
  808. bits and an ARCHIVE bit may be set also.
  809.  
  810.      ╔ havσ discusseΣ thσ D╒ forφ t∩ somσ exten⌠ earlie≥ anΣ wil∞ ì
  811. no⌠á g∩á int∩ aε extendeΣ discussioε oµ i⌠ here«á  I⌠á i≤á reall∙ ì
  812. rathe≥ straight-forward«á  EacΦ director∙ i≤ indicateΣ b∙ ßá disδ ì
  813. anΣá use≥ area¼á s∩ thσ D╒ forφ give≤ exactl∙ thi≤ specification«  ì
  814. The ZCPR2-resident commands support this form extensively:
  815.  
  816.           A>DIR C7:
  817.           A>ERA B22:MYFILE.TXT V
  818.           A>TYPE A31:TEMP.TXT
  819.           A>REN C12:FILE.TXT=FILE1.TXT
  820.           A>LIST A31:TEMP.TXT
  821.           A>DIR B4: A
  822. è
  823.      Iε addition¼ yo⌡ ma∙ usσ thσ D╒ forφ t∩ loτ int∩ ß differen⌠ ì
  824. disδá anΣ sta∙ iε thσ samσ use≥ area¼á ß differen⌠ use≥ areßá anΣ ì
  825. sta∙á oε thσ samσ disk¼á o≥ ß differen⌠ use≥ areß oε ßá differen⌠ ì
  826. disk:
  827.  
  828.           A>B7:
  829.           B7>12:
  830.           B12>A:
  831.           A12>B15:
  832.           B15>B0:
  833.           B>A:
  834.           A>
  835.  
  836.      I⌠á shoulΣá als∩ bσ noteΣ tha⌠ mos⌠á oµá thσá ZCPR2-supplieΣ ì
  837. utilities have been programmed to recognize the DU form as well:
  838.  
  839.           A>XDIR B7:
  840.           A>ERASE B4:*.TXT,C2:*.*
  841.           A>CRC 4:*.*,5:*.*
  842.           A>PROTECT B:*.* RS
  843.  
  844.      Iεá additioεá t∩á thσ D╒ form¼á mos⌠ oµá thσá ZCPR2-supplieΣ ì
  845. utilitie≤á caεá dea∞ witΦ ß director∙ specificatioεá iεá whicΦá ß ì
  846. mnemoniπ namσ ha≤ beeε defineΣ fo≥ ß directory«  SucΦ ß director∙ ì
  847. forφá i≤á calleΣ thσ DI╥ forφ o≥ thσ NameΣ Directoryô forφ iεá thσ ì
  848. ZCPR▓á vernacular«á  NameΣá directorie≤ arσ no⌠á knowεá b∙á ZCPR▓ ì
  849. itselµá bu⌠ onl∙ b∙ ZCPR▓ utilitie≤ iε thσ ZCPR▓á System«á  Therσ ì
  850. arσá fou≥á utilitie≤á specificall∙ designeΣ t∩á dea∞á witΦá nameΣ ì
  851. directories:
  852.  
  853.           MKDIR -- Create and Edit Named Directories
  854.  
  855.           LD    -- Load a Named Directory File into a Named
  856.                    Directory Memory Buffer
  857.  
  858.           CD    -- Change Directory into a Named Directory
  859.                    (like the DU: command, but more extensive)
  860.  
  861.           PWD   -- Print Working Directory
  862.  
  863.      NameΣá Directorie≤á arσ defineΣ iε ß filσ calleΣá NAMES.DIR«  ì
  864. Wheεá ß utility¼á sucΦ a≤ XDIR¼á i≤ giveε ß commanΣá involvinτá ß ì
  865. NameΣá Directory¼á i⌠ perform≤ ß searcΦ alonτ thσ commanΣá searcΦ ì
  866. patΦ fo≥ ß filσ nameΣ NAMES.DIR«á  A≤ sooε a≤ onσ i≤ found¼ i⌠ i≤ ì
  867. loadeΣá anΣ scanneΣ fo≥ ß match«á  Iµ ß matchinτ entr∙ i≤á found¼ ì
  868. thσá associateΣá informatioε i≤ extracteΣ (D╒ informatioε i≤á no≈ ì
  869. available)¼á anΣá thσ utilit∙ work≤ witΦ thσ D╒ informatioεá froφ ì
  870. theε on.
  871.  
  872.  
  873.      Thσ NAMES.DI╥ filσ i≤ structureΣ a≤ ß filσ containinτ 6┤ 11-ì
  874. bytσ records¼ eacΦ recorΣ containinτ thσ followinτ information:
  875.  
  876.           Byte 0:  Disk Letter (A-P)
  877.           Byte 1:  User Number
  878.           Bytes 2-10:  Directory Name (up to 8 chars terminated
  879.                        by a binary zero)
  880.  
  881.      Thσ empt∙ entr∙ i≤ onσ whosσ Bytσ ▓ i≤ ß binar∙ ░ (n∩ name)«  ì
  882. Empt∙á entrie≤á ma∙ bσ intersperseΣ witΦá non-empt∙á entries¼á s∩ ì
  883. don'⌠á assumσ tha⌠ thσ enΣ oµ thσ director∙ i≤ reacheΣá wheεá thσ ì
  884. firs⌠ empt∙ entr∙ i≤ found.
  885.  
  886.      Thσá stor∙ giveε abovσ fo≥ wha⌠ happen≤ i≤ no⌠ exactl∙á truσ ì
  887. iε al∞ ZCPR▓ systems«  Iε thσ interes⌠ oµ speeΣ anΣ efficiency¼ ß ì
  888. NameΣá Director∙ Buffe≥ ma∙ bσ defineΣ t∩ thσ utilitie≤ employinτ ì
  889. thσá capabilitie≤ oµ dealinτ witΦ NameΣ Directories«á  Wheεá thi≤ ì
  890. buffe≥á facilit∙ i≤ enabled¼á thσ utilit∙ perform≤ thσá followinτ ì
  891. operation≤ wheε ß Director∙ Namσ i≤ giveε t∩ it:
  892.  
  893.   o Checδá t∩á seσ iµ i⌠ i≤ ß D╒ forφ (disδá lette≥á iεá thσ ì
  894. áááárangσá oµá ┴ t∩ d¼á wherσ Σ i≤ defineΣ t∩á thσá utility¼ ì
  895. ááááfolloweΣ b∙ ß use≥ numbe≥ iε thσ rangσ oµ ░ t∩ u¼á wherσ ì
  896. áááá⌡ i≤ als∩ defineΣ t∩ thσ utility)«  Iµ thi≤ i≤ thσ case¼ ì
  897. ááááassumσ thσ forφ t∩ bσ D╒ anΣ g∩ witΦ it.
  898.  
  899.   o Iµ wσ arσ no⌠ dealinτ witΦ ß D╒ form¼ assumσ i⌠ i≤ ß DI╥ ì
  900. ááááform«á  Iε thi≤ case¼ scaε thσ memory-baseΣ NameΣ Direcì
  901. áááátor∙ Buffe≥ fo≥ ß match«  Iµ onσ i≤ found¼ g∩ witΦ it.
  902.  
  903.   oáIµá therσá i≤ n∩ memory-baseΣ NameΣ Director∙ Buffe≥á o≥ ì
  904. áááátherσ wa≤ n∩ matcΦ iε saiΣ buffer¼ theε searcΦ alonτ thσ ì
  905. áááácommanΣ searcΦ patΦ fo≥ thσ NAMES.DI╥ file«á  Iµá found¼ ì
  906. ááááloaΣá i⌠ anΣ scaε i⌠ fo≥ thσ indicateΣ name«á  Iµ onσ i≤ ì
  907. ááááfound¼ g∩ witΦ it.
  908.  
  909.   o Iµ thσ NAMES.DI╥ filσ i≤ no⌠ founΣ o≥ iµ i⌠ i≤ founΣ anΣ ì
  910. áááátherσá i≤ n∩ matcΦ amonτ it≤ entries¼á issuσá aεá approì
  911. áááápriatσ erro≥ messagσ anΣ abort.
  912.  
  913.      Thσá L─á commanΣ i≤ useΣ t∩ LoaΣ ß Director∙ filσá int∩á thσ ì
  914. NameΣ Director∙ buffer«á  I⌠ i≤ iε thi≤ wa∙ tha⌠ thσ content≤á oµ ì
  915. thσ NameΣ Director∙ buffe≥ arσ defined«á  MKDI╥ i≤ useΣ t∩ creatσ ì
  916. ßá filσ defininτ ß grou≡ oµ nameΣ directories¼á anΣ L─ i≤ useΣ t∩ ì
  917. loaΣá thi≤ filσ int∩ memory«á  Thσ onl∙ operatinτ systeφá suppor⌠ ì
  918. requireΣ fo≥ thi≤ featurσ i≤ fo≥ thσ BIO╙ t∩ initializσ thσ NameΣ ì
  919. Director∙ Buffe≥ oε ColΣ Boot«á  Thσ BIO╙ doe≤ thi≤ b∙ storinτ aε ì
  920. entr∙á coun⌠á a≤ thσ firs⌠ bytσ oµ thσ buffe≥ (thi≤á entr∙á coun⌠ ì
  921. tell≤ L─ ho≈ man∙ entrie≤ ma∙ bσ storeΣ iε thσ buffer)¼á anΣ theε ì
  922. fou≥á zeroe≤ a≤ thσ nex⌠ fou≥ byte≤ oµ thi≤á buffer«á  Thσá firs⌠ ì
  923. zer∩á indicate≤ tha⌠ therσ arσ n∩ entrie≤ presen⌠ iε thσá buffer¼ ì
  924. anΣá thσá nex⌠á threσ zeroe≤ definσ aε empt∙ entr∙ a≤á thσá firs⌠ ì
  925. entry«áá  Thσá NameΣá Director∙á Buffe≥á i≤á structureΣá slightl∙ ì
  926. differently than the NAMES.DIR file:
  927. è
  928.         Header Bytes --
  929.           Byte 0:  Number of Entries Allowed in the Named
  930.                    Directories Buffer
  931.           Byte 1:  Number of Entries Currently Stored in the
  932.                    Named Directories Buffer
  933.  
  934.         Entry Bytes --
  935.           Byte 0:  Disk Number (0 to 15, Disk A = 0)
  936.           Byte 1:  User Number (0 to 31)
  937.           Bytes 2-9:  Directory Name (8 bytes, Byte 2=0 if none)
  938.  
  939.      Thi≤á interna∞á structura∞ informatioε i≤ giveεá mainl∙á fo≥ ì
  940. you≥ reference¼á anΣ yo⌡ d∩ no⌠ neeΣ t∩ kno≈ thi≤ detai∞ iε orde≥ ì
  941. t∩ makσ usσ oµ thσ system«á  Essentially¼ oncσ thσ systeφ anΣ it≤ ì
  942. utilitie≤á arσ properl∙ installed¼á thσ procedurσ fo≥á usinτá thσ ì
  943. Named Directory facilities is:
  944.  
  945.           (1⌐ usσ L─ t∩ loaΣ thσ NameΣ Director∙ Buffer
  946.           (2⌐ usσ MKDI╥ t∩ creatσ NameΣ Director∙ Files
  947.           (3) use the utilities and Named Directories at will
  948.  
  949.      Tw∩á morσ commands¼á beside≤ MKDI╥ anΣ LD¼á arσ availablσ t∩ ì
  950. hel≡ thσ use≥ dea∞ witΦ nameΣ directorie≤ specifically«  The∙ arσ ì
  951. PW─ (Prin⌠ Workinτ Directory⌐ anΣ C─ (Changσ Directory).
  952.  
  953.      Thσá PW─ commanΣ i≤ useΣ t∩ prin⌠ ou⌠ thσ name≤ oµ thσá dirì
  954. ectorie≤ baseΣ oε hi≤ commanΣ searcΦ path«á  I⌠ wil∞ firs⌠á prin⌠ ì
  955. ou⌠ thσ content≤ oµ thσ NameΣ Director∙ Buffe≥ iµ onσ exists¼ anΣ ì
  956. i⌠á wil∞ theε prin⌠ ou⌠ thσ content≤ oµ thσ firs⌠ NAMES.DI╥á filσ ì
  957. i⌠ encounter≤ alonτ thσ user'≤ commanΣ searcΦ path.
  958.  
  959.      C─ i≤ useΣ t∩ loτ int∩ ß NameΣ Directory¼á iε lie⌡ oµ thσ D╒ ì
  960. form«  Wha⌠ C─ buy≤ thσ use≥ i≤ tw∩ things:
  961.  
  962.           (1⌐ Iε ß securσ environment¼ thσ D╒ forφ ma∙ bσ disablì
  963. eΣ anΣ onl∙ C─ madσ availablσ t∩ thσ user«á  Thσ use≥ MUS╘ usσ C─ ì
  964. t∩ loτ int∩ ß differen⌠ directory¼á and¼á eacΦ timσ C─ i≤ run¼ i⌠ ì
  965. check≤ t∩ seσ iµ thσ director∙ thσ use≥ i≤ tryinτ t∩ loτ int∩á i≤ ì
  966. ß "Systeφ Directoryó anΣ ask≤ thσ use≥ fo≥ ß passworΣ iµ i⌠ is.
  967.  
  968.           (2⌐ Wheε C─ log≤ ß use≥ int∩ ß directory¼á i⌠ look≤ fo≥ ì
  969. ß filσ nameΣ ST.COM«á  Iµ i⌠ find≤ one¼ i⌠ chain≤ t∩ it«  S╘ i≤ ß ì
  970. versioε oµ thσ STARTU╨ commanΣ whicΦ i≤ configureΣ t∩ perforφ onσ ì
  971. o≥á morσá initia∞á command≤ oncσ ß director∙ i≤á entereΣá b∙á CD«  ì
  972. Thesσá command≤ can¼á amonτ othe≥ things¼á completel∙ reconfigurσ ì
  973. thσ user'≤ environment¼á givinτ hiφ ß totall∙ differen⌠á environì
  974. men⌠á froφ thσ onσ hσ jus⌠ left«á  Candidate≤ fo≥ command≤ t∩á bσ ì
  975. executeΣ b∙ C─ include:
  976.  
  977.                o IOLOADER -- load a new I/O system
  978.                o MENU -- enter a menu system
  979.                o PATH -- define a new command search path
  980.                o ZEX  -- run a command file
  981.  
  982. è
  983.      Securσá environment≤ wil∞ bσ discusseΣ iε thei≥ owεá sectioε ì
  984. later¼á bu⌠ onσ additiona∞ featurσ t∩ mentioε herσ i≤ tha⌠ PW─ i≤ ì
  985. awarσ oµ Systeφ Directories¼á and¼ wheneve≥ i⌠ runs¼ i⌠ check≤ t∩ ì
  986. seσá iµá i⌠ i≤ runninτ froφ ß Systeφ Directory«á  Iµá i⌠á is¼á i⌠ ì
  987. display≤á al∞ knowε directorie≤ t∩ thσ user«á  Iµ i⌠ i≤á not¼á i⌠ ì
  988. display≤ onl∙ thσ non-Systeφ directorie≤ t∩ thσ user.
  989.  
  990.      ┴ Systeφ Directoryô iε thσ ZCPR▓ vernacula≥ i≤ onσ whosσ use≥ ì
  991. numbe≥ i≤ abovσ 1░ (defaul⌠ recommendeΣ value)«  An∙ sucΦ directì
  992. or∙á i≤á declareΣá t∩ bσ ß Systeφ Directory¼á anΣ ßá passworΣá i≤ ì
  993. requireΣá t∩ ente≥ i⌠ wheε thσ C─ commanΣ i≤ used«á  A≤ witΦá an∙ ì
  994. NameΣá Directory¼á Systeφ Directorie≤ arσ no⌠ knowε t∩ ZCPR▓á itì
  995. self¼ s∩ iµ thσ D╒ forφ oµ ZCPR▓ i≤ enabled¼ i⌠ wil∞ ignorσ thesσ ì
  996. restriction≤á anΣá movσ thσ use≥ righ⌠ int∩á ßá Systeφá Director∙ ì
  997. withou⌠ qualms.
  998.  
  999.      ╔á thinδá i⌠ i≤ timσ fo≥ anothe≥ termina∞ sessioε t∩á illusì
  1000. tratσ thσ point≤ covereΣ s∩ far«  Hence¼ pleasσ stud∙ thσ followì
  1001. ing terminal session:
  1002.  
  1003. B1>;
  1004. B1>;  When my ZCPR2 system cold boots, it always runs the command
  1005. B1>;  STARTUP -- notice what STARTUP does:
  1006. B1>startup s
  1007. STARTUP, Version 1.1
  1008. STARTUP Setup Command (?=Help)? ?
  1009.   Setup Mode Commands are --
  1010.         A -- Define Address of Multiple Command Buffer
  1011.         C -- Define STARTUP Multiple Command Line
  1012.         D -- Display STARTUP Values
  1013.         S -- Define Size of Multiple Command Buffer
  1014.         X -- Exit and Optionally Rewrite STARTUP
  1015. STARTUP Setup Command (?=Help)? D
  1016.  
  1017. **** STARTUP Settings ****
  1018.         Multiple Command Buffer Address -- FF00H
  1019.         Size of Multiple Command Buffer -- 200 Bytes
  1020.         Multiple Command Line --
  1021.         --->ioloader;ld ld;tinit;echo welcome to zcpr ii
  1022. **** STARTUP Settings ****
  1023.  
  1024. STARTUP Setup Command (?=Help)? X
  1025.         Do you wish to update STARTUP (Y/N/<CR>=Y)? N
  1026. B1>;
  1027. B1>;  As the reader can see, it uses the ZCPR2 Multiple Command
  1028. B1>;  Line Buffer facility to store an initial command line which
  1029. B1>;  runs the following commands:
  1030. B1>;    IOLOADER -- loads I/O system
  1031. B1>;    LD LD    -- loads the named directory LD.DIR into the
  1032. B1>;                    memory-based Named Directory Buffer
  1033. B1>;    TINIT    -- programs my TVI 950 CRT terminal (function
  1034. B1>;                    keys, status line, etc)
  1035. B1>;    ECHO     -- prints the message "WELCOME ..." on my CRT
  1036. B1>;
  1037. èB1>;
  1038. B1>;  Before proceeding, let's look at my command search path
  1039. B1>;
  1040. B1>path
  1041. PATH Version 2.2
  1042. Current Symbolic Path --
  1043.         $$: --> $0: --> A$: --> A0:
  1044. Current Absolute Path --
  1045.         B1: --> B0: --> A1: --> A0:
  1046. Current Named Path --
  1047.         ASM: --> DEV-ROOT: --> R-ASM: --> ROOT:
  1048. B1>
  1049. B1>;
  1050. B1>;  This is the path along which CD, PWD, LD, and many other
  1051. B1>;  utilities search for the NAMES.DIR file.  As I am
  1052. B1>;  currently set up, I have only one NAMES.DIR file, and
  1053. B1>;  it is located at A0.
  1054. B1>;
  1055. B1>
  1056. B1>;
  1057. B1>;  Now let's see what directories are available to us:
  1058. B1>;
  1059. B1>pwd
  1060. PWD, Version 1.0
  1061.  
  1062. ** Directory Display **
  1063.  
  1064.         ** Named Directory Memory-Based Definitions **
  1065.  12 Directory Entries Total (  2 Directories Hidden) --
  1066. A --
  1067.    0: ROOT    
  1068. B --
  1069.    0: BROOT      1: ASM        2: BDSC       3: PAS     
  1070.    5: BASIC      7: WS         8: CAT        9: DBASE   
  1071. C --
  1072.    0: BACKUP  
  1073.  
  1074. Strike Any Key to Continue - 
  1075.  
  1076.         ** Named Directory  Disk-Based  Definitions **
  1077.  20 Directory Entries Total (  2 Directories Hidden) --
  1078. A --
  1079.    0: ROOT       1: R-ASM      2: R-BDSC     3: R-PAS   
  1080.    5: R-BASIC    7: R-WS       8: R-CAT      9: R-DBASE 
  1081. B --
  1082.    0: DEV-ROOT   1: ASM        2: BDSC       3: PAS     
  1083.    4: SCRATCH    5: BASIC      7: WS         8: CAT     
  1084.    9: DBASE   
  1085. C --
  1086.    0: BACKUP  
  1087.  
  1088. ** Current Directory **
  1089.         B 1: ASM     
  1090.  
  1091. B1>;
  1092. B1>;  As the reader can see, I have several more directories
  1093. B1>;  defined in NAMES.DIR than in the memory buffer.  I have
  1094. B1>;  chosen to define only my more frequently used directories
  1095. B1>;  in the memory buffer.
  1096. B1>;  Also note that two directories are hidden in each case.
  1097. B1>;  These are System Directories.
  1098. B1>;
  1099. B1>;  Let's move around a little via CD to show you how it works:
  1100. B1>;
  1101. B1>cd root
  1102. CD, Version 2.1
  1103. A>;
  1104. A>;  Since Root was found in memory, CD ran slightly faster
  1105. A>;  than if it had to do a NAMES.DIR search:
  1106. A>;
  1107. A>cd r-asm:
  1108. CD, Version 2.2
  1109. A1>cd ws:
  1110. CD, Version 2.2
  1111. B7>cd zcpr
  1112. CD, Version 2.2
  1113. Access Password? 
  1114. ** Access Granted **
  1115. A11>;
  1116. A11>;  Note that in this last example, I moved into a System
  1117. A11>;  Directory which was hidden in the previous PWD display.
  1118. A11>;  Now it is not:
  1119. A11>;
  1120. A11>pwd
  1121. PWD, Version 1.0
  1122.  
  1123. ** Directory Display **
  1124.  
  1125.         ** Named Directory Memory-Based Definitions **
  1126.  12 Directory Entries Total (  0 Directories Hidden) --
  1127. A --
  1128.    0: ROOT      10: SYS       11: ZCPR    
  1129. B --
  1130.    0: BROOT      1: ASM        2: BDSC       3: PAS     
  1131.    5: BASIC      7: WS         8: CAT        9: DBASE   
  1132. C --
  1133.    0: BACKUP  
  1134.  
  1135. Strike Any Key to Continue - 
  1136.  
  1137.  
  1138.         ** Named Directory  Disk-Based  Definitions **
  1139.  20 Directory Entries Total (  0 Directories Hidden) --
  1140. A --
  1141.    0: ROOT       1: R-ASM      2: R-BDSC     3: R-PAS   
  1142.    5: R-BASIC    7: R-WS       8: R-CAT      9: R-DBASE 
  1143.   10: SYS       11: ZCPR    
  1144. B --
  1145.    0: DEV-ROOT   1: ASM        2: BDSC       3: PAS     
  1146.    4: SCRATCH    5: BASIC      7: WS         8: CAT     
  1147.    9: DBASE   
  1148. C --
  1149.    0: BACKUP  
  1150.  
  1151. ** Current Directory **
  1152.         A11: ZCPR    
  1153. A11>cd root:
  1154. CD, Version 2.2
  1155. A>;
  1156. A>;  End of Demo
  1157. A>;
  1158.  
  1159.  
  1160.      Tree≤ arσ implementeΣ relativel∙ easil∙ iε thi≤ environment«  ì
  1161. Sincσá thσá NAMES.DI╥ whicΦ i≤ useΣ t∩ definσ thσ environmen⌠á i≤ ì
  1162. thσá firs⌠ NAMES.DI╥ encountereΣ alonτ thσ commanΣá searcΦá path¼ ì
  1163. theεá thi≤á NAMES.DI╥ becomes¼á effectively¼á thσ roo⌠ oµá ßá ne≈ ì
  1164. subtree«á  Commonly-knowε node≤ caε bσ storeΣ iε thσ memory-baseΣ ì
  1165. NameΣá Director∙ Buffer¼á anΣ thesσ wil∞ alway≤ bσ scanneΣ first«  ì
  1166. Iµá thi≤á scaεá fails¼á thσ curren⌠á root¼á whicΦá i≤á thσá firs⌠ ì
  1167. NAMES.DI╥ filσ founΣ alonτ thσ commanΣ searcΦ path¼á wil∞ providσ ì
  1168. thσ director∙ name¼ iµ any.
  1169.  
  1170.      Wholσá ne≈á workinτá environment≤ oε thσ samσá disδá caεá bσ ì
  1171. createΣá rathe≥á easil∙ unde≥ thσ ZCPR▓á environment¼á especiall∙ ì
  1172. wheεá C─á i≤ useΣ t∩ movσ arounΣ betweeεá directories«á  Thi≤á i≤ ì
  1173. primaril∙ becausσ C─ alway≤ look≤ fo≥ thσ ST.CO═ filσ iε thσá ne≈ ì
  1174. director∙á i⌠á i≤ movinτ int∩ anΣ chain≤ t∩ i⌠ iµ onσá i≤á there«  ì
  1175. The new ST.COM, then, can set up the new environment.
  1176.  
  1177.  
  1178.      Fo≥á example¼á imaginσá tha⌠ yo⌡ wan⌠ t∩ se⌠ u≡ ß wholσá ne≈ ì
  1179. workinτ environmen⌠ calleΣ ROBERT«á  ROBER╘ wil∞ bσ thσ basσ oµ ß ì
  1180. subtreσá whicΦ wil∞ havσ thσ directorie≤ oµá GAMES¼á SCHOOL¼á anΣ ì
  1181. OTHER under it:
  1182.  
  1183.                          ROOT
  1184.                         /    \
  1185.                     others    ROBERT
  1186.                              /  |   \
  1187.                        SCHOOL GAMES  OTHER
  1188.  
  1189.      Let'≤ arbitraril∙ assigε ROBERT=C7¼ SCHOOL=C8¼ GAMES=C9¼ anΣ ì
  1190. OTHER=C10«á  Iεá orde≥á t∩á implemen⌠ this¼á wσá woulΣá creatσá ß ì
  1191. NAMES.DI╥ filσ witΦ thesσ entrie≤ iε i⌠ anΣ placσ thi≤á NAMES.DI╥ ì
  1192. iε ROBER╘ (C7)«  Hence¼ thi≤ NAMES.DI╥ become≤ thσ basσ director∙ ì
  1193. fo≥á ou≥ subtree«á  Thσ Memory-BaseΣ NameΣ Director∙ wil∞ contaiε ì
  1194. thσ Globa∞ Name≤ only¼ fo≥ thi≤ example¼ s∩ let'≤ sa∙ i⌠ contain≤ ì
  1195. only one entry, and that entry is ROOT=A0.
  1196.  
  1197.      Wσ havσ no≈ defineΣ ou≥ directorie≤ tha⌠ wσ wan⌠ t∩ bσá ablσ ì
  1198. t∩á ge⌠ t∩ a≤ NAMES.DI╥ unde≥ ROBERT«á  Wσ no≈ wan⌠ t∩ se⌠ u≡ thσ ì
  1199. S╘ interna∞ commanΣ linσ whicΦ wil∞ bσ executeΣ wheε wσ loτá int∩ ì
  1200. ROBERT.  The following command line is all you need:
  1201.  
  1202.           PATH $$ C7 A$ A0
  1203.  
  1204. and ST.COM can be created by running the "STARTUP S" command.
  1205.  
  1206.      T∩á illustratσ thσ flexibilit∙ oµ ZCPR▓ eveεá further¼á wheε ì
  1207. Rober⌠á want≤ t∩ loτ int∩ hi≤ GAME╙ directory¼á hσ ofteε want≤ t∩ ì
  1208. ruε thσ samσ game≤ ove≥ anΣ over«á  T∩ kee≡ lifσ simplσ fo≥á him¼ ì
  1209. let'≤á se⌠á u≡ anothe≥ ST.CO═ filσ iε hi≤ GAME╙á director∙á whicΦ ì
  1210. runs MENU when this directory is logged into.
  1211.  
  1212.      Thσ followinτ termina∞ sessioε illustrate≤ thi≤ example║
  1213.  
  1214.  
  1215. B4>;
  1216. B4>;  First, I will set up the Named Directory Environments
  1217. B4>;  LD will load the Global Directory, LD.DIR
  1218. B4>;  NAMES.DIR will reside in ROBERT to define the subtree
  1219. B4>;
  1220. B4>mkdir
  1221. MKDIR, Version 1.0
  1222. MKDIR Command (? for Help)? ?
  1223. MKDIR Command Summary
  1224.         A -- Set Address of ZCPR2 External Path
  1225.         D -- Display Currently-Defined Directory Names
  1226.         F -- Set Name of Directory File
  1227.         I -- Initialize MKDIR
  1228.         N -- Create a New Directory Name
  1229.         Q -- Quit without Changing Program on Disk
  1230.         R -- Read in Directory File from Disk
  1231.         S -- Sort Directory by Disk and User Number
  1232.         W -- Write Directory File to Disk
  1233.         X -- Exit and Update Program on Disk
  1234. MKDIR Command (? for Help)? a
  1235. External Path Undefined
  1236. New Path Address (Hex)? 40.....
  1237.  
  1238. MKDIR Command (? for Help)? f
  1239. New Directory File? ld.dir......
  1240.  
  1241. MKDIR Command (? for Help)? n
  1242. System User Areas start at 10
  1243.         Disk Letter and User (RETURN=Done or A-P 0-31, like A10)? a0
  1244.         Directory Name (RETURN = Delete Old Name)? root....
  1245.  
  1246.         Disk Letter and User (RETURN=Done or A-P 0-31, like A10)? 
  1247.  
  1248. MKDIR Command (? for Help)? d
  1249. Directory File is ld.dir
  1250. External Path Address is 40 Hex
  1251. Defined Directory Names --
  1252. A -- 
  1253.   A 0: ROOT      
  1254. 1 Directory Names Displayed
  1255. 1 Directory Names Defined, Space Left for 63 More Names
  1256.  
  1257. Current Directory -- Not Defined by Name
  1258.  
  1259. MKDIR Command (? for Help)? w
  1260. Writing Directory File ld.dir to Disk ... Done
  1261. MKDIR Command (? for Help)? i   Verify Initialization (Y/N)? y
  1262. All Directory Names Cleared
  1263. MKDIR Command (? for Help)? f
  1264. New Directory File? names.dir...
  1265.  
  1266.  
  1267. MKDIR Command (? for Help)? n
  1268. System User Areas start at 10
  1269.         Disk Letter and User (RETURN=Done or A-P 0-31, like A10)? c7
  1270.         Directory Name (RETURN = Delete Old Name)? robert..
  1271.  
  1272.         Disk Letter and User (RETURN=Done or A-P 0-31, like A10)? c8
  1273.         Directory Name (RETURN = Delete Old Name)? school..
  1274.  
  1275.         Disk Letter and User (RETURN=Done or A-P 0-31, like A10)? c9
  1276.         Directory Name (RETURN = Delete Old Name)? games...
  1277.  
  1278.         Disk Letter and User (RETURN=Done or A-P 0-31, like A10)? c10
  1279.         Directory Name (RETURN = Delete Old Name)? other...
  1280.  
  1281.         Disk Letter and User (RETURN=Done or A-P 0-31, like A10)? 
  1282.  
  1283. MKDIR Command (? for Help)? d
  1284. Directory File is names.dir
  1285. External Path Address is 40 Hex
  1286. Defined Directory Names --
  1287. C -- 
  1288.   C 7: ROBERT      C 8: SCHOOL      C 9: GAMES       C10: OTHER     
  1289. 4 Directory Names Displayed
  1290. 4 Directory Names Defined, Space Left for 60 More Names
  1291.  
  1292. Current Directory -- Not Defined by Name
  1293.  
  1294. MKDIR Command (? for Help)? w
  1295. Writing Directory File names.dir to Disk ... Done
  1296. MKDIR Command (? for Help)? q   Verify Abort (Y/N)? y
  1297. B4>;
  1298. B4>;  We now have the Global and Subtree Directories Defined:
  1299. B4>;
  1300. B4>dir
  1301. LD      .DIR  |  NAMES   .DIR
  1302. B4>mcopy c7:=names.dir
  1303. MCOPY  Version 2.2
  1304.         Copy B  4: NAMES   .DIR to C  7:
  1305. No Original File NAMES   .DIR on Destination
  1306. !
  1307.  
  1308.     Copy Complete,  Verify Phase --
  1309.  
  1310.     Verify Complete
  1311. **** MCOPY Complete ****
  1312.             1 Files Copied
  1313.             0 Copy Errors
  1314. B4>;
  1315. B4>;  The Subtree Directory is now in its root at C7
  1316. B4>;
  1317.  
  1318.  
  1319. B4>ld ld
  1320. LD  Version 1.0
  1321. Load Complete
  1322. B4>;
  1323. B4>;  Global Directory is Now Loaded
  1324. B4>;
  1325. B4>cd robert
  1326. CD, Version 2.2
  1327. C7>;
  1328. C7>;  I will now define the new path to be set up when logged
  1329. C7>;  into ROBERT
  1330. C7>;
  1331. C7>startup s
  1332. STARTUP, Version 1.1
  1333. STARTUP Setup Command (?=Help)? C
  1334.         Current Multiple Command Buffer Contents is --
  1335. ioloader;ld ld;tinit;echo welcome to zcpr ii, version 2.0
  1336.         New Line? path $$ c7 a$ a0
  1337.  
  1338. **** STARTUP Settings ****
  1339.         Multiple Command Buffer Address -- FF00H
  1340.         Size of Multiple Command Buffer -- 200 Bytes
  1341.         Multiple Command Line --
  1342.         --->path $$ c7 a$ a0
  1343. **** STARTUP Settings ****
  1344.  
  1345. STARTUP Setup Command (?=Help)? X
  1346.         Do you wish to update STARTUP (Y/N/<CR>=Y)? Y
  1347.         STARTUP will write file to current disk/user
  1348.         STARTUP File is STARTUP .COM
  1349.         Enter New File Name or <CR> if OK: st.com
  1350.         STARTUP File is ST      .COM
  1351.         Enter New File Name or <CR> if OK: 
  1352.         Writing File ST      .COM to Disk ... Done
  1353. C7>dir
  1354. NAMES   .DIR  |  ST      .COM
  1355. C7>;
  1356. C7>;  We now have ST available to define the new environ
  1357. C7>;
  1358. C7>
  1359. C7>;
  1360. C7>;  I will set up the MENU File for the GAMES directory
  1361. C7>;
  1362. C7>cd games
  1363. CD, Version 2.2
  1364.  
  1365.  
  1366. C9>;
  1367. C9>;  I will create an ST.COM in GAMES to run MENU
  1368. C9>;
  1369. C9>startup s
  1370. STARTUP, Version 1.1
  1371. STARTUP Setup Command (?=Help)? C
  1372.         Current Multiple Command Buffer Contents is --
  1373. ioloader;ld ld;tinit;echo welcome to zcpr ii, version 2.0
  1374.         New Line? menu
  1375.  
  1376. **** STARTUP Settings ****
  1377.         Multiple Command Buffer Address -- FF00H
  1378.         Size of Multiple Command Buffer -- 200 Bytes
  1379.         Multiple Command Line --
  1380.         --->menu
  1381. **** STARTUP Settings ****
  1382.  
  1383. STARTUP Setup Command (?=Help)? X
  1384.         Do you wish to update STARTUP (Y/N/<CR>=Y)? Y
  1385.         STARTUP will write file to current disk/user
  1386.         STARTUP File is STARTUP .COM
  1387.         Enter New File Name or <CR> if OK: st.com
  1388.         STARTUP File is ST      .COM
  1389.         Enter New File Name or <CR> if OK: 
  1390.         Writing File ST      .COM to Disk ... Done
  1391. C9>;
  1392. C9>;  I'll set up a MENU.CPR file to
  1393. C9>;  illustrate what can be done
  1394. C9>;
  1395. C9>ed menu.cpr
  1396.  
  1397. NEW FILE
  1398.      : *i
  1399.     1:  -dx
  1400.     2:  #
  1401.     3:  This is a sample Menu -- I set the Global Menu
  1402.     4:  options to display menu and allow exit to ZCPR2
  1403.     5:  
  1404.     6:  Menu Commands --
  1405.     7:          X -- Display Directory (XDIR)
  1406.     8:          Z -- Run Any Command Line
  1407.     9:          Q -- Jump Out to ROBERT
  1408.    10:  #
  1409.    11:  x!xdir "Input Options -- 
  1410.    12:  z!"Input Command Line -- 
  1411.    13:  qcd robert
  1412.    14:  ##
  1413.    15:  
  1414.      : *e
  1415.  
  1416. C9>dir
  1417. ST      .COM  |  MENU    .BAK  |  MENU    .CPR
  1418. C9>era *.bak
  1419. MENU    .BAK
  1420. èC9>;
  1421. C9>;  I will now run MCHECK to perform a syntax check on the
  1422. C9>;  MENU.CPR file
  1423. C9>;
  1424. C9>mcheck menu
  1425. MCHECK  Version 1.0
  1426.  
  1427.  Line Comment/Error Message
  1428.  ---- ---------------------
  1429.     1 ** Global Options Detected **
  1430.     2 ** Menu Number   0
  1431.    14 ** End of Menu Check **
  1432.         No Errors Detected
  1433. C9>;
  1434. C9>;  We are now ready for a full demo --
  1435. C9>;  Let's play like we are Robert, and he has just come up
  1436. C9>;  (I will start at B4 since the NAMES.DIR defining ROBERT
  1437. C9>;  is there, but he would start at A0)
  1438. C9>;
  1439. C9>b4:
  1440. B4>dir
  1441. LD      .DIR  |  NAMES   .DIR
  1442. B4>;
  1443. B4>;  On powerup, STARTUP would run LD LD, among others
  1444. B4>;
  1445. B4>ld ld
  1446. LD  Version 1.0
  1447. Load Complete
  1448. B4>;
  1449. B4>;  Robert would now log into his directory
  1450. B4>;
  1451. B4>cd robert
  1452. CD, Version 2.2
  1453.  
  1454. PATH Version 2.2
  1455. Current Symbolic Path --
  1456.         $$: --> C7: --> A$: --> A0:
  1457. Current Absolute Path --
  1458.         C7: --> C7: --> A7: --> A0:
  1459. Current Named Path --
  1460.         ROBERT: --> ROBERT: --> Noname: --> Noname:
  1461. C7>dir
  1462. NAMES   .DIR  |  ST      .COM
  1463. C7>;
  1464. C7>;  We are now in ROBERT, and can access his world:
  1465. C7>;
  1466.  
  1467.  
  1468. C7>pwd
  1469. PWD, Version 1.0
  1470.  
  1471. ** Directory Display **
  1472.  
  1473.         ** Named Directory Memory-Based Definitions **
  1474.   1 Directory Entries Total (  0 Directories Hidden) --
  1475. A --
  1476.    0: ROOT    
  1477.  
  1478. Strike Any Key to Continue - 
  1479.  
  1480.         ** Named Directory  Disk-Based  Definitions **
  1481.   4 Directory Entries Total (  1 Directories Hidden) --
  1482. C --
  1483.    7: ROBERT     8: SCHOOL     9: GAMES   
  1484.  
  1485. ** Current Directory **
  1486.         C 7: ROBERT  
  1487. C7>;
  1488. C7>;  Like going to SCHOOL --
  1489. C7>;
  1490. C7>cd school
  1491. CD, Version 2.2
  1492. C8>dir
  1493. No File
  1494. C8>;
  1495. C8>;  Or going into OTHER (which is a System Directory)
  1496. C8>;
  1497. C8>cd other
  1498. CD, Version 2.2
  1499. Access Password? 
  1500. ** Access Granted **
  1501. C10>dir
  1502. No File
  1503. C10>;
  1504. C10>;  Or playing games -- note that by CDing into GAMES, we
  1505. C10>;  automatically come up in a Menu Environment
  1506. C10>;
  1507. C10>cd games
  1508. CD, Version 2.2
  1509.  
  1510. MENU  Version 1.1
  1511.  
  1512. This is a sample Menu -- I set the Global Menu
  1513. options to display menu and allow exit to ZCPR2
  1514.  
  1515. Menu Commands --
  1516.         X -- Display Directory (XDIR)
  1517.         Z -- Run Any Command Line
  1518.         Q -- Jump Out to ROBERT
  1519. Command (<CR>=Menu Disp, ^C=CP/M) - X
  1520. Input Options -- *.dir...................................
  1521.  
  1522. èXDIR III, Version 1.3    Vertical Listing by File Type and Name
  1523.  Disk: C  User:   9, File Attributes:  Non-System
  1524. No files selected
  1525.  
  1526. MENU  Version 1.1 Strike Any Key - 
  1527.  
  1528. This is a sample Menu -- I set the Global Menu
  1529. options to display menu and allow exit to ZCPR2
  1530.  
  1531. Menu Commands --
  1532.         X -- Display Directory (XDIR)
  1533.         Z -- Run Any Command Line
  1534.         Q -- Jump Out to ROBERT
  1535. Command (<CR>=Menu Disp, ^C=CP/M) - Z
  1536. Input Command Line -- dir.....................................
  1537. ST      .COM  |  MENU    .CPR
  1538. MENU  Version 1.1 Strike Any Key - 
  1539.  
  1540. This is a sample Menu -- I set the Global Menu
  1541. options to display menu and allow exit to ZCPR2
  1542.  
  1543. Menu Commands --
  1544.         X -- Display Directory (XDIR)
  1545.         Z -- Run Any Command Line
  1546.         Q -- Jump Out to ROBERT
  1547. Command (<CR>=Menu Disp, ^C=CP/M) - Q
  1548. CD, Version 2.2
  1549.  
  1550. PATH Version 2.2
  1551. Current Symbolic Path --
  1552.         $$: --> C7: --> A$: --> A0:
  1553. Current Absolute Path --
  1554.         C7: --> C7: --> A7: --> A0:
  1555. Current Named Path --
  1556.         ROBERT: --> ROBERT: --> Noname: --> Noname:
  1557. MENU  Version 1.1
  1558.  
  1559. Menu Not Found
  1560. C7>;
  1561. C7>;  Note that MENU was still running, but it aborted gracefully
  1562. C7>;  under the new directory
  1563. C7>;
  1564. C7>
  1565. C7>;
  1566. C7>;  End of Demo
  1567. C7>;
  1568.  
  1569.  
  1570. 4.0  ZCPR2 Commands
  1571.  
  1572.      ZCPR▓ will¼ generall∙ speaking¼ accep⌠ an∙ conventiona∞ CP/═ ì
  1573. commanΣá anΣ i⌠ i≤ ablσ t∩ ruε virtuall∙ al∞ oµ thσ existinτ CP/═ ì
  1574. softwarσá (witΦá thσ fe≈ mino≥ exception≤ a≤á noteΣá previously)«  ì
  1575. Thi≤ sectioε oµ thσ Concept≤ Manua∞ deal≤ witΦ thσ ZCPR2-specifiπ ì
  1576. commands¼á i.e.¼á thσá ZCPR▓ Residen⌠ Command≤ anΣ thσá transien⌠ ì
  1577. programs released with ZCPR2.
  1578.  
  1579. 4.1  ZCPR2 Resident Commands
  1580.  
  1581.      Likσ thσ CP/═ 2.▓ CCP¼á ZCPR▓ contain≤ somσ command≤á withiε ì
  1582. itself«á  I⌠ contain≤ al∞ oµ thσ CC╨ command≤ (excep⌠ USER¼ whicΦ ì
  1583. isn'⌠ needeΣ anymore⌐ anΣ ß fe≈ more¼á bu⌠ al∞ oµ thσ ZCPR▓ resiì
  1584. den⌠á command≤á arσ differen⌠ witΦ logica∞ extension≤ t∩ thσá CC╨ ì
  1585. commands«á Thσá followinτ discussioε applie≤ t∩á thσá recommendeΣ ì
  1586. configuratioε oµ ZCPR2.
  1587.  
  1588.      Iε thσ followinτ discussion¼ "afnó refer≤ t∩ thσ CP/═ ambigì
  1589. uou≤á filσá namσ forφ (containinτ "?ó and/o≥ "*ó characters⌐á anΣ ì
  1590. "ufnóá refer≤á t∩ thσ CP/═ unambiguou≤ filσ namσ forφá (doe≤á no⌠ ì
  1591. contaiε thσ ambiguou≤ characters).
  1592.  
  1593. 4.1.1  The DIR Command
  1594.      Thσ DI╥ commanΣ i≤ useΣ t∩ displa∙ thσ name≤ oµ thσ file≤ iε ì
  1595. the current directory.  It has three basic forms --
  1596.  
  1597.           Display $DIR File Names       DIR DU:afn
  1598.           Display $SYS File Names       DIR DU:afn S
  1599.           Display All File Names        DIR DU:afn A
  1600.  
  1601. 4.1.2  The ERA Command
  1602.      Thσá ER┴ commanΣ i≤ useΣ t∩ erasσ files«á  I⌠ i≤ no⌠ ablσ t∩ ì
  1603. erasσ Read/Onl∙ files¼ bu⌠ i⌠ caε erasσ Systeφ files«  I⌠ ha≤ tw∩ ì
  1604. basic forms --
  1605.  
  1606.           Erase Specified Files         ERA DU:afn
  1607.           Erase with Verify             ERA DU:afn V
  1608.  
  1609. 4.1.3  The REN Command
  1610.      Thσá RE╬ commanΣ i≤ useΣ t∩ changσ thσ namσ oµ onσá filσá t∩ ì
  1611. another«á  Again¼ i⌠ caε no⌠ changσ thσ namσ oµ ß Read/Onl∙ file«  ì
  1612. It has only one basic form --
  1613.  
  1614.           Renamσ Filσ                   RE╬ DU:ufn1=ufn▓
  1615.  
  1616.      Iµ ufn▒ alread∙ exists¼ RE╬ wil∞ asδ thσ use≥ iµ hσ want≤ t∩ ì
  1617. Erase it (with the prompt "ERA ufn1?").
  1618.  
  1619.  
  1620. 4.1.4  The TYPE and LIST Commands
  1621.      TYP┼á anΣ LIS╘ arσ useΣ t∩ displa∙ file≤ oε thσ consolσá anΣ ì
  1622. printer¼á resp«  TYP┼ page≤ b∙ default¼ stoppinτ afte≥ thσ screeε ì
  1623. is filled.  These two commands have three basic forms --
  1624.  
  1625.           Print File on Console         TYPE DU:ufn P
  1626.             Without Paging
  1627.           Print File on Console         TYPE DU:ufn
  1628.             With Paging
  1629.           Print File on Printer         LIST DU:ufn
  1630.  
  1631. 4.1.5  The SAVE Command
  1632.      Thσá SAV┼á commanΣ i≤ useΣ t∩ savσ thσ content≤ oµá thσá TP┴ ì
  1633. ont∩ disδ a≤ ß file«á  I⌠ accept≤ tw∩ arguments║á  ß numbe≥ anΣ ß ì
  1634. filσá name«á  Thσá filσá namσ ma∙ bσ optionall∙ followeΣá b∙á thσ ì
  1635. lette≥ "Só t∩ indicatσ tha⌠ thσ numbe≥ i≤ thσ numbe≥ oµá 128-bytσ ì
  1636. Sector≤á (Blocks⌐á t∩ bσ saved¼á and¼á iµ thi≤ optioεá lette≥á i≤ ì
  1637. omitted¼ thσ numbe≥ i≤ assumeΣ t∩ bσ thσ numbe≥ oµ 256-bytσ Page≤ ì
  1638. to be saved.  The SAVE command has two basic forms --
  1639.  
  1640.           Save Memory into File         SAVE n DU:ufn
  1641.           Save Memory into File         SAVE n DU:ufn S
  1642.             and Specify Number of
  1643.             Blocks
  1644.  
  1645.      Iµ thσ number¼á n¼ i≤ followeΣ b∙ thσ suffi° "H"¼ a≤ iε "FHó ì
  1646. o≥á "2DH"¼á theεá ε i≤ takeε t∩ bσ ß hexadecima∞á value«á  Iµá n∩ ì
  1647. suffi°á i≤ given¼á ε i≤ assumeΣ t∩ bσ decimal«á  Thi≤ hexadecima∞ ì
  1648. optioεá eliminate≤á thσá neeΣá fo≥á conversioεá froφá thσá value≤ ì
  1649. supplied by debuggers, like DDT.
  1650.  
  1651.      Iµ thσ indicateΣ filσ alread∙ exists¼ SAV┼ wil∞ asδ thσ use≥ ì
  1652. if he wishes to erase it with the prompt "ERA ufn?".
  1653.  
  1654. 4.1.6  The GET Command
  1655.      GE╘á i≤á useΣá t∩ loaΣ ßá filσá anywherσá int∩á memory«á  I⌠ ì
  1656. require≤ tw∩ arguments║á  ß numbe≥ (assumeΣ t∩ bσ hexadecimal⌐ oµ ì
  1657. thσá 256-bytσá pagσ iε memor∙ a⌠ whicΦ t∩ star⌠ thσ loaΣ anΣá thσ ì
  1658. name of the file.
  1659.  
  1660.           Load File Into Memory         GET adr DU:ufn
  1661.  
  1662. 4.1.7  The GO Command
  1663.      Thσ G╧ commanΣ i≤ useΣ t∩ reexecutσ thσ las⌠ prograφá loadeΣ ì
  1664. into the TPA without having to reload it.
  1665.  
  1666.           Reexecute Last Transient      GO params
  1667.             Without Reloading It
  1668.  
  1669.  
  1670. 4.1.8  The JUMP Command
  1671.      JUM╨ i≤ useΣ t∩ brancΦ t∩ anywherσ iε memory«  I⌠ take≤ onl∙ ì
  1672. onσá argument¼á whicΦá i≤á thσ addres≤ a⌠ whicΦá t∩á jump«á  Thi≤ ì
  1673. addres≤á caεá bσá t∩á an∙ bytσ iε memor∙ (i⌠á i≤á ßá ful∞á 16-bi⌠ ì
  1674. address), and it is assumed to be a hexadecimal number.
  1675.  
  1676.           Call Subroutine Anywhere in   JUMP adr
  1677.             Memory
  1678.  
  1679. 4.1.9  The DU Form for Changing Disk and User
  1680.      Thσá D╒ forφ standinτ alonσ i≤ useΣ t∩ loτ int∩ ßá differen⌠ ì
  1681. directory.  There are three basic forms of this command --
  1682.  
  1683.           Change Disk                   D:
  1684.           Change User                   U:
  1685.           Change Disk and User at       DU:
  1686.             Same Time
  1687.  
  1688.  
  1689. 4.2  ZCPR2 Standard Transient Commands
  1690.  
  1691.      Al∞á oµ thσ CP/M-supplieΣ transien⌠ command≤ wil∞ worδá witΦ ì
  1692. ZCPR2¼ anΣ ZCPR▓ supplie≤ severa∞ additiona∞ ZCPR2-specifiπ tranì
  1693. sients¼ a≤ indicateΣ iε thσ followinτ tables:
  1694.  
  1695.  
  1696.             Standard CP/M 2.2 Transients under ZCPR2
  1697.  
  1698. Program   Function                           Functional Changes
  1699. ASM       Intel 8080 Assembler               No Change
  1700. DDT       Debugger                           No Change
  1701. DUMP      File Dump                          No Change
  1702. ED        Character-Oriented Text Editor     No Change
  1703. LOAD      HEX-to-COM File Converter          No Change
  1704. MOVCP═    Reconfigurσ CP/═ fo≥ Differen⌠     Wil∞ Onl∙ Affec⌠
  1705.             Memory Size                        BDOS -- ZCPR2
  1706.                                                Mus⌠ Bσ
  1707.                                                Reassembled
  1708. PIP       File and Peripheral Transfer       No Change
  1709. STAT      Statistics display, etc            No Change
  1710. SUBMIT    Batch Command Processor            No Change
  1711. SYSGEN    Get/Put System Image on Disk       No Change
  1712.  
  1713.  
  1714.  
  1715.                     Standard ZCPR2 Transients
  1716.  
  1717.      Thσá standarΣ transient≤ oµ ZCPR▓ caε bσ groupeΣ b∙á subjec⌠ ì
  1718. areßá a≤á organizeΣá iε thei≥ Hel≡ Files«á  Thi≤ groupinτá i≤á a≤ ì
  1719. follows:
  1720.  
  1721.      1.  I/O                       8.  Command Files
  1722.           CONFIG, TINIT                 SUB2
  1723.           DEVICE                        ZEX
  1724.           IOLOADER
  1725.           RECORD                   9.  Named Directories
  1726.           STARTUP                       CD
  1727.           SYSIO                         STARTUP as ST
  1728.                                         LD
  1729.      2.  Directories                    MKDIR
  1730.           XDIR3                         PWD
  1731.  
  1732.      3.  Disk Utilities           10.  ZCPR2
  1733.           DU2                           DIR, XDIR3
  1734.                                         ERA, ERASE
  1735.      4.  Library                        REN, RENAME
  1736.           LDIRZ                         TYPE, PAGE
  1737.           LRUNZ                         LIST, PRINT
  1738.           LU                            SAVE
  1739.                                         JUMP
  1740.      5.  Menu                           GO
  1741.           MCHECK                        GENINS
  1742.           MENU                          PATH
  1743.                                         WHEEL
  1744.      6.  File Compare                   PROTECT
  1745.           COMPARE
  1746.           CRC                     11.  Help
  1747.           DIFF                          HELP2
  1748.  
  1749.      7.  File Copy                12.  Misc
  1750.           MCOPY                         CCPLOC
  1751.                                         ECHO
  1752.  
  1753.  
  1754.               ZCPR2 Transients Grouped by Function
  1755.  
  1756.  
  1757.      Thσá followinτ i≤ ß brieµ overvie≈ oµ thesσ transient≤ whicΦ ì
  1758. concentrate≤ oε thei≥ function≤ anΣ interactions«á  Thi≤ overvie≈ ì
  1759. i≤á organizeΣ accordinτ t∩ thσ functiona∞ grouping≤ giveεá above«  ì
  1760. Al∞á oµ thσ ZCPR2-specifiπ anΣ ZCPR2-residen⌠ command≤á arσá desì
  1761. cribeΣ iε detai∞ iε thσ User'≤ Guide.
  1762.  
  1763.  
  1764.  
  1765.      1.  Input/Output
  1766.  
  1767.           Thσá CONFI╟ anΣ TINI╘ program≤ arσ useΣ t∩ prograφá thσ ì
  1768. TV╔ 95░ CR╘ terminal«  Thesσ arσ provided¼ oµ course¼ fo≥ TV╔ 95░ ì
  1769. owners¼ bu⌠ the∙ als∩ servσ a≤ example≤ oµ ho≈ t∩ se⌠ u≡ termina∞ ì
  1770. programmer≤ fo≥ othe≥ type≤ oµ terminal≤ a≤ well«  CONFI╟ i≤ useΣ ì
  1771. t∩á creatσá configuratioε file≤ fo≥ variou≤ type≤á oµá functions¼ ì
  1772. sucΦá a≤á assembl∙á languagσá softwarσá development¼á ├á languagσ ì
  1773. softwarσ development¼á worΣ processing¼á anΣ datß basσ work«  Thσ ì
  1774. file≤á createΣ b∙ CONFI╟ contaiε datß whicΦ ma∙ bσ useΣ b∙ CONFI╟ ì
  1775. itself or TINIT to program the terminal.
  1776.  
  1777.           Iεá programminτá thσ terminal¼á thσ attribute≤á oµá thσ ì
  1778. display¼á thσ typσ oµ cursor¼á thσ content≤ oµ thσ functioε keys¼ ì
  1779. anΣá thσ displa∙ oµ thσ statu≤ linσ arσ somσ oµ thσ function≤á oµ ì
  1780. thσá termina∞ whicΦ ma∙ bσ programmed«á  CONFI╟ serve≤ t∩á creatσ ì
  1781. configuratioεá file≤ (oµ typσ CFG⌐ mainly¼á anΣ TINI╘ i≤ useΣá t∩ ì
  1782. perforφ thσ programming«  TINI╘ read≤ thσ indicateΣ configuratioε ì
  1783. filσ afte≥ followinτ ß patΦ iε lookinτ fo≥ i⌠ anΣ theε send≤á thσ ì
  1784. appropriate command sequences to the terminal.
  1785.  
  1786.           SYSIO.AS═á i≤á ß samplσ Redirectablσ I/╧ Packagσá whicΦ ì
  1787. run≤á oε m∙ ZCPR▓ system«á  I⌠ caε bσ useΣ t∩ ac⌠ a≤ ß mode∞á fo≥ ì
  1788. thσá desigεá oµá othe≥ sucΦ package≤á fo≥á variou≤á purpose≤á anΣ ì
  1789. hardware configurations.  The reader is invited to study it.
  1790.  
  1791.           IOLOADE╥á i≤á useΣ t∩ loaΣ ß Redirectablσá I/╧á Packagσ ì
  1792. int∩ memor∙ anΣ cal∞ it≤ initializatioε routine«á  DEVIC┼ i≤ useΣ ì
  1793. t∩ displa∙ thσ name≤ anΣ meaning≤ oµ thσ devicσ driver≤ containeΣ ì
  1794. iεá aεá I/╧ packagσ anΣ t∩ selec⌠á ßá physical-to-logica∞á devicσ ì
  1795. assignmen⌠ a≤ desireΣ b∙ thσ user«  RECOR─ i≤ useΣ t∩ contro∞ thσ ì
  1796. disδá filσá outpu⌠á function≤ fo≥ recordinτá consolσá outpu⌠á anΣ ì
  1797. printe≥ outpu⌠ int∩ disδ files.
  1798.  
  1799.           Finally¼áá STARTU╨á i≤á includeΣá iεá thi≤á listinτá t∩ ì
  1800. emphasizσáá tha⌠áá i⌠á ma∙á bσá useΣá t∩á executσá IOLOADE╥áá fo≥ ì
  1801. initialization purposes.
  1802.  
  1803.  
  1804.      2.  Directories
  1805.  
  1806.           XDIR│á i≤á thσ extendeΣ director∙á displa∙á utilit∙á oµ ì
  1807. ZCPR2«á  I⌠á support≤ ß widσ variet∙ oµ functions¼á ranginτá froφ ì
  1808. director∙á displa∙á t∩á filσ namσ scanner«á  I⌠á use≤á path≤á anΣ ì
  1809. supports the named directory scheme under ZCPR2.
  1810.  
  1811.  
  1812.      3.  Disk Utilities
  1813.  
  1814.           DU▓á i≤á ßá slightl∙ enhanceΣ versioεá oµá DU¼á ßá disδ ì
  1815. utilit∙ designeΣ b∙ WarΣ Christensen«  Thσ reason≤ ╔ camσ u≡ witΦ ì
  1816. DU▓á werσá t∩ adΣ ß couplσ oµ additiona∞á features¼á changσá DU'≤ ì
  1817. human-engineerinτ interfacσ t∩ matcΦ m∙ particula≥ tastes¼ anΣ t∩ ì
  1818. makσ i⌠ mesΦ morσ cleanl∙ witΦ ZCPR2.
  1819. è
  1820.      4.  Library Utilities
  1821.  
  1822.           L╒á (Librar∙á Utility⌐á i≤ ß prograφá writteεá b∙á Gar∙ ì
  1823. NovosielskΘ whicΦ place≤ ß numbe≥ oµ smalle≥ file≤ int∩ onσ largσ ì
  1824. filσá witΦ it≤ owε directory«á  Amonτ othe≥ things¼á thi≤ prograφ ì
  1825. help≤ t∩ conservσ spacσ oε disδ b∙ eliminatinτ ß lo⌠ oµ thσ wastσ ì
  1826. associateΣ witΦ thσ unuseΣ spacσ iε thσ las⌠ grou≡ oµ ß filσá anΣ ì
  1827. provide≤ ß convenien⌠ wa∙ t∩ grou≡ program≤ together.
  1828.  
  1829.           LDIR┌ i≤ ß prograφ ╔ wrotσ t∩ allo≈ thσ use≥ t∩ examinσ ì
  1830. thσá content≤á oµ ß librar∙ filσ anΣ displa∙ thσ content≤á iεá aε ì
  1831. alphabetica∞á listinτ witΦ filσ sizσ information«á  I⌠ use≤ path≤ ì
  1832. t∩á finΣá thσ librar∙ filσ (oµ typσ LBR⌐ tha⌠ i⌠ wishe≤á t∩á dea∞ ì
  1833. with.
  1834.  
  1835.           LRUN┌á i≤á ß modificatioε oµ thσá Gary'≤á LRU╬á prograφ ì
  1836. whicΦ perform≤ thσ samσ functioε bu⌠ searche≤ alonτ path≤ fo≥ thσ ì
  1837. librar∙ file.
  1838.  
  1839.  
  1840.      5.  Menu
  1841.  
  1842.           MEN╒áá anΣá MCHEC╦á arσá thσá program≤á useΣá t∩áá dea∞ ì
  1843. specificall∙á witΦ ß men⌡ commanΣ systeφ unde≥ ZCPR2«á  Menu≤ arσ ì
  1844. createΣá iε thσ forφ oµ MENU.CP╥ files¼á witΦ onl∙á onσá MENU.CP╥ ì
  1845. filσáá permitteΣá pe≥á director∙á anΣá witΦá eacΦá MENU.CP╥á filσ ì
  1846. containinτá u≡ t∩ 25╡ menus«á  Thσ Men⌡ Systeφ set≤ u≡ ßá commanΣ ì
  1847. environmen⌠ iε whicΦ thσ command≤ whicΦ thσ use≥ ma∙ executσá arσ ì
  1848. presenteΣá t∩á hiφ iε thσ forφ oµ ß menu¼á anΣ thσ use≥á execute≤ ì
  1849. them by selecting an option letter.
  1850.  
  1851.           MEN╒á execute≤ MENU.CP╥ files¼á anΣ MCHEC╦ i≤á useΣá t∩ ì
  1852. check the syntax of such files.
  1853.  
  1854.  
  1855.      6.  File Compare
  1856.  
  1857.           COMPAR┼á i≤ useΣ t∩ simpl∙ comparσ tw∩á files¼á tellinτ ì
  1858. thσá use≥ iµ the∙ arσ thσ samσ o≥ not«á  DIF╞ i≤ useΣ t∩ lis⌠ ou⌠ ì
  1859. thσ difference≤ betweeε tw∩ file≤ oε ß byte-for-bytσ basis«á  Thσ ì
  1860. relativσ offset≤ int∩ thσ files¼á anΣ thσ differen⌠ bytσá values¼ ì
  1861. expressed in decimal, hexadecimal, and ASCII, are presented.
  1862.  
  1863.           CR├á i≤ useΣ t∩ computσ Cycliπ Redundanc∙ Checδá value≤ ì
  1864. fo≥á files«á  Iµ tw∩ file≤ arσ thσ samσ sizσ anΣ thei≥ CR├ value≤ ì
  1865. arσá thσá same¼á theε therσ i≤ ß ver∙ gooΣ chancσ tha⌠á the∙á arσ ì
  1866. copie≤ oµ thσ samσ file«  CR├ i≤ particularl∙ usefu∞ iε comparinτ ì
  1867. ß filσ tha⌠ ha≤ jus⌠ beeε downloadeΣ b∙ ß program¼á likσá XMODEM¼ ì
  1868. to the file on the remote computer it was downloaded from.
  1869.  
  1870.  
  1871.      7.  File Copy
  1872.  
  1873.           MCOP┘á i≤ ß prograφ whicΦ i≤ useΣ t∩ cop∙ file≤ iεá thσ ì
  1874. ZCPR▓á environment«á  I⌠ know≤ abou⌠ paths¼á caε dea∞ witΦá nameΣ ì
  1875. directories¼ caε dea∞ witΦ list≤ oµ file≤ a≤ arguments¼ anΣ ha≤ ß ì
  1876. numbe≥á oµá extendeΣá feature≤ anΣá facilities«á  Somσá oµá thesσ ì
  1877. features include:
  1878.  
  1879.                . Disk Directory Display with Sizing Info
  1880.                . Can Copy to Any Directory on Any Disk
  1881.                . Supports Multiple Copy in which a group of
  1882.                     files can be copied to several disks by
  1883.                     simply loading one disk after another
  1884.                     without concerning the user with Warm
  1885.                     Booting the system
  1886.                . Permits Disks to be changed on it at will
  1887.                     once it is loaded and begins running
  1888.                . Supports an Inspect Mode
  1889.                . Optional Verify via CRC's and Rereading
  1890.                     the files from the destination
  1891.                . Can be run from the command line or from
  1892.                     an internal command processor
  1893.                . Built-In Help
  1894.  
  1895.  
  1896.  
  1897.      8.  Command Files
  1898.  
  1899.           SUB▓á i≤á ß disk-baseΣ indirec⌠ commanΣá filσá facilit∙ ì
  1900. likσ SUBMI╘ whicΦ wa≤ baseΣ oε Roε Fowler'≤ SuperSU┬ anΣ support≤ ì
  1901. stil∞á morσá features¼á includinτ patΦ searche≤ fo≥á thσá commanΣ ì
  1902. files to execute.
  1903.  
  1904.           ZE╪á i≤á ß memory-baseΣ indirec⌠ commanΣ filσá facilit∙ ì
  1905. whicΦ i≤ baseΣ oε E╪ anΣ support≤ morσ features¼á includinτá patΦ ì
  1906. searches, immediate user input, and ZCPR2 interfacing.
  1907.  
  1908.  
  1909.  
  1910.      9.  Named Directories
  1911.  
  1912.           MKDI╥ i≤ useΣ t∩ creatσ anΣ edi⌠ nameΣ director∙ files«  ì
  1913. Thσ use≥ caε add¼ rename¼ anΣ deletσ entrie≤ froφ sucΦ ß filσ anΣ ì
  1914. theεá savσá thσ result≤ oε disδ a≤ thσ samσ filσ o≥á ßá differen⌠ ì
  1915. file.
  1916.  
  1917.           L─á load≤ ß nameΣ director∙ filσ createΣ b∙ MKDI╥á int∩ ì
  1918. thσá memory-baseΣ nameΣ director∙ buffer«á  I⌠ als∩ reformat≤ thσ ì
  1919. informatioε iε thσ filσ t∩ bσ compatablσ witΦ thσ forma⌠ useΣá iε ì
  1920. the buffer.
  1921.  
  1922.  
  1923.           PW─á print≤ thσ namσ oµ thσ curren⌠ director∙ thσá use≥ ì
  1924. i≤á loggeΣá int∩ anΣ caε als∩ prin⌠ thσ name≤ oµ al∞á directorie≤ ì
  1925. whicΦ ma∙ bσ accesseΣ b∙ thσ use≥ froφ thσ curren⌠ directory«  I⌠ ì
  1926. derive≤á it≤á informatioε froφ thσ memory-baseΣá nameΣá director∙ ì
  1927. buffe≥á anΣá thσá firs⌠á NAMES.DI╥á filσá encountereΣá alonτá it≤ ì
  1928. indicated path.
  1929.  
  1930.           C─á i≤á useΣá t∩á Changσá Directorie≤á o≥á loτá int∩á ß ì
  1931. director∙ b∙ usinτ it≤ name«á  C─ log≤ int∩ ß nameΣ director∙á iε ì
  1932. the following manner:
  1933.  
  1934.                1.  Scan first the memory-based named
  1935.                     directory buffer and then search
  1936.                     along the path and scan the first
  1937.                     disk-based NAMES.DIR file; this
  1938.                     is done to match the name given to
  1939.                     CD
  1940.  
  1941.                2.  Determine if the user number of the
  1942.                     desired directory is in the privil-
  1943.                     eged areas and, if so, ask for and
  1944.                     validate the access password
  1945.  
  1946.                3.  Once access right is determined, temp-
  1947.                     orarily log into the indicated directory
  1948.                     and look for ST.COM; if found, log in
  1949.                     permanently and execute it via the
  1950.                     Multiple Command Line Buffer facility;
  1951.                     if not found, simply log the user in
  1952.  
  1953.  
  1954.           STARTU╨ i≤ mentioneΣ herσ because¼á wheε renameΣ t∩ ST¼ ì
  1955. i⌠á provide≤á aεá initia∞ commanΣ sequencσ t∩á bσá executeΣá upoε ì
  1956. enterinτá ß particula≥ directory«á  Thi≤ commanΣ sequencσ ma∙á bσ ì
  1957. used to perform functions like the following:
  1958.  
  1959.                1.  Load New I/O Drivers
  1960.                2.  Load a New Memory-Based Named Dir
  1961.                3.  Establish a New Command Search Path
  1962.                4.  Reprogram the User's Terminal
  1963.                5.  Run the MENU System
  1964.  
  1965.  
  1966.     10.  ZCPR2
  1967.  
  1968.           Therσ arσ tw∩ set≤ oµ programs/command≤ directl∙á assoì
  1969. ciateΣ witΦ ZCPR▓ itself«á  Thesσ arσ thσ ZCPR▓ Residen⌠ Command≤ ì
  1970. anΣá thei≥ Alternatσ Transien⌠ Commands«á  Thσ Residen⌠á Command≤ ì
  1971. perforφ basiπ function≤ rathe≥ quickly¼á anΣ thσ Alternatσ Transì
  1972. ien⌠ Command≤ elaboratσ oε thesσ basiπ function≤ bu⌠ perforφ theφ ì
  1973. morσá slowly¼á a≤á ß genera∞ rule«á  Somσ oµ thσ command≤ iεá thσ ì
  1974. Alternatσá clas≤á havσ n∩ correspondinτ commanΣ iεá thσá Residen⌠ ì
  1975. class¼á bu⌠á the∙á arσá includeΣ becausσ the∙á perforφá ßá ZCPR2-ì
  1976. supporting function.
  1977. è
  1978.           The Resident Commands include:
  1979.  
  1980.                DIR  - Directory Display
  1981.                ERA  - File Erase
  1982.                REN  - File Rename
  1983.                TYPE - Print File on Console
  1984.                LIST - Print File on Printer
  1985.                SAVE - Save Memory Image on Disk
  1986.                JUMP - Jump to Anywhere in Memory
  1987.                GO   - Reexecute Last Loaded Transient
  1988.  
  1989.           The Alternate Transient Commands include:
  1990.  
  1991.                XDIR3   - Directory Display
  1992.                ERASE   - File Erase
  1993.                RENAME  - File Rename
  1994.                PAGE    - Print File on Console
  1995.                PRINT   - Print File on Printer
  1996.  
  1997.                GENINS  - Utility Install Program
  1998.                PROTECT - File Attribute Set Program
  1999.                PATH    - External Path Display/Set Utility
  2000.                WHEEL   - Set/Reset Wheel Byte
  2001.  
  2002.  
  2003.  
  2004.     11.  Help
  2005.  
  2006.           Thσáá HEL╨áá prograφáá support≤áá thσáá ZCPR▓ááá onlinσ ì
  2007. documentatioε system«á  Ove≥ 300╦ iε Hel≡ File≤ (oµ typσ HLP⌐ arσ ì
  2008. provideΣ witΦ thσ ZCPR▓ System¼ anΣ al∞ command≤ distributeΣ witΦ ì
  2009. ZCPR2 are documented therein.
  2010.  
  2011.  
  2012.     12.  Miscellaneous
  2013.  
  2014.           CCPLO├ i≤ useΣ t∩ displa∙ thσ addres≤ oµ thσ CCP¼ BDOS¼ ì
  2015. and BIOS.  This program is used during installation.
  2016.  
  2017.           ECH╧á i≤ useΣ t∩ ech∩ thσ commanΣ line«á  I⌠ i≤ useΣ t∩ ì
  2018. issuσá ß simplσ one-linσ messagσ t∩ thσ use≥ wheε hiddeεá commanΣ ì
  2019. lines, like those generated by STARTUP/ST, are executed.
  2020.  
  2021.  
  2022.  
  2023.  
  2024. 5.0  Multiple Command Lines
  2025.  
  2026.      Thσá Multiplσá CommanΣ Linσ Facilit∙ oµ ZCPR▓á support≤á tw∩ ì
  2027. basic functions in the ZCPR2 environment:
  2028.  
  2029.           1)ái⌠á allow≤ thσ use≥ t∩ specif∙ ß serie≤ oµá command≤ ì
  2030. áááááááááááááseparateΣ b∙ semicolon≤ (a≤ recommended)
  2031.  
  2032.           2) i⌠á allow≤ onσ prograφ t∩ easil∙ chaiε t∩ anothe≥ o≥ ì
  2033. áááááááááááááß wholσ serie≤ oµ programs
  2034.  
  2035.      Thσá firs⌠á applicatioεá oµ thi≤á facilit∙á ha≤á beeεá showε ì
  2036. several times.  It permits command lines like the following:
  2037.  
  2038.           ed prog.mac;m80 =prog;l80 prog/e;era *.bak;era *.rel
  2039.  
  2040.      Thσ seconΣ applicatioε i≤ employeΣ extensivel∙ b∙ fou≥ ZCPR▓ ì
  2041. utilitie≤ iε particula≥ -- STARTUP¼á MENU¼ CD¼ anΣ ZEX«  STARTUP¼ ì
  2042. CD¼ anΣ MEN╒ havσ beeε demonstrateΣ earlier.
  2043.  
  2044.      Thσ Multiplσ CommanΣ Linσ Buffer¼ whicΦ i≤ useΣ t∩ storσ thσ ì
  2045. Multiplσ CommanΣ Line¼á i≤ locateΣ externa∞ t∩ ZCPR▓ iε somσ safσ ì
  2046. areßá oµá memor∙á (sucΦá a≤ u≡ iε thσ BIOS⌐á wherσá i⌠á won'⌠á bσ ì
  2047. overwritteεá ever∙ timσ ß Warφ Boo⌠ occurs«á  I⌠ i≤ structureΣ a≤ ì
  2048. follows:
  2049.  
  2050.           Bytes 0 and 1:  Address of Next Character in Buffer
  2051.           Byte 2:  Size of Buffer
  2052.           Byte 3:  Dummy used by BDOS Readln Function 10
  2053.           Bytes 4-n:  Buffer Contents, terminated by a binary 0
  2054.  
  2055.      Wheεá thσ ColΣ Boo⌠ routinσ iε thσ BIO╙á executes¼á i⌠á mus⌠ ì
  2056. initializσá thi≤á buffe≥á fo≥ subsequen⌠ usσ b∙á ZCPR2«á  I⌠á ma∙ ì
  2057. optionall∙á storσ ß commanΣ o≥ se⌠ oµ command≤ t∩ bσ executeΣá oε ì
  2058. ColΣ Boot¼á amonτ othe≥ things¼ bu⌠ i⌠ MUS╘ perforφ thσ followinτ ì
  2059. functions as a minimum:
  2060.  
  2061.           1⌐ se⌠ thσ Addres≤ oµ thσ Nex⌠ Cha≥ t∩ poin⌠ t∩ Bytσ 4
  2062.           2) set the buffer size
  2063.           3) initialize the buffer contents, making sure they are
  2064.              terminated by a binary 0
  2065.  
  2066.  
  2067.      Fo≥ example¼ iµ thσ buffe≥ start≤ a⌠ 0FF00╚ anΣ i≤ 128 byte≤ ì
  2068. long¼á thσá BIO╙á ColΣá Boo⌠ Routinσ shoulΣ storσá thσá followinτ ì
  2069. values starting at 0FF00H:
  2070.  
  2071.           FF00: 04  ; Low-Order Address of First Char
  2072.           FF01: FF  ; High-Order Address of First Char
  2073.           FF02: 80  ; Size of Buffer (80H=128 Bytes)
  2074.           FF03: xx  ; Don't Care
  2075.           FF04: 0   ; Buffer MUST be terminated by a 0
  2076.  
  2077.      Iµá ß defaul⌠ commanΣ linσ i≤ t∩ bσ executeΣ oεá ColΣá Boot¼ ì
  2078. theεá thσá buffe≥á startinτ a⌠ 0FF04╚ shoulΣ bσ filleΣá witΦá thσ ì
  2079. character≤ oµ thσ linσ (casσ i≤ immaterial)«á  Iε an∙á case¼á thσ ì
  2080. buffer contents MUST be terminated by a binary 0.
  2081.  
  2082.      Onσá prograφá caεá usσ thi≤ knowledgσ t∩á chaiεá t∩á anothe≥ ì
  2083. prograφá b∙ simpl∙ storinτ ß commanΣ linσ int∩ thσ Multiplσá Comì
  2084. manΣ Linσ Buffer«á  Thi≤ i≤ ho≈ MEN╒ perform≤ it≤á function«á  I⌠ ì
  2085. take≤á thσ commanΣ linσ giveε b∙ thσ men⌡ programme≥ (hσ wh∩á se⌠ ì
  2086. u≡á thσ MENU.CP╥ file⌐ anΣ store≤ i⌠ verbatiφ (witΦ limiteΣá proì
  2087. cessing⌐á int∩á thσ Multiplσ CommanΣ Linσ Buffer«á  Oncσá stored¼ ì
  2088. MEN╒á theε terminate≤ thi≤ commanΣ witΦ ß semicoloε (t∩á indicatσ ì
  2089. tha⌠ anothe≥ commanΣ follows)¼á it≤ namσ (MENU⌐ s∩ tha⌠ MEN╒ wil∞ ì
  2090. bσ reentereΣ wheε thσ user'≤ commanΣ i≤ finished¼ anΣ aε optiona∞ ì
  2091. men⌡ numbe≥ t∩ reente≥ at«  Al∞ oµ thi≤ i≤ followeΣ b∙ ß binar∙ ░ ì
  2092. t∩ indicatσ aε enΣ oµ thσ buffer.
  2093.  
  2094.      CD¼á wheεá i⌠ log≤ int∩ ß ne≈ directory¼á look≤ fo≥ thσ filσ ì
  2095. ST.COM¼á and¼á iµ i⌠ i≤ found¼á C─ chain≤ t∩ ST.CO═ b∙ usinτá thσ ì
  2096. Multiplσá CommanΣá Linσá Buffer«á  Sincσ C─ anΣ S╘ arσá botΦá tw∩ ì
  2097. character≤á long¼á anΣá thσ origina∞ C─ commanΣ i≤ stil∞á iεá thσ ì
  2098. buffer¼á C─ simpl∙ take≤ thσ curren⌠ valuσ oµ thσ buffe≥á pointe≥ ì
  2099. (whicΦá i≤á pointinτ t∩ thσ characte≥ afte≥ thσ C─á command¼á vi· ì
  2100. eithe≥ ß semicoloε o≥ ß binar∙ 0)¼á back≤ i⌠ u≡ ▓ bytes¼ replace≤ ì
  2101. thσ pointer¼á store≤ thσ letter≤ "STó wherσ "CDó useΣ t∩ be¼á anΣ ì
  2102. return≤á t∩á ZCPR▓ witΦ thσ appropriatσ user/disδá flaτá s∩á tha⌠ ì
  2103. ZCPR▓ wil∞ loτ iε thσ ne≈ directory«  ZCPR2¼ afte≥ logginτ iε thσ ì
  2104. ne≈á directory¼á look≤ a⌠ thσ Multiplσ CommanΣ Linσ Buffer¼á see≤ ì
  2105. thσ commanΣ "ST"¼ anΣ run≤ it«  Nicσ anΣ simple!
  2106.  
  2107.      Thσá followinτá termina∞ sessioε illustrate≤ thσ usσ oµá thσ ì
  2108. Multiplσá CommanΣ Linσ Buffe≥ iε chaininτ program≤á togethe≥á viß ì
  2109. ZCPR2«  Notσ tha⌠ AN┘ commanΣ line¼ eveε onσ consistinτ oµ severì
  2110. a∞á command≤á separateΣá b∙ semicolons¼á ma∙ bσ storeΣá int∩á thσ ì
  2111. Multiplσá CommanΣ Linσ Buffe≥ fo≥ thσ purposσ oµá chaining«á  Thσ ì
  2112. termina∞ sessioε follow≤ oε thσ nex⌠ page:
  2113.  
  2114.  
  2115. B1>;
  2116. B1>;  This is a demo of chaining under ZCPR2
  2117. B1>;  Note that SYSLIB is used extensively in this
  2118. B1>;    example, and the reader is invited to refer
  2119. B1>;    to the SYSLIB User's Guide and SYSLIB User
  2120. B1>;    and Reference Manual if he really wants to see
  2121. B1>;    how this program works
  2122. B1>;
  2123. B1>
  2124. B1>;
  2125. B1>;  First, I have created a program that chains to itself,
  2126. B1>;  printing its command line each time:
  2127. B1>;
  2128. B1>type me.mac p
  2129. ;
  2130. ;  This program demonstrates the program chaining capability
  2131. ;  under ZCPR2.
  2132. ;
  2133. cr      equ     0dh     ;<CR>
  2134. lf      equ     0ah     ;<LF>
  2135.  
  2136.         ext     cline   ;SYSLIB routine to extract cmd line
  2137.         ext     pstr    ;SYSLIB routine to print string
  2138.         ext     print   ;SYSLIB routine to print ret string
  2139.         ext     bbline  ;one of the SYSLIB input line editors
  2140.         ext     cin     ;char in via SYSLIB
  2141.         ext     caps    ;char caps via SYSLIB
  2142.         ext     cout    ;char out via SYSLIB
  2143.         ext     crlf    ;new line
  2144.  
  2145. ;
  2146. ;  Print Banner
  2147. ;
  2148.         call    print
  2149.         db      cr,lf,'Chaining Demo -- Command Line is: ',0
  2150. ;
  2151. ;  Extract and Print Command Line
  2152. ;
  2153.         lxi     h,80h   ;pt to command line buffer
  2154.         call    cline   ;extract it
  2155.         call    pstr    ;print it
  2156. ;
  2157. ;  Prompt User and Get Single-Char Input from him
  2158. ;
  2159.         call    print
  2160.         db      cr,lf,'Do you want to chain to ME? ',0
  2161.         call    cin     ;get response
  2162.         call    caps
  2163.         call    cout    ;echo
  2164.         call    crlf    ;new line
  2165.         cpi     'Y'     ;respond to Y only
  2166.         jnz     abort
  2167.  
  2168.  
  2169. ;
  2170. ;  Set Buffer Ptr and
  2171. ;  Store ME Command into Multiple Command Line Buffer
  2172. ;
  2173.         lxi     h,0ff00h        ;address of multiple command line
  2174.                                 ;  buffer in my ZCPR2 System
  2175.         lxi     d,0ff00h+4      ;address of first char in buffer
  2176.         mov     m,e     ;set buffer ptr to first char
  2177.         inx     h
  2178.         mov     m,d     ;store low, high address of first char
  2179.         xchg            ;HL pts to first char in buffer
  2180.         lxi     d,command       ;store command name
  2181.         call    strput  ;save command name
  2182.         mvi     m,' '   ;store <SPACE> after command name
  2183.         inx     h       ;pt to char after space
  2184.         xchg            ;DE pts to next char in command line
  2185. ;
  2186. ;  Prompt User for and Get Command Line
  2187. ;
  2188.         call    print
  2189.         db      cr,lf,'  Command Line? ',0
  2190.         xra     a       ;don't capitalize input
  2191.         call    bbline  ;get line from user
  2192. ;
  2193. ;  Store Rest of Command Line into Multiple Command Line Buffer
  2194. ;
  2195.         xchg            ;DE pts to user input string, HL pts to
  2196.                         ;next char in command line
  2197.         call    strput  ;save string
  2198.         mvi     m,0     ;store ending zero in command
  2199.         ret             ;return to OS and let it run the command
  2200. ;
  2201. ;  Abort Program
  2202. ;
  2203. abort:
  2204.         call    print
  2205.         db      cr,lf,'ME done',0
  2206.         ret
  2207. ;
  2208. ;  Utility Routine to Copy String pted to by DE to memory pted
  2209. ;  to by HL until end of string (binary 0) is encountered.
  2210. ;
  2211. strput:
  2212.         ldax    d       ;get char
  2213.         ora     a       ;done?
  2214.         rz              ;return if so
  2215.         mov     m,a     ;put it
  2216.         inx     h       ;pt to next
  2217.         inx     d
  2218.         jmp     strput  ;continue
  2219.  
  2220.  
  2221. ;
  2222. ;  ME Command
  2223. ;
  2224. command:
  2225.         db      'me',0  ;name of this command
  2226.  
  2227.         end
  2228.  
  2229. B1>;
  2230. B1>;  Now to run the program -- all it does is store another
  2231. B1>;  command into the multiple Command Line Buffer which
  2232. B1>;  consists of its own name (ME) followed by the text input
  2233. B1>;  by the user.  When ME.COM runs, it prints the command
  2234. B1>;  line (the user text) and asks the user if he wants to
  2235. B1>;  do it again.
  2236. B1>;
  2237. B1>me
  2238.  
  2239. Chaining Demo -- Command Line is: 
  2240. Do you want to chain to ME? Y
  2241.  
  2242.   Command Line? this is the first run of ME
  2243.  
  2244. Chaining Demo -- Command Line is:  THIS IS THE FIRST RUN OF ME
  2245. Do you want to chain to ME? Y
  2246.  
  2247.   Command Line? this is another run of me
  2248.  
  2249. Chaining Demo -- Command Line is:  THIS IS ANOTHER RUN OF ME
  2250. Do you want to chain to ME? Y
  2251.  
  2252.   Command Line? this is the third run
  2253.  
  2254. Chaining Demo -- Command Line is:  THIS IS THE THIRD RUN
  2255. Do you want to chain to ME? Y
  2256.  
  2257.   Command Line? i'm bored, so let's quit now
  2258.  
  2259. Chaining Demo -- Command Line is:  I'M BORED, SO LET'S QUIT NOW
  2260. Do you want to chain to ME? N
  2261.  
  2262. ME done
  2263. B1>;
  2264. B1>;  End of Demo
  2265. B1>;
  2266.  
  2267.  
  2268. 6.0  Paths, Command Processing, and Extended Command Processors
  2269.  
  2270. 6.1  Paths
  2271.  
  2272.      A≤ thσ reade≥ ha≤ seen¼ thσ concep⌠ oµ ß patΦ i≤ fundamenta∞ ì
  2273. t∩á ZCPR2«á  Iεá thσ ZCPR▓ vernacular¼á ß Pathô i≤ ßá sequencσá oµ ì
  2274. directorie≤á t∩ bσ searcheΣ fo≥ ß file«á  Thσ specificatioε oµá ß ì
  2275. patΦá i≤á a≤á ß sequencσ oµ D╒ form≤ whicΦ arσá extendeΣá b∙á thσ ì
  2276. introductioεá oµ thσ "$ó characte≥ t∩ indicatσ ß curren⌠ disδá o≥ ì
  2277. curren⌠ use≥ area«  Example≤ oµ path≤ are:
  2278.  
  2279.           1) $ñá $░ Añ A░ -- PatΦ Froφ Curren⌠ Disk/Curren⌠á Use≥ ì
  2280. ááááááááááááát∩á Curren⌠á Disk/Use≥ ░ t∩ Disδ A/Curren⌠á Use≥á t∩ ì
  2281. áááááááááááááDisδá A/Use≥á ░ (Curren⌠ Disk/Use≥ i≤ thσá disk/use≥ ì
  2282. áááááááááááááareß tha⌠ thσ use≥ i≤ loggeΣ into)
  2283.  
  2284.      Iµ ╔ wa≤ loggeΣ int∩ Disδ B¼á Use≥ 5¼á theε "$ó iε thσá disδ ì
  2285. positioεá (firs⌠ character⌐ woulΣ meaε ┬ anΣ "$ó iε thσ 2nΣ posiì
  2286. tioε woulΣ meaε Use≥ 5«á  Hence¼á thσ abovσ path¼ whicΦ i≤ ß symì
  2287. boliπ pathô sincσ i⌠ contain≤ thσ "$ó character¼á woulΣ bσá transì
  2288. lateΣá int∩ aε absolutσ pathô oµ B╡ B░ A╡ A░ iµ ╔ wa≤ loggeΣá int∩ ì
  2289. B╡ o≥ C╖ C░ A╖ A░ iµ ╔ wa≤ loggeΣ int∩ C7.
  2290.  
  2291.           2) $ñ A░ A2▓ A1┤ B2▓ C1▓ C░ B░ $░ Añ -- ╔ thinδ yo⌡ caε ì
  2292. áááááááááááááfollo≈ thi≤ path╗á thi≤ i≤ t∩ illustratσ tha⌠ ß patΦ ì
  2293. ááááááááááááálengtΦ i≤ indefinitσ (usuall∙ u≡ t∩ 1╢á directories¼ ì
  2294. áááááááááááááwhicΦá i≤ quitσ reasonable⌐ anΣ caε extenΣ int∩ use≥ ì
  2295. áááááááááááááarea≤ beyonΣ 15¼ whicΦ can'⌠ bσ loggeΣ into
  2296.  
  2297.      Again¼á iµ ╔ wa≤ loggeΣ int∩ B5¼ thi≤ symboliπ patΦ woulΣ bσ ì
  2298. translateΣ int∩ thσ absolutσ patΦ of:
  2299.  
  2300.           B5 A0 A22 A14 B22 C12 C0 B0 B0 A5
  2301.  
  2302.      Thσ PAT╚ commanΣ i≤ availablσ t∩ thσ ZCPR▓ use≥ t∩ allo≈ hiφ ì
  2303. t∩á displa∙á hi≤ curren⌠ patΦ anΣ dynamicall∙ changσ i⌠ durinτá ß ì
  2304. session«á  Oncσ changed¼ thσ patΦ stay≤ iε thσ altereΣ forφ unti∞ ì
  2305. eithe≥á ß ColΣ Boo⌠ occur≤ o≥ thσ use≥ employ≤ PAT╚ t∩ changσá i⌠ ì
  2306. again«á  Thi≤á ha≤ beeε illustrateΣ severa∞ time≤ beforσ iεá thi≤ ì
  2307. document«á  Stud∙á thσá followinτ termina∞ sessioεá fo≥á specifiπ ì
  2308. example≤ oµ thσ usσ oµ path≤ iε ZCPR2.
  2309.  
  2310. B1>;
  2311. B1>;  This example illustrates paths under ZCPR2
  2312. B1>;
  2313. B1>
  2314.  
  2315.  
  2316. B1>;
  2317. B1>;  First, I have this program:
  2318. B1>;
  2319. B1>type where.mac
  2320.         ext     retud
  2321.         ext     print
  2322.         ext     padc
  2323.         ext     cout
  2324.  
  2325.         call    retud   ;get user/disk in C/B
  2326.         call    print
  2327.         db      'You are logged into Disk ',0
  2328.         mov     a,b     ;get disk
  2329.         adi     'A'     ;convert to letter
  2330.         call    cout
  2331.         call    print
  2332.         db      ' and User ',0
  2333.         mov     a,c     ;get user
  2334.         call    padc    ;print as decimal
  2335.         ret
  2336.  
  2337.         end
  2338.  
  2339. B1>;
  2340. B1>;  ... which does this:
  2341. B1>;
  2342. B1>where
  2343. You are logged into Disk B and User   1
  2344. B1>
  2345. B1>;
  2346. B1>;  There is currently only one copy of WHERE.COM, and that is
  2347. B1>;  in B1
  2348. B1>;
  2349. B1>
  2350. B1>;
  2351. B1>;  My path is:
  2352. B1>;
  2353. B1>path
  2354. PATH Version 2.2
  2355. Current Symbolic Path --
  2356.         $$: --> $0: --> A$: --> A0:
  2357. Current Absolute Path --
  2358.         B1: --> B0: --> A1: --> A0:
  2359. Current Named Path --
  2360.         ASM: --> DEV-ROOT: --> R-ASM: --> ROOT:
  2361. B1>2:
  2362.  
  2363.  
  2364. B2>;
  2365. B2>;  I do not cover B1 now, so WHERE.COM will not be found
  2366. B2>;  when I issue the command:
  2367. B2>;
  2368. B2>where
  2369. WHERE?
  2370. B2>;
  2371. B2>;  Unless, of course, I tell ZCPR2 where to look:
  2372. B2>;
  2373. B2>1:where
  2374. You are logged into Disk B and User   2
  2375. B2>;
  2376. B2>;  OR ... I could change the path to cover B1
  2377. B2>;
  2378. B2>path $$ $0 a$ a0 b1
  2379. PATH Version 2.2
  2380. Current Symbolic Path --
  2381.         $$: --> $0: --> A$: --> A0: --> B1:
  2382. Current Absolute Path --
  2383.         B2: --> B0: --> A2: --> A0: --> B1:
  2384. Current Named Path --
  2385.         BDSC: --> DEV-ROOT: --> R-BDSC: --> ROOT: --> ASM:
  2386. B2>;
  2387. B2>;  Now, WHERE in B1 will ALWAYS be found, because B1 is
  2388. B2>;  Specifically in the PATH!
  2389. B2>;
  2390. B2>where
  2391. You are logged into Disk B and User   2
  2392. B2>;
  2393. B2>;  ... whereever I go, B1 is in the path, and WHERE.COM in
  2394. B2>;  B1 will be found:
  2395. B2>;
  2396. B2>a10:;path
  2397. PATH Version 2.2
  2398. Current Symbolic Path --
  2399.         $$: --> $0: --> A$: --> A0: --> B1:
  2400. Current Absolute Path --
  2401.         A10: --> A0: --> A10: --> A0: --> B1:
  2402. Current Named Path --
  2403.         SYS: --> ROOT: --> SYS: --> ROOT: --> ASM:
  2404. A10>where
  2405. You are logged into Disk A and User  10
  2406. A10>b15:
  2407. B15>where
  2408. You are logged into Disk B and User  15
  2409. B15>a0:;where
  2410. You are logged into Disk A and User   0
  2411. A>b1:
  2412.  
  2413.  
  2414. B1>;
  2415. B1>;  Now, in a normal ZCPR2 working environment, it is nice to store
  2416. B1>;  commands in one of the user areas you can't log into, and then
  2417. B1>;  set up the path to go into it:
  2418. B1>;
  2419. B1>mcopy a16:=where.com
  2420. MCOPY  Version 2.2
  2421.         Copy B  1: WHERE   .COM to A 16:
  2422. No Original File WHERE   .COM on Destination
  2423. !
  2424.  
  2425.     Copy Complete,  Verify Phase --
  2426.  
  2427.     Verify Complete
  2428. **** MCOPY Complete ****
  2429.             1 Files Copied
  2430.             0 Copy Errors
  2431. B1>path $$ $0 a$ a0 a16
  2432. PATH Version 2.2
  2433. Current Symbolic Path --
  2434.         $$: --> $0: --> A$: --> A0: --> A16:
  2435. Current Absolute Path --
  2436.         B1: --> B0: --> A1: --> A0: --> A16:
  2437. Current Named Path --
  2438.         ASM: --> DEV-ROOT: --> R-ASM: --> ROOT: --> Noname:
  2439. B1>era where.com
  2440. WHERE   .COM
  2441. B1>where
  2442. You are logged into Disk B and User   1
  2443. B1>b5:;where
  2444. You are logged into Disk B and User   5
  2445. B5>a14:
  2446. A14>where
  2447. You are logged into Disk A and User  14
  2448. A14>;
  2449. A14>;  See the point?  Now, if I take away WHERE.COM from A16,
  2450. A14>;  it won't be found anymore:
  2451. A14>;
  2452. A14>era a16:where.com
  2453. WHERE   .COM
  2454. A14>where
  2455. WHERE?
  2456. A14>b1:
  2457. B1>where
  2458. WHERE?
  2459. B1>;
  2460. B1>;  End of Demo
  2461. B1>;
  2462.  
  2463.  
  2464.  
  2465. 6.2  Command Processing
  2466.  
  2467.      CommanΣá processinτá unde≥á ZCPR▓á follow≤á ßá ver∙á logica∞ ì
  2468. sequence of events each time a command is issued:
  2469.  
  2470.  1) Inpu⌠ anΣ Parsσ CommanΣ Linσ froφ Use≥ o≥ File
  2471.  
  2472.  2) Determinσá iµ i⌠ i≤ ß ZCPR2-residen⌠ commanΣ anΣ ruεá i⌠ ì
  2473. ááááiµ so
  2474.  
  2475.  3) SearcΦá alonτ thσ commanΣ searcΦ path¼á logginτ int∩ thσ ì
  2476. áááádisk≤ anΣ use≥ area≤ indicateΣ iε thσ patΦ unti∞á eithe≥ ì
  2477. ááááthσá bottoφá oµ thσ patΦ i≤ reacheΣ o≥ thσá desireΣá CO═ ì
  2478. ááááfilσ i≤ found╗ ruε prograφ iµ found
  2479.  
  2480.  4) Invokσá aε ExtendeΣ CommanΣ Processor¼á passinτ thσ Comì
  2481. áááámanΣ Linσ t∩ it
  2482.  
  2483.  5) Prin⌠ erro≥ messagσ iµ 2¼ 3¼ anΣ ┤ fail
  2484.  
  2485.  
  2486.      Wheεá ZCPR▓ searche≤ fo≥ ß file¼á i⌠ follow≤ ßá path«á  Thi≤ ì
  2487. patΦá i≤ referreΣ t∩ a≤ thσ CommanΣ SearcΦ Path«á  Tw∩á extremel∙ ì
  2488. flexiblσ feature≤ iε thi≤ desigε are:
  2489.  
  2490.  1) thσ commanΣ searcΦ patΦ ma∙ bσ redefineΣ dynamicall∙á b∙ ì
  2491. ááááthσ user
  2492.  
  2493.  2) severa∞ ZCPR▓ transient≤ usσ path≤ also¼ anΣ thesσ path≤ ì
  2494. ááááma∙á bσ thσ samσ patΦ useΣ b∙ commanΣ searcΦ o≥ the∙ ma∙ ì
  2495. áááábσ uniquσ t∩ eacΦ transient
  2496.  
  2497.      Iµ thσ patΦ searcΦ fails¼ ZCPR▓ caε theε searcΦ fo≥ anΣ loaΣ ì
  2498. aεá extendeΣá commanΣá processo≥ fo≥ furthe≥á processinτá oµá thσ ì
  2499. commanΣá linσ beyonΣ thosσ facilitie≤ oµ ZCPR▓ itself«á  Refe≥ t∩ ì
  2500. thσá examplσá unde≥á sectioε 6.▒ fo≥ detail≤ oεá thσá ZCPR▓á patΦ ì
  2501. searcΦ techniques.
  2502.  
  2503.  
  2504. 6.3  Extended Command Processors
  2505.  
  2506.      Thσ las⌠ functioε t∩ bσ performeΣ beforσ ZCPR▓ finall∙ give≤ ì
  2507. u≡á iε it≤ searcΦ fo≥ ß commanΣ specifieΣ b∙ thσ use≥ i≤ t∩á looδ ì
  2508. fo≥ anΣ ruε aε ExtendeΣ CommanΣ Processor«á  Thi≤ facilit∙ caε bσ ì
  2509. engageΣá o≥á disengageΣ a⌠ thσ discretioε oµ thσ systeφá manager¼ ì
  2510. and¼ iµ i⌠ i≤ engaged¼ thσ systeφ manage≥ caε elec⌠ t∩ havσ ZCPR▓ ì
  2511. searcΦá thσ entirσ commanΣ searcΦ patΦ fo≥ thσá ExtendeΣá CommanΣ ì
  2512. Processo≥ o≥ t∩ onl∙ looδ iε thσ las⌠ director∙ loggeΣ iε (a⌠ thσ ì
  2513. enΣ oµ thσ path).
  2514.  
  2515.  
  2516.      Thσá las⌠ tw∩ option≤ arσ se⌠ a⌠ assembl∙ timσ b∙ thσá ROOTì
  2517. ONL┘á equate«á  Thσ prio≥ option¼á tha⌠ oµ havinτ thi≤ featurσ o≥ ì
  2518. not¼á i≤á als∩ se⌠ a⌠ assembl∙ timσ b∙ thσ CMDRU╬á equate«á  Als∩ ì
  2519. specifieΣá a⌠á thi≤ timσ i≤ thσ namσ anΣ typσ oµ thσ filσá t∩á bσ ì
  2520. executeΣ a≤ thσ ExtendeΣ CommanΣ Processor.
  2521.  
  2522.      Iµ thσ ExtendeΣ CommanΣ Processo≥ i≤ no⌠ found¼á thσ convenì
  2523. tiona∞ erro≥ messagσ i≤ given¼á flagginτ thσ origina∞ commanΣá a≤ ì
  2524. beinτá iε error«á  Iµ thσ ExtendeΣ CommanΣ Processo≥ (nameΣá CMDì
  2525. RUN.CO═á a≤á pe≥ thσ recommendation⌐ i≤ found¼á theεá thσá entirσ ì
  2526. commanΣá linσ i≤ passeΣ t∩ i⌠ a≤ th∩ i⌠ haΣ beeε ruε a≤ ß commanΣ ì
  2527. iεá it≤ owε right«á  Fo≥ instance¼á iµ thσ origina∞ commanΣá linσ ì
  2528. was:
  2529.  
  2530.           MASM MYPROG
  2531.  
  2532. anΣá thσá filσ MASM.CO═ wa≤ no⌠ founΣ bu⌠á thσá ExtendeΣá CommanΣ ì
  2533. Processo≥á CMDRU╬ was¼á theε thi≤ woulΣ bσ equivalen⌠ t∩á issuinτ ì
  2534. thσ command:
  2535.  
  2536.           CMDRU╬ MAS═ MYPROG
  2537.  
  2538.      Thσá utilit∙ oµ thi≤ featurσ caε bσ seeε immediately«á  Imaì
  2539. ginσá tha⌠ thσ SUBMI╘ prograφ werσ renameΣ t∩ CMDRUN«á  Theεá thσ ì
  2540. failurσ oµ ß commanΣ woulΣ causσ SUBMI╘ t∩ ruε anΣ attemp⌠ t∩ ruε ì
  2541. ß commanΣ file.
  2542.  
  2543.  
  2544.      WitΦá thi≤ featurσ iε mind¼á threσ ZCPR▓ transient≤ arσ proì
  2545. videΣ whicΦ ma∙ bσ useΣ a≤ ExtendeΣ CommanΣ Processors«  The∙ arσ ì
  2546. SUB2¼á ZEX¼ anΣ LRUNZ«  SUB▓ anΣ ZE╪ arσ commanΣ filσ processors«  ì
  2547. SUB▓ i≤ likσ aε enhanceΣ SUBMIT¼ anΣ ZE╪ i≤ als∩ likσ aε enhanceΣ ì
  2548. SUBMI╘á bu⌠á i⌠ place≤ it≤ executablσ tex⌠ int∩ memor∙á anΣá run≤ ì
  2549. mucΦ faster.
  2550.  
  2551.      LRUN┌ i≤ ß CO═ filσ extractor«  I⌠ work≤ iε conjunctioε witΦ ì
  2552. thσ Librar∙ Utilit∙ (LU⌐ prograφ anΣ caε extrac⌠ ß CO═ filσá froφ ì
  2553. COMMAND.LB╥á anΣ theε ruε it«á  Iε essence¼á LRUN┌ a≤ aε ExtendeΣ ì
  2554. CommanΣ Processo≥ act≤ a≤ ß mediar∙ betweeε ß CO═ filσ storeΣá iε ì
  2555. COMMAND.LB╥á anΣ ZCPR2«á  Iε thi≤ case¼á iµ thσ origina∞á commanΣ ì
  2556. was:
  2557.  
  2558.           XXX╪ THI╙ I╙ IT
  2559.  
  2560. anΣá XXXX.CO═ wa≤ no⌠ found¼á theε CMDRU╬ (LRUNZ⌐ woulΣ bσ execuì
  2561. ted¼á finΣá XXXX.CO═ iε COMMAND.LB╥ (afte≥ searchinτ thσá commanΣ ì
  2562. searcΦ patΦ fo≥ COMMAND.LBR)¼ simulatinτ thi≤ command:
  2563.  
  2564.           LRUN┌ XXX╪ THI╙ I╙ IT
  2565.  
  2566.  
  2567.      Oncσá LRUN┌ locateΣ XXXX.CO═ iε COMMAND.LBR¼á i⌠ woulΣá loaΣ ì
  2568. XXXX.CO═ anΣ pas≤ t∩ i⌠ thi≤ commanΣ line:
  2569.  
  2570.           THI╙ I╙ IT
  2571.  
  2572.      Thσá SUB2¼á ZEX¼á anΣ LRUN┌ program≤ arσ describeΣá iεá morσ ì
  2573. detail in the User's Guide.
  2574.  
  2575.      Thσá followinτ i≤ ß termina∞ sessioε illustratinτ thσ usσ oµ ì
  2576. ZEX as an Extended Command Processor:
  2577.  
  2578. B1>;
  2579. B1>;  I will illustrate the use of ZEX as the Extended
  2580. B1>;  Command Processor.  To do this, CMDRUN.COM must be
  2581. B1>;  created from the file ZEX.COM, and the name of the
  2582. B1>;  desired command file(s) must be made different from any
  2583. B1>;  corresponding COM file:
  2584. B1>;
  2585. B1>a0:
  2586. A>pip cmdrun.com=zex.com[r]
  2587.  
  2588. A>dir *.com
  2589. CMDRUN  .COM
  2590. A>1:
  2591. A1>;
  2592. A1>;  Since I have M80.ZEX and M80.COM, I want M80.ZEX to be
  2593. A1>;  unique so that a COM file won't be picked up before the
  2594. A1>;  ZEX file is run:
  2595. A1>;
  2596. A1>pip masm.zex=m80.zex
  2597.  
  2598. A1>b:
  2599.  
  2600. B1>;
  2601. B1>;  Now to illustrate by creating and assembling a program
  2602. B1>;
  2603. B1>ed demo.mac
  2604.  
  2605. NEW FILE
  2606.      : *i
  2607.     1:          ext     cline
  2608.     2:          ext     pstr
  2609.     3:      lxi    h,80h    ;pt to command line from OS
  2610.     4:          call    cline   ;get command line
  2611.     5:          call    pstr    ;print it
  2612.     6:          ret
  2613.     7:  
  2614.     8:          end
  2615.     9:  
  2616.      : *e
  2617.  
  2618.  
  2619. B1>;
  2620. B1>;  Now to use the MASM.ZEX file as tho it were a COM file.
  2621. B1>;  In the next command line, "time" is TIME.COM and "masm"
  2622. B1>;  is MASM.ZEX:
  2623. B1>;
  2624. B1>time;masm demo;time
  2625. TIME  Version 1.1    7:18:55 AM on Tuesday December 21, 1982
  2626. ZEX, Version 1.1
  2627. (ZEX Active)
  2628. B1>;  M80.SUB -- MACRO-80 Assembler and Linker
  2629. B1>M80 =DEMO
  2630.  
  2631. No Fatal error(s)
  2632.  
  2633. (ZEX Active)
  2634. B1>;  Please Type ^C if Error(s) Exist - 
  2635.  
  2636. B1>ERA DEMO.BAK
  2637. DEMO    .BAK
  2638. B1>ERA DEMO.COM
  2639. No File
  2640. B1>L80 /P:100,DEMO,A:SYSLIB/S,DEMO/N,/U,/E
  2641.  
  2642. Link-80  3.44  09-Dec-81  Copyright (c) 1981 Microsoft
  2643. Data    0100    02C4    <  452>
  2644.  
  2645. 35668 Bytes Free
  2646.  
  2647. Data    0100    02C4    <  452>
  2648.  
  2649. 35668 Bytes Free
  2650. [0000   02C4        2]
  2651.  
  2652. (ZEX Active)
  2653. B1>ERA DEMO.REL
  2654. DEMO    .REL
  2655. B1>;  Assembly Complete
  2656. B1>TIME
  2657. TIME  Version 1.1    7:20:02 AM on Tuesday December 21, 1982
  2658. B1>
  2659. (ZEX Completed)
  2660. By Your Command >dir
  2661. DEMO    .MAC  |  DEMO    .COM
  2662. B1>demo this is a test
  2663.  THIS IS A TEST
  2664. B1>;
  2665. B1>;  End of Demo
  2666. B1>;
  2667.  
  2668.  
  2669. 7.0  Redirectable I/O
  2670.  
  2671. 7.1  The Concept
  2672.  
  2673.      Redirectablσá Input/Outputô refer≤ t∩ thσ abilit∙ oµ thσ CP/═ ì
  2674. use≥á t∩á switcΦá t∩ differen⌠ Input/Outpu⌠á device≤á durinτá thσ ì
  2675. coursσ oµ ß CP/═ session«  Optionall∙ implementeΣ througΦ thσ I/╧ ì
  2676. Byte¼ I/╧ unde≥ CP/═ support≤ fou≥ logica∞ devices¼ namely:
  2677.  
  2678.           ┴ Consolσ (CON:)¼ whicΦ i≤ aε input/outpu⌠ device
  2679.           A Printer (LST:), which is an output-only device
  2680.           A Reader (RDR:), which is usually an input-only device
  2681.           A Punch (PUN:), which is usually an output-only device
  2682.  
  2683. EacΦá oµá thesσá fou≥ logica∞ device≤ ma∙ havσ an∙á onσá oµá fou≥ ì
  2684. physica∞ device≤ assigneΣ t∩ them¼á givinτ thσ use≥ u≡ t∩ sixteeε ì
  2685. physica∞á device≤á hσ ma∙ worδ with«á  Thσ reade≥ i≤á inviteΣá t∩ ì
  2686. refe≥á t∩ thσ CP/═ 2.▓ Alteratioε Guideô b∙ Digita∞á ResearcΦá fo≥ ì
  2687. furthe≥ information.
  2688.  
  2689.      Thσá I/╧ Bytσ (a⌠ memor∙ locatioε 3⌐ i≤ useΣ t∩ specif∙á thσ ì
  2690. assignmen⌠á oµá thesσá devices«á  I⌠ i≤ divideΣ int∩á fou≥á 2-bi⌠ ì
  2691. fields¼á eacΦ fielΣ associateΣ witΦ ß logica∞ devicσ anΣ eacΦá oµ ì
  2692. thσá fou≥á bi⌠ combination≤ (00¼á 01¼á 10¼á 11⌐ withiε thσá fielΣ ì
  2693. associateΣ witΦ ß physica∞ device«á  Thσ STA╘ commanΣ i≤ useΣá t∩ ì
  2694. makσ mnemoniπ assignment≤ t∩ thσ variou≤ devices¼á a≤ iε command≤ ì
  2695. likσá "STA╘á CON:=CRT:"«á  Thσá followinτá tablσá summarize≤á thσ ì
  2696. logica∞á anΣ physica∞ devicσ assignment≤ anΣ mnemonic≤á availablσ ì
  2697. through the I/O Byte:
  2698.  
  2699.                       I/O Byte Assignments
  2700.  
  2701.           Logical Device -->  LST: | PUN: | RDR: | CON:
  2702.           Bit Position   -->  7 6  | 5 4  | 3 2  | 1 0 
  2703.      Physical Assignment   |  ---- | ---- | ---- | ----
  2704.            0     00 Binary |  TTY: | TTY: | TTY: | TTY:
  2705.            1     01 Binary |  CRT: | PTP: | PTR: | CRT:
  2706.            2     10 Binary |  LPT: | UP1: | UR1: | BAT:
  2707.            3     11 Binary |  UL1: | UP2: | UR2: | UC1:
  2708.  
  2709.  
  2710.                         I/O Byte Devices
  2711.          Physical Device     Typical Meaning
  2712.                TTY:           Teletype
  2713.                CRT:           Cathode Ray Tube Terminal
  2714.                BAT║           BatcΦ Processo≥ (RDR=in¼ LST=out)
  2715.                UC1:           User-Defined Console
  2716.                PTR:           Paper Tape Reader
  2717.             UR1:, UR2:        User-Defined Reader Devices
  2718.                PTP:           Paper Tape Punch
  2719.             UP1:, UP2:        User-Defined Punch Devices
  2720.                LPT:           Line Printer
  2721.                UL1:           User-Defined List Device
  2722.  
  2723. è
  2724.      Hence¼á b∙á usinτ thσ STA╘ command¼á thσ CP/═ 2.▓á use≥á ma∙ ì
  2725. reassigεá thσá physica∞á device≤ t∩ hi≤á logica∞á devices¼á usinτ ì
  2726. differen⌠á device≤á froφá timσ t∩ timσ witΦá hi≤á systeφá withou⌠ ì
  2727. actuall∙ changinτ thσ hardwarσ configuration«á  Fo≥ instance¼á m∙ ì
  2728. systeφá come≤á u≡ witΦ CON:=CRT:¼á anΣ thσ CR╘ i≤á thσá principa∞ ì
  2729. consolσá device¼á bu⌠ ╔ caε changσ i⌠ wheε ╔ wisΦ t∩ m∙á printinτ ì
  2730. termina∞á b∙á issuinτ thσ commanΣ "STA╘ CON:=TTY:"¼á si⌠á a⌠á thσ ì
  2731. printinτ termina∞ a≤ th∩ ╔ wa≤ a⌠ thσ CRT¼á and¼á wheεá finished¼ ì
  2732. movσ bacδ t∩ thσ CR╘ b∙ issuinτ thσ commanΣ "STA╘ CON:=CRT:".
  2733.  
  2734.  
  2735. 7.2  A More Flexible Redirectable I/O System
  2736.  
  2737.      Unde≥ ZCPR2¼á ╔ havσ implementeΣ ß slightl∙ differen⌠ schemσ ì
  2738. fo≥ redirectablσ I/O«á  A≤ pe≥ thσ ZCPR▓ norm¼á yo⌡ ma∙ selec⌠ t∩ ì
  2739. continuσá usinτ you≥ olΣ schemσ o≥ switcΦ t∩ thi≤ ne≈á one«á  Thσ ì
  2740. concep⌠ oµ thi≤ ne≈ schemσ follows.
  2741.  
  2742.      First¼ thσ BIO╙ a≤ loadeΣ froφ thσ systeφ track≤ oµ thσ disδ ì
  2743. contain≤á onl∙á ß fe≈ primitivσ I/╧ drivers«á  Onl∙ thσ CR╘ a≤á ß ì
  2744. consolσ i≤ enabled¼á anΣ thσ reader¼á punch¼ anΣ lis⌠ device≤ arσ ì
  2745. assigned to the CRT.  No redirection is permitted at this time.
  2746.  
  2747.      Second¼á thσá BIO╙ i≤ structureΣ witΦ al∞ thσ I/╧ entrie≤ iε ì
  2748. it≤á jum≡ tablσ branchinτ t∩ ß seconΣ jum≡ tablσ (whicΦ i≤á initì
  2749. ializeΣá b∙ thσ ColΣ Boo⌠ Routine)«á  Thi≤ seconΣ jum≡á tablσá i≤ ì
  2750. placeΣá oε ß pagσ boundar∙ a⌠ thσ beginninτ oµ ß 1K-bytσá scratcΦ ì
  2751. area«á  I⌠á i≤á iεá thi≤ 1K-bytσ scratcΦ areß tha⌠á thσá physica∞ ì
  2752. devicσ driver≤ fo≥ m∙ systeφ reside«  Thσ recommendatioε oµ ß 1K-ì
  2753. bytσ areß i≤ ß minimum«á  ╔ havσ implementeΣ ß 2K-bytσ areß whicΦ ì
  2754. i≤á largσá enougΦ t∩ suppor⌠ almos⌠ anythinτ ╔ caεá conceivσá of¼ ì
  2755. includinτ redirectioε t∩ disk«  Picturσ follows:
  2756.  
  2757.  
  2758.  
  2759.                       Sample BIOS Structure
  2760.  
  2761. Base of BIOS -->    ------------------------------------
  2762. (Lower Memory)      | Jump for Cold and Warm Boots     |
  2763.                     | Console Status Jump to IOBASE+12 |
  2764.                     | Console Input Jump to  IOBASE+15 |
  2765.                     | Console Output Jump to IOBASE+18 |
  2766.                     | List Output Jump to    IOBASE+21 |
  2767.                     | Punch Output Jump to   IOBASE+24 |
  2768.                     | Reader Input Jump to   IOBASE+27 |
  2769.                     | Jumps for Disk I/O               |
  2770.                     | List Status Jump to    IOBASE+30 |
  2771.                     | Jump for Sector Translation      |
  2772. End of Jump Table ->|----------------------------------|
  2773.                     | Body of BIOS, Containing:        |
  2774.                     |    Cold and Warm Boot Routines   |
  2775.                     |    Disk I/O Routines             |
  2776.                     |    Sector Translation Routine    |
  2777. IOBASE ->           |----------------------------------|
  2778. (On Page Boundary,  | Jump to Status Routine           |
  2779. 1K Bytes in Size)   | Jump to Device Select Routine    |
  2780.                     | Jump to Device Name Routine      |
  2781.                     | Jump to Package Init Routine     |
  2782. IOBASE + 12 -->     | Jump to Console Status           |
  2783. IOBASE + 15 -->     | Jump to Console Input            |
  2784. IOBASE + 18 -->     | Jump to Console Output           |
  2785. IOBASE + 21 -->     | Jump to List Output              |
  2786. IOBASE + 24 -->     | Jump to Punch Output             |
  2787. IOBASE + 27 -->     | Jump to Reader Input             |
  2788. IOBASE + 30 -->     | Jump to List Status              |
  2789. IOBASE + 33 -->     | Jump to New I/O Routine          |
  2790. End of Jump Table ->|----------------------------------|
  2791.                     | Body of Redirectable I/O Driver  |
  2792.                     |  Package Containing the Routines |
  2793.                     |  Jumped to Starting at IOBASE    |
  2794. End of BIOS -->     ------------------------------------
  2795.  
  2796.  
  2797.  
  2798. 7.3  What the Redirectable I/O System Buys You
  2799.  
  2800.      A≤ thσ reade≥ caε see¼á CP/═ compatabilit∙ i≤ maintaineΣá iε ì
  2801. tha⌠á therσ arσ stil∞ onl∙ fou≥ logica∞ devices«á  Thesσ arσá thσ ì
  2802. Consolσ (CON:)¼á Printe≥ (LST:)¼ Reade≥ (RDR:)¼ anΣ PuncΦ (PUN:)«  ì
  2803. Wha⌠á thσá reade≥á ma∙á no⌠ seσ ye⌠ i≤ tha⌠á thσá restrictioεá oµ ì
  2804. assigninτá onl∙á fou≥ physica∞ device≤ t∩ eacΦ oµá thesσá logica∞ ì
  2805. device≤ i≤ no≈ gonσ a≤ wel∞ a≤ thσ rathe≥ obscurσ name≤ giveεá t∩ ì
  2806. thσ physica∞ device≤ (sucΦ a≤ UR1:¼ UC1:¼ BAT:¼ etc).
  2807.  
  2808.      Thσá designe≥ oµ thi≤ systeφ doe≤ no⌠ neeΣ t∩ pa∙á attentioε ì
  2809. t∩ thσ structurσ oµ thσ I/╧ Bytσ a≤ defineΣ b∙ Digita∞á Research«  ì
  2810. Instead¼ hσ caε structurσ thσ I/╧ Bytσ an∙ wa∙ hσ choose≤ o≥ eveε ì
  2811. selec⌠á ßá differen⌠ structure¼á sucΦ a≤ ß 2-bytσá I/╧á Word¼á t∩ ì
  2812. contro∞ hi≤ redirectablσ I/O.
  2813. è
  2814.      Environments such as the following can be implemented:
  2815.  
  2816.           No Reader or Punch Devices are available
  2817.           The LST: Device may be any of the following:
  2818.                1) the Printing Terminal
  2819.                2) the CRT
  2820.                3) a Line Printer
  2821.                4) a Modem
  2822.                5) a Link to Another Computer
  2823.                6) a Disk File
  2824.           The CON: Device may be any of the following:
  2825.                1) the Printing Terminal (TTY)
  2826.                2) the CRT
  2827.                3) a Modem
  2828.                4) a Link to Another Computer
  2829.                5) CRT Input and CRT and Modem Output
  2830.                6) CRT Input and CRT and Remote Computer Output
  2831.                7) CRT Input and CRT and Disk File Output
  2832.                8) TTY Input and TTY and Modem Output
  2833.                9) TTY Input and TTY and Remote Computer Output
  2834.               10) TTY Input and TTY and Disk File Output
  2835.  
  2836.      A≤ thσ reade≥ caε see¼ ╔ no≈ havσ ╢ LST║ device≤ anΣ 1░ CON║ ì
  2837. device≤á (whicΦá i≤ quitσ ß bi⌠ morσ flexiblσ thaε havinτ onl∙á ┤ ì
  2838. LST║á device≤ anΣ ┤ CON║ devices)«  Also¼ ╢ device≤ require≤ onl∙ ì
  2839. │á bit≤á t∩ represen⌠ theφ (0-5⌐ anΣ 1░ device≤ require≤á onl∙á ┤ ì
  2840. bit≤ t∩ represen⌠ theφ (0-9)¼ s∩ onl∙ onσ bytσ i≤ requireΣ fo≥ aε ì
  2841. I/╧ Byte.
  2842.  
  2843.      Thσá Redirectablσá I/╧ Driver≤ contaiε threσá routine≤á (thσ ì
  2844. firs⌠á threσ iε thσ jum≡ tablσ startinτ a⌠ IOBASE⌐ whicΦá providσ ì
  2845. the following functions:
  2846.  
  2847.    1) STATUS -- Tell≤ thσ callinτ prograφ ho≈ man∙á physica∞ ì
  2848. áááááááááááááááádevice≤á arσ availablσ fo≥ thσá CON:¼á LST:¼ ì
  2849. ááááááááááááááááRDR:¼á anΣá PUN║á logica∞ device≤ anΣá whicΦ ì
  2850. ááááááááááááááááphysica∞á devicσá i≤ currentl∙á assigneΣá t∩ ì
  2851. ááááááááááááááááeacΦ oµ thσ logica∞ devices
  2852.  
  2853. ááá2) SELECT --áAllow≤á ß callinτ prograφ t∩ assigε ß physiì
  2854. ááááááááááááááááca∞ devicσ t∩ ß logica∞ device.
  2855.  
  2856. ááá3) NAMER  --áReturn≤ t∩ thσ callinτ prograφ ß pointe≥á t∩ ì
  2857. ááááááááááááááááßá tex⌠á strinτ whicΦ describe≤á ßá physica∞ ì
  2858. áááááááááááááááádevice«á  Thσ callinτ prograφ passe≤ t∩ thi≤ ì
  2859. áááááááááááááááároutinσá thσá logica∞á devicσá anΣá physica∞ ì
  2860. áááááááááááááááádevicσ numbers.
  2861.  
  2862.  
  2863.      Thσá STATU╙ routinσ require≤ n∩ input≤ anΣ return≤ ß pointe≥ ì
  2864. t∩ ß tablσ iε HL«á  Thi≤ tablσ i≤ structureΣ a≤ ß serie≤ oµá fou≥ ì
  2865. bytσá pairs«á  Thσá firs⌠ bytσ pai≥ i≤ associateΣ witΦá thσá CON║ ì
  2866. device¼á thσ seconΣ witΦ thσ RDR║ device¼ thσ thirΣ witΦ thσ PUN║ ì
  2867. device¼á anΣ thσ fourtΦ witΦ thσ LST║á device«  Thσ firs⌠ bytσ oµ ì
  2868. eacΦ pai≥ contain≤ thσ numbe≥ oµ physica∞ device≤ tha⌠ thσ logicì
  2869. a∞á devicσ ma∙ bσ assigneΣ t∩ (thi≤ numbe≥ i≤ iε thσ rangσ froφ ░ ì
  2870. t∩ 255)«  Thσ seconΣ bytσ oµ eacΦ pai≥ contain≤ thσ numbe≥ oµ thσ ì
  2871. physica∞ devicσ currentl∙ assigneΣ t∩ thσ logica∞ devicσ (iεá thσ ì
  2872. rangσ froφ ░ t∩ numbe≥ oµ device≤ - 1).  Summary:
  2873.  
  2874.                  STATUS Routine Table Structure
  2875.  
  2876.                        Count       Assignment
  2877.           Device    Byte Number    Byte Number
  2878.             CON:         0              1
  2879.             RDR:         2              3
  2880.             PUN:         4              5
  2881.             LST:         6              7
  2882.  
  2883.      Example:
  2884.           STABLE:
  2885.                DB   6,2       ;6 Devices, Device 2 (3rd Device)
  2886.                               ;  Assigned to CON:
  2887.                DB   0,0       ;No RDR: Devices
  2888.                DB   0,0       ;No PUN: Devices
  2889.                DB   10,5      ;10 Devices, Device 5 (6th Device)
  2890.                               ;  Assigned to LST:
  2891.  
  2892.      Thσá SELEC╘ routinσ i≤ useΣ t∩ assigε ß physica∞ devicσ t∩ ß ì
  2893. logica∞á device«á  I⌠á i≤ calleΣ witΦ thσ logica∞á devicσá numbe≥ ì
  2894. (wherσ CON║á i≤ 0¼á RDR║ i≤ 1¼ PUN║ i≤ 2¼ anΣ LST║ i≤ 3⌐ iε thσ ┬ ì
  2895. Registe≥ anΣ thσ physica∞ devicσ numbe≥ iε thσ ├á register«á  SEì
  2896. LEC╘á return≤ witΦ thσ Zer∩ Flaτ Se⌠ (Z⌐ iµ aε invaliΣá selectioε ì
  2897. wa≤ madσ (sucΦ a≤ ┬ ╛ │ o≥ ├ ╛ ma° devicσ number)«  Example:
  2898.  
  2899.                MVI  B,0       ;Select CON:
  2900.                MVI  C,4       ;Physical Device 4
  2901.                CALL IOBASE+3  ;SELECT Routine
  2902.                JZ   DEVERR    ;Error Handler
  2903.                MVI  B,3       ;Select LST:
  2904.                MVI  C,2       ;Physical Device 2
  2905.                CALL IOBASE+3  ;SELECT Routine
  2906.                JZ   DEVERR    ;Error Handler
  2907.  
  2908.  
  2909.      Finally¼á thσ NAME╥ routinσ i≤ usσ t∩ returε t∩ thσ calle≥ ß ì
  2910. tex⌠ strinτ (ß vecto≥ oµ ASCI╔ character≤ terminateΣ b∙ ßá binar∙ ì
  2911. 0⌐á whicΦ describe≤ thσ physica∞ devicσ requested«á  Oε input¼á ┬ ì
  2912. contain≤á thσ logica∞ devicσ numbe≥ anΣ ├ contain≤á thσá physica∞ ì
  2913. devicσ numbe≥ (a≤ iε thσ SELEC╘ routine)«á  Oε output¼á H╠ point≤ ì
  2914. t∩á thσ strinτ anΣ thσ Zer∩ Flaτ i≤ Se⌠ (Z⌐ iµ aε invaliΣá selecì
  2915. tioε wa≤ made«  Thi≤ returneΣ tex⌠ strinτ i≤ contain≤ thσ mnemonì
  2916. iπ namσ oµ thσ devicσ (u≡ t∩ eigh⌠ character≤ long⌐ followeΣ b∙ ß ì
  2917. spacσá anΣ an∙ desireΣ tex⌠ whicΦ describe≤ thσ attribute≤ oµ thσ ì
  2918. physica∞ device«  Example:
  2919.  
  2920.                MVI  B,0       ;Select CON:
  2921.                MVI  C,2       ;Physical Device 2
  2922.                CALL IOBASE+6  ;NAMER Routine
  2923.                JZ   DEVERR    ;Error Handler
  2924.                CALL PRINT     ;Print String pted to by HL
  2925.  
  2926. May result in the following text being printed:
  2927.  
  2928.           MODEM DC Hayes Smartmodem
  2929.  
  2930. Notσá tha⌠á thi≤á conform≤ t∩ entr∙ │ (Physica∞ Devicσ ▓á i≤á thσ ì
  2931. thirΣ device⌐ iε m∙ tablσ ß couplσ oµ page≤ back.
  2932.  
  2933.      T∩á pu⌠á thi≤ al∞ together¼á thσ prograφ calleΣá DEVICE▓á i≤ ì
  2934. provideΣ witΦ thσ ZCPR▓ System«á  I⌠ perform≤ thσ followinτ funcì
  2935. tions:
  2936.  
  2937.           o Returns the Names of All Physical Devices
  2938.           o Returns the Names of only the Physical Devices
  2939.                Associated with a Particular Logical Device
  2940.           o Allows the User to Assign a Physical Device to a
  2941.                Logical Device
  2942.  
  2943.      T∩á illustratσá thi≤ concep⌠ iε general¼á pleasσá stud∙á thσ ì
  2944. followinτá termina∞á session«á  Thi≤á i≤ aε olde≥ versioεá oµá m∙ ì
  2945. curren⌠ system¼á thσ maiε differencσ beinτ tha⌠ m∙ curren⌠ systeφ ì
  2946. support≤á redirectioεá t∩ disδ file≤ a≤ wel∞ a≤ mos⌠ oµá thσá enì
  2947. vironmen⌠ giveε iε thσ followinτ example.
  2948.  
  2949.  
  2950. B7>;
  2951. B7>;  This is a sample terminal session illustrating the DEVICE2
  2952. B7>;  Program and how Redirectable I/O can work under ZCPR2
  2953. B7>;
  2954. B7>device2 //
  2955. DEVICE2, Version 1.0
  2956.         DEVICE is a program which enables the user to
  2957. manipulate the extended ZCPR2 redirectable device
  2958. drivers.  It allows the user to perform the following
  2959. functions:
  2960.                 Display the Names of the Current Devices
  2961.                 Set One or More of the Current Devices
  2962.         The format of the DEVICE command is:
  2963.                 DEVICE                          <-- Enter Interac
  2964.                 DEVICE //                       <-- Ask for Help
  2965.                 DEVICE Command,Command, ...     <-- Issue Command
  2966. where "command" may take the following forms:
  2967.                 DISPLAY=ALL     <-- Display Names of All Devices
  2968.                 DISPLAY=CON     <-- Display Names of Consoles
  2969.                 DISPLAY=LST     <-- Display Names of Printers
  2970.                 DISPLAY=RDR     <-- Display Names of Readers
  2971.                 DISPLAY=PUN     <-- Display Names of Punches
  2972.  
  2973.                 CON:=name       <-- Select Console
  2974.                 LST:=name       <-- Select Printer
  2975.                 RDR:=name       <-- Select Reader
  2976.                 PUN:=name       <-- Select Punch
  2977.  
  2978. B7>device2 display=all
  2979. DEVICE2, Version 1.0
  2980.  
  2981. CON: Devices --
  2982.         CRTREM Televideo 950 CRT Input and CRT/Remote Output
  2983.         CRTMOD Televideo 950 CRT and Modem in Parallel
  2984.         CRT Televideo 950 CRT
  2985.         TTY Model 43 Printing Terminal
  2986.   Current Assignment: CRTMOD Televideo 950 CRT and Modem in Paral
  2987.  
  2988. RDR: Devices --
  2989.         CLOCK DC Hayes Chronograph
  2990.         CRTMOD CRT or Modem Input with CRT Output
  2991.         MODEM DC Hayes Smartmodem
  2992.         REMOTE Remote Computer
  2993.   Current Assignment: CLOCK DC Hayes Chronograph
  2994. Strike Any Key to Continue -- 
  2995.  
  2996. PUN: Devices --
  2997.         CLOCK DC Hayes Chronograph
  2998.         CRTREM CRT and Remote Computer Output
  2999.         MODEM DC Hayes Smartmodem
  3000.         REMOTE Remote Computer
  3001.   Current Assignment: CLOCK DC Hayes Chronograph
  3002.  
  3003.  
  3004. LST: Devices --
  3005.         MODEM DC Hayes Smartmodem
  3006.         REMOTE Remote Computer
  3007.         CRT Televideo 950 CRT
  3008.         TTY Model 43 Printing Terminal
  3009.   Current Assignment: TTY Model 43 Printing Terminal
  3010. B7>;
  3011. B7>;  Interactive Mode allows the user to repeatedly perform
  3012. B7>;  functions
  3013. B7>;
  3014. B7>device2
  3015. DEVICE2, Version 1.0
  3016. DEVICE2 Interactive Command System
  3017. Type ? and Strike RETURN for Help
  3018. DEVICE2 Command? ?
  3019. DEVICE2 Commands are of the form:
  3020. Command,Command, ...    <-- Issue Commands
  3021. where "command" may take the following forms:
  3022.                 DISPLAY=ALL     <-- Display Names of All Devices
  3023.                 DISPLAY=CON     <-- Display Names of Consoles
  3024.                 DISPLAY=LST     <-- Display Names of Printers
  3025.                 DISPLAY=RDR     <-- Display Names of Readers
  3026.                 DISPLAY=PUN     <-- Display Names of Punches
  3027.  
  3028.                 CON:=name       <-- Select Console
  3029.                 LST:=name       <-- Select Printer
  3030.                 RDR:=name       <-- Select Reader
  3031.                 PUN:=name       <-- Select Punch
  3032.  
  3033. A command line beginning with a semicolon (;) is a comment.
  3034. The X Command Exits DEVICE2.
  3035.  
  3036. DEVICE2 Command? ;  Note that DEVICE2 commands may be abbreviated
  3037. DEVICE2 Command? display=con
  3038.  
  3039. CON: Devices --
  3040.         CRTREM Televideo 950 CRT Input and CRT/Remote Output
  3041.         CRTMOD Televideo 950 CRT and Modem in Parallel
  3042.         CRT Televideo 950 CRT
  3043.         TTY Model 43 Printing Terminal
  3044.   Current Assignment: CRTMOD Televideo 950 CRT and Modem in Paral
  3045. DEVICE2 Command? d=c
  3046.  
  3047. CON: Devices --
  3048.         CRTREM Televideo 950 CRT Input and CRT/Remote Output
  3049.         CRTMOD Televideo 950 CRT and Modem in Parallel
  3050.         CRT Televideo 950 CRT
  3051.         TTY Model 43 Printing Terminal
  3052.   Current Assignment: CRTMOD Televideo 950 CRT and Modem in Paral
  3053. DEVICE2 Command? ;  Note that DEVICE2 commands may be stacked
  3054.  
  3055.  
  3056. DEVICE2 Command? d=c,display list
  3057.  
  3058. CON: Devices --
  3059.         CRTREM Televideo 950 CRT Input and CRT/Remote Output
  3060.         CRTMOD Televideo 950 CRT and Modem in Parallel
  3061.         CRT Televideo 950 CRT
  3062.         TTY Model 43 Printing Terminal
  3063.   Current Assignment: CRTMOD Televideo 950 CRT and Modem in Parallel
  3064.  
  3065. LST: Devices --
  3066.         MODEM DC Hayes Smartmodem
  3067.         REMOTE Remote Computer
  3068.         CRT Televideo 950 CRT
  3069.         TTY Model 43 Printing Terminal
  3070.   Current Assignment: TTY Model 43 Printing Terminal
  3071. DEVICE2 Command? ;  The Display command is delimited by space or =
  3072. DEVICE2 Command? ;  The assignments commands are not, however
  3073. DEVICE2 Command? d punch
  3074.  
  3075. PUN: Devices --
  3076.         CLOCK DC Hayes Chronograph
  3077.         CRTREM CRT and Remote Computer Output
  3078.         MODEM DC Hayes Smartmodem
  3079.         REMOTE Remote Computer
  3080.   Current Assignment: CLOCK DC Hayes Chronograph
  3081. DEVICE2 Command? pun:=modem
  3082. DEVICE2 Command? d p
  3083.  
  3084. PUN: Devices --
  3085.         CLOCK DC Hayes Chronograph
  3086.         CRTREM CRT and Remote Computer Output
  3087.         MODEM DC Hayes Smartmodem
  3088.         REMOTE Remote Computer
  3089.   Current Assignment: MODEM DC Hayes Smartmodem
  3090. DEVICE2 Command? p=crtrem,d p
  3091.  
  3092. PUN: Devices --
  3093.         CLOCK DC Hayes Chronograph
  3094.         CRTREM CRT and Remote Computer Output
  3095.         MODEM DC Hayes Smartmodem
  3096.         REMOTE Remote Computer
  3097.   Current Assignment: CRTREM CRT and Remote Computer Output
  3098. DEVICE2 Command? punch=clock,display punch
  3099.  
  3100. PUN: Devices --
  3101.         CLOCK DC Hayes Chronograph
  3102.         CRTREM CRT and Remote Computer Output
  3103.         MODEM DC Hayes Smartmodem
  3104.         REMOTE Remote Computer
  3105.   Current Assignment: CLOCK DC Hayes Chronograph
  3106. DEVICE2 Command? x
  3107. B7>;
  3108. B7>;  End of Demo
  3109. B7>;
  3110. è
  3111. 7.4  Loading Redirectable I/O Drivers at Cold Boot Time
  3112.  
  3113.      Thσá ColΣ Boo⌠ Routinσ iε thσ maiε bod∙ oµ thσ BIO╙ initialì
  3114. ize≤á thσ I/╧ packagσ startinτ a⌠ IOBASE¼á providinτá aεá initia∞ ì
  3115. jum≡ tablσ anΣ aε initia∞ se⌠ oµ routines.
  3116.  
  3117.      Again¼á iε m∙ system¼ oncσ thσ ColΣ Boo⌠ Routinσ ha≤ finishì
  3118. ed¼á i⌠á passe≤ contro∞ t∩ ZCPR2«á  Onσ oµ thσ thing≤ i⌠ ha≤ donσ ì
  3119. beforσ i⌠ passe≤ control¼á however¼á i≤ t∩ storσ aε initia∞á comì
  3120. mand¼ STARTUP¼ iε thσ Multiplσ CommanΣ Linσ Buffer«  ZCPR▓ start≤ ì
  3121. up¼á see≤á thi≤á commanΣ iε it≤ buffer¼á anΣ execute≤á it«á  Upoε ì
  3122. execution¼á STARTU╨ load≤ thσ Multiplσ CommanΣ Linσ Buffe≥ witΦ ß ì
  3123. serie≤ oµ commands¼ which¼ iε m∙ case¼ are:
  3124.  
  3125.           IOLOADER -- Load SYSIO.IO into the Redirectable I/O
  3126.                       Buffer Starting at IOBASE
  3127.           LD LD    -- Load the Named Directory LD.DIR into the
  3128.                       Memory-Based Named Directory Buffer
  3129.           TINIT    -- Program my Televideo 950 CRT with the
  3130.                       Configuration found in STD.CFG
  3131.           ECHO msg -- Print a Welcome Message to the User
  3132.  
  3133.      Oµ interes⌠ fo≥ thi≤ discussioε i≤ thσ functioε performeΣ b∙ ì
  3134. IOLOADER«á  Generall∙ speaking¼á IOLOADE╥ searche≤ alonτ thσ comì
  3135. manΣá searcΦ patΦ fo≥ ß filσ containinτ Redirectablσ I/╧á Driver≤ ì
  3136. anΣá load≤ thσ drivers¼á wheε found¼á int∩ thσ buffe≥ startinτ a⌠ ì
  3137. IOBASE«  Al∞ sucΦ file≤ havσ ß filσ typσ oµ IO¼ anΣ ╔ caε havσ a≤ ì
  3138. man∙á sucΦ set≤ oµ I/╧ driver≤ a≤ ╔ desire«á  Iµ IOLOADE╥ i≤á no⌠ ì
  3139. giveε ß filσ name¼ i⌠ searche≤ fo≥ SYSIO.IO╗ iµ IOLOADE╥ i≤ giveε ì
  3140. ßá filσ name¼á a≤ iε "IOLOADE╥ DISKIO"¼á i⌠ searche≤á fo≥á "fileì
  3141. name.IOó (DISKIO.IO).
  3142.  
  3143.      Oncσá IOLOADE╥ ha≤ completeΣ it≤ load¼á i⌠ call≤ thσá drive≥ ì
  3144. initializatioε routinσ a⌠ IOBASE+╣ anΣ return≤ t∩ ZCPR▓ wheε thi≤ ì
  3145. routinσ i≤ finished«á  Thσ initializatioε routinσ perform≤á whatì
  3146. eve≥ devicσ initialization≤ arσ desired.
  3147.  
  3148.      Al∞ oµ thesσ command≤ arσ discusseΣ iε detai∞ iε thσá User'≤ ì
  3149. Guide«á  Pleasσá notσ tha⌠ thesσ program≤ arσ stil∞ beinτ refineΣ ì
  3150. (prio≥ t∩ releasσ oµ ZCPR2)¼á anΣ the∙ ma∙ perforφ slightl∙ diffì
  3151. erentl∙á thaεá advertiseΣ iε thi≤ Concept≤á Manual«á  Thσá User'≤ ì
  3152. Guidσá identifie≤ thσ program≤ tha⌠ i⌠ discusse≤ b∙ versioεá numì
  3153. ber¼á anΣá i⌠ wil∞ bσ prepareΣ a≤ thσ program≤ arσ finalizeΣá fo≥ ì
  3154. release.
  3155.  
  3156.      Fo≥á mucΦá morσ technica∞ informatioε oε thσ content≤á oµá ß ì
  3157. Redirectablσá Devicσ Drive≥ Package¼á looδ a⌠ thσ sourcσ codσá t∩ ì
  3158. SYSIO.ASM«á  Thi≤á i≤ thσ sourcσ t∩ thσ standarΣ packagσ whicΦá ╔ ì
  3159. usσ oε m∙ maiε microcomputer.
  3160.  
  3161.  
  3162.  
  3163.  
  3164.  
  3165.  
  3166.  
  3167.  
  3168.  
  3169.  
  3170.  
  3171.  
  3172.  
  3173.  
  3174.  
  3175.  
  3176.  
  3177.                This Page Intentionally Left Blank
  3178.  
  3179.