Coverage for pyilper/pilcharconv.py: 81%

Shortcuts on this page

r m x   toggle line displays

j k   next/prev highlighted chunk

0   (zero) top of page

1   (one) first highlighted chunk

21 statements  

1#!/usr/bin/python3 

2# -*- coding: utf-8 -*- 

3# pilcharconv for Linux 

4# 

5# (c) 2015 Joachim Siebold 

6# 

7# This program is free software; you can redistribute it and/or 

8# modify it under the terms of the GNU General Public License 

9# as published by the Free Software Foundation; either version 2 

10# of the License, or (at your option) any later version. 

11# 

12# This program is distributed in the hope that it will be useful, 

13# but WITHOUT ANY WARRANTY; without even the implied warranty of 

14# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 

15# GNU General Public License for more details. 

16# 

17# You should have received a copy of the GNU General Public License 

18# along with this program; if not, write to the Free Software 

19# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 

20# 

21# character conversion --------------------------------------- 

22# 

23# Changelog 

24# 

25# 19.02.2016 jsi: 

26# - added stringconv function 

27# 16.09.2017 jsi: 

28# - HP Roman 8 character conversion code table implemented. Use control pictures for 

29# C0 control codes. 

30# - renamed stringconv to barrrconv. Added stringconv. 

31# 27.12.2018 jsi 

32# - added HP2225 charset 

33# 16.01.2019 jsi 

34# - refactoring: use list of lists for code tables to speed up access 

35# - added HP-75 charset 

36# - added icharconv function 

37# 25.01.2019 jsi 

38# - various bug fixes in the HP-75 and HP-71 character table 

39# 11.02.2019 jsi 

40# - fix in HP-75 character set 

41# 

42 

43# 

44# Note: if the order of character sets is changed mind to alter the  

45# CHAR_ATTRIB look up table in pilqterm. All character sets 

46# which are not user configurable must be ranked at last 

47# 

48CHARSET_HP71=0 

49CHARSET_HP41=1 

50CHARSET_HP75=2 

51CHARSET_ROMAN8=3 

52CHARSET_HP2225=4 

53# 

54# do not use the HP2555 character set in menus it is only used internally 

55# 

56charsets= [ "HP-71", "HP-41", "HP-75", "ROMAN-8" ] 

57 

58convert_to_unicode= [ 

59# map hp-71 character set to unicode 

60[ 

61 ' ', # 0  

62 '°', # 1 

63 'x', # 2 

64 '\u2190' , # 3 

65 '\u03B1' , # 4 

66 '\u03B2' , # 5 

67 '\u0393' , # 6 

68 '\u2618' , # bell! 

69 chr(8), 

70 '\u03C3' , 

71 chr(10), 

72 '\u03BB' , 

73 '\u03Bc' , 

74 chr(13), 

75 '\u03C4' , 

76 '\u03A6' , 

77 '\u03B8' , 

78 '\u03A9' , 

79 '\u03B4' , 

80 '\u03B5' , 

81 '\u03C0', 

82 'Ä' , 

83 'ä' , 

84 'Ö' , 

85 'ö' , 

86 'Ü' , 

87 'ü', 

88 chr(27), 

89 '\u03A3' , 

90 '\u2260' , 

91 '£', 

92 '\u25AF' , 

93 ' ' , 

94 '!' , 

95 '"' , 

96 '#' , 

97 '$' , 

98 '%' , 

99 '&' , 

100 '\'' , 

101 '(' , 

102 ')' , 

103 '*' , 

104 '+' , 

105 ',' , 

106 '-' , 

107 '.' , 

108 '/' , 

109 '0' , 

110 '1' , 

111 '2' , 

112 '3' , 

113 '4' , 

114 '5' , 

115 '6' , 

116 '7' , 

117 '8' , 

118 '9' , 

119 ':' , 

120 ';' , 

121 '<' , 

122 '=' , 

123 '>' , 

124 '?' , 

125 '@' , 

126 'A' , 

127 'B' , 

128 'C' , 

129 'D' , 

130 'E' , 

131 'F' , 

132 'G' , 

133 'H' , 

134 'I' , 

135 'J' , 

136 'K' , 

137 'L' , 

138 'M' , 

139 'N' , 

140 'O' , 

141 'P' , 

142 'Q' , 

143 'R' , 

144 'S' , 

145 'T' , 

146 'U' , 

147 'V' , 

148 'W' , 

149 'X' , 

150 'Y' , 

151 'Z' , 

152 '[' , 

153 '\\' , 

154 ']' , 

155 '^' , 

156 '_' , 

157 '\'' , 

158 'a' , 

159 'b' , 

160 'c' , 

161 'd' , 

162 'e' , 

163 'f' , 

164 'g' , 

165 'h' , 

166 'i' , 

167 'j' , 

168 'k' , 

169 'l' , 

170 'm' , 

171 'n' , 

172 'o' , 

173 'p' , 

174 'q' , 

175 'r' , 

176 's' , 

177 't' , 

178 'u' , 

179 'v' , 

180 'w' , 

181 'x' , 

182 'y' , 

183 'z' , 

184 '{' , 

185 '|' , 

186 '}' , 

187 '~' , 

188 '\u251C' , 

189 ' ', # 128 

190 '°', # 129 

191 'x', # 130 

192 '\u2190' , # 131 

193 '\u03B1' , # 132 

194 '\u03B2' , # 133 

195 '\u0393' , # 134 

196 '\u2618' , # 135 

197 '\u2408' , # 136 carriage return digraph 

198 '\u03C3' , # 137 

199 '\u240A' , # 138 line feed digraph 

200 '\u03BB' , # 139 

201 '\u03Bc' , # 140 

202 '\u21B5' , # 141 downwards arrow 

203 '\u03C4' , 

204 '\u03A6' , 

205 '\u03B8' , 

206 '\u03A9' , 

207 '\u03B4' , 

208 '\u03B5' , 

209 '\u03C0', 

210 'Ä' , 

211 'ä' , 

212 'Ö' , 

213 'ö' , 

214 'Ü' , 

215 'ü', 

216 '\u25AF' , 

217 '\u03A3' , 

218 '\u2260' , 

219 '£', 

220 '\u25AF' , 

221 ' ' , 

222 '!' , 

223 '"' , 

224 '#' , 

225 '$' , 

226 '%' , 

227 '&' , 

228 '\'' , 

229 '(' , 

230 ')' , 

231 '*' , 

232 '+' , 

233 ',' , 

234 '-' , 

235 '.' , 

236 '/' , 

237 '0' , 

238 '1' , 

239 '2' , 

240 '3' , 

241 '4' , 

242 '5' , 

243 '6' , 

244 '7' , 

245 '8' , 

246 '9' , 

247 ':' , 

248 ';' , 

249 '<' , 

250 '=' , 

251 '>' , 

252 '?' , 

253 '@' , 

254 'A' , 

255 'B' , 

256 'C' , 

257 'D' , 

258 'E' , 

259 'F' , 

260 'G' , 

261 'H' , 

262 'I' , 

263 'J' , 

264 'K' , 

265 'L' , 

266 'M' , 

267 'N' , 

268 'O' , 

269 'P' , 

270 'Q' , 

271 'R' , 

272 'S' , 

273 'T' , 

274 'U' , 

275 'V' , 

276 'W' , 

277 'X' , 

278 'Y' , 

279 'Z' , 

280 '[' , 

281 '\\' , 

282 ']' , 

283 '^' , 

284 '_' , 

285 '\'' , 

286 'a' , 

287 'b' , 

288 'c' , 

289 'd' , 

290 'e' , 

291 'f' , 

292 'g' , 

293 'h' , 

294 'i' , 

295 'j' , 

296 'k' , 

297 'l' , 

298 'm' , 

299 'n' , 

300 'o' , 

301 'p' , 

302 'q' , 

303 'r' , 

304 's' , 

305 't' , 

306 'u' , 

307 'v' , 

308 'w' , 

309 'x' , 

310 'y' , 

311 'z' , 

312 '{' , 

313 '|' , 

314 '}' , 

315 '~' , 

316 '\u251C' 

317], 

318# map HP-41 character code to unicode 

319[ 

320 '\u25C6', 

321 '\u03F0', 

322 'x', 

323 '\u2190' , 

324 '\u03B1' , 

325 '\u03B2' , 

326 '\u03B3' , 

327 '\u2193' , 

328 '\u03B4', 

329 '\u03A3' , 

330 chr(10), 

331 '\u03BB' , 

332 '\u03Bc' , 

333 chr(13), 

334 '\u03C4' , 

335 '\u03A6' , 

336 '\u03B8' , 

337 '\u03A9' , 

338 '\u03B4' , 

339 '\u00C5' , 

340 '\u00E5', 

341 'Ä' , 

342 'ä' , 

343 'Ö' , 

344 'ö' , 

345 'Ü' , 

346 'ü', 

347 '\u00C6', 

348 '\u00E6' , 

349 '\u2260' , 

350 '£', 

351 '\u25AF' , 

352 ' ' , 

353 '!' , 

354 '"' , 

355 '#' , 

356 '$' , 

357 '%' , 

358 '&' , 

359 '\'' , 

360 '(' , 

361 ')' , 

362 '*' , 

363 '+' , 

364 ',' , 

365 '-' , 

366 '.' , 

367 '/' , 

368 '0' , 

369 '1' , 

370 '2' , 

371 '3' , 

372 '4' , 

373 '5' , 

374 '6' , 

375 '7' , 

376 '8' , 

377 '9' , 

378 ':' , 

379 ';' , 

380 '<' , 

381 '=' , 

382 '>' , 

383 '?' , 

384 '@' , 

385 'A' , 

386 'B' , 

387 'C' , 

388 'D' , 

389 'E' , 

390 'F' , 

391 'G' , 

392 'H' , 

393 'I' , 

394 'J' , 

395 'K' , 

396 'L' , 

397 'M' , 

398 'N' , 

399 'O' , 

400 'P' , 

401 'Q' , 

402 'R' , 

403 'S' , 

404 'T' , 

405 'U' , 

406 'V' , 

407 'W' , 

408 'X' , 

409 'Y' , 

410 'Z' , 

411 '[' , 

412 '\\' , 

413 ']' , 

414 '\u2191' , 

415 '_' , 

416 '\\' , 

417 'a' , 

418 'b' , 

419 'c' , 

420 'd' , 

421 'e' , 

422 'f' , 

423 'g' , 

424 'h' , 

425 'i' , 

426 'j' , 

427 'k' , 

428 'l' , 

429 'm' , 

430 'n' , 

431 'o' , 

432 'p' , 

433 'q' , 

434 'r' , 

435 's' , 

436 't' , 

437 'u' , 

438 'v' , 

439 'w' , 

440 'x' , 

441 'y' , 

442 'z' , 

443 '\u03C0' , 

444 '\u2280' , 

445 '\u2190' , 

446 '\u03A3' , 

447 '\u251C' , 

448 '\u25C6', 

449 '\u03F0', 

450 'x', 

451 '\u2190' , 

452 '\u03B1' , 

453 '\u03B2' , 

454 '\u03B3' , 

455 '\u2193' , 

456 '\u03B4', 

457 '\u03A3' , 

458 chr(10), 

459 '\u03BB' , 

460 '\u03Bc' , 

461 chr(13), 

462 '\u03C4' , 

463 '\u03A6' , 

464 '\u03B8' , 

465 '\u03A9' , 

466 '\u03B4' , 

467 '\u00C5' , 

468 '\u00E5', 

469 'Ä' , 

470 'ä' , 

471 'Ö' , 

472 'ö' , 

473 'Ü' , 

474 'ü', 

475 '\u00C6', 

476 '\u00E6' , 

477 '\u2260' , 

478 '£', 

479 '\u25AF' , 

480 ' ' , 

481 '!' , 

482 '"' , 

483 '#' , 

484 '$' , 

485 '%' , 

486 '&' , 

487 '\'' , 

488 '(' , 

489 ')' , 

490 '*' , 

491 '+' , 

492 ',' , 

493 '-' , 

494 '.' , 

495 '/' , 

496 '0' , 

497 '1' , 

498 '2' , 

499 '3' , 

500 '4' , 

501 '5' , 

502 '6' , 

503 '7' , 

504 '8' , 

505 '9' , 

506 ':' , 

507 ';' , 

508 '<' , 

509 '=' , 

510 '>' , 

511 '?' , 

512 '@' , 

513 'A' , 

514 'B' , 

515 'C' , 

516 'D' , 

517 'E' , 

518 'F' , 

519 'G' , 

520 'H' , 

521 'I' , 

522 'J' , 

523 'K' , 

524 'L' , 

525 'M' , 

526 'N' , 

527 'O' , 

528 'P' , 

529 'Q' , 

530 'R' , 

531 'S' , 

532 'T' , 

533 'U' , 

534 'V' , 

535 'W' , 

536 'X' , 

537 'Y' , 

538 'Z' , 

539 '[' , 

540 '\\' , 

541 ']' , 

542 '^' , 

543 '_' , 

544 '\'' , 

545 'a' , 

546 'b' , 

547 'c' , 

548 'd' , 

549 'e' , 

550 'f' , 

551 'g' , 

552 'h' , 

553 'i' , 

554 'j' , 

555 'k' , 

556 'l' , 

557 'm' , 

558 'n' , 

559 'o' , 

560 'p' , 

561 'q' , 

562 'r' , 

563 's' , 

564 't' , 

565 'u' , 

566 'v' , 

567 'w' , 

568 'x' , 

569 'y' , 

570 'z' , 

571 '{' , 

572 '|' , 

573 '}' , 

574 '~' , 

575 '\u251C' 

576], 

577# map HP-75 character set to unicode 

578 [ 

579 '\u0394', # 0  

580 '°', # 1 

581 'x', # 2 

582 '\u2190' , # 3 

583 '\u03B1' , # 4 

584 '\u03B2' , # 5 

585 '\u0393' , # 6 capital gamma 

586 '\u2618' , # bell! 

587 chr(8), 

588 '\u03C3' , # 9 

589 chr(10), 

590 '\u03BB' , 

591 '\u03Bc' , 

592 chr(13), 

593 '\u03C4' , 

594 '\u03A6' , 

595 '\u03B8' , 

596 '\u03A9' , 

597 '\u03B4' , 

598 '\u03B5' , 

599 '\u03C0', 

600 'Ä' , 

601 'ä' , 

602 'Ö' , 

603 'ö' , 

604 'Ü' , 

605 'ü', 

606 chr(27), 

607 '\u03A3' , 

608 '\u2260' , 

609 '£', 

610 '\u25AF' , 

611 ' ' , 

612 '!' , 

613 '"' , 

614 '#' , 

615 '$' , 

616 '%' , 

617 '&' , 

618 '\'' , 

619 '(' , 

620 ')' , 

621 '*' , 

622 '+' , 

623 ',' , 

624 '-' , 

625 '.' , 

626 '/' , 

627 '0' , 

628 '1' , 

629 '2' , 

630 '3' , 

631 '4' , 

632 '5' , 

633 '6' , 

634 '7' , 

635 '8' , 

636 '9' , 

637 ':' , 

638 ';' , 

639 '<' , 

640 '=' , 

641 '>' , 

642 '?' , 

643 '@' , 

644 'A' , 

645 'B' , 

646 'C' , 

647 'D' , 

648 'E' , 

649 'F' , 

650 'G' , 

651 'H' , 

652 'I' , 

653 'J' , 

654 'K' , 

655 'L' , 

656 'M' , 

657 'N' , 

658 'O' , 

659 'P' , 

660 'Q' , 

661 'R' , 

662 'S' , 

663 'T' , 

664 'U' , 

665 'V' , 

666 'W' , 

667 'X' , 

668 'Y' , 

669 'Z' , 

670 '[' , 

671 '\\' , 

672 ']' , 

673 '^' , 

674 '_' , 

675 '\'' , 

676 'a' , 

677 'b' , 

678 'c' , 

679 'd' , 

680 'e' , 

681 'f' , 

682 'g' , 

683 'h' , 

684 'i' , 

685 'j' , 

686 'k' , 

687 'l' , 

688 'm' , 

689 'n' , 

690 'o' , 

691 'p' , 

692 'q' , 

693 'r' , 

694 's' , 

695 't' , 

696 'u' , 

697 'v' , 

698 'w' , 

699 'x' , 

700 'y' , 

701 'z' , 

702 '{' , 

703 '|' , 

704 '}' , 

705 '~' , 

706 '\u251C' , # 127, append 

707 '\u0394', # 128 

708 '°', # 129 

709 'x', # 130 

710 '\u2190' , # 131 

711 '\u03B1' , # 132 

712 '\u03B2' , # 133 

713 '\u0393' , # 134, capital gamma 

714 '\u2618' , # 135 

715 '~' , # 136 

716 '\u03C3' , # 137 

717 '\u251C' , # 138 

718 '\u03BB' , # 139 

719 '\u03Bc' , # 140 

720 '\u25AF' , # 141 

721 '\u03C4' , # 142 

722 '\u03A6' , # 143 

723 '\u03B8' , # 144 

724 '\u03C9' , # 145 

725 '\u03B4' , # 146 

726 '\u03B5' , # 147 

727 '\u03C0', # 148 

728 'Ä' , 

729 'ä' , 

730 'Ö' , 

731 'ö' , 

732 'Ü' , 

733 'ü', 

734 '\u241B' , 

735 '\u03A3' , 

736 '\u2260' , 

737 '£', 

738 '\u25AF' , 

739 ' ' , 

740 '!' , 

741 '"' , 

742 '#' , 

743 '$' , 

744 '%' , 

745 '&' , 

746 '\'' , 

747 '(' , 

748 ')' , 

749 '*' , 

750 '+' , 

751 ',' , 

752 '-' , 

753 '.' , 

754 '/' , 

755 '0' , 

756 '1' , 

757 '2' , 

758 '3' , 

759 '4' , 

760 '5' , 

761 '6' , 

762 '7' , 

763 '8' , 

764 '9' , 

765 ':' , 

766 ';' , 

767 '<' , 

768 '=' , 

769 '>' , 

770 '?' , 

771 '@' , 

772 'A' , 

773 'B' , 

774 'C' , 

775 'D' , 

776 'E' , 

777 'F' , 

778 'G' , 

779 'H' , 

780 'I' , 

781 'J' , 

782 'K' , 

783 'L' , 

784 'M' , 

785 'N' , 

786 'O' , 

787 'P' , 

788 'Q' , 

789 'R' , 

790 'S' , 

791 'T' , 

792 'U' , 

793 'V' , 

794 'W' , 

795 'X' , 

796 'Y' , 

797 'Z' , 

798 '[' , 

799 '\\' , 

800 ']' , 

801 '^' , 

802 '_' , 

803 '\'' , 

804 'a' , 

805 'b' , 

806 'c' , 

807 'd' , 

808 'e' , 

809 'f' , 

810 'g' , 

811 'h' , 

812 'i' , 

813 'j' , 

814 'k' , 

815 'l' , 

816 'm' , 

817 'n' , 

818 'o' , 

819 'p' , 

820 'q' , 

821 'r' , 

822 's' , 

823 't' , 

824 'u' , 

825 'v' , 

826 'w' , 

827 'x' , 

828 'y' , 

829 'z' , 

830 '{' , 

831 '|' , 

832 '}' , 

833 '~' , 

834 '\u251C' # 255 

835], 

836# map ROMAN-8 to unicode 

837[ 

838 '\u2400', 

839 '\u2401', 

840 '\u2402', 

841 '\u2403', 

842 '\u2404', 

843 '\u2405', 

844 '\u2406', 

845 '\u2407', 

846 chr(8), # BS 

847 '\u2409', 

848 chr(10), # LF 

849 '\u240B', 

850 '\u240C', 

851 chr(13), # CR 

852 '\u240E' , 

853 '\u240F' , 

854 '\u2410' , 

855 '\u2411' , 

856 '\u2412' , 

857 '\u2413' , 

858 '\u2414', 

859 '\u2415' , 

860 '\u2416' , 

861 '\u2417' , 

862 '\u2418' , 

863 '\u2419' , 

864 '\u241A', 

865 '\u241B', 

866 '\u241C' , 

867 '\u241D' , 

868 '\u241E', 

869 '\u241F' , 

870 ' ' , 

871 '!' , 

872 '"' , 

873 '#' , 

874 '$' , 

875 '%' , 

876 '&' , 

877 '\'' , 

878 '(' , 

879 ')' , 

880 '*' , 

881 '+' , 

882 ',' , 

883 '-' , 

884 '.' , 

885 '/' , 

886 '0' , 

887 '1' , 

888 '2' , 

889 '3' , 

890 '4' , 

891 '5' , 

892 '6' , 

893 '7' , 

894 '8' , 

895 '9' , 

896 ':' , 

897 ';' , 

898 '<' , 

899 '=' , 

900 '>' , 

901 '?' , 

902 '@' , 

903 'A' , 

904 'B' , 

905 'C' , 

906 'D' , 

907 'E' , 

908 'F' , 

909 'G' , 

910 'H' , 

911 'I' , 

912 'J' , 

913 'K' , 

914 'L' , 

915 'M' , 

916 'N' , 

917 'O' , 

918 'P' , 

919 'Q' , 

920 'R' , 

921 'S' , 

922 'T' , 

923 'U' , 

924 'V' , 

925 'W' , 

926 'X' , 

927 'Y' , 

928 'Z' , 

929 '[' , 

930 '\\' , 

931 ']' , 

932 '^' , 

933 '_' , 

934 '`' , 

935 'a' , 

936 'b' , 

937 'c' , 

938 'd' , 

939 'e' , 

940 'f' , 

941 'g' , 

942 'h' , 

943 'i' , 

944 'j' , 

945 'k' , 

946 'l' , 

947 'm' , 

948 'n' , 

949 'o' , 

950 'p' , 

951 'q' , 

952 'r' , 

953 's' , 

954 't' , 

955 'u' , 

956 'v' , 

957 'w' , 

958 'x' , 

959 'y' , 

960 'z' , 

961 '{' , 

962 '|' , 

963 '}' , 

964 '~' , 

965 chr(127) , # DEL 

966 '\u2426', # undefined 

967 '\u2426', # undefined 

968 '\u2426', 

969 '\u2426' , 

970 '\u2426' , 

971 '\u2426' , 

972 '\u2426' , 

973 '\u2426' , 

974 '\u2426', 

975 '\u2426' , 

976 '\u2426', 

977 '\u2426' , 

978 '\u2426' , 

979 '\u2426', 

980 '\u2426' , 

981 '\u2426' , 

982 '\u2426' , 

983 '\u2426' , 

984 '\u2426' , 

985 '\u2426' , 

986 '\u2426', 

987 '\u2426' , 

988 '\u2426' , 

989 '\u2426' , 

990 '\u2426' , 

991 '\u2426' , 

992 '\u2426' , 

993 '\u2426' , 

994 '\u2426' , 

995 '\u2426' , 

996 '\u2426' , 

997 '\u2426' , 

998 '\u2423' , # NBSP 

999 '\u00C0' , 

1000 '\u00C2' , 

1001 '\u00C8' , 

1002 '\u00CA' , 

1003 '\u00CB' , 

1004 '\u00CE' , 

1005 '\u00CF' , 

1006 '\u00B4' , 

1007 '\u0060' , 

1008 '\u02C6' , 

1009 '\u00A8' , 

1010 '\u02DC' , 

1011 '\u00D9' , 

1012 '\u00DB' , 

1013 '\u20A4' , 

1014 '\u203E' , 

1015 '\u00DD' , 

1016 '\u00FD' , 

1017 '\u02DA' , 

1018 '\u00C7' , 

1019 '\u00E7' , 

1020 '\u00D1' , 

1021 '\u00F1' , 

1022 '\u00A1' , 

1023 '\u00BF' , 

1024 '\u00A4' , 

1025 '\u00A3' , 

1026 '\u00A5' , 

1027 '\u00A7' , 

1028 '\u0192' , 

1029 '\u00A2' , 

1030 '\u00E2' , 

1031 '\u00EA' , 

1032 '\u00F4' , 

1033 '\u00FB' , 

1034 '\u00E1' , 

1035 '\u00E9' , 

1036 '\u00F3' , 

1037 '\u00FA' , 

1038 '\u00E0' , 

1039 '\u00E8' , 

1040 '\u00F2' , 

1041 '\u00F9' , 

1042 '\u00E4' , 

1043 '\u00EB' , 

1044 '\u00F6' , 

1045 '\u00FC' , 

1046 '\u00C5' , 

1047 '\u00EE' , 

1048 '\u00D8' , 

1049 '\u00C6' , 

1050 '\u00E5' , 

1051 '\u00ED' , 

1052 '\u00F8' , 

1053 '\u00E6' , 

1054 '\u00C4' , 

1055 '\u00EC' , 

1056 '\u00D6' , 

1057 '\u00DC' , 

1058 '\u00C9' , 

1059 '\u00EF' , 

1060 '\u00DF' , 

1061 '\u00D4' , 

1062 '\u00C1' , 

1063 '\u00C3' , 

1064 '\u00E3' , 

1065 '\u00D0' , 

1066 '\u00F0' , 

1067 '\u00CD' , 

1068 '\u00CC' , 

1069 '\u00D3' , 

1070 '\u00D2' , 

1071 '\u00D5' , 

1072 '\u00F5' , 

1073 '\u0160' , 

1074 '\u0161' , 

1075 '\u00DA' , 

1076 '\u0178' , 

1077 '\u00FF' , 

1078 '\u00DE' , 

1079 '\u00FE' , 

1080 '\u00B7' , 

1081 '\u00B5' , 

1082 '\u00B6' , 

1083 '\u00BE' , 

1084 '\u002D' , 

1085 '\u00BC' , 

1086 '\u00BD' , 

1087 '\u00AA' , 

1088 '\u00BA' , 

1089 '\u00AB' , 

1090 '\u25A0' , 

1091 '\u00BB' , 

1092 '\u00B1' , 

1093 '\u2426' 

1094], 

1095# - map HP2225 charset to unicode 

1096# - bs, cr, lf and del are printable unicode symbols 

1097# - character 0x80-0x9f are the same as 0x00-0x1f 

1098# 

1099[ 

1100 '\u2400', 

1101 '\u2401', 

1102 '\u2402', 

1103 '\u2403', 

1104 '\u2404', 

1105 '\u2405', 

1106 '\u2406', 

1107 '\u2407', 

1108 '\u2408', 

1109 '\u2409', 

1110 '\u240A', 

1111 '\u240B', 

1112 '\u240C', 

1113 '\u240D', 

1114 '\u240E' , 

1115 '\u240F' , 

1116 '\u2410' , 

1117 '\u2411' , 

1118 '\u2412' , 

1119 '\u2413' , 

1120 '\u2414', 

1121 '\u2415' , 

1122 '\u2416' , 

1123 '\u2417' , 

1124 '\u2418' , 

1125 '\u2419' , 

1126 '\u241A', 

1127 '\u241B', 

1128 '\u241C' , 

1129 '\u241D' , 

1130 '\u241E', 

1131 '\u241F' , 

1132 ' ' , 

1133 '!' , 

1134 '"' , 

1135 '#' , 

1136 '$' , 

1137 '%' , 

1138 '&' , 

1139 '\'' , 

1140 '(' , 

1141 ')' , 

1142 '*' , 

1143 '+' , 

1144 ',' , 

1145 '-' , 

1146 '.' , 

1147 '/' , 

1148 '0' , 

1149 '1' , 

1150 '2' , 

1151 '3' , 

1152 '4' , 

1153 '5' , 

1154 '6' , 

1155 '7' , 

1156 '8' , 

1157 '9' , 

1158 ':' , 

1159 ';' , 

1160 '<' , 

1161 '=' , 

1162 '>' , 

1163 '?' , 

1164 '@' , 

1165 'A' , 

1166 'B' , 

1167 'C' , 

1168 'D' , 

1169 'E' , 

1170 'F' , 

1171 'G' , 

1172 'H' , 

1173 'I' , 

1174 'J' , 

1175 'K' , 

1176 'L' , 

1177 'M' , 

1178 'N' , 

1179 'O' , 

1180 'P' , 

1181 'Q' , 

1182 'R' , 

1183 'S' , 

1184 'T' , 

1185 'U' , 

1186 'V' , 

1187 'W' , 

1188 'X' , 

1189 'Y' , 

1190 'Z' , 

1191 '[' , 

1192 '\\' , 

1193 ']' , 

1194 '^' , 

1195 '_' , 

1196 '`' , 

1197 'a' , 

1198 'b' , 

1199 'c' , 

1200 'd' , 

1201 'e' , 

1202 'f' , 

1203 'g' , 

1204 'h' , 

1205 'i' , 

1206 'j' , 

1207 'k' , 

1208 'l' , 

1209 'm' , 

1210 'n' , 

1211 'o' , 

1212 'p' , 

1213 'q' , 

1214 'r' , 

1215 's' , 

1216 't' , 

1217 'u' , 

1218 'v' , 

1219 'w' , 

1220 'x' , 

1221 'y' , 

1222 'z' , 

1223 '{' , 

1224 '|' , 

1225 '}' , 

1226 '~' , 

1227 '\u2421', 

1228 '\u2400', 

1229 '\u2401', 

1230 '\u2402', 

1231 '\u2403', 

1232 '\u2404', 

1233 '\u2405', 

1234 '\u2406', 

1235 '\u2407', 

1236 '\u2408', 

1237 '\u2409', 

1238 '\u240A', 

1239 '\u240B', 

1240 '\u240C', 

1241 '\u240D', 

1242 '\u240E' , 

1243 '\u240F' , 

1244 '\u2410' , 

1245 '\u2411' , 

1246 '\u2412' , 

1247 '\u2413' , 

1248 '\u2414', 

1249 '\u2415' , 

1250 '\u2416' , 

1251 '\u2417' , 

1252 '\u2418' , 

1253 '\u2419' , 

1254 '\u241A', 

1255 '\u241B', 

1256 '\u241C' , 

1257 '\u241D' , 

1258 '\u241E', 

1259 '\u241F' , 

1260 '\u2423' , # NBSP 

1261 '\u00C0' , 

1262 '\u00C2' , 

1263 '\u00C8' , 

1264 '\u00CA' , 

1265 '\u00CB' , 

1266 '\u00CE' , 

1267 '\u00CF' , 

1268 '\u00B4' , 

1269 '\u0060' , 

1270 '\u02C6' , 

1271 '\u00A8' , 

1272 '\u02DC' , 

1273 '\u00D9' , 

1274 '\u00DB' , 

1275 '\u20A4' , 

1276 '\u203E' , 

1277 '\u00DD' , 

1278 '\u00FD' , 

1279 '\u02DA' , 

1280 '\u00C7' , 

1281 '\u00E7' , 

1282 '\u00D1' , 

1283 '\u00F1' , 

1284 '\u00A1' , 

1285 '\u00BF' , 

1286 '\u00A4' , 

1287 '\u00A3' , 

1288 '\u00A5' , 

1289 '\u00A7' , 

1290 '\u0192' , 

1291 '\u00A2' , 

1292 '\u00E2' , 

1293 '\u00EA' , 

1294 '\u00F4' , 

1295 '\u00FB' , 

1296 '\u00E1' , 

1297 '\u00E9' , 

1298 '\u00F3' , 

1299 '\u00FA' , 

1300 '\u00E0' , 

1301 '\u00E8' , 

1302 '\u00F2' , 

1303 '\u00F9' , 

1304 '\u00E4' , 

1305 '\u00EB' , 

1306 '\u00F6' , 

1307 '\u00FC' , 

1308 '\u00C5' , 

1309 '\u00EE' , 

1310 '\u00D8' , 

1311 '\u00C6' , 

1312 '\u00E5' , 

1313 '\u00ED' , 

1314 '\u00F8' , 

1315 '\u00E6' , 

1316 '\u00C4' , 

1317 '\u00EC' , 

1318 '\u00D6' , 

1319 '\u00DC' , 

1320 '\u00C9' , 

1321 '\u00EF' , 

1322 '\u00DF' , 

1323 '\u00D4' , 

1324 '\u00C1' , 

1325 '\u00C3' , 

1326 '\u00E3' , 

1327 '\u00D0' , 

1328 '\u00F0' , 

1329 '\u00CD' , 

1330 '\u00CC' , 

1331 '\u00D3' , 

1332 '\u00D2' , 

1333 '\u00D5' , 

1334 '\u00F5' , 

1335 '\u0160' , 

1336 '\u0161' , 

1337 '\u00DA' , 

1338 '\u0178' , 

1339 '\u00FF' , 

1340 '\u00DE' , 

1341 '\u00FE' , 

1342 '\u00B7' , 

1343 '\u00B5' , 

1344 '\u00B6' , 

1345 '\u00BE' , 

1346 '\u002D' , 

1347 '\u00BC' , 

1348 '\u00BD' , 

1349 '\u00AA' , 

1350 '\u00BA' , 

1351 '\u00AB' , 

1352 '\u25A0' , 

1353 '\u00BB' , 

1354 '\u00B1' , 

1355 '\u2426' 

1356] 

1357] 

1358# 

1359# convert single character 

1360# 

1361def charconv(s, charset): 

1362 return convert_to_unicode[charset][ord(s)] 

1363# 

1364# convert an integer character code  

1365# 

1366def icharconv(i, charset): 

1367 return convert_to_unicode[charset][i] 

1368# 

1369# convert a bytearray to a string 

1370# 

1371def barrconv(barr, charset): 

1372 slist= [] 

1373 for c in barr: 

1374 slist.append(convert_to_unicode[charset][c]) 

1375 return "".join(slist) 

1376# 

1377# convert a string 

1378# 

1379def stringconv(string, charset): 

1380 slist= [] 

1381 for c in string: 

1382 slist.append(convert_to_unicode[charset][ord(c)]) 

1383 return "".join(slist) 

1384