Comments 29
Наркомания, но забавная.
Как на 35 лет назад вернулся.
Сохраняем программу как текстовый файл noise.asm. Запускаем компилятор:
В русскоязычных источниках, транслятор ассемблера обычно просто называют ассемблером. Но в данном случае, это кросс-ассемблер.
wine sjasmplus.exe noise.asm --lst=noise.lst --sym=noise.sym
Имеет смысл уточнить что запуск кросс-ассемблера sjasmplus, работающего под windows осуществляется из под linux, используя Wine.
skoolkid.github.io/rom/index.html — список интересных адресов в прошивке, с комментариями.
В отношение Спектрума обычно используется не выражение адреса в «прошивке», а говорят про функции/подпрограммы в ROM или BASIC.
Включаем эмулятор спектрума, вставляем кассету с нашей программой
Тут тоже стоит уточнить какой версией эмулятора вы пользуетесь, там могут быть нюансы в работе с ним.
Не сочтите все сказанное мной за ворчание, это было просто уточнение и мысли в слух.
Советую обратить внимание на 8bitworkshop где вы можете работать не только с ZX Spectrum, но и другой любимой old-school восьмибитной системой, и даже сможете поработать с Verilog-ом. Причем для работы вам будет достаточно браузера.
Пишите еще;)
8bitworkshop тема для быстрого старта. Если привыкнуть к средствам отладки то вообще шикарный инструмент. Можно выгружать скомпилированные бинари и дебажить в любимых Mame, Mesen, Unreal (который UnrealSpeccy). Кстати заодно похвастаюсь, там в разделе Projects есть одна мини-игра которую кодировал не так давно, доступная для редактирования и компиляции в данной веб-среде.
Видел также поддержку для кодирования спектрумов в Visual Studio, тоже впечатлило.
зачем вайн-то? sjasm есть под линукс
Бинарь жаловался на отсутствующие библиотеки. А собирать из исходников было лень. (и это относится ко всему линуксу в целом. почему он не может сам, глядя на бинарь, скачать все, что ему нужно?)
Нет, я все понимаю, просто когда асм нужен срочно, то и wine сойдет. Работает одинаково и там и там.
За давностью лет уже деталей не помню, но меня одно время увлекало работать с изображением на экране командами сдвигов битов. Какие-то интересные узоры генерировались.
Нашел старый блокнотик, где я записал какой-то код для ZX. Посчитал - ужаснулся. Порядка 25 лет назад.
Это он в европах был стариной, а на пост-советском пространстве еще очень даже активно использовался на демосцене (такие фестивали в Спб, как Enlight 95-97, далее Chaos Constructions вполне себе "гремели" и собирали немало работ на Спекки). В других городах, думаю тоже. Игры тоже писались, хотя и мало, наверное. Закат уже начинался.
о, это же 205,86,5, load с кассеты в "биосе". я даже помню адресацию для загрузки экранной заставки - 221,33,0,64 и 17,0,27
Были такие и у меня. Скорее всего ушли в растопку. А жаль, не успел сделать цифровые копии. Часть кода восстановил с кассет.
Автозагрузочный бейсик можно сделать проще, без дополнительных программ:
10 SAVE ""
20 LOAD "" CODE
30 RANDOMIZE USR 32768
и запустить. Первой командой оно запишет собственно наш бейсик и заодно сохранит позицию выполнения программы. При загрузке, автоматом будет выполнена следующая команда после SAVE.
Время от времени меня посещают мысли о покупке спектрума в железе, но боюсь, что прежних ощущений уже не испытать.
Тогда было две главные мечты. Первая - купить цветной монитор, что-бы не бороться за время у телевизора со всей семьей (поэтому за компом ночами сидел, когда никто по телеку ничего не смотрит), вторая - прикрутить к своему Спектруму дисковод.
Современным пользователям не понять этого счастья, когда ты пишешь команду SAVE "MY_PROGRAM" и через пяток секунд она записана на диске. И никакой возни с магнитофоном, хотя и это все тогда было крутой штукой!
Дисковод у меня таки появился, правда уже к окончанию школы и на короткий срок. Помню, тогда мода была писать кастомные загрузчики, скрывая содержимое диска. Этакая защита от копирования. Один такой удалось «восстановить», и, по-моему, это была самая «серьёзная» задача, для какой пригодился дисковод :)
RANDOMIZE USR 0
Между прочим.
Я вот сейчас думаю, насколько легко понимание ассемблера и его jmp/jnz укладывались на знания бейсика, где каждая команда в отдельной строке.
И какой был первичный ступор, когда взялся за С++, а там номеров строк нет, одни скобки и какой-то main
Так это один из первых ЯП, тогда простота и скорость копиляции/интерпретации были очень важны - машины были слабые, да и программы на бейсике обычно писали не слишком сложные и большие.
Помню, еще на Спектруме писал что-то что разрослось на несколько экранов, и тут уже становилось понятно в чем главный минус классического Бейсика. Даже использование процедур и стремление придерживаться структуры (у меня была книжка, в которой необходимость этого убедительно объяснялась в т.ч. и на примере классического Бейсика) не сликом спасало - в программе становилось непросто разобраться даже ее автору.
sinclair basic умеет несколько команд в одной строке через ":"
Мы в свое время писали на z80 т.к. особо выбора не было и комьюнити было. А вам сейчас зачем? Это же онанизм на некрофильное порно, на самом то деле.
Это теперь спорт https://habr.com/ru/post/421837/
А зачем в наше время люди катаются на лошадях, или ходят под парусом, есть ведь современные машины и катера с моторами?
Примеры ассемблерного кода для ZX Spectrum