There are lots of strange (and weird) computer programming languages, most all of these languages are history, RPG and others that had big enough support (IBM in the 60's and 70's is as strong as it got) continue to be
used in one way or another.
Look at LOGO, a non computational computer programming language
that was little more than a toy (the same basic language was written into some toys).
Randy McLaughlin <randy@nospam.com> wrote in message news:Pp_Ka.616$Im5.226@fe03.atl2.webusenet.com...
There are lots of strange (and weird) computer programming languages, most all of these languages are history, RPG and others that had big enough support (IBM in the 60's and 70's is as strong as it got) continue to be used in one way or another.
Look at LOGO, a non computational computer programming language
that was little more than a toy (the same basic language was written into some toys).
LOGO had a very stable and efficient implementation for recursion that allowed it to run on very limited microcomputers. IMHO it would be
difficult or impossible to find any "serious" language of the day that could handle recursive algorithms as efficiently with the limited memory space, stack and CPU speed of the 1980s Apple II.
There were other implementations of LISP available for the Apple II (e.g.
Owl Lisp), but they were not nearly as stable.
- Mike
Logo was a delightful environment, but not the only "serious" recursive
stack machine in wide use on Apple II.
Apple's UCSD Pascal implemented a very efficient stack machine. Each
stack frame had a static and dynamic link to allow recursion from an arbitrary nesting level.
Every implementation of Forth I saw on the Apple II (including the FIG
Forth I adapted to ProDOS) used at least two stacks. Recursion was not
as syntactically transparent as Pascal, but it was quite efficient.
In article <ShnRa.14919$kI5.9342@nwrddc02.gnilink.net>,......................
"Michael Pender" <mpender@hotmail.com> wrote:
Umm, the Fortran compiler was written in Pascal and assembler to
run under the p-system, not the other way around. It was
copy-protected, slow, buggy and never got updated. Although the
number of open files was never a serious limitation, the
primitive disk allocation scheme was prone to fragmentation.
The rest of the system was quite robust: Apple Pascal disk I/O
was very efficient; it was the forerunner of ProDOS. The
p-system was used to develop scores of widely used applications,
including PFS, Jack, VersaForm, QuickFile, Smartcom, Apple
Business Graphics, Wizardry and the AppleWorks tutorial. The
UCSD language extensions for strings and separate compilation
were implemented in scores of subsequent systems for Apple ///,
Lisa and Macintosh, not to mention Turbo Pascal and Delphi.
To me, the most compelling feature was being able to mix low-
and high-level code cleanly.
In article <nospam-701F83.06305517072003@clmboh1-nws3.columbus.rr.com>,
John B. Matthews <nospam@nospam.com> wrote:
In article <ShnRa.14919$kI5.9342@nwrddc02.gnilink.net>,
"Michael Pender" <mpender@hotmail.com> wrote:
......................
Umm, the Fortran compiler was written in Pascal and assembler to
run under the p-system, not the other way around. It was
copy-protected, slow, buggy and never got updated. Although the
number of open files was never a serious limitation, the
primitive disk allocation scheme was prone to fragmentation.
The rest of the system was quite robust: Apple Pascal disk I/O
was very efficient; it was the forerunner of ProDOS. The
p-system was used to develop scores of widely used applications,
including PFS, Jack, VersaForm, QuickFile, Smartcom, Apple
Business Graphics, Wizardry and the AppleWorks tutorial. The
UCSD language extensions for strings and separate compilation
were implemented in scores of subsequent systems for Apple ///,
Lisa and Macintosh, not to mention Turbo Pascal and Delphi.
Turbo Pascal versions 1 to 3 didn't support separate compilation
though: the entire program had to logically reside in the same
source file. The only way to split it up was through INCLUDE
directives.
I never liked Apple Pascal, and my first serious experiences
with Pascal was on Turbo Pascal 1 running on Apple II CP/M:
it was ...s.o...m.u.c.h...f.a.s.t.e.r... - on the same hardware!
I also liked Turbo Pascal's floating-point format, which was 6 bytes,
a good compromise between the usual 4 bytes (too imprecise) and 8
bytes (too slow). OTOH Applesoft with its 5-byte floating-point
format was quite good too. Here Apple Pascal was a definite step
back, to 4-byte floating-point numbers. And Apple Fortran was no
better, since it implemented only the subset standard of Fortran-77
and thus lacked e.g. DOUBLE PRECISION floating-point numbers - quite
a serious omission in a language supposedly intended for number
crunching!
To me, the most compelling feature was being able to mix low-
and high-level code cleanly.
Here Turbo Pascal did shine. If you wanted to access absolute memory locations in Apple Pascal, you had to play some tricks with pointers
and variant records. In Turbo Pascal it was much much simpler: it
had a non-standard extension -- the mem[] array (of type "byte",
another Turbo Pascal non-standard extension) was predefined in
Turbo Pascal and _was_ the physical memory! So if you wanted to
read the keyboard directly in Turbo Pascal (Address $C000 for the
6502; it was remapped to 0E000h for the Z80) you just used 0E000h
as an index into the mem[] array.
In Turbo pascal you could also add machine code directly through
the "emit" statement (still another non-standard Turbo Pascal
extension). However, TP lacked a full-fledged inline assembler,
you had to supply the hex opcodes yourself.
I wrote a Turbo Pascal utility once which did read Apple Pascal disks
and transferred the Pascal source files (or any other text file) over
to CP/M disks, to make them accessible to Turbo Pascal. After having transferred all my Apple Pascal source files over to CP/M, I almost
never touched Apple Pascal again.
In article <bf6nmm$1vpr$1@merope.saaf.se>,
pausch@saaf.se (Paul Schlyter) wrote:
In article <nospam-701F83.06305517072003@clmboh1-nws3.columbus.rr.com>,
John B. Matthews <nospam@nospam.com> wrote:
......................
The UCSD language extensions for strings and separate compilation
were implemented in scores of subsequent systems for Apple ///,
Lisa and Macintosh, not to mention Turbo Pascal and Delphi.
Turbo Pascal versions 1 to 3 didn't support separate compilation
though: the entire program had to logically reside in the same
source file. The only way to split it up was through INCLUDE
directives.
Interesting. I used Turbo Pascal for only a short time on Mac.
When did Turbo Pascal come support the UCSD "use" clause? Or am
I misremembering?
I never liked Apple Pascal,
I loved it! It was sooo much better than Fortran:-)
Still, I've abandoned it in favor of Kyan Pascal under ProDOS.
and my first serious experiences
with Pascal was on Turbo Pascal 1 running on Apple II CP/M:
it was ...s.o...m.u.c.h...f.a.s.t.e.r... - on the same hardware!
Can you speculate on how this came to be?
Apple's compiler and assembler were both disk based:
They were slow, but they scaled well. On a hard drive and with the
speedup of the IIgs, they were quite suitable for larger projects.
Paul Schlyter wrote:...................
I never liked Apple Pascal, and my first serious experiences
with Pascal was on Turbo Pascal 1 running on Apple II CP/M:
it was ...s.o...m.u.c.h...f.a.s.t.e.r... - on the same hardware!
Well, to be *really* picky, Paul, as you know, it wasn't the same
hardware. It ran on a Z-80 card of some kind.
I would be curious to know if it ran, as you describe, on a Microsoft
Soft80 card, or it if took the PCPI card's much faster processor and independant 64K of RAM to run faster.
John B. Matthews <nospam@nospam.com> wrote in message >news:nospam-967967.21253716072003@clmboh1-nws3.columbus.rr.com...
Logo was a delightful environment, but not the only "serious" recursive
stack machine in wide use on Apple II.
Apple's UCSD Pascal implemented a very efficient stack machine. Each
stack frame had a static and dynamic link to allow recursion from an
arbitrary nesting level.
Apple Pascal was a half-baked implementation of the language that offered >very limited system access. It was a compiled Fortran program that
inherited all of the limitations of the Fortran language, as well as those
of Pascal.
For example, a program could not have more than 3 files open at once, >system-wide.
Michael Pender wrote:those
Apple Pascal was a half-baked implementation of the language that offered >very limited system access. It was a compiled Fortran program that >inherited all of the limitations of the Fortran language, as well as
of Pascal.
No.
UCSD Pascal was a microcomputer adaptation of Wirth's ETH Zurich
portable Pascal implementation (based on P-code). In the process
of adapting it to microcomputers, the biggest problem was memory
space, so it is painfully optimized toward saving space at the clear
expense of a regular P-code.
Later, a FORTRAN implementation was done (in Pascal) which
used the same P-code interpreter as Pascal.
For example, a program could not have more than 3 files open at once, >system-wide.
Pascal certainly has many limitations as a system programming
language (many of which were conscious tradeoffs made to enhance
its educational value, in the eyes of its creator). Limitations like the number of simultaneously open files are not language limitations,
but implementation limitations--another consequence of optimizing
for very small memory (64KB) systems.
Michael J. Mahon <mjmahon@aol.com> wrote in message news:20030724183549.28226.00000581@mb-m24.aol.com...
Michael Pender wrote:
Apple Pascal was a half-baked implementation of the language that offered >>>very limited system access. It was a compiled Fortran program that >>>inherited all of the limitations of the Fortran language, as well as
those of Pascal.
No.
UCSD Pascal was a microcomputer adaptation of Wirth's ETH Zurich
portable Pascal implementation (based on P-code). In the process
of adapting it to microcomputers, the biggest problem was memory
space, so it is painfully optimized toward saving space at the clear
expense of a regular P-code.
Later, a FORTRAN implementation was done (in Pascal) which
used the same P-code interpreter as Pascal.
For example, a program could not have more than 3 files open at once, >>>system-wide.
Pascal certainly has many limitations as a system programming
language (many of which were conscious tradeoffs made to enhance
its educational value, in the eyes of its creator). Limitations like the
number of simultaneously open files are not language limitations,
but implementation limitations--another consequence of optimizing
for very small memory (64KB) systems.
As I said, Apple Pascal was a half-baked implementation that only allowed three files open at the same time. In general, Pascal was a relatively powerful programming language 10 years ago. However, Apple's limited implementation left a *lot* to be desired, even for its day.
For example, I mentioned that AP only allowed three "files" to be open at
the same time.
- one "file" was needed to gather keyboard input (stdin)
- a second "file" was needed to write to the monitor or printer (stdout)
- the third "file" was really the only I/O channel available to a program without sacrificing the ability to accept user input from the keyboard or to send output to the display (or printer)
Thus, a program that actually interacts with the user could not have more than one file open for reading/writing at a time without dynamically sacrificing one of the I/O streams. And if a program crashed without reconnecting either of the stdin/stdout streasm you had to reboot to regain control of the machine.
That is the standard I/O implementation of ForTran 77
-- which leads me to believe (but does not prove) that Apple Pascal
was written in Fortran,
whether or not Apple had a commercial ForTran product in the box at that point in time.
I stand by my previous statement that Apple Pascal was a half-baked implementation.
M. Pender replied:
I believe you are referring to the three "predeclared files": OUTPUT,
INPUT, and KEYBOARD. Pascal also permits user-declared files
up to the limits that the system will support. This implies that the limitation you describe does not exist.
Perhaps some stalwart Apple Pascal user can comment?
toThat is the standard I/O implementation of ForTran 77 -- which leads me
believe (but does not prove) that Apple Pascal was written in Fortran, >whether or not Apple had a commercial ForTran product in the box at that >point in time.
I can assure you that it is not written in FORTRAN--in fact quite the opposite: Apple FORTRAN is written in Pascal.
Apple Pascal was bootstrapped through the ETH Zurich Pascal
implementation, originally running on the CDC 6400. When UCSD
Pascal was completed, FORTRAN was implemented on top of the
same P-code interpreter, and the FORTRAN compiler also runs in
the Pascal P-code enviroment.
FORTRAN implementations which I used permitted many additional
files to be defined, though few FORTRAN programs ever used them.
I stand by my previous statement that Apple Pascal was a half-baked >implementation.
You are, of course, entitled to your opinion. ;-)
But another possibility is that it was fully-baked, but to a different specification than you would prefer.
-michael
"M. Pender" <mpender@hotmail.com> writes:stdin
Yes, Apple Pascal permitted *one* additional filestream in addition to
openand stdout.
False. I've written programs in Apple Pascal that had three disk files
simultaneously, as well as an extra serial port.
Well then, show us the code. I would like to see how you worked around the problem.
Apple Pascal was a half-baked implementation of the language that offered very limited system access.
It was a compiled Fortran program that
inherited all of the limitations of the Fortran language, as well as those
of Pascal.
"Mike Pender" <mpender@spamsucks.com> writes:
Well then, show us the code. I would like to see how you worked around the problem.
Give me a break, it was twenty years ago. I don't have the source code
any more, and even if I did, I couldn't post it because I didn't own it.
As a work for hire, it belonged to my employer.
But I didn't have to do anything special to "work around the problem", because there was no problem.
If you really want to see a program that does this, I'd be happy to write
you a new one at my standard consulting rates. It would probably take
about two hours, including installing Apple Pascal on a simulator.
If you really want to see a program that does this, I'd be happy to write
you a new one at my standard consulting rates. It would probably take
about two hours, including installing Apple Pascal on a simulator.
Eric Smith <eric-no-spam-for-me@brouhaha.com> wrote in message >news:qh8yqmhyzk.fsf@ruckus.brouhaha.com...
If you really want to see a program that does this, I'd be happy to write
you a new one at my standard consulting rates. It would probably take
about two hours, including installing Apple Pascal on a simulator.
Thanks for the offer, but if I cared that much I would just download the >Apple Pascal files from Asimov and do it myself.
Its been at least 15 years since I worked with Apple Pascal too. I expect >that a lot of problems that seemed 'unsolvable' back in those days would be >"no problem" at all now--whether due to updates (a.k.a. fixing bugs) in the >software or improvements in skill level.
By "very limited system access" I meant that a person had to "cheat" to be able to call machine code subroutines from Apple Pascal.
There were ways to
'peek' and 'poke' using pointers, but at the time I couldn't find a way to call machine code subroutines by address.
Before you respond that access to machine resources wasn't a fault of Apple Pascal, remember that the other standard Apple languages of the day (integer basic, applesoft basic, etc.) all provided such access.
One of the reasons I thought Apple Pascal may have been coded in ForTran is because they named the two disks "FORT1" and "FORT2."
I suppose it *might* just be a coincidence.
Michael J. Mahon <mjmahon@aol.com> wrote in message >news:20030727041554.24610.00000499@mb-m28.aol.com...
Mike Pender wrote:
One of the reasons I thought Apple Pascal may have been coded in ForTran >is
because they named the two disks "FORT1" and "FORT2."
No, those disks are the FORTRAN compiler. The Pascal compiler and
system are on "APPLE0", "APPLE1", and "APPLE2".
These are the disks I pulled to get the flash screen at Asimov:
disk1: images/utility/programming/applepascal1.dsk.gz
disk 2: images/utility/programming/applepascal2.dsk.gz
If that's actually the Fortran compiler then it must be improperly labeled
on the Asimov site.
Sysop: | Gate Keeper |
---|---|
Location: | Shelby, NC |
Users: | 764 |
Nodes: | 20 (0 / 20) |
Uptime: | 41:06:25 |
Calls: | 11,275 |
Calls today: | 1 |
Files: | 5,288 |
D/L today: |
82 files (10,175K bytes) |
Messages: | 521,283 |