Man Linux: Main Page and Category List

Name

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

Syntax

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

Description

       xtrs is built on top of a Z-80 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 48K of RAM in Model I or Model III mode, 128K 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  standard  output.   A
       serial  port  is  emulated  using  a  Unix tty 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 PC’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  Z-80  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 Z-80  program  when
       it  tries  to  read  from  the  keyboard memory by pattern-matching its
       stack.

Keys

       The following keys have special meanings to xtrs:

       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, Clear, or LeftAlt is the Clear key.  Control is the Model 4
       Ctrl key (address bit 7, data bit 2).  RightAlt 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 disk change in the emulated floppy drives  (see  below).   F8
       exits  the  program.   F9  enters the debugger (zbx).  F10 is the reset
       button.

       F11 (or Shift+F1 on some  systems)  toggles  an  overlay  window  which
       summarizes the above information.

       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).  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 is reversed from what it should be; if you press [  but
       {   is   displayed   instead   (etc.),   see   the   -shiftbracket  and
       -noshiftbracket 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.

       On  a  German keyboard, the umlaut and "ess-tsett" 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 argument.

       Pressing a key on a PC numeric keypad with NumLock disengaged  emulates
       the  Alpha  Products  joystick.   Keys  2,  4,  6, 8 (KP_Down, KP_Left,
       KP_Right, 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
       pressed.   If you have this problem, you can use the xmodmap program to
       remap your numeric pad, and use the xev program to debug it.

Emulated cassette

       To control the emulated cassette, a file called ".cassette.ctl" in  the
       current  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.  See the
       cassette man page for more information about the cassette 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"  (newer  versions  of  LDOS),  or
       "PDUBL"  or  "RDUBL"  (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 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.25-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 hit function key F7 in the emulator.

       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 density, single sided, 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 FB
       (normal) or F8 (deleted) data address mark on any  sector.   In  single
       density  the  nonstandard  data  address  marks  FA  and  F9  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.25-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  the
       LIMITATIONS section 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 FA data address mark for the
       directory on single density disks, while later ones wrote F8 but  would
       accept  either  upon  reading.   The  change was needed because FA 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 FA and FB (which is used  for  non-directory
       sectors)  upon  reading, and cannot write FA.  To deal nicely with this
       problem, xtrs implements the following kludge.  On  writing  in  single
       density, an F8 data address mark is recorded as FA.  On reading with an
       emulated WD1771 (available in Model I mode only), FA is returned as FA;
       on  reading  with a WD179x, FA is returned as F8.  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.25-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 number (1, 3, 4, or 4p) and U is a unit number
       (4, 5, 6, or 7).  The only  difference  between  5.25-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.25-inch  or  8-inch  depending on whether you initially put it into a
       5.25-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.25-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.25-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.25-inch drives.  The four 5.25-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 PCs should  be
       able to read and write TRS-80 compatible floppies in this way.  Many PC
       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.25-inch floppy files (diskM-0 through diskM-3)
       to a real floppy drive, TRS-80 programs will  see  it  as  a  5.25-inch
       drive,  but  the actual drive can be either 3.5-inch or 5.25-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.5-inch,  5.25-inch, or 8-inch.  A 3.5-inch or 5.25-inch drive will be
       operated in high-density mode, using MFM recording  if  the  TRS-80  is
       trying to do double density, 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.25-inch HD drive holds exactly the
       same number of bits per track as an 8-inch drive; a 3.5-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  FA  and  F9  data  address  marks available in single
       density on a real Model I with the WD1771 controller also need  special
       handling.  A PC-style 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 PC even if
       your PC 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 F9 or FA DAM  as  F8.   (3)  On
       reading  in single density with an emulated WD1771 (Model I mode only),
       F8 is returned as FA.  If you need more accurate behavior, the -truedam
       flag will turn on error messages on attempts to write F9 or FA DAMs and
       will turn off translation of F8 to FA on reading.

       Hint: Be sure to set the drive type correctly in your PC’s BIOS.  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.5-inch  drives spin at 300 RPM.  Newer 5.25-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 plugging  one  into  a  PC.)   Older  5.25-inch
       drives  that  cannot  do  high  density  ("180KB",  "360KB"  or "720KB"
       5.25-inch drives) always spin at 300 RPM.  All 8-inch  drives  spin  at
       360 RPM.  If you plug an 8-inch drive into a PC (this requires a 50-pin
       to 34-pin adaptor cable), tell your BIOS that it is a  5.25-inch  1.2MB
       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 program under Unix to  create
       a  blank  hard  drive  (.hdv)  file.  Typical usage would be: mkdisk -h
       mydisk.hdv.  See the mkdisk(1) 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 Model 4P also uses M=4) and U is
       a  unit  number  from  0  to  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 Z-80  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 Z-80 programs to open, close, read, and
       write Unix files directly.  This support is described  further  in  the
       "Data import and export" section 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 program under Unix to create a blank
       hard drive (.hdv) file.  Typical usage would be: mkdisk -h  mydisk.hdv.
       See the mkdisk(1) 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 from 0 to
       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  Z-80  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 lower case, to compensate for TRS-80 operating systems such
       as Newdos/80 that convert all command line  arguments  to  upper  case.
       When  using  the  -l  flag,  you  can put a [ or up-arrow in front of a
       character to keep it in upper case.  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 lower case.  When using the -l flag, you can put  a  [
       or up-arrow in front of a character to keep it in upper case.  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), exported 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.

       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 Unix working directory.   Usage:  CD
       [-l]  unixdir.   The  -l flag converts the Unix directory name to lower
       case.  When using the -l flag, you can put a [ or up-arrow in front  of
       a  character  to keep it in upper case.  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.

       PWD/CMD (or PWD6/CMD) prints xtrs’s Unix working directory.

       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 lower
       case.   When using the -l flag, you can put a [ or up-arrow in front of
       a character to keep it in upper case.  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.

       MOUNT/CMD (or  MOUNT6/CMD)  is  a  convenience  program  that  switches
       emulated  floppy  disks  in  the drives.  Usage: MOUNT [-l] filename U.
       The -l flag converts the Unix filename to lower case.  When  using  the
       -l flag, you can put a [ or up-arrow in front of a character to keep it
       in upper case.  The filename is any Unix filename; U is a single digit,
       0  through  7.   The  command  deletes the file diskM-U (where M is the
       TRS-80 model) from the disk directory (see -diskdir  option),  replaces
       it  with  a  symbolic  link  to  the given filename, and signals a disk
       change (as if F7 had been pressed).

       UMOUNT/CMD (or UMOUNT6/CMD) is a convenience program  that  removes  an
       emulated  floppy  disk  from  a drive.  Usage: UMOUNT U.  U is a single
       digit, 0 through 7.  The command deletes the file diskM-U (where  M  is
       the  TRS-80  model)  from  the disk directory (see -diskdir option) and
       signals a disk change (as if F7 had been pressed).

       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 track, 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).                                                           See
       http://members.optusnet.com.au/~rgerlach/trs-80/cpmutil.html where  you
       will  sometimes  find a newer version of the utilities than is included
       with xtrs.

       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.

Interrupts

       The  emulator supports only interrupt mode 1.  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 approximates this rather well even on  a  system  where  clock
       ticks  come  at  some  frequency  that  isn’t divisible by the emulated
       frequency (e.g., 100 Hz on Intel Linux), as long as the true  frequency
       is  not  slower than the emulated frequency.  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
       Intel Linux you’d  see  this  pattern:  (tick,  30ms,  tick,  20ms,...)
       instead of seeing ticks 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’s  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 /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  your
       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 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 unknown what their
       driver software will do in the year  2000  and  beyond.   If  you  have
       software  that works with one of them, please send email to report what
       happens when it is used with xtrs.

       Also see SETTIME/CMD in the "Data import and export" section above  for
       another  way  to  get  the  correct  time  into a Z-80 operating system
       running under xtrs.

       Finally, you might notice that LDOS/LS-DOS always magically  knows  the
       correct date when you boot it (but not the time).  When you first power
       up the emulated TRS-80, xtrs dumps the date into the places  in  memory
       where  LDOS  and LS-DOS normally save it across reboots, so it looks to
       the operating system as if you rebooted after setting the date.

Joystick

       Pressing a key on a PC numeric keypad with NumLock disengaged  emulates
       the  Alpha  Products joystick.  See the Keys section above for details.
       The emulated joystick is mapped only at port 0, to avoid conflicts with
       other  devices.  The joystick emulation could be made to work with real
       joysticks using the X input extension, but this is not implemented yet.

Running games

       Some  games  run rather well under xtrs now, 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, and the class name for xtrs is "Xtrs".

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

       -iconic
              Start with the xtrs window iconified.

       -background color
       -bg color
              Specifies the background color of the xtrs window.

       -foreground color
       -fg color
              Specifies the foreground color of the xtrs window.

       -title titletext
              Use titletext 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.

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

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

       -charset name
              Select among several sets of built-in character bitmaps.

              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 lower case 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 upper  case  only  machines.  Since
              xtrs  currently  always emulates the extra bit of display memory
              needed to support lower case, this character set gives  you  the
              authentic,  unpleasant  effect  that real Model I users saw when
              they tried to  do  homebrew  lower  case  modifications  without
              replacing  the character generator: lower case letters appear at
              an inconsistent height, and if you are using the Level II  BASIC
              ROM   display   driver,  upper  case  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’s 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’s.
              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 bold 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 a X font.  This is the
              default.

       -font fontname
              If -usefont is also given, use the specified X font  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 fontname
              If -usefont is also given, use the specified X font  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 384x192 hi-res graphics card.
              In Model III mode or Model 4/4P mode, emulate  the  Radio  Shack
              hi-res card.  This is now 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 romfile specified by  filename  in  Model  I  mode,  the
              romfile specified by filename3 in Model III and Model 4 mode, or
              the romfile specified by filename4p in Model 4P mode, A  romfile
              can be either a raw binary dump, 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   for
              instructions on compiling in default romfiles or default romfile
              names.

       -model m
              Specifies which TRS-80 model to emulate.  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
              A crude speed control.  After each Z-80 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  you compile xtrs with too high an
              optimization level.  The default delay is 0.

       -autodelay
              Dynamically adjusts the value of -delay 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 Z-80  program  has  time  to  see  each
              transition  before  the  next  one  occurs.   Whenever  the Z-80
              program reads the keyboard matrix and sees an emulated key go up
              or  down,  xtrs waits cycles Z-80 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 Z-80 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
              Specify the directory containing floppy and  hard  disk  images.
              If  the  value starts with "~/" (or is just "~"), it is relative
              to your home directory.  The default value is ".".

       -doubler type
              Specify what type of double density adaptor to emulate (Model  I
              mode  only).   The  type  may  be percom, radioshack (or tandy),
              both, or none. The 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
              Make  all  real  floppy  drives  double-step, allowing access to
              35-track or 40-track media in an 80-track  drive.   Linux  only.
              See the Floppy Disks section for limitations.

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

       -stepmap s0,s1,s2,s3,s4,s5,s6,s7
              Selectively set double-step  mode  for  individual  real  floppy
              drives.   If sU is 2 and diskM-U is a real drive, the drive will
              be double-stepped; if sU is 1, it will be  single-stepped.   You
              can  omit values from the end of the list; those drives will get
              the default value set by -doublestep or -nodoublestep.

       -sizemap z0,z1,z2,z3,z4,z5,z6,z7
              Selectively set whether drives are emulated as 5-inch or 8-inch;
              see  the section "Emulated 8-inch floppy disks" above.  If zU is
              5, the drive will appear to Z-80 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 the "Emulated floppy disks" and "Real floppy disks"
              sections above.  With this option given, the distinction between
              F8  and  FA  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 Disks", available at http://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 wav files, direct  cassette
              I/O  to the sound card, and game sound output to the sound card.
              Existing wav files will be read or modified using their original
              sample  rate regardless of this flag.  The default is 44,100 Hz.
              See also the cassette(1) man page.

       -serial ttyname
              Set the tty device to be used for I/O  to  the  TRS-80’s  serial
              port.   The  default is /dev/ttyS0 on Linux, /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") that could
              write to host files other  than  disk  images  in  the  original
              diskdir.

       -noemtsafe
              The opposite of -emtsafe.  This setting is the default.

Additional resources

       There  are  many other TRS-80 resources available on the Web, including
       shareware and  freeware  emulators  that  run  under  MSDOS  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.

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  tty  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  PC-style  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.5-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 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://tim-
       mann.org/).   See  README  and README.tpm for additional notes from the
       authors.

       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 MSDOS-based TRS-80 emulators.  The DMK format was designed by David
       Keil  for  his  MSDOS-based TRS-80 emulator.  The hard disk file format
       was designed by Matthew Reed for his MSDOS-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.

                                                                       xtrs(1)