mirror of
https://github.com/historicalsource/journey
synced 2024-04-26 22:19:32 +03:00
367 lines
7 KiB
Plaintext
367 lines
7 KiB
Plaintext
|
|
.SEGMENT "0"
|
|
|
|
|
|
.FUNCT CHANGE-FONT:ANY:1:1,F
|
|
EQUAL? F,3 \?CCL3
|
|
ZERO? FONT3-FLAG /?CCL6
|
|
FONT 3
|
|
RSTACK
|
|
?CCL6: FONT 1
|
|
RSTACK
|
|
?CCL3: EQUAL? F,4 \FALSE
|
|
ZERO? FWC-FLAG /?CCL11
|
|
FONT 4
|
|
RSTACK
|
|
?CCL11: FONT 1
|
|
RSTACK
|
|
|
|
|
|
.FUNCT GPOS:ANY:2:2,C,F
|
|
EQUAL? F,1 \?CCL3
|
|
RETURN C
|
|
?CCL3: SUB C,1
|
|
MUL STACK,F
|
|
ADD STACK,1
|
|
RSTACK
|
|
|
|
|
|
.FUNCT MAKE-WINDOW:ANY:5:6,N,YL,XL,YS,XS,B,?TMP1
|
|
ASSIGNED? 'B /?CND1
|
|
SET 'B,15
|
|
?CND1: CALL GPOS,YL,CHRV >?TMP1
|
|
CALL GPOS,XL,CHRH
|
|
WINPOS N,?TMP1,STACK
|
|
MUL YS,CHRV >?TMP1
|
|
MUL XS,CHRH
|
|
WINSIZE N,?TMP1,STACK
|
|
WINATTR N,B
|
|
RETURN N
|
|
|
|
|
|
.FUNCT GCURSET:ANY:2:2,YL,XL,?TMP1
|
|
ZERO? CURRENT-SCREEN \?CND1
|
|
ICALL2 SELECT-SCREEN,COMMAND-WINDOW
|
|
?CND1: CALL GPOS,YL,CHRV >?TMP1
|
|
CALL GPOS,XL,CHRH
|
|
CURSET ?TMP1,STACK
|
|
RTRUE
|
|
|
|
|
|
.FUNCT WPRINTCHR:ANY:1:1,CHR
|
|
FSET? CHR,IN-PARTY \?CCL3
|
|
CALL2 WPRINTD,CHR
|
|
RSTACK
|
|
?CCL3: PRINTI "[Error: "
|
|
ICALL2 WPRINTD,CHR
|
|
PRINTC 93
|
|
RTRUE
|
|
|
|
|
|
.FUNCT PICK-ONE:ANY:1:1,TBL,LENGTH,CNT,RND,MSG,RFROB
|
|
GET TBL,0 >LENGTH
|
|
GET TBL,1 >CNT
|
|
DEC 'LENGTH
|
|
ADD TBL,2 >TBL
|
|
MUL CNT,2
|
|
ADD TBL,STACK >RFROB
|
|
SUB LENGTH,CNT
|
|
RANDOM STACK >RND
|
|
GET RFROB,RND >MSG
|
|
GET RFROB,1
|
|
PUT RFROB,RND,STACK
|
|
PUT RFROB,1,MSG
|
|
INC 'CNT
|
|
EQUAL? CNT,LENGTH \?CND1
|
|
SET 'CNT,0
|
|
?CND1: PUT TBL,0,CNT
|
|
RETURN MSG
|
|
|
|
|
|
.FUNCT SETUP-WINDOWS:ANY:0:0,PW,PH,OFF,GOOD?,?TMP1
|
|
SET 'PW,BASE-PICTURE-WIDTH
|
|
SET 'PH,BASE-PICTURE-HEIGHT
|
|
SET 'OFF,6
|
|
CALL1 APPLE2?
|
|
ZERO? STACK /?CTR2
|
|
ZERO? BASE-PICTURE-HEIGHT \?CCL3
|
|
?CTR2: PICINF 2,PICINF-TBL /?PRD8
|
|
PUSH 0
|
|
JUMP ?PRD9
|
|
?PRD8: PUSH 1
|
|
?PRD9: SET 'GOOD?,STACK
|
|
ZERO? GOOD? /?CND1
|
|
GET PICINF-TBL,0 >PH
|
|
GET PICINF-TBL,1 >PW
|
|
SET 'BASE-PICTURE-WIDTH,PW
|
|
SET 'BASE-PICTURE-HEIGHT,PH
|
|
JUMP ?CND1
|
|
?CCL3: SET 'GOOD?,TRUE-VALUE
|
|
?CND1: ZERO? GOOD? /?CCL12
|
|
CALL1 APPLE2?
|
|
ZERO? STACK \?CTR14
|
|
EQUAL? INTERPRETER,INT-PC \?CCL15
|
|
?CTR14: SET 'OFF,3
|
|
JUMP ?CND13
|
|
?CCL15: ZERO? BORDER-FLAG \?CND13
|
|
SET 'OFF,5
|
|
?CND13: ADD PW,CHRH
|
|
DIV STACK,CHRH
|
|
ADD OFF,STACK >TEXT-WINDOW-LEFT
|
|
JUMP ?CND10
|
|
?CCL12: SET 'TEXT-WINDOW-LEFT,INIT-TEXT-LEFT
|
|
?CND10: SUB COMMAND-START-LINE,TOP-SCREEN-LINE
|
|
SUB STACK,1 >?TMP1
|
|
SUB SCREEN-WIDTH,TEXT-WINDOW-LEFT
|
|
ICALL MAKE-WINDOW,TEXT-WINDOW,TOP-SCREEN-LINE,TEXT-WINDOW-LEFT,?TMP1,STACK
|
|
EQUAL? INTERPRETER,INT-PC \?CND19
|
|
MARGIN 4,0,TEXT-WINDOW
|
|
?CND19: ZERO? BORDER-FLAG /?CCL23
|
|
SUB COMMAND-START-LINE,3
|
|
MUL STACK,CHRV >GRAPHIC-WINDOW-Y
|
|
SUB TEXT-WINDOW-LEFT,3
|
|
MUL STACK,CHRH >GRAPHIC-WINDOW-X
|
|
JUMP ?CND21
|
|
?CCL23: SUB COMMAND-START-LINE,2
|
|
MUL STACK,CHRV >GRAPHIC-WINDOW-Y
|
|
SUB TEXT-WINDOW-LEFT,2
|
|
MUL STACK,CHRH >GRAPHIC-WINDOW-X
|
|
?CND21: ZERO? BORDER-FLAG /?CCL26
|
|
SUB COMMAND-START-LINE,3 >?TMP1
|
|
SUB TEXT-WINDOW-LEFT,3
|
|
ICALL MAKE-WINDOW,GRAPHICS-WINDOW,TOP-SCREEN-LINE,TOP-SCREEN-LINE,?TMP1,STACK,11
|
|
JUMP ?CND24
|
|
?CCL26: SUB COMMAND-START-LINE,2 >?TMP1
|
|
SUB TEXT-WINDOW-LEFT,2
|
|
ICALL MAKE-WINDOW,GRAPHICS-WINDOW,TOP-SCREEN-LINE,TOP-SCREEN-LINE,?TMP1,STACK,11
|
|
?CND24: ZERO? BLACK-PICTURE-BORDER /FALSE
|
|
SCREEN GRAPHICS-WINDOW
|
|
COLOR 9,2
|
|
CLEAR GRAPHICS-WINDOW
|
|
RTRUE
|
|
|
|
|
|
.FUNCT WPRINTTAG:ANY:0:0
|
|
GRTR? TAG-NAME-LENGTH,0 \?CCL3
|
|
ADD NAME-TBL,2
|
|
PRINTT STACK,TAG-NAME-LENGTH
|
|
RTRUE
|
|
?CCL3: CALL2 PRINT-DESC,TAG
|
|
RSTACK
|
|
|
|
|
|
.FUNCT WPRINTD:ANY:1:2,OBJ,A
|
|
CALL2 PRINT-DESC,OBJ
|
|
RSTACK
|
|
|
|
|
|
.FUNCT WCENTER:ANY:1:1,STR,WID,SWID
|
|
CALL2 TEXT-WIDTH,STR >WID
|
|
SUB SCREEN-WIDTH,TEXT-WINDOW-LEFT
|
|
MUL STACK,CHRH >SWID
|
|
LESS? WID,SWID \?CCL3
|
|
SUB SWID,WID
|
|
DIV STACK,2
|
|
ADD 1,STACK >SWID
|
|
JUMP ?CND1
|
|
?CCL3: SET 'SWID,1
|
|
?CND1: CURGET CURGET-TABLE
|
|
GET CURGET-TABLE,0
|
|
CURSET STACK,SWID
|
|
GET CENTER-TABLE,0
|
|
PRINTT CENTER-TABLE+2,STACK
|
|
RTRUE
|
|
|
|
|
|
.FUNCT GRAPHIC-STAMP:ANY:2:4,PIC,WHERE,V,H,CURH,CURW,TOP,LEFT,NEWH,NEWW
|
|
GET PICINF-TBL,0 >CURH
|
|
GET PICINF-TBL,1 >CURW
|
|
SUB GRAPHIC-WINDOW-Y,CURH
|
|
DIV STACK,2
|
|
ADD STACK,1 >TOP
|
|
SUB GRAPHIC-WINDOW-X,CURW
|
|
DIV STACK,2
|
|
ADD STACK,1 >LEFT
|
|
ZERO? WHERE \?CCL3
|
|
ASSIGNED? 'V \?CCL3
|
|
ASSIGNED? 'H \?CCL3
|
|
ADD TOP,V >TOP
|
|
ADD LEFT,H >LEFT
|
|
JUMP ?CND1
|
|
?CCL3: GRTR? WHERE,0 \?CCL8
|
|
PICINF WHERE,PICINF-TBL /?BOGUS9
|
|
?BOGUS9: GET PICINF-TBL,1
|
|
ADD STACK,LEFT >LEFT
|
|
GET PICINF-TBL,0
|
|
ADD STACK,TOP >TOP
|
|
JUMP ?CND1
|
|
?CCL8: PICINF PIC,PICINF-TBL /?BOGUS10
|
|
?BOGUS10: GET PICINF-TBL,0 >NEWH
|
|
GET PICINF-TBL,1 >NEWW
|
|
BAND WHERE,STAMP-RIGHT
|
|
ZERO? STACK /?CND11
|
|
SUB CURW,NEWW
|
|
ADD LEFT,STACK >LEFT
|
|
?CND11: BAND WHERE,STAMP-BOTTOM
|
|
ZERO? STACK /?CND1
|
|
SUB CURH,NEWH
|
|
ADD TOP,STACK >TOP
|
|
?CND1: DISPLAY PIC,TOP,LEFT
|
|
RTRUE
|
|
|
|
|
|
.FUNCT GRAPHIC:ANY:0:3,STR,STAMP,WHERE,?TMP1
|
|
ZERO? GRAPHICS-FLAG /TRUE
|
|
EQUAL? STR,CURRENT-GRAPHIC /TRUE
|
|
ZERO? STR \?CCL7
|
|
ZERO? STAMP \?CCL7
|
|
SET 'STR,CURRENT-GRAPHIC
|
|
EQUAL? STR,-1 \?CCL12
|
|
ICALL1 CAVERN-GRAPHIC
|
|
JUMP ?CND5
|
|
?CCL12: SET 'STAMP,CURRENT-STAMP
|
|
SET 'WHERE,CURRENT-STAMP-LOC
|
|
JUMP ?CND5
|
|
?CCL7: ZERO? STR /?CND5
|
|
SET 'CURRENT-GRAPHIC,STR
|
|
?CND5: SCREEN GRAPHICS-WINDOW
|
|
ZERO? STR /?CND14
|
|
CLEAR GRAPHICS-WINDOW
|
|
?CND14: ZERO? STR /?CND16
|
|
EQUAL? STR,-1 /?CND16
|
|
GRTR? STR,0 \?CCL22
|
|
LESS? STR,255 \?CCL22
|
|
PICINF STR,PICINF-TBL \?CND16
|
|
GET PICINF-TBL,0
|
|
SUB GRAPHIC-WINDOW-Y,STACK
|
|
DIV STACK,2
|
|
ADD STACK,1 >?TMP1
|
|
GET PICINF-TBL,1
|
|
SUB GRAPHIC-WINDOW-X,STACK
|
|
DIV STACK,2
|
|
ADD STACK,1
|
|
DISPLAY STR,?TMP1,STACK
|
|
JUMP ?CND16
|
|
?CCL22: PRINT STR
|
|
?CND16: ZERO? STAMP /?CCL29
|
|
SET 'CURRENT-STAMP,STAMP
|
|
SET 'CURRENT-STAMP-LOC,WHERE
|
|
GRTR? STAMP,255 \?CCL32
|
|
PRINT STAMP
|
|
JUMP ?CND27
|
|
?CCL32: PICINF CURRENT-GRAPHIC,PICINF-TBL \?CND27
|
|
ICALL GRAPHIC-STAMP,STAMP,WHERE
|
|
JUMP ?CND27
|
|
?CCL29: SET 'CURRENT-STAMP,FALSE-VALUE
|
|
?CND27: SCREEN TEXT-WINDOW
|
|
RTRUE
|
|
|
|
|
|
.FUNCT SELECT-SCREEN:ANY:1:1,N
|
|
SCREEN N
|
|
SET 'CURRENT-SCREEN,N
|
|
RETURN CURRENT-SCREEN
|
|
|
|
|
|
.FUNCT I/WE:ANY:0:2,N,CAPS?
|
|
ASSIGNED? 'N /?CND1
|
|
SET 'N,1
|
|
?CND1: GRTR? PARTY-MAX,N \?CCL5
|
|
ZERO? CAPS? /?CCL8
|
|
RETURN STR?1
|
|
?CCL8: RETURN STR?2
|
|
?CCL5: RETURN STR?3
|
|
|
|
|
|
.FUNCT I-WAS/WE-WERE:ANY:0:1,N
|
|
ASSIGNED? 'N /?CND1
|
|
SET 'N,1
|
|
?CND1: GRTR? PARTY-MAX,N \?CCL5
|
|
RETURN STR?4
|
|
?CCL5: RETURN STR?5
|
|
|
|
|
|
.FUNCT I/EACH:ANY:0:1,N
|
|
ASSIGNED? 'N /?CND1
|
|
SET 'N,1
|
|
?CND1: GRTR? PARTY-MAX,N \?CCL5
|
|
RETURN STR?6
|
|
?CCL5: RETURN STR?3
|
|
|
|
|
|
.FUNCT MY/OUR:ANY:0:1,N
|
|
ASSIGNED? 'N /?CND1
|
|
SET 'N,1
|
|
?CND1: GRTR? PARTY-MAX,N \?CCL5
|
|
RETURN STR?7
|
|
?CCL5: RETURN STR?8
|
|
|
|
|
|
.FUNCT ME/US:ANY:0:1,N
|
|
ASSIGNED? 'N /?CND1
|
|
SET 'N,1
|
|
?CND1: GRTR? PARTY-MAX,N \?CCL5
|
|
RETURN STR?9
|
|
?CCL5: RETURN STR?10
|
|
|
|
|
|
.FUNCT PRINT-DESC:ANY:1:2,OBJ,CMD?
|
|
EQUAL? OBJ,TAG-OBJECT,TAG \?CCL3
|
|
ZERO? TAG-NAME-LENGTH /?CCL3
|
|
ADD NAME-TBL,2
|
|
PRINTT STACK,TAG-NAME-LENGTH
|
|
RTRUE
|
|
?CCL3: ZERO? CMD? \?CCL7
|
|
GETP OBJ,P?SDESC
|
|
PRINT STACK
|
|
RTRUE
|
|
?CCL7: CALL2 GET-DESC,OBJ
|
|
PRINT STACK
|
|
RTRUE
|
|
|
|
|
|
.FUNCT GET-DESC:ANY:1:1,OBJ,STR
|
|
LESS? SCREEN-WIDTH,8-WIDTH \?CCL3
|
|
GETP OBJ,P?8DESC >STR
|
|
ZERO? STR /?CCL3
|
|
RETURN STR
|
|
?CCL3: LESS? SCREEN-WIDTH,12-WIDTH \?CCL7
|
|
GETP OBJ,P?12DESC >STR
|
|
ZERO? STR /?CCL7
|
|
RETURN STR
|
|
?CCL7: GETP OBJ,P?SDESC
|
|
RSTACK
|
|
|
|
|
|
.FUNCT PRINT-COMMAND:ANY:1:1,CMD
|
|
CALL2 GET-COMMAND,CMD
|
|
PRINT STACK
|
|
RTRUE
|
|
|
|
|
|
.FUNCT GET-COMMAND:ANY:1:1,CMD,STR
|
|
LESS? COMMAND-WIDTH,12 \?CCL3
|
|
GET CMD,COMMAND-ASTR >STR
|
|
ZERO? STR /?CCL3
|
|
RETURN STR
|
|
?CCL3: GET CMD,COMMAND-FULL
|
|
RSTACK
|
|
|
|
|
|
.FUNCT SINGLE-MOVE-GRAPHIC:ANY:1:1,G
|
|
SET 'SAVED-GRAPHIC,CURRENT-GRAPHIC
|
|
SET 'SAVED-GRAPHIC-ROOM,HERE
|
|
ICALL2 GRAPHIC,G
|
|
CALL QUEUE,I-CLEAR-SINGLE-MOVE-GRAPHIC,1
|
|
RSTACK
|
|
|
|
|
|
.FUNCT ANONF-1:ANY:0:0
|
|
EQUAL? HERE,SAVED-GRAPHIC-ROOM \FALSE
|
|
CALL2 GRAPHIC,SAVED-GRAPHIC
|
|
RSTACK
|
|
|
|
.ENDSEG
|
|
|
|
.ENDI
|