the cutting room mirror

The 4th Unit (Sharp X68000)

This page contains no introduction.
What makes this game notable or what is it about? Are you a bad enough dude to save this article?

To do:
There also seems to be an SDK "X68k BASIC to C Converter" on Disk 1 and other .X executables.

Leftover SDK Headers#

Present throughout Disk 1 are various .h files that seem to be from the X68000 SDK. Although the files don't have filenames (due to not being in the file table), they are labelled in a comment at the start of the file. Judging by the deleted files and folders listed in the filetables, it appears that the source was stored on the master disk but later deleted before copying.

ctype.h#

/*
 * ctype.h X68k XC Compiler v1.01 Copyright 1987 SHARP/Hudson
 */
#define __U 1
#define __L 2
#define __N 4
#define __S 8
#define __P 16
#define __C 32
#define __B 64
#define __X 128

extern  char _ctype[];

/*********** ctype macros ****************/
#define isalpha(c)      (_ctype[(c)+1]&(__U|__L))
#define isupper(c)      (_ctype[(c)+1]&__U)
#define islower(c)      (_ctype[(c)+1]&__L)
#define isdigit(c)      (_ctype[(c)+1]&__N)
#define isxdigit(c)     (_ctype[(c)+1]&__X)
#define isspace(c)      (_ctype[(c)+1]&__S)
#define ispunct(c)      (_ctype[(c)+1]&__P)
#define isalnum(c)      (_ctype[(c)+1]&(__U|__L|__N))
#define isprint(c)      (_ctype[(c)+1]&(__P|__U|__L|__N|__B))
#define isgraph(c)      (_ctype[(c)+1]&(__P|__U|__L|__N))
#define iscntrl(c)      (_ctype[(c)+1]&__C)
#define isascii(c)      ((unsigned)(c)<=127)
#define iscsym(c)       (isalnum(c)||(((c)&127)==0x5f))
#define iscsymf(c)      (isalpha(c)||(((c)&127)==0x5f))

#define toupper(c)     (islower(c)?((c)-('a'-'A')):(c))
#define tolower(c)     (isupper(c)?((c)+('a'-'A')):(c))
#define toascii(c)      ((c)&127)

#ifndef NULL
#define NULL 0
#endif

assert.h#

/*
 * assert.h X68k XC Compiler v1.01 Copyright 1987 SHARP/Hudson
 */
#ifndef NDEBUG
#define assert(exp) {if (!(exp)) {fprintf(stderr,"Assertion failed: file %s, line %d\n", , );exit(1);}}
#else
#define assert(exp)
#endif /* NDEBUG */

fefunc.h#

    .nlist
*
* fefunc.h X68k XC Compiler v1.01 Copyright 1987 SHARP/Hudson
*
FPACK   macro   callname
    dc.w    callname
    endm

****************************************
__LMUL          EQU $FE00       d0=d0*d1
__LDIV          EQU $FE01       d0=d0/d1
__LMOD          EQU $FE02       d0=d0 mod d1
*           EQU $FE03
__UMUL          EQU $FE04       d0=d0*d1
__UDIV          EQU $FE05       d0=d0/d1
__UMOD          EQU $FE06       d0=d0 mod d1
*           EQU $FE07
__IMUL          EQU $FE08       d0d1=d0*d1
__IDIV          EQU $FE09       d0アマリd1=d0/d1
*           EQU $FE0A
*           EQU $FE0B
__RANDOMIZE     EQU $FE0C       err=d0(0~65535)
__SRAND         EQU $FE0D       err=d0(-32768~32767)
__RAND          EQU $FE0E       d0=rand()
*           EQU $FE0F
*************************************
__STOL          EQU $FE10       d0=(a0).10進
__LTOS          EQU $FE11       (a0)..=d0
__STOH          EQU $FE12       d0=(a0).16進
__HTOS          EQU $FE13       (a0)..=d0
__STOO          EQU $FE14       d0=(a0).8進
__OTOS          EQU $FE15       (a0)..=d0
__STOB          EQU $FE16       d0=(a0).2進
__BTOS          EQU $FE17       (a0)..=d0
__IUSING        EQU $FE18       (a0)..=d0,d1桁
*           EQU $FE19
*************************************
__LTOD          EQU $FE1A       d0d1=d0
__DTOL          EQU $FE1B       d0=d0d1
__LTOF          EQU $FE1C       d0=d0
__FTOL          EQU $FE1D       d0=d0
__FTOD          EQU $FE1E       d0d1=d0
__DTOF          EQU $FE1F       d0=d0d1
*************************************
__VAL           EQU $FE20       d0d1=(a0).16/10/8/2進
__USING         EQU $FE21       (a0)..=d0d1,d2.d3,d4
__STOD          EQU $FE22       d0d1,d2,d3=(a0)10進
__DTOS          EQU $FE23       (a0)..=d0d1
__ECVT          EQU $FE24       (a0),d0,d1=d0d1,d2全体桁
__FCVT          EQU $FE25       (a0),d0,d1=d0d1,d2小数点桁
__GCVT          EQU $FE26       (a0)..=d0d1,d2全体桁
*           EQU $FE27
*************************************
__DTST          EQU $FE28       z=d0d1
__DCMP          EQU $FE29       z,c=d0d1-d2d3
__DNEG          EQU $FE2A       d0d1=neg(d0d1)
__DADD          EQU $FE2B       d0d1=d0d1+d2d3
__DSUB          EQU $FE2C       d0d1=d0d1-d2d3
__DMUL          EQU $FE2D       d0d1=d0d1*d2d3
__DDIV          EQU $FE2E       d0d1=d0d1/d2d3
__DMOD          EQU $FE2F       d0d1=d0d1 mod d2d3
*************************************
__DABS          EQU $FE30       d0d1=abs(d0d1)
__DCEIL         EQU $FE31       d0d1=ceil(d0d1)
__DFIX          EQU $FE32       d0d1=fix(d0d1)
__DFLOOR        EQU $FE33       d0d1=floor(d0d1)
__DFRAC         EQU $FE34       d0d1=frac(d0d1)
__DSGN          EQU $FE35       d0d1=sgn(d0d1)
__SIN           EQU $FE36       d0d1=sin(d0d1)
__COS           EQU $FE37       d0d1=cos(d0d1)
__TAN           EQU $FE38       d0d1=tan(d0d1)
__ATAN          EQU $FE39       d0d1=atan(d0d1)
__LOG           EQU $FE3A       d0d1=ln(d0d1)
__EXP           EQU $FE3B       d0d1=exp(d0d1)
__SQR           EQU $FE3C       d0d1=sqr(d0d1)
__PI            EQU $FE3D       d0d1=pi()
__NPI           EQU $FE3E       d0d1=pi(d0d1)
__POWER         EQU $FE3F       d0d1=pow(d0d1,d2d3)
__RND           EQU $FE40       d0d1=rnd()
*           EQU $FE41
*           EQU $FE42
*           EQU $FE43
*           EQU $FE44
*           EQU $FE45
*           EQU $FE46
*           EQU $FE47
*           EQU $FE48
__DFREXP        EQU $FE49       D0D1,D2=D0D1
__DLDEXP        EQU $FE4A       D0D1=D0D1,D2
__DADDONE       EQU $FE4B       d0d1=d0d1+1#
__DSUBONE       EQU $FE4C       d0d1=d0d1-1#
__DDIVTWO       EQU $FE4D       d0d1=d0d1/2#
__DIEECNV       EQU $FE4E       d0d1=d0d1
__IEEDCNV       EQU $FE4F       d0d1=d0d1
*************************************
__FVAL          EQU $FE50
__FUSING        EQU $FE51
__STOF          EQU $FE52
__FTOS          EQU $FE53
__FECVT         EQU $FE54
__FFCVT         EQU $FE55
__FGCVT         EQU $FE56
*           EQU $FE57
*************************************
__FTST          EQU $FE58
__FCMP          EQU $FE59
__FNEG          EQU $FE5A
__FADD          EQU $FE5B
__FSUB          EQU $FE5C
__FMUL          EQU $FE5D
__FDIV          EQU $FE5E
__FMOD          EQU $FE5F
*************************************
__FABS          EQU $FE60
__FCEIL         EQU $FE61
__FFIX          EQU $FE62
__FFLOOR        EQU $FE63
__FFRAC         EQU $FE64
__FSGN          EQU $FE65
__FSIN          EQU $FE66
__FCOS          EQU $FE67
__FTAN          EQU $FE68
__FATAN         EQU $FE69
__FLOG          EQU $FE6A
__FEXP          EQU $FE6B
__FSQR          EQU $FE6C
__FPI           EQU $FE6D
__FNPI          EQU $FE6E
__FPOWER        EQU $FE6F
__FRND          EQU $FE70
*           EQU $FE71
*           EQU $FE72
*           EQU $FE73
*           EQU $FE74
*           EQU $FE75
*           EQU $FE76
*           EQU $FE77
*           EQU $FE78
__FFREXP        EQU $FE79
__FLDEXP        EQU $FE7A
__FADDONE       EQU $FE7B
__FSUBONE       EQU $FE7C
__FDIVTWO       EQU $FE7D
__FIEECNV       EQU $FE7E
__IEEFCNV       EQU $FE7F

__CLMUL         EQU $FEE0
__CLDIV         EQU $FEE1
__CLMOD         EQU $FEE2
__CUMUL         EQU $FEE3
__CUDIV         EQU $FEE4
__CUMOD         EQU $FEE5
__CLTOD         EQU $FEE6
__CDTOL         EQU $FEE7
__CLTOF         EQU $FEE8
__CFTOL         EQU $FEE9
__CFTOD         EQU $FEEA
__CDTOF         EQU $FEEB

__CDCMP         EQU $FEEC
__CDADD         EQU $FEED
__CDSUB         EQU $FEEE
__CDMUL         EQU $FEEF
__CDDIV         EQU $FEF0
__CDMOD         EQU $FEF1
__CFCMP         EQU $FEF2
__CFADD         EQU $FEF3
__CFSUB         EQU $FEF4
__CFMUL         EQU $FEF5
__CFDIV         EQU $FEF6
__CFMOD         EQU $FEF7
__CDTST         EQU $FEF8
__CFTST         EQU $FEF9
__CDINC         EQU $FEFA
__CFINC         EQU $FEFB
__CDDEC         EQU $FEFC
__CFDEC         EQU $FEFD

__FEVARG        EQU $FEFE   >d0,d1
__FEVECS        EQU $FEFF   d0,a0>d0
    .list

conio.h#

/*
 * conio.h X68k XC Compiler v1.01 Copyright 1987 SHARP/Hudson
 */
#ifdef  FORWORD
char    *cgets(char *);
int cprintf(char *,);
void    cputs(char *);
int cscanf(char *,);
int getch();
int getche();
int kbhit();
void    putch(int);
int ungetch(int);
#else
char    *cgets();
int cprintf();
void    cputs();
int cscanf();
int getch();
int getche();
int kbhit();
void    putch();
int ungetch();
#endif

float.h#

/*
 * float.h X68k XC Compiler v1.01 Copyright 1987 SHARP/Hudson
 */
#define FLT_RADIX 2     /* radix of exponent            */
#define DBL_MAX_EXP 308     /* max decimal exponent for double  */
#define DBL_MIN_EXP -308    /* min decimal exponent for double  */
#define DBL_DIG 14      /* max decimal digits for double    */
#define HUGE_VAL 3.5953862697246E+308   /* huge double value        */
/*       1.1125369292536E-308                   */
#ifndef NULL
#define NULL 0
#endif

iocslib.h#

/*
 * iocslib.h X68k XC Compiler v1.01 Copyright 1987 SHARP/Hudson
 */
#include    <class.h>

struct  REGS    {
    int d0;
    int d1;
    int d2;
    int d3;
    int d4;
    int d5;
    int d6;
    int d7;
    int a1;
    int a2;
    int a3;
    int a4;
    int a5;
    int a6;
};

/*
 *
 */

struct  FNTBUF  {
    WORD    xl;
    WORD    yl;
    UBYTE   buffer[72]; /*  #define FNT_PAT_BUF 72  (=MAX) */
};

/*
 *
 */

struct  CLIPXY  {
    WORD    xs;
    WORD    ys;
    WORD    xe;
    WORD    ye;
};


/*
 *
 */

struct  CHAIN {
    INT adr;
    UWORD   len;    
};

/*
 *
 */

struct  CHAIN2 {
    INT adr;
    UWORD   len;
    struct  CHAIN2  *next;   /*      =NULLPTRなら終わり。     */  
};

/*
 *
 */

struct  PSETPTR{
    WORD    x;
    WORD    y;
    UWORD   color;
};

/*
 *
 */

struct  POINTPTR{
    WORD    x;
    WORD    y;
    UWORD   color;
};

/*
 *
 */

struct  LINEPTR{
    WORD    x1;
    WORD    y1;
    WORD    x2;
    WORD    y2;
    UWORD   color;
    UWORD   linestyle;
};

/*
 *
 */

struct  BOXPTR{
    WORD    x1;
    WORD    y1;
    WORD    x2;
    WORD    y2;
    UWORD   color;
    UWORD   linestyle;
};

/*
 *
 */

struct  FILLPTR{
    WORD    x1;
    WORD    y1;
    WORD    x2;
    WORD    y2;
    UWORD   color;
};

/*
 *
 */

struct  CIRCLEPTR{
    WORD    x;
    WORD    y;
    UWORD   radius;
    UWORD   color;
    WORD    start;
    WORD    end;
    UWORD   ratio;
};

/*
 *
 */

struct  PAINTPTR{
    WORD    x;
    WORD    y;
    UWORD   color;
    UBYTE * buf_start;
    UBYTE * buf_end;
};

/*
 *
 */

struct  SYMBOLPTR{
    WORD    x1;
    WORD    y1;
    UBYTE   *string_address;
    UBYTE   mag_x;
    UBYTE   mag_y;
    UWORD   color;
    UBYTE   font_type;
    UBYTE   angle;
};

/*
 *
 */



struct  GETPTR{
    WORD    x1;
    WORD    y1;
    WORD    x2;
    WORD    y2;
    UBYTE * buf_start;
    UBYTE * buf_end;
};

/*
 *
 */

struct  PUTPTR{
    WORD    x1;
    WORD    y1;
    WORD    x2;
    WORD    y2;
    UBYTE * buf_start;
    UBYTE * buf_end;
};

/*
 *
 */

struct  XLINEPTR{
    UWORD   vram_page;
    WORD    x;
    WORD    y;
    WORD    x1;
    UWORD   line_style;
};

/*
 *
 */


struct  YLINEPTR{
    UWORD   vram_page;
    WORD    x;
    WORD    y;
    WORD    y1;
    UWORD   line_style;
};

/*
 *
 */

struct  TBOXPTR{
    UWORD   vram_page;
    WORD    x;
    WORD    y;
    WORD    x1;
    WORD    y1;
    UWORD   line_style;
};

/*
 *
 */

struct  TXFILLPTR{
    UWORD   vram_page;
    WORD    x;
    WORD    y;
    WORD    x1;
    WORD    y1;
    UWORD   fill_patn;
};

/*
 *
 */

struct  TREVPTR{
    UWORD   vram_page;
    WORD    x;
    WORD    y;
    WORD    x1;
    WORD    y1;
};

/*
 *  PATST
 */
struct  PATST   {
    short   OFFSETX;
    short   OFFSETY;
    short   shadow[16];
    short   pattern[16];
};

/*
 *
 */

#ifdef FORWORD
    int TRAP15(struct REGS *,struct REGS *);
    int B_KEYINP();
    int B_KEYSNS();
    int B_SFTSNS();
    int BITSNS(int);
    void    SKEYSET(int);
    void    TVCTRL(int);
    void    LEDMOD(int,int);
    int TGUSEMD(int,int);
    int DEFCHR(int,int,UBYTE *);
    int CRTMOD(int);
    int CONTRAST(int);
    int HSVTORGB(int,int,int);
    int TPALET(int,int);
    int TPALET2(int,int);
    void    TCOLOR(int);
    int FNTGET(int,int,struct FNTBUF *);
    void    TEXTGET(int,int,struct FNTBUF *);
    void    TEXTPUT(int,int,struct FNTBUF *);
    void    CLIPPUT(int,int,struct FNTBUF *,struct CLIPXY *);
    int SCROLL(int,int,int);    
    void    B_CURON();
    void    B_CUROFF();
    int B_PUTC(int);
    int B_PRINT(UBYTE *);
    int B_COLOR(int);
    int B_LOCATE(int,int);
    void    B_DOWN_S();
    void    B_UP_S();
    void    B_UP(int);
    void    B_DOWN(int);
    void    B_RIGHT(int);
    void    B_LEFT(int);
    void    B_CLR_ED();
    void    B_CLR_ST();
    void    B_CLR_AL();
    void    B_ERA_ED();
    void    B_ERA_ST();
    void    B_ERA_AL();
    void    B_INS(int);
    void    B_DEL(int);
    int B_CONSOL(int,int,int,int);
    int B_PUTMES(int,int,int,int,UBYTE *);
    int SET232C(int);
    int LOF232C();
    int INP232C();
    int ISNS232C();
    int OSNS232C();
    void    OUT232C(int);
    int JOYGET(int);
    int INIT_PRN(int,int);
    int SNSPRN();
    void    OUTLPT(int);
    void    OUTPRN(int);
    int B_SEEK(int,int);
    int B_VERIFY(int,int,int,UBYTE *);
    int B_READDI(int,int,int,UBYTE *);
    int B_DSKINI(UBYTE *,int);
    int B_DRVSNS(int);
    int B_WRITE(int,int,int,UBYTE *);
    int B_READ(int,int,int,UBYTE *);
    int B_RECALI(int);
    int B_ASSIGN(int,int,int,UBYTE *);
    int B_WRITED(int,int,int,UBYTE *);
    int B_READID(int,int,UBYTE *);
    int B_BADFMT(int,int,int);
    int B_READDL(int,int,int,UBYTE *);
    int B_FORMAT(int,int,int,UBYTE *);
    int B_DRVCHK(int,int);
    int B_EJECT(int);
    int BINDATEBCD(int);
    void    BINDATESET(int);
    int TIMEBCD(int);
    void    TIMESET(int);
    int BINDATEGET();
    int DATEBIN(int);
    int TIMEGET();
    int TIMEBIN(int);
    int DATECNV(UBYTE *);
    int TIMECNV(UBYTE *);
    int DATEASC(int,UBYTE *);
    int TIMEASC(int,UBYTE *);
    void    DAYASC(int,UBYTE *);
    int ALARMMOD(int);
    int ALARMSET(int,int,int);
    int ALARMGET(int*,int*,int*);
    void    ADPCMOUT(UBYTE *,int,int);
    void    ADPCMINP(UBYTE *,int,int);
    void    ADPCMAOT(struct CHAIN *,int,int);
    void    ADPCMAIN(struct CHAIN *,int,int);
    void    ADPCMLOT(struct CHAIN2 *,int);
    void    ADPCMLIN(struct CHAUN2 *,int);
    int ADPCMSNS();
    void    ADPCMMOD(int);
    int OPMSET(int,int);
    int OPMSNS();
    int OPMINTST(UBYTE *);
    int TIMERDST(UBYTE *,int,int);
    int VDISPST(UBYTE *,int,int);
    int CRTCRAS(UBYTE *,int);
    int HSYNCST(UBYTE *);
    int PRNINTST(UBYTE *);
    void    MS_INIT();
    void    MS_CURON();
    void    MS_CUROF();
    int MS_STAT();
    int MS_GETDT();
    int MS_CURGT();
    int MS_CURST(int,int);
    int MS_LIMIT(int,int,int,int);
    int MS_OFFTM(int,int);
    int MS_ONTM(int,int);
    void    MS_PATST(int,struct PATST *);
    void    MS_SEL(int);
    void    MS_SEL2(UBYTE *);
    int SKEY_MOD(int,int,int);
    void    DENSNS();
    int ONTIME();
    int B_INTVCS(int,int);
    int B_SUPER(int);
    int B_BPEEK(UBYTE *);
    int B_WPEEK(UWORD *);
    int B_LPEEK(ULONG *);
    void    B_MEMSTR(UBYTE *,UBYTE *,int);
    void    B_BPOKE(UBYTE *,int);
    void    B_WPOKE(UWORD *,int);
    void    B_LPOKE(ULONG *,int);
    void    B_MEMSET(UBYTE *,UBYTE *,int);
    void    DMAMOVE(UBYTE *,UBYTE *,int,int);
    void    DMAMOV_A(struct CHAIN *,UBYTE*,int,int);
    void    DMAMOV_L(struct CHAIN2 *,UBYTE *,int);
    int DMAMODE();
    int BOOTINF();
    int ROMVER();
    void    G_CLR_ON();
    int GPALET(int,int);
    int SFTJIS(int);
    int JISSFT(int);
    int AKCONV(int,int);
    int RMACNV(int,UBYTE *,UBYTE *);
    int DAKJOB(UBYTE *);
    int HANJOB(UBYTE *);
    void    OS_CURON();
    void    OS_CUROF();
    int APAGE(int);
    int VPAGE(int);
    int HOME(int,int,int);
    int WINDOW(int,int,int,int);
    int WIPE();
    int PSET(struct PSETPTR *);
    int POINT(struct POINTPTR *);
    int LINE(struct LINEPTR *);
    int BOX(struct BOXPTR *);
    int FILL(struct FILLPTR *);
    int CIRCLE(struct CIRCLEPTR *);
    int PAINT(struct PAINTPTR *);
    int SYMBOL(struct SYMBOLPTR *);
    int GETGRM(struct GETPTR *);
    int PUTGRM(struct PUTPTR *);
    int SP_INIT();
    int SP_ON();
    void    SP_OFF();
    int SP_CGCLR(int);
    void    SP_DEFCG(int,int,UBYTE *);
    int SP_GTPCG(int,int,UBYTE *);
    int SP_REGST(int,int,int,int,int,int);
    int SP_REGGT(int,int*,int*,int*,int*);
    int BGSCRLST(int,int,int);
    int BGSCRLGT(int,int*,int*);
    int BGCTRLST(int,int,int);
    int BGCTRLGT(int);
    int BGTEXTCL(int,int);
    int BGTEXTST(int,int,int,int);
    int BGTEXTGT(int,int,int);
    int SPALET(int,int,int);
    void    TXXLINE(struct XLINEPTR *);
    void    TXYLINE(struct YLINEPTR *);
    void    TXBOX(struct XBOXPTR *);
    void    TXFILL(struct TXFILLPTR *);
    void    TXREV(struct TREVPTR *);
    void    TXRASCPY(int,int,int);
    void    ABORTRST();
    void    IPLERR();
    void    ABORTJOB();

#else
    int TRAP15();
    int B_KEYINP();
    int B_KEYSNS();
    int B_SFTSNS();
    int BITSNS();
    void    SKEYSET();
    void    TVCTRL();
    void    LEDMOD();
    int TGUSEMD();
    int DEFCHR();
    int CRTMOD();
    int CONTRAST();
    int HSVTORGB();
    int TPALET();
    int TPALET2();
    void    TCOLOR();
    int FNTGET();
    void    TEXTGET();
    void    TEXTPUT();
    void    CLIPPUT();
    int SCROLL();   
    void    B_CURON();
    void    B_CUROFF();
    int B_PUTC();
    int B_PRINT();
    int B_COLOR();
    int B_LOCATE();
    void    B_DOWN_S();
    void    B_UP_S();
    void    B_UP();
    void    B_DOWN();
    void    B_RIGHT();
    void    B_LEFT();
    void    B_CLR_ED();
    void    B_CLR_ST();
    void    B_CLR_AL();
    void    B_ERA_ED();
    void    B_ERA_ST();
    void    B_ERA_AL();
    void    B_INS();
    void    B_DEL();
    int B_CONSOL();
    int B_PUTMES();
    int SET232C();
    int LOF232C();
    int INP232C();
    int ISNS232C();
    int OSNS232C();
    void    OUT232C();
    int JOYGET();
    int INIT_PRN();
    int SNSPRN();
    void    OUTLPT();
    void    OUTPRN();
    int B_SEEK();
    int B_VERIFY();
    int B_READDI();
    int B_DSKINI();
    int B_DRVSNS();
    int B_WRITE();
    int B_READ();
    int B_RECALI();
    int B_ASSIGN();
    int B_WRITED();
    int B_READID();
    int B_BADFMT();
    int B_READDL();
    int B_FORMAT();
    int B_DRVCHK();
    int B_EJECT();
    int BINDATEBCD();
    void    BINDATESET();
    int TIMEBCD();
    void    TIMESET();
    int BINDATEGET();
    int DATEBIN();
    int TIMEGET();
    int TIMEBIN();
    int DATECNV();
    int TIMECNV();
    int DATEASC();
    int TIMEASC();
    void    DAYASC();
    int ALARMMOD();
    int ALARMSET();
    int ALARMGET();
    void    ADPCMOUT();
    void    ADPCMINP();
    void    ADPCMAOT();
    void    ADPCMAIN();
    void    ADPCMLOT();
    void    ADPCMLIN();
    int ADPCMSNS();
    void    ADPCMMOD();
    int OPMSET();
    int OPMSNS();
    int OPMINTST();
    int TIMERDST();
    int VDISPST();
    int CRTCRAS();
    int HSYNCST();
    int PRNINTST();
    void    MS_INIT();
    void    MS_CURON();
    void    MS_CUROF();
    int MS_STAT();
    int MS_GETDT();
    int MS_CURGT();
    int MS_CURST();
    int MS_LIMIT();
    int MS_OFFTM();
    int MS_ONTM();
    void    MS_PATST();
    void    MS_SEL();
    void    MS_SEL2();
    int SKEY_MOD();
    void    DENSNS();
    int ONTIME();
    int B_INTVCS();
    int B_SUPER();
    int B_BPEEK();
    int B_WPEEK();
    int B_LPEEK();
    void    B_MEMSTR();
    void    B_BPOKE();
    void    B_WPOKE();
    void    B_LPOKE();
    void    B_MEMSET();
    void    DMAMOVE();
    void    DMAMOV_A();
    void    DMAMOV_L();
    int DMAMODE();
    int BOOTINF();
    int ROMVER();
    void    G_CLR_ON();
    int GPALET();
    int SFTJIS();
    int JISSFT();
    int AKCONV();
    int RMACNV();
    int DAKJOB();
    int HANJOB();
    void    OS_CURON();
    void    OS_CUROF();
    int APAGE();
    int VPAGE();
    int HOME();
    int WINDOW();
    int WIPE();
    int PSET();
    int POINT();
    int LINE();
    int BOX();
    int FILL();
    int CIRCLE();
    int PAINT();
    int SYMBOL();
    int GETGRM();
    int PUTGRM();
    int SP_INIT();
    int SP_ON();
    void    SP_OFF();
    int SP_CGCLR();
    void    SP_DEFCG();
    int SP_GTPCG();
    int SP_REGST();
    int SP_REGGT();
    int BGSCRLST();
    int BGSCRLGT();
    int BGCTRLST();
    int BGCTRLGT();
    int BGTEXTCL();
    int BGTEXTST();
    int BGTEXTGT();
    int SPALET();
    void    TXXLINE();
    void    TXYLINE();
    void    TXBOX();
    void    TXFILL();
    void    TXREV();
    void    TXRASCPY();
    void    ABORTRST();
    void    IPLERR();
    void    ABORTJOB();
#endif

jstring.h#

/*
 * jstring.h X68k XC Compiler v1.01 Copyright 1987 SHARP/Hudson
 */
#ifdef  FORWORD
int jstrcmp(unsigned char *,unsigned char *);
int jstrncmp(unsigned char *,unsigned char *,int); 
unsigned char *jstrrchr(unsigned char *,int);
unsigned char *jstrchr(unsigned char *,int);
#else
int jstrcmp();
int jstrncmp();
unsigned char *jstrrchr();
unsigned char *jstrchr();
#endif

error.h#

/*
 * error.h X68k XC Compiler v1.01 Copyright 1987 SHARP/Hudson
 */
#define  EPERM      1
#define  ENOENT     2
#define  ESRCH      3
#define  EINTR      4
#define  EIO        5
#define  ENXIO      6
#define  E2BIG      7
#define  ENOEXEC    8
#define  EBADF      9
#define  ECHILD    10
#define  EAGAIN    11
#define  ENOMEM    12
#define  EACCES    13
#define  EFAULT    14
#define  ENOTBLK   15
#define  EBUSY     16
#define  EEXIST    17
#define  EXDEV     18
#define  ENODEV    19
#define  ENOTDIR   20
#define  EISDIR    21
#define  EINVAL    22
#define  ENFILE    23
#define  EMFILE    24
#define  ENOTTY    25
#define  ETXTBSY   26
#define  EFBIG     27
#define  ENOSPC    28
#define  ESPIPE    29
#define  EROFS     30
#define  EMLINK    31
#define  EPIPE     32
#define  EDOM      33
#define  ERANGE    34

extern int errno;

#ifndef NULL
#define NULL 0
#endif

limits.h#

/*
 * limits.h X68k XC Compiler v1.01 Copyright 1987 SHARP/Hudson
 */
#define CHAR_BIT 8      /* bits per char            */
#define CHAR_MAX 127        /* max value for char           */
#define CHAR_MIN -128       /* min value for char           */
#define SCHAR_MAX 127       /* max value for signed char        */
#define SCHAR_MIN -128      /* min value for signed char        */
#define UCHAR_MAX 255       /* max value for unsigned char      */
#define SHRT_MAX 32767      /* max value for short int      */
#define SHRT_MIN -32768     /* min value for short int      */
#define USHRT_MAX 65535     /* max value for unsigned short int     */
#define INT_MAX 2147483647  /* max value for int            */
#define INT_MIN -2147483648 /* min value for int            */
#define UINT_MAX 4294967295 /* max value for unsigned int       */
#define LONG_MAX 2147483647 /* max value for long int       */
#define LONG_MIN -2147483648    /* min value for long int       */
#define ULONG_MAX 4294967295    /* max value for unsigned long int  */

#ifndef NULL
#define NULL 0
#endif

math.h#

/*
 * math.h X68k XC Compiler v1.01 Copyright 1987 SHARP/Hudson
 */
/***** math exceptions ****/
struct exception {
    int type;
    char *name;
    double arg1, arg2;
    double retval;
};

struct complex  {
    double  x,y;
};

/** Exception type codes**/
#define DOMAIN    1
#define SING      2
#define OVERFLOW  3
#define UNDERFLOW 4
#define TLOSS     5
#define PLOSS     6

#define PI   3.1415926535898
#define PID2 1.5707963267949        /* PI/2     */
#define PID4 0.78539816339745       /* PI/4     */
#define I_PI 0.31830988618379       /* 1/PI     */
#define I_PID2 0.63661977236758     /* 1/PID2   */

extern int errno;

#ifdef  FORWORD

double  atof(char *);
double  acos(double);
double  asin(double);
double  atan(double);
double  atan2(double, double);
double  cos(double);
double  sin(double);
double  tan(double);
double  cosh(double);
double  sinh(double);
double  tanh(double);
double  exp(double);
double  frexp(double, int *);
double  ldexp(double, int);
double  log(double);
double  log10(double);
double  modf(double, double *);
double  pow(double, double);
double  sqrt(double);
double  ceil(double);
double  fabs(double);
double  floor(double);
double  fmod(double, double);
double  hypot(double, double);
double  except(int, char *, double, double, double);
int matherr(struct exception *);
double  cabs(struct complex *);

#else

double  atof();
double  acos();
double  asin();
double  atan();
double  atan2();
double  cos();
double  sin();
double  tan();
double  cosh();
double  sinh();
double  tanh();
double  exp();
double  frexp();
double  ldexp();
double  log();
double  log10();
double  modf();
double  pow();
double  sqrt();
double  ceil();
double  fabs();
double  floor();
double  fmod();
double  hypot();
double  except();
int matherr();
double  cabs();

#endif

setjmp.h#

/*
 * setjmp.h X68k XC Compiler v1.01 Copyright 1987 SHARP/Hudson
 */
typedef struct  {
    int _D3;
    int _D4;
    int _D5;
    int _D6;
    int _D7;
    int _A3;
    int _A4;
    int _A5;
    int _A6;
    int _A7;
    int _PC;
} jmp_buf;

#ifdef  FORWORD

int setjmp(jmp_buf *);
void    longjmp(jmp_buf *, int);

#else

int setjmp();
void    longjmp();

#endif

stdio.h#

/*
 * stdio.h X68k XC Compiler v1.01 Copyright 1987 SHARP/Hudson
 */
/*
 *#define   MACRO       stream function is macro ?
 */
#ifndef BUFSIZ
#define BUFSIZ  1024    /*  書き直し注意  */
#endif
#ifndef _NFILE
#define _NFILE  40  /*  書き直し注意  */
#endif
/*
 * CLIBを変更しなければ意味がありません
 * 変更ファイル       STDIO.MAC
 * AS AR実行ファイル  __MAIN.S _GETIOB.S FCLOSEAL.S FLUSHALL.S
 *          FCLOSE.S SETBUF.S FREOPEN.S FOPEN.S
 */
#ifndef EOF
#define EOF (-1)
#endif
#ifndef EOS
#define EOS '\0'
#endif
#ifndef NULL
#define NULL    (char *)0
#endif

typedef struct  _iobuf  {
    char    *_ptr;
    int _cnt;
    char    *_base;
    int _flag;
    int _bsize;
    char    _file;
    char    _pback;
} FILE;
extern  FILE    _iob[_NFILE];

#define stdin   (&_iob[0])
#define stdout  (&_iob[1])
#define stderr  (&_iob[2])
#define stdaux  (&_iob[3])
#define stdprn  (&_iob[4])

#define _IOFBF      0x00
#define _IOREAD     0x01
#define _IOWRT      0x02
#define _IORW       0x100
#define _IONBF      0x08
#define _IOMYBUF    0x10
#define _IOEOF      0x20
#define _IOERR      0x40
#define _IOLBF      0x80

#ifdef  MACRO
    #define getc(f) (--(f)->_cnt >= 0 ? 0xff & *(f)->_ptr++ : _filbuf(f))
    #define putc(c,f) (--(f)->_cnt >= 0 ? 0xff & (*(f)->_ptr++ = (c)) : _flsbuf((c),(f)))
    #define getchar() getc(stdin)
    #define putchar(c) putc((c),stdout)
    #define feof(f) ((f)->_flag & _IOEOF)
    #define ferror(f) ((f)->_flag & _IOERR)
    #define fileno(f) ((f)->_file)
    #define clearerr(f) ((f)->_flag &= ~(_IOEOF+_IOERR))
#else
    #ifdef  FORWORD
        int getc(FILE *);
        int putc(int,FILE *);
        int getchar(void);
        int putchar(int);
        int feof(FILE *);
        int ferror(FILE *);
        int fileno(FILE *);
        void    clearerr(FILE *);
    #else
        int getc();
        int putc();
        int getchar();
        int putchar();
        int feof();
        int ferror();
        int fileno();
        void    clearerr();
    #endif
#endif

#ifdef  FORWORD

    int fclose(FILE *);
    int fflush(FILE *);
    FILE    *fopen(char *, char *);
    FILE    *freopen(char *, char *, FILE *);
    void    setbuf(FILE *, char *);
    int setvbuf(FILE *, char *, int, int);
    int fprintf(FILE *, char *,);
    int fscanf(FILE *, char *,);
    int printf(char *,);
    int scanf(char *,);
    int sprintf(char *, char *,);
    int sscanf(char *, char *,);
    int fgetc(FILE *);
    char    *fgets(char *, int, FILE *);
    int fputc(int, FILE *);
    int fputs(char *, FILE *);
    char    *gets(char *);
    int puts(char *);
    int ungetc(int, FILE *);
    int fread(char *, int, int, FILE *);
    int fwrite(char *, int, int, FILE *);
    int fseek(FILE *, long, int);
    long    ftell(FILE *);
    void    rewind(FILE *);
    void    perror(char *);
    int fcloseall(void);
    int flushall(void);
    int fputchar(int);
    void    clrerr(FILE *);
    void    fmode(FILE *, int);
    int getw(FILE *);
    int fgetchar(void);
    int getl(FILE *);
    int putl(long,FILE *);
    int putw(short,FILE *);
    int setnbf(FILE *);
    FILE    *fdopen(int, char *);
#else

    int fclose();
    int fflush();
    FILE    *fopen();
    FILE    *freopen();
    void    setbuf();
    int setvbuf();
    int fprintf();
    int fscanf();
    int printf();
    int scanf();
    int sprintf();
    int sscanf();
    int fgetc();
    char    *fgets();
    int fputc();
    int fputs();
    char    *gets();
    int puts();
    int ungetc();
    int fread();
    int fwrite();
    int fseek();
    long    ftell();
    void    rewind();
    void    perror();
    int fcloseall();
    int flushall();
    int fputchar();
    void    clrerr();
    void    fmode();
    int getw();
    int fgetchar();
    int getl();
    int putl();
    int putw();
    int setnbf();
    FILE    *fdopen();
#endif

/*
 * end of stdio.h
 */

basic.h#

/*
 * basic.h X68k XC Compiler v1.01 Copyright 1987 SHARP/Hudson
 */
#ifdef  FORWORD
int  asc(char *);
double   atof(char *);
int  atoi(char *);
char    *b_binS(char *,int);
char    *b_chrS(char *,int);
char    *ecvt(double,int,int *,int *);
char    *fcvt(double,int,int *,int *);
double   fix(double);
char    *gcvt(double,int,char *);
char    *b_hexS(char *,int);
char    *b_itoa(char *,int);
char    *b_octS(char *,int);
int  toascii(char);
int  tolower(char);
int  toupper(char);
double   val(char *);
int  dskf(int);
int  b_fclose(int);
int  b_fcloseall(void);
int  b_feof(int);
int  b_fgetc(int);
int  b_fopen(char *,char *);
int  b_fputc(char,int);
int  b_fread(void *,int,int,int);
int  b_freads(char *,int,int);
int  b_fseek(int,int,int);
int  b_fwrite(void *,int,int,int);
int  b_fwrites(char *,int);
double   atan(double);
double   cos(double);
double   exp(double);
double   log(double);
double   pow(double,double);
int  rand(void);
void     randomize(int);
double   rnd(void);
double   sgn(double);
double   sin(double);
double   sqrt(double);
void     srand(int);
double   tan(double);
int  instr(int,char *,char *);
int  isalnum(char);
int  isalpha(char);
int  isascii(char);
int  iscntrl(char);
int  isdigit(char);
int  isgraph(char);
int  islower(char);
int  isprint(char);
int  ispunct(char);
int  isspace(char);
int  isupper(char);
int  isxdigit(char);
char    *b_leftS(char *,char *,int);
char    *b_midS(char *,char *,int,int);
char    *b_mirrorS(char *,char *);
char    *b_rightS(char *,char *,int);
int  b_strchr(char *,char);
int  strcspn(char *,char *);
char    *b_stringS(char *,int,char *);
int  strlen(char *);
char    *strlwr(char *);
char    *strnset(char *,char,int);
int  b_strrchr(char *,char);
char    *strrev(char *);
char    *strset(char *,char);
int  strspn(char *,char *);
char    *b_strtok(char *,char *);
char    *strupr(char *);
void     frename(char *,char *);
void     fdelete(char *);

#else
int  asc();
double   atof();
int  atoi();
char    *b_binS();
char    *b_chrS();
char    *ecvt();
char    *fcvt();
double   fix();
char    *gcvt();
char    *b_hexS();
char    *b_itoa();
char    *b_octS();
int  toascii();
int  tolower();
int  toupper();
double   val();
int  dskf();
int  b_fclose();
int  b_fcloseall();
int  b_feof();
int  b_fgetc();
int  b_fopen();
int  b_fputc();
int  b_fread();
int  b_freads();
int  b_fseek();
int  b_fwrite();
int  b_fwrites();
double   atan();
double   cos();
double   exp();
double   log();
double   pow();
int  rand();    
void     randomize();
double   rnd();
double   sgn();
double   sin();
double   sqrt();
void     srand();
double   tan();
int  instr();
int  isalnum();
int  isalpha();
int  isascii();
int  iscntrl();
int  isdigit();
int  isgraph();
int  islower();
int  isprint();
int  ispunct();
int  isspace();
int  isupper();
int  isxdigit();
char    *b_leftS();
char    *b_midS();
char    *b_mirrorS();
char    *b_rightS();
int  b_strchr();
int  strcspn();
char    *b_stringS();
int  strlen();
char    *strlwr();
char    *strnset();
int  b_strrchr();
char    *strrev();
char    *strset();
int  strspn();
char    *b_strtok();
char    *strupr();
void     frename();
void     fdelete();
#endif

time.h#

/*
 * time.h X68k XC Compiler v1.01 Copyright 1987 SHARP/Hudson
 */
extern int daylight;
extern long timezone;
extern char *tzname[2];
extern char tzstn[];
extern char tzdtn[];

/*  template of tm "gmtime" */
struct tm {
    int tm_sec;
    int tm_min;
    int tm_hour;
    int tm_mday;
    int tm_mon;
    int tm_year;
    int tm_wday;
    int tm_yday;
    int tm_isdst;
};

#ifndef NULL
#define NULL 0
#endif

#ifdef  FORWORD

long    time(long *);
char    *asctime(struct tm *);
char    *ctime(long *);
struct tm   *gmtime(long *);
struct tm   *localtime(long *);
void    tzset(void);

#else

long    time();
char    *asctime();
char    *ctime();
struct tm   *gmtime();
struct tm   *localtime();
void    tzset();

#endif

signal.h#

/*
 * signal.h X68k XC Compiler v1.01 Copyright 1987 SHARP/Hudson
 */
#define NSIG 1
#define SIG_DFL (int (*)())0
#define SIG_IGN (int (*)())1

#define SIGINT  0xfff1      /*rts   dc.w    $fff1   */

#ifdef  FORWORD

void    (*signal(int, void (*)()))(int);

#else

void    (*signal())();

#endif

stat.h#

/*
 * stat.h X68k XC Compiler v1.01 Copyright 1987 SHARP/Hudson
 */
struct stat {
    short   st_dev;     /*デバイス番号(ディスク・ドライブ番号)*/
    int st_ino;     /*inode番号*/
    short   st_mode;    /*ファイルタイプとファイル属性*/
    short   st_nlink;   /*(1)リンクカウント*/
    short   st_uid;     /*(0)ユーザID*/
    short   st_gid;     /*(0)グループID*/
    short   st_rdev;    /*rawデバイス番号*/
    int st_size;    /*ファイル・サイズ*/
    int st_atime;   /*アクセス時刻*/
    int st_mtime;   /*モディファィ時刻*/
    int st_ctime;   /*クリエイト時刻*/
};

/*st_mode*/

#define S_IREAD     0   /*読み込み可能*/
#define S_IWRITE    1   /*書き込み可能*/
#define S_IFDIR     16  /*ディレクトリー*/
#define S_IFREG     32  /*通常*/
#define S_IEXEC     64  /*実行*/
#define S_IFCHR     128 /*デバイス*/

#ifdef  FORWORD
int fstat(int, struct stat *);
int stat(char *, struct stat *);

#else
int fstat();
int stat();
#endif

fcntl.h#

/*
 * fcntl.h X68k XC Compiler v1.01 Copyright 1987 SHARP/Hudson
 */
/*************************************************************************/
/** ストリーム入出力,低水準I/O関数用マクロ 2         **/
/*************************************************************************/
#define O_RDONLY    0x00000001  /*読み込み専用                */
#define O_WRONLY    0x00000002  /*書き込み専用                */
#define O_APPEND    0x00000004  /*アペンド・モード          */
#define O_RDWR      0x00000100  /*読み書き可能                */
#define O_BINARY    0x00000400  /*バイナリ・モード          */
#define O_TEXT      0x00000800  /*テキスト・モード          */
#define O_TRUNC     0x00001000  /*ファイル・サイズを0に切り詰める  */
#define O_EXCL      0x00002000  /*ファイルが存在している時エラーとする    */
#define O_CREAT     0x00004000  /*ファイルが存在しない時は作成        */
#define O_EOF       0x00008000  /*EOFに達したことを表す      */

#define STDIN   0
#define STDOUT  1
#define STDERR  2
#define STDAUX  3
#define STDPRN  4

class.h#

/*
 * class.h X68k XC Compiler v1.01 Copyright 1987 SHARP/Hudson
 */
#define INT int
#define UINT    unsigned int
#define WORD    short
#define UWORD   unsigned short
#define BYTE    char
#define UBYTE   unsigned char
#define VOID    void
#define DEFAULT int
#define BOOLEAN int
#define LONG    long
#define ULONG   unsigned long

/*
 */

#define REG register
#define LOCAL   auto
#define MLOCAL  static
#define EXTERN  extern

mouse.h#

/*
 * mouse.h X68k XC Compiler v1.01 Copyright 1987 SHARP/Hudson
 */
#ifdef  FORWORD
int mouse(int);
int msarea(int,int,int,int);
int msbtn(int,int,int);
int mspos(int *,int*);
int msstat(int *,int *,int *,int *);
int setmspos(int,int);
#else
int mouse();
int msarea();
int msbtn();
int mspos();
int msstat();
int setmspos();
#endif

stick.h#

/*
 * stick.h X68k XC Compiler v1.01 Copyright 1987 SHARP/Hudson
 */
#ifdef  FORWORD
int stick(int);
int strig(int);
#else
int stick();
int strig();
#endif

sprite.h#

/*
 * sprite.h X68k XC Compiler v1.01 Copyright 1987 SHARP/Hudson
 */
#ifdef  FORWORD
void    sp_clr(int,int);
int sp_color(char,int,int);
void    sp_def(char,char *,int);
void    sp_disp(char);
void    sp_move(char,int,int,int);
void    sp_off(int,int);
void    sp_on(int,int);
void    sp_pat(char,char *,int);
int sp_init(void);
int sp_set(char,int,int,int,int);
int sp_stat(char,char);
int bg_scroll(char,int,int);
int bg_set(char,int,int);
int bg_stat(char,char);
int bg_fill(char,int);
int bg_put(char,char,char,int);
int bg_get(char,char,char);
#else
void    sp_clr();
int sp_color();
void    sp_def();
void    sp_disp();
void    sp_move();
void    sp_off();
void    sp_on();
void    sp_pat();
int sp_init();
int sp_set();
int sp_stat();
int bg_scroll();
int bg_set();
int bg_stat();
int bg_fill();
int bg_put();
int bg_get();
#endif

doslib.h#

/*
 * doslib.h X68k XC Compiler v1.01 Copyright 1987 SHARP/Hudson
 */
#include    <class.h>

/*
 *
 */
struct PDBADR{
    UINT    env;
    UINT    exit;
    UINT    ctrlc;
    UINT    errexit;
    UINT    comline;
    UBYTE   handle[12];
    UINT    bss;
    UINT    heep;
    UINT    stack;
    UINT    usp;
    UINT    ssp;
    UWORD   sr;
    UWORD   abort_sr;
    UINT    abort_ssp;
    UINT    trap10;
    UINT    trap11;
    UINT    trap12;
    UINT    trap13;
    UINT    trap14;
    UINT    osflg;
    UBYTE   reserve[28];
    UBYTE   exe_path[68];
    UBYTE   exe_name[24];
};

struct  INPPTR{
    UBYTE   max;
    UBYTE   length;
    UBYTE   buffer[256];
};
    
/*
 *
 */


struct  COMLINE{
    UBYTE   len;
    UBYTE   buffer[255];
};
    
/*
 *
 */

struct  NAMESTBUF{
    UBYTE   flg;
    UBYTE   drive;
    UBYTE   path[65];
    UBYTE   name1[8];
    UBYTE   ext[3];
    UBYTE   name2[10];
};
    
/*
 *
 */

struct  FREEINF{
    UWORD   free;
    UWORD   max;
    UWORD   sec;
    UWORD   byte;
};
    
/*
 *
 */

struct  NAMECKBUF{
    UBYTE   drive[2];
    UBYTE   path[65];
    UBYTE   name[19];
    UBYTE   ext[5];
};
    
/*
 *
 */

struct  DPBPTR{
    UBYTE   drive;
    UBYTE   unit;
    UWORD   byte;
    UBYTE   sec;
    UBYTE   shift;
    UWORD   fatsec;
    UBYTE   fatcount;
    UBYTE   fatlen;
    UWORD   dircount;
    UWORD   datasec;
    UWORD   maxfat;
    UWORD   dirsec;
    INT driver;
    UBYTE   id;
    UBYTE   flg;
struct  DPBPTR * next;
    UWORD   dirfat;
    UBYTE   dirbuf[64];
};


    
/*
 *
 */

struct  FILBUF{
    UBYTE   os[21];
    UBYTE   atr;
    UWORD   time;
    UWORD   date;
    UINT    filelen;
    UBYTE   name[23];
};
    
/*
 *
 */

#ifdef  FORWORD

void EXIT();
int GETCHAR();
void PUTCHAR(int);
int COMINP();
void COMOUT(int);
void PRNOUT(int);
int INPOUT(int);
int INKEY();
int GETC();
void PRINT(UBYTE *);
int GETS(struct INPPTR *);
int KEYSNS();
int KFLUSHGP();
int KFLUSHIO(int);
int KFLUSHIN();
int KFLUSHGC();
int KFLUSHGS(struct INPPTR *);
int FFLUSH();
int CHGDRV(int);
int DRVCTRL(int,int);
int CONSNS();
int PRNSNS();
int CINSNS();
int COUTSNS();
int FATCHK(UBYTE *,UWORD *);
int HENDSPMO();
int HENDSPMP(int,UBYTE *);
int HENDSPMR(int,UBYTE *);
void HENDSPMC();
int HENDSPIO();
int HENDSPIP(int,UBYTE *);
int HENDSPIR(int,UBYTE *);
int HENDSPIC(int);
int HENDSPSO();
int HENDSPSP(int,UBYTE *);
int HENDSPSR(int,UBYTE *);
void HENDSPSC();
int CURDRV();
int GETSS(struct INPPTR *);
int FGETC(int);
int FGETS(struct INPPTR *,int);
void FPUTC(int,int);
void FPUTS(UBYTE *,int);
void ALLCLOSE();
int SUPER(int);
void FNCKEYGT(int,UBYTE *); 
void FNCKEYST(int,UBYTE *);
int C_PUTC(int);
int C_PRINT(UBYTE *);
int C_COLOR(int);
int C_LOCATE(int,int);
int C_DOWN_S();
int C_UP_S();
int C_UP(int);
int C_DOWN(int);
int C_RIGHT(int);
int C_LEFT(int);
int C_CLS_ED();
int C_CLS_ST();
int C_CLS_AL();
int C_ERA_ED();
int C_ERA_ST();
int C_ERA_AL();
int C_INS(int);
int C_DEL(int);
int C_FNKMOD(int);
int C_WINDOW(int,int);
int C_WIDTH(int);
int C_CURON();
int C_CUROFF();
int K_KEYINP();
int K_KEYSNS();
int K_SFTSNS();
int K_KEYBIT(int);
void K_INSMOD(int);
int INTVCS(int, char *);
void PSPSET(struct PDBADR *);
int GETTIM2();
int SETTIM2(int);
int NAMESTS(UBYTE *,struct NAMESTBUF *);
int GETDATE();
int SETDATE(int);
int GETTIME();
int SETTIME(int);
void VERIFY(int);
int DUP0(int,int);
int VERNUM();
void KEEPPR(int,int);
int GETDPB(int,struct DPBPTR *);
int BREAKCK(int);
void DRVXCHG(int,int);
int INTVCG(int);
int DSKFRE(int,struct FREEINF *);
int NAMECK(UBYTE *,struct NAMECKBUF *);
int MKDIR(UBYTE *);
int RMDIR(UBYTE *);
int CHDIR(UBYTE *);
int CREATE(UBYTE *,int);
int OPEN(UBYTE *,int);
int CLOSE(int);
int READ(int,UBYTE *,int);
int WRITE(int,UBYTE *,int);
int DELETE(UBYTE *);
int SEEK(int,int,int);
int CHMOD(UBYTE *,int);
int IOCTRLGT(int);
int IOCTRLST(int,int);
int IOCTRLRH(int,UBYTE *,int);
int IOCTRLWH(int,UBYTE *,int);
int IOCTRLRD(int,UBYTE *,int);
int IOCTRLWD(int,UBYTE *,int);
int IOCTRLIS(int);
int IOCTRLOS(int);
int DUP(int);
int DUP2(int);
int CURDIR(int,UBYTE *);
int MALLOC(int);
int MFREE(int);
int SETBLOCK(int,int);
int LOADEXEC(UBYTE *,struct COMLINE *,UBYTE *);
int LOAD(UBYTE *,struct COMLINE *,UBYTE *);
int PATHCHK(UBYTE *,struct COMLINE *,UBYTE *);
int LOADONLY(UBYTE *,UBYTE *,UBYTE *);
int EXECONLY(int);
void EXIT2(int);
int WAIT();
int FILES(struct FILBUF *,UBYTE *,int);
int NFILES(struct FILBUF *);
int SETPDB(struct PDBADR *);
struct PDBADR * GETPDB();
int SETENV(int,UBYTE *,UBYTE *);
int GETENV(int,UBYTE *,UBYTE *);
int VERIFYG();
int MOVE(UBYTE *,UBYTE *);
int RENAME(UBYTE *,UBYTE *);
int FILEDATE(int,int);
void DISKRED(UBYTE *,int,int,int);
void DISKWRT(UBYTE *,int,int,int);

#else
void EXIT();
int GETCHAR();
void PUTCHAR();
int COMINP();
void COMOUT();
void PRNOUT();
int INPOUT();
int INKEY();
int GETC();
void PRINT();
int GETS();
int KEYSNS();
int KFLUSHGP();
int KFLUSHIO();
int KFLUSHIN();
int KFLUSHGC();
int KFLUSHGS();
int FFLUSH();
int CHGDRV();
int DRVCTRL();
int CONSNS();
int PRNSNS();
int CINSNS();
int COUTSNS();
int FATCHK();
int HENDSPMO();
int HENDSPMP();
int HENDSPMR();
void HENDSPMC();
int HENDSPIO();
int HENDSPIP();
int HENDSPIR();
int HENDSPIC();
int HENDSPSO();
int HENDSPSP();
int HENDSPSR();
void HENDSPSC();
int CURDRV();
int GETSS();
int FGETC();
int FGETS();
void FPUTC();
void FPUTS();
void ALLCLOSE();
int SUPER();
int FNCKEYGT(); 
void FNCKEYST();
int C_PUTC();
int C_PRINT();
int C_COLOR();
int C_LOCATE();
int C_DOWN_S();
int C_UP_S();
int C_UP();
int C_DOWN();
int C_RIGHT();
int C_LEFT();
int C_CLS_ED();
int C_CLS_ST();
int C_CLS_AL();
int C_ERA_ED();
int C_ERA_ST();
int C_ERA_AL();
int C_INS();
int C_DEL();
int C_FNKMOD();
int C_WINDOW();
int C_WIDTH();
int C_CURON();
int C_CUROFF();
int K_KEYINP();
int K_KEYSNS();
int K_SFTSNS();
int K_KEYBIT();
void K_INSMOD();
int INTVCS();
void PSPSET();
int GETTIM2();
int SETTIM2();
int NAMESTS();
int GETDATE();
int SETDATE();
int GETTIME();
int SETTIME();
void VERIFY();
int DUP0();
int VERNUM();
void KEEPPR();
int GETDPB();
int BREAKCK();
void DRVXCHG();
int INTVCG();
int DSKFRE();
int NAMECK();
int MKDIR();
int RMDIR();
int CHDIR();
int CREATE();
int OPEN();
int CLOSE();
int READ();
int WRITE();
int DELETE();
int SEEK();
int CHMOD();
int IOCTRLGT();
int IOCTRLST();
int IOCTRLRH();
int IOCTRLWH();
int IOCTRLRD();
int IOCTRLWD();
int IOCTRLIS();
int IOCTRLOS();
int DUP();
int DUP2();
int CURDIR();
int MALLOC();
int MFREE();
int SETBLOCK();
int LOADEXEC();
int LOAD();
int PATHCHK();
int LOADONLY();
int EXECONLY();
void EXIT2();
int WAIT();
int FILES();
int NFILES();
int SETPDB();
struct PDBADR * GETPDB();
int SETENV();
int GETENV();
int VERIFYG();
int MOVE();
int RENAME();
int FILEDATE();
void DISKRED();
void DISKWRT();

#endif

music.h#

/*
 * music.h X68k XC Compiler v1.01 Copyright 1987 SHARP/Hudson
 */
#ifdef  FORWORD
int m_alloc(char,int);
int m_assign(char,char);
int m_cont(int,int,int,int,int,int,int,int);
int m_free(char);
void    m_init(void);
int m_play(int,int,int,int,int,int,int,int);
int m_stat(char);
int m_stop(int,int,int,int,int,int,int,int);
int m_tempo(char);
int m_trk(char,char *);
int m_vget(char,char *);
int m_vset(char,char *);

#else
int m_alloc();
int m_assign();
int m_cont();
int m_free();
void    m_init();
int m_play();
int m_stat();
int m_stop();
int m_tempo();
int m_trk();
int m_vget();
int m_vset();
#endif

audio.h#

/*
 * audio.h X68k XC Compiler v1.01 Copyright 1987 SHARP/Hudson
 */
#ifdef  FORWORD
void    a_play(void *,int,int,int,int);
void    a_rec(void *,int,int,int);
int a_stat();
void    a_end();
void    a_stop();
void    a_cont();
#else
void    a_play();
void    a_rec();
int a_stat();
void    a_end();
void    a_stop();
void    a_cont();
#endif

basic0.h#

/*
 * basic0.h X68k XC Compiler v1.01 Copyright 1987 SHARP/Hudson
 */
static  char    STRCRLF[3]={13,10,0};
static  char    STRTAB[2]={9,0};

#ifdef  FORWORD
char    *b_dateS(char *);
char    *b_timeS(char *);
char    *b_dayS(char *);
int  b_free(void);
char    *b_inkeyS(char *);
char    *b_inkey0(char *);
char    *b_striS(char *,int);
char    *b_strfS(char *,double);
int  csrlin(void);
int  pos(void);
char    *b_spaceS(char *,int);
char    *using(char *,char *,);
void     beep(void);
void     cls(void);
void     b_exit(int);
void     width(int);
void     color(int);
void     console(int,int,int);
void     b_input(char *,int,);
void     b_linput(char *,int);
void     locate(int,int);
void     b_sprint(char *);
void     b_iprint(int);
void     b_fprint(double);
void     b_tprint(int);
void     b_slprint(char *);
void     b_ilprint(int);
void     b_flprint(double);
void     b_tlprint(int);
void     key(int,char *);
void     screen(int,int,int,int);
double   pi();
double   b_pi(double);
int  abs(int);
double   fabs(double);
void     b_setdate(char *);
void     b_settime(char *);
void     b_csw(int);
void     b_tpalet(int,int,int,int);
void     b_strncpy(int,char *,char *);
int  b_strcmp(char *,int,char *);
char    *b_stradd(char *,char *,char *,);
void     b_init();
int b_int(double);
#else
char    *b_dateS();
char    *b_timeS();
char    *b_dayS();
int  b_free();
char    *b_inkeyS();
char    *b_inkey0();
char    *b_striS();
char    *b_strfS();
int  csrlin();
int  pos();
char    *b_spaceS();
char    *using();
void     beep();
void     cls();
void     b_exit();
void     width();
void     color();
void     console();
void     b_input();
void     b_linput();
void     locate();
void     b_sprint();
void     b_iprint();
void     b_fprint();
void     b_tprint();
void     b_slprint();
void     b_ilprint();
void     b_flprint();
void     b_tlprint();
void     key();
void     screen();
double   pi();
double   b_pi();
int  abs();
double   fabs();
void     b_setdate();
void     b_settime();
void     b_csw();
void     b_tpalet();
void     b_strncpy();
int  b_strcmp();
char    *b_stradd();
void     b_init();
int b_int();
#endif

graph.h#

/*
 * graph.h X68k XC Compiler v1.01 Copyright 1987 SHARP/Hudson
 */
#ifdef  FORWORD
void    apage(char);
void    box(int,int,int,int,int,int);
void    circle(int,int,int,int,int,int,int);
void    contrast(int);
void    fill(int,int,int,int,int);
void    get(int,int,int,int,void *,int);
void    home(int,int,int);
int hsv(int,int,int);
void    line(int,int,int,int,int,int);
void    paint(int,int,int);
void    palet(int,int);
int point(int,int);
void    pset(int,int,int);
void    put(int,int,int,int,void *,int);
int rgb(int,int,int);
void    symbol(int,int,char *,char,char,int,int,int);
void    vpage(char);
void    window(int,int,int,int);
void    wipe(void);
#else
void    apage();
void    box();
void    circle();
void    contrast();
void    fill();
void    get();
void    home();
int hsv();
void    line();
void    paint();
void    palet();
int point();
void    pset();
void    put();
int rgb();
void    symbol();
void    vpage();
void    window();
void    wipe();
#endif

string.h#

/*
 * string.h X68k XC Compiler v1.01 Copyright 1987 SHARP/Hudson
 */
#define stricmp strcmpi

#ifndef NULL
#define NULL
#endif

#ifdef  FORWORD

void    *memcpy(char *, char *, int);
char    *strcpy(char *, char *);
char    *strncpy(char *, char *, int);
char    *strcat(char *, char *);
char    *strncat(char *, char *, int);
int memcmp(void *, void *, int);
int strcmpi(char *, char *);
int strcmp(char *, char *);
int strncmp(char *, char *, int);
void    *memchr(void *, int, int);
char    *strchr(char *, char);
int strcspn(char *, char *);
char    *strpbrk(char *, char *);
char    *strrchr(char *, char);
int strspn(char *, char *);
char    *strtok(char *, char *);
void    *memset(void *, int, int);
int strlen(char *);
char    *strnset(char *, char, unsigned int);
char    *strlwr(char *);
char    *strupr(char *);
char    *strset(char *, char);
char    *strrev(char *);
char    *strdup(char *);
void    strins(char *, char *);
void    strsfn(char *, char *, char *, char *, char *);
void    strmfe(char *, char *, char *);
void    strmfn(char *, char *, char *, char *, char *);
void    strmfp(char *, char *, char *);
int stcgfe(char *, char *);
int strbpl(char **, int, char *);
int stcgfn(char *, char *);
long    strtol(char *, char **, int);
void    strsrt(char **, int);

char    *memccpy(char *, char *, char, int);
void    movedata(char *,char *,int);
void    setmem(char *, unsigned, int);
void    movmem(char *, char *, int);
void    swmem(char *, char *, unsigned);
void    repmem(char *, char *, unsigned, int);

#else

void    *memcpy();
char    *strcpy();
char    *strncpy();
char    *strcat();
char    *strncat();
int memcmp();
int strcmpi();
int strcmp();
int strncmp();
void    *memchr();
char    *strchr();
int strcspn();
char    *strpbrk();
char    *strrchr();
int strspn();
char    *strtok();
void    *memset();
int strlen();
char    *strnset();
char    *strlwr();
char    *strupr();
char    *strset();
char    *strrev();
char    *strdup();
void    strins();
void    strsfn();
void    strmfe();
void    strmfn();
void    strmfp();
int stcgfe();
int strbpl();
int stcgfn();
long    strtol();
void    strsrt();

char    *memccpy();
void    movedata();
void    setmem();
void    movmem();
void    swmem();
void    repmem();
#endif

image.h#

/*
 * image.h X68k XC Compiler v1.01 Copyright 1987 SHARP/Hudson
 */
#ifdef  FORWORD
void    img_set(char,int,int,int,int);
void    img_still(char);
void    img_pos(char);
void    img_color(char);
void    v_cut(char);
void    crt(char);
void    img_ht(int,int,int,int,char,char);
int img_save(char *,int,int);
int img_load(char *,int,int,int);
void    img_scrn(char,char,char);
void    img_put(int,int,int,int,void *,int);
int keysns(void);
void    img_home(int,int,char,char,char);

#else
void    img_set();
void    img_still();
void    img_pos();
void    img_color();
void    v_cut();
void    crt();
void    img_ht();
int img_save();
int img_load();
void    img_scrn();
void    img_put();
int keysns();
void    img_home();
#endif

stdlib.h#

/*
 * stdlib.h X68k XC Compiler v1.01 Copyright 1987 SHARP/Hudson
 */
extern  int     errno;
extern  int     _doserrno;
extern  unsigned char   **environ;
extern  unsigned int    _PSP;
extern  int     _fmode;
extern  char        *sys_errlist[];
extern  int     sys_nerr;

#ifdef  FORWORD

int atoi(char *);
long    atol(char *);
int rand(void);
void    srand(unsigned);
void    *calloc(unsigned, unsigned);
void    free(void *);
void    *malloc(unsigned);
void    *realloc(void *, unsigned);
void    abort(void);
void    exit(int);
void    _exit(int);
char    *getenv(char *);
int system(char *);
void    *bsearch(void *, void *, unsigned, unsigned, int (*)(void *, void *));
void    qsort(void *, unsigned, unsigned, int (*)(void *, void *));
int abs(int);
short   wabs(short);
long    labs(long);

char    *sbrk(int);
int rlsmem(char *, unsigned);
int rlsml(char *, long);
char    *getmem(unsigned);
char    *getml(long);
void    rbrk(void);
void    rstmem(void);
long    chkml(void);
long    sizmem(void);
int bldmem(void);
int allmem(void);

int putenv(char *);
void    swaw(int *, int *, int);
void    swab(char *, char *, int);
void    lqsort(long *, int);
void    sqsort(short *, int);
void    fqsort(float *, int);
void    dqsort(double *, int);
void    tqsort(char **, int);

char    *itoa(int, char *, int);
char    *ltoa(long, char *, int);
char    *wtoa(short, char *, int);
char    *fcvt(double, int, int *, int *);
char    *gcvt(double, int, char *);
short   atow(char *);
char    *uitoa(unsigned int);
char    *ultoa(unsigned long);
char    *uwtoa(unsigned short);
char    *ecvt(double, int, int *, int *);

#else

int atoi();
long    atol();
int rand();
void    srand();
void    *calloc();
void    free();
void    *malloc();
void    *realloc();
void    abort();
void    exit();
void    _exit();
char    *getenv();
int system();
void    *bsearch();
void    qsort();
int abs();
short   wabs();
long    labs();

char    *sbrk();
int rlsmem();
int rlsml();
char    *getmem();
char    *getml();
void    rbrk();
void    rstmem();
long    chkml();
long    sizmem();
int bldmem();
int allmem();

int putenv();
void    swaw();
void    swab();
void    lqsort();
void    sqsort();
void    fqsort();
void    dqsort();
void    tqsort();

char    *itoa();
char    *ltoa();
char    *wtoa();
char    *fcvt();
char    *gcvt();
short   atow();
char    *uitoa();
char    *ultoa();
char    *uwtoa();
char    *ecvt();

#endif

process.h#

/*
 * process.h X68k XC Compiler v1.01 Copyright 1987 SHARP/Hudson
 */
#define P_WAIT  0
#ifdef  FORWORD
int getpid(void);
int execve(char *, char **, char **);
int execvpe(char *, char **, char **);
int execl(char *, char *, );
int execlp(char *, char *, );
int execv(char *, char **);
int execvp(char *, char **);
int execle(char *, char *, );
int execlpe(char *, char *, );
int spawnl(int, char *, char *, );
int spawnlp(int, char *, char *, );
int spawnv(int, char *, char **);
int spawnvp(int, char *, char **);
int spawnle(int, char *, char *, );
int spawnve(int, char *, char **, char **);
#else
int getpid();
int execve();
int execvpe();
int execl();
int execlp();
int execv();
int execvp();
int execle();
int execlpe();
int spawnl();
int spawnlp();
int spawnv();
int spawnvp();
int spawnle();
int spawnve();
#endif

direct.h#

/*
 * direct.h X68k XC Compiler v1.01 Copyright 1987 SHARP/Hudson
 */
#ifdef  FORWORD
char    *getcwd(char *, int);
int mkdir(char *);
int rmdir(char *);
int chdir(char *);
#else
char    *getcwd();
int mkdir();
int rmdir();
int chdir();
#endif

utime.h#

/*
 * utime.h X68k XC Compiler v1.01 Copyright 1987 SHARP/Hudson
 */
struct  utimbuf {
    int actime;
    int modtime;
};

#ifdef  FORWORD
int utime(char *, struct utimbuf *);
#else
int utime();
#endif

timeb.h#

/*
 * timeb.h X68k XC Compiler v1.01 Copyright 1987 SHARP/Hudson
 */
struct  timeb   {
  int               time;
  unsigned short    millitim;
  short             timezone;
  short             dstflag;
};
#ifdef  FORWORD
void    ftime(struct timeb *);
#else
void    ftime();
#endif

jfctype.h#

/*
 * jfctype.h X68k XC Compiler v1.01 Copyright 1987 SHARP/Hudson
 */
#ifdef  FORWORD
int iskpun(int);
int iskmoji(int);
int iskana(int);
int isalnmkana(int);
int isprkana(int);
int isalkana(int);
int isgrkana(int);
int iskanji2(int);
int jislower(int);
int iskanji(int);
int jisupper(int);
int jisalpha(int);
int jisl2(int); 
int jisl1(int); 
int jisl0(int); 
int jiszen(int); 
int jisdigit(int); 
int jiskata(int); 
int jishira(int); 
int jiskigou(int); 
int jisspace(int); 
int ispnkana(int); 
int hantozen(int); 
int zentohan(int); 
#else
int iskmoji();
int iskana();
int isalnmkana();
int isprkana();
int isalkana();
int isgrkana();
int iskanji2();
int jislower();
int iskanji();
int jisupper();
int jisalpha();
int jisl2();
int jisl1();
int jisl0();
int jiszen();
int jisdigit();
int jiskata();
int jishira();
int jiskigou();
int jisspace();
int ispnkana();
int hantozen();
int zentohan();
#endif

fctype.h#

/*
 * fctype.h X68k XC Compiler v1.01 Copyright 1987 SHARP/Hudson
 */
#ifdef  FORWORD

int isalnum(int);
int isalpha(int);
int iscntrl(int);
int isdigit(int);
int isgraph(int);
int islower(int);
int isprint(int);
int ispunct(int);
int isspace(int);
int isupper(int);
int isxdigit(int);
int tolower(int);
int toupper(int);
int _tolower(int);
int _toupper(int);
int isascii(int);
int iscsymf(int);
int toascii(int);
int iscsym(int);

#else

int isalnum();
int isalpha();
int iscntrl();
int isdigit();
int isgraph();
int islower();
int isprint();
int ispunct();
int isspace();
int isupper();
int isxdigit();
int tolower();
int toupper();
int _tolower();
int _toupper();
int isascii();
int iscsymf();
int toascii();
int iscsym();

#endif
/* forword declaration list */

#ifndef NULL
#define NULL    0
#endif

io.h#

/*
 * io.h X68k XC Compiler v1.01 Copyright 1987 SHARP/Hudson
 */
#ifdef  FORWORD
int close(int);
int eof(int);
int open(char *, int, );
int dup(int);
int write(int, char *, int);
int read(int, char *, int);
int creat(char *, int);
long    tell(int);
int dup2(int, int);
long    lseek(int, long, int);
int unlink(char *);
int chmod(char *, int);
int setmode(int, int);
int access(char *, int);
int chsize(int, long);
char    *mktemp(char *);
int isatty(int);
long    filelength(int);
int rename(char *,char *);

#else

int close();
int eof();
int open();
int dup();
int write();
int read();
int creat();
long    tell();
int dup2();
long    lseek();
int unlink();
int chmod();
int setmode();
int access();
int chsize();
char    *mktemp();
int isatty();
long    filelength();
int rename();

#endif

fdef.h#

    nlist
*
* fdef.h X68k XC Compiler v1.01 Copyright 1987 SHARP/Hudson
*
*
*   引数コード   dc.w    ????
*
float_val   equ $0001       float型の値
int_val     equ $0002         int型の値
char_val    equ $0004        char型の値
str_val     equ $0008         str型の値
*
float_omt   equ $0081       省略可能なfloat型の値
int_omt     equ $0082       省略可能な  int型の値
char_omt    equ $0084       省略可能な char型の値
str_omt     equ $0088       省略可能な  str型の値
*
float_vp    equ $0011       float型の変数の値のポインタ
int_vp      equ $0012         int型の変数の値のポインタ
char_vp     equ $0014        char型の変数の値のポインタ
str_vp      equ $0018         str型の変数の値のポインタ
*
ary1        equ $003f       1次元配列(全ての型)
ary1_i      equ $0032       1次元配列(int型)
ary1_fic    equ $0037       1次元配列(float,int,char型)
ary1_c      equ $0034       1次元配列(char型)
ary2_c      equ $0054       2次元配列(char型)
*
float_ret   equ $8000       返り値はfloat型
int_ret     equ $8001       返り値はint型
str_ret     equ $8003       返り値はstr型
void_ret    equ $ffff       返り値はなし
*
*   引数オフセット sp+????
*
par1        equ 6       第1引数FAC
par2        equ 16      第2引数FAC
par3        equ 26      第3引数FAC
par4        equ 36      第4引数FAC
par5        equ 46      第5引数FAC
par6        equ 56      第6引数FAC
par7        equ 66      第7引数FAC
par8        equ 76      第8引数FAC
par9        equ 86      第9引数FAC
*
    list

C Source#

#include    <class.h>
struct  XLINEPTR{
    UWORD   vram_page;
    WORD    x;
    WORD    y;
    WORD    x1;
    UWORD   line_style;
};

struct  YLINEPTR{
    UWORD   vram_page;
    WORD    x;
    WORD    y;
    WORD    y1;
    UWORD   line_style;
};

struct  TXFILLPTR{
    UWORD   vram_page;
    WORD    x;
    WORD    y;
    WORD    x2;
    WORD    y2;
    UWORD   fill_patn;
};
main(argc)
int argc;
{
    struct  XLINEPTR xbuf;
    struct  YLINEPTR ybuf;
    struct  TXFILLPTR xybuf;
    int xx,yy;
    xbuf.vram_page = 2;
    ybuf.vram_page = 2;
    xybuf.vram_page = 2;
    xybuf.x = 0;
    xybuf.y = 0;
    xybuf.x2 = 768;
    xybuf.y2 = 512;
    xybuf.fill_patn = 0;
    TXFILL(&xybuf);
    if(argc >1){TPALET(4,0xde6c);
             return(0);}
    TPALET(4,0x6b54);
    ybuf.y = 0;
    ybuf.y1 = 512-16;
    for(xx=8;xx<768;xx +=8)
    {
        if(xx % (5*8)) ybuf.line_style = 0x8888;
        else  if(xx % (10*8)) ybuf.line_style = 0xf0f0;
        else  ybuf.line_style = 0xffff;
        ybuf.x=xx-1;
        TXYLINE(&ybuf);
    }

    xbuf.x = 7;
    xbuf.x1 = 768-8-7;
    for(yy=0;yy<=512-16;yy +=16)
    {
        if(yy % (5*16)) xbuf.line_style = 0x8888;
        else  if(yy % (10*16)) xbuf.line_style = 0xf0f0;
        else  xbuf.line_style = 0xffff;
        xbuf.y=yy;
        TXXLINE(&xbuf);
    }
}

BASIC Sprite Pattern Editor#

   10 /******************************/
   20 /* sprite pattern editor
   30 /*   Copyright (C) 1987 SHARP
  100 /******initialize********
  105 wait=2000:/*basic=200
  110 str help_file="\etc\def.hlp"
  120 dim int  pal(15,15) /*palet data*/
  130 dim char w(255)     /*pattern work*/
  140 int  l=1            /*lut no*/
  150 int  p=0            /*palet code*/
  160 int  c              /*color code*/
  170 int  b              /*blue*/
  180 int  r              /*red*/
  190 int  g              /*green*/
  200 int  i              /*i*/
  210 int  pf=0           /*palet flag*/
  220 int  px,py          /*mouse cusor position*/
  230 int  f=15+1         /*number of functions*/
  240 int  x,y            /*mouse dx,dy*/
  250 int  bl,br          /*left and right sw.*/
  310 int  X1=64,X2=192   /*position data*/
  320 int    Y11=64,Y12=320
  330 int    Y13=400,Y14=448+8
  340 int      XX1=4,YY11=4
  350 int  X3=240,X4=272
  360 int    Y31=64,Y32=96
  370 int    Y33=400,Y34=440
  380 int    Y35=120-8,Y36 : Y36=Y35+16*f-1
  390 int    Y37,Y38 : Y37=Y36+1:Y38=Y37+12
  400 int  X5=320,X6=448
  410 int    Y51=64,Y52=192
  420 int    Y53=200,Y54=448
  430 int      XX5=40,YY51=8,YY53=25,YY54=57
  440 int  X7=456,X8=464
  450 int    Y71=64,Y72=192
  460 int      XX7=57,YY71=8
  500 /*
  510 width 64
  520 color 5
  530 locate 0,14
  540 color 6
  550 print "              説明は必要ですか?[Y/N]";
  560 color 3
  570 if (tolower(asc(inkey$)) = 'y') then {
  580   print "Y"
  590   type_doc()
  600 }
  650 cls
  900 init()
 1000 /*********main***********
 1010 while(1)
 1020   mspos(px,py)
 1030   sp_move(0,px,py)
 1040   msstat(x,y,bl,br)
 1050   if (bl) then {
 1060     if (px >= X1 and px < X2) then {
 1070       if (py >= Y13 and py < Y14) then {
 1080         mk_pal((px-X1)/4,(py-Y13)/8)
 1090       }
 1100     } else if (px >= X3 and px < X4) then {
 1110       if (py >= Y33 and py < Y34) then {
 1120         set_pal()
 1130       } else if (py >= Y35 and py < Y36) then {
 1140         sel_func((py-Y35)/4)
 1150       } else if (py >= Y37 and py < Y38) then {
 1160         if (term()) then end
 1170       }
 1180     } else if (px >= X5 and px < X6) then {
 1190       if (py >= Y51 and py < Y52) then {
 1200         mk_pat((px-X5)/8,(py-Y51)/8)
 1210       } else if (py >= Y53+16 and py < Y54) then {
 1220         sel_lut((px-X5)/8,(py-Y53)/8)
 1230       }
 1240     } else if (px >= X7 and px < X8) then {
 1250       if (py >= Y71 and py < Y72) then {
 1260         sel_pal((py-Y71)/8)
 1270       }
 1280     }
 1290   } else if (br) then {
 1300     if (px >= X5 and px < X6) then {
 1310       if (py >= Y51 and py < Y52) then {
 1320         mk_pat0((px-X5)/8,(py-Y51)/8)
 1330       }
 1340     }
 1350   }
 1360 endwhile
 1370 end
10000 /************************
10010 func sel_lut(x,y)
10020   int i
10030   if (y mod 2) then return()
10040   sp_set(0,,,253)
10050   dot(XX7+2,YY71+p,0)
10060   p=x
10070   dot(XX7+2,YY71+p,65535)
10080   i=y/2
10090   if (i = l) then {
10100     c=pal(l,p)
10110     pal_disp(c)
10120   } else {
10130     c=pal(i,p)
10140     pattern(i)
10150   }
10160   sp_set(0,,,254)
10170 endfunc
11000 /************************
11010 func sel_pal(y)
11030   sp_set(0,,,253)
11040   dot(XX7+2,YY71+p,0)
11050   p=y
11060   dot(XX7+2,YY71+p,65535)
11070   c=pal(l,p)
11080   pal_disp(c)
11090   sp_set(0,,,254)
11100 endfunc
12000 /************************
12010 func mk_pal(x,y)
12020   int wc
12030   if (y mod 2) then return()
12040   switch (y / 2)
12050     case 0: b=x
12060             pal_vol(0,b)
12070             break
12080     case 1: r=x
12090             pal_vol(1,r)
12100             break
12110     case 2: g=x
12120             pal_vol(2,g)
12130             break
12140     case 3: if (x > 1) then return()
12150             i=x
12160             pal_vol(3,i)
12170             break
12180   endswitch
12190   pf=0
12200   wc=rgb(r,g,b)+i
12210   fill(X3,Y33,X4-1,Y34-1,wc)
12220   mspos(px,py)
12230   sp_move(0,px,py)
12240   fill(X1+58,Y14,X1+81,Y14+11,0)
12250   symbol(X1+58,Y14,right$("000"+hex$(wc),4),1,1,0,65535,0)
12260 endfunc
13000 /************************
13010 func mk_pat(x,y)
13030   if not(pf) then {
13040     sp_set(0,,,253)
13050     pal_disp(c)
13060     sp_set(0,,,254)
13070   }
13080   fill(X5+x*8,Y51+y*8,X5+x*8+7,Y51+y*8+7,c)
13090   fill(X3+x*2,Y31+y*2,X3+x*2+1,Y31+y*2+1,c)
13100   w(x+y*16)=p
13110 endfunc
13500 /************************
13510 func mk_pat0(x,y)
13530   if not(pf or p) then {
13540     sp_set(0,,,253)
13550     pal_disp(c)
13560     sp_set(0,,,254)
13570   }
13580   fill(X5+x*8,Y51+y*8,X5+x*8+7,Y51+y*8+7,pal(l,0))
13590   fill(X3+x*2,Y31+y*2,X3+x*2+1,Y31+y*2+1,pal(l,0))
13600   w(x+y*16)=0
13610 endfunc
14000 /************************
14010 func set_pal()
14020   int count=0,x,y,bl,br,c_old
14040   box(X3-1,Y33-1,X4,Y34,65472,65535)
14050   cls
14060   color 2
14070   print "        パレットの設定"
14075   msbtn(0,0,0)
14080   while (count < wait)
14090     mspos(px,py)
14100     sp_move(0,px,py)
14110     msstat(x,y,bl,br)
14120     if (bl) then break else count=count+1
14130   endwhile
14140   if (count < wait and px >= X3 and px < X4 and py >= Y33 and py < Y34 ) then {
14150     sp_set(0,,,253)
14160     c_old=c
14170     c=rgb(r,g,b)+i
14180     pal(l,p)=c
14190     pattern(l)
14200     dot(XX5+p,YY53+l*2,c)
14210     dot(XX7,YY71+p,c)
14220     sp_color(p,c,l)
14230     sp_set(0,,,254)
14240     if (not sure()) then {
14250       sp_set(0,,,253)
14260       c=c_old
14270       pal(l,p)=c
14280       pattern(l)
14290       dot(XX5+p,YY53+l*2,c)
14300       dot(XX7,YY71+p,c)
14310       sp_color(p,c,l)
14320       sp_set(0,,,254)
14330     }
14340   }
14350   box(X3-1,Y33-1,X4,Y34,65535,65535)
14360   cls
14370   color 3
14380 endfunc
15000 /************************
15010 func sel_func(n)
15020   int i=0,x,y,bl,br
15030   if (n mod 4 = 3) then return() else n=n/4
15040   if n > f then return()
15060   fill(X3,Y35+n*16,X4-1,Y35+n*16+11,62)
15070   set_func(n)
15080   set_msg(n)
15085   msbtn(0,0,0)
15090   while(i<wait)
15100     mspos(px,py)
15110     sp_move(0,px,py)
15120     msstat(x,y,bl,br)
15130     if (bl) then break else i=i+1
15140   endwhile
15150   if (i < wait and px >= X3 and px < X4 and py >= Y35+n*16 and py < Y35+n*16+11) then {
15160     fill(X3,Y35+n*16,X4-1,Y35+n*16+11,1984)
15170     set_func(n)
15180     if n < 8 then {
15190       rotate(n)
15200     } else {
15210       switch (n)
15220         case 8: get_pat()
15230                 break;
15240         case 9: set_pat()
15250                 break;
15260         case 10: fill_pat()
15270                 break;
15280         case 11: program()
15290                 break;
15300         case 12: sp_palet()
15310                 break;
15320         case 13: init_pal()
15330                 break;
15340         case 14: clr()
15350                 break;
15360         case 15: help()
15370                 break;
15380       endswitch
15390     }
15400   }
15410   cls
15420   color 3
15430   fill(X3,Y35+n*16,X4-1,Y35+n*16+11,0)
15440   set_func(n)
15450 endfunc
20000 /*+++++++++++++++++++++++
20010 func rotate(n)
20020   int i,j,d(255)
20030   sp_set(0,,,253)
20040   switch (n)
20050     case 0: for i=0 to 15
20060               d(i)=w(i*16+15)
20070             next
20080             for i=0 to 254
20090               w(255-i)=w(254-i)
20100               mspos(px,py):sp_move(0,px,py)
20110             next
20120             for i=0 to 15
20130               w(i*16)=d(i)
20140             next
20150             break
20160     case 1: for i=0 to 15
20170               d(i)=w(i*16)
20180             next
20190             for i=0 to 254
20200               w(i)=w(i+1)
20210               mspos(px,py):sp_move(0,px,py)
20220             next
20230             for i=0 to 15
20240               w(i*16+15)=d(i)
20250             next
20260             break
20270     case 2: for i=0 to 15
20280               d(i)=w(i)
20290             next
20300             for i=0 to 239
20310               w(i)=w(i+16)
20320               mspos(px,py):sp_move(0,px,py)
20330             next
20340             for i=0 to 15
20350               w(i+240)=d(i)
20360             next
20370             break
20380     case 3: for i=0 to 15
20390               d(i)=w(i+240)
20400             next
20410             for i=0 to 239
20420               w(255-i)=w(239-i)
20430               mspos(px,py):sp_move(0,px,py)
20440             next
20450             for i=0 to 15
20460               w(i)=d(i)
20470             next
20480             break
20490     case 4: for i=0 to 15
20500               for j=0 to 15
20510                 d(240-i*16+j)=w(j*16+i)
20520               next
20530               mspos(px,py):sp_move(0,px,py)
20540             next
20550             for i=0 to 255
20560               w(i)=d(i)
20570               mspos(px,py):sp_move(0,px,py)
20580             next
20590             break
20600     case 5: for i=0 to 255
20610               d(i)=w(i)
20620               mspos(px,py):sp_move(0,px,py)
20630             next
20640             for i=0 to 255
20650               w(i)=d(255-i)
20660               mspos(px,py):sp_move(0,px,py)
20670             next
20680             break
20690     case 6: for i=0 to 15
20700               for j=0 to 15
20710                 d(j)=w(i+j*16)
20720               next
20730               mspos(px,py):sp_move(0,px,py)
20740               for j=0 to 15
20750                 w(i+j*16)=d(15-j)
20760               next
20770             next
20780             break
20790     case 7: for i=0 to 15
20800               for j=0 to 15
20810                 d(j)=w(i*16+j)
20820               next
20830               mspos(px,py):sp_move(0,px,py)
20840               for j=0 to 15
20850                 w(i*16+j)=d(15-j)
20860               next
20870             next
20880             break
20890   endswitch
20900   pattern(l)
20910   sp_set(0,,,254)
20920 endfunc
21000 /*+++++++++++++++++++++++
21010 func set_pat()
21020   int n,att
21030   dim char temp(255)
21040   n=get_no()
21050   sp_set(0,,,254)
21060   if (n >= 0) then {
21070     x0=n mod 8+4
21080     y0=n/8+4
21090     sp_pat(n,temp)
21100     att=bg_get(1,x0,y0)
21110     sp_def(n,w)
21120     bg_put(1,x0,y0,n+256*l)
21130     if (not sure()) then {
21140       sp_def(n,temp)
21150       bg_put(1,x0,y0,att)
21160     }
21170     restore(n)
21180   }
21190   sp_off(1)
21200 endfunc
22000 /*+++++++++++++++++++++++
22010 func get_pat()
22020   int n
22030   n=get_no()
22040   if (n >= 0) then {
22050     sp_set(0,,,253)
22060     sp_pat(n,w)
22070     i=bg_get(1,n mod 8+4,n/8+4)/256
22080     pattern(i)
22090     restore(n)
22100   }
22110   sp_set(0,,,254)
22120   sp_off(1)
22130 endfunc
23000 /*+++++++++++++++++++++++
23010 func fill_pat()
23020   int i,j,wp,x,y,bl=0,br=0
23030   cls
23040   print "        パレットの指定"
23050   msbtn(0,0,0)
23060   while not(bl)
23070     mspos(px,py)
23080     sp_move(0,px,py)
23090     msstat(x,y,bl,br)
23100   endwhile
23110   if (px >= X5 and px < X6 and py >= Y53 and py < Y54 and not(py/8 mod 2)) then {
23120     sp_set(0,,,253)
23130     wp=(px-X5)/8
23140     for i=0 to 255
23150       w(i)=wp
23160     next
23170     i=(py-Y53)/16
23180     if (i <> l) then pal_blk(i)
23190   } else if (px >= X7 and px < X8 and py >= Y71 and py < Y72) then {
23200     sp_set(0,,,253)
23210     wp=(py-Y71)/8
23220     for i=0 to 255
23230       w(i)=wp
23240     next
23250   }
23260   mspos(px,py)
23270   sp_move(0,px,py)
23280   fill(X5,Y51,X6-1,Y52-1,pal(l,wp))
23290   fill(X3,Y31,X4-1,Y32-1,pal(l,wp))
23300   sp_set(0,,,254)
23310 endfunc
24000 /*+++++++++++++++++++++++
24010 func program()
24020   int i=0
24030   mspos(px,py)
24040   sp_off(0)
24050   mouse(0)
24060   mouse(1)
24070   setmspos(px,py)
24080   mouse(2)
24090   console 22,2,1
24100   locate 0,22,1
24110   print "    1.パターン 2.パレット"
24120   print "      [1or2]?";
24130   i=instr(1,"12",inkey$)
24140   if (i = 1) then  {
24150     wr_pattern()
24160   } else if (i = 2) then {
24170     wr_palet()
24180   }
24190   console 22,2,0
24200   locate 0,22,0
24210   mspos(px,py)
24220   sp_move(0,px,py)
24230   mouse(4)
24240   mouse(1)
24250   setmspos(px,py)
24260   mouse(2)
24270   sp_on(0)
24280 endfunc
25000 /*+++++++++++++++++++++++
25010 func sp_palet()
25020   int i,n,x,y,bl=0,br
25030   n=get_no()
25040   if (n >= 0) then {
25050     sp_set(0,,,254)
25060     cls
25070     print "      パレットブロックの指定"
25080     msbtn(0,0,0)
25090     while (not bl)
25100       mspos(px,py)
25110       sp_move(0,px,py)
25120       msstat(x,y,bl,br)
25130     endwhile
25140     if (px >= X5 and px < X6 and py >= Y53+16 and py < Y54) then {
25150       i=(py-Y53)
25160       if (i mod 16 < 11) then {
25170         bg_put(1,n mod 8+X1/16,n/8+Y11/16,i/16*256+n)
25180         msbtn(0,0,0)
25190       }
25200     }
25210     restore(n)
25220     sp_set(0,,,254)
25230     sp_off(1)
25240   }
25250 endfunc
26000 /*+++++++++++++++++++++++
26010 func init_pal()
26020   int i,j
26030   if (not sure()) then return()
26040   sp_set(0,,,253)
26050   for i=1 to 15
26060     pal(i,0)=0
26070     pal(i,1)=&H5294
26080     pal(i,2)=&H20
26090     pal(i,3)=&H3E
26100     pal(i,4)=&H400
26110     pal(i,5)=&H7C0
26120     pal(i,6)=&H420
26130     pal(i,7)=&H7FE
26140     pal(i,8)=&H8000
26150     pal(i,9)=&HF800
26160     pal(i,10)=&H8020
26170     pal(i,11)=&HF83E
26180     pal(i,12)=&H8400
26190     pal(i,13)=&HFFC0
26200     pal(i,14)=&HAD6A
26210     pal(i,15)=&HFFFE
26220     for j=0 to 15
26230       sp_color(j,pal(i,j),i)
26240       dot(XX5+j,YY53+i*2,pal(i,j))
26250     next
26260   next
26270   for i=0 to 15
26280     dot(XX7,YY71+i,pal(l,i))
26290   next
26300   pattern(l)
26310   sp_set(0,,,254)
26320 endfunc
27000 /*++++++++++++++++++++++
27010 func clr()
27030   if (sure()) then sp_clr(0,127)
27040 endfunc
28000 /*++++++++++++++++++++++
28010 func int term()
28020   int i=0
28030   fill(X3,Y37,X4-1,Y38-1,62)
28040   set_func(16)
28050   set_msg(16)
28055   msbtn(0,0,0)
28060   while(i < wait)
28070     mspos(px,py)
28080     sp_move(0,px,py)
28090     msstat(x,y,bl,br)
28100     if (bl) then break else i=i+1
28110   endwhile
28120   if (i < wait and px >= X3 and px < X4 and py >= Y37 and py < Y38) then {
28130     fill(X3,Y37,X4-1,Y38-1,1984)
28140     set_func(16)
28150     console 0,31,1
28160     width 64
28170     mouse(0)
28180     return(-1)
28190   } else {
28200     fill(X3,Y37,X4-1,Y38-1,0)
28210     set_func(16)
28220     cls
28230     return(0)
28240   }
28250 endfunc
30000 /*----------------------
30010 func pattern(ll)
30020   int i,j,brg,x5,x3,y51,y52,y31,y32
30030   if (ll <> l) then {
30040     fill(X5-16,Y53+l*16,X5-9,Y53+l*16+7,0)
30050     l=ll:fill(X5-16,Y53+l*16,X5-9,Y53+l*16+7,65535)
30060   for i=0 to 15
30070     dot(XX7,YY71+i,pal(l,i))
30080   next
30090   }
30100   for i=0 to 15:y51=Y51+i*8:y52=y51+7:y31=Y31+i*2:y32=y31+1
30110   for j=0 to 15:brg=pal(l,w(i*16+j)):x5=X5+j*8:x3=X3+j*2:fill(x5,y51,x5+7,y52,brg):fill(x3,y31,x3+1,y32,brg):mspos(px,py):sp_move(0,px,py):next:next
30120   c=pal(l,p)
30130   pal_disp(c)
30140 endfunc
31000 /*----------------------
31010 func dot(x,y,c)
31020   fill(x*8,y*8,x*8+7,y*8+7,c)
31030   mspos(px,py)
31040   sp_move(0,px,py)
31050 endfunc
32000 /*----------------------
32010 func pal_blk(ll)
32020   int i
32030   fill(X5-16,Y53+l*16,X5-9,Y53+l*16+7,0)
32040   l=ll
32050   fill(X5-16,Y53+l*16,X5-9,Y53+l*16+7,65535)
32060   for i=0 to 15
32070     dot(XX7,YY71+i,pal(l,i))
32080   next
32090   c=pal(l,p)
32100   pal_disp(c)
32110 endfunc
33000 /*----------------------
33010 func pal_disp(c)
33030   fill(X3,Y33,X4-1,Y34-1,c)
33040   b=(c and &H3E) shr 1
33050   pal_vol(0,b)
33060   r=(c and &H7C0) shr 6
33070   pal_vol(1,r)
33080   g=(c and &HF800) shr 11
33090   pal_vol(2,g)
33100   i=c and 1
33110   pal_vol(3,i)
33120   pf=-1
33130   fill(X1+58,Y14,X1+81,Y14+11,0)
33140   symbol(X1+58,Y14,right$("000"+hex$(c),4),1,1,0,65535,0)
33150 endfunc
34000 /*----------------------
34010 func pal_vol(c,v)
34020   int i,s,y,bc,c16
34030   if (c < 3) then {
34040     s=c*5+1
34050     bc=31 shl s
34060   } else {
34070     s=1
34080     bc =65535
34090   }
34100   c16=c*16
34110   fill(X1-13,Y13+c16-2,X1-2,Y13+c16+9,0)
34120   symbol(X1-13,Y13+c*16-2,right$(" "+str$(v),2),1,1,0,65535,0)
34130   symbol(X1-7,Y13+c*16-2,right$(str$(v),1),1,1,0,65535,0)
34140   y=Y13+c16
34150   for i=0 to v
34160     fill(X1+i*4,y,X1+i*4+3,y+7,i shl s)
34170     mspos(px,py)
34180     sp_move(0,px,py)
34190   next
34200   fill(X1+v*4,y,X1+v*4+3,y+7,bc)
34210   if (c = 3) then {
34220       if (v = 0) then fill(X1+4,y,X1+7,y+7,0)
34230   } else if (v < 31) then {
34240       fill(X1+i*4,y,X2-1,y+7,0)
34250   }
34260 endfunc
35000 /*-----------------------
35010 func get_no()
35020   int i,n,n16,x,y,bl=0,br,m,m8,flg=0
35030   int x0,x1,x2,x3,x4 : x0=X1-10:x1=X1-3:x2=X1-34+16:x4=X1-10
35040   str m$
35050   dim int c(2)={63520,65472,34784}
35060   dim int y1(1) : y1(0)=Y11-18:y1(1)=Y12+2
35070   dim str num(7)={"0","1","2","3","4","5","6","7" }
35080   cls
35090   print "        パターンの指定"
35100   msbtn(0,0,0)
35110   while not(bl)
35120     mspos(px,py)
35130     if (px >= X1 and px < X2 and py >= Y11 and py < Y12) then {
35140       tx=(px-X1)/16
35150       ty=(py-Y11)/16
35160       px=tx*16+X1
35170       py=ty*16+Y11
35180       if (flg) then {
35190         sp_move(0,px,py)
35200         i=(tx+ty*8)
35210         if (n/8 = i/8) then {
35220           if (n <> i) then {
35230             fill(x0,y0,x1,y0+15,0)
35240             symbol(x3,y1(m8),m$,1,1,1,c(m8),0)
35250             x3=px+4
35260             n=i
35270             m=n mod 16
35280             m8=m/8
35290             m$=hex$(m)
35300             symbol(x4,y0,m$,1,1,1,c(2),0)
35310             symbol(x3,y1(m8),m$,1,1,1,c(2),0)
35320           }
35330         } else {
35340           fill(x0,y0,x1,y0+15,0)
35350           symbol(x2,y0,num(n16)+"x",1,1,1,c(m/8),0)
35360           symbol(x3,y1(m8),m$,1,1,1,c(m8),0)
35370           x3=px+4
35380           y0=py
35390           n=i
35400           n16=n/16
35410           m=n mod 16
35420           m8=m/8
35430           m$=hex$(m)
35440           fill(x0,y0,x1,y0+15,0)
35450           symbol(x2,y0,num(n16)+m$,1,1,1,c(2),0)
35460           symbol(x3,y1(m8),m$,1,1,1,c(2),0)
35470         }
35480       } else {
35490         sp_set(0,px+16,py+16,252)
35500         x3=px+4
35510         y0=py
35520         n=(tx+ty*8)
35530         n16=n/16
35540         m=n mod 16
35550         m8=m/8
35560         m$=hex$(m)
35570         fill(x0,y0,x1,y0+15,0)
35580         symbol(x2,y0,num(n16)+m$,1,1,1,c(2),0)
35590         symbol(x3,y1(m8),m$,1,1,1,c(2),0)
35600         flg=-1
35610       }
35620     } else if (flg) then {
35630       sp_set(0,px+16,py+16,254)
35640       fill(x0,y0,x1,y0+15,0)
35650       symbol(x2,y0,num(n16)+"x",1,1,1,c(m8),0)
35660       symbol(x3,y1(m8),m$,1,1,1,c(m8),0)
35670       flg=0
35680     } else {
35690       sp_move(0,px,py)
35700       }
35710     msstat(x,y,bl,br)
35720   endwhile
35730   if (flg) then {
35740     sp_set(1,px+16,py+16,252,3)
35750     return( n )
35760   }
35770   return( -1 )
35780 endfunc
36000 /*-----------------------
36010 func restore(n)
36020   int x0,y0,m8
36030   str m$
36040   dim int c(1)={63520,65472}
36050   dim int y1(1) : y1(0)=Y11-18:y1(1)=Y12+2
36060   x0=sp_stat(1,0)-12
36070   y0=sp_stat(1,1)-16
36080   m$=hex$(n mod 16)
36090   m8=(n mod 16)/8
36100   fill(X1-10,y0,X1-3,y0+15,0)
36110   symbol(X1-18,y0,itoa(n/16)+"x",1,1,1,c(m8),0)
36120   symbol(x0,y1(m8),m$,1,1,1,c(m8),0)
36130   sp_set(0,,,254)
36140   sp_off(1)
36150 endfunc
37000 /*-----------------------
37010 func wr_pattern()
37020   int i,j,k,lno,n,no,no0,no1
37030   str file,a[80]
37040   dim char d(255)
37050   error off
37060   cls
37070   print "      ファイル名"
37080   input "  ";file
37090   if (file = "") then return()
37100   cls
37110   input "    先頭パターン番号 =";no0
37120   input "    最終パターン番号 =";no1
37130   if (no1 = 0) then no1=no0
37140   print file
37150   print "no.";itoa(no0);
37160   if (no0 <> no1) then print "��;itoa(no1);
37170   locate 10,23,1
37180   print " OK?[YorN]";
37190   if (tolower(asc(inkey$)) <> 'y') then return()
37200   print "Y";
37210   locate 0,22,0
37220   no=no1-no0
37230   if (no0 < 0 or no0 > no1 or no1 > 127) then {
37240     ferr(2)
37250     return()
37260   }
37270   fp=fopen(file,"c")
37280   if (fp = -1) then {
37290     ferr(0)
37300     return()
37310   }
37320   a="   10 sprite_pattern():end"+chr$(13)+chr$(10)
37330   if (fwrites(a,fp) = -1) then {
37340     ferr(1)
37350     return()
37360   }
37370   a="60000 func sprite_pattern()"+chr$(13)+chr$(10)
37380   if (fwrites(a,fp) = -1) then {
37390     ferr(1)
37400     return()
37410   }
37420   a="60010   dim char c(255)"+chr$(13)+chr$(10)
37430   if (fwrites(a,fp) = -1) then {
37440     ferr(1)
37450     return()
37460   }
37470   for i=0 to no
37480     sp_pat(no0+i,d)
37490     lno=60020+i*20
37500     a=itoa(lno)+"   c={"+chr$(13)+chr$(10)
37510     if (fwrites(a,fp) = -1) then {
37520       ferr(1)
37530       return()
37540     }
37550     for j=0 to 15
37560       lno=lno+1
37570       a=itoa(lno)+"     "
37580       for k=0 to 15
37590         n=d(j*16+k)
37600         a=a+right$(itoa(n),2)+","
37610       next
37620       if (j <> 15) then {
37630         a=a+chr$(13)+chr$(10)
37640         if (fwrites(a,fp) = -1) then {
37650           ferr(1)
37660           return()
37670         }
37680       } else {
37690         a=left$(a,strlen(a)-1)+chr$(13)+chr$(10)
37700         if (fwrites(a,fp) = -1) then {
37710           ferr(1)
37720           return()
37730         }
37740       }
37750     next
37760     a=itoa(lno+1)+"   }"+chr$(13)+chr$(10)
37770     if (fwrites(a,fp) = -1) then {
37780       ferr(1)
37790       return()
37800     }
37810     a=itoa(lno+2)+"   sp_def("+itoa(no0+i)+",c)"+chr$(13)+chr$(10)
37820     if (fwrites(a,fp) = -1) then {
37830       ferr(1)
37840       return()
37850     }
37860   next
37870   a=itoa(lno+4)+" endfunc"+chr$(13)+chr$(10)+chr$(26)
37880   if (fwrites(a,fp) = -1) then {
37890     ferr(1)
37900     return()
37910   }
37920   fclose(fp)
37930   cls
37940   error on
37950 endfunc
38000 /*-----------------------
38010 func wr_palet()
38020   int i,j,lno
38030   str file,a[80],i$
38040   error off
38050   cls
38060   print "  ファイル名"
38070   input "  ";file
38080   if (file = "") then return()
38090   print file
38100   print "    OK?[YorN]";
38110   if (tolower(asc(inkey$)) <> 'y') then return()
38120   print "Y";
38130   fp=fopen(file,"c")
38140   if (fp = -1) then {
38150     ferr(0)
38160     return()
38170   }
38180   a="   10 sprite_pallet():end"+chr$(13)+chr$(10)
38190   if (fwrites(a,fp) = -1) then {
38200     ferr(1)
38210     return()
38220   }
38230   a="60000 func sprite_pallet()"+chr$(13)+chr$(10)
38240   if (fwrites(a,fp) = -1) then {
38250     ferr(1)
38260     return()
38270   }
38280   lno=60010
38290   for i=1 to 15
38300     i$=itoa(i)
38310     for j=0 to 15
38320       a=itoa(lno)+"   sp_color("+itoa(j)+","+itoa(pal(i,j))+","+i$+")"+chr$(13)+chr$(10)
38330       if (fwrites(a,fp) = -1) then {
38340         ferr(1)
38350         return()
38360       }
38370       lno=lno+10
38380     next
38390   next
38400   a=itoa(lno)+" endfunc"+chr$(13)+chr$(10)+chr$(26)
38410   if (fwrites(a,fp) = -1) then {
38420     ferr(1)
38430     return()
38440   }
38450   fclose(fp)
38460   cls
38470   sp_on(0)
38480   error on
38490 endfunc
39000 /*----------------------
39010 func ferr(mode)
39020   int i=0,x,y,bl,br
39030   dim str msg(2)[34]
39040   msg(0)="ファイルのオープンに"+chr$(13)+chr$(10)+"失敗しました",
39050   msg(1)="ファイルの書き込みに"+chr$(13)+chr$(10)+"失敗しました",
39070   msg(2)="パターン番号が無効です"
39080   /*
39090   cls
39100   locate 0,22,0
39110   color 9
39120   print msg(mode);
39130   color 3
39140   msbtn(1,0,2000)
39150 endfunc
40000 /*----------------------
40010 func set_msg(n)
40020   int i
40030   cls
40040   color 2
40050   switch (n)
40060     case 0: print "        1ドット右へシフト"
40070             break
40080     case 1: print "        1ドット左へシフト"
40090             break
40100     case 2: print "        1ドット上へシフト"
40110             break
40120     case 3: print "        1ドット下へシフト"
40130             break
40140     case 4: print "        90度回転"
40150             break
40160     case 5: print "        180度回転"
40170             break
40180     case 6: print "        上下反転"
40190             break
40200     case 7: print "        左右反転"
40210             break
40220     case 8: print "        パターン取り込み"
40230             break
40240     case 9: print "        パターン定義"
40250             break
40260     case 10: print "        ぬりつぶし"
40270              break
40280     case 11: print "パターン又はパレットのセーブ"
40290              break
40300     case 12: print "      パレットブロックの変更"
40310              break
40320     case 13: print "        パレットの初期化"
40330              break
40340     case 14: print "        全パターンのクリア"
40350              break
40360     case 15: print "        ヘルプファイルの表示"
40370              break
40380     case 16: print "        プログラムの終了"
40390              break
40400   endswitch
40410   color 3
40420 endfunc
41000 /*----------------------
41010 func sure()
41020   int i,x,y,bl=0,br,XS,XE,YS,YE : XS=X1:XE=X1+30:YS=22*16:YE=23*16
41030   msbtn(0,0,0)
41040   cls
41050   box(XS-1,YS-1,XE,YE,65535,65535)
41060   symbol(XS+7,YS,"OK",1,1,1,65535,0)
41070   while (not bl)
41080     mspos(px,py)
41090     sp_move(0,px,py)
41100     msstat(x,y,bl,br)
41110   endwhile
41120   fill(XS-1,YS-1,XE,YE,0)
41130   if (px >= XS and px < XE and py >= YS and py < YE) then return(-1)
41140   return(0)
41150 endfunc
42000 /*----------------------
42010 func help()
42030   mspos(px,py)
42040   sp_off(0)
42050   bg_set(0,,0)
42060   vpage(0)
42070   console 0,31,0
42080   cls
42090   type_doc()
42100   cls
42110   vpage(1)
42120   console 22,2,0
42130   vpage(1)
42140   mouse(1)
42150   setmspos(px,py)
42160   mouse(2)
42170   sp_on(0)
42180   bg_set(0,,1)
42190 endfunc
50000 /***********************
50010 func init()
50020   int i
50030   screen 1,3,1,1
50040   console 22,2,0
50050   locate 0,22,0
50060   symbol(130,4,"Sprite pattern editor",1,1,2,65472,0)
50070   sp_off()
50080   bg_fill(1,255)
50090   sp_clr(255)
50100   bg_set(0,1,1)
50110   bg_scroll(0,0,0)
50120   sp_disp(1)
50130   set_mscursor()
50140   pat_disp()
50150   lut_disp()
50160   c=pal(l,p)
50170   box(X5-1,Y51-1,X6,Y52,65535,65535)
50180   fill(X5,Y51,X6-1,Y52-1,c)
50190   box(X3-1,Y31-1,X4,Y32,65535,65535)
50200   fill(X3,Y31,X4-1,Y32-1,c)
50210   box(X1-1,Y13-1,X2,Y13+8,&H3E,65535)
50220   box(X1-1,Y13+15,X2,Y13+24,&H7C0,65535)
50230   box(X1-1,Y13+31,X2,Y13+40,&HF800,65535)
50240   box(X1-1,Y13+47,X1+8,Y14,&HFFFF,65535)
50250   box(X3-1,Y33-1,X4,Y34,65535,65535)
50260   pal_disp(c)
50270   symbol(X1+46,Y14,"&h",1,1,0,65535,0)
50280   for i=0 to f
50290     set_func(i)
50300   next
50310   mouse(4)
50320   msarea(0,0,511,511)
50330   mouse(1)
50340   setmspos(X5,Y51)
50350   mouse(2)
50360   sp_set(0,X5+16,Y51+16,254,3)
50370 endfunc
51000 /*-----------------------
51010 func pat_disp()
51020   int i
51030   dim int c(1)={63520,65472}
51040   box(X1-1,Y11-1,X2,Y12,65535,65535)
51050   for i=0 to 7
51060     symbol(X1+i*16+4,Y11-18,hex$(i),1,1,1,c(0),0)
51070   next
51080   for i=0 to 7
51090     symbol(X1+i*16+4,Y12+2,hex$(i+8),1,1,1,c(1),0)
51100   next
51110   for i=0 to 7
51120     symbol(X1-18,Y11+i*32,hex$(i)+"x",1,1,1,c(0),0)
51130     symbol(X1-18,Y11+i*32+16,hex$(i)+"x",1,1,1,c(1),0)
51140   next
51150   for i=0 to 15
51160     for j=0 to 7
51170       bg_put(1,XX1+j,YY11+i,256+i*8+j)
51180     next
51190   next
51200 endfunc
52000 /*----------------------
52010 func lut_disp()
52020   int i,j
52030   for i=1 to 15
52040     box(X5-1,Y53+i*16-1,X6,Y53+i*16+8,65535,65535)
52050     for j=0 to 15
52060       pal(i,j)=sp_color(j,,i)
52070       fill(X5+j*8,Y53+i*16,X5+j*8+7,Y53+i*16+7,pal(i,j))
52080     next
52090   next
52100   box(X7-1,Y71-1,X8,Y72,65535,65535)
52110   for i=0 to 15
52120     dot(XX7,YY71+i,pal(l,i))
52130   next
52140   dot(XX5-2,YY53+l*2,65535)
52150   dot(XX7+2,YY71+p,65535)
52160 endfunc
53000 /*-----------------------
53010 func set_func(n)
53020   int x : x=(X4+X3)/2
53030   box(X3-1,Y35+n*16-1,X4,Y35+n*16+12,65535,65535)
53040   switch (n)
53050     case 0: symbol(x-3,Y35+n*16,chr$(28),1,1,0,65472,0)
53060             break;
53070     case 1: symbol(x-3,Y35+n*16,chr$(29),1,1,0,65472,0)
53080             break;
53090     case 2: symbol(x-3,Y35+n*16,chr$(30),1,1,0,65472,0)
53100             break;
53110     case 3: symbol(x-3,Y35+n*16,chr$(31),1,1,0,65472,0)
53120             break;
53130     case 4: symbol(x-6,Y35+n*16,"90",1,1,0,65472,0)
53140             break;
53150     case 5: symbol(x-9,Y35+n*16,"180",1,1,0,65472,0)
53160             break;
53170     case 6: symbol(x-6,Y35+n*16,chr$(31)+chr$(30),1,1,0,65472,0)
53180             break;
53190     case 7: symbol(x-6,Y35+n*16,chr$(29)+chr$(28),1,1,0,65472,0)
53200             break;
53210     case 8: symbol(x-9,Y35+n*16,"get",1,1,0,65472,0)
53220             break;
53230     case 9: symbol(x-9,Y35+n*16,"put",1,1,0,65472,0)
53240             break;
53250     case 10: symbol(x-12,Y35+n*16,"fill",1,1,0,65472,0)
53260             break;
53270     case 11: symbol(x-12,Y35+n*16,"save",1,1,0,65472,0)
53280             break;
53290     case 12: symbol(x-15,Y35+n*16,"palet",1,1,0,65472,0)
53300             break;
53310     case 13: symbol(x-12,Y35+n*16,"init",1,1,0,65472,0)
53320             break;
53330     case 14: symbol(x-9,Y35+n*16,"clr",1,1,0,65472,0)
53340             break;
53350     case 15: symbol(x-12,Y35+n*16,"help",1,1,0,65472,0)
53360             break;
53370     case 16: symbol(x-9,Y35+n*16,"end",1,1,0,65472,0)
53380             break;
53390   endswitch
53400 endfunc
54000 /***********************
54010 func type_doc()
54020   int fp,i,j,c
54030   str s[80]
54040   error off
54050   fp=fopen(help_file,"r")
54060   if (fp < 0) then {
54070     locate 0,22,0
54080     print "        ";chr$(34);help_file;chr$(34)
54090     color 2
54100     print "        がオープンできませんでした。"
54110     print "        何かキーを押して下さい。"
54120     color 3
54130     error on
54140     s=inkey$
54150     return()
54160   }
54170   repeat
54180     cls
54190     for i=0 to 29
54200       freads(s,fp)
54210       print s
54220     next
54230     c=asc(inkey$)
54240     if (c <> ' ') then break
54250   until feof(fp)
54260   fclose(fp)
54270   error on
54280 endfunc
60000 /***********************
60010 func set_mscursor()
60020   dim char c(255)
60030   c={
60031     4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
60032     4,8,8,8,8,8,8,8,8,8,8,8,8,8,8,4,
60033     4,8,0,0,0,0,0,0,0,0,0,0,0,0,8,4,
60034     4,8,0,0,0,0,0,0,0,0,0,0,0,0,8,4,
60035     4,8,0,0,0,0,0,0,0,0,0,0,0,0,8,4,
60036     4,8,0,0,0,0,0,0,0,0,0,0,0,0,8,4,
60037     4,8,0,0,0,0,0,0,0,0,0,0,0,0,8,4,
60038     4,8,0,0,0,0,0,0,0,0,0,0,0,0,8,4,
60039     4,8,0,0,0,0,0,0,0,0,0,0,0,0,8,4,
60040     4,8,0,0,0,0,0,0,0,0,0,0,0,0,8,4,
60041     4,8,0,0,0,0,0,0,0,0,0,0,0,0,8,4,
60042     4,8,0,0,0,0,0,0,0,0,0,0,0,0,8,4,
60043     4,8,0,0,0,0,0,0,0,0,0,0,0,0,8,4,
60044     4,8,0,0,0,0,0,0,0,0,0,0,0,0,8,4,
60045     4,8,8,8,8,8,8,8,8,8,8,8,8,8,8,4,
60046     4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4
60047   }
60048   sp_def(252,c)
60050   c={
60051     0,0,0,0,4,4,4,4,0,0,0,0,0,0,0,0,
60052     0,0,0,4,8,8,8,8,4,0,0,0,0,0,0,0,
60053     0,0,0,4,8,8,8,8,4,0,0,0,0,0,0,0,
60054     0,0,4,8,4,4,4,4,8,4,0,0,0,0,0,0,
60055     0,4,8,4,4,8,4,4,4,8,4,0,0,0,0,0,
60056     0,4,8,4,4,8,4,4,4,8,4,0,0,0,0,0,
60057     4,8,4,4,4,8,4,4,4,4,8,4,0,0,0,0,
60058     4,8,4,4,4,8,4,4,4,4,8,4,0,0,0,0,
60059     4,8,4,4,4,8,4,4,4,4,8,4,0,0,0,0,
60060     4,8,4,4,4,8,8,8,8,4,8,4,0,0,0,0,
60061     4,8,4,4,4,4,4,4,4,4,8,4,0,0,0,0,
60062     0,4,8,4,4,4,4,4,4,8,4,0,0,0,0,0,
60063     0,4,8,4,4,4,4,4,4,8,4,0,0,0,0,0,
60064     0,0,4,8,4,4,4,4,8,4,0,0,0,0,0,0,
60065     0,0,0,4,8,8,8,8,4,0,0,0,0,0,0,0,
60066     0,0,0,0,4,4,4,4,0,0,0,0,0,0,0,0
60067   }
60068   sp_def(253,c)
60070   c={
60071     4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
60072     4,8,4,0,0,0,0,0,0,0,0,0,0,0,0,0,
60073     4,8,8,4,0,0,0,0,0,0,0,0,0,0,0,0,
60074     4,8,8,8,4,0,0,0,0,0,0,0,0,0,0,0,
60075     4,8,8,8,8,4,0,0,0,0,0,0,0,0,0,0,
60076     4,8,8,8,8,8,4,0,0,0,0,0,0,0,0,0,
60077     4,8,8,8,8,8,8,4,0,0,0,0,0,0,0,0,
60078     4,8,8,8,8,8,8,8,4,0,0,0,0,0,0,0,
60079     4,8,8,8,8,4,4,4,4,4,0,0,0,0,0,0,
60080     4,8,8,4,8,8,4,0,0,0,0,0,0,0,0,0,
60081     4,8,4,0,8,8,4,0,0,0,0,0,0,0,0,0,
60082     4,4,0,0,4,8,8,4,0,0,0,0,0,0,0,0,
60083     4,0,0,0,4,8,8,4,0,0,0,0,0,0,0,0,
60084     0,0,0,0,0,4,8,8,4,0,0,0,0,0,0,0,
60085     0,0,0,0,0,4,8,8,4,0,0,0,0,0,0,0,
60086     0,0,0,0,0,0,4,4,4,0,0,0,0,0,0,0
60087   }
60088   sp_def(254,c)
60090 endfunc