Zdar Vasku,
asi mas pravdu, nespravne jsem napsal hlavne to, ze mam adresy a porty napojene stejne - ve skutecnosti se opravdu jedna jen a pouze o rutinu vyrizujici cteni v MZ-700 modu z adres 0xE000-0xE010. Porty pro MZ-800 mod obsluhuji a rozeskakuji jinak, v portovem MMU..
Podle citovaneho manualu (strana 9) je opravdu 0xE008 jedinecna jen a pouze pro MZ-700 mod a je na ni: TEMP, HBLK input; and 8253 G0 ON/OFF output.
Pro uplnost uvadim i zapisovou rutinu pro 0xE000-0xE010:
public int setByte( int addr, int value ) {
if( ( addr & 0xfffff000 ) == portBase && ( addr & 0xfff ) < 9 ) {
// we work only on first 16 bytes
addr &= 0xf;
// call the 8255 handler
if( addr < 4 )
return mz8255.setByte( addr, value );
// call the 8253 handler
if( addr < 8 )
return mz8253.setByte( addr, value );
// set the gate signal of counter 0
if( addr == 8 ) {
mz8253.setSignalGateCounter0( signalGateCounter0Mode700 = ( value & 1 ) == 1 );
return 0;
}
}
return 0;
}
Navratovych hodnot si nevsimejte, mohou vracet spozdeni pro procesor.
Zatim,
Roman
asi mas pravdu, nespravne jsem napsal hlavne to, ze mam adresy a porty napojene stejne - ve skutecnosti se opravdu jedna jen a pouze o rutinu vyrizujici cteni v MZ-700 modu z adres 0xE000-0xE010. Porty pro MZ-800 mod obsluhuji a rozeskakuji jinak, v portovem MMU..
Podle citovaneho manualu (strana 9) je opravdu 0xE008 jedinecna jen a pouze pro MZ-700 mod a je na ni: TEMP, HBLK input; and 8253 G0 ON/OFF output.
Pro uplnost uvadim i zapisovou rutinu pro 0xE000-0xE010:
public int setByte( int addr, int value ) {
if( ( addr & 0xfffff000 ) == portBase && ( addr & 0xfff ) < 9 ) {
// we work only on first 16 bytes
addr &= 0xf;
// call the 8255 handler
if( addr < 4 )
return mz8255.setByte( addr, value );
// call the 8253 handler
if( addr < 8 )
return mz8253.setByte( addr, value );
// set the gate signal of counter 0
if( addr == 8 ) {
mz8253.setSignalGateCounter0( signalGateCounter0Mode700 = ( value & 1 ) == 1 );
return 0;
}
}
return 0;
}
Navratovych hodnot si nevsimejte, mohou vracet spozdeni pro procesor.
Zatim,
Roman
2009/1/3 Vaclav Peroutka (sharpemupandora.cz) <vaclavpe[doména skryta]>
Ahoj Romane,
obavam se, ze 0xE008 neni to same jako 0xD8. Mapovani na porty, rekl bych, plati jen pro E000-E007. Na portu 0xD8 je povelovy registr FDC. Mozna v tom bude v MCE zakopana sobaka.
Marku, koukni do Service Manualu - www.scav.ic.cz/upload/sm800.pdf - tam k tomu snad najdes vice.
Vasek
> ------------ Původní zpráva ------------
> Od: Roman Dolejsi (sharpemupandora.cz)
Ahoj Romane,
obavam se, ze 0xE008 neni to same jako 0xD8. Mapovani na porty, rekl bych, plati jen pro E000-E007. Na portu 0xD8 je povelovy registr FDC. Mozna v tom bude v MCE zakopana sobaka.
Marku, koukni do Service Manualu - www.scav.ic.cz/upload/sm800.pdf - tam k tomu snad najdes vice.
Vasek
> ------------ Původní zpráva ------------
> Od: Roman Dolejsi (sharpemupandora.cz)
>
> Jak vidis, port 0xE008 (0xD8) mam napojeny na HSync, ale v realu bych na
> to asi moc nesazel..
---> Jak vidis, port 0xE008 (0xD8) mam napojeny na HSync, ale v realu bych na
> to asi moc nesazel..