Aktualności: C64 Power - online od stycznia 2000 !

Autor Wątek: Co wspólnego mają kolory w ASCII i dla POKE?  (Przeczytany 2717 razy)

0 użytkowników i 1 Gość przegląda ten wątek.

Offline BagoZonde

  • Level 6
  • ******
  • Wiadomości: 1055
    • http://www.commocore.com
Co wspólnego mają kolory w ASCII i dla POKE?
« dnia: 27 Lutego 2011, 12:15 »
 Witam,  w  sumie  od  zawsze  mnie  zastanawiało,  dlaczego  kolory  w  kodach  ASCII  są  tak  ułożone.  Ma  się  to  nijak  do  wartości  kolorów  wpisywanych  przez  POKE.  Mimo  wszystko  wydaje  mi  się,  że  \'rozproszenie\'  kolorów  ASCII  nie  jest  przypadkowe.

Stąd  też  moje  pytanie,  czy  istnieje  jakaś  sztuczka,  żeby  przełożyć  wartość  koloru  ASCII  na  wartość  koloru  dla  POKE?

Napisałem  sobie  nawet  w  tym  celu  program,  żeby  znaleźć  jakieś  wspólne  rozwiązanie,  ale  program  wypluł  mi,  że  wspólnego  rozwiązania  nie  znajdę.  Ustaliłem,  że  jest  grupa  kolorów,  w  których  można  w  szybki  sposób  przełożyć  je  na  wartości  dla  POKE,  np:

od  wartości  149  dla  CHR$(149)  [DARK  BROWN]  wystarczy  odjąć  12  i  uzyskamy  ten  sam  kolor  dla  POKE  (czyli  137).  Tym  sposobem  można  załatwić  połowę  palety  kolorów  (kolory  dla  ASCII  od  149  do  155  i  159),  ale  już  z  drugą  częścią  palety  jest  pod  górkę.

W  drugą  stronę,  tzn.  z  POKE  na  ASCII  jest  prościej,  bo  mogę  sobie  skorzystać  z  tablicy,  ale  w  tę  stronę  zbudowanie  tablicy  mija  się  z  celem.  Za  duża  rozpiętość  wartości,  których  nie  można  nawet  na  żaden  sposób  sprytniej  przekształcić.

Stąd  też  moje  pytanie,  czy  w  ogóle  możliwe  jest  szybkie  przetransformowanie  tej  wartości  bez  zbędnych  warunków?  Oczywiście  wszystko  celem  jak  najkrótszego  kodu  w  assemblerze  :).
 



chateau

  • Gość
Co wspólnego mają kolory w ASCII i dla POKE?
« Odpowiedź #1 dnia: 27 Lutego 2011, 17:31 »
 c64  ma  petscii  nie  ascii  ;p  szybka  konwersja  raczej  nie  jest  mozliwa  przy  tym  ukladzie,kolory  w  petscii  pewnie  po  prostu  upychano  w  wolnych  miejscach,stad  brak  logiki.

.table  $90,$05,$1c,...

lda  petsciicode
ldx  #$ff
loop:  inx
cmp  table,x
bne  loop
x  ->  poke

w  jakim  celu  chcesz  w  ogole  korzystac  z  kodow  petscii  dla  kolorow  ?  w  asm  to  kompletnie  niepotrzebne.

Offline BagoZonde

  • Level 6
  • ******
  • Wiadomości: 1055
    • http://www.commocore.com
Co wspólnego mają kolory w ASCII i dla POKE?
« Odpowiedź #2 dnia: 27 Lutego 2011, 18:57 »
 Chateau,  dzięki  za  info.  Już  odpowiadam:  potrzebne  w  przypadku,  gdy  pliki,  z  których  odczytuję  dane  zapisane  mają  kolory  w  PETSCII.  I  gdy  odczytuję  te  dane  przez  JSR  $FFD2.  Dzięki  za  info,  że  to  PETSCII  bo  wszędzie  w  xiążkach  piszą  ASCII.  Pewnie  ogólnikowo.
 

A propos Twojego kodu, właśnie tego chciałem uniknąć jako \'marnotrawcy cykli\' :D, ale chyba będę na to skazany :).