Ejemplo n.º 1
0
Archivo: menu.c Proyecto: vidarh/ACE
void menu() {
    insymbol();
    if (try_change_event_trapping_status(lastsym)) return;
    if (eat(clearsym)) gen_jsr("_ClearMenu");
    else if (eat(waitsym)) gen_jsr("_WaitMenu");
    else {
        parse_call_func_args("l,l,l",0); /* menu-id,item-id,state */
        if (!peek(comma)) {
            gen_call_void("_ChangeMenuState",12);
            return;	
        }
        opt_arg(stringtype,0); /* title-string */
        opt_arg(stringtype,0); /* command_key */
        gen_call_void("_ModifyMenu",20);
    }
}
Ejemplo n.º 2
0
Archivo: libfunc.c Proyecto: vidarh/ACE
void gen_close_library(const char * librarybase)
{
  gen_load32a(librarybase,1);  /* library base in a1 */
  gen_jsr("_close_library");
  gen_save32_val(0,librarybase);
  enter_XREF("_close_library");
}
Ejemplo n.º 3
0
Archivo: libfunc.c Proyecto: vidarh/ACE
void closelibrary()
{
  char libname[MAXIDSIZE],ut_libname[MAXIDSIZE];
  int  cc;
  /* close one or more shared libraries */ 

  insymbol();
  if (sym != ident && sym != stringconst) {
	/* 
	** Close all open shared libraries not 
	** normally closed by ACE at the end of
	** the program run.
	*/
	cc=0;
	while (otherlib[cc].name[0] != '\0' &&
		   strcmp(otherlib[cc].name,"SENTINEL") != 0)
	  {
    	gen_load32a(otherlib[cc].base,1);  /* library base in a1 */
    	gen_jsr("_close_library");
		gen_save32_val(0,otherlib[cc].base);
        enter_XREF("_close_library");
		cc++;
	  }  	
  } else {
	/* close a single shared library */
	get_libname(libname,ut_libname);  /* without extension! */
	
	if (check_for_ace_lib(libname) == NEGATIVE) {
	  make_library_base(libname);
	  gen_close_library(librarybase);
	}
	insymbol();
  }
}
Ejemplo n.º 4
0
Archivo: libfunc.c Proyecto: vidarh/ACE
void gen_open_library(const char * libname, const char * librarybase)
{
  char lab[80],lablabel[80];
  gen_pop_addr(1);   /* address of library name in a1 */
  gen_jsr("_open_library");
  make_library_base(libname);
  gen_save32d(0,librarybase);
  gen_test();
  make_label(lab,lablabel);
  gen_bne(lab);
  gen_jmp("_EXIT_PROG"); /* quit program if can't open library */
  gen_label(lablabel);
  enter_XREF("_open_library");
}
Ejemplo n.º 5
0
void Compiler::handle_ik_cf(const JInst& jinst) {
    switch(jinst.opcode) {
    case OPCODE_IFNULL:
    case OPCODE_IFNONNULL:
    case OPCODE_IFEQ:
    case OPCODE_IFNE:
    case OPCODE_IFLT:
    case OPCODE_IFGE:
    case OPCODE_IFGT:
    case OPCODE_IFLE:
        gen_if(jinst.opcode, jinst.get_target(0));
        break;
    case OPCODE_IF_ACMPEQ:
    case OPCODE_IF_ACMPNE:
    case OPCODE_IF_ICMPEQ:
    case OPCODE_IF_ICMPNE:
    case OPCODE_IF_ICMPLT:
    case OPCODE_IF_ICMPGE:
    case OPCODE_IF_ICMPGT:
    case OPCODE_IF_ICMPLE:
        gen_if_icmp(jinst.opcode, jinst.get_target(0));
        break;
    case OPCODE_GOTO:
    case OPCODE_GOTO_W:
        gen_goto(jinst.get_target(0));
        break;
    case OPCODE_JSR:
    case OPCODE_JSR_W:
        gen_jsr(jinst.get_target(0));
        break;
    case OPCODE_RET:
        gen_ret(jinst.op0);
        break;
    case OPCODE_TABLESWITCH:
    case OPCODE_LOOKUPSWITCH:
        gen_switch(jinst);
        break;
    default: assert(false); break;
    }
}