268 lines
4.6 KiB
Plaintext
268 lines
4.6 KiB
Plaintext
|
|
||
|
|
||
|
.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
|