# UCSD Pascal

UCSD Pascal is een implementatie van de programmeertaal Pascal die draait op het UCSD p-System, een porteerbaar, machine-onafhankelijk besturingssysteem. UCSD Pascal werd voor het eerst uitgebracht in 1977. Het werd ontwikkeld aan de University of California, San Diego (UCSD).

## Het UCSD p-System

In 1977 ontwikkelde het Institute for Information Systems van de Universiteit van Californië, San Diego (UCSD) het UCSD p-System om studenten een gemeenschappelijke omgeving te bieden die kon draaien op alle toen beschikbare microcomputers en DEC PDP-11 minicomputers van de universiteit.
UCSD p-System was hardware-onafhankelijk door gebruik te maken van een virtuele machine: de p-Machine (of pseudo-machine). Veel gebruikers begonnen dit de "Pascal-machine" te noemen, hoewel de UCSD-documentatie altijd consequent de benaming "pseudo-machine" bleef gebruiken. De p-Machine had een eigen instructieset genaamd p-Code (of pseudo-code). Urs Ammann, een leerling van Niklaus Wirth, presenteerde oorspronkelijk in zijn proefschrift een p-Code, de Zürich Pascal-P-implementatie waarvan de UCSD-implementatie is afgeleid. De UCSD p-Code is geoptimaliseerd voor uitvoering van de programmeertaal Pascal. Om het volledige p-System en alle tools die erop konden draaien te porteren naar een nieuw hardwareplatform was alleen een nieuw hardwarespecifiek p-Code-interpreterprogramma nodig.
Latere versies bevatten ook extra talen die naar p-Code werden gecompileerd. Apple Computer bood bijvoorbeeld een Fortran-compiler aan die p-Code produceerde die op de Apple-versie van het p-System draaide. Later bood TeleSoft een vroege Ada-ontwikkelomgeving aan die p-Code gebruikte en daardoor op een aantal hardwareplatforms kon draaien, waaronder de Motorola 68000, de System/370 en de Pascal MicroEngine.

## Geschiedenis

Rond 1974 kwam professor Kenneth Bowles van de Universiteit van Californië, San Diego (UCSD) tot de vaststelling dat het aantal nieuwe computerplatforms dat destijds uitkwam, het voor nieuwe programmeertalen moeilijk zou maken om geaccepteerd te worden. Daarom ontwikkelde hij het UCSD p-System, een hardware-onafhankelijk besturingssysteem dat hij baseerde op de Pascal-P2-release van de Zürich Pascal-P-implementatie.
Hij was vooral geïnteresseerd in Pascal als taal om programmeerles te geven. UCSD Pascal was gebaseerd op een p-Code-machinearchitectuur. De UCSD Pascal p-Machine werd geoptimaliseerd voor de nieuwe kleine microcomputers met een adressering beperkt tot 16-bit (slechts 64 KB geheugen). UCSD Pascal introduceerde twee functies die belangrijke verbeteringen waren ten opzichte van de originele Pascal: strings met variabele lengte en "units" van onafhankelijk gecompileerde code (een idee dat ook terugkwam in de toen evoluerende Ada-programmeertaal).
Het UCSD Pascal-dialect was niet ontworpen om een volledige implementatie van de taal te zijn, maar eerder "de minimale subset die zichzelf zou kunnen compileren", net genoeg om gebruikt te kunnen worden als bootstrapomgeving voor Pascal-compilers. Later zou UCSD Pascal nog uitgebreid worden met veel andere kenmerken van de volledige Pascal-taal.
Door het succes van UCSD Pascal en de groeiende inkomsten van licenties vreesde de universiteit een hoge belanstingsaanslag van de IRS en dus werd er naar een overnemer gezocht om UCSD Pascal verder te commercialiseren. Begin 1980 werd alle technologie en een deel van de ontwikkelaars overgenomen door SofTech Microsystems.
SofTech sloot een overeenkomst met IBM om het UCSD p-System aan te bieden als een van de drie besturingssystemen voor de originele IBM PC uit 1981. De twee andere besturingssystemen waren PC-DOS en CP/M-86. SofTech benadrukte de portabiliteit van p-System-applicaties en voorspelde dat gebruikers de door hen gekochte applicaties zouden kunnen blijven gebruiken op toekomstige computers met p-System. In advertenties werd p-System aangeprezen als "het universele besturingssysteem".
Het p-System voor de IBM PC verkocht echter niet goed vanwege een gebrek aan applicaties. Een van de weinige beschikbare applicaties was het kantoorsoftwarepakket Context MBA, dat door toedoen van de p-Code-interpreter tergend langzaam werkte. Bovendien was het p-System duurder dan de alternatieven: SofTech had weliswaar stevig onderhandeld om een goede deal in de wacht te slepen, maar Microsoft die PC DOS leverde vond het belangrijker om zijn software op de PC te krijgen dan veel aan de deal te verdienen.
UCSD Pascal was lange tijd de meest gebruikte versie van Pascal. Pas bij de release van Turbo Pascal in 1983 begon de UCSD-versie onder Pascal-gebruikers van de eerste plaats te verdwijnen.
Niklaus Wirth prees het p-System, en UCSD Pascal in het bijzonder, voor het populariseren van Pascal.
James Gosling noemt UCSD Pascal als een belangrijke invloed (samen met de virtuele Smalltalk-machine) op het ontwerp van de Java Virtual Machine.

## Versies

Er waren vier versies van de UCSD p-Machine, elk met verschillende herzieningen van het p-System en UCSD Pascal. Een herziening van de p-Machine betekende een verandering in de p-Code-taal, met als gevolg dat gecompileerde code niet overdraagbaar tussen verschillende p-Machine-versies. Elke revisie werd weergegeven door een Romeins cijfer, terwijl revisies van het besturingssysteem werden aangeduid met een "punt"-nummer dat volgde op het Romeinse cijfer met de p-code. II.3 vertegenwoordigde bijvoorbeeld de derde revisie van het p-System, draaiend op de tweede revisie van de p-Machine.

### Versie I

De originele versie, die nooit officieel verspreid werd buiten de Universiteit van Californië - San Diego. De Pascal-brondcode voor zowel versie I.3 als I.5 werden echter vrij uitgewisseld tussen geïnteresseerde gebruikers. Met name de revisie I.5a stond bekend als een van de meest stabiele.

### Versie II

Dit was een wijd verspreide versie die beschikbaar was op veel vroege microcomputers, waaronder de Apple II, Intel 8080-, Zilog Z80- en MOS 6502-gebaseerde machines, Motorola 68000 en de IBM PC. Er was ook een versie voor de DEC PDP-11-minicomputer.

### Versie III

Een aangepaste versie voor Western Digital om te draaien op hun Pascal MicroEngine-microcomputer. Nieuw in deze versie was de ondersteuning voor parallelle processen.

### Versie IV

Een versie die ontwikkeld en verkocht werd door SofTech. Deze versie was gebaseerd op versie II en bevatte geen aanpassingen uit versie III. Versie IV werd een commerciële flop door een combinatie van de prijsstructuur, prestatieproblemen van de p-Code-interpreter en concurrentie met native besturingssystemen. Nadat SofTech het product had laten vallen werd het opgepikt door Pecan Systems, een relatief klein bedrijf bestaande uit p-System-gebruikers en fans. De verkoop herstelde enigszins, vooral dankzij de redelijke prijsstructuur van Pecan, maar het p-System en UCSD Pascal verloren geleidelijk de markt aan native besturingssystemen en compilers. Versie IV was beschikbaar voor de TI-99/4A uitgerust met p-codekaart, Commodore CBM 8096, Sage IV, HP 9000 en BBC Micro met een tweede 6502 processor.

## Externe link

* (en) Pascal for Small Machines - UCSD P-System. hansotten.com (28 september 2010). Gearchiveerd op 6 mei 2014.
Dit artikel of een eerdere versie ervan is een (gedeeltelijke) vertaling van het artikel UCSD Pascal op de Engelstalige Wikipedia, dat onder de licentie Creative Commons Naamsvermelding/Gelijk delen valt. Zie de bewerkingsgeschiedenis aldaar.
* 1 2 3 4 (en) Foster, Christine (september 2004). UCSD Pascal and the PC Revolution. Gearchiveerd op 6 maart 2012. UCSD Alumni 1 (3)
* ↑ (en) Ammann, U. (juni-juli 1977). On code generation in a PASCAL compiler. Software: Practice and Experience 7 (3): 391–423. DOI:10.1002/spe.4380070311.
* ↑ (en) Apple Fortran Language Reference Manual. Apple Computer (1980).
* ↑ (en) Bowles, Ken, Some Insights for UCSD Pascal Generation (22 oktober 2004). Gearchiveerd op 4 March 2016.
* ↑ (en) Williams, Gregg (january 1982). A Closer Look at the IBM Personal Computer. BYTE 7 (1): 36
* ↑ (en) Edlin, Jim, Bunnell, David (februari–maart 1982). IBM's New Personal Computer: Taking the Measure / Part One. PC Magazine 1 (1): 42
* ↑ (en) advertentie (augustus 1982). 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.. BYTE 7 (8): 191, 193–195
* ↑ (en) Zachmann, Mark S. (juni 1983). Context MBA: Half A Step In The Right Direction. PC Magazine 2 (1): 123
* ↑ (en) Hardie, Raymond (september 2004). From Zurich to La Jolla. Gearchiveerd op 6 maart 2012. UCSD Alumni 1 (3)
* ↑ (en) Allman, Eric (1 juni 2004). A Conversation with James Gosling. ACM Queue 2 (5): 24-33
* ↑ (en) UCSD Pascal, version I.5. UC San Diego.
* ↑ (en) (25 juni 1979). Apple II Now Runs Pascal. InfoWorld 1 (10): 9
* ↑ (en) Brackett, John, Oral history interview with John Brackett and Doug Ross. University of Minnesota (7 mei 2004).