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