такая траба:
хочу вывести стр на принтер...использую 40 fun 21h
ошибки ф-я никакой не выдает(ax=cx),но почему-то принтер на нее жует
бумагу и отказывается печатать?
есть какие-нить мысли или предложения?
[ASMinPAS]-string to printer.27.11.01 23:44 Автор: Chingachguk <Chingachguk> Статус: Member
> такая траба: > хочу вывести стр на принтер...использую 40 fun 21h > ошибки ф-я никакой не выдает(ax=cx),но почему-то принтер на > нее жует > бумагу и отказывается печатать? > есть какие-нить мысли или предложения?
Хороший код - у меня все работает.
Принтер - ЛКусто из под 98 вин.
Что ты имеешь в виду под "жует" ?
Не прогоняет стрнаницу ?
Тогда надоть ему 12 еще кидать - 1 байт - до кучи.
А еще лучше - просто "файл" - PRN твой
открывать и закрывать до и после печати.
> да кстати обрати плз внимание на мой пред-й вопрос.
Сорр, я в хипах не силен.
Почему просто ты не получаешь блок от паса и через указатель на
него не работаешь с ним на асме ?
[ASMinPAS]- ?28.11.01 01:37 Автор: kar Статус: Незарегистрированный пользователь
> Тогда надоть ему 12 еще кидать - 1 байт - до кучи. > А еще лучше - просто "файл" - PRN твой > открывать и закрывать до и после печати.
я ызвиняюсь но я ничего не понял из твоих слов.
под словом 'жует' понимаю что мой принтер берет бумагу
,немного затягивает и там ее оставляет(вдобавок горит ламп.
"подачи бумаги" если я не ошибаюсь в ее названии,в рез-те - ничего
нет)
не понял вот выше стоящ. 3 строчки - если можно поясни.
[ASMinPAS]- !28.11.01 09:27 Автор: Chingachguk <Chingachguk> Статус: Member
> > Тогда надоть ему 12 еще кидать - 1 байт - до кучи. > > А еще лучше - просто "файл" - PRN твой > > открывать и закрывать до и после печати. > я ызвиняюсь но я ничего не понял из твоих слов. > под словом 'жует' понимаю что мой принтер берет бумагу > ,немного затягивает и там ее оставляет(вдобавок горит ламп. > "подачи бумаги" если я не ошибаюсь в ее названии,в рез-те - > ничего > нет)
Все правильно ! А почему так ? Потому, что на принтер,
чтобы он прогон бумаги выполнил, надо послать
(на печать) символ с кодом 12. Я так делал когда-то, только
использовал ф-цию ah=05h, а не файловую, как ты.
Но ! Потом я понял, что гораздо проще печатать через файл "PRN"
- что ты и делаешь. Но прогон страницы не выполнялся, так же,
как и у тебя... Тогда я просто открывал файл перед печатью(prn),
закрывал его после - и дос(виндовс) сама выталкивала страницу !
> не понял вот выше стоящ. 3 строчки - если можно поясни.
[ASMinPAS]- !28.11.01 19:42 Автор: kar Статус: Незарегистрированный пользователь
> Но ! Потом я понял, что гораздо проще печатать через файл > "PRN" > - что ты и делаешь. Но прогон страницы не выполнялся, так > же, > как и у тебя... Тогда я просто открывал файл перед > печатью(prn), > закрывал его после
ты не мог ли пояснить c файлом prn?
как я понял (раз уж я так делаю) что это наименование моей fun
(тем более у меня она называется "писать в файл через описатель
") тогда всплывает вопрос о открытии и закрытии файла?
[ASMinPAS]- PRN !28.11.01 23:02 Автор: Chingachguk <Chingachguk> Статус: Member
> ты не мог ли пояснить c файлом prn? > как я понял (раз уж я так делаю) что это наименование моей > fun > (тем более у меня она называется "писать в файл через > описатель > ") тогда всплывает вопрос о открытии и закрытии файла?
Смотри ! Грят, было раньше у Юникса, а теперь и у доса такая фича -
- работать с устройствами следующим образом:
1) Открываешь устройство(файл, к примеру) по его имени.
Открыв его, получаешь дескриптор для работы с ним (только !).
В данном случае этот дескриптор тебе возвращают ф-ции 3ch(создать),
3dh(открыть) или еще какие в виде ворда в ax.
2) Для работы с устройством (писать, читать) ты используешь только
этот дескриптор - ос сама въедет, с чем ты хочешь иметь дело.
3) Поработав с у-вом, закрой его (3eh) опять через дескриптор.
У доса же есть предопределенные дескрипторы, которые УЖЕ связаны
с устройствами: 0 - точно не помню, кажись, экран, а вот 4 - это дескриптор
для ПРИНТЕРА ПО УМОЛЧАНИЮ. Да, да, если у тебя в винде стоит сетевой
принтер по умолчанию, то писать как раз ты будешь на него. !
В нашем случае делать можно так:
STDPRINTER db 'PRN',0 ; Вот он, "файл" !
mov ax,3d02h
mov dx,offset STDPRINTER
int 21h
mov bx,ax
; И в ax получишь 4 !
; Запиши в него чего-нить
; И закрой
mov ah,3eh
int 21h
И дос увидит, что файл ты закрыл - файл PRN - и прогонит тебе
страницу. Чего не сделает, если ты его не закроешь !