home *** CD-ROM | disk | FTP | other *** search
- ;;;;;;;;;;;;;;;; IBMGETLN ;;;;;;;;;;;;;;;;;;;;;;;;
- E'F A:S(NWLS)
- E'O IBMGETLN.(BUFFER,CH)
-
- ; read a packet with a SOH in it and wait for the prompt
- ; before returning it
-
- ; BUFFER is an integer array that will hold the incoming packet
- ; CH tells this routine which channel to read the packet from
-
- /INCLUDE BYU.PROG.KERMIT.SYM.EQU.KERCOM
- /INCLUDE BYU.PROG.KERMIT.SYM.EQU.KERDEF
-
- I'R BUFFER(132),CH,STATUS,GASOH,COUNT,T,IBYTE
- I'R X
-
- STATUS=YES
- GASOH=NO ;we have not gotten a packet yet
- COUNT=1
- W'E (STATUS.EQ.YES)
- W'E (GASOH.EQ.NO) ;keep reading one byte at a tim
- IBYTE=0 ;the I/O port until you see the
- X=TGETCH.(IBYTE,CH) ;character , EOF is not expected
- W'R (IBYTE.EQ.SOH)
- GASOH=YES ;I got the SOH
- BUFFER(COUNT)=IBYTE ;store the SOH into buffer
- COUNT=COUNT+1 ;increment the buffer pointer
- E'L
- E'W
- IBYTE=0
- X=TGETCH.(IBYTE,CH) ;read a byte from the I/O port
- W'R (IBYTE.EQ.PROMPT) ; we got the prompt
- STATUS=NO
- O'E
- BUFFER(COUNT)=IBYTE ;it is not a prompt, but another
- COUNT=COUNT+1 ;data of the incoming packet
- E'L ;store it and increment pointer
- E'W
- BUFFER(COUNT)=EOS ;add an EOS into end of buffer
- LCLSTATE=OK
- F'N LCLSTATE
- E'N
-