home *** CD-ROM | disk | FTP | other *** search
- rem irchat.opl - Martin Roberts 1997
- rem Modified/improved by Tim Wilde
- rem gwi1@cableol.co.uk
- PROC irchat:
- global rbuf$(255),tbuf$(255),dbuf$(255)
- global stat%,len%,tname%,name$(255)
- local k%
- dinit "What do you want to be sent as your name?"
- dedit name$,"Name:",20
- dialog
- stat%=-48 rem to start first I/O req
- lopen "sir:i" rem open IrDA port
- print "IRCHAT - Psion-X to exit."
- print "Type the string to send, then press (Enter)"
- cursor on
- tname%=1
- while 1
- if checkrx%: >= 0
- style 4
- print rbuf$
- tname%=1
- style 01
- endif
- k%=key
- if k%<>0
- if k%=$200+%x
- break
- elseif (k%=13) or (len(tbuf$)>254)
- irsend:
- print ""
- else
- tbuf$=tbuf$+chr$(k%)
- print chr$(k%);
- endif
- endif
- endwh
- lclose
- ENDP
-
- PROC irsend:
- local lenname%
- lprint chr$($c0); rem BOF
- if tname%=1
- lprint name$
- lenname%=len(name$)
- while lenname%
- lprint "-";
- lenname%=lenname%-1
- endwh
- tname%=0
- endif
- lprint tbuf$;
- lprint chr$($c1); rem EOF
- tbuf$=""
- ENDP
-
- PROC checkrx%:
- local lstat%,prbuf%
- lstat% = stat%
- if lstat% <> -46 rem I/O pending
- prbuf%=addr(rbuf$)
- pokeb prbuf%,len%
- dbuf$=rbuf$
- ioa(-1,1,stat%,#uadd(prbuf%,1),len%)
- endif
- return lstat%
- ENDP
-