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

User Tag List

Страница 2 из 15 ПерваяПервая 123456 ... ПоследняяПоследняя
Показано с 11 по 20 из 145

Тема: РЕ-мулятор - внутрисхемный эмулятор 1801РЕ2/1801РР1

  1. #11
    Guru Аватар для Vslav
    Регистрация
    31.03.2013
    Адрес
    г. Киев
    Сообщений
    2,413
    Спасибо Благодарностей отдано 
    132
    Спасибо Благодарностей получено 
    755
    Поблагодарили
    353 сообщений
    Mentioned
    86 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    К сожалению форум позволяет прикреплять к сообщению максимум 5 файлов, поэтому архивы с техническим описанием и прекомпилированными прошивками пока размещаю в этом сообщении. Возможно модераторы/админы смогут предложить какое-то решение - например создать пустое второе сообщение, чтобы можно было прикрепить файлы к нему или что-то в этом роде.
    PS. Не сложно сделать сам проект, намного сложнее его оформить чтобы мог пользоваться кто-то еще кроме автора
    Вложения Вложения
    Последний раз редактировалось Vslav; 06.08.2013 в 21:15.

  2. #12
    Guru Аватар для Vslav
    Регистрация
    31.03.2013
    Адрес
    г. Киев
    Сообщений
    2,413
    Спасибо Благодарностей отдано 
    132
    Спасибо Благодарностей получено 
    755
    Поблагодарили
    353 сообщений
    Mentioned
    86 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Посмотрел что есть из кросс-средств для PDP-11 под Windows - бедненько. Ну МАСRО-11 есть... Без линкера... Ну еще можно портануть (начал, полдня потратил и надоело) PCC из проекта BK-Unix... Но возможности у того компилятора все равно скромные.
    В-общем, пришлось ставить MinGW и собирать самостоятельно "промышленные" binutils/GCC 4.6.2 для PDP-11 под Windows.
    Теперь красота - редактирую все в привычном MSVC, компилю GCC и мгновенно вливаю в РЕ-мулятор - написание тестов по освоению БК-шки значительно ускорилось
    Пришлось написать также утилиту для инверсии адреса/данных - переводит hex-файлы из формата "как видит процессор" в формат "программатора/РЕ-мулятора" и обратно.
    Самый простой проект (просто чистит экран) и сама утилита - во вложении.
    Вложения Вложения
    • Тип файла: rar rev16.rar (34.9 Кб, Просмотров: 235)

  3. #13
    Activist
    Регистрация
    11.08.2009
    Адрес
    Минск
    Сообщений
    234
    Спасибо Благодарностей отдано 
    21
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    .start
    MOV #40000, R0
    1R: CLR (R0)+
    BPL 1R
    .end
    -
    (amontest.mac)
    br это перевод строки в HTML
    в Ассемблере "пустой" команды BR не бывает
    BR metka
    Последний раз редактировалось Ал-р; 11.08.2013 в 15:38.

  4. #14
    Guru Аватар для Vslav
    Регистрация
    31.03.2013
    Адрес
    г. Киев
    Сообщений
    2,413
    Спасибо Благодарностей отдано 
    132
    Спасибо Благодарностей получено 
    755
    Поблагодарили
    353 сообщений
    Mentioned
    86 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Ал-р Посмотреть сообщение
    .start
    MOV #40000, R0
    1R: CLR (R0)+
    BPL 1R
    .end
    Ну-у-у.... От гуру PDP-11 я такого не ожидал - "и на старуху бывает порнуха" (с)
    Команда CLR всегда четко выставляет флажки (Z=1, C=N=V=0) по операнду-результату (который у CLR всегда нулевой). Так что фрагмент кода - не очень. И команда BR(anch) у меня не пустая, там такая себе крошечная точка стоит. ИМХО, она там не просто так

  5. #15
    Activist
    Регистрация
    07.03.2014
    Адрес
    Vancouver, Canada
    Сообщений
    401
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    а кто нибудь продает собранные ре-муляторы ?

  6. #16
    Master Аватар для Woland
    Регистрация
    26.10.2011
    Адрес
    Москва
    Сообщений
    554
    Спасибо Благодарностей отдано 
    11
    Спасибо Благодарностей получено 
    22
    Поблагодарили
    15 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Я продаю, но Вы вроде мне уже в почту написали [email protected]
    Возрождение БК0011М: pk-fpga.ru, forum.pk-fpga.ru
    Продажа электронных компонентов >>тут<<

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

  8. #17
    Activist
    Регистрация
    11.08.2009
    Адрес
    Минск
    Сообщений
    234
    Спасибо Благодарностей отдано 
    21
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    (Vslav)
    А не могли бы Вы нарисовать алгоритм в виде блок-схемы как уделать 120 МГц 32х-битного ARM-микроконтроллера (100-ног с шагом 0.5мм) в 3(4)Мгц старинной ПЗУ КР1801РЕ2 c 24-ногами ???
    Последний раз редактировалось Ал-р; 24.02.2015 в 18:39.

  9. #18
    Guru Аватар для Vslav
    Регистрация
    31.03.2013
    Адрес
    г. Киев
    Сообщений
    2,413
    Спасибо Благодарностей отдано 
    132
    Спасибо Благодарностей получено 
    755
    Поблагодарили
    353 сообщений
    Mentioned
    86 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Код:
    //_____________________________________________________________________________
    //
    // Процедура реализации алгоритма работы ROM 1801РЕ2
    //  - не осуществляет возврат (работает постоянно)
    //  - выполняется с запрещенными прерываниями (не используются)
    //  - код позиционно-независимый - работает перемещенным в RAM
    //
    // Входные параметры:
    //   R0 - адрес таблицы ссылок на банки ROM
    //   R1 - адрес порта шины данных
    //   R2 - адрес порта сигналов управления
    //
    #define PIO_IDR         0x10                    // смещение регистра входных данных
    #define PIO_ODR         0x14                    // смещение регистра выходных данных
    #define PIO_BSR         0x18                    // смещение регситра сброса и установки
                                                    //
    #define RPLY_BIT        0                       //
    #define SYNC_BIT        3                       //
    #define DIN_BIT         13                      //
    #define SEL0_BIT        9                       //
    #define SEL1_BIT        4                       //
    #define SEL2_BIT        5                       //
    #define SEL3_BIT        7                       //
                                                    //
    #define RPLY_MSK        (1<<RPLY_BIT)           //
    #define SYNC_MSK        (1<<SYNC_BIT)           //
    #define DIN_MSK         (1<<DIN_BIT)            //
    #define SEL0_MSK        (1<<SEL0_BIT)           //
    #define SEL1_MSK        (1<<SEL1_BIT)           //
    #define SEL2_MSK        (1<<SEL2_BIT)           //
    #define SEL3_MSK        (1<<SEL3_BIT)           //
    #define SELX_MSK        ((1<<SEL0_BIT) | (1<<SEL1_BIT) | (1<<SEL2_BIT) | (1<<SEL3_BIT))
    
                    _sect(.text, CODE, "ax", 2)                     //
                    _global app_rom_loop                            //
                    _global app_end_loop                            //
                    _thumb                                          //
                    _thumb_func                                     //
                                                                    //
    app_rom_loop:   mov     R12, R0                                 // R12 - таблица ссылок
                    movs    R5, #RPLY_MSK                           // вспомогательная константа
    //
    // Для начала цикла ожидаем высокий уровень SYNC (неактивный)
    //
    @@SyncHigh:     ldr     R0, [R2, #PIO_IDR]                      // загружаем управляющие
                    movs    R0, R0, lsr #(SYNC_BIT+1)               // сигналы и проверяем
                    bcc.n   @@SyncHigh                              // сигнал SYNC
    //
    // Теперь ожидаем низкий уровень SYNC (ниспадающий фронт)
    //
    @@SyncFall:     ldr     R7, [R1, #PIO_IDR]                      // R7 предполагаемый адрес
                    ldr     R4, [R2, #PIO_IDR]                      // для предварительной фиксации
                    movs    R0, R4, lsr #(SYNC_BIT+1)               //
                    bcs.n   @@SyncFall                              //
    //
    // Выполняем подготовку обращения к таблице ссылок
    // Выделяем старшие три бита chipcode и вычисляем
    // элемент таблицы
    //
                    movs    R0, R7, lsr #13                         // в R6 указатель на элемент
                    add     R6, R12, R0, lsl #8                     // таблицы соответствующей
                    ubfx    R7, R7, #1, #12                         // зафиксированному chipcode
                    movs    R7, R7, lsl #1                          //
    //
    // Обнаружен ниспадающий фронт SYNC, теперь будем проверять
    // устойчивой комбинации SYNC=0, DIN=0, и некоторых активных
    // сигналов выборки
    //
    // Как оказалось если в качестве сигнала CS используется выход
    // с микросхем 1801ВП1 (в частности -037) то к моменту ниспадающего
    // SYNC матрица еще не успевает декодировать адрес и РЕ-мулятор
    // не получает устойчивой комбинации сигналов на входе. Поэтому
    // выполняем ожидание
    //
    @@WaitSel:      ldr     R4, [R2, #PIO_IDR]                      // загружаем управляющие
                    movs    R0, R4, lsr #(SYNC_BIT+1)               // сигналы и проверяем
                    bcs.n   @@SyncFall                              // сигнал SYNC
                    movs    R0, R4, lsr #(DIN_BIT+1)                // проверим активность
                    bcs.n   @@WaitSel                               // сигнала DIN
                    ubfx    R0, R4, #SEL1_BIT, #6                   //
                    ldr     R3, [R6, R0, lsl #2]                    //
                    tst     R3, R3                                  // при данной комбинации
                    beq.n   @@WaitSel                               // нет доступа к ROM
    //
    // Более быстрый вариант, но требует чтобы комбинация CS была
    // устойчивой в момент ниспадающего SYNC
    //
    //              ubfx    R0, R4, #SEL1_BIT, #6                   //
    //              ldr     R3, [R6, R0, lsl #2]                    //
    //              tst     R3, R3                                  // при данной комбинации
    //              beq.n   @@SyncHigh                              // нет доступа к ROM
    //
                    ldrh    R0, [R3, R7]                            // выполняем загрузку
                                                                    // данных из массива
    @@WaitDin:      ldr     R4, [R2, #PIO_IDR]                      // теперь ждем активного DIN
                    movs    R3, R4, lsr #(DIN_BIT+1)                //
                    ittt    cc                                      //
                    movcc   R4, R5, lsl #16                         //
                    strcc   R4, [R2, #PIO_BSR]                      // активируем сигнал RPLY
                    strcc   R0, [R1, #PIO_ODR]                      // выводим данные на шину
                    bcc.n   @@SetupWait                             //
                    movs    R3, R4, lsr #(SYNC_BIT+1)               //
                    bcc.n   @@WaitDin                               //
                    b.n     @@SyncFall                              //
                                                                    //
    @@SetupWait:    movs    R3, #0xFFFFFFFF                         //
                    movs    R3, R3, lsr #16                         //
                                                                    //
    @@WaitDone:     ldr     R0,  [R2, #PIO_IDR]                     // проверим активность DIN
                    movs    R4, R0, lsr #(DIN_BIT+1)                // как только DIN неактивен
                    bcc.n   @@WaitDone                              // сразу снимаем RPLY и
                    str     R5, [R2, #PIO_BSR]                      // освобождаем шину
                    strh    R3, [R1, #PIO_ODR]                      //
                    b.n     @@SyncHigh                              //
                                                                    //
    app_end_loop:                                                   //
                                                                    //
    //_____________________________________________________________________________
    //
    Исходники все открыты, смотрим файл a205.a79 - это ассемблерный модуль, в том числе содержит саму процедуру эмуляции. Позиционно-независима, исполняется копия процедуры в RAM, так как в целом быстрее чем из флеша, несмотря на кеширующий акселератор. В исходниках достаточно подробные комментарии, если что-то конкретно непонятно - спрашивайте. Блок-схему - постараюсь, но это времени требует, да и очень редко их рисую, только на бумажке.
    Последний раз редактировалось Vslav; 24.02.2015 в 19:56.

  10. #19
    Activist
    Регистрация
    11.08.2009
    Адрес
    Минск
    Сообщений
    234
    Спасибо Благодарностей отдано 
    21
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    (Vslav)
    Я нисколько не сомневаюсь в вашем профессионализме - Вы супер и даже в разных областях - но Вы не БК-шник. И не обижайтесь - некоторые ваши решения для БК соответствуют убийству мух кирпичём ...
    Да, приведён хороший ассемблерный текст с комментами (даже я вижу некоторые почти БК-шные команды) - может попробуем всё это сместить в меньшие мегагерцы с некоторым изменением алгоритма и вдруг дотумкаем до чё-нибудь меньше-разрядного и микросхемно меньше-ногого?
    Последний раз редактировалось Ал-р; 24.02.2015 в 22:21.

  11. #20
    Veteran Аватар для perestoronin
    Регистрация
    25.11.2011
    Адрес
    г. Красногорск
    Сообщений
    1,389
    Спасибо Благодарностей отдано 
    16
    Спасибо Благодарностей получено 
    7
    Поблагодарили
    7 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Ал-р - не получится в принципе и не получится дешевле.

    PS. Правильное приложение усилий - сделать подобие БК на 1806ВМ2, попутно выкинув всю 1801.
    Последний раз редактировалось perestoronin; 24.02.2015 в 22:47.

    Ретрокладовая продажи

    продажи
    [свернуть]

Страница 2 из 15 ПерваяПервая 123456 ... ПоследняяПоследняя

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

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

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

Похожие темы

  1. Про 1801РР1
    от Andrey_Korabelev в разделе Разработка электроники
    Ответов: 7
    Последнее: 26.03.2021, 15:27
  2. Список версий 1801ВП1 и 1801РЕ2
    от CodeMaster в разделе ДВК, УКНЦ
    Ответов: 2
    Последнее: 28.02.2012, 22:39
  3. Нужен внутрисхемный эмулятор Z80
    от SPsoft в разделе Несортированное железо
    Ответов: 0
    Последнее: 09.06.2009, 10:14
  4. Внутрисхемный эмулятор Z80
    от DVS в разделе Несортированное железо
    Ответов: 52
    Последнее: 08.06.2009, 12:02

Ваши права

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