How To Salvage A Hard Disk

By Roy T. Beck

• 1. The drive address. This is #1, unless you have more than one bubble connected to your hard disk controller.

• 2. The stepping rate. Consult drive data. (Most drives will accept 10 microseconds). Enter 10 for 10 microseconds.

• 3. Total cylinder count on the drive. Consult drive data. »

• 4. Total head count on the drive. Consult drive data.

• 5. The starting head and total number of heads assigned to each partition.

• 6. The starting cylinder and total number of cylinders assigned to each partition.

Hard Disk Cylinder

THE PROBLEM

I have a 15 Meg Hard Drive.

Recently I turned it on to AUTOBOOT.

It wouldn't AUTOBOOT.

The floppy boot disk for the drive wouldn't work.

I couldn't remember the assignment of cylinders and heads in the partitions.

About all I knew for sure was that the drive had TRSDOS 6.3.1 on its system partition, and that the drive has 6 heads and 306 cylinders. What to do?

As is usual in a situation like this, I immediately panicked! After a little while I settled down and began to take stock of the situation. I knew the drive was formatted under TRSDOS, and had many working files on it. I have TRSDOS and RSHARD6 by MISOSYS to work with. I also have SuperUtility and ToolBelt.

ANALYSIS

What do we need to know to reestablish the missing partitions? Assuming we are using RSHARD6, the following questions must be answered:

With the above information known, the partition can be reestablished under TRSDOS 6.X and RSHARD6.

DOS INFORMATION

What knowledge of the partitions can we recover from the hard drive, assuming we can get into it in some way? I proceeded to review the following documents in pursuit of information:

Soltoff's RSHARD Hard Disk Driver Manual

Soltoff's VRHARD Hard Disk Driver Manual

Soltoff's Programmer's Guide to LDOS/TRSDOS 6

Radio Shack's Technical Manual for the Model 4

In most respects these documents agreed. But there were some differences and I opted to follow the RSHARD Driver Manual for this problem. Be aware that differences exist, attributable to the different hard disk controllers in existence.

• 1. The first sector of BOOT/SYS contains a pointer in byte 02H which identifies the logical cylinder containing the directory. But there are two caveats to be observed. The first is that this ignores the DBLBIT, which is set in the event the cylinder account exceeds 203. If the DBLBIT is set, then the value in byte 02H must be doubled in order to make the physical cylinder offset agree with the logical value. More on DBLBIT below. The second is that the cylinder count is only within the unknown partition; it does not necessarily match the physical cylinders of the drive.

2. The first directory sector of any TRSDOS 6.X directory contains the GAT, the name of the disk, and a few crucial bytes of information which will allow us to reconstruct the partition. Bytes F9H through FFH correspond to the last 7 bytes of the DOT used to write the partition. Almost everything we need is in these 7 bytes.

3. Byte CCH gives the total number of cylinders in the disk (partition) stated in excess 35 notation. In other words, a zero means 35 tracks, 5 means 40 tracks, etc.

4. Byte F9H is the first of two flag bytes. Bits 1 and 0 are prefixed to byte FBH to form a 10 bit value. See byte FBH below.

5. Byte FAH is the second flag byte whose bit 5 is the DBLBIT. If this bit is unset (0) then each logical cylinder is one physical cylinder; if this bit is set (1), then there are more than 203 physical cylinders in the partition, and all references to logical cylinders must be understood to mean twice as many physical cylinders. Further, if an odd number of physical cylinders was assigned, then the number used will be reduced by one during the partitioning. That is, if you specify 303 physical cylinders, RSHARD6 will reduce the count to 302, and use 151 as the number of logical cylinders in its internal logic.

Bit 3 is the hard drive address.

Bits 2-0 represent the starting head number for the partition, with the heads numbered 0 to 7.

6. Byte FBH whose decimal value ranges from 0 to 1023. This is the starting cylinder of the partition. This value is affected by DBLBIT (see byte FAH). If DBLBIT is set, then the starting cylinder value must be doubled. As an example, 31H represents 49D, which is the 50th cylinder, with the cylinders numbered from 0-49. If DBLBIT is set, then the highest value will be 511, as the hard disk controller is limited^ 1024 physical tracks, maximum.

7. Byte FCH contains the highest numbered logical cylinder in the partition. This value must be doubled if DBLBIT is set.

8. Byte FDH contains two numbers. Bits 7-5 contains a value which is one less than the highest head number assigned to the partition. The maximum number of heads is 8, so 3 bits holds the values 0-7.

Bits 4-0 contain 0-1FH, corresponding to 0-31D.

This is one less than the number of sectors/logical cylinder in the unknown partition. Example: Byte FDH contains 5FH, or 0101 1111. Rewrite this as 010 11111. We now see the values 2H and 1FH. The head count is 2 +1 = 3; the sectors per logical cylinder is 1FH + 1 =20H=32D. The unknown partition has 3 heads assigned to it, and has 32 sectors per logical cylinder.

• 9. Byte FEH also contains two numbers. Bits 7-5 contain one less than the granules per logical cylinder, and bits 4-0 contain one less than the number of sectors per granule.

Example: Byte FEH contains AFH, or 1010 1111. Rewrite this as 101 01111. We now see the values 5 and FH. The granules per cylinder is 5 +1 = 6; the sectors per granule is FH +1 = 10H = 16D. The unknown partition has 6 granules per logical cylinder and 16 sectors per granule.

• 10. Byte FFH contains the number of the directory logical cylinder. In an example, FFH contains 19H, or 25D; the directory is on logical cylinder 25D. This is also subject to DBLBIT.

As a cross-check on our interpretations, the following equation will be satisfied by the numbers found above:

Sectors per track=32 granules per logical cylinder

Sectors per granule number of heads assigned

Using the numbers from our examples, the equation comes out as follows:

The above information includes most of the data we need to reestablish the unknown partition.

The missing pieces are the starting cylinder and starting head of each partition. Since the first partition must begin with head 0, cylinder 0 and sector 0, we have everything we need for the first partition, assuming we can access the values stored in the BOOT/SYS and the GAT sector.

Since partitions are located contiguously by RSHARD6, once the first partition is defined, then the next

VERIFICATION

MISSING INFORMATION

cylinder above it must be the first cylinder of the second partition, and so on up through the cylinders. You should be preparing a map on paper as you locate the partitions, and this will allow you to keep track of both the cylinder and head assignments in graphic form. When you are entirely done with the first head, then begin working upwards from the first unassigned cylinder of the second head, if any, and so on with the remaining heads.

HARD DISK ACCESS

Now, how to gain access to the unknown drive?

SuperUtility was considered and immediately discarded, as it cannot address a hard disk. Kim Watt did not write it that way. But ToolBelt, also by Kim Watt can normally work with a hard disk. But not mine; not yet at any rate. Why? Well, ToolBelt has to work through your hard disk driver, and in my present fix, I didn't have any hard disk driver installed and working. But could I install one under these circumstances?

I decided I could create a dummy partition just for the sake of running ToolBelt, which in turn would allow me to explore the drive and locate the directories. How can I get away with this? Let's consider how RSHARD6 operates. RSHARD6 is implemented by setting up a drive control table and a driver in RAM without writing anything to the hard drive. So far, so good. But what partition can I assign to the drive control table? TRSDOS has some limitations which must be observed. One is that the cylinder count must not exceed 406. Another is that the partition size must not exceed approximately 13.3 Meg.

My general line of attack was as follows:

Create a fresh DOS disk and boot up from it. Create dummy partitions on the drive in increments of 200 cylinders, with all heads included. For example, drive :4 can be the first 200 cylinders, drive :5 the next 200, and so on. Yes, I know the DOS will allow up up to 406 cylinders, but this would mean adding and subtracting increments of 406 which is not as easy as adding and subtracting 200. I chose 200, which combined with 6 heads gave me 9.6 Megs per partition. I could create these dummy partitions without altering the contents of the hard drive, because the partitioning information is only stored in RAM, not on the disk. After creating dummy partitions, (which need not match the lost partitioning at all), I could begin to explore the drive via ToolBelt.

CAUTION

One very important precaution to be observed:

DO NOT FORMAT THE DUMMY PARTITION, OR ALL IS LOST!

By stepping through the cylinders, looking only at the 0 sectors, it is easy to find the BOOT sector of any real partition which happens to fall in this dummy partition. And where is the directory in a partition? Use the pointer at 02H of the Boot sector. If this does not bring you to the directory, double the track number and look there, as the DBLBIT may be set because the physical cylinder count exceeded 203. When you find the GAT, record and analyze the bytes as above. If there is more than one real partition in your dummy partition, proceed as above with each partition to find its GAT data, and repeat as required.

MAPPING

At this point, you should begin to map out the partitions as you locate them. I use a sheet of quadrille paper with the cylinder numbers running vertically, and the head numbers running horizontally. By marking the partition boundaries on this chart as I discovered them, I was quickly able to plan my attacks on the unidentified areas of the drive. When all of the first head of the hard drive is accounted for, begin on the next head, continuing as indicated until all the drive is accounted for.

Note, you must reboot to get rid of a partition, dummy or otherwise. SYSTEM (drive = n, DISABLE) is not good enough, as it does not release the disabled cylinders for reassignment.

There is a limit of 256 entries in a directory (limited by the space available for the HIT), and with 8 entries per sector, no more than 32 sectors can be part of any one directory. When the GAT and HIT are added, then the largest directory will consist of 34 sectors. With TRSDOS always having 32 sectors per track on hard drives, then the directory can exceed one track, extending onto a second head if more than one head is in the partition, or extending onto the next physical track.

diskDISK

Caution! Not every directory you will discover is part of a regular partition directory. diskDISK creates a small directory structure for each of its subdirectories. These can appear anywhere, without obvious rhyme or reason, so such "peculiar" directories should be considered as possible diskDISK subdirectories. They will be smaller than the typical HD directory, and need not begin on the first head of a partition.

RESETTING PARTITIONS

When you have deduced the total partition setup on a drive, it is time to find out if it is valid. Reboot the machine again, and partition it in accordance with what you have learned in your exploration.

Tofind out if your deductions are valid, call the directory of each new partition you have discovered and reestablished. If the directory display makes sense, you have probably correctly set the number of cylinders and heads when you partitioned. A rubbish display means you have something set incorrectly.

The next test is to attempt to load or execute a program from the directory just found. If the program won't load due to "load file format error", you still have something wrong. Try again. Remember to reboot the machine before each new partition reconstruction.

SYSGEN

When all the partitions (there can be more than 4) are identified, SYSGEN the active partitions onto your new floppy boot disk.

Don't forget to backup a fresh copy of the DOS onto the hard disk when you have everything working again. Failure to do this could bomb the machine when you try to swap drive 0 onto the hard disk.

Now make the system partition on the hard disk the active system drive :0 and then create a new boot disk by SYSGENing onto the DOS in the floppy drive. Also, record the partitioning information (drive, head and cylinder counts) on paper and file it where you can find it next time!

CONCLUSION

I assure you, it is a nice feeling of accomplishment when the directory command again works normally and the machine will again boot and execute the programs saved on the hard disk!

In my actual case, I only had to reestablish the original hard disk system partition correctly, backup a fresh copy of TRSDOS onto it, and then reboot with my old boot floppy, which immediately restored all the missing partitions I was describing above. My original problem was that I had previously unknowingly garbled the DOS on partition :0 of the hard drive. You can be sure I immediately documented the heads and cylinders on to a neatly drawn map, which is now in my machine's "working manual", which stays with the machine and contains the peculiarities of its hardware and software. I was fortunate in that I had write protected my boot floppy, and so I could trust it to be valid after I restored a fresh copy of TRSDOS onto the system partition of the hard drive.

In any event, the episode forced me to learn something new, and I hope this may save some of you the headache of starting a large hard drive from scratch!

PROGRAM SOURCE

Note: All the above applies strictly to TRSDOS 6.X and LDOS 5.X. Kim Watt's Tool Box will allow access to LDOS 5.X in the same way that ToolBelt accesses TRSDOS 6.X. Both of these programs are now available from MISOSYS, who bought out PowerSoft.

While DOSPLUS is said to be quite similar in its directory and file structure, I am not acquainted with it, and cannot advise on recovery of DOSPLUS partitions, or partitions established by other DOSes. I would love to see articles like this by other knowledgeable people on the other DOSes. Do I hear any volunteers?

RADIO SHACK

TANDY OWNERS!

Find the computer equipment that TANDY no longer sells.

PACIFIC COMPUTER EXCHANGE

buys and sells usedTANDY

TRSDOS XENIX MSDOS COMPUTERS & PERIPHERALS

We sell everything from Model 3's and 4's to Tandy 6000's, 1000's to 5000's, Laptops, and all the printers and hard disks to go with them. If we don't have it in stock, we will do our best to find it for you. We have the largest data base of used Radio Shack equipment to draw from. All equipment comes with warranty.

PACIFIC COMPUTER EXCHANGE

The One Source For Used Tandy Computers

1031 S.E. Mill, Suits B Portland, Oregon 97214

(503) 236-2949

TTivi>i?nTi7r<T TDcnnc ^ i UIMa JKU lUii^ 1 IKöljUÄ JL.Ô

MODEL I

By Lance Wolstrup

In previous issues of TRSTimes I have made it fairly well known that I am not a fan of password protection. As my Model I is once again working, I thought it might be fun to strip TRSDOS 2.3 of this irritating feature.

The password is checked whenever a file is requested to open. If the password is correct, DOS will proceed to open the file; on the other hand, an incorrect password will make DOS refuse to open the file, giving the 'FILE ACCESS DENIED' message instead.

All of this takes place in SYS2/SYS. The decision whether to open the file or give the error message is made according to the status of the Z flag. If Z status, then the password matched and the file is opened. If NZ status, the password did not match and the error message is issued.

When SYS2/SYS is in memory, locations 4EACH and 4EADH contain 28 and 21, which translates to the assembly language mnemonics JR Z,4ECFH. In other words, if the passwords matched we jump directly to 4ECFH where the file will be opened with full access. By jumping directly to 4ECFH, we jump over the code at 4EAEH which denies the file access.

Thus, if we change the conditional JR Z,4ECFH to the unconditional JR 4ECFH, we will jump over the error portion of the code and open the file with full access -regardless whether the password matched or not.

The byte 28 means JR Z; the byte 18 means JR. It now becomes plain that we need to change the byte at 4EACH from 28 to 18. However, since SYS2/SYS is a DOS overlay, it is very transitory; that is, it is loaded from disk whenever it is needed and the memory it occupies is reused by the other SYS files when they are needed. The bottom line is that changing the byte at 4EACH in memory will not do us any good. We need to change the byte in the SYS2/SYS file itself.

Unfortunately, TRSDOS 2.3 protects itself by not having a 'patch' utility included with the DOS. So, we must use a 'zap' utility, such as Super Utility, or other similar program to do our dirty work for us. If you have such a utility available, select the track and sector mode and choose track 16, sector 6. The byte we want is located at position 63H. Choose the modify mode, place the cursor over the 28 at 63H and change it to 18. Now write this sector back to disk and the job is done - no more password protection in TRSDOS 2.3.

Should you want to re-enable the password protection, follow the instructions above, but change the 18, which is now at location 63H, back to 28.

If you do not own a 'ZAP' program, but instead have an editor/assembler, the following assembly language program will do the trick. Key it in, assemble it, and then run it to automatically remove the password protection.

When you run the program, you will be prompted to insert a backup of the original 2.3 DOS disk in drive :1. Pressing Q will return you to TRSDOS; pressing < ENTER > will read track 16, sector 6 of the disk in drive :1 into a buffer. The byte at relative position 63H in the buffer is then compared to 28H. If that byte is not 28H, the program aborts with an error message, leaving the disk in drive :1 unaltered. If byte 28H is found at relative position 63H in the buffer, it is changed to 18H and the buffer is then written back to the disk in drive :1. A message tells you that the operation was successful, and you are returned to DOS.

Do keep in mind that you must boot the system with the altered disk before the passwords are disabled.

00080 ;NOPW/SRC

00080 ;NOPW/SRC

00100

ORG

7000H

00110 START

CALL

1C9H

;cls

00120

LD

HL.TOPMSG ¡display topmsg

00130

CALL

4467H

00140 ASK

CALL

49H

;wait for key press

00150

CP

81

;is it 'Q'

00160

JR

Z.QUIT

;yes - so quit

00170

CP

113

;is it "q'

00180

JR

Z.QUIT

¡yes - so quit

00190

CP

13

;is it (ENTER)

00200

JR

Z.READ

;yes - read sector

00210

JR

ASK

;not Q, q or (ENTER)

00220 READ

LD

C,1

¡drive :1

00230

LD

DE.1006H

¡track 16, sector 6

00240

LD

HL,BUFFER

¡point hi to buffer

00250

CALL

46DDH

¡read disk sector

00255

OR

A

¡is A 0

00260

JR

NZ.RERROR ;no - abort on error

00270

LD

A,(BUFFER+63H) ;prot byte to a

00280

CP

28H

¡is it 28h

00290

JR

Z,FOUND

¡yes - we found it

00300

LD

HL,NOGOOD ;no - so display

00310

CALL

4467H ¡error message

00320

JR

QUIT ¡and abort

00330 FOUND

LD

HUGOTIT ¡display the gotit

00340

CALL

4467H ¡message

00350

LD

A.18H ¡stuff unprot byte

00360

LD

(BUFFER+63H),A ¡into buffer

00370

LD

C,1 ¡drive :1

00380

LD

DE.1006H ¡track 16, sector 6

00390

LD

HL.BUFFER ¡point hi to buffer

00400

CALL

46E6H ¡write buf to sector

00405

OR

A ¡is A 0

00410

JR

NZ.WERROR ¡no - jump on error

00420

LD

HL,DUNMSG ¡display success

00430

CALL

4467H ¡message and

00440 QUIT

RET

¡return to dos

00450 ;

00460 RERROR LD

HL,RDERR ¡display read error

00470

CALL

4467H ¡message

00480

JR

QUIT ¡and abort to dos

00490 ;

00500 WERROR LD

HL,WRTERR ¡display write error

00510

CALL

4467H ¡message

00520

JR

QUIT ¡and abort to dos

00530 ;

00540 TOPMSG DEFM

'NOPW - (c) copyright 1990 by '

00550

DEFM

'Lance Wolstrup'

00560

DEFB

0AH

00570

DEFM

'disable password protection on '

00575

DEFM

TRSDOS 2.3'

00580

DEFB

0AH

00590

DEFB

0AH

00600

DEFM

'Insert copy of the TRSDOS 2.3

00610

DEFM

'master disk in drive :1'

00620

DEFB

0AH

00630

DEFM

'press (ENTER) to disable the '

00640

DEFM

'password protection - or'

00650

DEFB

0AH

00660

DEFM

'press (Q) to quit*

00670

DEFB

0AH

00680

DEFB

13

00690 RDERR

DEFB

0AH

00700

DEFM

'UNABLE TO READ SECTOR'

00710

DEFB

0AH

00720

DEFM

'FUNCTION ABORTED'

00730

DEFB

13

00740 WRTERR DEFB

0AH

00750

DEFM

'UNABLE TO WRITE SECTOR'

00760

DEFB

0AH

00770

DEFM

•FUNCTION ABORTED'

00780

DEFB

13

00790 NOGOOD DEFB

0AH

00800

DEFM

■INCORRECT BYTE FOUND'

00810

DEFB

0AH

00820

DEFM

■FUNCTION ABORTED'

00830

DEFB

13

00840 GOTIT

DEFB

0AH

00850

DEFM

'CORRECT BYTE FOUND'

00860

DEFB

0AH

00870

DEFB

13

00880 DUNMSG DEFB

0AH

00890

DEFM

TRSDOS 2.3 DOS DISK IN 1

00895

DEFM

'DRIVE :1 IS NO LONGER '

00900

DEFM

'PASSWORD PROTECTED'

00910

DEFB

00930 ;

00940 BUFFER DEFS 256 00950 ;

00960 END START

I realize that not everyone has a 'zap' program or an editor/assembler readily available. So, for those people, here is a Basic program that will do the same thing.

The program, NOPW/BAS, handles the problem a little differently than the assembly language version. Rather than reading and writing to specific tracks and sectors, the program treats SYS2/SYS as a normal file (which it is). The password (NV36) has been documented in most of the TRS-80 publications of the seventies and eighties, so that is not a problem. We then open SYS2/SYS as a random file and, since the password protection byte is the 100th byte of record 2, we GET 1,2. To make sure we are doing the right thing, byte 100 is tested to see if it contains 40 (28H - JR Z). If not, we KNOW something is wrong. We therefore display an error message, close the file, and terminate the program. If the byte does equal 40, it is changed to 24 (18H - JR) and the record is written back to disk with PUT 1,2. The file is then closed, and we display the success message.

5 'NOPW/BAS FOR MODEL I TRSDOS 2.3 ONLY 10 CLEAR 500:CLS

20 PRINT"NOPW/BAS - (C) COPYRIGHT 1990 BY LANCE WOLSTRUP"

30 PRINT"DISABLE PASSWORD PROTECTION ON TRSDOS 2.3" 40 PRINT

50 PRINT'INSERT COPY OF THE TRSDOS 2.3 MASTER DISK IN DRIVE :1" 60 PRINT'PRESS < ENTER > TO DISABLE PASSWORD PROTECTION - OR" 70 PRINT'PRESS <Q> TO QUIT" 80 l$ = INKEY$:

IF l$ = "Q" OR l$ = "q" THEN CLS:END ELSE IF l$ = CHR$(13) THEN 90 ELSE 80

90 OPEN"R", 1 ,"SYS2/SYS.NV36:1" 100 FIELD 1,255 ASA$ 110 B$ = A$ 120 GET 1,2

PRINT'INCORRECT BYTE FOUND":

PRINT:CLOSE 1:END

160 PUT 1,2

170 PRINT:

PRINT'TRSDOS 2.3 DOS DISK IN DRIVE :1 IS NO

LONGER PASSWORD PROTECTED":

PRINT

180 CLOSE 1 190 END

ALL ABOUT ALL WRITE pt. 1

By Dr. Allen W. Jacobs

Whenever we use a program frequently, we become more familiar with it. This usually means that we find better ways of accomplishing the tasks for which we use the program. We usually do this by experimenting and by hearing or reading about helpful techniques and methods. From these sources, we develop still further refinements in our use of the program. This process of improvement is often called experiencing a "learning curve".

Since word processors are acknowledged to be the most widely used programs in the realm of microcomputers, it is reasonable that word processors benefit a great deal from the learning curve effect. I use Allwrite. I am writing this article for selfish reasons. I hope that I will get a like amount of feedback from other users of Allwrite in order to push my "learning curve", "around the corner".

For beginners, this is not a tutorial on Allwrite. The manual is quite complete for that purpose, although it is a bit wordy and not as well indexed as I would like it to be. My first wish for an improvement in Allwrite would be to have the manual in some form of hypertext format on line. There is a HELP feature but it is only marginally useful. Anybody learning to use Allwrite still has to READ THE BOOK.

Don't feel slighted by this requirement relative to the MS-DOS or MAC worlds. There is a large aftermarket industry in "advanced" manuals out there for MS-DOS word processing programs such as Word Perfect, Word Star, and Microsoft Word. There is even a monthly magazine devoted only to Word perfect. Check out your nearest book store and you will see. Any full featured word processor is capable of executing many options in many ways. No matter what they tell you, you have to know what editing and formatting commands your word processor has or, at least, that those commands exist in order to use them. To fully use any word processor, there is no shortcut to knowing what it can do. Allwrite is as full featured as the best of them.

After looking over a Word Perfect 4.2 manual, I found nothing that Allwrite could not do except in text math and parallel columns. Admittedly, Word Perfect 5.0 with its graphics import capability, multiple font handling on a laser printer, mathematical symbol, and automated table creation capabilities surpasses Allwrite. However, I have found that if you create a document with any impact type of printer (dot matrix, daisy wheel), you will be able to create it with Allwrite. Note that laser capability is also currently available for Allwrite but I do not know how extensive it is.

The following is a disorganized collection of uses, techniques, and hints that help make Allwrite more useful for me and hopefully for you. I even have some criticisms that maybe someday I, or one of you brave programmers, may correct.

Don't look for any explanation of Allwrite variable logic in this article. I don't use Allwrite for form letters. Regrettably, Allwrite's logic only seems to work on Allwrite variables which are only used in form letters, however, I have never tried this out. If someone is knowledgeable about this, let's hear from you.

My hints for document testing (ie. review to screen) are mostfy self-evident, but may have been overlooked for some time. The more obvious hints are hardware hints, but not all. My advice in regards to hardware is to use the fastest disk access you can. Allwrite works best with a hard disk but even better with a ram disk. This gives you the best performance, saves you a lot of time, and reduces disk drive wear. Regrettably, the Allwrite editor and formatter will not fit into the standard 64K memdisk of the Model 4. It might have, but the memdisk is only 57K when formatted.

If you have a 128K machine and a Radio Shack Hi-rez Board, there is a public domain program called Grafdisk that adds the memory in the Hi-rez board to the standard memdisk. This configuration provides you with a 96K ram drive (less with a Microlabs board). That is enough to put all of Allwrite into memory, after it is installed, but not all the system files. Therefore system calls are still made to the disk. Since I have a hard disk, I have not bothered with this option myself and so I have not attempted to generate a "minimum system" for diskless operation. If somebody has done this, please let us in on the result.

Admittedly, the formatter is slow to load and execute. The reason it is so slow is that it is capable of so many options; thus, it requires a lot of time to execute them. Remember, it is doing what a much faster MS-DOS machine does in less time. Allwrite only seems slower because most MS-DOS machines today are very fast compared with a Model 4. The Allwrite formatter is much larger than most TRS-80 programs (about 40K) and therefore takes a long time to load. For comparison, the Model 4 DOS is only 12K.

Software hints for document testing (ie. review to screen) consist of adding ";vi" or ";vs" and also ";pi 12" to the beginning of your document, while it is in development. It will look neat to your view and will fill the screen. You will have to delete the ";pi 12" command and review the document without a neat right edge screen if you are going to use proportional pitch in the printed draft. I used to retype ";vs ;pi 12" on the options line every time I wanted to review the document by printing it to the screen. Now, I simply type them once at the beginning of the document. When I want to print the document, I simply insert comment labels (";cm") in front of these instructions and they are subsequently ignored. The ;cm command is just like a REM statement in basic. It allows you to prevent code execution while leaving the code in place, as documentation.

While I don't write form letters, I do often write individual letters. To do this I use a form file and a skeleton file. Which I call a letter skeleton. It serves four purposes. It saves typing, prevents copying errors of the addressee and my return address, permits storing a number of different "callable" formats in one file, and it allows letters to be shorter. I have it set up to address two sizes of standard envelopes, if your printer can address an envelope directly. If you use labels, you can alter these files any way you see fit. They are presented to relay the concept that much of the form of a letter gan be "automated" and indeed need not even be present in the letter being written. While your needs and preferences may be different, my skeleton letter hopefully provides a method you can adopt for yourself. I guess that this method is the forerunner of MS-DOS Ventura Publisher's "style sheets".

The best way to explain this is to illustrate it. Therefore, I have have two files which I use to write a letter. The first is a list of labeled "imbed" files. The second is the skeleton of a letter that I use to fill in the body of the letter I want to write. I call these files LETTER/SKL, SKL, and SK. SK is simply a copy of SKL from which I deleted a lot of the extra comments. I first made SKL and later found that I was familiar enough with it not to need comments which I found myself deleting after writing each letter, to save space. SK is the shortened file I currently use. If you do not need some of the options I use, you can shorten it even more. It's all personal preference.

The option that makes it all possible is the "imbed" command. Imbed commands tell the formatter to stop printing the text in the current file and to proceed to a label or other specified text in another file! When that text ends, the formatter then proceeds with the original text. I mbeds can even be nested to four levels but I have never had the need or nerve to try that.

To follow the action, start with either the SK or SKL file and when it says ";im", go to the indicated file and to the label within that file. Print what's there until the ";en", which means "end of labeled text" of that label occurs. Then, go back to SK or SKL to the line below where you left the file.

If all this is too much for you at this time, just substitute your return address for the example and use the files "as is". You may have to alter them just to use them in your situation and you are sort of "stuck" with my format unless you develop the ability to change it. At least you know that there is an alternate way of creating a new business style letter other than copying a previous letter, renaming the file, and editing it. In some cases, I do that also. Whatever works.

LETTER/SKL

;cm Your return address goes here. 5721 Topanga Canyon Blvd. Suite 4

Woodland Hills,

CA 91364

;sk2

;cm Addressee and date with" +" separator goes after this comment line (in SKL).

;en letstart

;lb letend

Thank You Very Much.

;fo off

Sincerely,

;sk3

Lance Wolstrup, Editor

TRSTimes magazine

;en letend ;lb letencl ;sk

Thank You Very Much.

;fo off

Sincerely,

;sk3

Lance Wolstrup, Editor TRSTimes magazine ;sk2 ;in encl. (ck.) ;pa

;en letencl ;lb addenv ;ls 1 ;pn off ;in 0 ;fo off ;ll 30

TRSTimes magazine 5721 Topanga Canyon Blvd. Suite 4

Woodland Hills, CA 91364 ;en addenv ;lb addenv2 ;ll 80 ;in 40 ;fo off ;sk5

;cm address of addressee is inserted here. In SK or SKL.

;en addenv2

;lb addenv2s

;fo off

;sk3

;cm address of addressee is inserted here. In SK or SKL. ;en addenv2s ;lb addenv3 ;pa

;en addenv3

;cm THIS SKELETON PUTS THE START AND END ON A BUSINESS LETTER IN A #10 OR SHORT ENVELOPE. ;cm ALL YOU HAVE TO DO IS INSERT THE BODY AND ADDRESSEE, AND DELETE THE COMMENTED LINES. ;im letter/ski, letstart

;cm insert the return address directly on the line below with a" +" and the date, with no spaces. ;cm (IE.: "XYZ Co. + Month 99,1999".) No other punctuation.

;fo on;cm DELETE THIS LINE FOR RAGGED RIGHT EDGE.

;ls 1.5;cm DELETE THIS LINE TO SHORTEN LETTERS. ;pp

;cm Start or insert the body of the letter directly on this line & RENAME FILE

;cm Remember to choose one letter ending and delete the other,

;cm with only an enter after the end of the body of the letter text.

;im letter/ski,letend ;im letter/ski,letencl

;cm For envelopes, delete either addenv2 or addenv2s and leave the other.

;cm "2" is for size #10 envelopes while "2s" is for the shorter size.

;im lett^r/skl.addenv

;im letter/ski,addenv2

;im letter/ski,addenv2s

;cm Insert the address of the addressee here, minus the date.

;im letter/ski,addenv3

SK

;im letter/ski, letstart

;fo on;cm DELETE FOR RAGGED RIGHT EDGE.

;ls 1.5;cm DELETE TO SHORTEN LETTERS. ;pp

RENAME FILE AS YOU STARTTYPING OVER THIS LINE.

im letter/ski, letend im letter/ski,letencl im letter/ski,addenv im letter/ski,addenv2

;im letter/ski,addenv2s ;cm ADDRESSEE HERE ;im letter/ski,addenv3

One of the uses I put my "business" letter form to is that I often place orders for hardware, software, etc. The only thing "special" about ordering is that I use "print time tabbing", as suggested in the Allwrite manual. I notice that less frequent users of Allwrite use "on screen" tabbing. It appears to be more "WYSIWYG" than print time tabbing, but is really less flexible and nearly impossible to use with proportional spacing. Again, the best way to see how it works is to experiment with it.

My typical order form uses the best form of tabbing, which is relative tab stop. They are the most flexible. This letter to MISOSYS is a pretty good example. In order to use it, you must have LETTER/SKL on any available drive. It was derived from SK but it can be edited to be to anybody for anything. If you wanted to turn it into a billing of some sort, the method is obvious. Since Allwrite doesn't have on screen math, all of that must be done with a calculator. If you were doing a lot of these letters, it might be better to use a data base and a form letter with Allwrite. My example is just for the casual home user.

MISOSYS/LET

;im letter/ski,letstart

Misosys, Inc. + August 31,1990

Sterling, VA 22170-0239

;cm Telephone number: 1 (800) MISOSYS

I would like to purchase the following:

;fo off

;tb+ +25,+ 15d, + 15d TMQ Disk Notes+Vol 4 No 4 + + $10.00 TMQ Disk Notes + Vol 5 No 1 + +$10.00 Misosys Quarterly+Vol 5+ +$30.00 DoubleDuty Version 2.6+ + +$49.95

(or highest current version) ;cm LS DOS 5.3.1 + Update + +$15.00 Shipping & Handling + + +$5.00 + + + TOTAL $104.95

Enclosed is a check for $104.95. My customer number is #XXXXX. Please ship the above listed items to me through the above address. ;im letter/ski,letencl

;im letter/ski,addenv ;im letter/ski,addenv2 Misosys, Inc. P.O. Box 239 Sterling, VA 22170-0239 ;im letter/ski,addenv3

The thing to remember is that tabs are measured in inches and tenths of an inch and that those measurements are INDEPENDENT of pitch. It is also helpful to remember that if your text runs past a tab, the next tab will be at the tab stop AFTER the one you intended. If you can't change the text or the tab, try changing the pitch. It is a poor third choice but sometimes the only one you have. I almost never use it.

You will notice that I am prepared to order the LS DOS 5.3.1 update when it comes out but I did not, as yet. I placed it in a comment line so that it's there and so that I will not forget to order it, at a later time. I often place the telephone number associated with the addressee in a comment line.

Until relatively recently, I have avoided using the soft key features of Allwrite. These are analogous to the highly touted macro keys in Word Perfect. We of long time TRS-80 use know of this general capability as keystroke multiply (KSM), among other names. It has been a feature of many DOS'es and add-on programs. Basically, it just means assigning a number of user programmable keystrokes to a specific soft key;

but that will have to wait for next issue's installment.

NEW PROGRAMS

from the Valley TRS-80 Hackers' Group public domain library for Model I, III & 4

Send S.A.S.E. for annotated list Sample disk $5.00 (U.S.)

VTHG BOX 9747 N. HOLLYWOOD, CA 91609

Salehoo Secrets and Tips

Salehoo Secrets and Tips

As with any web site, SaleHoo has a number of features that will help you in buying products from around the world. Once you have an account on SaleHoo, which only costs a one-time fee, you can establish up to twenty named searches for products. After that, any time those items become available, you’ll be alerted.

Get My Free Ebook


Post a comment