#help_index "PCI;Processor;Device;Info" //The file was downloaded from //http://www.pcidatabase.com/reports.php?type=tab-delimeted #define PCI_DEV_FILE "::/SparrowOS/Misc/PCIDevices.TXT.Z" /**** public U0 PCIDevFileGen() { Bool first=TRUE,del=FALSE,del2=FALSE,cont=FALSE; CDoc *doc=DocRead(PCI_DEV_FILE,DOCF_PLAIN_TEXT|DOCF_DBL_DOLLARS); CDocEntry *doc_e=doc->root.next,*doc_e2; while (doc_e!=doc) { doc_e2=doc_e->next; if (first) { if (doc_e->type_u8==DOCT_TEXT) { if (doc_e->tag[0]==';') del=TRUE; } first=FALSE; } if (doc_e->type_u8==DOCT_TEXT && doc_e->tag[StrLen(doc_e->tag)-1]=='=' && doc_e2->type_u8==DOCT_NEW_LINE) { doc_e->tag[StrLen(doc_e->tag)-1]=CH_SPACE; cont=TRUE; } del2=del; if (doc_e->type_u8==DOCT_NEW_LINE) { first=TRUE; del2=FALSE; if (cont) { del=TRUE; cont=FALSE; } } if (del) DocEntryDel(doc,doc_e); del=del2; doc_e=doc_e2; } DocWrite(doc); } ****/ //$LK,"::/SparrowOS/Misc/PCIDevices.TXT.Z","PI:::/SparrowOS/Misc/PCIDevices.TXT.Z"$ U0 PCILookUpSingle(CDoc *doc,I64 m,I64 d,U8 **_vendor,U8 **_dev) { Bool first=TRUE; U8 buf[8],*vendor=NULL,*dev=NULL; CDocEntry *doc_e=doc->root.next; while (doc_e!=doc) { if (first) { if (doc_e->type_u8==DOCT_TEXT && doc_e->tag[0]!=';' && StrLen(doc_e->tag)>=4) { buf[0]='0'; buf[1]='x'; buf[2]=doc_e->tag[0]; buf[3]=doc_e->tag[1]; buf[4]=doc_e->tag[2]; buf[5]=doc_e->tag[3]; buf[6]=0; if (A2I(buf)==m) { doc_e=doc_e->next->next; if (doc_e->type_u8==DOCT_TEXT) { vendor=AStrNew(doc_e->tag); first=FALSE; break; } } } first=FALSE; } if (doc_e->type_u8==DOCT_NEW_LINE) first=TRUE; doc_e=doc_e->next; } if (vendor) { while (doc_e!=doc) { if (first) { if (doc_e->type_u8==DOCT_TAB) { doc_e=doc_e->next; if (doc_e->type_u8==DOCT_TEXT && StrLen(doc_e->tag)>=4) { buf[0]='0'; buf[1]='x'; buf[2]=doc_e->tag[0]; buf[3]=doc_e->tag[1]; buf[4]=doc_e->tag[2]; buf[5]=doc_e->tag[3]; buf[6]=0; if (A2I(buf)==d) { doc_e=doc_e->next->next; if (doc_e->type_u8==DOCT_TEXT) { dev=AStrNew(doc_e->tag); break; } } } } else break; first=FALSE; } if (doc_e->type_u8==DOCT_NEW_LINE) first=TRUE; doc_e=doc_e->next; } } if (vendor) *_vendor=vendor; else *_vendor=AStrNew("Unknown"); if (dev) *_dev=dev; else *_dev=AStrNew("Unknown"); } U0 PCILookUpDevs() { CPCIDev *temppci; U16 w1,w2; I64 b,d,f,timeout=32*8*2; CDoc *doc; if (sys_pci_dev_root.next!=&sys_pci_dev_root) return; doc=DocRead(PCI_DEV_FILE,DOCF_PLAIN_TEXT); for (b=0;bbus=b; temppci->dev=d; temppci->fun=f; temppci->vendor=w1; temppci->dev_id=w2=PCIReadU16(b,d,f,2); temppci->sub_code=PCIReadU8(b,d,f,0xA); temppci->base_code=PCIReadU8(b,d,f,0xB); PCILookUpSingle(doc,w1,w2,&temppci->vendor_str,&temppci->dev_id_str); QueIns(temppci,sys_pci_dev_root.last); timeout=32*8*2; } else if (sys_pci_busses==256 && --timeout<=0) goto lud_done; } lud_done: DocDel(doc); } public U0 PCIRep() { CPCIDev *temppci; "PCI Busses:%d\n",sys_pci_busses; if (!FileFind(PCI_DEV_FILE)) { "You don't have the PCI device file.\n"; return; } PCILookUpDevs; temppci=sys_pci_dev_root.next; while (temppci!=&sys_pci_dev_root) { "%02X:%02X:%01X %02X%02X $$FG,GREEN$$%s $$FG,CYAN$$%s$$FG$$\n", temppci->bus,temppci->dev,temppci->fun, temppci->base_code,temppci->sub_code, temppci->vendor_str,temppci->dev_id_str; temppci=temppci->next; } } #help_index "Info;Time/CPU Cycles" public U0 CPURep() { "%d Cores %6h?nHz\n",mp_cnt,ToF64(time_stamp_freq); } #help_index "PCI;Info;File/System/Hardware;Device" U0 ATARepEntry(I64 base0,I64 base1,I64 unit,I64 irq,U8 *msg,CATARep **_root,I64 *num_hints) { I64 type; base0&=-8; base1&=-4; CATARep *tempha; if (type=ATAProbe(base0,base1,unit)) { *num_hints+=1; "\n\n$$FG,PURPLE$$ $$BT-LE+LM+X,\"%d\",\"%d\\n\"$$$$FG$$$$LM,4$$",*num_hints,*num_hints; if (type==BDT_ATA) "$$FG,RED$$ATA "; else "$$FG,RED$$ATAPI "; "$$FG,LTBLUE$$%s$$FG$$\nBase0: 0x%04X\nBase1: 0x%04X\nIrq: 0x%02X Unit:%d$$LM,0$$\n",msg,base0,base1,irq,unit; if (_root) { tempha=CAlloc(sizeof(CATARep)); tempha->next=*_root; *_root=tempha; tempha->num=*num_hints; tempha->type=type; tempha->base0=base0; tempha->base1=base1; tempha->unit=unit; } } } Bool hint_ata_disable=FALSE; U0 ATARepExitAllApplications() { I64 ch; PutDefine("ST_GOING_TO_PROBE_HARDWARE"); PutDefine("ST_EXIT_ALL_APPLICATIONS"); PutDefine("ST_PRESS_A_KEY"); "Press '$$FG,PURPLE$$p$$FG$$' to probe or '$$FG,PURPLE$$s$$FG$$' to skip.\n"; ch=ToUpper(GetChar(NULL,FALSE)); if (ch=='S') hint_ata_disable=TRUE; else hint_ata_disable=FALSE; } public I64 ATARep(Bool pmt=TRUE,CATARep **_root=NULL) { U32 d1,d2; U8 d3; I64 i,unlock_flags=0,num_hints=0; #assert NUM_BLKDEVS<=64 Bool old_preempt; if (_root) *_root=NULL; if (pmt) ATARepExitAllApplications; if (hint_ata_disable) return 0; old_preempt=Preempt(OFF); for (i=0;itype,tempmr->base,tempmr->base+tempmr->size-1; tempmr=tempmr->next; } LBtr(&sys_semas[SYS_SEMA_DEV_MEM],0); "\nBIOS Memory Report 15:E801\n" "01:0x0000000000000000-0x%016X\n",0x100000+m01[0]<<10-1; "01:0x0000000001000000-0x%016X\n",0x1000000+m01[1]<<16-1; if (m20->type) { NewLine; "BIOS Memory Report 15:E820\n"; while (m20->type) { "%02X:0x%016X-0x%016X\n",m20->type,m20->base,m20->base+m20->len-1; m20++; } } } #help_index ""