shogun/status.zap

260 lines
5.5 KiB
Plaintext

.SEGMENT "HINTS"
.SEGMENT "0"
.FUNCT SETUP-TEXT-AND-STATUS:ANY:0:1,P,X,HIGH,WIDE,SLEFT,SHIGH,?TMP1
ASSIGNED? 'P /?CND1
SET 'P,P-BORDER-LOC
?CND1: GET 0,18 >HIGH
GET 0,17 >WIDE
SET 'SLEFT,1
MUL STATUS-LINES,FONT-Y >SHIGH
EQUAL? MACHINE,APPLE-2E,APPLE-2C,APPLE-2GS /?CCL5
PICINF P,YX-TBL /?BOGUS6
?BOGUS6: GET YX-TBL,1 >X
ADD X,SLEFT >SLEFT
EQUAL? P,P-BORDER-LOC /?CND7
GET YX-TBL,0 >SHIGH
?CND7: MUL X,2
SUB WIDE,STACK >WIDE
ICALL WINDEF,S-STATUS,1,SLEFT,SHIGH,WIDE
JUMP ?CND3
?CCL5: EQUAL? P,P-HINT-LOC \?CCL11
PICINF P-HINT-BORDER,YX-TBL \?CND12
GET YX-TBL,0 >BORDER-HEIGHT
?CND12: MUL 3,FONT-Y
ADD BORDER-HEIGHT,STACK >SHIGH
ICALL WINDEF,S-STATUS,1,SLEFT,SHIGH,WIDE
JUMP ?CND3
?CCL11: PICINF P-BORDER,YX-TBL \?CND14
GET YX-TBL,0 >BORDER-HEIGHT
?CND14: ADD 1,SHIGH >?TMP1
SUB HIGH,SHIGH
ICALL WINDEF,S-BORDER,?TMP1,1,STACK,WIDE
ICALL WINDEF,S-STATUS,1,SLEFT,SHIGH,WIDE
ADD SHIGH,BORDER-HEIGHT >SHIGH
?CND3: ADD 1,SHIGH >?TMP1
SUB HIGH,SHIGH
CALL WINDEF,S-TEXT,?TMP1,SLEFT,STACK,WIDE
RSTACK
.ENDSEG
.SEGMENT "0"
.FUNCT INIT-STATUS-LINE:ANY:0:1,NO-STS?,?TMP1
ICALL1 RESET-MARGIN
CLEAR S-TEXT
ZERO? NO-STS? \?CND1
ICALL1 SETUP-TEXT-AND-STATUS
?CND1: SCREEN S-STATUS
DIROUT D-TABLE-ON,DIROUT-TABLE
PRINTC 48
DIROUT D-TABLE-OFF
GET 0,24 >DIGIT-WIDTH
DIROUT D-TABLE-ON,DIROUT-TABLE
PRINTI "Score: "
DIROUT D-TABLE-OFF
GET 0,24 >?TMP1
MUL 4,DIGIT-WIDTH
ADD ?TMP1,STACK
ADD STACK,SCORE-MARGIN >SCORE-START
ICALL1 INVERSE-COLOR
CLEAR S-STATUS
CALL2 UPDATE-STATUS-LINE,TRUE-VALUE
RSTACK
.FUNCT UPDATE-STATUS-LINE:ANY:0:1,REF?,WIDE,TMP,LEFT,?TMP1
GET 0,8
BTST STACK,4 \?CND1
ICALL1 DISPLAY-BORDER
?CND1: GET 0,8
BTST STACK,4 /?CCL4
EQUAL? HERE,SHERE /?CND3
?CCL4: SET 'REF?,TRUE-VALUE
?CND3: ZERO? REF? \?CCL9
EQUAL? SCORE,OSCORE \?CCL9
EQUAL? MOVES,OMOVES /FALSE
?CCL9: SCREEN S-STATUS
ICALL1 INVERSE-COLOR
WINGET S-STATUS,WWIDE
DIV STACK,FONT-X >WIDE
EQUAL? MACHINE,APPLE-2E,APPLE-2C,APPLE-2GS /?CTR14
EQUAL? MACHINE,IBM,AMIGA \?CCL15
?CTR14: SET 'LEFT,3
JUMP ?CND13
?CCL15: SET 'LEFT,1
?CND13: ZERO? REF? /?CND18
CURSET 1,LEFT
ICALL2 XERASE,1
ZERO? SCENE /?CND20
CURSET 1,LEFT
GET SCENE-NAMES,SCENE
PRINT STACK
PRINTC 58
?CND20: EQUAL? MACHINE,DEBUGGING-ZIP,MACINTOSH /?CND22
WINGET S-STATUS,WWIDE
DIV STACK,2 >?TMP1
MUL DIGIT-WIDTH,3
SUB ?TMP1,STACK
CURSET 1,STACK
PRINTI "SHOGUN"
?CND22: GET 0,8
BAND STACK,-5
PUT 0,8,STACK
?CND18: ZERO? REF? \?CCL25
EQUAL? SCENE,S-ERASMUS \?PRD28
EQUAL? HERE,BRIDGE-OF-ERASMUS /?CCL25
?PRD28: EQUAL? SCENE,S-VOYAGE \?CND24
EQUAL? HERE,GALLEY \?CND24
?CCL25: ZERO? REF? /?CND33
ADD 1,FONT-Y
CURSET STACK,LEFT
ICALL2 XERASE,1
?CND33: ZERO? HERE /?CND24
ADD 1,FONT-Y
CURSET STACK,LEFT
SET 'SHERE,HERE
EQUAL? HERE,GALLEY \?CCL39
EQUAL? MACHINE,APPLE-2E,APPLE-2C,APPLE-2GS /?CTR38
EQUAL? MACHINE,AMIGA \?CCL39
?CTR38: PRINTI "Galley"
JUMP ?CND37
?CCL39: PRINTD HERE
?CND37: LOC WINNER >TMP
FSET? TMP,VEHBIT \?CND44
SET 'SHERE,TMP
FSET? TMP,SURFACEBIT \?CCL48
PRINTI ", on "
JUMP ?CND46
?CCL48: PRINTI ", in "
?CND46: ICALL2 THE-PRINT,TMP
?CND44: EQUAL? HERE,BRIDGE-OF-ERASMUS,GALLEY \?CND24
ADD SCORE-START,FONT-X
ICALL2 ERASE-ALL-BUT,STACK
EQUAL? HERE,BRIDGE-OF-ERASMUS \?PRD54
FSET? WHEEL,ONBIT /?CCL52
?PRD54: EQUAL? HERE,GALLEY \?CND24
FSET? GALLEY-WHEEL,ONBIT \?CND24
?CCL52: PRINTI "; course "
ICALL2 TELL-DIRECTION,SHIP-DIRECTION
PRINTI "; wheel "
ICALL2 TELL-DIRECTION,SHIP-COURSE
?CND24: ZERO? REF? \?CCL60
EQUAL? SCORE,OSCORE /?CND59
?CCL60: ZERO? REF? /?CND63
WINGET S-STATUS,WWIDE
SUB STACK,SCORE-START
CURSET 1,STACK
PRINTI "Score:"
ICALL2 XERASE,1
?CND63: MUL SCORE,SCORE-FACTOR >TMP
ICALL RJNUM,TMP,1
SET 'OSCORE,SCORE
?CND59: ZERO? REF? \?CCL66
EQUAL? MOVES,OMOVES /?CND65
?CCL66: ZERO? REF? /?CND69
ADD 1,FONT-Y >?TMP1
WINGET S-STATUS,WWIDE
SUB STACK,SCORE-START
CURSET ?TMP1,STACK
PRINTI "Moves:"
ICALL2 XERASE,1
?CND69: ICALL RJNUM,MOVES,2
SET 'OMOVES,MOVES
?CND65: SCREEN S-TEXT
RTRUE
.FUNCT ERASE-ALL-BUT:ANY:1:1,N,?TMP1
WINGET S-STATUS,WWIDE >?TMP1
WINGET S-STATUS,WXPOS
SUB ?TMP1,STACK
SUB STACK,N >N
GRTR? N,1 \FALSE
CALL2 XERASE,N
RSTACK
.FUNCT INTERLUDE-STATUS-LINE:ANY:0:0,LEFT,?TMP1
EQUAL? MACHINE,APPLE-2E,APPLE-2C,APPLE-2GS /?CND1
PICINF P-BORDER2,YX-TBL \?CCL5
ICALL2 DISPLAY-BORDER,P-BORDER2
JUMP ?CND1
?CCL5: PICINF P-BORDER,YX-TBL \?CND1
ICALL2 DISPLAY-BORDER,P-BORDER
?CND1: EQUAL? MACHINE,APPLE-2E,APPLE-2C,APPLE-2GS /?CTR8
EQUAL? MACHINE,IBM,AMIGA \?CCL9
?CTR8: SET 'LEFT,3
JUMP ?CND7
?CCL9: SET 'LEFT,1
?CND7: SET 'SHERE,FALSE-VALUE
SCREEN S-STATUS
ICALL1 INVERSE-COLOR
CURSET 1,LEFT
ADD SCORE-START,FONT-X
ICALL2 ERASE-ALL-BUT,STACK
CURSET 1,LEFT
GET SCENE-NAMES,SCENE
PRINT STACK
PRINTC 58
EQUAL? MACHINE,DEBUGGING-ZIP,MACINTOSH /?CND12
WINGET S-STATUS,WWIDE
DIV STACK,2 >?TMP1
MUL DIGIT-WIDTH,3
SUB ?TMP1,STACK
CURSET 1,STACK
PRINTI "SHOGUN"
?CND12: GET 0,8
BAND STACK,-5
PUT 0,8,STACK
ADD 1,FONT-Y
CURSET STACK,LEFT
ADD SCORE-START,FONT-X
ICALL2 ERASE-ALL-BUT,STACK
ADD 1,FONT-Y
CURSET STACK,LEFT
PRINTI "Interlude"
SCREEN S-TEXT
RTRUE
.FUNCT RJNUM:ANY:2:2,NUM,LINE,WIDE,N
WINGET S-STATUS,WWIDE >WIDE
SUB LINE,1
MUL STACK,FONT-Y
ADD 1,STACK >LINE
SUB WIDE,SCORE-MARGIN >WIDE
LESS? NUM,10 \?CCL3
SET 'N,1
JUMP ?CND1
?CCL3: LESS? NUM,100 \?CCL5
SET 'N,2
JUMP ?CND1
?CCL5: LESS? NUM,1000 \?CCL7
SET 'N,3
JUMP ?CND1
?CCL7: LESS? NUM,10000 \?CND1
SET 'N,4
?CND1: LESS? N,4 \?CND9
MUL DIGIT-WIDTH,4
SUB WIDE,STACK
CURSET LINE,STACK
?CND9: ICALL2 XERASE,1
MUL DIGIT-WIDTH,N
SUB WIDE,STACK
CURSET LINE,STACK
ZERO? N /?CCL13
PRINTN NUM
RTRUE
?CCL13: PRINTI "****"
RTRUE
.ENDSEG
.ENDI