Presentation is loading. Please wait.

Presentation is loading. Please wait.

Lecture # 11.

Similar presentations


Presentation on theme: "Lecture # 11."— Presentation transcript:

1 Lecture # 11

2 Programmable Peripheral Interface (PPI)

3 Programmable Peripheral Interface (PPI)
Device Used as Parallel port Interface (I/O controller) is PPI

4 Programmable Peripheral Interface (PPI)
CPU Parallel I/O Device Printer PPI

5 Accessing the Parallel Port Through BIOS Functions

6 Accessing the Parallel Port Through BIOS Functions
INT 17H Services 00 Display Characters 01 Initialize Printer 02 Request Printer DX register Port Interface Number 0=LPT1,1=LPT2,2=LPT3

7 Accessing the Parallel Port Through BIOS Functions
All the function Return in AH the Current Printer Status 7 6 5 4 3 2 1 Time out Printer Busy Receive Mode Selected Out of Paper Transfer Error Printer OffLine

8 Accessing the Parallel Port Through BIOS Functions
Time Out Byte 0040:0078 LPT1 0040:0079 LPT2 0040:007A LPT3

9 Accessing the Parallel Port Through BIOS Functions
Specify the number of Attempts BIOS perform before giving a time out Error This byte Varies Depending upon the speed of the PC Busy =0 Printer is Busy Busy =1 Printer is not Busy

10 Importance of the Status Byte

11 Importance of the Status Byte
If((pstate&0x29)!=0)or ((pstate&0x80)==0) or ((pstate&0x10)==0) {printerok=FALSE;} else {printerok=TRUE;}

12 Importance of the Status Byte
17H/00H Write a character on entry AH=00 AL=ASCII code DX=Interface# On exit AH=Status Byte 17H/01H Initialize Printer on entry AH=01 DX=Interface# On exit AH=Status Byte 17H/02H Get Printer Status on entry AH=02, DX=Interface# On exit AH=Status Byte

13 Printing Program

14 Printing Program REGS regs; FILE *fptr; void main(void) {
fptr=fopen(“c:\\temp\\abc.text”,”rb”); regs.h.ah=1; regs.x.dx=0; int86(0x17,&regs,&regs); while(!feof(fptr)) {regs.h.ah=2; if ((regs.h.ah & 0x80)==0x80) { regs.h.ah=0; regs.h.al=getc(fptr); }}}

15 Printing Program 1 #include <dos.h> void interrupt (*old)( );
void interrupt newint ( ); main( ) { old = getvect(0x17); setvect(0x17,newint); keep(0,1000); } void interrupt new () { if (_AH==0) if ((_AL>='A')&&(_AL<='Z')) return; (*old)();

16 Printing Program 2 #include <dos.h> void interrupt (*old)( );
void interrupt newfunc ( ); main( ) { old=getvect(0x17); setvect(0x17,newfunc); keep(0,1000); } void interrupt newfunc( ) if (_AH==0) if ( _AL != ‘ ‘ ) (*old)();

17 Printing Program 3 void interrupt (*old)( );
void interrupt newfunc ( ); main() { old=getvect(0x17); setvect(0x17,newfunc); keep(0,1000); } void interrupt newfunc ( ) { if ( _AH == 0 ) { (*old)(); _AH=0; else Printing Program 3

18 Direct Parallel Port Programming

19 Direct Parallel Port Programming
BIOS support up to three parallel ports Address of these LPT ports is Stored in BIOS Data Area 40:08 word LPT1 40:0A LPT2 40:0C LPT3 40:0E LPT4

20 Direct Parallel Port Programming Dump File Text

21 Direct Parallel Port Programming
unsigned int far * lpt = (unsigned int far *) 0x ; unsigned int temp; temp=*(lpt); *lpt=*(lpt + 1); *(lpt + 1)=temp;

22 Direct Parallel Port Programming Port Registers
40:08 store the base address for lpt1 The parallel port interface has 3 ports internally If the Base address is 0X378 then the three Ports will be 0x378,0x379 0x37A

23 Printer Data Port Base +0 = Data Port 7 6 5 4 3 2 1

24 Printer Status Register
Base + 1 = Printer Status Busy=0 ACK=0 PE=1 SL=1 ERR=0 Out of Paper Printer Online Printer is ready for Next Character Printer is Busy

25 Printer Control Register
Printer Control Register = Base + 2 7 6 5 4 3 2 1 IRQ SI IN ALF ST IRQ ENABLE initialize Auto Line Field Execute Interrupt When ACK=0; STROB SELECT InLine Turn Computer on line

26 Direct Parallel Port Programming
file *fptr; unsigned far *base=(unsigned int far *)0x void main ( ) { fptr=fopen(“c:\\abc.txt”,”rb”); while( ! feof (fptr) ) { if(( inport (*base + 1 ) & 0x80) == 0x80) outport(*base, getc(fptr)); outport((*base)+2, inport((*base+2) & 0xFE); outport((*base)+2, inport((*base+2) | 0x01); } }}


Download ppt "Lecture # 11."

Similar presentations


Ads by Google