+ introduced BAS_EncodeLine to make it easier to construct BASIC programs

git-svn-id: branches/z80@44592 -
This commit is contained in:
nickysn 2020-04-05 15:13:53 +00:00
parent 8619a8cb32
commit 686022c971
2 changed files with 10 additions and 5 deletions

View File

@ -60,7 +60,6 @@ var
ErrorMsg: String;
NonOptions: TStringArray;
BasicProgram: AnsiString;
BasicLine1, BasicLine2: AnsiString;
begin
// quick check parameters
ErrorMsg:=CheckOptions(ShortOptions, LongOptions);
@ -99,10 +98,8 @@ begin
FOutputFile := TFileStream.Create(FOutputFileName, fmCreate);
FTapeWriter := TTZXWriter.Create(FOutputFile);
BasicLine1 := ' '+BC_LOAD+'"" '+BC_CODE+#13;
BasicLine2 := ' '+BC_PRINT+BC_USR+BAS_EncodeNumber(FInputImage.Origin)+#13;
BasicProgram := #0#10+Chr(Byte(Length(BasicLine1)))+Chr(Byte(Length(BasicLine1) shr 8))+BasicLine1+
#0#20+Chr(Byte(Length(BasicLine2)))+Chr(Byte(Length(BasicLine2) shr 8))+BasicLine2;
BasicProgram := BAS_EncodeLine(10, ' '+BC_LOAD+'"" '+BC_CODE) +
BAS_EncodeLine(20, ' '+BC_PRINT+BC_USR+BAS_EncodeNumber(FInputImage.Origin));
FTapeWriter.AppendProgramFile('basic', 10, Length(BasicProgram), BasicProgram[1], Length(BasicProgram));
FTapeWriter.AppendCodeFile('test', FInputImage.Origin, FInputImage.Data[0], Length(FInputImage.Data));

View File

@ -126,6 +126,7 @@ const
function BAS_EncodeNumber(N: Integer): ansistring;
function BAS_EncodeNumber(N: Real): ansistring;
function BAS_EncodeLine(LineNr: Integer; const Line: string): ansistring;
implementation
@ -151,5 +152,12 @@ begin
raise ENotImplemented.Create('Real number support not yet implemented');
end;
function BAS_EncodeLine(LineNr: Integer; const Line: string): ansistring;
begin
Result := Chr(Byte(LineNr shr 8)) + Chr(Byte(LineNr)) +
Chr(Byte((Length(Line) + 1))) + Chr(Byte((Length(Line) + 1) shr 8)) +
Line + #13;
end;
end.