File: xtrs.txt

package info (click to toggle)
xtrs 4.9d-3
  • links: PTS, VCS
  • area: contrib
  • in suites: sid
  • size: 5,484 kB
  • sloc: ansic: 72,545; makefile: 1,633; sh: 554; csh: 132
file content (1174 lines) | stat: -rw-r--r-- 68,971 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
xtrs(1)                     General Commands Manual                    xtrs(1)

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 oper-
       ate 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  stan-
       dard  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  emu-
       lated 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  wait-
       ing  for  information  from the keyboard.  This will work only for pro-
       grams 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.  RightAr-
       row  or Tab is the right arrow key.  UpArrow is the up arrow key.  Dow-
       nArrow 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).

       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 equiva-
       lent 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 sig-
       nals 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 dis-
       tinct; 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  key-
       board  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 cor-
       responding 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  -shift-
       bracket  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 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 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  key-
       stroke 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 pro-
       vides 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 pro-
       vide 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 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, compati-
       ble with Jeff Vavasour's popular freeware Model I emulator for  MS-DOS;
       JV3,  a  compatible extension of a format first used in Vavasour's com-
       mercial 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 signa-
       ture.

       JV1 supports only single-sided, single-density diskettes,  with  direc-
       tory 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, dou-
       ble-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  every-
       thing  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.25-inch drives, xtrs also emulates
       four 8-inch floppy drives.  There is no widely-accepted standard  hard-
       ware  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.25-inch and 8-inch emu-
       lated 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 emu-
       lated  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 util-
       ity.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 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.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, 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.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 emu-
       late  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  par-
              ticular, 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 transla-
              tion 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.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  connecting  one  to  a
       floppy  disk controller designed for ISA-bus machines.  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 an ISA-bus floppy disk  con-
       troller--this  requires  a  50-pin  to  34-pin adaptor cable--tell your
       firmware that it is a 5.25-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 emu-
       late the Radio Shack hard drive controller (based on the Western  Digi-
       tal 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  emula-
              tors; 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 sup-
              ports  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 dif-
              ferent 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  imple-
              ments  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 pro-
              grams 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 emu-
              lation uses the same hard drive (.hdv)  file  format  that  XTR-
              SHARD/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 emula-
              tion 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 sup-
              port 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  TRS-
       DOS, 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 compen-
              sate 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  oper-
              ating  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 pro-
              hibited 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-num-
              ber 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 prohib-
              ited by the -emtsafe flag; see Options, below.

       UMOUNT/CMD
              (or  UMOUNT6/CMD)  is a convenience program that removes an emu-
              lated 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 "Mon-
       tezuma  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 ar-
       chive) 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  com-
       plain  if your program enables interrupts after powerup without execut-
       ing 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  sup-
       posed  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,  stan-
       dard  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 auto-
       matically 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 oper-
       ating 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 gener-
       ate  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 Orches-
       tra-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  hard-
       ware  (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 imple-
       ments 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 soft-
       ware 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  information  <http://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 dis-
       engaged emulates the Alpha Products joystick.   See  Keys,  above,  for
       details.  The emulated joystick is mapped only at port 0, to avoid con-
       flicts 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  Interface  <ftp://www.x.org/pub/current/doc/libX11/libX11/
       libX11.html#Resource Manager Functions> by Jim Gettys, Robert W. Schei-
       fler, 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 DIS-
              PLAY 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=2xxfac.  Ignored if -usefont is given.

       -resize
              In Model III or 4/4P mode, resize the X window whenever the emu-
              lated display mode changes between 64x16 text (or 512x192 graph-
              ics)  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 charset-name
              Select among several sets of built-in character bitmaps.   Valid
              values  of  charset-name  depend  on the TRS-80 model being emu-
              lated.

              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 gen-
              erator 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  authen-
              tic,  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 incon-
              sistent height, and if you are using the Level II BASIC ROM dis-
              play  driver, uppercase letters are replaced by meaningless sym-
              bols.  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  program-
              ming  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 mod-
              els 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-nor-
              mal--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 the default.

       -microlabs
              In  Model  III or 4/4P mode, emulate the Micro Labs Grafyx Solu-
              tion 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  MOD-
              ELA/III file).  If you do not set this option or the correspond-
              ing 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  transi-
              tions,  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 neces-
              sary 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 key-
              board 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.25-inch  or
              8-inch;  see  Emulated  8-inch floppy disks, above.  If zU is 5,
              the drive will appear to Z80 software as  5.25-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  Disks  <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 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  origi-
              nal  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 spec-
              ifying  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  inter-
       face.  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; how-
              ever, 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 limita-
       tions 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.5-inch HD (1.44MB) floppy, which the TRS-80 didn't  sup-
       port  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 instruc-
       tion.

       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 emula-
       tors.  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  utili-
       ties to NEWDOS/80, and contributed the HRG1B emulation.  Branden Robin-
       son supplied the first version of the cassette man page, fixed Makefile
       bugs,  translated  cassette to the Bourne shell, and implemented watch-
       points 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 oper-
       ating 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>.

xtrs                              2017-04-16                           xtrs(1)