                 SYSTEM 3.5 Technical documentation

ܼ

  0. Ϥ
  1. SYSTEM 3.5 
  2. SYSTEM 3.5 Υǡե
  3. ǡե (.ald) Υեޥå
  4. CG Υեޥå
   4.1 VSP եޥå
   4.2 PMS եޥå
   4.3 QNT եޥå
  5. ʥꥪǡΥեޥå
   5.1 ׻ˤĤ
   5.2 for ʸΥ󥳡
   5.3 while ʸΥ󥳡
   5.4 ٥륳֤( ~label  ~0, cali:  ~~cali:)
   5.5 G ޥɤΥ󥳡
   5.6 黻
   5.7 0x2f ޥɳĥ
     5.7.1 Txx ޥ
     5.7.2 inc/dec
     5.7.3 ʸޥɤȤ¾ 2F command
   5.8 ̤⥳ޥ
  6. SYSTEM 3.6 extension
  7. SYSTEM 3.8 extension
  8. SYSTEM 3.9 extension
   8.1 System39.ain եޥå
   8.2 å System39.ain ؤγǼ


0. Ϥ

   ΥɥȤϡSYSTEM 3.* ȯåȤǤϾܤƤʤ
 ˤĤơʬϰϤǽ񤤤ΤǤ


1. SYSTEM 3.5 
   
   SYSTEM 1  SYSTEM 3 λ塣ȤƤϥ󥹣رKINGޤǤǤ
 ɤΥबɤΥƥȤäƤϲ褫 HDD*.DOC äƤ
 פΤǤ򤴤󤯤


2. SYSTEM 3.5 Υǡե

 SYSTTEM 3.5 ΥǡեϰʲΤ褦̤Ǥޤ

 a) ʥꥪե
 b) CG ե
 c) WAV ե
 d) MIDI ե
 e) ǡե
 f) ꥽ե
 g) ֥ǡե
 h) ¾

 a) ʥꥪեϥΥʥꥪǡäƤꡢʸϡή
 ʤɤԤץȤ󥳡ɤäƤޤϥʥꥪ
 ǡΣܤ鳫Ϥޤʥꥪեϥ¹ԤˤɬܤǤ
 ¾ CG ե WAV եʤɤΥǡ̵ƤưǽǤ
 
 b) CG եϥեǡäƤޤSYSTEM 3.5 ǻѲǽ
 եޥåȤ VSP/PMS8/PMS16/BMP8/BMP24/JPEG ǤBMP8/24  JPEGǡ
  SYSTEM 3.5 ȯåȤ˸Ȥɲä줿ΤǤޤ VSP
 ϣΥ˻ȤƤΤǡƮԻIIʤɤε줤ܿ
 ݤ˻Ѥޤä SYSTEM 3.5 ̾Ȥ CG եޥåȤ
 PMS8/16 ȸȤˤʤޤPMS8 ϥѥåȤȤѤΥեޥå
 ǡPMS16 ϥǡԥͤ򼨤쥯ȥ顼ΥեޥåȤǡ
 ԥ 16 bit ΥǡäƤޤޤ PMS16 Ϧͥ(Ʃ)
 ⰷǤޤSYSTEM 3.9  24bit顼򰷤 QNT եޥåȤ
 ɲäޤܤ 4.3 򻲾ȤƤ

 c) WAV ǡ WAV ΥեǸ̲䥻դʤɤ˻ȤƤޤ

 d) MIDI ե standard midi file ǡǡβڱդ˻Ȥ
 ޤ¿ΥǤϲڤ CD-DA ΤߤȤäƤޤMIDI Τߡ뤤
 MIDI  CD-DA ξб줾Υबޤ
   SYSTEM 3.5 (Windows)Ȥν MIDI ե format 0 ΤߤʤΤ
 դɬפǤexclusive message ƩŪ˰餷Τǡͳ
 GS-resetäGSΥǡĤ餹Ͻ褦Ǥ

 e) ǡեϡѿʸѿե˽񤭽ФΤǤ
 ɬפ˱ƥʥꥪѿɤ߹ߤޤ

 f) ꥽եϡޥηȥ˥᡼ޥ
 ǡǼƤޤޤ DARCROW ǤΤ߻Ѥޤ

 g) ֥ǡϡƥȿѿʸѿΤ٤Ƥޤ
 ֥ǡ(*.asd)ȿѿʸѿΰ¸ǡΣब
 ޤ¸ξϡǤդΥե̾դǤΤǡh) 
 ¾Υǡեȶ̤դ뤳ȤǤޤ

 h) ¾ΥǡƤΤȤƤϳեȥǡե뤬
 ޤ
    եϡPC9801γΰ16x16ɥåȤΥӥåȥޥåץǡ¤٤
 ΤǡꥸʥγɽΤ˲äơ¸ʸεۼܻ
 ƤΤǤɳեϡ֤ʤĤפǻȤ줿Τߤǡ
 SYSTEM35.EXE Version 2.x ʹߤǤϥݡȤ餵ʤʤޤޤ
 ¸ʸ(ޤʸ䥮ꥷʤ)ϤʹߤΥǤⵡ¸Υɤ
 ³ƻȤƤޤSYSTEM 3.9 ǤϺƤӳΥݡȤ褹褦Ǥ

   ǡեϡŪˤϡʥꥪѿ¸Τȹͤ
 ǤޤޥåץǡΤ褦ˤ餫ᥲ°ƤΤ⤢С
 вϿ뤿ˡե˽񤭽Ф⤢ޤ
 ˤѤˤ硼ΥޥåץǡΤ褦 e)ΥǡեѤǤ
 Τ⤢ޤ

3. ǡե (.ald) Υեޥå

  SYSTEM 3.5 Υǡ ald ȤĥҤΤĤ֥ե˥ǡ
 μˤޤȤƤޤĤ ald ֤Ϻ65535ĤΥǡ
 ĻޤʾΥǡ򰷤䡢HDD  CD-ROM ̡
 ǡ֤ HDD ̤ͭ򸺤餷ʣΥ֤Ļ
 ޤξ硢hoge_sa.ald, hoge_sb.aldΤ褦˥ե̾Ĥޤ
 sa,sb,sc...ѤɬϢ³ˤɬפϤޤWindows Ǥϥ쥸ȥ
 ˼ºݤΥե̾񤫤ޤ

   ald Υַ礭ʬơĤι¤ʤäƤޤ

 +---------+
 | header1 |
 +---------+
 | header2 |
 +---------+
 |  data   |
 |         |
 +---------+
 
   header1 ϥˤƥǡΰ֤򼨤Ƥޤñ̤256bytesǡ
 ХȤɽޤǽΣХȤ header2 ؤΥݥ󥿤ǡΣХȤ
 data κǽΥǡؤΥݥ󥿤Ǥʹߤ data ΣܤΥǡ
 Υǡ....ȤʤäƤޤheader1/header2/data θġΥǡ 256bytes
 ǴݤƤΤǡheader1  256bytes ñ̤ˤʤäƤΤǤ

   header2 ϥʥꥪǡؼǡɤΥեβܤˤ뤫
 򼨤ƤޤʥꥪCGΥǡֹ̤椬Ƥơʥꥪ
 Ϥֹꤷƥǡɤ߹ߤޤֹ̤бե
 ΰ֤ header2 ˽񤫤Ƥޤheader2  ХȤǣĤֹб
 ƤꡢǽΣХȤǡܤΥ֤(1)򼨤ΣХȤǡ
 ֤βܤΥե뤫򼨤ޤ

   data ΤΤˤĤƤ⡢إåȼ¥ǡʬޤإå
 32ХȰʾĹǼΤ褦ˤʤäƤޤ

	int32 prt;
	int32 size;
	int32 time_l;
	int32 time_h;
	char  name[?];

   ptr ϼºݤΥǡؤΥإåХɥ쥹Ǥsize ϥǡ礭
 ɽޤ time_l  time_h  Windows ͭ(?)ͤǡǡκ֤
 κǽդηв֤ʥäɽΤǤname ϥ
 ΥǡΥե̾ǡ16ХȰʾĹޤ16Х̤λ
 ϣǥѥǥ󥰤ޤޤإåȥǡʻ 256Хñ̤ˤʤ褦
 ˥ǡθϣǥѥǥ󥰤ޤ


4. CG Υեޥå

   ߤ SYSTEM 3.5 ǻѤƤ CG եޥåȤ VSP/PMS8/PMS16 
 ΣǤˤ GL2  GL3 ʤɤΥեޥåȤ⤢ޤǤ
 ȤƤޤ

   VSP եޥåȤϣѤΥեޥåȤǡSYSTEM 3.5 ˤƤϡƮ
 Իԣ󥹣ʤɡPC98Ѥ˽Фΰܿ˺ݤƻȤƤޤ

   PMS8եޥåȤ 256ѤΥեޥåȤǡSYSTEM 3 256б
 ȤƤޤإå SYSTEM 3  SYSTEM 3.5 ȤǤϰۤʤä
 ޤ

   PMS16եޥåȤϣѤΥեޥåȤǤ沽ˡ PMS8ܦ
 ȤäȤǡPMS8 ¿ζʬäƤޤޤ PMS16 
 ͥ򰷤Ǥޤͥ 8bitξ̤PMS8 
 沽ˡȤޤ

 ǤϸġΥեޥåȤˤĤƾܤߤƹԤޤ

 4.1 VSP եޥå

   VSP ϤȤȡPC98x1ѤΥեޥåȤȤо줷ᡢץ졼󣱣
 Υϡɥ̩ܤ˴طƤޤPC98x1 Σ⡼ɤ (R)(B)
 (G)(I)ΣĤΥץ졼νŤ͹碌ȣ棱ΥѥåȤ
 äƼ¸ƤޤѥåȤȤΤǡºݤˤ֡Υץ졼
 ƤϤޤ̵̣Τޤ
   򼨤ȡɸ(x,y)Υԥ뤬ĤΥץ졼 R=1,B=1,G=1,I=1
 Τ褦ΩäƤȡΥԥ15(00001111b)ΥѥåȤ򻲾Ȥƿ
 ФޤѥåȤ RGB  4bit ξ 4096ɽǤޤ
   VSPեޥåȤϥץ졼󤴤Ȥ˰̤ޤ SYSTEM 3.5 ư
 Τ 256ʾδĶʤΤǡ256ξϥץ졼󷿤Υǡѥå
 ԥѴɬפޤޤץ졼󷿤Υǡ 1byteɤ
 ȡץ졼 8ԥʬޤΤդɬפǤ

   VSP إå
   VSP Υإåϼ 58ХȤ鹽ޤ

	int16 x0;
	int16 y0;
	int16 width;
	int16 height;
	int8  rsv;
	int8  pallet_bank;
	int8  pal[3*16];

 (x0,y0) ϡCGɽ֤ɽޤʥꥪɽ֤λΤʤ
 ͤȤޤx0  8ǳä礭ˤʤäƤޤΤǡx0=10 Ȥä
 ϼºݤˤ (80,y0) ΰ֤ɽޤ

 (width, height)  CG 礭ɽޤwidthϼºݤˤϣǳä礭
 ʤäƤޤϡץ졼󷿤ΥǡˤʤäƤ뤿Ǥץ졼
 Υǡξ硢ХȤɽΤϣԥʬäᡢwidth ˤ
 ͤХȿǼͭäȹͤޤäCGβ
 Ͼˣܿˤʤޤܿʳˤϡ;ʬƩ
 ѥå(ץ饤)ȤǼ¸ޤ

 rsv ϸߤΤȤȤƤޤ

 pallet_bank ϡSYSTEM 3 λ 256бǡVSPեɤ߹ޤ
 뤿ˡ256ĤΥѥåȤΤɤξ 16ʬΥѥåȤ֤ޤ
 bank=0  0-15, bank=1  16-31 ȤʤޤˡȤƤϡplane->packed
 Ѵκݤ˾4bitpallet֤ bitΩƤޤbank=1 ʤ '| 0x10'
 ȤǤʥꥪ¦ѥåȥХ󥯤ꤹ뤳ȤǤޤ
 ʥꥪ¦飱٤ѥåȥХ󥯤λ̵꤬ϤΥإåξ󤬻
 ޤ(ϼ¸⤷ޤ)

   ѥå
   ѥåȤ 3Х*16 ĤΥǡǡB,R,G νˣĳǼƤޤ
 4bitΤߤѤޤ


   VSP ̥
   VSP ΰ̥ɤϼΤ褦ˤʤäƤޤϺ鱦ء夫鲼
 Ǥ

 00, len;
 ľΥץ졼(len+1)ĹƱ

 01, len, pic;
 Х(pic)η֤Ĺ(len+1)

 02, len, pic1, pic2;
 Х(pic1, pic2)η֤Ĺ (2*(len+1))

 03, len;
 ĤΥץ졼(len+1)ĹƱ

 04, len;
 ֤Υץ졼(len+1)ĹƱ

 05, len;
 ФΥץ졼(len+1)ĹƱ

 06;
  03, 04, 05 ΥѥˤĤơθ³ 03,04,05 Υѥ
 ȿžΤƱȤ롣

 07, pic
 picΤΡɤȽŤʤǡ (00-07) ФŬѡ

 08-255
 ΥǡΤΡ


 4.2 PMS եޥå

   PMS Ϻǽ 256ǡ򰷤о줷ޤ 64kⰷ褦
 SYSTEM 3.5 ˰ܹԤݤ˳ĥޤ256ξϥѥåɥԥ뷿
 ǡ򰷤64kξϥ쥯ȥ顼Υǡ򰷤ޤ

   PMS إå
   PMS ΥإåϼΤ褦ˤʤäƤޤ

	char  sig[2]; 'PM'
	int16 ver
	int16 hdr_size;
	int8  bpp;
	int8  bppS;
	int8  trans_pal;
	int16 palett_bank;
	int32 rsv;
	int32 x0;
	int32 y0;
	int32 width;
	int32 height;
	int32 data_ptr;
	int32 pallet_ptr;
	int32 comment_ptr;

 sig ϥǡΥޥåʥС 'PM' ȤǡäƤޤ

 ver ϥǡΥСǡߤ 1 äƤޤ

 bpp ϥǡ bit per pixel  8ޤ16Ǥ256ǡξ 864k
 ξ 16Ǥ

 bppsϦͥ bit per pixel ̾8Ǥ

 trans_pal Ʃ᤹ѥåȤֹǤ̾ϥʥꥪ꤬Τ
 Ѥޤ

 pallet_bank  ǡΥѥåȤΤɤʬ򥷥ƥž뤫
 ɽޤ̾ 256žΤǤCGǡʲȤä
 ʤˤϡΤž뤳ȤǤޤpallet_bank  16bit ξ
  256Ĥ 16ĤŤĤʬ䤷Ƥɤʬž뤫ꤷޤbit-on 
 žǤLSB 0-15, MSB  240-255 Ǥ

 (x0, y0)  CG ɽ֤ǤVSP Ȱäƣǳä礭ǤϤʤºݤ
 礭ޤɽ֤ϥʥꥪ¦ѹǽǤ

 (width, height)  CG 礭Ǥºݤ礭äƤޤ

 data_ptr ϥǡƬԥǡؤХɥ쥹ޤ

 pallet_ptr  bppξˤϥѥåȤؤХɥ쥹ޤ
 ξˤϦͥǡؤХɥ쥹ޤ

 comment_prt ϥǡ˥ȤĤǤơΥǡؤХɥ쥹
 ꤷޤ

   ѥå
   ѥåȤ RGB  8bit  RGB ν 256 ޤ

   PMS ̥
   PMS ΰ̥ɤϼΤ褦ˤʤäƤޤϺ鱦ء夫鲼
 Ǥ

 0xff, len;
 ľΥ饤ƱĹ (len+3:8bit, len+2:16bit)
 16bitξϡĹϥԥñ(2byte)ǡʲƱͤǤ

 0xfe, len;
 ľΥ饤ƱĹ (len+3:8bit, len+2:16bit)

 0xfd, len, pic,
 1byte  picǡϢ³Ĺ (len+4:8bit, len+3:16bit)

 0xfc, len, pic1, pic2
 2byte (pic1, pic2) ǡϢ³Ĺ ((len+3)*2:8bit, ((len+2)*2):16bit))

 0xfb
 ΥǡƱ(PMS16)

 0xfa
 ΥǡƱ(PMS16)

 0xf9, len, pic_h, pic_l1, pic_l2, .... (PMS16)
 ԥ֤οκΤϢ³Ĺ(len+1)
 ƥԥΤR ξ 3bit, G  2bit, B  2bit ƱǡR β 
 2bit, G  4bit, B  2bit ۤʤȤ̤ΰۤʤʬΤߤ pic_l2, 
 pic_l3... ɽ( RGB  5bit, 6bit, 5bit ɽ)
 pic_h, pic_l1 ǺǽΥԥ顢RGB ξ̤Ʊǡ̤
 ۤʤʬ pic_l2, pic_l3... ǹ
 
 0xf8, pic
 picΤΡɤƱԥѡ8bit Ǥ pic  1byte, 16bit Ǥ 2byte.

 0xf7-0x00
 ǡΤ 8bitǤ 1byte, 16bit Ǥ 00-f7 μΥɤϤ٤(00-ff)
 Ѥƥԥ


 4.3 QNT եޥå

   QNT  Only You ꡦ륹 Ƴ줿CGեޥåȤǤ24bit
 顼򰷤ȤǤޤLZ77  + ԥ¤Ѥʬ Ȥ
 򤷤ƤޤLZ77 (Zlib)ˤĤƤ RFC1950,1951 Ƥޤ
 ΤǡǤޤ

 QNT إå

 ߤΤȤꥯ륹ǻȤ줿 Version 0簭ʤ Version 1 ޤ

 QNT إå Version 0

     char   sig[4]; 'QNT\0'
     int32  0;
     int32  x0;
     int32  y0;
     int32  width;
     int32  height;
     int32  bpp;
     int32  rsv(?)
     int32  pixel_size;
     int32  alpha_size;

 QNT إå Version 1

     char   sig[4]; 'QNT\0'
     int32  1;
     int32  header_size;
     int32  x0;
     int32  y0;
     int32  width;
     int32  height;
     int32  bpp;
     int32  rsv; (?)
     int32  pixel_size;
     int32  alpha_size;

 QNT إå Version 2

     char   sig[4]; 'QNT\0'
     int32  2;
     int32  header_size;
     int32  x0;
     int32  y0;
     int32  width;
     int32  height;
     int32  bpp;
     int32  rsv; (?)
     int32  pixel_size;
     int32  alpha_size;
     FILETIME lastmake; ?
     FILETIME lastchange; ?
     FILETIME lastaccess; ?

  sig ϥǡΥޥåʥС 'QNT\0' äƤޤ(\0 ϥ̥ʸ)

  header_size ϥإå礭ХȿɽƤޤVersion 0 Ǥ 48
  ХȸǤ

  (x0, y0)  CG ɽ֤λǤ

  (width, height)  CG 礭λǤ

  bpp ϥǡο礭̾ 24(bpp) Ǥ

  rsv Ǹߤ 1 Ǥ

  pixel_size  LZ77 ̸ΥԥǡǤ

  alpha_size  LZ77 ̸ΥեԥǡǤ

    pixel_size  alpha_size  0 ξϤΥǡ¸ߤޤ


  pixel ǡΰ

    pixel ǡϥԥ¤ٴԤä塢LZ77 ̤ǰ̤Ƥޤ
  ޤ zlib  uncompress ŸޤŸǡϼΤ褦˥ԥ
  ¤ǤޤΤ¤Ӵޤ
  B(x,y), B(x,y+1), B(x+1,y), B(x+1,y+1), G(x,y), G(x,y+1), G(x+1,y),
  G(x+1,y+1), R(x,y), R(x,y+1), R(x+1,y), R(x+1,y+1)

  ˡ(x-1,y)Ⱦ(x,y-1)ʿѤ ߤΥԥ(x,y)Τ
  ԥǡˤʤޤ
  
  PIC(x,y) = (PIC(x-1,y) + PIC(x,y-1)) / 2 - pic(x,y)

  alpha ǡΰ

    alpha ǡ¤Ӵ LZ77 ̤Ǥuncompress Ÿȡ
  褦¤Ӵޤ

  ALPHA(x,y) = (ALPHA(x-1,y) + ALPHA(x,y-1)) / 2 - alpha(x,y)


5. ʥꥪǡΥեޥå

  ʲ˥ʥꥪǡΥإå򼨤ޤ

	char   sig[4];
	int32  data_ptr;
	int32  size;
	int32  no;
	int16  fn_len;

	char   fn[?];

 sig ϥʥꥪǡΥСǡSYSTEM 3.5 εܲ󥹤'S350'
 ǿΤΤǤ 'S380' ȤʤäƤޤ溮𤷤äƤȰۤʤ
 ⤢ޤ

 dat_prt ϼºݤΥʥꥪǡƬؤХɥ쥹Ǥޤʥꥪ
 ̿Υɥ쥹ϡΥإåκǽ餫Хɥ쥹Ѥޤ

 size ϥإåޤ᤿ǡΥ򼨤Ƥޤ

 no ϤΥǡֹǡ֤ǽΥǡǤ

 fn[] ϤΥʥꥪǡΥѥΥե̾ǡĹ fn_len 
 ǼޤѥΥʥꥪǡǤΥڡפ &#TEST.ADV 
 Τ褦˽񤭤ޤΥե̾ fn ˳Ǽ졢no ֹդޤ

 ʥꥪǡǰǡϼΤ褦ʤΤǤ
 * ޥ (1-3byte)
 * ХȥǡޥɰΣġgetc
 * Хȥǡǡơ֥ͥǡWORDgetw
 * ХȥǡΥɥ쥹DWORDgetdw
 * ׻(0x7fǽλ)ޥɰcali
 * ʸ(':'ǽλ)ޥɰ
 * ʸ(0x00ǽλ) ơ֥ǡʸǡޥɰ


 5.1 ׻ˤĤ
   ׻ϥޥɤͿͤѿʤɤΰΤ˻Ȥޤ
 ͤѿͤ˲øʤɤα黻ä뤳ȤǤޤ

 1byte 2byte
    00h       [Хȥ]
         00h  ͽ
         01h33h  (3.51)ĥ
         34hFFh  word(0034h00FFh)
    01h3Fh  [Хȥ]
         00hFFh  word(0100h3FFFh)
    40h73h  byte(00h33h)
    74h7Eh  ܱ黻(&|^*/+-=<>\)
              7Eh : ʤ(!=)
              7Dh : 礭(>)
              7Ch : 꾮(<)
              7Bh : (==)
              7Ah : (-)
              79h : û(+)
              78h : (/)
              77h : 軻(*)
              76h : ¾(XOR)
              75h : (OR, |)
              74h : (AND, &)
    7Fh       λ
    80hBFh  byteѿֹ(00h3Fh)
    C0h       [Хȥ]
         00h       ͽ
         01h3Fh  (3.51)ĥ
         40hFFh  wordѿֹ(0040h00FFh)
    C1hFFh  [Хȥ]
         00hFFh  wordѿֹ(0100h3FFFh)

    (3.51)ĥ
    C0h
        01h word١ѿֹ + caliǥå
	02h 黻(% ;)
	03h 黻(<= ʲ)
	04h 黻(>= ʾ)

   ͤ065535ޤǤ򰷤ޤ׻Ǥ word 
 3FFFh ĤޤΤǡʾͤ򰷤ϱ黻ҤȤޤ
 65536 ʾοͤ򰷤äꡢư򰷤ϡ64ӥåѿѤޤ

 ѿκŪˤϡ16384 ĤǤºݤˤ 2000 ʲ˼
 θ³ޤ1000 ʾˤʤϡѿͭ˻ȤɤǤ礦
 (xsystem35 ξ 1024, 1.5.1pre1 8192)

 ѿˤϡѿѿޤѿϡindex ѿѤ
 ˡȡvar[]Τ褦ʥˡޤvar[]ǤϾ 3.51ĥ
 ɤѤ C0, 01, base_h, base_l, cali: Ȥǥ󥰤ʤ
 Υ١Ȥʤѿ (base_h << 8) + base_l ɽ졢ǥå
 cali ǻꤵޤǥåѿѲǽǤex. var10[var20[5]]

 ׻ϵեݡɵҤǳǼޤΤǡŪʽϥå飲Ĥ
 ͤޤѿȣĤα黻ҤФƱ黻̤򥹥åᤷޤ
  0x7f иޤǷ֤ޤ0x7f 褿顢å˻Ĥä
 ͤФޤޥɤΰȤѿ׵ᤷƤη׻
 ϡѿؤΥݥ󥿤֤ޤ

 ӱ黻ҤϷ̤Ǥ 1 򡢵ǤС0 ֤ޤޤ黻η
 СեեϼΤ褦֤ͤޤ
 * û軻63355ۤ  65535
 * ǥޥʥˤʤä   0
 * ǽȤ           0


 5.2 for ʸΥ󥳡

  forʸϤĤΤ褦˥󥳡ɤޤ

  !var:?!,3c,00,3c,01,end address(DWORD),var(cali),last(cali),direction(cali),
  step(cali), (operation)... ,3e,loop address(DWORD)

  !var:?! : Ѥѿޤ
  3c,00   : ֤ΥޡǤ
  3c,01   : ֤ΥޡǤloop address(DWORD)ϤΥɥ쥹򤵤ޤ
  end address : ֤֥å̤Υɥ쥹Ǥ 
                loop address(DOWRD)μΥɥ쥹򤵤ޤ
  var     : Υ롼פǻѤ륫ѿǤ
  last    : ѿͤͤˤʤޤǷ֤ޤ
  direction : ѿ(0:-, 1:+)
  step    : ѿΣʬ
   3e ޤǤΥ֥å򷫤֤ޤ
  loop address : ֤򤹤Ȥꥢɥ쥹Ǥ


 5.3 while ʸΥ󥳡

 while ʸϥѥ뤵ȡʬȥ롼פȥפȹ礻Ʊ
 ʤޤ

 ѥ
   <@ cali: operation>
 ѥ      
   {cali:
	  operation:
	  @loop:
   }
 

 5.4 ٥륳֤( ~label  ~0, cali:  ~~cali:)

  ~label ǤդΥʥꥪեλΥ٥ far call ޤΤ
 label ϥʥꥪǰդǤɬפޤ

 ~0, cali: ǡfar call ݤ (cali) 򣱤֤Ǥޤͤ
 ~~cali: ѿ (cali) ˼ǤޤΥɤϼΤ褦ˤʤä
 ޤ

 ~label  : ~, page(int16), address(int32) 
 ~0, cali: ~, 0, 0, cali
 ~~cali  : ~, 0xff, 0xff, cali


 5.5 G ޥɤΥ󥳡

   G ޥɤϥʥꥪǤ CGɤ G cali: ץ饤ȥɤ
 G cali, cali: ˤʤäƤޤϼΤ褦˥󥳡ɤޤ
 
 G cali:       G, 0, cali
 G cali, cali: G, 1, cali, cali


 5.6 黻

   !var+:10! ʤɤǤ !var:var+10! ûɤޤ

  !var+=cali! : 0x10, var, cali
  !var-=cali! : 0x11, var, cali
  !var*=cali! : 0x12, var, cali
  !var/=cali! : 0x13, var, cali
  !var%=cali! : 0x14, var, cali
  !var&=cali! : 0x15, var, cali
  !var|=cali! : 0x16, var, cali
  !var^=cali! : 0x17, var, cali


 5.7 0x2f ޥɳĥ

   󥳡ɤ̡0x2f ǻϤޤ륳ޥɤǤsystem 3.6 ʹߤΥޥ
 ĥϤˡ˻ѤƤޤ
 
 5.7.1 Txx ޥ

   TAA cali: 0x2f, 0x08, cali:
   TAB var:  0x2f, 0x09, cali:
   TOC:      0x2f, 0x00:
   TOP:      0x2f, 0x04:
   TOS:      0x2f, 0x01:
   TPC cali: 0x2f, 0x02, cali:
   TPP:      0x2f, 0x05:
   TPS cali: 0x2f, 0x03, cali:


 5.7.2 inc/dec

    inc var: 0x2f,0x06,cali
    dec var: 0x2f,0x07,cali

 5.7.3 ʸޥɤȤ¾ 2F command

    wav** ʤɾʸϤΥޥɤϤ٤ 0x2f, 0x??, ˥󥳡ɤޤ
 ޤȤʸޤ(ե̾ʤ)ϡ ':' ǽäƤޤ
 system 3.8 ʹߤǤ '\0' ǽ褦ˤʤꡢ饳ޥɤϿ 0x2f
 ޥɤȤƿ˳Ƥޤ

  0x2f, 0x0a, cali *2: [wavLoad]
  0x2f, 0x0b, cali *2: [wavPlay]
  0x2f, 0x0c, cali:    [wavStop]
  0x2f, 0x0d, cali:    [wavUnload]
  0x2f, 0x0e, cali *2: [wavIsPlay]
  0x2f, 0x0f, cali *4: [wavFade]
  0x2f, 0x10, cali *2: [wavIsFade]
  0x2f, 0x11, cali:    [wavStopFade]
  0x2f, 0x12, str(\0): [trace]
  0x2f, 0x13, cali *4: [wav3DSetPos]
  0x2f, 0x14:          [wav3DCommit]
  0x2f, 0x15, cali *4: [wav3DGetPos]
  0x2f, 0x16, cali *3: [wav3DSetPosL]
  0x2f, 0x17, cali *3: [wav3DGetPosL]
  0x2f, 0x18, cali *5: [wav3DFadePos]
  0x2f, 0x19, cali *2: [wav3DIsFadePos]
  0x2f, 0x1a, cali:    [wav3DStopFadePos]
  0x2f, 0x1b, cali *4: [wav3DFadePosL]
  0x2f, 0x1c, cali:    [wav3DIsFadePosL]
  0x2f, 0x1d:          [wav3DStopFadePosL]
  0x2f, 0x1e, cali *2: [sndPlay]
  0x2f, 0x1f:          [sndStop]
  0x2f, 0x20, cali:    [sndIsPlay]
  0x2f, 0x21, str(\0): [ȾOKʸɽ 'TEST', msg 'hoge':]
  0x2f, 0x22, getc, cali: [HH]
  0x2f, 0x23, cali, cali, str(\0): [new LC]
  0x2f, 0x24, getc, str(\0), cali, cali: [new LE]
  0x2f, 0x25, cali, str(\0), str(\0): [LXG]
  0x2f, 0x26, cali, cali, str(\0): [new MI]
  0x2f, 0x27, cali, str(\0): [new MS]
  0x2f, 0x28, str(\0): [new MT]
  0x2f, 0x29, str(\0): [new NT]
  0x2f, 0x2a, getc, str(\0), cali, cali: [new QE]
  0x2f, 0x2b, getc, str(\0), str(\0): [new UP]
  0x2f, 0x2c, getc, cali, cali: [new F1-F11]
  0x2f, 0x2d, cali *2: [wavWaitTime]
  0x2f, 0x2e, cali *2: [wavGetPlayPos]
  0x2f, 0x2f, cali:    [wavWaitEnd]
  0x2f, 0x30, cali *2: [wavGetWavTime]
  0x2f, 0x31, page, offset: [menuSetCbkSelect]
  0x2f, 0x32, page, offset: [menuSetCbkCancel]
  0x2f, 0x33:          [menuClearCbkSelect]
  0x2f, 0x34:          [menuClearCbkCancel]
  0x2f, 0x35, cali *2: [wav3DSetMode]
  0x2f, 0x36, cali *9: [grCopyStretch]
  0x2f, 0x37, cali *5: [grFilterRect]
  0x2f, 0x38:          [iptClearWheelCount]
  0x2f, 0x39, cali *2: [iptGetWheelCount]
  0x2f, 0x3a, cali:    [menuGetFontSize]
  0x2f, 0x3b, cali:    [msgGetFontSize]
  0x2f, 0x3c, cali *3: [strGetCharType]
  0x2f, 0x3d, cali *2: [strGetLengthASCII]
  0x2f, 0x3e:          [sysWinMsgLock]
  0x2f, 0x3f:          [sysWinMsgUnlock]
  0x2f, 0x40, cali *4: [aryCmpCount] 
  0x2f, 0x41, cali *6: [aryCmpTrans]
  0x2f, 0x42, cali *9: [grBlendColorRect]
  0x2f, 0x43, cali *4: [grDrawFillCircle]
  0x2f, 0x44, cali *3: [MHH]
  0x2f, 0x45, page, offset: [menuSetCbkInit]
  0x2f, 0x46:          [menuClearCbkInit]
  0x2f, 0x47, getc:    [new ']'] (**1)
  0x2f, 0x48, str(\0): [sysOpenShell]
  0x2f, 0x49, str(\0), str(\0): [sysAddWebMenu]
  0x2f, 0x4a, cali:    [iptSetMoveCursorTime]
  0x2f, 0x4b, cali:    [iptGetMoveCursorTime]
  0x2f, 0x4c, cali *6: [grBlt]
  0x2f, 0x4d, cali, str(\0): [LXWT]
  0x2f, 0x4e, cali *2: [LXWS]
  0x2f, 0x4f, cali *2: [LXWE]
  0x2f, 0x50, cali, getc, cali: [LXWH]
  0x2f, 0x51, cali, getc, cali: [LXWHH]
  0x2f, 0x52, cali:    [sysGetOSName]
  0x2f, 0x53, cali:    [patchEC]
  0x2f, 0x54, cali *4: [mathSetClipWindow]
  0x2f, 0x55, cali *6: [mathClip]
  0x2f, 0x56, cali, str(\0), str(\0): [LXF]
  0x2f, 0x57, str(\0), cali *3: [strInputDlg]
  0x2f, 0x58, cali *2: [strCheckASCII]
  0x2f, 0x59, cali *2: [strCheckSJIS]  
  0x2f, 0x5a, str(\0): [strMessageBox]
  0x2f, 0x5b, cali:    [strMessageBoxStr]
  0x2f, 0x5c, cali *7: [grCopyUseAMapUseA]
  0x2f, 0x5d, cali *2: [grSetCEParam]
  0x2f, 0x5e, cali *4: [grEffectMoveView]
  0x2f, 0x5f, cali:    [cgSetCacheSize]
  0x2f, 0x60, cali, cali, (Ǥ): [DLL call] (**2)
  0x2f, 0x61, cali *2: [gaijiSet]
  0x2f, 0x62:          [gaijiClearAll]
  0x2f, 0x63, cali:    [menuGetLatestSelect]
  0x2f, 0x64, cali *3: [lnkIsLink]
  0x2f, 0x65, cali *3: [lnkIsData]
  0x2f, 0x66, cali *2: [fncSetTable]
  0x2f, 0x67, cali *3: [fncSetTableFromStr]
  0x2f, 0x68, cali:    [fncClearTable]
  0x2f, 0x69, cali:    [fncCall]
  0x2f, 0x6a, cali:    [fncSetReturnCode]
  0x2f, 0x6b, cali:    [fncGetReturnCode]
  0x2f, 0x6c, cali:    [msgSetOutputFlag]
  0x2f, 0x6d, cali *2: [saveDeleteFile]
  0x2f, 0x6e, cali:    [wav3DSetUseFlag]
  0x2f, 0x6f, cali *4: [wavFadeVolume]
  0x2f, 0x70, cali:    [patchEMEN]
  0x2f, 0x71, cali:    [wmenuEnableMsgSkip]
  0x2f, 0x72, cali:    [winGetFlipFlag]
  0x2f, 0x73, cali:    [cdGetMaxTrack]
  0x2f, 0x74, str(\0), cali: [dlgErrorOkCancel]
  0x2f, 0x75, cali:    [menuReduce]
  0x2f, 0x76, cali:    [menuGetNumof]
  0x2f, 0x77, cali *2: [menuGetText]
  0x2f, 0x78, cali *2: [menuGoto]
  0x2f, 0x79, cali *2: [menuReturn]
  0x2f, 0x7a:          [menuFreeShelterDIB]
  0x2f, 0x7b:          [msgFreeShelterDIB]
  0x2f, 0x7c, dword:
  0x2f, 0x7d, getdw, getc, cali:
  0x2f, 0x7e, getdw, getc, cali:
  0x2f, 0x7f, getdw, cali:
  0x2f, 0x80, getw, getdw: [dataSetPointer]
  0x2f, 0x81, cali *2: [dataGetWORD]
  0x2f, 0x82, cali *2: [dataGetString]
  0x2f, 0x83, cali:    [dataSkipWORD]
  0x2f, 0x84, cali:    [dataSkipString]
  0x2f, 0x85, cali:    [varGetNumof]
  0x2f, 0x86, cali:    [patchG0]
  0x2f, 0x87, cali *4  [regReadString]
  0x2f, 0x88, cali *2: [fileCheckExist]
  0x2f, 0x89, cali *5: [timeCheckCurData]
  0x2f, 0x8a, const*2: [dlgManualProtect]
  0x2f, 0x8b, const, cali, cali, const, cali: [fileCheckDVD]
  0x2f, 0x8c:          [sysReset]


  (**1) System 3.8 ǤϰʹߤǤ襦ɤ򳫤 0x2f, 0x47, 0x5d
  Ȥʤޤ menuSetCbkInit menu* ϥޥɤȤä
  ѹ줿ΤȻפޤ

  (**2) SYSTEM 3.9 γĥ DLL ƤӽФǽˤʤޤΥ󥿡
  ե 0x2f, 0x60 Ǥǽ cali  DLL μࡢ cali  DLL
  δؿֹꤷޤʹߤ DLL ˤäưοۤʤޤ


 5.8 ̤⥳ޥ

  Ǥϡޥɽ˺ܤäƤʤɡ˽ФΤҲ𤷤ޤ

  5.8.1 VA 
    * ǽ: ˥åȥ˥᡼ (ˤ硦Ѥˤ)
    * եޥå: VA getd, cali, cali, cali:

    * VA0 : ѥޥ

      VA0, no, 0, 0:
         no֤Υ˥᡼ߡ߸˥åȤä

      VA0, no, 0, 1:
         no֤Υ˥᡼ߡ߸˥åȤ衣

      VA0, no, 1, num: 
         no֤Υ˥᡼󳫻ϡ᤹
         numϥ޿, 0ξȳϰ֤Ƚλ֤Ʊʻϥ˥᡼
         ư˥޿̵¤ˤ륫ȡ

      VA0, no, 2, num:
	no֤Υ˥᡼󳫻ϡޤᤵʤ
	numϥ޿ǡ0ϻǤʤޤƤᤵʤ

      VA0, no, 3, num:
        no֤Υ˥᡼󳫻ϡޤᤵʤ
	numϥ޿ǡ0ϻǤʤޤ줿᤹
	줿RND֤

    * VA1, no, x0, y0:
        no֤Υ˥᡼ɽɸ(x0,y0)λꡣ

    * VA2, no, x0, y0:
        no֤Υ˥᡼ΰư(ǽɸ(x,y0))λꡣΰ֤ޤ褿
        ưŪ˥˥᡼ߡ

    * VA3, no, width, height:
	no֤˥˥᡼˥åȤ礭(width,height)λꡣ

    * VA4, no, num, interval:
	no֥˥᡼Υѥ(num)ֳ(interval, 1/100sec)λ

    * VA5, no, x0, y0:
        no֤Υ˥᡼Υ˥åȤνɸ(x0,y0)λ

    * VA6, no, x0, y0:
        no֤Υ˥᡼طɸ(x0,y0)λ

    * VA7, no, type, col:
        no֤Υ˥᡼Υץ饤ˡλꡣ
	type = 0: ̾拾ԡ
	       1: (col)ץ饤
	       2: ƥǡץ饤(?)

    * VA10, no, var1, var2:
 	no֤Υ˥᡼ξּʤva1=0ưʤva1=1
	var2˷вᤷåȿ¸

    * VA11, no, varX, varY:
	no֥˥᡼θ֤߰(varX,varY)˼
 
  5.8.2 ZK
    * ǽ: CD-ROM촹¥å (ѡ)
    * եޥå: ZK, p1, p2, str:

      å(str)ɽCD-ROM촹Ԥġ


6. SYSTEM 3.6 extension

   SYSTEM 3.6 ǤμʳĥϥޥɤɲäǤޤDARCROWS  0x2f
 ޥ (TAA ʤ) ƳϤޤޤMIDIץȤƳ⤳Τؤ
 Ǥ


7. SYSTEM 3.8 extension

   SYSTEM 3.8 ǤϾʸޥɡʤ 0x2f ޥɤ̤ɲä
 ޤ׻ˤ⿷黻Ҥɲäޤ


8. SYSTEM 3.9 extension

   SYSTEM 3.9 Ǥϥޥɤγĥ DLL ȤǹԤ褦ˤʤޤ
 ɥȤ⾯ʤΤǤޤƤ餫ǤϤޤ󤬡ľɲ
 Ƥޤ

 8.1 System39.ain եޥå

   System 3.9 ǻѤ DLL δؿ̾䡢fncXXXX ޥɤǻѤ٥
 ¸ƤեǤǽ 4ХȰʳϾ 2bit Ȳ 6bit 촹
 ԤäƤޤ

  char  ID[4];    /* AINI */
  int32 IDlen;    /* 4    */
  char  IDdll[4]; /* HEL0 */
  int32 rsv1;     /* 0    */
  int32 DLLnum;   /* DLL ο */
      char *DLLname;     /* DLLե̾, \0 ǽʸ */
      int32 funcnum;     /* DLLδؿο */
         char *funcname; /* ؿ̾, \0 ǽʸ */
         int32 argc;     /* ο */
           int32 *argv;  /* μ 0: ѿ   (cali value) 
                                       1: ׻ (cali variable) pword
                                       2: ISurface
                                       3: ʸ (ʸֹ) IString
                                       4: IWinMsg
                                       5: ITimer
                                       6: IUI
                                       7: ISys3xDIB
                                       9: ISys3xCG
                                       10: ISys3xStringTable
                                       13: ISys3xSystem
                                       14: ISys3xMusic
                                       15: ISys3xMsgString
                                       16: ISys3xInputDevice
                                       17: ISys3x
                         */

  char  IDfunc[4];   /* FUNC, ʥꥪΥץ٥  */
  int32 rsv2;        /* 0         */
  int32 FUNCnum;     /* FUNC ο */
     char *FUNCname; /* FUNC̾, \0 ǽʸ */
     int16 fncPage;  /* ؿΥʥꥪΰ (1~) */
     int32 fncIndex;

  char  IDvari[4];   /* VARI, ʥꥪѿ̾ */
  int32 rsv3;        /* 0    */
  int32 VARInum;     /* ѿ̾ο */
     char *VARIname; /* ѿ̾, \0 ǽʸ */

  char  IDmsgi[4];   /* MSGI, ʥꥪå(2f7c2f7fޥɤǻ) */
  int32 rsv4;        /* 0 */
  int32 MSGInum;     /* åο */
     char *MSGIname; /* å, \0 ǽʸ */
  

 8.2 å System39.ain ؤγǼ

   ΥåΰֹŤ System39.ain ˳Ǽ졢ʥꥪ
 ǤֹǴ褦ˤʤޤŪ˥ʥꥪƥȥǡԤ
 ĤΥǥåƤޤʥꥪǡǤ 0x2f,0x7c,getdw 
 󥳡ɤ getdw ǥåֹȤʤޤޤH,HH,Xޥ + 
 åƱͤ˥󥳡ɤޤ

  'ƤȤƤ'      -> 0x2f, 0x7c, gwtdw:
  H?, cali: 'Ƥ'  -> 0x2f, 0x7d, getdw, getc, cali:
  HH?, cali: 'Ƥ' -> 0x2f, 0x7e, getdw, getc, cali:
  X?: 'Ƥ'        -> 0x2f, 0x7f, getdw, cali:


 8.3  DLL  DLL


[EOF]
