APPLICATIONSPROGRAMMATION ★ BANKO enthüllt|Schneider Magazin) ★

Dump Bank 0 (Schneider Magazin)Applications Programmation
★ 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 ★ 

BANK0 des PCW und des CPC 6128 ist im allgemeinen für den Anwender versteckt. Doch mit diesem Programm lassen sich auch Bits und Bytes aus der Nähe betrachten, die bisher im Verborgenen lagen.

Der 128 KByte große Speicher des CPC 6128 ist auf zwei Bänke verteilt, da der Prozessor Z80 gleichzeitig nur 64 KByte adressieren kann. Normalerweise verwendet man unter CP/M 2.2 und AMSDOS nur eine Bank. Für den Anwender werden dann rund 40 KByte zur Verfügung gestellt, weil der Rest von Bildschirm-RAM, Firmware-Jumpblocks, Systemparametern usw. belegt ist. Über das mitgelieferte Programm BANKMAN ist es unter AMSDOS möglich, die parallel liegenden 64 KByte für Daten oder Bildschirme zu nutzen. CP/M Plus dagegen stellt den gesamten Speicher für den Anwender zur Verfügung. Doch ist das System jetzt so groß geworden, daß über 64 KByte für das Betriebssystem (BIOS, BDOS, Bildschirm, Firmware-Jumpblocks usw.) reserviert werden müssen. Der Rest, 61 KByte, steht dem Anwender zur Verfügung; dies ist die sogenannte TPA (Transient Program Area). Programme, die von CP/M aufgerufen werden, liegen in der TPA. Um das ganze Speichergebiet nutzen zu können, ist also zwischen mehreren Bänken umzuschalten. CP/M Plus auf dem Schneider ist deshalb ein "gebanktes” (banked) System.

BANK0 enthält höchst interessante Dinge: das Betriebssystem, den CP/M-Plus-Zeichensatz, das Bildschirm-RAM sowie den Amstrad-Firmware-Jumpblock (nur CPC 6128) und den Extended-BIOS-Jump-block (ab Hex 80 auf BANK0 - auch Joyce). Eine Übersicht finden Sie in Abb. 2. Normalerweise ist BANK0 sozusagen für den Anwender versteckt. Mit dem vorliegenden Programm lassen sich aber ihre Bits und Bytes näher anschauen. Mit der hier vorgestellten
BIOS-Funktion können Sie auch Routinen in BANK0 aufrufen (z.B. Firmware-Routinen des CPC 6128).

BIOS-Funktion 30: USERF

Die Standard-CP/M-Plus-BIOS-Jumpblock-Funktion 30: USERF ist für das System reserviert. Diese User-Funktion ist auf den Schneider-CP/M-Plus-Computern für Calls nach BANK0 eingerichtet. Die Adresse auf BANK0 (oder COMMON RAM), die aufgerufen werden soll, muß als Inline-Parameter gleich hinter dem Call stehen. Ein USERF-Call sieht also prinzipiell wie in Abb. 1 aus.

Abb. 1: Der prinzipielle Aufbau eines USERF-Programms  >>

Registerinhalte werden übertragen

Werte, die in den Registern stehen (nicht in den alternativen Registern), dürfen als Parameter für die USERF-Routine (oder den dort aufgerufenen Firm-ware-Call) übertragen werden. Falls die Subroutine einen Registerinhalt zurückgibt, findet auch dieser bei USERF Berücksichtigung, und er wird in den entsprechenden Registern returniert. Beachten Sie bitte, daß eventuelle Adressenwerte, die durch einen Firmenware-Call (z.B. TXT GET MATRIX und SCR NXT BYTE) returniert werden, zu Adressen in BANKO referieren. Das gleiche gilt für Firmware-Calls, die einen oder mehrere Adressenparameter benötigen (z.B.TXT SET MATRIX). Auch diese sollten auf BANK0 stehen, dürfen aber alternativ auch auf COMMON RAM untergebracht sein.

Das Dump-Programm

Listing 1 stellt ein Dump-Programm dar, das die Bytes auf BANKO als Hex-Werte und ASCII-Zeichen zeigt (entsprechend dem mitgelieferten Programm DUMP.COM, das Files anzeigt). Wenn Sie wollen, können Sie es natürlich erweitern und einen BANKO-Disassembler schreiben. Ich selbst verwende lieber eine andere Methode, um mir die umfangreiche Arbeit des Eintippens eines Disassemblers zu ersparen.

Ich habe ein ganz kurzes BIOSMOVE-Programm erzeugt. Dieses lade ich mit meinem Monitorprogramm (SID oder HISOFTMONA80). Wenn ich jetzt gewisse Gebiete der BANK0 disassemblieren möchte, verschiebe ich einfach mittels BIOSMOVE (Listing 2) das Speichergebiet nach COMMON RAM und von dort an seine Ladeadresse auf BANK1. Hier kann ich es mit dem Monitorprogramm bequem disassemblieren. Die meisten (alle?) Monitorprogramme arbeiten ja vom obersten Teil des COMMON RAM und kommen deshalb mit der Verschieberoutine nicht in Konflikt. Nur muß man darauf achten, daß der Verschiebeblock nicht zu lang ist, da sonst das Monitorprogramm überschrieben wird. Bei MONA8O darf der Verschiebeblock nicht mehr als ca. 4,5 KByte (&1900) umfassen, während er bei SID noch ein bißchen länger sein kann. Natürlich darf man auch nicht die ersten 40 Byte von BANK1 verändern, da sie vom System verwendet werden.

<< Abb. 2: Der CP/M-Plus-Spelcher Ist In 3 Banks organisiert. COMMON RAM ertaubt als gemeinsamer Bereich Verschiebungen von Memory-Berelchen zwischen den Banks und mittels USERF-Calls In den Firmware-Jumpblock und damit die Manipulation der Systemparameter auf Bank 0.

So funktioniert es

Das Listing ist übrigens kommentiert. Dennoch hier ein paar zusätzliche Bemerkungen: Die USERF-Sub-routine wird zuerst nach COMMON RAM (ab Hex C000) verschoben. Die Anfangs- und Schlußadresse wird dann von der DMA abgeholt. Um Platz zu sparen, ist die weitere Eingaberoutine sehr vereinfacht; sie überprüft nur, ob die Anfangs- und Schlußadresse in Hex-Ziffern eingegeben wurden. Wenn das nicht der Fall ist, erfolgt eine Fehlermeldung. Sind Startoder Schlußadresse nicht angegeben, werden die Default-Werte verwendet (0 bzw. Hex FFFF). Andere Error Checkings erfolgen nicht. Die Parametereingabe muß also immer gleich hinter dem Programmnamen stehen, wie es im Listing angezeigt ist.

In der Hauptroutine werden die Werte, die in den Speicherzellen auf BANK0 stehen, in Hex-Zahlen umgewandelt und ausgegeben. Gleichzeitig werden die Werte in einer Reihe abgespeichert. Wenn die 16 Hex-Werte auf dem Bildschirm angezeigt sind, werden sie wieder abgeholt und in druckbaren ASCII-Zeichen ausgegeben. Das Dump-Listing wird mit CONTROL S angehalten. CONTROL Q startet es wieder, und mit CONTROL C läßt sich das Programm unterbrechen.

Was finden Sie auf BANK0?

Die Memory Map des CPC 6128 finden Sie in Abb. 2. Wie Sie sehen, sind der größte Teil des Betriebssystems und der Firmware-Jumpblock auf BANKO versteckt. Mit USERF sind die meisten aber auch von CP/ M Plus aus zugänglich.

Auch für den PCW

Obwohl das Programm auf und für einen CPC 6128 geschrieben ist, läuft es auch auf dem PCW, dessen USERF auf derselben Adresse liegt. Prinzipiell ist auch die Memory Map dieses Computers wie die des CPC 6128 aufgebaut, obwohl der PCW keinen Firmware-Jumpblock auf BANK0, Block 3 hat.

Søren Dahl , Schneider Magazin

★ PUBLISHER: Schneider Magazin
★ YEARE: 1987 , 1988
★ CONFIG: ???
★ LANGUAGE:
★ TAG: /CODE-SOURCES/
★ LICENCE: LISTING
★ AUTHOR: Søren Dahl

★ AMSTRAD CPC ★ DOWNLOAD ★

Type-in/Listings:
» Dump  Bank  0    (BANK0)    (Schneider  Magazin)    LISTING    GERMANDATE: 2020-06-08
DL: 20 fois
TYPE: text
SIZE: 8Ko

» Dump  Bank  0    (BIOSMOVE)    (Schneider  Magazin)    LISTING    GERMANDATE: 2020-06-08
DL: 18 fois
TYPE: text
SIZE: 2Ko

Je participe au site:
» Newfile(s) upload/Envoye de fichier(s)
★ AMSTRAD CPC ★ A voir aussi sur CPCrulez , les sujets suivants pourront vous intéresser...

Lien(s):
» Applications » Disc Cataloguer (The Amstrad User)
» Applications » RSX Disk-Katalog (CPC Amstrad International)
» Applications » Catalogeur de Cassettes (Microstrad)
» Applications » Catalog Tricks
» Applications » Cat-disk (CPC Revue)
» Applications » Super Catalogue (CPC Revue)

QUE DIT LA LOI FRANÇAISE:

L'alinéa 8 de l'article L122-5 du Code de la propriété intellectuelle explique que « Lorsque l'œuvre a été divulguée, l'auteur ne peut interdire la reproduction d'une œuvre et sa représentation effectuées à des fins de conservation ou destinées à préserver les conditions de sa consultation à des fins de recherche ou détudes privées par des particuliers, dans les locaux de l'établissement et sur des terminaux dédiés par des bibliothèques accessibles au public, par des musées ou par des services d'archives, sous réserve que ceux-ci ne recherchent aucun avantage économique ou commercial ». Pas de problème donc pour nous!

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