- "A Review of CP/M COMAL"
Ray Carter
"FOGHorn", Vol.VII, No.6, March 1988, p.18
(Retyped by Emmanuel ROCHE.)
Residing, as we do, on the "trailing edge of technology", we are
sometimes overlooked when software is developed.
We have, however, been fortunate in the area of programming
languages, as evidenced by the availability of such top notch
products as Turbo Pascal, FTL Modula 2, Turbo Modula 2, and
older but still good products like Microsoft FORTRAN.
With the plethora of good, reasonably-priced programming
software, one might question why he should concern himself with
further developments in that area?
I would like to tell you about a programming language, and
convince you that it offers a combination of features which
really makes it worth looking into!
What is it?
-----------
The language is COMAL (COMmon Algorithmic Language). Briefly,
COMAL is a programming language designed to combine the best
features of BASIC and Pascal, and it can be viewed as a much
enhanced SUPER version of BASIC.
It was designed by Borge Christensen and Benedict Lofstedt in
Denmark in 1973, and is now the official first programming
language taught in several European countries.
Until recently, it was available in the US only for Commodore
computers, and (a very expensive $500 version) for MS-DOS
machines. In fact, COMAL has the distinction of being the most
often purchased language for the Commodore 64!
What is it like?
----------------
COMAL offers an interactive user interface like BASIC, but adds
all the nice programming structures of Pascal, without the rigid
syntax requirements, or the need to pre-declare everything.
The CP/M version (as do other versions) supports syntax checking
on entry, which means you cannot enter a line which does not
live up to COMAL's "grammar" rules.
Another feature, of which I am particularly fond, is
system-forced indentation. That means that the COMAL editor
automatically indents all your structures properly (unlike other
structured languages, which are not really readable unless you
supply the proper indentation). The first time you have to edit
a program in the middle of a structure, you will be convinced!
The editor also capitalizes all COMAL keywords, and puts
variable names, etc., in lower case.
The full-screen editor also supports an AUTO line-numbering mode
(line numbers are never referenced within the program -- they
are there only for convenience in editing), and RENUMber
command.
When in AUTO mode, each line gets completely reformatted
(capitalized keywords, missing keywords inserted, = changed to
:=, NEXT changed to ENDFOR, etc.) on screen, before your eyes,
when the RETURN key is pressed.
This is really fun to watch!
What about structures?
----------------------
COMAL has four loop structures, two conditional branching
structures, named multi-line procedures and functions with
parameter passing, and an error trapping structure.
The REPEAT-UNTIL loop tests for an exit condition at the end of
the loop.
WHILE-ENDWHILE loops test for exit at the top of the loop.
The FOR-ENDFOR loop works pretty much like a FOR-NEXT loop in
BASIC. It executes a fixed number of times (also permits a STEP
size for increments other than one).
The LOOP-ENDLOOP can have an exit test performed anywhere inside
the loop, or can execute a fixed number of times.
The CASE structure performs a multiple choice test, and executes
one of a sequence of code segments, depending on the value of a
numerical or string expression.
The IF structure allows use of ELIF (else if) clauses, as well
as an ELSE section. There is also a one-line short IF.
The procedure and function facilities allow you to add your own
definitions, which then can be called effectively like
additional keywords or system functions.
I would like to mention that CP/M COMAL also supports recursion,
and has debugging aids in the form of TRACE (to follow program
execution line-by-line) and SYMBOLS (to list all the variables
known at a given point in the program). Both local and global
variables can be supported.
By the way, due to the way COMAL stores variables, the names can
be as long as will still fit on a line (actually, two physical
screen lines can make up one logical COMAL line), but still only
occupy 2 bytes of programming storage each time they are
referenced.
For example, number'of'minutes'in'an'hour is a perfectly good
variable name in COMAL, and is distinct from
number'of'minutes'in'a'day.
How about interfacing machine language?
---------------------------------------
No matter how complete a programming language is, the time still
comes when you would like to get to machine level with it (maybe
to do some machine-specific things like graphics, or to speed up
some common code).
COMAL shines here, too! There are 3 ways to use ML from COMAL.
The most direct method is inline with the CODE statement. In
this method, the actual numerical values for the assembled code
immediately follows the CODE keyword, and are executed whenever
the statement is encountered.
Another method, which may be familiar to BASIC programmers, is
to READ data, and POKE it into RAM, and then CALL it.
The most advanced method is via a ML "package". This basically
wedges the code into the system, where it acts like built-in
procedures and functions.
I have written a BDOS package (that is the one thing they seem
to have forgotten), and a graphics package for the C128 which
uses the 80-column RGB screen to do 640x200 bit-mapped graphics.
The necessary details are outlined in an appendix in the manual.
Another neat feature
--------------------
Most BASIC programmers have, at one time or another, wanted to
be able to leave what they were doing, try out some neat little
idea, and then come back to the original program, undisturbed.
The CP/M COMAL EXTERNAL command will permit just that! Type
EXTERNAL, and you are in a totally new, empty (although slightly
smaller) programming space, where you can do what you wish
without altering the original program which may have been in
use.
Type MAIN, and you are returned to the old program, intact.
You can even nest EXTERNAL calls, and return one level at a time
with MAIN, if you wish.
Not trying to confuse you, but EXTERNAL is also used in a
different context, to call in and execute saved routines from
disk, without having to include the full routines in your source
file. This permits a type of overlay technique to be utilized,
to make programs larger that the available memory.
How about compatibility?
------------------------
All of this neat stuff would not be too useful if you were the
only guy around who was able to use it, and if files could not
be transferred to different machines.
Although Turbo Pascal and some other languages are available,
and somewhat compatible between CP/M and MS-DOS, COMAL does even
better!
As mentioned above, there are already Commodore and MS-DOS
versions available. There is another company working very hard
to finish a cheap ($50) MS-DOS version. Work is also going on
towards implementations on the Macintosh, Amiga, and Apple II.
I have transported source code from many Commodore programs, and
find that things work fine under CP/M, as long as
system-specific things like graphics routines are not used. I
also know people who have transported Commodore COMAL programs
to MS-DOS, and MS-DOS to CP/M. Things are generally more
compatible than most anything else you can find on the market.
In fact, I have found that programs from the disk-based
Commodore version 0.14, which have sound routines, can be made
to run on the C128 CP/M version by merely CHANGEing all POKE
commands to OUT. CHANGE and FIND are built-in editing commands.
PEEK and POKE affect RAM locations, while INP and OUT talk to
I/O ports.
There are over 4000 programs available from the "COMAL User's
Group" on C64 disks. I imagine that, as time goes by, most of
these will be transferred to CP/M formats, and made available at
nominal cost.
I believe that the standard form of distribution for the CP/M
materials is on Osborne DD disks.
The CP/M COMAL comes installed for the C128, but does include an
install program.
There is also a CP/M run-time module available, which permits
you to make stand-alone CP/M COMmand files, to be run by people
who don't have COMAL. (ROCHE> That is to say: COMAL is an
interpreter... but can produce COM files like a compiler! And
without changes in the program, contrary to MBASIC/BASCOM...)
How much?
---------
More good news! The CP/M COMAL 2.10 system is available from the
"COMAL User's Group USA, Ltd." (...). List price is $69.99 + $5
for shipping.
If you are still not convinced, or would like to try it out
first, there is a demo version available (DEMCOMAL.COM). The
demo version is a full implementation with sample programs -- it
does everything, except that it will not SAVE programs you
write. You will, however, be able to load, run, and list the
sample programs, and try your hand at writing some programs of
your own.
As of this writing, the demo version is available on GEnie, or
from the "COMAL User's Group" (address above) for $5. When you
get a copy, be sure to print out the text files included, and
then make copies and give them to all of your friends -- CUG
wants it that way!
There is also a preliminary demo version of the inexpensive
MS-DOS COMAL available via the same channels.
After using COMAL (I am not associated with the "COMAL User's
Group", or anyone else who has a vested interest in COMAL) for a
couple of years on the C64 and C128, and having used the CP/M
version now for a few months, I am convinced that it is the BEST
programming language available for general-purpose use.
It is simple and easy to learn to use, yet powerful enough for a
sophisticated user to appreciate and benefit from. I cannot say
enough good things about COMAL. Try it, you will like it!
EOF
> COMALFOG.TXT
> ------------
>
> - "A Review of CP/M COMAL"
> Ray Carter
> "FOGHorn", Vol.VII, No.6, March 1988, p.18
>
Where on earth did you ever dig that up? I had entirely forgotten about
it. I was involved with some of the early work on CP/M Comal in the U.S.
When I started the only manual available was the original in Danish.
Fortunately my mother was Danish, so with the help of a Danish to English
dictionary I translated the whole thing - it was interesting.
> Where on earth did you ever dig that up? I had entirely forgotten about
> it. I was involved with some of the early work on CP/M Comal in the U.S.
> When I started the only manual available was the original in Danish.
> Fortunately my mother was Danish, so with the help of a Danish to English
> dictionary I translated the whole thing - it was interesting.
Obviously in the "FOGHorn" magazine...
Ok. I don't know if you are a regular of the comp.os.cpm Newsgroup
but,
several years ago, I spent one full year trying to ressurrect COMAL
v2.10
for CP/M. I managed to find the binary, which is hosted by Peter
Schorn
(http://www.schorn.ch/cpm/intro.html). However, despite all my
efforts,
I never found any paper doc for it, nor the MS-DOS version (one CP/
M-86
version is available on the Internet, but it was for a Swedish
computer
("COMPIS") and I never found someone interested enough to translate
its paper doc from Swedish to English... (If you are a blonde Swedish
girl interesting in programming, you are the welcome!)
So, I you will not mind, could you have a look in your archives, and
see if you can help, here?
Also, as written in the comp.os.cpm Newsgroup, when you print the
help file, you discover keywords being the same as the Z-80 CPU
registers names... Hence, I think that it is possible to call
interactively
assembly language subroutines? But where is the doc? For example,
I would like to display the names of all the files matching a
particular
ambiguous pattern, then do something (like displaying their ASCII
contents).
Since I have retyped all the articles that I managed to find about
COMAL (nobody from this comp.os.cpm Newsgroup ever provided
one...), I am obviously strongly interested in COMAL.
The problem is that only the (8-bit) CP/M version is available, while
I am only interested in programs that used to run the same under
CP/M 2.2, MS-DOS, and CP/M-86.
On the Internet, there is a Scotish society selling UniCOMAL V3.1
for Windows, but it is useless, since it is not portable.
So, I am searching the binaries for MS-DOS, and the paper doc
of COMAL v2.10.
Yours Sincerely,
Mr Emmanuel Roche
>COMALFOG.TXT
>------------
>
>- "A Review of CP/M COMAL"
> Ray Carter
> "FOGHorn", Vol.VII, No.6, March 1988, p.18
>
>(Retyped by Emmanuel ROCHE.)
>
-----------> and snipped here by me--------->
If you had looked at the WC Cdrom the COMAL bin and many bits of text
are there.
Enclosed is the "language manual" such that it is.
That disk has a few other interesting languages like DRACO.
Allison
=====================Start text==================================
COMAL - THE PROGRAMMING LANGUAGE
by David Stidolph
A little over 10 years ago, Borge Christensen, a professor in Denmark,
couldn't find a computer language he liked enough to teach.
BASIC was fine for the students - it was interactive and they could
start learning quickly because they got to see their program execute
as soon as they typed RUN. Unfortunately the student programs looked
like spaghetti and it took longer to figure out how they worked than
it took to write them.
Pascal, on the other hand, was a teachers dream. Programs were
readable and precise. The long variable names and procedures and
functions made checking the programs easy when compared to BASIC. The
problem with Pascal, however, was that the students had to learn how
to runhthe compiler before they could run a single line of code. The
students also found it harder to experiment with Pascal than with
BASIC. Every variable had to be declared and a student would never
know about errors until the program was compiled.
Rather than choosing one or the other, Borge decided to develop a
language that would include the best features of both BASIC and
Pascal. This language was called COMAL (COMmon Algorithmic Language).
His idea was so successful that it has become the official programing
language of schools in five European countries. A COMAL Standard was
developed (called the COMAL Kernal), and meetings are held annually to
maintain compatibility between the various implementations.
Technically COMAL is a three pass, run time compiler. It combines the
features of a compiler and an interpreter, providing an easy-to-learn
language that also is easy-to-use. Explaining the three passes will
help describe the language.
Pass One - Entering Program Lines
The first pass occurs when a program line is entered. The line's
syntax is immediately checked. If there is any problem, an error
message is printed below the line and the cursor is placed on the
problem. For example, look at the following:
100 hypotenuse=sqr(sidea^2+sideb^2(
The open parentheses at the end of the line should be a close
parentheses. COMAL realizes this and displays the message ")"
expected, not "(" beneath the line as soon as RETURN is pressed. The
cursor is placed on the open parentheses at the end of the line.
To correct the error, press the ) key. The line on the screen is now
correct. Press the RETURN key and the line is entered into the
program. Also, the error message is removed and the text it erased is
restored. The command:
LIST 100
displays the following line:
0100 hypotenuse:=SQR(sidea^2+sideb^2)
Notice that COMAL distinguishes between := for assignment and = for
comparison, but doesn't require you to type them differently. SQR is
capitalized to show that it is a built in keyword of COMAL. Variables
and commands can be entered in either upper or lower case.
Consider the following line:
100 balance=12376.35
This line is valid in both COMAL and BASIC. However, in BASIC, the
line is stored in its ASCII form, and only the first two characters of
the variable name are significant (balance would be the same variable
as bad, bank, bankrupt and backpay). Then, each time the line is
executed, BASIC must convert the number to floating point format and
search through memory for the variable ba.
In COMAL the variable name can be up to 78 characters long (each
character is significant). To save programming space and increase
execution speed, the name is stored in a table and a token is used at
each occurrence in the program. When the program is executing, COMAL
knows precisely where to find the variable. In addition, the number is
stored in its floating point form, allowing faster execution.
Pass Two - Program Structure Check
When you type RUN and press RETURN, COMAL checks the entire program
for structural errors and resolves all addressing (noting where
procedures are located, where to branch for IF..THEN..ELSE, FOR..NEXT
loops, etc). This scan of the program is not noticeable (usually less
than a second). For example, if a REPEAT loop was ended with ENDWHILE
instead of UNTIL, COMAL would give the following error message (xxxx
is the problem line number):
at xxxx: "UNTIL" expected, not "ENDWHILE"
BASIC cannot find a structural error until it executes the line. In
COMAL each line of the program is checked as it is entered and the
whole program is checked before a single line is executed. This
program scan greatly improves program reliability and allows COMAL
programs to run much faster than BASIC.
Pass Three - Running the Program
The last pass is when the program is actually executed. Although the
program has been checked thoroughly for errors and all necessary jump
addresses have already been calculated, the possibility of error still
exists. Look at the following program:
0010 PAGE //clears screen and homes the cursor
0020 INPUT "How many apples?": total'apples
0030 INPUT "How many people?": total'people
0040 PRINT total'apples/total'people;
0050 PRINT "apples per person"
This simple program seems correct, but what if the user typed in a
zero for total'people (a division by zero error) or typed a name
instead of a number?
In most languages the program would halt. In fact, COMAL would halt in
this case as well. There is a way, however, to trap errors. To "user
proof" program lines, place them inside a TRAP .. HANDLER structure.
This may sound complicated, but actually the idea is simple. Look at
this re-worked example program (indentation is provided by the LIST
command, you do not have to type the spaces):
0010 PAGE //clears screen and homes the cursor
0012 LOOP
0015 TRAP
0020 INPUT "How many apples?": total'apples
0030 INPUT "How many people?": total'people
0040 PRINT total'apples/total'people;
0050 PRINT "apples per person"
0060 EXIT //no errors encountered, leave loop
0070 HANDLER
0080 PRINT "Numbers only, and at least one."
0090 PRINT "Please try again..."
0100 ENDTRAP
0110 ENDLOOP
Now if an error occurs during execution of lines between the TRAP and
the HANDLER (lines 20 through 60), the program would jump into the
HANDLER section (lines 80 - 90). If both input requests get proper
replies, the EXIT command jumps out of the LOOP (and out of the TRAP
as well).
Since lines were inserted between 10 and 20, the RENUM command can be
used to make all the line numbers nice and even. COMAL only uses line
numbers only for editing programs and can even list a program without
line numbers.
Portability of COMAL and Beyond
Thanks to the early development of a standard, a programmer can write
a COMAL program that will run virtually unchanged on PC compatibles,
Commodore 64, CP/M, and soon on the Apple II. With COMAL one language
can be taught for several different machines. COMAL provides a
universal language to bridge the gap.
Once you have mastered a given language, what do you do? No one
language is perfect for all tasks. Each has its own advantages and
disadvantages. The purpose of COMAL is to teach programming skills
with a minimum of "harassment". When you learn COMAL you have learned
the standard programming techniques of Pascal, Modula II, Ada and
other structured languages. Many of the concepts you learn in BASIC,
LOGO, Forth, are actually undesirable and later must be "unlearned".
Other Features
COMAL has many other advantages - a full screen editor, strings and
string arrays of any length (up to the limit of memory) with no
garbage collection, fast string searches (up to 80 times faster than
BASIC), print using, cursor control, procedures and functions with
parameter passing and recursion, local/global variables, user defined
string functions, and easy file access and control. COMAL also allows
you to LIST procedures or entire programs to disk and later merge them
into other programs. No more re-typing the same routine each time you
need it in a program.
I'll have a look and see what I can find - we moved 1000 miles not too
long ago after living in the same house for 22 years, so things are a bit
in chaos. I did find on the web not long ago, a very basic COMAL for
Linux. I did not explore it much, but I think there is a link from the
unicomal web site. As I recall, the author was trying to do it rather
generically so it could be ported to other OSs.
You might also find a little info in old issues of Comal Today - it was
published by Len Lindsay in, as I recall, Madison Wisconsin.
http://www.macharsoft.co.uk/opencomal/opencomal1.html
De
There is no shortage of binaries and documentation for the various
Apple and CBM versions on the 'Net, and emulators as well if you want
to run them.
mike
> If you had looked at the WC Cdrom the COMAL bin and many bits of text
> are there.
None of the computers that I have has a CD-ROM drive...
> Enclosed is the "language manual" such that it is.
I will try the Retroarchive Web site, to see what there is online from
this cybercafe.
Everything that I managed to find about COMAL is on the Web site
of Peter Schorn already mentioned.
> That disk has a few other interesting languages like DRACO.
This thread is supposed to talk about COMAL...
> Why are you excluding the 6502 versions of Comal?
>
> There is no shortage of binaries and documentation for the various
> Apple and CBM versions on the 'Net, and emulators as well if you want
> to run them.
I don't know if you have been reading this comp.os.cpm Newsgroup for
long,
but it is dealing with CP/M, and I tried to ressurrect COMAL for CP/M.
Find me a version of CP/M for the 6502, and I will be intested.
Find me a CBM emulator running under CP/M, and I will be interested.
(You forgot the C=64 and C=128.)
I repeat: How do you use a Z-80 assembly language "package" from
COMAL v2.10 under CP/M?
If you find that in the Apple and CBM versions, I will be VERY
interested.
All the TXT files are on Peter Schorn's Web sites, so nothing new.
Peter Schorn has the full working version, while this is the crippled
demo version. So, it is up to you which version you prefer to use...
Allison "I did it" Parent wrote:
> > Enclosed is the "language manual" such that it is.
I did not manage to find any "language manual" for COMAL v2.10.
There is a file containing the keywords, but it is inside it that I
found
the AF, BC, DE, and HL keywords that I mentioned several months
(years?) ago, asking if someone knew how to use the "package"
concept of COMAL...
> > That disk has a few other interesting languages like DRACO.
Now that I have been to the Retroarchive Web site, the less that
I can say is that I am not very impressed by DRACO.
On the other hand, COMAL enables you to play interactively
with the registers of the Z-80 CPU... How many other programming
languages do you know, which enable you to develop interactively
an assembly language subroutine? In addition, COMAL is an
interpreter and, after your program is debugged, you can compile it,
as explained in one of the TXT files. And the compiler is fully
compatible with the interpreter, contrary to MBASIC/BASCOM,
where the BASCOM version of a program is so different that
you need to develop 2 versions of a program to use them!
DRACO is only a Pascal compiler.
COMAL was available on the Commodore CMB-8032, C=64, C=128,
CP/M, CP/M-86, and MS-DOS.
Which one is more interesting for system software?
Which one is more portable?
Which one lasted longer?
I have been participating to the comp.os.cpm Newsgroup for over
10 years, now. I cannot wait to see your first DRACO program...
>I am back from the Retroarchive Web site.
>
>All the TXT files are on Peter Schorn's Web sites, so nothing new.
>Peter Schorn has the full working version, while this is the crippled
>demo version. So, it is up to you which version you prefer to use...
>
>Allison "I did it" Parent wrote:
Your beginning to be rude.
So. I've had the WC CDrom for over 12 years and I learned about it's
availability here.
Not likely on DRACO, I wasn't impressed either but then again
I looked at it over 12 years ago. Nor it's buddy on the disk
Parasol. They both has a few interesting ideas but nothing
made them stick.
Comal is interesting for systems work but like many CP/M higher level
languages (including C) the the overhead for a Z80 based system is
high making it a specious claim. I tried a database in it but
Pascal was faster at runtime. If I had only the two Pascal for speed
and Comal for one off programs as Comal was easier to write programs
with fewer keyboard errors with it's error checking. Beats the tar
out of most Basics for CP/M on 8bitters.
Allison
>Yours Sincerely, <?
>Mr Emmanuel Roche
---------------
Umm.. let me go back and see what you were looking for...
<quote>
The problem is that only the (8-bit) CP/M version is available, while
I am only interested in programs that used to run the same under
CP/M 2.2, MS-DOS, and CP/M-86.
So, I am searching the binaries for MS-DOS, and the paper doc
of COMAL v2.10.
Yours Sincerely,
Mr Emmanuel Roche
</quote>
Ah, I see my misunderstanding; I didn't realize MS-DOS was actually a
version of CP/M, which it must be since you're discussing it here.
And I also assumed that since you're looking for documentation for
2.10, although I haven't looked specifically I thought perhaps
somewhere in the vast amount of CBM COMAL documentation you might find
something relevant and useful, perhaps even documentation for 2.10.
Since it's essentially a "standard" teaching language I also assumed
that functions and documentation would be similar if not identical
across the various platforms, but apparently even if it were identical
word-for-word, if it didn't say CP/M on the front page you would not
be interested.
My apologies for wasting your time and bandwidth by trying to be
helpful.
Up yours!
(That's a north american idiom meaning "have a nice day")
m
<snip>
> Find me a version of CP/M for the 6502, and I will be intested.
>
> Find me a CBM emulator running under CP/M, and I will be interested.
>
> (You forgot the C=64 and C=128.)
-----
Well, the C64 version of CP/M *is* probably best forgotten, but I
think "CBM COMAL" would include those versions...
-----
> I repeat: How do you use a Z-80 assembly language "package" from
> COMAL v2.10 under CP/M?
------
I believe CP/M runs Z-80 assembly language quite well...
------
> If you find that in the Apple and CBM versions, I will be VERY
> interested.
>
------
I believe you'll find those just as easily as the MS-DOS and CP/M86
versions...
<quote>
The problem is that only the (8-bit) CP/M version is available, while
I am only interested in programs that used to run the same under
CP/M 2.2, MS-DOS, and CP/M-86.
</quote>
m
>I believe CP/M runs Z-80 assembly language quite well...
No, it does not. You statement is wrong.
Bill
>On Tue, 15 Jan 2008 01:41:11 -0800 (PST), MikeS <dm...@torfree.net>
>wrote:
>---
>
>>I believe CP/M runs Z-80 assembly language quite well...
>
>No, it does not. You(r) statement is wrong.
A Z-80 .... ''runs Z-80 assembly language quite well.''
Doesn't matter whether it's running CP/M or something else.
Bill
---
I stand corrected; thank you.
So, you're saying that if I tell the CP/M CCP to "run" a program
written in Z-80 assembly language by typing its name, it would *not*
run it quite well (assuming, of course, that it was runnable)?
I was indeed under the impression that one could in fact run Z-80 code
on a CP/M (as opposed to, say, CP/M86) system, since it would most
likely also be using a Z-80; apparently I was mistaken and my
recollections of having done so many times in the past 30 years or so
are faulty.
At least I didn't top-post and bring Mr. Falconer into the
discussion...
Sheesh; can we move on?
m
--------
In case there really is a misunderstanding and this is not just
pedantic nitpicking, yes, I will grant you that my sarcastic reply to
the OP's question, "How do you use a Z-80 assembly language "package"
from COMAL v2.10 under CP/M?" did assume, perhaps incorrectly, that he
was not intending to do that on a system that didn't use a Z-80.
OK?
m
(snip)
> So, you're saying that if I tell the CP/M CCP to "run" a program
> written in Z-80 assembly language by typing its name, it would *not*
> run it quite well (assuming, of course, that it was runnable)?
> I was indeed under the impression that one could in fact run Z-80 code
> on a CP/M (as opposed to, say, CP/M86) system, since it would most
> likely also be using a Z-80; apparently I was mistaken and my
> recollections of having done so many times in the past 30 years or so
> are faulty.
My understanding is that CP/M uses only 8080 instructions, and so can
run on an 8080. If one is distributing programs for all CP/M users,
they should not use Z80 only instructions. Most likely using a
Z80 means that there is still a possibility that it isn't.
-- glen
For example me. I know other ruunning PT Sol (8080) and I have an
Netronics Exporer 8085 (8085 is basically 8080) so there are two
non Z80 systems. I also have a few system I made for myself
just to use some of the 8085s I have laying about and they run CP/M.
So CP/M usually means 8080 or any compatable 8080 cpu it does
not mean universally Z80 though probability is high.
Allison
>-- glen
In addition, some CP/M machines with Z80 CPUs could not run
all Z80 user programs. That happened when the CBIOS author
assumed that, since CP/M was designed for the 8080, any and
all extra Z80 features should be exclusively available for
the CBIOS. The CONKEY CBIOS went through some revisions to
add preservation of the index registers across CBIOS calls
and interrupt servicing.
------
Now _that_ I didn't know; I took it as a given that trying to run Z80
code implied having a Z80 (or emulator) to run it on, but I did think
that whether CP/M itself was meant to run on an 8080 or a Z80 didn't
matter.
Nevertheless, considering that most CP/M systems are probably running
Z80 code (and, conversely, that, at least in our community, most Z80
code is probably running under CP/M), to say that the statement "CP/M
runs Z80 code quite well" is "wrong" is just being provocative.
And by the same token his statement that a Z80 will run Z80 code
regardless of the OS is equally wrong if not more so, unless that code
contains no OS calls whatsoever.
UNCLE!
mike
If I have well understood, this is a German school which was using
COMAL 2.2 on PCs.
Could someone ask them (in German: I wrote them a message in English,
but they don't seem to understand) a copy of this rarity?
Yours Sincerely,
Mr Emmanuel Roche
Schulrechenzentrum ** (SURZ) Fritz-Steinhoff-Gesamtschule Hagen
COMAL 2.2
Die Datei COMAL.ZIP enthält die Dateien, die zum Arbeiten mit COMAL
notwendig sind, in einer gepackten Datei.
Diese Version ist eine Schulversion der Fritz-Steinhoff-Schule. Jeder
Schüler darf diese Version für seine Ausbildungszwecke benutzen. Es
ist nicht erlaubt, diese Version weiterzugeben oder sogar gewerblich
zu benutzen.
Diese Datei Comal.Zip ist über unseren Web-Server erhältlich.
Schüler und Schülerinnen der FSG erhalten bei ihren Informatiklehrern
ein Passwort, mit dem auf diesem Server der Zugang zu Comal
freigeschaltet werden kann.
Dort liegen die gepackte Version von Comal und eine Text-Datei
(comal.txt), die erklärt, wie das Programm auf dem eigenen PC
installiert werden kann.
Wie installiere ich das System:
Man hole vom Server der FSG die Datei COMAL.ZIP und die
Beschreibungsdatei COMAL.TXT auf eine Diskette. Ebenso hole man vom
Server aus dem PUB-Bereich das Programm PKUNZIP.EXE, falls man es noch
nicht hat bzw. nicht über die entsprechenden Windows- Programme WINZIP
o.ä. verfügt.
Mit dem PKUNZIP.EXE-Programm werden die Dateien entpackt. Dazu gehe
man auf dem Zielcomputer auf die DOS-Ebene:
auf den Windoof-Maschinen in ein Dos-Fenster wechseln (Start/Programme/
MSDOS ´klicken´) oder fahre bei den Win9x/ME-Maschinen Windows
herunter mit:
Nach MSDOS gehen.
auf den Linux-Kisten in einer Konsole den Dos-Emulator DOS aufrufen
oder
in X-Window (z.B. in KDE) in einer Terminalemulation XDOS aufrufen.
Man erzeuge auf dem 'heimischen' Computer ein Verzeichnis, in dem die
COMAL-Dateien gespeichert werden sollen, z.B. \SPRACHEN\COMAL
(für DOS-unkundige: Führe folgende Befehle aus:
c:
cd \
md sprachen
cd sprachen
md comal
cd comal)
Befinden sich die Dateien COMAL.ZIP und PKUNZIP.EXE auf der Diskette
im aktuellen Verzeichnis
(Testen mit DIR a:, dann müssen diese beiden Dateien aufgelistet
werden, ansonsten mit a: auf das Laufwerk wechseln und gegebenenfalls
mit CD \comal in das entsprechende Verzeichnis wechseln, anschliessend
mit c: wieder auf die Festplatte gehen.),
werden die Dateien mit
A:PKUNZIP A:COMAL (Grossschreibung muss nicht sein!)
auf die Festplatte kopiert. (Überprüfe mit DIR c: )
Wie führe ich dieses Programm aus:
* Man 'gehe' auf dem Rechner auf die DOS-Ebene. (siehe oben)
* Man wechsle in das Comal-Verzeichnis z.B. mit
c:
cd \sprachen\comal
* Dann starte man das Programm mit COMAL.
Bei Fragen frage man ganz ungeniert psa!
Schulrechenzentrum (SURZ)
Fritz-Steinhoff-Gesamtschule
Am Bügel 20
58099 Hagen
Tel: 02331/963411 Fax: 02331/65073
E-Mail: p...@fsg-hagen.de
Stand: 26.1.2002/psa
EOF
but it contains only the instructions already found! Aaarrrggghhh!!!
http://www.fsg.hagen.de/download/inf/comal/
So, we really need a German-speaking CP/M fan.
Arno.Pa...@Hagen.de
Maybe he is still around? He seemed to know that "hagen" was using
COMAL.
:-) OK. I think the problem is that CP/M itself is written using
only 8080 op-codes, so it can run on either a z80 or and 8080 (or
8085). Similarly, applications written in 8080 opcodes can run on
all CP/Ms. However, the great majority of CP/M machines have a Z80
(or 64180 or Z180) and thus can run both 8080 and z80 opcode
programs. This has tended to be the universal situation in the
past.
In aid of this, and to improve CP/M 2.2 operation, I prepared
DOSPLUS 2.5 many years ago. It is written using Z80 opcodes, and
also handles the 64180. It provides many extensions, and fits
exactly into the space originally allocated for CP/M 2.2. It (and
other things) are freely available at:
<http://cbfalconer.home.att.net/download/cpm/>
--
[mail]: Chuck F (cbfalconer at maineline dot net)
[page]: <http://cbfalconer.home.att.net>
Try the download section.
--
Posted via a free Usenet account from http://www.teranews.com
-----------
Well, I'm a German-speaking CP/M fan, but after your condescending
lecture about this being a CP/M newsgroup I don't dare talk about an
MS-DOS program...
You need a password.
m
No you didn't, I sent it to you.
>Could someone ask them (in German: I wrote them a message in English,
>but they don't seem to understand) a copy of this rarity?
When I spoke (emailed) to the man in charge, he seemed very helpful. I
don't know what you did to offend him, but it seems to be a knack
you've honed to perfection.
--
Tschö wa
Axel
I only found
http://oldcomputers.dyndns.org/public/pub/mirror/oakcpm2/cpm/comal/inf
o.html
but I think it's a demo version
--
Greetings
Fritz Chwolka
"Fritz Chwolka" schrieb:
>I only found
>
>http://oldcomputers.dyndns.org/public/pub/mirror/oakcpm2/cpm/comal/inf
>o.html
>
>but I think it's a demo version
Emmanuel looks for MS-DOS a Version of COMAL.
The CP/M-80 Version COMAL look by Peter Schorn Homepage.
Rolf