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

Autor Wątek: programowanie  (Przeczytany 1070 razy)

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

Gizmoń

  • Gość
programowanie
« Odpowiedź #15 dnia: 27 Listopada 2008, 21:51 »
 Wystarczy  spojrzeć  na  to  od  strony  binarnej,  i  wszystko  jasne:  
   
  000001  
  000010  
  000011  
  000100  
  000101  
  000110  
  000111  
  001000  
  001001  
  001010  
  001011  
   
  Wystarczy  spojrzeć  na  ostatnie  dwie  cyfry.  Ich  układ  co  pewien  czas  powtarza  się,  prawda?  
  Oczywiście  powyższy  przykład  pokazuje  na  czym  polega  \'powtarzanie  się\'  kolorów,  jeśli  przekroczymy  liczbę  3  a  nie  15  (a  więc  tak  jakby  komodorek  miał  4  kolory  zamiast  16,  co  jednak  nie  przeszkadza  w  zrozumieniu  mechanizmu  kodowania  koloru    \'\'  ).  Pozostałe  cyferki  już  nie  mają  znaczenia.  Z  tego  powodu  w  prawdziwym  C64  wpisanie  liczb:  
  0,  16,  32,  48,  64  itd.  zawsze  spowoduje  zmianę  koloru  na  czarny  (cztery  pierwsze  bity  będą  miały  wartość  0  co  po  zamianie  na  wartość  liczbową  daje  również  oczywiście  zero).  
   
  A  wracając  do  Twojego  programu  (tego  z  błędami)  -  nawet  jeśli  w  wersji  mojej  (poprawionej)  zastąpisz:  
   
  IF  A$=\'R\'  THEN  RUN  
   
  Linijką:  
   
  IF  A$=\'R\'  THEN  LOAD  \'PROGRAM  TESTOWY\',8  
   
  Załadowany  program  to  już  będzie  tylko  kupa  bezsensownych  liter  i  innych  znaków.  I  powiem  szczerze,  nie  wiem  do  tej  pory  jak  to  zrobić,  by  jeden  program  mógł  wczytać  drugi  tak,  by  ten  drugi  zadziałał.  Na  razie  udało  mi  się  to  tylko  dla  króciutkich  programów  (max  4  linie)  których  jedynym  zadaniem  było  wczytanie  drugiego  programu,  a  ten  drugi  wczytywał  pierwszy  i  tak  w  kółko.

zyga

  • Gość
programowanie
« Odpowiedź #16 dnia: 28 Listopada 2008, 11:36 »
 Wg.  instrukcji  BlackBoxa  możliwe  jest  coś  takiego:  
  \'<-ME  -  MERGE  -  ta  dyrektywa  powina  być  stosowana  tylko  do  programów  napisanych  w  BASIC`u  i  zapisanych  na  taśmie  z  headertype  1.  Instrukcja  działa  podobnie  jak  <-L,  z  tą  różnicą,  że  jeśli  w  pamięci  komputera  znajdował  się  jakiś  program  napisany  w  BASIC`u,  to  nie  zostanie  on  usunięty,  ale  do  tego  programu  zostanie  dołączony  wczytywany  program.  Wskazane  jest,  by  program  doczytywany  miał  numery  linii  wyższe  niż  poprzedni.  W  przeciwnym  razie  należy  dokonać  przenumerowania  (instrukcja  <-R  -  RENUMBER).  Sposób  zastosowania:  <-ME  lub  <-ME\'NAZWA\'.\'

TuMe64

  • Gość
programowanie
« Odpowiedź #17 dnia: 28 Listopada 2008, 16:19 »
 chyba  nierozumiem  was...  czy  chodzi  Wam  o  dogrywanie  kawałka  programu  do  programu  głównego  czy  wgrywanie  przez  program  główny  innego  programu?  jeśli  chodzi  o  to  drugie  to  nie  ma  problemu...

kabel

  • Gość
programowanie
« Odpowiedź #18 dnia: 28 Listopada 2008, 16:43 »
 Też  prawda  powtarzają  sie  
   

Gizmoń

  • Gość
programowanie
« Odpowiedź #19 dnia: 28 Listopada 2008, 17:04 »
 TuMe64:  
   
  Jeśli  takie  coś  (przykładowo):  
   
  10  ?  CHR$  (147)  
  20  GET  A$:  IF  A$=\'\'  THEN  20  
  30  LOAD  \'EDYTOR  SPRITE\',8  
   
  Ma  wczytać  mi  mój  program  o  nazwie  edytor  sprite,  który  ma  z  500  linii,  z  wczytanego  programu  zostają  same  szczątki.  Czasem  nawet  widać,  że  był  to  program,  ale  jest  w  nim  masa  błędów,  np.  
   
  50  IF  X=129  THEN  IF  PEEK  RUN  XA=\'  
  60  IF  X=137  THEN  NEW  XY=517  OPEN#  
  CLOSEX$  
  80  RUNPOKECLOSELOADSAVEOPENIFPEEK?#@$#%FDHH VHBHRYTHRV  HTRVH  NHGGN  
  90  LISTPRINT  \'TRWA  KODOWANIE  OBRAZKA...\':  GOTO  LISTNEWOPEN#  
   
  Oczywiście  wczytany  program  chce  się  sam  uruchomić,  ale  nie  może  z  powodu  tych  błędów  (od  razu  wywala  SYNTAX  ERROR  IN  50).  Nie  jest  to  zależne  od  tego,  skąd  wczytuję  program  (czy  z  dyskietki,  czy  z  magnetofonu  -  zawsze  takie  samo  zachowanie).  Więc  chyba  jest  inaczej,  z  TYM  DRUGIM  problem  jest!

Offline Kisiel

  • Level 7
  • *******
  • Wiadomości: 11447
  • Number 7 in all users competition...
    • http://wiki.projekt64.filety.pl/doku.php
programowanie
« Odpowiedź #20 dnia: 28 Listopada 2008, 17:08 »
 a  to  jakiś  problem  wywołanie  na  ramkę?  ustawiasz  tak  dzielnik  częstotliwości  jak  ci  się  chce  i  tyle.  Ograniczeniem  jest  tylko  to  ile  w  stanie  jest  odebrać  danych  układ  SID.
idz wyprostowany wśród tych co idą na kolanach

...w przypadku checi zakupu UK1541,GA,MA,T8500,T7501 prosze o kontakt na Facebooku, haslo: UK1541....

chateau

  • Gość
programowanie
« Odpowiedź #21 dnia: 28 Listopada 2008, 17:24 »
 tos  sie  wstrzelil  Kisiel...

kabel

  • Gość
programowanie
« Odpowiedź #22 dnia: 30 Listopada 2008, 13:23 »
 A  i  jeszcze  jedno  pytanie:jak  tworzyć  muzyke  (na  c64)  do  programów  pisanych  w  basic`u  \'\'  

Chippy

  • Gość
programowanie
« Odpowiedź #23 dnia: 04 Stycznia 2009, 14:34 »
 Zrobić  tak,  aby  muzyka  leciała  w  tle  podczas  jakiegoś  programu  w  BASIC`u,  i  ten  player  nie  był  napisany  w  assemblerze,  nie  da  się.  Możesz  najwyżej  zrobić  z  DATA  i  z  paru  instrukcji  muzykę  \'podczas  bezczynności  programu\',  której  przykładowy  kod  przepiszę  ci  w  wolnym  czasie.  Jest  też  coś  takiego  jak  przerwania,  ale  nie  będę  ciebie  w  to  wgłębiać.

Chippy

  • Gość
programowanie
« Odpowiedź #24 dnia: 04 Stycznia 2009, 14:41 »
 Przepiszę  ci  kawałek  z  mojej  stareńkiej  książki  do  c64:  
   
   
  7.2.  PROGRAM  PRZYKŁADOWY  
   
  Jako  pierwsze  trzeba  ustalić  jakie  głosy  (generatory  dźwięku)  chce  się  wykorzystać.  Następnie  ustala  się  cztery  podstawowe  parametry  (głośność,kształt  itd.).  Istnieje  oczywiście  możliwość  równoczesnego  wykorzystania  trzech  generatorów.  Program  przykładowy  wykorzystuje  jeden  głos.  
   
  10SI=54272:FL=SI:FH=SI+1:W=SI+4:A=SI+5:H =SI+6:l=SI+24  
  20  POKEL,15  
  30  POKEA,16+9  
  40  POKEH,4*16+4  
  50  POKEFH,29:POKEFL,69  
  60  POKEW,17  
  70  FORT=1TO500:NEXT  
  80  POKEW,0:POKEA,0:POKEH,0  
   
  W  wolnym  czasie  dokoncze  :)