THIS FILE IS PROBABLY HORRIBLY OUT OF DATE. DO =NOT= RELY ON IT.
Use vbs_output.txt instead.

IDEALLY we'll want a conversion to look SOMETHING like this:

(Remember that BASIC is NOT case sensitive, even though historically
 Microsoft's BASIC editors have been anal about changing code to the "proper"
 case. In the long run, comments will just be stripped, not converted, but
 our initial parser/compiler should probably leave them for debugging
 purposes.)

' Start of my li'l program...

SUB butts (fileNo AS INTEGER, message AS STRING)
    totalMsg$ = "Message is : " + message

    ON ERROR GOTO crackpipe
    PRINT #fileNo, totalMsg$
    PRINT "Message written."
    EXIT SUB

crackpipe:   REM error handler...
    PRINT "Inside error handler. Error number is" + STR$(ERR)
END SUB

'Since we didn't open a file, this throws a runtime error...
butts 10, "BITE ME!"

' end of my li'l program...


HERE'S THE CONVERTED VERSION:

#include "BasicLib.h"

static PBasicString strConst1;
static PBasicString strConst2;
static PBasicString strConst3;
static PBasicString strConst4;

/* Start of my li'l program... */

void butts(STATEPARAMS, int fileNo, PBasicString message)
{
    PBasicString totalMsg_DC_ = NULL;
    PBasicString bufferString = NULL;

    __setResumeStacks;
    __setResumeInstructs(&&l0, &&l1);
l0:
    __assignString(STATEARGS, &totalMsg_DC_, strConst1);
    __catString(STATEARGS, &totalMsg_DC_, message);

    __setResumeInstructs(&&l1, &&l2);
l1:
    __registerOnEventHandler(STATEARGS, &&l5, ONERROR);

    __setResumeInstructs(&&l2, &&l3);
l2:
    vbpiS_print_NC_(10, totalMsg_DC_);

    __setResumeInstructs(&&l3, &&l4);
l3:
    vbpS_print(strConst2);

    __setResumeInstructs(&&l4, &&l5);
l4:
    __deregisterOnEventHandlers(STATEARGS);
    __freeString(STATEARGS, bufferString);
    __freeString(STATEARGS, totalMsg_DC_);
    return;

    __setResumeInstructs(&&l5, &&l5);
l5:              /* error handler... */
    __assignString(STATEARGS, &stringBuffer, strConst3);
    __catString(STATEARGS, &stringBuffer, str_DC_(STATEARGS, err(STATEARGS)));
    vbpS_print(STATEARGS, stringBuffer);
    __deregisterOnEventHandlers(STATEARGS);
    __freeString(STATEARGS, totalMsg_DC_);
    __freeString(STATEARGS, bufferString);
} /* butts */


void main(int argc, char **argv, char **envp)
{
    __initBasicLib(NULLSTATEARGS, argc, argv, envp);

    strConst1 = __constString("Message is : ");
    strConst2 = __constString("Message written.");
    strConst3 = __constString("Inside error handler. Error number is");
    strConst4 = __constString("BITE ME!");

    /* Since we didn't open a file, this throws a runtime error... */
    butts(NULLSTATEARGS, 10, strConst4);
    __deinitBasicLib(NULLSTATEARGS);
} /* main */

/* end of my li'l program... */

