Итог
Ты собрал цветной плоттер и подключил его к компьютеру. Всё, что он умеет, — это несколько формул, и каждую ты вывел из того, что должна делать машина:
- шаг по стрелке —
LXS = CKL И (LEFT ИЛИ RIGHT): такт 60 Гц проходит к мотору, пока держишь стрелку; - перо — триггер-переключатель:
D = НЕ Q, каждое нажатие PEN UP/DOWN переворачивает; - мотор револьвера — два триггера в кольце: AB → BC → CD → DA;
- четверть оборота — 6 шагов на CD4017, перенос считает перья:
CP1 CP0; - крутить, пока не совпало —
MOVE = (C0 ⊕ CP0) ИЛИ (C1 ⊕ CP1); - перо вниз только на месте —
PDN = PEN И НЕ BUSY,BUSY = MOVE ИЛИ MOVED; - наш адрес — «ни один из 14 бит не отличается»:
SELP = НЕ (G1 ИЛИ G2 ИЛИ G3 ИЛИ G4); - кто управляет — CD4019:
D = A·REMOTE + B·НЕ REMOTE.
А программа знает только три адреса: $C090 — шаги и перо, $C091 — концевики и BUSY, $C092 — цвет.
Что дальше
- Нарисуй свой рисунок: допиши в программу строки
DATAна языке плоттера (P,C,M,L,E) и пункт меню. - Поменяй спирограф: другое отношение радиусов (
4 * T / 3в строках 2636 и 2640) — другой узор. - Ускорь револьвер: генератор
CKT— 60 Гц вместо 10 (стол успеет? посмотри на BUSY). - Пятое перо не поместится — а почему цветов всего четыре? Посчитай биты в регистре
$C092.