Experimental Programming Language and Win32 IDE
In 2008, I started to develop an experimental programming language, compiler and linker from scratch. Without using a third-party compiler, linker, assembler, library, etc. I completed it. I created the structure and the working principle in a unique way. So, it is a completely unique project. This project is a Win32 compiler, linker and a development environment at the same time.

I completely wrote the project in Assembly Language. So, the project size is only 53 kb and the default compiled exe size is 3 kb. The file size expands according to the code you write. My aim was not to develop a new language, product, etc. There is no need either. I just wanted to create an experimental project.

Project Information
Development Year:2008
Programming Language:x86 Assembly
Operating System:Windows XP+
Language:English
Size:53 KB
Important Update (2023) I designed this project for the Turkish Language in the past and later I decided to translate it into the English language, completely. The whole programming language and UI are using English words now. The variable types like "sayı", "karakter" have become "number", "character". The component properties like "yazı", "boyut" have become "text", "size", etc. The commands, the events, everything is translated. While I was translating the project, I didn't add something new but I fixed some minor bugs. It is still a very old project and I stopped working on it in 2010. I was using a 1024x768 monitor in these years. You can configure the form components as you like in the development environment. Expand, hide, etc. I also stored and read these in my own way. There is no resource section in the executable file. Usage I added 5 different components for the interface. "Button, combobox, edit, listbox and static." You can add these components to the form by clicking the buttons on the top, you can adjust properties on the right screen. You can add events, as well. In the lower part, there is an information screen. You can see incorrect lines of code and status from there. The code screen and the form stand in back-to-back. You can easily switch using the buttons at the top. And finally you can compile and run with the buttons on the top right. You can find the compiled executable file in the project folder. Programming Language Defining Variables: There are two types of variables. number and character number: number is a signed integer data type and it can store a 32 bit number. Usage:
1number value
2number value=254
character: character data type can store a character array. Usage:
1character[10] str
1character[10] str=test
We defined str and initialized it with "test". We use variables with exclamation(!) symbol.
1!value=4
2!value=!othervalue
and You can make calculations. Usage:
1!value=!value+1
2!value=1+3*4/2
3!value=!othervalue+2*5
You can also assign character variables to each other.
1!str=!otherstr
Components There are 5 different components. "Button, combobox, edit, listbox and static." Warning: Component properties should not be changed in the main code block. Using events like "starting" (When the application is starting), "exiting" (When the application is exiting), "clicked", etc. is recommended. Otherwise, the code you have provided will update the component infinitely in the main window loop. Wrong Usage (X):
1variables
2code
3button1.text=test
4end
Correct Usage (✔):
1variables
2code
3starting
4button1.text=test
5eventend
6end
Text changing
1button1.text=test
2button1.text=!variableText
3edit1.text=test
4edit1.text=!variableText
Position adjustment
1button1.position(24,43)
2button1.position(!x,!y)
Size adjustment
1button1.size(50,100)
2button1.size(!width,!height)
Enable/Disabled
1button1.enabled
2button1.disabled
Show/Hide
1button1.show
2button1.hide
Add an element to the listbox
1listbox1.insert=test
2listbox1.insert=!variableText
Add an element to the combobox
1combobox1.add=test
2combobox1.add=!variableText
Delete an element from the listbox
1listbox1.delete=0
Delete an element from the combobox
1combobox1.remove=0
Other functions Close:
1exit
Message Box:
1messagebox(title,text)
2messagebox(!variableTitle,!variableText)
3messagebox(test,!variableText)
Events When the program is starting:
1starting
2messagebox(test,test)
3eventend
All events end with the "eventend" tag.
1eventend
When the program is closing:
1exiting
2messagebox(test,text)
3eventend
When a button component is clicked:
1clicked
2
3button1
4exit
5eventend
6
7button2
8messagebox(test,text)
9eventend
10
11eventend
Usage:
1button1
2exit
3eventend
When an edit component is changed:
1changed
2
3edit1
4exit
5eventend
6
7edit2
8messagebox(test,test)
9eventend
10
11eventend
When a combobox component is selected:
1cbselected
2
3combobox1
4exit
5eventend
6
7eventend
When a listbox component is selected:
1lbselected
2
3listbox1
4exit
5eventend
6
7eventend
When a listbox component selection is changed:
1lbselectionchanged
2
3listbox1
4exit
5eventend
6
7eventend
Conditionals You can compare variables, numbers, variable-numbers, etc. >, <, >=, <=, = You can use these operators for comparison. Comparisons can be nested. Usage:
1if(!abc>2)
2messagebox(test,test)
3ifend
We use this tag for ending the comparison.
1ifend
Loop Usage:
1loop(!value<15)
2messagebox(test,test)
3!value=!value+1
4loopend
Nested loops can be used. Functions You can define your functions. Usage:
1function testFunc
2!a=!a*2
3!b=2+3+!a
4funcend
We use this tag to end the function
1funcend
We call the function by using this code.
1call testFunc
Usage:
1fonksiyon testFunc
2!a=!a*2
3!b=2+3+!a
4funcend
5
6...
7
8call testFunc
Error Messages Variable block could not be found. Code block could not be found. Code block not closed. The most primitive program block that can be
1variables
2code
3end
Variables block must take the first place.
1variables
Component could not be found: You must add the component you defined in the code. There is an unclosed block: You must close a condition, loop or event, etc. The programming language is processed line by line. Do not use unnecessary spaces in a single line. Examples Warning: There may be invisible spaces and characters in the copied and pasted example code. Program1: At first, place two buttons on the form. Code:
1variables
2character[10] title=test
3character[15] text=test2
4code
5
6clicked
7button1
8messagebox(!title,!text)
9eventend
10button2
11exit
12eventend
13eventend
14
15end
Program2: Place one button on the form. Code:
1variables
2number !x=0
3number !y=0
4code
5
6clicked
7button1
8
9loop(!x<200)
10button1.position(!x,!y)
11!x=!x+1
12!y=!y+1
13loopend
14
15eventend
16eventend
17
18end
Program3: Place one button and one listbox on the form. Code:
1variables
2number x=0
3character[3] str=ok
4code
5
6clicked
7button1
8
9loop(!x<8)
10listbox1.insert=!str
11!x=!x+1
12
13if(!x=4)
14messagebox(half,half of the loop)
15ifend
16
17loopend
18
19eventend
20eventend
21
22starting
23messagebox(hello,hello)
24eventend
25
26exiting
27messagebox(bye,bye)
28eventend
29end