SIDBASIC

SIDBASIC legfrissebb verzija, ami egy szoftveres SID lejtsz, konvertlt SID fjlok lejzszsre Enterprise 128 gpen, hardveres bvts nem szksges.
A szoftber EXOS kompatibilis, ha a gpe rendelkezik fjlkezel eszkzzel ( lemezvezrl, SD krtya), akkor az M64 fjlok egy fjlkezelbl vlaszthatk ki, a magns konfiggal rendelkezk tlthetik a magnrl a kivlasztott M64 fjlt.
A lejtszst 128KB-os gpen a lejtszs kzbeni 8Kb-os blokkonknt kicsomagols teszi lehetv.
Megktsek: max betlthet M64 fjlmret 24320 bjt (5f00h), nincs SYNC, fell- , s alultereszt szr emulci, SID digi effektek nem jtszhatk le
Kombinlt hullmformk nem mukdnek megfeleloen, ilyenkor egyszeruen zaj > fursz > hromszg > ngyszg prioritssal trtnik a konverzi, a valdi hardver ettol eltr.

Vezrls:
1 - zene lejtszs Dave chipen
2 - zene lejtszs kls 8bites DAC krtyn ha van a gphez csatlakoztatva
3 - raster bar be (csak 50Hz-es sebessg zenknl mkdik)
4 - raster bar ki
Esc - fjl vlaszts

Nhny sz az M64 fjlokrl:
A formtum lersa: 16384 byte-os blokkokat hasznl, minden blokk a 25 rhat SID regiszter 655 rtkt trolja, az elso 655 byte a 0. regiszter, a kvetkezo 655 byte az 1. regiszter, s gy tovbb. Az utols 9 byte ltalban 0, az albbiak kivtelvel:
- az utols blokkban 3FFE-3FFF pozcinl a tnylegesen hasznlt megszaktsok szma tallhat, ami kevesebb lehet 655-nl
- az elso blokkban 3FFD-nl a megszakts frekvencia - 50 Hz tallhat (gy 50-305 Hz tartomny lehetsges), 3FFB-3FFC-nl pedig a megszaktsok kztti SID ciklusok pontos szma CIA idoztsnl (CIA szmllba rt rtk + 1). Video megszaktsnl ez 0, s az alaprtelmezs 312 * 63 (PAL 50 Hz) vagy 262 * 65 (NTSC 60 Hz). A sid.com csak a kerektett Hz rtket veszi figyelembe
A 3-as csatorna regiszter (PWM felso 4 bit) eredetileg nem hasznlt 7. bitjnek specilis funkcija van: azt jelzi, ha a burkolgrbt jra kell indtani a GATE bit egy megszakts ciklus alatti 1->0->1 tmenete miatt.

Ksznet Varga Istvnnak (IstvanV) azz tletekrt, s a kvetkez routinokrt, s alkalmazsokt, nlkle a SIDBASIC nem jhetett volna ltre:
Rutinok:
8 KB blokkos kicsomagol rutin
megszaktsban Digi lejtsz rutin
idelis SID hangmintk generlsa
Alkalmazsok:
epcompress  - Enterprise csomagol program
epimgconv   - Enterprise kpkonvertl program
sid_dump    - "nyers" SID regiszter adat kinyer program SID fjlokbl
sid_conv    - "nyers" SID regiszter adat konvertl program M64 formtumba

Hasznlat:

sid_dump.exe INFILE OUTFILE [LENGTH1 [LENGTH2...]]
sid_dump.exe INFILE OUTFILE [SONGLENGTHS FILENAME]

sid_conv INFILE OUTFILE [INTFREQ [BLKSIZE [NOADSRBUG]]]
INTFREQ (default: -1): interrupt frequency, if the value is <=0 then it is read from input file, otherwise the value (Hz) is used given in command line. In case of -2 doubles the frequency of envelope emulation, which increase the size of output file with about 40-70%.
BLKSIZE (power of 2 in range 256-16384, default: 8192): size of a block of compression, size od  dictionary is double of block size (-blocksize BLKSIZE -maxoffs BLKSIZE*2). 0 or negative value also sets the default 8K.
NOADSRBUG (0 or 1 ,default: 0): if this value is not 0 then it resets the counter of SID envelope emulation 15 bit timer at rising edge og GATE bit. Real Hardware works differently, so in this case the conversion can be vorse also.
 
A sid_dump PSID file-t futtat minimlis emullt 6502-es krnyezetben, s a kimenete egyszeru "nyers" formtum, ami a SID regiszterekbe rt rtkeket trolja 50 Hz-es (vagy egyb frekvencij) megszaktsonknt.
Az ilyen file megfelelo tmrts utn lejtszhat a sid.com (lent) hasznlatval, ha van SID krtya (azaz jelenleg csak emultoron :)). 
A PSID -> RAW konvertls egybknt a SIDPLAY programmal s a sidrecn.lua scripttel is lehetsges, ha a sid_dump valamirt nem mukdik.

SID zenk pldul innen tlthetok le, plda konvertlsra (az epcompress csak a sid.com-os lejtszshoz kell, a sid_conv.exe a tmrtetlen formtumot is elfogadja):

..\sidconv\sid_dump.exe MUSICIANS/T/Tel_Jeroen/Cybernoid_II.sid cybnoid2.raw DOCUMENTS/Songlengths.txt MUSICIANS/T/Tel_Jeroen/Cybernoid_II.sid

Name:           Cybernoid II
Author:         Jeroen Tel
Released:       1988 Hewson
Video standard: PAL
SID model:      MOS6581
IRQ frequency:  50.12 Hz
Done converting track 1: 17343 frames
IRQ frequency:  50.12 Hz
Done converting track 2: 451 frames

(a kvetkez lps a SID.COM-mal val lejtszshoz szksges)
epcompress -raw -m0 -9 -blocksize 16384 -maxoffs 32768 cybnoid2.raw cybnoid2.raw 

Compressing data
  100%

* sid.com (3.37 kB. 106x13 - viewed 2 times.)
* sid.s (10.09 kB - downloaded 1 times.)
* decompress_m0_16K.s (10.27 kB - downloaded 1 times.)
* file.s (31.21 kB - downloaded 1 times.)
* mouse.s (1.47 kB - downloaded 1 times.)

A kvetkezo lps a SIDBASIC.COM ltal tmogatott s SID krtya nlkl is lejtszhat formtum ltrehozsa, ami a sid_conv programmal lehetsges. Ennek a formtumnak a lersa:

- az elejn 16 byte-os EXOS fejlc tallhat: 00h, 4Fh, tmrtett adat mret L, tmrtett adat mret H, IRQ frekvencia L, IRQ frekvencia H, megszaktsok szma (24 bit, az als 8 bit az elso), 7 nem hasznlt (mindig 0) byte
- az EXOS fejlcet kveti a tmrtett adat epcompress -raw -m2 -blocksize 8192 -maxoffs 16384 formtumban
- minden 8K-s blokk legfeljebb 682 megszakts hosszsg felvtelt tartalmaz, csatornnknt 4 konvertlt "regiszterrel". Az adat szervezse a blokkon bell hasonl a RAW formtumhoz. Az utols blokk vgn (1FFE-1FFF) 682 - a blokkban tnylegesen hasznlt megszaktsok szma tallhat
- a 0. s 1. csatorna regiszter a 16 bites SID frekvencia, zaj hullmformnl 4 bittel jobbra lptetve
- a 2. regiszter a gyurumodulcit (7. bit), hullmformt (5-6. bit, 00=hromszg, 01=fursz, 10=ngyszg, 11=zaj), s az aktulis hangerot (0-4. bit) tartalmazza. 0 hangero esetn a hullmforma mindig ngyszg
- a 3. regiszter a ngyszgjel kitltsi tnyezoje (felso 8 bit), csak nem 0 hangereju ngyszgjelnl, egybknt 0

Plda konvertlsra:
..\sidconv\sid_conv.exe cybnoid2.raw cybnoid2.m64
Converting file...
  100%
Compressing data
  100%