Benchmarko Logo
Benchmarko Logo
Home
Projekte
CPCEMU
Software
Download
Kontakt
Links

Englisch
 
zurück

CPC-Tools

Übersicht

 


 

Anleitung zu ASCRSX (v1.0)

Dateien:
  • ASCRSX.BAS mit ASCRSX.BIN (&a000-)
  • ASCRSX.DOC (Dokumentation)

AscRsx (v1.0) ist ein Public-Domain-Programm und darf und soll sogar frei kopiert werden. Es ist geeignet für CPC 464, 664 und 6128.

AscRsx bietet RSX-Befehle vor allem zum schnellen Verarbeiten von ASCII-Dateien unter AMSDOS.

AscRsx bietet folgende Befehle, nachdem es durch CALL &A000 aktiviert wurde:

  • |FAST schaltet auf superschnelle Zeichenausgabe um. Sie funktioniert in allen Bildschirmmodi, allerdings nur mit Pen 1 und Screen ab &C000.
  • |SLOW schaltet die superschnelle Zeichenausgabe wieder ab. (Entspricht TXT RESET)
  • t$="Filename":|LOAD,@t$<,Ladeadresse> lädt ein File mit beliebigem Filetyp. Ist keine Ladeadresse angegeben, wird die aus dem Header genommen. ASCII-Files werden superschnell in einem Stück geladen, dabei muß natürlich eine Ladeadresse angegeben werden (Nur für Disk). Anschließend wird die maximale Zeilenanzahl berechnet und in eine interne Variable eingetragen.
  • t$="NAME":|SAVE,@t$,Filetyp,Ladeadr.,Länge,Einsprung speichert ein File. Als Filetypen gelten:
    • 0 = normales Basic
    • 1 = geschütztes Basic
    • 2 = Binär
    • &16(22) = ASCII (Länge, Einsprung ohne Wirkung)

Ist ein (Text-)File geladen, stehen folgende Befehle zur Verfügung:

  • m%=1: |MAXLN,@m% übergibt die maximale Zeilennummer (max line) einer Integer-Variablen, die natürlich vorher schon einmal benutzt sein mußte. Die erste Zeile trägt dabei die Nummer 0.
  • i%=1: |PREVLN<,@i%> stellt den internen Zeiger eine Zeile zurück (previous line), falls möglich. Wird eine Integer-Variable angegeben, beinhaltet sie nach Aufruf die aktuelle Zeilennummer.
  • i%=1: |NEXTLN<,@i%> stellt den internen Zeiger eine Zeile weiter (next line), falls möglich. Wird eine Integer-Variable angegeben, beinhaltet sie nach Aufruf die aktuelle Zeilennummer.
  • nr=0: |SEEKLN,nr positioniert den internen Zeiger auf Zeile nr (seek line). Ist nr > maxline+1, wird nichts gemacht.
  • i%=1: |PRINTLN<,@i%> gibt die Zeile aus, auf die der Zeiger zeigt (print line). Der Pointer wird nicht auf die nächste Zeile gesetzt! Wird eine Integer-Variable angegeben, beinhaltet sie nach Aufruf die aktuelle Zeilennummer.
  • t$=SPACE$(200): |GETLN,@t$ holt die Zeile, auf die der Zeiger zeigt, in die angegebene Stringvariable (get line). Es werden nur maximal so viele Zeichen geholt, wie die Stringvariable lang ist. Anschließend wird die Länge der Variablen evtl. angepaßt.
  • t$="A": |PUTLN,@t$ überschreibt die Zeile, auf die der Zeiger zeigt, mit der angegebenen Stringvariablen, wenn die Längen identisch sind. (put line)
  • Automatisches Einfügen und Löschen in Vorbereitung.

Anmerkungen: Es wird keine Fehlermeldung ausgegeben, wenn z.B. die Parameteranzahl nicht stimmt. Der Befehl wird dann einfach nicht ausgeführt! Es muß selber darauf geachtet werden, daß nicht zu lange Textfiles geladen werden, die über die Adresse &A000 reichen. Aus Basic-Programmen ist es sinnvoll, den Textbuffer vor dem Laden durch MEMORY &xxxx zu schützen, auch wenn es für |LOAD nicht unbedingt nötig ist.

 

Viel Spaß beim Experimentieren!

Marco Vieth, 24.3.1991

 

Zurück zur Übersicht.


 

Anleitung zu Batch (v1.0)

Dateien:

  • BATCH.BAS mit BATCHMK.BIN (&A000-) ist das Batch-Steuerprogramm
  • BATCH.DOC (Dokumentation)
  • BATCHDMO (ASCII-File mit Basic-Befehlen, die als Batch ausgeführt werden können)

BATCH (v1.0) ist ein Public-Domain-Programm und darf und soll sogar frei kopiert werden. Es ist geeignet für CPC 464, 664 und 6128. Es kann nur auf Diskette benutzt werden.

BATCH ist entstanden, um komplexe Befehlsfolgen auch unter BASIC automatisch ablaufen zu lassen. Solche Befehlsfolgen sind in einer Textdatei abgelegt, der sogenannten "Batchdatei". Das entspricht in etwa SUBMIT unter CP/M.

 

1. Das Batch-Steuerprogramm

Es stehen folgende RSX-Befehle zur Verfügung: (Das | vor jedem Befehl ist der senkrechte Strich <SHIFT>+Klammeraffe)

  • |BATCH(,"FILENAME") läd die angegebene Batchdatei (ASCII) und führt sie aus. Ist FILENAME weggelassen, wird die vorher geladene Batchdatei nochmal ausgeführt.
  • |BLADR,adr setzt die Batch-Ladeadresse auf adr (Standard: &9000)
  • |BSPEED,wert setzt die Ausführgeschwindigkeit, mit der das Batch-File abgearbeitet werden soll (0=schell; Standard: 0).

2. Aufbau einer Batchdatei

Batchdateien sind normale ASCII-Dateien und können mit jedem Texteditor geschrieben werden. Sie enthalten Basic-Befehle (als Direktmodus-Befehle oder als Programmzeilen), die ausgeführt werden, als hätten sie diese gerade eingegeben. Auch der NEW-Befehl ist möglich, falls die Batchdatei oberhalb von HIMEM liegt.

Funktionsweise: Das Batch-Steuerprogramm modifiziert den Edit-Vektor Txt Edit und übergibt bei jedem Aufruf dieses Vektors eine Batchzeile, bis das Ende der Batchdatei erreicht ist. Dann wird der Edit-Vektor wieder restauriert und der Batchbetrieb wird beendet. Dadurch bleiben viele Keyboard-Routinen unbeeinflußt vom Batch, z.B. CALL &BB18 (Warten auf Tastendruck).

3. Tips

Problem: Sie haben ein Basic-Programm geschrieben und wollen überflüssige Leerzeichen entfernen. Wie immer haben sie vorher vergessen, die Leerzeichenunterdrückung durch POKE &AC00,255 zu aktivieren.

Lösung: Mit dem Batch-Programm ist das ganz einfach: Sie starten BATCH durch RUN"BATCH", brechen den Batchbetrieb ab, tippen POKE &AC00,255 ein, ändern evtl. die Ladeadresse für die Batchdatei durch |BLADR,adr, tippen NEW ein und starten den Batch durch |BATCH,"FILE.TXT", wobei FILE.TXT ihr Basic-Programm im ASCII-Format ist (erstellt durch SAVE"FILE.TXT",A).

Der Batch "tippt" jetzt automatisch alle Zeilen nochmal ein, wobei überflüssige Zeichen automatisch unterdrückt werden. Falls es genügend Speicher für die Batchdatei und das Basic-Programm gibt, können Sie es jetzt abspeichern.

 

Viel Spaß beim programmieren!

Marco Vieth, 25.4.1991

 

Zurück zur Übersicht.


 

Anleitung zu FastCPM (v1.4)

FastCPM ist ein schneller CP/M Plus-Loader mit schneller MODE 2 Zeichenausgabe.

CP/M starten durch RUN"C von Laufwerk A oder B von einer Diskette beliebigen Formats! (Data oder System)

Tip: RUN"C wie folgt eingeben:

  1. C
  2. <Cursor links>
  3. <CTRL>+<ENTER> (kleine Enter-Taste!)

Verbesserungen zu vorherigen Versionen:

Beim Kopieren der CP/M-Installation braucht nichts mehr beachtet zu werden. Die Datei C10CPM3.EMS wird mittels Blockladen geladen, die Patches (schnelle MODE2-Zeichenausgabe, Drive set) ausgeführt und gestartet. Außerdem sind jetzt System-Format und Data-Format möglich!

 

Marco Vieth, Dezember 1990

 

Zurück zur Übersicht.


 

Anleitung zu SUCOMP (v1.1)

Files:
  • SUCOMP.BAS mit SUCOMP.BIN (&A200-&A4AB)
  • SUDECO.BAS (beliebig verschiebbar), eigener Dekomprimierer
  • SUCOMP.DOC (Dokumentation)

SuComp (v1.1) ist ein Public-Domain-Programm und darf und soll sogar frei kopiert werden. Es ist geeignet für CPC 464, 664 und 6128.

SuComp komprimiert und dekomprimiert Dateien automatisch beim Laden und Speichern. Das Verfahren ist kompatibel zu Advanced-Art-Studio und erkennt automatisch komprimierte Dateien.

SuComp bietet folgende Befehle, nachdem es durch CALL &A200 aktiviert wurde:

  • |CON<,Bufferadr> schaltet das automatische Komprimieren beim Laden/Saven an ("compress on"). Falls keine Bufferadresse für einen &1000-Byte langen Buffer angegeben wurde, wird automatisch &9200 genommen. Als Compress-Buffer kann jeder unbenutzte Speicherbereich dienen, der beim Laden bzw. Komprimieren und Dekomprimieren nicht benutzt wird (also auch parallel zu den Roms &40-&3fff oder &c000-&ffff). Falls das Komprimieren aus war, werden die Vektoren IN OPEN, IN DIRECT, OUT DIRECT gepatched. |TAPE und |DISC - Befehle sollten jetzt nicht benutzt werden.
  • |COFF schaltet das automatische Komprimieren wieder aus, falls es an war ("compress off"). Die Vektoren IN OPEN, IN DIRECT, OUT DIRECT werden wieder restauriert.

Zu SUDECO.BAS: Haben sie Screens oder sonstige Daten komprimiert abgespeichert und wollen es aus eigenen Programmen ohne Compressbuffer laden, benutzen Sie den Dekompressor SUDECO.BAS. Er ist verschiebbar (relocatable) und initialisiert sich vom Basic-Loader aus unterhalb des aktuellen HIMEM. Aufruf: CALL start (nach GOSUB 2000). Der Dekodierer ist automatisch für komprimierte Screens eingestellt, die nach &4000 geladen und ab &C000 gezeigt werden sollen und &4000 Bytes lang sind. Änderungen des Bereichs: poke start+1,LadrLo:poke start+2,LadrHi (Startadresse) poke start+4,ZieladrLo:poke start+5,ZieladrHi (Zieladresse) poke start+7,LangLo:poke start+8,LangHi (Länge des Dekomprimierten!)

Anmerkung zu SuperDeco: Sollen die Daten im gleichen Speicherbereich geladen und dekomprimiert werden, muß die Endadresse der noch nicht dekomprimierten Daten mit der Endadresse der nachher dekomprimierten Daten übereinstimmen, sonst werden beim Dekomprimieren noch nicht dekomprimierte Daten überschrieben! Also einen komprimierten Screen nicht nach &c000 laden und dekomprimieren, sondern so, daß seine Endadresse = &FFFF ist. Dann kann er nach &c000 komprimiert werden. Mit dem oben erklärten RSX-Befehl macht das keine Probleme, da noch nicht Dekodiertes automatisch verschoben wird!

Achtung: SUDECO benutzt einen einfacheren Dekodieralgorithmus, der bei bestimmten Daten nicht funktioniert (dann nur SUCOMP benutzen).

 

Viel Spaß beim Experimentieren!

Marco Vieth, 28.3.1991

 

Zurück zum Anfang.


Marco Vieth, 13.04.2008 00:17:55