.FUNCT V-HINTS-NO EQUAL? PRSO,ROOMS /?CCL3 PRINTI "I don't understand what you mean." CRLF RETURN 2 ?CCL3: SET 'HINTS-OFF,TRUE-VALUE PRINTI "[Hints have been disallowed for this session.]" CRLF RETURN 2 .FUNCT V-HINTS,CHR,MAXC,C,Q,WHO ?FCN: ZERO? HINTS-OFF /?CCL3 ICALL PERFORM,V?HINTS-NO,ROOMS RETURN 2 ?CCL3: ZERO? HINT-WARNING \?CND1 SET 'HINT-WARNING,TRUE-VALUE PRINTI "[Warning: It is recognized that the temptation for help may at times be so exceedingly strong that you might fetch hints prematurely. Therefore, you may at any time during the story type HINTS OFF, and this will disallow the seeking out of help for the present session of the story. If you still want a hint now, indicate HINT.]" CRLF RETURN 2 ?CND1: GET HINTS,0 >MAXC ICALL1 INIT-HINT-SCREEN CURSET 5,1 ICALL1 PUT-UP-CHAPTERS SUB CHAPT-NUM,1 >CUR-POS ICALL1 NEW-CURSOR ?PRG11: INPUT 1 >CHR EQUAL? CHR,81,113 \?CCL15 SET 'Q,TRUE-VALUE JUMP ?REP12 ?CCL15: EQUAL? CHR,78,110 \?CCL17 ICALL1 ERASE-CURSOR EQUAL? CHAPT-NUM,MAXC \?CCL20 SET 'CUR-POS,0 SET 'CHAPT-NUM,1 SET 'QUEST-NUM,1 JUMP ?CND18 ?CCL20: INC 'CUR-POS INC 'CHAPT-NUM SET 'QUEST-NUM,1 ?CND18: ICALL1 NEW-CURSOR JUMP ?PRG11 ?CCL17: EQUAL? CHR,80,112 \?CCL22 ICALL1 ERASE-CURSOR EQUAL? CHAPT-NUM,1 \?CCL25 SET 'CHAPT-NUM,MAXC SUB CHAPT-NUM,1 >CUR-POS SET 'QUEST-NUM,1 JUMP ?CND23 ?CCL25: DEC 'CUR-POS DEC 'CHAPT-NUM SET 'QUEST-NUM,1 ?CND23: ICALL1 NEW-CURSOR JUMP ?PRG11 ?CCL22: EQUAL? CHR,13,10 \?PRG11 ICALL1 PICK-QUESTION ?REP12: ZERO? Q /?FCN CLEAR -1 ICALL1 INIT-STATUS-LINE CRLF PRINTI "Back to the story..." CRLF RETURN 2 .FUNCT PICK-QUESTION,CHR,MAXQ,Q ?FCN: ICALL2 INIT-HINT-SCREEN,FALSE-VALUE ICALL LEFT-LINE,3,STR?237 ICALL RIGHT-LINE,3,STR?238,13 GET HINTS,CHAPT-NUM GET STACK,0 SUB STACK,1 >MAXQ CURSET 5,1 ICALL1 PUT-UP-QUESTIONS SUB QUEST-NUM,1 >CUR-POS ICALL1 NEW-CURSOR ?PRG1: INPUT 1 >CHR EQUAL? CHR,81,113 \?CCL5 SET 'Q,TRUE-VALUE JUMP ?REP2 ?CCL5: EQUAL? CHR,78,110 \?CCL7 ICALL1 ERASE-CURSOR EQUAL? QUEST-NUM,MAXQ \?CCL10 SET 'CUR-POS,0 SET 'QUEST-NUM,1 JUMP ?CND8 ?CCL10: INC 'CUR-POS INC 'QUEST-NUM ?CND8: ICALL1 NEW-CURSOR JUMP ?PRG1 ?CCL7: EQUAL? CHR,80,112 \?CCL12 ICALL1 ERASE-CURSOR EQUAL? QUEST-NUM,1 \?CCL15 SET 'QUEST-NUM,MAXQ SUB QUEST-NUM,1 >CUR-POS JUMP ?CND13 ?CCL15: DEC 'CUR-POS DEC 'QUEST-NUM ?CND13: ICALL1 NEW-CURSOR JUMP ?PRG1 ?CCL12: EQUAL? CHR,13,10 \?PRG1 ICALL1 DISPLAY-HINT ?REP2: ZERO? Q /?FCN RFALSE .FUNCT ERASE-CURSOR,?TMP1 GET LINE-TABLE,CUR-POS >?TMP1 GET COLUMN-TABLE,CUR-POS SUB STACK,2 CURSET ?TMP1,STACK PRINTC 32 RTRUE .FUNCT NEW-CURSOR,?TMP1 GET LINE-TABLE,CUR-POS >?TMP1 GET COLUMN-TABLE,CUR-POS SUB STACK,2 CURSET ?TMP1,STACK PRINTC 62 RTRUE .FUNCT INVERSE-LINE,CENTER-HALF HLIGHT H-INVERSE GETB 0,33 ICALL2 PRINT-SPACES,STACK HLIGHT H-NORMAL RTRUE .FUNCT DISPLAY-HINT,H,MX,MXC,CNT,CHR,FLG,N,?TMP1 SET 'CNT,2 SET 'FLG,TRUE-VALUE CLEAR -1 SPLIT 3 SCREEN S-WINDOW CURSET 1,1 ICALL1 INVERSE-LINE ICALL CENTER-LINE,1,STR?239,16 CURSET 3,1 ICALL1 INVERSE-LINE ICALL LEFT-LINE,3,STR?237 ICALL RIGHT-LINE,3,STR?240,17 CURSET 2,1 ICALL1 INVERSE-LINE HLIGHT H-BOLD GET HINTS,CHAPT-NUM >?TMP1 ADD QUEST-NUM,1 GET ?TMP1,STACK >H GET H,2 ICALL CENTER-LINE,2,STACK HLIGHT H-NORMAL GET H,0 >MX GET HINTS,0 >MXC SCREEN S-TEXT CRLF ?PRG1: GET H,1 EQUAL? CNT,STACK /?PRG8 GET H,CNT PRINT STACK CRLF INC 'CNT JUMP ?PRG1 ?PRG8: ZERO? FLG /?CCL12 GRTR? CNT,MX \?CCL12 SET 'FLG,FALSE-VALUE PRINTI "[That's all.]" CRLF JUMP ?CND10 ?CCL12: ZERO? FLG /?CND10 SUB MX,CNT ADD STACK,1 >N EQUAL? CHAPT-NUM,MXC /?PRG28 PRINTN N PRINTI " hint" EQUAL? N,1 /?PRG26 PRINTC 115 ?PRG26: PRINTI " left " ?PRG28: PRINTI "-> " SET 'FLG,FALSE-VALUE ?CND10: INPUT 1 >CHR EQUAL? CHR,81,113 \?CCL32 PUT H,1,CNT RTRUE ?CCL32: EQUAL? CHR,13,10 \?PRG8 GRTR? CNT,MX /?PRG8 SET 'FLG,TRUE-VALUE GET H,CNT PRINT STACK CRLF IGRTR? 'CNT,MX \?PRG8 SET 'FLG,FALSE-VALUE PRINTI "[That's all.]" CRLF JUMP ?PRG8 .FUNCT PUT-UP-QUESTIONS,ST,MXQ,MXL,?TMP1 SET 'ST,1 GET HINTS,CHAPT-NUM GET STACK,0 SUB STACK,1 >MXQ GETB 0,32 SUB STACK,1 >MXL ?PRG1: GRTR? ST,MXQ /TRUE SUB ST,1 GET LINE-TABLE,STACK >?TMP1 SUB ST,1 GET COLUMN-TABLE,STACK SUB STACK,1 CURSET ?TMP1,STACK PRINTC 32 GET HINTS,CHAPT-NUM >?TMP1 ADD ST,1 GET ?TMP1,STACK GET STACK,2 PRINT STACK INC 'ST JUMP ?PRG1 .FUNCT PUT-UP-CHAPTERS,ST,MXC,MXL,?TMP1 SET 'ST,1 GET HINTS,0 >MXC GETB 0,32 SUB STACK,1 >MXL ?PRG1: GRTR? ST,MXC /TRUE SUB ST,1 GET LINE-TABLE,STACK >?TMP1 SUB ST,1 GET COLUMN-TABLE,STACK SUB STACK,1 CURSET ?TMP1,STACK PRINTC 32 GET HINTS,ST GET STACK,1 PRINT STACK INC 'ST JUMP ?PRG1 .FUNCT INIT-HINT-SCREEN,THIRD ASSIGNED? 'THIRD /?CND1 SET 'THIRD,TRUE-VALUE ?CND1: CLEAR -1 GETB 0,32 SUB STACK,1 SPLIT STACK SCREEN S-WINDOW CURSET 1,1 ICALL1 INVERSE-LINE CURSET 2,1 ICALL1 INVERSE-LINE CURSET 3,1 ICALL1 INVERSE-LINE ICALL CENTER-LINE,1,STR?239,16 ICALL LEFT-LINE,2,STR?241 ICALL RIGHT-LINE,2,STR?242,12 ZERO? THIRD /FALSE ICALL LEFT-LINE,3,STR?243 CALL RIGHT-LINE,3,STR?244,16 RSTACK .FUNCT CENTER-LINE,LN,STR,LEN,INV ASSIGNED? 'INV /?CND1 SET 'INV,TRUE-VALUE ?CND1: ZERO? LEN \?CND3 DIROUT D-TABLE-ON,DIROUT-TBL PRINT STR DIROUT D-TABLE-OFF GET DIROUT-TBL,0 >LEN ?CND3: GETB 0,33 SUB STACK,LEN DIV STACK,2 ADD STACK,1 CURSET LN,STACK ZERO? INV /?PRG9 HLIGHT H-INVERSE ?PRG9: PRINT STR ZERO? INV /FALSE HLIGHT H-NORMAL RTRUE .FUNCT LEFT-LINE,LN,STR,INV ASSIGNED? 'INV /?CND1 SET 'INV,TRUE-VALUE ?CND1: CURSET LN,1 ZERO? INV /?PRG5 HLIGHT H-INVERSE ?PRG5: PRINT STR ZERO? INV /FALSE HLIGHT H-NORMAL RTRUE .FUNCT RIGHT-LINE,LN,STR,LEN,INV ASSIGNED? 'INV /?CND1 SET 'INV,TRUE-VALUE ?CND1: ZERO? LEN \?CND3 DIROUT 3,DIROUT-TBL PRINT STR DIROUT -3 GET DIROUT-TBL,0 >LEN ?CND3: GETB 0,33 SUB STACK,LEN CURSET LN,STACK ZERO? INV /?PRG9 HLIGHT H-INVERSE ?PRG9: PRINT STR ZERO? INV /FALSE HLIGHT H-NORMAL RTRUE .ENDI