JRCONFIG Version 2.10 This device driver will make the configuration during the boot process quick and easy for an IBM PCjr. If you find this program useful, please send a contribution of $5 or $10 to Larry Newcomb 9210 Adelaide Dr. Bethesda, Md. 20817 This contribution will encourage me to continue to enhance this program, and to write other programs for the PCjr. I have some other requests for enhancement that are not yet implemented, so I expect to have another version out in a few months. If you have any suggestions for future enhancements or other utility programs, send me a letter and I will consider them. New to this version: 1 I have changed the names of the two versions to clear up some of the confusion over which version does what. Also the defaults for all options now work the same for both versions. JRCONFIG.DSK - the .DSK signifies a ramDiSK and replaces the old .SYS extension JRCONFIG.NRD - the .NRD signifies No RamDisk and replaces the old CONFIGJR.SYS 2 There are some programs that needed to have MODE CO80 run before they would display boarder colors properly. I believe I have fixed the -t3 option so this will no longer be necessary. 3 -x option to fix the step rate in DOS 3.1; this will make the disk drives run quieter. 4 -e option to change the number of entries in the directory of the ramdisk. 5 -y option to install the jrSynchro cartridge if you have it plugged in. 6 -p adds a printer online check for shift-print screen, and will allow selection of lines to print. 7 -h will force the top of DOS user RAM to a given amount. 8 The DEBUG session for RAM.SYS has instructions for changing the number of entries you can have in the ramdisk directory. 9 The check for the PCjr ROM BIOS has been removed. You MUST have at least 256K of memory to use this program. To use this driver put the file JRCONFIG.DSK on a bootable DOS 2.1 disk. On the same disk put the following line as the FIRST line of your CONFIG.SYS file. Then re-boot. device=jrconfig.dsk This will: Install your expansion memory (256K to 640K). Install a 91K ramdisk in your internal memory (first 128K). This ramdisk will take the first available letter after your physical drives (starting with C:). If you only have one drive, drive B: will still be a phantom drive. By filling up your first 128K, DOS will be forced to load your programs into your expansion memory, which will cause your programs to run faster. Put your screen in 40 column, low intensity, black & white. Options: ( -c -d -e -h -k -l -p -s -t -v -w -x -y ) -c will turn on the keyboard click. -d will cause DOS to recognize extra floppy drives, use -dn option, where n is 1 to 4. -e will set the number of directory entries allowed on the ramdisk. The default is 16 entries. Use -en where: -e1 will allow 32 entries -e2 will allow 64 entries -e3 will allow 128 entries Each entry uses 32 bytes of the RAM reserved for the ramdisk. -h is not designed for the average user. I use it for testing programs I want to put outside the DOS user area. -hnnn will put nnn as the top of ram, regardless of how much ram you actually have; ie, -h512 will set the top of ram to 512K. If you don't have that much ram, your system will probably crash. You should NOT use this option and -l at the same time. -k will set Caps-Lock (Note: If you have a keyboard with an indicator light for Caps-Lock, the light will not be turned on.) -l will look for extra RAM, starting at 640K and will stop at 736K, and give it to DOS. (Note: 640K is where the ROM stops testing RAM and 736K is where video ram "logically" starts.) This option will only perform a superficial check for RAM. You will need to use a ramtest program to check for bad chips above 640K. -p will patch the shift-PrtSc interrupt to check and make sure the printer is ready before it tries to print the screen. This will stop the system from locking up if the printer is not ready. If you want to have a form feed (FF) automatically sent to the printer at the end of the screen print. Use -pn there n is: 0 - no Form Feed added (default). 1 - the right shift key will add the Form Feed. 2 - the left shift key will add the Form Feed. 3 - either shift key will add the Form Feed. If you want to be able to select which lines are printed, use any of the following: 4 or 12 - no FF 5 or 13 - right shift for FF 6 or 14 - left shift for FF 7 or 15 - either shift for FF With options 4 thru 7 or 12 thru 15: You can choose which lines on the screen are to be printed. these lines are put into a buffer until you have added all the lines you want printed. Then the contents of the buffer is printed. The RAM for this buffer is the second page of video RAM, therefore, if you use the -vn option, you must not use n less than 6. This also means that you can not use this function if you are running a program that uses graphics, this function is for alpha modes only. When you press shift-PrtSc, the cursor will go the top left corner of the screen. Use the following numeric keypad keys: - Use the up and down arrows to move the cursor from one line to another. - Use the Insert key to add a line to the buffer. After moving the cursor to the line you want to print, press the Insert key. When a line has been selected, that line is changed to high intensity white on black. This will not happen on line 25. I leave the bottom line alone because several programs I use have a status line on line 25 that is in reverse video, but you can still print line 25. If you do not want the high intensity on any line, use n = 12 thru 15. - Use the End key to print the contents of the buffer. When printing is complete, the top 24 lines will be put in low intensity white on black. Again, I leave the bottom line alone. If you use n = 12 thru 15, the intensity will not be changed. - The Delete key will cancel the shift-PrtSc session, and return to where you were before pressing shift-PrtSc. - The Home key will cause the normal shift-PrtSc function to be executed. You should use this if you want to print a screen from a graphics program. If you press any other key, you will hear a beep. It is possible to add a line to the buffer more than once. If the buffer becomes full, you will hear a beep when you press the Insert key. If you press shift-PrtSc while you are already in the selective print screen mode, the second session will not be activated (you can only have one shift-PrtSc session active at a time). However, the shift key you used the second time will overwrite the one used for the original session. You can use this feature if you change your mind about whether or not you want a Form Feed added. -s sets the size of the ramdisk, use -sn where n is the number of K bytes you want the ramdisk to be. The ramdisk size may be a little larger than the value you put in, because of video page boundaries. The default size is 91K for DOS 2.1 and 79K for DOS 3.1. (10K is the smallest ramdisk you can have, because that is how much room is left on the video page where IBMDOS.COM is loaded with DOS 2.1, and this space can not be used for anything else anyway. With DOS 3.1 you get about 15K, because IBMDOS.COM is larger and video ram must be moved to a higher video page). There is no upper limit on the size of the ramdisk (other than the amount of RAM you have in your computer). -t will set the video display mode, use -tn where n is: Alpha Modes 0 for 40 X 25 B/W (Default) 1 for 40 X 25 Color 2 for 80 X 25 B/W 3 for 80 X 25 Color Graphics Modes You can get some funny looking 4 for 320 X 200 4 Color screens when you boot up in a 5 for 320 X 200 B/W 4 Shades graphics mode because DOS expects 6 for 640 X 200 B/W 2 Shades to be in Alpha mode. 7 is not a valid mode Extended Graphics Modes 8 for 160 X 200 16 Color 9 for 320 X 200 16 Color 10 for 640 X 200 4 Color -v will reserve video ram, where n is 4 to 96. Normally 16K is set aside for video ram, you can either decrease or increase this amount with this option. Using -v4 will reserve 4K for video, giving you an extra 12K of user ram, but you must not use any graphics modes. If you are concerned about speed, you may not want to use this option with a value less than 16. The extra RAM that you get this way will be in the video page, and that will be in the first 128K. Any other device drivers and COMMAND.COM will load into this area. Unless you have some large device drivers, the regular DOS programs you run will start in this low RAM. Don't be fooled by the size of the files on the disk. JRCONFIG is over half initialization code, the resident portion is less than 1K. Only about 3K of COMMAND.COM will load into low memory, the rest is the transient portion that is at the top of DOS memory. High values are used for reserving ram to be used for high-res graphics (32K) or extra video pages. -w will put a clockwise spinning character in on the top row of your screen, use -wnn where nn is the column you want it to appear in. -x will set the proper step motor rate in DOS 3.1, this will make the disk quieter. Note: this will not take effect until after you see the initialization message. -y will install the jrSynchro cartridge if you have it in a slot. If you are not familiar with this cartridge. It replaces the keyboard and floppy disk interrupts, and allows the keyboard to be used while the disk drive is being accessed. It seems to work fine with DOS 2.1, but there are some problems with DOS 3.1. It also will give you a 47 character buffer (DOS gives you 15 characters) if you install the buffer in the first 64K of RAM. Unfortunately, this is very restrictive if you want to force your programs into expansion RAM. This is the primary reason I install it in JRCONFIG. I allocate the buffer inside JRCONFIG, which is always in the first 64K. If you want the 47K buffer, you can put JRSYN47 in your AUTOEXEC.BAT. I have used two versions of the cartridge, 1.2 and 1.4. Use: -y for version 1.2 -y1 for version 1.4 with parity check -y2 for version 1.4 with no parity check If you have another version, try using one of the available options anyway. If you see JRSYNC in the initialization message that JRCONFIG prints, then JRCONFIG found the cartridge. If your computer locks up, you have an incompatible version. Cartridge Basic compatibility: Cartridge Basic is written to run in the low RAM of an unexpanded PCjr. If you have a copy of JBASIC.COM, you can run it to enter Cartridge Basic when using expansion RAM. It is a short program that sets up an environment for Cartridge Basic to run in. One of the things it does, is it gets information from the ramdisk device driver about low memory and the video page. JRCONFIG will give it the information it needs to set up the proper environment. It also checks for a hardware register that is on a MS Booster. If it can not find this register, it will abort. Below is a print out of a DEBUG session that will remove the check for the MS Booster, and change the drive that it expects the ramdisk to be. If JRCONFIG is drive C:, you can ignore the 2 lines that change the drive from C: to D:. If JRCONFIG is E: then change the 03 to 05. The forth to last line changes the name that DEBUG uses to DBASIC.COM, so that DEBUG will write a new file. I chose the name DBASIC.COM because this new modified program will work when JRCONFIG is D:. The 6797 at the beginning of most lines will probably be a different number for your DEBUG session. A>debug jbasic.com start debug session -u108b unassemble code 6797:108B BA3F02 MOV DX,023F hardware address on booster 6797:108E B091 MOV AL,91 6797:1090 EE OUT DX,AL 6797:1091 BA3D02 MOV DX,023D hardware address on booster 6797:1094 B05A MOV AL,5A write a byte to the register 6797:1096 EE OUT DX,AL 6797:1097 EC IN AL,DX read a byte from the register 6797:1098 3C5A CMP AL,5A compare read to written byte 6797:109A 750E JNZ 10AA jump if they are different 6797:109C BA070B MOV DX,0B07 6797:109F BB0300 MOV BX,0003 drive C: 6797:10A2 B004 MOV AL,04 read function 6797:10A4 B444 MOV AH,44 I/O control 6797:10A6 CD21 INT 21 get information from ramdisk 6797:10A8 7306 JNB 10B0 jump if read is successful -e1097 6797:1097 EC.90 replace read instruction with NOP -e10a0 examine ramdisk drive letter 6797:10A0 03.04 change from C: to D: -ndbasic.com change name of file -w write new file Writing 15AF bytes -q quit and return to DOS JRCONFIG.NRD (formerly called CONFIGJR.SYS) is the version that will not install a ramdisk. This version will not cause problems with hard disk drivers that insist on being drive C:. All the defaults are the same as they are in JRCONFIG.DSK. If you want your hard disk device driver to load into external memory, do not use the -s option. This will waste some of your internal RAM, but your hard disk driver will run faster. If you have one of the hard disks that have a ROM on the controller, you may still experience some increase in speed by sacrificing your internal memory, because all device drivers and COMMAND.COM will load into external memory. You should experiment to see if it makes a difference for your configuration. One of the enhancements that someone has requested is a way to use the low RAM that is wasted by not using the -s option. I will probably provide this with the next release. EXAMPLE: device=jrconfig.dsk -d2 -t3 -c -p6 will: Tell DOS you have two floppy disk drives. Boot up in 80 column color mode. Turn on the keyboard click. Cause the shift-PrtSc key combination to first check for the printer to be ready, then allow selective print screen, and add a formfeed if the left shift key is used. FOR BEGINNERS: Here is a quick and easy way to start using this program. Format a new disk using the /s parameter. This makes the new disk a bootable disk. Refer to the DOS manual if you have not used the FORMAT command. Then copy JRCONFIG.DSK to the new disk. Then type the following three lines from the DOS prompt: copy con config.sys device=jrconfig.dsk -t3 -c ^Z The first line tells DOS to copy from the keyboard to a file called CONFIG.SYS. The second line is what is put into the file, you can add any other options to this line you want. The third line is the end of file marker, DOS will add this to the file if you press the F6 function key. I hope this is as useful to others as it has been to me. If anyone has any questions about this device driver, or if you think there is a bug, you can write me at the address at the beginning of this documentation, or you can leave me a message on Battleship Pennsylvania 301-428-3145. This bulletin board is associated with the METRO PCjr USER GROUP. I have included another program that I find useful. I get very annoyed at the DOS message to insert a disk with COMMAND.COM and press a key. I think that putting COMMAND.COM on all my disks a poor answer. I got this program from a bulletin board, and it has made my life much easier. COMSPEC.COM - If you put the following 3 lines in your AUTOEXEC.BAT, you will always have COMMAND.COM on your ramdisk that is created with JRCONFIG.DSK. 1. set comspec=c:\command.com - this line uses the DOS 'set' command to tell DOS where to find COMMAND.COM; however, there is a bug in DOS and this doesn't work by itself. 2. comspec c:\command.com - this line executes the program COMSPEC.COM, which causes DOS to recognize the 'set' command 3. copy command.com c: - this line copies COMMAND.COM to the ramdisk NOTE: The numbers at the beginning of the 3 lines do not go in AUTOEXEC.BAT they are only there for easier reading.If you have 3 or 4 floppy drives, then the ramdisk will be D: or E: I modified RAM.SYS to have a spinning character in the upper right corner of the screen. It is 2 spaces to the right of the one for JRCONFIG.DSK and spins counter clockwise. For those of you who don't already have it, add the following line to your CONFIG.SYS device=ram.sys This will install the device driver. You then run the program SETRAM.EXE. setram d n Where d is the drive specifier and n is the number of K bytes to use for the ramdisk. The ramdisk will take the next available letter; therefore, if you have three floppy drives (A: B: C:), JRCONFIG.DSK will be drive D:, and RAM.SYS will be E:. You may want to add this line to your AUTOEXEC.BAT. You can have RAM.SYS installed more than once in CONFIG.SYS, each occurance will take the next drive letter. You can remove the ramdisk at any time by running setram d This will free up the ram used by the ramdisk. NOTE: you will loose any files that were on it. You can then recreate the ramdisk at any time, because the device driver is still installed. If you want to move the spinning character to the left, you can change the position using DEBUG.COM. You can also change the number of directory entries. The following is what a DEBUG session will look like. The hyphens are the DEBUG prompt and are not typed in. debug ram.sys This starts the program. -e284 If you want to move the spinning character. XXXX:0284 9E.nn DEBUG responds with everything on this line except the nn. This will be the new offset of the spinning character. Subtract two from hexidecimal 9E to move one space to the left; ie, nn can be any even number from 0 to 9E. -e126 If you want to change the number of directory entries XXXX:0126 40.nn Replace 40 (64 decimal) with nn, the number of entries you want. I suggest you only use even multiples of 10 (16 decimal). 80 (128 decimal) is probably as high as you will want to use. Every 10 (16 decimal) entries will use 512 bytes of memory. -w This will cause the modified program to be written to the disk. Writing 01B9 bytes The message from DEBUG. -q Ends the debug session.