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

User Tag List

Страница 4 из 9 ПерваяПервая 12345678 ... ПоследняяПоследняя
Показано с 31 по 40 из 90

Тема: Перевод гайда How to Write ZX Spectrum Games

  1. #31
    Activist Аватар для kgbplus
    Регистрация
    15.02.2005
    Адрес
    Санкт-Петербург
    Сообщений
    406
    Спасибо Благодарностей отдано 
    8
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Код:
    ktest  ld c,a              ; код клавиши помещаем в c.
           and 7               ; оставляем только биты d0-d2 для получения номера ряда.
           inc a               ; прибавляем единицу, чтобы значение стало от 1 до 8.
           ld b,a              ; помещаем в b.
           srl c               ; делим c на 8,
           srl c               ; для того, чтобы найти позицию внутри ряда.
           srl c
           ld a,5              ; в ряду 5 клавиш.
           sub c               ; вычитаем из кода значение позиции.
           ld c,a              ; результат помещаем в c.
           ld a,254            ; старший байт номера порта из которого будем читать.
    ktest0 rrca                ; с помощью сдвига вычисляем старший байт адреса порта.
           djnz ktest0         ; повтор, пока не найдем соответствующий ряд.
           in a,(254)          ; читаем порт (a=старший байт, 254=младший).
    ktest1 rra                 ; сдвигаем биты в прочитанном результате.
           dec c               ; счетчик цикла.
           jp nz,ktest1        ; повторять пока нужный нам бит не окажется в флаге переноса.
           ret
    Живи, играй!

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

  3. #32
    Member Аватар для helcril
    Регистрация
    15.12.2009
    Адрес
    Angarsk
    Сообщений
    191
    Спасибо Благодарностей отдано 
    76
    Спасибо Благодарностей получено 
    5
    Поблагодарили
    4 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от kgbplus Посмотреть сообщение
    Код:
    ktest  ld c,a              ; код клавиши помещаем в c.
           and 7               ; оставляем только биты d0-d2 для получения номера ряда.
           inc a               ; прибавляем единицу, чтобы значение стало от 1 до 8.
           ld b,a              ; помещаем в b.
           srl c               ; делим c на 8,
           srl c               ; для того, чтобы найти позицию внутри ряда.
           srl c
           ld a,5              ; в ряду 5 клавиш.
           sub c               ; вычитаем из кода значение позиции.
           ld c,a              ; результат помещаем в c.
           ld a,254            ; старший байт номера порта из которого будем читать.
    ktest0 rrca                ; с помощью сдвига вычисляем старший байт адреса порта.
           djnz ktest0         ; повтор, пока не найдем соответствующий ряд.
           in a,(254)          ; читаем порт (a=старший байт, 254=младший).
    ktest1 rra                 ; сдвигаем биты в прочитанном результате.
           dec c               ; счетчик цикла.
           jp nz,ktest1        ; повторять пока нужный нам бит не окажется в флаге переноса.
           ret
    Спасибо большое. Попытался сам разобраться в коде, благодаря вашей правке. Нашел одну ошибку (выделил жирным в обоих вариантах комментариев), добавил дополнительные пояснения по регистрам, ну и поправил под свой стиль перевода. Так же инструкции ротации не стал называть сдвигом, т.к. имхо все-таки это разные вещи. Посмотрите, и поправьте, где нужно:
    Код:
    ktest  ld c,a              ; код клавиши помещаем в c.
           and 7               ; оставляем только биты d0-d2,
       ; для определения номера группы. 
           inc a               ; прибавляем 1 чтобы получить значение от 1 до 8.
           ld b,a              ; загружаем номер порта в b.
           srl c               ; делим c на 8,
           srl c               ; чтобы найти позицию клавиши внутри группы.
           srl c		   ; значение позиции будет от 0 до 4.
           ld a,5              ; в группе только пять клавиш.
           sub c               ; вычитаем из aккумулятора значение позиции,
           ld c,a              ; и помещаем его в регистр c (результатом
                               ; будет число от 1 до 5).
           ld a,254            ; старший байт порта, из которого будем читать.
    ktest0 rrca                ; с помощью ротации аккумулятора вычисляем
                               ; старший байт адреса порта.
           djnz ktest0         ; повторяем, пока не найдем соответствующую группу
    			   ; (номер группы у нас хранится в b).
           in a,(254)          ; читаем порт (a=старший байт, 254=младший).
    ktest1 rra                 ; ротация бит в полученном результате.
           dec c               ; счетчик цикла (в регистре c значения от 1 до 5).
           jp nz,ktest1        ; повторяем, пока нужный бит не окажется
                               ; во флаге переноса.
           ret

  4. #33
    Activist Аватар для kgbplus
    Регистрация
    15.02.2005
    Адрес
    Санкт-Петербург
    Сообщений
    406
    Спасибо Благодарностей отдано 
    8
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    1. О какой группе речь? Посмотрите здесь как устроена клавитаура Спектрума. Речь идет о рядах, (а точнее о полурядах)
    2. В выделенном ошибся конечно, там не из кода вычитается положение в полуряде, а из 5.
    Позиции в полуряде выглядят так 0 1 2 3 4, соответственно, чтобы например вытеснить позицию 2 с помощью rra нужно выполнить команду три раза.
    3. Слова "ротация" в русском языке, на сколько я знаю, нет.
    Живи, играй!

  5. #34
    Guru
    Регистрация
    27.02.2005
    Адрес
    москва
    Сообщений
    13,773
    Записей в дневнике
    1
    Спасибо Благодарностей отдано 
    143
    Спасибо Благодарностей получено 
    1,179
    Поблагодарили
    775 сообщений
    Mentioned
    18 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от helcril Посмотреть сообщение
    с помощью ротации аккумулятора вычисляем
    сдвигаем биты в A

  6. #35
    Veteran
    Регистрация
    29.12.2010
    Адрес
    Москва
    Сообщений
    1,858
    Спасибо Благодарностей отдано 
    131
    Спасибо Благодарностей получено 
    104
    Поблагодарили
    62 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от kgbplus Посмотреть сообщение
    Слова "ротация" в русском языке, на сколько я знаю, нет.
    ну да?

  7. #36
    Banned
    Регистрация
    12.02.2014
    Адрес
    г. Арзамас
    Сообщений
    6,123
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    сдвиги, ротация - какая разница?

  8. #37
    Member Аватар для helcril
    Регистрация
    15.12.2009
    Адрес
    Angarsk
    Сообщений
    191
    Спасибо Благодарностей отдано 
    76
    Спасибо Благодарностей получено 
    5
    Поблагодарили
    4 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от kgbplus Посмотреть сообщение
    1. О какой группе речь? Посмотрите здесь как устроена клавитаура Спектрума. Речь идет о рядах, (а точнее о полурядах)
    2. В выделенном ошибся конечно, там не из кода вычитается положение в полуряде, а из 5.
    Позиции в полуряде выглядят так 0 1 2 3 4, соответственно, чтобы например вытеснить позицию 2 с помощью rra нужно выполнить команду три раза.
    3. Слова "ротация" в русском языке, на сколько я знаю, нет.
    1. Я знаю как устроена клавиатура спектрума. Вот ваш термин полуряд подходит, а ряд - нет. Я не догадался использовать слово полуряд и придумал термин группа. В любом случае он не искажает смысл.
    2. Ну, я и не критиковал, просто сказал, что исправил ошибку.
    3. А я точно знаю, что слово ротация есть, например ротация кадров. В ассемблере есть команды сдвига, а есть команды ротации. Они похожи, но не идентичны. Т.к. в данном коде именно команды ротации, то я так и пишу.

    сдвигаем биты в A
    Но ведь здесь инструкции ротации, а не сдвига. Я понимаю, что смысл примерно один, но это ведь будет некорректно.

  9. #38
    Activist Аватар для kgbplus
    Регистрация
    15.02.2005
    Адрес
    Санкт-Петербург
    Сообщений
    406
    Спасибо Благодарностей отдано 
    8
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Andrew771 Посмотреть сообщение
    ну да?
    В оригинале команда rra делает rotate.
    И внезапно - у этого слова нет перевода "ротация", потому что оно не обозначает оборот, а обозначает циклический сдвиг.

    ---------- Post added at 16:51 ---------- Previous post was at 16:46 ----------

    Цитата Сообщение от helcril Посмотреть сообщение
    3. А я точно знаю, что слово ротация есть, например ротация кадров. В ассемблере есть команды сдвига, а есть команды ротации. Они похожи, но не идентичны. Т.к. в данном коде именно команды ротации, то я так и пишу.

    Но ведь здесь инструкции ротации, а не сдвига. Я понимаю, что смысл примерно один, но это ведь будет некорректно.
    Я чуть выше ссылку привел. Ротация кадров есть, признаю. Ротации битов нет. Перевод ваш, дело ваше. Но в данном случае "ротация" звучит так же дико, как у некоторых горе-переводчиков "партиция", "инсталляция" и "дебаггинг".
    Живи, играй!

  10. #39
    Member Аватар для helcril
    Регистрация
    15.12.2009
    Адрес
    Angarsk
    Сообщений
    191
    Спасибо Благодарностей отдано 
    76
    Спасибо Благодарностей получено 
    5
    Поблагодарили
    4 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от kgbplus Посмотреть сообщение
    В оригинале команда rra делает rotate.
    И внезапно - у этого слова нет перевода "ротация", потому что оно не обозначает оборот, а обозначает циклический сдвиг.

    ---------- Post added at 16:51 ---------- Previous post was at 16:46 ----------



    Я чуть выше ссылку привел. Ротация кадров есть, признаю. Ротации битов нет. Перевод ваш, дело ваше. Но в данном случае "ротация" звучит так же дико, как у некоторых горе-переводчиков "партиция", "инсталляция" и "дебаггинг".
    По ссылке ходил, но правда не ваша. Кроме "циклического сдвига" там куча других значений, в том числе "проворачивать", "обращаться". Все они по смыслу подходят.
    Ваше замечание я понял. Возможно я не прав, и профи так не говорят. Но этот термин я не из головы взял, и не тупым переводом оригинальной мнемоники (я стараюсь переводить как раз осмысленно и глядя на другие источники). Так эти команды называют например в книге "Программирование в машинных кодах и на языке Ассемблера". Вот цитата оттуда:
    5.14.3. Однобайтные команды ротации аккумулятора.
    Поскольку регистр А широко используется во многих программах, для него продублированы 4 команды ротации. Они выполнены как однобайтные. Это позволяет при их использовании экономить память.

    А вообще спасибо за помощь и хорошо, что перевод кто-то читает и поправляет.
    Кстати, партицию перевел бы как раздел, дебаггинг как отладку. А вот перевод инсталляции зависит от контекста. Иногда правильней будет написать именно инсталляция.
    Добавлю пару еще пару источников, где так же используется термин ротация бит:
    http://marsohod.org/index.php/prodma.../226-arm-instr
    http://www.studfiles.ru/preview/1196320/

    P.S. Если уж все так против слова "ротация", то на "циклический сдвиг" можно заменить. Но просто "сдвиг" точно писать не буду.
    Последний раз редактировалось helcril; 25.03.2015 в 17:16.

  11. #40
    Veteran
    Регистрация
    26.11.2013
    Адрес
    г. Новосибирск
    Сообщений
    1,042
    Спасибо Благодарностей отдано 
    934
    Спасибо Благодарностей получено 
    227
    Поблагодарили
    122 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от helcril Посмотреть сообщение
    P.S. Если уж все так против слова "ротация", то на "циклический сдвиг" можно заменить. Но просто "сдвиг" точно писать не буду.
    Тут логически важен именно сдвиг, и лучше писать просто "сдвиг". Свойство его цикличности неважна.
    (Это также коряво, как вместо "используйте туалетную бумагу" писать "используйте вращающуюся туалетную бумагу". Хотя никто не переспорит, что она вращается на бобине.)

Страница 4 из 9 ПерваяПервая 12345678 ... ПоследняяПоследняя

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

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

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

Похожие темы

  1. Games Compo "From the Arcade to the Spectrum"
    от Rindex в разделе Игры
    Ответов: 5
    Последнее: 28.10.2014, 11:07
  2. 30 ZX Spectrum Games - угадываем названия игр
    от Sabrewulf в разделе Игры
    Ответов: 156
    Последнее: 17.06.2009, 12:41
  3. The Spectrum Games Bible
    от ant222 в разделе Игры
    Ответов: 1
    Последнее: 26.07.2008, 18:35
  4. Read-write vTR-DOS
    от Sonic в разделе Оси
    Ответов: 3
    Последнее: 23.04.2007, 15:34
  5. ZX Spectrum games after 1993
    от alone в разделе Игры
    Ответов: 4
    Последнее: 01.03.2007, 20:42

Ваши права

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