Введение
KIM 1, сокращение от Keyboard Input Monitor, – небольшой одноплатный компьютер на базе 6502, разработанный и произведенный компанией MOS Technology, Inc. и представленный в 1976 году. Он имел большой успех в то время благодаря низкой цене (обусловленной недорогим микропроцессором 6502) и простоте расширения возможностей.
a single board computer
The KIM 1, short for Keyboard Input Monitor, is a small 6502 based single board computer developed and produced by MOS Technology, Inc. and launched in 1976. It was very successful in that period, due to its low price (thanks to the inexpensive 6502 microprocessor) and easy access expandability.
История
Первый процессор MOS Technology, 6501, можно было подключить к существующим материнским платам, использующим Motorola 6800, что позволяло потенциальным пользователям (то есть инженерам и любителям) очень легко запустить систему разработки, используя имеющееся оборудование. Motorola немедленно подала в суд, вынудив MOS снять 6501 с рынка. Изменение расположения выводов привело к созданию "устойчивого к судебным искам" 6502. Несмотря на полную идентичность с 6501, он имел недостаток: отсутствие машины, в которой новички могли бы быстро начать экспериментировать с процессором. Чак Пэддл, руководитель группы 650x в MOS (и бывший сотрудник команды Motorola 6800), разработал KIM 1, чтобы удовлетворить эту потребность. KIM 1 поступил в продажу в 1976 году. Хотя изначально машина предназначалась для инженеров, она быстро завоевала популярность среди любителей. Полную систему можно было собрать менее чем за 500 долларов США, купив сам компьютер всего за 245 долларов США, а затем добавив блок питания, подержанный терминал и кассетный магнитофон. Было доступно множество книг с примерами небольших программ на языке ассемблера для KIM, включая "The First Book of KIM" Джима Баттерфилда и др. Одна из демонстрационных программ превращала KIM в музыкальную шкатулку, переключая программно-управляемый выходной бит, подключенный к небольшому динамику. Канадский программист Питер Р. Дженнингс создал, вероятно, первую коммерчески продаваемую игру для микрокомпьютеров – Microchess, изначально для KIM 1. С ростом популярности системы одним из распространенных дополнений стал язык программирования Tiny BASIC. Для этого требовалось простое расширение памяти: "вся схема декодирования для первых 4 КБ реализована прямо на плате KIM. Вам нужно только добавить 4 КБ микросхем RAM и несколько буферов". Самым сложным было загрузить BASIC с кассетной ленты – это занимало 15 минут и было подвержено ошибкам. Rockwell International, наряду с Synertek, как второй производитель 6502, выпустила в 1978 году свой собственный микрокомпьютер на одной плате – AIM 65. AIM включал в себя полноразмерную клавиатуру ASCII, 20-символьный 14-сегментный буквенно-цифровой светодиодный дисплей и небольшой принтер, похожий на кассовый аппарат. В качестве стандартной прошивки для AIM предоставлялся отладочный монитор, а пользователи также могли приобрести дополнительные микросхемы ROM с ассемблером и интерпретатором Microsoft BASIC на выбор. Наконец, существовала модификация Synertek SYM 1, которую можно назвать машиной, находящейся между KIM и AIM: она имела небольшой дисплей KIM и простую мембранную клавиатуру из 29 клавиш (только шестнадцатеричные цифры и клавиши управления), но предоставляла стандартные интерфейсы расширения AIM и полноценный RS 232 (с поддержкой как уровня напряжения, так и токового цикла).
Описание
KIM 1 состоял из одной печатной платы со всеми компонентами на одной стороне. Он включал три основных интегральных схемы: процессор MCS6502 и два периферийных интерфейса/устройства памяти MCS6530. Каждый MCS6530 включал в себя маску программируемой ПЗУ объемом 1024 x 8, ОЗУ объемом 64 x 8, два 8-битных двунаправленных порта и программируемый интервальный таймер. В брошюре KIM 1 было указано "1 K BYTE RAM", но фактически объем памяти составлял 1152 байта. Память состояла из восьми статических ОЗУ 6102 (1024 x 1 бит) и двух ОЗУ объемом 64 байта в составе MCS6530. В 1970-х годах размеры памяти выражались различными способами. Производители полупроводников использовали точный размер памяти, например, 2048 x 8, и иногда указывали количество бит (16384). Мини- и мэйнфрейм-компьютеры имели различную ширину памяти (от 8 до более 36 бит), поэтому производители использовали термин "слова", например, 4K слов. В ранней рекламе любительских компьютеров использовались как "слова", так и "байты". Часто можно было встретить "4096 слов", "4K (4096) слов" и "4 K байта". Термин КБ практически не использовался или был очень редким. KIM 1 был представлен в апрельском выпуске журнала BYTE в 1976 году, а в рекламе было указано "1 K BYTE RAM" и "2048 ROM BYTES". Также в комплект входили шесть семисегментных светодиодов (подобных тем, что используются в карманных калькуляторах) и 24-клавишная клавиатура калькуляторного типа. Многие выводы ввода-вывода 6530 были подключены к двум разъемам на краю платы, где их можно было использовать в качестве последовательной системы для управления телетипом Model 33 ASR, а также устройством чтения и перфоратором бумажной ленты. Один из этих разъемов также служил разъемом питания и включал аналоговые линии, которые можно было подключить к кассетному магнитофону. Более ранние микрокомпьютерные системы, такие как MITS Altair, использовали ряд переключателей на передней панели для ввода данных. Чтобы выполнить какую-либо полезную задачу, пользователю необходимо было ввести небольшую программу, известную как "загрузчик", в машину с помощью этих переключателей – процесс, известный как загрузка. После загрузки загрузчик использовался для загрузки более крупной программы с устройства хранения, такого как устройство чтения бумажной ленты. Загрузка крошечной программы в память часто занимала более пяти минут, и одна ошибка при переключении переключателей могла привести к сбою загрузчика. Это могло привести к искажению части кода загрузчика, в этом случае программисту приходилось вводить все заново и начинать с самого начала. KIM 1 включал в себя более сложную встроенную программу Terminal Interface Monitor под названием TIM, которая "размещалась в 2048 байтах ПЗУ в двух массивах 6530 ROM/RAM/IO". Эта программа мониторинга включала возможность использования кассетного магнитофона для хранения данных, управления светодиодным дисплеем и работы с клавиатурой. Как только питание включалось, программа мониторинга запускалась, и пользователь мог немедленно начать взаимодействовать с машиной через клавиатуру. KIM 1 был одним из первых одноплатных компьютеров, которому требовался только внешний источник питания для использования в качестве автономного экспериментального компьютера. Этот факт, а также относительно низкая стоимость начала работы, сделали его весьма популярным среди любителей в конце 1970-х годов.
Видео-дисплей
Дизайнер ТВ-пишущей машинки Дон Ланкастер разработал недорогой видеодисплей для KIM 1. Эта плата расширения позволяла отображать до 4000 символов на телевизоре или мониторе. Типичная конфигурация включала 16 строк по 32 символа, только в верхнем регистре. Плата содержала всего 10 недорогих микросхем и использовала память KIM для хранения содержимого экрана. Проект TVT 6 был представлен на обложке журнала Popular Electronics в июле 1977 года. Полный комплект можно было заказать в PAiA Electronics за 34,95 доллара США. Ланкастер усовершенствовал эту конструкцию, добавив поддержку цветного изображения и простую графику, в книге "The Cheap Video Cookbook" (Дешёвый видео-кулинар).
Формат ленты
Каждый бит представлен тремя тонами длительностью 2,484 мс. Первый тон всегда 3700 Гц, средний – 3700 Гц для "0" или 2400 Гц для "1", а последний тон всегда 2400 Гц. Это обеспечивает эффективную скорость передачи данных 134,2 бит/с. Обнаружение осуществляется с помощью ФАПЧ (PLL) с использованием LM565. Формат данных на ленте следующий: 100 байт со значением 0x16 (SYN, Synchronous Idle), один байт со значением 0x2A (*), номер идентификации записи, начальный адрес (два символа для младшего байта адреса, два символа для старшего байта), конечный адрес (в том же формате), сами данные, один байт со значением 0x2F ("/" символ), двухбайтовая контрольная сумма и два байта со значением 0x04 (EOT, End Of Transmission). Каждый байт памяти сохраняется на ленте в виде двух последовательных символов ASCII; например, шестнадцатеричное значение B5 в памяти (181 десятичное) будет сохранено как два последовательных символа ASCII "B" и "5" (42 и 35 шестнадцатеричные).