SetFSB.hsp [SetFSBメインスクリプト]
;--------+---------+---------+---------+---------+---------+---------+---------+---------+---------+
; SetFSB Version 2.0b Copyright (C) 2001-2007 by abo
; Current Platform - Windows Vista/2003/XP/2000/NT4/Me/98 [x86/x64]
; Programmed in HSP Ver3.1 ONION software (http://hsp.tv/)
; SysInfo.sys/SysInfoX64.sys Mr.hiyohiyo (http://crystalmark.info/)
; based on PCI Debug Library [kashiwano masahiro] (http://www.otto.to/~kasiwano/)
;
;/File
; SetFSB.hsp [SetFSB main script]
; |
; |-- SetfsbHeader.as [SetFSB header script]
; | |-- sysval.as [System Value]
; | |-- gblconst.as [Global Constance]
; | |-- chipconst.as [Chipset Constance]
; |
; |-- colorfulobject.as [colorful object module]
; |-- exobject.as [extension object module]
; |-- extabctl.as [tab control module]
; |-- miniasm32.as [mini assembler module]
; |-- cpufreq.as [CPU frequency module]
; |-- sysinfo.as [SysInfo module]
; |-- smbus.as [SMBus module]
; |-- ExeWrightMod25k.as [Execution file Wright Module]
; |
; |-- SetfsbGlobalDeffunc.as [SetFSB Global Space Definition Function]
; |-- GlobalDeffuncPrm.hsp [Global Space Definition Function for Prameter]
; |-- GlobalDeffuncInit.as [Global Space Definition Function for Initialize]
; |-- GlobalDeffuncWinMes.as [Global Space Definition Function for Window Message]
; |-- GlobalDeffuncCmd.as [Global Space Definition Function for Command Line Switch]
;
; Initialize_exemodoki25k.hsp [Initialize _exemodoki25k]
; _exemodoki25k [Execution file for debug]
;
; hsp3c_vista28k.hrt [HSP runtime for SetFSB]
;
; SysInfo.sys [WindowsNT X86 device driver]
; SysInfoX64.sys [WindowsNT X64 device driver]
;
;--------+---------+---------+---------+---------+---------+---------+---------+---------+---------+
;/History
; 2.0b1 /*** Programmed in HSP Ver3.1b5 ***/
; 11/08/2006 ICS952607EF(ASUS P4C800) 20b1
; ICS9LPRS587AGLF(GIGABYTE GA-965P) 20b1
; Control/Customize/Diagnosis/(Creator)
; 11/12/2006 ICS954141CFLF(ASUS P5LP-LE rev1.05) 20b2
; 11/19/2006 CY28551LFXC(ASUS P5B Deluxe) 20b3
; 02/05/2006 ICS9LPRS511EGLF(Foxconn G9657MA-8EKRS2H) 20b4
; *ICS9LPRS552AGLF(Asus P5B non-deluxe) 20b4 - NG
; 02/09/2007 ICS9514618GLF(DFI ICFX3200) 20b5
; SLG505YC56DT(Intel D975XBX2) 20b5
; Supported ATI Xpress 3200 Intel (RD600/SB600) chipset
; Supported Windows Vista/2003/XP [x64]
; 02/15/2007 ICS954108CFLF(Intel D975XBX) 20b6
; ICS950703BF(ASUS P4T533) 20b6
; Corrected SMBus bug
; Added manifest for Windows Vista
; 02/16/2007 CV122C(ASUS P5LD2-VM SE) 20b7c
; 02/18/2007 ICS954123CGLF(ASUS P5W-DH) 20b7g
; RTM876-660(GA-TG965MP-RH) ME-B01barebone 20b7
; 02/27/2007 ICS94225AF (EPoX EP-8K7A, GIGABYTE GA-7DXR, ASUS A7M266) 20b8e
; Fixed Windows Me/98 bug.
; Supported AMD-960(VIA VT82C686/A/B) chipset.
; Improved SMBus stability.
; Corrected CPU Frequency xxxx.xMHz [x64].
; 03/05/2007 CV174CPAG(Intel DG965LV/DQ965GF/DG965RY) Gateway GT5238E 20b8f
; ICS9514618GLF->ICS951461BGLF
; 03/07/2007 ICS950405AF(ASUS K8V) 20b8g
; 03/17/2007 ICS9LPR501HGLF(ABIT IB9) 20b8i
; Fixed SLG505YC56DT bug.(Intel DQ965COE)
; 03/25/2007 RTM520-39D(EPoX EP-BX6, Chaintech CT-6ASA4) 20b8m
; 03/29/2007 *CY505YC56DT(Dell optiplex 745) 20b8q - NG
; 03/31/2007 ICS952001AF(MSI 645U) 20b8r
; 04/01/2007 ICS9248D/EF-199(Biostar M7SUA) 20b8t
; 04/03/2007 *ICS954310BGLFT(ACER Aspire 3682) 20b8x - NG
; 04/08/2007 ICS951403CF(FIC AT31) 20b8y
; ICS950812BG(Compaq Presario 2201AP, Toshiba dynabook SS 2110)
; *SLG8LP462BF(HP Compaq nx7400 notebook) - NG
; 04/29/2007 ICS954227CGLF(Sony VAIO VGN-S460/S580P) 20b9g
; 05/02/2007 ICS9LPRS509HGLF(DFI Infinity P965-S) 20b9j
; 05/09/2007 ICS9LPRS918BKL(ASUS P5K(3) Deluxe) 20b12
; 05/31/2007 ICS9LPRS916BGLF(ASUS P5K) 20b15f
; ICS952623CG (Toshiba Satellite P10-554)
; Fixed CV174CPAG bug. (Intel DG965WH)
; 08/28/2007 ICS9LPRS906CGLF (MSI P35 Platinum) 20b15o
; ICS953002DFLF (ABIT IP95)
; Fixed CY28551LFXC bug. (DFI LANPARTY UT P35-T2R)
; 08/28/2007 RTM866-485 (ECS 945GCT-M2) 20b15r
; 09/10/2007 /*** Programmed in HSP Ver3.1 ***/
; 09/17/2007 Released SetFSB programming. 20b15v
; 09/23/2007 ICS9LPRS919BKL(Foxconn Mars) 20b15w
; Fixed Biostar TP35D2-A7(BIOS P35BA817).
; Unconfirmed
; ICS952803AF (ECS 755-A(2))
; W83115RG_BW (?)
; W83195BG_101 (ASRock ConRoeXFire-eSATA2)
; Developing
; W83194BR-SD (Asrock 775I65G)
; ICS9LPR604AGLF(Intel D201GLY) SMBus SIS964
; *ICS9LPRS552AGLF(Asus P5B non-deluxe) aCR(0x17)..,aCR(0x14)
; *ICS954105BF (HP xw4400 Workstation)
; 2007/xx/xx : 2.0.0.1 U版
#define SoftName "SetFSB"
#define VerNo " 2.0.b.15w" ;version
#define Copyright "Copyright (C) 2001-07 By abo"
#define TEST 0 ;0=normal/1=test
#define global nPLL_PRMSIZE 25 ;nPLL=nPLL_PRMSIZE*2
#define nMainScreen 0
#define nCaptureScreen 1
#define nTabControl 2
#define nChildCustomize 3
#define nChildDiagnosis 4
#define nTabCreator 5
#define nAsmScreen 6
#const nIndexControl nTabControl-2
#const nIndexCustomize nChildCustomize-2
#const nIndexDiagnosis nChildDiagnosis-2
#const nIndexCreator nTabCreator-2
#define TabScreenW 500 ;Tab Child Screen Width
#define TabControlScreenH 200 ;Tab Control Child Screen Height
#define TabDiagnosisScreenH 480 ;Tab Diagnosis Child Child Screen Height
#define TabCreatorScreenH 400 ;Tab Creator Child Screen Height
#define TabCustomizeScreenH 480 ;Tab Customize Child Screen Height
#define ScrnDifX 12
#define ScrnDifY 32
#const MainScreenW TabScreenW+ScrnDifX ;Main Screen Width
#const MainControlScreenH TabControlScreenH+ScrnDifY ;Main Screen Height [Control]
#const MainDiagnosisScreenH TabDiagnosisScreenH+ScrnDifY ;Main Screen Height [Diagnosis]
#const MainCreatorScreenH TabCreatorScreenH+ScrnDifY ;Main Screen Height [Creator]
#const MainCustomizeScreenH TabCustomizeScreenH+ScrnDifY ;Main Screen Height [Customize]
#const MainScreenHmax MainCustomizeScreenH ;Main Screen Height [Max]
#define global ErrChipset 0x01
#define global ErrSMBus 0x02
#define global ErrPLLbyte 0x04
#define global ErrPLLid 0x08
#define global ErrIDT 0x20
#define global ErrRTM 0x40
#define global CmdCansel 0x10
#define ErrSysinfo 0x100
#define ErrCrc32 0x200
#define CmdCompleted 0x400
#define CmdFailed 0x800
#define global CONFIG_ADDRESS 0xCF8 ;Configuration Address Register
#define global CONFIG_DATA 0xCFC ;Configuration Data Register
#cmpopt optcode 1
#cmpopt ppout 1
;/実行ファイル自動作成オプション指定
; type=0(EXEファイル), orgpath=0(初期ディレクトリ移動)
#packopt name "SetFSB" ;実行ファイル名
#packopt runtime "hsp3c_vista28k.hrt" ;ランタイム
#packopt xsize MainScreenW ;初期ウィンドウXサイズ
#packopt ysize MainControlScreenH ;初期ウィンドウYサイズ
#packopt hide 1 ;初期ウィンドウ非表示
#include "SetfsbHeader.as" ;SetFSB header
#include "colorfulobject.as" ;colorful object module [tu-sa]
#include "exobject.as" ;extension object module
#include "extabctl.as" ;tab control module [stdlib]
#include "miniasm32.as" ;mini assembler module
#include "cpufreq.as" ;CPU frequency module
#include "sysinfo.as" ;SysInfo module
#include "smbus.as" ;SMBus module
#include "ExeWrightMod25k.as" ;Execution file Wright Module [puma]
#include "SetfsbGlobalDeffunc.as" ;SetFSB Global Space Definition Function
/* Initialize Routine */
gsel nMainScreen,-1 ;nMainScreen_hide
onexit goto *exit ;終了時呼び出し
do
;/Initialize Memory
sdim szClkGenName,nPLL_PRMSIZE*2*nPLL_STRLEN
szTmrTxtTbl="SLP","MMT","QPC"
iCrSelLst=-1 : iSmbSelLst=-1
DataLoad aPLLprm ;PLL Parameter
DupPtrPrm
if wSizScn {
if iIniCrc=-1 : iIniCrc=CRC32(aPLLprm,nPLL_PRMSIZE*1024+512) : else : iSetFsbFlg|=ErrCrc32 : _break
} else {
InitPLLprm
}
GetClockGeneratorName ; szClkGenName
DupPtrPLL iClkGenCmb
;/WindowsNT Device Driver Start
StartSysInfo ; X86 Device Driver Start
if (stat!0)&(stat!(SYSINFO_OPEN|SYSINFO_START|SYSINFO_INSTALL)) {
_InitSysInfo 1 : StartSysInfo ; X64 Device Driver Start
if stat!(SYSINFO_OPEN|SYSINFO_START|SYSINFO_INSTALL) : iSetFsbFlg|=ErrSysinfo : _break
fX64++
}
;/Configuration Register
ConfigurationRegister
;/Initialize Screen[Control/Customize/Diagnosis]
InitializeScreen
;/Initialize Window Message
gsel nChildDiagnosis ;nChildDiagnosis
oncmd gosub *command,WM_COMMAND
gsel nChildCustomize ;nChildCustomize
oncmd gosub *vscroll,WM_VSCROLL
oncmd gosub *command,WM_COMMAND
gsel nTabControl ;nTabControl
oncmd gosub *hscroll,WM_HSCROLL
oncmd gosub *vscroll,WM_VSCROLL
oncmd gosub *command,WM_COMMAND
gsel nMainScreen,1 ;nMainScreen_show
oncmd gosub *notify,WM_NOTIFY
;/Initialize Tab Control
tabselset hwTabWnd,iTabIdx ;Tab Index [Control/Customize/Diagnosis/(Creator)]
gosub *InitWinID ;
tabstyset hwTabWnd,fTabSty ;Tab Style [Normal Button/Flat Button]
;/Initialize Object
SetfsbObjDisable nAllDis
SetfsbObjEnable 1
aSleep 100
settext hwCurCpuStc,strf("%0.1f",Getfreq(Getupdnpos(hwSelTmrUpd)))+"MHz"
objenable hwCurCpuStc,1 ;"Current CPU" static control
until
/* Command Line Switch Routine */
CommandLineSwitch
/* Main Routine */
do
wait 10
if iSetFsbFlg&ErrChipset : dialog "Chipset Error",1,"SetFSB !!! "+VERno : iSetFsbFlg&=(ErrChipset^0xFF) ;Chipset Error
if iSetFsbFlg&ErrPLLbyte : dialog "PLL Byte Error",1,"SetFSB !!! "+VERno : iSetFsbFlg&=(ErrPLLbyte^0xFF) ;PLLbyte Error
if iSetFsbFlg&ErrSMBus : dialog "SMBus Error",1,"SetFSB !!! "+VERno : iSetFsbFlg&=(ErrSMBus^0xFF) ;SMBus Error
if iSetFsbFlg&ErrPLLid : dialog "PLL ID Error",1,"SetFSB !!! "+VERno : iSetFsbFlg&=(ErrPLLid^0xFF) ;PLLid Error
if iSetFsbFlg&ErrIDT : dialog "IDT Error",1,"SetFSB !!! "+VERno : iSetFsbFlg&=(ErrIDT^0xFF) ;IDT Error
if iSetFsbFlg&ErrRTM : dialog "RTM Error",1,"SetFSB !!! "+VERno : iSetFsbFlg&=(ErrRTM^0xFF) ;RTM Error
until (iSetFsbFlg&0xFF00)
switch iSetFsbFlg
case CmdCompleted
title2 SoftName+VerNo+" Completed" : aSleep 1000 : swbreak
case CmdFailed
title2 SoftName+VerNo+" Failed" : aSleep 1000 : swbreak
case ErrSysinfo
dialog "SysInfo(X64).sys Error",1,"SetFSB !!! "+VERno : swbreak ;Sysinfo Error
case ErrCrc32
dialog "Crc32 Error",1,"SetFSB !!! "+VERno : swbreak ;Crc32 Error
swend
/* Exit Routine */
*exit
gsel nMainScreen,-1 ;画面非表示
StopSysInfo
xPosScn=ginfo_wx1,ginfo_wy1,ginfo_winx,ginfo_winy
if iIniCrc=-1 : iExtCrc32=(CRC32(aPLLprm,nPLL_PRMSIZE*1024+508)^0xFFFFFFFF)
DataSave aPLLprm ;自分に書き込み命令
end
;--------+---------+---------+---------+---------+---------+---------+---------+---------+---------+
; Button Routine
;--------+---------+---------+---------+---------+---------+---------+---------+---------+---------+
;/Button[Get FSB]
*btn_getfsb
iSetFsbFlg|=CmdCansel
ButtonFSB nGetFSB
return
;/Button[Set FSB]
*btn_setfsb
ButtonFSB nSetFSB
return
;/Button[Auto]
*btn_auto
do
iAutoEnd=Gettrackpos(hwFsbTrb)
ButtonFSB nGetFSB : if iSetFsbFlg&0xFF : _break
iAutoSta=Gettrackpos(hwFsbTrb)
if iAutoSta>iAutoEnd : iAutoSta=iAutoEnd
wait 30
repeat iAutoEnd-iAutoSta+1,iAutoSta
settrackpos hwFsbTrb,cnt
SetCulationData 1,Gettrackpos(hwFsbTrb),iNumPci
settext hwSelFrqStc,strf("%3.1f",dCalcFsbFrq)+"/"+strf("%3.1f",dCalcDdrFrq)+"/"+strf("%3.1f",dCalcAgpFrq)+"/"+strf("%3.1f",dCalcPciFrq)+"MHz"
wait 50
ButtonFSB nSetFSB : if iSetFsbFlg&0xFF : break
szBmpName="capture\\a"+strf("%05.1f",dCalcFsbFrq)
screencapture 0,0,ginfo_sizex,ginfo_sizey,ginfo_wx1,ginfo_wy1
chdir dir_exe : dirlist szDirLst,"*.*",5
if instr(szDirLst,0,"capture")=-1 : mkdir "capture"
szBmpName+="MHz.bmp" : bmpsave szBmpName
gsel nMainScreen ;画面表示
wait 50
loop
until
return
;/Button[capture]
*btn_capture
objenable hwCaptureBtn,0 : wait 50 : objenable hwCaptureBtn,1 ;[capture]使用可
szBmpName="capture\\m"
if dCalcFsbFrq : szBmpName+=strf("%05.1f",dCalcFsbFrq) : else : szBmpName+=" . "
screencapture 0,0,ginfo_sizex,ginfo_sizey,ginfo_wx1,ginfo_wy1
chdir dir_exe : dirlist szDirLst,"*.*",5
if instr(szDirLst,0,"capture")=-1 : mkdir "capture"
szBmpName+="MHz.bmp" : bmpsave szBmpName
gsel nMainScreen ;画面表示
objenable hwCaptureBtn,0 : wait 50 : objenable hwCaptureBtn,1 ;[capture]使用可
return
;/Button[update/inp]
*btn_update
if iCrSelLst!-1 {
lstreset hwCrLst(iCrSelLst)
szCrHex=Gettext(hwHexEdt,3)
if szCrHex!"" {
lstaddstring hwCrLst(iCrSelLst),StrUpper(strf("%02x",HEX(szCrHex)))
lstcursel hwCrLst(iCrSelLst),0
settext hwHexEdt,Getlsttext(hwCrLst(iCrSelLst))
if Getlsttext(hwCrLst(iCrSelLst))!"" : settext hwBinEdt,STRBIN(HEX(Getlsttext(hwCrLst(iCrSelLst)))) : else : settext hwBinEdt,""
} else {
lstaddstring hwCrLst(iCrSelLst),StrUpper(strf("%02x",aCR(iCrSelLst)))
settext hwOfsStc,""
settext hwHexEdt,""
settext hwBinEdt,""
}
}
if iSmbSelLst!-1 {
lstreset hwSmbLst(iSmbSelLst)
lstaddstring hwSmbLst(iSmbSelLst),StrUpper(strf("%02x",io_inp(iSMBadr+iSmbSelLst)))
lstcursel hwSmbLst(iSmbSelLst),0
settext hwHexEdt,Getlsttext(hwSmbLst(iSmbSelLst))
if Getlsttext(hwSmbLst(iSmbSelLst))!"" : settext hwBinEdt,STRBIN(HEX(Getlsttext(hwSmbLst(iSmbSelLst)))) : else : settext hwBinEdt,""
}
return
;/Button[apply/out]
*btn_apply
if iCrSelLst!-1 {
ButtonFSB nApplyFSB
}
if iSmbSelLst!-1 {
lstreset hwSmbLst(iSmbSelLst)
szCrHex=Gettext(hwHexEdt,3)
if szCrHex!"" {
io_out (iSMBadr+iSmbSelLst),HEX(szCrHex)
lstaddstring hwSmbLst(iSmbSelLst),StrUpper(strf("%02x",io_inp(iSMBadr+iSmbSelLst)))
lstcursel hwSmbLst(iSmbSelLst),0
settext hwHexEdt,Getlsttext(hwSmbLst(iSmbSelLst))
if Getlsttext(hwSmbLst(iSmbSelLst))!"" : settext hwBinEdt,STRBIN(HEX(Getlsttext(hwSmbLst(iSmbSelLst)))) : else : settext hwBinEdt,""
} else {
lstaddstring hwSmbLst(iSmbSelLst),StrUpper(strf("%02x",io_inp(iSMBadr+iSmbSelLst)))
settext hwOfsStc,""
settext hwHexEdt,""
settext hwBinEdt,""
}
}
return
;--------+---------+---------+---------+---------+---------+---------+---------+---------+---------+
; Window Message Routine
;--------+---------+---------+---------+---------+---------+---------+---------+---------+---------+
;/horizontal scroll [Updown/Trackbar]
; 水平アップダウンコントロールとトラックバーの内容が変わったときの処理
;-------------------------------------------------------------------------------
;#define SB_LINELEFT 0 ;左へ1単位スクロール
;#define SB_LINERIGHT 1 ;右へ1単位スクロール
;#define SB_PAGELEFT 2 ;左へウィンドウの幅だけスクロール
;#define SB_PAGERIGHT 3 ;右へウィンドウの幅だけスクロール
;#define SB_THUMBPOSITION 4 ;スクロールボックスを操作した
#define SB_THUMTRACK 5 ;スクロールボックスを操作中
;#define SB_LEFT 6 ;左にスクロール
;#define SB_RIGHT 7 ;右にスクロール
;#define SB_ENDSCROLL 8 ;スクロールを終了
;-------------------------------------------------------------------------------
*hscroll
switch wparam&0x0F
case SB_PAGELEFT
case SB_PAGERIGHT
case SB_THUMTRACK
switch lparam
case hwFsbTrb ; FSB Trackbar control
setupdnpos hwFsbUpd,Gettrackpos(hwFsbTrb)
settext hwNumFsbStc,str(Gettrackpos(hwFsbTrb)-CND(fUltra,iFsbTrbMin-iFsbTrbOfsU,iFsbTrbMin-iFsbTrbOfsN))+"/"+str(iFsbTrbMax-iFsbTrbMin)
SetCulationData 1,Gettrackpos(hwFsbTrb),Gettrackpos(hwPciTrb)
settext hwSelFrqStc,strf("%3.1f",dCalcFsbFrq)+"/"+strf("%3.1f",dCalcDdrFrq)+"/"+strf("%3.1f",dCalcAgpFrq)+"/"+strf("%3.1f",dCalcPciFrq)+"MHz"
SetFocus hwFsbTrb
swbreak
case hwPciTrb ; PCI Trackbar control
setupdnpos hwPciUpd,Gettrackpos(hwPciTrb)
settext hwNumPciStc,str(Gettrackpos(hwPciTrb)-(iPciTrbMin-iPciTrbOfs))+"/"+str(iPciTrbMax-iPciTrbMin)
SetCulationData 1,Gettrackpos(hwFsbTrb),Gettrackpos(hwPciTrb)
settext hwSelFrqStc,strf("%3.1f",dCalcFsbFrq)+"/"+strf("%3.1f",dCalcDdrFrq)+"/"+strf("%3.1f",dCalcAgpFrq)+"/"+strf("%3.1f",dCalcPciFrq)+"MHz"
SetFocus hwPciTrb
swbreak
swend
swbreak
case SB_THUMBPOSITION
switch lparam
case hwFsbUpd ; FSB Updown control
settrackpos hwFsbTrb,Getupdnpos(hwFsbUpd)
settext hwNumFsbStc,str(Getupdnpos(hwFsbUpd)-CND(fUltra,iFsbTrbMin-iFsbTrbOfsU,iFsbTrbMin-iFsbTrbOfsN))+"/"+str(iFsbTrbMax-iFsbTrbMin)
SetCulationData 1,Getupdnpos(hwFsbUpd),Getupdnpos(hwPciUpd)
settext hwSelFrqStc,strf("%3.1f",dCalcFsbFrq)+"/"+strf("%3.1f",dCalcDdrFrq)+"/"+strf("%3.1f",dCalcAgpFrq)+"/"+strf("%3.1f",dCalcPciFrq)+"MHz"
SetFocus hwFsbTrb
swbreak
case hwPciUpd ; PCI Updown control
settrackpos hwPciTrb,Getupdnpos(hwPciUpd)
settext hwNumPciStc,str(Getupdnpos(hwPciUpd)-(iPciTrbMin-iPciTrbOfs))+"/"+str(iPciTrbMax-iPciTrbMin)
SetCulationData 1,Getupdnpos(hwFsbUpd),Getupdnpos(hwPciUpd)
settext hwSelFrqStc,strf("%3.1f",dCalcFsbFrq)+"/"+strf("%3.1f",dCalcDdrFrq)+"/"+strf("%3.1f",dCalcAgpFrq)+"/"+strf("%3.1f",dCalcPciFrq)+"MHz"
SetFocus hwPciTrb
swbreak
swend
swbreak
swend
return
;/Vertical scroll [Updown]
; 垂直アップダウンコントロールの内容が変わったときの処理
;-------------------------------------------------------------------------------
;#define SB_LINEUP 0 ;上矢印を押した
;#define SB_LINEDOWN 1 ;下矢印を押した
;#define SB_PAGEUP 2 ;上ページアップを押した
;#define SB_PAGEDOWN 3 ;下ページアップを押した
;#define SB_THUMBPOSITION 4 ;lParamの下位ワードにサムの位置を示す
;#define SB_THUMTRACK 5 ;サム移動中
;#define SB_TOP 6 ;[HOME]キーが押された
#define SB_BOTTMOM 7 ;右にスクロール
;#define SB_ENDSCROLL 8 ;[END]キーが押された
;-------------------------------------------------------------------------------
*vscroll
switch wparam&0x0F
case SB_TOP
case SB_BOTTMOM
case SB_THUMBPOSITION
case SB_THUMTRACK
switch lparam
case hwSelTmrUpd ; Select Timer Updown control
iSelTmr=Getupdnpos(hwSelTmrUpd)
settext hwSelTmrStc,szTmrTxtTbl(iSelTmr) ; "Select Timer" static control
swbreak
case hwColTxtUpd ; Color Text Updown control
case hwColBkgUpd ; Color Back Updown control
SetColorStyle 1
swbreak
case hwPllRefUpd
case hwTrbFsbMaxUpdn
SetFreqRange 1, iRngCmb
ButtonFSB nRefresh
swbreak
swend
swbreak
swend
return
;/Command [editbox/combobox/chkbox]
; エディットボックス/コンボボックス/チェックボックスの内容が変わったときの処理
;-------------------------------------------------------------------------------
#define EN_UPDATE 0x400 ;内容が変わった直後
#define CBN_SELCHANGE 1 ;選択項目が変更されたとき
#define BN_CLICKED 0 ;ボタン(チェックボックス)がクリックされたとき
;#define LBN_SELCHANGE 1 ;選択状態が変更された
#define LBN_SETFOCUS 4 ;キーボードフォーカスを受け取った
;-------------------------------------------------------------------------------
*command
switch wparam>>16&0xFFFF
case CBN_SELCHANGE
switch lparam
case hwColStyCmb ;"Color Style"コンボボックス
SetColorStyle 0
swbreak
case hwTabStyCmb ;"Tab Control Style"コンボボックス
tabstyset hwTabWnd,fTabSty ;スタイル変更(gsel 0)
objreshow hwCaptureBtn
swbreak
case hwClkGenCmb ;"Clock Generator"コンボボックス
DupPtrPLL iClkGenCmb
#if TEST
DupPtrCRdata iClkGenCmb
settext hwSmbGbx," SMBus I/O Registers --- Base Address "+StrUpper(strf("%x",iSMBadr))+"h --- "
settext hwChpGbx," Chipset Information --- Host Bridge Device/Vender "+StrUpper(strf("%08x",iHostBridge))+"h --- "
lstreset hwChpInfLst
ChipsetInfo
#endif
settext hwCurFrqStrStc,"Current "+StrFreq()
settext hwSelFrqStrStc,"Select "+StrFreq()
if szPLLmodel="PLL diagnosis" { ;PLL diagnosis
objenable hwTrbFsbMaxUpdn,0
objenable hwPllRefUpd,0
settext hwRngFsbMinStc,""
settext hwRngFsbMaxStc,""
settext hwTrbFsbMaxStc,""
settext hwPllRefStc,""
settext hwPllGearStc,""
}
swbreak
case hwRngCmb
if szPLLmodel="PLL diagnosis" { ;PLL diagnosis
objenable hwTrbFsbMaxUpdn,0
objenable hwPllRefUpd,0
} else {
SetFreqRange 0, iRngCmb
if iRngCmb!2 : fUltra=iRngCmb&1 : setchkbox hwUltChk,fUltra
ButtonFSB nRefresh
if iRngCmb=2 & iPciRefMin=iPciRefMax : objenable hwPllRefUpd,0 : else : objenable hwPllRefUpd : objreshow hwPllRefUpd
if iRngCmb=2 & iPciTrbMin=iPciTrbMax : objenable hwTrbFsbMaxUpdn,0 : else : objenable hwTrbFsbMaxUpdn : objreshow hwTrbFsbMaxUpdn
}
swbreak
; case hwSmbCmb
; swbreak
swend
SetFocus hwTabWnd
swbreak
case LBN_SETFOCUS
repeat 0x30
switch lparam
case hwCrLst(cnt) ;""リストボックス
iCrSelLst=cnt : iSmbSelLst=-1
settext hwOfsStc,StrUpper(strf("%02x",cnt))+"h("+strf("%02d",cnt)+")"
settext hwHexEdt,Getlsttext(hwCrLst(cnt))
if Getlsttext(hwCrLst(cnt))!"" : settext hwBinEdt,STRBIN(HEX(Getlsttext(hwCrLst(cnt)))) : else : settext hwBinEdt,""
settext hwUpdateBtn,"Update"
settext hwApplyBtn,"Apply"
swbreak
swend
loop
repeat 0x10
switch lparam
case hwSmbLst(cnt) ;""リストボックス
iSmbSelLst=cnt : iCrSelLst=-1
settext hwOfsStc,StrUpper(strf("%02x",cnt))+"h("+strf("%02d",cnt)+")"
settext hwHexEdt,Getlsttext(hwSmbLst(cnt))
if Getlsttext(hwSmbLst(cnt))!"" : settext hwBinEdt,STRBIN(HEX(Getlsttext(hwSmbLst(cnt)))) : else : settext hwBinEdt,""
settext hwUpdateBtn,"Inp"
settext hwApplyBtn,"Out"
swbreak
swend
loop
repeat 0x30
if iCrSelLst=-1 {
lstcursel hwCrLst(cnt),-1
} else {
if hwCrLst(cnt)!hwCrLst(iCrSelLst) : lstcursel hwCrLst(cnt),-1
}
loop
repeat 0x10
if iSmbSelLst=-1 {
lstcursel hwSmbLst(cnt),-1
} else {
if hwSmbLst(cnt)!hwSmbLst(iSmbSelLst) : lstcursel hwSmbLst(cnt),-1
}
loop
swbreak
case EN_UPDATE
switch lparam
case hwHexEdt ;エディットボックス
if hwHexEdt=_GetFocus() {
szCrHex=Gettext(hwHexEdt,3)
if szCrHex!"" : settext hwBinEdt,STRBIN(HEX(szCrHex)) : else : settext hwBinEdt,""
}
swbreak
case hwBinEdt ;エディットボックス
if hwBinEdt=_GetFocus() {
szCrBin=Gettext(hwBinEdt,9)
if szCrBin!"" : settext hwHexEdt,StrUpper(strf("%02x",BIN(szCrBin))) : else : settext hwHexEdt,""
}
swbreak
swend
swbreak
case BN_CLICKED
switch lparam
case hwUltChk
fUltra=Getchkbox(hwUltChk)
if iRngCmb!2 : iRngCmb=fUltra : cmbcursel hwRngCmb,iRngCmb
if iCpuDiv : SetFreqRange 0, iRngCmb : ButtonFSB nRefresh
swbreak
swend
swbreak
swend
return
;/Notify [Tab]
; タブコントロルの切替判定処理
;-------------------------------------------------------------------------------
;#define TCN_SELCHANGE 0x400 ;内容が変わった直後
;-------------------------------------------------------------------------------
*notify
;NMHDR構造体
dupptr aNmhdr,lparam,12
if aNmhdr(2)=TCN_SELCHANGE | aNmhdr(0)=hwTabWnd {
iTabIdx=Tabselget(hwTabWnd)
gsel iWinID,-1
gosub *InitWinID
}
return
*InitWinID
iWinID=CND(iTabIdx=nIndexCreator,nTabCreator,nTabControl) : gsel iWinID,1
gsel nChildDiagnosis,-1
gsel nChildCustomize,-1
gsel nMainScreen
switch iTabIdx
case nIndexControl
width MainScreenW,MainControlScreenH
swbreak
case nIndexCustomize
width MainScreenW,MainCustomizeScreenH
gsel nChildCustomize,1
swbreak
case nIndexDiagnosis
width MainScreenW,MainDiagnosisScreenH
gsel nChildDiagnosis,1
swbreak
case nIndexCreator
width MainScreenW,MainCreatorScreenH
swbreak
swend
gsel nMainScreen
return
;eof "setfsb20.hsp"