include "/var/www/banner.php"; ?>
14.5 Detecting the presence of TosBox, Steem and PaCifiST
; FOR ST PROGRAMMERS - How to detect PaCifiST (0.46 or greater)
; When Vsync is called with d6=d7='Emu?' and those registers are
; altered, you can assume you're running under an emulator.
; If d6='PaCi' & d7='fiST', then it's under PaCifiST and a0 points out
; some extra hardware registers:
; 0 BYTE major version (BCD)
; 1 BYTE minor version (BCD)
; The approved method, à la PaCifiST, is to call Vsync with d6 = d7 =
; 'Emu?'($456D753F). On return, d6 will contain 'TBox' ($54426f78) and
; d7 will contain the ASCII-encoded version number.
; modified 16/4/02 by Anthony Hayward to recognize Steem - that
; returns d6='STEe'=$53544565, d7='mEng'=$6d456e67. Since v2.4
; a0 points to extra information (read-only unless stated):
; 0 BYTE Major version (BCD)
; 1 BYTE Minor version (BCD)
; 2 BYTE Slow motion flag
; 3 BYTE Slow motion speed (%)
; 4 BYTE Fast forward flag
; 5 BYTE Millions of cpu cycles per second (read-write on v3+,
; changes at next VBL)
; 6 BYTE Debug build flag
; 7 BYTE Snapshot loaded flag (read-write). If you set this
; flag to 0 at the start of your program then you
; can detect users loading snapshots.
; 8 WORD Run speed (%) (read-write on v3+)
; 10 WORD How fast Steem is actually managing to run
; as a percentage. If the computer is fast enough
; this will equal run speed most of the time. It
; is updated every 12 VBLs and can jump around a bit.
; The following are available on Steem v2.5 and higher:
; 12 LONG Cycle count (overflows every 8 minutes at 8Mhz)
; 16 LONG Cycle count at start of frame (last VBL interrupt)
; 20 LONG Cycle count at start of line (last HBL interrupt)
; 24 WORD Signed word containing the number of the current line.
; In low/medium res the first line after the top border
; is 0, the last before the bottom border is 199.
; 26 BYTE Print ST logs in user build flag (read-write). If you
; set this flag then writing the address of a NULL-
; terminated string to 0xffc1f0 will output it to the
; parallel port. In the debug build the string is always
; written to the log file.
; The following are available on Steem v3.2 and higher:
; 27 BYTE Super video mode (read-write). This register is here
; to allow developers to test Falcon graphics using
; Steem. Possible values are 0 - normal ST mode,
; 1 - Falcon 256 colour (palette at $FF9800),
; 2 - Falcon true colour (16-bit).
; Note: You can't switch to super video from ST high res
; or if Steem is running in 256 colour mode. To check
; for this, read the register back immediately after
; setting it.
; 28 BYTE Super video size (read-write) 0=320x200, 1=640x400,
; 2=320x240, 3=640x480.
; There are two write-only registers:
; 0 LONG (Steem v3+) This register allows you to create new
; disk images in the user's home directory. You must
; write the address of a string in ST memory that
; contains the disk name and a parameter list separated
; by NULLs; the string must be double NULL-terminated.
; The first parameter is the number of sides the disk
; should have, the second the number of tracks and the
; third sets the sectors per track. All parameters are
; passed as strings. Here is an example:
; create_disk_string: dc.b 'New Disk Name',0,'2',0,'80',0,'11',0,0
; That will create a 900 kb disk with the name
; "New Disk Name.st". Once the disk is created it will
; be inserted into drive A. Make sure you delay for half
; a second after creating a new disk before accessing it
; - this allows TOS to detect media change.
; 4 BYTE (Steem v3.2+) Writing anything to this address will
; disable the extra hardware registers. When the
; hardware registers are available, some ST programs
; may detect they are running on a Falcon; to stop that,
; write to this when you no longer need the extra
; features. Any writes to extra registers after writing
; a byte here will cause a bus error.
; Every address up to offset 31 is reserved for future use (won't
; cause bus errors on read or write). If you want anything put in
; here let us know (steem@@gmx.net).
regbase dc.l 0
no_emu: dc.b "It seems you're running under a",13,10
dc.b "mere ST.",13,10,0
an_emu: dc.b "It seems you're running under an",13,10
steem_emu: dc.b "You're running under Steem v"
steem_majorv: dc.b "0."
steem_minorv: dc.b "00.",13,10,0
pacifist_emu: dc.b "You're running under PaCifiST v"
pacifist_majorv: dc.b "0."
pacifist_minorv: dc.b "00.",13,10,0
tosbox_emu: dc.b "You're running under TOSBOX "
tosbver dcb.b 32,5