Справочник по системным программам для компьютера ZX Spectrum 1991 г.

Описание HISOFT PASCAL - приложения к руководству. Ошибки. Зарезервированые слова. Представление и хранение данных.


Приложение 1. Ошибки

П. 1.1. Перечень ошибок генерируемых компилятором.

.NUMBER ТОО LARGE
.SEMI-COLON OR 'END' EXPECTED.

.UNDECLARED IDENTIFIER. (Необъявленный идентификатор)

.IDENTIFIER EXPECTED.

.USE'='NOT':='IN A CONCTANT DECLAGATION.

.'='EXPECTED.

.THIS IDENTIFIER CANOOT BEGIN A STATAMENT

.'-'EXPECTED.

.')'EXPECTED.

0.WRONG TYPE.

1.'.'EXPECTED.

2.FACT0R EXPECTED.

3.C0NSTANT EXPECTED.

4.THIS IDDENTIFIER IS NOT A CONSTANT.

5.'THEN' EXPECTED.

6.'D.O' EXPECTED.

7.'TO' OR 'DOWNTO' EXPECTED.

8.')'EXPECTED.

9.CANNOT WRITE THIS TYPE OF EXPRESSION.
2().'OF' EXPECTED.

21.',' EXPECTED.

22.':' EXPECTED.

23.'PROGRAMM' EXPECTED.

24.VARIABLE EXPECTED SINCE PARAMETAR IS A VARIABLE
PARAMETER

25.'BEGIN' EXPECTED.

26.VARIABLE EXPECTED IN CALL TO READ.

27.CANNOT COMPARE EXPRESSIONS OF THIS TYPE.
28.SHOULD BE EITHER INTEGER OR TYPE REAL.

29.CANNOT READ THIS TYPE OF VARIABLE.

30.THIS IDENTIFIER IS NOT A TYPE.

31.EXPONENT EXPECTED IN REAL NUMBER.
32.SCALAR EXPRESSION (NOT NUMERIC) EXPECTED.

33.NULL STRINGS NOT ALLOWED (USE CHR (0) ).

34.'(' EXPECTED.

35.')' EXPECTED.

36.ARRAY INDECS MUST BE SCALAR.

37.'..' EXPECTED.

38.')'OR',' EXPECTED IN ARRAY DECLARATION.

39.LOWERBOUND GREATER THEN UPPERBOUND.

40.SET TOO LARGE (MORE THEN 256 POSSIBLE ELEMENTS).
41 .FUNCTION RESULT MUST BE A TYPE IDENTIFIER.

42.',',OR ')' EXPECTED IN SET.

43.'..' OR ',' OR ')' EXPECTED IN SET.

44.TYPE OF PARAMETER MUST BE A TYPE IDENTIFIER.

45.NULL SET CANNO BE THE FIRST FACTOR IN A
NON-ASSIGNMENT STATEMENT.

46.SCALAR (INCLUDING REAL) EXPECTED.
47.SCALAR (NOT INCLUDING REAL) EXPECTED.
48 .SETS INCOMPATIBLE.

49." AND " CANNOT BE USED TO COMPARE SETS.

50.' FOR WAR D','LABEL','CONST','VAR','TYPE'OR

'BEGIN' EXPECTED.
51 .HAXADEZIMAL DIGIT EXPECTED.

52.CANNOT POKE SETS.

53.ARRAY TOO LARGE (64к).

54.'END' OR ';' EXPECTED IN RECORD DEFINITION.

55.FIELD IDENTIFIER EXPECTED.

56.VRIABLE EXPECTED AFTER 'WITH'.

57.VARIABLE IN 'WITH' MUST BE OF 'RECORD' TYPE.

58.FIELD IDENTIFIER HAS NOT HAT ASOCIATED WITE
STATEMENT.

59.UNSIGNED INTEGER EXPECTED AFTER 'LABEL'.

60.UNSIGNED INTEGER EXPECTED AFTER 'GOTU'.

61.THIS LEBEL IS ON THE WRONG LEVEL.

62.UNDECLARED LABEL.

63.THE PARAMETER OF SIZE SHOULD BE A VARIABLE.

64.С AN ONLY USE EQUALITY TESTS FOR POINTERS.

65.THE ONLY WRITE PARAMETER FOR INTEGERS WITH
TWO ':' S IS E:M:H.

66.STRINGS MAY NOT CONTAIN END OF LINE CHARACTERS.

67.THE PARAMETER OF NEW, MARK OR RELEASE SHOULD
BE A VARIABLE OF POINTER TYPE.

68.THE PARAMETER OF ADDR, SHOULD BE A VARIABLE.

П. 1.2. Ошибки исполнения.

Когда при исполнении программы обнаруживается ошибка -
появляется одно из следующих сообщений, перед которым печатает-
ся 'AT РС=####', где #### - адрес памяти, где возникла ошибка.
Также будет указан источник ошибки, если нет, то необходимо про-
смотреть листинг компиляции на предмет обнаружения места воз-
никновения ошибки.

I.HALT (останов)
2.0VERFL0W (переполнение)
3.0UT OF RAM (мало ОЗУ)

4. / BY ZERO (деление на ноль)

5.INDEX ТОО LOW (индекс слишком мал)

6.INDEX ТОО HIGH (индекс слишком велик)

7.MATHS CALL ERROR

8.NUMBER ТОО LARGE (номер слишком велик)

9.NUMBER EXPECTED

10.LINE ТОО LONG (длинная строка)

II.EXPONENT EXPECTED

Обнаружение ошибки исполнения прерывает выполнение про-
граммы.

Приложение 2: Зарезервированные слова и
предопределенные идентификаторы.
П. 2.1. Зарезервированные слова.
AND ARRAY BEGIN CASE CONST

DIV DO DOWNTO ELSE END

FORWARD FUNCTION GOTO IF IN

LABEL MOD NIL NOT OF

OR PACKED PROCEDURE PROGRAMM RECORD

REPET SET THEN TO TYPE

UNTIL VAR WHILE WITH

П. 2.3. Предопределенные идентификаторы.

CONST MAXINT=32767

TYPE BOOLEAN=(FALSE,TRUE);

CHAR (УСТАНАВЛИВАЕТ ASCII символ);

INTEGER = - MAXINT..MAXINT;

REAL (предустанавливает действительные числа)

тогда:

PROCEDURE WRITE;WRITELN;READ;READLN;PAGE;

HALT;USER;POKE; INLINE; OUT;NEW;
MARK;RELEASE; TIN;TOUT;
FUNCTION ABS;SOR;ODD;RANDOM;ORD;SUCC;PRED;

INCH;EQLN;PEEK;CHR;SQRT;ENTIER;
ROUND;TRUNC;FRAC; SIN; COS;TAN;
ARCTAN;EXP;LN;ADDR;SIZE;INP;

Приложение 3. Представление и хранение данных.

П. 3.1. Представление данных.

Описано внутреннее представление данных в HISOFT PASCAL.

Информация о методе хранения может понадобиться в большин-
стве случаев (может быть использована функция SIZE см. разд. 2, 3,
6,7).

Остальные детали необходимы тем, кто хочет использовать
PASCAL-программу с программами в объектном коде.

П. 3.1.1. Целые числа.

При хранении целые числа занимают 2 байта в двоичной комп-
лементарной форме. Например:

1 = # 0001
265 = # 0100
-256 = # FF00

Стандартный регистр Z-80 используемый компилятором для
хранения целых - HL.

П. 3.1.2. Символы, логические и другие скаляры.
Занимают 1 байт в виде беззнаковых двоичных чисел.

Символы 8 бит в ASCII коде.
'Е' - #45

Логические:

ORD(TRUE)=1 Итак, TRUE представлена 1,

ORD (FALSE)=0 FALSE представлена О

Стандартный регистр Z-80 используемый компилятором для
хранения - А.

П. 3.1.3. Действительные числа.

Используется стандартная интерпретация экспоненциальной
формы только с основанием 2 вместо 10. Например: 2=2*10 или 1=0*2
Для хранения используется 4 байта:

Знак

Нормализованная мантисса

Экспонента

Данные

23

22 0

7 0

бит

Н L Е

D

регистр

Знак 0 или 1

Мантисса в виде 1 .ХХХХХХ

Пример:

2 = 0 1000000 00000000 00000000 00000001
-12.5= 1 11(Ю1(Ю00000(Ш000000(Ю0(Ю0^

Итак, регистровые пары HL DE используются для хранения
действительных чисел. В памяти хранятся в последовательности ED
LH.

П. 3.1.4. Записи и массивы.

Записи хранятся в таком же виде как и их компоненты.

Массивы. Если N=KOJIH4ECTBO элементов в массиве и

S=PA3MEP каждого элемента, тогда
количество байт отведенное под массив - N*S. Например:
ARRAY(1..10)OF INTEGER занимает 10*2=20 байт

ARRAY(2..12,1..10)OF CHARS имеет 11*10=110 элементов и
требует 110 байт.

П. 3.1.5. Множества.

Множества хранятся как битовые строки и, если базовый тип
содержит N элементов, то количество байт используемых под это
равно: (N-l) DIV 8+1.

Например:

SET OF CHAR требует (256-l)DIV 8+1=32 байт.

SET OF (BLUE,GREEN,ELLOW) требует (3-1) DIV 8+1=1 байт

П. 3.1.6. Указатели.

л_

Указатели занимают два байта, которые содержат адрес (в фор-
мате INTEL, т.е, младший байт 1) переменной, на которую он указы-
вает.

П. 3.2. Хранение переменных во время выполнения программы.

Есть три случая в которых пользователю необходимо знать как
хранятся переменные во время выполнения программы:

а) глобальные переменные - объявляются в основном блоке про-
граммы;

б) локальные переменные - объявляются во внутреннем блоке
программы;

в) параметры и возвращаемые величины - передаются в и из
процедур и функций.

Эти индивидуальные функции описаны ниже и даны примеры
использования этой информации в Приложении 4.

Глобальные переменные.

Глобальные переменные располагаются от вершины исполни-
тельного стека вниз, т.е. если стек располагается с #В000 и основные
переменные программы:

VAR I :INTEGER;

CH:CHAR;

X :REAL;

Тогда:

I (которая занимает 2 байта - см. предыдущий раздел.) будет
располагаться в позиции #В000-2 и #В000-1, т.е. #AFF9 и #AFFF. СН
(1 байт) будет расположена #AFFE-1, т.е. #AFFD X (4 байт) будет
расположена #AFF9, #AFFA, #AFFB, aFFC.

Локальные переменные.

Локальные переменные не могут быть так легко переданы через
стек, поэтому вместо этого IX регистр указывает на начало каждого
внутреннего блока так, что (IX-4) указывает на начало локальных
переменных блока, т.е.

PROCEDURE TEST;

VAR I,J:INTEGER;

Тогда:

I (целые 2 байта) будут расположены IX-4-2 и IX-4-1, т.е. IX-6
и IX-5. J будут расположены IX-8 и IX-7.

Параметры и возвращаемые величины.

Параметры-значения рассматриваются как локальные пере-
менные и также объявляются как старший адрес их расположения в
памяти. Однако, в отличие от переменных, наименьший (не стар-
ший) адрес фиксируется и он фиксируется в (IX+2), например:
PROCEDURE TEST (I:REAL;J:INTEGER)

тогда:

J (расположена первой) по IX+2 и IX+3.

I по IX+4, IX+5, IX+6 и IX+7.

Параметры-переменные рассматриваются также, как и пара-
метры-значения за исключением того, что они всегда занимают 2
байта, и эти 2 байта содержат адрес переменной;

например:

PROCEDURE TEST (I:INTEGER;VARX:REAL);

Ссылка на X расположена по IX+2 и IX+3; эти позиции содержат
адрес, где X хранится. Величина I находится по IX+4 и IX+5.

Значения, возвращаемые функциями, располагаются над пер-
вым параматром памяти, т.е.:

FUNCTION TEST (I:INTEGER) :REAL;

Тогда I находится no IX+2 и IX+3, а также резервируется про-
странство для возвращаемых величин по IX+4, IX+5, IX+6, IX+7.




СОДЕРЖАНИЕ:


  Оставте Ваш отзыв:

  НИК/ИМЯ
  ПОЧТА (шифруется)
  КОД



Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
Письмо №280 - Балашов
Реклама - Реклама и объявления ...
Перфоманс - нормальные пацаны - ди-джеи. Скажи им, что вон у меня у бабули есть стопка пластинок - давай я им впарю...
Приёмы кодинга - Тыр-дос.
Bytefall - отчёт о посещении.

В этот день...   29 марта