home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ftp.barnyard.co.uk
/
2015.02.ftp.barnyard.co.uk.tar
/
ftp.barnyard.co.uk
/
cpm
/
walnut-creek-CDROM
/
CPM
/
ZCPR2
/
Z2RAT.WS
< prev
next >
Wrap
Text File
|
2000-06-30
|
53KB
|
1,030 lines
.he ZCPR2 Rationale Manual
.fo Page #
Rationale Manual for ZCPR2
1.0 Introduction
Thi≤á Rationalσá Manua∞ assume≤ tha⌠ yo⌡ havσ reaΣ thσá Conì
cept≤á Manua∞ oµ ZCPR▓ anΣ understanΣ it«á Havinτ reaΣá thσá Inì
stallatioεá Manua∞ anΣ thσ User'≤ Guidσ i≤ als∩ helpful«á Iµ yo⌡ ì
havσ no⌠ reaΣ a⌠ leas⌠ thσ Concept≤ Manua∞ yet¼á ╔ recommenΣ tha⌠ ì
yo⌡ g∩ bacδ anΣ reaΣ it.
╔ gues≤ thσ ver∙ firs⌠ questioε t∩ answe≥ iε thi≤ manua∞á i≤ ì
"Wh∙á havσá ßá ZCP╥ o≥ ZCPR▓ iε thσ firs⌠á place?óá Rathe≥á thaε ì
responΣ witΦ anothe≥ question¼á likσ "Wh∙ not?"¼ let'≤ takσ ou⌠ ß ì
littlσ timσ t∩ looδ a⌠ CP/M.
CP/═ wa≤ anΣ i≤ ß gooΣ idea« I⌠ i≤ ß smal∞ operatinτ systeφ ì
whicΦ encapsulate≤ thσ targe⌠ microcompute≥ iε ß virtua∞ machine« ì
ThrougΦá thi≤ virtua∞ machine¼á softwarσ transportabilit∙ a⌠á thσ ì
binar∙ levelô i≤ realized«á A≤ ß genera∞ rule¼ yo⌡ caε picδ u≡ aε ì
objec⌠á prograφ (iε absolutσ objec⌠ form⌐ whicΦ run≤ oε onσá CP/═ ì
system¼á transpor⌠á i⌠á t∩ anothe≥ CP/═ systeφ whicΦá i≤á runninτ ì
differen⌠á hardware¼á anΣ executσ i⌠ withou⌠ modifyinτ i⌠ iεá an∙ ì
way« Thi≤ i≤ significant!
CP/═ i≤ b∙ n∩ mean≤ ß panacea¼ however« ┴ typica∞ operatinτ ì
systeφá (iε thσ conventiona∞ sense⌐ manage≤ fou≥ resource≤ oµ thσ ì
compute≥á system«áá Thesσá arσáá Processes/Processors¼áá Memory¼ ì
Devices¼á anΣá Information«á CP/═á doe≤ virtuall∙ n∩ proces≤á o≥ ì
memor∙á management¼á anΣá n∩ protectioε i≤ affordeΣ thσá use≥á t∩ ì
speaδ of« Oncσ ß prograφ i≤ alloweΣ t∩ execute¼ iµ i⌠ choose≤ t∩ ì
erasσ CP/═ froφ memory¼ i⌠ can« Iµ i⌠ choose≤ t∩ erasσ thσ disk¼ ì
it can. There is almost nothing to stop it.
Thσá CP/═ virtua∞ machinσ shine≤ iε thσ performancσá oµá thσ ì
function≤á oµá devicσá anΣá informatioεá management«áá Thσá BIO╙ ì
provide≤á ß software-based¼á machine-independen⌠ interfacσ t∩ thσ ì
physica∞á device≤ oµ thσ compute≥ system«á Thσ BDO╙á provide≤á ß ì
software-based¼ machine-independen⌠ interfacσ t∩ thσ file≤ oµ thσ ì
compute≥ system« Aε application≤ prograφ caε usσ thesσ tw∩ part≤ ì
oµ CP/═ t∩ communicatσ directl∙ witΦ thσ hardware¼á regardles≤ oµ ì
wha⌠á thσ hardwarσ actuall∙ is¼á anΣ t∩ manipulatσ file≤ a⌠ will« ì
Thesσ interfaces¼á generall∙ speaking¼ arσ thσ samσ regardles≤ oµ ì
what machine the CP/M system is running on.
Bu⌠ CP/═ i≤ divideΣ int∩ threσ parts« Thσ CC╨ i≤ thσ third« ì
Thi≤ i≤ thσ interactivσ interfacσ t∩ thσ CP/═ user«á ThrougΦ thσ ì
CCP¼ thσ CP/═ use≥ communicate≤ t∩ thσ system« Interpretatioε oµ ì
thσá al∞ oµ thσ user'≤ commands¼á executioε oµ somσ oµ thσ user'≤ ì
commands¼á interpretatioεá anΣ executioε oµ command≤á froφá disk-ì
baseΣá commanΣá files¼á anΣ initiatioε oµ processe≤ (runninτá CO═ ì
files⌐á iε thσ CP/═ environmen⌠ arσ fou≥ oµ thσá majo≥á function≤ ì
performeΣ b∙ thσ CCP.
ZCP╥á (o≥ ZCPR1⌐ wa≤ originall∙ designeΣ t∩ replacσ thσá CC╨ ì
iε aε attemp⌠ t∩ improvσ thσ user'≤ interfacσ t∩ thσ CP/═ system« ì
Thσ BIO╙ anΣ BDO╙ werσ untoucheΣ b∙ ZCPR1¼ s∩ thσ virtua∞ machinσ ì
remaineΣá intac⌠á and¼á witΦ it¼á thσ benefit≤ deriveΣ froφá thi≤ ì
virtua∞ machine«á WitΦ ver∙ fe≈ exceptions¼á an∙ CO═ filσá whicΦ ì
raεá unde≥ CP/═ coulΣ als∩ ruε unde≥ ß ZCPR1-baseΣ systeφ withou⌠ ì
modification.
ZCPR▒á changeΣ thσ user'≤ interfacσ iε onl∙ ß fe≈ ke∙á ways« ì
First¼á i⌠á provideΣ ß simplσ command-searcΦ hierarch∙ s∩ tha⌠á ß ì
brieµ searcΦ woulΣ bσ performeΣ fo≥ ß commanΣ oncσ i⌠ wa≤ issued« ì
Iε thi≤ way¼ thσ use≥ neeΣ n∩ longe≥ bσ concerneΣ abou⌠ wherσ hi≤ ì
CO═ file≤ werσ located¼ anΣ hσ coulΣ star⌠ t∩ makσ morσ effectivσ ì
usσ oµ USE╥ area≤ iε dividinτ u≡ hi≤ project≤ anΣ such« Duplicaì
tioεá oµá CO═á file≤ iε differen⌠ use≥ area≤á o≥á duplicatioεá oµ ì
director∙á entrie≤á pointinτ t∩ thσ samσ CO═ filσ werσ n∩á longe≥ ì
necessary«á Second¼ thσ ZCPR1-residen⌠ command≤ werσ enhanceΣ iε ì
mino≥á way≤ t∩ improvσ thei≥ utility«á ERA¼á fo≥á instance¼á no≈ ì
printeΣ ou⌠ thσ name≤ oµ thσ file≤ i⌠ erased¼á anΣ command≤á likσ ì
LIS╘á (whicΦá TYPEΣ t∩ thσ printer⌐ anΣ G╧ (whicΦ reexecuteΣá thσ ì
CO═ imagσ residinτ iε memor∙ a⌠ 100H⌐ werσ added« Alonτ thσ samσ ì
lines¼á thσá promp⌠ wa≤ changeΣ s∩ tha⌠ thσ use≥ numbe≥á wa≤á inì
cluded¼ thereb∙ tellinτ thσ use≥ wha⌠ use≥ areß hσ wa≤ in.
ZCPR▒ was¼á iε effect¼á ß logica∞ extensioε t∩ thσ CP/═ CCP¼ ì
anΣ i⌠ cos⌠ nothinτ t∩ implemen⌠ it«á ZCPR▒ wa≤ thσ samσ sizσ a≤ ì
thσ CP/═ CCP¼ anΣ i⌠ simpl∙ overlaiΣ it« It≤ solσ purposσ wa≤ t∩ ì
improvσ thσ user'≤ interfacσ t∩ thσ system¼á consequentl∙ improvì
inτ hi≤ productivit∙ a≤ well«á Thσ use≥ coulΣ structurσ hi≤ worδ ì
t∩ somσ exten⌠ anΣ concentratσ morσ oε thσ probleφ a⌠ hand.
No≈á ZCPR▓á i≤ cominτ int∩ play«á Thσ basiπ reasoε fo≥á it≤ ì
existencσá i≤á thσá samσ a≤ fo≥ ZCPR▒ -- t∩á improvσá thσá user'≤ ì
interfacσá t∩ hi≤ CP/═á system«á Unlikσá ZCPR1¼á however¼á ZCPR▓ ì
significantl∙á extend≤á thi≤á interfacσ anΣ i≤ morσá flexiblσá iε ì
allowinτá thσá use≥ (o≥ installer⌐ t∩ tailo≥ thσá systeφá t∩á thσ ì
user'≤á needs«á Morσ humaε engineerinτ principle≤ havσ beeεá apì
plieΣ unde≥ ZCPR2« Directorie≤ ma∙ bσ giveε mnemoniπ names¼ likσ ì
JEF╞ o≥ TEXT¼ thσ command-searcΦ patΦ ma∙ bσ specifieΣ anΣ changì
eΣ b∙ thσ use≥ dynamically¼á facilitie≤ arσ availablσ whicΦ allo≈ ì
thσá use≥á t∩ emplo∙ al∞ 3▓ use≥ area≤ oε ß disk¼á menu≤á ma∙á bσ ì
invokeΣá a≤ desireΣ t∩ simplif∙ thσ use≥ interfacσ eveεá more¼á ß ì
serie≤á oµá command≤ ma∙ bσ expresseΣ oε thσ samσ linσá (allowinτ ì
thσ use≥ t∩ g∩ ofµ anΣ d∩ somethinτ elsσ whilσ thσ systeφ i≤ bus∙ ì
workinτ fo≥ him)¼ anΣ I/╧ caε bσ redirecteΣ mnemonicall∙ (Consolσ ì
caε bσ defineΣ a≤ MODE═ rathe≥ thaε UC1).
AnΣá al∞ oµ thi≤ i≤ donσ witΦ ß minimuφ oµ overhead«á A≤á ß ì
rule¼á ZCPR▓ i≤ thσ samσ sizσ a≤ thσ CP/═ CCP¼ anΣ ß mino≥ growtΦ ì
iεá thσá BIO╙ (usuall∙ oε thσ orde≥ oµ 1K⌐ i≤ requireΣá t∩á full∙ ì
implemen⌠á ß ZCPR▓ System«á Unde≥ ZCPR2¼á you≥ TP┴ ma∙ sta∙á thσ ì
samσ sizσ a≤ i⌠ ha≤ alway≤ been¼á or¼ a≤ morσ feature≤ arσ impleì
mented¼ i⌠ ma∙ shrinδ slightly¼ bu⌠ usuall∙ n∩ morσ thaε 1K.
è
Gettinτ bacδ t∩ thσ origina∞ questioε oµ "WHY?"¼ ╔ gues≤ thσ ì
answe≥ i≤ t∩ attemp⌠ t∩ improvσ thσ worlΣ oµ thσ user«á T∩á makσ ì
thσá machinσá morσá subservien⌠ t∩ thσ wil∞ oµ thσá use≥á anΣá t∩ ì
increasσá thσ productivit∙ oµ thσ use≥ arσ tw∩ ke∙ way≤ iεá whicΦ ì
ZCPR▓ attempt≤ t∩ improvσ thσ user'≤ world.
2.0 Comparison Between ZCPR2 and the CP/M 2.2 CCP
Thi≤ sectioε oµ thσ Rationalσ outline≤ thσ functiona∞á diffì
erence≤á betweeε ZCPR▓ anΣ thσ CP/═ 2.▓ CC╨ witΦ ß brieµ explanaì
tioεá oµá wh∙ thesσ feature≤ werσ implementeΣ iεá ZCPR▓á iεá thi≤ ì
fashion.
2.1 The ZCPR2 Prompt
First¼á thσ prompt« A≤ ╔ vie≈ thσ purposσ oµ thσ prompt¼ i⌠ ì
serve≤ t∩ tel∞ yo⌡ wherσ yo⌡ arσ locateΣ anΣ tha⌠ ZCPR▓ i≤á read∙ ì
t∩á accep⌠á ß commanΣ line«á Unde≥ CP/M'≤ CCP¼á thi≤ promp⌠á wa≤ ì
simpl∙á thσ disδ lette≥ followeΣ b∙ ßá ">"«á Unde≥á ZCPR2¼á thi≤ ì
promp⌠ ma∙ bσ thσ samσ o≥ i⌠ ma∙ bσ ß D╒ form¼á sucΦ a≤ "A12>ó o≥ ì
"B1>"¼ whicΦ tell≤ yo⌡ exactl∙ wherσ yo⌡ are.
Iε designinτ thσ ZCPR▓ System¼á however¼á ╔ founΣ ß neeΣ fo≥ ì
thσá promp⌠ t∩ servσ ß thirΣ function«á Thi≤ functioε i≤ t∩ tel∞ ì
thσá ZE╪ Monito≥ tha⌠ i⌠ ma∙ begiε supplyinτ inpu⌠ thr⌡ thσá BIO╙ ì
again«á ZE╪ respond≤ t∩ ß commanΣ whicΦ tell≤ thσ ZE╪ Monito≥ t∩ ì
sto≡ supplyinτ character≤ thr⌡ thσ BIO╙ anΣ t∩ allo≈ thσ use≥á t∩ ì
inpu⌠ hi≤ owε text«á Thi≤ i≤ ß nicσ featurσ oµ ZE╪ sincσ commanΣ ì
filσ processinτ ma∙ no≈ bσ interrupteΣ fo≥ use≥ input«á Thσ use≥ ì
ma∙á inpu⌠á aεá optioε t∩ ß command¼á ma∙ ente≥ tex⌠ anΣá ruεá aε ì
editor¼á o≥á ma∙ perforφ othe≥ function≤ requirinτ hi≤á attentioε ì
whilσ ZE╪ i≤ iε control«á ┴ questioε oµ ho≈ t∩ tel∞ ZE╪ tha⌠á i⌠ ì
ma∙á resumσ contro∞ camσ up¼á however«á Afte≥ ß lo⌠ oµ deliberaì
tion¼á ╔ decideΣ tha⌠ ß specia∞ characte≥ sen⌠ t∩ thσ consolσ wa≤ ì
thσ bes⌠ wa∙ anΣ tha⌠ thi≤ characte≥ shoulΣ bσ sen⌠ b∙ ZCPR2.
Thi≤ character¼á however¼á haΣ t∩ bσ unique« I⌠ shoulΣ bσ ß ì
characte≥á whicΦá i≤ no⌠ normall∙ sen⌠ t∩ thσá screeεá sincσá ZE╪ ì
woulΣá star⌠á u≡ immediatel∙ wheε i⌠ sa≈ thi≤ character«á I⌠á i≤ ì
als∩á preferreΣ tha⌠ thσ use≥ no⌠ bσ forceΣ t∩ issuσá thi≤á charì
acte≥á himselµá sincσ thσ humaε interfacσ i≤ incumbereΣá b∙á thi≤ ì
(thσá humaεá i≤ forceΣ t∩ providσ aε arbitrar∙ inpu⌠ t∩ hel≡á thσ ì
softwarσá along)«á I⌠ make≤ n∩ differencσ iµ thi≤á characte≥á i≤ ì
printablσá o≥ not¼á s∩ lonτ a≤ i⌠ caε bσ pickeΣ u≡ b∙ ZE╪ a⌠á thσ ì
righ⌠ timσ anΣ hopefull∙ a⌠ n∩ othe≥ time.
Again¼á afte≥ somσ thought¼á ╔ opteΣ t∩ usσ thσ ZCPR▓ promp⌠ ì
t∩ contaiε thi≤ character«á Thi≤ choicσ wa≤ madσ because¼ iε al∞ ì
practica∞á case≤ ╔ coulΣ envision¼á thσ neeΣ fo≥ use≥ inpu⌠ woulΣ ì
bσá sucΦ tha⌠ thσ use≥ woulΣ inpu⌠ hi≤ datß iε orde≥ fo≥ ßá funcì
tioεá t∩á bσ performeΣ anΣ theε contro∞ woulΣá returεá t∩á ZCPR2« ì
ZCPR▓á woulΣ alway≤ bσ therσ t∩ turε ZE╪ bacδ oε anΣ woulΣ bσ thσ ì
onl∙ commoε denominato≥ ╔ coulΣ coun⌠ on«á ╔ didn'⌠ wan⌠ t∩á adΣ ì
an∙á unnecessar∙á overheaΣ t∩ ZCPR▓ t∩ d∩á thi≤á either¼á so¼á i⌠ ì
seemeΣá reasonablσá t∩ makσ thσ ">ó characte≥ signfican⌠ t∩á ZEX« ì
Therσá arσ man∙ case≤ wherσ thσ ">ó characte≥ woulΣ bσá typeΣá b∙ ì
thσ use≥ iε matΦ expression≤ anΣ thσ like¼ s∩ ╔ electeΣ t∩ definσ ì
thσ ">ó witΦ it≤ mos⌠ signfican⌠ bi⌠ se⌠ t∩ bσ thσ promp⌠ characì
ter«á Thi≤ i≤ rathe≥ unique« Iε al∞ case≤ ╔ coulΣ envision¼ thσ ì
norma∞ usσ oµ ">ó i≤ a≤ 7-bi⌠ ASCI╔ witΦ thσ 8tΦ bi⌠ turneΣ off.
Thσá onl∙á problem≤á ╔ coulΣ seσ witΦ thi≤á arσá witΦá thosσ ì
terminal≤ wh∩ g∩ int∩ graphic≤ modσ wheε the∙ encounte≥ ß characì
te≥á witΦ thσ 8tΦ bi⌠ se⌠ anΣ thosσ printer≤ wh∩ responΣ t∩á sucΦ ì
characters«á Thσá printe≥á probleφ rear≤ it≤ ugl∙ heaΣ wheεá thσ ì
use≥ employ≤ ^╨ t∩ prin⌠ consolσ output«á Aε answe≥ t∩ thσ firs⌠ ì
probleφ i≤ t∩ eithe≥ choosσ ß promp⌠ characte≥ tha⌠ doe≤ no⌠ havσ ì
thi≤á effec⌠ o≥ t∩ adΣ ß 2nΣ bytσ afte≥ thσ ">ó whicΦ i≤á ßá non-ì
printing¼ non-graphiπ character« Aε answe≥ t∩ thσ seconΣ probleφ ì
i≤ no⌠ t∩ usσ thσ ^╨ functioε t∩ direc⌠ consolσ outpu⌠ t∩ thσ CR╘ ì
anΣá printe≥á iε parallel¼á bu⌠ t∩ usσ ß redirectablσ I/╧á drive≥ ì
whicΦá drive≤á ß consolσ witΦ CR╘ inpu⌠ anΣá CRT/printe≥á output« ì
Thi≤ drive≥ coulΣ filte≥ thσ MS┬ froφ al∞ character≤ sen⌠ t∩á thσ ì
printer.
2.2 The ZCPR2 Resident Command Set
Thσ nex⌠ iteφ t∩ discus≤ i≤ thσ ZCPR2-residen⌠ commanΣá set« ì
╔á vie≈ thσ se⌠ oµ residen⌠ command≤ unde≥ ZCPR▓ anΣ thσ CP/═ CC╨ ì
t∩á bσ necessar∙ fo≥ tw∩ reasons║á (1⌐ t∩ quickl∙á perforφá freì
quently-needeΣ function≤ anΣ (2⌐ t∩ providσ thesσ function≤ withì
ou⌠á consuminτá disδ spacσ fo≥ them«á Thσ implementatioε oµá thσ ì
residen⌠ command≤ withiε thσ CP/═ CC╨ wa≤ good¼ bu⌠ ╔ didn'⌠ fee∞ ì
i⌠ wa≤ complete«á Fo≥ instance¼ thσ CP/═ CC╨ DI╥ commanΣ diΣ no⌠ ì
allo≈ yo⌡ t∩ vie≈ Systeφ Files¼á thσ ER┴ commanΣ diΣ no⌠ sho≈ yo⌡ ì
wha⌠á i⌠ wa≤ erasing¼á thσ TYP┼ commanΣ diΣ no⌠á page¼á thσá SAV┼ ì
commanΣá requireΣá ßá decima∞ argumen⌠ whilσ DD╘á anΣá thσá othe≥ ì
debugger≤á gavσ yo⌡ hexadecima∞ value≤ t∩ worδ with¼á anΣ al∞á oµ ì
thσá command≤á refuseΣ t∩ directl∙ addres≤ differen⌠á use≥á area≤ ì
whilσ allowinτ yo⌡ t∩ addres≤ differen⌠ disks.
T∩á providσá morσ flexibilit∙ anΣ consistenc∙ t∩á thσá ZCPR▓ ì
System¼ ╔ abolisheΣ thσ USE╥ commanΣ (notσ tha⌠ therσ neve≥ wa≤ ß ì
DIS╦á command)¼á anΣá incorporateΣá ß Use≥ Numbe≥ int∩á thσá Disδ ì
references«á Thi≤á seemeΣá t∩ als∩ makσ thσ entirσá systeφá morσ ì
uniforφ iε appearancσ t∩ thσ user¼ particularl∙ wheε hσ wanteΣ t∩ ì
dividσ hi≤ worδ int∩ differen⌠ use≥ areas« T∩ adΣ t∩ thσ consisì
tency¼á ╔á alloweΣ thσ D╒ forφ t∩ bσ useΣ b∙á an∙á ZCPR2-residen⌠ ì
commanΣá o≥á an∙ ZCPR2-supplieΣ transien⌠ commanΣ whereve≥ thσá ─ ì
forφ wa≤ useΣ before«á No≈ wσ arσ consisten⌠ -- t∩ changσ disks¼ ì
typσá "d:"╗á t∩ changσ users¼á typσ "u:"╗á t∩ changσá both¼á typσ ì
"du:"«á T∩ extrac⌠ ß CO═ filσ froφ ß differen⌠ directory¼ simpl∙ ì
prefi°á i⌠ witΦ ß "d:"¼á ß "u:"¼á o≥ ß "du:"«á Argument≤ t∩á thσ ì
command≤ likσ DI╥ anΣ ER┴ werσ als∩ alloweΣ t∩ bσ D╒ forms.
Onl∙á onσá probleφ exist≤ witΦ thi≤ ideß tha⌠ ╔á coulΣá see¼ ì
however«á An∙ "standardó CP/═ transient¼ likσ WorΣ Sta≥ o≥ DBAS┼ ì
II¼á woulΣ no⌠ kno≈ abou⌠ thσ D╒ forφ anΣ couldn'⌠ dea∞ witΦá it« ì
No≈ wσ havσ aε inconsistenc∙ -- somσ command≤ coulΣ handlσ D╒ anΣ ì
other≤ onl∙ D«á Thi≤ starteΣ mσ oε thσ ideß oµ thσ ZCPR▓ System« ì
Question║á wheε d∩ yo⌡ neeΣ thσ D╒ form┐á Answer║ wheε yo⌡ arσ ì
crossinτ directorie≤ -- wheε yo⌡ arσ sittinτ iε onσ director∙ anΣ ì
wan⌠á t∩ acces≤ file≤ iε anothe≥ directory«á Afte≥ workinτá witΦ ì
ZCPR▒á anΣ ZCPR▓ fo≥ s∩ long¼á ╔ realizeΣ that¼á wheε i⌠ come≤ t∩ ì
thσ commercia∞ softwarσ packages¼ ╔ typicall∙ diΣ no⌠ worδ acros≤ ì
director∙ boundaries¼á or¼ iµ ╔ did¼ i⌠ wa≤ alway≤ dowε t∩ disδ ┴ ì
iε thσ curren⌠ user«á Hence¼á ╔ neve≥ camσ t∩ usσ ß prefi° t∩á ß ì
filσá wheε ß raε aε edito≥ o≥ compiler«á ╔ alway≤ useΣ "E─ FILEó ì
o≥ "C├ FILE"«á I⌠ wa≤ onl∙ wheε ╔ wanteΣ certaiε director∙á disì
plays¼á wheε ╔ wanteΣ t∩ vie≈ certaiε files¼ anΣ wheε ╔ wanteΣ t∩ ì
manipulatσ file≤ (erasσ them¼á protec⌠ them¼á renamσ them⌐ tha⌠ ╔ ì
useΣ ß prefi° t∩ ß filσ name.
I⌠á becamσ clear¼á then¼á tha⌠ thσ D╒ forφ wa≤ OK«á ╔ woulΣ ì
establisΦ ß methoΣ oµ operatioε iε whicΦ ╔ woulΣ allocatσá direcì
torie≤á fo≥á certaiε functions¼á anΣ movσ int∩ thesσá directorie≤ ì
wheεá ╔ wanteΣ t∩ perforφ thesσ functions«á ╔ woulΣ creatσ ßá W╙ ì
director∙ t∩ worδ oε tex⌠ files¼ aε AS═ director∙ t∩ writσ assemì
bl∙ languagσ programs¼á etc«á Iε sucΦ aε environment¼á m∙á humaε ì
interfacσ wa≤ gooΣ sincσ ╔ agaiε coulΣ concentratσ oε thσ probleφ ì
a⌠ hand¼á thσ systeφ woulΣ finΣ m∙ command≤ fo≥ me¼ anΣ thσ file≤ ì
╔á aφ concerneΣ witΦ woulΣ bσ thσ onl∙ file≤ ╔ seσ wheε ╔ displa∙ ì
thσ curren⌠ directory«á ┴ se⌠ oµ utilities¼á however¼ wa≤ needeΣ ì
t∩ cros≤ thσ director∙ boundaries«á I⌠ woulΣ als∩ bσ nicσ iµ thσ ì
ZCPR2-residen⌠ command≤ coulΣ cros≤ thesσ boundarie≤ a⌠ will.
S∩ no≈ wσ arσ bacδ t∩ thσ ZCPR2-residen⌠ commands« WitΦ thσ ì
D╒á forφ accepteΣ b∙ al∞ oµ them¼á director∙ boundarie≤ becamσ n∩ ì
probleφ a⌠ all«á Iε addition¼ ╔ wa≤ no≈ designinτ ß se⌠ oµ ZCPR▓ ì
utilitie≤á whicΦ woulΣ providσ ß hos⌠ oµ additiona∞á capabilitie≤ ì
whicΦá madσá i⌠á eas∙á t∩á perforφá function≤á acros≤áá director∙ ì
boundaries.
2.3 The ZCPR2 Residents Versus the CCP Residents
Clearly¼ no≈ thσ ZCPR▓ Residen⌠ Command≤ caε cros≤ director∙ ì
boundarie≤ a⌠ wil∞ whilσ thσ CC╨ Residen⌠ Command≤ caε not« Thi≤ ì
i≤á aεá instrumenta∞á forwarΣ ste≡ iε thσá humaεá engineerinτá oµ ì
ZCPR2«á Al∞á oµ thσ ZCPR▓ Residen⌠ Command≤ havσ t∩ d∩ thi≤ iε ß ì
consistant¼á simplσ way«á Thi≤ simplσ wa∙ i≤ thσ D╒á form«á Thσ ì
commands now line up like this:
ZCPR2 Command CCP Command
DIR DU:afn DIR D:afn
ERA DU:afn ERA D:afn
REN DU:ufn1=ufn2 REN D:ufn1=ufn2
TYPE DU:ufn TYPE D:ufn
SAVE n DU:ufn SAVE n D:ufn
D: D:
U: USER u
DU: --
Iεá movinτá t∩ Z80-specifiπ code¼á lot≤ oµ spacσá wa≤á saveΣ ì
withiεá ZCPR▒ anΣ ZCPR2«á Jum≡ Relativσ instruction≤ contributeΣ ì
thσ mos⌠ t∩ thi≤ savings¼á a≤ wel∞ a≤ constan⌠ restructurinτá anΣ ì
optimizinτá fo≥á spacσ b∙ combininτ function≤ int∩á onσá routine« ì
WitΦá sucΦá ß spacσ savings¼á therσ wa≤ rooφ t∩ elaboratσ oεá thσ ì
Residen⌠ Commands.
Iε thσ proces≤ oµ firs⌠ designinτ ZCPR▒ anΣ late≥ ZCPR2¼á i⌠ ì
wa≤ obviou≤ tha⌠ thσ CC╨ Residen⌠ Command≤ werσ nicσ t∩ have¼ bu⌠ ì
werσ incomplete«á Iε ZCPR1¼á ╔ tooδ step≤ t∩ makσ theφ morσ comì
plete¼á anΣ iε ZCPR▓ ╔ tooδ furthe≥ steps«á Thσ followinτá paraì
graph≤ summarizσ thσ rationalσ behinΣ thσ changes.
Thσ DI╥ commanΣ unde≥ CP/═ woulΣ onl∙ displa∙ thσ non-Systeφ ì
Files«á Thi≤ i≤ typicall∙ wha⌠ yo⌡ want¼á bu⌠ i⌠ i≤ nicσ t∩á seσ ì
thσ Systeφ File≤ als∩ froφ timσ t∩ time« Unde≥ CP/M¼ yo⌡ d∩ thi≤ ì
b∙á loadinτ ß CO═ filσ designeΣ t∩ perforφ thi≤ function«á Unde≥ ì
ZCPR2¼á i⌠ seemeΣ likσ ß simplσ matte≥ t∩ givσ ZCPR▓ itselµá thi≤ ì
capability«á Froφá thi≤ camσ thσ ╙ optioε anΣ thσ ┴ option«á T∩ ì
makσá thσá interfacσá a≤ simplσ a≤ possiblσ anΣá requirσá a≤á fe≈ ì
keystroke≤á oε thσ par⌠ oµ thσ use≥ a≤ ╔ could¼á ╔ opteΣ t∩á havσ ì
thesσ option≤ specifieΣ b∙ ß spacσ followeΣ b∙ thσ optioεá lette≥ ì
afte≥ thσ firs⌠ "normaló par⌠ oµ thσ command«á T∩ displa∙ Systeφ ì
Files¼á then¼á thσ use≥ neeΣ onl∙ typσ "DI╥ DU:afε S"«á Thσ onl∙ ì
tradσá ofµ wa≤ tha⌠ iµ n∩ afε o≥ D╒ forφ wa≤ specified¼á ß fille≥ ì
wa≤á requireΣ iµ thσ optioε wa≤ desired«á Thi≤ fille≥á coulΣá bσ ì
easil∙ "*.*"¼á bu⌠ thσ use≥ haΣ t∩ remembe≥ that« Otherwise¼ ho≈ ì
woulΣá DI╥ kno≈ betweeε request≤ fo≥ "DI╥ Aó t∩ seσ iµ filσ ┴á i≤ ì
therσ o≥ "DI╥ *.¬ Aó t∩ seσ al∞ files┐ Thi≤ seemeΣ reasonable.
M∙á maiε gripσ witΦ thσ ER┴ commanΣ wa≤ tha⌠ i⌠ diΣ it≤á joΓ ì
silently«á ╔ neve≥ wa≤ surσ oµ wha⌠ i⌠ diΣ unles≤ ╔ issueΣ ß DI╥ ì
commanΣ afterwards«á Hence¼ ╔ addeΣ aε automatiπ DI╥ functioε t∩ ì
ERA«á Iε addition¼ a⌠ ver∙ littlσ cost¼ ß Verif∙ optioε coulΣ bσ ì
addeΣ t∩ allo≈ thσ use≥ t∩ approvσ thσ erasσ beforσ i⌠ wa≤á done« ì
Oµ course¼ thσ director∙ displa∙ woulΣ bσ donσ first.
M∙á onl∙á complain⌠ abou⌠ RE╬ wa≤ tha⌠ yo⌡ coulΣ no⌠á renamσ ì
over existing files. I corrected this with ZCPR2.
Thσá complain⌠ witΦ TYP┼ i≤ obvious«á I⌠ haΣ t∩á page«á N∩ ì
question«á ╔á reall∙ becamσ tireΣ oµ usinτ ^╙ t∩ sto≡ outpu⌠ anΣ ì
sometime≤á no⌠ bσ quicδ enougΦ t∩ catcΦá everything«á Sometimes¼ ì
tho¼á ╔ woulΣ no⌠ wan⌠ t∩ page¼á bu⌠ skiφ through«á Havinτ ß TV╔ ì
95░ wa≤ nice¼á sincσ ╔ coulΣ usσ smootΦ scrollinτ t∩ skiφ slowly« ì
TYPE¼á then¼á wa≤á se⌠ u≡ t∩ pagσ b∙ default¼á bu⌠ aεá optioεá i≤ ì
availablσ t∩ no⌠ pagσ wheε desired.
LIS╘ wa≤ ß nicσ commanΣ t∩ havσ tha⌠ cos⌠ little¼ s∩ wh∙ no⌠ ì
have it? Enough said.
Thσá bigges⌠ complain⌠ ╔ haΣ witΦ SAV┼ wa≤ thσ constan⌠á he° ì
t∩á decima∞ conversioε ╔ wa≤ doinτ t∩ takσ number≤á generateΣá b∙ ì
DD╘á anΣá usσá theφ iε ß SAVE«á S∩ ╔ addeΣ ßá hexidecima∞á valuσ ì
optioε t∩ SAV┼ whilσ stil∞ keepinτ thσ decima∞ optioε fo≥ compatì
ibilit∙ (human-wise).
G╧á anΣ JUM╨ werσ addeΣ becausσ (1⌐ the∙ werσ nicσ t∩á have¼ ì
(2⌐ iµ the∙ werσ no⌠ t∩ affec⌠ thσ TPA¼á the∙ HA─ t∩ bσ ß par⌠ oµ ì
ZCPR▒á anΣá ZCPR2¼á anΣ (3⌐ the∙ cos⌠ littlσ sincσ al∞ thσá hook≤ ì
werσá alread∙á there«á GE╘ wa≤ addeΣ b∙ reques⌠á sincσá i⌠á cos⌠ ì
littlσá anΣá thσá persoε requestinτ i⌠ jus⌠ HA─ t∩á havσá it«á ╔ ì
personall∙ neve≥ usσ it.
Thσ followinτ tablσ compare≤ thσ Residen⌠ Command≤ availablσ ì
under ZCPR2 to those available under the CP/M 2.2 CCP:
ZCPR▓ CommanΣ CC╨ CommanΣ | ZCPR▓ CommanΣ CC╨ Command
DIR DU:afn DIR D:afn | ERA DU:afn ERA D:afn
DIR DU:afn S No Equiv | ERA DU:afn V No Equiv
DIR DU:afn A No Equiv |
ⁿ RE╬ DU:ufn1=ufn▓ RE╬ D:u=u2
TYPE DU:ufn P TYPE D:ufn | REN with Overwrite No Equiv
TYPE DU:ufn (page) No Equiv |
| SAVE n DU:ufn SAVE n D:u
LIST DU:ufn No Equiv | SAVE nH DU:ufn No Equiv
| SAVE n DU:ufn S No Equiv
GET adr DU:ufn No Equiv | SAVE nH DU:ufn S No Equiv
|
GO params No Equiv | JUMP adr No Equiv
|
D: D: | U: USER n
DU: No Equiv |
è
2.4 The Structure of ZCPR2
Fo≥á thosσ familia≥ witΦ thσ interna∞ structurσ oµ thσá CP/═ ì
2.▓ CCP¼á yo⌡ wil∞ finΣ thσ interna∞ structurσ oµ ZCPR▓ radicall∙ ì
different« I⌠ begin≤ witΦ thσ samσ tw∩ JM╨ instruction≤ tha⌠ thσ ì
CP/═ 2.▓ CC╨ begin≤ with¼á anΣ i⌠ may¼á iµ s∩ configured¼á follo≈ ì
thesσá instruction≤ witΦ ß commanΣ linσ buffe≥ int∩ whicΦ ma∙á bσ ì
storeΣ ß defaul⌠ command¼ bu⌠ thσ similarit∙ end≤ there.
╔á fee∞á tha⌠ thσ openinτ JM╨á instruction≤á arσá absolutel∙ ì
necessar∙á fo≥á compatabilit∙ purposes«á Thσá followinτá buffer¼ ì
however¼á i≤ not¼á sincσ thi≤ i≤ aε undocumenteΣ "featureó oµ thσ ì
systeφ iε thσ firs⌠ place« Somσ oµ thσ publiπ domaiε (anΣ other⌐ ì
softwarσ usσ thi≤ buffer¼á anΣ thσ use≥ ha≤ thσ optioε t∩ instal∞ ì
i⌠ iµ hσ wishes¼á bu⌠ s∩ mucΦ morσ flexibilit∙ anΣ capabilit∙ arσ ì
deriveΣá froφ enablinτ thσ Multiplσ CommanΣ Linσ Buffe≥á feature¼ ì
tha⌠á ╔ thinδ i⌠ i≤ worthwhilσ t∩ abandoε thσ program≤ whicΦá usσ ì
thi≤ buffe≥ iε thσ ZCPR▓ environment« Oµ thσ program≤ ╔ aφ awarσ ì
of¼ thσ ZCPR▓ Systeφ provide≤ equivalent≤ anyway.
╔ aφ ß stronτ proponen⌠ oµ writinτ maintainablσ software« ╔ ì
believσá iεá designinτ softwarσ iε thσ firs⌠ placσ iε sucΦ ßá wa∙ ì
tha⌠á goinτá bacδ t∩ i⌠ a⌠ ß late≥ timσ anΣ modifyinτ i⌠á caεá bσ ì
donσ witΦ ß minimuφ oµ difficulty« WitΦ ZCPR2¼ however¼ ╔ fough⌠ ì
ß battlσ iε attemptinτ t∩ writσ maintainablσ softwarσ anΣ writinτ ì
space-optimizeΣáá anΣáá time-optimizeΣáá software«áá T∩áá ensurσ ì
compatabilit∙ witΦ CP/═ 2.2¼á ZCPR▓ coulΣ no⌠ exceeΣ 2╦ byte≤á iε ì
size¼á s∩á man∙ optimization≤ werσ performeΣ tha⌠ saveΣ oεá spacσ ì
anΣáá reduceΣáá readability«áá ╔á answereΣá thi≤á reductioεáá iε ì
readabilit∙áá b∙áá increasinτá oεá thσáá interna∞áá documentatioε ì
(comments)«á Also¼á b∙á ß modula≥ construction¼á ╔ wa≤á ablσá t∩ ì
producσá morσá maintainablσ codσ whilσ conservinτ spacσá iεá somσ ì
cases.
Thσ openinτ comment≤ iε thσ sourcσ codσ t∩ ZCPR▓ outlinσ it≤ ì
structure«áá Thi≤áá structurσá i≤á discusseΣá iεá thσá followinτ ì
paragraphs.
First¼á thσ buffers«á A≤ ╔ go⌠ int∩ thσ desigε oµ ZCPR2¼á ╔ ì
founΣá morσ anΣ morσ oµ ß neeΣ t∩ allocatσ buffe≥ spacσ thr⌡á thσ ì
BIO╙á iεá orde≥á t∩ providσ globa∞á buffer≤á anΣá morσá extensivσ ì
buffer≤ tha⌠ weren'⌠ affecteΣ b∙ warφ boots« Hence¼ somσ buffer≤ ì
remaineΣá iε ZCPR2¼á anΣ man∙ werσ moveΣ outside«á Option≤á werσ ì
retained¼á however¼á t∩á allo≈á thσá installe≥ t∩á implemen⌠á thσ ì
buffer≤á iεá eithe≥á way«á Iµ thσ buffer≤ werσá selecteΣá t∩á bσ ì
internal¼á however¼á somethinτ else¼á likσ ß feature¼á haΣ t∩á bσ ì
giveε up«á Thσ onl∙ gooΣ reasoε ╔ caε seσ fo≥ no⌠ implementinτ ß ì
modifieΣá BIO╙á anΣá placinτ thσ recommendeΣ buffer≤á outsidσá oµ ì
ZCPR▓á itselµ i≤ becausσ thσ installe≥ doe≤ no⌠ havσá thσá sourcσ ì
codσ t∩ hi≤ BIOS« ZCPR▓ caε bσ implementeΣ withou⌠ modifyinτ thσ ì
BIOS¼ anΣ somσ oµ it≤ enhanceΣ feature≤ wil∞ bσ retaineΣ b∙ this¼ ì
bu⌠á i⌠ wil∞ bσ ß shado≈ oµ wha⌠ i⌠ coulΣ bσ iµ externa∞á buffer≤ ì
were available.
è
Second¼á thσ ZCPR▓ Startinτ Modules«á Al∞ oµ thσ entr∙á anΣ ì
reentr∙ points¼ thσ erro≥ recover∙ points¼ anΣ somσ miscellaneou≤ ì
entrie≤ arσ containeΣ here« Thi≤ seemeΣ reasonable.
Third¼á thσ general- anΣ special-purposσ utilities« Sectioε ì
│ contain≤ general-purposσ utilities¼ sucΦ a≤ consolσ output¼ anΣ ì
Sectioεá ┤ contain≤ special-purposσ utilities¼á sucΦ ß SBLAN╦á t∩ ì
ski≡ blank≤ fo≥ parsinτ purposes« Thσ commanΣ linσ parse≥ itselµ ì
i≤ classeΣ a≤ ß special-purposσ utility«á A≤ ß rule¼ iµ ╔ wanteΣ ì
ßá functioε t∩ bσ performeΣ morσ thaε oncσ anΣ it≤ sizσá exceedeΣ ì
threσ bytes¼ i⌠ wa≤ madσ int∩ ß subroutinσ t∩ conservσ space« Iµ ì
thσá sizσ oµ thσ codσ requireΣ t∩ perforφ thσ functioε wa≤á threσ ì
byte≤ o≥ less¼ theε i⌠ wa≤ simpl∙ duplicateΣ wherσ i⌠ wa≤ needed« ì
Iεá considerinτá design≤á likσá this¼á ╔ camσ u≡á witΦá ßá simplσ ì
formula set:
Cost of Inline Function =
(number of bytes required)
* (number of times function was used)
Cost of Subroutine Function =
(number of bytes required + 1 [for RET instruction])
+
3 [number of bytes required for a subroutine CALL]
* (number of times function was used)
Iµá N=numbe≥ oµ byte≤ requireΣ fo≥ functioε anΣ T=numbe≥á oµ ì
times function was used, then the formulae are:
Cil = NT
Csb = (N + 1) + 3T
Clearly, NT < (N+1) + 3T if T=1. If T=2, then:
N Cil=NT Csb=(N+1)+3T
1 2 8
2 4 9
3 6 10
4 8 11
5 10 12
6 12 13
7 14 14
Fo≥á N>╕ anΣ T=2¼á Ci∞ cost≤ morσ thaεá Csb«á Iµá T=3¼á Ci∞ ì
exceeds Csb more quickly:
N Cil=NT Csb=(N+1)+3T
1 3 11
2 6 12
3 9 13
4 12 14
5 15 15
For N>5 and T=3, Cil costs more than Csb.è
Iεá ß nutshell¼á thesσ table≤ arσ sayinτ tha⌠ thσ borderlinσ ì
casσá i≤ wheε thσ numbe≥ oµ time≤ thσ routinσ i≤ useΣá i≤á twice¼ ì
anΣá iµ thσ routinσ contain≤ morσ thaε ╖ byte≤ (thinδ oµ thi≤á iε ì
term≤á oµ tw∩ subroutinσ call≤ anΣ onσ byte)¼á theε wσ arσá aheaΣ ì
makinτá thi≤á int∩á ßá subroutinσ rathe≥ thaεá placinτá thσá codσ ì
inline.
Hence¼á thσ reade≥ caε no≈ seσ thσ reasoninτ behinΣá placinτ ì
code inline or making it into a subroutine.
Finally¼á thσá Residen⌠á Command≤ takσ u≡ thσ las⌠á par⌠á oµ ì
ZCPR2«á Thesσá arσá divideΣ int∩ thei≥ owεá sections¼á bu⌠á somσ ì
overla≡ exists« Thσ routinσ whicΦ display≤ filσ name≤ (DIRPR⌐ i≤ ì
useΣ b∙ DI╥ anΣ b∙ ERA¼á fo≥ instance« Likewise¼ MLOA─ (loaΣ CO═ ì
file into memory) is used by COM and GET.
T∩á simplif∙ thσ installatioε procedurσ anΣ t∩ furthe≥ moduì
larizσá thσá desigε oµ ZCPR2¼á ╔ createΣ ß separatσá heade≥á filσ ì
(ZCPRHDR.LIB⌐á whicΦ contain≤ al∞ oµ thσá customizatioεá informaì
tion«á It≤ purposσ i≤ two-fold║ (1⌐ t∩ brinτ ou⌠ thσ configuraì
tioεá informatioε iε ß smal∞ filσ tha⌠ i≤ eas∙ t∩ edi⌠ anΣ (2⌐ t∩ ì
identif∙ anΣ providσ t∩ thσ use≥ ever∙ iteφ oµ ZCPR▓ tha⌠ hσá ma∙ ì
wisΦ t∩ changσ t∩ mee⌠ hi≤ owε desires«á Again¼ ╔ aφ solΣ oε thσ ì
ideß oµ bendinτ thσ systeφ t∩ mee⌠ you≥ desire≤ a≤ opposeΣ t∩ thσ ì
othe≥ wa∙ around.
2.5 The ZCPR2 Alternate Commands
Therσá i≤ ß subse⌠ oµ thσ ZCPR2-supplieΣ transient≤á tha⌠á ╔ ì
cal∞á thσá ZCPR▓á Alternatσ Command≤ becausσ the∙á duplicatσá thσ ì
function≤áá oµá thσá ZCPR▓á Residen⌠á Command≤á witΦáá signfican⌠ ì
enhancement≤á iε capability«á Thesσ command≤ anΣá thσá resident≤ ì
they duplicate are:
ZCPR2 Alternate ZCPR2 Resident
XDIR3 DIR
ERASE ERA
RENAME REN
PAGE TYPE
PRINT LIST
DI╥á i≤ nice¼á bu⌠ iµ yo⌡ arσ lookinτ a⌠ ß lo⌠ oµá files¼á ß ì
"randomóá listinτ oµ name≤ doesn'⌠ hel≡ much«á XDIR│á sort≤á thσ ì
filσá listinτ b∙ namσ anΣ typσ o≥ typσ anΣ namσ (sometime≤ ╔ wan⌠ ì
i⌠á onσ wa∙ t∩ seσ commonly-nameΣ file≤ anΣ sometime≤ ╔á wan⌠á i⌠ ì
thσá othe≥á wa∙á t∩ seσ commonly-typeΣ files¼á anΣ ╔á prefe≥á thσ ì
latte≥á mos⌠á oµ thσ time)«á I⌠ als∩ display≤ thσ sizσá oµá eacΦ ì
file¼á thσ tota∞ spacσ takeε u≡ b∙ thσ file≤ displayed¼á anΣá thσ ì
amoun⌠á oµ spacσ remaininτ oε disk«á I⌠ provide≤ ß hos⌠ oµ othe≥ ì
nice¼á extendeΣ function≤ a≤ well«á Onσ ke∙ thinτ ╔ wanteΣ XDIR│ ì
t∩á d∩ tha⌠ n∩ othe≥ publiπ domaiε director∙ displa∙ prograφá diΣ ì
wa≤á t∩ cros≤ director∙ boundarie≤ witΦ thσ D╒ forφ anΣá thσá DI╥ ì
forφ a≤ well« XDIR│ doe≤ this¼ anΣ add≤ t∩ thσ continuit∙ oµ thσ ì
ZCPR▓á Systeφá a≤ such«á Finally¼á XDIR│ als∩ ha≤ filσá scanninτ ì
capabilit∙á buil⌠á iε s∩ tha⌠ configuratioε change≤ caεá bσá morσ ì
easil∙ detected.
Alonτá thσ line≤ oµ DIR¼á ER┴ serve≤ ßá purpose¼á bu⌠á ERAS┼ ì
enhance≤á this«á ERAS┼á wil∞ onl∙ "seeó non-Systeφ File≤á unles≤ ì
tolΣá t∩á looδ a⌠ Systeφ File≤ also¼á anΣ i⌠ ha≤ thσá abilit∙á t∩ ì
erasσ Read/Onl∙ file≤ anΣ t∩ allo≈ thσ use≥ t∩ inspec⌠ eacΦá filσ ì
beforσ thσ erasσ i≤ performed.
RENAM┼á i≤á t∩ RE╬ a≤ ERAS┼ i≤ t∩ ERA«á RENAM┼ allow≤á wilΣ ì
cards¼á inspection¼á anΣ othe≥ option≤ a≤ well«á Likσ al∞ oµ thσ ì
Alternatσ commands¼ botΦ thσ D╒ anΣ DI╥ form≤ arσ supported.
PAG┼á anΣ PRIN╘ arσ thσ alternate≤ t∩ TYP┼ anΣá LIST«á PAG┼ ì
provide≤á option≤á fo≥ speeΣ contro∞ e⌠ al¼á anΣá PRIN╘á support≤ ì
paging¼ timσ anΣ datσ stamping¼ headers¼ pagσ and/o≥ linσ numberì
ing¼ anΣ othe≥ features.
Onσ featurσ ╔ fee∞ i≤ signfican⌠ i≤ tha⌠ oµ permittinτ list≤ ì
oµ ambiguou≤ filσ name≤ a≤ argument≤ fo≥ ERASE¼á RENAME¼ PROTECT¼ ì
PAGE¼ PRINT¼ anΣ man∙ othe≥ ZCPR2-supplieΣ utilities« Thi≤ give≤ ì
thσá use≥ thσ flexibilit∙ oµ performinτ man∙ simila≥ function≤ iε ì
onσ commanΣ a≤ opposeΣ t∩ reissuinτ thσ commanΣ o≥ usinτ GO.
A≤á timσá wen⌠á along¼á ╔ founΣ i⌠ morσ anΣ morσá usefu∞á t∩ ì
includσá onlinσ documentatioε buil⌠ int∩ thσ command≤á themselve≤ ì
s∩á tha⌠ thi≤ informatioε coulΣ bσ quickl∙ accessed«á ╔ haΣá alì
read∙ adopteΣ thσ conventioε iε whicΦ commanΣ line≤ whicΦ consisì
teΣá oµ ß commanΣ anΣ option≤ onl∙ woulΣ prefi° thσá optioεá lis⌠ ì
witΦ ß slasΦ t∩ distinguisΦ thσ option≤ froφ ß filσ name«á This¼ ì
oµ course¼ prohibiteΣ usinτ thσ slasΦ a≤ thσ firs⌠ characte≥ oµ ß ì
filσ name¼á bu⌠ ╔ didn'⌠ thinδ tha⌠ thi≤ wa≤ to∩ restrictive« A≤ ì
ß logica∞ extensioε t∩ this¼á thσ command≤ werσ designeΣ t∩ prin⌠ ì
ßá hel≡ messagσ iµ an∙ invaliΣ optioε wa≤ encountered¼á anΣ »á i≤ ì
neve≥á permitteΣ t∩ bσ aε option¼á s∩ mos⌠ command≤á consistentl∙ ì
prin⌠á ou⌠ ß hel≡ messagσ wheε ß commanΣ oµ thσ forφ "CMN─ //ó i≤ ì
issued«á Thi≤ i≤ iε additioε t∩ thσ onlinσ documentatioεá availì
ablσ viß thσ HEL╨ command.
2.6 Abandoning ^P
This¼á oµ course¼á i≤ ß recommendation¼á bu⌠ i⌠ i≤ madσ witΦ ì
thσ vie≈ oµ thσ ZCPR▓ Systeφ iε mind«á Unde≥ CP/═ 2.2¼ ╔ diΣ no⌠ ì
likσá thσá ^╨ functioε becausσ ╔ considereΣ i⌠ t∩ bσá unreliable« ì
Iε onσ case¼á iµ yo⌡ issueΣ ^╨ jus⌠ beforσ givinτ ß command¼á thσ ì
commanΣá woulΣ ruε a≤ desired¼á but¼á wheε thσá promp⌠á appeared¼ ì
dependinτá oεá thσ command¼á sometime≤ thσ ^╨ woulΣ stil∞á bσá iε ì
effec⌠ anΣ othertime≤ i⌠ woulΣ not« Iε anothe≥ case¼ iµ ß loadeΣ ì
transien⌠ (likσ DU¼á whicΦ i≤ wh∙ D╒ ha≤ ß ╨ command⌐ useΣ direc⌠ ì
BIO╙ call≤ fo≥ I/O¼á theε thσ ^╨ woulΣ bσ ignoreΣ anΣ thσ desireΣ ì
effec⌠ no⌠ obtained.
Onσ fina∞ poin⌠ agains⌠ ^╨ i≤ tha⌠ ZCPR▓ occasionall∙á send≤ ì
character≤ witΦ thσ mos⌠ significan⌠ bi⌠ se⌠ t∩ thσ screen«á Thσ ì
promp⌠á i≤ onσ example¼á anΣ i⌠ doe≤ thi≤ fo≥ ZE╪á compatability« ì
Iµ ^╨ i≤ useΣ anΣ you≥ printe≥ respond≤ t∩ command≤ whicΦ involvσ ì
byte≤ witΦ thσ mos⌠ significan⌠ bi⌠ set¼ theε thσ printe≥ wil∞ d∩ ì
strangσ thing≤ froφ timσ t∩ timσ unde≥ ^╨ control.
Wheε lookinτ a⌠ ZCPR▓ a≤ ß System¼á man∙ ZCPR▓ utilitie≤ usσ ì
direc⌠á BIO╙ call≤ anΣ woulΣ no⌠ bσ affecteΣ b∙ ^P«á SYSLI┬á 2.┤ ì
als∩ support≤ I/╧ viß direc⌠ BIO╙ call≤ extensively¼á s∩ program≤ ì
usinτ SYSLI┬ ma∙ o≥ ma∙ no⌠ responΣ t∩ ^P.
Ho≈ i≤ ß functioε likσ ^╨ obtained¼ then┐ Unde≥ ZCPR▓ i⌠ i≤ ì
simplσá -- redirectablσá I/O«á Simpl∙ se⌠ u≡ ß redirectablσá I/╧ ì
drive≥ tha⌠ caε bσ assigneΣ t∩ thσ consolσ whicΦ consist≤ oµá CR╘ ì
Inpu⌠á anΣ CRT/Printe≥ Output¼á anΣ havσ tha⌠ drive≥ masδ ou⌠ thσ ì
mos⌠ significan⌠ bi⌠ oµ al∞ character≤ sen⌠ t∩ thσ printer« Thi≤ ì
solve≤á thσá printe≥ probleφ anΣ als∩ provide≤ ßá reliableôá prin⌠ ì
contro∞ facility«á I⌠ i≤ invokeΣ onl∙ wheε thσ indicateΣ consolσ ì
assignmen⌠ (viß DEVICE⌐ i≤ made¼á anΣ i⌠ i≤ disengageΣ onl∙á wheε ì
anothe≥á assignmen⌠á i≤á made«á Yo⌡ caε eveε tiσ iεá thσá RECOR─ ì
facilit∙á t∩ contro∞ thi≤ iµ desired¼á allowinτ thσ routine≤á enì
gageΣ b∙ RECOR─ t∩ turε oε anΣ ofµ printe≥ output.
3.0 The ZCPR2 System
Afte≥ thσ initia∞ desigε oµ ZCPR▓ anΣ somσ oµ it≤ utilities¼ ì
i⌠ becamσ appearan⌠ tha⌠ ZCPR▓ wa≤ no⌠ ß stand-alonσ entit∙á likσ ì
ZCPR▒ was« Instead¼ ZCPR▓ wa≤ thσ huΓ oµ aε integrateΣ systeφ oµ ì
program≤á tha⌠ communicateΣ witΦ eacΦ othe≥ througΦ ZCPR▓á itselµ ì
anΣ thσ buffer≤ associateΣ witΦ ZCPR2.
3.1 Implementing the Named Directories
Wheεá thσá ideß oµ nameΣ directorie≤ firs⌠ camσá up¼á ╔á wa≤ ì
toyinτá witΦ thσ ideß oµ ß CHDI╥ commanΣ t∩ loτ int∩ ßá director∙ ì
b∙ name«á Thi≤ commanΣ wa≤ neve≥ releaseΣ witΦ ZCPR2¼á bu⌠ idea≤ ì
froφ i⌠ werσ incorporateΣ int∩ thσ CD¼á MKDIR¼á anΣ PW─ commands« ì
Iε orde≥ t∩ dea∞ witΦ ß mnemoniπ namσ whicΦ stooΣ fo≥ ß disk/use≥ ì
area¼á aεá associatioε tablσ haΣ t∩ bσ createΣ whicΦ paireΣ name≤ ì
t∩ thei≥ directories« Sincσ CHDI╥ wa≤ thσ onl∙ prograφ involved¼ ì
i⌠ wa≤ eas∙ t∩ placσ thi≤ tablσ int∩ CHDIR.
A≤ timσ wen⌠ along¼á however¼á thσ ideß t∩ allo≈ ß numbe≥ oµ ì
command≤ referencσ directorie≤ b∙ namσ developed«á Thσ olΣ techì
niquσá oµ continuinτ t∩ storσ thσ name≤ a≤ par⌠ oµ CHDIR.CO═á wa≤ ì
ruleΣ ou⌠ fo≥ severa∞ reasons:
(1⌐á unles≤á step≤ werσ taken¼á a≤ CHDI╥á changed¼á thσ ì
positioεá oµá thσá namσá tablσ ma∙á changσá a≤á wel∞á (CHDI╥á wa≤ ì
originally written in BDS C)
(2⌐á fo≥ onσ reasoε o≥ anothe≥ (sucΦ a≤ security)¼á thσ ì
namσá oµ CHDIR.CO═ ma∙ no⌠ alway≤ bσ CHDI╥ -- i⌠ coulΣ bσá C─á o≥ ì
some other shorter name
(3⌐ CHDI╥ wa≤ largσ (duσ t∩ thσ overheaΣ oµ BD╙ C)¼ anΣ ì
╔á wa≤ discoverinτ (thr⌡ experimentation⌐ tha⌠ utilitie≤á writteε ì
witΦá SYSLI┬ coulΣ bσ a≤ mucΦ a≤ 1/┤ thσ sizσ oµ simila≥ utiltie≤ ì
written with BDS C
┴á reasonablσá ste≡á froφá thi≤ poin⌠á wa≤á t∩á establisΦá ß ì
structurσá fo≥ ß director∙ filσ whicΦ containeΣ thσ mnemoniπá anΣ ì
user/disδ associatioε information« Alonτ witΦ thi≤ camσ MKDI╥ t∩ ì
creatσ anΣ edi⌠ sucΦ ß filσ anΣ C─ t∩ replacσ CHDIR« Afte≥ ß lo⌠ ì
oµá usσá witΦ thi≤ typσ oµ environment¼á however¼á ╔á founΣá tha⌠ ì
constantl∙áá accessinτá thσá disδá t∩á determinσá thσá name≤áá oµ ì
directorie≤á requireΣá quitσ ß bi⌠ morσ timσ t∩ perforφ eveεá thσ ì
basiπ functions« Sincσ ╔ wa≤ alread∙ placinτ somσ ZCPR2-specifiπ ì
buffer≤ iε memor∙ (sucΦ a≤ thσ multiplσ commanΣ linσá buffer)¼á ╔ ì
electeΣá t∩á incorporatσá aε optioε iε whicΦá ßá nameΣá director∙ ì
buffe≥á ma∙á bσá loadeΣá froφá disδ anΣá searcheΣá firs⌠á b∙á thσ ì
utilitie≤á wheεá resolutioεá oµá ßá namσá wa≤áá required«áá Thi≤ ì
significantl∙á speedeΣá thing≤á u≡ anΣ addeΣá thσá fixed¼á globa∞ ì
director∙á concep⌠ t∩ thσ system«
NAMES.DI╥á no≈ becamσ ß loca∞ director∙ concep⌠ anΣ coulΣ bσ ì
useΣ t∩ implemen⌠ differen⌠ loca∞ director∙ environ≤ a≤ thσá use≥ ì
moveΣ froφ onσ director∙ o≥ commanΣ searcΦ patΦ t∩ another.
No≈á wσ havσ thσ flexibilit∙ oµ botΦ loca∞ anΣ globa∞á nameΣ ì
directorie≤á unde≥á ZCPR2«á Thσ SYSLI┬ routine≤ whicΦá performeΣ ì
director∙ searche≤ fo≥ mσ werσ altereΣ t∩ utilitizσ thi≤ feature¼ ì
and¼ oncσ SYSLI┬ wa≤ altered¼ al∞ utilitie≤ werσ altereΣ a≤ well« ì
The algorithm now employed in SYSLIB is:
(1⌐ Checδ t∩ seσ iµ thσ director∙ speπ i≤ ß D╒ forφ anΣ ì
use it if so
(2⌐ Assumσ i⌠ t∩ bσ ß DI╥ forφ iµ no⌠ DU¼á anΣ scaε thσ ì
memory-baseΣ nameΣ director∙ buffe≥ fo≥ ß matcΦ iµ therσ i≤á one╗ ì
if one is found, go with it
(3⌐á Iµ therσ i≤ n∩ memory-baseΣ nameΣ director∙ buffe≥ ì
o≥á therσ i≤ n∩ matcΦ iε it¼á scaε alonτ thσ commanΣ searcΦá patΦ ì
(o≥ whateve≥ patΦ wa≤ specifieΣ t∩ thσ library⌐ fo≥ thσ NAMES.DI╥ ì
file╗á iµ found¼á loaΣ anΣ scaε i⌠ fo≥ thσ specifieΣ namσ anΣá g∩ ì
with it if found
(4) If 1, 2, and 3 fail, return with an error code
╔á aφ pleaseΣ witΦ thi≤ desigε fo≥ it≤ flexibilit∙á anΣá it≤ ì
abilit∙á t∩ rapidl∙ changσ thσ user'≤ visiblσ director∙á environì
men⌠ a≤ hσ move≤ froφ onσ director∙ t∩ another.
3.2 Common ZCPR2 Transient Structures and GENINS
SYSLI┬á wa≤á alread∙ useΣ extensivel∙ iε thσ desigεá oµá thσ ì
ZCPR▓á utilit∙ program≤ wheε ╔ decideΣ t∩ adop⌠ ß standarΣ buffe≥ ì
structurσá a⌠á thσ beginninτ oµá thσá utilities«á Thi≤á standarΣ ì
structurσ wa≤ ß gooΣ ideß fo≥ severa∞ reasons:
(1⌐á aε installatioε prograφ (GENINS⌐ coulΣ bσ designeΣ ì
whicΦá coulΣ bσ useΣ t∩ customizσ al∞ thσ utilitie≤á withou⌠á thσ ì
neeΣ fo≥ reassembly
(2⌐á certaiεá basiπ informatioε wa≤ needeΣ b∙ al∞á proì
grams¼á anΣá thσá utilitie≤ coulΣ bσ configureΣá t∩á individuall∙ ì
contaiε thi≤ informatioε iε ß uniforφ wa∙ o≥ t∩ poin⌠ t∩á buffer≤ ì
containinτá thi≤ information╗á sucΦ informatioε include≤ thσ addì
res≤á oµá thσ multiplσ commanΣ linσ buffer¼á thσá addres≤á oµá aε ì
externa∞á path¼á anΣá thσ addres≤ oµ ß nameΣ director∙ buffe≥á iµ ì
therσ wa≤ one
(3⌐á ß SYSLI┬ routinσ coulΣ bσ establisheΣá tha⌠á woulΣ ì
uniforml∙á initializσá al∞á necessar∙ SYSLI┬ buffer≤á withou⌠á m∙ ì
havinτá t∩á worr∙ abou⌠ correctl∙ initializinτ eacΦá buffe≥á eacΦ ì
timσá ╔á designeΣ ß ne≈ utility╗á thi≤ SYSLI┬ routinσá i≤á ZGPIN╙ ì
(General-Purposσá Installation⌐ anΣ neeΣ onl∙ bσ calleΣá oncσá a⌠ ì
thσ beginninτ oµ eacΦ utility
Thσ commoε buffe≥ structurσ wa≤ extendeΣ t∩ includσ ß commoε ì
utilit∙ structurσ later¼ anΣ thσ filσ TEMPLATE.MA├ i≤ provideΣ t∩ ì
allow the programmer to program ZCPR2 utilities more easily.
3.3 Multiple Command Line Buffer
Froφ thσ beginning¼ ╔ simpl∙ envisioneΣ thσ Multiplσ CommanΣ ì
Linσá Buffe≥ fo≥ it≤ origina∞ purposσ -- t∩ providσ ß gooΣá placσ ì
t∩á storσ ß commanΣ linσ s∩ multiplσ command≤ coulΣ bσá executed« ì
Thi≤ i≤ wel∞ anΣ good¼á anΣ thσ multiplσ commanΣ featurσ i≤ quitσ ì
nice. I use it all the time myself.
Wha⌠á wa≤á funn∙ abou⌠ thi≤ particula≥ featurσ oµ thσá ZCPR▓ ì
Systeφá i≤á tha⌠á thσ abilit∙ t∩ usσ thi≤ buffe≥ t∩á chaiεá t∩á ß ì
serie≤ oµ program≤ rapidl∙ becamσ morσ important¼á froφ m∙á poin⌠ ì
oµá view¼á thaεá it≤á origina∞ purpose«á Iµ ß utilit∙á kne≈á thσ ì
locatioεá oµá thi≤ buffer¼á i⌠ coulΣ storσ ß commanΣ linσá iεá i⌠ ì
(containinτ multiplσ command≤ iµ desired)¼á se⌠ ß pointe≥ t∩á thσ ì
firs⌠ characte≥ oµ thσ firs⌠ command¼ anΣ ruε thi≤ commanΣ streaφ ì
b∙á simpl∙ returninτ t∩ ZCPR2«á Ver∙ cleaε anΣ efficien⌠ wa∙á t∩ ì
chain¼á anΣá i⌠á madσ thσ desigε anΣ implementatioε oµá thσá MEN╒ ì
system very simple.
WitΦ MENU¼á i⌠ i≤ desireΣ t∩ ruε ß commanΣ anΣ alway≤ returε ì
t∩á thσ MENU«á Beinτ ablσ t∩ chaiε t∩ ß commanΣ streaφ madσ thi≤ ì
simplσá -- allo≈ MEN╒ t∩ builΣ ß commanΣ linσ consistinτá oµá thσ ì
desireΣá commanΣá followeΣ b∙ thσ commanΣ "MEN╒á options"¼á wherσ ì
option≤ woulΣ bσ useΣ t∩ reente≥ MEN╒ a⌠ thσ correc⌠ point« Thi≤ ì
wa≤ simplicit∙ itself¼á anΣ ╔ alread∙ haΣ designeΣ ß simplσá men⌡ ì
systeφá iεá ZMCP╥á (whicΦ wa≤ ß menu-baseΣ ZCP╥á tha⌠á wa≤á neve≥ ì
released)« ╔ buil⌠ upoε ZMCP╥ concept≤ anΣ camσ u≡ witΦ thσ MEN╒ ì
program with MCHECK in a very short time.
3.4 SYSLIB
Onσá brieµá mentioε herσ abou⌠ SYSLI┬ 2.4«á A≤ ╔á go⌠á int∩ ì
designinτ ZCPR▓ utilitie≤ morσ anΣ more¼á thσ valuσ oµ SYSLI┬ wa≤ ì
proveεá ove≥ anΣ ove≥ again«á ╔ kne≈ SYSLI┬ intimately¼á witΦ aε ì
understandinτá oµá ho≈ thσ routine≤ fi⌠á together¼á and¼á oncσá ╔ ì
decideΣ upoε ß functioε ╔ wanteΣ t∩ perform¼á i⌠ tooδ ver∙ littlσ ì
timσ t∩ desigε i⌠ witΦ SYSLIB« B∙ thσ enΣ oµ thσ desigε phasσ oµ ì
thσ ZCPR▓ System¼á ╔ spen⌠ aε averagσ oµ ▓ hour≤ t∩ desigε ßá ne≈ ì
utilit∙áá froφá scratch¼áá anΣá thi≤á wa≤á withou⌠á thσá usσáá oµ ì
TEMPLATE.MAC¼á whicΦá wa≤á onσ oµ thσ las⌠ thing≤ ╔ designeΣá fo≥ ì
ZCPR2.è
I⌠á seemeΣá reasonablσ t∩ tiσ SYSLI┬ int∩ thσá ZCPR▓á Systeφ ì
morσ closel∙ t∩ makσ thσ developmen⌠ proces≤ eveε morσ efficient« ì
Iεá thi≤ light¼á ╔ designeΣ tw∩ SYSLI┬ module≤ whicΦ interfacσ t∩ ì
the ZCPR2 System and provide ZCPR2-specific functions.
ZGPIN╙ i≤ thσ installatioε routinσ whicΦ initialize≤ al∞á oµ ì
thσ interna∞ datß area≤ oµ thesσ tw∩ ZCPR2-specifiπ modules« Thσ ì
fron⌠á oµá eacΦ oµ thσ ZCPR▓ utilitie≤ i≤ uniforφ betweeε al∞á oµ ì
thσ standarΣ utilities¼á anΣ thσ positioε oµ thσ buffe≥ datß herσ ì
i≤ thσ samσ betweeε al∞ oµ thσ utilities« ZGPIN╙ know≤ abou⌠ thσ ì
structurσ anΣ read≤ datß froφ it¼ feedinτ thi≤ datß t∩ thσ SYSLI┬ ì
modules. This data falls into eight functional areas:
1« Path≤ -- i≤ aε externa∞ patΦ available¼ and¼ iµ so¼ ì
wherσ i≤ i⌠ located┐á ┴ requirement≤ flaτ i≤ presen⌠ whicΦ tell≤ ì
ZGPIN╙ iµ patΦ informatioε i≤ useΣ b∙ thσ particula≥ utility«á ┴ ì
par⌠á oµ thσ standarΣ buffe≥ configuratioε include≤á aεá interna∞ ì
patΦá whicΦ ma∙ bσ useΣ iε placσ oµ o≥ t∩ supplemen⌠ thσ externa∞ ì
path«á Naturally¼ eacΦ utilit∙ caε havσ it≤ own¼ uniquσ interna∞ ì
path«á Onl∙á thσá HEL╨ utilit∙ use≤ botΦ externa∞á anΣá interna∞ ì
paths¼á wherσá iµá ß searcΦ alonτ thσá externa∞á patΦá fails¼á i⌠ ì
switche≤á t∩ searchinτ alonτ thσ interna∞ patΦ beforσ givinτá up« ì
The other utilities search along only one path or the other.
2«á Multiplσá CommanΣá Linσ Buffe≥ -- i≤á thi≤á buffe≥ ì
available¼á and¼á iµ so¼ wherσ i≤ i⌠ located┐ Again¼ a≤ witΦ al∞ ì
oµá thesσá majo≥á functiona∞ sections¼á ßá requirement≤á flaτá i≤ ì
availablσá t∩ indicatσ iµ thi≤ datß i≤ useΣ b∙ thσá program«á Iµ ì
so¼á ZGPIN╙ initialize≤ thσ SYSLI┬ buffer≤ accordingly«á Iµ not¼ ì
it does not touch the SYSLIB buffers.
3«á Maximuφá Use≥á anΣá Disδ -- wha⌠ arσá thσá maximuφ ì
numbe≥á oµ disk≤ availablσ anΣ thσ maximuφ use≥ areßá accessable┐ ì
Tw∩ byte≤ arσ allocateΣ t∩ providσ thi≤ information¼á anΣ ß thirΣ ì
requirement≤á bytσá tell≤á ZGPIN╙á iµá thσá utilit∙á need≤áá thi≤ ì
information.
4«á Allo≈á Disδá o≥ Use≥ Changσ -- i≤ thσ use≥á t∩á bσ ì
permitteΣá t∩á referencσ ß differen⌠ use≥ areß o≥ t∩ referencσá ß ì
differen⌠ disk┐á Again¼á ß requirement≤ bytσ i≤ als∩á available« ì
Utilitie≤á whicΦ pa∙ attentioε t∩ thesσ buffer≤ caε bσ se⌠ u≡á t∩ ì
allo≈ thσ use≥ t∩ referencσ an∙ use≥ areß oε thσ curren⌠ disδ bu⌠ ì
no⌠á an∙ othe≥ disδ o≥ t∩ referencσ thσ curren⌠ use≥ areß oεá an∙ ì
disδ bu⌠ no⌠ thσ curren⌠ disk« Iµ nameΣ directorie≤ arσ enabled¼ ì
ß DI╥ forφ i≤ permitteΣ regardless¼ bu⌠ element≤ oµ ß D╒ forφ ma∙ ì
bσá disabled«á Hence¼á iµá JEF╞á i≤ knowε t∩ thσ use≥á froφá hi≤ ì
curren⌠á directory¼á hσ caε referencσ thi≤ director∙ b∙ thσá namσ ì
JEF╞ bu⌠ no⌠ b∙ it≤ D╒ form« ╔ diΣ thi≤ t∩ allo≈ flexibilit∙ anΣ ì
security at the same time.
5«á Basσ oµ PrivilegeΣ Use≥ Area≤ anΣ PassworΣ -- wha⌠ ì
i≤ thσ firs⌠ privilegeΣ use≥ areß (thi≤ areß anΣ al∞ use≥ number≤ ì
greate≥á thaεá thi≤ becomσ privileged⌐ anΣ wha⌠ i≤á thσá passworΣ ì
required to enter or reference it?è
6« Curren⌠ User/Disδ Indicato≥ anΣ DM┴ Addres≤ -- thi≤ ì
permit≤ non-standarΣ value≤ fo≥ thesσ item≤ t∩ bσ selecteΣ fo≥á ß ì
particula≥ utility«á Thσ DM┴ Addres≤ i≤ oµ specia∞ concerε sincσ ì
thσ SYSLI┬ module≤ assumσ 80╚ unles≤ tolΣ otherwise¼á and¼ iµ thσ ì
programme≥á change≤á thi≤ iε thσ coursσ oµ thσ utility¼á hσá MUS╘ ì
inforφá SYSLI┬ oµ thσ ne≈ DM┴ addres≤ s∩ tha⌠ i⌠ caε continuσá t∩ ì
function.
7«á NameΣá Director∙á Buffe≥ anΣá Filσá Datßá -- thesσ ì
buffer≤á providσ thσ addres≤ oµ thσ memory-baseΣ nameΣá director∙ ì
buffe≥á (o≥á ░á iµá nonσ i≤ available)¼á thσá maximuφá numbe≥á oµ ì
director∙ entrie≤ permitteΣ iε ß nameΣ director∙ buffe≥ o≥á file¼ ì
anΣ thσ namσ oµ thσ disk-baseΣ nameΣ director∙ filσ t∩ searcΦ fo≥ ì
iµ necessar∙ (NAMES.DI╥ i≤ assumed)«á Again¼ ß requirement≤ flaτ ì
indicate≤ iµ thi≤ i≤ necessar∙ fo≥ thσ utility«á GENIN╙ install≤ ì
thi≤á datßá anΣá prompt≤á thσ use≥ fo≥ thi≤á datßá baseΣá oεá thσ ì
settings of these requirements flags.
8« Clas≤ oµ Utilit∙ -- thi≤ i≤ ß one-bytσ buffe≥ whicΦ ì
i≤ useΣ b∙ GENIN╙ t∩ determinσ iµ specia∞ installatioε operation≤ ì
arσá t∩ bσ performed«á Iµ so¼á thi≤ buffe≥ i≤ followeΣ (ove≥á 1╡ ì
byte≤á later⌐á b∙á thσ specia∞ buffer≤ specifiπ t∩á tha⌠á utilit∙ ì
which are to be installed.
Finally¼á SYSLIB¼á a≤ mentioneΣ before¼á provide≤ ß grou≡ oµ ì
routine≤áá iεá it≤á tw∩á module≤á whicΦá providσáá ZCPR2-specifiπ ì
functions«á Thesσá includσá resolutioε oµ DI╥á form≤á anΣá othe≥ ì
usefu∞ functions«á Thσ reade≥ i≤ inviteΣ t∩ stud∙ thσ SYSLI┬ 2.┤ ì
manual≤á anΣá t∩ examinσ thσ sourcσ codσ oµ thσ utilitie≤ t∩á seσ ì
ho≈á thesσ routine≤ comσ int∩ play«á The∙ reall∙ savσ ßá lo⌠á oµ ì
programminτá overheaΣ anΣ fi⌠ iε nicel∙ togethe≥ a≤ aε integrateΣ ì
set of utility routines.
3.5 Redirectable I/O
Redirectablσáá I/╧á a≤á implementeΣá unde≥á ZCPR▓á vißáá thσ ì
IOLOADER¼á DEVICE¼á anΣá SYSI╧ programs/module≤ meet≤ ß numbe≥ oµ ì
need≤á iε thσ ZCPR▓ environment«á Thσ requirement≤ satisfieΣá b∙ ì
this redirectable I/O system include:
(1⌐áá thσá abilit∙á t∩á dynamicall∙á changσáá thσáá I/╧ ì
environment« SpecializeΣ devicσ driver≤ caε bσ addeΣ a⌠ wil∞ anΣ ì
changeΣá wheneve≥á desired¼á anΣá thσ I/╧ systeφ caε bσá madσá a≤ ì
comple°á a≤ desireΣ withou⌠ regarΣ t∩ thσ amoun⌠ oµ memor∙á takeε ì
u≡á sincσ ß variet∙ oµ driver≤ caε bσ implementeΣá a≤á disk-baseΣ ì
packages which are loaded only when needed.
(2⌐á thσá abilit∙á t∩á refe≥ t∩ thσ I/╧á driver≤á b∙á ß ì
mnemoniπ namσ anΣ t∩ bσ ablσ t∩ easil∙ determinσ wha⌠ driver≤ arσ ì
currentl∙á availablσ anΣ wha⌠ the∙ do«á Thσ DEVIC┼á prograφá wa≤ ì
designed explicitly for this purpose.è
(3⌐á thσá abilit∙ t∩ implemen⌠ a≤ comple° ß se⌠ oµá I/╧ ì
driver≤á a≤á desireΣá withou⌠ beinτá concerneΣá abou⌠á thσá spacσ ì
limitation≤ oµ thσ systeφ tracks« Thσ maiε O╙ caε bσ loadeΣ froφ ì
thσá systeφá track≤ witΦ ß minimuφ oµ I/╧ suppor⌠á (say¼á consolσ ì
only)¼á anΣá thσ defaul⌠ I/╧ driver≤ caε bσ immediatel∙á overlaiΣ ì
(by an IOLOADER command in a STARTUP.COM file).
3.6 ZCPR2 Utility Overview
╔á thinδá tha⌠ thi≤ topiπ ha≤ beeε beateε t∩á deatΦá iεá thσ ì
Concept≤ Manua∞ anΣ thσ User'≤ Guide¼ bu⌠ tw∩ point≤ t∩ emphasizσ ì
herσá arσ tha⌠ (1⌐ thσ ZCPR▓ utilit∙ program≤ arσ clearl∙ divideΣ ì
int∩á classes¼á eacΦ meetinτ need≤ iε specifiπ functiona∞á areas¼ ì
anΣ (2⌐ thσ ke∙ issue≤ arσ systeφá flexibility¼á mutability¼á anΣ ì
susceptabilit∙ t∩ thσ user'≤ whims« ZCPR▓ i≤ intendeΣ t∩ bσ useΣ ì
a≤ ß too∞ whicΦ increase≤ thσ user'≤ productivity¼á and¼ a≤ such¼ ì
it can be bent to meet the user's demands.
The major classification areas of the utilities are:
o I/O o Command Files
o Directories o Named Directories
o Disk Utilities o ZCPR2 Residents and Alts
o Library Utilities o Help (Online Documentation)
o Menu Preprocessor o File Comparison Utilities
o File Copy Utility o Misc
Iεá thσ areß oµ I/O¼á ß redirectablσ I/╧ systeφ i≤ outlined¼ ì
allowinτá thσá use≥ t∩ se⌠ u≡ a≤ man∙ I/╧ drive≥ package≤á a≤á hσ ì
wishes«á Thσ systeφ i≤ baseΣ oε nameΣ devices¼á anΣ thσ use≥ caε ì
no≈á redirec⌠á I/╧á b∙á name¼á rathe≥á thaεá havinτá t∩á remembe≥ ì
arbitrary mnemonics for implementation-specific devices.
Thσ XDIR│ utilit∙ allow≤ thσ use≥ t∩ displa∙ thσ content≤ oµ ì
onσ o≥ morσ directorie≤ iε ß numbe≥ oµ formats¼á dependinτ oε hi≤ ì
tastσ anΣ need≤ a⌠ thσ time« I⌠ als∩ provide≤ fo≥ ß filσ scanne≥ ì
which can be used to keep track of files for him.
DU▓ i≤ ß hand∙ too∞ t∩ havσ around«á I⌠ allow≤ thσ use≥á t∩ ì
manipulatσá disδá likσ DD╘ allow≤ hiφ t∩ manipulatσá memory¼á anΣ ì
accidentia∞á filσ erasure≤ anΣ thσ likσ caε bσ correcteΣá withou⌠ ì
any damage being done.
Thσá L╒ utilit∙ wa≤ ß gooΣ idea¼á anΣ LRUN┌ anΣ LDIR┌ extenΣ ì
thi≤ ideß t∩ bσ morσ practica∞ iε thσ ZCPR▓ environment« Particì
ularly¼ thesσ providσ thσ basσ fo≥ aε extendeΣ commanΣ processor« ì
Thσá usσá oµ path≤ make≤ LRUN┌ stanΣ ou⌠á froφá it≤á predecessor¼ ì
LRUN.
Thσá men⌡á systeφ stand≤ ou⌠ a≤ ß nicσ wa∙ t∩á simplif∙á thσ ì
user'≤ interface«á ╔ likσ thσ idea≤ oµ havinτ multiplσ menu≤ anΣ ì
no⌠á beinτá lockeΣ int∩ an∙ onσ men⌡ a≤ beinτ tw∩ oµá thσá stronτ ì
point≤ oµ thi≤ idea« Iε particular¼ yo⌡ caε movσ froφ onσ direcì
tor∙á t∩ thσ next¼á automaticall∙ movinτ int∩ anΣ ou⌠ oµ menu≤ a≤ ì
yo⌡ go.
Thσá filσá comparσ utilitie≤ arσ convenience≤ iεá thσá ZCPR▓ ì
environment«á The∙ shinσ iε beinτ ablσ t∩ cros≤ director∙á bounì
daries«á CR├ provide≤ nameΣ directories¼á filσ lists¼á anΣ othe≥ ì
nicσ function≤ no⌠ founΣ iε CRCK¼ it≤ conceptua∞ (bu⌠ no⌠ design⌐ ì
predecessor.
MCOP┘á i≤ instrumenta∞ iε openinτ u≡ directorie≤ beyonΣ use≥ ì
15«á WitΦ it¼á yo⌡ caε cop∙ b∙ D╒ o≥ DI╥ forφ int∩ virtuall∙ an∙ ì
director∙ froφ an∙ directory. MCOPY is also used for backup.
CommanΣá filσ processinτ i≤ extendeΣ b∙ SUB▓ anΣá ZEX¼á witΦ ì
morσ anΣ morσ emphasi≤ beinτ placeΣ oε ZEX« Thσ speeΣ anΣ flexiì
bilit∙ oµ ZE╪ seeφ t∩ greatl∙ outweigΦ thσ los≤ oµ TP┴ a≤á advanì
tages.
NameΣá directorie≤á pu⌠á ß wholσ ne≈ ligh⌠á oεá thσá system¼ ì
makinτ i⌠ mucΦ morσ use≥ friendl∙ anΣ offerinτ level≤ oµ securit∙ ì
no⌠ founΣ before.
Thσ ZCPR▓ Resident≤ anΣ Alternate≤ nicel∙ extenΣ basiπ capaì
bilitie≤ frequentl∙ needeΣ b∙ thσ user«á Therσ i≤ stil∞ rooφ fo≥ ì
improvement¼á however« Beinτ ablσ t∩ handlσ nameΣ directorie≤ b∙ ì
thσ residen⌠ command≤ woulΣ bσ nice¼á anΣ beinτ ablσ t∩ usσ ß DI╥ ì
forφá whereve≥á ß D╒ forφ applie≤ woulΣ bσ ver∙á nice«á PAT╚á i≤ ì
instrumenta∞ iε establishinτ anΣ changinτ commanΣ anΣ file-searcΦ ì
environs¼ anΣ GENIN╙ make≤ thσ installatioε proces≤ mucΦ simpler.
Onlinσ documentatioε a≤ provideΣ b∙ HELP▓ i≤ ver∙ nice¼ but¼ ì
unfortunately¼á ßá luxur∙ permitteΣ onl∙ t∩ thosσ wh∩ havσ ß sigì
nifican⌠á amoun⌠á oµ disδ spacσ iε whicΦá t∩á work«á Thσá systeφ ì
reall∙á shine≤ wheε yo⌡ caε cal∞ u≡ hel≡ wheε yo⌡ arσ iε developì
ment¼á anΣá changinτá disk≤ (a≤ woulΣ bσ necessar∙ oεá ßá smalle≥ ì
system⌐ t∩ finΣ thσ appropriatσ hel≡ file≤ reduce≤ thσ utilit∙ oµ ì
thσ system.
Onσá iteφá t∩á notσ iε closinτ i≤ tha⌠ ╔ havσá attempteΣá t∩ ì
desigεá man∙á oµ thesσ utilitie≤ t∩ bσ immunσ t∩ change≤á iεá thσ ì
disδ environmen⌠ whilσ the∙ arσ running« MCOPY¼ fo≥ instance¼ iε ì
thσ Multiplσ Cop∙ Modσ (═ option⌐ allow≤ thσ use≥ t∩ changσ disk≤ ì
withou⌠ havinτ t∩ warφ boo⌠ betweeε eacΦ grou≡ oµ file≤ copied.
4.0 What Next?
GooΣ question« Well¼ firs⌠ oµ all¼ ╔ woulΣ likσ t∩ emphasi≤ ì
two points:
(1⌐á thσ ZCPR▓ Systeφ i≤ probabl∙ no⌠á perfect«á Therσ ì
arσá bounΣá t∩ bσ error≤ whicΦ sho≈ themselve≤ iε thσá codσá froφ ì
timσ t∩ time«á An∙ softwarσ oµ sucΦ complexit∙ i≤ bounΣ t∩á havσ ì
theφ b∙ it≤ ver∙ comple° nature.
(2⌐ thσ ZCPR▓ Systeφ i≤ likel∙ t∩ mutatσ again« I⌠ wa≤ ì
designeΣá from¼á amonτ othe≥ things¼á ß lacδ oµ satisfactioε witΦ ì
CP/═ anΣ ZCPR1¼á and¼á a≤ ZCPR▓ i≤ useΣ morσ anΣ more¼á ne≈ idea≤ ì
arσá bounΣá t∩ comσ u≡ a≤ t∩ ho≈ t∩ d∩ thing≤ bette≥á o≥á ho≈á t∩ ì
refinσá curren⌠á idea≤ t∩ makσ thσ use≥ environmen⌠ morσá producì
tive.
Iεá thσ wa∙ oµ fixe≤ t∩ thσ ZCPR▓ System¼á periodiπá update≤ ì
arσá t∩ bσ expected«á Hopefully¼á tho¼á notation≤ oε thσá error≤ ì
encountereΣá wil∞ bσ accumulateΣ anΣ thσ systeφ wil∞á bσá updateΣ ì
onl∙á oε occasioε iε responsσ t∩ ß numbe≥ oµ errors«á Thi≤ i≤ a≤ ì
opposeΣ t∩ updatinτ thσ systeφ ever∙ timσ someonσ find≤ aεá erro≥ ì
o≥ decide≤ hσ want≤ t∩ makσ ß changσ t∩ it«á Additionally¼á conì
figuratioε managemen⌠ control≤ should¼ iε m∙ opinion¼ bσ applied¼ ì
witΦá forma∞ procedure≤ establisheΣ fo≥ erro≥ analysis¼á duplicaì
tion¼ correction¼ changσ proposa∞ submission¼ anΣ redistribution« ì
Thi≤á wil∞ probabl∙ no⌠ happen¼á simpl∙ becausσ oµ thσ amoun⌠á oµ ì
effor⌠á involved¼á bu⌠ froφ m∙ professiona∞ experiences¼á ╔á fee∞ ì
tha⌠á thi≤á i≤á ß ke∙ wa∙ t∩ satisfactoril∙á maintaiεá thσá ZCPR▓ ì
System.
A≤ fo≥ mutation¼á i⌠ i≤ good¼á a≤ ß rule« Natura∞ Selectioε ì
allow≤á thσ stronges⌠ trait≤ t∩ flourisΦ whilσ thσ weake≥á trait≤ ì
diσá out¼á anΣ ╔ fee∞ tha⌠ thσ samσ shoulΣ bσ truσá oµá software« ì
Thσ gooΣ idea≤ shoulΣ bσ nurtureΣ anΣ elaborateΣ oε whilσ thσ baΣ ì
idea≤ shoulΣ bσ noted¼á learneΣ from¼á anΣ discarded« Thσ resul⌠ ì
i≤ ß bette≥ anΣ bette≥ productivσ environmen⌠ a≤ timσ goe≤ along«
Onσá thinτ abou⌠ thσ Publiπ Domaiε tha⌠ ╔ aφ reall∙ solΣá oε ì
i≤ thσ learninτ environmen⌠ tha⌠ i⌠ fosters« Peoplσ caε takσ thσ ì
sourcσá codσ t∩ program≤ anΣ learε ho≈ the∙ function«á The∙á caε ì
theε usσ thi≤ knowledgσ t∩ makσ thσ program≤ "betteróá ("better"¼ ì
oµá course¼á i≤ ß subjectivσ concept)«á Thσ poin⌠ i≤ tha⌠ peoplσ ì
learεá anΣá gro≈ froφ this«á Tha⌠ i≤ good«á A≤ thσá reade≥á ha≤ ì
probabl∙á alread∙á noted¼á thσ entirσ sourcσ codσá t∩á thσá ZCPR▓ ì
Systeφá anΣá SYSLI┬á i≤ availablσ fo≥ peoplσ t∩ stud∙á anΣá learε ì
from«á Thi≤á codσ ma∙ no⌠ bσ thσ best¼á bu⌠ i⌠ i≤ good¼á anΣá i⌠ ì
provide≤ ß good¼á fairl∙ well-documenteΣ basσ froφ whicΦ t∩ star⌠ ì
thσ learninτ process.
Enjoy!
Richard Conn