********************************************************************* This article is being presented through the *StarBoard* Journal of the FlagShip/StarShip, SIGS (Special Interest Groups) on the Delphi and GEnie telecommunications networks. Permission is hereby granted to non-profit organizations only to reprint this article or pass it along electronically as long as proper credit is given to both the author and the *StarBoard* Journal. ********************************************************************* - CP/M Primer #3 - By: Mike Mantino (GEnie MAIL address: MIKEM) - Welcome back! If you're still with us after reading the first two CP/M Primer articles, you've probably concluded that although the CP/M environment is a lot different from the Commodore operating system (and a bit slower on our 128's than in most CP/M machines), it is nonetheless an interesting and powerful world. This month we will add to that power and discuss ways to speed up the system and generally make life easier for you thru the use of key configurations and batch processing of commands in a variety of ways. - Let's get organized, first. Because the C-128 does not automatically boot-up in CP/M mode, we have to do it manually by loading-in the CP/M system files. Once that is done, there really isn't any need to have those files on our disk, so it makes sense to create just one CP/M BOOT disk (plus a backup). That disk should also include some important files and programs that will aid in setting up your initial parameters and getting things set correctly for the rest of your CP/M session. The files I use quite often upon boot-up are: CONF.COM, NFORMAT.COM, SUBMIT.COM, DIR.COM, DATE.COM, SHOW.COM, C1571.COM, NSWEEP.COM, NULU15.COM, INITDIR.COM, TYPE.COM, and KEYFIG.COM. CONF.COM is very important to us C-128 folks, because we need to adjust a few parameters every time we boot-up CP/M. For instance, by turning off the 40-column display, we can gain a speed increase of about 10%. This is accomplished, simply enough, by typing: conf 40col=off. We can change a wide variety of things using CONF.COM which will enhance the way we do things. All of the parameters that follow require that you precede them with: conf. You can, however, string a number of them together in one command line which starts with: conf. 40col=off - As stated, this turns off the 40-column display. To turn it back on, you would use: 40col=on. feel=0 - This parameter adjusts the way the keyboard 'feels'. The keyboard is scanned with the same interrupts used in handling the serial port, so as the BAUD rate is increased, the number of keyscans per second is increased. Because of this, we use FEEL to set the number of interrupts that are *not* used between each one that *is*. The default values for the different baud rates are set to keep about 300 keyscans per second. For instance, at 300 baud, the FEEL is defaulted to 2. baud=75 - The modem port baud rate adjustment can be changed to any of these values: 50,75,110,134,150,300,600,1200. I have found that 75 seems to be both a fast and reliable speed. Remember that changing this also changes the FEEL. back=6 - Change the background color by supplying the appropriate color number. bord=6 - Same as above, but for the border color. char=9 - Same as above, but for the character color. cursor=fast 7 - For the 80-col display cursor. This example sets up the cursor to be a flashing (fast or slow) underline. You may set it up as "solid" instead of fast or slow, and also include the optional start and end scan line parameters. Examples: cursor=solid 0 4 or cursor=slow 4. date= - This parameter was reviewed in CP/M Primer #2. dump xxxx - Allows you to dump 16 bytes of memory starting from the HEX address supplied (xxxx). This is RAM BANK 0, *not* the TPA memory. map - This will show both of the character sets. parity= - The options in which the serial data can be sent or received, normally defaulted to 8 bits/no parity/1 stop bit (8N1). poke xxxx - This powerful command allows you to change bytes within the operating system (again, BANK 0, *not* the TPA). The range you can change is 1000 to FEFF. (Below 1000h is ROM) Example: poke 4000=21 22 23 24 25 (will write 21 to 4000, 22 to 4001, etc). prt1=cbm - Specifies either CBM or ASCII sent to the printer on the serial port. A secondary address may be added to allow different printer and interface configurations. Note: If your printer/interface allows a transparent mode and you find you are unable to print a dbl quote mark ("), use: prt1=ascii x (where x is the secondary address, usually 4, 5, or 7). repeat=0 - If a 0 is specified here, then your keys will not repeat. Otherwise the lower the number, the faster the repeat. vol=0 - You can set the volume of the keyclicks with this parameter. If a 0, you will turn them off. 15 will set the highest volume, and the default is a 6. Okay, so that's the run-down on our CONF.COM options. Now we will make it easy to use. As previously stated, we can string a number of these parameters together on the same command line. Every time I boot-up CP/M I send the following CONF commands: conf 40col=off,cursor=solid 6,back=6,char=9,vol=0,repeat=1,feel=1. Easy enough, but still not the best way to do things, since you need to type this in at each system reset. We will see in a few minutes that we can make that command line be executed automatically upon booting the CP/M system. Before going into how that is done, let's discuss one more of the modular utilities we have at our disposal so that we can include both of them into the automatic process (batch processing). - The little utility called c1571.com is used specifically to turn off disk verify's on any or all of your drives, thus gaining additional speed. The format for the utility is: c1571 [drive letter, drive letter, drive letter, etc]. So, if you had two 1571's (drives A and B) and a 17xx RAM expansion module, plus the virtual drive E, your format might look like: c1571 [a,b,e,m]. - Now that we know how to set up our system to allow it to run more efficiently, and we have an idea of what parameters we want to customize, let's store those things in such a way that they are brought up automatically and directly after the CP/M system is loaded in. The reason we can do this is because every time we load CP/M into the 128, it looks for a special file called PROFILE.SUB. If it is present, CP/M+ will then look for and run a file called SUBMIT.COM which in turn will go to the PROFILE.SUB file and execute all the commands you have put into it. Given that we now have SUBMIT.COM on our disk, and know what commands we need to put into the PROFILE.SUB file, let's do it. All it takes to create any .SUB file (in this case, PROFILE.SUB) is an editor or word processor of some sort. Both ED.COM and WordStar work well, and PIP can also be used (but not if you want to do any editing). Here is an example of what a PROFILE.SUB file should look like: ^z c1571 [a,b,e,m] conf 40col=off,cursor=solid 6,back=6,char=9,vol=15,repeat=1,feel=1 a1: mex Note that each command is given a separate line in the .SUB file. The above PROFILE.SUB file will turn off the disk verify on drives a, b, e, and m. It will then run CONF.COM and set up our parameters and colors, and after that, will load MEX.COM from drive A, user area 1 (A1:). After we create this file using an editor and save it to disk giving it the filename PROFILE.SUB, it will be executed immediately after CP/M is booted up. SUBMIT.COM can also be used to run any other file that has the .SUB extension, but you will need to manually do this using the format: submit . For instance, if we had named that PROFILE.SUB file FAST.SUB, it would not be executed initially with the CP/M system. But we could still execute all of our commands contained in the file by manually typing: submit fast. SUBMIT.COM is a very powerful tool with a numerous amount of varied uses. Just about anything we manually type in at the keyboard can be included in a .SUB file and executed using SUBMIT.COM. We can even include other SUBMIT commands inside other .SUB files, linking these together to do a number of tasks for us, like copying files from drive to drive using PIP inside the .SUB file. The number of options and ideas available for SUBMIT.COM is endless, but this article is geared toward familiarizing one with the CP/M environment in general. If you plan on doing much with CP/M, learning how SUBMIT.COM works will greatly enhance your systems efficiency and save you bunches of time. - The first thing I had done when I acquired my C-128 was to learn how to use the KEYFIG.COM utility. I wasn't very impressed with the purple character color that came up with the system; changing it manually was getting old, quickly; and I had no idea what a PROFILE.SUB was. I was also used to having programmable function keys, true Commodorian that I am. KEYFIG.COM allowed me to do both, easily. It also implants these things directly on the disk(s), and you never have to use the resident keyboard editor and function editor again. Since I happen to like blue characters on a black background, I'll explain the method of doing just that. Afterwards, we'll redefine the British Pound key so that we can make better use of it. First, boot-up KEYFIG.COM and find yourself another CP/M disk that you'd like to put a few changes into. Initially, you will be asked if you want any HELP, and since it's hard to turn down the first time you use a program, go ahead and answer 'Sure!'. (Actually, you must answer with a Y for YES. Boring, isn't it?). After scrolling up and down the HELP options with the cursor keys (the ones at the top of the keyboard, *not* the two keys next to SHIFT), hit and you will be given the appropriate HELP file. When you've had enough, choose '--> done help <--' and we will start messing things up. Now, you will be given three options to choose from as far as sources of the key definitions. We can take them from the DEFAULT definitions, the definitions on our CP/M disk, or the CURRENT definitions. Since we are going to be saving the set-up to the disk, we may as well take them from the disk in the first place. After choosing the CP/M disk option, you will be shown three more options: EDIT KEYS, ASSIGN COLORS, and EXIT/SAVE WORK. We'll do the colors first, so choose that. The next options are for 40-Column or 80-Column screens. Choose the appropriate one, and you will be shown two nifty pallettes of colors. Looks nice, huh? But what the heck does LOGICAL and PHYSICAL have to do with colors? Well, the LOGICAL colors are the key-defined colors. In other words, that little purple box in the LOGICAL color map (letter e) is the one we want to change to blue. So, since the program is now asking you for a letter found in the LOGICAL map, tell it you want 'e'. Then it's going to ask for a letter corresponding to a color in the PHYSICAL color map. The blue box is the one we want, and it's labeled with the letter 'o', so respond with that. Now we can go ahead and make the color change semi-permanent and save it to disk. Choose the option: done logical<-->physical colors. Now choose to: Exit and save your work file on CP/M disk. The colors are now imbedded, and the program will ask if there is anything else you want to fool around with. Tell it 'Y' again, and we can set up that British Pound key that we hardly ever use. We are now back at the initial three options, but this time we want to EDIT KEYS. Choosing that will give us a list of values for some key on our keyboard. The NORMAL value is the unshifted value of the key that is labeled. The others are SHIFTED, CONTROL, and CAPS LOCK. Now, since we want to change the British Pound key, go ahead and press it. You should see all the values change. Starting to make sense? You can scroll up or down these values in order to set it up for a change in that appropriate value. Since we want to be able to just press the British pound key (one keystroke) and get something other than that symbol, cursor around until the lightbar is resting on the NORMAL value. Now hit the key. The next options are fairly clear, so select the option to ASSIGN A STRING. You can now type in anything you want the British Pound key to display instead of the symbol. I have it changed so that it displays: dir [user=all,drive=all] That way, whenever I'm at a CP/M command prompt, I can hit just the British Pound key and get a directory of all files on all drives in all user areas of each disk. You can redefine the SHIFTED value of the same key so that it displays something entirely different. The same for the CONTROL value and CAPS LOCK value. Then whenever you hit SHIFT and the British Pound key, the string that you changed is displayed, and so on. Once you have finished defining keys, select the 'exit string edit' option and save the string to disk. Every time you boot up that particular disk, all of your redefined colors and keys will be instituted without any more input from you. KEYFIG.COM helps in other ways that I won't cover here, so do read through the HELP files for information on the other options available. One interesting aspect of KEYFIG is its ability to actually describe what it can't display. To refer to the left arrow key which is there in the upper left corner of the keyboard, KEYFIG describes it as the LEFT ARROW NEXT TO 1. To describe the DELETE key, which has no displayable ASCII code, KEYFIG refers to it as RUBOUT. Lastly, remember that the CAPS LOCK key is not operative under CP/M, so you must substitute the combination of C= and SHIFT keys for it. If there is anything contained in this article or previous CP/M Primer articles that you still do not understand or that I haven't made clear enough, or if you have a question about some other area of CP/M-land, stop by GEnie's Commodore *FlagShip* Roundtable at page 625, or the CP/M Roundtable at page 685 and let us know. There are a good number of people in both places that are more than willing to help! - Mike Mantino (GEnie Address: MIKEM) For our DELPHI CP/M users, be sure to check with GARYWAYNE, the CP/M SYSOP for the DELPHI *FlagShip*.