500 lines
13 KiB
Plaintext
500 lines
13 KiB
Plaintext
"INPUT for
|
||
ZORK ZERO
|
||
(c) Copyright 1988 Infocom, Inc. All Rights Reserved."
|
||
|
||
<BEGIN-SEGMENT 0>
|
||
|
||
<ROUTINE READ-INPUT ("AUX" TRM TMP N M FDEF DIR)
|
||
<PUTB ,P-INBUF 1 0>
|
||
<REPEAT ()
|
||
<COND (,DEMO-VERSION?
|
||
<SET TRM <READ-DEMO ,P-INBUF <>>>)
|
||
(T
|
||
<SET TRM <READ ,P-INBUF <>>>)>
|
||
<MOUSE-INPUT?>
|
||
<COND (<EQUAL? .TRM ,PAD0>
|
||
<SET TRM ,F10>)
|
||
(<AND <G=? .TRM ,PAD1>
|
||
<L=? .TRM ,PAD9>>
|
||
<SET TRM <+ ,F1 <- .TRM ,PAD1>>>)>
|
||
<COND (<EQUAL? .TRM ,CLICK1 ,CLICK2>
|
||
<COND (<SET DIR <COMPASS-CLICK ,COMPASS-PIC-LOC ,N-HL>>
|
||
;<SET TMP <COND (<EQUAL? .DIR ,P?NORTH ,P?SOUTH> 5)
|
||
(<EQUAL? .DIR ,P?WEST ,P?EAST> 4)
|
||
(T 9)>>
|
||
<DIROUT ,D-TABLE-ON ,O-INBUF>
|
||
<TELL <DIR-TO-STRING .DIR>>
|
||
<DIROUT ,D-TABLE-OFF>
|
||
<PUTB ,O-INBUF 0 ,INBUF-LENGTH>
|
||
<ADD-TO-INPUT <REST ,O-INBUF 1> 13 <GETB ,O-INBUF 1>>
|
||
<RETURN>)>)
|
||
(<EQUAL? .TRM 13 10>
|
||
<RETURN>)
|
||
(<AND <SET TMP
|
||
<INTBL? .TRM <REST ,FKEYS 2> <GET ,FKEYS 0>>>
|
||
<SET FDEF <GET .TMP 1>>> ;"key def"
|
||
<SET TRM <ADD-TO-INPUT <REST .FDEF> .TRM <GETB .FDEF 1>>>
|
||
<COND (<EQUAL? .TRM 13 10> <RETURN>)>)
|
||
(T
|
||
<SOUND ,S-BEEP>)>>
|
||
<SCRIPT-INBUF>
|
||
<LEX ,P-INBUF ,P-LEXV>>
|
||
|
||
<ROUTINE ADD-TO-INPUT (FDEF TRM M "AUX" N TMP)
|
||
;<SET M <GETB .FDEF 1>> ;"number chars in def"
|
||
<SET N <GETB ,P-INBUF 1>> ;"number chars already"
|
||
;<SET FDEF <REST .FDEF>>
|
||
<COND (<EQUAL? <GETB .FDEF .M> 13 10>
|
||
<SET TRM 13> ;"this def is a terminator"
|
||
<SET M <- .M 1>>)>
|
||
<SET FDEF <REST .FDEF>>
|
||
<SET TMP <REST ,P-INBUF <+ .N 2>>>
|
||
<COND (<G=? <+ .M .N> <GETB ,P-INBUF 0>> ;"overflowed input buffer"
|
||
<SOUND 1>
|
||
<SET M <- <GETB ,P-INBUF 0> .N 1>>)>
|
||
<COPYT .FDEF .TMP .M>
|
||
<PUTB .TMP .M 0>
|
||
<WINATTR -3 ,A-SCRIPT ,O-CLEAR>
|
||
<PRINTT .FDEF .M>
|
||
<PUTB ,P-INBUF 1 <+ .N .M>>
|
||
<COND (<EQUAL? .TRM 13 10>
|
||
<CRLF>)>
|
||
<WINATTR -3 ,A-SCRIPT ,O-SET>
|
||
.TRM>
|
||
|
||
<ROUTINE SCRIPT-INBUF ("AUX" BUF (CNT 0) (N <GETB ,P-INBUF 1>) CHR)
|
||
<DIROUT ,D-SCREEN-OFF>
|
||
<SET BUF <REST ,P-INBUF>>
|
||
<REPEAT ()
|
||
<COND (<IGRTR? CNT .N> <RETURN>)
|
||
(ELSE
|
||
<SET CHR <GETB .BUF .CNT>>
|
||
<COND (<AND <G=? .CHR !\a>
|
||
<L=? .CHR !\z>>
|
||
<PRINTC <- .CHR 32>>)
|
||
(ELSE <PRINTC .CHR>)>)>>
|
||
<CRLF>
|
||
<DIROUT ,D-SCREEN-ON>>
|
||
|
||
<GLOBAL WIDTH 80>
|
||
|
||
<CONSTANT TCHARS <TABLE (BYTE) 255 0>>
|
||
|
||
<END-SEGMENT>
|
||
|
||
;"function key stuff"
|
||
|
||
<BEGIN-SEGMENT SOFT>
|
||
|
||
<CONSTANT DIROUT-TABLE <ITABLE 80 <BYTE 0>>>
|
||
|
||
<ROUTINE PRINT-CENTER-TABLE ()
|
||
<DIROUT ,D-TABLE-OFF>
|
||
<CURSET <WINGET -3 ,WYPOS>
|
||
<+ </ <- <WINGET -3 ,WWIDE>
|
||
<LOWCORE TWID>>
|
||
2>
|
||
1>>
|
||
<PRINTT <REST ,DIROUT-TABLE 2> <GET ,DIROUT-TABLE 0>>>
|
||
|
||
"MDL routine to create a set of soft-key tables and defaults"
|
||
|
||
<DEFINE SOFT-KEYS ("ARGS" TUP "AUX" (CNT 0) (DL (0)) L)
|
||
<SET L
|
||
<MAPF ,LIST
|
||
<FUNCTION ("AUX" VAL STR STRL)
|
||
<COND (<EMPTY? .TUP> <MAPSTOP>)>
|
||
<SET VAL <NTH .TUP 1>>
|
||
<SET STR <NTH .TUP 2>>
|
||
<SET TUP <REST .TUP 2>>
|
||
<COND (<TYPE? .STR STRING>
|
||
<SET STRL <LENGTH .STR>>
|
||
<SET DL (.VAL .STRL .STR !.DL)>
|
||
<COND (<L? .STRL ,FLEN>
|
||
<SET STR
|
||
<STRING .STR
|
||
<ISTRING <- ,FLEN .STRL>
|
||
!\ >>>)>
|
||
<SET CNT <+ .CNT 1>>
|
||
<MAPRET .VAL <TABLE (STRING) ,FLEN .STRL .STR>>)
|
||
(ELSE
|
||
<MAPRET .VAL <EVAL .STR>>)>>>>
|
||
<CONSTANT FKEY-TBL <NTH .L 2>>
|
||
<CONSTANT FKEYS-STRTABLE-LEN <* .CNT <+ ,FLEN 2>>>
|
||
<CONSTANT DEFAULT-FKEYS <TABLE (STRING) !.DL>>
|
||
<CONSTANT FKEYS <LTABLE !.L>>>
|
||
|
||
<CONSTANT FNAMES
|
||
<LTABLE ,UP-ARROW " UP"
|
||
,DOWN-ARROW " DN"
|
||
,LEFT-ARROW " LF"
|
||
,RIGHT-ARROW " RT"
|
||
;"vt100 keypad keys"
|
||
,F1 " F1"
|
||
,F2 " F2"
|
||
,F3 " F3"
|
||
,F4 " F4"
|
||
,F5 " F5"
|
||
,F6 " F6"
|
||
,F7 " F7"
|
||
,F8 " F8"
|
||
,F9 " F9"
|
||
,F10 "F10">>
|
||
|
||
<SYNTAX DEFINE = V-DEFINE>
|
||
|
||
<GLOBAL DONE-DEFINE? <>>
|
||
|
||
<ROUTINE V-DEFINE ("AUX" (LINE 0) LINMAX CHR TMP NLINE FKEY FDEF LEFT FY FX)
|
||
<COND (<NOT ,DONE-DEFINE?>
|
||
<SETG DONE-DEFINE? T>
|
||
<TELL "Software Function Key definition. ">
|
||
<COND (<EQUAL? <LOWCORE INTID> ,MACINTOSH>
|
||
<TELL
|
||
"(NOTE: if your Macintosh has no function keys, use Command-1 thru
|
||
Command-0 instead.) ">)>
|
||
<TELL "Use the arrow keys">
|
||
<COND (,ACTIVE-MOUSE
|
||
<TELL " or the mouse">)>
|
||
<TELL
|
||
" to select the key to define or the operation to perform. Hit
|
||
the RETURN/ENTER key">
|
||
<COND (,ACTIVE-MOUSE
|
||
<TELL " or double-click the mouse">)>
|
||
<TELL " to perform operations." CR>
|
||
<HIT-ANY-KEY>)>
|
||
<CLEAR -1>
|
||
<SET FKEY <REST ,FKEYS <+ 2 <* 4 .LINE>>>>
|
||
<SET FDEF <GET .FKEY 1>>
|
||
<SET LEFT </ <- <LOWCORE SCRH> <GETB .FDEF 0>> 2>>
|
||
<SET LINMAX </ <GET ,FKEYS 0> 2>>
|
||
<CLEAR -1>
|
||
<SCREEN ,SOFT-WINDOW>
|
||
<FONT 4>
|
||
<SET TMP <WINGET ,SOFT-WINDOW ,WFSIZE>>
|
||
<SET FY <SHIFT .TMP -8>>
|
||
<SET FX <BAND .TMP 255>>
|
||
<WINPOS ,SOFT-WINDOW
|
||
<* .FY </ <- <LOWCORE SCRV> .LINMAX> 2>>
|
||
<* .FX .LEFT>>
|
||
<WINSIZE ,SOFT-WINDOW
|
||
<* .FY <+ .LINMAX 1>>
|
||
<+ 1 <* .FX <+ ,FLEN 4>>>>
|
||
<DISPLAY-SOFTS .LINE>
|
||
<DISPLAY-SOFT .FKEY .LINE <>>
|
||
<REPEAT ()
|
||
<COND (,DEMO-VERSION?
|
||
<SET CHR <INPUT-DEMO 1>>)
|
||
(T
|
||
<SET CHR <INPUT 1>>)>
|
||
<SET NLINE .LINE>
|
||
<COND (<AND <EQUAL? .CHR ,CLICK1 ,CLICK2>
|
||
<SET TMP <IN-WINDOW? ,SOFT-WINDOW>>
|
||
<G? .TMP 1>>
|
||
<SET NLINE <- .TMP 2>>
|
||
<COND (<NOT <EQUAL? .LINE .NLINE>>
|
||
<DISPLAY-SOFT .FKEY .LINE T>
|
||
<DISPLAY-SOFT <REST ,FKEYS <+ 2 <* 4 .NLINE>>>
|
||
.NLINE <>>
|
||
<SET LINE .NLINE>
|
||
<SET FKEY <REST ,FKEYS <+ 2 <* 4 .LINE>>>>
|
||
<SET FDEF <GET .FKEY 1>>)>
|
||
<COND (<AND <EQUAL? .CHR ,CLICK2>
|
||
<L? <GET .FKEY 0> 0>>
|
||
<SET CHR 13>)>)>
|
||
<COND (<EQUAL? .CHR ,CLICK1 ,CLICK2>)
|
||
(<AND <EQUAL? .CHR 13>
|
||
<L? <GET .FKEY 0> 0>>
|
||
<SET NLINE 0>
|
||
<COND (<APPLY <GET .FDEF 1>>
|
||
<SCREEN 0>
|
||
<CLEAR 0>
|
||
<V-$REFRESH>
|
||
<RTRUE>)
|
||
(ELSE
|
||
<SET NLINE <- .LINMAX 1>>
|
||
<DISPLAY-SOFTS .LINE>)>)
|
||
(<EQUAL? .CHR ,DOWN-ARROW 13>
|
||
<COND (<L? <SET NLINE <+ .NLINE 1>> .LINMAX>)
|
||
(ELSE <SET NLINE 0>)>)
|
||
(<EQUAL? .CHR ,UP-ARROW>
|
||
<COND (<G=? <SET NLINE <- .NLINE 1>> 0>)
|
||
(ELSE
|
||
<SET NLINE <- .LINMAX 1>>)>)
|
||
(<SET TMP
|
||
<INTBL? .CHR <REST ,FKEYS 2> <GET ,FKEYS 0>>>
|
||
<SET NLINE </ <- .TMP ,FKEYS> 4>>)
|
||
(<EQUAL? .CHR 8 127>
|
||
<SET TMP <GETB .FDEF 1>>
|
||
<COND (<NOT <ZERO? .TMP>>
|
||
<SET TMP <- .TMP 1>>
|
||
<PUTB .FDEF 1 .TMP>
|
||
<PUTB .FDEF <+ .TMP 2> !\ >
|
||
<CCURSET <+ .LINE 2>
|
||
<+ .TMP 5>>
|
||
<ERASE 1>)
|
||
(ELSE <SOUND ,S-BEEP>)>)
|
||
(<AND <G=? .CHR !\ > <L? .CHR 127>>
|
||
<SET TMP <GETB .FDEF 1>>
|
||
<COND (<EQUAL? .TMP <GETB .FDEF 0>>
|
||
<SOUND ,S-BEEP>)
|
||
(<INTBL? 13
|
||
<REST .FDEF 2>
|
||
<GETB .FDEF 1>
|
||
1>
|
||
<SOUND ,S-BEEP>)
|
||
(ELSE
|
||
<COND (<EQUAL? .CHR !\| !\!> <SET CHR 13>)>
|
||
<PUTB .FDEF 1 <+ .TMP 1>>
|
||
<COND (<AND <G=? .CHR !\A>
|
||
<L=? .CHR !\Z>>
|
||
<SET CHR <+ .CHR 32>>)>
|
||
<PUTB .FDEF <+ .TMP 2> .CHR>
|
||
<COND (<EQUAL? .CHR 13>
|
||
<PRINTC !\|>)
|
||
(ELSE <PRINTC .CHR>)>)>)
|
||
(ELSE <SOUND ,S-BEEP>)>
|
||
<COND (<NOT <EQUAL? .LINE .NLINE>>
|
||
<DISPLAY-SOFT .FKEY .LINE T>
|
||
<DISPLAY-SOFT <REST ,FKEYS <+ 2 <* 4 .NLINE>>>
|
||
.NLINE <>>
|
||
<SET LINE .NLINE>
|
||
<SET FKEY <REST ,FKEYS <+ 2 <* 4 .LINE>>>>
|
||
<SET FDEF <GET .FKEY 1>>)>>
|
||
<FONT 1>
|
||
<SCREEN 0>
|
||
<V-$REFRESH>>
|
||
|
||
"given a window, returns line hit with mouse click, or false if not in that
|
||
window."
|
||
|
||
<ROUTINE IN-WINDOW? (W "AUX" X Y TOP LEFT)
|
||
<SET Y <LOWCORE MSLOCY>>
|
||
<SET X <LOWCORE MSLOCX>>
|
||
<COND (<OR <L? .Y <SET TOP <WINGET .W ,WTOP>>>
|
||
<L? .X <SET LEFT <WINGET .W ,WLEFT>>>>
|
||
<RFALSE>)
|
||
(ELSE
|
||
<SET Y <- .Y .TOP>>
|
||
<SET X <- .X .LEFT>>
|
||
<COND (<OR <G? .Y <WINGET .W ,WHIGH>>
|
||
<G? .X <WINGET .W ,WWIDE>>>
|
||
<RFALSE>)>
|
||
<SET Y <+ 1 </ .Y ,FONT-Y>>>
|
||
<RETURN .Y>)>>
|
||
|
||
<ROUTINE DISPLAY-SOFTS (LINE "AUX" (L <GET ,FKEYS 0>) (F 0) N FKEY (CNT 0))
|
||
<SET L </ .L 2>>
|
||
<SCREEN ,SOFT-WINDOW>
|
||
<CURSET 1 1>
|
||
<DIROUT ,D-TABLE-ON ,DIROUT-TABLE>
|
||
<FONT 1>
|
||
<TELL "Function Keys">
|
||
<PRINT-CENTER-TABLE>
|
||
<FONT 4>
|
||
<SET FKEY <REST ,FKEYS 2>>
|
||
<REPEAT ()
|
||
<COND (<L? .CNT .L>
|
||
<DISPLAY-SOFT .FKEY .CNT
|
||
<COND (<EQUAL? .CNT .LINE> <>)
|
||
(ELSE T)>>
|
||
<SET FKEY <REST .FKEY 4>>)
|
||
(ELSE <RETURN>)>
|
||
<SET CNT <+ .CNT 1>>>>
|
||
|
||
<ROUTINE DISPLAY-SOFT (FKEY CNT INV?
|
||
"AUX" (FDEF <GET .FKEY 1>) S N M TMP
|
||
(Y <+ .CNT 2>) X)
|
||
<COND (<L? <GET .FKEY 0> 0> ;"constant string"
|
||
<CCURSET .Y 1>
|
||
<COND (.INV? <HLIGHT ,H-INVERSE>)>
|
||
<FONT 1>
|
||
<DIROUT ,D-TABLE-ON ,DIROUT-TABLE>
|
||
<TELL <GET .FDEF 0>>
|
||
<PRINT-CENTER-TABLE>
|
||
<FONT 4>)
|
||
(ELSE
|
||
<SET S <GETB .FDEF 0>>
|
||
<SET N <GETB .FDEF 1>>
|
||
<CCURSET .Y 1>
|
||
<COND (<SET TMP
|
||
<INTBL? <GET .FKEY 0>
|
||
<REST ,FNAMES 2>
|
||
<GET ,FNAMES 0>>>
|
||
<COND (.INV? <HLIGHT ,H-NORMAL>)
|
||
(ELSE <HLIGHT ,H-INVERSE>)>
|
||
<TELL <GET .TMP 1>>
|
||
<HLIGHT ,H-NORMAL>
|
||
<TELL " ">
|
||
<COND (.INV? <HLIGHT ,H-INVERSE>)
|
||
(ELSE <HLIGHT ,H-NORMAL>)>)>
|
||
<SET FDEF <REST .FDEF 2>> ;"get past header bytes"
|
||
<COND (.N ;"any definition?"
|
||
<SET M <- .N 1>>
|
||
<COND (<EQUAL? <GETB .FDEF .M> 13> ;"last character CR?"
|
||
<PRINTT .FDEF .M>
|
||
<PRINTC !\|>
|
||
<SET FDEF <REST .FDEF .N>>
|
||
<SET S <- .S .N>>)>)>
|
||
<PRINTT .FDEF .S>
|
||
<COND (<NOT .INV?>
|
||
<CCURSET .Y <+ .N 5>>)>)>
|
||
<HLIGHT ,H-NORMAL>>
|
||
|
||
<ROUTINE SOFT-RESET-DEFAULTS ("AUX" K L KEYS DEF KL TMP)
|
||
<SET KL <GET ,FKEYS 0>>
|
||
<SET DEF ,DEFAULT-FKEYS>
|
||
<REPEAT ()
|
||
<SET K <GETB .DEF 0>>
|
||
<COND (<ZERO? .K> <RETURN>)>
|
||
<SET DEF <REST .DEF>>
|
||
<SET L <+ 1 <GETB .DEF 0>>>
|
||
<COND (<SET KEYS <INTBL? .K <REST ,FKEYS 2> .KL>>
|
||
<SET KEYS <GET .KEYS 1>>
|
||
<SET TMP <REST .KEYS>>
|
||
<PUTB .TMP 0 !\ >
|
||
<COPYT .TMP <REST .TMP> <- <GETB .KEYS 0>>>
|
||
<COPYT .DEF <REST .KEYS> .L>)>
|
||
<SET DEF <REST .DEF .L>>>
|
||
<RFALSE>>
|
||
|
||
<CONSTANT DEFS-NAME <LTABLE (STRING) "DEFS">>
|
||
|
||
<ROUTINE SOFT-SAVE-DEFS ()
|
||
<CLEAR 0>
|
||
<SCREEN 0>
|
||
<COND (<NOT <SAVE ,FKEY-TBL
|
||
,FKEYS-STRTABLE-LEN
|
||
,DEFS-NAME>>
|
||
<TELL "Failed.">)>
|
||
<CLEAR 0>
|
||
<SCREEN ,SOFT-WINDOW>
|
||
<RFALSE>>
|
||
|
||
<ROUTINE SOFT-RESTORE-DEFS ()
|
||
<CLEAR 0>
|
||
<SCREEN 0>
|
||
<COND (<NOT <RESTORE ,FKEY-TBL ,FKEYS-STRTABLE-LEN ,DEFS-NAME>>
|
||
<TELL "Failed.">)>
|
||
<CLEAR 0>
|
||
<SCREEN ,SOFT-WINDOW>
|
||
<RFALSE>>
|
||
|
||
<ROUTINE SOFT-EXIT ()
|
||
<RTRUE>>
|
||
|
||
<CONSTANT FLEN 30> ;"max length of a key definition"
|
||
<CONSTANT SOFT-WINDOW 2> ;"window to use for defining"
|
||
|
||
"table containing string definitions for each function key.
|
||
contiguous so it can be written out or read in."
|
||
|
||
<SOFT-KEYS ,UP-ARROW "n
|
||
"
|
||
,DOWN-ARROW "s
|
||
"
|
||
,LEFT-ARROW "w
|
||
"
|
||
,RIGHT-ARROW "e
|
||
"
|
||
;"vt100 keypad keys"
|
||
,F1 "take "
|
||
,F2 "take all
|
||
"
|
||
,F3 "drop "
|
||
,F4 "look around
|
||
"
|
||
,F5 "inventory
|
||
"
|
||
,F6 "unlock door "
|
||
,F7 "jester, "
|
||
,F8 "give magic locket to moose
|
||
"
|
||
,F9 "read about "
|
||
,F10 "examine "
|
||
-4 <TABLE "Save Defs" SOFT-SAVE-DEFS>
|
||
-5 <TABLE "Restore Defs" SOFT-RESTORE-DEFS>
|
||
-6 <TABLE "Reset Defaults" SOFT-RESET-DEFAULTS>
|
||
-2 <TABLE "Exit" SOFT-EXIT>>
|
||
|
||
;<CONSTANT FKEYS-STRTABLE-LEN <* 14 <+ ,FLEN 2>>>
|
||
|
||
;<CONSTANT MTBL <ITABLE 4 0>>
|
||
|
||
;<CONSTANT SOFT-TOP 3>
|
||
|
||
<END-SEGMENT>
|
||
|
||
<BEGIN-SEGMENT 0>
|
||
|
||
<ROUTINE Y? ("AUX" X)
|
||
<REPEAT ()
|
||
<COND (,DEMO-VERSION?
|
||
<SET X <INPUT-DEMO 1>>)
|
||
(T
|
||
<SET X <INPUT 1>>)>
|
||
;<MOUSE-INPUT?>
|
||
<COND (<EQUAL? .X !\Y !\y ,CLICK1 ,CLICK2>
|
||
<SET X T>
|
||
<RETURN>)
|
||
(<EQUAL? .X !\N !\n>
|
||
<SET X <>>
|
||
<RETURN>)
|
||
(T
|
||
<TELL CR "[Please type Y or N] >">)>>
|
||
<CRLF>
|
||
<RETURN .X>>
|
||
|
||
<ROUTINE BLINK (PIC1 PIC2 Y X SCR "AUX" CHAR LAST (CNT 0))
|
||
<SCREEN .SCR>
|
||
<DISPLAY .PIC2 .Y .X>
|
||
<SCREEN ,S-TEXT>
|
||
<SET LAST .PIC2>
|
||
<REPEAT ()
|
||
<SETG TYPED-TIMED-OUT <>>
|
||
<SET CHAR <INPUT 1 3 ;"three-tenths of a second" ,TYPED?>>
|
||
<MOUSE-INPUT?>
|
||
<COND (,TYPED-TIMED-OUT
|
||
<SCREEN .SCR>
|
||
<DISPLAY <COND (<EQUAL? .LAST .PIC1>
|
||
<SET LAST .PIC2>
|
||
.PIC2)
|
||
(T
|
||
<SET LAST .PIC1>
|
||
.PIC1)> .Y .X>
|
||
<SET CNT <+ .CNT 1>>
|
||
<COND (<AND <EQUAL? .CNT 4>
|
||
,ROSE-NEEDS-UPDATING
|
||
<EQUAL? ,CURRENT-SPLIT ,MAP-TOP-LEFT-LOC>>
|
||
<UPDATE-MAP-ROSE>)>
|
||
<SCREEN ,S-TEXT>)
|
||
(T
|
||
<COND (<EQUAL? .LAST .PIC2> ;"leave unhighlited pic up"
|
||
<SCREEN .SCR>
|
||
<DISPLAY .PIC1 .Y .X>
|
||
<SCREEN ,S-TEXT>)>
|
||
<RETURN .CHAR>)>>>
|
||
|
||
<GLOBAL TYPED-TIMED-OUT <>>
|
||
|
||
<ROUTINE TYPED? ()
|
||
<SETG TYPED-TIMED-OUT T>
|
||
<RTRUE>>
|
||
|
||
<ROUTINE PICINF-PLUS-ONE (PIC)
|
||
<PICINF .PIC ,PICINF-TBL>
|
||
<PUT ,PICINF-TBL 0 <+ <GET ,PICINF-TBL 0> 1>>
|
||
<PUT ,PICINF-TBL 1 <+ <GET ,PICINF-TBL 1> 1>>>
|
||
|
||
<GLOBAL MOUSE-LOC-X <>> ;"X-coordinate of most recent mouse click"
|
||
|
||
<GLOBAL MOUSE-LOC-Y <>> ;"Y-coordinate of most recent mouse click"
|
||
|
||
<ROUTINE MOUSE-INPUT? ()
|
||
<SETG MOUSE-LOC-X <LOWCORE MSLOCX>>
|
||
<SETG MOUSE-LOC-Y <LOWCORE MSLOCY>>>
|
||
|
||
;<CONSTANT CENTER-TABLE <ITABLE 80 <BYTE 0>>>
|
||
|
||
;<ROUTINE PRINT-CENTER-TABLE ()
|
||
<DIROUT ,D-TABLE-OFF>
|
||
<CURSET <WINGET -3 ,WYPOS>
|
||
<+ </ <- <WINGET -3 ,WWIDE>
|
||
<LOWCORE TWID>>
|
||
2>
|
||
1>>
|
||
<PRINTT <REST ,CENTER-TABLE 2> <GET ,CENTER-TABLE 0>>>
|
||
|
||
<END-SEGMENT> |