[net.micro.atari16] changing font size before draw_string

nwo4972@ritcv.UUCP (Nicholas W. Oddo) (10/17/86)

>Is it possible to select a smaller font (than the default) right before
>calling the draw_string procedure.

 	I assume you are referring to the draw_string procedure included
in OSS's Personal Pascal programming package.

	Although there is no specific procedure to change the character
height before calling the draw_string procedure, there is a generic VDI 
procedure which allows the programmer to implement his own such 
procedures as long as the opcode and other types of parameters are known
(via Abacus' Atari GEM Programmer;s Reference Manual).  The extra 
documentation needed to learn how to use the generic VDI and AES routines
(oh yeah, there's one for AES routines also) can be obtained from OSS for
the cost of the postage, or the literature can be downloaded from there
bulletin board.  Both telephone numbers are included in the original
documentation.  To get you going, I've included the code I always use
when changing the text height.  I hope this helps.

                                             Nick Oddo


  PROCEDURE Text_Height( height : Integer ) ;

    TYPE
      Ctrl_Parms    = ARRAY [0..11] OF Integer ;
      Int_In_Parms  = ARRAY [0..15] OF Integer ;
      Int_Out_Parms = ARRAY [0..45] OF Integer ;
      Pts_In_Parms  = ARRAY [0..11] OF Integer ;
      Pts_Out_Parms = ARRAY [0..11] OF Integer ;

    VAR
      control : Ctrl_Parms    ;
      int_in  : Int_In_Parms  ;
      int_out : Int_Out_Parms ;
      pts_in  : Pts_In_Parms  ;
      pts_out : Pts_Out_Parms ;

    PROCEDURE VDI_Call(     cmd, sub_cmd, nints, npts : Integer         ;
                        VAR ctrl                      : Ctrl_Parms      ;
                        VAR int_in                    : Int_In_Parms    ;
                        VAR int_out                   : Int_Out_Parms   ;
                        VAR pts_in                    : Pts_In_Parms    ;
                        VAR pts_out                   : Pts_Out_Parms   ;
                            translate                 : Boolean       ) ;
                        EXTERNAL ;

    BEGIN
      pts_in[0] := 0 ;
      pts_in[1] := height ;
      VDI_Call(12, 0, 0, 2, control, int_in, int_out, pts_in, pts_out, false) ;
    END ;