Преглед изворни кода

+ introduced BAS_EncodeLine to make it easier to construct BASIC programs

git-svn-id: branches/z80@44592 -
nickysn пре 5 година
родитељ
комит
686022c971
2 измењених фајлова са 10 додато и 5 уклоњено
  1. 2 5
      utils/ihx2tzx/ihx2tzx.lpr
  2. 8 0
      utils/ihx2tzx/zxbasic.pas

+ 2 - 5
utils/ihx2tzx/ihx2tzx.lpr

@@ -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));

+ 8 - 0
utils/ihx2tzx/zxbasic.pas

@@ -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.