Search code examples
assemblyhla

Where could be the probable fix on the error


I'm exploring the examples of a HLA tutorial for a better understanding. I tried to assemble and run it but failed to get the output. After I assembled it, it showed me this error:

Error in file "001_HelloWorld.hla" at line 87 [errid:39120/hlaparse.bsn]
Parameter list is missing "raiseAdrs" found in fwd/extern definition.
Near: << ) >>

And here is the whole code of the example program:

program helloworld;
#linker( "comdlg32.lib" ) 
#linker( "comctl32.lib" )

?compileAll     := true;

?@NoDisplay     := true;
?@NoStackAlign  := true;

#includeOnce( "stdlib.hhf" )

#includeOnce( "howl.hhf" )


const
    applicationName := "Hello World";
    formX           := w.CW_USEDEFAULT; // Let Windows position this guy
    formY           := w.CW_USEDEFAULT;
    formW           := 600;
    formH           := 600;


static
    align( 4 );
    bkgBrush_g  :dword;
    bkgColor_g  :dword;



// Form declaration.
// We've got an empty form with no widgets, so this is fairly trivial:

wForm( mainAppWindow );
endwForm


// Must include the following macro invocation to emit the code that the
// wForm macro generated:

mainAppWindow_implementation();



// The following gets called immediately after the main application
// window is created. It must be provided, even if it does nothing.

method mainAppWindow_t.onCreate;
begin onCreate;
end onCreate;






/////////////////////////////////////////////////////////////////////////////    //
//
//
// The following is mostly boilerplate code for all apps (about the only thing
// you would change is the size of the main app's form)
//
//
/////////////////////////////////////////////////////////////////////////////    //
//  
// When the main application window closes, we need to terminate the 
// application. This overridden method handles that situation.  Notice the
// override declaration for onClose in the wForm declaration given earlier.
// Without that, mainAppWindow_t would default to using the wVisual_t.onClose
// method (which does nothing). 

method mainAppWindow_t.onClose;
begin onClose;

// Tell the winmain main program that it's time to terminate.
// Note that this message will (ultimately) cause the appTerminate
// procedure to be called.

w.PostQuitMessage( 0 );


end onClose;






// When the application begins execution, the following procedure
// is called.  This procedure must create the main
// application window in order to kick off the execution of the
// GUI application:

procedure appStart;
begin appStart;

push( esi );

// Create the main application window:

w.GetSysColor( w.COLOR_MENU );
mov( eax, bkgColor_g );
w.CreateSolidBrush( eax );
    mov( eax, bkgBrush_g );
    mainAppWindow.create_mainAppWindow
    (
        applicationName,        // Window title
        w.WS_EX_CONTROLPARENT,  // Need this to support TAB control selection
        w.WS_OVERLAPPEDWINDOW,  // Style 
        NULL,                   // No parent window                                     
        formX,                  // x-coordinate for window. 
        formY,                  // y-coordinate for window.
        formW,                  // Width
        formH,                  // Height
        bkgColor_g,             // Background color
        true                    // Make visible on creation 
    );
    mov( esi, pmainAppWindow ); // Save pointer to main window object.
    pop( esi );

end appStart;



// appTerminate-
//
//  Called when the application is quitting, giving the app a chance
// to clean up after itself.
//
// Note that this is called *after* the mainAppWindow_t.onClose method
// executes (indeed, mainAppWindow_t.onClose, by posting the quit message,
// is what actually causes the program to begin terminating, which leads
// to the execution of this procedure).

procedure appTerminate;
begin appTerminate;

// Clean up the main application's form.
// Note that this will recursively clean up all the widgets on the form.

mainAppWindow.destroy();
w.DeleteObject( bkgBrush_g );   

end appTerminate;


// appException-
//
//
// Gives the application the opportunity to clean up before
// aborting when an unhandled exception comes along:

procedure appException( theException:dword in eax );
begin appException;

    raise( eax );

end appException;



// The main program for a HOWL application must simply
// call the HowlMainApp procedure.

begin helloworld;

    HowlMainApp();          

end helloworld;

I tried what I could to fix the problem but could not solve it.

Any help would be appreciated and thanks in advance.


Solution

  • hi i have the same problem of yours then i came up with this and it work fine.

    (in my case line 152) goto line this line:

    procedure appException( theException:dword in eax ); begin appException; raise( eax ); end appException;

    make it to

    procedure appException; begin appException; raise( eax ); end appException;