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

User Tag List

Страница 2 из 2 ПерваяПервая 12
Показано с 11 по 16 из 16

Тема: Функция ATTR (x,y) на бейсике.

  1. #11
    Activist Аватар для AndTorp
    Регистрация
    03.03.2008
    Адрес
    Петербург
    Сообщений
    271
    Спасибо Благодарностей отдано 
    61
    Спасибо Благодарностей получено 
    20
    Поблагодарили
    14 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Destr Посмотреть сообщение
    Можно и асм-подпрограммку замутить подключив её к DEF FN.
    Вот как тут описано: http://zxpress.ru/book_articles.php?id=1539
    Я попробовал.
    Получилась функция, расположенная в первой строке.
    1 DEF FN a(x,y,p)=USR VAL "23910": REM здесь маш. код
    x и y - координаты на экране;
    p - параметр, указывающий возвращаемый элемент цвета:
    p=7 - ink;
    p=56 - paper;
    p=64 - bright;
    p=128 - flash.
    Не советую вводить другие параметры p, проверки корректности нет и может зависнуть!

    Для работы нужно, чтобы PROG=23867, иначе необходимо пересчитать значение в кавычках PROG+43
    В прикрепленном имедже есть файл primer.B, показывающий работу функции.

    З.Ы. Есть небольшая проблема. После первой строки нарушается вывод листинга на экран (его не видно). Введение в следующей строке управляющих кодов цвета, проблему не решило. Может кто знает, как это исправить?

    Вложение удалено мной. Причина - устранение проблем с выводом листинга.
    Исправленная функция в моем сообщении ниже.
    Последний раз редактировалось AndTorp; 26.09.2011 в 01:00.

  2. #12
    Veteran Аватар для Destr
    Регистрация
    26.03.2008
    Адрес
    Питкяранта
    Сообщений
    1,800
    Спасибо Благодарностей отдано 
    249
    Спасибо Благодарностей получено 
    112
    Поблагодарили
    86 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от AndTorp Посмотреть сообщение
    Есть небольшая проблема. После первой строки нарушается вывод листинга на экран (его не видно). Введение в следующей строке управляющих кодов цвета, проблему не решило. Может кто знает, как это исправить?
    Ну варианты навскидку:
    1. Постоянно юзать LIST 10 + ENTER
    2. Расположить маш.код не после REM, а где-нибудь в другом месте (скорректировав стек и т.п.)
    3. Подправить код - чернеет всё после кода #16 (#5D7B) (упр.код AT и дальше комп понимает что идут коррдинаты, а они обе #29, вот и перемещается позиция печати за экран и выдаётся код ошибки), т.е. можно скорректировать прогу так, чтоб этой цифры не было.
    Там (#5D7A) команду LD H,#16 - заменить на:
    LD H,#17
    DEC H
    Ну или вроде того...

    Может быть шустрее было-бы сделать по другому.
    1. Требуемый параметр всегда задаём в одной и той-же переменной (ну к примеру attr) и там указываем что нужно. 0=инк, 1=папер, 2=бордер, 3=брайт, 4= флэш (хотя нафик он нужен по сути-то, но...)
    2. Бэйсик-прога при запуске выясняет значения PROG и адрес переменных attr,x,y и подставляет в соответсвующее место кода.
    3. После этого всего (назовём это инициализацией) можно делать так:
    LET attr=0:LET x=10:LET y=20 (хотим узнать инк по коорд 10,20)
    LET attr=USR адрес кода (в котором уже есть адреса всех нужных переменных (они появились там после инициализации) и который тупо берет эти значения и выяснив что нужно от него в данный момент, возвращает значение атрибута в регистровой паре BC, которую интерпритатор бэйсика уже сам запихает в attr).

    Сдаётся мне что это будет быстрей, но могу ошибатся, надо проверять, сравнивать с предыдущими вариантами. Бог в помощь!

    P.S. А вообще пора уже писать компилируемый вариант бейсика ("сам-знаеш-кто" не надо кричать "Я ведь тебе говорил!". Помню. Может быть и займусь.)

    P.S.S AndTorp (или женя999, кому там надо) зачем это выяснение атрибутов вообще нужно?
    Опиши для чего тебе эти числа, может быть как-то проще можно решить?
    Последний раз редактировалось Destr; 25.09.2011 в 14:35.

  3. #13
    Activist Аватар для AndTorp
    Регистрация
    03.03.2008
    Адрес
    Петербург
    Сообщений
    271
    Спасибо Благодарностей отдано 
    61
    Спасибо Благодарностей получено 
    20
    Поблагодарили
    14 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Destr Посмотреть сообщение
    3. Подправить код - чернеет всё после кода #16 (#5D7B) (упр.код AT и дальше комп понимает что идут коррдинаты, а они обе #29, вот и перемещается позиция печати за экран и выдаётся код ошибки), т.е. можно скорректировать прогу так, чтоб этой цифры не было.
    Там (#5D7A) команду LD H,#16 - заменить на:
    LD H,#17
    DEC H
    Ну или вроде того...
    Спасибо за разъяснение. Исправил.

    Цитата Сообщение от Destr Посмотреть сообщение
    Может быть шустрее было-бы сделать по другому.
    1. Требуемый параметр всегда задаём в одной и той-же переменной (ну к примеру attr) и там указываем что нужно. 0=инк, 1=папер, 2=бордер, 3=брайт, 4= флэш (хотя нафик он нужен по сути-то, но...)
    2. Бэйсик-прога при запуске выясняет значения PROG и адрес переменных attr,x,y и подставляет в соответсвующее место кода.
    3. После этого всего (назовём это инициализацией) можно делать так:
    LET attr=0:LET x=10:LET y=20 (хотим узнать инк по коорд 10,20)
    LET attr=USR адрес кода (в котором уже есть адреса всех нужных переменных (они появились там после инициализации) и который тупо берет эти значения и выяснив что нужно от него в данный момент, возвращает значение атрибута в регистровой паре BC, которую интерпритатор бэйсика уже сам запихает в attr).

    Сдаётся мне что это будет быстрей, но могу ошибатся, надо проверять, сравнивать с предыдущими вариантами. Бог в помощь!
    Возможно и быстрее, но я хотел сделать простую в использовании функцию.

    Цитата Сообщение от Destr Посмотреть сообщение
    P.S. А вообще пора уже писать компилируемый вариант бейсика ("сам-знаеш-кто" не надо кричать "Я ведь тебе говорил!". Помню. Может быть и займусь.)
    Да, это было бы хорошо! И побольше графических возможностей, как в PRO-DOS. И хорошо бы реализация работы с прерываниями.

    Цитата Сообщение от Destr Посмотреть сообщение
    P.S.S AndTorp (или женя999, кому там надо) зачем это выяснение атрибутов вообще нужно?
    Это нужно Жене, я просто попробовал реализовать.

    Исправленный вариант.
    Вложения Вложения

  4. #14
    Member Аватар для Ares
    Регистрация
    04.01.2011
    Адрес
    Москва
    Сообщений
    88
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

  5. #15
    Guru
    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    13,550
    Спасибо Благодарностей отдано 
    1,213
    Спасибо Благодарностей получено 
    1,748
    Поблагодарили
    680 сообщений
    Mentioned
    67 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Цитата Сообщение от Ares Посмотреть сообщение
    Спам

  6. #16
    Veteran Аватар для Destr
    Регистрация
    26.03.2008
    Адрес
    Питкяранта
    Сообщений
    1,800
    Спасибо Благодарностей отдано 
    249
    Спасибо Благодарностей получено 
    112
    Поблагодарили
    86 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от AndTorp Посмотреть сообщение
    Да, это было бы хорошо! И побольше графических возможностей, как в PRO-DOS.
    С муками и криками рождается компилятор (да, не прошло и года ). Если есть что посоветовать - внимаю!
    Последний раз редактировалось Destr; 04.04.2012 в 00:06.

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

Страница 2 из 2 ПерваяПервая 12

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

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

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

Похожие темы

  1. Спрайты в бейсике
    от AER в разделе Для начинающих
    Ответов: 13
    Последнее: 28.03.2010, 11:50
  2. моя игра на бейсике
    от женя999 в разделе Игры
    Ответов: 44
    Последнее: 10.02.2010, 16:02
  3. Ответов: 5
    Последнее: 03.09.2007, 02:34
  4. Border-эффект на Бейсике
    от jim в разделе Разный софт
    Ответов: 7
    Последнее: 18.04.2007, 21:50
  5. Функция #0a процедуры #3d13
    от axor в разделе Программирование
    Ответов: 3
    Последнее: 12.10.2006, 16:31

Ваши права

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