Diversi-DOS(tm) PLEASE COPY THIS DISK AND GIVE IT TO EVERYONE YOU KNOW ! ! ! ! ! ! ! ! ! It is legal to copy and distribute Diversi-DOS, subject to certain restrictions (see "Licensing Information"). However, to legally run the Diversi-DOS program on this disk, please send $25 directly to: DSR, Inc. 5848 Crampton Ct. Rockford, IL 61111 You will receive a User Support Number and a Validation Sticker as proof of payment. Your honesty will allow us to distribute future programs this same, low-cost way. Putting Diversi-DOS onto a disk * * * * * * * * * * * * * * * * * * * * The first 3 tracks of a DOS 3.3 disk contain the Disk Operating System (DOS). When the disk is booted, the DOS on these 3 tracks is loaded into the Apple memory. This DOS then controls all disk operations. Diversi-DOS modifies the first 3 tracks on a disk. When the disk is booted, the Diversi-DOS operating system will be loaded. Diversi-DOS will then control all disk operations. To add Diversi-DOS to a disk, enter "2" from the main menu. You will then be asked if you want to install the free sector patch. Press "Y" if you want to know the number of free sectors when you catalog a disk. Note: This disables the CALL 1005 feature(see Random Access Text Files). Then insert the DOS 3.3 disk and press . Diversi-DOS will be written onto the first 3 tracks on this disk. From then on, whenever you boot the disk, it will load Diversi-DOS instead of the old DOS 3.3. The other way to add Diversi-DOS to a disk is to initialize a blank disk (press "9" from the main menu and type: INIT HELLO). Unprotected Commercial Disks: In most cases, Diversi-DOS can be added to any unprotected disk. Commercial programs which uses DOS 3.3 in the standard way should work with Diversi-DOS. However, any program which references specific locations within DOS may crash with Diversi-DOS, since these locations may have been changed. To be safe, it is best to have a back-up copy of the commercial program before adding Diversi-DOS. Note: To install GPLE, "BRUN PLE.48". Running Protected Programs * * * * * * * * * * * * * * * * * * * * Many protected disks will work with Diversi-DOS by booting Diversi-DOS and running the startup program on the disk (usually named "HELLO"). For your convenience, option "3" in the main menu will do this for you. You will be prompted to insert the protected disk and press . The name of the start-up program will be displayed on the screen, and this program will be RUN (or BRUN if needed). This bypasses the loading of the old DOS 3.3 operating system off the protected disk, so that Diversi-DOS will stay in memory when the protected program runs. After you have run a protected disk this way, you can make the process more convenient by making a custom Diversi-DOS boot disk for that protected program. Press "7" from the main menu to enter BASIC. Then enter the following program. 10 INPUT "PUT IN DISK AND HIT RETURN"; A$ 20 PRINT CHR$(4);"RUN HELLO" After you enter this program, put in a blank disk and type INIT HELLO. You can now use this disk to boot Diversi-DOS and start the protected program. First put in this "boot disk" and turn on the computer or enter "PR#6". Then put in the protected disk and press . Note: When you run a protected disk using option "3" on the Diversi-DOS master, it will tell you the name of the start-up program. If the name is not "HELLO", then use the correct name in line 20 of the above program. If it is a binary program, then use "BRUN" instead of "RUN" in line 20. If It Doesn't work: Many protected programs will not work when you try this procedure. This is because they use a non-standard DOS. Making Back-Up Copies * * * * * * * * * * * * * * * * * * * * To make back-up copies of this Diversi-DOS master disk, choose "4" from the main menu. You will then be asked to remove the master disk and put a blank disk in the same drive. This disk will be initialized, and the Diversi-DOS master files will be written onto the disk. When the copying process is finished, insert a new blank disk and press , if you want to make another copy. Note that you never need to re-insert the master disk to make copies. When you press , a copy will be made on Drive #1. If you wish, you can press to make a copy on Drive #2. This will allow you to make multiple copies more rapidly by alternating drives. Keyboard/Print Buffer Utilities * * * * * * * * * * * * * * * * * * * * Menu option #6 will write the file BUFFER onto a disk. Then, when you BRUN BUFFER, the keyboard type-ahead buffer, and print buffer will be installed. This routine assumes that you have a parallel printer card in slot #1, and a 16K RAM card in slot #0. If you don't have this hardware, you will have to modify the BUFFER routine (see below). Keyboard Buffer: With the keyboard buffer installed, anything you type on the keyboard is stored in memory so it is not missed. If the computer is reading the disk, for example, characters which you type will be stored until the computer is ready. Thus, you can enter another command while the computer is processing a previous command. Since this feature is done entirely in software, some programs will not be compatible. For example, if a BASIC program tries to read the keyboard with PEEK's instead of the usual GET or INPUT, then the PEEK will never find a character. That character will be waiting in the memory buffer. The result is a program which does not respond to the keyboard. If you find a program which does not work properly with the keyboard buffer, you can disable it. Print Buffer: Whenever the computer tries to send a character to a printer, it normally has to wait until the printer is ready. Since the printer is much slower than the computer, there is a large amount of time spent waiting. The print buffer utility solves this problem by saving the characters to be printed in memory until the printer is ready for them. Even though the characters have not actually been printed, the computer can go on to its next job, since the characters are safely stored and will be printed when the printer is ready. The print buffer is installed when you BRUN BUFFER. You must have a 16K RAM card in slot #0, and a parallel printer card in slot #1. To turn on the printer, enter PR#1 as usual. If you are turning on the printer from a program, you must enter: 10 PRINT CHR$(4);"PR#1" That is, PR#1 should be entered as a DOS command from within a program. Future PRINT statements will send output to the print buffer, and then to the printer, when ready. The output will be displayed on the screen as it goes into the print buffer. Modifying the BUFFER file: To modify the BUFFER file, press "5" from the main menu. You will be asked a series of questions about your configuration. The old Apple "Serial Interface Card" cannot be supported due to its design limitations. In general, most parallel printer cards will work with the "PARALLEL" option, and most serial printer cards will work with the "COMMUNICATIONS" option (i.e. Versa-Card, CCS 7710, etc.). All 16K RAM cards should be compatible. If you have a 32 to 128K card from Saturn Systems or Legend Industries, you can use it for a larger print buffer. If you have another brand of card, ask the manufacturer if it uses the same bank switching scheme as Saturn or Legend. If it doesn't, you can still use it as a 16K card. After you are finished with the changes, you will be asked to insert a disk. The new BUFFER file will be written onto this disk. Then, if you want to put the new BUFFER file onto another disk, use option "6" from the main menu. Notes: The print buffer utility disables the software features on the printer card. Commands to the printer card will no longer have an effect (i.e. ctrl-I 80N with a parallel card). After you BRUN BUFFER, control of the printer must now be done with POKE's (see "Diversi-DOS POKE's"). For example, instead of ctrl-I 80N, enter POKE 49028,96. This turns off output to the screen and prints the full width of the printer (Set the switch on your printer to do a line feed when the line buffer is full). When you BRUN BUFFER, the INIT and CHAIN commands are disabled. If an INIT is issued, it will be ignored, but no error will occur. To restore the INIT command, re-boot a Diversi-DOS disk. The BUFFER utility may not work with some programs which change locations $36 to $39. Also, the Applesoft CHRGET routine is modified. This might cause problems with certain programs which also patch here (i.e. compilers). The following program will install the BUFFER utility without patching CHRGET: 10 ?CHR$(4);"BRUN BUFFER" 20 POKE 46965,16 To use BUFFER with Applewriter I, use the printer address $AE8E and turn off the screen (POKE 44671,96). Flushing the Buffers: If you type some wrong characters, enter ctrl-X to cancel them. The keyboard buffer will be emptied. Similarly, to flush the print buffer, enter ctrl-X twice in a row. All characters waiting to be printed will be lost. Pressing RESET does not flush the print buffer. To avoid any problems, it is best to set the printer "off-line" before pressing RESET. Diversi-DOS Error Messages * * * * * * * * * * * * * * * * * * * * Diversi-DOS prints error message numbers, instead of the full message. You may want to tape a print-out of these messages to the top of your computer: 1......Language Not Available 2,3....Range Error 4......Write Protected 5......End of Data 6......File Not Found 7......Volume Mismatch 8......I/O Error 9......Disk Full 10......File Locked 11......Syntax Error 12......No Buffers Available 13......File Type Mismatch 14......Program Too Large 15......Not Direct Command Random Access Text Files * * * * * * * * * * * * * * * * * * * * Diversi-DOS contains an optional faster way to specify the Record and Byte parameters when reading or writing a random access text file from Applesoft BASIC. CALL 1005 sets these parameters to the values in the Applesoft variables named "RE" and "BY" respectively. The following example will illustrate how to use this feature. Standard DOS way: 10 PRINT CHR$(4);"OPEN RANFILE,L10" 20 BY=0 30 FOR RE=0 TO 1000 40 PRINT CHR$(4); "WRITE RANFILE,R";RE;",B";BY 50 PRINT "TEST DATA" 60 NEXT 70 PRINT CHR$(4);"CLOSE RANFILE" Diversi-DOS way (optional): 10 PRINT CHR$(4);"OPEN RANFILE,L10" 20 BY=0 30 PRINT CHR$(4);"WRITE RANFILE" 40 FOR RE=0 TO 1000 50 CALL 1005 60 PRINT "TEST DATA" 70 NEXT 80 PRINT CHR$(4);"CLOSE RANFILE" The CALL 1005 is over 60 msec faster than the standard DOS PRINT. Diversi-DOS still speeds up text file handling without CALL 1005, but using CALL 1005 makes it work even faster. Advanced Programming Information * * * * * * * * * * * * * * * * * * * * The following information is for advanced programmers only. To write the instructions to a text file for editing: LOAD HELLO 1120 ?D$;"OPEN INSTR" 1121 ?D$;"WRITE INSTR" 1165 ?D$;"CLOSE" RUN Then choose the option to send instructions to a printer. Printer Cards: The file "ASMDIV" contains the printer card data. To add a new card type, BLOAD ASMDIV and enter the card data as described below. Then BSAVE ASMDIV,A$2000,L$70FA. Then reboot the Diversi-DOS disk and select option "5". Your new card type will be listed as an option. To add a new card: Location $7800 contains the number of cards (currently $A). Change it to $B to add a new card. The first card description begins at $7840. The next begins at $7880. Each description is $40 bytes long. The first open space is at $7AC0 which is where your new card data will begin. Data is output to the printer using the following subroutine (PSLOT is the printer card slot #): POUT PHA ;PRINTER OUTPUT ROUTINE SCHECK LDA ASTATUS+(PSLOT*ASADD) AND #MSTATUS EOR #ESTATUS BNE SCHECK PLA AND #MDATA STA ADATA+(PSLOT*ADADD) RTS The printer card data format is as follows: Byte/Size Name Description $00/$20 PINIT Init routine $20/$10 PNAME Card Name $30/ $1 ---- Must be 0 $31/ $2 ASTATUS Status address $33/ $2 ASADD Slot adder $35/ $1 MSTATUS Status mask $36/ $1 ---- Unused $37/ $1 ESTATUS EOR byte $38/ $1 MDATA Data mask $39/ $2 ADATA Data address $3B/ $2 ADADD Slot adder $3D/ $3 ---- Unused The subroutine PINIT is called to initialize the printer card when BUFFER is BRUN. At the time of the call, the X-reg contains the value "N0" where N is the slot #. $36 and $37 contain $CN00. A-reg is $8D. Polling the Keyboard: After you BRUN BUFFER, location $BF87 contains the routine which checks the keyboard and printer. If you write an assembly language routine, you should JSR $BF87 every 10 msec or less. A,P are destroyed / X,Y are preserved. Note that before BRUN BUFFER, $BF78 contains an RTS. Interrupts: Diversi-DOS does not disturb $45, so interrupts will not crash Diversi-DOS. Even so, DOS disables interrupts for up to 3 seconds during an RWTS call. After you BRUN BUFFER, you can JSR $AEF0. After this, Diversi-DOS will do a CLI in RWTS every 11 msec or less. Reset Hooking: Reset should be vectored by changing $9D5E and $9D5F (not $3F0,$3F1). This insures that DOS is reset also. Text Files: The reading of text files is only speeded up if input is taken from the monitor GETLN routine (JSR $FD6A or $FD6F). Licensing Information * * * * * * * * * * * * * * * * * * * Although Diversi-DOS is copyrighted, DSR allows copying and distribution of the program subject to the following restrictions: 1. Anyone receiving a copy of Diversi-DOS must send a $25 license fee directly to DSR, Inc. within 2 weeks. 2. Each computer running Diversi-DOS must have a Diversi-DOS validation sticker attached. 3. Any company, club, or individual may charge up to $5.00 for distributing copies of Diversi-DOS, provided it is clear that an additional $25 fee must be sent directly to DSR. A catalog listing should read: "Diversi-DOS (distribution fee only) $5.00". This method of distribution offers tremendous advantages. The cost of Diversi-DOS is less than 1/2 of what it would be if distributed conventionally. Also, you can test the program before you pay. To obtain a Diversi-DOS license and validation sticker, please send $25 for each computer to: DSR, Inc. 5848 Crampton Ct. Rockford, IL 61111 815 877-1343 (Visa/MC) Note: The $25 fee covers the cost of the validation sticker only. If you would also like a new disk with the latest Diversi-DOS version, send $30. Publishers: There is no royalty fee for publishers who sell their programs with Diversi-DOS included. The only restriction is that each disk must display the Diversi-DOS "Request for Payment" message during the boot. To add this message to a disk, boot the master disk and select option #2 (add Diversi-DOS to unprotected disk). Put in your disk, and press instead of when you see the prompt "Press return for normal start program". Publishers who do not wish this message to appear on the screen can license Diversi-DOS for a $200, one-time fee for all their programs. To do this, the following message must appear in the written documentation: This disk contains a high-speed operating system called Diversi-DOS(tm), which is licensed for use with this program only. To legally use Diversi-DOS with other programs, you may send $30 directly to: DSR, Inc., 5848 Crampton Ct., Rockford, IL 61111. You will receive a Diversi-DOS utility disk with documentation. Alternatively, publishers may include the 2 Diversi-DOS files, HELLO and ASMDIV, on their disk at no charge. The disk must be initialized with standard DOS 3.3. The user then has the option of adding Diversi-DOS to the disk, and sending the $25 to DSR, or using standard DOS without paying an additional fee. Diversi-DOS is a highly modified version of DOS 3.3. DSR is licensed by Apple to distribute the DOS 3.3 code present on the Diversi-DOS master disk. However, to add Diversi-DOS to a disk, publishers must still obtain a license from Apple for DOS 3.3. For more information, call Terri Hasbrouck (408 996-1010). Diversi-DOS POKE's * * * * * * * * * * * * * * * * * * * * Initializing Data Disks: The following program modifies the Diversi-DOS INIT function. After running this program, INIT will initialize non-bootable "Data" disks with 32 more free sectors. If you boot a data disk by mistake, you will have to press . 10 POKE 42344,76 20 POKE 44723,4 30 POKE 46922,96 Reset Hook: The following POKE's will re-RUN a BASIC program when is pressed: POKE 40286,252 POKE 40287,164 Language Card Re-load: To avoid reloading a RAM card with BASIC on every boot: POKE 49107,173 Motor Start Time: To speed up DOS even more, you can change the motor start time to 1/2 sec. To do this, change the HELLO program as follows: LOAD HELLO 85 POKE 47102,236 SAVE HELLO Over 99% of disk drives will work correctly this way. However, an occasional drive will destroy disks. To restore the 1 second delay: 85 POKE 47102,216 Print Buffer Utility: After you "BRUN BUFFER", the following POKE's will modify the printing: POKE 49028,96 - Turns off output to the screen when printing POKE 49028,76 - Turns it back on POKE 44762,96 - Turns off line feed after carriage return If you have an old Integer BASIC machine with an APPLESOFT ROM card: BLOAD BUFFER POKE 32915,N (N is ROM card slot #) BSAVE BUFFER,A$8000,L$6FA If the ROM card is not in slot 0, change DOS as follows: POKE 42424,N*16+128 POKE 42432,N*16+129 If you have an Integer machine and use a RAM card in slot #0 to load Applesoft, you can still get a 4K print buffer as follows: (After BRUN BUFFER) POKE 48885,1 POKE 48975,128 POKE 48990,139 To avoid printing on the screen when you BRUN BUFFER: BLOAD BUFFER POKE 32822,190 BSAVE BUFFER,A$8000,L$6FA The following will fix the DOS Toolkit Assembler: UNLOCK EDASM.OBJ BLOAD EDASM.OBJ POKE 4542,162 POKE 4543,158 BSAVE EDASM.OBJ,A$C00,L$66C LOCK EDASM.OBJ Updates * * * * * * * * * * * * * * * * * * * This is Diversi-DOS version 2-C. "2" refers to the Master Disk version. "C" refers to the DOS version (displayed during a CATALOG). If the program is updated, all licensed users will be notified by mail. The updated disk may then be purchased for $5.00 to cover the cost of materials. Licensed users will also be notified of any future programs released by DSR. Diversi-DOS Mover routine * * * * * * * * * * * * * * * * * * * Menu option 7 will save the file "DDMOVER" onto a disk. When you BRUN DDMOVER, Diversi-DOS is moved onto a RAM card, giving more room for BASIC programs (you cannot BRUN DDMOVER after BRUN BUFFER). DDMOVER requires Diversi-DOS version C, a 16K or greater RAM card in slot #0, and Applesoft ROM on the motherboard. If these are not all present, DDMOVER has no effect. After DDMOVER, you will notice the following changes: 1. CATALOG shows "Free Sectors" 2. Integer BASIC is unavailable 3. You cannot BRUN BUFFER 4. INIT formats non-bootable disks 5. HIMEM=48896 (don't set any higher) 6. An additional DOS command "PAD" will print the address and length of the last BLOADed file. If you BRUN DDMOVER from within a program, the program is lost. The following statement will cause DDMOVER to RUN the program "HELLO" after moving DOS: 0 POKE 40206,0:?CHR$(4);"BRUN DDMOVER" If this is the first statement of a program named "HELLO", the effect is to move DOS to a RAM card, if present. If a RAM card is not present, DDMOVER returns, and the HELLO program continues. If the card is present, DOS is moved and the HELLO program is RUN again. When DDMOVER is called again, it will return, since DOS has already been moved. After this statement, IF PEEK(55) > 190, then DOS was moved. To move CORVUS hard disk DOS, boot the CORVUS DOS and do the following: BLOAD DDMOVER POKE 35766,3 POKE 35770,PEEK(48385) BSAVE DDMOVER,A$8700,L$4FA Note: Some existing programs may not work with a moved DOS (including FID, and RENUMBER). The following will fix the FID program: BLOAD FID POKE 2132,169:POKE2133,120 BSAVE DDFID,A$803,L$124E PATCH file * * * * * * * * * * * * * * * * * * * Menu option 8 will save the file "PATCH" onto a disk. BRUN PATCH converts standard DOS 3.3 into DIVERSI-DOS. This can be used to convert a running DOS to Diversi-DOS, i.e. with hard disks. If it doesn't work, try this: BLOAD PATCH POKE 36816,0 BSAVE PATCH,A$8C00,L$470 If it still doesn't work: POKE 36780,0 This second change leaves the patch area $BCDF to $BCFF open, but disables the CALL 1005 feature. Checksum Feature * * * * * * * * * * * * * * * * * * * When this disk boots, it now performs a checksum of itself. If any bytes of the program are changed, you will hear 2 beeps. This indicates a bad copy of Diversi-DOS. Note: If you modify Diversi-DOS, the menu will show version number 2-C*. The "*" shows that changes have been made. To eliminate the beeps, reboot and make a copy (option 4).