Handling! (programmeringsspråk)
Originalförfattare | Clinton Parker |
---|---|
Utvecklare | Optimerad systemprogramvara |
Initial release | augusti 1983 |
Slutlig utgåva | v3.6 / 4 november 1983
|
Plattform | Atari 8-bitars familj |
Storlek | 16K bankväxlad patron |
Handling! är ett processuellt programmeringsspråk och integrerad utvecklingsmiljö skrivet av Clinton Parker för Atari 8-bitarsfamiljen . Språket, som liknar ALGOL , kompilerar till högpresterande kod för Atari-datorernas MOS Technologies 6502 . Handling! distribuerades på ROM-kassetter av Optimized Systems Software med start 1983. Det var en av företagets första bankkopplade 16 kB "Super Cartridges".
Parker, som arbetade med Henry Baker , hade tidigare utvecklat Micro-SPL, ett systemprogrammeringsspråk för Xerox Alto . Handling! är till stor del en port av Micro-SPL-koncept till Atari med ändringar för att stödja 6502-processorn och tillägget av en integrerad helskärmsredigerare och debugger.
Handling! användes för att utveckla minst två kommersiella produkter – HomePak- produktivitetssviten och Games Computers Play- klientprogrammet – och många program i tidskrifterna ANALOG Computing och Antic . Redaktören inspirerade PaperClip- ordbehandlaren . Språket portades inte till andra plattformar.
Assembly språkkällkoden för Action! gjordes tillgänglig under GNU General Public License av författaren 2015.
Historia
Mikro-SPL
Under sin forskarutbildning började Parker arbeta deltid på Xerox PARC och arbetade med skrivardrivrutiner . Han flyttade senare till Xerox Alto -projektet där han skrev flera spel för systemet. Hans doktorsexamen var i naturspråksanalys och han hade arbetat med kompilatorteori under sitt examensarbete.
Henry Baker och Parker släppte Micro-SPL i september 1979. Micro-SPL var tänkt att användas som ett systemprogrammeringsspråk på Xerox Alto -arbetsstationsdatorn , som normalt programmerades i BCPL . Alto använde ett mikrokodsystem som BCPL-kompilatorn matade ut. Micro-SPL matar ut samma format, vilket gör att BCPL-program kan anropa Micro-SPL-program.
Bortsett från skillnader i syntax var den största skillnaden mellan Micro-SPL och BCPL, och anledningen till dess existens, att Micro-SPL producerade kod som var många gånger snabbare än den inhemska BCPL-kompilatorn. I allmänhet förväntades Micro-SPL-program köra ungefär tio gånger så snabbt som BCPL och ungefär hälften så snabbt som bra handskriven mikrokod. I jämförelse med mikrokod hävdade de att det skulle ta hälften så lång tid att skriva och 10 % av tiden att felsöka den.
Handling!
Det var under denna period som Parker köpte en Atari för användning hemma och var besviken över bristen på utvecklingssystem för denna plattform. Detta var drivkraften till utvecklingen av Action!
Parker övervägde först att släppa systemet själv, men bestämde sig senare för att samarbeta med Optimized Systems Software (OSS) för försäljning och distribution. OSS fokuserade på verktyg och programmeringsspråk som BASIC XL , så detta passade naturligt för Action! Försäljningen var tillräckligt stark för att Parker skulle kunna försörja sig på royalties under flera år.
IBM PC hade C- kompilatorer tillgängliga, och Parker beslutade att det inte var någon mening med att portera Action! till den plattformen. När försäljningen av Atari 8-bitars plattformar avvecklades, åtminstone i Nordamerika, avvecklades OSS också. Sent i sin historia Action! distributionen flyttade från OSS till Electronic Arts , men de gjorde lite med språket och försäljningen upphörde kort därefter.
I en intervju 2015 uttryckte Parker sin förvåning över nivån på stödet språket fortsatte att få, vilket antydde att det verkade finnas mer intresse för det då än det hade varit i slutet av 1980-talet.
Utvecklingsmiljö
Handling! var ett av de tidigare exemplen på OSS SuperCartridge-formatet. ROM-kassetter på Atari var normalt begränsade till 8 kB, vilket begränsade dess förmåga att stödja större program. SuperCartridge hade 16 kB organiserade som fyra 4 kB block, varav två var synliga när som helst. De lägre 4 kB ändrades inte, och systemet kunde bankväxla mellan de andra tre blocken genom att ändra värdet i adressen $AFFF.
Handling! använde denna design genom att dela upp systemet i fyra sektioner, redaktören, kompilatorn, en monitor för att testa kod och växla mellan redaktören och kompilatorn och runtime-biblioteket. Runtime-biblioteket lagras i själva kassetten. För att distribuera fristående applikationer krävs ett separat körtidspaket som såldes av OSS som Action! Verktygslåda .
Handling! konstruktioner designades för att mappa rent till 6502 opcodes , för att ge hög prestanda utan att behöva komplexa optimeringar i enpassskompilatorn . Till exempel tilldelas lokala variabler fasta adresser i minnet, istället för att tilldelas på stapeln av aktiveringsposter . Detta eliminerar den betydande omkostnaden förknippad med stackhantering, vilket är särskilt svårt i fallet med 6502:ans 256-byte stack. Detta utesluter dock användningen av rekursion .
Till skillnad från de integrerade Atari BASIC- och Atari Assembler Editor- miljöerna är Action! editor använder inte radnummer. Den har en helskärmsrullande display som kan visa två fönster, såväl som blockoperationer och global sökning och ersätt.
Monitorn fungerar som en debugger, vilket gör att ett helt program eller enskilda funktioner kan köras, minne kan visas och modifieras och programkörning kan spåras.
Datatyper
Handling! har tre grundläggande datatyper , som alla är numeriska.
BYTE
Internt representerat som ett osignerat 8- bitars heltal. Värden sträcker sig från 0 till 255. Nyckelordet CHAR kan också användas för att deklarera BYTE-variabler.
BYTE age=[21] ; deklarera ålder och initiera den till värdet 21 BYTE leftMargin=82 ; deklarera leftMargin på adress 82
Kardinal
Internt representerat som ett osignerat 16- bitars heltal. Värdena sträcker sig från 0 till 65 535.
KORTpopulation=$600 ; deklarera befolkning och lagra den på adress 1536 och 1537 CARD prevYear, curYear, NextYear ; använd kommatecken för att deklarera flera variabler
Heltal
Internt representerat som ett signerat 16- bitars heltal. Värdena sträcker sig från -32 768 till 32 767.
INT veryCold = [-10] INT profitsQ1, profitsQ2, ; att deklarera flera variabler kan profitsQ3, profitsQ4 ; spänner över flera linjer
Handling! har även ARRAYS, POINTERS och användardefinierade TYPER. Inget flyttalsstöd tillhandahålls.
Ett exempel på en användardefinierad TYPE:
TYP SLAD=[KORT x,y] SLAD punkt punkt.x=42 poäng.y=23
Reserverade ord
Ett reserverat ord är vilken identifierare eller symbol som helst som åtgärden! kompilatorn känner igen som något speciellt. Det kan vara en operatör, ett datatypnamn, en sats eller ett kompilatordirektiv.
OCH FI ELLER TILL = (MATNING FÖR PEKARE MEDAN <>) BYTE FUNC PROC XOR #. KORT OM RETUR + > [ CHAR INKLUDERA RSH - >= ] DEFINIERA INT SET * < " GÖR LSH STEG / <= ' ELSE MOD DÅ & $ ; ELSEIF MODUL TILL % ^ AVSLUTA OD TYP ! @
Exempelkod
Följande är exempelkod för Sieve of Eratosthenes skriven i aktion!. För att öka prestandan inaktiverar den ANTIC- grafiksamprocessorn, vilket förhindrar dess DMA- motor från att "stjäla" CPU-cykler under beräkningen.
BYTE RTCLOK=20, ; addr för sys timer SDMCTL=559 ; DMA-kontroll BYTE ARRAY FLAGS(8190) CARD COUNT,I,K,PRIME,TIME PROC SIEVE() SDMCTL=0 ; stäng av Antic RTCLOK=0 ; nollställ klockan COUNT=0 ; initantal FÖR I=0 TILL 8190 ; och flaggor DO FLAGS(I)='T ; "'T" är en kompilatortillhandahållen konstant för True OD FOR I=0 TO 8190 ; kör nu silen DO IF FLAGS(I)='T SÅ PRIME=I+I+3 K=I+PRIME MEDAN K<=8190 DO FLAGS(K)='F ; "'F" är en kompilatortillhandahållen konstant för False K==+PRIME OD COUNT==+1 FI OD TIME=RTCLOK ; få timeravläsning SDMCTL=34 ; återställningsskärm PRINTF("%E %U PRIMER IN",COUNT) PRINTF("%E %U JIFFIES",TIME) RETURN
Reception
Brian Moriarty , i en recension för ANALOG Computing i februari 1984 , drog slutsatsen att Action! var "ett av de mest värdefulla utvecklingsverktygen som någonsin publicerats för Atari." Han citerade manualen som den enda svaga punkten i paketet och hävdade att den "lider av bristande förtroende, osäker organisation och brist på bra, hård teknisk data."
Leo Laporte recenserade Action i maj/juni 1984-upplagan av Hi-Res . Han började recensionen, "Det här är det bästa som har hänt Atari sedan Nolan Bushnell kom på att folk skulle spela pingis på en TV-skärm ." Laporte berömde redaktören, noterade dess delade skärm och klipp och klistra funktioner och beskrev det som ett "komplett ordbehandlingssystem som är mycket lyhörd." Han sa att Action! sprang ungefär 200 gånger så snabbt som Atari BASIC , och drog slutsatsen att "Detta språk är som en finstämd racerbil."
BYTE 1985 berömde kompilerings- och exekveringshastigheten för programvara skriven i Action! Genom att använda deras Byte Sieve -riktmärke som ett test, slutfördes tio iterationer av sikten på 18 sekunder i Action!, jämfört med 10 sekunder för montering och 38 minuter i BASIC. Tidningen hyllade också språkets redaktör. BYTE rapporterade att språket liknade C tillräckligt för att "rutinmässigt konvertera program mellan de två", och godkände dess pekarstöd. Tidningen drog slutsatsen att "Action! är lätt att använda, snabbt och effektivt. Det kan utnyttja Ataris fulla kraft. Action! sätter programmering för Atari i en helt ny dimension."
Ian Chadwick skrev i Mapping the Atari att "Action! är förmodligen det bästa språket hittills för Atari; det är lite som C och Pascal, med ett streck framåt. Jag rekommenderar det."
Se även
- PaperClip , Atari 8-bitars ordbehandlare från en annan författare och företag, baserat på Action! redaktör
Citat
Bibliografi
- Baker, Henry; Parker, Clinton (september 1979). Micro-SPL (PDF) (Teknisk rapport). Synapse datortjänster. CiteSeerX 10.1.1.126.6877 .
- Parker, Clinton (31 december 2015). "ANTISK Intervju 111, Clinton Parker, Action!" (podcast). Intervjuad av Randy Kindig.
- Moriarty, Brian (februari 1984). "Action! - Ett nytt språk för Atari!" . ANALOG datoranvändning . Nr 16. s. 54–61.
externa länkar
- Handling! (programmeringsspråk) på SourceForge
- Handling! Programmeringsspråk version 3.6 - Källkod , av Optimized Systems Software på archive.org
- Handling! info på Retrobits.com
- ÅTGÄRDEN! Arkiv
- Handling! språkreferens
- Effectus korskompilator