«Пословица звучит витиевато:
“Не восхищайтесь прошлогодним небом”.
Не возвращайся – где был рай когда-то.
И брось дурить – иди туда, где не был»

В. Высоцкий

Доброго времени суток, товарищи! Я более чем уверен, что большинство из вас знакомы с такой вещицей, как ZX Spectrum. Как много теплых воспоминаний связано с этой чёрной коробочкой, начинённой различными микросхемами!

В этом посту я поведаю о том, как использовать и настраивать эмулятор Fuse под линуксом, а также расскажу, как написать простейшую программу в машинных кодах под ZX Spectrum и запустить её в эмуляторе.

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

Elite, Exolon, Spellbound, Dizzy — если эти слова вам о чём-либо говорят, то милости прошу под кат!

image



Предисловие


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

ZX Spectrum — это такой бытовой компьютер, выпуск которого пришёлся на 1982 год. Он пользовался большой популярностью в те времена и чего мелочиться — именно с этого компьютера началась эра персональных компьютеров.

ZX Spectrum был (и остаётся до сих пор image) восьмибитным, всего было выпущено четыре официальных модели — ZX Spectrum 16K/48K, ZX Spectrum+, ZX Spectrum 128, имеющие, соответственно, 16, 48 и 128к оперативной памяти. Отнюдь, сейчас существуют клоны спектрума, имеющие различные характеристики, пентева, к примеру.

Знакомимся с Fuse



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

Давайте соберём его и немедля приступим к изучению нутра этой вещицы.
Сразу оговорюсь, если вы используете Ubuntu, то вам будет достаточно выполнить следующую команду:

sudo apt-get install fuse

Ну а чтобы собрать исходники этого эмулятора, нам потребуется:

1. Скачать сам эмулятор — бдыщ;
2. В папке проекта выполняем —

./configure && make install

3. Слышим истошные крики о том, что нам не хватает библиотеки «libspectrum» —

checking libspectrum.h usability... no
checking libspectrum.h presence... no
checking for libspectrum.h... no
configure: error: Sorry - I need libspectrum to be available

К всеобщему счастью, проблема решается довольно легко — достаточно проследовать по ссылке и установить недостающую библиотеку, после чего заново запустить ./configure.
4. После проделанных операций вы можете смело запускать fuse. Voila!

Настраиваем Fuse


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

Запускаем Fuse, заходим в меню Options -> Filter и ставим галочку напротив пункта «Double size» —

Вот это
image


Если вы хотите, чтобы образы .TAP и .TRD считывались мгновенно и ручками ничего не приходилось делать, то рекомендую не трогать настройки и оставить всё, как есть, ну а ежели вы хотите вспомнить былое и максимально окунуться в прошлое, то выставьте настройки, которые спрятаны под спойлером.

Скучное название спойлера
Options -> Sound:

image

Options -> General:

image


После того, как вы успешно проделали махинации с Fuse, можете смело запускать вашу любимую игру, прежде найдя её на www.worldofspectrum.org. Если решились использовать sdl-версию, запустите образ из консоли, используя
fuse <name_of_cassete>.tap

После выполнения команды выше вы увидите серый экран, на котором либо будет меню, либо, соответственно, не будет. В первом случае вам нужно нажать «Enter», после чего запустить кассету (F8), а во втором — нажмите следующие клавиши — "J, Ctrl+P, Ctrl+P, Enter", после, опять же, F8.

Отлично! Во время загрузки вы услышите тот самый звук, который, возможно, станет проводником в ваше детство.
Что же, самое время найти парочку старых игр и насладиться их прохождением! Несколько томительных минут ожидания и уже никто не в силах оторвать вас от этой замечательной вещицы image.



Пишем простую программу под ZX Spectrum


Пришло время развеять завесу тайны и узнать, что же действительно представляет из себя ZX Spectrum. Наша программа будет просто выводить текст “Wct One Love” на экран, после чего передавать управление спеку.

image

Использовать мы, разумеется, будем Wct, что и следовало ожидать от меня — это такая hex-подобная система счисления со своим компилятором и прочими фишками. Отличается от хексов тем, что состоит только из букв, а последние две поменялись местами. Одним словом — сумасброд, но я использую его на протяжении длительного времени и уже привык и полюбил его. Не серчайте, я понимаю, что некоторых это порядком достало image. Если обобщить, то Wct представляет из себя не более, чем обычную игрушку. Не будем тянуть кота за хвост — приступим к написанию самого кода.

А вот так выглядит Wct
A B C D E F G H I J K L M N P O


Чтобы понимать, что мы делаем, будем использовать таблицу, в которой можно найти соответствующий код для каждой мнемоники.

Первым делом нам нужно поместить в регистр «A» число Cw (в десятичной системе счисления — 2). Для выполнения многих команд обрабатываемые данные должны быть занесены в регистр «A», прежде чем будут выполняться следующие действия.

Dp AC		// В регистр «A» помещаем число Cw


После же нам надо вызвать функцию печати символа — «BG AB».
Так реализуем же это посредством использования команды «Mn». Следует обратить внимание на то, в каком порядке идут байты. В данном случае это Big Endian, то бишь порядок «от старшего к младшему» из байтов.

Mn ab bg	// Вызываем функцию печати символа — «BG AB».


Пришло время упомянуть регистры спектрума. Микропроцессор Z80, в отличие от 18080, работает с двумя наборами регистров — основным и альтернативным, Оба набора состоят из семи 8-разрядных регистров данных и флагового регистра. Регистры основного набора обозначаются буквами А, В, С, D, Е, Н, L и F (флаговый). Регистры альтернативного набора соответственно — А', В'( С, Dr, Е Hr, L' и F). Для пользователя эти наборы совершенно идентичны, и знак' (апостроф) означает лишь то, что в данный момент регистр не является активным.

Команды, обрабатывающие 16-разрядные числа, используют пары регистров в следующих сочетаниях: ВС, DE, HL, AF и, соответственно, ВС, DE HL AF'. При этом в регистры В, D, Н, А, В', D', Н А' записывается старший байт числа, а в С, Е, L, F, С, Е L' и F' — младший. Спаренные регистры можно использовать, например, для хранения и обработки адресов ячеек памяти.

Нам же надо загрузить в пару HL адрес нашей строки, которая располагается по адресу IABAw с использованием команды Cb.

Cb ba ia	// Загружаем в HL строку по адресу
		// IABA, и начинаем обрабатывать текст,
		// который мы получили из этой строки


Теперь нам надо загрузить адрес, который мы запихнули в HL, в регистр A, соответственно, использовать мы будем команду Hp —

Hp		// Загрузка адреса из HL в регистр "А"


Теперь нам нужно проверить, не закончилась ли строка. В противном случае нам нужно будет вернуть управление спектруму, а ежели в памяти всё ещё остались символы, то мы проверим это с использованием команды Op, где операндом будет AAw, то бишь «0».

Если же строка закончилась, то выполним команду прерывания процесса — Mi.

Op AA		// Проверяем, не закончилась ли строка.
		// Если закончилась, то переходим к выполнению
		// следующей команды.

Mi		// Если строка закончилась, то передаём
		// управление спеку.


Следующие три команды должны выполнить чтение по адресу IABAw, увеличить текущее значение в регистре HL на единицу и совершить цикл.

Nh		// Выполняем функцию чтения - BA.
Cd		// Увеличиваем регистр "HL" на единицу
		// и продолжаем выполнение программы.

Bi OI		// Цикл... Переходим на метку, выполняем «Cb ba ia»


Теперь мы должны разместить непосредственно наш текст. Его можно записать двумя способами — либо разместив в кавычках, либо же предварительно переведя его в набор байтов. Чтобы осуществить перевод текста вручную, воспользуемся таблицей по адресу wctsite.tk/table.
«Wct One Love» или же «FH GD HE CA EO GP GF CA EM GO HG GF».

Теперь нам осталось указать на то, что наша программа завершена, дальше не следует выполнять никакие действия.

An AA		// Конец...


Чудно! Мы завершили написание нашей первой программы под спектрум, давайте взглянем на полный код:

/*
ZX-Spectrum Example
Coded in Wct
*/

Dp AC		// Помещаем в регистр "А" число C (2);
Mn ab bg	// Вызываем функцию печати символа - BG AB.
		// Заметьте, что после команды операнды
		// идут в обратном порядке, тобишь от
		// последнего и до первого.

Cb ba ia	// Загружаем в HL строку по адресу	<-------¬
		// IABA, и начинаем обрабатывать текст, 	¦
		// который мы получили из этой строки	>-------+-------¬
		//						¦	¦
Hp		// Загрузка адреса из HL в регистр "А"		¦	¦
Op AA		// Проверяем, не закончилась ли строка.		¦	¦
		// Если закончилась, то переходим к выполнению	¦	¦
		// следующей команды.				¦	¦
		//						¦	¦
Mi		// Если строка закончилась, то передаём		¦	¦
		// управление спеку.				¦	¦
		//						¦	¦
Nh		// Выполняем функцию чтения - BA.		¦	¦
Cd		// Увеличиваем регистр "HL" на единицу		¦	¦
		// и продолжаем выполнение программы. 		¦	¦
		//						¦	¦
Bi OI		// Цикл... Переходим на метку...	>--------	¦
		//						        ¦
"Wct One Love"	// Наш текст	<----------------------------------------

An AA		// Конец...


Теперь пришло время разобраться со сборкой вышеприведённого кода. Для начала нам нужно собрать утилиту «bin2tap», которая позволит сконвертировать бинарник в образ кассеты, с которой будет считываться программа в спектрум. Достаточно скомпилировать файл raw.githubusercontent.com/Mihip/Wct/master/source/spectrum/bin2tap.c при помощи, допустим, GCC, и приступить к следующему шагу.

image

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

Теперь нам нужно создать образ кассеты, для этого воспользуемся командой bin2tap -b name_of.bin с флагом «-b», который означает то, что также в образ будет включен бейсик код, который загрузит нашу программу в память спектрума самостоятельно.

Всё готово, можно запускать программу -

image

Отлично! Всё сработало. Поздравляю, вполне вероятно, что это ваша первая программа, написанная для спектрума!

Знакомимся с демосценой



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

Демосцена — это своеобразное искусство. Имеет место и рассказать о демопати. Демопати — мероприятия, где демомейкеры встречаются и непосредственно демонстрируют свои навыки, а также демы, которые они создавали специально для пати. Отличие демопати от обычных фестивалей искусства состоит в том, что работы зачастую доделываются непосредственно на демопати, и это является частью процесса мероприятия. Кроме этого, крупнейшие демопати обычно проходят несколько дней (чаще всего — 3-4) и одновременно являются пристанищем демосценеров из разных стран (для этого есть специальные спальные места, где можно спать в спальном мешке).

Из слов VBI:

1:16:20 — vbi-: Демо — это обычно способ показать своё владение железом.
1:16:29 — vbi-: Не важно, гитара это или комп.
1:16:47 — vbi-: Это, возможно, демонстрация возможностей железа,
1:16:59 — vbi-: то, что ты можешь из него достать.
1:17:04 — vbi-: А вот хорошее демо —
1:17:24 — vbi-: это такое, в котором используется непривычное использование железа,
1:17:40 — vbi-: Либо же железо отрабатывает на все свои 100%.
1:18:55 — vbi-: То есть демо обычно — это выход на уровень выше, чем, как казалось, позволяет железо.


wbcbz7_k016> сцена — это когда ты пилишь проды, чтобы и себя показать, и на других посмотреть, и просто оттянуться\отдохнуть\научиться
wbcbz7_k016> :)


Если же моё определение вам не по душе, то ниже приведена цитата из википедии:

image
Демосце?на — киберкультура, зародившаяся в конце 1970-х годов вместе с распространением первых домашних компьютеров. Направление компьютерного искусства, главной особенностью которого является выстраивание сюжетного видеоряда, создаваемого в реальном времени компьютером, по принципу работы компьютерных игр. Таким образом, демо является симбиозом программирования и искусства.


Моё любимое демо для спектрума — «Eager (to live)», автором которого является introspec (a.k.a spke).



Товарищи, присоединяйтесь к демосцене, творите чудеса и никогда не забывайте про спектрум image!

Послесловие



Друзья, спасибо за то, что вы поддерживаете меня своими тёплыми комментариями и отзывами, я рад, что вам действительно интересны мои статьи и заметки. Хотелось бы верить в то, что ZX Spectrum навсегда останется в ваших сердцах и всегда будет дарить только хорошие воспоминания. Спасибо за то, что уделили время прочтению этой статьи!

И помните,
Make demo, not war!


image

Использованная литература

Приветы
Пользуясь случаем, хотелось бы передать привет моим знакомым из #z80 — Kakos_Nonos, Nuts, introspec, wbcbz7, organism, TSL, nyuk, jam, kowalski, g0blinish, DenisGrachev, DenPopov, vbi, zedOFF и всем, всем, всем, кого я забыл упомянуть image.

Ссылки
wctportal.ru — портал, посвящённый Wct;
wctsite.tk — официальный сайт, посвящённый Wct, домен так и не сменился;
github.com/Mihip/Wct — репозиторий на гитхабе;
zxpress.ru — материалы по ZX Spectrum;
worldofspectrum.org — архив работ для ZX Spectrum.
Продолжать цикл статей про низкоуровневое программирование?

Проголосовало 182 человека. Воздержалось 46 человек.

Стоит ли развивать Wct?

Проголосовало 11 человек. Воздержалось 5 человек.

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

Поделиться с друзьями
-->

Комментарии (61)


  1. VBKesha
    08.07.2016 00:28
    +8

    Послушал звук загрузки с кассеты, прослезился.


    1. alexd73
      09.07.2016 11:10

      Не ты один! Прям накатило, в груди комок… и мысль в подсознании: «Только бы не Tape loading error!!!»


      1. shadsid
        09.07.2016 16:42

        С этим справлялся загрузчик leshij ^_^


        1. alexd73
          09.07.2016 18:37
          +1

          Я конечно не помню мелочей, но когда на кухне выключался или включался холодильник Бирюса, выпущенный году так в 1985ом, — ни чего не помогало! :)


          1. Aclz
            10.07.2016 08:48

            От холодильника он целиком сбрасывался. Или вис, а экран покрывался характерными паттернами

            image


  1. amaksr
    08.07.2016 00:58
    +1

    Эх, помню, программы для спектрума у нас крутили ночью по FM-радио… Про авторское право никто не слышал, а волновало только лишь бы не прошла помеха от выключателя в соседней комнате. Впрочем, кассеты с любыми программами были на толкучке. Даже Лисп был…
    Потом появился дисковод — целая революция!
    А потом появился 286-й — и понеслась…


    1. guglez
      08.07.2016 15:48
      +1

      Это в каком городе такое было? Какой год?
      Почему ни кто не вспомнил Bill Gilbert?


  1. UA3MQJ
    08.07.2016 01:10

    WCT… что это?


    1. michael_vostrikov
      08.07.2016 07:34
      +15

      Обычная запись в HEX-кодах, только с замененными обозначениями цифр, изобретение за авторством автора, с которым автор носится как с писаной торбой.


      1. Mihip
        08.07.2016 12:10
        -5

        Именно так.


    1. Mihip
      08.07.2016 13:24
      -5

      Видоизменённая запись хексов, ничего необычного — все цифры были заменены на буквы.


  1. Ivan_83
    08.07.2016 01:43
    +5

    Фигня какая то из бредо генератора, нифига не понятно.

    При том что у меня был робик с бейсиком и асм Z80 я вполне себе освоил, как минимум базовую часть, притом без всякого интернета (1998 год, далёкое замкадье).

    Самое интересное опущено — внутреннее устройство.

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


    1. aktuba
      08.07.2016 10:07
      -6

      Спектрум в 98-м? Это какое-то очень уж далекое замкадье.


  1. de1vin
    08.07.2016 02:06
    +1

    Интересно, почему когда упоминают топовые игры на спектрум, часто игнорируют UFO и Черный ворон?
    Отличные же игры были.


    1. questor
      08.07.2016 22:44
      +1

      Наверное, потому что у каждого свой ТОП. Я например ничего не слышал про черного ворона, а UFO для меня — это лишь ассоциация с PCшным X-COM Ufo Defence.

      Зато я считаю выдающейся игрой например Quazatron — а вам что-нибудь скажет это название? Когда-то в ZX-Ревю было большое интервью с авторами, там весьма любопытные алгоритмы для трёхмерки использованы, а мне запомнилось технологическим деревом и мини-игрой по перепрограммированию робота.

      Так-то в ТОП вообще выйдут игры массовые — R-Type, River Ride, Exolon, The Way Of The Exploding Fist и т.п.


      1. de1vin
        08.07.2016 22:53

        Наверно это зависит от того, в каких годах спектурм стал доступным.
        Эти игры как раз появились во второй половине 90-х, если память не изменяет.
        У меня это было время окончания школы — 96-99 года. Причем до 97 у меня лично не было спектрума.
        Играл у одноклассника. И у него же вводил код программ, которые дома в тетрадках предварительно писал и в голове отлаживал.
        А черный ворон, если не изменяет память — был чернобелым портом варкрафта от Вячеслава Медноногова.


  1. byd
    08.07.2016 02:08
    +2

    Прям задушу, Z80 мммммм… Кино «Micro Men» (2009) обязателен к просмотру! ru.wikipedia.org/wiki/Micro_Men


  1. zcasper
    08.07.2016 06:51

    Отличная статья, хоть и коротка по смысловой нагрузке. На асме Z80 к сожалению не писал, только на встроенном S-Basic, возле телевизора на почётном месте не запыленная Дельта-С 128 с которой отлично проходят выходные в паре со всякими Exolon и конечно бейсиком.

    P.s.: не рекламы ради, в Новосибирске 30 -31 июля состоится CrazySiberianParty'2016 (CSP2016)


    1. lzb_j77
      08.07.2016 12:10
      +2

      p.p.s. у вас до сих пор печень выдерживает?


    1. zcasper
      16.07.2016 08:31

      http://zx-pk.ru/threads/26074-csp-2016-klassika-zhanra!.html


  1. Error1024
    08.07.2016 07:56
    +3

    Статья о ZX-Spectrum и сцене, и не слова об атрибутах?


  1. mib
    08.07.2016 09:49

    я пользовался Zeus ассемблером для спектрума, там немножко другие операторы


    1. questor
      08.07.2016 22:51

      А у меня ассемблера не было (суровое детство, игрушки, прибитые к полу), но был монитор-отладчик, умещавшийся буквально в 256 байт неиспользованного ПЗУ — вот это была мощь, я до сих пор восторгаюсь тем кодом. А ассемблер мне заменяла распечатанная табличка 16х16 и уже через полгода я визуально читал код прямо с дампа памяти. Поскольку система команд была немного больше чем у КР580ВМ80 то немного не хватало описания 4 байтных команд.


  1. pfemidi
    08.07.2016 09:53
    +11

    Spectrum это конечно хорошо, но нафига опять этот Брэйнфак этот WCT? Под Spectrum ведь были и есть нормальные ассемблеры, зачем насиловать свой мозг этой абракадаброй?


    1. Rudmz
      08.07.2016 13:22
      +1

      Более того, небольшой набор ассемблерных команд позволял писать/читать программы прямо в машкодах :)


    1. Mihip
      08.07.2016 13:28
      -5

      Привет, pfemidi! Вся это мозготрёпка ровным счётом ни для чего не нужна, советую взглянуть на комментарий, который я оставил ниже.


  1. Noonzen
    08.07.2016 10:03
    +8

    Какой-то искаженный взгляд на мир программирования под Speccy. Не нужно такое продолжать =)


  1. UA3MQJ
    08.07.2016 10:27
    +1

    А мой старичек — первый мой компьютер — жив и здоров!

    Несколько фото
    image

    image

    image

    image


  1. Byteman
    08.07.2016 11:34

    Помимо четырех моделей, упомянутых в статье, были ещё всякие +2/А/В, +3… Хоть и амстрадовские, но оригинальными моделями они от этого быть не перестали.


  1. BlackJet
    08.07.2016 12:11
    +4

    Какой то неправильный асм :)
    Я помню ld hl и jpnz всякие)
    Вообще сильно развивала работа на спекки, манера мышления формировалась своеобразная, погоня за байтами и тактами…


    1. DmitryMry
      09.07.2016 12:18
      +3

      Причём, TASM/MASM/ALASM/etc и STS позволят писать с гораздо бо?льшим комфортом. Не говоря уже о кросс-компиляторах. Мне, как более 7 лет писавшему на ассемблере под спектрум, код из статьи представляется дикостью.


  1. nzeemin
    08.07.2016 12:14
    +5

    Зачем было брать WCT для примера — так и не понял. Что, на нём много пишут? По мне так тот же brainfuck.


    1. Scf
      08.07.2016 13:07
      +2

      Я тоже не понял. Проще вспомнить детство и рисовать HEX-ом прямо в MONS. 3E FF 21 00 00 и т.п.


      1. questor
        08.07.2016 22:57
        +1

        О, вот ещё одного такого же вижу. Мысленно отделил 3E FF от 21 00 00, вспомнил, что каждая команда означает и дальше в голове думаешь. Или встретил C2 00 80 — ага, проверяем условие и возвращаешься на 80 00, читаешь дальше.


    1. Mihip
      08.07.2016 13:22
      -5

      Привет, nzeemin и Scf, а также те, кто тоже запутался. Прочтите комментарий, он должен помочь разобраться во всей этой стряпне.


  1. Holix
    08.07.2016 13:09
    +3

    Оно, конечно, здорово. Писать так, чтоб никто ничего не понял. :) Но, imho, на нормальном ассемблере писать круче и плодотворнее.

    В начале 90х я немного писал софт под zx-spectrum под именем PSW-SOFT. Пожалуй ничего толком знаменитого не сделал, но на Тушке тогда распространился загрузчик с дискеток (показывал меню — список программ на диске и запускал выбранную). Он был примечателен тем, что мгновенно загружался(за один оборот дискеты). Тогда еще была известна расширенная версия ZX-Spectrum Profi, со 128К памяти и расширенным графическим режимом, кажется 512х240. И там ещё своя CP/M была. Под ней много чего было. Был даже свой клиент Fido-Net.

    И да, почти всё писали на ассемблере. Но были и те, кто писал на C (пользуясь MSX-C компилятором).


    1. Mihip
      08.07.2016 13:20
      -3

      Привет, Holix!

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

      Вообще, я давно уже приобщился к Wct и мне, как ни странно, кодить на нём сейчас гораздо легче, нежели чем в тех же хексах или на ассемблере. Если учесть то, что программистом, как таковым, я не являюсь, то это простительно, ибо мне достаточно моей склепанной таблицы для спектрума и запоминания мнемоник на Wct. Запоминаются они, кстати, гораздо проще, нежели чем хекс код, по крайней мере, для меня уже не составит никакого труда написать простенькую программу без подсматривания в шпаргалку.

      И опять же, не многим вообще когда-либо пригодится Wct, но в демосцене он прижился и как раз это всё производится в духе демосцены — «создание никому не нужного прода на никому не нужном языке для никому не нужного ПК».

      Знакомиться со спектрумом гораздо лучше посредством использования ассемблера, а Wct — это так, «детские игрища», не стоит всё это воспринимать всерьёз. Как пример, можно ознакомиться с этой книгой, именно она помогла мне в подробностях разобраться со спектрумом.

      Не серчайте, впредь учту и постараюсь в следующих статьях приводить примеры именно на ассемблере, а Wct, если и не убирать, то сворачивать под спойлер. image


      1. mwizard
        08.07.2016 17:42

        но в демосцене он прижился
        О, а можно парочку ссылок на pouet?


        1. Mihip
          08.07.2016 17:50
          -4

          Привет!

          http://www.pouet.net/prod.php?which=66298
          http://www.pouet.net/prod.php?which=66299
          http://www.pouet.net/prod.php?which=67707


          1. mwizard
            08.07.2016 17:51
            +2

            Очень хорошо. А что-то, где нет «by Mihip»? А то между «прижился в демосцене» и «я его использую сам, потому что он никому больше не нужен, но отчаянно пытаюсь прожужжать уши окружающим», разница очень существенная.


            1. Mihip
              08.07.2016 17:55
              -5

              На поэте нет, но есть работы на Wct Pie демопати, организатором коего я и являюсь (22-24 июля пройдёт). Уже есть работы, но показать я их сейчас, увы, не могу :).


              1. mwizard
                08.07.2016 17:56
                +2

                ясно понятно


    1. lzb_j77
      14.07.2016 20:49

      По-моему, я видел psw-boot. Давно, правда. Но склероз пока не подвёл.


      1. Holix
        15.07.2016 11:32

        Там крупными буквами в две колонки имена файлов были. А когда запускаешь программу через AY такой биип затихающий звучал.

        … и если в гугле поискать «zx spectrum PSW-SOFT», то чуть ли не первая ссылка. Я сам в шоке!!! %)


  1. neco
    08.07.2016 13:20

    конвертация в образ ТАР не интересно…
    ожидал закидывания в память через POKE и передачу управления через RANDOMIZE USR
    :)


    1. Scf
      08.07.2016 13:23

      Самый кошерный вариант. Еще встречал PRINT USR и LET A=USR. Кто какие способы запуска машинного кода еще видел? :-)


      1. BlackJet
        08.07.2016 14:01
        +1

        randomize usr 0
        эх… ностальгия


        1. zabbius
          08.07.2016 14:03
          +1

          RANDOMIZE USR 15616


      1. zabbius
        08.07.2016 14:05

        Вообще, как раз USR — это вызов кода. После возврата из кода, если таковой случится, USR вернет содержимое BC. Так что вариантов можно придумать массу.


  1. zabbius
    08.07.2016 14:03
    +2

    Посмотрел на исходник в статье… Долго не мог понять, что это такое.
    Лучше бы не изобретали велосипед, а взяли бы старый добрый GENS, который позволяет писать на нормальном Z80 асме. И читать обычный асм несравнимо проще однобуквенных кракозябр.


  1. AxisPod
    08.07.2016 14:24
    +3

    А родной асм нельзя было использовать? А то вообще нечитабельно. Да и клоны с дисководами куда интереснее, да и родные асмы довольно хороши.


  1. dmtrlbdv
    08.07.2016 22:25
    +3

    Осознать, что LD A — это LoaD A я могу, но осознать, что Dp AC — это LD A, не получается…


    1. Mihip
      08.07.2016 22:46
      -4

      LD A — это Dp. А после DP уже идут аргументы.


      1. dmtrlbdv
        08.07.2016 22:48
        +1

        я в том смысле, что на простом ассемблере у команд логика мне понятна — LD — LoaD, JP — JumP и т.д. А здесь что-то все не очевидно


        1. Mihip
          08.07.2016 22:59
          -4

          На то это и Weird Coding Tool.


  1. x_sourer
    08.07.2016 22:40

    00 NOP


  1. Bolot
    09.07.2016 01:40
    +1

    90 год, поехал покупать велик, купил спектрум.
    Через полгода спалил, починил сам. Потом клепал на продажу на основе «зоновской» платы, потом «пентагоны» паял, потом «sz-scorpion 256» от того же Зонова — у того был замечательный отладчик. Аоны еще клепал на z-80 со своими прошивками на базе «русей». Вот блин…
    А ведь мог стать велогонщиком ))


    1. sergof
      09.07.2016 09:53

      вот это тебя прорвало… с 2013 то :)


  1. mwizard
    09.07.2016 12:53
    +1

    А почему bin2tap не на WCT?


  1. DrGluck
    10.07.2016 01:23

    У меня был Пентагон-128. Писал демки с помощью Zeus, изучал BIOS и TR-DOS, снимал защиты Bill Gilbert и добавлял читы к играм. Интересно было.
    Для автоматизирования процесса изготовления трейнеров игр мы в своё время написали нечто вроде простейшего Artmoney. Принцип работы был простой и эффективный: сначала при помощи «Magic button» делалось несколько дампов памяти с разной игровой ситуацией. Затем наша программа ковырялась в них по заданным параметрам. Эффективность такого подхода была очень высокой, как-то раз мы пропатчили 7 игр за день.


  1. vlreshet
    10.07.2016 22:01
    +4

    О, снова этот бл*дский wct подъехал. Mihip, не надоело еще? Возиться с изменёнными hex как с чем-то крутым и умным