home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Vectronix 2
/
VECTRONIX2.iso
/
FILES_01
/
MAGICUPD.LZH
/
MAGIC3.UPD
/
CMD
/
CMD.DOC
Wrap
Text File
|
1991-06-29
|
73KB
|
1,476 lines
080000002000000160000000004000000
11
2Seite #1
F0110030001
R [................................................]0110
9[........................................................]0110
ÇHannover,den22.06.90
üëBEDIENUNGSANLEITUNGZURGEMDOSê┐ëSHELL"CMD"undKAOSSHELL"KCMD"V2.59
Ç
êInhaltsverzeichnisÇ
9[...................................................]0010
0.Allgemeines
1.DieinternenBefehle
1.1 ATTRIB
1.2 BREAK
1.3 CD
1.4 CLS
1.5 CK
1.6 COPY
1.7 DATE
1.8 DEL
1.9 DIR
1.10ECHO
1.11END
1.12EXIT
1.13FIND
1.14FOR
1.15FREE
1.16GOTO
1.17IF
1.18MD
1.19MORE
1.20MV
1.21PATH
1.22PAUSE
1.23PROMPT
1.24RD
1.25REN
1.26SHIFT
1.27SET
1.28SORT
1.29TIME
1.30TOUCH
1.31TREE
1.32TYPE
1.33VER
1.34VERIFY
2.ExterneKommandosimBIN-Ordner
2.1 PRINT
2.2 CRASHDMP
2.3 EXE2BIN
2.4 LABEL
2.5 FC
2.6 KILLRAM
2.7ASTOWORD
2.8WORDTOAS
2.9DUMP
2.10SPLIT
3.Stdout/Stdin-Umlenkung
4.Geräte(Devices)
5.Kommandozeilen-Auswertung
6.Editor-Steuertasten
7.StartenvonProgrammen(ExterneKommandos)
8.Batch-Dateien
9.CMDalsAccessory.Allgemeinesundspezielles
9[...........................................................]0110
ê0.AllgemeinesÇ
ւUpdatesvonV2.55=>V2.56:
-KorrekturdesBefehls"COPYdateinul",derbisherbeimehrals64k
Dateilängenichtfunktionierte.
-KorrekturderDatumsverarbeitungfürJahreszahlennachdemJahr2000.
-AnpassungvonKCMD.ACCandasendgültigeTOS1.4vom6.4.89
-KorrektureinerUnschönheitbeimKopierenvonDateien.Wegenungerader
Grö₧edesKopierpufferskonnteesvorkommen,da₧dasKopieren
unerträglichlangsamwurde,daSektorenaufungeradeAdressenübertragen
werdenmu₧ten.
UpdatesvonV2.56=>V2.57:
-Wenn\AUTOEXEC.BATbzw.\BOOT.BATnichtgefundenwerdenkönnen,wird
C:\AUTOEXEC.BATgesucht.WereinanderesLaufwerkbevorzugt,möge
einfachmitMUTILsuchen,sehenundpatchen.
-BeiMOREwirdderTastendrucknichtmehrvonBIOS,sondernvonGEMDOS
geholt;daherkannmanwährendderAusgabeschoneineTastedrücken,die
dannindenGEMDOS-Tastaturpufferkommt.
-BeiDEL,COPY,MV,ATTRIBwirdnachjederDateiderGEMDOS-Tastaturpuffer
abgefragt,soda₧manzwischendurchmit^Sanhalten,mit^Qweiterlaufen
lassenundmit^Cabbrechenkann(zumindestunterKAOS).
-BeiDELwirdeinSchalter"-N"ausgewertet,mitdemmandie
Sicherheitsabfrageabschaltenkann.
-BeiKCMDsetztderSconfig-AufrufnichtmehrdieKonfigurationeinfach
auf1(alleBitsau₧erautomatischerPfadsucheauf0),sondernholtdie
aktuelleKonfiguration,setztBit0ohneVeränderungderanderenBits
undsetztdanndieseKonfiguration.
UpdatesvonV2.57=>V2.58:
-Bei"more"kannmanmitderLeertasteeinSeiteweiterundsonsteine
Zeileweiterscrollen.
-ACCswerdenimGrafikmodusgestartet.
UpdatesvonV2.58=>V2.59:
-EswirdzuerstnachC:\AUTOEXEC.BAT,dannnach\AUTOEXEC.BATgesucht.
-DerEvent-Critic-ManagerwurdeanKAOS1.4angepa₧tundbrichtmit^C
daslaufendeProgrammab.
-FürTurbo-C2.0wirdderBefehl"sh"inderKommandozeileignoriert.
-neuesexternesKommando:SPLIT
-überarbeitet:DUMP
CMDV2.59samtOrdnerBIN\istShareware,derSharewarebeitragistbei
regelmä₧igerBenutzungzuentrichtenundbeträgt20 DM(direktperScheck
oderScheinandenAutor),derAutor
AndreasKromke
3000Hannover61
Steinbruchstra₧e17
verlangtaber,da₧derOrdnerKCMDimmeralsGanzesweiterzugebenwird
unddieseroderTeiledavonnichtinirgendwelcheSoftwarepaketeinte
griertwerden.EinegedruckteAnleitungodereinUpdate-Serviceistbei
einemsogeringenBeitragnatürlichnichtmöglich.KommerzielleNutzung
(Vertrieb,BeigabezukommerziellvertriebenenProgrammen,Weitergabe
gegenGebührenetc.injederForm(diesschlie₧tauchdenVertriebüber
Public-Domain-Sammeldiskettenoderähnlichesein)istünichtgestattetÇ.
DieDateiendürfennichtvonanderengegenBezahlungweitergegebenoder
dasProgrammselbstoderdiezugehörigenDateiendurchunsachgemä₧e
Eingriffeverändertwerden.
Dahermerke:
äWerKommandoprozessorennachmachtoderverfälschtoder
nachgemachteoderverfälschteKommandoprozessorensich
verschafftundinVerkehrbringt,wirdmitAnalysis-
Zettelnnichtunter2Stückbestraft
Ç
FürSchäden,diedurchAnwendungdiesesProgrammsentstehen,kannder
Autorselbstverständlichnichthaften.
EventuelleÄhnlichkeitenvonCMDoderdenHilfsprogrammenmitanderen
ProgrammennamhafteroderunbekannterHerstellersindnichtbeabsichtigt,
sondernwärenreinzufällig.
≤ÇDasBetriebssystemGEMDOSdesAtariist,einschlie₧lichderFunktionsnum
mernfürdieDOS-Aufrufe,fastkompatibelzuMS-DOS2.0.Auchlassensich
MS-DOSDiskettenproblemloslesenundbeschreiben.
DieseÄhnlichkeithatmichbereits1986dazubewogen,eineKommando-
OberflächewieCOMMAND.COMfürdenAtarizuschreiben,ohnemichdabei
sklavischandas"gro₧e"Vorbildzuhalten.WerMS-DOSkennt,wirdsehr
schnellmitCMDumgehenkönnen.Mankönntedabeifastvergessen,da₧man
esmiteinemAtarizuhat;ja,wennnichtdievielenFehlerdesGEMDOS
(oderJAM-DOS?)wären;nichtumsonsthei₧tdieVersionjaauchbeiTOS
1.2noch0.19undbeiTOS1.40.21(sieheinternesKommandoVER),was
auchkeingro₧esVertraueneinflö₧enkann.
DaherenthältdieseDiskettedreiVersionendesCMD:
1)CMD.PRGgehtsehrnachsichtigmitdemBetriebssystemumundkorri
gierteinigeDOS-FehlerwiedieDiskwechselerkennung,das
SetzenderUhrzeitvonDateienundeinenFehlerbeimSetzen
derStandardpfade.DieFehlerderEin-/Ausgabeumlenkung
werdenNICHTumgangen;CMDselbstfunktioniertaberbei
Umlenkung.
DieHaupteigenschaftistdervomBetriebssystemunabhängige
Zeileneditor,derinseinenFunktionendesinKAOS1.2.3
integriertenEditorsenspricht.
CMDläuftaufsämtlichenaltenundzukünftigenTOS-
Versionen,daesvölligbetriebssystemversionsunabhängig
ist(langesWort...).
é2)KCMD.PRGfürdasKAOS-BetriebssystemmitDOS-Versionsnummer0.21
oderhöher.EinigeFeaturessindnurbeiKCMD,nichtbei
CMDvorhanden.AuchKCMDläuft"imPrinzip"mitjedem
Betriebssystem;esenthältjedochkeineUmgehungenvonDOS-
Fehlern,dadiesbeiKAOSnichtmehrnötigist.Sodürfte
KCMDbesondersaufdenbisherigenTOS-Versionennicht
immerperfektfunktionieren.
DieHauptbesonderheitist,da₧KCMDkeinenintegrierten
Zeileneditorbesitzt,sonderndenvomDOSverwendet.Auf
demnormalenTOSistKCMDalsonichtbesonderskomfortabel.
AlleKCMDundKAOSbetreffendenStellendieserAnleitung
sindhellmarkiert.
ä3)KCMD.ACCDieAccessory-VersionvonKCMD.PRG.GegenüberderPro
gramm-VersionmüssennatürlicheinigeEinschränkungenin
Kaufgenommenwerden.SokönnenbeispielsweisekeineGEM-
Applikationengestartetwerden(GfA-BASICfunktiniert
aber).AnsonstenmitKCMDimwesentlichenidentisch.Alles,
wasfürdieAccessory-VersionundnichtfürKCMD.PRGgilt,
isthierkursivhervorgehoben.
Ç
AnsonstensindCMD.PRG,KCMD.PRGundKCMD.ACCunabhängigvonder
Betriebssystem-VersionundlaufendahermitsämtlichenbekanntenVersio
nendesTOS(1.0/1.2/1.4).
äAchtung:AufgrundeinesFehlersimAESistdasStartenvonProgrammen
unterKCMD.ACCnurunterfolgendenTOS-Versionenmöglich:
TOS1.0vom6.2.86
TOS1.2vom22.4.87
TOS1.4vom6.4.89
BeidiesenVersionenwurdederFehlerumgangen,leidermu₧tedabeieine
Versions-AbhängigkeitinKaufgenommenwerden.NäheresstehtinKapi
tel 9.
Ç
NocheinHinweiszuGEMDOS-Fehlern:
AngeblichexistierteineListemit96Fehlern,wasnichtgenaustimmen
mu₧,aberdurchausglaubwürdigerscheint.FastalledieseFehlertretenim
Desktopnichtauf,werdendahervon99%allerAtari-Besitzerniemals
bemerktwerden.UnterCMD,dassichausschlie₧lichaufGEMDOSverlä₧tund
keinenseinerFehlerabfängt,siehtdasganzandersaus.Ständigtreten
neue,unbekannteFehlfunktionenauf.
EinFehleristdabeieigentlichalles,wasbeiMS-DOS2.0funktioniertund
beiGEMDOSnicht.MeistenssagteinemaberauchdergesundeMenschenver
stand,obetwassoseinsollteodernicht.
EinbesondersärgerlicherFehleristz.B.:
VerwendetmanPfadnamenwie"A:CMD.PRG"anstellevon"A:\....",also
verwendetdenaktuellenPfadeinesLaufwerks,kannesvorkommen(auch
unterTOS1.4undaufdemTT!!!!),da₧GEMDOSmitseinenPfadenund
Laufwerkenvölligdurcheinanderkommt.Z.B.kannbei"DIRA:"derDisk
namevonA:unddanndasVerzeichnisvonD:erscheinen.DerDisketten
namestimmtimmer,daerimmervomWurzelverzeichnisgeholtwird,was
keineSchwierigkeitenmacht.
°ÇAbhilfe:Erscheintz.B.bei"DIRD:"dasVerzeichnisvonA:,genügtes
meistens,"CDD:\"und"CDA:\"einzugeben.Dannhatsich
GEMDOSwiederberuhigt,vielleichtbiszumnächsten
Diskwechsel.
DerFehlertrittgarnichtauf,wennmanallePfadangaben
immeraufderRootbeginnt.Also"DIRA:\"geht(fast)immer.
AusdiesemGrundhatauchdasDesktopkeineProbleme,das
sowiesodiemeistenFehlerdesGEMDOSabfängt.
éAlledieseFehlersindunterKAOSbehobenunddürfenbeiKAOS+KCMDnicht
auftreten.KCMDschaltetperSconfig(1,1L)dieautomatischePfadüberprü
fungein(sieheBeschreibungvonKAOS)undstelltvorProgrammendeden
vorherigenZustandwiederher.
Ç
WurdeCMDmitKommandozeilegestartet,wirddieseausgeführt.Andernfalls
wird,fallsvorhanden,eineBatchdatei"\AUTOEXEC.BAT"ausgeführt(d.h.
aufdemWurzelverzeichnisdesaktuellenLaufwerks);wurdeCMDimAUTO-
Ordnerodermitdercomload-Optiongestartet,wirdstattAUTOEXEC.BAT
eineBatchdateimitNamenBOOT.BATausgeführt.SchlägtderersteVersuch
fehl,wirdnachC:\AUTOEXEC.BATgesucht(auchimFallAUTO-Ordner).
DanachwirdimmerderfreieSpeicherangezeigt.
WirdbeimLadendieTasteCTRL-Cgedrückt,unterbleibenobigeAktivitäten.
EinTip:ImDesktopunter"EXTRAS:Anwendunganmelden"fürCMD.PRGals
Dateityp".BAT"anmelden.WennmaneineFestplattebenutzt,das
DESKTOP.INFineinengeeignetenEditorladenundstattnur
"CMD.PRG"denPfad,aufdemsichCMDbefindet,mitangeben,z.B.
"C:\CMD.PRG".
DannkannjedeBatchdateimitDoppelklickwieeinProgramm
gestartetwerden.EnthältdieBatchdateieinenEXIT-Befehl,
wirdnachAblaufdesBatchprogrammswiederinsDesktopzurückge
kehrt;mankannauchvorEXITeinenPAUSE-Befehleinfügen,der
erstaufeinenTastendruckwartet.
FürTOS1.0und1.2beachteman,da₧einDoppelklickaufeine
Datei.BATfolgendesbewirkt:
-DasVerzeichnis,indemdieDatei(!)liegt,wirdaktuelles
Verzeichnis.
-pfad\CMDwirdmitdemeinfachenDateinamenohnePfadangabe
gestartet.
InTOS1.4(8.8.88)gilt:
-DasVerzeichnis,indemCMD(!)liegt,wirdaktuelles
Verzeichnis.
-CMDwirdinseinemeigenen(aktuellen)Verzeichnisgestar
tetunderhältalsParameterdenvollständigen(!)Pfadna
menderDatei.FallssichCMDund.BATimselbenOrdner
befinden,verzichtetAESaufdenPfadderDatei,aberdas
hatkeinenEinflu₧aufdieWirkungsweise.
CMDenthältkeineGEM-Aufrufe,kannalsoimAUTO-Ordnerodermitder
comload-OptiondesBootprogrammsgeladenwerden.IndiesemFallkannaber
natürlichkeinGEM-ProgrammvonCMDausgestartetwerden.Istdas
aufgerufeneGEM-Programmordentlichgeschrieben(leiderseltenderFall),
sowirdeseinfachmitoderohneFehlermeldungabbrechen.Au₧erdem
funktioniertdasEinschaltendesMauszeigersnicht,wennCMDimAUTO-
Ordnerstand,dadiezugehörigenLineA-FunktionenzudiesemZeitpunkt
nochnichtinitialisiertsind.
WurdeCMDmitdercomload-Optiongestartet,istesnichtzuempfehlen,
dasKommando"exit"einzugeben,dadieszumSystemabsturzführt.Atarihat
diesenFalloffensichtlichnichtberücksichtigt.
WurdeCMDimAUTO-Ordnergestartet,solltemandieDisketteaufkeinen
Fallwechseln,damitderAUTO-VorgangnachBeendigungvonCMDweiterlau
fenkann.Mu₧dieDiskettedochgewechseltwerden,mu₧manunbedingtvor
dem"exit"-KommandodieAUTO-Diskettewiedereinlegenund"cdauto"
eingeben(umdenOrdnerGEMDOSbekanntzumachen).
äKCMD.ACCwertetniemalseineKommandozeileaus,sondernlädtAUTOEXEC.BAT
beimerstenAnwählendesAccessories.Aktiviertmanspäternocheinmaldas
Accessory,wirdsofortdasersteKommandovonderTastaturerwartet.Ç
äKCMD.ACCenthältnatürlichGEM-AufrufezumAnmeldenimMenü.Accessories
werdenimmmererstnachdemStartvonAESgeladen.Dahergibteskeine
SonderregelungenfürdenStartausdemAUTO-Ordneretc.
MankannfürdasAccessorykeinenDateitypanmelden.
Ç
InCMDwirdbeijedemDateizugriffinternerKommandosfestgestellt,obim
angesprochenenLaufwerkdieDiskettegewechseltwurde.Wennja,wird
GEMDOSdurchdenAufrufvonFsfirst()dazuveranla₧t,seineinternen
Pfadpufferzuaktualisieren.Daheristdaraufzuachten,da₧z.B.beim
WechseldesaktuellenLaufwerksschoneineDisketteeingelegtist.
ⁿÇDabesagterFsfirst()-AufrufmitdemWurzelverzeichnisalsPfadder
einzige(!)GEMDOS-Befehlist,derdenDiskettenwechselabfragt(auch
einProgrammierfehler!),gibtessonstSchwierigkeitenmitdemAuffinden
vonPfadenundDateienz.B.beiCOPYundCD.
DieSchwierigkeitenbleibenjedochbeiexternenBefehlen:
Hatmanz.B.inA:eineneueDiskeingelegtundruftaufD:einexternes
Programmmit"D>pgm a:\subdir\dat"auf,wirdGEMDOSdieDatei"dat"
(soferndasexterneProgrammseinenParameterdurchFopen()sucht)i.a.
nichtfindenkönnen,bevoresnichtdurcheinenFsfirst()-Aufrufdazu
veranla₧twurde,seineinternenPfadpufferneuaufzubauen.
Abhilfe:NachjedemDiskwechselinX:erstmit"X:"oder"dirX:"GEMDOS
initialisieren,bevormaneinProgrammstartet.
éUnterKAOSundKCMDtrittderFehlernichtauf,daperSconfig()die
automatischePfadüberprüfungeingestelltwurde.Wederbeiinternennoch
beiexternenKommandosdürfteeszuSchwierigkeitenkommen.Damithatman
mitKCMDundKAOSdieselbeZuverlässigkeitwieunterCOMMAND.COMundMS-
DOS;mitdemUnterschied,da₧beinichtschreibgeschütztenDiskettender
Pfadzugriffsehrvielschnellerverläuft,daMS-DOSdiePfadenichtim
Speicherhält.
Ç
ê1.DieinternenBefehleÇ
ê1.1ATTRIBÇ
Syntax:ATTRIB[schalter1schalter2...]name1name2...
schalter=+|-{rsha}
name=Dateinameoder-musteroderPfad
Zweck: AttributbytevonDateienanzeigenoderändern.
WerdenkeineSchalterangegeben,werdendieAttributenurangezeigt:
RRead-Only (schreibgeschützt)
SSystem (versteckteSystemdatei)
HHidden (versteckteDatei)
AArchive (erstabTOS1.4unterstützt)
Mit"ATTRIB+rc:f:"lassensichbeispielsweisealleDateieninden
aktuellenVerzeichnissenderLaufwerkeC:undF:schreibschützen.
"ATTRIB -rsha d:\cmd.prg"löschtalleobigenAttributederDateicmd.prg
imWurzelverzeichnisvonD:.
AbTOS1.4wirddasAttribut'A'korrektausgewertet,ansonstenerfüllt
keineinzigesderAttributebeiirgendeinemvonAtaristammenden
BetriebssystemdenursprünglichdokumentiertenZweck!Dashei₧t
beispielsweise,da₧manschreibgeschützteDateienunterTOSmunterbe
schreibenkann.
DisknamenundOrdnerwerdennichtangezeigtoderverändert!
ê
è1.2BREAKé
Syntax:BREAK
BREAKON
BREAKOFF
Zweck:Break-Verify-FlagdesKAOSanzeigen/ändern.Unternormalem
GEMDOSbewirktderBefehleinfachnichts.
BeimStartenvonCMDistdasBreak-Flagimmerausgeschaltet.Bei
eingeschaltetemFlagkannmaneinlaufendesProgrammvorundnachjedem
GEMDOS-Aufrufabbrechen.
ImGegensatzzuMS-DOSbewirktdasBetätigenvonCTRL-CimTOSleider
keinenInterruptineineBreak-Handling-Routine.Daherfunktioniertdie
BetätigungvonCTRL-CwirklichnurbeiEintrittundAustrittausGEMDOS,
woderTastaturpufferdurchsuchtundbeiBedarfeinProgrammabbruch
bewirktwird.
Ç
ê1.3CDÇ
Syntax:CD
CDd:
CDpfad
CDd:pfad
Zweck:AktuellesVerzeichnisanzeigenoderändern
CD(changedirectory)ohneParameterzeigtdasaktuelleVerzeichnisdes
aktuellenLaufwerks.
CDd:zeigtdasaktuelleVerzeichnisdesLaufwerksd:.
CDpfadsetzt<pfad>alsaktuellesVerzeichnisdesaktuellenLaufwerks.
CDd:pfadsetzt<pfad>alsaktuellesVerzeichnisdesLaufwerksd:.Diese
Befehlsformmitd:alseinemnichtaktuellenLaufwerkist,obwohl
dokumentiert,beidenvonAtaristammendenTOS-Versionennichtmöglich
undfunktioniertnurunterKAOS.
√ê1.4CLSÇ
Syntax:CLS
Zweck:Bildschirmlöschen.Au₧erdemWRAPONundINVERSOFF.
ê1.5CKÇ
Syntax:CK
CKd:
Zweck:Laufwerk-Informationenausgeben
CK(checkdisk)gibtdieLaufwerks-InformationenfürdasLaufwerkd:aus.
WurdekeinParameterangegeben,wirddasaktuelleLaufwerkbenutzt.
Au₧erdemwirddieGrö₧edesHauptspeichersangezeigt.CMDverlä₧tsich
dabeiaufdieSystemvariablephystop;istdieseVariablez.B.voneiner
resetfestenRamdiskmanipuliertworden,kanndertatsächlicheSpeicher
grö₧ersein,alsvonCKangezeigt.
;ê1.6COPYÇ
Syntax:COPY[-t]pfad
COPY[-t]datei(muster)
COPY[-t]pfadpfad
COPY[-t]datei(muster)pfad
COPY[-t]datei1datei2
Zweck:Datei(en)kopieren
FehltderzweiteParameter,wirddasaktuelleVerzeichnisangenommen.
IstdieQuelleeinPfadodereinDateimuster,werdenalleDateiendes
Pfadesbzw.allepassendenDateienkopiert.
EinPfadkannauf'\'endenoderauchnicht.
Wird<datei2>angegeben,bekommtdieKopiederDateidenNamen<datei2>.
QuelleundZielkönnenauchGeräte("CON:","AUX:","PRN:")sein.Istdie
QuelleeinGerät(CON:,AUX:),wirdkopiert,biseineZeilegelesenwird,
dienurausCTRL-Zbesteht.NachjedereingelesenenZeilewirddie
ZeichenfolgeCR/LFergänzt.
EineDateikannnichtinsichselbstkopiertwerden;CMDfängtdiesen
Fehlergeschicktab.éKAOStutdiesselbst.Ç
Sindwenigerals10kBSpeicherfrei,wirddergesamtefreieSpeicherals
Kopierpufferbenutzt,sonstwirdnurdieHälfteverwendet.Sokannsich
(imGegensatzzumDesktopabTOS1.2)einedynamischeRamdisknoch
vergrö₧ern.
ImGegensatzzumDesktop-COPYbeimungepatchtenTOSbehaltenDateienbeim
KopierenihraltesDatumunddieUhrzeit(nichtbeiungepatchtemTOS
1.0/1.2undKCMD.PRG,daKCMDdenDOS-Fehlernichtabfängt).Jedochist
dasDateiattributimmer0(normaleDatei,nichtschreibgeschützt,sichtbar
usw.).
MitHilfedesSchalters'T'bekommtdieZieldateidasTagesdatum,also
entspricht"COPY-t..."demüblichenDesktop-COPY.DieserSchalterist
zuempfehlen,wennmanz.B.DateienmitdemnichtssagendenDatum6.2.86
oder22.4.87kopiert.'T'istdieAbkürzungfür"Touch"undbedeutet,da₧
eineDateidasTagesdatumbekommt,wiewennsiegeändertwordenwäre
(sieheauchinternesKommando"TOUCH").Wichtigistdasz.B.,wennmanein
MAKEbenutzt.
Bemerkung:InMS-DOSexistierteineBefehlsformzumVerkettenvonDateien
("COPYdatei1+datei2+...zieldatei).CMDverwendetdazuden
TYPE-Befehl(s.u.).
FürdasErstellenvonBatchdateieneignetsichderBefehl"COPY
CON:datei".DieEingabewirdmiteinerZeileabgeschlossen,
dienurausCTRL-Zbesteht.
éFürdasTesten,obeineDateieinenLesefehlerenthält,eignet
sichbesondersderBefehl"COPYdateinul".Hierbeiwird
besondersschnellgelesen,danichtsgeschriebenwerdenmu₧.
Ç
∩ê1.7DATEÇ
Syntax:DATE
DATEdatumsangabe
Zweck: Systemdatumsetzen
WirdDATEohneParametergestartet,kanndasDatumvonHandeingegeben
werden.Wirdnur<Return>gedrückt,bleibtdiealteEinstellungerhalten.
WirdnureineZahleingegeben,wirdnurderTaggeändert,beizweiZahlen
TagundMonat.Tag,Monat,Jahrkönnendurchbeliebigenichtnumerische
Zeichenvoneinandergetrenntwerden.
Bemerkung:Mit"DATE<datei"kanndasDatumstattvonderStandard-
EingabeauchvoneinerDateigelesenwerden.
BeiTOS1.0wirdnurdieGEMDOS-Uhrgesetzt,soda₧diealte
ZeitimTastaturprozessor(XBIOS-Aufruf)undsobeieinem
Reseterhaltenbleibt.AbTOS1.2wirddieHardware-Uhr
(Quarzuhrbzw.Tastaturprozessor)mitgesetzt.
#ê1.8DELÇ
Syntax:DEL[-n]datei1datei2...
Zweck:Datei(en)löschen
DEL(delete)kannbeliebigvieleArgumentehaben(OS/2lä₧tgrü₧en).Ist
<datei>einDateimusterodereinPfad,werdenallepassendenDateiennach
Sicherheitsabfragengelöscht;dieseSicherheitsabfragekannmitdem
Schalter"-N"abgeschaltetwerden.
AufdieSicherheitsabfragenkanngeantwortetwerden:
J,Y Ja,angezeigteDateilöschen;weiterfragen
NNein,angezeigteDateinichtlöschen;weiterfragen
GGlobal,abjetztalleDateienohneAbfragenlöschen
A,Q,^CAbbruch,Löschenbeenden
WenneinFehlerauftritt,mu₧diesnichtdaranliegen,da₧dieDatei
schreibgeschütztist.EinFehlertrittauchdannauf,wenndieDateivon
CMDodereinemanderenVorgängerproze₧geöffnetwurdeundnochnicht
geschlossenist.InsolcheinemFallgenügtes,dieDiskettemitdem
Kommando"free"(s.u.)abzumelden.
╘ê1.9DIRÇ
Syntax:DIRpfad1pfad2...
DIR-W-P-Q-S...
DIR-WQPpfad
DIR-Ppfad1-Wpfad2-W-Dpfad3...
Zweck:Inhaltsverzeichnisanzeigen
-Wgibtein"platzsparendes"Listingaus (wide).
-PhältdasListingnachjederSeitean (page).
-QverzichtetaufDisknameundfreienSpeicher (quick).
-SlistetalleDateienmitAttributen (system).
Sortiermodi:
-NordneNamen
-DordneDatum/Zeit
-GordneGrö₧e
-AordneArt
-Uunsortiert
BeimSortieren(wennnichtOption-Uaktivist)werdenOrdnerimmerzuerst
angezeigt.WirdkeinSortiermodusangegeben,wirdderdesletztenDIR-
Aufrufsbenutzt;beiFehleingabenwirdnachNamensortiert.Beider
AusgabeeinesVerzeichniswirdderSortiermodusmitausgegeben,wennünichtÇ
nachNamensortiertwird.
DIRkannmaximal512Einträgesortierenundbenötigtdazukurzfristigetwa
14kHautpspeicher.IstnichtgenügendfreierSpeichervorhanden,wirddas
Verzeichnisunsortiertausgegeben.äDiesistbesondersfürAccessories
wichtig,WORDPLUSlä₧timmernuretwa4kfrei,andereProgrammesindnoch
schlimmer.
ÇDIRkannbeliebigvieleArgumentehaben,dieVerzeichnissewerdendann
nacheinanderausgegeben.DabeiwirddieAnzahlderDateienunddie
DateilängeninsgesamtaddiertunderstganzzumSchlu₧ausgegeben.Die
freienBytesderDiskwerdennichtausgegeben.DieseMöglichkeitist
praktisch,wennmandieGesamtlängebestimmterDateienermittelnmöchte,
dieaufverschiedenenPfadenliegen,umsieaufeineDiskzukopieren,auf
derwomöglichnichtmehrgenügendPlatzist.
Ist<pfad>einDateimuster(z.B."texte\*.doc"),werdenallepassenden
Dateienausgegeben.
WennderSchalter"s"nichtangegebenwurde,werdennur"normale"
Dateienangezeigt.Mit"s"werdenauchSystemdateienoderversteckte(!)
Dateienangezeigt,DateienmitAttribut"Volume"jedochnie.
Manbeachte,da₧beimungepatchtenGEMDOSz.B.schreibgeschützte,ver
steckteDateienoderversteckteDisknamenwiedersichtbarwerden.Dieser
FehleristauchinTOS1.4nochenthalten,aberdieDokumentationwurde
demFehlerangepa₧t("It'safeature,notabug").
DerSchalter"q"istfürTOSvor1.4undFestplattengedacht,diemit
kleinenClustern(1kB)formatiertsindunddahereinebesondersgro₧e
FAThaben.DieAusgabeerfolgtdannsehrvielschneller.
ê1.10ECHOÇ
Syntax:ECHO
ECHO[-n]string1string2...
ECHOON
ECHOOFF
Zweck:ZeichenkettenausgebenoderECHO-Modussetzen/anzeigen
ECHOohneParameterzeigtdenECHO-ModusfürdenBatchbetrieban.Per
DefaultistECHOimmerOFF(d.h.dieausgeführtenZeilenwerdenim
BatchbetriebünichtÇangezeigt).
ECHOONoderECHOOFFsetztdenECHO-Modus.
ECHO<string>gibt<string>unddanneinenZeilenvorschubnachstdoutaus,
mitderOption-nwirddieserZeilenvorschubunterdrückt.
ê1.11ENDÇ
Syntax:END
Zweck:BrichtBatchdateiab
ENDbrichtnurdielaufendeBatchdateiab;wenndiesevoneineranderen
Batchdateiaufgerufenwurde,wirddienächsteZeilewiederausder
übergeordnetenBatchdateigeholt.
∙ê1.12EXITÇ
Syntax:EXIT
Zweck:cmdverlassen
ImGegensatzzuCOMMAND.COMinMS-DOSbewirktauchimBatchbetriebder
BefehlEXITeinVerlassendesKommandointerpreters.
ê1.13FIND
Ç
Syntax:FINDstring
Zweck:ZeichenketteninTextdateiensuchen
FINDisteinFilter,dashei₧t,erliestvonstdinundschreibtnach
stdout.Manmu₧alsostdinaufdiezudurchsuchendeDateiumlenken.
FINDunterscheidetnichtzwischenGro₧-undKleinschreibung.
Bemerkung:Falls<string>Leerstellenenthält,mu₧<string>inAnführungs
zeichengesetztwerden.
CTRL-ZwirdalsDateiendeerkannt
ê1.14FORÇ
Syntax:FOR var ( wert1 wert2 .. ) ...
Setzt var=wert1, führt ... aus. Beim nächstenmal wird var=wert2 gesetzt
und ... ausgeführt usw. Ist die Liste zuende, d.h. ')' erreicht, wird
... nicht ausgeführt, sondern gleich zum nächsten Kommando übergegangen.
FOR NOT var ( wert1 wert2 .. ) ...
Setzt var=wert1, überspringt ... Beim nächstenmal wird var=wert2 gesetzt
und ... wiederübersprungenusw. IstdieListezuende,d.h.')'
erreicht,wird ... ausgeführt.
Zweck:SteuerunginBatch-Dateien
FOR darf nicht geschachtelt werden!!!
Die Leerzeichen vor und nach den Klammern sind notwendig!!!
ê1.15FREEÇ
Syntax: FREE[x:]
Zweck:GibtGEMDOS-SpeicherfüraktuellesoderLaufwerkx:frei.
Wenndas100OrdnerProblemakutwird,kannmanmitdiesemBefehlden
SpeicherfüreinegeradenichtbenötigteHarddisk-Partitionfreigeben.
Au₧erdemkannmandiesenBefehlanwenden,wennGEMDOSsichweigert,Ordner
oderDateienzulöschen,obwohldieseleerbzw.nichtschreibgeschützt
sind.
ê1.16GOTOÇ
Syntax:GOTOlabel
Zweck:UnbedingterSprunginBatch-Dateien
DasLabelineinerBatchdateihatdieForm":name"
ê1.17IFÇ
Syntax:IF ERRORLEVEL n ... Führt ... aus, wenn Fehlercode >= n oder < 0
IF s1 == s2 ... Führt ... aus, wenn <s1> = <s2>.
IF EXIST datei ... Führt ... aus, wenn <datei> existiert.
IF NOT ... Führt ... aus, wenn Bedingung nicht erfüllt
Zweck:BedingterSprunginBatch-Datei.
DerFehlercodewirdvomletztenausgeführteninternenoderexternen
Kommandozurückgegeben.EinWertungleichNullsignalisierti.a.da₧ein
Fehleraufgetretenist.DieBefehleIF,END,FOR,GOTOveränderndenFehler
codenicht.
ê1.18MDÇ
Syntax:MDdatei
Zweck:NeuenOrdnererstellen
MD(makedirectory)erstellteinenneuenOrdnermitNamen<datei>.Ein
OrdnerodereineDateigleichenNamensdarfnichtschonimselben
Verzeichnisvorhandensein.
Achtung:NormaleDateienoderDisknamenwerdenvorTOS1.4wegeneines
GEMDOS-FehlersdurchMDgelöscht,wennsiedenselbenNamenwie
derneueOrdnerhaben.Alternative:KAOSbenutzen.
≤ê1.19MOREÇ
Syntax:MORE
Zweck:SeitenweiseAusgabevonTexten
MOREisteinFilter.Wird"--Mehr--"angezeigt,kanndieAusgabemit^C
abgebrochenwerden.MitderLeertastewirdeineSeite,sonsteineZeile
weitergescrollt.
^ZinderDateiwirdalsDateiendeerkannt.
MOREsolltewiealleFilternurinPipesoderbeiumgelenkterStandard-
Eingabeangewendetwerden,dasonstvonderTastaturgelesenwird;z.B.
wirkt"MORE<datei"ähnlichwiedieFunktion"Dateianzeigen"imDesktop
(ohnesichjedochbeileerenDateienodersolchenmitn*4096Bytes
oderLesefehlernaufzuhängen...)
1ê1.20MVÇ
Syntax:SieheCOPY
Zweck:Datei(en)umbenennenoderverschieben
MV(move)wirktähnlichwieCOPY,kopiertdieDatei(en)jedochnicht,
sondernverschiebtsieinnerhalbderVerzeichnis-StrukturêeinesÇLauf
werks,wasnatürlichvielschnellergeht.Beispiele:
-"MVdateineuername"benenntdiedie<datei>einfachum.
-"MV.\"verschiebtalleDateienimaktuellenUnter
verzeichnis(".")indasWurzelverzeichnis
("\").
-"MV\*.hheaders"verschiebtalleC-HeaderdateienvomWurzel
verzeichnisinden(hoffentlichvorhandenen)
Ordner"headers".
-"MVauto\dat.prg"SchiebtdieDatei"dat.prg"vomAUTO-Ordner
insaktuelleVerzeichnis.
DasVerschiebenistimmernuraufdemselbenLaufwerkmöglich.DieAngabe
vonGeräten(CON:,AUX:,PRN:)istunzulässig.EbensodarfkeineDateimit
demneuenNamenschonexistieren.
MVgibtbeiFehlernummerndenvomDOSerhaltenenFehlercodeimKlartext
aus.éLeiderhatdiesernurbeiKAOSunmittelbaretwasmitdemtatsächlich
aufgetretenenFehlerzutun.Ç
WennmannichtunterKAOSarbeitet,istderMV-BefehlmitVorsichtzu
genie₧en.SchwierigkeitengibtesbeispielsweisebeivollemRoot-
DirectoryoderUmbenennenineinexistierendesUnterverzeichnisusw.
Bemerkung:BeiMS-DOSisthiernurdasUmbenennenEINERDateiinDEMSELBEN
VERZEICHNISmöglich.CMDbietetdagegenalleMöglichkeitendes
UNIX-KommandosMV.
Au₧erdemhatauchCMDdenBefehlREN,derwieunterMS-DOS
arbeitetundabTOS1.4auchOrdnerumbenennenkann.
ê1.21PATHÇ
Syntax:PATH
PATHpfad1;pfad2...
Zweck:Kommando-Suchpfadsetzenoderanzeigen
PATHohneParameterzeigtdenSuchpfadan.MitParameterwirddieser
gesetzt.Eswirdnichtgeprüft,obdiePfadangabenkorrektsind.
Bemerkung:DerSuchpfadisteineEnvironment-Variable,kannalsoauchmit
SETmanipuliertwerden,z.B.
SET%path%;pfad3
hängt<pfad3>andenSuchpfadan
ê1.22PAUSEÇ
Syntax:PAUSE
PAUSEstring1string2...
Zweck:UnterbrechungundVerzweigunginBatch-Datei
PAUSEschreibtden<string>nach"CON:",nichtnachstdout;ebensowird
IMMERvon"CON:"(Tastatur)gelesen,ohneRücksichtaufdieStandardein
gabe-Umlenkung.
Wirdkein<string>angegeben,gibtPAUSEdieMeldung"Tastedrücken"aus.
DerAscii-CodederbetätigtenTastewirdnach"errorlevel"geschrieben.
MitHilfedesIFERRORLEVEL-Befehlskanndannabhängigvonder
betätigtenTasteimBatchprogrammverzweigtwerden.
πê1.23PROMPTÇ
Syntax:PROMPT
PROMPTzeichenkette
Zweck:Promptzeichenändern
PROMPTohneParametersetztdasDefault-Prompt("$n$g"),mitParameter
könnenau₧erdennormalenZeichenauchdiebeiMS-DOSüblichenSonderzei
chenverwendetwerden,z.B."$p$g"fürdiekomplettePfadangabeals
Promptoderauch"$ej$eH$eK$t$ek$n$g":
$$DasDollarzeichen'$'selbst
$_NeueZeile(CR,LF)
$bDasZeichen'|'
$dDatum
$eDasZeichenESC(1BH)
$g DasZeichen'>'
$hBackspace
$lDasZeichen'<'
$naktuellesLaufwerk
$pkompletteraktuellerPfadmitLaufwerk
$qDasZeichen'='
$tZeit
Bemerkung:DasPromptisteineEnvironment-Variable,kannalsoauchmit
SETmanipuliertwerden.
DasbeiMS-DOSvorhandenePromptzeichen"$v"fürdieDOS-
VersionfehltbeiCMD.AlsErsatzsiehedasinterneKommando
"ver".
ê
"1.24RDÇ
Syntax:RDordnername
Zweck:Verzeichnislöschen
RD(removedirectory)kannnurleere(!)Verzeichnisselöschen.
Au₧erbeiKAOSbewirktdasLöschendesaktuellen(leeren)Verzeichnisses
BombenoderSchlimmeres.éBeiKAOSgibtesnurein"Zugriffunmöglich".ÇMan
beachte,da₧auchdieaktuellenVerzeichnissedesDesktopgeschütztwerden
müssenundnichtgelöschtwerdensollten.KAOStutdiesvonsichaus;
daherkannesvorkommen,da₧sichOrdneraus"unerfindlichen"Gründen
nichtlöschenlassen.IndiesemFallgenügteinFREE(s.o.),umdas
LaufwerkauchfürDESKTOPabzumelden;dannlassensichalleOrdner
löschen.
Bemerkung:AufgrundeinesdervielenTOS-Fehlerkannesvorkommen,da₧
eingeradeerstelltesVerzeichnisnichtgelöschtwerdenkann.
Abhilfe:IBMkaufen,KAOSbenutzenodereinfachUNDO,RETURN
drücken.
ê1.25RENÇ
Syntax:RENalter_pfadnameneuer_dateiname
Zweck:EineDateiodereinenOrdnerumbenennen
DerBefehlRENentsprichtvölligseinemPendentinCOMMAND.COM.Der
Parameter<alter_pfadname>enthältPfadundNamenderumzubenennenden
Datei,derParameter<neuer_dateiname>enthältdenneuenNamenüohnePfadÇ.
MitdiesemBefehlkanneineDateiimselbenVerzeichnisumbenannt,also
nichtverschobenwerden(sieheMV).Au₧erdemwirdimmernurüeineÇDatei
behandelt,dieParameterdürfenbeidekeineWildcards('?','*')enthalten.
üAbTOS1.4könnenmitdiesemBefehlauchOrdnerumbenanntwerden.ÇDazu
wirdderOrdnerwieeineDateiohneabschlie₧endes'\'spezifiziert.
1.Beispiel:
renc:\compiler\turbo\tc.prgtc.ttp
istäquivalentzu
mvc:\compiler\turbo\tc.prgc:\compiler\turbo\tc.ttp
2.Beispiel(abTOS1.4):
renfolderordner
BenenntüdenOrdnerÇ"folder"in"ordner"um.EinäquivalenterMV-Befehl
istnichtmöglich,dadieserüalleDateienausdemOrdnerÇ"folder"zu
verschiebenversuchte.DasVerschiebenvonOrdnernistauchunterTOS1.4
nichtmöglich,soda₧derMV-BefehlbeimBehandelnvonOrdnernüberhaupt
nichtverwendetwird.
°ê1.26SHIFTÇ
Syntax:SHIFT
Zweck:DieParameterderBatchdateiverschieben
SHIFTschiebtdenParameter%1nach%0,%2nach%1usw.;sokönnenauch
mehrals10ParameterverwendetwerdenoderineinerFOR-Schleifeeine
AktionfüralleParameterausgeführtwerden.
ê1.27SETÇ
Syntax:SET
SETsymbol=
SETsymbol=wert
Zweck:Environmentmanipulieren
OhneParameterwirddasEnvironmentausgegeben.Mit"SETsymbol="wirddie
Environment-Variable<symbol>gelöscht,mit"SETsymbol=wert"aufeinen
neuenWertgesetzt.
SollderWertLeerstellenenthalten,setzeman"symbol=wert"inAnfüh
rungszeichen.
Bemerkung:DasEnvironmentistetwa1kBgro₧,alsoi.a.ausreichend.
ê1.28SORTÇ
Syntax:SORT[-C][-R][-n]
Zweck:Textdateisortieren
^ZinderDateiwirdalsDateiendeerkannt.
SORTisteinFilter.Mit-CwirdGro₧-/Kleinschreibungunterschieden.Mit
-Rwirdumgekehrtsortiert.-nenthältdiePositiondesSchlüssels;z.B.
vergleichtSORT-4dieZeilenerstabderviertenSpalte.
EskönnennurDateiensortiertwerden,dieganzindenSpeicherpassen.
ê1.29TIMEÇ
(sieheDATE)
WieDATE,nurmitZeitstattDatum.
ê1.30TOUCH
Ç
Syntax:TOUCHdatei1datei2...
Zweck:DatumundUhrzeitderDateiaufaktuellesDatum/Uhrzeitsetzen,als
obsiegeändertwordenwäre.DasArchivbit(abTOS1.4unterstützt)wird
nichtbeeinflu₧t.
Als<datei>kannmanaucheinenPfadangeben,etwa"TOUCH\",dannwerden
alleDateienaufdemWurzellaufwerkinUhrzeitundDatumaktualisiert.
SinnvollistdieAnwendungfüreinMAKE,dasmansozwingenkann,
Quelltexteneuzuübersetzen,dasichjetzteinneueresDatumhabenals
diebereitserzeugtenObjektdateien,oderfürdenFall,da₧manDateien
mitdemnichtssagendenDatum6.2.86hat.
ê1.31TREEÇ
(sieheCK)
WieCK,eswerdenjedochnurdiezulässigenPfadedesLaufwerks
ausgegeben.
ê1.32TYPEÇ
Syntax:TYPEdatei1datei2...
Zweck:Datei(en)anzeigen
TYPEkannbeliebigvieleArgumentehaben.Ist<datei>einDateimusteroder
einPfad,werdenallepassendenDateienangezeigt.DieDateinamenerschei
nennuraufdemBildschirmundwerdennichtnachstdoutgeschrieben.Im
Gegensatzzu"MORE"wirddasZeichen^Znichtausgewertet,damitdie
VerkettungvonDateienauchbeisolchenDateienfunktioniert,diedieses
Zeichenenthalten.
Bemerkung:TYPEwirktwieCATinUNIX.Mit"TYPEdatei1datei2>datei3"
kannmanDateienverketten.Dabeibekommt<datei3>,im
GegensatzzumCOPY-Befehl,dasaktuelleDatum.
Σê1.33VERÇ
Syntax:VER
Zweck:TOS/KAOS-Version,GEMDOS-VersionundCMD-Versionanzeigen.
DieGEMDOS-VersionhatnichtunbedingtetwasmitderTOS-Versionzutun.
HiereineAufstellungderbisherbekannten(deutschen!)Versionenfürden
ST(ohnediefürSTEoderTT):
TOS1.020/06/85,GEMDOS0.13Diskversion(uralt)
TOS1.020/11/85,GEMDOS0.19Diskversion(erste"endgültige")
TOS1.006/02/86,GEMDOS0.19Diskversion
ROMs("Rom-TOS")
TOS1.006/02/86,GEMDOS0.20ditomitTurbo-DOS
TOS1.222/04/87,GEMDOS0.19ROMs("BlitterTOS")
KAOS1.222/04/87, GEMDOS0.20KAOS(VorversionvomNovember'87)
KAOS1.222/04/87,GEMDOS0.21KAOS1.2.3(vomJuli'88)
TOS1.418/05/88,GEMDOS0.21Diskversion1.4(BetaVersion)
TOS1.408/08/88,GEMDOS0.21Diskversion1.4(DeveloperVersion)
TOS 1.422/02/89,GEMDOS0.21 ROMs1.4 (Messe-Version)
TOS 1.406/04/89,GEMDOS0.21 ROMs("Rainbow"TOS1.4)
KAOS1.406/04/89,GEMDOS0.22 KAOS1.4.x
KCMD.ACCgibthierauchdieAES-Versionsnummeraus,diejedochvon
geringeremInteresseist.TOS1.0/1.2gebenhier$120an(wirddezimalals
V1.32angezeigt),TOS1.4gibt$140an(wirdalsV1.64angezeigt)undKAOS
1.4$141(alsoV1.65).GEM2.2vonABChatVersionsnummer$210(alsV2.16
angezeigt).
ê1.34VERIFYÇ
Syntax:VERIFY
VERIFYON
VERIFYOFF
Zweck:Read/Write-Verify-FlagdesBIOSanzeigen/ändern
BeimEinschaltendesRechnersistdasVERIFY-Flag(imGegensatzzuMS-
DOS)immereingeschaltet.WennmanmitDiskettearbeitet,kannmandie
Schreibzugriffedurch"VERIFYOFF"starkbeschleunigen.Dafürwird
besondersbeibilligenDiskettendasRisikoetwashöher,da₧Schreibfehler
nichterkanntwerden.
DasVerify-FlaghatnormalerweisenurAuswirkungenaufdieLaufwerkeA:
undB:,esseidenn,einanderesTreiberprogramm(Festplatte)fragtdiese
Systemvariableebenfallsab.
ê2.ExterneKommandosimBIN-OrdnerÇ
AufderDiskettebefindensichimOrdnerBINeinigeexterneKommandos.
DamitmandieseohneAngabedesPfadnamensstartenkann,solltemandie
PATH-Variableentsprechendsetzen.
AlleKommandossindreineTOS-Programme,dieAusgabennachSTDOUTund
FehlermeldungennachHandle4(STDERR)oderdirektnachCON:schreiben.
SiegebenalsRückgabewertDOS-FehlercodesoderbeifehlerlosemLaufeine
0zurück.
DieexternenKommandoshabenkeineVersionsnummer.NeuereVersionenlassen
sichnuramDatumderProgrammdateierkennen.
StartetmaneinexternesKommandoohneParameter,erhältmaninderRegel
einekurzeErklärungdermöglichenParameter.
Φê2.1PRINTÇ
Syntax:PRINT{-[p][s][i][c][d]}datei1datei2...
Zweck:Textdatei(en)aufEpson-kompatiblenDruckernausgeben
-tnTabulatorweite<n>Stellen
-pSeitenvorschubnachjederDatei
-sSchmalerZeilenabstand(1/8")
-iInitialisierungvorjederDatei
-cSchmalschrift(Compressed)
-dBreitschrift(DoubleWidth)
DieTextdateiwirdausgedruckt,wobeiallenationalenSonderzeichen,
soweitmöglich,inEpson-Zeichenübersetztwerden.EinigeZeichenwerden
dafürneudefiniert.
BeimAusdruckenhälteinebeliebigeTastedieAusgabean,CTRL-Cbricht
denlaufendenDruckvorgangsofortab.WennkeinDruckereingeschaltetoder
dieserOFF-LINEist,kannderDruckvorgangebenfallsabgebrochenwerden,
ohneaufdieberühmt-berüchtigten30sec."Time-Out"zuwarten.
PRINTsprichtdenDruckerüberdieStandarddateistdprnan.Durchdie
KorrekturderEin-/Ausgabeumlenkungeinschlie₧lichderStatusabfragen
(z.B.Cprnos())istesunterKAOSvölligproblemlosmöglich,dieAusgabe
vonPRINTineineDateioderaufdenBildschirmzulenken,etwamit"PRINT
datei3>datei.prt".FürandereTOS-Versionenwageichesnicht,
Vorhersagenzutreffen...
1ê2.2CRASHDMPÇ
Syntax:CRASHDMP
Zweck:DatenderletztenException(Bomben)anzeigen
DieArtderletztenException(z.B.Busfehler)sowiealleRegisterinhalte
beiderenAuftretenwerdenlesbarnachstdoutgeschrieben.ImFallBus-
oderAdre₧fehlerwerdendieoberstenEinträgedesSupervisorstacksbei
AuftretenderExceptionebenfallsdekodiert.ManerhältInformationenwie
etwa:"Adre₧fehlerbeiPC=xxx,SR=xxxundLesezugriffimUsermodeauf
Adressexxx,verantwortlicherMaschinenbefehl:xxx".
BesondershieristdieUmlenkungCRASHDMP>dateifürspätereVerwendung
sinnvoll.
ê2.3EXE2BINÇ
Syntax:EXE2BIN dateimuster/pfad
Zweck:ProgrammdateienineinSpezialformatumwandeln
AufdieExtension.PRGund.TOSund.TTPkannverzichtetwerden,EXE2BIN
ergänztsieautomatisch.BeiAngabevonPfadenoderDateimusternwerden
allepassendenDateienbearbeitet.
ProgrammeohneRelocation-Daten(also"positionindependent")könnenvom
GEMDOSsehrvielschnelleralsnormaleProgrammegeladenwerden.Dabei
werdenwederdasBSS-SegmentnochderübrigefreieSpeichergelöscht,
bevordasProgrammgestartetwird.
EXE2BINprüftnun,obdasProgramm"positionindependent"ist,undwandelt
esdannineineArtCOM-Formatum.Manhatdabeiselbstdaraufzuachten,
da₧sichdasProgrammnichtaufeingelöschtesBSS-Segmentverlä₧t.
WirdEXE2BINunterKAOSgestartet,wirddieFshrink-Funktionbenutzt,um
dienunnutzlosen(Null-)RelocationdatenvonderDateizuentfernenund
diesesozukürzen.
AbTOS1.4gibteseinsogenanntes"Fastload-Bit"imProgrammheader,das
bewirkt,da₧nichtmehrdergesamtefreieSpeicher,sondernnurnochdas
BSSgelöschtwird.EXE2BINfragtnunab,obdiesesBitbereitsgesetztist
und,wennnicht,setztes.DabeibleibenDatumundUhrzeitderDatei
expliziterhalten.
ê2.4LABELÇ
Syntax:LABELDisknameanzeigen
LABELx:DisknamevonLaufwerkx:anzeigen
LABELnameDiskbenamsen
LABELx:nameDiskinLaufwerkx:benamsen
Zweck:Diskettennamenanzeigen,setzenoderlöschen
WirdalsneuerName"-"angegeben,wirdderDiskname,fallsvorhanden,
einfachgelöscht.
LABELfunktioniertbeiallenDiskettenarten,Harddisk,Ramdiskusw.und
mitsämtlichenTOS-Versionen.
LABELgibtGEMDOS-Fehlercodeszurück,fallsetwasnichtfunktionierthat.
φê2.5FCÇ
Syntax:FC[-s][datei1[datei2|pfad2]]
Zweck:Dateienvergleichen(abAdresse<s>)
DiebeidenDateienwerdenBytefürByteeingelesenundverglichen.Die
UnterschiedewerdenalsHex-undAscii-Codesnachstdoutgeschrieben.
SinddieDateilängenunterschiedlich,wirdabgebrochen.Ebensokannman
dieAusgabeaufdenBildschirmmitCTRL-Cabbrechen.
WirdFCohneParametergestartet,werdendieDateinamenvonSTDIN
eingelesen.
EndetderzweiteParameterauf':'oder'\',wirdangenommen,da₧essich
umeinePfadangabehandelt.DerreineDateinamewirdvon<datei1>
extrahiertundan<pfad2>angehängt.
WirdnureinParameterangegeben,wirdalszweiterParameterdasaktuelle
Verzeichnisangenommen.
MitHilfedieserbeidenMöglichkeitenwirdesleicht,gleichnamigeDateien
inverschiedenPfadenzuvergleichen.
BeimehralszweiParameternwirddieSyntaxausgegeben.
ê2.6KILLRAMÇ
Syntax:KILLRAM
Zweck:Ausschaltersimulieren;'N','n'undrechteMaustastebrechenab,
alleanderenTastenunddielinkeMaustasteführenaus.Für
TastatureingabenwirdauchderMIDI-Portabgefragt.
ê2.7ASTOWORD.TTPÇ
Syntax:ASTOWORDasciidatei
Zweck:KonvertiertDateivonASCII->WORDPLUS
DieAusgabedateihatdenselbenNamenwiedieEingabedatei,jedochmitder
Extension".doc".ExistiertsolcheineDateischon,wirdsiegelöscht.
ê2.8WORDTOAS.TTPÇ
Syntax:WORDTOASdatei[.doc]
Zweck:KonvertiertDateivonWORDPLUS->ASCII
Enthält<datei>keineodereineandereExtensionals".doc",wirdals
Extension".doc"eingesetzt.
DieAusgabedateihatdenselbenNamenwiedieEingabedatei,jedochmitder
Extension".txt".ExistiertsolcheineDateischon,wirdsiegelöscht.
ê2.9DUMP.TTPÇ
Syntax: DUMP [-bci] [[-[s]hhhhhh[-hhhhhh]] datei]
Zweck:Hex-/Ascii/C-DumpvonallenDateien(auchCON:)
DasProgrammersetztdasgleichnamigeProgrammimEntwicklungspaketvon
Atari,istjedochkürzer(2kstatt10k)undgibtauchsolcheDateien
korrektaus,dienichteinVielfachesvon16BytesLängehaben.Au₧erdem
kanndieAusgabealsEingabefüreinenC-Compilerbenutztwerden.
DasZeichen"s"imSchalterzurAngabederStartadresse(Hex)kann
weggelassenwerden.
IstdieDatei"CON:",kanndieEingabemit^C,einerleerenZeile(nur
Return)odereinerZeileabgebrochenwerden,dienur^Zenthält.
DieSchalterb,c,isindfürdieAusgabealsC-Quelltext(Schalter"c")und
bedeuten"mitKommentar"("i"),"byteweise"("b").
#ê2.10SPLIT.TTPÇ
Syntax:SPLIT[-t][-[s]hhhhhh]datei[ziel1[ziel2]]
Zweck:(Text-)<datei>in<ziel1>und<ziel2>aufspalten
WennderSchalter-tangegebenwurde,wirddieDateiimmerhintereinem
Zeilenendeaufgespalten,dieserSchaltermu₧alsoimmerdannangegeben
werden,wennessichumeineTextdateihandelt.
WirdkeineAufspaltposition(-shhhhhh,hexadezimal)angegeben,wirddie
DateimöglichstinderMittezerlegt.
WerdendieParameter<ziel1>und<ziel2>nichtangegeben,sowirdder
ersteTeilvon<datei>ineineneueDatei__EINS__geschrieben.Wirdnur
<ziel1>angegeben,sowirdnurderersteTeilder<datei>nach<ziel1>
geschrieben,beiAngabevon<ziel2>derzweiteTeilnach<ziel2>.
WillmannurdenzweitenTeilderDateiabspalten,kannman<ziel1>unter
KAOSalsNULoderNUL:angeben.
Beispiel:SPLIT-1cCMD.PRGNULCMD.XXX
schreibtdieDateiCMD.PRGohnedieersten28BytesProgramm
headernachCMD.XXX
Ωê3.Stdout/Stdin-UmlenkungÇ
WieMS-DOSundUNIXhatauchGEMDOSsogenannteStandard-Dateienund
physikalischeDateien.
DieStandard-DateienhabendieHandle-Nummern0bis5,dabeisind:
0"stdin",Standard-Eingabe(normalerweiseTastatur)
1"stdout",Standard-Ausgabe(normalerweiseBildschirm)
2"stdaux",Standard-Hilfsdatei(normalerweiseRS-232)
3"stdprn",Standard-Druckdatei(normalerweiseCentronics)
4 "stderr",unbenutzté (beiKAOSundabTOS1.4:Bildschirm)Ç
5"stdxtra"é Çunbenutzté (beiKAOSundabTOS1.4:Bildschirm)Ç
AlleStandarddateien(0bis5)könnenmitderDOS-FunktionFforce()auf
jedebeliebigeDateioderjedesbeliebigeGerätumgelenktwerden.Die
"normalen"Dateiendagegen(Handles6bis75)könnennichtumgelenkt
werden.
WeitereInformation:sieheST4/87:"DieXENIX-StrukturdesGEMDOS".
DieUmlenkungistjedochnichtsoproblemlos,wieesdenAnscheinhat.
NebendertotalverkorkstenBehandlungderStandardpfadeliegenhierdie
schlimmstenFehlerdesGEMDOS(inFforce(),Fdup(),Fclose()).
ImGegensatzzuCOMMAND.COMunterMS-DOSkannCMDunterTOSsämtliche
6StandarddateienaufderKommandozeileumlenken.Beideninternen
BefehlendesCMD(z.B.DIR >dirlist)funktioniertdieUmlenkungproblem
los.BeimAufrufvon(externen)Programmen(z.B.SID >list)konnteman
bisherauchbeimTOS1.2dieAusgabenichtumlenken,dadiegesamte
zeichenorientierteAusgabenichtfunktioniert.DieseFehlersindunter
KAOSvölligundabTOS1.4z.T.behoben.
UmlenkungenwerdeninfolgenderFormeingegeben:
>datei Erstellt <datei>, lenkt STDOUT auf <datei>
>>datei Hängt STDOUT an <datei> an.Erstelltggf.<datei>
<datei Lenkt STDIN auf <datei>, falls diese existiert
pgm | .. | pgm Pipe
n>datei für0<=n<=5:Wieoben,abermitbel.Std.datei
n>>datei für0<=n<=5:Wieoben,abermitbel.Std.datei
DieAusgabedateiwirdbei'<'zumLesen,bei'>'und'>>'zumLesenund
Schreibengeöffnet.DieEingaben"pgm>out"und"pgm1>out"sind
äquivalent.DieHandles2..5könnennichtmit'<'umgelenktwerden;daher
werdensieimmerzumLesenundSchreibengeöffnetundggf.erstellt.Bei
derUmlenkungvonSTDAUX(mit"2>datei")wirdsowohldieEin-alsauchdie
AusgabeaufdieserielleSchnittstelleunterDOSumgelenkt.Essindalso
sowohldieBefehleCauxout(),Cauxos()alsauchCauxin()undCauxis()
betroffen.Esistimübrigennichtzuempfehlen,STDINaufdenDruckerzu
lenken,damanvondortnichtviellesenkann...
AucheinePipekannumgelenktwerden,z.B."DIR|SORT>dirlist".
AlsKommandoszwischendemerstenundletzten"|"derPipekommenin
ersterLinie"Filter"inFrage,alsosolcheProgramme,dievonstdinlesen
undnachstdoutschreiben.
FürdiePipeswerdennormalerweiseimWurzelverzeichnisdesaktuellen
LaufwerkstemporäreDateienmitNamen"\$$PIPE?.?"erstellt.Dahersoll
tensichkeineDateiendiesesNamensdortbefinden,undau₧erdemdarfdas
aktuelleLaufwerknichtschreibgeschütztsein.IsteineEnvironment-
VariableTMPDIRvorhanden,werdendietemporärenDateiendorterstellt
(inzwischenistderHerstellervonMS-DOSauchaufdenDrehgekommen,
Version5.0machtesgenauso,wieCMDesseitJahrentut).Beispielsweise
beiTMPDIR=c:\tmpoderTMPDIR=c:\tmp\hei₧endietemporärenDateiendann
c:\tmp\$$pipe?.?.DurchdiesespraktischeFeaturelä₧tsicherreichen,
da₧PipesimmeraufdemschnellstenSpeichermedium,alsoaufRamdiskoder
Festplatteangelegtwerden,auchwennmansichgerade"aufderDiskette
befindet".
φÇEinAnwendungsbeispielfürdasUmlenkeneineranderenStandarddatei:
"PRINTdrucktext3>out"
RuftdasProgramm"PRINT"(s.u.)aufmitumgelenkterSTDPRN-Datei.Die
DateidrucktextwirdjetztnichtdirektaufdenDruckergeschrieben,
sonderneinschlie₧lichallerSteuerzeichenindieDatei"out".Ebenso
könntemanmit:
"PRINTdrucktext3>con"
denfürEpson-DruckerübersetztenTextaufdenBildschirmschreiben.So
lassensichguteigeneoderfremdeProgrammetesten,dieeineAusgabeauf
denDruckermachen.DasResultatlä₧tsichhinterherexaktmitDUMP
analysieren.
Ichempfehle,eigeneProgrammesozuschreiben,da₧derStandardkanal4
fürdieFehlerausgabe(STDERR)verwendetwird.
Mit:
"PGM4>prn"
könntemandannz.B.alleFehlermeldungenaufdenDruckerlenken.Manmu₧
allerdingsvorherprüfen,obderStandardkanal4gültigist(etwamit
Fdup),diesistfürTOS-Versionenvor1.4notwendig,KAOSbereitetauch
inderVersion1.2.3keineProbleme.
%ê4.Geräte(Devices)Ç
TOSkennt3Geräte,diewienormaleDateienbehandeltwerden,z.B.kann
dieStandard-AusgabeaufdenDruckergelenktwerden:
1)CON:Bildschirm/Tastatur
2)AUX:RS-232
3)PRN:Drucker
Mit"TYPEdatei>AUX:"kannmanz.B.einfachDatenüberdieserielle
Schittstelleschicken.
ImGegensatzzuMS-DOSfehlterstensdasGerät"NUL:",zweitenskönnendie
DoppelpunkteünichtÇweggelassenwerden.
é
UnterKAOSgilt:
1)EsgibtdasGerätNUL:
2)Auch"con","a:\Con"oder"con.c"usw.werdenalsGeräteerkannt,dies
wegenderbehauptetenKompatibilitätzuMS-DOS.
3)DasErstellenvonOrdnernmitGerätenamensowiedasUmbenenneninein
GerätwirdvonKAOSabgewiesen.
Ç
(ê5.Kommandozeilen-AuswertungÇ
VorAusführungjederKommandozeile(obvonTastaturoderBatch-Datei)
werdenParametervoneinandergetrennt,evtl.Datei-Umlenkungenvorgenom
menundEnvironment-Variableausgewertet.DasTrennzeichenistimmerdie
Leerstelle,währendunterMS-DOSauchdasKommazugelassenist.Mit
SetzeninAnführungszeichenwirddieAuswertungverhindert.EineZeichen
ketteinAnführungszeichenistimmereinganzerParameter,egal,obdavor
oderdahinteroderdazwischenLeerzeichenoderandereSonderzeichen
('>','<','|','%')stehenodernicht.DieAuswertungvonVariablenwie%1
oder%path%oderSteuerzeichenwie%\n%kanndurchEinklammerungin
Hochkommataverhindertwerden.
"......" ...istEINParameter, kann ' oder SPACE enthalten.
'......' Wertet ... nicht aus, kann " oder SPACE enthalten.
%var% Gibt Wert von var (mitSETgesetzt)an, falls vorhanden.
%% Das '%'- Zeichen selbst
%\n%Zeilenvorschub(LineFeed)
%\r%Wagenrücklauf(CarriageReturn)
%\b%Rückschritt(Backspace)
%\t% Tabulator
Beispiel:SET"f1=dir-q%\n%"belegteineFunktionstaste.BeimBetätigen
wirdderBefehlautomatischausgeführt.
ImGegensatzzuUNIXwerdenEnvironment-Variablein'%'eingeklammert,um
dasEndedesVariablennamensdeutlichzumarkieren;Ausdrückewie
"$(pfad)/datei"(UNIX)sinddahernichtnotwendig,manschreibteinfach
"%pfad%\datei".
Bemerkung:MS-DOSkenntwederdieeinfachenAnführungszeichen',umdie
doppeltenAnführungszeichen"innerhalbeinesParameterseinge
benzukönnen,nochdieMöglichkeit,Environment-Variablemit
Hilfedes%-ZeichensinnerhalbderEingabezeileeinzusetzen.
┌ê6.Editor-SteuertastenÇ
WegendervielenFehlerdesSystemaufrufsCconrs()(falscheBehandlungvon
Umlauten,falscheReaktionbeiÜberlaufdesEingabepuffers,Fehlerbei
EingabenübereinZeilenendehinaus)enthältCMDeineeigeneRoutinezur
EingabeeinerZeile.SiewirdbenutztbeiderEingabeeinesKommandos,bei
DATEundTIME.Davonstdingelesenwird,kanndieEingabeauchumgelenkt
werden.
Dergrö₧teVorteildereigenenEingaberoutineistdieMöglichkeit,die
Funktionstastenfreizudefinieren.DieBelegungdieserTastenstehtim
Environment,wirdalsomitdemSET-Befehlvorgenommen.EinBeispiel:
SET"f1=edit"
belegtdieFunktionstasteF1mitderZeichenkette"edit".Wennwiehier
dieZeichenketteLeerstellenenthält,mu₧derParameterdesSET-Kommandos
inAnführungszeichengesetztwerden.FürdieTasteF10mu₧F0geschrieben
werden.SinnigerweisesolltendieFunktionstasten-Belegungenzusammenmit
derPATH-DefinitioninderAUTOEXEC.BAT-Dateistehen.
FolgendeSondertastenwerdenbenutzt:
F1..F10 JenachBelegung
TAB Cursor an Anfang/Ende der Eingabe
BS Zeichen links von Cursor löschen
DEL Zeichen unter Cursor löschen
RETURN Eingabe abschlie₧en,BefehlinUNDO-Puffer
ENTER Eingabe abschlie₧en
INSERT Einfüge- /Überschreibmodus wechseln
CLR Eingabe löschen
UNDO letzte Eingabe aufrufen
Cursor L/R Cursor bewegen
éUnterKAOSgilt:
EswirdeinfachderCconrs-Aufruf(bzw.Fread(STDIN,...)benutzt.KAOS
enthältkomplettdenobenbeschriebenenEditor,derdamitjedemProgramm
zugänglichist.DamitsindunterjedemProgramm,dasvonKCMDgestartet
wurde,dieFunktionstastenbelegt(z.B.SID,PROBE,PASCAL-Programmemit
readln(),FORTRAN-ProgrammemitREAD(*,*)usw.).
InKAOS1.4istderZeileneditornocheinmalverbessertunderweitert
worden,siehedortigeDokumentation!
Ç
╓ê7.StartenvonProgrammen(ExterneKommandos)Ç
DieProgrammeaufderDiskette/HarddiskwerdenalsexterneKommandos
bezeichnet.Insbesonderegiltdasfürsolche,diedieKommandozeile
auswerten(i.a.alleTTPs).BeiderUmlenkungderStandardein-bzw.
Ausgabeistdaraufzuachten,da₧einigeLaufzeitsystemevonCompiler
sprachenvonsichausdieKommandozeilenachEinträgenwie">datei"
absuchenunddieAusgabeselbstumlenken.WillmandieseUmlenkung
benutzen,mu₧mandenAusdruck">datei"inAnführungszeichensetzen,um
dieAuswertungdurchCMDzuverhindern.
AndasaufrufendeProgrammwirdau₧erderKommandozeileaucheineKopie
des(durchSETanzeigbaren)Environmentsübergeben.DasProgrammkannso
alleEinträgedesEnvironmentsverwenden,ohnesiejedochzuändern(z.B.
diePATH-VariableoderdieFunktionstasten-Definitionen).Ameinfachsten
zeigtsichdieserEffekt,wennmanvonCMDauseinfachnocheinmal"CMD"
eingibt.
NützlichistdieEinrichtungderPATH-Variablen,dieesermöglicht,
externeKommandosaufzurufen,diesichnichtimaktuellenVerzeichnis
befinden,ohnelangePfadangabenzumachen.Beispiel:
SeiPATH=p1;p2;gesetztundalsKommando"edit"eingegeben.Kommandos
werdeninfolgenderReihenfolgegesucht:
-InternesKommando"edit"
-Batchdatei"edit.bat","edit.btp"
-TOS-Programm"edit.ttp", "edit.tos"
-GEM-Programm"edit.prg", "edit.app"
-Batchdatei"p1\edit.bat""p1\edit.btp"
-TOS-Programm"p1\edit.ttp", "p1\edit.tos"
-GEM-Programm"p1\edit.prg", "p1\edit.app"
-Batchdatei"p2\edit.bat","p2\edit.btp"
-TOS-Programm"p2\edit.ttp", "p2\edit.tos"
-GEM-Programm"p2\edit.prg", "p2\edit.app"
MankanndenDateitypauchexplizitangeben(z.B."edit.prg"),wennman
verhindernwill,da₧einegleichnamigeBatchdateio.ä.aufgerufenwird.
DerDateityp.ACCwirdnichtautomatischgesucht,wennkeineExtension
eingegebenwurde,kannaberexplizitetwamit"C:\KAOSCONF.ACC"gestartet
werden.ProgrammemitExtension.ACCwerdenwieProgrammemitExtension
.PRGoder.APPimGrafikmodusgestartet.
GibtmaneinenexplizitenPfadan,z.B."a:edit",wirddiePATH-Variable
nichtverwendetundnurimangegebenenDirectorygesucht.
äAchtung:BeimBetriebalsAccessorywerdenKommandos,dieauf.PRGoder
.APPenden,nichtautomatischgesuchtunddahernichtgefunden,wennman
keineExtensioneingibt.DiesistalsVorsichtsma₧nahmenötig,daGEMes
nichtschafft,mehrereApplikationengleichzeitigzuverwalten.Startet
manetwaWORDPLUSvonWORDPLUSaus,gibtesBombenterror.Eigentlich
könntejaAESdiesen(häufigauftretenden)Fallabfangen,aberleider...
WillmantrotzallerWarnungeneinProgrammmitEndung.PRGstarten,mu₧
mandieExtensionmiteingeben.
ÇGEM-ProgrammewerdenmitMauszeigerundohneCursorgestartet.Der
etv_critic-HandlerdesDESKTOPwirdinstalliert(Diskettenfehlerper
Alertboxanzeigen).DerBildschirmwirdbeiAufrufdesProgrammsnicht
gelöscht.MankanndiesabervorherdurchCLStun.
TOS-ProgrammeoderBatch-DateienwerdenmitCursorundohneMauszeiger
gestartet.Deretv_critic-HandlerdesCMDbleibtinstalliert.
AnsonstenbestehtkeinUnterschiedzwischendemAufrufvonGEM-undTOS-
Programmen.SelbstverständlichkönnenParameteranGEM-Programme
übergebenwerden.Obdieseauchausgewertetwerden,isteineandere
Frage...DieDateiartenBAT/BTPundTOS/TTPundPRG/APPsindfürCMD
jeweilsäquvalent.DerDateitypBTPexistiertfürdiespeziellenFreunde
vonNeodesk.
NachdemAufrufjedesProgrammeswirddessenRückgabewertuntersucht.Ist
ernegativ,wirderalsDOS-oderBIOS-Fehlercodeinterpretiertundim
Klartextausgegeben.BeimDesigneneigenerProgrammekannmanbeispiels
weisesokodieren:
if (0>(handle=Fopen("program.hlp",O_RDONLY)))
exit(handle); /*MitDOS-Fehlercodebeenden*/
oder:
if (NULL==(ptr=(char*)Malloc(10240L)))
Pterm((int)ENSMEM);
statt:
if (...)
{
fprintf(stderr,"NichtgenügendSpeicher!\n");
Ç exit(1);
}
DasspartnichtnurTipparbeit,sonderngrenztdenFehler(unterKAOS,
dennTOSlieferthäufigfalscheCodes)häufigauchnochbesserein,z.B.
imoberenFall:
"Dateinichtgefunden"
"Pfadnichtgefunden"
"UngültigesLaufwerk"
"InternerFehler"
"Nichtgenügend(interner)Speicher"
"NichtgenügendDateihandles"
"Spurnichtgefunden"
"CRC-Fehler"
"Sektornichtgefunden"
"Laufwerknichtbereit"
,ê8.Batch-DateienÇ
DasKonzeptderBatch-DateientsprichtimwesentlichendemimMS-DOS.
Batch-BefehlesindGOTO,SHIFT,IF,END,FOR,PAUSE.
DasLabelfürGOTOsiehtsoaus:":label".EsstehtamZeilenanfangeiner
ZeilederBatchdatei.StehtdahintereinLeerzeichen,sowirdallesrechts
vondemLeerzeichenstehendeignoriert.Mit":Kommentar"kannmansoeine
Batchdateikommentieren,einBefehlREMdesMS-DOSwirdbeiCMDnicht
benötigt.
DasECHO-FlagwirktbeiCMDnuraufdieAusführungvonBatchdateien.Es
istnormalerweise(andersalsbeiMS-DOS)ausgeschaltetundbrauchtnur
mitECHOONeingeschaltetzuwerden,wennmaneinekomplizierteBatchdatei
verfolgenmöchte.
Batchdateienkönnenverschachteltwerden,dieneueBatchdateierhältauch
neueParameter.Biszu3Ebenensindmöglich.
EineBatchdateikannmitCTRL-Cabgebrochenwerden.NachjederAusführung
einerKommandozeileprüftCMD,obCTRL-CimTastaturpuffersteht.In
diesemFallwirddergesamteBatchproze₧sofortunterbrochen,alsoauch
beiVerschachtelungderBatchdateiensofortdienächsteKommandozeilevon
derTastaturerwartet.
EnthältdasKommandozumAufrufeinerBatchdateieineEin-/Ausgabeum
lenkung(fürirgendeinenodermehrereder6Standard-Kanäle),sogilt(im
GegensatzzuMS-DOS)dieUmlenkungfürdieganzeBatchdatei.Soll
innerhalbderBatchdateieineAusgabeunbedingtaufdenBildschirm
ausgegebenwerden,kannmanz.B.schreiben:
"ECHOstring>CON:"
DiefolgendenZeilenderBatchdateiverwendenwiederdenfürdieganze
BatchdateigültigenAusgabekanal.
ê9.CMDalsAccessory.AllgemeinesundspeziellesÇ
CMDisteinProgramm,da₧,einmalgestartetoderaktiviert,völligaufGEM
verzichtet.EsistinseinerFunktionvölligvonDOSabhängig.
EinAccessoryläuftbeiGEMuntereinereigenen"Applikation",aberunter
demselben"Proze₧"wiedasgeradelaufendeHauptprogramm.Dashei₧t,da₧
essichfürAESumzweiverschiedeneApplikationen,fürDOSaberum
denselbenProze₧handelt.Geradeletzteresführtzuziemlichen
Schwierigkeiten,daKCMD.ACCfürDOSkeineigenständigesProgrammist.
DOSmerktsichbeidenfolgendenResourcen,welchemProze₧sieangehören:
1) geöffneteDateien
2)Speicherblöcke(perMallocgeholt)
3)Standardpfade
4)Standardlaufwerk
5)Standarddateien.
AnhanddesPD(Proze₧Deskriptor)wähltDOSzumBeispieldas
Standardlaufwerkaus,sowieetwaVDIanhanddesGerätehandlesdiegerade
eingestellteFüllfarbeverwendet.EinAccessory,dasetwadas
StandardlaufwerkodereinenPfadändert,würdedasHauptprogramm
beeinflussenundggf.inSchwierigkeitenbringen.Andererseitsmü₧tenbei
jederAktivierungdesAccessoriesdiePfadeundStandarddateienvom
Hauptprogrammwiederübernommenwerden.
DieAntwortaufdieLösungalldieserProblemeisteinfach,die
Realisierungschonschwieriger:
Manmü₧teKCMD.ACCalsEIGENENProze₧laufenlassen.
WieteiltmanAESeineneueApplikationmit:appl_init()
WieidentifiziertAESeineApplikation:durcheineap_id("Handle")
WielöschtmandieseApplikationwieder:appl_exit()
WieteiltmanVDIeineneue"Workstation"mit:v_opnvwk()
WieidentifiziertVDIeine"Workstation":durcheinHandle
ÇWielöschtmaneinesolchewieder:v_clsvwk()
WieerzeugtmaneinenneuenProze₧:durchPexec()
WieidentifiziertDOSeinenProze₧:durchdenPD(Basepage)
WielöschtmaneinenProze₧:mitPterm()oderPtermres()
LeiderverwaltetdasaltmodischeGEMDOSkeine"Proze₧handles",diesich
wieinmodernerenBetriebssystemenerzeugenundwiederlöschenlassen.
Wasbleibtalso:Pexec()erzeugteinenneuenProze₧.DerModus0kommt
nichtinFrage,erlädteineProgrammdatei,dasmöchtenwirvermeiden.Die
Modi5(Basepageanlegen)unddann4(starten)könntenvielleicht
funktionieren.
WaspassiertabermitunseremProze₧,wennerper"exit"verlassenwurde
unddieHauptapplikationwiederzumZugkommensoll?Nehmenwiretwaan,
wirhabenfürLaufwerkA:denStandardpfad"\texte",unddieDiskwird
gewechselt,währenddasAccessorynichtaktivist.Wieistesumgekehrt,
wenndieHauptapplikationdenPfad"a:\meinetexte"hat,undwirmüssendie
Diskwechseln,währendKCMD.ACCaktivist.
DieAntwortaufalledieseFragenist:Durcheinander
Esseidenn,manverwendetKAOS:
KAOSbehandeltbeiDiskwechselnnichtnurdenlaufendenProze₧,sondern
auchalleVorgänger(überp_parentverkettet).Nursoistsichergestellt,
da₧auchdie"schlafenden"Prozessenicht"abgehängt"werdenundalle
Diskwechselmitbekommenüber:
1)UngültigmachendesaktuellenPfades(zurückzurRoot)
2)UngültigmachenallerStandarddateien,dieaufderaltenDiskliegen
AlsoläuftKCMD.ACCohnegrö₧ereÜberraschungennurunterKAOS.Die
UmschaltungderProzessegeschiehtganzproblemlosüberdieabTOS1.2
dokumentierteSystemvariable_run,dieimTOS-Headerenthaltenist.
DieseMethodeisteinfacheralsdasErzeugeneinerBasepageo.ä.
WirdKCMD.ACCvorAktivierendesDesktopzurInitialisierunggestartet,
passiertfolgendes:
DieBasepagevonKCMD.ACC(diebisherfürGEMDOSunbekanntist),wirdals
Proze₧unterdenUr-PDeingehängt(dasGro₧elterdesDesktop).Sokann
KCMD.ACCalleDiskwechselmitbekommen,solangeesschläft.Anschlie₧end
wirdeinfachindenevent-multigesprungen.
WirdKCMD.ACCnunaktiviert,tutsichfolgendes:
KCMD.ACChängtseineBasepageausderKettederProzesseausund
installiertwiederNULLalsUr-Gro₧elterdesDesktop.Anschlie₧endhängt
sichKCMD.ACCüberdielaufendeApplikation.FürGEMDOSsiehtesjetzt
alsosoaus,da₧KCMD.ACCvonderHauptapplikationüberPexec()gestartet
wurde.Schlie₧lichwirddieVariable_runaufKCMD.ACCgeleitet,alsofür
GEMDOSderneueProze₧gestartet.
BeiderEingabevon"exit"wirdwieder_runaufdielaufendeHaupt-
ApplikationgelegtundKCMD.ACCalsUr-Gro₧elterdesDesktopinstalliert.
DurchdieseVorgehensweisewirderreicht,da₧sowohlAESalsauchGEMDOS
dasAccessoryalseigenständigeApplikationbzw.Proze₧ansehenundeszu
keinen"Besitzstreitigkeiten"oder"Kompetenzproblemen"kommt.
Gro₧eProblemebereitetdasStartenvonProgrammenvonAccessoriesaus.
DieErfahrungmitverschiedenenAccessories(STOOLS,Schröttle-Shell)
zeigtefolgendesVerhalten:
-Applikationen(ProgrammeunterGEM)DÜRFENNICHTgestartetwerden.
BisherkannAESnureineApplikationgleichzeitigverwalten.
-DasStartenvonTOS-ProgrammenunterDESKTOPistmöglich
-DasStartenvonTOS-ProgrammenunteranderenApplikationenistzwar
zunächstmöglich,dieEingabevon"exit"zurRückkehrindie
HauptapplikationendetjedochIMMERmiteinemSystemabsturz.
DerGrundfürdasletztereVerhaltenistfolgendes:
GEMDOSlegtfürjedenProze₧einenSupervisor-Stackan.Dieserwirdfür
Interruptsgenutzt;auchdieRücksprungadressevoneinemTrapwirdhier
aufbewahrt.Leideristdieser"Interrupt-Stack"jedesmalDERSELBE(nicht
nurdergleich,sonderntatsächlichderselbe).TOS1.2beispielsweise
setztdensspimmerauf$755abeimStarteinesProzesses.
BeimAktivierendesACCgeschiehtfolgendes:
-DieHauptapplikationruftAESauf(evnt...);Rücksprungadresseund
geretteterSRliegenaufdemSupervisorstackderHauptapplikation.
-DerKontextwechsel(UmschaltenallerRegistereinschlie₧lichssp)auf
dasACCfindetstatt.
-DasACCläuft.ACCshabeneineneigenenSupervisor-Stack,dervonAES
angelegtwird,bevordasACC(nichtüberPexec()!)dasersteMal
gestartetwird.
-WirdnuneinneuerProze₧gestartet,legtGEMDOSdenselbenSupervisor-
Stackan,wieihndieHaupapplikationhat.BeimerstenInterruptoder
DOS-AufrufwerdenRücksprungadresseundgeretteterSRzerstört.
ÇSollnundieHauptapplikationwiedergestartetwerden,liegtdie
RücksprungadressenichtmehraufdemStack.DasSystemstürztab.
DerFehlertrittimDesktopnichtauf,daDESKTOPeineneigenenInterrupt-
StackhatundständigimSupervisormodusläuft.
DerFehleristoffensichtlichgleichzeitigAESundGEMDOSanzulasten.Man
kannauchsagen,da₧dasStartenvonProzessenvoneinemAccessoryaus
einfachnichterlaubtist.
DieKorrektur:KCMD.ACCwei₧vonTOS1.0,1.2,1.4(vom6.4.89),welchen
Default-Supervisor-StackGEMDOSfürneueProzesseanlegt.Esfragtdie
TOS-VersionsnummerabundmerktsichdiesenDefault-SSP.
WirddasACCaktiviert,werdendieobersten20LangwortediesesStacks
gesichert(sicherheitshalber,esmü₧teneigentlichdieobersten3Worte
genügen).WirddieserStackzerstört,machtdasnichts,davordem
nächstenAES-Aufruf(zurRückkehrindieHauptapplikation)die20
Langwortewiederzurückgeschriebenwerden.BisherhatsichdieseMa₧nahme
alsausreichenderwiesen.TrotzdemkönntenimEinzelfallProbleme
auftreten.Mansolltevorherimmertesten,obderAufrufvonProgrammen
funktioniert,bevormanwichtigeDatenaufsSpielsetzt.