/* master.lib 98,AT雑用ライブラリ * Version 0.23 * Copyright (C) 1992-95 A.Koizuka, Kazumi * * AT互換機でしか使わない場合は、#includeする前に * #define MASTER98 0 (またはコンパイルオプションで -DMASTER98=0) * を定義してください。一部関数が98用の名前のまま、AT互換機で利用できます。 * */ #ifndef __MASTER_H #define __MASTER_H #define __MASTER_VERSION (0*256+23) #ifdef MASTER_DOSV # define MASTERV 1 # define MASTER98 0 #else # ifndef MASTERV # define MASTERV 1 /* AT互換機用機能を使用する */ # endif # ifndef MASTER98 # define MASTER98 1 /* 98用機能を使用する */ # endif # if MASTERV # if !MASTER98 # define MASTER_DOSV 1 /* DOS/V専用なら定義する */ # endif # endif #endif #if !defined(MASTER_NEAR) && !defined(MASTER_FAR) && !defined(MASTER_COMPACT) && !defined(MASTER_MEDIUM) # if defined(__SMALL__) || defined(__TINY__) || defined(M_I86SM) || defined(M_I86TM) # define MASTER_NEAR # elif defined(__COMPACT__) || defined(M_I86CM) # define MASTER_COMPACT # elif defined(__MEDIUM__) || defined(M_I86MM) # define MASTER_MEDIUM # elif defined(__LARGE__) || defined(__HUGE__) || defined(M_I86LM) || defined(M_I86HM) # define MASTER_FAR # endif #endif #ifdef MASTER_NEAR # define MASTER_RET near pascal # define MASTER_CRET near cdecl # define MASTER_PTR near #endif #ifdef MASTER_FAR # define MASTER_RET far pascal # define MASTER_CRET far cdecl # define MASTER_PTR far #endif #ifdef MASTER_COMPACT # define MASTER_RET near pascal # define MASTER_CRET near cdecl # define MASTER_PTR far #endif #ifdef MASTER_MEDIUM # define MASTER_RET far pascal # define MASTER_CRET far cdecl # define MASTER_PTR near #endif #ifndef MASTER_RET # error master.lib:モデルが特定できません。 master.h を直接includeせずに、masters.h などのモデル別ヘッダをインクルードしてください! #endif #ifndef EXIT_SUCCESS /* stdlib.h は EXIT_SUCCESS で2重includeを防止できる */ # include #endif #ifndef FP_SEG /* dos.h は FP_SEG で2重includeを防止できる */ # include #endif #ifndef __TURBOC__ # include /* うーむ。2重includeを防止してない */ #endif #include /* これもだ */ /* stdio.hは getchar で二重includeは防止 */ /* できるよ。防止すると、コンパイルが少し */ /* 速くなるよね。(エラー回避の効能もある) */ #ifndef OUTB # ifdef __TURBOC__ # define OUTB outportb /* CONIO.H or DOS.H */ # define OUTW outport # define INPB inportb # define INPW inport # else # define OUTB outp /* CONIO.H */ # define OUTW outpw # define INPB inp # define INPW inpw # endif #endif #ifndef STI # ifdef __TURBOC__ # define STI() enable() /* DOS.H */ # define CLI() disable() # else # define STI() _enable() /* DOS.H */ # define CLI() _disable() # endif #endif #define CRLF "\r\n" #ifdef __cplusplus extern "C" { #endif extern const char near Master_Version_NEAR[] ; extern const char near Master_Version_FAR[] ; extern const char near Master_Version_COMPACT[] ; extern const char near Master_Version_MEDIUM[] ; extern const char near Master_Version[] ; #ifdef MASTER_NEAR # define Master_Version_String Master_Version_NEAR #endif #ifdef MASTER_FAR # define Master_Version_String Master_Version_FAR #endif #ifdef MASTER_COMPACT # define Master_Version_String Master_Version_COMPACT #endif #ifdef MASTER_MEDIUM # define Master_Version_String Master_Version_MEDIUM #endif extern unsigned char table_hreverse[256] ; typedef struct Point Point ; struct Point { #ifdef __cplusplus Point(int ix,int iy) : x(ix),y(iy) {} Point() {} void moveto(int nx,int ny) { x = nx, y = ny ; } #endif int x, y ; } ; /* 機種判定 ----------------------------------------------------------------*/ typedef struct VIDEO_STATE VIDEO_STATE ; struct VIDEO_STATE { unsigned char mode ; /* 現在のビデオ・モード */ unsigned char rows ; /* 現在の1画面の行数 */ unsigned char cols ; /* 現在の1行あたりの桁数 */ unsigned char total_rows ; /* 現在の画面全体の行数 */ } ; extern const unsigned Machine_State ; unsigned MASTER_RET get_machine(void); unsigned MASTER_RET get_machine_at(void); unsigned MASTER_RET get_machine_98(void); int MASTER_RET set_video_mode( unsigned video ); unsigned MASTER_RET get_video_mode(void); void MASTER_RET backup_video_state( VIDEO_STATE MASTER_PTR * vmode ); int MASTER_RET restore_video_state( const VIDEO_STATE MASTER_PTR * vmode ); #define PC_AT 0x0010 #define PC9801 0x0020 #define FMR 0x0080 /* 0.23追加 */ #define DOSBOX 0x8000 /* 0.22k追加 */ #define DESKTOP 0x0001 #define EPSON 0x0002 #define PC_MATE 0x0004 #define HIRESO 0x0008 #define LANG_US 0x0001 #define PC_TYPE_MASK 0x000e #define PS55 0x0000 #define DOSV 0x0002 #define PC_AX 0x0004 #define J3100 0x0006 #define DR_DOS 0x0008 #define MSDOSV 0x000a #define VTEXT 0x0240 /* 0.23追加 */ #define DOSVEXTENTION 0x0040 /* 0.22d追加 */ #define SUPERDRIVERS 0x0200 /* 0.23追加 */ #define ANSISYS 0x0100 /* 0.22d追加 */ unsigned MASTER_RET get_cpu(void); #define CPU_CYRIX 0x4000 #define CPU_NEC 0x8000 #define CPU_V86MODE 0x0100 #define CPU_TYPEMASK 0x00ff #define CPU_TYPE086 0x0000 #define CPU_TYPE186 0x0001 #define CPU_TYPE286 0x0002 #define CPU_TYPE386 0x0003 #define CPU_TYPE486 0x0004 #define CPU_TYPEPENTIUM 0x0005 /* Cx486関係 ---------------------------------------------------------------*/ struct Cx486CacheInfo { unsigned ccr0 ; unsigned ccr1 ; unsigned long ncr[4] ; } ; extern void MASTER_RET cx486_read( struct Cx486CacheInfo MASTER_PTR * rec ); extern void MASTER_RET cx486_write( const struct Cx486CacheInfo MASTER_PTR * rec ); extern void MASTER_RET cx486_cacheoff(void); /* テキスト画面関係 --------------------------------------------------------*/ extern void far * const TextVramAdr ; extern unsigned TextVramSeg ; extern unsigned TextVramWidth ; extern unsigned TextShown ; extern unsigned TextVramSize ; extern unsigned VTextState ; #define TX_GETSIZE(x1,y1,x2,y2) (((x2)-(x1)+1)*((y2)-(y1)+1)*TX_GET_UNIT) void MASTER_RET text_roll_area( int x1, int y1, int x2, int y2 ); #if MASTER98 void MASTER_RET text_start(void); void MASTER_RET text_end(void); void MASTER_RET text_boxfilla( unsigned x1, unsigned y1, unsigned x2, unsigned y2, unsigned atrb ); void MASTER_RET text_boxfillca( unsigned x1, unsigned y1, unsigned x2, unsigned y2, unsigned fillchar, unsigned atrb ); void MASTER_RET text_clear(void); void MASTER_RET text_fillca( unsigned ch, unsigned atrb ); void MASTER_RET text_locate( unsigned x, unsigned y ); void MASTER_RET text_putc( unsigned x, unsigned y, unsigned ch ); void MASTER_RET text_putca( unsigned x, unsigned y, unsigned ch, unsigned atrb ); void MASTER_RET text_putns( unsigned x, unsigned y, const char MASTER_PTR *str, unsigned wid ); void MASTER_RET text_putnp( unsigned x, unsigned y, const char MASTER_PTR *pstr, unsigned wid ); void MASTER_RET text_putnsa( unsigned x, unsigned y, const char MASTER_PTR *str, unsigned wid, unsigned atrb ); void MASTER_RET text_putnpa( unsigned x, unsigned y, const char MASTER_PTR *pstr, unsigned wid, unsigned atrb ); void MASTER_RET text_puts( unsigned x, unsigned y, const char MASTER_PTR *str ); void MASTER_RET text_putp( unsigned x, unsigned y, const char MASTER_PTR *pstr ); void MASTER_RET text_putsa( unsigned x, unsigned y, const char MASTER_PTR *str, unsigned atrb ); void MASTER_RET text_putpa( unsigned x, unsigned y, const char MASTER_PTR *pstr, unsigned atrb ); void MASTER_RET text_vputs(unsigned x, unsigned y, const char MASTER_PTR *str); void MASTER_RET text_vputsa(unsigned x, unsigned y, const char MASTER_PTR *str, unsigned atrb); void MASTER_RET text_setcursor( int normal ); #define text_width() 80 int MASTER_RET text_height(void); int MASTER_RET text_systemline_shown(void); void MASTER_RET text_25line(void); void MASTER_RET text_20line(void); void MASTER_RET text_cursor_hide(void); void MASTER_RET text_cursor_show(void); void MASTER_RET _text_cursor_on(void); void MASTER_RET _text_cursor_off(void); void MASTER_RET text_systemline_hide(void); void MASTER_RET text_systemline_show(void); long MASTER_RET text_getcurpos(void); void MASTER_RET text_get( int x1,int y1, int x2,int y2, void far *buf ); void MASTER_RET text_put( int x1,int y1, int x2,int y2, const void far *buf ); int MASTER_RET text_backup( int use_main ); int MASTER_RET text_restore(void); void MASTER_RET text_show(void); void MASTER_RET text_hide(void); void MASTER_RET text_smooth_start( unsigned y1, unsigned y2 ); void MASTER_RET text_smooth_end(void); void MASTER_RET text_roll_up_c( unsigned fillchar ); void MASTER_RET text_roll_down_c( unsigned fillchar ); void MASTER_RET text_roll_up_ca( unsigned fillchar, unsigned filatr ); void MASTER_RET text_roll_down_ca( unsigned fillchar, unsigned filatr ); void MASTER_RET text_roll_left_c( unsigned fillchar ); void MASTER_RET text_roll_right_c( unsigned fillchar ); void MASTER_RET text_roll_left_ca( unsigned fillchar, unsigned filatr ); void MASTER_RET text_roll_right_ca( unsigned fillchar, unsigned filatr ); void MASTER_RET text_pseta( int x, int y, unsigned atr ); void MASTER_RET text_pset( int x, int y ); void MASTER_RET text_preset( int x, int y ); void MASTER_RET text_worddota( int x, int y, unsigned image, unsigned dotlen, unsigned atr ); void MASTER_RET text_showpage( int page ); void MASTER_RET text_frame( int x1, int y1, int x2,int y2, unsigned wattr, unsigned iattr, int round ); #define text_shown() TextShown #define text_smooth(shiftdot) OUTB(0x76,shiftdot) #define text_vertical() OUTB(0x68,0) #define text_cemigraph() OUTB(0x68,1) #define text_cursor_shown() (*(char far *)0x071bL) #define TX_PAGE0 0xa000 /* ノーマルモードのテキストセグメント */ #define TX_PAGE1 0xa100 #define text_accesspage(p) (TextVramSeg = (p) ? TX_PAGE1 : TX_PAGE0 ) #endif #define TX_BLACK 0x01 /* テキスト属性 */ #define TX_BLUE 0x21 #define TX_RED 0x41 #define TX_MAGENTA 0x61 #define TX_GREEN 0x81 #define TX_CYAN 0xa1 #define TX_YELLOW 0xc1 #define TX_WHITE 0xe1 #define TX_BLINK 2 #define TX_REVERSE 4 #define TX_UNDERLINE 8 #define TX_GET_UNIT 4 /* text_get()で退避する、1文字あたり必要な大きさ */ /* 前バージョンとの互換性のため */ #define text_cursor_on() text_cursor_show() #define text_cursor_off() text_cursor_hide() #define text_systemline_on() text_systemline_show() #define text_systemline_off() text_systemline_hide() #if MASTERV extern char vtext_colortable[16] ; extern unsigned vtextx_Seg, vtextx_Size ; void MASTER_RET vtext_start(void); #define vtext_end() /* ignore */ void MASTER_RET vtextx_start(void); void MASTER_RET vtextx_end(void); int MASTER_RET vtext_height(void); int MASTER_RET vtext_systemline_shown(void); int MASTER_RET vtext_width(void); int MASTER_RET vtext_font_height(void); void MASTER_RET vtext_systemline_hide(void); void MASTER_RET vtext_systemline_show(void); long MASTER_RET vtext_getcurpos(void); void MASTER_RET vtext_locate( unsigned x, unsigned y ); void MASTER_RET vtext_putns( unsigned x, unsigned y, const char MASTER_PTR *str, unsigned wid ); void MASTER_RET vtext_putnsa( unsigned x, unsigned y, const char MASTER_PTR *str, unsigned wid, unsigned atrb ); void MASTER_RET vtext_putsa( unsigned x, unsigned y, const char MASTER_PTR *strp, unsigned atrb ); void MASTER_RET vtext_puts( unsigned x, unsigned y, const char MASTER_PTR *strp ); void MASTER_RET vtext_putc( unsigned x, unsigned y, unsigned ch ); void MASTER_RET vtext_putca( unsigned x, unsigned y, unsigned ch, unsigned atrb ); void MASTER_RET vtext_roll_up_c( unsigned fillchar ); void MASTER_RET vtext_roll_down_c( unsigned fillchar ); void MASTER_RET vtext_roll_up_ca( unsigned fillchar, unsigned filatr ); void MASTER_RET vtext_roll_down_ca( unsigned fillchar, unsigned filatr ); void MASTER_RET vtext_clear(void); void MASTER_RET vtext_frame(int x1, int y1, int x2, int y2, unsigned attrl, unsigned attri, int dummy); void MASTER_RET vtext_boxfilla(int x1, int y1, int x2, int y2, unsigned attr ); int MASTER_RET vtext_color_98( int color98 ); void MASTER_RET vtext_refresh(unsigned x, unsigned y, unsigned len); void MASTER_RET vtext_refresh_all(void); void MASTER_RET vtext_refresh_on(void); void MASTER_RET vtext_refresh_off(void); void MASTER_RET vtext_setcursor( unsigned cursor ); unsigned MASTER_RET vtext_getcursor(void); # define vtext_cursor_hide() vtext_setcursor(vtext_getcursor()|0x2000) # define vtext_cursor_show() vtext_setcursor(vtext_getcursor()&~0x2000) # define vtext_cursor_shown() (((vtext_getcursor()>>8)&0x3f) \ <= (vtext_getcursor()&7)) void MASTER_RET vtext_get( int x1,int y1, int x2,int y2, void far *buf ); void MASTER_RET vtext_put( int x1,int y1, int x2,int y2, const void far *buf ); int MASTER_RET vtext_backup( int use_main ); int MASTER_RET vtext_restore(void); # if !MASTER98 # define text_start() (get_machine(),vtext_start(),font_at_init()) # define text_end() (void)0 # define text_boxfilla(x1,y1,x2,y2,atrb) vtext_boxfilla(x1,y1,x2,y2,\ vtext_color_98(atrb)) # define text_boxfillca(x1,y1,x2,y2,fc,atrb) /* ? */ # define text_clear() vtext_clear() # define text_fillca(ch,atrb) /* ? */ # define text_locate(x,y) vtext_locate(x,y) # define text_putc(x,y,ch) vtext_putc(x,y,ch) # define text_putca(x,y,ch,atrb) vtext_putca(x,y,ch,\ vtext_color_98(atrb)) # define text_putns(x,y,str,wid) vtext_putns(x,y,str,wid) # define text_putnp(x,y,pstr,wid) /* ? */ # define text_putnsa(x,y,str,wid,atrb) vtext_putnsa(x,y,str,wid,\ vtext_color_98(atrb)) # define text_putnpa(x,y,pstr,wid,atrb) /* ? */ # define text_puts(x,y,str) vtext_puts(x,y,str) # define text_putp(x,y,pstr) /* ? */ # define text_putsa(x,y,str,atrb) vtext_putsa(x,y,str,\ vtext_color_98(atrb)) # define text_putpa(x,y,pstr,atrb) /* ? */ # define text_vputs(x,y,str) /* ? */ # define text_vputsa(x,y,str,atrb) /* ? */ # define text_setcursor(normal) vtext_setcursor(normal) # define text_width() vtext_width() # define text_height() vtext_height() # define text_systemline_shown() vtext_systemline_shown() # define text_25line() /* ? */ # define text_20line() /* ? */ # define text_cursor_hide() vtext_cursor_hide() # define text_cursor_show() vtext_cursor_show() # define _text_cursor_on() text_cursor_show() # define _text_cursor_off() text_cursor_hide() # define text_systemline_hide() vtext_systemline_hide() # define text_systemline_show() vtext_systemline_show() # define text_getcurpos() vtext_getcurpos() # define text_get(x1,y1,x2,y2,buf) vtext_get(x1,y1,x2,y2,buf) # define text_put(x1,y1,x2,y2,buf) vtext_put(x1,y1,x2,y2,buf) # define text_backup(use_main) (text_start(),vtext_backup(use_main)) # define text_restore() vtext_restore() # define text_show() (void)0 # define text_hide() (void)0 # define text_smooth_start(y1,y2) (void)0 # define text_smooth_end() (void)0 # define text_roll_up_c(fillchar) vtext_roll_up_c(fillchar) # define text_roll_down_c(fillchar) vtext_roll_down_c(fillchar) # define text_roll_up_ca(fillchar,atrb) vtext_roll_up_ca(fillchar,\ vtext_color_98(atrb)) # define text_roll_down_ca(fillchar,atrb) vtext_roll_down_ca(fillchar,\ vtext_color_98(atrb)) # define text_roll_left_c(fillchar) /* ? */ # define text_roll_right_c(fillchar) /* ? */ # define text_roll_left_ca(fillchar,atrb) /* ? */ # define text_roll_right_ca(fillchar,atrb) /* ? */ # define text_pseta(x,y,atr) (void)0 # define text_pset(x,y) (void)0 # define text_preset(x,y) (void)0 # define text_worddota(x,y,image,dotlen,atr) (void)0 # define text_showpage(page) (void)0 # define text_frame(x1,y1,x2,y2,wattr,iattr,round) vtext_frame(x1,y1,x2,y2,\ vtext_color_98(wattr),vtext_color_98(iattr),round) # define text_shown() 1 # define text_smooth(shiftdot) (void)0 # define text_vertical() (void)0 # define text_cemigraph() (void)0 # define text_cursor_shown() vtext_cursor_shown() # define TX_PAGE0 TextVramSeg # define TX_PAGE1 TextVramSeg # define text_accesspage(p) (void)0 # endif #endif /* EMS関係 -----------------------------------------------------------------*/ #if defined(_MSC_VER) # pragma pack (1) #endif struct EMS_move_source_dest { long region_length ; char source_memory_type ; unsigned source_handle ; unsigned source_initial_offset ; unsigned source_initial_seg_page ; char dest_memory_type ; unsigned dest_handle ; unsigned dest_initial_offset ; unsigned dest_initial_seg_page ; } ; #if defined(_MSC_VER) # pragma pack () #endif int MASTER_RET ems_exist(void); unsigned MASTER_RET ems_allocate( unsigned long len ); int MASTER_RET ems_reallocate( unsigned handle, unsigned long size ); int MASTER_RET ems_free( unsigned handle ); unsigned long MASTER_RET ems_size( unsigned handle ); int MASTER_RET ems_setname( unsigned handle, const char MASTER_PTR * name ); int MASTER_RET ems_movememoryregion( const struct EMS_move_source_dest MASTER_PTR * block ); void MASTER_RET ems_enablepageframe( int enable ); int MASTER_RET ems_write( unsigned handle, long offset, const void far * mem, long size ); int MASTER_RET ems_read( unsigned handle, long offset, void far * mem, long size ); unsigned long MASTER_RET ems_space(void); int MASTER_RET ems_maphandlepage( int phys_page, unsigned handle, unsigned log_page ); int MASTER_RET ems_savepagemap( unsigned handle ); int MASTER_RET ems_restorepagemap( unsigned handle ); int MASTER_RET ems_getsegment( unsigned MASTER_PTR * segments, int maxframe ); unsigned MASTER_RET ems_findname( const char MASTER_PTR * hname ); long MASTER_RET ems_dos_read( int file_handle, unsigned short ems_handle, unsigned long ems_offs, long read_bytes ); long MASTER_RET ems_dos_write( int file_handle, unsigned short ems_handle, unsigned long ems_offs, long write_bytes ); /* グラフィック画面関係 ----------------------------------------------------*/ typedef struct PiHeader PiHeader ; struct PiHeader { char far *comment; /* graph_pi_load.*()では */ /* NULLが設定されるだけ */ unsigned commentlen; unsigned char mode; unsigned char n; /* aspect */ unsigned char m; /* aspect */ unsigned char plane; /* 通常は 4 */ char machine[4]; unsigned maexlen; /* machine extend data length */ void far * maex; /* machine extend data */ unsigned xsize; unsigned ysize; unsigned char palette[48]; } ; typedef struct MagHeader MagHeader; struct MagHeader { unsigned commentseg ; unsigned commentlen ; char head; char machine; char exflag; char scrnmode; int x1; int y1; int x2; int y2; long flagAofs; long flagBofs; long flagBsize; long pixelofs; long pixelsize; unsigned xsize; unsigned ysize; unsigned char palette[48]; } ; #if MASTER98 void MASTER_RET graph_400line(void); void MASTER_RET graph_200line( int tail ); unsigned MASTER_RET graph_extmode( unsigned modmask, unsigned bhal ); #define graph_is31kHz() ((graph_extmode(0,0) & 0x0c) == 0x0c) #define graph_getextmode() graph_extmode(0,0) #define graph_setextmode(v) graph_extmode(0xffff,(v)) #define graph_31kHz() graph_extmode(0x0c,0x0c) #define graph_24kHz() graph_extmode(0x0c,0x08) #define graph_480line() graph_extmode(0x300c,0x300c) int MASTER_RET graph_is256color(void); void MASTER_RET graph_256color(void); void MASTER_RET graph_16color(void); void MASTER_RET graph_clear(void); void MASTER_RET graph_show(void); void MASTER_RET graph_hide(void); void MASTER_RET graph_start(void); void MASTER_RET graph_end(void); void MASTER_RET graph_enter(void); #define graph_leave() respal_set_palettes() void MASTER_RET graph_xlat_dot( int x, int y, const char MASTER_PTR * trans ); int MASTER_RET graph_shown(void); int MASTER_RET graph_readdot( int x, int y ); int MASTER_RET graph_backup( int pagemap ); int MASTER_RET graph_restore(void); void MASTER_RET graph_xorboxfill( int x1,int y1, int x2,int y2, int color ); int MASTER_RET graph_copy_page( int to_page ); void MASTER_RET graph_scroll( unsigned line1, unsigned adr1, unsigned adr2 ); void MASTER_RET graph_scrollup( unsigned line ); void MASTER_RET graph_byteget( int cx1,int y1, int cx2,int y2, void far *buf ); void MASTER_RET graph_byteput( int cx1,int y1, int cx2,int y2, const void far *buf ); void MASTER_RET graph_move( int x1,int y1, int x2,int y2, int nx,int ny ); void MASTER_RET graph_pack_put_8( int x, int y, const void far * linepat, int len ); void MASTER_RET graph_pack_put_down_8( int x, int y, const void far * pat, int patwidth, int width, int height ); void MASTER_RET graph_pack_get_8( int x, int y, void far * linepat, int len ); void MASTER_RET graph_unpack_put_8( int x, int y, const void far * linepat, int len ); void MASTER_RET graph_unpack_large_put_8( int x, int y, const void far * linepat, int len ); void MASTER_RET graph_unpack_get_8( int x, int y, void far * linepat, int len ); void MASTER_RET graph_ank_putc(int x, int y, int ch, int color); #define graph_ank_put(x,y,chp,color) graph_ank_putc((x),(y),*(chp),(color)) void MASTER_RET graph_ank_puts(int x, int y, int step, const char MASTER_PTR * ank, int color); void MASTER_RET graph_ank_putp(int x, int y, int step, const char MASTER_PTR * passtr, int color); void MASTER_RET graph_font_put(int x, int y, const char MASTER_PTR *str, int color); void MASTER_RET graph_font_puts(int x, int y, int step, const char MASTER_PTR * str, int color); void MASTER_RET graph_font_putp(int x, int y, int step, const char MASTER_PTR * passtr, int color); void MASTER_RET graph_kanji_large_put(int x, int y, const char MASTER_PTR *str, int color); void MASTER_RET graph_kanji_put(int x, int y, const char MASTER_PTR *str, int color); void MASTER_RET graph_kanji_puts(int x, int y, int step, const char MASTER_PTR *str, int color); void MASTER_RET graph_wank_putc(int x, int y, int c ); void MASTER_RET graph_wank_puts(int x, int y, int step, const char MASTER_PTR * str ); void MASTER_RET graph_wank_putca(int x, int y, int ch, int color); void MASTER_RET graph_wank_putsa(int x, int y, int step, const char MASTER_PTR * str, int color); void MASTER_RET graph_wfont_put(int x, int y, const char MASTER_PTR * str); void MASTER_RET graph_wfont_puts(int x, int y, int step, const char MASTER_PTR * str); void MASTER_RET graph_wkanji_put(int x, int y, const char MASTER_PTR * str); void MASTER_RET graph_wkanji_put_left(int x, int y, const char MASTER_PTR * str); void MASTER_RET graph_wkanji_put_right(int x, int y, const char MASTER_PTR * str); void MASTER_RET graph_wkanji_puts(int x, int y, int step, const char MASTER_PTR * str); void MASTER_RET graph_gaiji_putc(int x, int y, int c, int color ); void MASTER_RET graph_gaiji_puts(int x, int y, int step, const char MASTER_PTR * str, int color ); void MASTER_RET graph_bfnt_puts(int x, int y, int step, const char MASTER_PTR * str, int color); void MASTER_RET graph_bfnt_putp(int x, int y, int step, const char MASTER_PTR * passtr, int color); void MASTER_RET graph_bfnt_putc(int x, int y, int ank, int color); #endif #if MASTERV void MASTER_RET vga4_clear(void); int MASTER_RET vga4_start(int videomode, int xdots, int ydots); #define vgc_start() vga4_start(0x12,640,480) #define vgc_end() vga4_end() void MASTER_RET vga4_end(void); int MASTER_RET vga4_readdot(int x,int y); void MASTER_RET vga4_byteget( int cx1,int y1, int cx2,int y2, void far *buf ); void MASTER_RET vga4_byteput( int cx1,int y1, int cx2,int y2, const void far *buf ); void MASTER_RET vga4_pack_put_8( int x, int y, const void far * linepat, int len ); void MASTER_RET vga4_unpack_put_8( int x, int y, const void far * linepat, int len ); void MASTER_RET vga4_unpack_get_8( int x, int y, void far * linepat, int len ); void MASTER_RET vga4_pack_get_8( int x, int y, void far * linepat, int len ); void MASTER_RET vga_dc_modify( int num, int andval, int orval ); void MASTER_RET vga_startaddress( unsigned address ); void MASTER_RET vga_setline( unsigned lines ); #define vga_vzoom_on() (vga_dc_modify(0x09,0x7f,0x80),graph_VramZoom=1) #define vga_vzoom_off() (vga_dc_modify(0x09,0x7f,0x00),graph_VramZoom=0) void MASTER_RET vga4_byte_move(int x1,int y1,int x2,int y2,int tox,int toy); void MASTER_RET vga4_wfont_puts(int x, int y, int step, const char MASTER_PTR * str); void MASTER_RET vga4_bfnt_puts( int x, int y, int step, const char MASTER_PTR * anks, int color ); void MASTER_RET vga4_bfnt_putc( int x, int y, int c, int color ); void MASTER_RET at98_graph_400line(void); void MASTER_RET at98_accesspage( int page ); void MASTER_RET at98_showpage( int page ); void MASTER_RET at98_scroll( unsigned line1, unsigned adr1 ); extern int at98_APage, at98_VPage ; extern unsigned at98_Offset ; # if !MASTER98 # define graph_analog() (void)0 # define graph_digital() (void)0/* ignore? */ # define graph_plasma() (void)0 # define graph_crt() (void)0 # define graph_accesspage(p) at98_accesspage(p) # define graph_showpage(p) at98_showpage(p) # define graph_400line() at98_graph_400line() # define graph_200line(t) (vga4_start(0x8e,640,200),\ graph_VramSeg=ClipYT_seg=(0xa000+((t)&1)*400*5),at98_Offset=0,\ at98_showpage(at98_VPage),at98_accesspage(at98_APage),vtextx_start()) # define graph_is31kHz() 0 # define graph_getextmode() 0 # define graph_setextmode(v) (void)0 # define graph_31kHz() (void)0 # define graph_24kHz() (void)0 # define graph_480line() (void)0 # define graph_is256color() 0 # define graph_16color() (void)0 # define graph_clear() vga4_clear() # define graph_show() (void)0 # define graph_hide() (void)0 # define graph_start() (vga4_start(0x0e,640,400),vga_vzoom_off(),\ at98_Offset=at98_APage=at98_VPage=0,vtextx_start()) # define graph_end() (vtextx_end(),vga4_end()) # define graph_enter() graph_400line() # define graph_leave() graph_end() # define graph_xlat_dot(x,y,tr) vgc_setcolor(VGA_PSET,tr[vga4_readdot(x,y)]),vgc_pset(x,y) # define graph_shown() (get_video_mode() == 0x0e) # define graph_readdot(x,y) vga4_readdot(x,y) # define graph_backup(pm) 1 # define graph_restore() 1 # define graph_xorboxfill(x1,y1,x2,y2,c) (vgc_setcolor(VGA_XOR,c),\ vgc_boxfill(x1,y1,x2,y2),vgc_setcolor(VGA_PSET,0)) # define graph_copy_page(to) (graph_accesspage(0),\ vga4_byte_move(0,(to)?0:400,79,(to)?399:799,0,(to)?400:0),\ graph_accesspage(to),1) # define graph_scroll(line1,adr1,adr2) at98_scroll(line1,adr1) # define graph_scrollup(up) at98_scroll(graph_VramLines-(up),\ (up)*graph_VramWidth/2) # define graph_byteget(cx1,y1,cx2,y2,b) vga4_byteget(cx1,y1,cx2,y2,b) # define graph_byteput(cx1,y1,cx2,y2,b) vga4_byteput(cx1,y1,cx2,y2,b) # define graph_pack_put_8(x,y,linepat,len) vga4_pack_put_8(x,y,linepat,len) # define graph_unpack_large_put_8(x,y,linepat,len) vga4_pack_put_8(x,y,linepat,(len)*2)/* ? */ # define graph_pack_get_8(x,y,buf,len) vga4_pack_get_8(x,y,buf,len) # define graph_unpack_put_8(x,y,linepat,len) vga4_unpack_put_8(x,y,linepat,len) # define graph_unpack_get_8(x,y,buf,len) vga4_unpack_get_8(x,y,buf,len) # define graph_wfont_puts(x,y,s,str) vga4_wfont_puts(x,y,s,str) # define graph_bfnt_puts(x,y,s,str,c) (vgc_setcolor(VGA_PSET,c),vgc_bfnt_puts(x,y,s,str)) # define graph_bfnt_putc(x,y,ank,c) (vgc_setcolor(VGA_PSET,c),vgc_bfnt_putc(x,y,ank)) # define graph_gaiji_puts(x,y,s,str,c) graph_bfnt_puts(x,y,s,str,c) /* ? */ # define graph_gaiji_putc(x,y,ank,c) graph_bfnt_putc(x,y,ank,c) /* ? */ # define graph_ank_puts(x,y,s,str,c) graph_bfnt_puts(x,y,s,str,c) # define graph_ank_putc(x,y,ank,c) graph_bfnt_putc(x,y,ank,c) # define graph_font_puts(x,y,s,str,c) (vgc_setcolor(VGA_PSET,c),vgc_font_puts(x,y,s,str)) # define graph_font_put(x,y,str,c) (vgc_setcolor(VGA_PSET,c),vgc_font_put(x,y,str)) # define graph_kanji_put(x,y,str,c) (vgc_setcolor(VGA_PSET,c),vgc_kanji_putc(x,y,_rotr(*(unsigned short far *)(str),8))) # define graph_kanji_puts(x,y,s,str,c) (vgc_setcolor(VGA_PSET,c),vgc_kanji_puts(x,y,s,str)) # define graph_kanji_putc(x,y,knj,c) (vgc_setcolor(VGA_PSET,c),vgc_kanji_putc(x,y,knj)) # endif #endif int MASTER_RET mag_load_pack( const char MASTER_PTR * filename, MagHeader MASTER_PTR * header, void far * MASTER_PTR * bufptr ); int MASTER_RET graph_pi_load_pack(const char MASTER_PTR * filename, PiHeader MASTER_PTR * header, void far * MASTER_PTR * bufptr ); void far * MASTER_RET graph_pi_load_unpack(const char MASTER_PTR * filename, PiHeader MASTER_PTR * header ); int MASTER_RET graph_pi_comment_load(const char MASTER_PTR * filename, PiHeader MASTER_PTR * header ); void MASTER_RET graph_pi_free( PiHeader MASTER_PTR * header, const void far * image ); void MASTER_RET mag_free( MagHeader MASTER_PTR * header, const void far * image ); #define graph_wfont_plane(a,b,c) (wfont_Plane1 = (unsigned char)(a), wfont_Plane2 = (unsigned char)(b), wfont_Reg = (unsigned char)(c)) #if MASTER98 #define graph_analog() OUTB( 0x6a, 1 ) #define graph_digital() OUTB( 0x6a, 0 ) #define graph_plasma() OUTB( 0x6a, 0x41 ) #define graph_crt() OUTB( 0x6a, 0x40 ) #define graph_showpage(p) OUTB( 0xa4, p ) #define graph_accesspage(p) OUTB( 0xa6, p ) #define G_PAGE0 1 /* graph_backup()の退避フラグ */ #define G_PAGE1 2 #define G_ALLPAGE 3 #endif /* GB_GETSIZE: graph_byteget()の必要メモリ計算 */ #define GB_GETSIZE(x1,y1,x2,y2) (((x2)-(x1)+1L)*((y2)-(y1)+1)*4) extern unsigned graph_VramSeg ; extern unsigned graph_VramWords ; extern unsigned graph_VramLines ; extern unsigned graph_VramWidth ; extern unsigned graph_VramZoom ; extern unsigned char graph_MeshByte ; extern unsigned font_AnkSeg, font_AnkSize, font_AnkPara ; extern const volatile unsigned font_ReadChar ; extern const unsigned font_ReadEndChar ; extern unsigned char wfont_Plane1, wfont_Plane2, wfont_Reg ; extern unsigned wfont_AnkSeg ; #if !MASTER98 extern void (far *font_AnkFunc)(void); extern void (far *font_KanjiFunc)(void); #endif /* アナログパレット関係 ----------------------------------------------------*/ #if MASTER98 void MASTER_RET palette_init(void); void MASTER_RET palette_show(void); void MASTER_RET palette_show100(void); #define palette_settone(t) (PaletteTone = (t),palette_show()) #define palette_100() palette_settone(100) #define palette_black() palette_settone(0) #define palette_white() palette_settone(200) #endif #define palette_set(n,r,g,b) (Palettes[n][0]=(unsigned char)(r),Palettes[n][1]=(unsigned char)(g),Palettes[n][2]=(unsigned char)(b)) #define palette_set_all(m) memcpy(Palettes,(m),16*3) void MASTER_RET palette_set_all_16( const void MASTER_PTR * palette ); #if MASTERV void MASTER_RET dac_init(void); void MASTER_RET dac_show(void); #define dac_settone(t) (PaletteTone = (t),dac_show()) #define dac_100() dac_settone(100) #define dac_black() dac_settone(0) #define dac_white() dac_settone(200) # if !MASTER98 # define palette_init() dac_init() # define palette_show() dac_show() # define palette_settone(t) dac_settone(t) # define palette_100() dac_100() # define palette_black() dac_black() # define palette_white() dac_white() # endif #endif extern unsigned PaletteTone ; extern int PaletteNote ; extern const char PalettesInit[16][3] ; extern unsigned char Palettes[16][3] ; /* SDI関係 ---------------------------------------------------------------- */ /* SDI: (c)Nob */ #if MASTER98 int MASTER_RET sdi_exist(void); void MASTER_RET sdi_set_palettes( int page ); void MASTER_RET sdi_get_palettes( int page ); extern int SdiExists ; #endif /* 30行BIOS関係 ----------------------------------------------------------- */ /* 30行BIOS: (c)lucifer, walker, さかきけい */ /* TT: (c)「早紀」 */ typedef struct bios30param bios30param ; struct bios30param { char hs ; char vs ; char vbp ; char vfp ; char hbp ; char hfp ; } ; #define BIOS30_MODEMASK 0xd0d0 /* getmode */ #define BIOS30_NORMAL 0xd000 /* getmode & setmode */ #define BIOS30_SPECIAL 0xd010 /* getmode & setmode */ #define BIOS30_RATIONAL 0xd050 /* getmode & setmode */ #define BIOS30_VGA 0xd090 /* getmode & setmode */ #define BIOS30_LAYER BIOS30_RATIONAL /* getmode & setmode */ #define BIOS30_FKEYMASK 0x2020 /* getmode */ #define BIOS30_FKEY 0x2000 /* getmode & setmode */ #define BIOS30_CW 0x2020 /* getmode & setmode */ #define BIOS30_LINEMASK 0x0101 /* getmode */ #define BIOS30_WIDELINE 0x0101 /* getmode & setmode */ #define BIOS30_NORMALLINE 0x0100 /* getmode & setmode */ #define BIOS30_TT_OLD 0x02 #define BIOS30_30BIOS_OLD 0x80 #define BIOS30_30BIOS_020 0x81 #define BIOS30_30BIOS_120 0x89 #define BIOS30_TT_090 0x83 #define BIOS30_TT_100 0x82 #define BIOS30_TT_105 0x83 #define BIOS30_TT_150 0x06 #define BIOS30_TT 0x02 #define BIOS30_CLOCK2 0 /* getclock & setclock */ #define BIOS30_CLOCK5 1 /* getclock & setclock */ #if MASTER98 int MASTER_RET bios30_tt_exist(void); #define bios30_exist() (bios30_tt_exist() >= BIOS30_30BIOS_OLD) unsigned MASTER_RET bios30_getmode(void); void MASTER_RET bios30_setmode( unsigned mode ); unsigned MASTER_RET bios30_getversion(void); int MASTER_RET bios30_push(void); int MASTER_RET bios30_pop(void); unsigned MASTER_RET bios30_getline(void); void MASTER_RET bios30_setline( int lines ); unsigned MASTER_RET bios30_getlimit(void); int MASTER_RET bios30_getparam( int line, struct bios30param MASTER_PTR * param ); void MASTER_RET bios30_lock(void); void MASTER_RET bios30_unlock(void); int MASTER_RET bios30_getclock(void); int MASTER_RET bios30_setclock( int clock ); unsigned MASTER_RET bios30_getvsync(void); #endif #if MASTERV # if !MASTER98 /* AT互換機には 30bios/TT なんてないよーん */ # define bios30_tt_exist() 0 # define bios30_exist() 0 # define bios30_getmode 0 # define bios30_setmode(m) (void)0 # define bios30_getversion() 0 # define bios30_push() 0 # define bios30_pop() 0 # define bios30_getline() 0 # define bios30_setline(l) (void)0 # define bios30_getlimit() (vtext_height()*0x0101) # define bios30_getparam(l,p) 0 # define bios30_lock() 0 # define bios30_unlock() 0 # define bios30_getclock() 0 # define bios30_setclock(c) (void)0 # define bios30_getvsync() 0 # endif #endif /* RSL(常駐シンボリックリンク)関係 ---------------------------------------- */ /* RSL: (c)恋塚 */ #define RSL_NOCONVERT 1 #define RSL_CONVERT 0 int MASTER_RET rsl_exist(void); int MASTER_RET rsl_readlink( char MASTER_PTR * buf, const char MASTER_PTR * path ); int MASTER_RET rsl_linkmode( unsigned mode ); /* 常駐データ関係 --------------------------------------------------------- */ unsigned MASTER_RET resdata_exist( const char MASTER_PTR * id, unsigned idlen, unsigned parasize ); unsigned MASTER_RET resdata_create( const char MASTER_PTR * id, unsigned idlen, unsigned parasize ); #define resdata_free(seg) dos_free(seg) /* 常駐パレット関係 ------------------------------------------------------- */ #if MASTER98 int MASTER_RET respal_exist(void); int MASTER_RET respal_create(void); void MASTER_RET respal_get_palettes(void); void MASTER_RET respal_set_palettes(void); void MASTER_RET respal_free(void); extern unsigned ResPalSeg ; #endif #if MASTERV # if !MASTER98 /* AT互換機では、常駐パレットは作れず、読めないことにする */ #define respal_exist() 0 #define respal_create() 0 #define respal_get_palettes() (void)0 #define respal_set_palettes() (void)0 #define respal_free() (void)0 # endif #endif /* ファイル関係 ----------------------------------------------------------- */ int MASTER_RET file_ropen( const char MASTER_PTR * filename ); int MASTER_RET file_read( void far * buf, unsigned wsize ); unsigned long MASTER_RET file_lread( void far * buf, unsigned long wsize ); int MASTER_RET file_getc(void); int MASTER_RET file_getw(void); void MASTER_RET file_skip_until( int data ); unsigned MASTER_RET file_gets( void far * buf, unsigned bsize, int endchar ); long MASTER_RET file_size(void); unsigned long MASTER_RET file_time(void); int MASTER_RET file_lsettime( unsigned long filetime ); int MASTER_RET file_settime( unsigned filedate, unsigned filetime ); int MASTER_RET file_create( const char MASTER_PTR * filename ); int MASTER_RET file_append( const char MASTER_PTR * filename ); int MASTER_RET file_write( const void far * buf, unsigned wsize ); int MASTER_RET file_lwrite( const void far * buf, unsigned long wsize ); void MASTER_RET file_putc( int chr ); void MASTER_RET file_putw( int i ); void MASTER_RET file_seek( long pos, int dir ); unsigned long MASTER_RET file_tell(void); void MASTER_RET file_flush(void); void MASTER_RET file_close(void); int MASTER_RET file_exist( const char MASTER_PTR * filename ); int MASTER_RET file_delete( const char MASTER_PTR * filename ); char MASTER_PTR * MASTER_RET file_basename( char MASTER_PTR * pathname ); void MASTER_RET file_splitpath( const char MASTER_PTR *path, char MASTER_PTR *drv, char MASTER_PTR *dir, char MASTER_PTR *name, char MASTER_PTR *ext ); void MASTER_RET file_splitpath_slash( char MASTER_PTR *path, char MASTER_PTR *drv, char MASTER_PTR *dir, char MASTER_PTR *name, char MASTER_PTR *ext ); #define file_assign_buffer(buf,siz) (file_Buffer = buf, file_BufferSize = siz) #define file_eof() file_Eof #define file_error() file_ErrorStat extern void far * file_Buffer ; extern unsigned file_BufferSize ; extern unsigned long file_BufferPos ; extern unsigned file_BufPtr ; extern unsigned file_InReadBuf ; extern int file_Eof ; extern int file_ErrorStat ; extern int file_Handle ; extern int file_sharingmode ; /* MS-DOS一般 ------------------------------------------------------------ */ void MASTER_RET dos29fake_start(void); void MASTER_RET dos29fake_end(void); #if __SC__ int MASTER_RET Dos_getdrive(void); int MASTER_RET Dos_setdrive( int drive ); #define dos_getdrive() Dos_getdrive() #define dos_setdrive(d) Dos_setdrive(d) #else int MASTER_RET dos_getdrive(void); int MASTER_RET dos_setdrive( int drive ); #endif int MASTER_RET dos_chdir( const char MASTER_PTR * path ); int MASTER_RET dos_mkdir( const char MASTER_PTR * path ); int MASTER_RET dos_rmdir( const char MASTER_PTR * path ); int MASTER_RET dos_makedir( const char MASTER_PTR * path ); int MASTER_RET dos_getcwd( int drive, char MASTER_PTR * buf ); long MASTER_RET dos_getdiskfree( int drive ); void MASTER_RET dos_cputs( const char MASTER_PTR * string ); void MASTER_RET dos_cputs2( const char MASTER_PTR * string ); void MASTER_RET dos_putch( int chr ); int MASTER_RET dos_getch(void); int MASTER_RET dos_getkey(void); int MASTER_RET dos_getkey2(void); void MASTER_RET dos_puts( const char MASTER_PTR * str ); void MASTER_RET dos_putp( const char MASTER_PTR * passtr ); void MASTER_RET dos_puts2( const char MASTER_PTR * string ); void MASTER_RET dos_putc( int c ); void MASTER_RET dos_keyclear(void); unsigned MASTER_RET dos_allocate( unsigned para ); #if __SC__ void MASTER_RET Dos_free( unsigned seg ); #define dos_free(seg) Dos_free(seg) #else void MASTER_RET dos_free( unsigned seg ); #endif unsigned MASTER_RET dos_maxfree(void); int MASTER_RET dos_ropen( const char MASTER_PTR * filename ); int MASTER_RET dos_create( const char MASTER_PTR * filename, int attrib ); #if __SC__ int MASTER_RET Dos_close( int fh ); #define dos_close(fh) Dos_close(fh) #else int MASTER_RET dos_close( int fh ); #endif int MASTER_RET dos_read( int fh, void far * buffer, unsigned len ); int MASTER_RET dos_write( int fh, const void far * buffer, unsigned len ); long MASTER_RET dos_seek( int fh, long offs, int mode ); long MASTER_RET dos_filesize( int fh ); void MASTER_RET dos_absread( int drive, void far *buf, unsigned pow, long sector ); void MASTER_RET dos_abswrite( int drive, const void far *buf, unsigned pow, long sector ); void MASTER_RET dos_ignore_break(void); void MASTER_RET dos_accept_break(void); int MASTER_RET dos_setbreak( int breaksw ); void MASTER_RET dos_get_argv0( char MASTER_PTR * argv0 ); void (interrupt far * MASTER_RET dos_setvect( int vect, void (interrupt far *intfunc)()))(); const char far * MASTER_RET dos_getenv( unsigned envseg, const char MASTER_PTR * envname ); void MASTER_RET dos_setdta( void far * dta ); int MASTER_RET dos_findfirst( const char far * path, int attribute ); int MASTER_RET dos_findnext(void); struct find_many_t { unsigned long time ; unsigned long size ; char name[13] ; char attribute ; } ; unsigned MASTER_RET dos_findmany( const char far * path, int attribute, struct find_many_t far * buffer, unsigned max_dir ); int MASTER_RET dos_move( const char far * source, const char far * dest ); long MASTER_RET dos_axdx( int axval, const char MASTER_PTR * strval ); int MASTER_RET dos_copy( int src_fd, int dest_fd, unsigned long copy_len ); #define COPY_ALL 0xffffffffL int MASTER_RET dos_gets(char MASTER_PTR *buffer, int max); #if __SC__ int MASTER_RET Dos_get_verify(void); #define dos_get_verify() Dos_get_verify() #else int MASTER_RET dos_get_verify(void); #endif void MASTER_RET dos_set_verify_on(void); void MASTER_RET dos_set_verify_off(void); int MASTER_RET dos_get_driveinfo(int drive, unsigned MASTER_PTR *cluster, unsigned MASTER_PTR *sector, unsigned MASTER_PTR *bytes); /* VSYNC割り込み ----------------------------------------------------- */ extern unsigned volatile vsync_Count1, vsync_Count2 ; extern unsigned vsync_Delay ; extern void (far * vsync_Proc)(void); #define vsync_proc_set(proc) (CLI(), (vsync_Proc = (void (far *)(void))(proc)), STI()) #define vsync_proc_reset() (CLI(), (vsync_Proc = 0), STI()) #define vsync_reset1() (vsync_Count1 = 0) #define vsync_reset2() (vsync_Count2 = 0) #if MASTER98 void MASTER_RET vsync_start(void); void MASTER_RET vsync_end(void); void MASTER_RET vsync_enter(void); void MASTER_RET vsync_leave(void); void MASTER_RET vsync_wait(void); extern void (far interrupt * vsync_OldVect)(void); #endif #if MASTERV void MASTER_RET vga_vsync_start(void); void MASTER_RET vga_vsync_end(void); void MASTER_RET vga_vsync_wait(void); extern unsigned vsync_Freq ; # if !MASTER98 # define vsync_start() vga_vsync_start(),(vsync_Delay=((vsync_Freq < 21147)\ ? (unsigned)((21147-vsync_Freq)*65536UL/21147):0)) # define vsync_end() vga_vsync_end() # define vsync_enter() vga_vsync_start() # define vsync_leave() vga_vsync_end() # define vsync_wait() vga_vsync_wait() # endif #endif /* タイマ割り込み --------------------------------------------------------- */ extern unsigned long volatile timer_Count ; extern void (far * timer_Proc)(void); #if MASTER98 int MASTER_RET timer_start( unsigned count, void (far * timProc)(void)); void MASTER_RET timer_end(void); void MASTER_RET timer_leave(void); #endif #if MASTERV # if !MASTER98 # endif #endif /* 区間計測 --------------------------------------------------------------- */ extern unsigned perform_Rate ; #if MASTER98 void MASTER_RET perform_start(void); unsigned long MASTER_RET perform_stop(void); #endif #if MASTERV void MASTER_RET perform_at_start(void); unsigned long MASTER_RET perform_at_stop(void); # if !MASTER98 # define perform_start perform_at_start # define perform_stop perform_at_stop # endif #endif void MASTER_RET perform_str( char MASTER_PTR * strbuf, unsigned long perf ); /* 文字列操作 ------------------------------------------------------------- */ void MASTER_CRET str_printf( char MASTER_PTR * buf, const char MASTER_PTR * format, ... ); char MASTER_PTR * MASTER_RET str_pastoc( char MASTER_PTR * CString, const char MASTER_PTR * PascalString ); char MASTER_PTR * MASTER_RET str_ctopas( char MASTER_PTR * PascalString, const char MASTER_PTR * CString ); int MASTER_RET str_comma( char MASTER_PTR * buf, long val, unsigned buflen ); int MASTER_RET str_iskanji2( const char MASTER_PTR * str, int n ); unsigned MASTER_RET sjis_to_jis( unsigned sjis ); unsigned MASTER_RET jis_to_sjis( unsigned jis ); /* XMS関係 -----------------------------------------------------------------*/ int MASTER_RET xms_exist(void); unsigned MASTER_RET xms_allocate( unsigned long memsize ); unsigned MASTER_RET xms_reallocate( unsigned handle, unsigned long newsize ); void MASTER_RET xms_free( unsigned handle ); int MASTER_RET xms_movememory( long destOff, unsigned destHandle, long srcOff, unsigned srcHandle, long Length ); unsigned long MASTER_RET xms_size( unsigned handle ); unsigned long MASTER_RET xms_maxfree(void); unsigned long MASTER_RET xms_space(void); /* キー関係 ----------------------------------------------------------------*/ int MASTER_RET key_pressed(void); #if MASTER98 void MASTER_RET key_start(void); void MASTER_RET key_end(void); void MASTER_RET key_set_label( int num, const char MASTER_PTR * lab ); void MASTER_RET key_beep_on(void); void MASTER_RET key_beep_off(void); int MASTER_RET gkey_getkey(void); int MASTER_RET key_shift(void); int MASTER_RET key_sense( int keygroup ); unsigned MASTER_RET key_scan(void); unsigned MASTER_RET key_wait(void); void MASTER_RET key_reset(void); unsigned MASTER_RET key_wait_bios(void); unsigned MASTER_RET key_sense_bios(void); #define K_SHIFT 1 #define K_CAPS 2 #define K_KANA 4 #define K_GRPH 8 #define K_CTRL 16 #endif extern unsigned key_back_buffer ; typedef struct KEYTABLE KEYTABLE ; struct KEYTABLE { unsigned rollup, rolldown, ins, del, up, left, right, down ; unsigned homeclr, help, s_homeclr ; } ; extern KEYTABLE key_table_normal, key_table_alt ; extern KEYTABLE key_table_shift, key_table_ctrl ; #define key_table_grph key_table_alt /* key_scanが返す値 ( key_table... ) */ #define CTRL(c) (c-'@') #define K_HELP 0x100 #define K_UP CTRL('E') #define K_LEFT CTRL('S') #define K_RIGHT CTRL('D') #define K_DOWN CTRL('X') #define K_S_UP CTRL('R') #define K_S_LEFT CTRL('A') #define K_S_RIGHT CTRL('F') #define K_S_DOWN CTRL('C') #define K_C_UP (CTRL('E')+0x200) #define K_C_LEFT (CTRL('S')+0x200) #define K_C_RIGHT (CTRL('D')+0x200) #define K_C_DOWN (CTRL('X')+0x200) #define K_A_UP (CTRL('E')+0x300) #define K_A_LEFT (CTRL('S')+0x300) #define K_A_RIGHT (CTRL('D')+0x300) #define K_A_DOWN (CTRL('X')+0x300) #define K_ROLLUP CTRL('C') #define K_ROLLDOWN CTRL('R') #define K_S_ROLLUP CTRL('Z') #define K_S_ROLLDOWN CTRL('W') #define K_C_ROLLUP (CTRL('C')+0x200) #define K_C_ROLLDOWN (CTRL('R')+0x200) #define K_A_ROLLUP (CTRL('C')+0x300) #define K_A_ROLLDOWN (CTRL('R')+0x300) #define K_HOMECLR CTRL('Y') #define K_CLR CTRL('@') #define K_INS CTRL('V') #define K_DEL CTRL('G') #define K_S_DEL CTRL('T') #define K_C_INS (CTRL('V')+0x200) #define K_C_DEL (CTRL('G')+0x200) #define K_A_INS (CTRL('V')+0x300) #define K_A_DEL (CTRL('G')+0x300) #define K_BS CTRL('H') #define K_TAB CTRL('I') #define K_ESC CTRL('[') #define K_CR CTRL('M') #define K_F1 0x101 #define K_F2 0x102 #define K_F3 0x103 #define K_F4 0x104 #define K_F5 0x105 #define K_F6 0x106 #define K_F7 0x107 #define K_F8 0x108 #define K_F9 0x109 #define K_F10 0x10a #define K_S_F1 0x10b #define K_S_F2 0x10c #define K_S_F3 0x10d #define K_S_F4 0x10e #define K_S_F5 0x10f #define K_S_F6 0x110 #define K_S_F7 0x111 #define K_S_F8 0x112 #define K_S_F9 0x113 #define K_S_F10 0x114 #define K_VF1 0x120 #define K_VF2 0x121 #define K_VF3 0x122 #define K_VF4 0x123 #define K_VF5 0x124 #define K_S_VF1 0x125 #define K_S_VF2 0x126 #define K_S_VF3 0x127 #define K_S_VF4 0x128 #define K_S_VF5 0x129 #define K_C_F1 0x12a #define K_C_F2 0x12b #define K_C_F3 0x12c #define K_C_F4 0x12d #define K_C_F5 0x12e #define K_C_F6 0x12f #define K_C_F7 0x130 #define K_C_F8 0x131 #define K_C_F9 0x132 #define K_C_F10 0x133 #define K_C_VF1 0x134 #define K_C_VF2 0x135 #define K_C_VF3 0x136 #define K_C_VF4 0x137 #define K_C_VF5 0x138 #define key_back(c) (key_back_buffer = (c)) #if MASTERV unsigned long MASTER_RET vkey_scan(void); unsigned long MASTER_RET vkey_wait(void); unsigned MASTER_RET vkey_to_98( unsigned long atkey ); #define vkey_shift() (*(unsigned char far *)0x417L) #define VK_RSHIFT 0x01 #define VK_LSHIFT 0x02 #define VK_SHIFT (VK_RSHIFT|VK_LSHIFT) #define VK_CTRL 0x04 #define VK_ALT 0x08 #define VK_KANA 0x10 /* J3100 */ #define VK_NUMLOCK 0x20 #define VK_CAPS 0x40 # if !MASTER98 # define key_start() (void)0/* ? */ # define key_end() (void)0/* ? */ # define key_set_label(n,lab) (void)0/* ? */ # define key_beep_on() (void)0 # define key_beep_off() (void)0 # define gkey_getkey() 0/* ? */ # define key_shift() vkey_shift() # define key_sense(kg) 0/* ? */ # define key_scan() vkey_to_98(vkey_scan()) # define key_wait() vkey_to_98(vkey_wait()) # define key_reset() (void)0 # define key_wait_bios() vkey_to_98(vkey_wait()) # define key_sense_bios() (key_pressed() ? vkey_to_98(vkey_wait()):0) # define K_SHIFT VK_SHIFT # define K_CAPS VK_CAPS # define K_KANA VK_KANA # define K_GRPH VK_ALT # define K_CTRL VK_CTRL # endif #endif /* 外字関係 ----------------------------------------------------------------*/ #if MASTER98 void MASTER_RET gaiji_putc( unsigned x, unsigned y, unsigned c ); void MASTER_RET gaiji_putca( unsigned x, unsigned y, unsigned c, unsigned atrb ); void MASTER_RET gaiji_puts( unsigned x, unsigned y, const char MASTER_PTR * str ); void MASTER_RET gaiji_putsa( unsigned x, unsigned y, const char MASTER_PTR * str, unsigned atrb ); void MASTER_RET gaiji_putp( unsigned x, unsigned y, const char MASTER_PTR * pstr ); void MASTER_RET gaiji_putpa( unsigned x, unsigned y, const char MASTER_PTR * pstr, unsigned atrb ); void MASTER_RET gaiji_putni( unsigned x, unsigned y, unsigned val, unsigned width ); void MASTER_RET gaiji_putnia( unsigned x, unsigned y, unsigned val, unsigned width, unsigned atrb ); void MASTER_RET gaiji_write( int code, const void far * pattern ); void MASTER_RET gaiji_write_all( const void far * pattern ); void MASTER_RET gaiji_read( int code, void far * pattern ); void MASTER_RET gaiji_read_all( void far * pattern ); int MASTER_RET gaiji_backup(void); int MASTER_RET gaiji_restore(void); int MASTER_RET gaiji_entry_bfnt( const char MASTER_PTR * filename ); #endif #if MASTERV # if !MASTER98 # define gaiji_putsa(x,y,s,a) vga4_bfnt_puts((x)*8,(y)*16,16,(s),\ vtext_colortable[vtext_color_98(a)&0x0f] + (vga4_readdot((x)*8,(y)*16)<<4)) # define gaiji_puts(x,y,s) vga4_bfnt_puts((x)*8,(y)*16,16,(s),\ 0x07) /* ? */ # define gaiji_putnia(x,y,v,w,a) {char ___s[8];str_printf(___s,"%07d",(v));\ gaiji_putsa(x,y,___s+7-(w),a);} # define gaiji_putca(x,y,c,a) vga4_bfnt_putc((x)*8,(y)*16,(c),\ vtext_colortable[vtext_color_98(a)&0x0f] + (vga4_readdot((x)*8,(y)*16)<<4)) # define gaiji_putc(x,y,c) vga4_bfnt_putc((x)*8,(y)*16,(c),0x07) /* ? */ # define gaiji_read(c,pat) _fmemcpy(pat,SEG2FP(font_AnkSeg+(c)*2),32) # define gaiji_read_all(pat) _fmemcpy(pat,SEG2FP(font_AnkSeg),32*256) # define gaiji_backup() 1 # define gaiji_restore() 1 # define gaiji_entry_bfnt(name) !font_entry_bfnt(name) /* ? */ # endif #endif /* フォント関係 ------------------------------------------------------------*/ int MASTER_RET font_entry_bfnt( const char MASTER_PTR * ); int MASTER_RET wfont_entry_bfnt( const char MASTER_PTR * ); void MASTER_RET font_write( unsigned code, const void MASTER_PTR * pattern ); #if MASTER98 int MASTER_RET font_entry_cgrom( unsigned firstchar, unsigned lastchar ); void MASTER_RET font_entry_kcg(void); void MASTER_RET font_entry_gaiji(void); void MASTER_RET font_read( unsigned code, void MASTER_PTR * pattern ); #endif #if MASTERV void MASTER_RET font_at_init(void); int MASTER_RET font_at_read( unsigned ccode, unsigned fontsize, void far * buf); int MASTER_RET font_at_entry_cgrom( unsigned firstchar, unsigned lastchar ); # if !MASTER98 # define font_read(code,buf) font_at_read(code,0,buf) # define font_entry_cgrom(fc,lc) font_at_entry_cgrom(fc,lc) # define font_entry_kcg() font_at_entry_cgrom(0x20,0xdf) # define font_entry_gaiji() (void)0/* ? */ # endif #endif /* マウス関係 --------------------------------------------------------------*/ /* MOUSE2: マウス管理 */ struct mouse_info { unsigned button ; int x, y ; } ; #define mouse_get(ms) (CLI(),(ms)->x=mouse_X,(ms)->y=mouse_Y,(ms)->button=mouse_Button,STI()) #if MASTER98 /* MOUSE1: マウス割り込み */ void MASTER_RET mouse_int_start( int (far pascal * mousefunc)(void), int freq ); void MASTER_RET mouse_int_end(void); void MASTER_RET mouse_int_enable(void); void MASTER_RET mouse_int_disable(void); #endif #define MOUSE_120Hz 0 #define MOUSE_60Hz 1 #define MOUSE_30Hz 2 #define MOUSE_15Hz 3 #if MASTERV # if !MASTER98 # define mouse_int_start(func,freq) mousex_start() # define mouse_int_end() mousex_end() # define mouse_int_enable() (void)0 # define mouse_int_disable() (void)0 # endif #endif #if MASTER98 void MASTER_RET mouse_proc_init(void); void MASTER_RET mouse_resetrect(void); void MASTER_RET mouse_setrect( int x1, int y1, int x2, int y2 ); int far pascal mouse_proc(void); #endif #if MASTERV # if !MASTER98 # define mouse_proc_init() /* ? */ # define mouse_resetrect() /* ? */ # define mouse_setrect(x1,y1,x2,y2) mousex_setrect(x1,y1,x2,y2) # define mouse_proc() 0/* ? */ # endif #endif extern unsigned mouse_Type ; extern volatile int mouse_X, mouse_Y ; extern volatile unsigned mouse_Button ; extern unsigned mouse_ScaleX, mouse_ScaleY, mouse_EventMask ; extern void (far *mouse_EventRoutine)(void); #define MOUSE_BRUP 0x80 #define MOUSE_BRDOWN 0x40 #define MOUSE_BLUP 0x20 #define MOUSE_BLDOWN 0x10 #define MOUSE_NOEVENT 0x08 #define MOUSE_MOVE 0x04 #define MOUSE_BR 0x02 #define MOUSE_BL 0x01 #define MOUSE_EVENT 0xf4 /* APIとグラフィックカーソル管理 */ void MASTER_RET mouse_setmickey( unsigned mx, unsigned my ); void MASTER_RET mouse_cmoveto( int x, int y ); #if MASTER98 /* MOUSEI: 簡略マウス割り込み処理 */ void MASTER_RET mouse_istart( int blc, int whc ); void MASTER_RET mouse_iend(void); /* MOUSEV: 簡略vsync割り込みマウス処理 */ void MASTER_RET mouse_vstart( int blc, int whc ); void MASTER_RET mouse_vend(void); #endif /* MOUSEX: 外部マウスドライバ制御 */ #define MOUSEX_NONE 0 /* 外部マウスドライバ不在 */ #define MOUSEX_NEC 1 /* mouse.sys */ #define MOUSEX_MS 2 /* mouse.com */ int MASTER_RET mousex_start(void); void MASTER_RET mousex_end(void); void MASTER_RET mousex_moveto( int x, int y ); void MASTER_RET mousex_setrect( int x1, int y1, int x2, int y2 ); void MASTER_RET mousex_istart( int blc, int whc ); void MASTER_RET mousex_iend(void); #if MASTERV # if !MASTER98 # define mouse_istart(b,w) mousex_istart(b,w) # define mouse_iend() mousex_iend() # define mouse_vstart(b,w) vga_vsync_start(),mousex_istart(b,w) # define mouse_vend() mousex_iend(),vga_vsync_end() # endif #endif /* グラフィックカーソル ----------------------------------------------------*/ void MASTER_RET cursor_init(void); int MASTER_RET cursor_show(void); int MASTER_RET cursor_hide(void); void MASTER_RET cursor_moveto( int x, int y ); void MASTER_RET cursor_pattern( int px, int py, int blc, int whc, const void far * pattern ); void MASTER_RET cursor_pattern2( int px, int py, int whc, const void far * pattern ); struct CursorData { unsigned char px, py ; unsigned pattern[32] ; } ; extern struct CursorData cursor_Arrow ; extern struct CursorData cursor_Cross ; extern struct CursorData cursor_Hand ; extern struct CursorData cursor_Ok ; #define cursor_setpattern(pat,blc,whc) cursor_pattern(pat.px,pat.py,(blc),(whc),pat.pattern) /* ビープ関係 --------------------------------------------------------------*/ # define BEEP_FREQ_MAX 65535U #if MASTER98 void MASTER_RET beep_freq( unsigned freq ); # define SYS_BEEP_FREQ 2000 # define BEEP_FREQ_MIN 38 # define beep_on_98() OUTB(0x37,6) # define beep_off_98() OUTB(0x37,7) # define beep_on() beep_on_98() # define beep_off() beep_off_98() # define beep_end() (beep_off(),beep_freq(SYS_BEEP_FREQ)) #endif #if MASTERV # define VBEEP_FREQ_MIN 19 void MASTER_RET vbeep_freq( unsigned freq ); # define beep_on_at() OUTB(0x61,INPB(0x61) | 3) # define beep_off_at() OUTB(0x61,INPB(0x61) & ~3) # ifndef beep_on # define SYS_BEEP_FREQ 2000 /* dummy */ # define BEEP_FREQ_MIN VBEEP_FREQ_MIN # define beep_on() beep_on_at() # define beep_off() beep_off_at() # define beep_end() beep_off() # define beep_freq(f) vbeep_freq(f) # endif #endif /* DOSメモリ関係 -----------------------------------------------------------*/ #ifndef __TURBOC__ # define _DS ((unsigned)(((unsigned long)(void far *)(void near *)1) >> 16)) #endif #ifndef MK_FP # define MK_FP(s,o) ((void far *)(((unsigned long)(s) << 16)+(unsigned)(o))) #endif #define _FPSEG(fp) ((unsigned)((unsigned long)(fp) >> 16)) #define _FPOFF(fp) ((unsigned)(unsigned long)(fp)) /* farポインタを正規化したセグメントを得る */ #define FP_REGULAR_SEG(fp) (_FPSEG(fp) + (_FPOFF(fp) >> 4)) /* farポインタを正規化したオフセットを得る */ #define FP_REGULAR_OFF(fp) (_FPOFF(fp) & 15) /* farポインタを正規化する */ #define FP_REGULAR(fp) (MK_FP(FP_REGULAR_SEG(fp),FP_REGULAR_OFF(fp))) /* バイト数の所要パラグラフ数を得る */ #define BYTE2PARA(byteval) (unsigned)(((((long)(byteval))&0xfffffL)+15)>>4) /* セグメント値をポインタに変換する */ #define SEG2FP(seg) (MK_FP((seg),0)) /* farポインタから 0:0 番地からのlongオフセット値を得る */ #define FP2LONG(fp) (((long)_FPSEG(fp) << 4) + _FPOFF(fp)) /* 0:0番地からのlongオフセット値を farポインタに変換 */ #define LONG2FP(l) MK_FP((unsigned)((l)>> 4),(unsigned)((l)&0x000f)) /* farポインタにlong値を加算する */ #define FPADD(fp,l) LONG2FP(FP2LONG(fp)+(l)) /* long値の上位16ビットを得る */ #define HIWORD(longval) (unsigned)((longval) >> 16) /* long値の下位16ビットを得る */ #define LOWORD(longval) (unsigned)(longval) /* メモリブロックの用途ID */ #define MEMID_UNKNOWN 0 #define MEMID_FONT 1 #define MEMID_GAIJI 2 #define MEMID_WFONT 3 #define MEMID_SUPER 4 #define MEMID_VVRAM 5 #define MEMID_BFILE 6 #define MEMID_PFILE 7 #define MEMID_BGM 8 #define MEMID_EFS 9 #define MEMID_PI 10 #define MEMID_MAG 11 #define MEMID_TEXTBACK 12 #define MEMID_VTEXTX 13 unsigned MASTER_RET mem_allocate( unsigned para ); unsigned MASTER_RET mem_lallocate( unsigned long bytesize ); void MASTER_RET mem_free( unsigned seg ); void MASTER_RET mem_assign( unsigned top_seg, unsigned parasize ); void MASTER_RET mem_assign_all(void); int MASTER_RET mem_unassign(void); int MASTER_RET mem_assign_dos( unsigned parasize ); unsigned MASTER_RET smem_wget( unsigned bytesize ); unsigned MASTER_RET smem_lget( unsigned long bytesize ); void MASTER_RET smem_release( unsigned memseg ); unsigned MASTER_RET hmem_alloc( unsigned parasize ); unsigned MASTER_RET hmem_allocbyte( unsigned bytesize ); unsigned MASTER_RET hmem_lallocate( unsigned long bytesize ); unsigned MASTER_RET hmem_reallocbyte( unsigned oseg, unsigned bytesize ); unsigned MASTER_RET hmem_realloc( unsigned oseg, unsigned parasize ); void MASTER_RET hmem_free( unsigned memseg ); unsigned MASTER_RET hmem_maxfree(void); extern unsigned mem_TopSeg, mem_OutSeg, mem_EndMark ; extern unsigned mem_TopHeap, mem_FirstHole ; extern unsigned mem_MyOwn, mem_AllocID ; /* 現在確保できる最大smemパラグラフサイズを得る */ #define smem_maxfree() (mem_TopHeap - mem_EndMark) /* 特定のhmemメモリブロックの現在のパラグラフサイズを得る */ #define hmem_getsize(mseg) (*(unsigned far *)MK_FP((mseg)-1,2) - (mseg)) /* hmemメモリブロックの用途IDを得る */ #define hmem_getid(mseg) (*(unsigned far *)MK_FP((mseg)-1,4)) /* RS-232C関係 -------------------------------------------------------------*/ #ifndef __SIO_H # if MASTER98 #define SIO_Nxx 0x00 /* Non Parity */ #define SIO_Oxx 0x10 /* Odd Parity */ #define SIO_Exx 0x30 /* Even Parity */ #define SIO_x7x 0x08 /* data length 7bit */ #define SIO_x8x 0x0c /* data length 8bit */ #define SIO_xx1 0x40 /* stop bit length 1bit */ #define SIO_xx2 0x80 /* stop bit length 1.5bit */ #define SIO_xx3 0xc0 /* stop bit length 2bit */ #define SIO_N81 (SIO_Nxx|SIO_x8x|SIO_xx1) #define SIO_N82 (SIO_Nxx|SIO_x8x|SIO_xx2) #define SIO_N83 (SIO_Nxx|SIO_x8x|SIO_xx3) #define SIO_E81 (SIO_Exx|SIO_x8x|SIO_xx1) #define SIO_E82 (SIO_Exx|SIO_x8x|SIO_xx2) #define SIO_E83 (SIO_Exx|SIO_x8x|SIO_xx3) #define SIO_O81 (SIO_Oxx|SIO_x8x|SIO_xx1) #define SIO_O82 (SIO_Oxx|SIO_x8x|SIO_xx2) #define SIO_O83 (SIO_Oxx|SIO_x8x|SIO_xx3) #define SIO_N71 (SIO_Nxx|SIO_x7x|SIO_xx1) #define SIO_N72 (SIO_Nxx|SIO_x7x|SIO_xx2) #define SIO_N73 (SIO_Nxx|SIO_x7x|SIO_xx3) #define SIO_E71 (SIO_Exx|SIO_x7x|SIO_xx1) #define SIO_E72 (SIO_Exx|SIO_x7x|SIO_xx2) #define SIO_E73 (SIO_Exx|SIO_x7x|SIO_xx3) #define SIO_O71 (SIO_Oxx|SIO_x7x|SIO_xx1) #define SIO_O72 (SIO_Oxx|SIO_x7x|SIO_xx2) #define SIO_O73 (SIO_Oxx|SIO_x7x|SIO_xx3) #define SIO_FLOW_NONE 0 #define SIO_FLOW_HARD 1 #define SIO_FLOW_SOFT 2 #define SIO_MIDI 128 #define SIO_38400 9 #define SIO_20800 8 #define SIO_19200 8 #define SIO_9600 7 #define SIO_4800 6 #define SIO_2400 5 #define SIO_1200 4 #define SIO_600 3 #define SIO_300 2 #define SIO_150 1 #define SIO_ER 0x02 /* sio_bit_on/off() DTR */ #define SIO_ERRCLR 0x10 /* sio_bit_on/off() Errorフラグクリア */ #define SIO_RS 0x20 /* sio_bit_on/off() RTS */ #define SIO_BREAK 0x80 /* sio_bit_on/off() ブレーク信号 */ #define SIO_PERR 0x08 /* sio_read_err() parity error */ #define SIO_OERR 0x10 /* sio_read_err() over run error */ #define SIO_FERR 0x20 /* sio_read_err() framing error */ #define SIO_CI 0x80 /* sio_read_signal() 着呼検出 */ #define SIO_CS 0x40 /* sio_read_signal() 送信可 */ #define SIO_CD 0x20 /* sio_read_signal() キャリア検出 */ #define SIO_SENDBUF_SIZE 2048 #define SIO_RECEIVEBUF_SIZE 6144 #define sio_receivebuf_len(port) sio_ReceiveLen #define sio_sendbuf_len(port) sio_SendLen #define sio_sendbuf_space(port) ((unsigned)(SIO_SENDBUF_SIZE - sio_SendLen)) #define sio_error_reset(port) (sio_bit_on((port),SIO_ERRCLR),sio_bit_off((port),SIO_ERRCLR)) #define sio_enter(port,flow) sio_start(port,0,0,flow) void MASTER_RET sio_start( int port, int speed, int param, int flow ); void MASTER_RET sio_end( int port ); void MASTER_RET sio_leave( int port ); void MASTER_RET sio_setspeed( int port, int speed ); void MASTER_RET sio_enable( int port ); void MASTER_RET sio_disable( int port ); int MASTER_RET sio_putc( int port, int c ); int MASTER_RET sio_getc( int port ); unsigned MASTER_RET sio_puts( int port, const char MASTER_PTR * sendstr ); unsigned MASTER_RET sio_putp( int port, const char MASTER_PTR * passtr ); unsigned MASTER_RET sio_write( int port, const void MASTER_PTR * senddata, unsigned sendlen ); unsigned MASTER_RET sio_read( int port, void MASTER_PTR * recbuf, unsigned reclen ); void MASTER_RET sio_bit_off( int port, int mask ); void MASTER_RET sio_bit_on( int port, int mask ); int MASTER_RET sio_read_signal( int port ); int MASTER_RET sio_read_err( int port ); int MASTER_RET sio_read_dr( int port ); extern const unsigned sio_SendLen ; extern const unsigned sio_ReceiveLen ; # endif /* MASTER98 */ #endif /* __SIO_H */ /* BEEP PCM関係 ------------------------------------------------------------*/ void MASTER_RET pcm_convert( void far * dest , const void far * src, unsigned rate, unsigned long size ); #if MASTER98 void MASTER_RET pcm_play( const void far *pcm, unsigned rate, unsigned long size); # define PCM_22KHz ((INPB(0x42)&0x20) ? (1997/22) : (2458/22)) # define PCM_15_6KHz ((INPB(0x42)&0x20) ? (19968/156) : (24576/156)) # define PCM_22kHz PCM_22KHz # define PCM_15_6kHz PCM_15_6KHz #endif /* PC-9801 ジョイスティック入力関係 ----------------------------------------*/ extern int js_bexist, js_shift, js_2player ; extern unsigned js_stat[2] ; #define JS_NORMAL 0 #define JS_FORCE_USE 1 #define JS_IGNORE 2 #define JS_UP 0x01 #define JS_DOWN 0x02 #define JS_LEFT 0x04 #define JS_RIGHT 0x08 #define JS_TRIG1 0x10 #define JS_TRIG2 0x20 #define JS_TRIG3 0x40 #define JS_TRIG4 0x80 #define JS_ESC 0x100 #define JS_IRST1 JS_TRIG3 #define JS_IRST2 JS_TRIG4 #define JSA_A 0x80 #define JSA_B 0x40 #define JSA_C 0x20 #define JSA_D 0x10 #define JSA_E1 0x08 #define JSA_E2 0x04 #define JSA_START 0x02 #define JSA_SELECT 0x01 typedef void near pascal JS_ASSIGN_CODE(void); void MASTER_RET js_key( unsigned func, int group, int maskbit ); #if MASTER98 int MASTER_RET js_start( int force ); void MASTER_RET js_end(void); int MASTER_RET js_sense(void); int MASTER_RET js_sense2(void); int MASTER_RET js_analog( int player, unsigned char MASTER_PTR * astat ); extern unsigned js_saj_port ; extern JS_ASSIGN_CODE JS_1P4 ; extern JS_ASSIGN_CODE JS_1P3 ; extern JS_ASSIGN_CODE JS_1P2 ; extern JS_ASSIGN_CODE JS_1P1 ; extern JS_ASSIGN_CODE JS_2P2 ; extern JS_ASSIGN_CODE JS_2P1 ; extern JS_ASSIGN_CODE JS_2PRIGHT ; extern JS_ASSIGN_CODE JS_2PLEFT ; extern JS_ASSIGN_CODE JS_2PDOWN ; extern JS_ASSIGN_CODE JS_2PUP ; #define js_keyassign(func,group,maskbit) js_key((unsigned)func,(group)+0x52a,(maskbit)) #define js_key2player(flag) (((js_2player=(flag))!=0) ? \ (js_keyassign(JS_1P1,9,0x40),js_keyassign(JS_1P2,8,0x80)) \ :(js_keyassign(JS_1P1,5,0x02),js_keyassign(JS_1P2,5,0x04))) #endif #if MASTERV #define AT_JS_RESIDLEN 12 extern const char AT_JS_RESID[AT_JS_RESIDLEN] ; struct AT_JS_CALIBDATA { char id[AT_JS_RESIDLEN]; char filler[16-(AT_JS_RESIDLEN&15)]; Point dmin, dmax, dcenter; Point amin, amax, acenter; } ; #define AT_JS_RESPARASIZE (((sizeof (struct AT_JS_CALIBDATA))+15)>>4) extern unsigned at_js_resseg ; extern unsigned at_js_mintime ; extern unsigned at_js_maxtime ; extern unsigned at_js_count ; extern unsigned at_js_x1,at_js_y1 ; extern unsigned at_js_x2,at_js_y2 ; extern unsigned at_js_min ; extern unsigned at_js_max ; extern int at_js_fast ; int MASTER_RET at_js_start( int mode ); void MASTER_RET at_js_end(void); int MASTER_RET at_js_sense(void); #define at_js_keyassign(f,g,m) js_key((unsigned)f,(g)+(unsigned)js_map,(m)) #define at_js_key2player(flag) (((js_2player=(flag))!=0) ? \ (at_js_keyassign(AT_JS_1P1,10,0x04),at_js_keyassign(AT_JS_1P2,9,0x10)) \ :(at_js_keyassign(AT_JS_1P1, 5,0x10),at_js_keyassign(AT_JS_1P2,5,0x20))) int MASTER_RET at_js_wait(Point *p); void MASTER_RET at_js_calibrate(const Point far * min, const Point far * max, const Point far * center); #define at_js_resptr ((struct AT_JS_CALIBDATA far *)SEG2FP(at_js_resseg)) #define at_js_get_calibrate() (at_js_resseg=resdata_exist(AT_JS_RESID,\ AT_JS_RESIDLEN,AT_JS_RESPARASIZE)) extern JS_ASSIGN_CODE AT_JS_1P4 ; extern JS_ASSIGN_CODE AT_JS_1P3 ; extern JS_ASSIGN_CODE AT_JS_1P2 ; extern JS_ASSIGN_CODE AT_JS_1P1 ; extern JS_ASSIGN_CODE AT_JS_2P2 ; extern JS_ASSIGN_CODE AT_JS_2P1 ; extern JS_ASSIGN_CODE AT_JS_2PRIGHT ; extern JS_ASSIGN_CODE AT_JS_2PLEFT ; extern JS_ASSIGN_CODE AT_JS_2PDOWN ; extern JS_ASSIGN_CODE AT_JS_2PUP ; extern JS_ASSIGN_CODE js_map ; # if !MASTER98 # define js_start(m) ((at_js_fast=1),at_js_start(m),\ (at_js_get_calibrate()!=0)?(at_js_calibrate(&at_js_resptr->dmin,\ &at_js_resptr->dmax,&at_js_resptr->dcenter),js_bexist):js_bexist) # define js_end() at_js_end() # define js_sense() at_js_sense() # define js_sense2() (js_stat[0] & JS_ESC) # define js_keyassign(f,g,m) at_js_keyassign(f,g,m) # define js_key2player(flag) at_js_key2player(flag) #endif #endif /* スーパーインポーズ処理 --------------------------------------------------*/ /* 出典: super.lib(c)Kazumi supersfx.lib(c)iR $Id: super.h 0.36 93/02/19 20:23:11 Kazumi Rel $ */ #define SUPER_MAXPAT 512 /* extern */ extern unsigned super_patnum ; extern unsigned super_buffer ; extern unsigned super_patdata[SUPER_MAXPAT] ; extern unsigned super_patsize[SUPER_MAXPAT] ; extern const char BFNT_ID[5] ; /* "BFNT\x1a" */ /* define */ #define SIZE8x8 0x0108 #define SIZE16x16 0x0210 #define SIZE24x24 0x0318 #define SIZE32x32 0x0420 #define SIZE40x40 0x0528 #define SIZE48x48 0x0630 #define SIZE56x56 0x0738 #define SIZE64x64 0x0840 #define xSIZE8 0x0100 #define xSIZE16 0x0200 #define xSIZE24 0x0300 #define xSIZE32 0x0400 #define xSIZE40 0x0500 #define xSIZE48 0x0600 #define xSIZE56 0x0700 #define xSIZE64 0x0800 #define ySIZE8 0x0008 #define ySIZE16 0x0010 #define ySIZE24 0x0018 #define ySIZE32 0x0020 #define ySIZE40 0x0028 #define ySIZE48 0x0030 #define ySIZE56 0x0038 #define ySIZE64 0x0040 #define PATTERN_ERASE 0 #define PATTERN_BLUE 1 #define PATTERN_RED 2 #define PATTERN_GREEN 3 #define PATTERN_INTEN 4 #define PLANE_ERASE 0x00c0 #define PLANE_BLUE 0xffce #define PLANE_RED 0xffcd #define PLANE_GREEN 0xffcb #define PLANE_INTEN 0xffc7 /* super.lib エラーコード */ #ifndef CommonDefined #define NoError 0 /* 正常終了 */ #define InvalidFunctionCode -1 /* 無効なファンクションコード */ #define FileNotFound -2 /* ファイル名が見つからない */ #define PathNotFound -3 /* パス名が見つからない */ #define TooManyOpenFiles -4 /* オープンファイル過多 */ #define AccessDenied -5 /* アクセスできない */ #define InvalidHandle -6 /* 無効なハンドル */ #define MemoryControlBlocksDestroyed -7 /* メモリコントロールブロック破損 */ #define InsufficientMemory -8 /* メモリ不足 */ #define InvalidMemoryBlockAddress -9 /* 無効なメモリブロックアドレス */ #define InvalidEnvironment -10 /* 無効な環境 */ #define InvalidFormat -11 /* 無効な書式 */ #define InvalidAccessCode -12 /* 無効なアクセスコード */ #define InvalidData -13 /* 無効なデータ */ #define InvalidDrive -15 /* 無効なドライブ名 */ #define AttemptToRemoveCurrentDirectory -16 /* カレントディレクトリを削除しようとした */ #define NotSameDevice -17 /* 同じデバイスではない */ #define NoMoreFiles -18 /* これ以上ファイルはない */ #define DiskIsWriteProtected -19 /* ディスクがライトプロテクト状態 */ #define BadDiskUnit -20 /* ディスクユニット不良 */ #define DriveNotReady -21 /* ドライブが準備されていない */ #define InvalidDiskCommand -22 /* 無効なディスクコマンド */ #define CrcError -23 /* CRC エラー */ #define InvalidLength -24 /* 無効な長さ */ #define SeekError -25 /* シークエラー */ #define NotAnMsdosDisk -26 /* MS-DOS のディスクではない */ #define SectorNotFound -27 /* セクタが見つからない */ #define OutOfPaper -28 /* 紙切れ */ #define WriteFault -29 /* 書き込み失敗 */ #define ReadFault -30 /* 読み出し失敗 */ #define GeneralFailure -31 /* 通常の失敗 */ #define ShareingViolation -32 /* シェアリング違反 */ #define LockViolation -33 /* ロック違反 */ #define WrongDisk -34 /* ディスク指定の失敗 */ #define FcbUnavailable -35 /* FCB 使用不可能 */ #define NetworkRequestNotSupported -50 /* ネットワークリクエストが準備されていない */ #define RemoteComputerNotListening -51 /* リモートコンピュータが LISTEN していない */ #define DuplicateNameOnNetwork -52 /* ネットワーク名の 2 重定義 */ #define NetworkNameNotFound -53 /* ネットワーク名が見つからない */ #define NetworkBusy -54 /* ネットワークビジー */ #define NetworkDeviceNoLongerExists -55 /* ネットワークデバイスはこれ以上ない */ #define NetBiosCommandLimitExceeded -56 /* ネットワーク BIOS の限界を越えた */ #define NetworkAdapterHardwareError -57 /* ネットワークアダプタのハードエラー */ #define IncorrectResponseFromNetwork -58 /* ネットワークからの不当な応答 */ #define UnexpectedNetworkError -59 /* 予期できないネットワークエラー */ #define IncompatibleRemoteAdapter -60 /* リモートアダプタが合致しない */ #define PrintQueueFull -61 /* プリント待ち行列が一杯 */ #define QueueNotFull -62 /* 待ち行列は一杯ではない */ #define NotEnoughSpaceForPrintFile -63 /* プリントファイルのためのスペースが不十分 */ #define NetworkNameWasDeleted -64 /* ネットワーク名は既に削除されている */ #define AccessDenied2 -65 /* アクセスできない */ #define NetworkDeviceTypeIncorrect -66 /* ネットワークデバイスのタイプが不当 */ #define NetworkNameNotFound2 -67 /* ネットワーク名が見つからない */ #define NetworkNameLimitExceeded -68 /* ネットワーク名の限界を越えた */ #define NetBiosSessionLimitExceeded -69 /* ネットワーク BIOS セッションの限界を越えた */ #define TemporarilyPaused -70 /* 一時休止 */ #define NetworkRequestNotAccepted -71 /* ネットワークの要求が受けつけられない */ #define PrintOrDiskRedirectionIsPaused -72 /* プリンタ,ディスクのリディレクション休止 */ #define FileExists -80 /* ファイルが存在する */ #define CannotMake -82 /* 作成不能 */ #define Interrupt24hFailure -83 /* 割り込みタイプ 24H の失敗 */ #define OutOfStructures -84 /* ストラクチャの不良 */ #define AlreadyAssigned -85 /* 割り当て済み */ #define InvalidPassword -86 /* 無効なパスワード */ #define InvalidParameter -87 /* 無効なパラメータ */ #define NetWriteFault -88 /* ネットワークへの書き込み失敗 */ #define CommonDefined #endif /* define macro */ #define super_check_entry(patnum) (super_patsize[patnum]) #define super_getsize_pat(patnum) (super_patsize[patnum]) #define super_getsize_pat_x(patnum) ((super_patsize[patnum] >> 8) * 8) #define super_getsize_pat_y(patnum) (super_patsize[patnum] & 0xff) /* replacements for lower compatibilty... (super.lib) */ #define peekb2(seg,off) (*(const unsigned char far *)MK_FP(seg,off)) #define poke2(seg,off,data,len) _fmemset(MK_FP(seg,off),(data),(len)) #define pokeb2(seg,off,data) ((*(unsigned char far *)MK_FP(seg,off)) = (data)) #ifndef __TURBOC__ # define poke(seg,off,data) ((*(unsigned far *)MK_FP(seg,off)) = (data)) #endif #define get_ds() _DS #define super_palette Palettes #define BFNT_HEADER BfntHeader /* struct */ typedef struct BfntHeader BfntHeader ; typedef BfntHeader MASTER_PTR * PBfntHeader ; struct BfntHeader { unsigned char id[5], col ; unsigned char ver, x00 ; unsigned int Xdots; unsigned int Ydots; unsigned int START; unsigned int END; unsigned char font_name[8]; unsigned long time; unsigned int extSize; unsigned int hdrSize; } ; /* function prototypes */ int MASTER_RET bfnt_header_load(const char MASTER_PTR *filename, BfntHeader MASTER_PTR *header); int MASTER_RET bfnt_change_erase_pat(int, int, PBfntHeader); int MASTER_RET bfnt_entry_pat(int, PBfntHeader, int); int MASTER_RET bfnt_extend_header_analysis(int, PBfntHeader); int MASTER_RET bfnt_extend_header_skip(int, PBfntHeader); int MASTER_RET bfnt_header_read(int, PBfntHeader); int MASTER_RET bfnt_palette_skip(int, PBfntHeader); int MASTER_RET bfnt_palette_set(int, PBfntHeader); int MASTER_RET fontfile_open( const char MASTER_PTR * ); int MASTER_RET fontfile_close( int filehandle ); #if MASTER98 void MASTER_RET over_put_8(int x, int y, int num); void MASTER_RET over_roll_put_8(int x, int y, int num); void MASTER_RET over_small_put_8(int x, int y, int num); #endif int MASTER_RET palette_entry_rgb(const char MASTER_PTR *); #if MASTER98 void MASTER_RET palette_black_in(unsigned speed); void MASTER_RET palette_black_out(unsigned speed); void MASTER_RET palette_white_in(unsigned speed); void MASTER_RET palette_white_out(unsigned speed); #endif #if MASTERV void MASTER_RET dac_black_in(unsigned speed); void MASTER_RET dac_black_out(unsigned speed); void MASTER_RET dac_white_in(unsigned speed); void MASTER_RET dac_white_out(unsigned speed); # if !MASTER98 # define palette_black_in(s) dac_black_in(s) # define palette_black_out(s) dac_black_out(s) # define palette_white_in(s) dac_white_in(s) # define palette_white_out(s) dac_white_out(s) # endif #endif int MASTER_RET super_cancel_pat(int num); void MASTER_RET super_clean( int min_pat, int max_pat ); int MASTER_RET super_change_erase_bfnt(int, const char MASTER_PTR *); void MASTER_RET super_change_erase_pat(int, const void far *); int MASTER_RET super_entry_bfnt(const char MASTER_PTR *); int MASTER_RET super_entry_char(int patnum); int MASTER_RET super_entry_at( int num, int patsize, unsigned pat_seg ); int MASTER_RET super_entry_pat(int patsize, const void far *image, int clear_color); int MASTER_RET super_entry_pack( const void far * image, unsigned image_width, int patsize, int clear_color ); void MASTER_RET super_free(void); int MASTER_RET super_backup_ems( unsigned MASTER_PTR * handle, int first_pat, int last_pat ); int MASTER_RET super_restore_ems( unsigned handle, int load_to ); void MASTER_RET super_free_ems(void); int MASTER_RET super_duplicate(int topat, int frompat); void MASTER_RET super_hrev(int patnum); #define super_dup(pat) super_duplicate(super_patnum,(pat)) #if MASTER98 int MASTER_RET super_convert_tiny( int num ); void MASTER_RET repair_back(int x, int y, int num); void MASTER_RET repair_out(int x, int y, int num); void MASTER_RET slice_put(int x, int y, int num, int line); void MASTER_RET super_in(int x, int y, int num); void MASTER_RET super_large_put(int x, int y, int num); void MASTER_RET super_out(int x, int y, int num); void MASTER_RET super_put(int x, int y, int num); void MASTER_RET super_put_vrev(int x, int y, int num); void MASTER_RET super_put_1plane(int x, int y, int num, int pattern_plane, unsigned put_plane ); void MASTER_RET super_put_1plane_8(int x, int y, int num, int pattern_plane, unsigned put_plane ); void MASTER_RET super_put_8(int x, int y, int num); void MASTER_RET super_put_clip(int x, int y, int num); void MASTER_RET super_put_clip_8(int x, int y, int num); #endif #if MASTERV # define vga4_repair_back(x,y,num) (graph_accesspage(0),vga4_byte_move(\ (x)/8,(y)+graph_VramLines, (x)/8+(super_patsize[num]>>8),\ (y)+graph_VramLines+(super_patsize[num]&0xff)-1,(x)/8,(y))) void MASTER_RET vga4_repair_out(int x, int y, int num); void MASTER_RET vga4_slice_put(int x, int y, int num,int line); void MASTER_RET vga4_super_in(int x, int y, int num); void MASTER_RET vga4_super_large_put(int x, int y, int num); void MASTER_RET vga4_super_put(int x, int y, int num); void MASTER_RET vga4_super_put_vrev(int x, int y, int num); void MASTER_RET vga4_super_put_1plane(int x, int y, int num, int pattern_plane, unsigned put_plane ); void MASTER_RET vga4_super_put_1plane_8(int x, int y, int num, int pattern_plane, unsigned put_plane ); void MASTER_RET vga4_super_put_8(int x, int y, int num); void MASTER_RET vga4_super_put_clip(int x, int y, int num); void MASTER_RET vga4_over_put_8(int x, int y, int num); void MASTER_RET vga4_over_roll_put_8(int x, int y, int num); void MASTER_RET vga4_super_put_rect(int x, int y, int num); void MASTER_RET vga4_super_put_vrev_rect(int x, int y, int num); void MASTER_RET vga4_super_roll_put(int x, int y, int num); # if !MASTER98 # define super_convert_tiny(n) 0 /* DOS/Vではtinyは無効 */ # define repair_back(x,y,num) vga4_repair_back(x,y,num) # define repair_out(x,y,num) vga4_repair_out(x,y,num) # define slice_put(x,y,num,l) vga4_slice_put(x,y,num,l) # define super_in(x,y,num) vga4_super_in(x,y,num) # define super_large_put(x,y,num) vga4_super_large_put(x,y,num) # define super_out(x,y,num) vga4_repair_out(x,y,num) /* ? */ # define super_put(x,y,num) vga4_super_put(x,y,num) # define super_put_vrev(x,y,num) vga4_super_put_vrev(x,y,num) # define super_put_1plane(x,y,num,pat,put) vga4_super_put_1plane(x,y,num,pat,put) # define super_put_1plane_8(x,y,num,pat,put) vga4_super_put_1plane_8(x,y,num,pat,put) # define super_put_8(x,y,num) vga4_super_put_8(x,y,num) # define super_put_clip(x,y,num) vga4_super_put_clip(x,y,num) # define over_put_8(x,y,num) vga4_over_put_8(x,y,num) # define over_roll_put_8(x,y,num) vga4_over_roll_put_8(x,y,num) # define over_small_put_8(x,y,num) /* ? */ # define super_put_rect(x,y,num) vga4_super_put_rect(x,y,num) # define super_put_vrev_rect(x,y,num) vga4_super_put_vrev_rect(x,y,num) # define super_roll_put(x,y,num) vga4_super_roll_put(x,y,num) # endif #endif void MASTER_RET super_set_window(int y1, int y2); #if MASTER98 void MASTER_RET super_put_window(int x, int y, int num); void MASTER_RET super_put_rect(int x, int y, int num); void MASTER_RET super_put_vrev_rect(int x, int y, int num); void MASTER_RET super_repair(int x, int y, int num); void MASTER_RET super_roll_put(int x, int y, int num); void MASTER_RET super_roll_put_1plane(int x, int y, int num, int pattern_plane, unsigned put_plane); void MASTER_RET super_roll_put_1plane_8(int x, int y, int num, int pattern_plane, unsigned put_plane); void MASTER_RET super_roll_put_8(int x, int y, int num); void MASTER_RET super_zoom(int x, int y, int num, int zoom); void MASTER_RET super_zoom_put(int x, int y, int num, unsigned x_rate, int y_rate); void MASTER_RET super_zoom_put_1plane(int x, int y, int num, unsigned x_rate, unsigned y_rate, int pattern_plane, unsigned put_plane); #endif #if MASTER98 void MASTER_RET super_put_tiny( int x, int y, int num ); void MASTER_RET super_put_tiny_small( int x, int y, int num ); void MASTER_RET super_roll_put_tiny( int x, int y, int num ); void MASTER_RET super_put_tiny_vrev( int x, int y, int num ); void MASTER_RET super_put_tiny_small_vrev( int x, int y, int num ); #endif #if MASTERV void MASTER_RET vga4_super_zoom(int x, int y, int num, int zoom); void MASTER_RET vga4_super_zoom_put(int x, int y, int num, unsigned x_rate, int y_rate); # if !MASTER98 /* DOS/Vでは super_*_tinyは無効 */ # define super_zoom(x,y,n,z) vga4_super_zoom(x,y,n,z) # define super_zoom_put(x,y,num,xr,yr) vga4_super_zoom_put(x,y,num,xr,yr) # define super_put_tiny(x,y,n) super_put(x,y,n) # define super_put_tiny_small(x,y,n) super_put(x,y,n) # define super_roll_put_tiny(x,y,n) super_roll_put(x,y,n) # define super_put_tiny_vrev(x,y,n) super_put_vrev(x,y,n) # define super_put_tiny_small_vrev(x,y,n) super_put_vrev(x,y,n) # endif #endif extern unsigned virtual_seg; #if MASTER98 int MASTER_RET virtual_copy(void); void MASTER_RET virtual_repair(int x, int y, int num); void MASTER_RET virtual_vram_copy(void); #endif #if MASTERV int MASTER_RET vga4_virtual_copy(void); void MASTER_RET vga4_virtual_repair(int x, int y, int num); void MASTER_RET vga4_virtual_vram_copy(void); # if !MASTER98 # define virtual_copy() vga4_virtual_copy() # define virtual_repair(x,y,num) vga4_virtual_repair(x,y,num) # define virtual_vram_copy() vga4_virtual_vram_copy() # endif #endif void MASTER_RET virtual_over_put_8(int x, int y, int num); void MASTER_RET virtual_free(void); #if MASTER98 void MASTER_RET super_wave_put(int x, int y, int num, int len, char amp, int ph); void MASTER_RET super_wave_put_1plane(int x, int y, int num, int len, char amp, int ph, int pattern_plane, unsigned put_plane); void MASTER_RET super_vibra_put(int x, int y, int num, int len, int ph); void MASTER_RET super_vibra_put_1plane(int x, int y, int num, int len, int ph, int pattern_plane, unsigned put_plane); void MASTER_RET super_zoom_v_put(int x, int y, int num, unsigned y_rate); void MASTER_RET super_zoom_v_put_1plane(int x, int y, int num, unsigned rate, int pattern_plane, unsigned put_plane); void MASTER_RET over_dot_8(int x, int y); void MASTER_RET over_blk16_8(int x, int y); #endif #if MASTERV void MASTER_RET vga4_super_wave_put(int x, int y, int num, int len, char amp, int ph); void MASTER_RET vga4_super_vibra_put(int x, int y, int num, int len, int ph); void MASTER_RET vga4_super_wave_put_1plane(int x, int y, int num, int len, char amp, int ph, int pattern_plane, unsigned put_plane); void MASTER_RET vga4_super_zoom_v_put_1plane(int x, int y, int num, unsigned rate, int pattern_plane, unsigned put_plane); #if !MASTER98 # define super_wave_put(x,y,num,len,amp,ph) vga4_super_wave_put(x,y,num,len,amp,ph) # define super_wave_put_1plane(x,y,num,len,amp,ph,pat,put) vga4_super_wave_put_1plane(x,y,num,len,amp,ph,pat,put) # define super_vibra_put(x,y,num,len,ph) vga4_super_vibra_put(x,y,num,len,ph) # define super_vibra_put_1plane(x,y,num,len,ph,pat,put) super_put_1plane(x,y,num,pat,put) # define super_zoom_v_put(x,y,num,yrate) super_zoom_put(x,y,num,256,yrate) # define super_zoom_v_put_1plane(x,y,num,rate,pat,put) vga4_super_zoom_v_put_1plane(x,y,num,rate,pat,put) # define over_dot_8(x,y) vgc_setcolor(VGA_PSET,0),\ (*(char far *)MK_FP(graph_VramSeg,(y)*graph_VramWidth+(x)/8)='\xff') # define over_blk16_8(x,y) vgc_setcolor(VGA_PSET,0),vgc_byteboxfill_x_pset((x),y,(x)+1,(y)+15) #endif #endif /* EGCによるスクロール -----------------------------------------------------*/ /* 出典: egc.h 0.06 */ #if MASTER98 void MASTER_RET egc_shift_down(int x1, int y1, int x2, int y2, int dots); void MASTER_RET egc_shift_down_all(int dots); void MASTER_RET egc_scroll_left(int dots); void MASTER_RET egc_shift_left(int x1, int y1, int x2, int y2, int dots); void MASTER_RET egc_shift_left_all(int dots); void MASTER_RET egc_scroll_right(int dots); void MASTER_RET egc_shift_right(int x1, int y1, int x2, int y2, int dots); void MASTER_RET egc_shift_right_all(int dots); void MASTER_RET egc_shift_up(int x1, int y1, int x2, int y2, int dots); void MASTER_RET egc_shift_up_all(int dots); #endif #if MASTERV # if !MASTER98 # define egc_shift_down_all(dots) vga4_byte_move(0,0,graph_VramWidth-1,graph_VramLines-(dots),0,(dots)) # define egc_shift_up_all(dots) vga4_byte_move(0,(dots),graph_VramWidth-1,graph_VramLines-(dots),0,0) # endif #endif /* グラフィック画面への多角形描画処理 --------------------------------------*/ /* 出典: gc_poly.h 0.16 */ /* grcg_setcolor()や vgc_setcolor()に指定するアクセスプレーン指定 */ #define GC_B 0x0e /* 青プレーンをアクセスする */ #define GC_R 0x0d #define GC_BR 0x0c /* : */ #define GC_G 0x0b /* : */ #define GC_BG 0x0a /* : */ #define GC_RG 0x09 #define GC_BRG 0x08 /* : */ #define GC_I 0x07 #define GC_BI 0x06 #define GC_RI 0x05 #define GC_BRI 0x04 #define GC_GI 0x03 #define GC_BGI 0x02 #define GC_RGI 0x01 /* : */ #define GC_BRGI 0x00 /* 全プレーンをアクセスする */ #if MASTER98 /* grcg_setcolor()の modeに設定する値 */ #ifndef GC_OFF # define GC_OFF 0 # define GC_TDW 0x80 /* 書き込みデータは無視して、タイルレジスタの内容を書く */ # define GC_TCR 0x80 /* タイルレジスタと同じ色のビットが立って読み込まれる */ # define GC_RMW 0xc0 /* 書き込みビットが立っているドットにタイルレジスタから書く */ #endif #define EGC_ACTIVEPLANEREG 0x04a0 #define EGC_READPLANEREG 0x04a2 #define EGC_MODE_ROP_REG 0x04a4 #define EGC_FGCOLORREG 0x04a6 #define EGC_MASKREG 0x04a8 #define EGC_BGCOLORREG 0x04aa #define EGC_ADDRRESSREG 0x04ac #define EGC_BITLENGTHREG 0x04ae #define EGC_COMPAREREAD 0x2000 #define EGC_WS_PATREG 0x1000 /* WS = write source */ #define EGC_WS_ROP 0x0800 /* parren reg, ans of rop, cpu data */ #define EGC_WS_CPU 0x0000 #define EGC_SHIFT_CPU 0x0400 /* input to shifter */ #define EGC_SHIFT_VRAM 0x0000 /* cpu write, vram read */ #define EGC_RL_MEMWRITE 0x0200 /* RL = pattern Register Load */ #define EGC_RL_MEMREAD 0x0100 /* ^at mem write, <-at mem read */ #define EGC_RL_NONE 0x0000 /* no touch */ #define GDC_PSET 0x000 #define GDC_XOR 0x100 #define GDC_AND 0x200 #define GDC_OR 0x300 #define GRAM_400 0xa800 #define GRAM_200A 0xa800 #define GRAM_200B 0xabe8 #endif typedef struct Point3D Point3D ; struct Point3D { int x, y, z ; } ; typedef struct Rotate3D Rotate3D ; struct Rotate3D { int rx, ry, rz ; } ; extern const int ClipXL,ClipXW,ClipXR, ClipYT,ClipYH,ClipYB ; extern const int ClipZH,ClipZD,ClipZY ; extern unsigned ClipYT_seg, ClipYB_adr ; extern unsigned near trapez_a[], near trapez_b[] ; extern const long SolidTile[16] ; extern unsigned GDC_LineStyle ; #if MASTER98 extern int GDCUsed ; extern int GDC_Color, GDC_AccessMask ; #endif #if MASTER98 # ifdef grcg_off # undef grcg_off /* 関数定義をするので、変換されるとまずい */ # endif #endif /* 設定 */ int MASTER_RET grc_setclip( int xl, int yt, int xr, int yb ); #define grc_setGRamStart(s) (graph_VramSeg = (s)) void MASTER_RET c_make_linework( void near * trapez, int xt, int xb, int ylen ); /* 多角形 */ int MASTER_RET grc_clip_polygon_n( Point MASTER_PTR * dest, int ndest, const Point MASTER_PTR * src, int nsrc ); /* 直線 */ int MASTER_RET grc_clip_line( Point MASTER_PTR * p1, Point MASTER_PTR * p2 ); #if MASTER98 void MASTER_RET c_draw_trapezoid( unsigned y, unsigned y2 ); void MASTER_RET c_draw_trapezoidx( unsigned y, unsigned y2 ); void MASTER_RET grcg_setcolor( int mode, int color ); void MASTER_RET grcg_settile_1line( int mode, long tile ); void MASTER_RET grcg_and( int mode, int color ); void MASTER_RET grcg_or( int mode, int color ); void MASTER_RET grcg_off(void); # define grcg_setmode(mode) OUTB(0x7c,mode) # define grcg_off() OUTB(0x7c,0) /* EGC */ void MASTER_RET egc_on(void); void MASTER_RET egc_off(void); void MASTER_RET egc_start(void); void MASTER_RET egc_end(void); #define egc_setfgcolor(color) OUTW(EGC_FGCOLORREG,color) #define egc_setbgcolor(color) OUTW(EGC_BGCOLORREG,color) #define egc_selectfg() OUTW(EGC_READPLANEREG,0x40ff) #define egc_selectbg() OUTW(EGC_READPLANEREG,0x20ff) #define egc_selectpat() OUTW(EGC_READPLANEREG,0x00ff) #define egc_setrop(mode_rop) OUTW(EGC_MODE_ROP_REG,mode_rop) #define has_egc() (*((char far *)0x0000054dL) & 0x40) /* GDC */ void MASTER_RET gdc_wait(void); void MASTER_RET gdc_waitempty(void); void MASTER_RET gdc_line( int x1,int y1,int x2,int y2 ); void MASTER_RET gdc_circle( int x, int y, unsigned r ); #define gdc_setlinestyle(style) (GDC_LineStyle = (style)) #define gdc_setcolor(color) (GDC_Color = (color)) #define gdc_setaccessplane(plane) (GDC_AccessMask = (plane)) /* 台形 */ void MASTER_RET grcg_trapezoid ( int y1, int x11, int x12, int y2, int x21, int x22 ); /* 多角形 */ void MASTER_RET grcg_polygon_c( const Point MASTER_PTR * pts, int npoint ); void MASTER_RET grcg_polygon_cx( const Point MASTER_PTR * pts, int npoint ); void grcg_polygon_vcx( int npoint, int x1, int y1, ... ); /* 三角形 */ void MASTER_RET grcg_triangle( int x1,int y1, int x2,int y2, int x3,int y3 ); void MASTER_RET grcg_triangle_x( const Point MASTER_PTR * pts ); /* 直線 */ void MASTER_RET grcg_hline( int x1, int x2, int y ); void MASTER_RET grcg_vline( int x, int y1, int y2 ); void MASTER_RET grcg_line( int x1, int y1, int x2, int y2 ); void MASTER_RET grcg_thick_line( int x1, int y1, int x2, int y2, unsigned wid, unsigned hei ); /* 四角形塗りつぶし */ void MASTER_RET grcg_boxfill( int x1, int y1, int x2, int y2 ); void MASTER_RET grcg_pset( int x, int y ); void MASTER_RET grcg_fill(void); void MASTER_RET grcg_round_boxfill( int x1, int y1, int x2, int y2, unsigned r ); /* 円描画 */ void MASTER_RET grcg_circle( int x, int y, unsigned r ); void MASTER_RET grcg_circle_x( int x, int y, unsigned r ); void MASTER_RET grcg_circlefill( int x, int y, unsigned r ); /* 8dot単位の箱塗り */ void MASTER_RET grcg_byteboxfill_x( int x1, int y1, int x2, int y2 ); void MASTER_RET grcg_bytemesh_x( int x1, int y1, int x2, int y2 ); #endif /* VGA16色グラフィック処理 -------------------------------------------------*/ /* "vgapoly" * (c)恋塚, あら */ #if MASTERV #define VGA_PSET 0x00f0 #define VGA_AND 0x08f0 #define VGA_OR 0x10f0 #define VGA_XOR 0x18f0 void MASTER_RET vgc_setcolor(int mask,int color); void MASTER_RET vgc_hline(int x1,int x2,int y); void MASTER_RET vgc_vline(int x,int y1,int y2); void MASTER_RET vgc_line(int x1,int y1,int x2,int y2); void MASTER_RET vgc_line2(int x1,int y1,int x2,int y2,unsigned lstyle); void MASTER_RET vgc_thick_line( int x1, int y1, int x2, int y2, unsigned wid, unsigned hei ); void MASTER_RET vgc_boxfill(int x1,int y1,int x2,int y2); void MASTER_RET vgc_pset(int x,int y); void MASTER_RET vgc_round_boxfill( int x1, int y1, int x2, int y2, unsigned r ); void MASTER_RET vgc_trapezoid( int y1, int x11, int x12, int y2, int x21, int x22 ); void MASTER_RET vgc_polygon_c( const Point MASTER_PTR * pts, int npoint ); void MASTER_RET vgc_polygon_cx( const Point MASTER_PTR * pts, int npoint ); void vgc_polygon_vcx( int npoint, int x1, int y1, ... ); void MASTER_RET vgc_triangle( int x1,int y1, int x2,int y2, int x3,int y3 ); void MASTER_RET vgc_circle_x( int x, int y, int r ); void MASTER_RET vgc_circle( int x, int y, int r ); void MASTER_RET vgc_circlefill( int x, int y, int r ); void MASTER_RET vgc_byteboxfill_x(int x1,int y1,int x2,int y2); void MASTER_RET vgc_byteboxfill_x_pset(int x1,int y1,int x2,int y2); void MASTER_RET vgc_bytemesh_x(int x1,int y1,int x2,int y2); void MASTER_RET vgc_font_puts(int x, int y, int step, const char MASTER_PTR * str ); void MASTER_RET vgc_font_put(int x, int y, const char MASTER_PTR * str ); void MASTER_RET vgc_bfnt_puts(int x, int y, int step, const char MASTER_PTR * str ); void MASTER_RET vgc_bfnt_putc(int x, int y, int ank ); void MASTER_RET vgc_kanji_puts(int x, int y, int step, const char MASTER_PTR * kanji ); void MASTER_RET vgc_kanji_putc(int x, int y, unsigned kanji ); #define VGA_PORT 0x03ce #define VGA_SET_RESET_REG 0 /* setcolor */ #define VGA_ENABLE_SR_REG 1 #define VGA_COLOR_CMP_REG 2 #define VGA_DATA_ROT_REG 3 /* setcolor */ #define VGA_READPLANE_REG 4 /* ←readplaneは下位2bitにプレーン番号を書く */ #define VGA_MODE_REG 5 /* setcolorでVGA_CHARに設定される */ #define VGA_MULTI_REG 6 /* setcolorでVGA_CHARに設定される */ #define VGA_DISABLECMP 7 /* setcolorでVGA_CHARに設定される */ #define VGA_BITMASK_REG 8 /* setcolorで0ffhに設定される */ /* VGA_MODE_REGレジスタに設定する内容 */ #define VGA_READPLANE 0 /* readmap選択regの場所をそのまま読む */ #define VGA_COMPARE 8 /* 読み込み時色比較レジスタと一致したらbit on */ #define VGA_NORMAL 0 /* GCのモード */ #define VGA_LATCH 1 #define VGA_FILL 2 #define VGA_CHAR 3 #if !MASTER98 #define GC_RMW 0 #define GC_OFF 0 #define grcg_or(m,col) vgc_setcolor((m) | VGA_OR,(col)) #define grcg_and(m,col) vgc_setcolor((m) | VGA_AND,(col)) #define grcg_settile_1line(m,l) /* むむっ */ #define grcg_setcolor(m,col) vgc_setcolor((m) | VGA_PSET,(col)) #define grcg_off() (void)0/* 消す */ #define grcg_trapezoid(y1,x11,x12,y2,x21,x22) vgc_trapezoid(y1,x11,x12,y2,x21,x22) #define grcg_polygon_c(pts,np) vgc_polygon_c(pts,np) #define grcg_polygon_cx(pts,np) vgc_polygon_cx(pts,np) #define grcg_polygon_vcx vgc_polygon_vcx #define grcg_triangle(x1,y1,x2,y2,x3,y3) vgc_triangle(x1,y1,x2,y2,x3,y3) #define grcg_triangle_x(pts) vgc_polygon_cx(pts,3) /* ? */ #define grcg_hline(x1,x2,y) vgc_hline(x1,x2,y) #define grcg_vline(x,y1,y2) vgc_vline(x,y1,y2) #define grcg_line(x1,y1,x2,y2) vgc_line(x1,y1,x2,y2) #define grcg_thick_line(x1,y1,x2,y2,wid,hei) vgc_thick_line(x1,y1,x2,y2,wid,hei) #define grcg_boxfill(x1,y1,x2,y2) vgc_boxfill(x1,y1,x2,y2) #define grcg_pset(x,y) vgc_pset(x,y) #define grcg_fill() vgc_boxfill(ClipXL,ClipYT,ClipXR,ClipYB) /* ? */ #define grcg_round_boxfill(x1,y1,x2,y2,r) vgc_round_boxfill(x1,y1,x2,y2,r) #define grcg_circle(x,y,r) vgc_circle(x,y,r) #define grcg_circle_x(x,y,r) vgc_circle_x(x,y,r) #define grcg_circlefill(x,y,r) vgc_circlefill(x,y,r) #define grcg_byteboxfill_x(x1,y1,x2,y2) vgc_byteboxfill_x_pset(x1,y1,x2,y2) #define grcg_bytemesh_x(x1,y1,x2,y2) vgc_bytemesh_x(x1,y1,x2,y2) #define GDC_PSET VGA_PSET #define GDC_XOR VGA_XOR #define GDC_AND VGA_AND #define GDC_OR VGA_OR #define SEQ_PORT 0x3c4 #define SEQ_MAP_MASK_REG 2 #define gdc_waitempty() (void)0 #define gdc_wait() (void)0 #define gdc_line(x1,y1,x2,y2) vgc_line2(x1,y1,x2,y2,GDC_LineStyle) #define gdc_circle(x,y,r) vgc_circle(x,y,r) #define gdc_setlinestyle(style) (GDC_LineStyle = (style)) #define gdc_setcolor(color) vgc_setcolor((color) & ~15, (color)&15) #define gdc_setaccessplane(plane) OUTW(SEQ_PORT,SEQ_MAP_MASK_REG|(((~(plane))&15)<<8)) #define GRAM_400 0xa000 #define GRAM_200A 0xa000 #define GRAM_200B 0xa3e8 /* ? */ #endif #endif /* BEEP音による演奏処理 ----------------------------------------------------*/ /* 出典: bgmlib.h (C) femy, steelman */ #define BGM_STAT_PLAY 1 /* リターンコード */ #define BGM_STAT_MUTE 0 #define BGM_STAT_REPT 1 #define BGM_STAT_1TIM 0 #define BGM_STAT_ON 1 #define BGM_STAT_OFF 0 #define BGM_MES_ON 1 /* パラメータ */ #define BGM_MES_OFF 0 #define BGM_MUSIC 1 #define BGM_SOUND 2 #define BGM_COMPLETE NoError /* エラーナンバー */ #define BGM_FILE_ERR FileNotFound #define BGM_FORMAT_ERR InvalidFormat #define BGM_OVERFLOW InsufficientMemory #define BGM_TOOMANY InvalidData #define BGM_NO_MUSIC InvalidData #define BGM_NOT_PLAY GeneralFailure #define BGM_NOT_STOP GeneralFailure #define BGM_EXTENT_ERR InvalidData #define BGM_PART_MAX 3 #define BGM_SOUND_MAX 16 #define BGM_MUSIC_MAX 16 typedef struct BSTAT BSTAT ; /* ステータス構造体 */ struct BSTAT { int music; /* 演奏処理 ON/OFF */ int sound; /* 効果音処理 ON/OFF */ int play; /* 演奏中か否か */ int effect; /* 効果音出力中か否か */ int repeat; /* リピート演奏か否か */ int mnum; /* 登録曲数 */ int rnum; /* セレクト中曲番号 */ int tempo; /* 現在のテンポ */ int snum; /* 登録効果音数 */ int fnum; /* セレクト中効果音番号 */ } ; typedef struct BGM_GLB BGM_GLB; struct BGM_GLB { /* グローバルデータ構造体 */ int imr; /* インターラプト・マスク・レジスタ */ unsigned int tval; /* タイマ設定値 */ int tp; /* テンポ */ int rflg; /* BGM ON/OFF */ int pnum; /* パート数 */ int pcnt; /* パートカウンタ */ int fin; /* パート終了フラグ */ int rep; /* リピート ON/OFF */ int tcnt; /* 処理カウンタ(4回に 1回処理 */ int bufsiz; /* 楽譜バッファのサイズ */ int buflast; /* 楽譜バッファのラスト */ int mnum; /* 登録曲数 */ int mcnt; /* セレクト中曲番号 */ int track[BGM_MUSIC_MAX]; /* 曲のトラックナンバー */ int mask; /* パートマスク情報 */ int mtp[BGM_MUSIC_MAX]; /* 曲ごとのテンポ情報 */ int effect; /* 効果音 ON/OFF */ int snum; /* 登録効果音数 */ int scnt; /* セレクト中効果音番号 */ int music; /* 演奏処理 ON/OFF */ int sound; /* 効果音処理 ON/OFF */ int init; /* イニシャライズ実行フラグ */ unsigned long clockbase; /* tempo120時のタイマカウント */ }; typedef struct BGM_PART BGM_PART; struct BGM_PART { /* パート構造体 */ unsigned char far *ptr; /* 楽譜ポインタ */ unsigned char far *mbuf; /* 楽譜バッファ */ char note; /* 現在の音符 */ char _dummy; int oct; /* 現在のオクターブ */ int len; /* 現在の音長 */ int dflen; /* デフォルトの音長 */ int lcnt; /* 音長カウンタ */ int mask; /* パートマスク ON/OFF */ int tnt; /* テヌート ON/OFF */ }; typedef struct BGM_ESOUND BGM_ESOUND; struct BGM_ESOUND { /* 効果音構造体 */ unsigned int far *sptr; /* 効果音データポインタ */ unsigned int far *sbuf; /* 効果音データバッファ */ }; extern BGM_GLB bgm_glb; extern BGM_PART bgm_part[BGM_PART_MAX]; extern BGM_ESOUND bgm_esound[BGM_SOUND_MAX]; int MASTER_RET bgm_init(int bufsiz); void MASTER_RET bgm_finish(void); #define bgm_start(b) bgm_init(b) #define bgm_end() bgm_finish() int MASTER_RET bgm_read_data(const char MASTER_PTR *fname, int tempo, int mes); int MASTER_RET bgm_select_music(int num); int MASTER_RET bgm_start_play(void); int MASTER_RET bgm_stop_play(void); int MASTER_RET bgm_cont_play(void); int MASTER_RET bgm_wait_play(void); int MASTER_RET bgm_read_sdata(const char MASTER_PTR *fname); int MASTER_RET bgm_sound(int num); int MASTER_RET bgm_stop_sound(void); int MASTER_RET bgm_wait_sound(void); void MASTER_RET bgm_repeat_on(void); void MASTER_RET bgm_repeat_off(void); int MASTER_RET bgm_set_tempo(int tempo); void MASTER_RET bgm_set_mode(int mode); void MASTER_RET bgm_read_status(BSTAT MASTER_PTR *bsp); /* 日本語FEP制御 -----------------------------------------------------------*/ #define FEP_IAS 1 /* fep_exist() */ #define FEP_MSKANJI 2 /* fep_exist() */ int MASTER_RET fep_exist(void); int MASTER_RET fep_shown(void); void MASTER_RET fep_show(void); void MASTER_RET fep_hide(void); /* 数値計算関連 ------------------------------------------------------------*/ extern const short SinTable8[256], CosTable8[256] ; extern const char AtanTable8[256] ; extern const short SinTableDeg[360], CosTableDeg[360] ; extern const char AtanTableDeg[360] ; extern long random_seed ; #define Sin8(t) SinTable8[(t) & 0xff] #define Cos8(t) CosTable8[(t) & 0xff] #define Atan8(t) AtanTable8[t] #define SinDeg(t) (SinTableDeg[t]) #define CosDeg(t) (CosTableDeg[t]) #define AtanDeg(t) (AtanTableDeg[t]) int MASTER_RET iatan2( int y, int x ); int MASTER_RET iatan2deg( int y, int x ); int MASTER_RET isqrt( long x ); int MASTER_RET ihypot( int x, int y ); #define irand_init(seed) (random_seed = (seed)) int MASTER_RET irand(void); #define srand(s) irand_init(s) #define rand() irand() /* パックファイル処理 ------------------------------------------------------*/ /* 出典: pf.h (C) iR, alty */ #define __PF_H typedef unsigned bf_t; /* BFILE構造体のセグメント */ typedef unsigned pf_t; /* PFILE構造体のセグメント */ /* エラー情報 */ extern enum pferr { PFEZERO, /* 初期値 */ PFENOTOPEN, /* ファイルをオープンできない */ PFENOTFOUND, /* ファイルがパックファイル中にない */ PFENOMEM, /* メモリを確保できない */ PFERESERVE0, /* 予約 */ PFEUNKNOWN, /* 圧縮タイプが不正 */ #define PFEILTYPE PFEUNKNOWN PFEILPFILE, /* パックファイルがpar形式でない */ PFEILEXE, /* EXEファイルが不正 */ PFEINTERNAL = 0xff /* 内部エラー */ } pferrno; extern unsigned bbufsiz; /* バッファサイズ */ #define BBUFSIZ 512 #define pfbufsiz bbufsiz extern unsigned char pfkey; /* 復号化キー */ bf_t MASTER_RET bopenr(const char *fname); void MASTER_RET bcloser(bf_t bf); int MASTER_RET bgetc(bf_t bf); int MASTER_RET bread(void MASTER_PTR *buf, int size, bf_t bf); int MASTER_RET bseek(bf_t bf, long offset); int MASTER_RET bseek_(bf_t bf, long offset, int whence); bf_t MASTER_RET bopenw(const char MASTER_PTR *fname); void MASTER_RET bclosew(bf_t bf); int MASTER_RET bputc(int c, bf_t bf); int MASTER_RET bputw(int w, bf_t bf); int MASTER_RET bputs(const char MASTER_PTR *s, bf_t bf); int MASTER_RET bwrite(const void MASTER_PTR *buf, int size, bf_t bf); int MASTER_RET bflush(bf_t bf); bf_t MASTER_RET bdopen(int handle); #define bdopenr bdopen #define bdopenw bdopen #define bsetbufsiz(bufsiz) (bbufsiz = (bufsiz)) pf_t MASTER_RET pfopen(const char MASTER_PTR *parfile, const char far *file); #define pfopenr pfopen void MASTER_RET pfclose(pf_t pf); #define pfcloser pfclose int MASTER_RET pfgetc(pf_t pf); int MASTER_RET pfgetw(pf_t pf); unsigned MASTER_RET pfread(void far *buf, unsigned size, pf_t pf); unsigned long MASTER_RET pfseek(pf_t pf, unsigned long offset); #define pftell(pf) pfseek(pf,0) void MASTER_RET pfrewind(pf_t pf); #define pfsetbufsiz(bufsiz) bsetbufsiz(bufsiz) void MASTER_RET pfstart(const char MASTER_PTR *parfile); void MASTER_RET pfend(void); #define pfinit pfstart #define pfterm pfend #ifdef __cplusplus } #endif #endif