^¦@ @ Œ}Ò}CONCURR DOC’V@ Ñ}INSERT A86 ÷@ Ò}SH19 DAT& Þ@ Ò}AUTO SUB'ÍÀ@ Ò}ÿÿÿCONCURRENT.DOS (CCP/M) MODIFICATIONS: Offered for your use - no promises made but it is working fine on my machine. Bob Hines - Hines Electric Co 1620 Elm Ave Winter Park,Fl 32789 (305) 644-2332 In the process of getting concurrent.dos or CCP/M up and running, and using a Heath H19 terminal, I found myself missing the use of the keypad function keys in such things as Wordstar and other programs that use the ^S^E^D^X etc functions. Concurrent has quite an involved proc- edure for implimenting escape codes. It also uses the function keys to change virtual screen through transmitted escape codes. There are three or four traps, a 16ms delay loop among the processes used. For those of us with the super chip in the H19 (H89,etc), there is a neat sequence that converts all escape codes which are a combination of 2 characters into a single 8bit character which is then translated by the XIOS and executed. This eliminates problems with timing loops which vary with different chip speeds, etc. Simply what happens is that when you hit a function key, or one of the keypad characters, they are transmitted as single characters with the 8th bit set. A section of the Vscreen section of the XIOS is replaced with a substituted section and a lookup table is added in the dseg. These steps coupled with an automatic (upon boot) execution of a submit file which sets the function keys and keypad to the proper mode works fine and eliminates a lot of timing critical code. These changes will require editing and reassembling of the XIOS and should be attempted by someone with a little knowledge of assembly. To install: 1. Edit the A86 file called VSCZ19.A86 which is the H19 module. Starting with the section labled "Console input Routine" with the first label as conin_0:, eliminate all code up to the section called "Serial output routine". This is about a page and 1/2. Substitute the code labled "conin.a86" in this library. You will notice that it eliminates a whole lot of escape related code. 2. Insert in the dseg section toward the back of the H19 module, the enclosed code called "contab". This is the lookup table. 3. Reassemble VSCREEN.A86 to get a new vscreen.obj file, then reassemble HEADENTR.A86 to get a new headentr.obj file, then continue through and link all modules, perform the genccpm and finally sysgen a new boot routine. It will be bootable at this point. 4. Copy the short file called 'SH19.DAT' to your system disk and create a submit file called 'AUTO.SUB' which contains the line 'TYPE SH19.DAT'. Auto.sub is looked at and executed during bootup if present and this will set the proper modes for the super chip. Now when you boot, the AUTO.SUB will set the cuper chip, and any escape functions or control code as used in wordstar will go through conin_o: and will be translated into the proper sequence. Thanks to Gordon Finley for several hours of handholding over the phone and also for initially setting up this sequence in CP/M86 bios.  ;************************************************ ; * ; Console input Routine * ; * ;************************************************ conin_0: ;------ ; ENTRY: bx = addr of the Q control block ; EXIT: ah = 0 if characters are being returned. ; ah = 0FFH if this is a screen switch code being returned push bx ; save the Q control addr call serial_in ; get the character cmp al,80H ;is it an 8bit char? ja do8_0 ;if yes, go to 8bit routine pop bx ; restore the Q control addr mov ah, 0 ; set ah as a character code and al,07fh ;strip 8th bit if any ret ;********************************************************** ; 8bit conversion routine ; do8_0: and al,07fh ;strip the 8th bit pop bx ;get Q ctl addr cmp al,'S' ;is it an ' (S) jb do8_1 ;jmp if less than S cmp al,'S'+vcoff-1 ;is it over allowed # of vir cons ja do8_1 ;jmp if over ; otherwise we DO have a screen switch character sub al,'S' ;normalize screen # to 0 mov ah,0ffh ;set screen switch return code ret ;*********************************************************** ; convert any other stripped 8bit char with CONTAB do8_1: sbb al,'#' ;set table offset cnt to 0 jb do8_2 ;too low, can't use push bx ;save Q ctl addr mov bx,offset contab ;beg addr of CONTAB mov ah,0 ;set normal return char code add bx,ax ;determine offset mov al,[bx] ;converted char from table pop bx ;get Q ctl addr back ret do8_2: mov ax,00 ;force a null ret eC = t i: type sh19.dat a: