|
|
DataMuseum.dkPresents historical artifacts from the history of: Rational R1000/400 |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about Rational R1000/400 Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 13312 (0x3400)
Types: Ada Source
Notes: 03_class, FILE, R1k_Segment, e3_tag, package body Split_Window, seg_004701
└─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000
└─⟦5a81ac88f⟧ »Space Info Vol 1«
└─⟦this⟧
with Window_Io;
package body Split_Window is
task body Window_Manager is
Window : Window_Io.File_Type;
Top_Line : Natural;
Top_Col : Natural;
Bottom_Line : Natural;
Bottom_Col : Natural;
Next_Top_Line : Positive;
Next_Bottom_Line : Positive;
Middle_Line : Window_Io.Line_Number;
Last_Line : Window_Io.Line_Number;
Lines, Cols : Positive;
Dashes : constant String (1 .. 78) := (others => '-');
begin
loop
select
accept Create do
Window_Io.Create
(Window, Window_Io.Out_File, "PHONE WINDOW");
Window_Io.Report_Size (Window, Lines, Cols);
Middle_Line := Lines / 2;
Last_Line := Lines;
Top_Line := 1;
Top_Col := 1;
Next_Top_Line := 2;
Bottom_Line := Middle_Line + 1;
Bottom_Col := 1;
Next_Bottom_Line := Bottom_Line + 1;
Window_Io.Position_Cursor (Window, Middle_Line, 1);
Window_Io.Overwrite (Window, Dashes);
end Create;
or
accept Delete;
exit;
or
accept Write_To_Top (Message : String) do
Top_Col := 1;
Window_Io.Position_Cursor (Window, Next_Top_Line, 1);
Window_Io.Delete (Window, Window_Io.Line_Length (Window));
Window_Io.Position_Cursor (Window, Top_Line, 1);
Window_Io.Overwrite (Window, Message);
if Top_Line = Middle_Line - 2 then
Top_Line := Top_Line + 1;
Next_Top_Line := 1;
elsif Top_Line = Middle_Line - 1 then
Top_Line := 1;
Next_Top_Line := 2;
else
Top_Line := Top_Line + 1;
Next_Top_Line := Top_Line + 1;
end if;
end Write_To_Top;
or
accept Write_To_Top (Message : Character) do
if Message = Ascii.Cr then
Top_Col := 1;
Window_Io.Position_Cursor
(Window, Next_Top_Line, Top_Col);
Window_Io.Delete (Window,
Window_Io.Line_Length (Window));
if Top_Line = Middle_Line - 2 then
Top_Line := Top_Line + 1;
Next_Top_Line := 1;
elsif Top_Line = Middle_Line - 1 then
Top_Line := 1;
Next_Top_Line := 2;
else
Top_Line := Top_Line + 1;
Next_Top_Line := Top_Line + 1;
end if;
else
Window_Io.Position_Cursor (Window, Top_Line, Top_Col);
Window_Io.Overwrite (Window, Message);
Top_Col := Top_Col + 1;
end if;
end Write_To_Top;
or
accept Write_To_Bottom (Message : String) do
Bottom_Col := 1;
Window_Io.Position_Cursor (Window, Next_Bottom_Line, 1);
Window_Io.Delete (Window, Window_Io.Line_Length (Window));
Window_Io.Position_Cursor (Window, Bottom_Line, 1);
Window_Io.Overwrite (Window, Message);
if Bottom_Line = Last_Line - 1 then
Bottom_Line := Bottom_Line + 1;
Next_Bottom_Line := Middle_Line + 1;
elsif Bottom_Line = Last_Line then
Bottom_Line := Middle_Line + 1;
Next_Bottom_Line := Bottom_Line + 1;
else
Bottom_Line := Bottom_Line + 1;
Next_Bottom_Line := Bottom_Line + 1;
end if;
end Write_To_Bottom;
or
accept Write_To_Bottom (Message : Character) do
if Message = Ascii.Cr then
Bottom_Col := 1;
Window_Io.Position_Cursor
(Window, Next_Bottom_Line, Bottom_Col);
Window_Io.Delete (Window,
Window_Io.Line_Length (Window));
if Bottom_Line = Last_Line - 1 then
Bottom_Line := Bottom_Line + 1;
Next_Bottom_Line := Middle_Line + 1;
elsif Bottom_Line = Last_Line then
Bottom_Line := Middle_Line + 1;
Next_Bottom_Line := Bottom_Line + 1;
else
Bottom_Line := Bottom_Line + 1;
Next_Bottom_Line := Bottom_Line + 1;
end if;
else
Window_Io.Position_Cursor
(Window, Bottom_Line, Bottom_Col);
Window_Io.Overwrite (Window, Message);
Bottom_Col := Bottom_Col + 1;
end if;
end Write_To_Bottom;
or
accept Delete_Char_Top do
if Top_Col /= 1 then
Window_Io.Position_Cursor
(Window, Top_Line, Top_Col - 1);
Window_Io.Overwrite (Window, ' ');
Top_Col := Top_Col - 1;
else
Window_Io.Bell (Window);
end if;
end Delete_Char_Top;
or
accept Delete_Char_Bottom do
if Bottom_Col /= 1 then
Window_Io.Position_Cursor
(Window, Bottom_Line, Bottom_Col - 1);
Window_Io.Overwrite (Window, ' ');
Bottom_Col := Bottom_Col - 1;
else
Window_Io.Bell (Window);
end if;
end Delete_Char_Bottom;
end select;
end loop;
end Window_Manager;
end Split_Window;
nblk1=c
nid=0
hdr6=18
[0x00] rec0=21 rec1=00 rec2=01 rec3=03a
[0x01] rec0=02 rec1=00 rec2=0c rec3=01e
[0x02] rec0=19 rec1=00 rec2=02 rec3=066
[0x03] rec0=01 rec1=00 rec2=0b rec3=00e
[0x04] rec0=18 rec1=00 rec2=03 rec3=01c
[0x05] rec0=00 rec1=00 rec2=0a rec3=028
[0x06] rec0=17 rec1=00 rec2=04 rec3=052
[0x07] rec0=00 rec1=00 rec2=09 rec3=014
[0x08] rec0=17 rec1=00 rec2=05 rec3=04c
[0x09] rec0=00 rec1=00 rec2=08 rec3=01e
[0x0a] rec0=16 rec1=00 rec2=06 rec3=05e
[0x0b] rec0=18 rec1=00 rec2=07 rec3=000
tail 0x215004f18815c67810171 0x42a00088462061e03