    MSX  BDS C  3.05  (c) .
			       2022 .
  ================================================================
           MSX Graphic Library for BDS C v3.05


	        

             
  "MSX  Graphic  Library  for  BDS  C"  3.02. 
              
  MSX2  MSX    :

     "",
     "   ",
     "   ",
     "     ".

     "MSX Graphic Library for BDS  C"   
.. (, 1986~1988).   
        ,   
                 
  .        
           ,    
 "".
             
  MSX2    MSX  -       
,    ,  
         
.

--------------------------------------------------------------------
      ""      
,       Copyright (C) - 
   .
--------------------------------------------------------------------


	     1.  

    "MSX  Graphic  Library  for  BDS  C" (  
  "")    , 
  BDS C.      MSX-.
            MSX2  MSX (
  MSX1)  ,    . 
        BIOS/SUBROM   MSX,   
             ,
     .

             
,  ,         
 .

         :

   -      
     ,   .;
   -      "";
   -  ;
   -   ;
   -   ;
   -   ;
   -  ;
   -  .

   -  /  VRAM MSX2;
   -   RAM-VRAM, VRAM-RAM, VRAM-VRAM.

   -    , ,   .;
   -     ;
   -     ;
   -     ;
   -    ;
   -   ;

   -  ( );
   -       ;
   -      ;
   -       ;
   - /   ;
   -     MSX;
   - /   ;
   -     .

   -   ;
   -   ;
   -      ;
   -  MSX1;
   -  /  .


	    2.  

       MSX   
    64      -. ,
         BDS C, 
        ""    ""  
     (      )  
              ,  
-.
            
  MSX1,   MSX2,    (  
)    MSX1    MSX2.
   ,   GRPLIB2    
MSX2             MSX1,
    GRPLIB5   GRPMSX1.H       
,      MSX  16   -
   SUBROM ( 16   ,  
      MSX2      128       -    
-   , ,   ..).
              
       
  MSX    MSX2,      MSXDOS  
        - .  ,
         
      BDS C  (  C Compiler v1.5 Users Guide,
Copyright (c) 1982 by Leor Zolman BD Software).

            
           
.                  
              
 :

#include GRPLIB0.H   -  MSX2 
#include GRPMSX1.H   -  MSX1


    !         
  External          
          
      .    ,      
            
  (      ).      
    BDSCIO.H
GRPMSX1.H           GRPLIB0.H   
               
  GRPLIB1~GRPLIB5.

        

             
 .,      :

#define NO_FUNC		/*   GRPMSX1.H */

      ,     
    ,  1    .   
          
           
         .. 
    GRPMSX1.H      
     GRPLIB0.H,   MSX1   
    SUBROM  VDP9938.

#define NO_TICKS	/*   GRPMSX1.H */

       totick() { }   
      .   .

#define NO_PUTSXY	/*   GRPMSX1.H */

        putsxy()  
        MSX1   BIOS
       VDP9938

#define NO_RTOVLW	/*   GRPMSX1.H */

        _rtovlw()  _vtorlw()
       BIOIS     VDP9938

#define NO_MOUSE	/*   GRPMSX1.H */

       SUBROM  totick()    
       MSX2

#define NO_PBUF		/*   GRPMSX1.H  GRPLIB0.H */

       _pbuf[32]  GRPLIB0.H   
     fmt().   fmt()   .
      .

#define JOY2ONLY	/*   GRPSTICK.H  GRPLIB0.H */

          2.
     chkmouse() .   .

	    

    !        
            4000~C000
( 1   2) - ,    ,  04000,
          '-4000'    . 
 ,  cc.com      clink.com  
    External,     
   ,   ,  
  BIOS, SUBROM  MEMORY MAPPER.    External
   0xBFFF   .

    !         
         GRPLIB0.H  GRPMSX1.H,
          
              grpini()
  gameini()/gameini2().           
              -         
 !


 1.
========
/* +-----------------------------------------------------------+*/
/* | --      MSX2: -- |*/
/* +-----------------------------------------------------------+*/
#include grplib0.h	/*     */

char	 foo,foo2;	/*     */
unsigned bar,bar2;	/*     */

main()	/*   */
{
    int zot,zot2;	/*    */
    grpini(); /*     */
        /*     - .  */
    screen(5);
    palette(0,0,0,0); color(15,0,0); cls();
    .
    .
    .
    zot=frotz(0);
    .
    .
    .
    EXIT	/*   MSXDOS */
}

int frotz(zap)
int zap;
{
    ...
}
/* -------------------   -------------------- */

 2.
========
.+---------------------------------------------------------+
.| -----       ------ |
.+---------------------------------------------------------+
cc gro
clink gro -f grplib4 grplib3 grplib2 grplib1 grpliba -e6000
. --------------------   ----------------------

:
    1.  '.'     MSXDOS  REM
    2.    GRO.CRL (   BDS C)
          ,      
        GRPLIB4.CRL ~ GRPLIB1.CRL -  
         ,   
          clink   '-f' (. BDS C clink).
             
          ,  
        (process0() ~ process9(), tickexit() - .),
             ,
          (  
        - .).
    2.        

         ... -f grplib5 grplib4 grplib3 grplib2 grplib1 grpliba ...

          clink,      clink
         ,     "" (. BDS C
       clink).


                      3.  

	     GRPLIB1
	   =========================

-----   -----------------------------------------------

beep(n)
char n;
       'n' .

char *errmsg(errnum)
char errnum;
        errmsg() 
     . - !!

_fataler(mode,msg1,msg2)
char mode,*msg1,*msg2;
         MSXDOS   ( )
    Screen 0    ().
    'mode':	0  - Screen 0    'msg1'
	1  - Screen 0   "Sorry, fatal error detected"  1-
	       'msg1'   .
	2  - Screen 0   "Sorry, fatal error detected"  1-
	     ,    'msg1'  'msg2'.
	10 -  'msg1'   Screen 0.
	11 -  "Sorry, fatal error detected"  1- 
	      'msg1'      Screen 0.
	12 -  "Sorry, fatal error detected"  1- ,
	        'msg1'  'msg2'   Screen 0.
	13 -  'msg1'  'msg2'   Screen 0.

-----   -----------------------------------------------

grpini()
       .
    !     ,   
     grpini()  gameini()/gameini2() (.)  
     !!!

screen(mode)
char mode;
       : 0~8  MSX2, 0~3  MSX1.
      .  paletini(), 
         paletv() 
    paletrst().

cls()
     .      0~8.

sprctl(size,magn,disp,mode)
char size,magn,disp,mode;
    -----   MSX2 ----- (. gameini()  MSX1)
          .
         GRPLIB0.H  
      :

        size :	  SIZE_8  SIZE_16	 -  8  16 
        magn : MAGNIFIED  UNMAGNIFIED  -   2 
        disp :    ENABLE  DISABLE	 - /
			      
        mode :    SINGLE  SIMULTANEOUS -   
			   (. )

           -
     -   NONE.

    'mode'  ,   
    :

      SINGLE -    sprite() (. ) 
        VRAM,  
      ,       (Sprite
    Attribute Table     
    ,  " "  RAM,  
        ()  VRAM 
        , 
      sprite()).

      SIMULTANEOUS -  sprite()   ,
          VRAM -   
          ""
       totick() -   .
           
    mode = SIMULTANEOUS    ""  
       RAM  VRAM.   
     ""        
         ,
            
      Screen 0.    mode = SINGLE.
      ""   SINGLE  SIMULTANEOUS  
            
    .       TICKON/TICKOFF
    (.).

clrspr()
    -----   MSX2 -----
        VRAM    .
    clrspr()       , 
        screen()  ,
      ,   sprctl()    .

paletini()
    -----   MSX2 -----
       VRAM  .   
     ,    paletv()  paletrst().
            
     VRAM    ,   VRAM 
        paletini() - ,
     ! (      SUBROM).

paletrst()
    -----   MSX2 -----
     ,   VRAM.

paletv(paletnum,r,g,b)
int paletnum,r,g,b;
    -----   MSX2 -----
         'paletnum'.  
      -  -  
      .   SUBROM-,
          VRAM.

palette(paletnum,r,g,b)
int paletnum,r,g,b;
    -----   MSX2 -----
      ,   paletv(),  VRAM   
     .    
       RAM . paletini()  paletrst() 
        -      ,
        palette().    
          
    grpini().
    !!!       RAM!!!

GETPLT(paletnum,r,g,b)
/* macro */
    -----   MSX2 -----
        r, g,  b   ,
         paletnum.
    !!!       RAM!!!

paletrot(< >,255)
char < >;
    -----   MSX2 -----
    ""     .   
    "Colour Rotation" Yamaha Painter. '255' -   
    .  :

    paletrot(1,5,3,255);
         : 3 -> 5, 5 -> 1, 1 -> 3;
    paletrot(4,2,7,6,1,255);
         : 1 -> 6, 6 -> 7, 7 -> 2, 2 -> 4, 4 -> 1.

    !!!       RAM!!!

paletblk()
    -----   MSX2 -----
      0~15  (0,0,0) -  .
    !!!       RAM!!!

color(fg,bg,bd)
int fg,bg,bd;
       ( )    (fg),
      (bg)   (bd).

page(display,active)
int display,active;
    -----   MSX2 -----
      VRAM  Screen 5~8.

char swpage()
    -----   MSX2 -----
     (swap)  'active'  'display'.  
     'active'.

char swpaged()
    -----   MSX2 -----
     (swap)  'active'  'display'.  
     'display'.

showpage(mode)
char mode;
     ,     
          
      0 /showpage(0)/.     
      STOP  SELECT ,   , 
    .  ,    F1~F4
          
    VRAM        
    , F5     ,
    STOP  F5 -   MSXDOS   
          (.).
    -------------------------------------------------------------
    !      
     	    ,  
           :
	    showpage() { }
             
      showpage() (. BDS C clink).
           
      ,  
    . ,     
      -  
	    totick() { }
            
    .
    -------------------------------------------------------------
     showpage()        
     :
    showpage(1)     STOP  SELECT,
    showpage(2)      
      .

clrbuf()
      .

backup()
        - 
     MSX2      GRPMSX1.H  MSX1.

-----   ----------------------------------------------

totick()
      .
    	 :
      ,    "" ,  
       process0().  ,   
      totick()     
    ( jiffy) -     totick()
    .      (  ,
        ""):
     -     	showpage() (.),
     -      (  -
       .),
     -      ""
        MSX2 (  - .),
     -     tickexit(),
     -       _calproc(),
              
       process1()~process9() (    "").
         , 
       totick() .

        process0(), tickexit() 
    process1()~process9()     totick() 
      ,       
        .

        totick()     
     , ,  ,  
     ,     
         
        .   
          
    (,    ) -
         
            :

	    totick();

     process0(), tickexit()  processN() (N=1~9) 
            
          ( 
    o    ).     
        clink.

TICKON
/* macro */
      - -  
     process0(), tickexit()  process1()~process9()
       totick().

TICKOFF
/* macro */
      - -  
     process0(), tickexit()  process1()~process9()
         grpini().

TICKSTOP
/* macro */
       - 
      TICKON/TICKOFF.  
       TICKSTART.

TICKSTART
/* macro */
     TICKSTOP    TICKON/TICKOFF.
         grpini().

MAXPROCS(n)
/* macro */
         
     process1()~process9() ( ).
    0 <= n <= 9.   - 0 ( ).   
           .
     ,      
    process1()~process9()    
      ,    MAXPROCS().

ACTIVATE(pnum)
/* macro */
      'pnum' (0~9).
    !    , ,   ,
      ,    ,   ,
       MAXPROCS().
     ,   grpini()   
     "" ,   ,   MAXPROCS(0).

DEACTIVATE(pnum)
/* macro */
      'pnum' (0~9).   
    ""  -     
      "".

PUTMAIL(boxnum,message,who)
/* macro */
     16 ""   (0~15)  . 
         'boxnum' (char) 
    'message' (integer)  ,    'who' (integer)
     () ,    
     . PUTMAIL()  , 
     OK (0),      
    ,  ERROR (-1)  ,    - 
           GETMAIL() (message != 0).
     ,

        if (PUTMAIL(...) == ERROR) <   >

    ,   Z80  BDS C, 'message'  ,  
    ,    -   .

      ,     
    ,      
    MAILBOX(0)~MAILBOX(15) (    
    ). :

	MAILBOX(5)=TRUE;
	if (MAILBOX(i) == 61) { ... }

GETMAIL(boxnum,messvar,sendvar)
/* macro */
         'boxnum'  
    'messvar',    -   'sendvar'.
    'messvar'   0,     . GETMAIL()
      0     , 
      .

BANDONWINDOW
/* macro */
      ,   , 
      windsel() (.)   
    .

tickexit()
        . 
         -     clink
        .
         ""  /
        totick()/.
     tickexit()   ACTIVATE/DEACTIVATE -
         TICKON/TICKOFF  
    TICKSTART/TICKSTOP.
        TICKON  TICKSTART!!!

process1() ... process9()
         ,
          
        "".    
     ACTIVATE/DEACTIVATE.
        TICKON  TICKSTART!!!

process0()
          
        ""  - 
       ,   totick()
         ""   .
         ACTIVATE/DEACTIVATE.
        TICKON  TICKSTART!!!

P_COUNT0 ~ P_COUNT9
 
    10      0~9 (unsigned).
        1    
      .   
           
    , ,  :

	main()
	{
	    ...
	    MAXPROCS(2)
	    TICKON
	    ...
	}

	process1()
	{
	    if (P_COUNT1 % 4) return;
	    ...
	}

       process1()    1 
      8 ""     
     "".

T_COUNT
 
      ,   P_COUNT,   tickexit().

-----    --------------------------------------------

waitvdp()

      a 0 (Command Execution) - 2
    V9938  MSX2.  ""   
     '_waitvdp' (unsigned)    .

drowse(t)
unsigned t;
    "" -  't' ""   totick().
           
       ,   .

vpoke(addr,byte)
unsigned addr;
char byte;
       VRAM.

char vpeek(addr)
unsigned addr;
       VRAM.

writevdp(reg,byte)
char reg,byte;
        VDP    
      RAM.

char readvdp(reg)
char reg;
      VDP (   RAM).

char vdpstat(statreg)
char statreg;
       VDP (0~9  V9938).

char stick(stick_no)
char stick_no;
      (0~8) - (0~2).

char trig(trig_no)
char trig_no;
      (TRUE/FALSE)   (0~4).

char pad(pad_no)
char pad_no;
     Paddle, Light Pen, Mouse, Track Ball.

int getjiffy()
      JIFFY MSX (2-  ,
      "" (1/60  1/50 
          NTSC/PAL).

char *deblank(to_str,from_str)
char *to_str,*from_str;
      'from_str'   'to_str'  
        .   
     'to_str'.

char *upshift(str)
char *str;
      'str'    ASCII. 
     toupper().     'str'.

_rtovlw(radr,vadr,len)
unsigned radr,vadr,len;
      RAM -> VRAM   64  VRAM.
       rtovlow() (.)    
    totick().

_vtorlw(vadr,radr,len)
unsigned radr,vadr,len;
      VRAM -> RAM   64  VRAM.
       vtorlow() (.)    
    totick().

char movmap0(source,dest,count,mapper_page)
unsigned source,dest,count;
char mapper_page;
       RAM  Memory Mapper.    
       0   RAM 
      'mapper_page'  Memory Mapper.
        'source'   'dest'
     'count' (1~0x4000) .   , 
    0~0x3FFF    Memory Mapper, 
    0x4000~0xFFFF -   RAM.  
         
      RAM     
    .  ,   / 
       Memory Mapper    16 
       movmap0(), a    
      ,   'source'   'dest'
       0~0x3FFF.
       grpini()   MEMORY_MAPPER
      TRUE/FALSE    ,
         Memory Mapper.  
          ,  
     ,       :

	if (MEMORY_MAPPER) { ... }
	else { ... }	

     , grpini()    _mapmask, 
    ,   Memory Mapper   
    . :  0xF8 (1111 1000)  _mapmask
    ,   Memory Mapper   3  ()
    , ,   8  RAM  16 
    .
    ,  movmap0()   :

	0 - OK
	1 - Memory Mapper  
	2 -   RAM   'dest'

          ,   0 -
      MEMORY_MAPPER  
     FALSE.

unsigned geteda(dataname)
char *dataname;
      ,    
      Extra Data Linker (EDL.COM).
      (,  ,   .), 
        COM-   EDL  ,
           
       .  geteda() 
      ,    External,
     0,    .   
      15-  , ,   ,
     2-       + 15 (
    )  13-      ,
      .      EDL 
    COM-        ,
     13-      
    .
    geteda()      dataname ( 
      upshift  deblank)   
      (    )  0.
        ,   (2 )
      geteda()-15.
    .     Extra Data Linker 
     ,     .  ,
     - ( )    
     ,   (.<>)  
     .  , dataname,   ,
          ,  
      EDL (   ).

unsigned geteda2(dataname,base)
unsigned dataname,base;
      ,   geteda(),     
        base.
    EDL  1.01      
        External (-f),     
      (-c)     External (-e).
        geteda2()  :

    geteda2(<file>,codend())  -c ( ),
    geteda2(<file>,extrns())  -e ( External),
    geteda2(<file>,endext())  -f ( External "free RAM").

      geteda2():

    char *p,*c_end;
    if (!(p=geteda2("data",c_end=codend()))) swapin("data",p=c_end);
    
         geteda2()  
     "data" ( ),   
       (  
    '-c' EDL), ,    ,  p 
        "data".    (
    p == 0) -       (  
    ,       
      External    
      "data").
            
    ,  ,  ,  
           -
      (, ,  
     Pattern Composer).  ,    
           EDL,  
      -     COM-,
          
     (.   Extra Data Linker):

    A>edl prog progdat -c data

     geteda()  geteda2()    
     expand() (.).

setdi()
      setdi()      EI (nable
    Interrupt)    ,  
    e  BIOS/SUBROM , ,    
        DI (Disable Interrupt) -  
         BIOS/SUBROM.

setei()
    ,  setdi() -    EI  
     ,     setdi().
           EI .
        ,     
       MSX     
    .

char *inith(addr,str)
char *addr,*str;
         , 
       .  - 
    . :

	inith(buf,"FF A|B.01 v 2");

     buf  FFAB0120.    , 
       -  
        .
       <  > + 1,  
      "" .

unsigned expand(from,to)
unsigned from,to;
     (, ) , 
    ()    FCX.COM     from.
           to.
       .

unsigned getparm(n_arg,arg0_adr)
unsigned n,*arg0_adr;
      n_arg (0~n)     
     ()  . :

    main()
    {
	foo(0,1,2,"text");
    }

    foo(args)
    unsigned args;
    {
	printf("%d %s",getparm(2,&args),getparm(3,&args));
    }

            :

    2 text

    :  (  )  
          VARPARMS()
     PARM() (.).

	     GRPLIB2 
	       (  MSX2)
	   =========================

-----   MSX2 (SCREEN 5~8) --------------------------------

dtov(fname,dx,dy,dir,lop)
char *fname,dir,lop;
unsigned dx,dy;
      VRAM  fname.    
     dx,dy VRAM    
    dir     lop.  
    (    )    
       -    "COPY" 
    MSX2  "Data" Yamaha Painter.  
         GRPLIB0.H:

     dir	- R_D	 
	- L_D	 
	- R_U	 
	- L_U	 

     lop	  :

	PSET  IMP,
	AND,
	OR,
	XOR  EOR,
	NOT  PRESET

     lop	  :

	TPSET  TIMP,
	TAND,
	TOR,
	TXOR  TEOR,
	TNOT  TPRESET

    !       SUBROM, 
      -  ,    RAM
    (0x8000~0xBFFF).  !

vtod(fname,sx,sy,width,height,dir,lop)
char *fname,dir,lop;
unsigned dx,dy,width,height;
         fname   VRAM. 
       sx,sy VRAM   
     dir     lop.
         VRAM  width,
     - height ( ).   
        GRPLIB0.H  dir  lop (.
    dtov()).

    !       SUBROM, 
      -  ,    RAM
    (0x8000~0xBFFF).  !

dtor(fname,start_adr,end_adr)
char *fname;
unsigned start_adr,end_adr;
      fname  RAM.

rtod(fname,start_adr,end_adr)
char *fname;
unsigned start_adr,end_adr;
        RAM   fname.

-----     --------------------------------

char dtova2(fname,dx,dy)
char *fname;
unsigned dx,dy;
         VRAM  .  
    ""    ( < 0,  
    -width).      ,
          _picture
      TRUE ( )  FALSE.   
    dir=R_D, lop=PSET     .
       _picture=FALSE,   		
       width/heght    VRAM
        EOF. dtova2() 
     (0)     errmsg(),    
        .
    SUBROM  ,     .
    !      , 
      VRAM   FFFF~10000.  
       V9938 -    
          64  VRAM.

rtova2(radr,dx,dy)
unsigned radr,dx,dy;
       RAM    VRAM  
    dx,dy.     ""  	
     ( < 0,   -width).     
       ,   
       _picture   TRUE (
    )  FALSE.    dir=R_D, lop=PSET  
      . SUBROM  .

char vtoda2(fname,sx,sy,width,height)
char *fname;
unsigned sx,sy,width,height;
         VRAM ( sx,sy,
     width  height)   fname.   
       dtova2().    
    -      
    . vtoda2()   (0)     errmsg(),
            .
    SUBROM  .

    .       
      Picture Compressor,    
      ""       
     .     
     /   
     COPY (Data) Screen 5.

vtodpage(fname,page_no,len)
char *fname,page_no;
unsigned len;
     dump  page_no VRAM   fname  len .
    Dump      (0~3  Screen 5  6
     0~1  Screen 7  8)   (0,0)   
     VRAM  len .
    vtodpage()   (0)     errmsg(), 
           .
    SUBROM  .

char xtova2(fname,dx,dy)
char *fname;
unsigned dx,dy;
        Extra Data   
    External ( '-f', . geteda()  Extra Data Linker)
    ,  ,     fname (upshifted & deblanked)
    ,    dx,dy VRAM.    xtova2()
         fname  .  
    ""   .
    xtova2()   (0)     errmsg(), 
           .
    SUBROM  .

----- COPY    dy/sy (0~1024  0~512) -------------

vtov(sx,sy,dx,dy,width,height,dir,lop)
unsigned sx,sy,dx,dy,width,height;
char dir,lop;
      sx,sy VRAM  dx,dy VRAM   
    width,height.   - dir,   -
    lop (. dtov()).  SUBROM.

vtovb(sx,sy,dx,dy,width,height,dir)
unsigned sx,sy,dx,dy,width,height;
char dir;
          sx,sy VRAM 
    dx,dy VRAM    width,height. 
     - dir (. dtov()).     
         ( !). SUBROM
     .

rtov(sadr,dx,dy,dir,lop)
unsigned sadr,dx,dy;
char dir,lop;
     ,       RAM 
    dx,dy VRAM.   - dir,   -
    lop (. dtov()).  SUBROM.

vtor(sx,sy,width,height,radr,dir)
unsigned sx,sy,dx,dy,width,heigth,radr;
char dir;
       sx,sy VRAM  RAM   radr 
    width,height.   - dir.  SUBROM.

----- COPY   dy/sy    (0~256) ----------

vtova(sx,sy,dx,dy,width,height,dir,lop)
unsigned sx,sy,dx,dy,width,height;
char dir,lop;
      sx,sy VRAM  dx,dy VRAM   
    width,height.   - dir,   -
    lop (. dtov()).  SUBROM.

rtova(sadr,dx,dy,dir,lop)
unsigned sadr,dx,dy;
char dir,lop;
     ,       RAM 
    dx,dy VRAM.   - dir,   -
    lop (. dtov()).  SUBROM.

----- COPY    RAM  VRAM -------------------------------

rtovlow(radr,vadr,len)
unsigned radr,vadr,len;
     len   RAM   64  VRAM.
    SUBROM  .

rtovhi(radr,vadr,len)
unsigned radr,vadr,len;
     len   RAM   64  VRAM.
    SUBROM  .

vtorlow(vadr,radr,len)
unsigned vadr,radr,len;
     len    64  VRAM  RAM.
    SUBROM  .

vtorhi(vadr,radr,len)
unsigned vadr,radr,len;
     len    64  VRAM  RAM.
    SUBROM  .


	     GRPLIB3
	   =========================

-----    MSX2 (Screen 5~8) ---------------------------

pset(x,y,cl)
int x,y;
char cl;
        x,y     cl.

char point(x,y)
int x,y;
         x,y   .

line(x1,y1,x2,y2,cl,lop)
int x1,y1,x2,y2;
char cl,lop;
        x1,y1 - x2,y2    
     cl    lop.

box(x1,y1,x2,y2,cl,lop)
int x1,y1,x2,y2;
char cl,lop;
        x1,y1 - x2,y2   
      cl    lop.

boxf(x1,y1,x2,y2,cl,lop)
int x1,y1,x2,y2;
char cl,lop;
         x1,y1 - x2,y2
        cl    lop.

-----      MSX2 (Screen 5~8) -------------

pstep(px,py)
int px,py;
     /  (  )
          (  8,8).

gputch(x,y,fcl,bcl,c)
int x,y,fcl,bcl;
char c;
      'c'  fcl     
    x,y,      
     bcl.    ,   
      () 0 -     
          .
     gputch()      '\n'.

gputs(x,y,fcl,bcl,str)
int x,y,fcl,bcl;
char *str;
      str  fcl     
    x,y      
      bcl.    ,
         () 0.
     gputs()      '\n'.

gputs6(x,y,fcl,bcl,str)
int x,y,fcl,bcl;
char *str;
      str  fcl     
    x,y      
      bcl.    ,
         () 0.  
       6      ,
          pstep()   
     .     ,
       px,py pstep()     .
     gputs6()      '\n'.

gprintf(x,y,fcl,bcl,format,arg1,...,argN)
int x,y,fcl,bcl;
char *format;
         (. printf()
    .       ).
        '\n'  
     CR LF   'x'   0,  y+=py
    (. pstep()).

gdump(x,y,fcl,bcl,start_adr,end_adr)
int x,y,fcl,bcl;
unsigned start_adr,end_adr;
     dump      
    start_adr   end_adr.

char *sprintf(buf,format,arg1,...,argN)
char *buf,*format;
      ,    sprintf() .,  
      buf      .
	!!!!!!

char *fmt(format,arg1,...,argN)
char *format;
      sprintf(),    
    _pbuf[32]   .    
      
    
    putstrt(y,x,fmt("%d",n));
    
          External   
      ,   
    
    #define NO_PBUF
    
    
    
    #include grpmsx1.h
    
    #include grplib0.h

char *trt(str)
char *str;
         _trtab1  256 .
    /      putstrt()/
           str.
     :
    trt(fmt("<format string>",vars));


-----    SCREEN 0 (X: 1~80, Y: 1~24) -----------------

char posx()
      X-  .

char posy()
      Y-  .

locate(tx,ty)
char tx,ty;
         tx (1~80), ty (1~24).

putsxy(tx,ty,str)
char tx,ty,*str;
      str   VRAM  
    tx (1~80), ty (1~24).
    !     !

char getchrv(tx,ty)
char tx,ty;
      ,     
    tx (1~80), ty (1~24).
    !     !

putchrv(tx,ty,c)
char tx,ty,c;
        VRAM   
    tx (1~80), ty (1~24).
    !     !

char inline(tx,ty,len,buf)
char tx,ty,len,*buf;
       len     
           tx (1~80),
    ty (1~24)    buf.   
    ( )   buf,  
        len+1   
      .  CR -   .
        buf.   ESC  STOP
           
      0.
    !     !

clrtxt()
      .

dline(lnum)
char lnum;	
        lnum (1~24).

iline(lnum)
char lnum;	
        lnum (1~24).


-----        SCREEN 5~8 -------------------

paletwin(fg,bg)
char fg,bg;
      ()     
     .   7,8.

char swpaletw()
     (swap)       
     .    .

char windsel(x,y,head,alt1,...,alt23)
unsigned x,y;
char *head,*alt1,...,*alt23;
          VRAM ( 
        ,  
    )      
    alt1,...,alt23.  RESUME (1)   
      ,     
     (header)       (alt1).
         1  2   ,
          ( ).
        ,   
        (DO),  ESC -  (UNDO). 
      UNDO, windsel()   UNDO (255).
            totick()
           
       ABANDONWINDOW (.) -   
    windsel()   ABORT (0).
    !     
      windsel()     
    process0().

rewindow(mother_page)
char mother_page;
        ,  
       ,  
     mother_page (0~3)   .  ,
           
           
    ,  rewindow()     .

-----     -------------------------------

char isesc()	  -  TRUE,  a  ESC
char istab()	  -  TRUE,  a  TAB
char isctrl()	  -  TRUE,  a  CTRL
char isshift()	  -  TRUE,  a  SHIFT
char iscaps()	  -  TRUE,  a  CAPS
char isgraph()	  -  TRUE,  a  GRAPH
char isspbar()	  -  TRUE,  a  SPACE ()
char iscode()	  -  TRUE,  a  CODE ()
char isselect()	  -  TRUE,  a  SELECT
char isstop()	  -  TRUE,  a  STOP
char ishome()	  -  TRUE,  a  HOME (CLS)
char isins()	  -  TRUE,  a  INS
char isdel()	  -  TRUE,  a  DEL
char isf1()	  -  TRUE,  a  F1 (F6)
char isf2()	  -  TRUE,  a  F2 (F7)
char isf3()	  -  TRUE,  a  F3 (F8)
char isf4()	  -  TRUE,  a  F4 (F9)
char isf5()	  -  TRUE,  a  F5 (F10)
char isfunkey()	  -  TRUE,  a    F1~F5 
char isleft()	  -  TRUE,  a   ""
char isright()	  -  TRUE,  a   ""
char isup()	  -  TRUE,  a   ""
char isdown()	  -  TRUE,  a   ""
char iscursor()	  -  TRUE,  a   
char ismouse1()	  -  TRUE,      1
char ismouse2()	  -  TRUE,      2
char ismouse(mp)  -  TRUE,      mp
char istrig(tn)	  -  TRUE,    tn
char isdclick(tn) -  TRUE,   tn  
fretrig(tn)	       tn
char iscr()	  -  TRUE,  a  CR ( )
char isbs()	  -  TRUE,  a  BS



	     GRPLIB4
	   =========================

-----  -----------------------------------------------------------

lsphex(patnum,hexstr)
char patnum,*hexstr;
      VRAM Sprite Generator Table    patnum
      (),    
      ( inith()).  
           
    lsphex().

lsphex8(patnum,hexstr1,...,hexstr8)
char patnum,*hexstr1,...,*hexstr8;
    
      ,  lsphex(), ,  ,  
           8 
     .       8 -
        : "".

lspmem(patnum,sadr,eadr)
char patnum;
unsigned sadr,eadr;
      VRAM Sprite Generator Table    patnum
      (),   RAM   
    sadr    eadr.    
     .

char getpat(patnum,buf)
char patnum,*buf;
       patnum  VRAM Sprite Generator
    Table  buf (8  32      ).

lschex(planenum,hexstr)
char planenum,*hexstr;
    -----   SCREEN 4~8 MSX2 -----
       ( , 16 ),
        planenum   
       ( inith()). 
            
     lschex().   16    :

          {	EC  CC  IC  0  <colour code 0~15> }

lschex8(planenum,hexstr1,...,hexstr8)
char planenum,*hexstr1,...,*hexstr8;
    -----   SCREEN 4~8 MSX2 -----
      lsphex8().

lscmem(planenum,sadr,eadr)
char planenum;
unsigned sadr,eadr;
    -----   SCREEN 4~8 MSX2 -----
       o   planenum  RAM 
     sadr  eadr.    
     .

char getcol(planenum,buf)
char planenum,*buf;
    -----   SCREEN 4~8 MSX2 -----
        planenum  buf (16 ) 
        (8  16)  
      .

sprite(planenum,patnum1,x1,y1,patnum2,x2,y2,...,patnumN,xN,yN)
char planenum,patnum1,x1,y1,patnum2,x2,y2,...,patnumN,xN,yN;
         
      planenum  - patnum1~patnumN 
           (x1,y1)...(xN,yN)
    .   patnum ( ) 
     -       (
        ).   
          Y
        -1 (  
     VDP).  sprite()    MSX1,    MSX2.
          0~255 ( 
       Screen 6,7 - . V9938).

-----     -----------------------------------------

char diskdir(dirmask,buf1700)
char *dirmask,*buf1700;
        buf1700 ( 1700 ).
      ,    diskdir(), 
     15    :

	d:ffffffff.sss\0

    diskdir()    , 
     buf1700,   dirmask. dirmask  
     (  )   
    MSXDOS:

	[drive:]filename[.suffix]\0

          '*'  '?',  
      '!' ([AND] NOT).
    :

	"*.com!ab*.com!cde.com"

      COM-    "ab"  "cde".

	"!*.c"

      ,    ".c"
      dirmask ("")  "*.*".

sortdir(buf1700,n_entry)
char *buf1700,n_entry;
     n_entry     buf1700, 
      diskdir().   
     : "d:sss.ffffffff".  
            "d:ffffffff.sss".
        qsort() .  
       .

-----   ----------------------------------------

unsigned blockmem(blksize)
unsigned blksize;
         blksize ( 
     ),        RAM
      alloc()  sbrk().
    !  alloc() . /   sbrk()/  
        32 K -    , 
        alloc()   int  unsigned.
      (?),    
     BDS C v1.50a        
      .   ,  
          cc2.com  cc.com
      MSXDOS 1.03  CP/M,    ..
          
     cc.com (     
      DURATION.COM).   cc.com 
       ,     
     cc.com (v1.50aR  v1.50a).

hcopy0(firstlin,lastlin)
char firstlin,lastlin;
           firstlin (1~24) 
      lastlin (1~24)  Screen 0.

hcopy2()
      MSX-    Screen 2.

lprint(adr,count)
unsigned adr;
char count;
       count     adr 
     MSXDOS (  lprintf() .).  ,  
    ,       .

lprint2(adr,count)
unsigned adr;
char count;
      ,   lprint(),     
      ()     8.

lprintf2(format,args...)
      ,   lprintf() .,    
       ()   
     8.

unsigned ltape(mode,adr,count)
char mode;
unsigned adr,count;
       count     
       RAM    adr.
          CTRL STOP  -
        .   
     .   .
       DI.
      mode:

	0 -     -   ;
	1 - CLOAD -       
	     ;
	2 - BLOAD -     
	     4  ,   :
	    start (2 ), end (2 ).

unsigned dtape(mode,adr,count)
char mode;
unsigned adr,count;
        count     
    adr.       CTRL STOP. 
       .  
     ( 0,       CTRL STOP).
       DI.
      mode:

	0 -    (-)
	1 -    (-)

wpsg(reg,byte)
char reg,byte;
     byte   reg  
     (PSG).

char rpsg(reg)
char reg;
        reg PSG.

sndreset()
     PSG   .

sound(r0,...r13,ctrl,waveform,modstep,modwidth,chanconfig,duration)
int r0,...r13,ctrl;
char waveform,modstep,modwidth,chanconfig;
unsigned duration;
        PSG   Extra LFO 
      .  r0~r13  
      PSG ( 
    ).  ctrl   ,  
    Extra LFO   PSG,   chancofig:

	0000 ABCN
                     ||||
                     |||+-- 1:  
                     ||+--- 1:   C
                     |+---- 1:   B
                     +----- 1:   

     :

	waveform: 0  1  ( )
	modstep:  0~255	   (  )
	modwidth: 0~255	   (  )
	duration: 1~0xFFFF (  "" )

     sound()   totick()  
          
     ,    (duration).

    .       
        PSG Extra Editor, 
          
       sound()  /  
      ASCII-,      
     sound().        ""
           .

sound1(str)
char *str;
       sound()   
     #1 () PSG.     
          #1  
     - ,   
     ""     MSX.  ,
    sound1()      sound()
    (    ,    ).
     str    
     :

    :	  r0 r1 r6 r7 r8 r11 r12 r13 ctrl wf  ms  mw  ch   dur
    : +0 +1 +2 +3 +4  +5  +6  +7  +8  +9 +10 +11 +12 +13~14

    :	r0~r13	-  PSG;
	ctrl,wf,ms,mw,ch,dur -  ctrl, waveform,
	modstep, modwidth, chanconfig  duration (2 )
	  sound().

     1.     sound1() 
      PSG Extra Editor (.  ).

     2.  ""     ""
           
     "".  ""     
           
         MML+,   
           ,
          
       ,   BDS C 
      "".  ,    
       ,  
        "".

dump(sadr,eadr)
unsigned sadr,eadr;
    Dump RAM   sadr   eadr    Screen 0.

ldump(sadr,eadr)
unsigned sadr,eadr;
    Dump RAM   sadr   eadr  .

char rwsector(operation,drive,from_sec,count,buf)
char operaiton,drive,count,*buf;
unsigned from_sec;
             
       (     
    ).

	operation: 0 - 
	       1 - 
	drive:	   A:0, B:1, C:2,...
	from_sec:     from_sec
	count:	       (0~255)
	buf:	       

    :	FF - 			( )
	    01 - Write Protect	( )
	    02 - Not Ready		( )
	    03 - Seek Error		(  )
	    04 - Record Not Found	(  )
	    05 - Write Error	( )
	    06 - Other Error	( )

    .  ROM,   MSX  ,
       ,    
    .

speech(data_adr,data_len)
unsigned data_adr,data_len;
     ,     "Master
    Voice"   .

int swapin2(fname,adr,maxlen)
char *fname;
unsigned adr,maxlen;
      swapin() ..  
              
     maxlen.       
    ,     maxlen  ERROR (-1) 
       /.    
        adr -     .

int swapout(fname,adr,len)
char *fname;
unsigned adr,len;
     ,    adr  len  
      fname.  ERROR (-1)   
     //  ( 
    ).

	     GRPLIB5
	       (  MSX1)
	   =========================

    !      ,
      Pattern  Composer.    
       "/  
"  -      .      ,   
        Extra Data Linker  
 geteda2().

gameini(MNTfile,screensX,screensY,LIBfile,SPRfile,sprsize,magn,mode)
char *MNTfile,*LIBfile,*SPRfile,screensX,screensY,sprsize,magn,mode;

    :    .
     RAM  MNT (Multi-screen Name Table)  
    sbrk(),  Screen 2,  Name Table  ,
      gwindow ( )  
      3022,    
      -  
        MNT, LIB  SPR  
       ,    
         .  LIB  SPR
          External (-f),
     MNT -    (-c).  LIB  SPR 
      VRAM     ,
     MNT       
      ,   
     sbrk()  ,   LIB  SPR  
     VRAM.   SPR-  0 -  
    VRAM      LIB  
     LIB  SPR (1616).

    :
	screenX, screenY -  MNT.   
		   ,   
		     MNT   PAC -
		      
		   .
	sprsize		 - SIZE_8  SIZE_16.
	magn		 - MAGNIFIED  UNMAGNIFIED
	mode		 - SINGLE or SIMULTANEOUS.

          sprctl().
      gameini()   
    grpini(), lodlib(), lodmnt()  .

gameini2(screensX,screensY,sprsize,magn,mode)
char screensX,screensY,sprsize,magn,mode;

    :   ,   gameini(),   
       LIB, SPR  MNT.    
     lodlib()  lodmnt() (.)   . 
      /  (  
    )   ,   
    ,    , 
          
       .  ,    
    -  LIB, SPR  MNT   
       .
    .     
         :

          -	,    VRAM    
	   ,   
	 External ('-f' EDL)  ,   
	  VRAM,      
	 ,   .
          -	,    ,
	    (  
	External)    
	  /   
	RAM (     ,   
	 ,   '-f',  VRAM) 
	    .

clrscr(SCRline,SCRcolumn,width,height)
char SCRline,SCRcolumn,width,height;
         Scren 2  
       SCRline (0~23  Y)  SCRcolumn (0~31  X),
     width (1~32)   height (1~24), 
      Name Table  .

gopen(libbase,framtop,framleft,framwidth,framheight)
char libbase,framtop,framleft,framwidth,framheight;
     Graphic Window ( ):  ,
           
           
    gwind().
    libbase       (0~249),
        6  : 4 
     ,     .  
       ,  
       libbase   STD_RED  STD_BLUE.
     framtop  framleft    
     ,  framwidth  framheight -    .

topen(libbase,framtop,framleft,framwidth,framheight)
char libbase,framtop,framleft,framwidth,framheight;
     Text Window (    ) 
      tprintf().
       gopen().


gdef(windline,windcolumn,windwidth,windheight)
char windline,windcolumn,windwidth,windheight;
      Graphic Window,      
      .   gopen().

tdef(windline,windcolumn,windwidth,windheight)
char windline,windcolumn,windwidth,windheight;
      Text Window,      
      .   topen().

gframe(libbase)
char libbase;
    /      
        .

unsigned absntab(y,x)
unsigned y,x;
        VRAM Name Table  
      y (0~23)  x (0~31).

unsigned absptab(y,x)
unsigned y,x;
           VRAM Pattern
    Generator Table     y (0~7)  x (0~32)

unsigned absctab(y,x)
unsigned y,x;
           VRAM Colour
    Table     y (0~7)  x (0~32)

char *absmntab(y,x)
unsigned y,x;
        MNT   y  x.
          
      MNT.

lodlib(LIB_link,SPR_link,base,LIB_file,SPR_file)
char *LIB_file,*SPR_file,*LIB_link,*SPR_link;
unsigned base;
         
    LIB  SPR   VRAM:
	LIB_link  SPR_link -   ,
	base -	codend()  '-c'
	    endext()  '-f'
	    0,  Extra Data   (  
	        LIB_link  SPR_link)
     LIB_link  SPR_link    Extra Data, 
          LIB_file 
    SPR_file (    /).
      SPR_link  SPR_file  0 -   
     Sprite Generator Table  LIB_link  LIB_file
           1616.

lodlib2(LIB_link,SPR_link,base)
char *LIB_file,*SPR_file;
unsigned base;
      lodlib()     .
        LIB  SPR 
      VRAM:
	LIB_link  SPR_link -   ,
	base -	codend()  '-c'
	    endext()  '-f'
      SPR_link  0 -    
    Sprite Generator Table    LIB_link
           1616.
    
lodmnt(MNT_link,base,MNT_file)
char *MNT_link,*MNT_file;
unsigned base;
         
     MNT (   - F7)  RAM /
       gameini()  gameini2()/. base 
     lodlib().  base     MNT_link 
      Extra Data -   
     MNT_file  .    
     .

bwind(MNTline,MNTcolumn,framtop,frambottom)
unsigned MNTline,MNTcolumn;
char framtop,frambottom;
    Block Winlow:    MNT     
    MNTline (Y), MNTcolumn (X)       framtop
    ( )     frambottom ( ).
     :  32 .
           OPEN/DEFINE  .
             MNT
      .

gwind(MNTline,MNTcolumn)
unsigned MNTline,MNTcolumn;
    Graphic Window:    MNT    
     MNTline (Y), MNTcolumn (X)    , 
       gopen()  gdef().

swind(MNTline,MNTcolumn,SCRline,SCRcolumn,width,height)
unsigned MNTline,MNTcolumn;
char SCRline,SCRcolumn,height,width;
    Sub-Window:     MNT    
     MNTline (Y), MNTcolumn (X)      
       SCRline (0~23  Y), SCRcolumn (0~31  X).
        : width (1~32)  height (1~24).
           OPEN/DEFINE. 
          sframe() (.).

sframe(libbase,SCRline,SCRcolumn,width,height)
char libbase,SCRline,SCRcolumn,width,height;
           .
       gopen().

putchr(SCRline,SCRcolumn,c)
char SCRline,SCRcolumn,c;
      'c'   (  VRAM Name Table)
        SCRline (0~23)  SCRcolumn(0~31).

char getchr(SCRline,SCRcolumn)
char SCRline,SCRcolumn;
      ()   (  VRAM Name Table)
       SCRline (0~23)  SCRcolumn(0~31).

putstr(SCRline,SCRcolumn,str,len)
char SCRline,SCRcolumn,*str,len;
      str  len      
    SCRline (0~23)  SCRcolumn(0~31).

putstrt(SCRline,SCRcolumn,str)
unsigned SCRline,SCRcolumn;
char *str;
      ,  putstr(),    
           
         .
    !  BDS C      
     , ,     
        (  
     ).      
       :

	1.   -   MNT  
	        putstr()  swind().

	2.   -    ASCII
	   ,     ,
	   ,   ,    .
	         putstrt().

	3.      
	        . 
	        DUMP.COM,
	       "".

     ,      
          ,
      ,    .   
    ,      
           , 
     (  ,     )  
       .

tframe(libbase)
char libbase;
    /       
        topen()/tdef()  .

tprintf(format)
char *format;
          
       .  -    
     printf() ..    
     .


sprite1(baseplan,PAT1,x1,y1,col1,...,PAT4,x4,y4,col4)
char baseplan,PAT1,PAT2,PAT3,PAT4,x1,y1,x2,y2,x3,y3,x4,y4,col1,col2,col3,col4;
    ,  sprite() (.),   
       (MSX1)     4- 
    .  ,    4-  -
     0  PAT2~PAT4    
    .

sprcol1(plane,colr)
char plane,colr;
       .

prtscrnt()
        dump   Name Table
    ( ).

stornt(SCRline,SCRcolumn,width,height,buf)
char   SCRline,SCRcolumn,width,height,*buf;
        ( VRAM Name Table)  RAM  
       restnt()  restnt2().  
    buf         
     width  height.

restnt(SCRline,SCRcolumn,width,height,buf)
char   SCRline,SCRcolumn,width,height,*buf;
     ,    stornt(),  
    ( VRAM Name Table).     .
       stornt().

restnt2(SCRline,SCRcolumn,width,height,buf)
char SCRline,SCRcolumn,width,height,*buf;
     ,    stornt(),  
    ( VRAM Name Table).     .
       stornt().

char getchrm(SCRlin,SCRcol,gwbaseY,gwbaseX)
char SCRlin,SCRcol;
unsigned gwbaseY,gwbaseX;
       MNT,      gwind() 
        (gwbaseY,gwbaseX), 
       ,    MNT.

putchrm(SCRlin,SCRcol,gwbaseY,gwbaseX,c)
char SCRlin,SCRcol,c;
unsigned gwbaseY,gwbaseX;
      'c'  MNT,    
      getchrm().

st_swind(MNTline,MNTcolumn,SCRline,SCRcolumn,width,height,buf)
unsigned MNTline,MNTcolumn;
char SCRline,SCRcolumn,width,height,*buf;
     swind()     
       buf.  stornt()  swind() (.).


     -   
            GRPLIB0.H
       ====================================================

MSX2
  ( grpini()  )
    TRUE,    - MSX2.

VRAM_128
  ( grpini()  )
    TRUE,     128  VRAM.

MEMORY_MAPPER
  ( grpini()  )
    TRUE,       Memory Mapper

TEXTWIDTH(width)
/* macro */
         width  Screen 0.

MOUSE1(x,y)
/* macro */
       x,y   
    ,    1.

MOUSE2(x,y)
/* macro */
       x,y   
    ,    2.

USE_MOUSE(mouse_num)
/* macro */
       :  
    ,   totick().   
       (0~511  0~256  
      )  ""  
        MOUSE_X, MOUSE_Y (
    )  RMOUSE_X, RMOUSE_Y ( ).
       (mouse_num 1  2)   
    . UNUSE_MOUSE    (
     ).      TICKON/TICKOFF 
    TICKSTART/TICKSTOP.

UNUSE_MOUSE
/* macro */
      USE_MOUSE.

MOUSE_X
 
      , ,
	 x=MOUSE_X;
       - , 
     USE_MOUSE,     
         
    
	MOUSE_X=x;

MOUSE_Y
 
      , ,
	 y=MOUSE_Y;
       Y-, 
     USE_MOUSE,     
         
    
	MOUSE_Y=y;

RMOUSE_X
 
         X-.

RMOUSE_Y
 
         Y-.

GETTIME(h,m,s)
/* macro */
       ,     
    h, m  s .

GETDATE(y,m,d)
/* macro */
       ,     
    y, m  d .

DIS_INTERRUPT
/* macro */
      Z80 'DI'.

ENA_INTERRUPT
/* macro */
      Z80 'EI'.

DIS_SCREEN
/* macro */
        (Disable Screen)

ENA_SCREEN
/* macro */
        (Enable Screen)

EXIT
/* macro */
      MSXDOS   Screen 0   
      -  MSX2  GRPMSX1.H MSX1.

PAUSE(beep_num)
/* macro */
     beep_num      
    SHIFT     totick().  
     ,    .

DUMP(msg,sadr,eadr)
/* macro */
char *msg;
unsigned sadr,eadr;
        (Screen 0) 
     msg   dump   
    sadr   eadr.

GDUMP(fg,bg,msg,sadr,eadr)
/* macro */
char fg,bg,*msg;
unsigned sadr,eadr;
        (Screen 5~8) 
     msg   dump   
    sadr   eadr. fg  bg -     
     .  :    .

DIR_GET_CHAR
/* macro */
DIR_PUT_CHAR
/* macro */
           
       (   
    getchar()  putchar())    / 
       ROM BIOS  BDOS - 
        ^C   
     (^S, ^P, ...) ,  ,  .

INKEY
/* macro */
    ,  inkey$  . 
	c=INKEY;
        ,     0,
          .   
     BDOS 6 -  ,    ^C  
     ,     .

VARPARMS(first_arg_in_list)
/* macro */
     VARPARMS      
      ,   , (VARPARMS
      )    
    PARM(n)        n.
    (    0). :

    main()
    {
	foo(1,"txt");
    }

    foo(arglist)
    unsigned arglist; /* 'arglist' used for argaddr extraction */
    {
	char zot;
	VARPARMS(arglist)
	printf("%d %s",PARM(0),PARM(1));
    }

          :

    1 txt

PARM(n)
/* macro */
           n 
      VARPARMS.       0.
     n   .

KBDOFF
/* macro */
           BIOS
KBDON
/* macro */
           BIOS
KBDRESTORE
/* macro */
           BIOS


    4.      
    =================================================


4.1.	!

    #include grplib0.h

	

    #include grpmsx1.h

          
     (  )   ,
     ! (bdscio.h  
     grplib0.h).      
    ,     
     .

4.2.	   grpini(), gameini()  gameini2() 
            .
          
       " ".

4.3.	,    '_'  
     .

4.4.	         
      ( ,  
     ,       .) -
        ,    ,
           -   
         !

4.5.	 External       0  3
    (  0~3FFF  C000~FFFF) RAM.  '-e4000' 
    cc  clink  !    ,    
      ,   ,   
    External       1  2 ( 
       MSX ROM BIOS,  
           
      ).

4.6.	    BIOS  SUBROM  ( 
      GRPLIB0.H) -      
     ,      0 ( 
        ,   RAM).
       ,     BIOS  SUBROM 
    0   ROM (    
        ).
    
4.7.	   ""  ,
         .
         "" -
          .
     , ..   
      -    1 .
         ,  
       ,   "", "" 
    "". ""       (1)
        (0). ""  7 .
    ""     (  )  
    1-  127    "" 
    .  , ""    :

       0-     1- 
    +-----------+-----------+
    | 1xxx xxxx | zzzz zzzz | "  'zzzz zzzz'
    +-----------+-----------+ 'xxx xxxx' (0~127) "

       0-     1-          N- 
    +-----------+-----------+ --- +-----------+
    | 0xxx xxxx | yyyy yyyy | ... | zzzz zzzz | N (xxx xxxx)  
    +-----------+-----------+ --- +-----------+ "" 

       0- 
    +-----------+
    | 0000 0000 | "  "
    +-----------+

       COPY (Data) (.)  Screen 5~8 
        ( 2   )   
        .   
     (1- )    , .. -.
          
       . 
           Picture Compressor
    - PICO.COM (    - .).
     ,    ,   
         Files Compressor/Expander - FCX.COM
       expand().

4.8.	    GRPLIB0.H  GRPMSX1.H -
           
          .   -
        !

	    5.    	(2022)
	    =============================

              
           , 
    ( 1)   GRAPH ( 2),   
    #include   :
    
    #include grpstick.h
    
           
            .  
      ,  isspbar(), isleft()  . 
       .
     ,   ,  ,  
    ,      
     .  ,     
     
    
    chkmouse()  grpstick.h
    
             
      ,   ,    
       .
     ,      
    _NoMous1  _NoMous2  1-  2-  ,
       TRUE  FALSE   .   
      chkmouse()  .
      grpini()  _NoMous1=FALSE  _NoMous2=TRUE
    .. ,    1  ,    2 .
    
             
       hkmouse(),   
    _NoMous1=TRUE.
    
            2 
         ,   
    
    
    #define JOY2ONLY 
    #include grpstick.h

	         
	         =======

	        

             ,
   "".        
        MSX2    MSX   
 :

     " ",
     " ",
     "   ,    
      ".

          ""   
.. (, 1986~1988).   
               
,          
        .          
            ,   
,      "".
             
  MSX2    MSX  -       
,    ,  
         
.

--------------------------------------------------------------------
      ""      
,       Copyright (C) - 
   .
--------------------------------------------------------------------


	     1.  


BLADE.COM	Bload Address Extractor -    
	BLOAD/BSAVE .

CDEX.COM	C Documentation Extractor -  
	  -.

DS.COM		Directory Sorter -     
	  .

DT.COM		Disk to Tape -      
	.

DUMP.COM	Dump - /   .

DURATION.COM	Duration -    .

EDL.COM		Extra Data Linker -    COM-,
	   BDS C.

FCX.COM		Files Compressor/Expander - / 
	/ .

FICO.COM	Files Collector -    
	  .

HC.COM		Hardcopy -    .

SS.COM		Sector Server - /   .

TD.COM		Tape to Disk -      
	.

                (  BDS  C) 
  (GEN80)    "  MSX 
BDS C".


	    2.  

            MSX      64  
          -. 
          MSX1        MSX2.  
 MSX2  .  : MSXDOS
 1.03 (COMMAND.COM 1.11).
    !     
        .



    3.    ,    
	    .

              
  "".
    .
      ,      ,    
        .

      :

       '['  ']' 	 
    ,   '{'  '}'-  
    ,   '<'  '>'-   .
      '|'     (""),
     '...' -      .


3.1.  BLADE.COM
----------------------
 
    Bload Address Extractor

       BLOAD/BSAVE .
  
    blade [<fileset>]

    <fileset> -      MSXDOS 
     "!" - [and] not.    - *.*

    ,  ,     
      FE   	 .    FE 
           :
     ,      .

    A>blade
    A>blade *.gm?


3.2.  CDEX.COM
---------------------
 
    C Documentation Extractor
 
        -.
  
    cdex <source1>[.c] ... <sourceN>[.c] [=<document>[.doc]]

    <source1> ~N>[.c] ... <sourceN>[.c]-    
	 .C       
	  .
    [<document>[.doc]] -  ,    
	.    - <source>.doc

          , 
         : 
    ,      .   
        , 
       .

    A>cdex myprog
    A>cdex myprog1 myprog2 =myprog.cdx


3.3.  DS.COM
-------------------
 
    Directory Sorter

           .
  
    ds[/p] <fileset>

    /p -     .
    <fileset> -      MSXDOS 
     "!" - [and] not.    - *.*

    ,  ,     
      ,    -    .

    A>ds
    A>ds b:
    A>ds *.c


3.4.  DT.COM
-------------------
 
    Disk to Tape

          
  
    dt <diskfile> <tapefile> {A|B|C|U} {len|*} [{H|L}] [B]

    diskfile -    
    tapefile -     (6   *   UNDEF)
    {A|B|C|U} -     :
	 - ASCII,
	B - BSave,
	C - CSave,
	U - UNDEF ( -  ).
    {len|*} -    :
	len -      ,
	*   -        ,
	            BSave.
    [{H|L}] -     ( ):
	H - ,
	L - .
    [B] - Batch ( ):    
           SHIFT      
           .


    1.          
      32 .
    2. CTRL STOP   .
    3.      
          (. ).

    A>dt pacman.gm PACMAN bload * high batch
    A>dt pacman.gm PACMAN b * l b


3.5.  DUMP.COM
---------------------
 
    SUPER DUMP

    /   .
   
 :
    dump file [B[#]n] [S[#]n] [L[#]n] [H] [D] [P] [X[#]n] [{=|%|$|-}outfile]
   :
    dump (n)  [B[#]n] [S[#]n] [L[#]n] [H] [D] [P] [X[#]n] [{=|%|$|-}outfile]
 :
    dump #n[/p[s]] [M[#]m] [L[#]n] [D] [P] [X[#]n] [{=|%|$|-}outfile]
 :
    dump #{0|1}.n [L[#]n] [R] [D] [P] [X[#]n] [{=|%|$|-}outfile]

    n	-      0~65535;
    #n	-     #0~#FFFF;
    B	- BASE:  ()    
	      (  ,   SKIP);
    S	- SKIP:  [#]n   BASE;
    L	- LENGTH:   ( SKIP, #FFFF  );
    H	- HEADER:  7  BLoad-    ;
    D	- DISASSEMBLY (  );
    P	- PRINTER:    ;
    X[#]n	- XOR:   xor     
	       n (0~255)  #n (#0~#FF);
      =|%|$|-	-      outfile:
	    = ASCII   ,
	    % ASCII ,
	    $ BINARY -    ,
	    - BINARY -     
		     ;
    /p[s]	-    ;
    M	- MEMORY MAPPER:  m (0~255)  #m (#0~#FF);
    0|1	-  (0)   (1) 64  ;
    R	-   V9938   BIOS/SUBROM (
	  MSX1  V9938  128  VRAM).

    1.    / .
         STOP     MSXDOS.
    2.    DUMP    
             - 
             '&' (. ).
    3.        
          ( )
	:hh...hh        
	>a.....z         
    4.     ()   CON
       () -    ,   
          -  
       .      
        -  .

    1.     100   foo.dat

    A>dump foo.dat l100

    2.     outdat.gro:
	 256  RAM    0,
	110   frotz.dat (  512 ),
	 0.
    A>dump #0 l#100 & frotz.dat s512 l110 & (0) -outdat.gro


3.6.  DURATION.COM
-------------------------
 
    Duration

       .
  
    duration [{z|Z}]

    z -      ,
    Z -        .

    1.       MSX2.
    2.      -   
              
       ,      
       .
    3.        - 
           .
    4. cc.com v1.50aR     
            .

    1.     gro.c

    A>cc gro
    A>duration

    2.     gro.crl

    A>duration z
    A>clink gro -f grplib4 grplib3 grplib2 grplib1 grpliba -s -e4000
    A>duration


3.7.  EDL.COM
--------------------
 
    Extra Data Linker

       COM-,    BDS C
           
     geteda()  geteda2().
  
    edl <COM_file> <new_COM_file> [-c <files>] [-e <files>] [-f <files>]

    COM_file	-   clink
	      (   .COM)
    new_COM_file	-  COM-     
	      (   .COM)
    -c		-     ,
    -e		-      External
    -f		-     
	      External (free RAM)
    <files>		-  ,   :
		-c file1 file2 file3

    1.       -  
           (  ):
	-c ... -e ... -f ...
    2.  -      
        ,   (.) - 
             .

    A>edl mygame newgame -c game.mnt b:game.dat -f game.lib game.spr

            
    NEWGAME.COM,    MYGAME.COM  
         (    External) 
    GAME.MNT  GAME.DAT (    B:)  
      External  GAME.LIB  GAME.SPR.  
      EDL    
     .


3.8.  FCX.COM
--------------------
 
    Files Compressor/Expander

    /  / .
          
         expand().
  
    fcx <infile> <outfile> -{c|x}

    <infile>	-  
    <outfile>	-  
    -c		-   (Compress)
    -x		-   (eXpand)

    1.     ""  
         1  ( ). , 
             
             
          (  
        ).
    2.       
          ,   
        NUL   <outfile>.

    A>fcx game.mnt nul -c
    A>fcx game.mnt gamec.mnt -c


3.9.  FICO.COM
---------------------
 
    Files Collector

          .
  
    fico <outfile>

    <outfile>	-    

    1. Files Collector    , 
       :
	-   7-  FE- ( BLOAD/BSAVE )
	    ;
	-      , 
	       
	  ,      
	   .
    2.       
         -     
           '#'.
    3. CR ( )     ( 0).

    A>fico resfile.dat


3.10.  HC.COM
--------------------
 
    Hardcopy

       .
  
    hc [<options>] [file] [<options>] [file2] ...

      (options),    
     ,      
          '/'.

    1. ,     MSX STAR:

    /N	NORMAL -   ;
    /P	PROPORTIONAL -   (  ,  NORMAL, 
	  );
    /E	ELITE -   ;
    /C	CONDENCED -   ;
    /X	EXPANDED -     /N, /P, /E, /C;
    /S	SMALL -    (  );
    /IT	ITALIC -  ( );
    /H	ENHANCED -   -   ;
    /D	DOUBLE strike -  ;
    /Wnnn	WIDTH -   nnn ;
    /V+	VERTICAL step -       1/6 ;
    /V-	VERTICAL step -       1/8 ;
    /Vnn	VERTICAL step -       nn/144 ;
    /Fnnn	FORMAT tape -      (Form Feed)
	nnn  -   2 ;
    /ESC...	  ESC  ,    -  
	     ( ).

    2.  :

    /I+	     , 
	   (/I+   );
    /I-	   ;
    /L+	    -  
	       ;
    /L-	    -   
	  /L+;
    /Lnnn	nnn -      (
	      
	  ) -   
	  /L+  /L-;	
    /$nnn	    nnn;
    /#nnn	,    nnn ( nnn-1 ),
	  1.

    1.     ,  
          -     
       (,  )   .
    2.     -      
          .
    3.        '*' -  
          .
    4.   ,      
        /$nnn    .
    5.       
          /  .

    A>hc/c/i- grpmsx1.h
    A>hc/c/s *


3.11.  SS.COM
--------------------
 
    Sector Server

    /   .
  
    ss {d1|*} d2 [d1s d1e d2s] [-p] [-b] [-v]

    d1	-  -  ( );
    *	-     
	   ,  
	  Sector Server      .
    d2	-  -  ( );
    d1s	- Disk 1 Start -   ;
    d1e	- Disk 1 End -   ;
    d2s	- Disk 2 Start -   ;
    -p	- Pause -     -
	     ;
    -b	- Batch -     
	      ;
    -v	- Verify -      
	   (   Sector Server).

    1.  -     
        .
    2.         
         -   , 
       .
    3.      '*' -  
       -      
           
       .      0~13 - 
          .

    1.   :  :  1~13   1427~1439:

    A>ss a a 1 13 1427

    2.  :  B:    :

    A>ss a b -p -v

    3.       B:

    A>ss * b 0 1439


3.12.  TD.COM
--------------------
 
    Tape to Disk

          .
  
    td [<protocol_file>]

    <protocol_file>	-  ,    
	           
	        ,    
	         DT.COM.

        ,   
          .
        ,  
     ,    (  ) 
        , ,  
          
       ()    
    .        
        /   .
        
           
     .   , ""
      ASCII, CLOAD, BLOAD  UNDEF  MSX-.

    A>td tape1.pro

/    3.04 (c) .
====================================================================
	     Pattern Composer  v3.04

	        

               
"Pattern   Composer"      2.02.       
      MSX2  MSX 
  :

     "",
     " ",
     " ",
     " ",
     "  ".

     "Pattern Composer"    ..
(, 1987~1988).     
          , 
          
  .        
      ,    ,       
  "".
             
  MSX2    MSX  -       
,    ,  
         
.

--------------------------------------------------------------------
      ""      
,       Copyright (C) - 
   .
--------------------------------------------------------------------


	    1. 

       Pattern Composer (  )
          Screen 2. 
     MSX2 (
  ),           
MSX1.
              ,  
      .
          
            ,  
           ,    
    ,      VRAM  Screen 2.
            
   ,    .
    Pattern  Composer       
  ,   ,   
   ,                  ,
      ,   .   
     ,  "
 MSX  BDS C" (  " ").
           
  .
         "Help"   
 ,    .


	      2.  

          Pattern Composer (  
PAC)      MSX2       (
    ").        -  
    ,     Screen 2  Screen 4 (
V9938   Graphics  2    Graphics  3).    MSX2  
        -   
-    PAC  (  ,   
.)        
 . ,      MSX1.
           ,      
  MSX2,    Memory Mapper   64 
   (RAM).    ,    Memory
Mapper,            
                
       .   , 
      MSX2,   64  RAM 
128   VRAM.   ,   
  VRAM  (             Memory
Mapper), a       
.
           ( BDS C)  
"  MSX  BDS C".


	      3.  

    3.1     ,    :

	       A>pac

         .
        ,     
    (Patterns/Colours Library),  
    .             
       -   SAVE
LIBRARY    (    
.LIB     )
     ,     PAC, 
      DEMO.MNT,      LOAD       (MNT -
Multi-screen Name Table - )    .
            -  
  SAVE  ALL  NAME  TABS        (   
      .MNT     ).
      -    
SAVE SINGLE NAME TAB (  .SNT).

          PAC   
 -         .

    3.2     :

	pac [l=libfile] [screenfile]

           
      (,  ,      !),  
  ,       
.  ,          MYPIC.LIB, 
  -  MYPIC.MNT,        
   :

	A>pac l=mypic.lib mypic.mnt

 batch- P.BAT     PAC:

	>p mypic

             
                -
,            LOAD    
   ,        ,
    ""   "". "" 
     ""    "
  "  (,        "
" "" )      "" 
        ( ,
  ).
                      ,
     ( "Graphic Master" Sony)
  .        , 
           ,  
     -   
      .     ,  
     (,  
          
).


    .

    3.2.1.     ,    
                    (.
       "Files"  "Help"     5  ).

    3.2.2.             (SNT-)  
              (MNT-),
         ,      ,        
         .

    3.2.3. MNT-         :
       ""  "" ("Absolute"  Relocatable").

         ""        
         "    "     
       "  "       
          .         (
         )       
               
                  ,  
       ""    .

         ""          
        "  " , ,   
         . ""   
            (  
         )      .  "  " 
           ""    
         ,  ,   
              
         (SNT)          
         .   ,    
                 
       ,     .

    3.2.4.          
          ,          
                      
       .      
               (      
         ,   
             ).    
               " ", 
                      
       -          
         putstrt(),  tprintf()   .      
                 
         .      ,    
           -        
          -    
       (,  ,         
       ).


    3.3.  

           : ""  ""
(Menu  Compose).
          ,     Menu,  
           COPY, CUT, PASTE,... 
    ,     Pattern Editor+, 
            
.
            Menu/Compose 
  .
       Compose       , 
             ,
      (        Name
Table).
      :       (Double Click)
    Compose   /      
    ,        ,
      .

       ,         
   (Single-click,  Double-click,  DRAG  -    
        ),       
       (.
"Help"      ).    ,   (MNT) 
      (  
   GRAPH).

        -  :   DEMO.MNT,
   (      GRAPH), 
      Compose  (          UNDO),
  Pattern  Editor+  (  ESC     
),        ,    Animaion
(    )...        , 
   ?


	    4.  


    ,        
     ,   :

    1. Multi-screen  Name  Table  (MNT) - ,  
                   21   (
         - Single-screen Name Table (SNT) 768 ).
                  
          ,     SNT
       (.  "Screen  Config"    )    
       : ""  "" (.).

    2. Singe-screen  Name  Table  (SNT)  -   
               (MNT) - 768  Name
       Table.

    3. Library  (LIB)  -  : pattern-
       (2048 )  +  colour-  (2048 ).  
                   
             3    Screen 2:
       ,    . ,    ,
                  
                      
         .

        ,     ,
               
 .
           , 
    ,     ( ) 
.            ()
  .

F7 - MNT   "" (   MNT) .  
     2            MNT   
     (SNT).       .
F8 - Special.           .  
         .
F9 - MNT   "" (   SNT)    
       MNT.      . 
                    
     .
FA - Sprites (2048 ) -    .
FB - SNT  -  768  .       
     .
FC - MNT   "" (   SNT) .  
           MNT.       
      .
FD -  :
     Pattern Generator (2048 ) + Colour Table (2048 ) + 1.
              "     "
           /
       .          
     .
FE -     BSave/BLoad  VRAM MSX . 
     3   ( 2 )   ,   
         (          VRAM).   
         .


	5.   

                  
    .          
 (   )       3
,  ,        . ,  
         -      
.  ,      ,  
  , ,  SELECT   
,              (  SELECT
        ).  
(        ,     
      )       
    .


	  "MEDIA"

                     1. .

     "MEDIA"   
 ()     , 
       MSX.    
    MED      C. 

    MSX     
(PSG) GI AY-3-8910,   8    . 
   PSG      PLAY 
  MML (Music Macro Language),  
         
    ;     
     . 
   MSX DOS   .
    "MEDIA"     MSX DOS
      PSG,
      , 
   .

    "MEDIA"      ""
       "".

      .    -
  .

  
                     2.  MML+.

             MML 
    MSX- ([1],[2])   :
    -          ,
        ,    '', a
    a  -  O+1 ;     -
        .
    . 3AbCda    A,C-  3,  b,d,a-  4.
  -  Zn[-]  (   "-" -) 
       "n" .
  -  Un[-]      ,
         "n"    PSG.
  -  ':'         
             
    (.   play()). 
  -      ,  -
    ;    ""  
    .
  -    <  >   
      .
  -  ,    '%'  '\0'.

    		    LFO  

    (LFO - Low Frequency Oscillation -   
        ). 
  -  [  ]    LFO   ;
      [    0, 1  2,  
    LFO: /\, \/  _.
  -  {  }    LFO  ;
      {    0, 1  2,  
    LFO: /\, \/  _.
  -  (  )        .
  -  *a   LFO   .
  -  *t   LFO   .
  -  /a   LFO  .
  -  /t   LFO  .
  -  /f   .

    X   .
        MML+.

     3.     
                  GRPLIBM.

      GRPLIBM.CRL   
 ,    BDS C.    
    (clink).     
-f   clink   GRPLIBM   
    GRPLIBx  "".

      MML+ ,  
    MED,     
        
   () MSX. 
      :
---------------------------------------------- ... ----...-------...----    
|VAlen |VAptr | VBlen |VBptr |VClen |VCptr | VAq    |  VBq    | VCq    |
----------- ---------------------------------- ... ----... ------...---- 
  : - VAq, VBq, VCq -     A, B  ,
           mmq;  
       - VAlen, VBlen, VClen -   (  0FF);   
       - VAptr, VBptr, VCptr -      
         .

         
 EDL ( Extra Data Linker),    "", 
      , 
,  swapin().
  
       :
  -    #include  grplib0.h  grpmus.h.
  -      grpini(), musini()
    ,   LFO, lforeset() (  !).
  -  tickexit()     mutick(),
       LFO -   lfotick().
  -      (TICKON).
      ,    play(). 
    PSG    "" 
     
 .       
 .
    mutick(),    tickexit(),
     
    ;    
   ,      
 .      
PSG    ,    
  BIOS MSX.   
 LFO  ,    mutick()
     ; , , 
   ,   (  ),  -
     ,   (  ),  
.  ,  (  )     ,  
    mutick()    
,   ,     ;  
        
      .
      ismus()     
  ;  musoff() ""      
 .
    ,       -
 , ,     
,   MEDIA    MML+,  
   mmq(),     
MML+     -   


       4. ,    GRPLIBM:

 -   a :

play(cycle,qad)
char *qad;
int cycle;
  -      'qad'  . .
    E cycle=0,    ;   
    mutick(),   0xFF,      
    ,       ,  
     Vptr.
             ':',   0;
        ':',   
      .
       lf4init(),  .

play(cycle,qad)
char *qad;
int cycle;
  -  ,  play(),   lfo4init()

mutick()
    -   tickexit()     
           
     LFO  .

musoff()  - "" ,   .

musini(p)
char *p; 
    -   ;  -
       .
       p=0,     LFO  
      80     ,    0xF418,
             p. 	

char ismus() 
   -  ,   0-2   
         1-3.
     ,  ismus()=0,    ;
      ismus()=4,    3.

xmus() 
   -  , "" .  
          .

autoplay(va,vb,vc) 
char *va,*vb,*vc;
 - "";   (  
    mutick() )    va,vb,vc.
            129   
    1  (  0xFF).     
       m,    
      ..

int mmq(pa,pq,yy,tm) 
char *pa,*p; 
unsigned *tm,*yy;
  -   MML+;
        MML+, 
      pa,    , 
     0FF,       pq;  
       ,      - 
        ,  ,  
    ;     yy    Vptr; 
        tm    
      . /   -
     > 65536 , .. > 18 .     
         ./ 


int lftq(qn)   
char qn;
 -         
      qn.

putq(qn,byte)
char qn,byte; 
  -  byte      qn.



 -     PSG:

int setlfo(v,typ,t,a)
int t,a;
char v,typ;
  -   LFO:  (0-2),    (0-32767) 
     1-3 (v=0-2)    (v=3)    LFO 
      . (     
    GRPMUS.H.    LFO     -
       1  0   _FMFL[i] ).
       ,  -1.

lfinit(p)
struct _LF *p;
  -    LFO    p  
     LFO      .

lf4init()
  -  lfinit()      LFO.

lfreset()
  -    LFO,  LFO   
     .

lfotick()
  -   tickexit();  LFO,   PSG.


noisep()
  -     PSG    _NP.
    (   _NP).

noise()
  -    ,   '0'  .
         ()  _NP.

noisev(v,on)
char v,on;
  -  ( on=1)   (on=0)    v.

xnoise(v)
char v;
  -  /     v.

/*
notick()
  -   tickexit();    (linear 
    noise oscillation, LNO):     _NMFL,
    ""  ,   noisep(),   
     N      (-NA,NA).	
     NT, NA    NP    
    ,   GRPMUS.H.   -
      0  musini(). 
*/

xlno() 
  - /  .


-    4-    
           TEXT2  MSX2:

setblnk(txt,bg,on,off)
int txt,bg,on,off;
  -    (   
       0-15).  txt  bg  
      /.   
      ,   .
    (  ,     ,
         Color Table).
        on -  -
        off -  (*1/6 .).
     n  off  0,  ,     
     .  on=15,  off=0,   
    ,  ,   Color Table, 
     , ..  
       TEXT2   . 
    
rstblnk()
  -     0, ..  
       ,   Color Table.

clrblnk()
  -  Color Table, .     
     .

blink(x,y,len)
int x,y,len;
  -    len  ,   
       (x,y).

xblink(x,y,len)
int x,y,len;
  -    len  ,   
       (x,y) (..   ,
      ).

dblink(x,y,len)
int x,y,len;
  -    len  ,   
       (x,y).


        5. ,   
                .

 1.       - 1/60  
(    - 1/50).     :   
                   d=14400/(t*l)      ( 50-  - 12000),
    ,  - 4095.
      
   ,    
,        
   'Ticks'    .
 2.         
   ,         
 ,      .
 3.  tickexit()        
   (,    
   ;     
dump()      ..),     
,  mutick()   ,   
   .      
   ,   
totick()          
,   DIS_INTERRUPT, TICKOFF  TICKSTOP.
   ,    
 tickexit() ,   
 autoplay().
  
:   grpini(), tickexit(), totick(), dump(), DIS_INTERRUPT, 
             TICKOFF, TICKSTOP - ,    "". 
              swapin() -  BDS C.


    6.     MED.

     MED    
 ,     -    
     .    -
   .  
   MED    MML+     
,      
  .        ,  
 ,  LFO    .
     LFO    -
  . 
            
 (MML+)     ,   
    ,  
    .
       ,  -
    .     -
 ,  -   MML+,  - 
MML+    PSG,  -     
 S MML+.

      MED     , 
CUT/PASTE  ,   ,   
PSG       .
  ->  <-      
;         
 (CR).     : 

EDIT  -    .

LOAD  -     .
               '%',  
          ,    . 
              ,  
         .      
        '%'  '\0'(0). -    -
        .            
         < 0x20.         
        700 .      LOAD 
           (OVERTYPE),    ,
           , ;    
          (>INSERT<),    
             ;   
         CUT/PASTE. 
               '%',    
         CUT/PASTE (700 ),     -
        .

SAVE  -       .
             '%',  ,   
            %,     . 
          ,      -
         '%'.

BLOAD -    (   )  
             ( 10500 ).
             play .
           .

BSAVE -       -
            .

            
         : "enter file name:", 
            .       
             STOP  ESC.

QUIT  -     MSX DOS.

      .

     'EDIT'       
,      ;  ,  -
      . -
     SHIFT-F5.
         -
 .    ,    
,    .
    :
""  ""      . 
""  "" ('<-'  '->')  . 
SHIFT+'<-'  SHIFT+'->'     20 .
HOME       -     .
HOME+SHIFT -       .
INS        -   /  (
           >INSERT< / OVERTYPE  
         ).
BS (backspace) -     .
DEL            -  ,    .
SHIFT+CTRL+DEL -        
        .
GRAPH          - PASTE:  CUT/PASTE    
         ,    . 

    CUT/YANK:
TAB (1- ) -       
        CUT/YANK;        
         ;     .
       CUT/YANK    
    :
TAB (2-e ) - YANK:      CUT/PASTE 
        ;    .
TAB (2-e )+SHIFT - CUT:      
        CUT/PASTE ;    .
TAB (2-e )+CTRL  -      .


SELECT -      1-3 
           ;     -
         
          '%'.     -
          	          
           ,
              -
            . 
          .

     
CR  - play;   , 
      .      
        .

STOP - "" .

STOP+SHIFT  -  /  .

F1-F3,F4 - / LFO   1-3  .  , 
           LFO,   
          'LFO on'   .

F5   -  /   .
           ,    
          'CYCLE'.

F1-F3+SHIFT - /    1-3.
         ,    ,  
          'Noise on'   .

F1-F4+CTRL -   LFO   1-3  .

<-,->+CTRL -   LFO    LFO.
              
        *a, *t      /a, /t, /f  .

Up+CTRL, Down+CTRL -     LFO,
            LFO. 

ESC+SHIFT -    LFO,  LFO  .

ESC -       .    
        ,  .

------------------------------------------------------------------------       
      .
[1] MSX Technical Data Book.
[2]        .

-------------------------------------------------------------------------
.   MEDIA.

 1.3 
  -  MML+   > (  )
  -  MML+ z<n>    n ,   
  -   (   )  .
 
  -    xmus() - /

  -         : 
 /     

 1.4
  -  MML+ >   : 
  -    MML+ <  >
  -  xmus()     
  -   LFO  
  - 3   HELP 

 1.5
  -   LFO ( /\,     )

 1.6 ()
  -  LFO  ,       
 -     
  -   LOAD  (   
          )

 2.0
  -  MML+     PSG (LFO  ):
    [<n>, ], {<n>, }, (, ), *a, *t, /a, /t, /f
  -     PSG  
  -     
  -  4-  HELP
  -     LFO   

 2.1
  -  lfotick()       
    
  -    musini(p) -   
     LFO.
  -   play1() - play   1,  LFO
