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 1175 1176 1177 1178 1179 1180 1181 1182 1183 1184 1185 1186 1187 1188 1189 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203 1204 1205 1206 1207 1208 1209 1210 1211 1212 1213 1214 1215 1216 1217 1218 1219 1220 1221 1222 1223 1224 1225 1226 1227 1228 1229 1230 1231 1232 1233 1234 1235 1236 1237 1238 1239 1240 1241 1242 1243 1244 1245 1246 1247 1248 1249 1250 1251 1252 1253 1254 1255 1256 1257 1258 1259 1260 1261 1262 1263 1264 1265 1266 1267 1268 1269 1270 1271 1272 1273 1274 1275 1276 1277 1278 1279 1280 1281 1282 1283 1284 1285 1286 1287 1288 1289 1290 1291 1292 1293 1294 1295 1296 1297 1298 1299 1300 1301 1302 1303 1304 1305 1306 1307 1308 1309 1310 1311 1312 1313 1314 1315 1316 1317 1318 1319 1320 1321 1322 1323 1324 1325 1326 1327 1328 1329 1330 1331 1332 1333 1334 1335 1336 1337 1338 1339 1340 1341 1342 1343 1344 1345 1346 1347 1348 1349 1350 1351 1352 1353 1354 1355 1356 1357 1358 1359 1360 1361 1362 1363 1364 1365 1366 1367 1368 1369 1370 1371 1372 1373 1374 1375 1376 1377 1378 1379 1380 1381 1382 1383 1384 1385 1386 1387 1388 1389 1390 1391 1392 1393 1394 1395 1396 1397 1398 1399 1400 1401 1402 1403 1404 1405 1406 1407 1408 1409 1410 1411 1412 1413 1414 1415 1416 1417 1418 1419 1420 1421 1422 1423 1424 1425 1426 1427 1428 1429 1430 1431 1432 1433 1434 1435 1436 1437 1438 1439 1440 1441 1442 1443 1444 1445 1446 1447 1448 1449 1450 1451 1452 1453 1454 1455 1456 1457 1458 1459 1460 1461 1462 1463 1464 1465 1466 1467 1468 1469 1470 1471 1472 1473 1474 1475 1476 1477 1478 1479 1480 1481 1482 1483 1484 1485 1486 1487 1488 1489 1490 1491 1492 1493 1494 1495 1496 1497 1498 1499 1500 1501 1502 1503 1504 1505 1506 1507 1508 1509 1510 1511 1512 1513 1514 1515 1516 1517 1518 1519 1520 1521 1522 1523 1524 1525 1526 1527 1528 1529 1530 1531 1532 1533 1534 1535 1536 1537 1538 1539 1540 1541 1542 1543 1544 1545 1546 1547 1548 1549 1550 1551 1552 1553 1554 1555 1556 1557 1558 1559 1560 1561 1562 1563 1564 1565 1566 1567 1568 1569 1570 1571 1572 1573 1574 1575 1576 1577 1578 1579 1580 1581 1582 1583 1584 1585 1586 1587 1588 1589 1590 1591 1592 1593 1594 1595 1596 1597 1598 1599 1600 1601 1602 1603 1604 1605 1606 1607 1608 1609 1610 1611 1612 1613 1614 1615 1616 1617 1618 1619 1620 1621 1622 1623 1624 1625 1626 1627 1628 1629 1630 1631 1632 1633 1634 1635 1636 1637 1638 1639 1640 1641 1642 1643 1644 1645 1646 1647 1648 1649 1650 1651 1652 1653 1654 1655 1656 1657 1658 1659 1660 1661 1662 1663 1664 1665 1666 1667 1668 1669 1670 1671 1672 1673 1674 1675 1676 1677 1678 1679 1680 1681 1682 1683 1684 1685 1686 1687 1688 1689 1690 1691 1692 1693 1694 1695 1696 1697 1698 1699 1700 1701 1702 1703 1704 1705 1706 1707 1708 1709 1710 1711 1712 1713 1714 1715 1716 1717 1718 1719 1720 1721 1722 1723 1724 1725 1726 1727 1728 1729 1730 1731 1732 1733 1734 1735 1736 1737 1738 1739 1740 1741 1742 1743 1744 1745 1746 1747 1748 1749 1750 1751 1752 1753 1754 1755 1756 1757 1758 1759 1760 1761 1762 1763 1764 1765 1766 1767 1768 1769 1770 1771 1772 1773 1774 1775 1776 1777 1778 1779 1780 1781 1782 1783 1784 1785 1786 1787 1788 1789 1790 1791 1792 1793 1794 1795 1796 1797 1798 1799 1800 1801 1802 1803 1804 1805 1806 1807 1808 1809 1810 1811 1812 1813 1814 1815 1816 1817 1818 1819 1820 1821 1822 1823 1824 1825 1826 1827 1828 1829 1830 1831 1832 1833 1834 1835 1836 1837 1838 1839 1840 1841 1842 1843 1844 1845 1846 1847 1848 1849 1850 1851 1852 1853 1854 1855 1856 1857 1858 1859 1860 1861 1862 1863 1864 1865 1866 1867 1868 1869 1870 1871 1872 1873 1874 1875 1876 1877 1878 1879 1880 1881 1882 1883 1884 1885 1886 1887 1888 1889 1890 1891 1892 1893 1894 1895 1896 1897 1898 1899 1900 1901 1902 1903 1904 1905 1906 1907 1908 1909 1910 1911 1912 1913 1914 1915 1916 1917 1918 1919 1920 1921 1922 1923 1924 1925 1926 1927 1928 1929 1930 1931 1932 1933 1934 1935 1936 1937 1938 1939 1940 1941 1942 1943 1944 1945 1946 1947 1948 1949 1950 1951 1952 1953 1954 1955 1956 1957 1958 1959 1960 1961 1962 1963 1964 1965 1966 1967 1968 1969 1970 1971 1972 1973 1974 1975 1976 1977 1978 1979 1980 1981 1982 1983 1984 1985 1986 1987 1988 1989 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040 2041 2042 2043 2044 2045 2046 2047 2048 2049 2050 2051 2052 2053 2054 2055 2056 2057 2058 2059 2060 2061 2062 2063 2064 2065 2066 2067 2068 2069 2070 2071 2072 2073 2074 2075 2076 2077 2078 2079 2080 2081 2082 2083 2084 2085 2086 2087 2088 2089 2090 2091 2092 2093 2094 2095 2096 2097 2098 2099 2100 2101 2102 2103 2104 2105 2106 2107 2108 2109 2110 2111 2112 2113 2114 2115 2116 2117 2118 2119 2120 2121 2122 2123 2124 2125 2126 2127 2128 2129 2130 2131 2132 2133 2134 2135 2136 2137 2138 2139 2140 2141 2142 2143 2144 2145 2146 2147 2148 2149 2150 2151 2152 2153 2154 2155 2156 2157 2158 2159 2160 2161 2162 2163 2164 2165 2166 2167 2168 2169 2170 2171 2172 2173 2174 2175 2176 2177 2178 2179 2180 2181 2182 2183 2184 2185 2186 2187 2188 2189 2190 2191 2192 2193 2194 2195 2196 2197 2198 2199 2200 2201 2202 2203 2204 2205 2206 2207 2208 2209 2210 2211 2212 2213 2214 2215 2216 2217 2218 2219 2220 2221 2222 2223 2224 2225 2226 2227 2228 2229 2230 2231 2232 2233 2234 2235 2236 2237 2238 2239 2240 2241 2242 2243 2244 2245 2246 2247 2248 2249 2250 2251 2252 2253 2254 2255 2256 2257 2258 2259 2260 2261 2262 2263 2264 2265 2266 2267 2268 2269 2270 2271 2272 2273 2274 2275 2276 2277 2278 2279 2280 2281 2282 2283 2284 2285 2286 2287 2288 2289 2290 2291 2292 2293 2294 2295 2296 2297 2298 2299 2300 2301 2302 2303 2304 2305 2306 2307 2308 2309 2310 2311 2312 2313 2314 2315 2316 2317 2318 2319 2320 2321 2322 2323 2324 2325 2326 2327 2328 2329 2330 2331 2332 2333 2334 2335 2336 2337 2338 2339 2340 2341 2342 2343 2344 2345 2346 2347 2348 2349 2350 2351 2352 2353 2354 2355 2356 2357 2358 2359 2360 2361 2362 2363 2364 2365 2366 2367 2368 2369 2370 2371 2372 2373 2374 2375 2376 2377 2378 2379 2380 2381 2382 2383 2384 2385 2386 2387 2388 2389 2390 2391 2392 2393 2394 2395 2396 2397 2398 2399 2400 2401 2402 2403 2404 2405 2406 2407 2408 2409 2410 2411 2412 2413 2414 2415 2416 2417 2418 2419 2420 2421 2422 2423 2424 2425 2426 2427 2428 2429 2430 2431 2432 2433 2434 2435 2436 2437 2438 2439 2440 2441 2442 2443 2444 2445 2446 2447 2448 2449 2450 2451 2452 2453 2454 2455 2456 2457 2458 2459 2460 2461 2462 2463 2464 2465 2466 2467 2468 2469 2470 2471 2472 2473 2474 2475 2476 2477 2478 2479 2480 2481 2482 2483 2484 2485 2486 2487 2488 2489 2490 2491 2492 2493 2494 2495 2496 2497 2498 2499 2500 2501 2502 2503 2504 2505 2506 2507 2508 2509
|
.\" This man page attempts to follow the conventions and recommendations found
.\" in Michael Kerrisk's man-pages(7) and GNU's groff_man(7), and groff(7).
.\"
.\" The following macro definitions come from groff's an-ext.tmac.
.\"
.\" Copyright (C) 2007-2014 Free Software Foundation, Inc.
.\"
.\" Written by Eric S. Raymond <esr@thyrsus.com>
.\" Werner Lemberg <wl@gnu.org>
.\"
.\" You may freely use, modify and/or distribute this file.
.\"
.\" If _not_ GNU roff, define macros to handle synopsis and URLs.
.if !\n[.g] \{\
.\" Declare start of command synopsis. Sets up hanging indentation.
.de SY
. ie !\\n(mS \{\
. nh
. nr mS 1
. nr mA \\n(.j
. ad l
. nr mI \\n(.i
. \}
. el \{\
. br
. ns
. \}
.
. nr mT \w'\fB\\$1\fP\ '
. HP \\n(mTu
. B "\\$1"
..
.
.
.\" End of command synopsis. Restores adjustment.
.de YS
. in \\n(mIu
. ad \\n(mA
. hy \\n(HY
. nr mS 0
..
.
.
.\" Declare optional option.
.de OP
. ie \\n(.$-1 \
. RI "[\fB\\$1\fP" "\ \\$2" "]"
. el \
. RB "[" "\\$1" "]"
..
.
.
.\" Start URL.
.de UR
. ds m1 \\$1\"
. nh
. if \\n(mH \{\
. \" Start diversion in a new environment.
. do ev URL-div
. do di URL-div
. \}
..
.
.
.\" End URL.
.de UE
. ie \\n(mH \{\
. br
. di
. ev
.
. \" Has there been one or more input lines for the link text?
. ie \\n(dn \{\
. do HTML-NS "<a href=""\\*(m1"">"
. \" Yes, strip off final newline of diversion and emit it.
. do chop URL-div
. do URL-div
\c
. do HTML-NS </a>
. \}
. el \
. do HTML-NS "<a href=""\\*(m1"">\\*(m1</a>"
\&\\$*\"
. \}
. el \
\\*(la\\*(m1\\*(ra\\$*\"
.
. hy \\n(HY
..
.
.
.\" Start example.
.de EX
. do ds mF \\n[.fam]
. nr mE \\n(.f
. nf
. nh
. do fam C
. ft CW
..
.
.
.\" End example.
.de EE
. do fam \\*(mF
. ft \\n(mE
. fi
. hy \\n(HY
..
.
.
.\" Continuation line for .TP header.
.de TQ
. br
. ns
. TP \\$1\" no doublequotes around argument!
..
.\} \" not GNU roff
.\" Copyright 1997 Timothy Mann
.\"
.\" This software may be copied, modified, and used for any purpose
.\" without fee, provided that (1) the above copyright notice is
.\" retained, and (2) modified versions are clearly marked as having
.\" been modified, with the modifier's name and the date included.
.\"
.\" Define macros for frequent references to floppy drive sizes requiring
.\" fractional units, because the standard character escapes for common
.\" ("vulgar") fractions degrade to ASCII poorly in context (e.g., 5\(14 renders
.\" as "51/4" in xtrs.txt).
.\"
.\" Usage note: These macros do _not_ have an ending word break; this is so that
.\" the "-inch" suffix can be appended where desired. If you require a word
.\" break, the correct *roff way to get one is to put a single word space on a
.\" line by itself after the macro call.
.\"
.\" BEGIN EXAMPLE
.\" The drive can be eight inches or
.\" .5-1/4
.\" \" ordinary space character (paddable by *roff)
.\" inches.
.\" END EXAMPLE
.de 3-1/2
3\c
. ie '\*(.T'ascii' \&.5\c
. el \(12\c
..
.de 5-1/4
5\c
. ie '\*(.T'ascii' \&.25\c
. el \(14\c
..
.\" Define macros to handle the GENIE's non-ASCII keycaps.
.de ess-tsett
. ie '\*(.T'ascii' ess-tsett
. el \(ss
..
.de umlaut
. ie '\*(.T'ascii' umlaut
. el \(ad
..
.\" The bold italic font is not accessible via the man macro package.
.de BOLD-ITALIC
. ie d an-trap \
. ie F BI \{\
. itc 1 an-trap
. ft BI
. if \\n[.$] \&\\$*
. \}
. el \&\\$*
. el \&\\$*
..
.TH xtrs 1 2017-04-16 xtrs
.\" Redefine TP macro to let us use \c and font-changing macros so we can have
.\" more than two fonts in a tagged paragraph's tag without using ugly font
.\" escapes. (This was committed to groff upstream on 2017-04-28. --branden)
.\" This definition MUST follow TH because of the way groff's andoc.tmac works.
.if \n[.g] \{\
.de1 TP
. sp \\n[PD]u
. if \\n[.$] .nr an-prevailing-indent (n;\\$1)
. itc 1 an-trap
. in 0
. if !\\n[an-div?] \{\
. ll -\\n[an-margin]u
. di an-div
. \}
. nr an-div? 1
.. \}
.SH Name
.B xtrs
\- TRS-80 Model I/III/4/4P emulator for the X Window System
.SH Synopsis
.SY xtrs
.OP \-model m
.OP \-diskdir d
.OP \-debug
.RI [ other-options ]
.YS
.SH Description
.B xtrs
is an emulator for a series of 8-bit microcomputers manufactured by Tandy/Radio
Shack in the 1970s and 1980s.
The program is built on top of a Zilog Z80 emulator, with added routines to
support keyboard and video I/O through an X interface.
The hardware emulation can operate as a TRS-80 Model I, Model III, Model 4, or
Model 4P.
.PP
.B xtrs
supports 48kiB of RAM in Model I or Model III mode, and 128kiB in Model 4 or
Model 4P mode.
Floppy disks and hard disks are emulated using files to store the data; or under
Linux only, real floppy drives can be used.
A printer is emulated by sending its output to the standard output.
A serial port is emulated using a Unix terminal device.
Cassette I/O is emulated using files to store the cassette data; real cassettes
can also be read or written (with luck), either directly through your sound card
(on Linux and other systems with OSS-compatible sound drivers), or via
.I .wav
files.
Game sound and music output are also supported if you have an OSS-compatible
sound driver; sound output though the cassette port, through the Model 4 sound
option, and through the optional Orchestra-85/90 music synthesizer card are all
emulated.
In Model I mode, the HRG1B graphics card is emulated.
In Model III and 4/4P mode, you can select whether the Radio Shack graphics card
or Micro Labs Grafyx Solution is emulated.
There is also a mouse driver for Model 4/4P mode.
Several common time-of-day clock cards are emulated on all models.
The Alpha Products joystick is emulated using the keyboard's numeric keypad.
.PP
Because
.B xtrs
emulates the hardware, all known TRS-80 Model I/III/4/4P operating systems
should run on it, including all flavors of
.IR TRSDOS ,
.IR LDOS/LS-DOS ,
.IR NEWDOS ,
.IR DOSPLUS ,
.IR MultiDOS ,
and
TRS-80
.IR 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.
.PP
The Z80 emulator has a debugger called
.IR zbx .
You can enter the debugger either by starting
.B xtrs
with the
.B \-debug
flag or by pressing
.B F9
while
.B xtrs
is running.
The debugger runs in the X terminal window that you started
.B xtrs
from.
Once you are in the debugger, type
.if "\*(.T"ascii" "\c
.B help\c
.ie "\*(.T"ascii" "
\" ordinary paddable space
for more information.
.PP
Special support in the emulator allows the program to block when waiting for
information from the keyboard.
This will work only for programs that wait for keyboard input using the standard
Model I/III ROM call; the emulator decides whether to block the Z80 program
when it tries to read from the keyboard memory by pattern-matching its stack.
.SS Keys
The following keys on the host keyboard have special meanings to
.BR xtrs .
.PP
.B F11
toggles onscreen help on the keyboard mappings.
.PP
.BR LeftArrow ,
.BR Backspace ,
or
.B Delete
is the TRS-80 left arrow key.
.B RightArrow
or
.B Tab
is the right arrow key.
.B UpArrow
is the up arrow key.
.B DownArrow
or
.B Linefeed
is the down arrow key.
.B Esc
or
.B Break
is the Break key.
.BR Home
or
.BR Clear
is the Clear key.
.B Control
is the Model 4 Ctrl key (address bit 7, data bit 2).
.B F12
is equivalent to the shifted down arrow key (used as a control key with some
TRS-80 software).
.PP
.BR F1 ,
.BR F2 ,
and
.B F3
are the Model 4/4P function keys (address bit 7, data bits 4, 5, and 6).
.B F1
is also the Model I Electric Pencil control key that some users added to their
machines.
.B F4
is the Model 4 Caps Lock key (address bit 7, data bit 3).
.BR F5 ,
.BR Compose ,
or
.B ScrollLock
is equivalent to the @ key (so that @ can be used as a modifier key).
.B F6
is equivalent to the 0 key (so that a shifted 0 can be obtained).
.B F7
signals a floppy disk change (see
.BR "Emulated floppy disks" ,
below).
.B F8
exits the program.
.B F9
enters the
.I zbx
debugger.
.B F10
is the reset button.
.PP
In Model III, 4, and 4P modes, the left and right
.B Shift
keys are distinct; in Model I mode, they are the same.
The
.B PageUp
and
.B 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
.B End
key activates an unused position in the keyboard matrix (address bit 7, data bit
7).
.PP
The keys
.BR [ ,
.BR \(rs ,
.BR ] ,
.BR \(ha ,
and
.B _
also activate unused positions
in the keyboard matrix (address bit 3, data bits 3\(en7), as do the
ASCII-shifted counterparts of the first four
.RB ( { ,
.BR | ,
.BR } ,
and
.BR \(ti );
see above regarding
.BR Delete .
With many TRS-80 keyboard drivers, these keys map to the corresponding ASCII
characters; with others, they do nothing.
In some cases you may find the shift state reversed from what you expect; if,
for instance, you press
.B [
but \(lq{\(rq is displayed instead, see
.B \-shiftbracket
and
.B \-noshiftbracket
in
.BR Options ,
below, to correct the problem.
The
.B 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).
.PP
On a German keyboard, the
.B
.umlaut
and
.B
.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
.B \-charset genie
command-line option.
.PP
Pressing a key on a PC-style keyboard's numeric keypad with
.B NumLock
disengaged emulates the Alpha Products joystick.
Keys 2, 4, 6, and 8
.RB ( KP_Down ,
.BR KP_Left ,
.BR KP_Right ,
and
.BR KP_Up )
are the main directions;
keys 1, 3, 7, and 9
.RB ( KP_End ,
.BR KP_Page_Down ,
.BR KP_Home ,
.BR KP_Page_Up )
work as diagonal directions by activating two main directions at once; and key 0
.RB ( KP_Insert )
or 5
.RB ( 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
.B NumLock
is not active.
If you have this problem, you can use
.BR xev (1)
to determine the names of the X keysyms generated by your keystroke events.
You may need to check or update your XKB configuration.
Alternatively, you can use
.BR xmodmap (1)
to remap your numeric pad.
.SS Emulated cassette
To control the emulated cassette, a file called
.I .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
.BR 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
.B cassette
man page has more information about the shell script and the cassette file
formats that are supported.
.SS 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.
.SS Emulated floppy disks
In Model I mode,
.B 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\(emit responds to the special commands of both\(emso a driver for
either should work.
Under
.IR LDOS
use the command
.I FDUBL
(on newer versions of
.IR LDOS ),
or
.I PDUBL
or
.I RDUBL
(on older versions) to install the driver.
Software that tries to detect which doubler you have (such as
.IR "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
.B Options
below.
.PP
In Model III, 4, or 4P mode,
.B xtrs
emulates the stock floppy controller, which uses a WD1793 chip
(software-compatible with the WD1791) to provide both single and double density.
.PP
Four
.5-1/4
-inch floppy drives are emulated, with storage in files named
.IR disk M \- U,
where
.I M
is the TRS-80 model
.RB ( 1 ,
.BR 3 ,
.BR 4 ,
or
.BR 4p )
and
.I U
is the
drive unit number
.RB ( 0 ,
.BR 1 ,
.BR 2 ,
or
.BR 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
.BR 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
.B F7
(see
.BR Keys,
above).
.PP
If you try to boot an emulated Model I, III, or 4 with no file named
.IR disk M \-0
(that is, no disk in drive 0),
.B 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
.B xtrs
always emulates one.
.PP
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.
.PP
Emulated floppy image files can be of any of three types: JV1, compatible with
Jeff Vavasour's popular freeware Model I emulator for
.IR 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
.B 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.
.PP
JV1 supports only single-sided, single-density diskettes, with directory on
track 17.
Sectors must be 256 bytes long.
Use
.B FORMAT (DIR=17)
if you want to format JV1 disks with more (or less) than 35 tracks under
.IR LDOS .
.PP
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
.I can
format a sector with an intentional CRC error in the data field.
.B xtrs
supports at most 5802 total sectors on a JV3 image.
.PP
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
.B xtrs
may be unable to read it.
Note that an 80 track, double-sided, double-density (18 sector)
.5-1/4
-inch floppy
will fit within the original 2901 sector limit; the extension to 5802 is
primarily for emulation of 8-inch drives (discussed below).
.PP
The DMK format is the most flexible.
It supports essentially everything that the original hardware could do,
including all \(lqprotected\(rq disk formats.
However, a few protected disks still may
not work with
.B xtrs
due to limitations in
.BR xtrs 's
floppy disk controller emulation rather than limitations of the DMK format; see
.BR "Bugs and limitations" ,
below.
.PP
The program
.BR mkdisk (1)
makes a blank emulated floppy or \(lqbulk erases\(rq an existing one.
By default,
.B mkdisk
makes a JV3 floppy, but with the
.B \-1
flag it makes a JV1 floppy, or with the
.B \-k
flag a DMK
floppy.
See the
.B mkdisk
man page for more information.
.PP
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,
.B 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
.RI WD179 x ,
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
.B \-truedam
flag to turn off this kludge if you need to; in that case the original hardware
is emulated exactly.
.PP
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
.B xtrs
does not emulate instructions at the same speed as the original machines.
This works because
.B 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.
.SS Emulated 8-inch floppy disks
In addition to the four standard
.5-1/4
-inch drives,
.B 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
.B xtrs
emulates a pseudo-hardware interface of its own and provides an
.IR LDOS / LS-DOS
driver for it.
.PP
Storage for the emulated 8-inch disks is in files named
.IR disk M \- U,
where
.I M
is the TRS-80 model
.RB ( 1 ,
.BR 3 ,
.BR 4 ,
or
.BR 4p )
and
.I U
is the
drive unit number
.RB ( 4 ,
.BR 5 ,
.BR 6 ,
or
.BR 7 ).
The only difference between
.5-1/4
-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-1/4
-inch or 8-inch depending on whether you initially put it into a
.5-1/4
-inch or 8-inch emulated drive.
A new DMK floppy, however, must be created with the
.B \-8
flag to
.B 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-1/4
-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,
.I .dsk
for
.5-1/4
-inch and
.I .8in
for 8-inch.
.PP
To use the emulated 8-inch drives, you'll need a driver.
Under
.I LDOS
or
.IR LS-DOS ,
use the program
.I XTRS8/DCT
supplied on the emulated floppy
.IR utility.dsk .
This driver is a very simple wrapper around the native
.IR LDOS / LS-DOS
floppy driver.
Here are detailed instructions.
.PP
First, make sure an appropriate version of
.I LDOS
is in emulated floppy drive 0, and the supplied file
.I utility.dsk
is in another emulated floppy drive.
Boot
.IR LDOS .
If you are using Model I
.IR LDOS ,
be sure
.I FDUBL
is running.
.PP
Second, type the following commands.
Here
.I d
is the
.I LDOS
drive
number you want to use for the 8-inch drive and
.I u
is the unit number you chose when naming the file.
Most likely you will choose
.I d
and
.I u
to be equal to reduce confusion.
.RS
.EX
.B SYSTEM (DRIVE=\c
.BOLD-ITALIC d\c
.B ,DRIVER="XTRS8",ENABLE)
Enter unit number ([4]-7): \c
.BOLD-ITALIC u
.EE
.RE
You can repeat these steps with different values of
.I d
and
.I u
to have more than one 8-inch drive.
You might want to repeat four times using
.BR 4 ,
.BR 5 ,
.BR 6 ,
and
.BR 7 ,
or you might want to save some drive numbers for hard drives (see below).
.PP
Finally, it's a good idea to give the
.I SYSTEM (SYSGEN)
command (Model I/III) or
.I SYSGEN
command (Model 4/4P).
This command saves the
.I 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
.IR SYSGEN ed,
simply use the same
.I SYSTEM
command again.
.PP
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-1/4
-inch drives.
The four
.5-1/4
-inch drives have hardware select codes
1, 2, 4, and 8, corresponding respectively to files
.IR disk M \-0,
.IR \-1 ,
.IR \-2 ,
and
.IR \-3 .
The four 8-inch drives have hardware select codes 3, 5, 6, and 7, corresponding
respectively to files
.IR disk M \-4,
.IR \-5 ,
.IR \-6 ,
and
.IR \-7 .
(See also the
.B \-sizemap
option below, however.)
.SS Real floppy disks
Under Linux only, any
.IR disk M \- U
file can be a symbolic link to a real floppy disk drive, typically
.I /dev/fd0
or
.IR /dev/fd1 .
.\" XXX: Modern PC-compatibles with support fort legacy peripherals are getting
.\" scarce. Has anyone tried these tricks with a USB floppy drive?
Most machines with \(lqlegacy\(rq (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
.B \-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.
.PP
If you link one of the
.5-1/4
-inch floppy files
.RI ( disk M \-0
through
.IR disk M \-3 )
to a real floppy drive, TRS-80 programs will see it as a
.5-1/4
-inch drive, but the actual drive can be either
.3-1/2
-inch or
.5-1/4
-inch.
The drive will be operated in double density (or single density), not high
density, so be sure to use the appropriate media.
.PP
If you link one of the 8-inch floppy files
.RI ( disk M \-4
through
.IR disk M \-7 )
to a real floppy drive, TRS-80 programs will see it as an 8-inch drive.
Again, you need to use the
.I XTRS8/DCT
driver described above to enable
.IR LDOS / LS-DOS
to access an 8-inch drive.
The real drive can be either
.3-1/2
-inch,
.5-1/4
-inch,
or 8-inch.
A
.3-1/2
-inch or
.5-1/4
-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-1/4
-inch HD drive holds exactly the same number of bits per track as an 8-inch
drive; a
.3-1/2
-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.
.PP
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.
.IP 1.
It will be impossible for you to read some Model I disks on your machine even if
it otherwise supports single density.
In particular, Model I
.I TRSDOS
2.3 directory tracks will be unreadable.
.IP 2.
On writing in
single density,
.B xtrs
silently records a 0xF9 or 0xFA DAM as 0xF8.
.IP 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
.B \-truedam
flag will turn on error messages on attempts to write 0xF9 or 0xFA DAMs and will
turn off translation of 0xF8 to 0xFA on reading.
.PP
.I Hint:
Be sure to set the drive type correctly in your machine's firmware.
Linux and
.B
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-1/2
-inch drives spin at 300 rpm.
Newer
.5-1/4
-inch high-density capable drives (\(lq1.2MB\(rq 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-1/4
-inch drives that cannot do high density (\(lq180kB\(rq, \(lq360kB\(rq, or
\(lq720kB\(rq
.5-1/4
-inch drives) always spin at 300 rpm.
All 8-inch drives spin at 360 rpm.
If you plug an 8-inch drive into an ISA-bus floppy disk controller\(emthis
requires a 50-pin to 34-pin adaptor cable\(emtell your firmware that it is a
.5-1/4
-inch 1.2MiB drive.
.SS Emulated hard disks
.B xtrs
can emulate a hard disk in a file in one of two ways: it
can use a special,
.BR xtrs -specific
.I LDOS
driver called
.IR 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.
.TP
.B Using \c
.BOLD-ITALIC XTRSHARD/DCT
The
.I XTRSHARD/DCT
driver has been tested and works under both
.I LDOS
5.3.1 for Model I or III and
.IR TRSDOS / LS-DOS
6.3.1 for Model 4/4P.
It may or may not work under earlier
.I LDOS
versions.
It definitely will not work under other TRS-80 operating systems or with
emulators other than
.BR xtrs .
The hard disk format was designed by Matthew Reed for his Model I/III and Model
4 emulators;
.B xtrs
duplicates the format so that users can exchange hard drive images across the
emulators.
.IP
To use
.IR XTRSHARD/DCT ,
first run the
.BR mkdisk (1)
program to create a blank hard drive
.RI ( .hdv )
file.
A typical usage
would be
.BR "mkdisk -h myhd.hdv" .
See the
.B mkdisk
man page for other options.
.IP
Second, link the file to an appropriate name.
.I XTRSHARD/DCT
supports up
to eight hard drives, with names of the form
.IR hard M \- U,
where
.I M
is the TRS-80 model
.RB ( 1 ,
.BR 3 ,
or
.BR 4 ;
in this case the Model 4P also uses
.IR M =4)
and
.I U
is a unit number in the range 0\(en7.
It looks for these files in the same directory as the floppy disk files
.IR disk M \- U.
.IP
Third, make sure an appropriate version of
.I LDOS
is in emulated floppy drive 0, and the supplied file
.I utility.dsk
is in another emulated floppy drive.
Boot
.IR LDOS .
If you are using Model I
.I LDOS
5.3.1, patch a bug in the
.I FORMAT
command by typing
.BR "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
.IR LDOS .
.IP
Fourth, type the following commands.
Here
.I d
is the
.I LDOS
drive number you want to use for the hard drive (a typical choice would be
.BR 4 )
and
.I u
is the unit number you chose when naming the file (most likely
.BR 0 ).
.\" XXX: The following ugliness is due to the fact that the .RS/.RE macros don't
.\" indent further within an .IP environment within an .SS environment. Kludge
.\" around this by using low-level requests to manually indent.
.ie t .in +7n
.el .in +7.2n
.EX
.B SYSTEM (DRIVE=\c
.BOLD-ITALIC d\c
.B ,DRIVER="XTRSHARD",ENABLE)
Enter unit number ([0]-7): \c
.BOLD-ITALIC u
.B FORMAT \c
.BOLD-ITALIC d \c
.B (DIR=1)
.EE
.br
.ie t .in -7n
.el .in -7.2n
Answer the questions asked by
.I FORMAT
as you prefer.
The
.B DIR=1
parameter to
.I 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
.I d
and
.I u
to have more than one hard drive.
.IP
Finally, it's a good idea to give the
.I SYSTEM (SYSGEN)
command (Model I/III) or
.I SYSGEN
command (Model 4/4P).
This command saves the
.I SYSTEM
settings, so the drive will be available again the next time you reboot or
restart the emulator.
.IP
If you need to access the hard disk file after booting from a floppy that hasn't
been
.IR SYSGEN ed,
simply use the same
.I SYSTEM
command(s) again, but don't
.IR FORMAT .
You can freely use a different drive number or (if you renamed the hard disk
file) a different unit number.
.IP
The
.B F7
key currently doesn't allow
.I 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
.IR LDOS .
.IP
.I Technical note:
.I XTRSHARD/DCT
is a small Z80 program that implements all the required functions of an
.I LDOS
disk driver.
Instead of talking to a real (or emulated) hard disk controller, however, it
uses special support in
.B xtrs
that allows Z80 programs to open, close, read, and write Unix files directly.
This support is described further in
.BR "Data import and export" ,
below.
.TP
.B Using native hard disk drivers
Beginning in version 4.1,
.B 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
.RI ( .hdv )
file format that
.I XTRSHARD/DCT
does.
With
.IR LDOS / LS-DOS ,
the
.IR RSHARD x /DCT
and
.I TRSHD/DCT
drivers are known to work.
With Montezuma
.I CP/M
2.2, the optional Montezuma hard disk drivers are known to work.
The hard disk drivers for
.I NEWDOS/80
and for Radio Shack
.I CP/M
3.0 should work, but they have not yet been tested at this writing.
Any bugs should be reported.
.IP
To get started, run the
.BR mkdisk (1)
program to create a blank hard drive
.RI ( .hdv )
file.
A typical usage
would be
.BR "mkdisk -h myhd.hdv" .
See the
.B mkdisk
man page for other options.
.IP
Second, link the file to an appropriate name.
The WD1010 emulation supports up to four hard drives, with names of the form
.IR hard M \- U,
where
.I M
is the TRS-80 model
.RB ( 1 ,
.BR 3 ,
.BR 4 ,
or
.BR 4p )
and
.I U
is a unit number in the range 0\(en3.
It looks for these files in the same directory as the floppy disk files
.IR disk M \- U.
If no such files are present,
.B xtrs
disables the WD1010 emulation.
.IP
Note that if hard drive unit 0 is present on a Model 4P (file
.IR 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
.B F2
while booting to force the ROM to boot from floppy, or simply avoid using unit
number 0.
Stock
.IR TRSDOS / LS-DOS
6 systems do not support booting from a hard drive; M.A.D. Software's
.I HBUILD6
add-on to
.I LS-DOS
for hard drive booting should work, but is untested.
Montezuma
.I CP/M
2.2 does boot from the emulated hard drive.
.IP
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.
.SS Data import and export
Several Z80 programs for data import and export from various TRS-80 operating
systems are included with
.B 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.
.PP
The emulated floppy
.I utility.dsk
contains some programs for transferring data between the emulator and ordinary
Unix files.
.IR IMPORT/CMD ,
.IR EXPORT/CMD ,
and
.I SETTIME/CMD
run on
the emulator under Model I/III
.IR TRSDOS ,
Model I/III
.IR LDOS ,
Model I/III
.IR NEWDOS/80 ,
and Model 4/4P
.IR TRSDOS / LS-DOS
6; they may also work under other TRS-80 operating systems.
Model III
.I TRSDOS
users will have to
use
.IR TRSDOS 's
.I CONVERT
command to read
.IR utility.dsk .
.TP
.I IMPORT/CMD
imports a Unix file and writes it to an emulated disk.
.IP
Usage:
.B IMPORT
.RB [ \-lne ]
.I unixfile
.RI [ trsfile ]
.IP
The
.B \-n
flag converts
Unix newlines (\(rsn) to TRS-80 newlines (\(rsr).
The
.B \-l
flag converts the Unix filename to lowercase, to compensate for TRS-80
operating systems such as
.I NEWDOS/80
that convert all command-line arguments to uppercase.
When using the
.B \-l
flag, you can put a
.B [
or up-arrow in front of a character to keep it in uppercase.
Give the
.B \-e
flag if your TRS-80 operating system uses the
.I NEWDOS/80
convention for representing the ending record number in an open file control
block.
This should be detected automatically for
.I NEWDOS/80
itself and for
.I TRSDOS
1.3, but you'll need to give the flag for
.I DOSPLUS
and possibly
other
.RI 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,
.I IMPORT
uses the last component of the Unix pathname, but with any \(lq.\(rq changed to
\(lq/\(rq to match TRS-80 DOS file extension syntax.
.TP
.I EXPORT/CMD
reads a file from an emulated disk and exports it to a Unix file.
.IP
Usage:
.B EXPORT
.RB [ \-lne ]
.I trsfile
.RI [ unixfile ]
.IP
The
.B \-n
flag converts TRS-80 newlines (\(rsr) to Unix newlines (\(rsn).
The
.B \-l
flag converts the Unix filename to lowercase.
When using the
.B \-l
flag, you can put a
.B [
or up-arrow in front of a character to keep it in uppercase.
Give the
.B \-e
flag if your TRS-80 operating system uses the
.I NEWDOS/80
convention for representing the ending record number in an open file control
block.
This should be detected automatically for
.I NEWDOS/80
itself and for
.I TRSDOS
1.3, but you'll need to give the flag for
.I DOSPLUS
and possibly
other
.RI 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,
.I EXPORT
uses the TRS-80 filename, but with any \(lq/\(rq changed to \(lq.\(rq to match
Unix file extension syntax.
.IP
.I Note:
The export of files from
.B xtrs
may be prohibited by the
.B \-emtsafe
flag; see
.BR Options ,
below.
.TP
.I SETTIME/CMD
reads the date and time from Unix and sets the TRS-80 DOS's date and time
accordingly.
.PP
The next several programs were written in Misosys C and exist in two versions on
.IR utility.dsk .
The one whose name ends in \(lq6\(rq runs on Model 4
.IR TRSDOS / LS-DOS
.RI 6. x ;
the other runs on
.I LDOS
.RI 5. x
and most other Model I/III operating systems.
.TP
.I CD/CMD
(or
.IR CD6/CMD )
changes
.BR xtrs 's
current working directory under Unix.
.IP
Usage:
.B CD
.RB [ \-l ]
.I unixdir
.IP
The
.B \-l
flag converts the Unix directory name to lowercase.
When using the
.B \-l
flag, you can put a
.B [
or up-arrow in front of a character to keep it in uppercase.
Running
.I CD/CMD
will change the interpretation of any relative pathnames given to
.I IMPORT
or
.IR EXPORT .
It will also change the interpretation of disk names at the next disk change,
unless you specified an absolute pathname for
.BR xtrs 's
.B \-diskdir
parameter.
.IP
.I Note:
The change of
.BR xtrs 's
current working directory may be prohibited by the
.B \-emtsafe
flag; see
.BR Options ,
below.
.TP
.I PWD/CMD
(or
.IR PWD6/CMD )
prints
.BR xtrs 's
current working directory under Unix.
.TP
.I UNIX/CMD
(or
.IR UNIX6/CMD )
runs a Unix shell command.
.IP
Usage:
.B UNIX
.RB [ \-l ]
.I unix-command-line
.IP
The
.B \-l
flag converts the Unix command line to lowercase.
When using the
.B \-l
flag, you can put a
.B [
or up-arrow in front of a character to keep it in uppercase.
Standard I/O for
the command uses the
.B xtrs
program's standard I/O descriptors; it does not go to the TRS-80 screen or come
from the TRS-80 keyboard.
.IP
.I Note:
The execution of Unix shell commands may be prohibited by the
.B \-emtsafe
flag; see
.BR Options ,
below.
.TP
.I MOUNT/CMD
(or
.IR MOUNT6/CMD )
is a convenience program that switches emulated floppy disks in the drives.
.IP
Usage:
.B MOUNT
.RB [ \-l ]
.I unixfile unit-number
.IP
The
.B \-l
flag converts
.I unixfile
to lowercase.
When using the
.B \-l
flag, you can put a
.B [
or up-arrow in front of a character to keep it in uppercase.
.I unixfile
is any Unix filename;
.I unit-number
is a single digit, 0 through 7.
The command deletes the file
.IR disk M \- U
(where
.I M
is the TRS-80 model and
.I U
is the given
.IR unit-number )
from the disk directory (see the
.B \-diskdir
option below), replaces it with a symbolic link to the given filename, and
signals a disk change (as if
.B F7
had been pressed).
.IP
.I Note:
The mounting of a Unix file as a disk image may be prohibited by the
.B \-emtsafe
flag; see
.BR Options ,
below.
.TP
.I UMOUNT/CMD
(or
.IR UMOUNT6/CMD )
is a convenience program that removes an emulated floppy disk from a drive.
.IP
Usage:
.B UMOUNT
.I unit-number
.IP
.I unit-number
is a
single digit, 0 through 7.
The command deletes the file
.IR disk M \- U
(where
.I M
is the TRS-80 model and
.I U
is the given
.IR unit-number )
from the disk directory (see the
.B \-diskdir
option below), and signals a disk change (as if
.B F7
had been pressed).
.IP
.I Note:
The unmounting of a Unix file as a disk image by deleting it on the host may be
prohibited by the
.B \-emtsafe
flag; see
.BR Options ,
below.
.PP
The emulated floppy
.I cpmutil.dsk
contains import and export programs for Montezuma
.IR CP/M ,
written by Roland Gerlach.
It was formatted as a \(lqMontezuma Micro Standard DATA disk (40T, SS, DD,
200K)\(rq, with 512-byte sectors.
Be careful to configure your
.I 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
.\" If outputting HTML, make the filename a clickable link.
.if '\*(.T'html' .UR file:///usr/share/doc/xtrs/cpmutil.html
.I cpmutil.html
.if '\*(.T'html' .UE
and source code in the file
.I cpmutil.tgz
(a gzipped tar archive) in the
.B xtrs
source distribution.
.\" Per the Internet Archive, Roland's site disappeared sometime between
.\" 2007-12-22 and 2015-05-20.
.\" 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.
.PP
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
.IR trs_imp_exp.h .
Assembler source code for the existing programs is supplied in
.IR xtrshard.z ,
.IR import.z ,
.IR export.z ,
and
.IR settime.z .
You can also write programs that use the traps in Misosys C, using the files
.I xtrsemt.h
and
.I xtrsemt.ccc
as an interface; a simple example is in
.IR settime.ccc .
All of these files are available in the
.B xtrs
source distribution.
.SS Interrupts
The emulator supports only interrupt mode 1 of the Z80.
It will complain if your program enables interrupts after powerup without
executing an IM 1 instruction first.
All Model I/III/4/4P software does this, as the built-in peripherals in these
machines support only IM 1.
The Model I has a 40 Hz heartbeat clock interrupt, while the Model III uses 30
Hz, and the Model 4/4P can run at either 30 Hz or 60 Hz.
.\" This discussion used to assume that HZ=100 on Intel Linux. Much has changed
.\" since then. In Linux 2.6.13, HZ changed to 250. After that, the Linux
.\" kernel developed high-resolution timers and "tickless" behavior.
.\"
.\" Old language:
.\" 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 a Linux kernel configured with HZ=100,
you'd see this pattern: (tick, 30ms, tick, 20ms, ...) instead of a tick every
25ms.
.SS 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).
.B xtrs
emulates this feature.
.PP
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.
.B xtrs
emulates this feature as well.
.SS Sound
Sound support uses the Open Sound System (OSS)
.I /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
.B HAVE_OSS
in the source distribution's
.I Makefile
or in
.IR 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
.B xtrs
opens
.IR /dev/dsp .
It automatically closes the device again after a few seconds of silence.
.PP
If you are playing a game with sound, you'll want to use the
.B \-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.
.PP
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
.B \-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
.B \-samplerate
flag.
.PP
The Orchestra-85 music synthesis software will run under
.BR xtrs 's
Model I emulation, and the Orchestra-90 software will run with Model III
operating systems under
.BR 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
.BR xtrs 's
.B \-autodelay
flag when running Orchestra-85/90, but you might want to specify a small fixed
delay to keep from getting excessive key repeat.
.SS Mouse
A few Model 4 programs could use a mouse, such as the shareware hi-res
drawing program
.IR MDRAW-II .
The program
.I XTRSMOUS/CMD
on the utility disk
.RI ( utility.dsk )
is a mouse driver for Model 4/4P mode that should work with most such programs.
.B 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
.BR xtrs .
Instead,
.I XTRSMOUS
accesses the X mouse pointer using an emulator trap.
.I XTRSMOUS
implements the same
.IR 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.)
.PP
By default
.I XTRSMOUS
installs itself in high memory.
This is done because
.I 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,
.I 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
.I MDRAW
to remove the test, you can install
.I XTRSMOUS
in low memory under
.IR TRSDOS / LS-DOS
6 using the syntax
.BR "XTRSMOUS (LOW)" .
.SS 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.
.B xtrs
currently emulates them at port ranges 0x70\(en0x7C and 0xB0\(en0xBC.
The T-Timer port range at 0xC0\(en0xCC conflicts with the Radio Shack hard drive
controller and is not emulated.
.PP
These clocks return only a 2-digit year, and it is not well-documented what
their driver software does since the year 2000.
If you have software that works with one of them, please contact the
.ie \n[.g] .UR http://\:www.tim-mann.org/
.el .UR http://www.tim-mann.org/
author
.UE
to report what happens when it is used with
.BR xtrs .
.PP
Also see
.I SETTIME/CMD
in
.BR "Data import and export" ,
above, for another way to get the correct time into a Z80 operating system
running under
.BR xtrs .
.PP
Note that Model I
.I TRSDOS
and
.I VTOS
4.0 have a \(lqyear 1988\(rq problem, and
.IR LDOS / LS-DOS
has a \(lqyear 2012\(rq problem; see
.\" If GNU roff, use hyphenless breakpoints.
.ie \n[.g] .UR http://\:www.trs-80.org/\
\:ldos-and-ls-dos-2012-and-beyond-technical-information/
.el .UR http://www.trs-80.org/\
ldos-and-ls-dos-2012-and-beyond-technical-information/
.I LDOS and LS-DOS: 2012 and Beyond \(em Technical information
.UE
by Matthew Reed.
.\" 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, \fBxtrs\fP 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.
.SS Joystick
Pressing a key on a PC-keyboard-style numeric keypad with
.B NumLock
disengaged emulates the Alpha Products joystick.
See
.BR Keys ,
above, for details.
The emulated joystick is mapped only at port 0, to avoid conflicts with other
devices.
.SS Running games
Some games run rather well under
.B xtrs
provided that your machine is fast enough to run the emulation in real time and
that you choose the right command-line options.
.I 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:
.RS
.EX
.RB "$ " "startx \-\- \-bpp 8"
.RB "$ " "xtrs \-autodelay"
.EE
.RE
.PP
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
.B \-samplerate 11025
or even
.BR "\-samplerate 8000" .
.SH Options
Defaults for all options can be specified using the standard X resource
mechanism; see the
.\" If GNU roff, use hyphenless breakpoints.
.ie \n[.g] .UR ftp://\:www.x.org/\:pub/\:current/\:doc/\:libX11/\:libX11/\
\:libX11.html#\:Resource_Manager_Functions
.el .UR ftp://www.x.org/pub/current/doc/libX11/libX11/libX11.html\
#Resource_Manager_Functions
Resource Manager Functions chapter of
.IR "Xlib \(em C Language X Interface"
.UE
by Jim Gettys, Robert W. Scheifler, et al.
The class name for
.B xtrs
is
.BR Xtrs .
.TP
.B \-display \c
.I x-display
Set your X display to
.IR x-display.
The default is to use the DISPLAY environment variable.
.TP
.B \-iconic
Start with the
.B xtrs
window iconified.
.TP
.B \-background \c
.I color
.TQ
.B \-bg \c
.I color
Set the background color of the
.B xtrs
window to
.IR color .
.TP
.B \-foreground \c
.I color
.TQ
.B \-fg \c
.I color
Set the foreground color of the
.B xtrs
window to
.IR color .
.TP
.B \-title \c
.I title-text
Use
.I title-text
in the window title bar instead of the program name.
.TP
.B \-borderwidth \c
.I width
Put a border of
.I width
pixels
around the TRS-80 display.
The default is 2.
.TP
.B \-scale \c
.IR xfac [\c
.BI , yfac\c
]
Multiply the horizontal and vertical window size by
.I xfac
and
.IR yfac ,
respectively.
Possible values are integers in the range
[1,4] for
.I xfac
and [1,8] for
.IR yfac .
Defaults are
.IR xfac =1
and
.IR yfac =2\(mu xfac .
Ignored if
.B \-usefont
is given.
.TP
.B \-resize
In Model III or 4/4P mode, resize the X window whenever the emulated display
mode changes between 64\(mu16 text (or 512\(mu192 graphics) and 80\(mu24 text
(or 640\(mu240 graphics).
This is the default in Model III mode, since 80\(mu24 text is not available and
the 640\(mu240 graphics add-on card is seldom used.
.TP
.B \-noresize
In Model III or 4/4P mode, always keep the X window large enough for 80\(mu24
text or 640\(mu240 graphics, putting a blank margin around the outside when the
emulated display mode is 64\(mu16 text or 512\(mu192 graphics.
This is the default in Model 4/4P mode, since otherwise there is an annoying
size switch during every reboot.
.TP
.B \-charset \c
.I charset-name
Select among several sets of built-in character bitmaps.
Valid values of
.I charset-name
depend on the TRS-80 model being emulated.
.IP
In Model I mode, five sets are available.
The default,
.BR 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.
.B 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.)
.B stock
is the character set in the stock character generator supplied with most
uppercase-only machines.
Since
.B xtrs
currently always emulates the extra bit of display memory needed to support
lowercase, this character set gives you the authentic, unpleasant effect that
real Model I users saw when they tried to do homebrew lowercase modifications
without replacing the character generator: lowercase letters appear at an
inconsistent height, and if you are using the Level II BASIC ROM display driver,
uppercase letters are replaced by meaningless symbols.
.B early
is the same as stock, but with the standard ASCII characters [, \(rs, ], and
\(ha in the positions where most Model I machines had directional arrows.
This was the default programming in the Motorola character generator ROM that
Radio Shack used, and a few early machines were actually shipped with this ROM.
Finally,
.B german
or
.B 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.
.IP
In Model III, 4, and 4P modes, three sets are available:
.B 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.
.B international
(the default for Model 4 and 4P) is a later Model 4 set with accented Roman
letters in the alternate positions.
.B bold
is a boldface set from a character generator ROM found in one Model
III\(emorigin uncertain.
.TP
.B \-usefont
Use X fonts instead of the built-in character bitmaps.
.TP
.B \-nofont
Use the built-in character bitmaps, not an X font.
This is the default.
.TP
.B \-font \c
.I font-name
If
.B \-usefont
is also given, use the X font
.I 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".
.TP
.B \-widefont \c
.I font-name
If
.B \-usefont
is also given, use the X font
.I font-name
for double-width characters.
The default uses a common X fixed-width font, scaled to double width:
"-misc-fixed-medium-r-normal--20-200-75-75-*-200-iso8859-1".
.TP
.B \-nomicrolabs
In Model I mode, emulate the HRG1B 384\(mu192 hi-res graphics card.
In Model III mode or Model 4/4P mode, emulate the Radio Shack hi-res card.
This is the default.
.TP
.B \-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.
.TP
.B \-debug
Enter
.IR zbx ,
the Z80 debugger.
.TP
.B \-romfile \c
.I filename
.TQ
.B \-romfile3 \c
.I filename3
.TQ
.B \-romfile4p \c
.I filename4p
Use the ROM image file specified by
.I filename
in Model I mode,
by
.I filename3
in Model III and Model 4 mode,
or by
.I 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
.I 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
.I Makefile.local
in the
.B xtrs
source distribution
for instructions on compiling in default ROM image files or default ROM image
filenames.
.TP
.B \-model \c
.I m
Emulate a TRS-80 Model
.IR m .
Values accepted are
.B 1
or
.B I
(Model I),
.B 3
or
.B III
(Model III),
.B 4
or
.B IV
(Model 4), and
.B 4P
or
.B IVP
(Model 4P).
Model I is the default.
.TP
.B \-delay \c
.I d
Tune the emulator's (crude) speed control.
After each Z80 instruction,
.B xtrs
busy-waits for
.I 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
.B xtrs
is compiled with too high an optimization level.
The default delay is 0.
.TP
.B \-autodelay
Dynamically adjust the value of the speed control described in
.B \-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.
.TP
.B \-noautodelay
Turn off
.BR \-autodelay .
This is the default.
.TP
.B \-keystretch \c
.I cycles
Fine-tune the keyboard behavior.
To prevent keystrokes from being lost,
.B xtrs
\(lqstretches\(rq the intervals between key transitions, so that the Z80 program
has time to see each transition before the next one occurs.
Whenever the Z80 program reads the keyboard matrix and sees an emulated key go
up or down,
.B xtrs
waits
.I cycles
Z80 clock cycles (T-states) before it allows the program to see another key
transition.
Key transitions that are received during the waiting period or when the Z80
program is not reading the keyboard are held in a queue.
The default stretch value is 4000 cycles; it should seldom if ever be necessary
to change it.
.TP
.B \-shiftbracket
Emulate [, \(rs, ], \(ha and _ as shifted keys, and {, |, }, and \(ti as
unshifted.
This is the default in Model 4 and 4P modes, and it works well with the keyboard
driver in Model 4
.IR TRSDOS / LS-DOS
6.
.TP
.B \-noshiftbracket
Emulate [, \(rs, ], \(ha and _ as unshifted keys, and {, |, }, and \(ti 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.
.TP
.B \-diskdir \c
.I dir
Set the search directory for floppy and hard disk images to
.IR dir .
If the value starts with \(lq\(ti/\(rq (or is just \(lq\(ti\(rq), it is relative
to your home directory (as determined by the
.B HOME
environment variable).
The default value is \(lq.\(rq.
.TP
.B \-doubler \c
.I doubler-type
(Model I mode only)
Set the double-density adaptor to emulate to
.IR doubler-type .
The parameter may be
.BR percom ,
.B radioshack
(or
.BR tandy ),
.BR both ,
or
.BR none .
.I doubler-type
may be abbreviated to one character.
The default is
.BR both ,
which causes the double density adaptor emulation to respond to the special
commands of both the Percom and Radio Shack cards.
.TP
.B \-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
.BR "Bugs and limitations" ,
below.
.TP
.B \-nodoublestep
(Linux only)
Turn off double-step mode for all real floppy drives.
This is the default.
.TP
.B \-stepmap \c
.IR s0 [\c
.BI , s1\c
[\c
.BI , s2\c
[\c
.BI , s3\c
[\c
.BI , s4\c
[\c
.BI , s5\c
[\c
.BI , s6\c
[\c
.BI , s7\c
]]]]]]]
(Linux only)
Selectively set double-step mode for individual real floppy drives.
Each comma-delimited parameter corresponds to a drive unit number; see
.BR "Real floppy disks" ,
above.
If
.IR s U
is
.B 1
and
.IR disk M \- U
is a (symbolic link to) a real drive,
where
.I M
is the TRS-80 model
.RB ( 1 ,
.BR 3 ,
.BR 4 ,
or
.BR 4p )
and
.I U
is the drive unit number (a digit in the range 0\(en7), the drive will be
single-stepped; if
.IR s U
is
.BR 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
.B \-doublestep
or
.BR \-nodoublestep .
.IP
Example:
.B \-model 1 \-stepmap 2,1,2
double-steps
.I disk1-0
and
.IR disk1-2 ,
and single-steps
.IR disk1-1 .
.TP
.B \-sizemap \c
.IR z0 [\c
.BI , z1\c
[\c
.BI , z2\c
[\c
.BI , z3\c
[\c
.BI , z4\c
[\c
.BI , z5\c
[\c
.BI , z6\c
[\c
.BI , z7\c
]]]]]]]
Selectively set whether drives are emulated as
.5-1/4
-inch or 8-inch; see
.BR "Emulated 8-inch floppy disks" ,
above.
If
.I zU
is
.BR 5 ,
the drive will appear to Z80 software as
.5-1/4
-inch; if
.BR 8 ,
as 8-inch.
The default setting (as reflected in the documentation above) is
.BR 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
.I CP/M
software that supports 8-inch drives.
You can also use
.I XTRS8/DCT
with 8-inch drives in the first four positions; even though the prompt suggests
the unit number must be 4\(en7, numbers 0\(en3 are accepted.
.I 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
.I FORMAT
if you get this wrong.
.TP
.B \-truedam
Turn off the single density data address mark remapping kludges
described in
.B Emulated floppy disks
and
.BR "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
.\" If GNU roff, use hyphenless breakpoints.
.ie \n[.g] .UR http://\:www.tim-mann.org/\:trs80/\:dskspec.html
.el .UR http://www.tim-mann.org/trs80/dskspec.html
.I Common File Formats for Emulated TRS-80 Floppy Disks
.UE .
.TP
.B \-notruedam
The opposite of
.BR \-truedam .
This setting is the default.
.TP
.B \-samplerate \c
.I rate
Set the sample rate for new cassette WAVE files, direct cassette I/O to the
sound card, and game sound output to the sound card.
Existing WAVE files will be read or modified using their original sample rate
regardless of this flag.
The default is 44,100 Hz.
See also
.BR cassette (1).
.TP
.B \-serial \c
.I terminal-name
Set the terminal device to be used for I/O to the TRS-80's serial port to
.IR terminal-name.
The default is
.I /dev/ttyS0
on Linux, and
.I /dev/tty00
on other versions of Unix.
Setting the name to be empty
.RB ( "\-serial \(dq\(dq" )
emulates having no serial port.
.TP
.B \-switches \c
.I 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
.B -serial
option is not set to \(dq\(dq.
The default value is 0x6F, which Radio Shack software conventionally interprets
as 9600 bps, 8 bits/word, no parity, 1 stop bit.
.TP
.B \-emtsafe
Disable emulator traps (see
.BR "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.
.TP
.B \-noemtsafe
The opposite of
.BR \-emtsafe .
.SH Exit status
.B
xtrs
primarily uses diagnostic messages to indicate trouble.
.TP
0
Successful operation; normal or expected exit.
.TP
1
Fatal error; includes usage errors such as unrecognized command-line arguments.
.TP
\-1, 255
Unable to open X display.
.SH Environment
.B
xtrs
reads a couple of environment variables.
.TP
.B DISPLAY
is read indirectly via
.BR XOpenDisplay (3),
and specifies the X server to which
.B xtrs
(an X client)
should connect.
.TP
.B HOME
is used at startup to (1) locate
.I .Xdefaults
and
.I Xtrs
files specifying defaults for command-line options and (2) resolve the argument
to the
.B \-diskdir
option;
and sometimes when the emulator trap to change
.BR xtrs 's
current working directory is activated; see
.BR "Data import and export" ,
above.
.SH Files
.B xtrs
may access files as described under
.B HOME
in
.BR Environment ,
above, as well as floppy drive, digital signal processor (sound), and terminal
device files; see
.B Real floppy disks
and
.BR Sound ,
above, and
.B \-serial
under
.BR Options ,
above.
.PP
If the
.B \-emtsafe
flag is not in effect, then through the use of emulator traps
(see
.BR "Data import and export" ,
above)
.I arbitrary
files on the system may be read, written, or deleted from within the emulator
with the privileges of the user invoking
.BR xtrs .
.SH Bugs and limitations
The emulated serial port's modem status and control signals are not tied to the
signals on the real serial port, because the real signals are not available to
software through the Unix terminal device interface.
The ability to check for parity, framing, and overrun errors and receive an
interrupt when one occurs is not emulated.
Unix does not support 2000, 3600, or 7200 baud, so these TRS-80 data rates are
remapped to 38400, 57600, and 115200 baud respectively.
.PP
A better signal processing algorithm might help read real cassettes more
reliably, especially at 1500bps.
.PP
Some features of the floppy disk controller are not currently emulated.
.IP \(bu
Force Interrupt with condition bits 0x01, 0x02, or 0x04 is not implemented.
.IP \(bu
Read Track is implemented only for DMK emulated floppies.
.IP \(bu
The multiple-sector flags in Read and Write are not implemented.
.IP \(bu
The timing of returned sectors is emulated only for the Read Address command,
and not very accurately for JV1 or JV3.
.IP \(bu
If a disk has more than one sector with the same number on a track,
.B 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
.I HyperZap
and Model I
.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
.I Super Utility
do) works on both DMK and JV3.
.PP
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
.B xtrs
needs.
There are some limitations even under Linux: index holes are faked, not detected
on the real disk, and the timing of returned sectors is not emulated at all.
Due to the limitations of ISA-bus floppy disk controllers, when formatting a
physical floppy under
.BR 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,
.B xtrs
can read and write to physical floppies that have already been formatted in
these ways (perhaps by a real TRS-80).
.PP
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-1/2
-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.
.PP
.I 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.
.PP
The emulator uses a heuristic to decide what format a ROM image file is in.
If a raw binary ROM image starts with 0x01, 0x05, or 0x22, it can be
misidentified as being in a different format.
This is rather unlikely to occur, as ROMs typically begin with 0xF3, the DI
instruction.
.PP
The joystick emulation could be made to work with real joysticks using the X
Input extension, but this is not implemented yet.
.PP
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.
.SH Authors and acknowledgements
.B xtrs
1.0 was written by David Gingold and Alec Wolman.
The current version was revised and much extended by Timothy Mann
(see
.\" If GNU roff, use hyphenless breakpoints.
.ie \n[.g] .UR http://\:www.tim-mann.org/
.el .UR http://www.tim-mann.org/
.UE ).
See
.I README
in the
.B xtrs
source distribution for additional notes from the authors; a (compressed) copy
may be locally available with your
.B xtrs
installation at
.\" If outputting HTML, make the filename a clickable link.
.ie '\*(.T'html' \{\
.UR file:///usr/share/doc/xtrs/README.gz
.UE . \}
.el \{\
.IR /usr/share/doc/xtrs/README.gz . \}
.PP
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
.IR MS-DOS -based
TRS-80 emulators.
The DMK format was designed by David Keil for his
.IR MS-DOS -based
TRS-80 emulator.
The hard disk file format was designed by Matthew Reed for his
.IR MS-DOS -based
TRS-80 emulators.
Al Petrofsky and Todd P. Cromwell III supplied font data.
Roland Gerlach contributed the
.I CP/M
import and export programs as well as several bug reports and fixes for the
emulator itself.
Ulrich Mueller added the
.B \-borderwidth
option, improved the
.B \-scale
option and the bitmap font scaling, ported the
.IR IMPORT ,
.IR EXPORT ,
and
.I SETTIME
utilities to
.IR 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
.IR zbx .
Mark McDougall provided documentation for the Micro Labs Grafyx Solution card.
Jenz Guenther added the
.B \-title
option and contributed code to emulate the GENIE (German Model I clone).
Joe Peterson contributed code to emulate the TimeDate80 and the
.B \-emtsafe
feature.
Denis Leconte contributed part of the
.B \-scale
implementation.
.SH See also
.BR cmddump (1),
.BR hex2cmd (1),
.BR cassette (1),
.BR mkdisk (1)
.PP
There are many other TRS-80 resources available on the Web, including shareware
and freeware emulators that run under
.I MS-DOS
and other operating systems,
software for converting TRS-80 physical media to the emulator's disk file
format, ROM images, and TRS-80 software that has already been converted.
For pointers, see
.\" If GNU roff, use hyphenless breakpoints.
.ie \n[.g] .UR http://\:www.tim-mann.org/\:trs80.html
.el .UR http://www.tim-mann.org/trs80.html
.UE .
.\" $Id: xtrs.man,v 1.69 2009/06/15 23:44:43 mann Exp $
.\" vim:set et ft=nroff tw=80:
|