Русский
Русский
English
Статистика
Реклама

Altair 8800

Пишем программу для компьютера ALTAIR 8800 1975г выпуска

07.02.2021 16:04:25 | Автор: admin

Привет, Хабр.

В истории вычислительной техники существуют определенные события, повлиявшие на ход истории. Одним из таких было появление первого массового персонального компьютера.

В те годы компьютеры использовались лишь учеными и инженерами на больших предприятиях. И тут появляется компьютер, купить который может любой желающий. Altair 8800 содержал процессор 8080, 256 байт памяти в первой версии, и имел цену ниже 1000$ - это был первый успешно продаваемый персональный компьютер. Это был тот самый компьютер, для которого Билл Гейтс и Пол Аллен разрабатывали язык BASIC, компьютер благодаря которому сотни и тысячи увлеченных студентов и школьников пришли в мир программирования.

Разумеется, дешевизна имела свою цену - первая версия ALTAIR не имела ни клавиатуры, ни экрана, только панель тумблеров, как на фото. Стало интересно разобраться, как же написать и запустить программу на таком ПК. Для тех, кто хочет узнать как это работает, продолжение под катом.

Код

Первым доступным языком был лишь Ассемблер. ALTAIR мог иметь до 64 КБайт памяти, и процессор 8080, работающий с тактовой частотой 2 МГц.

Чтобы лучше понять как это работает, я написал несложную программу, вычисляющую сумму чисел от 1 до 5:

; Code segment:        ORG    0o       ; Set Program Counter to address 0START:  LDA    I        MOV    B,A      ; RegB => I (1..N)        LDA    STEP        MOV    C,A      ; RegC => STEP (always 1)        LDA    SUM        MOV    D,A      ; RegD => SUM (result)LOOP:     MOV    A,D      ; Move value to Accumulator from Register D (SUM)          ADD    B        ; Add value in Register B to value in Accumulator          MOV    D,A      ; Save result back to D     I          MOV    A,B      ; Mov B to A and decrement it          SUB    C          JZ     PEND     ; If A is zero, the calculation is complete          MOV    B,A      ; If not, continue          JMP    LOOP     PEND:   MOV A,D         ; Save result in SUM value        STA SUMPWAIT:  JMP PWAIT       ; Nothing to do, infinite loop; Data segment:        ORG    200o     ; Set Program Counter to address 200I:      DB     5o       ; Data Byte at address 200 = 5STEP:   DB     1o       ; Data Byte at address 201 = 8 (10 octal)SUM:    DB     0o       ; Data Byte at address 202 = 0        END             ; End

Как можно видеть, я создал в памяти 3 переменные, I, STEP и SUM, которые используются для организации цикла от 1 до 5 с шагом 1. Далее эти значения загружаются в регистры B, C и D, с которыми и производятся арифметические операции. Команда JZ (Jump if Zero) завершает цикл, когда значение регистра А становится равным нулю. Последним шагом мы записываем результат обратно в ячейку памяти с именем SUM. Кстати, для ячеек памяти (data segment) мы указываем адрес первой ячейки, который в нашем случае равен 200o ("o" здесь это octet, 8-ричная система счисления).

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

s = sum(range(6))

Кстати забавно, что на Хабре нет подсветки синтаксиса для ассемблера, видимо было решено что вряд ли это кому-нибудь еще пригодится. Но пойдем дальше.

Компиляция

Строго говоря, никакого компилятора по условию задачи у нас нет, перевести команды в машинные коды придется вручную. К примеру, можно найти описание команды LDA:

Команда "LDA I", где I это ячейка памяти 200о = 80h, будет записана как 3A 80 00.

Следующая команда MOV B,A описывается так:

Получаем код команды 01000111b = 47h

Я все-таки сжульничал и скачал готовый компилятор, взять который можно здесь (полезно также посмотреть пример использования). Но как можно видеть, и на бумажке "скомпилировать" программу вручную вполне реально, хотя конечно, это и заняло бы куда больше времени. В итоге мы должны получить следующий бинарный код:

3a 80 00 47 3a 81 00 4f 3a 82 00 57 7a 80 57 78 91 ca 18 00 47 c3 0c 00 7a 32 82 00 c3 1c 00

Размер программы - 38 байт. Никаких префиксов MZ, переключения страниц памяти и прочего - программа просто выполняется с адреса 0. До того времени, когда чтобы запустить программу на устройстве, нужно подписать её платным серфтификатом, было еще лет 40...

Загрузка и запуск

Для тестирования программы я воспользовался бесплатным симулятором ALTAIR 8800, скачать который можно с github. Его можно запустить прямо в браузере:

Еще раз повторюсь, в первой версии ALTAIR не было ни экрана ни клавиатуры. Все что доступно пользователю - это фактически панель прямого доступа к ячейкам памяти. Например, чтобы загрузить в ячейку памяти с адресом 1 значение 10001000b, нужно выставить соответствующие тумблеры и нажать тумблер DEPOSIT, чтобы ввести следующий код, нужно снова переключить тумблеры и нажать DEPOSIT NEXT. Чтобы прочитать значение ячейки памяти, есть соответствующий тумблер EXAMINE/EXAMINE NEXT. Запустить программу можно нажатием тумблера RUN или SINGLE STEP.

Скажу по секрету, перейдя в закладку DEBUG симулятора, можно загрузить программу в виде hex-файла целиком. Однако, желающим прочувствовать весь процесс до конца пришлось бы переключить тумблеры порядка сотни раз даже для такой небольшой программы.

Результат выполнения показан на скриншоте. Запускаем программу, затем выбираем тумблерами ячейку памяти 202о = 10000010b, нажимаем тумблер EXAMINE. В ячейках D7..D0 получаем значение 00001111b = 15, что соответствует искомой сумме чисел от 1 до 5:

Заключение

Знакомство с подобными технологиями оказалось довольно любопытно. Также, посмотреть как работает ALTAIR, было интересно и с профессиональной точки зрения - понять, насколько может современный программист писать код под систему почти 50 летней давности. И надо сказать, что это оказалось ничуть не проще. Даже просто умножить 2 числа, если у процессора нет готовой команды для этого, будет поинтереснее любой задачи про гномиков, не говоря уже про написание кода "на бумажке". И чтобы написать интерпретатор BASIC в таких условиях, нужно быть весьма незаурядным программистом.

Интересно, что ALTAIR не забыт и до сих пор. Кроме онлайн-симулятора, можно собрать и "железный", на базе Ардуино:

И наконец, симулятор ALTAIR входит в пакет simh, доступный для Linux, с помощью которого может быть удобно запускать программу по шагам в консоли и просматривать содержимое ячеек памяти:

В общем, желающие могут поэкспериментировать самостоятельно.

Как обычно, всем удачных экспериментов.

Подробнее..

Altair 8800 короткий рассказ о великом компьютере

11.04.2021 14:15:43 | Автор: admin

Мир компьютерных технологий велик и многообразен. За 60 с лишним лет, прошедших с появления первых монструозных ЭВМ, произошло много больших и маленьких открытий. Компьютеры переселились из машзалов научных институтов сначала в офисы крупных компаний, а затем на письменные столы обыкновенных пользователей.

Сегодня мы поговорим о по-настоящему знаковой машине, Altair 8800, и о ее создателе. Этот компьютер смог доказать всему миру: за устройствами на микропроцессорах будущее.

В сравнении со своим предшественником, первым микрочиповым компьютером Micral, Altair оказался чрезвычайно успешным на рынке продуктом. Его создатель, Эд Робертс, предполагал, что ему удастся продать всего пару-тройку сотен машин, да и то только энтузиастам. Однако в первый же месяц было реализовано несколько тысяч компьютеров.

Продавались компьютеры в те годы через почту: компания дала рекламное объявление в Popular Electronics и прочих специальных изданиях, а покупателям предлагалось отправить по указанному адресу письмо с заказом. К покупке были доступны и полностью собранные юниты, и наборы для сборки.

Altair 8800 по праву считается первой искрой, из которой разгорелся пожар микрокомпьютерной революции. Компьютерная шина, разработанная для Altair, де-факто задала стандарт целой отрасли. А Altair BASIC, первый язык программирования для этой машины, был разработан небезызвестной компанией Micro-Soft (тогда ее название еще писалось через дефис).

Появление MITS

В 1969 году молодой и амбициозный инженер Генри Эдвард Робертс (он родился в 1942 году) работал в специализированной лаборатории ВВС в Нью-Мексико. Вместе с тремя своими коллегами он решил применить знания в области электроники для организации производства небольших наборов для любителей моделей ракет.

Эд Робертс в 80-еЭд Робертс в 80-е

Друзья организовали компанию Micro Instrumentation and Telemetry Systems (MITS) по тогдашней традиции, прямо в гараже Робертса в Альбукерке. Вскоре они выпустили первую партию радиопередатчиков и наборов для сборки ракет. Продукт не снискал особого успеха на рынке, и вскоре MITS перешла на выпуск DIY-наборов для сборки калькуляторов. Этот проект оказался чуть более удачным и позволил компании перейти на более серьезные товары.

Первый продукт компании мигалка для ракетПервый продукт компании мигалка для ракетКалькуляторы MITSКалькуляторы MITS

С выходом процессора Intel 8080 в апреле 1974 года рынок микропроцессоров по-настоящему взлетел. Новый CPU мог адресовать до 64 КБ ОЗУ, и его мощностей хватало на построение полноценного компьютера. Поэтому вслед за комплектами для сборки калькуляторов Робертс принялся разрабатывать нечто более интересное. Первый компьютер на базе Intel 8080 в качестве прототипа появился на свет поздней осенью 1974 года. Робертсу удалось добиться интервью с журналом Popular Electronics (там уже знали, что MITS работает над созданием компьютера на базе Intel 8080) и таким образом прорекламировать свою разработку. Предполагалось, что интервью и обзор компьютера будут опубликованы в горячем январском номере журнала. Что касается названия, слово Altair было предложено Робертсу издательством.

Обложка журнала Popular Electronics, январь 1975 г., с изображением Altair 8800Обложка журнала Popular Electronics, январь 1975 г., с изображением Altair 8800

Altair 8800 появился на рынке в самый подходящий момент. MITS успела обзавестись достаточной клиентской базой школы, колледжи, домашние любители электроники. И все они хотели заполучить собственный компьютер. Киллер-фичей Altairов по сравнению с прочими компьютерами на базе Intel 8080 стал высокоуровневый язык BASIC: в отличие от традиционного в то время языка ассемблера, он был гораздо проще в освоении и понижал порог входа для новичков. К тому же Altair был достаточно мощным, чтобы оказаться действительно полезным. Предполагалось, что машину можно будет расширять и, соответственно, приспосабливать под решение самых разных задач.

Реклама Altair 8800Реклама Altair 8800

Первые продажи

Придя в банк за ссудой, Робертс оптимистично заявил, что за год сможет продать 800 компьютеров. А чтобы выйти в плюс, достаточно реализовать всего 200 единиц. Каково же было его удивление, когда после публикации рекламы в Popular Electronics на митс сошла целая лавина заказов. Пришлось нанять в штат дополнительных людей только для того, чтобы отвечать на звонки потенциальных покупателей. Уже к концу февраля MITS получила 1000+ заказов на Altair. Это не могло не сказаться на времени поставки: заявленных 60 дней не хватало на то, чтобы подготовить и выслать все заказы. Лишь к середине года Робертсу и его коллегам удалось наладить процесс подготовки и отправки компьютеров. В мае того же года MITS отчиталась, что ей удалось успешно поставить уже 2500 штук Altair 8800. А к августу их число превысило 5000. Это не могло не сказаться и на устройстве компании: если в январе в MITS работало менее 20 человек, то к октябрю их число возросло до 90.

Линия сборки Altair 8800Линия сборки Altair 8800

Компьютер оказался крайне прибыльным, а шина расширения позволила MITS продавать дополнительную память и интерфейсные платы. В Altair использовался CPU Intel 8080A (реже 8080), работавший на частоте 2 МГц (каждая инструкция занимает 4 такта). Объем оперативной памяти составлял всего 256 байт (память 1024 слова), а плата с ней продавалась отдельно. Язык BASIC, о котором было объявлено в июле 1975 года, требовал наличия одной или двух плат памяти на 4096 слов, а также интерфейсной платы. Сам комплект Altair стоил 439 долларов. Платы памяти на 1024 слова (176 долларов) и 4096 слов (264 доллара) докупались по мере необходимости. Позднее Робертс представил также платы параллельного интерфейса (92 доллара) и 2 типа плат последовательного интерфейса: для загрузки программ с аудиокассет и для работы с телетайпом.

Altair 8800Altair 8800

Программировать на первой версии Altair было сущей пыткой: подключение клавиатуры не было предусмотрено, и инструкции вводились в машину сугубо механическим путем. Пользователь должен был переключать переключатели-рычажки на корпусе машины в положения, соответствующие инструкциям микропроцессора 8080 или коду операции в двоичном формате, а затем загружать код в память машины переключателем ввода. Этот алгоритм требовалось повторять до тех пор, пока вся программа не окажется введена в память. Сейчас сложно это представить, но в первой версии Altair единственным пользовательским интерфейсом была панель с лампочками. Собственно, на мигании лампочками функционал компьютера и заканчивался. Но продажи все росли и росли. Робертс в поте лица трудился над созданием дополнительных карт-модулей, среди которых были устройство для чтения перфолент, дополнительные платы RAM, последовательный интерфейс RS-232 для подключения к телетайпу, видеокарта и 8-дюймовый дисковод для дискет объемом до 300 КБ.

Фронтальная панель Altair 8800Фронтальная панель Altair 8800Внутренности компьютераВнутренности компьютера

Двое взволнованных мужчин

Статья об Altair чрезвычайно заинтересовала студента Гарвардского университета по имени Билл Гейтс и его хорошего друга Пола Аллена. Они связались с Робертсом и предложили ему купить их собственный интерпретатор языка BASIC. Робертса предложение заинтересовало, однако никакого интерпретатора на тот момент не было и в помине. Только после общения с Робертсом Гейтс и Аллен приступили к его написанию. В качестве тестовой платформы они использовали самодельный симулятор 8080 на миникомпьютере PDP-10. Подобная спешка была обоснована резонным предположением программистов, что пройдет еще неделя-другая, и их опередит кто-то другой. Как только интерпретатор для PDP-10 был готов, Аллен полетел в Альбукерке на презентацию. Программа летела с ним, записанная на перфоленту.

Перфолента с Altair BASICПерфолента с Altair BASIC

Первый запуск программы оказался неудачным: интерпретатор выводил сообщение Altair Basic на экран и неминуемо вылетал. Что-то было не так с бумажным носителем. Тем не менее, Робертс согласился немного подождать и дать BASICу шанс. Уже на следующий день Аллену доставили новую, протестированную ленту, и она, слава богу, запустилась без проблем.

Первая когда-либо введенная программа на BASIC выглядела так:

10 print 2 + 2

После ввода команды run она вернула правильный ответ. Робертс сразу же предложил Аллену должность директора отдела по разработке программного обеспечения (который состоял из единственного сотрудника, других разработчиков ПО у MITS еще не было). Гейтс, тогда еще не ушедший в академический отпуск ради создания собственной компании, также устроился в MITS на полставки. Лишь спустя некоторое время Гейтс и Аллен покинули MITS и основали Micro-Soft.

Теперь скажем пару слов о важности Altair для всей компьютерной промышленности. Altair 8800 вдохновил энтузиастов по всем США на создание Клуба любителей домашних компьютеров. Позднее из этой организации появилось более двух десятков компьютерных компаний, включая Apple Computer.

В 1977 году MITS была куплена Pertec Computer Corp. за $6 млн, а Робертс поступил в медицинский институт Университета Мерсера. Неизвестно, по какой причине он решил сменить сферу деятельности, но, так или иначе, компьютеры для него остались в прошлом. Надо сказать, Робертс не единственный человек, ушедший из технологического бизнеса после реализации единственного успешного проекта. Что-то подобное произошло и с небезызвестным Клайвом Синклером, этой темы мы уже касались в одной из прошлых статей.

Всю оставшуюся жизнь Робертс проработал сельским врачом в Кокране, штат Джорджия, и скончался 1 апреля 2010 года.

Видео с демонстрацией работы Altair 8800:

Основной источник

Подробнее..

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru