User Tag List

Страница 13 из 70 ПерваяПервая ... 91011121314151617 ... ПоследняяПоследняя
Показано с 121 по 130 из 697

Тема: Бейсики для Вектора-06Ц и клонов

  1. #121

    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    8,388
    Спасибо Благодарностей отдано 
    763
    Спасибо Благодарностей получено 
    2,366
    Поблагодарили
    1,316 сообщений
    Mentioned
    38 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Умные люди плавучку уже выцепили (синтаксис z80). В принципе и в дизассембере 2.5 (синтаксис 8080), который я выкладывал примерно оно, но тут причесано и с комментариями.

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

    svofski(16.02.2023)

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

  3. #122

    Регистрация
    24.08.2012
    Адрес
    г. Волжский
    Сообщений
    456
    Спасибо Благодарностей отдано 
    789
    Спасибо Благодарностей получено 
    266
    Поблагодарили
    101 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    В целом то что задумал сделать похоже получается (хотя и со скрипом, я думал на Бейсике быстрее будет, но оказалось при незнании тонкостей Бейсика на Вектор можно подолгу застрять на всякой ерунде) - т.е. сделать что-нибудь необычное-интересное используя только штатные команды Бейсика. Возможно и будут вставки машинных кодов, но пока надеюсь без них обойтись. Однако встречаются моменты, которые я не знаю пока как можно решить, например:

    1. Команда INKEY¤ оказывается сохраняет нажатые клавиши в некий буфер и соответственно когда игрок нажимает клавишу например ВПРАВО то всё время пока она нажата код этой клавиши пишется в буфер - это приводит к тому что когда игрок нажимает ВЛЕВО то персонаж попрежнему бежит ВПРАВО т.к. INKEY¤ выдаёт из буфера всё что накопилось до этого, поэтому актуально поменять направление не получается.
    Конечно с таким управлением невозможно нормально играть.
    На данный момент я решил использовать такой подход
    1100 V=ASC(INKEY¤):IF V<>255 THEN 1100
    таким образом "выкачивается"-обнуляется буфер перед тем как начнётся новый опрос клавиатуры.
    Это немного помогает, но всё равно хочется чего-то получше.
    Есть ли способ побороть эту проблему с помощью команд Бейсика ?
    Например я подумал что вероятно через команду PEEK можно где-то в памяти прочитать именно то какая клавиша СЕЙЧАС нажата. Кто-нибудь знает адресс этой ячейки ?

    2. По замыслу проекта главный герой должен улететь на ракете в космос. И тут без аппаратного скрола не обойтись. Возможно команда POKE по адресу ячеки скроллинга будет решением. Кто-нибудь знает адресс этой ячейки ?

  4. #123

    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    8,388
    Спасибо Благодарностей отдано 
    763
    Спасибо Благодарностей получено 
    2,366
    Поблагодарили
    1,316 сообщений
    Mentioned
    38 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от metamorpho Посмотреть сообщение
    Есть ли способ побороть эту проблему с помощью команд Бейсика ?
    Если ограничиться командами бейсика, то есть два частичных решения:
    1. Опрашивать клавиши СС и РУС/ЛАТ с использованием INP(1). Еще там клавиша УС, но, насколько помню, она приостановит выполнение программы.
    2. Опрашивать джойстик (тоже INP).
    В детстве я для себя радикально решил эту проблему машиннокодовой вставкой.
    Цитата Сообщение от metamorpho Посмотреть сообщение
    Возможно команда POKE по адресу ячеки скроллинга будет решением. Кто-нибудь знает адресс этой ячейки ?
    Ячейки бейсика описаны в vector-user 1 (сдвиг экрана - 771). Еще кажется в информационной бейсиковской программе, но тут надо уточнить.
    Последний раз редактировалось ivagor; 24.02.2023 в 21:00. Причина: УС<->CC

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

    metamorpho(22.02.2023)

  5. #124

    Регистрация
    24.08.2012
    Адрес
    г. Волжский
    Сообщений
    456
    Спасибо Благодарностей отдано 
    789
    Спасибо Благодарностей получено 
    266
    Поблагодарили
    101 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    С INKEY$ Бейсика не получается нормально читать клавиатуру.
    Пришлось машинный код использовать. Однако программа виснет.
    Вот код Бейсика:

    4 HIMEM &7FF0
    5 RESTORE 900 : REM ЗАГРУЗКА МАШИННЫХ КОДОВ
    6 AD=&7FF1
    7 FOR I=1 TO 9
    8 READ B:POKE AD,B:AD=AD+1
    9 NEXT I
    ..................
    215 V=USR(&7FF1): REM ОПРОС КЛАВИАТУРЫ
    220 IF V=239 THEN RX=RX-1:GOTO 250
    221 IF V=191 THEN RX=RX+1:GOTO 250
    222 IF V=223 THEN RY=RY-1:GOTO 266
    223 IF V=127 THEN RY=RY+1:GOTO 266
    .................
    900 DATA &F3,&3E,&FE,&D3,&03,&DB,&02,&FB,&C9

    Это код подпрограммы (которая прописана в строке 900)

    F3 DI
    3E FE MVI A,0FEH ; ПРОВЕРКА НАЖАТИЯ НА КЛАВИШИ ИГРОВОГО РЯДА.
    D3 03 OUT 03
    DB 02 IN 02
    FB EI
    C9 RET

    Насколько я понял (прочитал) в переменную V заносится значение аккумулятора при выходе из подпрограммы по USR.
    Что не так с моей подпрограммой ?

  6. #125

    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    8,388
    Спасибо Благодарностей отдано 
    763
    Спасибо Благодарностей получено 
    2,366
    Поблагодарили
    1,316 сообщений
    Mentioned
    38 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Нужно опрашивать клавиатуру с привязкой к прерыванию и задавать режим ВВ55. Можно например как в baskeys - один раз внедряемся в прерывание и потом берем коды клавиш из 7FF8 (курсор) и 7FF9 (пробел и компания)
    Вложения Вложения

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

    metamorpho(23.02.2023)

  7. #126

    Регистрация
    05.08.2008
    Адрес
    Магнитогорск
    Сообщений
    988
    Спасибо Благодарностей отдано 
    25
    Спасибо Благодарностей получено 
    95
    Поблагодарили
    45 сообщений
    Mentioned
    5 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    metamorpho, На векторе нельзя так просто взять и опросить клавиатуру, т.к. порты клавиатуры по совместительству еще являются портами видеоконтроллера (отвечают за скролинг и цвет палитры), поэтому опрос клавы приведет к артифактам на экране. клаву опрашивают во время обратного хода луча т.е. в обработчике прерывания, к тому же порт B ВВ55 на время опроса клавы надо переключать направление порта, а потом возвращать в прежнее состояние.
    Здесь можно скачать актуальные версии Virtual Vector (VV)

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

    metamorpho(23.02.2023)

  8. #127

    Регистрация
    24.08.2012
    Адрес
    г. Волжский
    Сообщений
    456
    Спасибо Благодарностей отдано 
    789
    Спасибо Благодарностей получено 
    266
    Поблагодарили
    101 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ivagor Посмотреть сообщение
    .... Можно например как в baskeys - один раз внедряемся в прерывание и потом берем коды клавиш из 7FF8 (курсор) и 7FF9 (пробел и компания)
    Запускаю baskeys она выдаёт мерцающие точки и тире-артефакты и перестаёт реагировать на клавишу F12 (похоже виснет).
    ..................
    ......................... прошло несколько минут

    А нет ВСЁ РАБОТАЕТ - настроил (вставил задержку между выводом print и палитру немного поменял) вроде как.
    Последний раз редактировалось metamorpho; 23.02.2023 в 23:15.

  9. #128

    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    8,388
    Спасибо Благодарностей отдано 
    763
    Спасибо Благодарностей получено 
    2,366
    Поблагодарили
    1,316 сообщений
    Mentioned
    38 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от metamorpho Посмотреть сообщение
    Запускаю baskeys она выдаёт мерцающие точки и тире-артефакты и перестаёт реагировать на клавишу F12 (похоже виснет).
    Интересно, что проблему выявил только VV (в v06x-godot не так просто попробовать, а в emu и emu80 было нормально). Надеюсь исправленный вариант будет нормально работать везде.

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

    Забыл дополнить, что адреса для PEEK сдвинулись - 7FFC и 7FFD

    Upd: поправил проверку повторного запуска

    Upd 01.03.2023: добавил архив с BAS и TXT полученными конверсией в Vector06CBasic.exe
    Вложения Вложения
    Последний раз редактировалось ivagor; 01.03.2023 в 16:04.

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

    metamorpho(24.02.2023)

  10. #129

    Регистрация
    24.08.2012
    Адрес
    г. Волжский
    Сообщений
    456
    Спасибо Благодарностей отдано 
    789
    Спасибо Благодарностей получено 
    266
    Поблагодарили
    101 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ivagor Посмотреть сообщение
    Интересно, что проблему выявил только VV (в v06x-godot не так просто попробовать, а в emu и emu80 было нормально). Надеюсь исправленный вариант будет нормально работать везде.
    - - - Добавлено - - -
    Забыл дополнить, что адреса для PEEK сдвинулись - 7FFC и 7FFD
    ivagor, спасибо !!
    Да я использую VV.
    Теперь управление более менее играбельное. Хотя скорости не хватает (для разнообразия переключаю на 12 Мгц и всё летает )
    Заметил интересную особенность baskeys - после первого запуска всё работает, потом нажимаю F12 и снова RUN и на втором запуске программа красиво (из эффекта зависания можно делать демку ) виснет.

  11. #130

    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    8,388
    Спасибо Благодарностей отдано 
    763
    Спасибо Благодарностей получено 
    2,366
    Поблагодарили
    1,316 сообщений
    Mentioned
    38 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от metamorpho Посмотреть сообщение
    Заметил интересную особенность baskeys - после первого запуска всё работает, потом нажимаю F12 и снова RUN и на втором запуске программа красиво (из эффекта зависания можно делать демку ) виснет.
    Забыл, что после доработки сместились не только ячейки с данными клавиатуры, но и адрес команды перехода. Проверку в строке 25 исправил

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

    Кстати, кроме отсутствия буферизации дополнительная фича - возможность опрашивать несколько клавиш одновременно, правда тут надо аккуратно, в байте писали про ограничения реала.

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

    metamorpho(24.02.2023)

Страница 13 из 70 ПерваяПервая ... 91011121314151617 ... ПоследняяПоследняя

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

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

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

Похожие темы

  1. Картотека ПО для Вектора-06ц
    от svofski в разделе Вектор
    Ответов: 719
    Последнее: 04.04.2024, 11:13
  2. Восстановление Вектора-06ц
    от Daniil Chislov 86 в разделе Вектор
    Ответов: 100
    Последнее: 11.03.2021, 00:23
  3. Ответов: 198
    Последнее: 26.04.2020, 13:05
  4. Ответов: 58
    Последнее: 06.07.2019, 23:56
  5. Ответов: 8
    Последнее: 14.11.2008, 02:41

Ваши права

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