Die Detecting Unit fr Pascal Version 1.19- (public BETA) Freeware Copyright (C) 1995, 1996 by Eike Frost/EJF Inhaltsverzeichnis Lizenzbestimmungen [1.1] Garantie/Haftung [1.2] Wie der Autor zu Erreichen ist [1.3] ber den Autor [1.4] Appell an alle User [1.5] Was ist "Detecting Unit fr Pascal" ? [1.6] Geschichte der Unit [1.7] Aufbau der Anleitung und des Source Codes [1.8] Funktionen WhatCPU [2.1.1.1] IsCPUId [2.1.1.2] TestCPUId [2.1.1.3] CPUReset [2.1.1.4.1] CPUResetStr [2.1.1.4.2] GetCyrixReg [2.1.1.5.1] CyrixId [2.1.1.5.2] Is386PopAdBug [2.1.2] Is386MulBug [2.1.3] IsP5FDivBug [2.1.4] CPUFreq [2.1.5] WaitStates [2.1.6] BusWidth [2.1.7] IsCPUCache [2.1.8.1] CPUCacheLevel [2.1.8.2] CPUCacheKBFirst [2.1.8.3] CPUCacheKBSecond [2.1.8.4] CPUCacheThruFirst [2.1.8.5] CPUCacheThruSecond [2.1.8.6] BusType [2.1.9.1.1] EISAIsID [2.1.9.2.1] EISASlotType [2.1.9.2.2] EISAConfigVersion [2.1.9.2.3] EISAConfigCheckSum [2.1.9.2.4] EISANumDevFunc [2.1.9.2.5] EISAId [2.1.9.2.6] IsPCIDevice [2.1.9.3.1] GetPCIConfig [2.1.9.3.2] GetPCIVendor [2.1.9.3.3] IdentifyPCIDevice [2.1.9.3.4] IdentifyPCIClass [2.1.9.3.5] IdentifyPCISubClass [2.1.9.3.6] WhatCoPro [2.2.1] CoProRounding [2.2.2] CoProPrecision [2.2.3] CoProFreq [2.1.4] WhatWeitek [2.3.1] WhatMSW [2.4.1] IsMSWProtMode [2.4.2] IsMSWMonCoPro [2.4.3] IsMSWEmuCoPro [2.4.4] WhatGDT [2.5.1] WhatIDT [2.5.2] MashineType [2.6.1] IsDMAChannel3 [2.7.1] IsSlave8259 [2.7.2] IsRealClock [2.8.1] IsWaitExtEvent [2.8.2] BiosDate [2.9.1] BiosRevision [2.9.2] BiosSource [2.9.3] BiosShort [2.9.4] BiosVersion [2.9.5] IsExtBiosSeg [2.9.6] BiosExtensions [2.9.7] GetBiosRecord [2.9.8] HasCMOSPower [2.9.9] IsAPM [2.9.10.1] APMVersion [2.9.10.2] APMIs16Prot [2.9.10.3] APMIs32Prot [2.9.10.4] APMIsBIOSPowMngmnt [2.9.10.5] APMACLineStatus [2.9.10.6] APMBatteryStatus [2.9.10.7] APMBatteryLife [2.9.10.8] SerialCount [2.10.1] ParrallelCount [2.10.2] IsJetStream [2.10.3] ExtKeyboardSupp [2.11.1] KeyboardType [2.11.2] KeyBufferLength [2.11.3] IsKeyb16_9 [2.11.4] IsKeybIntercept [2.11.5] KeyboardId [2.11.6] KeyboardController [2.11.7] IsMouse [2.12.1] MouseVersion [2.12.2.1] MouseVendor [2.12.2.2] MouseType [2.12.3] MouseIRQ [2.12.4] MouseLanguage [2.12.5] MouseButtons [2.12.6] DoubleClickSpeed [2.12.7] MouseMickeysVert [2.12.8] MouseMickeysHori [2.12.9] MouseDisplayPage [2.12.10] EGARegisterSupp [2.12.11] EGARegisterVers [2.12.12] SaveStateBuffer [2.12.13] IsMouseSystemsDrv [2.12.14.1.1] MouseSystemsVer [2.12.14.1.2] IsLogitechDrv [2.12.14.2.1] LogiCompPara [2.12.14.2.2] LogiSerBaudRate [2.12.14.2.3] LogiSerReportRate [2.12.14.2.4] LogiSerFirmRev [2.12.14.2.5] LogiSerPort [2.12.14.2.6] MouseDriverType [2.12.15.1] MouseCursorType [2.12.15.2] MouseIntrRate [2.12.15.3] MouseAccellProf [2.12.15.4] MouseBallPoint [2.12.15.5] MouseIniPath [2.12.16.1] MousePointerStyle [2.12.16.2] MousePointerSize [2.12.16.3] MousePointerSChange [2.12.16.4] MouseVersionWord [2.12.17] IsZNixMouseDrv [2.12.18.1] IsTrueDOXMouseDrv [2.12.18.2] IsHPMouseDrv [2.12.18.3] BootDrive [2.13.1.1] NumberDrives [2.13.1.2] DiskDevices [2.13.1.3] FirstFloppy [2.13.1.4] LastDrive [2.13.1.5] IsDevice [2.13.1.6] DeviceType [2.13.1.7] DeviceRemove [2.13.1.8] DeviceMethod [2.13.1.9] IsVerify [2.13.1.10] HDCylinders [2.13.2.1] HDHeads [2.13.2.2] HDSectors [2.13.2.3] HDCapacity [2.13.2.4] HDTrackSeek [2.13.2.5] HDAverageSeek [2.13.2.6] HDMaximumSeek [2.13.2.7] HDTransferRead [2.13.2.8] HDTransferWrite [2.13.2.9] IDEType [2.13.3.1] ATA_PIIsDrive [2.13.3.2] ATA_PIStrings [2.13.3.3] ATA_PIBools [2.13.3.4] ATA_PIWords [2.13.3.5] WhatGCard [2.14.1.1] WhatGCardNumber [2.14.1.2] VesaInf [2.14.2.1] VESAIsVidMode [2.14.2.2] VESAVidModeString [2.14.2.3] GraInf [2.14.3] WhatRamDac [2.14.4] ScanLinesChar [2.14.5] ScanLinesCursor [2.14.6] GetFontAddress [2.14.7] GetPaletteRegister [2.14.8] VideoWaits [2.14.9] BiosSpeed [2.14.10.1] DosSpeed [2.14.10.2] TestVertHz [2.14.11.1] TestHorizHz [2.14.11.2] IsDGIS [2.14.12] IsSB [2.15.1.1] WhatSb [2.15.1.2] WhatSBPort [2.15.1.3] WhatSBVersion [2.15.1.4] IsAdlib [2.15.2.1] IsAdlibDriver [2.15.2.2] AdlibDrvVer [2.15.2.3] AdlibDrvAdr [2.15.2.4] IsMPU401 [2.15.3.1] IsGUS [2.15.4.1] GUS_Port [2.15.4.2] GUS_Memory [2.15.4.3] IsVBEAI [2.15.5.1] VBEAIVersion [2.15.5.2] VBEAILDevice [2.15.5.3] VBEAIGetInfo [2.15.5.4] IsExistEMS [2.16.1] GetEMSVersion [2.16.2] AllEMSPages [2.16.3] FreeEMSPages [2.16.4] GetEMSAddress [2.16.5] GetNumberHandles [2.16.6.1] GetEMSHandleSize [2.16.6.2] GetEMSHandleName [2.16.6.3] IsVCPI [2.16.7.1] VCPIVersion [2.16.7.2] IsExtMemBIOS [2.17.1.1] BiosFreeEXT [2.17.1.2] IsExtmemDriv [2.17.2.1] XMSVersion [2.17.2.2] XMMVersion [2.17.2.3] XMSMemory [2.17.2.4] XMSFreeMemory [2.17.2.5] A20Status [2.17.2.6] IsUMB [2.17.2.7] UMBLargestBl [2.17.2.8] IsHma [2.18.1] HmaStatus [2.18.2] HmaUsedByDos5 [2.18.3] HmaFreeDos5 [2.18.4] HmaAddressDos5 [2.18.5] IsDPMI [2.19.1] DPMIVersion [2.19.2] DPMICPU [2.19.3] DPMIModeEntry [2.19.4] CMOSBaseMemory [2.20.1] CMOSExtMemory [2.20.2] CMOSTotalMem [2.20.3] MemThru [2.20.4.1] BiosExtThru [2.20.4.2] EMSThru [2.20.4.3] IsVDS [2.21.1] VDSVersion [2.21.2] VDSProduct [2.21.3] VDSMaxDMABSize [2.21.4] VDSTransfersOk [2.21.5] VDSIsBuffer1Meg [2.21.6] VDSIsAutoRemap [2.21.7] VDSIsContiguousMem [2.21.8] VDSIsBiosBit [2.21.9] IsInstalled [2.22.1] WhichAddress [2.22.2] WhichVersion [2.22.3] DosMemory [2.23.1] FreeDosMemory [2.23.2] GetDosVersion [2.23.3] CountryCode [2.23.4] CountryString [2.23.5] IsDosInHMA [2.23.6] IsDosInRom [2.23.7] GetDosOEMNumber [2.23.8] GetDosSwitchChar [2.23.9] IsDEVPrefix [2.23.10] GetDosBusyFlag [2.23.11] GetPrtScrStatus [2.23.12] GetMemAllocMethod [2.23.13] DosBuffers [2.23.14] DosFilesPointer [2.23.15] DosFilesCount [2.23.16] DosFilesUsed [2.23.17] DosFCBCount [2.23.18] DosStacksCount [2.23.19] DosStacksSize [2.23.20] DosActiveGlobalCodePage [2.23.21] DosDefaultGlobalCodePage [2.23.22] DosThousandSeparator [2.23.23] DosDecimalSeparator [2.23.24] DosDatalistSeparator [2.23.25] DosDateFormat [2.23.26] DosTimeFormat [2.23.27] DosTimeSeparator [2.23.28] DosCurrencyFormat [2.23.29] DosCaseMapCallAddress [2.23.30] NumberHandleTables [2.23.31.1] OpenHandlesTable [2.23.31.2] OpenHandleTableSize [2.23.31.3] UsedTableEntrys [2.23.31.4] GetOpenFileStatus [2.23.31.5] Version4Dos [2.24.1] Shell4Dos [2.24.2] PSPSegment4Dos [2.24.3] VersionNDos [2.25.1] ShellNDos [2.25.2] PSPSegmentNDos [2.25.3] WhichChipset [2.26.1] Is386Max [2.27.1.1] _386MaxVersion [2.27.1.2] _386MaxSegment [2.27.1.3] _386MaxEMSActive [2.27.1.4] _386MaxWin3Supp [2.27.1.5] IsMICEMM [2.27.2.1] MICEMMCS [2.27.2.2] IsEmm386 [2.27.3.1] Emm386Api [2.27.3.2] Emm386Status [2.27.3.3] Emm386Weitek [2.27.3.4] IsQEMM [2.27.4.1] QEMMApi [2.27.4.2] QEMMVersion [2.27.4.3] QEMMStatus [2.27.4.4] QEMMIsHiRam [2.27.4.5] QEMMHiRamMCB [2.27.4.6] QEMMStealthStatus [2.27.4.7] QEMMStealthRom [2.27.4.8] IsQManifest [2.27.4.9] IsQVidRam [2.27.4.10] VidRamCS [2.27.4.11] QEMMInitConv [2.27.4.12.1.1] QEMMInitExt [2.27.4.12.1.2] QEMMInitExp [2.27.4.12.1.3] QEMMInitExtra [2.27.4.12.1.4] QEMMInitTotal [2.27.4.12.1.5] QEMMCurrConv [2.27.4.12.2.1] QEMMCurrExt [2.27.4.12.2.2] QEMMCurrEMSXMS [2.27.4.12.2.3] QEMMCurrHiRam [2.27.4.12.2.4] QEMMCurrMapped [2.27.4.12.2.5] QEMMCurrDMAB [2.27.4.12.2.6] QEMMCurrDMATasks [2.27.4.12.2.7] QEMMCurrDMAMap [2.27.4.12.2.8] QEMMCurrCode [2.27.4.12.2.9] QEMMCurrData [2.27.4.12.2.10] QEMMCurrTotal [2.27.4.12.2.11] QEMMUnAvailConv [2.27.4.12.3.1] QEMMUnAvailExt [2.27.4.12.3.2] QEMMUnAvailExp [2.27.4.12.3.3] QEMMUnAvailShdwTop [2.27.4.12.3.4] QEMMMemType [2.27.4.13] QEMMAccess [2.27.4.14] QEMMStealth [2.27.4.15] TaskMaxVersion [2.28.1] TaskMaxMaxTasks [2.28.2] TaskMaxActTasks [2.28.3] IsTBScanX [2.29.1] TBScanXVersion [2.29.2] TBScanXStatus [2.29.3] N_CacheStatus [2.30.1.1] N_DiskReetStatus [2.30.2.1] N_DiskReetRes [2.30.2.2] N_DiskMonStatus [2.30.3.1] N_DiskMonRes [2.30.3.2] N_FileSavRes [2.30.4.1] IsIBMCache [2.31.1] IBMCTotalRRequests [2.31.2] IBMCTotalHits [2.31.3] IBMCPhysicalDReads [2.31.4] IBMCTotalSecReqDR [2.31.5] IBMCIsExtUsed [2.31.6] IBMCVersion [2.31.7] IBMCSize [2.31.8] IBMCSectorsPage [2.31.9] CompaqAdaptVersion [2.32.1] IsPcAnywhere [2.33.1] PcAnywhereStatus [2.33.2] PcAnywherePort [2.33.3] PcAnywhereBaud [2.33.4] IsPCAnyWhereIV [2.33.5] PCAnyWhereIVApi [2.33.6] PCAnyWhereIVVer [2.33.7] PCAnyWhereIVStat [2.33.8] IsDiskSpoolII [2.34.1] DiskSpoolSegment [2.34.2] DiskSpoolSpoolSt [2.34.3] DiskSpoolDeSpSt [2.34.4] IsDesqView [2.35.1] DesqViewVersion [2.35.2] DesqViewWnNo [2.35.3] DesqViewTrueVid [2.35.4] DesqViewWidth [2.35.5] DesqViewHeight [2.35.6] DesqViewCoMemAvail [2.35.7] DesqViewCoMemLarge [2.35.8] DesqViewCoMemTotal [2.35.9] DesqViewCnMemAvail [2.35.10] DesqViewCnMemLarge [2.35.11] DesqViewCnMemTotal [2.35.12] DesqViewExMemAvail [2.35.13] DesqViewExMemLarge [2.35.14] DesqViewExMemTotal [2.35.15] IsWindows [2.36.1] WindowsMode [2.36.2] WinEnhVersion [2.36.3] WinEnhVirtMashID [2.36.4] WinEnhOldAp [2.36.5] WinEnhOldApVer [2.36.6] WinEnhDriverVer [2.36.7] WinEnhDeviceType [2.36.8] WinEnhPixelWidth [2.36.9] WinEnhPixelHeight [2.36.10] WinEnhColors [2.36.11] WinEnhBits_Pixel [2.36.12] WinEnhBit_Planes [2.36.13] WinEnhXAspect [2.36.14] WinEnhYAspect [2.36.15] WinEnhBrushes [2.36.16] WinEnhPens [2.36.17] WinEnhMarkers [2.36.18] WinEnhFonts [2.36.19] IsSmartDrive [2.37.1.1] SMDeviceVer [2.37.1.2] SMDeviceSizeNow [2.37.1.3] SMDeviceMinSize [2.37.1.4] SMDeviceEleSize [2.37.1.5] SMDeviceCacheHits [2.37.1.6] SMDeviceCacheMisses [2.37.1.7] SMDeviceRCache [2.37.1.8] SMDeviceWCache [2.37.1.9] SMDeviceDblBuffer [2.37.1.10] SMIOCTLVer [2.37.2.1] SMIOCTLSize [2.37.2.2] SMIOCTLMaxSize [2.37.2.3] SMIOCTLMinSize [2.37.2.4] SMIOCTLEnabled [2.37.2.5] SMIOCTLLockedTracks [2.37.2.6] SMIOCTLWriteThrough [2.37.2.7] SMIOCTLWriteBuffer [2.37.2.8] SMIOCTLHitRate [2.37.2.9] SMIOCTLDMABuffering [2.37.2.10] SMIOCTLMemoryType [2.37.2.11] SMIOCTLFlushReboot [2.37.2.12] SMIOCTLTracksTotal [2.37.2.13] SMIOCTLTracksUsed [2.37.2.14] SMIOCTLTracksLocked [2.37.2.15] SMIOCTLTracksDirty [2.37.2.16] IsPC_TCP [2.38.1] PC_TCP_Interrupt [2.38.2] IsFossil [2.39.1] FossilType [2.39.2] FossilSpecLevel [2.39.3] FossilRevision [2.39.4] FossilIDString [2.39.5] IsVidFossil [2.40.1] VidFossilVer [2.40.2] VidFossilRev [2.40.3] VidFossilHFn [2.40.4] DhryStones [2.41.1] WhetStones [2.41.2] MFLOPS [2.41.3] DhryStonesXT [2.41.4] WhetStonesXT [2.41.5] MFLOPSXT [2.41.6] TrnsFormMFLOPS [2.41.7] TrnsFormMFLOPSIIT [2.41.8] PeakMFLOPS [2.41.9] IsNetWork [2.42.1] NetType [2.42.2] AppendStatus [2.43.1] AppendPath [2.43.2] SetverList [2.44.1] SetverCount [2.44.2] SetverText [2.44.3] AvaLevelSupp [2.45.1] AvaDriverType [2.45.2] TesPort [2.46.1] IsQuickCacheII [2.47.1] QuickCacheIIVer [2.47.2] GetQuickCacheIIInfo [2.47.3] IsOnBoardSCSI [2.48.1] IsIML [2.48.2] IsIMLSCSISupp [2.48.3] IsIBMYaleESIO [2.49.1] SRDiskSuppDrives [2.50.1] SRDiskMemType [2.50.2] SRDiskVersion [2.50.3] SRDiskConfVersion [2.50.4] PCT5DeskHotkey [2.51.1] PCT7DeskColorSheme [2.51.2] PCT6DeskVersion [2.51.3] PCT5DeskIsResident [2.51.4] PCT6CacheIsDrive [2.51.5] GetParDevParams [2.52.1.1] GetParDevTimeOut [2.52.1.2] IsEPP [2.52.1.3] GetSerDevUART [2.52.2.1] GetSerDevBaudRate [2.52.2.2] GetSerDevDataBits [2.52.2.3] GetSerDevParity [2.52.2.4] GetSerDevStopBits [2.52.2.5] GetSerDevBreak [2.52.2.6] GetSerDevFlags [2.52.2.7] MDPIsForeGround [2.53.1] MDPIsMultiTasking [2.53.2] GetNumberMCBs [2.54.1] GetMCBSeg [2.54.2] GetMCBPSP [2.54.3] GetMCBParent [2.54.4] GetMCBSize [2.54.5] GetMCBOwner [2.54.6] GetMCBInterrupts [2.54.7] EnvSeg [2.55.1] EnvLen [2.55.2] EnvUsed [2.55.3] DevCount [2.56.1] DevName [2.56.2] DevHeader [2.56.3] DevAttributes [2.56.4] DevStrategy [2.56.5] DevInterrupt [2.56.6] Die Beispielprogramme [3.1] Verwendete Abkrzungen [3.2] Der iComp Index [3.3.1] Der Cyrix Index [3.3.2] In DetectGraphics verwendete Zahlen [3.4] Warenzeichen etc. [3.5] Bemerkungen [3.6] Danksagungen [3.7] Referenzen [3.8] Dann wolln' wir ma ... ;-) ͵ Lizenzbestimmungen ͵[1.1] Die Unit darf in PD und Freewareprogrammen verwendet werden, sofern in dem Programm und in der Anleitung (falls vorhanden) darauf hingewiesen wird, von wem die Unit kommt (Eike Frost/EJF), in welcher Version sie verwendet wurde und wie man den Autor ber's Internet und FidoNet erreichen kann (Eike.Frost@ngosub5.ngo.ol.ni.schule.de / 2:2426/2320.5). Ein guter Platz hierfr ist der Credits- oder ber-Screen : []͵ ber / Credits ͻ Programm XXXX Version XXXXX / Autor : XXXXXXX XXXXXXX Dieses Programm benutzt "Die Detecting Unit fr Pascal" Version 1.19 von Eike Frost (Eike.Frost@ngosub5.ngo.ol.ni.schule.de / 2:2426/2320.5) Copyright XXXX by XXXXXX Bei PD-Programmen, sowie bei Freeware-Programmen mit Source-Code kommt hinzu, da die Unit mit vollstndigem, unverndertem Source-Code und all seiner Dateien (sind in DETECT.PAS aufgezhlt) beiliegen mu. Wenn der Source-Code verndert worden ist, mu man entweder die Unit im alten und im neuen Zustand beilegen, oder die vernderten Stellen im Quelltext markieren und den alten Source-Code auskommentieren, so da dieser immernoch lesbar ist. Desweiteren sollte auch in der Anleitung oder im Programm vermerkt werden, da die Unit verndert wurde. Wenn nur einzelne Routinen aus der Unit verwendet werden (max. 500 Zeilen), knnen diese auch extrahiert werden, sofern dann im Quellcode(/in der Anleitung/Im Programm) vermerkt wird, von wo/wem der Code kommt und wie man den Rest bekommen kann. Wenn jemand diese Unit in komerziellem Umfeld nutzen oder in ein komerziel- les Programm einbinden will (auch Shareware), so mu er sich mit mir in Verbindung setzen, und eine schriftliche Genehmigung einholen. Auch wenn nur einzelne Teile dieser Unit in einem anderen Programm genutzt werden, mu ein entsprechender Hinweis im Credits- oder ber- Screen eingesetzt werden bzw. (bei komerziellen/Shareware Programmen) eine schriftliche Genehmigung eingeholt werden. ͵ Garantie/Haftung ͵[1.2] DER AUTOR BERNIMMT KEINERLEI HAFTUNG FR DIREKT ODER INDIREKT DURCH DIESE SOFTWARE ENTSTANDENE FEHLER, VERLUSTE ODER SCHDEN. DIE VERANTWORTUNG FR DIE BENUTZUNG DIESER SOFTWARE LIEGT EINZIG UND ALLEIN BEIM ANWENDER. DER AUTOR GARANTIERT IN KEINEM FALL DIE LAUFFHIGKEIT ODER DIE FEHLERFREIHEIT DER UNIT UND DESSEN ROUTINEN. BENUTZUNG DIESER ROUTINEN ERFOLGT AUF EIGENE GEFAHR. DIESE UNIT WURDE NACH BESTEM WISSEN ERSTELLT UND MU NICHT FEHLER- FREI SEIN. FR SCHDEN DIE AUS DER ANLEITUNG RESULTIEREN BERNIMMT DER AUTOR EBENFALLS KEINE VERANTWORTUNG. ES IST NICHT GARANTIERT, DA DIE UNIT FR IRGENDEINEN ZWECK EINSETZBAR IST. ͵ Wie der Autor zu erreichen ist ͵[1.3] Meine Adresse : Eike Frost Huntemannstr. 15 26131 Oldenburg Germany ( Wenn jemand die aktuelle Version per Post bekommen mchte, soll dieser jemand doch bitte einen adressierten, ausreichend frankierten Rckumschlag und Diskette mitschicken, sonst wird gar nichts zurck geschickt. Ich lade dieses Programm aber auch auf verschiedene Mailboxen rauf, wo man doch zuerst gucken sollte ( spart Porto und Mhe ). ) Ich bin auch ber Internet zu erreichen : Eike.Frost@ngosub5.ngo.ol.ni.schule.de (wird tglich geprft) Im Connection-Net, Cybernet (Oldenburg) bin ich unter Eike Frost eingetragen (wird nicht regelmig berprft). Auerdem bin ich User bei Berni's Box und der TurboBox. Zwischendurch lese ich auch mal die PASCAL.GER und ASM86.GER (nicht besonders regelmig). Als Point bin ich in der Turbobox zu erreichen : - Fido : 2:2426/2320.5 - Pascal-Net : 115:4905/230.5 - Ger-Net : 21:484/2100.5 - Nero-Net : 25:300/154.5 - XCS-Net : 213:303/2625.5 - Jedi-Net : 223:9950/1003.5 - Trek-Net : 37:1/320.5 Ich versuche, auf alle mir zugeschickten Mails zu antworten, es kann allerdings auch mal passieren, da einfach jemanden bersehe oder irgendetwas in der Box schiefluft. Wenn ich nach 2 1/2 Wochen keine Antwort geschickt habe, einfach nochmal versuchen ;-) Wenn jemand diese Unit benutzt, bitte ich um eine Postkarte an mich. E-Mails sind zwar auch ganz schoen, aber auf Postkarten kann man mehr erkennen ;-) Fr kleine Anerkennungsbetrge bin ich immer offen ... Allerdings sei es jedem freigestellt, mir etwas zu schicken ... ͵ ber den Autor ͵[1.4] Ich bin jetzt 15 Jahre alt, komme aus Oldenburg, programmiere seit 6 Jahren (3 davon mit Pascal, der Rest mit Basic) und gehe auf das neue Gymnasium. Meine Hobby's sind auch schnell noch gesagt : Computer programmieren/spielen, schwimmen, Gitarre, ... Wem das zu schnell war, der kann mir ja 'ne Message im Fido-, Inter- oder sonsteinem -net hinterlassen ... ͵ Appell an alle User ͵[1.5] Wenn Fehler festgestellt werden, so bin ich sehr dankbar fr eine kleine Bugliste, am besten mit vollstndiger Rechnerkonfiguration. Ebenso wre es sehr ntzlich zu wissen, ob die Routinen korrekt laufen. Ich habe nicht alle Hardware der Welt, weshalb ich nicht alle Routinen testen kann. ͵ Was ist "Detecting Unit fr Pascal" ? ͵[1.6] Die Detecting Unit fr Pascal, die ich im weiteren Verlauf nur noch mit Unit umschreiben werde, ist eine Unit zum erkennen von einzelnen Computerkomponen- ten, kurz eine Unit zur 'Detection' (Englisch=Erkennung). Die Funktionen sind zu 75% Eigencode/25% vernderter Fremdcode. Die Unit ist schnell gewachsen und umfat mittlerweile ber 450 Routinen/29300 (!) Zeilen Source-Code und ca. 7500 Zeilen Anleitung ... Viele Funktionen muten ohne die dazu passende Hard-/Software geschrieben werden, weshalb ich mich auf die Referenzen verlassen mu. Auf den Testrechnern wurde (fast) alles richtig erkannt. Auf allen bisher getesteten Rechnern laufen die Routinen ... ͵ Geschichte der Unit ͵[1.7] Die Geschichte ist kurz erzhlt : Vor kurzer Zeit brauchte ich eine Routine, die mir den Grafikkartentyp angibt. Ich klemmte mich also hinter die ganzen TP-Bildschirme und einige Referenzen und kurze Zeit spter war eine Unit mit dem Namen Detect fertig. Sie konnte zwar nur zwischen VGA, EGA und CGA unterscheiden, aber immerhin. Ein wenig spter wollte ich dann auch die SVGA-Karten erkennen und habe mir einige Programme und Sourcen zu diesem Thema besorgt. Irgendwann brauchte ich einige Routinen, die die Anwesenheit von verschiedenen residenten Programmen im Speicher abfragen (DOS-Shell, WIN etc.), wonach ich dann in verschiedenen Referenzen auch noch andere Erkennungsmethoden fr's Testen der Residenz anderer Programme fand, welche ich dann spaeshalber mal implementiert habe. Nach und nach kamen immer mehr Routinen dazu, dann kam dann auch die Version 1.00 heraus. Sie wurde zwar nur unter einigen wenigen Freunden verteilt, und ohne Source-Code (der sah damals sehr viel schlimmer aus als heute ...), aber immerhin ein Anfang. Das war 5 / 1995 ... ͵ Aufbau der Anleitung und des Source Codes ͵[1.8] Das wichtigste zuerst : Diese Anleitung ist die vollstndige Referenz mit allen Befehlen und Feinheiten der Unit. Fr Kurzbeschreibungen sollte man in die Kommentare im Interface-Teil der Interfaceunit (DETECT.PAS) sehen. Die Referenz ist einheitlich aufgebaut. Fr jede Funktion gibt es einen eigenen Abschnitt, der wie folgt aussieht : ͵ Function [Text] ͵[Abschnittnummer] Funktionsname : [Text] Teil : Prozessor | Grafikkarte | ... Syntax : [Text] Zweck/Info's : [Text] Beispiel + : [Text] Bemerkung * : [Text] + = nur in moeglichen Faellen (d.h. keine Konstanten o.ae.) * = nur in relevanten Fllen Eigentlich ganz einfach. Wenn irgendwo ein ^ Zeichen auftaucht, bedeutet das entweder ein Tippfehler hat sich eingeschlichen (:-), es steht fr "oder hher" oder es markiert die in der vorhergehenden Zeile an gleicher Stelle stehenden Zeichen. Um zum Source-Code zu kommen : Ich wei, manchmal habe ich nicht ganz den Pascal-Standard benutzt, aber ich kann damit leben (In der Interface-Unit habe ich die ganzen bergangsroutinen in eine Zeile geschrieben, und es ist schon ein kleines Wunder, da das mal eben schnell zusammengestrickte Beispielprogramm berhaupt luft ...). Ich habe Englische Funktionsnamen benutzt, um die Funktionen leicht von Eigenen (dann in deutscher Sprache) unterschieden werden knnen. Wenn ich in einigen Fllen nicht ganz den Englischen Begriff fr etwas gefunden habe, und er unverstndlich ist ... einfach eine kleine Message in meine Stammbox (NGO), und schon ndere ich die Unit wieder ein bichen ab. Die Unit ist, genau wie das Beispiel in verschiedene Unterunits aufgeteilt, da sonst bald das Code-Segment berlaufen wrde (Ich glaube nicht, das der Compiler das so gern htte) ... Ansonsten mte er einfach zu verstehen sein, wenn es dann nicht gerade die erste Pascal-Unit ist, die man je gesehen hat :-) Um nicht mit anderen Variablen in Konflikt zu treten, steht vor jeder ffentlichen Variable der Unit ein d gefolgt von 2 Identifizier- ungszeichen (auer bei den IsInstalled Variablen, die wrden mir wahr- scheinlich zu lang), welche angeben, aus welchem Teil der Unit diese Variablen kommen. So steht z.B. dnd??? fr Koprozessoren oder dcp??? fr CPU-Typen. Ach ja, noch was wichtiges : >>>>>>>>>>>> Einige Routinen sind nicht gesichert, <<<<<<<<<<<<<<<<< >>>>>>>>>>>> d.h. wenn auf ein Teil getestet wird, das <<<<<<<<<<<<<<<<< >>>>>>>>>>>> nicht existieren kann (z.B. Weitek auf <<<<<<<<<<<<<<<<< >>>>>>>>>>>> 286), kann sich das System aufhngen. Hier <<<<<<<<<<<<<<<<< >>>>>>>>>>>> mu man vorher testen, ob die Funktion auf <<<<<<<<<<<<<<<<< >>>>>>>>>>>> dem jeweiligen Rechner verfgbar ist (In <<<<<<<<<<<<<<<<< >>>>>>>>>>>> diesem Fall z.B. mit der Erkennung der <<<<<<<<<<<<<<<<< >>>>>>>>>>>> Funktion WhatCPU). <<<<<<<<<<<<<<<<< Wenn man genau feststellen mchte, wie das eine oder andere programmiert wird, so sollte man einfach in den Source-Code sehen. Wenn die Anwendung der Routinen nicht ganz klar ist, so solle man einfach in das Beispiel- programm (EXAMPLE.PAS) einsehen, oder, in ganz schwierigen Fllen (?), eine Message an mich schreiben. In der Datei DETECT.INC kann man ber den Schalter NoHd die Zugriffszeiten- Messung und die Biosdatenauslesung (HD) am Anfang des Programms abschalten. (Diese MEssung ist noch nicht ganz ausgereift und ist daher etwas komisch anzuhren. Hat aber noch nichts kaputtgemacht :-). DETECT.INC wird nur in den Units DETECT.PAS und DETECTHD.PAS eingebunden. Dann will ich mal loslegen : ͵ Function WhatCPU ͵[2.1.1.1] Funktionsname : WhatCPU Unit : DetectSystem Teil : Prozessor Syntax : Function WhatCPU : Byte; ^^^^ kann einen Wert von den folgenden Variablen annehmen : dcpUnknown = Unbekannt dcpIn8088 = Intel 8088 dcpIn8086 = Intel 8086 dcpIn80C88 = Intel 80C88 (CMOS-Version) dcpIn80C86 = Intel 80C86 (CMOS-Version) dcpNECV20 = NEC V20 dcpNECV30 = NEC V30 dcpIn80188 = Intel 80188 (wenige Pc's) dcpIn80186 = Intel 80186 (wenige Pc's) dcpIn80286 = Intel 80286 dcpIn80386 = Intel 80386dx dcpIn80386SX = Intel 80386sx dcpC_T38600DX = Chips & Technologies 38600dx (pinout- kompatibel zu Intel 80386dx, mehr Performance) dcpC_T38600SX = Chips & Technologies 38600sx (pinout- kompatibel zu Intel 80386sx, mehr Performance) dcp486DLC = 486DLC dcp486SLC = 486DLC dcpInRapidCAD = Intel RapidCad (Ersatz fr 386/387 Kombination) dcpIn80486 = Intel 80486dx dcpIn80486SX = Intel 80486sx dcpInPentium = Intel Pentium dcpNexGen = Nexgen Chip (Nx586/...) dcpVarCyrix = Cyrix-Chip (siehe Bemerkung) Zweck : Ermittelt den Prozessortyp durch einige Assembler-Routinen. Kompatible Rechner (wie z.B. die von AMD) werden als Intel- Rechner erkannt. Bemerkung : Im Realmode kann mit den Funktionen CPUReset und CPUResetString meist eine genauere Beschreibung des Prozessors ermittelt werden. Die Funktion WhatCPU funktioniert zwar auch unter Systemen wie OS/2 oder WIN95, liefert dort aber nicht immer den richtigen Wert. So wird z.B. ein Pentium nur als 486'er erkannt ... Die Variable dcpVarCyrix gibt an, da ein Cyrix-Chip eingebaut ist. Mit der Funktion CyrixId kann man auch dessen Namen mit allen Einzelheiten (DX/DX2/DX4/SLC/DLC/DR/SR/SR2/ DR2/...) auslesen. Hiermit wird auch der M1SC (Cyrix 5x86) und M1 (Cyrix 6x86) erkannt. ͵ Function IsCPUId ͵[2.1.1.2] Funktionsname : IsCPUId Unit : DetectProcessors Teil : CPUID Befehl Syntax : Function IsCPUId : Boolean; Zweck : Ermittelt, ob der CPUID-Befehl ausfhrbar ist. Diese Funktion sollte man unbedingt vor TestCPUId (siehe weiter unten) aus- fhren, um sicher zu sein, da es keinen Absturz gibt. ͵ Function TestCPUId ͵[2.1.1.3] Funktionsname : TestCPUId Unit : DetectProcessors Teil : CPUID-Befehl Syntax : Function TestCPUId : pCPUId; ^^^^^^ Dieser Record ist in der Unit DetectGlobal definiert und sieht folgendermaen aus : pCPUId = ^tCPUId; tCPUId = Record Copyright : String[20]; VendorId : String[12]; Stepping : Byte; Family : Byte; Model : Byte; Typ : Byte; Features : LongInt; Cache1 : Byte4; Cache2 : Byte4; Cache3 : Byte4; Cache4 : Byte4; Ext8000_0000EAX : LongInt; Ext8000_0001EAX : LongInt; Ext8000_0001EDX : LongInt; AMDProcName1 : Chr4; AMDProcName2 : Chr4; AMDProcName3 : Chr4; AMDProcName4 : Chr4; AMDProcName5 : Chr4; AMDProcName6 : Chr4; AMDProcName7 : Chr4; AMDProcName8 : Chr4; AMDProcName9 : Chr4; AMDProcName10 : Chr4; AMDProcName11 : Chr4; AMDProcName12 : Chr4; Ext8000_0005EAX : LongInt; AMDCache1 : Byte4; AMDCache2 : Byte4; AMDCache3 : Byte4; End; Copyright gibt einen Firmennamen an, falls dieser aus der Vendor-Id ermittelt werden konnte. VendorId ist ein String, der direkt vom Prozessor zurck- gegeben wird. Mir sind bisher folgende bekannt : - 'UMC UMC UMC ' fr UMC - 'CyrixInstead' fr Cyrix - 'AuthenticAMD' fr AMD - 'GenuineIntel' fr Intel - 'NexGenDriven' fr NexGen Stepping ist die Nummer des Steppings/der Masken (1=A-Mask, 2=B-Mask,3=C-Mask, ...). Ab der D-Mask ist der FDIV-Fehler behoben. Family gibt die Prozessorgeneration an (4 = 486'er, 5 = Pentium und 6 = PentiumPro). Model gibt eine bestimmte Modellnummer zurck. Fr die 486'er sind das : - 0 = DX - 1 = DX50 - 2 = SX - 3 = DX2 - 4 = SL - 5 = SX2 - 7 = DX2WB - 8 = DX4 - 9 = DX4WB Fr die UMC 486'er ist das - 1 = U5D - 2 = U5S Fr die AMD 486'er ist das - 3 = DX2 - 7 = DX2WB - 8 = DX4 - 9 = DX4WB - E = 5x86 (WT) - F = 5x86 (WB) Fr die Cyrix Prozessoren ist das - 9 = Cx5x86 - 1F = Cx486DX4 - 2D = Cx5x86 - 81 = Texas Instruments TI486DX4 Fr den Pentium ist das - 0 = 60/66 Mhz Pentium, 5 Volt A-Step - 1 = 60/66 Mhz Pentium, 5 Volt Stepping - 3 = B1-Maske - 5 = C1-Maske - 7 = B1-Maske - 2 = 75-166 Mhz Pentium, 3.3 Volt Stepping 1 = 75-100 Mhz (B1-Maske) 2 = 75-100 Mhz (B3-Maske) 4 = 75-120 Mhz (B5-Maske) 5 = 75-133 Mhz (C2-Maske) 11 = 120-133 Mhz 12 = 150/166 Mhz (cC0-Maske) - 3 = P24T Stepping 1 = Overdrive P24T 63 2 = Overdrive P24T 83 - 4 = Overdrive fr Pentium 3.3V - 5 = Overdrive fr DX4 - 6 = Overdrive fr Pentium 5V Fr die AMD Class 5 Chips ist das - 0 = AMD 5k86 SSA/5 - 1 = AMD 5k86 - 6 = AMD 6k86 Fr die NexGen 5x86'er ist das - 0 = Stepping - 4 = Nx5x86 100 - 6 = Nx5x86 120 (E2/C0 Maske) Fr die Cyrix 6x86'er ist das - 2 = Cx6x86 - 3 = Cx6x86 Fr den PentiumPro ist das - 0 = PPro A-Step - 1 = Normaler PPro - 4 = P55CT iP54C Socket Overdrive - 6 = PPro 166-200 (sA0 Maske) - 7 = PPro 166-200 (sA1 Maske) Typ gibt beim Pentium 90/100 den Status in einem Mehr- prozessorrechner an. Das wren dann : - 1 = Original OEM Prozessor - 2 = Pentium Overdrive - 3 = 2. Pentium aus einem Dual Pentium System (90/100 Mhz) - 4 = Reserviert Die Features haben eigene Bits, die in DetectConstants definiert sind : - dcuIAMMXSupp = IA MMX Funktionen untersttzt - dcuCMOVcc = CMOVcc(/FCMOVcc/FCMOVI) vorhanden - dcuMashineCheck = Mashine Check untersttzt - dcuPageGlobalEn = Page Global Enable untersttzt - dcuMemTypeRangeReg = Memory Type Range Registers unterst. - dcuLocalAPIC = Lokaler APIC in der CPU (P5, 3.3V) - dcuCMPXCHG8B = CMPXCHG8B Befehl wird untersttzt - dcuMException = Mashine Exception untersttzt - dcuAddressingExt = Addressing-Extensions (2MB Pages, 36 Bit physikalische Adresse) - dcuPentiumMSR = Pentium (hnliche) MSR's untersttzt - dcuTSCSupp = Time Stamp Counter untersttzt - dcuPageExt = Page Extensions untersttzt - dcuIOBreaks = I/O Breakpoints werden untersttzt - dcuEnhV86Mode = Erweiterter V86 Modus wird unterst. - dcuFPU = Die FPU ist auf der CPU integriert Die 4 Variablen Cache1-4 enthalten Intel-spezifische Cache-Informationen fuer den PentiumPro (und hher). In jedem Byte der 32-Bit-Register befindet sich 1 Wert, der ein Merkmal des Caches beschreibt. Eine Ausnahme bildet das hintenstehende Byte von EAX (Cache1). Hier steht immer 1. Folgende Cache-Beschreibungen wurden bisher von Intel definiert : 00h = Null 01h = Instruction TLB, 4k Pages, 4fach assoziativ, 64 Eintrge 02h = Instruction TLB, 4m Pages, 4fach assoziativ, 4 Eintrge 03h = Data TLB, 4k Pages, 4fach assoziativ, 64 Eintrge 04h = Data TLB, 4m Pages, 4fach assoziativ, 8 Eintrge 06h = Instruction Cache, 8k, 44fach assoziativ, 32Byte Line Size 0Ah = Data Cache, 8k, 2fach assoziativ, 32Byte Line Size 41h = Unified Cache, 32 Byte Cache Line, 4fach assoziativ, 128k 42h = Unified Cache, 32 Byte Cache Line, 4fach assoziativ, 256k 43h = Unified Cache, 32 Byte Cache Line, 4fach assoziativ, 512k AMD-Prozessoren ab 5k86 haben spezielle erweiterte CPUID-Register. Diese Beginnen im Adressraum 80000000h und enden bei 8FFF7FFFh. 5 Dieser Register sind definiert : 8000 0000h : Wenn hier EAX > 0 zurckgegeben wird, werden die erweiterten Register untersttzt. 8000 0001h : EAX setzt sich aus Stepping-Id (Bits 3-0), Model (Bits 7-4) und Generation/Familie (Bits 11-8) zusammen. In EDX befindet sich das erweiterte Flag-Register. Die Flags sind in DetectConstants wie folgt definiert : - dcuAmIAMMXSupp = Multimedia Extensions - dcuAmFloatCondMove = Floating Point Conditional Move - dcuAmIntCondMove = Integer Conditional Move - dcuAmGlobalPagExt = Global Page Extensions - dcuAmSysCallSysRet = SysCall/SysRet Extensions - dcuAmCMPXCHG8B = CMPXCHG8B untersttzt - dcuAmMException = Machine Check Exception - dcuAmK86MSR = AMD K86-spezifische MSR's - dcuAmTSCSupp = Time Stamp Counter - dcuAmPageExt = Page Size Extensions - dcuAmDebExt = Debugging Extensions - dcuAmVModeExt = Virtual 86 Mode Extensions - dcuAmFPU = integrierte FPU 8000 0002h 8000 0003h 8000 0004h : Aus diesen 3 Registern kann der genaue (AMDProc- Prozessorname ausgelesen werden (also insgesamt Name 1-12) 48 Zeichen). Die Daten sind jeweils in den Registern EAX, EBX, ECX und EDX abgelegt. Sie muessen rckwrts ausgelesen werden (Little Endian Format) 8000 0005h : Cache Informationen des AMD-Chips. (AMDCache In EBX (AMDCache1) knnen TLB-Informationen 1-3) abgerufen werden (Bits 31-24 = Data TLB Assoziativitt, 23-16 = Data TLB Eintrge, 15-8 = Instruction TLB Assoziativitt, 7-0 = Instruction TLB Eintrge). In ECX (AMDCache2) befinden sich Info's ueber den Level 1 Data Cache (Bits 31-24 = Groesse in KB, Bits 23-16 = Assoziativitt, 15-8 = Lines per Tag und 7-0 = Line Size (Bytes)). Aus EDX kann man Daten ueber den L1 Instruction Cache abrufen (Bits 32-24 = Grsse in kb, Bits 23-16 = Assoziativitt, 15-8 = Lines per Tag une 7-0 = Line Size (Bytes)). Zweck : Ermittelt, was der CPUID-Befehl zurckgibt und bearbeitet das Ergebnis ein wenig. Bemerkung : Vor dieser Funktion unbedingt IsCPUId abtesten !!! ͵ Function CPUReset ͵[2.1.1.4.1] Funktionsname : CPUReset Unit : DetectProcessors Teil : CPU's ab 80386 Syntax : Function CPUReset : Word; Zweck : Ermittelt, welchen Wert der Prozesor nach einem Reset im Register DX zurckgibt. Dieser ist auch als Id-Word bekannt. Siehe auch CPUResetStr (weiter unten) Beispiel : 2308h Bemerkung : Diese Funktion darf auf gar keinen Fall im Protected Mode ausgefhrt werden. Man mu vorher mit der Funktion IsMSWProtMode abtesten, ob man sich im Protected Mode befindet, ansonsten strzt der Rechner mit Sicherheit ab. ͵ Function CPUResetStr ͵[2.1.1.4.2] Funktionsname : CPUResetStr Unit : DetectProcessors Teil : CPU's ab 80386 Syntax : Function CPUResetStr : String; Zweck : Das von der Funktion CPUReset (^) zurckgegebene Word wird hier ausgewertet. Wenn der Wert bekannt ist, wird eine Prozessorbezeichnung zurckgegeben, wenn nicht, versucht die Funktion wenigstens die Prozessorfamilie zu erkennen. Wenn beides keinen Ankalng findet, wird die Zahl nochmal als Hexcode zurckgegeben. Diese Funktion ist besonders fr ltere CPU's interessant, da auf den neueren (486/Pentium) ja schon der CPUID- Befehl (^) implementiert ist, der mehr Auskunft ber den Prozessor geben kann. Diese Funktion erkennt breits folgende Prozessoren : - AMD 80486DX-40 - AMD 486DX4WT - AMD 486DX4WB - AMD Am5x86WT - AMD Am5x86WB - Cyrix M5 (Cx486S/D) - Cyrix M6 (Cx486DX) - Cyrix M7 (Cx486DX2) - Cyrix M9 (Cx486DX4) - Cyrix 5x86/Intel 80486DX4WB - Cyrix Cx5x86 - Chips & Technologies 38600/5 S/DX - IBM 386SLC - IBM 486SLC - IBM 486SLC2 A? - IBM 486SLC2 B? - Intel 80386SX A0 - Intel 80386SX D0/AMD 386SX (L) A1 - Intel 80386SX D1 - Intel 80386CXSA/CXSB/EX/SXSA - Intel 80386SL A0-A1 - Intel 80386SL A2 - Intel 80386SL A3 - Intel 80386SL B0-B1 - Intel 80386DX B1 - Intel 80386DX D0/AMD 386DX A - Intel/AMD 80386DX D1/E0/F0 - Intel 376 A0 - Intel 376 B - Intel RapidCad A - Intel RapidCad B - Intel 80486SX A0/Cyrix 486DLC - Intel 80486SX B0 - Intel 80486SX/UMC U5S(D) - Intel 80486SX gAX - Intel 80486SX cA0 - Intel 80486SX cB0 - Intel 80486SX aA0/aA1 - Intel 80486SX aB0/aC0 - Intel 80486SX-Familie - Intel 80487SX - Intel 80486SX2 aC0 - Intel 80486SL A - Intel 80486DX A1 - Intel 80486DX Bx - Intel 80486DX C0 - Intel 80486DX - Intel 80486DX D0 - Intel 80486DX cAX/Cyrix 486SLC/TI486DLC A - Intel 80486DX cBX/TI486DLC B - Intel 80486DX - Intel/AMD 80486DX2/Overdrive A0-A2 - Intel 80486DX2 B1 - Intel 80486DX2 aA0/aA1 - Intel 80486DX2 aB0/aC0 - Intel 80486DX2WB A - Intel 80486DX2WT A - Intel 80486DX4WT - Intel 80486DX4ODPR - Intel Pentium P5 A? - Intel Pentium (P5) B1 - Intel Pentium (P5) C1 - Intel Pentium (P5) D1 - Intel Pentium P54C B1 - Intel Pentium P54C B3 - Intel Pentium P54C B5 - Intel Pentium P54C C1/C2/mA1/P54CQS/P54LM - Intel Pentium P54C cB1/mcB1 - Intel Pentium Overdrive P24T B1/B2 - Intel Pentium Overdrive P24T C0 - Intel Pentium Overdrive P24CT - Intel Pentium Overdrive P54T - Intel Pentium Overdrive P54M - PentiumPro Overdrive fuer Socket 8 (P6T) - NexGen Nx585-100 - NexGen Nx585-120 E2/C0 - NexGen Nx585-100 D1/B0 Es werden folgende Prozessorfamilien erkannt : - Intel 80386SX Step A - 386SX - 386SL - 386SLC (IBM) - 386DX - 80486'er Familien - 80486SX2 - 80486SL - 80486DX50 - 80486DX2 - 80486DX2WB - 80486DX4 - 80486DX4WB - Alle anderen 80486'er - Pentium - NexGen Beispiel : 'Intel 80486SX aB0/aC0' ͵ Function GetCyrixReg ͵[2.1.1.5.1] Funktionsname : GetCyrixReg Unit : DetectProcessors Teil : 386'er Syntax : Function GetCyrixReg (Register : Byte) : Byte; Zweck : Mit dieser Funktion kann das Registerpaar 22h/23h ausgelesen werden, welches Cyrix fr einige CPU-Daten verwendet. Einige Register sind schon als Variablen vor- gegeben (definiert in DetectConstants) : dreCCR0 = $C0 = Register CCR0 (Configuration Register 0) dreCCR1 = $C1 = Register CCR1 (Configuration Register 1) dreCCR2 = $C2 = Register CCR2 (Configuration Register 2) dreCCR3 = $C3 = Register CCR3 (Configuration Register 3) dreCCR4 = $E8 = Register CCR3 (Configuration Register 4) dreCCR5 = $E9 = Register CCR3 (Configuration Register 5) dreCR = $F0 = Register CR (Configuration Register) dreCDR = $20 = Register CDR (Chip Debugging) dreDIR0 = $FE = Register DIR0 (Device Identification Reg 0) dreDIR1 = $FF = Register DIR1 (Device Identification Reg 1) Fr eine genaue Bedeutung aller Bit's in diesen Registern wird auf die Opcode-List aus der Interrupt Liste 49 von der Potemkin's Hackers Group im Anhang A? verwiesen. Nur fr DIR0 und DIR1 hier eine Beschreibung : In DIR0 wird eine Identifikationsnummer des Prozessor's gespeichert. Dessen Werte kann man im Source der Funktion CyrixId nachlesen. In DIR1 sind Informationen ber den Hersteller und die Produktrevision abgescpeichert. Auf den Cyrix-Rechnern sieht das Byte dann so aus : Bit Name Beschreibung 7 MID Hersteller-Id 0 = Cyrix 1 = Texas Instruments 6..4 SID Stepping 3..0 RID Revisions Beim Texas Instruments TI486DX2 und TI486DX4 baut sich das Byte geringfgig anders auf : Bit Name Beschreibung 7..4 SID Stepping 3..0 RID Revision ͵ Function CyrixId ͵[2.1.1.5.1] Funktionsname : CyrixId Unit : DetectProcessors Teil : 386'er Syntax : Function CyrixId : String; Zweck : Wenn eine Cyrix-CPU erkannt wurde (WhatCPU = dcpVarCyrix), kann man ber diese Variable den genauen Typ dieser CPU ermitteln. Es werden folgende Modelle erkannt : Cx486SLC/e, Cx486DLC, Cx486SLC2, Cx486DLC2, Cx486SRx, Cx486DRx, Cx486SRx2, Cx486DRx2, Cx486SRu, Cx486DRu, Cx486SRu2, Cx486DRu2, Cx486S (B Step), Cx486S2, Cx486S/e, Cx486S2/e, Cx486DX/BL486DX, Cx486DX2/BL486DX2/ST486DX2/TI486DX2, Cx486DX4, TI486DX4, Cyrix Overdrive, TI Potomac's. ͵ Function Is386PopAdBug ͵[2.1.2] Funktionsname : Is386PopAdBug Unit : DetectSystem Teil : 386'er Syntax : Function Is386PopAdBug : Boolean; Zweck : Ermittelt, ob der 386-POPAD-Bug vorhanden ist. Dieser Bug ist noch in vielen lteren Rechnern zu finden. Er wirkt sich jedoch nur wenig auf die Programme aus, da der POPAD-Befehl in fast keinem Porgramm mehr genutzt wird. ͵ Function Is386MulBug ͵[2.1.3] Funktionsname : Is386MulBug Unit : DetectSystem Teil : 386'er Syntax : Function Is386MulBug : Boolean; Zweck : Ermittelt, ob der 386-MUL-Bug vorhanden ist. Dieser Bug tritt nur in sehr frhen Versionen des 80386-Prozessors auf. ͵ Function IsP5FDivBug ͵[2.1.4] Funktionsname : IsP5FDivBug Unit : DetectSystem Teil : Pentium FPU Syntax : Function IsP5FDivBug : Boolean; Zweck : Ermittelt, ob der Pentium FDIV-Bug vorhanden ist. Ab Step 5 (bei P75-133) bzw. Step 7 (P60/66) (CPUID) ist dieser Bug offiziell behoben. ͵ Function CPUFreq ͵[2.1.5] Funktionsname : CPUFreq Unit : DetectSystem Teil : CPU/Frequenz Syntax : Function CPUFreq : Word; Zweck : Ermittelt die Mhz-Frequenz des Rechners. Wenn die Funktion den Wert 6666 zurckgibt meint sie damit 66.66 Mhz. Im Real- Mode funktioniert diese Funktion am genauesten, unter Speicher-Managern gibt es kleine Abweichungen und unter Windows(95) ist sie nutzlos. Beispiel : 9000h fuer 90 MHz ͵ Function WaitStates ͵[2.1.6] Funktionsname : WaitStates Unit : DetectSystem Teil : RAM/CPU/WaitStates Syntax : Function WaitStates : Real; Zweck : Ermittelt die effektiven WaitStates beim RAM-Zugriff. Hierbei sollte man ab einschlielich der 2. Nachkommastelle Runden, es kann z.T. Schwankungen von +/- 5% geben. ͵ Function BusWidth ͵[2.1.7] Funktionsname : BusWidth Unit : DetectSystem Teil : BUS-System Syntax : Function BusWidth : Byte; Zweck : Ermittelt die Bus-Breite des Prozessors in Bit. Hierbei wird nur eine Tabelle ausgelesen, so da diese Angaben nicht stimmen, wenn der Prozessor falsch erkannt wurde. Beispiel : 32 fuer 32 Bit ͵ Function IsCPUCache ͵[2.1.8.1] Funktionsname : IsCPUCache Unit : DetectSystem Teil : CPU-Cache Syntax : Function IsCPUCache : Boolean; Zweck : Ermittelt, ob ein CPU-Cache implementiert ist. ͵ Function CPUCacheLevel ͵[2.1.8.2] Funktionsname : CPUCacheLevel Unit : DetectSystem Teil : CPU-Cache Syntax : Function CPUCacheLevel : Byte; Zweck : Ermittelt, was fr ein Cache-Typ implementiert ist. Dabei wird 1 fr Firs Level und 2 fr Second Level Cache zurck- gegeben. ͵ Function CPUCacheKBFirst ͵[2.1.8.3] Funktionsname : CPUCacheKBFirst Unit : DetectSystem Teil : CPU-Cache Syntax : Function CPUCacheKBFirst : Word; Zweck : Ermittelt, wieviele KB First-Level-Cache eingebaut sind. Beispiel : 16 fr 16kb First-Level Cache ͵ Function CPUCacheKBSecond ͵[2.1.8.4] Funktionsname : CPUCacheKBSecond Unit : DetectSystem Teil : CPU-Cache Syntax : Function CPUCacheKBSecond : Word; Zweck : Ermittelt, wieviele KB Second-Level-Cache eingebaut sind. Beispiel : 256 fr 256kb Second-Level Cache ͵ Function CPUCacheThruFirst ͵[2.1.8.5] Funktionsname : CPUCacheThruFirst Unit : DetectSystem Teil : CPU-Cache Syntax : Function CPUCacheThruFirst : Real; Zweck : Ermittelt den Datendurchsatz des First-Level Caches in KB/s. Die schwanken um +/- 5%, weshalb man den Vorkommawert einfach aufrunden sollte. Beispiel : 320134.56 fr ca. 320 MB pro Sekunde ͵ Function CPUCacheThruSecond ͵[2.1.8.6] Funktionsname : CPUCacheThruSecond Unit : DetectSystem Teil : CPU-Cache Syntax : Function CPUCacheThruSecond : Real; Zweck : Ermittelt den Datendurchsatz des Second-Level Caches in KB/s. Die schwanken um +/- 5%, weshalb man den Vorkommawert einfach aufrunden sollte. Beispiel : 220034.34 fr ca. 220 MB pro Sekunde ͵ Function BusType ͵[2.1.9.1.1] Funktionsname : BusType Unit : DetectBus Teil : BUS Syntax : Function BusType : Byte; ^^^^ nimmt einen der folgenden Werte an : dbuISA = Standard ISA Bus dbuEISA = Extended ISA Bus dbuMCA = MicroChannel Bus dbuVL = Vesa Local Bus dbuPCI = PCI Bus dbuUnknown = Unbekannter BUS-Typ Zweck : Ermittelt den Bus Typ. Z.Zt. werden leider nur ISA, EISA, MCA und PCI untersttzt, VLB fehlt noch. ͵ Function EISAIsID ͵[2.1.9.2.1] Funktionsname : EISAIsID Unit : DetectBus Teil : Extended ISA-BUS Syntax : Function EISAIsID (SlotNumber : Byte) : Byte; ^^^^ nimmt einen der folgenden Werte an : deiYes = Ja, eine ID ist vorhanden deiNo = Nein, es ist keine ID vorhanden deiErrInvalidSlot = Ungltige Slot-Nummer deiErrEISACMOSCorrupt = EISA CMOS ist unbrauchbar deiErrEmptySlot = leerer Slot deiErrInvalidSysConfig = Ungltige Systemkonfiguration Zweck : Ermittelt, ob fr den Angegebenen Slot eine ID verfgbar ist. Wenn ja, kann diese mit EISAId abgerufen werden (siehe unten) ͵ Function EISASlotType ͵[2.1.9.2.2] Funktionsname : EISASlotType Unit : DetectBus Teil : Extended ISA-BUS Syntax : Function EISASlotType (SlotNumber : Byte) : String; Zweck : Ermittelt den Typ des angegebenen Slot's. Beispiel : 'Expansion Slot'/'Embedded Slot'/'Virtual Device' ͵ Function EISAConfigVersion ͵[2.1.9.2.3] Funktionsname : EISAConfigVersion Unit : DetectBus Teil : Extended ISA-BUS Syntax : Function EISAConfigVersion (SlotNumber : Byte) : String; Zweck : Ermittelt die Version der Konfiguration des EISA-Bus. Beispiel : '1.0' ͵ Function EISAConfigCheckSum ͵[2.1.9.2.4] Funktionsname : EISAConfigCheckSum Unit : DetectBus Teil : Extended ISA-BUS Syntax : Function EISAConfigCheckSum (SlotNumber : Byte) : Word; Zweck : Ermittelt die Checksumme des Konfigurationsfiles. Beispiel : 14DFh ͵ Function EISANumDevFunc ͵[2.1.9.2.5] Funktionsname : EISANumDevFunc Unit : DetectBus Teil : Extended ISA-BUS Syntax : Function EISANumDevFunc (SlotNumber : Byte) : Byte; Zweck : Ermittelt die Anzahl der untersttzten Device-Funktionen. ͵ Function EISAId ͵[2.1.9.2.6] Funktionsname : EISAId Unit : DetectBus Teil : Extended ISA-BUS Syntax : Function EISAId (SlotNumber : Byte) : String; Zweck : Ermittelt die ID des Slots bzw. der Karte. Der String wird hexadezimal zurckgegeben und umfat 9 Bytes (8 Bytes = Id, 1 Byte = 'h'). Beispiel : 90221136h ͵ Function IsPCIDevice ͵[2.1.9.3.1] Funktionsname : IsPCIDevice Unit : DetectBus Teil : PCI-Bus Syntax : Function IsPCIDevice (Device, Bus : Byte) : Boolean; Zweck : Ermittelt, ob das angegebene Device vorhanden ist. Hierbei darf Device/Bus nicht 0Fh bersteigen. Diese Funktion funktioniert nur, wenn mit BusType das PCI-Bussystem erkannt wurde. ͵ Procedure GetPCIConfig ͵[2.1.9.3.2] Funktionsname : GetPCIConfig Unit : DetectBus Teil : PCI-Bus Syntax : Procedure GetPCIConfig (Device, Bus : Byte; Var Data : PCIHeader); Zweck : Diese Funktion gibt die vollstndige Konfiguration eines bestimmten PCI-Devices zurck. Device und Bus drfen nicht grer als 0Fh sein. Data mu der in DetectBus definierte Header sein. Hierhin werden dann die gesamten Daten ge- schrieben. Die letzte Variable (HeaderSpec) kann man ber einen Pointer an Header0 oder Header1 weiterleiten, wenn bentigt. ͵ Function GetPCIVendor ͵[2.1.9.3.3] Funktionsname : GetPCIVendor Unit : DetectBus Teil : PCI-Bus Syntax : Function GetPCIVendor (VendorId : Word) : String; Zweck : ber diese Funktion knnen die Variable VendorId aus dem Record PCIHeader aufgeschlsselt werden. Z.Zt sind etwa 450 Herstellernamen eingetragen. Beispiel : 'Avance Logics Inc.' ͵ Function IdentifyPCIDevice ͵[2.1.9.3.4] Funktionsname : IdentifyPCIDevice Unit : DetectBus Teil : PCI-Bus Syntax : Function IdentifyPCIDevice (VendorId, DeviceId : Word; Revision : Byte) : String; Zweck : Diese Funktion versucht, aus VendorId, DeviceId und Revision die Bezeichnung der Karte zurckzugeben. Bisher sind ca. 450 verschiedene Karten eingetragen. Beispiel : 'ET4000W32P 32-Bit GUI Accelerator Rev D' ͵ Function IdentifyPCIClass ͵[2.1.9.3.5] Funktionsname : IdentifyPCIClass Unit : DetectBus Teil : PCI-Bus Syntax : Function IdentifyPCIClass (ClassId : Byte) : String; Zweck : Diese Funktion wandelt jede bisher definierte Klassennummer ($00-$0C) in einen String um. ClassId entspricht Class1 des PCI-Records. Beispiel : 'Communication' ͵ Function IdentifyPCIClass ͵[2.1.9.3.6] Funktionsname : IdentifyPCISubClass Unit : DetectBus Teil : PCI-Bus Syntax : Function IdentifyPCISubClass (ClassId, SubClassId : Byte) : String; Zweck : Diese Funktion wandelt jede bisher definierte SubKlassen- nummer in einen String um. ClassId entspricht Class1, SubClassId entspricht Class2 des PCI-Records. Beispiel : 'SCSI-Bus Controller' ͵ Function WhatCoPro ͵[2.2.1] Funktionsname : WhatCoPro Unit : DetectSystem Teil : Koprozessor/eingebaut Syntax : Function WhatCoPro : Byte; ^^^^ kann einen der folgenden Werte annehmen : dndNone = Kein Koprozessor dndEmulViaInt7 = Emuliert via Interrupt 7 dndIn8087 = Intel 8087 dndIn80C187 = Intel 80C187 dndIn80287 = Intel 80287 dndIn80287XL = Intel 80287XL dndIn80387 = Intel 80387dx dndIn80387sx = Intel 80387sx dndIIT2C87 = IIT 2C87 dndIIT3C87 = IIT 3C87 dndIIT3C87sx = IIT 3C87sx dndCyr82S87Old = Cyrix 82S87 (alte Version) dndCyr34D87 = Cyrix 34D87 dndCyr83S87Old = Cyrix 83S87 (alte Version) dndULSI83C87 = ULSI 83C87 dndULSI83S87 = ULSI 83S87 dndC_T38700DX = C&T 38700dx dndC_T38700SX = C&T 38700sx dndIn80387dx = Intel 80386dx dndInRapidCAD = Intel RapidCad dndIn486 = Intel 80486 FPU dndCyr82S87new = Cyrix 82S87 (neue Version) dndCyr387pl = Cyrix 387+ dndCyr83S87new = Cyrix 83S87 (neue Version) dndCyrEMC87 = Cyrix EMC87 dndInPentium = Intel Pentium FPU dndUnknown = Unbekannter Koprozessor Zweck : Ermittelt ber die Hardware, ob, und wenn welcher, Koprozessor intalliert ist. ͵ Function CoProRounding ͵[2.2.2] Funktionsname : CoProRounding Unit : DetectSystem Teil : Koprozessor/Rundung Syntax : Function CoProRounding : String; Zweck : Ermittelt, welches Rundungsverfahren der Koprozessor anwendet. Beispiel : 'Nchster oder Gleicher Wert' ͵ Function CoProPrecision ͵[2.2.3] Funktionsname : CoProPrecision Unit : DetectSystem Teil : Koprozessor/Przision Syntax : Function CoProPrecision : Byte; Zweck : Ermittelt die Anzahl der Bits, mit der der Koprozessor augen- blicklich arbeitet und gibt diese als Byte zurck. Eine 0 als Ergebnis bedeutet, da der Wert nicht festgestellt werden kann. Beispiel : 80 fr 80 Bits ͵ Function CoProFreq ͵[2.2.4] Funktionsname : CoProFreq Unit : DetectSystem Teil : Koprozessor/Przision Syntax : Function CoProFreq : Real; Zweck : Ermittelt die Frequenz des Koprozessors in Mhz. Hierbei sind Schwankungen von +/- 2% mglich, weshalb einfach die Vorkommazahl auf- bzw. abgerundet werden sollte. Beispiel : 49.67 fr ~ 50MHz ͵ Function WhatWeitek ͵[2.3.1] Funktionsname : WhatWeitek Unit : DetectSystem Teil : Koprozessor/Weitek Syntax : Function WhatWeitek : Byte; ^^^^ kann einen der folgenden Werte annhmen : dwtnoWeitek = Kein Weitek vorhanden dwtWeitek = Weitek-Koprozessor vorhanden dwtWeitek_real = Weitek-Real-Koprozessor vorhanden Zweck : Ermittelt, ob und wenn welcher Weitek-Koprozessor vorhanden ist. Dies ist nur auf Prozessoren ^386 mglich, auf nied- rigeren Prozessoren hngt sich der Rechner auf. ͵ Function WhatMSW ͵[2.4.1] Funktionsname : WhatMSW Unit : DetectSystem Teil : CPU/MSW Syntax : Function WhatMSW : Word; Zweck : Ermittelt das Mashine Status Word. Erst ab 286 mglich. Beispiel : 0011h ͵ Function IsMSWProtMode ͵[2.4.2] Funktionsname : IsMSWProtMode Unit : DetectSystem Teil : CPU/MSW Syntax : Function IsMSWProtMode : Boolean; Zweck : Ermittelt, Ob das Mashine Status Word Bit fr Protectet Mode vorhanden ist. Dies ist im Bit 0 des MSW verzeichnet. ͵ Function IsMSWMonCoPro ͵[2.4.3] Funktionsname : IsMSWMonCoPro Unit : DetectSystem Teil : CPU/MSW Syntax : Function IsMSWMonCoPro : Boolean; Zweck : Ermittelt, Ob das Mashine Status Word Bit fr den Monitor- Koprozessor vorhanden ist. Dies ist im Bit 1 des MSW verzeichnet. ͵ Function IsMSWEmuCoPro ͵[2.4.4] Funktionsname : IsMSWEmuCopro Unit : DetectSystem Teil : CPU/MSW Syntax : Function IsMSWEmuCopro : Boolean; Zweck : Ermittelt, Ob das Mashine Status Word Bit fr die Koprozes- soremulation vorhanden ist. Dies ist in Bit 2 des MSW ver- zeichnet. ͵ Function WhatGDT ͵[2.5.1] Funktionsname : WhatGDT Unit : DetectSystem Teil : CPU/Protectet Mode Syntax : Function WhatGDT : Real; Zweck : Ermittelt die Global Descriptor Table. Der Wert wird im REAL- format zurckgegeben, da es genau wie die GDT 6 Byte umfat. Die einzelnen Bytes knnen via Type-Casting ausgelesen werden (Array [1..6] Of Byte). Beispiel : ('77', '01' '80', '93', '14', '00') ͵ Function WhatIDT ͵[2.5.2] Funktionsname : WhatIDT Unit : DetectSystem Teil : CPU Syntax : Function WhatIDT : Real; Zweck : Ermittelt die Interrupt Descriptor Table.Der Wert wird im REAL-format zurckgegeben, da es genau wie die IDT 6 Byte umfat. Die einzelnen Bytes knnen via Type-Casting ausgelesen werden (Array [1..6] Of Byte). Beispiel : ('77', '01' '80', '93', '14', '00') ͵ Function MashineType ͵[2.6.1] Funktionsname : MashineType Unit : DetectSystem Teil : Computer-Typ Syntax : Function MashineType : String; Zweck : Ermittelt den im BIOS abgespeicherten Computertyp. Dabei werden ca. 195 verschiedene Rechner erkannt. Die Informationen werden durch BIOS-Typ, BIOS-Revision und BIOS- Datum zusammengestellt, und dann ausgewertet. Beispiel : 'PS/2 Modell 95 XP' ͵ Function IsDMAChannel3 ͵[2.7.1] Funktionsname : IsDMAChannel3 Unit : DetectSystem Teil : CPU/DMA Syntax : Function IsDMAChannel3 : Boolean; Zweck : Ermittelt, ob der Direct Memory Access Kanal 3 benutzt wird. ͵ Function IsSlave8259 ͵[2.7.2] Funktionsname : IsSlave8259 Unit : DetectSystem Teil : CPU/Slave Syntax : Function IsSlave8259 : Boolean; Zweck : Ermittelt, ob 8259A installiert ist. ͵ Function IsRealClock ͵[2.8.1] Funktionsname : IsRealClock Unit : DetectSystem Teil : CMOS Syntax : Function IsRealClock : Boolean; Zweck : Ermittelt, ob eine Echtzeituhr (CMOS) installiert ist. ͵ Function IsWaitExtEvent ͵[2.8.2] Funktionsname : IsWaitExtEvent Unit : DetectSystem Teil : CPU Syntax : Function IsWaitExtEvent : Boolean; Zweck : Ermittelt, ob der Rechner auf externe Ereignisse wartet. ͵ Function BiosDate ͵[2.9.1] Funktionsname : BiosDate Unit : DetectSystem Teil : BIOS Syntax : Function BiosDate : String; Zweck : Ermittelt das Bios-Datum, wobei der String genau dem entspricht, was im Speicher steht. Der String steht ab Adresse FFFFh:0005h - FFFFh:000Ch, und ist je nach BIOS im europischen oder amerikanischem Format abgespeichert, belegt aber immer gleichbleibend 8 Bytes. Diese Speicheradresse ist leider nicht auf allen Clones richtig gesetzt, aber immerhin auf den meisten (ca. 99 %). Beispiel : 08/16/95 ͵ Function BiosRevision ͵[2.9.2] Funktionsname : BiosRevision Unit : DetectSystem Teil : BIOS Syntax : Function BiosRevision : Byte; Zweck : Ermittelt, welche Revision des aktuellen BIOS verwendet wird. ͵ Function BiosSource ͵[2.9.3] Funktionsname : BiosSource Unit : DetectSystem Teil : BIOS Syntax : Function BiosSource : String; Zweck : Ermittelt das Copyright und den Hersteller des BIOS. Der Speicher ab F000h wird nach Copyright Messages ((C), COPR., COPYRIGHT) durchsucht. Wenn etwas gefunden wird, wird der gefundene String als Ergebnis ausgegeben. Hierbei knnen leider manchmal auch falsche Strings ausfgegeben werden. VORSICHT : Der String wird meistens mehrere Zeilen lang ! Beispiel : 'Copyright (C) 1995, Award Software, Inc.' ͵ Function BiosShort ͵[2.9.4] Funktionsname : BiosShort Unit : DetectSystem Teil : BIOS Syntax : Function BiosShort : String; Zweck : Ermittelt den BIOS-Hersteller, indem es die von BiosSource zurckgegebenen Datan auf die Herstellernamen AMI, Phoenix, Award, IBM, Commodore und Toshiba durchsucht. Beim AMI-Bios wird zusaetzlic auf Hiflex- oder Flash-Bios getestet. Andere Hersteller werden leider noch nicht erkannt. Beispiel : 'Award' ͵ Function BiosVersion ͵[2.9.5] Funktionsname : BiosVersion Unit : DetectSystem Teil : BIOS Syntax : Function BiosVersion : String; Zweck : Ermittelt die aktuelle Version des BIOS, wenn vorhanden. Beispiel : '4.50' ͵ Function IsExtBiosSeg ͵[2.9.6] Funktionsname : IsExtBiosSeg Unit : DetectSystem Teil : BIOS Syntax : Function IsExtBiosSeg : Word; Zweck : Ermittelt, ob es ein erweitertes BIOS-Daten-Segment gibt. Wenn 0 zurckgegeben wird, ist keins vorhanden. ͵ Procedure BiosExtensions ͵[2.9.7] Funktionsname : BiosExtensions Unit : DetectSystem Teil : BIOS Syntax : Procedure BiosExtensions (var p : pBiosCopyright); Zweck : Ermittelt, ob und welche Bios Erweiterungen vorhanden sind. Hierbei wird der Typ pBiosCopyright zurckgegeben, der folgendermaen in DetectGlobal definiert ist : pBiosCopyright = ^tBiosCopyright; tBiosCopyright = Record BiosInfo : Array [0..94] Of tBiosInfo; End; tBiosInfo = Record IsThere : Boolean; Segment : Word; Size : Word; Copyright : String[100]; End; In tBiosInfo wird angegeben, ob diese Erweiterung vorhanden ist (IsThere), in welchem Segment sie sich befindet und wie gro sie in KB ist. Im String Copyright wird angegeben, woher die Erweiterung kommt. Man mu alle 94 Records durchtesten, um sich die Daten zu holen. ͵ Function GetBiosRecord ͵[2.9.8] Funktionsname : GetBiosRecord Unit : DetectBios Teil : Bios Datensegment Syntax : Function GetBiosRecord : pBiosRecord; Zweck : Bei dieser Funktion wird der Pointer 0040h:0000h zurck- gegeben. pBiosRec ist ein Pointer auf einen in der Unit DetectBios definierten Record, in dem das Bios-Datensegment beschrieben wird. Wie der Record aussieht, und was die einzelnen Felder zu bedeuten haben ist in der Unit kommentiert. Beispiel : Ptr ($0040:$0000) (immer gueltig) ͵ Function HasCMOSPower ͵[2.9.9] Funktionsname : HasCMOSPower Unit : DetectSystem Teil : CMOS Syntax : Function HasCMOSPower : Boolean; Zweck : Ermittelt, ob der CMOS-RAM noch genug Batterieenergie hat, um eventuelle Wartezeiten zwischen Computerstarts zu berbrcken. ͵ Function IsAPM ͵[2.9.10.1] Funktionsname : IsAPM Unit : DetectSystem Teil : Advanced Power Management Spezifikation Syntax : Function IsAPM : Boolean; Zweck : Ermittelt, ob die Advanced Power Management Spezifikation untersttzt wird. ͵ Function APMVersion ͵[2.9.10.2] Funktionsname : APMVersion Unit : DetectSystem Teil : Advanced Power Management Spezifikation Syntax : Function APMVersion : String; Zweck : Ermittelt die Version der APM Spezifikation. Beispiel : '1.1' ͵ Function APMIs16Prot ͵[2.9.10.3] Funktionsname : APMIs16Prot Unit : DetectSystem Teil : Advanced Power Management Spezifikation Syntax : Function APMIs16Prot : Boolean; Zweck : Ermittelt, ob das 16-Bit Protected Mode Interface der APM Spezifikation untersttzt wird. ͵ Function APMIs32Prot ͵[2.9.10.4] Funktionsname : APMIs32Prot Unit : DetectSystem Teil : Advanced Power Management Spezifikation Syntax : Function APMIs32Prot : Boolean; Zweck : Ermittelt, ob das 32-Bit Protected Mode Interface der APM Spezifikation untersttzt wird. ͵ Function APMIsBIOSPowMngmnt ͵[2.9.10.5] Funktionsname : APMIsBIOSPowMngmnt Unit : DetectSystem Teil : Advanced Power Management Spezifikation Syntax : Function APMIsBIOSPowMngmnt : Boolean; Zweck : Ermittelt, ob das BIOS Power Management des Bios aktiv ist. ͵ Function APMACLineStatus ͵[2.9.10.6] Funktionsname : APMACLineStatus Unit : DetectSystem Teil : Advanced Power Management Spezifikation Syntax : Function APMACLineStatus : String; Zweck : Ermittelt den Status der AC-Line im APM. Beispiel : 'Off-Line' ͵ Function APMBatteryStatus ͵[2.9.10.7] Funktionsname : APMBatteryStatus Unit : DetectSystem Teil : Advanced Power Management Spezifikation Syntax : Function APMBatteryStatus : String; Zweck : Ermittelt den Status der Batterie im Laptop. Beispiel : 'Aufgeladen' ͵ Function APMBatteryLife ͵[2.9.10.8] Funktionsname : APMBatteryLife Unit : DetectSystem Teil : Advanced Power Management Spezifikation Syntax : Function APMBatteryLife : Byte; Zweck : Ermittelt die vorraussichtliche noch verbleibende Lebensdauer der Batterie in Prozent. Beispiel : '70%' ͵ Function SerialCount ͵[2.10.1] Funktionsname : SerialCount Unit : DetectSystem Teil : serielle Schnittstellen Syntax : Function SerialCount : Byte; Zweck : Ermittelt, wieviele serielle Schnittstellen im System vor- handen sind. ͵ Function ParrallelCount ͵[2.10.2] Funktionsname : ParrallelCount Unit : DetectSystem Teil : parrallele Schnittstellen Syntax : Function ParrallelCount : Byte; Zweck : Ermittelt, wieviele parrallele Schnittstellen im System vor- handen sind. ͵ Function IsJetStream ͵[2.10.3] Funktionsname : IsJetStream Unit : DetectSystem Teil : JetStream-Drucker-Interface Syntax : Function IsJetStream (PortNumber : Word) : Boolean; Zweck : Ermittelt, ob eine JetStream-Druckerinterface-Karte eingebaut ist. Die Northnet Jetstream ist eine High- Performance DMA-gesteuerte Parrallel-Port Karte, die es erlaubt, Drucker mit bis zu 80000 Zeichen pro Sekunde zu versorgen. ͵ Function ExtKeyboardSupp ͵[2.11.1] Funktionsname : ExtKeyboardSupp Unit : DetectSystem Teil : Tastatur Syntax : Function ExtKeyboardSupp : Boolean; Zweck : Ermittelt, ob Support fr eine erweiterte Tastatur besteht. Wnn ja, kann man mit KeyboardType ermitteln, ob eine solche Tastatur angeschlossen ist. ͵ Function Keyboardtype ͵[2.11.2] Funktionsname : KeyboardType Unit : DetectSystem Teil : Tastatur Syntax : Function KeyboardType : Byte; ^^^^ kann einen der folgenden 2 Werte annehmen : dkbXT : XT-Tastatur dkbEnhanced : Erweiterte AT 101/102 Tasten Tastatur Zweck : Ermittelt den angeschlossenen Tastaturtyp. ͵ Function KeyBufferLength ͵[2.11.3] Funktionsname : KeyBufferLength Unit : DetectSystem Teil : Tastatur Syntax : Function KeyBufferLength : Byte; Zweck : Ermittelt, wie lang der Key-Buffer ist. Subtrahiert einfach KeyBufferStart (^) von KeyBufferEnd (^). ͵ Function IsKeyb16_9 ͵[2.11.4] Funktionsname : IsKeyb16_9 Unit : DetectSystem Teil : Tastatur Syntax : Function IsKeyb16_9 : Boolean; Zweck : Ermittelt, ob Interrupt 16h, Keyboardfunktion 9h untersttzt wird. ͵ Function IsKeybIntercept ͵[2.11.5] Funktionsname : IsKeybIntercept Unit : DetectSystem Teil : Tastatur Syntax : Function IsKeybIntercept : Boolean; Zweck : Ermittelt, ob der Keyboard-Intercept verfgbar ist. ͵ Function KeyboardId ͵[2.11.6] Funktionsname : KeyboardId Unit : DetectSystem Teil : Tastatur Syntax : Function KeyboardId : Word; Zweck : Ermittelt die Id des Keyboard's, wenn das BIOS diese Funktion zur Verfgung stellt. ͵ Function KeyboardController ͵[2.11.7] Funktionsname : KeyboardController Unit : DetectSystem Teil : Tastatur Syntax : Function KeyboardController : String; Zweck : Ermittelt den angeschlossenen Keyboard-Controller. Hierbei wird entweder 8042 oder nicht 8042 zurckgegeben. Beispiel : '8042' ͵ Function IsMouse ͵[2.12.1] Funktionsname : IsMouse Unit : DetectMouse Teil : Maus Syntax : Function IsMouse : Boolean; Zweck : Ermittelt, ob eine Maus samt Maustreiber angeschlossen ist. ͵ Function MouseVersion ͵[2.12.2.1] Funktionsname : MouseVersion Unit : DetectMouse Teil : Maus Syntax : Function MouseVersion : String; Zweck : Ermittelt die Version des aktuell auf INT 33h instal- liertem Maustreiber. Beispiel : '8.20' ͵ Function MouseVendor ͵[2.12.2.2] Funktionsname : MouseVendor Unit : DetectMouse Teil : Maus Syntax : Function MouseVendor : String; Zweck : Gibt zurueck, con welchem Hersteller die Maus ist. Beispiel : 'Microsoft' ͵ Function MouseType ͵[2.12.3] Funktionsname : MouseType Unit : DetectMouse Teil : Maus Syntax : Function MouseType : String; Zweck : Gibt im String den Maustyp an, welcher einer der folgenden ist : Bus-Maus, Serielle Maus, Inport-Maus, PS/2 Maus und Hewlett Packard Maus Beispiel : 'Serielle Maus' ͵ Function MouseIRQ ͵[2.12.4] Funktionsname : MouseIRQ Unit : DetectMouse Teil : Maus Syntax : Function MouseIRQ : Byte; Zweck : Ermittelt den IRQ, auf den die Maus momentan zurck- greift. ͵ Function MouseLanguage ͵[2.12.5] Funktionsname : MouseLanguage Unit : DetectMouse Teil : Maus Syntax : Function MouseLanguage : String; Zweck : Ermittelt, fr welches Land die Maus konfiguriert ist. Dabei werden folgende Sprachen bercksichtigt : Englisch Franzsisch Dnisch Deutsch Schwedisch Finnisch Spanisch Portugiesisch Italienisch Beispiel : 'Deutsch' ͵ Function MouseButtons ͵[2.12.6] Funktionsname : MouseButtons Unit : DetectMouse Teil : Maus Syntax : Function MouseButtons : Byte; Zweck : Gibt zurck wieviele Mausbuttons die Maus untersttzt. Beispiel : 3 fr 3 MouseButtons ͵ Function DoubleClickSpeed ͵[2.12.7] Funktionsname : DoubleClickSpeed Unit : DetectMouse Teil : Maus Syntax : Function DoubleClickSpeed : Word; Zweck : Ermittelt die Zeit, die zwischen 2 Klicks vergehen darf, so da es noch ein Doppelklick ist. ͵ Function MouseMickeysVert ͵[2.12.8] Funktionsname : MouseMickeysVert Unit : DetectMouse Teil : Maus Syntax : Function MouseMickeysVert : Word; Zweck : Ermittelt, Wieviele Mickeys/Pixel vertikal eingestellt sind. (Trgheit der Maus) ͵ Function MouseMickeysHori ͵[2.12.9] Funktionsname : MouseMickeysHori Unit : DetectMouse Teil : Maus Syntax : Function MouseMickeysHori : Word; Zweck : Ermittelt, Wieviele Mickeys/Pixel horizontal eingestellt sind. (Trgheit der Maus) ͵ Function MouseDisplayPage ͵[2.12.10] Funktionsname : MouseDisplayPage Unit : DetectMouse Teil : Maus Syntax : Function MouseDisplayPage : Byte; Zweck : Ermittelt die aktuelle Display-Page fr die Maus. ͵ Function EGARegisterSupp ͵[2.12.11] Funktionsname : EGARegisterSupp Unit : DetectMouse Teil : Maus Syntax : Function EGARegisterSupp : Boolean; Zweck : Ermittelt, ob Support fr die EGA-Register besteht. Wenn ja, kann man ber die Funktion EGARegisterVers (weiter unten beschrieben) ermitteln, welche Version Untersttzt wird. ͵ Function EGARegisterVers ͵[2.12.12] Funktionsname : EGARegisterVers Unit : DetectMouse Teil : Maus Syntax : Function EGARegisterVers : String; Zweck : Ermittelt, welche Version des Supports der EGA-Register vorliegt. Beispiel : '1.52' ͵ Function SaveStateBuffer ͵[2.12.13] Funktionsname : SaveStateBuffer Unit : DetectMouse Teil : Maus Syntax : Function SaveStateBuffer : Word; Zweck : Ermittelt die Gre des Save-State-Buffers in Bytes. (Das ist die Anzahl der Bytes, die bentigt wird, um den aktuellen Mausstatus abzuspeichern) ͵ Function IsMouseSystemsDrv ͵[2.12.14.1.1] Funktionsname : IsMouseSystemsDrv Unit : DetectMouse Teil : Maustreiber/MouseSystems Syntax : Function IsMouseSystemsDrv : Boolean; Zweck : Ermittelt, ob der MouseSystems Maustreiber installiert ist. ͵ Function MouseSystemsVer ͵[2.12.14.1.2] Funktionsname : MouseSystemsVer Unit : DetectMouse Teil : Maustreiber/MouseSystems Syntax : Function MouseSystemsVer : String; Zweck : Ermittelt die Version des MouseSystems Maustreibers, sofern dieser vorhanden ist. Beispiel : '6.56' ͵ Function IsLogitechDrv ͵[2.12.14.2.1] Funktionsname : IsLogitechDrv Unit : DetectMouse Teil : Maustreiber/Logitech Syntax : Function IsLogitechDrv : Boolean; Zweck : Ermittelt, ob der Logitech Maustreiber installiert ist. ͵ Function LogiCompPara ͵[2.12.14.2.2] Funktionsname : LogiCompPara Unit : DetectMouse Teil : Maustreiber/Logitech Syntax : Function LogiCompPara : String; Zweck : Ermittelt die Kompaparameter der Logitech-Maus. ͵ Function LogiSerBaudRate ͵[2.12.14.2.3] Funktionsname : LogiSerBaudRate Unit : DetectMouse Teil : Maustreiber/Logitech Syntax : Function LogiSerBaudRate : Word; Zweck : Ermittelt die Baudrate der Logitech-Maus. Beispiel : 2400 Bemerkung : Diese Funktion funktioniert nur bei seriellen Logi- tech Musen. ͵ Function LogiSerReportRate ͵[2.12.14.2.4] Funktionsname : LogiSerReportRate Unit : DetectMouse Teil : Maustreiber/Logitech Syntax : Function LogiSerReportRate : Word; Zweck : Ermittelt die Reportrate der Logitech-Maus. Bemerkung : Diese Funktion funktioniert nur bei seriellen Logi- tech Musen. ͵ Function LogiSerFirmRev ͵[2.12.14.2.5] Funktionsname : LogiSerFirmRev Unit : DetectMouse Teil : Maustreiber/Logitech Syntax : Function LogiSerFirmRev : Word; Zweck : Ermittelt die Firmware-Revision der Logitech-Maus. Beispiel : 0010h Bemerkung : Diese Funktion funktioniert nur bei seriellen Logi- tech Musen. ͵ Function LogiSerPort ͵[2.12.14.2.6] Funktionsname : LogiSerPort Unit : DetectMouse Teil : Maustreiber/Logitech Syntax : Function LogiSerPort : Word; Zweck : Ermittelt den Port der Logitech-Maus. Beispiel : 2 fr COM2 Bemerkung : Diese Funktion funktioniert nur bei seriellen Logi- tech Musen. ͵ Function MouseDriverType ͵[2.12.15.1] Funktionsname : MouseDriverType Unit : DetectMouse Teil : Maustreiber Syntax : Function MouseDriverType : String; Zweck : Ermittelt den Typ des geladenen Maustreibers (Device Driver oder TSR. Diese Funktion ist erst ab der Version 7.00 des Maustreibers verfgbar. Beispiel : 'TSR' ͵ Function MouseCursorType ͵[2.12.15.2] Funktionsname : MouseCursorType Unit : DetectMouse Teil : Maustreiber Syntax : Function MouseCursorType : String; Zweck : Ermittelt den Typ des Mauszeigers (Hardware/Software/Grafik). Diese Funktion ist erst ab der Version 7.00 des Maustreibers verfgbar. Beispiel : 'Grafik' ͵ Function MouseIntrRate ͵[2.12.15.3] Funktionsname : MouseIntrRate Unit : DetectMouse Teil : Maustreiber Syntax : Function MouseIntrRate : String; Zweck : Ermittelt, wie hoch die Interrupt-Rate des Maustreibers ist (30/50/100/200 Hz). Diese Funktion ist erst ab der Version 7.00 des Maustreibers verfgbar. Beispiel : '30Hz' ͵ Function MouseAccellProf ͵[2.12.15.4] Funktionsname : MouseAccellProf Unit : DetectMouse Teil : Maustreiber Syntax : Function MouseAccellProf : Word; Zweck : Ermittelt das Maus-Accelleration Profil. Diese Funktion ist erst ab der Version 7.00 des Maustreibers verfgbar. ͵ Function MouseBallPoint ͵[2.12.15.5] Funktionsname : MouseBallPoint Unit : DetectMouse Teil : Maustreiber Syntax : Function MouseBallPoint : Boolean; Zweck : Ermittelt, ob der Ballpoint vorhanden ist. Diese Funktion ist erst ab der Version 7.40 des Maustreibers verfgbar. ͵ Function MouseIniPath ͵[2.12.16.1] Funktionsname : MouseIniPath Unit : DetectMouse Teil : Maustreiber Syntax : Function MouseIniPath : String; Zweck : Ermittelt den MOUSE.INI - Pfad des Maustreibers. Diese Funktion ist erst ab der Version 8.00 des Maustreibers verfgbar. Beispiel : 'C:\MOUSE\MOUSE.INI' ͵ Function MousePointerStyle ͵[2.12.16.2] Funktionsname : MousePointerStyle Unit : DetectMouse Teil : Maustreiber Syntax : Function MousePointerStyle : String; Zweck : Ermittelt die aktuelle Erscheinungsform des Mauscursors (Normal/Invertiert/Transparent). Diese Funktion ist erst ab der Version 8.10 des Maustreibers verfgbar. Beispiel : 'Invertiert' ͵ Function MousePointerSize ͵[2.12.16.3] Funktionsname : MousePointerSize Unit : DetectMouse Teil : Maustreiber Syntax : Function MousePointerSize : String; Zweck : Ermittelt, in welcher Grenordnung der Mauszeiger ist (klein/mittel/gro). Diese Funktion ist erst ab der Version 8.10 des Maustreibers verfgbar. Beispiel : 'mittel' ͵ Function MousePointerSChange ͵[2.12.16.3] Funktionsname : MousePointerSChange Unit : DetectMouse Teil : Maustreiber Syntax : Function MousePointerSChange : Boolean; Zweck : Ermittelt, ob die Mauszeigergre gewechselt wird. Diese Funktion ist erst ab der Version 8.10 des Maustreibers verfgbar. ͵ Function MouseVersionWord ͵[2.12.17] Funktionsname : MouseVersionWord Unit : DetectMouse Teil : Maustreiber Syntax : Function MouseVersionWord : Word; Zweck : Ermittelt da von dem Maustreiber zurckgegebene, unbehandelte BCD Versionsword zurck. Dieses Word ist fr die Funktionen relevant, die erst ab einer bestimmten Version des MS Mouse Standards angesprochen werden knnen (z.B. MouseIntrRate oder MouseBallPoint). ͵ Function IsZNixMouseDrv ͵[2.12.18.1] Funktionsname : IsZNixMouseDrv Unit : DetectMouse Teil : Maustreiber Syntax : Function IsZNixMouseDrv : Boolean; Zweck : Ermittelt, ob der Z-Nix Maustreiber 7.04d installiert ist. (Sorry wegen der Beschrnkung auf eine Version ...) ͵ Function IsTrueDOXMouseDrv ͵[2.12.18.2] Funktionsname : IsTrueDOXMouseDrv Unit : DetectMouse Teil : Maustreiber Syntax : Function IsTrueDOXMouseDrv : Boolean; Zweck : Ermittelt, ob der Truedox Maustreiber installiert ist. Dieser wurde fr die Dell Systeme geschrieben. ͵ Function IsHPMouseDrv ͵[2.12.18.3] Funktionsname : IsHPMouseDrv Unit : DetectMouse Teil : Maustreiber Syntax : Function IsHPMouseDrv : Boolean; Zweck : Ermittelt, ob ein von HP programmierter Maustreiber installiert ist. ͵ Function BootDrive ͵[2.13.1.1] Funktionsname : BootDrive Unit : DetectDisks Teil : Laufwerke Syntax : Function BootDrive : Char; Zweck : Ermittelt das aktuelle Boot-Laufwerk. Beispiel : 'C' ͵ Function NumberDrives ͵[2.13.1.2] Funktionsname : NumberDrives Unit : DetectDisks Teil : Laufwerke/CMOS Syntax : Function NumberDrives : Byte; Zweck : Ermittelt Anzahl der Diskettenlaufwerke. Beispiel : 2 fr 2 Diskettenlaufwerke ͵ Function DiskDevices ͵[2.13.1.3] Funktionsname : DiskDevices Unit : DetectDisks Teil : Laufwerke Syntax : Function DiskDevices : Byte; Zweck : Ermittelt Anzahl der Devices, die als Laufwerke behandelt werden. Beispiel : 6 fr 6 logische Laufwerke ͵ Function FirstFloppy ͵[2.13.1.4] Funktionsname : FirstFloppy Unit : DetectDisks Teil : Laufwerke Syntax : Function FirstFloppy : Char; Zweck : Ermittelt das erste Diskettenlaufwerk (A oder B). Beispiel : 'B' fr Laufwerk B: ͵ Function LastDrive ͵[2.13.1.5] Funktionsname : LastDrive Unit : DetectDisks Teil : Laufwerke Syntax : Function LastDrive : Char; Zweck : Ermittelt den letzten Laufwerksbuchstaben, wie er in der CONFIG.SYS mit Lastdrive angegeben bzw. von Dos zu- geteilt wurde. Beispiel : 'Z' fr Laufwerk Z: ͵ Function IsDevice ͵[2.13.1.6] Funktionsname : IsDevice Unit : DetectDisks Teil : Laufwerke Syntax : Function IsDevice (Drive : Char) : Boolean; Zweck : Ermittelt, ob das angegebene Laufwerk vorhanden ist. Hierbei sind Laufwerksbuchstaben von A-Z mglich. ͵ Function DeviceType ͵[2.13.1.7] Funktionsname : DeviceType Unit : DetectDisks Teil : Laufwerke Syntax : Function DeviceType (Drive : Char) : Byte; ^^^^ Kann folgende (In der Unit DetectConstants definierte) Werte annehmen : ddiFloppy = Floppy-Disk ddiHard = Hard-Disk ddiSubst = Ge'SUBST'etes Laufwerk ddiCDRom = CDROM-Laufwerk ddiInterLnk = Interlink Laufwerk ddiMod = MOD-Laufwerk ddiNet = Netzlaufwerk Zweck : Ermittelt den Typ des Laufwerks. ͵ Function DeviceRemove ͵[2.13.1.8] Funktionsname : DeviceRemove Unit : DetectDisks Teil : Laufwerke Syntax : Function DeviceRemove (Drive : Char) : Boolean; Zweck : Ermittelt, ob das Medium im Laufwerk auswechselbar ist. ͵ Function DeviceMethod ͵[2.13.1.9] Funktionsname : DeviceMethod Unit : DetectDisks Teil : Laufwerke Syntax : Function DeviceMethod (Drive : Char) : Byte; ^^^^ Kann folgende (in der Unit DetectConstants definierte) Werte annehmen : ddiLocal = Local-Drive ddiRemote = Remote-Drive (Netzwerk/CDROM/...) ddiShared = Shared Drive Zweck : Ermittelt die Access-Methode des Laufwerks (Local/Remote/ Shared). ͵ Function IsVerify ͵[2.13.1.10] Funktionsname : IsVerify Unit : DetectDisks Teil : Laufwerke Syntax : Function IsVerify : Boolean; Zweck : Ermittelt, ob das Verify-Flag gesetzt ist. ͵ Function HDCylinders ͵[2.13.2.1] Funktionsname : HDCylinders Unit : DetectHD Teil : Festplatte Syntax : Function HDCylinders (HD : Byte) : Word; Zweck : Ermittelt, wieviele Cylinder auf der physikalischen Festplatte (1-3) laut BIOS vorhanden sind. ͵ Function HDHeads ͵[2.13.2.2] Funktionsname : HDHeads Unit : DetectHD Teil : Festplatte Syntax : Function HDHeads (HD : Byte) : Word; Zweck : Ermittelt die Anzahl der Lese/Schreib Kpfe, die auf der physikalischen Festplatte (1-3) laut BIOS vorhanden sind. ͵ Function HDSectors ͵[2.13.2.3] Funktionsname : HDSectors Unit : DetectHD Teil : Festplatte Syntax : Function HDSectors (HD : Byte) : Word; Zweck : Ermittelt die Anzahl der Sektoren, die auf der physikalischen Festplatte (1-3) laut BIOS vorhanden sind. ͵ Function HDCapacity ͵[2.13.2.4] Funktionsname : HDCapacity Unit : DetectHD Teil : Festplatte Syntax : Function HDCapacity (HD : Byte) : LongInt; Zweck : Ermittelt, wie gro die physikalische Festplatte (1-3) laut BIOS in Byte ist. ͵ Function HDTrackSeek ͵[2.13.2.5] Funktionsname : HDTrackSeek Unit : DetectHD Teil : Festplatte Syntax : Function HDTrackSeek (HD : Byte) : Real; Zweck : Ermittelt due Spur zu Spur Zugriffszeit der Festplatte. Bemerkung : Dieser Wert wird am Anfang des Programm's im Unit-Hauptteil ermittelt, da bei Funktionen Timer-Probleme auftauchen. ͵ Function HDAverageSeek ͵[2.13.2.6] Funktionsname : HDAverageSeek Unit : DetectHD Teil : Festplatte Syntax : Function HDAverageSeek (HD : Byte) : Real; Zweck : Ermittelt die mittlere Zugriffszeit der physikalischen Festplatte (1-3). Bemerkung : Dieser Wert wird am Anfang des Programm's im Unit-Hauptteil ermittelt, da bei Funktionen Timer-Probleme auftauchen. ͵ Function HDMaximumSeek ͵[2.13.2.7] Funktionsname : HDMaximumSeek Unit : DetectHD Teil : Festplatte Syntax : Function HDMaximumSeek (HD : Byte) : Real; Zweck : Ermittelt die lngste Zugriffszeit auf die physikalische Festplatte (1-3) Bemerkung : Dieser Wert wird am Anfang des Programm's im Unit-Hauptteil ermittelt, da bei Funktionen Timer-Probleme auftauchen. ͵ Function HDTransferRead ͵[2.13.2.8] Funktionsname : HDTransferRead Unit : DetectHD Teil : Festplatte Syntax : Function HDTransferRead (Block, Times : Word; F : String) : Real; Zweck : Ermittelt die Datentransferrate einer Festplatte in kb/s. Block gibt Hierbei die zu lesende Blockgre in Bytes an, Times gibt an, wieoft die Schleife durchlaufen werden soll und F ist ein String in dem man den Dateinamen fr die Test- datei ablegt. Dieser Test liest einen einzelnen Block von Daten x-Mal aus der gleichen Stelle einer Datei. Dies ist also kein sequentielles lesen hintereinanderstehender Blocks in einer Datei. Je fter die Schleife durchlaufen wird, desto lnger dauert und genauer wird das Ergebnis. Dieser Test gibt nur ohne Datentrgercache realistische Werte zurck. ͵ Function HDTransferWrite ͵[2.13.2.9] Funktionsname : HDTransferWrite Unit : DetectHD Teil : Festplatte Syntax : Function HDTransferWrite (Block, Times : Word; F : String) : Real; Zweck : Ermittelt die Datentransferrate einer Festplatte beim schreiben. Fr diesen Test gilt das gleiche wie fr HDTransferRead (siehe oben). ͵ Function IDEType ͵[2.13.3.1] Funktionsname : IDEType Unit : DetectATA_PI Teil : IDE(ATA) bzw. EIDE (ATAPI) Controller/Devices Syntax : Function IDEType : Byte; ^^^^ gibt einen der folgenden Werte zurck : datATA = IDE-Controller (ATA) datATAPI = Extended IDE Controller (ATAPI) Zweck : Ermittelt, welcher IDE-Typ genutzt wird. Dies ist besonders bei den Info-Funktionen wichtig (siehe unten), da ATAPI nicht vollstndig abwrts- kompatibel zu ATA ist. ͵ Function ATA_PIIsDrive ͵[2.13.3.2] Funktionsname : ATA_PIIsDrive Unit : DetectATA_PI Teil : IDE(ATA) bzw. EIDE (ATAPI) Controller/Devices Syntax : Function ATA_PIIsDrive (Drive : Char) : Boolean; Zweck : Ermittelt, ob zu dem angegebenem Laufwerk Daten ausgelesen werden knnen. Drive kann C oder D enthalten. Hierbei ist der physikalische und nicht der logische Laufwerksbuchstabe gemeint ... ͵ Function ATA_PIStrings ͵[2.13.3.3] Funktionsname : ATA_PIStrings Unit : DetectATA_PI Teil : IDE(ATA) bzw. EIDE (ATAPI) Controller/Devices Syntax : Function ATA_PIStrings (Drive : Char; InfoNumber : Byte) : String; ^^^^^^^^^^^^^^^^^ mu einen der folgenden Werte annehmen : datSerienNummer = Ermittelt die Seriennummer (ATA(PI)) datFirmRev = Ermittelt die Firmware-Revision (ATA(PI)) datModellNummer = Ermittelt die Modellnummer (ATA(PI)) datPIOTiming = Ermittelt den Timing-Mode des PIO. (ATA(PI)) datDMATiming = Ermittelt den Timing Mode des DMA. (ATA(PI)) datWhatDevice = Ermittelt, welches Gert an diese Schnittstelle angeschlossen ist (ATAPI) datDatenrate = Ermittelt die Datentransferrate in MBit/s (ATA) datEnhPIO = Ermittelt die Enhanced PIO Version (ATAPI) datBuffertype = Ermittelt den Typ des Puffers des Devices. (ATA(PI)) datKapaInSekt = Ermittelt die Kapazitt der Platte in Sektoren. (ATA) datLBASektoren = Ermittelt die Anzahl der Sektoren, die mit der LBA-Methode adressiert werden knnen. (ATA) Zweck : Ermittelt verschiedene Angaben zu der Konfiguration der Devices. Hierbei mu man darauf achten, das nicht alle ATA-Funktionen bei ATAPI vorhanden sind und umgekehrt. Bei dieser Funktion werden die in String-Form abgespeicherten Informationen ausgelesen. Fr booleansche und Word-Ergebnisse siehe unten. Drive gibt an, welches Laufwerk gemeint ist. Beispiel : 'QUANTUM FIREBALL1080A' ͵ Function ATA_PIBools ͵[2.13.3.4] Funktionsname : ATA_PIBools Unit : DetectATA_PI Teil : IDE(ATA) bzw. EIDE (ATAPI) Controller/Devices Syntax : Function ATA_PIBools (Drive : Char; InfoNumber : Byte) : Boolean; ^^^^^^^^^^^^^^^^^ mu einen der folgenden Werte annehmen : datGeschw = Ermittelt, ob eine Geschwindigkeitstole- ranzlcke beim Formatieren ntig ist. (ATA) datSpurVersatz = Ermittelt, ob die Spurversatzoption vor- handen ist. (ATA) datDatentakt = Ermittelt, ob eine Datentakt-Offset Option vorhanden ist. (ATA) datDrehzahltol = Ermittelt, ob die Drehzahltoleranz grer als 0,5 % ist. (ATA) datFestplatte = Ermittelt ob das Medium eine Fest-oder Wechselplatte ist. (ATA) datSpindel = Ermittelt, ob eine Spindelmotorsteuerung implementiert ist. (ATA) datKopfUmsch = Ermittelt, ob die Kopfumschaltzeit grer als 15 s ist. (ATA) datMFM = Ermittelt, ob die MFM-Kodierung angewandt wird. (ATA) datSoftSekt = Ermittelt, ob die Platte softsektoriert ist. (ATA) datHardSekt = Ermittelt, ob die Platte hardsektoriert ist. (ATA) datWechselMed = Ermittelt, ob das Device ein Wechsel- medium ist. (ATAPI) datMultiSekt = Ermittelt, ob die Platte Multisektor R/W erlaubt. (ATA) dat16BitIO = Ermittelt, ob auf dem Device 16-Bit Datentransfers mglich sind. (ATA(PI)) datISIORDY = Ermittelt, ob das IORDY-Protokoll unter- sttzt wird. (ATA(PI)) datIsDisIORDY = Ermittelt, ob man das IORDY-Protokoll de- aktivieren kann. (ATA(PI)) datIsLBA = Ermittelt, ob das LBA-Protokoll unter- sttzt wird. (ATA(PI)) datIsDMA = Ermittelt, ob der DMA-Zugriff auf das Device untersttzt wird. (ATA(PI)) Zweck : Ermittelt verschiedene Angaben zu der Konfiguration der Devices. Hierbei mu man darauf achten, das nicht alle ATA-Funktionen bei ATAPI vorhanden sind und umgekehrt. Bei dieser Funktion werden die in Boolean-Form abgespeicherten Informationen ausgelesen. Fr String-Formen oben und fr Word-Ergebnisse unten nachsehen. Drive gibt an, welches Laufwerk gemeint ist. ͵ Function ATA_PIWords ͵[2.13.3.5] Funktionsname : ATA_PIWords Unit : DetectATA_PI Teil : IDE(ATA) bzw. EIDE (ATAPI) Controller/Devices Syntax : Function ATA_PIWords (Drive : Char; InfoNumber : Byte) : Word; ^^^^^^^^^^^^^^^^^ mu einen der folgenden Werte annehmen : datZylinder = Ermittelt die Anzahl der Zylinder auf der Platte. (ATA) datHrsZylinder = Ermittelt die Anzahl der herausnehm- baren Zylinder auf der Platte. (ATA) datKoepfe = Ermittelt die Anzahl der R/W Koepfe (ATA) datBytesSpurUnf = Ermittelt Bytes pro Spur unformatiert (ATA) datBytesSekUnf = Ermittelt Bytes pro Sektor unformatiert (ATA) datSekSpur = Ermittelt die Sektoren pro Spur (ATA) datPufferGrSek = Ermittelt die Gre des Puffers in Sek- toren. (ATA(PI)) datMultipleSekt = Ermittelt die maximale Anzahl der Sek- toren, die in einem Rutsch gelesen werden knnen. (ATA) datDMZylinder = Ermittelt Drive Mapping Zylinder (ATA) datDMKoepfe = Ermittelt Drive Mapping Koepfe (ATA) datDMSektorenSpur = Ermittelt Drive Mapping Sektoren/Spur (ATA) datAktSWDMAM = Aktuelle Single-Word DMA-Mode (ATA(PI)) datUntSWDMAM = Untersttzte Single-Word DMA-Modi (ATA(PI)) datAktMWDMAM = Aktuelle Multi-Word DMA-Mode (ATA(PI)) datUntMWDMAM = Untersttzte Multi-Word DMA-Modi (ATA(PI)) datMinZykMWDMA = Minimale Zykluszeit fr Multiword DMA, minimal 150 ns. (ATAPI) datEmpfZykMWDMA = Empfohlene Zykluszeit fr Multiword DMA (ATAPI) datMinZykPIOOIORDY = Minimale Zykluszeit fr PIO ohne IORDY- Protokoll, minimal 180 ns. (ATAPI) datMinZykPIOMIORDY = Minimale Zykluszeit fr PIO mit IORDY- Protokoll, minimal 180 ns. (ATAPI) Zweck : Ermittelt verschiedene Angaben zu der Konfiguration der Devices. Hierbei mu man darauf achten, das nicht alle ATA-Funktionen bei ATAPI vorhanden sind und umgekehrt. Bei dieser Funktion werden die in Word-Form abgespeicherten Informationen ausgelesen. Fr String-Formen und Boolean-Ergebnisse oben nachsehen. Drive gibt an, welches Laufwerk gemeint ist. ͵ Function WhatGCard ͵[2.14.1.1] Funktionsname : WhatGCard Unit : DetectGraphics Teil : Grafikkarte Syntax : Function WhatGCard : String; Zweck : Mit dieser Funktion kann man den eingebauten Grakikchip/die eingebaute Grafikkarte ermitteln, wobei auch viele SVGA- Karten untersttzt werden. Insgesamt werden bisher 137 Karten/Chips untersttzt. Zuerst wird mit einem kleinen Trick eine Hauptarbeit umgangen : Es wird ber die Graph-Unit ermittelt, von welchem Grund-Typ die Karte ist. Zu jeder Variablen dieser Unit wird eine Beschreibung in den String gefat, und wenn mglich auch noch Angaben ber Speichergre u. . erfat. Da nicht immer alle In- formationen ber eine Karte in einen String passen, wird hier auf die Funktion GraInf (weiter unten) verwiesen, durch welche Zusatzinformationen abgerufen werden knnen. Die einzelnen Methoden zum Erkennen von SVGA-Karten oder Extra-Informationen zu einer bestimmten Karte kann ich hier aus verschiedenen Grnden nicht auflisten. Einige werden in PCGPE 1.0a ausfhrlich beschrieben, andere kommen aus Info+ und wieder andere aus der VGADOC3-Package und knnen dort nachgelesen werden. Es werden folgende Standard-Karten erkannt : HERCULES; CGA; MCGA; EGA Mono, Color; IBM 8514; AT & T 400; VGA; XGA; PC3270; SVGA-Karten/Chips : Video 7 VEGA VGA, VRAM, FASTWRITE, VGA Version 5, 1024i; Ahead A, B; Genoa 5100, 5200, 5300, 5400, 6100, 6200, 6400, 6600; Cirrus CL-GD5402, CL-GD5402 r1, CL-GD5420, CL-GD5420 r1, CL-GD5422, CL-GD5426, CL-GD5424, CL-GD5428, CL-GD543x, CL-GD6205, CL-GD6235, CL-GD6215, CL-GD6225, AVGA2 (5402), CL-GD6440, CL-GD6412, CL-GD5410, CL-GD6420, CL-GD6410, 510/520, 610/620, Video7 OEM; Chips&Technologies 82c450, 82c451, 82c452, 82c453, 82c455, 82c456, 82c457, F65510, F65520, F65530; Trident 8800BR, 8800CS, TR8900, TR8900C, TR9000, TR8900CL/D, TR9000i, TR8900CXr, LCD9100B, LX8200, TVGA9200CXi, LCD9320, GUI9420, TVGA 8800BR (Everex ViewPoint, Ultragraphics II, VisionVGA, EVGA); Tseng ET 4000, 4000w32, 4000w32i, 4000w32p, 3000; ZyMOS; ATI 18800, 18800-1, 28800-2, 28800-4, 28800-5, 28800-6, 68800, VGAWonder, EGAWonder, EGAWonder 800+, Basic-16; S3 86c911, 86c911A/86c924, 86c928 C/D/E, 86c801/805 A/B/C/D, 86c928 PCI, 86c868/86c968 PCI; Avance Logic AL2101; Compaq IVGS, AVGA, QVision 1024, QVison 1280, AVPort; Hualon HM86304; MXIC MX86010, MX86000; NCR VGA 77C22, 77C21, 77C22E, 77C22E+; OAK OTI-087, OTI-083, OTI037C, OTI-067, OTI-077, OTI-057; Paradise/Western Digital PVGA1A, WD90C00, WD90C22, WD90C20A, WD90C20, WD90C24, WD90C26, WD90C30, WD90C31, WD90C33, WD90C10, WD90C11; Primus 2000; RealTek RT3103, RT3105, RT3106; UMC 85c408; Weitek; Yamaha 6388; Beispiel : 'VGA, S3, 86c868/86c968 PCI, VESA, 1024kb Video Memory, 1024kb Video Memory (VESA)' ͵ Function WhatGCardNumber ͵[2.14.1.2] Funktionsname : WhatGCardNumber Unit : DetectGraphics Teil : Grafikkarte Syntax : Function WhatGCardNumber : Byte; Zweck : Gibt die Kategorie der Grafikkarte zurck. Diese Nummer ist relevant, wenn man die Funktionen aus GraInf benutzen will. Eine Liste mit der Aufschlsselung der Nummern steht im Abschnitt [3.4]. ͵ Function VesaInf ͵[2.14.2.1] Funktionsname : VESAInf Unit : DetectGraphics Teil : Grafikkarte / VESA-Spezifikation Syntax : Function VESAInf (InfoNumber : Byte) : String; Zweck : Gibt einige zustzliche Informationen ber VESA zu- rck. Dieser Funktion mu man einen Code bergeben, der angibt, welche Information man haben will. Das sind im einzelenen - 1 : Ist Vesa installiert ? Wenn ja, wird 'ja' zu- rckgegeben, wenn nein 'nein'. - 2 : Vesa-Version. Wird mit Dezimalpunkt zurck- gegeben. - 3 : OEM Id. Hier wird zurckgegeben, von welchem Hersteller die Karte ist. Hierbei wird auch der Nummerncode von ATI (761295520) berck- sichtigt. Beispiel : 'ja'/'1.2'/'S3' ͵ Function VESAIsVidMode ͵[2.14.2.2] Funktionsname : VESAIsVidMode Unit : DetectGraphics Teil : Grafikkarte / VESA-Spezifikation Syntax : Function VESAIsVidMode (Mode : Word) : Boolean; Zweck : Ermittelt, ob die angegebene Video-Mode untersttzt wird. Hierbei fangen die VESA-Modes bei 100h an und gehen bei einigen Karten bis 305h (z.B. S3). ͵ Function VESAVidModeString ͵[2.14.2.3] Funktionsname : VESAVidModeString Unit : DetectGraphics Teil : Grafikkarte / VESA-Spezifikation Syntax : Function VESAVidModeString (Mode : Word; Z : Byte) : String; Zweck : Ermittelt Informationen ber die angegebene VESA-Video- Mode. Welche Modes verfgbar sind, kann man mit der Funktion VESAIsVidMode (^) berprfen. Die Variable Z ist ein kleines Anhngsel fr das DEMO-Programm, wenn in ihr die Zahl 46 steht, dann werden die Ausgaben in den String so hingebogen, das sie in 3 Zeilen der Fenster passen :-) Beispiel : 'Grafik, Farbe, k. Bios, Char : 8x16, Auflsung : 640x480, Planes : 1, Farbtiefe : 8, Memory-Modell : Packed Pixel Grafik' ͵ Function GraInf ͵[2.14.3] Funktionsname : GraInf Unit : DetectGraphics Teil : Grafikkarte Syntax : Function GraInf (InfoNumber : Byte) : String; Zweck : Gibt verschiedene Informationen ber mehrere Grafikkarten zurck. Hierbei mu der Funktion eine Nummer bergeben wer- den, die angibt, was herausgefunden werden soll. Die Routinen werden ber eine der folgenden Nummern angesprochen : 1 - ATI-Revision. Hier wird die Revisionsnummer der SVGA-ATI-Karte zurckgegeben. 2 - EGA Wird bei einem Mode-Wechsel der Screen-Buffer gesichtert ? 3 - EGA Ist EGA aktiv ? 4 - EGA Wartet der Computer auf Bildschirm-Zugriff ? 5 - EGA Wird der CGA-Cursor emuliert ? 6 - EGA Save Area Adresse hexadezimal 7 - EGA Video Parameter Table Adresse hexadezimal 8 - EGA Dynamic Save Area Adresse hexadezimal 9 - EGA Auxiliary character generator Adresse hexadezimal 10 - EGA Graphics mode auxiliary table Adresse hexadezimal 11 - VIDEO 7 Memory 8 oder 16 Bit 12 - VIDEO 7 I/O 8 oder 16 Bit 13 - VIDEO 7 BIOS 8 oder 16 Bit 14 - VIDEO 7 FastWrite 8 oder 16 Bit 15 - GENOA Bus (PC/MCA) 16 - GENOA Video Hhe 8 oder 16 Bit 17 - GENOA Bios Hhe 8 oder 16 Bit 18 - GENOA Adresse der I/O-Ports 19 - GENOA Bios Gre 20 - GENOA Monitor Typ 21 - GENOA Chipset auf Motherboard/Adapterkarte 22 - GENOA Fast-Scroll ? 23 - GENOA Fast-Address ? 24 - GENOA Fast-Write ? 25 - GENOA 70hz Vertical Retrace ? 26 - GENOA Interlaced ? 27 - TRIDENT 8900/EVEREX 8- oder 16-Bit BIOS ? 28 - TRIDENT 8900/EVEREX Interlaced ? 29 - TSENG ET???? 8/16 Bit ROM ? 30 - TSENG ET???? 8/16 Bit Video ? 31 - TSENG ET???? 8/16 Bit I/O ? 32 - TSENG ET???? EGA/VGA kompatibel ? 33 - TSENG ET???? ROM Adresse 34 - ATI Mouse Port ? 35 - ATI Programmable Video Clock ? 36 - ATI Monitor ? 37 - ATI 18800+ 70Hz non-interlace ? 38 - ATI 18800+ Korean chars ? 39 - ATI 18800+ Memory clock 40/45 Mhz ? 40 - ATI 18800+ Zero wait state ? 41 - ATI 18800+ Paged ROM's ? 42 - ATI 18800+ 8514/A ? 43 - Standard VGA Color Page 44 - Standard VGA Paging Mode 45 - Standard VGA/MCGA (PS) Video Mode 46 - Standard VGA/MCGA (PS) Length Regenerate Buffer 47 - Standard VGA/MCGA (PS) Start Address Regenerate Buffer 48 - Standard VGA/MCGA (PS) Cursor Position Page 0 49 - Standard VGA/MCGA (PS) Cursor Position Page 1 50 - Standard VGA/MCGA (PS) Cursor Position Page 2 51 - Standard VGA/MCGA (PS) Cursor Position Page 3 52 - Standard VGA/MCGA (PS) Cursor Position Page 4 53 - Standard VGA/MCGA (PS) Cursor Position Page 5 54 - Standard VGA/MCGA (PS) Cursor Position Page 6 55 - Standard VGA/MCGA (PS) Cursor Position Page 7 56 - Standard VGA/MCGA (PS) Cursor Typ 57 - Standard VGA/MCGA (PS) Aktive Bildschirmseite 58 - Standard VGA/MCGA (PS) Bytes pro Zeichen 59 - Standard VGA/MCGA (PS) Display Kombinationscode 60 - Standard VGA/MCGA (PS) Farben in der aktuellen Mode 61 - Standard VGA/MCGA (PS) Seiten in der aktuellen Mode 62 - Standard VGA/MCGA (PS) Aktuelle Scanlines 63 - Standard VGA/MCGA (PS) Laden der Default-Farben abgeschaltet 64 - Standard VGA/MCGA (PS) Cursor Emulation eingeschaltet 65 - Standard VGA/MCGA (PS) PS/2 Plasma Display aktiv ? 66 - Standard VGA/MCGA (PS) Welche Modi werden untersttzt Es wird ein String zurckgegeben, der Mode 0-13h reprsentiert. Ein X bedeutet untersttzt, ein - das Gegenteil. Es Werden ein paar Zeichen zuviel ausgegeben, den Rest einfach nicht beachten oder im Programm abschneiden ... 67 - Standard VGA/MCGA (PS) Char-Font Loading Function ? 68 - Standard VGA/MCGA (PS) Default Loading der Palette untersttzt ? 69 - Standard VGA/MCGA (PS) Cursor Emulation Function ? 70 - Standard VGA/MCGA (PS) Color Paging Function ? 71 - Standard VGA/MCGA (PS) Light Pen supported ? 72 - Standard VGA/MCGA (PS) 512 Char Set supported ? 73 - IBM 3270 PC X Aspect Ratio 74 - IBM 3270 PC Y Aspect Ratio 75 - IBM 3270 PC Monitortyp 76 - IBM 3270 PC Adapter Id 77 - IBM 3270 PC Untersttzte Modi Gibt einen String zurck, der sich aus X (Mode untersttzt) oder - (Mode nicht untersttzt) zusammensetzt. Der erste Platzhalter hat keine Bedeutung, hier die Aufschlsselung der letzten 7 : 7 : Mono Text, 1 Seite 6 : Farbiger Text, 1 Seite 5 : Farbiger Text, 4 Seiten 4 : CGA Farb-Grafik 3 : 720x350 2-Farben Grafik 2 : 360x350 4-Farben Grafik 1 : 720x350 8-Farben Grafik 78 - IBM 3270 PC GPI Grafik Support 79 - IBM 3270 PC Kontrollprogramm Typ und Version 80 - IBM 3270 PC Kontrollprogramm Id-String 81 - S3 Check fr Diamond Stealth-Karten und deren DAC's 82 - S3 Ist MEMCS16 8 oder 16 Bit 83 - S3 Ist der Fast Write Buffer eingeschaltet 84 - S3 Zero Waitstate (EISA^) 85 - AHEAD Befindet sich die Grafikkarte im Modus 8 Fonts 86 - AHEAD Ist der High Speed Sequencer eingeschaltet 87 - AHEAD Ist der 16-Bit Memory-Mode eingeshaltet 88 - AHEAD In welchem Emulationsmodus befindet sich die GK 89 - AHEAD Ist es ein 24KB oder ein 32 KB BIOS 90 - AHEAD Ist es ein 8- oder 16-Bit BIOS 91 - ATI 28800+ Ist ein True-Color DAC installiert 92 - Avance Logic 2101+ Maximale Horizontalfrequenz in khz 93 - Avance Logic 2101+ Emulationsmodus fr ... 94 - CIRRUS Ist das Cirrus BIOS installiert ? 95 - CIRRUS BIOS / Version 96 - CIRRUS BIOS / Memory 97 - CIRRUS BIOS / Monitortyp 98 - Compaq Monitortyp 99 - Everex BIOS Version 100 - Realtek Emulationsmodus 101 - Yamaha Clock Select 102 - Video 7 Clock Select 103 - Video 7 Clock Source 104 - RealTek Bios-String Es wird in jedem Fall auf die richtige Grafikkarte geprft (WhatGCard schreibt in die globale Variable CardNumber eine Nummer, die sich auf die jeweilige Karte bezieht. Die Liste hierfr kann man sich im Abschnitt [3.6] ansehen) Die PS/1 oder PS/2 Routinen sind nicht auf allen Rechneren lauffhig, um festzustellen, ob sie lauffhig sind, einfach GraInf (45) (Video Mode) aufrufen und nachsehen, ob die Routine einen String zurckgibt, der kleiner als 3 Zeichen ist. Wenn ja, dann sind die Funktionen alle untersttzt. Bei einigen Routinen ist es zwar nicht sinnvoll, sie als String zu- rckzugeben, aber wenn ich fr alles eine Funktion machen wrde, wrde das Code-Segment wahrscheinlich bald ber- laufen (was es ohnehin schon fast tut...). Beispiel : 'ja'/'8-Bit BIOS'/... ͵ Function WhatRamDac ͵[2.14.4] Funktionsname : WhatRamDac Unit : DetectGraphics Teil : Grafikkarte Syntax : Function WhatRamDac : String; Zweck : Ermittelt den Typ des installierten RAMDACS auf SVGA-Karten. Unbekannte werden als normaler 8-Bit DAC erkannt. Bisher werden folgende RAMDACS untersttzt : Normal; SS24; Sierra SC11486, 16m, 32/64k; AT&T 20c490, 20c491, 20c493; Acumos ADAC1; Cirrus 24 Bit DAC; Music MU9C4910; Diamond SS2410; Brooktree Bt484; Edsun CEG mit Revision. Beispiel : 'Diamond SS2410' ͵ Function ScanLinesChar ͵[2.14.5] Funktionsname : ScanLinesChar Unit : DetectGraphics Teil : Grafikkarte Syntax : Function ScanLinesChar : Word; Zweck : Ermittelt Anzahl der Scanlines pro Zeichen. ͵ Function ScanLinesCursor ͵[2.14.6] Funktionsname : ScanLinesCursor Unit : DetectGraphics Teil : Grafikkarte Syntax : Function ScanLinesCursor : String; Zweck : Ermittelt die vom Cursor benutzten Scanlines. ͵ Function GetFontAddress ͵[2.14.7] Funktionsname : GetFontAddress Unit : DetectGraphics Teil : Grafikkarte / Fonts Syntax : Function GetFontAddress (FontNumber : Byte) : Pointer; Zweck : Ermittelt die Adresse einer ROM-Font. Hierbei kann Font- Number 1 - 7 annehmen, was aufgeschlsselt heit : 1 : INT 1Fh Font 2 : INT 43h Font 3 : ROM 8x14 Font 4 : ROM 8x8 (lo) Font 5 : ROM 8x8 (hi) Font 6 : ROM 9x14 Font 7 : ROM 9x16 Font Beispiel : Ptr ($C000:$56D0) ͵ Function GetPaletteRegister ͵[2.14.8] Funktionsname : GetPaletteRegister Unit : DetectGraphics Teil : Grafikkarte / Farbpalette Syntax : Function GetPaletteRegister (Color : Byte) : Byte; Zweck : Ermittelt das DAC-Register einer bestimmten Farbe. Color gibt eine Farbe von 1 - 16 an. ͵ Function VideoWaits ͵[2.14.9] Funktionsname : VideoWaits Unit : DetectGraphics Teil : Grafikkarte/Video Memory Syntax : Function VideoWaits : Word; Zweck : Ermittelt die Video-RAM Waitstates. ͵ Function BiosSpeed ͵[2.14.10.1] Funktionsname : BiosSpeed Unit : DetectGraphics Teil : Grafikkarte/Video Memory Syntax : Function BiosSpeed : Real; Zweck : Ermittelt die Zeichenausgabegeschwindigkeit ber das BIOS in cps (Zeichen pro Sekunde). Beispiel : 111512 fuer 111512 Bytes/Sekunde ͵ Function DosSpeed ͵[2.14.10.2] Funktionsname : DosSpeed Unit : DetectGraphics Teil : Grafikkarte/Video Memory Syntax : Function DosSpeed : Real; Zweck : Ermittelt Zeichenausgabegeschwindigkeit ber die Dosfunktion. Bei diesem Wer mu in Betracht gezogen werden, ob ein ANSI- Driver installiert ist, oder nicht, denn dies kann drastische Geschwindigkeitsverringerungen hervorrufen. Bemerkung : Dieser Wert wird im Hauptteil der Unit ermittelt, da auch einige Timer-Probleme vorliegen. Dieser Wert wird also beim Programmstart ermittelt. Er beschreibt die 26. Zeile, welche normalerweise unbenutzt ist. Es kann jedoch in der 50-Zeilen- Mode vonnten sein, die Werte im Quelltext zu verndern. Beispiel : 58633 fuer 58633 Bytes/Sekunde ͵ Function TestVertHz ͵[2.14.11.1] Funktionsname : TestVertHz Unit : DetectGraphics Teil : Grafikkarte / Bildwiederholfrequenz Syntax : Function TestVertHz : Word; Zweck : Ermittelt die vertikale Bildwiederhol(/Zeilen)frequenz vom aktuellen Modus. Es wird eine Zahl ohne Nachkommastellen angegeben, da sonst Ungenauigkeiten auftauchen knnen. Diese Funktion kann einige Sekunden in Anspruch nehmen. ͵ Function TestHorizHz ͵[2.14.11.2] Funktionsname : TestHorizHz Unit : DetectGraphics Teil : Grafikkarte / Bildwiederholfrequenz Syntax : Function TestHorizHz : Real; Zweck : Ermittelt die Horizontale Bildwiederhol(/Zeilen)frequenz vom aktuellen Modus. Es empfiehlt sich, die Zahl mit 3 Vorkomma und 2 Nachkommastellen anzuzeigen. Diese Funktion kann einige Sekunden in Anspruch nehmen. ͵ Function IsDGIS ͵[2.14.12] Funktionsname : IsDGIS Unit : DetectGraphics Teil : Grafikkarte / Direct Graphics Interface Syntax : Function IsDGIS : Boolean; Zweck : Ermittelt, ob das DGIS vorhanden bzw. ein solcher Treiber geladen ist. ͵ Function IsSB ͵[2.15.1.1] Funktionsname : IsSB Unit : DetectFX Teil : Sound Blaster Syntax : Function IsSB : Boolean; Zweck : Ermittelt, ob eine Soundblaster oder kompatible Karte ein- gebaut ist. ͵ Function WhatSB ͵[2.15.1.2] Funktionsname : WhatSB Unit : DetectFX Teil : Sound Blaster Syntax : Function WhatSB : Byte; ^^^^ kann einen der folgenden Werte annehmen : dsbNone = Keine Soundblasterkarte angeschlossen dsbNormal = Normale Soundblaster, Mono dsbPro = Soundblaster Pro, Stereo dsb16 = Soundblaster 16, 16 Bit dsb16ASP = Soundblaster 16ASP, 16 Bit Zweck : Ermittelt den Typ der Soundblaster (Mono, Pro, ASP16). ͵ Function WhatSBPort ͵[2.15.1.3] Funktionsname : WhatSBPort Unit : DetectFX Teil : Sound Blaster Syntax : Function WhatSBport : Word; Zweck : Ermittelt den Grund-Port der Soundblaster (falls vorhanden). Der Wert kann zwischen 210h und 280h liegen. ͵ Function WhatSBVersion ͵[2.15.1.4] Funktionsname : WhatSBVersion Unit : DetectFX Teil : Sound Blaster Syntax : Function WhatSBVersion : String; Zweck : Ermittelt die wahre Version der Soundblaster Karte. Beispiel : '2.02' ͵ Function IsAdlib ͵[2.15.2.1] Funktionsname : IsAdlib Unit : DetectFX Teil : Adlib Syntax : Function IsAdlib : Boolean; Zweck : Ermittelt, ob eine Adlib-Karte angeschlossen ist. ͵ Function IsAdlibDriver ͵[2.15.2.2] Funktionsname : IsAdlibDriver Unit : DetectFX Teil : Adlib Syntax : Function IsAdlibDriver : Boolean; Zweck : Ermittelt, ob zu der Adlib-Karte ein Treiber geladen ist. ͵ Function AdlibDrvVer ͵[2.15.2.3] Funktionsname : AdlibDrvVer Unit : DetectFX Teil : Adlib Syntax : Function AdlibDrvVer : String; Zweck : Ermittelt die Version des Treibers fr die Adlib-Karte. Beispiel : '1.50' ͵ Function AdlibDrvAdr ͵[2.15.2.4] Funktionsname : AdlibDrvAdr Unit : DetectFX Teil : Adlib Syntax : Function AdlibDrvAdr : Pointer; Zweck : Ermittelt die API-Adresse des Treibers fr die Adlib-Karte. ͵ Function IsMPU401 ͵[2.15.3.1] Funktionsname : IsMPU401 Unit : DetectFX Teil : Roland MPU 401 Syntax : Function IsMPU401 : Boolean; Zweck : Ermittelt, ob auf der Soundkarte ein Roland MPU 401-Port (oder kompatibel) vorhanden ist. ͵ Function IsGUS ͵[2.15.4.1] Funktionsname : IsGUS Unit : DetectFX Teil : Gravis Ultrasound Syntax : Function IsGUS : Boolean; Zweck : Ermittelt, ob eine Gravis Ultrasound Soundkarte eingebaut ist. (Siehe auch Gus_Port und Gus_Memory) ͵ Function IsVBEAI ͵[2.15.5.1] Funktionsname : IsVBEAI Unit : DetectFX Teil : Vesa Audio Interface (VBE/AI) Syntax : Function IsVBEAI : Boolean; Zweck : Ermittelt, ob das Vesa Audio Interface untersttzt wird bzw. ein solcher Treiber geladen ist. ͵ Function VBEAIVersion ͵[2.15.5.2] Funktionsname : VBEAIVersion Unit : DetectFX Teil : Vesa Audio Interface (VBE/AI) Syntax : Function VBEAIVersion : String; Zweck : Ermittelt die Version des VBE/AI. Hierbei kann bisher nur Version 1.00 erkannt werden, da die Versionsnummer nicht in einem Standardformat abgelegt ist. Beispiel : '1.00' ͵ Function VBEAILDevice ͵[2.15.5.3] Funktionsname : VBEAILDevice Unit : DetectFX Teil : Vesa Audio Interface (VBE/AI) Syntax : Function VBEAILDevice (Device : Word) : Word; ^^^^^^ mu einen der folgenden (in der Unit DetectConstants definierten) Werte annehmen : daiWave = Wave-Device daiMidi = Midi-Device daiVolume = Volume-Device Zweck : Ermittelt das Handle eines bestimmten Gertes. Die Nummer des Devices wird direkt an den Treiber weitergeleitet, damit man auch neuere (, in dieser Unit nicht untersttzte,) Gerte ansprechen kann. Hierbei mu man allerdings die genaue Nummer wissen und kann die Funktion VBEAIGetInfo (siehe unten) nicht anwenden. ͵ Function VBEAIGetInfo ͵[2.15.5.4] Funktionsname : VBEAIGetInfo Unit : DetectFX Teil : Vesa Audio Interface (VBE/AI) Syntax : Function VBEAIGetInfo (Handle : Word; Data : Byte; L : LongInt) : Pointer; ^^^^ Record-Typ Zweck : Gibt einen Pointer auf einen Record (VBEAIWave, VBEAIMidi oder VBEAIVolume) zurck. Welcher Record es ist, hngt vom Handle ab. Wenn man auf das Midi-Handle zugreift wird VBEAIMidi zurckgegeben, beim Wave-Handle ist es dann VBEAIWave. Das Volume-Handle ist meist gleich dem Wave- Handle, weswegen man hier mit Data angeben mu, welchen Record man haben will (daiGENI oder daiVOLI, in DetectConstants definiert). Der zirckgegebene Pointer zeigt dann also auf einen Datenblock mit der Lnge L. Diesen mu men nach dem Gebrauch wieder vom Heap entfernen. ͵ Function GUS_Port ͵[2.15.4.2] Funktionsname : GUS_Port Unit : DetectFX Teil : Gravis Ultrasound Syntax : Function GUS_Port : Word; Zweck : Ermittelt, wechen Port die Gravis Ultrasound benutzt. ͵ Function GUS_Memory ͵[2.15.4.3] Funktionsname : GUS_Memory Unit : DetectFX Teil : Gravis Ultrasound Syntax : Function GUS_Memory : Word; Zweck : Ermittelt, wieviel KB Speicher auf der Gravis Ultrasound vorhanden ist. ͵ Function IsExistEMS ͵[2.16.1] Funktionsname : IsExistEMS Unit : DetectMemory Teil : EMS-Memory Syntax : Function IsExistEMS : Boolean; Zweck : Ermittelt, ob EMS-Speicher und dessen Treiber vorhanden sind. ͵ Function GetEMSVersion ͵[2.16.2] Funktionsname : GetEMSVersion Unit : DetectMemory Teil : EMS-Memory Syntax : Function GetEMSVersion : String; Zweck : Ermittelt die Version eines EMS-Drivers, wenn ein solcher installiert ist. Beispiel : '4.00' ͵ Function AllEMSPages ͵[2.16.3] Funktionsname : AllEMSPages Unit : DetectMemory Teil : EMS-Memory Syntax : Function AllEMSPages : Word; Zweck : Ermittelt insgesamt die EMS-Seiten (je 16k) ͵ Function FreeEMSPages ͵[2.16.4] Funktionsname : FreeEMSPages Unit : DetectMemory Teil : EMS-Memory Syntax : Function FreeEMSPages : Word; Zweck : Ermittelt Anzahl freier EMS-Seiten (je 16k) ͵ Function GetEMSAddress ͵[2.16.5] Funktionsname : GetEMSAddress Unit : DetectMemory Teil : EMS-Memory Syntax : Function GetEMSAddress : Pointer; Zweck : Ermittelt die Adresse des EMS-Pageframes (64 kb, aufgeteilt 16 kb Seiten), welche dann in Pointerform zurckgegeben wird. ͵ Function GetNumberHandles ͵[2.16.6.1] Funktionsname : GetNumberHandles Unit : DetectMemory Teil : EMS-Memory Syntax : Function GetNumberHandles : Word; Zweck : Ermittelt die Anzahl der aktiven Handles. Diese ist fr die Routinen GetHandleSize und GetHandleName relevant. ͵ Function GetEMSHandleSize ͵[2.16.6.2] Funktionsname : GetEMSHandleSize Unit : DetectMemory Teil : EMS-Memory Syntax : Function GetEMSHandleSize (Handle : Word) : Word; Zweck : Ermittelt die Gre eines bestimmten Handles in KB. Handle darf hierbei keinen greren Wert als GetNumberHandles (^) annehmen. ͵ Function GetEMSHandleName ͵[2.16.6.3] Funktionsname : GetEMSHandleName Unit : DetectMemory Teil : EMS-Memory Syntax : Function GetEMSHandleName (Handle : Word) : String; Zweck : Ermittelt den Namen eines bestimmten Handles. Handle darf keinen greren Wert als GetNumberHandles (^) annehmen. Diese Funktion funktioniert erst ab Version 4 der EMS-Spezifikation. Beispiel : 'DTU 1.43' ͵ Function IsVCPI ͵[2.16.7.1] Funktionsname : IsVCPI Unit : DetectMemory Teil : EMS-Memory Syntax : Function IsVCPI : Boolean; Zweck : Ermittelt, ob VCPI installiert ist. >>>>>>>>>> diese Routine braucht mind. <<<<<<<<<< >>>>>>>>>> 16k freien EMS-Speicher <<<<<<<<<< Es wird ein Handle ber 16k allokiert und das Register AH auf einen beliebigen Wert auer 0 berprft. Wenn er existiert, dann existiert auch VCPI. ͵ Function VCPIVersion ͵[2.16.7.2] Funktionsname : VCPIVersion Unit : DetectMemory Teil : EMS-Memory Syntax : Function VCPIVersion : String; Zweck : Ermittelt die Version des VCPI. >>>>>>>>>> diese Routine braucht mind. <<<<<<<<<< >>>>>>>>>> 16k freien EMS-Speicher <<<<<<<<<< Es wird ein Handle ber 16k allokiert und das Register AH auf einen beliebigen Wert auer 0 berprft. Wenn er existiert, dann wird aus den Registern BH (Major-Version) und BL (Minor-Version) die Version zusammengehngt. Beispiel : '4.00' ͵ Function IsExtMemBios ͵[2.17.1.1] Funktionsname : IsExtMemBios Unit : DetectMemory Teil : Extended Memory Syntax : Function IsExtMemBios : Boolean; Zweck : Ermittelt, ob man Extended RAM ber den Kassetten-Interruppt (15h) ansprechen kann. Dies ist nur derfall, wenn Extended Memory vorhanden ist und kein HiMem oder hnliches instal- liert ist. ͵ Function BiosFreeExt ͵[2.17.1.2] Funktionsname : BiosFreeExt Unit : DetectMemory Teil : Extended Memory Syntax : Function BiosFreeExt : LongInt; Zweck : Ermittelt, wieviel Extended Memory ber das Bios angespro- chen werden kann. ͵ Function IsExtMemDriv ͵[2.17.2.1] Funktionsname : IsExtMemDriv Unit : DetectMemory Teil : Residenz Syntax : Function IsExtMemDriv : Boolean; Zweck : Ermittelt, ob ein Extended Memory Driver (z.B. Himem) installiert ist. ͵ Function XMSVersion ͵[2.17.2.2] Funktionsname : XMSVersion Unit : DetectMemory Teil : XMS-Memory Syntax : Function XMSVersion : String; Zweck : Ermittelt die Extended memory Version. Beispiel : 3.00 Bemerkung : Leider gibt es manchmal Komplikationen der Versionsnummern, da diese im BCD (Binar coded decimal)-Format vorliegen, und von anderen Programmen falsch gehandhabt werden. So gibt zum Beispiel MS-DOS bei dem Befehl MEM eine falsche Versionsnummer aus (z.B. 3.16 anstatt 3.10), wobei allerdings auffllt, das Microsoft selber diese Spezifikation des XMS-Managers geschrieben hat ... Auf jeden fall zeigen andere Diagnostizierprogramme (wie z.B. SI von PcTools oder MSD (auch von Microsoft ...)) hier 3.10 anstatt 3.16, und so habe ich die niedergeschriebene Spezifikation benutzt. ͵ Function XMMVersion ͵[2.17.2.3] Funktionsname : XMMVersion Unit : DetectMemory Teil : XMS-Memory Syntax : Function XMMVersion : String; Zweck : Gibt die Version des XMS-Managers zurck. Beispiel : 3.10 Bemerkung : Hier haben wir das gleiche Dilemma wie bei XMSVersion (^). ͵ Function XMSMemory ͵[2.17.2.4] Funktionsname : XMSMemory Unit : DetectMemory Teil : XMS-Memory Syntax : Function XMSMemory : Word; Zweck : Gibt die Anzahl der vorhandenen 1k Blcke zurck. ͵ Function XMSFreeMemory ͵[2.17.2.5] Funktionsname : XMSFreeMemory Unit : DetectMemory Teil : XMS-Memory Syntax : Function XMSFreeMemory : Word; Zweck : Ermittelt, wieviele 1k Blcke im XMS noch frei sind. Bemerkung : Leider schnallt sich Borland Pascal desfteren vor diese Routinen, so, da man, wenn man das Programm unter der IDE startet, 0K angezeigt bekommt. Daran habe ich bisher leider noch nichts machen knnen. ͵ Function A20Status ͵[2.17.2.6] Funktionsname : A20Status Unit : DetectMemory Teil : XMS-Memory Syntax : Function A20Status : Byte; ^^^^ kann einen der folgenden 3 Werte annehmen : da2disabled : abgeschaltet da2enabled : eingeschaltet dalerror : Fehler Zweck : Gibt den Status der A20-Leitung zurck. ͵ Function IsUMB ͵[2.17.2.7] Funktionsname : IsUMB Unit : DetectMemory Teil : Upper Memory Blocks Syntax : Function IsUMB : Boolean; Zweck : Ermittelt, ob UMB's verfgbar sind. ͵ Function UMBLargestBL ͵[2.17.2.8] Funktionsname : UMBLargestBL Unit : DetectMemory Teil : Upper Memory Blocks Syntax : Function UMBLargestBL : LongInt; Zweck : Ermittelt, wie gro der grte Block des UMB ist. ͵ Function IsHma ͵[2.18.1] Funktionsname : IsHma Unit : DetectMemory Teil : High Memory Area Syntax : Function IsHma : Boolean; Zweck : Ermittelt, ob die HMA (Hihgh Memory Area) genutzt wird. ͵ Function HmaStatus ͵[2.18.2] Funktionsname : HmaStatus Unit : DetectMemory Teil : High Memory Area Syntax : Function HmaStatus : String; Zweck : Ermittelt den aktuellen Status der HMA. Beispiel : 'benutzt' ͵ Function HmaUsedByDos5 ͵[2.18.3] Funktionsname : HmaUsedByDos5 Unit : DetectMemory Teil : High Memory Area Syntax : Function HmaUsedByDos5 : Boolean; Zweck : Ermittelt, ob die HMA von Dos 5+ genutzt wird. ͵ Function HmaFreeDos5 ͵[2.18.4] Funktionsname : HmaFreeDos5 Unit : DetectMemory Teil : High Memory Area Syntax : Function HmaFreeDos5 : Word; Zweck : Ermittelt den laut Dos freien Speicher der HMA. ͵ Function HmaAddressDos5 ͵[2.18.5] Funktionsname : HmaAddressDos5 Unit : DetectMemory Teil : High Memory Area Syntax : Function HmaAddressDos5 : Pointer; Zweck : Ermittelt die Adresse der HMA unter Dos. ͵ Function IsDPMI ͵[2.19.1] Funktionsname : IsDPMI Unit : DetectMemory Teil : Dos Protected Mode Interface (DPMI) Syntax : Function IsDPMI : Boolean; Zweck : Ermittelt, ob das DPMI installiert ist. ͵ Function DPMIVersion ͵[2.19.2] Funktionsname : DPMIVersion Unit : DetectMemory Teil : Dos Protected Mode Interface (DPMI) Syntax : Function DPMIVersion : String; Zweck : Ermittelt die Version des DPMI. Beispiel : '0.90' ͵ Function DPMICPU ͵[2.19.3] Funktionsname : DPMICPU Unit : DetectMemory Teil : Dos Protected Mode Interface (DPMI) Syntax : Function DPMICPU : String; Zweck : Ermittelt den vom DPMI festgestellten Prozessor. Beispiel : '486' ͵ Function DPMIModeEntry ͵[2.19.4] Funktionsname : DPMIModeEntry Unit : DetectMemory Teil : Dos Protected Mode Interface (DPMI) Syntax : Function DPMIModeEntry : Pointer; Zweck : Ermittelt den Switch Mode Entry Point des DPMI. ͵ Function CMOSBaseMemory ͵[2.20.1] Funktionsname : CMOSBaseMemory Unit : DetectMemory Teil : CMOS Memory Syntax : Function CMOSBaseMemory : Word; Zweck : Ermittelt den unteren Arbeitsspeicher, welcher im CMOS angegeben ist. ͵ Function CMOSExtMemory ͵[2.20.2] Funktionsname : CMOSExtMemory Unit : DetectMemory Teil : CMOS Memory Syntax : Function CMOSExtMemory : Word; Zweck : Ermittelt die Gre des Extended Memory, wie er im CMOS angegeben ist. ͵ Function CMOSTotalMem ͵[2.20.3] Funktionsname : CMOSTotalMem Unit : DetectMemory Teil : CMOS Memory Syntax : Function CMOSTotalMem : Word; Zweck : Ermittelt den gesamten Arbeitsspeicher laut CMOS. ͵ Function MemThru ͵[2.20.4.1] Funktionsname : MemThru Unit : DetectMemory Teil : Datendurchsatz Syntax : Function MemThru : Real; Zweck : Ermittelt maximalen Datendurchsatz im Memory in KB/s. Die Werte schwanken manchmal um 1 oder 2 KB. ͵ Function BiosExtThru ͵[2.20.4.2] Funktionsname : BiosExtThru Unit : DetectMemory Teil : Datendurchsatz Syntax : Function BiosExtThru : Real; Zweck : Ermittelt den Datendurchsatz ber das BIOS Extended Memory Interface in KB/s. Die Werte knnen um einige KB schwanken. ͵ Function EMSThru ͵[2.20.4.3] Funktionsname : EMSThru Unit : DetectMemory Teil : Datendurchsatz Syntax : Function EMSThru : Real; Zweck : Ermittelt den Datendurchsatz des EMS in KB/s. Die Werte knnen manchmal um einige KB scchwanken. ͵ Function IsVDS ͵[2.21.1] Funktionsname : IsVDS Unit : DetectMemory Teil : Virtual DMA (Direct Memory Access) Specification (VDS) Syntax : Function IsVDS : Boolean; Zweck : Ermittelt, ob die VDS untersttzt wird. ͵ Function VDSVersion ͵[2.21.2] Funktionsname : VDSVersion Unit : DetectMemory Teil : Virtual DMA (Direct Memory Access) Specification (VDS) Syntax : Function VDSVersion : String; Zweck : Ermittelt die Version der VDS. Beispiel : '1.00' ͵ Function VDSProduct ͵[2.21.3] Funktionsname : VDSProduct Unit : DetectMemory Teil : Virtual DMA (Direct Memory Access) Specification (VDS) Syntax : Function VDSProduct : String; Zweck : Ermittelt das Produkt (falls bekannt), welches die VDS zur Verfgung stellt. Hierbei werden QMAPS/HPMM, EMM386, Windows 3(.1|.11), 386^Max, Memory Commander, QEMM, OS/2 und NWDOS EMM386.EXE erkannt, ansonsten wird die Zurckgegebene ID ausgegeben. Beispiel : 'QEMM' ͵ Function VDSMaxDMABSize ͵[2.21.4] Funktionsname : VDSMaxDMABSize Unit : DetectMemory Teil : Virtual DMA (Direct Memory Access) Specification (VDS) Syntax : Function VDSMaxDMABSize : Word; Zweck : Ermittelt die maximale Gre des DMA-Buffers. ͵ Function VDSTransfersOk ͵[2.21.5] Funktionsname : VDSTransfersOk Unit : DetectMemory Teil : Virtual DMA (Direct Memory Access) Specification (VDS) Syntax : Function VDSTransfersOk : String; Zweck : Ermittelt, wohin DMA-Transfers gehen drfen (nur erster MB/ jede Adresse). Beispiel : 'jede Adresse' ͵ Function VDSIsBuffer1Meg ͵[2.21.6] Funktionsname : VDSIsBuffer1Meg Unit : DetectMemory Teil : Virtual DMA (Direct Memory Access) Specification (VDS) Syntax : Function VDSIsBuffer1Meg : Boolean; Zweck : Ermittelt, ob der Buffer unterhalb der 1MB-Grenze liegt. ͵ Function VDSIsAutoRemap ͵[2.21.7] Funktionsname : VDSIsAutoRemap Unit : DetectMemory Teil : Virtual DMA (Direct Memory Access) Specification (VDS) Syntax : Function VDSIsAutoRemap : Boolean; Zweck : Ermittelt, ob die Auto-Remap-Option aktiviert ist. ͵ Function VDSIsContiguousMem ͵[2.21.8] Funktionsname : VDSIsContiguousMem Unit : DetectMemory Teil : Virtual DMA (Direct Memory Access) Specification (VDS) Syntax : Function VDSIsContiguousMem : Boolean; Zweck : Ermittelt, ob Contiguous-Memory verwendet ist. ͵ Function VDSIsBiosBit ͵[2.21.9] Funktionsname : VDSIsBiosBit Unit : DetectMemory Teil : Virtual DMA (Direct Memory Access) Specification (VDS) Syntax : Function VDSIsBiosBit : Boolean; Zweck : Ermittelt, Ob das BIOS-Bit fr die Untersttzung von VDS ge- setzt ist. ͵ Function IsInstalled ͵[2.22.1] Funktionsname : IsInstalled Unit : DetectMultiplex Teil : Multiplex-Interrupt 2Fh und andere Syntax : Function IsInstalled (SoftwareNumber : Byte) : Boolean; ^^^^^^^^^^^^^^^^^^^^^^^ mu einer der folgenden Werte sein : Assign = Assign DriverSys = DRIVER.SYS Share = Share Redifs = Redirector/IFS Multidos = Multidos NlsFunc = NlsFunc Win386 = Windows/386 DosShell = Dos-Shell AnsiSys = ANSI.SYS Xma2EmsSys = XMA2EMS.SYS Himem = HIMEM.SYS NNIPX = Novell Netware IPX Display = Display DICExt = Dos Installable Command Extender IBM3270 = IBM 3270 Append = Append LAN = LAN LANREC = LAN RECEIVER.COM LANREDIR = LAN REDIREKTOR.EXE GrafTable40 = Graftable 4.0- GrafTable50 = GrafTable 5.0+ MSCDExt = MS CD Extensions _4Dos = JP Software 4Dos NDos = Norton NDos KStack = JP Software KSTACK WildUnix = WildUnix Arnakey = Arnakey TaskSwitch5 = Dos 5 Task Switcher DrDosTskMx = Dr Dos Task Max FPFLock = F-Prot F-Lock FPFXChk = F-Prot F-XChk FPFPopUp = F-Prot F-PopUp FPFDLock = F-Prot F-Lock FluShot = Flu-Shot + HyperDisk = Hyperdisk MSLanTastic = MSLanTastic Inset = Inset Dos_16M = Dos/16M Phar_Lap = Phar Lap Dos Extender N_Cache_F = Norton Utilities N-Cache-F N_Cache_S = Norton Utilities N-Cache-S N_DiskReet = Norton Utilities N-DiskReet N_DiskMon = Norton Utilities N-Disk Monitor N_FileSav = Norton Utilities N-FileSav EGASys = EGA.SYS Print = Print NETBiosApp = NET-Bios Append NETBiosNetW = NET-Bios Network ShellB = ShellB GraphicsCom = GRAPHICS.COM DosKey = MS-Dos Doskey TopWNetOs = Topware Network Operating System } AutoParkCom = AUTOPARK.COM AutoBraille = AutoBraille Jot_It = Jot-It RedView = RedView Explosiv = Explosiv IntelImg = Intel Image Processing Interface SwellExe = SWELL.EXE ZwMouse = ZWMouse HeartCom = HEART.COM GridLocExe = GRIDLOC.EXE _4MAp = 4Map MinMem = MIN-MEM METZTSRCom = METZTSR.COM VidLockCom = VIDLOCK.COM BTrieveMU = BTrieve Multi-User PC3270Emu3 = IBM PC 3270 Emulator v3 EasyNet = Easy-Net TurboNetSer = TurboNET Server FaxBiosInt = Fax Bios Interface ResPlay = ResPlay WhoaCom = WHOA!.COM Raid = Resident Aid InnerMission = Inner Mission PCT7DataMon = PcTools v7.x+ Data Monitor ScrnSav2Com = SCRNSAV2.COM _3ComBApiSIO = 3com BAPI SERIAL I/O Asap = Automatic Screen Access Program CouriersCom = COURIERS.COM QCache = QCache ScroLockCom = SCROLOCK.COM FastBuffCom = FASTBUFF.COM ATIWonSupSw = ATI EGA/VGA Wonder Super Switch (SMS.COM) KWTsrWin = KingsWood TSR Windows KWNoBusy = KingsWood NoBusy KWCDStack = KingsWood CD-Stack KWDiskWatch = KingsWood DiskWatch KWPushBP = KingsWood PushBP KWAlias = KingsWood Alias KWKeyMacro = KingsWood KeyMacro KWSlowDown = KingsWood SlowDown KWAnsiGrab = KingsWood AnsiGrab KWTee = KingsWood Tee KWFastMous = KingsWood FastMouse KWExtWild = KingsWood ExtWild KWBreakOut = KingsWood BreakOut KWStopDisk = KingsWood StopDisk Tame = Tame CAMSCSI = Common Access Method SCSI CMCISCSIDrv = CMC International SCSI Driver VUIImgDrv = Display-Driver fr VUImage TinyTalk = Tiny-Talk Fast = FAST! SWBiosC = SWBios auf C: SWBiosD = SWBios auf D: ErgoOS2_386 = ERGO Dos Extender OS 2/386 ErgoHuming = Ergo Huming Dos Extender Back_Forth = Back&Forth Tes = Interconnection Tes AvatarSys = AVATAR.SYS SBSpeechDrv = Sound Blaster Speech Driver SRDisk = SRDisk 1.30+ DVQExt = DESQView QEXT.SYS (Quarterdeck Extended Memory Manager 286) TextCapCom = TEXTCAP.COM FakeyCom = FAKEY.COM WatchCom = WATCH.COM PushDirCom = PUSHDIR.COM MakeyCom = MAKEY.COM Scout = New-Ware Scout EgaPalCom = EGAPAL.COM VgaPal = VGAPAL.COM LPTx4 = LPTx 4.x LPTx5 = LPTx 5.x LPTx6 = LPTx 6.x LPTx7 = LPTx 7.x FlashUpCom = FLASHUP.COM SpeedScrCom = SPEEDSCR.COM Stackey = CtrAlt STACKEY.COM PCT5BackTalk = PCTools 5.1+ BackTalk PCT7CpShDesk = PCTools 7.0+ CPShedule/Desktop PCT6Cache = PCTools 6.0+ PC Cache PCT5Shell = PCTools 5.1+ PC Shell PCT5ShellRes = PCTools 5.1+ PC Shell resident PCT6Run = PCTools 6.0+ PC Run PCT5Desktop = PCTools 5.1+ DESKTOP.EXE PCT5Cache = PCTools 5.x+ PC Cache PCT7Commute = PCTools 7.x+ PC Commute {+} WCED = WCED ElRes = Elres CompaqAdapt = Compaq ADAPT.COM ConcDos = Concurrent DOS DietOvr = DIET Overlay Mode DosEdCom = DOSED.COM Dos4_G = Rational Systems DOS/4G CuckooCom = CUCKOO.COM DecNetDCT = DECnet DOS CTERM ANSK = Alloys Netware Support Kit CTask = CTask 2.0+ ZipKey = ZipKey Unchain = Unchain BlankIt = Blank-It Parker = Parker Stacker = Stacker ScreenR = ScreenR v1.55+ BWLPD = Beame&Whiteside LPD ScanBoot = ScanBoot BWCom14 = Beame&Whiteside Com 14 TelApi = TelAPI ObjectKernel = Object Kernel for DOS UltraVision = Ultravision UltraFont = UltraFont (Toshiba) NWCDEX = NW CD Extensions DoubleSpace = Microsoft DoubleSpace SuperStorPro = SuperStor Pro K5 = Tastaturtreiber K5 SoftwCarous = Taskswitcher Software Carousel Fastflip = Taskswitcher FastFlip Zweck : Ermittelt, ob das angegebene Programm im Speicher resident ist. Fr einige Programme sind in DETECTCO.PAS genauere Beschreibungen zu finden. Bemerkung : Siehe auch WhichAddress und WhichVersion. ͵ Function WhichAddress ͵[2.22.2] Funktionsname : WhichAddress Unit : DetectMultiplex Teil : Verschiedene residente Programme Syntax : Function WhichAddress (SoftwareNumber : Byte) : Pointer; ^^^^^^^^^^^^^^^^^^^^^^^ mu einen der folgenden Werte annehmen : KWTsrWin = TSR Modul Segment fr Kingswood Tsr Win. *1 KWNoBusy = TSR Modul Segment fr KingsWood NoBusy. *1 KWCDStack = TSR Modul Segment fr KingsWood CD-Stack. *1 KWDiskWatch = TSR Modul Segment fr KingsWood DiskWatch. *1 KWPushBP = TSR Modul Segment fr KingsWood PushBP. *1 KWAlias = TSR Modul Segment fr KingsWood Alias. *1 KWKeyMacro = TSR Modul Segment fr KingsWood KeyMacro. *1 KWSlowDown = TSR Modul Segment fr KingsWood SlowDown. *1 KWAnsiGrab = TSR Modul Segment fr KingsWood AnsiGrab. *1 KWTee = TSR Modul Segment fr KingsWood Tee. *1 KWFastMous = TSR Modul Segment fr KingsWood FastMouse. *1 KWExtWild = TSR Modul Segment fr KingsWood ExtWild. *1 KWBreakOut = TSR Modul Segment fr KingsWood BreakOut. *1 KWStopDisk = TSR Modul Segment fr KingsWood StopDisk. *1 Tame = Data Area von Tame ZWMouse = Segment des residenten Code's TurboNetSer = CS des Turbo Net Server's InnerMission = Segment des residenten Code's PCT7DataMon = Segment des residenten Code's Asap = Segment des residenten Code's FastBuffCom = Segment des residenten Code's Dos3 = Datensegment von DOS 3+ (IBMDOS.COM/ MSDOS.SYS) SBSpeechDrv = API-Entry-Point vom Sound Blaster Speech Driver. DVQExt = QEXT.SYS Segment EgaPalCom = Segment des residenten Code's VgaPalCom = Segment des residenten Code's LPTx4 = Segment des residenten Code's LPTx5 = Segment des residenten Code's LPTx6 = Segment des residenten Code's LPTx7 = Segment des residenten Code's FlashUpCom = Code Segment von FLASHUP.COM SpeedScrCom = CS von SPEEDSCR.COM Stackey = Segment des residenten Code's PCT5BackTalk = Code Segment des von PCTools 5.1+ BackTalk PCT7CpShDesk = Segment des residenten Teils von PCTOOLS 7.1+ CPShedule/Desktop PCT5Desktop = Segment des residenten Teils von PCTools 5.1+ Desktop PCT7Commute = PSP Segment von PCTools 7.x+ PC Commute ObjectKernel = Segment des residenten Teils des Object Kernels fr Dos. *1 = Das TSR-Modul von den Kingswood Utilities ist fol- gendermaen aufgebaut : Byte 00h = 4 Bytes = Signatur ('FTSR') Byte 04h = Word = Segment Adresse des Modul's Byte 06h = Word = Anzahl der Words zum berspringen Byte 08h = N Words = Modul-definierte DATA-Area, mu sich an einem festen Segment-Off- set befinden (normalerweise nur ein PSP, wenn Dateizugriffe ntig sind). Byte N = 5N Bytes = Vom Tsr belegte Interrupts (siehe unten) Byte N = Byte = FFh (Terminator) Format der Interrupt-Liste : Byte 00h = Byte = Interrupt Nummer (00h-FEh) Byte 01h = Word = Offset im Tsr des DWord-Pointers auf den vorherigen Interrupt-Handler Byte 03h = Word = Offset im Tsr des Interrupt-Handler- Codes. Zweck : Ermittelt fr das angegebene Programm eine bestimmte Adresse (siehe oben). In der Datei DETECTCO.PAS sind fr einige Programme genauere Beschreibungen angegeben. Bemerkung : Siehe auch WhichVersion und IsInstalled. ͵ Function WhichVersion ͵[2.22.3] Funktionsname : WhichVersion Unit : DetectMultiplex Teil : Verschiedene residente Programme Syntax : Function WhichAddress (SoftwareNumber : Byte) : String; ^^^^^^^^^^^^^^^^^^^^^^^ mu einen der folgenden Werte annehmen : Phar_Lap = Typ und Version der Phar-Lap DosExtenders Stacker = Version vom Festplattenverdoppler Stacker MSCDEX = Version der MS CD-ROM Extensions Swell = Version des Utilities Swell Stackey = Version des Utilities Stackey ZipKey = Version von ZipKey CompaqAdapt = Version von Compaq's ADAPT.COM ScreenR = ScreenR Version ScanBoot = ScanBoot Version UltraVision = Version von UltraVision UltraFont = Version von UltraFont (Toshiba) Zweck : Ermittelt fr das angegebene Programm die Version, falls es installiert ist. In der Datei DETECTCO.PAS sind fr einige Programme genauere Beschreibungen angegeben. Beispiel : '1.00' Bemerkung : Siehe auch WhichAddress und IsInstalled. ͵ Function DosMemory ͵[2.23.1] Funktionsname : DosMemory Unit : DetectDos Teil : Memory Syntax : Function DosMemory : LongInt; Zweck : Ermittelt, wieviel Dos-Memory in Bytes zur Verfgung steht. ͵ Function GetDosVersion ͵[2.23.2] Funktionsname : GetDosVersion Unit : DetectDos Teil : DOS Syntax : Function GetDosVersion : String; Zweck : Gibt den DOS-Typ und die DOS-Version zurueck. Dabei werden folgende Betriebssysteme erkannt : IBM DOS, Compaq DOS, MS-DOS, AT&T DOS, Zenith DOS, HP-DOS, ZDS (Group Bull), Packard-Bell DOS, DEC DOS, Olivetti DOS, Toshiba DOS, Novell Netware, MS Multimedia Systems, RxDOS, PTS-DOS, GS Embedded DOS, DR DOS, Novell DOS, OS/2, Windows NT und Windows 95. Zusaetzlich wird noch die Interne Revisionsnummer erkannt. Beispiel : 'MS-DOS 6.22 Revision A' ͵ Function CountryCode ͵[2.23.3] Funktionsname : CountryCode Unit : DetectDos Teil : Landeseinstellungen Syntax : Function Countrycode : Word; Zweck : Ermittelt den Landescode des z.Zt. aktiven Landes. ͵ Function CountryString ͵[2.23.4] Funktionsname : CountryString Unit : DetectDos Teil : Landeseinstellungen Syntax : Function CountryString : String; Zweck : Ermittelt den gerade aktiven Landesstring in deutscher Sprache. Beispiel : 'Deutschland' ͵ Function FreeDosMemory ͵[2.23.5] Funktionsname : FreeDosMemory Unit : DetectDos Teil : Memory Syntax : Function FreeDosMemory : LongInt; Zweck : Ermittelt den noch freien Dos-Speicher. Bemerkung : Diese Funktion gibt in TSR's und ISR's nicht die richtigen Werte aus. ͵ Function IsDosInHMA ͵[2.23.6] Funktionsname : IsDosInHMA Unit : DetectDos Teil : DOS Syntax : Function IsDosInHMA : Boolean; Zweck : Erkennt, ob Dos in die HMA geladen wurde ... ͵ Function IsDosInRom ͵[2.23.7] Funktionsname : IsDosInRom Unit : DetectDos Teil : DOS Syntax : Function IsDosInRom : Boolean; Zweck : Erkennt, ob es sich beim aktiven Dos um ein ins ROM gebrannte Dos handelt ... ͵ Function GetDosOEMNumber ͵[2.23.8] Funktionsname : GetDosOEMNumber Unit : DetectDos Teil : DOS Syntax : Function GetDosOEMNumber : Byte; Zweck : Ermittelt die DOS-OEM-Nummer. ͵ Function GetDosSwitchChar ͵[2.23.9] Funktionsname : GetDosSwitchChar Unit : DetectDos Teil : DOS Syntax : Function GetDosSwitchChar : Char; Zweck : Ermittelt den Einleiter von Parametern ('-' oder '/') ͵ Function IsDEVPrefix ͵[2.23.10] Funktionsname : IsDEVPrefix Unit : DetectDos Teil : DOS Syntax : Function IsDEVPrefix : Boolean; Zweck : Ermittelt, ob das /DEV/-Prefix bei der Geraeteansprache vorhanden sein muss (True) oder optional ist (False). ͵ Function ͵[2.23.11] Funktionsname : GetDosBusyFlag Unit : DetectDos Teil : DOS Syntax : Function GetDosBusyFlag : Pointer; Zweck : Gibt den Pointer auf das DOS-Busy-Flag zurck. ͵ Function GetPrtScrStatus ͵[2.23.12] Funktionsname : GetPrtScrStatus Unit : DetectDos Teil : DOS Syntax : Function GetPrtScrStatus : String; Zweck : Gibt den Status der PrintScreen-Routine zurck. Beispiel : 'normal' ͵ Function GetMemAllocMethod ͵[2.23.13] Funktionsname : GetMemAllocMethod Unit : DetectDos Teil : DOS Syntax : Function GetMemAllocMethod : String; Zweck : Ermittelt die Methode, nach der DOS den Speicher fr neue Programme sucht. Beispiel : 'Erstes passende' ͵ Function DosBuffers ͵[2.23.14] Funktionsname : DosBuffers Unit : DetectDos Teil : DOS Syntax : Function DosBuffers : Word; Zweck : Ermittelt die Anzahl der Buffers wie in der CONFIG.SYS angegeben. ͵ Function DosFilesPointer ͵[2.23.15] Funktionsname : DosFilesPointer Unit : DetectDos Teil : DOS Syntax : Function DosFilesPointer : Pointer; Zweck : Ermittelt die Adresse des erten File-Handles. ͵ Function DosFilesCount ͵[2.23.16] Funktionsname : DosFilesCount Unit : DetectDos Teil : DOS Syntax : Function DosFilesCount : Word; Zweck : Gibt die insgesamt verfuegbare Anzahl von Dos-FileHandles zurck, wie in der CONFIG.SYS unter FILES angegeben. ͵ Function DosFilesUsed ͵[2.23.17] Funktionsname : DosFilesUsed Unit : DetectDos Teil : DOS Syntax : Function DosFilesUsed : Word; Zweck : Gibt zurck, wieviele File-Handles schon benutzt sind. ͵ Function DosFCBCount ͵[2.23.18] Funktionsname : DosFCBCount Unit : DetectDos Teil : DOS Syntax : Function DosFCBCount : Word; Zweck : Ermittelt die Anzahl der zur Verfuegung stehenden FCB's. ͵ Function DosStacksCount ͵[2.23.19] Funktionsname : DosStacksCount Unit : DetectDos Teil : DOS Syntax : Function DosStacksCount : Word; Zweck : Ermittelt die Anzahl der Dos-Stacks wie in der CONFIG.SYS unter STACKS angegeben ͵ Function DosStacksSize ͵[2.23.20] Funktionsname : DosStacksSize Unit : DetectDos Teil : DOS Syntax : Function DosStacksSize : Word; Zweck : Ermittelt die groesse eines einzelnen Dos-Stacks wie in der CONFIG.SYS unter STACKS angegeben. ͵ Function DosActiveGlobalCodePage ͵[2.23.21] Funktionsname : DosActiveGlobalCodePage Unit : DetectDos Teil : DOS Syntax : Function DosActiveGlobalCodePage : Word; Zweck : Ermittelt die aktive globale Display Code-Page. ͵ Function DosDefaultGlobalCodePage ͵[2.23.22] Funktionsname : DosDefaultGlobalCodePage Unit : DetectDos Teil : DOS Syntax : Function DosDefaultGlobalCodePage : Word; Zweck : Ermittelt die default globale Display Code-Page. ͵ Function DosThousandSeparator ͵[2.23.23] Funktionsname : DosThousandSeparator Unit : DetectDos Teil : DOS Syntax : Function DosThousandSeparator : Char; Zweck : Gibt den Tausender-Trenner zurck. Beispiel : '.' ͵ Function DosDecimalSeparator ͵[2.23.24] Funktionsname : DosDecimalSeparator Unit : DetectDos Teil : DOS Syntax : Function DosDecimalSeparator : Char; Zweck : Gibt den Dezimalzahlen-Trenner zurck. Beispiel : ',' ͵ Function DosDatalistSeparator ͵[2.23.25] Funktionsname : DosDatalistSeparator Unit : DetectDos Teil : DOS Syntax : Function DosDatalistSeparator : Char; Zweck : Gibt den Datenlisten-Trenner zurck. Beispiel : ',' ͵ Function DosDateFormat ͵[2.23.26] Funktionsname : DosDateFormat Unit : DetectDos Teil : DOS Syntax : Function DosDateFormat : String; Zweck : Gibt das aktuelle Datumsformat zurck. Beispiel : 'Europa (tt.mm.jj)' ͵ Function DosTimeFormat ͵[2.23.27] Funktionsname : DosTimeFormat Unit : DetectDos Teil : DOS Syntax : Function DosTimeFormat : String; Zweck : Gibt das aktuelle Zeit-Format zurck. Beispiel : '24 Stunden' ͵ Function DosTimeSeparator ͵[2.23.28] Funktionsname : DosTimeSeparator Unit : DetectDos Teil : DOS Syntax : Function DosTimeSeparator : Char; Zweck : Gibt den Zeit-Trenner zurck. Beispiel : ':' ͵ Function DosCurrencyFormat ͵[2.23.29] Funktionsname : DosCurrencyFormat Unit : DetectDos Teil : DOS Syntax : Function DosCurrencyFormat : String; Zweck : Gibt das aktuelle Waehrungsformat zurck. Beispiel : 'x.xxx,yy DM' ͵ Function DosCaseMapCallAddress ͵[2.23.30] Funktionsname : DosCaseMapCallAddress Unit : DetectDos Teil : DOS Syntax : Function DosCaseMapCallAddress : Pointer; Zweck : Gibt einen Zeiger auf die Case-Map Aufrufsadresse zurck. ͵ Function NumberHandleTables ͵[2.23.31.1] Funktionsname : NumberHandleTables Unit : DetectDos Teil : DOS/offene Files Syntax : Function NumberHandleTables : Byte; Zweck : Ermittelt die Anzahl der aktiven File-Handle-Tabellen. ͵ Function OpenHandlesTable ͵[2.23.31.2] Funktionsname : OpenHandlesTable Unit : DetectDos Teil : DOS/offene Files Syntax : Function OpenHandlesTable (Number : Byte) : Pointer; Zweck : Ermittelt die Adresse der angegebenen Tabelle. ͵ Function OpenHandleTableSize ͵[2.23.31.3] Funktionsname : OpenHandleTableSize Unit : DetectDos Teil : DOS/offene Files Syntax : Function OpenHandleTableSize (Number : Byte) : Byte; Zweck : Ermittelt die Gre der Tabelle in File-Handles ͵ Function UsedTableEntrys ͵[2.23.31.4] Funktionsname : UsedTableEntrys Unit : DetectDos Teil : DOS/offene Files Syntax : Function UsedTableEntrys (Number : Byte) : Byte; Zweck : Ermittelt die Anzahl der benutzten Eintrge (/offenen Files) in der angegebenen Tabelle. ͵ Function GetOpenFileStatus ͵[2.23.31.5] Funktionsname : GetOpenFileStatus Unit : DetectDos Teil : DOS/offene Files Syntax : Function GetOpenFileStatus (TableNumber, FileNumber : Byte) : pOpenInfo; Zweck : Ermittelt die Daten zu einem bestimmten Eintrage (/einer bestimmten Datei). Hierbei wird ein Pointer auf einen Info- Block zurckgegeben, der auf jeden Fall nach Benutzung wieder vom Heap entfernt werden sollte. Der Pointer ist in DetectGlobal wie folgt definiert : pOpenInfo = ^tOpenInfo; tOpenInfo = Record Name : String[20]; OpenMode : String[15]; SharingMode : String[20]; Inherit : Boolean; Attribut : Byte; { Bit 0 = nur-lesen 1 = versteckt 2 = system 3 = volume label 4 = Verzeichnis 5 = Archiv } Remote : Boolean; Date : String[12]; Time : String[12]; Size : LongInt; FileType : String; OwnerPSP : Word; End; ͵ Function Version4Dos ͵[2.24.1] Funktionsname : Version4Dos Unit : DetectSoftware Teil : 4Dos Syntax : Function Version4Dos : String; Zweck : Ermittelt die Version von 4Dos (falls inst.). Beispiel : '1.0' ͵ Function Shell4Dos ͵[2.24.2] Funktionsname : Shell4Dos Unit : DetectSoftware Teil : 4Dos Syntax : Function Shell4Dos : Byte; Zweck : Ermittelt die aktuelle Shell von 4Dos. ͵ Function PSPSegment4Dos ͵[2.24.3] Funktionsname : PSPSegment4Dos Unit : DetectSoftware Teil : 4Dos Syntax : Function PSPSegment4Dos : Word; Zweck : Ermittelt das PSP-Segment von 4Dos. ͵ Function VersionNDos ͵[2.25.1] Funktionsname : Version4Dos Unit : DetectSoftware Teil : NDos Syntax : Function VersionNDos : String; Zweck : Ermittelt die Version von NDos (falls inst.). Beispiel : '1.0' ͵ Function ShellNDos ͵[2.25.2] Funktionsname : ShellNDos Unit : DetectSoftware Teil : NDos Syntax : Function ShellNDos : Byte; Zweck : Ermittelt die aktuelle Shell von NDos. ͵ Function PSPSegmentNDos ͵[2.25.3] Funktionsname : PSPSegmentNDos Unit : DetectSoftware Teil : NDos Syntax : Function PSPSegmentNDos : Word; Zweck : Ermittelt das PSP-Segment von NDos. ͵ Function WhichChipset ͵[2.26.1] Funktionsname : WhichChipset Unit : DetectChipsets Teil : NDos Syntax : Function WhichChipset : Byte; ^^^^ kann einen der folgenden Werte annehmen (in DetectConstants definiert) : dchCyrix486dx = Cyrix 486DX (M7) Chipsatz dchCyrix486lc = Cyrix/TI 486SLC/DLC Chipsatz dchCyrix5_6x86 = Cyrix 5x86 (M1SC)/6x86 (M1) Chipsatz dchIntelTriton = Intel Triton Chipsatz dchIntelSaturn = Intel Saturn Chipsatz dchIntelMercury = Intel Mercury 82434LX Chipsatz dchIntelNeptun = Intel Neptun 82434NX Chipsatz dchIntelPCISet = Intel PCISet 82420EX Chipsatz dchIntelTXC = Intel TXC 82439HX Chipsatz dchUM82C481A = UMC 82C481A Chipsatz dchUM82C391A = UMC 82C391A Chipsatz dchUMC82C881 = UMC 82C881 Chipsatz dchUMC82C881HB4 = UMC 82C8881 HB4 PCI Chipsatz dchUMC82C891 = UMC 82C891 Pentium Chipsatz dchUMC82C8891 = UMC 82C8891 586 PCI Chipsatz dchSis501 = SiS 501/502/503 Chipsatz dchSis5511 = SiS 5511/5512 Chipsatz dchLSIHYDRA = LSI Logic HYDRA Chipsatz (MPI) dchLSIASPEN = LSI Logic ASPEN Chipsatz dchNexGenVL82C500 = NexGen VL82C500 Chipsatz dchAcerALIM1451 = Acer ALI M1451 Chipsatz dchAcerALIM1461 = Acer ALI M1461 Chipsatz dchIMSDiamond = IMS Diamond 5026/27/28 Chipsatz dchVIAApollo = VIA VT82C570MV Apollo Chipsatz dchUnknown = Unbekannter Chipsatz Zweck : Ermittelt den eingebauten Chipsatz. Bei den Cyrix-Chipstzen kann man die Registerdaten mit der Funktion GetCyrixReg aus- lesen. Bei der DX-Gruppe sind die Register CCR1, CCR2, CCR3, DIR0 und DIR1 vorhanden. Die LC-Gruppe enthlt nur CCR0, CCR1, DIR0 und DIR1. Die M1-Gruppe enthlt die Register CCR1, CCR2, CCR3, CCR4, CCR5, CR, CDR, DIR0 und DIR1. Alle diese Register kann man mit den Konstanten dre??? auslesen, wobei ??? fr einen Registernamen steht. Die genaue Aufschlsselung dieser Register habe ich noch nicht in die Unit implementiert, sie kann in den CTChipZ-CFG-Files, in der Opcode-List 49 und in der 4P Package nachgelesen werden. Bemerkung : Diese Funktion kann das System u.U. aufhngen. Besonders Multitasker mgen es nicht, wenn man solche Port's aus- liest (auch, wenn es oft mglich ist ...). ͵ Function Is386Max ͵[2.27.1.1] Funktionsname : Is386Max Unit : DetectSoftware Teil : 386^MAX Memory-Treiber Syntax : Function Is386Max : Boolean; Zweck : Ermittelt, ob 386^MAX installiert ist. ͵ Function _386MaxVersion ͵[2.27.1.2] Funktionsname : _386MaxVersion Unit : DetectSoftware Teil : 386^MAX Memory-Treiber Syntax : Function _386MaxVersion : String ; Zweck : Ermittelt die Version von 386^MAX. ͵ Function _386MaxSegment ͵[2.27.1.3] Funktionsname : _386MaxSegment Unit : DetectSoftware Teil : 386^MAX Memory-Treiber Syntax : Function _386MaxSegment : Word; Zweck : Ermittelt das Haupt-Segment von 386^MAX. ͵ Function _386MaxEMSActive ͵[2.27.1.4] Funktionsname : _386MaxEMSActive Unit : DetectSoftware Teil : 386^MAX Memory-Treiber Syntax : Function _386MaxEMSActive : Boolean; Zweck : Ermittelt, ob die EMS-Funktion von 386^MAX aktiviert ist. ͵ Function _386MaxWin3Supp ͵[2.27.1.5] Funktionsname : _386MaxWin3Supp Unit : DetectSoftware Teil : 386^MAX Memory-Treiber Syntax : Function _386MaxWin3Supp : Boolean; Zweck : Ermittelt, ob 386^MAX einen speziellen Support fr Windows 3^ hat. ͵ Function IsMICEMM ͵[2.27.2.1] Funktionsname : IsMICEMM Unit : DetectSoftware Teil : MICEMM Memory-Treiber Syntax : Function IsMICEMM : Boolean; Zweck : Ermittelt, ob der MICEMM EMS-Treiber geladen ist. ͵ Function MICEMMCS ͵[2.27.2.2] Funktionsname : MICEMMCS Unit : DetectSoftware Teil : MICEMM Memory-Treiber Syntax : Function MICEMMCS : Word; Zweck : Ermittelt, welches Code-Segment der MICEMM-Treiber hat. ͵ Function IsEmm386 ͵[2.27.3.1] Funktionsname : IsEmm386 Unit : DetectSoftware Teil : EMM386 Memory-Treiber Syntax : Function IsEmm386 : Boolean; Zweck : Ermittelt, ob der EMM386 Memory Treiber geladen ist. ͵ Function Emm386Api ͵[2.27.3.2] Funktionsname : Emm386Api Unit : DetectSoftware Teil : EMM386 Memory-Treiber Syntax : Function Emm386Api : Pointer; Zweck : Ermittelt den API-Entry-Point von EMM386. ͵ Function Emm386Status ͵[2.27.3.3] Funktionsname : Emm386Status Unit : DetectSoftware Teil : EMM386 Memory-Treiber Syntax : Function Emm386Status : String; Zweck : Ermittelt den Status des EMM386-Drivers. Beispiel : 'inaktiv' ͵ Function Emm386Weitek ͵[2.27.3.4] Funktionsname : Emm386Weitek Unit : DetectSoftware Teil : EMM386 Memory-Treiber Syntax : Function Emm386Weitek : String; Zweck : Ermittelt den Weitek-Status, falls vorhanden. Beispiel : 'vorhanden' ͵ Function IsQEMM ͵[2.27.4.1] Funktionsname : IsQEMM Unit : DetectSoftware Teil : Quarterdeck QEMM Memory Driver Syntax : Function IsQEMM : Boolean; Zweck : Ermittelt, ob QEMM installiert ist. ͵ Function QEMMApi ͵[2.27.4.2] Funktionsname : QEMMApi Unit : DetectSoftware Teil : Quarterdeck QEMM Memory Driver Syntax : Function QEMMApi : Pointer; Zweck : Ermittelt den API-Entry-Point von QEMM, falls installiert. ͵ Function QEMMVersion ͵[2.27.4.3] Funktionsname : QEMMVersion Unit : DetectSoftware Teil : Quarterdeck QEMM Memory Driver Syntax : Function QEMMVersion : String; Zweck : Ermittelt die Version von QEMM. Ab Version 4.23 sind auch Memory-Statistiken, -Spezifizierzungen und -Zustnde mit weiter unten beschriebenen Funktionen auslesbar. Beispiel : '4.52' ͵ Function QEMMStatus ͵[2.27.4.4] Funktionsname : QEMMStatus Unit : DetectSoftware Teil : Quarterdeck QEMM Memory Driver Syntax : Function QEMMStatus : String; Zweck : Ermittelt den Status des QEMM-Treibers. Beispiel : 'Auto' ͵ Function QEMMIsHiRam ͵[2.27.4.5] Funktionsname : QEMMIsHiRam Unit : DetectSoftware Teil : Quarterdeck QEMM Memory Driver Syntax : Function QEMMIsHiRam : Boolean; Zweck : Ermittelt, ob Hi-Ram verfgbar ist. Wenn ja, kann auch der erste MCB ermittelt werden (weiter unten beschrieben). ͵ Function QEMMHiRamMCB ͵[2.27.4.6] Funktionsname : QEMMHiRamMCB Unit : DetectSoftware Teil : Quarterdeck QEMM Memory Driver Syntax : Function QEMMHiRamMCB : Pointer; Zweck : Ermittelt den Zeiger auf den ersten MCB des Hi-Ram. ͵ Function QEMMStealthStatus ͵[2.27.4.7] Funktionsname : QEMMStealthStatus Unit : DetectSoftware Teil : Quarterdeck QEMM Memory Driver Syntax : Function QEMMStealthStatus : String; Zweck : Ermittelt denn Status des Stealth-Memory (Aus/Frame/Map). Beispiel : 'Frame' ͵ Function QEMMStealthRom ͵[2.27.4.8] Funktionsname : QEMMStealthRom Unit : DetectSoftware Teil : Quarterdeck QEMM Memory Driver Syntax : Function QEMMStealthRom : Word; Zweck : Ermittelt die Anzahl der Stealth Rom's. ͵ Function IsQManifest ͵[2.27.4.9] Funktionsname : IsQManifest Unit : DetectSoftware Teil : Quarterdeck QEMM Memory Driver/Utilities Syntax : Function IsQManifest : Boolean; Zweck : Ermittelt, ob Quarterdeck's Manifest installiert ist. ͵ Function IsQVidRam ͵[2.27.4.10] Funktionsname : IsQVidRam Unit : DetectSoftware Teil : Quarterdeck QEMM Memory Driver/Utilities Syntax : Function IsQVidRam : Boolean; Zweck : Ermittelt, ob Quarterdeck's VidRam installiert ist. ͵ Function VidRamCS ͵[2.27.4.11] Funktionsname : VidRamCS Unit : DetectSoftware Teil : Quarterdeck QEMM Memory Driver/Utilities Syntax : Function VidRamCS : Word; Zweck : Ermittelt das Code-Segment von Quarterdeck's VidRam, falls installiert. ͵ Function QEMMInitConv ͵[2.27.4.12.1.1] Funktionsname : QEMMInitConv Unit : DetectSoftware Teil : Quarterdeck QEMM Memory Driver/Memory Statistiken Syntax : Function QEMMInitConv : LongInt; Zweck : Ermittelt die Gre des Conventional Memory, wie es in den 'Initital Settings' angegeben ist. ͵ Function QEMMInitExt ͵[2.27.4.12.1.2] Funktionsname : QEMMInitExt Unit : DetectSoftware Teil : Quarterdeck QEMM Memory Driver/Memory Statistiken Syntax : Function QEMMInitExt : LongInt; Zweck : Ermittelt die Gre des Extended Memory, wie es in den 'Initital Settings' angegeben ist. ͵ Function QEMMInitExp ͵[2.27.4.12.1.3] Funktionsname : QEMMInitExp Unit : DetectSoftware Teil : Quarterdeck QEMM Memory Driver/Memory Statistiken Syntax : Function QEMMInitExp : LongInt; Zweck : Ermittelt die Gre des Expanded Memory, wie es in den 'Initital Settings' angegeben ist. ͵ Function QEMMInitExtra ͵[2.27.4.12.1.4] Funktionsname : QEMMInitExtra Unit : DetectSoftware Teil : Quarterdeck QEMM Memory Driver/Memory Statistiken Syntax : Function QEMMInitExtra : LongInt; Zweck : Ermittelt die Gre des Extra Memory, wie es in den 'Initital Settings' angegeben ist. ͵ Function QEMMInitTotal ͵[2.27.4.12.1.5] Funktionsname : QEMMInitTotal Unit : DetectSoftware Teil : Quarterdeck QEMM Memory Driver/Memory Statistiken Syntax : Function QEMMInitTotal : LongInt; Zweck : Ermittelt die Gre des gesamten Memory bei der Initialisierung. ͵ Function QEMMCurrConv ͵[2.27.4.12.2.1] Funktionsname : QEMMCurrConv Unit : DetectSoftware Teil : Quarterdeck QEMM Memory Driver/Memory Statistiken Syntax : Function QEMMCurrConv : LongInt; Zweck : Ermittelt die aktuelle Gre des Conventional Memory ͵ Function QEMMCurrExt ͵[2.27.4.12.2.2] Funktionsname : QEMMCurrExt Unit : DetectSoftware Teil : Quarterdeck QEMM Memory Driver/Memory Statistiken Syntax : Function QEMMCurrExt : LongInt; Zweck : Ermittelt die aktuelle Gre des Extended Memory. ͵ Function QEMMCurrEMSXMS ͵[2.27.4.12.2.3] Funktionsname : QEMMCurrEMSXMS Unit : DetectSoftware Teil : Quarterdeck QEMM Memory Driver/Memory Statistiken Syntax : Function QEMMCurrEMSXMS : LongInt; Zweck : Ermittelt die Gre des EMS/XMS Pools. ͵ Function QEMMCurrHiRam ͵[2.27.4.12.2.4] Funktionsname : QEMMCurrHiRam Unit : DetectSoftware Teil : Quarterdeck QEMM Memory Driver/Memory Statistiken Syntax : Function QEMMCurrHiRam : LongInt; Zweck : Ermittelt die aktuelle Gre des Hi-Ram, falls vorhanden. ͵ Function QEMMCurrMapped ͵[2.27.4.12.2.5] Funktionsname : QEMMCurrMapped Unit : DetectSoftware Teil : Quarterdeck QEMM Memory Driver/Memory Statistiken Syntax : Function QEMMCurrMapped : LongInt; Zweck : Ermittelt die aktuelle Gre der Mapped ROM's. ͵ Function QEMMCurrDMAB ͵[2.27.4.12.2.6] Funktionsname : QEMMCurrDMAB Unit : DetectSoftware Teil : Quarterdeck QEMM Memory Driver/Memory Statistiken Syntax : Function QEMMCurrDMAB : LongInt; Zweck : Ermittelt die aktuelle Gre des DMA-Buffers. ͵ Function QEMMCurrDMATasks ͵[2.27.4.12.2.7] Funktionsname : QEMMCurrDMATasks Unit : DetectSoftware Teil : Quarterdeck QEMM Memory Driver/Memory Statistiken Syntax : Function QEMMCurrDMATasks : LongInt; Zweck : Ermittelt die aktuelle Anzahl der DMA-Tasks. ͵ Function QEMMCurrDMAMap ͵[2.27.4.12.2.8] Funktionsname : QEMMCurrDMAMap Unit : DetectSoftware Teil : Quarterdeck QEMM Memory Driver/Memory Statistiken Syntax : Function QEMMCurrDMAMap : LongInt; Zweck : Ermittelt die aktuelle Anzahl der DMA-Maps. ͵ Function QEMMCurrCode ͵[2.27.4.12.2.9] Funktionsname : QEMMCurrCode Unit : DetectSoftware Teil : Quarterdeck QEMM Memory Driver/Memory Statistiken Syntax : Function QEMMCurrCode : LongInt; Zweck : Ermittelt die Gre des QEMM-Code's. ͵ Function QEMMCurrData ͵[2.27.4.12.2.10] Funktionsname : QEMMCurrData Unit : DetectSoftware Teil : Quarterdeck QEMM Memory Driver/Memory Statistiken Syntax : Function QEMMCurrData : LongInt; Zweck : Ermittelt die aktuelle Gre der QEMM-Daten. ͵ Function QEMMCurrTotal ͵[2.27.4.12.2.11] Funktionsname : QEMMCurrTotal Unit : DetectSoftware Teil : Quarterdeck QEMM Memory Driver/Memory Statistiken Syntax : Function QEMMCurrTotal : LongInt; Zweck : Ermittelt, wieviel Memory insgesamt verbraucht wird. ͵ Function QEMMUnAvailConv ͵[2.27.4.12.3.1] Funktionsname : QEMMUnAvailConv Unit : DetectSoftware Teil : Quarterdeck QEMM Memory Driver/Memory Statistiken Syntax : Function QEMMUnAvailConv : LongInt; Zweck : Ermittelt die Gre des nicht verfgbaren Conventional Memory. ͵ Function QEMMUnAvailExt ͵[2.27.4.12.3.2] Funktionsname : QEMMUnAvailExt Unit : DetectSoftware Teil : Quarterdeck QEMM Memory Driver/Memory Statistiken Syntax : Function QEMMUnAvailExt : LongInt; Zweck : Ermittelt die Gre des nicht verfgbaren Extended Memory. ͵ Function QEMMUnAvailExp ͵[2.27.4.12.3.3] Funktionsname : QEMMUnAvailExp Unit : DetectSoftware Teil : Quarterdeck QEMM Memory Driver/Memory Statistiken Syntax : Function QEMMUnAvailExp : LongInt; Zweck : Ermittelt die Gre des nicht verfgbaren Expanded Memory. ͵ Function QEMMUnAvailShdwTop ͵[2.27.4.12.3.4] Funktionsname : QEMMUnAvailShdwTop Unit : DetectSoftware Teil : Quarterdeck QEMM Memory Driver/Memory Statistiken Syntax : Function QEMMUnAvailShdwTop : LongInt; Zweck : Ermittelt die Gre des nicht verfgbaren Shadow- bzw. Top-Memory. ͵ Function QEMMMemType ͵[2.27.4.13] Funktionsname : QEMMMemType Unit : DetectSoftware Teil : Quarterdeck QEMM Memory Driver Syntax : Function QEMMMemType (Adr : Byte) : String; Zweck : Ermittelt den Memory-Typ im ersten MB des Speichers an der angegebenen Pseudo-Adresse. Die Pseudo Adresse ist leicht aufgebaut. Alle 256 Pages fngt ein neuer Abschnitt an. Wenn man beispielsweise herausfinden mchte, was fr ein Memory-Typ bei FF00:0000 - FFFF:FFFF steht, mu die Pseudo Adresse 255 lauten (es wird ab 0 gezhlt). Es werden folgende Memory-Typen zurckgegeben : - m = mappable RAM - M = mapped ROM - H = Hi-RAM - X = excluded - V = Video - R = ROM - A = Adapter ROM - s = split ROM - F = EMS Page Frame - r = RAMable - C = Conventional ͵ Function QEMMAccess ͵[2.27.4.14] Funktionsname : QEMMAccess Unit : DetectSoftware Teil : Quarterdeck QEMM Memory Driver Syntax : Function QEMMAccess (Adr : Byte) : String; Zweck : Ermittelt, ob auf den RAM an der Pseudo-Adresse bereits zugegriffen wurde, und wenn ja, wie. Die Pseudo Adresse ist leicht aufgebaut. Alle 256 Pages fngt ein neuer Abschnitt an. Wenn man beispielsweise herausfinden mchte, ob bei FF00:0000 - FFFF:FFFF schon eine Aktion stattgefunden hat, mu die Pseudo Adresse 255 lauten (es wird ab 0 gezhlt). Es werden folgende Zeichen als Info's zurckgegeben : - - nicht benutzt - + Gelesen - * Geschrieben - ! Geschrieben und Gelesen ͵ Function QEMMStealth ͵[2.27.4.15] Funktionsname : QEMMStealth Unit : DetectSoftware Teil : Quarterdeck QEMM Memory Driver Syntax : Function QEMMStealth (Adr : Byte) : String; Zweck : Ermittelt, ob sich an der Angegebenen Adresse Stealth-Ram befindet. Die Pseudo Adresse ist leicht aufgebaut. Alle 256 Pages fngt ein neuer Abschnitt an. Wenn man beispielsweise herausfinden mchte, ob sich bei FF00:0000 - FFFF:FFFF Stealth-RAM befindet, mu die Pseudo Adresse 255 lauten (es wird ab 0 gezhlt). Es wird ein S zurckgegeben, wenn Stealth-RAM vorhanden ist, ein Blank-Zeichen, wenn nicht. ͵ Function TaskMaxVersion ͵[2.28.1] Funktionsname : TaskMaxVersion Unit : DetectSoftware Teil : Dr Dos Task Max Syntax : Function TaskMaxVersion : Word; Zweck : Ermittelt die Version von Dr Dos Task Max. Beispiel : '1.0' ͵ Function TaskMaxMaxTasks ͵[2.28.2] Funktionsname : TaskMaxMaxTasks Unit : DetectSoftware Teil : Dr Dos Task Max Syntax : Function TaskMaxMaxTasks : Word; Zweck : Ermittelt die maximale Anzahl von Tasks in Dr Dos Task Max. ͵ Function TaskMaxActTasks ͵[2.28.3] Funktionsname : TaskMaxActTasks Unit : DetectSoftware Teil : Dr Dos Task Max Syntax : Function TaskMaxActTasks : Word; Zweck : Ermittelt die Anzahl der aktuell aktiven Tasks in Dr Dos Task Max. ͵ Function IsTBScanX ͵[2.29.1] Funktionsname : IsTBScanX Unit : DetectSoftware Teil : Thunder Byte Anti Virus Scan X Syntax : Function IsTBScanX : Boolean; Zweck : Ermittelt, ob TBAV Scan X im Speicher aktiv ist. ͵ Function TBScanXVersion ͵[2.29.2] Funktionsname : TBScanXVersion Unit : DetectSoftware Teil : Thunder Byte Anti Virus Scan X Syntax : Function TBScanXVersion : String; Zweck : Ermittelt die Version von TBAV Scan X. Beispiel : '6.53' ͵ Function TBScanXStatus ͵[2.29.3] Funktionsname : TBScanXStatus Unit : DetectSoftware Teil : Thunder Byte Anti Virus Scan X Syntax : Function TBScanXStatus : String; Zweck : Ermittelt den Status von TBAV Scan X. Beispiel : 'aktiv' ͵ Function N_CacheStatus ͵[2.30.1.1] Funktionsname : N_CacheStatus Unit : DetectSoftware Teil : Norton Utilities N-Cache Syntax : Function N_CacheStatus : String; Zweck : Ermittelt den Status von N-Cache-F, N-Cache-S oder N-Cache v6.0+. Beispiel : 'aktiv' ͵ Function N_DiskReetStatus ͵[2.30.2.1] Funktionsname : N_DiskReetStatus Unit : DetectSoftware Teil : Norton Utilities Disk-Reet Syntax : Function N_DiskReetStatus : String; Zweck : Ermittelt den Status von Norton Disk-Reet. Beispiel : 'aktiv' ͵ Function N_DiskReetRes ͵[2.30.2.2] Funktionsname : N_DiskReetRes Unit : DetectSoftware Teil : Norton Utilities Disk-Reet Syntax : Function N_DiskReetRes : Word; Zweck : Ermittelt das Segment, in dem Disk-Reet resident ist. ͵ Function N_DiskMonStatus ͵[2.30.3.1] Funktionsname : N_DiskMonStatus Unit : DetectSoftware Teil : Norton Utilities Disk Monitor Syntax : Function N_DiskMonStatus : String; Zweck : Ermittelt den Status von Norton Disk Monitor. Beispiel : 'aktiv' ͵ Function N_DiskMonRes ͵[2.30.3.2] Funktionsname : N_DiskMonRes Unit : DetectSoftware Teil : Norton Utilities Disk Monitor Syntax : Function N_DiskMonRes : Word; Zweck : Ermittelt das Segment, in dem der Norton Disk Monitor resident ist. ͵ Function N_FileSavRes ͵[2.30.4.1] Funktionsname : N_FileSavRes Unit : DetectSoftware Teil : Norton Utilities FileSave Syntax : Function N_FileSavRes : Word; Zweck : Ermittelt das Segment, in dem FileSave resident ist. ͵ Function IsIBMCache ͵[2.31.1] Funktionsname : IsIBMCache Unit : DetectSoftware Teil : IBMCache.SYS Syntax : Function IsIBMCache : Boolean; Zweck : Ermittelt, ob IBMCACHE.SYS im Speicher resident ist. ͵ Function IBMCTotalRRequests ͵[2.31.2] Funktionsname : IBMCTotalRRequests Unit : DetectSoftware Teil : IBMCache.SYS Syntax : Function IBMCTotalRRequests (Drive : Char) : LongInt; Zweck : Ermittelt, wie oft bereits Daten von der Festplatte (/Diskette/...) gelesen werden sollten. ͵ Function IBMCTotalHits ͵[2.31.3] Funktionsname : IBMCTotalHits Unit : DetectSoftware Teil : IBMCache.SYS Syntax : Function IBMCTotalHits (Drive : Char) : LongInt; Zweck : Ermittelt die Anzahl der Treffer, die der Cache bereits gelandet hat. ͵ Function IBMCPhysicalDReads ͵[2.31.4] Funktionsname : IBMCPhysicalDReads Unit : DetectSoftware Teil : IBMCache.SYS Syntax : Function IBMCPhysicalDReads (Drive : Char) : LongInt; Zweck : Ermittelt die Anzahl der Diskzugriffe, die tatschlich gettigt wurden. ͵ Function IBMCTotalSecReqDR ͵[2.31.5] Funktionsname : IBMCTotalSecReqDR Unit : DetectSoftware Teil : IBMCache.SYS Syntax : Function IBMCTotalSecReqDR (Drive : Char) : LongInt; Zweck : Ermittelt wieviele Sektoren eigentlich von der Platte gelesen werden sollten (vgl. IBMCPhysicalDReads). ͵ Function IBMCIsExtUsed ͵[2.31.6] Funktionsname : IBMCIsExtUsed Unit : DetectSoftware Teil : IBMCache.SYS Syntax : Function IBMCIsExtUsed : Boolean; Zweck : Ermittelt, ob Extended Memory zur Zwischenspeicherung der Daten benutzt wird. ͵ Function IBMCVersion ͵[2.31.7] Funktionsname : IBMCVersion Unit : DetectSoftware Teil : IBMCache.SYS Syntax : Function IBMCVersion : String; Zweck : Ermittelt die Version von IBMCache. Beispiel : '1.0' ͵ Function IBMCSize ͵[2.31.8] Funktionsname : IBMCSize Unit : DetectSoftware Teil : IBMCache.SYS Syntax : Function IBMCSize : Word; Zweck : Ermittelt die Gre des Cache in KB. ͵ Function IBMCSectorsPage ͵[2.31.9] Funktionsname : IBMCSectorsPage Unit : DetectSoftware Teil : IBMCache.SYS Syntax : Function IBMCSectorsPage : Word; Zweck : Ermittelt die Anzahl der Sektoren pro Speicherseite. ͵ Function CompaqAdaptVersion ͵[2.32.1] Funktionsname : CompaqAdaptVersion Unit : DetectSoftware Teil : Compaq's ADAPT.COM Syntax : Function CompaqAdaptVersion : String; Zweck : Ermittelt die Version von Compaq's ADAPT.COM, sofern dieses Utility installiert ist. Beispiel : '1.0' Bemerkung : Siehe auch IsInstalled. ͵ Function IsPcAnywhere ͵[2.33.1] Funktionsname : IsPcAnywhere Unit : DetectSoftware Teil : PC Anywhere Syntax : Function IsPcAnywhere : Boolean; Zweck : Ermittelt, ob der PC Anywhere Driver installiert ist. ͵ Function PcAnywhereStatus ͵[2.33.2] Funktionsname : PcAnywhereStatus Unit : DetectSoftware Teil : PC Anywhere Syntax : Function PcAnywhereStatus : String; Zweck : Ermittelt den aktuellen Status von PC Anywhere. Beispiel : 'Resident und nicht aktiv' ͵ Function PcAnywherePort ͵[2.33.3] Funktionsname : PcAnywherePort Unit : DetectSoftware Teil : PC Anywhere Syntax : Function PcAnywherePort : Byte; Zweck : Ermittelt den PC Anywhere Port. ͵ Function PcAnywhereBaud ͵[2.33.4] Funktionsname : PcAnywhereBaud Unit : DetectSoftware Teil : PC Anywhere Syntax : Function PcAnywhereBaud : Word; Zweck : Ermittelt die Baudrate von PC Anywhere. ͵ Function IsPCAnyWhereIV ͵[2.33.5] Funktionsname : IsPCAnyWhereIV Unit : DetectSoftware Teil : PC Anywhere IV Syntax : Function IsPCAnyWhereIV : Boolean; Zweck : Ermittelt, ob PC Anywhere IV im Speicher aktiv ist. ͵ Function PCAnyWhereIVApi ͵[2.33.6] Funktionsname : PCAnyWhereIVApi Unit : DetectSoftware Teil : PC Anywhere IV Syntax : Function PCAnyWhereIVApi : Pointer; Zweck : Ermittelt den API-Entry-Point von PC Anywhere IV ͵ Function PCAnyWhereIVVer ͵[2.33.7] Funktionsname : PCAnyWhereIVVer Unit : DetectSoftware Teil : PC Anywhere IV Syntax : Function PCAnyWhereIVVer : String; Zweck : Ermittelt die Version von PC Anywhere IV, falls installiert. ͵ Function PCAnyWhereIVStat ͵[2.33.8] Funktionsname : PCAnyWhereIVStat Unit : DetectSoftware Teil : PC Anywhere IV Syntax : Function PCAnyWhereIVStat : String; Zweck : Gibt den Status von PC Anywhere IV zurck, falls installiert. ͵ Function IsDiskSpoolII ͵[2.34.1] Funktionsname : IsDiskSpoolII Unit : DetectSoftware Teil : Disk Spool II Syntax : Function IsDiskSpoolII : Boolean; Zweck : Ermittelt, ob Disk Spool II installiert ist. ͵ Function DiskSpoolSegment ͵[2.34.2] Funktionsname : DiskSpoolSegment Unit : DetectSoftware Teil : Disk Spool II Syntax : Function DiskSpoolSegment : Word; Zweck : Ermittelt das Segment von Disk Spool II. ͵ Function DiskSpoolSpoolSt ͵[2.34.3] Funktionsname : DiskSpoolSpoolSt Unit : DetectSoftware Teil : Disk Spool II Syntax : Function DiskSpoolSpoolSt : String; Zweck : Ermittelt den Status des Disk Spool II Spoolers. Beispiel : 'aktiv, File : TEST.TXT' ͵ Function DiskSpoolDeSpSt ͵[2.34.4] Funktionsname : DiskSpoolDeSpSt Unit : DetectSoftware Teil : Disk Spool II Syntax : Function DiskSpoolDeSpSt : String; Zweck : Ermittelt den Status des Disk Spool II Despoolers. Beispiel : 'aktiv und am Drucken, File : TEST.TXT' ͵ Function IsDesqView ͵[2.35.1] Funktionsname : IsDesqView Unit : DetectSoftware Teil : Borland's DesqView Syntax : Function IsDesqView : Boolean; Zweck : Ermittelt, ob DesqView im Hintergrund aktiv ist. ͵ Function DesqViewVersion ͵[2.35.2] Funktionsname : DesqViewVersion Unit : DetectSoftware Teil : Borland's DesqView Syntax : Function DesqViewVersion : String; Zweck : Ermittelt die Version von DesqView. Beispiel : '1.0' ͵ Function DesqViewWnNo ͵[2.35.3] Funktionsname : DesqViewWnNo Unit : DetectSoftware Teil : Borland's DesqView Syntax : Function DesqViewWnNo : Byte; Zweck : Ermittelt die aktuelle Fensternummer in DesqView. ͵ Function DesqViewTrueVid ͵[2.35.4] Funktionsname : DesqViewTrueVid Unit : DetectSoftware Teil : Borland's DesqView Syntax : Function DesqViewTrueVid : Byte; Zweck : Ermittelt die wahre Video-Mode, nicht die dem Programm ber- gebene. ͵ Function DesqViewWidth ͵[2.35.5] Funktionsname : DesqViewWidth Unit : DetectSoftware Teil : Borland's DesqView Syntax : Function DesqViewWidth : Byte; Zweck : Ermittelt die Originale Screen-Breite. ͵ Function DesqViewHeight ͵[2.35.6] Funktionsname : DesqViewHeight Unit : DetectSoftware Teil : Borland's DesqView Syntax : Function DesqViewHeight : Byte; Zweck : Ermittelt die Originale Screen-Hhe. ͵ Function DesqViewCoMemAvail ͵[2.35.7] Funktionsname : DesqViewCoMemAvail Unit : DetectSoftware Teil : Borland's DesqView Syntax : Function DesqViewCoMemAvail : Word; Zweck : Ermittelt die verfgbare Gre des "Common Access Memory". ͵ Function DesqViewCoMemLarge ͵[2.35.8] Funktionsname : DesqViewCoMemLarge Unit : DetectSoftware Teil : Borland's DesqView Syntax : Function DesqViewCoMemLarge : Word; Zweck : Ermittelt den Grten verfgbaren Block des "Common Access Memory". ͵ Function DesqViewCoMemTotal ͵[2.35.9] Funktionsname : DesqViewCoMemTotal Unit : DetectSoftware Teil : Borland's DesqView Syntax : Function DesqViewCoMemTotal : Word; Zweck : Ermittelt den Gre des "Common Access Memory". ͵ Function DesqViewCnMemAvail ͵[2.35.10] Funktionsname : DesqViewCnMemAvail Unit : DetectSoftware Teil : Borland's DesqView Syntax : Function DesqViewCnMemAvail : Word; Zweck : Ermittelt die verfgbare Gre des "Conventional Memory". ͵ Function DesqViewCnMemLarge ͵[2.35.11] Funktionsname : DesqViewCnMemLarge Unit : DetectSoftware Teil : Borland's DesqView Syntax : Function DesqViewCnMemLarge : Word; Zweck : Ermittelt den Grten verfgbaren Block des "Conventional Memory". ͵ Function DesqViewCnMemTotal ͵[2.35.12] Funktionsname : DesqViewCnMemTotal Unit : DetectSoftware Teil : Borland's DesqView Syntax : Function DesqViewCnMemTotal : Word; Zweck : Ermittelt den Gre des "Conventional Memory". ͵ Function DesqViewExMemAvail ͵[2.35.13] Funktionsname : DesqViewExMemAvail Unit : DetectSoftware Teil : Borland's DesqView Syntax : Function DesqViewExMemAvail : Word; Zweck : Ermittelt die verfgbare Gre des "Expanded Memory". ͵ Function DesqViewExMemLarge ͵[2.35.14] Funktionsname : DesqViewExMemLarge Unit : DetectSoftware Teil : Borland's DesqView Syntax : Function DesqViewExMemLarge : Word; Zweck : Ermittelt den Grten verfgbaren Block des "Expanded Memory". ͵ Function DesqViewExMemTotal ͵[2.35.15] Funktionsname : DesqViewExMemTotal Unit : DetectSoftware Teil : Borland's DesqView Syntax : Function DesqViewExMemTotal : Word; Zweck : Ermittelt den Gre des "Expanded Memory". ͵ Function IsWindows ͵[2.36.1] Funktionsname : IsWindows Unit : DetectSoftware Teil : Microsoft Windows Syntax : Function IsWindows : Boolean; Zweck : Ermittelt, ob Windows sich im Speicher befindet. ͵ Function WindowsMode ͵[2.36.2] Funktionsname : WindowsMode Unit : DetectSoftware Teil : Microsoft Windows Syntax : Function WindowsMode : Byte; ^^^^ kann einen der folgenden Werte annehmen : dwiNothing = Kein Windows dwi386_2_X = WIN/386 2.X dwi3_0_Real_Standard = WIN Real oder Standard Mode 3.0, Standard Mode 3.1 dwiEnhanced = WIN/386 erweitert (Extra Info's) Zweck : Ermittelt den geladenen Windows Typ. ͵ Function WinEnhVersion ͵[2.36.3] Funktionsname : WinEnhVersion Unit : DetectSoftware Teil : Microsoft Windows/386 Enhanced Syntax : Function WinEnhVersion : String; Zweck : Ermittelt die Version von Windows. Beispiel : '4.0' ͵ Function WinEnhVirtMashID ͵[2.36.4] Funktionsname : WinEnhVirtMashID Unit : DetectSoftware Teil : Microsoft Windows/386 Enhanced Syntax : Function WinEnhVirtMashID : Word; Zweck : Ermittelt die Virtual Mashine Id. ͵ Function WinEnhOldAp ͵[2.36.5] Funktionsname : WinEnhOldAp Unit : DetectSoftware Teil : Microsoft Windows/386 Enhanced Syntax : Function WinEnhOldAp : Boolean; Zweck : Ermittelt, ob Windows den OLD Application Support hat. ͵ Function WinEnhOldApVer ͵[2.36.6] Funktionsname : WinEnhOldApVer Unit : DetectSoftware Teil : Microsoft Windows/386 Enhanced Syntax : Function WinEnhOldApVer : String; Zweck : Ermittelt, welche Version der Old Application Support vor- weisen kann. Beispiel : '3.1' ͵ Function WinEnhDriverVer ͵[2.36.7] Funktionsname : WinEnhDriverVer Unit : DetectSoftware Teil : Microsoft Windows/386 Enhanced Syntax : Function WinEnhDriverVer : String; Zweck : Ermittelt die Driver-Version von Windows. Beispiel : '1.67' ͵ Function WinEnhDeviceType ͵[2.36.8] Funktionsname : WinEnhDeviceType Unit : DetectSoftware Teil : Microsoft Windows/386 Enhanced Syntax : Function WinEnhDeviceType : String; Zweck : Ermittelt den Device-Typ der Ausgabe von Windows. ͵ Function WinEnhPixelWidth ͵[2.36.9] Funktionsname : WinEnhPixelWidth Unit : DetectSoftware Teil : Microsoft Windows/386 Enhanced Syntax : Function WinEnhPixelWidth : Word; Zweck : Ermittelt die wahre Breite des Bildschirms. ͵ Function WinEnhPixelHeight ͵[2.36.10] Funktionsname : WinEnhPixelHeight Unit : DetectSoftware Teil : Microsoft Windows/386 Enhanced Syntax : Function WinEnhPixelHeight : Word; Zweck : Ermittelt die wahre Hhe des Bildschirms. ͵ Function ͵[2.36.11] Funktionsname : WinEnhColors Unit : DetectSoftware Teil : Microsoft Windows/386 Enhanced Syntax : Function WinEnhColors : Word; Zweck : Ermittelt die Anzahl der Farben unter Windows. ͵ Function ͵[2.36.12] Funktionsname : WinEnhBits_Pixel Unit : DetectSoftware Teil : Microsoft Windows/386 Enhanced Syntax : Function WinEnhBits_Pixel : Word; Zweck : Ermittelt die Bits pro Pixel unter Windows. ͵ Function WinEnhBit_Planes ͵[2.36.13] Funktionsname : WinEnhBit_Planes Unit : DetectSoftware Teil : Microsoft Windows/386 Enhanced Syntax : Function WinEnhBit_Planes : Word; Zweck : Ermittelt die Anzahl der Bit-Planes. ͵ Function WinEnhXAspect ͵[2.36.14] Funktionsname : WinEnhXAspect Unit : DetectSoftware Teil : Microsoft Windows/386 Enhanced Syntax : Function WinEnhXAspect : Word; Zweck : Ermittelt den X Aspect Ratio unter Windows. ͵ Function WinEnhYAspect ͵[2.36.15] Funktionsname : WinEnhYAspect Unit : DetectSoftware Teil : Microsoft Windows/386 Enhanced Syntax : Function WinEnhYAspect : Word; Zweck : Ermittelt den Y Aspect Ratio unter Windows. ͵ Function WinEnhBrushes ͵[2.36.16] Funktionsname : WinEnhBrushes Unit : DetectSoftware Teil : Microsoft Windows/386 Enhanced Syntax : Function WinEnhBrushes : Word; Zweck : Ermittelt die Anzahl der Brushes unter Windows. ͵ Function WinEnhPens ͵[2.36.17] Funktionsname : WinEnhPens Unit : DetectSoftware Teil : Microsoft Windows/386 Enhanced Syntax : Function WinEnhPens : Word; Zweck : Ermittelt die Anzahl der Pens unter Windows. ͵ Function WinEnhMarkers ͵[2.36.18] Funktionsname : WinEnhMarkers Unit : DetectSoftware Teil : Microsoft Windows/386 Enhanced Syntax : Function WinEnhMarkers : Word; Zweck : Ermittelt die Anzahl der Marker unter Windows. ͵ Function WinEnhFonts ͵[2.36.19] Funktionsname : WinEnhFonts Unit : DetectSoftware Teil : Microsoft Windows/386 Enhanced Syntax : Function WinEnhFonts : Word; Zweck : Ermittelt die Anzahl der Fonts unter Windows. ͵ Function IsSmartDrive ͵[2.37.1.1] Funktionsname : IsSmartDrive Unit : DetectSoftware Teil : SmartDrive Syntax : Function IsSmartDrive : Byte; ^^^^ kann einen der folgenden Werte annehmen : dsmNo = kein Smartdrive installiert dsmDevice = Device-Typ SmartDrive installiert dsmIOCTL = IOCTL-Typ SmartDrive installiert dsmIOCTLNSupport = Vielleicht, kein IOCTL Support dsmIOCTLReadError = Vielleicht, IOCTL Lesefehler Zweck : Ermittelt, ob und wenn welcher Typ von SmartDrive installiert ist. Extra-Infos sind nur bei den Rckgabevariablen dsmDevice und dsmIOCTL mglich, hierfr gibt es eigene Funktionen (weiter unten). ͵ Function ͵[2.37.1.2] Funktionsname : SMDeviceVer Unit : DetectSoftware Teil : SmartDrive/Device Syntax : Function SMDeviceVer : String; Zweck : Ermittelt die Version von SmartDrive. Beispiel : '1.00' ͵ Function SMDeviceSizeNow ͵[2.37.1.3] Funktionsname : SMDeviceSizeNow Unit : DetectSoftware Teil : SmartDrive/Device Syntax : Function SMDeviceSizeNow : Word; Zweck : Ermittelt die aktuelle Gre des Buffers. ͵ Function SMDeviceMinSize ͵[2.37.1.4] Funktionsname : SMDeviceMinSize Unit : DetectSoftware Teil : SmartDrive/Device Syntax : Function SMDeviceMinSize : Word; Zweck : Ermittelt die minimale Gre des SmartDrive-Buffers. ͵ Function SMDeviceEleSize ͵[2.37.1.5] Funktionsname : SMDeviceEleSize Unit : DetectSoftware Teil : SmartDrive/Device Syntax : Function SMDeviceEleSize : Word; Zweck : Ermittelt die Elementare Gre des SmartDrive-Buffers. ͵ Function SMDeviceCacheHits ͵[2.37.1.6] Funktionsname : SMDeviceCacheHits Unit : DetectSoftware Teil : SmartDrive/Device Syntax : Function SMDeviceCacheHits : Word; Zweck : Ermittelt die Anzahl der Cache-Erfolge. ͵ Function SMDeviceCacheMisses ͵[2.37.1.7] Funktionsname : SMDeviceCacheMisses Unit : DetectSoftware Teil : SmartDrive/Device Syntax : Function SMDeviceCacheMisses : Word; Zweck : Ermittelt die Anzahl der Cache-Mierfolge. ͵ Function SMDeviceRCache ͵[2.37.1.8] Funktionsname : SMDeviceRCache Unit : DetectSoftware Teil : SmartDrive/Device Syntax : Function SMDeviceRCache (Drive : Char) : Boolean; Zweck : Ermittelt, ob fr das angegebene Laufwerk ein Lese-Cache eingeschaltet ist. ͵ Function SMDeviceWCache ͵[2.37.1.9] Funktionsname : SMDeviceWCache Unit : DetectSoftware Teil : SmartDrive/Device Syntax : Function SMDeviceWCache (Drive : Char) : Boolean; Zweck : Ermittelt, ob fr das angegebene Laufwerk ein Schreib-Cache eingeschaltet ist. ͵ Function SMDeviceDblBuffer ͵[2.37.1.10] Funktionsname : SMDeviceDblBuffer Unit : DetectSoftware Teil : SmartDrive/Device Syntax : Function SMDeviceDblBuffer (Drive : Char) : Boolean; Zweck : Ermittelt, ob das Double-Buffering Verfahren auf dem ange- gebenen Laufwerk eingesetzt wird. ͵ Function SMIOCTLVer ͵[2.37.2.1] Funktionsname : SMIOCTLVer Unit : DetectSoftware Teil : SmartDrive/IOCTL Syntax : Function SMIOCTLVer : String; Zweck : Ermittelt die Version von SmartDrive. Beispiel : '3.00' ͵ Function SMIOCTLSize ͵[2.37.2.2] Funktionsname : SMIOCTLSize Unit : DetectSoftware Teil : SmartDrive/IOCTL Syntax : Function SMIOCTLSize : Word; Zweck : Ermittelt die aktuelle Gre des SmartDrive-Buffers. ͵ Function SMIOCTLMaxSize ͵[2.37.2.3] Funktionsname : SMIOCTLMaxSize Unit : DetectSoftware Teil : SmartDrive/IOCTL Syntax : Function SMIOCTLMaxSize : Word; Zweck : Ermittelt die maximale Gre des SmartDrive-Buffers. ͵ Function SMIOCTLMinSize ͵[2.37.2.4] Funktionsname : SMIOCTLMinSize Unit : DetectSoftware Teil : SmartDrive/IOCTL Syntax : Function SMIOCTLMinSize : Word; Zweck : Ermittelt die minimale Gre des SmartDrive-Buffers. ͵ Function SMIOCTLEnabled ͵[2.37.2.5] Funktionsname : SMIOCTLEnabled Unit : DetectSoftware Teil : SmartDrive/IOCTL Syntax : Function SMIOCTLEnabled : Boolean; Zweck : Ermittelt, ob SmartDrive berhaupt aktiv ist. ͵ Function SMIOCTLLockedTracks ͵[2.37.2.6] Funktionsname : SMIOCTLLockedTracks Unit : DetectSoftware Teil : SmartDrive/IOCTL Syntax : Function SMIOCTLLockedTracks : Boolean; Zweck : Ermittelt, ob gesperrte Tracks vorhanden sind. ͵ Function SMIOCTLWriteThrough ͵[2.37.2.7] Funktionsname : SMIOCTLWriteThrough Unit : DetectSoftware Teil : SmartDrive/IOCTL Syntax : Function SMIOCTLWriteThrough : Boolean; Zweck : Ermittelt, ob die "WriteThrough" option aktiv ist. ͵ Function SMIOCTLWriteBuffer ͵[2.37.2.8] Funktionsname : SMIOCTLWriteBuffer Unit : DetectSoftware Teil : SmartDrive/IOCTL Syntax : Function SMIOCTLWriteBuffer : Boolean; Zweck : Ermittelt, ob ein Schreib-Puffer vorhanden ist. ͵ Function SMIOCTLHitRate ͵[2.37.2.9] Funktionsname : SMIOCTLHitRate Unit : DetectSoftware Teil : SmartDrive/IOCTL Syntax : Function SMIOCTLHitRate : Word; Zweck : Ermittelt die Trefferquote in Prozent. ͵ Function SMIOCTLDMABuffering ͵[2.37.2.10] Funktionsname : SMIOCTLDMABuffering Unit : DetectSoftware Teil : SmartDrive/IOCTL Syntax : Function SMIOCTLDMABuffering : String; Zweck : Ermittelt die Art des Buffering in DMA (an/aus/dynamisch). Beispiel : 'dynamisch' ͵ Function SMIOCTLMemoryType ͵[2.37.2.11] Funktionsname : SMIOCTLMemoryType Unit : DetectSoftware Teil : SmartDrive/IOCTL Syntax : Function SMIOCTLMemoryType : String; Zweck : Ermittelt die Art des Speichers, die zum zwischenlagern genutzt wird (EMS/XMS). Beispiel : 'EMS' ͵ Function SMIOCTLFlushReboot ͵[2.37.2.12] Funktionsname : SMIOCTLFlushReboot Unit : DetectSoftware Teil : SmartDrive/IOCTL Syntax : Function SMIOCTLFlushReboot : Boolean; Zweck : Ermittelt, ob die Daten aus dem Schreib-Puffer beim Warm- start auf die Platte (/Diskette/...) geschrieben werden. ͵ Function SMIOCTLTracksTotal ͵[2.37.2.13] Funktionsname : SMIOCTLTracksTotal Unit : DetectSoftware Teil : SmartDrive/IOCTL Syntax : Function SMIOCTLTracksTotal : Word; Zweck : Ermittelt, wieviele Tracks insgesamt vorhanden sind. ͵ Function SMIOCTLTracksUsed ͵[2.37.2.14] Funktionsname : SMIOCTLTracksUsed Unit : DetectSoftware Teil : SmartDrive/IOCTL Syntax : Function SMIOCTLTracksUsed : Word; Zweck : Ermittelt, wieviele Tracks genutzt werden. ͵ Function SMIOCTLTracksLocked ͵[2.37.2.15] Funktionsname : SMIOCTLTracksLocked Unit : DetectSoftware Teil : SmartDrive/IOCTL Syntax : Function SMIOCTLTracksLocked : Word; Zweck : Ermittelt, wieviele Tracks gesperrt sind. ͵ Function SMIOCTLTracksDirty ͵[2.37.2.16] Funktionsname : SMIOCTLTracksDirty Unit : DetectSoftware Teil : SmartDrive/IOCTL Syntax : Function SMIOCTLTracksDirty : Word; Zweck : Ermittelt, wieviele Tracks unbrauchbar sind. ͵ Function IsPC_TCP ͵[2.38.1] Funktionsname : IsPC_TCP Unit : DetectSoftware Teil : PC/TCP Packet Driver Syntax : Function IsPC_TCP : Boolean; Zweck : Ermittelt, ob der PC/TCP Packet Driver installiert ist. ͵ Function PC_TCP_Interrupt ͵[2.38.2] Funktionsname : PC_TCP_Interrupt Unit : DetectSoftware Teil : PC/TCP Packet Driver Syntax : Function PC_TCP_Interrupt : Byte; Zweck : Ermittelt den Interrupt vom PC/TCP Packet Driver. ͵ Function IsFossil ͵[2.39.1] Funktionsname : IsFossil Unit : DetectSoftware Teil : Fossil Driver Syntax : Function IsFossil : Boolean; Zweck : Ermittelt, ob ein Fossil Driver geladen ist. ͵ Function FossilType ͵[2.39.2] Funktionsname : FossilType Unit : DetectSoftware Teil : Fossil Driver Syntax : Function FossilType : String; Zweck : Ermittelt den Typ des Fossil-Drivers (BNU/X00). Beispiel : 'X00' ͵ Function FossilSpecLevel ͵[2.39.3] Funktionsname : FossilSpecLevel Unit : DetectSoftware Teil : Fossil Driver Syntax : Function FossilSpecLevel : Byte; Zweck : Ermittelt den Specification Level des Fossil Drivers. ͵ Function FossilRevision ͵[2.39.4] Funktionsname : FossilRevision Unit : DetectSoftware Teil : Fossil Driver Syntax : Function FossilRevision : Byte; Zweck : Ermittelt die Revision des Fossil Drivers. ͵ Function FossilIDString ͵[2.39.5] Funktionsname : FossilIDString Unit : DetectSoftware Teil : Fossil Driver Syntax : Function FossilIDString : String; Zweck : Ermittelt den ID-String des Fossil-Treibers. ͵ Function IsVidFossil ͵[2.40.1] Funktionsname : IsVidFossil Unit : DetectSoftware Teil : Video Fossil Driver Syntax : Function IsVidFossil : Boolean; Zweck : Ermittelt, ob ein Video-Fossil-Driver geladen wurde. ͵ Function VidFossilVer ͵[2.40.1] Funktionsname : VidFossilVer Unit : DetectSoftware Teil : Video Fossil Driver Syntax : Function VidFossilVer : Word; Zweck : Ermittelt die Versionsnummer des Video Fossil Treibers. ͵ Function VidFossilRev ͵[2.40.1] Funktionsname : VidFossilRev Unit : DetectSoftware Teil : Video Fossil Driver Syntax : Function VidFossilRev : Word; Zweck : Ermittelt die Revision des Video Fossil Treibers. ͵ Function VidFossilHFn ͵[2.40.1] Funktionsname : VidFossilHFn Unit : DetectSoftware Teil : Video Fossil Driver Syntax : Function VidFossilHFn : Word; Zweck : Ermittelt die hchste noch untersttzte Funktion des Fossil-Drivers. ͵ Function DhryStones ͵[2.41.1] Funktionsname : DhryStones Unit : Bench { siehe Bemerkung } Teil : Integer Benchmark Syntax : Function DhryStones : Double; Zweck : Ermittelt den Dhrystone-Wert des Systems. Das Dhrystone- Benchmark ist ein synthetisches Benchmark, was mit Integern arbeitende Programme emulieren soll. Der Wert hng genauso- viel vom Compiler wie von der CPU ab. Man kann also Pascal- Dhrystones nicht gerade mit C-Dhrystones oder 32-Bit Dhrystones vergleichen. Die hier verwendete Version ist 2.1 von Reinhold Weicker. ͵ Function WhetStones ͵[2.41.2] Funktionsname : WhetStones Unit : Bench { siehe Bemerkung } Teil : Double-Precision Benchmark Syntax : Function WhetStones : Double; Zweck : Ermittelt den WhetStone-Wert des Systems. Das WhetStone- Benchmark ist ein synthetisches Benchmark, was ein mit DOUBLE-Typen (Fliekomma, mittlere Genauigkeit) rechnendes Programm emulieren soll, wobei auch Funktionen wie Sin oder Exp getestet werden. Der Wert hng genausoviel vom Compiler wie von der CPU ab. Man kann also Pascal-Whetstones nicht gerade mit C-WhetStones oder 32-Bit WhetStones vergleichen. Hier wurde die aktuellste vorliegende Version von Brian Wichmann verwendet. ͵ Function MFLOPS ͵[2.41.3] Funktionsname : MFLOPS Unit : Bench { siehe Bemerkung } Teil : Double-Precision Benchmark Syntax : Function MFLOPS : Double; Zweck : Ermittelt den MFLOP's Wert. Das MFLOP's Benchmark ist ein Benchmark, welches zurckgibt, wieviele Millionen einfache Fliekommarechnungen der verwendete Rechner pro Sekunde ausfhren kann. Der Wert hng genausoviel vom Compiler wie von der CPU ab. Optimierende, 32-Bit-Code benutzende Compiler knnen einen bis zu 50% hheren Wert verursachen. Man sollte also die Werte nicht mit denen von anderen Programmen zurckgegebenen messen. Auerdem ist es relevant, ob ein CPU-Cache eingebaut ist, was das Memory-System dann fast gar nicht testet. In dieser Unit wurde die ltere Version der Lawrence Livermoore Loops verwendet. ͵ Function DhryStonesXT ͵[2.41.4] Funktionsname : DhryStonesXT Unit : Bench { siehe Bemerkung } Teil : Integer Benchmark/Vergleich Syntax : Function DhryStonesXT : Double; Zweck : Ermittelt, um welchen Faktor dieses Benchmark auf dem Rechner schneller ist als auf dem XT. ͵ Function WhetStonesXT ͵[2.41.5] Funktionsname : WhetStonesXT Unit : Bench { siehe Bemerkung } Teil : Double-Precision Benchmark/Vergleich Syntax : Function WhetStonesXT : Double; Zweck : Ermittelt, um welchen Faktor dieses Benchmark auf dem Rechner schneller ist als auf dem XT, wobei auch beachtet wird, ob ein Koprozessor eingebaut ist oder nicht. ͵ Function MFLOPSXT ͵[2.41.6] Funktionsname : MFLOPSXT Unit : Bench { siehe Bemerkung } Teil : Double-Precision Benchmark/Vergleich Syntax : Function MFLOPSXT : Double; Zweck : Ermittelt, um welchen Faktor dieses Benchmark auf dem Rechner schneller ist als auf dem XT, wobei auch beachtet wird, ob ein Koprozessor eingebaut ist oder nicht. ͵ Function TransFormMFLOPS ͵[2.41.7] Funktionsname : TransFormMFLOPS Unit : Bench { siehe Bemerkung } Teil : Double-Precision Benchmark Syntax : Function TransFormMFLOPS : Double; Zweck : Ermittelt die Transformation MFLOPS. Dieser Code ist fr Koprozessoren geschrieben, mte aber auch mit der Emulation laufen. Bemerkung : Auch den Kommentar in den Bemerkungen (weiter unten) ansehen. ͵ Function TrnsFormMFLOPSIIT ͵[2.41.8] Funktionsname : TrnsFormMFLOPSIIT Unit : Bench { siehe Bemerkung } Teil : Double-Precision Benchmark Syntax : Function TrnsFormMFLOPSIIT : Double; Zweck : Ermittelt die Transformation MFLOPS auf dem IIT 3C87. Hier werden die speziellen Fhigkeiten dieses Chips getestet. Darf auf gar keinen Fall auf anderen Koprozessoren gestartet werden. Bemerkung : Auch den Kommentar in den Bemerkungen (weiter unten) ansehen. ͵ Function PeakMFLOPS ͵[2.41.9] Funktionsname : PeakMFLOPS Unit : Bench { siehe Bemerkung } Teil : Double-Precision Benchmark Syntax : Function PeakMFLOPS : Double; Zweck : Ermittelt die Peak-MFLOPS auf Koprozessoren (oder deren Emulatoren). Bemerkung : Auch den Kommentar in den Bemerkungen (weiter unten) ansehen. ͵ Function IsNetWork ͵[2.42.1] Funktionsname : IsNetWork Unit : DetectSoftware Teil : Netzwerk Syntax : Function IsNetWork : Boolean; Zweck : Ermittelt, ob ein Netzwerk installiert ist. ͵ Function NetType ͵[2.42.2] Funktionsname : NetType Unit : DetectSoftware Teil : Netzwerk Syntax : Function NetType : String; Zweck : Ermittelt die Aufgabe dieses Rechners im Netzwerk, wenn vorhanden. Beispiel : 'Server' ͵ Function AppendStatus ͵[2.43.1] Funktionsname : AppendStatus Unit : DetectSoftware Teil : Append Syntax : Function AppendStatus : String; Zweck : Ermittelt, ob Append aktiv ist, und wenn ja, mit welchen Parametern es gestartet wurde. ͵ Function AppendPath ͵[2.43.2] Funktionsname : AppendPath Unit : DetectSoftware Teil : Append Syntax : Function AppendPath : String; Zweck : Ermittelt den Dos-Pfad vob Append. Beispiel : 'C:\DOS\APPEND.EXE' ͵ Function SetverList ͵[2.44.1] Funktionsname : SetverList Unit : DetectSoftware Teil : Setver Syntax : Function SetverList : Pointer; Zweck : Ermittelt, wo die Setver-Liste abgespeichert ist. ͵ Function SetverCount ͵[2.44.2] Funktionsname : SetverCount Unit : DetectSoftware Teil : Setver Syntax : Function SetverCount : Word; Zweck : Ermittelt die Anzahl der Eintrge in der Setver-Liste. ͵ Function SetverText ͵[2.44.3] Funktionsname : SetverText Unit : DetectSoftware Teil : Setver Syntax : Function SetverText (TextNumber : Word) : String; Zweck : Ermittelt den Eintrag Nr. X. Die Hchstgrenze fr X ist das Ergebnis von SetverCount. Beispiel : 'DOSOAD.SYS 5.00' ͵ Function AvaLevelSupp ͵[2.45.1] Funktionsname : AvaLevelSupp Unit : DetectSoftware Teil : AVATAR.SYS Syntax : Function AvaLevelSupp : Word; Zweck : Ermittelt den Support-Level von AVATAR.SYS (siehe IsInstalled). ͵ Function AvaDriverType ͵[2.45.2] Funktionsname : AvaDriverType Unit : DetectSoftware Teil : AVATAR.SYS Syntax : Function AvaDriverType : String; Zweck : Ermittelt den Typ des Drivers (AVATAR.SYS (normal) oder DVAVATAR.SYS (fr DesqView) von AVATAR (siehe IsInstalled). Beispiel : 'AVATAR.SYS' ͵ Function TesPort ͵[2.46.1] Funktionsname : TesPort Unit : DetectSoftware Teil : Tes von Interconnections, Inc. Syntax : Function TesPort : Word; Zweck : Ermittelt den Port von Tes (siehe IsInstalled). ͵ Function IsQuickCacheII ͵[2.47.1] Funktionsname : IsQuickCacheII Unit : DetectSoftware Teil : QuickCache II Syntax : Function IsQuickCacheII : Boolean; Zweck : Ermittelt, ob QuickCache II, ein Shareware-Cache-Programm, im Speicher und aktiv ist. ͵ Function QuickCacheIIVer ͵[2.47.2] Funktionsname : QuickCacheIIVer Unit : DetectSoftware Teil : QuickCache II Syntax : Function QuickCacheIIVer : String; Zweck : Ermittelt die Version von QuickCach II, falls installiert. Beispiel : '1.0' ͵ Function GetQuickCacheIIInfo ͵[2.47.3] Funktionsname : GetQuickCacheIIInfo Unit : DetectSoftware Teil : QuickCache II Syntax : Function GetQuickCacheIIInfo (InfoNumber : Byte) : Pointer; ^^^^^^^^^^ sollte einen der folgenden Werte annehmen : 1 - Ein Pointer zum System-Info Record wird zurckgegeben. Dieser ist in DetectSoftware als tQuickCacheIISystemInfo definiert. 2 - Ein Pointer zum Drive-Info Record wird zurckgegeben. Dieser ist in DetectSoftware als tQuickCacheIIDriveInfo definiert. Zweck : Mit dieser Funktionen kann man sich einen von 2 Records zurckgeben lassen, wo dann jeweils die Daten ber QuickCache drinstehen. Bemerkung : Es darf nicht vergessen werden, den Record auch wieder vom Heap zu nehmen (am besten mit FreeMem (Pointer (SizeOf (tQuickCacheIISystem(/Drive)Info)); ). ͵ Function IsOnBoardSCSI ͵[2.48.1] Funktionsname : IsOnBoardSCSI Unit : DetectSystem Teil : SCSI-System Syntax : Function IsOnBoardSCSI : Boolean; Zweck : Ermittelt, ob auf dem Mottherboard ein SCSI-System integriert ist. ͵ Function IsIML ͵[2.48.2] Funktionsname : IsIML Unit : DetectSystem Teil : IML-System Syntax : Function IsIML : Boolean; Zweck : Ermittelt, ob im Computer ein IML-System installiert ist. (siehe auch IsIMLSCSISupp) ͵ Function IsIMLSCSISupp ͵[2.48.3] Funktionsname : IsIMLSCSISupp Unit : DetectSystem Teil : IML-System, SCSI-System Syntax : Function IsIMLSCSISupp : Boolean; Zweck : Ermittelt, ob das IML-System (siehe ^) auch SCSI untersttzt. ͵ Function IsIBMYaleESIO ͵[2.49.1] Funktionsname : IsIBMYaleESIO Unit : DetectSoftware Teil : IBM/Yale Extended Bios Serial I/O Syntax : Function IsIBMYaleESIO (PortNumber : Word) : Boolean; Zweck : Ermittelt, ob das IBM/Yale EBIOS auf dem angegebenen seriellen Port (0 - 3) vorhanden ist. ͵ Function SRDiskSuppDrives ͵[2.50.1] Funktionsname : SRDiskSuppDrives Unit : DetectSoftware Teil : SRDisk Syntax : Function SRDiskSuppDrives : Byte; Zweck : Ermittelt die Anzahl der maximal vom Treiber untersttzten SUB-Units (Laufwerke). (Siehe auch : IsInstalled) ͵ Function SRDiskMemType ͵[2.50.2] Funktionsname : SRDiskMemType Unit : DetectSoftware Teil : SRDisk Syntax : Function SRDiskMemType : String; Zweck : Ermittelt, welcher Memory-Typ fr die RAM-Disks benutzt wird. In der aktuellen Version wird jedoch nur XMS unter- sttzt. (Siehe auch : IsInstalled) Beispiel : 'XMS' ͵ Function SRDiskVersion ͵[2.50.3] Funktionsname : SRDiskVersion Unit : DetectSoftware Teil : SRDisk Syntax : Function SRDiskVersion : String; Zweck : Ermittelt die Version von SRDisk (siehe auch : IsInstalled). Beispiel : '2.10' ͵ Function SRDiskConfVersion ͵[2.50.4] Funktionsname : SRDiskConfVersion Unit : DetectSoftware Teil : SRDisk Syntax : Function SRDiskConfVersion : Byte; Zweck : Ermittelt die aktuelle Version des Konfigurationsblocks von SRDisk. Z.Zt. ist sie noch 0. (siehe auch : IsInstalled) ͵ Function PCT5DeskHotkey ͵[2.51.1] Funktionsname : PCT5DeskHotkey Unit : DetectSoftware Teil : PC Tools Syntax : Function PCT5DeskHotkey (Key : Byte) : Word; ^^^^^^^^^^ kann einen der folgenden Werte annehmen : dcpDesktopHotkey = Desktop dcpClipboardPasteKey = Zwischenablage / Einfgen dcpClipboardCopyKey = Zwischenablage / Kopieren dcpAutoDialKey = Auto-Ruf Taste Zweck : Ermittelt den Hotkey der angegebenen Funktion. Dabei ist Byte 1 der Scancode, Byte 2 der Shift-Status. ͵ Function PCT7DeskColorSheme ͵[2.51.2] Funktionsname : PCT7DeskColorSheme Unit : DetectSoftware Teil : PC Tools Syntax : Function PCT7DeskColorSheme : String; Zweck : Ermittelt den Namen des Farbenschemas vom Desktop von PCTools ab der Version 7.0. Beispiel : 'SCHEMA.SHM' ͵ Function PCT6DeskVersion ͵[2.51.3] Funktionsname : PCT6DeskVersion Unit : DetectSoftware Teil : PC Tools Syntax : Function PCT6DeskVersion : String; Zweck : Ermittelt die genaue Version des Desktops. Beispiel : '8.00' ͵ Function PCT5DeskIsResident ͵[2.51.4] Funktionsname : PCT5DeskIsResident Unit : DetectSoftware Teil : PC Tools Syntax : Function PCT5DeskIsResident : Boolean; Zweck : Ermittelt, ob der Desktop resident im Hintergrund geladen ist. ͵ Function PCT6CacheIsDrive ͵[2.51.5] Funktionsname : PCT6CacheIsDrive Unit : DetectSoftware Teil : PC Tools Syntax : Function PCT6CacheIsDrive (Drive : Char) : Boolean; Zweck : Ermittelt, ob des angegebene Laufwerk von PC-Cache gepuffert wird. ͵ Function GetParDevParams ͵[2.52.1.1] Funktionsname : GetParDevParams Unit : DetectPorts Teil : Parallelport Syntax : Function GetParDevParams (Number : Byte) : Byte; Zweck : Ermittelt, welche Parameter aktiv/inaktiv sind. Man kann das Byte auf die einzelnen Bits dpdBusy dpdAck dpdPaperOut dpdSelected dpdIOError dpdTimedOut abtesten. Die Bits sind in DetectConstants definiert. Bemerkung : Wieviele LPT-Ports vorhanden sind, kann man mit dem Bios- Equipment-Word herausfinden. ͵ Function GetParDevTimeOut ͵[2.52.1.2] Funktionsname : GetParDevTimeOut Unit : DetectPorts Teil : Parallelport Syntax : Function GetParDevTimeOut (Number : Byte) : Byte; Zweck : Ermittelt, wie gro der TimeOut auf einem parallelen Port ist. Bemerkung : Wieviele LPT-Ports vorhanden sind, kann man mit dem Bios- Equipment-Word herausfinden. ͵ Function IsEPP ͵[2.52.1.3] Funktionsname : IsEPP Unit : DetectPorts Teil : Parallelport (Enhanced Parallel Port Bios / EPP) Syntax : Function IsEPP (Port : Byte) : Boolean; Zweck : Wenn diese Routine True zurckgibt, kann der Port ber das EPP Bios (falls vorhanden) angesprochen werden. ͵ Function GetSerDevUART ͵[2.52.2.1] Funktionsname : GetSerDevUART Unit : DetectPorts Teil : Serielle Ports Syntax : Function GetSerDevUART (Number : Byte) : String; Zweck : Ermittelt, was fr ein UART (8250/16450/16550/16550A) auf dem jeweiligen COM-Port installiert ist. Bemerkung : Wieviele COM-Ports vorhanden sind, kann man mit dem Bios- Equipment-Word herausfinden. Wie gro der TimeOut ist, wird im Bios mit den Variablen COMTimeOut [1..4] of Word definiert. Beispiel : '8250' ͵ Function GetSerDevBaudRate ͵[2.52.2.2] Funktionsname : GetSerDevBaudRate Unit : DetectPorts Teil : Serielle Ports Syntax : Function GetSerDevBaudRate (Number : Byte) : LongInt; Zweck : Ermittelt, auf welche Baud-Rate der Com-Port im Moment ein- gestellt ist. Bemerkung : Wieviele COM-Ports vorhanden sind, kann man mit dem Bios- Equipment-Word herausfinden. ͵ Function GetSerDevDataBits ͵[2.52.2.3] Funktionsname : GetSerDevDataBits Unit : DetectPorts Teil : Serielle Ports Syntax : Function GetSerDevDataBits (Number : Byte) : Byte; Zweck : Ermittelt, wieviele Daten-Bits eine bertragung auf dem COM-port hat. Bemerkung : Wieviele COM-Ports vorhanden sind, kann man mit dem Bios- Equipment-Word herausfinden. ͵ Function GetSerDevParity ͵[2.52.2.4] Funktionsname : GetSerDevParity Unit : DetectPorts Teil : Serielle Ports Syntax : Function GetSerDevParity (Number : Byte) : String; Zweck : Ermittelt, was fr eine Paritt auf dem Com-Port gesetzt ist. Bemerkung : Wieviele COM-Ports vorhanden sind, kann man mit dem Bios- Equipment-Word herausfinden. Beispiel : 'None' ͵ Function GetSerDevStopBits ͵[2.52.2.5] Funktionsname : GetSerDevStopBits Unit : DetectPorts Teil : Serielle Ports Syntax : Function GetSerDevStopBits (Number : Byte) : Real; Zweck : Ermittelt, wieviele StopBits (1.0/1.5/2.0) auf dem seriellen Port gesetzt sind. Bemerkung : Wieviele COM-Ports vorhanden sind, kann man mit dem Bios- Equipment-Word herausfinden. ͵ Function GetSerDevBreak ͵[2.52.2.6] Funktionsname : GetSerDevBreak Unit : DetectPorts Teil : Serielle Ports Syntax : Function GetSerDevBreak (Number : Byte) : Boolean; Zweck : Ermittelt, ob das Break-Flag auf dem jeweiligen Com-Port gesetzt ist. Bemerkung : Wieviele COM-Ports vorhanden sind, kann man mit dem Bios- Equipment-Word herausfinden. ͵ Function GetSerDevFlags ͵[2.52.2.7] Funktionsname : GetSerDevFlags Unit : DetectPorts Teil : Serielle Ports Syntax : Function GetSerDevFlags (Number : Byte) : Byte; Zweck : Ermittelt die gesetzten Flags auf dem Com-Port. Diese knnen mit den Bits dpsRLSD dpsRI dpsDSR dpsCTS dpsdRLSD dps_dRI dpsdDSR und dpsdCTS abgefragt werden. Bemerkung : Wieviele COM-Ports vorhanden sind, kann man mit dem Bios- Equipment-Word herausfinden. ͵ Function MDPIsForeGround ͵[2.53.1] Funktionsname : MDPIsForeGround Unit : DetectSoftware Teil : Multidos Plus Syntax : Function MDPIsForeGround : Boolean; Zweck : Ermittelt, ob Multidos Plus im Vordergrund ist. (siehe IsInstalled) ͵ Function MDPIsMultiTasking ͵[2.53.2] Funktionsname : MDPIsMultiTasking Unit : DetectSoftware Teil : MultiDos Plus Syntax : Function MDPIsMultiTasking : Boolean; Zweck : Ermittelt, ob der Multitasking-Betrieb von Multidos Plus unterbrochen (False) ist, oder normal arbeitet (True). (siehe IsInstalled). ͵ Function GetNumberMCBs ͵[2.54.1] Funktionsname : GetNumberMCBs Unit : DetectMemory Teil : MCB's Syntax : Function GetNumberMCBs : Byte; Zweck : Gibt die Anzahl der MCB's zurck. Bei den nachfolgenden Routinen muss immer eine Zahl <= x als Parameter uebergeben werden, damit Informationen abgerufen werden koennen. ͵ Function GetMCBSig ͵[2.54.2] Funktionsname : GetMCBSig Unit : DetectMemory Teil : MCB's Syntax : Function GetMCBSeg (Number) : Word; Zweck : Gibt das Segment des MCB's zurueck. Number darf nicht grsser als der von GetNumberMCBs zurckgegebene Wert. ͵ Function GetMCBPSP ͵[2.54.3] Funktionsname : GetMCBPSP Unit : DetectMemory Teil : MCB's Syntax : Function GetMCBPSP (Number) : Word; Zweck : Gibt das Segment des PSP des angegebenen Programm's zurck. Number darf nicht grsser als der von GetNumberMCBs zurckgegebene Wert. ͵ Function GetMCBParent ͵[2.54.4] Funktionsname : GetMCBParent Unit : DetectMemory Teil : MCB's Syntax : Function GetMCBParent (Number) : Word; Zweck : Gibt das Segment des Mutterprozess zurck. Number darf nicht grsser als der von GetNumberMCBs zurckgegebene Wert. ͵ Function GetMCBSize ͵[2.54.5] Funktionsname : GetMCBSize Unit : DetectMemory Teil : MCB's Syntax : Function GetMCBSize (Number) : LongInt; Zweck : Gibt die Groesse des angegebenen, sich im Speicher befindlichen Programms zurueck. Number darf nicht grsser als der von GetNumberMCBs zurckgegebene Wert. ͵ Function GetMCBOwner ͵[2.54.6] Funktionsname : GetMCBOwner Unit : DetectMemory Teil : MCB's Syntax : Function GetMCBOwner (Number) : String; Zweck : Gibt den Programmnamen zurueck (z.B. PROGRAMM.EXE/DOS Daten). Number darf nicht grsser als der von GetNumberMCB zurckge- gebene Wert. Beispiel : 'EXAMPLE.EXE' ͵ Function GetMCBInterrupts ͵[2.54.7] Funktionsname : GetMCBInterrupts Unit : DetectMemory Teil : MCB's Syntax : Function GetMCBInterrupts (Number) : String; Zweck : Gibt die vom Programm verwendeten Interrupts in Hex-Werten zurck. Number darf nicht grsser als der von GetNumberMCBs zurckgegebene Wert. Beispiel : '21h 22h 2dh 2fh' ͵ Function EnvSeg ͵[2.55.1] Funktionsname : EnvSeg Unit : DetectSoftware Teil : Aktuelles Environment/Systemumgebung Syntax : Function EnvSeg : Word; Zweck : Ermittelt das Segment des aktuellen Environments ... ͵ Function EnvLen ͵[2.55.2] Funktionsname : EnvLen Unit : DetectSoftware Teil : Aktuelles Environment/Systemumgebung Syntax : Function EnvLen : Word; Zweck : Mit dieser Funktion kann man ermitteln, wie gross das Environment ist. ͵ Function EnvUsed ͵[2.55.3] Funktionsname : EnvUsed Unit : DetectSoftware Teil : Aktuelles Environment/Systemumgebung Syntax : Function EnvUsed : Word; Zweck : Diese Funktion gibt zurck, wieviel vom Environment belegt ist ͵ Function DevCount ͵[2.56.1] Funktionsname : DevCount Unit : DetectSystem Teil : Logische DOS-Devices Syntax : Function DevCount : Byte; Zweck : Gibt die Anzahl logischer DOS-Devices zurck. ͵ Function DevName ͵[2.56.2] Funktionsname : DevName Unit : DetectSystem Teil : Logische DOS-Devices Syntax : Function DevName (Number) : String; Zweck : Gibt den Namen des angegebenen Devices zurck. Number darf nicht grer als DevCount (^) sein. Beispiel : 'NUL' ͵ Function DevHeader ͵[2.56.3] Funktionsname : DevHeader Unit : DetectSystem Teil : Logische DOS-Devices Syntax : Function DevHeader (Number) : Pointer; Zweck : Gibt die Adresse des Headers des angegebenen Devices zurck. Number darf nicht grer als DevCount (^) sein. ͵ Function DevAttributes ͵[2.56.4] Funktionsname : DevAttributes Unit : DetectSystem Teil : Logische DOS-Devices Syntax : Function DevAttributes (Number) : Word; Zweck : Gibt die Attribute des angegebenen Devices zurck. Number darf nicht grer als DevCount (^) sein. ͵ Function DevStrategy ͵[2.56.5] Funktionsname : DevStrategy Unit : DetectSystem Teil : Logische DOS-Devices Syntax : Function DevStrategy (Number) : Pointer; Zweck : Gibt die Strategy-Adresse des angegebenen Devices zurck. Number darf nicht grer als DevCount (^) sein. ͵ Function DevInterrupt ͵[2.56.6] Funktionsname : DevInterrupt Unit : DetectSystem Teil : Logische DOS-Devices Syntax : Function DevInterrupt (Number) : Pointer; Zweck : Gibt die Adresse des Interrupts des Devices zurck. Number darf nicht grer als DevCount (^) sein. Jedes Bit in diesem Word ist ein bestimmtes Attribut : 15 : 1 = Character Device, 0 = Block Device 14 : 1 wenn IOCTL-Befehle benutzt werden knnen 13 : Wenn das Device ein Blockdevice ist, sollte man bei 1 den Bootsektor zum auslesen der Informationen nehmen, bei 0 kann auch das Media-Id-Byte zu Rate gezogen werden. Bei einem Blockdevice bedeutet 1, da man auf dem Device schreiben kann. 12 : unbenutzt (0) 11 : Bei 1 handelt es sich um ein entnehmbares Medium. 10 : unbenutzt (0) 09 : unbenutzt (0) 08 : unbenutzt (0) 07 : unbenutzt (0) 06 : 1 wenn IOCTL und setzen von logischem Laufwerk untersttzt wird 05 : unbenutzt (0) 04 : 1 beim CON-Device, bei dem Zeichenausgabe ber INT29 erlaubt ist. 03 : 1 wenn das Device das CLOCK$-Device ist. 02 : 1 beim NUL-Device 01 : Blockdevice : 1 = 32-Bit Sektoren untersttzt Characterdevice : 1 = Standard Output 00 : 1 wenn Device Standar-Input ist ͵ Die Beispielprogramme ͵[3.1] Der Unit habe ich 2 Beispielprogramme beigelegt : EXAMPLE und BENCHEX. In EXAMPLE werden (fast) alle Funktionen, die die Unit beherrscht gezeigt. BENCHEX ist fr die Rechnerleistugsbenchmarks da, die ber 50K Datensegment verbrauchen und so nicht in EXAMPLE einbindbar sind. Kurz was zur Steuerung : - Pfeiltasten Oben/Unten = Menpunkt whlen - PgUp/PgDn = Eine Seite rauf/runter - Home/End = Anfang der Liste/Ende der Liste - Enter = Fenster anzeigen - ESC = Ende Im Bios-Datensegment Fenster sind diese Funktionen ebenfalls verfgbar und man kann mit ihnen durch die Daten scrollen. Zurck zum Men kommt man mit ESC oder jeden anderen (nicht belegten) Taste. Die Oberflche der Beispielprogramme ist nicht gerade beispielhaft, reicht aber (hoffentlich) zum veranschaulichen der Mglichkeiten dieser Unit. Ich bin gerade dabei eine Oberflche in TV zu schreiben, aber die wird dann wohl nich als Freeware zu haben sein. (Irgendwie mu ich ja auch leben ;) Der Festplattenschnelligkeitstest wird immer vor dem Programmstart durch- gefhrt. (Irgendwas stimmt da in der DetectHD Unit noch nicht : Die Routinen wollen partout nicht in einer Function arbeiten ...) Das Programm startet zwar unter WIN31(95/NT) oder OS/2, gibt aber bei vielen Funktionen vllig falsche Werte aus, da sich diese Betriebssysteme andauernd vor die Ports/Interrupts/den Memory/etc. setzen. Die Programmierung der Beispielprogramme ist nicht besonders beispielhaft. Es werden Variablen benutzt, die ebenfalls von der Unit genutzt werden. Man sollte auf jedenfall in eigenen Programmen vermeiden, die Variablen der Unit DetectGlobal zu benutzenm, es sei denn, man weiss genau, fuer welche Funktionen welche Variablen benutzt werden ;-) ͵ Verwendete Abkrzungen ͵[3.2] Dieser Abschnitt ist noch nicht vollstndig. Wenn irgendwelche Begriffe im Programm unklar sind, wre es ganz gut, wenn ich diese ber eine E-Mail er- fahre und hier aufnehmen kann ... Die Liste ist alphabetisch geordnet ... Abkrzung/Akronym Bedeutung --------------------------------------------------------------------------- ANSI American National Standard Institute API Application Programming Interface APIC Advanced Programmable Interrupt Controller APM Advanced Power Management ASCII American Standard Code for Information Interchange ASPI Advanced SCSI Programming Interface AVATAR Advanced Video Attribute Terminal Assembler & Recreator BASIC Beginners All Purpose Symbolic Instruction Code BCD Binary Coded Decimal BIOS Basic Input/Output System BIT Binary digit BPB BIOS Parameter Block BPS Bits per Second BL IBM Blue Lightning CAD Computer Aided Design CAM Control Access Method SCSI CAS Communicating Applications Specification CAPI Communicating Application Programming Interface CD Compact Disc CDROM Compact Disc Read Only Memory CDWORM Compact Disc Write Once Read Many CGA Color Graphics Array CMOS Complementary Metal-Oxide-Silicon/Semiconductor CPL Current Privilege Level CPU Central Processing Unit CRC Cyclical Redundancy Check CRT Cathode Ray Tube CRTC Cathode Ray Tube Controller Cx Cyrix DAC Digital to Analog Converter DGIS Direct Graphics Interface Standard DLL Dynamic Link Library DMA Direct Memory Access DOS Disk Operating System DPMI Dos Protected Mode Interface DPMS Dos Protected Mode Services ECC Error Correction Code EGA Enhanced Graphic Array EIDE Extended IDE EISA Extended Industry Standard Architecture EMS Expanded Memory Specification ENV Environment / Dos-Umgebung ESDI Enhanced Small Device Interface EV86 Enhanced Virtual 86 Mode FAT File Allocation Table FCB File Control Block FDC Floppy Disk Controller FDD FloppyDisk FOSSIL Fido/Opus/Seadog Standard Interface Layer FPU Floating Point Unit GUS Gravis Ultrasound HDD HardDisk HGC Hercules Graphics Card HMA High Memory Area HPFS High Performance File System IC Integrated Circuit IDE Integrated Drive Electronics IFS Installable File System IOCTL Input/Output Control IPX Internetwork Packet Exchange IRQ Interrupt Request ISA Industry Standard Architecture ISR Interrupt Service Routine LAN Local Area Network LCD Liquid Crystal Display LDT Local Descriptor Table LED Light Emitting Diode LPT Line Printer M1 Cyrix 6x86 M1SC Cyrix 5x86 M5 Cyrix Cx486S/D M6 Cyrix Cx486DX M7 Cyrix 486DX2 M8 Cyrix 486DX4 MCA Microchannel Architecture MCB Memory Control Block MCGA Multi-Color Graphics Array MDA Monochrome Display Adapter MFLOPS 'M'illion 'F'l'o'ating 'P'oint Operations per 'S'econd MFM Modified Frequency Modulation MIPS Million Instruction per Second MMX MultiMedia Extensions MSR Model Specific Register MSW Mashine Status Word MTBF Mean Time between Failures NCB Network Control Block NDIS Network Driver Interface Specification NMI Non Maskable Interrupt NPX Numerical Processor Extensiuns --> FPU NTFS New Technology File System NVRAM Non Volatile Random Access Memory Nx NexGen OEM Original Equipment Manufacturer OS/2 IBM Operating System / 2 P5 Intel Pentium P6/PPro Intel PentiumPro P24C Intel i486 P24T Intel Pentium OverDrive fr i486DX2 Socket 3 (5V) P24CT Pentium OverDrive fr Socket 3 (3.3V) P5 Pentium-60/66 P54C Pentium-90/100/75 P54CS Pentium-120,133 P54CSQ Pentium P120+ PIC Programmable Interrupt Controller PIT Programmable Interval Timer PM/PMode Protected Mode POST Power-On Selftest PSP Programmsegment Prfix RAM Read-Access Memory RGB Red/Green/Blue bzw. Rot/Grn/Blau RM/RMode Realmode ROM Read-Only Memory RPL Requestors Privilege Level RTC Realtime Clock SB/SB16 SoundBlaster (16) SCSI Small Computer Systems Interface SFT System File Table SIM Single Inline Module SMM System Management Mode SRAM Static Random Access Memory SVGA Super Video Graphics Array TI Texas Instruments TPI Tracks per Inch TSS Task State Segment TSR Terminate and Stay resident UART Universal Asynchronous Receiver/Transmitter UMB Upper Memory Block V86/V86-Mode Virtual 86 Mode VBE Vesa Bios Extensions VBE/AI Vesa Bios Extensions / Audio Interface VCPI Virtual Control Program Interface VDS Virtual DMA Specification VESA Video Electronics Standards Association VFAT Virtual File Allocation Table (?) VLB Vesa Local Bus VGA Video Graphics Array WIN MS Windows W95 MS Windows 95 XGA Extended Graphics Array XMS Extended Memory Specification ͵ Der iComp Index ͵[3.3.1] iCOMP Index fr Intel's Prozessoren (vom i386SX-20 bis P54CSQ 133) Bei diesem Benchmark wurde der Intel 80486SX-25 Prozessor als Ausgangsprozessor deklariert. Er hat dami 100 Punkte (100%). Der Pentium 120 ist mit 1000 Punkten in diesem Index also 10 mal so schnell. Prozessor iComp-Wert ------------------------------------------ i386SX-20 32 i386SX-25 39 i386SL-25 41 i386DX-25 49 i386DX-33 68 i486SX-20 78 i486SX-25 100 i486DX-25 122 i486SX-33 136 i486DX-33 166 i486DX2-20/40 166 IntelSX2-25/50 180 i486DX2-25/50 231 i486DX-50 249 IntelDX4-20/60 258 i486DX2-33/66 297 Pentium OverDrive-20/50 (P24T) 314 IntelDX4-25/75 (P24C) 319 IntelDX4-33/100 (P24C) 435 Pentium OverDrive-25/63 (P24T) 443 Pentium-(510\60) (P5) 510 Pentium-(567\66) (P5) 567 Pentium OverDrive-33/83 (P24T) 581 Pentium-(610\75) (P54C/P54LM) 610 Pentium-(735\90) (P54C/P54LM) 735 Pentium-(815\100) (P54C) 815 Pentium-(1000\120) (P54CSQ) 1000 Pentium-(133) (P54CSQ) 1110 ͵ Der Cyrix Index ͵[3.3.2] Cyrix Index fr Cyrix' Prozessoren (vom Cx486SLC-25 bis Cx486DX2-V80) Bei diesem Benchmark wurde der Cyrix Cx486DX-33 Prozessor als Ausgangsprozessor deklariert. Er hat dami 100 Punkte (100%). Der Cx486DX2-V80 ist mit 209 Punkten in diesem Index also etwa 2,1 mal so schnell. Prozessor Punkte ----------------------------- Cx486SLC-25 36 Cx486SLC-33 39 Cx486SLC2-50 40 Cx486DLC-33 69 Cx486DLC-40 83 Cx486DX-33 100 Cx486DX-40 118 Cx486DX2-50 139 Cx486DX-50 148 Cx486DX2-66 179 Cx486DX2-V80 209 ͵ In DetectGraphics verwendete Zahlen ͵[3.4] Dies ist eine Liste fr die Unit DetectGraphics, welche die Aufschlssel- ungen der Variable CardNumber (verwendet in WhatGCard und GraInf) enthlt. 0 = unbekannt 1 = CGA 2 = MCGA 3 = EGA 4 = Hercules/MDA 5 = IBM 8514 6 = AT&T 400 7 = PC3270 8 = VGA 9 = Video 7 10 = Genoa 11 = Genoa 5100-5400 12 = Cirrus 13 = Chips & Technologies 82c45?/F655?0 14 = Trident 8800?? 15 = Trident 8900+ 16 = Trident 8900+ Everex Karten 17 = Tseng ET3000 18 = Tseng ET4000 19 = ZyMos 20 = ATI 21 = ATI 18800+ 22 = Paradise 23 = S3 24 = S3 > 86c928 25 = AHEAD A/B 26 = ATI 28800+ 27 = Avance Logic AL2101 28 = Compaq 29 = Hualon HM85304 30 = MXIC 31 = NCR VGA 32 = OAK 33 = Primus 2000 34 = Realtek 35 = UMC 36 = Weitek 37 = Yamaha ͵ Warenzeichen etc. ͵[3.5] ArtiCom ist ein eingetragenes Warenzeichen von Artisoft, Inc. ASAP ist ein Warenzeichen von MicroTalk. Banyan ist ein eingetragenes Warenzeichen von Banyan Systems, Inc. Compaq ist ein eingetragenes Warenzeichen von Compaq Computer Corp. DESQview, QEMM-386, und QRAM sind Warenzeichen von Quarterdeck Office Systems IBM, PC, PCjr, PC/XT, PC/AT, XT/286, PS/2, TopView und OS/2 sind Warenzeichen der IBM Corp. Logitech ist ein Warenzeichen von Logitech, Inc. Microsoft, MS, MS DOS, MS Windows, MS Windows 95 sind Warenzeichen der Microsoft Corp. Mouse Systems ist ein Warenzeichen von Mouse Systems Corp. NetWare ist ein eingetragenes Warenzeichen von Novell Development Corp. PC Tools is ein Warenzeichen von Central Point Software, Inc. Turbo C und Turbo Pascal sind eingetragene Warenzeichen von Borland Intl 286/DOS-Extender und 386/DOS-Extender sind Warenzeichen von Phar Lap Software, Inc. VUIMAGE ist ein Warenzeichen von Offe Enterprises. LANtastic ist ein Warenzeichen von Artisoft, Inc. Pentium, PentiumPro und Intel sind Warenzeichen der Intel Corp. Alle anderen in der Unit/der Anleitung genannten Warenzeichen gehren natrlich auch ihren Besitzern. Sie werden nur zur Identifikation benutzt. ͵ Bemerkungen ͵[3.6] Allgemeines : Wenn ich das Zeichen ^ in Klammern geschrieben habe, meine ich damit eine vorhergehende Funktionsbeschreibung. Wenn ich Revision schreibe, benutze ich einen Ausdruck, der von einigen anderen Programmen als "interne Versionsnummer" interpretiert wird. Einige Benchmarks laufen nur mit Double-Typen, weshalb in einigen Units auch der Koprozessor-Emulator integriert ist. Ich habe in die Funktion IsInstalled absichtlich die Virenchecks nicht mit eingebaut, da dies meiner Meinung nach nicht als Software betrachtet werden kann. In der Interrupt-Liste sind aber sehr viele Viren- erkennungsinterrupts verzeichnet. Bei Bedarf einfach dort nachsehen. Zu Multiplex : Die Multiplex Routinen (Int 2Fh) knnen noch fehlerhaft sein, da nicht alle Programme die vorgegebenen Normen erfllen (z.B. Himem), und so Extra behandelt werden mssen. Zu DosSpeed : Die Funktion DosSpeed der Unit DetectGraphics liest nur den am Anfang des Programm's ermittelten Wert aus. Dieser mu am Anfang ermittelt werden, da der Inline-Teil aus irgendwelchen Grnden nicht in einer Funktion arbeitet und dort nur ein Zeichen-Wirrwar auf dem Bildschirm veranstaltet. Zu Bench (und den : Die Benchmarks (Dhrystones, Whetstones, MFLOPS) wurden Benchmarks im in eine eigene Unit Namens Bench verlegt, da sie zu- allgemeinen) viel Speicher im Datensegment fressen, allen voran die MFLOPS mit ca. 50kb. Die Unit wird NICHT in DETECT.PAS als Uses aufgefhrt, da jedes Programm, was die Unit gebraucht pltzlich nur noch 10kb Datenspeicher htte. Stattdessen habe ich der Unit auch ein eigenes Beispielprogramm spendiert (EXAMPLE kann den Datensegment- fra nmlich auch nicht ertragen). Zu den Dhrystones : Die Dhrystone-Werte hngen vom System genausoviel ab, wie vom Compiler. So knnen andere Testprogramme einen hheren bzw. niedrigeren Wert aufweisen, jenachdem, ob sie von einem optimierendem Compiler oder in 16- oder 32-Bit Mode laufen. Der Test ist kleiner als 8 kb, pat also auch perfekt in den Cache des Systems und testet so nicht das Memory-System, sondern nur die CPU, wenn ein Cache vorhanden ist. Zu den Whetstones : Die Werte hngen genauso wie bei den Dhrystones auch soviel vom Compiler wie vom System ab, weshalb andere Programme andere Werte ergeben knnen. Wenn auf dem System kein Koprozessor installiert ist, wird als Ver- gleich auch die Schnelligkeit vom XT ohne Koprozessor genommen. Zu den LLL MFLOPS : Die Werte hngen auch hier vom System UND vom Compiler ab, weshalb sie nicht unbedingt mit anderen Programmen verglichen werden sollten. Hier werden die lteren LLL (Lawrence Livermoore Loops)- Routinen benutzt, ich werde aber versuchen, auch an die neuen heranzukommen. Zu den PeakFlops : Der Code ist die Hauptprozedur aus einer Fraktal- berechnung. Er besteht hauptschlich aus einem Loop in hochoptimiertem Assembler Code. Der Code pat wegen seiner Gre auch in einen kleinen CPU-Cache. Alle Variablen werden in den Prozessorregistern ge- halten, so da der Arbeitsspeicher nur fr's Opcode- lesen gebraucht wird, also nur minimal bremst. Peakflop macht fnf Additionen/Subtraktionen und drei Multiplikationen in einem Loop, was auch fr andere Floating-Point Programme sehr real ist. Zu den TransForm : Diese Routine multipliziert ein array aus 8191 Vektoren MFLOPS und der mit einer 3d-Transformations-Matrix (4x4). Jeder Vektor IIT Version besteht aus 4 double-precision Werten. Fr jeden Vektor werden 16 Multiplikationen und 12 Additionen gettigt. Whrend des Benchmarks wird auf ca. 256 kb Daten zuge- griffen, weshalb das Benchmark auch von dem Memory- System ausgebremst werden kann. Dieses Benchmark simuliert die Transformation von 3d-Objekten (z.B. Rotation), welche in 3d-Programmen sehr oft angewandt wird. Fr den IIT 3C87 wurde eine Extra Version dieses Bench- marks gechriben, welche den F4X4-Befehl dieses Kopro- zessors nutz (Multiplikation eine 4x4 Matrix mit 4x1 Vektor in einer einzigen Instruktion). ͵ Danksagungen ͵[3.7] Ich danke im Einzelnen (ungeordnet) : Ralf Brown - fr die Interruppt Liste David Jurgens - fr HelpPc (Er ist leider verstorben :'-( ) Andrew Rossmann - fr die unermdliche Arbeit an Info+ Norbert Juffa - Fr das Programm CompTest und den Text ber Kopro- zessoren Andreas Stiller - fr seine c't Artikel Ludger Nowak - Fuer Einstiegshilfen bezueglich Pascal, C, etc. & Mailboxsupport Bernhard Thoben - Mailboxsupport, Magic, Files, ... Ingo Bttcher - Geburtstagsgechenk ( ;-) ), Bugreports, Sourcen, Beta-Tests, ... Den Testern der Unit - An alle Beta-Tester vielen Dank (Florian Roth, Michael Rohde, Uli Laube, ...) und alle weiteren, die meinen, hier genannt werden zu mssen ... ͵ Referenzen ͵[3.8] Vielen Dank auch an alle, die die diese Referenzen geschrieben/verbessert haben ... (Ohne sie wre diese Unit unmglich !!!) In dieser Unit habe ich mich auf die folgenden Bcher/Programme/Specs/Info's gesttzt (ungeordnet) : Ralf Brown's Interrupt Liste Version 50 - Ralf Brown WWW-Page 'What Intel doesn't want you to know' - Robert Collins WHATCHIP.ASM - Christy Gemmell Get Drives Existence Assembler Sources - Lee Hamel 4P Package / Appendix H - Christian Ludloff Chipsatz Intern Artikel der C't - Andreas Stiller CompTest v2.59 - Norbert Juffa Coprocessor Beschreibungen v1.5 - Norbert Juffa Das Groe Buch zum 486'er - Haas Jungbluth HELPPC v2.10 - David Jurgens PC Underground - M. Rash & Bo Bertelsons Info+ v1.58 - Andrew Rossmann VGADOC3 Package - Finn Thoegersen Turbo Pascal Intern - Michael Tischer PC Intern 3,4,5 - Michael Tischer DOSREF v2.2 - Dave Williams CPUDET.PAS v1.58 - Ingo Bttcher GETDRVS.PAS - Ingo Bttcher IBDOS.PAS v4.52 - Ingo Bttcher Opcode-List Release Release 50 - Potemkin's Hackers Group. Identification of x86 CPU's with CPUID support - Grzegorz Mazur Identification of Cyrix 486 and alikes - Grzegorz Mazur The Chiplist 9.3 - Aad Offerman AMD Processor Recognition Application Note C - Advanced Micro Devices PC Game Programmers Encyclopedia Version 1.00a - verschiedene Autoren Die PC-Programmierer Referenz Version v3.0 - verschiedene Autoren C't Computer Technik (verschiedene Ausgaben) - verschiedene Autoren PC Tech Journal - verschiedene Autoren PC Magazine - verschiedene Autoren Doctor Dobbs Journal Sources - verschiedene Autoren Das Prussg Archiv v1.02 - verschiedene Autoren Internet Newsgroups : - comp.lang.asm.x86 - comp.lang.c - de.comp.lang.cplus - comp.graphics - comp.graphics.algorithms - schule.informatik.allgemein Fidonet-Bretter - PASCAL.GER - ASM86.GER - 386.GER FAQ's ber MSDOS, Grafikarten, ... FIDONET 80XXX-Echo Snippets Sorceware Archival Group (SWAG) Archive Netze : Pascal-Net, Ger-Net FTP-Server - x2ftp.oulu.fi - ftp.simtel.com - ftp.microsoft.com - ftp.intel.com Mailboxen : - Turbobox - Berni's Box - Cyberbox - Drugstore/FreComp-Bbs - Green Valley BBS - Maus Oldenburg - NGO-Box - ... '~';:,.,:;'~';:,.,:;'~';:,.,:;'~';:,.,:;'~';:,.,:;'~';:,.,:;'~';:,.,:;'~' The End '~';:,.,:;'~';:,.,:;'~';:,.,:;'~';:,.,:;'~';:,.,:;'~';:,.,:;'~';:,.,:;'~'