PC-01 Lviv
http://pc01.lviv.ua/forum/

Проверить функцию кодировки символов ПК-01
http://pc01.lviv.ua/forum/viewtopic.php?f=8&t=377
Page 1 of 1

Author:  als [ 08 May 2020, 16:13 ]
Post subject:  Проверить функцию кодировки символов ПК-01

Нужно проверить функцию кодировки символов ПК-01.
Давным давно у меня эта функция. И уже не помню проверял ли я её на правильность.
Подскажите, с чем её сверить или может кто-то знает наизусть :-) и сразу скажет правильная ли она.
Саму процедуру и результат работы кидаю сюда.
(Процедура может пригодиться какому-то Дельфинщику. :-))
Code:
function Koi(code:Cardinal):char;
// Кодировка во львове КОИ-7 (либо (КОИ-8) позиция строке соответсвует коду в кодировке Львова
const KOD_LV_Str:string='                              _ !"#$%&`()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_юабцдефгхийклмнопярстужвьызшэщч                                                                                                                                 ';
begin Koi:=KOD_LV_Str[code];end;

procedure TForm1.btn1Click(Sender: TObject);
Var c:Cardinal;
begin
For c:=1 to 255 do
begin
  mmo1.Lines.Add('$'+IntToHex(c,2)+ ' ('+IntToStr(c)+')   -   '+Koi(c));
end;
end;

Результат работы
Code:
$01 (1)   -    
$02 (2)   -    
$03 (3)   -    
$04 (4)   -    
$05 (5)   -    
$06 (6)   -    
$07 (7)   -    
$08 (8)   -    
$09 (9)   -    
$0A (10)   -    
$0B (11)   -    
$0C (12)   -    
$0D (13)   -    
$0E (14)   -    
$0F (15)   -    
$10 (16)   -    
$11 (17)   -    
$12 (18)   -    
$13 (19)   -    
$14 (20)   -    
$15 (21)   -    
$16 (22)   -    
$17 (23)   -    
$18 (24)   -    
$19 (25)   -    
$1A (26)   -    
$1B (27)   -    
$1C (28)   -    
$1D (29)   -    
$1E (30)   -    
$1F (31)   -   _
$20 (32)   -    
$21 (33)   -   !
$22 (34)   -   "
$23 (35)   -   #
$24 (36)   -   $
$25 (37)   -   %
$26 (38)   -   &
$27 (39)   -   `
$28 (40)   -   (
$29 (41)   -   )
$2A (42)   -   *
$2B (43)   -   +
$2C (44)   -   ,
$2D (45)   -   -
$2E (46)   -   .
$2F (47)   -   /
$30 (48)   -   0
$31 (49)   -   1
$32 (50)   -   2
$33 (51)   -   3
$34 (52)   -   4
$35 (53)   -   5
$36 (54)   -   6
$37 (55)   -   7
$38 (56)   -   8
$39 (57)   -   9
$3A (58)   -   :
$3B (59)   -   ;
$3C (60)   -   <
$3D (61)   -   =
$3E (62)   -   >
$3F (63)   -   ?
$40 (64)   -   @
$41 (65)   -   A
$42 (66)   -   B
$43 (67)   -   C
$44 (68)   -   D
$45 (69)   -   E
$46 (70)   -   F
$47 (71)   -   G
$48 (72)   -   H
$49 (73)   -   I
$4A (74)   -   J
$4B (75)   -   K
$4C (76)   -   L
$4D (77)   -   M
$4E (78)   -   N
$4F (79)   -   O
$50 (80)   -   P
$51 (81)   -   Q
$52 (82)   -   R
$53 (83)   -   S
$54 (84)   -   T
$55 (85)   -   U
$56 (86)   -   V
$57 (87)   -   W
$58 (88)   -   X
$59 (89)   -   Y
$5A (90)   -   Z
$5B (91)   -   [
$5C (92)   -   \
$5D (93)   -   ]
$5E (94)   -   ^
$5F (95)   -   _
$60 (96)   -   ю
$61 (97)   -   а
$62 (98)   -   б
$63 (99)   -   ц
$64 (100)   -   д
$65 (101)   -   е
$66 (102)   -   ф
$67 (103)   -   г
$68 (104)   -   х
$69 (105)   -   и
$6A (106)   -   й
$6B (107)   -   к
$6C (108)   -   л
$6D (109)   -   м
$6E (110)   -   н
$6F (111)   -   о
$70 (112)   -   п
$71 (113)   -   я
$72 (114)   -   р
$73 (115)   -   с
$74 (116)   -   т
$75 (117)   -   у
$76 (118)   -   ж
$77 (119)   -   в
$78 (120)   -   ь
$79 (121)   -   ы
$7A (122)   -   з
$7B (123)   -   ш
$7C (124)   -   э
$7D (125)   -   щ
$7E (126)   -   ч
$7F (127)   -    
$80 (128)   -    
$81 (129)   -    
$82 (130)   -    
$83 (131)   -    
$84 (132)   -    
$85 (133)   -    
$86 (134)   -    
$87 (135)   -    
$88 (136)   -    
$89 (137)   -    
$8A (138)   -    
$8B (139)   -    
$8C (140)   -    
$8D (141)   -    
$8E (142)   -    
$8F (143)   -    
$90 (144)   -    
$91 (145)   -    
$92 (146)   -    
$93 (147)   -    
$94 (148)   -    
$95 (149)   -    
$96 (150)   -    
$97 (151)   -    
$98 (152)   -    
$99 (153)   -    
$9A (154)   -    
$9B (155)   -    
$9C (156)   -    
$9D (157)   -    
$9E (158)   -    
$9F (159)   -    
$A0 (160)   -    
$A1 (161)   -    
$A2 (162)   -    
$A3 (163)   -    
$A4 (164)   -    
$A5 (165)   -    
$A6 (166)   -    
$A7 (167)   -    
$A8 (168)   -    
$A9 (169)   -    
$AA (170)   -    
$AB (171)   -    
$AC (172)   -    
$AD (173)   -    
$AE (174)   -    
$AF (175)   -    
$B0 (176)   -    
$B1 (177)   -    
$B2 (178)   -    
$B3 (179)   -    
$B4 (180)   -    
$B5 (181)   -    
$B6 (182)   -    
$B7 (183)   -    
$B8 (184)   -    
$B9 (185)   -    
$BA (186)   -    
$BB (187)   -    
$BC (188)   -    
$BD (189)   -    
$BE (190)   -    
$BF (191)   -    
$C0 (192)   -    
$C1 (193)   -    
$C2 (194)   -    
$C3 (195)   -    
$C4 (196)   -    
$C5 (197)   -    
$C6 (198)   -    
$C7 (199)   -    
$C8 (200)   -    
$C9 (201)   -    
$CA (202)   -    
$CB (203)   -    
$CC (204)   -    
$CD (205)   -    
$CE (206)   -    
$CF (207)   -    
$D0 (208)   -    
$D1 (209)   -    
$D2 (210)   -    
$D3 (211)   -    
$D4 (212)   -    
$D5 (213)   -    
$D6 (214)   -    
$D7 (215)   -    
$D8 (216)   -    
$D9 (217)   -    
$DA (218)   -    
$DB (219)   -    
$DC (220)   -    
$DD (221)   -    
$DE (222)   -    
$DF (223)   -    
$E0 (224)   -    
$E1 (225)   -    
$E2 (226)   -    
$E3 (227)   -    
$E4 (228)   -    
$E5 (229)   -    
$E6 (230)   -    
$E7 (231)   -    
$E8 (232)   -    
$E9 (233)   -    
$EA (234)   -    
$EB (235)   -    
$EC (236)   -    
$ED (237)   -    
$EE (238)   -    
$EF (239)   -    
$F0 (240)   -    
$F1 (241)   -    
$F2 (242)   -    
$F3 (243)   -    
$F4 (244)   -    
$F5 (245)   -    
$F6 (246)   -    
$F7 (247)   -    
$F8 (248)   -    
$F9 (249)   -    
$FA (250)   -    
$FB (251)   -    
$FC (252)   -    
$FD (253)   -    
$FE (254)   -    
$FF (255)   -    


Author:  sadfsdfsdaf [ 31 Jul 2020, 14:17 ]
Post subject:  Re: Проверить функцию кодировки символов ПК-01

Сверить её проще всего со знакогенератором, заменять прямую кавычку (апостроф 0x27) на обратную не стоило - это разные символы.
Code:
 20  ED00 21  ED08 22  ED10 23  ED18 24  ED20 25  ED28 26  ED30 27  ED38
 ........ ..@..... .@.@.... .@.@.... @...@... @@..@... ..@..... ..@.....
 ........ ..@..... .@.@.... .@.@.... .@@@.... @@..@... .@.@.... .@......
 ........ ..@..... .@.@.... @@@@@... @...@... ...@.... .@.@.... @.......
 ........ ..@..... ........ .@.@.... @...@... ..@..... .@@..... ........
 ........ ........ ........ @@@@@... @...@... .@...... @.@.@... ........
 ........ ........ ........ .@.@.... .@@@.... @..@@... @..@.... ........
 ........ ..@..... ........ .@.@.... @...@... @..@@... .@@.@... ........
 ........ ........ ........ ........ ........ ........ ........ ........

 28  ED40 29  ED48 2A  ED50 2B  ED58 2C  ED60 2D  ED68 2E  ED70 2F  ED78
 ...@.... .@...... ........ ........ ........ ........ ........ ....@...
 ..@..... ..@..... ..@..... ..@..... ........ ........ ........ ....@...
 .@...... ...@.... @.@.@... ..@..... ........ ........ ........ ...@....
 .@...... ...@.... .@@@.... @@@@@... .@@..... .@@@.... ........ ..@.....
 .@...... ...@.... @.@.@... ..@..... .@@..... ........ .@@..... .@......
 ..@..... ..@..... ..@..... ..@..... ..@..... ........ .@@..... @.......
 ...@.... .@...... ........ ........ .@...... ........ .@@..... @.......
 ........ ........ ........ ........ ........ ........ ........ ........

 30  ED80 31  ED88 32  ED90 33  ED98 34  EDA0 35  EDA8 36  EDB0 37  EDB8
 .@@@.... ..@..... .@@@.... @@@@@... ...@.... @@@@@... ..@@.... @@@@@...
 @...@... .@@..... @...@... ...@.... ..@@.... @....... .@...... ....@...
 @..@@... @.@..... ....@... ..@..... .@.@.... @@@@.... @....... ...@....
 @.@.@... ..@..... ...@.... ...@.... @..@.... ....@... @@@@.... ..@.....
 @@..@... ..@..... .@@..... ....@... @@@@@... ....@... @...@... .@......
 @...@... ..@..... @....... @...@... ...@.... @...@... @...@... .@......
 .@@@.... @@@@@... @@@@@... .@@@.... ...@.... .@@@.... .@@@.... .@......
 ........ ........ ........ ........ ........ ........ ........ ........

 38  EDC0 39  EDC8 3A  EDD0 3B  EDD8 3C  EDE0 3D  EDE8 3E  EDF0 3F  EDF8
 .@@@.... .@@@.... ........ .@@..... ....@... ........ @....... .@@@....
 @...@... @...@... .@@..... .@@..... ...@.... ........ .@...... @...@...
 @...@... @...@... .@@..... ........ ..@..... @@@@@... ..@..... ....@...
 .@@@.... .@@@@... ........ .@@..... .@...... ........ ...@.... ...@....
 @...@... ....@... ........ .@@..... ..@..... @@@@@... ..@..... ..@.....
 @...@... ...@.... .@@..... ..@..... ...@.... ........ .@...... ........
 .@@@.... .@@..... .@@..... .@...... ....@... ........ @....... ..@.....
 ........ ........ ........ ........ ........ ........ ........ ........

 40  EE00 41  EE08 42  EE10 43  EE18 44  EE20 45  EE28 46  EE30 47  EE38
 .@@@.... .@@@.... @@@@.... .@@@.... @@@..... @@@@@... @@@@@... .@@@....
 @...@... @...@... @...@... @...@... @..@.... @....... @....... @...@...
 @.@@@... @...@... @...@... @....... @...@... @....... @....... @.......
 @.@.@... @@@@@... @@@@.... @....... @...@... @@@@.... @@@@.... @..@@...
 @.@@@... @...@... @...@... @....... @...@... @....... @....... @...@...
 @....... @...@... @...@... @...@... @..@.... @....... @....... @...@...
 .@@@.... @...@... @@@@.... .@@@.... @@@..... @@@@@... @....... .@@@@...
 ........ ........ ........ ........ ........ ........ ........ ........

 48  EE40 49  EE48 4A  EE50 4B  EE58 4C  EE60 4D  EE68 4E  EE70 4F  EE78
 @...@... .@@@.... ..@@@... @...@... @....... @...@... @...@... .@@@....
 @...@... ..@..... ...@.... @..@.... @....... @@.@@... @...@... @...@...
 @...@... ..@..... ...@.... @.@..... @....... @.@.@... @@..@... @...@...
 @@@@@... ..@..... ...@.... @@...... @....... @.@.@... @.@.@... @...@...
 @...@... ..@..... @..@.... @.@..... @....... @...@... @..@@... @...@...
 @...@... ..@..... @..@.... @..@.... @....... @...@... @...@... @...@...
 @...@... .@@@.... .@@..... @...@... @@@@@... @...@... @...@... .@@@....
 ........ ........ ........ ........ ........ ........ ........ ........

 50  EE80 51  EE88 52  EE90 53  EE98 54  EEA0 55  EEA8 56  EEB0 57  EEB8
 @@@@.... .@@@.... @@@@.... .@@@@... @@@@@... @...@... @...@... @...@...
 @...@... @...@... @...@... @...@... ..@..... @...@... @...@... @...@...
 @...@... @...@... @...@... @....... ..@..... @...@... @...@... @...@...
 @@@@.... @...@... @@@@.... .@@@.... ..@..... @...@... .@.@.... @.@.@...
 @....... @.@.@... @.@..... ....@... ..@..... @...@... .@.@.... @@@@@...
 @....... @..@.... @..@.... @...@... ..@..... @...@... ..@..... @@.@@...
 @....... .@@.@... @...@... @@@@.... ..@..... .@@@.... ..@..... @...@...
 ........ ........ ........ ........ ........ ........ ........ ........

 58  EEC0 59  EEC8 5A  EED0 5B  EED8 5C  EEE0 5D  EEE8 5E  EEF0 5F  EEF8
 @...@... @...@... @@@@@... .@@@.... @....... .@@@.... ........ ........
 @...@... @...@... ....@... .@...... @....... ...@.... ........ ........
 .@.@.... @...@... ...@.... .@...... .@...... ...@.... ..@..... ........
 ..@..... .@@@.... ..@..... .@...... ..@..... ...@.... .@.@.... ........
 .@.@.... ..@..... .@...... .@...... ...@.... ...@.... @...@... ........
 @...@... ..@..... @....... .@...... ....@... ...@.... ........ ........
 @...@... ..@..... @@@@@... .@@@.... ....@... .@@@.... ........ @@@@@@..
 ........ ........ ........ ........ ........ ........ ........ ........

 60  EF00 61  EF08 62  EF10 63  EF18 64  EF20 65  EF28 66  EF30 67  EF38
 @.@@@... .@@@.... @@@@@... @..@.... ..@@.... @@@@@... .@@@.... @@@@@...
 @.@.@... @...@... @....... @..@.... .@.@.... @....... @.@.@... @.......
 @.@.@... @...@... @....... @..@.... .@.@.... @....... @.@.@... @.......
 @@@.@... @@@@@... @@@@.... @..@.... .@.@.... @@@@.... @.@.@... @.......
 @.@.@... @...@... @...@... @..@.... .@.@.... @....... .@@@.... @.......
 @.@.@... @...@... @...@... @@@@@... @@@@@... @....... ..@..... @.......
 @.@@@... @...@... @@@@.... ....@... @...@... @@@@@... ..@..... @.......
 ........ ........ ........ ........ ........ ........ ........ ........

 68  EF40 69  EF48 6A  EF50 6B  EF58 6C  EF60 6D  EF68 6E  EF70 6F  EF78
 @...@... @...@... ..@..... @...@... ...@@... @...@... @...@... .@@@....
 @...@... @...@... @.@.@... @..@.... ..@.@... @@.@@... @...@... @...@...
 .@.@.... @...@... @...@... @.@..... .@..@... @.@.@... @...@... @...@...
 ..@..... @..@@... @..@@... @@...... .@..@... @.@.@... @@@@@... @...@...
 .@.@.... @.@.@... @.@.@... @.@..... .@..@... @...@... @...@... @...@...
 @...@... @@..@... @@..@... @..@.... .@..@... @...@... @...@... @...@...
 @...@... @...@... @...@... @...@... @...@... @...@... @...@... .@@@....
 ........ ........ ........ ........ ........ ........ ........ ........

 70  EF80 71  EF88 72  EF90 73  EF98 74  EFA0 75  EFA8 76  EFB0 77  EFB8
 @@@@@... .@@@@... @@@@.... .@@@.... @@@@@... @...@... @.@.@... @@@@....
 @...@... @...@... @...@... @...@... ..@..... @...@... @.@.@... @...@...
 @...@... @...@... @...@... @....... ..@..... @...@... @.@.@... @...@...
 @...@... .@@@@... @@@@.... @....... ..@..... .@@@@... .@@@.... @@@@....
 @...@... ..@.@... @....... @....... ..@..... ....@... @.@.@... @...@...
 @...@... .@..@... @....... @...@... ..@..... ....@... @.@.@... @...@...
 @...@... @...@... @....... .@@@.... ..@..... @@@@.... @.@.@... @@@@....
 ........ ........ ........ ........ ........ ........ ........ ........

 78  EFC0 79  EFC8 7A  EFD0 7B  EFD8 7C  EFE0 7D  EFE8 7E  EFF0 7F  EFF8
 @....... @...@... .@@@.... @.@.@... @@@@.... @.@.@... @...@... ........
 @....... @...@... @...@... @.@.@... ....@... @.@.@... @...@... .@....@.
 @....... @...@... ....@... @.@.@... ....@... @.@.@... @...@... ........
 @@@@.... @@@.@... ..@@.... @.@.@... .@@@@... @.@.@... @@@@@... .@....@.
 @...@... @.@.@... ....@... @.@.@... ....@... @.@.@... ....@... ........
 @...@... @.@.@... @...@... @.@.@... ....@... @@@@@... ....@... .@....@.
 @@@@.... @@@.@... .@@@.... @@@@@... @@@@.... ....@... ....@... ........
 ........ ........ ........ ........ ........ ........ ........ .@....@.
Тут код символа, смещение и сам символ.

А это скрипт, которым получен шрифт.
Code:
#!/usr/bin/perl

open F,"<BIOS_20.LVT" or die; binmode F;
read F, $d, -s F; close F;

$d = substr $d, 0x16;

$p = $pp = 0;
for ($o = 0x2D00; $o < 0x3000; $o++) {

    $x = unpack "B*", substr($d, $o, 1);
    $x =~ y/01/.\@/;

    $n = 0x20 + (($o - 0x2D00) >> 3) if ($o & 7) == 0;

    $x[$p++] .= sprintf(" %02X  %04X", $n, 0xC000 + $o) if ($o & 7) == 0;

    $x[$p++] .= " $x";

    if (($o & 7) == 7) {
        $x[$p++] .= ""; $p = $pp;
        $p = ($pp += 10) if ($n & 7) == 7;
    };
}

print join "\n", @x;

Page 1 of 1 All times are UTC+03:00
Powered by phpBB® Forum Software © phpBB Limited
https://www.phpbb.com/