
         TOPPERS/JSPͥ 桼ޥ˥奢 
    Windows ߥ졼Ķݥåбǥ

        Release 1.2 бǽ: 13-Nov-2001

------------------------------------------------------------------------ 
 TOPPERS/JSP Kernel
     Toyohashi Open Platform for Embedded Real-Time Systems/
     Just Standard Profile Kernel

 Copyright (C) 2000,2001 by Embedded and Real-Time Systems Laboratory
                             Toyohashi Univ. of Technology, JAPAN

 嵭ԤϡFree Software Foundation ˤäƸɽƤ 
 GNU General Public License  Version 2 ˵ҤƤ狼
 ξΤ줫˸¤ꡤܥեȥܥեȥ
 ѤΤޤࡥʲƱˤѡʣѡۡʰʲ
 ѤȸƤ֡ˤ뤳Ȥ̵ǵ롥
 (1) ܥեȥ򥽡ɤηѤˤϡ嵭
     ɽѾ浪Ӳ̵ݾڵ꤬Τޤޤηǥ
     ˴ޤޤƤ뤳ȡ
 (2) ܥեȥѲǽʥХʥꥳɡʥ֥륪
     ȥե饤֥ʤɡˤηѤˤϡ
     ȼɥȡѼԥޥ˥奢ʤɡˤˡ嵭ɽ
     Ѿ浪Ӳ̵ݾڵǺܤ뤳ȡ
 (3) ܥեȥԲǽʥХʥꥳɤηޤϵ
     ߹ѤˤϡΤ줫ξȡ
   (a) ѤȼɥȡѼԥޥ˥奢ʤɡˤˡ嵭
       ɽѾ浪Ӳ̵ݾڵǺܤ뤳ȡ
   (b) Ѥη֤̤ˡˤäơ嵭Ԥ𤹤
       ȡ
 (4) ܥեȥѤˤľŪޤϴŪ뤤ʤ»
     ⡤嵭Ԥդ뤳ȡ

 ܥեȥϡ̵ݾڤ󶡤ƤΤǤ롥嵭Ԥϡ
 ܥեȥ˴ؤơŬѲǽޤơʤݾڤԤ
 ʤޤܥեȥѤˤľŪޤϴŪ
 ʤ»˴ؤƤ⡤Ǥʤ

 @(#) $Id: windows.txt,v 1.12 2001/11/12 16:46:32 takayuki Exp $
------------------------------------------------------------------------

ΥɥȤǤϡTOPPERS/JSP Windowsߥ졼Ķʬˤ
Ʋ⤹롥

-------------------------------------------------------
 Windowsߥ졼Ķ åȰ¸γ
-------------------------------------------------------

--------------------------------
1.1 åȥƥȳȯĶ
--------------------------------

Windowsߥ졼Ķμ¹ԴĶȤƤϡΤΤꤷƤ롥

    Microsoft Windows 95/98/NT4/2000/XP Pro
        #εǽMicrosoft Windows NT4/2000/XPΤߤб
        #εǽCOM(ComponentObjectModel)¹ԴĶǤΤѲǽ
        #Windows XP Home EditionǤθڤϹԤäƤʤ

ޤȯĶȤƼΤΤꤷƤ롥
    Microsoft Visual C++ 6.0
    cygwin 1.1.0 + gcc 2.95.2 (ܤϳ䰦)

ޤ°ɲõǽѤ뤿ˤϼΤΤɬפˤʤ礬롥
    Microsoft VisualBASIC 6.0
    COM¹ԴĶ (Windows 98/NT4/2000 ޤ Windows95 + DCOM for Win95)
    Active Template Library 3.0 (Visual C++ 6.0˴ޤޤ)
    Microsoft Foundation Class Library 6.0 (Visual C++ 6.0˴ޤޤ)

­

TOPPERS/JSP Windowsߥ졼ĶγȯϼδĶǹԤƤ롥

    Microsoft Windows XP Professional
    Microsoft Visual Studio 6.0 Enterprise
        + Microsoft Visual Studio 6.0 ServicePack5
        + Microsoft Visual C++ Processor Pack
    Microsoft Visual Studio .NET beta 2 (.NET Framework SDK)


--------------------------
1.2 ݡȤ뵡ǽγ
--------------------------

Windowsߥ졼Ķ˰¸ǽȤơߥޥѹ(ch
g_ixx, get_ixx)ȳߤζػߡ(dis_int, ena_int)򥵥ݡȤƤ롥
ޤǽɾѥƥﻲȵǽ(vxget_tim)򥵥ݡȤƤ롥


-----------------------------------------------------
1.3 TOPPERS/JSP Windowsߥ졼Ķ»
-----------------------------------------------------

    ʬǽ100ms
        Windowsߥ졼ĶǤϥޥƥå100msȤʤäƤ롥
        ñ̤msΤޤޤǤꡤ50msdly_tskȯԤ 100msø
        Ԥ뤳Ȥˤʤ롥

    å󥿥ƥѥåϼư
        ƥƥȤɬפʥåWindows뤿ᡤե
        졼ɸ륹åѤʤޤåΰ褬
        ­硤WindowsưŪΰƳƤ롥


---------------------------------------------
Windowsߥ졼Ķ˰¸ǽ
---------------------------------------------

Ǥϡͥ뤪ӥƥॵӥεǽǡWindowsߥ
Ķ¸ʬˤĤƲ⤹롥

------------
2.1 ǡ
------------

int  unsigned intΥ32ӥåȤǤ롥
 #IA-64ʤ64ӥåܤȤĶϹθƤʤ

----------------------------------
2.2 ߴǽȳߥϥɥ
----------------------------------

Windowsߥ졼ĶǤm68kγߤ򥨥ߥ졼󤷤Ƥ롥
NMI򥵥ݡȤʤᡤƤγߤϥͥδȯ롥
CPUå֤롼Ǥϳߥޥ7ꤵ졤Ƥγ
ػߤ롥

ǥեȤγװ7ĤǤꡤ7ͥ٤Ȥ롥װο
cpu_defs.h:15INT_NUMINTERRUPTS뤳ȤǤդ䤹ȤǽǤ
 (װֹ1˸ꤵƤ)̾勵޳ߤװֹ4
 Ѥ롥ʳγߤϥ桼δؿѤǤդȯ뤳
 ȤǤ롥

    ׵ȯ
        void HALInterruptRequest(unsigned int intno)
        װֹintno˳׵ȯ

DEF_INHǻꤹߥϥɥֹ(inhno)ϡ68000Ǥ㳰٥ֹ
ɽΥǡ(INHNO)unsigned intƤ롥DEF_INH̵
㳰٥ֹꤷưݾڤʤ

Windowsߥ졼Ķ¸εǽȤơߥޥͤѹ
Υӥ chg_imsȡȤ뤿Υӥ get_ims 
ݡȤƤ롥ʤߥޥͤɽǡunsigned intǤ
롥


TOPPERS/JSP WindowsǤϼδؿ򥵥ݡȤƤ롥

BOOL def_int( unsigned int ims, void * rtn);    /* ϥɥ */

ER  ena_int(unsigned int ims);          /*  */
ER  dis_int(unsigned int ims);          /* ػ */
ER  chg_ims(unsigned int ims);          /* ߥ٥ */
ER  get_ims(unsigned int *p_ims);       /* ߥ٥μ */

def_int : ߥϥɥ
    ߥϥɥrtnװֹimsбŤ

ena_int : ߵ
    ׵Ĥ롥̵뤵졤ĤȤʤ

dis_int : ߶ػ
    ׵ػߤ롥̵뤵졤ػߤȤʤ

chg_ims : ߥ٥
    ׵ޥ٥ꤷͤꤷ
    ʹߥޥ٥ʲγ׵϶ػߤȤʤ

get_ims : ߥ٥μ
    ׵ޥ٥Ǽ줿˳Ǽ


------------------------------------
2.3 CPU㳰ǽCPU㳰ϥɥ
------------------------------------

Windowsߥ졼ĶǤϡWindows㳰CPU㳰˳ƤƤ롣

DEF_EXCǻꤹߥϥɥֹ(excno)Windows㳰װֹɽ
Υǡ(EXCNO)unsigned intƤ롥DEF_EXC ǡ㳰٥
ȤͭǤʤͤ䡤CPU㳰бʤֹꤷưݾڤ
ʤ

Windows㳰ȯ硤бդ줿CPU㳰ϥɥư塤¾
Windows㳰ϥɥؽϤǥХåʤɤưƤϥǥХå
ˤäƥϥɥ󥰤뤿ᡤƤξϥ顼ȤʤäƤξߤ
롥

Windowsߥ졼ĶǤϡΰȼäCPU㳰ϥɥư롥

	void cpuexc_handler( EXCEPTION_POINTERS * exc, int * ctrl )
		exc  : 㳰ȯξܺپޤ๽¤ΤؤΥݥ
		ctrl : 㳰ȯư

ctrl㳰ȯ塢㳰ϥɥ󥰥롼ưꤹ롣ͤ˳Ǽ
ͤϡUnhandledExceptionFilter֤٤ͤǤ롣
EXCEPTION_CONTINUE_SEARCHꤵ줿Ͼ̤㳰ϥɥ󥰥롼
ܤEXCEPTION_CONTINUE_EXECUTIONꤵ줿㳰ȯ
¹ԤƳ롣EXCEPTION_CONTINUE_EXECUTIONꤹˤϡ
㳰ȯθȤʤäװʤС㳰ȯ뤳Ȥդ
줿ܺ٤MSDN饤֥ʤɤ򻲹ͤΤȡ


-------------------------------------------
Windowsߥ졼Ķ˸ͭʵǽ
-------------------------------------------

----------------------------
3.1 ꥢ륨ߥ졼
----------------------------

TOPPERS/JSP WindowsǤϡ֥󥽡ס֥᡼륹åȡס֥ѥספ3फ
򤷤Ѥ뤳ȤǤ롥֥󥽡פǤϥܡɤϤ
Υɥ˽Ϥ뤳ȤǤ롥֥᡼륹åȡפǤWindowsΥ᡼륹
åȵǽѤꥢ륨ߥ졼󤬹Ԥ롥֥ѥספǤWindowsN
T̾ĤѥפѤꥢ륨ߥ졼󤬹Ԥ롥ǥХå
ξ˱ơ3Υꥢ륨ߥ졼ŬʤΤǽ
롥
 #AllocConsoleˤɸϤWindowsǤ϶ϤʥǥХåʤǤ뤿ᡢ
 #Win32APIˤǥХʤɤθƤƻѤ뤳Ȥ򤱤

줾ȤꤵƤǥХ̾Τϼ̤

        ᡼륹å (serial_mailbox.c)
             : \\.\mailslot\toppers\serial_in
             : \\.\mailslot\toppers\serial_out
        
        ̾դѥ (serial_pipe.c)
            \\.\pipe\toppersserial

----------------------
3.2 ǥХå󥽡
----------------------

TOPPERS/JSP Windowsߥ졼ĶǤϡǥХåʸϤ뤿
ѥ󥽡󶡤Ƥ롥ǥХå󥽡ǤϴñʵҤǥǥХåʸ
Ϥ뤳ȤǤ̾ΥꥢѤʤȤ̤ǥեΥǥ
åʤɤԤ롥
 #ItIs/WinܤƤͥɽ̥˥åȤȤʤä

ǥХå󥽡ͭˤˤsys_defs.h:37
 //#define DEBUG_ENABLE
ΥȤϤͭˤ뤳ȤѲǽȤʤ롥
̵ˤˤϳĽޤϥȥȤФ褤

TOPPERS/JSP Windowsߥ졼ĶǤϡΥǥХåѵǽ󶡤Ƥ
롥

OnDebug : ǥХåΤͭȤʤԤˤĤ
    ԤƬOnDebugĤ뤳ȤǡDEBUG_ENABLEˤΤͭȤʤԤñ
    뤳ȤǤ롥
    
    DEBUG_ENABLE   : #define OnDebug
    DEBUG_ENABLE : #define OnDebug /##/

    
        OnDebug wsprintf(buffer,"i = %d",i);

unsigned int DebugOut(LPCSTR text) : ǥХå󥽡ؤν
    DebugOutؿϥǥХå󥽡ʸϤ롥
    
    DEBUG_ENABLEˤϥȹԤˤʤ롥


------------------------------
3.3 ȥ쥤 (Notify Icon)
------------------------------

TOPPERS/JSP Windowsߥ졼ĶǤϡ̾ץϸʤ¸ߤ
ư롥ǤϥץνλǧʤʤʤäƤޤ
ȼΤWindowsߥ졼ĶǤϲ̱Υȥ쥤
˥ɽ졤ץब߼¹Ǥ뤫ɤǧǤ褦
ˤʤäƤ롥

ޤΥȥ쥤Υ򱦥å뤳Ȥǡץλ
ȤǽǤ롥

DEBUG_ENABLEˤTOPPERS/JSP Windowsߥ졼ΤȤʤ륦ɥ
Ūɽ褦ˤʤäƤ롥ξΤȤʤ륦ɥλ
Ȥǥץλ뤳ȤǤ롥


----------------------------
3.4 ǥХߥ졼
----------------------------

TOPPERS/JSP Windowsߥ졼ĶǤϡƥ³줿ǥХ
(LEDʤ)򥨥ߥ졼Ȥ뤿εäƤ롥ǥХߥ졼
ǤϼΤ褦ʤȤǤ롥

    ͥ뤬Ϥ򥢥硢ǥХΤ
    ͥФƳߤȯ
    ͥεưӽλǥХΤ
        줾εѴؿ̤Ѥ

ޥåԥоݤȤʤ֤ϼ¥Ȥϰۤʤ֤Ǥ (Intelץå
I/OݡȤꤷƤ)Τޥåԥ󥰤줿줿֤
ΥѴؿ𤷤ƹԤǥХ϶֤ʣʤʣư
뤳ȤǽǤ롣ޤͥʣư뤳ȤǽǤ뤬ǥ
ߥ졼󵡹ѤǤ륫ͥϥƥñǤ롣

ǥХߥ졼ϥǥեȤͭȤʤäƤ뤬config/windows
/sys_defs.h:38򥳥ȥȤ뤳Ȥ̵ˤǤ롣ͭˤˤϳ
Ԥ٥ȲСϢƤιܤͭȤʤ롣

ǥХߥ졼ϥ᡼륹åȤCOM2μ롣COM
ݡȤƤʤĶǤμ¹ԤǤϥ᡼륹åȤƱͤΤȤԤ롣
륹åȤǤΥߥ졼Ԥˤconfig/windows/device.c
COMˤ륨ߥ졼Ԥˤconfig/windows/device_com.cpp¾
Ū˥ץȤɲä롣ޤǥХѤ륽եdevi
ce.h򥤥󥯥롼ɤ롣
  #쳵ˤϸʤCOM¹®٤®
  ##JSP-1.1Ǥϡ᡼륹åǥǥХޥ͡оݳ

ͥ뤫ѤǤǥХߥ졼Ϣδؿ򲼤˼
ޤƤδؿϥǥХߥ졼̵ˤϥȹԤȤư롣

void InitializeDeviceSupportModule(void)
    ǥХߥ졼ϢνԤ
    Ū˵ư˽ԤäƤΤǡä˸ƤɬפϤʤ

void FinalizeDeviceSupportModule(void)
    ǥХߥ졼ϢνλԤ
    ͥæл˽λԤäƤΤǡǽưŪ˸ƤɬפϤʤ

int DeviceRead(unsigned long address, unsigned long size, void * storage)
    ǥХɽФ
        address : ǥХ̤뤿Υɥ쥹ͤʤ
                   (¥֤ȤΩ)
        size    : ɤ߽ФĹ
        storage : ǼؤΥݥ
        ֵ  : ɤ߽Ф줿ǡΥХȿ ޤ -1()
    
    address˥ޥåԥ󥰤줿ǥХsizeХȤΥǡɽФ
    storage˳Ǽ롣ޥåԥ󥰤줿ǥХʤ硢ؿ-1
    ֵѤ롣ȯԻCPUå֤Ȥʤ롣

int DeviceWrite(unsigned long address, unsigned long size, void * storage)
    ǥХؤν
        address : ǥХ̤뤿Υɥ쥹ͤʤ
                   (¥֤ȤΩ)
        size    : 񤭹Ĺ
        storage : ϥǡǼΰؤΥݥ
        ֵ  : 񤭹ޤ줿ǡΥХȿ ޤ -1()

    address˥ޥåԥ󥰤줿ǥХstorage˳Ǽ줿sizeХȤΥ
    񤭹ࡢstorage˳Ǽ롣ޥåԥ󥰤줿ǥХʤ
    ؿ-1ֵѤ롣ȯԻCPUå֤Ȥʤ롣


ǥХΤӥǥХޥ͡˴ؤƤϸҤ5.1򻲾ȤΤȡ

------------------
ȯĶι
------------------

------------------
4.1 ȯĶγ
------------------

ͥ¹ԤˤϡJSPͥۥåȤ˴ޤޤʳˡʲΥġ뤪ӥ饤֥꤬ɬפǤ롥

Microsoft Visual C ++ (6.0ˤƳǧ)
    ñΤˤưǽ

cygwin + gcc
    GNU Make (3.77ˤƳǧ)
    BINUTILS (ġ 2.10ˤƳǧ)
    GCC (Cѥ 2.95.2ˤƳǧ)
    NEWLIB (ɸC饤֥ 1.8.1ˤƳǧ)
    #ܺ٤ϳ䰦

----------------------------------------
4.1.1 Microsoft Visual C++Ѥ
----------------------------------------

ޤե졼롥ե졼/cfg/VC_Project/
ˤMicrosoft Visual C++ץȥե򳫤Ȥˤꡤ
Ȥ¨ӥɤǽʾ֤ˤʤ롥ɸǤϡcfg.exejsp/cfg/cfg.exe
ƺƤ롥

ΤȤƱ˥ͥå롣ͥåӥɤˤϡ
˥塼֥ץȡס֥ƥ֥ץȤסcheckerפ
򤷡ӥɥ˥塼ӥɤ򤹤롣ͥå "Windows 
ImageHlp API"ѤƤ뤿ᡢˤϥ饤֥IMAGEHLP.LIBɬפˤ
롣ץȤˤɸŪʥѥ(c:\Program Files\Microsoft Visual Studio\
VC98\Lib\IMAGEHLP.LIB)ꤵƤ뤬ξ˥饤֥꤬ʤˤϡ
FileViewIMAGEHLP.LIB塢֥եץȤɲáפ
IMAGEHLP.LIBץȤɲä롣˥ӥɤλȡɸ
Ǥϡ¹ԥեjsp/cfg/chk.exeȤƺƤ롣

TOPPERS/JSP Windowsߥ졼ĶιۤMicrosoft Visual C++Υ
 ڡѤ롥/config/WINDOWS/VC_Projectˤ
ץȥե뤪ӥڡ򳫤Ȥǡۤɬפ
ƽ֤ǵư롥

 #ΥץȤǤϥץץब褦ˤʤäƤ

°ΥץץǤϤǤ꤬Ƥ뤬ץʳΥ
ե졼եѤ硤ե졼kernel_id.
hkernel_cfg.cɬפ롥ʲˡ򼨤
 (Ǥϡե졼/jsp/cfg/cfg.exeǤȤƤ)

  (a) Visual C++ ˹Ԥ碌
      1.  оݤȤʤcfgե򤷡ƥȥ˥塼(å)
          򤹤롥
      2.  ̤־˥ӥɥƥåפѡפͭˤ
      3.  ӥɥ֤衤ޥ˼ΥޥɤǤ
            cd $(InputDir)
            cl /P /EP /I "../kernel" /I "../include" \
              /I "../config/windows" $(InputName).cfg
            ../cfg/cfg.exe < $(InputName).i
           
           #\ΤԤϹ\³Ԥ³Ϥ
           
      4.  ˼ΥեǤ
            kernel_cfg.c
            kernel_id.h
  
  (b) ޥɥ饤󤫤ľǤľ
      1. Visual C++򥤥󥹥ȡ뤷Binեˤ
          VCVARS32.BAT¹Ԥ
           
           #󥹥ȡˡ֥ޥɥ饤󤫤¹Ԥ뤿
           #ХåʤפȻꤹȤΥեϤʤ
           
      2. ե졼եΤǥ쥯ȥ
         ΥޥɤϤ
           cl /E /EP /I "../kernel" /I "../include" \
             /I "../config/windows" <ե̾> | ../cfg/cfg.exe

           #\ΤԤϹ\³Ԥ³Ϥ

kernel_id.hkernel_cfg.c줿顤ΥեץȤ
äVisual C++ӥɤԤХץब롥

°ΥץȥեǤϡ줾Ŭڤʥե˥ե뤬Ǽ
褦ˤʤäƤ롥桼ץSource FilesHeader Files˳Ǽ롥
ץʳΥץѤ硤2ĤΥե˳ǼƤ
ץȤƤ顤ץɲäɬפ롥




--------------------------
üʵ˴ؤ
--------------------------

----------------------------
5.1 ǥХߥ졼
----------------------------

----------------------------------------
5.1.1 ǥХߥ졼Ķκ
----------------------------------------

ǥХߥ졼󵡹3ĤΥץफʤ롣
    ͥ
        ǥХ椹륢ץꥱܤ줿ץࡣ
        оݤȤʤ륫ͥϥƥñ (ưʤʣ)
    ǥХޥ͡
        ͥ뤫׵ФŬڤʥǥХ׵ץ
        ࡣͥޤϥǥХưCOMˤäƼưŪ˵ư롣
        ƥñ졣
    ǥХ
        ǥХΥߥ졼Ԥץࡣͥ뤫ȯԤ
        ׵ˤäƽԤޥåԥ󥰶֤ʣʤʣ
        ưǽVisualBASICѤ뤳ȤǤ롣

ͥΥǥХߥ졼ǽκ˴ؤƤ 3.4ǥХߥ
졼 򻲾Ȥ줿

ǥХޥ͡㤪VisualBASICѥǥХȥκˤϼ
ġ뤬ɬפˤʤ롣
    Microsoft Visual C++ 6.0
    Microsoft VisualBASIC 6.0
    COM¹ԴĶ (Windows 98/NT4/2000 ޤ Windows95 + DCOM for Win95)
    Active Template Library 3.0 (Visual C++ 6.0˴ޤޤ)

ǥХޥ͡(COM)ϼΤ褦ˤƺ롣
ŪˡӥɤԤǥϿӥץ/ϿԤ

   (0. ƥ֤ʹDebugˤ뤫㳰Ѥ)
    1. Visual C++ưץȥڡdevicemanager.dsw
        
    2. ӥɤԤ
    3. OLE ViewưInterfacesIDeviceIKernel뤳Ȥ
        ǧ (ץ/DLLΥ󥹥ȡǧ)

 ץ/DLLƳʤϡκȤפ롥
    1. ޥɥץץȤư
    2. Visual C++򥤥󥹥ȡ뤷ǥ쥯ȥbin/VCVARS32.BAT¹Ԥ
        Ϣġ뤬Ȥ褦ˤ
    3. ץȤΤǥ쥯ȥذư
    4. Υޥɤ¹Ԥ
        nmake devicemanagerps.mk
    5. Υޥɤ¹Ԥ
        regsvr32 devicemanagerps.dll

 ǥХޥ͡(COM)μ¹ԥץξưˤϡ
 κȤפ롥
    1. devicemanager.exeư
    2. ưǡΥޥɤ¹Ԥ
        regsvr32 devicemanager.exe

ǥХޥ͡(COM)ưˤϡκȤפ롣

    1. ޥɥץץȤư¹ԥեư
    2. ư塢ץ "/RegServer" ĤƼ¹Ԥ
        > devicemanager.exe /RegServer

ǥХޥ͡(COM)ˤϡκȤפ롣

    1. ޥɥץץȤ饪ץ "/UnregServer" ĤƼ¹Ԥ
        > devicemanager.exe /UnregServer
    2. ¹ԥե


VisualBASICѥǥХȥ(COM)κˤϡκȤפ롣
ŪˡӥɤԤǥϿӥץ/ϿԤ

    1. Visual C++ưץȥڡdevice.dsw򳫤
    2. ӥɤԤ
    3. OLEViewưInterfacesIDeviceControl뤳Ȥ
        ǧ

VisualBASICѥǥХȥ(COM)ΰưˤϡκȤפ롣

    1. device.dllư
    2. ޥɥץץȤ鼡ΥޥɤȯԤ
        regsvr32 (ư)\device.dll

VisualBASICѥǥХȥ(COM)κˤϡκȤפ롣

    1. ޥɥץץȤ鼡ΥޥɤȯԤ
        regsvr32 /u (󥹥ȡ)\device.dll
    2. DLL

------------------------------------------------------
5.1.2 VisualBASICѥǥХȥ(COM)λȤ
------------------------------------------------------

TOPPERS/JSP Windows ΥǥХߥ졼ѤǥХϡVi
sualBASICѤƤǽǤ롣VisualBASICѤ뤳Ȥǡû
ǥߥ졼Ǥ롣ܹǤVisualBASICѥǥХȥ
פȡñʺ򼨤

TOPPERS/JSP on Windows Device Component󶡤뵡ǽϼ̤

֥ DeviceControl

    ᥽å Public Sub Connect()
        ǥХޥ͡Ȥ̿Ω롣
        ΩConnectʳΥ᥽åɤ¹ԤȼԤ롣
        ԤE_FAIL֤롣
    
    ᥽å Public Sub Close()
        ǥХޥ͡Ȥ̿λ롣
        ԤE_FAIL֤롣

    ᥽å Public Sub RaiseInterrupt(ByVal inhno as long)
        ͥץ˥ϥɥֹinhnoγߤȯ롣
        ԤE_FAIL֤롣

    ᥽å Public Sub Map(ByVal address as long, ByVal size as long)
        ΥǥХ򥢥ɥ쥹addresssizeХȤΥǥޥåԥ󥰤롣
        ʸ塢оΰ˥ȡ٥Ȥȯ롣
    
    ᥽å Public Sub Unmap(ByVal address as long)
        ɥ쥹addressޤ褦ʥޥå׺ѤΰΥޥåԥ󥰤롣
        ʸ塢оΰ˥äƤ⥤٥Ȥȯʤ
    
    ץѥƥ Public Valid as BOOL [R]
        ΥǥХͭǤȤˤTrueȤʤ롣
    
    ץѥƥ Public IsKernelStarted as BOOL [R]
        ͥ뤬ưƤTrueȤʤ롣
    
    ץѥƥ Public Offset as long [RW]
        ǡХåեΥեåȰ֤/롣
        ñ̤ϥХñ̤Ǥ롣
    
    ץѥƥ Public AccessSize as short [RW]
        ñ̤/롣
        ͤ1,2,4Τ줫Ǥ롣
    
    ץѥƥ Public Value as long [RW]
        ץѥƥOffsetΰ֤ץѥƥAccessSizeХȤ
        ȥ륨ǥ˽ɽΤ/ꤹ롣
        ԤOffsetͤAccessSizeä롣
        
        ٥OnReadˤɹߤ̵Ȥʤ롣
        ٥OnWriteˤ񤭹ߤ̵Ȥʤ롣
    
    ٥ Private Sub OnRead(ByVal address as long, ByVal sz as long)
        ͥ뤫addressϤФszХȤɹߤäȤ
        Τ롣ǥХϤȤʤͤǼʤФʤʤ
        ٥ȯˤOffsetϾ0Ȥʤ롣
        OnRead٥ȯˤValueФɹߤϤǤʤ
        
    ٥ Private Sub OnWrite(ByVal address as long, ByVal sz as long)
        ͥ뤫addressϤФszХȤνߤäȤ
        Τ롣ǥХϤͤŬڤʽԤʤФʤʤ
        ٥ȯˤOffsetϾ0Ȥʤ롣
        OnWrite٥ȯˤValueФ񤭹ߤϤǤʤ
    
    ٥ Private Sub OnKernelStart()
        ͥ뤬ưȤΤ롣
    
    ٥ Private Sub OnKernelExit()
        ͥ뤬λȤΤ롣


ǥХ֥Ȥǡñ˰ˡ˥Хåե
äƤ롣ΥХåեϥץѥƥAccessSize, Offset, Value3
ѤƼ/ꤹ뤳ȤǽȤʤ롣

Ȥơͥ뤫0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xefȤ
8ХȤΥǡƤ硢Value˳ǼƤǡϤ줾
AccessSize˽äƼΤ褦˼롣ޤValue˥ȼư
ŪOffsetAccessSizeʬ󥯥Ȥ뤿ᡢϢ³ƼϢ³
ǡ뤳Ȥˤʤ롣

        ɽ: AccessSizeˤValueͤѲ
        +----+----------------------------+
        |    |          AccessSize        |
        |+------+--------+------------+
        |    |   1  |     2  |      4     |
        +----+------+--------+------------+
        +----+------+--------+------------+
        |  1 | 0x01 | 0x2301 | 0x67452301 |
        |  2 | 0x23 | 0x6745 | 0xefcdab89 |
        |  3 | 0x45 | 0xab89 |  -̤-  |
        |  4 | 0x67 | 0xefcd |  -̤-  |
        |  5 | 0x89 | ̤ |  -̤-  |
        |  6 | 0xab | ̤ |  -̤-  |
        |  7 | 0xcd | ̤ |  -̤-  |
        |  8 | 0xef | ̤ |  -̤-  |
        |  9 |̤| ̤ |  -̤-  |
        +----+------+--------+------------+


sample1.c¤ơưƤ륿ֹɽ褦ʥǥХ
򼨤

1. Visual C++ ưͥΥץȤ򳫤

2. sys_defs.hDEVICE_ENABLEΥȤ򳰤ǥХͭˤ

3. ץȤΥեФdevice.cХץȤ

4. config/windows/device_com.cppץȤɲä

5. sample1.cdevice.h򥤥󥯥롼ɤ

6. sample1.c:87syslogμ˼ιԤ
    DeviceWrite(0x1234,1, (unsigned char)tskno);
        #̿ˤäƥݡ0x1234Ϥ1ХȤΥ쥸
        #ǥХ˥ǡϤǤ

7. ӥɤ

8. VisualBASICưɸEXEפ򤷡

9. ˥塼֥ץ -> ݡͥȡפ򤹤

10.ȥ椫
    TOPPERS/JSP on Windows Device Component Type Libraryפåơ
    OK򲡤

11.ġܥåDeviceControl򤷡եŽ(DeviceControl1)

12.٥ҤȤĥեŽ(Label1)

13.ե֥륯åForm_Load

    Private Sub Form_Load()
        DeviceControl1.connect       'ǥХޥ͡³
        DeviceControl1.Map &H1234, 1 '0x1234Ϥ1ХȤΥ쥸ޥåפ
    End Sub

14.³Form_Unload

    Private Sub Form_Unload(Cancel As Integer)
        DeviceControl1.Close    'ǥХޥ͡Ȥ³
    End Sub

15.ư򵭽Ҥ뤿ˡDeviceControl1_OnWrite

    Private Sub DeviceControl1_OnWrite(ByVal address As Long, ByVal sz As Long)
        Label1 = Str(DeviceControl1.Value)
    End Sub

16.ץ¹Ԥͥư
17.ꥢϤ'r'ϤơɽѲOK

­
 ǥХVisibleץѥƥFalseꤹС¹Ի˳ɽʤ

ץȤơwindev/devicecontrol/sampleˤWINDOWS/sample2.cѤǤ
ǥХΥ桼󥿥եVisualBASICץब롣sample2.cΥ
ͥȤȤ˻ѤСߤůؼԤξɽƤ롣

---------------------------
5.1.3 ?Ȼפä
---------------------------

ɤƤưƤʤ
    - sys_defs.hDEVICE_ENABLEιԤͭˤʤäƤޤ
    - 쥸ȥ˼Υ뤫Ĵ٤ƤߤƤ
        51789667-9F20-40AF-AF7F-9856325DFB0B
      ΥϡΥLocalServer32˵Ҥ줿ե뤬
      Ȥ뤫ɤĴ٤ƤߤƤޤͥ¹
      Υե¹ԤƤ뤫ΤƸƤ
    - VBΥǥХ¦ǤDevice.Connectȼ¹ԤƤ뤫Ĵ٤Ƥߤ
      

ޥåԥ󥰤ǼԤ
    Ǥ˥ǥХޥ͡㤬ưƤꡢݡȤޤäƤ
    פǤǽޤCtrl+Alt+Del䡢ޥ͡
    Ȥäơ˾󤷤ƤǥХޥ͡ٽλƤ顢
    ټ¹ԤƤߤȤޤԤ⤷ޤ



----------
¾
----------

------------------------------
6.1 ǥ쥯ȥꡦե빽
------------------------------

------------------------------------------
6.1.1 TOPPERS/JSP Windows-HAL ե
------------------------------------------

[jsp]
  +- [config]
  |   +- [windows]
  |       +- cpu_config.c       : ץå¸⥸塼
  |       +- cpu_config.h       : ץå¸⥸塼
  |       +- cpu_context.h      : ƥ롼
  |       +- cpu_defs.c         : m68kγߥߥ졼
  |       +- cpu_defs.h         : m68kγߥߥ졼
  |       +- debugout.c         : ǥХå󥽡⥸塼
  |       +- debugout.h         : ǥХå󥽡ե
  |       +- device.c           : ᡼륹åǥǥХߥ졼
  |       +- device.h           : ǥХߥ졼ե
  |       +- device_com.cpp     : COMǥХߥ졼
  |       +- device_com.h       : COMǥХߥ졼ѥإåե
  |       +- hal_msg.h          : ͥ륷ߥ졼 åե
  |       +- hal_resource.rc    : TOPPERS/JSP Windows ꥽ե
  |       +- hw_timer.h         : 
  |       +- icon1.ico          : ե
  |       +- messages.h         : ǥХߥ졼å
  |       +- serial_console.c   : ꥢ(󥽡)
  |       +- serial_mailbox.c   : ꥢ(᡼ܥå)
  |       +- serial_pipe.c      : ꥢ(̾եѥ)
  |       +- start.c            : ȥå
  |       +- sys_config.c       : ƥ¸⥸塼
  |       +- sys_config.h       : ƥ¸⥸塼
  |       +- sys_defs.h         : ƥ¸ե
  |       +- vwindows.h         : windows.hͲѥإåե
  |
  +- [WINDOWS]
      +- kernel_cfg.c           : ե졼ե
      +- kernel_id.h            : ưIDե
      +- sample1.c              : ץץ
      +- sample1.h              : ץץ إå
      +- sample2.c              : ץץ2 ůؼ
      +- sample2.h              : ץץ إå
      +- [vc_project]
          +- Toppers.dsp        : Visual C++ ץȥե
          +- Toppers.dsw        : Visual C++ ڡ


---------------------------------------------------------
6.1.2 TOPPERS/JSP Windows ݡȥ⥸塼 ե
---------------------------------------------------------

[windev]
  +- [devicemanager]            : ǥХޥ͡(COM)
  |   +- device.cpp             : ǥХ֥
  |   +- device.h               : ǥХ֥ե
  |   +- device.rgs             : ǥХ֥Ͽե
  |   +- devicemanager.cpp      : ᥤץ
  |   +- devicemanager.dsp      : Visual C++ ץȥե
  |   +- devicemanager.dsw      : Visual C++ ڡ
  |   +- devicemanager.h        : ֥ե
  |   +- devicemanager.idl      : MIDL֥ȵҥե
  |   +- devicemanager.rc       : ꥽ե
  |   +- devicemanager.rgs      : AppID쥸ȥ졼ե
  |   +- devicemanagerCP.h      : ͥݥȥץ
  |   +- devicemanager_?.c      : ץ/֥
  |   +- devicemanagerps.def    : ץ/
  |   +- devicemanagerps.mk     : ץ/ Makefile
  |   +- informat.bin           : Information֥Ͽե
  |   +- information.cpp        : 󶡥֥
  |   +- information.h          : 󶡥֥ե
  |   +- information.rgs        : Information쥸ȥ졼ե
  |   +- kernel.cpp             : ͥ륪֥
  |   +- kernel.h               : ͥ륪֥ե
  |   +- kernel.rgs             : ͥϿե
  |   +- messages.h             : åե (С)
  |   +- range.h                : 󥸷ե
  |   +- resource.h             : ꥽ե
  |   +- stdafx.cpp             : ᥤ󥪥֥
  |   +- stdafx.h               : ץꥳѥоݥإå
  |
  +- [devicecontrol]            : VBѥǥХȥ(COM)
      +- bmp00001.bmp           : ȥɽѥ
      +- device.cpp             : DLLϢ
      +- device.def             : ץե
      +- device.dsp             : Visual C++ ץ
      +- device.dsw             : Visual C++ ڡ
      +- device.h               : ֥ե
      +- device.idl             : MIDL֥ե
      +- device.rc              : ꥽ե
      +- deviceCP.h             : ͥݥȥץ
      +- deviceco.bmp           : ץꥱ󥢥
      +- devicecontrol.cpp      : ǥХȥ
      +- devicecontrol.h        : ǥХȥե
      +- deviceps.def           : ץ/
      +- resource.h             : ꥽ե
      +- stdafx.h               : ץꥳѥоݥإå
      +- stdafx.cpp             : (äˤʤ)
      +- [sample]               : ǥХΥץ
          +- form1.frm          : ե (ƥ)
          +- form1.frx          : ե (Хʥ)
          +- sample2_ui.vbp     : VisualBASICץȥե
          +- sample2_ui.vbw     : VisualBASICڡ

------------------
С
------------------
С3夫ꡢ2夬JSPСǸϥХեåβ̣롣

    2001ǯ1112  Release 1.1.6
        Release1.2˸ޤޤĴ
            - ɸӥѥڡ & ץȤѹ
            - ̵ԤѶåȥ󥹥åɤƳ
            - ΥɥȤν

    2001ǯ11 1  Release 1.1.5
        sample1.cΥӥ
            - ɥsample1.cΥӥˡˤcfg.exeΥѥְäƤΤ
                # jsp/WINDOWS/cfg.exe -> jsp/cfg/cfg.exe
            - 嵭ȼsample1.cѤΥץȥڡ

    2001ǯ1024  Release 1.1.4
        ǥХߥ˽к
            - COMǥХߥ夬γ׵ʤХ

    2001ǯ 913  Release 1.1.3
        ͽк
            - sns_dpnCPU㳰FALSEȤʤХ
            - ShellNotifyIconäʤХ
            - sample1.cCPU㳰򥢥ȿ顢桼㳰ؽ (㳰к)

    2001ǯ 729  Release 1.1.2
        ꥢ륳󥽡ˤ륹å˲β
            - KeyEventTrapperCALLBACK꤬­ƤΤ

    2001ǯ 324  Release 1.1.1
        ͥΥǥХλ̵Ԥβ
            - ǥХλ٥ȤSIGNAL֤ˤ˺Ƥޤ
               ͥ뤬̵Ԥ˴٤äƤޤХ

    2001ǯ 223  Release 1.1
        TOPPERS/JSP release 1.1˹碌
            - ǥХޥ͡Υե̾˽
            - ǥХȥΥե̾˽
            - sample2.cǥХǥѤ˽ľ
            - ǥХޥ͡㤬ʳβ(SSTP)б

    2001ǯ 220  Release 1.0.8
        ХեåȤ
            - HALMSG_MESSAGESWM_USERWM_APP
            - PrimaryDialogHandle֤

    2001ǯ 129  Release 1.0.7
        ǥХȥ꡼Ѥ˽
            - եåν/ɲ
            - OnDrawؿν
            - IDL helpstringɲ
            - device_com.cpp˥Ȥɲ

    2001ǯ 112  Release 1.0.6
        ޥ˥奢ΥǥХݡȤ˴ؤɲ

    2001ǯ 1 4  Release 1.0.5
        sys_defs.hɤФ
        λ롼ΰ

    2000ǯ1230  Release 1.0.4
        ǥХݡȵĤ (COM)
        ΥϥɥɽʤΤˤ (HANDLE->HWNDʤ)

    2000ǯ1221  Release 1.0.3
        ǥХݡȵĤ (᡼륹å)

    2000ǯ1212  Release 1.0.2
        Visual C++Υץȥեΰ֤ư
        ʸϤΥߥ

    2000ǯ1124  Release 1.0.1
        㳰ȯʤХ
        󥽡륷ꥢɥ饤Фå˲Τ
    
    2000ǯ1115  Release 1.0
        ǽΥ꡼

ʾ
