---------------------------------------------------------------- {{{ ----------
--: Copyright © 2020 … 2023 Martin Krischik «krischik@users.sourceforge.net»
-------------------------------------------------------------------------------
--: This library is free software; you can redistribute it and/or modify it
--: under the terms of the GNU Library General Public License as published by
--: the Free Software Foundation; either version 2 of the License, or (at your
--: option) any later version.
--:
--: This library is distributed in the hope that it will be useful, but WITHOUT
--: ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--: FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public
--: License for more details.
--:
--: You should have received a copy of the GNU Library General Public License
--: along with this library; if not, write to the Free Software Foundation,
--: Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
---------------------------------------------------------------- }}} ----------
pragma License (Modified_Gpl);
pragma Ada_2022;
with Ada.Text_IO;
with Ada.Integer_Text_IO;
with AdaCL.Trace;
with Atr_Tools.File_Body;
with Atr_Tools.File_Header;
with Atr_Tools.Byte_IO;
---
--
--: @ value
procedure Atr_Tools.Create_Floppy
(File_Name : String;
Sector_Size : Integer;
Sector_Per_Track : Integer;
Tracks_Per_Side : Integer;
Sides_Per_Disk : Integer) with
Pre =>
((Sector_Size in Single_Density | Double_Density) and then (Sector_Per_Track in Atari_Standard | Atari_Enhanced)
and then (Tracks_Per_Side in Standard_Tracks | Double_Tracks) and then (Sides_Per_Disk in 1 | 2))
is
use Ada.Text_IO;
use Ada.Integer_Text_IO;
Trace : AdaCL.Trace.Object := AdaCL.Trace.Function_Trace;
pragma Unreferenced (Trace);
File : Byte_IO.File_Type;
New_Body : constant File_Body.Body_Type'Class :=
File_Body.Create (Sector_Size, Sector_Per_Track, Tracks_Per_Side, Sides_Per_Disk);
New_Header : constant File_Header.Header_Type'Class := File_Header.Create (New_Body);
begin
AdaCL.Trace.Write ("Filename : " & File_Name);
AdaCL.Trace.Write ("Sector size : " & Sector_Size'Image);
AdaCL.Trace.Write ("Sector per track : " & Sector_Per_Track'Image);
AdaCL.Trace.Write ("Tracks per side : " & Tracks_Per_Side'Image);
AdaCL.Trace.Write ("Sides per disk : " & Sides_Per_Disk'Image);
Byte_IO.Create
(File,
Byte_IO.Out_File,
File_Name,
Form => "");
New_Header.Write (File);
New_Body.Write (File);
Byte_IO.Close (File);
if AdaCL.Trace.Is_Verbose_Enabled then
Put ("File created : ");
Put (File_Name);
New_Line;
Put ("Sector size : ");
Put
(Sector_Size,
Width => 12,
Base => 10);
New_Line;
Put ("Sector per track : ");
Put
(Sector_Per_Track,
Width => 12,
Base => 10);
New_Line;
Put ("Tracks per side : ");
Put
(Tracks_Per_Side,
Width => 12,
Base => 10);
New_Line;
Put ("Sides per disk : ");
Put
(Sides_Per_Disk,
Width => 12,
Base => 10);
New_Line;
end if;
end Atr_Tools.Create_Floppy;
---------------------------------------------------------------- {{{ ----------
--: vim: set textwidth=0 nowrap tabstop=8 shiftwidth=3 softtabstop=3 expandtab :
--: vim: set filetype=ada fileencoding=utf-8 fileformat=unix foldmethod=expr :
--: vim: set spell spelllang=en_gb :