31-Jan-85 10:32:19-MST,24329;000000000000 Return-Path: Received: from apg-1 by SIMTEL20.ARPA with TCP; Thu 31 Jan 85 10:31:20-MST Date: 31 Jan 1985 12:26:07 EST (Thursday) From: Robert Bloom AMSTE-TOI 3775 Subject: How to install the TEAC 55F's in a Horizon To: NorthStar-users@simtel20 SUBJECT: How to install the half-height 96tpi TEAC FD55f disk drives in a NorthStar Horizon, with some side comments about installation of some BDOS and BIOS patches and ZCPR2. Installation includes both the hardware and software steps necessary to use two of the TEAC half-heights with one standard full height drive (SHUGART [SSDD] or TANDON [DSDD - [quad']) at minimum cost. Software patches include 'Archive' directory bit (t3) reset on file modification, Plouffe's modifications to handle some non-standard but very usefull disk formats (fully compatable with all standard formats), zpcr2 buffer area initiation on cold boots, and Rich Conn's zcpr2 system itself. This report contains all the the actions that I found necessary to get the drives on-line and should help any that are thinking about doing themselves. Although I managed the actual swap by myself, contributions by Frank Wancho and Al Plehn were invaluable. This entire exercise was started by a message from Al Plehn on the virtues of the TEAC FD55F 96-tpi drives. I had been thinking of replacing the SSDD with the now NorthStar-standard QUAD (TANDON 100-2 DSDD) drives but had been stopped by cost. Then I saw the ad in Byte in which California Digital had the TEACs for only $139 (1), $135 (2-9), $129 (10+); this was even cheaper than the TANDONs and had twice the capacity. I ordered two on 14 Dec by their 800 number with a MasterCard number. Received the acknowledgement copy via US Snail on 18 Dec and the actual drives on 28 Dec. That's a two week delivery in the middle of the holiday season - not bad at all. The TEAC FD55F characteristics are, briefly: half-height, 96 tracks per inch, 80 tracks per side. Disks secured with a twist lever, not a swinging door. Relative to TANDON (or SHUGART) drives, the TEAC drive controller edge connector is slightly higher and upside down and the TEAC drives are slightly deeper. They are hardware compatible with the standard NorthStar disk controller, and software compatible with NorthStar's CP/M 2.2 Rev. 1.1.0 'CPMGEN'. CP/M formated capacity shows 784k free space with the standard NorthStar FORMAT.COM formatter with a 4k block size. Plouffe's mod yeilds 786k free space with a 2k block size. The drives came with a technical manual (~25 copied pages) which I had asked for (no cost) and two power connectors with dettached plugs but no cables. Each drive had two 3mm and #6 mounting holes top and bottom, the 3mm holes being in the preferred positions, the #6 holes are the same size as the old drives had. Since I bought 2 of the TEACs, I decided to keep one of the old SHUGART SSDD drives in the Horizon so that I still could write 48-tpi formats. Because of the greater depth of the TEACs, they will only fit in the right side drive position. (A power capacitor gets in the way on the left side drive - Al Plehn suggests moving all the offending parts of the power supply back an inch by drilling a few holes. The two new drives just barely fit in my standard configuration.) As the disk controller cable has only two connectors, I initially worked on getting just the two TEACs on-line - the old SSDD drive was be just a dummy. Later in this message I tell how I got the SSDD drive on-line so that all three can worked together. Interesting note: the manual gives the mounting configuration as lever up if mounted vertically, or the in-use light up if horizontally. (If mounted horizontally, having the disk drive motor up or in-use light down is called a no-no.) The vertical position as stated puts the R/O notch DOWN, opposite to what I'm used to. This would put the edge connector right-side up, at least compared to the TANDONs. As I have my Horizon vertically oriented on it's right edge (drives on top), I really have the drives horizontal as suggested. This means when I place the Horizon horizontal, the drives are now vertical and upside down as regards the instruction and edge-card connector, but right- side up as regards my 'instincts'. Actually getting the drives to read and write disks was a bit more complicated than I thought, but straight forward once you realize that the TEACs can't write a 48-tpi disk or the 48-tpi drives a 96-tpi disk and CP/M has to be told about the 96-tpi drives before using them. What follows is the steps I took written as instructions. After switching to the two new drives one can still read all the old disks, but can only reformat them to 96-tpi, not do any other write operations on the 48-tpi disks. When one gets a longer controller cable (or cross fingers and strech the old), you can put the old 48-tpi drive back on-line and then write 48-tpi formats too. Before starting, inspect the drives for obvious problems. Program the drives via the mini-jumps for: one drive as '1' (to be used as the A: drive), and the other drive as '2' (to be used as the b: drive) and remove the terminating resistor strip from drive 2 (not 1! - when you're finished drive 1 will be on the end of the controller cable). I also removed both 'PM' jumpers and left the others as them came. The manual does explain all of the options - my problem was understanding the explanation! 1. With power off, remove the right-hand side old drive and temporarily plug in a new drive (B) to the now-open power and controller cables. (The new drive is 'upside down' with R/O notch at the bottom.) It need not be secured in place as it will be moved later. 2. Power up and place a copy of the NorthStar CP/M distribution disk in the A: (old) drive and a blank disk in the B: (new) drive. Boot your old working version. 3. Run CPMGEN from the A: drive and create a new vanilla CP/M system with drive one as a SSDD (D) or QUAD (Q) drive and drive two as a nine (N) drive [fast stepping]. Place the new system on the A: drive disk and cold boot. 4. Format the disk in drive two as a 'Nine' disk. Do this by running FORMAT.COM and selecting either 'N' or '9' - it is not on the menu and you might need a one byte patch. (See the NorthStar-users message archive if you are not familiar with this patch - change '9'<39h> to 'N'<4Eh> at 0176h.) Or alternately, and probably preferred, use NEWFMT.COM and format as 'N' - (*NOT* 'O' for octal with special 2k blocks!) NEWFMT.COM can be found in SIMTEL20 at MICRO:NEWFMT.14COM which you should get anyway as it is needed later if you want Plouffe's modifications. 5. Run CPMGEN again and create a new system with both drives one and two as N drives, and place it on the newly formatted disk in drive two (TEAC). Mark this disk as a 'N' format boot disk and power down. 6. Disconnect the power and controller cables from both drives. Place both both new drives in the right-hand slot in the correct orientation, i.e. R/O notch and in-use lights up. I left the old (disconnected) left hand drive in place. Before securing the drives to the chassis, attach power and controller cables. I found it easist to run the controller cable to the right-most drive first, and then to the middle drive. Note that the connectors are now upside down relative to what it was. The controller cable is pressed directly between the drives and a power connect strip with no clearance. (I've only 3 cards in the buss and the supply runs cool - people with hot supplies should take Plehn's advice above or risk a melted cable.) Remember too that now drive #1 is on the end of the cable and should have the terminating resistor, not drive #2! 7. Secure drives. The middle drive (which is the 1 or A drive) can be secured directly from underneath from the same holes as the old drive came from. I found the 3mm holes in perfect position - if you don't worry about buggering up the threads, a #4 screw works (or *gasp* - a short self-tapping screw), otherwise either use a correct 3mm screw or drill and tap the baseplate for the #6 holes. There is no easy way to secure the right-most drive - either drill the baseplate for another hole, fabricate a bracket to go across the top of the drives (my favorite), or just let flop. The latter is not as bad as it sounds, especially if the Horizon will be used vertically. (One possible method of making a bracket: place all three drive in the chassis where they belong. Place a piece of paper over the drives where you want the bracket to go and punch holes in the paper where the screw hole are. I used all six of the #6 holes on the top of the three drives. The bracket will be nothing more than a flat piece of metal. Transfer punched holes in the paper to a piece of aluminum and drill - and voila! One custom-made NorthStar/TANDON/TEAC disk drive bracket!) 8. Power-up and boot with the 'N' drive boot disk. One can still read all the old 48-tpi disks but a write request to any of these will cause a "ILLEGAL ACCESS" and require a cold-boot to regain control. That's it! What follows is the patches to the system for ZCPR2, and and Plouffe's mods. Filename are from SIMTEL20 in directories: In MICRO: you need: FORMAT.DOC - if you want to know what it's all about NEWCPY.16COM - replaces the NorthStar COPY.COM & handles the new formats NEWFMT.14COM - replaces the NorthStar FORMAT.COM with new formats NEWFRM.14ASM - the actual patches NSGEN.COM - replaces the NorthStar SYSGEN.COM & handles the new formats In MICRO: you need: ZCPR2.ASM - the actual CCP replacement (need not change) ZCPRHDR.LIB - all the the equates and addresses to change (that's all you *need*, but there's lots of utilities <*.COM>, documentation <*.WQ> and help <*.HLP> files in this directory too.) In MICRO: you might also want: ARCHIVE.COM - will backup all files with the archive bit (t3) unset and reset it. A bdos patch will cause the archive bit to be unset whenever a file is modified. All of the following assumes a '64k' NorthStar CP/M system (actually 61k with a split BIOS) and CPMGEN has been patched for the spurious $R/O BDOS error on the A: drive. (The patch is for CPMGEN.COM and changes ANI 02 and JNZ 7992 at 2F31H to MVI A,99 and STA 7FAB.) 1. If ZCPR2 is wanted (recommended), edit ZCPRHDR.LIB for the following addresses: D100 CCP ZCPR2 Options: D900 BDOS E700 BIOS jump table FB30 External Path E800 Cold Boot PROM EC00 Multi-Command Line F300 "Real" BIOS EE00 External Stack FA00 User Area EF00 External FCB 2. If you want the special disk formats (very recommended), edit NEWFRM.ASM for the correct BIOS (F300) and CCP (D100) locations, set OCTAL TRUE and QUAD FALSE. (I've not been able to get QUAD to work yet - I think it's something to do with the split BIOS.) ; NEWFORM VERSION 1.4 * ; 12/02/82 * ; R. L. Plouffe * -- ETC. OCTAL EQU TRUE ;Want alternate octal format ;for 2kb directory blocks? QUAD EQU FALSE ;Want alternate QUAD format ;for 80 tracks? ; BIOS EQU 0F300H ;BASE OF BIOS CCP EQU 0D100H -- ETC. AS WRITTEN 3. Providing ZCPR2 is desired, one has to initialize certain buffers at cold boot time. Create a new USER.ASM, call it ZUSR, by adding the following code to the standard NorthStar-supplied user area code to initialize the ZCPR2 system on a cold boot: (This Z80 code is from Frank Wancho and requires M80/L80 to assemble, convert to 8080 if necessary.) aseg .z80 .phase 0FA00H ;ORIGIN FOR 64KQD SYSTEM mcmdbuf equ 0EC00h ; ZCPR2 Multi Command-line (MLC) Buffer --- normal user area code (comment out serial printer code if parallel printer --- and vis versa if you need more room.) ;WRAP IT UP BY SENDING A CR TO THE PRINTER & EXIT ; CALL MULTI ; ZCPR2 Initialization LD C,0DH ;A CARRIAGE RETURN JP USERBAS-700H+15 ;GOTO PRINT JUMP IN BIOS VECTOR ; ;******* END OF STANDARD INITIALIZATION CODE ********* ; ;**** ZCPR2 INITS *********** ds userbas+130h-$ ; This fills to userbas+130h ; ; External PATH is here: ; pinit: db '$','$' ; current disk/current user ; db '$',0 ; current disk/user 0 ; db 1,'$' ; A:/current user db 1,0 ; A0: ; db 1,10 ; A10: for finding NAMES.DIR db 0 ; end of list ; ; Rest of space is available for PATH info up to userbas+200h ; So we use this space below for the one-time init of the MLC ; only done at cold boot ; multi: ld de,mcmdbuf ld hl,clinit ld bc,5 ldir ret clinit: dw mcmdbuf+4 db 200 db 0 ds userbas+180h-$ end 4. If you would like the BDOS 'archive patch' to reset the archive bit (t3) whenever a file is modified, you need to assemble the following code: bdos$loc equ 0D900H ; base address of BDOS wrsec equ bdos$loc+03b8h ; address of write sector routine pntdir equ bdos$loc+055eh ; address of directory pointer routine reset$archive equ bdos$loc+0df0h ; address of reset archive bit patch ; ccp$base equ 1500h ; sysgen ccp base position bdos$entry equ ccp$base+0806h ; sysgen bdos entry position wrt$dir equ bdos$entry+05c8h; 'wrsec' call location, in DIR write routine scratch equ bdos$entry+0deah; scratch RAM inside bdos for patch org wrt$dir ; patch 'call wrsec' ; call reset$archive ; call patch in scratch RAM ; org scratch ; patch area for 'archive bit reset' ; call pntdir ; point to directory entry in buffer lxi d,11 ; make offset to 't3' in FCB dad d mov a,m ; get 't3' character from FCB ani 07fh ; kill archive bit position mov m,a ; return reset archive bit to FCB call wrsec ; write directory sector ret ; return to 'wrt$dir' routine ; end 5. Now assemble the parts: (In the command lines below, 'x' should be replaced with a drive letter indicating where the source is and where the HEX file should be placed.) assemble the archive overlay to BDOS: ASM ARCPATCH.xxZ assemble the user area overlay with ZCPR2 inits M80 =ZUSR/M L80 ZUSR,ZUSR.OVR/N/E Plouffe's mod's for 2k block size on 96-tpi drives ASM NEWFRM.xxZ Finally assemble ZCPR2 proper MAC ZCPR $Ax Hx PZ SZ 6. Actual assembly and patch: The order of overlaying the various items is important and went as follows to create NEWCPM.COM (a SYSGEN-like program containing the modified SYSGEN image): NCPMGEN <-- REMEMBER TO USE PATCHED VERSION! ETC ... CREATE A VANILLA SYSTEM OF SIZE REQUIRED SAVE VANILLA SYSTEM ON DRIVE 1 NSGEN <-- TO READ SYSTEM INTO MEMORY (USE THE NEW SYSGEN-LIKE PROGRAM! 1 <-- FROM DRIVE 1 ^C <-- EXIT WITHOUT WRITTING TO ANOTHER DISK SAVE 51 SAVECPM.COM <-- SAVE THE SYSTEM INTO A NORMAL FILE DDT SAVECPM.COM <-- PUT IT INTO DDT IARCPATCH.HEX <-- ADD THE ARCHIVE BDOS PATCH R <-- NO OFFSET NEEDED, SYSGEN IMAGE ADDRESS HARD CODED IN IZUSR.OVR <-- AND THE USER AREA R3100 <-- OFFSET NEEDED BECAUSE ZUSR.OVR IS NOT A HEX FILE, SYSGEN IMAGE ADDRESS IS 3200H, LOAD ADDRESS 0100H SO USE 3200-0100 = 3100 INEWFRM.HEX <-- SPECIAL MODS FOR QUAD/NINE DRIVES R3800 <-- SYSGEN IMAGE @3200 - SYSTEM LOCATION @FA00 GIVES OFFSET OF 3800 F1500,1CFF,00 <-- CLEAR THE OLD CCP OUT IZCPR.HEX <-- ADD IN THE ZCPR2 R4400 <-- SYSGEN IMAGE @1500 - SYSTEM LOCATION @D100 GIVES OFFSET OF 4400 ^C <-- EXIT DDT SAVE 51 NEWCPM.COM <-- AND SAVE THE PATCHED SYSGEN IMAGE NEWCPM <-- RUN IT <-- SYSTEM IN MEMORY SO NO DISK READ 1 <-- WRITE IT BACK OUT TO DRIVE 1 <-- COLD BOOT TO BRING IN NEW 7. Now with the new system in place, one can format disks with the 'O'ctal format of NEWFMT which gives a 2k block size. HOWEVER: beware using the octal format with any CP/M without the NEWFRM patch - sometimes it'll work sometimes it won't, and you might not know the difference intil it's too late. Also, never try to copy 'O' format disks with the old NorthStar COPY.COM or use the NorthStar SYSGEN.COM - use NEWCPY.COM and NSGEN.COM instead. Try it, you'll like it! That was the easy part - I did have some difficulty with the following. I don't recommend the following procedure (it would better to buy or make a new cable) but if you have confidence in yourself and a restricted pocketbook you can try the following. (The controller cable just barely fits in this procedure - I would recommend buying 3 drive connectors, one 34-pin connector and at least 24 inch of 34-wire ribbon cable and make your own. In general you can follow the procedure below but fit the cable as you go - it's lots easier to wind it 'over around and through' the power supply if you have plenty to spare.) 1. Buy one or two 34-pin edge card connectors from somebody. (I got mine from Radio Shack.) Make sure that they are 'through' connectors, not the cable termination type. 2. Take everything apart again, i.e. remove all three disk drives and take the disk controller cable off of the controller card. My cable was 17.5 inches from controller connector to the end drive connector. 3. *VERY CAREFULLY* remove the middle drive connector from the cable. (This might not be possible without damaging the connector.) One will want to reuse the plug so don't break any pins. (I found myself needing to solder two of the little buggers back together after they broke. Sort of like trying to solder two wires together end-to-end WITHOUT overlapping them. Not the job one could do without *a lot* of patience, or substantial soldering skill. So either don't break it or buy the extra edge connector. My repaired connector failed a couple of days later, and had to be replaced anyway.) In any case, clearances are so tight the middle connector has to be removed one way or the other. 4. Crimp on the removed (if salvaged) or a new connector 1-3/4 inches from the end drive connector. This moved connector and the end connector will connect to the two TEAC drives. I found it easist to place the connectors in a vise to crimp them on. 5. Look at steps 7 and 8 below and make a test fit of the cable on the computer. After you are familiar with how the cable has to twist and turn, crimp the new connector approximately 8 inches from the CONTROLLER end of the cable and facing the same direction as the other drive connectors. You should mark the exact location during the test fit. 6. This will leave the cable with the controller connector on one end, a drive connector on the other, and two drive connectors in between, all facing the same way: |<---------------------------17.5------------------------>| (measured |<------------9.5-------------->|<-----6.25----->|<-1.75->| in inches) _|_ _|_ _|_ _|_ |. .|___________________________|| ||_______.____|| ||____|| || |. .|___________________________|| ||_______.____|| ||____|| || |. .|___________________________|| ||_______.____|| ||____|| || |. .|___________________________|| ||_______.____|| ||____|| || |. .|___________________________|| ||_______.____|| ||____|| || |. .|___________________________|| ||_______.____|| ||____|| || |___| ||_|| | ||_|| ||_|| \ | | | \to first TEAC Controller Connector | | \to second TEAC | \ old connector (removed) \to old SSDD drive NOTE: IF YOU ARE MAKING UP A BRAND NEW CABLE DO NOT USE THESE DIMENSIONS - THIS IS A MINIMUN LENGTH CABLE. With the luxury of cutting and fitting to length, one would probably want to add several inches before and after the connector to the old drive. 7. Place disk controller in the 4th or 5th buss slot from the rear or whatever is closest to the back of the disk drives. Attach cable to the controller and run the cable directly down to the SSDD drive, you will have to take out the old twists in order to get it into position. It is easier to do if the drive is not attached. 8. Make two 45 degree turns with the free end of the cable (between the first and second drive connectors) to flip it upside down, and attach the second connector to the third drive (TEAC). Finally, connect the end connector onto the middle drive (TEAC). This is practically impossible to do with the drives connected to the chassis so leave them all loose. 9. Solder or crimp one end of 4 short (4 to 6 inch) wires from your spare parts box to 4 supplied power connector pins. It will be easier if you use one black, one white, one green and one red wire to match the current colors in the plugs. Using one of the drive power supply cables as a color guide, push the proper color-coded pins into the supplied power connector housing. Carefully remove the four pins from one of the drive power supply cables and solder on the free ends of the new connector cable, matching colors appropriately. Push the pins back into the housing, using the other cable as a color guide. NOTE: the connectors are keyed to their jacks to prevent misattachment. Therefore it is important that you install the pins in the housing correctly. 10. Attach the old, unaltered power cable to the old drive and the new, split power cable to the two new drives. 11. Double check that the power connections are right, and the controller cable is in the correct orientation. Ignore the markings on the cable connectors themselves (the connectors can and are often attached upside down), refer back to the controller to find which edge of the cable have the low numbers (pins 2 and 34 are marked on my controller card). Follow that edge to the three drives and make sure that the pin markings on the drive (ciruit card) match up. 12. Providing everything is correct, cross fingers and power up. 13. Check out the three drives to make sure that all will read and write. Note that drive C: (the old one) will only read and write 48-tpi formats; drives A: and B: will read 48-tpi and read and write 96-tpi. If need be, generate a new system with the three drives identified appropriately. 14. Finally, attach drives to chassis with the screws underneath or your homemade brackets. Make sure that the cable connectors stay in place when the drvies are pushed in, the old drive connector is especially difficult if it does not fit tightly. bob bloom p.s. After five days of use, one of the new TEAC drives died. The motor no longer started either with in parallel with the others or upon a drive select signal although the in-use indicator did light. California Digital was very cordial, gave me a return authorization number and said to send it back. I sent it back on Jan 9, and I'll report the results when something more happens. For the time being, I'm running one old SSDD and one of the TEACs. Coming attractions: I'm currently working on getting ZCPR3 working on the new drives. All of the ZCPR3 buffers fit very nicely above the disk controller address space, leaving continuous memory for a 58k CP/M. I also am trying to do the same modifications to a 18Mbyte hard disk system, which is complicated because of the larger BIOS and multi-user operating system (TSS/C).