Neví prosím někdo jakým způsobem MS-DOS přebírá při svém spuštění aktuální čas z hodin reálného času? BIOS poskytuje služby hodin na přerušení int 1Ah. DOS při startu zavolá funkce Čti čas z RTC a Čti datum z RTC, datum převezme, ale na čas se mi vykašle a nastaví ho na 12:00. Přitom BIOS ten časový údaj vrací ve správném formátu, je to porovnáno se standardním PC, ale DOS ten údaj ignoruje. Dalo by se to vyřešit krátkou utilitkou, která by přečetla čas z RTC a zavolala službu DOSu nastav čas a spouštět ji z autoexecu, ale mě by zajímalo jak to udělat bez ní. Nějak to musí jít, když na standardním PC to jde. Předem díky za přínosné rady a nápady.
Jak MS-DOS přebírá čas z RTC?
Moderátor: Moderátoři
Jak MS-DOS přebírá čas z RTC?
Neví prosím někdo jakým způsobem MS-DOS přebírá při svém spuštění aktuální čas z hodin reálného času? BIOS poskytuje služby hodin na přerušení int 1Ah. DOS při startu zavolá funkce Čti čas z RTC a Čti datum z RTC, datum převezme, ale na čas se mi vykašle a nastaví ho na 12:00. Přitom BIOS ten časový údaj vrací ve správném formátu, je to porovnáno se standardním PC, ale DOS ten údaj ignoruje. Dalo by se to vyřešit krátkou utilitkou, která by přečetla čas z RTC a zavolala službu DOSu nastav čas a spouštět ji z autoexecu, ale mě by zajímalo jak to udělat bez ní. Nějak to musí jít, když na standardním PC to jde. Předem díky za přínosné rady a nápady.
Kód: Vybrat vše
mov al, adresa
out 70h, al
jmp $+2 ;prostě nějaké zpoždění
in al, 71h0 - current second for real-time clock
1 - alarm second
2 - current minute
3 - alarm minute
4 - current hour
5 - alarm hour
6 - current day of week (1=Sunday)
7 - current date of month
8 - current month
9 - current year (final two digits, e.g. 87)
10 - 13 - nějaké další registry hodin, status, atd.
Mám tu nějaký popis (thelp), kdybys to chtěla.
piitr píše:Chápu. Právě mám obavu, že by to klidně mohl číst natvrdo přes ty porty 70h. Co mám zkušenost, tak pro čtení sektorů taky asi nepoužíval int 13h, ale dělal si to po svým. Respektive mám dojem, že přímo nahradil vektor int 13h. Zkrátka, vůbec by mě nepřekvapilo, kdyby si to dělal sám přes ty porty. Proč teda ten datum bere přes službu, nevím, ale i to je možné, tenkrát se s tím nikdo moc nepáral.
Nene, to se pleteš, kdyby DOS na něco šahal přímo, tak mi tu nepoběží, mám počítač hardwarově nekompatibilní s PC, ale BIOS jsem napsala tak, aby se na venek co se týče služeb tvářil jako v PC a DOS na tom normálně běží. Jako disky mám DataFlash a SD kartu a DOSu je to fuk, leze na to přes int 13h a nepozná, že to nejsou HDD. Jen s tím časem mi to hapruje, ale já na to přijdu a pak uvidí
- Přílohy
-
rachotina188.jpg- (113.8 KiB) Staženo 206 x
piitr píše:Každopádně, pokud máš kompatibilitu jen na úrovni služeb, budeš mít problémy. Třeba klávesnici a časovač si obcházel snad každý program.
Každý ne, co je horší, že většina programů zapisuje přímo do videopaměti, takové mi tu samozřejmě nefungujou. Ale co, já si jen tak hraju, hlavně že na tom běží Turbo Assembler a už mám napsaný textový editor, co víc si přát
Maskot: Jestli myslíš command line příkaz time, tak právě ten vrací těch 12:00, ale vrací to i volání služby DOSu přes int 21h, je to stejná funkce.
Maskot píše:Pak asi neni Bios v pameti tam,kde ho Dos ceka,asi by to chtelo to zrcadleni ci jak se tomu rikalo udelat trochu jinak.
BIOS je tam kde v PC a poskytuje služby jako v PC. Proč teda funguje datum a nefunguje čas, jsou to dvě služby na jednom přerušení BIOSu.
A navíc, když čas pomocí příkazu time nastavím, tak se správně nastaví i v RTC, DOS normálně zavolá Int 1Ah, Fn 3 "Nastav RTC čas".