int main(int argc,char *argv[]) { FILE *f; if(argc>=2) { f=fopen(argv[1],"r"); if(f==NULL) { perror(argv[1]); return(1); } Load(f); fclose(f); } else { f=fopen("field.lif","r"); if(f!=NULL) { Load(f); fclose(f); } } OpenInterface(); OwInitialize(root_pal); ShowMouse(TRUE); SetEventMask(KEYBOARD_EVENTS|MOUSE_EVENTS); OwCreate(&StatusWin,0,DOWN,1,1,status_pal); OwCreate(&ReadLine,MIDDLE,MIDDLE+5,60,4,readline_pal); Life(); OwExit(); CloseInterface(); return(0); }
void MainWindow::stopButtonClicked() { if (handle >= 0) { CloseInterface(handle); output_box->append("Disconnected from device"); } handle = -1; }
void ___makeenviron() { struct Hook hook; char varbuf[8]; uint32 flags = 0; struct DOSIFace *myIDOS = (struct DOSIFace *)OpenInterface("dos.library", 53); if (myIDOS) { if (myIDOS->GetVar("ABCSH_IMPORT_LOCAL", varbuf, 8, GVF_LOCAL_ONLY) > 0) { flags = GVF_LOCAL_ONLY; } else { flags = GVF_GLOBAL_ONLY; } hook.h_Entry = size_env; hook.h_Data = 0; myIDOS->ScanVars(&hook, flags, 0); hook.h_Data = (APTR)(((uint32)hook.h_Data) + 1); myenviron = (char **)IExec->AllocVec((uint32)hook.h_Data * sizeof(char **), MEMF_ANY | MEMF_CLEAR); origenviron = myenviron; if (!myenviron) { return; } hook.h_Entry = copy_env; hook.h_Data = myenviron; myIDOS->ScanVars(&hook, flags, 0); CloseInterface((struct Interface *)myIDOS); } }
void ___freeenviron() { char **i; /* perl might change environ, it puts it back except for ctrl-c */ /* so restore our own copy here */ struct DOSIFace *myIDOS = (struct DOSIFace *)OpenInterface("dos.library", 53); if (myIDOS) { myenviron = origenviron; if (myenviron) { for (i = myenviron; *i != NULL; i++) { IExec->FreeVec(*i); } IExec->FreeVec(myenviron); myenviron = NULL; } CloseInterface((struct Interface *)myIDOS); } }
void ___closeinterfaces() { CloseInterface((struct Interface *)IDOS); CloseInterface((struct Interface *)IUtility); }
int main (int argc, const char * argv[]) { UInt32 addr = 0; UInt8 config = 0; USBDevice device; USBInterface iface; dload_action action = kDLoadNone; printf("Starting DLOADTool\n"); if(argc >= 1) { if(strcmp(argv[1], "-c") == 0) { // Send custom packets action = kDLoadSend; } else if(strcmp(argv[1], "-f") == 0) { // Upload firmware file action = kDLoadUpload; } else { // Upload dbl action = kDLoadNone; } } else { printf("Usage: %s [-f firmware] [-c command1 command2 ... commandN]\n", argv[0]); return -1; } //Vendor ID: 0x5c6 //Product ID: 0x9008 device = OpenDevice(0x5c6, 0x9008); if(device) { printf("Device Opened\n"); config = SetConfiguration(device, 1); if(config == 1) { printf("Configuration %hhx set\n", config); iface = OpenInterface(device, 0, 0); if(iface) { printf("Interface Opened\n"); if(action == kDLoadSend && argc >= 3) { int i = 0; int v = 0; unsigned char input[0x200]; unsigned char output[0x200]; for(v = 2; v < argc; v++) { const char* arg = (const char*) argv[v]; unsigned int size = strlen(arg) / 2; memset(output,'\0', sizeof(output)); memset(input, '\0', sizeof(input)); for(i = 0; i < size; i++) { unsigned int byte = 0; sscanf(arg, "%02x", &byte); output[i] = byte; arg += 2; } dload_write(iface, output, size); dload_read(iface, input, sizeof(input)); } } if(action == kDLoadUpload && argc == 3) { addr = 0x20012000; dload_get_params(iface); dload_get_sw_version(iface); dload_upload_firmware(iface, addr, argv[2]); dload_send_execute(iface, addr); } if(action == kDLoadNone && argc == 1) { addr = 0x20012000; dload_get_params(iface); dload_get_sw_version(iface); dload_upload_firmware(iface, addr, "/usr/local/standalone/firmware/Trek/dbl.mbn"); dload_send_execute(iface, addr); } printf("Closing Interface\n"); CloseInterface(iface); } else { fprintf(stderr, "Couldn't open device interface\n"); } } CloseDevice(device); } return 0; }