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

User Tag List

Показано с 1 по 10 из 10

Тема: LPRINT USR

  1. #1
    Moderator Аватар для JeRrS
    Регистрация
    02.02.2005
    Адрес
    г. Екатеринбург
    Сообщений
    647
    Благодарностей: 874
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию LPRINT USR

    0
    Последний раз редактировалось JeRrS; 06.01.2013 в 18:35.

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

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

  4. #2
    Guru Аватар для null_device
    Регистрация
    26.09.2009
    Адрес
    г. Красноярск
    Сообщений
    2,741
    Благодарностей: 2067
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    В каком режиме пробовали запускатьпрограмму? Насколько я знаю, команда LPRINT выводит данные через третий поток (аналогично PRINT #3). Однако, некоторые интерфейсы перехватывают это обращение (например LPRINT III) и обрабатывет его по-своему. Из-за чего, некоторые "фичи" для 48 спектрума с его ZX PRINTER'ом ведут к разного рода "глюкам". Также, вероятно, акутальна "занятость" буфера принтера в 128К модели.
    Когда есть, но не знаеш где - это все равно, что нету.

  5. #3
    Guru
    Регистрация
    15.01.2005
    Адрес
    USSR
    Сообщений
    2,038
    Благодарностей: 331
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Решил я очень-когда-то эту задачу, действительно, путём подмены точки входа в процедуру печати и перенаправлением на фиктивный драйвер принтера. Так что идею вы поняли правильно.

  6. #4
    Veteran Аватар для Destr
    Регистрация
    26.03.2008
    Адрес
    Питкяранта
    Сообщений
    1,463
    Благодарностей: 675
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Такие вещи (типа LPRINT) работают не всегда.
    Точнее не на всех тачках.
    Зависит от типа контроллера принтера (если он вообще есть).
    Была фича при помощи LPRINT выводить буквы двойной высоты, но если на Composite48 всё работало на ура, то на Скорпе - наглухо зависало. На Пентагоне писало ошибку.
    В общем это надо глубоко ковырять как работает команда и смотреть где её клинит (а клинит, повторю, в зависимости от железа)

  7. #5
    Guru Аватар для null_device
    Регистрация
    26.09.2009
    Адрес
    г. Красноярск
    Сообщений
    2,741
    Благодарностей: 2067
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Для начала, функция USR nn - выполнение машинно-кодовой процедуры с адреса nn, по выходе из которой результатом будет являться состояние регистровой пары BC. Т.о. связка операторов LPRINT USR nn, должна приводить к выполнению кодовой последовательности (вероятнее всего перенастраивающей стандартный режим работы с принтером), а значение регистров BC использоваться при выполнении перехода на модифицированную процедуру обслуживания принтера.

    Цитата Сообщение от Destr Посмотреть сообщение
    Была фича при помощи LPRINT выводить буквы двойной высоты
    Также работала на Делта С 48. Там использовалась сист. переменная для печати на принтере и оператор LPRINT, точнее LPRINT TAB n. Буквы получались высотой на одну из третей экрана.
    Последний раз редактировалось null_device; 31.10.2010 в 20:11.
    Когда есть, но не знаеш где - это все равно, что нету.

  8. #6
    Guru
    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    10,269
    Благодарностей: 3575
    Mentioned
    5 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Цитата Сообщение от null_device Посмотреть сообщение
    Также работала на Делта С 48. Там использовалась сист. переменная для печати на принтере и оператор LPRINT, точнее LPRINT TAB n. Буквы получались высотой на одну из третей экрана.
    У меня была дельта-с, чего-то не помню такого.
    Зато помню, что переключение с русского на латинский шрифт было, кажется, по close и open

  9. #7
    Banned
    Регистрация
    25.01.2005
    Адрес
    Miass, Chelyabinsk region
    Сообщений
    4,093
    Благодарностей: 925
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    сист. переменная - адрес буфера принтера. если ее поставить на экран, 256 байт заполнятся графич. видом печатаемой строки. после этого оно захочет напечататься на принтере, и если сигнал "бизи" не активен, оно благополучно скипается и прога шуршит дальше. а вот если бизи установлен - был зависон...

  10. Этот пользователь поблагодарил psb за это полезное сообщение:
    Destr (02.11.2010)

  11. #8
    Master
    Регистрация
    08.05.2007
    Адрес
    Dnepropetrovsk
    Сообщений
    890
    Благодарностей: 478
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    А что если заменить LPRINT USR nnn на RANDOMIZE USR nnn или LET l=USR nnn?

    Даю 1 против 10 что команда LPRINT используется в данном случае просто для того, чтобы "поглотить" результат функции USR, но основной эффект от USR как правило заключается не в результате (целом числе из диапазона 0-65535), а в процессе (который зависит от машинной программы, находящейся по адресу nnnn).

    Но если требуется лишь "поглотить" результат USR, то с тем же успехом для этих целей вместо LPRINT могут использоваться команды RANDOMIZE, RESTORE, LET и так далее - любые команды, воспринимающие целые числа в качестве аргумента и не приводящие к побочным эффектам. Наиболее безопасно использовать LET чтобы поместить результат в какую-нибудь ненужную переменную, потому что побочные эффекты все-таки есть как от RANDOMIZE, так и от RESTORE, и они иногда неприемлемы. Например, в одной из моих программ не работала генерация случайных чисел из-за того, что я в ней использовал RANDOMIZE USR.

  12. #9
    Guru Аватар для null_device
    Регистрация
    26.09.2009
    Адрес
    г. Красноярск
    Сообщений
    2,741
    Благодарностей: 2067
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Врятли, скомпилированная программа сначала делает rst 20h, потом несколько callов, операции с регистрами после вышеописанное повторяется еще несколько раз.
    При вызове любым другим оператором фукции USR, один фиг выдает nonsens in basic..
    Когда есть, но не знаеш где - это все равно, что нету.

  13. #10
    Guru Аватар для VNN_KCS
    Регистрация
    11.10.2007
    Адрес
    Донецкая обл. г.Енакиево
    Сообщений
    2,316
    Благодарностей: 755
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Wlodek Посмотреть сообщение
    Решил я очень-когда-то эту задачу, действительно, путём подмены точки входа в процедуру печати и перенаправлением на фиктивный драйвер принтера. Так что идею вы поняли правильно.
    Я конечно извиняюсь. А простейшую прогу печати нельзя сделать? Даже с буквами двойной, и более высотой? Зачем LPRINT? Тем паче, что не на всех клонах работает.

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

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

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

Похожие темы

  1. Измененная прошивка Lprint III
    от KALDYH в разделе Память
    Ответов: 6
    Последнее: 28.12.2013, 11:38
  2. Теневик по схеме из Lprint #13
    от valeron в разделе Unsorted
    Ответов: 2
    Последнее: 08.04.2008, 23:12

Ваши права

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