home *** CD-ROM | disk | FTP | other *** search
/ The Atari Compendium / The Atari Compendium (Toad Computers) (1994).iso / files / prgtools / gnustuff / tos / updates / update14.zoo / gemlib / diffs next >
Encoding:
Text File  |  1992-01-15  |  18.7 KB  |  676 lines

  1. *** 1.13    1991/09/24 17:16:49
  2. --- Changelog    1992/01/14 19:34:26
  3. ***************
  4. *** 225,227 ****
  5. --- 225,256 ----
  6.        handle char code > 127. make sure they are not sign extended
  7.        while copying into intin, by cast'ing to (unsigned char), in
  8.        v_gtext() and v_justified() and vqt_extent(). thanks Markus.
  9. + ------------------------------- Patchlevel 19------------------------
  10. + vdibind.h, mincl, vdifsm.c:: ++jrb
  11. +     sync with ataris new release of fsmgdos
  12. + vdibind.h, vdibez.c:: ++jrb
  13. +     new file. bindings for bezier curves.
  14. + vdibind.h vdiqgdos.c:: ++jrb
  15. +     vq_vgdos(): return unsigned long. fix proto and inline def in
  16. +     vdibind.h too
  17. + vdifsm.c, vdibind.h:: michal
  18. +     michal corrected and added missing bindings. Thnaks very
  19. +     much.
  20. + vdibez.c, vdibind.h, mincl:: michal
  21. +     michal corrected almost the whole file.
  22. + vdictrl1.c:: markus nick
  23. +     fix to v_opnvwk() bindings. was'mt passing old value of handle.
  24. +     thanks markus.
  25. +  MUCH THANKS to Michal Jaegermann who has been very carefully
  26. + correcting and baby sitting these bindings. He has made very
  27. + significant contributions, and lively discussions and comments.
  28. + ------------------------------- Patchlevel 20------------------------
  29. *** 1.6    1991/09/06 02:10:31
  30. --- mincl    1992/01/14 19:34:31
  31. ***************
  32. *** 59,67 ****
  33.         vsc_expo.o v_meta_e.o v_write_.o vm_pages.o vm_coord.o \
  34.         vm_filen.o v_escape.o 
  35.   
  36. ! VDIFSM = v_shtext.o vst_arbp.o vqt_adva.o vqt_devi.o v_saveca.o \
  37.        v_loadca.o v_flushc.o vst_sets.o vst_skew.o vqt_get_.o \
  38. !      vqt_cach.o 
  39.   
  40.   VDIGDP = v_bar.o    v_arc.o  v_piesli.o v_circle.o v_ellarc.o \
  41.        v_ellpie.o v_ellips.o v_rbox.o v_rfbox.o  v_justif.o 
  42. --- 59,68 ----
  43.         vsc_expo.o v_meta_e.o v_write_.o vm_pages.o vm_coord.o \
  44.         vm_filen.o v_escape.o 
  45.   
  46. ! VDIFSM = vqt_fext.o v_ftext.o v_killou.o v_getout.o vst_scra.o vst_erro.o \
  47. !      v_shtext.o vst_arbp.o vqt_adva.o vqt_devi.o v_saveca.o \
  48.        v_loadca.o v_flushc.o vst_sets.o vst_skew.o vqt_get_.o \
  49. !      vqt_cach.o v_getbit.o
  50.   
  51.   VDIGDP = v_bar.o    v_arc.o  v_piesli.o v_circle.o v_ellarc.o \
  52.        v_ellpie.o v_ellips.o v_rbox.o v_rfbox.o  v_justif.o 
  53. ***************
  54. *** 82,92 ****
  55.   
  56.   VDIRAS = vro_cpyf.o vrt_cpyf.o vr_trnfm.o v_get_pi.o 
  57.   
  58.   AESALL = $(AESAPPL) $(AESCRAP) $(AESEVNT) $(AESFORMS) $(AESFSEL) $(AESGRAF) \
  59.    $(AESHELL) $(AESMENU) $(AESOBJ) $(AESRC) $(AESRSRC) $(AESWIN) 
  60.   
  61.   VDIALL = $(VDIATRIB) $(VDICTRL1) $(VDICTRL2) $(VDIESC) $(VDIESC1) $(VDIFSM) \
  62. !  $(VDIGDP) $(VDIINP) $(VDIINQ) $(VDIOUT) $(VDIQGDOS) $(VDIRAS) 
  63.   
  64.   
  65.   COMOBJ = common.o ident.o
  66. --- 83,97 ----
  67.   
  68.   VDIRAS = vro_cpyf.o vrt_cpyf.o vr_trnfm.o v_get_pi.o 
  69.   
  70. + # Use first line for VDIBEZ when !defined(ALTERNATE) else use second line:
  71. + # VDIBEZ = v_set_ap.o v_bez_on.o v_bez_of.o v_bez.o v_bez_fi.o v_bez_qu.o
  72. + VDIBEZ = v_set_ap.o v_bez_co.o v_bez.o v_bez_fi.o v_bez_qu.o
  73.   AESALL = $(AESAPPL) $(AESCRAP) $(AESEVNT) $(AESFORMS) $(AESFSEL) $(AESGRAF) \
  74.    $(AESHELL) $(AESMENU) $(AESOBJ) $(AESRC) $(AESRSRC) $(AESWIN) 
  75.   
  76.   VDIALL = $(VDIATRIB) $(VDICTRL1) $(VDICTRL2) $(VDIESC) $(VDIESC1) $(VDIFSM) \
  77. !  $(VDIGDP) $(VDIINP) $(VDIINQ) $(VDIOUT) $(VDIQGDOS) $(VDIRAS) $(VDIBEZ)
  78.   
  79.   
  80.   COMOBJ = common.o ident.o
  81. ***************
  82. *** 182,187 ****
  83. --- 187,195 ----
  84.   
  85.   $(VDIRAS): %.o: vdiras.c
  86.       $(CC) $(CFLAGS) -DL_$* -c vdiras.c -o $@
  87. + $(VDIBEZ): %.o: vdibez.c
  88. +     $(CC) $(CFLAGS) -DL_$* -c vdibez.c -o $@
  89.   
  90.   
  91.   .PHONY: install clean realclean
  92. *** 1.8    1991/09/06 01:54:31
  93. --- vdibind.h    1992/01/14 19:34:31
  94. ***************
  95. *** 270,276 ****
  96.   #if ((defined(__GNUC__)) && (!defined(__NO_INLINE__)))
  97.   #define vq_vgdos()                \
  98.   ({                        \
  99. !     register long ret __asm__("d0");    \
  100.       __asm__ volatile            \
  101.       ("                    \
  102.           movq    #-2,d0;            \
  103. --- 270,276 ----
  104.   #if ((defined(__GNUC__)) && (!defined(__NO_INLINE__)))
  105.   #define vq_vgdos()                \
  106.   ({                        \
  107. !     register unsigned long ret __asm__("d0");    \
  108.       __asm__ volatile            \
  109.       ("                    \
  110.           movq    #-2,d0;            \
  111. ***************
  112. *** 282,296 ****
  113.       ret;                    \
  114.   })
  115.   #else 
  116. ! __EXTERN long vq_gdos __PROTO((void));
  117.   #endif /* __GNUC__ | !__NO_INLINE__ */    
  118.   
  119.   /* FSM gdos bindings */
  120.   
  121.   /*
  122.    * v_gtext with optional shadow attribute
  123.    */
  124. ! __EXTERN void    v_shtext __PROTO(( int wsid, int x, int y, char *text,
  125.                     int color, int xshadow, int yshadow ));
  126.   
  127.   /*
  128. --- 282,345 ----
  129.       ret;                    \
  130.   })
  131.   #else 
  132. ! __EXTERN unsigned long vq_gdos __PROTO((void));
  133.   #endif /* __GNUC__ | !__NO_INLINE__ */    
  134.   
  135.   /* FSM gdos bindings */
  136.   
  137. + /* ---------------------------------------------------------------------------
  138. +  * Retrieve placement information for FSM generated characters
  139. +  * Information is placed in infoarray of 52 ints.
  140. +  * Borrow a soothsayer from DRI or Atari to find its meaning.
  141. +  *
  142. +  * This is a temporary bindings since one genius decided
  143. +  * that some entries in infoarray will represent real numbers.
  144. +  * You may fully expect that that this representation of reals is
  145. +  * absolutely different from what your compiler is using.
  146. +  * Count your lucky stars if at least sizeof(double) == 2 * sizeof(int).
  147. +  * Or maybe sizeof(double) is supposed to be sizeof(float)?
  148. +  */
  149. + __EXTERN void v_getbitmap_info __PROTO((int handle, int ch, int infoarray[]));
  150. + /*
  151. +  * Inquire text extent, accounting for FSM text placement
  152. +  */
  153. + __EXTERN void vqt_f_extent __PROTO((int handle, const char *str, int extent[]));
  154. + /*
  155. +  * Draw FSM text (accounts for fractional advances in rotated text)
  156. +  */
  157. + __EXTERN void v_ftext __PROTO((int handle, int x, int y, const char *str));
  158. + /*
  159. +  * Release memory associated with outline component generated by v_getoutline()
  160. +  */
  161. + __EXTERN void v_killoutline __PROTO((int handle, void *component));
  162. + /*
  163. +  * Generate an outline for character ch, and return the address of the outline.
  164. +  */
  165. + __EXTERN void v_getoutline __PROTO((int handle, int ch, void **component));
  166. + /*
  167. +  * Set scratch buffer allocation mode.
  168. +  * mode=0: (default) account for FSM fonts when allocating scratch buffers
  169. +  * mode=1: account only for BM fonts
  170. +  * mode=2: allocate no scratch buffer
  171. +  */
  172. + __EXTERN void vst_scratch __PROTO((int handle, int mode));
  173. + /*
  174. +  * Set FSM error mode.
  175. +  * mode=1: (default) errors go to screen.
  176. +  * mode=0: errors reported in error variable `errorvar'.
  177. +  */
  178. + __EXTERN void vst_error __PROTO((int handle, int mode, int *errorvar));
  179.   /*
  180.    * v_gtext with optional shadow attribute
  181.    */
  182. ! __EXTERN void    v_shtext __PROTO(( int wsid, int x, int y, const char *text,
  183.                     int color, int xshadow, int yshadow ));
  184.   
  185.   /*
  186. ***************
  187. *** 348,353 ****
  188. --- 397,429 ----
  189.    */
  190.   __EXTERN void    vqt_cachesize __PROTO(( int handle, int which_cache,
  191.                          size_t *size ));
  192. + /*
  193. +  * bezier curves stuff
  194. +  */
  195. + __EXTERN void v_set_app_buff __PROTO((void **buf_p, int size));
  196. + __EXTERN int v_bez __PROTO((int handle, int count,
  197. +                      int *xyarr, char *bezarr,
  198. +                  int extent[4], int *npts, int *nmvs));
  199. + __EXTERN int v_bez_fill __PROTO((int handle, int count,
  200. +                  int *xyarr, char *bezarr,
  201. +                  int extent[4], int *npts, int *nmvs));
  202. + __EXTERN int v_bez_qual __PROTO((int handle, int percent, int *actual));
  203. + #ifdef ALTERNATE
  204. + /* Use these #defines if you _really_ want to stick to DRI conventions */
  205. + __EXTERN int v_bez_con __PROTO((int handle, int onoff));
  206. + #define v_bez_on(x)    (int)v_bez_con((x), 1)
  207. + #define v_bez_off(x)    (void)v_bez_con((x), 0)
  208. + #else
  209. + __EXTERN int v_bez_on __PROTO((int handle));
  210. + __EXTERN void v_bez_off __PROTO((int handle));
  211. + #endif /* ALTERNATE */
  212.   #if defined(__cplusplus)
  213.   }
  214.   #endif
  215. *** 1.6    1991/09/06 02:10:31
  216. --- vdictrl1.c    1992/01/14 19:34:32
  217. ***************
  218. *** 93,99 ****
  219.       *iptr++ = *work_in++;
  220.       } while (work_in < end);
  221.   
  222. !     __vdi__(VDI_CONTRL_ENCODE(100, 0, 11, 0), 0);
  223.   
  224.       wptr = work_out;
  225.       end = wptr + 45;
  226. --- 93,99 ----
  227.       *iptr++ = *work_in++;
  228.       } while (work_in < end);
  229.   
  230. !     __vdi__(VDI_CONTRL_ENCODE(100, 0, 11, 0), *handle);
  231.   
  232.       wptr = work_out;
  233.       end = wptr + 45;
  234. ***************
  235. *** 110,116 ****
  236.       _vdiparams[1] = &work_in[0];
  237.       _vdiparams[3] = &work_out[0];
  238.       _vdiparams[4] = &work_out[45];
  239. !     __vdi__(VDI_CONTRL_ENCODE(100, 0, 11, 0), 0);
  240.       _vdiparams[1] = (void *)&_intin[0];
  241.       _vdiparams[3] = (void *)&_intout[0];
  242.       _vdiparams[4] = (void *)&_ptsout[0];
  243. --- 110,116 ----
  244.       _vdiparams[1] = &work_in[0];
  245.       _vdiparams[3] = &work_out[0];
  246.       _vdiparams[4] = &work_out[45];
  247. !     __vdi__(VDI_CONTRL_ENCODE(100, 0, 11, 0), *handle);
  248.       _vdiparams[1] = (void *)&_intin[0];
  249.       _vdiparams[3] = (void *)&_intout[0];
  250.       _vdiparams[4] = (void *)&_ptsout[0];
  251. *** 1.4    1991/09/06 02:10:31
  252. --- vdifsm.c    1992/01/14 19:34:32
  253. ***************
  254. *** 4,9 ****
  255. --- 4,10 ----
  256.    * but it changed quite a bit (among other things it appears to work).
  257.    * v_shtext survived verbatim from the original.
  258.    */
  259.   #include "common.h"
  260.   #ifndef _COMPILER_H
  261.   # include <compiler.h>
  262. ***************
  263. *** 16,21 ****
  264. --- 17,29 ----
  265.   
  266.   #ifdef __DEF_ALL__
  267.   
  268. + #define L_v_getbit
  269. + #define L_vqt_fext
  270. + #define L_v_ftext
  271. + #define L_v_killou
  272. + #define L_v_getout
  273. + #define L_vst_scra
  274. + #define L_vst_erro
  275.   #define L_v_shtext
  276.   #define L_vst_arbp
  277.   #define L_vqt_adva
  278. ***************
  279. *** 30,35 ****
  280. --- 38,213 ----
  281.   
  282.   #endif /* __DEF_ALL__ */
  283.   
  284. + #ifdef L_v_getbit
  285. + /* ---------------------------------------------------------------------------
  286. +  * Retrieve placement information for FSM generated characters
  287. +  * Information is placed in infoarray of 52 ints.
  288. +  * Borrow a soothsayer from DRI or Atari to find its meaning.
  289. +  *
  290. +  * This is a temporary bindings since one genius decided
  291. +  * that some entries in infoarray will represent real numbers.
  292. +  * You may fully expect that that this representation of reals is
  293. +  * absolutely different from what your compiler is using.
  294. +  * Count your lucky stars if at least sizeof(double) == 2 * sizeof(int).
  295. +  * Or maybe sizeof(double) is supposed to be sizeof(float)?
  296. +  */
  297. + void
  298. + v_getbitmap_info(int handle, int ch, int infoarray[52])
  299. + {
  300. +     short *ptr = _intin;
  301. +     *ptr++ = ch;
  302. +     *(int **)ptr = &infoarray[0];
  303. +     __vdi__(VDI_CONTRL_ENCODE(239, 0, 3, 0), handle);
  304. + #ifndef __MSHORT__
  305. +     /* Repack returned information from an array of shorts into an
  306. +        array of ints */
  307. +     { /* dummy block to contain new declarations */
  308. +     short *s_ptr = (short *)(&infoarray[0]) + 52;
  309. +     short *bot   = (short *)(&infoarray[0]) +  4;
  310. +     int   *i_ptr = (&infoarray[0]) + 52;
  311. +     do {
  312. +         s_ptr -= 2;              /* copy y-offset */
  313. +         *(--i_ptr) = *(int *)s_ptr;
  314. +         *(--i_ptr) = 0;
  315. +     
  316. +         s_ptr -= 2;              /* copy x-offset */
  317. +         *(--i_ptr) = *(int *)s_ptr;
  318. +         *(--i_ptr) = 0;
  319. +         
  320. +         *(--i_ptr) = *(--s_ptr);  /* bitmap height */
  321. +         *(--i_ptr) = *(--s_ptr);  /* bitmap width  */
  322. +     } while (s_ptr > bot);
  323. +     *(--i_ptr) = *(--s_ptr);      /* remainder y-advance */
  324. +     *(--i_ptr) = *(--s_ptr);      /* y-advance */
  325. +     *(--i_ptr) = *(--s_ptr);      /* remainder x-advance */
  326. +     *i_ptr     = *s_ptr;          /* x-advance */
  327. +     }
  328. + #endif /* __MSHORT__ */
  329. + }
  330. + #endif /* L_v_getbit */
  331. + #ifdef L_vqt_fext
  332. + /* ---------------------------------------------------------------------------
  333. +  * Inquire text extent, accounting for FSM text placement
  334. +  */
  335. + void
  336. + vqt_f_extent(int handle, const char *str, int extent[8])
  337. + {
  338. +     unsigned char ch;
  339. +     short *ptr;
  340. +     int   *ept, *end;
  341. +     
  342. +     ptr = _intin;
  343. +     while ( ch = *str++)
  344. +     *ptr++ = ch;
  345. +     *ptr = 0;    
  346. +     __vdi__(VDI_CONTRL_ENCODE(240, 0, (int)(ptr - _intin), 0), handle);
  347. +     
  348. +     ptr = _ptsout;
  349. +     ept = extent;
  350. +     end = ept + 8;
  351. +     do {
  352. +     *ept++ = *ptr++;
  353. +     } while (ept < end);
  354. + }
  355. + #endif /* L_vqt_fext */
  356. + #ifdef L_v_ftext
  357. + /* ---------------------------------------------------------------------------
  358. +  * Draw FSM text (accounts for fractional advances in rotated text)
  359. +  */
  360. + void
  361. + v_ftext(int handle, int x, int y, const char *str)
  362. + {
  363. +     unsigned char   ch;
  364. +     short *ptr = _intin;
  365. +     
  366. +     _ptsin[0] = x;
  367. +     _ptsin[1] = y;
  368. +     while ( ch  = (unsigned const char) *str++)
  369. +     *ptr++ = ch;
  370. +     *ptr = 0;
  371. +     
  372. +     __vdi__(VDI_CONTRL_ENCODE(241, 1, (int)(ptr - _intin), 0), handle);
  373. + }
  374. + #endif /* L_v_ftext */
  375. + #ifdef L_v_killou
  376. + /* ---------------------------------------------------------------------------
  377. +  * Release memory associated with outline component generated by v_getoutline()
  378. +  */
  379. + void
  380. + v_killoutline(int handle, void *component)
  381. + {
  382. +     *(void **)&_intin[0] =  component;
  383. +     __vdi__(VDI_CONTRL_ENCODE(242, 0, 2, 0), handle);
  384. + }
  385. + #endif /* L_v_killou */
  386. + #ifdef L_v_getout
  387. + /* ---------------------------------------------------------------------------
  388. +  * Generate an outline for character ch, and return the address of the outline.
  389. +  */
  390. + void
  391. + v_getoutline(int handle, int ch, void **component)
  392. + {
  393. +     _intin[0] = ch;
  394. +     *(void ***)&_intin[1] = component;
  395. +     __vdi__(VDI_CONTRL_ENCODE(243, 0, 3, 0), handle);
  396. + }
  397. + #endif /* L_v_getout */
  398. + #ifdef L_vst_scra
  399. + /* ---------------------------------------------------------------------------
  400. +  * Set scratch buffer allocation mode.
  401. +  * This buffes is used when creating special effects on fonts.
  402. +  * mode=0: (default) account for FSM fonts when allocating scratch buffers
  403. +  * mode=1: account only for BM fonts;  no special effects for outlines
  404. +  * mode=2: allocate no scratch buffer; no special effects at all
  405. +  */
  406. + void
  407. + vst_scratch(int handle, int mode)
  408. + {
  409. +     _intin[0] = mode;
  410. +     __vdi__(VDI_CONTRL_ENCODE(244, 0, 1, 0), handle);
  411. + }
  412. + #endif /* L_vst_scra */
  413. + #ifdef L_vst_erro
  414. + /* ---------------------------------------------------------------------------
  415. +  * Set FSM error mode.
  416. +  * mode=1: (default) errors go to screen.
  417. +  * mode=0: errors reported in error variable `errorvar'.
  418. +  */
  419. + void
  420. + vst_error(int handle, int mode, int *errorvar)
  421. + {
  422. +     _intin[0] = mode;
  423. +     *(int **)&_intin[1] = errorvar;
  424. +     __vdi__(VDI_CONTRL_ENCODE(245, 0, 3, 0), handle);
  425. + }
  426. + #endif /* L_vst_erro */
  427.   
  428.   #ifdef L_v_shtext
  429.   
  430. ***************
  431. *** 43,64 ****
  432.   v_shtext( int wsid, 
  433.         int x,
  434.         int y,
  435. !       char * text,
  436.         int color,
  437.         int xshadow,
  438.         int yshadow )
  439.   {
  440. !     __EXTERN void v_gtext __PROTO((int, int, int, const char *));
  441. !     __EXTERN void vst_color __PROTO((int, int));
  442.   
  443.       if( xshadow || yshadow )
  444.       {
  445. !     v_gtext( wsid, x+xshadow*2, y+yshadow*2, text );
  446. !     vst_color( wsid, 0 );
  447. !     v_gtext( wsid, x+xshadow, y+yshadow, text );
  448. !     vst_color( wsid, color );
  449.       }
  450. !     v_gtext( wsid, x, y, text );
  451.   }
  452.   #endif /* L_v_shtext */
  453.   
  454. --- 221,242 ----
  455.   v_shtext( int wsid, 
  456.         int x,
  457.         int y,
  458. !       const char * text,
  459.         int color,
  460.         int xshadow,
  461.         int yshadow )
  462.   {
  463. !     __EXTERN void v_ftext __PROTO((int, int, int, const char *));
  464. !     __EXTERN int vst_color __PROTO((int, int));
  465.   
  466.       if( xshadow || yshadow )
  467.       {
  468. !     v_ftext( wsid, x+xshadow*2, y+yshadow*2, text );
  469. !     (void) vst_color( wsid, 0 );
  470. !     v_ftext( wsid, x+xshadow, y+yshadow, text );
  471. !     (void) vst_color( wsid, color );
  472.       }
  473. !     v_ftext( wsid, x, y, text );
  474.   }
  475.   #endif /* L_v_shtext */
  476.   
  477. ***************
  478. *** 66,72 ****
  479.   #ifdef L_vst_arbp
  480.   
  481.   /* ----------------------------------------------------------------------
  482. !  * Set character cell height by arbitrary points.
  483.    */
  484.   int
  485.   vst_arbpt( int handle,
  486. --- 244,253 ----
  487.   #ifdef L_vst_arbp
  488.   
  489.   /* ----------------------------------------------------------------------
  490. !  * Set character cell height to arbitrary value.
  491. !  * Height is given in printer points (more or less) and it does not
  492. !  * have to be listed in extend.sys.
  493. !  * Only for FSM outline fonts.
  494.    */
  495.   int
  496.   vst_arbpt( int handle,
  497. ***************
  498. *** 93,98 ****
  499. --- 274,280 ----
  500.   
  501.   /* ----------------------------------------------------------------------
  502.    * Inquire FSM text advance placement vector.
  503. +  * Remainders xrem and yrem are modulo 16384 (2^14, 1 << 14)
  504.    */
  505.   void
  506.   vqt_advance( int handle, int ch, int *xadv, int *yadv, int *xrem, int *yrem)
  507. ***************
  508. *** 112,117 ****
  509. --- 294,306 ----
  510.   
  511.   /* ----------------------------------------------------------------------
  512.    * Inquire device status information.
  513. +  * 
  514. +  * Watch out!  Name is returned as a COUNTED string in 8+3 format,
  515. +  * without separator, all in an upper case.  Missing character
  516. +  * positions are filled with blanks.
  517. +  * (At least this was the case for some versions of FSMGDOS.
  518. +  * Who knows what will happen next.  This is NOT documented.
  519. +  * Check before you jump!)
  520.    */
  521.   void
  522.   vqt_devinfo( int handle, int device, int *isdev, char *drivername )
  523. ***************
  524. *** 185,191 ****
  525.   #ifdef L_vst_sets
  526.   
  527.   /* ----------------------------------------------------------------------
  528. !  * Set character cell width by arbitrary points.
  529.    */
  530.   int
  531.   vst_setsize( int handle,
  532. --- 374,383 ----
  533.   #ifdef L_vst_sets
  534.   
  535.   /* ----------------------------------------------------------------------
  536. !  * Set character cell width (set size) to arbitrary value.
  537. !  * Width is given in printer points (more or less).
  538. !  * Only for FSM outline fonts.
  539. !  * Effects are cancelled by calls to vst_point, vst_arbpt or vst_height.
  540.    */
  541.   int
  542.   vst_setsize( int handle,
  543. ***************
  544. *** 195,206 ****
  545.            int *wcell,
  546.            int *hcell )
  547.   {
  548.       _intin[0] = point;
  549.       __vdi__(VDI_CONTRL_ENCODE(252, 0, 1, 0), handle);
  550. !     *wchar = _ptsout[0];
  551. !     *hchar = _ptsout[1];
  552. !     *wcell = _ptsout[2];
  553. !     *hcell = _ptsout[3];
  554.   
  555.       return _intout[0];
  556.   }
  557. --- 387,401 ----
  558.            int *wcell,
  559.            int *hcell )
  560.   {
  561. +     short *outp = &_ptsout[0];
  562. +     
  563.       _intin[0] = point;
  564.       __vdi__(VDI_CONTRL_ENCODE(252, 0, 1, 0), handle);
  565. !     *wchar = *outp++;
  566. !     *hchar = *outp++;
  567. !     *wcell = *outp++;
  568. !     *hcell = *outp;
  569.   
  570.       return _intout[0];
  571.   }
  572. ***************
  573. *** 210,215 ****
  574. --- 405,411 ----
  575.   
  576.   /* ----------------------------------------------------------------------
  577.    * Set FSM skew.
  578. +  * Skew in tenths of degrees.  Valid values between -900 and 900.
  579.    */
  580.   int
  581.   vst_skew( int handle, int skew )
  582. ***************
  583. *** 231,237 ****
  584.   {
  585.       __vdi__(VDI_CONTRL_ENCODE(254, 0, 0, 0), handle);
  586.       *gascii = *(void **)&_intout[0];
  587. !     *style = *(void **)&_intout[2];
  588.   }
  589.   #endif /* L_vqt_get_ */
  590.   
  591. --- 427,433 ----
  592.   {
  593.       __vdi__(VDI_CONTRL_ENCODE(254, 0, 0, 0), handle);
  594.       *gascii = *(void **)&_intout[0];
  595. !     *style =  *(void **)&_intout[2];
  596.   }
  597.   #endif /* L_vqt_get_ */
  598.   
  599. *** 1.4    1991/09/06 02:10:31
  600. --- vdiqgdos.c    1992/01/14 19:34:33
  601. ***************
  602. *** 58,66 ****
  603.    *  0x5F46534DL     '_FSM' gdos
  604.    *  0x5F464E54L     '_FNT' gdos
  605.    */
  606. ! long vq_vgdos(void)
  607.   {
  608. !     register long ret __asm__("d0");
  609.       __asm__ volatile ("
  610.        movq    #-2,d0
  611.        trap    #2"
  612. --- 58,66 ----
  613.    *  0x5F46534DL     '_FSM' gdos
  614.    *  0x5F464E54L     '_FNT' gdos
  615.    */
  616. ! unsigned long vq_vgdos(void)
  617.   {
  618. !     register unsigned long ret __asm__("d0");
  619.       __asm__ volatile ("
  620.        movq    #-2,d0
  621.        trap    #2"
  622.