To use this file copy and paste this:
// #URL-lib "http://pin1.org/forthlib/flb/IASI/IASI-L-a.flb" into BV Terminal 3
or here to download.
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
// IASI interface
// This is the IASI kibrary for use with all IASI devices, these
// are normally BV41xx numbered devices.
// NOTE when using these words the IASI device needs
// by default a CR (13 emit1) sending to terminate
// a command, this tells the IASI to go off and process
// the command.
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
// HISTORY:
// Mar 2008 * replaced [char] : hold with 58 hold, limitation of BVT
// CONSTANTS:
// the following constants are for setting the baud rate of UART1
// it will default to 9600, a higher baud rate will not necessarily
// make the device go faster
&E0010000 constant U1DLL
&E0010004 constant U1DLM
&E001000C constant U1LCR
Full Contents of File
&E0010000  constant  U1DLL
&E0010004  constant  U1DLM
&E001000C  constant  U1LCR
: baud1 
        rate  16  *  10 
        PCLK  swap 
        5  +  10 
        256  u
        &83  U1LCR  ! 
        U1DLM  !         
        U1DLL  !         
        &3  U1LCR  !   
;       
: baud1@
        &83  U1LCR  ! 
        U1DLM  @         
        256  *
        U1DLL  @         
        +
        &3  U1LCR  !   
       
        16  *  pclk  swap  u
;       
: cr113  emit1  ;             
: i-in
        0 
        50
        for
                key1?
                if
                        drop
                        key1
                        leave
                then
        1  ms       
        next                                 
;
: i-buff.
        begin
                i-in 
                dup 
                if 
                        emit 
                        -1           
                then
        0=  until
;
: i-cbuff
        begin
                key1?  if  key1  drop  then
                key1?
        0=  until
;
: stype1
        addr  255  +         
        addr                     
        do
                i  c@  0= 
                if 
                        leave
                else
                        i  c@  emit1         
                then
        next       
; 
: iu.<#  #s  #>  stype1  ;               
: ,'
int:  addr1  len
        39  word  dup  =>  addr1       
        length  =>  len                     
        addr1  here  len  move       
        len  allot                           
        0  c,                                     
        align
        1  >in  +! 
;                             
                       
: I.'
[']  lit  , 
here         
16  +  ,         
[']  stype1  ,   
[']  branch  , 
here               
0  ,                 
,'                   
here  swap  !     
;  immediate
: i-autobaud
        4  for 
                cr1  100  ms 
        next
        100  ms
        i-cbuff         
;
: i-det
        i-autobaud 
        cr1                         
        i-in                       
        i-cbuff                 
;
: i-det.     
        i-det
        dup  214  =  if  ."  Inverted  mode"  cr  then
        dup  76  =  if  ."  Non-inverted  mode"  cr  then
        dup  0=  if  ."  No  response"  cr  then
        drop
;       
: i-init
        i-cbuff             
        5  for
            i    .             
            i-det                 
            dup  214  =
            if
                ."  Device  initialised,  inverted  mode"
                leave
            then
            76  =   
            if
                ."  Device  initialised,  non-inverted  mode"
                leave
            then                   
        next
;                               
: i-zf
        ."  Wait"
        i-cbuff                 
        i-autobaud
        i.'  :00zf'  cr1               
        46  emit                 
        500  ms
        i-autobaud
        i.'  zf'  cr1                   
        46  emit                 
        500  ms       
        i-autobaud
;       
: i-config
        i.'  ZC'
        &30  +    emit1                 
        i.'    -r'
        cr1
        500  ms
        i-autobaud 
        cr  ."  Device  reports  "  i-det.     
;       
: i-address           
        <#  #  #  58  hold  #>  stype1   
;
: i-multi
        ."  Wait."
        i.'  ZA'         
        <#  #  #  #>
        stype1           
        cr1    100  ms             
        i.'  ZB0'  cr1    100  ms   
        i.'  ZD0'  cr1    100  ms   
        i.'  ZC5  -w  nnnnnnn'  cr1 
        46  emit
        500  ms           
        5  for             
                i-det
                0  >  if  leave  then
        next       
        100  ms
        i.'  ZC5  -r'  cr1 
;       
: (i-ipb)     
        i-cbuff         
        13  word         
        stype1 
        cr1                 
;
: i-send
       
        i-buff.         
        cr
;
: i-get2
                 
        i-in  256  *
        i-in  +
;