Question relating to main_list.c in Vol. 6A (Modula-2)

Hi. Hope there isn't any rule against posting code here. I'm new to Motif - actually, I haven't done any GUI related programming since my Atari ST days. Anyway, I'm trying to convert the programs in the Motif Programming Manual (Vol. 6A) - open source edition from C to Modula-2 (XDS x86 compiler). Generally, I'm having pretty good luck with them, and with other C code that I've tried. Edit: I should clarify that I really know very little about C. A bad experience (spending a large sum for a C devel package that didn't work and wouldn't be replaced, back in the '80's) sent me on an alternate path....

However, I'm not getting the expected results with main_list.c from Chapter 4. I am just getting a window small enough to contain the Waimea WM widgets. If I manually resize it, I get a plain white background. Note that I don't have the Demos app-defaults file installed on my system, in case that is important in this instance.

I'm guessing it has something to do with XtVaTypedArgs in the XtVaSetValues call. I understand that it's highly unlikely that there will be Modula-2 programmers here, but perhaps someone might be able to tell me if I'm doing something wrong.

Linux, lesstif 0.94.4, at this moment, though I switch back and forth with openmotif 2.2.3 for testing, and generally use OpenMotif 2.2.3.

This is the code that I use to initialize Motif, in case someone thinks it is necessary to see.

<* M2EXTENSIONS + *></p>
<p>IMPLEMENTATION MODULE xminit;</p>
<p>IMPORT SYSTEM, ProgEnv, Xt:=Intrinsic;<br />
FROM Storage IMPORT ALLOCATE, DEALLOCATE;</p>
<p>TYPE<br />
  paChar = POINTER TO ARRAY [0..MAX(INTEGER)-1] OF CHAR;</p>
<p>PROCEDURE xminit (VAR argc : INTEGER; VAR argv : Xt.StringList);<br />
VAR   pp : paChar;<br />
       i : INTEGER;</p>
<p>BEGIN<br />
  argc := ProgEnv.ArgNumber();<br />
  ALLOCATE(argv, VAL(INTEGER,SIZE(Xt.String))*(argc+1));<br />
  ALLOCATE(argv^[0], SIZE(CHAR)*(ProgEnv.ProgramNameLength()+1));<br />
  pp := SYSTEM.CAST(paChar, argv^[0]);<br />
  ProgEnv.ProgramName( pp^ );<br />
  FOR i := 1 TO argc DO<br />
    ALLOCATE(argv^[i], SIZE(CHAR)*(ProgEnv.ArgLength(i)+1));<br />
    pp := SYSTEM.CAST(paChar, argv^[i]);<br />
    ProgEnv.GetArg(i, pp^);<br />
  END;<br />
  INC(argc);<br />
END xminit;</p>
<p>END xminit.

This is the actual program

<* M2EXTENSIONS + *><br />
<* GENDEBUG + *><br />
<* LINENO + *></p>
<p>(* main_list.mod -- Use the ScrolledList window as the feature<br />
** component of a MainWindow widget.<br />
*)</p>
<p>MODULE main_list;</p>
<p>IMPORT X,<br />
       Xt:=Intrinsic,<br />
       Xm,<br />
       MainW,<br />
       List,<br />
       Shell,<br />
       xminit,<br />
       SYSTEM;</p>
<p>CONST</p>
<p>VAR<br />
  app_shell, main_w, list_w : Xt.Widget;<br />
  app_context : Xt.XtAppContext;<br />
  pixmap : X.Pixmap;<br />
  argc : INTEGER;<br />
  argv : Xt.StringList;</p>
<p>BEGIN<br />
  xminit.xminit(argc, argv);</p>
<p>  Xt.XtSetLanguageProc(NIL, NIL, NIL);<br />
  app_shell := Xt.XtVaOpenApplication (app_context, "Demos", NIL, 0,<br />
                  argc, argv, NIL, Shell.sessionShellWidgetClass, NIL);<br />
  main_w := MainW.XmCreateMainWindow(app_shell, "main_window", NIL, 0);<br />
  list_w := List.XmCreateScrolledList(main_w, "main_list", NIL, 0);<br />
  Xt.XtVaSetValues (list_w,<br />
     Xt.XtVaTypedArg, Xm.XmNitems, Xt.XtRString, (* there is no Xm.XmRString *)<br />
     "Red, Green, Blue, Orange, Maroon, Grey, Black, White", 53,<br />
     Xm.XmNitemCount, 8, Xm.XmNvisibleItemCount, 5, NIL);<br />
  Xt.XtManageChild(list_w);<br />
  (* set the list_w as the "work area" of the main window *)<br />
  Xt.XtVaSetValues(main_w, Xm.XmNworkWindow, Xt.XtParent (list_w), NIL);<br />
  Xt.XtRealizeWidget(app_shell);<br />
  Xt.XtAppMainLoop(app_context);</p>
<p>END main_list.