**********************************************************************
* Name: USEND
* Stack: ( ob --> )
* ( {names} --> )
* Desc: Fast IR send
* Author: Dan Kirkland
**********************************************************************
DEFINE flag? ONE TestUserFlag
ASSEMBLE
CON(1) 8
RPL
xNAME USEND
::
CK1
ERRSET
::
ZEROZERO FalseFalse OpenUart?Clr
CODE
GOSBVL =SAVPTR
LC(3) #504
D0=(5) =IRC
DAT0=C 1 [IRI EIRU EIRI IRE] = [0 1 0 0]
D0=(2) =BAU
DAT0=C XS [UCK BD2 BD1 BD0] = 7680 bauds
GOSBVL =DisableIntr
GOSBVL =OffNoBlush
GOSBVL =AllowIntr
GOVLNG =ClockDisab
ENDCODE
FALSETRUE ( * Wait for connection * )
BINT_112d ZERO_DO (DO)
"$" KPUTSERIAL
VERYSLOW
UARTBUFLEN DROP
#1= IT DropExitLoop
LOOP
case :: # C02 ERROROUT ; ( * Got no connection * )
DUPNULL{}? flag? OR
IT ONE{}N
DTYPELIST? ?SKIP ONE{}N
DUPLENCOMP
ZERO TOTEMPSWAP
ObjSegment$ DROPSWAPDROP KPUTSERIAL
toLEN_DO (DO)
DUPINDEX@ NTHCOMPDROP
::
NotIdorLAM? flag? ORcase ONE{}N
DUP@ NOTcase ONE{}N
SWAP DUPTYPEIDNT? ?SKIP LAM>ID
ID>$ TWO{}N
;
DUP OCRC SWAP TWO #/ #+
ZERO TOTEMPSWAP
ObjSegment$ DROPSWAPDROP
ZERO TOTEMPOB
ROT ObjSegment$ DROPSWAPDROP
&$ KPUTSERIAL
ZERO TOTEMPOB
BEGIN
OVER ObjSegment$
SWAPDUP NULL$? IT 3skip
ONE
::
GETSERIAL ?SEMI
Attn?Abort ERROROUT
;
DROP
KPUTSERIAL
UNTIL
2DROP
LOOP
DROP
;
ERRTRAP
:: 'REVAL ERRJMP ;
:: CLOSEUART
CODE
GOSBVL =SAVPTR
GOSBVL =DispOn
GOVLNG =GETPTRLOOP
ENDCODE
;
;
**********************************************************************