The author of this web site


 


Hi, my name is Scott Moore, I work here in the Santa Clara valley, more commonly known as the "Silicon Valley".

I started work in various electronic companies around Los Angeles, but always had an eye towards working for a computer company. In those days, I was an electronics technician. I went to work for my first computer company, Micropolis, which made a (then) brand new product called a 5 1/4 inch "floppy disk" for microcomputers. I wrote my first programs there, in Z80 assembly language and Basic, and shortly thereafter began writing disk operating systems, Basic interpreters and compilers.

My involvement with Pascal started offhand. We got a new "whiz kid" programmer to work on our in house Basic, operating system and assembler, which was called M-DOS or Micropolis DOS. At that time I believed that it was inevitable that we would all be moving to 16 bit, then 32 bit processors and high level languages. At that time, the late 1970's, there was not yet many books on how to do that work for microprocessors, so I would study books meant for mainframe use. I was getting dissatisfied with Basic as a professional language, and wanted another programming language to work on, so I asked our new programmer what he thought would be the best language. He recommended Pascal.

I began to study the language, and also studied C and the Unix operating system as well. C and Unix were unknown much outside of the PDP-11 community at that time. I actually liked both languages, but went with Pascal because I believed that the language had advantages over C in terms of type security, and clarity of the language format, tokens and syntax.

The first Pascal compiler I did was built during 1979, in Z80 assembly language, and compiled it's first program almost exactly on the new year of 1980. During the years 1980 to 1985, there was not much activity in high level languages for my type of work, which remained low level drivers, embedded code and operating systems. In addition, though almost all of the 1980's, I stayed involved in hardware design. Most of my high level language work I performed for myself in Pascal.

Around 1983, as the IBM-PC was becoming popular, I worked for firms that utilized the 68000 processor and the Unix operating system (Ported to the 68000 CPU by Unisoft, who were the first company to port Unix to a microprocessor). I did my first significant systems coded in C, the first one being an assembler for a microcoded processor (a special purpose processor that uses long word widths, typically 128 bits or more). During this time, I had my first experience doing large amounts of work at the same time in both Pascal and C, and thus received a good comparison for both languages.

To be fair, I did get and evaluate a copy of Borland's Turbo Pascal. I found that it was substantially incompatible with Pascal, and the performance was much worse than my own Pascal compiler, by almost an order of magnitude (on the Z80 processor). In fact, I was used to seeing compilers that had that level of performance, since compiler code optimization was virtually unknown on 8 and 16 bit microprocessors back then. In fact, it still is. Optimization is mainly a 32 bit or better proposition now. GCC has difficulties easily generating good code for processors with less than 32 bits. The bottom line was that Turbo Pascal would not have been appropriate for my work even if it had run normal Pascal, and I didn't have much incentive to rewrite all of my code to fit the system.

During the period up to 1987, I did only occasional IBM-PC work. Although I knew the 8086 assembly language well, I considered the processor, with its segmented memory access, to be a problem to program and a fairly low powered toy compared with the 32 bit workstations I had increasing access to. To be fair, IBM-PCs before 1987 fit that description, and the 8086 was rarely used for embedded projects, my bread and butter. Ironically, I didn't do any significant work on the IBM-PC for paid work until the early 1990's, and that was a 80186 segmented real time operating system.

When I moved to the Santa Clara Valley in 1987, I decided, with the advent of the 32 bit 80386, that it was time to get "out of the weeds", and move all of my own work to an IBM-PC. It made no sense to keep buying expensive, odd equipment to program on, or worse, build my own, which I commonly did. Fry's electronics was nearby, and there was plenty of off the shelf equipment available at fractions of the cost I was paying to buy less mainstream equipment. I considered the Apple computer series, but it was far more expensive, and worse, technically closed. The actual details on the hardware was only available to special "member customers" who paid $1,000's per year to obtain that privilege from Apple. On the IBM-PC, everything was open, free, and of course, chaotic.

In retrospect, it was probably to early in the late 1980's to be doing that. There was no mainstream operating system 32 bit operating system available. My dreams of obtaining one of the first Unix ports for an 80386 were running up against the cost ($1,000's) for the Unix port, and the cost of a high end PC needed to run them. Recall this is long before Linux got started. Everyone was dreaming of a cheap Unix to run.

What was happening then is that 80386 processors were being sold as faster 16 bit systems. I once listened in on a salesman at Fry's pitching the advantages of a 80386 for users who clearly had nothing more than 16 bit DOS and Windows 2.x or lower. He talked of it having "twice the bits" (32 vs. 16). It was clear to me that the machines were being sold only on clock speed alone. Intel had decided to give the world the 32 bit mode as an extra, even if nobody was really using it. The most use I saw in those days of the 32 bit 80386 modes was to utilize it as "extended memory", i.e., bank selection for 16 bit DOS.

I still needed 32 bit code generation capability, and ISO/ANSI standard Pascal capability. In the early 1990's, there were actually a couple of compilers that fit the bill, as well as some that didn't. I settled on the SVS Pascal compiler, which I still consider a great compiler. It generated code for the DPMI mode, which as a 32 bit "adapter" that would allow 32 bit programs to run under 16 bit DOS on the 80386 CPU. Further, it would provide its own DPMI adapter if you didn't have one, and even figure that out automatically. Those old SVS compiled programs still run today, since Windows still supports DPMI mode, even as far as Vista. I still run across the occasional program that remains an SVS binary, and still runs.

In the early 1990's, I started to see the ISO/ANSI compiler makers, the good ones that generated optimized 32 bit code, die off. SVS finally closed their doors as well. Borland was starting to turn out code optimized compilers for 32 bit mode, but besides continuing to be fairly non-standard, their language was also showing a lot of reliance on type escapes and other features borrowed from C. just when I was getting used to the idea that I could buy a shrink wrapped ISO/ANSI compiler that generated good code with out doing my own compiler support work, they were vanishing. Recall this was long before the GPC project.

I decided to reawaken my own Pascal compiler, and port it to the 80386. It was mostly assembly language code for the Z80 processor, plus an assembler in Pascal, and quite a bit of support work also in Pascal. It would in fact be a lot of work, but was aided by the fact that I had previously worked on a front end for a new Pascal compiler coded entirely in Pascal, which was designed to replace the Z80 assembly language compiler.

That compiler started to come alive in 1994 as a simulated intermediate implementation (you would call this a byte code compiler), followed by an unoptimized direct to 80386 code implementation in 1995. This was originally targeted at OS/2 2.0, the first reasonably priced 32 bit native operating system for the IBM-PC, with an eye towards a crossover port to Windows NT when that OS came out. However, IBM was already showing signs of not really being serious about their creation, and I got the first native 80386 code version of the system running under Windows 95. I did try the binaries out under Windows NT as well, but Microsoft was not serious about pushing it for anyone but corporations. OS/2 2.0, a true 32 bit, reasonably priced and well designed operating system, lost out to 16 bit Windows with a 32 bit adaption layer tacked on. Sad, but I had learned the essential lesson long ago: if you are going to go down with a sinking ship, it should at least be yours.

What I did learn, yet again, was that languages and APIs are more important, and last longer, than operating systems or computers. Most of my work for the rest of the 1990s and beyond on the Pascal compiler has been on APIs and interfaces. The compiler system, which would later get the name IP Pascal, didn't get a high optimizing back end until after the year 2000, as opposed to the 2 years it took for the 1980 compiler.

In about 1997, I created this web site. Since then it has become a collection point for all things concerning the original Pascal language that Niklaus Wirth designed. I haven't included much concerning the Borland language, which they now refer to as Delphi, partially because it is still substantially different than the language Pascal (and even bears another name), and also because that language has plenty of web sites, support, and unfortunately (to me) has convinced a large group of programmers that Delphi is, in fact, the Pascal language.

Today I program in a mix of languages. Formerly, I would have said that the majority of my professional work is in C, but the demand for C++ and C# work is rising. In the last year, I have programmed extensively in Delphi and C#, which both have the distinction of being languages designed (in large part) by Anders Hejlsberg. Delphi today is a good language, and better on many issues that C, C++ or even C#. It still leans way to much on arbitrary type convertion and other C style constructs for my tastes, but I have no issues with using the language. I do find it funny that Anders Hejlsberg, having subtantially removed the type security from Borland's dialect of Pascal, went to work putting type security into the C "like" language that is C#.

Recently, I finished work on a "roundup" of extensions for the ISO 7185 language that I have termed "Pascaline". Although much of this is simply a formal statement of the existing ISO 7185 language extensions I have implemented for IP Pascal over the years, it is also a rigorous rethink of where I see my Pascal code going in the future, and how all of the extensions I have designed for Pascal work together symmetrically. The Pascaline specification will appear on this web site.

Scott Moore

February, 2009


For more information contact: Scott A. Moore samiam@moorecad.com