journey/output.zap
historicalsource 689e06b55f Final Revision
2019-04-14 16:35:30 -04:00

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