PC-01 Lviv

It is currently 28 Mar 2024, 23:36

Forum Games WEB Tape Loader Twitter RSS

All times are UTC+03:00




Post new topic  Reply to topic  [ 2 posts ] 
Author Message
PostPosted: 08 May 2020, 16:13 
Offline

Joined: 18 May 2016, 19:55
Posts: 425
Нужно проверить функцию кодировки символов ПК-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)   -    



Top
   
PostPosted: 31 Jul 2020, 14:17 
Offline

Joined: 07 Dec 2010, 16:54
Posts: 227
Сверить её проще всего со знакогенератором, заменять прямую кавычку (апостроф 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;


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 2 posts ] 

Forum Games WEB Tape Loader Twitter RSS

All times are UTC+03:00


Who is online

Users browsing this forum: No registered users and 1 guest


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
cron
Powered by phpBB® Forum Software © phpBB Limited