|
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: 15360 (0x3c00) Types: Ada Source Notes: 03_class, FILE, R1k_Segment, e3_tag, generic, package V_Tdm_Conf_I, seg_04ce26
└─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000 └─ ⟦cfc2e13cd⟧ »Space Info Vol 2« └─⟦this⟧
------------------------------------------------------------------------------- ------------------------------------------------------------------------------- -- -- VERDIX CORPORATION (C) COPYRIGHT 1988 -- 14130-A Sullyfield Circle Proprietary Information -- Chantilly, Virginia 22021 Not to be Disclosed -- -- FILE: V_TDM_CONF_I.A -- -- UNIT: VADS Interface for Configuring the Target Debug -- Monitor (TDM) Program for the M68000 Processor Family Cross -- Targets -- -- PURPOSE: This package provides the interface to TDM used by the -- the package V_TDM_CONF. It contains types, objects, -- and subprograms used to convey configuration information to and -- from TDM. -- -- This package consists of the following type definitions, -- constants, generics and TDM subprogram interfaces: -- 1. Startup table -- 2. Interrupt vector table -- 3. Configuration table -- 4. Misc TDM program variables -- 5. VADS supplied TDM ISRs -- 6. Boot subprogram -- 7. Execute subprogram -- 8. Interrupt handler generic -- 9. TDM service subprograms -- -- NOTES: Do not modify or recompile this package. -- -- This package may only be included in the TDM program. -- It MAY NOT be included in the user or kernel programs. ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- -- -- Revision History: -- -- 870706:2132 A00 Initial version. -- ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- with System; use System; with V_Mem_Conf; package V_Tdm_Conf_I is pragma Suppress (All_Checks); pragma Suppress (Exception_Tables); --------------------------- #i1: Startup table --------------------------------- type Startup_Table_T is record Startup_Stack_Base : Address; -- specifies the address at which the -- stack used by TDM during system -- startup should begin. The stack -- will grow from this address towards -- lower memory. -- -- Normally set to the same location -- as the kernel program's startup -- stack, top of RAM. -- -- This stack is used until the -- application program being debugged -- changes it. Hardware_Initialization : Address; -- is the address of the routine called -- at the beginning of system initial- -- ization to initialize the hardware. end record; ----------------------- #i2: Interrupt vector table ---------------------------- type Interrupt_Vector_Table_T is array (Natural range <>) of Address; Untouchable_Vector : constant Address := System.Memory_Address (16#FFFF_FFFF#); -------------------------- #i3: Configuration table ---------------------------- type Configuration_Table_T is record Tdm_Stack_Base : Address; -- specifies the starting address -- of the stack used by TDM after system -- startup. The stack will grow from -- this address toward lower memory. Tdm_Stack_Size : Integer; -- size of the TDM stack Vector_Base_Register : Address; -- starting location of the interrupt -- vector table. Interrupt_Vector_Size : Integer; -- indicates the number of interrupt -- vectors associated with this processor. Interrupt_Vector_Image : Address; -- starting location of the user's image -- of the vector table. Setup_Tdm_Entry_Callout : Address; -- is the address of the routine called -- immediately after TDM is entered via a -- breakpoint, TDM trap request, or TDM -- handled exception. Setup_Tdm_Return_Callout : Address; -- is the address of the routine called -- called by TDM immediately prior to -- starting execution of the user program. Test_Message_Size : Integer; -- indicates the length of the -- tdm test message. Test_Message_Image : Address; -- starting location of the -- tdm test message. Passthru_Callout : Address; -- is the address of the routine to -- be called to scan, parse and execute -- a debugger "pass" command Tdm_Idle_Callout : Address; -- is the address of the routine to -- be called when TDM is waiting for -- input from the host. Kernel_Start_Enabled : Boolean; Kernel_Start_Address : Address; -- if TRUE, then, at the conclusion of TDM -- elaboration and initialization, instead -- of waiting for a command from the host -- debugger, TDM jumps to the kernel's -- start address. When TRUE, the kernel and -- user programs must already be loaded on -- the target. Memory_Write_Callout : Address; -- is the address of the routine to be -- called when TDM is writing memory for -- purposes of downloading or setting -- breakpoints. Memory_Read_Callout : Address; -- is the address of the routine to be -- called when TDM is reading memory for -- purposes of examining memory or memory -- mapped I/O. Memory_Fill_Callout : Address; -- is the address of the routine to be -- called when TDM is filling memory. Memory_Search_Callout : Address; -- is the address of the routine to be -- called when TDM is searching memory. end record; Untouchable_Vbr : constant Address := System.Memory_Address (16#FFFF_FFFF#); No_Vbr : constant Address := System.Memory_Address (16#FFFF_FFFE#); Untouchable_Table : constant Address := System.Memory_Address (16#FFFF_FFFF#); --------------------- #i4: Misc TDM program variables ------------------------- Stack_Limit : Address; pragma Interface_Name (Stack_Limit, "STACK_LIMIT"); -- Bottom of tdm stack Group_Table : array (1 .. 1) of Character; pragma Interface_Name (Group_Table, "GROUP_TABLE"); -- Table generated by the cross linker that defines the -- memory locations of the different program groups (text, constant, -- data, bss and void). Compiler defined dope vector information -- precedes the group records. ------------------------- #i5: VADS supplied TDM ISRs -------------------------- procedure Bus_Handler; pragma Interface (Ada, Bus_Handler); pragma Interface_Name (Bus_Handler, "TDM_BUS_HANDLER"); -- #2 procedure Address_Handler; pragma Interface (Ada, Address_Handler); pragma Interface_Name (Address_Handler, "TDM_ADDRESS_HANDLER"); -- #3 procedure Illegal_Handler; pragma Interface (Ada, Illegal_Handler); pragma Interface_Name (Illegal_Handler, "TDM_ILLEGAL_HANDLER"); -- #4 procedure Privilege_Handler; pragma Interface (Ada, Privilege_Handler); pragma Interface_Name (Privilege_Handler, "TDM_PRIVILEGE_HANDLER"); -- #8 procedure Trace_Handler; pragma Interface (Ada, Trace_Handler); pragma Interface_Name (Trace_Handler, "TDM_TRACE_HANDLER"); -- #9 procedure Format_Handler; pragma Interface (Ada, Format_Handler); pragma Interface_Name (Format_Handler, "TDM_FORMAT_HANDLER"); -- #14 procedure Trap_Handler; pragma Interface (Ada, Trap_Handler); pragma Interface_Name (Trap_Handler, "TDM_TRAP_HANDLER"); -- #47 - trap 15 (default) procedure Unexpected_Handler; pragma Interface (Ada, Unexpected_Handler); pragma Interface_Name (Unexpected_Handler, "TDM_UNEXPECTED_HANDLER"); -- #??? ---------------------------- #i6: Boot subprogram ----------------------------- procedure V_Boot (Configuration_Table_A : Address); -- specifies the TDM configuration table -- declared in the configuration package. pragma Interface (Ada, V_Boot); pragma Interface_Name (V_Boot, "V_BOOT"); -- V_BOOT is called to boot/initialize TDM. It initializes the -- interrupt vector, resets mc68881/mc68882 coprocessor (if -- present). -------------------------- #i7: Execute subprogram ---------------------------- procedure V_Execute; pragma Interface (Ada, V_Execute); pragma Interface_Name (V_Execute, "V_EXECUTE"); -- V_EXECUTE is called to start the execution of TDM. If the -- configuration parameter, KERNEL_START_ENABLED is TRUE, then, -- V_EXECUTE jumps to the kernel program via the KERNEL_START_ADDRESS -- parameter. Otherwise, TDM waits for and processes commands sent -- from the host. ---------------------- #i8: Interrupt handler generic -------------------------- -- -- Note: this ISR wrapper is used only by serial TDM -- and not by Network TDM. -- generic with procedure Process_Interrupt; procedure Interrupt_Handler; pragma Share_Body (Interrupt_Handler, False); -- Interrupt handler wrapper -- -- Instantiate your handler by: -- my_interrupt_handler is new -- V_TDM_CONF_I.interrupt_handler(my_process_interrupt); -- -- See generic body below for details. ---------------------- #i9: TDM service subprograms --------------------------- procedure Passthru_Put_Chr (C : Character); pragma Interface (Ada, Passthru_Put_Chr); pragma Interface_Name (Passthru_Put_Chr, "TDM_PUT_CHR"); -- Called by the passthru command handlers to have a -- character displayed by the host debugger. procedure Passthru_Put_Str (S : String); pragma Interface (Ada, Passthru_Put_Str); pragma Interface_Name (Passthru_Put_Str, "TDM_PUT_STR"); -- Called by the passthru command handlers to have a -- string displayed by the host debugger. -- -- Note: the following subprograms are used only by serial TDM's -- ISR wrapper and not by Network TDM. -- procedure Enter_Interrupt; pragma Interface (Ada, Enter_Interrupt); pragma Interface_Name (Enter_Interrupt, "TDM_ENTER_INTERRUPT"); -- Enter interrupt handler -- -- The parameter and scratch registers (d0/d1/d2/d3/a0/a1) must be -- saved before calling ENTER_INTERRUPT. -- -- Note: the TDM version of this routine doesn't switch stacks. -- However, for compatibility with the kernel, the address of the -- input stack is pushed on the stack before returning. The address -- points to the last entry pushed on the stack before the call. -- procedure Complete_Interrupt; pragma Interface (Ada, Complete_Interrupt); pragma Interface_Name (Complete_Interrupt, "TDM_COMPLETE_INTERRUPT"); -- Complete interrupt handler -- -- COMPLETE_INTERRUPT expects stack to look as follows -- 0 - return pc back to handler -- 4 - pointer to previous stack (see below) (normally, the -- address pushed on the new stack by ENTER_INTERRUPT) -- -- where previous stack looks as follows: -- 0 - d0/d1/d2/d3/a0/a1 (parameter and saved scratch registers) -- 24 - handler's exception stack frame -- -- ENTER_INTERRUPT must have been previously called for this interrupt. -- -- -- Note: no return back to interrupt handler. procedure Post_Comm_Intr; pragma Interface (Ada, Post_Comm_Intr); pragma Interface_Name (Post_Comm_Intr, "TDM_POST_COMM_INTR"); -- -- Post Communications Interrupt -- -- In RS-232 TDM only, this procedure is called by the -- UART receive interrupt handler in package -- V_TDM_CONF.V_SERIAL_SUPPORT to notify TDM of the interrupt. -- This procedure is called by the communications -- interrupt handler to notify TDM of the interrupt. function Validate_Memory (Addr : Address; Count : Integer; Memory_Acc : V_Mem_Conf.Memory_Acc_T) return Integer; pragma Interface (Ada, Validate_Memory); pragma Interface_Name (Validate_Memory, "TDM_VALIDATE_MEMORY"); -- -- Validate a range of memory addresses -- -- This procedure is called by the default implementations of the -- read, write, fill, and search routines in the V_MEM_CONF -- sub-package of V_TDM_CONF. It returns the number of contiguous -- bytes starting at addr that are accessible in the way specified by -- the memory_acc parameter (READ_ONLY, WRITE_ONLY, READ_WRITE). end V_Tdm_Conf_I;
nblk1=e nid=0 hdr6=1c [0x00] rec0=16 rec1=00 rec2=01 rec3=01a [0x01] rec0=1a rec1=00 rec2=02 rec3=008 [0x02] rec0=1c rec1=00 rec2=03 rec3=030 [0x03] rec0=1c rec1=00 rec2=04 rec3=006 [0x04] rec0=15 rec1=00 rec2=05 rec3=030 [0x05] rec0=15 rec1=00 rec2=06 rec3=02e [0x06] rec0=19 rec1=00 rec2=07 rec3=010 [0x07] rec0=17 rec1=00 rec2=08 rec3=08e [0x08] rec0=1b rec1=00 rec2=09 rec3=010 [0x09] rec0=1c rec1=00 rec2=0a rec3=05e [0x0a] rec0=1d rec1=00 rec2=0b rec3=002 [0x0b] rec0=16 rec1=00 rec2=0c rec3=020 [0x0c] rec0=1a rec1=00 rec2=0d rec3=020 [0x0d] rec0=0f rec1=00 rec2=0e rec3=000 tail 0x217542524874f7c443d44 0x42a00088462060003