home *** CD-ROM | disk | FTP | other *** search
/ The Unsorted BBS Collection / thegreatunsorted.tar / thegreatunsorted / programming / misc_programming / printer < prev    next >
Text File  |  1990-01-05  |  6KB  |  130 lines

  1.                          Chapter  9
  2.  
  3.                         Printer I/O Services
  4.                         --------------------
  5.  
  6.  1. Parallel Printer Interface
  7.  
  8.     The Personal Computer may be connected to a printer with a standard
  9.     parallel interface.  The signals of the parallel printer interface are
  10.     shown in Table 1-1.
  11.  
  12.                   Table 1-1.  Parallel Printer Interface
  13.     ┌────────────────────────┬───────────────┬────────────────────────────┐
  14.     │ Signal Name            │ Direction     │  Adapter Connector Pin No. │
  15.     ├────────────────────────┼───────────────┼────────────────────────────┤
  16.     │ Data Bit 0 - 7         │ To Printer    │   2 - 9                    │
  17.     │ Strobe #               │ To Printer    │   1                        │
  18.     │ Select Input #         │ To Printer    │   13                       │
  19.     │ Auto Feed #            │ To Printer    │   14                       │
  20.     │ Initialize Printer #   │ To Printer    │   16                       │
  21.     │ Acknowledge #          │ To Computer   │   10                       │
  22.     │ Busy                   │ To Computer   │   11                       │
  23.     │ Out of Paper           │ To Computer   │   12                       │
  24.     │ Select                 │ To Computer   │   13                       │
  25.     │ Error #                │ To Computer   │   15                       │
  26.     └────────────────────────┴───────────────┴────────────────────────────┘
  27.  
  28.     The operation of the parallel interface is quit simple.  The printer 
  29.     will not accept any input unless the Select Input # line is in the 
  30.     proper state.
  31.  
  32.     The Initialize Printer # line is used to initialize the printer.  The 
  33.     correct signal must be on the line for at least 50 us.
  34.  
  35.     The data to be printed is placed on the eight Data-Bit lines.  Then the 
  36.     Strobe # line is pulsed for 1 us to 5 us.  The printer processes the
  37.     data and then sends a pulse back on the Acknowledge # line.  When the
  38.     acknowledge pulse is received by the computer, another character may be
  39.     sent to the printer.  Instead of waiting for the acknowledge pulse, the
  40.     computer may check the Busy line.  The computer may send characters to
  41.     the printer as long as the printer is not busy.
  42.  
  43.     The Out of Paper line tells the computer that the printer is out of 
  44.     paper. The Select line tells the computer that the printer is on line.
  45.  
  46.     The Error # line tells the computer that the printer is off line, out 
  47.     of paper, or in another error state.  The busy status also reflects
  48.     these error conditions.
  49.  
  50.  
  51.  2. Printer I/O Ports
  52.  
  53.     control signals on base I/O address +2
  54.     status signals on base I/O address +1
  55.     data signals at base I/O address
  56.  
  57.     port 278h-27fh -- parallel printer port 2
  58.     port 378h-37fh -- parallel printer port 1
  59.     port 3bch-3bfh -- parallel printer port 0
  60.  
  61.         controll:
  62.     bit 7 -- not used
  63.     bit 6 -- not used
  64.     bit 5 -- not used
  65.     bit 4 -- +IRQ enable (interrupt on -ACK true to false)
  66.     bit 3 -- +SLCT IN  (true for printer select)
  67.     bit 2 -- -INIT     (minimum 50 microsecond true to false pulse)
  68.     bit 1 -- +AUTO FEED(true makes printer line feed after carriage return)
  69.     bit 0 -- +SRTOBE   (1/2 microsecond minimum false to true pulse)
  70.  
  71.         status:
  72.     bit 7 -- -BUSY   (true indicates printer may not accept data)
  73.     bit 6 -- -ACK    (false indicates printer ready to accept another byte)
  74.     bit 5 -- +PE     (true indicateds paper out conditions)
  75.     bit 4 -- +SLCT   (true means printer selected)
  76.     bit 3 -- -ERROR  (false means error condition detected)
  77.     bit 2 -- INT_STA (if intterrupt enable,'acknowledge' will set this bit)
  78.     bit 1 -- not used
  79.     bit 0 -- not used
  80.  
  81.         note:
  82.                 ACK  - acknowledge
  83.                 INIT - initialize
  84.                 PE   - paper end
  85.                 SLCT - select
  86.                 INT_STA - interrupt status
  87.  
  88.  
  89.  
  90.  3. BIOS Printer I/O Services
  91.  
  92.     The BIOS Printer I/O services send characters to the printers, 
  93.     initialize them, and return the status of the printer ports.
  94.  
  95.     All functions require a printer number in DX (0 through 3).  This
  96.     printer number indexes a table in BIOS data area which contains the 
  97.     port base addresses for each of the four corresponding printers.
  98.  
  99.     The power-on self test routine determines whether a printer adapter is
  100.     active at ports 3BCh, 378h, and 278h, and if it detects an installed 
  101.     adapter it stores its port address in the table.
  102.  
  103.     All three printer I/O functions return a status byte in AH.  The least
  104.     significant bit is supplied by the Print Character function to signal a 
  105.     timeout error: the printer will not be ready after the character was
  106.     outputted, and the timeout count expired.  All three functions are 
  107.     listed as follows:
  108.  
  109.     function:
  110.               ah = 0h Printer character
  111.               ah = 1h Initialize printer port
  112.               ah = 2h Read the printer status into ah
  113.               ah = 3h - 0ffh reserved
  114.     input:
  115.               ah - function number
  116.               dx - device number (0 - 2)
  117.     output:
  118.               ah - status
  119.                      bit 0 = 1 -- timeout
  120.                      bit 1   --   not used
  121.                      bit 2   --   not used
  122.                      bit 3 = 1 -- I/O error
  123.                      bit 4 = 1 -- printer selected
  124.                      bit 5 = 1 -- out of paper
  125.                      bit 6 = 1 -- acknowledge
  126.                      bit 7 = 1 -- not busy
  127.  
  128.  
  129.  
  130.