When arguments passed to compiler are too long for good old DOS,
something must be cut off.. for instance long paths to OBJ directories
could be reduced to o: by "subst o: OBJ_directory".... which could be done
automaticly in makefile (of course some drive letter like o: must be free
for this purpose).
MIDAS 0.40 buglist
Because some strange people (like me) still code in 16bit
and version 0.40 is last 16bit Midas version,
it has sense to write also Midas 0.40 buglist.
(Ok, it had sense before RAIN)
Please, mail me if you are interested in this buglist and don't understand
Czech. I'm too lazy to translate without reason.
Verze 0.40 je poslední, kterou lze použít pod DOSem v Turbo/Borland Pascalu.
Jelikož se autoři už nehodlají zabývat verzí 0.40, rozhodl jsem se pro
programátory podobně postižené Pascalem shromáždit seznam chyb verze 0.40.
mutils.asm: mMemEqual
Po intrukci repe cmpsb je výsledek porovnání v ZF. Takže bezprostředně
následující instrukce test cx,cx tam nemá být. Nevím o tom, že by se
tato chyba nějak projevovala v MIDASu, i vadná verze mMemEqual jakž takž
funguje, pouze porovnává o bajt méně.
dpmi.asm: dpmiSegmentDescriptor
Před @err: chybí dvě instrukce, xor ax,ax a jmp @@done. To je triviální věc,
bez nich funkce nefunguje. V MIDASu taky nikde není použitá :).
dpmi.asm: dpmiRealModeInt
Před int 31h chybí xor cx,cx. Tím se DPMI serveru říká, že má vytvořit
vlastní stack. Pravděpodobným projevem této chyby je autory zdokumentované
a nevysvětlené hroucení MIDASu při opakovaném setupu v protektu a s kartou
PAS. Záludnost je v tom, že to, jestli se program zhroutí, záleží na stavu
registru CX před voláním funkce. V MIDASu to náhodou většinou vychází.
gus.asm: gusMalloc
Za @justalloc: chybí dvě intrukce, mov si,[bestfitofs] a mov es,[bestfitseg].
Projevem této chyby jsou neopodstatněné hlášky Out of soundcard memory a
Invalid conventional memory block při hraní přes Gravise. Problém vzniká
řídce, pouze při fragmentované paměti Gravise, je-li při požadavku na
naalokování X bajtů nalezena díra velikosti přesně X. Tuto chybu si můžou
opravit i uživatelé verze 0.60, protože jsem ji odhalil a ohlásil Alfredovi
až po releasu 0.60.
gus.asm: ?
Dosud nenalezená chyba v gus.asm. Jejím projevem je porušení délek
instrumentů, takže z přehrávaného efektu je slyšet jen část nebo naopak
skončí později a je slyšet i kus dat za ním.
Nefatální drobnosti:
Inicializace timeru vytuhne pod Windows a na některých grafických kartách
v některých módech. Jediným řešením je v takových situacích timer nepoužívat.
Některé problémy se hlásí špatnou hláškou. Unexpected end of file často
znamená třeba nepovolený typ samplu v modulu. Out of conventional memory
někdy znamená nedostatek paměti na Gravisovi.
s3mload.c: ?
Prislo postou:
Pri loadovani nekterych S3Mek haze "unexpected end of file", tyto soubory
maji velikost order_tabulky liche cislo (word na offsetu 20h v s3m).
V "originalni" dokumentaci se pise, ze tato tabulka musi mit sudou
velikost.
ST3 vytvoreni takoveho modulu nejak zabrani, ale v jinych trackerech
tomu tak asi neni. Takze kdyz se tam najde ono liche cislo, midas to
upravi na cislo+1, a dale nacitane offsety na patterny, samply .. jsou
kapanek nezpravne.
Reseni - v souboru s3mload.c radek 317 "ordersize=2*(.." zmenit na
"ordersize=ms3m->songLength"
Nevim zda midas nevyhodi stejnou chybu i pri jinych problemech. Takoveto
nekorektni moduly jsem nasel doma dva, po oprave uz chodi.
Oznaceni bug asi nevystihuje to prave... spis ocharana pred nekorektnimi
moduly.
Navel/Jiri Hemzal
Contact
If you have any comments, suggestions, want to help or anything, write to
Dee
dee at dee.cz,
homepage