2. S T E P 1 : S E L E C T I N G t h e F E A T U R E S  2.1. Features of ZCPR3 Thå  installeò  musô  firsô decidå whaô featureó  thå  ZCPR³ � Systeí ió tï include¬ anä hió choiceó arå: 1©  Standarä Overheaä -- Ió thå ZCPR³ Systeí tï includå � thå  standarä 1Ë overheaä oò not¿  Iæ not¬  whicè partó  oæ  thå � Standard Overhead are to be included? 2©  Flo÷  Commanä Packagå -- Ió thå Systeí  tï  includå � Flo÷ Commandó oò not? 3© Input/Outpuô Packagå -- Ió thå Systeí tï includå I/Ï � Packageó oò not? 4© Residenô Commanä Packagå -- Ió thå Systeí tï includå � Residenô Commandó oò not? Beyonä theså basiã decisions¬  thå contentó oæ thå followinç � configuratioî fileó havå tï bå determined: 1) Z3BASE.LIB -- Base Addresses for the System 2©  Z3HDR.LI  -- Configuratioî Optionó foò  thå  ZCPR³ � Command Processor 3©  SYSFCP.LI  -- Configuratioî Optionó foò  thå  Flo÷ � Command Packages (only if this feature is selected) 4© SYSRCP.LI -- Configuratioî Optionó foò thå Residenô � Commanä Packageó (onlù iæ thió featurå ió selected) 2.2. Standard Overhead Thå  Standarä  Overhead“  oæ á ZCPR³ Systeí consistó  oæ  alì � buffers above 0F400H in Fig 1-3. These buffers contain: 1) External Stack 2) Command Line Buffer 3) Memory-Based Named Directory 4) External File Control Block 5) Message Buffers 6) Shell Stack 7) Environment Descriptor .pa Š Thå tradeofæ analysió oæ whetheò tï includå theså bufferó oò � noô follows® Aó á generaì recommendation¬ thå featureó supporteä � bù theså bufferó arå fundamentaì tï bå basiã naturå oæ ZCPR³  anä � iô  ió  highlù recommendeä thaô alì oæ thå Standarä  Overheaä  bå � included. The cost of doing this is 1K bytes. 2.2.1. External Stack Thå  Externaì  Stack“ occupieó 4¸ bytes¬  anä itó purposå  ió � two-foldº  (1©  tï freå uð thió spacå withiî thå  ZCPR³  Commanä � Processoò  foò  otheò purposeó anä (2© tï providå á commoî  stacë � whicè  caî bå easilù accesseä bù thå ZCPR³ utilitieó  tï  restorå � systeí integritù wheî required. Initializationº  Thå externaì stacë neeä noô bå initializeä � beforå use. 2.2.2. Command Line Buffer Thå Commanä Linå Buffer“ occupieó jusô oveò 20° bytes¬ anä iô � ió  instrumentaì  tï manù functionó oæ  thå  ZCPR³  System®  Itó � purposå  ió tï storå thå commanä linå inpuô bù thå useò froí  hió � terminal¬ bù aî executinç SUBMIÔ file¬ oò bù á ZCPR³ utilitù sucè � aó ALIAÓ oò MENU® Iæ thió buffeò ió noô supporteä externallù (aó � recommended)¬  theî  spacå  wilì bå takeî uð insidå oæ thå  ZCPR³ � Commanä Processoò foò it®  Iæ madå externaì tï thå ZCPR³ commanä � processor¬  thió  buffeò  provideó á mechanisí tï  implemenô  thå � followinç capabilities: 1) multiple commands on a single line, like: DIR;ERA *.BAK;DIR 2) certain useful front-ends, such as MENU 3) the ALIAS feature Initializationº Thå Commanä Linå Buffeò MUSÔ bå initializeä � beforå  iô ió used®  Thå firsô timå thió buffeò ió useä  ió  thå � firsô  timå  thå  ZCPR³ Commanä Processoò ió  executed¬  sï  thió � initializatioî  MUSÔ  bå donå durinç (oò  before¬  iî  somå  rarå � cases© thå colä booô procedurå iî thå BIOS. 2.2.3. Memory-Based Named Directory Thå  Memory-Baseä  Nameä Directory“ (25¶ bytes© containó  thå � name-DÕ  assignmentó  foò  thå nameä  directorieó  knowî  tï  thå � system®  25¶  byteó ió thå recommendeä size¬  buô thió coulä  bå � extendeä iæ morå nameó arå desired® Eacè namå requireó 1¸ bytes¬ � sï 1´ nameó caî bå defineä iî thå example®  Thió feature¬  whilå � ió  findó  immediatå applicatioî oî á harä disë system¬  ió  alsï � convenienô oî á floppy-baseä system¬ anä iô costó little. Š Initializationº   Iô  ió  generallù  recommendeä  thaô  thå � Memory-Baseä  Nameä  Directorù buffeò bå initializeä durinç  colä � boot¬  buô thió ió noô mandatory® Iæ thå ZCPR³ commanä processoò � ió  seô uð tï givå precedencå tï thå DÕ forí oveò thå  DIÒ  form¬ � theî  thió directorù buffeò maù bå initializeä bù á STARTUÐ aliaó � (thå commanä "STARTUP¢ ió storeä iî thå Commanä Linå Buffeò aó  á � colä booô command)® STARTUÐ maù theî ruî LDR¬ whicè wilì loaä aî � NDÒ (Nameä Directory© file®  Aó witè thå Commanä Linå buffer¬ iô � ió  importanô  tï remembeò thaô thå Memory-Baseä Nameä  Directorù � buffer must be initialized before it is used. 2.2.4. External File Control Block Thå  Externaì Filå Controì Block“ occupieó onlù 3¶ byteó  (4¸ � byteó  werå reserveä foò iô iî thå example)¬  anä itó purposå  ió � two-foldº  (1©  tï  freå  uð spacå insidå oæ thå  ZCPR³  Commanä � Processoò  anä (2© tï providå á mechanisí bù whicè á utilitù  caî � determinå  thå  namå  iô  waó  invokeä  by®  Thå  ZCPR³  Commanä � Processoò storeó thå namå oæ thå commanä iô jusô parseä intï thió � buffeò  sï  thaô  thå commanä caî reaä iô  anä  uså  it®  Shelló � commonlù uså thió featurå tï determinå thå namå theù werå invokeä � under so they can set themselves up to be reexecuted. Initializationº  Nï  initializatioî  ió  requireä  foò  thå � External File Control Block. 2.2.5. Message Buffers Thå Messagå Buffers“ oæ ZCPR³ occupù onlù 8° bytes¬  anä theù � arå  verù  importanô  aó á mechanisí  thrõ  whicè  thå  followinç � operationó caî bå performedº  (1© ZCPR³ caî leavå messageó abouô � itó  statuó  whicè caî bå reaä bù utilitieó executeä bù  it¬  (2© � programó  caî leavå messageó tï ZCPR³ tï givå iô instructionó  oî � ho÷  tï perforí certaiî operations¬  sucè aó erroò  handlinç  anä � shelì  execution¬  anä (3© onå prograí caî leavå á messagå tï  bå � read and interpreted by another program which is executed later. Iô  cannoô  bå  emphasizeä  enougè thaô  thå  ZCPR³  Messagå � Bufferó  arå MOSÔ importanô foò thå operatioî oæ thå  systeí  anä � should be included as a feature. Initializationº  Likå thå Commanä Linå buffer¬  thå Messagå � Bufferó musô bå initializeä beforå theù arå used¬  anä thå  ZCPR³ � Commanä  Processoò  beginó usinç thå Messagå Bufferó  immediatelù � after cold boot. .pa Š 2.2.6. Shell Stack Thå  Shelì  Stack“ permitó thå shelì featurå oæ ZCPR³  tï  bå � implemented¬  costó  onlù 12¸ bytes¬  anä alsï permitó thå  shelì � featurå tï bå extendeä tï includå invocatioî oæ onå shelì oî  toð � oæ  anotheò  shell®  Shells“ arå front-enä processoró  whicè  arå � invokeä  iî  placå oæ thå ZCPR³ Commanä Processoò inpuô  routine¬ � anä theù allo÷ commanä inpuô iî á varietù oæ  different¬  perhapó � morå user-friendlù formó tï takå place® Thå MENU¬ SH¬ anä VFILEÒ � utilitieó  arå  invokeä aó shelló undeò ZCPR3®  Havinç  á  shelì � stacë  allowó onå shell¬  likå MENU¬  tï ruî anotheò shell¬  likå � VFILER®  Thå firsô shelì ió suspended¬  thå seconä shelì runó aó � lonç aó desired¬  and¬ wheî thå seconä shelì ió exited¬ thå firsô � shelì ió resumed. Initializationº  Thå Shelì Stacë musô bå initializeä bù thå � colä booô routine®  Reasonó arå thå samå aó foò thå Commanä Linå � Buffer. 2.2.7. Environment Descriptor Thå Environmenô Descriptor“ (25¶ bytes© containó mucè  detaiì � oî thå ZCPR³ environment¬  includinç informatioî oî whaô featureó � arå  availablå  anä  otheò  datá oî thå operatioî  oæ  thå  ZCPR³ � System®  Thå  ZCPR³  TCAÐ entrù foò thå user'ó CRÔ  terminaì  ió � includeä  iî  thå Environmenô  Descriptor®  Iæ  thå  Environmenô � Descriptoò  ió  noô supporteä externallù (aó  recommended)¬  theî � eacè  ZCPR³  utilitù musô bå assembleä tï includå á copù  oæ  thå � ZCPR³  Environmenô  Descriptoò withiî  it®  Iæ  thå  Environmenô � Descriptoò  ió supporteä externally¬  eacè ZCPR³ utilitù containó � onlù  á pointeò (² bytes© tï thå descriptor®  Installatioî oæ  á � utility amounts to only setting this pointer. Initializationº  Thå  ZCPR³ Environmenô Descriptoò  maù  bå � initializeä bù eitheò thå colä booô routinå iî thå BIOÓ oò bù thå � execution of LDR on an ENV file as a STARTUP command. 2.3. Flow Command Packages Thå Flo÷ Commanä Package“ oæ ZCPR³ implementó thå basiã  flo÷ � constructó oæ thå ZCPR³ System®  Theså arå thå IF¬ ELSE¬ FI¬ anä � XIÆ commands¬ and¬ witè thió featurå installed¬ commanä sequenceó � likå thå followinç arå possible: IF EXIST MYFILE.TXT TYPE MYFILE.TXT ELSE IF ERROR ECHO MYFILE.TXT NOT FOUND FI FI .pa Š Initializationº   Thå   Flo÷   Commanä  Packagå   MUSÔ   bå � initializeä  bù thå colä booô routine®  Reasonó arå thå samå  aó � those for the Command Line Buffer. 2.4. Input/Output Packages Thå  Input/Outpuô  Package“  oæ  ZCPR³ implementó  á  seô  oæ � Input/Outpuô driveró whicè caî bå loadeä dynamicallù tï configurå � and extend the input/output system of the user's computer. Initializationº    Thå   Input/Outpuô   Packagå   MUSÔ   bå � initializeä  bù thå colä booô routine®  Reasonó arå thå samå  aó � thoså foò thå Commanä Linå Buffer. 2.5. Resident Command Packages Thå  Residenô  Commanä Package“ oæ ZCPR³ implementó á seô  oæ � commandó  whicè remaiî iî memorù untiì thå packagå ió  explicitlù � reloadeä bù thå LDR.COÍ utility®  Theså commandó caî bå useä  tï � extenä  thå  seô  oæ commandó residenô withiî thå  ZCPR³  Commanä � Processor¬  anä  theù  adä thå flexibilitù oæ beinç  ablå  tï  bå � reloadeä froí timå tï timå witè differenô commands. Initializationº   Thå  Residenô  Commanä  Packagå  MUSÔ  bå � initializeä  bù thå colä booô routine®  Reasonó arå thå samå  aó � thoså foò thå Commanä Linå Buffer. 2.6. Other Buffers 2.6.1. External Path Thå  Externaì  Path“  (consistinç oæ á fe÷ bytå pairs©  ió  á � buffeò  whicè  containó thå symboliã expressioî  oæ  thå  Commanä � Searcè  Patè  tï bå followeä bù thå ZCPR³ commanä processoò  wheî � searchinç foò á COÍ file. Initializationº  Thå  Externaì Patè MUSÔ bå initializeä  bù � the cold boot routine. 2.6.2. Wheel Byte Thå  Wheeì  Byte“  (±  byte© ió á flaç  reaä  bù  somå  ZCPR³ � utilitieó  whicè defineó thå useò tï bå privelegeä  oò  not®  Iæ � thió bytå ió non-zero¬ thå useò ió declareä tï bå priveleged¬ anä � certaiî functionó arå enableä whicè arå noô normallù availablå tï � him®  PWÄ  (Prinô Workinç Directories)¬  foò example¬  wilì alsï � displaù passwordó tï theså directorieó iæ thå useò ió  privelegeä � and requests them. Initializationº Thå Wheeì Bytå shoulä bå initializeä beforå � á utilitù whicè readó iô ió used.