User Tag List

Страница 3 из 40 ПерваяПервая 1234567 ... ПоследняяПоследняя
Показано с 21 по 30 из 399

Тема: Контроллер псевдо КМД+дисковод для УКНЦ (на SD карте)

  1. #21

    Регистрация
    20.12.2005
    Адрес
    Москва
    Сообщений
    2,051
    Спасибо Благодарностей отдано 
    1,142
    Спасибо Благодарностей получено 
    1,472
    Поблагодарили
    524 сообщений
    Mentioned
    20 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ZPilot Посмотреть сообщение
    nzeemin, хотел у вас уточнить один момент. У меня УКНЦ почему-то делает так: читает 0 трек, затем переходит на 1, читает на нем 56 байт и переходит на 0 трек обратно.. так и остается на нем висеть. Не может это быть связано с контрольной суммой?
    Бит что КС верна я выставил.
    Вряд ли это КС, потому что у себя я тоже не считаю КС и просто ставлю бит что она верна.

  2. #22

    Регистрация
    10.04.2019
    Адрес
    г. Фокино, Брянская обл.
    Сообщений
    401
    Спасибо Благодарностей отдано 
    52
    Спасибо Благодарностей получено 
    104
    Поблагодарили
    65 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от nzeemin Посмотреть сообщение
    Вряд ли это КС, потому что у себя я тоже не считаю КС и просто ставлю бит что она верна.
    Вот и в листинге дебага я не нашел проверки на КС. Эх.. опять затык.. Я уже подумывал, что не успеваю считать 512 байт с СДшки при Степе, но нет.. 56 байт после шага УКНЦ же считывает.
    Я не мог перепутать: Dir=1 это от 0 дорожки к 79, а 0 от 79 до 0?
    Хотя я пробовал и так и так..

  3. #23

    Регистрация
    20.12.2005
    Адрес
    Москва
    Сообщений
    2,051
    Спасибо Благодарностей отдано 
    1,142
    Спасибо Благодарностей получено 
    1,472
    Поблагодарили
    524 сообщений
    Mentioned
    20 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Может это вам поможет?
    Сделал трассу событий на контроллере дисковода при загрузке диска fodostm1.dsk до надписи
    ФOДOC Ф B03.00
    Диск можно взять тут: https://github.com/nzeemin/ukncbtl-t...1.dsk?raw=true
    Чему соответствуют события можно посмотреть по исходнику тут (часть строк я раскомментировал чтобы получить подробную трассу): https://github.com/nzeemin/ukncbtl/b...ase/Floppy.cpp

    - - - Updated - - -

    Цитата Сообщение от ZPilot Посмотреть сообщение
    Я не мог перепутать: Dir=1 это от 0 дорожки к 79, а 0 от 79 до 0?
    Хотя я пробовал и так и так..
    Со стороны кода так -- шаг ближе к нулевой дорожке это 0:
    Код:
            BIC     #100,23204      ; Установить в УС перемещение от центра
    Вложения Вложения
    Последний раз редактировалось nzeemin; 06.04.2020 в 21:43.

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

    hobot(11.04.2020), ZPilot(06.04.2020)

  4. #24

    Регистрация
    10.04.2019
    Адрес
    г. Фокино, Брянская обл.
    Сообщений
    401
    Спасибо Благодарностей отдано 
    52
    Спасибо Благодарностей получено 
    104
    Поблагодарили
    65 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от nzeemin Посмотреть сообщение
    Может это вам поможет?
    Спасибо огромнейшее за лог!! Сделаю у себя и проверю!

  5. #25

    Регистрация
    10.04.2019
    Адрес
    г. Фокино, Брянская обл.
    Сообщений
    401
    Спасибо Благодарностей отдано 
    52
    Спасибо Благодарностей получено 
    104
    Поблагодарили
    65 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Друзья, хочу поделиться своей большой радостью:
    https://ibb.co/7QWMbPL
    https://ibb.co/C5hg4Nv
    Что на фото - эмулятор КГМД с дисководом на флешке.

    Собран на 2-х 580ва87, 1-й 155ла3,ПЗУ 27с512 и STM32 (по сути любой у которой есть 16 свободных пинов на 1 порту толерантных к 5В, у меня это STM32L476)
    Если заменить 580ва87 на преобразователи уровней, подойдет даже блюпил. ПЗУ работает как дешифратор адреса, там 2 байта используются, остальные FF.
    ПЗУ можно заменить в случае ва87 2 155ла2 и 1 155лн1, если без инверсии то 155лн надо будет 2 штуки.

    Что работает на данный момент, только чтение из 1 подключенного образа имя которого прошито в код СТМки Вот только-только заработало.
    Пока так.
    Последний раз редактировалось Arseny; 29.07.2020 в 18:41. Причина: тема разбита

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

    Alex_K(12.04.2020), hobot(13.04.2020), nzeemin(13.04.2020)

  6. #26

    Регистрация
    07.10.2007
    Адрес
    п.Пудость Гатчинского р-на Лен.обл.
    Сообщений
    3,250
    Спасибо Благодарностей отдано 
    360
    Спасибо Благодарностей получено 
    638
    Поблагодарили
    414 сообщений
    Mentioned
    46 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ZPilot Посмотреть сообщение
    Что работает на данный момент, только чтение из 1 подключенного образа имя которого прошито в код СТМки Вот только-только заработало.
    Пока так.
    Судя по загрузке образ мой. Там есть TESTMZ.SAV. Можно запустить и сделать последовательное чтение и чтение случайных секторов. Посмотреть, будут ли ошибки. Как я понимаю, MFM-потока нет, уже подбрасываются двоичные данные. Будет интересно глянуть на результаты теста.

  7. #27

    Регистрация
    10.04.2019
    Адрес
    г. Фокино, Брянская обл.
    Сообщений
    401
    Спасибо Благодарностей отдано 
    52
    Спасибо Благодарностей получено 
    104
    Поблагодарили
    65 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Alex_K Посмотреть сообщение
    Судя по загрузке образ мой. Там есть TESTMZ.SAV
    Это был образ диска с бейсиком и он запускается автоматически.
    Цитата Сообщение от Alex_K Посмотреть сообщение
    Как я понимаю, MFM-потока нет, уже подбрасываются двоичные данные
    Да, зачем эмулировать, то что не нужно? Единственное, я ни как не мог заставить работать Petit FatFs с хардверным SPI, пришлось софтовый использовать, боюсь, что скорость пока не на уровне.
    Есть еще много вопросов, например, я начинаю грузить данные с флешки когда УКНЦ добралось до маркера данных.. почему-то только в этот момент УКНЦ согласна подождать.

  8. #28

    Регистрация
    07.10.2007
    Адрес
    п.Пудость Гатчинского р-на Лен.обл.
    Сообщений
    3,250
    Спасибо Благодарностей отдано 
    360
    Спасибо Благодарностей получено 
    638
    Поблагодарили
    414 сообщений
    Mentioned
    46 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ZPilot Посмотреть сообщение
    Есть еще много вопросов, например, я начинаю грузить данные с флешки когда УКНЦ добралось до маркера данных.. почему-то только в этот момент УКНЦ согласна подождать.
    В каком смысле подождать?

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

    Цитата Сообщение от ZPilot Посмотреть сообщение
    Это был образ диска с бейсиком и он запускается автоматически.
    Если это Бейсик-Вильнюс, то выход в систему по команде SYS. Каталог исполнимых файлов можно посмотреть командой DIR *.SAV.

  9. #29

    Регистрация
    20.12.2005
    Адрес
    Москва
    Сообщений
    2,051
    Спасибо Благодарностей отдано 
    1,142
    Спасибо Благодарностей получено 
    1,472
    Поблагодарили
    524 сообщений
    Mentioned
    20 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ZPilot Посмотреть сообщение
    Есть еще много вопросов, например, я начинаю грузить данные с флешки когда УКНЦ добралось до маркера данных.. почему-то только в этот момент УКНЦ согласна подождать.
    https://www.hermannseib.com/documents/floppy.pdf
    The step rate is the time between two steps when the head moves over the disk. The traditional value for PC drives is 8 ms. 51⁄4 HD drives usually work with 6 ms, and 31⁄2 drives are usually used with 3 ms.
    ...
    After the head changes between tracks it must be given the head settle time before any further action. Older drives needed 25 ms, newer ones often only need 15 ms for head vibrations to disappear.
    То есть, при переходе между дорожками у вас есть от 3+15 до 8+25 мс для: декодирования и сохранения трека в образ, плюс чтения соседнего трека из образа и подготовки его в памяти.

    Конкретно для НГМД-6022: https://drive.google.com/file/d/1Xb7..._9-K7izwE/view
    2.8. Время перемещения головок на соседнюю дорожку - не более 12 мс.
    2.9. Время опускания головки - не более 50 мс.
    Последний раз редактировалось nzeemin; 13.04.2020 в 09:23.

  10. #30

    Регистрация
    10.04.2019
    Адрес
    г. Фокино, Брянская обл.
    Сообщений
    401
    Спасибо Благодарностей отдано 
    52
    Спасибо Благодарностей получено 
    104
    Поблагодарили
    65 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    У меня по скоростям расклад такой: чтение от 0 байта до метки A1 A1 A1 FB со скоростью около 350 килобит, в момент метки A1 A1 A1 FB , те время чтения самой этой метки 0.03 секунды или 30 миллисекунды (из-за того что в этом месте я читаю данные дорожки из файла на СД-карте, те 5168 байт читаются за 30 миллисекунды), после этого все последующие данные читаются со скоростью 350 килобит. Переход между дорогами не занимает ни чего, тк я не генерирую буфер дорожки, а просто отвечаю данными в зависимости от номера считанного байта:

    Скрытый текст


    /----------------------------------------
    //uint8_t fast_datatrack(void *data,void *pos, void *isSync);
    //----------------------------------------
    .section .text.fast_datatrack
    .global fast_datatrack
    .type fast_datatrack, %function
    fast_datatrack:
    push {r3-r9,lr}
    ldrh r8,=VAR_ADM
    ldrh r5,=SEC_LEN
    ldrh r6,[r1] //pos
    udiv r4,r6,r5 //number sector
    mls r6,r4,r5,r6 //position in sector
    //Sync?
    ldrb r7,[r2]
    tst r7,#1
    beq fast_datatrack_loop

    bic r7,#1
    strb r7,[r2]

    //pos=<marker0
    cmp r6,MARKER0_POS
    itt ls
    ldrbls r6,=MARKER0_POS
    bls fast_datatrack_loop
    //marker0<pos=<marker1
    cmp r6,MARKER1_POS
    it ls
    ldrbls r6,=MARKER1_POS
    bls fast_datatrack_loop
    //pos>marker1 to next sector marker 1
    add r4,#1
    cmp r4,#10
    it hs
    andhs r4,#0
    ldrb r6,=MARKER0_POS
    fast_datatrack_loop:
    //GAP0
    cmp r6,#SYNC0_POS
    itttt lo
    ldrblo r0,=0x4E
    //set index bit
    ldrhlo r3,[r8,#RSN_RDM]
    orrlo r3,#0x8000
    strhlo r3,[r8,#RSN_RDM]
    blo fast_datatrack_end

    ////reset index bit
    ldrh r3,[r8,#RSN_RDM]
    bic r3,#0x8000
    strh r3,[r8,#RSN_RDM]

    //SYNC0
    cmp r6,#MARKER0_POS
    it lo
    ldrblo r0,=0x00
    blo fast_datatrack_end

    //MARKER0
    cmp r6,#FE_POS
    itttt lo
    ldrblo r0,=0xA1
    //reset CRC bit
    ldrhlo r3,[r8,#RSN_RDM]
    biclo r3,#0x4000
    strhlo r3,[r8,#RSN_RDM]
    blo fast_datatrack_end

    //FE
    cmp r6,#CYL_POS
    it lo
    ldrblo r0,=0xFE
    blo fast_datatrack_end

    //CYL
    cmp r6,#SIDE_POS
    it lo
    ldrblo r0,[r0,SZ_TRACK] //track no
    blo fast_datatrack_end

    //SIDE
    cmp r6,#SEC_POS
    it lo
    ldrblo r0,[r0] //Side no #0
    blo fast_datatrack_end

    //Sector
    cmp r6,#SECSZ_POS
    it lo
    //andlo r5,#0
    addlo r0,r4,#1 //Sector match in r4
    blo fast_datatrack_end

    //Sector size
    cmp r6,#CRC0_POS
    itttt lo
    //andlo r0,#0
    //addlo r0,#2 //Sector size
    ldrhlo r0,=2
    //set CRC bit
    ldrhlo r3,[r8,#RSN_RDM]
    orrlo r3,#0x4000
    strhlo r3,[r8,#RSN_RDM]
    blo fast_datatrack_end

    //CRC header
    cmp r6,#GAP1_POS
    it lo
    ldrhlo r0,=12
    //andlo r0,#0
    //set CRC bit
    /*ldrhlo r3,[r8,#RSN_RDM]
    orrlo r3,#0x4000
    strhlo r3,[r8,#RSN_RDM]*/

    blo fast_datatrack_end

    //GAP1
    cmp r6,#SYNC1_POS
    it lo
    ldrblo r0,=0x4E
    blo fast_datatrack_end

    //SYNC1
    cmp r6,#MARKER1_POS
    it lo
    ldrblo r0,=0x00
    blo fast_datatrack_end

    //MARKER1
    cmp r6,#FB_POS
    itttt lo
    andlo r5,#0 //It's sey: load data
    addlo r5,#0x02
    strblo r5,[r2]
    ldrblo r0,=0xA1
    //reset CRC bit
    ittt lo
    ldrhlo r3,[r8,#RSN_RDM]
    biclo r3,#0x4000
    strhlo r3,[r8,#RSN_RDM]

    blo fast_datatrack_end

    //FB
    cmp r6,#DATA_POS
    it lo
    ldrblo r0,=0xFB
    blo fast_datatrack_end

    //set CRC bit
    ldrh r3,[r8,#RSN_RDM]
    orr r3,#0x4000
    strh r3,[r8,#RSN_RDM]

    //DATA
    cmp r6,#CRC1_POS
    itttt lo
    addlo r0,#SZ_TBUFF //set addr currenttrack
    sublo r9,r6,#DATA_POS //pos_in_data=pos-data_pos
    addlo r7, r9, r4, lsl #9 //sec*len_sect+(pos_in_data)
    ldrblo r0,[r0,r7]
    blo fast_datatrack_end

    //CRC data
    ldrh r7,=GAP2_POS
    cmp r6,r7
    it lo
    ldrhlo r0,=18
    //andlo r0,#0
    /*//set CRC bit
    ldrhlo r3,[r8,#RSN_RDM]
    orrlo r3,#0x4000
    strhlo r3,[r8,#RSN_RDM]*/
    blo fast_datatrack_end

    ldrb r0,=0x4E

    fast_datatrack_end:
    //set data ok bit
    ldrh r3,[r8,#RSN_RDM]
    orr r3,#0x80
    strh r3,[r8,#RSN_RDM]

    //NEXTPOS
    ldr r5,=SEC_LEN
    //add r9, r6, r4, lsl #9 //sec*len_sect+(pos)//sec<<9+pos
    mla r9,r4,r5,r6 //sec*len_sec+pos_sec
    add r9,#1
    ldrh r3,=FLOPPY_RAWTRACKSIZE
    cmp r9,r3
    it hs
    andhs r9,#0
    strh r9,[r1]

    pop {r3-r9,lr}
    bx lr
    [свернуть]

    Цитата Сообщение от Alex_K Посмотреть сообщение
    В каком смысле подождать?
    Судя по даташиту:

    Скрытый текст


    8 (GOR) – приведение контроллера в исходное состояние. При записи в этот бит "1" контроллер приводится в исходное состояние. При этом из регистров 177130 и 177132 считываются нули.
    [свернуть]

    Таким образом, если ответить 0, то УКНЦ думает, что контроллер ищет маркер.. а я , как подлец, этим пользуюсь
    Последний раз редактировалось ZPilot; 13.04.2020 в 12:47.

Страница 3 из 40 ПерваяПервая 1234567 ... ПоследняяПоследняя

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

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

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

Похожие темы

  1. Ответов: 713
    Последнее: 13.05.2025, 11:42
  2. Ответов: 327
    Последнее: 03.12.2019, 22:49
  3. Куплю КМД для УКНЦ
    от Feral в разделе Барахолка (архив)
    Ответов: 32
    Последнее: 07.06.2012, 13:31
  4. Продам МС5310 блок дисководов к УКНЦ+КМД УКНЦ
    от Mad Killer/PG в разделе Барахолка (архив)
    Ответов: 7
    Последнее: 19.03.2012, 11:27
  5. Контроллер КМД-УКНЦ, АУКЦИОН
    от tntpro в разделе Барахолка (архив)
    Ответов: 9
    Последнее: 23.06.2011, 16:32

Ваши права

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