From ab57b5ce7a518ba5fe2583c04e41109e81f68f7b Mon Sep 17 00:00:00 2001 From: slederer Date: Sat, 9 Nov 2024 00:54:57 +0100 Subject: [PATCH] sasm: add INCBIN meta directive --- pcomp/sasm.pas | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/pcomp/sasm.pas b/pcomp/sasm.pas index 8d63792..077eebc 100644 --- a/pcomp/sasm.pas +++ b/pcomp/sasm.pas @@ -2041,9 +2041,32 @@ begin errorExit2('Unrecognized directive', lastToken.tokenText); end; +procedure readImage(filename:string;size:integer); +var f:InputFileType; + c:char; + i:integer; +begin + pc := pc + size; + bytesCount := bytesCount + size; + + if pass = 2 then + begin + openFileWithDefault(f, filename); + + for i := 1 to size do + begin + read(f,c); + write(outfile,c); + end; + + close(f); + end; +end; + procedure parseMetaDirective; var filename:string; sym:TreeDataRef; + size:integer; begin readNextToken; if lastToken.tokenText = '%INCLUDE' then @@ -2071,6 +2094,14 @@ begin errorExit2('Symbol expected', ''); readNextToken; end + else + if lastToken.tokenText = '%INCBIN' then + begin + filename := curToken.tokenText; + readNextToken; + size := parseExpression; + readImage(filename, size); + end else errorExit2('Invalid meta directive', lastToken.tokenText); end;