ms.dos.209dragisha,
-> #201, mjova-> > U jednom od brojeva racunara sam procitao kako se
-> > softwerski resetuje PC.
->
-> jmp far 0f000:fff0h
Jel' neko probao ovo u DOS prozoru pod Windows? Vrlo nedosljedno od malog
mekog.
--
[Pick, scrape, roll into a ball, and flick.]
ms.dos.210cnenad,
-> #206, dvidovicŁŁŁ Iz dosa, na dva načina. Prvi je da počneš da koristiš 4dos. On
Ima četiri načina. Pored dva koja si naveo, ostaje još NDOS u kome isto kuca
REBOOT a može i preko BE REBOOT.
ms.dos.211milan,
A propos DOS-a 6.2. Postoji Step Up sa DOS-a 6.0 na 6.2
(bio je valjda i ovde na SEZAM-u). Fajlovi na njemu nose datum
30 sept 1993. Međutim fajlovi na instalacionim disketlama DOS-a
6.2 nose datum 27. sept 1993 (nigde ne piše da je beta pa valjda
i nije). No to nije bitno, bitno je da se osnovni fajlovi
(io.sys, msdos.sys i commamd.com) razlikuju!
Zna li neko u čemu je stvar?
Pl poz M
ms.dos.212drakce,
-> #211, milan
│ Postoji Step Up sa DOS-a 6.0 na 6.2 (bio je valjda i ovde na SEZAM-u).
│ Fajlovi na njemu nose datum 30 sept 1993. Međutim fajlovi na instalacionim
│ disketlama DOS-a 6.2 nose datum 27. sept 1993 (nigde ne piše da je beta pa
└────────
Vrlo važno, tri dana gore-dole ;). Instalirao sam taj od 27. septembra i
nisam imao problema (osim onog sa FORMAT /U, al' to je druga priča).
Jedan od mogućih scenariJa bi bio: DOS 6.2 završen 27. septembra i
pušten u promet. Trebalo im tri dana da dovrše upgrade verziju. Fajlovi
se razlikuju u dužini, jer su hteli da upgrade bude što manji, kako bi
se mogao modemom prenositi. Zato su radili "patch"-eve starih fajlova i
postigli funkcionalnu jednakost (šta god to značilo), a nisu marili da
se baš u bajt poklope.
Eto, to mi se javlja. Da li me čujete? :)
ms.dos.213milan,
-> #212, drakce> Eto, to mi se javlja. Da li me čujete? :)
Da!
Pl poz M
P.S. A propos, pade mi na pamet da taj vrač-pogađač tako i
postiže svoj uspeh. Šta god da prethodno lupi on na kraju kaže:
"Da li me čujete?". črtva, kud' će šta će, kaže: "Da!" i tako
ispada da je on u pravu. :))))))
ms.dos.214markom,
-> #210, cnenad■■■ Ima četiri načina. Pored dva koja si naveo, ostaje još NDOS u
■■■ kome isto kuca REBOOT a može i preko BE REBOOT.
Aj' sad može i iz programa reboot.exe, a i iz mase debuggera. U onom dosovom
'debuggeru' se to valjda radi sa g FFFF:0000, ali nisam siguran :))
Marko
ms.dos.215andrejt,
-> #214, markomQUOTE>>'debuggeru' se to valjda radi sa g FFFF:0000, ali nisam siguran :))
Da bese u Racunarima (a to je valjda preuzeto sa SEZAMa ;) ).
(echo g = ffff : 0000 | debug > nul)
(Ne znam dal' je neko spomenuo al' to je isto sto i valjda JMP FFFF0
u bilo kom asmu)
ms.dos.216markom,
-> #215, andrejt■■■ (Ne znam dal' je neko spomenuo al' to je isto sto i valjda
■■■ JMP FFFF0 u bilo kom asmu)
Ajmi napišite program koji će to da radi!! Ja se ubi od pokušavanja, al' neće!
Marko
ms.dos.217mjova,
-> #209, dragisha> -> jmp far 0f000:fff0h
> Jel' neko probao ovo u DOS prozoru pod Windows? Vrlo
> nedosljedno od malog mekog.
lično ne koristim win, ali mislim da nije dovoljno skočiti samo na
datu lokaciju. to je bio samo hint, a zapravo potpun odgovor bi bio
ovakoav:
ms.dos.218markom,
-> #217, mjova■■■ lično ne koristim win, ali mislim da nije dovoljno skočiti
■■■ samo na datu lokaciju. to je bio samo hint, a zapravo potpun
■■■ odgovor bi bio ovakoav:
■■■
■■■
Kakav ?????
Marko
ms.dos.219mjova,
-> #217, mjova> ovakoav:
;))
ovakav:
mov ax, 40h
mov ds, ax
mov ax, 1234h
mov ds:72h, ax
jmp far 0f000h:fff0h
dakle, treba malo džarati. ovako nešto piše u tech ref 4.0:
0:0472 2 1234H means Ctrl-Alt-Del reboot is in progress. BIOS checks
this to avoid doing a "cold boot" with the time-consuming POST
4321H means reset, preserving memory
5678H, 9abcH, and abcdH (are internal PC Convertible codes)
dalje, zar ovakav tag-line na moju poruku? a? ;)
> [Pick, scrape, roll into a ball, and flick.]
ms.dos.220bigbrada,
-> #217, mjova!##! datu lokaciju. to je bio samo hint, a zapravo potpun odgovor
!##! bi bio ovakoav:
Dobar odgovor nema šta ;)
ms.dos.221bearboy,
-> #217, mjova> lično ne koristim win, ali mislim da nije dovoljno skočiti samo
> na datu lokaciju. to je bio samo hint, a zapravo potpun odgovor
> bi bio ovakoav:
>
>
Prilično traljav odgovor, ako smem da primetim ;)
ms.dos.222markom,
-> #219, mjova■■■ mov ax, 40h
■■■ mov ds, ax
■■■ mov ax, 1234h
■■■ mov ds:72h, ax
■■■ jmp far 0f000h:fff0h
----------------------------
Moj program:
■■■ .model small
■■■ .code
■■■ mov ax, 40h
■■■ mov ds, ax
■■■ mov ax, 1234h
■■■ mov ds:72h, ax
■■■ jmp far 0f000h:ffff0h
■■■ end
----------------------------
Evo šta mi reče TASM:
---------------------
■■■ Assembling file: asm.ASM
■■■ **Error** asm.ASM(7) Illegal immediate
■■■ Error messages: 1
■■■ Warning messages: None
■■■ Passes: 1
■■■ Remaining memory: 443k
Aj' mi sad recite gde sam pogrešio ...
Marko
ms.dos.223mivel,
-> #222, markom++ jmp far 0f000h:0fff0h
Dobra zamena:
mov ax,-1
push ax
inc ax
push ax
retf
ms.dos.224mjova,
-> #222, markomda li je u pitanju lenjost ili nešto drugo? danas ljudi očekuju
potpuno sažvakan i trenutno upotrebljiv odgovor - u protivnom
odustaju. ;)
.model tiny
.code
org 100h
reboot proc far
start: mov ax, 40h
mov ds, ax
mov ax, 1234h
mov ds:72h, ax
jmp far ptr rom_init
reboot endp
ROM_SEG segment at 0f000h
org 0fff0h
rom_init label
ends
end start
ms.dos.225kriss,
-> #222, markom˙˙ ■■■ jmp far 0f000h:ffff0h
+++++
˙˙ Aj' mi sad recite gde sam pogrešio ...
Nešto mi je veliki ovaj brojčić za 16 bita. ;) Možda je trebalo nulu
na početak?
ms.dos.226markom,
-> #224, mjova■■■ da li je u pitanju lenjost ili nešto drugo? danas ljudi
■■■ očekuju potpuno sažvakan i trenutno upotrebljiv odgovor - u
■■■ protivnom odustaju. ;)
Definitivno je u pitanju lenjost :)) ali dok ima tako dobrih & vrednih kao ti,
mi lenji nismo u opasnosti :))))
Hvala za primer, nadam se da radi :)
Marko
ms.dos.227mjova,
-> #226, markom> Definitivno je u pitanju lenjost :)) ali dok ima tako
> dobrih & vrednih kao ti, mi lenji nismo u opasnosti :))))
traćiti tuđe povorenje i vreme povlači za sobom izvesne konsekvence.
ms.dos.228dragisha,
-> #219, mjova-> dalje, zar ovakav tag-line na moju poruku? a? ;)
->
-> > [Pick, scrape, roll into a ball, and flick.]
THor, sram da ga je i stid!! :))
Radim isto što i ti, ali Windows se zaledi kad se ovo proba. Moraću da
probam 4Dos reboot u DOS prozoru, da vidim jel' pametniji:).
--
[" If All Fails, READ THE DOCS ! "]
ms.dos.229niklaus,
-> #226, markom(:> Hvala za primer, nadam se da radi :)
Ex, baš si lenj. (: Probaj ga, složi utiske, pa se (eventualno) požali
ili pohvali mjovu uz preporuku programčeta ostalima...
(: Sean :)
ms.dos.230mstanic,
-> #222, markom>> ■■■ jmp far 0f000h:fff0h
^^^^ original
>> ■■■ jmp far 0f000h:ffff0h
^^^^^ jedan f viška
>> ■■■ **Error** asm.ASM(7) Illegal immediate
Za ono što si napisao potrebno je 20 bita, moguće je
samo 16.
>> Aj' mi sad recite gde sam pogrešio ...
Verovatno si prevideo.
ms.dos.231markom,
-> #229, niklaus■■■ Ex, baš si lenj. (: Probaj ga, složi utiske, pa se
■■■ (eventualno) požali ili pohvali mjovu uz preporuku
■■■ programčeta ostalima...
Programče radi :) Mogu da kažem da mi uopšte nešto onakvo nije padalo na pamet
i pored svih pokušaja, a bilo ih je ihaaa.
Na žalost onaj primer je za mene relativno neupotrbljiv jer ne može da se lin-
kuje sa Pascalom :(( Ne može da se linkuje jerbo TP ne podržava skokove u dru-
gi kodni segment :((
Marko
ms.dos.232dcolak,
-> #231, markom│ kuje sa Pascalom :(( Ne može da se linkuje jerbo TP ne podržava skokove u
│ dru- gi kodni segment :((
Da li je neko pomislio o prelasku na Amigu?
Sledge DAMMIR!
ms.dos.233kriss,
-> #231, markom˙˙ Na žalost onaj primer je za mene relativno neupotrbljiv jer ne
˙˙ može da se lin- kuje sa Pascalom :(( Ne može da se linkuje
˙˙ jerbo TP ne podržava skokove u dru-
A jel si probao da ga prvo TASM-uješ, pa da obj ulinkuješ?
ms.dos.234markom,
-> #233, kriss■■■ A jel si probao da ga prvo TASM-uješ, pa da obj ulinkuješ?
Naravno.
Marko
ms.dos.236niklaus,
-> #231, markom(:> Na žalost onaj primer je za mene relativno neupotrbljiv jer ne može da
(:> se lin- kuje sa Pascalom :(( Ne može da se linkuje jerbo TP ne podržava
(:> skokove u dru- gi kodni segment :((
A šta kaže BP.EXE, Target Platform: Protected Mode Application?
(: Sean :)
ms.dos.237markom,
-> #236, niklaus*** A šta kaže BP.EXE, Target Platform: Protected Mode
*** Application?
Nemam BP, koristim TP, pogledaću taĘno pa ću proslediti ...
Marko
ms.dos.238nikac,
-> #230, mstanic>■>> ■■■ jmp far 0f000h:fff0h
>■ žžžž original
>■>> ■■■ jmp far 0f000h:ffff0h
>■ žžžžž jedan f viška
>■>> ■■■ **Error** asm.ASM(7) Illegal immediate
>■
>■ Za ono što si napisao potrebno je 20 bita, moguće je
>■ samo 16.
Da ali isto prijavljuje i za jmp far 0f000h:0ffffh
A ako stavis jmp far ptr 0f000h:0ffffh onda se buni
"Near call or jump to different CS" oli nesto tako...
Za sada radi jedino ono sto je poslao mjova a poneki put prodje i
sledece:
mov ax,0f000h
mov es,ax
jmp es:0ffffh
Zna li neko u cemu je stos? Napominjem da _cesto_ radi ali poneki put ne?!
ms.dos.239ficus,
-> #208, dsisic:) Ne bih da se pravim pametan, ali mi je malo bez veze to
:) linkovanje u clipper.lib, jer bolje je da sve svoje modulcice
U pravu si jednostavno to mi prvo pade na pamet
:) Sa druge strane, nista lakse od ukljucivanja te biblioteke
:) u EXE modul :) ... bla bla truc truc
Slazem se ali eto reko pade mi na pamet ja napisah uostalom moj
prvi prg koj je bio vezivan sa clipperom (asm+cliper) je bio
tako ubacen jednostavno uradis jednom i vise ne razmisljas do
prvog update-a. A da sa neke strane nije prakticno nije.
ms.dos.240goranr,
-> #204, drdjokic// Kako softverski da resetujem racunar iz DOS bat fajla ili iz programa u
// CLIPPERU 5.01
Imaš u Cliptool biblioteci na sezamu...
ÔOPAH
ms.dos.241ficus,
-> #231, markom:) Na zalost onaj primer je za mene relativno neupotrbljiv jer ne moze da se
:) lin- kuje sa Pascalom :(( Ne moze da se linkuje jerbo TP ne podrzava
:) skokove u dru- gi kodni segment :((
trebalo bi da podrzava jer postoji far modifikator koj se pise iza funkcija
cim postoji tako nesto logicno je....
nazalost ja nemam asm tako da nisam uspeo nista a basm(integrisani asm)
ne sljaka bas kako ocu evo saveta:
postoji jedna davno zaboravljena naredba turbo pascala i zove se inline
drugim recima prevedi prg u obicnom asm-u zatim izvuci opcode i ostlo
sto uz to ide i to bi trebalo da radi.
Jos jedan praktican savet predji na c on sasvim lepo radi sto se tice takvih
vezivanja i slicnog.
ms.dos.242ficus,
-> #241, ficusU vezi reseta iz tp-a problem je definitivno resen:
procedure res;
begin
inline($9A/$F0/$FF/$00/$F0);
END;
ovo pisem online ali je procedura testirana u tp 7.0 i radi
ovo je ustvari far jmp na f000:fff0 ali preveden u masinski jezik
trebalo je malo prekopati po knjigama za op-code zato nisam poslo prosli put
ms.dos.243markom,
-> #241, ficus*** Jos jedan praktican savet predji na c on sasvim lepo radi sto
*** se tice takvih vezivanja i slicnog.
Znam da C sve to lepo radi, ali i tu imam problema. Vidi temu:cccc ...
Marko
ms.dos.244ialeksic,
pitanja :
1. ansi.sys drajveri raznih proizvodjaca super VGA kartica
(npr. TRIDENT, REALTEK,...) za rad sa rezolucijom vecom od 80x25
ne podrzavaju kombinaciju CTRL-TAB koja je zgodna u 4dos-u,na primer.
DOS-ov ansi.sys ne podrzava VGA rezime rada iznad 80x25 u karakter modu.
Ima li spasa?
2. Hot-key kombinacja SHIFT-F1 za aktiviranje Norton Guide-a radi normalno
sa superVGA drajverima npr.tansi.sys ali sa standardnim DOS ANSI.SYS
drajverom aktivira se na ekranu tek kad se posle uobicajene SHIFT-F1
kombinacije pritisne jos neka dirka sa tastature !?
ms.dos.245dens,
-> #244, ialeksic>> DOS-ov ansi.sys ne podrzava VGA rezime rada iznad 80x25 u karakter modu.
>> Ima li spasa?
Uzmi NNANSI. Mnogo je brži i naravno ne brlja u "advanced" text modovima.
Ako ga ne nađeš, poslaću ti ga na mail.
ms.dos.246dragisha,
-> #244, ialeksic-> 1. ansi.sys drajveri raznih proizvodjaca super VGA kartica
-> (npr. TRIDENT, REALTEK,...) za rad sa rezolucijom vecom od 80x25
-> ne podrzavaju kombinaciju CTRL-TAB koja je zgodna u 4dos-u,na primer.
-> DOS-ov ansi.sys ne podrzava VGA rezime rada iznad 80x25 u karakter modu.
-> Ima li spasa?
Ja koristim 132*34 (vrapci već pričaju:) na Trident i to BEZ ansi.sys.
Radi i sa ANSI, ali je problem u onome preko 25og reda.
DENS mi je poslao nnansi i on ne brlja preko 25og reda, ali kad uradim
cls kursor se izgubi. Zaključio sam da je to zbog toga što u nestandardnim
modovima cls radi nuliranje video memorije, a u standardnim punjenje
blankovima i odgovarajućim atributom. Ovo se i vidi kad poslije cls (ne
vidi se kursor) kucaš neki znak (i dalje se ne vidi) pa backspace (e sad se
vidi kursor na mjestu gdje je bio znak).
Imam i ANSI.COM i sa njim mi se dešava isto.
Interesantno je da DOS mode komanda priznaje samo DOSov ANSI kad probaš
MODE CON: lines=43.
--
[A dry sense of humor is better than slobbering everywhere]
ms.dos.247mjova,
-> #244, ialeksic> 1. ansi.sys drajveri raznih proizvodjaca super VGA
> kartica
uzmi nansi sa sezama. nisam video bolji ansi veznik.
ms.dos.248dens,
-> #246, dragisha>> DENS mi je poslao nnansi i on ne brlja preko 25og reda, ali kad uradim
>> cls kursor se izgubi. Zaključio sam da je to zbog toga što u nestandardnim
Kako se to izgubi kursor? Kod mene (takođe Trident) radi OK.
ms.dos.249dragisha,
-> #248, dens-> >> DENS mi je poslao nnansi i on ne brlja preko 25og reda, ali kad
-> uradim >> cls kursor se izgubi. Zaključio sam da je to zbog toga što u
-> nestandardnim
-> Kako se to izgubi kursor? Kod mene (takođe Trident) radi OK.
boot. Radi! Sve je ok dok ne dođe ispis do dna ekrana, tj dok ne mrdne
malo gore ili dok ne uradim cls. Onda se vidi na cmd liniji samo dok ne
počnem da kucam (onda nestane). Ponovo se vidi kad uradim BS, na mjestu
gdje sam ubio karakter.
--
[If you can read this, thank your teacher.]
ms.dos.250dens,
-> #247, mjova>> uzmi nansi sa sezama. nisam video bolji ansi veznik.
Poslao sam mu nnansi.sys koji je (navodno) nastao iz pomenutog nansi-ja.
Probaj...
ms.dos.251ialeksic,
-> #245, dens>> Uzmi NNANSI. Mnogo je brzi...
Dobro, ali da bih ga prilagodio svojoj kartici (Trident) treba ponovo
prevesti source. Ja medjutim nisam u posedu TASM/TLINK vec kad koristim
MASM/LINK. Pa da bi se to prevelo treba menjati source, itd. malo je to
"tres complique". Moze li se doci do TASM/TLINK kombinacije?
ms.dos.252dens,
-> #251, ialeksic>> "tres complique". Moze li se doci do TASM/TLINK kombinacije?
Verovatno može ;) Pogledaću...
ms.dos.253ialeksic,
-> #251, ialeksicIpak sam izmenio source i spremio NNANSI drajver sa MASM/LINK kombinacijom.
Saljem ovako izmenjen source ako jos nekom bude zatrebalo.
Za .SYS verziju treba:
MASM nnansi /DTSR=0
LINK nnansi
EXE2BIN nnansi.exe nnansi.sys
a za .COM:
MASM nnansi /DTSR=1
LINK nnansi
EXE2BIN nnansi.exe nnansi.com
nnansi.arjms.dos.254zzivotic,
Izgleda da DOS funkcija FIND FIRST (4Eh) vraća status da fajl postoji i ako
se navede neki od postojećih karakter device drajvera. Recimo FIND
FIRST("con") vraća da je sve ok i da postoji fajl sa tim imenom, a atribut mu
je postavljen na (nedokumentovanu?) vrednost 40h. Jel ovo oduvek ovako bilo
ili je to neki novitet DOS 6.x?
Pozdrav, zz
ms.dos.255todorp,
-> #254, zzivotic> FIRST("con") vraca da je sve ok i da postoji fajl sa tim imenom, a
> atribut mu je postavljen na (nedokumentovanu?) vrednost 40h. Jel ovo
> oduvek ovako bilo ili je to neki novitet DOS 6.x?
E svasta, probao ja na DOS-u 5.0 i na Compaq-ovom 3.31 i opet je 40h (7-mi bit
je setovan). A nigde se po dokumentaciji ne pominje. Velju 7 i 8 bit reserved
for future use. U svakom slucaju trebalo bi da je ovo siguran (?) nacin za
proveru da li je nesto file ili neki device.
Pozdrav od Todora
ms.dos.256dr.grba,
DOS program PRINT radi tako što na kraju štampe svake datoteke
prosledi FORM FEED štampaču.
Ima li neki haker koji bi mogao da nađe način da se ovo isključi?
ms.dos.257janko,
-> #256, dr.grba> Ima li neki haker koji bi mogao da nađe način da se ovo
> isključi?
Ima, naravno. :)) Malo disasembliranja i krpi se stvar, ali, ko će da to
radi za svaku bogovetnu verziju DOS-a?
Lakše je jednostavno ne generisati POSLEDNJI FF u datoteci koja će se
štampati. Onda PRINT-ov radi što treba.
Drugi štos je -- slanje dva zaredom FF-a štampaču može da se izbegne
pisanjem rezidentnog programčića, koji ne bi puštao drugi od dva.
Meni nikad nije zasmetalo što PRINT to radi, što radi -- uvek mi je BAŠ
TO i trebalo.
ms.dos.258markom,
-> #256, dr.grba*** Ima li neki haker koji bi mogao da nađe način da se ovo isključi?
Trebalo bi da ima neki svič, ili možda nema ?
ms.dos.259mbole,
-> #257, janko
Kad ste već kod print-a, jel moguće nekako ga naterati da štampa binarni
file, tj da se ne zaustavi kad naiđe na Ctrl-Z.
ms.dos.260dr.grba,
-> #258, markom>> *** Ima li neki haker koji bi mogao da nađe način da se ovo
>> isključi?
>>
>> Trebalo bi da ima neki svič, ili možda nema ?
Nema.
ms.dos.261mirche,
-> #259, mbole> file, tj da se ne zaustavi kad naiđe na Ctrl-Z.
Za print ne verujem al' probaj: COPY xx.yyy /B lpt1
ms.dos.262mbole,
-> #261, mirche> Za print ne verujem al' probaj: COPY xx.yyy /B lpt1
Da samo ovo ne štampa u pozadini dok ja radim nešto drugo.
ms.dos.263vega,
Imam 286 sa 640 K RAM-a (jer mi je riknuo neki cip pa je otisla EXTENDED
memorija). Kako da iz nekog svog programa pristupim neiskoriscenoj memoriji u
delu od A0000 do FFFFF, tj. onoj memoriji koju MFT prijavljuje kao unused?
Pozdrav,
>>> VEGA <<<
ms.dos.264markom,
-> #262, mbole*** Da samo ovo ne štampa u pozadini dok ja radim nešto drugo.
Pa DOS nije ni predviđen za MTasking ... :)
ms.dos.265cnenad,
-> #264, markomŁŁŁ *** Da samo ovo ne štampa u pozadini dok ja radim nešto drugo.
ŁŁŁ
ŁŁŁ Pa DOS nije ni predviđen za MTasking ... :)
:)))))
ms.dos.266mmitrovic,
-> #178, niklausčŠĐŠč Neću se smiriti dok ne vidim primerčić (ili mi neko ne približi mat-
čŠĐŠč eriju, tako da dalje mogu sam) koji radi bolje nego bilo koja druga
čŠĐŠč metoda... Tek toliko da se zna. (;
Pošto ste toliko zainteresovani za DMA ja sam malo kopao po svojoj
dokum. i našao sam isečak (Mark, Cut, Paste) iz jednog starog e-magazina
za asm programere. Nije baš sve crno belo al' baca novo svetlo na stvar.
BTW, ako ste zainteresovani za taj časopis imam brojeve 2,3,5,12/89, pa
mi sendnite mail. Ako bude bilo zainteresovanih okačiću ih u asm.
Daklem, sledi "čaršavčić":
DMA Transfers for FAST Memory Moves
If you ever have the need for super fast moves of blocks of memory and you
can put up with a lot of restrictions in order to gain the speed there is a
method in the PC environment to move bytes at the rate of one every 3 clock
cycles. Compare that to the clocks for a rep movsb and then say that isn't
fast. This isn't for every programmer and it certainly isn't for every time
you need to move a few bytes.
The DMA chip is a four channel device. Channel 0 is reserved for
refresh of memory that requires at least 256 consecutive bytes be read some-
where in memory at intervals less than about 4ms. The other three channels
are available for such things as transferring information to and from the
disk drives or the ports. Interesting trivia so far, but not very useful in
moving memory around. It gets worse. The 8259 DMA doesn't know anything about
segments. It only knows a 64k universe. This is where the Page registers come
in. The page registers decide which page (on 64k boundaries) the 8259 will
look at for any operation. There are not, as you might guess, 4 page
registers,but only 2 plus a default. If it is not channel 1 or 2 then it uses
the default register programmed as channel 3.
A careful reading of the data sheet of the 8259 discloses that it is
capable of doing a memory to memory transfer but only between channels 0 and
1. That is why this method is a little tricky to use. In order to set up your
own parameters you have to disable the timer from asking for a DMA from chan-
nel 0 every x milliseconds and reconfigure the 8259 and assume the respon-
sibility for doing the memory refresh. It actually sounds worse than it is.
The configuring and re configuring of the 8259 doesn't take all that long, so
the time is made up after only moving a few tens of bytes, and if you move at
least 256 CONSECUTIVE bytes the memory refresh requirement is met for another
2 or 3 milliseconds. The page registers are taken care of by setting channels
1 and 3 to the same value.
Given below is an example of a program I wrote just to test the
idea. A lot of the setup is too complex to explain in this short article, but
if you are interested in checking it all out you will need a data sheet on
the 8259. This worked nicely on my machine and should on most compatibles
just the way it is. With the not-so-compatible it may very well not. I hope
this listing is well enough commented so you can figure it out and make use of
it sometime.
DMA SOURCE
PAGE 60,132
TITLE DMA MEMORY TO MEMORY
DMA EQU 0
STACK SEGMENT PUBLIC 'STACK'
DB 32 DUP('STACK')
STACK ENDS
DATA SEGMENT PUBLIC 'DATA'
SOURCE DW 08000H
TARGET DW 09000H
NUMBER DW 800H
INCDEC DB 0
PAGER DB 0BH ;PAGE (O TO F)
FILL DB 0 ;2 IF A FILL OP
DATA ENDS
ASSUME CS:CODE,DS:DATA,ES:DATA
CODE SEGMENT PUBLIC 'CODE'
START:
MOV AX,DATA
MOV DS,AX
MOV AX,0B800H
MOV ES,AX
PAGE:
MOV AL,PAGER ;PAGE TO OPERATE IN
OUT 83H,AL
UNDMA:
OUT 0DH,AL ;MASTER RESET OF DMA
MOV DX,03D8H
MOV AL,1
OUT DX,AL
MOV AX,SOURCE ;WHERE IS IT COMING FROM
OUT 0H,AL
MOV AL,AH
OUT 0H,AL
MOV AX,TARGET ;WHERE TO PUT IT
OUT 2H,AL
MOV AL,AH
OUT 2H,AL
MOV AX,NUMBER ;HOW MANY
OUT 3H,AL
MOV AL,AH
OUT 3H,AL
MOV AL,009H ;ENABLE M TO M,COMPRESSED
OR AL,FILL ;WILL BE 2 IF FILL OP
OUT 8H,AL
MOV AL,088H ;BLOCK MODE, INC, READ
OR AL,INCDEC ;WILL BE 20H IF DEC
OUT 0BH,AL
MOV AL,85H ;BLOCK MODE, INC, WRITE
OR AL,INCDEC ;WILL BE 20H IF DEC
OUT 0BH,AL
MOV AL,4 ;THIS IS THE REQUEST
OUT 9,AL ;DO IT
MOV AL,9
OUT DX,AL
RESET: OUT 0DH,AL ;THIS IS A MASTER RESET
OUT 0CH,AL ;RESET F/L F/F
MOV AL,01
OUT 0,AL
OUT 0,AL
REINIT:
MOV AL,0
OUT 83H,AL ;MOVES REFRESH TO BASE PAGE
MOV AL,0FFH
OUT 1,AL
PUSH AX
OUT 1,AL
OUT 0BH,AL
INC AL ;MODE CHAN3
OUT 0BH,AL
PUSH AX
POP AX
POP AX
POP AX
MOV AH,4CH
INT 21H
CODE ENDS
END START
ms.dos.267kriss,
Da li neko zna gde se nalazi (sad ću da lupim) bit koji kontroliše
blink efekat na ekranu? Izgleda da mi je to malo čudo (re)setovano,
tako da tekst koji treba da blinkuje ne blinkuje, nego se vidi
inverzno.
P.S. Zaboravih, probao sam INT 10h, funkcija 10h, AL=3 (tad bi trebao
da se pojavi blink, ali pored piše i EGA, tako da je na VGA ostalo bez
efekta :( ).
ms.dos.268peca.st,
-> #267, kriss!-> Da li neko zna gde se nalazi (sad ću da lupim) bit koji kontroliše
!-> blink efekat na ekranu? Izgleda da mi je to malo čudo
!-> (re)setovano, tako da tekst koji treba da blinkuje ne blinkuje,
!-> nego se vidi inverzno.
Pa za svaki znak na ekranu imaš dva bajta. Jedan je atribut
a drugi je ascii kod. Prva četiri bita atributa su boja znaka,
sledeća tri boja pozadine (znači imaš 8 boja za pozadinu, a ne 16)
i zadnji je onaj koji tebi treba - blink. Postoji način da se
ovaj bit ukine pa da onda imaš svih 16 boja za pozadinu.
Video memorija za tekst mod počinje od b800:0000. Imaš 80*25*2 = 4000
bajtova, prvo ide ascii kod pa onda atribut.
Ovo je iz glave, nadam se da nisam nešto pobrkao. :)
Peđa.
ms.dos.269kriss,
-> #268, peca.st˙˙ Pa za svaki znak na ekranu imaš dva bajta. Jedan je atribut
˙˙ a drugi je ascii kod. Prva četiri bita atributa su boja znaka,
Jest.
˙˙ sledeća tri boja pozadine (znači imaš 8 boja za pozadinu, a ne
˙˙ 16) i zadnji je onaj koji tebi treba - blink. Postoji način da
˙˙ se ovaj bit ukine pa da onda imaš svih 16 boja za pozadinu.
Au. Znači moram da protrčim kroz celu video-memoriju i da setujem svaki
bit posebno. :( Mada, ipak mislim da neću ništa da uradim. Od kako sam
instalirao 4dos, imam dotičnu pojavu. :(
˙˙ Video memorija za tekst mod počinje od b800:0000. Imaš 80*25*2
˙˙ = 4000 bajtova, prvo ide ascii kod pa onda atribut.
OK sad će da napišem nešto što preleće preko i setuje sve živo, pa ću
da javim da li radi. ;)
˙˙ Ovo je iz glave, nadam se da nisam nešto pobrkao. :)
Jao ako jesi :))))
P.S. Probao - ne radi. Evo ga source, zanima me da li je greška tu ili
kod nekog drugog. :((
.model tiny
.code
org 0100h
start:
xor bx,bx
xor si,si
mov ax,0b800h
mov ds,ax
mov cx,2000
lp: inc si ; znači preskačem ascii, setujem
; zadnji bit atributa.
or byte ptr ds:[bx + si],080h
inc si ;
loop lp
mov ah,04ch
int 21h
end start
ms.dos.270dzakic,
-> #269, kriss> Au. Znači moram da protrčim kroz celu video-memoriju i da setujem
> svaki bit posebno. :( Mada, ipak mislim da neću ništa da uradim.
> Od kako sam instalirao 4dos, imam dotičnu pojavu. :(
Tek sad pročitah poruku... Ono što tebi treba je "BrightBG = No"
u 4dos.ini-ju. Mislim da je to default, ali ti je neko za odgovor
podmetnuo Yes :)