[Search for users] [Overall Top Noters] [List of all Conferences] [Download this site]

Conference 49.910::kav30

Title:VAX on VMEbus: KAV30
Notice:Could have been as fast as 68K but its a VAX!
Moderator:CSSVMS::KAV30_SUPP
Created:Thu Apr 18 1991
Last Modified:Fri Aug 02 1996
Last Successful Update:Fri Jun 06 1997
Number of topics:159
Total number of notes:645

22.0. "address of hex displays" by UFHIS::WSIEGMUND (Seaboard riding on Seahorse) Wed Aug 21 1991 15:46

    hello,
    
    I am looking for an address to write to the
    front panel hex displays.
    Could somebody help me please!
    
    Thanks  Wolfgang
T.RTitleUserPersonal
Name
DateLines
22.1LED display addr. & descr.EICMFG::NORDHEIS/Engineering Munich, DTN 865-3142Wed Aug 21 1991 19:5422
	The LED display has the PA of: ^x201F'FFFC  with the following
	layout:

	        31        23       16                  0
		+---------+---------+---------+--------+
		|         |    |    |         |        |
		+---------+---------+---------+--------+
		        ||  H    L    not used  not used
	                ||  I    O
	    <25> blank -+|  G    W
	    <24> Blank --+  H
	     These two
	     are used to
	     blank the resp.
	     LED display.

	Remember that all data you're going to write, will be inverted.

	Hope this helps,

	-Jan
22.2epascal exampleUFHIS::WSIEGMUNDSeaboard riding on SeahorseFri Aug 23 1991 16:0566
Thank you Jan,

the folowing is an EPASCAL example to play 
with the displays.


MODULE rt300Display;
{*************************************************************}
{ Use of the Hex Display on an RTVAX 300 }
{ on a KAV30: 
   This register is write only.
   The blanking bits are not implemented.
 }
TYPE
	DgvalT		= PACKED RECORD
			Low	: 0..15;
			High	: 0..15;
			END;
	DgintensityT	= (blanked,lit);
	DgintenT	= PACKED RECORD
			Low	: DgintensityT;
			High	: DgintensityT;
			END;
	DsRegT		= [WORD] PACKED RECORD
			Dgval	: DgvalT;
			Dginten	: DgintenT;
			END;
	DsRegPT		= ^DsRegT;
VAR
	DsRegCop	: DsRegT;
	DsRegP		: DsRegPT;
	DsPhysical 	: INTEGER := %x201ffffe; 
	DsVirtual	: INTEGER;
	DsRegPA		: ^ANYTYPE;
	OffsetIntoPage	: INTEGER;
	SomeTime	: LARGE_INTEGER;

PROGRAM DsNumbers (INPUT, OUTPUT);
VAR
	i,j			: INTEGER;
BEGIN
ALLOCATE_MEMORY (DsRegPA, 512, physical := DsPhysical );
OffsetIntoPage := DsPhysical MOD 512;
DsVirtual := DsRegPA :: INTEGER + OffsetIntoPage;
DsRegP := DsVirtual :: DsRegPT;

SomeTime := TIME_VALUE ('0000 00:00:00.50');

REPEAT
  FOR j := 0 TO 15 DO
    BEGIN
    DsRegCop.Dgval.High := j;
    WRITE_REGISTER (DsRegP^, DsRegCop);
    WAIT_ANY (TIME := SomeTime);
    FOR i := 0 TO 15 DO
      BEGIN
      DsRegCop.Dgval.Low := i;
      WRITE_REGISTER (DsRegP^, DsRegCop);
      WAIT_ANY (TIME := SomeTime);
      END; 		
    END; 		
UNTIL FALSE;

END. {DsNumbers}
END; {rt300Ds}