<html><body>Ahoj,<br><br> žádné špinavosti v tom nejsou, při volání QD rutiny se SP uloží na 1148h a pokud dojde k chybě v libovolně zanořeném podprogramu, SP se obnoví na hodnotu prvního volání a vrátí se chybový kód. Ta 21h je v tabulce opravdu jen na přeskočení nastavení jiných hodnot než té první (JR 02h by udělalo to samé bez přepisu HL, ale zabralo by o byte víc a těch je v ROMce vždy málo), HL se změní, ale nemá žádný význam jako návratová hodnota.<br><br>Bohouš<br><br><p>---------- Původní zpráva ----------<br>Od: Vaclav Peroutka <vaclavpe@seznam.cz><br>Komu: sharpmz@mail.ordoz.com<br>Datum: 21. 6. 2016 19:25:56<br>Předmět: [SharpMZ] Podivnost v driveru QD</p><br><blockquote><div>Ahoj,<br><br>zkoumám driver QD a srovnávám ho s tím v MZ-1500. Jsou skoro shodné, nicméně našel jsem v ROMkodu MZ800 jednu podivnost, a to tuhle tabulku:<br><br> 0753 E400 3E29 QIOE41: LD A,41 ; Hard error<br> 0754 E402 21 DEFB 21H<br> 0755 E403 3E2E QIOE46: LD A,46 ; poruseni ochrany<br> 0756 E405 21 DEFB 21H<br> 0757 E406 3E32 QIOE50: LD A,50 ; disk neni pripraven<br> 0758 E408 21 DEFB 21H<br> 0759 E409 3E35 QIOE53: LD A,53 ; neni misto na disku<br> 0760 E40B 21 DEFB 21H<br> 0761 E40C 3E36 QIOE54: LD A,54 ; nenaformatovano<br> 0762 E40E ED7B4811 LD SP,(OLDSP)<br> 0763 E412 37 SCF<br> 0764 E413 C9 RET<br><br>Na ta návěští QIOE se skáče pomocí JP a JR. A "DEFB 21h" se samozřejmě disassembluje jako "LD HL,"<br><br>Trochu mi uniká smysl, se musím přiznat. Podezírám, že se dějí nějaké špinavosti se Stack Pointerem a HL se prostě zahazuje. jen nevím, kde.<br><br>Vašek<br><br>PS. Jo a je to i v ROMkodu MZ1500...<br></div>_______________________________________________<br>SharpMZ mailing list<br>SharpMZ@mail.ordoz.com<br>http://mail.ordoz.com/mailman/listinfo/sharpmz</blockquote></body></html>