home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Computer Club Elmshorn Atari PD
/
CCE_PD.iso
/
pc
/
0600
/
CCE_0686.ZIP
/
CCE_0686
/
SPEEDER_.U77
/
ANLEITUN.G
/
SPEEDER4.DOC
next >
Wrap
Text File
|
1990-04-08
|
21KB
|
389 lines
06601030305800
F0110030
9[...................................................]011
Ç Stefan Schreiber
Kesselweg 14
8650 Kulmbach
üSpeederæ+
ü(VerdopplungderSchreib-undLesegeschwindigkeitdesAtariST)
ÇMehralsdreiJahresindnunseitErscheinenderSpeeder-
Urversionvergangen,dieimmernochsehrweitverbreitetist.
ZweiinderZwischenzeiterschieneneUpdatessindleider
nichtganzsoweitinUmlaufgekommen,siehattenaberauchmit
denbeidenneuestenTOS-VersionennochSchwierigkeiten.
Ichhoffe,daßdieseüberfälligeundhoffentlichendgültige
VersionmeineundIhreErwartungenerfüllenwird!
EsexistierenderzeitvieroffizielleTOS-VersionenfürdenAtari
ST,nämlichTOS1.0(das"alte"TOSvom6.2.86),TOS1.2(das
"Blitter-TOS"),TOS1.4("Rainbow-TOS")undschließlichTOS
1.6(STE-TOS).Verkompliziertwirdallesnochdadurch,daß
einigeTOS-Versionen,abernichtalle,auchalsTOS.IMG-File
vorliegenunddamitz.B.vonFestplattegebootetwerdenkönnen.
DieseSpeeder-VersionsolltenunendlichmitjedemTOS
funktionieren,auchwennsichdiesesimRAMbefindensollte.
HiereinekurzeEntwicklungsgeschichtedesSpeeders(ok,das
interessiertzwarnurmich,aberdieseAnleitungsollhaltalles
enthalten,auchwasSiegarantiertnichtbrauchenkönnen!):
BekanntlichliefdiealteSpeeder-Version1.4nuraufTOS
V1.0,nichtjedochaufneuerenBetriebssystemsversionen.
EineZwischenversion(2.0),diesichallerdingsniemals
allzuweitverbreitethat,liefzwarmitBlitter-TOS,aufgrund
einesminimalen,aberdennochschwerzuentdeckendenProgrammier⑨
fehlerswurdeaberbeiTOS1.4und1.6keinBeschleunigungseffekt
erreicht.DieseVersionlandeteaberimmerhinmitleichten
ModifizierungenaufClausBrods"Kleisterscheibe".
UpdateNr.3.0behobdiesenFehlerzwar,funktionierteallerdings
abTOSV1.2nicht,wennesbeimBootenausdemAUTO-Ordner
herausgestartetwurde.Undwarumnicht?
WeilbeineuerenTOS-VersionendieSystemvariable$4f2(sysbase)
nochnichtinitialisiertist,wennProgrammeimAUTO-Orner
aufgerufenwerden,praktischalleanderenSystemvariablenaber
bereitsverwendetwerdendürfen.
BeiTOS1.0tratjedenfallsdieseInkonsequenznochünichtÇauf.
Is'jaauchlogisch,oder?!
Tja,unddamußichaucheinigeST-Anwenderkritisieren,
diemichimmerganzentrüstetanriefenundIhreMeinungzum
Ausdruckbrachten,wasfüreinSchrottderSpeederÉ+Çdochsei.
DieseLeuteerzähltenmir,daßderSpeederÉ+ÇünichtfunktionierteÇ,
undichhatteihnnatürlichaufüallenÇTOS-Versionengetestet,
ÇÇallerdingsnurperDoppelklickvomDesktopaus.Unddaliefeben
alles.
AufjedenFallhatmirniejemandgenausagenkönnen,üwasÇ
eigentlichnichtklappte,undmiteinbißchenMühehättees
möglichseinmüssen,festzustellen,daßbesagtesProblemnurmit
AUTO-Ordnerauftrat.Nagut,alsoüÇSchwammdrüber!
DieseSpeederÉ+Ç-VersiondarfüfreikopiertÇwerden,sollteaber
üniemalsohnedieseAnleitungweitergegebenwerden!
ÇWeichenSienachMöglichkeitnurinbegründetenAusnahmefällen
vondieserBitteab.Z.B.hätteichnichtsdagegen,wennSpeederÉ+
ÇalsSchnelladerbeiSpieledisketteneingesetztwürde.Insolchen
FällenwirdnatürlichkeinPlatzfürdieAnleitungvorhanden
sein.
SiesolltenfolgendeFilesaufdieserPD-DisketteüÇvorfinden:
1.Speeder4.prg:SpeederÉ+Ç-Programm
2.Speeder4.q:QuelltextdesProgramms
3.Speeder4.doc:wenndiesesFilenichtvorhandenist,können
SiediesenTextnichtlesen/genießen/indenDesktop-
Papierkorbwerfen.
4.Speeder4.s:dasgleicheimASCII-FormatüÇ(ohneSchriftartenüÇ)ü
Ç
üII.ÇüTheoretischeGrundlagenvonFastload-UtilitiesÇ
MaßgebendfürdieGeschwindigkeiteinesComputersistnicht
nurseineProzessorleistung,sondernvorallemauchdie
LeistungsfähigkeitseinerPeripheriewieDiskettenlaufwerke,
FestplatteundDrucker.BezüglichderDiskettenlaufwerkehatder
ATARISTbeimArbeitenmitlängerenFileseinedurchschnittliche
Lesegeschwindigkeitvon8KByte/sec.,bzw.ungefähr4KByte/sec.
beimSchreiben.
DieseWertekönnendurchdasAusschalteneinesVerifysverdoppelt
werden.NochdazuhatdieseMaßnahmepraktischkeinen
gravierendenNachteilzurFolge,jedenfallshatmichnochkein
SkeptikervomGegenteilüberzeugenkönnen.
DieserTextistnochimmereinederwenigendetaillierten
undükorrektenÇBeschreibungendafür,waspassiert,wenndasTrack-
VerifybeimSpurwechselausgeschaltetwird(dasPrinzipaller
Fastload-Utilities).
EineWarnungimvoraus:Eshandeltsichhierbeiumkeineleichte
Materie.Ichhabemichjedochbemüht,dieseAnleitungmöglichst
leichtverständlichzuverfassen.WennSieschonimvorausgenü⑨
gendVertrauenzumeinemProgrammhabensollten,brauchenSie
sichmitprogrammtechnischenDetailsnatürlichnichtzubelasten.
WasbewirktdasProgramm"Speeder4.prg"nunkonkretundist
beiderSachenichtdocheinHaken?Umevtl.ÄngstederSkeptiker
undSicherheitsfanatikerzuzerstreuen,möchteicheinenkurzen
AusflugindieTheoriedesFloppyDiscControllers(FDC)des
AtariSTunternehmen.
♪≈ÇÇDerFDCbietetunterschiedlicheVorkehrungen,dieDatensicherheit
zuerhöhen.EsexistierenhauptsächlichdreiArteneinesüVerifysÇ:
♪ə1.êLeseneinesSektors:ÇDerFDCarbeitetbereitshardwaremäßig
mitPrüfsummen.WenneinSektoraufdieDiskettegeschrieben
wird,fügtderFDCautomatischeine16-BitPrüfsummean.Diese
Prüfsummewirdauchals "CyclicRedudancyCheck"oderkurzCRC
bezeichnet.BeimLesenberechnetderFDCausdeneingelesenen
DatendieCRC-Prüfsummeerneutundvergleichtdiesemitder
aufderDiskettebereitsabgespeicherten.BeieinemLesefehler
trittzwischendiesenbeidenWertenmitanSicherheitgrenzen⑨
derWahrscheinlichkeiteineDiskrepanzauf.
2.êSchreibeneinesSektors:ÇHieristdasVerifizierennichtganz
soeinfach.DerFDCkannjedenfallsnichtunmittelbar
herausfinden,obdieDatenaufderDisketterichtigangekommen
sind.DieVerify-RoutinedesTOSverwendethiereinenkleinen
Trick:
AllegeschriebenenSektorenwerdennachdemSchreibenineinen
eigenen1024Byte-Puffereingelesen(512Byteswären
mindestenserforderlich).WennbeimSchreibeneinFehler
aufgetretenist,kanndiesüberdieCRC-Logikfestgestellt
werden,dalogischerweisenunaucheinCRC-Fehlerauftreten
muß.Esistsoimmerhinnichtnotwendig,daßallegeschrie⑨
benenDatenmitdenimSpeichervorhandenenBytefürByte
verglichenwerdenmüssen.
DurchdieseMethodehalbiertsichimallgemeinendieSchreib-
gegenüberderLesegeschwindigkeit,dajedergeschriebene
SektornocheinmalzumVerifizierengelesenwerdenmuß.Dieses
VerifykannüberdasBetriebssystemausgeschaltetwerden,
indemdieSystemvariable$444aufeinenWertungleich0
gesetztwird.DiesistaberausGründenderDatensicherheit
wirklichriskant.
3.êTrack-VerifynachPositionierungdesSchreib/Lesekopfes:Ç
NacheinerPositionierungdesSchreib/Lesekopfesdurcheinen
SEEK-,RESTOREoderSTEP-BefehldesFDCbestehtdieMöglich⑨
keit,zuüberprüfen,obderlogischeTrackmitdemphysikal.
TrackaufderDisketteübereinstimmt.Eskannnämlich
vorkommen,daßderSchrittmotordesDiskettenlaufwerksden
BefehlsimpulsenzurPositionierungnichtfolgenkannundsich
dannaufeinemfalschenTrackbefindet.ZumVerifizierenliest
derFDCdasID-FelddesünächstenÇSektors,indemSeite,Track,
SektornummerundGrößealsInformationenüberdenbetreffenden
Sektorabgelegtsind.
DieBIOS-Routine4("rwabs"),überdiefastalleDisketten⑨
zugriffelaufen,machtvondiesemVerifybeimPositionieren
Gebrauch.DieentsprechendeStelleliegtbeijederBetriebs⑨
systemversionnatürlichwoanders.BeiderTOS-Version1.0
liegtsiez.B.anderAddresse$FC1B8A:
$FC1B8A: moveq.l #$14,d6 ;SEEKmitVerify
$FC1B90: bsr $FC1BB6 ;anFDCschicken
Im"AtariSTINTERN"vonDataBeckerwirddieRoutine,inder
ÇÇdieseSequenzenthaltenist,als"go2track"bezeichnet,aller⑨
dingsistdieserNamenicht"offiziell".Siedientdazu,wie
bereitsderNamesagt,einenbestimmtenTrackanzusteuern.
SpeederÉ+ÇschaltetdiesesVerifyaus,indemderFDC-Befehl$14
durch$10(SEEKohneVerify)ersetztwird.Dieshatbei
längerenFileseineVerdopplungderSchreib-üundÇLesegeschwin⑨
digkeitzurFolge.DerGrundliegtinnutzloserWartezeitdes
FDC:
Nehmenwireinmalan,daß50KByteoder100Sektoren,die
hintereinanderliegen,gelesenwerdensollen.Nach9Sektoren
(bzw.10SektorenbeieinerFATDISK,11Sektorenbei
'hyperformatierten'Disketten)mußderSchreib/Lesekopfauf
dennächstenTrackpositioniertwerden.Beieingeschaltetem
VerifyholtderFDCdiephysik.Tracknummerausdemnächsten
ID-Feld,daszuSektor1desnächstenTracksgehört.Sektor1
istabergleichzeitigderjenigeSektor,deralsnächster
gelesenwerdenmuß.DadessenID-FeldsoebenamLesekopf
vorbeigerauschtist,mußeineganzeUmdrehungabgewartet
werden,biserdasnächsteMalgefundenwird.FürdasLesen
einesTrackswerdenalsostatteinerUmdrehungjeweilszwei
benötigt.DiemöglicheÜbertragungsratewirddadurchhalbiert!
WelcheNebenwirkungentretenbeiderAusschaltungdiesesVerifys
auf?Überhauptkeine!EinTrack-Verifyfindetnämlichauchbei
jedemSchreib/LesevorgangaufDiskettestatt.DerFDCprüftbei
einemREAD-SECTOR-Befehl(bzw.WRITE-SECTOR),obdievorhandene
TracknummerimID-FeldmitdergewünschtenNummerimTrack-
RegisterdesFDCübereinstimmt.EinFehlerwirdübereinStatus⑨
biterkannt("Recordnotfound")undauchvomBetriebssystem
registriert.WennwirklicheinmaleinfalscherTrackangesteuert
ist,suchtdasBetriebssystemdiebetreffendeSpurnocheinmal(
ein"RESEEK"-Vorgang).TechnischgelingtdiesübereinRESTORE(
PositionierungdesLesekopfesaufTrack0)undeinemanschlie⑨
ßendenSEEK-BefehlandenFDC.DamitwirddiegewünschteSpur
auchbeieinemPositionierungsfehlermitanSicherheitgrenzender
Wahrscheinlichkeitgefunden.
KeineGeschwindigkeitsvorteilebietenFastload-Utilitiesübrigens
bei"Schnelladedisketten",dieauffolgendeArtformatiertworden
sind:
Track0beginntmitSektor1(wieimmer).Beijedemfolgenden
TrackrutschtderlogischeSektor1umeinePositionnachhinten,
d.h.Track1beginntmitSektor9(bzw.Sektor10beieiner
Fatdisk!)understanschließendfolgtSektor1.
AufTrack2stehtSektor1schließlicherstan3.Position,usw.
DurchdieseMethodewirdauchbeieingeschaltetemTrack-Verify
üfastÇeineVerdopplungderSchreib-undLesegeschwindigkeit
erzielt,leiderbietenabernachwievordiewenigsten
FormatierprogrammeeineOptionan,nachderDiskettenmitdieser
Methodeformatiertwerdenkönnen.
ÇüIII.MöglicheProblememitFastload-Utilities
Ç
MitdemLaufwerkstypNEC-1037trateninEinzelfällenProbleme
beimüLesenÇvonDatenauf.Abundzuwerdenkorrektgeschriebene
Sektorenalsdefektdeklariert.BeiweiterenLeseversuchenwerden
siedennochrichtigeingelesen.
Ichvermute,daßessichhierbeiumeinreinümechanischesÇProblem
diesesansonstensehrgutenLaufwerkshandelt.Beiausgeschal⑨
tetemTrack-VerifywirdnacheinemSpurwechselderzulesende
SektorinderRegelvielschnellererreichtalsmitVerify(wo
meistensbiszumLesenderDateneinganzerDiskettenumlauf
gewartetwerdenmuß!).WennderSchreib/Lesekopfnachdem
Spurwechselnochetwasschwingt,werdendieDatenevtl.nicht
korrekteingelesen,obwohlsienatürlichrichtigaufgezeichnet
wordensind.SofernmeineTheoriestimmt,könntendurchdie
leichteundflacheBauweisedesNEC-1037LaufwerkssolchePro⑨
blemeunterUmständenauftreten.Allerdingsmußichzugeben,daß
dieseErklärungeinereineHypothesedarstellt,dienichtun⑨
bedingtzutrifft.
FallsbeiIhnendiesesProblemauftauchensollte,empfehleich,
eineSystemvariableimBetriebssystemzuverändern.Eshandelt
sichumdieVariablein$440(seekrate,üWordÇ-Format).Wenn
dieseVariableauf'0'stattauf'3'gesetztwird,erhöhtsich
dieWartezeit,diederFDCnacheinemStep-Impulseinlegt,von3
auf6ms.AufdieAddresse$440kannübrigensnurimSupervisor-
Modusdes68000erszugegriffenwerden.
Ichmöchtenocheinmalausdrücklichdaraufhinweisen,daßdieser
bishernurimZusammenhangmitLaufwerkendesTypsNEC1037
aufgetretene"Fehler"imGrundenichtsmitmangelnderDaten⑨
sicherheitdesSpeederÉ+ÇoderandererFastload-Programmezutun
hat.DieDatenwerdenzumindestimmerkorrektaufgezeichnet,im
schlimmstenFallekämemanansienacheinemneuenBootvorgang
ohneFastload-Programmheran,normalerweiseaberbereitsbei
einemweiterenLeseversuch.
NatürlichtrittdasebenerwähnteProblemnichtaufallenNEC-
1037Laufwerkenauf,undselbstaufbetroffenenLaufwerkennur
höchstsporadisch.
MitanderenLaufwerkstypenhatesbisherkeineSchwierig⑨
keitengegeben,auchnichtmit5.25"-Laufwerken.
EineweitereshäufigesProblemwirdFastload-Programmenvölligzu
unrechtzugeschrieben:
DiskettenkönnenzwarmitdemeigenenLaufwerkkorrektgelesen
werden,nichtjedochaufeinemanderen.DerartigeSchwierigkeiten
könnenünieÇdurchdenSpeederÉ+Çverursachtwordensein.
UrsachefürsolcheProblemesindvielmehrz.B.unterschiedliche
DrehzahlenderLaufwerke(300UpMistdieSolldrehzahl,die
tatsächlicheDrehzahleinesLaufwerkskannaberdurchausbiszu
2%vondiesemWertabweichen!),oderaucheinverstaubter
Schreib/Lesekopfbeieinemderbeiden"inkompatiblen"Laufwerke
etc.DerartigeFehlerhängennatürlichnichtmitdemAusschalten
einesVerifyszusammen,daphysikalischeIntoleranzenzwischen
Laufwerkennichtsdamitzutunhaben,obDatenmitoderohne
Track-Verifyaufgezeichnetwordensind.
Ç
Die Erfahrungen in Zusammenhang mit Fastload-Programmen zeigen,
daß beimweitausgrößtenTeil der ST-Anwender, die entsprechende
Utilitiesverwenden, niemals irgendwie geartete Probleme aufge-
treten sind.
UndschließlichverwendeichselbstseitJahrenTOS-Versionenim
EPROM,indenenichdasTrack-Verifyausgeschaltethabe.
NatürlichfühleichmichtrotzeinesVerifyswenigerinmeinem
Rechnerkeineswegsbedroht(eherschonvonderFileverwaltung
desGEMDOS!).
Auch wenn in ( seltenen ) Einzelfällen Probleme mit
Fastload-Utilities beim Lesen auftreten können, ist der
wichtigsten Forderung bezüglich der Datensicherheit immer
Rechnung getragen:
üFehlerhaftes Aufzeichnen oder Überschreiben von Daten aufgrund
ausgeschaltetem Track-Verify ist unmöglich.Ç
Sie sollten sich also nicht davon abhalten lassen, Ihren
Diskettenlaufwerken auf die Sprünge zu helfen!
üIII. Algorithmus von "Speeder4.prg"Ç
Nach diesen theoretischen Vorbemerkungen können wir endlich den
'SpeederÉ+Ç' unter die Lupe nehmen.
Fast alle Zugriffe auf die Diskettenlaufwerke laufen, wie weiter
oben schon gesagt, über die Funktion 4 des BIOS, in der nur ein
einziges Byte geändert werden muß. Im ROM ist es allerdings
unmöglich, dieseStellezumanipulieren ( was natürlich ärgerlich
ist ).
Zum Glück wird diese Routine über einen Vektor angesprungen (
Systemvariable $476 ), der auf eine eigene Routine umgebogen
werden kann. Von dieser Tatsache machen z.B.auch Ramdisks und
Festplatten-Treiber Gebrauch.
Das Prinzip jedes Fastload-Programms besteht darin, daß es als
residentes Programm installiert wird. Wenn es nicht bereits
selbst von der alten rwabs-Routine abgeleitet ist, wie mein alter
"Speeder", muß es diese aus dem Betriebssystem kopieren.
Leider ist die originale rwabs-Routine eine der längsten Routinen
im Betriebssystem, zu ihr gehören beispielsweise Unterprogramme
zur DMA-Kontrolle, Fehlerbehandlung etc. Zudem stehen diese
Subroutinen nicht ordentlich hintereinander, sondern sind recht
verstreut.
Beim Kopieren der originalen rwabs-Routine ins RAM bestehen
deutliche Unterschiede zwischen 'Fastload' und meinem SpeederÉ+Ç.
Fastload-Versionen kopieren ab Beginn des Betriebssystems 8 KByte
Daten aus dem ROM in einen programminternen Puffer, das reicht
bei allen bisherigen TOS-Versionen aus, um die rwabs-Routine
komplett ins RAM abzubilden. Anschließend werden von "Fastload"
noch einige Sprungaddressen reloziert, wobei je nach TOS-Version
auf eine eigene Tabelle zugegriffen wird.
ÇSpeederÉ+Ç verhält sich wesentlich intelligenter. Zunächst wird mit
Hilfevon Suchstrings nach dem im Speicher am weitesten vorne
stehenden Unterprogramm gesucht, das noch von der rwabs-Routine
aufgerufen wird. Bei allen bisherigen TOS-Versionenwar dies bis-
her entweder die BIOS-Mediach-Routine oder die XBIOS-Flopread-
Funktion.
SpeederÉ+Ç vergleichtdie Startaddressen beiderRoutinen und ko-
piert ab der niedrigeren Addresse 4 KByte aus dem Rom ins RAM,
damitwird imVergleichzu "Fastload" ca. 4 KByte weniger
Speicherbelegt.
Die Relozierroutine kommt ebenfalls ohne Tabellen aus. Es müssen
lediglich die Sprungaddressen einiger jsr-Aufrufe angepaßt
werden. Jsr-Befehle ( absolute Addressierung ) können leicht
aufgefunden werden, indem nach dem Wort $4EB9 gesucht wird.
Zwei Sprunaddressen, nämlich in den 'Critical Error Handler' und
in die Sektorkopierroutine 'fastcopy', zeigen weiterhin in den
ROM-Bereich. Durch diesen Trick, wirklich nur die Routinen zu
kopieren, die für die doppelte Schreib/Lesegeschwindigkeit
relevant sind, ist der SpeederÉ+Ç fast so kompakt wie möglich
geworden. Lediglich der Vorläufer 'Speeder.prg' V1.4 reserviert
noch weniger Speicher ( ca. 2.5 KByte ), läuft dafür aber nur mit
TOS 1.0.
Anschließend wird im Ram-Puffer noch nach der Routine 'go2track'
gesucht und der FDC-Befehl 'Seek mit Verify' ($14) in 'Seek ohne
Verify' ($10) umgeändert.
Zuletzt wird der Vektor $476 auf eine SpeederÉ+Ç-Routine umgebogen,
die beirwabs-Aufrufenerkennt,ob Laufwerk A oder B angesprochen
wird. Falls diesnicht der Fall ist, wird die Kontrolle an den
entsprechendenRamdisk-, Festplattentreiber etc. abgegeben.
Da SpeederÉ+Ç im Gegensatz zu 'Fastload' keine Reloziertabellen
verwendet, sondern ausschließlich mit Suchstrings arbeitet,
dürfte es sogar auf zukünftigen TOS-Versionenfunktionieren,wenn
fürdenSTdasTOSüberhauptnochweiterentwickeltwerdensollte.
Die Funktionsfähigkeit des SpeederÉ+Ç ist zwar ( bisher ) auf allen
TOS-Versionen des Atari ST gewährleistet.Wahrscheinlichwirder
jedochnichtaufdembereitslieferbaren'AtariTT'
funktionieren.Ichweißehrlichgesagtnochnichteinmal,obdas
TT-ToseinTrack-Verifyvorsiehtodernicht.
Eine Anpassung des SpeederÉ+Ç an den 'Atari TT'würde ich auch auf
keinenFall alsmeine Aufgabe betrachten.Aberschließlichgebe
ichdafürjaauchdenQuelltextmeinesProgrammsmitheraus,so
daßbeiBedarfjemandohne zugroßenAufwanddieseAnpassung
erledigenkönnte.É
Ç
Kulmbach, den 18.10.90
äStefanSchreiberÇ
P.S.:
Ç"SpeederÉ+Ç" ist ein äußerst nützliches Utility und steigert die
Leistungsfähigkeit Ihres Computersystems evtl. ganz erheblich.
Falls Sie dieses Programm häufig benutzen, würde ich es für fair
halten, wenn Sie mir als Anerkennung dafür einen Betrag
zuschicken, den Sie für angemessen halten.
In diesem Falle vielen Dank bereits im voraus!