10 SUB MADRAST(LONG P,PC,PSL,R0,R1) ! unsolicited MB read & 20 ! Ruth E. Reebel & ! Copyright (c) 1982 by & ! Amherst Associates Incorporated & ! 210 Old Farm Road & ! Amherst, Massachusetts 01002 & 1000 EXTERNAL LONG FUNCTION SYS$QIO,SYS$QIOW,SYS$WAKE,SYS$ASSIGN & \ EXTERNAL LONG IO$_WRITEVBLK,IO$M_NOW,IO$_READVBLK,IO$M_TRMNOECHO & \ DECLARE LONG FUNWRT,FUNRD,FUNRD1,FUNRD2,SYS_STATUS & \ FUNWRT=LOC(IO$_WRITEVBLK) OR LOC(IO$M_NOW) & \ FUNRD1=LOC(IO$_READVBLK) & \ FUNRD2=LOC(IO$_READVBLK) OR LOC(IO$M_TRMNOECHO) & 1010 COMMON (A1) MBX.CH%,LOG.CH%,TTY.CH%,CTL.FLG%,BAS.FOR% & \ COMMON (A1) STRING PRCNAMJPI=15%,INFIL=2% & 1020 MAP(IOSB.2) LONG IOSB_L(1),STRING REC_BUFFER=512% & \ MAP(IOSB.2) WORD IOSB_W(3) & \ MAP(BASFOR) STRING OUTBUF=512% & \ PUT.CH%=3% & 1030 IF BAS.FOR%=0% THEN PRINT "? "; & ! ABOVE ONLY HAPPENS IF CLIENT DETACHED RIGHT AT QUESTION & ! (PUT.CH% IS NOT YET OPENED) & 1040 LSET OUTBUF="? " & \ PUT #PUT.CH%,COUNT 2% IF BAS.FOR%=1% AND INFIL="TT" AND CTL.FLG%=0% & \ FUNRD=FUNRD1 & \ FUNRD=FUNRD2 IF CTL.FLG%=1% & \ CTL.FLG%=0% !reset flag & \ IF INFIL<>"TT" THEN LINPUT P$ & \ LSET REC_BUFFER=P$ & \ IOSB_W(1%)=LEN(P$) & ELSE SYS_STATUS=SYS$QIOW(,TTY.CH% BY VALUE, & FUNRD BY VALUE, & IOSB_L() BY REF,,, & REC_BUFFER BY REF,512% BY VALUE,,,,) & \ CALL SYS$EXIT(SYS_STATUS BY VALUE) IF (SYS_STATUS AND 1%)=0% & ! FUNRD1 is normal tty input & ! FUNRD2 handles several prompts on the same line & ! eg: name date desc & ! ? A ? 4 ? ITEM FOR TEST & 1050 IF IOSB_W(1%)=0% THEN & LSET REC_BUFFER=CHR$(0%) IF BAS.FOR%>=0% & \ LSET REC_BUFFER=CHR$(32%) IF BAS.FOR%<0% & \ IOSB_W(1%)=1% & 1060 SYS_STATUS=SYS$QIO(,MBX.CH% BY VALUE,FUNWRT BY VALUE,,,, & REC_BUFFER BY REF,IOSB_W(1%) BY VALUE,,,,) & \ CALL SYS$EXIT(SYS_STATUS BY VALUE) IF (SYS_STATUS AND 1%)=0% & ! input from tty sent to MB in response to previous & ! unsolicited read request & 2000 CALL MASETDR & ! reset mailbox read attention AST & 32767 SUBEND