CP/M SYSTEM ALTERATION FOR RUBOUT KEY PROCESSING by Clark A. Calkins [WARNING: For this modification of CP/M use a separate copy of your CP/M distribution disk. NEVER USE YOUR CP/M DISTRIBUTION DISK ITSELF! Neither your day-to-day CP/M working disk. If something were to go wrong you can then always start over again.] The normal CP/M system has an annoying habit of not erasing a character on the screen when the rubout key is pressed. Instead it prints the character that was erased internally. This action remains from the days when teletypes were used as output devices and erasing a character from the page was not possible. If the backspace key is used instead of the rubout key, then the previous character is erased from the screen. This is the preferred action for the Morrow Micro Decision computer. The following small procedure changes the CP/M system so that the rubout key and the backspace key both erase the last character from the screen. This will not affect any of the programs that depend on these keys (like WordStar). They will execute exactly as before. In the following steps, user input is shown in [brackets] and the carriage return which follows every typed line is shown as "(cr)". 1) The first step is to generate a scratch disk to try this on. The only programs required for this procedure are DDT and SYSGEN. These can be found on your original CP/M System Disk. This disk must be a "system disk" so it can be placed in drive A. 2) Place the newly created disk in drive A and press control-C (^C) to log it in. 3) Generate a short patch program using DDT as follows. A>[DDT](cr) DDT VERS 2.2 -[A100](cr) 0100 [LHLD 6](cr) 0103 [LXI D,201](cr) 0106 [DAD D](cr) 0107 [XCHG](cr) 0108 [LXI H,171B](cr) 010B [MVI M,C3](cr) 010D [INX H](cr) 010E [MOV M,E](cr) 010F [INX H](cr) 0110 [MOV M,D](cr) 0111 [RET](cr) 0112 (cr) -[G0](cr) A>[SAVE 1 PATCH.COM](cr) A> By the way, the last DDT line reads "G" followed by zero and not "O". 4) The next step is to load a copy of CP/M into memory, change it using the patch routine created above, and then write it back to the disk so it can be used. A>[SYSGEN](cr) SOURCE DRIVE NAME (OR RETURN TO SKIP) [A] SOURCE ON DRIVE A, THEN TYPE RETURN (cr) DESTINATION DRIVE NAME (OR RETURN TO REBOOT) (cr) A>[PATCH](cr) A>[SYSGEN](cr) SOURCE DRIVE NAME (OR RETURN TO SKIP) (cr) DESTINATION DRIVE NAME (OR RETURN TO REBOOT) [A] DESTINATION ON DRIVE A, THEN TYPE RETURN (cr) FUNCTION COMPLETE DESTINATION DRIVE NAME (OR RETURN TO REBOOT) (cr) A> 5) Now test it. Type a bunch of characters and see if the rubout key erases the last character as it now should. If all went well, the system now written on your scratch disk should function as desired. Both the backspace and rubout keys have the same effect on the screen. If this did not happen, check that the procedure was followed exactly. Especially check that the same program version numbers were displayed. The patch program assumes it knows where SYSGEN puts the CP/M system in memory. The responses to SYSGEN may seem confusing at first. It is being used to read the system off of the disk and put it in memory (and leave it there). Then the patch program makes a few changes and leaves the modified system still in memory. Then SYSGEN is used again to write the system that is in memory already (a carriage return was given as a response to the first message) back to the disk. Then when you reboot (no more destination drives to write to), this system is read off of the disk and executed (as normally occurs). This time the system has been modified so it responds differently. If the new system totally crashes (or does some real strange things), check that the patch address (171B) was entered properly. Beyond that, have a friend check things for you. Before writing this new system to all of your working disks, check to be sure that WordStar, QUEST, PEARL, etc., work properly. Again, a warning: Above all, do not change your master CP/M disks. If you have any questions, don't hesitate to get in touch with me: Clark A. Calkins C.C. Software 2564 Walnut Blvd. #106 Walnut Creek, CA 94598