/HELP.SB, PAGE 1 (9/20/71 - C.M.MOORE, RICE U., HOUSTON) / /PDP-12 PS/8 FORTRAN/SABR HELP DISPLAY ROUTINE / /FORTRAN INTEGER FUNCTION "IHELP(IFLAG)" / /DISPLAYS TEXTUAL INFORMATION ON SCOPE. /THE TEXT IS SEGMENTED INTO FRAMES. /THE FRAMES ARE DISPLAYED ONE AT A TIME. /THE TEXT IS ADVANCED 1 FRAME EACH TIME M IS TYPED. / /IHELP IS CALLED AS AN INTEGER FUNCTION IN FORTRAN. /IT RETURNS THE INDEX VALUE OF THE CHARACTER TYPED /TO TERMINATE THE HELP DISPLAY. /THE INDEX STARTS AT 1, AND CAN BE USED IN A /COMPUTED GO TO STATEMENT. /CHARACTER #1 IS ALWAYS CARRIAGE-RETURN, WHICH IS /IGNORED UNLESS ARGUMENT IFLAG IS NONZERO. /THE REMAINING CHARACTERS ARE USER DEFINED. /CHARACTERS NOT DEFINED BY THE USER AS VALID /TERMINATION INPUTS ARE IGNORED BY IHELP. / /USES ROUTINES KEYBD AND DISP9. /THESE ARE CONTAINED IN LIBRARY FILE LIB12.RL. / /*****WARNING***** /YOU MAY FIND THAT ONE OF THE TEXT LINES DISPLAYS /IN THE WRONG POSITION, SUCH AS ON TOP OF ANOTHER /LINE. THIS CAN OCCUR IF ITS Y-COORD OCCUPIES THE /LINC-MODE INSTRUCTION FIELD LOC 1 USED BY DISP9. /THIS CAN BE AVOIDED BY ALTERING THE RELATIVE CORE /LOCATIONS OF IHELP AND DISP9. (E.G., LOAD IHELP /FIRST INTO FIELD 1, CALL LIB12 TO LOAD DISP9 INTO /FIELD 0, THEN LOAD YOUR REMAINING BINARY FILES.) /IT CAN ALSO BE AVOIDED BY INSERTING 2 DUMMY LOCS /IN FRONT OF THE X-Y COORDS OF THE OUT-OF-PLACE LINE. / /HELP.SB, PAGE 2 / LAP CPAGE 200 /START ON NEW PAGE IF INSERTED WITH OTHER SABR CODE. / OPDEF TADI 1400 /MUST REFERENCE LOC ON CURRENT PAGE / CNT1, 0 CNT2, 0 CNT3, 0 PNT1, 0 PNT2, 0 PNT3, 0 PNT4, 0 IFLAG, 0 / /FUNCTION IHELP(IFLAG) ENTRY IHELP IHELP, BLOCK 2 CLA /FETCH ARGUMENT (IFLAG) TAD IHELP DCA CDFHLP CDFHLP, HLT /CHANGE TO DF OF CALLING PROG TADI IHELP# DCA CDFARG INC IHELP# TADI IHELP# DCA PNT1 INC IHELP# CDFARG, HLT /CHANGE TO DF OF ARG TADI PNT1 DCA IFLAG /CARRIAGE-RETURN FLAG / /HELP.SB, PAGE 3 / HELPER, TAD I HMAXP /CHANGE TO CURRENT DF. DCA CNT1 /# OF FRAMES TAD H1P DCA PNT1 SETUP, TAD PNT1 /SET UP FOR NEXT FRAME IAC DCA PNT2 TADI PNT2 CIA TADI PNT1 DCA CNT2 /# OF LINES IN FRAME TADI PNT1 DCA PNT2 FRAME, TAD PNT2 /RESET FRAME POINTERS DCA PNT3 TAD CNT2 DCA CNT3 FLOOP, TADI PNT3 /LOOP TO DISPLAY LINES IN FRAME DCA ARG1# TAD ARG1# IAC DCA ARG2# TAD ARG2# IAC DCA ARG3# CALL 3,DISP9 /DISPLAY NEXT LINE ARG1, ARG HELP1 /X-COORD (<0 FOR FULL-SIZED CHARS) ARG2, ARG HELP1 /Y-COORD ARG3, ARG HELP1 /START OF TEXT INC PNT3 ISZ CNT3 JMP FLOOP CALL 1,KEYBD /CHECK IF ANYTHING TYPED ARG HELP1 SNA JMP FRAME /NOTHING TYPED YET DCA CDFARG TAD CMAX DCA CNT3 /NUMBER OF TERMINATING CHARACTERS TAD C1P DCA PNT3 DCA PNT4 /CHARACTER INDEX NUMBER CHLUP, TADI PNT3 /GET CHAR TAD CDFARG SNA CLA JMP CFOUND /CHAR FOUND INC PNT3 INC PNT4 ISZ CNT3 JMP CHLUP JMP FRAME /IGNORE ANY OTHER CHARACTERS / /HELP.SB, PAGE 4 / /CHARACTER FOUND. CHECK FOR M OR CARRIAGE-RETURN CFOUND, CLA CMA /AC=-1 TAD PNT4 SNA JMP CR /CARRIAGE-RETURN TYPED SPA JMP MORE /M TYPED NDEX, IAC RETRN IHELP /RETURN WITH CHAR INDEX IN AC. / /M TYPED. ADVANCE HELP DISPLAY FRAME. MORE, CLA INC PNT1 ISZ CNT1 JMP SETUP JMP HELPER /CARRIAGE-RETURN TYPED. CHECK C-R FLAG. CR, TAD IFLAG SNA CLA JMP FRAME /IGNORE C-R. JMP NDEX /RETURN WITH 1 IN AC. / / /TABLE OF HELP DISPLAY TERMINATION CHARACTERS. /EACH ENTRY IS THE NEGATIVE OF THE OCTAL CHARACTER VALUE. /THE FIRST CHARACTER MUST BE M. /THE SECOND CHARACTER MUST BE CARRIAGE-RETURN. /ANY REMAINING CHARACTERS ARE USER-DEFINED. / CMAX, -2 /NEGATIVE OF NUMBER OF CHARACTERS C1P, C1 /POINTS TO TABLE /CHARACTER TABLE C1, -315 /M (INDEX=0 : CAUSES FRAME ADVANCE) -215 /C-R (INDEX=1 : IGNORED IF IFLAG=0) /END OF CHARACTER TABLE / / /HELP FRAME POINTER TABLE. /EACH ENTRY POINTS TO THE ADDRESS OF THE FIRST TEXT LINE IN THE FRAME. /TABLE MUST TERMINATE WITH "HMAXP, HMAX". H1P, H1 /POINTS TO TABLE /START OF TABLE H1, F1 F2 HMAXP, HMAX /END OF TABLE / /HELP.SB, PAGE 5 / /TEXT POINTER TABLE. /CONTAINS TEXT ADDRESSES FOR LINES IN EACH HELP FRAME. /FRAME 1 F1, HELP1 HELP2 HELP3 HELP4 HELP5 HELP6 HELP7 /FRAME 2 F2, HELP8 HMAX, -2 /NEGATIVE OF NUMBER OF HELP FRAMES. MUST TERMINATE TABLE /END OF TEXT POINTER TABLE. / /HELP.SB, PAGE 6 / /HELP TEXT DISPLAY STRINGS /EACH STRING MUST START WITH THE X-Y COORDINATES /OF ITS LOWER LEFT-HAND CORNER, AND MUST END WITH /THE @ CHARACTER. THE @ CHARACTER MUST NOT APPEAR /WITHIN THE STRING. /IF THE X-COORD IS <0, THE ABSOLUTE VALUE IS USED, /AND THE LINE IS DISPLAYED WITH FULL-SIZED CHARS. /IF THE X-COORD IS =>0, HALF-SIZED CHARS ARE USED. /A CPAGE PSUEDO-OP SHOULD BE USED WITH EACH STRING /TO ENSURE THAT A PAGE BOUNDARY DOES NOT SEPARATE /THE X-Y COORDS FROM THEIR STRING. / CPAGE 10 HELP1, -235;300 /X-Y COORDS. TEXT /P D P - 1 2@/ CPAGE 6 HELP2, -301;200 TEXT 'P S / 8@' CPAGE 10 HELP3, -257;100 TEXT /I N D E X@/ CPAGE 14 HELP4, -125;0 TEXT /PROGRAM EXPLANATION@/ CPAGE 33 HELP5, 30;-100 TEXT /TYPE H FOR HELP AT ANY TIME DURING INDEX DISPLAY@/ CPAGE 27 HELP6, 30;-120 TEXT /TYPE M FOR MORE HELP DURING EXPLANATION@/ CPAGE 10 HELP7, 310;-240 TEXT /TYPE M NOW!@/ CPAGE 17 HELP8, 0;300 TEXT /EXPLANATION STARTS HERE!@/ END