zork-german/tells.zap

238 lines
4.0 KiB
Plaintext

.FUNCT DO-CURSET:ANY:2:2,Y,X
EQUAL? 1,CWIDTH,CHEIGHT \?CCL3
CURSET Y,X
RFALSE
?CCL3: MUL X,CWIDTH >X
MUL Y,CHEIGHT
CURSET STACK,X
RFALSE
.FUNCT DPRINT:ANY:2:2,OBJ,CASE
GETP OBJ,P?ADJDESC
ZERO? STACK /?CND1
GETP OBJ,P?ADJDESC
PRINT STACK
EQUAL? CASE,W?DER,W?DEN,W?DEM \?CCL5
EQUAL? CASE,W?DER /?CTR7
EQUAL? CASE,W?DEN \?CCL8
FSET? OBJ,DERBIT /?CCL8
?CTR7: PRINTC 101
JUMP ?CND3
?CCL8: PRINTI "en"
JUMP ?CND3
?CCL5: FSET? OBJ,DERBIT \?CCL14
PRINTI "er"
JUMP ?CND3
?CCL14: FSET? OBJ,DASBIT \?CCL16
EQUAL? CASE,W?EINEM /?CCL16
PRINTI "es"
JUMP ?CND3
?CCL16: FSET? OBJ,DIEBIT \?CCL20
EQUAL? CASE,W?EINEM \?CCL20
PRINTC 101
JUMP ?CND3
?CCL20: PRINTI "en"
?CND3: PRINTC 32
?CND1: PRINTD OBJ
RTRUE
.FUNCT DER-NOM-PRINT:ANY:1:1,OBJ
FSET? OBJ,DERBIT \?CCL3
PRINTI "der "
JUMP ?CND1
?CCL3: FSET? OBJ,DIEBIT \?CCL5
PRINTI "die "
JUMP ?CND1
?CCL5: FSET? OBJ,DASBIT \?CND1
PRINTI "das "
?CND1: CALL DPRINT,OBJ,W?DER
RSTACK
.FUNCT DER-NOM-CAP-PRINT:ANY:1:1,OBJ
FSET? OBJ,DERBIT \?CCL3
PRINTI "Der "
JUMP ?CND1
?CCL3: FSET? OBJ,DIEBIT \?CCL5
PRINTI "Die "
JUMP ?CND1
?CCL5: FSET? OBJ,DASBIT \?CND1
PRINTI "Das "
?CND1: CALL DPRINT,OBJ,W?DER
RSTACK
.FUNCT DER-ACC-PRINT:ANY:1:1,OBJ
FSET? OBJ,DERBIT \?CCL3
PRINTI "den "
JUMP ?CND1
?CCL3: FSET? OBJ,DIEBIT \?CCL5
PRINTI "die "
JUMP ?CND1
?CCL5: FSET? OBJ,DASBIT \?CND1
PRINTI "das "
?CND1: CALL DPRINT,OBJ,W?DEN
RSTACK
.FUNCT DER-ACC-CAP-PRINT:ANY:1:1,OBJ
FSET? OBJ,DERBIT \?CCL3
PRINTI "Den "
JUMP ?CND1
?CCL3: FSET? OBJ,DIEBIT \?CCL5
PRINTI "Die "
JUMP ?CND1
?CCL5: FSET? OBJ,DASBIT \?CND1
PRINTI "Das "
?CND1: CALL DPRINT,OBJ,W?DEN
RSTACK
.FUNCT DER-DAT-PRINT:ANY:1:1,OBJ
FSET? OBJ,DERBIT /?CTR2
FSET? OBJ,DASBIT \?CCL3
?CTR2: PRINTI "dem "
JUMP ?CND1
?CCL3: FSET? OBJ,DIEBIT \?CND1
PRINTI "der "
?CND1: CALL DPRINT,OBJ,W?DEM
RSTACK
.FUNCT EIN-NOM-PRINT:ANY:1:1,OBJ
FSET? OBJ,DERBIT /?CTR2
FSET? OBJ,DASBIT \?CCL3
?CTR2: PRINTI "ein "
JUMP ?CND1
?CCL3: FSET? OBJ,DIEBIT \?CND1
PRINTI "eine "
?CND1: CALL DPRINT,OBJ,W?EIN
RSTACK
.FUNCT EIN-NOM-CAP-PRINT:ANY:1:1,OBJ
FSET? OBJ,DASBIT /?CTR2
FSET? OBJ,DERBIT \?CCL3
?CTR2: PRINTI "Ein "
JUMP ?CND1
?CCL3: FSET? OBJ,DIEBIT \?CND1
PRINTI "Eine "
?CND1: CALL DPRINT,OBJ,W?EIN
RSTACK
.FUNCT EIN-ACC-PRINT:ANY:1:1,OBJ
FSET? OBJ,DERBIT \?CCL3
PRINTI "einen "
JUMP ?CND1
?CCL3: FSET? OBJ,DIEBIT \?CCL5
PRINTI "eine "
JUMP ?CND1
?CCL5: FSET? OBJ,DASBIT \?CND1
PRINTI "ein "
?CND1: CALL DPRINT,OBJ,W?EINEN
RSTACK
.FUNCT EIN-ACC-CAP-PRINT:ANY:1:1,OBJ
FSET? OBJ,DERBIT \?CCL3
PRINTI "Einen "
JUMP ?CND1
?CCL3: FSET? OBJ,DIEBIT \?CCL5
PRINTI "Eine "
JUMP ?CND1
?CCL5: FSET? OBJ,DASBIT \?CND1
PRINTI "Ein "
?CND1: CALL DPRINT,OBJ,W?EINEN
RSTACK
.FUNCT EIN-DAT-PRINT:ANY:1:1,OBJ
FSET? OBJ,DERBIT /?CTR2
FSET? OBJ,DASBIT \?CCL3
?CTR2: PRINTI "einem "
JUMP ?CND1
?CCL3: FSET? OBJ,DIEBIT \?CND1
PRINTI "einer "
?CND1: CALL DPRINT,OBJ,W?EINEM
RSTACK
.FUNCT PRONOUN-NOM-PRINT:ANY:1:1,OBJ
FSET? OBJ,DERBIT \?CCL3
PRINTI "er"
RTRUE
?CCL3: FSET? OBJ,DASBIT \?CCL5
PRINTI "es"
RTRUE
?CCL5: FSET? OBJ,DIEBIT \?CCL7
PRINTI "sie"
RTRUE
?CCL7: PRINTI "es"
RTRUE
.FUNCT PRONOUN-NOM-CAP-PRINT:ANY:1:1,OBJ
FSET? OBJ,DERBIT \?CCL3
PRINTI "Er"
RTRUE
?CCL3: FSET? OBJ,DIEBIT \?CCL5
PRINTI "Sie"
RTRUE
?CCL5: PRINTI "Es"
RTRUE
.FUNCT PRONOUN-ACC-PRINT:ANY:1:1,OBJ
FSET? OBJ,DERBIT \?CCL3
PRINTI "ihn"
RTRUE
?CCL3: FSET? OBJ,DIEBIT \?CCL5
PRINTI "sie"
RTRUE
?CCL5: PRINTI "es"
RTRUE
.FUNCT ZPROB:ANY:1:1,BASE
ZERO? LUCKY /?CCL3
RANDOM 100
GRTR? BASE,STACK /TRUE
RFALSE
?CCL3: RANDOM 300
GRTR? BASE,STACK /TRUE
RFALSE
.FUNCT RANDOM-ELEMENT:ANY:1:1,FROB
GET FROB,0
RANDOM STACK
GET FROB,STACK
RSTACK
.FUNCT PICK-ONE:ANY:1:1,FROB,L,CNT,RND,MSG,RFROB
GET FROB,0 >L
GET FROB,1 >CNT
DEC 'L
ADD FROB,2 >FROB
MUL CNT,2
ADD FROB,STACK >RFROB
SUB L,CNT
RANDOM STACK >RND
GET RFROB,RND >MSG
GET RFROB,1
PUT RFROB,RND,STACK
PUT RFROB,1,MSG
INC 'CNT
EQUAL? CNT,L \?CND1
SET 'CNT,0
?CND1: PUT FROB,0,CNT
RETURN MSG
.ENDI