1. printer test - Reply

Michael J Doscher asked:

> How do you determine if the printer is on line or not ?

I think Wally was absolutely right, why don't you listen to your printer?
But just in case, I also translated Irv's proposition. Jiri

-- snip ------------------------------------------------------------------------
-- printer.ex
-- j.babor at gns.cri.nz

include machine.e

function printer_status(integer printer_number)
-- return printer status
-- printer_number is 1 for lpt1, 2 for lpt2, etc
-- status byte bits (1 & 2 are not used):
-- -- 7 ---  ---- 6 ----  -- 5 ---  -- 4 ---  -- 3 --  --- 0 ---
-- not busy  acknowledge  no paper  selected  i/o err. timed-out
   sequence rl -- list of register values
   rl = repeat(0,10)
   rl[REG_AX] = #0200
   rl[REG_DX] = printer_number-1    -- 0..2 -> lpt1..lpt3
   rl = dos_interrupt(#17,rl)
   return floor(rl[REG_AX]/256)
end function

function printer_ok(integer printer_number)
   -- return 1 (true) if printer is selected, has paper,
   -- and no I/O or time out error has occurred
   integer status
   status=printer_status(printer_number)
   return and_bits(status,#10) and not and_bits(status,#29)
end function

-- example ---------------------------------------------------------------------

? printer_status(1)
? printer_ok(1)

new topic     » topic index » view message » categorize

Search



Quick Links

User menu

Not signed in.

Misc Menu