ZX Spectrum Harlequin 128k мод 256к

Оригінальний ZX Spectrum, його версії та клони

Модератор: alvis

Відповісти
Аватар користувача
Mak7ym
Повідомлень: 44
З нами з: 23 червня 2023, 20:06
Дякував (ла): 23 рази
Подякували: 21 раз

ZX Spectrum Harlequin 128k мод 256к

Повідомлення Mak7ym »

Всім привіт!

Вирішив поділитися модом ZX Spectrum Harlequin 128k до 256к.

Невелика перед історія, для чого мод взагалі потрібен. Для іншого свого проєкта я використовую асемблер ALASM, крутезне інтегроване середовище для розробки. Цей інструмент вимагає пам'яті і немало, якщо коротко, то при використанні 128к, доступно тільки 2 вікна вихідного коду, що достатньо для маленьких проєктів. В більших проєктах працювати можна, але вже не комфортно. Крім того, компіляція займає багато часу за рахунок постійної підгрузки файлів з диска.

Тому з'явилася ідея розширити об'єм пам'ять хоча б до 256Кб. Це дасть +6 вікон для редактора кода і значно пришвидшить компіляцію.

Після вивчення схеми Harlequin 128k rev 2D, виявилося, що на плату можна встановлювати два різновида пам'яті - UM61512 (64Kb) або HM628128 (128Кб).
Наскільки я зрозумів, DonSuperfo це зробив на випадок, якщо не вдасться знайти UM61512.
Ще один момент - можливо, то мені не повезло - всі 6 мікросхем виявилися битими, хоча замовляв на алі нові. Пізніше, замінив на HM628128.
Проте, 64Кб з одної та 64Кб з іншою мікросхеми не були задіяні - тому і захотілося їх якось використати в якості додаткової пам'яті.

По перше, я поцікавився, як це зроблено у пентагона, бо аласм має драйвер для пентагона до 1024Кб. Виявилося все досить просто - порт 0x7FFD для керування банками пам'яті має 2 вільних біта (6,7) і на них якраз і повішали перемикачі груп банків:
table_spectrum_paging_register_128K.png
Групуються вони по вісім банків. Тепер біт 6 відповідає за нульову і першу групу з вісьми 16Кб банків.

Залишилося розробити схему, яка б при включеному 6му біті перемикала групу 0 на 1 і навпаки.

Логічно було б просто додати тригер і кинути його вихід прямо на А16 першої і другої мікросхеми, але це не так...
Проблема криється в архітектурі самого спека:
HARLEQUIN 128 Issue 2D.pdf
Суть така, що друга мікросхема пам'яті використовується відео підсистемою і називається contended. Це означає, що пам'ять ділиться між процесором і схемою генерації зображення на екрані. Тобто, під час доступу відео підсистеми, процесор зупиняється і відмальовуються біти на екрані, потім процесор продовжує свою роботу. Тому при доступі до пам'яті відео підсистеми, треба переключати на нульову групу банків - там де лежить відеобуфер.
Насправді, нічого складного в цьому немає - на схемі арлекіна можна знайти сигнал AL, який і відключає адрсесацію пам'яті від процесора, щоб не заважати відео підсистемі. Цей сигнал буде використаний для перекриття сигнала від тригера і скидання до нульвої групи банків.

Сама схема наведена нижче:
zx-128kto256k-mod.png
zx-128kto256k-mod.pdf
Потрібно лише 3 мікросхеми: 74НС74, 74НС04 і 74НС11.

Сигнал AL інвертується і через елемент AND міксується з виходом тригера - це дозволяє примусово переключатися на нульову групу банків.
Теж, вибір першого банка відбувається, якщо процесор звертається за адресами 0xC000-0xFFFF. В інших випадках, завжди буде вибрана нульова група банків.

Мікросхеми спаяв на окремомій платі для прототипування з конектором. Необхідні сигнали взяв напряму з ножок мікросхем.

Оскільки А16 у мікросхем був підтягнутий до землі, треба було скалпелем відключити пад від землі і підпаяти вивід до плати.
З мікросхемою U3x поблем не було, а от з U8x - були - цей вивід використовується, як перехідний отвір до конденсатора і резистора. Тому треба було відрізати доріжку на верхній стороні плати і підпаяти землю напряму до резистора.

Як то все виглядає, можна побачити на фото нижче:
IMG_6519.jpeg
IMG_6520.jpeg
IMG_6521.jpeg
IMG_6522.jpeg
Ну і власне, результат - АЛАСМ задетектив 256Кб:
IMG_6516.jpeg
Класні були часи, коли паяльником і парою мікрух можна було розширяти пам'ять свого компа... це вам не ваші отеті вот айфони :) :) :)
У вас недостатньо прав для перегляду приєднаних до цього повідомлення файлів.
Відповісти

Повернутись до “ZX Spectrum”