Konference: Počítač SHARP MZ-800 a emulátory
Od: | David Luftner |
Datum: | 20.10.2009 18:07 |
Předmět: | Re: IFF2? |
Re: IFF2?: |
Posilam jeste casti programu kde je odkaz na uvedeny podprogram (pnF9EC), u dalsich vyskytu jeste nemam potuchy co se okolo deje, ale asi je to prece s FD. ;¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤ ¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤ ; vypis chyboveho hlaseni a cekani na klavesu ; Vstup: DE=retezec chyby ; Vystup: CY=stav stisknute klavesy ; Nici: co se da ;¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤ ¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤ pnF06F: LD A, (pnEA46) ; povoleni vypisu chyboveho hlaseni OR A ; je vypis zakazan? RET Z ; pokud ano CY=0 a konec CALL pnF9EC ; ceka na stabilni stav iff2, ulozi stav iff2, zakaze preruseni CALL pnEE06 ; vymaze kurzor, pokud je zobrazen LD HL, (pnEA38) ; udaj o rovinach popredi a pozadi a udaj o inverzi znaku PUSH HL LD HL, (pnEA3A) ; L=sloupec pozice kurzoru, H=radek pozice kurzoru PUSH HL LD A, (pnF18B) ; udaj o moznosti vypsat radek s Fx prikazy PUSH AF XOR A ; zakaz LD (pnF18B), A ; vypsat radek s Fx prikazy LD HL, $8C LD (pnEA38), HL ; udaj o rovinach popredi a pozadi a udaj o inverzi znaku LD HL, $1800 ; L=0, H=$18 LD (pnEA3A), HL ; L=sloupec pozice kurzoru, H=radek pozice kurzoru LD B, 69 ; pocet znaku ... ;¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤ ¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤ ; priprav registry pro HDD operaci read nebo write ; Vstup: B=pocet sektoru k operaci ; HL'=vyssich 16bitu adresy na disku ; HL=nizsich 16bitu adresy na disku ; Vystup: CY=stav ready ; 1=neni ready 0=je ready ; Nici: co se da ;¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤ ¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤ pnF6E7: CALL pnF9EC ; ceka na stabilni stav iff2, ulozi stav iff2, zakaze preruseni PUSH DE ; uloz adresu pameti datove operace LD C, 10 ; pocitadlo cekani na ready smycky 2 LD DE, 0 ; pocitadlo cekani na ready smycky 1 pnF6F0: IN A, (HDDcmd) ; HDD Status register BIT 7, A ; je HDD ready ? JR Z, pnF701 ; pokud ano skoc DEC DE ; cekaci LD A, D ; smycka OR E JR NZ, pnF6F0 ... A v nasledujicim se v jako jedinem pouzije prectena hodnota IFF2 (az na konci) ;¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤ ¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤ ; cti z HDD ; Vstup: HL'=vyssich 16bitu adresy na disku ; HL=nizsich 16bitu adresy na disku ; DE=adresa pameti kam se cte ; B=pocet sektoru k operaci (8bit IDE - 1sektor=256bajtu, ale B nasobi takze B=1=dva sektory=512bajtu ; Vystup: CY=stav ready ; 1=chyba 0=ok ; Nici: co se da ;¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤ ¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤ pnF740: CALL pnF6E7 ; priprav registry pro HDD operaci read nebo write RET C ; HDD neni ready LD A, $20 ; prikaz ReadSector OUT (HDDcmd), A ; HDD Command register pnF748: CALL pnF71B ; cekej na signal od HDD ze jsou pripravena data RET C pnF74C: INI ; cti B*8 bajtu INI INI INI INI INI INI INI DJNZ pnF74C IN A, (HDDcmd) ; HDD Status register RRCA ; bylo to s chybou ? JR C, pnF766 ; pokud ano konec DEC D ; mame cist dalsi sektor ? JR NZ, pnF748 ; ano skoc pnF766: PUSH AF LD A, (pnF52E) ; v bitu 2 je stav iff2 pro testovani BIT 2, A JR Z, pnF76F ; pokud je puvodni stav iff2 v jednicce EI ; povol preruseni pnF76F: POP AF RET
[2009/1 (32)] [2009/3 (21)] [2009/4 (42)] [2009/5 (6)] [2009/8 (9)] [2009/9 (28)] [2009/10 (50)] [2009/11 (86)] [2009/12 (89)]
[1999 (1)]
[2000 (168)]
[2001 (733)]
[2002 (459)]
[2003 (654)]
[2004 (224)]
[2005 (105)]
[2006 (182)]
[2007 (201)]
[2008 (294)]
[2009 (363)]
[2010 (782)]
[2011 (522)]
[2012 (642)]
[2013 (442)]