Pozdravljeni na straneh programov iz prejšnje Jugoslavije za 8 in 16 bitne mlinčke.



        Commodore C-64


News
ZX Spectrum
Commodore 64
Amiga
Amstrad CPC
Commodore +4
Atari ST
Galaksija
Orao
Orao
ReCracks
Misc
Misc
Forum
  
News
 
Light Show
Aleš Likar


       Jezik: Slovenski
    Povzetek: Light Show in Analiza signala.
     Skupina: Glasbeni Programi 
    Komentar: Pretipkano iz "Moj Mikro"
              številka 2, Februar 1987.
  Leto Izida: 1987
      Format: PRG
  Download


Opisi:
Moj Mikro, #2, Februar 1987, Uporabni Programi, Aleš Likar

Light Show za C64

Glasba in slika iz vašega kasetnika

  Program sprejema glasbo  iz commodorjevega  kasetnika in  jo slišno  in vidno
predstavi na  televizorju. Glavni  del programa  je napisan  v strojnem jeziku.
Začne se na  $C0EE. Sledi skok  na $C000, kjer  se postavi IRQ  vektor, tako da
kaže na  $C012. Tu  se začne  IRQ rutina  za pobiranje  bitov, ki  prihajajo iz
kasetofona. Rutina bere bit 4 na  lokaciji $DC0D (IRQ kontrolni register v  CiA
1). Več  kot pride  enic, večja  je frekvenca  signala. Izmerjena  frekvenca se
shrani na pomnilniški lokaciji $4E. Hkrati se glede na to, ali je prišla 1  ali
0,  vključi ali  izključi zvočnik  v televizorju,  razen če  to  preprečimo  iz
basica. Tako  je mogoče  prihajajoči signal  tudi slišati,  čeprav kvaliteta ni
ravno hi-fi. Rutina se konča na  $C0D2B z reševanjem registrov in vrnitvijo  iz
prekinitve (RTI).

  Glavna rutina je na lokacijah $C000-$C173.Skoku na $C000 sledi skok v izbrani
podprogram. Izbiro  smo naredili  v basicu,  tako da  smo na  lokaciji $C0F2 in
$C0F3 s poki vnesli začetni naslov  rutine. Potem je na vrsti preskušanje,  ali
je pritisnjena kakšna tipka. Če je,  se IRQ vektor postavi pazaj in  se program
vrne v basic, drugače pa spet skočimo v enega od treh podprogramov.

  Prvi podprogram je  SPEKTRALNI ANALIZATOR.  Leži na  naslovih $C04E-$C088, na
$C02C-$C04D pa shranjuje pozicijo kazalca - črte za vsako od frekvenc. V vsakem
prehodu programa se najprej vsi kazalci skrajšajo, razen če niso že  maksimalno
kratki. Potem  se v  vrstici, ki  je zapisana  na $4E,  kazalec podaljša za tri
znake. Postavijo se še kazalci v vmesnem pomnilniku in na zaslonu ter vrnitev v
glavni program.

  Drugi podprogram  je  YU-meter  (na  način  YU-metra predstavjena frekvenca).
Najprej se v programu zbrišeta potrebni vrstici, nato pa se vanju nariše toliko
znakov, kot je napisano na lokaciji  $4E. Posebnost tega podprograma je, da  se
sam spreminja: ko nariše gornji del puščice, spremeni kodo znaka v  instrukciji
LDA # KODA in naredi to še  za spodnji del puščice. Tretji podprogram je  LIGHT
SHOW. Začne se na $C0AF in konča na $C0ED, vendar je start pravzaprav na $C10D.
Tam  je rutina,  ki prenese  vsebino lokacije  $C175-$C55D na  zaslon.  Na  teh
lokacijah je  shranjena slika  treh »žarnic«  light showa.  Uporabil sem  način
razširjenega ozadja (extended background mode).  To pomeni, da je lahko  ozadje
znakov  v treh  različnih barvah.  Namesto inverznih  znakov in  istih, ki  jih
dobimo s tipko SHIFT, se izpisujejo  znaki z drugo barvo ozadja. Tako  je slika
ves čas na zaslonu, le vidimo je ne, ker ima isto barvo kot ozadje. S  pokanjem
barv na  lokacije 53282,  53283 in  53284 lahko  osvetlimo posamezne »žarnice«.
Podprogram na začetku preskuša vrednost frekvence na lokaciji $4E in na podlagi
te prižge eno od »žarnic«.

  V strojnem programu sta  še rutina  za prenos  znakov v  ROM na 12288 (zaradi
šumnikov) in rutina  za prenos zaslona  na pomnilniške lokacije  $C175-$C55D. V
programu v basicu  je pomemben samo  še EDITOR. Z  njim lahko spremenimo  sliko
light showa, če  nam sedanja ni  všeč. Ostanek basica  je namenjen »kozmetiki«:
določanju barv, risanju zaslonov itd.

  Verjetno marsikdo ne bo zadovoljen s kvaliteto tona,ki jo dobimo s softversko
rešitvijo. Zato sem se domislil še preprostega hardverskega posega. Po uporu je
treba povezati nožico 1 na serijskih  vratih z nožico 5 na AUDIO/VIDEO.  Najbrž
ste ugotovili, kaj se  zgodi. Na SERIAL SROIN  se pojavljajo podatki s  kasete,
vodimo pa ih na vhod AUDIO IN iz zunanjega izvora. Rezultat je bistveno  boljši
ton. Zato nas program v vrstici  2030 vpraša, ali je ta povezava  narejena. Sam
sem zanjo uporabil upor  100 KOhmov. Morda bi  šlo tudi z neposredno  povezavo,
vendar si je nisem upal tvegati.