•  Back 
  •  Floprate 
  •  Index 
  •  Tree View 
  •  Cross references 
  •  Help page 
  •  Show info about hypertext 
  •  View a new file 
Topic       : TOS - The Operating System
Author      : 
Version     : tos.hyp (December 19, 2008)
Subject     : Programmieren/Atari
Nodes       : 3010
Index Size  : 93790
HCP-Version : 5
Compiled on : Atari
@charset    : atarist
@lang       : 
@default    : Title
@help       : 
@options    : +g -i -s +x +zz -t4
@width      : 70
View Ref-File4.13.4.2  Seekrate for all TOS versions                            TOS

/* Portable setting of the floppy seek rate for all TOS versions
   (except RAM-TOS 1.00).
   Parameters: As for the XBIOS function "Floprate" */

int16_t SeekRate ( int16_t devno, int16_t newrate )
{
  int32_t stack;
  int16_t version;
  OSHEADER *sys;

  /* Get pointer to OS-header */
  stack = Super (0L);
  sys = *((OSHEADER **) 0x4f2);
  version = sys->os_version;
  Super ((void *)stack);

  /* With newer TOS simply call "Floprate"  */
  if ( version >= 0x0104 )
    return Floprate ( devno, newrate );
  else
  {
    /* otherwise calculate pointer to internal GEMDOS variables */
    int16_t *sk, merk;

    if ( version == 0x0102 )
      sk = (int16_t *) 0x0a4e;
    else
      sk = (int16_t *) 0x0a08;

    /* Drive B: 2 int16_t follows */
    if ( devno ) sk = &(sk[2]);

    merk = *sk;
    /* enter value only if not -1 */
    if ( newrate != -1 ) *sk = newrate;

    /* always return old value */
    return merk;
  }
}