646 lines
13 KiB
Plaintext
646 lines
13 KiB
Plaintext
|
|
.SEGMENT "HINTS"
|
|
|
|
|
|
.FUNCT DO-HINTS:ANY:0:0,Q,WIN,WCLR,QN,FG,BG,NUM,MAXC,?TMP1
|
|
HLIGHT H-NORMAL
|
|
CURSET -1,0
|
|
CALL1 INIT-HINT-SCREEN >WIN
|
|
WINATTR S-TEXT,A-WRAP,O-CLEAR
|
|
FONT 1
|
|
WINGET -3,WFSIZE
|
|
SHIFT STACK,-8 >Q
|
|
WINGET -3,WHIGH
|
|
DIV STACK,Q >BOTTOM-HINT-NUM
|
|
SCREEN S-WINDOW
|
|
WINGET S-WINDOW,WCOLOR >WCLR
|
|
GETB 0,30
|
|
EQUAL? STACK,APPLE-2C,APPLE-2E,APPLE-2GS \?CCL3
|
|
COLOR 1,1
|
|
HLIGHT H-INVERSE
|
|
JUMP ?PRG12
|
|
?CCL3: GET 0,0
|
|
BTST STACK,1 \?PRG6
|
|
ICALL CCURSET,2,9
|
|
COLOR 1,-1
|
|
JUMP ?PRG12
|
|
?PRG6: WINGET S-TEXT,WCOLOR >BG
|
|
SHIFT BG,-8 >FG
|
|
EQUAL? FG,-1,255 \?CND8
|
|
SET 'FG,1
|
|
?CND8: BAND BG,255 >BG
|
|
EQUAL? BG,-1,255 \?CND10
|
|
SET 'BG,1
|
|
?CND10: COLOR FG,BG
|
|
?PRG12: CLEAR S-TEXT
|
|
SCREEN S-WINDOW
|
|
FONT 1
|
|
ICALL HINT-TITLE,INVISICLUES,S-WINDOW
|
|
SCREEN S-TEXT
|
|
WINATTR -3,A-SCRIPT,O-CLEAR
|
|
DIROUT D-TABLE-ON,SLINE
|
|
DIROUT D-TABLE-OFF
|
|
SET 'GET-HINT-ROUTINE,H-CHAPT-NAME
|
|
GET HINTS,0
|
|
ICALL2 H-PUT-UP-FROBS,STACK
|
|
SET 'QN,H-CHAPT-NUM
|
|
GET HINTS,0
|
|
GRTR? QN,STACK \?CND14
|
|
PRINTI " ["
|
|
PRINTN QN
|
|
PRINTC 93
|
|
SET 'QN,1
|
|
?CND14: ICALL2 H-NEW-CURSOR,QN
|
|
?PRG16: GET HINTS,0 >MAXC
|
|
ZERO? DEMO-VERSION? /?CCL20
|
|
CALL2 INPUT-DEMO,1 >BG
|
|
JUMP ?CND18
|
|
?CCL20: INPUT 1 >BG
|
|
?CND18: EQUAL? BG,CLICK1,CLICK2 \?CND21
|
|
CALL1 SELECT-HINT-BY-MOUSE >FG
|
|
GRTR? FG,0 /?CND21
|
|
EQUAL? FG,-1 \?CCL27
|
|
SET 'BG,78
|
|
JUMP ?CND21
|
|
?CCL27: EQUAL? FG,-2 \?CCL29
|
|
SET 'BG,80
|
|
JUMP ?CND21
|
|
?CCL29: EQUAL? FG,-3 \?CCL31
|
|
SET 'BG,13
|
|
JUMP ?CND21
|
|
?CCL31: EQUAL? FG,-4 \?CCL33
|
|
SET 'BG,81
|
|
?CND21: EQUAL? BG,77,109,81 /?CTR35
|
|
EQUAL? BG,113 \?CCL36
|
|
?CTR35: SET 'Q,TRUE-VALUE
|
|
JUMP ?REP17
|
|
?CCL33: SOUND S-BEEP
|
|
JUMP ?PRG16
|
|
?CCL36: EQUAL? BG,LEFT-ARROW \?CCL40
|
|
SUB QN,BOTTOM-HINT-NUM >NUM
|
|
LESS? 0,NUM \?CCL43
|
|
ICALL H-NEW-CURSOR,QN,TRUE-VALUE
|
|
SET 'QN,NUM
|
|
ICALL2 H-NEW-CURSOR,QN
|
|
SET 'H-QUEST-NUM,1
|
|
JUMP ?PRG16
|
|
?CCL43: SOUND S-BEEP
|
|
JUMP ?PRG16
|
|
?CCL40: EQUAL? BG,RIGHT-ARROW \?CCL45
|
|
ADD QN,BOTTOM-HINT-NUM >NUM
|
|
LESS? MAXC,NUM /?CCL48
|
|
ICALL H-NEW-CURSOR,QN,TRUE-VALUE
|
|
SET 'QN,NUM
|
|
ICALL2 H-NEW-CURSOR,QN
|
|
SET 'H-QUEST-NUM,1
|
|
JUMP ?PRG16
|
|
?CCL48: SOUND S-BEEP
|
|
JUMP ?PRG16
|
|
?CCL45: EQUAL? BG,78,110,DOWN-ARROW \?CCL50
|
|
SET 'NUM,QN
|
|
ICALL H-NEW-CURSOR,NUM,TRUE-VALUE
|
|
?PRG51: IGRTR? 'NUM,MAXC \?CND53
|
|
SET 'NUM,1
|
|
?CND53: EQUAL? NUM,QN \?CCL57
|
|
SOUND S-BEEP
|
|
ICALL2 H-NEW-CURSOR,QN
|
|
JUMP ?PRG16
|
|
?CCL57: CALL2 H-NEW-CURSOR,NUM
|
|
ZERO? STACK /?PRG51
|
|
SET 'QN,NUM
|
|
SET 'H-QUEST-NUM,1
|
|
JUMP ?PRG16
|
|
?CCL50: EQUAL? BG,80,112,UP-ARROW \?CCL60
|
|
SET 'NUM,QN
|
|
ICALL H-NEW-CURSOR,NUM,TRUE-VALUE
|
|
?PRG61: DLESS? 'NUM,1 \?CND63
|
|
SET 'NUM,MAXC
|
|
?CND63: EQUAL? NUM,QN \?CCL67
|
|
SOUND S-BEEP
|
|
ICALL2 H-NEW-CURSOR,QN
|
|
JUMP ?PRG16
|
|
?CCL67: CALL2 H-NEW-CURSOR,NUM
|
|
ZERO? STACK /?PRG61
|
|
SET 'QN,NUM
|
|
SET 'H-QUEST-NUM,1
|
|
JUMP ?PRG16
|
|
?CCL60: EQUAL? BG,13,10,32 \?CCL70
|
|
SET 'H-CHAPT-NUM,QN
|
|
CALL1 H-PICK-QUESTION >Q
|
|
JUMP ?REP17
|
|
?CCL70: EQUAL? BG,CLICK1,CLICK2 \?CCL72
|
|
GRTR? FG,MAXC \?CCL75
|
|
SOUND S-BEEP
|
|
JUMP ?PRG16
|
|
?CCL75: ICALL H-NEW-CURSOR,QN,TRUE-VALUE
|
|
CALL2 H-NEW-CURSOR,FG
|
|
ZERO? STACK /?CCL78
|
|
SET 'QN,FG
|
|
SET 'H-QUEST-NUM,1
|
|
EQUAL? BG,CLICK2 \?PRG16
|
|
SET 'H-CHAPT-NUM,QN
|
|
CALL1 H-PICK-QUESTION >Q
|
|
?REP17: ZERO? Q /?PRG12
|
|
CLEAR -1
|
|
SCREEN S-WINDOW
|
|
GETB 0,30
|
|
EQUAL? STACK,APPLE-2C,APPLE-2E,APPLE-2GS \?CCL85
|
|
HLIGHT H-NORMAL
|
|
JUMP ?CND83
|
|
?CCL78: SOUND S-BEEP
|
|
ICALL2 H-NEW-CURSOR,QN
|
|
JUMP ?PRG16
|
|
?CCL72: SOUND S-BEEP
|
|
JUMP ?PRG16
|
|
?CCL85: BAND WCLR,255 >?TMP1
|
|
SHIFT WCLR,-8
|
|
COLOR ?TMP1,STACK
|
|
?CND83: SCREEN S-TEXT
|
|
HLIGHT H-NORMAL
|
|
WINATTR S-TEXT,A-WRAP,O-SET
|
|
WINATTR S-TEXT,A-SCRIPT,O-SET
|
|
CURSET -2,0
|
|
ICALL1 LEAVE-HINT-SCREEN
|
|
RETURN M-FATAL
|
|
|
|
|
|
.FUNCT H-PICK-QUESTION:ANY:0:0,CHR,MAXQ,Q,WID,QN,TMP,NUM
|
|
?FCN: CATCH >PARSE-SENTENCE-ACTIVATION
|
|
HLIGHT H-NORMAL
|
|
CLEAR S-TEXT
|
|
GET HINTS,H-CHAPT-NUM
|
|
GET STACK,1
|
|
ICALL HINT-TITLE,STACK,S-WINDOW
|
|
CALL CENTER-LINE,M-MAIN-HINT-MENU,2 >WID
|
|
GET HINTS,H-CHAPT-NUM
|
|
GET STACK,0
|
|
SUB STACK,1 >MAXQ
|
|
SCREEN S-TEXT
|
|
SET 'GET-HINT-ROUTINE,H-GET-QUEST
|
|
ICALL2 H-PUT-UP-FROBS,MAXQ
|
|
SET 'QN,H-QUEST-NUM
|
|
GRTR? QN,MAXQ \?CND1
|
|
PRINTI " ["
|
|
PRINTN QN
|
|
PRINTC 93
|
|
SET 'QN,1
|
|
?CND1: ICALL2 H-NEW-CURSOR,QN
|
|
?PRG3: ZERO? DEMO-VERSION? /?CCL7
|
|
CALL2 INPUT-DEMO,1 >CHR
|
|
JUMP ?CND5
|
|
?CCL7: INPUT 1 >CHR
|
|
?CND5: EQUAL? CHR,CLICK1,CLICK2 \?CND8
|
|
CALL SELECT-HINT-BY-MOUSE,WID,TRUE-VALUE >TMP
|
|
GRTR? TMP,0 /?CND8
|
|
EQUAL? TMP,-1 \?CCL14
|
|
SET 'CHR,78
|
|
JUMP ?CND8
|
|
?CCL14: EQUAL? TMP,-2 \?CCL16
|
|
SET 'CHR,80
|
|
JUMP ?CND8
|
|
?CCL16: EQUAL? TMP,-3 \?CCL18
|
|
SET 'CHR,13
|
|
JUMP ?CND8
|
|
?CCL18: EQUAL? TMP,-4 \?CCL20
|
|
SET 'CHR,81
|
|
JUMP ?CND8
|
|
?CCL20: EQUAL? TMP,-5 \?CCL22
|
|
SET 'CHR,77
|
|
?CND8: EQUAL? CHR,81,113 /TRUE
|
|
EQUAL? CHR,77,109 \?CCL27
|
|
SET 'Q,TRUE-VALUE
|
|
JUMP ?REP4
|
|
?CCL22: SOUND S-BEEP
|
|
JUMP ?PRG3
|
|
?CCL27: EQUAL? CHR,LEFT-ARROW \?CCL29
|
|
SUB QN,BOTTOM-HINT-NUM >NUM
|
|
LESS? 0,NUM \?CCL32
|
|
ICALL H-NEW-CURSOR,QN,TRUE-VALUE
|
|
SET 'QN,NUM
|
|
ICALL2 H-NEW-CURSOR,QN
|
|
JUMP ?PRG3
|
|
?CCL32: SOUND S-BEEP
|
|
JUMP ?PRG3
|
|
?CCL29: EQUAL? CHR,RIGHT-ARROW \?CCL34
|
|
ADD QN,BOTTOM-HINT-NUM >NUM
|
|
LESS? MAXQ,NUM /?CCL37
|
|
ICALL H-NEW-CURSOR,QN,TRUE-VALUE
|
|
SET 'QN,NUM
|
|
ICALL2 H-NEW-CURSOR,QN
|
|
JUMP ?PRG3
|
|
?CCL37: SOUND S-BEEP
|
|
JUMP ?PRG3
|
|
?CCL34: EQUAL? CHR,78,110,DOWN-ARROW \?CCL39
|
|
SET 'NUM,QN
|
|
ICALL H-NEW-CURSOR,NUM,TRUE-VALUE
|
|
?PRG40: IGRTR? 'NUM,MAXQ \?CND42
|
|
SET 'NUM,1
|
|
?CND42: EQUAL? NUM,QN \?CCL46
|
|
SOUND S-BEEP
|
|
JUMP ?REP41
|
|
?CCL46: CALL2 H-NEW-CURSOR,NUM
|
|
ZERO? STACK /?PRG40
|
|
SET 'QN,NUM
|
|
?REP41: ICALL2 H-NEW-CURSOR,QN
|
|
JUMP ?PRG3
|
|
?CCL39: EQUAL? CHR,80,112,UP-ARROW \?CCL49
|
|
SET 'NUM,QN
|
|
ICALL H-NEW-CURSOR,NUM,TRUE-VALUE
|
|
?PRG50: DLESS? 'NUM,1 \?CND52
|
|
SET 'NUM,MAXQ
|
|
?CND52: EQUAL? NUM,QN \?CCL56
|
|
SOUND S-BEEP
|
|
JUMP ?REP51
|
|
?CCL56: CALL2 H-NEW-CURSOR,NUM
|
|
ZERO? STACK /?PRG50
|
|
SET 'QN,NUM
|
|
?REP51: ICALL2 H-NEW-CURSOR,QN
|
|
JUMP ?PRG3
|
|
?CCL49: EQUAL? CHR,CLICK1,CLICK2 \?CCL59
|
|
GRTR? TMP,MAXQ \?CCL62
|
|
SOUND S-BEEP
|
|
JUMP ?PRG3
|
|
?CCL62: ICALL H-NEW-CURSOR,QN,TRUE-VALUE
|
|
CALL2 H-NEW-CURSOR,TMP
|
|
ZERO? STACK /?CCL65
|
|
SET 'QN,TMP
|
|
EQUAL? CHR,CLICK2 \?PRG3
|
|
SET 'H-QUEST-NUM,QN
|
|
ICALL1 DISPLAY-HINT
|
|
JUMP ?REP4
|
|
?CCL65: SOUND S-BEEP
|
|
ICALL2 H-NEW-CURSOR,QN
|
|
JUMP ?PRG3
|
|
?CCL59: EQUAL? CHR,13,10,32 \?CCL69
|
|
SET 'H-QUEST-NUM,QN
|
|
ICALL1 DISPLAY-HINT
|
|
?REP4: ZERO? Q /?FCN
|
|
RFALSE
|
|
?CCL69: SOUND S-BEEP
|
|
JUMP ?PRG3
|
|
|
|
|
|
.FUNCT H-NEW-CURSOR:ANY:1:2,POS,OFF?,Y,X,?TMP1
|
|
SET 'Y,POS
|
|
SET 'X,LEFT-HINT-COLUMN
|
|
GRTR? POS,BOTTOM-HINT-NUM \?CND1
|
|
SUB Y,BOTTOM-HINT-NUM >Y
|
|
WINGET -3,WWIDE
|
|
DIV STACK,2 >X
|
|
?CND1: SUB Y,1 >?TMP1
|
|
WINGET -3,WFSIZE
|
|
SHIFT STACK,-8
|
|
MUL ?TMP1,STACK
|
|
ADD 1,STACK
|
|
CURSET STACK,X
|
|
ZERO? OFF? \?CCL5
|
|
HLIGHT H-INVERSE
|
|
JUMP ?CND3
|
|
?CCL5: HLIGHT H-NORMAL
|
|
?CND3: CALL GET-HINT-ROUTINE,POS >X
|
|
ZERO? X /?CND6
|
|
PRINT X
|
|
PRINTC 32
|
|
?CND6: ZERO? OFF? \?CND8
|
|
HLIGHT H-NORMAL
|
|
?CND8: RETURN X
|
|
|
|
|
|
.FUNCT SELECT-HINT-BY-MOUSE:ANY:0:2,WID,Q?,VAL,MID,X,Y,WIN,?TMP1
|
|
GET 0,27
|
|
GET STACK,2 >Y
|
|
GET 0,27
|
|
GET STACK,1 >X
|
|
WINGET S-WINDOW,WTOP >VAL
|
|
GRTR? VAL,Y /?CCL3
|
|
SUB Y,VAL >?TMP1
|
|
WINGET S-WINDOW,WHIGH
|
|
LESS? ?TMP1,STACK \?CCL3
|
|
SET 'WIN,S-WINDOW
|
|
JUMP ?CND1
|
|
?CCL3: WINGET S-TEXT,WTOP >VAL
|
|
SET 'WIN,S-TEXT
|
|
?CND1: SUB Y,VAL >Y
|
|
WINGET WIN,WFSIZE
|
|
SHIFT STACK,-8 >VAL
|
|
DIV Y,VAL >VAL
|
|
GETB 0,33 >?TMP1
|
|
WINGET WIN,WFSIZE
|
|
BAND STACK,255
|
|
MUL ?TMP1,STACK
|
|
DIV STACK,2 >MID
|
|
EQUAL? WIN,S-WINDOW \?CCL8
|
|
EQUAL? VAL,1 \?CCL11
|
|
DIV WID,2 >VAL
|
|
ZERO? VAL /?CCL14
|
|
SUB MID,VAL
|
|
GRTR? X,STACK \?CCL14
|
|
ADD MID,VAL
|
|
LESS? X,STACK \?CCL14
|
|
RETURN -5
|
|
?CCL14: GRTR? X,MID /?CCL19
|
|
RETURN -1
|
|
?CCL19: RETURN -3
|
|
?CCL11: EQUAL? VAL,2 \FALSE
|
|
DIV H-OR-USE-MOUSE-WID,2 >VAL
|
|
SUB MID,VAL
|
|
LESS? X,STACK \?CCL24
|
|
RETURN -2
|
|
?CCL24: ADD MID,VAL
|
|
GRTR? X,STACK \FALSE
|
|
RETURN -4
|
|
?CCL8: INC 'VAL
|
|
GRTR? X,MID \?CCL30
|
|
ZERO? Q? \?CCL30
|
|
ADD VAL,BOTTOM-HINT-NUM >VAL
|
|
RETURN VAL
|
|
?CCL30: GRTR? VAL,BOTTOM-HINT-NUM \?CND28
|
|
SET 'VAL,BOTTOM-HINT-NUM
|
|
?CND28: RETURN VAL
|
|
|
|
|
|
.FUNCT INVERSE-LINE:ANY:0:2,LN,INV,?TMP1
|
|
ASSIGNED? 'INV /?CND1
|
|
SET 'INV,H-INVERSE
|
|
?CND1: ZERO? LN /?CND3
|
|
ICALL CCURSET,LN,1
|
|
?CND3: HLIGHT INV
|
|
ZERO? INV \?CCL7
|
|
ERASE 1
|
|
RTRUE
|
|
?CCL7: FONT 4
|
|
GETB 0,39 >LN
|
|
WINGET -3,WWIDE >INV
|
|
ADD LN,INV
|
|
DIV STACK,LN
|
|
ICALL2 PRINT-SPACES,STACK
|
|
GETB 0,30
|
|
EQUAL? STACK,APPLE-2E,APPLE-2C,APPLE-2GS \?CND8
|
|
CURGET SLINE
|
|
GET SLINE,0 >?TMP1
|
|
SUB INV,LN
|
|
CURSET ?TMP1,STACK
|
|
PRINTC 32
|
|
?CND8: FONT 1
|
|
HLIGHT H-NORMAL
|
|
RTRUE
|
|
|
|
|
|
.FUNCT DISPLAY-HINT:ANY:0:0,H,MX,CNT,CV,SHIFT?,COUNT-OFFS,WID,CURCX,CURC,FLG,?TMP1
|
|
HLIGHT H-NORMAL
|
|
CLEAR S-TEXT
|
|
SCREEN S-WINDOW
|
|
ICALL INVERSE-LINE,3,H-NORMAL
|
|
ICALL RIGHT-LINE,Q-RESUME-STORY,3
|
|
ICALL INVERSE-LINE,2,H-NORMAL
|
|
ICALL RIGHT-LINE,RETURN-SEE-NEW-HINT,2
|
|
GET 0,8
|
|
BTST STACK,32 \?CND1
|
|
CALL CENTER-LINE,H-OR-USE-MOUSE,3 >H-OR-USE-MOUSE-WID
|
|
?CND1: ICALL INVERSE-LINE,1,H-NORMAL
|
|
HLIGHT H-BOLD
|
|
GET HINTS,H-CHAPT-NUM >?TMP1
|
|
ADD H-QUEST-NUM,1
|
|
GET ?TMP1,STACK >H
|
|
SUB H-CHAPT-NUM,1
|
|
GET HINT-COUNTS,STACK >CV
|
|
GET H,1
|
|
ICALL CENTER-LINE,STACK,1,H-INVERSE
|
|
HLIGHT H-NORMAL
|
|
CALL CENTER-LINE,M-SEE-HINT-MENU,2 >WID
|
|
GET H,0 >MX
|
|
DIROUT D-SCREEN-OFF
|
|
GET H,1
|
|
PRINT STACK
|
|
CRLF
|
|
DIROUT D-SCREEN-ON
|
|
SCREEN S-TEXT
|
|
WINATTR -3,A-SCRIPT,O-SET
|
|
WINATTR S-TEXT,A-WRAP,O-SET
|
|
CURSET 1,1
|
|
MOD H-QUEST-NUM,2 >SHIFT?
|
|
SUB H-QUEST-NUM,1
|
|
DIV STACK,2 >COUNT-OFFS
|
|
SET 'CNT,1
|
|
GETB CV,COUNT-OFFS >CURCX
|
|
ZERO? SHIFT? /?CCL5
|
|
SHIFT CURCX,-4
|
|
JUMP ?CND3
|
|
?CCL5: PUSH CURCX
|
|
?CND3: BAND STACK,15
|
|
ADD 1,STACK >CURC
|
|
?PRG6: IGRTR? 'CNT,CURC /?REP7
|
|
SUB MX,CNT
|
|
ADD STACK,1
|
|
PRINTN STACK
|
|
PRINTI "> "
|
|
GET H,CNT
|
|
PRINT STACK
|
|
CRLF
|
|
JUMP ?PRG6
|
|
?REP7: SET 'FLG,TRUE-VALUE
|
|
?PRG11: ZERO? FLG /?CND13
|
|
SET 'FLG,FALSE-VALUE
|
|
GRTR? CNT,MX \?CCL17
|
|
PRINT NO-MORE-HINTS
|
|
CRLF
|
|
SCREEN S-WINDOW
|
|
ICALL INVERSE-LINE,2,H-NORMAL
|
|
ICALL CENTER-LINE,M-SEE-HINT-MENU,2
|
|
SCREEN S-TEXT
|
|
JUMP ?CND13
|
|
?CCL17: SUB MX,CNT
|
|
ADD STACK,1
|
|
PRINTN STACK
|
|
PRINTI "> "
|
|
?CND13: ZERO? DEMO-VERSION? /?CCL20
|
|
CALL2 INPUT-DEMO,1 >CURC
|
|
JUMP ?CND18
|
|
?CCL20: INPUT 1 >CURC
|
|
?CND18: EQUAL? CURC,CLICK1,CLICK2 \?CND21
|
|
CALL2 SELECT-HINT-BY-MOUSE,WID >CURCX
|
|
GRTR? CURCX,0 /?CND21
|
|
EQUAL? CURCX,-3 \?CCL27
|
|
SET 'CURC,13
|
|
JUMP ?CND21
|
|
?CCL27: EQUAL? CURCX,-4 \?CCL29
|
|
SET 'CURC,81
|
|
JUMP ?CND21
|
|
?CCL29: EQUAL? CURCX,-5 \?CCL31
|
|
SET 'CURC,77
|
|
?CND21: EQUAL? CURC,77,109,81 /?CTR33
|
|
EQUAL? CURC,113 \?CCL34
|
|
?CTR33: ZERO? SHIFT? /?CCL39
|
|
GETB CV,COUNT-OFFS
|
|
BAND STACK,15 >?TMP1
|
|
SUB CNT,2
|
|
SHIFT STACK,4
|
|
BOR ?TMP1,STACK
|
|
PUTB CV,COUNT-OFFS,STACK
|
|
JUMP ?CND37
|
|
?CCL31: SOUND S-BEEP
|
|
JUMP ?PRG11
|
|
?CCL39: GETB CV,COUNT-OFFS
|
|
BAND STACK,240 >?TMP1
|
|
SUB CNT,2
|
|
BOR ?TMP1,STACK
|
|
PUTB CV,COUNT-OFFS,STACK
|
|
?CND37: EQUAL? CURC,81,113 \?CCL42
|
|
THROW TRUE-VALUE,PARSE-SENTENCE-ACTIVATION
|
|
JUMP ?PRG11
|
|
?CCL42: WINATTR -3,A-SCRIPT,O-CLEAR
|
|
WINATTR S-TEXT,A-WRAP,O-CLEAR
|
|
RTRUE
|
|
?CCL34: EQUAL? CURC,13,10 \?CCL44
|
|
GRTR? CNT,MX /?CCL47
|
|
SET 'FLG,TRUE-VALUE
|
|
GET H,CNT
|
|
PRINT STACK
|
|
CRLF
|
|
IGRTR? 'CNT,MX \?PRG11
|
|
SET 'FLG,FALSE-VALUE
|
|
PRINT NO-MORE-HINTS
|
|
CRLF
|
|
SCREEN S-WINDOW
|
|
ICALL INVERSE-LINE,2,H-NORMAL
|
|
ICALL CENTER-LINE,M-SEE-HINT-MENU,2
|
|
SCREEN S-TEXT
|
|
JUMP ?PRG11
|
|
?CCL47: SOUND S-BEEP
|
|
JUMP ?PRG11
|
|
?CCL44: SOUND S-BEEP
|
|
JUMP ?PRG11
|
|
|
|
|
|
.FUNCT H-CHAPT-NAME:ANY:1:1,N
|
|
GET HINTS,N
|
|
GET STACK,1
|
|
RSTACK
|
|
|
|
|
|
.FUNCT H-GET-QUEST:ANY:1:1,N,?TMP1
|
|
GET HINTS,H-CHAPT-NUM >?TMP1
|
|
ADD N,1
|
|
GET ?TMP1,STACK
|
|
GET STACK,1
|
|
RSTACK
|
|
|
|
|
|
.FUNCT H-PUT-UP-FROBS:ANY:1:1,MX,ST,QN,X,Y,TMP,BHL,WID
|
|
SET 'QN,1
|
|
SET 'X,LEFT-HINT-COLUMN
|
|
SET 'Y,TOP-HINT-LINE
|
|
HLIGHT H-NORMAL
|
|
SET 'BHL,BOTTOM-HINT-NUM
|
|
WINGET -3,WFSIZE
|
|
SHIFT STACK,-8 >WID
|
|
?PRG1: IGRTR? 'ST,MX /TRUE
|
|
CALL GET-HINT-ROUTINE,ST >TMP
|
|
ZERO? TMP /?PRG1
|
|
SUB Y,1
|
|
MUL STACK,WID
|
|
ADD 1,STACK
|
|
CURSET STACK,X
|
|
PRINT TMP
|
|
ERASE 1
|
|
IGRTR? 'Y,BHL \?PRG1
|
|
SET 'Y,TOP-HINT-LINE
|
|
WINGET -3,WWIDE
|
|
DIV STACK,2 >X
|
|
JUMP ?PRG1
|
|
|
|
|
|
.FUNCT INIT-HINT-SCREEN:ANY:0:0
|
|
SCREEN S-FULL
|
|
CLEAR S-FULL
|
|
ICALL1 RESET-MARGIN
|
|
EQUAL? MACHINE,APPLE-2E,APPLE-2C,APPLE-2GS /?CCL3
|
|
ICALL DISPLAY-BORDER,P-HINT-BORDER,FALSE-VALUE
|
|
JUMP ?CND1
|
|
?CCL3: MUL 3,FONT-Y
|
|
ADD 1,STACK
|
|
DISPLAY P-HINT-BORDER,STACK,1
|
|
?CND1: ICALL2 SETUP-TEXT-AND-STATUS,P-HINT-LOC
|
|
SCREEN S-TEXT
|
|
MARGIN 0,0
|
|
RETURN S-STATUS
|
|
|
|
|
|
.FUNCT LEAVE-HINT-SCREEN:ANY:0:0
|
|
RFALSE
|
|
|
|
|
|
.FUNCT HINT-TITLE:ANY:2:3,TITLE,WIN,THIRD
|
|
ASSIGNED? 'THIRD /?CND1
|
|
SET 'THIRD,TRUE-VALUE
|
|
?CND1: SCREEN S-WINDOW
|
|
ICALL INVERSE-LINE,1,H-NORMAL
|
|
ICALL INVERSE-LINE,2,H-NORMAL
|
|
ICALL INVERSE-LINE,3,H-NORMAL
|
|
HLIGHT H-BOLD
|
|
ICALL CENTER-LINE,TITLE,1,H-INVERSE
|
|
HLIGHT H-NORMAL
|
|
ICALL LEFT-LINE,2,NEXT-HINT
|
|
GET 0,8
|
|
BTST STACK,32 \?CND3
|
|
CALL CENTER-LINE,H-OR-USE-MOUSE,3 >H-OR-USE-MOUSE-WID
|
|
?CND3: ICALL LEFT-LINE,3,PREVIOUS-HINT
|
|
ZERO? THIRD /FALSE
|
|
ICALL RIGHT-LINE,RETURN-SEE-HINT,2
|
|
CALL RIGHT-LINE,Q-RESUME-STORY,3
|
|
RSTACK
|
|
|
|
|
|
.FUNCT LEFT-LINE:ANY:2:3,LN,STR,INV
|
|
ICALL CCURSET,LN,1
|
|
ZERO? INV /?CND1
|
|
HLIGHT INV
|
|
?CND1: PRINT STR
|
|
ZERO? INV /FALSE
|
|
HLIGHT H-NORMAL
|
|
RTRUE
|
|
|
|
|
|
.FUNCT RIGHT-LINE:ANY:1:4,STR,LN,INV,LEN
|
|
CALL JUSTIFIED-LINE,STR,LN,INV,LEN,1
|
|
RSTACK
|
|
|
|
|
|
.FUNCT CENTER-LINE:ANY:1:4,STR,LN,INV,LEN
|
|
CALL JUSTIFIED-LINE,STR,LN,INV,LEN,2
|
|
RSTACK
|
|
|
|
|
|
.FUNCT JUSTIFIED-LINE:ANY:5:5,STR,LN,INV,LEN,CTR
|
|
ZERO? LN \?CCL3
|
|
CURGET SLINE
|
|
GET SLINE,0 >LN
|
|
JUMP ?CND1
|
|
?CCL3: DEC 'LN
|
|
WINGET -3,WFSIZE
|
|
SHIFT STACK,-8
|
|
MUL LN,STACK
|
|
ADD 1,STACK >LN
|
|
?CND1: ZERO? LEN \?CND4
|
|
DIROUT D-TABLE-ON,SLINE
|
|
PRINT STR
|
|
PRINTC 32
|
|
DIROUT D-TABLE-OFF
|
|
GET 0,24 >LEN
|
|
?CND4: WINGET -3,WWIDE
|
|
SUB STACK,LEN
|
|
DIV STACK,CTR
|
|
CURSET LN,STACK
|
|
ZERO? INV /?CND6
|
|
HLIGHT INV
|
|
?CND6: PRINT STR
|
|
PRINTC 32
|
|
ZERO? INV \?CCL9
|
|
RETURN LEN
|
|
?CCL9: HLIGHT H-NORMAL
|
|
RETURN LEN
|
|
|
|
.ENDSEG
|
|
|
|
.ENDI
|