\ Read only Mapfile by Lcc Wizard for win32forth v4.2 0671 0 cell field+ >mfile-file-handle cell field+ >mfile-map-object cell field+ >mfile-map-abs-adr constant b/mfile : mfile-init ( mfile-handle -- ) b/mfile erase ; : mfile ( -- ) create b/mfile allot ; : close-mfile ( map-handle -- f1 ) \ f=true=error >r false r@ >mfile-map-abs-adr @ ?dup if call UnmapViewOfFile 0= or then r@ >mfile-map-object @ ?dup if call CloseHandle 0= or then r@ >mfile-file-handle @ ?dup if call CloseHandle 0= or then r> mfile-init ; : %open-mfile ( a n mm mapsize -- adr len false / true ) \ true=error { mm mapsize \ filesize -- } mm close-mfile drop r/o open-file if drop true exit then mm >mfile-file-handle ! mm @ file-size drop drop to filesize \ 2dup 0xffffffff. d> if 2drop 0xfffffffe else drop then to filesize 0 \ *MapName no name is specified \ 0.0 \ MaxSizeLow default or specified low size \ MaxSizeHi zero high part filesize mapsize ?dup if umin then 0 PAGE_READONLY \ fdwProtect a read file 0 \ psa no security mm @ \ the file handle Call CreateFileMapping \ return=handle handl=NULL=error dup 0= if drop mm @ close-file drop true mm mfile-init exit then mm >mfile-map-object ! \ SIZE_T dwNumberOfBytesToMap filesize mapsize ?dup if umin then 0.0 \ DWORD dwFileOffsetLow, \ DWORD dwFileOffsetHigh, FILE_MAP_READ \ DWORD dwDesiredAccess, mm >mfile-map-object @ \ HANDLE hFileMappingObject, call MapViewOfFile ?dup if \ maping address dup mm >mfile-map-abs-adr ! abs>rel filesize mapsize ?dup if umin then false exit then \ Call GetLastError drop \ cr ." Map-View Error: " . true mm close-mfile drop mm mfile-init ; : open-mfile ( a n mm -- adr len false / true ) \ true=error 0 %open-mfile ; mfile tmp-mfile in-system : t ( -- ) cls s" c:\autoexec.bat" tmp-mfile open-mfile if ." error" cr else type cr then tmp-mfile close-mfile drop ; in-application