Мне очень захотелось снова попрактиковаться в программировании на BASIC, ностальгии ради. Последний раз я программировал на своем VIC 20 в 1984 году. Насколько я помню, это было легко и весело. И вот, спустя примерно 40 лет, я не могу поверить, что делал это в возрасте 11 лет.

Экран запуска CBM BASIC на VIC 20. Автор изображения: Джесси Карьялайнен.

Управление VIC 20 не такое, как было прежде. Технологии настолько ушли вперед за эти четыре десятилетия, что мне пришлось прибегнуть к Google, Reddit и YouTube, просто чтобы выяснить, куда подключать кабель питания. Взгляните на него. А теперь сравните его с кабелем Video-Out. Как вы думаете, какой из них какой?

Кабель для видео или кабель питания? Автор изображения: Джесси Карьялайнен.

Ответ: тот, что справа, — это для питания; кабель Video-Out — слева. Я был в шаге от того, чтобы воткнуть кабель питания в гнездо Video-Out. Не знаю, сгорел бы компьютер от этого или нет. К счастью, я заметил, что питание подключается сбоку. Они невероятно похожи.

Порты входа на VIC 20. Автор изображения: Джесси Карьялайнен.
Гнездо для подключения питания выглядит непривычно. Автор изображения: Джесси Карьялайнен.

Хорошая новость была в том, что красный индикатор питания загорелся, когда я нажал кнопку включения. Затем я воткнул кабель Video-Out в правильный разъем и подключил противоположный его конец (коаксиальный кабель) к телевизору. Это было легко. 

Дальше мне пришлось сделать то, что мы все делали в аналоговую эпоху — выбрать канал и пройти бесконечную процедуру его настройки, чтобы найти сигнал от компьютера на телевизоре.

Для тех, кто не застал то время, поясню: на заре эпохи домашних компьютеров не было красно-желто-белых RCA-кабелей. Чтобы найти сигнал компьютера, требовалось крутить колесико настройки вверх в поисках картинки.

Настройка VIC 20 с помощью колесика — сущая мука. Автор изображения: Джесси Карьялайнен.

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

В конце концов… вуаля! Наконец-то все запустилось. Добро пожаловать обратно в 1981–1984 годы.

На экране компьютера видим надпись:

***** CBM BASIC V2 *****

3583 BYTES FREE

READY.

«CBM» означает «Commodore Business Machines». Возможно, это дань уважения IBM?

Добро пожаловать в мир VIC 20. Автор изображения: Джесси Карьялайнен.

И тут я в полной мере осознаю аскетичность домашних компьютеров начала 1980-х. Нет заставки. Нет рабочего стола. Нет кнопки «Пуск». Нет значков. Нет программ. Нет ничего. Цифровой эквивалент чистого листа бумаги.

Делайте с этим что хотите. Добро пожаловать в мир программирования на BASIC.

Пробуем программировать на BASIC

На моем столе лежит несколько книг о VIC 20 — от руководств пользователя до введений в BASIC. Я беру «Знакомство с вашим VIC 20» Тима Хартнелла. Книга была опубликована в Великобритании в 1982 году, и на моем экземпляре есть три ценника-стикера. Они могут рассказать интересную историю. Верхний, оригинальный стикер оценивает книгу в 116 шведских крон (даже по курсу 2025 года 116 крон — это примерно 11 долларов; но то было четыре десятилетия назад). Второй стикер — распродажный, со сниженной ценой до 75 крон. На третьем стикере написано: «10 крон».

В любом случае, самое первое упражнение в книге состоит всего из четырех строк кода. Идеально.

10 PRINT «NUMBER GENERATOR»

20 J=INTC10#RNDC1)2+1

30 PRINTJ:» » ;

40 GOT020

Первое, что я замечаю — это какими пружинистыми оказались клавиши на VIC 20. Ничего общего с пишущей машинкой — никакого сопротивления или тугого хода. Клавиши отскакивают вверх с такой упругостью, что меня это застает врасплох.

Во-вторых, звук «клац-клац» клавиатуры во время набора невероятно приятен. Это настоящий тактильный опыт с неэмулированным звуком, прямо как в начале 1980-х. Говорят, люди запрограммированы на звуки и запахи; они могут переносить нас сквозь время. И это, друзья, происходит прямо сейчас.

Я ввожу код, тщательно нажимая (RETURN) после каждой строки. Во время печати меня поражает, что все пишется в верхнем регистре. На VIC 20 нет строчных букв, по крайней мере, насколько я могу судить.

Код, который я пишу, — это генератор случайных чисел, выполненный всего четырьмя строками. Закончив, я ввожу первую из двух команд BASIC, которые остались у меня в памяти на протяжение всех этих лет — RUN.

Экран заполняется постоянно меняющимися случайными числами. И тут возникает проблема: как остановить программу после запуска?

Я лихорадочно листаю руководства и ищу ответ в интернете. Оказывается, нужно нажать кнопку (RUN STOP) в левой части клавиатуры. Поток чисел останавливается, и я вижу знакомое приглашение: READY.

Наберите RUN, чтобы запустить программу. Автор изображения: Джесси Карьялайнен.

Но что теперь? Это все, что я помню из BASIC. Я понятия не имею, как вернуть свой код или как очистить экран.

Я печатаю NEW (сам не знаю, почему). Ничего не происходит. Печатаю RUN, ничего не происходит. Пробую CLR, ничего не происходит. Я понимаю, что не имею ни малейшего понятия, как вернуть свой исходный код. Он что, удалился вообще?

Я ищу ответ в интернете и узнаю, что NEW очищает память. Значит, нужно попробовать что-то новое. Попробуем другую программу. На этот раз — генератор случайных чисел. Я запускаю его и останавливаю.

Команды BASIC на VIC 20. Автор изображения: Джесси Карьялайнен.

Мои знания BASIC медленно начинают извлекаться из запасников глубокой памяти. PRINT, GOTO, GOSUB, POKE и такие комбинации, как IF/THEN, снова обретают смысл — впервые за 40 лет. Я наконец-то понимаю, как вернуть код (с помощью команды LIST), а руководство напоминает мне, что (SHIFT)+(CLR HOME) очищает экран.

Я попробовал LOAD, и получил классический ответ: PRESS PLAY ON TAPE.

Если отступить на шаг и взглянуть на интерфейс BASIC на VIC 20, понимаешь, что весь этот «рабочий стол» состоит из сетки в 22×23 символа (не пикселей). На фото выше видно, что…

ཆ PRINT»NUMBER GENERA’

… заполняет всю ширину экрана. Это 506 символов для всего видимого рабочего пространства. Хорошее напоминание о том, какими были компьютеры до появления Apple Macintosh и Windows 95.

Удивительная особенность VIC 20 заключается в том, что на нем используются только прописные буквы. Любопытно, что поддержки строчных букв нет, хотя на клавиатуре предусмотрено бесчисленное множество «графических символов».

Графические символы вместо строчных букв. Автор изображения: Джесси Карьялайнен.

Они воспроизводятся с помощью клавиши (SHIFT) для левого символа на клавише или клавиши Commodore (прозванной пользователями «куриными губками») для символа справа. Интересный факт: вы можете напечатать символ ♥ как текстовый знак, а не как изображение.

Простая анимация на BASIC на VIC 20. Автор изображения: Джесси Карьялайнен.

Эти графические символы начинают обретать смысл, когда я добираюсь до раздела об анимации в своей книге по программированию. Сейчас преимущества BASIC становятся понятнее. Книга-введение рассказывает об использовании анимации, цвета и звука.

Веселье продолжается

Признаю, что в самом начале навык программирования на BASIC казался моему 50-летнему мозгу совершенно недоступным. КАК это могло быть интересно в 11 лет, удивлялся я. Вводная часть одной из книг описывает VIC 20 как «компьютер в роли интеллектуальной пишущей машинки».

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

Подключить все, включить и увидеть лишь мигающий курсор на пустом экране — это был шок. Мой мозг сразу спросил: что с этой штукой вообще МОЖНО делать?

Оказалось, что гораздо проще следовать инструкциям в руководствах и начинать писать код, чем просто сесть и пытаться понять, как работает компьютер. Это было не очень-то интересно. Интересно было вводить код, смотреть, что получится, и затем — вот оно! — наблюдать, что происходит, когда начинаешь этот код изменять. В этом смысле, в отличие от Commodore 64, VIC 20 действительно стал отличным введением в науку программирования и компьютеры. И было даже хорошо, когда наши родители ничего в этом не понимали.

Для любознательных и креативных детей погружение в программирование на BASIC было одновременно связано со сложностями и радостями. Когда у тебя был компьютер, тебе не хотелось покупать игры и дорогие периферийные устройстве. Тебе хотелось разобраться, что с его помощью можно сделать.

Руководства для VIC 20. Автор изображения: Джесси Карьялайнен.

И снова напомню: в 1984 году это была самая передовая технология, доступная обычным людям. Сам факт, что ты мог что-то делать на телевизоре, был поразительным и захватывающим.

BASIC в 2020-х

В качестве последнего эксперимента я решил познакомить свою 10-летнюю дочь с VIC 20 и посмотреть, что она об этом подумает. Учитывая, что папа с его CD, пластинками и старыми гаджетами в ее глазах — полный отстой, я был удивлен, что она проявила к этому больше интереса, чем когда я учил ее переворачивать виниловую пластинку.

«Как насчет того, чтобы немного попрограммировать?», — предложил я ей.

«Хорошо, папа. Ты же знаешь, мы занимаемся программированием в школе», — ответила она.

Я знал, что они работают со Scratch на школьных iPad’ах. Для нее BASIC должен был стать большим разочарованием, ведь здесь не будет графического интерфейса или мультяшных котов. Я решил добавить немного юмора.

«Давай посмотрим, будет ли это так же забавно, как для этой семьи из 1980-х на фото», — предложил я, показывая ей обложку руководства по BASIC для VIC 20.

VIC 20: веселье для всей семьи. Автор изображения: Джесси Карьялайнен.

К моему удивлению, она спросила: «Можно я напечатаю?» Ей было интересно попробовать эту забавную на вид машинку. Я дал ей ввести код генератора чисел. Мне постоянно приходилось напоминать ей о важности нажатия кнопки (RETURN) после каждой строки кода — и каждый раз, когда она набирала RUN.

READY. Автор изображения: Джесси Карьялайнен.

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

Барт Симпсон был бы в восторге. Автор изображения: Джесси Карьялайнен.

Мою дочь сбило с толку слово «телевизор». 

«Я думала, ты сказал, что это телевизор, папа». 

Мне пришлось объяснять, что телевизор — это телевизор, а VIC 20 — это компьютер.

«Значит, на телевизоре можно что-то смотреть?» — спросила она.

Я кивнул.

«Тогда давай посмотрим что-нибудь на нем», — предложила она.

Это была логичная реакция. С точки зрения поколения 2020-х, по телевизору можно что-то смотреть.

«Сейчас это уже не совсем так работает», — сказал я. В последний раз бесплатное эфирное телевидение, наверное, отключили более десяти лет назад.

Код программирования на BASIC. Автор изображения: Джесси Карьялайнен.

Затем мы ввели немного более сложную программу. На этот раз — «Приниматель решений». При запуске нужно было мысленно задать вопрос, а программа выдавала ответ ДА, НЕТ или ВОЗМОЖНО. 

Признаюсь, я решил ввести эту программу сам — не думал, что у дочери хватит концентрации, чтобы следить за мной. Но она решила остаться и понаблюдать.

Затем я попросил ее набрать RUN + (RETURN).

«У нас ошибка, папа», — сказала она.

«Не просто ошибка, — сказал я, — у нас ОШИБКА СИНТАКСИСА». Это словосочетание не вызвало у нее ностальгии.

Мы исправили ошибку и сыграли несколько раундов.

Домашние компьютеры

В целом у меня сложилось впечатление, что дочери на самом деле было довольно интересно. Я понимаю, что, если бы она жила не в мире iPad, YouTube, Netflix и смартфонов, она, вероятно, была бы так же увлечена VIC 20, как и я в ее возрасте. Оказывается, семейная фотография на обложке руководства не была преувеличением.

Запуск старого компьютера также напомнил мне, насколько мощным эволюционным шагом в начале 1980-х были VIC 20 и BASIC. С каждым годом компьютеры становились лучше, мощнее и интереснее. И я следил за этим процессом с самого начала. За несколько лет программирования на BASIC на VIC, а позже на C64, я научился писать код, управлять компьютерами и заставлять их что-то делать. 

Теперь я вижу, что первый компьютер гораздо сильнее фокусировался на программировании — потому что на нем действительно больше почти ничего и нельзя было сделать. Была возможность сохранения на ленту, но оперативная память все равно оставалась маленькой. Тем не менее, было интересно пытаться понять, как создавать изображения, анимацию и простые игры на этом компьютере.

В этом плане C64 был в тысячу раз лучше и увлекательнее. Но именно VIC заложил основы BASIC. Через несколько лет BASIC стали преподавать в школе, и знания, полученные во время практики на моем первом домашнем компьютере, скромном VIC 20, определенно мне помогли. Но к тому времени, как я получил работу, он уже устарел. 

Читайте также:

Читайте нас в Telegram, VK и Дзен


Перевод статьи Retro Tech Show: [1984] I decided to try BASIC programming on the VIC 20 for the first time in 40 years

Предыдущая статьяПрекратите копировать логику сборки — используйте Gradle Convention Plugins