***************************************************************
B E S C H R E I B U N G Hisoft-Pascal (C)
***************************************************************
(c) by N.H.&> U.G.
Mai 1987
Diese Version von Hisoft wurde fuer den ZX-Spectrum entwickelt.
Es handelt sich um eine Standardpascalversion, die im Compiler
stark abgeruestet wurde. Ebenfalls wurde die Schnittstelle zu
anderen Editoren mit Uebergabe von ASCII-Text zu Gunsten des
Speicherplatzbedarfes entfernt.
Die angepasste Version fuer den Z-1013 ist gegen einige Aende-
rungen geschuetzt, dieser Schutz beeintraechtigt die Arbeit mit
dem Compiller in keiner Weise und braucht nicht entfernt werden.
Als Kassetteninterface ist fuer diese Version der >HEADER<
von Rainer Brosig ueber Sprungverteiler vorgesehen. Damit er-
oeffnen sich fuer den Anwender folgende Moeglichkeiten:
1. Abspeichern von Quelltexten P(z1,z2)
2. Lesen von Quelltexten G
3. Verbinden von Quelltexten G
4. Abspeichern von lauffaehigen MC-Programmen T,z1
Beim Letzteren wird der Pascaleditor und der Compiler zerstoert
( wenn 'Y' eingegeben wird ) und es erfolgt ein Linken, an-
schliessend wird die SAVE-Routine angesprungen und das MC-Pro-
gramm kann aufgenommen werden.Nach dem Absaven wird das MC-Pro-
gramm automatisch gestartet.Ein aeusserer Start ist auf Adresse
03F9 H jederzeit moeglich. Zu Testzwecken waehrend der Erstel-
lung ist ein Probelauf nach dem Compilieren moeglich, dazu ist
die Frage 'Run?' mit 'Y' zu beantworten. Dieser Probelauf zer-
stoert NICHT den Compiler!Das Kommando 'R'wiederholt den Start.
STEUERKOMMANDOS:
----------------
(...) Parameterangabe Pflicht!
Iz1,i1 Insert ab Zeile mit Increment (*wie AUTO *)
Lz1,z2 Listet Quelle ab Zeile1 bis Zeile2
K(x1) Anzahl der Zeilen bei List (*Siehe LINES*)
Cz1,z2 Compile Zeile1 bis Zeile2
D(z1,z2) Delete Zeile1 bis Zeile2
M(z1,z2) Move Kopiert Zeile1 auf Zeile2
N(z1,i1) Renumber 1.Zeile,Increment
Fz1,z2,$1,$2 Finde von Zeile1 bis2 $1 und gehe in EDIT
Ez1 Edit Zeile1
'SPACE' Pointer rechts
'<-' Pointer links
'->' Tabulator
'ENTER' Abschluss Mode
Q Quit := Zustand vor EDIT
R Reload := Zustand vor Aenderung in EDIT
L List Zeile
K Kill aktuelles Zeichen
Z Kill bis Zeilenende
F Weitersuchen(siehe 'F'-Kdo)
S Substitute $1 gegen $2 (siehe 'F'-Kdo.)
I Insert bis 'ENTER'
C Change bis 'ENTER' (ueberschreiben)
X Pointer an das Ende setzen und Insert-Mode
P(z1,z2) Put (Text auf Band schreiben)
G Get (Text von Band lesen)
Cz1 Compile ab Zeile1
R Run Probelauf
T :=MC Programm Adressen umrechnen+linken
B Bye Systemaustritt
X Ausgabe Anfangsadresse Textpuffer
W Ausgabe der Quelle auf Drucker
***************************************************************
** **
** F E H L E R M E L D U N G E N C O M P I L E R **
** **
***************************************************************
1 ZAHL ZUGROSS
2 ;ERWARTET
3 UNDEF. NAME
4 NAME ERWARTET
5 BEI CONST = UND NICHT :=
6 =ERWARTET
7 EINE ANWEISUNG DARF NICHT MIT DIESEM NAMEN BEGINNEN
8 :=ERWARTET
9 )ERWARTET
10 TYPFEHLER
11 .ERWARTET
12 FACTOR ERWARTET
13 CONSTANT ERWARTET
14 NAME IST KEINE CONSTANTE
15 THEN ERWARTET
16 DO ERWARTET
17 TO ODER DOWNTO ERWARTET
18 ( ERWARTET
19 AUSDRUCK TYP KANN NICHT GESCHRIEBEN WERDEN
20 OF ERWARTET
21 ,ERWARTET
22 :ERWARTET
23 PROGRAM ERWARTET
24 VARIABLE EWARTET,DA PARAMETER VARIABEL IST
25 BEGIN ERWARTET
26 BEI READ VARIABLE ERWARTET
27 AUSDRUECKE DIESES TYPS KOENNEN NICHT VERGLICHEN WERDEN
28 INTEGER / REAL ERWARTET
29 VARIABLENTYP KANN NICHT GELESEN WERDEN
30 DIESER NAME IST KEIN TYP
31 BEI REAL IST EXPONENT VERLANGT
32 SCALARER AUSDRUCK , KEIN NUMERISCHER ERWARTET
33 LEERSTRINGS VERBOTEN,CHR(0) VERWENDEN
34 (/ERWARTET
35 /)ERWARTET
36 ARRAYINDEX MUSS SCALAR SEIN
37 ..ERWARTET
38 (/ ODER , ERWARTET IN ARRAY DECLARATION
39 OBERGRENZE<UNTERGRENZE!
40 ZU LANG! MAX.256 ELEMENTE
41 ERGEBNIS VOM TYP NAME ERWARTET
42 , ODER /) ERWARTET IN SET
43 ../ ,/ /) ERWARTET
44 PARAMETERTYP MUSS NAME SEIN
45 LEERES SET KANN NICHT FACTOR IN NICHT-ZUWEISUNGSANW.
SEIN
46 SCALARTYP (+REELLE ZAHL) ERWARTET
47 SCALARTYP REELLE ZAHLEN ERWARTET
48 SETS NICHT VERTRAEGLICH
49 < AND > SETS NICHT DAMIT VERGLEICHEN
50 FORWARD,LABEL,CONST,VAR,TYPE BEGIN ERWARTET
51 HEXAZAHL ERWARTET
52 SETS KOENNEN NICHT GEPOKET WERDEN
53 ARRAY ZU GROSS
54 END ODER : IN RECORDDEFINITION FEHLT
55 FELDNAME ERWARTET
56 NACH WITH VARIABLE ERWARTET
57 WITH VARIABLE MUSS RECORD TYP SEIN
58 FELDNAME NICHT MIT WITH ANWEISUNG IN VERBINDUNG
59 NACH LABEL VORZEICHENLOSE INTEGERZAHL
60 NACH GOTO VORZEICHENLOSE INTEGERZAHL
61 MARKE IN FALSCHER PROGRAMMEBENE
62 MARKE NICHT VEREINBART
63 PARAMETER VON SIZE MUSS VARIABLE SEIN
64 AUF ZEIGER NUR GLEICHHEITSTEST ANGEWANDT
65 ZULAESSIGE WRITE-PARAMETER FUER INTEGER: E:M:H
66 $ ENTHAELT KEIN ZEILENENDEZEICHEN
67 PARAMETER VON NEW,MARK,REALISE MUSS ZEIGERVARIABLE SEIN
68 PARAMETER VON ADDR MUSS VARIABLE SEIN
Folgende Pascalbefehle sind implementiert:
==========================================
FRAC EXP LN ARCTAN TAN COS
SIN INP OUT SIZE ADDR INLINE
ENTIER USER RANDOM INCH HALT EOLN
PAGE SQRT ROUND TRUNC MAXINT SUCC
PRED ORD PEEK POKE RELEASE MARK
NEW TOUT TIN CHR ODD ABS
SQR FALSE TRUE BOOLEAN CHAR REAL
INTEGER READLN READ WRITELN WRITE PACKED
NIL FORWARD PROGRAM OR OF TO
DO IF SET NOT MOD DIV
VAR AND FOR END GOTO WITH
TYPE CASE ELSE THEN LABEL CONST
ARRAY UNTIL WHILE BEGIN RECORD DOWNTO
REPEAT FUNCTION PROCEDURE
STRINGS MUESSEN ALS ARRAY OF CHAR VEREINBART WERDEN
***************************************************************
** **
** COMPILERSTEUERUNG **
** **
***************************************************************
Die Compilersteuerung erfolgt unter Benutzung der Kommentarklam-
mern (*,*). Der Compiler erkennt eine Zeichenkette als Steuerzei-
chen an, wenn vor ihr das reservierte Symbol'$' eingetragen ist.
'+' schaltet Mode ein , '-' schaltet Mode aus.
'+' und '-' werden jeweils nach dem Steuerbuchstaben gesetzt.
Zum Beispiel schaltet (*$L+*) auf vollstaendiges Listing
Folgende Buchstaben sind zulaessig:
(+) (-)
L(+)...... VOLLST.LISTING NUR FEHLERZEILEN
O(+)...... OVERFLOWTEST BEI INTEGER(+/-) ENTFAELLT(SCHNELLER)
C(+)...... TASTATURABFRAGE BEI TEST KEIN ENDLOSSCHLEIFENTEST
A(+)...... TEST FELDINDIZESGROESSE TEST ENTFAELLT
I(-)...... BEI INTEGER <>= RICHTIG AUCH KOREKTUR WIRD NICHT
BEI OVERFLOW DURCHGEFUEHRT
P......... DRUCKER EIN/AUS (ohne +/-)
letzter Bearbeiter:
Nicolas Hildebrandt
W.-Kuelz-Str. 34
Weimar
5300