version 1.126, 2002/03/21 17:26:00
|
version 1.128, 2002/09/14 08:20:18
|
Line 30 ToDo:
|
Line 30 ToDo:
|
|
|
[THEN] |
[THEN] |
|
|
|
s" compat/strcomp.fs" included |
|
|
hex |
hex |
|
|
\ debugging for compiling |
\ debugging for compiling |
Line 259 hex
|
Line 261 hex
|
|
|
\ FIXME move down |
\ FIXME move down |
: comment? ( c-addr u -- c-addr u ) |
: comment? ( c-addr u -- c-addr u ) |
2dup s" (" compare 0= |
2dup s" (" str= |
IF postpone ( |
IF postpone ( |
ELSE 2dup s" \" compare 0= IF postpone \ THEN |
ELSE 2dup s" \" str= IF postpone \ THEN |
THEN ; |
THEN ; |
|
|
: X ( -- <name> ) |
: X ( -- <name> ) |
Line 474 sourcepath value fpath
|
Line 476 sourcepath value fpath
|
2dup 2 u> swap 1+ c@ [char] : = and >r \ dos absoulte: c:/.... |
2dup 2 u> swap 1+ c@ [char] : = and >r \ dos absoulte: c:/.... |
over c@ [char] / = >r |
over c@ [char] / = >r |
over c@ [char] ~ = >r |
over c@ [char] ~ = >r |
\ 2dup 3 min S" ../" compare 0= r> or >r \ not catered for in expandtopic |
\ 2dup S" ../" string-prefix? r> or >r \ not catered for in expandtopic |
2 min S" ./" compare 0= |
S" ./" string-prefix? |
r> r> r> or or or ; |
r> r> r> or or or ; |
|
|
Create ofile 0 c, 255 chars allot |
Create ofile 0 c, 255 chars allot |
Line 491 Create tfile 0 c, 255 chars allot
|
Line 493 Create tfile 0 c, 255 chars allot
|
REPEAT ; |
REPEAT ; |
|
|
: remove~+ ( -- ) |
: remove~+ ( -- ) |
ofile count 3 min s" ~+/" compare 0= |
ofile count s" ~+/" string-prefix? |
IF |
IF |
ofile count 3 /string ofile place |
ofile count 3 /string ofile place |
THEN ; |
THEN ; |
|
|
: expandtopic ( -- ) \ stack effect correct? - anton |
: expandtopic ( -- ) \ stack effect correct? - anton |
\ expands "./" into an absolute name |
\ expands "./" into an absolute name |
ofile count 2 min s" ./" compare 0= |
ofile count s" ./" string-prefix? |
IF |
IF |
ofile count 1 /string tfile place |
ofile count 1 /string tfile place |
0 ofile c! sourcefilename extractpath ofile place |
0 ofile c! sourcefilename extractpath ofile place |
Line 511 Create tfile 0 c, 255 chars allot
|
Line 513 Create tfile 0 c, 255 chars allot
|
\ deletes phrases like "xy/.." out of our directory name 2dec97jaw |
\ deletes phrases like "xy/.." out of our directory name 2dec97jaw |
over swap |
over swap |
BEGIN dup WHILE |
BEGIN dup WHILE |
dup >r '/ scan 2dup 4 min s" /../" compare 0= |
dup >r '/ scan 2dup s" /../" string-prefix? |
IF |
IF |
dup r> - >r 4 /string over r> + 4 - |
dup r> - >r 4 /string over r> + 4 - |
swap 2dup + >r move dup r> over - |
swap 2dup + >r move dup r> over - |
Line 574 fpath= ~+
|
Line 576 fpath= ~+
|
: included? ( c-addr u -- f ) |
: included? ( c-addr u -- f ) |
file-list |
file-list |
BEGIN @ dup |
BEGIN @ dup |
WHILE >r 2dup r@ >fl-name count compare 0= |
WHILE >r 2dup r@ >fl-name count str= |
IF rdrop 2drop true EXIT THEN |
IF rdrop 2drop true EXIT THEN |
r> |
r> |
REPEAT |
REPEAT |
Line 3439 Create parsed 20 chars allot \ store wor
|
Line 3441 Create parsed 20 chars allot \ store wor
|
1 BEGIN |
1 BEGIN |
BEGIN bl word count dup WHILE |
BEGIN bl word count dup WHILE |
comment? 20 umin parsed place upcase parsed count |
comment? 20 umin parsed place upcase parsed count |
2dup s" [IF]" compare 0= >r |
2dup s" [IF]" str= >r |
2dup s" [IFUNDEF]" compare 0= >r |
2dup s" [IFUNDEF]" str= >r |
2dup s" [IFDEF]" compare 0= r> or r> or |
2dup s" [IFDEF]" str= r> or r> or |
IF 2drop 1+ |
IF 2drop 1+ |
ELSE 2dup s" [ELSE]" compare 0= |
ELSE 2dup s" [ELSE]" str= |
IF 2drop 1- dup |
IF 2drop 1- dup |
IF 1+ |
IF 1+ |
THEN |
THEN |
ELSE |
ELSE |
2dup s" [ENDIF]" compare 0= >r |
2dup s" [ENDIF]" str= >r |
s" [THEN]" compare 0= r> or |
s" [THEN]" str= r> or |
IF 1- THEN |
IF 1- THEN |
THEN |
THEN |
THEN |
THEN |
Line 3497 Cond: [IFUNDEF] postpone [IFUNDEF] ;Cond
|
Line 3499 Cond: [IFUNDEF] postpone [IFUNDEF] ;Cond
|
IF >in ! X : |
IF >in ! X : |
ELSE drop |
ELSE drop |
BEGIN bl word dup c@ |
BEGIN bl word dup c@ |
IF count comment? s" ;" compare 0= ?EXIT |
IF count comment? s" ;" str= ?EXIT |
ELSE refill 0= ABORT" CROSS: Out of Input while C:" |
ELSE refill 0= ABORT" CROSS: Out of Input while C:" |
THEN |
THEN |
AGAIN |
AGAIN |
Line 3631 previous
|
Line 3633 previous
|
: doc-on true to-doc ! ; |
: doc-on true to-doc ! ; |
|
|
: declareunique ( "name" -- ) |
: declareunique ( "name" -- ) |
\G Sets the unique flag for a ghost. The assembler output |
\ Sets the unique flag for a ghost. The assembler output |
\G generates labels with the ghostname concatenated with the address |
\ generates labels with the ghostname concatenated with the address |
\G while cross-compiling. The address is concatenated |
\ while cross-compiling. The address is concatenated |
\G because we have double occurences of the same name. |
\ because we have double occurences of the same name. |
\G If we want to reference the labels from the assembler or C |
\ If we want to reference the labels from the assembler or C |
\G code we declare them unique, so the address is skipped. |
\ code we declare them unique, so the address is skipped. |
Ghost >ghost-flags dup @ <unique> or swap ! ; |
Ghost >ghost-flags dup @ <unique> or swap ! ; |
|
|
\ [IFDEF] dbg : dbg dbg ; [THEN] |
\ [IFDEF] dbg : dbg dbg ; [THEN] |