|
|
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: 11264 (0x2c00)
Types: Ada Source
Notes: 03_class, FILE, R1k_Segment, e3_tag, package body V_Timer_Support_1, seg_058004
└─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000
└─⟦cfc2e13cd⟧ »Space Info Vol 2«
└─⟦this⟧
with Machine_Code;
with System;
use System;
with Unchecked_Conversion;
with V_Krn_Conf_I;
use V_Krn_Conf_I;
with Krn_Defs;
with V_Bits;
with V_I_Types;
with V_I_Timeop;
with V_Cpu_Conf;
with Link_Block;
with Grp_Table;
with Machine_Types;
package body V_Timer_Support_1 is
Max_Count : constant := 255;
use Machine_Types;
function Get_Interrupt_Vector_Number return System.Address is
begin
return System.To_Address (2#1000_1101#);
end Get_Interrupt_Vector_Number;
procedure Init_Timer is
use V_Bits;
-- Initializes the timer device hardware registers
-- MC68155 PICU Register
Register_R0 : Byte; -- pointer registers CR1/CR6
Register_R1 : Byte; --
Register_R3 : Byte; -- local interrupt mask register
Register_R5 : Byte; -- system bus interrupt mask register
for Register_R0 use at System.To_Address (16#0301_0020#);
for Register_R1 use at System.To_Address (16#0301_0022#);
for Register_R3 use at System.To_Address (16#0301_0026#);
for Register_R5 use at System.To_Address (16#0301_002A#);
-- MC68901 Timer register
-- MC68901 Timer register
Register_Vr : Byte; -- Vector register
Register_Iera : Byte; -- Interrupt enable register A
Register_Imra : Byte; -- Interrupt mask register A
Register_Tacr : Byte; -- Timer A control register
Register_Tadr : Byte; -- Timer A data register;
for Register_Vr use at System.To_Address (16#0301_000B#);
for Register_Iera use at System.To_Address (16#0301_0003#);
for Register_Imra use at System.To_Address (16#0301_0009#);
for Register_Tadr use at System.To_Address (16#0301_000F#);
for Register_Tacr use at System.To_Address (16#0301_000C#);
begin
-- Interrupt handler configuration
Register_R3 := Machine_Types.Byte
(Bit_Or (Machine_Types.Byte'Pos (Register_R3),
2#0000_0100#));
Register_R5 := Machine_Types.Byte
(Bit_Or (Machine_Types.Byte'Pos (Register_R5),
2#0000_0000#));
Register_R0 := 2#0000_0010#;
Register_R1 := 2#0000_0000#;
-- Interrupt Timer configuration
Register_Vr := 2#1000_0000#; -- define the most signicant bits of IVR
Register_Iera :=
Machine_Types.Byte
(Bit_Or (Machine_Types.Byte'Pos (Register_Iera), 2#0010_0000#));
Register_Imra :=
Machine_Types.Byte
(Bit_Or (Machine_Types.Byte'Pos (Register_Imra), 2#0010_0000#));
-- Start the timer
Register_Tadr := Byte (Max_Count); -- load the count
Register_Tacr := 2#0000_0111#; -- start the timer
end Init_Timer;
procedure Rearm_Timer is
use Machine_Types; -- Clears current timer interrupt
Register_Iera : Byte; -- Interrupt enable register A
Register_Tacr : Byte; -- Timer A control register
Register_Tadr : Byte; -- Timer A data register
for Register_Tacr use at System.To_Address (16#0301_000C#);
for Register_Iera use at System.To_Address (16#0301_0003#);
for Register_Tadr use at System.To_Address (16#0301_000F#);
use V_Bits;
begin
-- Register_Tacr := 2#0000_0000#; -- Stop timer
-- Register_Iera :=
-- Machine_Types.Byte
-- (Bit_And (Machine_Types.Byte'Pos (Register_Iera), 2#1101_1111#));
-- Register_Iera :=
-- Machine_Types.Byte
-- (Bit_Or (Machine_Types.Byte'Pos (Register_Iera), 2#0010_0000#));
-- Register_Tadr := Byte (Max_Count); -- load the count
-- Register_Tacr := 2#0000_0111#; -- restore the timer
null;
end Rearm_Timer;
end V_Timer_Support_1;
nblk1=a
nid=4
hdr6=c
[0x00] rec0=24 rec1=00 rec2=01 rec3=018
[0x01] rec0=00 rec1=00 rec2=07 rec3=02c
[0x02] rec0=15 rec1=00 rec2=0a rec3=024
[0x03] rec0=1a rec1=00 rec2=06 rec3=002
[0x04] rec0=13 rec1=00 rec2=03 rec3=00a
[0x05] rec0=02 rec1=00 rec2=05 rec3=000
[0x06] rec0=9b rec1=c8 rec2=00 rec3=038
[0x07] rec0=48 rec1=7d rec2=b6 rec3=240
[0x08] rec0=05 rec1=ec rec2=80 rec3=007
[0x09] rec0=09 rec1=0f rec2=b6 rec3=647
tail 0x21765500e87db73cc6691 0x42a00088462060003
Free Block Chain:
0x4: 0000 00 08 03 fc 80 19 5f 52 33 20 3a 3d 20 4d 61 63 ┆ _R3 := Mac┆
0x8: 0000 00 02 00 07 80 04 73 74 65 72 04 20 20 20 2d 2d ┆ ster --┆
0x2: 0000 00 09 03 fc 80 34 65 67 69 73 74 65 72 5f 52 30 ┆ 4egister_R0┆
0x9: 0000 00 00 00 a8 80 0a 74 65 3b 20 20 20 20 20 2d 2d ┆ te; --┆