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)
- global 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 message to be sent in real time."
- print "Your name will be appended to the transmission."
- print "(CR) starts a new line."
- cursor on
- tname%=1
- while 1
- if checkrx%: >= 0
- tname%=1
- style 4
- print rbuf$;
- style 01
- endif
- k%=key
- if k%<>0
- if k%=$200+%x
- break
- endif
- tbuf$=tbuf$+chr$(k%)
- irsend:
- if k%=13
- print ""
- else
- 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$;
- if k%=13
- lprint ""
- endif
- 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
-