UCSD Pascal

UCSD Pascal var en variant av programmeringsspråket Pascal, utviklet ved Institute for Information Systems, University of California, San Diego i 1978 under ledelse av professor Kenneth Bowles. Formålet med utviklingen var å styrke undervisningen i programmering og kompilator-teknologi, og å utnytte rimelige prosessor-arkitekturer som kom på markedet på siste halvdel av 1970-tallet.
Språket hadde viktige utvidelser i forhold til standard-Pascal, inklusive datatypene Unit og String, som trolig påvirket programmeringsspråket Ada. Videre hadde UCSD Pascal et utvidet spekter av innebygde funksjoner (intrinsic functions) som bidro til å forenkle og effektivisere håndteringen av strenger og søking i tabeller.  
UCSD Pascal var hovedkomponent i operativsystemet med samme navn - The UCSD Pascal System - senere omdøpt til UCSD p-System. Operativsystemet besto av grunnleggende verktøy for software-utvikling, og var i sin helhet skrevet i Pascal. I motsetning til de fleste systemer på den tiden, var UCSD Pascal fullstendig skjermorientert. Programmer kunne kompileres direkte fra skjerm-editoren, feilmeldinger kom tilbake på riktige steder i kildekoden og effektiviserte programutviklingen enormt. 
Et viktig mål for professor Bowles var å styrke undervisningen i programmering ved å utnytte de nye og stadig rimeligere mikroprosessorbaserte systemene på markedet. Med utgangspunkt i en idé skissert av Pascal-språkets far, Niklaus Wirth noen år tidligere (i boken Algorithms + Data Structures = Programs) ble det definert en virtuell maskin, kalt en 'p-maskin' eller 'pseudo-maskin' med et tilhørende instruksjonssett, 'p-code'. P-koden var hardware-uavhengig og portabel. Med en relativt enkel p-kode oversetter for hver systemtype, kunne programmer flyttes og kjøres uendret på maskiner fra ulike leverandører og med forskjellige arkitekturer. P-kode oversetterne var 'interpreterende', de oversatte i sann tid. Mellomtrinnet med p-kode hadde en betydelig ytelsesmessig kostnad, men portabiliteten veide opp for denne kostnaden. I tillegg er p-koden typisk mer kompakt enn vanlig kode for en gitt maskinarkitektur. P-systemet trengte 48k bytes hukommelse og tilgang til en floppy-disk enhet med minst 150kB kapasitet for å fungere. 
Som den første fungerende implementasjon av en virtuell maskin, ble UCSD p-System trendsettende, og en viktig inspirasjonskilde til senere virtuelle maskiner, inklusive velkjente JVM, Java Virtual Machine. 
Operativsystemet ble først utviklet på arbeidsstasjoner av typen Terak 8510/a, basert på mikroprosessorvarianten av Digitals PDP-11 prosessor, LSI-11. Terak var en av verdens første mikroprosessorbaserte arbeidsstasjoner, og fant raskt et marked i teknologi-orienterte akademiske miljøer. I perioden 1978 til 1983 ble det laget p-kode oversettere for en rekke prosessorer og arkitekturer: Z80, Z8, 8080, 6800, 6809, 6502, 9900 og 8086/8087/8088. Det ble også utviklet Fortran og Basic kompilatorer for systemet, i tillegg til assemblere for samtlige støttede arkitekturer. Siden alle assemblere var p-kode, og dermed kunne kjøre på alle støttede systemer, ble p-systemet en populær plattform for kryss-utvikling. 
UCSD p-System ble lisensiert til og videresolgt av IBM for den opprinnelige IBM-PC, ved siden av PC-DOS og CP/M-86. IBM benyttet dessuten UCSD p-System på den mikroprosessor-baserte (Intel 8086) datamaskinen Displaywriter, som var spesiallaget for tekstbehandling. Også en rekke andre system-leverandører lisensierte systemet, inklusive Apple, som solgte det under betegnelsen 'Apple Pascal' fra 1979. San Diego selskapet SofTech Microsystems Inc. startet kommersiell distribusjon og support for UCSD p-System i 1979.  
Det ble utgitt en rekke bøker om UCSD Pascal og p-systemet. Hele systemet ble open sourcet på 2000-tallet - inklusive kode og dokumentasjon for de fleste varianter.