Subversion Repositories Kolibri OS

Rev

Rev 4867 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
4867 leency 1
DECIMAL
2
 
3
\ ' DUP  VALUE 'DUP_V
4
\ ' DROP VALUE 'DROP_V
5
 
6
USER     HLD  \ переменная - позиция последней литеры, перенесенной в PAD
7
 
8
 
9
1 VALUE  H-STDOUT   \ хэндл файла - стандартного вывода
10
1 VALUE  H-STDERR   \ хэндл файла - стандартного вывода ошибок
11
 
12
USER ALIGN-BYTES
13
 
14
: ALIGNED ( addr -- a-addr ) \ 94
15
\ a-addr - первый выровненный адрес, больший или равный addr.
16
  ALIGN-BYTES @ DUP 0= IF 1+ DUP ALIGN-BYTES ! THEN
17
  2DUP
18
  MOD DUP IF - + ELSE 2DROP THEN
19
;
20
 
21
: ALIGN ( -- ) \ 94
22
\ Если указатель пространства данных не выровнен -
23
\ выровнять его.
24
  DP @ ALIGNED DP @ - ALLOT
25
;
26
 
27
: ALIGN-NOP ( n -- )
28
\ выровнять HERE на n и заполнить NOP
29
  HERE DUP ROT 2DUP
30
  MOD DUP IF - + ELSE 2DROP THEN
31
  OVER - DUP ALLOT 0x90 FILL
32
;
33
 
34
: IMMEDIATE ( -- ) \ 94
35
\ Сделать последнее определение словом немедленного исполнения.
36
\ Исключительная ситуация возникает, если последнее определение
37
\ не имеет имени.
38
  LAST @ NAME>F DUP C@ &IMMEDIATE OR SWAP C!
39
;
40
 
41
 
42
: :NONAME ( C: -- colon-sys ) ( S: -- xt ) \ 94 CORE EXT
43
\ Создать выполнимый токен xt, установить состояние компиляции и
44
\ начать текущее определение, произведя colon-sys. Добавить семантику
45
\ инициализации к текущему определению.
46
\ Семантика выполнения xt будет задана словами, скомпилированными
47
\ в тело определения. Это определение может быть позже выполнено по
48
\ xt EXECUTE.
49
\ Если управляющий стек реализован с импользованием стека данных,
50
\ colon-sys будет верхним элементом на стеке данных.
51
\ Инициализация: ( i*x -- i*x ) ( R: -- nest-sys )
52
\ Сохранить зависящую от реализации информацию nest-sys о вызове
53
\ определения. Элементы стека i*x представляют аргументы xt.
54
\ xt Выполнение: ( i*x -- j*x )
55
\ Выполнить определение, заданное xt. Элементы стека i*x и j*x
56
\ представляют аргументы и результаты xt соответственно.
57
  HERE ]
58
  HERE TO :-SET ;
59
 
60
: INCLUDED INCLUDED_ ;
61
  ' NOOP       TO 
62
  ' FIND1      TO FIND
63
  ' ?LITERAL2  TO ?LITERAL
64
  ' ?SLITERAL2 TO ?SLITERAL
65
  ' OK1        TO OK.
66
  ' (ABORT1")  TO (ABORT")
67
 
68
VECT TYPE ' _TYPE TO TYPE
69
VECT EMIT ' _EMIT TO EMIT
70
 
71
 
72
: H. BASE @ SWAP HEX U. BASE ! ;
73
 
9587 vitalkrilo 74
: TST S" /sys/autoload.f" INCLUDED_ ;
4867 leency 75
: TST1 S" WORDS" EVALUATE ;
76