APPLICATIONSDIVERS ★ 664 - 6128 - EMULATOR FÜR DEN CPC 464 (CPC AMSTRAD INTERNATIONAL) ★

Der CPC-664/6128-Emulator für den CPC 464664/6128-Emulator für den CPC 464
★ Ce texte vous est présenté dans sa version originale ★ 
 ★ This text is presented to you in its original version ★ 
 ★ Este texto se presenta en su versión original ★ 
 ★ Dieser Text wird in seiner Originalfassung präsentiert ★ 

Nicht nur für CPC 464-Besitzer ist das eine frohe Botschaft - auch 664/6128-Programmierer können jetzt hemmungslos ihr erweitertes Basic nutzen, ohne die Inkompatibilität zum "kleinen Bruder" fürchten zu müssen.

Das folgende Programm installiert auf dem CPC 464 weitgehend die zusätzlichen Fähigkeiten des Basic 1.1. Schreiben Sie zunächst ein kleines Ladeprogramm,

10 SYMBOL AFTER 256
20 MEMORY &A1FF
30 SYMBOL AFTER 240
40 LOAD "EMU.BIN"
50 CALL &A200
60 PRINT"BASIC 1.1 installiert"

und speichern Sie es auf Diskette/Kassette ab. Danach wird der Basiclader abgetippt und insbesondere bei Benutzung des Checksummers vor dem Start zur Sicherheit abgespeichert! Er erzeugt das Maschinenprogramm "EMU.BIN", das bei Kassettenbetrieb natürlich direkt hinter das Ladeprogramm geschrieben werden muß. Wie Sie sehen werden, ist das Programm erstaunlich kurz - es beansprucht noch nicht einmal einen Block auf Kassette und ist deshalb bei Bedarf sehr schnell geladen. Die neuen Befehle wurden nicht per RSX sondern als "echte" Kommandos und Funktionen eingebunden, wobei bis auf eine unvermeidliche Ausnahme auch die gleiche interne Codierung wie beim CPC 664/6128 verwendet wurde. Deshalb können auf diesen Rechnern entwickelte Programme ohne Probleme von Kassette/ Diskette auf den CPC 464 übernommen werden - bei Programmen im ASCII-Format funktioniert das auf jeden Fall; ansonsten kann in wenigen Fällen eine kleine Anpassung notwendig werden, die gleich noch zur Sprache kommt.

Hier nun die neuen bzw. veränderten Befehle mit ihrer Syntax:

CLEAR INPUT:

Dieses Kommando löscht den Tastaturpuffer und verhindert, daß während eines Programmablaufs eingegebene Zeichen ungewollt durch INPUT oder INKEYS übernommen werden.

Dieser Befehl löst auf dem CPC 464 einen Syntax-Error aus, wenn er in einem 664/6128-Programm vorkommt, welches nicht im ASCII-Format (SAVE "Name",A) aufgezeichnet wurde. Wie gewohnt wird dabei nach der Fehlermeldung die entsprechende Zeile auf dem Bildschirm editiert. Drücken Sie in diesem Fall einfach ENTER, um die Zeile unverändert wieder einzugeben, und starten Sie das Programm neu - der Emulator sorgt automatisch für eine Korrektur. Soll ein mit dem CPC 464 plus Emulator geschriebenes Programm, das diesen Befehl enthält, auch auf einem CPC 664/6128 laufen, so muß es auf jeden Fall im ASCII-Format aufgezeichnet werden. COPYCHR$(# Window):

Diese Funktion liest das Zeichen an der aktuellen Cursorposition im angegebenen Textfenster:
10 LOCATE 10,10:PRINT "X"
20 LOCATE 10,10:a$=COPYCHR$(#0)
30 PRINT a$

CURSOR Schalterl,Schaltet:

Damit kann der Cursor während eines Programmablaufs ein- oder ausgeschaltet werden. Die genaue Wirkung der beiden Schalter können Sie der folgenden Tabelle entnehmen:

  • CURSOR 0,0 aus/aus bei INPUT
  • CURSOR 0,1 aus/ein bei INPUT
  • CURSOR 1,0 aus/aus bei INPUT
  • CURSOR 1,1 ein/ein bei INPUT

DEC$ (numerischer Ausdruck,Formatstring):

Diese Funktion ist eigentlich auf dem CPC 464 schon vorhanden, wurde aber im Anleitungsbuch schamhaft verschwiegen, da aufgrund eines Fehlers im Interpreter zu Beginn immer zwei offene Klammern gesetzt werden müssen, um einen Syntax-Error zu vermeiden. Mit dem Emulator funktioniert es aber nun richtig: Der Formatstring wird wie bei PRINT USING angegeben, und der numerische Ausdruck damit in eine entsprechend formatierte Zeichenkette umgewandelt.

a$=DEC$(PI,"#.###"):PRINT aS

FILL Farbstift:

Ein schnelles Fill für den CPC 464 wurde bereits in CPC International vorgestellt, doch die 664/6128-Version hat ihre besonderen Tücken: Als Umrandung oder Begrenzung (Sperrfarbe) gelten nur Linien, die mit dem aktuellen GRAPHICS PEN oder der Füllfarbe gezeichnet wurden. Auf diese Weise können sogar mehrfarbige Flächen ausgemalt werden, aber man muß schon sehr aufpassen, ob die Begrenzung wirklich in der gewünschten Weise als Sperrfarbe akzeptiert wird. Der Füllvorgang beginnt immer an der aktuellen Position des Grafikcursors, er muß also vorher mit MOVE x,y in die Fläche gesetzt werden. FRAME:

Synchronisiert die Bildschirmausgabe mit dem Strahlrücklauf des Monitors und unterstützt die wirklichkeitsgetreue Bewegung von Zeichen. GRAPHICS PAPER Farbstift:

Bestimmt die Farbe des Grafik-Hintergrundes bei Textausgaben auf Grafikcursorposition (nach TAG) und bei Anwendung des MASK-Befehls.

GRAPHICS PEN Farbstift,Hintergrund:

Wählt die Schreibfarbe und den Hintergrundmodus für Grafik. Der zweite Parameter hat folgende Bedeutung:

  • 0 = normal überschreiben
  • 1 = transparent

Jeweils einer der beiden Parameter kann entfallen, wenn der Wert unverändert bleiben soll. Die Wirkung des bisher auf dem CPC 464 nicht vorhandenen Grafik-Transparent-modus demonstriert das folgende Beispiel:
10 MODE 1:TAG:GRAPHICS PAPER 2
20 GRAPHICS PEN 1,0
30 MOVE 100,100:PRINT "A";
40 GRAPHICS PEN 3,1
50 MOVE 108,108:PRINT "Z";

MASK Bitmaske:

Eine Bitmaske ist ein Wert von 0 - 255, der den Status von jeweils acht benachbarten Bildpunkten beim Zeichnen einer Linie bestimmt. Damit können beliebig unterbrochene bzw. gestrichelte Linien erzeugt werden. Die Zwischenräume werden mit der GRAPHICS PAPER-Farbe gefüllt oder bleiben unverändert, falls der Transpa-rentmodus für Grafik gewählt wurde.

10 MODE 1:MASK &X11110000
20 GRAPHICS PAPER 3
30 GRAPHICS PEN 1,0
40 DRAW 0,200
50 GRAPHICS PEN ,1
60 DRAW 200,200

ON BREAK CONT:

Dieses Kommando ist mit Vorsicht anzuwenden, da es den Abbruch eines Programms verhindert. Ein ON BREAK STOP innerhalb des Programms setzt den Befehl wieder zurück.

PEN #Window,Farbstift,Hintergrund:

Wie beim CPC 464, nur kann jetzt mit dem letzten Parameter der Hintergrundmodus für Textausgaben gewählt werden (0 = normal, 1 = transparent). Von den letzten beiden Werten kann wahlweise einer entfallen, also z. B. PEN#1„0

MERGE und CHAIN MERGE "Dateiname":

Diese Kommandos funktionieren jetzt auch bei Diskettenbetrieb einwandfrei. Die unerwünschte Fehlermeldung "EOF mer wird vom Emulator abgefangen. Parameterübergabe bei CALL und RSX: Bei CALL und RSX-Kommandos können Strings direkt ohne Umwege übergeben werden, also z. B. so:
|ERA,"TESTPROG.BAK"

Zusätzliche Grafik-Parameter:

Alle Grafik-Befehle werden auf das folgende Format erweitert:

KOMMANDO,x,y,Farbstift,Schreibmodus

Das gilt für die Befehle MOVE, MOVER, PLOT, PLOTR, DRAW, DRAWR. Der letzte Parameter gibt an, wie die Bildpunkte mit dem Hintergrund verknüpft werden sollen:

  • 0 - normal überschreiben
  • 1 - XOR-Modus
  • 2 - AND-Modus
  • 3 - OR-Modus

Die Verknüpfungsvorschrift wird auf die Farbstiftnummer der Schreibfarbe und des Hintergrundes angewandt.

Kleine Abstriche:

Wie bereits beim CLEAR INPUT-Kommando angedeutet, kann eine vollständige Kompatibilität zwischen den verschiedenen CPC-Rechnern nicht erreicht werden, da einige der Unterschiede unveränderlich in den ROM's verankert sind.

Für eine Realisierung der DERR-Funktion wurde bisher keine Möglichkeit gefunden. Sie wird zwar vom Emulator akzeptiert, gibt aber nur den Wert 0 zurück. Wenn ein Leser Rat weiß, soll er sich melden: Gebraucht wird eine Routine, die die Fehlernummer im Akku übergibt. Der CPC 664/6128 erlaubt bei dem MASK-Befehl noch einen zweiten Parameter, der bestimmt, ob beim Zeichnen von Linien der erste Punkt gesetzt werden soll oder nicht, was im XOR-Modus mitunter nützlich sein kann. Der Emulator akzeptiert zwar diesen zusätzlichen Wert, führt das Kommando aber nicht aus, da der programmtechnische Aufwand für eine Realisierung in keinem Verhältnis zur Bedeutung des Kommandos steht. Die zusätzlichen Betriebssystem-Vektoren (z.B. GRA FILL) des 664/6128 konnten leider nicht eingebaut werden, da in diesem Bereich die Arithmetik-Vektoren des CPC464 liegen. Eine Kompatibilität auf Maschinenebene ist hier also nicht gewährleistet. 664/6128- Programmierer, die auf die Hilfe des Emulators bei Kompatibilitätsproblemen hoffen und Assemblerroutinen in ihr Programm einbinden wollen, sollten noch die folgenden Tatsachen berücksichtigen:

  • Der Emulator belegt den Speicherbereich ab &A200
  • Folgende Indirections wurden über neue Routinen geleitet:

    GRA LINE &BDE2

    SCR WRITE &BDE8

  • Die Vektoren TXT SET PEN (&BB90), GRA SET PEN (&BBDE), GRA MOVE ABSOLUTE (&BBC0) und GRA MOVE RELATIVE (&BBC3) wurden verbogen, um die neue Parameterübergabe zu realisieren. Sie können trotzdem in gewohnter Weise benutzt werden, solange das obere ROM beim Aufruf ausgeschaltet ist.

Ebenfalls noch nicht geglückt ist die softwaremäßige Simulation der zusätzlichen 64 KByte des CPC 6128. Wir haben dieses Problem jedoch unserer Abteilung"Zeichen und Wunder" übergeben, so daß vielleicht in den nächsten Jahrzehnten mit einer Lösung zu rechnen ist...

M. Uphoff, CPCAI

★ PUBLISHER: CPC Amstrad International
★ YEAR: 1986
*CONFIG: 64K + AMSDOS
★ LANGUAGE:
★ LiCENCE: LISTING
★ COLLECTIONS: CPC AMSTRAD INTERNATIONAL 1990 , CPC AMSTRAD INTERNATIONAL-SONDERHEFT
★ AUTHOR: Matthias Uphoff

 

★ AMSTRAD CPC ★ DOWNLOAD ★

Type-in/Listing:
» 664-6128-Emulator  fur  den  CPC  464    GERMANDATE: 2012-12-22
DL: 332
TYPE: ZIP
SiZE: 6Ko
NOTE: 40 Cyls
.HFE: Χ

★ AMSTRAD CPC ★ A voir aussi sur CPCrulez , les sujets suivants pourront vous intéresser...

Lien(s):
» Applications » Ewen-Term
» Applications » CP/M Plus Patch mit dk'tronics RAM (Schneider Magazin)
» Applications » Proportionale Vector Schrift (CPC Amstrad International)
» Applications » Tex (CPC Infos)
» Applications » Teldir (Amstrad Computer User)
» Applications » Contabilidad General (INDESCOMP)
Je participe au site:
» Vous avez des infos personnel, des fichiers que nous ne possédons pas concernent ce programme ?
» Vous avez remarqué une erreur dans ce texte ?
» Aidez-nous à améliorer cette page : en nous contactant via le forum ou par email.

CPCrulez[Content Management System] v8.7-desktop/c
Page créée en 538 millisecondes et consultée 2484 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.