pascal.737vitez.koja,
-> #732, postmast#=> <broker@setnet.co.yu (Predrag Supurovic)>
#=>> Moze li se nekako upisati neki znak u donji desni ugao
#=>> ekrana a da isti ne 'odskroluje' za jedan red?
#=>
#=> Da li ga ispisujes sa WriteLn() ili sa Write()? Ako
#=> koristis prvu funkciju onda je zameni drugom i resices
#=> problem.
Ne pomaže to :) Zapravo, sa Write će dobiti jedan prazan red, sa
Writeln cela 2, i to zato što ove procedure pomeraju kursor za
jedno mesto iza onoga što ispišu; kako je jedno mesto iza
poslednjeg karaktera u redu prvi karakter u sledećem redu, kursor
se pomera u sledeći red. Kada je, usto, u pitanju karakter i u
posledjoj koloni, ceo ekran ode za jedan red...
Rešenje je direktno pisanje po video memeoriji.
pascal.738vitez.koja,
-> #727, sslavko#=> Evo ga šampion!! Predlažem da se roboti nazovu po korisničkim
#=> imenima onih koji ih prave, pa da se tako takmičimo. Evo ga
#=> moj SSLAVKO!!! Ajde ko će da ga pobedi.
Pa i nije se pokazao...
Abasiri vs SSlavko , a uzvratni meč SSlavko vs Abasiri
19 1 2 18
sk
pascal.739ognjen,
-> #721, duzle)-> 6 zipova. Da li ih vec ima na Sezamu, ili da ih saljem ?
Salji.
pascal.740szeman,
-> #726, postmast>> For i := 0 To FileSize (uf) Do
!!!!!!!!!!!!!
>> Begin
>> Seek (uf, i);
>> Read (uf, user);
>> WriteLn (user. ime);
>> ReadLn;
>> End;
Normalno je da javi grešku - učitavao je ono što ne postoji. :)
- FileSize(f: file of type) - daje UKUPAN BROJ zapisa (slogova) u bazi
- Seek(f,num) prelazi na Record.No koji se nalazi u varijabli num.
- Tipizirana baza počinje od NULTOG SLOGA, dakle:
R.No USERS1.DAT
=================
0. sima
1. pera
2. laza
3. mika
4. žika
Dakle:
- FileSize(f) daje kao rezultat: 5
- Seek(f,4) pozicionira se na R.No: 4
Stoga, rešenje tvog problema je da umesto:
For i := 0 To FileSize (uf) Do
napišeš:
For i := 0 To FileSize (uf) - 1 Do
Pozdrav, Sale
P.S. Loša ti je praksa ako bazu ne popunjavaš "postepeno" - uvek osiguraj
da svaki slog u bazi ima definisanu početnu vrednost. Dakle, ovako nešto
je "štetno po zdravlje" ;)
rewrite(f);
ime:='R.No 0'
seek(f,0);
write(f,ime);
ime:='R.No 5'
seek(f,5)
write(f,ime);
close(f);
jer će u R.No od 1 - 4 (uključno) biti nedefinisane vrednosti, što može
da bude veoma iritirajuće prilikom štampanja.
pascal.741sslavko,
-> #731, postmast>> "S> push word ptr old21+2
>> "S> push word ptr old21
>>
>> Takodjer i ova ..
>>
>> "S> pushf
Prva gura na stek adresu old21 procedure, a druga flegove.
pascal.742sslavko,
-> #736, uobradovic>> Može li neko da mi objasni kako se pravi procedura za P-ROBOTS.
Sve ti piše u P-ROBOTS.DOC.
pascal.743sslavko,
-> #738, vitez.koja>> Pa i nije se pokazao...
Ajde da vidimo vitez.koja vs sslavko. Nemoj mi porediti
abasirija. Sa njim ćemo da se poredimo kasnije kad razradimo
taktiku :))
pascal.744andrejt,
-> #726, postmast__> For i := 0 To FileSize (uf) Do
__> Begin ^^^^^^^^^^^^^
__> Seek (uf, i);
__> Read (uf, user);
__> WriteLn (user. ime);
__> ReadLn;
__> End;
Dolazi do FileSize(UF) i pokusava da dodje do njega sa Seek ali to
je nemoguce jer je prvi slog u stvari 0 a zadnji slog FileSize-1.
Resenje je da stavis, tamo gde je podvuceno, FileSize(UF)-1.
Nadam se da sam dovoljno razumljiv :)
pascal.745inikolic,
-> #732, postmastjedini meni poznati nacin da se upise karakter na koordinate 80,25 jeste da se
on upise direktno u memoriju.
karakter se upisuje u $b000:$0fde(ako je u pitanju hecules) i u
Hgreska : to je $b000:$0f9e(herc) i $b800:$0f9e(VGA) tu je karakter a sledeci
je njegov atribut(0f9f) . Ako te zanima odakle to -> pa prvi karakter za VGA je
$b800:$0000 , tu je karakter , a u $b800:$0000 ide njegov atribut i tako dalje
svaki drugi je karakter(za herc. je isto samo je $b000). Obrati paznju da je
rec o heksa zapisu.
Komanda kojom ces to obaviti je :
MEM[$b800:$****]:=65 {upisuje A na odredjeno mesto}
Nadam se da je to sto ti je trebalo...
Ivan
pascal.746mboban,
-> #702, sslavkoSubject: P-Robots
**> Ja sam napravio nekoliko varijanti i zainteresovan sam za razmenu
**> i okršaj sa ostalima.
So, otvaramo grupu?
**> P.S. Ajde neka neko pobedi GORO-a.
:)) Joj, gde Goroa nađe? :)
Leader lepo počne protiv njega, dere ga, dere... a onda ga Goro na krJaju :)
s*ebe... A Gorov algoritam - nema 4-5 redova :)
Sve u svemu, interesantna igrica, samo bih ja dodao više različitog oružja,
kao i više sposobnosti i karakteristika robota (probojnost oklopa, max
brzina, preciznost...)
pascal.747inesic,
-> #705, sslavko> Apropo onih robota. Evo mog remek-dela pa ko voli nek izvoli.
> Pobedite me u većini slučajeva pa da ga dorađujem. Naravno, ne
Isprobao sam tvoga killera. Najpre sa abasirijem koji ga je dobio
u 6 od 10, a i imao je manje oštećenje pri kraju partije nego
killer, kad ubije. Isprobao sam ga i sa subminijem, koji ga je
dobio u sve četiri partije, ali sa manjom razlikom u šteti.
Nego nije to ono na šta bih hteo da osvrnem pažnju. Ima jedan bug
ili u kompajleru ili u killeru. Kad startuješ program tako da je
killer prvi, a onaj drugi robot drugi, onda sve radi. S druge
strane kad ti je prvi argument neki drugi robot, a drugi killer,
onda kompajler prijavi BEGIN expected. Probao sa dva robota i
simptom se ponovio.
Neko je ovde pominjao prerađivanje programa tako da radi u
grafičkom modu. Kako će to da radi na mom herculesu? Mislim da je
program i bez toga dovoljno spor.
pascal.748uobradovic,
Slušajte pažljivo:
- Kako treba da mi glasi linija pod brojem 2
1-Startujem neki program iz mog programa
2-Kad izlazim iz tog nekog programa da se ponovo vrati
u moj program.
Mislim da ste me razumeli.
Uroš
pascal.750zeljkoj,
-> #748, uobradovic
> 2-Kad izlazim iz tog nekog programa da se ponovo vrati
> u moj program.
exec (tvoj_program, parametri);
pascal.751vlador,
-> #747, inesic> program i bez toga dovoljno spor.
:) Kako kome... Ja moram da isključim turbo i da dooobro pratim šta se
dešava. :)
pascal.752sslavko,
-> #747, inesic>> Isprobao sam tvoga killera. Najpre sa abasirijem koji ga
>> je dobio u 6 od 10, a i imao je manje oštećenje pri
>> kraju partije nego killer, kad ubije. Isprobao sam ga
>> i sa subminijem, koji ga je
Dobro, nisam ni mislio da me testiraš sa datim primerima. Za robota
koji je uradjen na brzaka, metodom grube sile i nije loš. Primere
su radili ljudi koji su se sa PROBOTS zezali malo duže nego ja.
Ajde ti napravi svog robota pa ga isprobaj sa mojim. Za nedelju-dve
i moji će derati Goroa i Abasirija O;).
P.S. Naravno rename abasiri ne dolazi u obzir. Mora da bude baš
tvoja kreacija.
pascal.753sslavko,
Evo ga nova verzija mog favorita. Nešto je bolji od Goro-a.
procedure SSlavko;
var r,dir,head,range:integer;
procedure go(d,s:integer);
begin
if loc_x<200 then head:=0;
if loc_x>800 then head:=180;
if loc_y<200 then head:=90;
if loc_y>800 then head:=270;
drive(d,s);
end;
begin
dir:=0;
head:=0;
r:=0;
repeat
range:=scan(dir,10);
while range=0 do
begin
range:=scan(dir,10);
if range>40 then cannon(dir,range) else
begin
dir:=dir+20;
r:=0;
end;
go(head,100);
end;
dir:=dir-5;
range:=scan(dir,5);
if range=0 then
begin
dir:=dir+10;
range:=scan(dir,5);
end;
if range>40 then
begin
r:=trunc((r-range)/2.5);
cannon(dir,range-r);
r:=range;
end;
head:=dir;
go(head,50);
until dead or winner;
end;
pascal.754uobradovic,
-> #747, inesic::> Nego nije to ono na šta bih hteo da osvrnem pažnju. Ima jedan
::> bug ili u kompajleru ili u killeru. Kad startuješ program
::> tako da je killer prvi, a onaj drugi robot drugi, onda sve
::> radi. S druge strane kad ti je prvi argument neki drugi
::> robot, a drugi killer, onda kompajler prijavi BEGIN
::> expected. Probao sa dva robota i simptom se ponovio.
U soru Killera promeni jedan deo i sve će da radi,a to je:
zameni mesta tako da prvo piše PROCEDURE ......,a zatim
VAR .... Mislim da je ovo bio problem kod ovog robota ili
kod SSLAVKO-vog.
Uroš
pascal.755inferno,
-> #751, vladorŮ│ ˙> program i bez toga dovoljno spor.
Ů│ ˙
Ů│ ˙ :) Kako kome... Ja moram da isključim turbo i da dooobro pratim š
Ů│ ˙ dešava. :)
Meni ni to ne pomaže. :( :>>
pascal.756dzakic,
-> #726, postmast> For i := 0 To FileSize (uf) Do
for i:=0 to filesize(uf)-1 do ...
Ako filesize vrati da ima 4 rekorda, onda bi trebalo od 1 do 4, ali
pošto ti seek traži poziciju računajući od nula, onda ako počneš od nula
ideš do filesize-1, prosto... :)
pascal.757inferno,
HI, ima li iko onog roborta Target, malo mi je nezgodno da isprobavam svoje
kreacije sa Abasirijem ili onim samoubicom, na primer.. :))
p.s. kako da usporim bitku (i sa turbom ide ko munja). Mislim da ima neki prg.
SLOW ili tako nekako...
pascal.758lovro,
Kako da napravim rezidentan program, a da ne stoji ceo u
memoriji:
begin
writeln('Hvala na pitanju, dobro sam.');
radinesto;
zabavljajnarod;
. . .
swapvectors;
getintvec(...
setintvec(...
keep(0);
end.
Sve ono pre tri tacke povećavaće zauzetu memoriju. Kako? Zašto?
Lovro
pascal.759mboban,
-> #757, inferno**> HI, ima li iko onog roborta Target, malo mi je nezgodno da isprobavam
**> svoje kreacije sa Abasirijem ili onim samoubicom, na primer.. :))
:)) Target, kažeš? :)
Fajt svog robota protiv robota Target startuješ tako što izostaviš naziv
protivničkog robota.
Znači: PROBOTS dileja
će da startuje borbu robota Dileja, protiv Targeta.
**> p.s. kako da usporim bitku (i sa turbom ide ko munja).
────────────────────────
Pa isključi turbo :))
**> Mislim da ima neki prg. SLOW ili tako nekako...
U direktorijumu UTIL, program AT-SLOW. Samo, piše da neregistrovana
verzija traje samo 5 min :))
pascal.760sslavko,
-> #757, inferno>> HI, ima li iko onog roborta Target
Edituj PROBOTS.EXE. Unutar njega imaš lepo ispisan kod Target-a.
A ćto se tiče isprobavanja, napravi robota koji se samo kreće,
ne puca ili stoji u mestu ili tako nešto, zavisi šta
isprobavaš. Ja imam par takvih, Proba1, Proba2...
pascal.761sslavko,
-> #747, inesic>> Isprobao sam tvoga killera. Najpre sa abasirijem koji ga
>> je dobio u 6 od 10, a i imao je manje oštećenje pri
>> kraju partije nego killer, kad ubije. Isprobao sam ga
>> i sa subminijem, koji ga je
Dobro, nisam ni mislio da me testiraš sa datim primerima. Za robota
koji je uradjen na brzaka, metodom grube sile i nije loš. Primere
su radili ljudi koji su se sa PROBOTS zezali malo duže nego ja.
Ajde ti napravi svog robota pa ga isprobaj sa mojim. Za nedelju-dve
i moji će derati Goroa i Abasirija O;).
P.S. Naravno rename abasiri ne dolazi u obzir. Mora da bude baš
tvoja kreacija.
pascal.762sslavko,
-> #758, lovro>> Kako da napravim rezidentan program, a da ne stoji ceo u
>> memoriji:
Sve o tome imaš u Računarima 93 i 94. Doduše pisano je za C ali
se da preraditi i za Pascal.
pascal.763kriss,
-> #757, inferno˙˙ p.s. kako da usporim bitku (i sa turbom ide ko munja). Mislim
˙˙ da ima neki prg. SLOW ili tako nekako...
Ima, program se zove slower.
pascal.764postmast,
From: Amir.Zolic@f115.n103.z38.setgate.setnet.co.yu (Amir Zolic)
Subject: pascal
Date: Wed, 30 Nov 1994 02:55:06
-=> Quoting Predrag Supurovic to "Ognjen Blagojevic" <=-
> Moze li se nekako upisati neki znak u donji desni ugao
>ekrana a da isti ne 'odskroluje' za jedan red?
PS> Da li ga ispisujes sa WriteLn() ili sa Write()? Ako koristis prvu
PS> funkciju onda je zameni drugom i resices problem.
Mislim da nisi u pravu ;)
Sta ce dati ovaj program?
┌────────────────────────────────────────┐
│ uses crt; │
│ begin │
│ ClrScr; │
│ WriteLn('Ovo je prva linija'); │
│ WriteLn('Ovo je druga linija'); │
│ WriteLn('a ovo je treca'); │
│ GoToXY(80, 25); │
│ Write('1'); { WriteLn('1') } │
│ end. │
└────────────────────────────────────────┘
U prvom slucaju ( Write() ), na ekranu ce ostati 'druga' i 'treca'
poruka i '1' na (80, 24) i kursor ce biti na (1,25).
U drugom slucaju ( WriteLn() ), na ekranu ce ostati samo 'treca'
poruka i '1' na (80,23) i kursor na (1, 25).
Resenje je da se koristi direktno pisanje u video memoriju. Tada ne
dolazi do pomeranja kursora posle ispisa teksta (ovo je uzrok
'podizanja' ekrana za jedan red) pa nema nikakvih problema :))
Pozdrav
Amir
P.S. Mislim da sam pre nekih mesec dana poslao funkcije koje vrse
pisanje direktno u Video memoriju.
... Pisac je covek koji prazni glavu da bi napunio stomak.
* Origin: Atlantis BBS 22-05 tel. 3225-548 ■Belgrade■ (38:103/115)
pascal.765postmast,
From: bebek@setnet.co.yu (Zeljko Stevanovic)
Subject: pascal
Date: Wed, 30 Nov 1994 12:43:05
* Citat: Predrag Supurovic --> "Ognjen Blagojevic"
* Tema : pascal
> Moze li se nekako upisati neki znak u donji desni ugao
>ekrana a da isti ne 'odskroluje' za jedan red?
PS> Da li ga ispisujes sa WriteLn() ili sa Write()? Ako koristis prvu
PS> funkciju onda je zameni drugom i resices problem.
Ako i to neuspe uzmi direktan upis u memoriju...
... IBM-PC - Imbecil Bussines Machine - Permanently Craches
* Origin: Venik BBS * Smed. Palanka * +381 26 34808 SetNet: (38:103/126)
pascal.766postmast,
From: bebek@setnet.co.yu (Zeljko Stevanovic)
Subject: Recordi
Date: Wed, 30 Nov 1994 12:45:06
* Citat: Predrag Supurovic --> Bosko Radivojevic
* Tema : Recordi
>i recimo ima 4 rekorda on prodje 4 puta i ispise tacno ali
>prodje i 5-ti
>put i kaze na read (uf, user) DISK READ ERROR i to u svim
>kombinacijamA:)
> For i := 0 To FileSize (uf) Do
PS> Klasicna greska. FileSize() vraca broj slogova u datoteci,
PS> a ti pocinjes da brojis od nule, sto znaci da se petlja vrti
PS> za jedan krug vise nego sto treba.
PS> Pocni da brojis od 1.
Ali onda mora u Seek(x) da stavlja i-1 ako koristi Seek...
... IBM-PC - Imbecil Bussines Machine - Permanently Craches
* Origin: Venik BBS * Smed. Palanka * +381 26 34808 SetNet: (38:103/126)
pascal.767postmast,
From: broker@setnet.co.yu (Predrag Supurovic)
Subject: Recordi
Date: Thu, 01 Dec 1994 09:22:00
> >put i kaze na read (uf, user) DISK READ ERROR i to u svim
> >kombinacijamA:)
>
> > For i := 0 To FileSize (uf) Do
> PS> Klasicna greska. FileSize() vraca broj slogova u datoteci,
> PS> a ti pocinjes da brojis od nule, sto znaci da se petlja vrti
> PS> za jedan krug vise nego sto treba.
> PS> Pocni da brojis od 1.
>Ali onda mora u Seek(x) da stavlja i-1 ako koristi Seek...
Pa dobro onda neka broji od f:=0 do FileSize (uf)-1. Dodje na isto.
* Origin: Oreska BBS, Uzice = SF BIBLIOTEKA = SETNet: (38:101/101)
pascal.768postmast,
From: bebek@setnet.co.yu (Zeljko Stevanovic)
Subject: pascal
Date: Thu, 01 Dec 1994 09:26:06
* Citat: Amir Zolic --> Predrag Supurovic
* Tema : pascal
AZ> Resenje je da se koristi direktno pisanje u video memoriju. Tada
AZ> ne dolazi do pomeranja kursora posle ispisa teksta (ovo je uzrok
AZ> 'podizanja' ekrana za jedan red) pa nema nikakvih problema :))
AZ>
AZ> Pozdrav
AZ> Amir
AZ>
AZ> P.S. Mislim da sam pre nekih mesec dana poslao funkcije koje vrse
AZ> pisanje direktno u Video memoriju.
Jeste to je bilo za mene ako nemas taj tekst u nekom fajlu ja mislim
da ga cuvam u nekom fajlu pa ako treb poslacu..
Pretpostavljam da znas asembler..
Cemu sluze nareba POP i PUSH kao i one sto su slicne PUSH-u samo neko
slovo je izmenjeno ..
... BR> Da li je Internet interna ili internacionalna mreza?
* Origin: Venik BBS * Smed. Palanka * +381 26 34808 SetNet: (38:103/126)
pascal.769postmast,
From: bebek@setnet.co.yu (Zeljko Stevanovic)
Subject: pascal
Date: Thu, 01 Dec 1994 09:48:07
* Citat: Nenad Radosavljevic --> All
* Tema : pascal
NR> From: nenadr@sunset.fon.bg.ac.yu (Nenad Radosavljevic)
NR> broker@setnet.co.yu writes:
>
>> Moze li se nekako upisati neki znak u donji desni ugao
>>ekrana a da isti ne 'odskroluje' za jedan red?
>
>Da li ga ispisujes sa WriteLn() ili sa Write()? Ako koristis prvu
>funkciju onda je zameni drugom i resices problem.
>
NR>
NR> Malko teze u ovom slucaju. Naime pascal-ove naredbe za pristup
NR> CRT-u writeln() i write(), prepoznaju kada se nesto upisuje u
NR> poslednji karakter na ekranu (donji desni ugao) i automatski scroll-uju
NR> ekran za jedan red vise (obe naredbe). Jedno od mogucih resenja je da
NR> prestanes da koristis write i writeln, da sa od nekud preuzmes arhivu
NR> TPFAST, sa asemblerski pisanim rutinama za pristup video memoriji kod
NR> SVIH do sada poznatih tipova kartica. Rutine cak podrzavaju i video
NR> pages (kao kod Norton Commander-a - vise screen-ova koji se preklapaju
NR> momentalno) i pravljenje windows-a a imas i gomilu drugih korisnih
NR> rutina (za stringove, matematicke f-je itd. itd.). I sto je (barem
NR> meni) najlepse cela arhiva je srazmerno mala a u sebi sadrzi i
NR> source-ove svega sto je napisano).
Dobro nisam bas bio siguran ... Koristi tu rutinu ili
napravi sam rutinu za direktan upis u memoriju...
Amir mi je objasnio pre neki mesec kako se to radi pa ako hoces to da ti
posaljem...
x
... Da siljnem dve pricice...?
* Origin: Venik BBS * Smed. Palanka * +381 26 34808 SetNet: (38:103/126)
pascal.770postmast,
From: Vasiljevic.Igor@p1.f107.n111.z38.setgate.setnet.co.yu (Vasiljevic Igor)
Subject: CZONE
Date: Thu, 01 Dec 1994 21:47:00
Evo samo da obavestim zainteresirane da kod mene na Takeda Inc.
BBS-u mozete naci igru CZone (za Win.). Igra podseca na ovo o cemu
se ovde vodi prica. Jedino ima malo robota. Ince igra je sharware, pa
ako je neko zainteresiran da je skine nek mi se javi.
Vigor
* Origin: # TĺKţDĺ Inc. # Zrenjanin # $ţTNţT # (38:111/107.1)
pascal.771inesic,
-> #736, uobradovic> Može li neko da mi objasni kako se pravi procedura za P-ROBOTS.
> Šta je CANNON,SCAN,DIR,LOC_X,LOC_Y,RANGE,HEAD....
> Hoću i ja da ga napravim ali moram da znam sta je sta.OK.
Pročitaj probots.doc, ima ga u arhivi.
pascal.772inesic,
-> #730, postmast> Interesuje me ta igra ili vec sta je ??
Skini fajl uz poruku 7.699 u ovoj konferenciji. Ne znam kako se
to radi sa long distance. Ako ni ti ne znaš, pitaj sysAdma.
pascal.773duzle,
Evo ga pascal source programa Infoplus (u dokumentaciji pise da je kao neki
naslednik/klon programa SYSID). Namena mu je identifikacija komponenti
sistema. Pogledajte, ima nekih interesantnih trikova ;).
Pozdrav,
Ognen.
P.S. Sorry ako se ova datoteka vec nalazi u sezamovim konf/dirovima :)
infoplus.arjpascal.774inesic,
-> #769, postmast> ... Da siljnem dve pricice...?
Pošalji, naravno! :)
pascal.775djelovic,
-> #773, duzle> Evo ga pascal source programa Infoplus (u dokumentaciji pise da je kao neki
> naslednik/klon programa SYSID). Namena mu je identifikacija komponenti
> sistema. Pogledajte, ima nekih interesantnih trikova ;).
Hvala na zanimljivom prilogu!
pascal.776postmast,
From: Amir.Zolic@f115.n103.z38.setgate.setnet.co.yu (Amir Zolic)
Subject: pascal
Date: Sat, 03 Dec 1994 22:04:00
-=> Quoting Zeljko Stevanovic to Amir Zolic <=-
AZ> P.S. Mislim da sam pre nekih mesec dana poslao funkcije koje vrse
AZ> pisanje direktno u Video memoriju.
ZS>
ZS> Jeste to je bilo za mene ako nemas taj tekst u nekom fajlu ja mislim
ZS> da ga cuvam u nekom fajlu pa ako treb poslacu..
Ako neko bude trazio, salji. Imas moju pisanu dozvolu :))
Samo treba da dodas
Copyright (c)by Amir Zolic 1994. All rights reserved.
I sve ostalo sto ide uz svaki PD/SW software :)))
ZS> Pretpostavljam da znas asembler..
ZS> Cemu sluze nareba POP i PUSH kao i one sto su slicne PUSH-u samo neko
ZS> slovo je izmenjeno ..
Odgovor na ovo je u NET.PC Prog posto nema puno veze sa Pascal-om.
Pozdrav
Amir
... Postoje tri vrste lazi; laz, prokleta laz i statistika.
* Origin: Atlantis BBS 22-05 tel. 3225-548 ■Belgrade■ (38:103/115)
pascal.777duzle,
Paskal, C i ASM source za pusstanje .mod-ova na SoundBlasteru, Covoxu i (!)
zvucniku :). ModOBJ_1.ZIP.
Pozdrav,
Ogi
modobj_1.zippascal.778ognjen,
-> #747, inesic)-> Neko je ovde pominjao preradivanje programa tako da
)-> radi u grafickom modu. Kako ce to da radi na mom herculesu?
)-> Mislim da je program i bez toga dovoljno spor.
Da li pominjani program radi u tekstualnom modu?
pascal.779postmast,
From: Marko.Milivojevic@p1.f1.n103.z38.setgate.setnet.co.yu (Marko Milivojevic)
Subject: Re: pascal
Date: Sun, 04 Dec 1994 05:19:01
"O> Slusajte pazljivo:
"O> - Kako treba da mi glasi linija pod brojem 2
"O> 1-Startujem neki program iz mog programa
"O> 2-Kad izlazim iz tog nekog programa da se ponovo vrati
"O> u moj program.
Probaj exec funkciju (ili je be{e procedura?)
-=> MM <=-
* Origin: SETNet - Belgrade HUB1 (38:103/1.1)
pascal.780postmast,
From: bebek@setnet.co.yu (Zeljko Stevanovic)
Subject: pascal
Date: Sun, 04 Dec 1994 13:42:11
* Citat: Amir Zolic --> Zeljko Stevanovic
* Tema : pascal
AZ> Copyright (c)by Amir Zolic 1994. All rights reserved.
AZ>
AZ> I sve ostalo sto ide uz svaki PD/SW software :)))
AZ>
Naravno ...
... Zivjeti je vrlo nezdravo. Tko zivi, taj umire.
* Origin: Venik BBS * Smed. Palanka * +381 26 34808 SetNet: (38:103/126)
pascal.781postmast,
From: Robert.Mileski@f108.n108.z38.setgate.setnet.co.yu (Robert Mileski)
Subject: Seriski borj!
Date: Sun, 04 Dec 1994 22:01:00
Zdravo,
Imam jedno pitanje koje je u vezi toga,dali moze Turbo Pascal da procita
seriski broj Hard Diska? Ako je to moguce,molim vas posaljite mi taj program
ovde u SET.PASCAL !
... Everyone has a photographic memory. Some don't have film.
* Origin: Struga BBS +389 96 74074 * Macedonia * SETNet: (38:108/108)
pascal.782postmast,
From: Zoran.Rilak@f125.n103.z38.setgate.setnet.co.yu (Zoran Rilak)
Subject: Re: Konverzija tipova
Date: Mon, 05 Dec 1994 15:42:01
VB> Sta ovde ne valja: ...
VB> var
VB> dd, mm, gg: integer;
VB> datum : longint;
VB> ...
VB> begin
VB> datum := dd + mm*100 + gg*10000
VB> ...
Videh u ovoj konf. poruke na slicnu temu. Problem je u tome sto kompajler
izracunava medjurezultate mm*100 i gg*10000 vodeci racuna ne o tipu lvalue-a,
vec o tipu promenljivih koje figurisu u medjurezultatu. Posto su promenljive mm
i gg intidzeri, a takodje i konstante 100 i 10000, medjurezultati ce biti
smesteni takodje u intidzere, sto dovodi do (logicke) greske rezultata.
Ako ti je potreban (a i jeste ti potreban) dugi intidzer, izvrsi konverziju
tipova "u letu", to jest:
datum := dd + LONGINT (mm) * 100 + LONGINT (gg) * 10000
3OPAH
... Zvrrr... (klik) "Zdravo, Mile, kako... (BIIIIIIIIP) Mile? Sta ti je?"
* Origin: SetNet:Birostroj BBS,NON-STOP,14400bps,011/609945 (38:103/125)
pascal.783postmast,
From: Zoran.Rilak@f125.n103.z38.setgate.setnet.co.yu (Zoran Rilak)
Subject: Re: pascal
Date: Mon, 05 Dec 1994 15:42:02
IN> ...prijavljivao not inaf memori: imam XT sa 640k...
Nisi ni ti jedini. I ja imam XT/8 MHz/640 Kb/32.6 Mb HD/360 Kb FD uf
ostadoh bez daha ali sam imao dovoljno memorije za sve programe/demoe iz
TP6.0. Da li si podesio Link buffer -> Disk i Compile to -> Disk?
P. S. Mene Paskal ne odusevljava, a POGOTOVO ne Turbo Paskal. Ali ako cemo
o tome, bolje da skoknemo do PC.PROG.
3OPAH
... Sueprbrazo kucnje ima svcoje poslefdcie!
* Origin: SetNet:Birostroj BBS,NON-STOP,14400bps,011/609945 (38:103/125)
pascal.784postmast,
From: Zoran.Rilak@f125.n103.z38.setgate.setnet.co.yu (Zoran Rilak)
Subject: Pascal
Date: Mon, 05 Dec 1994 15:42:03
OD> ...ako nekoga interesuje kako da simulira multi-tasking u paskalu...
Vidi, vidi... Pa ovde se pravi operativni sistem! :) Mislio si na multi-
-threading? OK. Samo, za to vam je M2 prava stvar.
3OPAH
... E, izvinite me, ja sada zurim na cas dopunske nastave iz informatike.
* Origin: SetNet:Birostroj BBS,NON-STOP,14400bps,011/609945 (38:103/125)
pascal.785postmast,
From: Zoran.Rilak@f125.n103.z38.setgate.setnet.co.yu (Zoran Rilak)
Subject: M3
Date: Mon, 05 Dec 1994 15:42:04
Neko ovde spomenu Modulu-3? Ja koristim Modulu-2 i odusevljen sam i samim
programskim jezikom i kompajlerom (TopSpeed, razume se ;) ). I ranije sam
cuo za M3, ali tada nisam imao modem... Da li bi neko mogao da mi objasni
(u NET.PCPROG) sustinske razlike izmedju M3 i M2, i da li je M3 produzedak
M2 ili se radi o programskom jeziku potpuno drugacije osnove?
... Brazo kucanje inmad i svoje poslediuce.
* Origin: SetNet:Birostroj BBS,NON-STOP,14400bps,011/609945 (38:103/125)
pascal.786evlad,
-> #781, postmast>> From: Robert.Mileskičf108.n108.z38.setgate.setnet.co.yu (Robert Mileski)
>> Imam jedno pitanje koje je u vezi toga,dali moze Turbo Pascal da procita
>> seriski broj Hard Diska? Ako je to moguce,molim vas posaljite mi taj
>> program ovde u SET.PASCAL !
Uses
Dos;
Const
EBPB : Array of Byte =
(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
Procedure GetSerialNumber (Drv : Byte);
Begin š GetSerialNumber ć
R.AH := $69;
R.AL := 0;
R.BL := Drv;
R.DS := Seg (EBPB);
R.DX := Ofs (EBPB);
MsDos (R);
if (R.Flags AND $01) <> 0 then
Begin
Era := R.AX;
WriteLn;
Case Era of
1 : WriteLn ('NetWork drive not supported !');
5 : WriteLn ('No extended BPB found on disk !');
15 : WriteLn ('Invalid drive specified !');
Else WriteLn ('Dos error: ', Era);
End; š of case ć
Halt (Era)
End
End; š GetSerialNumber ć
posle izvršenja procedure getserialnumber serijski broj se nalazi:
EBPB Š3Ć
EBPB Š4Ć
EBPB Š5Ć
EBPB Š6Ć
Pozdrav ....
PS. Sorry za yuscii code
pascal.787andrejt,
-> #781, postmastQ> seriski broj Hard Diska? Ako je to moguce,molim vas posaljite mi taj
Q> program ovde u SET.PASCAL !
Nema potrebe za programom - to je interrupt.
Evo informacija :
┌───────────────────────────────────────────────────────────────────────────┐
│ INT 21,69 - Get/Set Disk Serial Number (Undocumented DOS 4+) │
│ │
│ AH = 69h │
│ AL = 00 get serial number │
│ = 01 set serial number │
│ BL = drive (0 = default, 1=A:, 2 = B:, ... ) │
│ DS:DX = buffer to contain extended BIOS Parameter Block (BPB, AL=0) │
│ = disk information to set of the form: │
│ │
│ Offset Size Description │
│ 00 word info level (zero) │
│ 02 dword disk serial number (binary) │
│ 06 11bytes volume label or "NO NAME " if not present │
│ 11 8bytes filesystem type string "FAT12 " or "FAT16 " │
│ │
│ returns: │
│ CF = set on error │
│ AX = error code if CF set │
│ = 01 network drive not supported │
│ = 05 no extended BPB found on disk │
│ CF = clear if successful and value in AX is destroyed │
│ AL = 00 buffer filled from Extended BPB on disk │
│ = 01 disk Extended BPB updated from buffer │
│ DS:DX = pointer to returned data, when AL = 0 │
│ │
│ │
│ - copies data from Extended BIOS Parameter Block to buffer │
│ - no critical error is generated on error │
│ - does not work on network drives (returns 01) │
└───────────────────────────────────────────────────────────────────────────┘
Dakle pozivas ga sa MsDos(R); - gde je R promenljiva tipa Registers.
(O msdos proceduri i doticnom tipu mozes pogledati u helpu za TP.)
pascal.788janko,
-> #786, evlad> Begin š GetSerialNumber ć
> EBPB Š6Ć
> PS. Sorry za yuscii code
Vidiš, za razliku od C-a, Paskal su napravili Evropljani, a oni su imali
iste probleme kao i mi. Zato se Paskal i Juski dovoljno slažu da si
mogao to da napišeš tako da ne moraš da se izvinjavaš:
Begin (* GetSerialNumber *)
EBPB (. 6 .)
Tj. umesto uglastih zagrada [ ] se pišu (. .) a umesto vitičastih { }
zagrada se pišu (* *)
I svi srećni.
pascal.789evlad,
-> #788, janko>> Vidiš, za razliku od C-a, Paskal su napravili Evropljani, a oni su imali
nisam prepravljao kod, već je bilo cut & paste iz mojih programa ;)
a i žurio sam da čoveku dam odgovor što pre ...
inače da se nadovežem ... (* je 'starije' od š tako da ako imaš neki
kod sa komentarima pisanim sa šć možeš da lako izbaciti sa (* *), a kada
pokušaš šš ćć turbo pascal 'se buni' ...
NHF!
pascal.790omega,
-> #787, andrejtŢ Nema potrebe za programom - to je interrupt.
Ţ│ INT 21,69 - Get/Set Disk Serial Number (Undocumented DOS 4+) │
^^^^^^^^^^^^^^^^^^^^^^^
I to kakav ;)
pascal.791zeljkoj,
-> #790, omega> Ţ│ INT 21,69 - Get/Set Disk Serial Number (Undocumented DOS
> 4+) │ ^^^^^^^^^^^^^^^^^^^^^^^
> I to kakav ;)
To ne treba koristiti. Lako se može dogoditi da se u nekoj od sledećih
verzija DOS-a nešto promeni, i onda jednostavno stari programi koji
koriste taj int. neće raditi.
pascal.792postmast,
From: avram@setnet.co.yu (Sinisa Avram)
Subject: Re: Exec..
Date: Sat, 10 Dec 1994 03:57:14
RM> Dali neko moze da napise jedan mali primer kako koristiti naredbu
RM> 'exec',ali i objasnjenje jer onaj program u HELP-u Turbo Pascal-a
RM> 6.0,ne radi! :(
Evo ti izvod iz helpa:
Exec (procedure) (Dos unit)
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
Executes a specified program with a specified
command line.
Declaration:
procedure Exec(Path, CmdLine: string);
Target:
Real, Protected
Remarks:
Errors are reported in DosError. When
compiling a program that uses Exec, reduce the
"maximum" heap size; otherwise, there won't be
enough memory (DosError = 8).
Sample Code:
{DOSXCODE.PAS}
{ Example for DosExitCode and Exec }
{$M $4000,0,0 } { 16K stack, no heap }
uses Dos;
var
ProgramName, CmdLine: string;
begin
Write('Program to Exec (full path): ');
ReadLn(ProgramName);
Write('Command line to pass to ',
ProgramName, ': ');
ReadLn(CmdLine);
WriteLn('About to Exec...');
SwapVectors;
Exec(ProgramName, CmdLine);
SwapVectors;
WriteLn('...back from Exec');
if DosError <> 0 then{ Error? }
WriteLn('Dos error #', DosError)
else
WriteLn('Exec successful. ',
'Child process exit code = ',
DosExitCode);
end.
Pozdrav,
Avram.
... If it wasn't for C, we would be using BASI, PASAL and OBOL!
* Origin: Oreska BBS, UZICE = SF BIBLIOTEKA = SETNet: (38:101/101)
pascal.793postmast,
From: Robert.Mileski@p1.f108.n108.z38.setgate.setnet.co.yu (Robert Mileski)
Subject: Exec komanda.
Date: Tue, 06 Dec 1994 23:50:00
Dali neko moze da mi posalje neki mali programcic kao primer za naredbu
'exec',ali da radi u Turbo Pacal-u 6.0! Onaj primer koji je u HELP-u ne radi,a
ne mogu da odgatnem zasto! Btw,nek progrm bude,recimo startovanje
Autoexec.Bat-a ! Molim vas za malo objasnenja!
MileR,
* Origin: SetNet: *** VEGA BBS*** +389-91-225-280 (38:108/108.1)
pascal.794postmast,
From: Robert.Mileski@f108.n108.z38.setgate.setnet.co.yu (Robert Mileski)
Subject: Exec..
Date: Wed, 07 Dec 1994 09:06:00
Dali neko moze da napise jedan mali primer kako koristiti naredbu 'exec',ali i
objasnjenje jer onaj program u HELP-u Turbo Pascal-a 6.0,ne radi! :(
... Real programmers practice safe HEX.
* Origin: Struga BBS +389 96 74074 * Macedonia * SETNet: (38:108/108)
pascal.795janko,
-> #789, evlad> inače da se nadovežem ... (* je 'starije' od š tako da ako
> imaš neki kod sa komentarima pisanim sa šć možeš da lako
> izbaciti sa (* *), a kada pokušaš šš ćć turbo pascal 'se
> buni' ...
Tumačenje ti je pogrešno.
Ni jedno od ta dva nije starije. Ako regularno koristiš (* *) onda ćeš i
tekst koji sadrži (* *) moći da "iskomentarišeš" sa { }.
pascal.796bulaja,
-> #787, andrejt│Nema potrebe za programom - to je interrupt.
│
│INT 21,69 - Get/Set Disk Serial Number (Undocumented DOS 4+)
└───
Nema potrebe ni za ovim, sve se može lepo pročitati iz boot sektora.
pascal.797postmast,
From: bebek@setnet.co.yu (Zeljko Stevanovic)
Subject: Exec komanda.
Date: Fri, 09 Dec 1994 10:23:10
* Citat: Robert Mileski --> All
* Tema : Exec komanda.
RM> Dali neko moze da mi posalje neki mali programcic kao primer za
RM> naredbu 'exec',ali da radi u Turbo Pacal-u 6.0! Onaj primer koji je u
RM> HELP-u ne radi,a ne mogu da odgatnem zasto! Btw,nek progrm bude,recimo
RM> startovanje Autoexec.Bat-a ! Molim vas za malo objasnenja!
RM> MileR,
Evo neceg iz knjige TURBO PASCAL 6 kompletan vodic..
Exec [DOS jedinica]
Sintaksa : Procedure Exec(Path, CmdLine: String);
Opis : Exec izvrsava program sadrzan u datoteci navedenoj putanji
Path sa parametrima linije definisanim u komandnoj liniji CmdLine.
Na primer, u narednim programu:
{$M 2000, 0, 0}
Program TestExec;
Uses Dos;
Begin
Exec ('TESTPROG.EXE', 'A B C');
ReadLn;
Exec ('\COMMAND.COM', '');
End.
Prvi Exec iskaz izvrsava program TESTPROG.EXE sa parametrima
A, B, C. Drugi Exec iskaz aktivira Dos-ov COMMAND.COM bez
parametara; cime se kreira DOS okruzenje u okviru kojeg mozemo
startovati druge programe.
----------------------------------------------------------------------------
Pozdrav,
Blue MAGIC
Blue BeBeK
... IBM-PC - Imbecil Bussines Machine - Permanently Craches
* Origin: Venik BBS * Smed. Palanka * +381 26 34808 SetNet: (38:103/126)
pascal.798andrejt,
-> #791, zeljkojQ> To ne treba koristiti. Lako se moze dogoditi da se u nekoj od sledecih
Q> verzija DOS-a nesto promeni, i onda jednostavno stari programi koji
Q> koriste taj int. nece raditi.
Cisto sumnjam da bi bas toliko izmenili da ne moze da se koristi -
- pre bi ubacili novi, kao sto su radili sa drugim intovima (npr.
terminate int, tsr int itd.).
pascal.799andrejt,
-> #793, postmastQ> Dali neko moze da mi posalje neki mali programcic kao primer za naredbu
Q> 'exec',ali da radi u Turbo Pacal-u 6.0! Onaj primer koji je u HELP-u ne
Q> radi,a ne mogu da odgatnem zasto! Btw,nek progrm bude,recimo startovanje
Q> Autoexec.Bat-a ! Molim vas za malo objasnenja!
Da bi execovao .bat program moras da koristis command.com, 4dos.com
ili sta vec koristis i to :
exec(getenv(comspec) + ' /c',ime_bat + parametri);
pascal.800zeljkoj,
-> #798, andrejt> Cisto sumnjam da bi bas toliko izmenili da ne moze da se
Nikad se ne zna...
pascal.801postmast,
From: Vladimir.Bonc@f101.n101.z38.setgate.setnet.co.yu (Vladimir Bonc)
Subject: Re: Konverzija tipova
Date: Wed, 14 Dec 1994 01:08:54
Zoran Rilak > Vladimir Bonc :
VB> Sta ovde ne valja: ...
VB> var
VB> dd, mm, gg: integer;
VB> datum : longint;
VB> ...
VB> begin
VB> datum := dd + mm*100 + gg*10000
VB> ...
ZR>
ZR> Videh u ovoj konf. poruke na slicnu temu. Problem je u tome sto
Pitanje je poteklo od mene, ako nisi pratio od pocetka, kako TP
resava ovakav problem i naveo sam kako je to reseno kod Kick Pascala
koji sam ranije koristio na Amigi.
ZR> kompajler izracunava medjurezultate mm*100 i gg*10000 vodeci racuna ne
ZR> o tipu lvalue-a, vec o tipu promenljivih koje figurisu u
ZR> medjurezultatu. Posto su promenljive mm i gg intidzeri, a takodje i
ZR> konstante 100 i 10000, medjurezultati ce biti smesteni takodje u
ZR> intidzere, sto dovodi do (logicke) greske rezultata. Ako ti je potreban
ZR> (a i jeste ti potreban) dugi intidzer, izvrsi konverziju tipova "u
ZR> letu", to jest:
ZR> datum := dd + LONGINT (mm) * 100 + LONGINT (gg) * 10000
Probao sam ovo, radi ok.
Resenje je slicno, samo sto je kod KP bilo dovoljno prisiliti jedan
clan (tj. koji se racuna prvi) da bude longint.
... Ateist je stanovnik Atine.
* Origin: Oreska BBS, UZICE = SF BIBLIOTEKA = SETNet: (38:101/101)
pascal.802mmitrovic,
-> #791, zeljkojŮ█▀█Ţ To ne treba koristiti. Lako se može dogoditi da se u nekoj od sledećih
Ů█▀█Ţ verzija DOS-a nešto promeni, i onda jednostavno stari programi koji
Ů█▀█Ţ koriste taj int. neće raditi.
Pa jedina alternativa tome je čitanje BOOT sektora i vađenje serijskog
broja iz njega. Međutim i deo BOOT sektora u kome se nalazi ser. broj je
nedokumentovan i podložan promenama. Van ova dva načina ne može se nikako
otkriti ser. broj. Zato je za očekivati da će Microsoft dokumentovati ovu
funkciju (pre će to učiniti nego što će dokumentovati reserved deo BOOT
sektora) u sledećoj verziji DOS-a (7.0)
pascal.803sbrk,
Da li neko zna nešto o povezivanju TPascala sa C-om preko OBJ fajlova?
Znam da to ranije nije moglo (sa ranijim verzijama TPa), ali skoro čujem od
jednog drugara da je to sada moguće sa Borland Pascalom 7.0 i nekim
Borlandovim Com (mislim da mi je rekao da nije značajna verzija Ca).
Jesi li neko čuo nešto o ovoj mogućnosti? (da Borland Pascal 7.0 ume da
koristi OBJ fajlove koje napravi C kompajler)
pascal.804szeman,
Poznato je da se parametri, koji se prosledjuju programu pisanom u TP,
odvajaju space karakterom, npr.:
PRIMER.EXE Sima 'Pera Petrović'
- paramcount() : 3
- paramstr(0) : C:ĐTP60ĐPRIMERIĐPRIMER.EXE (pun naziv dir-a gde se prog
nalazi)
- paramstr(1) : _Sima_
- paramstr(2) : _'Pera_
- paramstr(3) : _Petrović'_
Kod nekih aplikacija je potrebno precizno navesti ceo string, pa me
zanima gde se u *NEPROMENJENOM* obliku smeštaju parametri koji su prosledjeni
programu, odnosno, celokupna komandna DOS linija posle starovanja programa.
Pozdrav, Saša
pascal.805andrejt,
-> #804, szemanQ> Kod nekih aplikacija je potrebno precizno navesti ceo string, pa me
Q> zanima gde se u *NEPROMENJENOM* obliku smestaju parametri koji su
Q> prosledjeni programu, odnosno, celokupna komandna DOS linija posle
Q> starovanja programa.
Sve sto ide posle imena programa se nalazi na ofsetu 81h PSPa (127 byteova).
PSP dobijas (npr.) sledecom funkcijom :
*
Function GetPSP : Word;
Var R : Registers;
Begin
R.AH := $62;
MsDos(R);
GetPSP := R.BX;
End;
*
A u string[127] mozes da procitas celi parametar string :
*
Const CR = 13;
Var Param : String[127];
PSP,i : Word;
Begin
Param := '';
PSP := GetPSP;
i := $81;
While (Mem[PSP:i] <> CR) Do
Begin
Param := Param + Chr(Mem[PSP:i]);
Inc(i,1);
End;
End.
*
pascal.806omega,
-> #802, mmitrovicŢ otkriti ser. broj. Zato je za ocekivati da ce Microsoft dokumentovati ovu
Ţ funkciju (pre ce to uciniti nego sto ce dokumentovati reserved deo BOOT
Ţ sektora) u sledecoj verziji DOS-a (7.0)
...koja zvanicno nece ni postojati ;)
pascal.807janko,
-> #803, sbrk> Da li neko zna nešto o povezivanju TPascala sa C-om preko
> OBJ fajlova?
>
> Znam da to ranije nije moglo (sa ranijim verzijama TPa),
> ali skoro čujem od jednog drugara da je to sada moguće sa
> Borland Pascalom 7.0 i nekim Borlandovim Com (mislim da mi
> je rekao da nije značajna verzija Ca).
>
> Jesi li neko čuo nešto o ovoj mogućnosti? (da Borland
> Pascal 7.0 ume da koristi OBJ fajlove koje napravi C
> kompajler)
Moglo je od TP 4.0 nadalje, uvek. Ako imate pune instalacije, bacite
malo pogled. TP ume da koristi .OBJ fajlove.
C rutine možete da trpate u TP programe, OBRNUTO je nemoguće jer TP ne
pravi .OBJ-ove od svog koda.
pascal.808vlador,
-> #803, sbrk> Jesi li neko čuo nešto o ovoj mogućnosti? (da Borland Pascal 7.0 ume da
> koristi OBJ fajlove koje napravi C kompajler)
Možda preko DLL fajlova?
---
■ VLADOR ■ Don't pick up that phonž9ôť NO CARRIER
pascal.809szeman,
-> #805, andrejt>> Sve sto ide posle imena programa se nalazi na ofsetu 81h PSPa (127
>> byteova). PSP dobijas (npr.) sledecom funkcijom :
To je ono što mi treba. Tnx.
Pozdrav, Saša
pascal.810postmast,
From: Robert.Mileski@f108.n108.z38.setgate.setnet.co.yu (Robert Mileski)
Subject: Re: Exec..
Date: Thu, 15 Dec 1994 22:39:00
-=> Quoting Sinisa Avram to Robert Mileski <=-
SA> Evo ti izvod iz helpa:
SA>
SA> Exec (procedure) (Dos unit)
SA> ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
Thanks,a dali znass kako mozze da se procita serijski broj diska ?
... If you can't change Yourself, then change the World ***
* Origin: Struga BBS +389 96 74074 * Macedonia * SETNet: (38:108/108)
pascal.811postmast,
From: Robert.Mileski@f108.n108.z38.setgate.setnet.co.yu (Robert Mileski)
Subject: Re: Exec komanda.
Date: Thu, 15 Dec 1994 22:41:01
-=> Quoting Zeljko Stevanovic to Robert Mileski <=-
ZS> Evo neceg iz knjige TURBO PASCAL 6 kompletan vodic..
Hvala ti,uradio sam to.A kako procitati serijski broj diska?
... Documentation - The worst part of programming.
* Origin: Struga BBS +389 96 74074 * Macedonia * SETNet: (38:108/108)
pascal.812srdjanr,
Evo jednog mog, meni zanimljivog, resenja datumskih funkcija
na TURBO PASCAL-u, koje uvazava Gregorijanski kalendar za
sve godine 1..5,000,000 i vise. Mozda ima i boljih resenja,
ali eto, ipak ...
SrdjanR
dates.arjpascal.813sjocic,
Imao bih dva pitanja:
1. Kako u Turbo Pascalu 6, izvesti štampanje datoteke - naime hoću da
posle pitalice štampa d/n, ide direktna štampa fajla. Nije bitno da li da
ide preko dos-ove naredbe ili preko writeln(Lst,fajl).
2. Kako izvesti hot-key, tj. posle pitalice npr. štampa d/n, pritiskom
na 'd' počne štampa bez prethodnog pritiskanja enter tastera.
Unapred hvala na odgovorima.
pascal.814cira,
Poludeh trazeci fajl (mozda i ne postoji) na Sezamu. Radi se o window TPUu
koji je neophodan za rad programa iz RACUNARA 65 (ono o fraktalima). Bio bih
veoma zahvalan da mi neko pokaze put ili doturi taj TPU. Sto hitnije jer
letim sa Sezama 21.12.1994.:(
pascal.815omega,
-> #807, jankoŢ C rutine mozete da trpate u TP programe, OBRNUTO je nemoguce jer TP ne
Ţ pravi .OBJ-ove od svog koda.
Da, ali postojao je bese program tpu->obj.
pascal.816dejanr,
-> #813, sjocic>> 2. Kako izvesti hot-key, tj. posle pitalice npr. štampa d/n, pritiskom
>> na 'd' počne štampa bez prethodnog pritiskanja enter tastera.
Umesto da koristiš readln, stavi na početak uses crt pa onda koristi
readkey, u petlji.
pascal.817evlad,
-> #816, dejanr>> Umesto da koristiš readln, stavi na početak uses crt pa onda koristi
>> readkey, u petlji.
A ako ti readkey vrati #0 tada se radi o funkcijskim tasterima i treba
uraditi još jedan redkey. Da ne bi lutao po literaturi evo ti spisak
funkcijskih i alt-tastera ....
F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12
──┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
Norm│ 59 │ 60 │ 61 │ 62 │ 63 │ 64 │ 65 │ 66 │ 67 │ 68 │ 133 │ 134 │
──┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
Shf │ 84 │ 85 │ 86 │ 87 │ 88 │ 89 │ 90 │ 91 │ 92 │ 93 │ 135 │ 136 │
──┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
Ctrl│ 94 │ 95 │ 96 │ 97 │ 98 │ 99 │ 100 │ 101 │ 102 │ 103 │ 137 │ 138 │
──┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
Alt │ 104 │ 105 │ 106 │ 107 │ 108 │ 109 │ 110 │ 111 │ 112 │ 113 │ 139 │ 140 │
──┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘
Norm Ctrl
─────┼─────┼─────┤ Alternate Alternate Shift-Tab == 15
Ins │ 82 │ - │ Q == 16 Z == 44 Ctrl-č == 3
─────┼─────┼─────┤ W == 17 X == 45
Del │ 83 │ - │ E == 18 C == 46
─────┼─────┼─────┤ R == 19 V == 47
Home │ 71 │ 119 │ T == 20 B == 48
─────┼─────┼─────┤ Y == 21 N == 49
End │ 79 │ 117 │ U == 22 M == 50
─────┼─────┼─────┤ I == 23 1 == 120
PgUp │ 73 │ 132 │ O == 24 2 == 121
─────┼─────┼─────┤ P == 25 3 == 122
PgDn │ 81 │ 118 │ A == 30 4 == 123
─────┼─────┼─────┤ S == 31 5 == 124
Up │ 72 │ - │ D == 32 6 == 125
─────┼─────┼─────┤ F == 33 7 == 126
Down │ 80 │ - │ G == 34 8 == 127
─────┼─────┼─────┤ H == 35 9 == 128
Left │ 75 │ 115 │ J == 36 0 == 129
─────┼─────┼─────┤ K == 37 - == 130
Right│ 77 │ 116 │ L == 38 = == 131
─────┴─────┴─────┘
pascal.818andrejt,
-> #810, postmastQ> Thanks,a dali znass kako mozze da se procita serijski broj diska ?
Pre neku poruku, kad sam ja ovde poslao izvod iz PC Helpa o intu
koji to radi, neko je rekao da je to lepse citati iz BOOTa, pa evo
sada opisa BOOTa :
┌────────────────────────────────────────────────────────────────────────────┐
Boot Sector (since DOS 2.0)
Offset Size Description
00 3bytes jump to executable code
03 8bytes OEM name and version
0B word bytes per sector
0D byte sectors per cluster (allocation unit size)
0E word number of reserved sectors (starting at 0)
10 byte number of FAT's on disk
11 word number of root directory entries (directory size)
13 word number of total sectors (0 if partition > 32Mb)
15 byte media descriptor byte
16 word sectors per FAT
18 word sectors per track (DOS 3.0+)
1A word number of heads (DOS 3.0+)
1C word number of hidden sectors (DOS 3.0+)
20 dword (DOS 4+) number of sectors if offset 13 was 0
24 byte (DOS 4+) physical drive number
25 byte (DOS 4+) reserved
26 byte (DOS 4+) signature byte (29h)
27 dword (DOS 4+) volume serial number
2B 11bytes (DOS 4+) volume label
36 8bytes (DOS 4+) reserved
- implementation format not guaranteed in all OEM DOS releases
- BIOS expects a boot sector of 512 bytes
- DOS 3.2 began reading BIOS Parameter Block (BPB) information from
the boot sector, previous versions used only the media byte in FAT
- DOS 4.x added offsets 20-3Dh and offset 20h determines the number
of sectors if offset 13h is zero
- hard disks have a master boot record and partition boot records;
the master boot record and Disk Partition Table (DPT) share the
same sector
└────────────────────────────────────────────────────────────────────────────┘
pascal.819andrejt,
-> #814, ciraQ> Bio bih veoma zahvalan da mi neko pokaze put ili doturi taj TPU. Sto
Q> hitnije jer letim sa Sezama 21.12.1994.:(
Ako taj neko moze da doturi u conf ili i meni na mail zamolio
bih ga da to i uradi :)
pascal.821mboban,
-> #817, evlad=-= >> Umesto da koristiš readln, stavi na početak uses crt pa onda koristi
=-= >> readkey, u petlji.
=-=
=-= A ako ti readkey vrati #0 tada se radi o funkcijskim tasterima i treba
=-= uraditi još jedan redkey.
Onda probaj preko Port[$60]. Nešto ovako.
Repeat
If Port[$60]=49 then WriteLn('Izabrali ste slovo N')
Else If Port[$60]=32 then WriteLn('Izabrali ste slovo D');
Until Port[$60]=1; (* Dok se ne pritisne taster Esc *)
S tim što bi mogao da ubaciš neke promenljive za proveru da li je ta
vrednost Porta već aktivna da se ne ponavlja isto.
Da ne tupim, evo spisak vrednosti Porta[$60], za sve tastere
(tenks tu Ognjen :)
The keyboard scan codes. The characters above the boxes are the key legends.
The numbers in the boxes are the scan codes. The codes for F1-F10 are 59-68.
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
Esc 1 2 3 4 5 6 7 8 9 0 - = Backsp NumLock ScrLock
┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐ ┌────┐ ┌────┐ ┌───┐
│1 ││2 ││3 ││4 ││5 ││6 ││7 ││8 ││9 ││10││11││12││13│ │ 14 │ │ 69 │ │70 │
└──┘└──┘└──┘└──┘└──┘└──┘└──┘└──┘└──┘└──┘└──┘└──┘└──┘ └────┘ └────┘ └───┘
Tab Q W E R T Y U I O P [ ] Enter Home ^ PgUp -
┌────┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐ ┌────┐ ┌──┐┌──┐┌──┐┌──┐
│ 15 ││16││17││18││19││20││21││22││23││24││25││26││27│ │ 28 │ │71││72││73││74│
└────┘└──┘└──┘└──┘└──┘└──┘└──┘└──┘└──┘└──┘└──┘└──┘└──┘ │ │ └──┘└──┘└──┘└──┘
Ctrl A S D F G H J K L ; ' ` │ │ <- -> +
┌────┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐│ │ ┌──┐┌──┐┌──┐┌──┐
│ 29 ││30││31││32││33││34││35││36││37││38││39││40││41││ │ │75││76││77││ │
└────┘└──┘└──┘└──┘└──┘└──┘└──┘└──┘└──┘└──┘└──┘└──┘└──┘└────┘ └──┘└──┘└──┘│78│
Shift \ Z X C V B N M , . / Shift * End V PgDn│ │
┌────┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌────┐┌──┐┌──┐┌──┐┌──┐│ │
│ 42 ││43││44││45││46││47││48││49││50││51││52││53││ 54 ││55││79││80││81││ │
└────┘└──┘└──┘└──┘└──┘└──┘└──┘└──┘└──┘└──┘└──┘└──┘└────┘└──┘└──┘└──┘└──┘└──┘
Alt Space Bar Caps Lock Ins Del
┌────┐ ┌──────────────────────────────────────────┐ ┌────┐ ┌────┐ ┌────┐
│ 56 │ │ 57 │ │ 58 │ │ 82 │ │ 83 │
└────┘ └──────────────────────────────────────────┘ └────┘ └────┘ └────┘
P.S. Ono <-, ->, ^ i V na numeričkoj tastaturi zamenjuje strelice...
pascal.822evlad,
-> #821, mboban>> Onda probaj preko PortŠ$60Ć. Nešto ovako.
Ok, samo šta u međuvremenu radi PIC 59-ka na portu $20 ???
Ovo je bitno zbog interrupta 9, koji će prepuniti buffer ako čitaš direktno
sa keyboard kontrolera ... ;)
pascal.823postmast,
From: Arpadffy.Zoltan@f107.n111.z38.setgate.setnet.co.yu (Arpadffy Zoltan)
Subject: Re: pascal
Date: Fri, 09 Dec 1994 12:47:43
Quoting by Mamut
■From:"Predrag Knezevic"
■To :All
■Date:23 Oct 94 23:56:00
■Subj:pascal
"K> From: "Predrag Knezevic" <pedjak@sezam.UUCP>
"K> Newsgroups: yu.prog.pascal
"K> Organization: SEZAM Beograd, 011 648-422
> PASCALU a koji treba da radi pod NOVEL MREzOM.
> Radi se o sledecem : prijateljica ide na visu pedagosku i treba da
> sastavi sledeci program:
> 3) Potrebno je da se na svakom terminalu pojavi pitanje tipa :" broj
> grupe ?" nakon unosenja broja grupe treba da se pojave pitanja te
> grupe.
> 4) Takode treba da postoji mogucnost povratka na pitanje "broj
> grupe?" i izlaska iz programa.
"K>
"K> Pa jednostavno, koliko sam shvatio, startujes napisani program na
"K> svakoj stanici... Program pises najnormalnije kao i za go DOS..
"K> jedino ako program treba da vrsi neke zajednicke obrade rezultata
"K> koji se ukucavaju sa raznih stanica, onda se koriste zajednicke
"K> datoteke u koje se upisuju podaci.
To nije resenje. Pravi mrezni program bi bilo da sa jednog terminala
saljes ostalima.
To se moze postici koriscenjem BINDERY baze.
Pristup bazi je netrivijalan i na niskom nivou, ali sa nekoliko
f() je relativno prosto se moze resiti.
Na raspolaganju.. :-) Zoli
... RAM DISK is NOT an installation procedure!
* Origin: Prometheus BBS - The Northern Frontier - SETNET (38:111/107)
pascal.824postmast,
From: Arpadffy.Zoltan@f107.n111.z38.setgate.setnet.co.yu (Arpadffy Zoltan)
Subject: Re: pascal
Date: Fri, 09 Dec 1994 13:04:55
Quoting by Mamut
■From:"Ognen Duzlevski"
■To :All
■Date:20 Nov 94 12:12:00
■Subj:pascal
"D> From: "Ognen Duzlevski" <duzle@sezam.UUCP>
"D> Newsgroups: yu.prog.pascal
"D> Organization: SEZAM Beograd, 011 648-422
"D> Da li neko ima paskal source (ako nema, moze i samo algoritam)
"D> sledecih metoda za resavanje sistema linearnih jednacina:
Ja imam skoro sve probleme resene sa menijem itd.
Meni je to trebalo na trecoj iz numericke...
Rado cu ti pomoci u svemu, ali ti ne zelim resiti problem,
jer to su elementarne stvari ako se bavis programiranjem
i nikad neces nauciti ako samo prepises.
BTW te metode mozes naci u skoro svakoj knjizi iz numericke
matematike.
cu Zoli
... RAM DISK is NOT an installation procedure!
* Origin: Prometheus BBS - The Northern Frontier - SETNET (38:111/107)
pascal.825postmast,
From: avram@setnet.co.yu (Sinisa Avram)
Subject: Seriski broj
Date: Sun, 18 Dec 1994 00:02:01
RM> Thanks,a dali znass kako mozze da se procita serijski broj diska ?
RM>
Ovu funkciju imas u zadnjim Racunarima u Bajtovima licne prirode.
function GetDiskSerNo:string; {vratice 10 bajtova}
var bbb,i :integer;
srno: array[1..20] of char;
srnostr : string[10];
begin
while port[$1F7] = $50 do { wait for controller not busy}
begin end;
port[$1F6] :=$A0; {Get first drive }
port[$1F7] :=$EC; {Get drive info data }
while port[$1F7] = $58 do { wait for data ready}
begin end;
delay(1000);
for i:=1 to 10 do bbb:=portw[$1F0];
for i:=1 to 5 do
begin
bbb:=portw[$1F0];
srno[2*i-1] :=Chr(Mem[Seg(bbb):Ofs(bbb)+1]);
srno[2*i ] :=Chr(Mem[Seg(bbb):Ofs(bbb)]);
end;
Move(srno,srnostr[1],10);
srnostr[0]:=Chr(10);
GetDiskSerNo := SrNoStr;
end;
Pozdrav,
Avram.
... Who's not with us, he's against us. (Julius Ceasar)
* Origin: Oreska BBS, UZICE = SF BIBLIOTEKA = SETNet: (38:101/101)
pascal.826postmast,
From: broker@setnet.co.yu (Predrag Supurovic)
Subject: pascal
Date: Sun, 18 Dec 1994 22:08:00
To: "Sasa Zeman" <szeman@sezam.UUCP>
> Kod nekih aplikacija je potrebno precizno navesti ceo
>string, pa me zanima gde se u *NEPROMENJENOM* obliku smestaju parametri koji
>su prosledjeni programu, odnosno, celokupna komandna DOS linija posle
>starovanja programa.
Ako ti treba da se recimo Pera Peric prosledi kao jedan parametar,
stavi ga pod navodnike, tj. "Pera Peric". DOS sve izmedju navodnika,
bez obzira na SPACE smatra za jedan parametar.
broker
* Origin: Oreska BBS, Uzice = SF BIBLIOTEKA = SETNet: (38:101/101)
pascal.828sjocic,
-> #816, dejanr> Umesto da koristiš readln, stavi na početak uses crt pa onda
> koristi readkey, u petlji.
Ok, to radi fino, ali kako direktno iz programa da stampam text file ?
Probao sam sa imefajla:=imefajla+'lpt1';
Exec('c:\dos\copy','ime fajla') ali nece.
Probah i sa Uses Printer, pa Lst:imefajla, ali ne vredi, odstampa
samo naziv datoteke (napominjem da je imefajla:text).
pascal.829inesic,
Ima jedna DOSova eksterna komanda i zove se print. Divna stvar!
Ti joj, kao parametar, daš ime text fajla, a ona sama printa u
pozadini, vodeći računa o tome da li je printer on-line. Štaviše,
moguće je dati celu listu fajlova, pa će print da ih izbaci jedan
po jedan.
Ono što mene zanima je kako da iz paskal programa printu
prosledim argumente - fajlove za štampu. Da li je to moguće
uraditi pomoću exec naredbe i kako da napišem onu $M kompajlersku
direktivu, da ima memorije i za exec naredbu i za gomilu mojih
procedura, koje su takođe memorijski zahtevne?
pascal.830mboban,
-> #828, sjocic=-= Ok, to radi fino, ali kako direktno iz programa da stampam text file ?
=-= Probah i sa Uses Printer, pa Lst:imefajla, ali ne vredi, odstampa
=-= samo naziv datoteke (napominjem da je imefajla:text).
Ja to radim ovako:
Uses Printer;
Var
f:text;
s:string;
Begin
Assign(f,'fajl.txt');
Reset(f);
While not eof(f) do
Begin
ReadLn(f,s);
WriteLn(lst,s);
End;
End.
Gde je fajl.txt fajl kojeg treba odštampati...
pascal.831evlad,
-> #828, sjocic>> Ok, to radi fino, ali kako direktno iz programa da stampam text file ?
Ako imaš ceo pascal instaliran pogledaj lister.pas koji je sa njim 'došao',
tamo ti je sve lepo objašnjeno !!!
konkretno za tp 7.0 je u ĐtpĐexamplesĐlister.pas
pascal.832dejanr,
-> #828, sjocic>> Ok, to radi fino, ali kako direktno iz programa da stampam text file ?
Najjednostavniji (premda ne baš savršen, kada se radi o slikama) način:
var stampa: text;
assign (stampa, 'lpt1');
rewrite (stampa);
writeln (stampa, "Prvi red");
writeln (stampa, a+b, c+d);
itd
close(stampa);
pascal.833dejanr,
-> #829, inesic>> Ono što mene zanima je kako da iz paskal programa printu
>> prosledim argumente - fajlove za štampu. Da li je to moguće
>> uraditi pomoću exec naredbe i kako da napišem onu $M kompajlersku
>> direktivu, da ima memorije i za exec naredbu i za gomilu mojih
>> procedura, koje su takođe memorijski zahtevne?
Imaš recept za korišćenje EXEC naredbe ovde bar jedno 10 puta u
zadnjih par meseci :), dakle pogledaj starije poruke. Jako ukratko,
staviš {$M 16000,0,0} (ili ne baš 0,0, ako ti programi koriste heap)
i onda sa exec pozoveš command.com i proslediš mu ime komande.
Međutim, PRINT nije dobro pozivati na ovaj način, pošto (pod odgovarajućim
uslovima) ostavlja deo sebe rezidentan u memoriji, što može da napravi haos
(ili bar fragmentiranu memoriju) kada se pozove iz tvog programa. Mnogo je
bolje da sam rešiš štampu, kao što sam opisao u prethodnoj poruci. Ili, ako
baš hoćeš da pozivaš nešto, pozovi COPY /B fajl LPT1.
pascal.834inesic,
-> #833, dejanr> Međutim, PRINT nije dobro pozivati na ovaj način, pošto (pod
> odgovarajućim uslovima) ostavlja deo sebe rezidentan u
> memoriji, što može da napravi haos (ili bar fragmentiranu
> memoriju) kada se pozove iz tvog programa. Mnogo je bolje da
> sam rešiš štampu, kao što sam opisao u prethodnoj poruci. Ili,
> ako baš hoćeš da pozivaš nešto, pozovi COPY /B fajl LPT1.
Ja printa imam skoro uvek instaliranog u memoriji i spreman sam
na kompromis da najpre njega instaliram, pa onda da startujem moj
program. Ne znam kako bih rešio štampu tako da se ona radi u
pozadini, dok moj program čeka neki unos s tastature (ovaj
program koji sam skrpio i onako 90% vremena radi baš to). Imam
dosta za štampu i malo mi je nezgodno da bacam vreme dok unosim
podatke. žini mi se da COPY /B ne ume da radi u pozadini i da će
mi to vreme računar biti mrtav za unos podataka.
pascal.835aleka,
Hi!
Upravo sam naisao na jednu stvar koju ne mogu
da razjasnim,a to je ovo:
FOR X = 0.1 to 1 step 0.1
PRINT X
NEXT X
Izlaz:
.1
.2
.3
.4
.5
.6
.7
.8000001
.9000001
^^^^^
Zbog radi cega su ove nule?
A interesantno je da se to desava samo pri ovom slucaju!
Pozdrav,
Mindza.
P.S.U nadi da ce vasi programerski mozgovi znati da osvetle ovaj slucaj
(Of Course,ako nije restrikcija;))
pascal.836dejanr,
-> #834, inesic>> žini mi se da COPY /B ne ume da radi u pozadini i da će
>> mi to vreme računar biti mrtav za unos podataka.
To je tačno, nisam primetio da ti je potrebna štampa u pozadini. Onda je
možda print najjednostavnije rešenje, ako ga najpre rezidentno instaliraš.
Alternativa bi bila da praviš "svoj print" koji radi pod interaptom, što je
u datoj prilici verovatno nepotrebno usložnjavanje.
pascal.837vitez.koja,
-> #828, sjocic#=> Probao sam sa imefajla:=imefajla+'lpt1';
#=> Exec('c:\dos\copy','ime fajla') ali nece.
#=> Probah i sa Uses Printer, pa Lst:imefajla, ali ne vredi,
#=> odstampa
Probaj sa exec('c:\dos\copy', 'ime_fajla prn'),
ili još bolje:
uses printer;
f: text;
s: string;
while not eof(f) do begin
readln(f, s);
writeln(lst, s);
end;
pascal.838vgenije,
Kako da iz pascala napravim plaikaciju koja ce kontrolisati rad modema
konkretno da na upucen pozziv modem se javi i posle je sve prica ostalog
dela programa?
pascal.839vgenije,
e vidite gde je ovde bag.Ubi se trazeci ga a ono nece da mi pretrazuje preko
opisa robe?
kese.pas