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

User Tag List

Страница 2 из 5 ПерваяПервая 12345 ПоследняяПоследняя
Показано с 11 по 20 из 44

Тема: Очередной однобитный велосипед для спектрума

  1. #11
    Member
    Регистрация
    06.02.2017
    Адрес
    г. Тольятти
    Сообщений
    36
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от char Посмотреть сообщение
    через кемпстон делай
    Через кемпстон, к сожалению, нельзя:
    - во первых некоторые клоны не имеют кемпстона.
    - во вторых для синхронизации всё равно нужна обратка (в примере программы не показана)

    - - - Добавлено - - -

    Цитата Сообщение от bigral Посмотреть сообщение
    Если предположить что разрабатывается устройство для zx edge connector-а, то в схему такого устройства обычно ставят ROM (называют shadow rom) и порты и\или регистры отраженные на память в диапазоне 0-3fff, данного железа хватает чтобы читать\писать данные куда угодно (fdd, ide, mmc, serial т.д.). DivIDE, TRDOS, Interface1 все сделанны таким образом. Если чтото и делать то надо делать совместимым с существующими програмными интерфейсами (для того чтобы опять не переделывать загрущики...).
    Я не гуру. Я - велосипедист. Это фигня в первую очередь размышление для отечественных клонов у которых нет zx edge. Эдакий плохонький суррогат дисковода.
    Это для того чтобы прочитал случайно чувачок, вспомнил детство, сходил в гараж, достал свой ленинград 1, припаял в него четыре проводка от ардуинки за 150 рублей и радовался жизни.
    Если же передо мной маньяк спектрума, у которого FDD + IDE + MMC, то ему эта тема противопоказана: тот же divIDE гораздо быстрее, совместимее и уже есть в наличии.
    Просто чувачок, вспомнивший детство, если увидит цену на divIDE и посчитает количество проводков которые надо ему припаять... и подумает что лучше купить пивка и не мучится ностальгией.

    P.S. тема родилась как возможное решение проблемы загрузки бета-бейсика , а также сохранением программ на флешку.
    Как бы если есть вариант проще и дешевле - рекомендуйте. И с чистой совестью похороним эту тему.

    - - - Добавлено - - -

    Цитата Сообщение от Бука Посмотреть сообщение
    Уже давно изобретен "велосипед", см https://sites.google.com/site/interface1bis/home
    Правда дофига хотят - 44 евро...
    Дык вот именно, про то и речь. Ардуинка в 20 раз дешевле и если нет системного разъёма, то и паять в 20 раз легче.
    А скорость загрузки - ну в 2-3 раза дольше

    - - - Добавлено - - -

    Цитата Сообщение от blackmirror Посмотреть сообщение
    Это 8-уровневое дерево ветвлений, в сумме на всех уровнях в нём 255 условных переходов, и 256 команд загрузки всевозможных значений байта на последнем уровне. Для него сойдёт любой флаг для которого есть условный переход. Но если 7й разряд не меняет своё значение, то код krt17 намного проще и короче. Также через TapeOut нужно передавать сигнал готовности к чтению байта, а в начале выдать синхросигнал для настройки скорости обмена, чтобы Z80 не подавился данными.
    Спасибо что подсказали про дерево ветвлений. Я практиковался в кодах Z80 только в прошлом веке, поэтому могу не увидеть некоторые особенности.
    Просто в вашем случае получается очень приличный блок кода. Если этот код будет размещён во внешнем ПЗУ то размеры не критичны.
    А изначальная задумка была в том, чтобы минимизировать вмешательство в схему спектрума (типа те кто способен припаять ПЗУ, могут припаять и другую схемку, которая в 20 раз быстрее).
    Если же такой драйвер загружать в оперативу через LOAD "", то во первых это будет довольно чувствительно по времени, а во вторых - займёт драгоценную память, которой может не хватить при загрузке какой-то здоровой программы.

    Соглашусь что код krt17 попроще и наверное стоит его взять за основу.
    Ну или как компромисс: простой загрузчик загружает два варианта кода. Если есть возможность - пользуется быстрым но длинным, если нет возможности - пользуется медленным но коротким. В любом случае чтобы определить достаточность скорости надо сначала поэкспериментировать.

    Про TapeOut не написал для краткости. Возможно им придётся дёргать не раз на байт а даже раз на бит. Ну или припаять ещё один проводок ардуинки на IORQ.
    Пока ни устройства ни программы нет. Пока это просто задумка.

  2. #12
    Guru Аватар для Lethargeek
    Регистрация
    08.09.2005
    Адрес
    Воронеж
    Сообщений
    4,553
    Записей в дневнике
    3
    Спасибо Благодарностей отдано 
    264
    Спасибо Благодарностей получено 
    209
    Поблагодарили
    167 сообщений
    Mentioned
    11 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от mmxdmv Посмотреть сообщение
    Через кемпстон, к сожалению, нельзя:
    - во первых некоторые клоны не имеют кемпстона.
    - во вторых для синхронизации всё равно нужна обратка
    через кемпстон (с вариантом выбора через синклер) зато можно же грузить сразу по 4-5 бит! а обратку через tapeout пустить отдельно
    Прихожу без разрешения, сею смерть и разрушение...

  3. #13
    Activist
    Регистрация
    15.01.2005
    Сообщений
    201
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    7
    Поблагодарили
    7 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    зачем обратка?
    4 бита данных (полубайт), а пятым щелкать 0/1 для синхронизации

  4. #14
    Member
    Регистрация
    06.02.2017
    Адрес
    г. Тольятти
    Сообщений
    36
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Lethargeek Посмотреть сообщение
    через кемпстон (с вариантом выбора через синклер) зато можно же грузить сразу по 4-5 бит! а обратку через tapeout пустить отдельно
    До четырёх и пяти считать умею.
    Но на самом деле это не ускорит в 4 раза:
    - ардуинка не шибко быстрое устройство. Она должна ещё на флешку лазить за данными. В это время Z80 будет простаивать.
    - у Z80 вроде не было команды "обменять нибблы", а значит придётся делать 4 сдвига. Исправлено - команда была. Но она тормозная и малость неудобная. Так что в нашем случае это как бы без разницы.
    - непонятно что будет в старших битах - придётся выделять маской младшие.
    - в примерах ещё я контрольную сумму не считаю, это тоже будет замедлением.

    В общем, в два раза гарантированно ускорится, а может быть даже в три. Но это потребует увеличение количества проводков практически в 2 раза, это потребует хитрый штеккер или переключатель чтобы ардуинка не дай бог вошла в конфликт с джойстиком и коротнула (про нормально замкнутые джойстики не забываем)

    Через синклер тоже может быть каша в дешифрации (здесь честно скажу я схему не рассматривал, могу ошибаться). Тоже не хочется чтобы случайно нажатая клавиша приводила к ошибке загрузки. Или даже более того - порче переданной команды (вместо найти файлы по маске *.* ардуинка получит команду удалить файлы по маске *.*)

    Так что выигрыш с кемпстоном не большой (ну ускорим загрузку на 3 секунды), а проблем можно поиметь целую катушку.
    Опять же чисто риторический вопрос - стали бы вы полчаса разбираться со схемой, чтобы сэкономить три секунды на загрузку?

    P.S. Читал что в конце эпохи спектрума фирма Codemasters делала какой-то девайс для кемпстона. С помощью которого с CD-диска игры грузились гораздо быстрее... но думаю это не наш случай.
    Последний раз редактировалось mmxdmv; 02.03.2017 в 00:30.

  5. #15
    Activist
    Регистрация
    15.01.2005
    Сообщений
    201
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    7
    Поблагодарили
    7 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    а теперь покури команды RLD и RRD

  6. #16
    Member
    Регистрация
    06.02.2017
    Адрес
    г. Тольятти
    Сообщений
    36
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от char Посмотреть сообщение
    зачем обратка?
    4 бита данных (полубайт), а пятым щелкать 0/1 для синхронизации
    Обратка нужна для скорости.
    Если Z80 будет считать синхронизацию, то цикл синхронизации должен быть БОЛЬШЕ (наверное раза в два или даже три) чем цикл чтения из порта.
    Если же Z80 будет тупо дёргать ногой "дай следующий байт", то синхронизироваться будет ардуинка, которая в разы быстрее.

    Короче с обраткой в 2-3 раза быстрее и в несколько раз проще.

    Да и в любом случае обратка нужна. Как вы объясните ардуинке что хотите поиграть в Dizzy?

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

  8. #17
    Activist
    Регистрация
    15.01.2005
    Сообщений
    201
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    7
    Поблагодарили
    7 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    одно дело пользователям в старые компьютеры, которые итак еле дышат, лезть с паяльником, и совсем другое дело - просто воткнутся в стандартные пару разъемов - кемпстон и tape

    можно читать полубайт и ждать следующего, а можно считать несколько полубайтов влет и потом уже синхрануться

    в общем, куда-то припаиваться - не дело, если можно этого избежать

  9. #18
    Member
    Регистрация
    06.02.2017
    Адрес
    г. Тольятти
    Сообщений
    36
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от char Посмотреть сообщение
    а теперь покури команды RLD и RRD
    Покурил.
    Признаю ошибку, команда есть в наборе Z80 (но народ жалуется что на некоторых клонах некорректно работает).
    Но на итог это не повлияет: команда выполняется ажно 18 тактов.
    Типа 4 раза сдвинуть аккумулятор - это 16 тактов

  10. #19
    Activist
    Регистрация
    15.01.2005
    Сообщений
    201
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    7
    Поблагодарили
    7 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    зато с масками проблем нет и с записью в память
    в общем, может выглядеть как-то так, навскидку

    ld c,#10

    load:
    dup <на сколько байт подряд хватит наглости>
    in a,(#1f)
    rld
    inc de ;not used, just for time, maybe
    in a,(#1f)
    rld
    inc hl
    edup

    ld e,a

    wait:
    in a,(#1f)
    xor e
    and c
    jp z,wait

    jp load

  11. #20
    Guru Аватар для Lethargeek
    Регистрация
    08.09.2005
    Адрес
    Воронеж
    Сообщений
    4,553
    Записей в дневнике
    3
    Спасибо Благодарностей отдано 
    264
    Спасибо Благодарностей получено 
    209
    Поблагодарили
    167 сообщений
    Mentioned
    11 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    зачем два раза rld? первый нибл просто пишем ld (hl),a
    Прихожу без разрешения, сею смерть и разрушение...

Страница 2 из 5 ПерваяПервая 12345 ПоследняяПоследняя

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

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

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

Похожие темы

  1. однобитный WAV
    от ALKO в разделе Софт
    Ответов: 26
    Последнее: 28.07.2021, 05:03
  2. Наборы для сборки Орион-128/запчасти для Спектрума.
    от falanger в разделе Барахолка (архив)
    Ответов: 15
    Последнее: 05.09.2007, 19:51
  3. Ответов: 11
    Последнее: 04.08.2006, 15:08
  4. Ответов: 21
    Последнее: 23.02.2005, 20:56

Ваши права

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