
// ---- `

  œKׂ̈̃gpʂ̗}
    MEMOPTIMIZE = 0`2

    CPUɂȉ̐lZbg邱Ƃ҂Ă
      MEMOPTIMIZE` c Celeron333Aȍ~̃ZJhLbVL@
      MEMOPTIMIZE = 0   c x86
      MEMOPTIMIZE = 1   c PowerPC̃fXNgbvpRISC
      MEMOPTIMIZE = 2   c StrongARM̑gݍݗpRISC


  RpC̈E߂l̍œK
    E߂lint^ȊOw肵ꍇɁAœKLɓȂ
    RpC̒`łB
    ʏ common.h ̕gp܂B
      REG8 c UINT8^ / (sizeof(REG8) != 1)̏ꍇ ʃrbg0fill鎖
      REG16 c UINT16^ / (sizeof(REG16) != 2)̏ꍇ ʃrbg0fill鎖
@@@lZbg鑤0fillAQƑ0fill̂ƌȂ܂B


  OŠ̑I
    OSLANG_SJIS c Shift-JIS̊R[h߂
    OSLANG_EUC  c EUC̊R[h߂

    OSLINEBREAK_CR   c MacOS   "\r"
    OSLINEBREAK_LF   c Unix    "\n"
    OSLINEBREAK_CRLF c Windows "\r\n"

      ݂͈ȉ̃\[XR[hŌʂɐݒ肵Ă܂B
        (Windows APIɂ \r\n̏ꍇ\n̏ꍇ̂Łc)
        Ecommon/_memory.c
        Edebugsub.c
        Estatsave.c

    (milstr.hIp)
    SUPPORT_ANK      c ANK񑀍֐N
    SUPPORT_SJIS     c SJIS񑀍֐N
    SUPPORT_EUC      c EUC񑀍֐N

      milstr.hłׂĒ`ꂽ܂܂ɂȂĂ܂B
        ver0.73milstr.h̒`O compiler.hŎw肵ƂȂ܂B


@CPUCORE_IA32
@@IA32A[LeN`̗p
@@@i386cgpꍇ̒ӓ_
@@  ECPU panic x\ msgbox() Ƃ API gp܂B
@@@@compiler.h œKɒ`ĂB
@@@Esigsetjmp(3), siglongjmp(3) A[LeN`͈ȉ define 
@@@@compiler.h ɒǉĂB
@@@@----------------------------------------------------------------------
        #define sigjmp_buf              jmp_buf
        #define sigsetjmp(env, mask)    setjmp(env)
        #define siglongjmp(env, val)    longjmp(env, val)
@@@@----------------------------------------------------------------------

  CPUSTRUC_MEMWAIT
@@@cpucore\̂ɃEFCglړ(vramop)

@SUPPORT_CRT15KHZ
@@@15.98kHzT|[g(DIPSW1-1)

@SUPPORT_CRT31KHZ
@@@31.47kHzT|[g
@@@Fellow^Cv͂

@SUPPORT_PC9821
@@@PC-9821g̃T|[g
@@@Rł 386K{łB
@@@܂ SUPPORT_CRT31KHZKvł(nC]BIOSgp)

@SUPPORT_PC9861K
@@@PC-9861K(RS-232CgI/F)T|[g

@SUPPORT_IDEIO
@@@IDE I/Oxł̃T|[g
@@@ł ATÃ[hxłȂc

@SUPPORT_SASI
@@@SASI HDDT|[g
@@@`ȂΏ펞IDEƂč쓮܂B

@SUPPORT_SCSI
@@@SCSI HDDT|[gcSRȂ

@SUPPORT_S98
@@@S98O擾

@SUPPORT_WAVEREC
@@Soundx wavet@C̏o֐T|[g
@@Ao TEho͂~܂̂Ł@قڃfoOp


// ---- screen

  PC-9801V[ỶʃTCY͕W 641x400B
  VGAł͎܂Ȃ̂ IVGAɎ߂ׂ ʉTCY width + extend
ƂB
  8 < width < 640
  8 < height < 480
  extend = 0 or 1

typedef struct {
	BYTE	*ptr;		// VRAM|C^
	int		xalign;		// xItZbg
	int		yalign;		// yItZbg
	int		width;		// 
	int		height;		// c
	UINT	bpp;		// XN[Frbg
	int		extend;		// g
} SCRNSURF;

  T[tFXTCY (width + extern) x heightB


const SCRNSURF *scrnmng_surflock(void);
  ʕ`Jn

void scrnmng_surfunlock(const SCRNSURF *surf);
  ʕ`I(̃^C~Oŕ`)


void scrnmng_setwidth(int posx, int width)
void scrnmng_setextend(int extend)
void scrnmng_setheight(int posy, int height)
  `TCY̕ύX
  EBhETCY̕ύX
  tXN[ł \̈ύXB
  SCRNSURFł͂̒lԂ悤ɂ
  posx, width 8̔{

BOOL scrnmng_isfullscreen(void) c NP2RAł͖gp
  tXN[Ԃ̎擾
    return: 0ŃtXN[

BOOL scrnmng_haveextend(void)
  Ԃ̎擾
    return: 0 gT|[g

UINT scrnmng_getbpp(void)
  XN[Frbg̎擾
    return: rbg(8/16/24/32)

void scrnmng_palchanged(void)
  pbgXV̒ʒm(8bitXN[T|[ĝ)

RGB16 scrnmng_makepal16(RGB32 pal32)
  RGB32 16bitF쐬B(16bitXN[T|[ĝ)



// ---- sound

NP2̃TEhf[^ sound.c̈ȉ̊֐擾
  const SINT32 *sound_pcmlock(void)
  void sound_pcmunlock(const SINT32 *hdl)


SOUND_CRITICAL  Z}tH(see sndcsec.c)
SOUNDRESERVE    \obt@̃TCY(~b)
  TEh荞ݏꍇ̎wB
  荞݂̍ő剄؎ԂSOUNDRESERVEŎwB
  (Win9x̏ꍇAOŃOobt@̂ 荞ݖEw莞Ԓʂ
  TEhCĝŁȀ͕sv)


UINT soundmng_create(UINT rate, UINT ms)
  TEhXg[̊m
    input:  rate    TvO[g(11025/22050/44100)
            ms      TvOobt@TCY(~b)
    return: lobt@̃TvO

            msɏ]Kv͂Ȃ(SDLƂobt@TCY肳̂)
            NP2̃TEhobt@ Ԃl݂̂𗘗pĂ܂B


void soundmng_destroy(void)
  TEhXg[̏I

void soundmng_reset(void)
  TEhXg[̃Zbg

void soundmng_play(void)
  TEhXg[̍Đ

void soundmng_stop(void)
  TEhXg[̒~

void soundmng_sync(void)
  TEhXg[̃R[obN

void soundmng_setreverse(BOOL reverse)
  TEhXg[̏o͔]ݒ
    input:  reverse 0ōE]

BOOL soundmng_pcmplay(UINT num, BOOL loop)
  PCMĐ
    input:  num     PCMԍ
            loop    0Ń[v

void soundmng_pcmstop(UINT num)
  PCM~
    input:  num     PCMԍ



// ---- mouse

BYTE mousemng_getstat(SINT16 *x, SINT16 *y, int clear)
  }EX̏Ԏ擾
    input:  clear   0 Ԃ擾ɃJE^Zbg
    output: *x      clearxJEg
            *y      clearyJEg
    return: bit7    {^̏ (0:)
            bit5    E{^̏ (0:)



// ---- serial/parallel/midi

COMMNG commng_create(UINT device)
  VAI[v
    input:  foCXԍ
    return: nh (sNULL)


void commng_destroy(COMMNG hdl)
  VAN[Y
    input:  nh (sNULL)



// ---- joy stick

BYTE joymng_getstat(void)
  WCXeBbN̏Ԏ擾

    return: bit0    {^̏ (0:)
            bit1    {^̏
            bit2    {^̏
            bit3    E{^̏
            bit4    A˃{^P̏
            bit5    A˃{^Q̏
            bit6    {^P̏
            bit7    {^Q̏


// ----

void sysmng_update(UINT bitmap)
  ԂωꍇɃR[B

void sysmng_cpureset(void)
  ZbgɃR[



void taskmng_exit(void)
  VXeIB

