|
|
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
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.