ACNews #17
05 мая 2003

News - схема паралельного интерфейса на AY.

<b>News</b> - схема паралельного интерфейса на AY.
   ░░▓▒▒▒░░░░░░░                                        ░░█▒░
 ░▓▒▒░░░░            ▄▄▄▄▄▄      ▄▄▄▄▄▄▄▄▄▄              ░░█▒░
▓▒░░░     ▄▄▄▄▓▓▒ ██████▓▓▒     ▐▒▓▓██████████ █▒▓▄▄▄▄    ░░▓▒░
▒░░   ▄████████▓▌▐███████▓▌     ▐▓▓███████████▌▐▓▓███████▄  ░░▓▒
░░   ███████████▌▐████████      ▐▓███████████▓▌▐▓██████████   ░█
░   ███████████▓ ████████▌      ▐██████▌▀▀▀██▓▒ █████▌▀█████   ░
   ██████ ▐█████ ████████       ▐▓█████▌     ▀▀ ▓█████ ▐█████  ░
  ▐█████▌ █████▌▐███████▌    ▄▄ ▐██████▌        ▐█████  ▐████▌
  ███████▐█████▌▐███████ ▄▄█▓▓▒▌▐██████▌▄▄▄▄▄▄  ▐█████▌  ▐████
 ▐█████████████ ███████▌█████▓▓▌▐██████████████▌ ██████   ████▌
 ██████▌▐██████ ▓█████████████▓▌▐██████████████▓ ▓██████▄ ▐████
 ██████ ▐▓████▌▐▓▓█████████████▌▐█████████████▓▓▌▐████████▐████
▐▓█████ ▐▒▓███▌▐▒▓▓██▀▀▀▀          ▀▀▀▀▀▀▀▀▀▀▓▓▒▌▐████████████▓▌
▐▓▓███▌ ▀▀▀▀                                        ▀▀▀▀█████▓▓▌
▐▒▓▓▀              ▄▄▄███████▄▄  ▄▄▄▄▄  ▄▄           ▄█▓▄  ▀▀▓▒▌
▐▀ ▄▄█▌ ▄▄▄▄▄  ▄▒▓▓████████████▌▐▓████ █████ ██▓▒▄ ▄█████▓nikf▀▌
 ▒▓███▄███████ ▓▓██████▀▀▄█████▌▐████▌▐█████▌▐▓█▓▓ █████▀▄▄█▓▒▄
▐▓▓████▐██████▐██████▌▄▒▓▓█████ ▐█████▐██████▐███▓▌ ▀████████▓▓▌
▐▓█████ ██████▐██████▐▓▓███▀▀▀  ▐▓████████████████▌   ▄▄▄█████▓▌
▐████▓▌▐████▓▌ ██████▄▀▀▄▄▄▄██▓▌▐▓▓███████████████▌▐▓▓█████████
▀▀▀▀▀▀ █████▓▒  ▀███████████▓▓▒▌▐▒▓▓██████▓███████  ▐▒▓▓█▓▀▀▀▀
▒░                ▀▀████████▀▀▀  ▀▀▀▀▀▀▀▀ ▀▀▀▀▀▀▀▀   ▀▀▀       ▒
░▓░                                                           ░▓
░                         ▐▀ ▄  ▄▄▄ ▀▌                         ░
  ▄       ■▄░▄▀■    ▄▀■░ ▄█  █    █  █░▄■     ■▀■░          ■
░■░▀■▄░ ■▀░ ■  ░■▄ ■░  ▀■░█  █    █  █▀ ░▀▄░ ▀░  ▄░ ■▀▄░ ░■▀░▀■░
¤     ■▀░         ■       ▐▄   fix  ▄▌     ■▀     ■▀   ▀■▀     ¤

                            6.5.2oo3

Теперь  ACE  будет  не  только паковать себя сам, но и склеивать
тоже! Благодаря  наезду Александра Майорова эта возможность поя-
вилась не завтра и не послезавтра, а именно сегодня :)

     ▄▄▄▄ ▄▄▄▄ ▄ ▄ ▄ ▄▄▄▄
 ░▄■ ▓  ▓ ▓▄▄▓ ▓ █ ▓ ▓▄▄▄ ■▄░ ■▄░ ■▄░ ■▄░ ■▄░ ■▄░ ■▄░ ■▄░ ■▄░ ■▄
▀■▄  ░  ░ ░▄▄▄ ░▄▓▄░ ▄▄▄▓ ║▄■▀░ ■▀░ ■▀░ ■▀░ ■▀░ ■▀░ ■▀░ ■▀░ ■▀░

───-+ of alone coder +──────────────────────────────────────────

John купил цветной телевизор!

Ldir совсем чуть-чуть не успел собрать Last128 #5 в апреле. А то
сбылись бы обещанные 2 релиза ;)

Inferno#4 нет :(

Опять нашему музону RAIN8.m не повезло - на @toy он не попал так
же, как и на Paradox. "Не дошел", говорят!

Сотрите исходник ANSI0.3 из прошлого комплекта. GMX там не рабо-
тает. Но  благодаря  Николаю  Амосову версия фиксилась и наконец
вышла! Но пока вы её не увидите :)

Продолжение паяльных приключений!
13 апреля  ко  мне снова пришёл KSA-7G,  и тогда в наших светлых
головах  созрела мысль: почему бы не соединить два спека в сеть?
(см.схему)

- cut тут ------------------------------------------------------
                         Проводок v1.0
                             СХЕМА
                     (AY-3-8910 / YM2149F)
ZX#1                                                        ZX#2
GND ──────────────────────────────────────────────────────── GND
AY/6 ───────────────[1 кОм]─────────────────────────────── AY/14
AY/14 ─────────────────────────────[1 кОм]───────────────── AY/6

GND должно быть соединено намертво. При этом надо проверить тес-
тером, развязаны  ли  блоки  питания компов с сетью (должны быть
развязаны, но  вдруг...)  Если  GND не будет соединено намертво,
при  нарушении  контакта  могут  появиться очень большие искры -
вплоть до шаровых молний ;)

Килоомы в данных предохраняют AY на случай, если оба они окажут-
ся настроены на вывод по одной и той же линии.
------------------------------------------------------ тут cut -

(Это имитация TAPE, которого у меня, к несчастью, нет, с помощью
AY'ков. Потом попробую и принтерный порт)

Для обмена используются 7-е биты портов A и B AY'ка. По соглаше-
нию, которое я заключил сам с собой, порт A (регистр 14) работа-
ет на вывод, а порт B (регистр 15) - на ввод.
Пассивным состоянием линии будем считать лог.1 ("обрыв")

Таким образом, работа будет происходить хитро.

Инициализация: в регистр 14 AY записывается #ff, а в регистр 7 -
#40 (желательно именно в этом порядке - тогда состояние линии не
станет меняться).
После  игрового  цикла  комп#1 (MASTER)  устанавливает  на своём
порту A лог.0 и ждёт соответствующего ответа со стороны компа #2
(SLAVE). Когда комп #2 соизволит выставить лог.0, начинается об-
мен.
Первым передаёт MASTER, потом SLAVE передаёт,а MASTER принимает.
Синхронный вариант передачи (первые же эксперименты были без си-
нхронизации)  основан  на том, что принимающий абонент формирует
меандр, по каждому фронту которого передающий абонент помещает в
линию данных очередной бит. Первый бит возникает при положитель-
ном  перепаде. Во время приёма последнего бита приёмник даёт ещё
один  положительный  перепад, по  которому  передатчик переводит
свою линию данных в состояние лог.0 и сам становится приёмником.
После аналогичного обмена в обратном направлении сессия заканчи-
вается. Оба компьютера переводят линию в состояние лог.1.

Обработчик  прерываний  содержит  команду RET. Максимум, что ещё
можно  там  себе позволить - это какой-нибудь инкремент. Главное
на первом этапе - просто зафиксировать факт,что прерывание было.
Будем считать, что такое прерывание вместе с захватом выполняет-
ся за 25 тактов.

send:                           receive:
      ...                             ...
      LD B,C                          LD B,C
      OUT (C),E ;15                   OUT (C),E ;15
      DEC E                           DEC E
      RLC (HL)                        IN A,(C)
      SBC A,A                         OUT (C),E ;14
      INF                             LD B,D
      JP P/M,$-2                      OUT (C),C/E
      OUT (C),E ;14                   INC E
      LD B,D                          RLA
      OUT (C),A                       RL (HL)
      INC E                           <задержка>
      ...                             ...
Задержка рассчитывается так.
В  самом  пессимистичном случае передатчик претерпел прерывание,
приёмник  же  прерывание не получил, а фронт, по которому должен
был  сменить  данные  передатчик, неудачно оказался принят сразу
после  команды  INF. Тогда  время  реакции  на фронт (до команды
OUT (C),A, включая её) составляет  60+25 тактов, считая прерыва-
ние. В свою очередь, с момента выставления данного до следующего
фронта  должно  пройти 28 тактов, иначе приёмник примет неверную
информацию.
Далее, в самом опять-таки худшем случае предположим,что приёмник
работает  в  2  раза быстрее передатчика, тогда его фронты будут
чередоваться как минимум через (60+25)·2+28 = 198 тактов. Отсюда
вытекает, что <задержка> должна составлять 198-83 = 116 тактов.
Понятно?

Сейчас  по этому протоколу обменивается Wolf 3D Deathmatch Arena
Tournament 2003 :)

В  приложении должен лежать исходник асинхронного обмена (скоро-
сти  компьютеров  не должны различаться больше чем на 5%) - игра
"застрели  квадрат". Один  компьютер  вызывает процедуру MASTER,
а другой - SLAVE. Автоопределения пока нет!



Другие статьи номера:

News - схема паралельного интерфейса на AY.

Мысли - Crank заплатит любому 1000р за переделку STS под Scorpion.

ACEdit - Список Заслуженных Неиспользователей AC Edit.


Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
Модем - О проблеме при подключении модемов к машинам с раздельными полями памяти.
Экранные эффекты - "выбегающая строка" из игры Rockstar.
Форум - А.Стрельников. Перспективы развития ZX Spectrum.
Семь и 1/2 - Особенности национального рулеза 2 или упорядоченное движение электронов.
Презент - о том что же находиться в приложении к нашей газете.

В этот день...   21 ноября