User Tag List

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

Тема: Работа с SD-картой на Специалисте

  1. #1

    Регистрация
    13.01.2005
    Адрес
    г. Москва
    Сообщений
    5,215
    Записей в дневнике
    7
    Спасибо Благодарностей отдано 
    706
    Спасибо Благодарностей получено 
    1,651
    Поблагодарили
    574 сообщений
    Mentioned
    50 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию Работа с SD-картой на Специалисте

    Есть два популряных варианта подключения SD-карты к Специалисту: SDOS и vinxru. Оба варианта доступны в Emu80, а SDOS доступен в FPGA реализации Специалиста.

    До сего момента я с SD на Специалисте не работал. Использую SDOS на FPGA исключительно для запуска RKS-файлов с карты.

    И вот мы сейчас прикрутили AY, и даже TS, к Специалисту. Хочется сделать хотя бы самый простенький проигрыватель файлов, которые будут в этот проигрыватель загружаться с SD-карты. А для этого нужно уметь читать каталог SD, перемещаться по директориям и загружать в память выбранный файл. Я этого не умею. Кто знает, как это делать, помогите, пожалуйста, информацией!
    С уважением, Станислав.

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

  3. #2

    Регистрация
    30.12.2018
    Адрес
    г. Москва
    Сообщений
    1,375
    Спасибо Благодарностей отдано 
    11
    Спасибо Благодарностей получено 
    384
    Поблагодарили
    346 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от CityAceE Посмотреть сообщение
    Хочется сделать хотя бы самый простенький проигрыватель файлов, которые будут в этот проигрыватель загружаться с SD-карты. А для этого нужно уметь читать каталог SD, перемещаться по директориям и загружать в память выбранный файл. Я этого не умею. Кто знает, как это делать, помогите, пожалуйста, информацией!
    SDOS - штатно стандартных точек входа не имеет, нужно будет собрать бинарник с ними.
    dos_rk.asm:

    jmp ENTRY
    ; JMP FS_ENTRY ;todo: vinxru api
    ; JMP FS_FNDF ; [DE] - name of file for finding, out HL - string FAT record of file, C==1 if file not found
    ; JMP F_OPEN ; [DE] - name of file for opening, out C==1 if file not found, calls FS_FNDF
    ; JMP F_READ ; HL - addr for store read data, BC - size of read data

    последние три строки раскоментировать и собрать.
    есть правда один момент - надо дать знать плееру адреса этих точек входа. поскольку четкого стандарта в каких адресах лежит SDOS походу тоже нет.
    проще всего наверно сделать как у Vinxru - при запуске программы передавать адрес точки входа в регистрах. но тогда плеер придется запускать с той же флешки.


    Vinxru -

    sdbios.txt:

    SD BIOS может быть в любом месте памяти.

    При запуске программы регистр A содержит версию набора команд (сейчас 1). BС содержит точку
    входа в SD BIOS. HL командную строку. DE собственное имя.

    Для вызова функции контроллера, надо поместить в регистр A код функции и вызвать подпрограмму по адресу переданному при старте программы в регистре BC.

    ФУНКЦИИ

    Reboot Теплая перезагрузка (A=0, HL="", DE="" / A=код ошибки)

    Exec Запустить программу (A=0, HL=имя файла, DE=командная строка / A=код ошибки)
    FindFirst Начать получение списка файлов (A=1, HL=путь, DE=максимум файлов для загрузки,
    BC=адрес / HL=сколько загрузили, A=код ошибки)
    FindNext Продолжить получение списка файлов (A=1, HL=":", DE=максимум файлов для загрузки,
    BC=адрес / HL=сколько загрузили, A=код ошибки)
    Open Открыть файл (A=2, D=0, HL=имя файла / A=код ошибки)
    Create Создать файл (A=2, D=1, HL=имя файла / A=код ошибки)
    MkDir Создать папку (A=2, D=2, HL=имя файла / A=код ошибки)
    Delete Удалить файл/папку (A=2, D=100, HL=имя файла / A=код ошибки)
    Seek Установить позицию чтения записи файла (A=3, B=режим, DE:HL=позиция / A=код ошибки, DE:HL=позиция)
    (С начала B=0, с текущего положения B=1, с конца B=2)
    GetFileSize Получить размер файла (A=3, B=100 / A=код ошибки, DE:HL= размер файла)
    GetDiskSize Получить размер диска в Мб (A=3, B=101 / A=код ошибки, DE:HL= размер диска)
    GetDiskFree Получить свободное место на диске в Мб (A=3, B=102 / A=код ошибки, DE:HL= размер файла)
    SwapFiles Работа с двумя открытыми файлами (A=3, B=200 / A=код ошибки)
    Read Прочитать из файла (A=4, HL=размер, DE=адрес / A=код ошибки, HL=сколько загрузили)
    Write Записать в файл (A=5, HL=размер, DE=адрес / A=код ошибки)
    WriteEOF Конец файла (A=5, HL=0 / A=код ошибки)
    Move Переместить файл/папку (A=6, HL=из, DE=в / A=код ошибки)

    РАСПЕРЕДЕЛНИЕ ПАМЯТИ

    После запуска SD BIOS карта памяти выглядит так:

    8AE7h SELF_NAME Собственное имя файла 256 байт (этот адрес содержится в DE после запуска)
    8BE7h CMD_LINE Командная строка 256 байт (этот адрес содержится в HL после запуска)
    8CE7h SD_BIOS_CODE Код SD BIOS 537 байт (возможно будет расти в начало сдвигая SELF_NAME и CMD_LINE)
    8F00h - Не используется ~233 байта (возможно тут есть переменные монитора)
    8FDFh MONITOR_VARS Переменные монитора
    9000h VIDEO_MEM Видеопамять

    С самого начала памяти свободно 35 559 байт памяти (до 8AE7h). Дальше находятся переменные
    SELF_NAME, CMD_LINE. Если они не нужны программисту, то объем непрерывной свободной памяти
    составляет ~36 071 байт (до 8CE7h).

    Свободное место по адресу 8F00h оставлено на всякий случай. Во первых, что бы не конфликтовать
    с Монитором. Возможно, что будущие версии SD BIOS будут использовать эту память.

    Зверинецъ

    Специалист (был когда-то "совсем стандарт") - 1988-2023
    Ленинград1 +256К +AY+BDI+VGA выход +Ethernet (Speccyboot) +Xmodem (115200)+divmmc
    Ленинград2 + CF карта
    Платформа 8085+Z80+CPLD (Специалист МХ2 +SD +FDD +PS/2kbd)
    БК0010-01 стоковый
    [свернуть]

    Эти 2 пользователя(ей) поблагодарили Serg6845 за это полезное сообщение:

    CityAceE(14.07.2025), SYR-ALEX(15.07.2025)

  4. #3

    Регистрация
    30.05.2007
    Адрес
    г. Лянтор, Сургутского р-на, ХМАО
    Сообщений
    4,436
    Спасибо Благодарностей отдано 
    163
    Спасибо Благодарностей получено 
    190
    Поблагодарили
    121 сообщений
    Mentioned
    5 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    У Vinxru интерфейса сделано по подобию некоторой операционки на Атмеги8. Если интересно могу привести точки входа и назначение процедур.

  5. #4

    Регистрация
    13.01.2005
    Адрес
    г. Москва
    Сообщений
    5,215
    Записей в дневнике
    7
    Спасибо Благодарностей отдано 
    706
    Спасибо Благодарностей получено 
    1,651
    Поблагодарили
    574 сообщений
    Mentioned
    50 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от fifan Посмотреть сообщение
    Если интересно могу привести точки входа и назначение процедур.
    Спасибо, но думаю, что у меня есть эта информация. Ею со мной любезно поделился Pyk.

    С уважением, Станислав.

  6. #5

    Регистрация
    30.05.2007
    Адрес
    г. Лянтор, Сургутского р-на, ХМАО
    Сообщений
    4,436
    Спасибо Благодарностей отдано 
    163
    Спасибо Благодарностей получено 
    190
    Поблагодарили
    121 сообщений
    Mentioned
    5 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Могу привести коды примеров построения общения, предоставленные мне лично автором Алексеем Морозовым.
    Последний раз редактировалось fifan; 15.07.2025 в 19:10.

  7. #6

    Регистрация
    13.01.2005
    Адрес
    г. Москва
    Сообщений
    5,215
    Записей в дневнике
    7
    Спасибо Благодарностей отдано 
    706
    Спасибо Благодарностей получено 
    1,651
    Поблагодарили
    574 сообщений
    Mentioned
    50 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от fifan Посмотреть сообщение
    Могу привести коды примеров построения общения, предоставленные мне лично автором Алексеем Морозовым.
    А вот за такую информацию буду очень благодарен!
    Последний раз редактировалось fifan; 15.07.2025 в 19:10.
    С уважением, Станислав.

  8. #7

    Регистрация
    30.05.2007
    Адрес
    г. Лянтор, Сургутского р-на, ХМАО
    Сообщений
    4,436
    Спасибо Благодарностей отдано 
    163
    Спасибо Благодарностей получено 
    190
    Поблагодарили
    121 сообщений
    Mentioned
    5 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от CityAceE Посмотреть сообщение
    А вот за такую информацию буду очень благодарен!
    Вот не большая моя переписка с ответами.

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

    CityAceE(15.07.2025)

  9. #8

    Регистрация
    13.01.2005
    Адрес
    г. Москва
    Сообщений
    5,215
    Записей в дневнике
    7
    Спасибо Благодарностей отдано 
    706
    Спасибо Благодарностей получено 
    1,651
    Поблагодарили
    574 сообщений
    Mentioned
    50 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Спасибо! То, что нужно, чтобы стартануть с нуля.
    С уважением, Станислав.

  10. #9

    Регистрация
    30.05.2007
    Адрес
    г. Лянтор, Сургутского р-на, ХМАО
    Сообщений
    4,436
    Спасибо Благодарностей отдано 
    163
    Спасибо Благодарностей получено 
    190
    Поблагодарили
    121 сообщений
    Mentioned
    5 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Вот для начала фрагмент кода. Нужно выяснить работает интерфейс или нет.
    По метке ErrorPrint нужно расположить обработку ошибки. Для начала нужно организовать вывод номер ошибки в аккумуляторе, если 0 - ошибок нет.
    ; чтение каталога с SD карты
    ld a, #01 ; код команды
    ld bc, SDDir ; буфер под каталог
    ld de, #0032 ; максимум файлов = 50
    ld hl, Path ; путь
    call SD_BIOS ; получение списка файлов
    or a
    jp z, NoError2 ; переход, если не было ошибки
    cp #0a ; ошибка 10 - найдено более 50 файлов
    jp nz, ErrorPrint ; переход, если не ошибка 10
    NoError2 ld a, l
    ld (SDFiles), a ; количество загруженных файлов

    SD_BIOS equ #8d15 ; запуск SD_BIOS_Code
    SDDir equ #de00 ; буфер для каталога SD карты
    Path defm ""
    defb #00
    - - - Добавлено - - -

    Файл sdbios.bin содержит SDBIOS и я его располагаю с адреса 8d15 (как советовал автор). Эта область расположена перед экранной областью и занимает 485 байт.
    Вложения Вложения
    • Тип файла: rar sdbios.rar (469 байт, Просмотров: 27)

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

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

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

Похожие темы

  1. Биперная музыка на Специалисте
    от CityAceE в разделе Специалист
    Ответов: 106
    Последнее: 15.12.2025, 06:54
  2. Прерывания IM2 в Специалисте на КР580
    от barsik в разделе Специалист
    Ответов: 29
    Последнее: 27.06.2025, 08:23
  3. Ответов: 31
    Последнее: 21.12.2023, 09:36
  4. Продам Apple IIc с картой z80 и монитором
    от sergey2b в разделе Барахолка (архив)
    Ответов: 8
    Последнее: 14.12.2011, 00:09

Ваши права

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