Hello.
I was using oxygen help and noticed some pages are missing. In particular I did not find:
CALL, JMP, RET, #RETURN, YVAL.
Is there any information on these functions?
Thank you.
It looks to me like assembler functions
i never use them.
I think so too. If Charles told us their use we could add them to the help.
Hello Charles
Can you guard us on this issue?
Thanxx a lot
Hi,
I am making this change to the help.
What do you think?
Cheers
13-01-2022 new version with new additions. I started writing on the CONSOLE.
25-01-2022 new version with best index.
02-02-2022 improvements on content and visuals.
first
Merry Christmas
I am not sure how this Help really can Help
if user don't know how things work in OxygenBasic..
I am user long time (almost from beginining) but i still learn some
things testing old programs or looking into examples in this case i look into old
Peter Wirbelauer sw.inc app called deep
and yes ..for example JMP is similar like GOTO ( means JUMP ) ..loook into code :
'example deep - using sw.dll by peter wirbelauer version A41
include "sw.inc"
window 800,600,1
setFps (16)
'test jmp / comment| uncomment next line
JMP the_end
string salt = "INTO THE DEEP"
single a,cx,cy,i,w,h,y
sys tcolor
w=800/2 : h=600/2
p = len(salt)
while key(27)=0
cls rgb(0,0,0)
for i=1,360
cx = w+sin(i-a)*i
cy = h+cos(i-a)*i
tcolor= rgb( i-105, i-105, 0)
'! FillCircle Lib "sw.dll" (sys xpos,ypos,r1,color) as sys
fillcircle cx-20,cy+70,2*a ,tcolor
cx = w+sin(i+a)*i
cy = h+cos(i+a)*i
'color i-105, 0, i-105
tcolor = rgb(i-105, 0, i-105)
fillcircle cx-20,cy+70,3*a,tcolor
cx = w+sin(i-a)*i
cy = h+cos(i-a)*i
tcolor = rgb(i-105, i, i-105)
fillcircle cx-20,cy+70,4*a, tcolor
cx = w+sin(i+a)*i
cy = h+cos(i+a)*i
tcolor = rgb(i, i-105, i-200)
fillcircle cx-20,cy+70,2*a, tcolor
a = a + 0.1
if a>=8 then a = -a
next
for s=1 to p
'color 255,255,255
text 900,200+s*20,20,mid(salt,s,1)
next
sync()
wend
'winEnd
'jump to labele here:
the_end:
print "test JMP ...THE END"
so program simply jump over code to label the_end
the above program looks (see attachment)
according to help
do you know what this means ?
while key(27)=0
that means while loop running until key ESC is not pressed
simple ..? or is not ?
this is just one really simple question..right?
few years back i was tried to write some sort of help but that is a huge work
it is the best to learn from examples..test it ..modify it .
i know that would be great to have one big help file but oxygen basic
examples use different libs to make programs ..there is not standard GUI wrapper or gfx layer for
programs there are sdl,mine awinh,peter window,sw Charles coreWin ..etc etc..
Aurel, I agree.
Here is the importance of the forum. Through the things we write and ask and answer we help ourselves to understand.
It is also interesting the things you wrote about the various "inc".
However I saw that sw.inc is in project C and it is for scriptbasic ... and the sw.dll is not there ...
I just checked C projects folder
and i am surprised why is this sw.inc there
but what I see ..it is not original sw.inc by Peter Wirbelauer
and why would be in scriptbasic folder .
And also i think that any connection with scriptBasic should be removed from
OxygenBasic files , simply because there is no any benefit using this files .
The similar opinion i have about Thinbasic files, o2 should be more for oriented to himself.
if you wish i can post sw.inc and sw.dll i have on my computer ?
yes thanks,
I'd like to try the program you posted.
OK
code you have above
in attachment are sw.inc and sw.dll
Thanks Aurel.
Unfortunately I am unable to run the program.
He opens the window but says that the program is not responding and shows nothing.
I tried to compile it, but when I start the compiled program it doesn't find the dll. What directory should I put it in when I want to use the compiled program?
I tried JMP ... as you said it works the same way as goto ...
Hello
must be all in one folder
deep.o2bas
sw.inc
sw.dll
oxygen.dll
program is JIT compiled in memory so require oxygen.dll
that is a main rule
Hi Aurel,
thanks for the tips.
However, unfortunately I was unable to run the program. If I compile it in 64-bit it always looks for the sw.dll, if I compile it in 32 the program "does not respond", if I simply do F5 the same program "does not respond" ... the pc i use has the win10 64bit
I also tried on another 32bit laptop with win10 and even there the program "does not respond" ...
Where am I wrong?
On the other hand, I managed to adapt this other program (PONG) quite easily.
This runs quietly ...
'ScriptBasic PONG by Peter Wirbelauer
'adapted to O2 by NP
'INCLUDE "sbsw.inc"
INCLUDE "sw.inc"
Window 320, 240, 1
SetCaption "OxygenBasic Pong"
SetFPS 60
sys x = 50, y = 50, x2 = 130, y2 = 150, pspeed = 4, xadj = 2, yadj = 2
sys delay = 1, score = 0
sys haha = loadwav("wav/haha.wav"), pong = loadwav("wav/pong.wav")
WHILE Key(27) = 0
Cls RGB(200, 200, 247)
FillCircle x, y, 8, RGB(0, 0, 255)
FillBox x2, y2, 30, 4, RGB(255, 255, 255)
'Box 20, 20, 280, 160, 4, RGB(255, 255, 0)
Box 20, 20, 280, 160, RGB(255, 255, 0)
Text 10, 0, "SCORE:" & score, RGB(255, 0, 0)
IF y <= 20 THEN
yadj = 1
PlayWav pong
END IF
IF y >= 180 THEN
yadj = -1
PlayWav pong
END IF
IF x >= 290 THEN
xadj = -1
PlayWav pong
END IF
IF x <= 20 THEN
xadj = 1
PlayWav pong
END IF
IF Key(37) AND x2 > 18 THEN x2 = x2 - pspeed
IF Key(39) AND x2 < 270 THEN x2 = x2 + pspeed
x += xadj
y += yadj
IF y > y2 - 7 AND y2 < y2 + 2 AND x < x2 + 30 AND x > x2 THEN
yadj = -1
score += 1
END IF
IF y > y2 + 10 THEN
Text 100, 200, "GAME OVER!", RGB(0, 160, 55)
Playwav haha
Waitkey
score = 0
x = 50
y = 50
x2 = 130
y2 = 150
END IF
Sync
WEND
CloseWindow
... however this dll is really nice in its simplicity and versatility ... :)
I am really not sure why not work for you
for me work because i compiled it with older A41 version of compiler
i don't tried with new-er or latest
I see that you use OxIde but should be the same ,...
hi nicola
this one i tested on 0.28 selfcompiled
there are few changes in strict definition of variable and in while key(27) event loop.
check code
'example deep - using sw.dll by peter wirbelauer version A41
include "sw.inc"
window 800,600,1
setFps (16)
'test jmp / comment| uncomment next line
'JMP the_end
string salt = "INTO THE DEEP"
single a,cx,cy,i,w,h,y
sys tcolor,s
w=800/2 : h=600/2
int p = len(salt)
'int KeyHit = key(0)
'int Escape_Key = 27
While key(27)=0
cls rgb(0,0,0)
for i = 1 to 360
cx = w+sin(i-a)*i
cy = h+cos(i-a)*i
tcolor= rgb( i-105, i-105, 0)
'! FillCircle Lib "sw.dll" (sys xpos,ypos,r1,color) as sys
fillcircle cx-20,cy+70,2*a ,tcolor
cx = w+sin(i+a)*i
cy = h+cos(i+a)*i
'color i-105, 0, i-105
tcolor = rgb(i-105, 0, i-105)
fillcircle cx-20,cy+70,3*a,tcolor
cx = w+sin(i-a)*i
cy = h+cos(i-a)*i
tcolor = rgb(i-105, i, i-105)
fillcircle cx-20,cy+70,4*a, tcolor
cx = w+sin(i+a)*i
cy = h+cos(i+a)*i
tcolor = rgb(i, i-105, i-200)
fillcircle cx-20,cy+70,2*a, tcolor
a = a + 0.001
if a>=8 then a = -a
next i
for s=1 to p
tcolor = rgb(225,225,155)
'! Text Lib "sw.dll" (sys xpos,ypos,string text,sys color) as sys
Text 400, 200+s*20, mid(salt,s,1), tcolor
next s
sync()
wend
'winEnd
'jump to labele here:
'the_end:
'print "test JMP ...THE END"
..also
i just tried to compile OxIDE from package and found that some things not work
configuration file is not loaded ..why ..i don't know
compile ..F5 not work in my case too
i set code
% SCLEX_OBASIC = 75
'
def sm SendMessage hsci,
'
'3 cpp
'8 vb ***
'40 lout
'51 powerbasic
'75 freebasic
sm SCI_SETLEXER, SCLEX_OBASIC ,0 'Oxygenbasic lexer
sclex was with number 200 ... :o
that is strange because i have old version i think running ,it looks that code
for oxIde is not updated ..i am not sure ..
Aurel,
I checked the listing and found the catches. I didn't think I had to check the syntax ...
Anyway it's ok. works without problems.
But remains the problem of the 64bit compilation that still does not find the DLL although I have put it both where it is oxide, and in the directory of DEEP.o2bas ... (Charles could help me understand this thing)
An interesting and beautiful thing, I add a value + 0.0001 (a = a + 0.0001) and the resulting effect is really beautiful. :-*
well as far as i know OxIde is 32bit program.
Ok i will try compile 64 bit app on win7_64 bit to see how Aurel Edit work
then i can tell you...
Thanks Aurel.
Speaking of OXIDE, I don't hide the idea that I'd like it to have more accurate bug reporting.
Often it seems like everything should be fine and instead there are errors that go unnoticed ... and I don't have the ability to implement such a thing. :'(
Cheers
Hi,
What is the use of the SKIP command / function?
skip ???
never see this thing
but if SKIP is command or function proably then skip over something .
i am wondering where you find this thing ?
wait a moment
i just download help chm file you posted
who made this one ...i have never saw it before ???
edit;;;
QuoteThis Help was compiled by nico18n (Nicola Piano) - agosto 2021
so i see you made it ..great ..
may i ask you in what you made it ...
i am using old waHelp but i have some freakin problems with this program( i think that have bugs )
There is a lot of material on x86 Assembler on the web. You can lookup X86 instruction set
But to see some live asm in o2 there are som base functions in inc/RTL32.inc and inc/RTL64.inc
LCASE example:
'------------
lcases: '2328
'============
'
push esi
mov esi,[esp+8]
mov edi,0
cmp esi,0 'null string test
jz lwrx1
mov edi,[esi-4]
lwrx1:
push edx
push edi
push 0
call SysAllocStringByteLen
pop edx
mov ecx,edi
mov edi,eax
push eax
and edx,0xff 'supporting wide code
lwrr:
sub ecx,edx
jl lwrx
mov al,[esi]
cmp al,65
jl lwrn
cmp al,90
jg lwrn
add al,32
lwrn:
mov [edi],al
add esi,edx
add edi,edx
jmp lwrr
lwrx:
pop eax
pop esi
ret 4
Thanks Nicola for your help file. I will take a look ASAP
Not at all Charles. :)
Thanks to you for the precious o2b.
If you see something to fix write it to me ...
Where can I find examples with "==", "#return", "yval"?
Maybe when you can give us other ideas to see.
Quote from: Zlatko Vid on December 25, 2021, 05:18:43 PM
And also i think that any connection with scriptBasic should be removed from
OxygenBasic files , simply because there is no any benefit using this files .
The similar opinion i have about Thinbasic files, o2 should be more for oriented to himself.
I agree, additional things about other projects only get in the way of learning with O2
I also believe it is right to focus on O2B
OK. I can consign ProjectsC to a legacy folder on GitHib.
PS:
yval looks like a typo
#return is obsolete
jmp call ret are x86 assembly code instructions, and commonly used for other processors.
Charles Pegge, I think that this way you could add content to VBA, there are thousands of users who use it to automate their projects in MS office package, for easy use for laymen until Corel bought and implemented it.
for most things vba is self sufficient, but lacks speed in some cases, and mostly lacks a way to mask your code.
maybe it was a way to attract developers to O2 interested in developing for a specific market
Quote
And also i think that any connection with scriptBasic should be removed from
OxygenBasic files , simply because there is no any benefit using this files .
The similar opinion i have about Thinbasic files, o2 should be more for oriented to himself.
by Zlatko
I second this move
This is true, it is pointless to keep a useless script basic
Also I second Eduardo's move to help VBA programmers to migrate to O2
Yes, being able to work on office documents with a separate VBA program is a great idea.
In fact I had asked how one could read / write on an xls / xlsx document.
Hi Charles,
I have updated the o2 help file.
25-01-2022 new update.
http://www.jose.it-berater.org/smfforum/index.php?topic=5772.msg24462#msg24462
Hi.
Please I would need to have accurate information on the commands / functions implemented with "CONSOLEG.INC"
I tried some examples, they are beautiful.
I'd like to add this help info ...
Charles, please ... :)
Cheers
Dear Charles,
i was updating the help and i noticed that the examples related to
STRUCTUREOF
ENCODINGOF
RECORDOF
don't work.
Error: not defined
Word: r
line: 2
type vt long v,double d
dim as vt v : r=recordof v
Hi Nicola,
without #autodim enabled, r needs to be: dim as string r.
this is a current list of all the attributes from oxsc\lang.inc
sizeof 11 1 4
offsetof 11 2 4
countof 11 3 4
spanof 11 3 4
bytesof 11 4 4
typeof 11 5 193
structureof 11 6 193
encodingof 11 6 193
prototypeof 11 7 193
typecodeof 11 8 4
recordof 11 9 4
widthof 11 10 4
ptrlevelof 11 11 4
metatypeof 11 12 193
strptr 11 21 8
lpartof 11 31 0
rpartof 11 32 0
vtypeof 11 33 0
dim string r
type vt long v,double d
dim as vt v
r=recordof v
print r
now it looks like it's ok.
thanks charles
result is
983
16
8892
0
0
983
0
0
v
[ebx+8892]
vt
In the early days, autodim was the default. This makes short demo code easier but it's a serious hazard for any project of significant scale.
ok, then i will correct the example that is on the help.
Ciao
Hi Nicola,
If you still updating this help file, maybe you can adjust Asc()...
//asc() can be used not only as a function but as a statement also.
string sString = "12345"
asc(sString, 3) = 120 // give "12x45" (120 is ascii for "x")
Many thanks for your work, it is really appreciated...
Also, inner is missing...
Regards