User Tag List

Страница 4 из 7 ПерваяПервая 1234567 ПоследняяПоследняя
Показано с 31 по 40 из 63

Тема: Режим совместимости БК-0011М с БК-0010

  1. #31

    Регистрация
    24.08.2007
    Адрес
    Днепропетровская обл.
    Сообщений
    1,681
    Спасибо Благодарностей отдано 
    2,716
    Спасибо Благодарностей получено 
    170
    Поблагодарили
    130 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Не, нам палитра БК10 не нужна, ядовитый RGB это зло Кстати, палитры на 11-х просто атас. В плохом смысле. На УКНЦ сделано гораздо лучше.

    Пользуясь советом уважаемого grf, наваял подпрограмму INKEY, но она не работает. Что здесь может быть не так?

    Код:
    signed char Basic_INKEY (void) {
      asm("\
            CLR  R0                 \n\
            BITB $0200, @$0177660   \n\
            BEQ  $NOKEY             \n\
            MOVB @$0177662, R0      \n\
    $NOKEY:                         \n"
      );
    } // Basic_INKEY

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

  3. #32

    Регистрация
    30.11.2015
    Адрес
    г. Самара
    Сообщений
    7,507
    Спасибо Благодарностей отдано 
    344
    Спасибо Благодарностей получено 
    714
    Поблагодарили
    596 сообщений
    Mentioned
    13 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    CLR R0
    10$:
    TSTB @#177660
    BPL 10$
    BISB @#0177662, R0

    Если, конечно, на БК CSR и буфер клавиатуры - это 177660 и 177662
    Последний раз редактировалось Hunta; 30.11.2021 в 18:00.

  4. #33

    Регистрация
    20.01.2010
    Адрес
    г. Зеленоград
    Сообщений
    600
    Спасибо Благодарностей отдано 
    28
    Спасибо Благодарностей получено 
    231
    Поблагодарили
    123 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от grf Посмотреть сообщение
    Обычно она или заблокирована или вызывает рестарт игры. Если надо заблокировать - можно просто прописать вектор 4 на команду RTI

    mov #stop,@#4
    ...
    stop: rti
    Чуть поправлю; из-за особенностей микрокода ВМ1 при обработке именно немаскируемого прерывания туда попадёт PC+2, поэтому правильно так:

    Код:
    stop: sub #2, @sp
    rti

  5. #34

    Регистрация
    24.08.2007
    Адрес
    Днепропетровская обл.
    Сообщений
    1,681
    Спасибо Благодарностей отдано 
    2,716
    Спасибо Благодарностей получено 
    170
    Поблагодарили
    130 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Интересное решение. А что - разве надо проверять все биты регистра 177660 ? Вроде было бы сказано только про бит 7.

    А почему здесь не MOVB, а BISB @#0177662, R0 ?

    Да, INKEY не ждёт нажатия, если все кнопки отпущены, то она должна вернуть 0.

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

    Цитата Сообщение от Sandro Посмотреть сообщение
    Чуть поправлю; из-за особенностей микрокода ВМ1 при обработке именно немаскируемого прерывания туда попадёт PC+2, поэтому правильно так
    Отлично. А такой перехват сработает и на 10, и на 11(M)?

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

    Цитата Сообщение от Hunta Посмотреть сообщение
    CLR R0
    10$:
    TSTB @#177660
    BPL 10$
    BISB @#0177662, R0

    Если, конечно, на БК CSR и буфе клавиатуры - это 177660 и 177662
    Про CSR я не понял, но в режиме БК-0010-01 на эмуле GID'а этот код тоже не работает.

    Хорошо. При каких условиях регистры 177660 и 177662 могут не работать?

  6. #35

    Регистрация
    19.04.2013
    Адрес
    г. Чебоксары
    Сообщений
    610
    Спасибо Благодарностей отдано 
    18
    Спасибо Благодарностей получено 
    175
    Поблагодарили
    135 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Sandro Посмотреть сообщение
    правильно так
    Ещё более правильно так (но только для 1801ВМ1):
    Код:
    stop:   sub (PC),(SP)
            rti
    и обычно этот код размещают по адресам 2 и 4, т.е. команда RTI одновременно является адресом вектора прерывания
    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    код тоже не работает
    Вообще-то это классический код, и он просто обязан работать. Но есть одна особенность, если старый код клавиши из 177662 не прочитан, то бит 7 вообще никогда не установится, поэтому нужно делать так:
    Код:
    tst @#177662 ;один раз в начале достаточно
    10$:
    tstb @#177660
    bpl 10$
    mov @#0177662, R0 ;пофиг, байтовая операция или словная, код всё равно 7-битный
    Последний раз редактировалось gid; 30.11.2021 в 19:36.

  7. #36

    Регистрация
    24.08.2007
    Адрес
    Днепропетровская обл.
    Сообщений
    1,681
    Спасибо Благодарностей отдано 
    2,716
    Спасибо Благодарностей получено 
    170
    Поблагодарили
    130 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Пока что добиться работы опроса клавиш не удалось. Код:

    Код:
    MODULE TestKeys; (*$MAIN*)
    IMPORT b := Basic;
    BEGIN
      b.Init;
      REPEAT UNTIL b.INKEY() # 0X;
    END TestKeys.
    Код:
    ;# GNU C17 (GCC) version 11.2.1 20211109 (pdp11-aout)
    ;#	compiled by GNU C version 9.3-win32 20200320, GMP version 6.1.0, MPFR version 3.1.4, MPC version 1.0.3, isl version none
    ;# GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
    ;# options passed: -mbm1 -msoft-float -O2 -Os -fomit-frame-pointer
    	.text
    	.even
    	.globl	_main
    _main:
    ;# TestKeys.c:14: {
    	jsr	pc,___main	;#
    ;# TestKeys.c:19:   Basic_Init();
    	jsr	pc,_Basic_Init	;# Basic_Init
    L_2:
    ;# TestKeys.c:21:   } while (!(Basic_INKEY() != 0x00));
    	jsr	pc,_Basic_INKEY	;# Basic_INKEY
    ;# TestKeys.c:21:   } while (!(Basic_INKEY() != 0x00));
    	tstb	r0		;# tmp29
    	beq	L_2		;#
    ;# TestKeys.c:23: }
    	clr	r0		;#
    	rts	pc
    Код:
    void Basic_Init (void)
    {
      asm("\
            CMPB  @$0177717, $0200    \n\
            BEQ   10$                 \n\
            MTPS  $0340               \n\
            MOV   $016000, @$0177716  \n\
    10$:    TSTB  @$0177662  // A key \n\         <-- делаем "один раз в начале достаточно"
            MOV   $041000, _Basic_scradr"
      );
    } // Basic_Init
    Код:
    signed char Basic_INKEY (void) {
      asm("\
            CLR  R0                 \n\
            TSTB @$0177660          \n\
            BPL  NOKEY$             \n\
            MOVB @$0177662, R0      \n\
     NOKEY$:                        \n"
      );
    } // Basic_INKEY
    TestKeys.zip

  8. #37

    Регистрация
    30.11.2015
    Адрес
    г. Самара
    Сообщений
    7,507
    Спасибо Благодарностей отдано 
    344
    Спасибо Благодарностей получено 
    714
    Поблагодарили
    596 сообщений
    Mentioned
    13 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    А может стоит для начала почитать про систему команд? Как говорится, RTFM, там всё есть. И желательно почитать DEC-овские оригиналы.

  9. #38

    Регистрация
    24.08.2007
    Адрес
    Днепропетровская обл.
    Сообщений
    1,681
    Спасибо Благодарностей отдано 
    2,716
    Спасибо Благодарностей получено 
    170
    Поблагодарили
    130 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Это как понимать? RTFM? Читал уже в нужном для меня объёме. Но читать мало - мастерство приходит с опытом.
    Или Вы намекаете на то, что я использовал неверные команды?

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

    А DEC-овские оригиналы вообще никак не помогут для БК и УКНЦ. Не, если Вам надо делать PDP-11 на ПЛИС, то тут да. А я ставлю более простую цель.

  10. #39

    Регистрация
    30.11.2015
    Адрес
    г. Самара
    Сообщений
    7,507
    Спасибо Благодарностей отдано 
    344
    Спасибо Благодарностей получено 
    714
    Поблагодарили
    596 сообщений
    Mentioned
    13 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    А DEC-овские оригиналы вообще никак не помогут для БК и УКНЦ
    С учётом того, что плаванье в том, что делают команды, да, безусловно, не помогут никак.

  11. #40

    Регистрация
    24.08.2007
    Адрес
    Днепропетровская обл.
    Сообщений
    1,681
    Спасибо Благодарностей отдано 
    2,716
    Спасибо Благодарностей получено 
    170
    Поблагодарили
    130 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

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

    Hunta, понимаю желание меня потроллить - де-я ламер, а Вы крутой перец, но нет. Это контрпродуктивно и ведёт только к срачикам. Оно нам надо?

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

    Я просто пытаюсь сделать подсистему, чтобы можно было написать прогу для БК/УКНЦ на простом паскалеподобном языке и собрать её одной кнопкой. Но количество проблем, которое для этого пришлось и приходится решать - оно вообще подымает барьер вхождения до небес.

Страница 4 из 7 ПерваяПервая 1234567 ПоследняяПоследняя

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

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

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

Похожие темы

  1. Эмулятор БК-0010-01, БК-0011 и БК-0011М
    от Doronetty в разделе Эмуляторы отечественных компьютеров
    Ответов: 248
    Последнее: 21.12.2025, 14:34
  2. Отличия БК-0011М от БК-0010(01)?
    от nzeemin в разделе БК-0010/0011
    Ответов: 22
    Последнее: 30.03.2021, 18:47
  3. Ответов: 0
    Последнее: 24.01.2010, 21:46
  4. О совместимости клонов с играми
    от ILoveSpeccy в разделе Несортированное железо
    Ответов: 1
    Последнее: 13.03.2008, 18:26

Ваши права

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