MODE 10

From BeebWiki
Jump to: navigation, search
Demonstration of 'MODE 10' (BBC)

MODE 10 is the unofficial title of a low-resolution screen MODE, developed by Ian Robertson and published in The Micro User magazine (November 1985, p.123). It works on the BBC Micro but not the Electron or the Archimedes where MODE 10 is the official 256-colour version of MODE 2.

The MODE 10 code adapts the MODE 6 screen to provide a 20 × 25 text display in 4 colours. The MOS does not allow complete support of this MODE and some bugs can be seen: for instance, text windows do not work correctly.




'MODE 10'
Type Bitmapped, text only ('ASCII')
Resolution Text 20 × 25 characters
Graphics n/a
Character size 8 × 10 pixels, top 8 lines user definable
Pixel aspect 2:1 (wide)
Bits per pixel 2
Default palette Logical colour Actual colour
0 0 (black)
1 1 (red)
2 3 (yellow)
3 7 (white)
Memory allocated 8192 bytes
on screen 8000 bytes
Address range Model B etc. &6000..&7FFF
Configuration Video ULA control register &84
Video ULA palette register file &07 &17 &26 &36 &47 &57 &66 &76
&84 &94 &A0 &B0 &C4 &D4 &E0 &F0
CRTC register file &3F &28 &31 &24 &1E &02
&19 &1B &01 &09 &67 &09
(from table in MOS 1.20 at &C492..&C49D)

MODE 10 can be created manually with the following code running in the I/O processor.

   BASIC:
   MODE 6     :REM Base MODE
   ?&30A=19   :REM Characters per line
   ?&34F=16   :REM Bytes per character
   ?&360=3    :REM Number of colours
   ?&361=2    :REM Pixels per byte
   ?&362=&AA  :REM Pixel left mask
   ?&363=&55  :REM Pixel right mask
   VDU 20     :REM Reset palette
   *FX154,132
   
   6502:
   LDA #22:JSR OSWRCH
   LDA #06:JSR OSWRCH           \ Base MODE
   LDA #&13:STA &30A            \ Characters per line
   LDA #&10:STA &34F            \ Byte per character
   LDA #&03:STA &360            \ Number of colours
   LDA #&02:STA &361            \ Pixels per byte
   LDA #&AA:STA &362            \ Pixel left mask
   LDA #&55:STA &363            \ Pixel right mask
   LDA #20:JSR OSWRCH           \ Reset palette
   LDA #154:LDX #132:JSR OSBYTE \ Cursor width
Screen display MODEs

MODE 0 | MODE 1 | MODE 2 | MODE 3 | MODE 4 | MODE 5 | MODE 6 | MODE 7
MODE 8 | MODE 9 | MODE 10 | MODE 11 | MODE 12 | MODE 13 | MODE 14
MODE &60 | MODE &61 | MODE &63 | MODE &64 | MODE &66
MODE &68 | MODE &69 | MODE &6B | MODE &6C | MODE &6E
MODE | VDU 22

beardo 12:59, 20 September 2006 (BST) Jgharston (talk) 18:55, 12 October 2016 (UTC)