Last modified on Thu Jun 28 19:03:10 PDT 2001 by mann
A huge collection of TRS-80 software is available for download from the TRS-80 Revived Pages, http://www.trs-80.com/.
Most software from Misosys, Logical Systems, Galactic Software Ltd., Powersoft, and Breeze/QSD is now available for free download by permission of the copyright owner, Roy Soltoff (owner of Misosys). See http://www.tim-mann.org/trs80.html.
Computer News 80 has some commercial software and hardware products, a library of freeware disks, and a small monthly newsletter that still supports the TRS-80 I/III/4. You can contact them via the Web at http://www.cnpublishing.com/cn80.html, via email at compnews@juno.com, or by phone at 307-265-6483.
M. A. D. Software deals in TRS-80 products. Among other things, they have upgrades to the Model 4P ROMs and the MODELA/III file (Model III ROM image). Check out their Web site at http://madsoft.lonestar.org/, or contact them via email at madcs@madsoft.lonestar.org or via US mail at:
M. A. D. SoftwareFrank Gottschalk ("The TRS-80 Recycler") deals in used TRS-80 hardware and software. You can contact him at 72623.40@CompuServe.COM.
Archive Software is a small venture run by Cord Coslor. Cord buys and sells used TRS-80 Model I/III/4 software and hardware (among other things). Here is his new contact information as of 2-Apr-2001:
Cord CoslorYou can still order some software from Tandy Software Replacement and/or Radio Shack Unlimited, formerly Radio Shack National Parts. You can ask at a store or call Radio Shack at 800-843-7422. I'm told that you might have to bug people for a while and maybe ask for a supervisor or someone who's been there longer, before you find someone who believes this is possible and knows how to do it. The purpose of Tandy Software Replacement is to supply replacement disks to people whose originals have been destroyed, so generally they do not provide manuals or packaging, and the prices are very low. They don't actually seem to care whether you originally owned the software. Radio Shack Unlimited also stocks (or can make up) full packages of some software, including manuals.
You can try bidding in the eBay auctions. Prices tend to be inflated, though.
More hardware information is starting to appear on the Web these days. See the TRS-80 links on my Web page, at http://www.tim-mann.org/trs80links.html, both the "history and technical data" and "software and documentation downloads" sections.
You can ask on the newsgroup comp.sys.tandy. This is a good place for TRS-80 software questions too. You might also try searching back postings to the group with Deja News.
Also try the sources given in topic [1] to see if they carry hardware manuals. Tandy Software Replacement or Radio Shack Unlimited are said to be able to photocopy and sell manuals, but I haven't tried this.
Computer News 80 has a mail-in repair service; see topic [1].
Tandy Repair Centers may or may not be able to fix your TRS-80. There is some danger that they won't know how to find the necessary parts and information. They don't see a lot of these machines any more.
This is a somewhat complex topic, and much of the rest of this FAQ is devoted to the details. There are a number of approaches, but I think the best is to copy the disks to virtual disk image (.DSK) files, as used by the various TRS-80 emulators; see the next few topics in this FAQ. Once you have the your data in .DSK format, it will be much easier to work with. You can use an emulator to run the TRS-80 software that is on the disks, get directory listings, examine or print the data, extract individual files, etc.
Another approach that people sometimes try is to run TRSCROSS. This is an MS-DOS program for reading and writing TRS-80 diskettes that directly extracts individual files from the disks, without making a .DSK image. It's a very old program that seems to have trouble working on modern, fast PCs, and it puts your data into a format that is not directly usable with emulators. I do not recommend this approach, but if you really want to try it, TRSCROSS is available from my Misosys software page.
Another approach that doesn't work well is to try to read the disks in Linux without using an emulator. The Linux floppy driver is quite versatile, but (at least as of this writing) no matter how you configure it, you won't be able to read TRS-80 disks through the normal open/close/read/write interface that programs like "dd" use. First, the driver assumes that sector numbering always starts from 1, but most TRS-80 formats start it from zero. Second, the driver assumes that all sectors are written with a normal data address mark, but most TRS-80 formats write some sectors (usually those on the directory track) with a different DAM. The TRS-80 emulator for Linux (xtrs) talks to the floppy driver using the low-level "raw command" interface, which lets it get around these problems.
Still another approach is to connect a serial or parallel cable between your PC and a real TRS-80, and transfer the data over that. This is a lot slower than reading a floppy, but in some cases you can be stuck doing it when the other approaches discussed below don't work. Jeff Vavasour's Model I emulator includes instructions on how to do this with a Model I; see topic [4]. I don't have any advice beyond that, not having tried this approach myself.
People don't really ask me this, but I need to put this information somewhere to refer to from other answers!
Under MS-DOS or MS Windows, I recommend:
Under Unix, I recommend the xtrs Model I/III/4 emulator. This is free software, available from http://www.tim-mann.org/xtrs.html. It should work on any version of Unix with the X Window System, except that its support for physical floppy disk drives and sound works only under Linux.
A .DSK file is an image of a TRS-80 floppy disk in a file. They are used by TRS-80 emulators.
Warning: There are three kinds of .DSK files with different internal formats, one that originated with Jeff Vavasour's Model I emulator (JV1), one that originated with his Model III/4 emulator (JV3), and one that originated with David Keil's emulators (DMK). Each one adds support for more TRS-80 disk formats. Each of Jeff's emulators works only with the kind of .DSK file that was designed for it. Matthew Reed's emulators work with JV1 and JV3 transparently. David Keil's emulators and xtrs work with all three kinds.
Technical details of the JV1 and JV3 formats are now available from my Web page, http://www.tim-mann.org/trs80/dskspec.html. Technical details of the DMK format are available from David Keil's Web page, http://discover-net.net/~dmkeil/trsdoc.htm#Technical-DMK-disks.
One way is to transfer data over the TRS-80's serial port or printer port. That's probably the best way if you have a Model I, because a stock Model I can read and write only single density, but many PCs cannot deal with single density (see topic [12]). Jeff Vavasour's Model I emulator includes instructions on how to do this; see topic [4].
A faster and more convenient way, if you can get it to work, is to read the disks in a PC with a 5" floppy drive. Under MS-DOS or MS Windows, try Matthew Reed's freeware READDISK program. See http://www.arrowweb.com/mkr/readdisk_doc.html.
Alternatively, if you have problems with READDISK or you are using Linux, you can copy the disks with an emulator, as follows.
There are at least four possibilities:
(A) One way would be to transfer data from your newer computer to a real TRS-80 through its serial port or printer port. That may be the only way if you have a Model I, because a stock Model I can read and write only single density, but many PCs cannot deal with single density (see topic [12]). However, I don't know of any software for transferring data to the TRS-80 Model I through a serial or parallel port. (Kermit did exist for the Model 4, and you may be able to find XMODEM or the like, but I can't help with them.)
(B) A faster and more convenient way, if you can get it to work, is to write the disks in a PC with a 5" floppy drive. If you have Linux on your PC and your disk is a standard double-density format (40 or 80 tracks, 1 or 2 sides), you can use the programs trsfmt and diskdmp by Tony Duell, available from http://www.tim-mann.org/trs80/trsdsk.tar.gz. See the documentation included in the tar file. If you don't understand what to do with .tar.gz files, see the next method instead.
(C) A more general way to write TRS-80 floppy disks in a PC with a 5" floppy drive is to use an emulator. Suitable emulators are available for both Linux and DOS or Windows. Here is a procedure you can follow.
Most of the TRS-80 emulators have programs for doing this. Read the instructions for your emulator to find out how to use them. Sometimes the program runs on the emulated Z-80 (a /CMD file); other times it runs on the host operating system (an .EXE file).
Under Jeff Vavasour's Model I emulator, the relevant program is VREAD.EXE. Under Jeff's Model III/4 emulator, it is EXPORT/CMD. Under Matthew Reed's emulators, the program is TRSREAD.EXE and is available only with registration. Under xtrs and David Keil's emulators, the program is called EXPORT/CMD (not the same program as Jeff's).
Most of the TRS-80 emulators have programs for doing this. Read the instructions for your emulator to find out how to use them. Sometimes the program runs on the emulated Z-80 (a /CMD file); other times it runs on the host operating system (an .EXE file).
Under Jeff Vavasour's Model I emulator, the relevant program is VWRITE.EXE. Under Jeff's Model III/4 emulator, it is IMPORT/CMD. Under Matthew Reed's Model I/III emulator, the program is TRSWRITE.EXE and is available only with the registered version. Under xtrs and David Keil's emulators, the program is called IMPORT/CMD (not the same program as Jeff's).
Some TRS-80 software you will find on the Web is supplied in .ZIP archive files. You need to unzip these files to unpack their contents. There actually are unzip programs that run on a TRS-80, but they're slow and may not support all the compression types used by modern zip programs. So you'll generally want to unzip these archives on on your PC or Unix box. You can get free unzip programs from http://www.info-zip.org/pub/infozip/.
Within some .ZIP archives is a .DSK file. This is an emulated floppy disk file. See topic [5] and the rest of this FAQ for instructions on how to deal with .DSK files.
Other .ZIP archives contain individual files extracted from TRS-80 disks. You can use these with an emulated (or real) TRS-80 by copying the files onto a .DSK file or a real floppy. See topic [9] for instructions.
Some .ZIP archives of TRS-80 software may contain both a .DSK and the individual files extracted from it. This is perhaps the most convenient form, but obviously takes up twice as much space as either of the others.
The table below is based partly on documentation and partly on actual test. Where a filename matches more than one pattern, use the first one that matches. If a password doesn't work, try others from the table and let me know of the error. If you have password information for other Model I/III/4 operating systems, let me know. The values in the TRSDOS 6 column should also work for versions of LS-DOS prior to 6.3.1.
Files LDOS 5.1 LDOS 5.3.1 TRSDOS 6 LS-DOS 6.3.1 ----- -------- ---------- -------- ------------ basic/* (unused) basic basic basic lbasic/* basic (unused) (unused) (unused) config/sys ccc ccc ccc ccc */sys wolves system lsidos system6 */flt gsltd filter filter filter */dvr gsltd driver driver driver */dct rrw3 driver utility driver or utility */cmd rrw3 utility utility utility */hlp (unused) help (unused) help back door rs0lt0ff rs0lt0ff (nflag$ bit7) (nflag$ bit7)The password listed as "back door" gives you access to all files regardless of what their real passwords are. It's documented! I confirmed by looking at the source code that TRSDOS/LS-DOS 6 has no such password, but I found that later versions of it have another, undocumented back door: if you turn on bit 7 of NFLAG$, all file password checking is disabled. The command MEMORY (A="N", B=128) will do this. This back door can be found in TRSDOS 6.2 and LS-DOS 6.3.1, but not in TRSDOS 6.1.2.
Model I TRSDOS 2.3 also has a back door password; the originally intended password is unknown, but the string "ubett" hashes to the correct value and can be used. VTOS 3.0 also has such a back door; the password "hadu" can be used.
The password "password" is a standard default in the TRS-80 world. If you're insistently prompted for a password in a situation where you don't think a password should be needed, try "password".
Another way to reconstruct TRS-80 passwords is through exhaustive search. This is quite fast because TRS-80 operating systems hash their passwords down to 16-bit values, so you need only find some password that hashes to the same value, not the exact original password. Here is a C program to do that.
/* trspwhash * Usage: trspwhash password // Hash a password * trspwhash -u 0xhash // Unhash a password to letters * trspwhash -n 0xhash // Unhash a password to letters and digits */ #include <stdio.h> unsigned int pwhash(unsigned char pw[8]) { unsigned char *p = &pw[7]; unsigned int count = 8; unsigned int hl, t1, t2; hl = 0xffff; do { t1 = hl & 0x07; t2 = hl & 0xff; hl = (t1 << 13) ^ (t1 << 9) ^ (t1 << 2) ^ (t2 << 8) ^ (t2 << 4) ^ (t2 >> 3) ^ (hl >> 8) ^ (*p-- << 8); } while (--count); return hl; } void usage() { fprintf(stderr, "usage: trspwhash [-u | -n] arg\n"); exit(1); } int main(int argc, char **argv) { unsigned int goal; unsigned char pw[16]; int i; if (argc == 2) { strncpy(pw, argv[1], 8); pw[8] = '\0'; strcat(pw, " "); for (i = 0; i < 8; i++) { if (islower(pw[i])) pw[i] = toupper(pw[i]); } printf("%04x\n", pwhash(pw)); } else if (argc == 3 && strcmp(argv[1], "-u") == 0) { goal = strtoul(argv[2], (void*)0, 0); strcpy(pw, " "); for (;;) { if (pwhash(pw) == goal) printf("%s\n", pw); i = 0; for (;;) { switch (pw[i]) { case ' ': pw[i] = 'A'; break; case 'Z': pw[i] = 'A'; i++; if (i == 8) exit(0); continue; default: pw[i]++; break; } break; } } } else if (argc == 3 && strcmp(argv[1], "-n") == 0) { goal = strtoul(argv[2], (void*)0, 0); strcpy(pw, " "); for (;;) { if (pwhash(pw) == goal) printf("%s\n", pw); i = 0; for (;;) { switch (pw[i]) { case ' ': pw[i] = 'A'; break; case 'Z': pw[i] = '0'; break; case '9': pw[i] = 'A'; i++; if (i == 8) exit(0); continue; default: pw[i]++; break; } break; } } } else { usage(); } return 0; }
The Western Digital 177x/179x floppy disk controllers that were used in TRS-80s have some capabilities that PC disk controllers generally lack. The executive summary is that (1) many standard PC floppy controllers can't handle single density at all, (2) even those that can handle single density generally cannot read the directory track on a Model I TRSDOS disk, and (3) there can also be problems reading double density disks. Here are more details.
Many PCs cannot handle single density (FM) encoding. The original Model I used single density exclusively, and even a Model I with a double density adaptor requires a single density boot sector on system disks. The original IBM PC controller required extra outboard components to support clock/data separation for single density, but IBM left them off to reduce their manufacturing costs. (So I'm told; I wasn't involved with PCs in that era.) This started the tradition of leaving out single density support in PCs. Modern PCs use more highly integrated IO chips that include data separation on the chip, but many still omit single density support. See topic [15] for a rundown on what PC controllers support single density and topic [16] for other hardware solutions that are available.
The WD1771, used in the TRS-80 Model I, is able to read and write single-density sectors with nonstandard data address marks (DAMs) 0xF9 and 0xFA, as well as the standard ones 0xFB (data) and 0xF8 (deleted data). The WD1791/1793 and later chips, used in the Model III and 4, can read all such sectors, but cannot distinguish between 0xFB and 0xFA, or 0xF9 and 0xF8. Model I's with double density adaptors have *both* controllers, and use the 1771 for single density, so they are fully compatible with stock Model I's. PC disk controllers, even those that do single density, cannot read sectors that use the 0xFA or 0xF9 DAM at all. (I have actually tested this only with 0xFA on a PC87306. I'd welcome corrections if other standard PC controllers can handle these data address marks.) See topic [16] for devices that can read these disks.
These differences would be no problem if Model I software did not actually use the nonstandard DAMs, but unfortunately, it does. In particular, Model I TRSDOS 2.x distinguishes between normal data sectors and directory sectors by using 0xFB for the former and 0xFA for the latter. On Model III/4 TRSDOS-like systems, where 0xFA is not fully supported, 0xF8 is used instead. Some later Model I systems (such as LDOS 5.0.2 and later) also switched to 0xF8 on the directory to allow for direct media compatibility with the Model III/4, while others stuck with 0xFA for direct Model I TRSDOS compatibility. Patches for TRSDOS 2.3 were developed that allow it to read and/or write 0xF8 directory sectors, but they were not widely used. (See topic [13].) Special software is supplied with Model III/4 operating systems that allows them to read Model I disks and/or convert them to Model III/4 format. (The REPAIR command on LDOS is an example of the latter.) No such software can work on a PC controller, however, because the 0xFA sectors cannot be read at all.
There are also many gratuitous format differences amongst the various TRSDOS-like TRS-80 operating systems. For most of the systems, a single-density, single-sided, 35-track disk is a common denominator, except for the DAM problem just discussed. Adding more tracks is usually not a problem, though some systems may insist that the directory remain on track 17, while others put the directory location in track 0, sector 0, byte 2. The various systems diverged in the way they generalized the format to work with double density and other larger drives. The main streams were LDOS, NEWDOS, and Model III TRSDOS 1.3. LDOS uses a variable number of sectors per granule (allocation unit) that must evenly divide the number of sectors per track, and uses exactly one cylinder for the dirctory. I believe NEWDOS always uses 5 sectors per allocation unit, but allows varying the packing of granules onto the disk and the number of granules used for the directory. Model III TRSDOS 1.3 made a large number of unnecessary changes to the format; it was clearly inspired by the Model I format, but it is not a compatible extension.
Many PC disk controllers have difficulty reading double density disks formatted by older releases of TRS-80 operating systems, even with the proper software on the PC. Many TRS-80 operating systems formatted the disks with too short a gap between the index hole and the first sector. The WD1770 controller used in later releases of the TRS-80 Model 4/4P hardware also apparently had problems reading these disks, so later releases of all the Model III and 4 operating systems were corrected to format floppies with the proper gap lengths.
Working around the index hole problem can be tricky. With some drive/controller combinations, it may work to put a piece of tape over the index hole, but this is not usually successful. Another possibility is to read the disk with a Catweasel controller, if you have one; see topic [16]. Here are instructions for another approach, from Amardeep S. Chana:
Nick Andrew adds that with older drives (such as original TRS-80 drives), the drive itself does not need to see the index pulse, but the PC controller may still need to see at least one pulse to get started. In this case you can do without the switch; instead, insert a piece of cardboard alongside the disk after the first attempted access, positioning it so as to block the index hole sensor.
Model I TRSDOS users will find difficulty in reading the distribution disk due to the data address mark used for the directory. Therefore, before making a BACKUP or copying EDAS files from the diskette, you will need to change one byte of the TRSDOS 2.3 disk driver using one of the following three methods. This change will not affect the operation of your TRSDOS.
Method (1) directly modifies the system diskette with a patch. To prepare for this patch, obtain a fresh BACKUP of your TRSDOS 2.3 to use for this operation. Then enter the following BASIC program and RUN it. After you RUN the program, re-BOOT your TRSDOS diskette to correct the byte in memory.
10 OPEN"R",1,"SYS0/SYS.WKIA:0" 20 FIELD 1,171 AS R1$, 1 AS RS$, 84 AS R2$ 30 GET 1,3: LSET RS$="<": PUT 1,3: CLOSE
Added 10-18-2000: If you are using this patch on a TRSDOS 2.3 disk that itself has 0xF8 data address marks, the disk will not boot unless you also patch the boot sector. You can do so by adding the following lines to the program. Methods (2) and (3) will not work for this purpose. You might get the message "INTERNAL ERROR IN LINE 60" when you run the program, for unknown reasons, but it works anyway.
40 OPEN"R",1,"BOOT/SYS.WKIA:0" 50 FIELD 1,220 AS R1$, 1 AS RS$, 35 AS R2$ 60 GET 1,1: LSET RS$=CHR$(28): PUT 1,1: CLOSE
Method (2) uses DEBUG to change the byte in memory. Use this if you do not want to patch your TRSDOS system diskette and are familiar with DEBUG.
Method (3) uses a POKE from BASIC to change the value directly in memory. This procedure is as follows:
There is essentially no difference between single and double density media (if you can actually find any single density media anymore). Double density media has been tested and certified for double density recording, which is slightly more demanding than single density recording; conceivably, a dropout that might not be noticed in single density could be a problem in double density. In practice, though, I suspect that back in the days when manufacturers sold both DD and SD media, the media came off the same production line and the SD media would have met the DD standard nearly all the time.
"Quad density" 5" media is certified for double density recording at 80 tracks per side rather than 40 tracks per side. This is quite different from "high density," discussed below. 80 TPS quad density media should work fine at 40 TPS double density. I've been told that there can be problems using 40 TPS double density media at 80 TPS quad density; I believe the person who told me this, but neither of us really knows the reason. All 3.5" media is certified for 80 TPS.
You will also sometimes see media labelled as one-sided or two-sided. Both types have magnetic material on both sides, but on the disks advertised as one-sided, the second side may not have been tested. It's even possible, though unlikely, that the second side was tested and failed. Also, occasionally you'll find a "flippy" 5" disk. Such a disk can be recorded on both sides by removing it from the drive and flipping it over. It has two separate write-protect notches and two separate index hole cutouts in the jacket. Sometimes users would make their own flippy disks with a hole punch.
"High density" media is very different, and should not be interchanged with single/double/quad density media. It has different magnetic properties (higher coercivity, requiring a higher write current from the disk drive). If you try to format DD media as HD, the media will be too strongly magnetized and bleed-through can occur, garbling your data either immediately or after the disk has sat on the shelf for a while. Such a disk may also be difficult to erase and rewrite with new data. Similarly, formatting HD media as DD is not a good idea either; the media will be too weakly magnetized, and your data may be completely unreadable or may fade away after a while. These problems are worse on 5.25" disks than on 3.5" disks because the difference in coercivity is greater for 5.25" media, but they exist for both types of disk.
You can distinguish between 3.5" HD and DD media by looking for a hole in the jacket on the opposite edge from the write-enable hole; HD media has the extra hole, while DD media does not. You cannot reliably distinguish between 5.25" HD and DD media if they are not labelled. There are a couple of ways of guessing: DD media usually has a hub reinforcing ring (but not always), while HD media generally does not. The color of the media also tends to be different; HD media is darker.
Some folks will tell you that you need an older PC to get single density support. This is wrong. Many PCs being produced today support single density, and many older ones do not. The most practical answer to this question is simply "try it and see" -- it's more accurate and usually easier to try reading and writing FM on your PC to see if it works, rather than opening up the box and peering at the part number on the FDC or SuperIO chip (which might not give you a definite answer anyway). If you want more detailed information, though, read on.
The information below was gleaned from newsgroup and Classic Computer mailing list postings by Amardeep S. Chana, Don Maslin, Pete Cervasio, Allison Parent, Tony Duell, Lee Barnes, and Nick Andrew, together with some knowledge of my own. I've liberally borrowed from their words for this answer. Don't take this listing as absolute truth; in particular, some of the posters were not in full agreement on some points! Feel free to send additions or corrections if you have some information.
The answer to the question "does controller chip X support single density (FM)?" can be "yes", "no", or "implementation dependent" (that is, "maybe"). With early controllers, the answer was "maybe", because more external components were needed to handle data separation for both FM and MFM than for MFM alone. As mentioned in topic [12], the original IBM PC omitted the external components needed to support FM, and many later compatibles followed suit. Modern controllers typically integrate data separation on the main chip, but some support FM and some do not. It seems that in some cases, a PC may be able to read single density but not write it, or it may be able to read and write but not format; these behaviors may depend on external components, not just the controller chip.
Note: if you are going to use this information, do not rely on software to identify your FDC chip. Open the box and look. Newer "compatible" chips often look to software like older chips, but the status of their FM support may be different. Also, be aware that the information below may be incomplete or wrong in some details. If you know more, send mail.
There might also be some dependence on the drive. In principle, any drive that can support MFM should be able to support FM at the same frequency (that is, at half the data bit rate); the drive should not be able to tell the difference. Nevertheless, Amardeep and Don have both observed problems using FM on 1.2MB HD drives on controllers where FM works on a 360K DD drive. There was a posting recently where someone was able to get it to work by switching to dual spindle-speed mode with a Teac drive and Adaptec 1542 controller (that is, a mode where the drive spins at 300 RPM for SD or DD, 360 RPM for HD). I suspect the problem here may be that the software involved was trying to use the wrong data rate for SD at 360 RPM, but I don't have enough information to be sure.
The Intel 82078 data sheet implies that the parts do not support single density. The MFM bit in its command set is defined as (1 = double density mode, 0 = reserved). On PC FDCs that do support FM, setting this bit to 0 selects FM. Tim had a system that used a 82078 on the motherboard, and FM did not work on it. Similar wording is used on the 82091AA data sheet.
Amardeep has have a card with the Goldstar "Prime 1" chip and it does not read or write FM.
The NS PC87332 data sheet is not specific about whether FM is supported. Amardeep tested the PC87332 and it failed to support FM in a Dell XMT590.
Amardeep says: I found a board with the Motorola MCS3201FN and it doesn't do FM. The data sheet contains much contradictory information. Verbiage only declares compatibility with IBM system 34 double density. But it also says the MFM bit is (1 = MFM, 0 = FM) and selection tables show various FM data rates and sector sizes. The electrical characteristics show only double density ratings. Don says: The two examples that I have been exposed to suggest that it does not support FM.
The above NS and SMC parts are completely stand alone with on board filters, write precomp generators, and data separators. They should work with FM in any board implementation, unless something specific is done to prevent it (not likely). This is per the National and SMSC (new name for SMC semiconductor) data sheets. Amardeep tested the NS PC87306 and SMC FDC37C65 using Jeff Vavasour's Model 4 emulator and Tim Mann's xtrs 2.8 under Linux. They both read and write FM with no problems. It is important to verify the part number on the chip itself. Many of the newer NS parts will identify themselves to software as PC87306, but may not support single density.
Tim has a machine that uses the NS PC97307, and FM works just fine on it. The PC87307/PC97307 data sheet is not specific about whether FM is supported. Note that some software may incorrectly identify these parts as PC87306.
The Intel 82077AA and 82077SL data sheet clearly states these parts support FM. Again, verify the part number on the chip. Newer Super I/O parts like Winbond W83877F or SMC FDC37C665IR may identify themselves to software as 82077's but may have different characteristics.
The NS 8477 data sheet indicates that it does support FM (it is functionally and pin for pin compatible with the Intel 82077).
A sewing machine/embroidery website mentioned that "Goldstar Prime 2c or 3b chipset" controller cards can be used to read single density embroidery diskettes. The URL is http://www.wilcom.com.au/stestdsk.htm.
This category is meant for older chips that require external components as part of the data separation logic (or that require external components if FM is to be supported). Thus they may or may not support FM depending on the implementation.
The 1988 data sheet for the NS 8473 states on page 8-32, "While the controller and data separator support both FM and MFM encoding, the filter switch circuitry only supports the IBM standard MFM data rates. To provide both FM and MFM filters external logic may be necessary." Don says: I have DTK FDC cards with the 8473 and read Osborne 1 disks with them just prior to writing this. Amardeep says: I have to recant my original statement that none of my 8473 boards worked. All three of them do work (read/write/format) at this time. Must have been an error on my part.
I believe the 765 was the chip in the original IBM PC, as discussed above. Amardeep says: Intel 8272 is a NEC 765 clone and therefore dependent on implementation.
Available information on these chips is contradictory. Perhaps some individual chips of the same part number work with FM and some don't, perhaps they have bugs that affect some software drivers and not others. More testing may be needed.
The FDC37C665GT and FDC37C665IR have very similar data sheets, and neither mentions that FM is not supported. However, Pete has an FDC37C665IR in one of his machines, and FM works on it; while Tim has an SMC FDC37C665GT in one of his machines, and its FM support does not work---it can neither read FM nor format FM disks that can be read by other systems.
Amardeep says that the Winbond chips have never worked in FM on any adapter or motherboard he's ever encountered them on; no idea if it's the chip or the implementation. Pete says that on his ASUS board, the Winbond W83877F actually will read and write FM but will not format FM. Lee Barnes reports that using the Winbond 977TF, the Atari disk making program "Ataridsk" was able to format and write 128 byte FM sectors, although this did not work with Anadisk. Nick Andrew says that the Winbond 83977EF could only read some sectors when he tried it with xtrs.
Tony says: The data sheet claims the UMC 8398 will do FM or MFM. In my experience it will correctly handle MFM disks (with both standard and my own software). When you try FM, it almost works. It just mangles the last byte in the sector. This is (apparently) a known problem with this chip. Allison says: The last byte mashed in the UMC is also common to most 765s and is related to DMA read/write timing such that if you delay the DMA request by about 1-3uS (several FDD bit times) in FM mode it should work fine. Amardeep says: The UMC 8398's data sheet says it does support FM without any external components. Also, the 8397 could be listed with it. It was the predecessor without high density drive support for XT applications. Its data sheet also says FM support is provided. Since Tony's and my testing shows FM tends to fail, and Allison believes it is DMA related, "uncertain" may be the best category for them.
Amardeep says: UMC did make some Super I/O chips (UM82C862F) but I couldn't find data sheets for them. I have two IDE/FDC/IO paddle boards with that chip and neither handles FM. Allison says: I have used UMC SuperIO chips to do FM with ease using the internal data separator.
Don says: I have the WD 37C65 in the WD FOX card and it will also read/write FM. Amardeep says: The only information I have on the WD 37C65 is the Always IN2000 card I have with that chip cannot read or write FM. The data sheet shows there is really no external circuitry associated with data separator or filters. Yet we have seen examples that pass and fail, so it might be a revision thing or an untested feature, or DMA mangling or...
Several different types of add-on floppy controller cards are available for the PC that will let you read floppy formats that your built-in controller may not be able to handle, such as single density (FM).
Sometimes an add-on floppy card will have a 765-compatible floppy controller that supports FM. The Adaptec AHA1542CF SCSI hard disk controller includes a floppy disk controller on the same card that supports FM; so do some other Adaptec cards. This card is easy to use; you just plug it into any spare ISA slot and disable your motherboard FDC.
The Catweasel ISA floppy disk controller (see http://www.jschoenfeld.com/ and http://apd2.tripod.com/catweasl.htm) uses custom hardware that can be programmed to handle just about any format. The software that comes with the Catweasel can read Amiga, Apple II, and a bunch of other obscure old formats. I've written a program for the Catweasel that can copy any disk written by a TRS-80 to the DMK image format (see topic [5], including single density and "copy-protected" disks. The program is now available on the Web at http://www.tim-mann.org/trs80resources.html. It runs on Linux, MS-DOS, and Windows 95/98. Catweasel cards were in short supply for a while, but as of July 2000 they should be available for purchase again.
I've heard people mention the MicroSolutions CompatiCard, but the CP/M FAQ says that it is a discontinued product, so you'd have to find a used one somewhere. I don't know what chip it uses.
The Central Point Copy II PC Option Board uses a custom chip and is supposed to be able to copy all disks, even those that used the "weak bits" method of copy protection. This is also a discontinued product. I have one of these on loan from Louis Schulman, but I haven't found time to try it yet.
I've heard that add-on floppy controller cards for the PC that are specifically intended for disk duplication or for converting disks from other kinds of machines often use Western Digital 17xx chips or custom hardware that is more versatile than standard PC controllers. I don't know specific model names or where to get these cards.
Displaying lowercase letters on a TRS-80 Model I requires both a hardware modification and a software driver. If you aren't sure whether you have the hardware modification, go into Basic and type "POKE 15840,98". If you have lowercase, you will see a lowercase "b" in the middle of the screen; if not, you will see a quotation mark. If you need the hardware modification, the next section describes how to install it; if not, skip down to the section about software drivers.
A stock Model I has only 7-bit wide video memory. This is enough for 6-bit, uppercase-only ASCII and the TRS-80's 6-bit graphics characters, but not for lowercase. In a stock machine, the missing bit6 is synthesized as !bit7 & !bit5. You can add a true 8th bit using the following instructions.
You will need a low-power soldering iron, thin rosin-core solder, thin insulated copper wire (such as wire-wrap wire), one 2102 static memory chip (1K x 1 bit) and preferably a new character generator ROM. The character generator replacement is needed to make the modified machine compatible with the Level II Basic ROM's display driver and to give it true descenders on lowercase letters. If you don't have a new character generator, you will need to install an SPDT switch to turn off the mod when using Level II Basic or other software that doesn't have a lowercase driver, and your lowercase g, j, p, q, and y (and maybe a) will be shifted up a couple of pixels from the baseline.
New: M.A.D. Software is advertising Model I lowercase modification assemblies on their Garage Sale page! These should include the 2102 and the character generator ROM, but check with M.A.D. Software before ordering to be sure.
Turn your TRS-80 keyboard unit face down on a cloth, and remove the six bottom screws, being careful to note which went where. Now turn it face up and lift off the cover. Lift up the keyboard, being careful not to pull the ribbon cable at the left front loose. Remove the plastic spacers between the two boards, and lift out the boards, setting them down with the component side of the logic board up.
Find Z45 in the lower left corner of the board. The new 2102 will be mounted piggyback over this one. Bend pins 11 and 12 of the new 2102 straight out, and set it over Z45. Solder (quickly, with low heat) each pin of the new 2102, except 11 and 12, to the corresponding one on Z45.
Find Z30. From its left side run three traces, a narrow one between two wide ones. Cut through the narrow one with a sharp knife, being sure to break the connection completely without damaging other traces. (This trace connects Z30 pin 13 to Z60 pin 4.)
If you don't have a replacement character generator: Find a mounting place for the SPDT switch where you will be able to get to it after the case is reassembled. Run a wire from pin 11 of the new chip to Z60 pin 5. Run a second wire from Z60 pin 4 to the common terminal of the switch. Run a third wire from another terminal of the switch to Z30 pin 13. Run a fourth wire from the remaining terminal of the switch to the new chip's pin 12. One switch position will now give you uppercase only but will work with Level II Basic; the other will give you lowercase in software that has a lowercase driver and meaningless symbols in software that doesn't.
If you do have a replacement character generator: Run a wire from pin 11 of the new chip to Z60 pin 5. Run a second wire from pin 12 of the new chip to Z60 pin 4. Remove the old character generator ROM chip (Z29) and replace it with the new one. I think Z29 was socketed, but if it isn't, you will have to very carefully desolder it without overheating the PC board and making the traces lift, and preferably without overheating the old chip in case you need to use it again. I suggest installing a socket for the new chip.
Reverse the disassembly procedure to put your machine back together. If you kept the old CG ROM and installed a switch, try both switch positions to see what they do. If anything doesn't work, go back and carefully recheck your wiring.
The display driver in the Model I Level II Basic ROM forces everything to upper case. In fact, it actually writes ASCII codes between 0x00 and 0x1f into the video RAM and expects them to display as uppercase letters. That's why you get meaningless symbols if you don't replace the character generator: the standard character generator has those symbols in positions 0x00 to 0x1f, but you can't see them until you add the 8th bit of video memory.
TRSDOS uses the ROM driver, but alternative operating systems like LDOS and Newdos include a lowercase driver, as do many other programs. Usually these programs will detect and use lowercase automatically if it is present.
It is possible to add a lowercase driver to TRSDOS or even to cassette-based Level II Basic. In the future I'll probably add a listing of such a driver here.
The model 4/4P uses two different methods for generating horizontal sync pulses for the monitor, depending on whether it's in 64 character mode (Model III) or 80-character mode (Model 4). In 64-char mode, horizontal sync is derived from the master clock, which is regulated by a crystal and thus very stable. However, in 80-char mode a Phase-Locked Loop circuit (PLL) is used to generate the signal, and it drifts out of calibration over time. This can result in display wrap-around or a total loss of sync. There is a trimmer capacitor that can be adjusted to fix it.
The biggest problem in making the adjustment is getting to it with the power turned on so that you can see what you're doing. The trimmer cap is on the motherboard, with no access from outside the case. On the Model 4, it's near the top at the back, but the case and a metal shield are in the way. On the Model 4P, it's near the front of the CRT, but just far enough under it that you can't get to it with a pot tweaker.
If some of the terms below leave you behind or the procedure sounds scary, you should definitely not tackle this yourself -- take it to a friend who's a hardware techie. Warning: whenever you have the case open, be careful what you touch, especially with metal objects. You can get a shock even if power is off, and if power is on, a metal object touching the wrong two contacts could easily short out the power supply and fry it.
1. Unplug all cables from the computer. Position the computer on its back panel to provide access to the case bottom. Remove the ten screws from the case bottom, noting carefully which went where for later reassembly.
2. Position the computer upright and remove the screw and washer from the top of the back panel.
3. Position the computer upright with the video screen towards you. Very carefully remove the case top, lifting straight up, looking into the case through the vent holes and the disk bay openings to be certain that you do not catch the neck (back end) of the picture tube on anything. It is all too easy to break the picture tube, a very expensive mistake. Once the tube is clear, rotate the case top 90 degrees counterclockwise and set it down to the left of the base, being careful not to overstretch the connecting cables.
4. Remove the internal metal shields as needed to gain access to the main circuit board.
5. Turn the machine on and boot it into Model III (64-column) mode. It's adequate to go into cassette Basic by holding down the Break key and pressing the orange reset button. Type enough commands to fill the screen with text.
6. Adjust the monitor's horizontal sync back and forth until the picture breaks up in both directions, then set the adjustment to the middle of this range. This completes the Model III mode adjustment.
7. Insert a TRSDOS-6.x disk and boot the system to place it in 80-column mode. Type the date and then do a DIR to fill the screen edge-to-edge (if the screen's unreadable, you'll have to type blind).
8. Find the trimmer cap. Early (non-gate-array) versions may not have this cap; it does not appear in the Model 4 Technical Reference Manual, 1983 edition. Hopefully this video problem does not occur on those machines. On gate array machines, it should be approximately 3 inches from the left of the main circuit board when viewed from the back, and should be labelled C210.
9. Adjust the trimmer. You'll need a small pot tweaker, preferably a non-metallic one. You shouldn't have to adjust it much; it's very sensitive. Turn the brightness up so you can see the whole raster pattern and set the trimmer so that the image is stable and centered in the pattern, with no bent or warped edges.
10. Turn the power off and unplug the machine.
11. Reassemble the machine -- you did pay attention to how it came apart, didn't you? Again be very careful not to damage the picture tube.
1. Remove the case and front bezel. The main case is held on by screws near the front and two large ones under the handle. The front bezel is held on by several screws inside the case.
2. Remove the top of the monitor enclosure.
3. Turn the machine on and boot it into Model III (64-column) mode, or just reboot it with no disk and wait for the multi-lingual "insert disk" screen to appear.
4. Adjust the monitor's horizontal sync back and forth until the picture breaks up in both directions, then set the adjustment to the middle of this range. The picture should centered and clean. Replace the top of the enclosure.
The PLL adjustment must be done with power on while observing the screen, since it is very sensitive. This means that the cables all need to be hooked up at the time. To access the trimmer cap you have to shift the motherboard forward enough to move the trimmer beyond the front of the CRT, but still have the critical cables connected. This is impossible with the factory-supplied disk drive cable connected at the rear, but the disk drive needs to be connected in order to boot the system into 80-column mode!
David Gish came up with the plan below, which works but involves disconnecting the disk drives from the motherboard with power on. This is not generally recommended, except as a last resort. If you do this, follow the indicated steps carefully to minimize the risk.
An alternative solution is to replace the factory cable with a longer one so that you don't have to unplug it. If you do that, you can change to the longer cable after step 7, then omit steps 11 and 12.
5. Turn the machine off and lay it on its left side. Keep it on its side for this entire procedure.
6. Remove all mounting screws from the motherboard. It should now be loose, but will not move much due to the cable connections.
7. Apply electrical tape to the edge connectors at the rear of the motherboard to prevent shorting these against the frame while moving the motherboard around.
7a. If you have a longer disk drive signal cable, replace the factory cable with it at this point. See topic topic 18 for information on making cables.
8. Carefully examine the motherboard to be sure nothing else is shorting against the frame and turn the machine on.
9. Insert a TRSDOS-6.x disk and boot the system to place it in 80-column mode. Type the date and then do a DIR to fill the screen edge-to-edge (if the screen's unreadable, you'll have to type blind.)
10. Remove the TRSDOS disk.
10a. If you replaced the factory disk drive cable with a longer one (step 7a), you can now skip the somewhat dangerous steps 11 and 12 and go directly to step 13.
11. Carefully unplug the power connectors from both disk drives. This is to prevent damage during the next step. (Warning: There is an unshielded, solid-metal fan in this area cooling the monitor enclosure!)
12. Carefully disconnect the disk drive interface ribbon cable from the motherboard. This will free the back of the board and give you enough play to move it forward.
13. Move the motherboard out and forward, paying close attention to the rear edge connectors. Now you know the reason for the tape. Watch all cables while doing this to make sure you're not over-stretching them.
14. Eventually, you should be able to expose the trimmer cap enough to make the adjustment. It is probably labeled C231. You'll need a small pot tweaker, preferably a non-metallic one. You shouldn't have to adjust it much since, as mentioned above, it's very sensitive. Turn the brightness up so you can see the whole raster pattern and set the trimmer so that the image is stable and centered in the pattern, with no bent or warped edges. (Note: another source suggests removing the jumper from E1/E2 and putting on in E9/10 while making the adjustment, then moving it back to E1/E2 when you're done.)
15. Turn the power off and unplug the machine.
16. Remove the tape on the motherboard connectors and reassemble the machine -- you did pay attention to how it came apart, didn't you? Remember to reconnect the disk drive power and data cables.
Cabling a TRS-80 disk drive is a bit tricky. It works differently from a PC, and there are some differences among the TRS-80 models, and differences between the Radio Shack way of doing things and other ways that are sometimes used. I'm sorry there is so much detail here, but I don't really see how to condense it to a cookbook "just do this" approach, since there are several things you might want to do with the information.
Generally, Radio Shack handled drive select by pulling pins in the cable connectors. On the Model I, each drive was internally jumpered to respond on all four different drive selects, the three standard ones from the Shugart definition (pins 10, 12, 14) and one extra one that R.S. defined (pin 32, which later was officially defined as side select for two-sided drives). On the cable, there were four drive connectors, and each had a different one of those four pins left, with the other three removed. On the Model III and 4, the internal drives and external drives were cabled separately, so it was not necessary to use four different pins for drive select. Instead, the first two drives are pins 10 and 12 on the internal cable, while the other two drives are pins 10 and 12 on the external cable. However, the pin-pulled system is still used.
An alternative way that many users switched to was to use a plain cable with all 34 pins intact. Then you have to open up each drive and make sure that a different drive select is jumpered on each one. Usually they are jumpers marked DS1, DS2, DS3 (and sometimes also DS4) or DS0, DS1, DS2 (and sometimes also DS3). Many drives don't have a jumper for the fourth drive select. Drives that were intended for Radio Shack Model I systems may have pin 32 hardwired instead of using a jumper, so beware.
If you want to use double-sided drives on a TRS-80, you may have to switch to the pins-intact system in order to bring side select to every drive. If you have some single-sided drives in the system, make sure that none of them have pin 32 interally hardwired to one of the drive selects. TRS-80 Models III, 4, and 4P have side-select support implemented in the floppy controller and brought out to pin 32. On the Model I, if you limit yourself to three drives, you can use the fourth drive select as a side select, as it's conveniently already wired to the correct pin. LDOS and probably other Model I operating systems support this. (Let me emphasize that if any of the drives in a real Model I system is double sided, you can have at most three drives. Some Model I emulators allow you to have a fourth drive, but that drive definitely must be single-sided.)
Pre-made cables and new drives that are commonly available today usually use the PC system. A PC floppy drive cable has a twist in it between the two drive connectors (there are always only two). The twist allows both drives to be jumpered the same way, and allows the PC to control the motors on the two drives separately. Both drives are jumpered for drive select on pin 12 (DS2) and motor control on pin 16 (MOT), but the twist reverses the order of pins 10, 12, 14, and 16 on the first drive, effectively moving its drive select to pin 14 and motor control to pin 10. A PC-style cable won't work properly with a TRS-80, because the TRS-80 controller always sends motor control on pin 16, not pin 10, but it's easy to find ribbon cable and insulation-displacement (IDC) connectors to make up your own straight cable if you need one. Or if you only need to connect one drive, you can plug it into the connector before the twist. Because of this system, new drives are always jumpered for DS2 by default, but they can usually be changed. Occasionally you may find a newer drive that is hardwired for DS2 and has no jumpers; you might be stuck cutting traces and soldering if this happens to you.
Also see the article Utilizing 5.25" or 3.5" media on your Tandy/Radio Shack computer system on Frank Durda IV's web site. This is mostly about replacing 8" drives with 5.25" or 3.5" drives, but has some other useful information too.
There are two things you might want to do: (1) treat the drive as single/double density, or (2) use the drive's high density capability with a TRS-80 floppy controller that was designed for 8" drives, if you have one.
(1) Both high density and double density 3.5" drives spin at 300 RPM like a double density 5.25 drive, and 3.5" double density uses the same data rate as 5.25" double density, so a 3.5" drive makes a compatible replacement for a 5.25" drive. The 3.5" drive will be double sided with 80 tracks per side, which most TRS-80 software can handle. You will have to be sure that the internal jumpers are set correctly, and that there is no confusion about the Disk Change output from the drive (not used on a TRS-80), or the High Density signal (which may have to be wired correctly to make sure the drive uses the correct write current). If you have a drive you'd like to use but don't have documentation on its jumpers, search the Web to see if the drive manufacturer has a Web site that you can get the information from. For example, Teac does. Also be sure to use the appropriate media; see topic [14].
A high-density 5.25" drive spins at 360 RPM, not 300 RPM, so it can't be used directly as a replacement for a 300 RPM TRS-80 drive. However, some models of 5.25" drive have dual-speed motors and can be jumpered to run at 300 RPM when in double density mode. For example, the common Teac FD55GFR drives can do this. If you have a drive you'd like to use but don't have documentation on its jumpers, search the Web to see if the drive manufacturer has a Web site that you can get the information from. Again you'll have to be careful about cabling the Disk Change and High Density signals. The manufacturer's documentation for your drive should be helpful here.
(2) If your TRS-80 has an 8" disk controller, you can try treating a high-density drive as an 8" drive. This should more or less work, but I haven't tried it and can't give detailed help. You would have to make an adapter cable from the 50-pin card edge connector to the 34-pin connector on the drive. The CP/M FAQ provides some useful information for making such cables. A 5.25" HD drive spins at 360 RPM just like an 8" DD drive, uses the same data rate, and has 80 tracks (vs. 77 for an 8" drive), so it makes a compatible replacement. There could be minor issues because 8" drives spin continuously and load/unload the heads when active, while 5.25" drives always have the heads loaded but are spun down when not active.
A 3.5" HD drive spins at only 300 RPM, but does use the same data rate and does have 80 tracks. Some software may tolerate a 3.5" HD drive in place of an 8" drive, but only the first 5/6 of each track will be used. Formatting may write arbitrary garbage to the remaining 1/6; hopefully this will not be anything that will cause confusion when trying to read the first 5/6, but that can't be guaranteed.
Also see the article Utilizing 5.25" or 3.5" media on your Tandy/Radio Shack computer system on Frank Durda IV's web site. This is mostly about replacing 8" drives with 5.25" or 3.5" drives.
Generally this should work fine, but there are a few problems to watch out for:
Check the cabling. A drive pulled out of an old TRS-80 will be expecting drive selection to be handled differently from the PC method; see topic [19].
Check your BIOS settings. Different settings are required for these drives, and depending on what software you are using, it may or may not work if you get it wrong.
Amardeep S. Chana reports: There is a problem in Jeff Vavasour's emulator code (both Model 4 and CoCo II, and their support utilities) that incorrectly operates a 360K DD drive on a HD capable controller. I think what it does is use 300Kbps data rate instead of 250Kbps. You can create disks and read/write to them, but a real TRS-80 can't read them. Disks created on a real TRS-80 won't read on the PC, either. Using a 1.2MB drive does not show this problem. Using a 360K drive on an XT-type controller does not show this problem either. Setting the CMOS type of the 360KB drive to "720K 3.5-inch" also makes the problem go away.
This question comes up a lot, but I'm a complete LDOS bigot with no NEWDOS/80 experience, so I'm not equipped to answer it. Here is some information kindly supplied by others:
Let's say you have a diskette, no idea whatsoever how it is formatted. Notes:
a1. set pdrive to double sided single density 10 sectors/track
a2. use zap read sectors 0 through 5
a3. if sector 5 fails, you have a double-density diskette, track 0 SD,
go to b1.
a4. read sectors 6 through 10.
a5. if sector 10 fails, you have a single-sided single-density
diskette. go to c1.
a6. if sector 10 is identical to sector 0, you have a side-select
problem (on a Model I, drive 3 can be single-sided only)
a7. read sectors 11 through 20.
a8. if sector 20 fails, you have a 40 track diskette.
a9. look for the directory track. Look at sector 0 byte 2. Also try
disk sectors 170, 340, 400, 800 looking for the 'P' marker on the sector.
b1. set pdrive to DSDD 18 sectors/track
b2. read sectors 0 through 18.
b3. if sector 18 fails, you have a single-sided diskette.
b4. read sectors 19 through 36.
b5. if sector 36 fails, you have a 40 track diskette.
b6. look for the directory track. Look at sector 0 byte 2. Also try
disk sectors 170, 340, 400, 612, 720, 800, 1440 looking for the 'P'
marker on the sector.
c1. set pdrive to SSSD 10 sectors/track
c2. read sectors 0 through 10.
c3. if sector 10 fails, you have a 40-track diskette.
c4. look for the directory track. Look at sector 0 byte 2. Also try
disk sectors 170, 400 looking for the 'P' marker on the sector.
In Newdos the mysterious Pdrives are just information for each drive, such as, No. of tracks, Single or double density, Single or Double sided, and a few other parameters needed by the DOS to interface with that that disk on that drive.
The pdrive information can be displayed by the command "Pdrive 0". Unfortunately, this display does not really mean much to anyone who has not read and understood the manual.
The first line of the display may be:
0* TI = A, TD = E, TC = 40, SPT = 18, TSR = 00, GPL = 2, DDSL = 17, DDGA = 2
This would be a Drive 0, 40 Track, 5 Inch, Single sided, Double Density disk.
Generally, the settings for standard type disks are much the same, but a few people along the way, used many and varied settings for their GPL, DDSl, etc, which can makes it difficult to read, if you get one of these disks.
A Newdos Pdrive table is kept on each disk at, Track 0, Sector 2. ONLY the table on the SYSTEM disk is used for the drive settings. It has 10 rows of 16 bytes each, from 00 - 9F hex. Each row is the Pdrive values 0 to 9 as shown when a "Pdrive 0" command is done. These are the permanent Pdrive parameters, kept on the SYSTEM disk.
The number of these actually used is dependant on the number of drives in use on the system, and are termed active drive slots. The others are spares, which can be copied to the active drive slots to allow different type of disks to be used in those drives. This is done by using the Pdrive command. Example:
pdrive 0,1=6,A
This command moves the values stored in slot 6 to Slot 1. The ,A saves the change to disk. If ,A is not used, the change is done only in memory, and is lost when the computer is rebooted.
New single Pdrive parameters also can be input, and saved in the table. Example:
pdrive 0,1,TD=G,DDSL=20
This command changes the parameters in slot 1 in memory only. Adding the ,A at the end of the command would save the change to disk.
A Pdrive table is on every disk, but it is only the table on the SYSTEM disk that is used by the System. One use for this table on a NON SYSTEM disk can be to determine the Pdrive's of this particular disk. Usually, on a non system disk, the top Pdrive shown is the Pdrive settings for that disk. (Even though it is not used by the System for that disk) This allows us to read these settings with a machine language program, and display the settings of an unknown disk.
The following contains information about the parameters, and where they are obtained from. It is not necessary to know ALL of this to use Pdrives. A general understanding of the parameters shown in the displayed Pdrive table, and use of some the tables below to interpret the letters, etc, such as, TI = A is all that is required. Some of the settings are as shown in the byte; others use bit mapping of the byte to store the values. Bytes bit mapped are: 02, 07, 0D and 0E, 0F
The table is set up as shown for row 0 (Shown in Hex):
00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f DDSL Lumps * TC SPT GPL * DDSL DDGA TSR - TI - TD 11 48 04 28 12 02 00 01 11 02 00 00 00 01 00 04
This would be shown in the displayed pdrive table using "Pdrive 0" as follows. (Values are displayed in decimal.)
0* TI = A, TD = E, TC = 40, SPT = 18, TSR = 00, GPL = 2, DDSL = 17, DDGA = 2
This would be a 40 Track, 5 Inch, Single sided, Double Density disk.
DDSL = Disk Directory starting lump Lumps = Total lumps on disk TC = Track Count: No of tracks on disk SPT = Sectors per Track GPL = Granules per Lump DDGA = Disk Directory Granule Allocation: No of Granules used by the Directory TSR = Track step rate: Speed of stepping between tracks TI = Shows interface type, and other required parameters. TD = Shows Disk size, Density, No of sides, SPT Byte 02 (TI & Tsr) Bit 0 = TSR Bit 1 = TSR Bit 2 = A or E (Bits 2&4) or B (Bits 2&3) Bit 3 = D or B (Bits 2&3) Bit 4 = C or E (Bits 2&4) Bit 5 = M Bit 6 = K Bit 7 = H Byte 07 Bit 0 = 8 Inch Disk Bit 1 = Double Sided Bit 2 = Bit 3 = I (Lowest track sector is 1) Bit 4 = Bit 5 = L (Two steps between tracks) Bit 6 = K & J (Track 0 Opposite Density) Bit 7 = Double Density Bytes 0D & 0E (TI) Byte 0D Byte 0E Bit: 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 H I E D C B A M L K J I A = Standard Interface B = Omnikron C = Percom Doubler D = Apparat Disk Controller E = LNW type H = 8 Inch drives only. Head settle to be done I = Lowest sector on Track is 1 (Model3 Trsdos)(Set by flag M) J = Track No's start from 1 (Is set by K) K = Track 0 formatted in opposite density to other tracks (Flag J is set by flag K) L = Two steps between tracks. Allows 40 Track disks to be read on 80 Track drive M = Standard Trsdos Model 3 (Flag M sets flag I) Byte 0F (TD Parameter) Bit 0 = A : 5 inch Single Density Single Sided 10 Secs per Track Bit 1 = B : 8 inch Single Density Single Sided 17 Secs per Track Bit 2 = C : 5 inch Single Density Double Sided 20 Secs per Track Bit 3 = D : 8 inch Single Density Double Sided 34 Secs per Track Bit 4 = E : 5 inch Double Density Single Sided 18 Secs per Track Bit 5 = F : 8 inch Double Density Single Sided 26 Secs per Track Bit 6 = G : 5 inch Double Density Double Sided 36 Secs per Track Bit 7 = H : 8 inch Double Density Double Sided 52 Secs per Track (Note that NEWDOS uses the term "track" to mean "cylinder" -- that is, for double-sided diskettes, NEWDOS counts sectors on both sides of the disk as part of the same "track".)
Normally the disk is mapped in Tracks, Sectors, and granules. Newdos uses a different method of disk mapping, using Lumps, in place of Tracks. These lumps can overlap tracks, starting on one track and ending on the next track. This can be confusing (only to us; the DOS knows what it's doing), particularly with the directory, which starts on a particular lump, not on a particular track.
In the example shown above: Sectors per Granule = 5 (Standard for Newdos): Gpl = 2. Therefore there are 10 sectors per lump. The Directory starts on lump 17, (DDSL = 17). Therefore the Directory starts on sector 170. As each track has 18 sectors, the Directory starts on Track 9 Sector 8. This does not really worry the average user, as the System does all the work. Only those of us who are silly enough to play around with this stuff, really care whether it is tracks, or Lumps, or Doughnuts.
The disk in drive 1 is now a bootable, double-density LDOS system disk. Test it as follows:
At this point you may want to put the remaining LDOS files from the LDOSXTRA disk onto your new boot disk:
** End of TRS-80 Model I/III/4 FAQ **