forked from KolibriOS/kolibrios
140 lines
4.4 KiB
FortranFixed
140 lines
4.4 KiB
FortranFixed
|
( <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>-<EFBFBD>뢮<EFBFBD>.
|
|||
|
)
|
|||
|
|
|||
|
CREATE LT 0xD C, 0xA C, 0xD C, 0xA C, \ line terminator
|
|||
|
CREATE LTL 2 , \ line terminator length
|
|||
|
|
|||
|
|
|||
|
: DOS-LINES ( -- )
|
|||
|
0xA0D LT ! 2 LTL !
|
|||
|
;
|
|||
|
: UNIX-LINES ( -- )
|
|||
|
0xA0A LT ! 1 LTL !
|
|||
|
;
|
|||
|
|
|||
|
|
|||
|
: READ-FILE ( c-addr u1 fileid -- u2 ior ) \ 94 FILE
|
|||
|
\ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> u1 ᨬ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> c-addr <EFBFBD><EFBFBD> ⥪<EFBFBD>饩 <EFBFBD><EFBFBD><EFBFBD><EFBFBD>樨 䠩<EFBFBD><EFBFBD>,
|
|||
|
\ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>㥬<EFBFBD><EFBFBD><EFBFBD> fileid.
|
|||
|
\ <20> u1 ᨬ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>⠭<EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD>᪫<EFBFBD>祭<EFBFBD><EFBFBD>, ior <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> u2 ࠢ<EFBFBD><EFBFBD> u1.
|
|||
|
\ <20> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 䠩<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD>⨣<EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>⥭<EFBFBD><EFBFBD> u1 ᨬ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, ior <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
\ <20> u2 - <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>⢮ ॠ<EFBFBD>쭮 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>⠭<EFBFBD><EFBFBD><EFBFBD> ᨬ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
|||
|
\ <20> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD>ந<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD>祭<EFBFBD><EFBFBD>, <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>頥<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
\ FILE-POSITION ࠢ<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD>祭<EFBFBD><EFBFBD>, <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>頥<EFBFBD><EFBFBD><EFBFBD><EFBFBD> FILE-SIZE <EFBFBD><EFBFBD><EFBFBD> 䠩<EFBFBD><EFBFBD>
|
|||
|
\ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>㥬<EFBFBD><EFBFBD><EFBFBD> fileid, ior <EFBFBD> u2 <EFBFBD>㫨.
|
|||
|
\ <20> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD>᪫<EFBFBD><EFBFBD><EFBFBD>⥫쭠<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <EFBFBD><EFBFBD> ior - <EFBFBD><EFBFBD>।<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ॠ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>樥<EFBFBD>
|
|||
|
\ <20><><EFBFBD> १<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<EFBFBD>뢮<EFBFBD><EFBFBD>, <EFBFBD> u2 - <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>⢮ <EFBFBD><EFBFBD>ଠ<EFBFBD>쭮 <EFBFBD><EFBFBD>।<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD>
|
|||
|
\ c-addr ᨬ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
|||
|
\ <20><><EFBFBD><EFBFBD>।<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD>믮<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
\ <20><><EFBFBD>祭<EFBFBD><EFBFBD>, <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>頥<EFBFBD><EFBFBD><EFBFBD> FILE-POSITION <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 祬 <EFBFBD><EFBFBD><EFBFBD>祭<EFBFBD><EFBFBD>, <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>頥<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
\ FILE-SIZE <EFBFBD><EFBFBD><EFBFBD> 䠩<EFBFBD><EFBFBD>, <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>㥬<EFBFBD><EFBFBD><EFBFBD> fileid, <EFBFBD><EFBFBD><EFBFBD> <EFBFBD>ॡ㥬<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
\ <20><>⠥<EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ᠭ<EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 䠩<EFBFBD><EFBFBD>.
|
|||
|
\ <20><> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>襭<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>樨 FILE-POSITION <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
\ <20> 䠩<EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>⠭<EFBFBD><EFBFBD><EFBFBD><EFBFBD> ᨬ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
|||
|
DUP >R .CODE 0!
|
|||
|
R@ .SIZE !
|
|||
|
R@ .DATA !
|
|||
|
R@ 70 SYS2
|
|||
|
EBX@ SWAP
|
|||
|
DUP 6 = IF DROP 0 THEN
|
|||
|
DUP 0=
|
|||
|
IF R@ .FIRST D@
|
|||
|
R@ .SIZE @ 0 D+
|
|||
|
R@ .FIRST D!
|
|||
|
THEN
|
|||
|
RDROP
|
|||
|
;
|
|||
|
|
|||
|
22 CONSTANT MAX_OPEN_FILES
|
|||
|
|
|||
|
CREATE FILE_STR_BUF FILE_STR 1+ MAX_OPEN_FILES * ALLOT
|
|||
|
|
|||
|
: FALLOC ( -- 0|fid )
|
|||
|
FILE_STR_BUF FILE_STR MAX_OPEN_FILES * BOUNDS
|
|||
|
BEGIN DUP .NAME @ 0=
|
|||
|
IF NIP EXIT THEN
|
|||
|
FILE_STR + 2DUP U<
|
|||
|
UNTIL 2DROP 0
|
|||
|
;
|
|||
|
|
|||
|
: OPEN-FILE ( c-addr u fam -- fileid ior )
|
|||
|
\ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 䠩<EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>ப<EFBFBD><EFBFBD> c-addr u, <EFBFBD> <EFBFBD><EFBFBD>⮤<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>㯠 fam.
|
|||
|
\ <20><><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD>祭<EFBFBD><EFBFBD> fam <EFBFBD><EFBFBD>।<EFBFBD><EFBFBD><EFBFBD><EFBFBD> ॠ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>樥<EFBFBD>.
|
|||
|
\ <20> 䠩<EFBFBD> <EFBFBD>ᯥ譮 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, ior <EFBFBD><EFBFBD><EFBFBD><EFBFBD>, fileid <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>䨪<EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <EFBFBD> 䠩<EFBFBD>
|
|||
|
\ <20><><EFBFBD><EFBFBD>樮<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD>砫<EFBFBD>.
|
|||
|
\ <20><><EFBFBD><EFBFBD><EFBFBD> ior - <EFBFBD><EFBFBD>।<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ॠ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>樥<EFBFBD> <EFBFBD><EFBFBD><EFBFBD> १<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<EFBFBD>뢮<EFBFBD><EFBFBD>,
|
|||
|
\ <20> fileid <EFBFBD><EFBFBD><EFBFBD><EFBFBD>।<EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
|||
|
DROP
|
|||
|
\ FILE_STR
|
|||
|
FALLOC DUP
|
|||
|
IF
|
|||
|
>R
|
|||
|
R@ FILE_STR ERASE
|
|||
|
R@ .NAME SWAP MOVE
|
|||
|
R> 0 EXIT
|
|||
|
THEN -1
|
|||
|
;
|
|||
|
|
|||
|
: CLOSE-FILE ( fileid -- ior ) \ 94 FILE
|
|||
|
\ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 䠩<EFBFBD>, <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> fileid.
|
|||
|
.NAME 0! 0
|
|||
|
;
|
|||
|
|
|||
|
|
|||
|
USER _fp1
|
|||
|
USER _fp2
|
|||
|
USER _addr
|
|||
|
|
|||
|
|
|||
|
: READ-LINE ( c-addr u1 fileid -- u2 flag ior ) \ 94 FILE
|
|||
|
\ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>ப<EFBFBD> <EFBFBD><EFBFBD> 䠩<EFBFBD><EFBFBD>, <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> fileid, <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
\ <20><> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> c-addr. <EFBFBD><EFBFBD>⠥<EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> u1 ᨬ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
\ <20><>।<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ॠ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>樥<EFBFBD> ᨬ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "<22><><EFBFBD><EFBFBD><EFBFBD> <20><>ப<EFBFBD>" <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
\ <20><><EFBFBD><EFBFBD><EFBFBD>⠭<EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD>殬 <EFBFBD><EFBFBD>ப<EFBFBD>, <EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>祭<EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>稪 u2.
|
|||
|
\ <20><><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>ப<EFBFBD> c-addr <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ࠧ<EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> u1+2 ᨬ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
|||
|
\ <20> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD>ᯥ譠, flag "<22><>⨭<EFBFBD>" <EFBFBD> ior <EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>ப<EFBFBD>
|
|||
|
\ <20><><EFBFBD><EFBFBD>祭 <EFBFBD><EFBFBD> ⮣<EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>⠭<EFBFBD> u1 ᨬ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <EFBFBD><EFBFBD> u2 - <EFBFBD><EFBFBD> ॠ<EFBFBD>쭮
|
|||
|
\ <20><><EFBFBD><EFBFBD><EFBFBD>⠭<EFBFBD><EFBFBD><EFBFBD> ᨬ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (0<=u2<=u1), <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ᨬ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "<22><><EFBFBD><EFBFBD><EFBFBD> <20><>ப<EFBFBD>".
|
|||
|
\ <20><><EFBFBD><EFBFBD><EFBFBD> u1=u2 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>ப<EFBFBD> 㦥 <EFBFBD><EFBFBD><EFBFBD><EFBFBD>祭.
|
|||
|
\ <20> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD>ந<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD>祭<EFBFBD><EFBFBD>, <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>頥<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
\ FILE-POSITION ࠢ<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD>祭<EFBFBD><EFBFBD>, <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>頥<EFBFBD><EFBFBD><EFBFBD><EFBFBD> FILE-SIZE <EFBFBD><EFBFBD><EFBFBD> 䠩<EFBFBD><EFBFBD>,
|
|||
|
\ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>㥬<EFBFBD><EFBFBD><EFBFBD> fileid, flag "<22><><EFBFBD><EFBFBD>", ior <EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <EFBFBD> u2 <EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
|||
|
\ <20> ior <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <EFBFBD><EFBFBD> <EFBFBD>ந<EFBFBD><EFBFBD>諠 <EFBFBD>᪫<EFBFBD><EFBFBD><EFBFBD>⥫쭠<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> ior -
|
|||
|
\ <20><>।<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ॠ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>樥<EFBFBD> <EFBFBD><EFBFBD><EFBFBD> १<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>-<EFBFBD>뢮<EFBFBD><EFBFBD>.
|
|||
|
\ <20><><EFBFBD><EFBFBD>।<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD>믮<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
\ <20><><EFBFBD>祭<EFBFBD><EFBFBD>, <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>頥<EFBFBD><EFBFBD><EFBFBD> FILE-POSITION <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 祬 <EFBFBD><EFBFBD><EFBFBD>祭<EFBFBD><EFBFBD>, <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>頥<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
\ FILE-SIZE <EFBFBD><EFBFBD><EFBFBD> 䠩<EFBFBD><EFBFBD>, <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>㥬<EFBFBD><EFBFBD><EFBFBD> fileid, <EFBFBD><EFBFBD><EFBFBD> <EFBFBD>ॡ㥬<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
\ <20><>⠥<EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ᠭ<EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 䠩<EFBFBD><EFBFBD>.
|
|||
|
\ <20><> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>襭<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>樨 FILE-POSITION <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
\ <20> 䠩<EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>⠭<EFBFBD><EFBFBD><EFBFBD><EFBFBD> ᨬ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
|||
|
DUP >R
|
|||
|
FILE-POSITION IF 2DROP 0 0 THEN _fp1 ! _fp2 !
|
|||
|
1+
|
|||
|
OVER _addr !
|
|||
|
|
|||
|
R@ READ-FILE ?DUP IF NIP RDROP 0 0 ROT EXIT THEN
|
|||
|
|
|||
|
DUP >R 0= IF RDROP RDROP 0 0 0 EXIT THEN \ <EFBFBD>뫨 <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 䠩<EFBFBD><EFBFBD>
|
|||
|
_addr @ R@ LT 1+ 1 SEARCH
|
|||
|
IF \ <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ࠧ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>⥫<EFBFBD> <EFBFBD><EFBFBD>ப
|
|||
|
DROP _addr @ -
|
|||
|
DUP 1+ S>D _fp2 @ _fp1 @ D+ RDROP R> REPOSITION-FILE DROP
|
|||
|
DUP _addr @ + 1- C@ 0xD = IF 1- THEN
|
|||
|
ELSE \ <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ࠧ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>⥫<EFBFBD> <EFBFBD><EFBFBD>ப
|
|||
|
2DROP
|
|||
|
R> RDROP \ <EFBFBD> <EFBFBD><EFBFBD>ப<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>⠭<EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <EFBFBD>㤥<EFBFBD> ࠧ१<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
THEN
|
|||
|
TRUE 0
|
|||
|
;
|
|||
|
|
|||
|
: FILE-POSITION ( fileid -- ud ior ) \ 94 FILE
|
|||
|
\ ud - ⥪<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> 䠩<EFBFBD><EFBFBD>, <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>㥬<EFBFBD><EFBFBD> fileid.
|
|||
|
.FIRST D@ 0
|
|||
|
;
|
|||
|
|
|||
|
: REPOSITION-FILE ( ud fileid -- ior ) \ 94 FILE
|
|||
|
\ <20><>९<EFBFBD><EFBFBD><EFBFBD>樮<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 䠩<EFBFBD>, <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>㥬<EFBFBD><EFBFBD> fileid, <EFBFBD><EFBFBD> ud.
|
|||
|
.FIRST D! 0
|
|||
|
;
|
|||
|
|