Действие! (язык программирования)
![]() Полноэкранный редактор | |
Оригинальный автор(ы) | Клинтон Паркер |
---|---|
Разработчик(и) | Оптимизированное системное программное обеспечение |
Первоначальный выпуск | август 1983 года |
Финальный выпуск | v3.6
/ 4 ноября 1983 г |
Платформа | 8-битные компьютеры Atari |
Размер | Картридж 16K с переключением банков |
Действие! — процедурный язык программирования и интегрированная среда разработки , написанный Клинтоном Паркером для 8-битных компьютеров Atari . Язык, похожий на ALGOL , компилируется в высокопроизводительный код для MOS Technology 6502 компьютеров Atari. Действие! распространялся на картридже ПЗУ компанией Optimized Systems Software, начиная с 1983 года. Это был один из первых с переключением банков «Суперкартриджей» объемом 16 КБ . Библиотека времени выполнения хранится в картридже; для создания автономного приложения требуется Action! Набор инструментов , который продавался OSS отдельно.
Паркер, работая с Генри Бейкером , ранее разработал Micro-SPL, язык системного программирования для Xerox Alto . Действие! По сути, это порт концепций Micro-SPL для Atari с изменениями для поддержки процессора 6502 и добавлением встроенного полноэкранного редактора и отладчика.
Действие! использовался для разработки как минимум двух коммерческих продуктов — пакета повышения производительности HomePak и клиентской программы Games Computers Play , а также множества программ для журналов ANALOG Computing и Antic . Редактор вдохновил на создание PaperClip текстового процессора . Язык не портировался на другие платформы.
Исходный код Action! на языке ассемблера. был предоставлен под лицензией GNU General Public License в 2015 году. автором [1]
Среда разработки
[ редактировать ]Действие! является одним из ранних примеров формата OSS SuperCartridge. Хотя картриджи ПЗУ для Atari могли поддерживать 16 КБ, [2] OSS выбрала 16 КБ с переключением банков, организованных в виде четырех блоков по 4 КБ, сопоставленных с 8 КБ адресного пространства . Нижние 4 КБ не изменились, и система могла переключаться между остальными тремя блоками, изменяя значение адреса $AFFF. [3] [4] Это позволило увеличить объем оперативной памяти , доступной для пользовательских программ. [5]
Действие! использовал эту конструкцию, разбив систему на четыре раздела: редактор, компилятор, монитор для тестирования кода и переключения между редактором и компилятором, а также библиотеку времени выполнения. [4] Библиотека времени выполнения хранится в самом картридже. Для распространения автономных приложений требуется отдельный пакет времени выполнения, который продавался OSS как Action! Инструментарий. [6]
Действие! конструкции были разработаны для четкого сопоставления с 6502 кодами операций , чтобы обеспечить высокую производительность без необходимости сложной оптимизации в однопроходном компиляторе . [7] Например, локальным переменным назначаются фиксированные адреса в памяти, а не размещаются в стеке записей активации . Это устраняет значительные накладные расходы, связанные с управлением стеком, что особенно сложно в случае 256-байтового стека 6502. Однако это исключает использование рекурсии . [6]
В отличие от интегрированных сред Atari BASIC и Atari Assembler Editor , Action! редактор не использует номера строк. Он имеет полноэкранный дисплей с прокруткой, способный отображать два окна, и включает в себя блочные операции, а также глобальный поиск и замену. [6]
Монитор служит отладчиком, позволяя запускать всю программу или отдельные функции, отображать и изменять память, а также отслеживать выполнение программы. [6]
Язык
[ редактировать ]Типы данных
[ редактировать ]Действие! имеет три основных типа данных , все из которых являются числовыми.
BYTE внутренне представлен как беззнаковое 8- битное целое число. Значения варьируются от 0 до 255.
Ключевое слово CHAR также можно использовать для объявления переменных BYTE.
BYTE age=[21] ; declare age and initialize it to the value 21 BYTE leftMargin=82 ; declare leftMargin at address 82
Входное значение CARD внутренне представляется как беззнаковое 16- битное целое число. Значения находятся в диапазоне от 0 до 65 535.
CARD population=$600 ; declare population and store it at address 1536 and 1537 CARD prevYear, curYear, nextYear ; use commas to declare multiple variables
INT eger внутренне представляется как целое число со знаком 16- битное . Значения варьируются от -32 768 до 32 767.
INT veryCold = [-10] INT profitsQ1, profitsQ2, ; declaring multiple variables can profitsQ3, profitsQ4 ; span across multiple lines
Действие! также имеет МАССИВЫ, УКАЗАТЕЛИ и определяемые пользователем ТИПЫ. не Поддержка плавающей запятой предусмотрена.
Пример определяемого пользователем TYPE:
TYPE CORD=[CARD x,y] CORD point point.x=42 point.y=23
Зарезервированные слова
[ редактировать ]— Зарезервированное слово это любой идентификатор или символ, который Action! компилятор распознает как нечто особенное. Это может быть оператор, имя типа данных, инструкция или директива компилятора.
AND FI OR UNTIL = ( ARRAY FOR POINTER WHILE <> ) BYTE FUNC PROC XOR # . CARD IF RETURN + > [ CHAR INCLUDE RSH - >= ] DEFINE INT SET * < " DO LSH STEP / <= ' ELSE MOD THEN & $ ; ELSEIF MODULE TO % ^ EXIT OD TYPE ! @
Пример кода
[ редактировать ]Ниже приведен пример кода Решета Эратосфена, написанного в Action!. Чтобы повысить производительность, он отключает графический сопроцессор ANTIC , не позволяя его механизму DMA «укравать» циклы ЦП во время вычислений.
BYTE RTCLOK=20, ; addr of sys timer SDMCTL=559 ; DMA control BYTE ARRAY FLAGS(8190) CARD COUNT,I,K,PRIME,TIME PROC SIEVE() SDMCTL=0 ; shut off Antic RTCLOK=0 ; reset the clock to zero COUNT=0 ; init count FOR I=0 TO 8190 ; and flags DO FLAGS(I)='T ; "'T" is a compiler-provided constant for True OD FOR I=0 TO 8190 ; now run the sieve DO IF FLAGS(I)='T THEN PRIME=I+I+3 K=I+PRIME WHILE K<=8190 DO FLAGS(K)='F ; "'F" is a compiler-provided constant for False K==+PRIME OD COUNT==+1 FI OD TIME=RTCLOK ; get timer reading SDMCTL=34 ; restore screen PRINTF("%E %U PRIMES IN",COUNT) PRINTF("%E %U JIFFIES",TIME) RETURN
История
[ редактировать ]Микро-СПЛ
[ редактировать ]Во время учебы в аспирантуре Паркер начал подрабатывать в Xerox PARC, занимаясь драйверами принтеров . Позже он перешел в проект Xerox Alto , где написал несколько игр для этой системы. [8] Его докторская степень была посвящена анализу естественного языка , а во время аспирантуры он работал над теорией компиляторов. [9]
Генри Бейкер и Паркер выпустили Micro-SPL в сентябре 1979 года. Micro-SPL предназначался для использования в качестве языка системного программирования на Xerox Alto компьютере рабочей станции , который обычно программировался на BCPL . Alto использовал систему микрокода , которую выдавал компилятор BCPL. Micro-SPL выводит тот же формат, что позволяет программам BCPL вызывать программы Micro-SPL. [10]
Помимо различий в синтаксисе, основное различие между Micro-SPL и BCPL и причина его существования заключались в том, что Micro-SPL создавал код, который был во много раз быстрее, чем собственный компилятор BCPL. В целом ожидалось, что программы Micro-SPL будут работать примерно в десять раз быстрее, чем BCPL, и примерно вдвое быстрее, чем хороший рукописный микрокод. Они утверждали, что по сравнению с микрокодом на его написание уйдет вдвое меньше времени, а на его отладку потребуется 10% времени. [10]
Действие!
[ редактировать ]Именно в этот период Паркер приобрел компьютер Atari для использования дома. Его разочаровало отсутствие систем разработки для него, что и послужило толчком к созданию Action! [11] Паркер подумывал о выпуске системы самостоятельно, но решил сотрудничать с Optimized Systems Software (OSS) для продаж и распространения. OSS сосредоточилась на утилитах и языках программирования, таких как BASIC XL , поэтому это было естественно для Action! [12] Продажи были достаточно высокими, чтобы Паркер несколько лет зарабатывал на жизнь за счет гонораров. [13]
На IBM PC были доступны компиляторы C , и Паркер решил, что портировать Action! на эту платформу. [14] Поскольку продажи 8-битных компьютеров Atari в Северной Америке пошли на убыль, OSS тоже пошла на убыль. В конце своей истории Action! распространение перешло от OSS к Electronic Arts , но они мало что сделали с языком, и вскоре после этого продажи прекратились. [15] В интервью 2015 года Паркер выразил удивление по поводу продолжающегося интереса к этому языку, предположив, что он стал выше, чем в конце 1980-х годов. [16]
Прием
[ редактировать ]Брайан Мориарти в обзоре для ANALOG Computing за февраль 1984 года пришел к выводу, что Action! был «одним из самых ценных инструментов разработки, когда-либо опубликованных для Atari». Он назвал руководство единственным слабым местом пакета, заявив, что оно «страдает от неуверенности, неуверенной организации и нехватки хороших, точных технических данных». [17]
Лео Лапорт сделал обзор Action в выпуске Hi-Res за май/июнь 1984 года . Он начал обзор так: «Это лучшее, что случилось с Atari с тех пор, как Нолан Бушнелл понял, что люди будут играть в пинг-понг на экране телевизора ». Лапорт похвалил редактор, отметив его возможности разделения экрана, вырезания и вставки и назвав его «полноценной системой обработки текста, которая очень отзывчива». Он сказал, что Action! работал примерно в 200 раз быстрее, чем Atari BASIC , и пришел к выводу, что «этот язык подобен точно настроенному гоночному автомобилю». [18]
В 1985 году компания BYTE высоко оценила скорость компиляции и выполнения программного обеспечения, написанного на Action! Используя в качестве теста тест Byte Sieve , десять итераций сита были выполнены за 18 секунд в Action! по сравнению с 10 секундами для сборки и 38 минутами в BASIC. Журнал также похвалил редактора языка. BYTE сообщил, что этот язык достаточно похож на C, чтобы «обычно конвертировать программы между ними», и одобрил поддержку указателей. Журнал пришел к выводу, что «Action! прост в использовании, быстр и эффективен. Он может использовать всю мощь Atari. Action! выводит программирование для Atari в совершенно новое измерение». [19]
Ян Чедвик написал в Mapping the Atari , что «Action! — это, наверное, лучший язык для Atari; он немного похож на C и Pascal, с примесью Forth. Я рекомендую его». [20]
Ссылки
[ редактировать ]Цитаты
[ редактировать ]- ^ Действие! Исходный код — страница 2 , Альфред (Chopper Commander) Опубликовано 2 февраля 2015 г., 13:38, Форумы AtariAge, Это оригинальный Action! источник, как я получил его от ICD. Он использует кросс-ассемблер ICD, который не включен в zip-архив. Его можно легко конвертировать в другие форматы.
- ^ Чедвик, Ян (1983). Карта Атари . Вычислите! . п. 103. ИСБН 9780874550047 .
- ^ «Управление RAM/ROM на компьютере XL/XE» . АтариВики .
- ^ Перейти обратно: а б Мориарти 1984 , с. 55.
- ^ «Информационный бюллетень ОСС» (PDF) . atariwiki.org . 1983 год . Проверено 24 мая 2024 г.
- ^ Перейти обратно: а б с д Мориарти 1984 .
- ^ АКЦИЯ! в Атарики (Польша)
- ^ Паркер 2015 , 6:00.
- ^ Паркер 2015 , 6:30.
- ^ Перейти обратно: а б Бейкер и Паркер 1979 , с. 1.
- ^ Паркер 2015 , 7:00.
- ^ Паркер 2015 , 28:00.
- ^ Паркер 2015 , 20:00.
- ^ Паркер 2015 , 21:30.
- ^ Паркер 2015 , 2:45.
- ^ Паркер 2015 , 1:00.
- ^ Мориарти 1984 , с. 60.
- ^ Лапорт, Лео (май – июнь 1984 г.). «Свет, камера, ДЕЙСТВИЕ!» . Привет-Разрешение . п. 72.
- ^ Шнифлок, Эд (март 1985 г.). «Действие! Си для бедняков?» . БАЙТ . п. 273 . Проверено 19 марта 2016 г.
- ^ Чедвик, Ян (1985). «Авторское предисловие к переработанному изданию» . Карта Атари . Гринсборо, Северная Каролина: Вычислите! Publications, Inc., стр. v – vi. ISBN 0-87455-004-1 .
Библиография
[ редактировать ]- Бейкер, Генри; Паркер, Клинтон (сентябрь 1979 г.). Micro-SPL (PDF) (Технический отчет). Компьютерные услуги Синапс. CiteSeerX 10.1.1.126.6877 .
- Паркер, Клинтон (31 декабря 2015 г.). «Интервью ANTIC 111, Клинтон Паркер, действие!» (подкаст). Беседовал Рэнди Киндиг.
- Мориарти, Брайан (февраль 1984 г.). «Мотор! — Новый язык для Atari!» . АНАЛОГОВЫЕ ВЫЧИСЛЕНИЯ . № 16. С. 54–61.
Внешние ссылки
[ редактировать ]- Действие! (язык программирования) на SourceForge
- Действие! Язык программирования версии 3.6 — исходный код , разработанный Optimized Systems Software на archive.org
- Действие! информация на Retrobits.com
- Действие! Архив
- Действие! справочное руководство
- Кросс-компиляторные эффекты