Kis korrekció így lefekvés előtt. :) Csak 25 hangot tud tárolni, hangcsatornánként. Nincs sok értelme tehát előre kiküldeni sok hangot. Belátom, sokkal-sokkal macerásabb, mint a HW-t direktben piszkálni. Még az is lehet, hogy sokkal lassabb is (az elviselhetőnél). Mégis, elvileg ez a helyes út. A gyakorlat persze ellentmondhat.
Hogy valódi választ is adjak: A "relloc" érték ilyenkor a program elejéhez képest relatív. Ha tehát a programodban a 13-ik byte-ot cłmzed, akkor 0013 lesz (a modulban). Amikor az EXOS betölti a modult, akkor a programodat ahova tölti, ahhoz képest 13-at ír helyette. Ha tehát 3C12-n kezdődik a programod, akkor 3C1F lesz. Remélem, így már érthető.
Ez az egész csak akkor érdekes, ha file-t csinálsz belőle. Akkor lesz a 8 bites adatból 9 bit, a 16 bites "relloc"-ból 19 bit. EXOS 10.3 fejezet. Én nemigen ismerem az ASMON-t, de azt hámozom ki belőle, hogy a CSEG direktíva jelzi neki, hogy a köv. címkét "relloc"-ként számolja és pakolja majd ki a file-ba. A Hisoft GEN-ben (és nem a MON-ban, ahogy írtam) ez sokkal egyszerűbb, azt nem kell így "támogatni". "Én nem fogom soha használni" Nana. Mint tudjuk, 640 kbyte-ba minden program belefér. :-))
"Ez most mit is takar tulajdonképpen? Mármint az áthelyezhető szó." Rövid válasz, mivel a te 5-ös fejlécedhez nem kell: "relocatable word". A 2-es és 7-es feljécű file-okat az EXOS oda rakja, ahova akarja, tehát az abszolút címek a fordításkor még nem ismertek. Gondolom, az ASMON-ban ennek a jelzésére szolgál a CSEG. (Úgy rémlik, a MON-ban egyszerűbb volt a használata.)
Hát nekem ahhoz most puskázni kéne, hogy olyankor mi van nyitva vagy sem, Zozo nyilván kapásból megmondja majd. De tippelek, hogy nincs olyankor csatorna nyitva, tehát igen, nyitsz egyet, és küldözgeted, előre, egyben az egészet. Tehát blokkosan érdemesebb. (Mondjuk, még nem próbáltam így ki, de elvileg kéne mennie.)
Aki nem csinál ilyet, az nem is ért hozzá. :-D Én meg nem is olyan rég /dev/hdd1 helyett /dev/hdd-t írtam a dd-nek. Szóval egy partíció eleje helyett a part.táblát sikerült tönkretennem :-))
Nem ismerem az eredetit. De nem tűnik hamisnak. Viszont a ritmus mintha nem stimmelne néhol (szünet marad ki talán?) Egyébként meg utálom, hogy nem lehet kilépni belőle :-(((
Én 20 évvel ezelőtt legfeljebb anyám munkahelyén a főhelyet elfoglaló IBP PC/XT klón előtt ültem, és az összes dolgozó közt nekem volt a legtöbb fogalmam arról, mi is az a számítógép és hogy is kell kezdeni vele valamit... :)
Mármint egyszerűen karakter írása exos hívással? (esetleg blokk írása?)
Letiltani többféleképpen is lehet. Vagy úgy, ahogy Zozo mondja, létrehozol egy új eszközt, ugyanolyan (SOUND) névvel (EXOS 21, link device). Ehhez egy kissé tanulmányozni kell az EXOS-t :-)) A saját eszközöd "dummy" lehet, tehát nem csinál semmit. Viszont letiltja az eredetit. Hátránya ennek a megoldásnak, hogy helyrehozni csak EXOS reset-tel lehet. A másik lehetőség, hogy megkeresed a memóriában az eszközleíróját, és vagy törlöd a b5 bitet a DD_IRQFLAG-ben (ekkor az eszköz megmarad, csak az IT rutinja marad el), vagy letiltod a DD_TYPE-ba nemnullát írva (a Zozo féle megoldásnak is ez lesz az egyik eredménye). Előnye ennek a megoldásnak, hogy könnyen visszacsinálható. Hátránya, hogy kissé többet kell programozni hozzá. De nem vészes.
Az Esc kódja 27 (hexa 1B). Ez valóban nincs leírva. De aki 20 évvel ezelőtt egyszer is ült terminál előtt, az tudja. :-)) "hogy lehet egyáltalán összeállítani az escape sequeniat?" Simán egymás után kiadod a kódokat. 1B "S" ...
Már írtam: csinálsz egy saját SOUND-ot, és az letiltja a belsőt. Célszerű tanulményozni az MBP-t :-) Enterpress 1993 január, 13. oldal bal alsó sarok, az EXOS 21 és előzménye, plusz a hozzá tartozó táblázatok a 14 oldal bal alsó és jobb felső sarok :-)
A hang tényleges előállításához ki kell küldenünk egy escape szekvenciát, ami meghatározza a hangot. Ennek formája a következő:
esc S <env> <p> <vl> <vr> <sty> <ch> <d> <f>
1. hogy a fenébe kell escape frekvenciát kiküldeni???
2. hogy lehet egyáltalán összeállítani az escape sequeniat?
3. aki az EXOS könyv alapján tanult autodidakta módon meg EP-t programozni, úgy hogy más gépen nem szerzett már programozói gyakorlatot az minimum zseni.
Megkívántam. :-)) Miért nem a SOUND eszközre küldöd ki? Sokkal egyszerűbb lenne a kotta->freki konverzió, és lehetne hangszínt is váltogatni, akár utólag is.
Megnéztem. Most már értem, hogy miért a Musixbox formátumot használod: sokkal kevesebb vesződség van vele. Konzervzenére valóban ez a legegyszerűbb. Ami a szaggatást illeti, egyszerű kivédeni: le kell tiltani a SOUND device-t. Azért én változatlanul azt gondolom, az IT rendszert nem illik bolygatni. Az EXOS szépen fel van építve, használni kell, nem megkerülni. Új zene írására pedig a SOUND csatornát használnám.
Na itt jon az amirol beszeltem. Egyreszt a mai gepek altalaban multitask de nem real time OS-eket futtatnak tehat eleve alkalmatlanok elmletileg is valaminek az emulalasara ahol idot kell pl garantalni mert kulonben szinkronbol kiesik (pl akadozo hang stb). Masreszt pl az EP hangjara ott a Dave aztan kesz. PC-n ugye tizmillio fele hangktyu van teljesen mas hw adotsagokkal. Ezt persze probaljak nyilvan sw-bol elfedni es egyseges pl audio API-t nyujtani, de elmondhato hogy ennek megvan az ara tobb szempontbol is. Ha a PC vmi olyasmi lenne hogy egy konkret gyarto egy konkret dolgai sw/hw tekinteteben mint egy atlag regi home computer akkor mas lehetne a helyzet ... Viszont emiatt nem is teljesen fair a dolog, mertha az EP is annyifele lenne mint a PC, akkor valszeg az se lenne annyira jo :(
Kevin Thacker régi DOS-os emuját én még P200-on használtam és gyors volt azon a gépen is (hang nem volt)!
Ha belegondolunk, opkód szinten jó esetben ugyanannyi vagy kevéssel több x86 ciklusra van szükség 1-1 Z80 utasítás emulálásához. Persze a megmaradó CPU szufla kell még a "körítésre" is.
A processzor sebesség nem lehet probléma. Megfelelően beállítva nekem nem akadozik sokkal lassabb gépen sem (1.3 GHz PIII, de régebben használható volt 700 MHz-en is amíg még volt ilyen gépem).
Windows (legalábbis 2K és XP) alatt is lehetne elfogadható hang ha az emulátor SDL/DirectSound helyett pl. PortAudio-t használna ASIO driverrel (vagy ASIO4ALL-al ami minden hangkártyával használható amelyhez van WDM driver). Talán majd a következő verzióban lesz ez is :-)
folyamatosan lenyomott billentyűnél kicsit dadogós a KEY CLICK...
Buffer méret állításával próbálkoztál (pl. sndbuf_hw=4096, sndbuf_sw=256) ? Természetesen ha ezeket növeled akkor "dadogás" helyett késik a hang, de az talán kevésbé zavaró. Linux alatt egyébként a fenti értékek negyedével vagy akár nyolcadával sem akadozik a hang.