home *** CD-ROM | disk | FTP | other *** search
/ Power Programming / powerprogramming1994.iso / progtool / pascal / tpas2msc.arc / TURBO.H < prev   
Text File  |  1987-12-01  |  15KB  |  458 lines

  1.  
  2.  /*
  3.   *
  4.   *    Turbo Pascal To C Translator.
  5.   *    Standard Include File.
  6.   *
  7.   * Glockenspiel Ltd. Dublin. Ireland.
  8.   *
  9.   */
  10.  
  11. typedef char T2C_string_type[256];
  12.  
  13. #include <malloc.h>
  14.  
  15.  
  16. #ifndef FALSE
  17. #define        TRUE    1
  18. #endif
  19. #ifndef FALSE
  20. #define        FALSE    0
  21. #endif
  22. #define     T2C_PI  (3.1415926536)
  23. #define     NIL     ((char *)0)
  24.  
  25. #ifndef NULL
  26. #define NULL ((char *)0)
  27. #endif
  28.  
  29. #include     <string.h>
  30.  
  31. #define  T2CA_str_assign(x,y)    strcpy((x),(y))
  32. #define     T2CA_arr_assign(x,y,s)    memcpy((x),(y),(s))
  33. #define  T2C_ORD(x)    ((int)(x))
  34. #define  T2C_SUCC(x)    (1+(x))
  35. #define  T2C_PRED(x)    ((x)-1)
  36. #define  T2C_PRED_BOOL(x)    (!(x))
  37. #define  T2C_CHR(x)    ((char)(x))
  38. #define     T2C_LENGTH(x)    ((int)strlen(x))
  39. #define  T2C_LONG_PTR(x,y) ((((unsigned long)(x))<<4L) + (unsigned long)(y))
  40. #define  INIT_STR_PASS_BY_VALUE char * Tpbv_ptr
  41. #define  STR_PASS_BY_VALUE(x,y) Tpbv_ptr=alloca(y);x=strcpy(Tpbv_ptr,x)
  42. #define  SET_PASS_BY_VALUE(x)   Tpbv_ptr=alloca(32);x=memcpy(Tpbv_ptr,x,32)
  43.  
  44.  
  45. typedef int bool;
  46. typedef unsigned char byte;
  47.  
  48. typedef struct file_info {
  49.     char file_name[30];
  50.     FILE * file_ptr;
  51.     int blocksize;
  52.     int rec_size;
  53.     } FILE_INFO, *PTR_FILE;
  54.  
  55. FILE_INFO T2C_KBD = { "KBD",stdin,1,1};
  56. FILE_INFO T2C_CON = { "CON",stdout,1,1};
  57. FILE_INFO T2C_TRM = { "TRM",stdout,1,1};
  58. FILE_INFO T2C_USR = { "USR",stdout,1,1};
  59. FILE_INFO T2C_AUX = { "AUX",stdaux,1,1};
  60. FILE_INFO T2C_LST = { "LST",stdprn,1,1};
  61.  
  62.  
  63. /*
  64.  * TURBO PASCAL CONSTANT DEFINITIONS 
  65.  *
  66.  */
  67. #define MAXINT 32767
  68. #define Black    0
  69. #define Blue    1
  70. #define Green    2
  71. #define Cyan     3
  72. #define Red     4
  73. #define Magenta    5
  74. #define Brown    6
  75. #define LightGray 7
  76. #define DarkGray    8
  77. #define LightBlue    9
  78. #define LightGreen    10
  79. #define LightCyan    11
  80. #define LightRed    12
  81. #define LightMagenta    13
  82. #define    Yellow        14
  83. #define White        15
  84.  
  85. #define North        0
  86. #define East        90
  87. #define West        270
  88. #define South        180
  89.  
  90. /*
  91.  *   Used to emulate { $I+ } and {$C+ } directives.
  92.  */
  93. extern int IFLAG;
  94. extern int CFLAG;
  95.  
  96. #define CHAR_TYPE    0
  97. #define STRING_TYPE    1
  98.  
  99.  /*
  100.   * Header info. for Turbo Pascal Emulation ( set handling ( internal ) )
  101.   *
  102.   * Anthony Phillips,
  103.   * Glockenspiel Ltd. Dublin. Ireland.
  104.   *
  105.   */
  106.  
  107. typedef unsigned char   set[32];
  108. typedef unsigned char * TURBOSET;
  109. typedef int boolean;
  110.  
  111.  
  112. #define  SETEND   -1
  113. #define  SETTO    -2
  114.  
  115. extern  TURBOSET    T2CSOP_tsmake   ();
  116. extern  TURBOSET    T2CSOP_tsunion  ( TURBOSET, TURBOSET );
  117. extern  TURBOSET    T2CSOP_tsdiff   ( TURBOSET, TURBOSET );
  118. extern  TURBOSET    T2CSOP_tsinter  ( TURBOSET, TURBOSET );
  119. extern  TURBOSET    T2CSOP_tsassign ( TURBOSET, TURBOSET );
  120. extern  boolean     T2CSOP_tsincl   ( int,     TURBOSET );
  121. extern  boolean     T2CSOP_tseq     ( TURBOSET, TURBOSET );
  122. extern  boolean     T2CSOP_tsnoteq  ( TURBOSET, TURBOSET );
  123. extern  boolean     T2CSOP_tslesseq ( TURBOSET, TURBOSET );
  124. extern  boolean     T2CSOP_tsgrteq  ( TURBOSET, TURBOSET );
  125.  
  126. extern  void        set_elem ( TURBOSET, int );
  127. extern  void        del_elem ( TURBOSET , int );
  128.  
  129. extern  void        setturboerror( char * );
  130.  
  131. #ifdef DEBUG
  132. extern  void        out_char ( unsigned char );
  133. extern  void        out_set  ( TURBOSET );
  134. #endif
  135.  
  136.  /*
  137.   * Header info. for Turbo Pascal Emulation ( String Handling routines )
  138.   *
  139.   * Anthony Phillips,
  140.   * Glockenspiel Ltd. Dublin. Ireland.
  141.   *
  142.   */
  143.  
  144. extern         void     T2CST_delete  ( char *, int, int );
  145. extern         void    T2CST_insert  ( char *, char *, int );
  146. extern         int      T2CST_length  ( char * );
  147. extern      void    T2CST_R_val   ( char *, double *, int * );
  148. extern      void    T2CST_I_val   ( char *, int *   , int * );
  149. extern         char *  T2CST_copy      ( char *, int, int );
  150. extern      char *  T2CST_concat  ( int, char *, char *, ... );    
  151. extern      int     T2CST_pos     ( char *, char * );
  152.  
  153. extern      char *  T2CS_ch2str    ( char );       /* Puts character in string */
  154. extern      char    T2CS_str2ch    ( char * );      /* Puts string into character */
  155.  
  156. extern      void    strturboerror ( char * );
  157.  
  158.  /*                
  159.   * Header info. for Turbo Pascal Emulation ( Turtle graphics routines )
  160.   *
  161.   * Anthony Phillips,
  162.   * Glockenspiel Ltd. Dublin. Ireland.
  163.   *
  164.   */
  165.  
  166. extern  void     T2CTR_back                ( int );
  167. extern  void    T2CTR_forwd               ( int );
  168. extern  void      T2CTR_setheading          ( int );
  169. extern  void    T2CTR_turnright           ( int );
  170. extern  void     T2CTR_turnleft            ( int ); 
  171. extern  void     T2CTR_home                ();
  172. extern  void     T2CTR_setposition         ( int, int );
  173. extern  void     T2CTR_pendown             ();
  174. extern  void     T2CTR_penup               ();
  175. extern  void     T2CTR_setpencolor         ( int );
  176. extern  int     T2CTR_heading             ();
  177. extern  int     T2CTR_xcor                ();
  178. extern  int     T2CTR_ycor                ();
  179. extern  void    T2CTR_hideturtle          (); 
  180. extern  void    T2CTR_showturtle          (); 
  181. extern  int     T2CTR_turtlethere         (); 
  182. extern  void    T2CTR_wrap                  ();
  183. extern  void    T2CTR_nowrap              ();
  184. extern  void    T2CTR_turtlewindows       ( int, int, int, int );
  185. extern  void    T2CTR_turtledelay         ( int );
  186.  
  187. extern  void    delay               ();
  188. extern  void     grapturboerror      ( char * );
  189.  
  190. extern  void    drawturtle          ();
  191. extern  float   tcos                ( int );
  192. extern  float   tsin                ( int );
  193. extern  int   zone                ();
  194. extern  int   klip                ( int *, int * );
  195.  
  196. extern  struct  VIDEOCONFIG T2CGR_config;
  197. extern  int   Heding;
  198. extern  int   KlipOn;
  199. extern  int   DelayCount;
  200. extern  int   Ton;
  201. extern  int   WrapOn;
  202. extern  int     T2CTR_on; /* Whether turtles being used */
  203.  
  204.  /*
  205.   * Header info. for Turbo Pascal Emulation ( Graphics routines )
  206.   *
  207.   * Anthony Phillips,
  208.   * Glockenspiel Ltd. Dublin. Ireland.
  209.   *
  210.   */
  211.  
  212. /* General definitions    */
  213.  
  214. #ifndef ERRORPOSITION 
  215. #define ERRORPOSITION 0,0
  216. #endif
  217.  
  218. #ifndef OKRETVAL
  219. #define OKRETVAL      0
  220. #endif
  221.  
  222.  
  223. /* Turbo Like definitions. */
  224.  
  225. #define BW40   (0)
  226. #define BW80   (2) 
  227. #define C40    (1)
  228. #define C80    (3)
  229. #define Blink  (0) /* Blinking not allowed */
  230.  
  231. /* Functions to allow TurboPascal Screen Mode Control Emulation. */
  232.  
  233. extern  int     T2CG_textmode            ( int, ... );   /* nothing or int. */
  234. extern  int     T2CG_graphcolormode      ();
  235. extern  int     T2CG_graphics            (); /* Late addition see GRAPH.BIN ( Turbo ) */
  236. extern  int     T2CG_graphmode           ();
  237. extern  int     T2CG_hires               ();
  238. extern  int     T2CG_textcolor           ( int );  
  239. extern  int     T2CG_textbackground      ( int );
  240. extern  int     T2CG_wherex              ();
  241. extern  int     T2CG_wherey              ();
  242. extern  int     T2CG_hirescolor          ( int );
  243. extern  int     T2CG_palette             ( int );
  244. extern  int     T2CG_graphbackground     ( int );
  245. extern  void    T2CG_clearscreen         ();
  246. extern  void     T2CG_setpencolor         ( int );
  247.  
  248. /* Functions to implement Turbo Pascal Window handling Emulation. */
  249.  
  250. extern  void   T2CG_window               ( int, int, int, int );
  251. extern  int  T2CG_graphwindow          ( int, int, int, int );
  252.  
  253. /* Functions to implement Turbo Basic Graphics Emulation routines. */
  254.  
  255. extern  int    T2CG_plot                 ( int, int, int );
  256. extern  int    T2CG_draw                 ( int, int, int, int, int );
  257. extern  void   T2CG_colortable           ( int, int, int, int );
  258. extern  void   T2CG_arc                  ( int, int, int, int, int );
  259. extern  int    T2CG_circle               ( int, int, int, int );
  260. extern  int    T2CG_getpic               ( char *, int, int, int, int );
  261. extern  void   T2CG_putpic               ( char *, int, int );
  262. extern  int    T2CG_getdotcolor          ( int, int );
  263. extern  int    T2CG_fillscreen           ( int );
  264. extern  int    T2CG_fillshape            ( int, int, int, int );
  265. extern  int    T2CG_fillpattern          ( int, int, int, int, int );
  266. extern  void   T2CG_pattern              ( char * );
  267.  
  268. extern  int    setset               ( int );
  269.         
  270. extern  float  tcos                 ( int );
  271. extern  float  tsin                 ( int );
  272. extern  void   grapturboerror       ( char * );
  273.  
  274. /* for possible Turtling */
  275.  
  276. extern  int     T2CTR_on;
  277. extern  void      T2CTR_setheading          ( int );
  278. extern  void    drawturtle          ();
  279.  
  280. /* Global with configuration information */
  281.  
  282. extern  struct  VIDEOCONFIG T2CGR_config;
  283.  
  284.  /*
  285.   * Header info. for Turbo Pascal Emulation ( mathematical routines )
  286.   *
  287.   * Anthony Phillips,
  288.   * Glockenspiel Ltd. Dublin. Ireland.
  289.   *
  290.   */
  291.  
  292. #define TURBO_INTEGER_VAL   (-99)
  293. #define TURBO_REAL_VAL      (-98)
  294. #define TURBO_CHAR_VAL      (-97)
  295. #define TURBO_PARAM_ERROR   (-96)
  296. #define TOLERANCE_VAL       (0.01) /* Tuning down of this value may be */
  297.                                    /* desirable    in some situations.    */
  298.  
  299.  
  300. /* turbo Pascal emulation functions   */
  301. /* Parameter casted to double if nescessary */
  302.  
  303. extern double T2CM_arctan( double );         /* in real/int out real */
  304. extern double T2CM_cos   ( double );         /* in real/int out real */
  305. extern double T2CM_exp   ( double );         /* in real/int out real */
  306. extern double T2CM_frac  ( double );         /* in real/int out real */
  307. extern double T2CM_int   ( double );         /* in real/int out real */
  308. extern double T2CM_ln    ( double );         /* in real/int out real */
  309. extern double T2CM_sin   ( double );         /* in real/int out real */
  310. extern double T2CM_sqrt  ( double );         /* in real/int out real */
  311.  
  312. /* Two versions of same thing */
  313.  
  314. extern int    T2CM_I_abs    ( int );         /* in real/int out real/int */
  315. extern double T2CM_R_abs    ( double );      /* in real/int out real/int */
  316.  
  317. extern int    T2CM_I_sqr    ( int );         /* in real/int out real/int */
  318. extern double T2CM_R_sqr    ( double );      /* in real/int out real/int */
  319.  
  320. extern int    T2CM_I_random ( int );            /* in int out int */
  321. extern double T2CM_R_random ( );         /* in nothing out real  */
  322.  
  323. /* Straight Through functions */
  324.  
  325. extern int    T2CM_odd   ( );        
  326. extern int    T2CM_round ( double );     /* in real out int */
  327. extern int    T2CM_trunc ( double );     /* in real out int */
  328. extern int    T2CM_hi    ( );        /* in int out int  */
  329. extern int    T2CM_lo    ( );        /* in int out int  */
  330. extern void   T2CM_randomize ();         /* in nothing out nothing */      
  331.  
  332. extern        mthTurboError ( char * );
  333.  /*
  334.   * extdec.h
  335.   *
  336.   * C Source Code module for Turbo Pascal Emulation ( Graphics routines )
  337.   *
  338.   * Pauline Hayes,
  339.   * Glockenspiel Ltd. Dublin. Ireland.
  340.   *
  341.   */
  342.  
  343.  
  344.  
  345.  
  346.  
  347.  
  348.  
  349.  
  350.  
  351.  
  352.  
  353.  
  354.  
  355.                                         /* arguments passed to functions    */
  356.                                         /* files.c                            */
  357.                                         /* file structure is a Glockenspiel    */
  358.                                         /* defined structure to hold details*/
  359.                                         /* of a file, name fp etc            */                                        
  360. extern void T2CF_assign();        /* file structure, pointer to string*/
  361. extern void T2CF_rewrite();        /* file structure, int which will be*/
  362. extern void T2CF_reset();        /* 0 or 1 if optional second parm*/
  363.                                         /* var arg which may or may not be    */
  364. /* present its an int if it is         */
  365.  
  366. extern void T2CF_seek();        /* file structure, int        */
  367. extern void T2CF_flush();        /* file structure        */
  368. extern void T2CF_close();        /* file structure        */
  369. extern void T2CF_erase();        /* file structure        */
  370. extern void T2CF_rename();        /* file structure, pointer to string*/
  371. extern int T2CF_eof();            /* file structure        */
  372. extern int T2CF_filepos();        /* file structure        */
  373. extern int T2CF_filesize();        /* file structure        */
  374. extern int T2CF_eoln();            /* file structure        */
  375. extern int T2CF_seekeoln();        /* file structure        */
  376. extern int T2CF_seekeof();        /* file structure        */
  377. extern double T2CF_longfilepos();    /* file structure    */
  378. extern double T2CF_longfilesize();    /* file structure        */
  379. extern void T2CF_longseek();        /* file structure, int         */
  380. extern void T2CF_truncate();        /* file structure        */
  381. extern void T2CF_append();        /* file structure        */
  382. extern void T2CF_blockread();        /* 1.     file structure        */
  383. extern void T2CF_blockwrite();        /* 2.   char *var; could be any var */
  384.                                         /*      transfer starts with first  */
  385. /*      byte must be big enough        */
  386. /* 3.   int no of 128 byte blocks     */
  387. /*      to be transfered            */
  388. /* 4.   short count; 0 or 1 if more */
  389. /* 5.   if one this is * int        */
  390.  
  391. extern void T2CF_chain();                /* file structure*/
  392. extern void T2CF_execute();                /* file structure*/
  393. extern void T2CF_read();    /* file structure , ????????        */
  394. extern void T2CF_write();    /* file structure , ????????        */
  395.                                         /* avail.c                            */
  396. extern int T2CR_memavail();    /* nothing passed int returned        */
  397. extern int T2CR_maxavail();    /* nothing passed int returned        */
  398.  
  399.                                         /* dir.c                            */
  400. extern void T2CD_mkdir();    /* pointer to string passed no ret    */
  401. extern void T2CD_chdir();    /* pointer to string passed no ret    */
  402. extern void T2CD_rmdir();    /* pointer to string passed no ret    */
  403. extern void T2CD_getdir();    /* int, pointer to str passed no ret*/
  404.  
  405.                                         /* kb.c                                */
  406. extern int T2CV_keypressed();    /* nothing passed    */
  407.  
  408.                                         /* misc.c                            */
  409. extern int T2CV_swap();             /* passed int and  rets int    */
  410. extern void T2CV_delay();         /* passed int    */
  411. extern char T2CV_upcase();        /* passed char and returns char    */
  412. extern void T2CV_fillchar();        /* variable of any type, int, char*/
  413. extern void T2CV_move();        /* two variables of any type, int*/
  414.  
  415.                                         /* ofs_seg.c                        */
  416. extern     int     T2CH_ofs();    /* any variable, function etc..        */
  417. extern     int     T2CH_seg();    /* just pass addr or ptr to it        */
  418. extern     int     T2CH_cseg();    /* nothing passed int returned        */
  419. extern     int     T2CH_dseg();    /* nothing passed int returned        */
  420. extern     int    T2CH_sseg();    /* nothing passed int returned        */
  421. extern     char far *T2CH_ptr();    /* 2 ints passed 32 bit ptr returned*/
  422. extern     void    T2CH_intr();    /* int and PAS_REGS * passed        */
  423. extern     void    T2CH_msdos();    /* PAS_REGS * passed                */
  424.                                         /* PAS_REGS defined in ofs_seg.h    */
  425.  
  426.                                         /* screen.c                            */
  427. extern     void    T2CSCR_clreol();        /* nothing passed    */
  428. extern     void    T2CSCR_clrscr();        /* nothing passed     */
  429. extern     void    T2CSCR_clrinit();        /* nothing passed     */
  430. extern     void    T2CSCR_clrexit();        /* nothing passed     */
  431. extern     void    T2CSCR_gotoxy();        /* nothing passed     */
  432. extern     void    T2CSCR_highvideo();        /* nothing passed     */
  433. extern     void    T2CSCR_normvideo();        /* nothing passed     */
  434. extern     void    T2CSCR_lowvideo();        /* nothing passed     */
  435. extern     void    T2CSCR_insline();        /* nothing passed     */
  436. extern     void    T2CSCR_delline();        /* nothing passed     */
  437.  
  438.                                         /* sound.c                            */
  439. extern     void    T2CV_sound();            /* int passed        */
  440. extern     void    T2CV_nosound();            /* nothing passed     */
  441.  
  442.                                         /* hndl_io.c                        */
  443. extern    int        T2CF_ioresult();        /* nothing passed*/
  444.  
  445.                                         /* mem.c                            */
  446. extern void T2CR_getmem();            /* ptr to ptr , int    */
  447. extern void T2CR_freemem();            /* ptr to ptr , int    */
  448.  
  449.                                         /* always.c                            */
  450. extern void T2C_setup_delay();            
  451.  
  452.     
  453. /* Global variables available to TURBO */
  454. int conoutptr;                
  455.  
  456. extern T2C_change_strlen();
  457. extern unsigned long T2C_ptol();
  458.