JEKFONT 2.02 97-09-07 Programmed by Joakim Ek Freeware - Free of any charge & Free of any warranty WHAT IS THIS? JEKFONT is a DOS screen-driver for cyrillic characters. It supports 9 diffrent codepages (7 common plus 3 of my own) plus the standard ROM-font. If loaded after KBJEK they will cooperate so that the keyboard sends the characters in the codepage that is currently selected by JEKFONT. You may use it alone though. It is a TSR that occupies about 7.5K of memory. WHAT IS NEW 2.02 - 97-09-07 R-key in jek-CP852 was set incorrectly wich disabled it. The double mapping in KOI-7, using the same characters with bit 7 set, made it impossible to type 7-bit characters using KBJEK. Characters 128-255 will now display ASCII 128 when using KOI-7 (They are undefined since KOI-7 is a 7-bit codepage), making the keyboard KBJEK work ok. Minor spelling-errors etc in this .DOC-file fixed. 2.01 - 97-04-01 A bug in version 2.00 made the cooperation with KBJEK to be disabled even if both where loaded. Fixed. 2.00 - 97-01-01 to 97-01-03 First released version. 1.0x - 96-12-29 to 96-12-31 Experimental versions. Never released to the public. Only for displaying codepages, no connection to KBJEK. STARTING JEKFONT You simply type JEKFONT at the DOS-prompt, or place it in AUTOEXEC.BAT. If the program already is loaded it will not be loaded again. You should load KBJEK before JEKFONT if they shall cooperate. You may pass a parameter to the program. Either when it is loaded the first time, to select the startup-codepage/file. Or at any later time to change the codepage or replace the font/table-file of the already loaded JEKFONT. An example: JEKFONT 7,C:\UTILS\JEKFONT.FNT This will activate codewpage 7 and load the font/table-file JEKFONT.FNT. You must use exactly one space before the number, and if a file is specified; a comma followed by the filename with no spaces at either side of the comma. You cannot enter a filename without entering a number, but only a number is ok. The number may be 1-9 to select the corresponding codepage or 0 to select the standard ROM font. CONTROLLING JEKFONT You may switch the codepage or change the file by typing JEKFONT #[,filename] on the command-line, as explained above. You may also switch table by pressing a key-combination. By holding down LEFT CTRL and pressing F1 to F9 to select a codepage or F10 to select the ROM-font. You may control JEKFONT from another program using an INT 16 call. You should always set AX to 415F and then the following: BH=10 Install-check and info. This will return: AX=BABE (Indicates that it's installed) BL=00 to 09 The current codepage selected, 0=ROM. CX=0202 The program-version 2.02 ES:DX Pointer to the font/table-file in memory. ES may be used if you want to locate the program. BH=12 Select codepage. Returns nothing. You should supply the codepage in BL. 0 means none (ROM) and 1-9 selects that codepage. BH=11,13-1F is reserved for futher use. If BH is none of the above or AX is something else than 415F the call will jump to the prevoius INT 16 without any action taken. BUILTIN CODEPAGES The following codepages are defined in JEKFONT: 1 ALT Russian Alternate Cyrillic / DOS Codepage 866 2 KOI8 KOI-8 codepage. 3 KOI7 KOI-7 codepage (7-bit). 4 BDS BDS codepage. 5 WIN1250 Windows cyrillic codepage 1250. Not all the characters between 128 and 191 are included. 6 ISO ISO 8859-5 codepage. 7 jek850 jek Cyrillic Codepage 850 (224-255=cyrillic ucase) 8 jek852 jek Cyrillic Codepage 852 (lcase a-”=cyrillic ucase) 9 jek865 jek Cyrillic Codepage 865 (225-254=cyrillic ucse) The last three is my own codepages. They will probably not be of any use to anyone else not having my programs or files. The other is ok as far as i know. I have seen a little diffrent verions of the KOI codepages regarding the ukrainan cyrillic. When used with KBJEK that sends ASCII according to the current codepage the linedraw and cyrillic characters will always be ok. Though if You use a codepage where mot all characters are available, keys mapped to thoose characters wont output anyting. REDEFINING FONT The font can be redefined if you like. Although you may edit the source-file it is easyer to use the program FNT_EDIT that is included. You may enter the filename on the command-line: FNT_EDIT C:\UTILS\JEKFONT.FNT It will open JEKFONT.FNT in the current path if by default. You step between the character using arrows left/right or PageUp/Down. To edit a character press Enter. You may then go around with the arrows and toggle a bit on or off using space. Press Enter to save or ESC to abandon the changes to that character. ESC will exit the program. You may copy a character by standing on the source and press Delete, then go to the destination, enter editmode by hitting Enter and then insert the character by pressing Insert. It will not show before you exit or walk over it with up/down keys.(bug) The JEKFONT.FNT included only contains the bit-map-font. You might load a file that also contains one or more tables at the end, starting at table 1. You may NOT load only codepage-table(s) or a table with a high number without loading also the lower numbers and the font-bit-map. You should not place any character in position 0 or 1 since the values 0 and 1 is reserved. Its recommended that you do not alter the meaning of codes from 64 and up, or below 11. Of course you may alter the apperance of thoose characters if you like. New characters should be entered from 12 to 63, excluding 21 and 35 thats already been defined. Note that the file JEKFONT.FNT is not used by the program unless speified on the command-line. So if you don't use any custom characters you don't need JEKFONT.FNT to run JEKFONT.COM. REDEFINING CODEPAGES You may edit the tables that define the diffrent codepages. This is either done with a hex-code-editor or by editing the source-code and "recompile" using: DEBUG < JEKFONT.MOC The tables are at the end in the source-code file. If you use a hex-editor to edit a FNT-file the font-bit-map occupies the first 4096 bytes (1000 hex) and then begins the tables with 256 (100) bytes each. 1 to 9 tables may be defined. It's not recommended to edit the COM-file directly, you should rather edit the source and recompile. Each entry in a table corresponds to what should be displayed for that ASCII value, that is position 64 should contain the value to be used to display an at-sign, @. If a value is set to 0 that character will not be redefined, that means the default ROM-character will be displayed. This is normally the case for everything below 128/80 hex. 1 is reserved in KBJEK for 'undefined' and should not be used. Any number from 2 to 255/FF represents the position of the character in the JEKFONT.FNT or builtin font-bit-map. Since linedraw- and other characters above 128 is often moved to another location in the diffrent codepages, i have made a copy of the standard characters 128-255 at the same place in the JEKFONT font. This means that if you want to move the vertical line, 179/B3, to a new position you enter B3 in the new position. This makes it easy to remember the numbers of the standard characters. The standard cyrillic characters are placed at 64-95 (upper case) and 96-127 (lower case). They are in standard alphabetical order, witch corresponds to most codepages, exept KOI-8/7. The extra cyrillic used in Ukraina and other places are placed at 2 and up. You may use FNT_EDIT to see the exact position. 21/15 is a paragraph and 35/23 is a "No" character, that sometimes replaces #. (Since BDS seems to be the only codepage that contains "No" but it's present on both Bulgarian and Russian keyboards, i have usually placed # on AltGr+3 in the KBJEK tables) COMPATIBILITY The program only uses a 8x16 bit font, so it won't work on any card/resoloution that uses 8x19, 8x14 or 8x8 font. It hooks on INT 10 (BIOS Graphic Services) to detect a video mode selection, and refresh the font-table whenever the screen is switched to textmode (mode 1-4,7). It will not refresh automatically on any other mode. Normally it uses FontBank 0 for all codepages, because some graphic-cards (at least ATI Graphic Expression PCI) does not allow bank 1 to be used. If you have another card (at least Cirrus Logic 5429 VLB) you may set it up to use bank 1 for alternate codepages (1-9) and bank 0 for ROM-font. If this is used it will not load the ROM-font into bank 0 thus letting you use a diffrent font as 'ROM'-standard like a CPI-font supplied by DOS. To do this switch the two lines in the beginning of the source marked "ATI" and "CL" so the apropriate one is below the other, and recompile. It also hooks on IRQ 1/INT 9 to look for a LEFT CTRL+Fn keystroke. And Finally hooks INT 16 to communicate with the program when loaded in memory. if INT 16 is called with AX=415F & BH=1x it will take some action, any other value in AX or BH will make it jump to the previous INT 16 routine. If this should conflict with some other program it can be changed to another value by editing the source but i don't think thats neccesary. AT LAST I hope You have use for this program. I know that i have ! If you want to ask anything, make suggestions or bug-reports or anything else you may email me at: jek@swipnet.se (At home, will probably expire Nov 1997) jocke@ecedata.se (To my work, hopfully will last forever) I wont promise that i fix anything, or even answer the letter, but i will try if i have the time. If a new version is made it can probably be downloaded at: http://www.ecedata.se/jocke/files/jekfont.arj Regards jek [EOF]