A36 stuff
This commit is contained in:
parent
7ffca01cdb
commit
9909d064a5
|
@ -354,7 +354,7 @@ Var
|
||||||
Begin
|
Begin
|
||||||
If Not WasOpened Then
|
If Not WasOpened Then
|
||||||
If Shadow Then
|
If Shadow Then
|
||||||
Screen.GetScreenImage(X1, Y1, X2 + 2{3}, Y2 + 1, Image)
|
Screen.GetScreenImage(X1, Y1, X2 + 2, Y2 + 1, Image)
|
||||||
Else
|
Else
|
||||||
Screen.GetScreenImage(X1, Y1, X2, Y2, Image);
|
Screen.GetScreenImage(X1, Y1, X2, Y2, Image);
|
||||||
|
|
||||||
|
@ -388,9 +388,9 @@ Begin
|
||||||
|
|
||||||
If Shadow Then Begin
|
If Shadow Then Begin
|
||||||
For A := Y1 + 1 to Y2 + 1 Do
|
For A := Y1 + 1 to Y2 + 1 Do
|
||||||
For B := X2 to X2 + 1 Do Begin
|
For B := X2 + 1 to X2 + 2 Do Begin
|
||||||
Ch := Screen.ReadCharXY(B, A);
|
Ch := Screen.ReadCharXY(B, A);
|
||||||
WriteXY (B + 1, A, ShadowAttr, Ch);
|
WriteXY (B, A, ShadowAttr, Ch);
|
||||||
End;
|
End;
|
||||||
|
|
||||||
A := Y2 + 1;
|
A := Y2 + 1;
|
||||||
|
|
|
@ -78,8 +78,6 @@ Type
|
||||||
HistoryULs : Word;
|
HistoryULs : Word;
|
||||||
HistoryULKB : LongInt;
|
HistoryULKB : LongInt;
|
||||||
HistoryHour : SmallInt;
|
HistoryHour : SmallInt;
|
||||||
// PromptFile : File of RecPrompt;
|
|
||||||
// Prompt : RecPrompt;
|
|
||||||
LastScanHadNew : Boolean;
|
LastScanHadNew : Boolean;
|
||||||
LastScanHadYou : Boolean;
|
LastScanHadYou : Boolean;
|
||||||
PromptData : Array[0..mysMaxThemeText] of Pointer;
|
PromptData : Array[0..mysMaxThemeText] of Pointer;
|
||||||
|
@ -96,6 +94,7 @@ Type
|
||||||
Function ElapsedTime : Integer;
|
Function ElapsedTime : Integer;
|
||||||
Function TimeLeft : Integer;
|
Function TimeLeft : Integer;
|
||||||
Function LoadThemeData (Str: String) : Boolean;
|
Function LoadThemeData (Str: String) : Boolean;
|
||||||
|
Procedure DisposeThemeData;
|
||||||
End;
|
End;
|
||||||
|
|
||||||
Var
|
Var
|
||||||
|
@ -153,6 +152,8 @@ End;
|
||||||
|
|
||||||
Destructor TBBSCore.Destroy;
|
Destructor TBBSCore.Destroy;
|
||||||
Begin
|
Begin
|
||||||
|
DisposeThemeData;
|
||||||
|
|
||||||
Pipe.Free;
|
Pipe.Free;
|
||||||
Msgs.Free;
|
Msgs.Free;
|
||||||
FileBase.Free;
|
FileBase.Free;
|
||||||
|
@ -160,8 +161,6 @@ Begin
|
||||||
User.Free;
|
User.Free;
|
||||||
IO.Free;
|
IO.Free;
|
||||||
|
|
||||||
// Close (PromptFile);
|
|
||||||
|
|
||||||
{$IFNDEF UNIX}
|
{$IFNDEF UNIX}
|
||||||
Client.Free;
|
Client.Free;
|
||||||
{$ENDIF}
|
{$ENDIF}
|
||||||
|
@ -339,21 +338,19 @@ Begin
|
||||||
End;
|
End;
|
||||||
End;
|
End;
|
||||||
|
|
||||||
|
Procedure TBBSCore.DisposeThemeData;
|
||||||
|
Var
|
||||||
|
Count : LongInt;
|
||||||
|
Begin
|
||||||
|
For Count := mysMaxThemeText DownTo 0 Do Begin
|
||||||
|
If Assigned(PromptData[Count]) Then
|
||||||
|
FreeMem(PromptData[Count]);
|
||||||
|
|
||||||
|
PromptData[Count] := NIL;
|
||||||
|
End;
|
||||||
|
End;
|
||||||
|
|
||||||
Function TBBSCore.LoadThemeData (Str: String) : Boolean;
|
Function TBBSCore.LoadThemeData (Str: String) : Boolean;
|
||||||
|
|
||||||
Procedure DisposeThemeData;
|
|
||||||
Var
|
|
||||||
Count : LongInt;
|
|
||||||
Begin
|
|
||||||
For Count := mysMaxThemeText DownTo 0 Do Begin
|
|
||||||
If Assigned(PromptData[Count]) Then
|
|
||||||
FreeMem(PromptData[Count]);
|
|
||||||
|
|
||||||
PromptData[Count] := NIL;
|
|
||||||
End;
|
|
||||||
End;
|
|
||||||
|
|
||||||
Var
|
Var
|
||||||
Count : LongInt;
|
Count : LongInt;
|
||||||
PromptFile : Text;
|
PromptFile : Text;
|
||||||
|
@ -429,77 +426,4 @@ Begin
|
||||||
If Not Result Then Halt(1);
|
If Not Result Then Halt(1);
|
||||||
End;
|
End;
|
||||||
|
|
||||||
(*
|
|
||||||
Function TBBSCore.GetPrompt (N : Word) : String;
|
|
||||||
Begin
|
|
||||||
{$I-}
|
|
||||||
Seek (PromptFile, N);
|
|
||||||
Read (PromptFile, Prompt);
|
|
||||||
{$I+}
|
|
||||||
|
|
||||||
If IoResult <> 0 Then Begin
|
|
||||||
FileMode := 66;
|
|
||||||
|
|
||||||
{$I-}
|
|
||||||
Assign (PromptFile, Config.DataPath + Theme.FileName + '.thm');
|
|
||||||
Reset (PromptFile);
|
|
||||||
Seek (PromptFile, N);
|
|
||||||
Read (PromptFile, Prompt);
|
|
||||||
{$I+}
|
|
||||||
|
|
||||||
If IoResult <> 0 Then Begin
|
|
||||||
io.OutFull ('|CR|12Error reading prompt ' + strI2S(N) + '|DE|DE');
|
|
||||||
SystemLog ('Error reading prompt ' + strI2S(N));
|
|
||||||
Halt (1);
|
|
||||||
End;
|
|
||||||
End;
|
|
||||||
|
|
||||||
If Prompt[1] = '@' Then Begin
|
|
||||||
io.OutFile (Copy(Prompt, 2, Length(Prompt)), True, 0);
|
|
||||||
Prompt := '';
|
|
||||||
End Else
|
|
||||||
If Prompt[1] = '!' Then Begin
|
|
||||||
ExecuteMPL (NIL, Copy(Prompt, 2, Length(Prompt)));
|
|
||||||
Prompt := '';
|
|
||||||
End;
|
|
||||||
|
|
||||||
Result := Prompt;
|
|
||||||
End;
|
|
||||||
|
|
||||||
Function TBBSCore.LoadThemeData (Str: String) : Boolean;
|
|
||||||
Var
|
|
||||||
TempTheme : RecTheme;
|
|
||||||
Begin
|
|
||||||
Result := False;
|
|
||||||
|
|
||||||
Reset (ThemeFile);
|
|
||||||
|
|
||||||
While Not Eof(ThemeFile) Do Begin
|
|
||||||
Read (ThemeFile, TempTheme);
|
|
||||||
|
|
||||||
{$IFDEF FS_SENSITIVE}
|
|
||||||
If TempTheme.FileName = Str Then Begin
|
|
||||||
{$ELSE}
|
|
||||||
If strUpper(TempTheme.FileName) = strUpper(Str) Then Begin
|
|
||||||
{$ENDIF}
|
|
||||||
If Not FileExist(Config.DataPath + TempTheme.FileName + '.thm') Then Break;
|
|
||||||
|
|
||||||
{$I-} Close (PromptFile); {$I+}
|
|
||||||
|
|
||||||
If IoResult <> 0 Then;
|
|
||||||
|
|
||||||
Assign (PromptFile, Config.DataPath + TempTheme.FileName + '.thm');
|
|
||||||
|
|
||||||
Result := ioReset(PromptFile, SizeOf(RecPrompt), fmRWDN);
|
|
||||||
|
|
||||||
Break;
|
|
||||||
End;
|
|
||||||
End;
|
|
||||||
|
|
||||||
Close (ThemeFile);
|
|
||||||
|
|
||||||
If Result Then Theme := TempTheme;
|
|
||||||
End;
|
|
||||||
*)
|
|
||||||
|
|
||||||
End.
|
End.
|
||||||
|
|
|
@ -2866,6 +2866,9 @@ Begin
|
||||||
{$I-} Reset (DataFile, 1); {$I+}
|
{$I-} Reset (DataFile, 1); {$I+}
|
||||||
If IoResult <> 0 Then ReWrite (DataFile, 1);
|
If IoResult <> 0 Then ReWrite (DataFile, 1);
|
||||||
|
|
||||||
|
If Mode = 1 Then
|
||||||
|
Session.io.OutFile(FBase.DispFile, True, 0);
|
||||||
|
|
||||||
Result := 0;
|
Result := 0;
|
||||||
CurPage := 0;
|
CurPage := 0;
|
||||||
TopPage := 0;
|
TopPage := 0;
|
||||||
|
|
|
@ -2246,6 +2246,7 @@ Begin
|
||||||
If TempChar = #0 Then TempChar := ' ';
|
If TempChar = #0 Then TempChar := ' ';
|
||||||
|
|
||||||
Session.io.BufAddChar(TempChar);
|
Session.io.BufAddChar(TempChar);
|
||||||
|
|
||||||
Inc (BufPos, 2);
|
Inc (BufPos, 2);
|
||||||
End;
|
End;
|
||||||
End;
|
End;
|
||||||
|
|
|
@ -259,59 +259,70 @@ Begin
|
||||||
AddProc ({$IFDEF MPLPARSER} 'freadrec', {$ENDIF} 'Fx', iNone); // 92
|
AddProc ({$IFDEF MPLPARSER} 'freadrec', {$ENDIF} 'Fx', iNone); // 92
|
||||||
AddProc ({$IFDEF MPLPARSER} 'real2str', {$ENDIF} 'rb', iString); // 93
|
AddProc ({$IFDEF MPLPARSER} 'real2str', {$ENDIF} 'rb', iString); // 93
|
||||||
AddProc ({$IFDEF MPLPARSER} 'abs', {$ENDIF} 'l', iLongInt); // 94
|
AddProc ({$IFDEF MPLPARSER} 'abs', {$ENDIF} 'l', iLongInt); // 94
|
||||||
|
AddProc ({$IFDEF MPLPARSER} 'classcreate', {$ENDIF} 'Ls', iNone); // 95
|
||||||
|
AddProc ({$IFDEF MPLPARSER} 'classfree', {$ENDIF} 'l', iNone); // 96
|
||||||
|
|
||||||
IW := 500; // BEGIN BBS-SPECIFIC STUFF
|
IW := 500; // BEGIN BBS-SPECIFIC STUFF
|
||||||
|
|
||||||
AddProc ({$IFDEF MPLPARSER} 'input', {$ENDIF} 'bbbs', iString); // 500
|
AddProc ({$IFDEF MPLPARSER} 'input', {$ENDIF} 'bbbs', iString); // 500
|
||||||
AddProc ({$IFDEF MPLPARSER} 'getuser', {$ENDIF} 'l', iBool); // 501
|
AddProc ({$IFDEF MPLPARSER} 'getuser', {$ENDIF} 'l', iBool); // 501
|
||||||
AddProc ({$IFDEF MPLPARSER} 'onekey', {$ENDIF} 'so', iChar); // 502
|
AddProc ({$IFDEF MPLPARSER} 'onekey', {$ENDIF} 'so', iChar); // 502
|
||||||
AddProc ({$IFDEF MPLPARSER} 'getthisuser', {$ENDIF} '', iNone); // 503
|
AddProc ({$IFDEF MPLPARSER} 'getthisuser', {$ENDIF} '', iNone); // 503
|
||||||
AddProc ({$IFDEF MPLPARSER} 'inputyn', {$ENDIF} 's', iBool); // 504
|
AddProc ({$IFDEF MPLPARSER} 'inputyn', {$ENDIF} 's', iBool); // 504
|
||||||
AddProc ({$IFDEF MPLPARSER} 'inputny', {$ENDIF} 's', iBool); // 505
|
AddProc ({$IFDEF MPLPARSER} 'inputny', {$ENDIF} 's', iBool); // 505
|
||||||
AddProc ({$IFDEF MPLPARSER} 'dispfile', {$ENDIF} 's', iBool); // 506
|
AddProc ({$IFDEF MPLPARSER} 'dispfile', {$ENDIF} 's', iBool); // 506
|
||||||
AddProc ({$IFDEF MPLPARSER} 'filecopy', {$ENDIF} 'ss', iBool); // 507
|
AddProc ({$IFDEF MPLPARSER} 'filecopy', {$ENDIF} 'ss', iBool); // 507
|
||||||
AddProc ({$IFDEF MPLPARSER} 'menucmd', {$ENDIF} 'ss', iNone); // 508
|
AddProc ({$IFDEF MPLPARSER} 'menucmd', {$ENDIF} 'ss', iNone); // 508
|
||||||
AddProc ({$IFDEF MPLPARSER} 'stuffkey', {$ENDIF} 's', iNone); // 509
|
AddProc ({$IFDEF MPLPARSER} 'stuffkey', {$ENDIF} 's', iNone); // 509
|
||||||
AddProc ({$IFDEF MPLPARSER} 'acs', {$ENDIF} 's', iBool); // 510
|
AddProc ({$IFDEF MPLPARSER} 'acs', {$ENDIF} 's', iBool); // 510
|
||||||
AddProc ({$IFDEF MPLPARSER} 'upuser', {$ENDIF} 'i', iNone); // 511
|
AddProc ({$IFDEF MPLPARSER} 'upuser', {$ENDIF} 'i', iNone); // 511
|
||||||
AddProc ({$IFDEF MPLPARSER} 'setusertime', {$ENDIF} 'i', iNone); // 512
|
AddProc ({$IFDEF MPLPARSER} 'setusertime', {$ENDIF} 'i', iNone); // 512
|
||||||
AddProc ({$IFDEF MPLPARSER} 'hangup', {$ENDIF} '', iNone); // 513
|
AddProc ({$IFDEF MPLPARSER} 'hangup', {$ENDIF} '', iNone); // 513
|
||||||
AddProc ({$IFDEF MPLPARSER} 'getmbase', {$ENDIF} 'l', iBool); // 514
|
AddProc ({$IFDEF MPLPARSER} 'getmbase', {$ENDIF} 'l', iBool); // 514
|
||||||
AddProc ({$IFDEF MPLPARSER} 'getprompt', {$ENDIF} 'l', iString); // 515
|
AddProc ({$IFDEF MPLPARSER} 'getprompt', {$ENDIF} 'l', iString); // 515
|
||||||
AddProc ({$IFDEF MPLPARSER} 'getmgroup', {$ENDIF} 'l', iBool); // 516
|
AddProc ({$IFDEF MPLPARSER} 'getmgroup', {$ENDIF} 'l', iBool); // 516
|
||||||
AddProc ({$IFDEF MPLPARSER} 'purgeinput', {$ENDIF} '', iNone); // 517
|
AddProc ({$IFDEF MPLPARSER} 'purgeinput', {$ENDIF} '', iNone); // 517
|
||||||
AddProc ({$IFDEF MPLPARSER} 'getfbase', {$ENDIF} 'l', iBool); // 518
|
AddProc ({$IFDEF MPLPARSER} 'getfbase', {$ENDIF} 'l', iBool); // 518
|
||||||
AddProc ({$IFDEF MPLPARSER} 'getfgroup', {$ENDIF} 'l', iBool); // 519
|
AddProc ({$IFDEF MPLPARSER} 'getfgroup', {$ENDIF} 'l', iBool); // 519
|
||||||
AddProc ({$IFDEF MPLPARSER} 'sysoplog', {$ENDIF} 's', iNone); // 520
|
AddProc ({$IFDEF MPLPARSER} 'sysoplog', {$ENDIF} 's', iNone); // 520
|
||||||
AddProc ({$IFDEF MPLPARSER} 'movex', {$ENDIF} 'b', iNone); // 521
|
AddProc ({$IFDEF MPLPARSER} 'movex', {$ENDIF} 'b', iNone); // 521
|
||||||
AddProc ({$IFDEF MPLPARSER} 'movey', {$ENDIF} 'b', iNone); // 522
|
AddProc ({$IFDEF MPLPARSER} 'movey', {$ENDIF} 'b', iNone); // 522
|
||||||
AddProc ({$IFDEF MPLPARSER} 'writepipe', {$ENDIF} 's', iNone); // 523
|
AddProc ({$IFDEF MPLPARSER} 'writepipe', {$ENDIF} 's', iNone); // 523
|
||||||
AddProc ({$IFDEF MPLPARSER} 'writepipeln', {$ENDIF} 's', iNone); // 524
|
AddProc ({$IFDEF MPLPARSER} 'writepipeln', {$ENDIF} 's', iNone); // 524
|
||||||
AddProc ({$IFDEF MPLPARSER} 'writeraw', {$ENDIF} 's', iNone); // 525
|
AddProc ({$IFDEF MPLPARSER} 'writeraw', {$ENDIF} 's', iNone); // 525
|
||||||
AddProc ({$IFDEF MPLPARSER} 'writerawln', {$ENDIF} 's', iNone); // 526
|
AddProc ({$IFDEF MPLPARSER} 'writerawln', {$ENDIF} 's', iNone); // 526
|
||||||
AddProc ({$IFDEF MPLPARSER} 'mci2str', {$ENDIF} 's', iString); // 527
|
AddProc ({$IFDEF MPLPARSER} 'mci2str', {$ENDIF} 's', iString); // 527
|
||||||
AddProc ({$IFDEF MPLPARSER} 'getusertime', {$ENDIF} '', iInteger); // 528
|
AddProc ({$IFDEF MPLPARSER} 'getusertime', {$ENDIF} '', iInteger); // 528
|
||||||
AddProc ({$IFDEF MPLPARSER} 'getscreeninfo', {$ENDIF} 'bBBB', iNone); // 529
|
AddProc ({$IFDEF MPLPARSER} 'getscreeninfo', {$ENDIF} 'bBBB', iNone); // 529
|
||||||
AddProc ({$IFDEF MPLPARSER} 'setprompt', {$ENDIF} 'ls', iNone); // 530
|
AddProc ({$IFDEF MPLPARSER} 'setprompt', {$ENDIF} 'ls', iNone); // 530
|
||||||
AddProc ({$IFDEF MPLPARSER} 'moreprompt', {$ENDIF} '', iChar); // 531
|
AddProc ({$IFDEF MPLPARSER} 'moreprompt', {$ENDIF} '', iChar); // 531
|
||||||
AddProc ({$IFDEF MPLPARSER} 'pause', {$ENDIF} '', iNone); // 532
|
AddProc ({$IFDEF MPLPARSER} 'pause', {$ENDIF} '', iNone); // 532
|
||||||
AddProc ({$IFDEF MPLPARSER} 'setpromptinfo', {$ENDIF} 'bs', iNone); // 533
|
AddProc ({$IFDEF MPLPARSER} 'setpromptinfo', {$ENDIF} 'bs', iNone); // 533
|
||||||
AddProc ({$IFDEF MPLPARSER} 'bufflush', {$ENDIF} '', iNone); // 534
|
AddProc ({$IFDEF MPLPARSER} 'bufflush', {$ENDIF} '', iNone); // 534
|
||||||
AddProc ({$IFDEF MPLPARSER} 'strmci', {$ENDIF} 's', iString); // 535
|
AddProc ({$IFDEF MPLPARSER} 'strmci', {$ENDIF} 's', iString); // 535
|
||||||
AddProc ({$IFDEF MPLPARSER} 'getcharxy', {$ENDIF} 'bb', iChar); // 536
|
AddProc ({$IFDEF MPLPARSER} 'getcharxy', {$ENDIF} 'bb', iChar); // 536
|
||||||
AddProc ({$IFDEF MPLPARSER} 'getattrxy', {$ENDIF} 'bb', iByte); // 537
|
AddProc ({$IFDEF MPLPARSER} 'getattrxy', {$ENDIF} 'bb', iByte); // 537
|
||||||
AddProc ({$IFDEF MPLPARSER} 'putthisuser', {$ENDIF} '', iNone); // 538
|
AddProc ({$IFDEF MPLPARSER} 'putthisuser', {$ENDIF} '', iNone); // 538
|
||||||
AddProc ({$IFDEF MPLPARSER} 'putuser', {$ENDIF} 'l', iNone); // 539
|
AddProc ({$IFDEF MPLPARSER} 'putuser', {$ENDIF} 'l', iNone); // 539
|
||||||
AddProc ({$IFDEF MPLPARSER} 'isuser', {$ENDIF} 's', iBool); // 540
|
AddProc ({$IFDEF MPLPARSER} 'isuser', {$ENDIF} 's', iBool); // 540
|
||||||
AddProc ({$IFDEF MPLPARSER} 'getmbstats', {$ENDIF} 'looLLL', iBool); // 541
|
AddProc ({$IFDEF MPLPARSER} 'getmbstats', {$ENDIF} 'looLLL', iBool); // 541
|
||||||
AddProc ({$IFDEF MPLPARSER} 'writexy', {$ENDIF} 'bbbs', iNone); // 542
|
AddProc ({$IFDEF MPLPARSER} 'writexy', {$ENDIF} 'bbbs', iNone); // 542
|
||||||
AddProc ({$IFDEF MPLPARSER} 'writexypipe', {$ENDIF} 'bbbis', iNone); // 543
|
AddProc ({$IFDEF MPLPARSER} 'writexypipe', {$ENDIF} 'bbbis', iNone); // 543
|
||||||
AddProc ({$IFDEF MPLPARSER} 'msgeditor', {$ENDIF} 'iIiiosS', iBool); // 544
|
AddProc ({$IFDEF MPLPARSER} 'msgeditor', {$ENDIF} 'iIiiosS', iBool); // 544
|
||||||
AddProc ({$IFDEF MPLPARSER} 'msgeditget', {$ENDIF} 'i', iString); // 545
|
AddProc ({$IFDEF MPLPARSER} 'msgeditget', {$ENDIF} 'i', iString); // 545
|
||||||
AddProc ({$IFDEF MPLPARSER} 'msgeditset', {$ENDIF} 'is', iNone); // 546
|
AddProc ({$IFDEF MPLPARSER} 'msgeditset', {$ENDIF} 'is', iNone); // 546
|
||||||
AddProc ({$IFDEF MPLPARSER} 'onekeyrange', {$ENDIF} 'sll', iChar); // 547
|
AddProc ({$IFDEF MPLPARSER} 'onekeyrange', {$ENDIF} 'sll', iChar); // 547
|
||||||
AddProc ({$IFDEF MPLPARSER} 'getmbasetotal', {$ENDIF} 'o', iLongInt); // 548
|
AddProc ({$IFDEF MPLPARSER} 'getmbasetotal', {$ENDIF} 'o', iLongInt); // 548
|
||||||
AddProc ({$IFDEF MPLPARSER} 'getmailstats', {$ENDIF} 'LL', iNone); // 549
|
AddProc ({$IFDEF MPLPARSER} 'getmailstats', {$ENDIF} 'LL', iNone); // 549
|
||||||
|
AddProc ({$IFDEF MPLPARSER} 'boxopen', {$ENDIF} 'lbbbb', iNone); // 550
|
||||||
|
AddProc ({$IFDEF MPLPARSER} 'boxclose', {$ENDIF} 'l', iNone); // 551
|
||||||
|
AddProc ({$IFDEF MPLPARSER} 'boxheader', {$ENDIF} 'lbbs', iNone); // 552
|
||||||
|
AddProc ({$IFDEF MPLPARSER} 'boxoptions', {$ENDIF} 'lbobbbbob', iNone); // 553
|
||||||
|
AddProc ({$IFDEF MPLPARSER} 'inputstring', {$ENDIF} 'lbbbbbs', iString); // 554
|
||||||
|
AddProc ({$IFDEF MPLPARSER} 'inputoptions', {$ENDIF} 'lbbcss', iNone); // 555
|
||||||
|
AddProc ({$IFDEF MPLPARSER} 'inputexit', {$ENDIF} 'l', iChar); // 556
|
||||||
|
AddProc ({$IFDEF MPLPARSER} 'inputnumber', {$ENDIF} 'lbbbblll', iLongInt); // 557
|
||||||
|
AddProc ({$IFDEF MPLPARSER} 'inputenter', {$ENDIF} 'lbbbs', iBool);
|
||||||
|
|
||||||
{ END OF PROCEDURE DEFINITIONS }
|
{ END OF PROCEDURE DEFINITIONS }
|
||||||
|
|
||||||
|
|
|
@ -13,8 +13,18 @@ Uses
|
||||||
|
|
||||||
Const
|
Const
|
||||||
mplExecuteBuffer = 8 * 1024;
|
mplExecuteBuffer = 8 * 1024;
|
||||||
|
mplMaxClassStack = 50;
|
||||||
|
|
||||||
|
Const
|
||||||
|
mplClass_Box = 1;
|
||||||
|
mplClass_Input = 2;
|
||||||
|
|
||||||
Type
|
Type
|
||||||
|
TClassStack = Record
|
||||||
|
ClassPtr : Pointer;
|
||||||
|
ClassType : Byte;
|
||||||
|
End;
|
||||||
|
|
||||||
TInterpEngine = Class
|
TInterpEngine = Class
|
||||||
Owner : Pointer;
|
Owner : Pointer;
|
||||||
ErrStr : String;
|
ErrStr : String;
|
||||||
|
@ -22,8 +32,8 @@ Type
|
||||||
DataFile : TFileBuffer;
|
DataFile : TFileBuffer;
|
||||||
CurVarNum : Word;
|
CurVarNum : Word;
|
||||||
CurVarID : Word;
|
CurVarID : Word;
|
||||||
// CurClassNum : Word;
|
|
||||||
VarData : VarDataRec;
|
VarData : VarDataRec;
|
||||||
|
ClassData : Array[1..mplMaxClassStack] of TClassStack;
|
||||||
Ch : Char;
|
Ch : Char;
|
||||||
W : Word;
|
W : Word;
|
||||||
IoError : LongInt;
|
IoError : LongInt;
|
||||||
|
@ -102,6 +112,10 @@ Type
|
||||||
Procedure GetFGroupVars (Var G: RecGroup);
|
Procedure GetFGroupVars (Var G: RecGroup);
|
||||||
Function GetFGroupRecord (Num: LongInt) : Boolean;
|
Function GetFGroupRecord (Num: LongInt) : Boolean;
|
||||||
|
|
||||||
|
Procedure ClassCreate (Var Num: LongInt; Str: String);
|
||||||
|
Function ClassValid (Num: LongInt; cType: Byte) : Boolean;
|
||||||
|
Procedure ClassFree (Num: LongInt);
|
||||||
|
|
||||||
Constructor Create (O: Pointer);
|
Constructor Create (O: Pointer);
|
||||||
Destructor Destroy; Override;
|
Destructor Destroy; Override;
|
||||||
Function Execute (FN: String) : Byte;
|
Function Execute (FN: String) : Byte;
|
||||||
|
@ -123,7 +137,8 @@ Uses
|
||||||
BBS_Core,
|
BBS_Core,
|
||||||
BBS_IO,
|
BBS_IO,
|
||||||
BBS_General,
|
BBS_General,
|
||||||
BBS_Ansi_MenuBox;
|
BBS_Ansi_MenuBox,
|
||||||
|
BBS_Ansi_MenuInput;
|
||||||
|
|
||||||
{$I MPL_COMMON.PAS}
|
{$I MPL_COMMON.PAS}
|
||||||
|
|
||||||
|
@ -342,6 +357,8 @@ Begin
|
||||||
End;
|
End;
|
||||||
|
|
||||||
Constructor TInterpEngine.Create (O: Pointer);
|
Constructor TInterpEngine.Create (O: Pointer);
|
||||||
|
Var
|
||||||
|
Count : LongInt;
|
||||||
Begin
|
Begin
|
||||||
Inherited Create;
|
Inherited Create;
|
||||||
|
|
||||||
|
@ -351,6 +368,11 @@ Begin
|
||||||
Ch := #0;
|
Ch := #0;
|
||||||
W := 0;
|
W := 0;
|
||||||
|
|
||||||
|
For Count := 1 to mplMaxClassStack Do Begin
|
||||||
|
ClassData[Count].ClassPtr := NIL;
|
||||||
|
ClassData[Count].ClassType := 0;
|
||||||
|
End;
|
||||||
|
|
||||||
{$IFDEF LOGGING}
|
{$IFDEF LOGGING}
|
||||||
Depth := 0;
|
Depth := 0;
|
||||||
{$ENDIF}
|
{$ENDIF}
|
||||||
|
@ -369,6 +391,12 @@ Begin
|
||||||
|
|
||||||
CurVarNum := 0;
|
CurVarNum := 0;
|
||||||
|
|
||||||
|
For Count := 1 to mplMaxClassStack Do
|
||||||
|
If Assigned(ClassData[Count].ClassPtr) Then
|
||||||
|
Case ClassData[Count].ClassType of
|
||||||
|
mplClass_Box : TAnsiMenuBox(ClassData[Count].ClassPtr).Free;
|
||||||
|
End;
|
||||||
|
|
||||||
Inherited Destroy;
|
Inherited Destroy;
|
||||||
End;
|
End;
|
||||||
|
|
||||||
|
@ -384,6 +412,9 @@ Begin
|
||||||
mpxBadInit : Result := 'Unable to initialize variable';
|
mpxBadInit : Result := 'Unable to initialize variable';
|
||||||
mpxDivisionByZero : Result := 'Division by zero';
|
mpxDivisionByZero : Result := 'Division by zero';
|
||||||
mpxMathematical : Result := 'Parsing error';
|
mpxMathematical : Result := 'Parsing error';
|
||||||
|
mpxTooManyClasses : Result := 'Too many open classes';
|
||||||
|
mpxInvalidClass : Result := 'Invalid class type: ' + ErrStr;
|
||||||
|
mpxInvalidClassH : Result := 'Invalid class handle';
|
||||||
End;
|
End;
|
||||||
End;
|
End;
|
||||||
|
|
||||||
|
@ -1209,6 +1240,60 @@ Begin
|
||||||
IoError := IoResult;
|
IoError := IoResult;
|
||||||
End;
|
End;
|
||||||
|
|
||||||
|
Procedure TInterpEngine.ClassCreate (Var Num: LongInt; Str: String);
|
||||||
|
Var
|
||||||
|
Count : LongInt;
|
||||||
|
Begin
|
||||||
|
Num := -1;
|
||||||
|
|
||||||
|
For Count := 1 to mplMaxClassStack Do
|
||||||
|
If Not Assigned(ClassData[Count].ClassPtr) Then Begin
|
||||||
|
Num := Count;
|
||||||
|
|
||||||
|
Break;
|
||||||
|
End;
|
||||||
|
|
||||||
|
If Num = -1 Then Begin
|
||||||
|
Error(mpxTooManyClasses, '');
|
||||||
|
|
||||||
|
Exit;
|
||||||
|
End;
|
||||||
|
|
||||||
|
If Str = 'BOX' Then Begin
|
||||||
|
ClassData[Num].ClassPtr := TAnsiMenuBox.Create;
|
||||||
|
ClassData[Num].ClassType := mplClass_Box;
|
||||||
|
End Else
|
||||||
|
If Str = 'INPUT' Then Begin
|
||||||
|
ClassData[Num].ClassPtr := TAnsiMenuInput.Create;
|
||||||
|
ClassData[Num].ClassType := mplClass_Input;
|
||||||
|
End Else
|
||||||
|
Error(mpxInvalidClass, Str);
|
||||||
|
End;
|
||||||
|
|
||||||
|
Procedure TInterpEngine.ClassFree (Num: LongInt);
|
||||||
|
Begin
|
||||||
|
If (Num > 0) and (Num <= mplMaxClassStack) Then
|
||||||
|
If Assigned(ClassData[Num].ClassPtr) Then Begin
|
||||||
|
Case ClassData[Num].ClassType of
|
||||||
|
mplClass_Box : TAnsiMenuBox(ClassData[Num].ClassPtr).Free;
|
||||||
|
mplClass_Input : TAnsiMenuInput(ClassData[Num].ClassPtr).Free;
|
||||||
|
End;
|
||||||
|
|
||||||
|
ClassData[Num].ClassPtr := NIL;
|
||||||
|
End;
|
||||||
|
End;
|
||||||
|
|
||||||
|
Function TInterpEngine.ClassValid (Num: LongInt; cType: Byte) : Boolean;
|
||||||
|
Begin
|
||||||
|
If Assigned(ClassData[Num].ClassPtr) and (ClassData[Num].ClassType = cType) Then
|
||||||
|
Result := True
|
||||||
|
Else Begin
|
||||||
|
Result := False;
|
||||||
|
|
||||||
|
Error(mpxInvalidClassH, '');
|
||||||
|
End;
|
||||||
|
End;
|
||||||
|
|
||||||
Function TInterpEngine.ExecuteProcedure (DP: Pointer) : TIdentTypes;
|
Function TInterpEngine.ExecuteProcedure (DP: Pointer) : TIdentTypes;
|
||||||
// okay... change this to:
|
// okay... change this to:
|
||||||
// array[1..mplmaxprocparams] of record
|
// array[1..mplmaxprocparams] of record
|
||||||
|
@ -1780,6 +1865,8 @@ Begin
|
||||||
TempLong := Abs(Param[1].L);
|
TempLong := Abs(Param[1].L);
|
||||||
Store (TempLong, 4);
|
Store (TempLong, 4);
|
||||||
End;
|
End;
|
||||||
|
95 : ClassCreate(LongInt(Pointer(Param[1].vData)^), strUpper(Param[2].S));
|
||||||
|
96 : ClassFree(Param[1].L);
|
||||||
500 : Begin
|
500 : Begin
|
||||||
TempStr := Session.io.GetInput(Param[1].B, Param[2].B, Param[3].B, Param[4].S);
|
TempStr := Session.io.GetInput(Param[1].B, Param[2].B, Param[3].B, Param[4].S);
|
||||||
Store (TempStr, 256);
|
Store (TempStr, 256);
|
||||||
|
@ -1947,6 +2034,48 @@ Begin
|
||||||
Store (TempLong, 4);
|
Store (TempLong, 4);
|
||||||
End;
|
End;
|
||||||
549 : Session.Msgs.GetMailStats (LongInt(Pointer(Param[1].vData)^), LongInt(Pointer(Param[2].vData)^));
|
549 : Session.Msgs.GetMailStats (LongInt(Pointer(Param[1].vData)^), LongInt(Pointer(Param[2].vData)^));
|
||||||
|
550 : If ClassValid(Param[1].L, mplClass_Box) Then
|
||||||
|
TAnsiMenuBox(ClassData[Param[1].L].ClassPtr).Open(Param[2].B, Param[3].B, Param[4].B, Param[5].B);
|
||||||
|
551 : If ClassValid(Param[1].L, mplClass_Box) Then
|
||||||
|
TAnsiMenuBox(ClassData[Param[1].L].ClassPtr).Close;
|
||||||
|
552 : If ClassValid(Param[1].L, mplClass_Box) Then Begin
|
||||||
|
TAnsiMenuBox(ClassData[Param[1].L].ClassPtr).HeadType := Param[2].B;
|
||||||
|
TAnsiMenuBox(ClassData[Param[1].L].ClassPtr).HeadAttr := Param[3].B;
|
||||||
|
TAnsiMenuBox(ClassData[Param[1].L].ClassPtr).Header := Param[4].S;
|
||||||
|
End;
|
||||||
|
553 : If ClassValid(Param[1].L, mplClass_Box) Then Begin
|
||||||
|
TAnsiMenuBox(ClassData[Param[1].L].ClassPtr).FrameType := Param[2].B;
|
||||||
|
TAnsiMenuBox(ClassData[Param[1].L].ClassPtr).Box3D := Param[3].O;
|
||||||
|
TAnsiMenuBox(ClassData[Param[1].L].ClassPtr).BoxAttr := Param[4].B;
|
||||||
|
TAnsiMenuBox(ClassData[Param[1].L].ClassPtr).BoxAttr2 := Param[5].B;
|
||||||
|
TAnsiMenuBox(ClassData[Param[1].L].ClassPtr).BoxAttr3 := Param[6].B;
|
||||||
|
TAnsiMenuBox(ClassData[Param[1].L].ClassPtr).BoxAttr4 := Param[7].B;
|
||||||
|
TAnsiMenuBox(ClassData[Param[1].L].ClassPtr).Shadow := Param[8].O;
|
||||||
|
TAnsiMenuBox(ClassData[Param[1].L].ClassPtr).ShadowAttr := Param[9].B;
|
||||||
|
End;
|
||||||
|
554 : If ClassValid(Param[1].L, mplClass_Input) Then Begin
|
||||||
|
TempStr := TAnsiMenuInput(ClassData[Param[1].L].ClassPtr).GetStr(Param[2].B, Param[3].B, Param[4].B, Param[5].B, Param[6].B, Param[7].S);
|
||||||
|
Store (TempStr, 255);
|
||||||
|
End;
|
||||||
|
555 : If ClassValid(Param[1].L, mplClass_Input) Then Begin
|
||||||
|
TAnsiMenuInput(ClassData[Param[1].L].ClassPtr).Attr := Param[2].B;
|
||||||
|
TAnsiMenuInput(ClassData[Param[1].L].ClassPtr).FillAttr := Param[3].B;
|
||||||
|
TAnsiMenuInput(ClassData[Param[1].L].ClassPtr).FillChar := Param[4].C;
|
||||||
|
TAnsiMenuInput(ClassData[Param[1].L].ClassPtr).LoChars := Param[5].S;
|
||||||
|
TAnsiMenuInput(ClassData[Param[1].L].ClassPtr).HiChars := Param[6].S;
|
||||||
|
End;
|
||||||
|
556 : If ClassValid(Param[1].L, mplClass_Input) Then Begin
|
||||||
|
TempChar := TAnsiMenuInput(ClassData[Param[1].L].ClassPtr).ExitCode;
|
||||||
|
Store (TempChar, 1);
|
||||||
|
End;
|
||||||
|
557 : If ClassValid(Param[1].L, mplClass_Input) Then Begin
|
||||||
|
TempLong := TAnsiMenuInput(ClassData[Param[1].L].ClassPtr).GetNum(Param[2].B, Param[3].B, Param[4].B, Param[5].B, Param[6].L, Param[7].L, Param[8].L);
|
||||||
|
Store (TempLong, 4);
|
||||||
|
End;
|
||||||
|
558 : If ClassValid(Param[1].L, mplClass_Input) Then Begin
|
||||||
|
TempBool := TAnsiMenuInput(ClassData[Param[1].L].ClassPtr).GetEnter(Param[2].B, Param[3].B, Param[4].B, Param[5].S);
|
||||||
|
Store (TempBool, 1);
|
||||||
|
End;
|
||||||
End;
|
End;
|
||||||
End;
|
End;
|
||||||
|
|
||||||
|
@ -1954,6 +2083,7 @@ Procedure TInterpEngine.SkipBlock;
|
||||||
begin
|
begin
|
||||||
NextChar;
|
NextChar;
|
||||||
NextWord;
|
NextWord;
|
||||||
|
|
||||||
MoveToPos (CurFilePos + W);
|
MoveToPos (CurFilePos + W);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
|
@ -77,7 +77,7 @@ Type
|
||||||
);
|
);
|
||||||
|
|
||||||
Const
|
Const
|
||||||
mplVer = '11Z';
|
mplVer = '11Y';
|
||||||
mplVersion = '[MPX ' + mplVer +']' + #26;
|
mplVersion = '[MPX ' + mplVer +']' + #26;
|
||||||
mplVerLength = 10;
|
mplVerLength = 10;
|
||||||
mplExtSource = '.mps';
|
mplExtSource = '.mps';
|
||||||
|
@ -90,7 +90,7 @@ Const
|
||||||
mplMaxCaseNums = 20;
|
mplMaxCaseNums = 20;
|
||||||
mplMaxVarDeclare = 20;
|
mplMaxVarDeclare = 20;
|
||||||
mplMaxArrayDem = 3; //cannot be changed yet
|
mplMaxArrayDem = 3; //cannot be changed yet
|
||||||
mplMaxProcParams = 8;
|
mplMaxProcParams = 12;
|
||||||
mplMaxRecords = 20;
|
mplMaxRecords = 20;
|
||||||
mplMaxRecFields = 40;
|
mplMaxRecFields = 40;
|
||||||
mplMaxDataSize = 65535;
|
mplMaxDataSize = 65535;
|
||||||
|
@ -111,6 +111,9 @@ Const
|
||||||
mpxBadInit = 5;
|
mpxBadInit = 5;
|
||||||
mpxDivisionByZero = 6;
|
mpxDivisionByZero = 6;
|
||||||
mpxMathematical = 7;
|
mpxMathematical = 7;
|
||||||
|
mpxTooManyClasses = 8;
|
||||||
|
mpxInvalidClass = 9;
|
||||||
|
mpxInvalidClassH = 10;
|
||||||
{$ELSE}
|
{$ELSE}
|
||||||
mpsEndOfFile = 1;
|
mpsEndOfFile = 1;
|
||||||
mpsFileNotfound = 2;
|
mpsFileNotfound = 2;
|
||||||
|
|
|
@ -3475,3 +3475,38 @@
|
||||||
notice. ;)
|
notice. ;)
|
||||||
|
|
||||||
<ALPHA 35 RELEASED>
|
<ALPHA 35 RELEASED>
|
||||||
|
|
||||||
|
! Fixed a memory leak in the new theme prompt system. Mystic was leaking
|
||||||
|
about 30kb per login.
|
||||||
|
|
||||||
|
! Mystic should now will properly display the file base "display file"
|
||||||
|
before listing files.
|
||||||
|
|
||||||
|
+ MPL now has the ability to interface directly with internal Mystic BBS
|
||||||
|
classes. This opens up a whole world of new possibilities in the future
|
||||||
|
(for example) sockets, full remote ANSI screen library (boxes, listboxes)
|
||||||
|
data sorting, and more.
|
||||||
|
|
||||||
|
Classes must first be created and then freed after using. Mystic will
|
||||||
|
create the class instance and return a handle to that specific class to
|
||||||
|
use with the functions. Finally, the class is freed. Two new functions
|
||||||
|
go with this:
|
||||||
|
|
||||||
|
ClassCreate (ClassHandle, ClassType)
|
||||||
|
ClassFree (ClassHandle)
|
||||||
|
|
||||||
|
+ MPL now supports the ANSI box class. There are three functions which
|
||||||
|
go along with this: BoxOpen, BoxClose, and BoxOptions. The Box class
|
||||||
|
will automatically save and and subsequently restore the text under the
|
||||||
|
box when it is closed.
|
||||||
|
|
||||||
|
See TESTBOX.MPS for an example.
|
||||||
|
|
||||||
|
+ MPL now supports the ANSI input class. There are several functions which
|
||||||
|
go along with this: InputString, InputNumber, InputEnter, InputOptions.
|
||||||
|
This class allows you more freedom over input functions than the standard
|
||||||
|
MPL input functions do.
|
||||||
|
|
||||||
|
See TESTINPUT.MPS for an example.
|
||||||
|
|
||||||
|
<ALPHA 36 RELEASED>
|
||||||
|
|
Loading…
Reference in New Issue