 | |  | | Yes, at the moment you cannot compile under linux. But that will be possible once Alex writes the compiler in linoleum. 
Although it should be possible to run the compiler with dosemu (or so i think). That's a program which emulates a dos environment under linux. But i didn't check it. I should do that soon. *takes note*
But at the moment i run Linoleum programs by reading the code and variables from Windows executables. So once i have the programs compiled for windows, i can read them into Linux and execute them  | |  | |  |
|
 | |  | | ![]()  | Peterpaul kl h said: | Yes, at the moment you cannot compile under linux. But that will be possible once Alex writes the compiler in linoleum. 
... But at the moment i run Linoleum programs by reading the code and variables from Windows executables. So once i have the programs compiled for windows, i can read them into Linux and execute them  | Isn't that the same as what "cross-assemblers" do?
Might... | |  | |  |
|
 | |  | | I don't know what you mean by cross assemblers. Do you mean assemblers which can compile for both Windows and Linux, like NASM and FASM? ... Then I don't think so. Normal assemblers don't have an RTM. The RunTime Module is pure needed to make Linoleum cross platform. The cross assemblers can output object files for different OSs. So you can assemble object files for windows under linux. But this is not the same. | |  | |  |
|
 | |  | | Hah, now i can compile linoleum programs from linux. I installed dosemu, which emulates a dos environment. Now i just need to take the linux RTM for the compiler and i can develope and test the RTM completely under linux .
STATUS REPORT:
- Process Command implemented
- Timer Command implemented (hmmm, must check the READ COUNTS still)
- ...working on the Net Command

| |  | |  |
|
| written by Overtilt on Dec 09, 2003 23:17 |
| written by Alex on Dec 10, 2003 00:38 |
 | |  | | Changes on my side:
- implemented "leave" tag.
"leave" works like "end" and "fail", but doesn't set register X (EBP) to signal the state of the returning subroutine: this saves 5 bytes of code in respect to an "end" or a "fail", and 1 CPU cycle: very useful for time-critical optimization of tiny subroutines, such as the PixelFX fillers and the routines in bits.txt, and... where you think it might be useful. | |  | |  |
|
   | |  | | Ah, another way to optimize some code. That seems like a fine addition. 
I seem to have a problem with implementing the [Net Command]-section as asynchronous calls. Ofcourse i can execute the commands in a separate thread, but that complicates things... I'll implement the commands in a synchronous way, this might result in some performance loss, compared to the windows executable for the Networking commands. But my first goal was to port the environment, not to beat Alex's optimized assembly code for the RTM. We all know Alex's optimizing skills. 
Ofcourse when things work i can always execute the commands in separate threads.  | |  | |  |
|
| written by Alex on Dec 10, 2003 22:08 |
 | |  | | Yeah, yeah, don't mind at all! I agree in full: first have it functional, the rest is all optional. Plus, I heard about the original Berkeley specs were for synchronous services only, so that's probably what you're having as a problem. The WSock32.dll is an alteration of those specs, in some measure. Then I decided to follow that modification... er... I supposed it was in effects a good idea to have possibly asynchronous access.
And yep! The "leave" tag is like releasing a brake to some small & repeated subroutines, I should have thought of that before... | |  | |  |
|
 | |  | | The 'leave' tag sounds like a nice addition, Alex. How many cycles do 'leave', 'end', and jumps usually take to complete, anyway? I was just wondering how much directly embedding a function within a time critical routine, rather than calling it, could improve performance. | |  | |  |
|
| written by Alex on Dec 14, 2003 23:18 |
 | |  | | jump: 1 cycle, takes zero if: - it's aligned on pipe V - it's in a loop [branch prediction]
leave: 1 cycle plus an implicit memory access (to stack memory), averagely 4-5 cycles, uses 1 pipeline and aligns better
end/fail: 1 cycle more than "leave", but they use two pipelines | |  | |  |
|
 | |  | | Thanks Alex!
This reminds me to remind you that you should start a 'Speed of Lino Operations' thread including all speeds and optimizations that you can think of. Better yet, include a proper list directly in the next version of Lino's help files.
By the way, don't forget my previous thoughts on the help's color scheme. : D | |  | |  |
|
 | |  | | Hah, i just had the first linoleum applications talking with eachother in linux through the [NetCommand]! The network implementation isn't complete yet, but at least most of the commands have a sort of working version right now!
I just needed to say this, because i'm so glad!
/me continues working on the [Net Command]. | |  | |  |
|
 | |  | | Cool. I am happily awaiting the ability to make multi-platform releases of my projects. Do you have any close approximation of how far you currently are into this project? I won't ask for a possible release date, as any programmer knows those are rarely accurate. : D | |  | |  |
|
   | |  | | Here's again a list of the current state.
finished commands:
- [File Command]
- [Process Command]
- [Timer Command] (Hmm, i still have to check the READ COUNTS command.)
currently working on:
- [Net Command]: [EDIT] All options are implemented, but in a synchronous way. (This shouldn't raise any problems, since everything works according to the specification.) But the NETLISTEN command should be asynchronous, just because there is no other way. That's the last thing for the [NetCommand].
still to do:
And that's really a lot. Perhaps the most desired one is the [Display Command], but it's also the one that i fear is gonna be the hardest. I have to 'dive' into Xlib/XWindows programming. And i have to use the DMA (Direct Memory Access)-extension, which is hardly documented.<br> <br> For what i know now, the mouse and keyboard commands will also depend on the XWindows system.<br> <br> I'm not going to predict when this will be finished, i simply don't know. I hope as soon as possible, but that isn't a precise prediction. If people want to contribute to porting Linoleum to Linux, please let me know. The more the merrier.  | |  | |  |
|
 | |  | | Okay, i finally managed to complete the net command. There might be some minor bugs in it, but i've written a server (netrecv) which receives messages and times clients out after 30 seconds. And the results are stored in a logfile. The client (netsend) sends messages through the commandline and can terminate the server by sending: | | |  | |  | | All sockets are set in non-blocking mode. This was needed to implement the right functionality. The GETHOSTBY**** and GETPEERBYSOCKET will block and there's nothing i can do about that for now. They just didn't react any different when the sockets were set to non-blocking, but the returned results conform to the interface described in notes.txt in the network_node example directory.
So now i'll start working on the Display Command and the mouse and keyboard inputs. But this will take even longer, because there isn't a very clear manual or tutorial on programming xlib.... | |  | |  |
|
|