Hello Iliya,

If you care to look at a slightly newer version of Maru, the code archive
for Nile [1] seems to be the most modern publicly exposed copy.  As far as
raw reading from hardware without using system libraries - you're pretty
much stuck with using system libraries unless you want to tie yourself to
one hardware platform.  Based on what I can tell from the publications,
Frank is still being run as a guest process within an operating system, so
it's able to tap into libraries like SDL for graphics, and libc for
interactions with the user through standard in and out.

If you were going to attempt this yourself, the basic plan to turn Maru
into an OS would require a few different bits:

* writing a basic set of IO calls to read from the keyboard and write to
the console. If you're on a PC with BIOS instead of UEFI, you could decide
to utilize those BIOS calls to provide basic user services.  BIOS provides
interrupts for key press data [2] and VESA[3] to drive video graphics
(amongst many other services.)
 * a bootloader [4] that boots into maru (you might want to take this step
last)
* Ideally, you'd also figure out how to read and write to storage (there's
BIOS services for that as well)

It would probably make sense to test this from an emulator like qemu or
VirtualBox if you're going all the way with this.  If you're on EFI or
UEFI, you'll have find analogs for IO and graphics.

References:
1. Nile github repository (look under compilers/maru): *
https://github.com/damelang/nile*
2. BIOS keyboard interrupts:
http://webpages.charter.net/danrollins/techhelp/0106.HTM
3. VESA BIOS extensions: https://en.wikipedia.org/wiki/VESA_BIOS_Extensions
4. Wikipedia bootloader information (with sample code):
http://en.wikibooks.org/wiki/X86_Assembly/Bootloaders



On Mon, Aug 5, 2013 at 6:15 AM, Iliya Georgiev <[email protected]> wrote:

> Hello,
>
> I am using version 2.4 of Maru programming language [1]. It has a lot of
> functionality and with code length less than 100 pages in format A4, it is
> like a textbook for programming. Does anyone experiment to add
> functionality to Maru for dealing with keyboard events? I mean to get
> information when a key is pressed and released. Other Lisp implementations
> use external libraries [2, 3]. I suppose this topic will be addressed as
> pointed in the STEPS Report 2011 [4]. The report suggests a complete system
> that may replace the linux kernel and it has to deal with keyboard events.
> But anyway, I am interested to write such an extension to Maru.
> Unfortunately my research suggests that implementing this in Maru is not
> possible without using external library. I will be glad if you can give me
> some directions.
>
> Regards,
>
> Iliya Georgiev
>
> References:
> 1. Maru code repository - http://piumarta.com/software/maru/maru-2.4/
> 2. Lisp SDL bindings -
> http://code.google.com/p/lispbuilder/wiki/UsingLispbuilderSDL#Keyboard_Events
> 3. Lisp implementation of X Window System client -
> http://common-lisp.net/project/cmucl/doc/clx/12_1_Introductions.html
> 4. STEPS Report 2011 - http://www.vpri.org/pdf/tr2011004_steps11.pdf
>
>
> _______________________________________________
> fonc mailing list
> [email protected]
> http://vpri.org/mailman/listinfo/fonc
>
>
_______________________________________________
fonc mailing list
[email protected]
http://vpri.org/mailman/listinfo/fonc

Reply via email to