[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: MacTCP.lisp

At  4:17 PM 94.03.07 -0600, lynch@ils.nwu.edu wrote:
>(defun  %tcp-control (pb code &optional ignore-error-p)
>  (setf (rref pb tcpioPB.csCode) code
>        (rref pb tcpioPB.ioCompletion) (%null-ptr))
>  (let* ((err nil))
>    (progn
>        (loop
>          (when (eql (setq err (#_control :async pb)) 0)
>            (let* ((*interrupt-level* 0))
>              (while (> (setq err (rref pb tcpioPB.ioResult)) 0))))
>          (unless (eql err -23016) (return)))
>        (unless (or ignore-error-p (eql err 0))
>          (%tcp-err-disp err))
>        err)))
>Ok, I've tracked it down to the line:
>(while (> (setq err (rref pb tcpioPB.ioResult)) 0))
>This line never returns a negative number.  When nothing is happening, it
>returns 0.  When the string is sent, it returns 1.
>Any ideas?

Here's what's supposed to happen...

(#_control :async pb) starts the command, sets (rref pb tcpioPB.ioResult)
to commandInProgress, and returns. Note: commandInProgress > 0. When the
command completes, either timeout, error, or normal completion, (rref pb
tcpioPB.ioResult) will be noErr (0) or the error code (< 0). %tcp-control
waits for the #_control call to complete in LISP so LISP can process other
events, like abort, in the loop I guess.

Have you tried Network Software Installer v1.4.2 ?  It is available from
ftp.apple.com and has new Ethernet drivers (and AppleTalk drivers) that
work a lot better. We needed to update ourselves to make MacTCP.Lisp work
with MacTCP 2.04 on M68040 based Macs with cache enabled.