
             Edinburgh IMP77 Compiler - Version 8.4


        LANG 0000
        PUSHS "\n"
        DEF V_0001 SNL
        +   0x0031
        +   0x0001
        +   0x0012
        INIT 1
        DEF V_0002 REM
        +   0x0018
        +   0x0001
        +   0x003e
        START
        DEF V_0003 P
        +   0x0011
        +   0x0001
        +   0x0000
        DEF V_0004 Q
        +   0x0011
        +   0x0001
        +   0x0000
        FINISH
        DEF V_0003 READSYMBOL
        +   0x0007
        +   0x0000
        +   0x002e
        START
        DEF V_0004 P
        +   0x0002
        +   0x0000
        +   0x0000
        FINISH
        DEF V_0004 FLOAT
        +   0x0028
        +   0x0001
        +   0x003e
        START
        DEF V_0005 N
        +   0x0011
        +   0x0001
        +   0x0000
        FINISH
        DEF V_0005 TOSTRING
        +   0x0038
        +   0x0001
        +   0x003e
        START
        DEF V_0006 P
        +   0x0011
        +   0x0001
        +   0x0000
        FINISH
        DEF V_0006 SUBSTRING
        +   0x0038
        +   0x00ff
        +   0x003e
        START
        DEF V_0007 S
        +   0x0031
        +   0x00ff
        +   0x0000
        DEF V_0008 F
        +   0x0011
        +   0x0001
        +   0x0000
        DEF V_0009 T
        +   0x0011
        +   0x0001
        +   0x0000
        FINISH
        DEF V_0007 FREESPACE
        +   0x0018
        +   0x0001
        +   0x003e
        START
        FINISH
        DEF V_0008 SVC
        +   0x0007
        +   0x0000
        +   0x002e
        START
        DEF V_0009 N
        +   0x0011
        +   0x0001
        +   0x0000
        DEF V_000a R
        +   0x0042
        +   0x0000
        +   0x0000
        FINISH
        DEF V_0009 ADDR
        +   0x0018
        +   0x0001
        +   0x003e
        START
        DEF V_000a P
        +   0x0002
        +   0x0000
        +   0x0000
        FINISH
        DEF V_000a INTEGER
        +   0x0019
        +   0x0001
        +   0x002e
        START
        DEF V_000b N
        +   0x0011
        +   0x0001
        +   0x0000
        FINISH
        DEF V_000b SHORTINTEGER
        +   0x0019
        +   0x0003
        +   0x002e
        START
        DEF V_000c N
        +   0x0011
        +   0x0001
        +   0x0000
        FINISH
        DEF V_000c BYTEINTEGER
        +   0x0019
        +   0x0002
        +   0x002e
        START
        DEF V_000d N
        +   0x0011
        +   0x0001
        +   0x0000
        FINISH
        DEF V_000d STRING
        +   0x0039
        +   0x0000
        +   0x002e
        START
        DEF V_000e N
        +   0x0011
        +   0x0001
        +   0x0000
        FINISH
        DEF V_000e RECORD
        +   0x0049
        +   0x0000
        +   0x002e
        START
        DEF V_000f N
        +   0x0011
        +   0x0001
        +   0x0000
        FINISH
        DEF V_000f REAL
        +   0x0029
        +   0x0001
        +   0x002e
        START
        DEF V_0010 N
        +   0x0011
        +   0x0001
        +   0x0000
        FINISH
        DEF V_0010 LONGREAL
        +   0x0029
        +   0x0004
        +   0x002e
        START
        DEF V_0011 N
        +   0x0011
        +   0x0001
        +   0x0000
        FINISH
        DEF V_0011 LENGTH
        +   0x0019
        +   0x0002
        +   0x002e
        START
        DEF V_0012 S
        +   0x0031
        +   0x00ff
        +   0x0000
        FINISH
        DEF V_0012 CHARNO
        +   0x0019
        +   0x0002
        +   0x002e
        START
        DEF V_0013 S
        +   0x0031
        +   0x00ff
        +   0x0000
        DEF V_0014 N
        +   0x0011
        +   0x0001
        +   0x0000
        FINISH
        DEF V_0013 INT
        +   0x0018
        +   0x0001
        +   0x003e
        START
        DEF V_0014 X
        +   0x0021
        +   0x0001
        +   0x0000
        FINISH
        DEF V_0014 INTPT
        +   0x0018
        +   0x0001
        +   0x003e
        START
        DEF V_0015 X
        +   0x0021
        +   0x0001
        +   0x0000
        FINISH
        DEF V_0015 IOCP
        +   0x0007
        +   0x0000
        +   0x002e
        START
        DEF V_0016 N
        +   0x0011
        +   0x0001
        +   0x0000
        FINISH
        DEF V_0016 TYPEOF
        +   0x0018
        +   0x0001
        +   0x003e
        START
        DEF V_0017 N
        +   0x0002
        +   0x0000
        +   0x0000
        FINISH
        DEF V_0017 SIZEOF
        +   0x0018
        +   0x0001
        +   0x003e
        START
        DEF V_0018 N
        +   0x0002
        +   0x0000
        +   0x0000
        FINISH
        DEF V_0018 FRACPT
        +   0x0028
        +   0x0001
        +   0x003e
        START
        DEF V_0019 X
        +   0x0021
        +   0x0001
        +   0x0000
        FINISH
        DEF V_0019 PROMPT
        +   0x0007
        +   0x0000
        +   0x002b
        START
        DEF V_001a S
        +   0x0031
        +   0x000f
        +   0x0000
        FINISH
        DEF V_001a NEXTSYMBOL
        +   0x0018
        +   0x0001
        +   0x003b
        START
        FINISH
        DEF V_001b SKIPSYMBOL
        +   0x0007
        +   0x0000
        +   0x002b
        START
        FINISH
        DEF V_001c PRINTSYMBOL
        +   0x0007
        +   0x0000
        +   0x002b
        START
        DEF V_001d SYM
        +   0x0011
        +   0x0001
        +   0x0000
        FINISH
        DEF V_001d PRINTSTRING
        +   0x0007
        +   0x0000
        +   0x002b
        START
        DEF V_001e S
        +   0x0031
        +   0x00ff
        +   0x0000
        FINISH
        DEF V_001e WRITE
        +   0x0007
        +   0x0000
        +   0x002b
        START
        DEF V_001f V
        +   0x0011
        +   0x0001
        +   0x0000
        DEF V_0020 P
        +   0x0011
        +   0x0001
        +   0x0000
        FINISH
        DEF V_001f SELECTINPUT
        +   0x0007
        +   0x0000
        +   0x002b
        START
        DEF V_0020 N
        +   0x0011
        +   0x0001
        +   0x0000
        FINISH
        DEF V_0020 SELECTOUTPUT
        +   0x0007
        +   0x0000
        +   0x002b
        START
        DEF V_0021 N
        +   0x0011
        +   0x0001
        +   0x0000
        FINISH
        DEF V_0021 OPENINPUT
        +   0x0007
        +   0x0000
        +   0x002b
        START
        DEF V_0022 N
        +   0x0011
        +   0x0001
        +   0x0000
        DEF V_0023 FD
        +   0x0031
        +   0x001f
        +   0x0000
        FINISH
        DEF V_0022 OPENOUTPUT
        +   0x0007
        +   0x0000
        +   0x002b
        START
        DEF V_0023 N
        +   0x0011
        +   0x0001
        +   0x0000
        DEF V_0024 FD
        +   0x0031
        +   0x001f
        +   0x0000
        FINISH
        DEF V_0023 CLOSEINPUT
        +   0x0007
        +   0x0000
        +   0x002b
        START
        FINISH
        DEF V_0024 CLOSEOUTPUT
        +   0x0007
        +   0x0000
        +   0x002b
        START
        FINISH
        DEF V_0025 RESETINPUT
        +   0x0007
        +   0x0000
        +   0x002b
        START
        FINISH
        DEF V_0026 RESETOUTPUT
        +   0x0007
        +   0x0000
        +   0x002b
        START
        FINISH
        DEF V_0027 TIME
        +   0x0038
        +   0x0008
        +   0x003b
        START
        FINISH
        DEF V_0028 DATE
        +   0x0038
        +   0x0009
        +   0x003b
        START
        FINISH
        DEF V_0029 CPUTIME
        +   0x0018
        +   0x0001
        +   0x003b
        START
        FINISH
        DEF V_002a COMREG
        +   0x0019
        +   0x0001
        +   0x002b
        START
        DEF V_002b N
        +   0x0011
        +   0x0001
        +   0x0000
        FINISH
        DEF V_002b READ
        +   0x0007
        +   0x0000
        +   0x002b
        START
        DEF V_002c X
        +   0x0002
        +   0x0000
        +   0x0000
        FINISH
        DEF V_002c PRINT
        +   0x0007
        +   0x0000
        +   0x002b
        START
        DEF V_002d VAL
        +   0x0021
        +   0x0001
        +   0x0000
        DEF V_002e BEFORE
        +   0x0011
        +   0x0001
        +   0x0000
        DEF V_002f AFTER
        +   0x0011
        +   0x0001
        +   0x0000
        FINISH
        DEF V_002d PRINTFL
        +   0x0007
        +   0x0000
        +   0x002b
        START
        DEF V_002e VAL
        +   0x0021
        +   0x0001
        +   0x0000
        DEF V_002f PLACES
        +   0x0011
        +   0x0001
        +   0x0000
        FINISH
        DEF V_002e SPACE
        +   0x0007
        +   0x0000
        +   0x002b
        START
        FINISH
        DEF V_002f SPACES
        +   0x0007
        +   0x0000
        +   0x002b
        START
        DEF V_0030 N
        +   0x0011
        +   0x0001
        +   0x0000
        FINISH
        DEF V_0030 NEWLINE
        +   0x0007
        +   0x0000
        +   0x002b
        START
        FINISH
        DEF V_0031 NEWLINES
        +   0x0007
        +   0x0000
        +   0x002b
        START
        DEF V_0032 N
        +   0x0011
        +   0x0001
        +   0x0000
        FINISH
        DEF V_0032 FILEFM
        +   0x0044
        +   0x0032
        +   0x0000
        START
        DEF V_0000 UNIT
        +   0x0011
        +   0x0001
        +   0x0000
        DEF V_0000 OWNER
        +   0x0011
        +   0x0001
        +   0x0000
        DEF V_0000 N1
        +   0x0011
        +   0x0001
        +   0x0000
        DEF V_0000 N2
        +   0x0011
        +   0x0001
        +   0x0000
        FINISH
        DEF V_0033 EVENTFM
        +   0x0044
        +   0x0033
        +   0x0000
        START
        DEF V_0000 EVENT
        +   0x0011
        +   0x0001
        +   0x0000
        DEF V_0000 SUB
        +   0x0011
        +   0x0001
        +   0x0000
        DEF V_0000 EXTRA
        +   0x0011
        +   0x0001
        +   0x0000
        DEF V_0000 MESSAGE
        +   0x0031
        +   0x003f
        +   0x0000
        DEF V_0000 PC
        +   0x0011
        +   0x0001
        +   0x0000
        DEF V_0000 X
        +   0x0011
        +   0x0001
        +   0x0000
        FINISH
        DEF V_0034 EVENT
        +   0x0041
        +   0x0033
        +   0x002b
        LINE 20
     1  !!This version of ECCE, derived from a paper copy believed to
     2  !!date from 1975, removes PDP9/15 machine code, and other
     3  !!IMP9/15 system dependencies, and I'm hopeful that as a result
     4  !!it might well work if compiled with a generic Imp compiler.
     5  
     6  !!RWT Feb 2002
     7  
     8  !!Code slightly rearranged to fit the model of Peter Stephen's Imp to C
     9  !!translator.  This now compiles and runs exactly as on the pdp9/15
    10  !!Remember to run it with redirected input, eg ecce < file.txt > file2.txt
    11  
    12  !!The I/O library currently assumes you are running on Unix.
    13  !!NOTE: There IS a bug in this implementation.  Lines of more
    14  !!than 120 characters have a newline inserted at the 120th character
    15  !!on output.  This *may* be an original bug rather than an artifact
    16  !!of the translation or run-time library..
    17  
    18  !!GT 02 Mar 2002
    19  
    20  %external %integer outstream
        DEF V_0035 OUTSTREAM
        +   0x0011
        +   0x0001
        +   0x0023
        INIT 1
        LINE 22
    21  
    22  %owninteger in=1;                           !current input stream
        PUSHI #0x00000001
        DEF V_0036 IN
        +   0x0011
        +   0x0001
        +   0x0021
        INIT 1
        LINE 23
    23  %constinteger min=1;                        !main input stream
        LINE 24
    24  %constinteger mout=1;                       !main output stream
        LINE 25
    25  %constinteger sin=2;                        !secondary input stream
        LINE 26
    26  %constinteger sextra=122;                   !extra buff for sin
        LINE 27
    27  %constinteger size=30000;                   !of edit buffer (bytes)
        LINE 28
    28  %owninteger mon=0;                          !monitor indic
        PUSHI #0x00000000
        DEF V_0037 MON
        +   0x0011
        +   0x0001
        +   0x0021
        INIT 1
        LINE 29
    29  %owninteger print1=0,print2=0;              !print indicators
        PUSHI #0x00000000
        DEF V_0038 PRINT1
        +   0x0011
        +   0x0001
        +   0x0021
        INIT 1
        PUSHI #0x00000000
        DEF V_0039 PRINT2
        +   0x0011
        +   0x0001
        +   0x0021
        INIT 1
        LINE 30
    30  %constinteger stop=-5000;                   !loop stop (const)
        LINE 31
    31  %owninteger i,j,k,pp1,sym
        DEF V_003a I
        +   0x0011
        +   0x0001
        +   0x0021
        INIT 1
        DEF V_003b J
        +   0x0011
        +   0x0001
        +   0x0021
        INIT 1
        DEF V_003c K
        +   0x0011
        +   0x0001
        +   0x0021
        INIT 1
        DEF V_003d PP1
        +   0x0011
        +   0x0001
        +   0x0021
        INIT 1
        DEF V_003e SYM
        +   0x0011
        +   0x0001
        +   0x0021
        INIT 1
        LINE 32
    32  %owninteger code;                              !command code letter
        DEF V_003f CODE
        +   0x0011
        +   0x0001
        +   0x0021
        INIT 1
        LINE 33
    33  %owninteger text;                              !text pointer
        DEF V_0040 TEXT
        +   0x0011
        +   0x0001
        +   0x0021
        INIT 1
        LINE 34
    34  %owninteger num;                               !repetition number
        DEF V_0041 NUM
        +   0x0011
        +   0x0001
        +   0x0021
        INIT 1
        LINE 35
    35  %ownintegername mainfp;                        ! == fp or mfp (for sin)
        DEF V_0042 MAINFP
        +   0x0012
        +   0x0001
        +   0x0021
        INIT 1
        LINE 36
    36  %constinteger cbase=1,tbase=120
        LINE 37
    37  %ownintegerarray c(cbase:tbase);            !command -> <- text
        PUSHI #0x00000001
        PUSHI #0x00000078
        BOUNDS
        DEF V_0043 C
        +   0x001b
        +   0x0001
        +   0x0121
        INIT 120
        LINE 42
    38  ! each command unit -- letter, parenthesis or comma -- is
    39  ! represented by a trio:  code(+lim)  text  num
    40  ! in the case of parentheses and commas 'text' is a pointer
    41  ! to another command unit (not to a text string)
    42  %owninteger ci;                                !command index (ad)
        DEF V_0044 CI
        +   0x0011
        +   0x0001
        +   0x0021
        INIT 1
        LINE 43
    43  %owninteger ti;                                !text index (ad)
        DEF V_0045 TI
        +   0x0011
        +   0x0001
        +   0x0021
        INIT 1
        LINE 44
    44  %owninteger cmax=0;                         !command max (ad)
        PUSHI #0x00000000
        DEF V_0046 CMAX
        +   0x0011
        +   0x0001
        +   0x0021
        INIT 1
        LINE 45
    45  %ownintegerarray stored(1:192);                !defs of x,y,z
        PUSHI #0x00000001
        PUSHI #0x000000c0
        BOUNDS
        DEF V_0047 STORED
        +   0x001b
        +   0x0001
        +   0x0121
        INIT 192
        LINE 46
    46  %owninteger pos1=0, pos2=0, pos3=0
        PUSHI #0x00000000
        DEF V_0048 POS1
        +   0x0011
        +   0x0001
        +   0x0021
        INIT 1
        PUSHI #0x00000000
        DEF V_0049 POS2
        +   0x0011
        +   0x0001
        +   0x0021
        INIT 1
        PUSHI #0x00000000
        DEF V_004a POS3
        +   0x0011
        +   0x0001
        +   0x0021
        INIT 1
        LINE 47
    47  %ownbyteintegerarray byte(1:size)
        PUSHI #0x00000001
        PUSHI #0x00007530
        BOUNDS
        DEF V_004b BYTE
        +   0x001b
        +   0x0002
        +   0x0121
        INIT 30000
        LINE 48
    48  %owninteger top = 2;                     !top of buff (index)
        PUSHI #0x00000002
        DEF V_004c TOP
        +   0x0011
        +   0x0001
        +   0x0021
        INIT 1
        LINE 49
    49  %owninteger bot = size-sextra;           !bottom of buff (index)
        PUSHI #0x000074b6
        DEF V_004d BOT
        +   0x0011
        +   0x0001
        +   0x0021
        INIT 1
        LINE 50
    50  %owninteger lbeg;                              !line start (index)
        DEF V_004e LBEG
        +   0x0011
        +   0x0001
        +   0x0021
        INIT 1
        LINE 51
    51  %owninteger pp;                                !previous pointer (index)
        DEF V_004f PP
        +   0x0011
        +   0x0001
        +   0x0021
        INIT 1
        LINE 52
    52  %owninteger fp=0;                           !file pointer (index)
        PUSHI #0x00000000
        DEF V_0050 FP
        +   0x0011
        +   0x0001
        +   0x0021
        INIT 1
        LINE 53
    53  %owninteger lend;                              !line end (index)
        DEF V_0051 LEND
        +   0x0011
        +   0x0001
        +   0x0021
        INIT 1
        LINE 54
    54  %owninteger fend;                           !end of file in buff (index)
        DEF V_0052 FEND
        +   0x0011
        +   0x0001
        +   0x0021
        INIT 1
        LINE 55
    55  %owninteger ms=0;                           !match start (index)
        PUSHI #0x00000000
        DEF V_0053 MS
        +   0x0011
        +   0x0001
        +   0x0021
        INIT 1
        LINE 56
    56  %owninteger ml=0;                           !match limit (index)
        PUSHI #0x00000000
        DEF V_0054 ML
        +   0x0011
        +   0x0001
        +   0x0021
        INIT 1
        LINE 65
    57  ! significance of file pointers:
    58  ! [nl] o n e nl t w . . . o nl n e x t nl . . nl l a s t nl [nl]
    59  !      !        !   !     !  !                                !
    60  !      t        l   p     f  l                                f
    61  !      o        b   p     p  e                                e
    62  !      p        e            n                                n
    63  !               g            d                                d
    64  
    65  %owninteger type,chain;                        !command input vars
        DEF V_0055 TYPE
        +   0x0011
        +   0x0001
        +   0x0021
        INIT 1
        DEF V_0056 CHAIN
        +   0x0011
        +   0x0001
        +   0x0021
        INIT 1
        LINE 66
    66  %owninteger pend=0;                         !ditto
        PUSHI #0x00000000
        DEF V_0057 PEND
        +   0x0011
        +   0x0001
        +   0x0021
        INIT 1
        LINE 68
    67  
    68  %routine prompt(%string(1) s); ! Emulating pdp9/15 routine
        DEF V_0058 PROMPT
        +   0x0007
        +   0x0000
        +   0x0000
        START
        DEF V_0059 S
        +   0x0031
        +   0x0001
        +   0x0000
        FINISH
        LINE 69
    69    %integer oldstream, c
        DEF V_005a OLDSTREAM
        +   0x0011
        +   0x0001
        +   0x0000
        DEF V_005b C
        +   0x0011
        +   0x0001
        +   0x0000
        LINE 70
    70    c = charno(s, 1)
        PUSH V_005b
        PUSH V_0012
        PUSH V_0059
        ASSPAR
        PUSHI #0x00000001
        ASSPAR
        CALL
        ASSVAL
        LINE 71
    71    %if c # 0 %then %start  ; ! c = 0 is supposed to flush output on the 9/15
        PUSH V_005b
        PUSHI #0x00000000
        JUMPIF = L_0004
        LINE 72
    72      oldstream = outstream
        PUSH V_005a
        PUSH V_0035
        ASSVAL
        LINE 73
    73      select output(0)
        PUSH V_0020
        PUSHI #0x00000000
        ASSPAR
        CALL
        LINE 74
    74      print symbol(c)
        PUSH V_001c
        PUSH V_005b
        ASSPAR
        CALL
        LINE 75
    75      select output(oldstream)
        PUSH V_0020
        PUSH V_005a
        ASSPAR
        CALL
        LINE 76
    76    %finish
        LOCATE L_0004
        LINE 77
    77  %end
        END
        LINE 79
    78  
    79  %routine load pp(%integer k);               !!!also increments pp
        DEF V_0059 LOADPP
        +   0x0007
        +   0x0000
        +   0x0000
        START
        DEF V_005a K
        +   0x0011
        +   0x0001
        +   0x0000
        FINISH
        LINE 80
    80      byte(pp) = k;  pp = pp+1
        PUSH V_004b
        PUSH V_004f
        ACCESS
        PUSH V_005a
        ASSVAL
        LINE 80
        PUSH V_004f
        PUSH V_004f
        PUSHI #0x00000001
        ADD
        ASSVAL
        LINE 81
    81  %end
        END
        LINE 83
    82  
    83  %routine load fp(%integer k)
        DEF V_005a LOADFP
        +   0x0007
        +   0x0000
        +   0x0000
        START
        DEF V_005b K
        +   0x0011
        +   0x0001
        +   0x0000
        FINISH
        LINE 84
    84      byte(fp) = k
        PUSH V_004b
        PUSH V_0050
        ACCESS
        PUSH V_005b
        ASSVAL
        LINE 85
    85  %end
        END
        LINE 87
    86  
    87  %routine left star
        DEF V_005b LEFTSTAR
        +   0x0007
        +   0x0000
        +   0x0000
        START
        FINISH
        LINE 88
    88      %cycle
        LOCATE L_0003
        LINE 89
    89         %return %if pp = lbeg
        PUSH V_004f
        PUSH V_004e
        JUMPIF # L_0007
        RETURN
        LOCATE L_0007
        LINE 90
    90         fp = fp-1;  pp = pp-1
        PUSH V_0050
        PUSH V_0050
        PUSHI #0x00000001
        SUB
        ASSVAL
        LINE 90
        PUSH V_004f
        PUSH V_004f
        PUSHI #0x00000001
        SUB
        ASSVAL
        LINE 91
    91         load fp(byte(pp))
        PUSH V_005a
        PUSH V_004b
        PUSH V_004f
        ACCESS
        ASSPAR
        CALL
        LINE 92
    92      %repeat
        REPEAT L_0003
        LINE 93
    93  %end
        END
        LINE 95
    94  
    95  %routine right star
        DEF V_005c RIGHTSTAR
        +   0x0007
        +   0x0000
        +   0x0000
        START
        FINISH
        LINE 96
    96      %cycle
        LOCATE L_0003
        LINE 97
    97         %return %if fp = lend
        PUSH V_0050
        PUSH V_0051
        JUMPIF # L_0007
        RETURN
        LOCATE L_0007
        LINE 98
    98         load pp(byte(fp))
        PUSH V_0059
        PUSH V_004b
        PUSH V_0050
        ACCESS
        ASSPAR
        CALL
        LINE 99
    99         fp = fp+1
        PUSH V_0050
        PUSH V_0050
        PUSHI #0x00000001
        ADD
        ASSVAL
        LINE 100
   100      %repeat
        REPEAT L_0003
        LINE 101
   101  %end
        END
        LINE 103
   102  
   103  %ownintegerarray symtype(33:95) = %c
        PUSHI #0x00000021
        PUSHI #0x0000005f
        BOUNDS
        DEF V_005d SYMTYPE
        +   0x001b
        +   0x0001
        +   0x0121
        PUSHI #0x00000040
        INIT 1
        PUSHI #0x00000003
        INIT 1
        PUSHI #0x00000003
        INIT 1
        PUSHI #0x00000003
        INIT 1
        PUSHI #0x00000002
        INIT 1
        PUSHI #0x00000003
        INIT 1
        PUSHI #0x00000003
        INIT 1
        PUSHI #0x0000000b
        INIT 1
        PUSHI #0x00000009
        INIT 1
        PUSHI #0x00000040
        INIT 1
        PUSHI #0x00000003
        INIT 1
        PUSHI #0x0000000c
        INIT 1
        PUSHI #0x00000002
        INIT 1
        PUSHI #0x00000003
        INIT 1
        PUSHI #0x00000003
        INIT 1
        PUSHI #0x00000000
        INIT 1
        PUSHI #0x00000000
        INIT 1
        PUSHI #0x00000000
        INIT 1
        PUSHI #0x00000000
        INIT 1
        PUSHI #0x00000000
        INIT 1
        PUSHI #0x00000000
        INIT 1
        PUSHI #0x00000000
        INIT 1
        PUSHI #0x00000000
        INIT 1
        PUSHI #0x00000000
        INIT 1
        PUSHI #0x00000000
        INIT 1
        PUSHI #0x00000003
        INIT 1
        PUSHI #0x00000001
        INIT 1
        PUSHI #0x00000003
        INIT 1
        PUSHI #0x00000003
        INIT 1
        PUSHI #0x00000003
        INIT 1
        PUSHI #0x00000040
        INIT 1
        PUSHI #0x00000003
        INIT 1
        PUSHI #0x00000002
        INIT 1
        PUSHI #0x0000000a
        INIT 1
        PUSHI #0x00000012
        INIT 1
        PUSHI #0x00000005
        INIT 1
        PUSHI #0x00000008
        INIT 1
        PUSHI #0x00000034
        INIT 1
        PUSHI #0x0000000a
        INIT 1
        PUSHI #0x00000002
        INIT 1
        PUSHI #0x00000006
        INIT 1
        PUSHI #0x0000000a
        INIT 1
        PUSHI #0x0000000a
        INIT 1
        PUSHI #0x0000000a
        INIT 1
        PUSHI #0x00000038
        INIT 1
        PUSHI #0x00000002
        INIT 1
        PUSHI #0x00000002
        INIT 1
        PUSHI #0x0000000a
        INIT 1
        PUSHI #0x00000032
        INIT 1
        PUSHI #0x0000000a
        INIT 1
        PUSHI #0x00000016
        INIT 1
        PUSHI #0x00000005
        INIT 1
        PUSHI #0x00000005
        INIT 1
        PUSHI #0x00000006
        INIT 1
        PUSHI #0x00000002
        INIT 1
        PUSHI #0x00000020
        INIT 1
        PUSHI #0x00000020
        INIT 1
        PUSHI #0x00000020
        INIT 1
        PUSHI #0x00000003
        INIT 1
        PUSHI #0x0000000a
        INIT 1
        PUSHI #0x00000003
        INIT 1
        PUSHI #0x00000003
        INIT 1
        PUSHI #0x00000003
        INIT 1
        LINE 113
   104       64, 3, 3, 3, 2, 3, 3,11, 9,64, 3,12, 2, 3, 3,
   105     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 3, 3, 3,64,
   106     3, 2,10,18, 5, 8,52,10, 2, 6,10,10,10,56, 2, 2,
   107    10,50,10,22, 5, 5, 6, 2,32,32,32, 3,10, 3, 3, 3
   108  !     !  "  #  $  %  &  '  (  )  *  +  ,  -  .  /
   109  !  0  1  2  3  4  5  6  7  8  9  :     <  =  >  ?
   110  !  @  A  B  C  D  E  F  G  H  I  J  K  L  M  N  O
   111  !  P  Q  R  S  T  U  V  W  X  Y  Z  [  \  ]  ^  _
   112  
   113  %routine read sym
        DEF V_005e READSYM
        +   0x0007
        +   0x0000
        +   0x0000
        START
        FINISH
        LINE 114
   114      %if pend # 0 %then sym=pend %and pend=0 %else %start
        PUSH V_0057
        PUSHI #0x00000000
        JUMPIF = L_0004
        PUSH V_003e
        PUSH V_0057
        ASSVAL
        PUSH V_0057
        PUSHI #0x00000000
        ASSVAL
        GOTO L_0003
        LOCATE L_0004
        LINE 115
   115         %while pos3 # 0 %cycle
        LOCATE L_0006
        PUSH V_004a
        PUSHI #0x00000000
        JUMPIF = L_0007
        LINE 116
   116            sym = stored(pos3);  pos3 = pos3+1
        PUSH V_003e
        PUSH V_0047
        PUSH V_004a
        ACCESS
        ASSVAL
        LINE 116
        PUSH V_004a
        PUSH V_004a
        PUSHI #0x00000001
        ADD
        ASSVAL
        LINE 117
   117            %return %unless sym = nl
        PUSH V_003e
        PUSHI #0x0000000a
        JUMPIF = L_000a
        RETURN
        LOCATE L_000a
        LINE 118
   118            pos3 = pos2; pos2 = pos1; pos1 = 0
        PUSH V_004a
        PUSH V_0049
        ASSVAL
        LINE 118
        PUSH V_0049
        PUSH V_0048
        ASSVAL
        LINE 118
        PUSH V_0048
        PUSHI #0x00000000
        ASSVAL
        LINE 119
   119         %repeat
        REPEAT L_0006
        LOCATE L_0007
        LINE 120
   120         read symbol(sym)
        PUSH V_0003
        PUSH V_003e
        ASSPAR
        CALL
        LINE 121
   121      %finish
        LOCATE L_0003
        LINE 122
   122  %end
        END
        LINE 124
   123  
   124  %routine read item
        DEF V_005f READITEM
        +   0x0007
        +   0x0000
        +   0x0000
        START
        FINISH
        LINE 125
   125      type = 1
        PUSH V_0055
        PUSHI #0x00000001
        ASSVAL
        LINE 126
   126      %cycle
        LOCATE L_0003
        LINE 127
   127         read sym %until sym # ' '
        LOCATE L_0006
        PUSH V_005e
        CALL
        PUSH V_003e
        PUSHI #0x00000020
        JUMPIF # L_0007
        REPEAT L_0006
        LOCATE L_0007
        LINE 128
   128         %return %if sym < 32;                !nl
        PUSH V_003e
        PUSHI #0x00000020
        JUMPIF >= L_0007
        RETURN
        LOCATE L_0007
        LINE 129
   129         sym = sym-32 %if sym >= 96;          !ensure upper case
        PUSH V_003e
        PUSHI #0x00000060
        JUMPIF < L_0007
        PUSH V_003e
        PUSH V_003e
        PUSHI #0x00000020
        SUB
        ASSVAL
        LOCATE L_0007
        LINE 130
   130         type = symtype(sym)
        PUSH V_0055
        PUSH V_005d
        PUSH V_003e
        ACCESS
        ASSVAL
        LINE 131
   131         %return %unless type&15 = 0
        PUSH V_0055
        PUSHI #0x0000000f
        AND
        PUSHI #0x00000000
        JUMPIF = L_0007
        RETURN
        LOCATE L_0007
        LINE 132
   132         %exit %unless type=32
        PUSH V_0055
        PUSHI #0x00000020
        JUMPIF = L_0007
        GOTO L_0004
        LOCATE L_0007
        LINE 133
   133         pos1 = pos2;  pos2 = pos3
        PUSH V_0048
        PUSH V_0049
        ASSVAL
        LINE 133
        PUSH V_0049
        PUSH V_004a
        ASSVAL
        LINE 134
   134         pos3 = (sym-'X')<<6+1
        PUSH V_004a
        PUSH V_003e
        PUSHI #0x00000058
        SUB
        PUSHI #0x00000006
        LSH
        PUSHI #0x00000001
        ADD
        ASSVAL
        LINE 135
   135      %repeat
        REPEAT L_0003
        LOCATE L_0004
        LINE 136
   136      %if type = 0 %start
        PUSH V_0055
        PUSHI #0x00000000
        JUMPIF # L_0004
        LINE 137
   137         num = sym-'0'
        PUSH V_0041
        PUSH V_003e
        PUSHI #0x00000030
        SUB
        ASSVAL
        LINE 138
   138         %cycle
        LOCATE L_0006
        LINE 139
   139            read symbol(pend)
        PUSH V_0003
        PUSH V_0057
        ASSPAR
        CALL
        LINE 140
   140            %exit %unless '0' <= pend <= '9'
        PUSHI #0x00000030
        PUSH V_0057
        JUMPIFD > L_000b
        PUSHI #0x00000039
        JUMPIF <= L_000a
        LOCATE L_000b
        GOTO L_0007
        LOCATE L_000a
        LINE 141
   141            num = (num<<2+num)<<1-'0'+pend
        PUSH V_0041
        PUSH V_0041
        PUSHI #0x00000002
        LSH
        PUSH V_0041
        ADD
        PUSHI #0x00000001
        LSH
        PUSHI #0x00000030
        SUB
        PUSH V_0057
        ADD
        ASSVAL
        LINE 142
   142         %repeat
        REPEAT L_0006
        LOCATE L_0007
        LINE 143
   143      %finish %else %start
        GOTO L_0003
        LOCATE L_0004
        LINE 144
   144         type = 0
        PUSH V_0055
        PUSHI #0x00000000
        ASSVAL
        LINE 145
   145         num = 0;   %return %if sym = '*'
        PUSH V_0041
        PUSHI #0x00000000
        ASSVAL
        LINE 145
        PUSH V_003e
        PUSHI #0x0000002a
        JUMPIF # L_0007
        RETURN
        LOCATE L_0007
        LINE 146
   146         num = stop+1;  %return %if sym = '?'
        PUSH V_0041
        PUSHI #0xffffec78
        PUSHI #0x00000001
        ADD
        ASSVAL
        LINE 146
        PUSH V_003e
        PUSHI #0x0000003f
        JUMPIF # L_0007
        RETURN
        LOCATE L_0007
        LINE 147
   147         num = stop;                          ! '!'
        PUSH V_0041
        PUSHI #0xffffec78
        ASSVAL
        LINE 148
   148      %finish
        LOCATE L_0003
        LINE 149
   149  %end
        END
        LINE 151
   150  
   151  %routine unchain
        DEF V_0060 UNCHAIN
        +   0x0007
        +   0x0000
        +   0x0000
        START
        FINISH
        LINE 152
   152      %cycle
        LOCATE L_0003
        LINE 153
   153         text = chain;  %return %if text = 0
        PUSH V_0040
        PUSH V_0056
        ASSVAL
        LINE 153
        PUSH V_0040
        PUSHI #0x00000000
        JUMPIF # L_0007
        RETURN
        LOCATE L_0007
        LINE 154
   154         chain = c(text+1);  c(text+1) = ci
        PUSH V_0056
        PUSH V_0043
        PUSH V_0040
        PUSHI #0x00000001
        ADD
        ACCESS
        ASSVAL
        LINE 154
        PUSH V_0043
        PUSH V_0040
        PUSHI #0x00000001
        ADD
        ACCESS
        PUSH V_0044
        ASSVAL
        LINE 155
   155      %repeat %until c(text) = 'X'
        PUSH V_0043
        PUSH V_0040
        ACCESS
        PUSHI #0x00000058
        JUMPIF = L_0004
        REPEAT L_0003
        LOCATE L_0004
        LINE 156
   156  %end
        END
        LINE 158
   157  
   158  %routine stack(%integer v)
        DEF V_0061 STACK
        +   0x0007
        +   0x0000
        +   0x0000
        START
        DEF V_0062 V
        +   0x0011
        +   0x0001
        +   0x0000
        FINISH
        LINE 159
   159      c(ci) = v;  ci = ci+1
        PUSH V_0043
        PUSH V_0044
        ACCESS
        PUSH V_0062
        ASSVAL
        LINE 159
        PUSH V_0044
        PUSH V_0044
        PUSHI #0x00000001
        ADD
        ASSVAL
        LINE 160
   160  %end
        END
        LINE 162
   161  
   162  %routine make space
        DEF V_0062 MAKESPACE
        +   0x0007
        +   0x0000
        +   0x0000
        START
        FINISH
        LINE 163
   163  %integer k,p1,p2
        DEF V_0063 K
        +   0x0011
        +   0x0001
        +   0x0000
        DEF V_0064 P1
        +   0x0011
        +   0x0001
        +   0x0000
        DEF V_0065 P2
        +   0x0011
        +   0x0001
        +   0x0000
        LINE 164
   164      %return %if mainfp-pp-240 > 0
        PUSH V_0042
        PUSH V_004f
        SUB
        PUSHI #0x000000f0
        SUB
        PUSHI #0x00000000
        JUMPIF <= L_0004
        RETURN
        LOCATE L_0004
        LINE 165
   165      select output(mout)
        PUSH V_0020
        PUSHI #0x00000001
        ASSPAR
        CALL
        LINE 166
   166      p1 = top;  p2 = (p1+lbeg)>>1;           !output about half
        PUSH V_0064
        PUSH V_004c
        ASSVAL
        LINE 166
        PUSH V_0065
        PUSH V_0064
        PUSH V_004e
        ADD
        PUSHI #0x00000001
        RSH
        ASSVAL
        LINE 167
   167      p2 = lbeg %if code = 'C';               !but all if closing
        PUSH V_003f
        PUSHI #0x00000043
        JUMPIF # L_0004
        PUSH V_0065
        PUSH V_004e
        ASSVAL
        LOCATE L_0004
        LINE 168
   168      %monitor %and %stop %if p2 = top;               !!!logical error
        PUSH V_0065
        PUSH V_004c
        JUMPIF # L_0004
        MONITOR
        STOP
        LOCATE L_0004
        LINE 169
   169      %cycle
        LOCATE L_0003
        LINE 170
   170         k = byte(p1);  print symbol(k);  p1 = p1+1
        PUSH V_0063
        PUSH V_004b
        PUSH V_0064
        ACCESS
        ASSVAL
        LINE 170
        PUSH V_001c
        PUSH V_0063
        ASSPAR
        CALL
        LINE 170
        PUSH V_0064
        PUSH V_0064
        PUSHI #0x00000001
        ADD
        ASSVAL
        LINE 171
   171      %repeat %until k = nl %and p1-p2 >= 0
        PUSH V_0063
        PUSHI #0x0000000a
        JUMPIF # L_0005
        PUSH V_0064
        PUSH V_0065
        SUB
        PUSHI #0x00000000
        JUMPIF >= L_0004
        LOCATE L_0005
        REPEAT L_0003
        LOCATE L_0004
        LINE 172
   172      select output(0)
        PUSH V_0020
        PUSHI #0x00000000
        ASSPAR
        CALL
        LINE 173
   173      lbeg = top+lbeg-p1;  p2 = pp;  pp = top
        PUSH V_004e
        PUSH V_004c
        PUSH V_004e
        ADD
        PUSH V_0064
        SUB
        ASSVAL
        LINE 173
        PUSH V_0065
        PUSH V_004f
        ASSVAL
        LINE 173
        PUSH V_004f
        PUSH V_004c
        ASSVAL
        LINE 174
   174      %cycle
        LOCATE L_0003
        LINE 175
   175         %return %if p1 = p2
        PUSH V_0064
        PUSH V_0065
        JUMPIF # L_0007
        RETURN
        LOCATE L_0007
        LINE 176
   176         load pp(byte(p1));  p1 = p1+1
        PUSH V_0059
        PUSH V_004b
        PUSH V_0064
        ACCESS
        ASSPAR
        CALL
        LINE 176
        PUSH V_0064
        PUSH V_0064
        PUSHI #0x00000001
        ADD
        ASSVAL
        LINE 177
   177      %repeat
        REPEAT L_0003
        LINE 178
   178  %end
        END
        LINE 180
   179  
   180  %routine read line
        DEF V_0063 READLINE
        +   0x0007
        +   0x0000
        +   0x0000
        START
        FINISH
        LINE 181
   181  %integer k
        DEF V_0064 K
        +   0x0011
        +   0x0001
        +   0x0000
        LINE 185
   182  !    %on %event 9 %start
   183  !       ->eof
   184  !    %finish
   185      %if fp # fend %start
        PUSH V_0050
        PUSH V_0052
        JUMPIF = L_0004
        LINE 186
   186         lend = fp
        PUSH V_0051
        PUSH V_0050
        ASSVAL
        LINE 187
   187         lend = lend+1 %while byte(lend) # nl
        LOCATE L_0006
        PUSH V_004b
        PUSH V_0051
        ACCESS
        PUSHI #0x0000000a
        JUMPIF = L_0007
        PUSH V_0051
        PUSH V_0051
        PUSHI #0x00000001
        ADD
        ASSVAL
        REPEAT L_0006
        LOCATE L_0007
        LINE 188
   188         %return
        RETURN
        LINE 189
   189      %finish
        LOCATE L_0004
        LINE 190
   190      ms = 0;  print1 = 0;  print2 = 0
        PUSH V_0053
        PUSHI #0x00000000
        ASSVAL
        LINE 190
        PUSH V_0038
        PUSHI #0x00000000
        ASSVAL
        LINE 190
        PUSH V_0039
        PUSHI #0x00000000
        ASSVAL
        LINE 191
   191      select input(in)
        PUSH V_001f
        PUSH V_0036
        ASSPAR
        CALL
        LINE 192
   192      fp = bot-sextra+1
        PUSH V_0050
        PUSH V_004d
        PUSHI #0x0000007a
        SUB
        PUSHI #0x00000001
        ADD
        ASSVAL
        LINE 193
   193      %cycle
        LOCATE L_0003
        LINE 194
   194         %if fp # bot %then read symbol(k) %else k = nl
        PUSH V_0050
        PUSH V_004d
        JUMPIF = L_0007
        PUSH V_0003
        PUSH V_0064
        ASSPAR
        CALL
        GOTO L_0006
        LOCATE L_0007
        PUSH V_0064
        PUSHI #0x0000000a
        ASSVAL
        LOCATE L_0006
        LINE 195
   195         ->eof %if k<0
        PUSH V_0064
        PUSHI #0x00000000
        JUMPIF >= L_0007
        JUMP L_0065
        LOCATE L_0007
        LINE 196
   196         load fp(k);  fp = fp+1
        PUSH V_005a
        PUSH V_0064
        ASSPAR
        CALL
        LINE 196
        PUSH V_0050
        PUSH V_0050
        PUSHI #0x00000001
        ADD
        ASSVAL
        LINE 197
   197      %repeat %until k = nl
        PUSH V_0064
        PUSHI #0x0000000a
        JUMPIF = L_0004
        REPEAT L_0003
        LOCATE L_0004
        LINE 198
   198      fend = fp; lend = fend-1
        PUSH V_0052
        PUSH V_0050
        ASSVAL
        LINE 198
        PUSH V_0051
        PUSH V_0052
        PUSHI #0x00000001
        SUB
        ASSVAL
        LINE 199
   199      fp = bot-sextra+1
        PUSH V_0050
        PUSH V_004d
        PUSHI #0x0000007a
        SUB
        PUSHI #0x00000001
        ADD
        ASSVAL
        LINE 200
   200      select input(0)
        PUSH V_001f
        PUSHI #0x00000000
        ASSPAR
        CALL
        LINE 201
   201      %return
        RETURN
        LINE 202
   202  eof:fp = bot;  lend = fp;  fend = lend
        LABEL L_0065
        LINE 202
        PUSH V_0050
        PUSH V_004d
        ASSVAL
        LINE 202
        PUSH V_0051
        PUSH V_0050
        ASSVAL
        LINE 202
        PUSH V_0052
        PUSH V_0051
        ASSVAL
        LINE 203
   203      load fp(nl)
        PUSH V_005a
        PUSHI #0x0000000a
        ASSPAR
        CALL
        LINE 204
   204      select input(0)
        PUSH V_001f
        PUSHI #0x00000000
        ASSPAR
        CALL
        LINE 205
   205  %end
        END
        LINE 207
   206  
   207  %routine switch inputs
        DEF V_0064 SWITCHINPUTS
        +   0x0007
        +   0x0000
        +   0x0000
        START
        FINISH
        LINE 208
   208  %owninteger mfp,mlend,mend,sfp,send
        DEF V_0065 MFP
        +   0x0011
        +   0x0001
        +   0x0021
        INIT 1
        DEF V_0066 MLEND
        +   0x0011
        +   0x0001
        +   0x0021
        INIT 1
        DEF V_0067 MEND
        +   0x0011
        +   0x0001
        +   0x0021
        INIT 1
        DEF V_0068 SFP
        +   0x0011
        +   0x0001
        +   0x0021
        INIT 1
        DEF V_0069 SEND
        +   0x0011
        +   0x0001
        +   0x0021
        INIT 1
        LINE 209
   209      %if in = min %start
        PUSH V_0036
        PUSHI #0x00000001
        JUMPIF # L_0004
        LINE 210
   210         left star
        PUSH V_005b
        CALL
        LINE 211
   211         in = sin
        PUSH V_0036
        PUSHI #0x00000002
        ASSVAL
        LINE 212
   212         mfp = fp;  mlend = lend;  mend = fend
        PUSH V_0065
        PUSH V_0050
        ASSVAL
        LINE 212
        PUSH V_0066
        PUSH V_0051
        ASSVAL
        LINE 212
        PUSH V_0067
        PUSH V_0052
        ASSVAL
        LINE 213
   213         mainfp == mfp
        PUSH V_0042
        PUSH V_0065
        ASSREF
        LINE 214
   214         bot = bot+sextra;  fp = sfp; fend = send
        PUSH V_004d
        PUSH V_004d
        PUSHI #0x0000007a
        ADD
        ASSVAL
        LINE 214
        PUSH V_0050
        PUSH V_0068
        ASSVAL
        LINE 214
        PUSH V_0052
        PUSH V_0069
        ASSVAL
        LINE 215
   215         read line
        PUSH V_0063
        CALL
        LINE 216
   216      %finish %else %start
        GOTO L_0003
        LOCATE L_0004
        LINE 217
   217         pp = lbeg
        PUSH V_004f
        PUSH V_004e
        ASSVAL
        LINE 218
   218         in = min
        PUSH V_0036
        PUSHI #0x00000001
        ASSVAL
        LINE 219
   219         bot = bot-sextra;  sfp = fp;  send = fend
        PUSH V_004d
        PUSH V_004d
        PUSHI #0x0000007a
        SUB
        ASSVAL
        LINE 219
        PUSH V_0068
        PUSH V_0050
        ASSVAL
        LINE 219
        PUSH V_0069
        PUSH V_0052
        ASSVAL
        LINE 220
   220         fp = mfp;  lend = mlend;  fend = mend
        PUSH V_0050
        PUSH V_0065
        ASSVAL
        LINE 220
        PUSH V_0051
        PUSH V_0066
        ASSVAL
        LINE 220
        PUSH V_0052
        PUSH V_0067
        ASSVAL
        LINE 221
   221         mainfp == fp
        PUSH V_0042
        PUSH V_0050
        ASSREF
        LINE 222
   222      %finish
        LOCATE L_0003
        LINE 223
   223  %end
        END
        LINE 225
   224  
   225  %routine print line
        DEF V_0065 PRINTLINE
        +   0x0007
        +   0x0000
        +   0x0000
        START
        FINISH
        LINE 226
   226  %integer p
        DEF V_0066 P
        +   0x0011
        +   0x0001
        +   0x0000
        LINE 227
   227      print1 = lend;  print2 = fp+pp
        PUSH V_0038
        PUSH V_0051
        ASSVAL
        LINE 227
        PUSH V_0039
        PUSH V_0050
        PUSH V_004f
        ADD
        ASSVAL
        LINE 228
   228      p = lbeg
        PUSH V_0066
        PUSH V_004e
        ASSVAL
        LINE 229
   229      %cycle
        LOCATE L_0003
        LINE 230
   230         %if p = pp %start
        PUSH V_0066
        PUSH V_004f
        JUMPIF # L_0007
        LINE 231
   231            print symbol('^') %if p # lbeg %and num = 0
        PUSH V_0066
        PUSH V_004e
        JUMPIF = L_000a
        PUSH V_0041
        PUSHI #0x00000000
        JUMPIF # L_000a
        PUSH V_001c
        PUSHI #0x0000005e
        ASSPAR
        CALL
        LOCATE L_000a
        LINE 232
   232            p = fp
        PUSH V_0066
        PUSH V_0050
        ASSVAL
        LINE 233
   233         %finish
        LOCATE L_0007
        LINE 234
   234         %exit %if p = lend
        PUSH V_0066
        PUSH V_0051
        JUMPIF # L_0007
        GOTO L_0004
        LOCATE L_0007
        LINE 235
   235         print symbol(byte(p))
        PUSH V_001c
        PUSH V_004b
        PUSH V_0066
        ACCESS
        ASSPAR
        CALL
        LINE 236
   236         p = p+1
        PUSH V_0066
        PUSH V_0066
        PUSHI #0x00000001
        ADD
        ASSVAL
        LINE 237
   237      %repeat
        REPEAT L_0003
        LOCATE L_0004
        LINE 238
   238      print string("**END**") %if p = fend
        PUSH V_0066
        PUSH V_0052
        JUMPIF # L_0004
        PUSH V_001d
        PUSHS "**END**"
        ASSPAR
        CALL
        LOCATE L_0004
        LINE 239
   239      newline
        PUSH V_0030
        CALL
        LINE 240
   240  %end
        END
        LINE 242
   241  
   242  %integerfn matched
        DEF V_0066 MATCHED
        +   0x0018
        +   0x0001
        +   0x0010
        START
        FINISH
        LINE 243
   243  %integer i,j,k,l,t1,fp1,lim
        DEF V_0067 I
        +   0x0011
        +   0x0001
        +   0x0000
        DEF V_0068 J
        +   0x0011
        +   0x0001
        +   0x0000
        DEF V_0069 K
        +   0x0011
        +   0x0001
        +   0x0000
        DEF V_006a L
        +   0x0011
        +   0x0001
        +   0x0000
        DEF V_006b T1
        +   0x0011
        +   0x0001
        +   0x0000
        DEF V_006c FP1
        +   0x0011
        +   0x0001
        +   0x0000
        DEF V_006d LIM
        +   0x0011
        +   0x0001
        +   0x0000
        LINE 244
   244      lim = c(ci-3)&(\127);  t1 = c(text)
        PUSH V_006d
        PUSH V_0043
        PUSH V_0044
        PUSHI #0x00000003
        SUB
        ACCESS
        PUSHI #0x0000007f
        NOT
        AND
        ASSVAL
        LINE 244
        PUSH V_006b
        PUSH V_0043
        PUSH V_0040
        ACCESS
        ASSVAL
        LINE 245
   245  L1:  pp1 = pp;  fp1 = fp
        LABEL L_006e
        LINE 245
        PUSH V_003d
        PUSH V_004f
        ASSVAL
        LINE 245
        PUSH V_006c
        PUSH V_0050
        ASSVAL
        LINE 246
   246      ->L3 %unless fp = ms %and (code='F' %or code='U')
        PUSH V_0050
        PUSH V_0053
        JUMPIF # L_0005
        PUSH V_003f
        PUSHI #0x00000046
        JUMPIF = L_0004
        PUSH V_003f
        PUSHI #0x00000055
        JUMPIF = L_0004
        LOCATE L_0005
        JUMP L_006f
        LOCATE L_0004
        LINE 247
   247      k = byte(fp)
        PUSH V_0069
        PUSH V_004b
        PUSH V_0050
        ACCESS
        ASSVAL
        LINE 248
   248  L2:  load pp(k); fp = fp+1
        LABEL L_0070
        LINE 248
        PUSH V_0059
        PUSH V_0069
        ASSPAR
        CALL
        LINE 248
        PUSH V_0050
        PUSH V_0050
        PUSHI #0x00000001
        ADD
        ASSVAL
        LINE 249
   249  L3:  ->L10 %if fp = lend
        LABEL L_006f
        LINE 249
        PUSH V_0050
        PUSH V_0051
        JUMPIF # L_0004
        JUMP L_0071
        LOCATE L_0004
        LINE 250
   250      k = byte(fp)
        PUSH V_0069
        PUSH V_004b
        PUSH V_0050
        ACCESS
        ASSVAL
        LINE 251
   251      ->L2 %unless k = t1
        PUSH V_0069
        PUSH V_006b
        JUMPIF = L_0004
        JUMP L_0070
        LOCATE L_0004
        LINE 252
   252      i = fp;  j = text
        PUSH V_0067
        PUSH V_0050
        ASSVAL
        LINE 252
        PUSH V_0068
        PUSH V_0040
        ASSVAL
        LINE 253
   253  L6:  i = i+1;  j = j-1
        LABEL L_0072
        LINE 253
        PUSH V_0067
        PUSH V_0067
        PUSHI #0x00000001
        ADD
        ASSVAL
        LINE 253
        PUSH V_0068
        PUSH V_0068
        PUSHI #0x00000001
        SUB
        ASSVAL
        LINE 254
   254      l = c(j)
        PUSH V_006a
        PUSH V_0043
        PUSH V_0068
        ACCESS
        ASSVAL
        LINE 255
   255      ->L6 %if byte(i) = l
        PUSH V_004b
        PUSH V_0067
        ACCESS
        PUSH V_006a
        JUMPIF # L_0004
        JUMP L_0072
        LOCATE L_0004
        LINE 256
   256      ->L2 %if l # 0
        PUSH V_006a
        PUSHI #0x00000000
        JUMPIF = L_0004
        JUMP L_0070
        LOCATE L_0004
        LINE 257
   257      ms = fp;  ml = i
        PUSH V_0053
        PUSH V_0050
        ASSVAL
        LINE 257
        PUSH V_0054
        PUSH V_0067
        ASSVAL
        LINE 258
   258      %result = 1
        PUSHI #0x00000001
        RESULT
        LINE 259
   259  L10: lim = lim-128
        LABEL L_0071
        LINE 259
        PUSH V_006d
        PUSH V_006d
        PUSHI #0x00000080
        SUB
        ASSVAL
        LINE 260
   260      %if lim # 0 %and fp # fend %start
        PUSH V_006d
        PUSHI #0x00000000
        JUMPIF = L_0004
        PUSH V_0050
        PUSH V_0052
        JUMPIF = L_0004
        LINE 261
   261         %if code # 'U' %start
        PUSH V_003f
        PUSHI #0x00000055
        JUMPIF = L_0007
        LINE 262
   262            load pp(nl);  lbeg = pp
        PUSH V_0059
        PUSHI #0x0000000a
        ASSPAR
        CALL
        LINE 262
        PUSH V_004e
        PUSH V_004f
        ASSVAL
        LINE 263
   263         %finish %else pp = pp1
        GOTO L_0006
        LOCATE L_0007
        PUSH V_004f
        PUSH V_003d
        ASSVAL
        LOCATE L_0006
        LINE 264
   264         fp = fp+1;  make space;  read line
        PUSH V_0050
        PUSH V_0050
        PUSHI #0x00000001
        ADD
        ASSVAL
        LINE 264
        PUSH V_0062
        CALL
        LINE 264
        PUSH V_0063
        CALL
        LINE 265
   265         ->L1
        JUMP L_006e
        LINE 266
   266      %finish
        LOCATE L_0004
        LINE 267
   267      pp = pp1;  fp = fp1
        PUSH V_004f
        PUSH V_003d
        ASSVAL
        LINE 267
        PUSH V_0050
        PUSH V_006c
        ASSVAL
        LINE 268
   268      %result = 0
        PUSHI #0x00000000
        RESULT
        LINE 269
   269  %end
        END
        LINE 272
   270  
   271  
   272  %externalintegerfn main;                                     !edit15: ecce for pdp9/15
        DEF V_0067 MAIN
        +   0x0018
        +   0x0001
        +   0x0033
        START
        FINISH
        LINE 274
   273  !initialise
   274  %switch t(0:12)
        PUSHI #0x00000000
        PUSHI #0x0000000c
        BOUNDS
        DEF V_0068 T
        +   0x0006
        +   0x0000
        +   0x0000
        LINE 275
   275  %switch s('A':'\')
        PUSHI #0x00000041
        PUSHI #0x0000005c
        BOUNDS
        DEF V_0069 S
        +   0x0006
        +   0x0000
        +   0x0000
        LINE 282
   276  
   277  !%on %event 9 %start
   278  !    printstring("Caught event"); newline
   279  !    ->eof
   280  !%finish
   281  
   282      select input(0)
        PUSH V_001f
        PUSHI #0x00000000
        ASSPAR
        CALL
        LINE 283
   283      pp = top-1;  load pp(nl);               !for bouncing off
        PUSH V_004f
        PUSH V_004c
        PUSHI #0x00000001
        SUB
        ASSVAL
        LINE 283
        PUSH V_0059
        PUSHI #0x0000000a
        ASSPAR
        CALL
        LINE 284
   284      lbeg = pp;  mainfp == fp
        PUSH V_004e
        PUSH V_004f
        ASSVAL
        LINE 284
        PUSH V_0042
        PUSH V_0050
        ASSREF
        LINE 285
   285      stored(1) = nl;  stored(65) = nl;  stored(129) = nl
        PUSH V_0047
        PUSHI #0x00000001
        ACCESS
        PUSHI #0x0000000a
        ASSVAL
        LINE 285
        PUSH V_0047
        PUSHI #0x00000041
        ACCESS
        PUSHI #0x0000000a
        ASSVAL
        LINE 285
        PUSH V_0047
        PUSHI #0x00000081
        ACCESS
        PUSHI #0x0000000a
        ASSVAL
        LINE 286
   286      select output(0); print string("EDIT
        PUSH V_0020
        PUSHI #0x00000000
        ASSPAR
        CALL
        LINE 286
        PUSH V_001d
        PUSHS "EDIT\n"
        ASSPAR
        CALL
        LINE 288
   287  ")
   288      read line
        PUSH V_0063
        CALL
        LINE 292
   289  
   290  !read command line
   291  
   292  L1:  prompt(">")
        LABEL L_006a
        LINE 292
        PUSH V_0058
        PUSHS ">"
        ASSPAR
        CALL
        LINE 293
   293      read item; ->eof %if sym<0; ->L1 %if type = 1
        PUSH V_005f
        CALL
        LINE 293
        PUSH V_003e
        PUSHI #0x00000000
        JUMPIF >= L_0004
        JUMP L_006b
        LOCATE L_0004
        LINE 293
        PUSH V_0055
        PUSHI #0x00000001
        JUMPIF # L_0004
        JUMP L_006a
        LOCATE L_0004
        LINE 294
   294      ci = cbase;  ti = tbase;  chain = 0
        PUSH V_0044
        PUSHI #0x00000001
        ASSVAL
        LINE 294
        PUSH V_0045
        PUSHI #0x00000078
        ASSVAL
        LINE 294
        PUSH V_0056
        PUSHI #0x00000000
        ASSVAL
        LINE 295
   295      %if type = 0 %and cmax # 0 %start
        PUSH V_0055
        PUSHI #0x00000000
        JUMPIF # L_0004
        PUSH V_0046
        PUSHI #0x00000000
        JUMPIF = L_0004
        LINE 296
   296         c(cmax+2) = num
        PUSH V_0043
        PUSH V_0046
        PUSHI #0x00000002
        ADD
        ACCESS
        PUSH V_0041
        ASSVAL
        LINE 297
   297         read item;  ->er2 %if type # 1
        PUSH V_005f
        CALL
        LINE 297
        PUSH V_0055
        PUSHI #0x00000001
        JUMPIF = L_0007
        JUMP L_006c
        LOCATE L_0007
        LINE 298
   298         ->go
        JUMP L_006d
        LINE 299
   299      %finish
        LOCATE L_0004
        LINE 300
   300      %if sym = '%' %start
        PUSH V_003e
        PUSHI #0x00000025
        JUMPIF # L_0004
        LINE 301
   301         read sym; sym = sym-32 %if sym >= 96
        PUSH V_005e
        CALL
        LINE 301
        PUSH V_003e
        PUSHI #0x00000060
        JUMPIF < L_0007
        PUSH V_003e
        PUSH V_003e
        PUSHI #0x00000020
        SUB
        ASSVAL
        LOCATE L_0007
        LINE 302
   302         code = sym;  ->er5 %if code<=32
        PUSH V_003f
        PUSH V_003e
        ASSVAL
        LINE 302
        PUSH V_003f
        PUSHI #0x00000020
        JUMPIF > L_0007
        JUMP L_006e
        LOCATE L_0007
        LINE 303
   303         read item
        PUSH V_005f
        CALL
        LINE 304
   304         ->t(symtype(code)>>4)
        PUSH V_005d
        PUSH V_003f
        ACCESS
        PUSHI #0x00000004
        RSH
        SJUMP 104
        LINE 305
   305      %finish
        LOCATE L_0004
        LINE 306
   306  L2:  i = type&15;  ->er2 %if i < 4
        LABEL L_006f
        LINE 306
        PUSH V_003a
        PUSH V_0055
        PUSHI #0x0000000f
        AND
        ASSVAL
        LINE 306
        PUSH V_003a
        PUSHI #0x00000004
        JUMPIF >= L_0004
        JUMP L_006c
        LOCATE L_0004
        LINE 307
   307      code = sym;  text = 0;  num = 1;        !default values
        PUSH V_003f
        PUSH V_003e
        ASSVAL
        LINE 307
        PUSH V_0040
        PUSHI #0x00000000
        ASSVAL
        LINE 307
        PUSH V_0041
        PUSHI #0x00000001
        ASSVAL
        LINE 308
   308      read item
        PUSH V_005f
        CALL
        LINE 309
   309      ->t(i)
        PUSH V_003a
        SJUMP 104
        LINE 310
   310  t(2):                                       !%x, %y, %z
        PUSHI #0x00000002
        SLABEL 104
        LINE 311
   311      ->er1 %if sym # '='
        PUSH V_003e
        PUSHI #0x0000003d
        JUMPIF = L_0004
        JUMP L_0070
        LOCATE L_0004
        LINE 312
   312      i = (code-'X')<<6
        PUSH V_003a
        PUSH V_003f
        PUSHI #0x00000058
        SUB
        PUSHI #0x00000006
        LSH
        ASSVAL
        LINE 313
   313      %cycle
        LOCATE L_0003
        LINE 314
   314         read sym
        PUSH V_005e
        CALL
        LINE 315
   315         i = i+1;  stored(i) = sym
        PUSH V_003a
        PUSH V_003a
        PUSHI #0x00000001
        ADD
        ASSVAL
        LINE 315
        PUSH V_0047
        PUSH V_003a
        ACCESS
        PUSH V_003e
        ASSVAL
        LINE 316
   316         ->L1 %if sym = nl
        PUSH V_003e
        PUSHI #0x0000000a
        JUMPIF # L_0007
        JUMP L_006a
        LOCATE L_0007
        LINE 317
   317      %repeat
        REPEAT L_0003
        LINE 318
   318  t(3):                                       !%m, %f, %q
        PUSHI #0x00000003
        SLABEL 104
        LINE 319
   319      mon = 'M'-code
        PUSH V_0037
        PUSHI #0x0000004d
        PUSH V_003f
        SUB
        ASSVAL
        LINE 320
   320      ->L1
        JUMP L_006a
        LINE 321
   321  t(4):                                       !find
        PUSHI #0x00000004
        SLABEL 104
        LINE 322
   322      num = 0 %unless type = 0
        PUSH V_0055
        PUSHI #0x00000000
        JUMPIF = L_0004
        PUSH V_0041
        PUSHI #0x00000000
        ASSVAL
        LOCATE L_0004
        LINE 323
   323  t(5):                                       !+del,trav,uncover
        PUSHI #0x00000005
        SLABEL 104
        LINE 324
   324      code = num<<7+code;  num = 1
        PUSH V_003f
        PUSH V_0041
        PUSHI #0x00000007
        LSH
        PUSH V_003f
        ADD
        ASSVAL
        LINE 324
        PUSH V_0041
        PUSHI #0x00000001
        ASSVAL
        LINE 325
   325      read item %if type = 0
        PUSH V_0055
        PUSHI #0x00000000
        JUMPIF # L_0004
        PUSH V_005f
        CALL
        LOCATE L_0004
        LINE 326
   326  t(6):                                       !+insert,subst,verify
        PUSHI #0x00000006
        SLABEL 104
        LINE 327
   327      ->er4 %if type # 3
        PUSH V_0055
        PUSHI #0x00000003
        JUMPIF = L_0004
        JUMP L_0071
        LOCATE L_0004
        LINE 328
   328      text = ti;  i = sym
        PUSH V_0040
        PUSH V_0045
        ASSVAL
        LINE 328
        PUSH V_003a
        PUSH V_003e
        ASSVAL
        LINE 329
   329  L61: read sym
        LABEL L_0072
        LINE 329
        PUSH V_005e
        CALL
        LINE 330
   330      %if sym # nl %start
        PUSH V_003e
        PUSHI #0x0000000a
        JUMPIF = L_0004
        LINE 331
   331         %if sym # i %start
        PUSH V_003e
        PUSH V_003a
        JUMPIF = L_0007
        LINE 332
   332            ->er6 %if ti <= ci
        PUSH V_0045
        PUSH V_0044
        JUMPIF > L_000a
        JUMP L_0073
        LOCATE L_000a
        LINE 333
   333            c(ti) = sym;  ti = ti-1
        PUSH V_0043
        PUSH V_0045
        ACCESS
        PUSH V_003e
        ASSVAL
        LINE 333
        PUSH V_0045
        PUSH V_0045
        PUSHI #0x00000001
        SUB
        ASSVAL
        LINE 334
   334            ->L61
        JUMP L_0072
        LINE 335
   335         %finish
        LOCATE L_0007
        LINE 336
   336      %finish %else %start
        GOTO L_0003
        LOCATE L_0004
        LINE 337
   337         pend = sym
        PUSH V_0057
        PUSH V_003e
        ASSVAL
        LINE 338
   338         ->er4 %unless code = 'S' %or code = 'I'
        PUSH V_003f
        PUSHI #0x00000053
        JUMPIF = L_0007
        PUSH V_003f
        PUSHI #0x00000049
        JUMPIF = L_0007
        JUMP L_0071
        LOCATE L_0007
        LINE 339
   339      %finish
        LOCATE L_0003
        LINE 340
   340      ->er4 %if ti = text %and code # 'S'
        PUSH V_0045
        PUSH V_0040
        JUMPIF # L_0004
        PUSH V_003f
        PUSHI #0x00000053
        JUMPIF = L_0004
        JUMP L_0071
        LOCATE L_0004
        LINE 341
   341      c(ti) = 0;  ti = ti-1
        PUSH V_0043
        PUSH V_0045
        ACCESS
        PUSHI #0x00000000
        ASSVAL
        LINE 341
        PUSH V_0045
        PUSH V_0045
        PUSHI #0x00000001
        SUB
        ASSVAL
        LINE 342
   342      ->L81
        JUMP L_0074
        LINE 343
   343  t(8):                                       !move,erase
        PUSHI #0x00000008
        SLABEL 104
        LINE 344
   344      ->L100 %unless sym = '-'
        PUSH V_003e
        PUSHI #0x0000002d
        JUMPIF = L_0004
        JUMP L_0075
        LOCATE L_0004
        LINE 345
   345      code = code+10
        PUSH V_003f
        PUSH V_003f
        PUSHI #0x0000000a
        ADD
        ASSVAL
        LINE 346
   346  L81: read item
        LABEL L_0074
        LINE 346
        PUSH V_005f
        CALL
        LINE 347
   347      ->L101
        JUMP L_0076
        LINE 348
   348  t(9):                                       !close bracket
        PUSHI #0x00000009
        SLABEL 104
        LINE 349
   349      unchain;  ->er3 %if text = 0
        PUSH V_0060
        CALL
        LINE 349
        PUSH V_0040
        PUSHI #0x00000000
        JUMPIF # L_0004
        JUMP L_0077
        LOCATE L_0004
        LINE 350
   350      code = 'Z'; c(text+2) = num
        PUSH V_003f
        PUSHI #0x0000005a
        ASSVAL
        LINE 350
        PUSH V_0043
        PUSH V_0040
        PUSHI #0x00000002
        ADD
        ACCESS
        PUSH V_0041
        ASSVAL
        LINE 351
   351      text = text+3
        PUSH V_0040
        PUSH V_0040
        PUSHI #0x00000003
        ADD
        ASSVAL
        LINE 352
   352  t(10):                                      !+get,kill,etc.
        PUSHI #0x0000000a
        SLABEL 104
        LINE 353
   353  L100:->er1 %if type = 3
        LABEL L_0075
        LINE 353
        PUSH V_0055
        PUSHI #0x00000003
        JUMPIF # L_0004
        JUMP L_0070
        LOCATE L_0004
        LINE 354
   354  L101:read item %if type = 0
        LABEL L_0076
        LINE 354
        PUSH V_0055
        PUSHI #0x00000000
        JUMPIF # L_0004
        PUSH V_005f
        CALL
        LOCATE L_0004
        LINE 355
   355      ->put
        JUMP L_0078
        LINE 356
   356  t(11):                                      !open bracket
        PUSHI #0x0000000b
        SLABEL 104
        LINE 357
   357      code = 'X'
        PUSH V_003f
        PUSHI #0x00000058
        ASSVAL
        LINE 358
   358      ->L121
        JUMP L_0079
        LINE 359
   359  t(12):                                      !comma
        PUSHI #0x0000000c
        SLABEL 104
        LINE 360
   360      code = 'Y'
        PUSH V_003f
        PUSHI #0x00000059
        ASSVAL
        LINE 361
   361      read item %if type = 1
        PUSH V_0055
        PUSHI #0x00000001
        JUMPIF # L_0004
        PUSH V_005f
        CALL
        LOCATE L_0004
        LINE 362
   362  L121:text = chain;  chain = ci
        LABEL L_0079
        LINE 362
        PUSH V_0040
        PUSH V_0056
        ASSVAL
        LINE 362
        PUSH V_0056
        PUSH V_0044
        ASSVAL
        LINE 363
   363      num = 0
        PUSH V_0041
        PUSHI #0x00000000
        ASSVAL
        LINE 364
   364  put:stack(code);  stack(text);  stack(num)
        LABEL L_0078
        LINE 364
        PUSH V_0061
        PUSH V_003f
        ASSPAR
        CALL
        LINE 364
        PUSH V_0061
        PUSH V_0040
        ASSPAR
        CALL
        LINE 364
        PUSH V_0061
        PUSH V_0041
        ASSPAR
        CALL
        LINE 365
   365      ->er6 %if ci+4 >= ti
        PUSH V_0044
        PUSHI #0x00000004
        ADD
        PUSH V_0045
        JUMPIF < L_0004
        JUMP L_0073
        LOCATE L_0004
        LINE 366
   366      ->L2 %unless type = 1
        PUSH V_0055
        PUSHI #0x00000001
        JUMPIF = L_0004
        JUMP L_006f
        LOCATE L_0004
        LINE 367
   367      unchain;  ->er3 %if text # 0
        PUSH V_0060
        CALL
        LINE 367
        PUSH V_0040
        PUSHI #0x00000000
        JUMPIF = L_0004
        JUMP L_0077
        LOCATE L_0004
        LINE 368
   368      cmax = ci
        PUSH V_0046
        PUSH V_0044
        ASSVAL
        LINE 369
   369      stack('Z');  stack(cbase);  stack(1);   !extra close b
        PUSH V_0061
        PUSHI #0x0000005a
        ASSPAR
        CALL
        LINE 369
        PUSH V_0061
        PUSHI #0x00000001
        ASSPAR
        CALL
        LINE 369
        PUSH V_0061
        PUSHI #0x00000001
        ASSPAR
        CALL
        LINE 370
   370      stack(0)
        PUSH V_0061
        PUSHI #0x00000000
        ASSPAR
        CALL
        LINE 371
   371      ->go
        JUMP L_006d
        LINE 375
   372  
   373  !command input error reports
   374  
   375  er1:space;  print symbol(code)
        LABEL L_0070
        LINE 375
        PUSH V_002e
        CALL
        LINE 375
        PUSH V_001c
        PUSH V_003f
        ASSPAR
        CALL
        LINE 376
   376  er2:code = sym
        LABEL L_006c
        LINE 376
        PUSH V_003f
        PUSH V_003e
        ASSVAL
        LINE 377
   377      ->er5
        JUMP L_006e
        LINE 378
   378  er3:print string(" ()")
        LABEL L_0077
        LINE 378
        PUSH V_001d
        PUSHS " ()"
        ASSPAR
        CALL
        LINE 379
   379      ->er7
        JUMP L_007a
        LINE 380
   380  er4:print string(" TEXT FOR")
        LABEL L_0071
        LINE 380
        PUSH V_001d
        PUSHS " TEXT FOR"
        ASSPAR
        CALL
        LINE 381
   381  t(0):
        PUSHI #0x00000000
        SLABEL 104
        LINE 382
   382  er5:space;  print symbol(code&127)
        LABEL L_006e
        LINE 382
        PUSH V_002e
        CALL
        LINE 382
        PUSH V_001c
        PUSH V_003f
        PUSHI #0x0000007f
        AND
        ASSPAR
        CALL
        LINE 383
   383      ->er7
        JUMP L_007a
        LINE 384
   384  er6:print string(" SIZE")
        LABEL L_0073
        LINE 384
        PUSH V_001d
        PUSHS " SIZE"
        ASSPAR
        CALL
        LINE 385
   385  er7:print symbol('?')
        LABEL L_007a
        LINE 385
        PUSH V_001c
        PUSHI #0x0000003f
        ASSPAR
        CALL
        LINE 386
   386      newline;  cmax = 0 %if ci # cbase
        PUSH V_0030
        CALL
        LINE 386
        PUSH V_0044
        PUSHI #0x00000001
        JUMPIF = L_0004
        PUSH V_0046
        PUSHI #0x00000000
        ASSVAL
        LOCATE L_0004
        LINE 387
   387  L10: ->L1 %if sym<32
        LABEL L_007b
        LINE 387
        PUSH V_003e
        PUSHI #0x00000020
        JUMPIF >= L_0004
        JUMP L_006a
        LOCATE L_0004
        LINE 388
   388      read sym
        PUSH V_005e
        CALL
        LINE 389
   389      ->L10
        JUMP L_007b
        LINE 393
   390  
   391  !execute command line
   392  
   393  go: ci = cbase
        LABEL L_006d
        LINE 393
        PUSH V_0044
        PUSHI #0x00000001
        ASSVAL
        LINE 394
   394  get:code = c(ci)&127;  ->L99 %if code = 0
        LABEL L_007c
        LINE 394
        PUSH V_003f
        PUSH V_0043
        PUSH V_0044
        ACCESS
        PUSHI #0x0000007f
        AND
        ASSVAL
        LINE 394
        PUSH V_003f
        PUSHI #0x00000000
        JUMPIF # L_0004
        JUMP L_007d
        LOCATE L_0004
        LINE 395
   395      text = c(ci+1)
        PUSH V_0040
        PUSH V_0043
        PUSH V_0044
        PUSHI #0x00000001
        ADD
        ACCESS
        ASSVAL
        LINE 396
   396      num = c(ci+2)
        PUSH V_0041
        PUSH V_0043
        PUSH V_0044
        PUSHI #0x00000002
        ADD
        ACCESS
        ASSVAL
        LINE 397
   397      ci = ci+3
        PUSH V_0044
        PUSH V_0044
        PUSHI #0x00000003
        ADD
        ASSVAL
        LINE 398
   398  rep:num = num-1
        LABEL L_007e
        LINE 398
        PUSH V_0041
        PUSH V_0041
        PUSHI #0x00000001
        SUB
        ASSVAL
        LINE 399
   399      ->s(code)
        PUSH V_003f
        SJUMP 105
        LINE 400
   400  ok: ->rep %unless num = 0 %or num = stop
        LABEL L_007f
        LINE 400
        PUSH V_0041
        PUSHI #0x00000000
        JUMPIF = L_0004
        PUSH V_0041
        PUSHI #0xffffec78
        JUMPIF = L_0004
        JUMP L_007e
        LOCATE L_0004
        LINE 401
   401      ->get
        JUMP L_007c
        LINE 402
   402  s('\'):                                     !invert
        PUSHI #0x0000005c
        SLABEL 105
        LINE 403
   403  no: ->get %if num < 0
        LABEL L_0080
        LINE 403
        PUSH V_0041
        PUSHI #0x00000000
        JUMPIF >= L_0004
        JUMP L_007c
        LOCATE L_0004
        LINE 404
   404      ci = ci+3 %and ->get %if c(ci) = '\'
        PUSH V_0043
        PUSH V_0044
        ACCESS
        PUSHI #0x0000005c
        JUMPIF # L_0004
        PUSH V_0044
        PUSH V_0044
        PUSHI #0x00000003
        ADD
        ASSVAL
        JUMP L_007c
        LOCATE L_0004
        LINE 405
   405  skp:i = c(ci);  ci = c(ci+1) %if i = 'X'
        LABEL L_0081
        LINE 405
        PUSH V_003a
        PUSH V_0043
        PUSH V_0044
        ACCESS
        ASSVAL
        LINE 405
        PUSH V_003a
        PUSHI #0x00000058
        JUMPIF # L_0004
        PUSH V_0044
        PUSH V_0043
        PUSH V_0044
        PUSHI #0x00000001
        ADD
        ACCESS
        ASSVAL
        LOCATE L_0004
        LINE 406
   406      ci = ci+3
        PUSH V_0044
        PUSH V_0044
        PUSHI #0x00000003
        ADD
        ASSVAL
        LINE 407
   407      num = c(ci-1)-1 %and ->no %if i > 'X'
        PUSH V_003a
        PUSHI #0x00000058
        JUMPIF <= L_0004
        PUSH V_0041
        PUSH V_0043
        PUSH V_0044
        PUSHI #0x00000001
        SUB
        ACCESS
        PUSHI #0x00000001
        SUB
        ASSVAL
        JUMP L_0080
        LOCATE L_0004
        LINE 408
   408      ->skp %if i # 0
        PUSH V_003a
        PUSHI #0x00000000
        JUMPIF = L_0004
        JUMP L_0081
        LOCATE L_0004
        LINE 412
   409  
   410  !execution error report
   411  
   412      print string("FAILURE: ")
        PUSH V_001d
        PUSHS "FAILURE: "
        ASSPAR
        CALL
        LINE 413
   413      %if code='O' %or code='W' %start
        PUSH V_003f
        PUSHI #0x0000004f
        JUMPIF = L_0005
        PUSH V_003f
        PUSHI #0x00000057
        JUMPIF # L_0004
        LOCATE L_0005
        LINE 414
   414         print symbol(code-10);  code = '-'
        PUSH V_001c
        PUSH V_003f
        PUSHI #0x0000000a
        SUB
        ASSPAR
        CALL
        LINE 414
        PUSH V_003f
        PUSHI #0x0000002d
        ASSVAL
        LINE 415
   415      %finish
        LOCATE L_0004
        LINE 416
   416      print symbol(code)
        PUSH V_001c
        PUSH V_003f
        ASSPAR
        CALL
        LINE 417
   417      %if text # 0 %start
        PUSH V_0040
        PUSHI #0x00000000
        JUMPIF = L_0004
        LINE 418
   418         print symbol('''')
        PUSH V_001c
        PUSHI #0x00000027
        ASSPAR
        CALL
        LINE 419
   419         %while c(text) # 0 %cycle
        LOCATE L_0006
        PUSH V_0043
        PUSH V_0040
        ACCESS
        PUSHI #0x00000000
        JUMPIF = L_0007
        LINE 420
   420            print symbol(c(text))
        PUSH V_001c
        PUSH V_0043
        PUSH V_0040
        ACCESS
        ASSPAR
        CALL
        LINE 421
   421            text = text-1
        PUSH V_0040
        PUSH V_0040
        PUSHI #0x00000001
        SUB
        ASSVAL
        LINE 422
   422         %repeat
        REPEAT L_0006
        LOCATE L_0007
        LINE 423
   423         print symbol('''')
        PUSH V_001c
        PUSHI #0x00000027
        ASSPAR
        CALL
        LINE 424
   424      %finish
        LOCATE L_0004
        LINE 425
   425      newline
        PUSH V_0030
        CALL
        LINE 426
   426      print1 = 0
        PUSH V_0038
        PUSHI #0x00000000
        ASSVAL
        LINE 430
   427  
   428  !end of command line
   429  
   430  L99: ->L1 %if sym # nl
        LABEL L_007d
        LINE 430
        PUSH V_003e
        PUSHI #0x0000000a
        JUMPIF = L_0004
        JUMP L_006a
        LOCATE L_0004
        LINE 431
   431      ->L1 %unless (mon>=0 %and print1#lend) %or (mon>0 %and print2#fp+pp)
        PUSH V_0037
        PUSHI #0x00000000
        JUMPIF < L_0005
        PUSH V_0038
        PUSH V_0051
        JUMPIF # L_0004
        LOCATE L_0005
        PUSH V_0037
        PUSHI #0x00000000
        JUMPIF <= L_0005
        PUSH V_0039
        PUSH V_0050
        PUSH V_004f
        ADD
        JUMPIF # L_0004
        LOCATE L_0005
        JUMP L_006a
        LOCATE L_0004
        LINE 432
   432      num = 0; print line
        PUSH V_0041
        PUSHI #0x00000000
        ASSVAL
        LINE 432
        PUSH V_0065
        CALL
        LINE 433
   433      ->L1
        JUMP L_006a
        LINE 437
   434  
   435  !individual commands
   436  
   437  s('X'):                                     !open bracket
        PUSHI #0x00000058
        SLABEL 105
        LINE 438
   438      c(text+2) = num+1
        PUSH V_0043
        PUSH V_0040
        PUSHI #0x00000002
        ADD
        ACCESS
        PUSH V_0041
        PUSHI #0x00000001
        ADD
        ASSVAL
        LINE 439
   439      ->get
        JUMP L_007c
        LINE 440
   440  s('Z'):                                     !close bracket
        PUSHI #0x0000005a
        SLABEL 105
        LINE 441
   441      ->get %if num = 0 %or num = stop
        PUSH V_0041
        PUSHI #0x00000000
        JUMPIF = L_0005
        PUSH V_0041
        PUSHI #0xffffec78
        JUMPIF # L_0004
        LOCATE L_0005
        JUMP L_007c
        LOCATE L_0004
        LINE 442
   442      c(ci-1) = num
        PUSH V_0043
        PUSH V_0044
        PUSHI #0x00000001
        SUB
        ACCESS
        PUSH V_0041
        ASSVAL
        LINE 443
   443  s('Y'):                                     !+comma
        PUSHI #0x00000059
        SLABEL 105
        LINE 444
   444      ci = text
        PUSH V_0044
        PUSH V_0040
        ASSVAL
        LINE 445
   445      ->get
        JUMP L_007c
        LINE 446
   446  s('R'):                                     !right shift
        PUSHI #0x00000052
        SLABEL 105
        LINE 447
   447      ->no %if fp = lend
        PUSH V_0050
        PUSH V_0051
        JUMPIF # L_0004
        JUMP L_0080
        LOCATE L_0004
        LINE 448
   448      load pp(byte(fp));  fp = fp+1
        PUSH V_0059
        PUSH V_004b
        PUSH V_0050
        ACCESS
        ASSPAR
        CALL
        LINE 448
        PUSH V_0050
        PUSH V_0050
        PUSHI #0x00000001
        ADD
        ASSVAL
        LINE 449
   449      ->ok
        JUMP L_007f
        LINE 450
   450  s('L'):                                     !left shift
        PUSHI #0x0000004c
        SLABEL 105
        LINE 451
   451      ->no %if in = sin %or pp = lbeg
        PUSH V_0036
        PUSHI #0x00000002
        JUMPIF = L_0005
        PUSH V_004f
        PUSH V_004e
        JUMPIF # L_0004
        LOCATE L_0005
        JUMP L_0080
        LOCATE L_0004
        LINE 452
   452      fp = fp-1;  pp = pp-1;  load fp(byte(pp))
        PUSH V_0050
        PUSH V_0050
        PUSHI #0x00000001
        SUB
        ASSVAL
        LINE 452
        PUSH V_004f
        PUSH V_004f
        PUSHI #0x00000001
        SUB
        ASSVAL
        LINE 452
        PUSH V_005a
        PUSH V_004b
        PUSH V_004f
        ACCESS
        ASSPAR
        CALL
        LINE 453
   453      ms = 0
        PUSH V_0053
        PUSHI #0x00000000
        ASSVAL
        LINE 454
   454      ->ok
        JUMP L_007f
        LINE 455
   455  s('E'):                                     !erase
        PUSHI #0x00000045
        SLABEL 105
        LINE 456
   456      ->no %if fp = lend
        PUSH V_0050
        PUSH V_0051
        JUMPIF # L_0004
        JUMP L_0080
        LOCATE L_0004
        LINE 457
   457      fp = fp+1
        PUSH V_0050
        PUSH V_0050
        PUSHI #0x00000001
        ADD
        ASSVAL
        LINE 458
   458      ->ok
        JUMP L_007f
        LINE 459
   459  s('O'):                                     !erase back
        PUSHI #0x0000004f
        SLABEL 105
        LINE 460
   460      ->no %if pp = lbeg
        PUSH V_004f
        PUSH V_004e
        JUMPIF # L_0004
        JUMP L_0080
        LOCATE L_0004
        LINE 461
   461      pp = pp-1
        PUSH V_004f
        PUSH V_004f
        PUSHI #0x00000001
        SUB
        ASSVAL
        LINE 462
   462      ->ok
        JUMP L_007f
        LINE 463
   463  s('V'):                                     !verify
        PUSHI #0x00000056
        SLABEL 105
        LINE 464
   464      i = fp-1;  j = text+1
        PUSH V_003a
        PUSH V_0050
        PUSHI #0x00000001
        SUB
        ASSVAL
        LINE 464
        PUSH V_003b
        PUSH V_0040
        PUSHI #0x00000001
        ADD
        ASSVAL
        LINE 465
   465  v1: i = i+1; j = j-1
        LABEL L_0082
        LINE 465
        PUSH V_003a
        PUSH V_003a
        PUSHI #0x00000001
        ADD
        ASSVAL
        LINE 465
        PUSH V_003b
        PUSH V_003b
        PUSHI #0x00000001
        SUB
        ASSVAL
        LINE 466
   466      k = c(j)
        PUSH V_003c
        PUSH V_0043
        PUSH V_003b
        ACCESS
        ASSVAL
        LINE 467
   467      ->v1 %if byte(i) = k
        PUSH V_004b
        PUSH V_003a
        ACCESS
        PUSH V_003c
        JUMPIF # L_0004
        JUMP L_0082
        LOCATE L_0004
        LINE 468
   468      ->no %if k # 0
        PUSH V_003c
        PUSHI #0x00000000
        JUMPIF = L_0004
        JUMP L_0080
        LOCATE L_0004
        LINE 469
   469      ms = fp;  ml = i
        PUSH V_0053
        PUSH V_0050
        ASSVAL
        LINE 469
        PUSH V_0054
        PUSH V_003a
        ASSVAL
        LINE 470
   470      ->ok
        JUMP L_007f
        LINE 471
   471  s('F'):                                     !find
        PUSHI #0x00000046
        SLABEL 105
        LINE 472
   472      ->no %if matched = 0
        PUSH V_0066
        CALL
        PUSHI #0x00000000
        JUMPIF # L_0004
        JUMP L_0080
        LOCATE L_0004
        LINE 473
   473      ->ok
        JUMP L_007f
        LINE 474
   474  s('U'):                                     !uncover
        PUSHI #0x00000055
        SLABEL 105
        LINE 475
   475      ->no %if matched = 0;  pp = pp1
        PUSH V_0066
        CALL
        PUSHI #0x00000000
        JUMPIF # L_0004
        JUMP L_0080
        LOCATE L_0004
        LINE 475
        PUSH V_004f
        PUSH V_003d
        ASSVAL
        LINE 476
   476      ->ok
        JUMP L_007f
        LINE 477
   477  s('D'):                                     !delete
        PUSHI #0x00000044
        SLABEL 105
        LINE 478
   478      ->no %if matched = 0;  fp = ml
        PUSH V_0066
        CALL
        PUSHI #0x00000000
        JUMPIF # L_0004
        JUMP L_0080
        LOCATE L_0004
        LINE 478
        PUSH V_0050
        PUSH V_0054
        ASSVAL
        LINE 479
   479      ->ok
        JUMP L_007f
        LINE 480
   480  s('T'):                                     !traverse
        PUSHI #0x00000054
        SLABEL 105
        LINE 481
   481      ->no %if matched = 0
        PUSH V_0066
        CALL
        PUSHI #0x00000000
        JUMPIF # L_0004
        JUMP L_0080
        LOCATE L_0004
        LINE 482
   482  s('S'):                                     !+substitute
        PUSHI #0x00000053
        SLABEL 105
        LINE 483
   483      fp = ml %if fp = ms
        PUSH V_0050
        PUSH V_0053
        JUMPIF # L_0004
        PUSH V_0050
        PUSH V_0054
        ASSVAL
        LOCATE L_0004
        LINE 484
   484  s('I'):                                     !+insert
        PUSHI #0x00000049
        SLABEL 105
        LINE 485
   485      make space
        PUSH V_0062
        CALL
        LINE 487
   486  !!  ->no %if pp-lbeg+lend-fp > 80
   487      i = text
        PUSH V_003a
        PUSH V_0040
        ASSVAL
        LINE 488
   488  i1: ->ok %if c(i) = 0
        LABEL L_0083
        LINE 488
        PUSH V_0043
        PUSH V_003a
        ACCESS
        PUSHI #0x00000000
        JUMPIF # L_0004
        JUMP L_007f
        LOCATE L_0004
        LINE 489
   489      load pp(c(i));  i = i-1
        PUSH V_0059
        PUSH V_0043
        PUSH V_003a
        ACCESS
        ASSPAR
        CALL
        LINE 489
        PUSH V_003a
        PUSH V_003a
        PUSHI #0x00000001
        SUB
        ASSVAL
        LINE 490
   490      ->i1
        JUMP L_0083
        LINE 491
   491  s('G'):                                     !get (line from tt)
        PUSHI #0x00000047
        SLABEL 105
        LINE 492
   492      prompt(":")
        PUSH V_0058
        PUSHS ":"
        ASSPAR
        CALL
        LINE 494
   493  !!  make space
   494      read symbol(i)
        PUSH V_0003
        PUSH V_003a
        ASSPAR
        CALL
        LINE 495
   495      ->no %if i = ':'
        PUSH V_003a
        PUSHI #0x0000003a
        JUMPIF # L_0004
        JUMP L_0080
        LOCATE L_0004
        LINE 496
   496      left star
        PUSH V_005b
        CALL
        LINE 497
   497      %while i # nl %cycle
        LOCATE L_0003
        PUSH V_003a
        PUSHI #0x0000000a
        JUMPIF = L_0004
        LINE 498
   498         load pp(i)
        PUSH V_0059
        PUSH V_003a
        ASSPAR
        CALL
        LINE 499
   499         read symbol(i)
        PUSH V_0003
        PUSH V_003a
        ASSPAR
        CALL
        LINE 500
   500      %repeat
        REPEAT L_0003
        LOCATE L_0004
        LINE 501
   501  s('B'):                                     !+break (insert newline)
        PUSHI #0x00000042
        SLABEL 105
        LINE 502
   502      make space
        PUSH V_0062
        CALL
        LINE 503
   503      load pp(nl);  lbeg = pp
        PUSH V_0059
        PUSHI #0x0000000a
        ASSPAR
        CALL
        LINE 503
        PUSH V_004e
        PUSH V_004f
        ASSVAL
        LINE 504
   504      ->ok
        JUMP L_007f
        LINE 505
   505  s('P'):                                     !print
        PUSHI #0x00000050
        SLABEL 105
        LINE 506
   506      print line
        PUSH V_0065
        CALL
        LINE 507
   507      ->get %if num = 0
        PUSH V_0041
        PUSHI #0x00000000
        JUMPIF # L_0004
        JUMP L_007c
        LOCATE L_0004
        LINE 508
   508  s('M'):                                     !+move
        PUSHI #0x0000004d
        SLABEL 105
        LINE 509
   509      right star
        PUSH V_005c
        CALL
        LINE 510
   510      ->no %if fp = fend
        PUSH V_0050
        PUSH V_0052
        JUMPIF # L_0004
        JUMP L_0080
        LOCATE L_0004
        LINE 511
   511      load pp(nl); lbeg = pp
        PUSH V_0059
        PUSHI #0x0000000a
        ASSPAR
        CALL
        LINE 511
        PUSH V_004e
        PUSH V_004f
        ASSVAL
        LINE 512
   512  m1: fp = fp+1;  make space;  read line
        LABEL L_0084
        LINE 512
        PUSH V_0050
        PUSH V_0050
        PUSHI #0x00000001
        ADD
        ASSVAL
        LINE 512
        PUSH V_0062
        CALL
        LINE 512
        PUSH V_0063
        CALL
        LINE 513
   513      ->ok
        JUMP L_007f
        LINE 514
   514  s('K'):                                     !kill (line)
        PUSHI #0x0000004b
        SLABEL 105
        LINE 515
   515      pp = lbeg;  fp = lend
        PUSH V_004f
        PUSH V_004e
        ASSVAL
        LINE 515
        PUSH V_0050
        PUSH V_0051
        ASSVAL
        LINE 516
   516  k1: ->no %if fp = fend
        LABEL L_0085
        LINE 516
        PUSH V_0050
        PUSH V_0052
        JUMPIF # L_0004
        JUMP L_0080
        LOCATE L_0004
        LINE 517
   517      ->m1
        JUMP L_0084
        LINE 518
   518  s('J'):                                     !join (delete newline)
        PUSHI #0x0000004a
        SLABEL 105
        LINE 519
   519      right star
        PUSH V_005c
        CALL
        LINE 521
   520  !!  ->no %if pp-lbeg > 80
   521      ->k1
        JUMP L_0085
        LINE 522
   522  s('W'):                                     !move back
        PUSHI #0x00000057
        SLABEL 105
        LINE 523
   523      ->no %if in = sin
        PUSH V_0036
        PUSHI #0x00000002
        JUMPIF # L_0004
        JUMP L_0080
        LOCATE L_0004
        LINE 524
   524      make space
        PUSH V_0062
        CALL
        LINE 525
   525      ->no %if lbeg = top
        PUSH V_004e
        PUSH V_004c
        JUMPIF # L_0004
        JUMP L_0080
        LOCATE L_0004
        LINE 526
   526      lend = fp-pp+lbeg-1
        PUSH V_0051
        PUSH V_0050
        PUSH V_004f
        SUB
        PUSH V_004e
        ADD
        PUSHI #0x00000001
        SUB
        ASSVAL
        LINE 527
   527  w1: k = byte(pp-1)
        LABEL L_0086
        LINE 527
        PUSH V_003c
        PUSH V_004b
        PUSH V_004f
        PUSHI #0x00000001
        SUB
        ACCESS
        ASSVAL
        LINE 528
   528      ->w2 %if k = nl %and pp # lbeg
        PUSH V_003c
        PUSHI #0x0000000a
        JUMPIF # L_0004
        PUSH V_004f
        PUSH V_004e
        JUMPIF = L_0004
        JUMP L_0087
        LOCATE L_0004
        LINE 529
   529      fp = fp-1;  pp = pp-1;  load fp(k)
        PUSH V_0050
        PUSH V_0050
        PUSHI #0x00000001
        SUB
        ASSVAL
        LINE 529
        PUSH V_004f
        PUSH V_004f
        PUSHI #0x00000001
        SUB
        ASSVAL
        LINE 529
        PUSH V_005a
        PUSH V_003c
        ASSPAR
        CALL
        LINE 530
   530      ->w1
        JUMP L_0086
        LINE 531
   531  w2: lbeg = pp;  ms = 0
        LABEL L_0087
        LINE 531
        PUSH V_004e
        PUSH V_004f
        ASSVAL
        LINE 531
        PUSH V_0053
        PUSHI #0x00000000
        ASSVAL
        LINE 532
   532      ->ok
        JUMP L_007f
        LINE 533
   533  t(1):                                       !%s, %c ...
        PUSHI #0x00000001
        SLABEL 104
        LINE 534
   534      ->eof %if code = 'C'
        PUSH V_003f
        PUSHI #0x00000043
        JUMPIF # L_0004
        JUMP L_006b
        LOCATE L_0004
        LINE 535
   535      switch inputs
        PUSH V_0064
        CALL
        LINE 536
   536      ->L99
        JUMP L_007d
        LINE 537
   537  eof:code = 'C';                             !+eof on command stream
        LABEL L_006b
        LINE 537
        PUSH V_003f
        PUSHI #0x00000043
        ASSVAL
        LINE 538
   538      switch inputs %if in = sin
        PUSH V_0036
        PUSHI #0x00000002
        JUMPIF # L_0004
        PUSH V_0064
        CALL
        LOCATE L_0004
        LINE 539
   539      %cycle
        LOCATE L_0003
        LINE 540
   540         right star
        PUSH V_005c
        CALL
        LINE 541
   541         %exit %if fp = fend
        PUSH V_0050
        PUSH V_0052
        JUMPIF # L_0007
        GOTO L_0004
        LOCATE L_0007
        LINE 542
   542         load pp(nl);  lbeg = pp
        PUSH V_0059
        PUSHI #0x0000000a
        ASSPAR
        CALL
        LINE 542
        PUSH V_004e
        PUSH V_004f
        ASSVAL
        LINE 543
   543         fp = fp+1;  make space;  read line
        PUSH V_0050
        PUSH V_0050
        PUSHI #0x00000001
        ADD
        ASSVAL
        LINE 543
        PUSH V_0062
        CALL
        LINE 543
        PUSH V_0063
        CALL
        LINE 544
   544      %repeat
        REPEAT L_0003
        LOCATE L_0004
        LINE 545
   545      select output(mout)
        PUSH V_0020
        PUSHI #0x00000001
        ASSPAR
        CALL
        LINE 546
   546      %while top # pp %cycle
        LOCATE L_0003
        PUSH V_004c
        PUSH V_004f
        JUMPIF = L_0004
        LINE 547
   547         print symbol(byte(top));  top = top+1
        PUSH V_001c
        PUSH V_004b
        PUSH V_004c
        ACCESS
        ASSPAR
        CALL
        LINE 547
        PUSH V_004c
        PUSH V_004c
        PUSHI #0x00000001
        ADD
        ASSVAL
        LINE 548
   548      %repeat
        REPEAT L_0003
        LOCATE L_0004
        LINE 549
   549      select output(0)
        PUSH V_0020
        PUSHI #0x00000000
        ASSPAR
        CALL
        LINE 550
   550      %if code # 'C' %then %monitor
        PUSH V_003f
        PUSHI #0x00000043
        JUMPIF = L_0004
        MONITOR
        LOCATE L_0004
        LINE 551
   551      %result = 0
        PUSHI #0x00000000
        RESULT
        LINE 552
   552  %end
        END
        LINE 554
   553  
   554  %endoffile
        END
