Recently, John Elliott released VGALOGO.CMD,
a version of Dr.
Logo for the (English) ACT Apricot F1e under Personal CP/M-86,
patched to use a VGA screen under CP/M-86.
Many years ago, as explained in the "Apricot PCP/M-86" thread of
the comp.os.cpm Newsgroup, I used the original copy-protected
Dr. Logo.
I was curious how different was the freely copiable version, so
downloaded and tried it.
A>vgalogo
Welcome to
Logo for the F1 19/04/85
(=19 April 1985)
Copyright (c) 1984, Digital Research
Pacific Grove, California
Dr. Logo is a trademark of
Digital Research
Serial No. XXXX-0000-654321
Please wait
?
First thing to do: check that we can exit properly.
?bye
It did not work! What is going on? This is how it worked on the
copy-protected IBM PC version (and the Amstrad PCW8256). Let
us
try it in uppercase, just in case.
?BYE
A>
It worked! Amazing! By the way, let us have a look to the sample
Logo programs provided. This is what I suspected: all of
them
are in uppercase. A quick look to my old Logo listings
showed
that they were all in lowercase... So, VGALOGO seems to have
a
"feature" which will have to be investigated further
in the
future.
Back to VGALOGO.
A>vgalogo
(Don't forget to toggle this SHIFT key!)
?NODES
61066
Whaow! If we take a node to be 4 bytes, that means a workspace
of more than 238 KB! (Almost four 8-bit TPAs... or 4 times
the
capacity of MBASIC-86) When was the last time you wrote a 238 KB
program with an interpreter under CP/M-86? The less that can
be
said is that this is quite an improvement over the 15 KB of the
8-bit version of Dr. Logo...
I then had a look to the sample Logo programs. Since they
all
display graphics, I will give their
name and a short
explanation, rather than explain step-by-step how they work one
after another.
By the way, to load one Logo program into the workspace, you type
?LOAD "FILENAME
(?DIR gives you a list containing the Logo files present on the
default drive.)
STRING.LOG
Careful! When you load it, it displays
the names of 2
procedures: STRING and PIC but, contrary to the filename
under
which they were saved, you need to type PIC to run
STRING...
(Contrary to BASIC, you don't save only one
program, but a
collection of procedures, one of them being the "program".)
As
for its display, it draw one big circle, then abother
circle
with 2 hubs?
PATTERN.LOG
Rotates a polygon.
ENTER NUMBER OF SIDES IN POLYGON... 5
NUMBER OF ROTATIONS................ 2
LENGTH OF ONE SIDE................. 50
DMOUSE.LOG
A mouse demo.
(it's drawing with the mouse, but the moves of the mouse are a little reversed).
FILLDEMO.LOG
Obviously, some demo showing the FILL primitive. Under SETRES
0
(the default), draws some lines, then fills
4 squares with
green. Under SETRES 1, draws some lines. The less that
can be
said is that there is a problem, somewhere.
CASCADE.LOG
Displays a stack of multi-colored cubes in a corner (pseudo 3D).
Curiously, this time the FILL primitive works perfectly.
DEMO.LOG
The real gem. Divides the screen in 4, then run one demo overlay
in each of the 4 areas. Then displays all the background colors,
creating a procedure on the fly, then try to load a picture from
disk. (Normally, Logo picture files are filenamed PIC, but
the
one provided was filenamed PC0?) Fails, since LOADPIC
is not
implemented. One slight error: the "turtle" remains visible when
the 4 overlays are run. Normally, the first thing that you learn
is to remove the turtle from the screen ("HIDETURTLE" or
"HT")
once a program is debugged. This speeds the drawing, and
don't
corrupt the screen (this is important because
of the small
resolution). This one must be seen in SETRES 1 mode.
One thing that was painful was the slowness of floppy disk drive
accesses (especially HELP, that I used
to understand the
parameters used in some programs). If VGALOGO was run
from a
RAMdisk, it would be perfectly usable.
As far as I know, this is the first time that
a Programming
Language with graphics is available under CP/M-86
since its
revival... John Elliott has done a world premiere! Of course, as
explained above, some bugs remain but
this is only the
beginning.
<snip>
Yours Sincerely,
"French Luser"
| EOF | ![]() |