home *** CD-ROM | disk | FTP | other *** search
Text File | 1985-02-10 | 44.3 KB | 1,383 lines |
- ZCPR - A Z80 Replacement for the CP/M CCP
-
-
-
-
-
-
- Documentation on ZCPR - A Z80 Replacement for the CP/M CCP
-
-
-
-
- ZCPR is a Group Project By the CCP-GROUP:
- RLC - Richard Conn FJW - Frank Wancho
- KBP - Keith Peterson RGF - Ron Fowler
-
-
- ZCPR Documentation By RLC
-
-
-
-
-
-
-
- Table of Contents
- ----- -- --------
-
- Introduction 2
-
- Part A: Installation Instructions 4
- ZCPR Integration Example 5
- Setting the ZCPR Inline Options 8
- REL, BASE, CPRLOC, RAS, SUBA, CLEVEL3 8
- Customization Symbols 8
- NLINES, WIDE, PGDFLT 8
- PGDFLG, MAXUSR, SYSFLG, SOFLG, SUPRES,
- DEFUSR, SPRMPT, CPRMPT, NUMBASE, 9
- SECTFLG, FENCE 10
- Patching SUBMIT.COM 10
-
- Part B: Usage Instructions and Explanation of
- Commands 11
- The ZCPR Command Hierarchy Search 11
- The ZCPR-Resident Commands 14
- DIR, ERA 14
- LIST, TYPE, SAVE 15
- REN, USER, DFU 16
- JUMP, GO, GET 17
- ZCPR Error Messages 18
-
- Part C: ZCPR Command Levels and How to Use Them 19
-
-
-
-
-
-
-
-
- Page 1
-
-
-
-
-
- ZCPR - A Z80 Replacement for the CP/M CCP
-
-
-
- Documentation on ZCPR - A Z80 Replacement for the CP/M CCP
-
-
-
-
- ZCPR i≤ ß replacemen⌠ fo≥ thσ CP/═ Consolσ CommanΣ Processo≥ ì
- (CCP⌐á whicΦá i≤á designeΣ t∩ ruε a≤ par⌠ oµá CP/═á oεá Z80-baseΣ ì
- microcomputers«á Iε mos⌠ case≤ i⌠ i≤ upward-compatible witΦá thσ ì
- origina∞ CP/═ Versioε 2.▓ CCP.
-
- ZCPR¼á however¼á provide≤á man∙ extension≤ t∩ thσ CP/═á CCP« ì
- IncludeΣ iε thesσ extension≤ arσ thσ followinτ features:
-
- « Thσ TYP┼ functioε caε bσ madσ t∩ pagσ o≥ no⌠ pagσ it≤ ì
- outpu⌠ a⌠ thσ user'≤ discretion
-
- «á ┴ LIS╘ functioε i≤ availablσ whicΦ send≤ it≤á outpu⌠ ì
- t∩ thσ CP/═ LST║ Devicσ anΣ doe≤ NO╘ page
-
- «á Thσá DI╥ commanΣ ha≤ beeε extendeΣ t∩ allo≈ thσ dis-ì
- pla∙ oµ thσ systeφ file≤ o≥ al∞ files
-
- « Thσ ER┴ commanΣ no≈ print≤ ou⌠ thσ name≤ oµ thσ file≤ ì
- i⌠ i≤ erasing
-
- «á Thσá curren⌠ use≥ numbe≥ ma∙ bσ includeΣ a≤ par⌠á oµ ì
- thσ commanΣ prompt╗á iµ thσ use≥ i≤ unde≥ ß numbe≥ othe≥ thaεá 0¼ ì
- thσ promp⌠ i≤ oµ thσ forφ 'du>º (likσ 'A2>º o≥ 'B10>')¼á and¼á iµ ì
- thσá use≥ i≤ unde≥ 0¼á thσ promp⌠ ma∙ bσ 'd>º o≥ 'd0>º a≤ pe≥ hi≤ ì
- choice
-
- «á Thσá SUBMI╘ facilit∙ ha≤ beeε changeΣ iεá tw∩á basiπ ì
- ways:
- - thσá promp⌠á change≤ t∩ 'du$º o≥ 'd$ºá wheεá thσ ì
- SUBMI╘ commanΣ i≤ printed
- - thσ $$$.SU┬ i≤ executeΣ froφ drivσ A║ (notσ tha⌠ ì
- thσá origina∞á SUBMI╘á probleφ no≈ exists¼á bu⌠ thσá ne≈á SUB.CO═ ì
- facilit∙á correct≤ it)╗á thσ CCP-GROU╨ definitioε oµ aεá Indirec⌠ ì
- CommanΣá Filσá no≈á applies¼á anΣ thi≤á definitioεá i≤á tha⌠á an∙ ì
- sequencσ oµ command≤ whicΦ ma∙ bσ issueΣ froφ thσ consolσ i≤ als∩ ì
- ßá valiΣá sequencσá oµ command≤ fo≥ executioεá froφá aεá Indirec⌠ ì
- Command File; hence, the sequence:
-
- DIR
- B:
- DIR
- A:
-
- ma∙á bσá issueΣá froφ eithe≥ thσ consolσ o≥ aεá Indirec⌠á CommanΣ ì
- File¼á anΣ thσ result≤ oµ thσ executioε oµ thi≤ sequencσ arσá thσ ì
- same«á Basically¼á thi≤á say≤á tha⌠ Indirec⌠ CommanΣá File≤á arσ ì
- upward-compatiblσá t∩ thσ consolσ inpu⌠ (bu⌠ no⌠ necessaril∙ tha⌠ ì
- thσá content≤á oµ aε Indirec⌠ CommanΣ Filσ ma∙ bσ issueΣá a⌠á thσ ì
- consolσ withou⌠ modification).è
-
- Page 2
-
-
-
-
-
- ZCPR - A Z80 Replacement for the CP/M CCP
-
-
-
- «á ┴ command-searcΦ hierarch∙ i≤ no≈ implementeΣá whicΦ ì
- i≤ executeΣ roughl∙ a≤ follows:
- - thσá user'≤ commanΣ i≤ checkeΣ agains⌠ thσá CPR-ì
- residen⌠ command≤ anΣ executeΣ immediatel∙ iµ ß matcΦ i≤ found
- - failinτá that¼á thσá curren⌠ use≥ numbe≥ oεá thσ ì
- curren⌠ disδ i≤ scanneΣ fo≥ thσ CO═ file╗á thσ CO═ filσ i≤ loadeΣ ì
- anΣ executeΣ iµ found
- - failinτ that¼ ß defaul⌠ use≥ numbe≥ (initiall∙ ░ ì
- bu⌠á caε bσ rese⌠ witΦ thσ DF╒ CPR-residen⌠ command⌐ oε thσá cur-ì
- ren⌠ disδ i≤ scanneΣ fo≥ thσ CO═ file╗ thσ CO═ filσ i≤ loadeΣ anΣ ì
- executeΣ iµ found
- - finally¼á failinτ that¼á thσ defaul⌠ use≥ numbe≥ ì
- oε disδ A║á i≤ scanneΣ fo≥ thσ CO═ file╗á thσ CO═ filσ i≤á loadeΣ ì
- anΣ executeΣ iµ founΣ o≥ aε erro≥ messagσ (COMMAND?¼ wheε COMMAN─ ì
- wa≤ thσ user'≤ commanΣ name⌐ i≤ printed
-
- «á Thσá numeriπá argumen⌠ fo≥ thσ SAV┼ commanΣ caεá bσ ì
- specifieΣá iε hexadecima∞ s∩ tha⌠ thσ use≥ ma∙ emplo∙ thσá value≤ ì
- presented by tools such as DDT exactly as they are given
-
- «á ┴á GE╘á commanΣ whicΦ load≤ ß filσá a⌠á ßá specifieΣ ì
- memor∙ addres≤ anΣ ß JUM╨ commanΣ whicΦ "callsó thσ subroutinσ a⌠ ì
- ßá specifieΣ memor∙ addres≤ havσ beeε added╗á ß G╧ commanΣá whicΦ ì
- "callsóá thσá subroutinσ a⌠ 100╚ (subse⌠ oµ thσ JUM╨á capability⌐ ì
- has also been added
-
-
- Thi≤á documen⌠ provide≤ thσ use≥ oµ ZCPR witΦ thσá followinτ ì
- information:
-
- Part A: Installation Instructions
- Part B: Usage Instructions and Explanation of Commands
- Part C: ZCPR Command Levels and How to Use Them
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Page 3
-
-
-
-
-
- ZCPR - A Z80 Replacement for the CP/M CCP
-
-
-
- Part A
- Installation Instructions
-
- Iεá orde≥ t∩ instal∞ ZCPR oε ß targe⌠ microcompute≥ (mus⌠ bσ ì
- currently running CP/M 2.2), the user must know two basic things:
-
- 1) Where his CCP is currently running in memory
- 2⌐á Wherσ hi≤ CC╨ i≤ locateΣ iε thσ SYSGE╬á image¼á or¼ ì
- fo≥ system≤ whicΦ don'⌠ suppor⌠ SYSGE╬ (sucΦ a≤ P&╘ CP/═ 2.▓á fo≥ ì
- thσ TRS-8░ Mode∞ II)¼ wherσ hi≤ CC╨ i≤ locateΣ oε disδ anΣ ho≈ t∩ ì
- place the new ZCPR on top of it
-
- Thσá firs⌠ questioε i≤ answereΣ relativel∙ easily«á ┴á pro-ì
- gram¼á knowεá a≤ eithe≥ BDOSLO├ o≥ BDLO├ (fo≥ BDO╙á Locator)¼á i≤ ì
- provideΣá witΦ ZCPR«á Yo⌡ shoulΣ assemblσ thi≤ prograφ fo≥á you≥ ì
- particula≥á compute≥ (changσ thσ basσ OR╟ iµ yo⌡ arσ runninτ non-ì
- ORG-░ CP/M⌐ anΣ executσ it«á Upoε execution¼ i⌠ wil∞ providσ yo⌡ ì
- witΦá thσ basσ addres≤ oµ (1⌐ thσ BDO╙ anΣ (2⌐ thσ CC╨á fo≥á you≥ ì
- particula≥ system«á BDOSLO├ ha≤ workeΣ correctl∙ fo≥ al∞ system≤ ì
- testeΣ s∩ far¼á bu⌠ therσ i≤ alway≤ ß chancσ tha⌠ i⌠ ma∙ NO╘ worδ ì
- fo≥ somσ non-testeΣ system«á Fo≥ thσ timσ being¼á assumσ tha⌠ i⌠ ì
- work≤ correctl∙ anΣ recorΣ thσ startinτ basσ pagσ addres≤ oµ you≥ ì
- CCP.
-
- Thσá seconΣ questioε i≤ no⌠ answereΣ nearl∙ s∩á easily«á Iµ ì
- yo⌡á havσá thσ abilit∙ t∩ SYSGE╬ you≥ system¼á i⌠ i≤ mucΦá easie≥ ì
- (commonly⌐ thaε iµ yo⌡ d∩ not«á Yo⌡ must¼á afte≥ assemblinτá thσ ì
- ZCPRá properly¼á integratσ i⌠ int∩ thσ sysgeε (o≥ disk⌐ imagσá oµ ì
- CP/M«á Thi≤á caεá bσá donσ b∙ obtaininτ ß SYSGE╬ imagσá oµá you≥ ì
- system¼ scanninτ i⌠ viß ß debugge≥ sucΦ a≤ DD╘ t∩ finΣ thσ offse⌠ ì
- fo≥ thσ CCP¼á readinτ thσ ne≈ CPR iε oε to≡ oµ thσ olΣá one¼á anΣ ì
- finall∙á runninτá SYSGE╬ agaiε t∩ placσ thσ resultan⌠á systeφá oε ì
- disk«á Iµá yo⌡á D╧ NO╘ havσ SYSGE╬ capability¼á ßá Disδá Utilit∙ ì
- prograφá i≤ requireΣ t∩ locatσ thσ CC╨ oε disδ anΣ theε writσ thσ ì
- ne≈á ZCPRá oεá to≡á oµ thσ olΣá one«á Thσá ne⌠á resul⌠á oµá thi≤ ì
- integratioεá i≤á thσ placemen⌠ oµ thσ ne≈ ZCPR ont∩ disδá iεá thσ ì
- prope≥á placσ s∩ tha⌠ i⌠ wil∞ bσ loadeΣ witΦ thσ res⌠ oµ CP/═á oε ì
- colΣ boo⌠ anΣ executeΣ properly.
- T∩ finΣ thσ origina∞ CCP¼ yo⌡ typicall∙ havσ t∩ locatσ i⌠ b∙ ì
- it≤ appearance«á I⌠ i≤ probabl∙ storeΣ contiguousl∙ oε disk¼ so¼ ì
- oncσ i⌠ i≤ found¼ ß sequentia∞ overwritσ i≤ al∞ tha⌠ i≤ required« ì
- Probabilit∙á i≤ extremel∙ higΦ tha⌠ i⌠ i≤ storeΣ contiguousl∙á iε ì
- thσ SYSGE╬ image«á Thσ CC╨ start≤ witΦ tw∩ (2⌐ anΣ ONL┘ TW╧ jum≡ ì
- instruction≤á followeΣá b∙ ß buffe≥ areß (possibl∙ containinτá aε ì
- initia∞á commanΣ and/o≥ thσ Digita∞ ResearcΦá copyrigh⌠á notice)« ì
- Thσá Digita∞á ResearcΦ manual≤ sho≈ thσ CC╨ t∩ residσ a⌠á addres≤ ì
- 980╚á iε thσ SYSGE╬ image¼á bu⌠ thi≤ ma∙ var∙á witΦá system«á T∩ ì
- finΣá thi≤ image¼á usσ DD╘ o≥ somσ othe≥ sucΦ debugger¼á loaΣ thσ ì
- SYSGE╬ imagσ yo⌡ caε ge⌠ viß SYSGEN¼á anΣ examinσ memor∙ startinτ ì
- a⌠ arounΣ 900╚ fo≥ thσ tw∩ (anΣ ONL┘ two⌐ jump≤ describeΣá above« ì
- Iµá yo⌡ finΣ aε areß witΦ morσ thaε tw∩ jump≤ (ß grou≡ oµá them)¼ ì
- yo⌡á arσ probabl∙ lookinτ a⌠ thσ BIO╙ anΣ shoulΣ g∩ lowe≥ fo≥ thσ ì
- CCP«á Thσá CC╨ wil∞ probabl∙ star⌠ oε aε eveε pagσ o≥á half-pagσ ì
- address (like 900H, 980H, 1100H, etc).è
-
- Page 4
-
-
-
-
-
- ZCPR - A Z80 Replacement for the CP/M CCP
-
-
-
- No≈ tha⌠ thσ locatioε oµ thσ CC╨ ha≤ beeε found¼ recorΣ thi≤ ì
- addres≤ fo≥ later« Yo⌡ arσ no≈ read∙ fo≥ thσ integratioε oµ ZCPR ì
- int∩ you≥ system«á T∩ d∩ this¼ perforφ thσ followinτ step≤ usinτ ì
- thσá informatioεá oµ thσ pagσ addres≤ oµ thσ CC╨á (obtaineΣá froφ ì
- BDOSLO├á anΣá calleΣá CPRLO├ withiε ZCPR⌐ anΣá thσá SYSGE╬á imagσ ì
- address of the CCP (called IMAGE for reference in this document).
-
- 1«á Edi⌠á ZCP╥á anΣ se⌠ thσ CPRLO├ equatσ t∩ thσá valuσ ì
- obtaineΣ froφ above« Als∩ se⌠ an∙ flag≤ anΣ value≤ a≤ yo⌡ desirσ ì
- (seσ thσ sectioε oε ZCP╥ Customizatioε below)«á Wheεá satisfied¼ ì
- enΣ thσ edi⌠ session.
-
- 2«á Assemblσá ZCPRá witΦ MA├á (o≥á equivalent)«á Thi≤ ì
- assemble≥á i≤á requireΣá becausσ oµ thσ MACRO≤á used«á Onl∙á thσ ì
- resultant HEX file is required.
-
- 3«á Assuminτ tha⌠ yo⌡ caε usσ SYSGEN¼á obtaiε ß SYSGE╬ ì
- image of your current CP/M system and save it on disk.
-
- 4«á LoaΣá thσá SYSGE╬ imagσ int∩ memor∙ witΦá DD╘á (o≥ ì
- equivalent)« Oncσ loaded¼ verif∙ tha⌠ thσ origina∞ CC╨ i≤ a⌠ thσ ì
- IMAG┼á addres≤á founΣ abovσ anΣ computσá thσá integratioεá offse⌠ ì
- using the DDT H command:
- H<IMAGE adr>,<CPRLOC adr>
- Thσá seconΣ numbe≥ displayeΣ give≤ yo⌡ thσ OFFSE╘ valuσá requireΣ ì
- for step 5.
-
- 5«á Integratσá ZCPR int∩ you≥ SYSGE╬ imagσ viß DDT'≤ ╔ ì
- anΣ ROFFSE╘ commands« Usσ IZCPR.HE╪ (o≥ thσ namσ oµ you≥ versioε ì
- oµá ZCPR⌐ t∩ loaΣ thσ FC┬ anΣ ROFFSE╘ (wherσ OFFSE╘ wa≤á computeΣ ì
- iεá ste≡ 4⌐ t∩ loaΣ thσ ZCPR.HE╪ filσ int∩ memor∙ a⌠á thσá prope≥ ì
- location«á Checδá t∩ seσ tha⌠ ZCPR i≤ indeeΣ properl∙ loadeΣá b∙ ì
- examining the SYSGEN IMAGE area.
-
- 6«á Placσ thσ ne≈ systeφ oε disδ b∙ runninτ SYSGE╬ anΣ ì
- NOT loading the system from disk (use the memory image).
-
- Fo≥áá furthe≥á clarificatioεá oµá thσá abovσá process¼áá thσ ì
- followinτá i≤ ß samplσ termina∞ sessioε whicΦ outline≤ thσá step≤ ì
- taken.
-
- ZCPR Integration Example
-
-
- B>; Sample terminal session for integrating ZCPR
- B>sysgen
- SYSGEN VER 2.2
- SOURCE DRIVE NAME (OR RETURN TO SKIP)b
- SOURCE ON B, THEN TYPE RETURN <-- I hit the RETURN key here
- FUNCTION COMPLETE /
- DESTINATION DRIVE NAME (OR RETURN TO REBOOT) <-- and here
- B>save 44 cpm56.com <-- We now have a SYSGEN image of CP/M
- to work with
- è
-
- Page 5
-
-
-
-
-
- ZCPR - A Z80 Replacement for the CP/M CCP
-
-
- B>xdir
- XDIR Version 2.6 User Number: 0, Double Density
- File Attributes: Non-System
-
- Filename.Typ Size K Filename.Typ Size K Filename.Typ Size K
- -------- --- ------ -------- --- ------ -------- --- ------
- !TEXTWRK.-12 0 CPR .DOC 8 EE687 .TXT 4
- CPR .AQM 34 TFS .HLP 6 EE687PRE.TXT 4
- CPR .ASM 50 CONTENTS.T01 6 SW1 .TXT 10
- CPR .BAK 4 CONTENTS.T02 4 SW2 .TXT 2
- CPM56 .COM 12 CONTENTS.T03 4
- B: 30 Entries & 22 Files -- 338K Bytes Remaining
- File Data: 14 Files -- 154K Bytes Displayed
- B>bdosloc <-- Now to locate the CCP's address
- The Base Page Address of this system's BDOS is C5
- The Base Page Address of this system's CCP is BD <-- This is it
- B>ddt cpm56.com <-- Now to find the CCP in the SYSGEN image
- DDT VERS 2.0
- NEXT PC
- 2D00 0100
- -d900,90f <-- Start looking around here
- 0900 31 80 E7 3E 06 3C 3C FE 1B CA 00 C2 DA 11 E7 D6 1..>.<<.........
- -da00,a0f
- 0A00 31 00 01 01 01 0C C5 CD 0F E4 21 00 BE 11 00 04 1.........!.....
- -db00,b0f
- 0B00 31 00 01 01 01 11 C5 CD 0F E4 21 00 C0 11 00 02 1.........!.....
- -db80,b8f
- 0B80 31 00 01 01 09 01 CD A8 00 21 00 D2 11 00 C2 0E 1........!......
- -- Detail Left Out --
- -d1100 <-- I found it at 1100H; note the 2 JMP's
- 1100 C3 FF BD C3 FB BD 50 10 20 20 20 20 20 20 20 20 ......P.
- 1110 20 20 20 20 20 20 20 20 00 00 00 00 00 00 00 00 ........
- 1120 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
- -- Detail Left Out --
- -^├ <-- Returε t∩ CP/M╗ ╔ kno≈ tha⌠ CPRLO├ wil∞ be
- BD00H and the IMAGE offset is 1100H
-
- B>eΣ cpr.asφ {edi⌠ ZCPR herσ anΣ placσ CPRLOC=BD00H}#
- -- Detail Left Out --
-
- B>mac cpr $pz sz <-- Now to assemble the CPR
- CP/M MACRO ASSEM 2.0
- C4F0 <-- Note that CPR MUST end before BDOS
- begins!
- 014H USE FACTOR
- END OF ASSEMBLY
-
-
-
-
-
-
-
-
-
-
-
- Page 6
-
-
-
-
-
- ZCPR - A Z80 Replacement for the CP/M CCP
-
-
-
-
- B>ddt cpm56.com <-- Now to integrate!
- DDT VERS 2.0
- NEXT PC
- 2D00 0100
- -h1100,bd00 <-- Compute offset for new CPR
- CE00 5400 <-- Offset is 5400H
- -icpr.hex <-- Init FCB
- -r5400 <-- Read in new CPR with offset
- NEXT PC
- 2D00 0000
- -^C <-- Done!
- B>sysgen <-- Now to SYSGEN onto disk
- SYSGEN VER 2.2
- SOURCE DRIVE NAME (OR RETURN TO SKIP) <-- Use memory image
- DESTINATION DRIVE NAME (OR RETURN TO REBOOT)b <-- onto B:
- DESTINATION ON B, THEN TYPE RETURN
- FUNCTION COMPLETE
- DESTINATION DRIVE NAME (OR RETURN TO REBOOT) <-- Done for now
-
- B>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Page 7
-
-
-
-
-
- ZCPR - A Z80 Replacement for the CP/M CCP
-
-
-
- Setting the ZCPR Inline Options
-
- Thσá followinτá arσ thσ fou≥ basiπ option≤ availablσ t∩á thσ ì
- user under ZCPR for customization of his package.
-
- Option Name Function
-
- REL Configures CPRLOC (CPRLOC equ 0) for integration
- via MOVCPM rather than the DDT/SYSGEN technique
- outlined above; set to TRUE for MOVCPM integra-
- tion or FALSE for DDT/SYSGEN integration
-
- BASE Base address of your CP/M system; standard CP/M
- has a base of 0, but some CP/M systems (such as
- for the TRS-80 Model I and Heath/Zenith H89/Z89)
- start physical RAM memory at a higher address;
- equate BASE to the starting RAM memory address of
- your system
-
- CPRLOC This is the starting address of ZCPR; set the
- second CPRLOC equate to the address you obtain
- from BDOSLOC
-
- RAS This is an equate which masks out selected ZCPR
- command functions for security purposes on
- Remote Access Systems such as Bulletin Boards;
- the masked out functions currently include
- SAVE, ERA, REN, JUMP, GO, and GET; set RAS to TRUE
- to mask these out or FALSE to leave them in
-
- SUBA This is an equate which determines the drive
- onto which ZCPR will look for an executing
- Indirect Command File. If the basic philosophy
- of the Indirect Command File described above is
- to be maintained, this symbol should be set to
- TRUE (look on drive A: for the $$$.SUB file); if
- not, this symbol should be set to FALSE (look on
- the default drive from the $$$.SUB file). To
- review, the basic philosophy of the Indirect
- Command File is that any sequence of commands
- which may be issued from the console (within
- reason, which means NOT to erase a $$$.SUB file)
- may also be issued from within an Indirect
- Command File, and the resultant execution should
- be identical (same functions performed).
-
- CLEVEL3 This equate enables or disables extended Command
- Leve∞ │ Processing« Iµ se⌠ t∩ TRUE¼ extended
- Command Level 3 Processing is enabled and the user
- command line is automatically capitalized, the
- terminatinτ zer∩ i≤ placeΣ a⌠ thσ enΣ oµ thσ
- buffer, and the internal CIBPTR is set correctly
- (see later for more information).
-
-
-
- Page 8
-
-
-
-
-
- ZCPR - A Z80 Replacement for the CP/M CCP
-
-
-
-
- Customization Symbols
-
- Thσ followinτ symbol≤ arσ provideΣ fo≥ furthe≥ customizatioε ì
- of ZCPR to a user's particular tastes and hardware facilities.
-
- Option Name Function
-
- NLINES Number of lines on the user's CRT for paging
-
- WIDE This equate is used to select a narrow or wide
- display under the DIR command; if WIDE is equated
- to TRUE, each file name is separated by two
- spaces, a FENCE, and two more spaces; if WIDE is
- equated to FALSE, each file name is separated by
- one space, a FENCE, and one more space
-
- PGDFLT This is the Paging Default flag for the TYPE
- command; if PGDFLT is set to TRUE, the TYPE
- command will page its output by default and
- the P option on the TYPE command (see below)
- will prohibit paging; if PGDFLT is set to FALSE,
- the TYPE command will NOT page its output by
- default and the P option will enable paging
-
- PGDFLG This sets the option character in the command
- line for the TYPE command (the 'P' mentioned
- above); if the user wishes to change this option
- character, he need only change this equate
-
- MAXUSR This is the largest user number recognized by
- the USER command; if the user wishes to protect
- the higher user areas, he may set this symbol
- to the highest area normally accessable; 15 is
- the largest permitted value for MAXUSR
-
- SYSFLG This is the option character for the DIR command
- line which is used to specify that DIR search
- All Files (both $SYS and $DIR) for its display;
- the distributed default for this is 'A'
-
- SOFLG This is the option character for the DIR command
- line which is used to specify that DIR search
- ONLY the $SYS files for its display; the distri-
- buted default for this is 'S'
-
- SUPRES Set SUPRES to TRUE to suppress printing the user
- number when the user is under User Number 0 or
- set SUPRES to FALSE to ALWAYS display the User
- Number with the CPR prompt; with SUPRES set to
- TRUE, a user on B: in user 0 sees 'B>' as the
- prompt, but with SUPRES set to FALSE, a user on
- B: in user 0 sees 'B0>' as the prompt
-
-
-
- Page 9
-
-
-
-
-
- ZCPR - A Z80 Replacement for the CP/M CCP
-
-
-
- DEFUSR This is the CPR-default user number which is
- searched in the command hierarchy for the COM
- files (distributed as 0); the DFU changes this
- temporarily until a Warm Boot or Cold Boot is
- done, at which time the search reverts to this
- value
-
- SPRMPT This is the CPR prompt character which indicates
- that a SUBMIT file is in execution; by default
- it is set to '$', so prompts like 'A$' appear
- during SUBMIT file execution
-
- CPRMPT This is the CPR prompt character which indicates
- that the CPR is awaiting a user console command;
- by default it is set to '>', so prompts like
- 'A>' appear during user input to the CPR
-
- NUMBAS┼ Thi≤ i≤ thσ escapσ characte≥ useΣ b∙ thosσ
- commands which require a DECIMAL number as
- an argument; placing this character after
- the number argument switches the base to
- HEXADECIMAL; for example, 'SAVE 15 MYFILE' can be
- expressed as 'SAVE FH MYFILE' if NUMBASE is
- set to 'H' (the default)
-
- SECTFLG This character constant is the suffix option for
- the SAVE command which specifies that sectors,
- as opposed to pages, are to be saved; the default
- value is 'S'
-
- FENCE This is the character printed to separate entries
- in a directory listing; it's default value is '|'
-
-
- Patching SUBMIT.COM
-
- SUBMIT.CO═á ma∙ bσ patcheΣ t∩ ruε witΦ ZCP╥ b∙ thσ followinτ ì
- procedurσá (thi≤á i≤á recommendeΣá iµá thσá use≥á doe≤á no⌠á havσ ì
- SUB.COM)«á Thi≤á patcΦ simpl∙ make≤ i⌠ alway≤ placσ thσá $$$.SU┬ ì
- filσ oε Drivσ A:« Illustrative termina∞ sessioε follows:
-
- A>ddt b:submit.com
- DDT VERS 2.0
- NEXT PC
- 0600 0100
- -s5bb <-- Patch is at 5BB Hex
- 05BB 00 1 <-- Change 0 (default drive) to 1 (drive A:)
- 05BC 24 . <-- That's it!
- -d5b0 5cf <-- See change
- 05B0 00 00 00 00 00 00 30 30 31 20 24 01 24 24 24 20 ......001 $.$$$
- 05C0 20 20 20 20 53 55 42 00 00 00 1A 1A 1A 1A 1A 1A SUB.........
- -^C <-- Done
- A>save 5 newsubmt.com <-- Save new SUBMIT.COM file
-
-
-
- Page 10
-
-
-
-
-
- ZCPR - A Z80 Replacement for the CP/M CCP
-
-
-
- Part B
- Usage Instructions and Explanation of Commands
-
-
- Thσá followinτ instruction≤ arσ writteε witΦ thσá assumptioε ì
- tha⌠á thσá reade≥ i≤ quitσ familia≥ witΦ ho≈ t∩ usσ CP/═ 2.▓á anΣ ì
- it≤ CCP«á ZCPR i≤ writteε a≤ ß logica∞ extensioε oµ thσ CP/═ 2.▓ ì
- CC╨ philosoph∙ anΣ shoulΣ bσ addresseΣ a≤ such.
-
-
-
- The ZCPR Command Hierarchy Search
-
- Thσ first¼á anΣ mos⌠ basiπ thing¼ t∩ learε abou⌠ ZCPR i≤ thσ ì
- orde≥ iε whicΦ i≤ searche≤ fo≥ ß CO═ filσ fo≥ executioε o≥ ß filσ ì
- specifieΣá b∙ thσ GE╘ command«á Unde≥ thσ CP/═ 2.▓ CCP¼á iµá thσ ì
- specifieΣá CO═ filσ commanΣ wa≤ no⌠ founΣ oε thσ curren⌠ drivσ iε ì
- thσá curren⌠ use≥ area¼á thσ CC╨ aborteΣ witΦ aεá erro≥á message« ì
- ZCPR¼á however¼á continue≤ searchinτ froφ thi≤ poin⌠ ß maximuφ oµ ì
- tw∩á morσá levels«á Thi≤ commanΣ hierarch∙ searcΦá wa≤á outlineΣ ì
- abovσ anΣ i≤ describeΣ herσ iε furthe≥ detail.
-
- 1«á Iµá thσá commanΣ i≤ oµ thσ forφ 'COMMANDº anΣá NO╘ ì
- 'd:COMMAND'¼á thσá CPR-residen⌠á commanΣ lis⌠ i≤ searcheΣá fo≥á ß ì
- match«á Iµá thσá matcΦ i≤ found¼á thσá CPR-residen⌠á commanΣá i≤ ì
- immediatel∙ processed«á Iµ thσ matcΦ i≤ no⌠ founΣ o≥ thσ commanΣ ì
- i≤á oµ thσ forφ 'd:COMMAND'¼á thσ nex⌠ ste≡ i≤ taken«á Notσ tha⌠ ì
- thσá 'd:COMMANDºá forφ i≤ gooΣ fo≥ executinτ ß commanΣá CO═á filσ ì
- whicΦá ha≤ thσ samσ namσ a≤ ß CPR-residen⌠ commanΣ (sucΦ a≤á SAV┼ ì
- or DIR).
-
- 2«á Iµá thσ commanΣ i≤ oµ thσ forφá 'd:COMMAND'¼á disδ ì
- drivσá 'd:ºá i≤á temporaril∙ loggeΣ iε fo≥á thσá purposσá oµá thσ ì
- commanΣá search«á Otherwise¼á thσá currentl∙ logged-iε drivσá i≤ ì
- used.
-
- 3« No≈ thσ filσ nameΣ COMMAND.CO═ i≤ searcheΣ for« Iµ ì
- found¼á i⌠á i≤ loadeΣ int∩ memor∙ startinτ a⌠ 100╚ anΣá executed« ì
- If not, proceed to step 4.
-
- 4«á No≈á tha⌠á thσ firs⌠ searcΦá fo≥á COMMAND.CO═á ha≤ ì
- failed¼á thσá CPR check≤ t∩ seσ iµ thσ use≥ i≤ unde≥ thσá curren⌠ ì
- Defaul⌠ Use≥ Number«á Thσ Defaul⌠ Use≥ Numbe≥ ma∙ bσ tha⌠ se⌠ b∙ ì
- thσá DEFUS╥ equatσ iε thσ CPR o≥ tha⌠ se⌠ b∙ thσ use≥ viß thσ DF╒ ì
- command«á DEFUS╥á i≤ iε effec⌠ iµ DF╒ ha≤ no⌠ beeε issueΣá sincσ ì
- thσ las⌠ Warφ o≥ ColΣ Boot¼ anΣ DF╒ i≤ iε effec⌠ iµ i⌠ wa≤ issueΣ ì
- sincσ thσ las⌠ Warφ o≥ ColΣ Boot«á Iµ thσ use≥ i≤ NO╘ unde≥á thσ ì
- curren⌠á Defaul⌠ Use≥ Number¼á ZCPR temporaril∙ log≤ hiφ int∩á i⌠ ì
- anΣá searche≤á thσ directory«á Iµ COMMAND.CO═ i≤á found¼á i⌠á i≤ ì
- loadeΣ a≤ describeΣ abovσ anΣ executed« Iµ not¼ ZCPR proceed≤ t∩ ì
- the next step.
-
-
-
-
-
- Page 11
-
-
-
-
-
- ZCPR - A Z80 Replacement for the CP/M CCP
-
-
-
- 5«á Thσ use≥ i≤ no≈ iε thσ Defaul⌠ Use≥ Number¼ anΣ a⌠ ì
- thi≤á point¼á ZCPR check≤ t∩ seσ iµ thσ use≥ i≤ oε disδ drivσ A:« ì
- Iµ not¼ i⌠ temporaril∙ log≤ int∩ A║ anΣ searche≤ thσ defaul⌠ use≥ ì
- numbe≥á oµá A║á fo≥á COMMAND.COM«á Iµ found¼á i⌠á i≤á loadeΣá a≤ ì
- describeΣ abovσ anΣ executed«á Iµ not¼á ZCPR print≤ thσá commanΣ ì
- namσá a≤á aεá erro≥ messagσ anΣ return≤ t∩á commanΣá inpu⌠á mode¼ ì
- aborting the SUBMIT file if COMMAND came from it.
-
- Iεá al∞ case≤ oµ thσ searcΦ above¼á iµ COMMAND.CO═ i≤ found¼ ì
- afte≥á i⌠á i≤ loadeΣ int∩ memory¼á ZCPR reset≤ thσá use≥á t∩á hi≤ ì
- origina∞ disδ drivσ anΣ use≥ number« Hence¼ thσ file≤ referenceΣ ì
- by the user by default are obtained from this environment.
-
- T∩á illustratσ thi≤ commanΣ hierarch∙ search¼á conside≥á thσ ì
- following examples:
-
- Example 1: DEFUSR equ 0 {default user number is 0}
-
- B10> <-- User is on Drive B:, User Number 10
- B10>ASM TEST.BBZ <-- User wishes to assemble TEST.ASM in
- Drive B:, User 10
- <-- At this point, ZCPR looks on B:/10 for ASM.COM, fails,
- looks on B:/0, fails, and finally looks on A:/0; it
- finds ASM.COM here and goes back to B:/10 for the file
-
-
- Example 2: DEFUSR equ 0 and DFU issued
-
- B10> <-- User is on Drive B:, User Number 10
- B10>DFU 5 <-- User Selects User 5 as default
- B10>ASM TEST.BBZ <-- As above
- <-- At this point, ZCPR looks on B:/10 for ASM.COM, fails,
- look on B:/5, fails, and finally looks on A:/5; it
- fails here also and prints ASM? as an error message
-
- Example 3: DEFUSR equ 0
-
- B> <-- User is on Drive B:, User Number 0
- B>ASM TEST.BBZ <-- As above
- <-- At this point, ZCPR looks on B:/0 for ASM.COM, fails,
- looks on A:/0, fails, and prints error message
-
- Example 4: DEFUSR equ 0
-
- A10> <-- User is on Drive A:, User Number 10
- A10>ASM TEST.AAZ <-- As above, but file on A:
- <-- At this point, ZCPR looks on A:/10 for ASM.COM, fails,
- looks on A:/0, fails, and prints error message
-
-
-
-
-
-
-
-
- Page 12
-
-
-
-
-
- ZCPR - A Z80 Replacement for the CP/M CCP
-
-
-
- Another Example:
-
- Fo≥á example¼á iµ thσ use≥ i≤ loggeΣ int∩ Drivσá B║á iε ì
- Use≥ Areß 10¼ thσ Defaul⌠ Use≥ Numbe≥ i≤ 0¼ anΣ thσ followinτ CO═ ì
- file≤ arσ presen⌠ a≤ indicateΣ --
-
- WM.COM on Drive A: in User 0
- MBASIC.COM on Drive A: in User 0 and on
- Drive B: in User 0
- TEST.COM on Drive B: in User 10 and Drive B:
- in User 0
-
- theεá thσá followinτá happen≤ wheεá thσá followinτá command≤á arσ ì
- issued from the console (or Indirect Command File):
-
- B10>WM TEST2.TXT
- \ \ \__ File to be edited
- \ \__ Invoke the WM.COM file (Word Master editor)
- \__ User is on Drive B: in User Area 10
-
- Results:
- ZCPR searche≤ B║á Use≥ 10¼ B║ Use≥ 0¼ anΣ A║ Use≥ ░ fo≥ ì
- WM.COM╗á i⌠ find≤ WM.CO═ iε A║á Use≥ 0¼á load≤ it¼á log≤ thσ use≥ ì
- back into B: User 10, and executes it.
-
- B10>MBASIC
- \ \__ Invoke the MBASIC.COM file (MBASIC Interpreter)
- \__ User is on Drive B: in User Area 10
-
- Results:
- ZCPR searche≤ B║á Use≥ 1░ anΣ B║ Use≥ ░ fo≥ MBASIC.COM╗ ì
- i⌠ find≤ MBASIC.CO═ iε B║ Use≥ 0¼ s∩ i⌠ doesn'⌠ bothe≥ t∩ looδ oε ì
- A║á Use≥ 0«á MBASIC.CO═ i≤ theε loadeΣ anΣ executeΣ a≤ describeΣ ì
- in the previous example.
-
- B10>TEST
- \ \__ Invoke the TEST.COM file (TEST program)
- \__ User is on Drive B: in User Area 10
-
- Results:
- ZCPRá searche≤á B║á Use≥á 1░á fo≥á TEST.COM╗á i⌠á find≤ ì
- TEST.CO═ iε B║á Use≥ 0¼á s∩ i⌠ doesn'⌠ bothe≥ t∩ looδ furthe≥ (iµ ì
- i⌠ had¼á i⌠ woulΣ havσ founΣ TEST.CO═ iε B║ Use≥ 0)« TEST.CO═ i≤ ì
- then loaded and executed as described above.
-
- B10>TEST2
- \ \__ Invoke the TEST2.COM file (TEST2 program)
- \__ User is on Drive B: in User Area 10
-
- Results:
- ZCPR searche≤ B║á Use≥ 10¼ B║ Use≥ 0¼ anΣ A║ Use≥ ░ fo≥ ì
- TEST2.COM╗á i⌠á doesn'⌠ finΣ it¼á s∩ i⌠ issue≤ thσ erro≥á messagσ ì
- 'TEST2?', which says it couldn't find TEST2.COM.
- è
-
- Page 13
-
-
-
-
-
- ZCPR - A Z80 Replacement for the CP/M CCP
-
-
-
-
-
- The ZCPR-Resident Commands
-
- Thσá followinτá page≤ describσ thσá ZCPR-Residen⌠á Commands« ì
- Thesσá arσ command≤ locateΣ withiε ZCPR itselµ whicΦ arσ executeΣ ì
- froφ withiε ZCPR« Thσ phrase≤ <afn╛ anΣ <ufn╛ refe≥ t∩ ambiguou≤ ì
- file name and unambigous file name as per the CP/M convention.
-
- Command: DIR
- Function: To Display a listing of the names of the files on disk
- Forms:
- DIR <afn> <-- Displays $DIR files
- DIR <afn> S <-- Displays $SYS files
- DIR <afn> A <-- Displays both $DIR and $SYS files
- Customization Variables:
- WIDE SYSFLG SOFLG FENCE
- Examples:
- DIR *.ASM <-- All $DIR .ASM files
- DIR *.COM S <-- All $SYS .COM files
- DIR *.COM A <-- All .COM files
- Notes:
- Iµá ßá filσ i≤ scanneΣ fo≥ anΣ n∩ sucΦ namσ exist≤ oεá disk¼ ì
- thσá 'N∩á Filesº messagσ wil∞ appear«á However¼á iµá ßá filσá i≤ ì
- scanneΣ fo≥ anΣ thσ namσ exist≤ a≤ ß $SY╙ filσ anΣ $DI╥ file≤ arσ ì
- beinτá scanneΣ for¼á n∩ filσ namσ i≤ displayeΣ bu⌠ thσ 'N∩ Filesº ì
- messagσ doe≤ NO╘ appear« Fo≥ example¼ iµ TEST.CO═ i≤ ß $SY╙ filσ ì
- anΣá 'DI╥á TEST.COMº i≤ issued¼á n∩á messagσá appears«á Iµá 'DI╥ ì
- TEXT.COMº i≤ issueΣ anΣ TEXT.CO═ doe≤ no⌠ exis⌠ oε disk¼á thσ 'N∩ ì
- Files' message is displayed.
-
-
- Command: ERA
- Function: To Erase the specified $R/W files from disk
- Forms:
- ERA <afn> <-- Erase both $DIR and $SYS files
- Customization Variables:
- WIDE FENCE
- Examples:
- ERA *.ASM <-- Erase all .ASM files
- ERA *.* <-- Erase all files
- Notes:
- Iµ ß $R/╧ filσ i≤ encountered¼á ß BDO╙ erro≥ messagσ wil∞ bσ ì
- displayeΣá anΣ thσ procedurσ i≤ stopped«á Thσ use≥ i≤ unsurσá a⌠ ì
- thi≤á timσ a≤ t∩ whicΦ file≤ havσ beeε eraseΣ anΣ whicΦ havσá no⌠ ì
- anΣ shoulΣ check« Sorr∙ fo≥ thi≤ problemí Thσ ERAS┼ commanΣ (t∩ ì
- bσá giveεá t∩ SIG/═ b∙ RL├ iε thσ nea≥ future⌐ i≤ ßá solutioεá t∩ ì
- this problem.
-
-
-
-
-
-
-
-
- Page 14
-
-
-
-
-
- ZCPR - A Z80 Replacement for the CP/M CCP
-
-
-
-
- Command: LIST
- Function: To Print the specified file on the CP/M LST: device
- Forms:
- LIST <ufn> <-- Print the file (no paging)
- Customization Variables:
- -None-
- Examples:
- LIST TEST.TXT <-- Print TEST.TXT on LST:
- Notes:
- Iµá thσ filσ ha≤ ß $SY╙ attribute¼á i⌠ wil∞ bσ founΣ a≤ wel∞ ì
- as those with $DIR attributes.
-
-
- Command: TYPE
- Function: To Print the specified file on the CP/M CON: device
- Forms:
- TYP┼ <ufn╛ <-- Prin⌠ thσ filσ witΦ thσ paginτ deflt
- TYPE <ufn> P <-- Print the file with the paging deflt
- negated
- Customization Variables:
- NLINES PGDFLT PGDFLG
- Examples:
- TYPE TEST.TXT
- TYPE TEST.TXT P
- Notes:
- Wheεá thσá displa∙ pause≤ durinτ paging¼á typσ an∙á cha≥á t∩ ì
- continue or ^C to abort. ^S also works.
-
-
- Command: SAVE
- Function: To Copy the TPA starting at 100H to disk
- Forms:
- SAVE <Number of Pages> <ufn> <-- <Number of Pages> in DEC
- SAVE <Number of Pages>H <ufn> <-- <Number of Pages> in HEX
- SAVE <Number of Sectors> <ufn> S <-- Number of sectors
- SAVE <Number of Sectors>H <ufn> S <-- Number of sectors
- Customization Variables:
- NUMBASE RAS
- Examples:
- SAVE 15 MYFILE.TXT <-- 15 pages saved
- SAVE FH MYFILE.TXT <-- 15 pages saved
- SAVE 10H MYFILE.TXT S <-- 16 sectors (8 pages) saved
- Notes:
- Iµ thσ filσ namσ t∩ bσ saveΣ alread∙ exists¼á theε SAV┼ wil∞ ì
- exi⌠ witΦ thσ messagσ 'Delete File?'╗ iµ thσ use≥ REALL┘ want≤ t∩ ì
- savσá unde≥á thi≤ name¼á hσ ma∙ theε typσ ┘ o≥ ∙ anΣ thσá curren⌠ ì
- filσ wil∞ bσ deleteΣ anΣ theε recreateΣ containinτ thσá specifieΣ ì
- part of the TPA.
-
-
-
-
-
-
-
- Page 15
-
-
-
-
-
- ZCPR - A Z80 Replacement for the CP/M CCP
-
-
-
-
-
- Command: REN
- Function: To Change the name of a disk file
- Forms:
- REN <ufn new>=<ufn old>
- Customization Variables:
- RAS
- Examples:
- REN NEWFILE.TXT=OLDFILE.TXT
- Notes:
- Iµ <ufε new╛ alread∙ exists¼ thσ messagσ 'Deletσ File?º wil∞ ì
- bσá printeΣá anΣ thσ use≥ ma∙ responΣ witΦ ┘ o≥ ∙ t∩á deletσá thσ ì
- curren⌠ <ufε new╛ anΣ theε renamσ <ufε old╛ t∩ <ufε new>.
-
- Command: USER
- Function: To Change the current user number
- Forms:
- USER <User Number> <-- <User Number> in DEC
- USER <User Number>H <-- <User Number> in HEX
- Customization Variables:
- -None-
- Examples:
- USER 15 USER FH USER 0
- USER <-- Same as USER 0
- Notes:
- -None-
-
-
- Command: DFU
- Function: To Temporarily Change the default user number for the
- command hierarchy search
- Forms:
- DFU <User Number> <-- <User Number> in DEC
- DFU <User Number>H <-- <User Number> in HEX
- Customization Variables:
- -None-
- Examples:
- DFU 15 DFU FH DFU 0
- DFU <-- Same as DFU 0
- Notes:
- See above for explanation.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Page 16
-
-
-
-
-
- ZCPR - A Z80 Replacement for the CP/M CCP
-
-
-
-
-
- Command: JUMP
- Function: To "call" the subroutine at the specified page address
- Forms:
- JUMP <Address> <Cmd Parms> <-- <Address> in HEX
- Customization Variables:
- NUMBASE RAS
- Examples:
- JUMP E000 or JUMP E000H <-- Jump to E000H
- JUMP <-- Jump to 000H
- JUMP 0 <-- Jump to 000H
- Notes:
- JUM╨ perform≤ ß subroutinσ "call"¼ s∩ thσ calleΣ routinσ ma∙ ì
- return to the ZCPR by either a RET or a Warm Boot.
-
-
- Command: GO
- Function: To "call" the subroutine starting at 100H
- Forms:
- GO <Cmd Parms> <-- Execute reentrant at 100H
- Customization Variables:
- RAS
- Examples:
- GO *.ASM <-- Assuming XDIR is loaded,
- gives directory of *.ASM
- Notes:
- Thi≤á commanΣ i≤ identica∞ iε functioε t∩ JUM╨á 100H╗á JUMP¼ ì
- however¼ leave≤ thσ addres≤ a≤ thσ firs⌠ entr∙ iε CP/═ BAS┼ ½ 80╚ ì
- (the input line buffer), while GO has no such address.
-
-
- Command: GET
- Function: To load a file from disk into memory starting at the
- specified page
- Forms:
- GET <Address> <ufn> <-- <Address> in HEX
- Customization Variables:
- NUMBASE RAS
- Examples:
- GET 8000 TEST.80 <-- Load TEST.80 starting at 8000H
- GE╘ 10░ TEST.8░ o≥ GE╘ 100╚ TEST.8░ <-- LoaΣ TEST.8░
- starting at 100H
- GE╘ ░ TEST.8░ <-- LoaΣ TEST.8░ startinτ a⌠ 000H
- Notes:
- GE╘á searche≤ fo≥ thσ specifieΣ filσ accordinτ t∩á thσá samσ ì
- commanΣá hierarch∙á searcΦ employeΣ b∙ thσ ZCPR commanΣá scanner« ì
- Hence¼á iµ thσ use≥ i≤ oε B:/1░ anΣ thσ filσ i≤ oε A:/░ witΦá thσ ì
- curren⌠á defaul⌠ use≥ numbe≥ a⌠ 0¼á GE╘ wil∞ searcΦ froφ B:/1░ t∩ ì
- B:/0 to A:/0 in looking for the file.
-
-
-
-
-
-
- Page 17
-
-
-
-
-
- ZCPR - A Z80 Replacement for the CP/M CCP
-
-
-
- ZCPR Error Messages
-
- Thσá followinτá arσ thσ erro≥ message≤ issueΣá b∙á ZCPRá anΣ ì
- their meanings.
-
- Message Meaning
-
- ? Printed after a command or an argument means that such
- was invalid
-
- No File From DIR, this means that DIR did not locate any files
- Also from ERA with the same meaning
-
- All? Issued in response ERA *.*, asks the user is he really
- wants to erase all the files. Unlike under the
- original CP/M 2.2 CCP, single character input is
- required (Y or y for yes and anything else for no)
- with NO <CR> to end the line
-
- Full From SAVE, means that there is not enough space on
- disk
- From GET or command load by CPR, means that there
- is not enough space in memory
-
- Delete File?
- Froφ RE╬ o≥ SAVE¼ mean≤ tha⌠ thσ filσ specifieΣ alread∙ ì
- exist≤ oε disδ anΣ thσ use≥ ma∙ typσ ┘ o≥ ∙ t∩ deletσ ì
- it and proceed with the REN or SAVE function
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Page 18
-
-
-
-
-
- ZCPR - A Z80 Replacement for the CP/M CCP
-
-
-
-
- Part C
- ZCPR Command Levels and How to Use Them
-
-
- ZCPRá Versioε 1.░ anΣ beyonΣ support≤ threσ distinc⌠ commanΣ
- level≤ iε it≤ implementation« EacΦ leve∞ constitute≤ ß differen⌠ ì
- way to issue a command for ZCPR to process.
-
- CommanΣ Level≤ ▒ anΣ ▓ arσ commoε t∩ al∞ implementation≤á oµ ì
- CP/═á anΣ CP/Z═ froφ CP/═ Versioε 1.4«á CommanΣ Leve∞ ▒ i≤á tha⌠ ì
- commanΣ leve∞ iε whicΦ thσ commanΣ i≤ issueΣ b∙ thσ use≥ froφ hi≤ ì
- consolσá terminal«á Thσá promp⌠á 'd>º o≥ 'du>ºá appear≤á oεá thσ ì
- terminal¼á anΣá thσá use≥á i≤ alloweΣ t∩ ente≥ thσá commanΣá witΦ ì
- editinτ froφ thσ terminal« CommanΣ Leve∞ ▓ i≤ tha⌠ commanΣ leve∞ ì
- in which the command is entered from an executing $$$.SUB file.
-
- Iεá botΦ cases¼á thσ commanΣ i≤ storeΣ iε thσ interna∞á ZCPR ì
- buffe≥ calleΣ CIBUF╞ (CommanΣ Inpu⌠ BUFFer)«á Unde≥ botΦ CommanΣ ì
- Level≤á ▒á anΣ 2¼á thσ commanΣ i≤ placeΣ int∩á thi≤á buffer¼á thσ ì
- character≤ oµ thσ commanΣ linσ arσ capitalized¼ ß characte≥ coun⌠ ì
- whicΦá indicate≤ thσ numbe≥ oµ character≤ iε thσ commanΣ linσá i≤ ì
- storeΣ iε CBUF╞ (thσ bytσ beforσ CIBUFF)¼á aε endinτ binar∙ ░á i≤ ì
- placeΣá afte≥á thσ las⌠ characte≥ iε thσ commanΣá line¼á anΣá thσ ì
- interna∞á pointe≥ CIBPT╥ (CommanΣ Inpu⌠ Buffe≥ PoinTeR⌐ i≤ se⌠ t∩ ì
- point to CIBUFF (the first character of the command line).
-
- CommanΣá Leve∞ │ i≤ aε extendeΣ concep⌠ t∩ CommanΣ Level≤á ▒ ì
- anΣá ▓á whicΦ i≤ specificall∙ supporteΣ b∙ ZCP╥ Versioεá 1.░á anΣ ì
- beyond« Thi≤ commanΣ leve∞ allow≤ ß transien⌠ prograφ t∩ placσ ß ì
- commanΣá linσ int∩ CIBUF╞ anΣ thσ characte≥ coun⌠ int∩ CBUF╞á anΣ ì
- havσ thi≤ commanΣ linσ executeΣ b∙ ZCPR«á Oncσ contro∞ i≤ trans-ì
- ferreΣ t∩ ZCP╥ t∩ executσ thσ commanΣ line¼ thσ transien⌠ prograφ ì
- whicΦá placeΣá thσ commanΣ linσ lose≤ contro∞ anΣ thσ commanΣá i≤ ì
- executeΣá exactl∙ a≤ thougΦ i⌠ haΣ beeε typeΣ b∙ thσ use≥ a⌠á hi≤ ì
- consolσ terminal.
-
- Iεá orde≥á fo≥á ß transien⌠ prograφ t∩ utilizσá thσá CommanΣ ì
- Leve∞ │ facility¼ thi≤ prograφ MUS╘ d∩ thσ following:
-
- 1« Locatσ thσ ZCPR« Sincσ thσ ZCP╥ i≤ ALWAY╙ 2╦ byte≤ ì
- iεá sizσ anΣ locateΣ directl∙ unde≥ thσ BDOS¼á thσ transien⌠á caε ì
- locatσá thσá ZCP╥á b∙ examininτ thσ BDO╙ entr∙á pagσá addres≤á a⌠ ì
- locatioεá ╖á anΣá subtractinτ ╕ froφ thi≤ numbe≥ (╕á page≤á ╜á 2╦ ì
- bytes)« Thσ resultinτ numbe≥ i≤ thσ basσ pagσ addres≤ oµ ZCPR.
-
- 2«á Storσ thσ commanΣ linσ iε CIBUF╞ anΣ thσ characte≥ ì
- coun⌠á iεá CBUFF«á Knowinτ thσ basσ pagσ addres≤á oµá ZCPR¼á thσ ì
- following information is useful in doing this:
-
-
-
-
-
-
-
- Page 19
-
-
-
-
-
- ZCPR - A Z80 Replacement for the CP/M CCP
-
-
-
-
- ORG CPRLOC ;Base Address of ZCPR
- JMP CPR ;Enter ZCPR and Execute Default Cmd
- JMP CPR1 ;Enter ZCPR and Don't Execute
- MBUFF: DB BUFLEN ;Size of CIBUFF in bytes
- CBUFF: DS 1 ;Number of Bytes in Command Line
- CIBUFF: DS BUFLEN ;Buffer for Command Line
- DS 1 ;Buffer for Ending 0 (set by ZCPR)
- CIBPTR: DS 2 ;Address of CIBUFF (set by ZCPR)
-
-
- 3«á Obtaiεá thσ User/Disδ Flag«á Locatioε ┤á contain≤ ì
- thi≤ number¼á bu⌠ thσ use≥ ma∙ selec⌠ ß flaτ oµ hi≤ choice« Thi≤ ì
- flaτá i≤á onσá bytσá long¼á anΣ thσ high-orde≥á nybblσá (┤á bits⌐ ì
- contain≤á thσ use≥ numbe≥ anΣ thσ low-orde≥ nybblσá contain≤á thσ ì
- disδá numbe≥ t∩ proces≤ thσ commanΣ from«á Thσ User/Disδ Flaτ i≤ ì
- to be passed to ZCPR in the C Register.
-
- 4« Wheε ready¼ transfe≥ contro∞ t∩ ZCPR t∩ proces≤ thσ ì
- commanΣ b∙ JMPinτ t∩ thσ basσ addres≤ oµ ZCPR«á Thσ firs⌠ JM╨ iε ì
- thσ JM╨ Tablσ giveε abovσ i≤ a⌠ thi≤ address« A⌠ thi≤ time¼ ZCPR ì
- wil∞á loτ iε thσ use≥ anΣ disδ iε thσ User/Disδ Flaτ anΣá proces≤ ì
- the Command Level 3 Command Line.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Page 20
-
-
-
-
-
- ZCPR - A Z80 Replacement for the CP/M CCP
-
-
-
-
- Thσá followinτá i≤ ß samplσ prograφá whicΦá illustrate≤á thσ ì
- steps outlined above:
-
- ;
- ; Demonstration of Command Level 3 Facility by RLC
- ;
- udflag equ 4 ;Address of User/Disk Flag
- bdos equ 5 ;Address of BDOS Entry Point
-
- org 100h
-
- lxi d,prmpt ;Print User Prompt
- mvi c,9 ;PRINT function
- call bdos
-
- lhld bdos+1 ;Get address of BDOS
- mov a,h ;High-Order Address in A
- sui 8 ;A=High-Order Address of CPR
- mov h,a ;HL=Address of CPR
- mvi l,0
- shld cpr ;Save address in buffer
-
- lxi d,6 ;Point to command line buffer
- dad d ;HL points to command line buffer
- xchg ;DE points to command line buffer
- mvi c,10 ;READLN into this buffer
- call bdos
-
- lhld cpr ;Get Address of CPR
- lda udflag ;Get User/Disk Flag
- mov c,a ; ... in C
- pchl ;Run Command Line
-
- cpr: ds 2 ;CPR Address buffer
- prmpt: db 'User Command? $'
-
-
-
-
-
-
- Enjoy using ZCPR!
- -- RLC
-
-
-
-
-
-
-
-
-
-
-
-
- Page 21
-
-
-
-
-