SHELL v2.5 ... die Shell fr den Psion Serie 3a .. von Marko Schuster 1994

NEWS: siehe am Ende des Files!
                    
                    0. Copyright

Diese Version von Shell ist nicht Public Domain, sondern FD.
Das Copyright bleibt weiterhin bei mir. Das Prg. darf jedoch
frei kopiert werden. Nein, es MUSS sogar frei kopiert werden,
es darf nicht verkauft werden.
Der Source lieg brigens dem Programm _nicht_ bei,
Hinweise, Tips, Tricks, Prozeduren, Wnsche ... bitte an mich.


                    1. Wozu eine Shell ?
                    
Der (eigentlich ja 'die'... egal) Psion Serie 3a (ab sofort als PS3a abgekrzt)
hat zwar umfangreiches Dateimanagement in der Oberfl„che eingebaut, aber
es gibt doch noch ein paar richtige Computerfreaks, die es bevorzugen,
ihre Dateien 'von Hand' zu kopieren. Zu so einem geh”r ich auch. Auáerdem
ist SHELL leicht erweiterbar, bzw. mittlerweile sehr vielseitig schon
erweitert.


                    2. Was kann die Shell?
                    
* alle von Tischcomputern her bekannte g„ngigen Shell-Befehle
* PICs anzeigen, mit/ohne grey-planes, ver. Bitmaps etc.
* Batch-Dateien ausfhren
* OPO/OPAs laden und Prozeduren starten
* Befehl-Puffer
* WVE-Datein abspielen
* verschiedene Fonts benutzen


 
                    3. Wie arbeite ich mit der SHELL?
                    
Ganz einfach: Die Befehle eingeben. Dies geschieht mittels des
OPL-Befehls "EDIT". Das heiát, daá am Ende der Eingabezeile keine
neue Zeile angefangen wird, sondern die Zeile durchscrollt. Editieren
des Textes ganz normal mit den Cursor-Tasten usw. und ein RETURN (ENTER)
fhrt den Befehl aus, w„hrend ein ESC die Zeile l”scht.
Drckt man nun, w„hrend die Zeile leer ist, nocheinmal ESC, kann man dadurch
die letzten 9 Eingaben durchbl„ttern (Befehl-Puffer). So ist es also
ganz einfach m”glich, im nachhinein Tippfehler auszubessern, oder zu
ver„ndern. Wenn man ganz durch ist, wird wieder von vorne (bzw. von hinten..)
angefangen.
Diesen Puffer kann man sich auch auf einmal anzeigen lassen mit dem
Befehl "+". Es wird dann per Dialog-Box alle verfgbaren, max. 9, Buffer-
Zeilen angezeigt und es kann die ausgew„hlt werden, die neu editiert werden
soll. Sie erscheint dann beim n„chsten Prompt in der n„chsten Eingabezeile.
Der Befehl "+" wird dabei nicht in den Puffer bernommen.

Ausgabeumleitung: Ab v2.5 kann eine Ausgabeumleitung in ein File
gemacht werden. Dabei muá als 2. Wort, also direkt nach dem Befehl
ein >file stehen. file ist dabei der filename, bei NIL: oder NUL: wird die
Ausgabe unterdrckt. Beispiel: dir >dir.txt M:\OPL\ wrde die Filenamen des
Verzeichnisses M:\OPL\ in die datei dir.txt schreiben. 

                    
                    4. Hinweise
                    
Das Prg. "EXPWIN2.OPA" muss in M:\APP\ vorhanden sein. Es ist eine kleine
Prozedur (eigentlich zwei) fr sog. 'exploding windows'. 
Falls eine Batch-Datei 'M:\autoexec.bat' besteht, wird diese ausgefhrt,
sie kann z.B. wie in dem Beispiel in diesem Archiv, den PROMPT-Befehl
enthalten, FONTs umschalten etc. Ferner ist im Archiv ein Prg. ED_BAT.ALS,
das ein Alias-File der Word-Applikation ist, und reine ASCII-Datein im
Verzeichnis \BAT mit der Endung .bat erstellen/„ndern l„át (autoexec.bat
kann man editieren, wenn man TAB drckt und das File im Hauptverzeichnis
anw„hlt!)
Wenn der Befehl nicht vorhanden ist, wird nach .OPO, .OPA und .BAT in
den einschlaegigen Verzeichnissen gesucht. OPOs und OPAs werden dabei
nur NACHGELADEN (LOADM), nicht gestartet. Achtung: Wenn das aktuelle
Verzeichnis auf REM:: liegt, wird in REM::A:, REM::B: und REM::M: gesucht..
Bei den eingebauten Befehlen, die einen Parameter ben”tigem kann man diese
ganz einfach anzeigen lassen, indem man einfach den Befehl ohne jegliche
Parameter eingibt. (Auf 'normalen' DOS/SHELLs máte man da ja -? oder /?
angeben.) Beispiel: COPY zeigt COPY <source> <dest>
                    
                    
                    5. Die Befehle (Kommandos)

Wie in Anleitungen blich: <parameter> bedeutet: der Parameter _muá_
angegeben werden, w„hrend [<parameter>] freiwillig ist.
Beim Befehlsnamen mssen zumindest die groágeschriebenen Buchstaben
eingegeben werden. Beispiel: RemDir bedeutet, daá man entweder REMDIR
oder RD eingeben kann. Selbstverst„ndlich ist die GrOá/kLeInScHrEiBuNg
egal.. kann also auch rd oder rEmdIr oder sonstwie eingegeben werden.
Ebenfalls vernachl„ssigt werden SPACES vor dem Befehl, nach dem Befehl
und zwischen den Parametern (Zwischen den Parametern MUSS mind. 1 Space
sein, wenn mehrere dabei sind, werden sie ignoriert. Ebenfalls darf ein
Parameter KEINE Spaces enthalten. Das hat z.Z. leider noch den Nachteil,
daá bei Filenamen mit Leerzeichen das Leerzeichen durch ? ersetzt
werden muá... wobei wir auch gleich bei den Jokern w„ren: ? ersetzt
ein beliebiges Zeichen, ein * ersetzt beliebig viele. Die Ausgabe
kann man - wie in OPL-Programmen blich - mit CTRL (STRG) - S anhalten.


+
        Siehe oben .. listet den Zeilenpuffer, also die zuletzt eingegebenen
        Befehle/Zeilen. Die gewnschte Aussuchen und ENTER, oder ESC zum
        Abbruch. 

*
        L„át die Shell in den Background verschieben, so daá man sich
        den Druck auf die System-taste spart..
        
?      
        listet alle verfgbaren Befehle auf.
        
#
        Entspricht dem Befehl DIAL, n„heres siehe dort.
        
;<comment>
        Diese Zeile z„hlt als Bemerkung und wird nicht bearbeitet.
        Ntzlich fr Batch-Dateien. Entspricht praktisch dem OPL-Befehl REM...
        Beispiel: ;diese zeile wird nicht interpretiert
                 
<proc>: [<parameter>]
        Startet die Prozedur <proc>. Es kann EIN parameter (STRING)
        bergeben werden.
        Beispiel:  TEST:     entspricht dem OPL-Befehl TEST:
                   TEST: ab  entspricht dem OPL-Befehl TEST:("ab")
                   
        
        
ALIAS [<alias_in> [<alias_out>] ]
        Befehl-aliasse.. alias_in ist dabei das alias und alias_out
        der befehl, der ausgefhrt werden soll.
        ALIAS ohne parameter listet alle Aliasse auf
        ALIAS <alias_in> zeigt den Befehl von <alias_in>
        ALIAS mit beiden parameter setzt bzw. berschreibt einen Alias.
        Der Alias-Befehl selbst kann 10 Zeichen lang sein, der Befehl
        dafr max. 128. Es k”nnen max. 20 Aliasse definiert werden.
        Ein @ im alias_out sorgt dafuer, dass die parameter von alias_in
        miteingefuegt werden.. ist dumm zu beschreiben, also Beispiele:
        ALIAS c copy @  - setzt den Befehl "c" als "copy @".
        Man kann nun anstatt copy <filenames> einfach c <filenames>
        eingeben .. also beispielsweise:  c test.opl test.bak
        wuerde dann umgewandelt werden in copy test.opl test.bak und so
        ausgefhrt. ALIAS C wuerde ausgeben "copy @". 
        Unix'er k”nnten z.B. ALIAS ls dir @ machen, ALIAS ll ldir @,
        ALIAS more type @ etc. (siehe auch UNIX.BAT)
        Ein guter Platz fr ALIAS ist natrlich die M:\AUTOEXEC.BAT ...
       
[CD] <path>
        wechseln des aktuellen Pfades. Achtung: Jedes Directory
        muá mit einem \ enden! Mit CD \OPL z.B. wrde man nicht
        in das OPL-Verzeichnis wechseln!! Es _MUSS_ also CD \OPL\
        heiáen!  Beim Wechseln der Laufwerke bei CD A: z.B. wird
        jedoch auch automatisch das Verzeichnis beibehalten,
        sofern es existiert. ein \ am Anfang bedeutet immer das
        Root-Directory. Das letzte Verzeichnis (Parent) kann _nicht_
        wie beim PC mittels .. angedeutet werden. (noch nicht :-) )
        Dafr kann man "CD" weglassen, sofern der angegebene Pfad nicht
        mit einem anderen Befehl oder einem File identisch ist.
        CD kann weggelassen werden, wenn der Pfad mit \ oder :: endet.
        Wenn der Pfad nur mit : endet, muá CD mit angegeben werden, weil
        sonst ja nach einer Prozedur gesucht wird..
        Beispiel: aktueller Pfad= M:\OPL\ 
                        cd a:
                  neuer Pfad= A:\OPL\
                  oder eben weggelassen: \APP\

ChangeTaskPri <prozess-id> <priorit„t>
        Žndert die Priorit„t vom Task mit der angegebenen prozess-id.
        Achtung: Der S3a „ndert die Priorit„ten seiner Tasks teilw.
        selbstst„ndig. So bekommen OPOs/OPAs wenn sie im Vorder- bzw.
        Hintergrund kommen immer eine bestimmte Priorit„t zugewiesen.
        Desweiteren ist mir noch kein Systemaufruf bekannt, mit dem
        ich die Priorit„ten der Tasks anzeigen lassen k”nnte ..

CLS     l”scht den Bidlschirm

COPY <source> <dest>
        kopiert das File SOURCE als File DEST. Es wird nicht angezeigt,
        welche Files letztendlich kopiert wurden (bei Verwendung von Jokern).
        Beispiel: aktueller Pfad= M:\AGN\
                        copy agenda.agn agenda.bak    (sicherheitskopie)
                        copy agenda.agn a:            (kopiert die Datei nach
                                                       A:\AGN\Agenda.agn)
                                                       
DATE    Gibt Datum und Zeit im Format WWW TT MMM JJJJ SS:MM:SS aus.
        Beispiel: Sam 15 Mai 1993 22:20:54   (so sp„t ist's jetzt..)
        Gleichbedeutend mit dem Befehl TIME...    
    
Dir [<path>]
        zeigt die Directory des aktuellen Pfades oder des <path> an.
        Die Anzeige erfolgt in x Spalten. Um die Anzeige anzuhalten,
        muá CTRL-S gedrckt werden. Als <path> kann natrlich auch eine
        Datei stehen, z.B.  DIR a*.*  wrde alle Eintr„ge auflisten,
        die mit a anfangen. Am Ende werden die Filel„ngen noch zusammen-
        gez„hlt und angezeigt.
        Das mit den Spalten ist z.Z. noch sehr unbefriedigend, da nicht
        font-sensitiv. Bei folgenden Fonts jedoch passt der Aufbau:
        1, 4, 5, 10, 11, 13, 8225 (8225 sind die kleinen Groábuchstaben, die
        in der Tabellenkalkulation benutzt werden (bei kleinstem ZOOM) ..)
        Bei anderen Fonts stimmen leider die Zeilenl„ngen nicht (bei einer
        der n„chsten Versionen wird dies behoben sein..), aber wer benutzt
        auch schon so riesige Fonts :-) )
        .. um auch Unterverzeichnisse anzuzeigen .. siehe Befehl SDir        
        .. um Datum, Zeit und Attribute anzuzeigen .. siehe Befehl LDir        

DELete  <file>
        l”scht das File file. Ganze Directory l”schen geht mit DELete *.*
        ! Achtung !   Es erfolgt keine Sicherheitsabfrage! Und auch keine
        Anzeige, welche Files denn nun alles gel”scht wurden.
        
DIAL <number>
        W„hlt die eingebene Nummer, die keine Leerzeichen enthalten darf,
        mittels der im Psion eingebauten Mehrfrequenzton-erzeugung.
        Der Befehl kann auch mit dem Zeichen # abgekrzt werden, welches
        man bei einer Zeileneingabe auch durch Drcken der HILFE-Taste
        erreichen kann!
        Beispiel: DIAL 3942*39AB#
                  # 2093

ECHO [<text>]
        Gibt den Text <text> aus, wenn kein Text eingegeben wurde, wird
        eine Leerzeile ausgegeben. Ntzlich fr Batch-Dateien.

EVAL <term>
        berechnet den mathematischen Term term. Ausgabe erfolgt dezimal.
        Beispiel: EVAL 2*&F    .. ergibt: 30
        
EXecute <batch>
        die Batch-Datei batch ausfhren. Wenn die Datei im \BAT\ -
        oder aktuellem Verzeichnis steht, kann man sich EX sparen.
        Beispiel: ex \test.bat    .. startet die Batch-Datei \test.
                  ed      .. startet die Batch-Datei ed.bat, sofern sie
                             in \BAT\ oder aktuellem Verzeichnis steht.

eXit
        Beendet die Shell und ist gleichbedeutend mit Quit

Font <font-id> [<style>]
        Wechselt den Font. Die verfgbaren Standard-fonts und deren
        IDs werden aufgelistet, wenn man einfach Font eingibt.
        Style ist dabei der Style des Fonts. Bei Proportionalfonts
        sollte man also als Style 16 = unproportional angeben.
        Beispiel: f 5 16  - nimmt einen kleinen 8er font, so daá man
                            80 Zeichen pro Zeile hat.
                  f 13 16 - das gleiche, nur mit der H”he 6.
        OPL-Standard ist brigens 4 (Mono8).
  
HELP
        zeigt eine kleine Hilfe an ..

INFO [<dev>]
        zeigt Informationen ber das aktuelle Device bzw. dev.
        (bisher: Name, Gr”áe, freier Platz)
        Beispiel: INFO ROM:: ... oder INFO M:

LDir [<path>]
        entspricht dem DIR-Befehl, nur daá hier Erstellungszeit,
        -datum und File-attribute angezeigt werden. Weiterhin erfolgt
        die Anzeige mit 1 Eintrag pro Zeile, kann also bei jedem Font
        benutzt werden..

Load <OPO/OPA-File>
        l„dt ein OPO oder OPA File in den Speicher. Wenn die Date im
        \OPO\ bzw. \OPA\ bzw. aktuellem Verzeichnis steht, sollte man
        auf Load verzichten k”nnen. Falls es aber doch mal nicht geht,
        einfach ein L und ein Leerzeichen vor den Filenamen setzen..
        Beispiel: L test.opo
        Prozeduren k”nnen dann einfach gestartet werden, in dem man
        den Prozedurnamen eingibt, gefolgt von einem :. 
        
LoadFont <font-filename> 
        l„dt einen Font nach und gibt die ID aus.
        Beispiel: lf M:\fon\script.fon   .. zeigt an -16377
                  f -16377 16            .. wechselt den Font

MakeDir <path>
        Erstellt ein Verzeichnis
        Beispiel: md \pic    .. erstellt das Verzeichnis \PIC

MEM     zeigt den freien Speicher

MOVE <source> <dest>
        Entspricht den Befehlen COPY und DELETE hintereinander.
        Wenn source und dest auf der selben Diskette ist, sollte man
        stattdessen den Befehl REName verwenden.
        Beispiel: move *.opo A:
        
PAUSE <delay>
        Entspricht dem OPL-Befehl PAUSE, also durch angabe von 0
        wird ein Tastendruck abgewartet.

Play <file> [<duration>]
        Spielt eine WVE-Datei aus, die mit der Applikation RECORDER
        aufgezeichnet wurde. Optional kann noch angeben werden, wie lang
        gespielt werden soll. Mit einem Tastendruck kann das abspielen
        auch abgebrochen werden.
        Beispiel: p rom::sys$al01.wve

PROMPT <prompt>
        Žndert den Prompt.. Folgende Strings k”nnen zus„tzlich
        eingesetzt werden:
         %B = Backspace, l”scht das letzte Zeichen
         %D = Wochentag
         %E = Name des Wochentags
         %F = freier Speicherplatz (entspr. MEM)
         %H = Stunde
         %I = Minute
         %K = Wartet auf einen Tastendruck
         %M = Monat
         %N = Neue Zeile       
         %O = Name des Monats
         %P = aktueller Pfad
         %S = Sekunde
         %Txx= Style, MUSS zweistellig sein. 02=unterstreichen 04=invers
               32=kursiv .. siehe auch im Programmierhandbuch (g)STYLE
         %W = Woche
         %Y = Jahr (4stellig)
         %Z = Jahr (2stellig)
        Beispiel:  prompt [%e%b, %d.%m.%z / %h:%i:%s]%n%p >
                   .. ergibt folgenden prompt (z.B.):
                   [Fr, 01.10.93 / 13:45:26]
                   M:\OPL\ >
                   
Quit
        Beendet die Shell und ist gleichbedeutend mit eXit

RemDir <path>
        L”scht ein (leeres) Verzeichnis
        Beispiel: rd M:\opl\tests   .. l”scht M:\opl\tests
        
REName <old> <new>
        Umbennenen eines Programms. Old=Alter Name, New=Neuer Name.
        Der neue Name kann auch Pfade enthalten, sofern diese auf
        der gleichen Diskette sind.
        Beispiel: ren test.txt wichtig.txt
                  ren \opl\shell.opl \opl\anwend\shell.opl
                  
Run <opo-file>
        Starten eines OPO-Files. Die Shell wird dadurch NICHT
        blokiert. Das OPO-File l„uft also parallel zur Shell.
        

SET [<var> [<value>]]
        Gibt einer Variable den Wert value. Bisher kann man nur UNIX
        auf ON bzw. OFF setzen. Unix heisst, daá in der Eingabe / durch \
        ersetzt werden, um so UNIX bzw. Amiga-Pfade zu simulieren. Wenn
        UNIX auf ON ist, kann man z.B. anstatt M:\OPL\ auch M:/OPL/
        eingeben. Bei ECHO, PROMPT, ALIAS, EVAL findet keine Konvertierung
        nicht statt. In einer der n„chsten Versionen wird man auch mehrere
        Variablen setzen k”nnen, die dann auch von Batchfiles aus
        gelesen und genutzt werden k”nnen.

SDir [<path>]
        Aktuelles Verzeichnis rekursiv auflisten, also mit den
        Unterverzeichnissen und Unter-Unter-Verzeichnissen.
        Die Namen der Verzeichnisse werden dabei jeweils kursiv angezeigt.
        Am Schluá werden dann noch mal alle Bytes zusammengez„hlt.
        Beispiel: SD M:\

TASKS
        Zeigt Tasks mit Prozess-Identit„tsnummer an.

TIME
        Entspricht dem Befehl DATE und zeigt Datum und Zeit an.

Type <filename> [HEX]
        Zeigt ein Text-File an. Wenn HEX angegeben, wird die
        Datei in Hex & Ascii ausgegeben. In letzterem Fall wird
        dabei darauf geachtet, wieviele Zeichen mit dem eingestellten
        Font angezeigt werden k”nnen, so daá die Ausgabe bei jedem Font
        korrekt erscheint.
        Beispiel: type M:\autoexec.bat
                  t rom::agenda.app hex
                  
UnLoad <OPO-File>
        Ein zuvor mit Load geladenes Prg. kann damit wieder
        aus dem Speicher entfernt werden.

UnloadFont <font-id>
        Entfernt den Font mit angegebener ID aus dem Speicher.
        Beispiel: uf -16377
        
View <filename> [<x> <y>] [<bitmap>] [Grey]
        Zeigt ein Bild an. X und Y optionale Angabe der
        Gr”áe des Bildes. Bei normalen Bildern wird die X und Y - Gr”áe
        aus dem File geholt, dies funktioniert aber nur bei PIC-Files,
        also Files, deren ersten drei Zeichen "PIC" sind. (Nachzusehen
        mit TYPE .... HEX ) Es funktioniert also nicht bei APPs oder IMGs.
        Bitmap=welche bitmap geladen werden soll.
        Soll die darauffolgende Bitmap als Grey-Plane dazugeladen werden,
        muá ganz hinten ein G oder GREY stehen.
        Beispiel: view \pic\psion.pic
                  view \pic\psion.pic grey
                  view \pic\psion.pic 40 80
                  view rom::world.app 400 120 2
                  v rom::sys$shll.img 4
                  v rom::sys$wsrv.img 60 50 4 g
                  

                    6. Was ich noch machen will..
                    
Statt LDIR, SDIR und DIR einen neuen DIR Befehl mit Parameter, Format-
eingabe etc. (z.B. Dir [-l -r -fxxxxxxxx] ), ferner das ganze Font-sensitiv

Parameterbergabe bei Batch-Dateien w„ren nicht schlecht.

".." als 'vorheriges Verzeichnis' in pfaden einbauen

Statt immer COPY&DELete sollte der MOVE-Befehl RENAME verwenden, wenn
Quelle und Ziel auf dem gleichen Laufwerk ist.

bei RUN prfen, welches art von file es ist, und dann die entsprechende
Applikation starten (z.B. RUN xxx.wrd startet die Word-Applikation mit
dem File xxx.)

Tja, und was mir sonst noch so einf„llt bzw. miáf„llt ..  :-)


                    
                    7. How to contact me
                    
Tja, da g„bs diverse M”glichkeiten:
1. per EMAIL an ns103@fim.uni-erlangen.de
2. In meiner Mailbox unter dem Namen Sysop (Lonely Times 0911/3939034)
3. per Voice-Call 0911/3939031
4. per Sack-post, die adresse findet sich im englisch DOC-File.. (fies, wa?)
         

                    8. History .. geschichtlicher Rckblick


v2.5   * Neuer Befehl: TASKS - Zeigt Tasks und ihre PID (process-id)
       * Neuer Befehl: ChangeTaskPri - Žndert die Priorit„t eines Tasks
       * Type hat nicht funktioniert. Funktioniert wieder & schneller
       * View&Play arbeiten jetzt auch mit Jokern
       * bei delete, copy und move: Ausgabe der filenamen bei Joker-Bentzung
       * Ausgabeumleitung >FILE bzw. NIL: / NUL: fuer keine Ausgabe
       
v2.44  * ALIAS-Befehl
       * Ausfhren einer Batch-datei von einer Batch-datei funktioniert jetzt
       * SET UNIX ON fr / -> \ - Konvertierung
       * MEM zeigt den freien Speicherplatz
       * INFO zeigt Infos ber Devices
       * neu im Prompt: %F zeigt den freien Speicher
       
v2.43  * Neuer Dir-Befehl LDIR - zeigt Datum, Zeit und Attribute
       * Statt des Zeileneditors gibts jetzt ein ed-bat.als - file..       

v2.42  * OPO-Files auch starten mit RUN
       * Erste Maánahmen fr Ausgabeumleitung geschaffen (ab v2.5!)
       * Statistiken im Dir-Befehl (dirs, files, ..)
       * kein CD-try bei 'unknown command'

v2.41  * PLAY hat nicht richtig funktioniert .. bug fixed
       * CD wird nicht mehr ben”tigt.. einfach \pfad\ eingeben.. (bzw. dev::)

v2.40  * Angepasst an den 3a
       * Font-Untersttzung (wirkt sich auch auf's TYPE-Commando aus)
       * WVE-Files abspielen
       * Der VIEW-Befehl wurde verbessert (gr”áe) und erweitert (grey..)           
       * Telefonnummern w„hlen
       * Verbessertes Buffer-handling
       * Befehl, um die Shell in den Background verschwinden zu lassen
       * Neuer DIR-Befehl, um auch Sub-Directories anzeigen zu lassen
       * Ebenfalls wird am DIR-Befehl die 'total-bytes' eines Dirs angezeigt
       * Wenn es einen Befehl nicht gibt, wird ein CD versucht, der CD
         Befehl kann nun also oft weggelassen werden       
       * Die verfgbaren Befehle werden jetzt mit ? angezeigt,
         HELP zeigt nun eine kleine Hilfe..
       * Im Prompt k”nnen nun auch Styles gew„hlt werden (Invers, Kursiv,..)
       * Eine kleine Doku in Englisch wurde erstellt..
       * \APP\TOOLS.OPA wird nicht mehr ben”tigt, stattdessen
         \APP\EXPWIN2.OPA ...
       * Neuer Befehl PAUSE (brauchbar fr Batch-Dateien)                    
       
