20.07.2013 Aufrufe

Das Magazin für Funk Elektronik · Computer

Das Magazin für Funk Elektronik · Computer

Das Magazin für Funk Elektronik · Computer

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

Listing 3: Test-Sum.pas bildet byte- und wortweise die Prüfsumme<br />

PROGRAM TEST_SUM;<br />

VAR F:FILE OF WORD;<br />

FILENAME:STRING;<br />

W,SW:WORD; B,SB:BYTE;<br />

BEGIN<br />

WRITELN (‘Prüfsummenbildungsprogramm V1.0.’);<br />

FILENAME:=PARAMSTR (1);<br />

ASSIGN (F,FILENAME);<br />

RESET (F);<br />

{$I-}<br />

IF IORESULT0 THEN<br />

BEGIN<br />

WRITELN (‘Aufruf: TEST-SUM Filename.’);<br />

HALT;<br />

END;<br />

SB:=0; SW:=0;<br />

WHILE NOT EOF(F) DO<br />

BEGIN<br />

READ (F,W);<br />

SW:=(SW+W) AND $FFFF;<br />

SB:=(SB+LO(W)+HI(W)) AND $FF;<br />

END;<br />

CLOSE (F);<br />

WRITELN (‘Byteweise kumulative Addition: ‘,SB);<br />

WRITELN (‘Wortweise kumulative Addition: ‘,SW);<br />

END<br />

■ Korrektur der Prüfsumme<br />

Bevor das DOS gebootet wird, führt das<br />

ROM-BIOS einen Diagnosetest durch. Dabei<br />

wird unter anderem auch die Integrität<br />

des ROM-BIOS durch Prüfsummenbildung<br />

getestet. Meist werden dazu alle Bytes des<br />

ROM addiert (mit AND FFH), und diese<br />

Summe muß Null ergeben. Es ist also noch<br />

ein Byte derart zu ergänzen, daß diese Bedingung<br />

erfüllt ist. Es gibt jedoch auch abweichende<br />

Varianten, die die Summe wortweise<br />

bilden oder nur die oberen 32 KByte<br />

berücksichtigen. Listing 2 zeigt eine solche<br />

Prüfsummenroutine. Beim Auftreten eines<br />

Prüfsummenfehlers werden im allgemeinen<br />

neun Pieptöne zum PC-Speaker ausgegeben.<br />

Schlimmstenfalls muß man mit Debug<br />

den Programmablauf ab FFFFH:0000H verfolgen<br />

und ggf. die Prüfsummenbildung<br />

beim Start unterbinden. Mit dem in Listing 3<br />

gezeigten Programm können die zwei häufigsten<br />

Varianten zunächst am Original-<br />

BIOS leicht überprüft werden.<br />

■ EPROMs brennen<br />

Um den neuen ROM-Inhalt in EPROMs<br />

zu brennen, muß der zusammenhängende<br />

<strong>Elektronik</strong>-Rechner <strong>für</strong> Windows<br />

<strong>Das</strong> Tool aus der Programmierhand von<br />

Karsten Böhme aus Dresden kann in fünf<br />

verschiedenen Modi arbeiten: in der normalen<br />

Dezimal-, Phys-, Integer-, Bin- und<br />

Hex-<strong>Funk</strong>tion. In den ersten beiden Modi<br />

sind sämtliche <strong>Funk</strong>tionen, alle Speicher<br />

sowie die Klammerrechnung anwendbar.<br />

Bei den Integer-, Binär- und Hexadezimal-<br />

<strong>Funk</strong>tionen kann nur in den vier Grundrechenarten<br />

gerechnet werden. Der nutzbare<br />

Zahlenbereich erstreckt sich dabei von<br />

0 bis 65535.<br />

In der normalen Dezimal-Betriebsart sind<br />

alle <strong>Funk</strong>tionen erreichbar. Eine Besonderheit<br />

besteht darin, daß nach der Eingabe<br />

eines Wertes dieser einfach mit z. B.<br />

1000 multipliziert werden kann. Dies ge-<br />

schieht, in dem man den entsprechenden<br />

Buchstaben auf der PC-Tastatur drückt<br />

(<strong>für</strong> den Faktor 1000 wäre das das „k“).<br />

Dieses Prinzip funktioniert mit allen gängigen<br />

Werten, wie Piko (p), Nano (n), Mikro<br />

(µ = u), Milli (m), Giga (G) usw. Will man<br />

beispielsweise einen Kondensatorwert<br />

von 12 pF eingeben, ist die Zahl 12 zu<br />

tippen und anschließend „p“ zu drücken.<br />

Auf der Anzeige erscheint automatisch<br />

.000000000012, so daß Fehler mit Kommastellen<br />

praktisch ausgeschlossen sind.<br />

Im Modus „Phys“ geschieht diese Umrechnung<br />

intern. Auf der Anzeige steht dann<br />

lediglich 12p. Zwischen diesen Modi kann<br />

man während der Berechnung beliebig<br />

hin- und herschalten.<br />

Listing 4: PROGRAM SPLIT<br />

USES CRT;<br />

VAR F,F0,F1:FILE OF BYTE; B:BOOLEAN; A:BYTE;<br />

FILENAME,NAME:STRING; L:LONGINT;<br />

PROCEDURE HELP;<br />

BEGIN<br />

WRITELN (‘Aufruf: SPLIT Dateiname’);<br />

WRITELN (‘Separiert die geraden und ungeraden Adressen.’);<br />

WRITELN (‘Gerade Adr.: Dateiname.0, ung. Adr.: Dateiname.1’);<br />

HALT (1);<br />

END;<br />

BEGIN<br />

WRITELN (‘SPLIT V1.0 (w) 1994 by K. Röbenack & D. Rußwurm’);<br />

IF PARAMCOUNT1 THEN HELP;<br />

FILENAME:=PARAMSTR(1);<br />

A:=POS (‘.’,FILENAME);<br />

IF A0 THEN NAME:=COPY (FILENAME,1,A-1)<br />

ELSE NAME:=FILENAME;<br />

{$I-} ASSIGN (F,FILENAME); RESET (f);<br />

{$I+} IF IORESULT0 THEN HELP;<br />

ASSIGN (F0,NAME+’.0’); REWRITE (f0);<br />

ASSIGN (F1,NAME+’.1’); REWRITE (f1);<br />

B:=TRUE; L:=0; WRITE (‘Bytes: ‘);<br />

WHILE NOT EOF(F) DO<br />

BEGIN<br />

READ (F,A);<br />

IF B THEN WRITE (F0,A)<br />

ELSE WRITE (F1,A);<br />

B:=NOT B; INC(L);<br />

GOTOXY (8,WHEREY); WRITE (L);<br />

END;<br />

WRITELN;<br />

END<br />

PC<br />

Programmkode in gerade und ungerade<br />

Adressen aufgeteilt werden. Viele Programmiergeräte<br />

unterstützen einen solchen<br />

Modus bereits. Sollte dies nicht der<br />

Fall sein, kann man mit dem Programm<br />

SPLIT (Listing 4) aus einer Datei die<br />

geraden und die ungeraden Adressen separieren.<br />

Literatur<br />

[1] Messmer, H.-P.: PC-Hardwarebuch, Addison-<br />

Wesley, Bonn, München, Paris, 1992<br />

[2] Heyer, J.: Welche Neuerungen bringt Enhanced<br />

IDE?, PC Professional 4/94, S. 118<br />

Darüber hinaus sind außer dem normalen<br />

Speicher M sechs zusätzliche vorhanden.<br />

Logische <strong>Funk</strong>tionen wie XOR, AND usw.<br />

sind ebenfalls durchführbar. Eine integrierte<br />

Hilfefunktion rundet das sinnvolle Tool ab.<br />

<strong>Das</strong> Programm ist <strong>für</strong> 10 DM (Verrechnungsscheck<br />

o. ä.) bei K. Böhme, Gambrinusstraße<br />

16, 01159 Dresden, erhältlich.<br />

FA 3/95 • 261

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!