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