Из Википедии, свободной энциклопедии
  (Перенаправлено из Atari Macro Assembler )
Перейти к навигации Перейти к поиску

Редактор ассемблера Atari (иногда называемый Atari Assembler / Editor ) - это система разработки на основе картриджей ПЗУ, выпущенная Atari, Inc. в 1981 году. Она используется для редактирования, сборки и отладки программ 6502 для домашнего 8-битного семейства Atari. компьютеры. Он был запрограммирован Кэтлин О'Брайен из Shepardson Microsystems , компании, написавшей Atari BASIC , и Assembler Editor разделяет многие концепции дизайна с этим языком.

Время сборки медленное, что затрудняет использование картриджа для больших программ. В руководстве Atari рекомендуется Assembler редактор в качестве инструмента для написания подпрограмм скорости до Atari BASIC , [1] , который был бы намного меньше , чем полные приложения. Ассемблер макросов Atari был предложен в качестве альтернативы с более высокой производительностью и большим количеством функций, таких как макросы, но он был дисковым, защищенным от копирования и не включал редактор или отладчик. Несмотря на рекомендацию, коммерческое программное обеспечение было написано с использованием редактора Assembler, например, игры Eastern Front (1941) , [2] Caverns of Mars , [3] Galahad and the Holy Grail , [4] иKid Grid . [5]

Исходный код к исходному Assembler редактор получил лицензию на оптимизированном Software Systems , которые отгружены EASMD на его основе.

Развитие [ править ]

Редактор ассемблера был написан Кэтлин О'Брайен из Shepardson Microsystems . Компания была нанята Atari, чтобы помочь установить Microsoft 6502 BASIC на 8 КБ ПЗУ , с чем программисты в Atari боролись. Вместо этого Билл Уилкинсон предложил разработать совершенно новую версию BASIC, которая стала Atari BASIC . [6]

Пока Atari BASIC писал, в основном Пол Лотон, муж О'Брайена, О'Брайен работал над Assembler Editor. [6] Assembler Editor был написан «вручную» путем ввода кодов в перфоленту , пропускания ленты через записывающее устройство EPROM и последующего тестирования полученного ПЗУ на Atari 800 . Картридж был закончен до Atari BASIC, и О'Брайен потратил некоторое время, работая над частями этого проекта. [6]

В рамках работы Шепардсона над Atari в операционную систему Atari был скопирован ряд общих процедур . К ним относятся процедуры с плавающей запятой , которые О'Брайен было поручено написать, хотя раньше она не работала над таким кодом. [6] Эти процедуры считались заведомо медленными, о чем часто писал Уилкинсон. [7]

Подробности [ править ]

Ассемблер Редактор двухпроходная 6502 ассемблер в 8 КБ картридже. И исходный, и объектный код могут находиться в памяти одновременно, что позволяет многократно редактировать, собирать и запускать полученный код без доступа к диску или ленточному накопителю. [8]

Редактировать [ править ]

Картридж запускается в режиме EDIT. Программист вводит строки исходного кода ассемблера в редактор, подобный Atari BASIC . Исходный текст должен начинаться с номера строки, иначе он интерпретируется как команда. Как и Atari BASIC, Assembler Editor включал команду, которая могла использоваться для объединения файлов в единый более крупный список программ. В отличие от Atari BASIC, Assembler Editor включал ряд команд для автоматического создания разнесенных номеров строк, а также перенумерации строк и их массового удаления . В редакторе также была команда, которая была очень полезна при работе с надписями. [9]ENTERFIND

Инструкции перечислены в том порядке, в котором они будут помещены в память. Начальная точка для инструкций указывается с помощью *=инструкции, поэтому, например, код, предназначенный для размещения на специальной «шестой странице», будет иметь префикс строки *= $0600. [10] Имена переменных могли быть назначены так, чтобы указывать на определенные местоположения, и это часто сочеталось с приращением *= *+1для непосредственного кодирования смещений в таблицы. [11]

Значения, следующие за инструкциями, обычно интерпретировались как «значение по этому адресу памяти», но фактическое числовое значение могло быть предоставлено как «непосредственный операнд», добавив к нему хэш, например LDA #12, который загружает в аккумулятор десятичное значение 12. Шестнадцатеричное. был обозначен знаком доллара, LDA #$12будет загружать аккумулятор с 12 шестнадцатеричным или 18 десятичным числом. Косвенная адресация поддерживалась круглыми скобками; LDA ($600)будет использовать значения в ячейках $ 600, $ 601 для создания 16-разрядного адреса, а затем загрузить в аккумулятор значение, найденное в этом месте. [12]

Ошибки сообщаются с помощью числовых кодов ошибок, всего около 50 таких кодов. [13]

Собрать [ править ]

Код можно собрать в любой момент, набрав ASMкоманду в редакторе. [14]

Редактор ассемблера широко высмеивался как самый медленный ассемблер на платформе. Во многом это произошло из-за того, что он разделил большую часть кода редактора с Atari BASIC, который также был написан Shepardson Microsystems. Atari BASIC была известна очень медленными подпрограммами, используемыми для преобразования числовых констант в коде во внутреннее представление, которое использовало подпрограммы с двоично- десятичным кодированием (BCD) в операционной системе Atari . Это означало, что все числа, даже номера строк, нужно было преобразовать в BCD. Как ни странно, это также означало, что 1E2это законный номер строки. [15]

Отладка [ править ]

В отладчик , на самом деле монитор , можно войти с помощью BUGкоманды. [16] Команда Xвозвращается в режим РЕДАКТИРОВАНИЯ. [17] Отладчик позволяет просматривать и изменять регистры и ячейки памяти, отслеживать код, выполнять пошаговое выполнение и дизассемблирование . [18]

Пример кода [ править ]

Ниже приведен код 6502 для Hello World! написано для редактора ассемблера:

10  ; HELLO.ASM 20  ; --------- 30  ; 40  ; ЭТА ПРОГРАММА АССАМБЛЕИ ATARI 50  ; ПЕЧАТИТ "ПРИВЕТ МИР" 60  ; СООБЩЕНИЕ НА ЭКРАН 70  ; 0100  ; CIO EQUATES 0110  ; =========== 0120  * =  $ 0340  ; НАЧАЛО IOCB 0130  IOCB 0140  ; 0150  ICHID  * =  * + 1  ; ОБРАБОТКА УСТРОЙСТВА 0160  ICDNO  * =  * + 1  ; НОМЕР УСТРОЙСТВА 0170  ICCOM  * =  * + 1  ; КОМАНДА В / В0180  ICSTA  * =  * + 1  ; СОСТОЯНИЕ В / В 0190  ICBAL  * =  * + 1  ; LSB BUFFER ADDR 0200  ICBAH  * =  * + 1  ; MSB BUFFER ADDR 0210  ICPTL  * =  * + 1  ; LSB PUT ROUTINE 0220  ICPTH  * =  * + 1  ; MSB PUT ROUTINE 0230  ICBLL  * =  * + 1  ; LSB BUFFER LEN 0240  ICBLH  * =  * + 1  ; MSB BUFFER LEN 0250  ICAX1  * =  * + 1  ; AUX BYTE 10260  ICAX2  * =  * + 1  ; AUX BYTE 1 0270  ; 0280  GETREC  =  5  ; ПОЛУЧИТЬ ТЕКСТОВУЮ ЗАПИСЬ 0290  PUTREC  =  9  ; ПОЛУЧИТЬ ТЕКСТОВУЮ ЗАПИСЬ 0300  ; 0310  CIOV  =  $ E456  ; ВХОДНОЙ ВЕКТОР CIO 0320  RUNAD  =  $ 02E0  ; RUN ADDRESS 0330  EOL  =  9B $  ; КОНЕЦ СТРОКИ 0340  ; 0350  ; НАСТРОЙКА ДЛЯ CIO 0360  ; ------------- 0370  * =  0600 $ 0380  НАЧАТЬ  LDX # 0  ; IOCB 0 0390  LDA  # PUTREC  ; НУЖЕН ВЫВОД 0400  STA  ICCOM , X  ; ВЫПУСК CMD 0410  LDA  # MSG & 255  ; НИЗКИЙ БАЙТ СООБЩЕНИЯ 0420  STA  ICBAL , X  ; INTO ICBAL 0430  LDA  # MSG / 256  ; СТАРШИЙ БАЙТ 0440  STA  ICBAH , X  ; INTO ICBAH 0450  LDA  # 0  ; ДЛИНА MSG 0460  STA  ICBLH , X ; СТАРШИЙ БАЙТ 0470  LDA  # $ FF  ; 255 ДЛИНА СИМВОЛА 0480  STA  ICBLL , X  ; LOW BYTE 0490  ; 0500  ; ВЫЗОВ CIO К ПЕЧАТИ 0510  ; ----------------- 0520  JSR  CIOV  ; ВЫЗОВ CIO 0530  RTS  ; ВЫХОД В DOS 0540  ; 0550  ; НАШЕ СООБЩЕНИЕ 0560  ; ----------- 0570  СООБЩЕНИЕ  .BYTE  " ПРИВЕТ, МИР!" , EOL 0580  ; 0590  ; АДРЕС НАЧАЛЬНОГО  РАБОТЫ 0600 ; ---------------- 0610 * =  RUNAD 0620  .WORD  START 0630  .END

Эти команды можно вводить в интерактивном режиме, чтобы собрать код, войти в отладчик, запустить программу, а затем выйти из отладчика, когда она будет завершена:

КАК МОШИБКАG600Икс

Наследие [ править ]

Вскоре после того, как Шепардсон предоставил Atari Assembler Editor и Atari BASIC, его владелец Боб Шепардсон решил вернуться к работе в компании с одним человеком. [19] О'Брайен, Лотон и Уилкинсон основали свою собственную компанию Optimized Systems Software (OSS), чтобы продолжить разработку продуктов Atari. Они лицензировали исходный исходный код для BASIC, Assembler Editor и Atari DOS , которые они написали совместно. [20]

В 1981 году OSS выпустила улучшенную версию Assembler Editor, EASMD на гибком диске . EASMD был заменен на MAC / 65 в 1982 году. MAC / 65 был одним из самых быстрых сборщиков на платформе. [15] Большая часть улучшенной производительности MAC / 65 является результатом токенизации строк кода по мере их ввода - как в случае с Atari BASIC - для уменьшения объема работы, необходимой во время сборки. [8]

Ассемблер редактор по- прежнему доступны от Атари, и все большую популярность , так как цена упала до US $ 10 или $ 5 во второй половине 1980 - х годов. [21]

См. Также [ править ]

  • MAC / 65

Ссылки [ править ]

Цитаты [ править ]

  1. Руководство 1981 , стр. 63.
  2. ^ Кроуфорд, Крис (1982). Исходный код Восточного фронта (1941) . Программа обмена ATARI.
  3. Creative Atari: Dog Daze и Марсианские пещеры . 1983 г.
  4. ^ Крокфорд, Дуглас (1982). Руководство «Галахад и Святой Грааль» (PDF) . Программа обмена ATARI.
  5. Эллисон, Питер (апрель 1984 г.). «Интервью: Арти Арутюнян» . ROM (5): 8.
  6. ^ a b c d Интервью 2015 .
  7. ^ Уилкинсон, Билл (февраль 1985). «INSIGHT: Atari». Вычислить! . п. 139.
  8. ^ а б Гаага 2009 .
  9. Руководство 1981 , стр. 15.
  10. Руководство 1981 , стр. 7,31.
  11. Руководство 1981 , стр. 31.
  12. Перейти ↑ Manual 1981 , pp. 10-12.
  13. Перейти ↑ Manual 1981 , pp. 43-44.
  14. Руководство 1981 , стр. 25.
  15. ^ a b Ветмор 1983 , стр. 29.
  16. Руководство 1981 , стр. 35.
  17. Руководство 1981 , стр. 41.
  18. Перейти ↑ Manual 1981 , pp. 35-41.
  19. Перейти ↑ Wilkinson 1982 , p. vi.
  20. Перейти ↑ Wilkinson 1982 , pp. Vi-vii.
  21. Перейти ↑ Ratcliff, Matthew (20 ноября 1989 г.). «Справочник редактора Atari Assembler» .

Библиография [ править ]

  • Руководство пользователя редактора ассемблера Atari (PDF) . Atari. 1981 г.
  • Гаага, Джеймс (2 августа 2009 г.). «Личная история скорости компиляции, часть 1» . Программирование в 21 веке .
  • Кэтлин О'Брайен, Кевин Саветц (13 марта 2015 г.). Кэтлин О'Брайен, OSS (Подкаст).
  • Ветмор, Расс (ноябрь 1983 г.). «Обзор 8-битных ассемблеров Atari» . Hi-Res . Vol. 1 шт. 1.
  • Уилкинсон, Билл (1982). Внутри Atari DOS . Оптимизированное системное программное обеспечение, Inc. ISBN 0-942386-02-7. Проверено 4 апреля 2009 .

Внешние ссылки [ править ]

  • Редактор ассемблера в Atari Mania, включая руководство
  • Atari Macro Assembler информация