UCSD Pascal

UCSD Pascal
UCSD Pascal/p-System
UCSD2.png
Company / developer University of California, San Diego, SofTech, Pecan
OS family p-code operating systems
Working state Historic
Initial release 1978
Latest stable release Version IV
Available language(s) English
Available programming languages(s) Pascal
Supported platforms Apple II, DEC PDP-11, Zilog Z80, MOS 6502, Motorola 68000, x86, Pascal MicroEngine
Kernel type p-code virtual machine

UCSD Pascal was a Pascal programming language system that ran on the UCSD p-System, a portable, highly machine-independent operating system. UCSD Pascal was first released in 1978. It was developed at the University of California, San Diego (UCSD).

Contents

UCSD Pascal and the p-System

UCSD Pascal was developed at The University of California, San Diego Institute for Information Systems in 1978 to provide students with a common operating system that could run on any of the then available microcomputers as well as campus DEC PDP-11 minicomputers. UCSD p-System (Version IV, supplied by SofTech) was one of three operating systems (along with PC-DOS and CP/M-86) that IBM offered for its original IBM PC; but the p-System never sold very well for the IBM PC, mainly because of a lack of applications and because it was more expensive than the other choices. Previously, IBM had offered the UCSD p-System as an option for Displaywriter, an 8086-based dedicated word processing machine (not to be confused with IBM's DisplayWrite word processing software.) (The Displaywriter's native operating system had been developed completely internally and was not opened for end-user programming.)

Notable extensions to standard Pascal include separately compilable Units and a String type. Both of these extensions influenced the design of the Ada language.[1] Some intrinsics were provided to accelerate string processing (e.g. scanning in an array for a particular search pattern); other language extensions were provided to allow the UCSD p-System to be self-compiling and self-hosted.

UCSD Pascal was based on a p-code machine architecture. Its contribution to these early virtual machines was to extend p-code away from its roots as a compiler intermediate language into a full execution environment.[clarification needed] The UCSD Pascal p-Machine was optimized for the new small microcomputers with addressing restricted to 16-bit (only 64KB of memory). James Gosling cites UCSD Pascal as a key influence (along with the Smalltalk virtual machine) on the design of the Java virtual machine.

UCSD p-System achieved machine independence by defining a virtual machine, called the p-Machine (or pseudo-machine, which many users began to call the "Pascal-machine" like the OS—although UCSD documentation always used "pseudo-machine") with its own instruction set called p-code (or pseudo-code). Urs Ammann, a student of Niklaus Wirth, originally presented a p-code in his PhD thesis,[2] from which the UCSD implementation was derived, the Zurich Pascal-P implementation. The UCSD implementation changed the Zurich implementation to be "byte oriented". The UCSD p-code was optimized for execution of the Pascal programming language. Each hardware platform then only needed a p-code interpreter program written for it to port the entire p-System and all the tools to run on it. Later versions also included additional languages that compiled to the p-code base. For example, TeleSoft (also located in San Diego) offered an early Ada development environment that used p-code and was therefore able to run on a number of hardware platforms including the Motorola 68000, the System/370, and the Pascal MicroEngine.

UCSD p-System shares some concepts with the more current Java platform. Both use a virtual machine to hide operating system and hardware differences, and both use programs written to that virtual machine to provide cross-platform support. Likewise both systems allow the virtual machine to be used either as the complete operating system of the target computer or to run in a "box" under another operating system.

The UCSD Pascal compiler was distributed as part of a portable operating system, the p-System.

History

UCSD p-System began around 1974 as the idea of UCSD's Kenneth Bowles[1], who believed that the number of new computing platforms coming out at the time would make it difficult for new programming languages to gain acceptance. He based UCSD Pascal on the Pascal-P2 release of the portable compiler from Zurich. He was particularly interested in Pascal as a language to teach programming. UCSD introduced two features that were important improvements on the original Pascal: variable length strings, and "units" of independently compiled code (an idea included into the then-evolving Ada programming language). Niklaus Wirth credits the p-System, and UCSD Pascal in particular, with popularizing Pascal. It was not until the release of Turbo Pascal that UCSD's version started to slip from first place among Pascal users.

The Pascal dialect of UCSD Pascal came from the subset of Pascal implemented in Pascal-P2, which was not designed to be a full implementation of the language, but rather "the minimum subset that would self-compile", to fit its function as a bootstrap kit for Pascal compilers. UCSD added strings from BASIC, and several other implementation dependent features. Although UCSD Pascal later obtained many of the other features of the full Pascal language, the Pascal-P2 subset persisted in other dialects, notably Borland Pascal, which copied much of the UCSD dialect.

Versions

There were four versions of UCSD p-code engine, each with several revisions of the p-System and UCSD Pascal. A revision of the p-code engine (i.e., the p-Machine) meant a change to the p-code language, and therefore compiled code is not portable between different p-Machine versions. Each revision was represented with a leading Roman Numeral, while operating system revisions were enumerated as the "dot" number following the p-code Roman Numeral. For example, II.3 represented the third revision of the p-System running on the second revision of the p-Machine.

  • Version I
Original version, never officially distributed outside of the University of California, San Diego. However, the Pascal sources for both Versions I.3 and I.5 were freely exchanged between interested users. Specifically, the patch revision I.5a was known to be one of the most stable.
  • Version II
Widely distributed, available on many early microcomputers. Numerous versions included Apple II, TI 99/4a, DEC PDP-11, Zilog Z80 and MOS 6502 based machines, Motorola 68000 and the IBM PC (Version II on the PC was restricted to one 64K code segment and one 64K stack/heap data segment; Version IV removed the code segment limit but cost a lot more[quantify]).
Project members from this era include
  • Dr Kenneth L Bowles
  • Mark Allen
  • Richard Gleaves
  • Richard Kaufmann
  • Pete Lawrence
  • Joel McCormack
  • Mark Overgaard
  • Keith Shillington
  • Roger Sumner
  • John Van Zandt
  • Version III
Custom version written for Western Digital to run on their Pascal MicroEngine microcomputer. Included support for parallel processes for the first time.
  • Version IV
Commercial version, developed and sold by SofTech. Based on Version II; did not include changes from Version III. Did not sell well due to combination of their pricing structure, performance problems due to p-code interpreter, and competition with native operating systems (on top of which it often ran). After SofTech dropped the product, it was picked up by Pecan Systems, a relatively small company formed of p-System users and fans. Sales revived somewhat, due mostly to Pecan's reasonable pricing structure, but the p-System and UCSD Pascal gradually lost the market to native operating systems and compilers.

See also

Notes

  1. ^ a b Bowles, Ken (22 October 2004). "Some Insights for UCSD Pascal Generation". http://www.jacobsschool.ucsd.edu/Pascal/ppt/KenBowles.ppt. "UCSD Pascal Units probably influenced Ada Packages" 
  2. ^ Ammann, Urs (1977). On Code Generation in a Pascal Compiler, Software—Practice and Experience, Vol. 7, No. 3. pp. 391–423. 

Further reading

External links


Wikimedia Foundation. 2010.

Игры ⚽ Нужно решить контрольную?

Look at other dictionaries:

  • UCSD Pascal — Экран Редактора в UCSD p System , Apple II Разработчик Университет Сан Диего (Калифорния, США), SofTech, Pecan Первый выпуск 1978 Аппаратная платформа …   Википедия

  • UCSD Pascal — ist eine Implementierung von Pascal, die von der UCSD erstellt wurde und für verschiedene Computer verfügbar war, darunter: für den Apple II: Apple Pascal für den TI 99/4A: Texas Instruments TI 99/4A#P Code Interpreter UCSD Pascal verwendet eine… …   Deutsch Wikipedia

  • UCSD Pascal — El UCSD Pascal fue un sistema de lenguaje de programación Pascal que corría en el UCSD p System, un sistema operativo portable, altamente independiente de la máquina. El Instituto para los Sistemas de Información de la Universidad de California… …   Wikipedia Español

  • UCSD-Pascal — Apple Pascal Operating System Basisdaten Entwickler Apple Computer V …   Deutsch Wikipedia

  • Pascal (programming language) — Pascal Paradigm(s) imperative, structured Appeared in 1970 Designed by Niklaus Wirth Typing discipline static, strong, safe …   Wikipedia

  • PASCAL — Paradigmen: imperativ, strukturiert Erscheinungsjahr: 1972 Entwickler: Niklaus Wirth Dialekte: UCSD Pascal …   Deutsch Wikipedia

  • Pascal (Programmiersprache) — Pascal Paradigmen: imperativ, strukturiert Erscheinungsjahr: 1972 Entwickler: Niklaus Wirth Typisierung: stark, statisch …   Deutsch Wikipedia

  • UCSD p-System — Экран Редактора в UCSD p System (UCSD Pascal), Apple II …   Википедия

  • UCSD P-System — Экран Редактора в UCSD p System (UCSD Pascal), Apple II Экран Редактора в UCSD p System (UCSD Fortran), Apple II Экран Файлера в UCSD p System, Apple II UCSD p System  одна из первых реализаций виртуальной машины (p машины) …   Википедия

  • Pascal (langage) — Pour les articles homonymes, voir Pascal. Pascal Apparu en 1970 (évolution constante) Auteur …   Wikipédia en Français

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”