Hi Pete

Under this small letter you'll find the how-to-tutorial on building a
shell for qbinux.
I'd still like to say: Thumbs up for you... Man, how do you keep on doing it?
I mean... you're always out and about doing things... And everytime you amaze
me with a new QB Express... I'm always waiting for it... Sometimes it's just
about my own article but when I see the QB Express I just have to read it
completely...
Anywayz... keep up the good work!!

Grtz
Seb

How-to-tutorial: How to build a shell for Qbinux... Part 1

Shell, what's that?
--------------------------
You might know the SHELL-command in Qbasic/QB. And if you run it just
as SHELL, you'll get a commandprompt. And that's the shell. If you
don't have a shell... your OS simple won't work. The Shell
communicates your commands to the kernel which will run it.
In Qbinux, just like in Linux, Shell is the first program to be loaded
when you log in, and keeps on running until you log out.

You have downloaded Qbinux and you think... Qbash is not really the
thing I want... I want to create more sumfin of my own...
It's possible...

What do you need?
----------------------------
The Qbinux core ofcourse... And some experience in programming.
In order to get more comfortable with this, we first gonna build a
basic shell... which is not capable of doing anything yet but it's a
start. Along the way you can add things you'd like to see in your own
shell.
And remember, if you have any questions... don't hesitate to e-mail me.

Create a new file call sh.qs0 or whatever-name-you-like.qs0 and place
it into the map shell. Then edit the compile.bat file and change the
qbash to your shell.

For a non-working-basic-shell you need the following code:

[code]ff = FREEFILE
IF CVL(CurDrive) = 0 THEN cp$ = "root:"
DIM dm(2048) AS STRING
DO
IF CurDir <> ocdir$ THEN
 ocdir$ = CurDir
 cp$ = ""
 t$ = CurDir
 IF t$ <> MKL$(0) THEN
   DO
   t$ = GetName(LEFT$(t$, 4), 1)
   cp$ = cp$ + RIGHT$(t$, LEN(t$) - 4), 1)
   LOOP UNTIL LEFT$(t$, 4) = MKL$(0)
   cl = 0
   FOR a = 1 TO LEN(cp$)
          t$ = MID$(cp$, a, 1)
          IF t$ <> "/" THEN
            g$ = g$ + t$
          ELSE
            dm(cl) = g$
            cl = cl + 1
            g$ = ""
          END IF
   NEXT
   cp$ = ""
   FOR a = cl -1 TO 0 STEP 01
          cp$ = cp$ + dm(a) + "/"
   NEXT
 ELSE
   IF CurDir <> MKL$(0) THEN
     t$ = GetName(CurDir, 1)
     cp$ = RIGHT$(t$, LEN(t$) - 4) + "/"
   ELSE
     cp$ = ""
   END IF
 END IF
END IF
IF pcom = "" THEN
 PRINT cp$;"#";
 LINE INPUT "", com$
ELSE
 com$=pcom$
END IF
[/code]

That's it for now. Till next time.

Seb McClouth
http://mcclouth.tk or http://www.freewebs.com/qbinux
balai_goyan@yahoo.com