APPLICATIONSPROGRAMMATION ★ Disc Basic v3.0 ★

RSX Disc Basic (CPC Amstrad International)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 ★ 

Das Amsdos der Floppy-station DDI-1 bietet über die bekannten Floppybefehle ziemlich wenig Möglichkeiten, eine vernünftige Diskettenprogrammierung vorzunehmen. Assemblerkenntnisse und eine gute Orientierung im Floppy-ROM. sind Voraussetzung dafür, möglichst effizient und sicher zu arbeiten.

Den Anwendern, denen M-Code und die Mysterien des siebten ROM's des CPC jedoch ein Buch mit sieben Siegeln sind, bleiben die, im Grunde genommen, fantastischen Möglichkeiten dieser, in der Anfangszeit als schneller Kassettenrekorder verschrieenen, Diskettenstation verschlossen.

Um Anfängern und Profis den Umgang mit den Routinen des Controllers zu ermöglichen bzw. zu erleichtern, veröffentlichen wir an dieser Stelle das Disc-Basic V3.0, welches ein ausgewogenes Maß an Befehlen bereithält. Insgesamt 20 neue Befehle für Hobby und professionelle Anwendung stehen nach Eingabe des ca. 1KB großen MC-Programmes zur Verfügung. Diese Befehle lassen sich in Gruppen unterteilen. Da sind zunächst einmal die Floppy-spezifischen Befehle wie:

READ, DRIVE, TRACK, SEKTOR
WRITE, DRIVE, TRACK, SEKTOR
SETBUF, ADRESSE EXAMINE, DEVICE FORMATEX, DRIVE, TRACK, OFFSET

Die nächste Gruppe von Befehlen stellt Instruktionen und Routinen bereit, die in Programmen recht nützlich sein können und bereits vorhandene Floppyoperationen verbessern.

FORMAT, FORMATOFFSET
FAST
SLOW
CLEAN
DELCAT
PC AT

Außerdem gibt es noch Hilfsroutinen, die zwar eigentlich nichts mit Floppyoperationen zu tun haben, jedoch die Programmentwicklung mit dem Disc-Basic V3.0 erleichtern.

BHELP
INIT
WAIT

Und als zusätzlichen Bonus für MC-kundige Programmierer einige Miniaturbefehle, die das Laden eines Assemblers oder Monitors bei Kurzroutinen ersparen sollen.

AKKU, BYTE
HL, BYTE, BYTE
BC, BYTE, BYTE
DE, BYTE, BYTE
SYS, ADRESSE
HDUMP, START, ENDE, DEVICE

Alle diese Befehle sind sogenannte RSXen (Resistent System Extensions) und müssen mit einem vorangestellten Strich, den Sic über die Tastenkombination [SHIFT] [@]


erreichen, eingegeben werden. Will man beispielsweise den Akku mit dem Wert 7 laden, so ist die korrekte Syntax für den Befehl |AKKU,7

Vergessen Sie den RSX-Strich, so wird die System-eigene Fehlermeldung SYNTAX ERROR ausgegeben, schreiben Sie den RSX-Befehl falsch, so erscheint UN-KNOWN COMMAND und für das Weglassen eines unbedingt benötigten Parameters hat das Disc-Basic die eigene Fehlermeldune !!! PARAMETERFEHLER!!! Der Basiclader schreibt das Listing in den Speicherbereich &8000 und sichert ihn danach auf Diskette. Mit folgendem kleinen Loa-der, kann das Basic danach direkt in den Speicher geladen, die Memory-Grenze gesetzt und die Initialisierungsroutine aufgerufen werden.

10 MEMORY &7FFF
20 LOAD "DB.BIN",&8000
30 CALL &8000
40 |BHELP

Im nachfolgenden werden die einzelnen Befehle genau erklärt, die Referenz zur Speicherbelegung unter Disc-Basic V3.0 sowie eine Routine, die dem Anwender hilft, auf einer mit |FORMATEX formatierten Diskette etwas wiederzufinden.

Befehlsbeschreibung:

1. READ
SYNTAX :|READ,DRIVE, TRACK, SEKTOR

FUNKTION:

Der Befehl dient zum Lesen eines Sektors auf Spur 0 bis 42 mit frei wählbarem Offset.
Bei einer nicht formatierten Spur oder einem falschen Offset erfolgt die Disc-eigene Fehlerabfangroutine. Diegelesenen Daten werden in den Disc-Basic-Sektor Buffer geschrieben und haben eine Länge von 512 Bytes. Ob die Spur vorhanden ist und mit welchem OfTset sie gekennzeichnet ist, können Sie über das Hilfsprogramm SEKTOR MAP (Listing 2) ermitteln. Beispiel:
Zum Lesen des Sektors &41 auf Spur 2 des DrivesOgeben Sie ein:

|READ,0,2,&42

2. WRITE
SYNTAX :lWRITE,DRIVE, TRACK,SEKTOR

FUNKTION:

Der Befehl dient zum Schreiben des Sektor-Buffers aufei-nen Sektor in Spur 0 bis 42 mit frei wählbarem Offset. Bei einer nicht formatierten Spur oder einem falschen Offset erfolgt die Disc-eigene Fehlerabfangroutine. Die zu schreibenden Daten haben eine Länge von 512 Bytes. Ob eine Spur vorhanden ist und mit welchem Offset sie gekenn-zeichnet ist, können Sie über das Hilfsprogramm SEKTOR MAP (Listing 3) ermitteln. Beispiel:

Zum Schreiben des Buffers auf Sektor &41 der Spur 2 im
Laufwerk 0. geben Sic ein: |WRITF.,0,2,&41

3. SETBUF SYNTAX :|SETBUF, ADRESSE

FUNKTION:

Festlegen der Startadresse des 512 Bytes großen SEKTOR BUFFERS.
Beim Start des Disc-Basic steht dieser Buffer ab Adresse &A000.
In diesem Buffer werden die Lesedaten bei IREAD und IWRITE abgelegt bzw. entnommen.

Beispiel:

Sie wollen eine Routine, die ab Adresse &5000 steht, auf Sektor &41, Spur 2, Laufwerk 0 schreiben, so geben Sic ein:

|SETBUF,&5000

1 WRITE,0,2,&41

4. EXAMINE SYNTAX : |EXAMINE, DEVICE
FUNKTION:

Ausgabe des momentanen SEKTOR BUFFER's auf die vorgewählte Device. Das Ausgabegerät kann entweder Monitor [0] oder Drucker [1] sein. Je nach angewähltem Mode, wird mit unterschiedlicher Spaltenbreite ausgegeben. Die Adresse der Bufferzeile wird mit ausgegeben. Neben den Hexwerten der Adressen, werden am rechten Bildschirmrand auch noch die entsprechenden ASCII-Zeichen ausgegeben. Beispiel:

Der Directorysektor einer, im Data-Format beschriebenen Diskette, soll auf Drucker mit 16 Zeichen Breite ausgedruckt werden. Sie geben ein:
MODE 2
|READ,0,0,&C1
|EXAMINE,1

5. FORMATEX SYNTAX : lFORMATEX, DRIVE,TRACK,OFFSET
FUNKTION:

Formatieren eines einzelnen Tracks mit beliebigem Offset. Mit diesem Befehl sollte man vorsichtig umgehen - überformatierte Daten sind unwie-derruflich verloren. Allerdings ist diese Routine auch sehr nützlich beim Retten von Disketten, auf denen eine Spur durch Magnetismus oder ähnliches verlorengegangen ist. Die Tracks (Spuren) können im Bereich 0 - 42 liegen. Auch zum Schützen von Disketten ist dieser Befehl sehr nützlich. Eine nicht formatierte Spur, odereine mit falschem Offset läßt sich nicht mehr so ohne weiteres kopieren. Der Offset wird vom Anwender bestimmt Standard-Offsets sind &41 [Systemformat-CP/M], &C1 ¡Data Onlyj und &01 [IBM Format). Die Lage der Sektoren auf der Spur wird vom Programm bestimmt. Hier sind keine Manipulationen möglich. Die Ablage erfolgt nach Standard und sieht am Beispiel IBM Format folgendermaßen aus: &01 &06 &03 &07 &04 &08 &05 &09 Beispiel:

Zum Formatieren einer Diskette im IBM Format bis zur Spur 42 geben Sie ein:

10 FOR TRACK = 0 TO 42
20 PRINT TRACK
30 |FORMATEX,0,TRACK, &01
40 NEXT TRACK
RUN [ENTER]


6. FORMAT
SYNTAX :|FORMAT,FORMATOFFSET
FUNKTION:
Der Befehl Format stellt eine von Basic aus aufrufbare Routine zur Verfügung, die eine Diskette, je nach gewähltem Offset, komplett formatiert und somit das Booten von CP/M abdingbar macht. Das Formatoffset kann im Data Only[l] oder Vendor Format [O] erfolgen. !! ACHTUNG !! Diese Routine hat im Gegensatz zu FORMAT.COM ihrer CP/M-Masterdiskette keine Sicherheitsabfrage und legt sofort nach Hingabe los. Beispiel:
Eine Diskette soll im Vendor Format formatiert werden. Sie geben ein: |FORM AT,0

7. FAST
SYNTAX : |FAST
FUNKTION:
Dieser Befehl spezifiziert die Timingtabelle der Floppy neu und ermöglicht einen bis zu 20 % schnelleren Zugriff auf alle Floppyoperationen.

8. SLOW
SYNTAX : |SLOW
FUNKTION:
Wiederherstellen der alten Timingtabelle nach |FAST.

9. CLEAN
SYNTAX : |CLEAN
FUNKTION:
Der Befehl dient dazu, auf einer überfüllten Diskette Platz zu schaffen, indem alle BAK-Dateien gelöscht werden.

10. DELCAT
SYNTAX : lDELCAT
FUNKTION:
Der Befehl setzt die Usernummer des Drives auf &E5 und führt einen Catalog aus. Auf der USER befinden sich alle gelöschten Files. Mit POKE & A 701 E5: LOAD "DATEINAME":POKE &A701,0:SAVE "DATEINAME" [ENTER] kann ein irrtümlich gelöschtes File wieder in das normale Directory gebracht werden.

11. PCAT
SYNTAX : |PCAT
FUNKTION:
Der Befehl verbiegt die Bildschirmausgaberoutine auf den Drucker, führt ein CAT aus und stellt den Screen Vektor danach wieder zurück. Dadurch erhält man einen Ausdruck des über |USER angewählten Directorys auf Drucker. Beim NLQ401 muß der DIP-Schalter für AUTO LINE FEED auf ON stehen, da sonst kein Zeilenvorschub ausgeführt wird. Beispiel:

Das Directory der Usernummer 3 soll auf Drucker ausgegeben werden. Sie geben ein:
|USER,3
|PCAT
|USER,0

12. BHELP
SYNTAX : |BHELP
FUNKTION:

Dieser Befehl ist eine reine Hilfsroutine für das Disc-Basic V3.0 und gibt eine Liste sämtlicher Befehle und Parameterübergaben auf dem Bildschirm aus. Dies funktioniert in MODE 1 und MODE 2. In MODE 0 sollte dieser Befehl nicht angewendet werden, weil alles ein wenig unübersichtlich aussieht.

13. INIT
SYNTAX : |INIT
FUNKTION:
Der Befehl UNIT bewirkt eine komplette Initialisierung der Text-VDU des Screen- und Keyboard-Managers. Eine Anwendung findet sich darin, daß bei veränderten Farben und Zeichensatz wieder der Normalzustand des Rechners hergestellt werden kann. Empfehlenswert ist es. diesen Befehl mit

KEY 128,"|INIT"+CHR$(13)

auf die 0 des Zchnerblocks zu legen.

14. WAIT
SYNTAX : |WAIT
FUNKTION:
Der Befehl |WAIT unterbricht den Programmablauf solange, bis irgendeine Taste gedrückt wird.

15. AKKU
SYNTAX : |AKKU,BYTE
FUNKTION:
Das Register A wird mit dem Wert (BYTE) geladen und in einem temporären Speicher abgelegt. Siehe hierzu auch den Befehl |SYS.

16. HL
SYNTAX :|HL,BYTE1, BYTE 2
FUNKTION:
Das Register H wird mit dem Wert (BYTE1) geladen, das Register L mit dem Wert (BYTE2). Beide Werte werden in einem TEMP abgelegt. Siehe hierzu auch den Befehl ISYS.

17. BC
SYNTAX :|BC,BYTE1,BYTE2
FUNKTION:
Das Register B wird mit dem Wert (BYTE1) geladen, das Register C mit dem Wert (BYTE2). Beide Werte werden in einem TEMP abgelegt. Siehe hierzu auch den Befehl ISYS.

18. DE
SYNTAX : |DE,BYTE1, BYTE 2
FUNKTION:
Das Register D wird mit dem Wert (BYTE1) geladen, das Register E mit dem Wert (BYTE2). Beide Werte werden in einem TEMP abgelegt. Siehe hierzu auch den Befehl |SYS.

19. SYS
SYNTAX :|SYS, ADRESSE
FUNKTION:
Alle Register werden mit den. über die Befehle AKKU, HUBC, DE gefüllten TEMPS geladen und danach die Adressen angesprungen. Dadurch ist es möglich, ohne Einladen eines Assemblers aufeinfache Weise Werte für Firmwarcroutinen zu übergeben.

20. HDUMP
SYNTAX : |HDUMP,START,ENDE,DEVICE
FUNKTION:
Der Befehl HDUMP arbeitet ähnlich wie der Befehl EXAMINE. Hier lassen sich jedoch Start- und Endadresse festlegen und so ein Hex-ASClI-Dump eines Speicherbereiches ausgeben. Die Parameter für Device werden genau wie bei EXAMINE übergeben. Auch für di< Bildschirmmodi gilt hier da; gleiche. Eine Unterbrechung des Ausdrucks ist nicht mö glich.

Das Programm liegt al Adresse &8000 und sollte voi dort auch nicht verschöbet werden, da es sich seinen in ternen Directorybuffer al Adresse &9000 bis &A000 an legt. Ab &A000 liegt danr noch ein 512 Bytes große Sektor 10 Buffer, der jedoch von Basic aus über SETBUr an eine beliebige Stelle ge legt werden kann. Wie bei al len verschobenen Buffern muß jedoch darauf geachte werden, daß er das eigentliche Disc-Basic nicht überschreibt.

Durch einen einfachen CALL nach &85EB kann beispielsweise jede Bildschirmausgabe auf den Drucker umgeleitet werden. Eine Anwendung besteht darin, sich das Directory der gelöschten Files auf Drucker ausgeben zu lassen, indem Sie eintippen:

CALL &85EB
|DELCAT
CALL &8600

Als letztes Tool zum Disc-Basic gibt es noch das Programm SEKTOR MAP. welches einen weiteren Basic-Befehl zur Verfügung stellt, der jedoch nur Anwendung in diesem Hilfsprogramm findet und deswegen nicht in Disc-Basic mit aufgenommen wurde. SEKTOR MAP erstellt ein Inhaltsverzeichnis der Spuren einer Disk und gibt an, ob ein Track nicht formatiert wurde. Da sich eine nicht formatierte Spur schlecht lesen läßt und dies nur über Manipulationen der Fehlermeldungen und der Anzahl der Leseversuche verwirklichen ließe, ist diese Routine nicht gerade schnell. Jemand, der seine Disketten jedoch mit FORMATEX behandelt hat, wird rasch den praktischen Wert des Programmes erkennen. SEKTOR MAP liegt ab &5000 und kann sich gleichzeitig mit dem Disc-Basic im Speicher befinden, ohne sich gegenseitig zu behindern. Bei einigen 664 und6128 Versionen kann es durch geänderte Ausgaberoutinen zu leichten Schwierigkeiten kommen. Hängen Sie in dem Fall einfach hinter die erste FOR-NEXT-Schleife noch ein CHR$(13). Das Programm arbeitet zwar einwandfrei, der Bildschirmaufbau ist jedoch etwas verschoben.

TM, CPCAI

★ PUBLISHER: CPC Amstrad International
★ YEAR: 1985
★ CONFIG: 64K + AMSDOS
★ LANGUAGE:
★ LiCENCE: LISTING
★ COLLECTION: CPC AMSTRAD INTERNATIONAL-SONDERHEFT
★ AUTHOR: Thomas Morgen
 

★ AMSTRAD CPC ★ DOWNLOAD ★

Type-in/Listings:
» RSX-Disc-Basic  v3.0    (CPC  Amstrad  International)    GERMAN    LISTINGDATE: 2014-05-05
DL: 312
TYPE: PDF
SiZE: 1620Ko
NOTE:

» RSX-Disc  Basic  v3.0    (CPC  Amstrad  International)    GERMANDATE: 2020-04-28
DL: 294
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 » Multikalkulator
» Applications » RSX Sprite / SpriteEditor (CPC Magazin)
» Applications » DIN-Tastatur unter CP/M 2.2 (Computer Schau)
» Applications » Pagemaker Directory/Directory Pagemaker (CPC Amstrad International)
» Applications » Wot (Amstrad Action)
» Applications » Compilation : Demon PD - PD 70 - CompuText
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 387 millisecondes et consultée 1912 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.