User Tag List

Показано с 1 по 10 из 1148

Тема: Sizif-512

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    Регистрация
    03.05.2020
    Адрес
    г. Челябинск
    Сообщений
    796
    Записей в дневнике
    3
    Спасибо Благодарностей отдано 
    260
    Спасибо Благодарностей получено 
    274
    Поблагодарили
    145 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Uzix Посмотреть сообщение
    Для fatall нужен 48 бейсик. Думаю, можно его зашить вместе с fatall в кусок ПЗУ с тестами, главное по правильным смещениям всё разложить.
    А как ром-фаталл управляет страницами ПЗУ ? То есть вот он запустился из 0000-3fff, себя куда-то там наверх развернул, дальше (видимо) хочет включить в нижние 16к бейсик 48 - и что нам ему для этого нужно дать ?

    Работает и пропатченная под DivMMC версия (с отключенным BDI, само собой), и обычная 0.333 с ZC при запуске с дискеты/готека. Спектрум без WildPlayer был бы мне не особо нужен
    Хм. У меня оба случая мимо, причем на обеих машинах (с флопом и без флопа) (((
    Для корректности определения карты в ZC фиксил формирование данных, читаемых из 77h таким образом:
    wire [7:0] zc_data = {7'b0000000, ~sd_cd}; //+
    (если sd_cd=0 (работает esxdos+divmmc) то в ZC из 77h читается 1 ("нет карты"), если sd_cd=1 (режим 128+флоп), то in(77h) дает 0 - вроде все правильно).

    Может и впрямь надо поискать какую-то особую олдскульную карту <2гб с обязательно форматнуть в FAT16 ?

    Еще вот на этом фрагменте мозг сломал:
    Код:
    reg [3:0] spi_cnt;
    wire spi_cnt_en = ~spi_cnt[3] | spi_cnt[2] | spi_cnt[1] | spi_cnt[0];
    assign cpuwait = ~spi_cnt[3];
    always @(posedge clk28 or negedge rst_n) begin
        if (!rst_n)
            spi_cnt <= 0;
        else if ((port_eb_cs || port_57_cs) && (bus.rd || bus.wr))
            spi_cnt <= 4'b1110;
        else if (spi_cnt_en && ck7)
            spi_cnt <= spi_cnt + 1'b1;
    end
    При каждом обращении процессора к порту 57h (или EBh для divmmc) spi_cnt выставляется в 1110 и на каждый такт ck7 увеличивается на 1, пока не достигнет значения 1000 (тогда его деактивирует spi_cnt_en). По логике ZC тут должно формироваться 8 тактов spi clock для чтения байта из карты, я насчитываю 10 (F,0,1,2,3,4,5,6,7,8 - стоп).... Как это работает ?
    И тут еще есть cpuwait,видимо он для того, чтоб добавлять вейтовые такты процессору на операцию ввод-вывода (но я тоже не нашел, где). Этого нет в revA - может в этом разница ?


    Запустил этот тест из состава WDC1_3F, минуту бежал прогресс бар, потом вывел это:
    ...
    Хз что это значит. Сам WildCopier карту видит.
    Видимо это значит, что во все проходах теста все хорошо и ругаться не на что. У меня ругается красным в одну строку.
    Все-таки попробую поискать другую карту, мои трансценды, видимо, кошерными не являются )

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

  3. #2

    Регистрация
    18.05.2020
    Адрес
    г. Белгород
    Сообщений
    527
    Спасибо Благодарностей отдано 
    170
    Спасибо Благодарностей получено 
    637
    Поблагодарили
    201 сообщений
    Mentioned
    8 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от valerium Посмотреть сообщение
    А как ром-фаталл управляет страницами ПЗУ ? То есть вот он запустился из 0000-3fff, себя куда-то там наверх развернул, дальше (видимо) хочет включить в нижние 16к бейсик 48 - и что нам ему для этого нужно дать ?
    Mick проделал большую работу по дизасемблированию кода, можно поспрашивать у него: https://zx-pk.ru/threads/7238-fatall...l=1#post890293 .


    Цитата Сообщение от valerium Посмотреть сообщение
    wire [7:0] zc_data = {7'b0000000, ~sd_cd}; //+
    Не понял, зачем инвертировать? sd_cd - сигнал наличия sd карты. Когда карта вставлена, этот сигнал физически замыкается на землю и становится 0.
    По документации на ZC:
    Код:
    Порт конфигурации 77h
    На запись:
    bit 0 – питание SD-карты (0 – выключено, 1 -
    включено)
    bit 1 – управление сигналом CS
    bit 2..7 – не используются
    На чтение:
    bit 0 – если 0 – SD-карта установлена, 1 – SD-карта
    отсутствует
    bit 1 - если 1 – то на карте включен режим Read
    only, если 0 – режим Read only не включен
    bit 2..7 – не используются.
    Т.е. инвертировать не надо.

    Цитата Сообщение от valerium Посмотреть сообщение
    При каждом обращении процессора к порту 57h (или EBh для divmmc) spi_cnt выставляется в 1110 и на каждый такт ck7 увеличивается на 1, пока не достигнет значения 1000 (тогда его деактивирует spi_cnt_en). По логике ZC тут должно формироваться 8 тактов spi clock для чтения байта из карты, я насчитываю 10 (F,0,1,2,3,4,5,6,7,8 - стоп).... Как это работает ?
    Можно долго голову ломать, лучше для начала посмотреть в тестбенче


    Цитата Сообщение от valerium Посмотреть сообщение
    И тут еще есть cpuwait,видимо он для того, чтоб добавлять вейтовые такты процессору на операцию ввод-вывода (но я тоже не нашел, где). Этого нет в revA - может в этом разница ?
    Это нужно только для 14МГц

    Этот пользователь поблагодарил Uzix за это полезное сообщение:

    valerium(05.12.2021)

  4. #3

    Регистрация
    03.05.2020
    Адрес
    г. Челябинск
    Сообщений
    796
    Записей в дневнике
    3
    Спасибо Благодарностей отдано 
    260
    Спасибо Благодарностей получено 
    274
    Поблагодарили
    145 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Uzix Посмотреть сообщение
    Не понял, зачем инвертировать? sd_cd - сигнал наличия sd карты. Когда карта вставлена, этот сигнал физически замыкается на землю и становится 0.
    У меня он формируется не со слота карты, а с внешнего,скажем так, переключателя, чтоб при вставленной карте можно было выбрать запуск не divmmc, а меню128+trdos, и тогда работает встроенный bdi.
    Поскольку ZC используем в паре с bdi, то он нам нужен именно когда sd_cd=1, чтоб включился bdi. А zc при этом в младшем бите должен видеть 0 для осознания вставленной карты - поэтому и инвертирую.
    Если в режиме divmmc (sd_cd=0) запускать софт для zc, по идее он сразу должен видеть единицу в младшем бите порта 77h и правильно думать, что карты для него нет.

    Можно долго голову ломать, лучше для начала посмотреть в тестбенче
    Магическая штука ! Действительно 8 - с 0го по 7й. Все правильно.

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

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

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

Похожие темы

  1. Greed 512 bytes
    от denpopov в разделе Игры
    Ответов: 13
    Последнее: 10.03.2014, 14:14
  2. Asteroid 512
    от SaNchez в разделе Игры
    Ответов: 0
    Последнее: 04.11.2012, 00:44
  3. Пентагон 128=>>512
    от IlyaMIV в разделе Pentagon
    Ответов: 2
    Последнее: 16.01.2010, 07:05
  4. Зеленый GS 512
    от yorgee в разделе Барахолка (архив)
    Ответов: 0
    Последнее: 22.03.2009, 20:12
  5. 512 bite intro
    от newart в разделе Программирование
    Ответов: 10
    Последнее: 30.07.2006, 19:40

Ваши права

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