User Tag List

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

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

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

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

    По умолчанию

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

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

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

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

  3. #2

    Регистрация
    20.12.2005
    Адрес
    Москва
    Сообщений
    2,051
    Спасибо Благодарностей отдано 
    1,142
    Спасибо Благодарностей получено 
    1,473
    Поблагодарили
    525 сообщений
    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.

  4. #3

    Регистрация
    02.03.2015
    Адрес
    г. Караганда, Казахстан
    Сообщений
    2,321
    Спасибо Благодарностей отдано 
    35
    Спасибо Благодарностей получено 
    225
    Поблагодарили
    177 сообщений
    Mentioned
    17 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ZPilot Посмотреть сообщение
    Собран на 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 штуки.
    Ух ты! Круто! Для УКНЦ это КМД, да? Т.е. 1801ВП1-128 на шине ПП ?

    Да, кстати, можно попробовать поставить в качестве драйверов 74LVS245, они 3-вольтовые, но толерантные к 5В, всякие согласователи у китайцев, по типу "прицепить SD-карточку к Ардуине (5В)" сделаны, обычно, на 74LVS.

    А вообще, нашего полку прибыло! Не я один сочиняю псевдодиски для ДВК/УКНЦ. Ура!

    Цитата Сообщение от ZPilot Посмотреть сообщение
    Единственное, я ни как не мог заставить работать Petit FatFs с хардверным SPI, пришлось софтовый использовать, боюсь, что скорость пока не на уровне.
    У L476, по-идее, на борту должен быть аппаратный SDIO, почему бы не сделать через него? Хоть сразу 4-битный. Я, кстати, пользую в AZ полную FATFS, не петит, причем, по-простому собрал из кубиков (STM32 CubeMX). Оно, конечно, кушает оперативку, так, что в пилюлю не влезет...

    Цитата Сообщение от ZPilot Посмотреть сообщение
    например, я начинаю грузить данные с флешки когда УКНЦ добралось до маркера данных.. почему-то только в этот момент УКНЦ согласна подождать.
    На тему "подождать". Не знаю, как это сделано в УКНЦ, но я когда-то разбирал программу MY - не помню, кажется, 091 или 093, поглядывая заодно в те материалы по 128-му или его предшественнику (уже и номер забыл), которые удалось найти и в книжку по MY, я почти во всем разобрался, и помнится мне, что в процессе просмотра дорожки в некоторых случаях ждут просто заданное время, где-то - бита в регистре, причем "до упора", а где-то бита в регистре с таймаутом. ИМХО, там, где ждут бита в регистре, можно и "притормозить". В общем, советую запастись всеми материалами по 128-мы, взять дизасм программы обслуживания дисководов и поразбирать внимательно. Кстати, nzeemin давал ссылку на его реализацию эмулятора ВП1-128.

    И еще, как мне кажется, нужен аппаратный регистр состояния, а может и регистр данных. Чтобы можно было заняться своими делами, а аппаратный регистр состояния будет сигналить программе в ПП "мы еще не готовы". Нечто, вроде состояния "Думаю, прошу не мешать" в моём AZ.
    Последний раз редактировалось AFZ; 13.04.2020 в 19:11.
    Кто мешает тебе выдумать порох непромокаемый? (К.Прутков, мысль № 133)

  5. #4

    Регистрация
    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.

  6. #5

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

    По умолчанию

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

  7. #6

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

    По умолчанию

    Цитата Сообщение от nzeemin Посмотреть сообщение
    Так вы замедляете чтение с диска:
    По идее 1 раз на трек.

    Цитата Сообщение от nzeemin Посмотреть сообщение
    раскрутка мотора, переход между дорожками - в это время машина всё равно будет ждать контроллер
    Вот можно по точнее этот момент? Как должен ответить контроллер: Подожди, я занят? Плюс, как выяснилось, читать с СД-карты в момент перехода между дорогами - очень плохая идея! Почему, да потому что после чтения 0 сектора укнц посылает команды на перемещения головы не читая потом трек, просто добирается до нужной дорожки. Во-первых, читаем в этот момент напрасно, а во-вторых, укнц шагает так быстро, что просто начинается пропуск команд.
    Раскрутка мотора тоже не подходит, тк нельзя считать весь образ целиком, нет столько памяти.
    А еще.. у меня не запустился ваш диск с ФОДОСОМ Считал заголовок, написал, что стартует Фодос, но вывалился с какой-то ошибкой. Кстати, в эмуляторе тоже.

    Цитата Сообщение от Alex_K Посмотреть сообщение
    Там есть TESTMZ.SAV.
    Алекс, я загрузил бейсик, вышел в "дос" но там нет такого файла, не подскажите, где его взять?
    Последний раз редактировалось ZPilot; 13.04.2020 в 13:30.

  8. #7

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

    По умолчанию

    Набросал схемку: https://ibb.co/YpN0cdq
    Сильно не ругайтесь, делал по памяти, мог что-то упустить не особо важное.
    Да, DMR, DMG и SACK не используются.

    Так выглядит макетка без Нуклии: https://ibb.co/k69qnkM
    Последний раз редактировалось ZPilot; 13.04.2020 в 18:38.

  9. #8

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

    По умолчанию

    https://ibb.co/87Cw2rF

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

    Вот как перейти на MZ1?

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

    hobot(15.04.2020)

  10. #9

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

    По умолчанию

    Цитата Сообщение от ZPilot Посмотреть сообщение
    Вот как перейти на MZ1?
    ASS MZ1 DK

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

    ZPilot(14.04.2020)

  11. #10

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

    По умолчанию

    Цитата Сообщение от Alex_K Посмотреть сообщение
    ASS MZ1 DK
    А запустить программу с другого диска: run MZ1:basic.sav ?

Страница 3 из 26 ПерваяПервая 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

Ваши права

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