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

User Tag List

Страница 2 из 4 ПерваяПервая 1234 ПоследняяПоследняя
Показано с 11 по 20 из 34

Тема: Fast PC-Loader

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

    По умолчанию

    там будет что-то типа:

    lp1:
    in a,(#1f)
    rra
    jp c,lp1

    ...

    lp2:
    in a,(#1f)
    rra
    jp nc,lp2

    ...

    грубо, с избыточностью, ну пусть тактов 50 на полбайта, 100 на байт, 600 байт на прерывание, 30000 байт на сек.
    Последний раз редактировалось char; 20.09.2015 в 12:16.

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

    По умолчанию

    а что распространеннее и доступнее для юзера - разъем кемпстона или шина?

    ---------- Post added at 15:32 ---------- Previous post was at 15:21 ----------

    Цитата Сообщение от char Посмотреть сообщение
    там будет что-то типа:

    lp1:
    in a,(#1f)
    rra
    jp c,lp1

    ...

    lp2:
    in a,(#1f)
    rra
    jp nc,lp2

    ...

    грубо, с избыточностью, ну пусть тактов 50 на полбайта, 100 на байт, 600 байт на прерывание, 30000 байт на сек.
    кстати, можно и быстрее, наверное, - если передавать-ловить пакетами, синхронизируясь не на каждый новый полубайт, а лишь перед получением очередной пачки в несколько байт...

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

    По умолчанию

    Подпрограмма загрузки 256 байтов.
    Код:
    10 in a, (#1F) ; 11
       rld         ; 18
       in a, (#1F) ; 11
       rld         ; 18
       inc l       ; 4
       djnz 10B    ; 13
    На загрузку байта тратится 11+18+11+18+4+13=75 тактов.
    Чтобы загрузить 48К потребуется около 48*1024*75/3500000 = 1.05 секунды.
    Последний раз редактировалось zx-kit; 20.09.2015 в 13:08.
    "L-256"

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

    По умолчанию

    это все понятно, но вот синхронизацию передачи pc<->zx, необходимость избыточности или нет, количество повторов байт для стабильного захвата на zx - все это нужно тестировать...
    по факту же - программа для юзера будет стартовать "моментально" / сразу после "как-магнитофонной загрузки небольшого бейсик-файла"...

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

    По умолчанию

    Цитата Сообщение от char Посмотреть сообщение
    это все понятно, но вот синхронизацию передачи pc<->zx, необходимость избыточности или нет, количество повторов байт для стабильного захвата на zx - все это нужно тестировать...
    Этим занимается микросхема FT232. У нее внутри протокол USB с контролем ошибок. Нам надо выбрать скорость последовательного порта. И прикинуть, сможет ли с такой скоростью микроконтроллер готовить данные. Кварц возьмем 11.0592, чтобы точно установить скорость UART. Останавливать и возобновлять прием будет микроконтроллер. В FT232 есть буфер приемника.
    по факту же - программа для юзера будет стартовать "моментально" / сразу после "как-магнитофонной загрузки небольшого бейсик-файла"...
    Да, на мой взгляд, несколько секунд подождать - это не проблема. Даже для 128К.

    ---------- Post added at 15:57 ---------- Previous post was at 15:17 ----------

    Определим скорость UART.

    Обычно на передачу одного байта надо передать 10 бит. Мы 48 килобайт можем загрузить за 1.05 секунды.
    Значит в битах скорость нужна более 10*48*1024/1.05=468114 бит в секунду
    У AVR Max Baud Rate = 230400. Маловато будет.

    Значит мы сможем загружать со скоростью 230400/10 = 23040 байт в секунду.
    Загрузка 48КB: 48*1024/23040 = 2.13 c
    Загрузка 128КB: 128*1024/23040 = 5.69 c
    Тоже неплохо.
    ---------- Post added at 16:53 ---------- Previous post was at 15:57 ----------

    В справке по QSerialPort Max 115200 baud. Маловато будет.

    Значит мы сможем загружать со скоростью 115200/10 = 11520 байт в секунду.
    Загрузка 48КB: 48*1024/23040 = 4.26 c
    Загрузка 128КB: 128*1024/23040 = 11.38 c

    Не очень быстро, зато с SD-картами и прочими носителями ходить не надо. Можно добавить вычисление контрольных сумм.
    Последний раз редактировалось zx-kit; 20.09.2015 в 14:56.
    "L-256"

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

    По умолчанию

    если со стороны pc берется медленная херня, то тогда достаточно и магнитофонного порта.

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

  8. #17
    Guru Аватар для rasmer
    Регистрация
    20.01.2005
    Адрес
    Саранск
    Сообщений
    2,195
    Записей в дневнике
    2
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    попинай товарища SamStyle, может найдёшь доводы, чтобы он в свой Xpeccy твой графрежим впихнул - будешь на нём проверять. Отладчик там довольно неплохой...
    Мои интры: [Kukarachess][Super boot rmx][tRUSHE MOSAIc][BLAZE]
    Мои игры: [Overload][Removal]

    Список игр для ZX-Spectrum: [2015] [2014]

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

    По умолчанию

    Цитата Сообщение от rasmer Посмотреть сообщение
    попинай товарища SamStyle, может найдёшь доводы, чтобы он в свой Xpeccy твой графрежим впихнул - будешь на нём проверять. Отладчик там довольно неплохой...
    Не убедил...

    Помогите с исходниками подпрограммы восстановления регистров при загрузке образа SNA и запуске с требуемого адреса. На ассемблере для Z80. Надо для загрузки образов SNA

    Планирую работы по быстрой загрузке в таком порядке:

    1. Загрузка WAV файлов через USB-UART+AVR для турбо-загрузки за 30 сек.
    2. Загрузка SNA файлов после эмулятора или ассемблера за 5 сек для 48К и 12 сек для 128K.
    3. Доработка ПЗУ для загрузки стандартной командой LOAD " " ENTER за 5 сек для 48К и 12 сек для 128K.

    Также нужны исходники для AVR для загрузки через UART на скорости 115200 Бод с приостановкой для синхронизации со скоростью 44.1 кГц для WAV и около 11 кГц для SNA. То есть настройки и подпрограмма чтения для кварца 11.0592 МГц.

    Нет так нет. Придется делать самому. Но хотелось бы не изобретать велосипед.

    Принцип работы устройства предполагается такой:

    Создаем два вспомогательных файла WAV.bat и SNA.bat.
    Там пишем команды по настройке скорости последовательного порта и отправки файла командой COPY как описано тут.
    Код:
    @ECHO OFF
    SETLOCAL
    
    set ComPort=COM8
    
    echo.
    echo.
    echo 1  - Exolon (turbo)
    echo 2  - SilkWorm (turbo)
    echo 3  - Dizzy V
    echo 4  - R-Type
    echo.
    echo.
    set /p UserInput=[your choice?]
    
    mode %ComPort% baud=460800 data=8 parity=n stop=1 octs=on rts=off
    
    if %UserInput%==1  copy Exolon.wav   /b \\.\%ComPort%
    if %UserInput%==2  copy SilkWorm.wav /b \\.\%ComPort%
    if %UserInput%==3  copy Dizzy_V.wav  /b \\.\%ComPort%
    if %UserInput%==4  copy R-Type.wav   /b \\.\%ComPort%
    
    ENDLOCAL
    ECHO ON
    Надо только указать скорость 115200 и название соответствующего файла.
    Выбираем для запуска по-умолчанию файлов SNA и WAV настроенные bat-файлы.
    Теперь на Спектруме набираем команду загрузки, а на PC - двойной щелчек мышкой по загружаемому файлу.
    Только для загрузки SNA надо в бат-файл добавить еще загрузку Бейсик-файла, внутри которого загрузчик в кодах FAST PC LOADER.
    Микроконтроллер ATMEGA48PA-AU будет принимать данные через UART и подавать с нужной скоростью на вход TAPE-IN Спектрума.

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

    Перед отправкой данных через USB-UART надо отправлять в символьном виде:
    Расширение файла: SNA, WAV, TAP, BAS, COD, BIN и т.п., насколько хватит фантазии и интереса в реализации.
    Потом тоже в символьном виде шестнадцитиричные параметры:
    Номер страницы для загрузки кодов - 2 символа
    Адрес загрузки кодов - 4 символа, например, C000
    Размер блока - 4 символа

    В принципе, в бат файле можно даже указать параметры типа SPA - адрес установки стека, JMP - адрес запуска кодов.
    Там можно подумать о загрузке как раньше было с магнитофона, а теперь с PC через USB - шнурок.

    Плату FAST PC LOADER планируется встраивать в корпус компьютеров с памятью 48 и 128 К.

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

    Отправка файлов WAV через USB-UART в WINDOWS настроена. Содержимое файла WAV.bat:

    Код:
    @ECHO OFF
    SETLOCAL
    
    set ComPort=COM8
    
    mode %ComPort% baud=115200 data=8 parity=n stop=1 octs=on rts=off
    
    echo %1
    echo.
    copy %1   /b \\.\%ComPort%
    
    pause 0
    
    ENDLOCAL
    ECHO ON
    В результате работы выводится такая картинка:



    Осталось настроить прием файла Атмегой и отправку в Спектрум.
    Последний раз редактировалось zx-kit; 08.11.2015 в 20:44.
    "L-256"

  10. #19
    Master Аватар для elf/2
    Регистрация
    14.01.2005
    Адрес
    N.Novgorod
    Сообщений
    803
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    В исходниках unsnap'а что-то подобное было

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

    По умолчанию

    Цитата Сообщение от elf/2 Посмотреть сообщение
    В исходниках unsnap'а что-то подобное было
    Спасибо, не помогло. Вот нашел на WOS описание формата SNA:

    SNA Format
    This format is one of the most well-supported of all snapshot formats, but has a drawback:

    As the program counter is pushed onto the stack so that a RETN instruction can restart the program, 2 bytes of memory are overwritten. This will usually not matter; the game (or whatever) will have stack space that can be used for this. However, if this space is all in use when the snap is made, memory below the stack space will be corrupted. According to Rui Ribeiro, the effects of this can sometimes be avoided by replacing the corrupted bytes with zeros; e.g. take the PC from the, stack pointer, replace that word with 0000 and then increment SP. This worked with snapshots of Batman, Bounder and others which had been saved at critical points. Theoretically, this problem could cause a complete crash on a real Spectrum if the stack pointer happened to be at address 16384; the push would try and write to the ROM.

    When the registers have been loaded, a RETN command is required to start the program. IFF2 is short for interrupt flip-flop 2, and for all practical purposes is the interrupt-enabled flag. Set means enabled.

    Offset Size Description
    ------------------------------------------------------------------------
    0 1 byte I
    1 8 word HL',DE',BC',AF'
    9 10 word HL,DE,BC,IY,IX
    19 1 byte Interrupt (bit 2 contains IFF2, 1=EI/0=DI)
    20 1 byte R
    21 4 words AF,SP
    25 1 byte IntMode (0=IM0/1=IM1/2=IM2)
    26 1 byte BorderColor (0..7, not used by Spectrum 1.7)
    27 49152 bytes RAM dump 16384..65535
    ------------------------------------------------------------------------
    Total: 49179 bytes

    The 128K version of the .sna format is the same as above, with extensions to include the extra memory banks of the 128K/+2 machines, and fixes the problem with the PC being pushed onto the stack - now it is located in an extra variable in the file (and is not pushed onto the stack at all). The first 49179 bytes of the snapshot are otherwise exactly as described above, so the full description is:

    Offset Size Description
    ------------------------------------------------------------------------
    0 27 bytes SNA header (see above)
    27 16Kb bytes RAM bank 5 \
    16411 16Kb bytes RAM bank 2 } - as standard 48Kb SNA file
    32795 16Kb bytes RAM bank n / (currently paged bank)
    49179 2 word PC
    49181 1 byte port 0x7ffd setting
    49182 1 byte TR-DOS rom paged (1) or not (0)
    49183 16Kb bytes remaining RAM banks in ascending order
    ...
    ------------------------------------------------------------------------
    Total: 131103 or 147487 bytes

    The third RAM bank saved is always the one currently paged, even if this is page 5 or 2 - in this case, the bank is actually included twice. The remaining RAM banks are saved in ascending order - e.g. if RAM bank 4 is paged in, the snapshot is made up of banks 5, 2 and 4 to start with, and banks 0, 1, 3, 6 and 7 afterwards. If RAM bank 5 is paged in, the snapshot is made up of banks 5, 2 and 5 again, followed by banks 0, 1, 3, 4, 6 and 7.

    Обычные регистра я загрузить смогу, а вот как правильно настроить прерывания, стек и запуск программы ?
    Описание не точное, вместо word надо читать byte !
    Последний раз редактировалось zx-kit; 09.11.2015 в 16:19.
    "L-256"

Страница 2 из 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

Ваши права

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