home *** CD-ROM | disk | FTP | other *** search
- (********************************************************************)
- (* THIS PROCEDURE WILL SETUP THE SERIAL PORT SELECTED *)
- (* INPUT : Serial_Channel, Baud_Rate, Stop_Bits, Data_Bits *)
- (* : Parity : INTEGER *)
- (* INPUT/OUTPUT : NONE *)
- (* OUTPUT : SETUP SERIAL PORT IF EXISTS *)
- (* USES : SETS Sync_Time *)
- (* CALLS : INTR *)
- (* ERRORS : NONE CHECKED *)
- (* GLOBAL VARS : Sync_Time, Wait_Increment *)
- (* SUBJECT : SERIAL COMM , SETUP COMMUNICATIONS PORT *)
- (* DOMAIN : ARNO A. KARNER LEVEL : 001 *)
- (********************************************************************)
-
- PROCEDURE Set_Serial ( Serial_Channel,
- Baud_Rate,
- Stopbits,
- Databits,
- Parity : INTEGER ) ;
-
- VAR
- parameter : INTEGER ;
- parn : byte;
- Regs : Reg ;
-
- BEGIN (* PROC *)
- Case Baud_Rate OF
- 300 : BEGIN
- Baud_Rate:=2;
- Sync_Time := Wait_Increment div 4;
- END ;
- 600 : BEGIN
- Baud_Rate:=3;
- Sync_Time := Wait_Increment div 4;
- END;
- 1200 : BEGIN
- Baud_Rate:=4;
- Sync_Time := Wait_Increment div 11;
- END ;
- 2400 : BEGIN
- Baud_Rate := 5 ;
- Sync_Time := Wait_Increment div 22 ;
- END ;
- 4800 : BEGIN
- Baud_Rate := 6 ;
- Sync_Time := Wait_Increment div 44 ;
- END ;
- 9600 : BEGIN
- Baud_Rate := 7 ;
- Sync_Time := Wait_Increment div 66 ;
- END ;
- else
- Baud_Rate := 4 ; { Default to 1200 baud }
- Sync_Time := Wait_Increment div 11;
- END ;
- if stopbits = 2 then
- stopbits := 1
- else stopbits:=0; { Default to 1 stop bit }
- parn := parity;
- if databits=7 then
- databits:=2
- else BEGIN
- databits:=3; { Default to 8 data bits }
- parn:=0;
- END ;
- parameter:=(Baud_Rate shl 5)+(stopbits shl 2)+databits;
- case parn of
- 1 : parameter:=parameter+24;
- 2 : parameter:=parameter+8;
- END ;
- Regs.DX := Serial_Channel ; { 0 .. COMM N -1 }
- Regs.AX := parameter;
- Regs.FLAGS := 0;
- INTR ( 20, Regs);
- END ;