pascal.741melev,
H E L P !!!
Zanima me da li je moguce ispisivati tekst u grafickom modu vertikalno
(ali ne odozdo na gore nego odozgo na dole)?
Ja sam pokusavao sa
SetTextStyle(DefaultFont,VertDir,Size)
a tekst ispisujem sa
OutTextXY(x,y,Text)
Koristeci ovo ispisuje se samo odozdo na gore sto meni ne treba. Primetio
sam da ne mogu da se koriste drugi fontovi kao recimo GothicFont...
Melev
pascal.742darone,
-> #736, ivans>> * Ljuba je u inostranstvu, ima tome skoro godina
>> * dana.
>>
>> Nisam to znao. Pametan je čovek, a uz to još i
>> sposoban.
Zato je i otišao.
darone
pascal.743zamahajev,
-> #740, drmarke Zahvaljujem se na pril
.I
pascal.744zamahajev,
-> #740, drmarke Poštovani kolega,
Zahvaljujem se za odgovor i željno očekujem vaša predavanja. Nadam se da će mi
pomoći. Već sam na osnovu grafičko demo programa u potpunosti savladao grafiku
i zvuk i naravno najosnovnije naredbe. Voleo bih, ako imate dobre volje da
kasnije dođem do vas i presnimim programe koje ste radili.
Uzgred kako stojite sa ostalim paketima programa za TIM. Prvenstveno me
interesuje dBASE II, jer ću možda biti prinuđen i njega da radim na TIMu.
Pozdrav
B.3AMAXAJEB
pascal.745vvelisavljev,
-> #726, drpr> Isto kao i datoteke :)
Ovo kod mene radi samo ako je uključen štampač. Znači kad je
isključen štampač Ioresult bude 0 kao da je sve OK. :(
pascal.746peca.st,
-> #741, melev!-> Zanima me da li je moguce ispisivati
!-> tekst u grafickom modu vertikalno (ali ne
!-> odozdo na gore nego odozgo na dole)?
pa napravi proceduru. :)
evo ovako: (kucam bez provere, tako da ne zameri na ev. greškama)
procedure ispisi_bre_uspravno(x,y:integer;s:string);
var i:integer;
razmak:byte;
begin
razmak:=50; šovde stavi kolko vec hoces da ti bude izmedju dva slovać
for i:=1 to length(s) do outtextxy(x,y+i*razmak,sŠiĆ);
end;
jednostavno, zar ne?
P e C a
pascal.747drmarke,
-> #744, zamahajev> i zvuk i naravno najosnovnije naredbe. Voleo bih, ako
> imate dobre volje da kasnije dođem do vas i presnimim
> programe koje ste radili.
Na žalost od programa i nemam baš neku zbirku, jer su to
uglavnom radili klinci, a neke diskete su stradale (blago
rečeno sažvakane su). Ja se doduše više bavim PC-om, ali nema
problema, uvek sam spreman na saradnju.
> Uzgred kako stojite sa ostalim
> paketima programa za TIM. Prvenstveno me interesuje dBASE
> II, jer ću možda biti prinuđen i njega da radim na TIMu.
Pa ovako za TIM imam sledeće pakete: GBASIC, Pascal, Fortran
Nevada (čitati: ne valja), Cobol (?), dBASE II, neke igre,
testove inteligencije, testove vožnje (GSB škola), i možda bi
se našlo još po nešto....
Pozdrav DrMarke
pascal.748drmarke,
-> #746, peca.st> jednostavno, zar ne?
Pa nisam baš ubeđen da je čovek to hteo.
Ovo tvoje piše ovako:
P
E
C
A
a on je valjda hteo da mu i slova budu zarotirana za PI/2 u
negativnom matematičkom smeru. Ili možda grešim?
Pozdrav DrMarke
pascal.749peca.st,
-> #746, peca.st!-> for i:=1 to length(s) do
!-> outtextxy(x,y+i*razmak,sŠiĆ);
hm, sad vidim da bi bolje bilo ovako:
for i:=1 to length(s) do outtextxy(x,y+(i-1)*razmak,sŠiĆ);
mada i onako radi, ali ne počne ispis od one pozicije koje si naveo,
nego za RAZMAK niže...
Peđa.
pascal.750ndragan,
-> #715, stomic/ Da to je sve lepo, ali ne sme svako da menja tvoj sors. Ovo
Za krupnije stvari, svakako da ne sme. Za sitnije i/ili kozmetičke
izmene, lokalna kopija pod drugim imenom i stavljanje autoru na znanje.
E kad ta kopija proradi bolje od originala, vreme je da se zameni.
Ono o čemu sam ja govorio u prvoj poruci je, recimo, rutina za zalivanje
cveća, koja traži dva parametra - količinu vode i mesto gde se nalazi
cveće. Autor (ili neko ko sme to da radi) doda treći parametar, recimo
spisak dodataka (substral itd). Ako će rutina 100% emulirati prethodnu
verziju kad se pozove sa dva parametra, a raditi dodatni posao kad se
pozove sa tri, to je to. Svi stari programi će raditi, čak i ako se u
njih ubaci nova verzija, a u novim se pojavljuje nova mogućnost.
pascal.751ssokorac,
-> #741, melev ─┼┤ OutTextXY(x,y,Text)
function inverzno(tx:string):string;
var
t:byte;
pom:string;
begin
pom:='';
for t:=length(tx) downto 1 do pom:=pom+txŠtĆ;
inverzno:=pom
end;
OutTextXY(x,y,inverzno(text));
Možda postoji i drugi način, ali ovako je sigurno najjednostavnije :).
pascal.752eagle,
-> #741, melev> Zanima me da li je moguce ispisivati tekst u grafickom modu
> vertikalno (ali ne odozdo na gore nego odozgo na dole)?
> Ja sam pokusavao sa
Pitanje i nije baš jasno. Pretpostavljam da si mislio da slova okrenuta
na desno, okreneš na levo (ili beše obrnuto?).
Ja mislim da to može samo ovako: Ako radiš u modu sa više strana, ispišeš
tekst sa Vertdir na strani koju ne koristiš. Prethodno napraviš proceduru
koja ti određenu površinu preslikava preko vertikalne linije(osa simetrije),
koja je levo ili desno od te površine(dela ekrana), i preslikaš taj tekst.
Onda ga uzmeš sa Getimage, i staviš tamo gde ti treba.. that's all. A ako imaš
samo jednu stranu, neće izgledati baš lepo, jer je jaaaakoooo sporo.
) (
< E >
) (
pascal.753eagle,
YO! Zanima me kako mogu da koristim EXE datoteku, bez da je stalno startujem
sa diska, ako je tako nešto uopšte moguće..
pascal.754ilazarevic,
-> #732, drmarke> Iz pascala možeš da se vrtiš u petlji dok IOresult ne bude ok,
> a ako baš hoćeš da znaš šta mu fali koristiš int 17h ah=02h,
> dx=br porta (0=lpt1...), a kao izlaz u ah dobijaš status i to
Ovo je već mnogo zgodnije, zato što meni treba baš tačna informacija o
stanju štampača, a ne odokativna procena. Hvala...
pascal.755janko,
-> #744, zamahajev> Uzgred kako stojite sa ostalim paketima programa za TIM.
> Prvenstveno me interesuje dBASE II, jer ću možda biti
> prinuđen i njega da radim na TIMu.
Ovo sa TIM-om me podseti da pitam:
Voleo bih da nađem nekog ko ima ASEMBLER i što bolji
DISASEMBLER za Z80, a, po mogućstvu, i simbolički dibager za
Z80. ? Pretpostavljam da neko još čuva negde omiljene mu CP/M
programe, pa mi ne bi smetalo takvo rešenje, jer sam skinuo
odnekud (odavde?) CP/M emulator za PC zvani Z80MU. A nekad
davno radio sam intenzivno na CP/M-u: Wordstar, dBase II, Turbo
Paskal (ne sećam se koja verzija, ali se sećam da je pitao,
svaki put kada se staruje, da li da učita i fajl sa tekstovima
poruka o greškama :), ASM za 8080...
E da, ako neko ima nešto specijalno za PC, ali da radi 100%
(imam jedan disasembler za Z80 za PC, ali se, jednostavno,
'zamrzne' kada mu gurnem fajl koji hoću da disasembliram) i
tako nešto je dobrodošlo.
pascal.756vitez.koja,
-> #741, melev#=> ne treba. Primetio sam da ne mogu da se koriste drugi
#=> fontovi kao recimo GothicFont...
?! Koliko ja znam moze, i to bez problema...
pascal.757pedjak,
-> #739, eagle> Evo ovako: Interesuje me kako mogu da eksploatišem modove(valjda se
> tako zovu) napravljene u Modedit-u, tj. one datoteke sa ekstenzijom MOD.
> Ako neko ima neki source, ili opis MOD fajla, bio bih mu zahvalan...
Skoro je neko u ovoj temi poslao source za sviranje .MOD fajlova.
Pogledaj malko unazad.
pascal.758nbatocanin,
-> #717, peca.st> ??? vozio sam "stojadina". - 2 boda.
Ajde što voziš stojadina, al' što repliciraš meni na poruku koju
nisam ja napisao... :)
pascal.759peca.st,
-> #748, drmarke!-> a on je valjda hteo da mu i slova budu
!-> zarotirana za PI/2 u negativnom
!-> matematičkom smeru. Ili možda grešim?
možda stvarno nisam dobro razumeo, ali ovo što ti kažeš se dobija sa
vertdir...
Peđa.
pascal.760skerl,
╔═════════════════════════════════════════════════════════════════════════╗
║ MouseLib ║
║ initial release, Loewy Ron, Feb 90. ║
║ second release, written by Loewy Ron, AUG 90. ║
║ Third release, TP6.0 asm support, LR Jan 91. ║
║ Fourth release, added functions, LR May 91. ║
║ Fifth release, added intercept, release functions, Jun 91. ║
║ 6.th Release - Better Docs., Test Sample Program. ║
║ 7.th Release - Support for BP7 DPMI mode. ║
║ 8.th Release - Support VGA true text cursor, help database. ║
╚═════════════════════════════════════════════════════════════════════════╝
mouseLib documentation file : mouseLib.doc, rel 8.0.
last update : Feb. 23, 1993, LR.
Whats new
---------
V8.0
- Supports VGA true cursor. Use setVGATextGraphicCursor before initMouse.
- MouseTST program, operates now with true (graphic) VGA text cursor.
- Added the tpDESQ and video support units.
- Added the mouselib help database, and the help RL HLPDK help engine.
V7.0
- Support for BP7 DPMI mode - corrected the graphics mode detection
to work with DPMI mode.
- Improved MOUSETST program includes sample to event handler code.
V6.0
- Added better documentation in MOUSELIB.PAS source.
- Added A Simple Sample program - MOUSETST.PAS.
- From this version mouseLib is distributed by
ISoft D&M, P.O.B 5517, Coralville IA 52241, U.S.A
Introduction
------------
mouseLib is a Turbo (Borland) Pascal 6.0/7.0 mouse support unit,
designed to provide event driven mouse support, using a standard
(default) event handling mechanism. The unit includes all of the
normal mouse library functions, (show, hide cursor, define tresh-
hold, detect mouse etc..). mouseLib was used for over 3 years now,
with many programs and products written by the author, and other
programmers. Several mouseLib based packages are distributed by
ISoft D&M, and can be downloaded for evaluation from BBSes around
the world.
Pozdrav,
Skerl.
pascal.761bulaja,
-> #760, skerl> ** Uz poruku 'mouslib8.zip' (191267 bytes)
Hvala, prebaceno u \ibmpc\PASCAL dir.
Btw arhiva sa ovom verzijom je znatno duza od stare (191 prema 43 Kb)
zbog tog HelpEngine koji su ubacili.
pascal.762ssokorac,
-> #745, vvelisavljev ─┼┤ Ovo kod mene radi samo ako je uključen štampač. Znači kad je
─┼┤ isključen štampač Ioresult bude 0 kao da je sve OK. :(
Kod mene je ioresult<>0 kada je isključen štampač... Možda nešto nisi ok
uradio?
pascal.763melev,
-> #748, drmarke
║ Pa nisam baš ubeđen da je čovek to hteo.
║ Ovo tvoje piše ovako:
║ P
║ E
║ C
║ A
║ a on je valjda hteo da mu i slova budu zarotirana za PI/2 u
║ negativnom matematičkom smeru. Ili možda grešim?
Upravo na to sam mislio, da tekst (jednu rec) rotiram za PI/2 udesno.
Vidim da me ostali nisu razumeli, ali to je verovatno zato sto ja nisam
lepo objasnio sta mi traba.
Hvala svima koji su mi odgovorili, i opet postavljem pitanje da li je
ovako nesto moguce. Nadam se da je sada jasno sta i treba.
pozdrav......... Melev
pascal.764dejanr,
U direktorijumu IBMPC\PASCAL je obećani LOGON.ZIP, source u TP-u koji
omogućava logovanje na Novell mrežu pod kontrolom vašeg programa. Podržava
kriptografisanje lozinke i rad sa više servera.
Program je, što je malo čudno obzirom da je nastao krajem '92, pisan u
nekom antičkom Turbo Pascalu (3.0?) koji je pravio COM a ne EXE fajlove
(?). Međutim, dosta se lako da prepraviti na TP 6.0 (ili 5.5), dosta
je na početku staviti USES DOS i naći opis RegsType pa ono što tamo
piše zameniti sa RegsType: Registers.
pascal.766eagle,
-> #759, peca.st> možda stvarno nisam dobro razumeo, ali ovo što ti kažeš se
> dobija sa vertdir...
On i hoće Vertdir, ali na suprotnu stranu..
> Peđa.
Gde nestade PeCa!?
) (
< E >
) (
pascal.767peca.st,
-> #763, melev!-> Hvala svima koji su mi odgovorili, i opet
!-> postavljem pitanje da li je ovako nesto
!-> moguce. Nadam se da je sada jasno sta i
!-> treba.
Da sad je jasno...
Sori na pogrešnoj informaciji...
A ovo što hoćeš, nećeš moći bez simetričnog preslikavanja...
Znači, prvo uradiš ono što je rekao ss-ovac, pa onda preslikavaš u odnosu
na vertikalnu simetralu... Drugačije ne može, a ovo sporo radi... Šta ćeš.
Peđa.
P.S. Još jedno moguće rešenje: da onim font editorom nekako, pojma nemam kako
preslikaš fontove, pa ih onda snimiš.
pascal.769skerl,
-----------------------------------------------------------------------
Sally Tpu Peephole Optimizer version 1,00
Morten Welinder
February 1993
-----------------------------------------------------------------------
1. Welcome
Welcome to Sally Tpu Peephole Optimizer, Spo. This program lets you
produce faster programs with Borland Pascal version 7.0 by optimizing
the intermidiate code produced by that compiler.
Only real mode target units are handled; I don't know the internals of
protected mode units and I don't really care.
As a special bonus of using this program, the longint shift bug in the
runtime library will be eliminated.
Some optimized versions of Turbo.Tpl can be obtained. These can be
used together with Spo but they are not worth the while. They simply
cannot compete with removing the overhead of far calls and returns.
Pozdrav,
Skerl.
spo100.zippascal.770mikeli,
Help ! Zna li ko kako se prave skrolovi texta iz pascala ?
Pomagajte !
Pozdrav.Mikeli :)
pascal.771drmarke,
-> #770, mikeli> Help ! Zna li ko kako se prave skrolovi texta iz pascala ?
Ajde malo objasni šta hoćeš da radiš! Šta ti podrazumevaš pod
skrolom teksta? jel hoćeš prozor sa extom da vozaš po ekranu
ili ti je tekst širi od ekrana pa hoćeš da se šetaš po
susednim ekranima ili..... Nemoj da si škrt na rečima ako
želiš da dobiješ pravi odgovor. :)
Pozdrav DrMarke
pascal.772isekulovic,
-> #763, melev>> Upravo na to sam mislio, da tekst (jednu rec) rotiram za PI/2 udesno.
>> Vidim da me ostali nisu razumeli, ali to je verovatno zato sto ja
>> nisam lepo objasnio sta mi traba.
>> Hvala svima koji su mi odgovorili, i opet postavljem pitanje da li je
>> ovako nesto moguce. Nadam se da je sada jasno sta i treba.
žekaj ako ti treba
P
E
C
A
imaš pecinu proceduru a ako ti treba obrnuto to dobiješ sa vertdir.
A možeš i da promeniš malo pecinu proceduru tako što ćeš petlju
zameniti sa
for i:=1 to length(s) do outtextxy(x,y-(i-1)*razmak,s[i]);
end;
pascal.773mikeli,
-> #771, drmarkeHvala sto hoces da pomognes :)
Pogledaj igru maze of torment (maze.zip) na SEZAMU ili ZB-tet pa
njegov DEMO.Ja mislim da ce ti onda biti jasno kakve skolove hocu :)
A isto bih volio,ako znas kako se prave oni obicni sa textom.Znas ono
neki text se skroluje sa lijeve strane u desnu ili obrnuto.Bez
treptaja ako moze :)
Mislim da sada nisam stedio rijeci :)))
Pozdrav,Mikeli :)
pascal.774majkl,
-> #764, dejanr> LOGON.ZIP, source u TP-u koji omogućava logovanje na Novell mrežu
> pod kontrolom vašeg programa.
Radi li ovo kod nekog? Na 3.11 ispravno prepoznaje slučajeve za
'Login failed', ali logovanje ne ide.
Datoteka uz ovu poruku sadrži sors i izvršni kod programa koji
pod 3.11 daje broj konekcije i ime korisnika na njoj.
who.zippascal.776eagle,
Evo programa koji tekst obrće na sledeći način:
┌──┐ ┌──┐
tekst: ├──┘ │
│ └──┘
───┬──┐
crta: └──┘
┌─────┐
└ ┘
Program Valjda_je_ovo_trebalo;
...
procedure preslikaj(x1,y1,x2,y2:integer;razmak:integer);
var a:word;
i,j:integer;
osa:record xosa,yosa:integer;end;
begin
with osa do
begin
xosa:=x1*2;
yosa:=(y1+((y2-y1) div 2))*2;
for i:=x1 to x2 do
for j:=y1 to y2 do
begin
a:=getpixel(i,j);
putpixel(xosa-i-razmak,yosa-j,a);
end;
end;
end;
...
BEGIN
...
razmak:=10; *** ili bilo koja vrednost ***
settextjustify(lefttext,toptext);
settextstyle(1,1,4);
outtextxy(500,280,'EAGLE');
preslikaj(500,280,500+textheight('EAGLE'),280+textwidth('EAGLE'),razmak);
...
END.
Dakle, ne koristi se procedura koja pravi inverzan string, a
zatim preslikavanje preko neke prave, jer to daje otprilike
odraz u ogledalu, već se isti string preslikava preko jedne
tačke (centralna simetrija). Ovo getpixel/putpixel je primetno
sporo za veliki broj tačaka, tako da je poželjno koristiti
textwidth i textheight.
Ako sam dobro shvatio, ovo si tražio (inače sam džabe pisao)...
) (
< E >
) (
pascal.777inesic,
-> #770, mikeli> Help ! Zna li ko kako se prave skrolovi texta iz pascala ?
Iz pascala - uz pomoć prozora. Readwin odavde doovde, pa onda writewin
red više ili niže ili levije ili desnije ili ukoso ili kako već treba.
pascal.778peca.st,
Jedno pitanje, koje verovatno čudno zvuči...
Dakle, kako, i da li je moguće iz pascala praviti .EXE datoteke?
Peđa.
pascal.779darone,
-> #778, peca.st>> Dakle, kako, i da li je moguće iz pascala
>> praviti .EXE datoteke?
Na kapiram baš, ali ako si mislio da od .pas
napraviš .exe, onda bi bilo najbolje kompajlerom
(tpc.exe). Iako može i (neka_options / destination
/ disk).
darone
pascal.780dmajkic,
-> #778, peca.st+> Dakle, kako, i da li je moguće iz pascala praviti .EXE
+> datoteke?
A da nisi mislio na .COM ?
pascal.781ssokorac,
-> #773, mikeli ─┼┤ A isto bih volio,ako znas kako se prave oni obicni sa textom.Znas ono
─┼┤ neki text se skroluje sa lijeve strane u desnu ili obrnuto.Bez
─┼┤ treptaja ako moze :)
tekst:='Stasha. '; (* obavezno space na kraju stringa *)
red:=27;
for t:=79 downto -length(tekst)+1 do
if t>0 then
begin
gotoxy(t,red);
write(tekst)
end
else
begin (* nestajanje na levoj ivici *)
gotoxy(1,red);
write(copy(tekst,1,length(tekst)-1+t))
end;
P.S. Jedan ortak iz razreda ima problema sa skrolovanjem teksta u grafickom
modu, samo treba da voza nekoliko redova teksta na gore. Ne mora da bude
glatko, lepo i sl, samo da je brzo, kako kaže.
pascal.782vitez.koja,
-> #778, peca.st#=> Dakle, kako, i da li je moguće iz pascala praviti .EXE
#=> datoteke?
Je'l ti ne znas ta kompajliras program ili si namislio da pises
kompajler ?
pascal.783peca.st,
-> #779, darone!-> Na kapiram baš, ali ako si mislio da
!-> od .pas napraviš .exe, onda bi bilo
!-> najbolje kompajlerom (tpc.exe). Iako
!-> može i (neka_options / destination /
!-> disk).
Hvala darone. ;)
Znam znam, to najlakše uradiš kao f10, c, d, alt-f9. :)
Znao sam da će biti ovakvih poruka, jer nisam imao vremena lepše da obrazlžim.
Dakle, meni treba da MOJ program koji sam napravio, ima opciju za pravljenje
.EXE datoteka, koje će raditi _TO_I_TO_.
Ajde ako neko zna, ne bilo mu zapoveđeno...
Peđa.
pascal.784mcule,
-> #778, peca.st
Da l' da ja pocnem da prosipam pamet? ;)
pascal.785bearboy,
-> #644, drpr║ Da li vam je nekad bilo potrebno da definišete konstantu
║ koju možete da menjate? Da i reći će te da se to radi u stilu:
Pa ako je menjaš, onda više nije konstanta :)
pascal.786peca.st,
-> #781, ssokorac!-> P.S. Jedan ortak iz razreda ima problema
!-> sa skrolovanjem teksta u grafickom modu,
!-> samo treba da voza nekoliko redova teksta
!-> na gore. Ne mora da bude glatko, lepo i
!-> sl, samo da je brzo, kako kaže.
IH, ss-ovac, pa ovo tvoje radi u tekst modu... žovek je ako sam ja shvatio
tražio u grafičkom, dakle isto ovo što tebi (tvom ortaku) treba...
So, ja vi možda ovijeh dana pošaljem to, ako budem našao program u kome
sam to koristio.
Peđa.
pascal.787peca.st,
-> #782, vitez.koja!-> Je'l ti ne znas ta kompajliras program
!-> ili si namislio da pises kompajler ?
Pošto sam već odgovorio na prvi deo pitanja, evo odgovora na drugi:
Ne mislim baš da pišem kompajler, ali recimo, mislim da pišem neki
program tipa GIF-->EXE (ne baš taj program, ali tog tipa).
Peđa.
pascal.788dejanr,
-> #783, peca.st>> Dakle, meni treba da MOJ program koji sam napravio, ima opciju za
>> pravljenje .EXE datoteka, koje će raditi _TO_I_TO_.
To bi značilo da tvoj program bude kompajler. Hm, naravno, može se
najzad napisati i kompajler, ali ne verujem da bi to bio tako jednostavan
posao.
Preporučio bih da uzmeš TPC (ili kako se već zove), Turbo Pascal stand
alone compiler. Onda kada tvoj program napravi .PAS datoteku, sa EXEC
pozoveš TPC da od nje napravi EXE. Naravno, morao bi da se pobrineš
za tretman eventualnih greški (valjda TPC vraća ERRORLEVEL (?)) i onda
da, ako je prevođenje uspelo, startuješ prevedeni program.
Nikada to nisam radio, ali ne vidim razloga zašto ne bi moglo, ako se
TPC-u ostavi dovoljno memorije.
pascal.789skerl,
Í────────────────────────────────────────────────────────────────
║ SVGA Driver and Utilities
║
║ Here are some simple SVGA utility programs that will allow you
║ have some fun with these none standard modes. The SVGA driver
║ caters for most popular brands and should work on the brands
║ listed ( just have a look through SVGA.PAS ).
║
║ The programs given allow you to create your own palettes, draw
║ your own pictures and finally use them in your own programs
║ via the SVGA driver. A font editor program is also given so
║ can create your own fonts.
║
║ Some palettes and images are given as examples ( these are the
║ *.pal and *.img files ). the MARS.IMG and SKULL.IMG files use
║ SWORD.PAL and LIFE.IMG uses LIFE.PAL. These image files can be
║ viewed with SVGAMAP.PAS. For example to view LIFE.IMG run
║ SVGAMAP and press 'x'. Type in 'life.pal' as the file name of
║ the palette. Then press 'l' and type in 'life.img'.
║
║ The source code is given for all of these to enable you to
║ customize the programs to your needs, or to enable you to
║ make improvements to the SVGA driver. Ofcourse, any
║ improvements to the driver would appreciated by me and anyone
║ else who is using the driver. Suggestions are also welcome
║ but there is no guarantee I will have time to implement them.
Pozdrav,
Skerl.
svgadc30.zippascal.790skerl,
Evo prave stvari za one koji se bave programiranjem koprocesora
iz pascal-a. Unit daje kompletnije izvestaje o greskama.
Pozdrav,
Skerl.
ERROR87 1.3 - Turbo Pascal units to improve coprocessor error reports.
Copyright (c) 1990,1993, D.J. Murdoch. All rights reserved.
Portions of DECODE87.PAS copyright 1985,86, L. David Baldwin.
INTRODUCTION
Turbo Pascal doesn't handle floating point errors well. The number of
errors that are reported as run-time "Error 207" is large, and in some
versions the error address is miscalculated, so you don't have a clue
where to look for them. ERROR87 is a unit that attempts to address both
of these problems - it gives more informative error messages, and it
tries to improve on the calculation of the error address.
In this package, you should find the following files:
ERROR87.DOC - this file
ERROR87.PAS - source code to the error handling unit
DECODE87.PAS - source code used to decode the instructions
DV87.ZIP - a little TSR to fix a bug in Desqview 2.26 that
crashes windows on coprocessor errors
NMI.ZIP - a little program to turn on NMI handling on XT clones,
so that they don't crash on coprocessor errors
err87_13.zippascal.791kenza,
-> #778, peca.st (;> Dakle, kako, i da li je moguce iz pascala praviti .EXE datoteke?
E,svasta ;) kompajliras *.pas u *.exe.Ili uzmes TPC i....
pascal.792drmarke,
-> #773, mikeli> A isto bih volio,ako znas kako se prave oni obicni sa
> textom.Znas ono neki text se skroluje sa lijeve strane u
> desnu ili obrnuto.Bez treptaja ako moze :)
Za text mod ti je nešto poslao recimo ssokorac, a ja pošto
trenutno nemem vremena da kopam gde mi je napravljeno mogu da
ti preporučim da se obratiš almi-ju jer se on baktao sa tim
stvarima (nešto je bilo i u računarima sa očitavanjem
portova).
On mi danas reče, da je video u ovom nivom file-u u info
"vgadoc2.arj" da ima urađen scroll ekrana pa vidi. Pošto ima
source na pascalu malo pročitaj pa će da radi.
Pozdrav DrMarke
pascal.793drmarke,
-> #781, ssokorac> tekst:='Stasha. '; (* obavezno space na kraju stringa *)
Pa ja ovo malo gledah pa baš i ne radi. Naime mislim da bi
scroll bio scroll on mora da ono što je napisano pre
pomeranja i da obriše. Zato ti treba još jedna promenljiva
koja sadrži prazninu iste dužine kao i tekst. Npr. ovako:
Ň══════════════════════════════════════════════════════════════Ş
│ │
│ uses Crt,Brlj; │
│ var t,red,zn:integer; │
│ tekst,bris:string[10]; │
│ begin │
│ clrscr; │
│ HideCursor; │
│ tekst:='Stasha. '; (* obavezno space na kraju stringa *) │
│ bris :=' '; │
│ red:=12; │
│ for t:=79 downto 1 do │
│ if t>length(tekst) then │
│ begin │
│ write(bris); │
│ gotoxy(t-length(tekst),red); │
│ write(tekst); │
│ gotoxy(t-length(tekst),red); │
│ delay(25); │
│ end │
│ else │
│ begin (* nestajanje na levoj ivici *) │
│ gotoxy(1,red); │
│ write(copy(bris,length(bris)+1-t,t)); │
│ gotoxy(1,red); │
│ write(copy(tekst,length(tekst)+1-t,t)); │
│ delay(30); │
│ end; │
│ readln; │
│ restorecursor; │
│ end. │
│ │
ď══════════════════════════════════════════════════════════════ż
Pozdrav DrMarke
pascal.794dgrbic,
-> #787, peca.st:: Ne mislim baš da pišem kompajler, ali recimo, mislim da
:: pišem neki program tipa GIF-->EXE (ne baš taj program,
:: ali tog tipa).
Gledaj ovako:
1. Napišeš program koji radi ono što tebi treba (npr. prikazuje GIF);
2. Napraviš ga tako da on učitava podatke iz .EXE fajla (tj. samog sebe)
3. Napraviš drugi program koji "lepi" taj program i podatke
4. Gotovo :)
pascal.795ivans,
-> #755, janko* Voleo bih da nađem nekog ko ima ASEMBLER i što bolji
* DISASEMBLER za Z80, a, po mogućstvu, i simbolički dibager
* za Z80. ?
Vidim, niko se ne javi da odgovori čoveku, pa rekoh da pokušam ja... Mada je i
od mene mala pomoć... :(
Imam asembler i to makro, a još kažu da je relokatibilni (ovo poslednje nisam
proveravao). Zove se ZAS. Uz njega idu linker ZLINK i "bibliotekar" ZLIB. Što
se dibagera tiče, imam dva: jedan je ZDM, a drugi DSD. Ovaj prvi nikada nisam
ozbiljnije koristio, valjda zato što nigde nisam našao spisak svih opcija koje
omogućava, a i inače mi je delovao jako ružno, otprilike kao MS DOS-ov DEBUG.
Ovaj drugi je znatno bolji, ima ugrađen help-podsistem i gomilu opcija koje sam
video tek kod nekih dibagera za PC (konkretno, Turbo Debugger). U svakom
trenutku se na ekranu vidi stanje registara i memorije, disasemblirano bilo
koje parče memorije (najčešće ono na kome je PC registar), moguće je trejsovati
program sa prikazom stanja registara i memorije posle svakog koraka ili
trejsovati, na primer, hiljadu instrukcija bez prikazivanja promene registara /
memorije (dakle, nešto brže, i to prilično) itd.
Glavni problem je što je sve to smešteno na jednu TIM-011 disketu, sa koje PC
ne može da čita fajl, već je potrebno "krpiti" programe sektor po sektor... A
to daje nikakve rezultate :(. Ako neko ima ideju kako da se do ovoga dođe -
neka se javi...
Pozdrav,
Ivans.
pascal.796almi,
-> #792, drmarkeOtklanjanje trperenja se najbolje postiže ispitivanjem
port-a $03DA tj. da li je njegov 3. bit setovan pr.:
REPEAT UNTIL (PORT[$3DA] AND 8) = 8;
I posle ovog reda treba iscrtati nešto.
Pozdrav Mišel.
pascal.797djnsnd,
Da li neko zna kako da iz Turbo Pacal-a procitam serijski
broj diska na kojem je program instaliran ?
Pre nekog vremena je u Bajtovima Lične Prirode bilo nešto o tome na C-u ?
Djn
pascal.798djnsnd,
Da li je neko u stanju da mi kreira nove TButtons za Turbo Viziju?
Trebaju mi tasteri koji zauzimaju manje prostora na ekranu. Ovi postojeci
imaju najmanje 2 reda, pa bi mogla da se skine senka.
Dejan 434-822
pascal.799ssokorac,
-> #793, drmarke ─┼┤ scroll bio scroll on mora da ono što je napisano pre
─┼┤ pomeranja i da obriše. Zato ti treba još jedna promenljiva
Tome i služi space na kraju stringa. :) Kada bih stalno sve brisao suviše
bi 'treptalo' a i sporije je.
pascal.800peca.st,
-> #794, dgrbic!-> Gledaj ovako:
!-> 1. Napišeš program koji radi ono što tebi
!-> treba (npr. prikazuje GIF); 2. Napraviš
!-> ga tako da on učitava podatke iz .EXE
!-> fajla (tj. samog sebe) 3. Napraviš drugi
!-> program koji "lepi" taj program i podatke
!-> 4. Gotovo :)
Zamolio bih te da ovo malo više pojasniš, baš mi ne ide u glavu...
Peđa.
pascal.802janko,
-> #795, ivans> Glavni problem je što je sve to smešteno na jednu TIM-011
> disketu, sa koje PC ne može da čita fajl, već je potrebno
> "krpiti" programe sektor po sektor... A to daje nikakve
> rezultate :(. Ako neko ima ideju kako da se do ovoga dođe
> - neka se javi...
A postoji li program koji sve sektore redom pročita i sruči u
PC fajl? Ako ima, onda uz dokumenjtaciju o organizaciji TIM
diskete (eto šta treba iskopati) čas posla se napravi programče
da rasturi sve na fajlove...
Frčno je i to da li su ti programi samo za TIM ili za svaki
CP/M. TIM ima i neke svoje bubice, a ja nemam nameru da pišem
TIM emulator...
pascal.803dgrbic,
-> #800, peca.st:: Zamolio bih te da ovo malo više pojasniš, baš mi ne ide u
:: glavu...
OK, idemo:
Napraviš program za prikazivanje ili-šta-ti-već-treba i to tako da on iz
samog sebe čita podatke (npr. na kraj programa naredbom copy nalepiš neki
string koji ti služi kao marker, ili zapišeš dužinu programa...) pa onda
opet naredbom copy (ili ekvivalentnom procedurom iz svog programa) nalepiš
podatke iza tog markera. Program za prikazivanje nađe marker u fajlu čije
ime dobiješ sa paramstr(0) i onda lepo čita potrebne podatke.
Sam .exe fajl za prikazivanje možeš da upakuješ u program koji vrši
spajanje kao binarnu sliku (program binobj vrši posao).
Ako ti još nešto nije jasno... javi, će pojasnimo :)
pascal.804ivans,
-> #802, janko* A postoji li program koji sve sektore redom pročita i
* sruči u PC fajl?
Bojim se da nema :(. Naime, još pre nego što sam nešto radio sa Anadiskom,
pokušavao sam da pročitam TIM-ovu disketu pomoću dva druga programa (jedan mi
je poslao Bulaja, a drugi jedan Sezamovac, neka mi ne zameri što mu nisam
upamtio ime ;), i nijedan nije uspeo da izvuče ništa sa disketa... Anadisk je
bar nešto uspeo, taman toliko da je to što je uspeo neupotrebljivo... :(
Što se tiče organizacije TIM diskete mislim da je čak vrlo standardna. Neko je
ovde na Sezamu bacio opis CP/M formata diskova, i uspeo sam da prepoznam nešto
što je zajedničko sa TIM disketom - dakle, nije potpuno nestandardna... a ipak
ne može "normalno" da joj se pristupi. :(
* Frčno je i to da li su ti programi samo za TIM ili za
* svaki CP/M.
Oni Z* programi koje sam naveo su bili isporučivani na sistemskim disketama, pa
postoji šansa da nisu za svaki CP/M... Mada bi trebalo da jesu - ne verujem da
su u "Pupinu" radili nešto drastično na njima... Opet, ko zna...
Međutim, onaj dibager (DSD), koji se nekako volšebno ;) uvukao na moje diskete,
vrlo verovatno nije napisan (ili prilagođen) za TIM-011 - ko bi se petljao s
tim kad već postoji ZDM? ;) Samo, potrebno je i to nekako pročitati, a, kao što
napisah gore, ni Anadisk ne uspeva...
Sad mi pade na pamet - postojale su verzije TIMa-011 sa 5.25" drajvom (nikada
isporučivane školama), pa bi se eventualno sa njih moglo nešto pročitati...
Naravno, zbog toga bi trebalo otići u "Pupin" i naći nekog spremnog za
saradnju, što je verovatno "malo" poteže :(.
Pozdrav,
Ivans.
pascal.805predragd,
-> #706, peca.st> Ako ima source, stvarno nema frke prepraviti ga da radi i
> u drugim rez... Ja sada imam ono čudo što radi samo u 640
> 480 16, al mi treba za više,
Stiže (source za RW PCX-a).
Peđa.
pcx.arjpascal.806peca.st,
-> #803, dgrbic!-> Ako ti još nešto nije jasno... javi, će
!-> pojasnimo :)
Ma sad je jasno, no problemo, ali si ti suviše direktno shvatio ono
što sam ja rekao "neki program tipa GIF-->EXE". So, uz pomoć packObj
može to da se uradi, hvala. (mada to i nije bilo ono što je meni u suštini
trebalo). i onako nije bilo previše važno, nešto sam hteo da uradim,
što i nije mLogo bitno. :)
Peđa.
pascal.807ilazarevic,
Šta znači ovo: inline($9c);
Radi se o primeru za rezidentan program iz BLP, pisao vitez.koja.
pascal.808ilazarevic,
Napisao sam nešto ovako:
uses crt,dos;
var proc:procedure;
š$M 1024,0,0ć
procedure sat; interrupt;
var h,m,s,s100:integer;
begin
inline($9c);
proc;
gettime(h,m,s,s100);
gotoxy(1,1);
write(h,':',m,':',s);
end;
begin
swapvectors;
getintvec($1c,čproc);
setintvec($1c,čsat);
window(30,1,60,3);
keep(0);
end.
Ovo mi okači satić na vrhu ekrana i otkucava :) Jedini problem je to što ja
hoću da mi sat radi u pozadini, dok ja mogu normalno da radim šta već poželim
u DOS-u. Kako to?
pascal.809vitez.koja,
-> #807, ilazarevic#=> Šta znači ovo: inline($9c);
To je ekvivalent PUSHF asemblerske naredbe, postavlja fleg registar na
stek jer se iz interapt rutine vraca sa IRET (koja automatski vraca
flegove sa steka) a ne sa RET.
pascal.810eagle,
-> #808, ilazarevic> Ovo mi okači satić na vrhu ekrana i otkucava :) Jedini problem
> je to što ja hoću da mi sat radi u pozadini, dok ja mogu
> normalno da radim šta već poželim u DOS-u. Kako to?
Možeš da ubacuješ vreme direktno u ekranski bafer, dakle bez šetkanja kursora.
Inače, sumnjam da ćeš moći ovako nešto sa "gettime". Bolje uradi samo jedno
gettime na početku, a posle uzmi neki brojač i uvećavaj ga u svojoj proceduri.
E sad nek' mi neko objasni ovo: Namestim tako da mi se npr. svakog minuta
ispisuje nešto na ekranu, i to lepo radi kad ništa ne diram. Međutim, kad
držim neprekidno Enter ili bilo šta drugo, promaši za 2-3 sekunde!? A
ja mislio da prekid sata ima prednost nad prekidom tastature..
) (
< E >
) (
pascal.811peca.st,
-> #805, predragd!-> Stiže (source za RW PCX-a).
!-> Peđa.
TOOOOOOOOOOOO Imenjače!
Ljudi, ja bih mu odmah na neviđeno dao godinu dana pretplate, kad bi mene
neko pitao. (a ne pita me)
Peđa.
pascal.812dzakic,
-> #808, ilazarevic>> gettime(h,m,s,s100);
GetTime je funkcija dosa, pa ti zato program verovatno radi samo
na promptu, a u ostalim situacijama zaglavi. Treba da izbegneš
pozivanje ove funkcije recimo direktnim čitanjem sata iz
promenljivih na segmentu $40.
pascal.813ilazarevic,
-> #809, vitez.koja># => Šta znači ovo: inline($9c);
Hvala, doživeo sam prosvetljenje :)
pascal.814ilazarevic,
-> #812, dzakic> pozivanje ove funkcije recimo direktnim čitanjem sata iz
> promenljivih na segmentu $40.
Da, videh u DOS referenci da se tamo vraća broj otkucaja. Zbun je u tome što
ne znam da li će mi vratiti broj otkucaja interapta 1Ch (mnooogo veliki broj
:) ili broj sekundi ili tačno vreme. Izgleda da ću morati da probam...
pascal.815zamahajev,
Kako u Pascalu napisati program koji koristi programsku datoteku kao
Basicu npr.
10 Data Pera,170,Mika,183,Laza,194, ..... itd
20 for i=1 to 12
30 read ime$, vis
40 print ime$, vis
50 next i
Pozdrav
3AMAXAJEB B.
pascal.816dejanr,
-> #815, zamahajev>> Kako u Pascalu napisati program koji koristi programsku datoteku kao
>> Basicu npr.
>> 10 Data Pera,170,Mika,183,Laza,194, ..... itd
>> 20 for i=1 to 12
>> 30 read ime$, vis
>> 40 print ime$, vis
>> 50 next i
Približan ekvivalent bi bio:
CONST imena: ARRAY[1..4] OF string[10] = ('Pera', 'Mika', 'Laza', 'čika');
broj: ARRAY[1..4] OF integer = (10,20,30,40);
pascal.817dejanr,
Iako BP 7.0 još nije stigao do nas :( (tj. u svakom slučaju nije do
mene), evo par zanimljivih poruka na tu temu:
==========
borland/turbo.pascal #6637, from klrv, 499 chars, Mon Mar 15 14:22:59 1993
Comment(s).
----------
TITLE: BCC 3.1 interfacing
Does the new (7.0) version of Turbo Pascal finally allow to generate .OBJ
files, which can be linked to other programs? Did anyone ever try to interface
BCC and Pascal routines in one program? (this was almost impossible with
previous versions of TP)
All suggestions are more than welcome! We would like to interface a
program written in C with an existing program written in Turbo Pascal...
At this moment, we're afraid we'll have to re-write everything in C...
Luc
==========
borland/turbo.pascal #6638, from terjem, 880 chars, Mon Mar 15 16:50:07 1993
Comment to 6637. Comment(s). More refs to 6637.
----------
> Does the new (7.0) version of Turbo Pascal finally allow to generate .OBJ
> files, which can be linked to other programs?
No, it still generates .TPU files. You can link in supporting C functions
as .OBJ files, but there is no way to use a C main() program.
IMHO any serious Turbo Pascal programmer should consider getting StonyBrook's
Pascal+, which can generate BC++/MSC-compatible .obj files, and optimizes
the code to where it is comparable to, and in some cases better than, the
best C compilers.
I did take part in the beta test of the current StonyBrook compiler, V6.1,
but I have no other interests in the company.
Pascal+ is compatible with Turbo Pascal V6.0, so if you have started to
use the BP7.0 extensions, or need to use protected mode, you still have
a problem.
--Terje Mathisen
(Internet: terjem@nho.hydro.com, FAX: +47-22-433606, Compu$erve 10030,547)
==========
borland/turbo.pascal #6640, from klrv, 66 chars, Mon Mar 15 17:59:16 1993
Comment to 6638.
----------
You really made my day! Thanks a lot for this advise :-) :-)
Luc
==========
borland/turbo.pascal #6641, from mfang, 124 chars, Mon Mar 15 21:32:40 1993
Comment to 6637. Comment(s).
----------
BP 7.0 does support dynamic link libraries. So if your
program is Windows-oriented, you can skip the .OBJ.
==========
borland/turbo.pascal #6642, from abailey, 101 chars, Mon Mar 15 22:07:39 1993
Comment to 6641.
----------
BP 7.0 isn't limited to Windows for DLL's. You can make DLL's for
the DOS protected mode.
==========
borland/turbo.pascal #6643, from fred.robinson, 846 chars,
Tue Mar 16 19:15:07 1993
Comment(s).
----------
Borland DPMI vs. Windows' DPMI
(I think) I've run into a minor snag with these two DPMI servers. I'm
working on FATMAP (listings\ibm.utils, FATMAP4.ZIP). It uses Int $25
to read sectors from the disk. In real mode, everything is fine. In
protected mode everything ain't.
Int $25 normally leaves a word on the stack when it returns, so part
of the sector-reading code removes this word after the int call.
Now, in a Windows DOS window, this turns out as expected. However,
outside of Windows, where I assume DPMI16BL.OVL is being used, this
extra word is not in the stack after the call. Is the Borland DPMI
doing some unexpected cleanup after an interrupt? If so, this is a
major PITA since I can't tell after the interrupt whether I should
pop the extra word or not (this is in assembly code, in a linked-in
.OBJ).
==========
borland/turbo.pascal #6644, from mfsargent, 337 chars, Tue Mar 16 22:00:44 1993
Comment to 6643. Comment(s).
----------
Fred, You could push your own sentinal onto the stack before doing the Int
$25. On return, if the top of the stack isn't your sentinal, assume it's
the flags and remove it. The sentinal value should probably be chosen to be
something that is an invalid flag word.
==========
borland/turbo.pascal #6645, from fred.robinson, 549 chars,
Thu Mar 18 19:10:24 1993
Comment to 6644. Comment(s). More refs to 6644.
----------
OK, Mike, I tried the flag value on the stack, and it works, to the
point where I no longer get the bogus value popped into DS and a GPF.
Now, under DPMI, int $25 itself is acting differently between Windows
DOS boxes and plain old DOS. In Windows, it acts as expected. But in
DOS, it fails somehow, and returns an error code corresponding to
"sector not found" and *no* extra word on the stack. I don't think I'm
telling it to look for anything unusual, since the same code works in
Windows and for the real-mode version. Help, anybody!
Fred
==========
borland/turbo.pascal #6646, from fred.robinson, 205 chars,
Thu Mar 18 19:11:23 1993
Comment to 6644.
----------
I'll give that a whack. I'll push something like $FFFF onto the stack
and the check for it after the int $25 call. I only hope I don't
trash the rest of the code in the process :-/ . Thanks.
Fred
==========
borland/turbo.pascal #6647, from abailey, 350 chars, Thu Mar 18 21:24:54 1993
Comment to 6645. More refs to 6645.
----------
According to the bible on Borland DPMI " Borland Open
Architecture Handbook for Pascal", Int 25h and 26h are _not_
reflected through to protected mode.
To do it right you would have to set up a simulate real-mode
interrupt (DPMI function 0300h) to pass the call down to
real-mode. ( I have to do the same thing with VESA graphics
calls.)
==========
borland/turbo.pascal #6648, from mtoney, 333 chars, Sat Mar 20 22:15:16 1993
Comment to 6645.
----------
This is just a thought (more of a curiousity), but have you tried
using someone else's DPMI server (Like QEMM's) instead of
Borlands? If any other is out there, Borlands protected mode
programs (DOS ones) will use it instead of their own. This is
what happens in Windows at least, a windows program uses the
Windows DPMI server...
pascal.818almi,
Kako da alociram niz u XMS ili EMS.
Pozdrav Mišel.
pascal.819dmajkic,
Kako da u turbo paskalu iskoristim grešku, a da mi se program ne
prekine?
Konkretno, kada proba da izračuna LN(x) za x<0, da ne prijavi
runtime error već da skoči na neku proceduru.
pascal.820eagle,
-> #819, dmajkic> Konkretno, kada proba da izračuna LN(x) za x<0, da ne prijavi
> runtime error već da skoči na neku proceduru.
Valjda bi najjednostavnije bilo da napraviš neku svoju funkciju, npr. LNN,
koja ti daje ln(x) za ispravnu vrednost, a poziva neku proceduru ako je
x neispravno.
) (
< E >
) (
pascal.821ssokorac,
Može li neko (samo ukratko, ali ako je rapoložen može i opširnije:) da
objasni šta se tačno dešava posle komande SetActivePage(1); Ne mislim na
efekte, nego u koju se sada memoriju upisuje sve što se ispisuje na ekran, i,
uopšte, kako pristupiti toj memoriji da nemamo SetActivePage proceduru i sl.
Thanks mnoogo, Stasha.
pascal.823dekiper,
-> #819, dmajkicdmajkicu-u, mislim da onaj savet koji sam ti dao u Klubu i nije baš
najbolji pa je mnogo praktičnije da pre poziva funkcije Ln (za
računanje logaritma) proveriš kakav joj argumenat daješ, pa ako je u
pitanju negativan broj jednostavno pozoveš proceduru koja će
signalizirati grešku. Na primer:
Program Logaritam;
Procedure Greska;
Begin
WriteLn('Greška: Nemoguće je dobiti logaritam negativnog broja');
End;
Var
A:Integer;
Rez:Real;
Uspelo:Boolean;
Begin
repeat
WriteLn('Unesite argumenat funkciji Ln');
ReadLn(a);
If A<0 then Begin Rez:=Ln(A); Uspelo:=TRUE; End Else Greska;
until Uspelo;
WriteLn('Logaritam je: ',Rez);
End.
pascal.824ssokorac,
-> #819, dmajkic ─┼┤ Konkretno, kada proba da izračuna LN(x) za x<0, da ne prijavi
š$I-ć p:=LN(x); š$I+ć
If IOResult<>0 then Procedura;
pascal.825peca.st,
-> #818, almi!-> Kako da alociram niz u XMS ili EMS.
Teško. Nisam siguran da li u opšte može.
Peđa.
pascal.826dejanr,
-> #823, dekiper>> dmajkicu-u, mislim da onaj savet koji sam ti dao u Klubu i nije baš
>> najbolji pa je mnogo praktičnije da pre poziva funkcije Ln (za
>> računanje logaritma) proveriš kakav joj argumenat daješ, pa ako je u
>> pitanju negativan broj jednostavno pozoveš proceduru koja će
>> signalizirati grešku. Na primer:
Ovo dolazi u obzir kada se zbilja radi o računanju jedne funkcije. Međutim,
ako se javljaju duži izrazi, dosta komplikuje da se za svaki LN stavlja
IF, pa onda za svaki koren, pa onda prekoračenja, podkoračenja... trećina
programa će biti radni deo, a dve trećine nekakvi IF-ovi.
Ako imam segment programa koji ima mnogo numerike koja može da napravi
grešku, obično instaliram exit proceduru - kada bi da prijavi grešku,
program upadne u moju proceduru, ja proverim da li je greška numerička
i ako jeste zanemarim je i idem nazad na petlju, sledeća iteracija. Radi
jako dobro i strašno se lako programira.
O exit procedurama je bilo reči ovde, u Bajtovima lične prirode a pominju
se čak i u uputstvu :)
pascal.827dejanr,
-> #824, ssokorac>> š$I-ć p:=LN(x); š$I+ć
>> If IOResult<>0 then Procedura;
Jesi li ovo probao? Nešto nisam ubeđen da će da radi, {$I-} samo
maskira I/O greške, dakle za razne RESET, READ itd. Ne bih rekao
da maskira numeričke greške.
pascal.828dejanr,
-> #825, peca.st>> > Kako da alociram niz u XMS ili EMS.
>>
>> Teško. Nisam siguran da li u opšte može.
Sve može, ali ne znači da je jednostavno... pogledaj recimo fajl
uz poruku 6.268
pascal.829janko,
-> #826, dejanr> Ako imam segment programa koji ima mnogo numerike koja
> može da napravi grešku, obično instaliram exit proceduru -
> kada bi da prijavi grešku, program upadne u moju
> proceduru, ja proverim da li je greška numerička i ako
> jeste zanemarim je i idem nazad na petlju, sledeća
> iteracija. Radi jako dobro i strašno se lako programira.
Postoji i puno elegantniji metod (doduše, nisam ga primenjivao
na TP-u, već na BC-u).
Emulator 8087 procesora koji prati Borlandove proizvode je
izuzetno veran specifikaciji pravog 8087, pa je moguće i
podešavati operacije koje on sam izvodi, koristeći kontrolne
reči 8087 procesora. Program pišete potpuno jednako bilo da
radi sa pravim procesorom bilo da radi sa emulatorom (vi uopšte
ne vidite emulator!).
Po IEEE specifikacijama, (a 8087 je dosta blizak njima) rutine
za pokretni zarez treba da obezbede svu silu mogućnosti da
zanemare neke ekscesne situacije ili da ih prijave, i još
trista čuda uz to. Setovanjem ili resetovanjem samo jednog bita
može da se isključi javljanje underflow ili overflow operacije.
Za te operacije nad kontrolnom reči 8087 procesora BC ima i
ugrađene primitive (ne pišu se nikakve ASM linije!).
Na TP-u, (ili ovim novijim čudima) ako su mogući ovakvi metodi
(trebalo bi dobro pročačkati uputstva), trebalo bi aktivirati
8087 emulaciju i koristiti IEEE formate (a ne onaj interni
real).
pascal.830draganm,
-> #804, ivans*> Bojim se da nema :(. Naime, jos pre nego sto sam nesto radio
*> sa Anadiskom, pokusavao sam da procitam TIM-ovu disketu pomocu
*> dva druga programa (jedan mi je poslao Bulaja, a drugi jedan
*> Sezamovac, neka mi ne zameri sto mu nisam upamtio ime ;), i
*> nijedan nije uspeo da izvuce nista sa disketa... Anadisk je
*> bar nesto uspeo, taman toliko da je to sto je uspeo
*> neupotrebljivo... :(
Ja sam uspeo sa Anadiskom da dump-ujem celu disketu na hard .....
pascal.831pedjak,
-> #817, dejanr> IMHO any serious Turbo Pascal programmer should consider getting
> StonyBrook's Pascal+, which can generate BC++/MSC-compatible .obj files,
> and optimizes the code to where it is comparable to, and in some cases
> better than, the best C compilers.
> Pascal+ is compatible with Turbo Pascal V6.0, so if you have started to
Jel' zna neko nešto više o tom Pascal+ kompajleru ? Ako generiše
.OBJ ondak je to odlično !
pedja
pascal.832dmajkic,
-> #826, dejanr+> Ovo dolazi u obzir kada se zbilja radi o računanju jedne
+> funkcije. Međutim, ako se javljaju duži izrazi, dosta
+> komplikuje da se za svaki LN stavlja IF, pa onda za svaki
+> koren, pa onda prekoračenja, podkoračenja... trećina programa
+> će biti radni deo, a dve trećine nekakvi IF-ovi.
Potpuno si u pravu. Ali, ajde da ja pojasnim o čemu se radi:
Napisao sam mali program za crtanje grafika funkcije.
Meni je mnogo pomagao, ali su onda funkcije počele da se
komplikuju. Problem je sa domenom (oblast definisanosti fj-e).
Primetio sam :) da bi bilo mnogo lakše da iskoristim grešku u
računanju, jer fj-a baš tu nije definisana, nego da od malog
programa pravim ogroman uz pomoć IF-ova.
Pošto ja unapred ne znam kakva će fj-a da bude, ne mogu da
isključim sve slučajeve. Znači, odpada ono 'if x<0 then...' .
Pokušao sam i sa ( $I+ ) i ioresult ali nije radilo.
Dakle, program bi trebao da bude 'svestan' da se dogodila
floating-point greška, ali da se pri tome ne zaustavi njegovo
izvršavanje.
+> Ako imam segment programa koji ima mnogo numerike koja može da
+> napravi grešku, obično instaliram exit proceduru - kada bi da
+> prijavi grešku,
Bio bih veoma zahvalan da me uputiš gde se ovde o tome raspravljalo.
žisto da ne lutam po konferenciji...
Hvala
pascal.833vitez.koja,
-> #824, ssokorac#=> š$I-ć p:=LN(x); š$I+ć
Neće moći :) jerbo $I služi za kontrlolu I/O grešaka, a toga verovatno
nema u funkciji LN.
pascal.834ssokorac,
-> #827, dejanr ─┼┤ Jesi li ovo probao? Nešto nisam ubeđen da će da radi, š$I-ć samo
Probao, ne radi. Izvinjavam se :).
pascal.835ssokorac,
-> #821, ssokorac
Dobro, možda je jednostavnije ovakvo pitanje :). Šta je uopšte page-iranje
video memorije, kako se vrši i tako to? :) Hajde, pliz, ako neko bar malo može
o tome da napiše...
pascal.836almi,
Da li ima neko zamenu za rutine put i get image koje brže rade
nego one iz graph-unti-a.Ako neko ima zamolio bih ga da mi ih pošalje
Unapred zahvalan Mišel.
pascal.837vdarko,
Radim neke testove iz psihologije na TP6 i treba mi savet od
ljudi koji su se bavili grafičkom animacijom u TP-u.
Naime, korisnik je izrazio želju (o, kako to grozno zvuči)
da mu se tokom testa na ekranu pojavljuje PEŠžANI sat koji
bi radio onoliko vremena "koliko mu se kaže". Ima li na
Sezamu nečega što bi mi pomoglo da tako nešto napravim.
Sat ne mora da rotira kao u Windows-u, već je dovoljno da
"radi" i da mogu da ga postavim na bilo koji deo ekrana.
pascal.838.obj,
-> #835, ssokorac> Dobro, možda je jednostavnije ovakvo pitanje :). Šta je uopšte page-iranje
> video memorije, kako se vrši i tako to? :)
Recimo, radiš u rezoluciji 800x600 u npr. 256 boja. Kada lepo
preračunaš koliko je to video memorije, bude negde oko 480Kb. U realnom
(8086) režimu, procesor jednostavno ne može da rezerviše toliko
memorije samo za video (adresni prostor na 8086 je samo 1Mb). Zato
(zbog Intela;) se video memoriji pristupa preko stranica od, recimo,
64k koje se nalaze negde u memoriji (npr. A000:0000). E, sad, taj način
prebacivanja je pravio najviše problema svim prozvođačima softvera
(nije standardan), pa su se onda nekako dogovorili (VESA standard) oko
tih i ostalih spornih stvari kod softverske podrške SuperVGA kartica.
Na Sezamu ima jedna arhiva, mislim da se zove VGAKIT ili tako nekako,
gde su programčići koji prebacuju stranice na raznim video karticama,
Tseng, Oak, Trident i ostalo najpopularnije. Pogledaj tamo, procedure
su vrlo jednostavne (mislim, samo inicijalizacija grafike, PutPixel i
LineTo), ali su dovoljno informativne za to što te zanima.
pascal.839draganm,
Ortak me je zamolio da vam ostavim njegovih ruku delo u ovoj konferenciji
...... Radi se o rutinama za user interface u textualnom modu ....
pascal.840peca.st,
-> #836, almi!-> Da li ima neko zamenu za rutine put i get
!-> image koje brže rade nego one iz
!-> graph-unti-a.Ako neko ima zamolio bih ga
!-> da mi ih pošalje
ima ss-ovac al ne da. :(
Peđa.
pascal.841eagle,
-> #840, peca.st>! -> Da li ima neko zamenu za rutine put i get
>! -> image koje brže rade nego one iz
>! -> graph-unti-a.Ako neko ima zamolio bih ga
>! -> da mi ih pošalje
>
> ima ss-ovac al ne da. :(
Stiče se utisak da ih ipak nema... ajde SS, demantuj!
) (
< E >
) (
pascal.842ssokorac,
-> #840, peca.st ─┼┤ ima ss-ovac al ne da. :(
Ma, već sam ti rekao, rade samo u specifičnim slučajevima :(.
pascal.843bearboy,
-> #835, ssokorac║ Dobro, možda je jednostavnije ovakvo pitanje :). Šta je uopšte page-iranje
║ video memorije, kako se vrši i tako to? :) Hajde, pliz, ako neko bar malo
može
║ o tome da napiše...
Verovatno nisam najkompetentniji, al' ajd :)
'Vako - Neke video kartice imaju više memorije na sebi nego što koriste u
trenutačnom videjo modu. Zato se dostupna memorija podeli na pejdžove, i ti
možeš da pomeraš page window (64K - od A000 do B000) da prikazuje ne prvih
64K na video kartici, već deo od 64K do 128K, tj. drugi pejdž. Tako npr. VGA
kartica sa 256K ima 4 pejdža u 320x200x256. Ovo pejdžovanje se koristi za
brzo iscrtavanje - dok je na prvom skrinu neka slika, ti radiš na drugoj
stranici i kad si gotov, proglasiš tu drugu za aktivnu, itd.
E sad, ista tehnika se koristi ako radi sa SVGA modovima, gde se mora
pristupiti više od 64K odjednom (npr 640x480x256 - 307K) i tu se tih 307K
potrebnih za to datu rezoluciju podeli na blokove (bankove) od 64K i aktivna
bnaka se menja po potrebi.
Kako se radi ? Ako hoćeš obično listanje u nižim video modovima, koristiš
SETVISUALPAGE i SETACTIVEPAGE. Ako hoćeš da koristiš SVGA modove, onda skini
VGADOC2.ARJ i tamo piše posabno za svaki čip-set.
pascal.844mrmf,
Jel zna neko kako da nateram spiker da odsvira akord? Ili da to
bar tako nekako zvuci :)
Brada
pascal.845mmile,
-> #844, mrmf> Jel zna neko kako da nateram spiker da odsvira akord? Ili da to
> bar tako nekako zvuci :)
uses crt;
const
c = 131; e = 165; g_ = 208; š _ = # ć
c_ = 139; f = 175; a = 220;
d = 147; f_ = 185; a_ = 233;
d_ = 156; g = 196; b = 248;
var dtime : word; š delay time ć
Function Power2(n : byte) : word; š n-ti stepen broja 2 ć
begin
if n=0 then power2:=1 else power2:=2*power2(n-1);
end;
Function Frequency(base : word ; n:byte) : word;
var w:word;
begin
Frequency:=base*power2(n-1); š racuna ton n-te oktave ć
end;
Procedure Play(s,d : word);
begin
sound(s); š frekvencija s u trajanju d ć
delay(d);
end;
begin
dtime:=60;
repeat
play(Frequency(c,1),dtime); š C - dur C E G ć
play(Frequency(g,1),dtime);
play(Frequency(e,1),dtime);
until keypressed;
nosound;
readkey;
repeat
play(Frequency(d,1),dtime); š D - mol D F A ( valjda? ) ć
play(Frequency(f,1),dtime);
play(Frequency(a,1),dtime);
until keypressed;
nosound;
readkey;
end.
Ako hoces da ubrzas smanji vrednost dtime
Mozes i sam da napravis proceduru koja "izracunava" koje tonove akord sadrzi
na sledeci nacin :
Poredjas sve tonove u krug C C# D D# E F F# G G# A A# B C C#...
Ako sviras dur odaberes ton ( ciji dur sviras) pa akord izgleda ovako
1. ton koji si izabrao
2. ton koji si izabrao + ton cetiri mesta desno od njega
3. ton koji si izabrao + ton sedam mesta desno od njega
npr. C - DUR izgleda ovako
C C# D D# E F F# G G# A A# B C C#...
1 0 0 0 1 0 0 1
pa c dur cine tonovi C,E i G
Ako sviras mol onda isto samo mesto (10001001 ide 10010001)