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

User Tag List

Страница 3 из 4 ПерваяПервая 1234 ПоследняяПоследняя
Показано с 21 по 30 из 34

Тема: Fast PC-Loader

  1. #21
    Guru
    Регистрация
    27.02.2005
    Адрес
    москва
    Сообщений
    13,773
    Записей в дневнике
    1
    Спасибо Благодарностей отдано 
    143
    Спасибо Благодарностей получено 
    1,179
    Поблагодарили
    775 сообщений
    Mentioned
    18 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от zst Посмотреть сообщение
    Обычные регистра я загрузить смогу, а вот как правильно настроить прерывания, стек и запуск программы ?
    в случае sna48k есть одна проблема - адрес с которого должна продолжится программа (РС) хранится на стеке программы.
    (если в момент сброса игры стек находится в-данных, то они естественно портятся)
    и где после пересылки программы в-память 16384,49152 будут храниться данные которые необходимо переслать в регистры ?
    Последний раз редактировалось goodboy; 09.11.2015 в 21:54.

  2. #22
    Guru Аватар для zx-kit
    Регистрация
    11.04.2009
    Адрес
    г. Санкт-Петербург
    Сообщений
    3,603
    Записей в дневнике
    15
    Спасибо Благодарностей отдано 
    19
    Спасибо Благодарностей получено 
    65
    Поблагодарили
    51 сообщений
    Mentioned
    1 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию



    Схему подключения FT232RL к ATMEGA48PA-AU можно взять типовую. 4 линий для реализации UART с приостановкой передачи. На AVR подать частоту 12 MHz с FT232. Это обеспечит полную синхронизацию частот. В обоих микросхемах реальная частота будет не 115200, а 115384 бод. Но при полной синхронности тактовой частоты такое отклонение не имеет большого значения.

    Настройки для AVR: U2Xn = 1, UBRRn = 12. В основном цикле будет программное ожидание прихода байта через UART, запись в буфер и приостановка приема при необходимости. В подпрограмме прерываний от сигнала IN FE (чтение из порта магнитофона) будет читаться байт из буфера и передаваться побитно в Спектрум на вход TAPE-IN DIGITAL.

    При скорости 115200 бод передавать WAV 44100 Гц не получится. Для этого нужна скорость не меньше 441000 Гц.

    Перед передачай файла SNA в командном файле надо будет добавить передачу параметров:
    SNAXX050AXXXX > COM8

    ATMEGA примет эту строку параметров. По первым трем символам поймет, как загружать файл. Число 050A укажет координаты Y,X знакоместа на экране, куда записывать загрузчик на экран.

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

    Цитата Сообщение от goodboy Посмотреть сообщение
    в случае sna48k есть одна проблема - адрес с которого должна продолжится программа (РС) хранится на стеке программы.
    (если в момент сброса игры стек находится в-данных, то они естественно портятся)
    и где будут храниться данные с текущими значениями регистров ?
    SNA файл после ассемблера должен работать. А после эмулятора надо проверить. Возможно эмулятор умный и делает образ в момент, когда стек используется правильно.

    После того, как микроконтроллер поймет, что файл SNA, он записывает блок регистров в свою память. Потом передает на Спектрум на стандартной скорости BASIC-файл, где в строке REM расположен FAST-загрузчик в кодах. Он копирует себя в конец страницы 10 до адреса С000. При загрузке SNA микроконтроллер сохраняет данные, которые должны быть в этом месте в своей памяти. Потом загружаются страницы 128К. Затем, в самом конце загрузчик из страницы 10 переписывает себя на экран и запускает себя там. Загрузчик на экране загружает из микроконтроллера данные на место загрузчика в странице 10. Затем блок регистров. Загружает регистры и запускает программу. Во время загрузки SNA картинка не затирается, только в последнюю секунду. Если правильно подобрать координаты загрузчика на экране, то при работе программы это место закрасится и картинка не будет испорчена.

    Для новых программ можно будет попытаться загружать коды как раньше были в ленточных загрузчиках. А для старых самый простой вариант загружать SNA образы. Конечно, некоторые игры можно попытаться загружать как на ленте, но для этого надо с ними разбираться какие блоки куда грузятся и с какого адреса запускаются.
    Последний раз редактировалось zx-kit; 09.11.2015 в 22:07.
    "L-256"

  3. #23
    Guru
    Регистрация
    27.02.2005
    Адрес
    москва
    Сообщений
    13,773
    Записей в дневнике
    1
    Спасибо Благодарностей отдано 
    143
    Спасибо Благодарностей получено 
    1,179
    Поблагодарили
    775 сообщений
    Mentioned
    18 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от zst Посмотреть сообщение
    Если правильно подобрать координаты загрузчика на экране, то при работе программы это место закрасится и картинка не будет испорчена.
    всегда найдётся исключение, причём пользователь может и не-подозревать что на-экране есть важные для игры данные.

    Цитата Сообщение от zst Посмотреть сообщение
    микроконтроллер поймет, что файл SNA, он записывает блок регистров в свою память.
    и зачем изобретать ещё один вариант divIDE ???

  4. #24
    Guru Аватар для zx-kit
    Регистрация
    11.04.2009
    Адрес
    г. Санкт-Петербург
    Сообщений
    3,603
    Записей в дневнике
    15
    Спасибо Благодарностей отдано 
    19
    Спасибо Благодарностей получено 
    65
    Поблагодарили
    51 сообщений
    Mentioned
    1 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Цитата Сообщение от goodboy Посмотреть сообщение
    всегда найдётся исключение, причём пользователь может и не-подозревать что на-экране есть важные для игры данные.

    и зачем изобретать ещё один вариант divIDE ???
    Загрузчик надо размещать на экране там, где что-то движется. Тогда эти данные не особо важные. Хотя в Диззи лучше не стирать опору под ним.
    А какие еще могут быть варианты быстрой загрузки скомпилированной игры с PC на реал ?
    "L-256"

  5. #25
    Guru
    Регистрация
    27.02.2005
    Адрес
    москва
    Сообщений
    13,773
    Записей в дневнике
    1
    Спасибо Благодарностей отдано 
    143
    Спасибо Благодарностей получено 
    1,179
    Поблагодарили
    775 сообщений
    Mentioned
    18 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    мне кажется гораздо полезней будет девайс для сохранения/загрузки снэпшотов.
    сама игра загружается любым удобным для пользователя способом.

    допустим нет у меня возможности встроить в игру бессмертие - вот я и сохраняюсь/загружаюсь.
    нет времени пройти сразу до-конца dizzy5 - таже история.
    нет возможности сохранить/загрузить текущее состоянии в адвентюре и.т.д.

    если такое устройство окажется проще/дешевле divIDE возможно и будет востребовано.

  6. #26
    Guru Аватар для zx-kit
    Регистрация
    11.04.2009
    Адрес
    г. Санкт-Петербург
    Сообщений
    3,603
    Записей в дневнике
    15
    Спасибо Благодарностей отдано 
    19
    Спасибо Благодарностей получено 
    65
    Поблагодарили
    51 сообщений
    Mentioned
    1 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Цитата Сообщение от goodboy Посмотреть сообщение
    мне кажется гораздо полезней будет девайс для сохранения/загрузки снэпшотов.
    сама игра загружается любым удобным для пользователя способом.

    допустим нет у меня возможности встроить в игру бессмертие - вот я и сохраняюсь/загружаюсь.
    нет времени пройти сразу до-конца dizzy5 - таже история.
    нет возможности сохранить/загрузить текущее состоянии в адвентюре и.т.д.

    если такое устройство окажется проще/дешевле divIDE возможно и будет востребовано.
    FAST PC LOADER простое устройство на двух микросхемах. Для подключения требуется два сигнала и питание, может быть ресет. Это можно подключить проводками у встроить в любой спек. Хотя это больше пригодится мне для отладки видоекарты.

    Для сохранения sna на SD-CARD, USB-FLASH, USB-UART потребуется ПЛИС, ОЗУ, ПЗУ или образ в ОЗУ, установка в шину ZST-BUS. Давайте обсудим ее функционал. Может это лучше добавить в модуль MIO ?
    "L-256"

  7. #27
    Guru Аватар для zx-kit
    Регистрация
    11.04.2009
    Адрес
    г. Санкт-Петербург
    Сообщений
    3,603
    Записей в дневнике
    15
    Спасибо Благодарностей отдано 
    19
    Спасибо Благодарностей получено 
    65
    Поблагодарили
    51 сообщений
    Mentioned
    1 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Потихоньку дорисовываю схему. Для простых компьтеров без ULA и микроконтроллеров можно попробовать загружать данные по 8 бит.
    "L-256"

  8. #28
    Guru Аватар для zx-kit
    Регистрация
    11.04.2009
    Адрес
    г. Санкт-Петербург
    Сообщений
    3,603
    Записей в дневнике
    15
    Спасибо Благодарностей отдано 
    19
    Спасибо Благодарностей получено 
    65
    Поблагодарили
    51 сообщений
    Mentioned
    1 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    BASIC загрузчик
    Код:
    5CCB 0001                    ; номер строки BASICa = 1 
         2600                    ; длина строки = 38 + 4 = 42 байта
         F9C0                    ; RANDOMIZE USR 
         300E                    ; 0 - фиктивный адрес в символьном виде для экономии времени загрузки     
         0000DA5C00              ; реальный адрес начала загрузчика в кодах = 5CDA
         3AEA                    ; :REM - начало камментариев, где находится загрузчик в кодах
    
    5CDA F3         di           ; запрет прерываний
    5CDB 3E08       ld   a,08    ; BORDER=BLACK, TAPE_OUT=1 - пауза отключена
    5CDD D3FE       out  (FE),a
    5CDF 2100BF     ld   hl,BF00 ; адрес начала загрузки второго загрузчика
    5CE2 01FEFF     ld   bc,FFFE ; при чтении из порта FE ни одна линия клавиатуры не активирована
    
    5CE5 ED78       in   a,(c)   ; ожидание прихода стартового байта AA
    5CE7 FEAA       cp   AA
    5CE9 20FA       jr   nz,5CE5
    
    5CEB ED78       in   a,(c)   ; чтение байта данных из AVR (всего 256)
    5CED 77         ld   (hl),a  ; запись байта в память
    5CEE 2C         inc  l       ; следующий адрес и 
    5CEF 20FA       jr   nz,5CEB ; если не последний байт - продолжение загрузки
    
    5CF1 C300BF     jp   BF00    ; запуск второго загрузчика с адреса BF00
    
    5CF4 0D                      ; конец строки BASICa
    "L-256"

  9. #29
    Guru
    Регистрация
    27.02.2005
    Адрес
    москва
    Сообщений
    13,773
    Записей в дневнике
    1
    Спасибо Благодарностей отдано 
    143
    Спасибо Благодарностей получено 
    1,179
    Поблагодарили
    775 сообщений
    Mentioned
    18 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от zst Посмотреть сообщение
    BASIC загрузчик
    Код:
    5CEB ED78       in   a,(c)   ; чтение байта данных из AVR (всего 256)
    5CED 77         ld   (hl),a  ; запись байта в память
    5CEE 2C         inc  l       ; следующий адрес и 
    5CEF 20FA       jr   nz,5CEB ; если не последний байт - продолжение загрузки
    почитай про работу команд INI/INIR

  10. #30
    Guru Аватар для zx-kit
    Регистрация
    11.04.2009
    Адрес
    г. Санкт-Петербург
    Сообщений
    3,603
    Записей в дневнике
    15
    Спасибо Благодарностей отдано 
    19
    Спасибо Благодарностей получено 
    65
    Поблагодарили
    51 сообщений
    Mentioned
    1 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Цитата Сообщение от goodboy Посмотреть сообщение
    почитай про работу команд INI/INIR
    На мой взгляд, скорость достаточно хорошая получится и без INI.
    Команды INI слишком быстрые. ATMEGA у меня сможет передавать максимум 150 KB/s.
    В основном загрузчике будут 32 одинаковые блока команд:

    in a,(c)
    ld (hl),a
    inc hl

    Они обеспечивают оптимальную скорость 140 KB/s.
    Потом будет проверка цикла через каждые 32 байта:
    (Тут надо подумать, какая проверка лучше.)
    ld a,d
    or e
    jp nz, LABEL1

    Это снизит скорость до 135 KB/s.

    Тогда получится такое время загрузки SNA-файлов:
    T48 = 1,4 + 1,4 + 0,3 + 0,4 = 3,5 s
    T128 = 1,4 + 1,4 + 0,3 + 1,0 = 4,1 s
    Где 1,4 s - минимальное время пилот-тона, 0.3 s - время загрузки 50 байтов на стандартной скорости, 0.4 s - время загрузки 48 KB, 1.0 s- время загрузки 128 KB.

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

    Можно использовать и ini:

    ini
    inc b ; желательно, чтобы b был всегда равен FF
    dec e

    Это обеспечит скорость 145,8 KB/s. С проверкой цикла снизится до 140 KB/s

    В первом из 32х блоков dec e заменить на dec de.

    После 32-го блока добавить:

    jp nz, LABEL1
    ld a,d
    or e
    jp nz, LABEL1

    В de у нас будет размер загружаемого блока, кратный 32 байтам.

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

    Давайте попробуем сделать загрузку командой INIR. Это обеспечит скорость около 3500000 / 21 = 167 KB/s. Частоту UART FT232 и AVR тогда надо будет настроить на скорость 2 Mbps. Для этого к AVR подключим кварц на 16 MHz.
    Последний раз редактировалось zx-kit; 20.12.2015 в 20:31.
    "L-256"

Страница 3 из 4 ПерваяПервая 1234 ПоследняяПоследняя

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

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

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

Похожие темы

  1. Fast Tracker
    от GibbS в разделе Музыка
    Ответов: 7
    Последнее: 31.03.2018, 23:05
  2. Fast test AY
    от jerri в разделе Программирование
    Ответов: 3
    Последнее: 07.11.2013, 19:09
  3. Basic Loader Creator
    от Faster в разделе Софт
    Ответов: 39
    Последнее: 10.07.2013, 16:09
  4. Mod Loader 4 GS
    от breeze в разделе Программирование
    Ответов: 19
    Последнее: 20.10.2008, 16:13
  5. Fast 48x48 MUL | DIV
    от Sinus в разделе Программирование
    Ответов: 6
    Последнее: 05.07.2005, 17:00

Ваши права

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