Back to MrGibson.com
C64 BASIC V2 only.

PETSCII (PET Standard Code of Information Interchange), also known as CBM ASCII,    
    
PETSCII - C64 ASCII - CMB ASCII
A#  Character  A#  Character  A#  Character  A#  Character  A#  Character
32  [sp]       48  0          64  @          80  P          96  

33  !          49  1          65  A          81  Q          97  ♠

34  "          50  2          66  B          82  R          98  |

35  #          51  3          67  C          83  S          99  

36  $          52  4          68  D          84  T          100 

37  %          53  5          69  E          85  U          101

38  &          54  6          70  F          86  V          102

39  '          55  7          71  G          87  W          103 

40  (          56  8          72  H          88  X          104

41  )          57  9          73  I          89  Y          105 

42  *          58  :          74  J          90  Z          106 

43  +          59  ;          75  K          91  [          107 

44  ,          60  <          76  L          92  £          108 

45  -          61  =          77  M          93  ]          109 \

46  .          62  >          78  N          94  ↑          110 /

47  /          63  ?          79  O          95  ←          111 


Examples:
10 PRINT CHR$(40)

When code is RUN, this will print 
(

10 PRINT CHR$(64)

When code is RUN, this will print
@


This section below is for character storage in ROM and RAM order and *not* PETSCII (ASCII) order. RAM and ROM character order: Partial C64 character set - character number (char num) and character. R# Character R# Character R# Character R# Character R# Character 0 @ 13 M 26 Z 39 ' 52 4 1 A 14 N 27 [ 40 ( 53 5 2 B 15 O 28 £ 41 ) 54 6 3 C 16 P 29 ] 42 * 55 7 4 D 17 Q 30 ↑ 43 + 56 8 5 E 18 R 31 ← 44 , 57 9 6 F 19 S 32 [sp] 45 - 58 : 7 G 20 T 33 ! 46 . 59 ; 8 H 21 U 34 " 47 / 60 < 9 I 22 V 35 # 48 0 61 = 10 J 23 W 36 $ 49 1 62 > 11 K 24 X 37 % 50 2 63 ? 12 L 25 Y 38 & 51 3 64
C64 Basic Part II - Character manipulation Move charaters from ROM to RAM for manipulation: 100 rem copy rom routine 105 for i=0 to 26: read x: poke 828+i,x: next i 110 data 169,000,160,208,133,095,132,096 : rem LDA #0; LDY #$D0; STA 95, STY 96 115 data 169,000,160,224,133,090,132,091 : rem LDA #0; LDY #$E0; STA 90; STY 91 120 data 169,000,160,064,133,088,132,089 : rem LDA #0; LDY #$40; STA 88; STY 89 125 data 076,191,163 : rem JMP $A3BF 130 rem COPY FULL SET $D000-$DFFF -> $3000-$3FFF (POKE 12288 - 16383) 135 rem move char set rom into ram 140 poke 56334,peek(56334) and 254 : rem INTERRUPT OFF 145 poke 1,peek(1) and 251 : rem CHAR SET ROM ON 150 sys 828 : rem START COPY 155 poke 1,peek(1) or 4 : rem CHAR SET ROM OFF 160 poke 56334,peek(56334) or 1 : rem INTERRUPT ON 165 poke 53272,peek(53272) and 240 or 12 : rem CHAR SET RAM AT $3000 Each character in high resolution mode is formed by a matrix of 8 × 8 pixels, so there are 8 rows per character, each with their own POKE address. 8 pixels per row. Each row can be programmed by converting each pixel/binary value to a decimal and stored at the POKE address value. char RAM POKE num row 1 row 2 row 3 row 4 row 5 row 6 row 7 row 8 character 0 12288 12289 12290 12291 12292 12293 12294 12295 -> @ 1 12296 12297 12298 12299 12300 12301 12302 12303 -> A 2 12304 12305 12306 12307 12308 12309 12310 12311 -> B 3 12312 12313 12314 12315 12316 12317 12318 12319 -> C 4 12320 12321 12322 12323 12324 12325 12326 12327 -> D 5 12328 12329 12330 12331 12332 12333 12334 12335 -> E 6 12336 12337 12338 12339 12340 12341 12342 12343 -> F 7 12344 12345 12346 12347 12348 12349 12350 12351 -> G 8 12352 12353 12354 12355 12356 12357 12358 12359 -> H 9 12360 12361 12362 12363 12364 12365 12366 12367 -> I 10 12368 12369 12370 12371 12372 12373 12374 12375 -> J 11 12376 12377 12378 12379 12380 12381 12382 12383 -> K 12 12384 12385 12386 12387 12388 12389 12390 12391 -> L 13 12392 12393 12394 12395 12396 12397 12398 12399 -> M 14 12400 12401 12402 12403 12404 12405 12406 12407 -> N 15 12408 12409 12410 12411 12412 12413 12414 12415 -> O 16 12416 12417 12418 12419 12420 12421 12422 12423 -> P 17 12424 12425 12426 12427 12428 12429 12430 12431 -> Q 18 12432 12433 12434 12435 12436 12437 12438 12439 -> R 19 12440 12441 12442 12443 12444 12445 12446 12447 -> S 20 12448 12449 12450 12451 12452 12453 12454 12455 -> T 21 12456 12457 12458 12459 12460 12461 12462 12463 -> U 22 12464 12465 12466 12467 12468 12469 12470 12471 -> V 23 12472 12473 12474 12475 12476 12477 12478 12479 -> W 24 12480 12481 12482 12483 12484 12485 12486 12487 -> X 25 12488 12489 12490 12491 12492 12493 12494 12495 -> Y 26 12496 12497 12498 12499 12500 12501 12502 12503 -> Z 27 12504 12505 12506 12507 12508 12509 12510 12511 -> [ 28 12512 12513 12514 12515 12516 12517 12518 12519 -> £ or (^ Vice) 29 12520 12521 12522 12523 12524 12525 12526 12527 -> ] 30 12528 12529 12530 12531 12532 12533 12534 12535 -> ↑ 31 12536 12537 12538 12539 12540 12541 12542 12543 -> ← 32 12544 12545 12546 12547 12548 12549 12550 12551 -> space 33 12552 12553 12554 12555 12556 12557 12558 12559 -> ! 34 12560 12561 12562 12563 12564 12565 12566 12567 -> " 35 12568 12569 12570 12571 12572 12573 12574 12575 -> # 36 12576 12577 12578 12579 12580 12581 12582 12583 -> $ 37 12584 12585 12586 12587 12588 12589 12590 12591 -> % 38 12592 12593 12594 12595 12596 12597 12598 12599 -> & 39 12600 12601 12602 12603 12604 12605 12606 12607 -> ' 40 12608 12609 12610 12611 12612 12613 12614 12615 -> ( 41 12616 12617 12618 12619 12620 12621 12622 12623 -> ) 42 12624 12625 12626 12627 12628 12629 12630 12631 -> * 43 12632 12633 12634 12635 12636 12637 12638 12639 -> + 44 12640 12641 12642 12643 12644 12645 12646 12647 -> , 45 12648 12649 12650 12651 12652 12653 12654 12655 -> - 46 12656 12657 12658 12659 12660 12661 12662 12663 -> . 47 12664 12665 12666 12667 12668 12669 12670 12671 -> / 48 12672 12673 12674 12675 12676 12677 12678 12679 -> 0 49 12680 12681 12682 12683 12684 12685 12686 12687 -> 1 50 12688 12689 12690 12691 12692 12693 12694 12695 -> 2 51 12696 12697 12698 12699 12700 12701 12702 12703 -> 3 52 12704 12705 12706 12707 12708 12709 12710 12711 -> 4 53 12712 12713 12714 12715 12716 12717 12718 12719 -> 5 54 12720 12721 12722 12723 12724 12725 12726 12727 -> 6 55 12728 12729 12730 12731 12732 12733 12734 12735 -> 7 56 12736 12737 12738 12739 12740 12741 12742 12743 -> 8 57 12744 12745 12746 12747 12748 12749 12750 12751 -> 9 58 12752 12753 12754 12755 12756 12757 12758 12759 -> : 59 12760 12761 12762 12763 12764 12765 12766 12767 -> ; 60 12768 12769 12770 12771 12772 12773 12774 12775 -> < 61 12776 12777 12778 12779 12780 12781 12782 12783 -> = 62 12784 12785 12786 12787 12788 12789 12790 12791 -> > 63 12792 12793 12794 12795 12796 12797 12798 12799 -> ? 64 12800 12801 12802 12803 12804 12805 12806 12807 -> - 65 12808 12809 12810 12811 12812 12813 12814 12815 66 12816 12817 12818 12819 12820 12821 12822 12823 67 12824 12825 12826 12827 12828 12829 12830 12831 68 12832 12833 12834 12835 12836 12837 12838 12839 69 12840 12841 12842 12843 12844 12845 12846 12847 70 12848 12849 12850 12851 12852 12853 12854 12855 71 12856 12857 12858 12859 12860 12861 12862 12863 72 12864 12865 12866 12867 12868 12869 12870 12871 73 12872 12873 12874 12875 12876 12877 12878 12879 74 12880 12881 12882 12883 12884 12885 12886 12887 75 12888 12889 12890 12891 12892 12893 12894 12895 76 12896 12897 12898 12899 12900 12901 12902 12903 77 12904 12905 12906 12907 12908 12909 12910 12911 78 12912 12912 12914 12915 12916 12917 12918 12919 79 12920 12921 12922 12923 12924 12925 12926 12927 80 12928 12929 12930 12931 12932 12933 12934 12935 81 12936 12937 12938 12939 12940 12941 12942 12943 82 12944 12945 12946 12947 12948 12949 12950 12951 83 12952 12953 12954 12955 12956 12957 12958 12959 84 12960 12961 12962 12963 12964 12965 12966 12967 85 12968 12969 12970 12971 12972 12973 12974 12975 86 12976 12977 12978 12979 12980 12981 12982 12983 87 12984 12985 12986 12987 12988 12989 12990 12991 88 12992 12993 12994 12995 12996 12997 12998 12999 89 13000 13001 13002 13003 13004 13005 13006 13007 90 13008 13009 13010 13011 13012 13013 13014 13015 91 13016 13017 13018 13019 13020 13021 13022 13023 92 13024 13025 13026 13027 13028 13029 13030 13031 93 13032 13033 13034 13035 13036 13037 13038 13039 94 13040 13041 13042 13043 13044 13045 13046 13047 95 13048 13049 13050 13051 13052 13053 13054 13055 96 13056 13057 13058 13059 13060 13061 13062 13063 97 13064 13065 13066 13067 13068 13069 13070 13071 98 13072 13073 13074 13075 13076 13077 13078 13079 99 13080 13081 13082 13083 13084 13085 13086 13087 100 13088 13089 13090 13091 13092 13093 13094 13095 101 13096 13097 13098 13099 13100 13101 13102 13103 102 13104 13105 13106 13107 13108 13109 13110 13111 103 13112 13113 13114 13115 13116 13117 13118 13119 104 13120 13121 13122 13123 13124 13125 13126 13127 105 13128 13129 13130 13131 13132 13133 13134 13135 106 13136 13137 13138 13139 13140 13141 13142 13143 107 13144 13145 13146 13147 13148 13149 13150 13151 108 13152 13153 13154 13155 13156 13157 13158 13159 109 13160 13161 13162 13163 13164 13165 13166 13167 110 13168 13169 13170 13171 13172 13173 13174 13175 111 13176 13177 13178 13179 13180 13181 13182 13183 112 13184 13185 13186 13187 13188 13189 13190 13191 113 13192 13193 13194 13195 13196 13197 13198 13199 114 13200 13201 13202 13203 13204 13205 13206 13207 115 13208 13209 13210 13211 13212 13213 13214 13215 116 13216 13217 13218 13219 13220 13221 13222 13223 117 13224 13225 13226 13227 13228 13229 13230 13231 118 13232 13233 13234 13235 13236 13237 13238 13239 119 13240 13241 13242 13243 13244 13245 13246 13247 120 13248 13249 13250 13251 13252 13253 13254 13255 121 13256 13257 13258 13259 13260 13261 13262 13263 122 13264 13265 13266 13267 13268 13269 13270 13271 123 13272 13273 13274 13275 13276 13277 13278 13279 124 13280 13281 13282 13283 13284 13285 13286 13287 125 13288 13289 13290 13291 13292 13293 13294 13295 126 13296 13297 13298 13299 13300 13301 13302 13303 127 13304 13305 13306 13307 13308 13309 13310 13311 EXAMPLE to rewrite character [ 170 rem rewrite char [ to stripes 171 rem Using the memory move to RAM in the above code 172 rem [ starts at 12504 and ends at 1250 173 rem 0 is an empty row of pixels and 255 is a full row of pixels in decimal 175 for a=12504 to 12511: read ze: poke a,ze: poke a+1024,255-ze: next a 180 data 255,0,255,0,255,0,255,0 Examples of the 256 possible compinations of pixels on a row.

1 1 1 1 1 1 1 1 = 255 - FF

1 1 1 1 1 1 1 0 = 254 - FE

1 1 1 1 1 1 0 1 = 253 - FD

1 1 1 1 1 1 0 0 = 252 - FC

1 1 1 1 1 0 1 1 = 251 - FB

1 1 1 1 1 0 1 0 = 250 - FA

1 1 1 1 1 0 0 1 = 249 - F9

1 1 1 1 1 0 0 0 = 248 - F8

1 1 1 1 0 1 1 1 = 247 - F7
1 1 1 1 0 1 1 0 = 246 - F6
1 1 1 1 0 0 1 1 = 243 - F3

1 1 1 1 0 0 1 0 = 242 - F2

1 1 1 1 0 0 0 1 = 241 - F1

1 1 1 1 0 0 0 0 = 240 - F0

1 1 1 0 1 1 1 1 = 239 - EF

1 1 1 0 1 0 1 1 = 235

1 1 1 0 1 0 1 0 = 234

1 1 1 0 1 0 0 1 = 233

1 1 0 1 0 1 0 1 = 213

1 1 0 1 0 1 0 0 = 212

1 1 0 1 0 0 1 1 = 211

1 1 0 1 0 0 1 0 = 210

1 1 0 1 0 0 0 1 = 209


1 0 0 1 0 0 1 1 = 147 - 93

1 0 0 1 0 0 1 0 = 146 - 92

1 0 0 1 0 0 0 1 = 145 - 91

1 0 0 1 0 0 0 0 = 144 - 90

1 0 0 0 1 1 1 1 = 143 - 8F

1 0 0 0 1 1 1 0 = 142 - 8E

1 0 0 0 1 1 0 1 = 141 - 8D

1 0 0 0 1 1 0 0 = 140 - 8C

1 0 0 0 1 0 0 1 = 137 - 89

1 0 0 0 1 0 0 0 = 136 - 88

1 0 0 0 0 1 1 1 = 135 - 87

1 0 0 0 0 1 1 0 = 134 - 86

1 0 0 0 0 1 0 1 = 133 - 85

1 0 0 0 0 1 0 0 = 132 - 84

1 0 0 0 0 0 1 1 = 131 - 83

1 0 0 0 0 0 1 0 = 130 - 82

1 0 0 0 0 0 0 1 = 129 - 81

1 0 0 0 0 0 0 0 = 128 - 80


0 1 1 1 1 1 0 1 = 125

0 1 1 1 1 1 0 0 = 124

0 1 1 1 1 0 0 1 = 121

0 1 1 1 1 0 0 0 = 120

0 1 1 0 0 1 1 0 = 102

0 1 1 0 0 1 0 1 = 101

0 1 1 0 0 1 0 0 = 100

0 1 0 1 0 1 0 1 = 85

0 1 0 1 0 0 0 1 = 81

0 1 0 1 0 0 0 0 = 80

0 1 0 0 1 1 0 1 = 77

0 1 0 0 1 1 0 0 = 76

0 1 0 0 1 0 1 1 = 75

0 1 0 0 1 0 1 0 = 74

0 1 0 0 1 0 0 1 = 73

0 1 0 0 1 0 0 0 = 72

0 1 0 0 0 1 1 1 = 71

0 1 0 0 0 1 1 0 = 70

0 1 0 0 0 1 0 1 = 69

0 1 0 0 0 1 0 0 = 68

0 1 0 0 0 0 1 1 = 67

0 1 0 0 0 0 1 0 = 66

0 1 0 0 0 0 0 1 = 65

0 1 0 0 0 0 0 0 = 64

0 0 1 1 1 1 1 1 = 63


0 0 1 1 1 1 1 0 = 62

0 0 1 1 1 1 0 1 = 61

0 0 1 1 1 1 0 0 = 60

0 0 1 1 0 1 1 1 = 55

0 0 1 1 0 0 1 1 = 51

0 0 1 1 0 0 1 0 = 50

0 0 1 0 1 1 0 1 = 45

0 0 1 0 1 0 0 1 = 41

0 0 1 0 1 0 0 0 = 40

0 0 1 0 0 0 0 1 = 33

0 0 1 0 0 0 0 0 = 32

0 0 0 1 1 1 1 1 = 31

0 0 0 1 1 1 1 0 = 30

0 0 0 1 1 0 0 1 = 25

0 0 0 1 0 1 0 1 = 21

0 0 0 1 0 1 0 0 = 20

0 0 0 1 0 0 0 1 = 17 - 11

0 0 0 1 0 0 0 0 = 16 - 10

0 0 0 0 1 1 1 1 = 15 - 0F

0 0 0 0 1 1 1 0 = 14 - 0E

0 0 0 0 1 0 1 1 = 11 - 0B

0 0 0 0 1 0 1 0 = 10 - 0A

0 0 0 0 1 0 0 1 = 9 - 09

0 0 0 0 1 0 0 0 = 8 - 08

0 0 0 0 0 1 1 1 = 7 - 07

0 0 0 0 0 1 1 0 = 6 - 06

0 0 0 0 0 1 0 1 = 5 - 05

0 0 0 0 0 1 0 0 = 4 - 04

0 0 0 0 0 0 1 1 = 3 - 03

0 0 0 0 0 0 1 0 = 2 - 02

0 0 0 0 0 0 0 1 = 1 - 01

0 0 0 0 0 0 0 0 = 0 - 00