ja, da mag es Ähnlichkeiten geben, dennoch ist das alles sehr merkwürdig. Der Film ist mit einem Blumenstrauß hier angekommen und wirbt offensichtlich für die Seite push11.com – was auch immer das sein soll.
Das einzige, was ich rausbekommen habe ist, dass sie bei godaddy.com registriert ist (so wie ungefähr 3,5 Millionen andere Seiten) bzw. von deren Unterfirma domainsbyproxy, die dafür da sind, Domainnamen anonymisiert zu verwalten. Du kannst also nicht mit einer Whois-Abfrage erfahren, wer der Domain-Inhaber von push11.com ist. Das stimmt mich schon mal kritisch und ich glaube auch nicht, dass für ein Buch so ein Aufwand betrieben würde.
Ich frage mich, warum ich so ein Ding bekommen habe und was dieser Unsinn soll. Sollte sich tatsächlich um eine virale Kampagne – für was auch immer – handeln, müssten doch auch eigentlich mehr Leute so ein Ding bekommen. Sonst funktioniert das nicht. Ich bin mal gespannt, ob es noch mehr Leute gibt, die diesen Film erhalten haben…
ich habe sowas gestern Abend um 21 Uhr auch bekommen: einen Blumenstrauß mit einem USB- Stick drin (1 GB, darauf steht mit Edding „06/11“), keine Karte, kein Absender.
Auf dem Stick ist das Video drauf, „Pass_auf_mich_auf“ als Dateiname, in zwei verschiedenen Versionen (wmv und w4v).
Wohne in Berlin.
Wenn ich es euch richtig verstanden habe, wohnt nur einer von euch in Berlin und nur derjenige hat das Ding bekommen. Stimmt das?
Ein Blogeintrag in meinem Blog (angelcurse.libri-amandi.de) folgt in Kürze.
Möglicherweise das Versanddatum, möglicherweise haben genau elf Blogger so einen Strauß bekommen, möglicherweise gibt es elf minimal verschiedene Videos?
Das denke ich auch. Sehr warscheinlich liegst Du richtig mit Deiner Vermutung, wobei ich bei allen bisherigen Blogs rein thematisch keinen Zusammenhang entdecken kann. Vielleicht passiert tatsächlich erst am 11.11. etwas auf der entsprechenden Seite. Hoffentlich kein übler Karnevalsscherz 😉
Was mich erstaunt: Unsere Beiträge werden bei Google schnell indexiert und sind mit dem Namen der Domain als Suchbegriff alle abrufbar. Ist Google wirklich so schnell?
Ich hab vorsichtig optimistisch mal den Tag vom letzten Beitrag umgeändert, von Kryptik auf Alternate Reality Games. Mittlerweile halte ich es für ziemlich wahrscheinlich, dass uns (Angelcurse, Ludger, Dominic) da jemand in ein Rabbit Hole schubsen w…
Auf meinem steht 11/11, woraus ich erst schloß, dass die Seite am 11.11. fertig online geht.
Wenn die Zahlen unterschiedlich sind, kann es auch eher sein, dass 11 USB-Sticks im Umlauf sind.
Ich denke immernoch, dass es einfach ein Viral ist. 11 USB-Sticks und Blumensträuße über Fleurop kosten schließlich Geld, wobei ich die Idee eines Spiels/Puzzles ohne Gewinnerzielungsabsicht zur Abwechslung ja mal ganz interessant und erfrischend fänd.
Ist Google wirklich so schnell?
Das ist mir (vorallem als Webdeveloper) auch aufgefallen. Nur 2 Stunden nach meinem Posting war es in den Suchergebnissen zu finden.
Früher kam unsere Seite auch schon gut bei Google an, da dauerte es rund 24 Stunden.
Kann sein, dass das eine Verbesserung im Rahmen des letzten Updates vom Oktober ist. Würde ich mal denken.
Also ich könnte im Adressatenkreis sein, weil ich das Prinzip des Alternate Reality Games mehrfach in meinem Blog erwähnt habe. Du als Krimiblog-Betreiber hast offenbar ein Faible für Krimis und Rätsel. Angelcurse und Dominic kommen beide aus Berlin, das könnte auch etwas sein. Mal abwarten, ob sich noch ein paar Blogger zu uns gesellen.
Ich finde ja Deine Verbindung zu „Alice im Wunderland“ ziemlich gut, passt auch zum Film. Worüber ich mir natürlich auch noch Gedanken mache ist die 11. 9/11 (gibt es ein USB-Stick mit dieser Nummer?) kommt einen in den Sinn und auch der 11. März 2004 (Anschläge in Madrid, 3/11)…
Du liebe Güte, ich werde hier ja noch zum Verschwörungstheoretiker, dass will ich ja nun gar nicht.
ziemlich sicher ein ARG-Rabbit Hole, also Einstieg in ein Alternate Reality Game.
Als einer der zahlreichen Mitspieler beim letzten dt. ARG und bekennender Fan dieser Spielform kann ich nur hoffen, daß ihr uns auf dem laufendem haltet!
habt ihr die Videos schon mal verglichen? Wenn es ein Puzzle ist, könnte es ja auch entsprechende Unterschiede geben. Zumal man sich ja die Mühe gemacht hat, die Sticks unterschiedlich zu beschriften. Zudem schreit das Video ja geradezu nach einer Standbildanalyse, um versteckte Hinweise zu entcecken. Steht in den Dateieigenschaften irgendwas sinnvolles drin?
soweit ich das sehen kann, gibt es keinen Unterschied zu dem Video, der im Netz steht. Allerdings ist das so schnell geschnitten, dass ich vielleicht den einen oder anderen Hinweis übersehen haben könnte.
Die Dateieigenschaften sind harmlos, es sind zwei gleiche Filme, einer als mp4, einer als wmv, beide vom 07.11.2007.
Artº I’ve used WordStar convention of surrounding words to be
bolded with CTL-B! Hope you can do this.
At the end of the article is a listing of an excerpt of the
BACKUP.ZEØ script I describe herein! It should be printed as
a „Figure n¢ next to the article.
This baby’s a bit long» hope you can fit it¡ Thanks.
Best to you and yours.
Rick
Column for TCÊ #38 May/June 1989
ZEØ AND HARD DISK BACKUPS
by Rick Charnes
I’d like to start off this issue with an appeal to all users of
ZCPR³ without a modem to give serious consideration to getting
involved in the BBS world! The nationwide network of Z-Nodes we
have established is perhaps the best way we have to educate
ourselves in the many aspects of our extraordinary operating
system! In the long intervals between TCÊ issues this network
remains our foremost means of communicating with each other! Its
sense of immediate action and response with many individuals
helping each other and sharing programs that we have written is
perhaps the single most important source of the energy behind the
Ú world! All the ZCPR³ columnists you read here in TCÊ – Jay
Sage Bridger Mitchell Bruce Morgen Cam Cotrill Hal Bower and
myself – are all active participants in this network! I cannot
emphasize how much this kind of sharing and give-and-take can add
to your enjoyment of computing! And it can all be done easily
with a minimum of phone charges via PC-Pursuit.
There has been much discussion on the Z-Nodes in recent months
on the subject of ZEX the ZCPR³ world’s preeminent ‚batch
processor‘! It is partly occasioned by Joe Wright’s release in
autumn of 198¸ of ZEØ version 4.03 partly from continued
enthusiasm over Jay Sage’s release of NZEX-D quite some time ago
and his incorporation of ZEØ into ZFILER’s magnificent group
macro facility and partly due to the fact that it is simply in
general an extraordinary program allowing for tremendous
opportunities for automation where nothing (not even King ARUNZ!)
else will do! If I am not mistaken Bridger Mitchell’s column
Å this issue is devoted to a reconceptualization of what ZEØ should
be and as a fervent admirer of the program (I use it wherever I
can!) I am very much looking forward to further developments of
this program by Bridger and his colleagues.
In that spirit then, and as mentioned last time I would like to
attempt to give readers a flavor of what ZEØ can do in the
context of discussing one particular use to which I put it the
BACKUP.ZEØ script I use for backing up my hard disk directories.
If others have feared ZEØ because of its reputation for
eccentricity and exotic nature it is perhaps for this very
reason that I have embraced it! ZEØ might be compared to the
CP/M SUBMIT the way one might compare the experience of listening
to a Top 4° radio station to attending a live performance of the
181² Overture given by the San Francisco Symphony! Hopefully
between my and Bridger’s column you will be inspired to archive
good old SUBMIT onto a sturdy but yellowing floppy and move on up
to the ethereal realms of ZEX.
This column is intended generally for those with some prior
experience with ZEX! I am not here going to explore all its
nooks crannies and meadows filled as they are with fragrant and
variegated bloom though that would certainly be a wonderful and
worthwhile venture! It will not be a primer on the basics of its
use! I will of necessity touch on some of its features but my
purpose here is mostly to explore a few particular examples of
how in my BACKUP.ZEØ script I have interfaced ZEØ with both the
ZCPR³ shell variable subsystem and the ZCPR³ registers the
combination of all three of which is guaranteed to be a
pick-me-up to the most tired of „there’s-nothing-left-to-
explore-in-CP/M¢ ne’er-do-well’s! In studying some of these
fairly specific ZCPR³ and ZEØ programmatic techniques I am taking
a gamble and hoping that the reader can draw some general lessons.
When backup programs that have no provision for this are run for
the first time they simply fill up in completely random order,
a given number of floppies with the files from the hard disk.
Each successive run copies the files in the same or another
random order.
Suppose however with this first run of the backup program my
ALIAS.CMD happens to get copied onto the third floppy in a set of
five from my root directory! Then next weekend when I run the
backup program again assuming I’ve modified ALIAS.CMD and the
Å archive bit is therefore turned off it will again be copied by
the program! But there’s nothing to guarantee it will this time
be copied to the same floppy¡ It may end up on the first or
second or fifth disk! After several runs of the backup program
I may end up with several different copies of ALIAS.CMD on
different backup floppies modified at different times on the
hard disk¡ I have yet to see a satisfactory solution to this
problem in terms of a single program.
In the true spirit of „Z,¢ therefore or what Frank Gaude§ used
to call „the tool approach,¢ I have written a ZEØ file to do the
job! I have decided the best solution lies in copying the files
onto the floppies in alphabetical order! I have settled on six
for the number of backup floppies required by each of my major
hard disk directories! I backup onto floppy one all files
beginning with the letters A through D floppy two gets the files
beginning with E through J and so on through the alphabet,
reserving floppy siø for the „Z¢ files of which for some
mysterious reason there always seem to be an inordinate number on
virtually all my directories…
I do this with 2 separate invocations of PPIP (renamed to COPY),
one for each letter of the alphabet used with its ‚/ae§ option
to indicate „copy only files which have been modified files since
last backup and write over the destination file without
querying,¢ as follows:
Any text between ^¼ and ^¾ is echoed directly to the screen! The
^? command stops and waits for the user to hit any key at which
point the script continues.
You needn’t worry about ZEØ files being too large! Once they’re
loaded no further slowdown in your system is noticed! In any
case while they’re being loaded you don’t have time to get
impatient as you’re too busy watching the beautiful video screen
display you’ve created!
This alphabetical ordering scheme ensures that every file is
always backed up on top of its previously backed-up copy/version.
This week’s ALIAS.CMD is always copied over last week’s
ALIAS.CMD and today’s TCJ-COL.² will always and automatically be
copied onto the same disk as yesterday’s copy.
Å I have over the years added to my BACKUP.ZEØ the most beautiful
graphics and boø drawings of which my Qume 10² is capable and
combined with extensive use of its video attributes such as
reverse video blink underline and cursor off I have created
what I feel to be the equal in terms not only of functionality
and power but of beautiful screen display of any MS-DOS backup
program! Of course there’s one additional factor that in my eyes
makes it even betterº I wrote it myself!
I should mention as an aside that a very large number of popular
and common CP/M terminals are capable of a great deal more
graphics boxes windows and other fancy video displays than we
normally use or even suspect! These features often remain
unknown and unutilized simply because they were never
standardized among the great variety of CP/M-style terminals.
There is nothing however – I repeatº nothing – to keep an
individual user from creating for himself quite and surprisingly
beautiful if not transportable screen displays! ZEØ scripts,
with their „^¢ command along with ZCPR3’s ECHO
command give the user a great opportunity to do this and many
of my ZEØ files and ARUNÚ aliases are real beauties! It is
especially unfortunate that these fancy features go unused in our
CP/M-compatible world» the lack of „graphics¢ is always being
touted as one of the reasons for people’s decision to leave their
old CP/M boø behind.
Years ago Dennis Wright wrote a set of assembly language
routines GRWLIÂ and GRXLIB that produce extremely sophisticated
and beautiful graphics windows and menus the windows capable of
overlaying each other appearing and disappearing with text
inside etc! Similarly we already have one set of graphics
windowing libraries for Turbo Modula-2 and Mr! Edward Jackson of
California will soon be releasing another! I have used these
Modula-² routines to write COM files on my little ol§ Morrow that
rival displays I’ve seen on early MacIntoshes and video arcades.
I would urge users to take with a grain of salt claims for any
alleged „lack of graphics¢ in CP/M and to incorporate these
library routines into their programming! The beautiful displays
really make a difference and greatly add to a finished product.
The only thing that occasionally bothered me is when my backup
disk would fill up! This situation is most annoying! PPIP would
of course report the error but considering I’m inside a ZEØ file
there’s not much it can do about it! If the disk would fill up,
for instance during the backing up of the „B¢ files I would
then have to suffer through PPIP’s attempts to copy all the
unarchived „C“ and „D¢ files with each of these attempts
virtually guaranteed to fail! Although PPIP is smart enough so
that if it senses the destination disk is full during one of the
copies in a PPIP B*.ª BACKUPº command it will abort that
particular wildcard operation there’s no way it can anticipate
the NEXT commands being here of course ‚PPIP C*.ª BACKUP:§ and
‚PPIP D*.ª BACKUP:.‘ It would then of course blithely attempt to
execute these even though the task was impossible.
How was it to know this? I had to patiently watch sometimes 5 6
and • PPIP „disk full¢ messages during copies and not being able
to do anything about it! If I would CTL-C during the particular
PPIP operation that sensed the disk full it would report a „User
abort,¢ terminate that particular PPIP command – and simply move
on to the next.
Well what do you expect? It’s just a computer!
I had only one way out of it at the time! Each time my backup
disk would fill up I would despairingly watch it happen poor
PPIP torturing itself with trying and when the script paused for
me to change disks I’d CTL-C out of it and abort the entire ZEX
script! I’d then manually erase on the backup floppy whatever
files I determined unnecessary and obsolete and restart the
script from the beginning.
Though it being the late 80’s and I knowing this isn’t what
computers are supposed to do I couldn’t really think of any way
out of the situation! I mean after all this is on an obsolete
Morrow computer running an esoteric and little-used enhancement
of an antiquated operating system! What after all could I
expect?
Operating under the principle, however in my life generally as
well as in my computer programming specifically that it ain’t
what you got but what you do with it the Great Spirit of
Computers seems to have paid me one of its irregular visits! It
one day hit meº if PPIP is smart enough to know when a
destination disk full can’t I get the operating system to know?
This is ZCPR3 after all.
I keep hammering home to all who will listen that one of the
unique aspects of ZCPR³ is the way it provides methods for all
its separate components to leave messages for each other! This
is the raison d’etre of the ZCPR³ message buffer generally and
Å the error flag particularly the latter of which is here the
perfect messenger for our job.
While I was fiddling around with PPIP’s internals I decided to
also set the error flag if the user enters a CTL-C during a copy
operation! Occasionally I would see a backup copy take place
that for a number of different reasons I didn’t want to happen,
and I had always wanted some way to allow ZEX and not PPIP alone
to abort if this happened! Now I had it.
Finally PPIP will now set the error flag to ‚9§ if the
destination directory has no remaining entries! PPIP1¹ with
these above modifications is available on all Z-Nodes.
All that was necessary in the ZEØ script was to add the commands
IF ERROR;GOTO ERR;FI» after each invocation of PPIP as follows:
copy a*.ª bakº /ae
if er
goto err
fi
copy b*.ª bakº /ae
if er
goto err
fi
.
.
.
A listing of the error routine of BACKUP.ZEØ is printed as Figure
___.
As it is fairly long I am not going to describe here the entire
script! I want only to focus on the parts of it that relate to
the sparks that went off in my mind consequent to the above
modification.
But the Muse of Computer Automation wouldn’t let go of me! Soon
I started thinkingº here I am using this incredibly powerful
tool suited to the automation of many tasks! Why do I need to
exit from it? Can’t I configure my ZEØ script so that it will
allow me to run a few commands from the ZCPR³ command line on my
own and then continue with the script? I had never before used
ZEØ precisely in this manner to allow for user input from the
ZCPR³ command line! If I could however it would let me do the
above erasure of files or whatever is necessary so that the
backup floppy will have enough room and then return to the
script.
This was an interesting challenge! ZEØ has an „allow user input“
directive (^“) which I naively at first thought might do the
trick! I quickly realized however that this directive is
primarily to allow user input inside an application program not
at the command line! No matter how I tried no matter which
internal ZEØ command I experimented with I couldn’t set it up so
that ZEØ would stop temporarily while at the command line query
me to enter a command and then resume the script.
Where to turn?
The ZCPR³ utility CMD.COM popped into my head! After all this
is its functionº to query for a command and then execute it! As
you will recall from my first column it is ideal for use inside
a SHSET command line! However I quickly discovered it is not
meant for use within a ZEØ script! ZEØ will not stop at CMD and
properly wait for a user command but rather will continue to send
commands from the ZEØ command stream! I am sure the reasons for
this are very simple and logical though they are at the present
unknown to me.
Enter ARUNZ! In ZCPR3 when in doubt look to ARUNZ! ARUNZ’s
„query for user input¢ command was a definite candidate for the
job! I wondered if ZEØ would allow this feature to operate.
This is a greatly simplified explanation but generally you
insert the text you wish to display to the user between a $¢ and
a “ and then recall it later in the command line with $’l1! A
common use is:
$“Enter a commandº “
The user then enters his command or series of commands complete
Å with parameters if necessary and then the entire string that the
user entered is recalled wherever in the alias with the „$’l1“
command.
I tested an alias using this technique and it worked perfectly.
An invocation of an ARUNÚ „user input“ alias inside a ZEØ script
allows you to pause the script enter a command to be sent to
the command processor and then resume to the next commands in
the script! Used inside BACKUP.ZEØ this would allow me to enter
whatever commands necessary to erase files from the backup disk,
and then return.
Now that I had my tools my plan of action began to unfold as
follows:
In step five I realized that not only did I want to give myself
freedom to choose whatever tools for erasing that I wished but
that I also wanted ZEØ to load up one or two specified utilities
that would facilitate that task for me.
I should point out here that Jay Sage’s recent opinion that
programs such as ZFILER and the like might perhaps be better made
ZCPR² rather than ZCPR³ shells is right on point here» we would
then be able to use it in our script if we wanted.
I next log on to the BACKUPº disk and then do a DIR command so I
will have a listing of files in front of me.
Then going to my ALIAS.CMD I wrote an alias called INPUTERA which
will serve as a preface for ERASE.COM:
INPUTERA $“Enter files to erase as a filelistº „if ~nu $’l1» <<
erase $’l1;sp;else;echo nothing entered.;fi
As discussed previously there is no reason we cannot run an ARUNZ
alias from within a ZEØ script! Though it occasionally presents
far-ranging problems concerning the ZEØ INPUT flag that need not
concern us here.
This will display:
Enter files to erase as a filelist:
on the screen and pause! If I now see from the DIR listing that
files CHAPTER.± and PROG.Z8° on the destination floppy are both
20k in length obsolete and unneeded and obviously taking up
precious space on the disk I could enter:
CHAPTER.1,PROG.Z80
The ARUNÚ script which now has control would then expand to:
ERASE CHAPTER.1,PROG.Z80
and my lovely but no longer wanted files would be unceremoniously
deleted! (The question of how to ensure that one’s backup
floppies are continually updated – i.e! contain only files
existing on the hard disk – is another story! I sometimes use
Carson Wilson’s CHECK2¸ program for this which compares
directories and shows which files are missing on one or the
other and sometimes a lovely ZFILER group macro script that
Carson Wilson conceptualized.)
Å One proviso is in order here however concerning the use of ARUNZ
within a ZEØ script! In writing BACKUP.ZEØ I had the most
interesting and unusual experience — from which as usually
happens I learned immensely! At the point in the script where
the aliases execute my computer locked up! Try as I might I
could not figure out the reason for this! It was a particularly
edifying experience actually because through it I learned that
the normal technique I use to trace down bugs, the one that is
considered the standard for programmers the world over only
works 99¥ of the time! That technique is of course the isolate-
the-problem-by-stripping-away-extraneous-factors-one-by-one
method! I have used this technique countless times and it has
normally worked perfectly! After stripping away as many factors
as possible so the theory goes you then add them back one by
one and at some point – VOILA¡ – you find it! This was one
time it didn’t.
I isolated extraneous factors in this case by making an extract
of the relevant part of the ZEØ script and running that as a
mini-script! This time the script worked seeming to confirm the
theory.
To make a long story short however I discovered after many
weeks that the lockup was caused by a TPA problem! Unbeknownst
to me – and perhaps to its author – type ³ ARUNÚ running at
8000h will lock up when there is less than 39k TPA available to
it on the system! Many users may think it completely impossible
to ever drop down that low but let me warn youº when you do work
with ZEØ scripts you may often be surprised at how low the
mercury can drop on your TPA thermometer! ZEX.COM itself uses
about 3.5k of TPA! On top of this you have to add the memory
occupied by the script! BACKUP.ZEØ is a bit over 8k in length.
I start out with 50k TPA on my hard disk system» within this
script I’m down to about 38.5.
The solution? Easyº it was precisely for these situations that
the type ´ concept was invented! Make sure you’re running ZCPR34
and use the type ´ ARUNZ which has code to determine wherever is
the most efficient place in memory for it to load and run! 8000h
is obviously too high with only 38.5k TPA so it simply relocates
itself someplace lower in memory and runs perfectly.
Now we can load up NSWEEP! Control is returned to ZEX where it sees
an invocation of this honored utility! I should note in this regard
that a friend and I have both found NSWP20• to mysteriously
malfunction on drives Eº and F: so I use NSWP20µ here! Since we
have the ‚ZEØ input§ flag turned to OFF we can enter whatever
commands we want while inside NSWEEP and ZEØ is temporarily kept
at bay! This allows us to see file sizes get a feel for what’s
expendable and what’s not view files with an eye towards
determining what can be erased etc.
Now we come to the above-mentioned ARUNÚ alias I wrote to give
myself the ability to do that for which ZEØ itself has no direct
provisionº to pause allow the user to enter a command from the
Å ZCPR³ command line and then return to the ZEØ script.
Our next ZEØ command is then the ARUNÚ alias INPUT: which might be
said to be a ZEX-compatible CMD.COM! It looks as follows:
INPUT $“Enter any command (‚EXIT§ to exit <<
ZEØ completely)º „$’l1;inputret $1
INPUT simply displays its message on the screen and whatever
commands the user enters are stored into the ARUNÚ symbol $’l1
and then executed! I also want to make an allowance for a case
in which something has definitely gone awry and the user
absolutely needs to exit from the ZEØ script! In that case the
following ARUNÚ alias EXIT does the job:
Although I could have put this ‚EXIT§ sequence directly into the
original alias I preferred to have it accessible from anywhere
as an alias in its own right.
If ‚exit§ is not entered then we are ready to give the user his
last chance to enter any necessary commands to definitely ensure
that all unneeded files are erased from the backup disk and that
there is sufficient room to continue the backup procedure before
returning to ZEX! We therefore have INPUT chain to a second
alias which I have called INPUTRET which will indicate to the
user that this is his last chance and then return to ZEX.
I should mention that a few days later after I had added all the
features I wanted to this ZEØ script INPUTRET looked a bit
different but at the time it was simply:
INPUTRET $¢ Enter your final command (‚or EXIT§ to exit ZEØ <<
completely)º „$’l1;if eñ $’l± exit;echo returning to <<
zcpr3…;push !;else;sak /p2;fi
— exactly like INPUT above except rather chaining to a second
alias if the word ‚EXIT§ was not entered it would pause ² seconds
and return to ZEX! If ‚EXIT§ was entered the EXIT alias is
temporarily nested in then ‚PUSH !§ restores the current
directory and we return to ZCPR3.
We are now faced with the situation as mentioned before of
wanting to return to the body of our ZEØ script! So far so good;
nothing special is required to do that! We certainly want to
return to the part of ZEØ outside the „error¢ routines from which
Å we had just come the part that does the actual copying.
Probably or so my original thinking went we should use ZEX’s ^:
directive here which reruns the command script from the
beginning.
If there’s one thing I would hope ZCPR³ users get out of my work
it is the power of the registers and other similar functions to
pass messages back and forth to utilities.
I thought about it for a while – „registers¢ must have been
going off in my head – and I knew how it could be done.
^
;=1
copy a*.ª bakº /ae
if er
reg s± 1
goto err
fi
;=2
copy b*.ª bakº /ae
if er
reg s± 2
goto err
fi
;=3
copy c*.ª bakº /ae
if er
reg s± 3
goto err
fi
;=4
Å copy d*.ª bakº /ae
if er
reg s± 4
goto err
fi
^
^?
^
;=5
copy e*.ª bakº /ae
if er
reg s± 5
goto err
fi
.
.
.
etc….
Get it? Who cares if ZEØ has no internal pointer? Our operating
system is so superâ it provides enough services externally¡ We
use register ± to be our external pointer for ZEX.
What we’ve done is use the REG command to set register ± to a
different value depending on where in the alphabet we are in our
copying when the disk full message was given! If PPIP detects a
disk full error during copy of the files beginning with the
letter „A“ PPIP itself sets the ZCPR³ error flag and then we set
register ± is set to „1“! If the disk full is detected during
the copy of the „B¢ files register ± is set to „2“ and so on up
to „26¢ for the „Z¢ files! These values are arbitrary» assigning
the numbers ± to 26 to the letters A to Ú simply makes the most
sense! In other words if an error is detected register ± will
be set to a value from ± to 2 depending on which files we have
just been copying.
Pay attention to the ZEX labels I’ve added which have the form
;=labelname that I have inserted before each COPY command! The
name of the label before copying files beginning with „A¢ is „1“;
the label jut preceding the copy of „B¢ files is named „2“ and
so on through Z! A ZEØ label name just as any filename or in
fact most any other name we use in computers may consist of any
Å alphanumeric characters and there is no reason we cannot use
digits instead of letters! It’s the same scheme we use with
setting the register! At the label named „3“ we copy files
beginning with the letter „C¢ and upon an error at this point set
register ± to 3! We will see shortly how handy this is.
After the INPUTRET alias has taken us back to our ZEØ script the
next command in BACKUP.ZEØ is:
RESOLVE GOTO $$R1
Remember that since we are in ZEØ a double dollar sign is how we
represent a single dollar sign» ZEØ strips out the first! So we
are left with ‚$r1‘! Of the many things that RESOLVE does one of
them is return the value of any of the ZCPR³ registers – and for
this we should be grateful or else this entire procedure could
not work! ‚$r1‘ therefore expands to „the value held in register
1.“
Now let’s go back to our script and simulate a real-life
situation! Suppose we are backing up our MEXº directory and we
are on backup disk number 4! While PPIP is copying the files
beginning with the letter „S¢ it runs into a full destination
disk! It sets the ZCPR³ error flag and then our ZEØ script sets
register ± to the value of 19! ZEØ then jumps to the error
routine at the bottom of the ZEØ script! We are told the disk is
full we get a directory and are asked which files we’d like to
erase! We erase a file or two here! NSWEEP loads and since we
are able to use its V)iew command we see a few more files that
are redundant though we’re not absolutely sure yet we have
enough space on the backup disk to confidently return to the ZEX
copying routines.
We next take advantage of the INPUT alias which allows us to run
any program of our choosing to run Carson Wilson’s FD which
gives us a better sense of which files on the disk are most
recent! We use this new information about datestamps to
determine that there is one very large and old file for which we
no longer have any use and therefore at the final INPUTRET
prompt erase it! We are then finally returned to ZEX! At this
point the next command ZEØ encounters is ‚RESOLVE GOTO $$R1‘.
Å Never one to give myself any rest however a day or so later the
thought came to me (a classic symptom of that dreaded disease
that programmers get „feature-itis“)º wouldn’t it be nice if we
could get a message flashing on the screen:
RETURNING TO THE „S¢ FILES…
just before the actual return? Sure I said» why not?
But how to do it? How where and what could possibly send to us
this „S,¢ and how would we store keep track of and later access
it? Could PPIP possibly send this letter to us somehow? If not
PPIP then what? I challenge anyone who doesn’t think in terms
of RESOLVE and shell variables to come up with a solution short
of writing a new program…
The idea is to create a *.VAR file that matches letters with
numbers! In other words we’re going to set up a situation in
which when RESOLVE finds the string ‚%19§ it will give us the
letter ‚S‘! Here’s what we do! We’re going to define some
variables into our SH.VAR file! This time I’m not going to
bother defining another *.VAR file as the current one.
We use SHDEFINE as „SHDEFINE SH.¢ Note that with SHDEFINE even if
another variable file is currently defined to the system we can
specify as a command line parameter the particular file to which
we would like to add or replace variables! Using SHDEFINE’s
E)dit command we add the following variables and definitions,
starting from where variable ‚1§ ½ definition ‚A§ and going all
the way to variable ’26§ ½ definition ‚Z‘.
VARIABLE
NAME DEFINITION
——- ———-
± „A“
² „B“
³ „C“
´ „D“
µ „E“
„F“
.
.
.
and so on until 2 and „Z“! Now we can add one more command to
our INPUTRET alias described above (RESOLVE.COM is always renamed
to RS.COM):
RS ECHO RETURNING TO WHERE WE WERE – AT THE %$RF0± FILES…
and the entire alias becomes:
INPUTRET $¢ Enter your final command (‚or EXIT§ to exit ZEØ <<
completely)º „$’l1;if eñ $’l± exit;echo returning to <<
zcpr3…;push !;else;rs echo returning to where we were <<
– at the %$rf0± files…;hold 2;fi
Å Don’t worry about the length of this alias even if with your
editor it exceeds 20° characters the number normally associated
with the limit of the command line buffer! Any text in the ‚user
input§ part of the alias is not placed in the command line buffer
and should therefore not be counted towards the 20° characters.
By the way it should be noted that RESOLVE cannot expand both
the register value AND the ensuing and contingent string variable
(that the register value then becomes)! Therefore we cannot put
this command inside the ZEØ file» we must put it into ARUNÚ where
we can rely on ARUNZ’s register expansion symbol and leave the
variable expansion up to RESOLVE! Unlike in our first use of
RESOLVE where it expands the register contents here ARUNÚ does
so.
With our register ± still set to 1¹ ARUNÚ resolves the register
symbol ‚$rf01§ and our command then becomes:
RESOLVE ECHO RETURNING TO WHERE WE WERE – AT THE %1¹ FILES…
Now RESOLVE’s variable-expansion and not its register-
expansion facility comes into play! ARUNÚ has sent it the string
„%19.¢ Remember that when RESOLVE sees a ‚%§ it knows that a
named shell variable is to follow! It knows therefore to look in
the currently defined shell variable file defaulted to SH.VAR
unless we have defined it otherwise with SHFILE.COM (we haven’t),
and determine the definition that has been given to that
variable! That definition is then returned to us for our use.
So RESOLVE then looks into SH.VAR for a variable named „19“! And
what does it find? Of course – the letter ‚S‘.
Our command line is therefore expanded to
ECHO RETURNING TO WHERE WE WERE – AT THE „S¢ FILES
ECHO presents this lovely and informative message to us on the
screen we are tickled pink that our operating system is so
elegant and finally control is passed back to the exact point in
ZEØ where we the disk full message first occurred and where
RESOLVE GOTO ZCPR³ registers and ZEX labels team up to make us
Å feel incredibly grateful for this work of art called ZCPR3.
Before closing I’d like to mention that in the last few months I
have been experimenting further in the vein of last column’s
topic writing more and more programs to store various dates in
shell variable files! As a result I have come up with something
I believe will be very handy for users of the PC-Pursuit network.
Until now monthly use on PCP has been unlimited! Beginning on
May ± however that will all change! There will then be a monthly
limit of 3° hours after which any use will be charged on a
per-time basis.
Those who are interested in this script or for that matter
anything else about which I write in my columns may write me
care of TCJ! I’d also be glad to send a copy of the entire
BACKUP.ZEØ script either the generic version or my personal copy
configured especially to take advantage of the extended graphic
and video capabilities of the Qume 102a terminal.
Ú you next time…
———————–
LISTING OF BACKUP.ZEØ ERROR ROUTINE:
goto end » if no error
;=err
zif
if er • » CTL-C entered
goto errseven
fi
^[ZEX has detected that the BACKUP disk is full.^]
sak /p² » leave message on screen for ² seconds
push
backupº » log to backup directory
dir
/inputera » run ‚ERASE§ alias
^[^|^|Loading NSWEEP might help, so you can view your files…^|^]
ns » NSWEEP
/input
/inputret
Å push !
rs goto $$r± » return to where we left off
;=errseven
^[^|Abort request detected, ZEX script terminating…^|^]
zif
;=end
Das ist der mysteriöse Tect mal „übersetzt“ … interessant ist eigentlich nur die Erwähnung der Webseite in einem so alten Dokument. Die anderen Dokumente in dem Ordner erscheinen „normal“ … sind aber alle erst im Januar „angelegt“
Pizza gefällig oder darf es doch lieber ein Blumenstrauß sein? In den letzten Tagen scheinen bei uns in Deutschland einige seltsame Dinge vorzugehen. Einige berichten davon, mit einem Blumenstrauß überrascht worden zu sein. Andere schreiben darü…
Ich bin’s noch einmal. Da ich weder in irgendeinem Krimi-Blog oder ähnlichem aktiv bin, vermute ich, daß jemand anfängt die Dinger so zu verteilen. Einfach um Leute zu verwirren. Hat demzufolge bstimmt nichts mit dem von Euch zu tun. Bin übrigens aus Berlin.
Viel Erfolg beim Lösen.
[…] dazu gibt es auch → hier Original gibt es unter → push11.com Außerdem: In dem → Film “Pass auf mich auf” ist sehr deutlich eine andere Aufzugstastatur zu sehen (dort gibt es mehr Knöpfe) als auf der […]
Habe gestern ebenfalls eine Nachricht, in Form einer Einladungskarte erhalten und haben mittlerweile keine Ahnung mehr, wie das ganze einzuschätzen ist.
Die Karte habe ich übrigens mal eingescannt. Einsehbar unter:
Gewisse Ähnlichkeiten der Adresssaten scheint es ja auch zu geben. Und „System“ von Olsberg habe ich vor kurzem auch besprochen und lanciert, glaube aber kaum, dass ein Verlag oder Autor solche Maßnahmen ergreift um einen Titel zu bewerben. Vor allem, wenn dieser schon sehr positiv besprochen wurde…
[…] herrje, Schnitzeljagden überall. Nicht genug, dass wir seit gut zwei Wochen einen rätselhaftem → Horatio suchen, nein, jetzt ruft auch noch Tobias Gohlis, Jurysprecher der KrimiWelt-Bestenliste, in seinem […]
[…] → ARG (→ Alternate Reality Game) steht an. Manch einer erinnert sich vielleicht noch an push11 und den geheimnisvollen Horatio. Heute in meiner Post: Ein weißes Päckchen, angeblich abgesendet aus Portugal und per Luftpost […]
Kommentare
Hallo Ludger, und Du weißt nicht woher das kommt? Ich finde es sieht aus wie ein Trailer zu Olsbergs „Das System“ 🙂
Liebe Grüße….
Ich habs auch bekommen. Dass du als Krimiblogger ebenfalls Adressat warst, festigt meine erste Idee, um was es sich dabei handeln könnte!
Hallo dolcevita,
ja, da mag es Ähnlichkeiten geben, dennoch ist das alles sehr merkwürdig. Der Film ist mit einem Blumenstrauß hier angekommen und wirbt offensichtlich für die Seite push11.com – was auch immer das sein soll.
Das einzige, was ich rausbekommen habe ist, dass sie bei godaddy.com registriert ist (so wie ungefähr 3,5 Millionen andere Seiten) bzw. von deren Unterfirma domainsbyproxy, die dafür da sind, Domainnamen anonymisiert zu verwalten. Du kannst also nicht mit einer Whois-Abfrage erfahren, wer der Domain-Inhaber von push11.com ist. Das stimmt mich schon mal kritisch und ich glaube auch nicht, dass für ein Buch so ein Aufwand betrieben würde.
Ich frage mich, warum ich so ein Ding bekommen habe und was dieser Unsinn soll. Sollte sich tatsächlich um eine virale Kampagne – für was auch immer – handeln, müssten doch auch eigentlich mehr Leute so ein Ding bekommen. Sonst funktioniert das nicht. Ich bin mal gespannt, ob es noch mehr Leute gibt, die diesen Film erhalten haben…
LG
Ludger
Hallo EmmJay,
hast Du auch einen Blumenstrauß + USB-Stick bekommen? Und verräst Du Deine Idee?
LG
Ludger
So ist es. 🙂 Meine Idee dazu
Könnte gut sein.
Hallo Leute,
ich habe sowas gestern Abend um 21 Uhr auch bekommen: einen Blumenstrauß mit einem USB- Stick drin (1 GB, darauf steht mit Edding „06/11“), keine Karte, kein Absender.
Auf dem Stick ist das Video drauf, „Pass_auf_mich_auf“ als Dateiname, in zwei verschiedenen Versionen (wmv und w4v).
Wohne in Berlin.
Wenn ich es euch richtig verstanden habe, wohnt nur einer von euch in Berlin und nur derjenige hat das Ding bekommen. Stimmt das?
Ein Blogeintrag in meinem Blog (angelcurse.libri-amandi.de) folgt in Kürze.
Interessant. Auf meinem USB-Stick stand „07/11“.
Möglicherweise das Versanddatum, möglicherweise haben genau elf Blogger so einen Strauß bekommen, möglicherweise gibt es elf minimal verschiedene Videos?
Aber ihr seid euch sicher, dass das nichts Gefährliches ist oder so?
Ziemlich.
Hallo,
auf meinem Stick stand handschriftlich “10/11″.
Mal sehen, auf jeden Fall habe ich so wenigstens wieder interessante Blogs kennengelernt 😉
Liebe Grüße
Ludger
Das schließt schonmal das Versanddatum aus. 🙂
Das denke ich auch. Sehr warscheinlich liegst Du richtig mit Deiner Vermutung, wobei ich bei allen bisherigen Blogs rein thematisch keinen Zusammenhang entdecken kann. Vielleicht passiert tatsächlich erst am 11.11. etwas auf der entsprechenden Seite. Hoffentlich kein übler Karnevalsscherz 😉
Was mich erstaunt: Unsere Beiträge werden bei Google schnell indexiert und sind mit dem Namen der Domain als Suchbegriff alle abrufbar. Ist Google wirklich so schnell?
Ab in den Kaninchenbau!…
Ich hab vorsichtig optimistisch mal den Tag vom letzten Beitrag umgeändert, von Kryptik auf Alternate Reality Games. Mittlerweile halte ich es für ziemlich wahrscheinlich, dass uns (Angelcurse, Ludger, Dominic) da jemand in ein Rabbit Hole schubsen w…
Auf meinem steht 11/11, woraus ich erst schloß, dass die Seite am 11.11. fertig online geht.
Wenn die Zahlen unterschiedlich sind, kann es auch eher sein, dass 11 USB-Sticks im Umlauf sind.
Ich denke immernoch, dass es einfach ein Viral ist. 11 USB-Sticks und Blumensträuße über Fleurop kosten schließlich Geld, wobei ich die Idee eines Spiels/Puzzles ohne Gewinnerzielungsabsicht zur Abwechslung ja mal ganz interessant und erfrischend fänd.
Das ist mir (vorallem als Webdeveloper) auch aufgefallen. Nur 2 Stunden nach meinem Posting war es in den Suchergebnissen zu finden.
Früher kam unsere Seite auch schon gut bei Google an, da dauerte es rund 24 Stunden.
Kann sein, dass das eine Verbesserung im Rahmen des letzten Updates vom Oktober ist. Würde ich mal denken.
oh, oh, das hört sich ja gar nicht gut an! Sehr mysteriös und unheimlich..
Also ich könnte im Adressatenkreis sein, weil ich das Prinzip des Alternate Reality Games mehrfach in meinem Blog erwähnt habe. Du als Krimiblog-Betreiber hast offenbar ein Faible für Krimis und Rätsel. Angelcurse und Dominic kommen beide aus Berlin, das könnte auch etwas sein. Mal abwarten, ob sich noch ein paar Blogger zu uns gesellen.
Ich finde ja Deine Verbindung zu „Alice im Wunderland“ ziemlich gut, passt auch zum Film. Worüber ich mir natürlich auch noch Gedanken mache ist die 11. 9/11 (gibt es ein USB-Stick mit dieser Nummer?) kommt einen in den Sinn und auch der 11. März 2004 (Anschläge in Madrid, 3/11)…
Du liebe Güte, ich werde hier ja noch zum Verschwörungstheoretiker, dass will ich ja nun gar nicht.
Also mir macht das Ganze, ehrlich gesagt, ziemlich Angst.
Ich kann schon an nichts anderes mehr denken und möchte da auch in nichts hineingezogen werden oder irgendwo mitmachen…
Aber die Hoffnung auf „Entwarnung“ treibt mich dazu, mich auf dem Laufenden zum Thema zu halten.
Hallo …
ziemlich sicher ein ARG-Rabbit Hole, also Einstieg in ein Alternate Reality Game.
Als einer der zahlreichen Mitspieler beim letzten dt. ARG und bekennender Fan dieser Spielform kann ich nur hoffen, daß ihr uns auf dem laufendem haltet!
Hi,
habt ihr die Videos schon mal verglichen? Wenn es ein Puzzle ist, könnte es ja auch entsprechende Unterschiede geben. Zumal man sich ja die Mühe gemacht hat, die Sticks unterschiedlich zu beschriften. Zudem schreit das Video ja geradezu nach einer Standbildanalyse, um versteckte Hinweise zu entcecken. Steht in den Dateieigenschaften irgendwas sinnvolles drin?
Hi,
soweit ich das sehen kann, gibt es keinen Unterschied zu dem Video, der im Netz steht. Allerdings ist das so schnell geschnitten, dass ich vielleicht den einen oder anderen Hinweis übersehen haben könnte.
Die Dateieigenschaften sind harmlos, es sind zwei gleiche Filme, einer als mp4, einer als wmv, beide vom 07.11.2007.
Ciao
Ludger
Artº I’ve used WordStar convention of surrounding words to be
bolded with CTL-B! Hope you can do this.
At the end of the article is a listing of an excerpt of the
BACKUP.ZEØ script I describe herein! It should be printed as
a „Figure n¢ next to the article.
This baby’s a bit long» hope you can fit it¡ Thanks.
Best to you and yours.
Rick
Column for TCÊ #38 May/June 1989
ZEØ AND HARD DISK BACKUPS
by Rick Charnes
I’d like to start off this issue with an appeal to all users of
ZCPR³ without a modem to give serious consideration to getting
involved in the BBS world! The nationwide network of Z-Nodes we
have established is perhaps the best way we have to educate
ourselves in the many aspects of our extraordinary operating
system! In the long intervals between TCÊ issues this network
remains our foremost means of communicating with each other! Its
sense of immediate action and response with many individuals
helping each other and sharing programs that we have written is
perhaps the single most important source of the energy behind the
Ú world! All the ZCPR³ columnists you read here in TCÊ – Jay
Sage Bridger Mitchell Bruce Morgen Cam Cotrill Hal Bower and
myself – are all active participants in this network! I cannot
emphasize how much this kind of sharing and give-and-take can add
to your enjoyment of computing! And it can all be done easily
with a minimum of phone charges via PC-Pursuit.
The PC Pursuit network allows those with a modem living in the
metropolitan areas of the U.S! to access any bulletin board
system nationwide (again, in the metropolitan areas of the
country© during weekends and non-business hours for a flat
monthly fee of $30! This makes it easy and inexpensive to call,
among many others two of the most popular Z-Nodes the official
TCÊ BBS at (312© 649-173° and Jay Sage’s Newton Centre Z-Node at
(617© 965-7259! For more information about PC-Pursuit call
Telenet at (800© 336-0437.
There has been much discussion on the Z-Nodes in recent months
on the subject of ZEX the ZCPR³ world’s preeminent ‚batch
processor‘! It is partly occasioned by Joe Wright’s release in
autumn of 198¸ of ZEØ version 4.03 partly from continued
enthusiasm over Jay Sage’s release of NZEX-D quite some time ago
and his incorporation of ZEØ into ZFILER’s magnificent group
macro facility and partly due to the fact that it is simply in
general an extraordinary program allowing for tremendous
opportunities for automation where nothing (not even King ARUNZ!)
else will do! If I am not mistaken Bridger Mitchell’s column
Å this issue is devoted to a reconceptualization of what ZEØ should
be and as a fervent admirer of the program (I use it wherever I
can!) I am very much looking forward to further developments of
this program by Bridger and his colleagues.
In that spirit then, and as mentioned last time I would like to
attempt to give readers a flavor of what ZEØ can do in the
context of discussing one particular use to which I put it the
BACKUP.ZEØ script I use for backing up my hard disk directories.
If others have feared ZEØ because of its reputation for
eccentricity and exotic nature it is perhaps for this very
reason that I have embraced it! ZEØ might be compared to the
CP/M SUBMIT the way one might compare the experience of listening
to a Top 4° radio station to attending a live performance of the
181² Overture given by the San Francisco Symphony! Hopefully
between my and Bridger’s column you will be inspired to archive
good old SUBMIT onto a sturdy but yellowing floppy and move on up
to the ethereal realms of ZEX.
This column is intended generally for those with some prior
experience with ZEX! I am not here going to explore all its
nooks crannies and meadows filled as they are with fragrant and
variegated bloom though that would certainly be a wonderful and
worthwhile venture! It will not be a primer on the basics of its
use! I will of necessity touch on some of its features but my
purpose here is mostly to explore a few particular examples of
how in my BACKUP.ZEØ script I have interfaced ZEØ with both the
ZCPR³ shell variable subsystem and the ZCPR³ registers the
combination of all three of which is guaranteed to be a
pick-me-up to the most tired of „there’s-nothing-left-to-
explore-in-CP/M¢ ne’er-do-well’s! In studying some of these
fairly specific ZCPR³ and ZEØ programmatic techniques I am taking
a gamble and hoping that the reader can draw some general lessons.
Like a goodly number of hard disk owners I have spent many
(generally happy© hours trying to find the absolutely perfect
program to perform my regular periodic backup of those hundreds
of precious files I have lovingly created over the years! Sadly
I have found no such program! I have yet to find any scheme that
addresses what I believe to be the central dilemma of a hard disk
backup programº how to ensure during one’s periodic backups on
hard disk directories requiring more than one backup floppy that
with each periodic backup any given file is copied onto the same
backup floppy.
When backup programs that have no provision for this are run for
the first time they simply fill up in completely random order,
a given number of floppies with the files from the hard disk.
Each successive run copies the files in the same or another
random order.
Suppose however with this first run of the backup program my
ALIAS.CMD happens to get copied onto the third floppy in a set of
five from my root directory! Then next weekend when I run the
backup program again assuming I’ve modified ALIAS.CMD and the
Å archive bit is therefore turned off it will again be copied by
the program! But there’s nothing to guarantee it will this time
be copied to the same floppy¡ It may end up on the first or
second or fifth disk! After several runs of the backup program
I may end up with several different copies of ALIAS.CMD on
different backup floppies modified at different times on the
hard disk¡ I have yet to see a satisfactory solution to this
problem in terms of a single program.
In the true spirit of „Z,¢ therefore or what Frank Gaude§ used
to call „the tool approach,¢ I have written a ZEØ file to do the
job! I have decided the best solution lies in copying the files
onto the floppies in alphabetical order! I have settled on six
for the number of backup floppies required by each of my major
hard disk directories! I backup onto floppy one all files
beginning with the letters A through D floppy two gets the files
beginning with E through J and so on through the alphabet,
reserving floppy siø for the „Z¢ files of which for some
mysterious reason there always seem to be an inordinate number on
virtually all my directories…
I do this with 2 separate invocations of PPIP (renamed to COPY),
one for each letter of the alphabet used with its ‚/ae§ option
to indicate „copy only files which have been modified files since
last backup and write over the destination file without
querying,¢ as follows:
^
copy a*.ª bakº /ae
copy b*.ª bakº /ae
copy c*.ª bakº /ae
copy d*.* bakº /ae
^
^?
^
copy e*.ª bakº /ae
copy f*.ª bakº /ae
.
.
etc.
Any text between ^¼ and ^¾ is echoed directly to the screen! The
^? command stops and waits for the user to hit any key at which
point the script continues.
You needn’t worry about ZEØ files being too large! Once they’re
loaded no further slowdown in your system is noticed! In any
case while they’re being loaded you don’t have time to get
impatient as you’re too busy watching the beautiful video screen
display you’ve created!
This alphabetical ordering scheme ensures that every file is
always backed up on top of its previously backed-up copy/version.
This week’s ALIAS.CMD is always copied over last week’s
ALIAS.CMD and today’s TCJ-COL.² will always and automatically be
copied onto the same disk as yesterday’s copy.
Å I have over the years added to my BACKUP.ZEØ the most beautiful
graphics and boø drawings of which my Qume 10² is capable and
combined with extensive use of its video attributes such as
reverse video blink underline and cursor off I have created
what I feel to be the equal in terms not only of functionality
and power but of beautiful screen display of any MS-DOS backup
program! Of course there’s one additional factor that in my eyes
makes it even betterº I wrote it myself!
I should mention as an aside that a very large number of popular
and common CP/M terminals are capable of a great deal more
graphics boxes windows and other fancy video displays than we
normally use or even suspect! These features often remain
unknown and unutilized simply because they were never
standardized among the great variety of CP/M-style terminals.
There is nothing however – I repeatº nothing – to keep an
individual user from creating for himself quite and surprisingly
beautiful if not transportable screen displays! ZEØ scripts,
with their „^¢ command along with ZCPR3’s ECHO
command give the user a great opportunity to do this and many
of my ZEØ files and ARUNÚ aliases are real beauties! It is
especially unfortunate that these fancy features go unused in our
CP/M-compatible world» the lack of „graphics¢ is always being
touted as one of the reasons for people’s decision to leave their
old CP/M boø behind.
Years ago Dennis Wright wrote a set of assembly language
routines GRWLIÂ and GRXLIB that produce extremely sophisticated
and beautiful graphics windows and menus the windows capable of
overlaying each other appearing and disappearing with text
inside etc! Similarly we already have one set of graphics
windowing libraries for Turbo Modula-2 and Mr! Edward Jackson of
California will soon be releasing another! I have used these
Modula-² routines to write COM files on my little ol§ Morrow that
rival displays I’ve seen on early MacIntoshes and video arcades.
I would urge users to take with a grain of salt claims for any
alleged „lack of graphics¢ in CP/M and to incorporate these
library routines into their programming! The beautiful displays
really make a difference and greatly add to a finished product.
In any case the alphabetical ordering scheme I use in my
BACKUP.ZEX along with the beautiful graphics I have coaxed out
of my terminal with it has not only proven eminently satisfying
but has had the unintended (but very welcomed© side effects of
giving me an opportunity to spend many happy hours acquainting
myself with my terminal’s video commands at the same time as it
sharpens up my ZEØ skills…
In any case until about siø months ago I had felt my BACKUP.ZEX
to be complete as described above! The alphabetical ordering
scheme worked perfectly and the artistic video displays and
friendly messages I added to it made backing up a pleasure,
certainly an important consideration in a task normally
considered to be the quintessential drudge work. After adding
the ability as described in last issue’s column to display to
Å the screen the date and time of the last backup (about which I
felt and still feel very proud!© I could think of neither bell
nor whistle to add to it.
The only thing that occasionally bothered me is when my backup
disk would fill up! This situation is most annoying! PPIP would
of course report the error but considering I’m inside a ZEØ file
there’s not much it can do about it! If the disk would fill up,
for instance during the backing up of the „B¢ files I would
then have to suffer through PPIP’s attempts to copy all the
unarchived „C“ and „D¢ files with each of these attempts
virtually guaranteed to fail! Although PPIP is smart enough so
that if it senses the destination disk is full during one of the
copies in a PPIP B*.ª BACKUPº command it will abort that
particular wildcard operation there’s no way it can anticipate
the NEXT commands being here of course ‚PPIP C*.ª BACKUP:§ and
‚PPIP D*.ª BACKUP:.‘ It would then of course blithely attempt to
execute these even though the task was impossible.
How was it to know this? I had to patiently watch sometimes 5 6
and • PPIP „disk full¢ messages during copies and not being able
to do anything about it! If I would CTL-C during the particular
PPIP operation that sensed the disk full it would report a „User
abort,¢ terminate that particular PPIP command – and simply move
on to the next.
Well what do you expect? It’s just a computer!
I had only one way out of it at the time! Each time my backup
disk would fill up I would despairingly watch it happen poor
PPIP torturing itself with trying and when the script paused for
me to change disks I’d CTL-C out of it and abort the entire ZEX
script! I’d then manually erase on the backup floppy whatever
files I determined unnecessary and obsolete and restart the
script from the beginning.
Though it being the late 80’s and I knowing this isn’t what
computers are supposed to do I couldn’t really think of any way
out of the situation! I mean after all this is on an obsolete
Morrow computer running an esoteric and little-used enhancement
of an antiquated operating system! What after all could I
expect?
Operating under the principle, however in my life generally as
well as in my computer programming specifically that it ain’t
what you got but what you do with it the Great Spirit of
Computers seems to have paid me one of its irregular visits! It
one day hit meº if PPIP is smart enough to know when a
destination disk full can’t I get the operating system to know?
This is ZCPR3 after all.
I keep hammering home to all who will listen that one of the
unique aspects of ZCPR³ is the way it provides methods for all
its separate components to leave messages for each other! This
is the raison d’etre of the ZCPR³ message buffer generally and
Å the error flag particularly the latter of which is here the
perfect messenger for our job.
I decided to modify PPIP otherwise a ZCPR3 tool in only the most
superficial manner to set the ZCPR³ error flag under certain
conditions! I added code so that it now sets said flag to 7
(this figure arbitrarily chosen© if it senses a destination disk
full! This way we provide a hook through the „IF ER 7¢ command,
for ZCPR3 and not just PPIP to sense the disk full condition —
and then provide a way out.
While I was fiddling around with PPIP’s internals I decided to
also set the error flag if the user enters a CTL-C during a copy
operation! Occasionally I would see a backup copy take place
that for a number of different reasons I didn’t want to happen,
and I had always wanted some way to allow ZEX and not PPIP alone
to abort if this happened! Now I had it.
Finally PPIP will now set the error flag to ‚9§ if the
destination directory has no remaining entries! PPIP1¹ with
these above modifications is available on all Z-Nodes.
All that was necessary in the ZEØ script was to add the commands
IF ERROR;GOTO ERR;FI» after each invocation of PPIP as follows:
copy a*.ª bakº /ae
if er
goto err
fi
copy b*.ª bakº /ae
if er
goto err
fi
.
.
.
After I had modified PPIP to set the ZCPR³ error flag I then
created a routine at the bottom of the script and began it with
the label ‚;ERR§ (ZEØ labels begin with a semicolon)! At this
label there are one of two error messages saying either that the
backup disk was full (error flag set to 7© or that a user abort
was entered (error flag=8)! (I didn’t bother adding a „directory
full¢ error message as that never happens on my floppies though
that could easily be done.© The user is thus given this message
both by the program (PPIP© and the operating system (ZEØ acting
here as a proto-operating system.© The script would then
properly abort as I wanted! No more helplessly watching
unnecessary and impossible copies.
A listing of the error routine of BACKUP.ZEØ is printed as Figure
___.
As it is fairly long I am not going to describe here the entire
script! I want only to focus on the parts of it that relate to
the sparks that went off in my mind consequent to the above
modification.
Å The code I added above (‚if err;goto err…© simply prints an
error message and lets ZEØ abort to the command processor.
Having ZEØ abort was the only way I could conceive of dealing
with the situation! When the backup disk filled up I needed to
do some work on my own outside of ZEX to erase unneeded files
on the backup floppy as well as other things! I would never be
able to anticipate which tasks I would need to perform! Aborting
ZEØ and returning to ZCPR³ provided an opportunity to do whatever
I needed to! When I was ready to resume I would simply rerun the
ZEØ script.
But the Muse of Computer Automation wouldn’t let go of me! Soon
I started thinkingº here I am using this incredibly powerful
tool suited to the automation of many tasks! Why do I need to
exit from it? Can’t I configure my ZEØ script so that it will
allow me to run a few commands from the ZCPR³ command line on my
own and then continue with the script? I had never before used
ZEØ precisely in this manner to allow for user input from the
ZCPR³ command line! If I could however it would let me do the
above erasure of files or whatever is necessary so that the
backup floppy will have enough room and then return to the
script.
This was an interesting challenge! ZEØ has an „allow user input“
directive (^“) which I naively at first thought might do the
trick! I quickly realized however that this directive is
primarily to allow user input inside an application program not
at the command line! No matter how I tried no matter which
internal ZEØ command I experimented with I couldn’t set it up so
that ZEØ would stop temporarily while at the command line query
me to enter a command and then resume the script.
Where to turn?
The ZCPR³ utility CMD.COM popped into my head! After all this
is its functionº to query for a command and then execute it! As
you will recall from my first column it is ideal for use inside
a SHSET command line! However I quickly discovered it is not
meant for use within a ZEØ script! ZEØ will not stop at CMD and
properly wait for a user command but rather will continue to send
commands from the ZEØ command stream! I am sure the reasons for
this are very simple and logical though they are at the present
unknown to me.
Enter ARUNZ! In ZCPR3 when in doubt look to ARUNZ! ARUNZ’s
„query for user input¢ command was a definite candidate for the
job! I wondered if ZEØ would allow this feature to operate.
This is a greatly simplified explanation but generally you
insert the text you wish to display to the user between a $¢ and
a “ and then recall it later in the command line with $’l1! A
common use is:
$“Enter a commandº “
The user then enters his command or series of commands complete
Å with parameters if necessary and then the entire string that the
user entered is recalled wherever in the alias with the „$’l1“
command.
I tested an alias using this technique and it worked perfectly.
An invocation of an ARUNÚ „user input“ alias inside a ZEØ script
allows you to pause the script enter a command to be sent to
the command processor and then resume to the next commands in
the script! Used inside BACKUP.ZEØ this would allow me to enter
whatever commands necessary to erase files from the backup disk,
and then return.
Now that I had my tools my plan of action began to unfold as
follows:
(1) Tell the user his backup disk is full.
(2© Store the name of the current directory in memory.
(3© Log on to the BACKUPº directory.
(4© Provide a directory listing to allow the user to see what
files he has there.
(5© Provide a means to erase unneeded files using whatever
and however many commands the user sees fitº ERASE.COM,
NSWEEP.COM ZFILER.COM etc.
(6© Return to the original directory.
(7© Resume the ZEØ script where left off before the disk full
error occurred.
In step five I realized that not only did I want to give myself
freedom to choose whatever tools for erasing that I wished but
that I also wanted ZEØ to load up one or two specified utilities
that would facilitate that task for me.
Was this all possible? Item (7© seemed especially challenging.
ZEØ didn’t keep any „pointers¢ to where it was in the script.
This entire scenario certainly seemed to me much more elegant
than having the ZEØ script simply abort but was it programmable?
First I began thinking about what commands I would like to run
to facilitate the task of erasing files! Initially I thought it
would be nice to run ZFILER which is generally the perfect tool
for mass file deletions! In case however you haven’t yet run
into this situation (many of us discovered it with WS4) ZCPR3
shells cannot reliably be run from inside a multiple command line
or ZEØ script! In any case I decided an approach utilizing (1)
DIR/ERASE and (2© NSWEEP would be better! DIR and NSWEEP are
better than ZFILER anyway in giving the user a better grasp of
the relationship of the sizes of individual files to the total
space remaining on the disk! ZFILER only allows display of
individual file sizes with a manual „F¢ command.
I should point out here that Jay Sage’s recent opinion that
programs such as ZFILER and the like might perhaps be better made
ZCPR² rather than ZCPR³ shells is right on point here» we would
then be able to use it in our script if we wanted.
Å Temporarily putting aside the details of working out the
challenge posed by step (7) I went to work! At the error
routine label in BACKUP.ZEØ I used the ^<text^¾ command (with
fancy graphics of course© to display a message indicating that
my backup disk is full! The problem of storing (and later
returning to© the current directory is taken care of by Paul
Pomerleau’s little-known PUSH11.COM available on all Z-Nodes.
Though ARUNÚ has many symbols available for this purpose we are
not inside ARUNÚ and therefore need a standalone program.
Entered with no parameter PUSH stores the current DIR:! Later in
the ZEØ script when we are finished with our work on the BACKUP:
directory the command ‚PUSH !§ restores it.
I next log on to the BACKUPº disk and then do a DIR command so I
will have a listing of files in front of me.
Then going to my ALIAS.CMD I wrote an alias called INPUTERA which
will serve as a preface for ERASE.COM:
INPUTERA $“Enter files to erase as a filelistº „if ~nu $’l1» <<
erase $’l1;sp;else;echo nothing entered.;fi
As discussed previously there is no reason we cannot run an ARUNZ
alias from within a ZEØ script! Though it occasionally presents
far-ranging problems concerning the ZEØ INPUT flag that need not
concern us here.
This will display:
Enter files to erase as a filelist:
on the screen and pause! If I now see from the DIR listing that
files CHAPTER.± and PROG.Z8° on the destination floppy are both
20k in length obsolete and unneeded and obviously taking up
precious space on the disk I could enter:
CHAPTER.1,PROG.Z80
The ARUNÚ script which now has control would then expand to:
ERASE CHAPTER.1,PROG.Z80
and my lovely but no longer wanted files would be unceremoniously
deleted! (The question of how to ensure that one’s backup
floppies are continually updated – i.e! contain only files
existing on the hard disk – is another story! I sometimes use
Carson Wilson’s CHECK2¸ program for this which compares
directories and shows which files are missing on one or the
other and sometimes a lovely ZFILER group macro script that
Carson Wilson conceptualized.)
If nothing is entered at this prompt („if nu $’l1’© then
ERASE.COM is bypassed and the message ‚NOTHING ENTERED§ appears
on the screen.
Å One proviso is in order here however concerning the use of ARUNZ
within a ZEØ script! In writing BACKUP.ZEØ I had the most
interesting and unusual experience — from which as usually
happens I learned immensely! At the point in the script where
the aliases execute my computer locked up! Try as I might I
could not figure out the reason for this! It was a particularly
edifying experience actually because through it I learned that
the normal technique I use to trace down bugs, the one that is
considered the standard for programmers the world over only
works 99¥ of the time! That technique is of course the isolate-
the-problem-by-stripping-away-extraneous-factors-one-by-one
method! I have used this technique countless times and it has
normally worked perfectly! After stripping away as many factors
as possible so the theory goes you then add them back one by
one and at some point – VOILA¡ – you find it! This was one
time it didn’t.
I isolated extraneous factors in this case by making an extract
of the relevant part of the ZEØ script and running that as a
mini-script! This time the script worked seeming to confirm the
theory.
To make a long story short however I discovered after many
weeks that the lockup was caused by a TPA problem! Unbeknownst
to me – and perhaps to its author – type ³ ARUNÚ running at
8000h will lock up when there is less than 39k TPA available to
it on the system! Many users may think it completely impossible
to ever drop down that low but let me warn youº when you do work
with ZEØ scripts you may often be surprised at how low the
mercury can drop on your TPA thermometer! ZEX.COM itself uses
about 3.5k of TPA! On top of this you have to add the memory
occupied by the script! BACKUP.ZEØ is a bit over 8k in length.
I start out with 50k TPA on my hard disk system» within this
script I’m down to about 38.5.
The solution? Easyº it was precisely for these situations that
the type ´ concept was invented! Make sure you’re running ZCPR34
and use the type ´ ARUNZ which has code to determine wherever is
the most efficient place in memory for it to load and run! 8000h
is obviously too high with only 38.5k TPA so it simply relocates
itself someplace lower in memory and runs perfectly.
Now we can load up NSWEEP! Control is returned to ZEX where it sees
an invocation of this honored utility! I should note in this regard
that a friend and I have both found NSWP20• to mysteriously
malfunction on drives Eº and F: so I use NSWP20µ here! Since we
have the ‚ZEØ input§ flag turned to OFF we can enter whatever
commands we want while inside NSWEEP and ZEØ is temporarily kept
at bay! This allows us to see file sizes get a feel for what’s
expendable and what’s not view files with an eye towards
determining what can be erased etc.
Now we come to the above-mentioned ARUNÚ alias I wrote to give
myself the ability to do that for which ZEØ itself has no direct
provisionº to pause allow the user to enter a command from the
Å ZCPR³ command line and then return to the ZEØ script.
Our next ZEØ command is then the ARUNÚ alias INPUT: which might be
said to be a ZEX-compatible CMD.COM! It looks as follows:
INPUT $“Enter any command (‚EXIT§ to exit <<
ZEØ completely)º „$’l1;inputret $1
INPUT simply displays its message on the screen and whatever
commands the user enters are stored into the ARUNÚ symbol $’l1
and then executed! I also want to make an allowance for a case
in which something has definitely gone awry and the user
absolutely needs to exit from the ZEØ script! In that case the
following ARUNÚ alias EXIT does the job:
EXIT poke $+m000¸ 0
Eight bytes above the beginning of the message buffer is the ‚ZEX
control byte.§ If that is poked to zero (as it normally is in
non-ZEØ operation© it shuts off the ZEØ preprocessor completely
and we are returned to ZCPR3! Incidentally this effect is NOT
realized by simply hitting the carriage return at the INPUT
prompt which would simply continue the ARUNÚ alias and ZEX
command sequence.
Although I could have put this ‚EXIT§ sequence directly into the
original alias I preferred to have it accessible from anywhere
as an alias in its own right.
If ‚exit§ is not entered then we are ready to give the user his
last chance to enter any necessary commands to definitely ensure
that all unneeded files are erased from the backup disk and that
there is sufficient room to continue the backup procedure before
returning to ZEX! We therefore have INPUT chain to a second
alias which I have called INPUTRET which will indicate to the
user that this is his last chance and then return to ZEX.
I should mention that a few days later after I had added all the
features I wanted to this ZEØ script INPUTRET looked a bit
different but at the time it was simply:
INPUTRET $¢ Enter your final command (‚or EXIT§ to exit ZEØ <<
completely)º „$’l1;if eñ $’l± exit;echo returning to <<
zcpr3…;push !;else;sak /p2;fi
— exactly like INPUT above except rather chaining to a second
alias if the word ‚EXIT§ was not entered it would pause ² seconds
and return to ZEX! If ‚EXIT§ was entered the EXIT alias is
temporarily nested in then ‚PUSH !§ restores the current
directory and we return to ZCPR3.
We are now faced with the situation as mentioned before of
wanting to return to the body of our ZEØ script! So far so good;
nothing special is required to do that! We certainly want to
return to the part of ZEØ outside the „error¢ routines from which
Å we had just come the part that does the actual copying.
Probably or so my original thinking went we should use ZEX’s ^:
directive here which reruns the command script from the
beginning.
Wouldn’t it be wonderful though if we could do the seemingly
impossibleº to return precisely to where we were before the error
was issued (backup floppy full or whatever)! But how could this
be done? Unfortunately for all its power one thing ZEØ doesn’t
have is an „end subroutine¢ or „end procedure¢ command like
actual languages do by which after a routine or procedure is
jumped to and completed control is then returned to where it was
just past the jump (goto© command! Sure we can use GOTO.COM,
but ZEØ has no internal „pointer¢ by which it can keep track of
where it was just previous to the GOTO to allow it to return.
Once a GOTO GOes TO someplace there’s no coming back.
Or is there?
If there’s one thing I would hope ZCPR³ users get out of my work
it is the power of the registers and other similar functions to
pass messages back and forth to utilities.
I thought about it for a while – „registers¢ must have been
going off in my head – and I knew how it could be done.
I went back to the body of the script and added two lines at each
invocation of PPIP! I added before the beginning of each a
label whose name was the number that corresponded to the letter
of the alphabet! Where I copy the „A¢ files became label „1“,
the „B¢ file copy sequence became label „2“ and so on up to
label „26¢ for „Z“! Then I added an invocation of REG to set
ZCPR³ register 1 (chosen arbitrarily© to this same value! The
beginning of the script now looked as follows:
^
;=1
copy a*.ª bakº /ae
if er
reg s± 1
goto err
fi
;=2
copy b*.ª bakº /ae
if er
reg s± 2
goto err
fi
;=3
copy c*.ª bakº /ae
if er
reg s± 3
goto err
fi
;=4
Å copy d*.ª bakº /ae
if er
reg s± 4
goto err
fi
^
^?
^
;=5
copy e*.ª bakº /ae
if er
reg s± 5
goto err
fi
.
.
.
etc….
Get it? Who cares if ZEØ has no internal pointer? Our operating
system is so superâ it provides enough services externally¡ We
use register ± to be our external pointer for ZEX.
What we’ve done is use the REG command to set register ± to a
different value depending on where in the alphabet we are in our
copying when the disk full message was given! If PPIP detects a
disk full error during copy of the files beginning with the
letter „A“ PPIP itself sets the ZCPR³ error flag and then we set
register ± is set to „1“! If the disk full is detected during
the copy of the „B¢ files register ± is set to „2“ and so on up
to „26¢ for the „Z¢ files! These values are arbitrary» assigning
the numbers ± to 26 to the letters A to Ú simply makes the most
sense! In other words if an error is detected register ± will
be set to a value from ± to 2 depending on which files we have
just been copying.
You may wonder how this information could possibly be useful to
us! How can setting a register – a feature of the command
processor – could be useful to ZEØ which (unlike ARUNZ© has no
internal symbol to represent the contents of the registers! Jay
Sage has been meaning (when he pares his workday down to 1¸ from
its current 2° hours© to add the entire ARUNÚ symbol structure,
which includes a symbol for the values held in the registers to
ZEX! Until that sweet time comes however we must be inventive.
And a ZCPR³ programmer isn’t worth his salt if he ain’t
creative» the operating system sure gives us enough opportunities.
Enter (1© RESOLVE and (2© one of my favorite ruses ye olde
„numbers-as-a-character-string¢ routine delved into in some
detail in my last column.
Pay attention to the ZEX labels I’ve added which have the form
;=labelname that I have inserted before each COPY command! The
name of the label before copying files beginning with „A¢ is „1“;
the label jut preceding the copy of „B¢ files is named „2“ and
so on through Z! A ZEØ label name just as any filename or in
fact most any other name we use in computers may consist of any
Å alphanumeric characters and there is no reason we cannot use
digits instead of letters! It’s the same scheme we use with
setting the register! At the label named „3“ we copy files
beginning with the letter „C¢ and upon an error at this point set
register ± to 3! We will see shortly how handy this is.
After the INPUTRET alias has taken us back to our ZEØ script the
next command in BACKUP.ZEØ is:
RESOLVE GOTO $$R1
Remember that since we are in ZEØ a double dollar sign is how we
represent a single dollar sign» ZEØ strips out the first! So we
are left with ‚$r1‘! Of the many things that RESOLVE does one of
them is return the value of any of the ZCPR³ registers – and for
this we should be grateful or else this entire procedure could
not work! ‚$r1‘ therefore expands to „the value held in register
1.“
Now let’s go back to our script and simulate a real-life
situation! Suppose we are backing up our MEXº directory and we
are on backup disk number 4! While PPIP is copying the files
beginning with the letter „S¢ it runs into a full destination
disk! It sets the ZCPR³ error flag and then our ZEØ script sets
register ± to the value of 19! ZEØ then jumps to the error
routine at the bottom of the ZEØ script! We are told the disk is
full we get a directory and are asked which files we’d like to
erase! We erase a file or two here! NSWEEP loads and since we
are able to use its V)iew command we see a few more files that
are redundant though we’re not absolutely sure yet we have
enough space on the backup disk to confidently return to the ZEX
copying routines.
We next take advantage of the INPUT alias which allows us to run
any program of our choosing to run Carson Wilson’s FD which
gives us a better sense of which files on the disk are most
recent! We use this new information about datestamps to
determine that there is one very large and old file for which we
no longer have any use and therefore at the final INPUTRET
prompt erase it! We are then finally returned to ZEX! At this
point the next command ZEØ encounters is ‚RESOLVE GOTO $$R1‘.
Since register ± is set to 19 this command will expand (or
„resolve“© to „GOTO 19“ which means go to the ZEØ label named
„19“! Again there is no reason we cannot have a label named
„19“ even though label names are usually composed of letters and
not numbers! Our label „name¢ not so coincidentally happens to
be the numerical value held in ZCPR³ register 1 and this suits
RESOLVE just fine! And – what do you know – label 1¹ just
happens to be at the „COPY S*.ª BAKº /AE¢ command! So GOTO
returns us exactly to where we were in the ZEØ script before the
error occurred.
Neat huh? I had done what I’d set out to do.
Å Never one to give myself any rest however a day or so later the
thought came to me (a classic symptom of that dreaded disease
that programmers get „feature-itis“)º wouldn’t it be nice if we
could get a message flashing on the screen:
RETURNING TO THE „S¢ FILES…
just before the actual return? Sure I said» why not?
But how to do it? How where and what could possibly send to us
this „S,¢ and how would we store keep track of and later access
it? Could PPIP possibly send this letter to us somehow? If not
PPIP then what? I challenge anyone who doesn’t think in terms
of RESOLVE and shell variables to come up with a solution short
of writing a new program…
The idea is to create a *.VAR file that matches letters with
numbers! In other words we’re going to set up a situation in
which when RESOLVE finds the string ‚%19§ it will give us the
letter ‚S‘! Here’s what we do! We’re going to define some
variables into our SH.VAR file! This time I’m not going to
bother defining another *.VAR file as the current one.
We use SHDEFINE as „SHDEFINE SH.¢ Note that with SHDEFINE even if
another variable file is currently defined to the system we can
specify as a command line parameter the particular file to which
we would like to add or replace variables! Using SHDEFINE’s
E)dit command we add the following variables and definitions,
starting from where variable ‚1§ ½ definition ‚A§ and going all
the way to variable ’26§ ½ definition ‚Z‘.
VARIABLE
NAME DEFINITION
——- ———-
± „A“
² „B“
³ „C“
´ „D“
µ „E“
„F“
.
.
.
and so on until 2 and „Z“! Now we can add one more command to
our INPUTRET alias described above (RESOLVE.COM is always renamed
to RS.COM):
RS ECHO RETURNING TO WHERE WE WERE – AT THE %$RF0± FILES…
and the entire alias becomes:
INPUTRET $¢ Enter your final command (‚or EXIT§ to exit ZEØ <<
completely)º „$’l1;if eñ $’l± exit;echo returning to <<
zcpr3…;push !;else;rs echo returning to where we were <<
– at the %$rf0± files…;hold 2;fi
Å Don’t worry about the length of this alias even if with your
editor it exceeds 20° characters the number normally associated
with the limit of the command line buffer! Any text in the ‚user
input§ part of the alias is not placed in the command line buffer
and should therefore not be counted towards the 20° characters.
Can you understand this alias? It is similar to but slightly
different from the RESOLVE GOTO $$R± command we put in our ZEX
script! Here we are relying on ARUNZ’s and not RESOLVE’s
register-expansion facilities and the syntaø is slightly
different! Here in an ARUNÚ script in which we want to represent
„the contents of register 1¢ we must follow the „R¢ (stands for
Register of course© with an „option letter,¢ followed in turn by
the register number! Our „F¢ option means „floating decimal,“
whereas if the number is one digit long we want it represented
as one digit only and if two digits it should appear as exactly
two and similarly with three! In other words don’t give us any
leading zeroes only the raw number! When RESOLVE returns the
contents of a register it never puts leading zeroes» ARUNZ’s
option letters allow it or not.
By the way it should be noted that RESOLVE cannot expand both
the register value AND the ensuing and contingent string variable
(that the register value then becomes)! Therefore we cannot put
this command inside the ZEØ file» we must put it into ARUNÚ where
we can rely on ARUNZ’s register expansion symbol and leave the
variable expansion up to RESOLVE! Unlike in our first use of
RESOLVE where it expands the register contents here ARUNÚ does
so.
With our register ± still set to 1¹ ARUNÚ resolves the register
symbol ‚$rf01§ and our command then becomes:
RESOLVE ECHO RETURNING TO WHERE WE WERE – AT THE %1¹ FILES…
Now RESOLVE’s variable-expansion and not its register-
expansion facility comes into play! ARUNÚ has sent it the string
„%19.¢ Remember that when RESOLVE sees a ‚%§ it knows that a
named shell variable is to follow! It knows therefore to look in
the currently defined shell variable file defaulted to SH.VAR
unless we have defined it otherwise with SHFILE.COM (we haven’t),
and determine the definition that has been given to that
variable! That definition is then returned to us for our use.
So RESOLVE then looks into SH.VAR for a variable named „19“! And
what does it find? Of course – the letter ‚S‘.
Our command line is therefore expanded to
ECHO RETURNING TO WHERE WE WERE – AT THE „S¢ FILES
ECHO presents this lovely and informative message to us on the
screen we are tickled pink that our operating system is so
elegant and finally control is passed back to the exact point in
ZEØ where we the disk full message first occurred and where
RESOLVE GOTO ZCPR³ registers and ZEX labels team up to make us
Å feel incredibly grateful for this work of art called ZCPR3.
Before closing I’d like to mention that in the last few months I
have been experimenting further in the vein of last column’s
topic writing more and more programs to store various dates in
shell variable files! As a result I have come up with something
I believe will be very handy for users of the PC-Pursuit network.
Until now monthly use on PCP has been unlimited! Beginning on
May ± however that will all change! There will then be a monthly
limit of 3° hours after which any use will be charged on a
per-time basis.
I am sure that users of MS-DOS communication programs have been
busily rewriting their scripts and utilities to be able to keep
track of their monthly time so the user will be alerted when
approaching the 3° hour limit! Now for those ZCPR³ users whose
systems include datestamping a real-time clock and the
extraordinary modem program MexPlus about which I wrote a bit
last time I have updated my PCP MexPlus script so that it will
keep track of monthly PC-Pursuit time! It stores hours and
minutes temporarily in the ZCPR³ registers» when the computer is
turned off they go into (where else?© shell variable *.VAR files.
Thanks to ARUNZ§ date symbols the *.VAR files are changed each
month and the time count begins anew.
Those who are interested in this script or for that matter
anything else about which I write in my columns may write me
care of TCJ! I’d also be glad to send a copy of the entire
BACKUP.ZEØ script either the generic version or my personal copy
configured especially to take advantage of the extended graphic
and video capabilities of the Qume 102a terminal.
Ú you next time…
———————–
LISTING OF BACKUP.ZEØ ERROR ROUTINE:
goto end » if no error
;=err
zif
if er • » CTL-C entered
goto errseven
fi
^[ZEX has detected that the BACKUP disk is full.^]
sak /p² » leave message on screen for ² seconds
push
backupº » log to backup directory
dir
/inputera » run ‚ERASE§ alias
^[^|^|Loading NSWEEP might help, so you can view your files…^|^]
ns » NSWEEP
/input
/inputret
Å push !
rs goto $$r± » return to where we left off
;=errseven
^[^|Abort request detected, ZEX script terminating…^|^]
zif
;=end
Das ist der mysteriöse Tect mal „übersetzt“ … interessant ist eigentlich nur die Erwähnung der Webseite in einem so alten Dokument. Die anderen Dokumente in dem Ordner erscheinen „normal“ … sind aber alle erst im Januar „angelegt“
Mal zur Erklärung:
http://en.wikipedia.org/wiki/COM_file
Im Text ist also nicht von der Domain die Rede, sondern von irgend einer Datei. Uraltest Programmierzeugs halt.
Pass auf mich auf | push11.com…
Pizza gefällig oder darf es doch lieber ein Blumenstrauß sein? In den letzten Tagen scheinen bei uns in Deutschland einige seltsame Dinge vorzugehen. Einige berichten davon, mit einem Blumenstrauß überrascht worden zu sein. Andere schreiben darü…
Ich habe so ein Ding heute auch bekommen, allerdings ohne irgendwas auf dem Stick Geschriebenes.
Schlechter Scherz?
Ich hatte gestern eine DVD mit dem Film in der Jackentasche (Jacke hing an Garderobe). Schade, keine Blumen, Pizza o.ä.
Ich bin’s noch einmal. Da ich weder in irgendeinem Krimi-Blog oder ähnlichem aktiv bin, vermute ich, daß jemand anfängt die Dinger so zu verteilen. Einfach um Leute zu verwirren. Hat demzufolge bstimmt nichts mit dem von Euch zu tun. Bin übrigens aus Berlin.
Viel Erfolg beim Lösen.
Moin Tina,
an welcher Garderobe hast Du die DVD denn bekommen (falls Du das verraten magst)?
Viele Grüße
Ludger
[…] dazu gibt es auch → hier Original gibt es unter → push11.com Außerdem: In dem → Film “Pass auf mich auf” ist sehr deutlich eine andere Aufzugstastatur zu sehen (dort gibt es mehr Knöpfe) als auf der […]
NOCH EINER!
Habe gestern ebenfalls eine Nachricht, in Form einer Einladungskarte erhalten und haben mittlerweile keine Ahnung mehr, wie das ganze einzuschätzen ist.
Die Karte habe ich übrigens mal eingescannt. Einsehbar unter:
http://www.literatina.de/thread.php?postid=29607#post29607
Gewisse Ähnlichkeiten der Adresssaten scheint es ja auch zu geben. Und „System“ von Olsberg habe ich vor kurzem auch besprochen und lanciert, glaube aber kaum, dass ein Verlag oder Autor solche Maßnahmen ergreift um einen Titel zu bewerben. Vor allem, wenn dieser schon sehr positiv besprochen wurde…
Viele Grüße
Daniel
http://www.Literatina.de
[…] herrje, Schnitzeljagden überall. Nicht genug, dass wir seit gut zwei Wochen einen rätselhaftem → Horatio suchen, nein, jetzt ruft auch noch Tobias Gohlis, Jurysprecher der KrimiWelt-Bestenliste, in seinem […]
[…] → ARG (→ Alternate Reality Game) steht an. Manch einer erinnert sich vielleicht noch an push11 und den geheimnisvollen Horatio. Heute in meiner Post: Ein weißes Päckchen, angeblich abgesendet aus Portugal und per Luftpost […]