NAME mszz10 ; File MSZZ10.ASM include mssdef.h ; Copyright (C) 1982,1991, Trustees of Columbia University in the ; City of New York. Permission is granted to any individual or ; institution to use, copy, or redistribute this software as long as ; it is not sold for profit and this copyright notice is retained. ; Terminal emulator module for Zenith-100 based on mszibm.asm. ; Most of the contents of this file including all of the VT100/VT52 ; emulation is left inactive (commented out). I hope to be able to ; come back with a more complete implementation later on. ; Edit history ; 2 March 1991 version 3.10 ; Last change: 3 May 1990. ; Bo Gedda ; ; Terminal emulator module for IBM PC's and compatibles. Emulates Heath-19, ; VT52, VT102, and VT320. Original version for VT100 done by James Harvey, ; Indiana Purdue Univ, for MS Kermit 2.27. Taken from there by Joe Doupnik, ; Utah State Univ for MS Kermit 2.29 et seq. ; * Disclaimer * ; ; DEC and VT are trademarks of Digital Equipment Corporation. ; References: ; "PT200 Programmers Reference Guide", 1984, Prime Computer # DOC 8621-001P ; "Video Terminal Model H19, Operation", 1979, Heath Company # 595-2284-05 ; "VT100 User's Guide", 2nd ed., Jan 1979, DEC # EK-VT100-UG ; "Rainbow 100+/100B Terminal Emulation Manual", June 1984, DEC # QV069-GZ ; "Installing and Using The VT320 Video Terminal", June 1987, ; DEC # EK-VT320-UU-001 ; "VT320 Programmer Reference Manual", July 1987, DEC # EK-VT320-RM-001 ; --------------------------------------------------------------------------- public nrc2cp, cpdecsg data segment extrn flags:byte, dosnum:word ; DEC National Replacement Char sets, one table for each Code Page ; CP437 ; 12 replacment bytes (keyed by ASCII bytes), NRC number, country, size, ident nrc437 db 23h,40h,5bh,5ch,5dh,5eh ; 0, ASCII, "B", dispatch ref db 5fh,60h,7bh,7ch,7dh,7eh db 94,'B',0 ; 94 byte set, letter pair db 9ch,40h,5bh,5ch,5dh,5eh ; 1, British, "A" db 5fh,60h,7bh,7ch,7dh,7eh db 94,'A',0 db 9ch,3fh,98h,0abh,7ch,5eh ; 2, Dutch, "4" db 5fh,60h,22h,9fh,0ach,27h db 94,'4',0 db 23h,40h,8eh,99h,8fh,9ah ; 3, Finnish, "5" db 5fh,82h,84h,94h,86h,81h db 94,'5',0 db 9ch,85h,0f8h,87h,15h,5eh ; 4, French, "R" db 5fh,60h,82h,97h,8ah,22h db 94,'R',0 db 23h,85h,83h,87h,88h,8ch ; 5, French Canadian, "9" db 5fh,93h,82h,97h,8ah,96h db 94,'9',0 db 23h,15h,8eh,99h,9ah,5eh ; 6, German, "K" db 5fh,60h,84h,94h,81h,0e1h db 94,'K',0 db 9ch,15h,0f8h,87h,82h,5eh ; 7, Italian, "Y" db 5fh,97h,85h,95h,8ah,8dh db 94,'Y',0 db 23h,40h,92h,0edh,8fh,5eh ; 8, Norwegian/Danish, "'" db 5fh,60h,91h,0edh,86h,7eh db 94,60h,0 db 23h,40h,8eh,80h,99h,5eh ; 9, Portugese, "%6" db 5fh,60h,0a6h,87h,0a7h,7eh db 94,'%','6' db 9ch,15h,8ch,0a5h,0a8h,5eh ; 10, Spanish, "Z" db 5fh,60h,60h,0f8h,0a4h,87h db 94,'Z',0 db 23h,90h,8eh,99h,8fh,9ah ; 11, Swedish, "7" db 5fh,82h,84h,94h,86h,81h db 94,'7',0 db 97h,85h,82h,87h,88h,8ch ; 12, Swiss, "=" db 8ah,93h,84h,94h,81h,96h db 94,'=',0 ; CP850 ; 12 replacment bytes (keyed by ASCII bytes), NRC number, country, size, ident nrc850 db 23h,40h,5bh,5ch,5dh,5eh ; 0, ASCII, "B", dispatch ref db 5fh,60h,7bh,7ch,7dh,7eh db 94,'B',0 ; 94 byte set, letter pair db 9ch,40h,5bh,5ch,5dh,5eh ; 1, British, "A" db 5fh,60h,7bh,7ch,7dh,7eh db 94,'A',0 db 9ch,0f3h,98h,0abh,7ch,5eh ; 2, Dutch, "4" db 5fh,60h,22h,9fh,0ach,27h db 94,'4',0 db 23h,40h,8eh,99h,8fh,9ah ; 3, Finnish, "5" db 5fh,82h,84h,94h,86h,81h db 94,'5',0 db 9ch,85h,0f8h,87h,15h,5eh ; 4, French, "R" db 5fh,60h,82h,97h,8ah,22h db 94,'R',0 db 23h,85h,83h,87h,88h,8ch ; 5, French Canadian, "9" db 5fh,93h,82h,97h,8ah,96h db 94,'9',0 db 23h,15h,8eh,99h,9ah,5eh ; 6, German, "K" db 5fh,60h,84h,94h,81h,0e1h db 94,'K',0 db 9ch,15h,0f8h,87h,82h,5eh ; 7, Italian, "Y" db 5fh,97h,85h,95h,8ah,8dh db 94,'Y',0 db 23h,40h,92h,09dh,8fh,5eh ; 8, Norwegian/Danish, "'" db 5fh,60h,91h,09bh,86h,7eh db 94,60h,0 db 23h,40h,0b5h,80h,0e5h,5eh ; 9, Portugese, "%6" db 5fh,60h,61h,87h,0e4h,7eh db 94,'%','6' db 9ch,15h,0adh,0a5h,0a8h,5eh ; 10, Spanish, "Z" db 5fh,60h,60h,0f8h,0a4h,87h db 94,'Z',0 db 23h,90h,8eh,99h,8fh,9ah ; 11, Swedish, "7" db 5fh,82h,84h,94h,86h,81h db 94,'7',0 db 97h,85h,82h,87h,88h,8ch ; 12, Swiss, "=" db 8ah,93h,84h,94h,81h,96h db 94,'=',0 ; CP860 ; 12 replacment bytes (keyed by ASCII bytes), NRC number, country, size, ident nrc860 db 23h,40h,5bh,5ch,5dh,5eh ; 0, ASCII, "B", dispatch ref db 5fh,60h,7bh,7ch,7dh,7eh db 94,'B',0 ; 94 byte set, letter pair db 9ch,40h,5bh,5ch,5dh,5eh ; 1, British, "A" db 5fh,60h,7bh,7ch,7dh,7eh db 94,'A',0 db 9ch,3fh,79h,0abh,7ch,5eh ; 2, Dutch, "4" db 5fh,60h,22h,3fh,0ach,27h db 94,'4',0 db 23h,40h,41h,4fh,41h,9ah ; 3, Finnish, "5" db 5fh,82h,61h,6fh,61h,81h db 94,'5',0 db 9ch,85h,0f8h,87h,15h,5eh ; 4, French, "R" db 5fh,60h,82h,97h,8ah,22h db 94,'R',0 db 23h,85h,83h,87h,88h,69h ; 5, French Canadian, "9" db 5fh,93h,82h,97h,8ah,75h db 94,'9',0 db 23h,15h,41h,4fh,9ah,5eh ; 6, German, "K" db 5fh,60h,61h,6fh,81h,0e1h db 94,'K',0 db 9ch,15h,0f8h,87h,82h,5eh ; 7, Italian, "Y" db 5fh,97h,85h,95h,8ah,8dh db 94,'Y',0 db 23h,40h,3fh,0edh,41h,5eh ; 8, Norwegian/Danish, "'" db 5fh,60h,3fh,0edh,61h,7eh db 94,60h,0 db 23h,40h,8eh,80h,99h,5eh ; 9, Portugese, "%6" db 5fh,60h,84h,87h,94h,7eh db 94,'%','6' db 9ch,15h,0adh,0a5h,0a8h,5eh ; 10, Spanish, "Z" db 5fh,60h,60h,0f8h,0a4h,87h db 94,'Z',0 db 23h,90h,41h,4fh,41h,9ah ; 11, Swedish, "7" db 5fh,82h,61h,6fh,61h,75h db 94,'7',0 db 97h,85h,82h,87h,88h,69h ; 12, Swiss, "=" db 8ah,93h,61h,6fh,81h,75h db 94,'=',0 ; CP863 ; 12 replacment bytes (keyed by ASCII bytes), NRC number, country, size, ident nrc863 db 23h,40h,5bh,5ch,5dh,5eh ; 0, ASCII, "B", dispatch ref db 5fh,60h,7bh,7ch,7dh,7eh db 94,'B',0 ; 94 byte set, letter pair db 9ch,40h,5bh,5ch,5dh,5eh ; 1, British, "A" db 5fh,60h,7bh,7ch,7dh,7eh db 94,'A',0 db 9ch,0adh,79h,0abh,7ch,5eh ; 2, Dutch, "4" db 5fh,60h,0a4h,9fh,0ach,0a1h db 94,'4',0 db 23h,40h,41h,4fh,41h,55h ; 3, Finnish, "5" db 5fh,82h,61h,6fh,61h,81h db 94,'5',0 db 9ch,85h,0f8h,87h,15h,5eh ; 4, French, "R" db 5fh,60h,82h,97h,8ah,0a4h db 94,'R',0 db 23h,85h,83h,87h,88h,8ch ; 5, French Canadian, "9" db 5fh,93h,82h,97h,8ah,96h db 94,'9',0 db 23h,15h,41h,4fh,9ah,5eh ; 6, German, "K" db 5fh,60h,61h,6fh,81h,0e1h db 94,'K',0 db 9ch,15h,0f8h,87h,82h,5eh ; 7, Italian, "Y" db 5fh,97h,6fh,85h,8ah,69h db 94,'Y',0 db 23h,40h,3fh,0edh,41h,5eh ; 8, Norwegian/Danish, "'" db 5fh,60h,0efh,0edh,61h,7eh db 94,60h,0 db 23h,40h,41h,80h,4fh,5eh ; 9, Portugese, "%6" db 5fh,60h,61h,87h,6fh,7eh db 94,'%','6' db 9ch,15h,3fh,4eh,3fh,5eh ; 10, Spanish, "Z" db 5fh,60h,60h,0f8h,6eh,87h db 94,'Z',0 db 23h,90h,41h,4fh,41h,9ah ; 11, Swedish, "7" db 5fh,82h,61h,6fh,61h,81h db 94,'7',0 db 97h,85h,82h,87h,88h,8ch ; 12, Swiss, "=" db 8ah,93h,61h,6fh,81h,96h db 94,'=',0 ; CP865 ; 12 replacment bytes (keyed by ASCII bytes), NRC number, country, size, ident nrc865 db 23h,40h,5bh,5ch,5dh,5eh ; 0, ASCII, "B", dispatch ref db 5fh,60h,7bh,7ch,7dh,7eh db 94,'B',0 ; 94 byte set, letter pair db 9ch,40h,5bh,5ch,5dh,5eh ; 1, British, "A" db 5fh,60h,7bh,7ch,7dh,7eh db 94,'A',0 db 9ch,3fh,98h,0abh,7ch,5eh ; 2, Dutch, "4" db 5fh,60h,22h,9fh,0ach,27h db 94,'4',0 db 23h,40h,8eh,99h,8fh,9ah ; 3, Finnish, "5" db 5fh,82h,84h,94h,86h,81h db 94,'5',0 db 9ch,85h,0f8h,87h,15h,5eh ; 4, French, "R" db 5fh,60h,82h,97h,8ah,22h db 94,'R',0 db 23h,85h,83h,87h,88h,8ch ; 5, French Canadian, "9" db 5fh,93h,82h,97h,8ah,96h db 94,'9',0 db 23h,15h,8eh,99h,9ah,5eh ; 6, German, "K" db 5fh,60h,84h,94h,81h,0e1h db 94,'K',0 db 9ch,15h,0f8h,87h,82h,5eh ; 7, Italian, "Y" db 5fh,97h,85h,95h,8ah,8dh db 94,'Y',0 db 23h,40h,92h,9dh,8fh,5eh ; 8, Norwegian/Danish, "'" db 5fh,60h,91h,9bh,86h,7eh db 94,60h,0 db 23h,40h,41h,80h,4fh,5eh ; 9, Portugese, "%6" db 5fh,60h,61h,87h,6fh,7eh db 94,'%','6' db 9ch,15h,0adh,0a5h,0a8h,5eh ; 10, Spanish, "Z" db 5fh,60h,60h,0f8h,0a4h,87h db 94,'Z',0 db 23h,90h,8eh,99h,8fh,9ah ; 11, Swedish, "7" db 5fh,82h,84h,94h,86h,81h db 94,'7',0 db 97h,85h,82h,87h,88h,8ch ; 12, Swiss, "=" db 8ah,93h,84h,94h,81h,96h db 94,'=',0 ; Translation tables for byte codes 0a0h..0ffh to map DEC Multinational ; Character Set (DEC Supplemental Graphic) to Code Pages. ; Codes 00h-1fh are 7-bit controls (C0), codes 20h..7eh are ASCII, 7fh DEL is ; considered to be a control code, 80h..9fh are 8-bit controls (C1). ; Each table is 94 translatable bytes followed by the table size (94), the ; ISO announcer ident '%5'. ; from DEC Multinational to Code Page ; to CP437 MNcp437 db 80h,81h,82h,83h, 84h,85h,86h,87h ; column 8 db 88h,89h,8ah,8bh, 8ch,8dh,8eh,8fh db 90h,91h,92h,93h, 94h,95h,96h,97h ; column 9 db 98h,99h,9ah,9bh, 9ch,9dh,9eh,9fh db 0h,0adh,9bh,9ch, 20h,9dh,20h,15h ; column 10 db 0fh,40h,0a6h,0aeh, 20h,20h,20h,20h db 0f8h,0f1h,0fdh,33h, 20h,0e6h,14h,0feh ; column 11 db 2eh,60h,0a7h,0afh, 0ach,0abh,20h,0a8h db 85h,0a0h,83h,83h, 8eh,8fh,92h,80h ; column 12 db 8ah,90h,88h,89h, 8dh,0a1h,8ch,8bh db 20h,0a5h,95h,0a2h, 93h,94h,94h,4fh ; column 13 db 0edh,97h,0a3h,96h, 9ah,59h,20h,0e1h db 85h,0a0h,83h,84h, 84h,86h,91h,87h ; column 14 db 8ah,82h,88h,89h, 8dh,0a1h,8ch,8bh db 20h,0a4h,95h,0a2h, 93h,94h,94h,6fh ; column 15 db 0edh,97h,0a3h,96h, 81h,98h,20h,0h db 94,'%','5' ; 94 byte set, letter ident ; to CP850 MNcp850 db 80h,81h,82h,83h, 84h,85h,86h,87h ; column 8 db 88h,89h,8ah,8bh, 8ch,8dh,8eh,8fh db 90h,91h,92h,93h, 94h,95h,96h,97h ; column 9 db 98h,99h,9ah,9bh, 9ch,9dh,9eh,9fh db 0h,0adh,0bdh,9ch, 20h,0beh,20h,15h ; column 10 db 0cfh,0b8h,0a6h,0aeh, 20h,20h,20h,20h db 0f8h,0f1h,0fdh,0fch, 20h,0e6h,14h,0feh ; column 11 db 2eh,0fbh,0a7h,0afh, 0ach,0abh,20h,0a8h db 0b7h,0b5h,0b6h,0b5h, 8eh,8fh,92h,80h ; column 12 db 0d4h,90h,0d2h,0d3h, 0deh,0d6h,0d7h,0d8h db 20h,0a5h,0e3h,0e0h, 0e2h,0e5h,99h,4fh ; column 13 db 9dh,0ebh,0e9h,0eah, 9ah,0edh,20h,0e1h db 85h,0a0h,83h,61h, 84h,86h,91h,87h ; column 14 db 8ah,82h,88h,89h, 8dh,0a1h,8ch,8bh db 20h,0a4h,95h,0a2h, 93h,0e4h,94h,6fh ; column 15 db 9bh,97h,0a3h,96h, 81h,0ech,20h,0h db 94,'%','5' ; 94 byte set, letter ident ; to CP860 MNcp860 db 80h,81h,82h,83h, 84h,85h,86h,87h ; column 8 db 88h,89h,8ah,8bh, 8ch,8dh,8eh,8fh db 90h,91h,92h,93h, 94h,95h,96h,97h ; column 9 db 98h,99h,9ah,9bh, 9ch,9dh,9eh,9fh db 0h,0adh,9bh,9ch, 20h,59h,20h,15h ; column 10 db 0fh,3fh,0a6h,0aeh, 20h,20h,20h,20h db 0f8h,0f1h,0fdh,33h, 20h,0e6h,14h,0feh ; column 11 db 2eh,60h,0a7h,0afh, 0ach,0abh,20h,0a8h db 85h,0a0h,83h,83h, 8eh,8fh,92h,80h ; column 12 db 8ah,90h,88h,89h, 8dh,0a1h,8ch,8bh db 20h,0a5h,95h,0a2h, 93h,94h,94h,4fh ; column 13 db 0edh,97h,0a3h,96h, 9ah,59h,20h,0e1h db 85h,0a0h,83h,84h, 84h,86h,91h,87h ; column 14 db 8ah,82h,88h,89h, 8dh,0a1h,8ch,8bh db 20h,0a4h,95h,0a2h, 93h,94h,94h,6fh ; column 15 db 0edh,97h,0a3h,96h, 81h,98h,20h,0h db 94,'%','5' ; 94 byte set, letter ident ; to CP863 MNcp863 db 80h,81h,82h,83h, 84h,85h,86h,87h ; column 8 db 88h,89h,8ah,8bh, 8ch,8dh,8eh,8fh db 90h,91h,92h,93h, 94h,95h,96h,97h ; column 9 db 98h,99h,9ah,9bh, 9ch,9dh,9eh,9fh db 0h,0adh,9bh,9ch, 20h,9dh,20h,15h ; column 10 db 98h,40h,61h,0aeh, 20h,20h,20h,20h db 0f8h,0f1h,0fdh,33h, 20h,0e6h,86h,0feh ; column 11 db 2eh,31h,6fh,0afh, 0ach,0abh,20h,3fh db 8eh,41h,84h,41h, 41h,41h,3fh,80h ; column 12 db 91h,90h,92h,94h, 49h,49h,88h,95h db 20h,4eh,4fh,4fh, 99h,4fh,4fh,4fh ; column 13 db 0edh,9dh,55h,0aeh, 55h,59h,20h,0e1h db 85h,61h,83h,61h, 61h,61h,3fh,87h ; column 14 db 8ah,82h,88h,89h, 69h,69h,8ch,8bh db 20h,6eh,6fh,0a2h, 93h,6fh,6fh,6fh ; column 15 db 0edh,97h,0a3h,96h, 75h,79h,20h,0h db 94,'%','5' ; 94 byte set, letter ident ; to CP865 MNcp865 db 80h,81h,82h,83h, 84h,85h,86h,87h ; column 8 db 88h,89h,8ah,8bh, 8ch,8dh,8eh,8fh db 90h,91h,92h,93h, 94h,95h,96h,97h ; column 9 db 98h,99h,9ah,9bh, 9ch,9dh,9eh,9fh db 0h,0adh,3fh,9ch, 20h,3fh,20h,15h ; column 10 db 0afh,3fh,0a6h,0aeh, 20h,20h,20h,20h db 0f8h,0f1h,0fdh,33h, 20h,0e6h,14h,0feh ; column 11 db 2eh,31h,0a7h,03fh, 0ach,0abh,20h,0a8h db 41h,41h,41h,41h, 8eh,8fh,92h,80h ; column 12 db 45h,90h,45h,45h, 49h,49h,49h,49h db 20h,0a5h,4fh,4fh, 4fh,4fh,99h,4fh ; column 13 db 0edh,55h,55h,55h, 9ah,59h,20h,0e1h db 85h,0a0h,83h,61h, 84h,86h,91h,87h ; column 14 db 8ah,82h,88h,89h, 8dh,0a1h,8ch,8bh db 20h,0a4h,95h,0a2h, 93h,6fh,94h,6fh ; column 15 db 0edh,97h,0a3h,96h, 81h,79h,20h,0h db 94,'%','5' ; 94 byte set, letter ident ; 128 byte translation tables from Code Pages to DEC Multinational char set ; (DEC Supplemental Graphic). For GRight only (high bit set). ; from Code Page 437 cp437MN db 0c7h,0fch,0e9h,0e2h, 0e4h,0e0h,0e5h,0e7h ; column 8 db 0eah,0ebh,0e8h,0efh, 0eeh,0ech,0c4h,0c5h db 0c9h,0e6h,0c6h,0f4h, 0f6h,0f2h,0fbh,0f9h ; column 9 db 0ffh,0d6h,0dch,0a2h, 0a3h,0a5h,3fh,3fh db 0e1h,0edh,0f3h,0fah, 0f1h,0d1h,0aah,0bah ; column 10 db 0bfh,3fh,0ach,0bdh, 0bch,0a1h,0abh,0bbh db 16 dup (3fh) ; column 11 db 16 dup (3fh) ; column 12 db 16 dup (3fh) ; column 13 db 3fh,0dfh, 4 dup (3fh), 0b5h,3fh ; column 14 db 5 dup(3fh), 0f8h,3fh,3fh db 3fh,0b1h, 4 dup (3fh), 0h,3fh ; column 15 db 0b0h, 4 dup (3fh), 0b2h,0b7h,3fh ; from Code Page 850 cp850MN db 0c7h,0fch,0e9h,0e2h, 0e4h,0e0h,0e5h,0e7h ; column 8 db 0eah,0ebh,0e8h,0efh, 0eeh,0ech,0c4h,0c5h db 0c9h,0e6h,0c6h,0f4h, 0f6h,0f2h,0fbh,0f9h ; column 9 db 0ffh,0d6h,0dch,0f8h, 0a3h,0d8h,58h,3fh db 0e1h,0edh,0f3h,0fah, 0f1h,0d1h,0aah,0bah ; column 10 db 0bfh,0aeh,0ach,0bdh, 0bch,0a1h,0abh,0bbh db 5 dup (3fh), 0c1h,0c2h,0c0h ; column 11 db 0a9h, 4 dup (3fh), 0a2h,0a5h,0ach db 6 dup (3fh),0e3h,0c3h, 7 dup (3fh),0a4h ; column 12 db 0f0h,0d0h,0cah,0cbh, 0c8h,0b9h,0cdh,0ceh ; column 13 db 0cfh, 4 dup (3fh), 7ch,0cch,3fh db 0d3h,0dfh,0d4h,0d2h, 0f5h,0d5h,0b5h,0deh ; column 14 db 0feh,0dah,0dbh,0d9h, 0fdh,0ddh,0afh,0b4h db 0adh,0b1h,3dh,0beh, 0b6h,0a7h,00h,22h ; column 15 db 0b0h,0a8h,3fh,0b9h, 0b2h,0b3h,0b7h,20h ; from Code Page 860 cp860MN db 0c7h,0fch,0e9h,0e2h, 0e3h,0e0h,0c1h,0e7h ; column 8 db 0eah,0cah,0e8h,0cch, 0d4h,0ech,0c3h,0c2h db 0c9h,0c0h,0c8h,0f4h, 0f5h,0f2h,0dah,0f9h ; column 9 db 0cch,0d5h,0dch,0a2h, 0a3h,0d9h,3fh,0d3h db 0e1h,0edh,0f3h,0fah, 0f1h,0d1h,0aah,0bah ; column 10 db 0bfh,0d2h,0ach,0bdh, 0bch,0a1h,0abh,0bbh db 16 dup (3fh) ; column 11 db 16 dup (3fh) ; column 12 db 16 dup (3fh) ; column 13 db 3fh,0dfh, 4 dup (3fh), 0b5h,3fh ; column 14 db 5 dup(3fh), 0f8h,3fh,3fh db 3fh,0b1h, 4 dup (3fh), 0h,3fh ; column 15 db 0b0h, 4 dup (3fh), 0b2h,0b7h,3fh ; from Code Page 863 cp863MN db 0c7h,0fch,0e9h,0e2h, 0e2h,0e0h,0b6h,0a2h ; column 8 db 0eah,0ebh,0e8h,0efh, 0eeh,3dh,0c0h,0a7h db 0c9h,0c8h,0cah,0f4h, 0cbh,0cfh,0fbh,0fah ; column 9 db 0a4h,0d4h,0dch,0a2h, 0a3h,0d9h,0dbh,3fh db 7ch,0b4h,0f3h,0fah, 0a8h,0a8h,0b3h,0afh ; column 10 db 0ceh,3fh,0ach,0bdh, 0bch,0beh,0abh,0bbh db 16 dup (3fh) ; column 11 db 16 dup (3fh) ; column 12 db 16 dup (3fh) ; column 13 db 3fh,0dfh, 4 dup (3fh), 0b5h,3fh ; column 14 db 5 dup(3fh), 0f8h,3fh,3fh db 3fh,0b1h, 4 dup (3fh), 0h,3fh ; column 15 db 0b0h, 4 dup (3fh), 0b2h,0b7h,3fh ; from Code Page 865 cp865MN db 0c7h,0fch,0e9h,0e2h, 0e4h,0e0h,0e5h,0e7h ; column 8 db 0eah,0ebh,0e8h,0efh, 0eeh,0ech,0c4h,0c5h db 0c9h,0e6h,0c6h,0f4h, 0f6h,0f2h,0fbh,0fah ; column 9 db 0ffh,0d6h,0dch,0f8h, 0a3h,0d8h,3fh,3fh db 0e2h,0edh,0f3h,0fah, 0f1h,0d1h,0aah,0bah ; column 10 db 0bfh,3fh,0ach,0bdh, 0bch,0a1h,0abh,0a4h db 16 dup (3fh) ; column 11 db 16 dup (3fh) ; column 12 db 16 dup (3fh) ; column 13 db 3fh,0dfh, 4 dup (3fh), 0b5h,3fh ; column 14 db 5 dup(3fh), 0f8h,3fh,3fh db 3fh,0b1h, 4 dup (3fh), 0h,3fh ; column 15 db 0b0h, 4 dup (3fh), 0b2h,0b7h,3fh ; Dec Technical set to CP437, CP860, CP863, CP865 ; Note: CP850 lacks the symbols so expect trash dectech db 32 dup (0) ; columns 8 and 9 db 0h,0fbh,0dah,0c4h, 0f4h,0f5h,0b3h,0dah ; column 10 db 0c0h,0bfh,0d9h,28h,28h,29h,29h,0b4h db 0c3h,3ch,3eh,5ch, 2fh,0bfh,0d9h,03eh ; column 11 db 0a8h,20h,20h,20h, 0f3h,3dh,0f2h,3fh db 1eh,0ech,0ech,0f6h,1eh,1fh,0e8h,0e2h ; column 12 db 0f7h,0f7h,0e9h,58h,3fh,1dh,1ah,0f0h db 0e3h,3fh,20h,0e4h, 20h,20h,0fbh,0eah ; column 13 db 3fh,54h,3fh,3fh, 0efh,55h,5eh,76h db 0aah,0e0h,0e1h,78h,0ebh,0eeh,0edh,3fh ; column 14 db 6eh,69h,0e9h,6bh, 3fh,20h,76h,3fh db 0e3h,3fh,70h,0e5h, 0e7h,0a8h,9fh,77h ; column 15 db 45h,76h,3fh,1bh, 18h,1ah,19h,7fh db 94,3eh,0 ; 94 byte set, letter ident data ends code segment assume cs:code, ds:data, es:nothing ; Set reg BX to offset of table for Code Page to DEC Multinational Char Set ; (DEC Supplemental Graphics) CPDECSG proc near mov bx,offset cp437MN ; assume CP437 cmp flags.chrset,437 ; current Code Page is 437? je cpdecsx ; e = yes mov bx,offset cp850MN ; assume CP850 cmp flags.chrset,850 ; current Code Page is 850? je cpdecsx ; e = yes mov bx,offset cp860MN ; assume CP860 cmp flags.chrset,860 ; current Code Page is 860? je cpdecsx ; e = yes mov bx,offset cp863MN ; assume CP863 cmp flags.chrset,863 ; current Code Page is 863? je cpdecsx ; e = yes mov bx,offset cp865MN ; assume CP865 cmp flags.chrset,865 ; current Code Page is 865? je cpdecsx ; e = yes mov bx,offset cp437MN ; default to CP437 CPDECSX:ret CPDECSG endp ; Set register SI to the offset of the NRC table appropriate to the ; currently active Code Page. Defaults to CP437 if no CP found. NRC2CP proc near push bx push dx cmp dosnum,0300h+30 ; DOS version 3.30 or higher? jb nrc2cp1 ; b = no, no Code Pages mov ax,6601h ; get global Code Page int dos ; bx=active Code Page, dx=boot CP cmp bx,437 ; current Code Page is 437? je nrc2cp1 ; e = yes mov si,offset NRC850 ; assume CP850 cmp bx,850 ; current Code Page is 850? je nrc2cpx ; e = yes mov si,offset NRC860 ; assume CP860 cmp bx,860 ; current Code Page is 860? je nrc2cpx ; e = yes mov si,offset NRC863 ; assume CP863 cmp bx,863 ; current Code Page is 863? je nrc2cpx ; e = yes mov si,offset NRC865 ; assume CP865 cmp bx,865 ; current Code Page is 865? je nrc2cpx ; e = yes nrc2cp1:mov si,offset NRC437 ; default to CP437 nrc2cpx:pop dx pop bx ret NRC2CP endp code ends end