[Back to COMM SWAG index] [Back to Main SWAG index] [Original]

    {
    > This is part of a procedure I use in my door to initialize the fossil
    > driver.  However, I need the CORRECT numbers for 38400 (1 only works on
    > some fossil drivers), 57600, and if anyone has it, 115200.  Can anyone
    > help?

    Here's what I use..
    }

    { To initialize the modem.. Not to be confused with PortOn }
    Procedure InitPort(Cp : word; Baud : Word; Charlength : byte; Parity : Char;
                       StopBits: Byte);
    var temp : byte;
    Begin
      comport := cp;
      port := pred(cp);
      temp := 0;  { Default of 19200 }

      Case Baud of           { 128, 64, 32... }
        19200 : Temp := 0;   { 000____ }
        38400 : Temp := 32;  { 001____ }
        300   : Temp := 64;  { 010____ }
        600   : temp := 96;  { 011____ }
        1200  : Temp := 128; { 100_____ }
        2400  : Temp := 160; { 101_____ }
        4800  : Temp := 192; { 110_____ }
        9600  : Temp := 224; { 111_____ }
      End;
      baudrate := baud;

      Case UpCase(Parity) of { 16, 8... }
    {   'N' :;               { ___00___ }
        'O' : Inc(temp, 8);  { ___01___ }
        'E' : Inc(temp, 24); { ___11___ }
      End;
                                         { 4... }
      If StopBits = 2 then Inc(temp, 4); { _____1__ }
      { If StopBits = 1 then ;           { _____0__ }

      Case CharLength of  { 2, 1. }
        8 : inc(temp, 3); { ______11 }
        7 : inc(temp, 2); { ______10 }
      End;

      asm
        mov ah, $00
        mov al, temp
        mov dx, port
        int $14
      end;
    End;

    {
    I used the revision FOSSIL revision 5.0 specs to do that with.. And it works
    btw FOSSIL v5.0 specs don't mention 38400+ init's.
    }

[Back to COMM SWAG index] [Back to Main SWAG index] [Original]