Важная информация

User Tag List

Показано с 1 по 8 из 8

Тема: Расширение памяти Speccy до 128K

  1. #1
    Master Аватар для ILoveSpeccy
    Регистрация
    20.03.2007
    Адрес
    Germany
    Сообщений
    867
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    5
    Поблагодарили
    4 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию Расширение памяти Speccy до 128K

    Всем привет!

    Меня интересует как расширить память моего Speccy до 128K.

    Прочитал про это все что только можно, а на статике (2 чипа: 512K ОЗУ и 32K видеоОЗУ) собрать не получается

    Теория мне ясна (ну или почти ясна ), спасибо ZX-ревъю за 1991г.
    А на практике неполучается...
    Может у кого примерчики имеются (желательно на VHDL) или статейки хорошие на эту тему???

  2. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #2
    Guru Аватар для fan
    Регистрация
    11.02.2005
    Адрес
    Москва
    Сообщений
    3,789
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    4
    Поблагодарили
    4 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Фунцеклирование порта вопросов не вызывает ?

    Впрчем не важно , если сам порт уже реализован в классическом виде , то остаётся на "провода" идущие на старшие адреса RAM повесить дешифратор . Комбинация бит
    A14P=1 A15P=0 A16P=1 - SCR-0(RAM5)
    A14P=1 A15P=1 A16P=1 - SCR-1(RAM7)
    В свою очередь любой из этих вариантов означает обращение в VRAM (и отрубание RAM). Как видно бит A15P удобно использовать как старший бит для руления страницами VRAM (именно поэтому у меня на схеме на старший бит ША VRAM идёт A15P_aka_VA14 ).

    На старшие адреса RAM идут A14P A15P A16P влюбом порядке (точнее как удобней разводить ).

    Пустые страницы в RAM можно пустить под какуюнить фигню (как в хроме).

    Как видно всё очень просто.

    Добавлено через 10 минут
    Навсякий случий - бит SCR есесно нужно тоже подтыкать к старшей ножке ША VRAM во время работы ВК . Т.е. бит SCR заменяет бит A15P_aka_VA14 на время работы ВК .
    Последний раз редактировалось fan; 11.06.2007 в 18:47. Причина: Добавлено сообщение
    Спек128 - испанская выдумка, навязанная Сэру Клайву. © Shaos
    REAL HARDWARE MUST LIVE ! - http://SBLive.narod.ru/ZX-Spectrum/

  4. #3
    Master Аватар для ILoveSpeccy
    Регистрация
    20.03.2007
    Адрес
    Germany
    Сообщений
    867
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    5
    Поблагодарили
    4 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    2fan

    Ну в обшем с портом 7FFD все ясно...
    Читал твой пост насчет этого (тут) и понял так:

    Биты:

    0 -|
    1 -|
    2 ---- 0 - 7 страница памяти (страница 5 - Screen0, страница 7 - Screen1)
    3 ---- активная страница видеопамяти, откуда выводятся данные на телевизор
    4 ---- Переключатель ПЗУ 0-128К, 1-48К
    5 ---- Если 1 то спек запирается в 48К режиме до резета
    6 -|
    7 ---- В классическом варианте 128К не исползуются,
    но можно адресовать 512К как в пентагоне

    Память:

    0000 - 3FFF - ПЗУ 128/48
    4000 - 7FFF - Всегда страница 5
    8000 - BFFF - Всегда страница 2
    C000 - FFFF - Страницы 0 до 7 взависимости от состояния младших 3 битов порта 7FFD...

    Если я правильно понимаю то может быть такое:
    * Процессор работает в Screen0 а видеоконтроллер выводит со страницы Screen1...

    Вот вроде и все...

    А теперь к практике ( А вот на практике неполучается ничего )

    Комбинация бит
    A14P=1 A15P=0 A16P=1 - SCR-0(RAM5)
    A14P=1 A15P=1 A16P=1 - SCR-1(RAM7)
    В свою очередь любой из этих вариантов означает обращение в VRAM (и отрубание RAM). Как видно бит A15P удобно использовать как старший бит для руления страницами VRAM (именно поэтому у меня на схеме на старший бит ША VRAM идёт A15P_aka_VA14 ).
    Может у тебя есть примерчики на VHDL или сырки от ReSpecT 128К???
    Последний раз редактировалось ILoveSpeccy; 11.06.2007 в 19:28.

  5. #4
    Master Аватар для ILoveSpeccy
    Регистрация
    20.03.2007
    Адрес
    Germany
    Сообщений
    867
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    5
    Поблагодарили
    4 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Сделал!!!!!!!!!!!!

    Щас спать охота.... завтра напишу в чем дело было
    Миниатюры Миниатюры Нажмите на изображение для увеличения. 

Название:	Image0612-0303(CVBS).jpg 
Просмотров:	444 
Размер:	23.5 Кб 
ID:	5421  

  6. #5
    Guru Аватар для fan
    Регистрация
    11.02.2005
    Адрес
    Москва
    Сообщений
    3,789
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    4
    Поблагодарили
    4 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Значит вопрос решён ? Давай теперь 4 бит на точку делай

    ( З.Ы. Сырки у меня только на AHDL . )
    Спек128 - испанская выдумка, навязанная Сэру Клайву. © Shaos
    REAL HARDWARE MUST LIVE ! - http://SBLive.narod.ru/ZX-Spectrum/

  7. #6
    Master Аватар для ILoveSpeccy
    Регистрация
    20.03.2007
    Адрес
    Germany
    Сообщений
    867
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    5
    Поблагодарили
    4 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Ну в обшем дело было так

    Необходимо было полностю разрулить страницы 2,5 и 7.
    Я имею в виду вот что:

    Код:
    STR5 <= '1' when (A14 = '1' and A15 = '0') or (A14 = '1' and A15 = '1' and RAMPage = "101") else '0';
    STR7 <= '1' when A14 = '1' and A15 = '1' and RAMPage = "111" else '0';
    и т.д. ну и соответственно А14Р, А15Р и А16Р менять в случае работы проца в областях 4000-BFFF, если идет работа со страницами 5 и 7 то рулить VRAM, в осталных случаях просто присваивать адресам А14Р, А15Р и А16Р значения трех младших битов порта 7FFD.

    Впрчем не важно , если сам порт уже реализован в классическом виде , то остаётся на "провода" идущие на старшие адреса RAM повесить дешифратор .
    Может ты как-то проще сделал а я недопонял???
    И за сырки на AHDL буду очень благодарен!!!

    п.с. Какими прогами или играми потестить правильную работу 128К спека???
    Ну чтобы убедитья что все действительно правильно

  8. #7
    Guru Аватар для fan
    Регистрация
    11.02.2005
    Адрес
    Москва
    Сообщений
    3,789
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    4
    Поблагодарили
    4 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Впринципе достаточно только с порта ловить , т.к. при любом обращении в пятую банку комбинация бит будет 101 (с.м ниже).
    Чем тестить ХэЗэ , попробуй смотрелку триколора найти в разделе по графике (если не найдётся то там подскажут). Эта штука активно пишет в обе страницы VRAM и показывает их .

    Собсно вот такой у меня кусок -

    -- Порт #7FFD (128к).
    --------------------
    PORT_7FFD[5..0].clk=NOT(VA_CPU[15] or VA_CPU[1] or nIORQ or nWR or PORT_7FFD[5].q); -- Обращение к порту 7FFD .
    PORT_7FFD[5..0].clrn=nRESET;
    PORT_7FFD[5..0].d=D[5..0];
    -- PORT_7FFD[2..0].q; -- Выбор страницы для четвёртой банки .
    -- PORT_7FFD[3].q; -- Выбор экранной страницы . Подключается к A14 VRAM через буфер VA_BUF_OUT[].
    ROM48 =PORT_7FFD[4].q; -- Выбор ПЗУ 48к .
    -- PORT_7FFD[5].q; -- Блокировка порта 7FFD .
    -- Мультиплексор порта 7FFD . ////////////////
    if (VA_CPU[15] and VA_CPU[14]) then A14P=PORT_7FFD[0].q; A15P=PORT_7FFD[1].q; A16P=PORT_7FFD[2].q; -- если лезим в четвёртую банку .
    else A14P=VA_CPU[14]; A15P=VA_CPU[15]; A16P=VA_CPU[14]; -- если лезим в другие банки .
    end if;
    -- A14P и A16P - выходные пины . A15P - внутрений провод , идёт на CPU_VRAM_SEL_BUF выходит как VA[14],
    -- используется для выбора видео страничек (RAM5/RAM7) процессором .
    --================================================== ============================
    -- Селектор мозгов CPU , выбирает ROM, VRAM, RAM .
    --------------------------------------------------
    nVRAM=NOT( (A14P==B"1" and A15P==B"0" and A16P==B"1") or (A14P==B"1" and A15P==B"1" and A16P==B"1") ); --
    -- Проц полез в VRAM (RAM5 или RAM7) .

    (При A14=0 и A15=0 рубим все мозги и подтыкаем ПЗУ).
    Спек128 - испанская выдумка, навязанная Сэру Клайву. © Shaos
    REAL HARDWARE MUST LIVE ! - http://SBLive.narod.ru/ZX-Spectrum/

  9. #8
    Master Аватар для ILoveSpeccy
    Регистрация
    20.03.2007
    Адрес
    Germany
    Сообщений
    867
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    5
    Поблагодарили
    4 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от fan Посмотреть сообщение
    Впринципе достаточно только с порта ловить , т.к. при любом обращении в пятую банку комбинация бит будет 101 (с.м ниже).
    Чем тестить ХэЗэ , попробуй смотрелку триколора найти в разделе по графике (если не найдётся то там подскажут). Эта штука активно пишет в обе страницы VRAM и показывает их .

    Собсно вот такой у меня кусок -

    -- Порт #7FFD (128к).
    --------------------
    PORT_7FFD[5..0].clk=NOT(VA_CPU[15] or VA_CPU[1] or nIORQ or nWR or PORT_7FFD[5].q); -- Обращение к порту 7FFD .
    PORT_7FFD[5..0].clrn=nRESET;
    PORT_7FFD[5..0].d=D[5..0];
    -- PORT_7FFD[2..0].q; -- Выбор страницы для четвёртой банки .
    -- PORT_7FFD[3].q; -- Выбор экранной страницы . Подключается к A14 VRAM через буфер VA_BUF_OUT[].
    ROM48 =PORT_7FFD[4].q; -- Выбор ПЗУ 48к .
    -- PORT_7FFD[5].q; -- Блокировка порта 7FFD .
    -- Мультиплексор порта 7FFD . ////////////////
    if (VA_CPU[15] and VA_CPU[14]) then A14P=PORT_7FFD[0].q; A15P=PORT_7FFD[1].q; A16P=PORT_7FFD[2].q; -- если лезим в четвёртую банку .
    else A14P=VA_CPU[14]; A15P=VA_CPU[15]; A16P=VA_CPU[14]; -- если лезим в другие банки .
    end if;
    -- A14P и A16P - выходные пины . A15P - внутрений провод , идёт на CPU_VRAM_SEL_BUF выходит как VA[14],
    -- используется для выбора видео страничек (RAM5/RAM7) процессором .
    --================================================== ============================
    -- Селектор мозгов CPU , выбирает ROM, VRAM, RAM .
    --------------------------------------------------
    nVRAM=NOT( (A14P==B"1" and A15P==B"0" and A16P==B"1") or (A14P==B"1" and A15P==B"1" and A16P==B"1") ); --
    -- Проц полез в VRAM (RAM5 или RAM7) .

    (При A14=0 и A15=0 рубим все мозги и подтыкаем ПЗУ).
    А вот за это ОГРОМНОЕ СПАСИБО!!!
    Как я сам не догадался
    Так в 100 раз проще получается и логично

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Сигнал CAS расширение ОЗУ
    от AlexFantasy в разделе Память
    Ответов: 3
    Последнее: 05.05.2007, 15:38
  2. Небольшое расширение Unreal
    от valker в разделе Эмуляторы
    Ответов: 22
    Последнее: 19.03.2007, 21:45
  3. Расширение памяти компьютера "Байт".
    от andreil в разделе Память
    Ответов: 9
    Последнее: 13.05.2006, 15:27
  4. Расширение памяти
    от alexfreed в разделе Память
    Ответов: 7
    Последнее: 16.11.2005, 17:49

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •