Zdravim, muzete mi nekdo osvetlit co dela nasledujici podprogram? PUSH AF loop: LD A, I PUSH AF POP HL LD A, I LD A, L PUSH AF POP HL CP L JR NZ, loop LD (data), A DI POP AF RET nasleduje prace s VRAM Diky David
Celé vlákno · 12 zpráv
Re: IFF2?
Michal Hučík SHARP MZ-800
ech .. to je zajímavá pastička na disassemblery :)) Z ceho to je? To by asi chtelo videt na zivo v debuggeru ... David Luftner (sharpemupandora.cz) napsal(a):
Zobrazit citovaný text (21 řádků)
> Zdravim, muzete mi nekdo osvetlit co dela nasledujici podprogram? > > PUSH AF > loop: LD A, I > PUSH AF > POP HL > LD A, I > LD A, L > PUSH AF > POP HL > CP L > JR NZ, loop > LD (data), A > DI > POP AF > RET > nasleduje prace s VRAM > > Diky David > --- >
Re: IFF2?
+GAMA SHARP MZ-800
Zobrazit citovaný text (6 řádků)
>PUSH AF ; nezájem, jen ukládá AF >loop: LD A, I ; I do A (nezpracuje se, jen se později přepíše) >PUSH AF ; A(=I) do H, F (state 1) do L - state 1 here >POP HL >LD A, I ; I do A (nezpracuje se, jen se později přepíše)
; není mi jasné, není tam překlep? Jinak by tato instrukce neměla význam.
Zobrazit citovaný text (11 řádků)
>LD A, L ; přesune původní obsah F (state 1) do A >PUSH AF ; původní F (state 1) do H, F (state 2) do L - state 2 here >POP HL >CP L ; porovnání původního F (state 1) s nedávným F (state 2) >JR NZ, loop ; dokud se navzájem nerovnají >LD (data), A ; při nějaké smysluplné hodnotě >DI >POP AF ; nezájem, jen obnoví AF a vrátí se >RET
Fakt záhada.
Re: IFF2?
Vaclav Peroutka SHARP MZ-800
Zobrazit citovaný text (13 řádků)
> ---------------------------------------- > > > >PUSH AF ; nezájem, jen ukládá AF > >loop: LD A, I ; I do A (nezpracuje se, jen se později přepíše) > >PUSH AF ; A(=I) do H, F (state 1) do L - state 1 here > >POP HL > >LD A, I ; I do A (nezpracuje se, jen se později > přepíše) > ; není mi jasné, není tam překlep? Jinak > by tato instrukce neměla význam.
Co presne je IFF2 ? Neni "ld a,i" potreba kvuli tomu, aby se nejak spustilo zpracovani IFF2 ?
Zobrazit citovaný text (20 řádků)
> >LD A, L ; přesune původní obsah F (state 1) do A > >PUSH AF ; původní F (state 1) do H, F (state 2) do L - > state 2 here > >POP HL > >CP L ; porovnání původního F (state 1) s nedávným F (state > 2) > >JR NZ, loop ; dokud se navzájem nerovnají > >LD (data), A ; při nějaké smysluplné hodnotě > >DI > >POP AF ; nezájem, jen obnoví AF a vrátí se > >RET > > Fakt záhada. > > --- > > >
Re: IFF2?
+GAMA SHARP MZ-800
Zobrazit citovaný text (2 řádky)
>Co presne je IFF2 ? Neni "ld a,i" potreba kvuli tomu, aby se nejak spustilo zpracovani IFF2 ?
Kopíruje IFF2 do P/V. Pravda, IFF2 není v rámci F běžně dostupný, pomocí LD A,I se zkopíruje do P/V a stane se detekovatelným.
Re: IFF2?
Zdenek Adler SHARP MZ-800
Presne jak pise Gama, LD A,I je asi jediným ze způsobů, jak zjistit stav IFF2 který je jinak nepřístupný - při této instrukci se totiž (krom jineho) P/V flag nastaví právě dle IFF2. Jinak z jakého programu to pochází? Něco na Sharpovi? Vím že na Sharpovi se akorát hojně využívalo zakódování programu pomocí R registru, ale tohle jsem neviděl.... Z.
Zobrazit citovaný text (19 řádků)
----- Original Message ----- From: "+GAMA (sharpemupandora.cz)" <computer.research[doména skryta]> To: "Konference "Počítač SHARP MZ-800 a emulátory"" <sharpemupandora.cz> Sent: Tuesday, October 20, 2009 1:09 PM Subject: Re: IFF2? > > >>Co presne je IFF2 ? Neni "ld a,i" potreba kvuli tomu, aby se nejak >>spustilo zpracovani IFF2 ? > > Kopíruje IFF2 do P/V. > Pravda, IFF2 není v rámci F běžně dostupný, pomocí LD A,I se zkopíruje do > P/V a stane se detekovatelným. > > ---
Re: IFF2?
+GAMA SHARP MZ-800
PUSH AF ; nezájem, jen ukládá AF loop: LD A, I ; IFF2 do F (P/V) (nastaven při povoleném přerušení, shozen při zakázaném nebo pokud přijde přerušení během LD A,I) PUSH AF ; A(=I) do H - nezájem, F (state 1) do L - state 1 here POP HL LD A, I ; IFF2 do F (P/V) LD A, L ; přesune původní obsah F (state 1) do A PUSH AF ; původní F (state 1) do H, F (state 2) do L - state 2 here POP HL CP L ; porovnání původního F (state 1) s nedávným F (state 2) JR NZ, loop ; dokud se navzájem nerovnají (i.e., IFF2 ení při obou čteních stejné) LD (data), A ; při nějaké smysluplné hodnotě DI POP AF ; nezájem, jen obnoví AF a vrátí se RET Že by testoval, zda je v mezeře mezi přerušeními?
Re: IFF2?
David Luftner SHARP MZ-800
Tento podprogram je soucasti CP/M Biosu 4.1 a take Niposu. U obou se vyskytuje pred praci s VRAM respektive pred instrukci DI. To ze se testuje IFF2 na stabilni stav jsem pochopil, ale nepochopil jsem proc se testuje. David
Re: IFF2?
+GAMA SHARP MZ-800
Zobrazit citovaný text (4 řádky)
> Tento podprogram je soucasti CP/M Biosu 4.1 a take Niposu. U obou > se vyskytuje pred praci s VRAM respektive pred instrukci DI. To ze > se testuje IFF2 na stabilni stav jsem pochopil, ale nepochopil jsem > proc se testuje.
Prohledal jsem komentovaný výpis BIOSu pro MZ-800 s řadičem I8272, ale tam se podobný podprogram vůbec nevyskytuje...
Re: IFF2?
Vaclav Peroutka SHARP MZ-800
Zobrazit citovaný text (8 řádků)
> > > Tento podprogram je soucasti CP/M Biosu 4.1 a take Niposu. U obou > > se vyskytuje pred praci s VRAM respektive pred instrukci DI. To ze > > se testuje IFF2 na stabilni stav jsem pochopil, ale nepochopil jsem > > proc se testuje. > > Prohledal jsem komentovaný výpis BIOSu pro MZ-800 s řadičem I8272, > ale tam se podobný podprogram vůbec nevyskytuje...
To s ROMkou Sharpa podle mne nema nic spolecneho... Je to napr. tady: http://www.scav.ic.cz/download/MZ-800/MZ-800_Navody/System/Cpm_v14_BIOS_n.mac na adrese 0xFBB1. Call 0xFBB0 se tam parkrat vyskytuje, na adresach 0xF8E5, 0xF97C, 0xFA8F a 0xFB0B (od oka). Otazkou je, jestli tahle cast kodu je zavisla na Z80, nebo primo na Sharpu. Marek Smihla zrejme vychazel z CP/M 1.4, takze tu cast jen prevzal. Ale nekdo z LECu by mohl vedet. Pod tim kodem je podepsany Ludek Jirousek. Na spectru taky urcite existuje nejaky klon CP/M, nenajde se tam neco podobneho v BIOSu ? Vasek
Re: IFF2?
+GAMA SHARP MZ-800
Zobrazit citovaný text (6 řádků)
> >> > > Tento podprogram je soucasti CP/M Biosu 4.1 a take Niposu. U obou > > se vyskytuje pred praci s VRAM respektive pred instrukci DI. To ze > > se testuje IFF2 na stabilni stav jsem pochopil, ale nepochopil jsem > > proc se testuje. >> > Prohledal jsem komentovaný výpis BIOSu pro MZ-800 s řadičem I8272, > ale tam se podobný podprogram vůbec nevyskytuje...
Zobrazit citovaný text (1 řádek)
>To s ROMkou Sharpa podle mne nema nic spolecneho...
Taky nemá. Prohrabal jsem sbírku komentovaných výpisů BIOSů pro I8272 pro ZX Spectrum a SHARP MZ-800 (ten tedy přepečlivě) a ani v jednom jsem podprogram zjišťující stav IFF2 nenašel. Jen jsem se zapomněl podívat, z jakého média se ten BIOS bootuje (ROMdisk?).
Zobrazit citovaný text (3 řádky)
>Call 0xFBB0 se tam parkrat vyskytuje, na adresach 0xF8E5, 0xF97C, 0xFA8F a 0xFB0B (od oka). Otazkou je, jestli tahle cast kodu je zavisla na Z80, nebo primo na Sharpu.
Teoreticky by se dala použít i u jiných počítačů, kde přichází operace, kde je nutné zakázat přerušení a pak ho uvést do původního stavu (zakázat, pokud bylo zakázané, povolit, pokud bylo povolené), ale jak píšu, takovou věc jsem v jiném z BIOSů, které mám, nenašel - a to včetně BIOSu pro Sharp s I8272 od Tomáše Krejči..
Zobrazit citovaný text (2 řádky)
>Na spectru taky urcite existuje nejaky klon CP/M, nenajde se tam neco podobneho v BIOSu ?
Nenašel jsem nic takového.
Re: IFF2?
Vaclav Peroutka SHARP MZ-800
Zobrazit citovaný text (9 řádků)
> > >To s ROMkou Sharpa podle mne nema nic spolecneho... > > Taky nemá. > Prohrabal jsem sbírku komentovaných výpisů BIOSů pro I8272 pro ZX Spectrum a > SHARP MZ-800 (ten tedy přepečlivě) a ani v jednom jsem podprogram zjišťující > stav IFF2 nenašel.
A, uz jsem pochopil :-) Nejsem si jisty, jestli je to u i CP/M LEC verze 1.2 nebo 1.3 Jinak to muze mit spojitost s podporou 1,44MB alias HD disket. Ono se to volani hodne vyskytuje u prace s FDC.