From c779cd0d3fb17238564e7bd5a336dc7a663eb9bb Mon Sep 17 00:00:00 2001 From: slederer Date: Sun, 2 Feb 2025 01:18:01 +0100 Subject: [PATCH] stdlib: add nointr procedure stdlib: give PExec2 and PExec3 more sensible names pcomp: increase heap size --- lib/stdlib.inc | 5 +++-- lib/stdlib.pas | 15 +++++++++++++-- pcomp/pcomp.pas | 2 +- progs/shell.pas | 10 +++++----- 4 files changed, 22 insertions(+), 10 deletions(-) diff --git a/lib/stdlib.inc b/lib/stdlib.inc index 62eb8fc..e0b08a7 100644 --- a/lib/stdlib.inc +++ b/lib/stdlib.inc @@ -240,6 +240,7 @@ procedure freadreal(var v:real;var f:file); external; procedure openchannel(name:filenamestr; var f:file; mode:filemode; var error:integer); external; procedure open(var f:file; name:pathnamestr; mode: filemode); external; procedure noecho(var f:file; noecho:boolean; var old:boolean); external; +procedure nointr(var f:file; aBool:boolean; var old:boolean); external; procedure intstr(v:integer; fieldWith:integer; var rbuf:string); external; @@ -269,8 +270,8 @@ procedure TextDefault; external; procedure PTerm; external; (* from runtime.s *) procedure PExec(prgfile:pathnamestr; var args:PArgVec; argCount:integer;var error:integer); external; -procedure PExec2(prgfile:pathnamestr; arg1:string; var error:integer); external; -procedure PExec3(prgfile:pathnamestr; arg1, arg2:string; var error:integer); external; +procedure PExec1(prgfile:pathnamestr; arg1:string; var error:integer); external; +procedure PExec2(prgfile:pathnamestr; arg1, arg2:string; var error:integer); external; function ParamStr(i:integer):string; external; function ParamCount():integer; external; diff --git a/lib/stdlib.pas b/lib/stdlib.pas index 945ece9..a57ba1c 100644 --- a/lib/stdlib.pas +++ b/lib/stdlib.pas @@ -2563,6 +2563,16 @@ begin end; end; +procedure nointr(var f:file;aBool:boolean;var old:boolean); +begin + if f.typ <> IOChannel then + fileerror(f, IOInvalidOp) + else + begin + old := f.nointr; + f.nointr := nointr; + end; +end; (* implementation of Xorshift algorithm by George Marsaglia, see: Marsaglia, George (July 2003). @@ -2599,6 +2609,7 @@ begin if ord(aChar) <= ord('z') then upcase := chr(ord(aChar) - 32) else + upcase := aChar else upcase := aChar; end; @@ -2664,14 +2675,14 @@ begin end; end; -procedure PExec2(prgfile:pathnamestr; arg1:string; var error:integer); +procedure PExec1(prgfile:pathnamestr; arg1:string; var error:integer); var args:PArgVec; begin args[0] := arg1; PExec(prgfile, args, 1, error); end; -procedure PExec3(prgfile:pathnamestr; arg1, arg2:string; var error:integer); +procedure PExec2(prgfile:pathnamestr; arg1, arg2:string; var error:integer); var args:PArgVec; begin args[0] := arg1; diff --git a/pcomp/pcomp.pas b/pcomp/pcomp.pas index 8936f7a..a3e4986 100644 --- a/pcomp/pcomp.pas +++ b/pcomp/pcomp.pas @@ -1,5 +1,5 @@ (* Copyright 2021-2024 Sebastian Lederer. See the file LICENSE.md for details *) -{$H384} +{$H600} {$S64} program PascalCompiler; {$R+} diff --git a/progs/shell.pas b/progs/shell.pas index 610dcfe..6423b3f 100644 --- a/progs/shell.pas +++ b/progs/shell.pas @@ -324,7 +324,7 @@ begin PExec(EDITORPROG, args, 3, error); end else - PExec2(EDITORPROG, ShellWorkFile, error); + PExec1(EDITORPROG, ShellWorkFile, error); writeln('PExec error ', error); end; @@ -334,7 +334,7 @@ var filename:filenamestr; begin requireWorkfile; filename := replaceExtension(ShellWorkFile, '.s'); - PExec2(ASMPROG, filename, error); + PExec1(ASMPROG, filename, error); writeln('PExec error ', error); end; @@ -344,7 +344,7 @@ var filename:filenamestr; begin requireWorkfile; filename := replaceExtension(ShellWorkFile, '.pas'); - PExec3(COMPILERPROG, '-S', filename, error); + PExec2(COMPILERPROG, '-S', filename, error); writeln('PExec error ', error); end; @@ -354,7 +354,7 @@ var filename:filenamestr; begin requireWorkfile; filename := replaceExtension(ShellWorkFile, '.pas'); - PExec2(COMPILERPROG, filename, error); + PExec1(COMPILERPROG, filename, error); writeln('PExec error ', error); end; @@ -373,7 +373,7 @@ end; procedure krunch; var error:integer; begin - PExec2(RECLAIMPROG, DefaultVolume, error); + PExec1(RECLAIMPROG, DefaultVolume, error); writeln('PExec error ', error); end;