..L--!----!----!----!----!----!----!----!----!----!----!----!----R .mt 4 .mb 4 .he CP/M 2.2 on Pro-Comp/8 User's Manual Page # .fo .uj 0 ..TOC Table of Contents PART I - CP/M User's Guide How to get the system running without reading the manual.......2 Loading the diskette...........................................4 Copying the distribution diskette..............................4 Special features of the Serial B port..........................7 A word about registration cards and software support...........8 Utilities APC8.........................................................8 COMM.........................................................9 COPY.........................................................9 CPM22x......................................................10 FKSET.......................................................10 FORMAT......................................................11 MENU........................................................12 MOVCPM......................................................12 SETFMT......................................................12 SETTOD......................................................13 SETUP.......................................................13 SINGLEA.....................................................20 SPOOL.......................................................20 STAT........................................................22 SYSGEN......................................................23 TOD.........................................................23 USRINT......................................................23 PART II - CP/M Implementation Notes BIOS source code information..................................24 Command line options for COPY, FORMAT, and SYSGEN.............24 Terminal function key definition in SETUP.....................25 Technical aspects of the function key handler.................25 Technical aspects of the SPOOL program........................26 Booting from drives other than A:.............................27 Peripheral device drivers.....................................27 Including user-written interrupt handlers.....................28 Appendices Appendix A - Additional reserved locations in Page 0........30 Appendix B - Generating a system disk on another format.....31 Appendix C - Diskette format and layout.....................33 Appendix D - Error message summary..........................36 Appendix E - Mode area listing..............................41 Appendix F - Location of code within the BIOS...............42 Appendix G - Default values in the interrupt table..........44 .pa ** NOTE ** This manual applies to versions of the Pro-Comp/8 CP/M re vision 2.23 dated 12/30/82 and to the ROM Monitor revision 1.11 dated 09/10/82. If you are running an earlier revision of either software product, not all information in this manual may apply to you. In that event, you should contact your dealer to purchase a software update. All material in this manual pertains to both the 8" and the 5 1/4" versions of the software unless specifically noted otherwise in the text. This manual is divided into two parts. This first part gives general information on the installation, configuration, and day- to-day usage of the CP/M and computer. The second part gives in formation useful to assembly-language programmers and persons wishing to use the various system functions available only in the Pro-Comp implementation of CP/M. PART I - CP/M User's Guide .uj 1 How to get the system running without reading the manual First, examine the diskette package and make sure that: a) There is a diskette labeled 'CP/M 2.23 on Pro-Comp/8' in it. b) That the diskette appears physically undamaged. Second, you will need to have a properly configured Pro- Comp/8 system. If you purchased a packaged system from Pro-Comp or an authorized dealer, the system will be properly configured as delivered. However, if you purchased the Pro-Comp/8 processor and the CP/M package only, you should consult the other manuals en titled 'Pro-Comp/8 Hardware User's Manual' and 'ROM Monitor for Pro-Comp/8 User's Manual' to ascertain if your boards are properly configured and functional. The minimum hardware required to run this version of CP/M is: a) Pro-Comp/8 processor card b) One floppy disk drive (two drives are STRONGLY suggested) c) One serial ASCII terminal connected to the Serial B port of the processor card d) The terminal should be set for 8 data bits, 1 stop bit, no parity, 9600 baud (Other baud rates are available by special order), full duplex, and on line Next, make SURE that the CP/M system diskette is write- protected. This is indicated by there being a notch about 1/4 inch deep and 2 inches from the corner of the diskette on the edge away from the label. For 8 inch diskettes, this notch should be un covered to write protect the disk. For 5 inch diskettes, the notch must be covered to write protect the disk. When the disk is write protected it cannot be written to by the computer. Never write any data on a master diskette so that it may be used as a known starting point in the future and to avoid possible damage to it. Remove any disks that may be present and leave the disk drive doors open. NEVER turn your computer on or off when there are diskettes in the drives. Turn on the power to your terminal. Allow it to warm up before powering up the computer and disk drives. Then turn on the computer and disk drives, in that order. Press the RESET button, located on the front of the computer cabinet. At this time, you should determine if your computer is con figured for 'autoboot'. This may be determined from the packing list, a label on the back of the computer, or by contacting your dealer. Several of the following sections require you to take different actions depending on whether or not your computer is configured for autoboot. If you have an autoboot system, ignore the following para graphs and proceed directly to the section entitled 'Loading the diskette'. If you do NOT have an autoboot system, the little red light(s) on the disk drive(s) should be glowing dimly at this time. If all the lights are lit to full brightness, you probably have a disk drive cable connected backwards or your drive is configured incorrectly. In any event, if the lights are fully lit, check your hardware configuration as described in the 'Pro-Comp/8 Hardware User's Manual'. Your computer terminal should now output the message 'Pro- Comp/8 1.xx', where 'xx' is the revision number of the ROM Moni tor. The next line should say 'RAMTOP 00:FFFF', indicating that the computer's memory is installed and functioning properly. The following line should simply contain an exclamation mark (!). If you have this display on your terminal, go to the section entitled 'Loading the diskette'. Otherwise, read on and we'll correct your problems. If the terminal displayed something other than the above check for the following conditions: a) Is the terminal set for no parity? b) Is the terminal set to the correct baud rate? (The baud rate for the processor card is set at the factory to 9600 baud unless a special baud rate was ordered). c) Is the terminal set for 8 data bits and one stop bit? If the terminal did not display anything, check the following items: a) Is the terminal set for full duplex? b) Is the terminal set on line? c) Is the terminal connected properly to the computer? (It should be connected to the Serial B port. See the hardware manual for details on the connector pinout.) If you found anything amiss in the above items, correct it and press the RESET button to try again. If you couldn't find anything wrong or RESET still doesn't do anything, contact your dealer for more assistance or to arrange for a service call. .. do a .pa here if not default page break Loading the diskette At this time, you should insert the CP/M diskette in the drive. If you have more than one diskette drive, insert the disk ette in the drive jumpered as drive 0 (also known as the A: drive) and gently close the drive door. If your system is configured for autoboot, this is the drive with the red light fully ON. The A: drive is usually the leftmost one. The diskette must be oriented properly for the drive to function. With all drives sold by Pro- Comp, the diskette's label should face the drive door and should be the end of the diskette that is closest to the opening. If your system is configured for autoboot, skip the rest of this paragraph and proceed to the next paragraph. Otherwise, press the RESET button and release it. The disk drive should now make some noises and the red light should flicker, indicating drive activity. If it does not, make sure that your disk drive is jumpered correctly. Also make sure that the drive you put the diskette in was actually the A: drive. The CP/M operating system should now 'sign on' with the mes sage shown below. 64K CP/M-80 on Pro-Comp/8 Rev. 2.23-8" (for 8" drives) -- or -- 64K CP/M-80 on Pro-Comp/8 Rev. 2.23-5" (for 5" drives) Copyright (C) 1982 Pro-Comp Systems, Inc. A> At this point, with your CP/M up and running, the first thing you should do is prepare a backup diskette, so that you may store this master diskette safely away. Copying the distribution diskette In this section, we will use the FORMAT and COPY programs. These programs are completely documented in another section of this manual, but for now just follow the procedure given below. From this point on we will use the following convention to dif ferentiate between what you should type on the keyboard and the computer's responses. User input will be in bold face and program output will be in standard face. Also, we will use the symbol  to designate the pressing of the Carriage Return key. This key is sometimes labeled NEW LINE or ENTER on your terminal. When you see this symbol, press your terminal's RETURN key. The following interactions duplicate the terminal display during the formatting of a new diskette and the copying of the distribution diskette data onto the new diskette, thereby creating a backup of the distribution diskette. Two procedures are shown, one for 8 inch disks and one for 5 inch disks. For systems with 8 inch diskettes, the new diskette is formatted in 'Extended den sity' because the CP/M system will not fit on a Single or Double density diskette, which holds less data. For all systems, the "M" option for COPY is selected to avoid duplication of the empty tracks on the master diskette and a full verify rechecks that the diskette can be read without errors. Remember, bold face indicates characters you should type in. Procedure for systems with 8 inch disk drives First, place a blank single sided diskette in drive B:. If your diskettes have a write enable notch on the edge furthest from the label and about 2 inches from the side, cover it with the tab provided or a piece of opaque tape to allow the computer to write on the diskette. A>FORMAT CP/M FORMAT Revision 2.23-8" - 12/30/82 Disk drive: (A/B/C/D or Control-C to REBOOT)? B Single, Double, or Extended density: (S/D/E)? E Formatting the Whole disk or System tracks only: (W/S)? W Press to format EXTENDED density disk in drive B: "N" for new parameters, or "E" to exit:  Disk now being formatted - Press "ESC" to abort. Each "*" is one track formatted and verified. [ 0 ! 1 ! 2 ! 3 ! 4 ! 5 (etc.) ******************************************************** (etc.) Press to format EXTENDED density disk in drive B: "N" for new parameters, or "E" to exit: E Place system disk in drive A: and press to reboot...  A>COPY CP/M COPY Revision 2.23-8" - 12/30/82 Enter option: (A/M/V or H for help, E to exit)? M Enter source drive name: (A/B/C/D or makes ... A to B)?  Full verification or quick copy: (F/Q)? F Place source disk in drive A:, destination disk in drive B:, and press to copy, "N" for new parameters, or "E" to exit:  Copy in progress - Press "ESC" to abort. Each "*" is one track copied and verified. [ 0 ! 1 ! 2 ! 3 ! 4 ! 5 (etc.) ********************** (etc.) Operation complete. NO errors were detected. Place source disk in drive A:, destination disk in drive B:, and press to copy, "N" for new parameters, or "E" to exit: E Place system disk in A: and press to reboot...  A> Procedure for systems with 5 inch disk drives First, place a blank double sided diskette in drive B:. Make sure that the write enable notch on the edge furthest from the label and about 2 inches from the side is uncovered. This will allow the computer to write on the diskette. A>FORMAT CP/M FORMAT Revision 2.23-5" - 12/30/82 Disk drive: (A/B/C/D or Control-C to REBOOT)? B Press to format the disk in drive B:, "N" for new parameters, or "E" to exit:  Disk now being formatted - Press "ESC" to abort. Each "*" is one track formatted and verified. [ 0 ! 1 ! 2 ! 3 ! 4 ! 5 (etc.) ******************************************************** (etc.) Press to format the disk in drive B:, "N" for new parameters, or "E" to exit: E Place system disk in drive A: and press to reboot...  A>COPY CP/M COPY Revision 2.23-5" - 12/30/82 Enter option: (A/M/V or H for help, E to exit)? M Enter source drive name: (A/B/C/D or makes ... A to B)?  Full verification or quick copy: (F/Q)? F Place source disk in drive A:, destination disk in drive B:, and press to copy, "N" for new parameters, or "E" to exit:  Copy in progress - Press "ESC" to abort. Each "*" is one track copied and verified. [ 0 ! 1 ! 2 ! 3 ! 4 ! 5 (etc.) ************************************ (etc.) Operation complete. NO errors were detected. Place source disk in drive A:, destination disk in drive B:, and press to copy, "N" for new parameters, or "E" to exit: E Place system disk in A: and press to reboot...  A> If you get the error message '** Disk format mismatch! **' it usually indicates that you are trying to copy from a single sided diskette to a double sided diskette, or vice versa. To copy onto a diskette with a different number of sides, use the SYSGEN and PIP utilities described below and in the Digital Research manual. The step-by-step breakdown for this method is listed in Appendix B. .pa If any errors are encountered in the procedure above, refer to Appendix D as needed for further explanation, and repeat the entire procedure with another diskette. When the procedure is com pleted you should remove the original diskette from the A: disk drive and store it away in a safe, dry place. Take the diskette out of the B: drive and insert it into the A: drive. Now, press Control-C (hold down the Control key while pressing the C key). The diskette light should come on for a few seconds and your terminal should output 'A>'. If it does not, you probably have done something wrong while copying the above diskette. Repeat the steps above to try again. Congratulations! Your new copy of CP/M is now up and running. You should review the section of this manual dealing with the SETUP program next. The SETUP program allows you to set various parameters in the system. Thus, you can customize the system (within limits) without having to program in assembly language. Well, now that you've gotten the software running without reading any manuals, how about reading the manuals? We would suggest that you next read the remainder of this manual, followed by reading the sections of the Digital Research manual entitled 'An Introduction to CP/M Features and Facilities', and possibly 'CP/M 2 Interface Guide' if you are interested in writing as sembly-language programs. You should then review these instruc tions from cover to cover (it won't take too long), and refer back to the indicated sections of the Digital Research manual. Special features of the Serial B port The Serial B port (usually the console) driver in this BIOS uses interrupts. This gives you a type-ahead buffer of up to 256 characters. This allows you to 'anticipate' questions and answer them before they appear on your terminal. The characters you type in are only displayed (echoed) when they are received by the program that asked for them. In some instances, you will discover that you really didn't want to type in what you typed in. To solve this problem, a 'Buffer Flush' key has been defined. You may assign this key to any key on your keyboard with the SETUP util ity. When you press the 'Buffer Flush' key, all data typed by the user, but not yet processed by the program, will be discarded. There is another key, called the 'Abort' key, which is perma nently assigned to your terminal's BREAK key. It may, however, be disabled by running the SETUP program. This key, if enabled, will output the following message when pressed: @xxxx Option (C/W/M)? The '@xxxx' portion of the message displays the CPU's current Program Counter (PC). This information is useful if you are debug ging an assembly-language program. The remainder of the message asks you what action you want to take, as follows: You would press C if you wanted to load CP/M all over again. This option is the same as pressing the reset button on the com puter. All options are reset to the initial settings as selected with SETUP. .. do a .pa here if not default page break You would press W if you wanted to Warm boot CP/M, thereby returning to the top command level of CP/M. This leaves the print er, punch, and reader device assignments as they were set with STAT or SETUP. If you desired to execute the ROM Monitor, you would press M. Normally, you would only use this option if you were debugging assembly-language programs you wrote yourself. Pressing any other key will return you to the program you were running when you hit the BREAK key. If you elect to warm boot, this will have the following re sults: The currently running program, if any, is aborted Printer copy is disabled Drive A:, User 0 is selected The MENU, SINGLEA, SPOOL and XSUB utilities, if present, are removed from memory CP/M is restarted at the A> prompt Note: Whatever key is defined for the Buffer Flush option is NOT available to user programs. If you desire to disable the key, it should be assigned to character code FF (hex). A word about registration cards and software support The purpose of the registration cards is mainly to allow notices of new revisions and corrections to be mailed to you. It is in your best interest to return the registration card(s) as soon as possible so that you may be kept up-to-date on the current status of the product. It is very important that as the software evolves through updates, bug fixes and user feedback that you stay informed about any changes. It makes sense and saves you time and money. Pro-Comp Systems reserves the right to refuse support to any person who does not have a valid registration card on file. Utilities Please note that a number of the following programs are not supplied with standard Digital Research CP/M. If you find yourself explaining to your friends why you can do something they cannot do and don't really understand it yourself, the answer is simple. You have a better implementation of CP/M. The APC8 files If you need more communication facilities than the COMM program (documented below) provides, you will probably want to purchase the ASCOM program from your dealer or Pro-Comp. The ASCOM package has sophisticated communication features, such as being able to transmit and receive files. However, the ASCOM program needs to be 'told' about the particular computer that it is deal ing with. The files APC8.ASM and APC8.HEX contain the necessary instructions to ASCOM for it to work on your computer. Instruct ions for installing these files is included in the ASCOM manual. These files are provided so that you will not have to write any assembly language programs to use ASCOM - we've done all the work for you! The COMM program The COMM program is supplied on your diskette in two forms - a usable program (COMM.COM) and the assembly-language source code (COMM.ASM). The program serves two purposes: First, it allows you to communicate with another computer having an RS-232 interface. You may communicate in half or full duplex, and the communications speed (baud rate) may be either the one selected in SETUP, or special parameters patched into the program. Second, the program source file illustrates the steps needed to do custom initial ization of the serial ports for any desired configuration. The actual values to be 'plugged into' the initialization data area are found in a 'Z-80 family technical manual', available at many computer stores, your dealer, and Pro-Comp. The executable COMM program as distributed on the disk is configured to use the baud rate as specified in SETUP. You should have either a modem or a direct connection to another computer. In either case, the interface cable should be connected to the Serial A port on the Pro-Comp/8. The program is run by typing COMM. It will then ask you for the character to be used to terminate the program. Respond with any character that you know you will NOT use during your communication session. The next question asks whether you wish to communicate in half or full duplex. Most other com puters use full duplex, so try that mode first. If you have a good connection to the remote computer but the characters you type don't appear on your terminal, then you should try half duplex. At this time, your terminal is linked to the remote computer via the Pro-Comp/8 computer. Any character typed on your terminal (except the terminating character) will be sent to the remote computer and all output from the remote computer will appear on your terminal. When you are finished communicating, enter the terminating char acter that you entered when you started the COMM program. At this point, COMM will output the message 'COMM terminated...' and return you to CP/M. Note: Your terminal must be running at least twice as fast as the incoming data line in order for COMM to correctly process data in both directions at the same time. If this restriction is not met, you may lose characters if both ends of the communications link attempt to transmit at the same time. For example, if the communications line and modem are running at 300 baud, your ter minal must be set for 600 baud or higher. The COPY program The COPY program is provided to copy entire diskettes. It destroys ALL data on the diskette being copied to but it will NOT format a new diskette. The advantage is that it is several orders of magnitude faster to use the COPY program rather than the PIP program. The program has three basic options. They are: .pa "A" - Copy an entire diskette to another diskette. "M" - Copy only the sections of a diskette holding data. (This option stops copying when it reaches an empty track. If you are using very large random files some data may be found beyond an empty track. If this is the case use the A option.) "V" - Verify a diskette's readability in a given drive. There are 2 modes for the A and M options. The Q mode does a quick copy, and does a fast check for errors. If your hardware is not broken, this mode will detect ALL possible errors. The F mode will find ALL errors, even if your hardware is broken. The F mode is about 40% slower than the Q mode. The F mode is the default answer. The COPY program can only copy data between diskettes of the same format and number of sides. The 8 inch version of COPY auto matically determines the number of sides used on a diskette. Due to the fact that 5 inch drives are not as sophisticated, the COPY program determines the number of sides from a byte in memory which is set by the SETUP and SETFMT programs. You must be sure to have set the desired format before running the COPY program. Also note that the 5 inch version of COPY can copy a single sided disk onto a double sided disk, but not the other way around. In general, when you want to move data from one format to another on a system with 5 inch drives, use the SYSGEN and PIP programs instead. For further details, see Appendix B. The Verify function does a checksum test and will not indicate incorrect data but will show up any problems in reading a disk ette. The Verify function of COPY does NOT alter any data on the diskette. The CPM22x file While not a utility, this file contains useful information for people who are upgrading from a previous revision of the software. It lists the dates that each update became available and what was changed in each update. The 'x' in the file name indi cates the current release number of the software, as found in the CP/M signon message. For example, in this revision, 'x' is '3'. The contents of the file may be displayed on your terminal by entering the command: TYPE CPM223.DOC. The FKSET program If you have used the SETUP program (described below) to inform CP/M about the type of terminal you are using, you may now define the individual function keys on your terminal. This gives you the advantage of only pressing a single key for your most commonly used functions. The FKSET program is supplied in three forms: an executable machine-language program (FKSET.COM), an assembler source code file (FKSET.ASM), and as a BASIC program written in Microsoft's BASIC-80. As the machine-language version differs extensively from the BASIC version, they will be described separately. .pa The machine-language program is invoked by typing FKSET. After it signs on, it will ask you if you would like to see the current function key definitions. If you answer Y to the question, it will display the definitions. Otherwise, it will ask you what key you want to define. Enter a number from one to sixteen, in clusive, then press the  key. The program will then ask you to enter the new definition for the key. After you have typed in the string as you want it, press Control-Z. (That is, hold down your terminal's CONTROL key and press the Z key at the same time.) The program will again ask you which function key should be defined. Simply press  to exit, or enter a number to define another key. When you exit by pressing the new definitions will be loaded into memory and stored on diskette so that they will be available when you next power on the computer. Note that whenever you replace the system on your disk with a new one (by using the SYSGEN program) the existing function key definitions will be destroyed and must be re-entered. The BASIC language version of the program is similar to the machine-language version, but it does NOT save the key definitions on the diskette for later use. Only the current definitions in memory are changed. This version of the program is intended mainly for inclusion in user-written menu programs, where the keys are redefined every time the menu selection changes. The FORMAT program The FORMAT program is used to prepare (initialize) new disk ettes for use in the system. Some diskettes come pre-formatted (usually in Single density) but is it usually a good idea to re- format them before use. The 8 inch version of the format program allows you to choose one of three formats: Single, Double, and Extended densities. The 5 inch version formats disks in Extended density only. Single density is the standard (usually called 8" IBM) interchange diskette for CP/M programs. Double density is Teletek's double density format. Extended density is the Pro-Comp double density format, giving 600K usable bytes of storage per side per drive on 8 inch drives and 390K bytes per side per drive on 5 inch drives. Eight inch Extended density is the same format as used by Lifeboat Associates, Morrow Designs and others. Five inch Extended density is the same format as used by the Eagle series of computers. We strongly recommend that you use Extended density as your normal working format and reserve Double and Single densities for those times when it is necessary to exchange data with other com puters. If you are formatting an 8 inch diskette in Extended density, FORMAT will ask you if you wish to format the whole diskette or just the system tracks. The system tracks only option should only be used to convert diskettes from a TRS-80 Model II or similar systems which have track zero formatted in single density. After you have formatted the system tracks of these diskettes you may use SYSGEN to place a Pro-Comp/8 CP/M on them and use them as normal system diskettes on your Pro-Comp/8. .pa For 8 inch drives, the number of sides is automatically sensed at the time that the diskette is inserted in the drive. On 5 inch drives, the number of sides to be used is set by a byte in memory which may be altered with the SETUP and SETFMT programs. Double-sided diskettes may only be used in Double and Extended densities. Use of a double-sided diskette while formatting Single density results in an error message. The MENU package The MENU package is a set of programs and data files which allows you to set up a simple 'menu' of choices for an inexper ienced user. The package consists of the following programs: MENU.DOC, MENU.COM, MINSTAL.COM, *.MNU The MENU.DOC file provides more detailed information about the MENU package. The MENU.COM program is the main program of the set. The MINSTAL.COM program is used to customize MENU.COM to your particular model of terminal. The *.MNU files are a sample set of menus so you can see how to construct your own menus. Once you have your menus set up and placed on another disk with MENU.COM, you should run SETUP and select 'C' and 'MENU' as the answers to the first two questions. Then instruct SETUP to put the new system on the disk that has your menus and the MENU.COM program on it. Now, whenever you boot from that disk, you will have a menu on your terminal instead of the 'A>' prompt. The MOVCPM program MOVCPM is used to create a new CP/M system image having either a different memory size or different operational character istics than the currently running system. The program functions entirely as described in the CP/M manuals, with the following exceptions: The forms 'MOVCPM' and 'MOVCPM nn' are rejected and replaced by the form 'MOVCPM nn *' after a warning message is printed. This is because the system thus created will always crash on its first warm boot. If the form 'MOVCPM' is entered a 64K system is generated. The program may be modified to relocate the CP/M system on 1/4K (256 byte) boundaries rather than the standard 1K boundaries. This is accomplished by patching location 103 (hex) of MOVCPM.COM to the number of pages (256 byte areas) to leave above the system. Thus, for example, if location 103 is set to 2, the system will relocate 512 bytes lower, allowing space at the top of physical memory for special types of user programs. If the value in lo cation 103 is not 0, 1, 2, or 3 a warning message is issued and the value is set to zero. The SETFMT program The SETFMT program (provided only with 5 inch systems) is used to inform CP/M about the format of the disk you are using. The command is given as follows: SETFMT df or SETFMT ? The first form sets drive d to format f. Legal drives are A, B, C, and D. The format code may be either S for single sided or D for double sided. The second form displays the current format settings for all drives. Note that if you use the wrong format code, you will usually not receive a system error message, but the data will be garbled. Therefore, it is a VERY good idea to write down the format code on the diskette's permanent label when you first FORMAT it. The SETTOD program The SETTOD program operates in conjunction with the battery backup clock option. It is used to synchronize the system's software clock with the battery backup clock. Therefore, it should be run every time you start your system (if you have the battery backup clock option). It may be made into an AUTO command by using the SETUP program if you so desire. If this is done, it will automatically run every time the system is started. In addition, you may specify another program to be run when SETTOD finishes. This way you don't have to give up the AUTO command just to run SETTOD. For example, the following command line will synchronize the clocks and then show the size of all the files on the current disk: SETTOD STAT *.* The SETUP program .. note that 'dependant' is a legal spelling - Webster's NW Dict. The SETUP program allows the user to make selected modifi cations to the CP/M system without having to re-assemble any code. This is done by moving all the environment-dependant options to a reserved area in the BIOS known as the 'Mode Area' (see Appendix E). The mode area contains, among other things, values for the number of diskette drives, the speed of the drives, the logical to physical device assignments, etc. The program is run by typing SETUP. The program will print a short explanation of how it is used, and ask several questions about the actual hardware config uration. The current value is always displayed last, and may be selected by pressing the key. Any other option may be select ed by typing its letter code or actual value, as requested by the specific question. You may skip all remaining questions and go directly to the last several questions by pressing the ESCape key in response to any question. This leaves all further questions as they were previously. Invalid responses are echoed as a beep and the user must re-enter a valid value to continue. Each question is shown below, along with an explanation of what it means. Note that although each question is numbered so that we may easily reference other questions, no numbers are displayed by the SETUP program. .pa 1) Do you want automatic command execution on Cold boot 'C', Warm boot 'W', Both 'B', or None 'N'? This CP/M has the ability to run a program whenever the system is cold booted (RESET) or warm booted (Control-C). If you do not want any programs run under these conditions, reply with a 'N' and proceed to question 3. Otherwise, enter the letter corre sponding to the situation in which you want the command run. Note that if 'W' or 'B' is selected, there is no way to run any other program with this diskette once the option is activated. 2) Enter the automatic command name? The question is only asked if the answer to the previous question was 'C', 'W', or 'B'. You should enter the name of the program you want to execute. For example, if you wanted to see the directory (list of files) every time the system was reset, you would enter DIR. A response of  alone on a line leaves the previous value unchanged. 3) Do you want 256 files instead of 128 files on extended density single sided disks? This question is only asked on systems with 8 inch diskette drives. In some cases, you may run out of directory space before you run out of disk space. This is usually indicated by a program giving the error message 'No directory space'. This CP/M gives you the option to double the amount of directory space, but ONLY on the Extended density single sided format. If you choose to acti vate this option by entering a Y, you can double the directory space, BUT your disks will be incompatible with any other disks which are not using this option. It is STRONGLY recommended that you NOT activate this option. 4) Do you want Drive A: searched for .COM files if they are not found on the currently logged disk? This option, if enabled, allows you to enter the program name, without the preceding 'A:' if you are not logged onto the A: drive and you want to run a program on A:. Note that this only applies to CCP commands, and not to programs or files accessed under BASIC or any other program. 5) Do you want the current user number to be displayed as part of the prompt? If this option is enabled the current 'user number' (see the Introduction in the Digital Research CP/M manual) will be dis played as part of the 'A>' prompt. For example, if you are in user 0 on drive A:, the display would be '0A>'. This is convenient if you frequently forget what user number you are in. .pa 6) Do you want User 0 to be a public file area for all user numbers? This option has the same result as question 4, above, except that it causes searching in user 0 if you are in another user number. Note that this only applies to CCP commands, and not to programs or files accessed under BASIC or any other program. 7) Enter the port you want the console (CON:) on - Serial A = 'A', Serial B = 'B'? You may assign the console to either serial port on the processor card with this question. Note, however that there are numerous benefits to having the console on the Serial B port. Therefore, it is not recommended that you change this setting. The setting for this and all other device assignments may be changed while the system is running by using the STAT program, described in another section of this manual. However, the assignments made by your answer to this question are restored when your system is next cold booted (RESET). 8) Enter the port you want the printer (LST:) on - Serial A = 'A', Serial B = 'B', Serial C = 'C', Parallel = 'P'? You may assign the printer to either serial port on the processor card, the first serial port on the optional serial expansion card, or the parallel port on the processor card with this question. Note that printer output will be discarded if you assign the printer to the Serial C port and you do not have a serial expansion card in your computer. The setting for this and all other device assignments may be changed while the system is running by using the STAT program, described in another section of this manual. However, the assignments made by your answer to this question are restored when your system is next cold booted (RE SET). 9) Enter the port you want the reader device (RDR:) on - Serial A = 'A', Serial B = 'B', Serial C = 'C', Serial D = 'D'? You may assign the reader to either serial port on the pro cessor card or the first or second serial port on the optional serial expansion card with this question. Note that end-of-file marks will be returned if you assign the reader to the Serial C or Serial D ports and you do not have a serial expansion card in your computer. The setting for this and all other device assignments may be changed while the system is running by using the STAT program, described in another section of this manual. However, the assignments made by your answer to this question are restored when your system is next cold booted (RESET). .pa 10) Enter the port you want the punch device (PUN:) on - Serial A = 'A', Serial B = 'B', Serial C = 'C', Serial D = 'D'? You may assign the punch to either serial port on the pro cessor card or the first or second serial port on the optional serial expansion card with this question. Note that output will be discarded if you assign the punch to the Serial C or Serial D ports and you do not have a serial expansion card in your compu ter. The setting for this and all other device assignments may be changed while the system is running by using the STAT program, described in another section of this manual. However, the assign ments made by your answer to this question are restored when your system is next cold booted (RESET). 11) Enter the desired Serial A printer protocol - None = 'N', ETX/ACK = 'E', XON/XOFF = 'X'? If the LST: device is assigned to the A: serial port, some additional interfacing aids are available. There are several soft ware 'protocols' available which are used to interface to various types of printers. The protocols are called 'ETX/ACK' and 'XON/XOFF'. XON/XOFF is sometimes also called 'DC1/DC3' or 'Con trol-S/Control-Q' protocol. If your printer uses either of these protocols, you should select the same protocol as your printer uses. (See your printer's manual for details). The system, as shipped, uses XON/XOFF protocol. This suits the vast majority of printers in use today. Note that protocols apply ONLY to the LST: device, and ONLY if it is assigned to serial A. Even if the punch is assigned to the serial A port at the same time as the list device, the punch's output will not be affected by the printer protocol. 12) Do you want hardware handshaking on the Serial A port? In addition to the software protocols described in question 11, above, you may select hardware handshaking. This is most often used with medium-speed serial dot-matrix printers. If this option is enabled, pin 4 of the Serial A connector should be connected to the 'Busy' signal from your printer. Normally, a software protocol is more useful than hardware handshaking, but this option is provided for those printers which only do hardware handshaking. Hardware handshaking applies to ANY device attached to the Serial A port, not just the list device. 13) Available baud rates are: 50, 75, 110, 134.5, 150, 300, 600, 1200 1800, 2000, 2400, 3600, 4800, 7200, 9600 19200 Enter Serial A baud rate? You should enter a baud rate from the above list which cor responds to the baud rate being used by whatever peripheral you have connected to the Serial A port. If you do not have a device connected to the Serial A port, simply press the  key. .pa 14) Enter Serial B baud rate? Exactly the same as for question 13, except for the Serial B port. 15) Enter Serial C baud rate? If you do not have a serial expansion board in your system, simply press . Otherwise, you may specify the desired baud rate for the Serial C port. Again, this should match the baud rate of the device connected to the port. 16) Enter Serial D baud rate? Exactly the same as for the previous question, except for the serial D port. 17) Enter the type of serial expansion board in the system if any None = 'N', Pro-Comp/8 serial = '8', Pro-Comp/80 upgrade serial = 'P'? If you don't have a serial expansion board, enter N. If you have a Pro-Comp/8 serial expansion board, enter 8. If you upgraded from a Pro-Comp/80 computer system and kept its serial board as an expansion, enter P. Be sure not to specify '8' or 'P' if you don't have an expansion board. 18) Do you want to disable the BREAK key option? The BREAK key, described earlier in this manual, is a conven ient way of resetting the computer from the terminal. However, some users may find that they accidentally hit the BREAK key while using the computer. For this reason, the BREAK key may be dis abled. Note that by 'disabled', we mean that the BIOS does not take any special action when a BREAK is detected. Whatever data the BREAK key generates WILL be passed to the running program if the key is disabled. 19) Enter the hexadecimal code for the type-ahead buffer flush character? The type-ahead buffer is usually very convenient, but some times you would like to delete the contents of the buffer before it is processed by CP/M. To this end, we have provided a logical 'buffer flush' key. This logical key may be assigned to any phys ical key on your keyboard. Enter the ASCII character code of the key you want to use (in hex). If you don't want a buffer flush key, assign it the value of FF hex. Note: The key defined as the buffer flush will NOT be passed to user programs, so don't assign it to a key you want to use in your programs. 20) Does the system have the battery backup clock option? Pro-Comp offers a battery backup clock option for the Pro- Comp/8 series of computers. This clock will keep time even when the computer's power is turned off. The system needs to know if you have the option so that it can provide the special support the clock needs. If you have the option, enter Y. Otherwise, enter N. .. blank line here if not a page break 21) Enter your parallel printer interface type, if any - None ='N', Centronics ='C', DataProducts ='D', Other ='O'? If you have a parallel printer, enter its interface type as either C or D. If you have a Pro-Comp custom parallel device interface (such as the tape reader), enter O. If you have no devices connected to the parallel port, enter N. 22) Enter the floppy disk step rate in Ms. '1'-'15' Since different dealers supply different disk subsystems with Pro-Comp computers, you may adjust the step rate to the correct value for your disk drives. Almost all single sided 8 inch drives use a value of 8; for double sided 8 inch drives we suggest a value of 4. The standard 5 inch floppies used in the Pro-Comp/8-5 use a value of 6. If you are using drives you acquired elsewhere, consult the drive manual for the proper step rate. 23) Enter the number of floppy disk drives in the system? Enter the number of diskette drives that your computer is equipped with. The maximum value for 8 inch systems is 4; for 5 inch systems it is 2. 24) Are the floppy disk drives single sided? This question is only asked on 5 inch systems. Pro-Comp Systems does not offer single sided 5 inch machines as part of the standard product line, but they are available by special order. If you have such a machine, enter Y, otherwise enter N. 25) Do you wish to set the extended terminal parameters? This question must be answered with a Y in order to configure the system for the particular terminal in use. Note that, normal ly, you need only perform this configuration once. (Unless, of course, you purchase a different terminal.) Also note that, as delivered, the system is properly configured for a Volker-Craig CHAT (VC4404) terminal operating in ADM-3A compatibility mode. This is the standard terminal sold by Pro-Comp and many of our dealers. If you have such a terminal, you need not worry about this setup as it has already been done for you. In that case, enter N and proceed to question 30. 26) Enter the function key delay constant in clock ticks [1 clock tick is 16.67 milliseconds] '0'-'254'? The delay constant defines the maximum amount of time the BIOS will wait before presuming that the remainder of the function key sequence is not coming. Therefore, it may be seen that a delay constant of zero disables all function key translation. Normally, this value will not need to be changed unless you are running your terminal at a low baud rate (usually less than 1200). The only way to determine the correct parameter for this item is by exper imentation. Define a function key with the FKSET program and increase the delay until you get the data you defined when you hit the specified key. However, the default value of 4 will not usual ly need to be changed. .. blank line here if not page break 27) Enter the hexadecimal code of the function key lead-in character? This entry must match the character that your terminal sends out as the FIRST character of a function key sequence. This item is usually easily determined by looking in your terminal's refer ence manual. On almost all terminals it is an ESCape character, which is Hex. 1B. 28) Does this terminal use two-character (2) or three-character (3) function codes? Some terminals send a two-character function key string (usually something like ESCape A), and others send a three-charac ter string (usually something like ESCape A RETURN). This question is asked so the BIOS function key handler will know whether or not to throw away the third character seen after the function key lead-in character is detected. 29) Enter a 16-character string consisting of the designator codes for your function keys? This entry specifies the second character of the function key string to the function key handler. (This was shown as the charac ter A in the above example). In the message as displayed, the PF1 key on the terminal generates ESCape P, PF2 generates ESCape Q, etc. up to PF10. If your terminal has less than 16 function keys (like the Volker-Craig CHAT), simply enter only those characters for keys you have. A response of  alone on a line leaves the previous value unchanged. 30) Enter desired action - Save changes = 'S', Re-enter parameters = 'R', or Quit = 'Q'? You may press S to save the changes just made. Second, you may press R to restart the question/answer process again. If you press 'R', the changes just made (if any) are now the default answers. Lastly, pressing Q causes all your answers to be dis carded. This last option leaves the system completely unchanged. 31) Do you want to incorporate these changes into your currently running system? If you answer N, the changes are written into MOVCPM.COM for future use, a list of absolute locations is printed, and the pro gram exits to CP/M. If you answer Y, the program will ask you some more questions about the system to be created. 32) Enter the desired memory size in K? Your answer to this question tells the program what size CP/M system to create. Normally, you would reply with 64 to create the maximum size system. However, any other value (provided it is greater than 20) may be entered. If you purchased a hard disk with your Pro-Comp computer, you will usually need to relocate CP/M lower in memory to leave room for the hard disk drivers. This is covered fully in the hard disk module user's manual, included with the optional hard disk subsystems. Note that the COPY and SYSGEN programs have substantial memory requirements and may not run in smaller systems. 33) What disk do you want to place the new system on? Your answer to this question determines which disk drive will receive the newly created CP/M system. The drive you specify must have an Extended density diskette in it and have the door closed. We do not recommend placing the new system on the A: disk due to the fact that you may have specified a configuration which will not function properly on your machine. Placing the system on another disk lets you fall back on your old system disk if the new one does not function properly. This concludes the configuration session. When question 33 is answered, the new system is automatically created and placed on the specified disk. The SINGLEA program The sole purpose of this program is to allow the system to be warm booted from any diskette format found in the A: diskette drive. The diskette doesn't need to have a system on it. For example, given that the A: drive must always have an Extended density diskette in it, how do you PIP from single den sity diskette onto another single density diskette if you've only got two diskette drives? Just use SINGLEA. To use the program, type SINGLEA. The program will respond with the message '(sin glea active)' each time the system is warm booted. This also allows CP/M's control-P function to remain in effect after a warm boot so that you can record the complete output from a submit file on your printer. The SPOOL program The SPOOL program allows you to print files on your system's printer device while you are running programs on the computer. It accomplishes this by detecting pauses in your typing, and using those pauses to send characters to the printer. Characters will only be sent while the system is waiting for you to enter a character, and not while the system is actually computing. The program accepts ambiguous file names. This means that you can print all of the files on a disk with a single command. In addition, many other options are available. The command is formed as follows: SPOOL {d:}filename.typ {/opt1}{/opt2}...{/optn} -- or -- SPOOL keyword The first form is used to specify the files and options for printing, and the second form is used for controlling the printing once it has been started. As you can see, the user enters the SPOOL command, followed by any legal CP/M filename, followed by the options desired, if any. If options are specified, the first one MUST be preceded by a blank to distinguish it from the file name. The options available are: /B:n - Use n disk buffers (see below) (n=1-16) /C:n - Print n copies of the file (n=1-255) /D - Delete the file after printing /F - Issue a form feed after each copy/file /U:n - Look in user n for the files (n=0-15) /* - Don't check printer status before printing The buffer option (/B) is used to optimize the spooler for your specific printer. Basically, buffering is a trade-off between execution speed and memory usage. The more buffers you have, the less disk accesses will be required to print a file of a given size. However, each disk buffer reduces the space available to user programs by 256 bytes. Up to 16 disk buffers may be used in the print run. Using more than 16 buffers does not improve perfor mance enough to justify their usage. After the user enters the SPOOL command, the program checks the input for consistency and then starts the spooling operation. If an error is detected in the input, an error message is issued and the spooler is not started. Once the spooler is running, the user is free to change the logged-in disk, the current user number, and even the printer assignment. If you have two printers, one can be running under the SPOOL program and the other can be running under a Control-P. However, the user should NOT physically change the disk the spool er is accessing. If this is done, the spooler will probably give a 'BDOS Err' message. In addition, the user should be careful not to delete any files which were specified for printing while the spooler is running. Failure to observe this precaution will usual ly result in one or more files NOT being printed, although they were specified for printing. Also, the user should be careful not to enter the ROM Monitor while the spooler is running. If the BREAK key is pressed and the spooler code is being executed, a subsequent 'G0' monitor command could leave the current disk, user number, and I/O assignments in an indeterminate state. To avoid this, you should not press BREAK while the spooler is running unless you KNOW that the spooler code is not currently executing (see the !PAUSE keyword, below). During spooler execution, it is occasionally useful to pause or terminate the print job. For example, if your printer is lo cated next to the telephone, you would probably desire to pause the printer before answering the phone. To do this, the following keywords are defined: !PAUSE - Suspend printer output until !RESUME is given !RESUME - Resume a print job suspended by !PAUSE !STOP - Immediately cancel any printing and terminate Of course, the SPOOL keywords can only be issued at the com mand level of CP/M. If you are executing a program (such as BASIC) and you desire to pause, resume, or stop the print job, you must first exit to CP/M. .. blank line here if not page break When the spooler is running, it outputs informative messages to the console at each warm boot. The messages are: (spooler active) - The spooler is in the process of printing. Printing continues. (spooler terminated) - The spooler has finished printing all jobs. The memory occupied by the spooler is released. In addition, the following message may occur at any time: ** Spooler panic ** - The spooler has detected incon- sistent data (usually due to the user deleting a file being print- ed). The spooler terminates. Note that if a spooler panic occurs during the execution of a user program, the user program is terminated along with the spool er. When the spooler completes its print task, it marks itself as eligible for de-activation. It does not actually de-activate it self until a warm boot is performed. This is due to the fact that CP/M does not permit dynamic alteration of the memory configur ation while user programs are running. Therefore, if a spool job completes, you should type Control-C before requesting another spool job. This removes the completed SPOOL program from memory before loading the new copy. If this is not done, you will get the 'SPOOL already present' error message. The STAT program The STAT program has been modified so that you may easily change the logical to physical device assignments. Instead of the confusing device names provided in the standard version of STAT, the Pro-Comp version uses easy-to-remember names. The available physical devices are: SPA: - The first serial port on the processor card SPB: - The second serial port on the processor card SPC: - The first serial port on the expansion card * SPD: - The second serial port on the expansion card * PAR: - The parallel port on the processor card NUL: - A null device which discards it's output * Note - Ports marked with an asterisk (*) are on the optional serial expansion card, available from Pro-Comp. The current device assignments may be viewed by entering the command STAT DEV:. The legal device assignments may be dis played by entering the command STAT VAL:. To create a new logical-to-physical device assignment, enter the command STAT log:=phy: where log: is a logical device name and phy: is a physical device name. Consult the section entitled 'Peripheral device drivers' in Section II of the manual for further details. .pa The SYSGEN program The SYSGEN program is very similar to the version described in the Digital Research documentation. The only change we have made is that if you SYSGEN onto the A: diskette drive, the SYSGEN program will force a cold boot instead of warm booting. This prevents the system from crashing if the new system on A: differs from the currently running system. The TOD program TOD is a utility which allows the user to access and set the system time and date. It can be called three ways: TOD causes the current date and time to be output. TOD P causes the date and time to be repeated until any key is struck. TOD MM/DD/YY HH:MM:SS causes the new date and time to be loaded into the clock registers. Pressing any key will start the clock. If this option is chosen and the battery backup clock is present, you will be asked if you wish to set it also. When the system is first cold booted the date is set to the creation date of the BIOS and the time is set to 00:00:00. The date and time are stored in memory as shown below. Memory location Description 0048H-0049H Date, kept as number of days since 1/1/78 004AH-004AH Hours, kept as 2 BCD digits 004BH-004BH Minutes, kept as 2 BCD digits 004CH-004CH Seconds, kept as 2 BCD digits The USRINT program The USRINT program is supplied to demonstrate how user- defined interrupt handlers may be included in the CP/M system. Running USRINT does not do anything useful by itself, but is intended as an example. The source code is found in the file USRINT.ASM. For further information, see the section entitled 'Including user-written interrupt handlers'. .pa PART II - CP/M Implementation notes BIOS source code information We at Pro-Comp feel that there is enough flexibility for the vast majority of users in the standard CP/M package as supplied to you. If you have a need to add additional devices that the native features of this BIOS do not support, you have four options: a) Purchase the BIOS source from Pro-Comp. b) Have Pro-Comp customize the software for you. c) Request a change via the Software Trouble Report (STR) form found at the end of this manual. d) Attempt the change with whatever facilities and code you have available. If you decide on option a, be aware that the source contains a large number of interrupt handlers, and interrupt-driven code is very hard for the majority of users to write and debug. Option b involves getting an estimate for the work from Pro- Comp. If we decide to undertake the work, the job will be billed on an hourly basis at our then-prevailing prime time programming rates. Option c is the avenue for reporting all feature requests and problems even though it is probable that you will never find any problems for years past your warrantee period. Option d is the most difficult for us to support and is usually not even reported. Command line options for COPY, FORMAT, and SYSGEN The COPY, FORMAT, and SYSGEN programs have an additional feature which enables them to be used in SUBMIT scripts. The usual reason for using them in a SUBMIT script is to enable them to be used by a novice user. For this reason, the answers to the questions usually asked by the programs may be placed on the command line, preceded by a dollar sign ($). When the programs are operated in this mode, the only request for input made will be to ask the user to insert the proper disk and press the key. The options for each of the programs are as follows: FORMAT (8 inch systems) Syntax: FORMAT $dfe Parameters: d is the disk drive name f is the format desired, S, D, or E e is the extent of formatting, W or S FORMAT (5 inch systems) Syntax: FORMAT $d Parameters: d is the disk drive name COPY Syntax: COPY $v -- or -- COPY $esdm Parameters: v is the name of the drive to be verified e is the extent of the copy, A or M s is the source drive name d is the destination drive name m is the copy mode, F or Q SYSGEN Syntax: SYSGEN $sd Parameters: s is the source drive name or S to skip d is the destination drive or S to skip If an invalid command line is given, the program will give the error message '?? Invalid command line parameter' and exit. Terminal function key definition in SETUP The SETUP program is also used to configure the function key decoding provided in the BIOS. See questions 25 through 29 in the section on SETUP for details. After correctly answering those questions and generating a new system, your function keys should be configured. After the new system is loaded, use the FKSET program to define a function key. Then press that key to test your configuration. If it works, you're all done! If it doesn't, you have either configured the system improperly via SETUP, or your terminal is incompatible with the function key handler. In the latter case, submit a Software Trouble Report (STR), found at the end of this manual. Include copies of the pertinent section(s) of your terminal's manual. If demand is great enough, we may accom modate your type of terminal in a future revision of CP/M. Technical aspects of the function key handler The usage of interrupts in the BIOS allows us to have several logical 'subtasks' in the BIOS. These subtasks do not communicate directly with any other piece of code in the system. Instead, they define areas of memory, usually called 'queues'. The queues are written into by one program and read by another. The simplest subtask in the system is probably the time-of-day clock routine. Each time the system clock (contained in the Z-80 CTC chip on the processor board) ticks, the clock subtask updates the time infor mation contained in low memory. Another subtask is the console keyboard character in routine. Whenever a key on the console is pressed, the subtask collects the data and stores it in a queue. The BIOS console input routine later reads the queue to collect the characters as your programs ask for them. This is how you may type 'ahead' of the program you are running. This subtask also has one other purpose - it scans your input for the function key lead- in character. When it gets one, it sets a byte in memory that says a function key is in the process of being decoded. It then signals the clock subtask that if no further characters are detected from the keyboard within some number of clock ticks the byte that says a function key is in progress will be cleared. If another char acter DOES come along, it is compared with the designator string to find out which function key was actually pressed. If a match is found, the user-defined data for the key is written to the queue. The function key lead-in, designator code, and optional third character are discarded. They are NOT written to the queue. If another character DOES NOT come along before the clock times out, the function key lead-in character is written to the queue and the function-key-in-progress indicator is cleared. In this manner, if you press the lead-in key alone, after the timeout occurs, the data is enqueued. This way, you do NOT lose the usage of the function key lead-in character as a separate key. As you can see, this type of routine is not possible without interrupts. Technical aspects of the SPOOL program The SPOOL program is a page relocatable program, similar in method to the SINGLEA and XSUB programs. It relocates itself below the CP/M Console Command Processor (CCP), alters the pointers in Page Zero to point to itself, and warm boots. When BDOS console input calls or a BIOS call to CONIN: is performed, it intercepts the call and checks the console status. If a character has not been typed, it prints a character on the printer. It then loops waiting for console input and printing characters. When a key is finally pressed on the console, it transfers control to the real BDOS or BIOS, which processes the call in the normal manner. Note that, due to this method, printing will only occur dur ing the wait interval for the first character if input was solici ted by BDOS function 10 (line input). This is due to the fact that the second through last characters do not cause a new BDOS call. The spooler saves the following information when the program is first loaded: Currently assigned printer (via the IOBYTE) Current user number Current disk drive The spooler restores this information while printing char acters, therefore those values may be freely changed during the print process without affecting the printing. Of course, one should not attempt to do direct printer output (Control-P, for example) to the printer which is being spooled. If this is done, interspersed output will surely result. The spooler disables direct BIOS calls for disk writes during the spooling process. This is because the spooler could have requested a different disk/track/sector combination between the time the user's program selected them and the time that the actual write is performed. For this reason, an error indication is re turned immediately, and no disk write is performed. Note that this only pertains to BIOS calls for disk writes, and does NOT affect normal disk writes performed through BDOS calls. The program expands tabs to every 8 character positions, the same as the default option [T8] in the PIP program. The program takes no special action on any other character. Therefore, one should not send "trash" data to the printer. In addition, many word processors have special internal codes for such things as hyphens and paragraph endings. Such files will probably not print correctly. Booting from drives other than A: The Pro-Comp/8 ROM Monitor (described in a separate manual) 'L' command will boot CP/M from any floppy disk drive. If your A: disk drive is broken, you can put a system disk in any other drive and issue the monitor L command. Whatever disk drive you put the CP/M disk in is considered to be the A: disk drive. The assignment of the other drives varies, as follows: Physical boot drive Logical drive assignments 0 1 2 3 ------------------- ------------------------- 0 A: B: C: D: 1 B: A: C: D: 2 B: C: A: D: 3 B: C: D: A: Peripheral device drivers The BIOS supplied with this CP/M supports all 4 peripheral devices found on the basic Pro-Comp/8 processor card - disks, 2 serial ports, and the parallel port, as well as the first two serial ports on a serial expansion card. The disk drive configuration is fixed, and may not be changed by the user. However, the assignments of the CP/M 'logical devi ces' to the Pro-Comp/8 processor's 'physical devices' may be varied at will by the user. The CP/M logical devices are: CON: - The system console RDR: - The system's reader device (auxiliary input) PUN: - The system's punch device (auxiliary output) LST: - The system's listing device (printer) The Pro-Comp/8's basic physical devices are: SPA: - The A serial port SPB: - The B serial port PAR: - The parallel port NUL: - The non-existent device The optional serial expansion adds the following devices: SPC: - The C serial port SPD: - The D serial port The default assignments for the devices are as follows: CON: = SPB: RDR: = SPA: PUN: = SPA: LST: = SPA: .. blank line if not page break The assignment may be changed on a permanent basis by running the SETUP program and selecting the new assignments, or on a temporary basis by running the STAT program and issuing the proper command. For example: STAT LST:=PAR: would assign the list device to the parallel port. Such an assignment reverts to its original state the next time the system is cold booted. The B serial port has some special code in its driver to allow type-ahead and so forth. The console is best left assigned to the B port. The A: serial port is a normal serial interface with some exceptions. If the list device (LST:) is assigned to this port, it may communicate via a software 'protocol'. In addition, the port may be configured so that an external device may indicate its readiness to receive data by signalling on Pin 4 of the interface connector. These are SETUP options, and may not be changed except by running SETUP. The particular questions in SETUP are questions 11 and 12. Including user-written interrupt handlers The user may define his/her own interrupt handlers provided that the following conditions are met: a) The routine does not access the console I/O port b) The routine preserves all standard 8080 registers c) The routine does not use more than 2 levels of the caller's stack space d) The routine's service bandwidth is not excessive The user who wishes to define user interrupt handlers should be familiar with the following items: a) The Z80 CPU, especially interrupt mode 2 b) The S-100 bus (IEEE 696) c) The Pro-Comp/8 processor card d) The device he is writing the interrupt handler for The basic Pro-Comp/8 processor card does NOT respond to devices generating interrupts from off the processor card. There fore, you may only define handlers for the devices existing on the processor card. The method of defining the interrupt handler is included on the distribution disk as USRINT.ASM. Basicly, defining the handler involves 3 distinct steps: 1) Loading the driver into memory 2) Initializing the user device 3) Storing the interrupt handler's address in the BIOS table of interrupt handlers. .pa The table of available positions, assigned service routines, and default devices is included as Appendix G. It is very important that at the end of user interrupt pro cessing (before warm boot) the user program should disable further interrupts from the user device and remove the interrupt service routine address from the interrupt service address table. Good programming practice dictates that the original address in the table be restored when the user program exits. The NULINT: (null interrupt handler) routine consists of the following instructions: ei ;enable interrupts reti ;Z-80 return from interrupt ** WARNING ** If the user routine uses any table address besides those assigned to NULINT:, the null interrupt handler, CP/M will no longer function and may corrupt disks if a warm boot is attempted. Programs using these addresses must be 'stand-alone' programs that do not require the services of CP/M. The user should not use the Abort key if user interrupt routines are defined because this would leave the system interrupt pointer table corrupted, thereby de-stabilizing the system. .pa Appendix A - Additional reserved locations in Page 0 The Pro-Comp software uses several additional locations in page zero beyond those described in the Digital Research documen tation. The complete memory map of locations used is shown below. The symbol =+O indicates a special usage by Pro-Comp. .uj 0 Location(s) Usage ----------- ---------------------------------------- 0000H-0002H Jump to BIOS warm boot entry point 0003H-0003H IOBYTE (logical device assignments) 0004H-0004H Current disk drive and user number 0005H-0007H Jump to BDOS function call entry point 0008H-000FH Not currently used 0010H-0025H =+O Contains the 'Different System' message text. 0026H-0037H Reserved by Digital Research 0038H-003AH Jump to debugger (DDT) breakpoint 003BH-003FH Reserved by Digital Research 0040H-0040H =+O Memory bank number this user is run- ning in (for compatibility with Pro-Comp MP/M, set to 0 in CP/M) 0041H-0041H =+O Offset to first floppy disk drive (set to zero unless running a hard disk module provided by Pro-Comp) 0042H-0043H =+O Pointer to configuration table address 0044H-0047H =+O Reserved by Pro-Comp 0048H-0049H =+O Current date as days past 1/1/78 004AH-004CH =+O Current time as three BCD digits 004DH-004DH =+O Control byte for relocatable programs 004EH-004EH =+O Reserved by Pro-Comp 004FH-004FH =+O Checksum of 40H to 47H, inclusive, computed as complement of the sum of the bits set to one in the above locations. 0050H-005BH Reserved by Digital Research 005CH-007CH Default FCB 007DH-007FH Default random record position 0080H-00FFH Default DMA buffer .uj 1 Any location listed as 'Reserved' either by Pro-Comp or by Digital Research is filled with hex zeros. These locations are not currently used in any manner, but are reserved for future expan sion. .pa Appendix B - Generating a system disk on another format Since the COPY program can only copy data between disks having the same density and number of sides, it may be seen that it cannot be used to copy the disk that your CP/M came on to a diskette of another format. Instead, we will use the PIP program to do the job for us. Since PIP (unlike COPY) copies files one at a time, it can place files on different diskette formats. The command we use to copy all files with PIP is PIP B:=A:*.*[VO]. This instructs the PIP program to copy all files (*.*) from drive A: to drive B: (B:=A:) with the Verify and Object options ([VO]). Since the PIP program does NOT copy the entire diskette, but only the files on the diskette, we must also use the SYSGEN program to place a copy of the CP/M operating system on the new disk. Two versions of the complete session are shown below, one for 8 inch systems and one for 5 inch systems: Procedure for 8 inch systems A>FORMAT <--- Format the disk CP/M FORMAT Revision 2.23-8" - 12/30/82 Disk drive: (A/B/C/D or Control-C to REBOOT)? B Single, Double, or Extended density: (S/D/E)? E Formatting the Whole disk or System tracks only: (W/S)? W Press to format EXTENDED density disk in drive B: "N" for new parameters, or "E" to exit:  Disk now being formatted - Press "ESC" to abort. Each "*" is one track formatted and verified. [ 0 ! 1 ! 2 ! 3 ! 4 ! 5 (etc.) ******************************************************** (etc.) Press to format EXTENDED density disk in drive B: "N" for new parameters, or "E" to exit: E Place system disk in drive A: and press to reboot...  A>PIP B:=A:*.*[VO] <--- Copy all files over COPYING - (a list of files copied will be displayed) A>SYSGEN <--- Copy CP/M over CP/M SYSGEN Revision 2.23-8" - 12/30/82 Enter source drive name: (A/B/C/D or to skip or Control-C to reboot)? A Place source disk in drive A:, then press :  Function complete. Enter destination drive name: (A/B/C/D or to reboot)? B Place destination disk in drive B:, then press :  Function complete. Enter destination drive name: (A/B/C/D or to reboot)?  Place system disk in A: and press to reboot...  A> Procedure for 5 inch systems A>SETFMT BS <--- Set the B drive format to single sided. Ok. A>FORMAT <--- Format the disk CP/M FORMAT Revision 2.23-5" - 12/30/82 Disk drive: (A/B/C/D or Control-C to REBOOT)? B Press to format the disk in drive B:, "N" for new parameters, or "E" to exit:  Disk now being formatted - Press "ESC" to abort. Each "*" is one track formatted and verified. [ 0 ! 1 ! 2 ! 3 ! 4 ! 5 (etc.) ******************************************************** (etc.) Press to format the disk in drive B:, "N" for new parameters, or "E" to exit: E Place system disk in drive A: and press to reboot...  A>PIP B:=A:*.*[VO] <--- Copy all files over COPYING - (a list of files copied will be displayed) A>SYSGEN <--- Copy CP/M over CP/M SYSGEN Revision 2.23-5" - 12/30/82 Enter source drive name: (A/B/C/D or to skip or Control-C to reboot)? A Place source disk in drive A:, then press :  Function complete. Enter destination drive name: (A/B/C/D or to reboot)? B Place destination disk in drive B:, then press :  Function complete. Enter destination drive name: (A/B/C/D or to reboot)?  Place system disk in A: and press to reboot...  A> .pa Appendix C - Diskette format and layout The Disk Parameter Blocks (DPB's) used in this BIOS are shown below. These tables define the way the disk 'looks' to the BDOS part of CP/M. These tables should generally not be altered by the user, but are included here for the daring. If you wish to modify these tables, consult Appendix F for an example of how to locate these tables in a running system. .uj 0 ; ; 8 inch system Disk Parameter Blocks (DPB's) ; dpbsds: dw 26 ;single density single sided DPB db 3 ;BSH db 7 ;BLM db 0 ;EXM dw 242 ;DKS dw 63 ;DRM db 0c0h ;AL0 db 0 ;AL1 dw 16 ;CKS dw 2 ;OFS ; dpbdds: dw 52 ;double density single sided DPB db 4 ;BSH db 15 ;BLM db 1 ;EXM dw 242 ;DKS dw 127 ;DRM db 192 ;AL0 db 0 ;AL1 dw 32 ;CKS dw 2 ;OFS ; dpbddd: dw 52 ;double density double sided DPB db 4 ;BSH db 15 ;BLM db 0 ;EXM dw 493 ;DKS dw 127 ;DRM db 192 ;AL0 db 0 ;AL1 dw 32 ;CKS dw 2 ;OFS ; dpbxds: dw 64 ;extended density single sided DPB db 4 ;BSH db 15 ;BLM db 0 ;EXM dw 299 ;DKS dw 127 ;DRM db 0c0h ;AL0 db 0 ;AL1 dw 32 ;CKS dw 2 ;OFS (table continued on next page) ; dpbxdd: dw 64 ;extended density double sided DPB db 4 ;BSH db 15 ;BLM db 0 ;EXM dw 599 ;DKS dw 255 ;DRM db 0f0h ;AL0 db 0 ;AL1 dw 64 ;CKS dw 4 ;OFS ; ; 5 inch system Disk Parameter Blocks (DPB's) ; dpbxds: dw 40 ;extended density 1 sided DPB db 4 ;BSH db 15 ;BLM db 1 ;EXM dw 194 ;DKS dw 191 ;DRM db 0e0h ;AL0 db 0 ;AL1 dw 486 ;CKS dw 2 ;OFS ; dpbxdd: dw 40 ;extended density 2 sided DPB db 4 ;BSH db 15 ;BLM db 0 ;EXM dw 394 ;DKS dw 191 ;DRM db 0e0h ;AL0 db 0 ;AL1 dw 48 ;CKS dw 2 ;OFS .uj 1 The following tables describe the logical to physical mapping of the sectors on the tracks. These tables could be changed to allow reading of other disk formats. Note that if these tables are changed, all your disks using that format will now be unreadable. If you wish to modify these tables, consult Appendix F for an example of how to locate these tables in a running system. .uj 0 xltsd: db 01,07,13,19,25 ;8 inch single density table db 05,11,17,23,03 db 09,15,21,02,08 db 14,20,26,06,12 db 18,24,04,10,16 db 22 ; xltdd equ xltsd ;8" double density table is ;the same as single density ; xltxd: db 01,04,07,02,05 ;8" extended density table db 08,03,06 ; xlt5d: db 01,03,05,02,04 ;5" extended density table .uj 1 .. blank line here if not page break All single-sided disks are treated as having one track per cylinder. Eight inch double-sided disks have 2 tracks per cyl inder, and therefore the allowable tracks for 8 inch double sided disks are 0 through 153, inclusive. The first side of five inch double-sided disks is treated as a single-sided disk. The disk is then moved to cylinder 0 on side 1 and another 80 tracks are used on side 1. Therefore, the allowable tracks for 5 inch double sided disks are 0 through 159, inclusive. Note that the Double density disk format in this CP/M is supplied solely as a convenience in converting software from the Teletek CP/M to the Pro-Comp/8 CP/M. The file structures on both double densities are the same. However, the system tracks are organized differently on the Teletek CP/M. Therefore, you may not use COPY to copy disks formatted in Double density by the Teletek CP/M, and you cannot SYSGEN a Teletek CP/M onto a Double density disk formatted under the Pro-Comp/8 CP/M. The only sanctioned use of Double density is to PIP existing files from Double density disks to Extended density disks. In some cases, such as in programs requiring the changing of data disks during their operation, it is required to change disk ettes. The disk you insert MUST be of the same density as the one you removed, unless you include the following procedure in your program, in which case the new disk may be any density allowed by the CP/M. If you desire to change the disk format while your program is executing, you may do so as follows. Note that there are two methods, depending on whether you are using BDOS calls (most common), or BIOS calls. .uj 0 BDOS calls: mvi c,13 ;reset disk function code call bdos ;all drives now reset BIOS calls: mvi c,0 ;select drive A: mvi e,0 ;with reset call seldsk ;BIOS entry point .uj 1 You can see from the above example that if the BIOS SELDSK entry point is called with the E register set to zero, the disk will be re-evaluated for density and number of sides. The E reg ister should contain 0ffh if you don't want the disk re-evaluated. Note that many high-level languages already include this code as part of the language. For example, Microsoft's BASIC-80 and BASCOM languages include the RESET statement for this purpose. You should usually consult the manual for the language you are using, or ask your dealer if the language includes this feature. .pa Appendix D - Error message summary This section contains an alphabetized list of all error messages output by the Pro-Comp BIOS and utility programs. If a message is documented in the Digital Research CP/M manuals, it ISN'T listed here. Error Message: ** Disk format mismatch! ** From program: COPY Meaning: The source and destination disks are not the same format, and therefore cannot be copied. Error Message: ** Spooler panic ** From program: SPOOL Meaning: The spooler has detected inconsistent data, usually due to the user deleting a file. This may also be caused by a Page 0 corruption. Error Message: ?? Battery backup clock needs to be set From Program: SETTOD Meaning: The battery backup clock contains an impos- sible date or time. Reset it by running TOD. Error Message: ?? Battery backup clock option not present From Program: SETTOD Meaning: The SETTOD program is only used with the bat- tery backup clock option, and you do not have that option in your system. Error Message: ?? ERROR: CP/M size must be 63K or smaller From Program: USRINT Meaning: USRINT requires the top 1K of system memory. Therefore, your CP/M must be 63K or smaller to allow USRINT room to execute. Error Message: ?? ERROR: USRINT not present From program: APC8 Meaning: The APC8 program has been configured to oper- ate with the USRINT program, and USRINT was not loaded into system memory. Error Message: ?? Insufficient memory space to run program From program: COPY Meaning: The COPY program needs more user memory than you have to copy the disk. (It needs about 40K to copy disks) Error Message: ?? Internal error, notify Pro-Comp Systems. From program: COPY Meaning: The COPY program has gotten hopelessly con- fused, usually due to an unknown format. Error Message: ?? Invalid command line parameter From program: COPY, FORMAT Meaning: An invalid code letter was entered on the program's command line. .pa Error Message: ?? Memory error in buffer, aborting From program: COPY Meaning: The program has found bad memory in the area it would use to buffer the disk data. Error Message: ?? Page 0 pointers corrupted From program: SETTOD, SINGLEA Meaning: You have tried to run the one of these pro- grams on another computer, or low memory has been altered. RESET and try again. Error Message: ?:ERR From program: BIOS Meaning: A user program has corrupted the BIOS disk drivers, or has called the BIOS disk drivers improperly (? is replaced by the drive no.) Error Message: BIOS is not Edit 04 or is not the same as the system on the A: disk drive From program: FKSET Meaning: You are running the wrong version of the FKSET program. Make sure you have a BIOS and FKSET from the SAME distribution disk. -- or -- Your dealer may have modified the BIOS and ne- glected to modify the FKSET program. Error Message: Cannot determine disk format type From program: COPY Meaning: The program cannot find out the disk format being used on the disk. This generally means that the disk in use is unformatted. Error Message: Cannot FORMAT From program: FORMAT Meaning: The program cannot write the proper data patterns on the disk being formatted. Error Message: Cannot open file MOVCPM.COM From program: SETUP Meaning: The MOVCPM file was not found on the current- ly logged in disk drive. Error Message: Cannot VERIFY From program: FORMAT Meaning: The program could not read the proper data patterns back from the disk being formatted. Error Message: Destination disk data compare error... From program: COPY Meaning: The data read back from the output disk does not match the data read in from the source disk. Error Message: Destination disk write error... From program: COPY Meaning: A bad spot was detected on the output disk. Replace the disk and try the copy again. ..blank line if not page break here Error Message: Destination disk write protected. Write ena- ble, strike any key From program: COPY Meaning: The output (destination) disk is write pro- tected. Error Message: Different System! From program: BIOS Meaning: A disk of a different memory size or revision was warm booted from. Error Message: Drive not ready. Load drive, strike any key From program: COPY Meaning: The specified disk drive was not ready. Error Message: Error: Console is not assigned to Serial B From program: COMM Meaning: The CP/M console must be on the Serial B port for the program to run. Error Message: Error: Source and destination drives cannot be identical. From program: COPY Meaning: An attempt to copy a disk to itself has been made. Error Message: Fatal disk I/O error on A: From program: FKSET Meaning: The FKSET program could not successfully read or write the function key definitions. COPY the disk and try again on the new copy. Error Message: Illegal format - double sided single density From program: FORMAT Meaning: You cannot format a disk in this manner. Error Message: Insufficient memory to run program... From program: SYSGEN Meaning: You need at least a 33K CP/M system to run this program. Error Message: Invalid argument: From program: SPOOL Meaning: An option was either out of range (for numeric data) or an unused option letter was detected. Error Message: Invalid date or time specified From program: TOD Meaning: The date or time fields given to TOD were invalid. Error Message: Invalid keyword: From Program: SPOOL Meaning: The keyword input to SPOOL was not !PAUSE, !RESUME, or !STOP. .pa Error Message: Invalid option - use one of the following... From program: TOD Meaning: The syntax you used is invalid. Use one of the example syntaxes provided. Error Message: Invalid value for WSIZE: parameter... From program: MOVCPM Meaning: The work size parameter (See MOVCPM infor- mation above) is not in the range of 0-3. Error Message: Invalid xxx, re-specify... From program: SETUP Meaning: An invalid type of input was received. Re- enter the value properly. Error Message: I/O error in $$$.SUB file... From program: SETUP Meaning: The SETUP program could not create a work file on drive A:. Write enable the A: disk and re-run the SETUP program. Error Message: No files match specifier: From program: SPOOL Meaning: The file(s) specified on the SPOOL command line do not exist. Error Message: Not an extended density diskette From program: SYSGEN Meaning: You can only SYSGEN onto an Extended density diskette, and the diskette you are using isn't. Error Message: Page 0 pointers corrupted or not a Pro-Comp CP/M From program: FKSET Meaning: You have tried to run the FKSET program on another computer, or low memory has been altered. RESET and try again. Error Message: Requires CP/M 2.x From program: SINGLEA, SPOOL, XSUB Meaning: These programs only run under CP/M 2. You are trying to run it on another machine running CP/M 1.x. Error Message: SINGLEA already present From program: SINGLEA Meaning: The utility is already loaded Error Message: Source disk read error ... From program: COPY Meaning: The program could not read the source disk. Enter the appropriate letter to continue. Error Message: SPOOL already paused, command ignored. From program: SPOOL Meaning: You cannot !PAUSE the spooler if it is already !PAUSED. .. blank line if not a page break here Error Message: SPOOL already present. From program: SPOOL Meaning: The SPOOL program is already running. Wait for output to finish, type Control-C, and re-enter the command. Error Message: SPOOL completed, command ignored. From program: SPOOL Meaning: A !PAUSE or !STOP command was issued, but out- put has already been completed. Error Message: SPOOL not paused, command ignored. From program: SPOOL Meaning: A !RESUME command was issued without a prior !PAUSE command. Error Message: SPOOL not present From program: SPOOL Meaning: A SPOOL keyword was given, but the spooler is not running. Error Message: Syntax 'MOVCPM' or 'MOVCPM *' not allowed... From program: MOVCPM Meaning: The program does not allow running the just created system. It will proceed as if you typed 'MOVCPM nn *' Error Message: This is not an executable program From program: CPMxx.COM Meaning: Created CP/M systems are saved under the name CPMxx.COM by MOVCPM. You cannot execute these files, however. You must SYSGEN it in order to use it. Error Message: This program cannot be run under MP/M From program: COPY, FORMAT, SYSGEN Meaning: The program is ONLY designed to run under a Pro-Comp CP/M. Error Message: Uh-Oh! From program: BIOS Meaning: The BIOS on the disk being booted has been corrupted. Error Message: Unexpected end-of-file in MOVCPM.COM... From program: SETUP Meaning: The MOVCPM file on the disk is incomplete or corrupted. Error Message: Usage is ... From program: SPOOL Meaning: The SPOOL command was entered with no arg- uments. SPOOL is informing you of the legal options to use. .pa Appendix E - Mode area listing The following code segment shows the mode area found in the BIOS. This is the area modified by SETUP, and is included here for informational purposes. The start of the mode area may be found by applying the computations found in Appendix F. .uj 0 marea equ $ !=;start of mode area ; db 'C' ;C for CP/M db edit ;revision token (04 for CP/M 2.23) mbyte: db 0 ;01H = cold 02H = warm 03H = both mauto: db 6,'MODULE',0 ;Auto command name, ended W/ null ds 25 ;room for expansion defiob: db 01010100b ;default iobyte (LST:, PUN:, RDR: ;on Serial A, CON: on Serial B) protcl: db 11h ;printer protocol (0-none, 6=ETX/ ;ACK, 11h=^S/^Q) sioahw: db 0 ;set to 0ffh if H/W hs on SIO A samsys: db 0 ;set to 0ffh if never changing A: fil256: db 0 ;set to 0ffh for 256 files (8") comona: db 0 ;set to 0ffh for drive A: common shousr: db 0 ;set to 0ffh to display the user # publc0: db 0 ;set to 0ffh for user 0 public iniund: db 0 ;initial user number and drive ds 2 ;reserved sioabr: db 47h,8h,44h ;9600 baud printer speed siobbr: db 47h,8h,44h ;9600 baud console speed nobrak: db 0 ;set to 0ffh to disable BREAK key buflsh: db 1dh ;buffer flush character seropt: db 0 ;serial expansion option ;0=none, 1=P-C/8, 2=P-C/80 sercbr: db 0eh ;Serial C baud rate (9600) serdbr: db 0eh ;Serial D baud rate (9600) clkopt: db 0 ;set to 0ffh if backup clock opt. partyp: db 0 ;parallel printer type, 0=None, ;1=Cent., 2=DP, 3=Other ds 5 ;room for expansion dtypes: db 0 ;drive types all 2-sided (5") seekrt: db 15 ;disk drive step rate in Ms. ndrive: db 2 ;number of disk drives fkldin: db 1bh ;function key leading code (ESC) fktdel: db 4 ;max. leadin delay fkterm: db 0 ;3-char. seq. if 0ffh, else 2 fktabl: db 'P' ;Chat PF1 code db 'Q' ;PF2 db 'R' ;PF3 db ' ' ;PF4 db '!' ;PF5 db '"' ;PF6 db '#' ;PF7 db '$' ;PF8 db '%' ;PF9 db '&' ;PF10 db 0,0,0,0,0,0 ;Chat doesn't have PF11-PF16 .uj 1 .pa Appendix F - Location of code within the BIOS Various locations within the BIOS are accessible via user- written assembly language programs. The following code describes what they are and demonstrates how to access them. .uj 0 (user program code) lhld 1 ;get address of BIOS lxi d,30h ;offset to pointer area dad d ;[HL] now has start of pointers lxi d,x*2 ;where x is the desired vector dad d ;[HL] has desired pointer mov e,m inx h mov d,m ;[DE] now has desired address (code in BIOS) BIOS+33H: dw marea ;mode area pointer dw dpbsds ;start of DPB's dw xltsd ;start of xlate tables dw pbase ;start of patch area dw psize ;size of patch area dw iresp ;interrupt vector table addr. dw botinf ;bootstrap info. save area dw fundef ;function key definition area .uj 1 The meanings of the pointers are as follows: MAREA: The start of the Mode Area. (See Appendix E for a list- ing of the mode area.) DPBSDS: The start of the Disk Parameter Blocks. The DPB's are in the order shown in Appendix C. XLTSD: The start of the sector translation tables. The tables are in the order shown in Appendix C. PBASE: The address of the start of a patch area reserved for Pro-Comp's use. PSIZE: The size of the patch area starting at PBASE: IRESP: The start of the interrupt service routine address list. For more information on the address list, see the manual section on user-written interrupt handlers. BOTINF: The start of a 9-byte area containing the boot param- eters of this disk. That is, these 9 bytes contain the same information found in locations 900-908 of a SYSGEN image. For information about these bytes, consult the 'ROM Monitor User's Manual'. .pa FUNDEF: The start of a 256-byte area containing the current function key definitions. Each key definition takes 16 bytes and there are 16 such definitions. The definition is explained in the manual section on terminal function keys. Warning: Indiscriminate changes in this area can have V*E*R*Y nasty results. This area is provided mainly for the use of system programs distributed by Pro-Comp Systems. It is suggested that you only modify these location if you are a VERY experienced system programmer. .pa Appendix G - Default values in the interrupt table The following table shows the default values found in the interrupt service routine address table. To find this table, apply the computations found in Appendix F, above. .uj 0 ; iresp: dw nulint ;DMA controller ready dw nulint ;DMA controller match dw dmaint ;DMA controller end of block dw nulint ;DMA controller match & EOB ; dw nulint ;SIO B transmitter buffer empty dw sbxint ;SIO B external status change dw sbrint ;SIO B receive character available dw sbsint ;SIO B special receive condition ; dw nulint ;SIO A transmitter buffer empty dw nulint ;SIO A external status change dw nulint ;SIO A receive character available dw nulint ;SIO A special receive condition ; dw nulint ;CTC channel 0 dw nulint ;CTC channel 1 dw nulint ;CTC channel 2 dw clkint ;CTC channel 3 (real-time clock) ; dw nulint ;PIO A input dw nulint ;PIO B change of status dw nulint ;PIO A output ; dw nulint ;uPD 765 interrupt .uj 1 ** End of document **