cccc.209nkbog,
-> #207, nkbog>> _asm retf
Umesto _asm za TC treba asm. Ovo bi trebao da prevede i TC sam.
NB.
cccc.210ljupco,
Kada kompajliram sa tcc, koje opcije su znacajnije: one upisane u
fajl turboc.cfg ili one koje zadam u komandnoj liniji (ukoliko se "sudare")?
cccc.211djelovic,
-> #210, ljupco One iz komandne linije.
cccc.212djelovic,
Mučilo me je što u čatu ne vidim šta drugi kori-
snici pišu dok ja otkucavam svoju poruku. Zato sam napra-
vio chatter.exe koji deli ekran na dva dela:
Gornji prozor prikazuje šta se dešava u sistemu,
a u donjem se vrši editovanje linije koja će sledeća biti
poslata. Mogu se koristiti i kursorski tasteri.
Iz programa se izlazi sa ESC.
Usage: chatter <port> Primer: chatter 4
U Telix-u je program najbolje instalirati kao
download protokol, jer se tako najlakše startuje. Čujem
da telemate-u ovako nešto nije potrebno, ali njega izbega-
vam zbog bug-a u ZMODEM-u.
Uz program ide i source. Chantrajte.
cccc.213igor.mil,
Imam problem sa povezivanjem modula pisanih u Turbo C-u i asembleru
Da ne bih mnogo objasnjavao, evo konkretnog primera:
/**** TESTASM.C ***********************************************/
#include <stdio.h>
int asmfunc(int); /* funkcija pisana u asembleru, prihvata
argument po vrednosti i vraca ga
pomnozenog sa 2 */
main()
{
int i;
float f = 2.5; /* ovo dummy promenljiva */
i = asmfunc(4); /* poziv koji vreca rez. 2*4 = 8 */
printf("%d\n", i); /* ova naredba se normalno izvrsi */
printf("%f", f); /* ova naredba daje gresku
(vidi dole u tekstu) */
}
;**** ASMFUNC.ASM *********************************************
dosseg
.model small
.code
_asmfunc proc
push bp
mov bp,sp
mov ax,[bp+4]
add ax,ax
pop bp
ret
_asmfunc endp
public _asmfunc
end
;********************************************************************
Glavni program je preveden sa:
tcc -c -ms -f testasm
Modul ASMFUNC je preveden sa:
tasm /e /mx asmfunc
Povezani su sa:
tlink /c c0s testasm asmfunc,,testasm,cs maths emu
Navedene operacije ne daju nikakve greske ili upozorenja.
Kada se ovako dobijen program izvrsi na ekranu se dobije:
8
printf : floating point formats not linked
Abnormal program termination
Ukratko, ukoliko je neki od modula asemblerski, sve normalno radi dok
ne dodje do prve printf naredbe koja ispisuje vrednost neke
floating-point promenljive kada se dobija navedena run-time greska,
bez obzira na to kakvi su ti asemblerski moduli, odnosno dali pozivaju
emulator fp-a ili ne.
Korisceni softver je: TASM v1.01, TLINK v2.0 i TCC v2.01.
Pozdrav
---Igor
cccc.214braca,
-> #213, igor.mil
Uzmi novi Borland C++ 2.0 :))
Ja sam ga skoro dobio i čisto iz radoznalosti sam probo i sve radi
ok, napominjem da nisam ništa pipnuo osim imena kompajlera (sad se
zove bcc).
Ne znam da li si uradio patch za taj TC, ima nekih bugova koje je
čini mi se Borland sam "ispravio", tj. skoro na svim BBS-ovima ima
patch koji sređuje bugove, a koliko se sećam, ovo je upravo jedan od
njih.
Pozdrav,
Braca
cccc.215ljupco,
Kako da fout (FILE *fout) nekako "usmerim" na ekran (i da li se
ekran naziva stream stdout?), pa da kasnije svi ispisi u programu koji
stampaju u fout u stvari stampaju na ekran?
cccc.216djelovic,
-> #212, djelovic Dobio sa kritiku da chatter ne radi sa 2400 modemima. Ko ima
source neka izbaci comm_setparam (131) - on pravi sranja, a ionako
je nepotreban kada se program poziva iz telix-a (program koristi
LCOMM koji je modifikovan da radi i sa COM3 i COM4). Za one koji
nemaju sve što treba za rekompilaciju, evo nove EXE verzije:
chatter.zipcccc.217igor.mil,
-> #214, braca> skoro na svim BBS-ovima ima
> patch koji sreduje bugove
Gde da ga nadjem?
Pozdrav
---Igor
cccc.218drakce,
-> #216, djelovic
Hvala djelovicu za CHATTER. To je ono sto je falilo Telix-u da postane
najbolji :). Prilazem mali script file kojim mozemo definisati makro
za pozivanje CHAT-a.
Pozdrav od Dragana
chat.zipcccc.219beast,
Dali Turbo c++ ima svoj editor?Ja nikako da ga nadjem :)
cccc.220nkbog,
-> #125, kanda> Kako da fout (FILE *fout) nekako "usmerim" na ekran (i da li se
> ekran naziva stream stdout?), pa da kasnije svi ispisi u programu koji
> stampaju u fout u stvari stampaju na ekran?
Sa:
fout=fopen("CON","w");
"stdout" je standardni "stream" izlaza, a to je CON, ili ono na sta preusmeris
u komandnoj liniji.
NB.
cccc.221ljupco,
-> #215, ljupco fout=stdout
cccc.222nesavic,
Pozdrav svim C-easima,imam jedan problem.
Nabavi sam skoro novi TC i kada otkucam C:\TC on mi javi nesto u stilu
nije pronasao *.TC,e pa lepo.
Ja sad uzmem TCINST pa lepo prepravim sve a ono opet nema *.TC,
startujem ja TCCONFIG i sve lepo on zavrsi i stvori fajl TCCONFIG.TC,i
ja sav srecan ocekujuci da ce sada raditi ponovo startujem TC,a on
opet nema *.TC.
Pomagajte,ortaci,sta da radim.
Pozdrav,NESA!
cccc.223djelovic,
-> #222, nesavic>> Nabavio sam skoro novi TC...
Piratu. Sramoto. Komunisto. :). Ti nam leb uzimaš. Sada ćemo svi
da te bojkotujemo i ti ćeš da se mučiš sa tim TC-om. :)
cccc.225djelovic,
-> #224, nesavic Sorry. Počinjem sve više da ličim na svoju majku :). U meniju
Options/Directories unesi gde ti se nalaze fajlovi, a zatim snimi
konfiguraciju.
cccc.226ljupco,
Postoji li nacin da pre nego sto izadjem iz turbo dibagera snimim sve
prekidne tocke i promenjive koje pratim, da ne bih morao sledeci put kad
udjem u td da sve opet rucno postavljam.
cccc.227ivujanic,
-> #226, ljupco> Postoji li nacin da pre nego sto izadjem iz turbo dibagera snimim sve
>prekidne tocke i promenjive koje pratim, da ne bih morao sledeci put kad
>udjem u td da sve opet rucno postavljam.
Ne stigoh celo uputstvo da pročitam (ispiti..), ali ta stvar
je i mene mučila i mogu ti reći da, po svemu sudeći, ne može.
Ljudi iz Borlanda su za tu svrhu namenili nešto drugo:
Execution History & Keystroke Recording
Turbo Debugger has a special feature called the execution history
that keeps track of each instruction as it is executed (provided you
are tracking into the code), adn also, if you want, recordes the
keystrokes you intpu to get to a given point in your program.
...
The execution history only keeps track of instructions that have
been executed with the Trace Into (F7) or the Instruction Trace command
(Alt-F7). It also tracks for Step Over, as long as you donžt encounter
one of the instruction listed on page 89. As soon as you use the Run
command or execute an interrupt, the execution history is deleted.
(To već znaš, tako u stvari funkcioniše bactracking)
The Keystroke Recording pane
... you can quickly execute back to a given point in your program,
if you have keystroke recording enabled.
Keystroke recording works in conjuction with the reverse program
execution capability to give you different ways of recovering to a
previous point in your debbuging session. It keeps a record of all the
keys that you press, both when youžre issuing commands to Turbo Debbuger
and when youžre interacting with the program you are debbuging. The
keystrokes are recorded ina file named progname.TDK, where progname is the
name of the program you are debbuging.
Use the bottom pane of the Execution History window to reply keystrokes
and recover to a previos point in your session.
...
The -k command-line option enables keystroke recording. You can also
use TDINST to set the default to On.
Eto toliko! Ako ti tlika kompleksnost ne treba, uvek ostaje ono
neelegantno petljanje sa Macro-ima, koji rade na vrlo sličan način kao
i Keystroke Recording.
Ivica
cccc.228ppekovic,
Mali bug u MSC 6.0 compiler-u.
==========================
microsoft/msc #4469, from blaszczak, 677 chars, Sun Jun 9 08:51:47 1991
--------------------------
TITLE: Compiler Bug
I found a bug in the Microsoft C compiler. You have these files
in your directory:
MYFILE.C
MYFILE.OBJ
and you have MYFILE.OBJ write-protected. If you go in and change
MYFILE.C, and then recompile it, the compiler will not be able to
open MYFILE.OBJ to overwrite the old version and compile the new
version.
The problem is that the compiler makes an error message about the
temporary directory being out of space, rather than not being able to
open the object file.
Not likely to bite you, but you're also not likely to see "compiler
out of temporary space" and think "Oh, I must have left my old .OBJ
file write-protected".
.B ekiM
Paya
cccc.229ljupco,
-> #227, ivujanicHvala ti!
cccc.230nesavic,
Hello World,
Problem : TC 2.00
Resenje : Neka mi se javi neko ko ima sve odgov. .H datoteke i neka mi
objasni ovu gresku koja se javlja i kod najprostijeg programa.
Invalid Obj record in C0S.OBJ
Unapred zahvalan,NeSa!
cccc.231igor.mil,
-> #230, nesavic> Problem : TC 2.00
> Neka mi se javi neko ko ima sve odgov. .H datoteke
imam ih.
> Invalid Obj record in C0S.OBJ
daj malo vise podataka, na primer, dali se desava u radu sa integrated env.
ili iz komandne linije i.t.d.
pozdrav
---igor
cccc.232jtitov,
Ako bi neko bio ljubazan da ovaj program iz Rxx prevede i vrati ga u exe (com)
obliku. Nemam C compiler, a program mi se čini korisnim.
cal.ccccc.233igor.mil,
-> #232, jtitov═> Ako bi neko bio ljubazan da ovaj program iz Rxx prevede i vrati ga u exe
(com)
> obliku.
Izvoli
pozdrav
---igor
cal_exe.zipcccc.234alexa,
-> #230, nesavic > Invalid Obj record in C0S.OBJ
Verovatno ti ne valja linker (tj. koristiš neku bajatu verziju).
Druga mogućnost je da ti ne valja C0S.OBJ :)
cccc.235jtitov,
-> #233, igor.mil> igor.mil, 15.06.Sub 16:53, 160 chr
> Odgovor na 6.232, jtitov, 15.06.Sub 15:18
>Izvoli
Igore, tvoj sam dužnik. HVALA!
Pozdrav, Jura.
cccc.236nesavic,
-> #234, alexa Ma valja sve,rekao sam Invalid OBJ record...
I to kaze i kod najjednostavnijeg programa...
NeSa!
cccc.237igor.mil,
-> #236, nesavic> Ma valja sve,rekao sam Invalid OBJ record...
> I to kaze i kod najjednostavnijeg programa...
Pre svega, ukoliko na ovakav nacin iznosis svoj problem, ne treba da
ocekujes da ce neko biti u stanju da ti pomogne, s obzrom da jednostavo
nemamo nikakvih podataka.
Medjutim, posto sam ja covek dobre volje, evo pokusaj sa mojim
C0S.OBJ.
pozdrav
---igor
c0s.objcccc.238alexa,
-> #236, nesavic > Ma valja sve,rekao sam Invalid OBJ record...
> I to kaze i kod najjednostavnijeg programa...
Stariji DOS linkeri upravo ovo kažu za objektne module - proizvode
novijih Microsoftovih kompajlera. Razlog je u tome što su uvedeni
novi tipovi zapisa u objektnom modulu. Zato ipak nije bez veze moja
pretpostavka.
Pošto tvoj linker ima problema sa nekim modulom koji se UVEK linkuje,
nije ni čudo što dobijaš tu poruku za svaki program. Naravno,
postoji mogućnost i da je taj objektni modul stvarno oštećen.
cccc.239nesavic,
-> #237, igor.mil Hvala,probacu sada!
cccc.240nesavic,
-> #237, igor.mil Probao sam i tropa...
Nece ni sa tvojim,tj javlja gresku Linkera,a zatim se izgubio i
poceo da trazi GRAPHICS.LIB,
ma dileja,poludeo totalno....
Moracu izgleda da uzmem ponovo sve...
Ipak hvala,NeSa!
cccc.241ljupco,
Dali je moguce komunikaciju sa nekom (odredjenom) datotekom
preusmeriti da ide preko neke korisnicke rutine (uslovno receno drajver za tu
datoteku)? Ne znam dali sam jasan, ali recimo zelim da uvek kad nesto zeli da
uradi (cita/upisuje od/u) sa nekom datotekom, pre nego sto uradi to, skoci na
neku moju rutinu?
Mislim da je na turbo pascalu moguce legalno instalirati
svoj drajver za ekran (svi writeln-ovi da idu preko njega - napis "Sedam
prljavih trikova" (ZZ), pointer na drajver za ekran Usroutptr). Treba mi
nesto takvo, ali za datoteke.
cccc.242djelovic,
-> #241, ljupco Možeš da zameniš neki DOS-ov interrupt koji radi to što ti treba
svojom rutinom. Ako ne znaš kako, piši. Takođe, budi malo precizniji
što se tiče toga šta sa datotekom tačno želiš da radiš, tj., koje
rutine ćeš koristiti za komunikaciju sa dat.
cccc.243ljupco,
-> #242, djelovic> Takode, budi malo precizniji
> sto se tice toga sta sa datotekom tacno zelis da radis, tj.,
Zelim da kada program X otvori datoteku pod imenom IME, program Y
koji je rezidentan svu komunikaciju (citanje, zapisivanje, ispitivanje
statusa eof) programa X recimo preusmeri u RAM - o tome prog X pojma nema i
sto se njega tice upisuje/cita na disk a ne u RAM. Ali samo datoteka IME ide
u RAM - ostale datoteke prog Y ne dira.
> koje
> rutine ces koristiti za komunikaciju sa dat.
Hteo bih da koristim rutine koje operisu sa pointerom na datoteku
FILE * , fopen, fprintf, fscanf, fclose i t.d.
cccc.244zzivotic,
-> #243, ljupco>> Zelim da kada program X otvori datoteku pod imenom IME, program Y
>> koji je rezidentan svu komunikaciju (citanje, zapisivanje, ispitivanje
>> statusa eof) programa X recimo preusmeri u RAM - o tome prog X pojma nema i
>> sto se njega tice upisuje/cita na disk a ne u RAM. Ali samo datoteka IME ide
>> u RAM - ostale datoteke prog Y ne dira.
Ono što je i dalje malo nejasno iz tvog pitanja je da li to treba da bude
potpuno nezavisan program TSR tipa koji treba da radi ispod bilo kog drugog
programa? Ako je tako, onda je problem rešiv ali sa nešto napora.
Radi se o tome da bi trebalo preuzeti glavni DOS interapt 0x21 i dopisati
kod koji kontroliše nekoliko funkcija - open/create/read/write/close. Ako treba
da radi baš sa bilo kojim programom onda bi trebalo izmeniti ne samo funkcije
bazirane na handle mehanizmu već i one starije FCB tipa. Takođe bi trebalo
presresti i IOCTL funkciju zbog nekih njenih usluga koje mnogi programi koriste
(pre svega da ispitaju tip uređaja na kome je datoteka - disk ili je character
device u pitanju). Sve ovo ipak deluje malo 'sumnjivo' za realizaciju.
Ono što me u stvari buni u tvom pitanju je analogija koji su pomenuo sa
TP-om. Iz nje bi se moglo zaključiti da trebi treba zapravo modul koji možeš
ulinkovati sa *svojim* programom tako da ostatak programa može biti nezavisan
od njega a da se modul aktivira na specijalno ime datoteke. Ako je ovo tačno,
problem je rešiv daleko lakše.
Pozdrav, zz
cccc.245djelovic,
-> #244, zzivotic Možda bi trebao da pogledaš C++, čiji tokovi (streams, manje-više
isto što i FILE) mogu da budu i u memoriji. Ako je to ono što ti
treba???
cccc.246ljupco,
-> #244, zzivotic> Ono sto me u stvari buni u tvom pitanju je analogija koji su pomenuo sa
> TP-om. Iz nje bi se moglo zakljuciti da trebi treba zapravo modul koji mozes
> ulinkovati sa *svojim* programom tako da ostatak programa moze biti nezavisan
> od njega a da se modul aktivira na specijalno ime datoteke. Ako je ovo tacno,
> problem je resiv daleko lakse.
Da, tacno tako - modul koji se ulinkuje sa glavnim programom i koji
se aktivira na specijalno ime datoteke.
cccc.247djelovic,
-> #246, ljupco Napravi u jednom fajlu tvoje rutine tipa:
FILE *myopen (char *name, char *atr);
char fgetc (FILE *fi)č
.
.
.
koje će da opšte sa memorijom. Onda u heder datoteku (.h) koju ćeš
*uvek* uključivati poslednju staviš nešto kao:
#define open(s,l) (strcmp (s, SPECNAME) ? open (s, l) : myopen (s, l)
itd. Ne znam da li ovakav #define radi (open u def i u impl.), ali
ako radi, onda bi trebalo da završi posao. Ipak ti preporučujem da
pređeš na C++ jer on ima "legalne" mehanizme za ovo.
p.s. fali zagrada u define
cccc.248djelovic,
-> #247, djelovic u prethodnoj poruci treba da stoji mygetc (FILE *fi);. on-line :(
cccc.249zonjic,
Na koji nacin se moze ostvariti (konverzioni karakter ili...?) da mi scanf
vrati vrednost 0 kada ne unesem ni jedan broj?
Unose se int-ovi... Uslov mi izgleda ovako i hteo bih izlazak iz petlje kada se
samo <enter> otkuca : while(scanf("%d", &x)!=0) {...
Probao sam sa while("%[^\n]d....... ali to vraca kodove karaktera (│49, 50.....
cccc.250igor.mil,
-> #249, zonjic
> Na koji nacin se moze ostvariti (konverzioni karakter ili...?) da mi scanf
> vrati vrednost 0 kada ne unesem ni jedan broj?
> Uslov mi izgleda ovako i hteo bih izlazak iz petlje kada se
> samo <enter> otkuca : while(scanf("%d", &x)!=0) {...
Funkcije scanf vraca broj promenljivih za koje je uspesno izvrseno
ucitavanje i konverzija. Znaci 0 ce vratiti samo ako dodje do
greske u ucitavanju prvog argumenta.
Posto scanf ignorise white space, u koje spada i '\n' karakter, to
sto ti zelis nije moguce izvesti na taj nacin.
Ja sam za slican problem upotrebio sledece resenje:
/*==== pocetak listinga ===============================*/
...
int x;
char xstring[MAXDIGITS];
...
/* ovde pocinje tvoja while petlja */
while (1)
{
/* format %[^\n] znaci da je '\n' TERMINATOR ulaznog stringa */
fflush(stdin);
scanf ("%[^\n]", xstring);
if(xstring[0]=='\0') break;
x = atoi(xstring);
...
}
...
/*==== kraj listinga ===============================*/
Poziv funkcije fflush je, bar u mom programu, i sa Turbo C
kompajlerom bio neophodan, do cega sam dosao metodom pipanja, i
nemam jasnu predstavo zabog cega. Bez njega je scanf ucitavao samo
pri prvom prolazu kroz petlju (?!). Moduce da je to zbog toga sto
sam nize u petlji koristio getche funkciju, pa je ona nekoga
zbunjivala. Probaj bez fflush, mozda ce da radi.
Treba obratiti paznju na to da ce atoi(xstring) vratiti 0 i
ukoliko 'xstring' ne predstavlja broj. Ako je potrebna kontrola
ulaza, treba umesto poziva atoi funkcije staviti:
if(sscanf(xstring, "%d", &x)==0) input_error();
Pozdrav
---igor
cccc.251mmihajlovic,
-> #250, igor.mil-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
> Poziv funkcije fflush je, bar u mom programu, i sa Turbo C
> kompajlerom bio neophodan, do cega sam dosao metodom pipanja, i
> nemam jasnu predstavo zabog cega. Bez njega je scanf ucitavao samo
> pri prvom prolazu kroz petlju (?!). Moduce da je to zbog toga sto
> sam nize u petlji koristio getche funkciju, pa je ona nekoga
> zbunjivala. Probaj bez fflush, mozda ce da radi.
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Funkcija scanf() je prilicno neprijatna i razlicito se ponasa
zavisno od implementacije (kompajlera). Ako imamo sledecu
komandu:
scanf("%d", &number);
otkucamo li neki broj i <Enter> scanf ce nas broj dodeliti
promenljivoj number ali ce ostaviti newline karakter u baferu.
Ovo se moze prevazici na nekim sistemima ako eksplicitno zadamo
citanje newline karaktera:
scanf("%d\n", &number);
ali na MSDOS-u ovo ne radi, bar ne sa kompajlerima sa kojima ja
imam iskustava (MS, TC, TS, ZT, HC). Buduci da je u navedenom
delu programa:
scanf ("%[^\n]", xstring);
eksplicitno zadato citanje stringa DO newline karaktera, koji je u
drugom prolazu prvi karakter u baferu stdin, fflush() je neophodan.
U svakom slucaju, funkciju scanf() treba izbegavati koliko god je
moguce jer je ona jedna od najvecih funkcija run-time biblioteke i
nepotrebno povecava (usporava) program. Navedeni primer je daleko
bolje uraditi koristenjem gets() i atoi() funkcija:
/*==== pocetak listinga ===============================*/
int x;
char xstring[MAXDIGITS]; /* Ne zaboravi prostor za '\0' na kraju */
/* ovde pocinje tvoja while petlja */
while (1)
{
gets (xstring);
if(xstring[0]=='\0') break;
x = atoi(xstring);
...
}
/*==== kraj listinga ===============================*/
MM
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
E
cccc.252docke,
Ima li neko bilo kakvih iskustava sa Zortech C++ om.Šta može .kolko vredi ,
neko poređenje sa Borlandovim C++ i sl.
Bilo šta da ste čuli napišite ,jer prema nekim napisima u inostranstvu (čittaj
reklamama) izgleda da je na našim prostorima ovaj ptoizvod neopravdano
zapostavljen.
Pozdrav Docke
P.S. nije ptoizvod nego proizvod
cccc.253djelovic,
Imam AWK 3.00. Da li to nekoga zanima, jer ne bi da ga šaljem bez
veze. Inače, stvar je strašna!
cccc.254igor.mil,
-> #253, djelovic
> Imam AWK 3.00. Da li to nekoga zanima, jer ne bi da ga saljem bez
> veze.
Ako je za neki MS-DOS compiler (preferably Turbo C), salji obavezno!
pozdrav
---igor
cccc.255djelovic,
-> #254, igor.mil Nemam source, već preveden program. Pošto smatram da program
zaslužuje da se nađe u PCSOFT, nalepiću ga uz ovu poruku.
Inače, što se tiče teme o piratstvu, mislim da je moderator bio u
pravu što je uklonio fajl koji bi *možda* (mada je malo verovatno,
ali treba imati princip) mogao da donese neprilike SEZAM-u. Ipak se
slažem da je većina ljudi hipokritski (da li se tako kaže?? :) )
nastrojena po tom pitanju. Ko je poslao lovu za sav shareware koji
ima? Ko je ikada poslao donaciju autoru PD programa? Budimo realni,
čovek plaća samo ono što mora (svaka čast izuzecima)? Primer sa
knjigama i video kasetama je sasvim u redu.
awk300.zipcccc.256maleksic,
Hej!
Da li netko zna: da li postoji translator sa FORTRAN77 sourca
na ANSI C source, a da radi na PC-ju, naravno ??
Drugim rijecima: treba mi program koji za ulazne podatke ima
standardni FORTRAN77 source fajl, a posle obrade da se dobije
odgovarajuci source na ANSI C-u?
cccc.257djelovic,
-> #256, maleksic Ne znam za FORTRAN, ali znam da ima za basic, pa ako te zanima,
daću ti adresu. Ako nabaviš ovo za fortran, *obavezno* javi, i meni
treba.
cccc.258mmihajlovic,
-> #256, maleksic-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
> Da li netko zna: da li postoji translator sa FORTRAN77 sourca
> na ANSI C source, a da radi na PC-ju, naravno ??
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Naravno! Postoje bar dva vrlo dobra.
PROMULA.FORTRAN ($495) FOR_C oko($600)
PROMULA Developement Corporation COBALT BLUE Co.
3620 N. High St. Suite 301 2940 Union Ave, Suite C
Columbus, Ohio 43214 San Hose, California 95124
tel (614)263-5454 tel (408)723-0474
fax (408)377-7648
Oba su (barem prema prikazima) izvrsna mada licno mislim da
je PROMULA bolji izbor zbog sledeceg: Uz njega dobijate
run-time lib. sa oko 150 funkcija za rad sa memorijom,
posto je primarna namena ovog translatora da omoguci rad
velikih FORTRAN aplikacija na 640K DOS-u. Npr.
DIMENSION A(10000,20),B(10000,20)
bukvalno preveden (sto FOR_C i radi) bi dao:
static float a[20][10000], b[20][10000];
Pod DOS-om je ovo neupotrebljio. E, ovde PROMULA omogucava
da se sve varijable koje su vece od neke zadate vrednosti
tretiraju kao virtualne i njihovo referenciranje povlaci
disk I/O (obzirom da je skoro izasla verzija 3.0 za
pretpostaviti je da sad tu ima koristenja EMS, XMS itd).
Pomocu ovog programa je nekakav model za distribuciju
elektricne energije u nisko naponskoj mrezi spusten sa IBM
mainframe-a gde je uzimao 3M core memorije na obican PC pod
DOS-om, i davao identicne rezultate (bar prema prikazu
proizvodjaca). Dalje, FORTRANSKA COMMON naredba, posebno
ako je vezana sa EQUIVALENCE je izrazito neprijatna za
prevod na C. PROMULA ovde nudi cak cetiri varijante
prevoda, zavisno sta se desava sa COMMON blokom. FOR_C
tretira COMMON blok uvek kao lokalni pointer na strukturu.
Da se razumemo, ja NEMAM ni jedan od ovih translatora, ali
imam gomilu prikaza i reklamnih materijala za oba. Prilicno
je jednodusna ocena da je PROMULA.FORTRAN bolji. Sa druge
strane COBALT BLUE ima FOR_C++ i FOR_STRUCT. Za prvi je
jasno sta je, dok drugi od vaseg spageti FORTRANSKOG
programa (a vecina ih je takva) pravi potpuno struktuirani
kod.
Ako bilo ko ima ove programe, OBAVEZNO neka mi se javi
buduci da sam VRLO zainteresovan za tako nesto. Cak sam
zainteresovan za, eventualnu zajednicku kupovinu uz podelu
troskova, jer svaka investicija u software od preko $400 u
nasim uslovima mi se cini suludom. Kod Prog. paradisea se
moze naci i za ispod $400.
MM
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
cccc.259maleksic,
-> #257, djelovic>> ...ali znam da ima za basic ..
Na zalost, treba mi bas za FORTRAN
cccc.260maleksic,
-> #258, mmihajlovic>> > Da li netko zna: da li postoji translator sa FORTRAN77 sourca
>> > na ANSI C source, a da radi na PC-ju, naravno ??
>> Naravno! Postoje bar dva vrlo dobra.
>>
>> PROMULA.FORTRAN ($495) FOR_C oko($600)
Meni je vazno da proizvedeni C source bude sto standardniji (strogo
po ANSI-ju) da bi bio portabilan na razne sisteme. Podrska raznim
FORTRAN-skim prosirenjima (do while, end do, ...i raznim drugim
prosirenjima koja se stidljivo najavljuju za novi standard FORTRANA)
takodje je dobrodosla. Naravno, podrazumeva se da je obavezno podrzan
kompletan standardni FORTRAN77.
Koji je translator bolji ako se ovo sve uzme u obzir?
cccc.261mmihajlovic,
-> #260, maleksic> Meni je vazno da proizvedeni C source bude sto standardniji (strogo
> po ANSI-ju) da bi bio portabilan na razne sisteme. Podrska raznim
> FORTRAN-skim prosirenjima (do while, end do, ...i raznim drugim
> prosirenjima koja se stidljivo najavljuju za novi standard FORTRANA)
I jedan i drugi imaju mogucnost da izvrse translaciju u cist C.
U kojoj meri je on ANSI (a u kojoj K&R) nisam uspeo da iskopam.
U svakom slucaju ja bih uvek pre uzeo PROMULA.FORTRAN posebno
zbog egzibicija sa COMMON blokovima (ko nije rucno prebacivao
C u FORTRAN ne zna koje su to muke) a i zbog cene. Uz to PROMULA
(nova verzija) nudi mogucnost rada sa gotovo svim dijalektima
FORTRAN-a.
MM
P.S. Vec su polako poceli da se javljaju interesenti
za zajednicku kupovinu.
cccc.262mmihajlovic,
Prvo moram da se izvinim zbog nekih netacnosti u porukama 6.258 6.261.
Cena PROMULA.FORTRAN-a za PC je neverovatnih $995 ! :((((
razgovarao sam sa vlasnikom i on tvrdi da sada (verzija 3.0)prevodi
100% bilo koji FORTRAN dijalekat u cist ANSI C (i ovo sam saznao).
Za te pare se dobija izvorni kod za run-time lib. sada pitanje odnosa
cena/pouzdanost (ili procennat dobrog prevodjenja) ostaje otvoreno.
Cege, izgleda nista od nase kupovine.
MM
cccc.263sgopcevic,
Zdravo,
Sa Sezama sam pruzeo datoteku r064ume.zip u kojoj su dati
programi iz umetka racunara 64 - PROZORI NA C-U
1./
Prilikom kompajliranja programa MENU.C u message prozoru
pojavile su mi se sledece poruke:
Warning:d:\tc\exec\menu.c 556: non-portable pointer
assignement in function directory
Warning:d:\tc\exec\menu.c 755: non-portable pointer
assignement in function ch_dir
i kursor je u editor prozoru u oba slucaja stao na liniju
u kojoj je pisalo:
fblp=0x00ff; /*inicijalizacija pointera */
2./
Posto sam predhodno uspesno kompajlirao datoteku lowfn.c
pokusao sam da formiram biblioteku rac.lst samo od ove datoteke.
Po izvrsenju naredbe:
TLIB d:\tc\lib\rac.lib +d:\tc\exec\lowfn.c, rac.lst
prijavljena mi je greska:
error:record kind, 0x2E found, expected theadr or lheadr
Sta znace ove greske i sta da radim?
Sgopcevic
cccc.264alexa,
-> #263, sgopcevic > Prilikom kompajliranja programa MENU.C u message prozoru
> pojavile su mi se sledece poruke:
>
> Warning:d:ĐtcĐexecĐmenu.c 556: non-portable pointer
> assignement in function directory
> Warning:d:ĐtcĐexecĐmenu.c 755: non-portable pointer
> assignement in function ch_dir
>
> i kursor je u editor prozoru u oba slucaja stao na liniju
> u kojoj je pisalo:
>
> fblp=0x00ff; /*inicijalizacija pointera */
Pa, ovde je kompajler pošteno odradio svoj posao - ovo jeste
neportabilno, ali nemoj mnogo oko toga da se sekiraš.
Portabilno je u okviru PC-ja pod DOS-om.
> TLIB d:ĐtcĐlibĐrac.lib +d:ĐtcĐexecĐlowfn.c, rac.lst
>
> prijavljena mi je greska:
>
> error:record kind, 0x2E found, expected theadr or lheadr
Ja nisam nikad koristio TLIB, ali nešto mi govori da u biblioteku
treba da ubaciš lowfn.obj, a ne lowfn.c :)
cccc.266zonjic,
-> #263, sgopcevicA da nije to SW za MSC a ti pokusao da compilujes TC-om ili obratno?
cccc.267zonjic,
Moze li neko da mi kaze sta ovde (ovdi) ne valja?
DUMMYINT.C
#include <stdio.h>
#include <dos.h>
#define INTR 0x1c
void interrupt (*starivektor)(void);
char *s;
void interrupt novivektor(void)
{
int x, y;
x=wherex();
y=wherey();
gotoxy( 1, 1);
printf("Rade");
gotoxy( x, y);
starivektor();
}
void main()
{
starivektor = getvect(INTR);
setvect(INTR, novivektor);
}
cccc.268zonjic,
-> #267, zonjicVerovatno zbog toga sto se DOS poziva i u printf (kad smo vec u DOS-u).
Nesto manje problema proizvodi funkcija putch(char c), ali kada se izvrsi
program, a zatim zatrazi dir racunar blokira...
Ne znam gde je caka. (da li treba da ostane putch i da li uopste ovo moze da se
lako izvede?)
cccc.269sgopcevic,
-> #264, alexa
>Ja nisam nikada koristio TLIB ali mi nesto govori da u biblioteku treba da
>ubacis lownfn.obj umesto lownfn.c
Primedba je bila OK. Umesto lowfn.c u naredbi TLIB stavio sam lownf.obj i uspeo
sam da formiram biblioteku RAC.LIB.
Medjutim sada mi se pojavio drugi problem.U fazi linkovanja programa dobijam
poruku:
Linking error:undefined symbol '_ime' in modul IME_MODULA
iako su u programu u include naredbi navedene datotke ime.h sa path-om koje
sadrze potrebne funkcije a formirana biblioteka se nalazi u odgovarajucem
direktorijumu c:\tc\lib. Pri formiranju biblioteke drzao sam se upustva iz
umetka u racunarima br 64 -Pozori na c-u od funkcije do biblioteke.
Da mozda ne fali jos nesto u upustvu ?
sgopcevic
cccc.270sgoran,
Konacno !!!
Postao sam vlasnik (registrovani) Borland C++. Svim nevernim Tomama
u inat. Uzgred ako se neko cuje sa Bulajom, kazite mu da je i njegov
paket stigao.
_
Ushiceni pozdrav SGoran.
cccc.271mmilosevic,
-> #200, ljupcoHelp!
Zna li neko kako da setujem mod 0x13 -> ( dec ) 19( 320x200 ,256colors)
u TC 2.00.
u TC 2.00.
U Help-u nema odgovarajuci mod , poludeo saCak sam bio primoran
da radim u MSC 5.1 da bi uradio neki glupigramcic u tom modu.
Ako neko ima resenje, neka napise poruku ili neka posalje na
MMILOSEVIC.
Unapred hvala, MMILOSEVIC
Aleksandar Milosevic
cccc.272mmihajlovic,
Evo moje varijente FileFind-a. U poredjenu sa Nortonivim
FF-om postoje neke minimalne razlike u formatu ispisa i
nacinu zadavanja parametara ali se one mogu prilagoditi
obzirom da je dat izvorni kod. Program je pisan u C-u i
regularno se kompajlira po MSC i TC uz postavljen normalni
warning level. Komentari su dati na engleskom a formatiranje
sourcea je radjeno u 'CLEAR+ for C'. Mozete ga prilagodjavati
po svom ukusu. Pa, srecno.
MM
mff.zipcccc.273mmilosevic,
Imam jedan problem oko TC-a 2.00.
Nedavno sam preuzeo drajver za VGA sa 256 boja,
SVGABGI.ZIP ( valjda u konf. grafika ) .
Instalirao sam ga u svom programu, i neki
moji mali programi su normalno radili ali
sa 256 boja.
E, sad, uzeo sam BGIDEMO.C i tu instalirao
mod 320x200 sa 256 boja. U pocetku je radilo,
ali sto sam ga vise kompajlirao nisam dobijao
INFO tekst na pocetku programa i nisam dobijao
ni linije, nije ni radio putimage i getimage
demo.
Medjutim, nije tu problematika.Problem je u
tome sto u TC-u nema adekvatna rutina za
setovanje paleta.Takva jedina funkcija je
setrgbcolor i setrgbpalette.Ali uvek kada
ga ubacim u program LINKER prijavljuje gresku.
( mislim za setrgbcolor i setrgbpalette ).
Onda sam pokusao da napisem program
u asembleru koji RED,GREEN,BLUE komponentu
pretapa u jednu boju preko interapta 0x10
i on je radio bez problema.
Ali ne lezi vraze, BGI driver ne priznaje
nikakve rutine koje ne koriste njegov drjver.
Na kraju , da vas ne davim, kratko i jasno
treba mi rutina koja ce tri komponente,
RED , GREEN , BLUE pretvoriti u jednu boju.
Sve sam pokusao i nista mi ne ide od ruke.
Unapred HVALA , MMilosevic
Milosevic Aleksandar
cccc.274djelovic,
-> #271, mmilosevic Da ne idem previše opširno, imaš odgovarajući interrupt pod
BIOS-om koji možeš da pozoveš sa int86 (...). Ako se u to ne razumeš,
reci pa ću ja da se ovde rasplinem na par strana. Takođe, ako imaš
vremena, download-uj ona tri fajla sa tekstovima o interruptima, pa
šmekni malo - ima mnogo zanimljivih stvari.
cccc.275mmihajlovic,
Ova (Turbo)C funkcija resetuje racunar (warm boot).
reboot()
{
*(unsigned int far*)0x472=0x1234; /* Za cold boot promeniti 1234
u nesto drugo */
__emit__(0xea,0,0,0xff,0xff); /* Asemblerski kod za jmp FFFF:0000 */
}
MM
cccc.276mmilosevic,
-> #274, djelovicE, djelovicu, nisi morao da Úse ─mucis, nasao sam resenje
jos odavno, sa intr 0x10, funkcija 0x10 i podfunkcija 0x10,
( valjda ide tako , akoÚ se jos secam ).Ono sto sam napisao
su gluposti, ali coveka lako navede na to.Na primer pokusaj umesto
initgraph() da upotrebis intr 0x10, ah=0x00, al=0x13( setuj bilo koji
mod Ę, u ovom sl▀ucaju Šš.─320x200 , 256 boja ).
I u programu ─upotrebi par njegovih funnkicija za crtanje, cirlce...
Startujes program, i truba, javlja gresku, jer nisi isao preko
initgraph() koji setuje DRIVER!
To me je navelo da pomislim da je TC usko ogranicen samo na svoje
funkcije koje su opet nadovezane za drajver.Medjutim, nijeako
, nedavno sam napravio program za prikazivanj GIF slicica, i
obicnih slicica skinuti sa nekimŇü GRABOM.
Eto , to je to, a sto se tice oneÚ rutine preko Úintr 0x10
nemoras da brines takve prljave fore i trikove sam odavno
prevaziso !!!! :))) ( he! he! he ! ).
Ajde dosta sam zabalavio , pozdraqv od MMILOSEVIC-a
Aleksandar Milosevic
cccc.277mjova,
evo jednog zanimljivog pitanja za one koji se ovim bave.
shell-ovanjem nekog programa pomoću funkcije spawn, child proces
obavezno zauzme 64k. ima li možda neko rešenje koje zahteve manje
memorije? nema potrebe da rezerviše ceo segment radi programa od
nekoliko k. ili možda ima?
mislim da se problem može rešiti brljanjem po standardnim
bibliotekama, mada to nije neko rešenje.
----------------(child.c)----------------
#include<process.h>
#include<stdio.h>
main(void) {
printf("vrno je %i", spawnl(P_WAIT, "mi.com", NULL));
}
----------------(child.c)----------------
Type Paragraphs Bytes Owner
---- ---------- ----- -------------
Prog 047B-0528h 2784 047Bh 4DOS 4DOS
Prog 057C-0614h 2448 057Ch ANSI POFF /B50 /Q
Prog 062B-162Ah 64k 062Bh CHILD E:\TC\FUNC\CHILD.COM:\TC\FUNC\MI.COM
Prog 1641-9FFFh 551k 1641h MI E:\TC\FUNC\MI.COM
Extended (AT/286/386) memory. Available: 912k
XMS driver version 02.00 (05.11). HMA exists.
Expanded memory (EMM 4.0) at page frame E000h
3680k total ( 2768k used + 912k free).
vrno je 0
šule
cccc.278djelovic,
-> #277, mjova Reci za šta ti to treba, pa da ga izbegnemo ako možemo. Takođe,
probaj da pročitaš uputstvo za TC++/Izlazak u shell, jer je tu bilo
nešto na tu temu. Znam i da može da se ostavi i manje, samo se ne
sećam kako ide. Još jednom: Zašto?
cccc.279zzivotic,
-> #277, mjova>> shell-ovanjem nekog programa pomoću funkcije spawn, child
>> proces obavezno zauzme 64k. ima li možda neko rešenje
>> koje zahteve manje memorije? nema potrebe da rezerviše
>> ceo segment radi programa od nekoliko k. ili možda ima?
>> mislim da se problem može rešiti brljanjem po standardnim
>> bibliotekama, mada to nije neko rešenje.
O ovome je bilo reči u "R". U startup modulu (CRT0.ASM) je difinisano da
program uvek alocira 64K čak i ako mu treba manje - uglavnom zbog prostora na
near heap-u. Ne znam kako bi se stvar rešila kod COM programa, ali ako
generišeš EXE fajl, možeš da upotrebiš LINK prekidač /CP (CPARMAXALLOC ili tako
nekako) kojim možeš ograničiti taj 'višak'. Nakon:
link child /CP:1;
Program će zahtevati samo jedan pasus više nego što mu je minimalno
neophodno. Ovo se sve odnosi na Microsoft ali pretpostavljam da i TC radi
slično.
Pozdrav, zz
cccc.280bojt,
-> #279, zzivotic>> link child /CP:1;
>> Program će zahtevati samo jedan pasus više nego što mu je
>> minimalno neophodno.
Neće! Pokušaće da stavi samo jedan pasus, i ukoliko je to manje
od broja potrebnih pasusa, usvojiće broj potrebnih pasusa.
Medjutim, ovaj princip se, bar po mom iskustvu, pokazao prilično
nepouzdanim, jer se dešava da program pukne kod otvaranja (više)
fajlova i slično. Po onome koliko sam ja imao prilike da ispitam
taj problem, optimum je staviti 30-50 pasusa više nego što je
programu potrebno. To se ne može postići opcijom /CP kod
linkovanja, već se pomoću EXEHDR pročita koliko je ekstra pasusa
potrebno programu (Extra paragraphs needed), pa na to dodati
30-50 i onda promeniti traženi broj ekstra pasusa (Extra
paragraphs wanted) sa EXEHDR /MAX:n file.exe
Što se tiče opcije /CP, evo šta kaže dokumentacija:
Syntax: /CP[ARMAXALLOC]:number
This option sets the maximum number of 16-byte paragraphs needed
by the program when it is loaded into memory. The field <number>
can contain any integer from 1 to 65,535. This option is valid
only when linking DOS programs.
The operating system uses this value when allocating space for
the
program before loading it. The option is useful when you want to
execute another program from within your program and you need to
reserve space for it.
Without this option, LINK sets the request to 65,535 paragraphs.
This request always fails (it exceeds DOS limits); and the
operating system allocates the largest possible contiguous block
of memory. With the /CP option, you can adjust the allocation to
the specific needs of your program.
If you set <number> to less than the minimum number of
paragraphs
needed by the program, LINK ignores your request and sets the
value equal to whatever the program requires. To free more
memory
for programs compiled in the medium- and large-memory models,
link
with /CP:1. This leaves no space for the near heap.
NOTE: You can use the EXEHDR utility to change the maximum
allocation space after a program has been linked.
cccc.281mjova,
-> #278, djelovic>> Reci za šta ti to treba, pa da ga izbegnemo ako možemo. Takođe,
>> probaj da pročitaš uputstvo za TC++/Izlazak u shell, jer je tu bilo
>> nešto na tu temu. Znam i da može da se ostavi i manje, samo se ne
>> sećam kako ide. Još jednom: Zašto?
Originalno uputstvo nemam, ali imam Complete Reference Turbo C/C++ od
(Herbert Schildt). U toj knjizi nisam našao ništa zanimljivije o tom
problemu.
A što mii to treba? Pa vidi ovako, radim nešto što ima svega nekoliko
kb (oko 5). Takav program nema potrebe da zauzme 64k, naročito ako se
poziva iz nekog programa. Osnovna ideja je da mi treba vrlo krtatak
program u memoriji.
mjova
cccc.283zzivotic,
-> #280, bojt>> Neće! Pokušaće da stavi samo jedan pasus, i ukoliko je to
>> manje od broja potrebnih pasusa, usvojiće broj potrebnih
>> pasusa.
U pravu si, moja greška.
>> Medjutim, ovaj princip se, bar po mom iskustvu, pokazao
>> prilično nepouzdanim, jer se dešava da program pukne kod
>> otvaranja (više) fajlova i slično. Po onome koliko sam ja
>> imao prilike da ispitam taj problem, optimum je staviti
>> 30-50 pasusa više nego što je programu potrebno.
Princip nije nepouzdan - ono što je nepouzdano je kod koji generiše
kompajler (u tvom slučaju fortran?) kada se nađe u situaciji da nema ni bajta
slobodne memorije. Ipak, kod C-a (MS) izgleda da stvari nisu tako čiste -
skineš maxmem i nema više memorije na near heap-u. Pogledaću detaljnije o čemu
se radi...
Pozdrav, zz
cccc.284mjova,
-> #279, zzivotic>> near heap-u. Ne znam kako bi se stvar rešila kod COM programa, ali ako
>> generišeš EXE fajl, možeš da upotrebiš LINK prekidač /CP (CPARMAXALLOC
>> ili tako nekako) kojim možeš ograničiti taj 'višak'. Nakon:
da, program će biti EXE formata jer mi tako više odgovara, ali nisam
baš ubeđen da TLINK ima takav prekidač :(
mjova
cccc.285zzivotic,
-> #284, mjova>> da, program će biti EXE formata jer mi tako više
>> odgovara, ali nisam baš ubeđen da TLINK ima takav
>> prekidač :(
Bez obzira, sa EXEHDR-om možeš naknadno da uradiš na gotovom EXE fajlu isto.
Pozdrav, zz
cccc.286mmihajlovic,
-> #267, zonjic> Moze li neko da mi kaze sta ovde (ovdi) ne valja?
>
> DUMMYINT.C
Priznajem da gledajuci ovaj program od sume nisam video drvece.
Tek kad sam pogledao generisani asemblerski kod postalo je jasno.
Problem je u tome sto interrupt service ne vrsi switch na lokalni
stack, te se ne mogu koristiti lokalne varijable niti pozivi bibliotekama.
MM
cccc.287sgopcevic,
Da li moze neko da mi pomogne?
U fazi linkovanja programa dobijam poruku:
Linking error:undefined symbol '_ime' in modul IME_MODULA
iako su u programu u include naredbi navedena datotka *.h sa path-om koji
sadrzi potrebne funkcije a formirana biblioteka se nalazi u odgovarajucem
direktorijumu c:\tc\lib.
Biblioteku sam formirao na osnovu upustva iz umetka u racunarima br 64 -Prozori
na c-u od funkcije do biblioteke od A. Radovanovica.
Da mozda ne fali nesto u upustvu ?
sgopcevic
cccc.289djelovic,
-> #287, sgopcevic Sumnjam na dve stvari:
1) Nisi ubacio biblioteku u projekat.
2) Preveo si biblioteku iz *.C fajlova a pokušavaš da je koristiš
iz *.CPP fajlova. Ovo ne radi zato što C++ koristi nešto što se zove
name mangling, tj. funkciju look (int x, char *p) prevodi u nešto kao
look_intchp. Ovo možeš izbeći ako koristiš extern "C" direktivu,
šmekni malo *.h fajlove koji dolaze uz kompajler, imaš to u njima.
P.S. Možda nešto zaista fali. Uradi search za to što ne dostaje u
source-u biblioteke.
cccc.290igor.mil,
-> #287, sgopcevic>> Biblioteku sam formirao na osnovu upustva iz umetka u racunarima br
>> 64 -Prozori
>> na c-u od funkcije do biblioteke od A. Radovanovica.
>>
>> Da mozda ne fali nesto u upustvu ?
Rekao bih da si u pravu. Upravo sam pogledao taj umetak i nisam
pronasao da je receno da za svaki program koji koristi funkcije iz
bibloteke RAC.LIB ili bilo koje nestandardne biblioteke, a prevodi se
iz integrisane okoline TC-a, treba formirati odgovarajuci .PRJ fajl.
Na primer, ako se glavni program zove GLAVNI.C, tada treba formirati
fajl GLAVNI.PRJ sa sledecim sadrzajem:
GLAVNI
RAC.LIB
Ovaj fajl se aktivira preko opcije "Project Name" menija "Project",
gde treba upisati "GLAVNI.PRJ".
Sada ce sve lepo da radi, samo treba pritisnuti F9...
Pozdrav od Igora
cccc.291igor.mil,
Pitanje za poznavaoce TC-a:
"Cemu sluzi opcija /E - create extended dictionary programa TLIB?"
Pozdrav od Igora
cccc.292sgopcevic,
-> #290, igor.milIgore hvala. Uspeo sam da formiram exe fajl na osnovu tvoga uputstva
pozdrav od spira
cccc.293nesic,
-> #273, mmilosevic Rešavanje ovog problema sam već jednom objašnjavao
(odgovor na poruku 8.199 u konferenciji PC.SOFT). Ali
niko da sada nije bio ljubazan da mi da odgovor na
pitanje "Da li je pomoću tog BGI drajvera moguće pozvati
neki mod koji nije 300x200x256?". Imam VGA karticu sa 1MB
memorije i valjda bih mogao sebi da priuštim i mod
800x600x256. Kako?
Inače, ja nemam baš taj drajver koji ti spominješ,
već neki VGA256 koji sam pokupio iz neke igre pisane u
Turbo Pascal-u (ili Turbo C-u).
Evo kako ja postavljam paletu u Turbo Pascal-u, a ti
to prepevaj u C.
uses
dos, crt, graph;
type
colortype=record
r,g,b:byte;
end;
vgapalettetype=array[0..255] of colortype;
procedure vgasetallpalette(var p:vgapalettetype);
var
regs:registers;
begin
with regs do
begin
ax:=$1012;
bx:=$0000;
cx:=$0100;
es:=seg(p);
dx:=ofs(p);
end;
intr($10,regs);
end;
{$f+}
function detectvga256:integer;
var
detecteddriver:integer;
suggestedmode:integer;
begin
detectgraph(detecteddriver,suggestedmode);
if (detecteddriver=vga) or (detecteddriver=mcga) then
detectvga256:=grok
else
detectvga256:=grerror;
end;
{$f-}
var
autodetectpointer:pointer;
driver,mode:integer;
errorcode:integer;
colornum:integer;
palette:vgapalettetype;
begin
autodetectpointer:=@detectvga256;
driver:=installuserdriver('vga256',autodetectpointer);
driver:=detect;
mode:=3;
initgraph(driver,mode,'');
errorcode:=graphresult;
if errorcode<>grok then
begin
writeln('Error:',grapherrormsg(errorcode));
halt;
end;
for colornum:=0 to getmaxcolor do
begin
palette[colornum].r:=colornum div 1;
palette[colornum].g:=colornum div 2;
palette[colornum].b:=colornum div 4;
end;
vgasetallpalette(palette);
for colornum:=0 to getmaxcolor do
begin
setcolor(colornum);
line(colornum,0,colornum,getmaxy);
end;
repeat until keypressed;
closegraph;
end.
Pozdrav, Nešić
cccc.294iri.ic,
Pronasao sam u Dr.Dobb's Journal - u prikaz jednog, izgleda, izvrsnog library-a
za user interface ( u C-u) od Al Stevens-a. Library je public domain i dostupan
je na Telepathu i na CompuServe-u ( Library 0, DDJ forum). Zove se DFLATn.ARC
(n oznacava verziju). Probao sam ga pokupiti sa TELEPATH-a (jer je besplatan),
ali ne ide . Losa je komunikacija i na ekranu dobijam samo zvrljotine. Ako neko
zeli doci do ovog library-a, a uspije pristupiti TELPATHU ili ima pristup na
CompuServe bilo bi dobro da ga pokupi i stavi ga na SEZAM ili da mi barem
ostavi poruku, pa da se dogovorimo kako ga mogu dobiti
Broj telepatha je 991 415 364 8315 (1200/2400 N 8 1 )....
Unaprijed hvala na pomoci..... Pozdrav od IRI.IC
cccc.295braca,
-> #294, iri.ic
Eve ga DFLAT3. Stvarno izgleda majstorski!
cccc.296bulaja,
-> #295, bracaDFLAT3 je prebacen u \ibmpc\misc direktorijum.
Hvala na prilogu.
cccc.297iri.ic,
-> #296, bulajaHvala Bulaji i Braci na pomoci !
Kada dobijem i uputstva za DFLAT3, ostaviti cu ih na SEZAMU.
cccc.298braca,
-> #297, iri.ic
Uputstva su nekoliko poslednjih (i budućih) članaka Ala Stivensa u DDJ!
cccc.299rakim,
Kako ugasiti cursor na terminalu (terminfo - unix C)?
rakim
cccc.300zkehler,
-> #294, iri.icVrlo je frustrirajuće kada na izgled odličnu telefonsku vezu
sa USA pokvari brojač impulsa. Glas ide, ali modem preživljava
teške trenutke. Što je vrlo interesantno, izgleda da na američkoj
strani modem ne prima toliko đubreta, jer se BBS-ovi ne bune.
Zoran
cccc.303djelovic,
Viva C! Pre neki dan sam uzeo program iz ATARIST direktorijuma i
prebacio ga na PC-a za 10 min., a program je imao i grafiku. Ex,
kolko mi treba da jedan program prebacim sa 360-ice na PC fortran...
cccc.304ppekovic,
Evo liste i opisa bug-ova MSC-a 6!!!
Paya
c60probs.zipcccc.305djelovic,
Kako se interpretiraju naredbe tipa *c = *c++? (tj. kojim
redosledom?). Da li je ovo definisano standardom ili zavisi od
kompajlera?
cccc.306georgd,
Da li neko koristi cross C za mikroprocesor 8051,
mene bi narocito radovao susret sa nekim ko koristi
implenentaciju C-51 firme Keil GmbH (ili Franklin
Softvare USA).
Pozdrav! GeorgD
cccc.307igor.mil,
-> #305, djelovic> Kako se interpretiraju naredbe tipa *c = *c++?
Ne vidim kakvog bi smisla imala ova naredba, ali po mom misljenju,
redosled akcija je sledeci:
- kopira se sadrzaj memorijske lokacije na koju u kazuje c u lokaciju
na koju ukazuje c (isto kao *c = *c;)
- inkrementira se sadrzaj lokacije na koju ukazuje c.
sve u svemu *c = *c++ je ekvivalentno sa *c++
pozdrav od Igora
cccc.308ivujanic,
Da se ljudi ne bi palili i trošili impulsne na niztovarenje mc20.zip, source-a
C kompajlera, da vas obavestim da tamo do source-a nema ni traga ni glasa. To
je samo demo, dakle već preveden kompajler, .EXE program, i već prevedena
biblioteka. Ako hoćete source, tamo stoji jedna adresa na koju treba da kanete
neki US$ autoru...
E, sysadmi, sram vas bilo! Promenite onaj tekst uz file...
Ivica
cccc.309ppekovic,
-> #308, ivujanic>> Da se ljudi ne bi palili i trošili impulsne na niztovarenje mc20.zip,
>> source-a C kompajlera, da vas obavestim da tamo do source-a nema ni traga
>> ni glasa. To je samo demo, dakle već preveden kompajler, .EXE program, i
>> već prevedena biblioteka. Ako hoćete source, tamo stoji jedna adresa na
>> koju treba da kanete neki US$ autoru...
Sorry 10E2000 puta. Greška je moja. Ni sam neznam koliko me je
ljudi molilo da im nađem negde source za neki C kompajler. Našao sam
na TRICKLE-u ali tamo se uopšte ne pominje da je to samo 'demo' source.
Pošto ovih dana i nemam baš preterano vremena (ispiti) nisam detaljno
pogledao o čemu se radi već sam samo proverio ispravnost arhive,
pokrenuo sve exe-e i com-ove i ustanovio da nema grešaka i pogledao
početka onof text fajla i u njemu, na početku, piše lepo da je unutra
kompletan source i tralalala. Uz to još sam video gomilu .C i .H -ova
i eto... Ko bi sve predvideo.
Izvinjavam se svima još jednom, ali ...
Paya
cccc.310bulaja,
-> #308, ivujanic│Da se ljudi ne bi palili i trosili impulsne na niztovarenje mc20.zip,
│source-a C kompajlera, da vas obavestim da tamo do source-a nema ni traga
│ni glasa. To je samo demo, dakle vec preveden kompajler, .EXE program, i
│vec prevedena biblioteka. Ako hocete source, tamo stoji jedna adresa na
│koju treba da kanete neki US$ autoru...
│
│E, sysadmi, sram vas bilo! Promenite onaj tekst uz file...
└───
Ne da ce biti promenjen text uz file nego se file (najverovatnije) biti
obrisan. Ali cu zato verovatno staviti Small C u direktorijum (nisam
gledao da li je onaj u orci kompletan, ali svejedno cu nabaviti ceo).
cccc.311todorp,
Hi!
Da li neko zna kako se poziva interrupt iz C-a (turbo C-a)?
Pozdrav od Todora.
cccc.312djelovic,
-> #311, todorp Imaš više f-ja za pozivanje interrupta, sve počinju sa int, pa
potraži u helpu TC-a. Npr int86x...
cccc.313vasiljevic,
Zna li neko neki dobar nacin za pribavljanje neke literature ili bilo cega u
vezi sa grafikom u C-u>
Marko (the asker)
cccc.314alexa,
-> #307, igor.milRadi se o naredbi (izrazu)
*c = *c++
> - inkrementira se sadrzaj lokacije na koju ukazuje c.
E pa neće biti - ni na jednom C-u na koji sam naišao nije se
inkrementirao sadržaj lokacije, nego se inkrementirao c.
Ubeđen sam da je ovo 'zakucano' u listi prioriteta (++ pre
* dereferencing-a), samo mi se ne da da sada kopam po knjigama.
Upravo zato i originalno pitanje - da li će se inkrementiranje
izvršiti pre ili posle dodeljivanja.
Mislim da će se uvek prvo izračunati desna strana, pa tek posle
leva (lvalue), i na kraju izvršiti dodeljivanje (ovo sve, naravno,
na apstraktnom - konceptualnom nivou).