Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
UCSD Pascal
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
{{Short description|1977 programming language implementation}} {{More citations needed|date=July 2011}} {{Infobox OS | name = UCSD Pascal/p-System | logo = [[File:UCSD p-System.svg|150px]] | logo caption = Logo of Version IV | developer = [[University of California, San Diego]], [[SofTech, Inc.|SofTech]], Pecan | source_model = | kernel_type = [[p-code machine|p-code]] [[virtual machine]] | supported_platforms = [[Apple II]], [[Digital Equipment Corporation|DEC]] [[PDP-11]], [[Intel 8080]], [[Zilog Z80]], [[MOS 6502]], [[Motorola 68000]], [[x86 architecture|x86]], [[Osborne Executive]], [[Pascal MicroEngine]], [[TI 99/4A]], [[BBC Micro]] | ui = | family = [[p-code machine|p-code]] [[operating system]]s | released = {{Start date and age|1977|08}} | latest_release_version = IV.2.2 R1.1 | latest_release_date = {{Start date and age|1987|12}} | latest_test_version = | latest_test_date = | marketing_target = | programmed_in = | prog_language = [[Pascal (programming language)|Pascal]] | language = [[English language|English]] | updatemodel = | package_manager = | working_state = Historic | license = | website = }} <!--{{Infobox programming language | name = UCSD Pascal | logo = | paradigm = | year = | designer = | developer = | latest_release_version = | latest_release_date = | latest_test_version = | latest_test_date = | typing = | implementations = | dialects = | influenced_by = | influenced = [[CodeGear Delphi|Delphi]], [[Java (programming language)|Java]], [[C Sharp (programming language)|C#]] | operating_system = | license = | website = }}--> '''UCSD Pascal''' is a [[Pascal (programming language)|Pascal programming language]] system that runs on the '''UCSD p-System''', a portable, highly machine-independent [[operating system]]. UCSD Pascal was first released in 1977. It was developed at the [[University of California, San Diego]] (UCSD). ==The p-System== In 1977, the University of California, San Diego (UCSD) Institute for Information Systems developed UCSD Pascal to provide students with a common environment that could run on any of the then available [[microcomputer]]s as well as campus [[Digital Equipment Corporation|DEC]] [[PDP-11]] [[minicomputer]]s. The operating system became known as UCSD p-System. There were three operating systems that [[IBM]] offered for its original [[IBM Personal Computer|IBM PC]]. The first was UCSD p-System, with [[IBM PC DOS]] and [[CP/M-86]] as the other two.<ref name="williams198201">{{cite news | url=https://archive.org/stream/byte-magazine-1982-01/1982_01_BYTE_07-01_The_IBM_Personal_Computer#page/n37/mode/2up | title=A Closer Look at the IBM Personal Computer | work=BYTE | date=January 1982 | access-date=19 October 2013 | author=Williams, Gregg | pages=36}}</ref> Vendor [[SofTech|SofTech Microsystems]]<ref>{{Cite web|url = http://bitsavers.trailing-edge.com/pdf/softech/Softech_IV_AppleII_Mar83.pdf|title = SOFTECH MICROSYSTEMS UCSD p-SYSTEM VERSION IV FOR THE APPLE II COMPUTER}}</ref> emphasized p-System's application portability, with virtual machines for 20 CPUs as of the IBM PC's release. It predicted that users would be able to use applications they purchased on future computers running p-System;<ref name="edlinbunnell19820203">{{cite news | url=https://books.google.com/books?id=w_OhaFDePS4C&pg=PA42 | title=IBM's New Personal Computer: Taking the Measure / Part One | work=PC Magazine | date=February–March 1982 | access-date=20 October 2013 |author1=Edlin, Jim |author2=Bunnell, David | pages=42}}</ref> advertisements called it "the Universal Operating System".<ref name="byte198208">{{cite news | url=https://archive.org/stream/byte-magazine-1982-08/1982_08_BYTE_07-08_Logo#page/n193/mode/2up | title=This person develops applications for the entire market, including the Z-80, 8080, 8086/8088, 6502, LSI-11/PDP-11, 9900, and the M68000 with the best there is. | work=BYTE | date=August 1982 | access-date=19 October 2013 | author=Advertisement | pages=191, 193–195}}</ref> ''[[PC Magazine]]'' denounced UCSD p-System on the IBM PC, stating in a review of [[Context MBA]], written in the language, that it "simply does not produce good code".<ref name="zachmann198306">{{cite news | url=https://books.google.com/books?id=14Kfbrc6cbAC&pg=PA123 | title=Context MBA: Half A Step In The Right Direction | work=PC Magazine | date=June 1983 | access-date=21 October 2013 | author=Zachmann, Mark S. | pages=123}}</ref> The p-System did not sell very well for the IBM PC, 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 [[IBM Displaywriter System|IBM Displaywriter]], an [[Intel 8086|8086]]-based dedicated word processing machine. (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 ''[[Unit (Software Development)|Units]]'' and a ''String'' type. 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-hosting (compilers)|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.{{clarify|date=October 2010}} The UCSD Pascal p-Machine was optimized for the new small microcomputers with addressing restricted to 16-bit (only 64 KB of memory). [[James Gosling]] cites UCSD Pascal as a key influence (along with the [[Smalltalk]] virtual machine) on the design of the [[Java (programming language)|Java]] virtual machine.<ref>{{cite web |url = http://queue.acm.org/detail.cfm?id=1017013 |title = A Conversation with James Gosling |last = Allman |first = Eric |date = 1 July 2004 |work = [[ACM Queue]] |publisher = [[Association for Computing Machinery]] |access-date = 24 December 2012 }}</ref> 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,<ref>{{Cite journal | last1 = Ammann | first1 = U. | title = On code generation in a PASCAL compiler | doi = 10.1002/spe.4380070311 | journal = Software: Practice and Experience | volume = 7 | issue = 3 | pages = 391–423 | year = 1977 | hdl = 20.500.11850/68668 | s2cid = 2143405 | hdl-access = free }}</ref> 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, Apple Computer offered a Fortran Compiler<ref>{{Cite web|url = http://mirrors.apple2.org.za/Apple%20II%20Documentation%20Project/Software/Languages/Apple%20II%20FORTRAN/Manuals/Apple%20FORTRAN%20Language%20Reference%20Manual.pdf|title = Apple Fortran Language Reference Manual}}</ref> (written by Silicon Valley Software, Sunnyvale California) producing p-code that ran on the Apple version of the p-system. Later, TeleSoft (also located in [[San Diego]]) offered an early [[Ada (programming language)|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 later [[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]],<ref name="bowles2004" >{{cite web |quote=UCSD Pascal Units probably influenced Ada Packages |title=Some Insights for UCSD Pascal Generation |last=Bowles |first=Ken |date=22 October 2004 |url=http://www.jacobsschool.ucsd.edu/Pascal/ppt/KenBowles.ppt |access-date=13 February 2011 |archive-date=4 March 2016 |archive-url=https://web.archive.org/web/20160304192816/http://jacobsschool.ucsd.edu/Pascal/ppt/KenBowles.ppt |url-status=dead }}</ref> 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 (programming language)|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== [[File:UCSD2.png|thumb|Filer, the [[file manager]]]] 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]] ultimately [[Apple Pascal]], DEC PDP-11, [[Intel 8080]], [[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|date=October 2010}}). Project members from this era include Dr Kenneth L Bowles, [[Mark Allen (software developer)|Mark Allen]], Richard Gleaves, Richard Kaufmann, Pete Lawrence, [[Joel McCormack]], Mark Overgaard, Keith Shillington, Roger Sumner, and 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. Available for the [[TI-99/4A]] equipped with p-code card, [[Commodore PET|Commodore CBM 8096]], Sage IV, [[HP_9000#Series_200|HP 9000]], and [[BBC Micro]] with 6502 second processor.<ref name="beebug198501_pascal">{{ cite magazine | url=https://archive.org/details/beebugv0308/page/7/mode/1up | title=Acornsoft's UCSD Pascal System | magazine=Beebug | last1=Maher | first1=John | date=January 1985 | access-date=2 July 2024 | pages=7–10 }}</ref> ==Further use== The [[Corvus Systems]] computer used UCSD Pascal for all its user software. The "innovative concept" of the Constellation OS was to run Pascal (interpretively or compiled) and include all common software in the manual, so users could modify as needed. ==Notes== {{Reflist}} ==Further reading== *{{cite journal |last=Foster |first=Christine |date=September 2004 |title=UCSD Pascal and the PC Revolution |journal=@UCSD |publisher=UCSD Alumni Association |location=San Diego |volume=1 |issue=3 |url=http://ucsdmag.ucsd.edu/magazine/vol1no3/features/pascal.htm |url-status=dead |archive-url=https://web.archive.org/web/20120306235001/http://ucsdmag.ucsd.edu/magazine/vol1no3/features/pascal.htm |archive-date=2012-03-06}} * {{cite book |last=Hyde |first=Randall |date=1983 |title=p-Source (A Guide to the Apple Pascal System) |publisher=[[Datamost]] |isbn=0881900044}} * {{cite journal |last=McMillan |first=William W. |date=July 2011 |title=The Soul of the Virtual Machine |journal=[[IEEE Spectrum]] |publisher=[[IEEE]] |volume=48 |issue=7 |pages=44–49, 58–59 |issn=0018-9235 |url=https://spectrum.ieee.org/UCSD0711 |archive-url=https://archive.today/20130415002049/http://spectrum.ieee.org/UCSD0711 |url-status=dead |archive-date=April 15, 2013 |doi=10.1109/mspec.2011.5910448 |s2cid=40545952|url-access=subscription }} ==External links== *{{As of|2006|5}}, UCSD has [http://techtransfer.universityofcalifornia.edu/NCD/19327.html released portions of the p-System] written before June 1, 1979, for non-commercial use. (Note: Webpage resizes browser window.) * [http://jacobsschool.ucsd.edu/Pascal/ UCSD Pascal Reunion], Presentations and Videos from a UCSD Pascal Reunion held at UCSD on October 22, 2004 * [[PowerPoint]] and Video of "What the Heck was UCSD Pascal?," presented at the 2004 reunion [http://jacobsschool.ucsd.edu/Pascal/ppt/RichardKaufmann.ppt PPT] and [http://rpvss.ucsd.edu:8080/ramgen/jsoe/Pascal/PascalKaufmann.rm Video] * [http://miller.emu.id.au/pmiller/ucsd-psystem-os/ ucsd-psystem-os], cross-compilable source code for the UCSD p-System version II.0 * [http://ucsd-psystem-vm.sourceforge.net ucsd-psystem-vm], a portable virtual machine for UCSD p-System p-code * [http://miller.emu.id.au/pmiller/ucsd-psystem-um/ A reconstruction of the UCSD Pascal System II.0 User Manual] * [http://dose.0wnz.at/scripts/cpp/pcode_dasm.c Softech P-System disassembler] * [http://www.threedee.com/jcm/psystem/index.html UCSD P-System Museum] within the Jefferson Computer Museum * [http://pascal.hansotten.com/index.php?page=ucsd-p-system UCSD P-System] {{Webarchive|url=https://web.archive.org/web/20140506233347/http://pascal.hansotten.com/index.php?page=ucsd-p-system |date=2014-05-06 }} at Pascal for Small Machines {{Pascal programming language family}} {{Authority control}} [[Category:Pascal (programming language) compilers]] [[Category:Discontinued operating systems]] [[Category:Operating systems]] [[Category:Virtual machines]] [[Category:X86 operating systems]]
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)
Pages transcluded onto the current version of this page
(
help
)
:
Template:As of
(
edit
)
Template:Authority control
(
edit
)
Template:Cite book
(
edit
)
Template:Cite journal
(
edit
)
Template:Cite magazine
(
edit
)
Template:Cite news
(
edit
)
Template:Cite web
(
edit
)
Template:Clarify
(
edit
)
Template:Infobox OS
(
edit
)
Template:More citations needed
(
edit
)
Template:Pascal programming language family
(
edit
)
Template:Quantify
(
edit
)
Template:Reflist
(
edit
)
Template:Short description
(
edit
)
Template:Webarchive
(
edit
)