/************* * DESCRIPTION: load texture * INPUT: texture texture * OUTPUT: FALSE if failed else TRUE *************/ BOOL IPREVIEW_TEXTURE::Load(TEXTURE *texture) { /* Load Imagine texture */ #ifdef __AMIGA__ IM_TTABLE* (*texture_init)(LONG arg0); seglist = LoadSeg(texture->name); if(!seglist) return FALSE; *(ULONG*)(&texture_init) = 4*seglist+4; #ifdef __PPC__ ttable = ITextureInit(texture_init); #else ttable = texture_init(0x60FFFF); #endif #else INQUIRETEXTURE InquireTexture; PREFS prefs; char szBuffer[256]; prefs.id = ID_TXTP; if (prefs.GetPrefs()) ExpandPath((char *)prefs.data, texture->name, szBuffer); else strcpy(szBuffer, texture->name); prefs.data = NULL; // VERY important ! hInst = LoadLibrary(szBuffer); if (!hInst) return FALSE; InquireTexture = (INQUIRETEXTURE)GetProcAddress(hInst, "InquireTexture"); if (!InquireTexture) return FALSE; ttable = InquireTexture(0x70, 0x1); #endif if(!ttable) return FALSE; // copy parameters memcpy(params, ((IMAGINE_TEXTURE*)texture)->params, 16*sizeof(float)); form.pos = pos; form.orient_x = orient_x; form.orient_y = orient_y; form.orient_z = orient_z; form.size = size; return TRUE; }
int main (int argc, char ** argv) { struct Library *base1, *base2; BPTR seglist; FPuts(Output(), (STRPTR)"Testing peropener.library\n"); base1=OpenLibrary((STRPTR)"peropener.library",0); base2=OpenLibrary((STRPTR)"peropener.library",0); FPrintf(Output(), (STRPTR)"base1=%lx, base2=%lx\n", base1, base2); if (base1 != NULL) CloseLibrary(base1); if (base2 != NULL) CloseLibrary(base2); FPuts(Output(), (STRPTR)"\nTesting perid.library\n"); base1=OpenLibrary((STRPTR)"perid.library",0); base2=OpenLibrary((STRPTR)"perid.library",0); FPrintf(Output(), (STRPTR)"base1=%lx, base2=%lx\n", base1, base2); seglist = LoadSeg((CONST_STRPTR)"peropenertest_child"); if (seglist != (BPTR)NULL) { RunCommand(seglist, 10*1024, "\n", -1); UnLoadSeg(seglist); } else { FPrintf(Output(), (STRPTR)"Failed to load peropenertest_child\n"); } if (base1 != NULL) CloseLibrary(base1); if (base2 != NULL) CloseLibrary(base2); Flush (Output ()); return 0; }
extern UBYTE dhclient_path[]; extern struct ifnet *ifnet; extern struct Library *logDOSBase; #define DOSBase logDOSBase void run_dhclient(struct ifnet *ifp) { char ifname[IFNAMSIZ+5]; BPTR seglist; if (!ifp->if_data.ifi_aros_dhcp_pid) { DDHCP(KPrintF("Starting DHCP client for %s%u\n", ifp->if_name, ifp->if_unit);) sprintf(ifname, "-q %s%u", ifp->if_name, ifp->if_unit); seglist = LoadSeg(dhclient_path); DDHCP(KPrintF("seglist = 0x%08lx\n", seglist);) if (seglist) { ifp->if_data.ifi_aros_dhcp_pid = (pid_t)CreateNewProcTags(NP_Seglist, seglist, NP_Arguments, ifname, NP_Cli, TRUE, NP_Name, "AROSTCP DHCP client", NP_CommandName, "dhclient", NP_ConsoleTask, NULL, TAG_DONE); DDHCP(KPrintF("dhclient pid = 0x%08lx\n", ifp->if_data.ifi_aros_dhcp_pid);) if (!ifp->if_data.ifi_aros_dhcp_pid) { UnLoadSeg(seglist); seglist = NULL; } }
global bool InitSoundDriver() { int patchNum; Handle patchHandle; /* Load sound driver */ #ifdef IBM if((soundDrv = LoadHandle(soundDriver)) == (Handle)NULL) { RAlert(E_CANT_FIND, soundDriver); return (FALSE); } LockHandle(soundDrv); #endif #ifdef AMIGA if(!(bseg = (struct Segment *) LoadSeg(soundDriver))) { RAlert(E_CANT_FIND, soundDriver); return (FALSE); } drvHandle = (unsigned char far *) (((ulong) bseg << 2) + 4); soundDrv = (Handle) &drvHandle; if((DoSound(SPatchReq,(void far *) *(soundDrv), (int far *) &numberOfVoices, (int far *) &numberOfDACs, (int far *) &devID) & 0x7f) == 5) { if(dummysoundbank) { int bankFile; long bankIndex = 0, bankSize; if((bankFile = open("patch.005")) == NULL) { RAlert(E_NO_PATCH); return (FALSE); } read(bankFile,&bankSize,2); bankSize = dsoundsize; while(bankSize > 1024) { read(bankFile,(dummysoundbank + bankIndex),1024); bankSize -= 1024; bankIndex += 1024; } if(bankSize) { read(bankFile,(dummysoundbank + bankIndex),bankSize); } close(bankFile); } else { UnLoadSeg(bseg); if(!(bseg = (struct Segment *) LoadSeg("amiga3v.drv"))) { RAlert(E_CANT_FIND,soundDriver); return (FALSE); } drvHandle = (unsigned char far *) (((ulong) bseg << 2) + 4); soundDrv = (Handle) &drvHandle; } } else { if(dummysoundbank) { FreeMem(dummysoundbank,dsoundsize); dummysoundbank = NULL; } } seglist[segcount++] = bseg; #endif /* Load patch (if one is needed) * If bit 7 of the patch number is set, then the patch * will need to be locked permanently in hunk */ patchNum = DoSound(SPatchReq,(void far *) *(soundDrv), (int far *) &numberOfVoices, (int far *) &numberOfDACs, (int far *) &devID); #ifdef AMIGA if((patchNum & 0x7f) == 5) { /* This Kludge is temporary, until */ patchNum = -1; /* the Amiga interpreter is capable of*/ } /* handling 64k+ resources */ #endif if(patchNum != -1) { if ((patchNum&0x7f) == 10) patchHandle = DoLoad(RES_PATCH,(patchNum & 0x7f)); else patchHandle = ResLoad(RES_PATCH,(patchNum & 0x7f)); if(patchNum & 0x80) { ResLock(RES_PATCH,(patchNum & 0x7f),TRUE); LockHandle(patchHandle); } } /* Initialize sound driver */ #ifdef IBM if(DoSound(SInit,(char far *) *(patchHandle),0) == -1) { DisposeHandle(soundDrv); RAlert(E_NO_MUSIC); return(FALSE); } #endif #ifdef AMIGA if(dummysoundbank) { DoSound(SInit,dummysoundbank); } else { DoSound(SInit,(char far *) *(patchHandle),0); } #endif InitList(&soundList); InstallServer(SoundServer,1); DoSound(SProcess,TRUE); return(TRUE); }
/************* * DESCRIPTION: Load Imagine texture and init it * INPUT: filename texture filename * path texture path * OUTPUT: ERR_NONE if ok, else error number *************/ int IMAGINE_TEXTURE::Load(RSICONTEXT *rc, char *filename, char *path) { #ifdef __AMIGA__ IM_TTABLE* (*texture_init)(LONG arg0); #endif // __AMIGA__ char buffer[256]; texture = rc->text_root->FindIMTexture(filename); if(!texture) { /* don't found the texture => load it again */ texture = new IM_TEXT; if(!texture) return ERR_MEM; /* Load Imagine texture */ if(!ExpandPath(path,filename,buffer)) { delete texture; return ERR_OPENTEXTUREFILE; } #ifdef __AMIGA__ texture->seglist = LoadSeg(buffer); if(!texture->seglist) { delete texture; return ERR_OPENTEXTUREFILE; } *(ULONG*)(&texture_init) = 4*texture->seglist+4; #ifdef __PPC__ texture->ttable = ppc_texture_init(texture_init, 0x60FFFF); #else texture->ttable = texture_init(0x60FFFF); #endif // __PPC__ #else texture->ttable = NULL; INQUIRETEXTURE InquireTexture; texture->hInst = LoadLibrary(buffer); if (!texture->hInst) { delete texture; return ERR_INITTEXTURE; } InquireTexture = (INQUIRETEXTURE)GetProcAddress(texture->hInst, "InquireTexture"); if (!InquireTexture) { delete texture; return ERR_INITTEXTURE; } texture->ttable = InquireTexture(0x70, 0x1); #endif if(!texture->ttable) { #ifndef __WATCOMC__ delete texture; #endif return ERR_INITTEXTURE; } texture->name = new char[strlen(filename)+1]; if(!texture->name) { delete texture; return ERR_MEM; } strcpy(texture->name,filename); texture->Insert(rc); } /* Copy default parameters */ memcpy(param, texture->ttable->params, 16*sizeof(float)); /* Copy default geometry */ memcpy(&pos, texture->ttable->tform, 5*sizeof(VECTOR)); return ERR_NONE; }