. . INTERFACE BETWEEN FANG AND THE REAL WORLD . . . (C) Copyright 1972-1978 John Walker . . This software is in the public domain . AXR$ DEFUNCT$ FANG PURE CODE . . TELL STATEMENT HANDLER . . THE TELL STATEMENT IS AN IMMEDIATE COMMAND WHICH TYPES . THE TEXT SUPPLIED AS ITS STRING PARAMETER ON THE CONSOLE. . TELLP* REMOVE PARQUE GET THE STRING PARAMETER LA,U A0,PBSS,A1 LOAD START ADDRESS OF STRING LXI A0,PBVAL,A1 LOAD LENGTH IN CHARACTERS SA A0,FL$+1 PUT IN FDIT LINE FOR PACKET SZ FL$ CLEAR FIRST WORD OF PACKET LA A4,CWOPTION LOAD OPTIONS LMJ X11,CONNUM GET CONSOLE NUMBER SA,S2 A3,FL$ PUT CONSOLE CLASS NUMBER IN PACKET SZ FL$+2 CLEAR INPUT SPECIFICATION COM$P FL$ TYPE OUT THE MESSAGE BRELP A1 RELEASE THE PARAMETER BUFFER J ICOUT END OF THIS COMMAND . . ASK OPERATOR INTERFACE (ASYNCHRONOUS) . . THIS COMMAND TYPES THE TEXT ON THE CONSOLE AS A TYPE AND READ . MESSAGE, AND WAITS FOR THE OPERATOR'S REPLY. THE REPLY IS TYPED . UPON RECIEPT. SYNCE THIS IS AN ASYNCHRONOUS COMMAND, THE USER MAY . GO ON WITH ANY OTHER FANG COMMANDS WHILE WAITING FOR THE MESSAGE . TO BE ANSWERED. THE USER MAY NOT, HOWEVER, EXIT FANG UNTIL THE . OPERATOR REPLIES. THE USER MAY HAVE MULTIPLE ASK STATEMENTS . OUTSTANDING AT ONCE. . ASKP* BGET 12 ALLOCATE A CONSOLE BUFFER SZ 0,A0 CLEAR FIRST WORD OF COM$ PACKET LA A4,CDOPTS,X8 LOAD COMMAND OPTIONS LMJ X11,CONNUM GET CONSOLE NUMBER SA,S2 A3,,A0 PUT CONSOLE CLASS IN PACKET LA,U A1,3,A0 LOAD INPUT BUFFER ADDRESS LXI,U A1,50 LOAD INPUT COUNT ALLOWED SA A1,2,A0 PUT INPUT ACCESS WORD IN PACKET LA A1,CDBPC,X8 LOAD FIRST PARAMETER ADDRESS LA,U A2,PBSS,A1 LOAD STRING START ADDRESS LXI A2,PBVAL,A1 LOAD LENGTH OF TYPEOUT SA A2,1,A0 PUT OUTPUT SPECIFICATION IN PACKET COM$ . TYPE AND READ LX,U X10,,A0 SAVE THE BUFFER ADDRESS R$DIT . ENTER EDITING MODE E$MSG CONREP EDIT CONSOLE REPLY HEADER LA,H2 A1,,X10 LOAD INPUT COUNT LA,U A0,3,X10 LOAD BUFFER ADDRESS E$COPY . COPY THE MESSAGE TO THE BUFFER E$MSG STN EDIT STATEMENT NUMBER PREFIX LX X5,CDIMG,X8 LOAD IMAGE ADDRESS LMJ X6,ESNV EDIT STATEMENT NUMBER E$SKIP -1 BACK UP A CHARACTER U$LOOK . LOAD THE CHARACTER TNE,U A0,'.' COMPLICATED NUMBER ? J NOBLX NO. OVERLAY DOT E$SKIP 1 SKIP OVER THE LAST CHARACTER NOBLX E$CHAR ')' EDIT CLOSING PARENTHESIS E$CHAR '.' EDIT PERIOD R$PRTX 1 PRINT THE MESSAGE AND TERMINATE BRELP X10 RELEASE THE BUFFER COMPLETE . COMPLETE THIS COMMAND . . . GET CONSOLE CLASS FROM @MSG OPTIONS . CONNUM LA,U A3 CLEAR CLASS TO SYSTEM CONSOLE TEP A4,(OPTION('C')) COMMUNICATIONS CONSOLE ? LA,U A3,2 YES. LOAD COMMUNICATIONS CODE TEP,U A4,OPTION('I') I/O CONSOLE ? LA,U A3,1 YES. LOAD I/O CONSOLE CODE TEP A4,(OPTION('H')) HARDWARE CONSOLE ? LA,U A3,3 YES. LOAD CODE OF 3 J 0,X11 RETURN . . PRINT TIME AND DATE . TIMEP* F$DT1 fll$,fl$ SET UP EDITOR, CLEAR LINE F$FD4 ('TODAY IS ') EDIT COME-ON TDATE$ . GET THE TIME AND DATE SA A0,R3 SAVE FOR CONSISTENCY f$dayw R3 EDIT DAY OF THE WEEK F$CHAR ',' EDIT A COMMA F$SKIP 1 SKIP A SPACE F$DAY3 R3 EDIT THE DATE F$FD3 (' AT ') EDIT 'AT' F$TIME1 R3 GIVE HIM THE TIME OF DAY F$PRT 1 PRINT THE LINE J ICOUT END OF THE COMMAND . . ABORT EXECUTION VIA EABT$ . . USED TO GET A LISTING OF ACTIVITIES AND REENTRY ADDRESSES . WHEN THE PROCESSOR HANGS, AND IS BEING DEBUGGED FROM DEMAND. . ON DEBUG EABTP* JNDEM DOZAP DON'T ASK QUESTIONS IF BATCH F$DT1 fll$,fl$ CLEAR THE LINE LA A0,(0124,FL$+2) LOAD PRINT PARAMETER LA A1,(DOZAP,FL$) LOAD READ PARAMETER DS A0,FL$ BUILD TYPE-AND-READ PACKET F$COL 12 SET UP TO SKIP PACKET F$MSG REALLY ASK IF HE MEANS IT ON EOL>-1 F$CHAR EOL TERMINATE THE LINE OFF EOL>-1 TREAD FL$ ASK IF HE MEANS IT LA A0,FL$ GET REPLY TNE A0,('YES ') IS IT 'YES' ? DOZAP EABT$ . YES. KILL THE PROCESSOR F$DT . CLEAR THE LINE F$FD1 ('WHEW!') EDIT SIGH OF RELIEF F$PRT 1 PRINT THE MESSAGE J ICOUT END OF THIS COMMAND OFF DEBUG . . . PURE DATA CONREP 'CONSOLE REPLY: !' STN ' (FROM STATEMENT !' ON DEBUG REALLY 'DO YOU REALLY WANT TO ABORT VIA EABT? &' OFF DEBUG END