#define CID_DFT 0 #define CID_TAD8 1 I64 ts_cid=CID_DFT; #include "::/SparrowOS/Accts/TS/TSIDComputer" U0 VMDrvs(CATARep *root,CATARep **_ata_drv,CATARep **_atapi_drv) { CBlkDev *bd=Drv2BlkDev(dft_drv); CATARep *tempha=root,*ata_drv=NULL,*atapi_drv=NULL; Bool found_atapi=FALSE; while (tempha) { if (tempha->type==BDT_ATA) { if (!ata_drv || tempha->unitunit || tempha->unit==ata_drv->unit && tempha->numnum) ata_drv=tempha; } else if (tempha->type==BDT_ATAPI) { if (!found_atapi) { if (bd && tempha->base0==bd->base0 && tempha->unit==bd->unit) { atapi_drv=tempha; found_atapi=TRUE; } else if (!atapi_drv || tempha->unitunit || tempha->unit==atapi_drv->unit && tempha->numnum) atapi_drv=tempha; } } tempha=tempha->next; } if (_ata_drv) *_ata_drv =ata_drv; if (_atapi_drv) *_atapi_drv=atapi_drv; } U0 TSInit() { //TS_TRA_DRV is for transfering files to dual booted OS's //TS_IMG_DRV is for the holding area for burning CDROMs CATARep *root=NULL,*ata_drv=NULL,*atapi_drv=NULL; CBlkDev *bd; switch (ts_cid) { case CID_TAD8: DefinePrintF("CFG_ACCT","\"\nTS/TAD\n\""); DefinePrintF("CFG_HARD_DRVS","\"h2s0xbc00\n0xb880\n1d2s0xbc00\n0xb880\n0\""); DefinePrintF("CFG_RAM_DRVS","\"b1Scale2Mem(2048,0x40000)\nz1Scale2Mem(2048,0x40000)\n\""); DefinePrintF("CFG_CDROM_DRVS","\"t3s0xb800\n0\""); DefinePrintF("CFG_DSK_CACHE","\"Scale2Mem(0x80000,0x8000000)\n\""); DefinePrintF("TS_HDS","\"DEI\""); DefinePrintF("TS_MASTER_BOOT_DRVS","\"I\""); DefinePrintF("TS_MAIN_DRV","\"D\""); DefinePrintF("TS_BAK_DRV","\"E\""); DefinePrintF("TS_RAM_DRV","\"B\""); DefinePrintF("TS_TRA_DRV","\"I\""); DefinePrintF("TS_WIN_DRV","\"H\""); DefinePrintF("TS_IMG_DRV","\"Z\""); DefinePrintF("TS_CDROM_DRV","\"T\""); break; default: DefinePrintF("CFG_ACCT","\"\nTS/TAD\n\""); DefinePrintF("CFG_HARD_DRVS","\"d2s0x1F0\n0x3F4\n0\""); DefinePrintF("CFG_RAM_DRVS","\"b1Scale2Mem(2048,0x40000)\nz1Scale2Mem(2048,0x40000)\n\""); DefinePrintF("CFG_CDROM_DRVS","\"t3s0x170\n0\""); bd=Drv2BlkDev(dft_drv); if (bd->type==BDT_ATAPI) { ATARep(FALSE,&root); VMDrvs(root,&ata_drv,&atapi_drv); if (ata_drv) DefinePrintF("CFG_HARD_DRVS","\"d2p%d\n\"",ata_drv->num); if (atapi_drv) DefinePrintF("CFG_CDROM_DRVS","\"t3p%d\n\"",atapi_drv->num); } else { bd=Drv2BlkDev('D'); DefinePrintF("CFG_HARD_DRVS","\"d2s0x%X\n0x%X\n%d\"", bd->base0,bd->base1,bd->unit); bd=Drv2BlkDev('T'); DefinePrintF("CFG_CDROM_DRVS","\"t3s0x%X\n%d\"",bd->base0,bd->unit); } DefinePrintF("CFG_DSK_CACHE","\"Scale2Mem(0x80000,0x8000000)\n\""); DefinePrintF("TS_HDS","\"DEF\""); DefinePrintF("TS_MASTER_BOOT_DRVS","\"D\""); DefinePrintF("TS_MAIN_DRV","\"D\""); DefinePrintF("TS_BAK_DRV","\"E\""); DefinePrintF("TS_RAM_DRV","\"B\""); DefinePrintF("TS_TRA_DRV","\"F\""); DefinePrintF("TS_WIN_DRV","\"\""); DefinePrintF("TS_IMG_DRV","\"Z\""); DefinePrintF("TS_CDROM_DRV","\"T\""); } } TSInit; Bool ts_has_main_drv =ToBool(StrLen(TS_MAIN_DRV)), ts_has_bak_drv =ToBool(StrLen(TS_BAK_DRV)), ts_has_ram_drv =ToBool(StrLen(TS_BAK_DRV)), ts_has_tra_drv =ToBool(StrLen(TS_TRA_DRV)), ts_has_win_drv =ToBool(StrLen(TS_WIN_DRV)), ts_has_img_drv =ToBool(StrLen(TS_IMG_DRV)), ts_has_cdrom_drv=ToBool(StrLen(TS_CDROM_DRV)); U0 TSInit2() { DefinePrintF("TS_MAIN_DRV_LET","'%s'",TS_MAIN_DRV); DefinePrintF("TS_BAK_DRV_LET","'%s'",TS_BAK_DRV); DefinePrintF("TS_RAM_DRV_LET","'%s'",TS_RAM_DRV); DefinePrintF("TS_TRA_DRV_LET","'%s'",TS_TRA_DRV); DefinePrintF("TS_WIN_DRV_LET","'%s'",TS_WIN_DRV); DefinePrintF("TS_IMG_DRV_LET","'%s'",TS_IMG_DRV); DefinePrintF("TS_CDROM_DRV_LET","'%s'",TS_CDROM_DRV); } TSInit2; if (ts_has_main_drv) SetDrvTextAttr(TS_MAIN_DRV_LET, WHITE <<4|BLUE); if (ts_has_bak_drv) SetDrvTextAttr(TS_BAK_DRV_LET, WHITE <<4|RED); if (ts_has_ram_drv) SetDrvTextAttr(TS_RAM_DRV_LET, BLUE <<4|YELLOW); if (ts_has_tra_drv) SetDrvTextAttr(TS_TRA_DRV_LET, WHITE <<4|BROWN); if (ts_has_win_drv) SetDrvTextAttr(TS_WIN_DRV_LET, LTRED <<4|BLACK); if (ts_has_img_drv) SetDrvTextAttr(TS_IMG_DRV_LET, BLUE <<4|LTRED); if (ts_has_cdrom_drv) SetDrvTextAttr(TS_CDROM_DRV_LET,LTGRAY<<4|BLUE); #define TS_ISO_NAME TS_RAM_DRV ":/SparrowOSCD.ISO" #define CFG_OPTS "ProtectLow\n\n" #define CFG_DBG_OPTS "ProtectLow\nDet\nHeapInit\n130\nMemInit\n131\nVarInit\n132\n\n" #define CFG_DBGZ_OPTS "ProtectLow\nDet\nHeapInit\n0\nMemInit\n0\nVarInit\n0\n\n" #define TS_CFG CFG_RAM_DRVS CFG_CDROM_DRVS CFG_HARD_DRVS CFG_ACCT CFG_DSK_CACHE CFG_OPTS #define TS_MENU_CFG CFG_RAM_DRVS CFG_CDROM_DRVS CFG_HARD_DRVS "\n\n" CFG_DSK_CACHE CFG_OPTS #define TS_CDROM_CFG "b10x20000\nt3 \n\nTS\n\n\n" //$BK,1$Change these, too...$BK,0$ //$MA+A-X+PU,"PROD_CDROM_CFG","F(\"PROD_CDROM_CFG\");View;"$ //$LK,"Install Acct","FF:::/SparrowOS/Accts/Install/DoItOnce.CPP.Z,InstallBoot"$ U0 CtrlAltR(I64) { snd_record=!snd_record; } SetCtrlAltLetCB('R',&CtrlAltR,"Toggle snd_record"); Bool frame_grabber_paused=FALSE, frame_grabber_on=FALSE; public U0 MyScreenShot(I64 bits=4) { U8 *st; CDirEntry *tempm; I64 cnt=0; tempm=FilesFind("::/Temp/ScreenShots/*.BMP"); while (tempm) { cnt++; tempm=tempm->next; } st=MSPrintF("::/Temp/ScreenShots/SCRN%04d.BMP",cnt); BMPFileCaptureScreen(st,bits); Free(st); Beep; } //This is the max rate for Windows Movie Maker. #define VIDEO_FRAME_RATE 8 #exe { if (ts_cid==CID_TAD8) StreamPutS("#define FRAME_DIR_CNT 600\n"); else StreamPutS("#define FRAME_DIR_CNT 200\n"); }; U0 FrameGrabberTask(I64) { I64 frame_num=0; I64 buf[136],buf2[136],buf3[136]; F64 end_time=tNP,f; TaskInitExt; Silent(ON); //no output to screen while (frame_grabber_on) { SPrintF(buf2,"::/Temp/ScreenShots/V%03d",frame_num/FRAME_DIR_CNT); MkDir(buf2); SPrintF(buf,"%s/VID%05d.BMP.Z",buf2,frame_num%FRAME_DIR_CNT); frame_num++; Suspend(sys_winmgr_task,FALSE); BMPFileCaptureScreen(buf); Suspend(sys_winmgr_task); StrCpy(buf3,buf); f=tNP; while (end_timetask_flags,TASKf_IDLE); while (sys_cur_scan_code&SCF_NUM) { Suspend(sys_winmgr_task,FALSE); Yield; end_time=tNP; } while (end_time>tNP) { Suspend(sys_winmgr_task,FALSE); Yield; } LBtr(&Fs->task_flags,TASKf_IDLE); } Suspend(sys_winmgr_task,FALSE); } public U0 FrameGrabberToggle() { if (frame_grabber_on) { IOSnd(ON); frame_grabber_on=FALSE; Snd(0); snd_record=FALSE; } else { IOSnd(OFF); //You don't want to hear screen capture file writes frame_grabber_on=TRUE; Spawn(&FrameGrabberTask,NULL,"Frame Grabber"); snd_record=TRUE; Snd(0); } } U0 ScreenShotTask(I64) { TaskInitExt; MyScreenShot; } U0 CtrlAltS(I64) { Spawn(&ScreenShotTask); } SetCtrlAltLetCB('S',&CtrlAltS,"Cmd/Screen Shot"); public U0 MBRRep(U8 drv_let='C') { CBlkDev *bdev=Drv2BlkDev(drv_let); I64 type,i,j,ext_base; I64 offset; CMasterBoot mbr; if (bdev->type!=BDT_ATA) return; drv_let=bdev->drv_let_base; offset=0; ext_base=INVALID_CLUSTER; while (TRUE) { ATAReadBlks(bdev,&mbr,offset,1); "$$FG,PURPLE$$Blk:%08X$$FG$$\n",offset; ClassRep("CMasterBoot",&mbr); if (mbr.signature!=0xAA55) break; j=-1; for (i=0;i<4;i++) { "$$FG,CYAN$$ Entry #%d$$FG$$\n",i; if (mbr.p[i].active||mbr.p[i].type) ClassRep("CMBRPrt",&mbr.p[i]); if (mbr.p[i].type) { type=mbr.p[i].type; "$$FG,RED$$%C Offset:%08X Size:%08X Type:%X$$FG$$\n", drv_let,mbr.p[i].offset+offset, mbr.p[i].size,type; if (type==5 || type==0xF) j=i; else drv_let++; } } if (j<0) break; if (!mbr.p[j].offset) break; if (ext_base==INVALID_CLUSTER) { offset=mbr.p[j].offset; ext_base=offset; } else offset=mbr.p[j].offset+ext_base; } } public U0 Abbr(U8 *word,U8 *abbr) { U8 buf1[136],buf2[136]; StrCpy(buf1,word); StrCpy(buf2,abbr); StrUtil(buf1,SUF_TO_LOWER); StrUtil(buf2,SUF_TO_LOWER); Grep(buf1,"/SparrowOS/"TEXT_FILE_MASK,"-l-i",buf2); *buf1=ToUpper(*buf1); *buf2=ToUpper(*buf2); Grep(buf1,"/SparrowOS/"TEXT_FILE_MASK,"-l-i",buf2); StrUtil(buf1,SUF_TO_UPPER); StrUtil(buf2,SUF_TO_UPPER); Grep(buf1,"/SparrowOS/"TEXT_FILE_MASK,"-l-i",buf2); } public U0 ChkAll() { U8 *ptr=TS_HDS; while (*ptr) ChkDsk(*ptr++); } public U0 MyHAllRep(U8 *flags="-p",U8 *index=NULL) { HashRep(Fs->hash_table,HTG_SRC_SYM-HTT_DEFINE_STR-HTT_CLASS,NULL,flags,0,index); } public CDoc *DC2Doc(CDC *dc,I64 dx=0,I64 dy=0,I64 *_total_score=NULL) { I64 *ptr; U8 byte_bit_cnts[256],st[2]; I64 i,j,row,col,ch,best_ch,score,best_score,cur_char_image,diff_image,total_score=0; CDoc *doc=DocNew; MemSet(st,0,sizeof(st)); MemSet(byte_bit_cnts,0,sizeof(byte_bit_cnts)); for (i=0;i<256;i++) for (j=0;j<7;j++) if (Bt(&i,j)) byte_bit_cnts[i]++; for (row=0;rowheight/FONT_HEIGHT;row++) { for (col=0;colwidth/FONT_WIDTH;col++) { cur_char_image=0; for (i=0;ifilename.name,out_name); DocWrite(doc); } DocDel(doc); } } Free(in_name); Free(out_name); } U0 CopyVideo() { U8 *st; if (ts_has_tra_drv) { Del(TS_TRA_DRV ":/Temp/*.SND"); st=MSPrintF("#include \"::/SparrowOS/Apps/MusicOrgan/Load\";" "SndFileCreate(\"" TS_TRA_DRV ":/Temp/Audio\",0.23,0.0,WF_NULL,0.45,0.35);"); PopUp(st); Free(st); DelTree(TS_TRA_DRV ":/Temp/ScreenShots"); CopyTree("::/Temp/ScreenShots",TS_TRA_DRV ":/Temp/ScreenShots"); } }