Annotation of lucent/sys/src/9/pc/f002534, revision 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.