IMD 1.16: 1/06/2007 13:37:33 FOGCPM.206 ååååååååååååååå--FOGCPM206-CPM206 DOCZ3INS IDX  Z3INS SI € Z3INS SI q !"#$%&'(-12-31 89 Z3INS TOCe)*+,-./012345Z3INS1 SI U6789:;<=>?@Z3INS2 SI XABCDEFGHIJKZ3INS3 SI €LMNOPQRSTUVWXYZ[Z3INS3 SI €\]^_`abcdefghijkZ3INS3 SI €lmnopqrstuvwxyz{Z3INS3 SI 7|}~€‚Z3INS4 SI €ƒ„…†‡ˆ‰Š‹ŒŽ‘’Z3INS4 SI `“”•–—˜™š›œžZ3INS5 SI 'Ÿ ¡¢£Z3INS7 SI ¤¥Z3INS8 SI "¦§¨©ªZ3USER IDX«åååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååThis is the disk name. åååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååå This is the release date of the disk. tioî oî á multiplå floppù oò harä disë computer. Wilä Cardó arå permitteä foò searching¬ foò instance, FÆ WH*.ª wilì locatå alì fileó thaô starô witè WÈ anä anù letteró oò extenô following.BBS-LISTINF ®eq7€ PROCOMM KEY Ê¥pôGENIE-NUSAV !}&Ž€GENIE-NUCMD +}&åååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååå Fog Library Disk FOG-CPM.206 Copyright (1989) by Fog International Computer Users Group to the extent not copyrighted by the original author for the exclusive use and enjoyment of its members. Any reproduction or distribution for profit or personal gain is strictly forbidden. For information, contact FOG, P. O. Box 3474, Daly City, CA. 94015-0474. as part of the description of a file indicates that the program is distributed on a "try first, pay if you like it" basis. If you find the program(s) meet your need, please refer to the author's documentation for information on becoming a registered user. Only by registering and paying for the programs you like and use will the authors of such programs continue development. Often, more complete documentation, additional modules, and new releases are available only to registered users. Disk 2 of 4. ZCPR 3. Installation instructions. Re-released to correct damaged files. Filename Description -12-31 .89 This is the release date of the disk. -CPM206 .DOC This is the description of the disk contents. Z3INS .IDX 7B8A 4K ver. 3.3 [ZCPR 13 of 25] Z3INS .SI A70E 31K ver. 3.3 [ZCPR 14 of 25] Z3INS .TOC 8BEC 13K ver. 3.3 [ZCPR 15 of 25] Z3INS1 .SI 35B2 11K ver. 3.3 [ZCPR 16 of 25] Z3INS2 .SI BA22 11K ver. 3.3 [ZCPR 17 of 25] Z3INS3 .SI 4A51 55K ver. 3.3 [ZCPR 18 of 25] Z3INS4 .SI 0F0A 28K ver. 3.3 [ZCPR 19 of 25] Z3INS5 .SI AC95 5K ver. 3.3 [ZCPR 20 of 25] Z3INS7 .SI 35B9 2K ver. 3.3 [ZCPR 21 of 25] Z3INS8 .SI 9B26 5K ver. 3.3 [ZCPR 22 of 25] Z3USER .IDX BCE1 1K ver. 3.3 [ZCPR 23 of 25] åååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååå .cp5 A Assembling Distribution Files, 91 .cp5 C .cp3 CBIOS Assembling, 64 .cp3 CBIOS.HEX Creating, 64 .cp3 Command Line Parsing, 4 Command Line Buffer, 17 Command Search Hierarchy, 4 Command Search Path, 5, 20 .cp3 Commands ZCPR3 Command-Processor Resident, 5 .cp3 CP/M Patching System Image, 66 Current Disk, 5 Current User Area, 5 .cp5 D DOCUMENTATION, 112 .cp5 E Environment Descriptor, 1, 3, 12, 19, 84 Extended Command Processor, 5 External File Control Block, 18 External Path, 5, 20 External Stack, 17 .cp5 F Features of ZCPR3, 16 Flow Command Packages, 19, 77 Flow State, 2, 5 .cp5 H .cp3 Hierarchy Command Search, 4 .cp5 I .cp3 Initialization Command Line Buffer, 17 Environment Descriptor, 19 External File Control Block, 18 External Path, 20 External Stack, 17 Flow Command Package, 20 Input/Output Package, 20 Memory-Based Named Directory, 18 Message Buffers, 18 Resident Command Package, 20  Shell Stack, 19 Wheel Byte, 20 Input/Output Packages, 20, 82 Installation, 1 Commercial Software for, 12 Environment Descriptor, 7 Flow Command Package, 7 Hardware Required for, 15 Input/Output Packages, 7 List of Distribution Files for, 14 Named Directory Files, 7 Resident Command Packages, 7 Steps of, 9 System Segment Software for, 13 Useful Files for, 13 Z3TCAP, 7 ZEX Files Required for, 14 Installation Steps, 9 Internal Structure of a Z3T File, 93 Introduction, 1 .cp5 M .cp3 Memory Image Operating System, 1 Operational, 10 SYSGEN, 1 Memory-Based Named Directory, 17 Message Buffers, 18 Messages, 5 .cp3 MYTERM.Z3T Creating, 63 .cp5 N Named Directory, 82 Named Directory Files, 82 .cp5 O .cp3 Operating System Host, 1 Obtaining Image from System Tracks, 65 Placing Image on System Tracks, 67 Target, 1 Operational ZCPR3 System, 10 Other Buffers, 20 Overview of VLIB, 103 OVERVIEW of ZCPR3 INSTALLATION, 1  .cp5 P Package, 2 Flow Command, 2, 4, 5, 19, 77 Input/Output, 3, 20, 82 Resident Command, 3, 5, 20, 68 .cp5 R REFERENCES, 113 Required Hardware, 15 Resident Command Packages, 20, 68 Resident Commands, 3 .cp5 S Sample Session, 57, 90 Shell Stack, 19 Software Required for Installation, 12 Standard Overhead, 16 Standard ZCPR3 TCAP File, 103 STEP 1: SELECTING the FEATURES, 16 STEP 2: ZCPR3 MEMORY STRUCTURE, 21 Step 3: Modifying the BIOS Cold Boot Routine, 28 Step 4: Editing Z3HDR.LIB, 43 Step 5: Overlaying the old BIOS and the CCP, 57 Step 6: Implanting the Operating System Image, 57 STEP 7: SYSTEM SEGMENTS, 68 STEP 8: UTILITY INSTALLATION, 89 STEPS 3-6: INSTALLATION, 28 .cp3 SYS.ENV Creating, 58 .cp3 SYS.FCP Creating, 62 .cp3 SYS.IOP Creating, 60 .cp3 SYS.NDR Creating, 59 .cp3 SYS.RCP Creating, 61 .cp3 SYSENV Assembling, 58 SYSENV.ASM, 11 SYSENV.LIB, 11 .cp3 SYSFCP Assembling, 62 SYSFCP.ASM, 11 SYSFCPn.LIB, 11 SYSGEN Memory Images, 6 .cp3 SYSIOP Assembling, 60 SYSIOP.ASM, 11 .cp3 SYSNDR Assembling, 59 .cp3 SYSRCP Assembling, 61 SYSRCP.ASM, 11 SYSRCPn.LIB, 11 System Segments, 1, 2, 7 .cp5 T TCAP, 84 TCAP Check Program, 103 TCAP Entry Definition Program, 104 TCAP Entry Selection Program, 108 TCAP Files, 84 .cp3 TCSELECT Running, 63 Terminal Capabilities, 3 Terminal Control Sequences 1 (General), 100 Terminal Control Sequences 2 (Cursor Motion), 101 The Z3INS Utility, 89 The Z3TCAP FACILITY, 92 .cp5 U Utilities, 1, 4, 7 Class 1, 12 Class 2, 12 .cp5 W Wheel Byte, 20 .cp5 Z Z3BASE Body, 23 Z3BASE Header, 21 Z3BASE.LIB, 21 Z3BASEn.LIB, 11 Z3HDRn.LIB, 11 Z3TCAP, 3 ZCPR2 and SYSLIB2 Publications and Documentation, 113 .cp3 ZCPR3 Assembling, 64 ZCPR3 Sources, 115 ZCPR3 Terminal Capabilities (TCAP), 92 .cp3 ZCPR3.HEX Creating, 64  *********************************************************** * * * INSTALLATION MANUAL * * * * for * * * * ZCPR3 -- Z80 Command Processor Replacement, Version 3 * * * *********************************************************** by Richard Conn Installation Manual 11 June 1984 ZCPR3 Version 3.0 Copyright (c) 1984 by Richard Conn All Rights Reserved Thå   ZCPR³  System¬   includinç  itó  utilitieó   anä   itó documentatioî files¬  ió copyright¬  1984¬  bù Richarä Conn® Thå appendiø listó alì fileó covereä bù thió copyright. CP/Í ió á registereä trademarë oæ Digitaì Research. WordStar is a registered trademark of Micropro. .pa Š.pn 1 .he ZCPR3 -- An Enhanced Z80-Based Replacement for the CP/M CCP .fo Installation Manual Page # 1. O V E R V I E W o f Z C P R 3 I N S T A L L A T I O N  1.1. Introduction Installatioî  oæ  ZCPR³  ió aî  involveä  process¬  anä  thå installeò musô havå á workinç knowledgå oæ thå following: 1© 808° anä Z8° assemblù languagå programming 2) CP/M 2.2 3) the CP/M SYSGEN procedure Therå arå threå partó oæ thå systeí whicè musô bå createä oò initializeä durinç thå installatioî process: 1©  thå  Operatinç  System“ oò SYSGEΠ image¬  whicè  ió presenô  oî thå systeí trackó foò mosô computeró anä  includeó  á disë boot¬  thå ZCPR³ Commanä Processor¬ thå CP/Í 2.² BDOS¬ anä á modifieä BIOS 2©  thå  ZCPR³ Systeí Segments¬  whicè arå  independenô fileó thaô maù bå loadeä froí disë intï thå appropriatå placeó iî memorù bù thå ZCPR³ utilitù nameä LDR.COM 3© thå variouó ZCPR³ utilities¬ eacè oæ whicè haó tï bå provideä witè thå addresó oæ thå ZCPR³ Environmenô Descriptor Thå  ZCPR³ Systeí ió tieä togetheò bù thå ZCPR³  Environmenô Descriptor¬  whicè  ió  á seô oæ bufferó thaô passeó  informatioî betweeî  alì elementó oæ á ZCPR³ System®  Thå ZCPR³  Environmenô Descriptoò  containó  informatioî sucè aó thå  addresseó  oæ  thå Systeí  Segments¬  thå  addresseó  oæ severaì bufferó  whicè  arå significanô tï ZCPR3¬ datá oî whaô ZCPR³ resourceó arå available¬ anä  informatioî  abouô thå physicaì attributeó oæ  somå  oæ  thå input/outpuô  deviceó connecteä tï thå systeí (sucè aó thå numbeò oæ columnó anä lineó oî thå CRÔ screen). 1.1.1. Operating System Memory Images Thå installeò musô builä á propeò SYSGEÎ Memorù Imagå oæ thå targeô  ZCPR³ Systeí (thå targeô operatinç system“ ió  thå  systeí beinç built¬ aó opposeä tï thå hosô operatinç system“ whicè ió thå systeí useä tï builä thå targeô system)®  Iî buildinç thå targeô system¬  thå ZCPR³ Commanä Processoò musô bå assembleä anä á BIOÓ containinç á modifieä Colä Booô routinå musô bå prepared. .pa Š1.1.2. System Segments Thå  installeò  musô selecô anä assemblå thå  variouó  ZCPR³ Systeí  Segmentó tï bå useä iî conjunctioî witè thå targeô  ZCPR³ System®  Á Systeí Segment“ ió á filå whicè ió loadeä intï á fixeä locatioî  iî memorù bù thå LDR.COÍ ZCPR³  utility®  Eacè  Systeí Segmenô  stayó  memory-residenô  untiì á ne÷  Systeí  Segmenô  ió loadeä  oveò  it®  Dependinç oî thå commandó issued¬  thå  ZCPR³ Commanä  Processoò  oò  á ZCPR³ utilitù maù calì  upoî  á  loadeä Systeí Segmenô tï perforí á functioî oò providå information. Alì  Systeí  Segmentó musô bå initializeä bù thå  Colä  Booô routinå   iî  thå  BIOÓ  oæ  thå  targeô  ZCPR³   System®   Thió initializatioî consistó oæ zeroinç ouô thå firsô Î byteó oæ  eacè segment'ó  memorù buffer¬  wherå Î dependó upoî thå segmenô beinç initialized. Thå followinç arå thå Systeí Segmentó whicè arå supporteä bù ZCPR3®  Eacè  Systeí  Segmenô haó á distinctivå filå  type¬  anä LDR.COÍ recognizeó thió anä loadó eacè segmenô differently. Segment File Type Function of System Segment *.ENV Environment Descriptor, including a TCAP *.Z3T ZCPR3 TCAP Entry *.FCP Flow Command Package *.IOP Input/Output Package *.NDR Named Directory File *.RCP Resident Command Package Á  package“  aó  referreä  tï abovå ió á  seô  oæ  executablå subroutineó  whicè  ió  divideä intï  twï  partó  -- thå  visiblå section¬  througè whicè aî interfacå tï thå routineó ió provided¬ anä thå hiddeî section¬  whicè containó thå codå oæ thå routines® Beinç  á Systeí Segment¬  á packagå caî bù loadeä dynamicallù anù timå durinç á terminaì sessioî bù runninç thå LDR.COÍ utility. 1.1.2.1. Flow Command Packages Á  Flo÷  Commanä Package“ ió á packagå whicè  implementó thå ZCPR³ flo÷ commands®  Theså commandó arå IF¬  ELSE¬ FÉ (samå aó  ENDIF)¬  anä  XIÆ (exiô alì IFs)¬  anä theiò functioî  ió  tï controì  thå flo÷ oæ commanä executioî bù settinç thå Flo÷  State“ tï TRUÅ oò FALSE®  Iæ thå Flo÷ Statå ió TRUE¬  alì commandó  arå alloweä  tï  execute»  iæ  thå Flo÷ Statå  ió  FALSE¬  onlù  Flo÷ Commandó (IF, ELSE, FI, and XIF© arå alloweä tï run. .pa Š Aî  examplå  oæ  á  commanä  sequencå  containinç  flo÷ commands is: IF EXIST MYFILE.TXT TYPE MYFILE.TXT ELSE ECHO MYFILE.TXT DOES NOT EXIST FI 1.1.2.2. Input/Output Packages Aî  Input/Outpuô Package“ ió á packagå whicè containó  á seô oæ input/outpuô drivers® Thå I/Ï Packagå ió useä bù thå BIOÓ tï  providå  thå low-leveì devicå driveró whicè  supporô  consolå input/output¬  lisô output¬  puncè output¬  anä readeò input® Aî I/Ï  Packagå caî supporô manù  morå  console¬  list¬  punch¬  anä readeò  deviceó thaî thå standarä CP/Í I/Ï byte¬  anä iô addó thå flexibilitù  oæ  beinç á package¬  whicè caî bå replaceä  witè  á differenô packagå dynamicallù bù runninç thå LDR.COÍ utility. 1.1.2.3. Resident Command Packages Á  Residenô Commanä Package“ ió á collectioî oæ  memory- residenô  commandó  whicè caî bå useä tï supplemenô thå  commandó residenô  withiî thå ZCPR³ Commanä Processoò itselæ  (thå  ZCPR3- Residenô Commands)® Theså commandó replacå á numbeò oæ COÍ fileó bù onå *.RCÐ file¬  and¬ beinç memory-resident¬ theù arå executeä verù  quicklù withouô anù additionaì disë accesseó takinç  place® Wheî thå useò issueó á command¬  thå currenô RCÐ ió checkeä foò á matcè  oæ thå commanä beforå á disë accesó ió performeä tï searcè foò  á  matchinç COÍ file®  Seå thå sectioî oî  "Commanä  Searcè Hierarchy¢ foò morå details. 1.1.2.4. Environment Descriptor and Z3TCAP Thå  ZCPR³ Environmenô Descriptor“ ió á datá filå  whicè containó  informatioî oî severaì attributeó oæ thå ZCPR³  System® Additionally¬  thå  Environmenô Descriptoò containó á ZCPR³  TCAÐ (Terminaì Capabilities)“ entrù whicè describeó variouó  attributeó oæ  thå consolå CRT¬  sucè aó thå sequencå oæ characteró tï causå itó screeî tï cleaò oò tï positioî itó cursor. 1.1.2.5. ZCPR3 Named Directories Thå ZCPR³ Nameä Directory“ filå containó datá relatinç á mnemonic¬  sucè aó PASCAÌ oò ROBERT¬ witè á Disë anä Useò Areá (á logicaì directory)® Undeò ZCPR3¬ Nameä Directorieó anä Disk/Useò (DU© formó caî bå useä tï refeò tï logicaì directories: DIR A15: DIR ROOT: .pa Š 1.1.3. Utilities Tï  bå  useä effectivelù aó á parô oæ á  ZCPR³  System¬  alì ZCPR³  utilitieó  musô  bå initializeä tï contaiî  eitheò  (1©  á pointeò tï thå ZCPR³ Environmenô Descriptoò iæ sucè á  descriptoò ió  availablå  aó á Systeí Segmenô oò (2© thå  ZCPR³  Environmenô Descriptoò itself. Thå   ZCPR³  utilitù  Z3INS.COÍ  ió  useä  tï  perforí  thió initialization® Z3INS.COÍ wilì instalì á grouð oæ utilitieó witè thå  requireä  informatioî  verù quicklù anä  makå  thió  procesó relativelù  painless®  Z3INS.COÍ  itselæ  doeó noô  neeä  tï  bå installed but can be for consistency sake. Oæ  alì  thå ZCPR³ utilitieó (oveò 70© whicè  arå  containeä withiî thå ZCPR³ System¬  onlù one¬  ZEX¬  cannoô bå installeä bù Z3INS® ZEØ haó tï bå assembleä iî ordeò tï bå installed. 1.1.4. Other Basic Concepts 1.1.4.1. Command Search Hierarchy Wheneveò  á commanä ió issued¬  thå ZCPR³ Commanä  Processoò performó  á serieó oæ stepó iî determininç ho÷ thå commanä ió  tï bå  performed®  Theså stepó arå calleä thå ZCPR³ Commanä  Searcè Hierarchy. Undeò  CP/Í 2.2¬  wheneveò á commanä waó issueä thå  Consolå Command Processor (CCP) would perform these steps: 1®  Parså thå commanä namå anä checë tï seå iæ iô ió  á residenô  commanä withiî thå CCÐ (likå DIÒ oò ERA)»  iæ resident¬ executå  iô  (allowinç  thå built-iî commanä codå  tï  parså  thå commanä linå thå resô oæ thå way) 2®  Parså thå resô oæ thå commanä line¬  storå  variouó partó  oæ  thå commanä linå iî variouó buffers¬  anä looë oî  thå currentlù  logged-iî disë (oò somå otheò disë iæ thå commanä  waó oæ  thå  forí "d:command"© foò á  filå  nameä  "command.COM"»  iæ found¬ executå it¬ elså givå erroò message The ZCPR3 Command Search Hierarchy is as follows: 1® Parså thå commanä line¬ storinç variouó partó oæ thå commanä  linå  iî  variouó  bufferó  (similaò  tï  thå  CP/Í  2.² convention) 2® Iæ thå flo÷ commanä packagå featurå ió enabled¬ pasó thå  commanä  namå tï thå flo÷ commanä package»  iæ  thå  packagå respondó  iî thå affirmative¬  allo÷ thå flo÷ commanä packagå  tï executå thå commanä anä resumå witè thå nexô commanä line Š 3® Iæ thå flo÷ commanä featurå ió enabled¬ checë tï seå iæ  thå flo÷ statå ió TRUÅ (nï IÆ ió iî effecô oò thå currenô  IÆ ió TRUE)» iæ not¬ skið furtheò commanä processinç anä resumå witè the next command line 4®  Iæ thå residenô commanä packagå featurå ió enabled¬ pasó  thå  commanä namå tï thå residenô commanä package»  iæ  thå packagå respondó iî thå affirmative¬  allo÷ thå residenô  commanä packagå  tï executå thå commanä anä resumå witè thå nexô  commanä line 5®  Checë tï seå iæ thå commanä ió residenô withiî thå ZCPR³ Commanä Processoò itself» iæ so¬ invokå thå codå tï executå the command and resume with the next command line 6®  Searcè  alonç  thå Commanä Searcè Patè foò  á  filå named "command.COM"; if found, load it and execute it 7®  Iæ  thå Extendeä Commanä Processoò (ECP© featurå ió enabled, locate the ECP; if found, load it and execute it 8®  Iæ ZCPR³ Messageó arå enabled¬  checë tï seå iæ  aî Error Handler is installed; if so, load it and execute it 9. Print a "command not found" error message 1.1.4.2. Command Search Path Thå  Commanä  Searcè  Path“  ió á buffeò  whicè  containó  aî expressioî  (iî  thå  forí  oæ bytå pairs©  oæ  thå  sequencå  oæ directorieó tï examinå wheî thå ZCPR³ Commanä Processoò  searcheó foò  á  COÍ file®  Iô ió recommendeä thaô thió buffeò bå  placeä externaì  tï  thå  ZCPR³  Commanä Processoò  (bå  enableä  aó  aî Externaì Path© sï thaô thå ZCPR³ utilitieó maù readilù accesó anä modify it. Thå elementó oæ á Commanä Searcè Patè arå bytå  pairs®  Thå firsô  bytå indicateó whaô disë tï looë on¬  anä thå seconä  bytå indicateó whaô useò area®  Thå valuå oæ thå firsô bytå maù bå iî thå rangå froí ± tï 1¶ tï indicatå diskó 'A§ tï 'P'¬ oò thió bytå maù bå thå characteò '$§ tï indicatå thå currenô disk® Thå valuå oæ  thå seconä bytå maù bå iî thå rangå froí ° tï 3± tï  indicatå useò  areaó  ° tï 31¬  oò thió bytå maù bå thå characteò  '$§  tï indicatå  thå currenô useò area®  Currenô Disk“ anä Currenô  Useò Area“  refeò  tï thå disë anä useò areá whicè werå loggeä intï  aô thå timå thå commanä waó executeä bù thå ZCPR³ Commanä Processor® Á  valuå  oæ  °  foò thå firsô bytå oæ á bytå  paiò  ió  useä  tï indicate the end of the Command Search Path. The following is a sample Command Search Path expression: DB '$',0 ; Current disk, user area 0 DB 1,'$' ; Disk A, current user area DB 1,15 ; Disk A, User Area 15 DB 0 ; End of Path Š 1.2. SYSGEN Memory Images Thå SYSGEÎ memorù imageó oæ á conventionaì CP/Í systeí anä á ZCPR3-baseä systeí arå presenteä below® Thå actuaì addresseó maù varù froí systeí tï system¬  anä thå installeò shoulä bå awarå oæ whaô theså addresseó arå foò thå specifiã targeô system. Address CP/M Image ZCPR3 Image --------------------- ---------------------- | BIOS | | BIOS with Modified | | | | Cold Boot * | BDOS+0E00H--> --------------------- ---------------------- | BDOS | | BDOS (No Change) | CCP +0800H--> --------------------- ---------------------- | CP/M 2.2 CCP | | ZCPR3 * | BOOT+0080H--> --------------------- ---------------------- | BOOT | | BOOT | BASE+xxxxH--> --------------------- ---------------------- | Dead Space/SYSGEN | | Dead Space/SYSGEN | BASE= 100H--> --------------------- ---------------------- FIG 1-1: CP/M and ZCPR3-based SYSGEN Memory Images Installatioî  requireó  á modifieä BIOÓ imagå  anä  á  ZCPR3 imagå  tï  bå  placeä  oveò thå originaì CP/Í 2.²  BIOÓ  anä  CCÐ images®  Thå  resô oæ thå systeí caî staù thå same®  Thoså  ne÷ imageó arå markeä witè aî asterisë (*© above. Typical address values are indicated below: SYSGEN Image SYSGEN Image Value Conventional CP/M Morrow CP/M xxxxH 800H ~ 980H BOOT = BASE + xxxxH 900H 1080H ZCPR3 = BOOT + 80H 980H 1100H BDOS = ZCPR3 + 800H 1180H 1900H BIOS = BDOS + 0E00H 1F80H 2700H End of Operating System ????H 2DFFH FIG 1-2: SYSGEN Memory Image Addresses .pa Š 1.3. System Segments Installatioî oæ thå ZCPR³ Systeí Segmentó involveó selectinç thå  featureó oæ thå segmentó anä theî assemblinç eacè segmenô iî turn®  Iô  ió  recommendeä  thaô thå MAà assembleò  oæ  Digitaì Research be used to perform these assemblies. Thå ZCPR³ Environmenô Descriptoò (*.ENÖ file© ió createä  bù assemblinç thå filå SYSENV.ASM®  Durinç thió process¬  thå fileó Z3BASE.LI  anä SYSENV.LI arå reaä iî anä useä bù thå assembler® Z3BASE.LI  defineó  thå memorù configuratioî oæ thå  systeí  anä makeó   uð  mosô  oæ  thå  environmenô  descriptoò   information® SYSENV.LI containó additionaì detailó oî thå system. Thå  ZCPR³  TCAÐ fileó (*.Z3T© arå createä  bù  runninç  thå TCSELECÔ oò TCMAKÅ programs®  TCSELECÔ allowó thå useò tï selecô hió  terminaì froí á lisô oæ pre-defineä terminals¬  whilå TCMAKÅ allowó  thå  useò  tï  definå  thå  attributeó  oæ  hió  terminaì directly®  TCMAKÅ ió foò useró whoså terminaì doeó noô appeaò iî thå standarä Z3TCAP.TCÐ file. Flo÷  Commanä  Packageó (*.FCP© arå  createä  bù  assemblinç SYSFCP.ASM®  Durinç  thió  process¬  thå  fileó  Z3BASE.LI  anä SYSFCP.LI  arå  reaä iî anä useä bù thå  assembler®  SYSFCP.LI defineó thå featureó supporteä bù thå Flo÷ Commanä Packagå  beinç created. Input/Outpuô  Packageó  (*.IOP©  arå createä  bù  assemblinç SYSIOP.ASM®  Durinç thió process¬ thå filå Z3BASE.LI ió reaä iî anä useä bù thå assembler®  Alì featureó oæ thå I/Ï Packagå  arå hard-coded into the source of the package. Residenô  Commanä Packageó (*.RCP© arå createä bù assemblinç SYSRCP.ASM®  Durinç  thió  process¬  thå  fileó  Z3BASE.LI  anä SYSRCP.LI  arå reaä iî anä useä bù  thå  assembler®  SYSRCP.LI defineó  thå  featureó supporteä bù thå Residenô Commanä  Packagå being created. Nameä  Directorù  Fileó (*.NDR© arå createä iî  onå  oæ  twï waysº  (1©  bù assemblinç thå filå SYSNDR.ASÍ oò (2© bù  runninç thå  MKDIR.COÍ  ZCPR³  utility®  MKDIR.COÍ allowó  thå  useò  tï dynamicallù  ediô anä creatå ne÷ nameä directorù structureó whilå online. 1.4. Utilities Thå  installatioî  oæ mosô oæ thå ZCPR³  utilitieó  involveó settinç  uð  á filå containinç thå nameó oæ thå utilitieó  tï  bå installeä   anä  runninç  thå  Z3INS.COÍ  ZCPR³  utilitù  oî   aî Environmenô  Descriptoò anä thió file®  Z3INÓ wilì instalì  eacè utilitù nameä iî thå filå witè thå informatioî iô needó froí  thå Environmenô Descriptor. Š Onlù  onå ZCPR³ utilitù cannoô bå installeä iî thió  waù  -- ZEX®  Duå tï thå naturå oæ ZEØ anä thå waù iô interactó witè thå system¬  installatioî  oæ  ZEØ requireó aî involveä  sequencå  oæ assemblieó  anä otheò operations®  Thió sequencå ió describeä iî detaiì  iî  thå ZEX.ZEØ commanä file¬  and¬  oncå  ZEØ  haó  beeî installeä thå firsô time¬ thå installatioî oæ ne÷ versionó oæ ZEØ caî  bå donå automaticallù bù runninç thå ZEX.ZEØ commanä filå bù the previous version of ZEX (issuing the command "ZEX ZEX"). .pa Š 1.5. Installation Steps Thå installatioî procesó foò ZCPR³ involveó theså steps: 1) Selecting the features desired for the target ZCPR3  System 2) Planning the memory structure of the target ZCPR3 System (the file Z3BASE.LIB is created) 3) Modifying the Cold Boot routine in the BIOS of the target ZCPR3 System to initialize the selected features which require initialization 4) Enabling the desired features in the ZCPR3 Command Processor (the file Z3HDR.LIB is created) 5) Overlaying the CCP with ZCPR3 and the old BIOS with the new BIOS in the SYSGEN Image 6) Placing the new SYSGEN Image onto the Operating System tracks of the disk 7© Selectinç thå optionó foò thå desireä Systeí Segments and creating the System Segments 8) Installing the desired ZCPR3 utilities .pa Š 1.6. Operational ZCPR3 System Thió  sectioî showó aî operationaì ZCPR³ System¬  describinç itó memorù image¬ Systeí Segments¬ anä utilities. 1.6.1. Memory Image Thió  memorù  imagå showó thå memorù structurå  oæ  á  ZCPR³ Systeí whicè includeó alì oæ thå majoò features. Address FFFF ---------------------------------------------- | ROM Area (System Dependent) | 2K F800 ---------------------------------------------- | ZCPR3 External Stack |\ F7D0 ---------------------------------------------- \ | ZCPR3 Command Line Buffer | \ F700 ---------------------------------------------- \ | ZCPR3 Memory-Based Named Directory (S) | | F600 ---------------------------------------------- | | ZCPR3 External File Control Block | F5D0 ---------------------------------------------- 1K | ZCPR3 Message Buffers | F580 ---------------------------------------------- | | ZCPR3 Shell Stack | | F500 ---------------------------- ------------------ / | ZCPR3 | Z3TCAP (S) | / F480 | Environment --------------------- / | Descriptor (S) |/ F400 ---------------------------------------------- | ZCPR3 Flow Command Package (S) | 0.5K F200 ---------------------------------------------- | ZCPR3 Input/Output Package (S) | 1.5K EC00 ---------------------------------------------- | ZCPR3 Resident Command Package (S) | 2K E400 ---------------------------------------------- | ZCPR3 BIOS with Modified Cold Boot | | Routine to Initialize All Elements | 3.5K | of the ZCPR3 System Above | D600 ---------------------------------------------- | CP/M BDOS | 3.5K C800 ---------------------------------------------- | ZCPR3 Command Processor | 2K C000 ---------------------------------------------- | Transient | | Program | ~48K | Area | 100 ---------------------------------------------- ü CP/Í anä ZCPR³ Bufferó |25¶ bytes 0 ---------------------------------------------- FIG 1-3: ZCPR3 System Memory Image (Z3BASE1.LIB) Notesº (1© Alì Areaó Abovå E400È arå initializeä bù thå Colä Booô Routinå iî thå BIOS (2© Thoså Areaó markeä witè (S© arå ZCPR³ Systeí Segments Š 1.6.2. System Segments Z3BASE1.LIB    Thå  Systeí Segmentó useä iî thió  systeí Z3BASE2.LIB   arå  provideä  iî thå  distributioî  fileó  oæ Z3HDR1.LIB    ZCPR3® Thå ZCPR³ Systeí showî herå ió defineä Z3HDR2.LIB    bù  thå filå Z3BASE1.LIB¬  anä á mucè  smalleò               systeí  whicè  doeó noô includå  thå  Residenô                Commanä  Package¬  Input/Outpuô  Package¬  anä               Flo÷  Commanä  Packagå  featureó (onlù  1Ë  oæ               additionaì    overhead©    ió    defineä    iî               Z3BASE2.LIB®  Associateä witè eacè oæ thå twï               Z3BASEn.LI  fileó ió á Z3HDRn.LI filå  whicè               defineó  thå  featureó oæ  thå  ZCPR³  Commanä               Processor. SYSENV.ASM     Thå Environmenô Descriptoò ió createä bù SYSENV.LIB    assemblinç SYSENV.ASM¬ whicè uses Z3BASE1.LI               (renameä  tï Z3BASE.LIB© anä SYSENV.LI durinç               thå assemblù process. SYSFCP.ASM     Therå arå twï Flo÷ Commanä Packageó useä SYSFCP1.LIB   iî conjunctioî witè thió system¬  anä theù arå SYSFCP2.LIB   defineä   bù   thå   fileó   SYSFCP1.LI   anä               SYSFCP2.LIB® SYSFCP1.LI defineó aî FCÐ whicè               ió  self-containeä anä executeó withouô  usinç               anù externaì files®  SYSFCP2.LI executeó thå               ELSE/FI/XIÆ  commandó withiî  itself¬  buô  iô               executeó  IÆ  bù loadinç thå filå IF.COÍ  froí               thå ROOÔ directorù anä transferrinç controì tï               it®   Thió  eliminateó  thå  restrictioî   oæ               capabilitieó   oæ  thå  IÆ  commanä  whicè  ió               imposeä bù thå smalì sizå oæ thå FCP. SYSIOP.ASM     Thå   Input/Outpuô   Packagå   useä   iî               conjunctioî  witè thió systeí ió containeä  iî               thå filå SYSIOP.ASM. SYSRCP.ASM     Therå arå fouò RCPó useä iî  conjunctioî SYSRCP1.LIB   witè thió system¬  anä theù arå defineä bù thå SYSRCP2.LIB   fouò SYSRCPn.LI fileó (î ió betweeî ± anä 4)® SYSRCP3.LIB   Eacè  RCÐ containó á differenô seô oæ commandó SYSRCP4.LIB   witè  á differenô seô oæ optionó  enableä  foò               the included commands. .pa Š 1.6.3. Utilities Oveò  7°  utilitieó arå associateä witè  thå  ZCPR³  System® Eacè  utilitù  useó  featureó  oæ  thå  systeí  aó  iô  requires¬ includinç  nameä  directorù  references¬  accesó tï  thå  variouó systeí segments¬  accesó tï thå TCAÐ facility¬  anä accesó tï alì oæ thå datá elementó iî thå ZCPR³ Environmenô Descriptoò thaô  iô needs® Thå ZCPR³ Environmenô Descriptoò ió thå singlå sourcå foò alì informatioî thaô á ZCPR³ utilitù needó abouô thå systeí iô ió running in. Consequently¬   alì   ZCPR³   utilitieó  accesó  thå   ZCPR³ Environmenô  Descriptoò iî onå oæ twï waysº  (1© theù contaiî  á pointeò  tï  thå descriptoò oò (2© theù  contaiî  thå  descriptoò itself®  Thå  Z3INS.COÍ  utilitù  ió useä tï instalì  thå  ZCPR³ utilitieó  witè thå addresó oæ thå Environmenô Descriptoò oò  thå descriptoò  itself®  Clasó ± utilitieó arå thoså whï  contaiî  á pointeò  tï  aî  environmenô descriptor¬  anä Clasó  ²  utilitieó contain the descriptor itself. Supportinç  thå  Environmenô Descriptoò iî á  globaì  memorù buffeò ió thå recommendeä waù tï implemenô á ZCPR³ System®  Thió  buyó thå systeí twï distincô advantages: 1®  Eacè  utilitù  needó onlù ²  additionaì  byteó  oæ overheaä  (thå pointeò tï thå Environmenô Descriptor© ratheò thaî thå descriptoò itselæ (whicè occupieó 25¶ bytes). 2®  Changeó  caî  bå madå tï  thå  systeí  dynamicallù withouô  havinç  tï  modifù anythinç otheò thaî  thå  Environmenô Descriptor. Thå  ZCPR³ utilitieó arå mucè smalleò anä fasteò thaî  theiò ZCPR² ancestors®  Foò á completå listinç oæ alì ZCPR³  utilitieó supplied with the distribution, see the appropriate section. 1.7. Software Required for Installation 1.7.1. Commercial Software ZCPR3 ió tï bå installeä oî á workinç CP/Í 2.² system®  Thå commercial software required to do this installation is: 1) A working CP/M 2.2 System 2) Source to the BIOS of the target CP/M 2.2 System or an overlay patch for the Cold Boot Routine 3) the MAC assembler of Digital Research 4) a debugger, like DDT, for the overlay process 5) a disk utility, like SYSGEN, to be used to place the operating system image onto the OS tracks on disk Iæ  thå  useò desireó tï ediô anä reassemblå thå  utilities¬ thå Microsofô M8° anä L8° assembleò anä linkeò arå alsï required. Š 1.7.2. System Segment Software Thå  softwarå  supplieä  witè ZCPR³ whicè  ió  requireä  foò installatioî is: Name of File Function ZCPR3.ASM Source to the ZCPR3 Command Processor Z3HDR.LIB Configuration File read in by ZCPR3.ASM to tailor the ZCPR3 Command Processor Z3BASE.LIB Definition of the Memory Map of the ZCPR3 System to be created SYSENV.ASM ZCPR3 System Environment Descriptor SYSENV.LIB Header for ZCPR3 System Environment Descriptor SYSFCP.ASM ZCPR3 Flow Command Package source SYSFCP.LIB Configuration File read in by SYSFCP.ASM to tailor the ZCPR3 Flow Command Package (this file may be derived from one of the SYSFCPn.LIB files below) SYSIOP.ASM ZCPR3 Input/Output Package source SYSNDR.ASM ZCPR3 Named Directory Definition File source SYSNDR.LIB Header for ZCPR3 Named Directory Definition SYSRCP.ASM ZCPR3 Resident Command Package source SYSRCP.LIB Header for ZCPR3 Resident Command Package (this file may be derived from one of the SYSRCPn.LIB files below) 1.7.3. Other Useful Files Name of File Function Z3LOC.COM Utility to locate a CP/M CCP Z3BASE1.LIB Sample ZCPR3 BASE files (Z3BASE.LIB) Z3BASE2.LIB Z3HDR1.LIB Sample ZCPR3 HDR files (Z3HDR.LIB) Z3HDR2.LIB SYSFCP1.LIB Sample ZCPR3 Flow Command Package headers SYSFCP2.LIB SYSRCP1.LIB Sample ZCPR3 Resident Command Package headers SYSRCP2.LIB SYSRCP3.LIB SYSRCP4.LIB .pa Š 1.7.4. Files Required for Installing ZEX Iæ  thå ZEØ Commanä Filå Processoò ió tï bå installeä tï  bå useä  undeò  thå targeô ZCPR³ system¬  thå  followinç  fileó  arå required. Name of File Function ZEX.ASM Source to ZEX ZEX.ZEX ZEX Command File used to assemble new versions of ZEX once the first version is running RELS.UTL SID/ZSID Utility File (not supplied with ZCPR3) 1.7.5. Required Distribution Files Thå  followinç fileó arå requireä foò thå installatioî oæ  á complete ZCPR3 System. Name of File Name of File Name of File SYSENV.ASM SYSFCP1.LIB Z3BASE.LIB SYSFCP.ASM SYSFCP2.LIB Z3BASE1.LIB SYSIOP.ASM SYSNDR.LIB Z3BASE2.LIB SYSNDR.ASM SYSRCP1.LIB Z3HDR.LIB SYSRCP.ASM SYSRCP2.LIB Z3HDR1.LIB ZCPR3.ASM SYSRCP3.LIB Z3HDR2.LIB SYSENV.LIB SYSRCP4.LIB ZEX.ASM 1.7.6. Useful Distribution Files Thå  followinç fileó arå useful¬  buô noô required¬  foò thå installation of a ZCPR3 System. Name of File Name of File Name of File Z3LOC.COM Z3INS.COM ZEX.ZEX .pa Š 1.8. Required Hardware 1.8.1. Hardware Required for Installation Thå  hardwarå requirementó foò thå installatioî oæ ZCPR3 arå as follows: CP/M 2.2 - based system (or ZCPR3 - based system) 8080 or Z80 microprocessor 32K bytes of memory 110K bytes of disk space for source, BAK, and HEX files computer terminal 1.8.2. Hardware Required for Running ZCPR3 The hardware requirements for running ZCPR3 are: ZCPR3 - based system Z80 microprocessor 48K bytes of memory 110K bytes per disk (recommended minimum) computer terminal .pa Š.fi B:Z3INS1.SI .pa Š.fi B:Z3INS2.SI .pa Š.fi B:Z3INS3.SI .pa Š.fi B:Z3INS4.SI .pa Š.fi B:Z3INS5.SI .pa Š.fi B:Z3INS6.SI .pa Š.fi B:Z3INS7.SI .pa Š.fi B:Z3INS8.SI .pa Š.FI B:Z3INS .IDX åååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååå.OP  T A B L E O F C O N T E N T S   1. OVERVIEW of ZCPR3 INSTALLATION.............................1  1.1. Introduction..........................................1  1.1.1. Operating System Memory Images.................1  1.1.2. System Segments................................2 1.1.2.1. Flow Command Packages.................2 1.1.2.2. Input/Output Packages.................3 1.1.2.3. Resident Command Packages.............3 1.1.2.4. Environment Descriptor and Z3TCAP.....3 1.1.2.5. ZCPR3 Named Directories...............3  1.1.3. Utilities......................................4  1.1.4. Other Basic Concepts...........................4 1.1.4.1. Command Search Hierarchy..............4 1.1.4.2. Command Search Path...................5  1.2. SYSGEN Memory Images..................................6  1.3. System Segments.......................................7  1.4. Utilities.............................................7  1.5. Installation Steps....................................9  1.6. Operational ZCPR3 System.............................10  1.6.1. Memory Image..................................10  1.6.2. System Segments...............................11  1.6.3. Utilities.....................................12  1.7. Software Required for Installation...................12  1.7.1. Commercial Software...........................12  1.7.2. System Segment Software.......................13  1.7.3. Other Useful Files............................13  1.7.4. Files Required for Installing ZEX.............14  1.7.5. Required Distribution Files...................14  1.7.6. Useful Distribution Files.....................14  1.8. Required Hardware....................................15   1.8.1. Hardware Required for Installation............15  1.8.2. Hardware Required for Running ZCPR3...........15  2. STEP 1: SELECTING the FEATURES............................16  2.1. Features of ZCPR3....................................16  2.2. Standard Overhead....................................16  2.2.1. External Stack................................17  2.2.2. Command Line Buffer...........................17  2.2.3. Memory-Based Named Directory..................17  2.2.4. External File Control Block...................18  2.2.5. Message Buffers...............................18  2.2.6. Shell Stack...................................19  2.2.7. Environment Descriptor........................19  2.3. Flow Command Packages................................19  2.4. Input/Output Packages................................20  2.5. Resident Command Packages............................20  2.6. Other Buffers........................................20  2.6.1. External Path.................................20  2.6.2. Wheel Byte....................................20 .PA  3. STEP 2: ZCPR3 MEMORY STRUCTURE............................21  3.1. Z3BASE.LIB...........................................21  3.2. Z3BASE Header........................................21  3.3. Z3BASE Body..........................................23  3.3.1. Version Numbers, Memory Size, and CP/M Base...23  3.3.2. Processor Selection...........................23  3.3.3. External Path.................................24  3.3.4. Wheel Byte....................................24  3.3.5. CCP Location..................................24  3.3.6. RCP Location..................................25  3.3.7. IOP Location..................................25  3.3.8. FCP Location......... .........................25  3.3.9. ENV Location..................................25  3.3.10. Shell Stack..................................26  3.3.11. ZCPR3 Messages...............................26  3.3.12. External FCB.................................26  3.3.13. Named Directory Buffer.......................26  3.3.14. Command Line Buffer..........................27  3.3.15. External Stack...............................27  3.3.16. User Equates.................................27  4. STEPS 3-6: INSTALLATION...................................28  4.1. Step 3: Modifying the BIOS Cold Boot Routine.........28  4.1.1. CBIOSHDR.LIB -- BIOS Configuration File.......28  4.1.2. CBIOSZ -- Selections from a ZCPR3 BIOS........31  4.2. Step 4: Editing Z3HDR.LIB............................43  4.2.1. Basic System Definitions......................43  4.2.2. Default File Types............................44  4.2.3. SUBMIT File Processing........................44  4.2.4. Command Prefix................................44  4.2.5. Command Attributes............................44  4.2.6. ZCPR3 Resident Command Activation and Wheels..45  4.2.7. ZCPR3 Resident Command Table..................46  4.2.8. Controls on ZCPR3 Resident Commands...........48  4.2.9. Path Definition...............................50  4.2.10. DU and DIR Controls..........................52  4.2.11. Command Line Buffer Control..................54  4.2.12. CMDRUN -- ZCPR3 Extended Command Processing..55  4.2.13. Flow Command Facility........................55  4.2.14. Miscellaneous Equates........................56  4.3. Step 5: Overlaying the old BIOS and the CCP..........57  4.4. Step 6: Implanting the Operating System Image........57  4.5. Sample Session.......................................57  4.5.1. Assembling SYSENV.............................58  4.5.2. Assembling SYSNDR.............................59  4.5.3. Assembling SYSIOP.............................60  4.5.4. Assembling SYSRCP.............................61  4.5.5. Assembling SYSFCP.............................62  4.5.6. Creating MYTERM.Z3T via TCSELECT..............63  4.5.7. Recap.........................................64  4.5.8. Assembling the CBIOS..........................64  4.5.9. Assembling the ZCPR3 Command Processor Replac.64  4.5.10. Obtaining the Operating System Image.........65  4.5.11. Patching the CP/M System Image...............66  4.5.12. Placing the Operating System Image...........67  5. STEP 7: SYSTEM SEGMENTS...................................68  5.1. Resident Command Packages............................68   5.1.1. CP Command....................................69  5.1.2. DIR Command...................................69  5.1.3. ERA Command...................................70  5.1.4. LIST and TYPE Commands........................71  5.1.5. PEEK and POKE Commands........................72  5.1.6. PROT Command..................................73  5.1.7. REN Command...................................73  5.1.8. REG Command...................................74  5.1.9. WHL Command...................................74  5.1.10. NOTE Command.................................76  5.1.11. ECHO Command.................................76  5.2. Flow Command Packages................................77  5.2.1. IF Negation...................................77  5.2.2. IF: T (True) or F (False)....................78  5.2.3. IF: EM (Empty)...............................78  5.2.4. IF: ER (Error)...............................78  5.2.5. IF: EX (Exist)...............................79  5.2.6. IF: IN (Input)...............................79  5.2.7. IF: NU (Null)................................79  5.2.8. IF: n (Register Value).......................80  5.2.9. IF: WH (Wheel)...............................80  5.2.10. IF: TC (TCAP)...............................80  5.2.11. IF: fcb1=fcb2...............................81  5.2.12. COMIF - Run IF.COM...........................81  5.2.13. NOISE - Have FCP Print IF Status Messages....81  5.3. Input/Output Packages................................82  5.4. Named Directory Files................................82  5.5. TCAP Files...........................................84  5.6. Environment Descriptor...............................84  6. STEP 8: UTILITY INSTALLATION............. .................89  6.1. The Z3INS Utility....................................89  6.2. Sample Session.......................................90  6.3. Assembling Distribution Files........................91  7. The Z3TCAP FACILITY.......................................92  7.1. ZCPR3 Terminal Capabilities (TCAP)...................92  7.2. Internal Structure of a Z3T File.....................93  7.2.1. Terminal Name.................................94  7.2.2. Arrow Keys....................................94  7.2.3. Function Delays...............................95  7.2.4. Clear Screen Sequence.........................95  7.2.5. Cursor Motion (GOTOXY) Sequence...............96 7.2.5.1. Cursor Motion Interpreter Commands...97 7.2.5.2. %R Command...........................97 7.2.5.3. %I Command...........................97 7.2.5.4. Output Commands......................98  7.2.6. Clear to End of Line..........................99  7.2.7. Begin and End Highlighting (Standout Mode)....99  7.2.8. Terminal Initialization and Deinitialization.100  7.3. Terminal Control Sequences 1 (General)..............100  7.4. Terminal Control Sequences 2 (Cursor Motion)........101  7.5. Overview of VLIB....................................103  7.6. Standard ZCPR3 TCAP File............................103  7.7. TCAP Check Program..................................103  7.8. TCAP Entry Definition Program.......................104  7.9. TCAP Entry Selection Program........................108  8. DOCUMENTATION............................................112  9. REFERENCES...............................................113  9.1. ZCPR2 and SYSLIB2 Publications and Documentation....113  9.1.1. ZCPR2 Manuals................................113  9.1.2. SYSLIB2 Manuals..............................113  9.1.3. Software Upgrades to SYSLIB2 and ZCPR2.......113  9.1.4. Sources......................................114  9.1.5. CP/M Books...................................114  9.2. ZCPR3 Sources.......................................115  9.2.1. Selected Computer Clubs......................115 9.2.1.1. ACGNJ and SIG/M.....................115 9.2.1.2. New York Amateur Computer Club......115  9.2.2. Echelon, Inc.................................116  9.2.3. New York Zoetrope, Inc.......................117 .PA  L I S T O F F I G U R E S   1-1: CP/M and ZCPR3-based SYSGEN Memory Images.................6  1-2: SYSGEN Memory Image Addresses.............................6  1-3: ZCPR3 System Memory Image (Z3BASE1.LIB)..................10  3-1: Z3BASE.LIB Comment Header................................22  4-1: ZCPR3 Resident Command Naming............................47  5-1: Named Directory Structure................................82  6-1: Sample Z3INS Installation File...........................89  6-2: Sample Run of Z3INS......................................90  7-1: Z3T File Structure, Overview.............................93  7-2: Z3T Records..............................................93  7-3: Wordstar Movement Convention.............................94  7-4: Summary of Cursor Motion Interpreter Commands...........102 .PA .FO .HE .PN 1 åååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååå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. åååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååå3. S T E P 2 : Z C P R 3 M E M O R Y S T R U C T U R E  3.1. Z3BASE.LIB Thå  filå  Z3BASE.LI  defineó thå memorù structurå  oæ  thå ZCPR³ System®  Thió filå ió "included¢ bù á numbeò oæ thå  ZCPR³ Systeí  Segmentó  wheî  theù arå assembleä iî  ordeò  tï  providå informatioî  tï  theí oî thå memorù structurå oæ thå systeí  theù arå  beinç  assembleä for®  Z3BASE.LI provideó  onå  sourcå  oæ informatioî  abouô  thå targeô ZCPR³ Systeí tï alì utilitieó  anä ZCPR3 System Segments. Z3BASE.LI  ió  divideä  intï twï partsº  (1©  thå  commenô header¬  whicè  outlineó thå memorù structurå oæ thå systeí iî  á manneò similiaò tï Fiç 1-3¬  anä (2© thå body¬  whicè containó  á serieó  oæ  equateó  whicè definå addresseó oæ  elementó  iî  thå systeí  anä  otheò  informatioî abouô variouó attributeó  oæ  thå system. 3.2. Z3BASE Header Thå followinç figurå showó thå commenô headeò oæ thå examplå ZCPR³  Systeí  Z3BASE.LI  file®  Iô  ió  recommendeä  thaô  thå installeò filì ouô thå detailó oæ thå addresó rangå anä  featureó supporteä  iî thå targeô ZCPR³ Systeí iî á Z3BASE.LI filå beforå hå  dï  anù  programminç  anä makå á  copù  oæ  Z3BASE.LI  aó  á reference for himself during the installation process. .pa Š;**************************************************************** ;* Z3BASE.LIB -- Base Addresses for ZCPR3 System by R Conn * ;* * ;* Address Range Size Function * ;* 0 - FF 256 b Standard CP/M Buffers except * ;* 40 - 4A 11 b for ZCPR3 External Path * ;* 4B 1 b Wheel Byte * ;* 100 - BFFF ~48 K TPA * ;* C000 - C7FF 2 K ZCPR3 Command Processor * ;* C800 - D5FF 3.5K BDOSZ * ;* D600 - E3FF 3.5K CBIOSZ with Buffers * ;* E400 - EBFF 2 K Resident Command Package * ;* EC00 - F1FF 1.5K Redirectable I/O Driver Package * ;* F200 - F3FF 0.5K Flow Command Package * ;* F400 - F4FF 256 b Environment Descriptors * ;* Bytes 00H-7FH: Z3 Parameters * ;* Bytes 80H-FFH: Z3 Terminal Cap * ;* F500 - F57F 128 b ZCPR3 Shell Stack * ;* F580 - F5CF 80 b ZCPR3 Message Buffers * ;* Byte 0: Error Flag (Z/NZ) * ;* Byte 1: IF (8 Levels) * ;* Byte 2: IF Active (8 Levels) * ;* Byte 3: Z3 Cmd Status * ;* 00B - Normal * ;* 01B - Shell * ;* 10B - Error * ;* Bytes 4&5: Error Address if 10B * ;* Byte 6: Program Error Code * ;* Byte 7: ZEX Message Byte * ;* 00B - Normal * ;* 01B - Z3 Prompt * ;* 10B - Suspend Intercept * ;* Byte 8: ZEX Running Flag (0=No) * ;* Bytes 9-10: Address of Next * ;* Char for ZEX to Return * ;* Bytes 11-12: Address of First * ;* Char in ZEX Memory- * ;* Based File Buffer * ;* Byte 13: SH Control Byte * ;* Bit 0: Enable SHCMT * ;* Bit 1: Enable SHECHO * ;* Bit 7: Enable Shell * ;* Entry Wait * ;* Bytes 14-15: Shell Scratch * ;* Bytes 10H-2FH: Error Cmd * ;* Bytes 30H-39H: Registers * ;* Bytes 3AH-3FH: Reserved * ;* Bytes 40H-4FH: User-Defined * ;* F5D0 - F5FF 48 b ZCPR3 External FCB * ;* F600 - F6FF 256 b Memory-Based Named Directory * ;* F700 - F7CF 208 b Multiple Command Line Buffer * ;* F7D0 - F7FF 48 b ZCPR3 External Stack * ;* F800 - FFFF 2 K ROM * ;**************************************************************** FIG 3-1: Z3BASE.LIB Comment Header Š 3.3. Z3BASE Body Thå  followinç ió á reformatteä duplicatå oæ thå bodù oæ thå Z3BASE.LI  file®  Iô  ió provideä herå  tï  providå  additionaì informatioî  oî ho÷ tï seô thå equates®  Iô maù bå usefuì tï thå installeò  tï havå thió installatioî manuaì opeî tï  theså  pageó while he is editing the Z3BASE.LIB file. 3.3.1. Version Numbers, Memory Size, and CP/M Base Thå  followinç equateó definå thå versioî numberó oæ  thå ZCPR³  Commanä  Processoò anä thå CBIOSZ®  Theù alsï  explicitlù statå  thå  sizå oæ thå TPÁ foò inclusioî iî  thå  CBIOSÚ  headeò printeä aô Colä Boot. Z3REV EQU 30 ; ZCPR3 REV NUMBER CBREV EQU 41 ; CBIOSZ REV NUMBER MSIZE EQU 48 ; SIZE OF TPA Theså  equateó  arå usuallù useä bù thå BIOÓ tï prinô  theså detailó  iî itó Colä Booô signoî message®  Theù arå noô useä  bù any ZCPR3 System Segments other than the BIOS. BASÅ - Baså Addresó oæ user'ó CP/Í systeí (normallù ° foò  DÒ version)®  Thió  equatå allowó easù modificatioî bù non-standarä CP/Í (eg,H89) BASE EQU 0 Thió  equatå  ió provideä tï establisè  whetheò  á  standarä systeí (ORÇ 0© ió beinç builô oò not¬  and¬ iæ not¬ whaô thå baså address of the system is. 3.3.2. Processor Selection Thå  followinç  equatå selectó thå uså oæ  thå  8080/808µ micrï  oò  thå  Z8° micrï foò thå targeô foò  ZCPR3®  Notå  thaô selectinç  thå 8080/808µ shoulä bå donå ONLÙ iæ yoõ havå aî  808° oò  8085®  Iæ yoõ havå á Z80¬  bù alì meanó seô I808°  tï  FALSÅ sincå thå codå ió mucè smalleò anä yoõ caî puô morå featureó intï thå systeí aó á result. Iæ  thå processoò ió aî 808° oò 8085¬  seô thió equatå tï TRUE® Iæ thå processoò ió á Z80¬ seô iô tï FALSE. I8080 EQU FALSE ZCPR³  caî  bå assembleä tï ruî oî aî  8080¬  8085¬  oò  Z8° microprocessor®  Iæ thió equatå ió FALSE¬  thå Z8° ió  selected¬ and¬ bù usinç relativå jumps¬ morå featureó caî bå packeä iî thaî under an 8080 or 8085. Š 3.3.3. External Path Thå  followinç  equateó definå thå addresó oæ  thå  ZCPR³ Externaì  Patè  anä thå numbeò oæ two-bytå elementó containeä  iî thió patè (maximum)® Iæ therå ió nï ZCPR³ Externaì Path¬ botè oæ theså valueó shoulä bå seô tï 0. EXPATH EQU 40H ; EXTERNAL PATH EXPATHS EQU 5 ; 5 2-byte Path Elements ; (PATH SIZE = EXPATHS*2 + 1) Iæ  nï externaì patè ió tï bå employed¬  seô botè  oæ  theså equateó  tï 0®  ZCPR³ wilì theî reservå spacå withiî itselæ  foò the command-search path. See Section 2.6.1 for more detail. 3.3.4. Wheel Byte Thå  followinç  equatå defineó thå addresó oæ  thå  ZCPR³ Wheeì Byte®  Iæ therå ió nï ZCPR³ Wheeì Byte¬  thió valuå shoulä bå seô tï 0. Z3WHL EQU 4BH ; WHEEL BYTE ADDRESS Iæ  therå ió nï Wheeì Byte¬  seô thió equatå tï 0®  Thå C3È instructioî (JMP© aô memorù locatioî ° wilì bå useä aó thå  Wheeì Bytå  then¬  and¬  beinç non-zero¬  thå Wheeì Bytå wilì alwayó bå TRUE®  Iæ  thió equatå ió seô tï 0¬  bå surå tï noô providå  thå useò witè thå commandó tï changå thió byte¬  since¬  bù sï doing¬ he will wipe out the warm boot jump at location 0. See Section 2.6.2 for more detail. 3.3.5. CCP Location Thå  followinç  equatå defineó thå addresó oæ  thå  ZCPR³ Commanä Processor® Thió addresó MUSÔ bå supplied. CCP EQU 0C000H ; ZCPR3 COMMAND PROCESSOR Thió  valuå caî bå obtaineä bù calculatioî oò bù  usinç  thå Z3LOC utility. .pa Š 3.3.6. RCP Location Thå  followinç  equateó definå thå addresó oæ  thå  ZCPR³ Residenô  Commanä  Packagå anä itó sizå iî 128-bytå  blocks®  Iæ therå ió nï ZCPR³ Residenô Commanä Package¬  botè oæ theså valueó shoulä bå 0. RCP EQU 0E400H ; RESIDENT COMMAND PACKAGE RCPS EQU 16 ; 16 128-byte Blocks (2K bytes) See Section 5.1 for more detail. 3.3.7. IOP Location Thå  followinç  equateó definå thå addresó oæ  thå  ZCPR³ Input/Outpuô  Packagå anä itó sizå iî 128-bytå blocks®  Iæ therå ió nï ZCPR³ Input/Outpuô Package¬  botè oæ theså valueó shoulä bå 0. IOP EQU 0EC00H ; REDIRECTABLE I/O PACKAGE IOPS EQU 12 ; 12 128-byte Blocks (1.5K bytes) See Section 5.3 for more detail. 3.3.8. FCP Location Thå  followinç  equateó definå thå addresó oæ  thå  ZCPR³ Flo÷ Commanä Packagå anä itó sizå iî 128-bytå blocks®  Iæ  therå ió nï ZCPR³ Flo÷ Commanä Package¬  botè oæ theså valueó shoulä bå 0. FCP EQU 0F200H ; FLOW COMMAND PACKAGE FCPS EQU 4 ; 4 128-byte Blocks (0.5K bytes) See Section 5.2 for more detail. 3.3.9. ENV Location Thå  followinç  equateó definå thå addresó oæ  thå  ZCPR³ Environmenô Descriptoò anä itó sizå iî 128-bytå blocks® Iæ therå ió  nï ZCPR³ Environmenô Descriptor¬  botè oæ theså valueó shoulä bå 0. Z3ENV EQU 0F400H ; ENVIRONMENT DESCRIPTORS Z3ENVS EQU 2 ; SIZE OF DESCRIPTOR IN 128-BYTE BLOCKS See Section 2.2.7 for more detail. .pa Š 3.3.10. Shell Stack Thå  followinç  equateó definå thå addresó oæ  thå  ZCPR³ Shelì Stack¬  thå numbeò oæ entrieó permitteä iî thå ZCPR³  Shelì Stack¬  anä thå sizå oæ eacè entrù iî thå Shelì Stacë iî termó oæ bytes® Iæ therå ió nï ZCPR³ Shelì Stack¬ alì threå valueó shoulä bå 0. SHSTK EQU 0F500H ; ZCPR3 SHELL STACK SHSTKS EQU 4 ; NUMBER OF SHSIZE-BYTE SHELL STACK ENTRIES SHSIZE EQU 32 ; SIZE OF A SHELL STACK ENTRY ; (STACK SIZE = SHSTKS * SHSIZE) Thå  totaì  amounô oæ spacå occupieä bù thå shelì  stacë  ió SHSTKS*SHSIZE® Iî thió configuration¬ 12¸ byteó arå useä (4*32). See Section 2.2.6 for more detail. 3.3.11. ZCPR3 Messages Thå  followinç  equatå defineó thå addresó oæ  thå  ZCPR³  Messagå Buffer®  Thió buffeò ió alwayó 8° byteó long®  Iæ therå ió nï ZCPR³ Messagå Buffer¬ thió addresó shoulä bå 0. Z3MSG EQU 0F580H ; ZCPR3 MESSAGE BUFFER See Section 2.2.5 for more detail. 3.3.12. External FCB Thå  followinç  equatå defineó thå addresó oæ  thå  ZCPR³ Externaì FCB®  Thió buffeò ió alwayó 3¶ byteó long® Iæ therå ió nï ZCPR³ Externaì FCB¬ thió addresó shoulä bå 0. EXTFCB EQU 0F5D0H ; ZCPR3 EXTERNAL FCB See Section 2.2.4 for more detail. 3.3.13. Named Directory Buffer Thå  followinç  equateó definå thå addresó anä  sizå  (iî termó  oæ  18-bytå entries© oæ thå ZCPR³ Nameä Directorù  Buffer® Iæ therå ió nï sucè buffer¬ botè oæ theså valueó shoulä bå 0. Z3NDIR EQU 0F600H ; ZCPR3 NAMED DIRECTORY AREA Z3NDIRS EQU 14 ; 14 18-byte Named Directory Elements permitted ; (NDIR SIZE = Z3NDIRS*18 + 1 for trailing 0) See Section 2.2.3 for more detail. .pa Š 3.3.14. Command Line Buffer Thå  followinç  equateó definå thå addresó anä  sizå  (iî termó oæ bytes© oæ thå ZCPR³ Commanä Linå Buffeò (formerlù calleä thå  Multiplå Commanä Linå Buffeò undeò ZCPR2)®  Iæ therå ió  nï sucè buffer¬ botè oæ theså valueó shoulä bå 0. Z3CL EQU 0F700H ; ZCPR3 COMMAND LINE BUFFER Z3CLS EQU 200 ; SIZE OF COMMAND LINE BUFFER See Section 2.2.2 for more detail. 3.3.15. External Stack Thå  followinç  equatå defineó thå addresó oæ  thå  ZCPR³ Externaì Stack® Thió stacë ió alwayó 4¸ byteó iî size® Iæ therå ió nï sucè stack¬ thió valuå shoulä bå 0. EXTSTK EQU 0F7D0H ; ZCPR3 EXTERNAL STACK See Section 2.2.1 for more detail. 3.3.16. User Equates Thå followinç equateó arå availablå foò thå implementer'ó targeô system® Theså arå implementation-defined. DJEPROM EQU 0F800H ; EPROM BASE ADDRESS Thió ió provideä mainlù aó á conveniencå tï thå user®  Thió valuå ió useä bù mù BOOÔ anä BIOS¬  whicè alsï reaä thió filå foò information. 4. S T E P S 3 - 6 : I N S T A L L A T I O N  4.1. Step 3: Modifying the BIOS Cold Boot Routine Thå  followinç  ió á reformatteä anä editeä copù oæ mù  BIOÓ (Basiã Input/Outpuô System© anä thå headeò filå useä tï customizå it®  Thió informatioî ió provideä aó aî examplå oæ ho÷ tï modifù thå  Colä Booô routinå (labelleä 'cboot§ iî thió example©  foò  á fulì  installatioî oæ ZCPR3®  Onlù thå pertinenô informatioî  ió included. 4.1.1. CBIOSHDR.LIB -- BIOS Configuration File ***************************************************************** * * * Control Processor/Microcomputer Basic I/O System * * CP/ZM CBIOSZ Standard with CON:=CRT: * * * * Customized for the ARIES-1 Microcomputer by * * Richard Conn, 5 Jan 1984 * * * ***************************************************************** ***************************************************************** * * * The following revision number is in reference to the DR * * 2.8 CBIOS&. * * * ***************************************************************** revnum equ cbrev ;CBIOSZ revision number cpmrev equ z3rev ;ZCPR3 revision number Thå  valueó  'cbrev§ waó provideä bù thå  BIOÓ  source¬  anä 'z3rev' came from Z3HDR.LIB. << Detail Left Out >> .pa Š cbdisk equ 0F0H ;Initial Disk to Log In, 0=A, 1=B ;User 15, Disk A ***************************************************************** * * * CP/M system equates. If reconfiguration of the CP/M system * * is being done, the changes can be made to the following * * equates. * * * ***************************************************************** bdos equ ccp+800h ;BDOS address bios equ ccp+1600h ;CBIOS address wbot equ 0 ;Warm boot jump address iobyte equ 3 ;IOBYTE location cdisk equ 4 ;Address of last logged disk entry equ 5 ;BDOS entry jump address buff equ 80h ;Default buffer address tpa equ 100h ;Transient memory retries equ 10 ;Max retries on disk I/O before error << Detail Left Out >> ***************************************************************** * * * Under the new redirectable I/O driver system, the I/O * * byte can be anything you desire. I have set it up as follows:* * * * ------------------------------- * * IOBYTE | LST: | PUN: | RDR: | CON: | * * ------------------------------- * * bits -> 7 6 5 4 3 2 1 0 * * * * The initial IOBYTE is currently defined as: * * Bits 0-2: CON * * Bit 3: RDR * * Bit 4: PUN * * Bits 5-7: LST * * * * CON: = CRT: CRT * * RDR: = CLOCK: System Clock * * PUN: = CLOCK: System Clock * * LST: = TTY: Printer * * * ***************************************************************** intioby equ 000$1$1$001B ; Initial IOBYTE Thió   I/Ï  Bytå  coulä  alsï  bå  initializeä  withiî   thå initializatioî  sequencå iî thå Input/Outpuô  Package®  Wheneveò LDR.COM loads an I/O Package, it calls an initialization routine. Š ***************************************************************** * * * If there is a command inserted here, it will be given on cold * * boot. * * For Example: * * * * coldbeg db 'MBASIC MYPROG' * * coldend db 0 * * * * will execute microsoft basic, and mbasic will execute the * * "MYPROG" basic program. * * * ***************************************************************** acmd macro ;Define as Macro for Code Insertion coldbeg: db 'STARTUP' ;Cold boot command goes here coldend: db 0 endm Bù  ZCPR³ convention¬  STARTUÐ ió á prograí createä witè thå ALIAÓ utility®  Aî Aliaó ió á prograí createä bù thå ZCPR³ ALIAÓ utilitù  whicè generateó commanä lineó anä placeó theí  intï  thå Commanä Linå Buffeò oæ thå ZCPR³ System® Theså commanä lineó caî bå quitå involved¬  includinç IF/ELSÅ constructs¬  anä parameteró maù  bå  passeä  intï theí aô strategiã pointó  bù  aî  elaboratå parameteò passinç mechanism® Seå thå documentatioî (HLÐ file© oî thå ALIAÓ commanä foò morå details®  Thå STARTUÐ Aliaó typicallù doeó  noô  extracô informatioî froí thå commanä linå  anä  simplù generateó  á  sequencå  oæ commandó whicè  initializå  thå  ZCPR³ Systeí  bù  runninç  LDÒ  oî á varietù  oæ  Systeí  Segmentó  anä performinç otheò sucè operations. ***************************************************************** * * * Path to be Set for ZCPR2 on Cold Boot * * * ***************************************************************** idisk1 equ 'A'-'@' ;1st: Disk A, Current User iuser1 equ '$' idisk2 equ 'A'-'@' ;2nd: Disk A, User 15 iuser2 equ 15 idisk3 equ 0 ;No 3rd Entry iuser3 equ 0 idisk4 equ 0 ;No 4th Entry iuser4 equ 0 << Detail on I/O Devices Left Out >> .pa Š 4.1.2. CBIOSZ -- Selections from a ZCPR3 BIOS * SYSTEM SEGMENT: CBIOSZ * SYSTEM: ARIES-1 * CUSTOMIZED BY: RICHARD CONN *---- Customize Section ----* * Customization Performed in CBIOSHDR.LIB *---- End of Customize Section ----* ***************************************************************** * * * Control Processor/Microcomputer Basic I/O System * * CP/ZM BIOSZ Standard with CON:=CRT: * * CHBIOSZ Body * * * * Customized for the ARIES-1 Microcomputer with Hard Disk * * by Richard Conn, Feb 2, 1984 * * * ***************************************************************** ; ; Macro Libraries for Customization ; MACLIB Z3BASE MACLIB CBIOSHDR << Detail Left Out >> ***************************************************************** * * * The following are internal Cbios equates. Most are misc. * * constants. * * * ***************************************************************** acr equ 0dh ;A carriage return alf equ 0ah ;A line feed XON equ 11h ;X-ON XOFF equ 13h ;X-OFF .pa Š ***************************************************************** * * * The jump table below must remain in the same order, the * * routines may be changed, but the function executed must be * * the same. * * * ***************************************************************** org bios ;CBIOS starting address jmp cboot ;Cold boot entry point wboote: jmp wboot ;Warm boot entry point ; jmp const ;Console status routine jmp fconin ;Console input cout: jmp fconout ;Console output jmp list ;List device output jmp punch ;Punch device output jmp reader ;Reader device input ; jmp home ;Home drive jmp setdrv ;Select disk jmp settrk ;Set track jmp setsec ;Set sector jmp setdma ;Set DMA address jmp read ;Read the disk jmp write ;Write the disk ; jmp listst ;List device status ; jmp sectran ;Sector translation ; jmp newio ;Redirect I/O Drivers Mù  JMÐ tablå ió extendeä slightly®  NEWIÏ ió foò á  systeí not described here. ***************************************************************** * * * These are the console I/O routines with buffer flush. * * * ***************************************************************** fconin: call flush ;Flush Buffer jmp conin fconout: push b ;Save char call flush ;Flush Buffer pop b ;Get char jmp conout Š ***************************************************************** * * * Gocpm is the entry point from cold boots, and warm boots. It * * initializes some of the locations in page 0, and sets up the * * initial DMA address (80h). * * * ***************************************************************** gocpm: call const ;Check for Input Char ora a ;NZ means char there cnz conin ;Flush it if so ; lxi h,buff ;Set up initial DMA address call setdma ; mvi a,(jmp) ;Initialize jump to warm boot sta wbot sta entry ;Initialize jump to BDOS ; lxi h,wboote ;Address in warm boot jump shld wbot+1 ; lxi h,bdos+6 ;Address in BDOS jump shld entry+1 ; xra a ;A = 0 sta bufsec ;Disk Jockey buffer empty sta bufwrtn ;Set buffer not dirty flag ; lda cdisk ;Jump to CP/M with currently ;selected disk in C mov c,a Thió GOCPÍ sectioî ió more-or-lesó standard®  Thå followinç sectioî  oæ GOCPÍ dealó witè initializinç thå Commanä Linå Buffeò on Cold Boot (or Warm Boot). .pa Š ; ; This code loads an optional command line on COLD BOOT only ; lda cwflg ;Test for any loaded command ora a jnz ccp+3 ;Enter ZCPR3 without command if Warm Boot lxi d,coldbeg ;Beginning of initial command cldcmnd: ; if z3cl ne 0 ;Multiple Commands Allowed? ; lxi h,z3cl+4 ;Multiple Command buffer ; else ; lxi h,ccp+8 ;Command buffer ; endif ; cld1: ldax d ;Get char mov m,a ;Put char inx h ;Pt to next inx d ora a ;Done? jrnz cld1 jmp ccp ;Run with Command cwflg: db 0 ;Cold/warm boot flag ***************************************************************** * * * If there is a command inserted here, it will be given if the * * auto feature is enabled. * * For Example: * * * * coldbeg db 'MBASIC MYPROG' * * coldend db 0 * * * * will execute microsoft basic, and mbasic will execute the * * "MYPROG" basic program. * * * ***************************************************************** acmd ;Perform Macro from CBIOSHDR.LIB .pa Š ***************************************************************** * * * Signon message output during cold boot. * * * ***************************************************************** prompt: db acr,alf db '0'+msize/10 ;CP/ZM memory size db '0'+(msize mod 10) db 'K TPA ZCPR V' ;ZCPR version number db z3rev/10+'0','.',(z3rev mod 10)+'0' db ', CBIOSZ V' ;CBIOSZ version number db cbrev/10+'0','.',(cbrev mod 10)+'0' if first ;if hard disk is A db 'H' ;say this is a hard disk version else db 'F' ;say this is a floppy version endif db acr,alf db 0 ***************************************************************** * * * Path for ZCPR 3.x initialized during cold boot. * * * ***************************************************************** path: db idisk1,iuser1 ;First Disk and User db idisk2,iuser2 ;2nd Disk and User db idisk3,iuser3 ;3rd Disk and User db idisk4,iuser4 ;4th Disk and User db 0 ;End of PATH This path is defined in CBIOSHDR.LIB. .pa Š ***************************************************************** * * * Utility routine to output the message pointed at by H&L, * * terminated with a null. * * * ***************************************************************** message: mov a,m ;Get a character of the message inx h ;Bump text pointer ana a ;Test for end rz ;Return if done push h ;Save pointer to text mov c,a ;Output character in C call cout ;Output the character pop h ;Restore the pointer jr message ;Continue until null reached ***************************************************************** * * * Cboot is the cold boot loader. All of CP/M has been loaded in * * when control is passed here. * * * ***************************************************************** cboot: lxi sp,tpa ;Set up stack Thå followinç codå segmenô copieó thå defaulô command-searcè patè  intï  thå Externaì Patè buffer®  Sincå thå  ZCPR³  Commanä Processoò  useó thió buffeò thå firsô timå iô searcheó foò á  COÍ file¬  iô ió recommendeä thaô thió initializatioî alwayó bå  donå iî  thå Colä Booô routinå oæ thå BIOS®  Therå arå somå  isolateä caseó wherå thió ió noô required¬  buô theù wilì noô bå discusseä here. if expath ne 0 ;External Paths Supported lxi d,path ;Copy Cold-Boot Path lxi h,expath ;Into System External Path Area mvi b,9 ;Always 9 bytes call movlop endif Thå  followinç  codå segmenô initializeó thå Wheeì  Bytå  tï non-privelegeä  status®  Thió  initializatioî maù bå donå  bù  á program executed by STARTUP if desired. if z3whl ne 0 ;Wheel Byte Supported xra a ;Clear Wheel Byte sta z3whl endif Š Thå  followinç codå segmenô initializeó thå Residenô Commanä Packagå  buffeò tï zero®  12¸ byteó ió largeò thaî  needed¬  buô ratheò thaî specifù thå exacô sizå foò eacè package¬ thió anä thå followinç  initializationó savå codå spacå iî thå BIOÓ anä  don'ô wastå  á  significanô amounô oæ time®  Sincå thå  ZCPR³  Commanä Processoò  useó  thå  RCР beforå anù  COÍ  fileó  arå  executed¬ initializatioî  oæ thå RCÐ buffeò ió requireä tï bå performeä  iî the BIOS Cold Boot routine. if rcp ne 0 ;RCPs Supported lxi h,rcp ;RCP Address (zero fill) call zero128 ;128 bytes endif Thå  followinç codå segmenô initializeó thå I/Ï Packagå witè driveró whicè arå containeä withiî thå BIOS® Later¬ wheî STARTUÐ executes¬  LDÒ wilì probablù loaä á propeò I/Ï Packagå oveò theså drivers®  Sincå  I/Ï ió useä immediatelù afteò Colä  Boot¬  thió initializatioî musô bå performeä iî thå Colä Booô routine. if iop ne 0 ;IOPs Supported lxi d,iodrivers ;Set up I/O Drivers lxi h,iop ;Location for drivers call mover ;Copy an arbitrary 128 bytes else call lstinit ;Init Simple LST Device call clkinit ;Init Clock endif Thå  followinç  codå  segmenô initializeó thå  Flo÷  Commanä Package®  Likå thå RCP¬  thå FCÐ musô bå initializeä durinç Colä Boot. if fcp ne 0 ;FCPs Supported lxi h,fcp ;FCP Address (zero fill) call zero128 ;128 bytes endif Thå followinç codå segmenô initializeó thå ZCPR³ Environmenô Descriptor®  Sincå thå firsô utilitù executeä ió usuallù STARTUÐ (whicè  ió  aî  Alias)¬   thå  Environmenô  Descriptoò  musô   bå initialized during Cold Boot. if z3env ne 0 ;ENVs Supported lxi h,z3env ;ENV Address (zero fill) mvi b,128+16 ;128 bytes of environ + 16 bytes call zerom ;of TCAP endif .pa Š Thå  followinç  codå segmenô clearó thå  Shelì  Stack®  Thå ZCPR³  Commanä  Processoò querieó thió buffeò almosô  immediatelù afteò Colä Boot¬  sï thió initializatioî musô bå performeä durinç Cold Boot. if shstk ne 0 ;Shell Stack Supported xra a ;Clear Stack sta shstk endif Thå  followinç initializatioî musô alsï bå performeä  durinç Colä  Booô  sincå  thå  ZCPR³  Commanä  Processoò  useó  messageó extensively if this feature is enabled. if z3msg ne 0 ;ZCPR3 Messages Supported lxi h,z3msg ;Clear Message Bytes mvi b,80 ;80 bytes call zerom endif Thå  followinç  initializatioî ió noô requireä  durinç  Colä Booô  iæ thå analysió oæ thå DÕ forí ió performeä beforå thå  DIÒ forí bù thå ZCPR³ Commanä Processor¬  buô thå installeò ió takinç á  risë thaô alì wilì bå welì untiì LDÒ loadó thå Nameä Directorù buffeò iæ hå doeó noô perforí thå followinç initializatioî durinç Colä Boot. if z3ndir ne 0 ;Named Directory Based in Memory lxi h,z3ndir ;Named Directory Base call zero128 ;128 bytes endif Thå  followinç initializatioî oæ thå Commanä Linå buffeò  ió absolutelù requireä durinç Colä Boot®  Onlù iæ thå Commanä  Linå buffeò  ió NOÔ externaì ió thió initializatioî  unnecessary¬  buô theî  á  significanô amounô oæ thå poweò oæ thå ZCPR³  Systeí  ió lost by having an internal Command Line buffer. if z3cl ne 0 ;Multiple Commands Allowed lxi d,cmdset ;Set buffers for Multiple Command lxi h,z3cl ;Command Line Base call mover ;Copy an arbitrary 128 bytes endif Aó mentioneä previously¬ thå followinç initializatioî ió noô requireä anä maù bå performeä bù thå I/Ï Packagå loadeä bù LDR. if iop ne 0 mvi a,intioby ;Initialize the I/O Byte sta iobyte endif Š The following completes the Cold Boot initializations. lxi h,prompt ;Prep for sending signon message call message ;Send the prompt mvi a,cbdisk ;Select basic disk sta cpmdrv sta cdisk << Detail Left Out >> jmp gocpm ***************************************************************** * * * Mover moves 128 bytes of data. Source pointer in DE, Dest * * pointer in HL. * * * ***************************************************************** mover: mvi b,128 ;Length of transfer movlop: ldax d ;Get a byte of source mov m,a ;Move it inx d ;Bump pointers inx h djnz movlop ;Continue moving until done ret zerofl set (rcp ne 0)or(fcp ne 0)or(z3env ne 0)or(z3msg ne 0) zerofl set zerofl or (z3ndir ne 0) if zerofl ; ; Zero 128 bytes of memory pted to by HL ; zero128: mvi b,128 ;128 bytes ; ; Zero memory for B bytes; memory pted to by HL ; zerom: mvi m,0 ;store zero inx h djnz zerom ret endif .pa Š ; ; Selection of LST: Device ; If IOP is not supported, provide for one simple LST device; ; else, set LST device equal to console for later redefinition by ; loading an I/O Package via LDR ; if iop ne 0 ; lstout equ djcout ;same as console for now punout equ djcout ;same as console for now rdrin equ djcin ;same as console for now ; else ; ; Initialize MPU Serial I/O Channel Characteristics and Baud Rate ; lstinit: << Detail Left Out >> ; endif ;IOP ne 0 ; .pa Š ***************************************************************** * * * Primitive I/O Drivers which are loaded at Cold Boot time. * * * ***************************************************************** uart equ origin+3F9H ;UART address rda equ 4 ;UART RDA Bit iodrivers: ; if iop ne 0 ; jr ioerror ;no Status Routine db 0 ;Fill 3 bytes jr ioerror ;no Select Routine db 0 ;Fill 3 bytes jr ioerror ;no Namer Routine db 0 ;Fill 3 bytes ; endif ;iop ne 0 ; ret ;Initialize Terminal db 0,0 ;Fill 3 bytes jr ustat ;Console Input Status db 0 ;Fill 3 bytes jmp djcin ;Console Input Char jmp djcout ;Console Output Char jmp lstout ;List Output Char jmp punout ;Punch Output Char jmp rdrin ;Reader Input Char Note: Thå  abovå routineó arå locateä somewherå withiî  thå  BIOS® Theù  arå  verù  smalì  anä simplå iî nature¬  anä  theù  dï  noô implemenô  thå I/Ï Byte®  Thió ió lefô foò thå redirectablå  I/Ï package which will be loaded later. mvi a,0ffh ;List Status Ready ora a ;Set Flags ret ;New I/O Driver Installation Routine ioerror: xra a ;No device assignments ret .pa Š ***************************************************************** * * * The following equates define the various Redirectable I/O * * routines in the SYSTEM I/O Area. * * * ***************************************************************** ; if iop ne 0 riobase equ iop+9 ;Relative I/O Base (less support) else riobase equ iodrivers ;Simple I/O Drivers endif ;iop ne 0 ; tinit equ riobase ;Terminal Init const equ riobase+3 ;Console Input Status conin equ riobase+6 ;Console Input conout equ riobase+9 ;Console Output list equ riobase+12 ;List Output punch equ riobase+15 ;Punch Output reader equ riobase+18 ;Reader Input listst equ riobase+21 ;List Output Status newio equ riobase+24 ;Redirectable I/O Patcher ***************************************************************** * * * Initial Values for the External Command Line Buffers * * and Named Directory Memory-Based Buffers * * * ***************************************************************** if z3cl ne 0 cmdset: dw z3cl+4 ;Beginning of I/O Buffer db z3cls ;Size of I/O Buffer db 0 ;Empty Buffer db 0 ;Empty Buffer endif ***************************************************************** * * * Wboot loads in all of CP/M except the CBIOS, then initializes * * system parameters as in cold boot. See the Cold Boot Loader * * listing for exactly what happens during warm and cold boots. * * * ***************************************************************** wboot: << Detail Left Out >> .pa Š 4.2. Step 4: Editing Z3HDR.LIB Thå followinç ió á reformatteä duplicatå oæ thå bodù oæ  thå Z3HDR.LI  file®  Iô  ió  provideä herå  tï  presenô  additionaì informatioî  oî ho÷ tï seô thå equates®  Iô maù bå usefuì tï thå installeò  tï havå thió installatioî manuaì opeî tï  theså  pageó whilå hå ió editinç thå Z3HDR.LI file. The following is the Banner for Z3HDR.LIB: Z3HDR - Maximum Configuration Offset: 5100H Thió  offseô ió á notå tï thå installer®  Iô indicateó  thå valuå tï adä tï thå Ò commanä oæ DDÔ iî ordeò tï properlù reaä iî thå  HEØ  filå oæ thå ZCPR³ Commanä Processoò intï thå  Operatinç System memory image. Module: Z3HDR Author: Richard Conn Module Used By: ZCPR3 Version 3.x Noteº  Z3HDÒ  containó thå keù customizatioî equateó foò  ZCPR3® Theså  equateó allo÷ thå useò tï selecô variouó ZCPR³ optionó anä dï  aî  extensivå  amounô oæ tailorinç oæ  ZCPR³  tï  thå  user'ó desires. 4.2.1. Basic System Definitions Thå  followinç equateó maù bå useä tï customizå thió CPÒ foò thå user'ó systeí anä integratioî technique. REL - TRUE if integration is to be done via MOVCPM  - FALSE if integration is to be done via DDT and SYSGEN CPRLOC - Base Page Address of CPR; this value can be obtained by running the CCPLOC program on your system, and if REL is FALSE, this value is supplied through the Z3BASE.LIB CCP equate REL EQU FALSE IF REL CPRLOC EQU 0 ELSE CPRLOC EQU CCP ;VALUE PROVIDED IN Z3BASE.LIB ENDIF CCPLOC.COÍ waó aî earlieò versioî oæ Z3LOC.COM¬ whicè ió no÷ supplieä witè thå ZCPR³ distribution® Yoõ maù uså eitheò prograí tï  determinå  thå  baså  pagå  oæ  thå  CPÒ  (Commanä  Processoò Replacement). Š Integration by MOVCPM is not addressed here. 4.2.2. Default File Types Thå  followinç macroó definå thå filå typeó oæ  thå  commanä objecô  fileó (COÍ fileó undeò CP/Í 2.2© tï bå loadeä wheî á non- residenô ZCPR³ commanä ió giveî anä oæ thå indirecô commanä fileó (SU  fileó undeò CP/Í 2.2© tï bå useä tï extracô  commandó  froí wheî thå indirecô commanä facilitù ió invoked. COMTYP MACRO DB 'COM' ENDM SUBTYP MACRO DB 'SUB' ENDM Theså equateó arå provideä tï allo÷ thå installeò tï  selecô anù  filå  typå hå wisheó foò objecô anä indirecô commanä  files® Thå indicateä valueó oæ 'COM§ anä 'SUB§ arå conventional. 4.2.3. SUBMIT File Processing Thå  followinç flaç enableó thå abilitù oæ ZCPR³ tï  procesó SUBMIÔ  fileó (commanä fileó oæ thå forí $$$.SUB)®  Iæ SUBOΠ ió TRUE¬ theî ZCPR³ wilì procesó sucè fileó likå CP/M'ó CCÐ normallù does»  iæ  SUBOΠ ió  FALSE¬  ZCPR³ wilì noô procesó  sucè  fileó (ignorå  them)®  Iî  sucè á case¬  onlù  indirecô  commanä  filå facilitieó likå ZEØ wilì work®  Mucè codå ió saveä insidå oæ thå ZCPR³ Commanä Processoò iæ SUBOÎ ió seô tï FALSE¬ buô thió ratheò usefuì facilitù ió lost. SUBON EQU TRUE 4.2.4. Command Prefix Thå  followinç  flaç allowó ZCPR³ tï accepô commandó oæ  thå forí "du:commanä params¢ oò "dir:commanä params"®  Iæ  DRVPREFIØ ió  TRUE¬  thió  forí ió accepted»  iæ FALSE¬  thió forí  ió  noô accepted. DRVPREFIX equ TRUE Thió optioî alsï affectó argumentó tï commands¬ sucè aó "DIÒ A5:*.TXT"¬  anä  DÕ  oò DIÒ prefixeó oî theså argumentó  arå  noô processed either if DRVPREVIX is FALSE. 4.2.5. Command Attributes Thå   followinç  equatå  allowó  thå  useò  tï  selecô   thå attributeó  oæ  thå COÍ fileó whicè arå selecteä  foò  execution® Thå ZCPR³ Commanä Processoò caî bå madå tï executå onlù COÍ fileó Šwitè  thå Systeí attributå set¬  witè thå Directorù  (non-System© attributå  set¬  oò  witè eitheò attributå  set®  Thå  followinç valueó arå defineä foò thió equate: COMATT Files Selected 0 System 80H Directory 1 Both System and Directory COMATT equ 01H 4.2.6. ZCPR3 Resident Command Activation and Wheels Thå   followinç   equateó  enablå   variouó   ZCPR3-residenô commands®  Thå useò maù invokå theså aó desired¬ buô shoulä keeð iî minä thå sizå oæ thå resultinç ZCPR³ anä makå surå iô doeó noô exceeä thå requireä limits. DIRON equ FALSE ;DIR COMMAND LTON equ FALSE ;LIST, TYPE COMMANDS GOON equ TRUE ;GO COMMAND ERAON equ FALSE ;ERA COMMAND SAVEON equ TRUE ;SAVE COMMAND RENON equ FALSE ;REN COMMAND GETON equ TRUE ;GET COMMAND JUMPON equ FALSE ;JUMP COMMAND NOTEON equ FALSE ;NOTE COMMAND Mosô  oæ  theså  commandó arå availablå aó  optionó  iî  thå Residenô Commanä Packages®  Iæ selecteä foò incorporatioî iî thå Residenô Commanä Packageó insteaä oæ thå ZCPR³ Commanä Processor¬ spacå  ió  freeä iî thå ZCPR³ CPÒ anä thå functionalitù oæ  theså commandó  caî bå extendeä easilù (eg¬  ERÁ iî aî RCÐ caî havå  aî Inspect option). .pa Š Thå Wheeì equatå tablå enableó thå WHEEÌ facilitù oæ  ZCPR3® Witè  thió  facility¬  á WHEEÌ BYTE¬  whicè existó  somewherå  iî memory¬  ió  examineä beforå á seô oæ installer-selecteä commandó arå  executed®  Iæ  thió  bytå ió noô  zero¬  theî  thå  commanä proceeds®  Iæ  iô ió zero¬  theî thå commanä ió noô  alloweä  tï proceeä anä ió exiteä witè aî erroò message. Thå  followinç  seô  oæ equateó makå eacè oæ  thå  indicateä commandó  selectablå tï responä tï thå Wheeì Bytå  oò  not®  Foò instance¬  iæ WERA=TRUE¬  theî iô respondó tï thå Wheeì Byte»  iæ WERA=FALSE¬ iô doeó not. IF Z3WHL NE 0 ;IF A WHEEL BYTE ADDRESS IS DEFINED WERA equ FALSE ;Make ERA a Wheel-Oriented Command WREN equ FALSE ; " REN " " " " WLT equ FALSE ; " L/T " " " " (LIST/TYPE) WGO equ FALSE ; " GO " " " " WSAVE equ FALSE ; " SAVE " " " " WGET equ FALSE ; " GET " " " " WJUMP equ FALSE ; " JUMP " " " " WDU equ FALSE ; " DU: " " " " (DU/DIR Change) WHEEL equ WERA OR WREN OR WLT OR WGO OR WSAVE OR WGET OR WJUMP OR WDU ENDIF ;Z3WHL Thå commandó insidå oæ thå Residenô Commanä Packagå caî alsï be set to respond to the Wheel Byte. 4.2.7. ZCPR3 Resident Command Table Thió  tablå  consistó  oæ thå nameó oæ  thå  variouó  ZCPR3- residenô commandó anä theiò addresses® Thå NCHARÓ equatå defineó ho÷ manù characteró lonç eacè namå maù be¬  anä alì tablå entrieó musô  bå  exactlù  thå indicateä numbeò oæ  characteró  (trailinç spaceó arå useä tï filì ouô shorteò names). Each table entry is structured as follows: DB 'CMND' ;Name of Command (NCHARS long) DB CMNDADR ;Address of Command within ZCPR3 Thå  installeò shoulä onlù changå thå nameó oæ thå  commandó aó  desireä  anä  shoulä  not¬  aó  á  rule¬  toucè  thå  addresó definitioî sincå thió ió fixeä withiî thå bodù oæ ZCPR3. .pa Š NCHARS EQU 4 ;NUMBER OF CHARS/COMMAND CTABLE MACRO ; IF DIRON DB 'DIR ' DW DIR ;DIRECTORY DISPLAY COMMAND ENDIF ; IF LTON DB 'LIST' DW LIST ;LIST FILE ON PRINTER COMMAND DB 'TYPE' DW TYPE ;TYPE FILE ON CONSOLE COMMAND ENDIF ; IF GOON DB 'GO ' DW GO ;EXECUTE CURRENT TPA COMMAND ENDIF ; IF ERAON DB 'ERA ' DW ERA ;ERASE FILES COMMAND ENDIF ; IF SAVEON DB 'SAVE' DW SAVE ;SAVE TPA COMMAND ENDIF ; IF RENON DB 'REN ' DW REN ;RENAME FILES COMMAND ENDIF ; IF GETON DB 'GET ' DW GET ;LOAD FILE INTO TPA COMMAND ENDIF ; IF JUMPON DB 'JUMP' DW JUMP ;JUMP TO ANY MEMORY LOCATION COMMAND ENDIF ; IF NOTEON DB 'NOTE' DW NOTE ;NOTE - NULL COMMAND (NOP) ENDIF ; ENDM FIG 4-1: ZCPR3 Resident Command Naming Š 4.2.8. Controls on ZCPR3 Resident Commands Thå  followinç setó oæ equateó providå speciaì controló  anä parameteró oî variouó ZCPR3-residenô commands. Thå  followinç equateó seô thå widtè oæ thå spacinç  betweeî thå  filå  nameó foò thå DIÒ commanä anä thå  characteò  useä  tï separatå filå nameó froí onå anotheò oî thå samå line. Assuminç thaô FENCÅ ió seô tï thå characteò '|'¬  Iæ WIDÅ ió TRUE¬ theî thå outpuô wilì looë like: filename.typ__|__filename.typ ... while if WIDE is FALSE, the output will look like: filename.typ_|_filename.typ ... (underscore represents a space) WIDE EQU TRUE FENCE EQU '|' Thå WIDÅ equatå ió intendeä tï providå foò shorteò lineó foò thoså  useró witè 64-columî displays®  Foò thoså witè  80-columî displays¬ thå outpuô lineó arå mucè easieò tï read. Thå  followinç  equateó definå twï flagó whicè arå  useä  iî conjunctioî witè thå DIÒ commanä oî thå commanä line®  SYSFLÇ ió thå characteò useä tï indicatå tï DIÒ thaô alì files¬ botè Systeí anä Non-System¬ arå tï bå displayed® SOFLÇ ió thå characteò useä tï  indicatå  tï  DIÒ  thaô  onlù thå  Systeí  fileó  arå  tï  bå displayed® Bù default¬ DIÒ displayó non-Systeí files. Foò  example¬  iæ  SYSFLÇ ió seô tï 'A§ anä SOFLÇ ió seô  tï 'S'¬ then: DIR *.COM A displayó alì COÍ fileó witè botè Systeí anä non-Systeí attributeó while: DIR *.COM S displays only COM files with the System attribute. Naturally: DIR *.COM displays only COM files with the non-System attribute. SYSFLG EQU 'A' SOFLG EQU 'S' .pa Š Thå  followinç equatå causeó ERÁ tï confirí thå fileó tï  bå eraseä beforå iô goeó aheaä anä eraseó them®  Iæ ERAOË ió  TRUE¬ theî  thå useò wilì bå prompteä eacè time»  iæ iô ió FALSE¬  theî thå useò wilì noô bå prompted. ERAOK equ FALSE Iæ ERAOË ió TRUE¬  thå followinç equatå addó á Verifù optioî tï  thå ERÁ commanä whicè causeó thå useò tï bå prompteä onlù  iæ thå Verifù optioî letter¬  defineä bù ERDFLG¬  ió giveî afteò thå filå  name®  Iæ  ERAÖ ió TRUE¬  theî thå useò wilì bå  askeä  tï verifù onlù wheî ERDFLÇ ió containeä iî thå commanä line» iæ ERAÖ ió FALSE¬ thå useò wilì alwayó bå askeä tï verify. Foò example¬  iæ ERAOË ió TRUE¬  ERAÖ ió TRUE¬ anä ERDFLÇ ió 'V'¬ theî thå command: ERA *.* V wilì resulô iî thå filå nameó beinç displayeä anä thå useò  beinç askeä foò verification® Iæ thå Ö optioî werå noô given¬ thå useò woulä noô bå askeä foò verification. ERAV equ FALSE ERDFLG equ 'V' Thå followinç equateó seô thå paginç parameteró foò thå TYPÅ command. PGDFLÔ  determineó iæ TYPÅ pageó bù default®  Iæ PGDFLÔ  ió TRUE¬ then: TYPE FILE.TXT wilì bå paged® Iæ PGDFLÔ ió FALSE¬ thå abovå commanä wilì noô bå paged. PGDFLÇ defineó thå optioî characteò iî thå TYPÅ commanä linå whicè ió useä tï togglå thå defaulô seô bù PGDFLT® Assuminç thaô PGDFLÇ ió seô tï 'P'¬ then: TYPE FILE.TXT P wilì  pagå thå filå listinç iæ PGDFLÔ ió FALSÅ anä noô pagå iô iæ PGDFLÔ ió TRUE. PGDFLT EQU TRUE PGDFLG EQU 'P' .pa Š Thå  followinç  equatå  defineó thå numbeò oæ lineó  oî  thå user'ó CRÔ screeî foò uså bù thå TYPÅ commanä wheî iô ió  paging® Thió valuå ió usuallù 24. NLINES EQU 24 Thå followinç equatå defineó thå optioî letteò useä witè thå SAVÅ  commanä tï indicatå thaô thå associateä numbeò ió  128-bytå sectoró aó opposeä tï 256-bytå pages® Foò example¬ iæ SECTFLÇ ió seô tï 'S'¬ then: SAVE 25 FILE.BIN S savå  2µ 128-bytå sectoró startinç aô locatioî 100È intï thå filå nameä FILE.BIN® IÆ thå Ó optioî waó noô present¬ SAVÅ woulä havå saveä 2µ 256-bytå blockó startinç aô locatioî 100È intï thå  filå nameä FILE.BIN. SECTFLG EQU 'S' 4.2.9. Path Definition Thå followinç equatå specifieó thå addresó oæ thå PATÈ tï bå followeä  foò  thå  PATÈ  command-searcè iæ thå  PATÈ  ió  tï  bå initializeä  bù  thå  BIOÓ  anä seô bù thå useò  viá  á  PATH.COÍ program®  Thå  valuå oæ PATÈ shoulä bå thå addresó oæ  thå  PATÈ datá  areá iî memory®  Iæ thå internaì PATÈ provideä bù ZCPR³ ió tï bå used¬  theî PATHBASÅ shoulä bå equateä tï 0¬  whicè selectó thå PATÈ locateä jusô afteò thå MEMLOAÄ routine® Iæ thå externaì PATÈ ió tï bå used¬ theî PATHBASÅ shoulä bå seô tï thå addresó oæ thå externaì path. Á PATÈ ió á serieó oæ byte-pairs¬  terminateä bù á binarù 0® Thå firsô bytå oæ eacè paiò ió thå disë numbeò (1-1¶ foò diskó A- P)¬  anä  thå seconä bytå oæ eacè paiò ió thå useò numbeò (0-31)® Thå  speciaì characteò '$§ indicateó thå currenô useò oò  currenô disk®  Foò example¬  thå patè froí currenô disk/currenô useò  tï currenô disk/useò ° tï disë A/useò ° ió selecteä bù thå followinç sequence: DB '$$' ;current disk/user DB '$',0 ;current disk/user 0 DB 1,0 ;disk A/user 0 DB 0 ;end of path .pa Š IF EXPATH NE 0 ;External Path Selected This equate defines the base address of the external path PATH equ EXPATH ;External ZCPR3 PATH ELSE ;Internal Path Selected The following macro defines the n-element internal path IPATH MACRO db 'A'-'@','$' ;Disk A, Current User db 'A'-'@',0 ;Disk A, User 0 db 0 ;End of Path -- MUST be here ENDM ENDIF Thå  followinç  flaç enableó ZCPR³ tï perforí  aî  optimizeä patè  searcè wheî iô ió searchinç alonç á patè foò  á  file®  Iæ thió  equatå  ió  TRUE¬  ZCPR³  wilì builä á patè  iî  memorù  oæ absolutå  entrieó  (A1¬  B7¬  etc© froí thå  symboliã  patè  (onå containinç  '$'© whicè ió thå patè iô woulä otherwiså use®  Thió ne÷  patè  woulä  contaiî nï duplicatå  patè  elements¬  wherå  á symboliã patè analysió may® Foò example¬ iæ thå patè is: db 'A'-'@','$' ;disk A, current user db 'A'-'@',15 ;disk A, user 15 db 0 theî iæ thå useò ió loggeä intï A15¬  settinç thå belo÷ equatå tï TRUÅ woulä allo÷ ZCPR³ tï builä thå path: db 'A'-'@',15 ;only one entry db 0 iî  thå analysió oæ thió symboliã path¬  whilå witè  thió  equatå FALSE¬  ZCPR³  maù loç intï A1µ aó manù aó threå timeó (oncå  foò thå  defaulô anä twicå morå foò thå symboliã path© iî lookinç foò á filå whicè ió noô founä beforå iô giveó up® Usinç thió minimuí patè  facilitù  costó  somå  codå iî  ZCPR3¬  buô  iô  speedó  uð processinç noticablù iî somå cases. Enable this equate if MINIMUM PATH SEARCH is to be employed. MINPATH EQU TRUE .pa Š Iî searchinç foò á filå alonç á path¬ ZCPR³ caî bå commandeä tï  alwayó  looë  iî  thå  currenô  logged-iî  directorù   beforå beginninç  thå patè search®  Thió equatå controló thió  feature® Iæ  SCANCUÒ ió seô tï TRUE¬  thå currenô directorù neeä neveò  bå referenceä  iî  á  symboliã patè expressioî  (D  '$','$'©  sincå SCANCUÒ insureó thaô thå currenô directorù ió scanned. Enablå  thió  equatå  iæ  thå currenô DÕ  ió  alwayó  tï  bå scanned. SCANCUR EQU TRUE 4.2.10. DU and DIR Controls Thå  followinç equatå enableó thå appearancå oæ thå  currenô disk/useò  iî  thå ZCPR³ prompt®  Iæ seô tï  FALSE¬  thå  prompô appearó  aó '>§ (assuminç ¾ ió thå currenô valuå oæ CPRMPT)®  Iæ seô tï TRUE¬  thå prompô appearó aó 'd>§ oò 'dn>'®  (seå INCLNDÒ below) INCLDU equ TRUE Thå followinç equatå allowó ZCPR³ tï accepô thå  DUº  prefiø oò logiî forí foò input® Seô thió tï TRUÅ iæ DUº prefiø ió tï bå allowed. Settinç thió equatå tï TRUÅ allowó thå followinç forms: A>B1: A>TYPE B4:FILE.TXT A>B: A>1: ACCPTDU EQU TRUE Thió  equatå enableó ZCPR³ tï procesó DIRº  formó internallù througè thå memory-baseä nameä directorù buffer® Thió equatå anä thå  NDBASÅ addresó shoulä bå TRUÅ (non-zero© iî ordeò tï  enablå ZCPR³ tï procesó nameä directories. If NDINCP is TRUE, the following forms are allowed: A>ROOT: A>TYPE TEXT:FILE.TXT if the other associated equates (below) are set correctly. NDINCP EQU TRUE .pa Š Thå  followinç  equatå wilì causå thå namå  oæ  thå  currenô directorù tï bå displayeä aó parô oæ thå prompô alonç witè thå DÕ forí iæ enabled (seå INCLDÕ above). For example, if INCLNDR is TRUE, the prompt would look like: B7:TEXT> -- if INCLDU is also TRUE TEXT> -- if INCLDU is FALSE INCLNDR EQU TRUE Thå followinç equatå allowó ZCPR³ tï accepô thå DIRº  prefiø oò logiî forí foò input®  Seô thió tï TRUÅ iæ DIRº  prefiø ió tï bå allowed. Setting this equate to TRUE allows the following forms: A>ROOT: A>TYPE TEXT:FILE.TXT ACCPTND EQU TRUE Thå  followinç  equatå determineó thå hierarchù oæ  DU:/DIRº evaluation®  Seô thió tï TRUÅ iæ DUº  ió tï bå testeä foò beforå DIRº oò seô thió tï FALSÅ iæ DIRº ió tï bå testeä foò beforå DU:® Iæ thió ió FALSE¬  nameä directorieó likå Cº (standinç foò à worë areá - NOÔ disë C© arå permitted. Assuminç thaô á directorù foò à programs¬  nameä 'C'¬  anä á rooô directory¬  nameä 'ROOT'¬  exist¬  theî iæ DUFIRSÔ ió seô tï FALSE: A>C: -- logs the user into the directory named 'C' A>ROOT: -- logs the user into the directory named 'ROOT' while if DUFIRST is set to TRUE: A>C: -- logs the user into disk C: (dir C can't be accessed) A>ROOT: -- logs the user into the directory named 'ROOT' DUFIRST EQU FALSE .pa Š Enablå passworä checë oî nameä directorù references®  Iæ  á nameä  directorù ió referenceä anä haó á passworä associateä witè it¬  ZCPR³  wilì asë thå useò foò thió passworä anä  approvå  thå referencå  onlù iæ hå giveó á valiä response®  Onå anä onlù  onå trù  ió permitted®  Settinç thió equatå tï TRUÅ wilì enablå  thå passworä checë facility. PWCHECK EQU TRUE 4.2.11. Command Line Buffer Control Thå  MULTCMÄ equatå enableó thå featurå oæ havinç morå  thaî onå  commanä  oî thå samå line¬  separateä bù á  separatioî  chaò whicè  ió  defineä  bù thå CMDSEÐ equate®  Iæ  thió  featurå  ió enabled¬  thå  commanä linå buffeò anä buffeò pointeró arå  moveä outsidå oæ ZCPR³ aô thå indicateä addresó oæ Z3CL. MULTCMÄ  indicateó  iæ  thå abilitù tï havå  morå  thaî  onå commanä  oî á linå ió tï bå enabled¬  anä CMDSEÐ ió thå characteò useä tï separatå theså commands®  Foò example¬  iæ CMDSEÐ ió ';§ anä MULTCMÄ ió TRUE¬ theî commandó likå thió arå possible: ERA *.BAK;DIR IF Z3CL NE 0 MULTCMD equ TRUE ELSE MULTCMD equ FALSE ENDIF CMDSEP equ ';' .pa Š 4.2.12. CMDRUN -- ZCPR3 Extended Command Processing Thió equatå enableó thå ZCPR³ CMDRUÎ facility® Iæ CMDRUÎ ió TRUE¬  theî anotheò stagå oæ commanä processinç ió invokeä shoulä ZCPR³  faiì  tï finä á COÍ filå wheî thå useò  giveó  á  command® Thió stagå involveó invokinç thå COÍ filå specifieä bù CMDFC anä givinç iô thå currenô commanä linå aó aî argument®  Iî thió way¬ if¬  say¬  M8° PROG² failó aó á command¬ á ne÷ commanä likå LRUNÚ M8° PROG2¬  SU M8° PROG2¬ oò ZEØ M8° PROG² maù bå processed® Iæ thå ne÷ commanä fails¬ aî appropriatå erroò messagå ió given. Thå  ROOTONLÙ optioî causeó ZCPR³ tï onlù looë aô  thå  Rooô (bottoí  oæ path© foò thå Extendeä Commanä Processoò iæ iô ió seô tï  TRUE®  Iæ iô ió seô tï FALSE¬  thå patè ió searcheä foò  thå Extendeä Commanä Processor® Thå tradeofæ herå ió thaô ROOTONLÙ ½ TRUÅ ió lesó flexiblå buô somewhaô fasteò thaî ROOTONLÙ ½ FALSE. CMDRUN equ FALSE ; Enable the Facility if CMDRUN ROOTONLY equ TRUE ; TRUE if look at Root Only for Extended ; Command Processor, FALSE if look along ; path CMDFCB MACRO db 0 db 'CMDRUN ' ;Name of Program db 'COM' ;File Type ENDM endif ;CMDRUN 4.2.13. Flow Command Facility Thió  equatå  enableó  ZCPR³ tï responä  tï  IÆ  processing® ZCPR³ simplù flusheó commandó iæ á FALSÅ IÆ ió currentlù engaged® FCPó musô bå enableä foò IFOÎ tï worë correctly. IFON EQU TRUE .pa Š 4.2.14. Miscellaneous Equates MAXUSR EQU 31 ;MAXIMUM USER NUMBER ACCESSABLE MAXDISK EQU 4 ;MAXIMUM NUMBER OF DISKS ACCESSABLE Thå DÕ forí wilì onlù bå alloweä tï referencå diskó anä useò areaó uð tï thå indicateä maximuí values® Theså limits¬ however¬ dï noô applù tï nameä directories®  Foò instance¬  iæ MAXUSÒ waó 2° anä thå namå SPECIAÌ waó equateä tï B31¬ theî 'SPECIAL:§ woulä bå  resolveä  correctlù buô 'B31:§ woulä causå aî  error®  Nameä directorieó caî havå passworä protectioî associateä witè them¬ sï B3±  caî bå á directorù whicè ió accesseä onlù iæ thå useò  knowó thå passworä foò it. SUPRES EQU TRUE ;SUPRESSES USER # REPORT FOR USER 0 Iæ  yoõ  arå loggeä intï B0:¬  theî thå  prompô  woulä  looë something like: B> if SUPRES is TRUE B0> if SUPRES is FALSE SPRMPT EQU '$' ;CPR PROMPT INDICATING SUBMIT COMMAND CPRMPT EQU '>' ;CPR PROMPT INDICATING USER COMMAND With these values: B1> appears for commands typed by the user B1$ appears for commands input from a submit file NUMBASE EQU 'H' ;CHAR USED TO SWITCH FROM DEFAULT ;NUMBER BASE Thió  optioî applieó tï thå SAVÅ commanä only®  Iô  permitó forms like: SAVE 17 myfile.bin 17 is decimal SAVE 11H myfile.bin 11H is hexadecimal Thió  featurå ió handù iî thaô valueó outpuô bù tooló likå DDÔ dï noô  neeä tï bå converteä tï hexadecimaì beforå thå SAVÅ  commanä can be used. CURIND EQU '$' ;SYMBOL FOR CURRENT DISK OR USER COMMENT EQU ';' ;LINES BEGINNING WITH THIS CHAR ;ARE COMMENTS .pa Š 4.3. Step 5: Overlaying the old BIOS and the CCP Thå  procedurå  foò overlayinç thå olä BIOÓ ió thå  samå  aó witè  conventionaì  CP/M®  Thå  relativå offseô  foò  thå  ZCPR³ Commanä  Processoò Replacemenô wilì bå thå samå aó thaô useä  foò thå BIOS®  Refeò tï thå manuaì publisheä bù Digitaì Researcè foò more detail. Aî  examplå  oæ  thió procedurå ió provideä  iî  thå  samplå session which follows. 4.4. Step 6: Implanting the Operating System Image Oncå  everythinç  ió overlayeä iî thå memorù  imagå  oæ  thå system¬  SYSGEΠ ió usuallù useä tï implanô thå operatinç  systeí imagå  oî  thå systeí trackó oæ thå disk®  Refeò tï  thå  manuaì published by Digital Research for more detail. Aî  examplå  oæ  thió procedurå ió provideä  iî  thå  samplå session which follows. 4.5. Sample Session Thå  followinç directorù displaù showó thå fileó wå wilì  bå workinç   with®   Notå   thaô  Z3BASE.LI  anä   Z3HDR.LI   arå instrumentaì  tï  thå  installatioî oæ almosô alì oæ  thå  Systeí Segmentó  -- Z3BASE.LI  anä  Z3HDR.LI arå reaä iî  bù  thå  MAà assembler during the assembly process. B11>xd /oa XD III Version 1.2 Filename.Typ Size K Filename.Typ Size K Filename.Typ Size K -------- --- ------ -------- --- ------ -------- --- ------ CBIOSZ .ASM 56 SYSRCP .ASM 44 SYSNDR .LIB 4 SYSENV .ASM 4 ZCPR3 .ASM 68 SYSRCP .LIB 12 SYSFCP .ASM 20 CBIOSHDR.LIB 12 Z3BASE .LIB 12 SYSIOP .ASM 32 SYSENV .LIB 4 Z3HDR .LIB 20 SYSNDR .ASM 4 SYSFCP .LIB 8 B 11: -- 14 Files Using 300K ( 2328K Left) .pa Š 4.5.1. Assembling SYSENV Thå followinç illustrateó thå assemblù oæ SYSENÖ tï  producå thå SYS.ENÖ file® Thió filå wilì bå thå ZCPR³ Systeí Environmenô Descriptor. B11>zex mac sysenv ZEX, Version 3.0 B11> ZEX: ; B11> ZEX: ; MAC -- CP/M Standard MACRO Assembler and Loader B11> ZEX: ; B11> ZEX: ; Suppress FALSE IF Printout B11> ZEX: ; B11> ZEX: IF NUL SYSENV B11> ZEX: MAC SYSENV $-S PZ CP/M MACRO ASSEM 2.0 0200 01AH USE FACTOR END OF ASSEMBLY B11> ZEX: IF INPUT Abort if Errors Exist IF True? B11> ZEX: ERA SYSENV.BAK ;NOTE Cleanup No Files B11> ZEX: ERA SYSENV.COM No Files B11> ZEX: MLOAD SYSENV ;NOTE Load Hex File MLOAD ver. 1.4 Copyright (C) 1983 Ronald G. Fowler Loaded 172 bytes (00ACH - 2 records) to file B:SYSENV.COM Start address: 0100H Ending address: 01ADH Bias: 0000H B11> ZEX: FI B11> ZEX: ERA SYSENV.HEX SYSENV .HEX B11> ZEX: FI B11> ZEX: ; B11> ZEX: ; Assembly Complete B11> ZEX: ; B11> ZEX: Done> B11>ren sys.env=sysenv.com .pa Š 4.5.2. Assembling SYSNDR B11>zex mac sysndr ZEX, Version 3.0 B11> ZEX: ; B11> ZEX: ; MAC -- CP/M Standard MACRO Assembler and Loader B11> ZEX: ; B11> ZEX: ; Suppress FALSE IF Printout B11> ZEX: ; B11> ZEX: IF NUL SYSNDR B11> ZEX: MAC SYSNDR $-S PZ CP/M MACRO ASSEM 2.0 01EB 005H USE FACTOR END OF ASSEMBLY B11> ZEX: IF INPUT Abort if Errors Exist IF True? B11> ZEX: ERA SYSNDR.BAK ;NOTE Cleanup No Files B11> ZEX: ERA SYSNDR.COM No Files B11> ZEX: MLOAD SYSNDR ;NOTE Load Hex File MLOAD ver. 1.4 Copyright (C) 1983 Ronald G. Fowler Loaded 235 bytes (00EBH - 2 records) to file B:SYSNDR.COM Start address: 0100H Ending address: 01EAH Bias: 0000H B11> ZEX: FI B11> ZEX: ERA SYSNDR.HEX SYSNDR .HEX B11> ZEX: FI B11> ZEX: ; B11> ZEX: ; Assembly Complete B11> ZEX: ; B11> ZEX: Done> B11>ren sys.ndr=sysndr.com .pa Š 4.5.3. Assembling SYSIOP B11>zex mac sysiop ZEX, Version 3.0 B11> ZEX: ; B11> ZEX: ; MAC -- CP/M Standard MACRO Assembler and Loader B11> ZEX: ; B11> ZEX: ; Suppress FALSE IF Printout B11> ZEX: ; B11> ZEX: IF NUL SYSIOP B11> ZEX: MAC SYSIOP $-S PZ CP/M MACRO ASSEM 2.0 F0AA 016H USE FACTOR END OF ASSEMBLY B11> ZEX: IF INPUT Abort if Errors Exist IF True? B11> ZEX: ERA SYSIOP.BAK ;NOTE Cleanup No Files B11> ZEX: ERA SYSIOP.COM No Files B11> ZEX: MLOAD SYSIOP ;NOTE Load Hex File MLOAD ver. 1.4 Copyright (C) 1983 Ronald G. Fowler Loaded 1192 bytes (04A8H - 10 records) to file B:SYSIOP.COM Start address: EC00H Ending address: F0A7H Bias: 0000H ++ Warning: program origin NOT at 100H ++ B11> ZEX: FI B11> ZEX: ERA SYSIOP.HEX SYSIOP .HEX B11> ZEX: FI B11> ZEX: ; B11> ZEX: ; Assembly Complete B11> ZEX: ; B11> ZEX: Done> B11>ren sys.iop=sysiop.com .pa Š 4.5.4. Assembling SYSRCP B11>zex mac sysrcp ZEX, Version 3.0 B11> ZEX: ; B11> ZEX: ; MAC -- CP/M Standard MACRO Assembler and Loader B11> ZEX: ; B11> ZEX: ; Suppress FALSE IF Printout B11> ZEX: ; B11> ZEX: IF NUL SYSRCP B11> ZEX: MAC SYSRCP $-S PZ CP/M MACRO ASSEM 2.0 EBF1 017H USE FACTOR END OF ASSEMBLY B11> ZEX: IF INPUT Abort if Errors Exist IF True? B11> ZEX: ERA SYSRCP.BAK ;NOTE Cleanup No Files B11> ZEX: ERA SYSRCP.COM No Files B11> ZEX: MLOAD SYSRCP ;NOTE Load Hex File MLOAD ver. 1.4 Copyright (C) 1983 Ronald G. Fowler Loaded 2027 bytes (07EBH - 16 records) to file B:SYSRCP.COM Start address: E400H Ending address: EBEEH Bias: 0000H ++ Warning: program origin NOT at 100H ++ B11> ZEX: FI B11> ZEX: ERA SYSRCP.HEX SYSRCP .HEX B11> ZEX: FI B11> ZEX: ; B11> ZEX: ; Assembly Complete B11> ZEX: ; B11> ZEX: Done> B11>ren sys.rcp=sysrcp.com .pa Š 4.5.5. Assembling SYSFCP B11>zex mac sysfcp ZEX, Version 3.0 B11> ZEX: ; B11> ZEX: ; MAC -- CP/M Standard MACRO Assembler and Loader B11> ZEX: ; B11> ZEX: ; Suppress FALSE IF Printout B11> ZEX: ; B11> ZEX: IF NUL SYSFCP B11> ZEX: MAC SYSFCP $-S PZ CP/M MACRO ASSEM 2.0 F3F3 00CH USE FACTOR END OF ASSEMBLY B11> ZEX: IF INPUT Abort if Errors Exist IF True? B11> ZEX: ERA SYSFCP.BAK ;NOTE Cleanup No Files B11> ZEX: ERA SYSFCP.COM No Files B11> ZEX: MLOAD SYSFCP ;NOTE Load Hex File MLOAD ver. 1.4 Copyright (C) 1983 Ronald G. Fowler Loaded 499 bytes (01F3H - 4 records) to file B:SYSFCP.COM Start address: F200H Ending address: F3F2H Bias: 0000H ++ Warning: program origin NOT at 100H ++ B11> ZEX: FI B11> ZEX: ERA SYSFCP.HEX SYSFCP .HEX B11> ZEX: FI B11> ZEX: ; B11> ZEX: ; Assembly Complete B11> ZEX: ; B11> ZEX: Done> B11>ren sys.fcp=sysfcp.com .pa Š 4.5.6. Creating MYTERM.Z3T via TCSELECT B11>tcselect myterm TCSELECT, Version 1.0 ** Terminal Menu 1 for Z3TCAP Version 1.1 ** A. AA Ambassador K. Concept 100 B. ADDS Consul 980 L. Concept 108 C. ADDS Regent 20 M. CT82 D. ADDS Viewpoint N. DEC VT52 E. ADM 2 O. DEC VT100 F. ADM 31 P. Dialogue 80 G. ADM 3A Q. Direct 800/A H. ADM 42 R. General Trm 100A I. Bantam 550 S. Hazeltine 1420 J. CDC 456 T. Hazeltine 1500 Enter Selection, + for Next, or ^C to Exit - + ** Terminal Menu 2 for Z3TCAP Version 1.1 ** A. Hazeltine 1510 K. P Elmer 1200 B. Hazeltine 1520 L. SOROC 120 C. H19 (ANSI Mode) M. Super Bee D. H19 (Heath Mode) N. TAB 132 E. HP 2621 O. Teleray 1061 F. IBM 3101 P. Teleray 3800 G. Micro Bee Q. TTY 4424 H. Microterm ACT IV R. TVI 912 I. Microterm ACT V S. TVI 920 J. P Elmer 1100 T. TVI 950 Enter Selection, - for Last, + for Next, or ^C to Exit - T Selected Terminal is: TVI 950 -- Confirm (Y/N)? Y File MYTERM .Z3T Created .pa Š 4.5.7. Recap Tï  recap¬  thå maiî Systeí Segmentó whicè wilì bå loadeä bù thå  LDÒ utilitù havå no÷ beeî created®  Theså  Systeí  Segmentó are: B11>xd sys.* oa XD III Version 1.2 Filename.Typ Size K Filename.Typ Size K Filename.Typ Size K -------- --- ------ -------- --- ------ -------- --- ------ SYS .ENV 4 SYS .IOP 4 SYS .RCP 4 SYS .FCP 4 SYS .NDR 4 B 11: -- 5 Files Using 20K ( 2304K Left) B11>xd myterm.z3t oa XD III Version 1.2 Filename.Typ Size K Filename.Typ Size K Filename.Typ Size K -------- --- ------ -------- --- ------ -------- --- ------ MYTERM .Z3T 4 B 11: - 1 Files Using 4K ( 2304K Left) 4.5.8. Assembling the CBIOS Thå  followinç  illustrateó thå assemblù oæ  thå  Customizeä Basiã  Input/Outpuô  Systeí  (CBIOS)®  CBIOÓ  haó  alreadù  beeî customizeä  sï  thaô  itó Colä Booô routinå performó  thå  propeò initializations of buffers required by the ZCPR3 System. B11>mac cbiosz $-s pz CP/M MACRO ASSEM 2.0 E3CE 01FH USE FACTOR END OF ASSEMBLY 4.5.9. Assembling the ZCPR3 Command Processor Replacement Thå followinç illustrateó thå assemblù oæ thå ZCPR³  Commanä Processoò  Replacement®   Alì customizatioî haó beeî donå iî  thå files Z3BASE.LIB and Z3HDR.LIB. B11>mac zcpr3 $-s pz CP/M MACRO ASSEM 2.0 C7E9 01EH USE FACTOR END OF ASSEMBLY .pa Š 4.5.10. Obtaining the Operating System Image Thå followinç SYSGEÎ pulló thå Operatinç Systeí Imagå ofæ oæ thå  Systeí Tracks®  Iæ yoõ arå installinç á ZCPR³  Systeí  froí scratch¬ yoõ shoulä bå runninç á CP/Í systeí whicè haó beeî moveä dowî tï allo÷ spacå foò thå ZCPR³ bufferó iî higè memory® MOVCPÍ caî  usuallù  bå  useä tï dï thió (MOVCPÍ ió provideä  witè  youò system as a CP/M utility). Iî  thió  example¬  thå sizå oæ thå CP/Í systeí  whicè  thió versioî  oæ  ZCPR³ waó builô oî ió thå samå aó thå  sizå  oæ  thå ZCPR³ whicè ió beinç built® Botè havå thå samå sizå oæ Transienô Program Area (TPA). Thå  followinç commanä pulló thå Operatinç Systeí Imagå  ofæ of the System Tracks: B11>sysgen SYSGEN VER 2.2 SOURCE DRIVE NAME (OR RETURN TO SKIP)a SOURCE ON A, THEN TYPE RETURN FUNCTION COMPLETE DESTINATION DRIVE NAME (OR RETURN TO REBOOT) B11>save 45 cpm.bin Wå  no÷  havå  á filå nameä CPM.BIÎ oî disk®  Thió  ió  thå Operatinç  Systeí Image®  Notå thaô thå "45¢ abovå ió  á  numbeò uniquå  tï mù systeí anä iô maù bå differenô foò thå  installer'ó system. .pa Š 4.5.11. Patching the CP/M System Image Thå followinç illustrateó thå techniquå oæ patchinç thå CP/Í Operatinç Systeí Image® Thå CCÐ ió replaceä bù ZCPR³ (ZCPR3.HEX© anä thå BIOÓ ió replaceä bù CBIOÓ (CBIOS.HEX). Iî  thió example¬  thå CP/Í Operatinç Systeí Imagå beginó aô 1100H® Thió maù bå differenô oî thå systeí beinç installed. B11>ddt cpm.bin DDT VERS 2.0 NEXT PC 2E00 0100 Thå followinç commanä displayó thå CCÐ area®  Youò  displaù wilì probablù noô bå thå samå aó thió (É waó runninç ZCPR³ aô thå timå  thió  displaù  waó  created)¬   buô  thå  installeò  shoulä recognizå thå twï openinç JMÐ instructionó aó á keù tï beinç surå that the CCP is indeed at this location. -d1100 111f 1100 C3 3E C0 C3 3E C0 43 4F 4D 01 24 24 24 20 20 20 .>..>.COM.$$$ 1110 20 20 53 55 42 00 00 00 00 00 00 00 00 00 00 00 SUB........... Thå followinç Zeroeó ouô thå CCÐ areá [É prefeò tï dï thió - just in case!]. -f1100 18ff 0 No÷  thå  ZCPR³ Commanä Processoò Replacemenô ió reaä iî  oî toð  oæ thå CCÐ area®  Thå offseô herå ió 5100¬  anä iô  maù  bå differenô foò thå systeí beinç installed®  Afteò thå read-in¬  á dump is done to make sure the image was loaded properly. -izcpr3.hex -r5100 NEXT PC 2E00 0000 -d1100 111f 1100 C3 3E C0 C3 3E C0 43 4F 4D 01 24 24 24 20 20 20 .>..>.COM.$$$ 1110 20 20 53 55 42 00 00 00 00 00 00 00 00 00 00 00 SUB........... Thå followinç commanä displayó thå BIOÓ area®  Youò displaù wilì  probablù noô bå thå samå aó this¬  buô thå installeò shoulä recognizå thå twï openinç JMÐ instructionó aó á keù tï beinç surå thaô thå BIOÓ ió indeeä aô thió location. -d2700 270f 2700 C3 CC D6 C3 70 D7 C3 0C EC C3 39 D6 C3 3F D6 C3 ....p.....9..?.. .pa Š Thå followinç Zeroeó ouô thå BIOÓ areá [É prefeò tï dï  thió - jusô iî case!]. -f2700 2dff 0 No÷  thå  CBIOÓ  ió reaä iî oî toð oæ thå  BIOÓ  area®  Thå offseô herå ió 5100¬ anä iô maù bå differenô foò thå systeí beinç installed®  Afteò thå read-in¬  á dumð ió donå tï makå surå  thå imagå waó loadeä properly. -icbiosz.hex -r5100 NEXT PC 2E00 0000 -d2700 274f 2700 C3 CC D6 C3 70 D7 C3 0C EC C3 39 D6 C3 3F D6 C3 ....p.....9..?.. 2710 15 EC C3 18 EC C3 1B EC C3 C3 D7 C3 04 D8 C3 C5 ................ 2720 D7 C3 B7 D7 C3 BD D7 C3 F6 D8 C3 EF D8 C3 1E EC ................ 2730 C3 CA D7 C3 1B FC C3 21 EC CD 64 D9 C3 0F EC C5 .......!..d..... 2740 CD 64 D9 C1 C3 12 EC CD 0C EC B7 C4 0F EC 21 80 .d............!. -^C Thå  followinç  SAVÅ placeó thå ne÷ ZCPR³  Operatinç  Systeí Image on disk. B11>save 46 zcpr3.bin Jusô  tï double-check¬  thå imagå ió reloadeä anä thå enä oæ the CBIOS is displayed to make sure the image is complete. B11>ddt zcpr3.bin DDT VERS 2.0 NEXT PC 2E00 0100 -d2dc0 2dff 2DC0 00 00 00 00 00 00 F8 E0 00 00 03 E3 B8 E2 00 00 ................ 2DD0 00 00 00 00 00 00 F8 E0 00 00 8E E3 43 E3 45 6E ............C.En 2DE0 64 20 6F 66 20 43 42 49 4F 53 5A 00 00 00 00 00 d of CBIOSZ..... 2DF0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ -^C 4.5.12. Placing the Operating System Image Thå followinç no÷ placeó thå Operatinç Systeí Imagå ontï thå systeí  trackó  oæ thå desireä disks®  Notå thaô thió  imagå  ió memory-residenô  froí thå previouó executioî oæ DDT®  Writå  ouô thå imagå oî aó manù tesô diskó aó desired. B11>sysgen SYSGEN VER 2.2 SOURCE DRIVE NAME (OR RETURN TO SKIP) DESTINATION DRIVE NAME (OR RETURN TO REBOOT)B ... åååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååå5. S T E P 7 : S Y S T E M S E G M E N T S  Thå  selectioî oæ thå configuratioî optionó foò thå  variouó System Segments of ZCPR3 is described here in some detail. 5.1. Resident Command Packages Thå  followinç  ió á reformatteä duplicatå oæ thå bodù oæ  á SYSRCP.LI  file®  Iô  ió provideä herå  tï  presenô  additionaì informatioî  oî ho÷ tï seô thå equates®  Iô maù bå usefuì tï thå installeò  tï havå thió installatioî manuaì opeî tï  theså  pageó whilå hå ió editinç thió file. Eacè   entrù  foò  thå  residenô  commandó  mentionó   theiò transienô prograí counterparts®  Theså utilitieó usuallù providå capabilitieó  whicè exceeä thoså oæ thå programó iî thå  Residenô Commanä Package¬ buô thå tradeofæ ió thaô eacè utilitù prograí ió á  separatå filå oî disë whicè usuallù occupieó morå  disë  spacå thaî aî entirå RCP®  Iî essence¬ thå RCÐ commandó providå quick¬ convenienô capabilitieó tï thå user¬  anä thå transienô utilitieó providå  mucè  greateò flexibilitù anä utilitù tï thå  user®  Iî mosô reasonablå ZCPR³ Systems¬ botè facilitieó arå available. SYSTEM SEGMENT: SYS1.RCP SYSTEM: ZCPR3 WRITTEN BY: RICHARD CONN PROGRAM HEADER: SYSRCP.LIB AUTHOR: RICHARD CONN Thió  prograí headeò selectó thå commandó tï bå incorporateä intï SYS.RCP® Iô alsï allowó selectioî oæ somå optionó foò theså commands. IDENTIFICATION Thå followinç IÄ ió á singlå character¬  displayeä aó á parô oæ thå RCÐ ID¬ whicè distinguisheó thió RCÐ froí otheró madå froí thå samå baså filå (SYSRCP.ASM). RCPID EQU 'A' Witè thå potentiaì oæ severaì RCPó beinç generateä froí thió onå  file¬  RCPIÄ ió usefuì iî identifyinç whicè RCÐ ió currentlù loadeä tï thå user®  Thå È command¬ builô intï everù RCP¬ printó ouô thå versioî numbeò oæ thå RCP¬ includinç thå RCPIÄ character¬ as well as the names of the commands contained within the RCP. .pa Š 5.1.1. CP Command TRANSIENT COUNTERPART: MCOPY Thå  followinç equatå determineó iæ thå CÐ commanä  ió  madå available® Settinç thió equatå tï TRUÅ enableó thå CÐ command. Thå  CР commanä copieó onå filå froí onå DÕ tï  anotheò  oò intï thå samå DÕ undeò á differenô name® Thå syntaø is: CP dir:ufn=dir:ufn Examples: CP f1.txt=f2.txt CP a15:=f1.txt CP a15:f2.txt=c5:f1.txt CPON EQU TRUE 5.1.2. DIR Command TRANSIENT COUNTERPART: DIR, XD, XDIR Thå  followinç equatå determineó iæ thå DIÒ commanä ió  madå available® Settinç thió equatå tï TRUÅ enableó thå DIÒ command. Thå   DIÒ  commanä  displayó  thå  directorù  oæ  fileó   iî alphabeticaì ordeò acrosó thå lineó tï thå user® Thå syntaø is: DIR dir:afn Examples: DIR b7: DIR root:*.com DIRON EQU FALSE Thå DIÒ commanä allowó twï options®  Onå ió á flaç tï  telì iô tï looë aô botè Systeí anä Non-Systeí files¬  anä thå otheò ió á flaç tï telì iô tï looë onlù aô Systeí files®  Bù default¬ DIÒ lookó aô Non-Systeí files. SYSFLÇ defineó thå characteò useä tï instrucô DIÒ tï looë aô botè  Systeí anä Non-Systeí files®  Thå recommendeä valuå ió 'A§ foò All. SOFLÇ defineó thå characteò useä tï instrucô DIÒ tï looë  aô onlù Systeí files® Thå recommendeä valuå ió 'S§ foò System. SYSFLG EQU 'A' SOFLG EQU 'S' .pa Š Thå  followinç  equatå determineó iæ thå directorù  displayó arå sorteä bù filenamå anä filetypå oò bù filetypå anä  filename® Seô  SORTNÔ  tï TRUÅ tï sorô bù namå anä type¬  FALSÅ tï sorô  bù typå anä name. SORTNT EQU TRUE Thå followinç equateó definå somå featureó oæ thå  directorù display®  Iæ  WIDÅ  ió TRUE¬  thå filå nameó arå spaceä  fartheò abort»  iæ  WIDÅ ió FALSE¬  theù arå closeò togetheò (foò  á  64- columî  display)®  FENCÅ defineó thå characteò useä tï  separatå thå filå namå entrieó iî thå display. WIDE EQU TRUE FENCE EQU '|' 5.1.3. ERA Command TRANSIENT COUNTERPART: ERASE Thå  followinç equatå determineó iæ thå ERÁ commanä ió  madå available® Settinç thió equatå tï TRUÅ enableó thå ERÁ command. The ERA command erases files. The syntax is: ERA dir:afn or: ERA dir:afn I -- Inspect Examples: ERA b7:*.bak ERA text:*.tmp i ERAON EQU TRUE .pa Š 5.1.4. LIST and TYPE Commands TRANSIENT COUNTERPART: PRINT and PAGE Thå  followinç  equatå  determineó  iæ  thå  LISÔ  anä  TYPÅ commandó arå madå available® Settinç thió equatå tï TRUÅ enableó theså commands. Thå  LISTOΠ equatå  caî disablå thå  LISÔ  commanä  withouô affectinç thå TYPÅ command. Thå  TYPÅ commanä displayó á grouð oæ fileó oî thå CRÔ whilå thå  LISÔ commanä printó á grouð oæ fileó oî  thå  Printer®  Thå syntaø is: TYPE dir:afn -or- LIST dir:afn Examples: TYPE b7:*.asm LIST text:*.txt LTON EQU TRUE LISTON EQU TRUE TYPÅ caî bå madå tï pagå oò noô pagå bù default®  Iæ PGDFLÔ ió  TRUE¬  TYPÅ  pageó bù defaulô anä doeó noô pagå iæ thå  PGFLÇ characteò (recommendeä tï bå 'P'© ió used®  Iæ PGDFLÔ ió  FALSE¬ TYPÅ  pageó onlù wheî thå PGDFLÇ characteò ió seeî iî thå commanä line. PGDFLT EQU TRUE PGDFLG EQU 'P' NLINEÓ defineó thå numbeò oæ lineó oî thå user'ó CRÔ screen® Thió ió usuallù 24. NLINES EQU 24 .pa Š 5.1.5. PEEK and POKE Commands TRANSIENT COUNTERPART: None (Subset of DDT) Thå  followinç  equateó  determinå  iæ  thå  PEEË  anä  POKÅ commandó  arå  madå  available®  Settinç theså equateó  tï  TRUÅ enableó theså commands. Thå  PEEË  commanä  allowó thå useò tï examinå  á  chunë  oæ memory®  Iæ thå useò simplù typeó "P¢ witè nï address¬  thå nexô 25¶  byteó  oæ  memorù  arå displayed®  Iæ  thå  useò  typeó  "Ð address"¬  25¶ byteó oæ memorù startinç aô thå indicateä  addresó arå displayed® Iæ thå useò typeó "Ð addr± addr2"¬ memorù iî thió addresó rangå ió displayed® Thå syntax: P or: P address or: P addr1 addr2 Thå  POKÅ commanä allowó thå useò tï changå thå  contenô  oæ memory®  Thå useò musô specifù aî addresó tï POKE¬ anä twï basiã formó arå allowed: POKE address val1 val2 ... valn and: POKE address "character string Thå  twï  formó  maù  bå intermixeä witè  leadinç  valueó  anä  á trailinç characteò string: POKE address val1 val2 ... valn "character string Examples: P P f400 P f400 f425 POKE f400 0 1 2 POKE f400 "this is a test POKE f400 1 2 3 "hello, world PEEKON EQU TRUE POKEON EQU TRUE .pa Š 5.1.6. PROT Command TRANSIENT COUNTERPART: PROTECT Thå  followinç equatå determineó iæ thå PROÔ commanä ió madå available® Settinç thió equatå tï TRUÅ enableó thå PROÔ command. Thå  PROÔ commanä setó thå filå protectioî attributeó foò  á grouð  oæ files®  Thå R/Ï anä Systeí attributeó maù bå seô  witè thå  Ò anä Ó options¬  resp¬  giveî iî anù ordeò aó "RS¢ oò "SR"® Omissioî  oæ  onå  oæ theså optionó  toggleó  thå  oppositå  (ie¬ omissioî oæ Ò makeó thå fileó R/W)® Thå syntax: PROT dir:afn or: PROT dir:afn R or: PROT dir:afn S or: PROT dir:afn RS -or- PROT dir:afn SR Examples: PROT b7:*.com rs PROT text:*.txt PROTON EQU TRUE 5.1.7. REN Command TRANSIENT COUNTERPART: RENAME Thå  followinç equatå determineó iæ thå REÎ commanä ió  madå available® Settinç thió equatå tï TRUÅ enableó thå REÎ command. Thå  REΠ commanä changeó thå namå oæ onå filå  tï  another® Thå syntax: REN dir:ufn1=ufn2 Examples: REN newfile.txt=oldfile.txt REN root:sys.rcp=sys1.rcp RENON EQU TRUE .pa Š 5.1.8. REG Command TRANSIENT COUNTERPART: REG Thå  followinç equatå determineó iæ thå REÇ commanä ió  madå available® Settinç thió equatå tï TRUÅ enableó thå REÇ command. The REG command forms are: REG D or REG = display values of all registers REG Mreg = subtract 1 from register (Minus) REG Preg = add 1 to register (Plus) REG Sreg value = set value of indicated register Á registeò ió á ZCPR³ registeò buffer¬  indicateä bù á digiô froí ° tï 9. Examples: REG S0 4 -- reg 0 = 4 REG S5 -- reg 5 = 0 REG P -- reg 0 = reg 0 + 1 REG P5 -- reg 5 = reg 5 + 1 REG M9 -- reg 9 = reg 9 - 1 REG D -- show values REG -- show values REGON EQU FALSE 5.1.9. WHL Command TRANSIENT COUNTERPART: WHEEL Thå  followinç equatå determineó iæ thå WHÌ commanä ió  madå available® Settinç thió equatå tï TRUÅ enableó thå WHÌ command. Thå WHÌ commanä ió useä tï turî ofæ thå Wheeì Bytå (makå thå useò non-priveleged© oò tï turî oî thå Wheeì Bytå (makå thå  useò priveleged)® Thå syntaø is: WHL -- make user non-priveleged or: WHL password -- make user priveleged Also¬  thió equatå enableó thå WHLÑ command¬  whicè displayó thå statå oæ thå Wheeì Byte® Thå syntaø is: WHLQ Examples: WHL WHL mypass WHLQ WHLON EQU FALSE Š Thå  followinç equatå defineó thå passworä tï bå useä bù thå WHÌ  command®  Iô musô alwayó bå ¸ byteó lonç  (trailinç  spaceó allowed© anä musô bå upper-case. WPASS MACRO DB 'SYSTEM ' ;8 characters ENDM Thå Wheeì equatå tablå enableó thå WHEEÌ facilitù oæ  ZCPR3® Witè  thió  facility¬  á WHEEÌ BYTE¬  whicè existó  somewherå  iî memory¬  ió  examineä beforå á seô oæ installer-selecteä commandó arå  executed®  Iæ  thió  bytå ió noô  zero¬  theî  thå  commanä proceeds®  Iæ  iô ió zero¬  theî thå commanä ió noô  alloweä  tï proceeä anä ió exiteä witè aî erroò message. Thå  followinç  seô oæ equateó makå eacè  oæ  thå  indicateä commandó  selectablå  tï responä tï thå Wheeì Bytå oò  not®  Foò instance¬  iæ WERA=TRUE¬  theî iô respondó tï thå Wheeì Byte»  iæ WERA=FALSE¬ iô doeó not. Theså  optionó  wilì  onlù bå effectivå iæ á Wheeì  Bytå  ió Defineä (Z3WHÌ NÅ 0) WCP equ FALSE ;Make CP a Wheel-Oriented Command WDIR equ FALSE ; " DIR " " " " WERA equ FALSE ; " ERA " "  " " WLIST equ FALSE ; " LIST " " " " WPEEK equ FALSE ; " PEEK " " " " WPOKE equ FALSE ; " POKE " " " " WPROT equ FALSE ; " PROT " " " " WREG equ FALSE ; " REG " " " " WREN equ FALSE ; " REN " " " " WTYPE equ FALSE ; " TYPE " " " " WHEEL set WCP OR WDIR OR WERA OR WLIST OR WPEEK OR WPOKE WHEEL set WHEEL OR WPROT OR WREG OR WREN OR WTYPE .pa Š 5.1.10. NOTE Command TRANSIENT COUNTERPART: NOTE NOTÅ  ió simplù á NOÐ (dï nothing© commanä whicè caî bå useä tï placå commentó intï multiplå commanä lines®  Foò instance¬ iî thå followinç line: dir *.com;note this is a dir display;era *.bak thå DIÒ anä ERÁ commandó perforí normally¬  anä NOTÅ simplù  doeó nothinç verù efficiently. Settinç  thå  followinç  equatå  tï TRUÅ  enableó  thå  NOTÅ Command. NOTEON EQU TRUE Thå  NOTÅ  commanä  ió verù convenienô iî  thå  creatioî  oæ commenteä   displayó  anä  commanä  files®   Iô   ió   generallù recommendeä  tï  implemenô  thió commanä aó  á  residenô  commanä withiî  thå ZCPR³ Commanä Processoò itselæ ratheò thaî withiî  aî RCР sincå thå ZCPR³ Commanä Processoró tenä tï havå morå rooí tï sparå  thaî RCPó anä iô ió frequentlù desirablå tï savå  aó  mucè space within an RCP as possible. 5.1.11. ECHO Command TRANSIENT COUNTERPART: ECHO The following equate enables the ECHO command. ECHÏ  ió usefuì iî issuinç botè messageó (tï thå  user¬  saù withiî  á  commanä filå durinç execution© anä  escapå  sequences® ECHÏ  caî senä itó outpuô tï thå consolå (bù default© oò  tï  thå printeò (iæ thå firsô non-blanë characteò ió á dollaò sign)®  Iô useó  BIOÓ calls¬  sï alì controì characteró arå passeä  exactly® Hence¬  console-leveì  programminç  oæ  sucè  deviceó  (CRTó  anä Printers© ió possible. Thå  ECHOLSÔ equatå determineó iæ ECHÏ ió alloweä tï  direcô itó outpuô tï thå printer®  Iæ ECHOLSÔ ió TRUE¬  ECHÏ maù direcô itó outpuô tï thå printeò viá thå ¤ prefiø characteò iî thå text. ECHOON EQU TRUE ECHOLST EQU TRUE Thå  ECHÏ transienô ió noô verù large¬  anä iô ió frequentlù morå  convenienô tï havå ECHÏ implementeä iî  aî  RCP®  However¬ sincå  spacå  withiî RCPó ió frequentlù aô á premium¬  iô maù  bå necessarù tï emploù thå ECHÏ transient. .pa Š 5.2. Flow Command Packages Thå  followinç  ió á reformatteä duplicatå oæ thå bodù oæ  á SYSFCP.LI  file®  Iô  ió provideä herå  tï  presenô  additionaì informatioî  oî ho÷ tï seô thå equates®  Iô maù bå usefuì tï thå installeò  tï havå thió installatioî manuaì opeî tï  theså  pageó whilå hå ió editinç thió file. Á keù decisioî tï bå madå iî thå creatioî oæ FCPó ió whetheò tï  implemenô  thå  IÆ commanä aó á COÍ filå oò  withiî  thå  FCÐ itself. The following tradeoff should be considered: 1©  Aó  á COÍ file¬  thå IÆ commanä  offeró  manù  morå optionó  anä  flexibilitù foò conditioî processinç thaî  aî  FCP- resident IF. 2©  Aó  á  COÍ file¬  thå IÆ commanä addó  overheaä  bù having to be located and loaded from disk and then executed. Iî  thå  followinç text¬  sectionó 5.2.± tï 5.2.1±  describå optionó foò aî FCP-residenô IÆ command®  IF.COÍ containó alì  oæ theså  optionó  anä more®  Refeò tï thå associateä HLÐ filå  foò morå detail. SYSTEM SEGMENT: SYS1.FCP SYSTEM: ZCPR3 CUSTOMIZED BY: RICHARD CONN PROGRAM HEADER: SYSFCP.LIB AUTHOR: RICHARD CONN Thió  prograí headeò defineó thå IÆ Conditionó tï bå  placeä intï   thå   targeô   SYS.FCР filå  (generateä   bù   assemblinç SYSFCP.ASM). 5.2.1. IF Negation Thå followinç equatå determineó iæ leadinç negatioî ió tï bå allowed®  Iæ thió equatå ió TRUE¬  theî formó likå thå followinç arå permitted: IF ~EXIST filename.typ meaninç tï complemenô thå meaninç oæ thå tesô (thå abovå  returnó TRUÅ iæ filename.tyð doeó NOÔ exist). IFONEG EQU TRUE   .pa Š Assuminç IFONEÇ tï bå TRUE¬ thå followinç equatå defineó thå characteò tï bå placeä iî fronô oæ thå IÆ optioî tï indicatå thaô negatioî  ió  tï  bå  performed®  Iî  thå  abovå  example¬  thió characteò waó tildå (~). NEGCHAR EQU '~' 5.2.2. IF: T (True) or F (False) Settinç  thå  followinç equatå tï TRUÅ enableó thå simplå  Ô anä Æ optionó tï IF® Thå formaô oæ thió optioî is: IF T or IF F and it always returns TRUE or FALSE, resp. IFOTRUE EQU FALSE 5.2.3. IF: EM (Empty) Settinç  thå followinç equatå tï TRUÅ enableó IÆ tï tesô  tï seå  iæ thå indicateä filå ió emptù oò not®  Thå formaô oæ  thió optioî is: IF EM dir:filename.typ anä  iô returnó TRUÅ iæ thå indicateä filå doeó noô exisô  oò  ió empty. IFOEMPTY EQU FALSE 5.2.4. IF: ER (Error) Settinç  thå followinç equatå tï TRUÅ enableó IÆ tï tesô thå erroò codå bytå (prograí erroò codå byte)® Iæ thió bytå ió ° (nï error)¬  iô returnó TRUE¬  elså iô returnó FALSE®  Thå formaô oæ thió optioî is: IF ER IFOERROR EQU TRUE .pa Š 5.2.5. IF: EX (Exist) Settinç thå followinç equatå tï TRUÅ enableó IÆ tï tesô  foò thå existencå oæ á file® Thå formaô oæ thió optioî is: IF EX dir:filename.typ and it returns TRUE if the indicated file exists. IFOEXIST EQU TRUE 5.2.6. IF: IN (Input) Settinç  thå followinç equatå tï TRUÅ enableó useò inpuô  oæ thå  characteò  Ô  (oò  anù  otheò  characteò  foò  FALSE)®  ZEØ processinç  ió  suspendeä foò thió single-characteò  input®  Thå formaô oæ thió optioî is: IF IN and the IF FCP command responds with: IF True? tï whicè thå useò typeó T¬  Y¬ SPACE¬ oò CÒ tï seô thå IÆ tï TRUÅ anä anythinç elså tï seô thå IÆ tï FALSE. IFOINPUT EQU TRUE 5.2.7. IF: NU (Null) Settinç  thå followinç equatå tï TRUÅ enableó IÆ tï tesô  tï seå iæ thå seconä argumenô whicè followó ió NULÌ (noô  specified© oò  not®  Thió  tesô  ió  particularlù usefuì  iî  commanä  filå processinç  tï seå if¬  foò example¬  argumenô $² existó  anä  tï includå iô iæ iô does® Thå formaô oæ thió optioî is: IF NU or: IF NU arg Iæ thå firsô formaô ió encountered¬  IÆ NÕ returnó TRUE»  IÆ NÕ returnó FALSÅ witè thå seconä format. IFONULL EQU TRUE .pa Š 5.2.8. IF: n (Register Value) Settinç  thå followinç equatå tï TRUÅ enableó IÆ tï tesô  tï seå  iæ thå indicateä registeò containó thå indicateä value®  Iæ thió  ió preceedeä bù thå NEGCHAÒ anä IFONEÇ ió TRUE¬  theî  thió testó  tï  seå  iæ thå indicateä registeò doeó  noô  contaiî  thå indicateä value®  Registeró arå one-bytå memorù buffers¬ anä arå identifieä bù thå digitó ° tï 9® Thå formaô oæ thió optioî is: IF n val Example: IF 0 -- if Reg 0 = 0 IF 0 5 -- if Reg 0 = 5 IF 5 2 -- if Reg 5 = 2 IF ~0 -- if Reg 0 <> 0 IF ~9 2 -- if Reg 9 <> 2 IFOREG EQU TRUE Thå  REÇ commanä (implementeä eitheò withiî aî RCÐ oò  aó  á COÍ  file© ió useä tï placå valueó intï theså registeò anä modifù anä displaù theså values. 5.2.9. IF: WH (Wheel) Settinç  thå followinç equatå tï TRUÅ enableó IÆ tï tesô  tï seå iæ thå Wheeì Bytå ió seô oò not® Iæ so¬ IÆ WHEEÌ ió TRUE. IFOWHEEL EQU FALSE 5.2.10. IF: TC (TCAP) Settinç  thå followinç equatå tï TRUÅ enableó IÆ tï tesô  tï seå  iæ  thå ZCPR³ TCAÐ containó á terminaì  definitioî  oò  not® Thió  tesô  ió  particularlù  usefuì iî  commanä  filå  oò  aliaó processinç tï seå if¬  foò example¬ á Z3TCAÐ entrù ió defineä anä tï invokå screen-orienteä routineó iæ iô is®  Thå formaô oæ thió optioî is: IF TC IFOTCAP EQU FALSE .pa Š 5.2.11. IF: fcb1=fcb2 Settinç  thió equatå tï TRUÅ wilì enablå IÆ tï evaluatå  thå equalitù condition¬  checkinç tï seå iæ thå twï FCBó contaiî  thå samå values® Iæ so¬ thå IÆ ió TRUE» iæ not¬ thå IÆ ió FALSE. Enablinç  thió equatå eliminateó thå neeä foò thå NULÌ test¬ sincå á NULÌ tesô caî bå performeä bù usinç thå syntax: IF fcb1= IFOEQ EQU TRUE 5.2.12. COMIF - Run IF.COM Settinç thió equatå tï TRUÅ wilì causå aî IÆ executeä durinç aî  IÆ TRUÅ oò NÏ IÆ statå tï looë iî thå ROOÔ directorù (baså oæ patè startinç iî currenô directory© foò thå filå IF.COM¬  and¬ iæ found¬  loaä IF.COÍ anä transfeò controì tï it® Iæ IF.COÍ ió noô found¬  theî  IÆ Æ ió raised®  Usinç IF.COÍ provideó  mucè  morå poweò  anä flexibilitù buô alsï requireó IF.COÍ tï bå presenô anä takeó uð disë space. COMIF EQU FALSE 5.2.13. NOISE - Have FCP Print IF Status Messages Settinç thió equatå tï TRUÅ wilì causå anù changå iî thå  IÆ statuó  tï bå printeä tï thå user®  Thió ió usefuì foò debugginç purposes¬  buô  iî normaì runs¬  particularlù wherå  ALIASeó  arå concerned¬  iô ió usuallù desirablå tï reducå thå "noise¢ aó mucè aó possiblå anä havå thió equatå seô tï FALSE. NOISE EQU FALSE .pa Š 5.3. Input/Output Packages I!nput/Outpuô Packageó arå verù machine-specific¬  but¬  likå alì packages¬ theù providå á machine-independenô interfacå tï thå ZCPR³ Systeí iî theiò visiblå sections® Thå hiddeî parô performó thå actuaì implementatioî oæ thå routines® Likå thå structurå oæ thå BIOS¬ thå visiblå sectioî oæ aî I/Ï Packagå consistó oæ á JMÐ table. Thå   installeò   whï   ió   interesteä   iî   incorporatinç Input/Outpuô  Packageó  intï  thå  systeí  hå  ió  installinç  ió referreä  tï thå sourcå codå filå SYSIOP.ASM®  SYSIOP.ASÍ caî bå useä  aó á templatå througè whicè tï creatå otheò  I/Ï  Packages® Iô   ió  filleä  witè  commentó  outlininç  thå  functionó  beinç performed¬ anä É feeì thaô thió shoulä bå adequate. 5.4. Named Directory Files Thå  followinç ió á reformatteä duplicatå oæ thå bodù  oæ  á SYSNDR.LI  file®  Iô  ió  provideä herå tï  presenô  additionaì informatioî oî ho÷ tï seô thå equates®  Iô maù bå usefuì tï  thå installeò  tï  havå thió installatioî manuaì opeî tï theså  pageó whilå hå ió editinç thió file. DATA FILE: SYSNDR.LIB AUTHOR: Richard Conn VERSION: 1.0 DATE: 24 Feb 84 SYSNDR.LI  defineó thå structurå oæ thå memory-baseä  nameä directory® Iô alsï defineó á fe÷ elementó foò iô anä ió suitablå foò enclosurå iî aî NDÒ file. The general structure is: DB Disk,User ; A=1 DB 'NDIRNAME' ; 8 chars DB 'PASSWORD' ; 8 chars ... ; other entries DB 0 ; End of NDR defdu macro ?disk,?user db ?disk-'@' ; Convert Disk db ?user ; User is OK endm FIG 5-1: Named Directory Structure .pa Š Thå entirå filå ió implementeä aó onå macrï (whicè follows)® The SYSNDR.ASM file simply refers to this macro and expands it. Thå nameä directorieó showî belo÷ arå recommendeä standards® Iî  time¬  therå  wilì bå utilitieó whicè baså á  parô  oæ  theiò operations on these names. sysndr macro Thå  BASÅ  directorù ió á workinç scratcè areá oî thå  firsô disk.  defdu 'A',0 db 'BASE ' db ' ' Thå  ROOÔ directorù ió thå lasô directorù referenceä iî  thå Commanä  Searcè Path®  Thió ió wherå alì oæ thå  general-purposå COM files are located. defdu 'A',15 db 'ROOT ' db ' ' Thå  HELÐ directorù ió wherå thå onlinå documentatioî  fileó are stored. defdu 'A',16 db 'HELP ' db ' ' Thå  BACKUР directorù  ió wherå fileó  arå  copieä  tï  (bù default) for backup purposes. defdu 'C',0 db 'BACKUP ' db ' ' db 0 ;End of List endm .pa Š 5.5. TCAP Files Thå  programó  TCSELECÔ  anä TCMAKÅ arå useä tï  creatå  thå *.Z3Ô fileó whicè arå loadeä bù thå LDR.COÍ utility®  Thå loadeä filå establisheó thå characteristicó oæ thå user'ó CRÔ  terminal¬ anä  thió informatioî ió useä bù screen-orienteä utilities¬  sucè as SHOW, to perform their functions. 5.6. Environment Descriptor Thå  followinç ió á reformatteä duplicatå oæ thå bodù  oæ  á SYSENV.LI  file®  Iô  ió  provideä herå tï  presenô  additionaì informatioî oî ho÷ tï seô thå equates®  Iô maù bå usefuì tï  thå installeò  tï  havå thió installatioî manuaì opeî tï theså  pageó whilå hå ió editinç thió file. Thå  entirå  filå  ió  onå  macrï  whicè  ió  referenceä  bù SYSENV.ASM®  SYSENÖ insertó á JMÐ ° instructioî iî fronô oæ thió macro to complete the structure of the SYS.ENV file. LIBRARY: SYSENV.LIB AUTHOR: Richard Conn Version: 1.0 Date: 18 May 84 Previous Versions: None SYSENV is the definition for my ZCPR3 environment. sysenv macro ; ; Environment Descriptor ; If inline, there is a leading JMP just before this ; envorg1: db 'Z3ENV' ; Environment ID db 1 ; class 1 environment (external) Á  Clasó ± environmenô ió externaì tï thå utilitù usinç  it® Thió  typå  oæ  Environmenô Descriptoò ió  locateä  aô  á  buffeò somewherå iî memory¬  anä thå ZCPR³ utilitieó simplù contaiî á 2- bytå  pointeò whicè containó itó address®  Á Clasó ² environmenô ió  internaì tï thå utilitù usinç it®  Thió typå oæ  Environmenô Descriptoò  ió locateä withiî thå utilitù itself¬  takinç uð  25¶ bytes®  Iô  ió recommendeä thaô thå ZCPR³ Systeí  bå  configureä usinç aî externaì Environmenô Descriptor. .pa Š Thå  followinç  addresseó  anä  valueó  arå  extracteä  froí Z3BASE.LIB. dw expath ; external path address db expaths ; number of 2-byte elements in path dw rcp ; RCP address db rcps ; number of 128-byte blocks in RCP dw iop ; IOP address db iops ; number of 128-byte blocks in IOP dw fcp ; FCP address db fcps ; number of 128-byte blocks in FCP dw z3ndir ; NDR address db z3ndirs ; number of 18-byte entries in NDR dw z3cl ; ZCPR3 Command Line db z3cls ; number of bytes in Command Line dw z3env ; ZCPR3 Environment Descriptor db z3envs ; number of 128-byte blocks dw shstk ; Shell Stack address db shstks ; number of shsize-byte entires db shsize ; size o"f a Shell Stack entry dw z3msg ; ZCPR3 Message buffer dw extfcb ; ZCPR3 External FCB dw extstk ; ZCPR3 External Stack Thå followinç flaç ió useä bù somå ZCPR³ Systeí utilitieó tï determinå  ho÷  verboså  theù  arå  iî  providinç  messageó   anä informatioî  tï thå user®  Thå QUIET.COÍ utilitù caî bå useä  tï change this flag dynamically. db 0 ; quiet flag (1=quiet, 0=not quiet) dw z3whl ; address of Wheel Byte This data value is used by the timing routines. db 4 ; Processor Speed in MHz Thå  followinç valueó shoulä corresponä tï thoså selecteä iî the Z3HDR.LIB file. db 'D'-'@' ; maximum disk db 31 ; maximum user .pa Š Thå  followinç valuå ió useä tï instrucô thå utilitieó aó tï whetheò theù shoulä accepô thå DÕ forí oò not®  Iæ disableä (seô tï  0)¬  thå  onlù waù tï referencå á directorù ió witè  thå  DIÒ (named©  form¬  anä passworä protectioî ió directlù  provideä  bù this. db 1 ; 1=OK to accept DU, 0=not OK  Somå  ZCPR³  utilities¬   sucè  aó  PRINÔ  anä  PAGE¬   dra÷ informatioî   froí   theså  bufferó  tï  determinå  severaì   keù attributeó  oæ  thå deviceó theù arå  dealinç  with®  Thå  CPSEÌ utilitù  caî  bå useä tï dynamicallù changå thå CRÔ  anä  Printeò selections. db 0 ; CRT selection (0=CRT 0, 1=CRT 1) db 0 ; Printer selection (n=Printer n) db 80 ; width of CRT 0 db 24 ; number of lines on CRT 0 db 22 ; number of lines of text on CRT 0 db 132 ; width of CRT 1 db 24 ; number of lines on CRT 1 db 22 ; number of lines of text on CRT 1 db 80 ; width of Printer 0 db 66 ; number of lines on Printer 0 db 58 ; number of lines of text on Printer 0 db 1 ; form feed flag (0=can't formfeed, 1=can) db 102 ; width of Printer 1 db 66 ; number of lines on Printer 1 db 58 ; number of lines of text on Printer 1 db 1 ; form feed flag (0=can't formfeed, 1=can) db 80 ; width of Printer 2 db 66 ; number of lines on Printer 2 db 58 ; number of lines of text on Printer 2 db 0 ; form feed flag (0=can't formfeed, 1=can) db 102 ; width of Printer 3 db 66 ; number of lines on Printer 3 db 58 ; number of lines of text on Printer 3 db 0 ; form feed flag (0=can't formfeed, 1=can) .pa Š Thå  ZCPR³ shelì nameä SÈ caî deaì witè symboló  (variables© whicè  arå assigneä texô stringó aó values®  Thió buffeò defineó thå namå oæ thå filå whicè programó likå SÈ refeò tï iî ordeò  tï resolvå  variablå  references®  Aó manù shelì variablå fileó  aó desired may be available in this fashion. db 'SH ' ; shell variable filename db 'VAR' ; shell variable filetype Theså  bufferó arå availablå tï storå filå nameó  anä  otheò datá  whicè  arå  passeä  froí onå utilitù tï  anotheò  whicè  ió executeä later® Iî general¬ entrieó ³ anä ´ arå availablå tï thå ZCPR³ utilitù programmeò aó general-purposå buffers®  Entrieó  ± and 2 are used by some ZCPR3 System utilities at this time. db ' ' ; filename 1  db ' ' ; filetype 1 db ' ' ; filename 2 db ' ' ; filetype 2 db ' ' ; filename 3 db ' ' ; filetype 3 db ' ' ; filename 4 db ' ' ; filetype 4 ds 80H-($-envorg1+3) ; make exactly 80H bytes long ; (+3 compensates for leading JMP) .pa Š Thå followinç ió thå TCAÐ entrù foò thå TVÉ 950® Iæ LDR.COÍ loadó  á  *.Z3Ô  file¬  thió  buffeò wilì  bå  overlaiä  (iæ  thå Environment Descriptor is External). ; ; Terminal Capabilities Data ; envorg2: DB 'TVI 950 ' ;Name of Terminal DB 'K'-'@' ;Cursor UP DB 'V'-'@' ;Cursor DOWN DB 'L'-'@' ;Cursor RIGHT DB 'H'-'@' ;Cursor LEFT DB 00 ;CL Delay DB 00 ;CM Delay DB 00 ;CE Delay DB 1bh,'*',0 ;CL String DB 1bh,'=%+ %+ ',0 ;CM String DB 1bh,'t',0 ;CE String DB 1bh,')',0 ;SO String DB 1bh,'(',0 ;SE String DB 0 ;TI String DB 0 ;TE String ds 80H-($-envorg2) ; make exactly 80H bytes long ; ; End of Environment Descriptor ; endm 6. S T E P 8 : U T I L I T Y I N S T A L L A T I O N  6.1. The Z3INS Utility Thå  Z3INÓ  utilitù ió designeä tï makå  thå  ZCPR³  utilitù installatioî  procesó simple®  Alì fileó tï bå installeä musô bå iî  thå currenô directorù wheî Z3INÓ ió executed®  Á *.ENÖ  filå foò thå targeô systeí anä aî installatioî filå (*.INS© containinç thå  nameó  oæ thå programó tï bå installeä musô alsï bå  iî  thå currenô directory. Z3INÓ readó iî aî Environmenô Descriptoò filå (*.ENV© anä aî Installatioî Filå (*.INS)®  Iô theî lookó foò lineó iî thå  filå containinç filå nameó (onå namå peò line© anä loadó thå indicateä files¬  tryinç  tï  instalì theí witè thå Environmenô  Descriptoò information. Z3INS is invoked by a command line of the following form: Z3INS mysys.ENV myinstal.INS Á  ZCPR³  Installatioî Filå ió á texô  filå  containinç  twï typeó  oæ linesº  á commenô line¬  whicè beginó witè á semicoloî (;)¬  anä  á  linå containinç aî un#ambiguouó filå  namå  (leadinç spaceó  arå noô significant)¬  whicè ió á filå tï  bå  installed® Foò example: ; This is an installation file for my new utilities ; UTIL1.COM and UTIL2.COM are going to be installed -- util1.com util2.com ; UTIL3 is really neat util3.com FIG 6-1: Sample Z3INS Installation File Caså ió noô significant®  Leadinç spaceó oî eacè  linå are ignored. Any file name MUST be unambiguous. The next section shows the execution of a *.INS file. .pa Š 6.2. Sample Session B1:ASM>z3ins sys.env zcpr3.ins Z3INS Version 1.0 ; ; Installation Begins -- ; << Detail Left Out >> ; ; Set 1 ; ** Installing File ALIAS .COM ** Installing File CD .COM ** Installing File CMDRUN .COM ** Installing File COMMENT .COM ** Installing File CPSEL .COM ** Installing File CRC .COM ** Installing File DEV .COM ** Installing File DEVICE .COM ** Installing File DIFF .COM ** Installing File DIR .COM ** Installing File ECHO .COM ** Installing File ERASE .COM ; ; Set 2: Error Handlers ; ** Installing File ERROR1 .COM ** Installing File ERROR2 .COM ** Installing File ERROR3 .COM ** Installing File ERROR4 .COM ** Installing File ERRORX .COM ** Installing File SHOW .COM << Detail Left Out >> ; ; NOTE does not install because it is so small and really does ; not need to know about ZCPR3 ; ;note.com ; ; Set 9: Z3INS ; ** Installing File Z3INS .COM ; ; End of ZCPR3 Installation ; ** Installation Complete ** FIG 6-2: Sample Run of Z3INS .pa Š6.3. Assembling Distribution Files Thå  followinç fileó requirå theiò specializeä commanä fileó iî  ordeò tï bå assembled®  Iæ thå installeò ió  installinç  thå systeí foò thå firsô timå anä wisheó tï assemblå theså utilities¬ hå  maù havå tï follo÷ thå stepó outlineä iî thå commanä fileó iî order to perform the assemblies. Utility Command File Required ALIAS.COM ALIAS.ZEX ZEX.COM ZEX.ZEX Thå  followinç  fileó  iî  thå  Phaså  É  distributioî   arå assembleä  bù  thå  commanä lineó (assuminç  thaô  Z3LIB.REÌ  anä SYSLIB.REÌ arå iî thå currenô directory and that $1 is the file): M80 =$1 L80 $1,Z3LIB/S,SYSLIB/S,$1/N,/U,/E Files: CD CMDRUN COMMENT CPSEL CRC DEV DEVICE DIFF DIR ECHO ERASE ERROR1 ERROR3 ERROR4 ERRORX FINDF GOTO HELPCK IF IFSTAT LDR MCOPY MENUCK MKDIR NOTE PAGE PATH PROTECT PWD QUIET RECORD REG RENAME SAK SETFILE SH SHCTRL SHDEFINE SHFILE SHVAR SUB TCCHECK TCMAKE TCSELECT UNERASE WHEEL XD XDIR Z3INS Z3LOC Thå  followinç  fileó  iî  thå  Phaså  É  distributioî   arå assembleä   bù   thå  commanä  lineó  (assuminç  thaô   VLIB.REL¬ Z3LIB.REL¬ anä SYSLIB.REÌ arå iî thå currenô directory): M80 =$1 L80 $1,VLIB/S,Z3LIB/S,SYSLIB/S,$1/N,/U,/E Files: ERROR2 HELP MENU SHOW Thå  followinç  fileó  iî  thå  Phaså  É  distributioî   arå assembleä  bù  thå  commanä lineó (assuminç  thaô  Z3LIB.REÌ  anä SYSLIB.REÌ  arå  iî thå currenô directory© iæ thå TIMÅ optioî  ió enabled: M80 =$1 L80 $1,TIMELIB/S,Z3LIB/S,SYSLIB/S,$1/N,/U,/E Files: HELPPR PRINT Fileó  distributeä  iî  Phaså  IÉ  wilì  bå  provideä   witè associateä documentatioî oî theiò assemblù procedures. åååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååå8. D O C U M E N T A T I O N  Thå  documentatioî  oî thå ZCPR³ Systeí ió availablå iî  thå following forms: 1®  Thió  Installatioî  Manuaì describeó somå  oæ  thå conceptó  oæ  thå ZCPR³ Systeí anä giveó detailó oî thå stepó  tï takå tï instalì á ZCPR³ Systeí oî á targeô computer. 2®  Thå ZCPR³ Utilitieó contaiî internaì documentatioî oî  themsevleó  whicè  ió displayeä bù typinç  thå  namå  oæ  thå utilitù followeä bù twï slasheó (eg¬  "ERASÅ //¢ giveó thå syntaø anä optionó oæ thå ERASÅ command). 3®  Somå ZCPR³ Utilities¬  sucè aó SH¬ arå intendeä tï bå executeä continuously¬  and¬ aó such¬ providå documentatioî oî themselveó  bù  '?§  oò 'H§ commandó (eg¬  VFILEÒ  supportó  botè commands). 4®  Detailó oî alì oæ thå ZCPR³ Utilitieó anä morå arå provideä  bù thå onlinå documentatioî systeí iî thå forí  oæ  HLÐ files®  Thå  filå "ZCPR3.HLP"¬  whicè caî bå reaä bù typinç  thå commanä "HELÐ ZCPR3¢ oî á fully-installeä ZCP$R³ system¬  provideó á top-leveì indeø foò alì HLÐ files. 5®  Á  booë  oî ZCPR³ ió tï bå publisheä bù  Ne÷  Yorë Zoetrope¬  Inc®  Iô wilì bå availablå commerciallù thrõ á numbeò oæ  sources¬  sucè  aó booë stores¬  anä Echelon¬  Inã  (seå  thå references)¬  anä  computeò  clubó arå welcomå tï  negotiatå  foò rightó tï selì iô foò fund-raisinç purposes® Thió booë wilì bå á comprehensivå referencå oî thå ZCPR³ System. åååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååå9. R E F E R E N C E S  Thå  followinç sectionó outlinå otheò sourceó oæ informatioî oî ZCPR2¬  ZCPR3¬  SYSLIB2¬ anä SYSLIB³ thaô maù bå usefuì tï thå installeró anä useró oæ ZCPR3. 9.1. ZCPR2 and SYSLIB2 Publications and Documentation 9.1.1. ZCPR2 Manuals Conn¬  Richard®  Conceptó  Manuaì foò ZCPR² -- Z8°  Commanä Processoò Replacement¬  Versioî 2¬  Manuaì Revisioî 0¬ ³ Februarù 1983, 21 pages. Conn¬  Richard®  Installatioî Instructionó foò ZCPR² -- Z8° Commanä Processoò Replacement¬  Versioî 2¬  Manuaì Revisioî 0¬  ² Februarù 1983, 48 pages. Conn¬  Richard®  Rationalå Manuaì foò ZCPR² -- Z8°  Commanä Processoò Replacement¬  Versioî 2¬ Manuaì Revisioî 0¬ 2¶ Februarù 1983, 65 pages. Conn¬  Richard®  User'ó  Guidå  foò  ZCPR²  -- Z8°  Commanä Processoò Replacement¬  Versioî 2¬  Manuaì Revisioî 0¬ ´ Februarù 1983, 138 pages. 9.1.2. SYSLIB2 Manuals Conn¬  Richard® SYSLI Useò anä Referencå Manuaì foò SYSLI  Versioî 2.4¬ ´ Februarù 1983¬ 11² pages. Conn¬  Richard®  User'ó Guidå tï SYSLI 2.3¬ Revisioî B¬ 1´ Decembeò 1982¬ 5¶ pages. 9.1.3. Software Upgrades to SYSLIB2 and ZCPR2 Fouò upgradeó tï SYSLIB² anä ZCPR² werå issued®  Therå werå all written by Richard Conn, and their dates are: 4 March 1983 30 March 1983 30 April 1983 22 June 1983 .pa Š 9.1.4. Sources Contacô  thå followinç sourceó foò copieó (oî disë  oò  harä copy¬   dependinç   oî   thå  source©  oæ   thå   above-mentioneä documentation. SIG/M (disks) New York Amateur Computer Club (hardcopy) SIMTEL20 (DDN access) 9.1.5. CP/M Books Thå  followinç bookó oî CP/Í arå recommendeä. Hogan¬  Thom® Osbornå CP/Í Useò Guide¬ Osborne/McGraw-Hill¬ 1981, 283 pages. Johnson-Laird¬   Andy®   Thå  Programmer'ó  CP/Í  Handbook¬ Osborne/McGraw-Hill, 1983, 501 pages. .pa Š 9.2. ZCPR3 Sources Thå  followinç arå thå addresseó oæ sourceó foò  informatioî on ZCPR2, ZCPR3, SYSLIB2, and SYSLIB3. 9.2.1. Selected Computer Clubs SIG/Í  provideó á librarù oæ softwarå oî á numbeò oæ formató oæ floppù disk® Theù arå á sourcå foò thå ZCPR2¬ SYSLIB2¬ ZCPR3¬ and SYSLIB3 software. Thå Ne÷ Yorë Amateuò Computeò Cluâ haó publisheä hardcopù oæ the ZCPR2 and SYSLIB2 documentation. 9.2.1.1. ACGNJ and SIG/M SIG/M-Amateur Computer Group of New Jersey PO Box 97 Iselin, NJ 08830 9.2.1.2. New York Amateur Computer Club New York Amateur Computer Club, Inc PO Box 106 New York, NY 10008 .pa Š 9.2.2. Echelon, Inc. Echelon, Inc 101 First Street Los Altos, CA 94022 (415) 948-5321 Echelon¬  Inã  haó  beeî  selecteä aó  exclusivå  agenô  foò licensinç  commerciaì  useó  oæ ZCPR3®  Companieó  whï  wisè  tï incorporatå ZCPR³ intï theiò productó shoulä contacô Echeloî  foò licensing arrangements. Echeloî  alsï distributeó ZCPR³ (includinç SYSLIB3© foò non- commerciaì  use®  Individuaì  useró  maù obtaiî  copieó  oæ  thå programó foò essentiallù cosô oæ diskó pluó handlinç anä  mailinç expenses. Echeloî  wilì  sooî  providå á computerizeä  bulletiî  boarä servicå  iî supporô oæ ZCPR3®  Informatioî oî ho÷ tï  acquirå  á copù  oæ  thå system¬  upgradeó anä changeó tï  thå  system¬  anä generaì user/creatoò feedbacë anä communicatioî wilì bå supporteä by this bulletin board. .pa Š 9.2.3. New York Zoetrope, Inc. New York Zoetrope, Inc. Suite 516 80 East 11th St. New York, NY 10003 (212) 420-0590 Cable: NYZOETROPE, N.Y. % Source: TCN 121 Ne÷  Yorë Zoetrope¬  Inc¬  ió thå publisheò oæ thå  hardcopù documentatioî  oî ZCPR³ anä SYSLIB3®  Thió documentatioî wilì bå releaseä beforå 4tè quarteò oæ 1984®  Contacô Ne÷ Yorë  Zoetropå foò details. åååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååå .cp5 A Aliases, 19 .cp5 C Command Lines, 7 Command Processing, 8 .cp5 D Directories, 2 .cp5 E Error Handlers, 17 .cp5 S "Secure" Systems, 38 Shells, 23 .cp5 W Wheel Users and Passwords, 4 .cp5 Z Z3TCAP, 34 ååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååå&ååååå'ååååå