DOCUMENTATION for SD-QUIET.COM 11/11/86 S.H. Isaac I usually call this modified directory program D.COM, but for now I called it this name to indicate that it quiets the keyboard chirp of the Kaypro 2-84. It also changes the cursor from a blinking block to a blinking underline. How it will work on other computers remains to be seen. If it doesn't do what you want, check your computer's manual & find out what bytes should be sent to the keyboard and/or the video controller (it has some other name, but I forget what it is). The byte 8 is sent to the keyboard and quiets it. Then another byte is sent to the video to select what aspect of it to deal with; the byte 0A selects cursor nature( height, blink rate, etc). Then the byte 6F is sent to the video to tell it to make the cursor a fast blinking under- line. The sequence of bytes is: 3E08 D305 Quiets keyboard. 3E0A D31C Selects cursor nature as video aspect to work on. 3E6F D31D Sends byte to change cursor. [I put the same sequence in WordStar.COM, at address 300h (in the user- patching area), and followed it immediately with this one: 0EOE 1E01 CD0500 This logs on to drive B before jumping (via C3FC2C) back to where WordStar was going in the first place] I got the cursor changing from an article in PROFiles magazine, sorry I forgot which one, but it was sometime between December 1984 and now (December 1986). The keyboard quieting was based on something from the Kaypro manual, and maybe on something I read elsewhere. Probably the directory program I patched was SD.COM, which mau have come from a bulletin board. It was chosen because it has a nice big empty area, which is around address 860h when viewed with EDFILE.COM or DDT.COM. SD.COM starts with a JMP to address 113h. What we do is change that to JMP to our quieting-and-cursor-changing statements at address 0860, then to JMP to 113 where the program can go on about its business. Subsequently I used DU.COM to make this modified directory program auto-execute on a cold start or reset. Put the command, such as D *.* $D at byte 08h on sector 2, track 0 ; put the length of the command, in this example 8 (bytes long), at byte 07h, just preceding the command. Clear out any junk (such as DRI's copyright notice) after the command you want autoexecuted, if it interferes with proper operation of the command. DON'T blank out anything if you are not sure of what you're doing. Feel free to change this documentation or the program & pass it around. If you can, let me know what you've come up with. Here's how to modify SD.COM, a (public domain?) directory program, using EDFILE.COM. The latter can be found on SIG/M volume 228, and maybe on bulletin boards also. My comments are in curly braces, {like this}. A0>SW B:SD.COM NSWEEP - Version 2.07 07/17/1984 (c) Dave Rand, 1983, 1984 Edmonton, Alberta Drive B0:SD .COM 4K in 1 files. 58K free. 1. B0: SD .COM 4K : C Copy to (filespec)? A:SD-QUIET.COM V Verifying --> file ok. 1. B0: SD .COM 4K : X A0> A0>B:EDFILE SD-QUIET.COM Vers: 01-10-84; by: J.C.Kaltwasser & M.J.Mosko, K3RL File: SD-QUIET.COM Record: 00000 (0000H) LOF: 00018 (0012H) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 0123456789ABCDEF -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- ---------------- 0100 - C3 13 01 53 44 20 34 2E 34 20 2D 20 32 38 66 65 >C..SD 4.4 - 28fe< 0110 - 62 38 32 21 00 00 39 22 54 09 31 54 09 0E 0C CD >b82!..9"T.1T...M< 0120 - 05 00 7D 32 17 09 FE 20 1E FF 0E 20 D4 0E 07 32 >..}2..~ . . T..2< 0130 - 0B 09 32 07 09 32 F2 08 0E 19 CD 0E 07 32 0A 09 >..2..2r...M..2..< 0140 - 3C 32 51 08 21 5C 00 7E B7 C2 50 01 3A 0A 09 3C ><2Q.!\.~7BP.:..<< 0150 - 77 21 80 00 46 23 05 FA CD 01 7E FE 24 C2 55 01 >w!..F#.zM.~~$BU.< 0160 - 2B 7E 23 FE 20 C2 55 01 EB 13 05 FA CD 01 1A FE >+~#~ BU.k..zM..~< 0170 - 20 CA 69 01 21 45 08 0E 04 23 0D CA 87 01 BE C2 > Ji.!E...#.J..>B< ? {Enter H at the ? prompt, to get the Help shown below} Read/Edit File Utility Functions: A - Address to dump B - Dump at beginning C - Continue Search E - Enter Edit Mode H - This help list M - Expanded Help list O - Set address offset Q - Quit this program R - Read & dump record S - Search for string Z - Dump at end of file CR - (+/=) - Adv record (-/_) - Decr record Edit Mode Functions: ^E - Toggle data fields ^W - Write buffer out ^X - Abort Edit Mode ^J - Cursor Down ^K - Cursor Up ^H - Cursor Left ^L - Cursor Right File: SD-QUIET.COM Record: 00000 (0000H) LOF: 00018 (0012H) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 0123456789ABCDEF -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- ---------------- 0100 - C3 13 01 53 44 20 34 2E 34 20 2D 20 32 38 66 65 >C..SD 4.4 - 28fe< 0110 - 62 38 32 21 00 00 39 22 54 09 31 54 09 0E 0C CD >b82!..9"T.1T...M< 0120 - 05 00 7D 32 17 09 FE 20 1E FF 0E 20 D4 0E 07 32 >..}2..~ . . T..2< 0130 - 0B 09 32 07 09 32 F2 08 0E 19 CD 0E 07 32 0A 09 >..2..2r...M..2..< 0140 - 3C 32 51 08 21 5C 00 7E B7 C2 50 01 3A 0A 09 3C ><2Q.!\.~7BP.:..<< 0150 - 77 21 80 00 46 23 05 FA CD 01 7E FE 24 C2 55 01 >w!..F#.zM.~~$BU.< 0160 - 2B 7E 23 FE 20 C2 55 01 EB 13 05 FA CD 01 1A FE >+~#~ BU.k..zM..~< 0170 - 20 CA 69 01 21 45 08 0E 04 23 0D CA 87 01 BE C2 > Ji.!E...#.J..>B< ?RECORD=14 {Enter R at the ? prompt, EDFILE will display RECORD=, then enter 14 } File: SD-QUIET.COM Record: 00014 (000EH) LOF: 00018 (0012H) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 0123456789ABCDEF -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- ---------------- 0800 - 45 20 6F 6E 20 20 20 2D A0 0D 0A 2D 3E 44 72 69 >E on - ..->Dri< 0810 - 76 65 A0 2C 20 75 73 65 72 A0 20 63 6F 6E 74 61 >ve , user conta< 0820 - 69 6E 73 A0 4B 20 69 6E A0 20 66 69 6C 65 73 20 >ins K in files < 0830 - 77 69 74 68 A0 4B 20 66 72 65 E5 55 73 65 72 20 >with K freeUser < 0840 - A3 00 09 09 09 09 41 44 7D E7 07 E7 07 72 08 80 >#.....AD}g.g.r..< 0850 - 00 00 53 44 20 20 20 20 20 20 44 49 52 00 00 00 >..SD DIR...< 0860 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >................< 0870 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >................< ?Edit Record {See all the zeros at address 0860?. That's where we'll put the patch. Enter E to edit this record} {EDFILE will redisplay this record (14) with the cursor on the first byte (45 hex), located at 0800. Move the cursor straight down to byte 0860, the first of the row of 00s. Then just type in the replacement bytes as shown below} File: SD-QUIET.COM Record: 00014 (000EH) LOF: 00018 (0012H) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 0123456789ABCDEF -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- ---------------- 0800 - 45 20 6F 6E 20 20 20 2D A0 0D 0A 2D 3E 44 72 69 >E on - ..->Dri< 0810 - 76 65 A0 2C 20 75 73 65 72 A0 20 63 6F 6E 74 61 >ve , user conta< 0820 - 69 6E 73 A0 4B 20 69 6E A0 20 66 69 6C 65 73 20 >ins K in files < 0830 - 77 69 74 68 A0 4B 20 66 72 65 E5 55 73 65 72 20 >with K freeUser < 0840 - A3 00 09 09 09 09 41 44 7D E7 07 E7 07 72 08 80 >#.....AD}g.g.r..< 0850 - 00 00 53 44 20 20 20 20 20 20 44 49 52 00 00 00 >..SD DIR...< 0860 - 3E 08 D3 05 3E 0A D3 1C 3E 6F D3 1D C3 13 01 00 >>.S.>.S.>oS.C...< 0870 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >................< ? {When the bytes are all changed correctly, enter CTRL-w. This writes the changed record to the disk, replacing the one that was there before in the file. EDFILE then redisplays it.} File: SD-QUIET.COM Record: 00014 (000EH) LOF: 00018 (0012H) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 0123456789ABCDEF -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- ---------------- 0800 - 45 20 6F 6E 20 20 20 2D A0 0D 0A 2D 3E 44 72 69 >E on - ..->Dri< 0810 - 76 65 A0 2C 20 75 73 65 72 A0 20 63 6F 6E 74 61 >ve , user conta< 0820 - 69 6E 73 A0 4B 20 69 6E A0 20 66 69 6C 65 73 20 >ins K in files < 0830 - 77 69 74 68 A0 4B 20 66 72 65 E5 55 73 65 72 20 >with K freeUser < 0840 - A3 00 09 09 09 09 41 44 7D E7 07 E7 07 72 08 80 >#.....AD}g.g.r..< 0850 - 00 00 53 44 20 20 20 20 20 20 44 49 52 00 00 00 >..SD DIR...< 0860 - 3E 08 D3 05 3E 0A D3 1C 3E 6F D3 1D C3 13 01 00 >>.S.>.S.>oS.C...< 0870 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >................< ? { Now we enter B at the ? prompt; it dumps at the Beginning of the file} File: SD-QUIET.COM Record: 00000 (0000H) LOF: 00018 (0012H) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 0123456789ABCDEF -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- ---------------- 0100 - C3 13 01 53 44 20 34 2E 34 20 2D 20 32 38 66 65 >C..SD 4.4 - 28fe< 0110 - 62 38 32 21 00 00 39 22 54 09 31 54 09 0E 0C CD >b82!..9"T.1T...M< 0120 - 05 00 7D 32 17 09 FE 20 1E FF 0E 20 D4 0E 07 32 >..}2..~ . . T..2< 0130 - 0B 09 32 07 09 32 F2 08 0E 19 CD 0E 07 32 0A 09 >..2..2r...M..2..< 0140 - 3C 32 51 08 21 5C 00 7E B7 C2 50 01 3A 0A 09 3C ><2Q.!\.~7BP.:..<< 0150 - 77 21 80 00 46 23 05 FA CD 01 7E FE 24 C2 55 01 >w!..F#.zM.~~$BU.< 0160 - 2B 7E 23 FE 20 C2 55 01 EB 13 05 FA CD 01 1A FE >+~#~ BU.k..zM..~< 0170 - 20 CA 69 01 21 45 08 0E 04 23 0D CA 87 01 BE C2 > Ji.!E...#.J..>B< ?Edit Record {Enter E to Edit the record. It will be be redisplayed with the cursor on the first record in the hex field, at address 0100. That byte is C3, which means jump. We want to jump, all right, but to the address 0860, where the patch starts. Move the cursor right to the byte 13, at address 0101. Then type in 60 and then 08. Do not change anything else, just put 60 at byte 101 and 08 at byte 102. The display with the two changed bytes should look like the below.} File: SD-QUIET.COM Record: 00000 (0000H) LOF: 00018 (0012H) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 0123456789ABCDEF -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- ---------------- 0100 - C3 60 08 53 44 20 34 2E 34 20 2D 20 32 38 66 65 >C`.SD 4.4 - 28fe< 0110 - 62 38 32 21 00 00 39 22 54 09 31 54 09 0E 0C CD >b82!..9"T.1T...M< 0120 - 05 00 7D 32 17 09 FE 20 1E FF 0E 20 D4 0E 07 32 >..}2..~ . . T..2< 0130 - 0B 09 32 07 09 32 F2 08 0E 19 CD 0E 07 32 0A 09 >..2..2r...M..2..< 0140 - 3C 32 51 08 21 5C 00 7E B7 C2 50 01 3A 0A 09 3C ><2Q.!\.~7BP.:..<< 0150 - 77 21 80 00 46 23 05 FA CD 01 7E FE 24 C2 55 01 >w!..F#.zM.~~$BU.< 0160 - 2B 7E 23 FE 20 C2 55 01 EB 13 05 FA CD 01 1A FE >+~#~ BU.k..zM..~< 0170 - 20 CA 69 01 21 45 08 0E 04 23 0D CA 87 01 BE C2 > Ji.!E...#.J..>B< ? { Another CTRL-w will write this record (with the modified initial jump), to your disk file, and redisplay it.} File: SD-QUIET.COM Record: 00000 (0000H) LOF: 00018 (0012H) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 0123456789ABCDEF -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- ---------------- 0100 - C3 60 08 53 44 20 34 2E 34 20 2D 20 32 38 66 65 >C`.SD 4.4 - 28fe< 0110 - 62 38 32 21 00 00 39 22 54 09 31 54 09 0E 0C CD >b82!..9"T.1T...M< 0120 - 05 00 7D 32 17 09 FE 20 1E FF 0E 20 D4 0E 07 32 >..}2..~ . . T..2< 0130 - 0B 09 32 07 09 32 F2 08 0E 19 CD 0E 07 32 0A 09 >..2..2r...M..2..< 0140 - 3C 32 51 08 21 5C 00 7E B7 C2 50 01 3A 0A 09 3C ><2Q.!\.~7BP.:..<< 0150 - 77 21 80 00 46 23 05 FA CD 01 7E FE 24 C2 55 01 >w!..F#.zM.~~$BU.< 0160 - 2B 7E 23 FE 20 C2 55 01 EB 13 05 FA CD 01 1A FE >+~#~ BU.k..zM..~< 0170 - 20 CA 69 01 21 45 08 0E 04 23 0D CA 87 01 BE C2 > Ji.!E...#.J..>B< ? {Enter Q to quit EDFILE; your patched program should be ready to use} A0> Good luck. Let me know of any problems or comments. Sheldon H. Isaac, 5339 Greene Street, Philadelphia, PA 19144 215-842-0863 December 15, 1986