274 lines
5.2 KiB
Plaintext
274 lines
5.2 KiB
Plaintext
;"***************************************************************************"
|
|
; "game : Abyss"
|
|
; "file : MACROS.ZIL"
|
|
; "auth : $Author: DEB $"
|
|
; "date : $Date: 07 Mar 1989 2:29:28 $"
|
|
; "rev : $Revision: 1.3 $"
|
|
; "vers : 1.0"
|
|
;"---------------------------------------------------------------------------"
|
|
; "Macro definition file"
|
|
; "Copyright (C) 1988 Infocom, Inc. All rights reserved."
|
|
;"***************************************************************************"
|
|
|
|
<CONSTANT M-ENTERED 42>
|
|
<CONSTANT M-F-LOOK 43>
|
|
<CONSTANT M-V-LOOK 44>
|
|
<CONSTANT M-B-LOOK 45>
|
|
<CONSTANT M-END-LOOK 46>
|
|
|
|
<CONSTANT K-W-YPOS 0>
|
|
<CONSTANT K-W-XPOS 1>
|
|
<CONSTANT K-W-YSIZE 2>
|
|
<CONSTANT K-W-XSIZE 3>
|
|
<CONSTANT K-W-YCURPOS 4>
|
|
<CONSTANT K-W-XCURPOS 5>
|
|
<CONSTANT K-W-LMARG 6>
|
|
<CONSTANT K-W-RMARG 7>
|
|
<CONSTANT K-W-CRFCN 8>
|
|
<CONSTANT K-W-CRCNT 9>
|
|
<CONSTANT K-W-HLIGHT 10>
|
|
<CONSTANT K-W-COLOR 11>
|
|
<CONSTANT K-W-FONT 12>
|
|
<CONSTANT K-W-FONTSIZE 13>
|
|
<CONSTANT K-W-ATTR 14>
|
|
<CONSTANT K-W-MORE 15>
|
|
|
|
<CONSTANT TAB 9>
|
|
<CONSTANT LF 10>
|
|
<CONSTANT CR 13>
|
|
<CONSTANT ESC 27>
|
|
<CONSTANT ESCAPE 27>
|
|
|
|
<CONSTANT M-EXIT ,M-LEAVE>
|
|
|
|
<CONSTANT K-S-NOR ,S-TEXT>
|
|
<CONSTANT K-S-WIN ,S-WINDOW>
|
|
|
|
<CONSTANT K-H-NRM ,H-NORMAL>
|
|
<CONSTANT K-H-INV ,H-INVERSE>
|
|
<CONSTANT K-H-BLD ,H-BOLD>
|
|
<CONSTANT K-H-ITL ,H-ITALIC>
|
|
|
|
<CONSTANT K-D-SCR-ON ,D-SCREEN-ON>
|
|
<CONSTANT K-D-SCR-OFF ,D-SCREEN-OFF>
|
|
<CONSTANT K-D-PRT-ON ,D-PRINTER-ON>
|
|
<CONSTANT K-D-PRT-OFF ,D-PRINTER-OFF>
|
|
<CONSTANT K-D-TBL-ON ,D-TABLE-ON>
|
|
<CONSTANT K-D-TBL-OFF ,D-TABLE-OFF>
|
|
<CONSTANT K-D-REC-ON ,D-RECORD-ON>
|
|
<CONSTANT K-D-REC-OFF ,D-RECORD-OFF>
|
|
|
|
<DEFMAC ONE? ('TERM)
|
|
<FORM EQUAL? .TERM 1 T>
|
|
>
|
|
|
|
<DEFMAC MC-IS? ('OBJ 'FLAG)
|
|
<FORM FSET? .OBJ .FLAG>
|
|
>
|
|
|
|
<DEFMAC MC-ISNOT? ('OBJ 'FLAG)
|
|
<FORM NOT <FORM FSET? .OBJ .FLAG>>
|
|
>
|
|
|
|
<DEFMAC MC-MAKE ('OBJ 'FLAG)
|
|
<FORM FSET .OBJ .FLAG>
|
|
>
|
|
|
|
<DEFMAC MC-UNMAKE ('OBJ 'FLAG)
|
|
<FORM FCLEAR .OBJ .FLAG>
|
|
>
|
|
|
|
<DEFMAC MC-T? ('TERM)
|
|
<FORM .TERM>
|
|
>
|
|
|
|
<DEFMAC MC-F? ('TERM)
|
|
<FORM NOT .TERM>
|
|
>
|
|
|
|
<DEFMAC MC-THIS-WINNER? ()
|
|
<FORM EQUAL? '.CONTEXT ',M-WINNER>
|
|
>
|
|
|
|
<DEFMAC MC-CONTEXT? ("ARGS" L)
|
|
<FORM EQUAL? '.CONTEXT !.L>
|
|
>
|
|
|
|
<DEFMAC MC-WINNER? ("ARGS" L)
|
|
<FORM EQUAL? ',WINNER !.L>
|
|
>
|
|
|
|
<DEFMAC PROB ('BASE)
|
|
<FORM NOT <FORM L? .BASE '<RANDOM 100>>>
|
|
>
|
|
|
|
<DEFMAC MC-PROB? ('BASE)
|
|
<FORM PROB .BASE>
|
|
>
|
|
|
|
<DEFMAC MC-ABS ('NUM)
|
|
<FORM ABS .NUM>
|
|
>
|
|
|
|
<DEFMAC RT-PERFORM ("ARGS" L)
|
|
<FORM PERFORM !.L>
|
|
>
|
|
|
|
<DEFMAC RT-ACCESSIBLE? ("ARGS" L)
|
|
<FORM ACCESSIBLE? !.L>
|
|
>
|
|
|
|
<DEFMAC RT-VISIBLE? ("ARGS" L)
|
|
<FORM VISIBLE? !.L>
|
|
>
|
|
|
|
<DEFMAC MC-VERB? ("ARGS" L)
|
|
<FORM VERB? !.L>
|
|
>
|
|
|
|
<DEFMAC MC-VERB-WORD? ("ARGS" L)
|
|
<FORM EQUAL? ',P-PRSA-WORD !.L>
|
|
>
|
|
|
|
<DEFMAC VERB-WORD? ("ARGS" L)
|
|
<FORM EQUAL? ',P-PRSA-WORD !.L>
|
|
>
|
|
|
|
<DEFMAC MC-PRSO? ("ARGS" L)
|
|
<FORM EQUAL? ',PRSO !.L>
|
|
>
|
|
|
|
<DEFMAC MC-PRSI? ("ARGS" L)
|
|
<FORM EQUAL? ',PRSI !.L>
|
|
>
|
|
|
|
<DEFMAC MC-HERE? ("ARGS" L)
|
|
<FORM EQUAL? ',HERE !.L>
|
|
>
|
|
|
|
<DEFMAC RT-GLOBAL-IN? ("ARGS" L)
|
|
<FORM GLOBAL-IN? !.L>
|
|
>
|
|
|
|
<DEFMAC RT-PICK-ONE ("ARGS" L)
|
|
<FORM PICK-ONE !.L>
|
|
>
|
|
|
|
<VERSION?
|
|
(ZIP
|
|
<DEFMAC GET/B ('TBL 'PTR)
|
|
<FORM GETB .TBL .PTR>
|
|
>
|
|
<DEFMAC PUT/B ('TBL 'PTR 'OBJ)
|
|
<FORM PUTB .TBL .PTR .OBJ>
|
|
>
|
|
<DEFMAC RMGL-SIZE ('TBL)
|
|
<FORM - <FORM PTSIZE .TBL> 1>
|
|
>
|
|
)
|
|
(T
|
|
<DEFMAC GET/B ('TBL 'PTR)
|
|
<FORM GET .TBL .PTR>
|
|
>
|
|
<DEFMAC PUT/B ('TBL 'PTR 'OBJ)
|
|
<FORM PUT .TBL .PTR .OBJ>
|
|
>
|
|
<DEFMAC RMGL-SIZE ('TBL)
|
|
<FORM - <FORM / <FORM PTSIZE .TBL> 2> 1>
|
|
>
|
|
)
|
|
>
|
|
|
|
;<DEFMAC BIT-FLAGS ("TUPLE" FLAGS "AUX" FLAG VAL (I 0) (L ()) (N 0) (B 0))
|
|
<REPEAT ()
|
|
<COND
|
|
(<EMPTY? .FLAGS>
|
|
<COND
|
|
(<G? .N 0>
|
|
<SET L (!.L .B)>
|
|
)
|
|
>
|
|
<RETURN!->
|
|
)
|
|
(T
|
|
<SET FLAG <NTH .FLAGS 1>>
|
|
<COND
|
|
(<TYPE? .FLAG ATOM>
|
|
<SET VAL <>>
|
|
)
|
|
(<AND <TYPE? .FLAG LIST>
|
|
<==? <LENGTH .FLAG> 2>
|
|
>
|
|
<SET VAL <NTH .FLAG 2>>
|
|
<SET FLAG <NTH .FLAG 1>>
|
|
)
|
|
(T
|
|
;"Warning message"
|
|
<WARN!-ZILCH!-PACKAGE!- "Unknown bit flag: " .FLAG>
|
|
)
|
|
>
|
|
<EVAL <FORM CONSTANT .FLAG .I>>
|
|
<COND
|
|
(.VAL
|
|
<SET B <ORB .B <LSH 1 .N>>>
|
|
)
|
|
>
|
|
<SET I <+ .I 1>>
|
|
<COND
|
|
(<G? <SET N <+ .N 1>> 7>
|
|
<SET L (!.L .B)>
|
|
<SET N 0>
|
|
<SET B 0>
|
|
)
|
|
>
|
|
<SET FLAGS <REST .FLAGS>>
|
|
)
|
|
>
|
|
>
|
|
|
|
<COND
|
|
(<G? <LENGTH .L> 0>
|
|
<EVAL <FORM CONSTANT BIT-FLAG-TBL <FORM TABLE (BYTE) !.L>>>
|
|
<EVAL
|
|
<FORM ROUTINE BIT-FLAG? (FLAG "AUX" N B)
|
|
<FORM SET N <FORM / '.FLAG 8>>
|
|
<FORM SET B <FORM LSH 1 <FORM MOD '.FLAG 8>>>
|
|
<FORM COND
|
|
(<FORM ANDB <FORM GETB ',BIT-FLAG-TBL '.N> '.B>
|
|
<FORM RTRUE>
|
|
)
|
|
>
|
|
>
|
|
>
|
|
<EVAL
|
|
<FORM ROUTINE BIT-FLAG-SET (FLAG "AUX" N B)
|
|
<FORM SET N <FORM / '.FLAG 8>>
|
|
<FORM SET B <FORM LSH 1 <FORM MOD '.FLAG 8>>>
|
|
<FORM PUTB ',BIT-FLAG-TBL '.N
|
|
<FORM ORB <FORM GETB ',BIT-FLAG-TBL '.N> '.B>
|
|
>
|
|
>
|
|
>
|
|
<EVAL
|
|
<FORM ROUTINE BIT-FLAG-CLEAR (FLAG "AUX" N B)
|
|
<FORM SET N <FORM / '.FLAG 8>>
|
|
<FORM SET B <FORM LSH 1 <FORM MOD '.FLAG 8>>>
|
|
<FORM PUTB ',BIT-FLAG-TBL '.N
|
|
<FORM ANDB <FORM GETB ',BIT-FLAG-TBL '.N> <FORM BCOM '.B>>
|
|
>
|
|
>
|
|
>
|
|
)
|
|
>
|
|
>
|
|
|
|
;<BIT-FLAGS
|
|
F-SCRUBBERS
|
|
F-HEATERS
|
|
>
|
|
|
|
;"***************************************************************************"
|
|
; "end of file"
|
|
;"***************************************************************************"
|
|
|