This file documents the status of the single parts of EmuTOS

Here is a quick list of supported emulators/hardware:
This table should be updated regularly. When indicating failure,
if possible add a line telling in which version it did run.

  emulator/machine    |  ok?  | who |   date      |  details
  --------------------+-------+-----+-------------+----------------
  ARAnyM 0.9.16       |  yes  | VRI |  4 Mar 2015 |
  Hatari v1.8.0       |  yes  | VRI | 21 Feb 2014 |
  ST                  |  yes  | RFB | 20 Feb 2014 | only RAMTOS tested
  Mega STe            |  yes  | (1) | 26 Jun 2004 | only RAMTOS tested
  STe                 |  yes  | (2) | 22 Sep 2013 |
  Pacifist v0.48      |  yes  | LVL | winter 2001 |
  STonX 0.6.7.6       |  yes  | THH | 14 Nov 2008 |
  STonC v0.8.1        |  yes  | LVL |  9 Feb 2003 |
  STeem v3.2          |  yes  | VRI |  4 Mar 2015 | hard drive issues
  TOSBox 1.10a        |   no  |  ?  |  < Sep 2002 |
  WinSTon V0.1r2      |   no  |  ?  |  < Sep 2002 |
  FireBee             |  yes  | VRI |  4 Mar 2015 |
  Falcon 030          |  yes  | RFB | 21 Feb 2014 | only RAMTOS tested
  WinUAE 3.0.0        |  yes  | VRI |  4 Mar 2015 |
  Amiga Blizzard 1260 |  yes  | (3) |    Aug 2012 | tested with BlizKick
  Amiga 1000          |  yes  | (4) |    Jul 2012 |
  M5484LITE           |  yes  | VRI |  4 Mar 2015 |

  (1) reported to LVL by Frédéric Pécourt
  (2) reported by Jean-François Del Nero
  (3) reported by Michaël Gibs
  (4) reported by amiman99

Now lets talk about the different subsystems, and if they are implemented.
NOTE: the information in the following table is somewhat dated.  For example,
despite the indicator, most GEMDOS/BIOS/XBIOS functions are known to work
without problems.


This is, what the first field of the following table means:

? status unknown
- Not yet implemented
> Partially implemented
X Fully implemented and untested
t Fully implemented and partially tested
T tested and working on an emulator or real hardware


 Hardware initialization
 ----------------------------------------------------------------------------

 t CPU setting, tested on:
   68000 (real & emu), 68030 (real & emu), 68040 (emu), v4e (real)
 > FPU (detected, is any initialization needed?)
 T 68030 MMU and cache initialization
 T Memory controller (both ST and Falcon)
 T DMA controller
 t WD 1772 / AJAX Floppy disk controller (write track not tested)
 T MFP
 T PSG
 T ST shifter
 t STe shifter
 T VIDEL
 T ACIAs, IKBD protocol
 t MegaST Real-Time Clock  (set clock not tested)
 t NVRAM (including RTC)
 - Blitter
 T Microwire
 t DMA sound
 - DSP
 T SCC
 T IDE
 X ACSI
 - SCSI
 T SD/MMC
 T NatFeats (a framework for native features on emulators)


 BOOT sequence
 ----------------------------------------------------------------------------

 T configure memory
 X execute reset routine
 T detect monitor type
 T detect graphics resolution
 t detect processor type, FPU type and hardware features
 T setup a cookie jar with system cookies
   ...
 T init floppy drives
 T boot floppy
 - boot DMA
 - execute reset-resident prgs
 T run AUTO prgs
 T run 'command.prg'
 T run the default shell, EmuCON
 T run the GEM desktop


 BIOS devices
 ----------------------------------------------------------------------------

 > 0 PRN: parallel port
 > 1 AUX: default serial port
 T 2 CON: console (screen)
 X 3 MIDI
 T 4 IKBD
 T 5 raw screen
 T 6 ST-compatible serial port
 T 7 SCC channel B
 - 8 TT-MFP serial port
 > 9 SCC channel A


 ACIA interrupt routines
 ----------------------------------------------------------------------------

 - midierr
 - ikbderr
 X midi input
 T ikbd key events
 t IKBD clock           (set clock not tested)
 - mouse                (will be done as part of VDI)
 - joysticks            (is done by games - TOS does not have one)


 BIOS Functions
 ----------------------------------------------------------------------------

 T 0x00 getmpb
 T 0x01 bconstat
 T 0x02 bconin
 T 0x03 bconout
 T 0x04 rwabs
 T 0x05 setexc
 T 0x06 tickcal
 T 0x07 getbpb
 T 0x08 bcostat
 t 0x09 mediach         (floppy write-protect line not monitored in VBL)
 T 0x0a drvmap
 X 0x0b kbshift


 XBIOS Functions
 ----------------------------------------------------------------------------

All XBIOS versions:
 X 0x00 initmous
 - 0x01 ssbrk           (useless - will not be implemented)
 X 0x02 physBase
 X 0x03 logBase
 X 0x04 getRez
 X 0x05 setscreen
 X 0x06 setPallete
 X 0x07 setColor
 X 0x08 floprd
 X 0x09 flopwr
 X 0x0a flopfmt
 - 0x0b used-by-BIOS    (useless - will not be implemented)
 X 0x0c midiws
 X 0x0d mfpint
 X 0x0e iorec
 X 0x0f rsconf
 X 0x10 keytbl
 X 0x11 random
 X 0x12 protobt
 X 0x13 flopver
 - 0x14 scrdmp
 T 0x15 cursconf
 X 0x16 settime
 X 0x17 gettime
 X 0x18 bioskeys
 X 0x19 ikbdws
 X 0x1a jdisint
 X 0x1b jenabint
 X 0x1c giaccess
 X 0x1d offgibit
 X 0x1e ongibit
 X 0x1f xbtimer
 X 0x20 dosound
 - 0x21 setprt          (useless - will not be implemented)
 X 0x22 kbdvbase
 - 0x23 kbrate
 - 0x24 prtblk          (useless - will not be implemented)
 X 0x25 vsync
 X 0x26 supexec
 - 0x27 puntaes         (useless - will not be implemented)

TOS v1.02:
 X 0x29 floprate
 t 0x40 Blitmode

TOS v2.0:
 X 0x2a DMAread
 X 0x2b DMAwrite
 t 0x2c Bconmap

TOS v3.00:
 X 0x2e NVMaccess

 X 0x50 EsetShift       (for TT shifter only)
 X 0x51 EgetShift       (for TT shifter only)
 X 0x52 EsetBank        (for TT shifter only)
 X 0x53 EsetColor       (for TT shifter only)
 X 0x54 EsetPalette     (for TT shifter only)
 X 0x55 EgetPalette     (for TT shifter only)
 X 0x56 EsetGray        (for TT shifter only)
 X 0x57 EsetSmear       (for TT shifter only)

TOS v4.00:
 X 0x58 Vsetmode        (for Falcon Videl only)
 X 0x59 Vmontype        (for Falcon Videl only)
 X 0x5a VsetSync        (for Falcon Videl only)
 X 0x5b VgetSize        (for Falcon Videl only)

 X 0x5d VsetRGB         (for Falcon Videl only)
 X 0x5e VgetRGB         (for Falcon Videl only)

 - 0x96 VsetMask        (for Falcon Videl only)

2nd bit in _SND is set:
 t 0x80 LockSnd
 t 0x81 UnlockSnd
 X 0x82 Soundcmd
 X 0x83 Setbuffer
 X 0x84 Setmode
 X 0x85 Settracks
 X 0x86 Setmontracks
 X 0x87 Setinterrupt
 X 0x8c Sndstatus

3rd bit in _SND is set:
 X 0x88 Buffoper
 X 0x8a Gpio
 > 0x8b Devconnect
 X 0x8d Buffptr

3&4 bits in _SND are set:
 X 0x89 Dsptristate

5th bit in _SND is set:
 - 0x61-0x7e, 32 Dsp_* functions


 GEMDOS Functions
 ----------------------------------------------------------------------------

All GEMDOS versions:
 X 0x00 Pterm0
 X 0x01 Cconin
 X 0x02 Cconout
 X 0x03 Cauxin
 X 0x04 Cauxout
 X 0x05 Cprnout
 X 0x06 Crawio
 X 0x07 Crawin
 X 0x08 Cnecin
 X 0x09 Cconws
 X 0x0a Cconrs
 X 0x0b Cconis

 X 0x0e Dsetdrv

 X 0x10 Cconos
 X 0x11 Cprnos
 X 0x12 Cauxis
 X 0x13 Cauxos

 X 0x19 Dgetdrv
 X 0x1a Fsetdta

 X 0x20 Super

 X 0x2a Tgetdate
 X 0x2b Tsetdate
 X 0x2c Tgettime
 X 0x2d Tsettime

 X 0x2f Fgetdta
 X 0x30 Sversion
 X 0x31 Ptermres

 X 0x36 Dfree

 X 0x39 Dcreate
 X 0x3a Ddelete
 X 0x3b Dsetpath
 X 0x3c Fcreate
 X 0x3d Fopen
 X 0x3e Fclose
 X 0x3f Fread
 X 0x40 Fwrite
 X 0x41 Fdelete
 X 0x42 Fseek
 X 0x43 Fattrib

 X 0x45 Fdup
 X 0x46 Fforce
 X 0x47 Dgetpath
 X 0x48 Malloc
 X 0x49 Mfree
 X 0x4a Mshrink
 X 0x4b Pexec
 X 0x4c Pterm

 X 0x4e Fsfirst
 X 0x4f Fsnext

 X 0x56 Frename
 X 0x57 Fdatime

GEMDOS v0.19 (TOS v2):
 X 0x14 Maddalt
 X 0x44 Mxalloc
 (and Pexec mode 6)


 Line-A functions
 ----------------------------------------------------------------------------
 T $0 - Initialization
 > $1 - Put pixel
 > $2 - Get pixel
 > $3 - Arbitrary line
 > $4 - Horizontal line
 > $5 - Filled rectangle
 > $6 - Filled polygon
 > $7 - Bit block transfer
 > $8 - Text block transfer
 T $9 - Show mouse
 T $A - Hide mouse
 > $B - Transform mouse
 > $C - Undraw sprite
 > $D - Draw sprite
 > $E - Copy raster form
 - $F - Seedfill


 VDI functions
 ----------------------------------------------------------------------------

 All TOS 1.0 calls are implemented.

 T      v_opnwk
 X      v_clswk
 T      v_opnvwk
 T      v_clsvwk
 T      v_clrwk
 -      v_updwk
 >      vst_load_fonts      (needs GDOS or equivalent)
 >      vst_unload_fonts    (needs GDOS or equivalent)
 X      vs_clip
 t      v_pline
 t      v_pmarker
 t      v_gtext
 t      v_fillarea
 -      v_cellarray         (not supported by any current VDI driver)
 X      v_contourfill
 t      vr_recfl
 t      v_bar
 t      v_arc
 t      v_pieslice
 t      v_circle
 t      v_ellipse
 t      v_ellarc
 t      v_ellpie
 X      v_rbox
 t      v_rfbox
 X      v_justified
 X      vswr_mode
 >      vs_color
 X      vsl_type
 X      vsl_udsty
 t      vsl_width
 >      vsl_color
 t      vsl_ends
 t      vsm_type
 t      vsm_height
 >      vsm_color
 t      vst_height
 t      vst_point
 X      vst_rotation
 X      vst_font
 >      vst_color
 T      vst_effects
 T      vst_alignment
 T      vsf_interior
 T      vsf_style
 t      vsf_color
 T      vsf_perimeter
 X      vsf_udpat
 X      vro_cpyfm
 >      vrt_cpyfm
 X      vr_trnfm
 >      v_get_pixel
 X      vsin_mode
 X      vrq_locator
 X      vsm_locator
 -      vrq_valuator
 -      vsm_valuator
 X      vrq_choice
 X      vsm_choice
 X      vrq_string
 X      vsm_string
 X      vsc_form
 X      vex_timv
 T      v_show_c
 T      v_hide_c
 X      vq_mouse
 T      vex_butv
 T      vex_motv
 T      vex_curv
 X      vq_key_s
 t      vq_extnd
 >      vq_color
 >      vql_attributes
 >      vqm_attributes
 >      vqf_attributes
 >      vqt_attributes
 >      vqt_extent
 X      vqt_width
 X      vqt_name
 -      vq_cellarray        (not supported by any current VDI driver)
 X      vqin_mode
 X      vqt_fontinfo
 T      vq_chcells
 T      v_exit_cur
 X      v_enter_cur
 X      v_curup
 X      v_curdown
 X      v_curright
 X      v_curleft
 T      v_curhome
 X      v_eeos
 X      v_eeol
 X      vs_curaddress
 X      v_curtext
 X      v_rvon
 X      v_rvoff
 -      vq_curaddress
 T      vq_tabstatus
 -      v_hardcopy
 X      v_dspcur
 X      v_rmcur
 -      v_form_adv
 -      v_output_window
 -      v_clear_disp_list
 -      v_bit_image
 -      vs_palette
 -      vqp_films
 -      vqp_state
 -      vsp_state
 -      vsp_save
 -      vsp_message
 -      vqp_error
 -      v_meta_extents
 -      v_write_meta
 -      vm_filename


 AES functions
 ----------------------------------------------------------------------------

All AES versions:
 X      appl_init
 X      appl_read
 X      appl_write
 X      appl_find
 X      appl_tplay
 X      appl_trecord
 X      appl_yield              (PC-GEM call)
 X      appl_exit
 X      evnt_keybd
 X      evnt_button
 X      evnt_mouse
 X      evnt_mesag
 X      evnt_timer
 X      evnt_multi
 X      evnt_dclick
 X      menu_bar
 X      menu_icheck
 X      menu_ienable
 X      menu_tnormal
 X      menu_text
 X      menu_register
 X      menu_unregister         (PC-GEM call)
 X      menu_click              (PC-GEM call)
 X      objc_add
 X      objc_delete
 X      objc_draw
 X      objc_find
 X      objc_offset
 X      objc_order
 X      objc_edit
 X      objc_change
 X      form_do
 X      form_dial
 X      form_alert
 X      form_error
 X      form_center
 X      form_keybd
 X      form_button
 X      graf_rubbox
 X      graf_dragbox
 X      graf_mbox
 T      graf_growbox
 T      graf_shrinkbox
 X      graf_watchbox
 X      graf_slidebox
 X      graf_handle
 X      graf_mouse
 X      graf_mkstate
 X      scrp_read
 X      scrp_write
 X      scrp_clear              (PC-GEM call)
 X      fsel_input
 X      wind_create
 X      wind_open
 X      wind_close
 X      wind_delete
 X      wind_get
 X      wind_set
 X      wind_find
 X      wind_update
 X      wind_calc
 X      rsrc_load
 X      rsrc_free
 X      rsrc_gaddr
 X      rsrc_saddr
 X      rsrc_obfix
 X      shel_read
 X      shel_write
 X      shel_get
 X      shel_put
 X      shel_find
 X      shel_envrn
 X      shel_rdef              (PC-GEM call)
 X      shel_wdef              (PC-GEM call)

AES v1.40 (TOS >= v1.04):
 X      fsel_exinput
 t      wind_new

AES v3.30 (TOS > v3.06):
 -      menu_attach
 -      menu_istart
 -      menu_popup
 -      menu_settings

AES v3.40 (TOS >= v4):
 -      objc_sysvar            (3D look)
