ZX Spectrum
Game

Cathy's Program

ZX Computing (Великобритания),

Автор:

Жанр: Программирование: Asm


Доступные версии

 Неофициальное издание
Играть!

Язык

  • Русский
  • English

Управление

  • Клавиатура(?)

Игроков

  • Один
  • Описание
  • Описание (авт.пер.)
  • Информация

1 2 3 4 5 6 7 8

Освоение машинного кода на Вашем Spectrum часть 4 из 8 – от ZX Computing апреля / May’83

После в ее серии, Тони Бейкер, автор книги “Mastering Машинный код на ZX81 “, превращает ваш Spectrum в Музыкальная машина.

Давным-давно в галактике далеко, далеко, великие сражения были

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

В другом секторе галактики планировка бухгалтеры и

businessfolk задуматься над струны деятелей того пошатнулся от принтером ZX рассказывая их в ближайший копейки хау сумму налога они могут возиться, прежде чем они поймают, или глядя в течение нескольких часов в мягкий штрих-диаграмм и дружественных графиков заговоре текущие доходности прибыль от популярности “Перекресток”. В конце концов, компьютеры не были предназначены для играть в игры – или они были?

Strumming свой Spectrum

И вот однажды, когда я сидел пил кофе и болтали с

мои соотечественники, желающие я мог играть на гитаре, как также они, друг познакомил меня с новой концепцией. Возможно компьютеры есть цель в жизни за пределами простого спорта и наука. Наверняка компьютеры, такие как ZX81 (для этого был долгий Время назад) имела смысл в области искусства и музыки и культура. Программа, было высказано предположение, можно рассматривать как работать BF искусство, с программист будучи художником. Если этот были так то большинство программ мы видим вокруг нас функциональный – аналогично стульев или столов – они не были, в общем, красиво – аналогом живописи или кусок музыки. Именно к этому другу, что я посвящаю эту статью и, в частности, программа, которая идет с ним.

Это называется программа Кэти, оригинальная версия

который появился в моей книге Освоение машины код на ZX81 и была написана для Sinclair ZX81. Это новая обновленная версия, однако, написано для ZX Spectrum. Хотя его основная структура такая же, отдельные части имеют необходимо, чтобы быть полностью переписаны.

Цель программы состоит в свою очередь клавиатуры Spectrum в музыкальном, так что каждая клавиша отличается обратите внимание, и продолжает производить его до тех пор, пока ключ находится нажата. Диаграмма на Фиг.2a показывает, какие производит ключ которые отмечают, Есть две октавы, с двух нижних строк производящие заметки из среднего C и выше, и двух верхних Строки следующей октавы выше этого. Программа полностью на машинный код и как только приводится в движение будет продолжать работать пока вы не вырваться, нажав перерыв (Caps Shift, и исследованию космического пространства) как обычно.

Новая волна музыки

Небольшое количество объяснения требуется до листинга

будет иметь смысл, и поэтому первое, что я должен сделать, это объяснить принцип, по которому заметки производятся на Спектр. Наиболее важным является инструкцией OUT (FE),.

Спектр может производить только один тип звука – то есть, один тип сигнала – по сути, меандр или прямоугольная волна. Меандр является волну, которая в любой настой во времени может быть либо на высокий потенциал или на LOW потенциал; он никогда не может быть в качестве промежуточного потенциала.

Вот то, что инструкция OUT (FE), вовсе: предположим,

содержит (двоичный) номер ‘xxxnxgrb; (Каждая буква представляет собой двоичный разряд). В хз являются для наших целей эффективно бессмысленно, но остальные буквы: Н, г, г и б весьма важны. Они переключаются аппаратных устройств, и от (рис.1).

Биты 2, 1 и 0, то контролировать общую картину цветов к

экран. (На практике это только границы цвета, которые может быть изменена таким образом, – цвета на экране являются контролируется байт атрибута).

Принцип создания музыки, то есть, чтобы создать квадрат

волна. Процедура для этого является “короткая задержка / OUT (FE), xxx1xxxx / короткая задержка / OUT (FE), xxx0xxxx / повтор для столько тактов, сколько требуется “. Обратите внимание, что делает эту волю автоматически изменить цвет границы. Если вы хотите, чтобы избежать это, то вы должны немного изменить процедуру ‘короткий Задержка / OUT (FE), xxx1xbbb / короткая задержка / OUT (FE), xxx0xbbb / Повторить для стольких циклов, сколько требуется “, где BBB представляет текущий номер цвет границы в двоичной системе.

На этой ноте …

Прежде чем мы рассмотрим готовой программы, я хотел бы

познакомить вас с одной из подпрограмм в ПЗУ.

подпрограмма вызывается KEY-SCAN, и его влияние на определить, какие клавиши, если таковые имеются, в настоящее время в депрессии. Ты можно использовать подпрограмму просто по инструкции вызова KEY-SCAN (CD 8E02). Регистры машинного кода все будет уничтожены подпрограммы так, если вы хотите сохранить им, вы должны подтолкнуть их в стек, а затем поп их на вернуться. Регистрация DE будет содержать окончательный вывод Подпрограмма как показано на фиг.3. Кроме того, в случае двух или более ключей нажатия одновременно, флаг нуля будет сброшены. Во всех остальных случаях, флаг нуля будет установлен.

Ключевые коды, упомянутые в вышеприведенном описании, по всей

случаи число между 00 и 27. Другой номер является вернулся для каждого ключа. Коды сами перечисленные в Рис.2б; Вы можете сами увидеть, что ключи покрыты в то, что на первый взгляд кажется, очень странно порядок.

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

Спектр в музыкальный инструмент. Мелочи называемые Прерывания. Пятьдесят раз в секунду, аппаратные Спектр посылает импульс немного вниз одного из штифтов, соединенных с Чип Z80. Когда это происходит, один из следующих последовательностей из вещи будут происходить, в зависимости от ранее неслыханное флага называется (IFF1 прерывания Флип / Флоп один). ( люди, которые называют эти вещи должны иметь некоторый смысл юмор)!:

Если IFF1 = 0, то: ничего не делать.

Если IFF1 = 1, то: Сложите все регистры на машину

стек; ВЫЗОВ 0038 выполняется – это делает следующее: увеличить системной переменной КАДРЫ; сканирование клавиатуры, обновление системных переменных Кстате и LAST_K.

POP все регистры из стека и действовать так, как прежде.

Нормальное состояние флага IFF1 является одним, так что все

программы, машинный код или BASIC, замедляются, так как подпрограмма в 0038 исполняется 50 раз в секунду без нашего ведома или согласия. Что касается музыки, то это означает Точные сроки мы требуем, чтобы произвести квадратных волны право длина волны будет совершенно неправильно, так как мы должны понятия не имею, по поводу того, когда программа обработки прерывания будет осуществляться в любой момент цикла. Для того чтобы преодолеть Эта проблема, необходимо сбросить IFF1 к нулю, так что выше последовательность событий, не будут выполнены.

инструкция DI (Запретить прерывания) равносильно тому, ПУСТЬ IFF1 = 0, и так это, то, это инструкция, что нужно.

Когда Спектр, при нормальном использовании, ждет ключевой быть

нажата, то, что происходит на самом деле в том, что его ждет Кстате изменить. Обратите внимание, что это может произойти, только если IFF1 = 1, в противном случае подпрограмма в 0038 никогда не будет называться и спектр будет просто сидеть там ждать вечно, в то время как бедный старый пользователь не может сделать ничего, кроме скрежета зубов и бросок кирпич на телевидении. Для того чтобы предотвратить это от происходит EI, (Включение прерываний или LET IFF1 = 1) должны быть выполнены, прежде чем вернуться в базовый. Любая программа машинного кода которая проходит в то время как прерывания отключены может сканировать только клавиатура с помощью ПО R, (FE) инструкции, или позвонив по телефону KEY-SCAN, не исследуя Кстате или LAST_K.

Рисунок 4, то, это конечный результат: Программа Кэти для

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

В моей следующей статье я буду продолжать на тему

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

– Рис.1 – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – –

Разбивка отдельных букв А в инструкции, OUT (FE),

б: 0 = переключить синий пистолет с, 1 = включить синий пистолет на.

Г: 0 = переключить красный пистолет с, 1 = включить красный пистолет на. г: 0 = переключить зеленый пистолет с, 1 = включить зеленый пистолет на. н: 0 = переключить генератор примечание к низким потенциалом,    1 = включить примечание генератор на высокий потенциал.

– Fig.2a – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – –

Какой ключ на Spectrum производит какой сведению? Есть два октавы, нижние два ряда, производящие заметки выше среднего C и две верхние строки производстве следующей октавы выше, что. (Обратите внимание, что острые (#) ноты обозначены звездочкой.)

 – – – – – – – – – –

[] [] [C *] [D *] [] [F *] [G *] [*] [] []  – – – – – – – – – –

   – – – – – – – – – –

  [] [C] [D] [E] [F] [G] [A] [B] [C] []    – – – – – – – – – –

     – – – – – – – – – –

    [] [C *] [D *] [] [F *] [G *] [*] [] [] []      – – – – – – – – – –

  – – – – – – – –

[] [C] [D] [E] [F] [G] [A] [B] [C] []   – – – – – – – –

– Рис.2б – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – –

Коды, и как они распределены по клавишам спектра.

 – – – – – – – – – –

[24] [1С] [14] [0C] [04] [03] [0B] [13] [1B] [23]  – – – – – – – – – –

   – – – – – – – – – –

  [25] [1D] [15] [0D] [05] [02] [0A] [12] [1A] [22]    – – – – – – – – – –

     – – – – – – – – – –

    [26] [1E] [16] [0Е] [06] [01] [09] [11] [19] [21]      – – – – – – – – – –

  – – – – – – – –

[27] [1F] [17] [0F] [07] [00] [08] [10] [18] [20]   – – – – – – – –

– Фиг.3 – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – –

Содержимое регистра DE.

СИТУАЦИЯ СТОИМОСТЬ DE

Ключ не вообще FFFF CAPS SHIFT только FF27 Символ Сдвиг только FF18 Оба Сдвиги вместе 2718 Любая клавиша без смещения FFaa, где аа является ключевым код ключа заинтересованного. Любая клавиша с CAPS SHIFT 27aa, где аа является ключевым код ключа заинтересованного. Любая клавиша с Symb Сдвиг 18aa, где аа является ключевым код ключа заинтересованного. Любые две клавиши вместе ААВВ, где АА и ВВ являются ключевыми коды заинтересованные.

– Фиг.4 – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – –

Программа Кэти.

9E93464B ПРИМЕЧАНИЯ GG # G + F + # Ключи B, H, Y и 6

0050A9B4 – F + F # F Ключи 5, Т, G и V 8A813D42 А.А. # + G + # Ключи N, J, U и 7 5C5600C1 D + # E + – E Ключи 4, R, F и C 78003539 B – B + + # Ключи M, K, я и 8 6962CFDD C + D + D # D ключи 3, E, D и X 70003200 C + # – C ++ – Ключи Символ Сдвиг, L, O и 9 0070ECFD – C + C # C Ключи 2, W, S и Z 00000000 – – – – Ключи Space, Enter, P и 0 00000000 – – – – Ключи 1, Q, и CAPS SHIFT

00 SOUND NOP Эта подпрограмма вызывает

00 NOP очень короткая задержка – точная 00 NOP сроки которых определяется 10FB DJNZ SOUND на В, до звучания D3FE OUT (FE), пульс.

C9 RET

называют здесь:

3A485C START LD, (BORDCR) биты 5, 4 и 3 содержат цвет границы.

1F АСР 1F АСР 1F АСР E607 И 07: Цвет рамки F610 ИЛИ 10: цвет границы, но с немного 4 набора 4F LD C, AC: Цвет рамки + бит 4 установлен F3 DI Запретить прерывания C5 LOOP PUSH BC заповедник значение C CD8E02 ЗВОНОК KEY_SCAN сканирования клавиатуры C1 POP BC Восстановление значение C 212027 LD HL, 2720 HL: значение ключа для “CAPS SHIFT Пробел” A7 И флаг Reset Carry ED52 SBC HL, DE Сравните клавишу нажатой (если таковые имеются)                                   с «Caps Shift, Space” 281B JR Z, ВЫХОД Выход программы при желании 7В LD, EA: код ключа (игнорируя смены) 3C INC 28EF JR Z, LOOP Loop, если не нажата ни одна из кнопок AF XOR: ноль 57 LD D, DE: ключевые код игнорируя Сдвиги 21 ???? LD HL, ПРИМЕЧАНИЯ 19 ДОБАВИТЬ HL, DE Точка HL отметить значение в таблице 46 LD B, (HL) B: записка значение B8 CP B Сравните B с нуля 28E5 JR Z, LOOP Loop, если нет замечание по этому ключу 79 LD, CA: Цвет рамки (бит 4: 1) C5 PUSH BC заповедник значение B CD ???? ЗВОНИТЕ SOUND Генерация первой половине цикла C1 POP BC Восстановление значение B E607 И 07: Цвет рамки (бит 4: 0) CD ???? ЗВОНИТЕ SOUND Генерация второй половине цикла 18D8 JR LOOP Повторите последовательность FB EXIT Е.И. Включение прерываний C9 RET Конец рутина

[В сопроводительном файле программа ZX83044]

[Были использованы эти адреса:] [ПРИМЕЧАНИЯ: 60000: EA60] [SOUND: 60040: EA88] [START: 60048: EA90] [Процедура длинная 102 байт. JG.]

– Другой прекрасный продукт расшифрованы: Джим Grimwood (jimg@globalnet.co.uk), Weardale, Англия –

?

Играйте в Cathy’s Program без эмуляторов прямо на сайте. Эта утилита для программинга на ASM, изданная в Великобритании в 1983 году творческой группой ZX Computing, которую написал Toni Baker.

Не запускается или глючит игра, или не можете пройти? Спросите в комментариях.

avatar
  Subscribe  
Уведомлять об
 

Сохранённые игры[X]

  

Справка[X]

Помощь уже в пути!

Не забывайте периодически сохранять игровой прогресс на сервере (клавишей F8), чтобы уверенно продвигаться вперёд!

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

Для загрузки сохранённой игры жмите F3 или откройте меню "Диск" кнопкой на правой панели.

Если игра не запускается, или у вас есть вопросы по игре - задайте их ниже.

Помощь

Размер

  • x1 [256x192]
  • x2 [512x384]
  • x3 [768x576]
  • Полный

Диск

Кликни в окно эмулятора, чтобы управлять!
<<<<
Close