1. NoSolution Virtual Machine

As the subject suggests.. i'm currently in development of a "virtual
machine".

Not like the JVM at all however, you write assembly code for the virtual
machine and then assemble it and run it thru the virtual machine.

The assemble code that can be assembled is pretty much like the Intel
implementation of the language.

Ie:
  ; print 'Hello World' to the screen
  msgstr db 'Hello World!',13,10,0

  mov ah, 0             ; File and Device I/O function 0h
  mov al, 1             ; print to standard output
  mov eax, 0            ; print a null-terminated string instead of a
                        ; fixed amount of bytes.
  mov ebx, near msgstr  ; memory address of data to write
  int 1                 ; call the interuppt

prints 'Hello World' to the console on standard output.

Knowing how difficult assembly is to grasp i will try my best to provide a
documentation or at least a tutorial.

My goals in completing the Virtual machine are as follows:
  1) to finally complete one of the many failed applications i've tried
     to develop (gameboy emulator, interpretor, etc)

  2) to see where i stand as far as skill goes
  3) to provide a freeware developement enviroment, provided if i write
     a high level language compiler for the virtual machine.

The first binary distribution will definitely be a DOS32 program, however
i'm split between writing it in C++,Euphoria or Pascal.

Any input would be greatly appriciated!

Ian.

________________________________________________________________________
Get Your Private, Free E-mail from MSN Hotmail at http://www.hotmail.com

new topic     » topic index » view message » categorize

2. Re: NoSolution Virtual Machine

There's some advantage to being able to do this in most any language,
 however Euphoria isn't as resource hungry as some other languages.
   Of course C/C++ already implements some of these concepts , as most
 any language must. Finding the balance between a multi-platform language
 and concise low level code that has value for a variety of applications
 is always a challenge.
   The C/C++ standards take so long to eventuate , while in the meantime,
 the capabilities of a particular minicomputer aren't being utilized
 effectively.
  Something like a standard C/C++ that lets you construct further
 assembly level functions , that are called like most any other is one
 possibility. This could be useful for Euphoria to , one simple example
 augmenting sequence functions so that extended arithmetic etc , might
 be performed.  A sequence ( of arbitrary length ) , that might be
 divided by 2 [ or multiplied by 2 ], with inter-bit/byte/word/sequence carry
 being a particular example.



On 2000-08-12 EUPHORIA at LISTSERV.MUOHIO.EDU said:
 EU>As the subject suggests.. i'm currently in development of a "virtual
 EU>machine".
 EU>Not like the JVM at all however, you write assembly code for the
 EU>virtual machine and then assemble it and run it thru the virtual
 EU>machine.
 EU>The assemble code that can be assembled is pretty much like the
 EU>Intel implementation of the language.
 EU>Ie:
 EU>; print 'Hello World' to the screen
 EU>msgstr db 'Hello World!',13,10,0
 EU>mov ah, 0             ; File and Device I/O function 0h
 EU>mov al, 1             ; print to standard output
 EU>mov eax, 0            ; print a null-terminated string instead of a
 EU>; fixed amount of bytes.
 EU>mov ebx, near msgstr  ; memory address of data to write
 EU>int 1                 ; call the interuppt
 EU>prints 'Hello World' to the console on standard output.
 EU>Knowing how difficult assembly is to grasp i will try my best to
 EU>provide a documentation or at least a tutorial.
 EU>My goals in completing the Virtual machine are as follows:
 EU>1) to finally complete one of the many failed applications i've
 EU>tried to develop (gameboy emulator, interpretor, etc)
 EU>2) to see where i stand as far as skill goes
 EU>3) to provide a freeware developement enviroment, provided if i
 EU>write a high level language compiler for the virtual machine.
 EU>The first binary distribution will definitely be a DOS32 program,
 EU>however i'm split between writing it in C++,Euphoria or Pascal.
 EU>Any input would be greatly appriciated!
 EU>Ian.
 EU>____________________________________________________________________
 EU>____ Get Your Private, Free E-mail from MSN Hotmail at http://www.
 EU>hotmail.com

Net-Tamer V 1.11 - Test Drive

new topic     » goto parent     » topic index » view message » categorize

3. Re: NoSolution Virtual Machine

I'm curious...will this run just one program or several threads?

Note: There's a BIOS way to print strings so that it works before DOS has
      booted or under a non-DOS OS, though its really complicated(you have
      to read each char and output it with int 10h). I also developed a
      library I called ASA(Advanced Screen Access) for Assembly that can
      print in colors etc, etc, etc. If you want it, pass me your snail-mail
      address and I'll send you a floppy with ASA and some stuff on it(virus
      free -- I promise!)

new topic     » goto parent     » topic index » view message » categorize

4. Re: NoSolution Virtual Machine

>I'm curious...will this run just one program or several threads?

I have no plans in the future for multi threading, but that is a good idea
and demands attention, Maybe a second version as a trial but no promises :)

I understand that there are faster ways to print characters to the console
screen. If your note has something to do with the sample code i provided,
then i guess i should've specified that my virtual machine has it's own set
of interuppts, int 0 or whatever would be used for File and Device I/O.

Thanks a lot for the idea.

Ian.
________________________________________________________________________
Get Your Private, Free E-mail from MSN Hotmail at http://www.hotmail.com

new topic     » goto parent     » topic index » view message » categorize

5. Re: NoSolution Virtual Machine

On Sun, 13 Aug 2000 19:55:35 PDT, No Solution <solutionnone at HOTMAIL.COM>
wrote:

>If your note has something to do with the sample code i provided,
>then i guess i should've specified that my virtual machine has it's own set
>of interuppts, int 0 or whatever would be used for File and Device I/O.
>
>Thanks a lot for the idea.
>
>Ian.
Ummm...I'm not sure that would be safe. Interrupts below 20h are reserved
for BIOS, and even then, several interrupts are used by DOS(20, 21, 33,
etc). You might try picking random interrupt numbers above 21h using this
code:

Mov AX,35(interrupt)h
Int 21h

If ES(the interrupt's code segment) and BX(the interrupt's origin) are 0,
you've found a free interrupt.

new topic     » goto parent     » topic index » view message » categorize

6. Re: NoSolution Virtual Machine

>Ummm...I'm not sure that would be safe. Interrupts below 20h are >reserved
>for BIOS ...

Ok matt, you've missed something about the words "Virtual Machine" i'm not
actually re-writing ANY interrupts at all, instructions like mov ax,bx and
int 0 would be handled by the virtual machine, there is no native machine
code involved whatsoever. and the way the Virtual machine is progressing
right now i've removed all the registers so that all "symbols" will be
memory locations. this makes writing routines for all the instructions a
hell of a lot easier for me and more efficient for the user.

Ian.
________________________________________________________________________
Get Your Private, Free E-mail from MSN Hotmail at http://www.hotmail.com

new topic     » goto parent     » topic index » view message » categorize

7. Re: NoSolution Virtual Machine

On 22 Aug 2000, at 9:34, Darth Maul, aka Matt wrote:

> On Sun, 13 Aug 2000 19:55:35 PDT, No Solution <solutionnone at HOTMAIL.COM>
> wrote:
>
> >If your note has something to do with the sample code i provided,
> >then i guess i should've specified that my virtual machine has it's own set
> >of interuppts, int 0 or whatever would be used for File and Device I/O.
> >
> >Thanks a lot for the idea.
> >
> >Ian.
> Ummm...I'm not sure that would be safe. Interrupts below 20h are reserved
> for BIOS, and even then, several interrupts are used by DOS(20, 21, 33,
> etc). You might try picking random interrupt numbers above 21h using this
> code:
>
> Mov AX,35(interrupt)h
> Int 21h
>
> If ES(the interrupt's code segment) and BX(the interrupt's origin) are 0,
> you've found a free interrupt.


** i have not been following this thread, but this one caught my eye...

Or you could look in the books, MS published a book for each DOS they made, 
listing
all the ints and registers used and what they did. I have the books for versions
4, 5,
and 6.  Did you know you can link in a device driver as a redirect, so it won't
be in the
device driver chain, and when you are done with it, you can delete it? That was
one of
the most underused capabilities in DOS, imho, it's the precursor to the DLL,
while it is
linked, any app can use it. Once linked with a run command, you can even change
it's
abilities with software, unlike the device driver chain.

Kat

new topic     » goto parent     » topic index » view message » categorize

8. Re: NoSolution Virtual Machine

On Tue, 22 Aug 2000 10:27:54 PDT, No Solution <solutionnone at HOTMAIL.COM>
wrote:

>>Ummm...I'm not sure that would be safe. Interrupts below 20h are >reserved
>>for BIOS ...
>
>Ok matt, you've missed something about the words "Virtual Machine" i'm not
>actually re-writing ANY interrupts at all, instructions like mov ax,bx and
>int 0 would be handled by the virtual machine, there is no native machine
>code involved whatsoever. and the way the Virtual machine is progressing
>right now i've removed all the registers so that all "symbols" will be
>memory locations. this makes writing routines for all the instructions a
>hell of a lot easier for me and more efficient for the user.
>
>Ian.
>________________________________________________________________________
>Get Your Private, Free E-mail from MSN Hotmail at http://www.hotmail.com

ah, stupid me

new topic     » goto parent     » topic index » view message » categorize

Search



Quick Links

User menu

Not signed in.

Misc Menu