                MSX C compiler
                --------------
CF.COM ࠧ騪 (parser), -
------------------------------------------
  室 䠩   ணࠬ .C,  १ .TCO (T-COde)
饭: cf [ࠬ]  ணࠬ ( .C)
     -c               ᢮⢮      ਥ
                msx-C.   ⮣        ⫠
                ᪫  ⥪  ணࠬ,㪠  
                  a਩.  ⠭  

     -e[X]            㪠     䠩    ᮮ饭ﬨ  
                訡. ⨯ 䠩 .DIA
     -f            ࠧ , 㬮砭  '  int
                ⨯ 㭪権  ଠ ࠬ஢     ⠭-
                
     -t            ந ⮬. ८ ⨯  㪠⥫  
                楫  ⭮.  ⨢ 砥 㤥  ᮮ-
                  訡 ᫨ 楫  㪠⥫  ᯮ-
                   ୮ 樨
     -oX        㪠   .TCO 䠩
     -rP:S:R            ࠡ稥  ⠡      ⭮襭
                 pool:symbol table:hash table,  㬮砭 13:6:4
     -s            த ᯮ .BAT 䠩   訡-
                 

CG.COM  (  ᥬ)
----------------------------------------
        ⨯ 室 䠩 .TCO, ⨯ १ .ASM
  饭:
  cg [ࠬ]  ணࠬ  .TCO
     -k         㤠 .TCO 䠩 ᫥ ࠡ

     -oX        ᮧ .ASM 䠩  ᪥ 

     -rN            १ࢨ஢ N ⮢  ⠡  ᨬ.N
                筮 ᫮

     -u             뢮  ᯫ  㭪権   祪
                 ६ ࠡ

     -l            뢮       ᨬ  
                䠩 .ASM .  ⮣ ⮫쪮  6 ᨬ.

 믮 C ணࠬ:   ப
 ----------------------
  <infile           ७祭 ⠭⭮ 
  >outfile              ------      ------    뢮
  prog1 | prog2    pipe - ஢.⠭ 뢮 prog1 -
                     ⠭  prog2,    -
                     ணࠬ
  prog1 |B prog2   pipe  㪠 ᪠  ஬筮 䠩
  prog1 \ prog2    ᫥⥫쭮 믮 ணࠬ
㬥 ࠧ ஡,
 "窨 㦠 㬥  ७ ஡"
⥬ ࠢ ᨬ:  \"   \\   \|   \<    \>
argv[0]  ப ⠪  msx 㤠  

         ᢮⢠ MSX-C
         --------------
            ४
            --------
    ⫨稨  ⠭  ४ᨢ 㭪樨  
⥫ ०: recursive  nonrec. ४ᨢ 㭪樨  -
 ॥. ਬ:
    recursive int  factorial(n)
    int n;
    { return (n>1) ? n*factorial(n-1) : 1
    }

  ०  ⠭   㬮砭:
#pragma nonrec
#pragma recursive

㭪樨  ६묨 ᫮ ࠬ஢
---------------------------------------
variable-parameter functions -  㭪樨  ६  ᫮  
⨯ ࠬ஢.  ᨭa:

  declarator:
        identifier
        (declarator)
        * declarator
        declarator()
        declarator(.)
        declarator[constant-expression opt]

  abstract-deslarator:
        empty
        (abstract-declarator)
        *abstract-declarator
        abstract-declarator()
        abstract-declarator(.)
        abstract-declarator[constant-exprassion opt]

declarator(.)  abstract-declarator(.)
 - 祭 㭪樨  ६ ᫮ ࠬ஢
declarator()   abstract-declarator()
 - 祭 㭪樨  䨪஢ ᫮ ࠬ஢
 㭪権  ६ ᫮ ࠬ஢   ࠭-
 祬  ᯮ짮.  㬮砭 㭪  䨪஢ -
 ࠬ஢
 ᠭ 㭪権  ६ ᫮ ࠬ஢
 ------------------------------------------------
   int func(.); /* this declaration must be included */
   int func(nargs,args)
   int nargs; int args;
   {
    .....
   }
 맮 ⠪ 㭪樨    ࠬ :  nargs  -
⢮ 㬥⮢. ᪨ ࠬ    2  
稭   args, ଠ樨  ⨯ ࠬ஢ .
    1 - args    2 - args+2 ...
ਬ 㯠   ᨬ:
    (char)args
    (char)*(&args+1)   /* second arg*/
ਬ - . 㭪樨 printf  scanf  ⥪ ⥪.

        ⮢ 䬥⨪
        -------------------
 樨  䥪⨢ ⭮  ⠬     -
 ᯮ . 䬥⨪  묨 ⨯ char.

 ᪨ 権  権 ⭮襭  char.
          (&& || ! == != > < >= <=)
  祭,  ᨬ ਭ ᮣ襭  :
TINY  ᥫ, BOOL  ᪨ '⮢.  ।  -
짮 typedef ᨭ char  stdio.h.

  
   1.९ ⮢

int i; TINY x,y; x=10; y=30;
  i=x*y;            /* i = 44 */
  i=(int)x * (int)y;/* i=300 */

  i=x<<8 | y;          /* i=y */
  i=(unsigned)x<<8 | y /* i=x*256+y */

   2.char -  稭

 2-3=255

   3. ᮮ⢥ᢨ ࠬ஢

 func(x)
 TINY x;{ ....... }

 main()
 { func(1);        /* ࠢ쭮 ! */
   func(TINY(1));  /* ࠢ쭮     */
 }

   । ॣ஢
   -----------------------
 msx-C ॣ஢ ६  auto  ६    ⮬
᫥,    (char,int,unsigned,pointer)  ६
  믮 ணࠬ   ॣ  ⮬᪨  
 .  饭  㭪樨 ६    ॣ஢
६  . 筮 ந室  樨 &.

 

     int n; int *p;
     p=&n;              /*  tranf. n to mem     */
     n=10;              /*  back to register    */
     *p=100;            /*  but n is so far     */
     printf("%d",n);    /*  10 will be printed  */

 饭  ࠧ襭 ࠧ饭 ६  ॣ  -
:
 #pragma nonregalo          /*  NON REGister ALOcation */
 #pragma regalo             /*  REGister ALOcation     */

 ⥫ 砭
 ------------------------
msx-C ᯮ  16 ᨬ 

譨  ᯮ   6 ᨬ.  䫠 -l cg  ⥪ 
ᥬ 㤥  6 ᨬ.

८ࠧ 譨 :
  _   @
      @

#include <file.ext>  㬮砭
#include "file.ext" 室  (  ஬ ணࠬ)

 ४樨  ணࠬ஢
 --------------------------------
ᯮ짮 ४ᨢ 㭪樨

० ᮢ⨬  PDP 11 ਢ  䥪⨢ 

ᯮ ⮢ 䬥᪨ 樨

unsigned ।⥫쭥 祬 int

  a ६   "static"

       㭪樨
      --------------------
ᮣ襭  ⨯ 頥 祭

VOID :  頥 祭
BOOL : ᪮ 祭

 ᫨ 㭪 ।     (isalpha,isupper,islower,isd
 igit, isspace)   ᫥ ।  ࠦ 騥  -
  䥪  ⢥ 㬥
ਬ: char *s;s="An A";isalpha(*s++);

                ⠭ 㭪樨
                -------------------
                        LIB0.C

char bdos(c,de,hl)      /* 饭  BDOS ,-  A   */
char c; int de,hl;

int bdosh(c,de,hl)      /* 饭  BDOS ,-楫  HL */
char c; int de,hl;

char bios(bios_code,bc,de) /* 饭  BIOS msx dos  ,
char bios_code; int bc,de;     -   A                */

int biosh(bios_code,bc,de) /* 饭  BIOS msx dos ,
char bios_code; int bc,de;     - 楫  HL              */

char calla(addr,a,h,b,d)
int call(addr,a,h,b,d)
int *addr, a, b, d, h;

char inp(port)
int port;

VOID outp(port,val)
int port, val;

                        LIB1.C

VOID setmem (addr, count ,byte)  /* fill memory */
char *adr,byte; unsigned count;

VOID movmem (source, dest, count)
char *source,*dest; unsigned count;

int atoi (s)                    /* ascii to integer */
char *s;

char *strcat (*s,*d)            /* concat */
char *s,*d;

int strcmp (s,t)                /* copare: result +,0,- */
char *s,*t;

char *strcry (s,t)              /* string copy */
char *s,*t;

int strlen (s)
char *s;

char toupper (c)
char c;

char tolower (c)
char c;
                                /* quick sort */
VOID qsort ( base , n , width , compar )
char *base; int (*compar)(); unsigned width, n;

int abs (n)
int n;

int min (x, y)
int x, y;

int max (x, y)
int x, y;

char *sbrk (n)                  /* set begin free memory, default end of
unsigned n;                      data segment */

VOID rsvstk (n)                 /* set stack width */
int n;

VOID free (ap)                  /* free allocated memory */
char *ap;

char *alloc (nbytes)            /* allocate memory */
unsigned nbytes;

                        LIB2.C

BOOL kbhit ()                   /* console status */

VOID sensebrk ()                /* check for ^C */

int expargs (argc ,argv , maxargs ,xargv)
int argc, maxargs;  char *argv[], *xargv[];

FD open (filename ,mode)        /* disk file open. mode 0 - r 1 - w 2 - rw */
char *filename;int mode;

FD creat (filename)             /* delete and creat */
char *filename;

STATUS close (fd)
FD fd;

int read (fd ,buf ,bytes)
FD fd; char *buf; unsigned bytes;

int write (fd ,buf ,bytes)
FD fd; char *buf; unsigned bytes;

STATUS unlink (filename)
char *filename;

STATUS rename (oldname ,newname)
char *oldname, *newname;

                /* buffered i/o functions */

FILE *fopen (nargs ,xfn ,xmode ,xbsiz)  /* xmode 'R' 'W', xfn - device, file */
int nargs; char *xfn,*xmode; unsigned xbsiz;

STATUS fclose (fp)
FILE *fp;

int getc (fp)
FILE *fp;

VOID ungetc (c,fp)
char c; FILE *fp;

STATUS putc (c,fp)
char c; FILE *fp;

STATUS fputs (s ,fp)
char *s; FILE *fp;

char *fgets(s ,n ,fp)
char *s; int n; FILE *fp;

int getchar ()

STATUS putchar (c)
char c;

VOID ungetch (c)
char c;

char *gets (s ,n)
char *s; int n;

STATUS puts(s)
char *s;

VOID execl (nargs ,progname ,args)
int nargs; char *progname,*args;

VOID execv (progname, argv)
char *progname, **argv;

                        LIB3.C

STATUS printf (nargs,format)
int nargs; char *format;

STATUS fprintf (nargs, iobuf ,format)
int nargs; FILE *iobuf; char *format;

STATUS sprintf (nargs, line ,format)
int nargs; char *line ,*format;

STATUS fscanf (nargs, iobuf ,format)
int nargs; FILE *iobuf; char *format;

STATUS scanf (nargs,format)
int nargs; char *format;

STATUS sscanf (nargs, line ,format)
int nargs; char *line ,*format;


ਫ 

      䬥ᨪ ८ࠧ: ⢥   ᮢ-
  PDP-11.  . ०   ⮬᪮  ८ࠧ
char -> int  . ८ࠧ-  char -> int  ந室  -
 襣 㫥 ,char  - 稭   ࢠ
0..255

  . ० (native mode)  ⨯ intconst  charconst

 unsigned + ? -> unsigned
   else
 int      + ? -> int
   else
 char     + ? -> char
   else
 intconst + ? -> intconst
   else
 charconst+ ? -> charconst

  ० PDP 11 :
1.
   char -> int

2. unsigned + ? -> unsigned
    else
   int  + int   -> int


ਫ 

 ᯮ짮 ணࠬ  ᥬ

1. । ࠬ஢

1.1 㭪樨  䨪஢ ᫮ ࠬ஢

 ࠬ  A  HL ( ⨯)
ன                 DE
⨩            C     BC
⢥  稥  ⥪ ( ࠬ   )

1.2 㭪樨  ६ ᫮ ࠬ஢

  ࠬ  ⥪, HL  -

2.0  祭

char  ,int  .  HL- . ०
 HL ᥣ            - ०. PDP

3   ⮪ 쭮 

3.1  뢠 㭪

뢠 㭪 㡨ࠥ ࠬ  ⥪

3.2 뢠 㭪

 室 祭 SP   ࠢ 祭  室

ਫ 
 ࠧ  msx-C  unix 7 version
 -------------------------------------

1.⨯ float,long,double  ন,  १ࢨ஢

2. ন ⮢  

3. ࠭祭  . ࠦ  sizeof  ᯮ짮
  case  ᠭ ᨢ
   ࠭祭  ᠥ 樠樨

4.recursive & nonrec 㭪樨

5.variable-parameters functions

6.struct & union  ࠧ( ᥪ騥) ࠭⢠ 
  ࠧ    묨

7. ⮬. ८ࠧ.  㪠⥫ﬨ  楫묨. ࠢ  ᢠ
     ᮮ.  訡
     ࠧ襭 箬 -t cf

8. - . 稭

9.⮢ 䬥⨪  ࠢ  ८ࠧ

10. ⮬᪮ ॣ஢ ।   ६

11.  ਨ (-c cf)

12.  㬮砭  ⨯ 㭪樨  ࠬ஢ 筮 (-f cf)

13.  ४⨢ । #if

14.  ४⨢ #pragma
     #pragma  pdp11mode
  ᯮ짮 ⮫쪮  ࠧ  砫 ணࠬ 
     #pragma optimaze time
     #pragma optimaze space
 㬮砭 space
     #pragma nonrec
     #pragma recursive

     #pragma regalo
     #pragma nonregalo

  ਫ 

 १ࢨ஢ ᫮
 -----------------------

auto      extern     return     break     float      short
case      for        sizeof     char      goto       static
continue  if         struct     default   int        swith
do        long       typedef    double    nonrec     union
else      recursive  unsigned   entry     register   while

 ਫ 

 FPC ணࠬ ન ࠬ஢
----------------------------------

饭:
fpc [options] file1 [...]

䠨 㪠뢠  ७,    '.TCO'

䫠:
        -s      த 믮 bat-䠩 ᬮ  稥 訡

        -u       뤠 ᮮ饭  訡  । 㭪

        -t      ० ஢ન ⨯, ஬ int,unsigned 
                pointer  ࠧ묨

        -i      뤠 ଠ   맮

ਫ H

 MX.COM ஥  .TCO  .ASM 䠩 䠩, ᮤঠ ⤥ 㫨
 饭:
 MX [options] file name [modname1, modname2,...]
      㫥  ?,*
    a?b a* *s b*s *put*
 -l     맮 LIB80, ⮣ ⮫쪮 REL
 -oX      뢮 㫥


