Provided by: xtrs_4.9d-2build1_amd64 bug

Name

       xtrs - TRS-80 Model I/III/4/4P emulator for the X Window System

Synopsis

       xtrs [-model m] [-diskdir d] [-debug] [other-options]

Description

       xtrs  is  an emulator for a series of 8-bit microcomputers manufactured by Tandy/Radio Shack in the 1970s
       and 1980s.  The program is built on top of a Zilog Z80 emulator, with added routines to support  keyboard
       and video I/O through an X interface.  The hardware emulation can operate as a TRS-80 Model I, Model III,
       Model 4, or Model 4P.

       xtrs supports 48kiB of RAM in Model I or Model III mode, and 128kiB in Model 4 or Model 4P mode.   Floppy
       disks  and hard disks are emulated using files to store the data; or under Linux only, real floppy drives
       can be used.  A printer is emulated by sending its output to the  standard  output.   A  serial  port  is
       emulated  using a Unix terminal device.  Cassette I/O is emulated using files to store the cassette data;
       real cassettes can also be read or written (with luck), either directly through your sound card (on Linux
       and other systems with OSS-compatible sound drivers), or via .wav files.  Game sound and music output are
       also supported if you have an OSS-compatible sound driver; sound output though the cassette port, through
       the  Model  4  sound  option,  and  through  the  optional Orchestra-85/90 music synthesizer card are all
       emulated.  In Model I mode, the HRG1B graphics card is emulated.  In Model III and  4/4P  mode,  you  can
       select  whether the Radio Shack graphics card or Micro Labs Grafyx Solution is emulated.  There is also a
       mouse driver for Model 4/4P mode.  Several common time-of-day clock cards are  emulated  on  all  models.
       The Alpha Products joystick is emulated using the keyboard's numeric keypad.

       Because xtrs emulates the hardware, all known TRS-80 Model I/III/4/4P operating systems should run on it,
       including all flavors of TRSDOS, LDOS/LS-DOS, NEWDOS, DOSPLUS, MultiDOS, and TRS-80 CP/M.   However,  the
       emulator  also includes some extensions to the standard hardware, and the special drivers, utilities, and
       instructions needed for these are not provided for all operating systems.

       The Z80 emulator has a debugger called zbx.  You can enter the debugger either by starting xtrs with  the
       -debug flag or by pressing F9 while xtrs is running.  The debugger runs in the X terminal window that you
       started xtrs from.  Once you are in the debugger, type help for more information.

       Special support in the emulator allows the program  to  block  when  waiting  for  information  from  the
       keyboard.   This  will work only for programs that wait for keyboard input using the standard Model I/III
       ROM call; the emulator decides whether to block the Z80 program when it tries to read from  the  keyboard
       memory by pattern-matching its stack.

   Keys
       The following keys on the host keyboard have special meanings to xtrs.

       F11 toggles onscreen help on the keyboard mappings.

       LeftArrow,  Backspace, or Delete is the TRS-80 left arrow key.  RightArrow or Tab is the right arrow key.
       UpArrow is the up arrow key.  DownArrow or Linefeed is the down arrow key.  Esc or  Break  is  the  Break
       key.   Home or Clear is the Clear key.  Control is the Model 4 Ctrl key (address bit 7, data bit 2).  F12
       is equivalent to the shifted down arrow key (used as a control key with some TRS-80 software).

       F1, F2, and F3 are the Model 4/4P function keys (address bit 7, data bits 4, 5, and 6).  F1 is  also  the
       Model I Electric Pencil control key that some users added to their machines.  F4 is the Model 4 Caps Lock
       key (address bit 7, data bit 3).  F5, Compose, or ScrollLock is equivalent to the @ key (so that @ can be
       used  as  a  modifier  key).   F6  is  equivalent to the 0 key (so that a shifted 0 can be obtained).  F7
       signals a floppy disk change (see Emulated floppy disks, below).  F8 exits the program.   F9  enters  the
       zbx debugger.  F10 is the reset button.

       In  Model III, 4, and 4P modes, the left and right Shift keys are distinct; in Model I mode, they are the
       same.  The PageUp and PageDown keys always activate the positions that correspond to the  Model  III/4/4P
       left and right shift keys (address bit 7, data bits 0 and 1 respectively), even in Model I mode.  The End
       key activates an unused position in the keyboard matrix (address bit 7, data bit 7).

       The keys [, \, ], ^, and _ also activate unused positions in the keyboard matrix  (address  bit  3,  data
       bits  3–7),  as do the ASCII-shifted counterparts of the first four ({, |, }, and ~); see above regarding
       Delete.  With many TRS-80 keyboard drivers, these keys map to the corresponding  ASCII  characters;  with
       others,  they  do nothing.  In some cases you may find the shift state reversed from what you expect; if,
       for instance, you press [ but “{” is displayed instead, see -shiftbracket and -noshiftbracket in Options,
       below,  to  correct  the problem.  The Insert key maps to the same position as underscore (address bit 3,
       data bit 7), so that this key can be used both with and without shift pressed; with many TRS-80  keyboard
       drivers one of these maps to ASCII code 0x7f (DEL).

       On  a German keyboard, the ¨ and ß keys should activate the corresponding characters used in the GENIE, a
       German Model I clone.  This feature is most useful together with the -charset genie command-line option.

       Pressing a key on a PC-style keyboard's  numeric  keypad  with  NumLock  disengaged  emulates  the  Alpha
       Products  joystick.  Keys 2, 4, 6, and 8 (KP_Down, KP_Left, KP_Right, and KP_Up) are the main directions;
       keys 1, 3, 7, and 9 (KP_End, KP_Page_Down, KP_Home, KP_Page_Up) work as diagonal directions by activating
       two  main directions at once; and key 0 (KP_Insert) or 5 (KP_Begin) is the fire button.  Note that your X
       server may default to sending digits for the keys on the numeric pad even if NumLock is not  active.   If
       you  have  this  problem,  you  can  use xev(1) to determine the names of the X keysyms generated by your
       keystroke events.  You may need to check or update your XKB configuration.  Alternatively,  you  can  use
       xmodmap(1) to remap your numeric pad.

   Emulated cassette
       To  control  the  emulated  cassette,  a file called .cassette.ctl in the current working directory keeps
       track of what file is currently loaded as the cassette tape and the current position  within  that  file.
       The cassette(1) shell script provides a way to manipulate this file.  You may use this script to load and
       position cassette tape files.  The operation works very much like an actual tape recorder.  The  cassette
       man page has more information about the shell script and the cassette file formats that are supported.

   Printer
       For  printer  support, any text sent to the TRS-80's printer (using LPRINT or LLIST, for example) is sent
       to the standard output.

   Emulated floppy disks
       In Model I mode, xtrs emulates a Radio Shack Expansion Interface with the Percom Doubler or  Radio  Shack
       Doubler  installed.   The Doubler provides double-density disk access by allowing either the stock WD1771
       FDC chip or a WD1791 chip to be selected under program control.  At powerup  the  1771  is  selected,  so
       operating  systems  with  no  Doubler driver see a stock system.  By default, the emulator pretends to be
       both a Percom and Radio Shack Doubler at the same time—it responds to the special commands of  both—so  a
       driver for either should work.  Under LDOS use the command FDUBL (on newer versions of LDOS), or PDUBL or
       RDUBL (on older versions) to install the driver.  Software that tries to detect which  doubler  you  have
       (such  as  Super  Utility) may be confused by the emulation of both at once, so you can choose to emulate
       only one with a command-line option; see Options below.

       In Model III, 4, or 4P mode, xtrs emulates  the  stock  floppy  controller,  which  uses  a  WD1793  chip
       (software-compatible with the WD1791) to provide both single and double density.

       Four 5¼-inch floppy drives are emulated, with storage in files named diskM-U, where M is the TRS-80 model
       (1, 3, 4, or 4p) and U is the drive unit number (0, 1, 2, or 3).  If a file of the required name  is  not
       found,  a  drive  with  no  disk  in  it  is  emulated  (but see below).  If the user does not have write
       permission for a floppy file, and/or the file has an internal write protect flag set, a write-protect tab
       is  emulated.  Use the mkdisk(1) program to turn the write protect flag on or off.  To change floppies in
       an emulated drive, rename the existing file for the drive (if any), rename the new  floppy  file  to  the
       proper name, and press F7 (see Keys, above).

       If  you  try to boot an emulated Model I, III, or 4 with no file named diskM-0 (that is, no disk in drive
       0), xtrs emulates having no floppy disk  controller.   The  behavior  of  a  real  machine  with  a  disk
       controller in this case didn't seem useful to emulate faithfully: a real Model I hangs with a screen full
       of garbage; a real Model III or 4 goes  into  a  retry  loop  printing  "Diskette?"  on  the  screen  and
       rechecking whether you've inserted one.  A real Model 4P always has a floppy controller, however, so xtrs
       always emulates one.

       Due to a limitation of the original Model I hardware, drive :3 cannot be double-sided in  Model  I  mode.
       In  the  original  Model  I,  you could not have a drive :3 at all if any drive in the system was double-
       sided, but the emulator is able to be more forgiving.

       Emulated floppy image files can be of any of three types: JV1, compatible with  Jeff  Vavasour's  popular
       freeware  Model  I  emulator for MS-DOS; JV3, a compatible extension of a format first used in Vavasour's
       commercial Model III/4 emulator; or DMK, compatible with David Keil's Model 4 emulator.  All three  types
       work in xtrs regardless of what model it is emulating.  A heuristic is used to decide which type of image
       is in a drive, as none of the types has a magic number or signature.

       JV1 supports only single-sided, single-density diskettes, with directory on track 17.   Sectors  must  be
       256  bytes  long.  Use FORMAT (DIR=17) if you want to format JV1 disks with more (or less) than 35 tracks
       under LDOS.

       JV3 is much more flexible, though it still does not support everything the real controllers could do.  It
       is  probably  best to use JV3 for all the disk images you create, since it is the most widely implemented
       by other emulators, unless you have a special reason to use one  of  the  others.   A  JV3  disk  can  be
       formatted  with  128, 256, 512, or 1024-byte sectors, 1 or 2 sides, single or double density, with either
       an 0xFB (normal) or 0xF8 (deleted) data address mark on any sector.  On  single-density  JV3  disks,  the
       nonstandard  data  address  marks  0xFA  and 0xF9 are also available.  You cannot format a sector with an
       incorrect track number or head number.  You can format a sector with an intentional CRC error in the data
       field.  xtrs supports at most 5802 total sectors on a JV3 image.

       The  original Vavasour JV3 format supported only 256-byte sectors, and had a limit of 2901 total sectors.
       If you use sector sizes other than 256 bytes or format more than 2901 sectors on a disk image,  emulators
       other  than  xtrs  may  be  unable  to  read it.  Note that an 80 track, double-sided, double-density (18
       sector) 5¼-inch floppy will fit within the original 2901 sector limit; the extension to 5802 is primarily
       for emulation of 8-inch drives (discussed below).

       The DMK format is the most flexible.  It supports essentially everything that the original hardware could
       do, including all “protected” disk formats.  However, a few protected disks still may not work with  xtrs
       due  to limitations in xtrs's floppy disk controller emulation rather than limitations of the DMK format;
       see Bugs and limitations, below.

       The program mkdisk(1) makes a blank emulated floppy or “bulk erases” an existing one.  By default, mkdisk
       makes  a  JV3  floppy, but with the -1 flag it makes a JV1 floppy, or with the -k flag a DMK floppy.  See
       the mkdisk man page for more information.

       Early Model I operating systems used an 0xFA data address mark (DAM) for the directory on  single-density
       disks,  while  later ones wrote 0xF8 but would accept either upon reading.  The change was needed because
       0xFA is a nonstandard DAM that is fully supported only by the WD1771 floppy disk controller used  in  the
       Model  I;  the controllers in the Model III and 4 cannot distinguish between 0xFA and 0xFB (which is used
       for non-directory sectors) upon reading, and cannot write 0xFA.  To deal nicely with this  problem,  xtrs
       implements  the following kludge.  On writing in single density, an 0xF8 data address mark is recorded as
       0xFA.  On reading with an emulated WD1771 (available in Model I mode only), 0xFA is returned as 0xFA;  on
       reading  with  a  WD179x,  0xFA  is  returned  as 0xF8.  This trick makes the different operating systems
       perfectly compatible with each other, which is better than on a real Model I!  You can use  the  -truedam
       flag to turn off this kludge if you need to; in that case the original hardware is emulated exactly.

       TRS-80  programs  that  attempt  to measure the rotational speed of their floppy disk drives using timing
       loops will get the answers they expect, even when xtrs does not emulate instructions at the same speed as
       the  original  machines.  This works because xtrs keeps a virtual clock (technically, a T-state counter),
       which measures how much time it should have taken to execute the instruction stream on  a  real  machine,
       and it ties the emulation of floppy disk index holes to this clock, not to real time.

   Emulated 8-inch floppy disks
       In  addition to the four standard 5¼-inch drives, xtrs also emulates four 8-inch floppy drives.  There is
       no widely-accepted standard hardware interface for 8-inch floppies on the  TRS-80,  so  xtrs  emulates  a
       pseudo-hardware interface of its own and provides an LDOS/LS-DOS driver for it.

       Storage for the emulated 8-inch disks is in files named diskM-U, where M is the TRS-80 model (1, 3, 4, or
       4p) and U is the drive unit number (4, 5, 6, or 7).  The  only  difference  between  5¼-inch  and  8-inch
       emulated  drives is that the emulator allows you to format more bytes per track in the latter.  A new JV3
       floppy can be formatted as either 5¼-inch or 8-inch depending on whether you  initially  put  it  into  a
       5¼-inch  or 8-inch emulated drive.  A new DMK floppy, however, must be created with the -8 flag to mkdisk
       in order to be large enough for use in an 8-inch emulated drive.  JV1 floppies cannot be used  in  8-inch
       drives.   Be  careful  not  to  put  an  emulated  floppy into a 5¼-inch emulated drive after it has been
       formatted in an 8-inch emulated drive or vice versa; the results are likely to  be  confusing.   Consider
       using different file extensions for the two types; say, .dsk for 5¼-inch and .8in for 8-inch.

       To use the emulated 8-inch drives, you'll need a driver.  Under LDOS or LS-DOS, use the program XTRS8/DCT
       supplied on the emulated floppy utility.dsk.  This driver is a very  simple  wrapper  around  the  native
       LDOS/LS-DOS floppy driver.  Here are detailed instructions.

       First,  make  sure  an  appropriate  version of LDOS is in emulated floppy drive 0, and the supplied file
       utility.dsk is in another emulated floppy drive.  Boot LDOS.  If you are using  Model  I  LDOS,  be  sure
       FDUBL is running.

       Second,  type  the  following  commands.   Here d is the LDOS drive number you want to use for the 8-inch
       drive and u is the unit number you chose when naming the file.  Most likely you will choose d and u to be
       equal to reduce confusion.
              SYSTEM (DRIVE=d,DRIVER="XTRS8",ENABLE)
              Enter unit number ([4]-7): u
       You  can  repeat  these  steps  with different values of d and u to have more than one 8-inch drive.  You
       might want to repeat four times using 4, 5, 6, and 7, or you might want to save some  drive  numbers  for
       hard drives (see below).

       Finally,  it's  a  good  idea  to give the SYSTEM (SYSGEN) command (Model I/III) or SYSGEN command (Model
       4/4P).  This command saves the SYSTEM settings, so the 8-inch drives will be  available  again  the  next
       time you reboot or restart the emulator.  If you need to access an 8-inch drive after booting from a disk
       that hasn't been SYSGENed, simply use the same SYSTEM command again.

       In case you want to write your own driver for another TRS-80 operating system, here are  details  on  the
       emulated  pseudo-hardware.   The  8-inch  drives  are accessed through the normal floppy disk controller,
       exactly like 5¼-inch drives.  The four 5¼-inch drives  have  hardware  select  codes  1,  2,  4,  and  8,
       corresponding respectively to files diskM-0, -1, -2, and -3.  The four 8-inch drives have hardware select
       codes 3, 5, 6, and 7, corresponding respectively to files  diskM-4,  -5,  -6,  and  -7.   (See  also  the
       -sizemap option below, however.)

   Real floppy disks
       Under Linux only, any diskM-U file can be a symbolic link to a real floppy disk drive, typically /dev/fd0
       or /dev/fd1.  Most machines with “legacy” (ISA bus) floppy drive support should be able to read and write
       TRS-80-compatible  floppies  in this way.  Many floppy controllers cannot handle single density, however,
       and some may have problems even with double-density disks written on  a  real  TRS-80,  especially  disks
       formatted  by  older  TRS-80 operating systems.  Use the -doublestep flag if you need to read 35-track or
       40-track media in an 80-track drive.  If you need to write 35-track or  40-track  media  in  an  80-track
       drive,  bulk-erase  the  media  first  and  format it in the 80-track drive.  Don't write to a disk in an
       80-track drive if it has ever been written to in a 40-track drive.  The narrower head used in an 80-track
       drive cannot erase the full track width written by the head in a 40-track drive.

       If  you  link  one  of  the 5¼-inch floppy files (diskM-0 through diskM-3) to a real floppy drive, TRS-80
       programs will see it as a 5¼-inch drive, but the actual drive can be  either  3½-inch  or  5¼-inch.   The
       drive  will  be  operated  in double density (or single density), not high density, so be sure to use the
       appropriate media.

       If you link one of the 8-inch floppy files (diskM-4 through diskM-7)  to  a  real  floppy  drive,  TRS-80
       programs  will see it as an 8-inch drive.  Again, you need to use the XTRS8/DCT driver described above to
       enable LDOS/LS-DOS to access an 8-inch drive.  The real drive can be either 3½-inch, 5¼-inch, or  8-inch.
       A  3½-inch  or  5¼-inch drive will be operated in high-density mode, using MFM recording if the TRS-80 is
       trying to do double density, or FM recording if the TRS-80 is trying to do single density.  In this mode,
       these drives can hold as much data as a standard 8-inch drive.  In fact, a 5¼-inch HD drive holds exactly
       the same number of bits per track as an 8-inch drive; a 3½-inch HD drive can hold 20% more, but we  waste
       that  space when using one to emulate an 8-inch drive.  In both cases we also waste the top three tracks,
       since an 8-inch drive has only 77 tracks, not 80.

       The nonstandard 0xFA and 0xF9 data address marks available in single density on a real Model I  with  the
       WD1771  controller  also  need  special  handling.  A ISA-bus floppy disk controller can neither read nor
       write sectors with such DAMs at all.  This raises three issues.

       1.     It will be impossible for you to read some Model I disks on your  machine  even  if  it  otherwise
              supports single density.  In particular, Model I TRSDOS 2.3 directory tracks will be unreadable.

       2.     On writing in single density, xtrs silently records a 0xF9 or 0xFA DAM as 0xF8.

       3.     On  reading  in  single  density  with an emulated WD1771 (Model I mode only), 0xF8 is returned as
              0xFA.  If you need more accurate behavior, the -truedam  flag  will  turn  on  error  messages  on
              attempts to write 0xF9 or 0xFA DAMs and will turn off translation of 0xF8 to 0xFA on reading.

       Hint:  Be  sure  to set the drive type correctly in your machine's firmware.  Linux and xtrs rely on this
       information to know how fast your drives are spinning and hence what data rate to use  when  reading  and
       writing.  All 3½-inch drives spin at 300 rpm.  Newer 5¼-inch high-density capable drives (“1.2MB” drives)
       normally always spin at 360 rpm.  (Some can be jumpered to slow down to 300 rpm  when  in  double-density
       mode,  but  you  should  not do that when connecting one to a floppy disk controller designed for ISA-bus
       machines.  Older 5¼-inch drives that cannot do high density (“180kB”, “360kB”, or “720kB” 5¼-inch drives)
       always  spin at 300 rpm.  All 8-inch drives spin at 360 rpm.  If you plug an 8-inch drive into an ISA-bus
       floppy disk controller—this requires a 50-pin to 34-pin adaptor cable—tell your firmware  that  it  is  a
       5¼-inch 1.2MiB drive.

   Emulated hard disks
       xtrs  can  emulate  a  hard  disk  in a file in one of two ways: it can use a special, xtrs-specific LDOS
       driver called XTRSHARD/DCT, or it can emulate the Radio Shack hard drive controller (based on the Western
       Digital WD1010) and use the native drivers for the original hardware.

       Using XTRSHARD/DCT
              The  XTRSHARD/DCT  driver  has  been tested and works under both LDOS 5.3.1 for Model I or III and
              TRSDOS/LS-DOS 6.3.1 for Model 4/4P.  It may or may not  work  under  earlier  LDOS  versions.   It
              definitely  will  not work under other TRS-80 operating systems or with emulators other than xtrs.
              The hard disk format was designed by Matthew Reed for his Model I/III and Model 4 emulators;  xtrs
              duplicates the format so that users can exchange hard drive images across the emulators.

              To  use XTRSHARD/DCT, first run the mkdisk(1) program to create a blank hard drive (.hdv) file.  A
              typical usage would be mkdisk -h myhd.hdv.  See the mkdisk man page for other options.

              Second, link the file to an appropriate name.  XTRSHARD/DCT supports up to eight hard drives, with
              names of the form hardM-U, where M is the TRS-80 model (1, 3, or 4; in this case the Model 4P also
              uses M=4) and U is a unit number in the range 0–7.  It looks for these files in the same directory
              as the floppy disk files diskM-U.

              Third,  make  sure  an appropriate version of LDOS is in emulated floppy drive 0, and the supplied
              file utility.dsk is in another emulated floppy drive.  Boot LDOS.  If you are using Model  I  LDOS
              5.3.1,  patch  a  bug  in the FORMAT command by typing PATCH FORMAT/CMD.UTILITY M1FORMAT/FIX.  You
              need to apply this patch only once.  It must not be applied to Model III or Model 4/4P LDOS.

              Fourth, type the following commands.  Here d is the LDOS drive number you want to use for the hard
              drive  (a typical choice would be 4) and u is the unit number you chose when naming the file (most
              likely 0).
                     SYSTEM (DRIVE=d,DRIVER="XTRSHARD",ENABLE)
                     Enter unit number ([0]-7): u
                     FORMAT d (DIR=1)
              Answer the questions asked by FORMAT as you prefer.  The DIR=1 parameter to FORMAT is optional; it
              causes  the hard drive's directory to be on track 1, making the initial size of the image smaller.
              You can repeat these steps with different values of d and u to have more than one hard drive.

              Finally, it's a good idea to give the SYSTEM (SYSGEN) command  (Model  I/III)  or  SYSGEN  command
              (Model  4/4P).   This  command saves the SYSTEM settings, so the drive will be available again the
              next time you reboot or restart the emulator.

              If you need to access the hard disk file after booting from a floppy that  hasn't  been  SYSGENed,
              simply  use  the  same  SYSTEM command(s) again, but don't FORMAT.  You can freely use a different
              drive number or (if you renamed the hard disk file) a different unit number.

              The F7 key currently doesn't allow XTRSHARD/DCT disk changes to be recognized, but you can  change
              to a different hard disk file for the same unit by renaming files as needed and rebooting LDOS.

              Technical  note: XTRSHARD/DCT is a small Z80 program that implements all the required functions of
              an LDOS disk driver.  Instead of talking to a real (or emulated) hard disk controller, however, it
              uses  special  support in xtrs that allows Z80 programs to open, close, read, and write Unix files
              directly.  This support is described further in Data import and export, below.

       Using native hard disk drivers
              Beginning in version 4.1, xtrs also emulates the Radio Shack hard disk controller  (based  on  the
              Western  Digital  WD1010) and will work with the native drivers for this hardware.  This emulation
              uses the same hard drive (.hdv)  file  format  that  XTRSHARD/DCT  does.   With  LDOS/LS-DOS,  the
              RSHARDx/DCT  and  TRSHD/DCT  drivers  are  known  to  work.  With Montezuma CP/M 2.2, the optional
              Montezuma hard disk drivers are known to work.  The hard disk drivers for NEWDOS/80 and for  Radio
              Shack CP/M 3.0 should work, but they have not yet been tested at this writing.  Any bugs should be
              reported.

              To get started, run the mkdisk(1) program to create a blank hard drive  (.hdv)  file.   A  typical
              usage would be mkdisk -h myhd.hdv.  See the mkdisk man page for other options.

              Second,  link  the  file  to  an  appropriate name.  The WD1010 emulation supports up to four hard
              drives, with names of the form hardM-U, where M is the TRS-80 model (1, 3, 4, or 4p) and  U  is  a
              unit  number  in the range 0–3.  It looks for these files in the same directory as the floppy disk
              files diskM-U.  If no such files are present, xtrs disables the WD1010 emulation.

              Note that if hard drive unit 0 is present on a Model 4P (file hard4p-0), the Radio Shack boot  ROM
              will always try to boot from it, even if the operating system does not support booting from a hard
              drive.  If you have this problem, either hold down F2 while booting to force the ROM to boot  from
              floppy, or simply avoid using unit number 0.  Stock TRSDOS/LS-DOS 6 systems do not support booting
              from a hard drive; M.A.D. Software's HBUILD6 add-on to LS-DOS for hard drive booting should  work,
              but is untested.  Montezuma CP/M 2.2 does boot from the emulated hard drive.

              Finally,  obtain  the  correct  driver  for  the  operating  system  you  will  be using, read its
              documentation, configure the driver, and format the drive.  Detailed instructions are  beyond  the
              scope of this manual page.

   Data import and export
       Several  Z80  programs for data import and export from various TRS-80 operating systems are included with
       xtrs on two emulated floppy images.  These programs use special support in the emulator to read and write
       external Unix files, discussed further at the end of this section.

       The  emulated  floppy  utility.dsk  contains some programs for transferring data between the emulator and
       ordinary Unix files.  IMPORT/CMD, EXPORT/CMD, and SETTIME/CMD run  on  the  emulator  under  Model  I/III
       TRSDOS, Model I/III LDOS, Model I/III NEWDOS/80, and Model 4/4P TRSDOS/LS-DOS 6; they may also work under
       other TRS-80 operating systems.  Model III TRSDOS users will have to use TRSDOS's CONVERT command to read
       utility.dsk.

       IMPORT/CMD
              imports a Unix file and writes it to an emulated disk.

              Usage: IMPORT [-lne] unixfile [trsfile]

              The  -n  flag  converts Unix newlines (\n) to TRS-80 newlines (\r).  The -l flag converts the Unix
              filename to lowercase, to compensate for TRS-80 operating systems such as NEWDOS/80  that  convert
              all  command-line  arguments to uppercase.  When using the -l flag, you can put a [ or up-arrow in
              front of a character to keep it in uppercase.  Give the -e flag if your  TRS-80  operating  system
              uses  the  NEWDOS/80  convention for representing the ending record number in an open file control
              block.  This should be detected automatically for NEWDOS/80 itself and for TRSDOS 1.3, but  you'll
              need  to give the flag for DOSPLUS and possibly other non-LDOS operating systems.  If you need the
              flag but don't give it (or vice versa), imported files will come out the  wrong  length.   If  the
              destination file is omitted, IMPORT uses the last component of the Unix pathname, but with any “.”
              changed to “/” to match TRS-80 DOS file extension syntax.

       EXPORT/CMD
              reads a file from an emulated disk and exports it to a Unix file.

              Usage: EXPORT [-lne] trsfile [unixfile]

              The -n flag converts TRS-80 newlines (\r) to Unix newlines (\n).  The -l flag  converts  the  Unix
              filename  to  lowercase.   When  using  the  -l  flag,  you  can put a [ or up-arrow in front of a
              character to keep it in uppercase.  Give the -e flag if your  TRS-80  operating  system  uses  the
              NEWDOS/80  convention  for  representing  the  ending record number in an open file control block.
              This should be detected automatically for NEWDOS/80 itself and for TRSDOS 1.3, but you'll need  to
              give the flag for DOSPLUS and possibly other non-LDOS operating systems.  If you need the flag but
              don't give it (or vice versa), imported files will come out the wrong length.  If the  destination
              file  is  omitted,  EXPORT uses the TRS-80 filename, but with any “/” changed to “.” to match Unix
              file extension syntax.

              Note: The export of files from xtrs may be prohibited by the -emtsafe flag; see Options, below.

       SETTIME/CMD
              reads the date and time from Unix and sets the TRS-80 DOS's date and time accordingly.

       The next several programs were written in Misosys C and exist in two versions on  utility.dsk.   The  one
       whose name ends in “6” runs on Model 4 TRSDOS/LS-DOS 6.x; the other runs on LDOS 5.x and most other Model
       I/III operating systems.

       CD/CMD (or CD6/CMD) changes xtrs's current working directory under Unix.

              Usage: CD [-l] unixdir

              The -l flag converts the Unix directory name to lowercase.  When using the -l flag, you can put  a
              [  or  up-arrow  in  front of a character to keep it in uppercase.  Running CD/CMD will change the
              interpretation of any relative pathnames given to IMPORT or  EXPORT.   It  will  also  change  the
              interpretation  of  disk  names at the next disk change, unless you specified an absolute pathname
              for xtrs's -diskdir parameter.

              Note: The change of xtrs's current working directory may be prohibited by the -emtsafe  flag;  see
              Options, below.

       PWD/CMD
              (or PWD6/CMD) prints xtrs's current working directory under Unix.

       UNIX/CMD
              (or UNIX6/CMD) runs a Unix shell command.

              Usage: UNIX [-l] unix-command-line

              The  -l flag converts the Unix command line to lowercase.  When using the -l flag, you can put a [
              or up-arrow in front of a character to keep it in uppercase.  Standard I/O for  the  command  uses
              the  xtrs program's standard I/O descriptors; it does not go to the TRS-80 screen or come from the
              TRS-80 keyboard.

              Note: The execution of Unix shell commands may be prohibited by the -emtsafe  flag;  see  Options,
              below.

       MOUNT/CMD
              (or MOUNT6/CMD) is a convenience program that switches emulated floppy disks in the drives.

              Usage: MOUNT [-l] unixfile unit-number

              The  -l  flag converts unixfile to lowercase.  When using the -l flag, you can put a [ or up-arrow
              in front of a character to keep it in uppercase.  unixfile is any Unix filename; unit-number is  a
              single  digit, 0 through 7.  The command deletes the file diskM-U (where M is the TRS-80 model and
              U is the given unit-number) from the disk directory (see the -diskdir option below),  replaces  it
              with a symbolic link to the given filename, and signals a disk change (as if F7 had been pressed).

              Note:  The  mounting  of  a  Unix file as a disk image may be prohibited by the -emtsafe flag; see
              Options, below.

       UMOUNT/CMD
              (or UMOUNT6/CMD) is a convenience program that removes an emulated floppy disk from a drive.

              Usage: UMOUNT unit-number

              unit-number is a single digit, 0 through 7.  The command deletes the file diskM-U (where M is  the
              TRS-80  model  and  U  is  the given unit-number) from the disk directory (see the -diskdir option
              below), and signals a disk change (as if F7 had been pressed).

              Note: The unmounting of a Unix file as a disk image by deleting it on the host may  be  prohibited
              by the -emtsafe flag; see Options, below.

       The emulated floppy cpmutil.dsk contains import and export programs for Montezuma CP/M, written by Roland
       Gerlach.  It was formatted as a “Montezuma Micro Standard DATA disk (40T, SS, DD, 200K)”,  with  512-byte
       sectors.   Be  careful  to configure your CP/M to the proper disk format and drive parameters (40 tracks,
       not 80), or you will have confusing problems reading this disk.  Documentation is included  in  the  file
       cpmutil.html  and  source  code  in  the  file  cpmutil.tgz  (a  gzipped  tar archive) in the xtrs source
       distribution.

       The emulator implements a set of pseudo-instructions (emulator traps) that give TRS-80 programs access to
       Unix  files.  The programs listed above use them.  If you would like to write your own such programs, the
       traps are documented in the file trs_imp_exp.h.  Assembler source  code  for  the  existing  programs  is
       supplied  in  xtrshard.z,  import.z,  export.z,  and settime.z.  You can also write programs that use the
       traps in Misosys C, using the files xtrsemt.h and xtrsemt.ccc as an interface; a  simple  example  is  in
       settime.ccc.  All of these files are available in the xtrs source distribution.

   Interrupts
       The  emulator  supports  only  interrupt  mode  1  of  the Z80.  It will complain if your program enables
       interrupts after powerup without executing an IM 1 instruction first.  All Model I/III/4/4P software does
       this, as the built-in peripherals in these machines support only IM 1.  The Model I has a 40 Hz heartbeat
       clock interrupt, while the Model III uses 30 Hz, and the Model 4/4P can run at either 30  Hz  or  60  Hz.
       The  emulator  has a notion of the absolute time at which each tick is supposed to occur, and it asks the
       host system to wake it up at each of those times.  The net result is that some ticks  may  be  late,  but
       there  are always the proper number of ticks per second.  For example, running in Model I mode on a Linux
       kernel configured with HZ=100, you'd see this pattern: (tick, 30ms, tick, 20ms, ...) instead  of  a  tick
       every 25ms.

   Processor speed selection
       A  standard  Model  4  has  a  software-controlled switch to select operation at either 4.05504 MHz (with
       heartbeat clock at 60 Hz) or 2.02752 MHz (with heartbeat clock at 30 Hz).  xtrs emulates this feature.

       Model I machines were often modified to operate at higher speeds than the standard 1.77408 MHz.  With one
       common  modification,  writing  a 1 to port 0xFE would double the speed to 3.54816 MHz, while writing a 0
       would set the speed back to normal.  The heartbeat clock runs at 40 Hz in  either  case.   xtrs  emulates
       this feature as well.

   Sound
       Sound  support  uses the Open Sound System (OSS) /dev/dsp device, standard on Linux and available on many
       other Unix versions as well.  This support is compiled in automatically on Linux;  if  you  have  OSS  on
       another  version of Unix, you'll need to define the symbol HAVE_OSS in the source distribution's Makefile
       or in trs_cassette.c.  Any time TRS-80 software tries to write non-zero values to the cassette  port  (or
       the  Model  4/4P  optional  sound  port)  with the cassette motor off, it is assumed to be trying to make
       sounds and xtrs opens /dev/dsp.  It automatically closes the device again after a few seconds of silence.

       If you are playing a game with sound, you'll want to use the -autodelay flag  to  slow  down  instruction
       emulation  to  approximately  the  speed  of  a real TRS-80.  If you don't do this, sound will still play
       correctly, but the gameplay may be way too fast and get ahead of the sound.

       On the other hand, if your machine is a bit too slow, you'll hear gaps and pops in  the  sound  when  the
       TRS-80  program  lags  behind  the  demand  of  the  sound card for more samples.  The -autodelay feature
       includes a small speed boost whenever a sound starts to play to try to prevent this, but if the boost  is
       too much or too little, you might either find that the game runs too fast when a lot of sound is playing,
       or that the sound has gaps in it anyway.  If your sound has gaps, you can try reducing  the  sample  rate
       with the -samplerate flag.

       The  Orchestra-85  music synthesis software will run under xtrs's Model I emulation, and the Orchestra-90
       software will run with Model III operating systems under xtrs's Model III, 4, or 4P emulation.  For  best
       results,  use  Orchestra-90  and  the  Model  4  emulation,  as this lets the software run at the highest
       emulated clock rate (4 MHz) and thus generate the best sound.  If you want to run  Orchestra-85  instead,
       you  can tell it that you have a 3.5 MHz clock speedup with enable sequence 3E01D3FE and disable sequence
       3E00D3FE; this will let the software run twice as fast as on an unmodified Model I  and  generate  better
       sound.   There  is no need to use xtrs's -autodelay flag when running Orchestra-85/90, but you might want
       to specify a small fixed delay to keep from getting excessive key repeat.

   Mouse
       A few Model 4 programs could use a mouse, such as the shareware hi-res  drawing  program  MDRAW-II.   The
       program  XTRSMOUS/CMD on the utility disk (utility.dsk) is a mouse driver for Model 4/4P mode that should
       work with most such programs.  xtrs does not emulate the actual mouse hardware (a  serial  mouse  plugged
       into the Model 4 RS-232 port), so the original mouse drivers will not work under xtrs.  Instead, XTRSMOUS
       accesses the X mouse pointer using an emulator trap.  XTRSMOUS implements the same  TRSDOS/LS-DOS  6  SVC
       interface as the David Goben and Matthew Reed mouse drivers.  (It does not implement the interface of the
       older Scott McBurney mouse driver, which may be required by some programs.)

       By default XTRSMOUS installs itself in high memory.  This is done because MDRAW-II tests for the presence
       of  a  mouse  by  looking  to  see  whether  the  mouse SVC is vectored to high memory.  If the driver is
       installed in low memory, MDRAW thinks it is not there at all.  If you use mouse-aware programs that don't
       have this bug, or if you edit the first line of MDRAW to remove the test, you can install XTRSMOUS in low
       memory under TRSDOS/LS-DOS 6 using the syntax XTRSMOUS (LOW).

   Time-of-day clock
       Several battery-backed time of day clocks  were  sold  for  the  various  TRS-80  models,  including  the
       TimeDate80,  TChron1, TRSWatch, and T-Timer.  They are essentially all the same hardware, but reside at a
       few different port ranges.  xtrs currently emulates them at port ranges 0x70–0x7C and 0xB0–0xBC.  The  T-
       Timer port range at 0xC0–0xCC conflicts with the Radio Shack hard drive controller and is not emulated.

       These  clocks  return  only a 2-digit year, and it is not well-documented what their driver software does
       since the year 2000.  If you have software that works  with  one  of  them,  please  contact  the  author
       ⟨http://www.tim-mann.org/⟩ to report what happens when it is used with xtrs.

       Also see SETTIME/CMD in Data import and export, above, for another way to get the correct time into a Z80
       operating system running under xtrs.

       Note that Model I TRSDOS and VTOS 4.0 have a “year 1988” problem,  and  LDOS/LS-DOS  has  a  “year  2012”
       problem; see LDOS and LS-DOS: 2012 and Beyond  Technical informationhttp://www.trs-80.org/ldos-and-ls-
       dos-2012-and-beyond-technical-information/⟩ by Matthew Reed.

   Joystick
       Pressing a key on a PC-keyboard-style numeric keypad with NumLock disengaged emulates the Alpha  Products
       joystick.   See  Keys,  above,  for  details.   The  emulated joystick is mapped only at port 0, to avoid
       conflicts with other devices.

   Running games
       Some games run rather well under xtrs provided that your machine is fast enough to run the  emulation  in
       real  time and that you choose the right command-line options.  Galaxy Invaders Plus by Big 5 Software is
       particularly good.  You will usually want to turn on autodelay, and if your machine is slow you may  need
       to  reduce  the  sound sample rate.  Running your X server in 8-bit/pixel mode also seems to help in some
       cases.  Example command lines:
              $ startx -- -bpp 8
              $ xtrs -autodelay

       If you have a slow machine and the sound breaks up, it is possible that your machine is not  fast  enough
       to  generate  samples  at  the  default  rate  of  44,100  Hz.   If  you think this may be happening, try
       -samplerate 11025 or even -samplerate 8000.

Options

       Defaults for all options can be specified using the standard  X  resource  mechanism;  see  the  Resource
       Manager  Functions  chapter  of  Xlib    C Language X Interfaceftp://www.x.org/pub/current/doc/libX11/
       libX11/libX11.html#Resource_Manager_Functions⟩ by Jim Gettys, Robert W. Scheifler, et al.  The class name
       for xtrs is Xtrs.

       -display x-display
              Set your X display to x-display.  The default is to use the DISPLAY environment variable.

       -iconic
              Start with the xtrs window iconified.

       -background color
       -bg color
              Set the background color of the xtrs window to color.

       -foreground color
       -fg color
              Set the foreground color of the xtrs window to color.

       -title title-text
              Use title-text in the window title bar instead of the program name.

       -borderwidth width
              Put a border of width pixels around the TRS-80 display.  The default is 2.

       -scale xfac[,yfac]
              Multiply  the horizontal and vertical window size by xfac and yfac, respectively.  Possible values
              are integers in the range [1,4] for xfac and [1,8] for yfac.  Defaults are xfac=1 and yfac=2×xfac.
              Ignored if -usefont is given.

       -resize
              In  Model III or 4/4P mode, resize the X window whenever the emulated display mode changes between
              64×16 text (or 512×192 graphics) and 80×24 text (or 640×240 graphics).  This  is  the  default  in
              Model  III  mode, since 80×24 text is not available and the 640×240 graphics add-on card is seldom
              used.

       -noresize
              In Model III or 4/4P mode, always keep the X  window  large  enough  for  80×24  text  or  640×240
              graphics,  putting  a blank margin around the outside when the emulated display mode is 64×16 text
              or 512×192 graphics.  This is the default in Model 4/4P mode, since otherwise there is an annoying
              size switch during every reboot.

       -charset charset-name
              Select  among  several sets of built-in character bitmaps.  Valid values of charset-name depend on
              the TRS-80 model being emulated.

              In Model I mode, five sets are available.  The default, wider, is a modified Model  III  set  with
              characters  8 pixels wide; it looks better on a modern computer screen with square pixels than the
              real Model I fonts, which were 6 pixels wide.  lcmod is  the  character  set  in  the  replacement
              character  generator  that  was  supplied  with  the  Radio Shack lowercase modification.  (It was
              reconstructed partly from memory and may have some minor bit errors.)  stock is the character  set
              in the stock character generator supplied with most uppercase-only machines.  Since xtrs currently
              always emulates the extra bit of display memory needed to support lowercase,  this  character  set
              gives  you  the  authentic,  unpleasant  effect  that real Model I users saw when they tried to do
              homebrew lowercase modifications without replacing  the  character  generator:  lowercase  letters
              appear  at  an  inconsistent  height,  and if you are using the Level II BASIC ROM display driver,
              uppercase letters are replaced by meaningless symbols.  early is the same as stock, but  with  the
              standard  ASCII  characters  [,  \,  ],  and  ^  in  the positions where most Model I machines had
              directional arrows.  This was the default programming in the Motorola character generator ROM that
              Radio  Shack  used, and a few early machines were actually shipped with this ROM.  Finally, german
              or genie gives an approximate emulation of the GENIE, a German Model I clone.   Characters  are  8
              pixels wide, and double width is supported even though later GENIE models did not include it.

              In  Model  III, 4, and 4P modes, three sets are available: katakana (the default for Model III) is
              the original Model III set with Japanese Katakana characters in the alternate character positions.
              This  set was also used in early Model 4 machines.  international (the default for Model 4 and 4P)
              is a later Model 4 set with accented Roman letters in the alternate positions.  bold is a boldface
              set from a character generator ROM found in one Model III—origin uncertain.

       -usefont
              Use X fonts instead of the built-in character bitmaps.

       -nofont
              Use the built-in character bitmaps, not an X font.  This is the default.

       -font font-name
              If -usefont is also given, use the X font font-name for normal-width characters.  The default uses
              a common X fixed-width font: "-misc-fixed-medium-r-normal--20-200-75-75-*-100-iso8859-1".

       -widefont font-name
              If -usefont is also given, use the X font font-name for double-width characters.  The default uses
              a    common    X    fixed-width    font,    scaled   to   double   width:   "-misc-fixed-medium-r-
              normal--20-200-75-75-*-200-iso8859-1".

       -nomicrolabs
              In Model I mode, emulate the HRG1B 384×192 hi-res graphics card.  In Model III mode or Model  4/4P
              mode, emulate the Radio Shack hi-res card.  This is the default.

       -microlabs
              In Model III or 4/4P mode, emulate the Micro Labs Grafyx Solution hi-res graphics card.  Note that
              the Model III and Model 4/4P cards from Micro Labs are very different from one another.

       -debug Enter zbx, the Z80 debugger.

       -romfile filename
       -romfile3 filename3
       -romfile4p filename4p
              Use the ROM image file specified by filename in Model I mode, by filename3 in Model III and  Model
              4  mode,  or  by filename4p in Model 4P mode.  A ROM image file can be either a raw binary dump in
              Intel hex format, or TRS-80 CMD format (for example, a MODELA/III file).  If you do not  set  this
              option  or  the  corresponding X resource, a default established at compile time is used (if any);
              see Makefile.local in the xtrs source distribution for instructions on compiling  in  default  ROM
              image files or default ROM image filenames.

       -model m
              Emulate  a  TRS-80  Model  m.  Values accepted are 1 or I (Model I), 3 or III (Model III), 4 or IV
              (Model 4), and 4P or IVP (Model 4P).  Model I is the default.

       -delay d
              Tune the emulator's (crude) speed control.  After each Z80  instruction,  xtrs  busy-waits  for  d
              iterations  around  an empty loop.  A really smart C optimizer might delete this loop entirely, so
              it's possible that this option won't work if xtrs is compiled with too high an optimization level.
              The default delay is 0.

       -autodelay
              Dynamically adjust the value of the speed control described in -delay above to run instructions at
              roughly the same rate as a real machine.  The tracking is only approximate, but it can  be  useful
              for running games.

       -noautodelay
              Turn off -autodelay.  This is the default.

       -keystretch cycles
              Fine-tune  the  keyboard  behavior.   To  prevent keystrokes from being lost, xtrs “stretches” the
              intervals between key transitions, so that the Z80 program has time to see each transition  before
              the  next one occurs.  Whenever the Z80 program reads the keyboard matrix and sees an emulated key
              go up or down, xtrs waits cycles Z80 clock cycles (T-states) before it allows the program  to  see
              another  key  transition.  Key transitions that are received during the waiting period or when the
              Z80 program is not reading the keyboard are held in a queue.  The default stretch  value  is  4000
              cycles; it should seldom if ever be necessary to change it.

       -shiftbracket
              Emulate [, \, ], ^ and _ as shifted keys, and {, |, }, and ~ as unshifted.  This is the default in
              Model 4 and 4P modes, and it works well with the keyboard driver in Model 4 TRSDOS/LS-DOS 6.

       -noshiftbracket
              Emulate [, \, ], ^ and _ as unshifted keys, and {, |, }, and ~ as shifted.  This is the default in
              Model  I  and  III modes, and it works well with many TRS-80 keyboard drivers.  With some keyboard
              drivers these keys do not work at all, however.

       -diskdir dir
              Set the search directory for floppy and hard disk images to dir.  If the value  starts  with  “~/”
              (or  is  just  “~”),  it is relative to your home directory (as determined by the HOME environment
              variable).  The default value is “.”.

       -doubler doubler-type
              (Model I mode only) Set the double-density adaptor to emulate to doubler-type.  The parameter  may
              be  percom,  radioshack  (or  tandy),  both,  or  none.   doubler-type  may  be abbreviated to one
              character.  The default is both, which causes the double density adaptor emulation to  respond  to
              the special commands of both the Percom and Radio Shack cards.

       -doublestep
              (Linux  only)  Make  all  real  floppy drives double-step, allowing access to 35-track or 40-track
              media in an 80-track drive.  See Bugs and limitations, below.

       -nodoublestep
              (Linux only) Turn off double-step mode for all real floppy drives.  This is the default.

       -stepmap s0[,s1[,s2[,s3[,s4[,s5[,s6[,s7]]]]]]]
              (Linux only) Selectively set double-step mode for individual  real  floppy  drives.   Each  comma-
              delimited  parameter corresponds to a drive unit number; see Real floppy disks, above.  If sU is 1
              and diskM-U is a (symbolic link to) a real drive, where M is the TRS-80 model (1, 3, 4, or 4p) and
              U  is the drive unit number (a digit in the range 0–7), the drive will be single-stepped; if sU is
              2, it will be double-stepped.  You can omit values from the end of the list; those drives will get
              the default value set by -doublestep or -nodoublestep.

              Example: -model 1 -stepmap 2,1,2 double-steps disk1-0 and disk1-2, and single-steps disk1-1.

       -sizemap z0[,z1[,z2[,z3[,z4[,z5[,z6[,z7]]]]]]]
              Selectively  set  whether  drives  are  emulated  as 5¼-inch or 8-inch; see Emulated 8-inch floppy
              disks, above.  If zU is 5, the drive will appear to Z80 software as 5¼-inch; if 8, as 8-inch.  The
              default setting (as reflected in the documentation above) is 5,5,5,5,8,8,8,8.  You can omit values
              from the end of the list; those drives will get the default values.  Setting one or  more  of  the
              first  four drives to 8-inch may be useful for CP/M software that supports 8-inch drives.  You can
              also use XTRS8/DCT with 8-inch drives in the first four positions; even though the prompt suggests
              the  unit  number  must  be  4–7, numbers 0–3 are accepted.  XTRS8 does not check whether the unit
              you've selected is really being emulated as an 8-inch drive, however;  you'll  simply  get  errors
              during FORMAT if you get this wrong.

       -truedam
              Turn off the single density data address mark remapping kludges described in Emulated floppy disks
              and Real floppy disks, above.  With this option given, the distinction between 0xF8 and 0xFA  data
              address  marks  is  strictly  observed  on  both writing and reading.  This option is probably not
              useful unless you need to deal with Model I disks that use the distinction  as  part  of  a  copy-
              protection scheme.  See also Common File Formats for Emulated TRS-80 Floppy Diskshttp://www.tim-
              mann.org/trs80/dskspec.html⟩.

       -notruedam
              The opposite of -truedam.  This setting is the default.

       -samplerate rate
              Set the sample rate for new cassette WAVE files, direct cassette I/O to the sound card,  and  game
              sound output to the sound card.  Existing WAVE files will be read or modified using their original
              sample rate regardless of this flag.  The default is 44,100 Hz.  See also cassette(1).

       -serial terminal-name
              Set the terminal device to be used for I/O to the TRS-80's  serial  port  to  terminal-name.   The
              default  is /dev/ttyS0 on Linux, and /dev/tty00 on other versions of Unix.  Setting the name to be
              empty (-serial "") emulates having no serial port.

       -switches value
              Set the sense switches on the Model I serial port card.  This option is meaningful only in Model I
              mode,  and  only when the -serial option is not set to "".  The default value is 0x6F, which Radio
              Shack software conventionally interprets as 9600 bps, 8 bits/word, no parity, 1 stop bit.

       -emtsafe
              Disable emulator traps (see Data import and export, above) that could write to  host  files  other
              than  disk  images  in  the  original emulated disk directory, or otherwise affect the host system
              (e.g., Unix shell commands).  This setting is the default.

       -noemtsafe
              The opposite of -emtsafe.

Exit status

       xtrs primarily uses diagnostic messages to indicate trouble.

       0      Successful operation; normal or expected exit.

       1      Fatal error; includes usage errors such as unrecognized command-line arguments.

       -1, 255
              Unable to open X display.

Environment

       xtrs reads a couple of environment variables.

       DISPLAY
              is read indirectly via XOpenDisplay(3), and specifies the X server to which  xtrs  (an  X  client)
              should connect.

       HOME   is  used  at  startup to (1) locate .Xdefaults and Xtrs files specifying defaults for command-line
              options and (2) resolve the argument to the -diskdir option; and sometimes when the emulator  trap
              to change xtrs's current working directory is activated; see Data import and export, above.

Files

       xtrs  may  access  files  as described under HOME in Environment, above, as well as floppy drive, digital
       signal processor (sound), and terminal device files; see Real floppy disks and Sound, above, and  -serial
       under Options, above.

       If  the  -emtsafe  flag  is  not  in  effect, then through the use of emulator traps (see Data import and
       export, above) arbitrary files on the system may be read, written, or deleted from  within  the  emulator
       with the privileges of the user invoking xtrs.

Bugs and limitations

       The  emulated  serial  port's  modem  status  and control signals are not tied to the signals on the real
       serial port, because the real signals are not available to software  through  the  Unix  terminal  device
       interface.   The  ability  to check for parity, framing, and overrun errors and receive an interrupt when
       one occurs is not emulated.  Unix does not support 2000, 3600, or 7200 baud, so these TRS-80  data  rates
       are remapped to 38400, 57600, and 115200 baud respectively.

       A better signal processing algorithm might help read real cassettes more reliably, especially at 1500bps.

       Some features of the floppy disk controller are not currently emulated.

       •      Force Interrupt with condition bits 0x01, 0x02, or 0x04 is not implemented.

       •      Read Track is implemented only for DMK emulated floppies.

       •      The multiple-sector flags in Read and Write are not implemented.

       •      The  timing  of  returned  sectors  is  emulated  only  for the Read Address command, and not very
              accurately for JV1 or JV3.

       •      If a disk has more than one sector with the same number on a track, xtrs will always see the first
              (counting  from  the index hole) when reading or writing; a real machine would see the next one to
              come under the head  depending  on  the  current  rotational  position  of  the  disk.   Partially
              reformatting  a track (which TRS-80 programs like HyperZap and Model I Super Utility do to achieve
              mixed density) is supported for DMK but not JV3; however,  switching  densities  while  formatting
              (which Model III and 4 Super Utility do) works on both DMK and JV3.

       Real  physical  floppy  disks  are  supported  only  under Linux, because Unix does not define a portable
       interface to the low-level floppy controller functionality that xtrs needs.  There are  some  limitations
       even  under  Linux:  index  holes  are  faked,  not detected on the real disk, and the timing of returned
       sectors is not emulated at all.  Due  to  the  limitations  of  ISA-bus  floppy  disk  controllers,  when
       formatting  a  physical  floppy  under xtrs, you cannot mix sectors of different sizes on the same track,
       switch densities in the middle of a track, or reformat only part of a track.  However, xtrs can read  and
       write to physical floppies that have already been formatted in these ways (perhaps by a real TRS-80).

       The  extended  JV3  limit  of 5802 sectors is somewhat arbitrary.  It could be raised by generalizing the
       code to permit more than two blocks of 2901, but this does not seem too useful.  5802 sectors is  already
       enough for a 3½-inch HD (1.44MB) floppy, which the TRS-80 didn't support anyway.  If you need more space,
       use emulated hard drives instead of emulated floppies with huge numbers of tracks.

       XTRSHARD/DCT ignores the internal write-protected flag in hard drive images, but a hard drive  image  can
       still be effectively write protected by turning off its Unix write permission bits.

       The  emulator  uses  a heuristic to decide what format a ROM image file is in.  If a raw binary ROM image
       starts with 0x01, 0x05, or 0x22, it can be misidentified as being in a different format.  This is  rather
       unlikely to occur, as ROMs typically begin with 0xF3, the DI instruction.

       The joystick emulation could be made to work with real joysticks using the X Input extension, but this is
       not implemented yet.

       If you discover other bugs, write fixes for any of these, or make any other enhancements, please  let  us
       know so that we can incorporate the changes into future releases.

Authors and acknowledgements

       xtrs 1.0 was written by David Gingold and Alec Wolman.  The current version was revised and much extended
       by Timothy Mann (see ⟨http://www.tim-mann.org/⟩).   See  README  in  the  xtrs  source  distribution  for
       additional  notes  from  the  authors;  a  (compressed)  copy  may  be  locally  available with your xtrs
       installation at /usr/share/doc/xtrs/README.gz.

       We also thank the following people for their help.  The  JV1  and  JV3  floppy  disk  file  formats  were
       designed by Jeff Vavasour, originally for his MS-DOS-based TRS-80 emulators.  The DMK format was designed
       by David Keil for his MS-DOS-based TRS-80 emulator.  The hard disk file format was  designed  by  Matthew
       Reed  for  his  MS-DOS-based TRS-80 emulators.  Al Petrofsky and Todd P. Cromwell III supplied font data.
       Roland Gerlach contributed the CP/M import and export programs as well as several bug reports  and  fixes
       for  the  emulator  itself.  Ulrich Mueller added the -borderwidth option, improved the -scale option and
       the bitmap font scaling, ported the IMPORT, EXPORT, and SETTIME utilities to NEWDOS/80,  and  contributed
       the  HRG1B  emulation.   Branden  Robinson  supplied  the  first  version of the cassette man page, fixed
       Makefile bugs, translated cassette to the  Bourne  shell,  and  implemented  watchpoints  in  zbx.   Mark
       McDougall provided documentation for the Micro Labs Grafyx Solution card.  Jenz Guenther added the -title
       option and contributed code to emulate the GENIE (German Model I clone).  Joe Peterson  contributed  code
       to  emulate  the  TimeDate80  and  the  -emtsafe  feature.   Denis Leconte contributed part of the -scale
       implementation.

See also

       cmddump(1), hex2cmd(1), cassette(1), mkdisk(1)

       There are many other TRS-80 resources available on the Web, including shareware  and  freeware  emulators
       that  run  under MS-DOS and other operating systems, software for converting TRS-80 physical media to the
       emulator's disk file format, ROM images, and TRS-80  software  that  has  already  been  converted.   For
       pointers, see ⟨http://www.tim-mann.org/trs80.html⟩.