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

User Tag List

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

Тема: LPRINT USR

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

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

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

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

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

  4. #2
    Guru Аватар для null_device
    Регистрация
    26.09.2009
    Адрес
    г. Красноярск
    Сообщений
    2,679
    Благодарностей: 2035
    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,426
    Благодарностей: 643
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

  7. #5
    Guru Аватар для null_device
    Регистрация
    26.09.2009
    Адрес
    г. Красноярск
    Сообщений
    2,679
    Благодарностей: 2035
    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 в 19:11.
    Когда есть, но не знаеш где - это все равно, что нету.

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

    По умолчанию

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

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

    По умолчанию

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

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

  11. #8
    Master
    Регистрация
    08.05.2007
    Адрес
    Dnepropetrovsk
    Сообщений
    880
    Благодарностей: 470
    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,679
    Благодарностей: 2035
    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, 10:38
  2. Теневик по схеме из Lprint #13
    от valeron в разделе Unsorted
    Ответов: 2
    Последнее: 08.04.2008, 22:12

Ваши права

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