CODINGLISTINGS ★ PATCH FUER DEC$-BEFEHL BEIM 464 DEC$ (( ) STATT DEC$() ★

Patch fuer DEC$-Befehl beim 464 DEC$ (( ) statt DEC$()Coding Listings
 ★ Ce texte vous est présenté dans sa version originale ★ 
 ★ This text is presented to you in its original version ★ 
 ★ Este texto se le presenta en su versión original ★ 
 ★ Dieser Text wird in seiner ursprünglichen Fassung Ihnen präsentiert ★ 

Kein Ärger mehr mit DEC$

Die Doppelklammer wird überflüssig: Der Fehler im DEC$-Befehl des Locomotive-Basic läßt sich mit einem Patch schnell beheben.

Daß im Basic des CPC 464 ein Befehl schlummert, der im Handbuch keine Erwähnung findet, ist vielen bereits bekannt. Um ihn einzusetzen, ist jedoch eine unlogische Schreibweise nötig. So ist beim Aufruf eine zweite Klammer zu öffnen »PRINT DEC$((&A000,' # #####*>. obwohl nur eine einzige geschlossen wird. Das wirft natürlich Kompaübilitäts-probleme auf. da der Aufruf bei den Schwestermodellen CPC 664 und 6128 nach den normalen Regeln »PRINT DEC$(&A000,"# #####")« erfolgt. Wenn Sie versuchen, ein Programm mit dieser Befehlsfolge auf dem CPC 464 zum Laufen zu bringen, quittiert Ihr Computer das mit einem »SYNTAX ERROR«. Nun kann man natürlich den Weg gehen, im Listing sämüiche DEC$-Befehle auf die »falsche« Schreibweise zu ändern. Eleganter — und kompatibler — geht es jedoch mit einem kleinen Patch der Fehlerbehandlungs-Routine des Interpreters: Man lädt das HL-Registerpaar mit der Rücksprungadresse auf dem Stack. Der späteren korrekten Rückkehr ins Basic dient die Sicherung des Registerinhalts (PUSH HL). Die Adresse vergleicht man nun mit den Adressen der Fehlerroutinen, die die falsche Syntax verlangen. Bei Übereinstimmung löscht der Patch die erste Adresse und verzweigt zur Interpreterroutine. die Leerzeichen in Basic-Zeilen überliest. Dadurch ignoriert der Interpreter die »falsche-weilrichtige« Syntax und arbeitet nur den Rest der DEC$-Funktion ab.

Zusätzlich versteht Ihr Computer auch weiterhin die falsche Schreibweise so daß Sie alte Programme nicht zu ändern brauchen. Da der Befehl nirgends beschrieben ist, liefern wir Ihnen hier die nötigen Informationen:

Der generelle Aufruf lautet »DEC$(ausdruck , " # # # # #")«. »ausdruck« darf eine Zahl, eine Variable oder ein arithmetischer Ausdruck sein. Für den übrigen Teil (»"###.##"«) gelten dieselben Regeln wie bei PRINT USING. Das Resultat läßt sich direkt verwenden (»PRINT DEC$(...» oder einer Stringvariablen zuweisen (»a$=DEC$(...)«)

Wenn Sie das Listing eingegeben haben, speichern Sie es bitte zunächst, denn nach dem Lauf löscht es sich selbsttätig. Der Patch bleibt bis zum nächsten Reset erhalten. Da »DEC-Patch« den Maschinencode selbständig unter die Speicherobergrenze (HIMEM) legt, arbeitet der Patch mit jeder Hardware-Konfiguration.

10 '**********************************************************
20 '
30 '  Patch fuer DEC$-Befehl beim 464 DEC$ (( ) statt DEC$()
40 '
50 '            (c) 1986  R. Hairgrove
60 '                      Hauptstr. 315
70 '              CH-5727 Oberkulm/Schweiz
80 '
90 '**********************************************************
100 DATA DD,21,00,00,DD,39,E5,DD,6E
110 DATA 00,DD,66,01,01,97,CA,CD,BE
120 DATA FF,E1,C0,E5,DD,6E,02,DD,66
130 DATA 03,01,EE,F8,CD,BE,FF,E1,C0
140 DATA F1,C3,40,DD,XXX
150 MEMORY HIMEM-40
160 start=HIMEM+1:a=start
170 READ b$:IF b$<>"XXX" THEN POKE a,VAL("&"+b$):a=a+1:GOTO 170
180 POKE &AC04,&C3:POKE &AC05,VAL("&"+RIGHT$(HEX$(start,4),2)):POKE &AC06,VAL("&"+LEFT$(HEX$(start,4),2))
190 NEW

(R.Hairgrove/ja), HC

★ PUBLISHER: Happy Computer
★ YEAR: 1986
★ CONFIG: 64K + AMSDOS
★ AUTHOR: R.Hairgrove

CPCrulez[Content Management System] v8.75-desktop/c
Page créée en 897 millisecondes et consultée 87 fois

L'Amstrad CPC est une machine 8 bits à base d'un Z80 à 4MHz. Le premier de la gamme fut le CPC 464 en 1984, équipé d'un lecteur de cassettes intégré il se plaçait en concurrent  du Commodore C64 beaucoup plus compliqué à utiliser et plus cher. Ce fut un réel succès et sorti cette même années le CPC 664 équipé d'un lecteur de disquettes trois pouces intégré. Sa vie fut de courte durée puisqu'en 1985 il fut remplacé par le CPC 6128 qui était plus compact, plus soigné et surtout qui avait 128Ko de RAM au lieu de 64Ko.