Annotation of lucent/sys/src/9/pc/f002534, revision 1.1.1.1

1.1       root        1: /* Centronix parallel (printer) port */
                      2: 
                      3: /* base addresses */
                      4: 
                      5: #define        Lpt1    0x3bc
                      6: #define        Lpt2    0x378
                      7: #define        Lpt3    0x278
                      8: 
                      9: /* offsets, and bits in the registers */
                     10: 
                     11: #define        Qdlr    0x0     /* data latch register */
                     12: 
                     13: #define        Qpsr    0x1     /* printer status register */
                     14: #define        Fbusy           0x80
                     15: #define        Fintbar         0x40
                     16: 
                     17: #define        Qpcr    0x2     /* printer control register */
                     18: #define        Fie             0x10
                     19: #define        Fsi             0x08
                     20: #define        Finitbar        0x04
                     21: #define        Faf             0x02
                     22: #define        Fstrobe         0x01
                     23: 
                     24: /*
                     25:  *  read next data byte
                     26:  *
                     27:  *     outb(dev+Qpcr, Finitbar|Faf|Fsi|Fstrobe);
                     28:  *     data = (inb(dev+Qpsr)&0xf8)<<2;
                     29:  *     outb(dev+Qpcr, Finitbar|Faf|Fsi);
                     30:  *     data |= inb(dev+Qpsr)>>3;
                     31:  */
                     32: TEXT   Irdnext(SB),$0
                     33: 
                     34:        MOVL    dev+0(FP),DX    /* points to base address */
                     35:        MOVL    $(Finitbar|Faf|Fsi|Fstrobe),AX
                     36:        ADDL    $Qpcr,DX        /* points to control register */
                     37:        OUTB
                     38:        OUTB                    /* have to wait, sorry */
                     39:        SUBL    $1,DX           /* points to status register */
                     40:        INB
                     41:        MOVL    AX,CX
                     42:        MOVL    $(Finitbar|Faf|Fsi),AX
                     43:        ADDL    $1,DX           /* points to control register */
                     44:        OUTB
                     45:        OUTB
                     46:        ANDL    $0xf8,CX
                     47:        SHLL    $2,CX
                     48:        SUBL    $1,DX           /* points to status register */
                     49:        INB
                     50:        SARL    $3,AX
                     51:        ORL     CX,AX
                     52:        RET

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.