.FUNCT V-HINT:ANY:0:0,CHR,MAXC,C,Q,WHO ?FCN: PRINTR "Hints are not in this version." ?PRG9: INPUT 1 >CHR EQUAL? CHR,81,113 \?CCL13 SET 'Q,TRUE-VALUE JUMP ?REP10 ?CCL13: EQUAL? CHR,78,110 \?CCL15 EQUAL? CHAPT-NUM,MAXC /?PRG9 ICALL1 ERASE-CURSOR INC 'CUR-POS INC 'CHAPT-NUM ICALL1 NEW-CURSOR SET 'QUEST-NUM,1 JUMP ?PRG9 ?CCL15: EQUAL? CHR,80,112 \?CCL19 EQUAL? CHAPT-NUM,1 /?PRG9 ICALL1 ERASE-CURSOR DEC 'CUR-POS DEC 'CHAPT-NUM ICALL1 NEW-CURSOR SET 'QUEST-NUM,1 JUMP ?PRG9 ?CCL19: EQUAL? CHR,13,10 \?PRG9 ICALL1 PICK-QUESTION ?REP10: ZERO? Q /?FCN SPLIT 0 CLEAR -1 ICALL1 INIT-STATUS-LINE RETURN 2 .FUNCT PICK-QUESTION:ANY:0:0,CHR,MAXQ,Q ?FCN: ICALL2 INIT-HINT-SCREEN,FALSE-VALUE ICALL LEFT-LINE,3,STR?407,18 ICALL RIGHT-LINE,3,STR?408,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 EQUAL? QUEST-NUM,MAXQ /?PRG1 ICALL1 ERASE-CURSOR INC 'CUR-POS INC 'QUEST-NUM ICALL1 NEW-CURSOR JUMP ?PRG1 ?CCL7: EQUAL? CHR,80,112 \?CCL11 EQUAL? QUEST-NUM,1 /?PRG1 ICALL1 ERASE-CURSOR DEC 'CUR-POS DEC 'QUEST-NUM ICALL1 NEW-CURSOR JUMP ?PRG1 ?CCL11: EQUAL? CHR,13,10 \?PRG1 ICALL1 DISPLAY-HINT ?REP2: ZERO? Q /?FCN RFALSE .FUNCT ERASE-CURSOR:ANY:0:0,?TMP1 GET LINE-TABLE,CUR-POS >?TMP1 GET COLUMN-TABLE,CUR-POS SUB STACK,2 CURSET ?TMP1,STACK PRINTC 32 RTRUE .FUNCT NEW-CURSOR:ANY:0:0,?TMP1 GET LINE-TABLE,CUR-POS >?TMP1 GET COLUMN-TABLE,CUR-POS SUB STACK,2 CURSET ?TMP1,STACK PRINTC 62 RTRUE .FUNCT INVERSE-LINE:ANY:0:0,CENTER-HALF HLIGHT H-INVERSE GETB 0,33 ICALL2 PRINT-SPACES,STACK HLIGHT H-NORMAL RTRUE .FUNCT DISPLAY-HINT:ANY:0:0,H,MX,CNT,CHR,FLG,N,?TMP1 SET 'CNT,2 SET 'FLG,TRUE-VALUE SPLIT 0 CLEAR -1 SPLIT 3 SCREEN S-WINDOW CURSET 1,1 ICALL1 INVERSE-LINE ICALL CENTER-LINE,1,STR?409,16 CURSET 3,1 ICALL1 INVERSE-LINE ICALL LEFT-LINE,3,STR?410 ICALL RIGHT-LINE,3,STR?411,17 HLIGHT H-BOLD GET HINTS,CHAPT-NUM >?TMP1 ADD QUEST-NUM,1 GET ?TMP1,STACK >H GET H,1 ICALL CENTER-LINE,2,STACK HLIGHT H-NORMAL GET H,0 >MX SCREEN S-TEXT CRLF ?PRG1: ZERO? FLG /?CND3 SUB MX,CNT ADD STACK,1 >N PRINTC 91 PRINTN N PRINTI " hint" EQUAL? N,1 /?CND5 PRINTC 115 ?CND5: PRINTI " left.]" CRLF CRLF PRINTI " -> " SET 'FLG,FALSE-VALUE ?CND3: INPUT 1 >CHR EQUAL? CHR,81,113 /TRUE EQUAL? CHR,13,10 \?PRG1 GRTR? CNT,MX /?PRG1 SET 'FLG,TRUE-VALUE GET H,CNT PRINT STACK CRLF CRLF IGRTR? 'CNT,MX \?PRG1 SET 'FLG,FALSE-VALUE PRINTI "[Final hint]" CRLF JUMP ?PRG1 .FUNCT PUT-UP-QUESTIONS:ANY:0:0,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,1 PRINT STACK INC 'ST JUMP ?PRG1 .FUNCT PUT-UP-CHAPTERS:ANY:0:0,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:ANY:0:1,THIRD,WID,LEN ASSIGNED? 'THIRD /?CND1 SET 'THIRD,TRUE-VALUE ?CND1: GETB 0,33 >WID SPLIT 0 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?409,16 ICALL LEFT-LINE,2,STR?774 ICALL RIGHT-LINE,2,STR?775,12 ZERO? THIRD /FALSE ICALL LEFT-LINE,3,STR?776 CALL RIGHT-LINE,3,STR?777,16 RSTACK .FUNCT CENTER-LINE:ANY:2:4,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 CURSET LN,STACK ZERO? INV /?CND5 HLIGHT H-INVERSE ?CND5: PRINT STR ZERO? INV /FALSE HLIGHT H-NORMAL RTRUE .FUNCT LEFT-LINE:ANY:2:3,LN,STR,INV ASSIGNED? 'INV /?CND1 SET 'INV,TRUE-VALUE ?CND1: CURSET LN,1 ZERO? INV /?CND3 HLIGHT H-INVERSE ?CND3: PRINT STR ZERO? INV /FALSE HLIGHT H-NORMAL RTRUE .FUNCT RIGHT-LINE:ANY:2:4,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 /?CND5 HLIGHT H-INVERSE ?CND5: PRINT STR ZERO? INV /FALSE HLIGHT H-NORMAL RTRUE .ENDI