|
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 - 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; --┆