home *** CD-ROM | disk | FTP | other *** search
/ ARM Club 3 / TheARMClub_PDCD3.iso / hensa / documentation / documents / a252vidp < prev    next >
Internet Message Format  |  1999-04-27  |  5KB

  1. From: merlin@maths.tcd.ie (Merlin Hughes)
  2. Subject: Re: Manipulation of screenmodes
  3. Date: 31 Jul 92 01:34:04 GMT
  4.  
  5.  
  6. To program the VIDC, you need to be in supervisor mode, and you poke
  7. the new data into location $3400000. There are 4 words there mapped
  8. to the VIDC (I think), so you can STM up to 4 registers at a go.
  9.  
  10. eg:
  11. SWI"OS_EnterOS"  -- Supervisor mode
  12.  MOV0,#&3400000  -- Address of VIDC
  13.  MOV1,#<data>    -- Data to program VIDC with
  14.  STMIA0,{1}      -- Send it to the VIDC
  15. TEQP15,#0:DCD0   -- User mode
  16.  
  17. The VIDC register you are programming is encoded into the top byte
  18. of the byte you store, the data is in the rest of the word. The
  19. register numbers are separated by 4, ie the first register is &00,
  20. the second &04, etc.
  21.  
  22. ie:
  23.  
  24. --Word--
  25.    High Byte                                          Low Byte
  26. 3 3 2 2 2 2 2 2  2 2 2 2 1 1 1 1  1 1 1 1 1 1
  27. 1 0 9 8 7 6 5 4  3 2 1 0 9 8 7 6  5 4 3 2 1 0 9 8  7 6 5 4 3 2 1 0
  28. x x x x x x 0 0  x x x x x x x x  x x x x x x x x  x x x x x x x x
  29. \_____________/  \_______________________________________________/
  30.   VIDC Address                   VIDC Data
  31.  
  32. VIDC registers are:
  33.  
  34.  00 \
  35.  ..  > Video Palette Logical Colour 0 .. 15
  36.  3C /
  37.  40 Border Colour
  38.  44 \
  39.  ..  > Cursor Palette Logical Colour 1 .. 3
  40.  4C /
  41. -- bit 12=Supremacy, 11..8=Blue, 7..4=Green, 3..0=Red
  42. -- (different slightly in 8BPP modes, but same region)
  43.  
  44.  60 \
  45.  ..  > Stereo Image Register 7 , 0 .. 6
  46.  7C /
  47. -- bit 2..0=Position
  48.  
  49.  80 Horizontal Cycle Register
  50.  84 Horizontal Sync Width Register
  51. -- bit 23..14=Data
  52.  
  53.  88 Horizontal Border Start Register
  54.  8C Horizontal Display Start Register
  55.  90 Horizontal Display End Register
  56.  94 Horizontal Border End Register
  57. -- bit 23..14=Data
  58.  
  59.  98 Horizontal Cursor Start Register
  60. -- bit 23..13=Data, 12..11 must be 0 except in Hi-Res mode
  61.  
  62.  9C Horizontal Interlace Register
  63.  A0 Vertical Cycle Register
  64.  A4 Vertical Sync Width Register
  65. -- bit 23..14=Data
  66.  
  67.  A8 Vertical Border Start Register
  68.  AC Vertical Display Start Register
  69.  B0 Vertical Display End Register
  70.  B4 Vertical Border End Register
  71. -- bit 23..14=Data
  72.  
  73.  B8 Vertical Cursor Start Register
  74.  BC Vertical Cursor End Register
  75. -- bit 23..14=Data
  76.  
  77.  C0 Sound Frequency Register
  78. -- bit 7..0=Data
  79.  
  80.  E0 Control Register
  81. -- bit 15..14= Test Mode; 00=>Normal Operation, 01..11=>Test Mode 0, 1, 2
  82. -- bit 8=Test Mode; 0=>Normal Operation, 1=>Test Mode 3
  83. -- bit 7=Composite Sync; 0=>Vertical, 1=>Composite
  84. -- bit 6=Interlace Sync; 0=>Off, 1=>On
  85. -- bit 5..4=DMA Request; 00..11=>End Of Word 0/4, 1/5, 2/6, 3/7
  86. -- bit 3..2=Bits Per Pixel; 00..11=>BPP 1, 2, 4, 8
  87. -- bit 1..0=Pixel Rate; 00..11=>MHz 8, 12, 16, 24
  88.  
  89. -
  90.  
  91. Ok, those are the registers. If you are already in the type of mode
  92. you want to be in, and you just want to change the dimensions, you
  93. only need to reprogram the H&V Border/Display Start/End Registers.
  94. If not, you'll have to fiddle with the other relevant sounding
  95. ones.
  96.  
  97. (
  98. >From mode 13, programming the following registers with the
  99. following data values will get a 384*208 shaped mode..
  100.  
  101. H Disp Start = 40
  102. H Disp End   = 40 + (384/2)
  103. V Disp Start = 63
  104. V Disp End   = 63 + 208
  105.  
  106. You may have to push the borders out a bit.
  107. )
  108.  
  109. You'll probably get somewhere by experimentation... Something to
  110. note is that RISC OS reprograms stuff about the palette and the
  111. pointer quite regularly, so you'll have difficulty doing things
  112. with them.
  113.  
  114. For full information, get the VLSI data book, or if you want me to,
  115. I'll type in the rest of what is said about the relevant registers.
  116. I'm not going to type it in now because I'm tired.
  117.  
  118. I assume you'll assume you have enough screen memory..
  119.  
  120. People may object to your reprogramming VIDC for a few reasons..
  121. Some people will say it isn't future compatible. I'll believe that
  122. one when I see a new video chip in the Arc - I think you can afford
  123. to forget about that.
  124.  
  125. Different types of monitors however, are a valid reason for not
  126. doing the reprogramming yourself. People with multisyncs and VGAs
  127. and so on, sometimes have their own base modes defined. That way,
  128. different shaped modes will still be of the preferred users style
  129. (New modes are defined with a standard base mode, and then a VIDC
  130. list with the list of registers that need to be changed for the new
  131. mode. Normally these will only include new values for the H&V
  132. Border/Display Start/End registers.) People like this will hate your
  133. for changing mode yourself.
  134.  
  135. Anyway, enjoy.
  136.  
  137. --SICK--Merlin Hughes--    /|            This is only the beginning.
  138.   merlin@maths.tcd.ie     //|         We will regroup. We will prepare.
  139.                          //_|   When the time comes, we will emerge and take
  140. Acorn.. Deus et machina. /  | our place as the supreme masters of the universe.
  141.  
  142.  
  143.