•  Back 
  •  Line-A 
  •  Index 
  •  Tree View 
  •  Cross references 
  •  Help page 
  •  Show info about hypertext 
  •  View a new file 
Topic       : TOS - das Betriebssystem
Author      : 
Version     : tos.hyp (5. März 2013)
Subject     : Programmieren/Atari
Nodes       : 3001
Index Size  : 93602
HCP-Version : 5
Compiled on : Atari
@charset    : atarist
@lang       : 
@default    : Titel
@help       : 
@options    : +g -i -s +x +zz -t4
@width      : 70
View Ref-File6.3  Die negativen Line-A Variablen                                TOS

Zusätzlich lassen sich über negative Offsets zu der Anfangsadresse der 
Line-A Variablen die lokalen Variablen des Bildschirmtreibers 
auslesen. Der Lesezugriff ist durch das Dokument "S.A.L.A.D." von 
Atari offiziell freigegeben worden. Allerdings sind dort die Offsets 
falsch angegeben. Diese Variablen lassen sich durch die nachfolgende 
Struktur beschreiben. Die Zahl im Kommentar gibt jeweils den Offset 
der Komponente zum Anfang Line-A Variablen LINEA an.


typedef struct
{
  int32_t  reserved6;          /* -$38E: reserviert                   */
  FONT_HDR *cur_font;          /* -$38A: Zeiger auf Header akt. Font  */
  int16_t  reserved5[23],      /* -$386: reserviert                   */
           m_pos_hx,           /* -$358: X-Koordinate Maus Hotspot    */
           m_pos_hy,           /* -$356: Y-Koordinate Maus Hotspot    */
           m_planes,           /* -$354: Zeichenmodus der Maus        */
                               /*        1 Replace, -1 XOR-Modus      */
           m_cdb_bg,           /* -$352: Maus Hintergrundfarbe        */
           m_cdb_fg,           /* -$350: Maus Vordergrundfarbe        */
           mask_form[32],      /* -$34E: Vordergrund und Maske        */
                               /*        abwechselnd 1 WORD           */
                               /*        Vordergrund und Maske        */
           inq_tab[45],        /* -$30E: wie vq_extnd                 */
           dev_tab[45],        /* -$2B4: wie v_opnwk                  */
           gcurx,              /* -$25A: X-Position Maus              */
           gcury,              /* -$258: Y-Position Maus              */
           m_hid_ct,           /* -$256: Anzahl der hide_mouse-calls  */
           mouse_bt,           /* -$254: Status der Mausknöpfe        */
           req_col[3][16],     /* -$252: Interne Daten für vq_color   */
           siz_tab[15],        /* -$1F2: wie v_opnwk                  */
           reserved4[2];       /*        reserviert                   */
  void     *cur_work;          /* -$1D0: Attribute der akt. Workstn.  */
  FONT_HDR *def_font;          /* -$1CC: Standard Systemzeichensatz   */
  FONT_HDR *font_ring[4];      /* -$1C8: Zeichensatzlisten            */
                               /*        verkette FONT_HDR Strukturen */
                               /*        0 als Endekennung            */
  int16_t  font_count,         /* -$1B8: Anzahl der Zeichensätze      */
           reserved3[45];      /*        reserviert                   */
  int8_t   cur_ms_stat,        /* -$15C: Mausstatus                   */
                               /*        Bit 0:    linker Knopf       */
                               /*        Bit 1:    rechter Knopf      */
                               /*        Bit 2..4: reserviert         */
                               /*        Bit 5:    1 Maus wurde bew.  */
                               /*        Bit 6:    1 Status des r.    */
                               /*                  Knopfs geändert    */
                               /*        Bit 7:    1 Status des l.    */
                               /*                  Knopfs geändert    */
           reserved2;          /*        reserviert                   */
  int16_t  v_hid_cnt,          /*        Anzahl der Hide_cursor-calls */
           cur_x,              /* -$158: X-Position Maus              */
           cur_y;              /* -$156: Y-Position Maus              */
  int8_t   cur_flag,           /* -$154: != 0: im VBL Maus neu zeich. */
           mouse_flag;         /* -$153: != 0: Maus-Interrupt ein     */
  int32_t  reserved1;          /*        reserviert                   */
  int16_t  v_sav_xy[2],        /* -$14E: gerettete X-Y-Koordinaten    */
           save_len;           /* -$14A: Anzahl der Bildschirmzeilen  */
  void     *save_addr;         /* -$148: Erstes gepuffertes Byte im   */
                               /*        Bildspeicher                 */
  int16_t  save_stat;          /* -$144: Dirty-Flag                   */
                               /*        Bit 0: 1 Buffer ist gültig   */
                               /*        Bit 1: 1 Long, 0 Word gebuf. */
  int32_t  save_area[4][16];   /* -$142: Buffer für Bild unter Maus   */
  void    (*user_tim)( void ); /*  -$42: Timer-Interrupt-Vektor       */
                               /*        sollte zum Beenden next_tim  */
                               /*        anspringen                   */
  void    (*next_tim)( void ); /*  -$3E: alter Timer-Interrupt        */
  void    (*user_but)( void ); /*  -$3A: Maustasten-Vektor            */
  void    (*user_cur)( void ); /*  -$36: Maus-Vektor                  */
  void    (*user_mot)( void ); /*  -$32: Mausbewegungs-Vektor         */
  int16_t  v_cel_ht,           /*  -$2E: Zeichenhöhe                  */
           v_cel_mx,           /*  -$2C: maximale Cursorspalte        */
           v_cel_my,           /*  -$2A: maximale Cursorzeile         */
           v_cel_wr,           /*  -$28: Characterzeilenbreite        */
           v_col_bg,           /*  -$26: Hintergrundfarbe             */
           v_col_fg;           /*  -$24: Vordergrundfarbe             */
  void     *v_cur_ad;          /*  -$22: Adresse der Cursorposition   */
  int16_t  v_cur_off,          /*  -$1E: Vertikaler Bildschirmoffset  */
           v_cur_xy[2];        /*  -$1C: X-Y-Cursor                   */
  int8_t   v_period,           /*  -$18: Blinkgeschwindigkeit         */
           v_cur_ct;           /*  -$17: Zähler für Blinken           */
  void     *v_fnt_ad;          /*  -$16: Zeiger auf Font              */
  int16_t  v_fnt_nd,           /*  -$12: größter ASCII-Wert           */
           v_fnt_st,           /*  -$10: kleinster ASCII-Wert         */
           v_fnt_wd,           /*   -$E: Breite des Fontimage in Byte */
           v_rez_hz,           /*   -$C: Bildschirmbreite in Pixel    */
           *v_off_ad,          /*   -$A: Font-Offset-Tabelle          */
           reserved,           /*   -$6: Cursorflag (TOS 1.00)/res.   */
                               /*        Bit 0: Blinken aus/ein       */
                               /*        Bit 1: Blinkstatus norm/inv  */
                               /*        Bit 2: Cursor unsichtb/sicht */
                               /*        Bit 3: Wrapping ein/aus      */
                               /*        Bit 4: invers ein/aus        */
                               /*        Bit 5: Cursorpos. gesp. n/j  */
           v_rez_vt,           /*   -$4: Bildschirmhöhe in Pixel      */
           bytes_lin;          /*   -$2: Bytes pro Pixelzeile         */
} VDIESC;