asembler.1ppekovic,
U ovoj temi pitajte, prokomentarišite, pomozite drugome da reši probleme!!!
i sve ostalo što ima veze sa assemblerom, naravno za INTEL-ovu porodicu 80x86!
Paya
asembler.2dzakic,
Nije BAŠ vezano za asembler, al' ajde...
Nedavno sam imao prilike da pogledam gbiočićev program za
YU fontove na VGA. S obzirom da sam imao sličnih problema sa
YuHerc-om, mislim da je ono što stvara probleme poziv INT-a 10h,
funkcija 0: set video mode. Tada BIOS resetuje kartu i,
normalno, poništi definicije slova. Isto se dešavalo i meni,
herkules se vraćao u tekst mod, i ništa od grafike.
Predlažem Goranu da, pored interapta tastature, preuzme i
desetku, i pri svakom pozivu proveri da li je u AH registru 0.
Ako jeste, neka se nakon izvršenja originalnog programa iz
BIOS-a, ponovo izvrši definisanje fonta. Nešto kao:
newvideo:
or ah,ah
jnz real_int10
call dword:cs:[oldvideo]
call set_font
iret
real_int10:
jmp dword:cs:[oldvideolo]
Pozdrav,
Dragan
asembler.3gbiocic,
-> #2, dzakic> Predlažem Goranu da, pored interapta tastature, preuzme i
> desetku, i pri svakom pozivu proveri da li je u AH registru 0.
> Ako jeste, neka se nakon izvršenja originalnog programa iz
> BIOS-a, ponovo izvrši definisanje fonta. Nešto kao:
Lupus in fabula Zak. Ti mi izgleda čitaš misli, pohvalno za nekog
kome je glava u herculesu :)).
Upravo sam proteklog vikenda dovršio verziju 1.2 programa foggys
koja uključuje tvoj predlog. Assemblerska izvedba je malo opširnija
od tvog predloga, jer je bilo potrebno obezbediti da se ponovno
aktiviranje YU slova vrši samo u text modu.
FOGGY versus TELEMATE : score K.O. ???
Novu verziju šaljem uz ovu poruku. U njoj ima i drugih poboljšanja.
Bulajo, predlažem da nova verzija zameni staru uz isti opis.
BTW: Ko na herculesu fontove sadi, video mu se o glavu obija :)).
Pozdrav, Goran B
foggys.zipasembler.4dzakic,
-> #3, gbiocic>> Assemblerska izvedba je malo opširnija od tvog predloga,
>> jer je bilo potrebno obezbediti da se ponovno aktiviranje
>> YU slova vrši samo u text modu.
Naravno, smetnuo sam s'uma da VGA i grafiku aktivira pozivom
BIOS-a. A hercules jok, svaki program za sebe brlja po video
kontroleru. Koji sh*t!
zak
asembler.5bulaja,
-> #3, gbiocic│Novu verziju saljem uz ovu poruku. U njoj ima i drugih poboljsanja.
│Bulajo, predlazem da nova verzija zameni staru uz isti opis.
└───
Done, nova verzija je u \ibmpc\yu direktroijumu. Thanks na prilogu.
Pozdrav,
Bulaja
asembler.6max.headroom,
Ehey, koji mi (po mogucstvu Makro) Asembler predlazete? Ja sam do skoro radio
samo sa C-ovim little-shitovima, kao i sa raznoraznim hand-made (but bad)
asemblercicima. Ne znam gde mi je MASM. Help!
asembler.7bulaja,
-> #6, max.headroomPogledaj A86 asembler iz \ibmpc\program direktorijuma
(datoteka a86v322.zip, 170K).
asembler.8radunovic,
Verujem da se svima desilo da se neki program blokira i da ga je
nemoguce prekinuti. Cak ni sa Ctrl-Break. Jedini nacin bio je reset
kompjutera.Razlog je to da je program zapao u neku petlju u kojoj
ne vrsi DOS interapte, pa je stoga nemoguce primiti Ctrl-Break poziv.
Zato prilazem jedan koristan utility program. On preuzima INT 9H
i reaguje na Ctrl-Break ili (jos bolje) Ctrl-Alt-4 sa ne-numericke
tastature. Radi i sa takvim programima kao sto su npr TPASCAL Uostalom
prilazem i listing programa kao i izvrsnu verziju pa probajte.
Program je preuzet sa Bitnet-a sa CCUC @ UMCVMB i tamo se
moze pokupiti jos gomila SORCE-ova za sve i svasta. Ako ima zaintere-
sovanih mogu poslati i spisah svih fajlova.
A sada evo programa:
;Resident program to enable cntl-break even if no DOS call is made
;This is done by doing a dummy DOS call when break key is let up
;THIS WON'T WORK WITHOUT DOING A break on STATEMENT IN DOS
;If cntl-break fails you may try CNTL-ALT-4 (the 4 on the top row)
;which is somewhat more powerful. If you break out of BASIC this way
;the NEXT time BASIC is run, it will hang, requiring a reboot
;Other programs (games?) may or may not respond. If they do respond,
;they may hang up DOS.
cseg segment para public 'code'
org 100h
BREAKL proc far
assume cs:cseg,ds:cseg
jmp install ;this installation code used only once
oldint9 dd 0 ;storage for old int 9 vector
int9loc equ 9h*4 ;location of int 9
kbflag equ 417h ;keyboard "held down" status address
ctrl equ 04 ;bit in kbflag for cntl
alt equ 08 ;bit in kbflag for alt
brkup equ 0c6h ;scan code for release of scroll lock
cntl4 equ 05h ;scan code for 4
newint9: ;comes here from the hardware int 9
sti ;restart interrupt
push es ;save registers
push di
push ax
push cx
push dx
pushf
mov ax,0 ;get cntl and alt status into ah
mov es,ax
mov di,kbflag
mov ah,es:[di]
test ah,ctrl ;test for cntl held down
jz return ;if cntl is up, go to previous handler code
in al,60h ;get scan code into al
cmp al,brkup ;if not release of scroll lock or...
je doit
cmp al,cntl4 ;4 key, go to previous code
jne return
test ah,alt ;if alt not down with cntl-4
jz return ;go to previous code
doit:
mov cl,al ;put a pulse in interrupt port
in al,61h ;for some obscure reason
mov ah,al ;copied form BIOS listing
or al,80h
out 61h,al
mov al,ah
out 61h,al
cli ;stop interrupt
mov al,20h ;clear keyboard
out 20h,al
sti ;restart interrupts
cmp cl,cntl4 ;test for cntl-alt-4
je fun4c ;if it is cntl-alt-4 go to code for that
mov ah,19h ;DOS func call for read default disk. This
int 21h ;is a dummy call to make DOS look for break
popf ;restore registers in case DOS break
pop dx ;didn't work
pop cx
pop ax
pop di
pop es
iret ;this may never be used
fun4c:
mov al,01h ;error code for cntl-break
mov ah,4ch ;DOS func call to terminate program
int 21h
iret
return:
popf ;this code simply passes control to the
pop dx ;keyboard handler present before this
pop cx ;resident program was loaded
pop ax
pop di
pop es
jmp cs:[oldint9] ;this jump doesn't change stack
install:
mov ax,0 ;get old int 9 vector into
mov es,ax
mov di,int9loc
mov ax,es:[di] ;ax and bx
mov bx,es:[di+2]
mov si,offset oldint9 ;then put them into
mov [si],ax ;location "oldint9" in this program
mov [si+2],bx
mov ax,0
mov es,ax
mov bx,ds
cli ;stop inteppupts
mov di,int9loc ;put pointer to this program into
mov ax,offset newint9 ;int 9 vector
mov es:[di],ax
mov es:[di+2],bx
sti ;restore interrupts
mov dx,offset install ;don't keep the install code
int 27h ;terminate and stay resident
BREAKL endp
cseg ends
end BREAKL
Toliko od mene.
Pozdrav Boki
breakl.comasembler.9mjova,
-> #8, radunovic> Program je preuzet sa Bitnet-a sa CCUC @ UMCVMB i tamo se
> moze pokupiti jos gomila SORCE-ova za sve i svasta. Ako
što ne pošalješ ceo paket?
SY
asembler.10ppekovic,
-> #8, radunovic>> Verujem da se svima desilo da se neki program blokira i da ga je
>> nemoguce prekinuti. Cak ni sa Ctrl-Break. Jedini nacin bio je reset
>> kompjutera.Razlog je to da je program zapao u neku petlju u kojoj
>> ne vrsi DOS interapte, pa je stoga nemoguce primiti Ctrl-Break poziv.
Ajde još jednom (1000 put) da pomenem CTRLALT program koji rešava
i ovakve situacije. Kombinacijom tastera CTRL-ALT-F9 je moguće izaći
iz velikog broja blokiranja.
Paya
asembler.11mdjuric,
Radim na jednom programu čija je neverovatna želja da
postane rezidentan, konačno uslišena, ali avaj! Ne mogu da ga se
oslobodim. Zamenim lepo interapt, on se instalira i sve prođe kako
treba. Onda pozovem interapt sa opcijom za deinstaliranje, on je
prihvati, vrati INT na staru vrednost, radosno bipne da je sve OK,
ali
ne ode iz memorije, niti oslobodi blok u kome je rezidirao.
Ako je neko radio u Asembleru 8086 za MS-DOS verzija 3.0 i zna
kako da se ratosiljam neželjenog koda, nek prosvijedi informaciju.
Zahvalnost moja, biti će neizmjerna a i korisnika PD soft parčeta na
kome radim.
Mladen
asembler.12ppekovic,
-> #11, mdjuric>> Onda pozovem interapt sa opcijom za deinstaliranje, on je
>> prihvati, vrati INT na staru vrednost, radosno bipne da je sve OK,
>> ali
>> ne ode iz memorije, niti oslobodi blok u kome je rezidirao.
Ostavio sam u ms.dos temi source-ove mar, release, ...
pa vidi kako oni to rade i primeni u svojim programima.
Paya
asembler.13prvul,
Ima li neko podatak o tome kako da 286 vratim iz zaštićenog u realni režim?
M.
P.S. Znam da postoji bolje resenje od reseta procesora...
asembler.14dejanr,
-> #13, prvul>> P.S. Znam da postoji bolje resenje od reseta procesora...
Koliko sam razumeo, stvarno ga resetuju. Jedino ako hoćeš da probaš
sa onom LOADALL instrukcijom.Ako nešto uspe, javi!
asembler.15radunovic,
Kako mogu da pristupim grafickoj kartici (ne preko BIOS-a). Imam SVGA i ne mogu
da idem preko RAMa jer je suvise velika (512k). Kako bi islo preko CRT
kontrolera i koliko brze od BIOS-a.
Boki
asembler.16prvul,
-> #14, dejanr>> Koliko sam razumeo, stvarno ga restuju. Jedino ako hoćeš da probaš
>> sa onom LOADALL instrukcijom...
Možda... ali prvo ću da se raspitam... čini mi se da sam pre
oko godinu dana čuo da postoji neki gadan, ali sasvim "legalan" način...
tada mi nije trebalo, pa sam zaboravio... zato sam sada i pitao... ako
nađem nešto bolje, javiću.
M.
asembler.17dzakic,
Imam TSR program (pogađate koji :), dodao sam opciju uninstall.
Vratim sve vektore na originalnu vrednost, oslobodim memoriju
(free allocated memory) koju je program zauzimao ali ne znam
kako da proverim ima li drugih programa 'iznad', jer u pomenutoj
situaciji bude belaja. Any ideas?
dz
asembler.18ppekovic,
-> #17, dzakic>> kako da proverim ima li drugih programa 'iznad', jer u pomenutoj
>> situaciji bude belaja. Any ideas?
Pogledaj source-ove MARK i RELEASE programa, verovatno ćeš tamo
naći što ti treba. Arhiva se nalazi uz jednu od poruka u ovoj conf.
Paya
asembler.19prvul,
-> #17, dzakic>>Imam TSR program (pogađate koji :), dodao sam opciju uninstall.
>>Vratim sve vektore na originalnu vrednost, oslobodim memoriju
>>(free allocated memory) koju je program zauzimao ali ne znam
>>kako da proverim ima li drugih programa 'iznad', jer u pomenutoj
>>situaciji bude belaja. Any ideas?
Misliš ako se neki program u međuvremenu nakačio na vektore na koje i ti?
Tu nema jednostavnog rešenja. Moraš pri deinstalaciji da proveriš da li
je int vektor jednak onome koji si ti stavio.. ako nije, znači da ga
je neko u međuvremenu presreo... većina TSR programa u takvim situacijama
jednostavno neće da se deinstalira, ili u svoju int rutinu ubace odmah
na počeku skok na stari hendler (onaj koji su oni presreli)...
asembler.20gbiocic,
-> #17, dzakic> Imam TSR program (pogađate koji :), dodao sam opciju uninstall.
> ...... Any ideas?
Predlažem ti da isprobaš ovakvu tehniku. Na samom početku staviš:
oldint dw ?,?
newint: cmp status, DEINSTALLED
jne newintgo
jmp dword ptr: cs:oldint
variables: .
.
.
newintgo: ...
Prilikom deinstaliranja postaviš status=DEINSTALLED i oslobodiš
memoriju od labele variables. Istina, malecki deo koda ostaje u
memoriji ali svi problemi u vezi provere i prosleđivanja int-ova
otpadaju. I ne boli glava od mogućih hangova.
Ovo je varijanta koju sam nameravao da isprobam sa jednim TSR-om
(pogađaš kojim?). Ako se ti odlučiš da probaš, javi da li radi
kako valja. Pa da se ja ogrebem :))
Pozdrav gb
asembler.21prvul,
-> #20, gbiocic Ipak neka proveri da li se niko nije nakacio posle njega...
pa ako nije, neka se kompletno deinstalira... ovako se fragmentira memorija
Prvul.
asembler.22dzakic,
-> #20, gbiocic>> Ovo je varijanta koju sam nameravao da isprobam sa jednim TSR-om
>> (pogađaš kojim?). Ako se ti odlučiš da probaš, javi da li radi
>> kako valja. Pa da se ja ogrebem :))
Ma ja sam hteo samo da dodam opciju koja bi izbacila moj
program ako je na vrhu, u suprotnom da napiše "Other programs
above". Ionako bi se napravile rupe po memoriji i ne verujem
da to bilo koji program radi.
U stvari, dobih ideju da mogu da proverim da li između
rezidentnog dela i dela koji je upravo učitan postoji
alociran blok tako što ću da pogledam podatke u MCB-u ispred
rezidentnog dela. Pa ako je njegova dužina "taman" do ovog
drugog, znači da je on na vrhu. Javiću da li ovo radi.
Uostalom, ne verujem da je moguće osloboditi memoriju "odavde
dovde" već samo one delove koji su alocirani funkcijom 48h.
Dakle, samo ceo program.
Pozdrav, dz
asembler.24dzakic,
-> #22, dzakicEUREKA! :)
Da, ovaj metod radi (bar kolko sam stigao da ga istestiram na
par karakterističnih slučajeva). Evo još jednom metode:
┌────────────────────┐
│Memory Control Block│ 1: segment PSP-a vlasnika, 3:dužina MCB-a
└────────────────────┘
..
.. rezidentni deo
..
(eventualno nešto između što mora imati svoj MCB)
┌────────────────────┐
│Memory Control Block│
└────────────────────┘
..
.. deo koji se izvršava
..
Dakle, umanjim segment rezidentnog dela za jedan, uzmem sa
ofseta 3 njegovu dužinu, uvećam je za jedan - dobijem segment
sledećeg MCB-a. Sada sa tog segmenta uzmem vrednost sa ofseta 1
i uporedim sa CS-om. Ako su isti, nema drugih programa između.
Gorane, nisam stavio copyright, slobodno iskoristi ideju :)
Pozdrav, dz
asembler.25gbiocic,
-> #22, dzakic> Uostalom, ne verujem da je moguće osloboditi memoriju "odavde
> dovde" već samo one delove koji su alocirani funkcijom 48h.
> Dakle, samo ceo program.
Moguće je, istina ne baš "odavde dovde" već "odavde do kraja
mem.bloka". Funkcija 4Ah (modify allocated memory block).
Inače, kad bolje razmisliš nije baš preporučljivo korisniku
dozvoliti da tek tako izbacuje tvoje čedo iz memorije.
Postavi mu bar neko kontrolno pitanje, npr:
Are You sure? Man, this is YUHERC.
> Gorane, nisam stavio copyright, slobodno iskoristi ideju :)
Važi, ako iskoristim imaš piće. Zasad sam u plusu sa pićima za
jedno dve tri bahanalije.
Pozdrav, gb
asembler.26dzakic,
-> #25, gbiocic>> Moguće je, istina ne baš "odavde dovde" već "odavde do
>> kraja mem.bloka". Funkcija 4Ah (modify allocated memory
>> block).
Da u pravu si, mogao bi se smanjiti deo koji ostaje. Ali šta bi
se desilo onda sa tom "rupom"? Ideja jeste interesantna i vredi
je probati.
>> Inače, kad bolje razmisliš nije baš preporučljivo
>> korisniku dozvoliti da tek tako izbacuje tvoje čedo iz
>> memorije. Postavi mu bar neko kontrolno pitanje, npr:
>> Are You sure? Man, this is YUHERC.
:)))
Naravno da ovu opciju niko neće koristiti ;) ali mislim da bi
svaki "well behaved" tsr program trebalo da je ima. Da su svi
takvi, programi poput mark i release ne bi nam bili ni potrebni,
zar ne?
asembler.27dzakic,
Uskoro će u sezamovom direktorijumu biti nova verzija YUHERC-a.
Verzija 2.0 ima nekoliko internih poboljšanja a izmenjena je i
spoljna 'kozmetika'. Tu je još par opcija za lakši rad.
Novo kod V2.0 2. Novembar, 1991.
═════════════
- Dodata opcija za isključivanje prikaza bold atributa (-b0 i -b1)
- Dodate opcije za aktiviranje i deaktiviranje programa (-on i -off)
- Omogućeno postavljanje proizvoljnog kodnog rasporeda (-c)
- Ponovo uveden parametar za podešavanje brzine s tim da vrednost
nula postavlja _vremenski_ limit od 1/18.2 sekunde
- Font datoteka ima default extenziju, pretražuje se i home direktorijum
- Dodata uninstall opcija za uklanjanje programa iz memorije (-u)
filename: \ibmpc\yu\hyutil20.zip
Pozdrav, dz
asembler.30zzdrnja,
Moze li mi neko napisati kako da aktiviram biper
´k
HHMK
asembler.31darone,
-> #30, zzdrnja>> Moze li mi neko napisati kako da aktiviram biper
Ako ti zvucnik ne radi, otvori racunar i na ploci
nadji natpis SPEAKER ili slicno. E, blizu njega (u
stvari, odmah do njega) se nalazi jumper na koji se
nakaci zica (pretpostavljam da je spala) koja vodi
do zvucnika... Samo je nakaci... i nadam se da ce
sve biti u redu...
darone
p.s. ako nisam najbolje objasnio, ostavi mi u mailu
telefon pa da ti objasnim vojs, nikad nisam bio
dobar sa recima na papiru (ekranu) :(
asembler.32dzakic,
-> #30, zzdrnjaVisinu zvuka u hercima stavi u di registar,
sound:
push ax,dx,di
mov al,0B6h
out 43h,al
mov dx,0014h
mov ax,4f38h
div di
out 42h,al
mov al,ah
out 42h,al
in al,61h
mov ah,al
or al,3
out 61h,al
;ovde stavi malu pauzu ako isprobavaš,
;zvuk posle ugasi sa:
mov al,ah
out 61h,al
pop di,dx,ax
Imaš o ovome članak u svetu kompjutera, septembar '87.
pozdrav, zak
asembler.33magician,
-> #31, darone=> p.s. ako nisam najbolje objasnio, ostavi mi u mailu
=> telefon pa da ti objasnim vojs, nikad nisam bio
=> dobar sa recima na papiru (ekranu) :(
Izvini darone, ali covek je to stavio u temu asembler... Ne verujem
da je to sto ti kazes :(
MAGICIAN
asembler.34darone,
-> #33, magician>> Izvini darone, ali covek je to stavio u temu
>> asembler... Ne verujem da je to sto ti kazes :(
Uuuuups!
Narode, izvinite, stvarno nisam citao ime teme...
sori
darone
asembler.35lazo,
Ima li neko kakav dokumentcioni fajl o asembleru u kome su opisane
komande asemblera kao što su MOV, itd...
Nekad davno (prije 3,4 godine) sam nešto radio u asembleru na svom
starom commodore, a koliko vidim ovaj nije ni nalik onom. Samo je
princip ostao isti.
Sve što imam je umetak iz starih računara vezano za asembeler na PC
računarima od ZZ-a "Sve MS-DOS funkcije".
Pozdrav Mickey.
P.S. Pored komandi asemblera interesuju me vrste registara, njihova
uloga i sl. Imam MASM asembler.
asembler.36ppekovic,
-> #35, lazo>>P.S. Pored komandi asemblera interesuju me vrste registara, njihova
>> uloga i sl. Imam MASM asembler.
Nemogu tačno da se setim odakle sam pokupio NG (norton guide) bazu za
assembler. Nisam siguran dali ga ima na sezamu, ako nema, upload-ovaću ga ako
dobijem blagoslov file moderatora.
Paya
asembler.37mjova,
-> #35, lazo> Nekad davno (prije 3,4 godine) sam nešto radio u asembleru
> na svom starom commodore, a koliko vidim ovaj nije ni
> nalik onom. Samo je princip ostao isti.
da, mnogo je sličniji sa Z80, ali ne preterano.
što se tiče komandi za asembler, mislim da se mogu naći neke datoteke
u pc.soft koje sam ostavio dosta davno. inače, uz tasm ima i lep help
koji opisuje i asm komande i pseudo komande itd.
SY
asembler.38bulaja,
-> #36, ppekovic│Nemogu tacno da se setim odakle sam pokupio NG (norton guide) bazu za
│assembler. Nisam siguran dali ga ima na sezamu, ako nema, upload-ovacu
│ga ako dobijem blagoslov file moderatora.
└───
Dobio si ga od mene ;), ali nazalost neces moci da ga uploadujes posto
nije PD :( (prodavao ga ja Norton ranije zajedno sa MSC i TC NG).
Inace taj NG je dobra stvar, ima gomila informacija o procesorskim
instrukcijama, BIOS i DOS funkcijama i slicnim stvarima, mada izgleda
da ima i nekih netacnosti.
Btw bas sam sa 3KLa pre negi dan pokupio neki rezidentni help sa i8086
instrukcijama, ali je prg los, pa ga necu baciti na Sezam. Videcu ovih
dana ima li jos nesto na istu temu.
asembler.39spantic,
-> #35, lazo> Ima li neko kakav dokumentcioni fajl o asembleru u kome su
> opisane komande asemblera kao što su MOV, itd...
Najbolje je da probaš da nabaviš NG za ASM i/ili tutore.
asembler.40adulic,
-> #30, zzdrnja SPKR.SYS je DOS drajver koji omogućuje lako korišćenje PC-ovog
zvučnika. Zahteva DOS 2.0 ili noviji. U config.sys ubaci ovaj red:
device=<path>spkr.sys
Koristi se kao i drugi uredjaji, kao što su CON:, PRN:, COM:...
Novoinstalisani uredjaj je SPK: (SPeaKer), a podaci se mogu samo slati
u njega, ne i primati iz njega.
Da bi upotrebio SPK:, moraš poslati niz podataka frekvencije i
trajanja zvuka u obliku datoteke u SPK:. Trajanje se odredjuje taktom
sistemskog sata (što znači da najkraći zvuk traje oko 55 ms).
Oblik podataka koji prepoznaje SPK: je: <frekvencija>,<trajanje>;<ENTER>
Na ovaj način može se nanizati više tonova u jedan ASCII fajl.
Kada se ovakav fajl naredbom copy pošalje u SPK:, dobija se isti efekat
kao da su podaci poslani sa tastature, samo što ide mnogo brže. Naravno,
SPK: je upotrebljiv i iz svih jezika kojima su dostupni uredjaji.
Sve ovo i mnogo više, nalazi se u dokumentaciji zajedno sa samim
drajverom u datoteci uz poruku.
AD
spk_sys.zipasembler.41zzdrnja,
HVALA NA POMOCI !!
ps: biper je od miloste (zbog velikih mogucnosti)
pps: Postoji li neki pametniji nacin da dodjem do knjige:
MICROSOFT
MACRO ASSEMBLER
BIBLE
osim da pisem cak u indianu?
Zoran
asembler.42lazo,
-> #38, bulaja-> Dobio si ga od mene ;), ali nazalost neces moci da ga uploadujes posto
-> nije PD :( (prodavao ga ja Norton ranije zajedno sa MSC i TC NG).
A bil moglo preko mail-a? Hoće li falit išta da ga Paya pošalje menu k'o
što si ti njemu:))?!?
asembler.43ljupco,
-> #32, dzakic A kako se (i dali se) podesava jacina zvuka? I koliko bitova kontrolise
jacinu zvuka?
asembler.44dzakic,
-> #43, ljupco>> A kako se (i dali se) podesava jacina zvuka? I koliko bitova
>> kontrolise jacinu zvuka?
E da, negde sam pročitao da postoje dva načina za aktiviranje
zvučnika. Jedan je ovaj koji sam napisao, da se to prepusti
hardveru - sa 8255 PPI, izlazni registar 61, se šalju signali sa
nultog i prvog bita. Signal sa nultog prolazi preko 8253 tajmera
i AND-uje sa prvim signalom i na kraju aktivira zvučnik. U ovom
slučaju je procesor slobodan da radi druge stvari dok zvučnik
svira.
Drugi način je da se to radi "kao na spektrumu". Dakle, procesor
stalno dežura i šalje nule i jedinice speaker-u. Ovo ne znam
kako se radi ali sam eksperimentisao na spek-u i pokazalo se da
se zvuk čuje jače što je trajanje nule i jedinice ravnomernije,
dakle "čist" testerast ton. Međutim, što se trajanje nule
recimo, produžava u odnosu na trajanje jedinice (ukupno vreme
ostaje isto) to se jačina zvuka smanjuje. Mislim da je to
korišćeno i na PC-u u programima gde se čuje zvik promenljive
jačine.
┌───┐ ┌───┐ ┌───┐
│ │ │ │ │ │
───┘ └───┘ └───┘ └─ Ovo su dva tona iste frekvencije,
a različite jačine, prvi je (naj)jači.
┌┐ ┌┐ ┌┐
││ ││ ││
───┘└──────┘└──────┘└────
zak
asembler.45lazo,
Zašto slijedeći program neće da izmjeni fajlu TEST.EXE atribut?
code segment public 'code'
assume cs:code,ds:data,ss:stack
prog proc far
mov ax,data
mov ds,ax
mov dx, offset ime ───┐
mov ah,43h │ dio programa koji bi trebao da
mov al,01h │ promjeni atribut TEXT.EXE, tj.
mov cx,03h │ setuje R i H atribute.
int 21h ────────────┘
mov ah,4ch
int 21h
prog endp
code ends
data segment
ime db 'c:\test\test.exe'
data ends
stack segment stack 'stack'
dw 1024 dup (?)
stack ends
end
asembler.46dzakic,
-> #45, lazo# ime db 'c:\test\test.exe'
Treba da stoji:
ime db 'c:\test\test.exe',0
Ona nula na kraju je jako važna jer označava kraj stringa.
Pretpostavljam da je DOS zbog toga vraćao kod greške 'File not
found'.
Pozdrav, zak
asembler.47lazo,
-> #46, dzakic-> Treba da stoji:
->
-> ime db 'c:\test\test.exe',0
U parvu si, hvala.
-> Pretpostavljam da je DOS zbog toga vraćao kod greške 'File not
-> found'.
Nije. Samo ništa nije radio.
Pozdrav, i još jednom hvala, Mickey.
asembler.48jknezovic,
Pozdrav...
Iz razno-zaznih razloga potreban mi je assembler za z80 (po mogucnosti sa
uputstvom ) na PC-u.
Ko o ovome nesto brzo zna ili takvo nesto ima, molim brzi odgovor. :)
Nije lose ako mi se i javi na tel (088)-422-797 . Traziti Mladju...
JKnezovic
asembler.50ljupco,
-> #49, bocko
> E, sad, sve je to lepo, ali STA JE SA OSTATKOM FUNKCIJA?
Pitaj Microsoft-a ;) Autor teksta o loadall instrukciji kaze:
> Furthermore, Microsoft will give you a copy of the XMS driver, and
>standard, free, if you write to them and ask for one. Write to Microsoft
>Corporation, 16011 NE 36th Way, Box 97017, Redmond WA 98073, and politely
>request a floppy copy of the XMS standard and driver. Thank you, Microsoft.
asembler.51miro,
-> #49, bocko■■> Ima li neko dokumentaciju za XMS ?
■■>
Imam ja (dragisha) ali sam u SA.:(
Knjiga se zove MS-DOS Extensions (by Ray Duncan) u izdanju Microsoft
Press. Osim te knjige imam i jedan file koji sam nekada davno skinuo sa
MIPS-a a zove se XMS.ZIP (ime je tacno, ekstenzija je mozda .ARC) i koja
sadrzi cak i sors neke tamo verzije.
Osim XMS, pomenuta knjiga obradjuje i EMS, Microsoft Mouse Driver i
Microsoft CD-ROM extensions.
Ako ti puno treba mail send miro (a uskoro ce moci i na dragisha:) ) pa
da se dogovorimo nekako oko slanja.
Pozdrav.
asembler.52miro,
Evo ovdje jedan file o XMS (izvadjen iz MS XMS distribucione arhive)
dragisha
xms.arjasembler.53bocko,
-> #52, miroThanks!
Bocko
asembler.54nbatocanin,
Ima li neko podatke za razlike u instrukcijama za 6502 i 65c02?
asembler.55dtadic,
-> #54, nbatocanin
>> Ima li neko podatke za razlike u instrukcijama za 6502 i 65c02?
Kod 65C02 su dodate sledece instrukcije:
BRA (branch always)
INA (increment acc)
DEA (decrement acc)
TRB (test and reset memory bits with acc) - zpg i abs
TSB (test and set memory bits with acc) - zpg i abs
PHX (push X on stack)
PHY (push Y on stack),
PLX (pull X from stack)
PLY (pull Y from stack)
STZ (store zero) - zpg zpg,X abs abs,X
Pored ovoga, dodati su i novi modovi adresiranja za neke stare instrukcije:
ADC, AND, CMP, EOR, LDA, ORA, SBC i STA podrzavaju indirektno adresiranje
BIT podrzava adresiranje tipa imm, zpg,X i abs,X
JMP podrzava adresiranje tipa (abs),X
DT
asembler.56jknezovic,
Htio bih raditi uredjaj sa procesorom 8080.Interesuje me asembler za taj
procesor(paket softvera) te malo obavjestenja u pogledu razvoja uredjaja.
telefTHelefon za kontakt je 088 422-797 Senad Tojaga.žZ
asembler.57vbole,
-> #56, jknezovic> Htio bih raditi uredjaj sa procesorom 8080.Interesuje me asembler za taj
> procesor(paket softvera) te malo obavjestenja u pogledu razvoja
> uredjaja.
Koliko ja znam, on se vise ni ne proizvodi, zasto ne uzmes Z-80 ??
8080 Disasembler ( SID ) mozes da dobijes od mene - za CPM+, ali
asembler za njega nemam, mozda da probas da programiras u Z-80
asembleru bez prosirenog seta instrukcija.Javi sta te konkretno
interesuje/treba, da ti posaljem u mail.
bye... vbole
asembler.58zonjic,
-> #56, jknezovic> Htio bih raditi uredjaj sa procesorom 8080.Interesuje me asembler za
> taj procesor(paket softvera) te malo obavjestenja u pogledu razvoja
> uredjaja.
Na ETF-u je na OGLASima neko ostavio, ako se ne varam spisak instrukcija
ovog uProcesora. Mozda neki kolega izadje sa konkretnijom informacijom...
asembler.59kole,
-> #56, jknezovic>> Htio bih raditi uredjaj sa procesorom 8080.Interesuje me asembler za taj
>> procesor(paket softvera) te malo obavjestenja u pogledu razvoja uredjaja.
AMSTRAD 6128 (odnosno CP\M+) je imao sve što Ti treba (DR-ov Macro Assembler
i Debugger...) i to me baš nerviralo kad sam nešto pisao u makincu (sve je za
8080). Normalno instrukcije liče na Intel-ove ( eeeee Z80 gde si...)
Lepo nađeš nekog klinca, daš mu Ninja-kornjaču i ćapiš AMSTRAD,...
Pozdrav,
Kole
asembler.60pele,
-> #58, zonjic> Na ETF-u je na OGLASima neko ostavio, ako se ne varam
> spisak instrukcija ovog uProcesora. Mozda neki kolega
> izadje sa konkretnijom informacijom...
Sve bi to bilo lepo i krasno kad nebi bilo:
"Oglasna tabla trnutno ne radi zbog zloupotrba!" ;(
pele
asembler.61dbojan,
Kako pozvati neki od SuperVGA graf. modova ???
asembler.62radunovic,
-> #61, dbojan
Trebalo bi da imas uputstvo u kome pise koji je mod za sta jer mislim da
kartica nije standardna(postoji VESA standard ali valjda nije jos stigao do
nas). Za slucaj da nemas uputstvo evo ti neki modovi sa moje AVGA kartice:
800x600 256 Bios mode: 62H
800x600 16 Bios mode: 6AH,71H
640x480 256 Bios mode: 61H
1024x768 16 Bios mode: 74H
Setujes mod sa INT 10H tako sto u AL stavis 0 a u AH Bios mode(valjda bese
tako).
asembler.63ljupco,
Kako da simuliram far call pomocu near call? Adresa
gde skacem nalazi se zapisana kao dword (ofset, segment) na adresi
_oldkey.
asembler.64ljupco,
Kako da simuliram far call pomocu near call? Adresa
gde skacem nalazi se zapisana kao dword (ofset, segment) na adresi
_oldkey.
asembler.65dgrbic,
-> #63, ljupco:: Kako da simuliram far call pomocu near call? Adresa
:: gde skacem nalazi se zapisana kao dword (ofset, segment) na adresi
:: _oldkey.
No way, amigo.
Ako je ono sto ti treba da se pozove sub na adresi _oldkey, pa da se uradi
near ret, rezultati su vrlo nepredvidljivi.
Ali, mozes da gurnes na stek povratnu adresu i dword sa _oldkey pa da
uradiš ret far.
Ipak razmisli, da li je baš to ono što želiš da uradiš.
Pomoću near call ne ide, jer treba promeniti i CS.
asembler.66janko,
Znam da ima negde, da je neko pisao o tome,
ali ne znam gde, pa pomagajte:
1. Kako se radi sa COM3 i COM4, a ne samo sa COM1, COM2 iz
mašinca, C-a i sl.?
Za ovo nisam siguran da je već pisano:
2. Da li ovi uobičajeni modemi mogu samo da okrenu broj, a
onda da nas puste da pričamo glasom, i ako mogu, kako se to
radi? U mojim uputstvima za modem nema ništa o tome.
asembler.67janko,
Da li je neko pokušavao da se bavi nekom vrstom animacije u TEXT
režimu?
Ja ne umem da uskladim promenu sadržaja ekrana, sa onim
skaniranjem koje radi kartica, pa mi se vidi da je slika
"iskidana": moj program počne da menja sadržaj video memorije,
pa kartica izgeneriše sliku, pa moj program nastavi...
Izgleda da se na EGA-ma i jačim mogu da menjaju cele stranice
u tekst režimu, samo gađanjem nekih lokacija, ili zvanjem nekih
interapta. A može li se to i na Herkulesu? Postoji li univerzalno
rešenje?
asembler.68zormi,
-> #66, janko* 2. Da li ovi uobičajeni modemi mogu samo da okrenu broj,
* a onda da nas puste da pričamo glasom, i ako mogu, kako se
* to radi? U mojim uputstvima za modem nema ništa o tome.
Mogu. Ja sam to radio iz Sidekick-a pre dve godine kada
sam ga koristio. SK je radio sve što je potrebno.
asembler.69dgrbic,
-> #66, janko:: 2. Da li ovi uobičajeni modemi mogu samo da okrenu broj, a
:: onda da nas puste da pričamo glasom, i ako mogu, kako se to
:: radi? U mojim uputstvima za modem nema ništa o tome.
ATDPbroj;
Znači, samo staviš ; na kraju.
asembler.70obren,
-> #69, dgrbic> :: 2. Da li ovi uobičajeni modemi mogu samo da okrenu broj, a
> :: onda da nas puste da pričamo glasom, i ako mogu, kako se to
> :: radi? U mojim uputstvima za modem nema ništa o tome.
>
> ATDPbroj;
>
> Znači, samo staviš ; na kraju.
Jesi li siguran da ; služi za to? Koliko je meni poznato ; je modifikator
koji kada se nađe na kraju broja prouzrokuje da se posle dobijanja veze vrati
u komandni mod. Posle sa AT O možeš da se vratiš online. Mislim da nećeš ništa
posebno postići po pitanju prelaska na voice sa tim tačka-zarezom. Jedna od
varijanti je da pošto modemi uspostave vezu, digneš slušalicu od telefona, a
modemu saopštiš da "prekine vezu" (AT H). Ako imaš dva priključena telefona
predhodni postupak bi bio analogan pozivanju nekoga pomoću jednog od njih,
zatim duzanju slušalice drugog telefona i najzad spuštanju slušalice prvog.
To sa tačka-zarezom sam i ja negde video (ali ne i probao!). Mislim da je
u umetku o modemima iz Sveta kompjutera. Tada sam mislio da je to neka greška
i nisam proverio. U svakom slučaju, ako si ti probao i radi, onda izvini...
P.S. Ovo očigledno nije za temu asembler, ali pitanje je ovde postavljeno!
Pozdrav,
Dragan
asembler.71dgrbic,
-> #70, obren:: Jesi li siguran da ; služi za to? Koliko je meni poznato ; je
:: modifikator koji kada se nađe na kraju broja prouzrokuje da se
:: posle dobijanja veze vrati u komandni mod. Posle sa AT O možeš da
:: se vratiš online. Mislim da nećeš ništa posebno postići po pitanju
:: prelaska na voice sa tim tačka-zarezom.
Nisam probao :)
Evo šta piše u uputstvu za moj modem:
***************************
; instructs the modem to return to Command Mode after dialing, instead of
originating a data call. The semicolon can be entered anywhere in the
command line, and the modem's speaker stays on until you instruct the
modem to hang up. This command is useful if you want to use the modem to
dial a voice call; you can simply pick up the handset when you hear the
person at the other end pick up the phone.
***************************
Dakle modem ostaje u komandnom modu i ne uspostavlja vezu. Zvučnik ostaje
uključen.
asembler.72dzakic,
-> #71, dgrbic>> Dakle modem ostaje u komandnom modu i ne uspostavlja vezu.
>> Zvučnik ostaje uključen.
Da, ali ipak treba ručno poslati jedan space ili enter modemu da
bi hangupirao. Jedina prednost ovoga nad klasičnim biranjem
broja koji sam do sada koristio (običan atdp :) je što se ne
može desiti da modem zapišti ako se ne reaguje odma. Nije loše...
asembler.73dzakic,
-> #67, janko>> Da li je neko pokušavao da se bavi nekom vrstom animacije u TEXT
>> režimu?
Ja sam pre neki dan (od prilike dan pre nego je napisana
tvoja poruka, a ja kasnim jer sam bio odsutan na kratko)
pravio neku vrstu intro-a koji smo viđali na komodorima i
spektrumima. Običan skrol teksta veličine 14 redova, gađa
pravo u tekst video memoriju, ali mučio me upravo ovaj
problem...
>> Ja ne umem da uskladim promenu sadržaja ekrana, sa onim
>> skaniranjem koje radi kartica, pa mi se vidi da je slika
>> "iskidana": moj program počne da menja sadržaj video memorije,
Mislim da sam u onom helppc-u video da postoje neki bitovi na
portu video kontrolera koji bi trebalo da signaliziraju
horizontal i vertical retrace. Pretpostavljam da je to ono
što nam treba i nešto sam eksperimentisao (stavim petlju da
čeka recimo keca pa zatim nulu na tom mest) i nisam dobio
ništa. Zapravo, ta se vrednost uopšte ne menja. Da li to radi
samo na cga, ne znam.
>> Izgleda da se na EGA-ma i jačim mogu da menjaju cele stranice
>> u tekst režimu, samo gađanjem nekih lokacija, ili zvanjem nekih
>> interapta. A može li se to i na Herkulesu? Postoji li univerzalno
>> rešenje?
Na herkulesu ne može. BIOS omogućava više text stranica, ali
ona koja je vidljiva mora da se nalazi na B000 segmentu.
Ostale se pamte na B200, B400 itd. S druge strane dve
grafičke stranice se mogu smenjivati velikom brzinom, samo
pomoću nekoliko out-a. Dve grafičke stranice na B000 i B800
lako se svičuju...
asembler.74dzakic,
-> #66, janko>> 1. Kako se radi sa COM3 i COM4, a ne samo sa COM1, COM2 iz
>> mašinca, C-a i sl.?
Ima u r:\rsoft zbirka zz-ovih rutina za rad sa com portovima 1 i
2. U staroj pc.soft vkostić je ostavio source sa prepravkama za
rad sa com3 i com4. Isprobao sam i jako sam zadovoljan.
asembler.75ivans,
Primecujete li malu nedoslednost u nazivu ove teme? Rec je o sledecem: postoje
teme basic, pascal, clipper, i sve se pisu u originalu. Medutim, ova tema se
zove aSembler, a ne aSSembler, kako bi trebalo... Naravno, sada je kasno
menjati naziv teme (napravilo bi novi haos po Sor-ovima), ali u buduce (kada
Sezam dobije nov disk ;))... Trebalo bi paziti...
Pozdrav,
Ivans.
asembler.76radunovic,
-> #67, janko
?! Ja ne umem da uskladim promenu sadrzaja ekrana, sa onim
?! skaniranjem koje radi kartica, pa mi se vidi da je slika
?! "iskidana": moj program pocne da menja sadrzaj video memorije,
?! pa kartica izgenerise sliku, pa moj program nastavi...
Probaj sa menjanjem video strana. Izaberi jednu za aktivnu a
drugu za vidljivu i crtaj po aktivnoj pa kad zavrsis, samo ih
zameni. Pogledaj u NG za asm int 10h
asembler.77janko,
-> #73, dzakic>
> Mislim da sam u onom helppc-u video da postoje neki bitovi
> na portu video kontrolera koji bi trebalo da signaliziraju
> horizontal i vertical retrace. Pretpostavljam da je to ono
> što nam treba i nešto sam eksperimentisao (stavim petlju
> da čeka recimo keca pa zatim nulu na tom mest) i nisam
> dobio ništa. Zapravo, ta se vrednost uopšte ne menja. Da
> li to radi samo na cga, ne znam.
Ja sam se igrao sa time, tako što sam neke programe koji idu uz
turbo paskal, direktno gađaju tekst memoriju a imaju
asemblerskog sorsa, malo menjao pa puštao, da vidim efekte.
Zaključak mi je: to ipak služi samo za CGA, i ima ulogu 'SNOW
CHECK-a'. Ono što često pitaju instalacije za razne programe je
baš da li da uključe te petlje ili ne. To je bilo potrebno za
CGA-e, koje su davale ružne efekte kada bi gađao ekransku
memoriju u nezgodnom trenutku. Novije kartice i Hercules
jednostavno odlože upis dok njima ne odgovara, pa je SNOW CHECK
bespredmetan, po njima. Tako se to ne može da iskoristi ni za
sinhronizaciju upisa, na žalost (eh, kako je to bilo lako na
Spektrumu :) ). Bojim se da do sada niko nije napisao ovakve
programe, kakvi su meni i tebi pali na pamet, samo zato što
univerzalno rešenje ne postoji? :(
asembler.78janko,
-> #74, dzakic>>> 1. Kako se radi sa COM3 i COM4, a ne samo sa COM1, COM2
>
> Ima u r:Đrsoft zbirka zz-ovih rutina za rad sa com
> portovima 1 i 2. U staroj pc.soft vkostić je ostavio
> source sa prepravkama za rad sa com3 i com4.
Eto zbog toga treba da imamo direktorijum za Domaći softver.
Rad sa COM3 i COM4 ipak zaslužuje da ne bude samo
datoteka prikačena u nekoj konferenciji. Ili grešim?
asembler.79dgrbic,
-> #73, dzakic:: Na herkulesu ne može. BIOS omogućava više text stranica, ali
:: ona koja je vidljiva mora da se nalazi na B000 segmentu.
Pa zar ne može direktnom promenom u CRTC da se pomeri početak ekrana?
Na CGA je to tako išlo, a radi i na VGA...
asembler.80ndragan,
-> #75, ivans/ ali u buduce (kada Sezam dobije nov disk ;))... Trebalo bi paziti...
Kada svi mi dobijemo nove diskove :)
asembler.81janko,
-> #79, dgrbic> Pa zar ne može direktnom promenom u CRTC da se pomeri
> početak ekrana? Na CGA je to tako išlo, a radi i na VGA...
Može primer, pa da probam i na Herculesu?
asembler.82dzakic,
-> #81, janko>> Može primer, pa da probam i na Herculesu?
Ja sam nedavno analizirao kako radi onaj flicker i mislim da on
menja offset početka video memorije. To su registri 13 i 14 čini
mi se. Nisam siguran, ne juri mi se sad po helpu, al znam da ih
on menja (flicker) i da su to predzadnja dva registra, zadnja
dva su za light pen. Valjalo bi malo eksperimentisati sa tim.
S druge strane, bios to sigurno ne radi jer lepo kaže da mod 7
ima samo jednu text stranicu.
asembler.83dgrbic,
-> #82, dzakic:: S druge strane, bios to sigurno ne radi jer lepo kaže da mod 7
:: ima samo jednu text stranicu.
Naravno, u BIOS-u je podrška za MDA, a ne za Hercules.
asembler.84janko,
-> #82, dzakic> Ja sam nedavno analizirao kako radi onaj flicker i mislim
> da on menja offset početka video memorije. To su registri
> 13 i 14 čini mi se. Nisam siguran, ne juri mi se sad po
> helpu, al znam da ih on menja (flicker) i da su to
> predzadnja dva registra, zadnja dva su za light pen.
> Valjalo bi malo eksperimentisati sa tim.
Eksperimentisao sam. Ipak mi nije uspelo da razmenjujem
sadržaje dva ekrana. Ne znam gde se to događa, ali od one
adrese u registrima u CRTC, izgleda da se uzimaju o obzir samo
bitovi 0-10. Izgleda da to radi zato što je 25*80=2000=7d0h, pa
neko (ne znam koji čip, u to se ne razumem) tu uzima samo kao
(adresa & 7ffh). Tako mogu da pomerim sliku samo tako da uhvati
još 48 bajtova koji neisu bili na prethodnoj. Ako nekog zanima,
okačiću i program koji to demonstrira.
Pošto sam 'tanak' sa tom hardverskom organizacijom, imam još
pitanja:
Pre svega, da li je CRTC čip (po helppc-u, onaj Motorolin 68..)
jedino što programer može da vidi, ili je on neko 'predvorje'
pravom grafičkom čipu? Konkretno, u tim podacima koje sam video
u HelpPC, nema nikakvih specifičnosti za razne grafičke
kartice. Da li grafičke kartice emuliraju možda taj Motorolin
čip? Ima li neko specifikacije za Hercules, CGA, EGA koje
relevantne, a ne postoje u HelpPC?
I da, šta je to taj flicker koji se pominje da menja početak
video memorije?
asembler.85ljupco,
U 80386 Tehnical Reference kaze se da je exception 13
general protection exception i pobrojane su situacije kada se ovaj
exception generise. Jedna od situacije je "Exceeding the segment
limit when using CS, DS, ES, FS or GS". Interesantno je da kaze
jos "ExcepthKn also detected in 80286/80386 REAL mode". Moze li
neko da kaze pod kojim se uslovima ovaj exception dogadja kod
286-tice?
I dali se ovo moze iskoristiti kod programa tipa kao sto
je dzakicev yuherc?
asembler.86janko,
Skoro je stigao DZakićev i Beast-ov program ZBtet. I u njemu,
problem sa animacijom u niskoj rezoluciji na herkulesu, na koga
sam i ja bio naleteo, nije rešen. Bacio sam pogled na bazu,
DZakić je baš pominjao Intro, kada smo pričali o tom problemu!
Zna li neko da li je moguće rešiti pomenuti problem, ili ostaje
za vjeki vjekov?
Usput, jeste li uspeli da pročitate ceo intro na herkulesu a da
vam se ne zavrti u glavi? Možda bismo mogli da počnemo da
koristimo računare umesto raznih opojnih droga? :)
Meni u ZBTet-u fali mogućnost da ono što padne sklizne
već kada je palo, što je stari tetris mogao, a ovaj ne može.
Da li je u planu REZIDENTNA verzija? Problem je sa upisom na
disk tabele skora, ali to bi moglo da se radi, recimo, samo pri
deinstalaciji?
Inače, program je jako pristojan, sa obzirom na cenu. (osmeh)
asembler.87dzakic,
-> #86, janko>> Zna li neko da li je moguće rešiti pomenuti problem, ili ostaje
>> za vjeki vjekov?
Izgleda ne :(( Na vga znam da može (ne i kako) al ne zanima
me, ako ne može kod nas, nek se i oni pate ;)
>> Usput, jeste li uspeli da pročitate ceo intro na herkulesu a da
>> vam se ne zavrti u glavi? Možda bismo mogli da počnemo da
Trebalo bi da se može dovoljno usporiti da se ne zavrti. žak
i na bržim mašinama, paskal prvo "kalibriše" klok tako da je
delay isti na svim konfiguracijama. Inače, ja sam vežbao i
nekoliko puta ga iščitao do kraja uz pristojno malu
vrtoglavicu ;)
>> Meni u ZBTet-u fali mogućnost da ono što padne sklizne
Nas dvojica to očigledno nismo do sada koristili, ja ne volim
da se "podvlačim" ;) Planirano je da se ubaci u sledeću
verziju verovatno kao opcija.
>> Da li je u planu REZIDENTNA verzija? Problem je sa upisom na
Nije za sad. Verovatno ćemo pre raditi neke extenzije za dva
igrača i sl. Mada, i kod upisa, dovoljno je proveriti one
flegove indos i dos critical...
Pozdrav, dz
asembler.88vkrstonosic,
-> #86, janko>> Skoro je stigao DZakićev i Beast-ov program ZBtet. I u njemu,
Oooo, pravo osveženje za domaću scenu. Pošto imam resign igre,
moram ovde da odam priznanje autorima. Svaka čast, samo tako
nastavite, sledeće je Summer Games ;)
asembler.89dejanr,
-> #87, dzakicNe znam da li je namerno ili sticaj okolnosti, ali ZBTET ne broji poene kao
tetris, štaviše dosta je "velikodušniji".
Ja bih više voleo klasično brojanje, nekako onda imam osećaj šta sam uradio.
Ako trebaju pravila, bila nekad davno u "Računarima".
asembler.90dzakic,
-> #89, dejanr>> Ja bih više voleo klasično brojanje, nekako onda imam osećaj šta
>> sam uradio. Ako trebaju pravila, bila nekad davno u "Računarima".
Da, sećam se toga i ta pravila sam koristio kod prethodnog,
amstradovog tetrisa. Sad je korišćena jako logična formula
inc(score,(level+1)*(22-visina)) gde je visina broj reda u kom
je figurica bila kad je pritinut space ili se zaustavila na
podlozi. Formula kazuje i da je veći deo igre pisan u paskalu,
ako nekoga baš zanima :) dakle nija baš za ovu temu premda ima
delova i u asembleru.
Ono što omogućava više poena je izmenjen sistem po kom se
određuje da treba povećati nivo. Ranije je to bilo 11, 21, 31...
Izgledalo nam je da bi bilo lepše da za prelazak sa 8. na 9.
treba sastaviti više linija nego za prelazak sa 2. na 3. Stavili
smo "linearno" povećavanje te cifre pa je Beast izračunao te
brojeve ne sećam se kako :) i evo tih konstanti:
promena:array[1..9] of integer=(12,25,42,61,82,105,130,157,186);
Nije baš okruglo, al ako neko voli da zna kolko je ostalo, možda
bi se mogao staviti neki brojač u ćoše.
To što je velikodušniji uradili smo namerno da se vidi da je
score deklarisan kao longint :)
Zak
asembler.91skoprivica,
-> #89, dejanr>-> Ne znam da li je namerno ili sticaj okolnosti, ali ZBTET ne broji
>-> poene kao tetris, stavise dosta je "velikodusniji".
A i 'dubina' je prevelika, a i ne povecavaju se nivoi u neko
dogledno vreme, a i ona pravila poentiranja bas i ne valjaju,
tj. imaju bag. Koji ? Pa reci cu vam ako vas bas zanima...
Aje... CTEBO.
asembler.92zmilan,
Nadam se da je pitanje u pravoj temi.
Interesuje me Z80 asembler za PC koji pravi kod koji bi direktno mogao da ide
u EPROM. Probao sam emulator CP/M, ali njegov asembler zahteva prepravke na
nivou koda koji daje za ovu primenu.
Nadam se da ce mi neko pomoci oko ovoga.
Ukoliko je ovo vec bilo pitanje na Sezamu, unapred se izvinjavam korisnicima s'
obzirom da sam od juce clan.
Pozdrav, zmilan.
asembler.93dzakic,
-> #86, jankoE, pa Janko, imam jednu radosnu vest :)) Otkrio sam, tačnije
kolega vasić koji trenutno nije na sezamu, našao je rašenje
radeći svoj cga simulator. Vertical retrace signalizira se
resetovanje sedmog bita na portu 3BA. Upravo sam probao intro
i razlika je ogromna, samo još da se nađe dobra duša da mi kaže
kako to isto da uradim na VGA, pošto ja nemam dokumentaciju.
Rešenje dakle postoji, i važi za herkules samo. Ono što smo
isprobavali ranije je za cga, moguće je rešiti i na vga.
Pozdrav, Zak
asembler.94ilazarevic,
-> #91, skoprivica█ tj. imaju bag. Koji ? Pa reci cu vam ako vas bas zanima...
Reci, reci, da bih ja napravio savršen tetris :))
asembler.95dgrbic,
-> #93, dzakic:: Rešenje dakle postoji, i važi za herkules samo. Ono što smo
:: isprobavali ranije je za cga, moguće je rešiti i na vga.
Port 3DA, bit 3. Moguće je pristupati RAM-u na kartici sledećih 1.25ms
Izvor: HELPPC.
Za bit 7 na 3BA ništa ne kaže!
asembler.96skoprivica,
-> #94, ilazarevic>-> dogledno vreme, a i ona pravila poentiranja bas i ne valjaju,
>-> tj. imaju bag. Koji ? Pa reci cu vam ako vas bas zanima...
>-> Reci, reci, da bih ja napravio savrsen tetris :))
Mislio sam na ORIGINALNI ruski tetris....Jos vas drzim u neizves-
nosti za pravila, ha ?
Aje... CTEBO.
PS: Koliko vremena vam treba da postignete NEGATIVAN skor u tetrisu?
Pola sata ? Mnoogooo...moze za 100 puta krace vrema...
asembler.97ilazarevic,
-> #96, skoprivica█ PS: Koliko vremena vam treba da postignete NEGATIVAN skor u tetrisu?
█ Pola sata ? Mnoogooo...moze za 100 puta krace vrema...
Ovo znam... Samo pritiskaš next taster i ovaj ludak počne da ti smanjuje
skor :)))
asembler.98skoprivica,
-> #97, ilazarevic>-> █ PS: Koliko vremena vam treba da postignete NEGATIVAN skor u
>-> tetrisu? Pola sata ? Mnoogooo...moze za 100 puta krace vrema...
>-> Ovo znam... Samo pritiskas next taster i ovaj ludak pocne da ti
>-> smanjuje skor :)))
Da, posebno se primeti na nultom nivou, kada pada 'kocka' i onda
drzis 8 i ona (kocka) treperi,kao okrece se i kad padne imate -30
poena..., tj. u onim pravilima fali i da zavise od broja punih
okretaja 'figure'
Aje... CTEBO.
asembler.99adezelin,
-> #86, janko>|#*}-
>|#*}- Usput, jeste li uspeli da procitate ceo intro na
>|#*}- herkulesu a da vam se ne zavrti u glavi? Mozda bismo
>|#*}- mogli da pocnemo da koristimo racunare umesto raznih
>|#*}- opojnih droga? :)
Ej, a da brobas sa taster "2" mozda radi!!! ;)))
Uzgred receno z(ovo je slovo z)es prg!!!
asembler.100zddb,
Imam problema sa 4. disketom programa MASM 6.0. Par bad sector-a i "help" mi ne
radi. Može li neko da pomogne?
Zoran D. Brkić
asembler.101zmilan,
Vec neko vreme mi ne polazi za rukom da dodjem do video memo-
rije graficke karte koja ima vise memorije nego sto je predvidjeno
segmentom $A000 za video memoriju..
Naime, radi se o EGA/VGA kartama sa 256KB i vise memorije.
Direktnim pristupom, izgleda, crta se samo u jednoj bit mapi, a
rezidentan program kojim skidam ovaj segment takodje skida samo
jednu bit mapu.
Da li je segment $A000 samo 'prozor' u video memoriji video ka-
rtice?? I kako doci do ostale memorije video karte, tj ostalih bit
mapa svih stranica video memorije??
Ko u ovome ima iskustva neka pojasni malo... Napominjem da nemam
nikakvu literaturu o ovome.
Pozdrav, Z.Milan.
HHHHPMM
asembler.102obren,
-> #101, zmilan> Naime, radi se o EGA/VGA kartama sa 256KB i vise memorije.
> Direktnim pristupom, izgleda, crta se samo u jednoj bit mapi, a
Direktnim pristupom se NE MOčE raditi sa EGA/VGA kao što je to bio
slučaj sa CGA/HGC. Jednostavno bit-ravni postoje ali je način na koji
su one organizovane interna stvar kartice. Mora se zatražiti od karte
da ona sadržaj tih bit ravni za neki pixel (tačnije 8 odjednom) smesti
u svoj interni 32-bitni registar iz koga posle "kupiš" informacije.
Sve ovo važi za standardne EGA/VGA karte. Ne znam da li je kod ovih
SuperVGA nešto promenjeno za one "šarene" modove sa dooosta bit ravni.
> Da li je segment $A000 samo 'prozor' u video memoriji video ka-
> rtice?? I kako doci do ostale memorije video karte, tj ostalih bit
> mapa svih stranica video memorije??
Donekle si u pravu. Segment A000 jeste na neki način prozor u video
memoriji ali u isto vreme i jedini kome se može direktno pristupiti.
Ostala memorija video karte je nedostupna (koliko ja znam). Da bi se
očitalo ili postavilo stanje nekog bita moraju se koristiti portovi.
U pitanju su port 3CE i 3CF (prvi je index a drugi data port). Dakle
nema ništa od poukovanja po video memoriji. Ovaj mehanizam koriste
i TC i TP ali nešto komplikuju zbog univerzalnosti za svaku karticu.
Kad stignem napisaću (onoliko koliko znam) koje sve funkcije ima
port 3CE i kako se koriste. Da napomenem da je crtanje tačke ovim
tehnikama brže od TC-ovog ili TP-ovog putpixel-a.
asembler.103mjova,
-> #101, zmilan> Naime, radi se o EGA/VGA kartama sa 256KB i vise memorije.
> Direktnim pristupom, izgleda, crta se samo u jednoj bit
> mapi, a
ne znam da li će ti nešto značiti, ali pokušaću da izdvojim deo koda,
ali iz C-a. ako ti to nije jasno, onda ti ne mogu pomoći ;). ova fn()
puni neku strukturu stvarima oko videa, ali tebe će valjda zanimati
samo deo:
reg.h.ah= 0x0f;
int86(VIDEO, ®, ®);
t->currmode= reg.h.al; // u kom je modu kartica
t->x_max= reg.h.ah; // ── rezolucija
t->page= reg.h.bh; //
if (reg.h.al == 7) { // ako je herc
t->y_max= 25; // │ rezolucija
t->video_seg= sreg.es= 0xb000;
} else {
reg.x.ax= 0x1130; // ako nije herc
reg.x.dx= 0; // ako nije ega/vga onda ostaje 0
int86(VIDEO, ®, ®);
t->y_max= (!reg.x.dx) ? 25 : (reg.x.dx + 1);
t->video_seg= sreg.es= 0xb800;
}
reg.h.ah = 0xfe; // da li je dv promenio ofset
reg.x.di = VIDEOFFSET;
int86x(VIDEO, ®, ®, &sreg);
t->video_seg= sreg.es;
t->video_mem= (word far *) MK_FP(sreg.es, reg.x.di);
ko zna, ovo sam doobroo ;) potkratio, možda i zafali neka linija koda.
SY
asembler.104radunovic,
-> #102, obren Bio bih ti zahvalan kada bi napisao nesto konkretno. Npr. adrse portova i
sl. (naravno i uputstvo za upotrebu:) BTW. gde si to pronasao ?