Free Hero Mesh

Check-in [4436b9f0d2]
Login
This is a mirror of the main repository for Free Hero Mesh. New tickets and changes will not be accepted at this mirror.
Overview
Comment:Add the Walkable instruction.
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1: 4436b9f0d22b3a517b351406fb9296b2067f3e92
User & Date: user on 2022-04-26 18:27:12
Other Links: manifest | tags
Context
2022-04-26
23:18
Ensure that undef_message is set when loading message numbers from the CLASS.DEF lump. check-in: e6ec7babc9 user: user tags: trunk
18:27
Add the Walkable instruction. check-in: 4436b9f0d2 user: user tags: trunk
2022-04-24
20:33
Implement (Rook), (Bishop), and (Queen) blocks in class definition blocks. check-in: 3a5d5440cc user: user tags: trunk
Changes

Modified class.doc from [706c43e646] to [2b0f0507f9].

2011
2012
2013
2014
2015
2016
2017











2018
2019
2020
2021
2022
2023
2024
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
2035







+
+
+
+
+
+
+
+
+
+
+







  Check if the top value matches any others in the list above the mark. If
  it doesn't match any, then the value remains and it pushes true; if it
  does match, then the top value is removed and it pushes false instead.

VolumeAt  ( x y -- volume )
  Finds the greatest volume among objects at the specified location.

Walkable  ( x y -- bool )
  Tells if the current object could walk on the specified coordinates,
  according to Height, Climb, and CollisionLayers. This object is not
  counted, even if it is at the specified coordinates. Shoving, hit bits,
  Volume, etc are not checked.

,Walkable  ( obj x y -- bool )
  Similar to Walkable but for a specified object instead of this one. You
  may also specify a class, in which case it uses the default values of
  that class instead of the current values of an object.

WinLevel  ( -- )
  Ends all execution and accepts the input sequence that resulted in the
  current game state as a valid solution. (In other words, the goal of the
  game is to find a sequence of inputs that result in the execution of a
  WinLevel instruction, without causing any errors or executing LoseLevel.)

,WinLevel  ( score -- )

Modified exec.c from [ee9e164ba7] to [89f1dc5e15].

2737
2738
2739
2740
2741
2742
2743











































2744
2745
2746
2747
2748
2749
2750
2737
2738
2739
2740
2741
2742
2743
2744
2745
2746
2747
2748
2749
2750
2751
2752
2753
2754
2755
2756
2757
2758
2759
2760
2761
2762
2763
2764
2765
2766
2767
2768
2769
2770
2771
2772
2773
2774
2775
2776
2777
2778
2779
2780
2781
2782
2783
2784
2785
2786
2787
2788
2789
2790
2791
2792
2793







+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+







    o->oflags&=~OF_MOVING;
    if(conn[i].visual) o->oflags|=OF_VISUALONLY; else o->oflags&=~OF_VISUALONLY;
  }
  pconn=nconn=first;
  StackReq(0,1);
  return v;
}

static Uint32 v_walkable(Uint32 obj,Uint32 x,Uint32 y) {
  Uint32 r=0;
  Object*o;
  Uint32 n;
  Uint8 lay;
  if(obj==VOIDLINK) return 0;
  o=objects[obj];
  if(o->oflags&OF_DESTROYED) return 0;
  lay=classes[o->class]->collisionLayers;
  if(x<1 || x>pfwidth || y<1 || y>pfheight) return 0;
  n=playfield[x+y*64-65];
  while(n!=VOIDLINK) {
    if(n!=obj) {
      if(lay&classes[objects[n]->class]->collisionLayers) return 0;
      if(!(objects[n]->oflags&(OF_VISUALONLY|OF_DESTROYED))) {
        if(o->climb<objects[n]->height) return 0;
        r=1;
      }
    }
    n=objects[n]->up;
  }
  return r;
}

static Uint32 v_walkable_c(Uint32 c,Uint32 x,Uint32 y) {
  Class*cl=classes[c];
  Uint32 r=0;
  Uint8 lay=cl->collisionLayers;
  Uint32 n;
  if(cl->cflags&CF_NOCLASS2) Throw("Invalid class number");
  if(x<1 || x>pfwidth || y<1 || y>pfheight) return 0;
  n=playfield[x+y*64-65];
  while(n!=VOIDLINK) {
    if(lay&classes[objects[n]->class]->collisionLayers) return 0;
    if(!(objects[n]->oflags&(OF_VISUALONLY|OF_DESTROYED))) {
      if(cl->climb<objects[n]->height) return 0;
      r=1;
    }
    n=objects[n]->up;
  }
  return r;
}

// Here is where the execution of a Free Hero Mesh bytecode subroutine is executed.
#define NoIgnore() do{ changed=1; }while(0)
#define GetVariableOf(a,b) (i=v_object(Pop()),i==VOIDLINK?NVALUE(0):b(objects[i]->a))
#define GetVariableOrAttributeOf(a,b) (t2=Pop(),t2.t==TY_CLASS?NVALUE(classes[t2.u]->a):(i=v_object(t2),i==VOIDLINK?NVALUE(0):b(objects[i]->a)))
#define Numeric(a) do{ if((a).t!=TY_NUMBER) Throw("Type mismatch"); }while(0)
#define DivideBy(a) do{ Numeric(a); if(!(a).u) Throw("Division by zero"); }while(0)
3183
3184
3185
3186
3187
3188
3189


3190
3191
3192
3193
3194
3195
3196
3226
3227
3228
3229
3230
3231
3232
3233
3234
3235
3236
3237
3238
3239
3240
3241







+
+







    case OP_VOLUME: StackReq(0,1); Push(NVALUE(o->volume)); break;
    case OP_VOLUME_C: StackReq(1,1); Push(GetVariableOrAttributeOf(volume,NVALUE)); break;
    case OP_VOLUME_E: NoIgnore(); StackReq(1,0); t1=Pop(); Numeric(t1); o->volume=t1.u; break;
    case OP_VOLUME_E16: NoIgnore(); StackReq(1,0); t1=Pop(); Numeric(t1); o->volume=t1.u&0xFFFF; break;
    case OP_VOLUME_EC: NoIgnore(); StackReq(2,0); t1=Pop(); Numeric(t1); i=v_object(Pop()); if(i!=VOIDLINK) objects[i]->volume=t1.u; break;
    case OP_VOLUME_EC16: NoIgnore(); StackReq(2,0); t1=Pop(); Numeric(t1); i=v_object(Pop()); if(i!=VOIDLINK) objects[i]->volume=t1.u&0xFFFF; break;
    case OP_VOLUMEAT: StackReq(2,1); t2=Pop(); Numeric(t2); t1=Pop(); Numeric(t1); Push(NVALUE(volume_at(t1.u,t2.u))); break;
    case OP_WALKABLE: StackReq(2,1); t2=Pop(); Numeric(t2); t1=Pop(); Numeric(t1); i=v_walkable(obj,t1.u,t2.u); Push(NVALUE(i)); break;
    case OP_WALKABLE_C: StackReq(3,1); t2=Pop(); Numeric(t2); t1=Pop(); Numeric(t1); t3=Pop(); i=(t3.t==TY_CLASS?v_walkable_c(t3.u,t1.u,t2.u):v_walkable(v_object(t3),t1.u,t2.u)); Push(NVALUE(i)); break;
    case OP_WEIGHT: StackReq(0,1); Push(NVALUE(o->weight)); break;
    case OP_WEIGHT_C: StackReq(1,1); Push(GetVariableOrAttributeOf(weight,NVALUE)); break;
    case OP_WEIGHT_E: NoIgnore(); StackReq(1,0); t1=Pop(); Numeric(t1); o->weight=t1.u; break;
    case OP_WEIGHT_E16: NoIgnore(); StackReq(1,0); t1=Pop(); Numeric(t1); o->weight=t1.u&0xFFFF; break;
    case OP_WEIGHT_EC: NoIgnore(); StackReq(2,0); t1=Pop(); Numeric(t1); i=v_object(Pop()); if(i!=VOIDLINK) objects[i]->weight=t1.u; break;
    case OP_WEIGHT_EC16: NoIgnore(); StackReq(2,0); t1=Pop(); Numeric(t1); i=v_object(Pop()); if(i!=VOIDLINK) objects[i]->weight=t1.u&0xFFFF; break;
    case OP_WINLEVEL: key_ignored=0; gameover=1; gameover_score=move_number+1; Throw(0); break;

Modified instruc from [916ec56ae6] to [73aaa87d9d].

285
286
287
288
289
290
291

292
293
294
295
296
297
298
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299







+







Synchronize
,Target
Trace
,TraceStack
Trigger
TriggerAt
VolumeAt
,Walkable
,WinLevel
,XDir
,XStep
XYDir
,YDir
,YStep

Modified instruc.h from [d8eb492638] to [fbb0050b59].

426
427
428
429
430
431
432


433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460




























461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490






























491
492
493
494
495
496
497
498
499
500
501
502
503

504
505
506
507
508
509
510
511



512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530



531
532
533
534
535
536
537
426
427
428
429
430
431
432
433
434




























435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462






























463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504

505
506
507
508
509
510



511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529



530
531
532
533
534
535
536
537
538
539







+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+












-
+





-
-
-
+
+
+
















-
-
-
+
+
+







#define OP_TARGET_C 35028
#define OP_TRACE 32981
#define OP_TRACESTACK 32982
#define OP_TRACESTACK_C 35030
#define OP_TRIGGER 32983
#define OP_TRIGGERAT 32984
#define OP_VOLUMEAT 32985
#define OP_WALKABLE 32986
#define OP_WALKABLE_C 35034
#define OP_WINLEVEL 32986
#define OP_WINLEVEL_C 35034
#define OP_XDIR 32987
#define OP_XDIR_C 35035
#define OP_XSTEP 32988
#define OP_XSTEP_C 35036
#define OP_XYDIR 32989
#define OP_YDIR 32990
#define OP_YDIR_C 35038
#define OP_YSTEP 32991
#define OP_YSTEP_C 35039
#define OP_MARK 32992
#define OP_TMARK 32993
#define OP_IN 32994
#define OP_NIN 32995
#define OP_MBEGIN 32996
#define OP_FLIP 32997
#define OP_COUNT 32998
#define OP_CLEAR 32999
#define OP_UNIQ 33000
#define OP_ARRAY 33001
#define OP_GETARRAY 33002
#define OP_INITARRAY 33003
#define OP_SETARRAY 33004
#define OP_ARRAYCELL 33005
#define OP_ARRAYSLICE 33006
#define OP_COPYARRAY 33007
#define OP_DOTPRODUCT 33008
#define OP_WINLEVEL 32987
#define OP_WINLEVEL_C 35035
#define OP_XDIR 32988
#define OP_XDIR_C 35036
#define OP_XSTEP 32989
#define OP_XSTEP_C 35037
#define OP_XYDIR 32990
#define OP_YDIR 32991
#define OP_YDIR_C 35039
#define OP_YSTEP 32992
#define OP_YSTEP_C 35040
#define OP_MARK 32993
#define OP_TMARK 32994
#define OP_IN 32995
#define OP_NIN 32996
#define OP_MBEGIN 32997
#define OP_FLIP 32998
#define OP_COUNT 32999
#define OP_CLEAR 33000
#define OP_UNIQ 33001
#define OP_ARRAY 33002
#define OP_GETARRAY 33003
#define OP_INITARRAY 33004
#define OP_SETARRAY 33005
#define OP_ARRAYCELL 33006
#define OP_ARRAYSLICE 33007
#define OP_COPYARRAY 33008
#define OP_DOTPRODUCT 33009
#define OP_PATTERN 33009
#define OP_PATTERN_C 35057
#define OP_PATTERN_E 37105
#define OP_PATTERN_EC 39153
#define OP_PATTERNS 33010
#define OP_PATTERNS_C 35058
#define OP_PATTERNS_E 37106
#define OP_PATTERNS_EC 39154
#define OP_ROOK 33011
#define OP_BISHOP 33012
#define OP_QUEEN 33013
#define OP_CUT 33014
#define OP_BIZARRO 33015
#define OP_BIZARRO_C 35063
#define OP_BIZARRO_E 37111
#define OP_BIZARRO_EC 39159
#define OP_BIZARROSWAP 33016
#define OP_BIZARROSWAP_D 41208
#define OP_SWAPWORLD 33017
#define OP_ABSTRACT 33018
#define OP_SUPER 33019
#define OP_SUPER_C 35067
#define OP_FUNCTION 33020
#define OP_LOCAL 33021
#define OP_LABEL 33022
#define OP_STRING 33023
#define OP_INT16 33024
#define OP_INT32 33025
#define OP_DISPATCH 33026
#define OP_USERFLAG 33027
#define OP_PATTERN 33010
#define OP_PATTERN_C 35058
#define OP_PATTERN_E 37106
#define OP_PATTERN_EC 39154
#define OP_PATTERNS 33011
#define OP_PATTERNS_C 35059
#define OP_PATTERNS_E 37107
#define OP_PATTERNS_EC 39155
#define OP_ROOK 33012
#define OP_BISHOP 33013
#define OP_QUEEN 33014
#define OP_CUT 33015
#define OP_BIZARRO 33016
#define OP_BIZARRO_C 35064
#define OP_BIZARRO_E 37112
#define OP_BIZARRO_EC 39160
#define OP_BIZARROSWAP 33017
#define OP_BIZARROSWAP_D 41209
#define OP_SWAPWORLD 33018
#define OP_ABSTRACT 33019
#define OP_SUPER 33020
#define OP_SUPER_C 35068
#define OP_FUNCTION 33021
#define OP_LOCAL 33022
#define OP_LABEL 33023
#define OP_STRING 33024
#define OP_INT16 33025
#define OP_INT32 33026
#define OP_DISPATCH 33027
#define OP_USERFLAG 33028
#ifdef HEROMESH_CLASS
static const Op_Names op_names[]={
{"*",8486943},
{"+",8421405},
{"+Move",10584252},
{"-",8421406},
{"-Move",10584253},
{"-rot",8421382},
{".",10518528},
{"/",8486944},
{"ANHH",8389394},
{"ARRIVED",8389124},
{"Abstract",8683770},
{"Abstract",8683771},
{"Animate",8552596},
{"AnimateDead",8552597},
{"Arg1",8552576},
{"Arg2",8552577},
{"Arg3",8552578},
{"Array",8683753},
{"ArrayCell",8421613},
{"ArraySlice",8421614},
{"Array",8683754},
{"ArrayCell",8421614},
{"ArraySlice",8421615},
{"Arrivals",8618092},
{"Arrived",8618090},
{"Assassinate",8487062},
{"B",9437196},
{"BANG",8389380},
{"BEDOINGNG",8389406},
{"BEEDEEP",8389404},
{"BEGIN_TURN",8389123},
{"BLOCKED",8389144},
{"BOOOM",8389410},
{"BOUNCE",8389415},
{"BRRREEET",8389396},
{"BRRRT",8389395},
{"BUZZER",8389420},
{"BWEEP",8389397},
{"Background",8683655},
{"Bishop",8683764},
{"Bizarro",8618231},
{"BizarroSwap",10518776},
{"Bishop",8683765},
{"Bizarro",8618232},
{"BizarroSwap",10518777},
{"Broadcast",10518679},
{"BroadcastAnd",8421528},
{"BroadcastAndEx",8421529},
{"BroadcastEx",10518683},
{"BroadcastList",8421532},
{"BroadcastListEx",8421533},
{"BroadcastSum",8421534},
553
554
555
556
557
558
559
560

561
562
563
564
565
566
567
555
556
557
558
559
560
561

562
563
564
565
566
567
568
569







-
+







{"CodePage",8683656},
{"CollisionLayers",8487036},
{"Coloc",8487074},
{"Compatible",8487035},
{"Connect",8487075},
{"Connection",8618104},
{"Control",8421514},
{"CopyArray",8421615},
{"CopyArray",8421616},
{"Create",10518692},
{"DEEP_POP",8389417},
{"DEPARTED",8389125},
{"DESTROY",8389122},
{"DESTROYED",8389136},
{"DINK",8389390},
{"DOOR",8389378},
575
576
577
578
579
580
581
582

583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599

600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615

616
617
618
619
620
621
622
577
578
579
580
581
582
583

584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600

601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616

617
618
619
620
621
622
623
624







-
+
















-
+















-
+







{"Departed",8618091},
{"Departures",8618093},
{"Destroy",10584232},
{"Destroyed",8487033},
{"Dir",8618054},
{"Distance",9142346},
{"Done",8618103},
{"DotProduct",8421616},
{"DotProduct",8421617},
{"E",9437184},
{"END_TURN",8389139},
{"EditorHelp",8683665},
{"F",9437192},
{"FAROUT",8389421},
{"FFFFTT",8389399},
{"FLOATED",8389132},
{"FROG",8389383},
{"FakeMove",8487081},
{"FindConnection",8487082},
{"Finished",8552582},
{"FlushClass",8421547},
{"FlushObj",8487084},
{"From",8421503},
{"GLASS",8389379},
{"GLISSANT",8389419},
{"GetArray",8421610},
{"GetArray",8421611},
{"GetInventory",8421549},
{"HAWK",8389425},
{"HEARTBEAT",8389407},
{"HIT",8389134},
{"HITBY",8389135},
{"Hard",8618072},
{"Height",9142354},
{"HeightAt",8421550},
{"Help",8683664},
{"HitMe",8421551},
{"INIT",8389120},
{"IgnoreKey",8421552},
{"Image",8618055},
{"InPlace",8683662},
{"Inertia",9142344},
{"InitArray",8421611},
{"InitArray",8421612},
{"Input",8683660},
{"IntMove",10584241},
{"Invisible",8618095},
{"JAYAYAYNG",8389416},
{"JUMPED",8389128},
{"JumpTo",10584242},
{"KEWEL",8389422},
672
673
674
675
676
677
678
679
680


681
682
683
684
685
686
687

688
689
690
691
692
693
694
695
696

697
698
699
700
701
702
703
704
705
706
707
708
709
710

711
712
713
714
715
716
717
718
719
720


721
722
723
724
725
726
727
674
675
676
677
678
679
680


681
682
683
684
685
686
687
688

689
690
691
692
693
694
695
696
697

698
699
700
701
702
703
704
705
706
707
708
709
710
711

712
713
714
715
716
717
718
719
720


721
722
723
724
725
726
727
728
729







-
-
+
+






-
+








-
+













-
+








-
-
+
+







{"ObjClassAt",8421572},
{"ObjDir",8487109},
{"ObjLayerAt",8421574},
{"ObjMovingTo",8421575},
{"ObjTopAt",8421576},
{"Order",8683657},
{"Others",8683666},
{"P",8880369},
{"P*",8880370},
{"P",8880370},
{"P*",8880371},
{"PLAYERMOVING",8389133},
{"POSTINIT",8389138},
{"POUR",8389377},
{"POWER",8389386},
{"Player",8487034},
{"PopUp",8421577},
{"Queen",8683765},
{"Queen",8683766},
{"Quiz",8683661},
{"R",9437198},
{"RATCHET1",8389418},
{"RATCHET2",8389412},
{"RATTLE",8389403},
{"RB",9437197},
{"RF",9437199},
{"Rel",8487115},
{"Rook",8683763},
{"Rook",8683764},
{"S",9437190},
{"SE",9437191},
{"SMALL_POP",8389389},
{"SPLASH",8389376},
{"STEAM",8389424},
{"STOP",8388608},
{"SUBS",8683667},
{"SUNK",8389131},
{"SW",9437189},
{"Seek",8487116},
{"Self",8421501},
{"Send",10584269},
{"SendEx",10584270},
{"SetArray",8421612},
{"SetArray",8421613},
{"SetInventory",8421583},
{"Shape",8618051},
{"ShapeDir",8618074},
{"Sharp",8618073},
{"Shovable",8618075},
{"Sound",8421584},
{"Stealthy",8618100},
{"Strength",9142358},
{"Super",8487163},
{"SwapWorld",8421625},
{"Super",8487164},
{"SwapWorld",8421626},
{"Sweep",8421585},
{"SweepEx",8421586},
{"Synchronize",8421587},
{"TAHTASHH",8389409},
{"THMP_thmp",8389405},
{"THWIT",8389384},
{"TICK",8389391},
739
740
741
742
743
744
745

746
747
748
749
750




751
752

753
754

755
756

757
758
759
760
761
762
763
741
742
743
744
745
746
747
748
749




750
751
752
753
754

755
756

757
758

759
760
761
762
763
764
765
766







+

-
-
-
-
+
+
+
+

-
+

-
+

-
+







{"VACUUM",8389411},
{"VisualOnly",8618099},
{"Volume",9142350},
{"VolumeAt",8421593},
{"W",9437188},
{"WAHOO",8389400},
{"WHACK",8389423},
{"Walkable",8487130},
{"Weight",9142352},
{"WinLevel",8487130},
{"XDir",8487131},
{"XStep",8487132},
{"XYDir",8421597},
{"WinLevel",8487131},
{"XDir",8487132},
{"XStep",8487133},
{"XYDir",8421598},
{"Xloc",8486980},
{"YDir",8487134},
{"YDir",8487135},
{"YEEHAW",8389401},
{"YStep",8487135},
{"YStep",8487136},
{"Yloc",8486981},
{"_",8421600},
{"_",8421601},
{"a?",8421439},
{"again",8683533},
{"and",8683544},
{"band",8421415},
{"begin",8683532},
{"bit",8683563},
{"bit0",8388609},
794
795
796
797
798
799
800
801
802
803



804
805
806
807
808
809
810

811
812
813
814
815
816

817
818
819
820
821
822
823
824
825
826
827
828

829
830
831
832
833
834
835

836
837
838
839
840
841
842
843
844
845
846
847
848
849
850

851
852

853
854
855
856

857
797
798
799
800
801
802
803



804
805
806
807
808
809
810
811
812

813
814
815
816
817
818

819
820
821
822
823
824
825
826
827
828
829
830

831
832
833
834
835
836
837

838
839
840
841
842
843
844
845
846
847
848
849
850
851
852

853
854

855
856
857
858

859
860







-
-
-
+
+
+






-
+





-
+











-
+






-
+














-
+

-
+



-
+

{"bit9",8423401},
{"bnot",8421418},
{"bor",8421416},
{"bxor",8421417},
{"c?",8421433},
{"case",8683542},
{"chain",8421536},
{"clear",8421607},
{"count",8421606},
{"cut",8683766},
{"clear",8421608},
{"count",8421607},
{"cut",8683767},
{"cz?",8421434},
{"dup",8421377},
{"else",8683530},
{"eq",8421424},
{"eq2",8421425},
{"exec",8486940},
{"flip",8421605},
{"flip",8421606},
{"for",8683537},
{"fork",8683545},
{"ge",8486965},
{"gt",8486963},
{"if",8683529},
{"in",8421602},
{"in",8421603},
{"is",8421431},
{"land",8421420},
{"le",8486966},
{"link",8683547},
{"lnot",8421423},
{"lor",8421421},
{"lsh",8421413},
{"lt",8486964},
{"lxor",8421422},
{"m?",8421435},
{"max",8486948},
{"mbegin",8683748},
{"mbegin",8683749},
{"min",8486947},
{"mod",8486945},
{"n?",8421432},
{"ne",8421426},
{"neg",8421410},
{"next",8683538},
{"nin",8421603},
{"nin",8421604},
{"nip",8421379},
{"o?",8421437},
{"or",8683543},
{"over",8421384},
{"oz?",8421438},
{"pick",8421383},
{"repeat",8683536},
{"ret",8421397},
{"rot",8421381},
{"rsh",8486950},
{"rtn",8683546},
{"s?",8421436},
{"swap",8421378},
{"then",8683531},
{"tmark",8421601},
{"tmark",8421602},
{"tuck",8421380},
{"uniq",8421608},
{"uniq",8421609},
{"until",8683534},
{"while",8683535},
};
#define N_OP_NAMES 362
#define N_OP_NAMES 363
#endif