Commit 91d1bf8e by kollo

version 1.08

parent f150bcef
......@@ -3,12 +3,16 @@ meldung$="WSHOW (c) Markus Hoffmann 1989 - 2001"
maxfl=20000
sortstart=0
clr anzfl
clr bildcount
dim welt(3+13*maxfl),welt(4+13*maxfl),welt(5+13*maxfl)
dim welt(6+13*maxfl),welt(7+13*maxfl),welt(8+13*maxfl)
dim welt(9+13*maxfl),welt(10+13*maxfl),welt(11+13*maxfl)
dim welt(maxfl*13)
dim dist(maxfl)
dim index(maxfl)
'
'
bildcount=1
bxU=0
byU=18
bwU=640
......@@ -24,6 +28,7 @@ y2=1
z1=-1
z2=1
'
sx=0.02
sy=0.02
sz=0.1
......@@ -34,12 +39,13 @@ prozy=-4 ! Projektionszentrum
prozx=0
prozz=0
'
stx=0.8 ! Beobachterstandpunkt
sty=-0.9
stwink=(5*bildcount)*pi/180
stx=cos(stwink) ! Beobachterstandpunkt
sty=sin(stwink)
stz=0.8
'
bbx=-1 ! Beobachterblickrichtung
bby=1
bbx=sin(stwink) ! Beobachterblickrichtung
bby=cos(stwink)
bbz=-1
'
nwink=0 ! Neigungswinkel
......@@ -55,6 +61,34 @@ lichtr=50000
lichtg=65535
lichtb=65535
'
weiss=get_color(65535,65535,65535)
schwarz=get_color(0,0,0)
grau=get_color(32000,32000,32000)
gelb=get_color(65535,65535,32000)
blau=get_color(32000,32000,65535)
dim film$(73)
while exist("bild"+str$(bildcount,3,3,1)+".xpm")
open "I",#1,"bild"+str$(bildcount,3,3,1)+".xpm"
t$=space$(lof(#1))
bget #1,varptr(t$),len(t$)
close #1
put 0,0,t$
vsync
film$(bildcount)=t$
inc bildcount
wend
if bildcount>=72
film$(0)=film$(1)
do
for i=0 to bildcount-1
put 0,0,film$(i)
vsync
pause 0.01
next i
loop
endif
if not exist("welt.xxx")
......@@ -62,9 +96,24 @@ if not exist("welt.xxx")
@save
endif
@load
@sort
@save
@plot
do
stwink=(5*bildcount)*pi/180
stx=cos(stwink) ! Beobachterstandpunkt
sty=sin(stwink)
bbx=-cos(stwink) ! Beobachterblickrichtung
bby=-sin(stwink)
zwink=SGN(bby)*SGN(bbx)*ATN(ABS(bbx/bby))+PI*ABS(bby<0)
xwink=-SGN(bbz)*ATN(ABS(bbz/SQR(bbz^2+bby^2)))
@sort
@plot
savewindow "bild"+str$(bildcount,3,3,1)+".xpm"
inc bildcount
exit if stwink>2*pi
loop
alert 0,"Fertig !",1," OK ",balert
quit
procedure addfl(x1,y1,z1,x2,y2,z2,x3,y3,z3,x4,y4,z4)
welt(0+13*anzfl)=x1
......@@ -104,7 +153,8 @@ RETURN
procedure calc
local z,zz,zzz,x,y,x,yy,t
print "berechne ..."
gprint "calculate surfaces ..."
vsync
t=ctimer
' goto kug
FOR y=y2 TO y1 STEP -sy
......@@ -117,7 +167,8 @@ procedure calc
@addfl(x,y,z,x+sx,y,zz,x+sx,y+sy,zzzz,x,y+sy,zzz)
NEXT x
NEXT y
print anzfl;" Flchen. in ";ctimer-t;" Sekunden."
gprint anzfl;" Flchen. in ";ctimer-t;" Sekunden."
vsync
kug:
local r,spsp,st,phi,theta,x1,x2,x3,x4,y1,y2,y3,y4,z1,z2,z3,z4
......@@ -143,44 +194,48 @@ NEXT theta
torus:
print anzfl;" Flchen. in ";ctimer-t;" Sekunden."
gprint anzfl;" Flchen. in ";ctimer-t;" Sekunden."
vsync
return
procedure sort
local a,i,mx,my,mz,flb,t,buf$,adr,badr,ad,j
print "Berechne dist..."
local a,i,mx,my,mz,flb,t,adr,badr,ad,j
gprint "calculate distances ..."
vsync
for i=0 to anzfl-1
mx=(welt(6+13*i)+welt(13*i))/2
my=(welt(7+13*i)+welt(1+13*i))/2
mz=(welt(8+13*i)+welt(2+13*i))/2
welt(12+13*i)=(mx-stx)^2+(my-sty)^2+(mz-stz)^2
dist(i)=-welt(12+13*i)
index(i)=i
next i
PRINT "SORT:"
buf$=space$(8*13)
badr=varptr(buf$)
gPRINT "SORT:"
vsync
sort dist(),anzfl,index()
gPRINT "SWAPPING:"
vsync
adr=varptr(welt(0))
ad=8*13
t=ctimer
' randomize
' sortstart=random(0.9*(anzfl-2))
FOR i=sortstart TO anzfl-2
for j=i+1 to anzfl-1
IF welt(12+13*i)<welt(12+13*j)
bmove adr+ad*i,badr,ad
bmove adr+ad*j,adr+ad*i,ad
bmove badr,adr+ad*j,ad
welt2()=welt()
adr2=varptr(welt2(0))
FOR i=0 TO anzfl-1
j=index(i)
bmove adr2+ad*j,adr+ad*i,ad
flb=TRUE
ENDIF
next j
if ctimer-s>2
if ctimer-s>0.5
@progress(anzfl,i)
flush
s=ctimer
endif
exit if ctimer-t>30
NEXT i
sortstart=i
print "in ";ctimer-t;" Sekunden."
@progress(anzfl,i)
print
gprint "in ";ctimer-t;" Sekunden."
vsync
return
procedure save
open "O",#1,"welt.xxx"
......@@ -192,23 +247,21 @@ procedure save
return
procedure load
open "I",#1,"welt.xxx"
meldung$=space$(68)
bget #1,varptr(meldung$),64
bget #1,varptr(anzfl),8
bget #1,varptr(sortstart),8
print meldung$
gprint meldung$
bget #1,varptr(welt(0)),anzfl*8*13
close #1
print anzfl;" Flchen."
gprint anzfl;" Flchen."
vsync
return
procedure plot
weiss=get_color(65535,65535,65535)
schwarz=get_color(0,0,0)
grau=get_color(32000,32000,32000)
gelb=get_color(65535,65535,32000)
blau=get_color(32000,32000,65535)
color grau
pbox 0,0,640,400
color weiss
plottime=timer
color grau
pbox 0,0,640,400
color weiss
pxU(0)=@kx(x1,y2,z1/2)
pyU(0)=@ky(x1,y2,z1/2)
pxU(1)=@kx(x2,y2,z1/2)
......@@ -242,17 +295,9 @@ LINE @kx(x1,y1,0),@ky(x1,y1,0),@kx(x1,y2,0),@ky(x1,y2,0)
LINE @kx(x1,y2,0),@ky(x1,y2,0),@kx(x2,y2,0),@ky(x2,y2,0)
POLYline 4,pxU(),pyU()
vsync
FOR i=0 to anzfl-1
pxU(0)=@kx(welt(13*i),welt(1+13*i),welt(2+13*i))
pyU(0)=@ky(welt(13*i),welt(1+13*i),welt(2+13*i))
pxU(1)=@kx(welt(3+13*i),welt(4+13*i),welt(5+13*i))
pyU(1)=@ky(welt(3+13*i),welt(4+13*i),welt(5+13*i))
pxU(2)=@kx(welt(6+13*i),welt(7+13*i),welt(8+13*i))
pyU(2)=@ky(welt(6+13*i),welt(7+13*i),welt(8+13*i))
pxU(3)=@kx(welt(9+13*i),welt(10+13*i),welt(11+13*i))
pyU(3)=@ky(welt(9+13*i),welt(10+13*i),welt(11+13*i))
'
' brechne Flaechen-Normale
nx=(welt(4+13*i)-welt(1+13*i))*(welt(11+13*i)-welt(2+13*i))-(welt(5+13*i)-welt(2+13*i))*(welt(10+13*i)-welt(1+13*i))
......@@ -269,19 +314,35 @@ FOR i=0 to anzfl-1
' LINE @kx(x+sx/2,y+sy/2,z),@ky(x+sx/2,y+sy/2,z),@kx(x+sx/2+nnx,y+sy/2+nny,z+nnz),@ky(x+sx/2+nnx,y+sy/2+nny,z+nnz)
' DEFLINE ,0,0
colorwink=nnx*lichtx+nny*lichty+nnz*lichtz
IF colorwink<0
color schwarz
ELSE
color get_color(min(65535,1.4*colorwink*lichtr),min(65535,1.4*colorwink*lichtg),min(65535,1.4*colorwink*lichtb))
ENDIF
POLYFILL 4,pxU(),pyU()
vsync
blickwink=nnx*bbx+nny*bby+nnz*bbz
if blickwink<0
IF colorwink<0
color schwarz
ELSE
color get_color(min(65535,1.4*colorwink*lichtr),min(65535,1.4*colorwink*lichtg),min(65535,1.4*colorwink*lichtb))
ENDIF
pxU(0)=@kx(welt(13*i),welt(1+13*i),welt(2+13*i))
pyU(0)=@ky(welt(13*i),welt(1+13*i),welt(2+13*i))
pxU(1)=@kx(welt(3+13*i),welt(4+13*i),welt(5+13*i))
pyU(1)=@ky(welt(3+13*i),welt(4+13*i),welt(5+13*i))
pxU(2)=@kx(welt(6+13*i),welt(7+13*i),welt(8+13*i))
pyU(2)=@ky(welt(6+13*i),welt(7+13*i),welt(8+13*i))
pxU(3)=@kx(welt(9+13*i),welt(10+13*i),welt(11+13*i))
pyU(3)=@ky(welt(9+13*i),welt(10+13*i),welt(11+13*i))
POLYFILL 4,pxU(),pyU()
if timer-ptimer>1
vsync
@progress(anzfl,i)
ptimer=timer
endif
endif
NEXT i
@progress(anzfl,i)
vsync
print "Plotted in ";round(timer-plottime);" sec."
return
'
' BSAVE "E:\ablage\funktion.doo",XBIOS(3),32000
alert 0,"Fertig !",1," OK ",balert
quit
'
'
function f(x,y)
......@@ -343,7 +404,6 @@ FUNCTION ky(x,y,z)
ENDFUNC
procedure progress(a,b)
local t$
print chr$(13);"[";string$(b/a*32,"-");">";string$((1.03-b/a)*32,"-");"| ";str$(int(b/a*100),2,2);"% ]";
print chr$(13);"[";string$(b/a*32,"-");">";string$((1.03-b/a)*32,"-");"| ";str$(int(b/a*100),3,3);"% ]";
flush
return
' Beispiele, wie man mit Grafik-Objekten umgeht.
' Wer das AES vom ATARI ST kennt, dem kommt es bekannt vor...
strings$="Bitte whlen Sie aus:"+chr$(0)
btext1$="OK"+chr$(0)
btext2$="CANCEL"+chr$(0)
x=100
y=100
w=320
h=200
sel=9
s$=""
for i=0 to sel-1
s$=s$+str$(i+1)+chr$(0)
next i
name$="Ichbins"+string$(30,chr$(0))
buf$=space$(20)+chr$(0)
ted$=mkl$(varptr(name$))+mkl$(varptr(buf$))+mkl$(varptr(buf$))
ted$=ted$+mki$(3)+mki$(0)+mki$(0)+mki$(0x100)+mki$(0)+mki$(1)+mki$(len(name$)-1)+mki$(len(buf$)-1)
ob$=mki$(-1)+mki$(1)+mki$(5+sel)+mki$(20)+mki$(0)+mki$(16)
ob$=ob$+mkl$(0x21100)+mki$(x)+mki$(y)+mki$(w)+mki$(h)
ob$=ob$+mki$(2)+mki$(-1)+mki$(-1)+mki$(28)+mki$(0)+mki$(0)
ob$=ob$+mkl$(varptr(strings$))+mki$(16)+mki$(20)+mki$(200)+mki$(20)
ob$=ob$+mki$(3)+mki$(-1)+mki$(-1)+mki$(26)+mki$(1 or 4 or 2)+mki$(0)
ob$=ob$+mkl$(varptr(btext1$))+mki$(16)+mki$(160)+mki$(16*8)+mki$(16)
ob$=ob$+mki$(4)+mki$(-1)+mki$(-1)+mki$(26)+mki$(1 or 4)+mki$(0)
ob$=ob$+mkl$(varptr(btext2$))+mki$(170)+mki$(160)+mki$(16*8)+mki$(16)
ob$=ob$+mki$(5+sel)+mki$(5)+mki$(5+sel-1)+mki$(20)+mki$(0)+mki$(32)
ob$=ob$+mkl$(-1)+mki$(50)+mki$(50)+mki$(200)+mki$(50)
for i=0 to sel-2
ob$=ob$+mki$(5+i+1)+mki$(-1)+mki$(-1)+mki$(26)+mki$(1 or 16)+mki$(0)
ob$=ob$+mkl$(varptr(s$)+2*i)+mki$(10+i*20)+mki$(16)+mki$(16)+mki$(16)
next i
ob$=ob$+mki$(4)+mki$(-1)+mki$(-1)+mki$(26)+mki$(1 or 16)+mki$(0)
ob$=ob$+mkl$(varptr(s$)+2*(sel-1))+mki$(10+(sel-1)*20)+mki$(16)+mki$(16)+mki$(16)
ob$=ob$+mki$(0)+mki$(-1)+mki$(-1)+mki$(29)+mki$(8 or 32)+mki$(0)
ob$=ob$+mkl$(varptr(ted$))+mki$(10)+mki$(110)+mki$(16*10)+mki$(16)
~form_dial(0,0,0,0,0,x,y,w,h)
~form_dial(1,0,0,0,0,x,y,w,h)
~objc_draw(varptr(ob$),0,-1,0,0)
vsync
while mousek=0
print objc_find(varptr(ob$),mousex,mousey)
pause 0.1
wend
~form_dial(2,0,0,0,0,x,y,w,h)
~form_dial(3,0,0,0,0,x,y,w,h)
vsync
~form_dial(0,0,0,0,0,x,y,w,h)
~form_dial(1,0,0,0,0,x,y,w,h)
nochmal:
ret=form_do(varptr(ob$))
print "RET:";ret
if ret=2 ! OK
gedr=-1
for i=0 to sel-1
if dpeek(varptr(ob$)+(5+i)*24+10)=1
gedr=i
print "Sie hatten nr.";gedr+1;" gewaehlt."
endif
next i
if gedr=-1
~form_alert(1,"[3][Sie haben nix gewhlt !][OH]")
dpoke varptr(ob$)+(ret)*24+10,0
goto nochmal
endif
endif
~form_dial(2,0,0,0,0,x,y,w,h)
~form_dial(3,0,0,0,0,x,y,w,h)
vsync
print "Ihre Texteingabe war: ",name$
end
color get_color(65535,0,0)
pbox 0,0,640,400
' Test der Rsrc-Funktionen
' Es koennen ATARI ST *.RSC-Files verwendet werden...
color get_color(0,65535,0)
for i=0 to 30
circle 320,200,i*5
next i
text 10,10,"Mit der rechten Maustaste geht es weiter."
fileselect "RSC-Laden","./rsc/*.rsc","",f$
rsrc_load f$
count=0
adr=rsrc_gaddr(15,count)
while adr<>-1
t$=space$(20000)
bmove adr,varptr(t$),10000
wort_sep t$,chr$(0),0,t$,a$
print count,adr,t$
~form_alert(1,t$)
inc count
adr=rsrc_gaddr(15,count)
wend
count=0
adr=rsrc_gaddr(0,count)
while adr<>-1
print count,adr
print form_do(adr)
inc count
adr=rsrc_gaddr(0,count)
wend
rsrc_free
quit
'
' zeigt ein ATARI-ST Monochrom-Bild an (32000 Bytes)
' V. 1.08 (c) Markus Hoffmann
'
'
dim a(18000),b(18000)
arrayfill a(),0
arrayfill b(),0
gprint "shows ATARI ST monochrome pictures (32000 Bytes)"
fileselect "Datei auswaehlen:","./*.pic","f1.pic",f$
if exist(f$)
open "I",#1,f$
clr x,y,count
while y<400
a=inp(#1)
if a
for i=0 to 7
if btst(a,i)
' plot x-i+8,y
a(count)=x-i+8
b(count)=y
inc count
endif
next i
if (count mod 1000)<5 and count>2000
@showit
endif
endif
add x,8
if x>640
sub x,640
inc y
'vsync
print y,count
endif
wend
@showit
close #1
alert 0,"Fertig !",1," OK ",balert
endif
quit
procedure showit
for t=1 to 15
color get_color(65535,65535,10000)
scope b(),a(),1,t/10,200-200*t/10,t/10,320-320*t/10
color get_color(65535,0,65535)
scope a(),b(),1,t/10,,t/10
vsync
color get_color(0,0,10000)
pbox 0,0,640,400
next t
return
' So holt man daten aus dem HERA Archiv
' (c) Markus Hoffmann Letzte bearbeitung am 11.11.2002
'
' Es werden nur Daten genommen bei denen Die Hera-Energie 27.5 GeV ist.
' Filenamen des Output-Files:
outputfile$="udata.dat"
anzpar=32 ! Max. Anzahl der zu holenden Parameter
dim p$(anzpar)
anzpar=0
' Hier bitte start und stop-Zeit eingeben
' Unix-Zeit (= Sekunden ab 01.01.1970 00:00)
startperiod=1037090000-60*60*24*4 ! Start des Zeitfensters
endperiod=1037090000
do
read t$
p$(anzpar)=t$
exit if t$="***"
inc anzpar
loop
' Parameterliste: Diese Parameter werden dann geholt und auf
' gemeinsame Zeitbasis getrimmt.
' Das Ende der Liste wird mit "***" gekennzeichnet.
' Die Syntax der Parameter ist:
' Server/Arrayindex[Parname]
data "HISTORY/#0[HEDCCur]"
data "HISTORY/#0[HPDCCur]"
data "HISTORY/#248[HEOrbitX]"
data "HISTORY/#248[HEOrbitY]"
data "HISTORY/#247[HEOrbitX]"
data "HISTORY/#247[HEOrbitY]"
data "HISTORY/#195[HEVACS]"
data "***"
vmask=0x1fffff ! Maskiert die Parameter die nicht fehlen duerfen
dim advance(anzpar),lastvalue(anzpar),writevalue(anzpar),anzen(anzpar)
dim idata(anzpar,16000)
dim itime(anzpar,16000)
arrayfill anzen(),0
maxper=60*60*24 ! 1 Tag in Sekunden
days=int((endperiod-startperiod)/maxper)
print days;" Tage."
gotdays=0
' gotdays gibt einen Offset an, ab wann er die Daten holen soll
if gotdays=0
open "O",#2,outputfile$
print #2,"% Untergrundstudien von Markus Hoffmann. Daten vom "+date$+" "+time$
print #2,"% Zeitfenster vom ";startperiod;" bis ";endperiod;" =";days;" Tage."
print #2,"% 1 Run #"
print #2,"% 2 i"
print #2,"% 3 imax"
print #2,"% 4 UNIX timestamp"
for i=0 to anzpar-1
print p$(i);"[";anzen(i);"]"
print #2,"% ";i+5;": ";p$(i);"[";anzen(i);"]"
next i
close #2
else
open "A",#1,outputfile$
print #1,"% Weitergefuehrt ab dem ";gotdays;". Tag am "+date$+" "+time$
close #1
endif
runnr=0
' Hier erstmal die Energie holen (tageweise) und die Runs bestimmen
for i=gotdays to days-1
a()=tinehistory("HISTORY/#0[HEMAGEN]",startperiod+i*maxper,startperiod+(i+1)*maxper)
anz=dim?(a())/2
print anz
for j=0 to anz-1
if startfenster=0
if a(j,0)>27.4 and a(j,0)<27.7
startfenster=a(j,1)
stopfenster=0
endif
else if stopfenster=0
if a(j,0)<27.4 or a(j,0)>27.7
stopfenster=a(j,1)
m=int((stopfenster-startfenster)/60)
if m>10
tag=i
' die ersten 10 Minuten weglassen:
add startfenster,10*60
print tag;". Tag: ";startfenster;" bis ";stopfenster,m;" Min."
@getdata(startfenster,stopfenster)
endif
startfenster=0
endif
endif
next j
if i>5
gotdays=i-1
endif
next i
gotdays=days-1
quit
' Diese Routine holt nun die Daten !
procedure getdata(a,o)
local j,i,anz,otime
arrayfill anzen(),0
arrayfill itime(),0
arrayfill advance(),0
arrayfill lastvalue(),1e-25
clr imax,scip,count
print "collect: [";
for j=0 to anzpar-1
b()=tinehistory(p$(j),a,o)
anzen(j)=dim?(b())/2
count=max(count,anzen(j))
for i=0 to anzen(j)-1
itime(j,i)=b(i,1)
idata(j,i)=b(i,0)
next i
print ".";
flush
next j
print "]=";count
open "A",#2,outputfile$
m=(o-a)/60
h=int(m/60)
m=m mod 60
print #2,"% Periode vom ";a;" bis ";o;" ";tag;". Tag. ";h;"h";str$(m,2,2,1)
clr i,scip,oimax,fxcount
while imax<count
if imax-oimax>int(count/100)
@progress(count,imax)
oimax=imax
endif
otime=1e20
for j=0 to anzpar-1
if anzen(j)
if itime(j,advance(j))<otime and advance(j)<anzen(j)
otime=itime(j,advance(j))
endif
endif
next j
clr unvollstaendig,changed
for j=0 to anzpar-1
if itime(j,advance(j))=otime
writevalue(j)=idata(j,advance(j))
if writevalue(j)<>lastvalue(j)
changed=bset(changed,j)
lastvalue(j)=writevalue(j)
endif
while itime(j,advance(j))=otime and advance(j)<anzen(j)
advance(j)=advance(j)+1
wend
else
writevalue(j)=lastvalue(j)
endif
if writevalue(j)=1e-25 or abs(writevalue(j))>1e30
unvollstaendig=bset(unvollstaendig,j)
endif
imax=max(imax,advance(j))
next j
if (unvollstaendig and vmask)=0 and changed<>0
print #2,runnr;" ";i;" ";imax;" ";otime;" ";
for j=0 to anzpar-1
print #2,writevalue(j);" ";
next j
print #2
else
inc scip
endif
inc i
wend
@progress(count,imax)
print " Skipped "+str$(scip/i*100,3,3);"% ";
if scip/i=1
print bin$(unvollstaendig,anzpar)
else
print
inc runnr
endif
close #2
return
procedure progress(a,b)
local t$
print chr$(13);"[";string$(b/a*32,"-");">";string$((1.03-b/a)*32,"-");"| ";str$(int(b/a*100),3,3);"% ]";
flush
return
Dies sind einige Beispielprogramme mit teils
groesserem Umfang fuer X11-Basic.
Sie sollen als Anleitung und Anregung fuer eigene
Programme diehnen.
Viel Spass damit.
Markus Hoffmann
Summary: Example basic program sourcefiles for X11-Basic
Vendor: Markus Hoffmann
Name: X11Basic-examples
Version: 1.07
Release: 10
Copyright: GPL
Group: Development/Languages
URL: http://x11-basic.sourceforge.net/examples/
Packager: Markus Hoffmann <m.hoffmann@uni-bonn.de>
%description
Thease are example programs for X11-Basic. Some are not completed so far and
will not work correctly. This is not because of bugs of the interpreter
itself.
Have fun.
regards Markus Hoffmann
=======================================================================
Dies sind einige Beispielprogramme mit teils
groesserem Umfang fuer X11-Basic.
Sie sollen als Anleitung und Anregung fuer eigene
Programme diehnen.
Viel Spass damit.
Markus Hoffmann
Authors:
--------
Markus Hoffmann <m.hoffmann@uni-bonn.de>
%changelog
* Tue Mar 07 2002 Markus Hoffmann <m.hoffmann@uni-bonn.de>
included manual
* Tue Jan 01 2002 Markus Hoffmann <m.hoffmann@uni-bonn.de>
2nd release
* Tue Aug 28 2001 Markus Hoffmann <m.hoffmann@uni-bonn.de>
1st release
......@@ -257,12 +257,12 @@ py_data: ! x: von bis y: von bis step x step y
DATA -5, 5, -3, 3, 1, 1
PROCEDURE bkoordinate(tx$,ty$)
LOCAL x,y
DEFLINE 1,1,0,1
DEFTEXT 1,0,0,4
DEFLINE ,1,0,1
DEFTEXT ,0,0,4
READ koa,kob,koc,kod,koe,kof
LINE @bx(koa),@by(0),@bx(kob),@by(0)
LINE @bx(0),@by(koc),@bx(0),@by(kod)
DEFLINE 1,1,0,0
DEFLINE ,1,0,0
FOR x=0 TO MAX(ABS(koa),ABS(kob)) STEP koe
LINE @bx(x),@by(0)-2,@bx(x),@by(0)+2
LINE @bx(-x),@by(0)-2,@bx(-x),@by(0)+2
......@@ -281,12 +281,12 @@ PROCEDURE bkoordinate(tx$,ty$)
RETURN
PROCEDURE kkoordinate(tx$,ty$)
LOCAL x,y