Difference between revisions of "MODE 13"

From BeebWiki
Jump to: navigation, search
(Got MODE 12 and MODE 13 the wrong way around.)
Line 6: Line 6:
  
 
The MODE 13 code adapts the [[MODE 5]] screen to provide a small-memory
 
The MODE 13 code adapts the [[MODE 5]] screen to provide a small-memory
version of MODE 1, 40 × 32 characters in 4 colours. It does this by
+
version of MODE 2, 20 × 32 characters in 16 colours. It does this by
 
redefining the character set to provide thin characters.
 
redefining the character set to provide thin characters.
  
Line 16: Line 16:
 
| rowspan="2" | Resolution
 
| rowspan="2" | Resolution
 
| Text
 
| Text
| 40 × 32 characters
+
| 20 × 32 characters
 
|- style="vertical-align:top"
 
|- style="vertical-align:top"
 
| Graphics
 
| Graphics
| 160 × 256
+
| 80 × 256
 
|- style="vertical-align:top"
 
|- style="vertical-align:top"
 
| Character size
 
| Character size
Line 28: Line 28:
 
|- style="vertical-align:top"
 
|- style="vertical-align:top"
 
| Bits per pixel
 
| Bits per pixel
| 2
+
| 4
 
|- style="vertical-align:top"
 
|- style="vertical-align:top"
| rowspan="5" | Default palette
+
| rowspan="17" | Default palette
 
! Logical colour
 
! Logical colour
 
! Actual colour
 
! Actual colour
Line 41: Line 41:
 
|- style="vertical-align:top"
 
|- style="vertical-align:top"
 
| 2
 
| 2
 +
| 2 (green)
 +
|- style="vertical-align:top"
 +
| 3
 
| 3 (yellow)
 
| 3 (yellow)
 
|- style="vertical-align:top"
 
|- style="vertical-align:top"
| 3
+
| 4
 +
| 4 (blue)
 +
|- style="vertical-align:top"
 +
| 5
 +
| 5 (magenta)
 +
|- style="vertical-align:top"
 +
| 6
 +
| 6 (cyan)
 +
|- style="vertical-align:top"
 +
| 7
 
| 7 (white)
 
| 7 (white)
 +
|- style="vertical-align:top"
 +
| 8
 +
| 8 (flashing black/white)
 +
|- style="vertical-align:top"
 +
| 9
 +
| 9 (flashing red/cyan)
 +
|- style="vertical-align:top"
 +
| 10
 +
| 10 (flashing green/magenta)
 +
|- style="vertical-align:top"
 +
| 11
 +
| 11 (flashing yellow/blue)
 +
|- style="vertical-align:top"
 +
| 12
 +
| 12 (flashing blue/yellow)
 +
|- style="vertical-align:top"
 +
| 13
 +
| 13 (flashing magenta/green)
 +
|- style="vertical-align:top"
 +
| 14
 +
| 14 (flashing cyan/red)
 +
|- style="vertical-align:top"
 +
| 15
 +
| 15 (flashing white/black)
 
|- style="vertical-align:top"
 
|- style="vertical-align:top"
 
| rowspan="2" | Memory
 
| rowspan="2" | Memory
Line 59: Line 95:
 
| rowspan="3" | Configuration
 
| rowspan="3" | Configuration
 
| [[Video ULA]] control register
 
| [[Video ULA]] control register
| &84
+
| &C0
 
|- style="vertical-align:top"
 
|- style="vertical-align:top"
 
| Video ULA palette register file
 
| Video ULA palette register file
| &07 &17 &26 &36 &47 &57 &66 &76<br> &84 &94 &A0 &B0 &C4 &D4 &E0 &F0
+
| &07 &16 &25 &34 &43 &52 &61 &70<br> &8F &9E &AD &BC &CB &DA &E9 &F8
 
|- style="vertical-align:top"
 
|- style="vertical-align:top"
 
| [[CRTC]] register file
 
| [[CRTC]] register file
| &3F &28 &31 &24 &26 &00<br> &20 &22 &01 &07 &67 &08
+
| &3F &28 &31 &24 &26 &00<br> &20 &22 &01 &07 &67 &08<br> (from table in [[MOS 1.20]] at &C486..&C491)
 
|}
 
|}
  
Line 73: Line 109:
 
     BASIC:
 
     BASIC:
 
     MODE 5    :REM Base MODE
 
     MODE 5    :REM Base MODE
     ?&30A=39   :REM Characters per line
+
     ?&30A=19   :REM Characters per line
     ?&34F=8    :REM Bytes per character
+
     ?&34F=16  :REM Bytes per character
     *FX154,132
+
    ?&361=1    :REM Pixels per byte
 +
    ?&362=&AA  :REM Pixel left mask
 +
    ?&363=&55  :REM Pixel right mask
 +
     *FX154,192
 
      
 
      
 
     6502:
 
     6502:
 
     LDA #22:JSR OSWRCH
 
     LDA #22:JSR OSWRCH
     LDA #05:JSR OSWRCH         \ Base MODE
+
     LDA #05:JSR OSWRCH           \ Base MODE
     LDA #&27:STA &30A           \ Characters per line
+
     LDA #&13:STA &30A           \ Characters per line
     LDA #&08:STA &34F           \ Byte per character
+
     LDA #&10:STA &34F           \ Byte per character
     LDA #154:LDX #84:JSR OSBYTE \ Cursor width
+
    LDA #&01:STA &361            \ Pixels per byte
 +
    LDA #&AA:STA &362            \ Pixel left mask
 +
    LDA #&55:STA &363            \ Pixel right mask
 +
     LDA #154:LDX #192:JSR OSBYTE \ Cursor width
  
 
The character set needs to be redefined to be four pixels wide, such as with
 
The character set needs to be redefined to be four pixels wide, such as with

Revision as of 02:15, 13 October 2016

Demonstration of 'MODE 13' (BBC)

MODE 13 is the unofficial title of a low-resolution screen MODE, selectable with the *MODE command or the NewModes sideways ROM module.[1]

The MODE 13 code adapts the MODE 5 screen to provide a small-memory version of MODE 2, 20 × 32 characters in 16 colours. It does this by redefining the character set to provide thin characters.

'MODE 13'
Type Bitmapped
Resolution Text 20 × 32 characters
Graphics 80 × 256
Character size 4 × 8 pixels
Pixel aspect 2:1 (wide)
Bits per pixel 4
Default palette Logical colour Actual colour
0 0 (black)
1 1 (red)
2 2 (green)
3 3 (yellow)
4 4 (blue)
5 5 (magenta)
6 6 (cyan)
7 7 (white)
8 8 (flashing black/white)
9 9 (flashing red/cyan)
10 10 (flashing green/magenta)
11 11 (flashing yellow/blue)
12 12 (flashing blue/yellow)
13 13 (flashing magenta/green)
14 14 (flashing cyan/red)
15 15 (flashing white/black)
Memory allocated 10240 bytes
on screen 10240 bytes
Address range Model B etc. &5800..&7FFF
Configuration Video ULA control register &C0
Video ULA palette register file &07 &16 &25 &34 &43 &52 &61 &70
&8F &9E &AD &BC &CB &DA &E9 &F8
CRTC register file &3F &28 &31 &24 &26 &00
&20 &22 &01 &07 &67 &08
(from table in MOS 1.20 at &C486..&C491)

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

   BASIC:
   MODE 5     :REM Base MODE
   ?&30A=19   :REM Characters per line
   ?&34F=16   :REM Bytes per character
   ?&361=1    :REM Pixels per byte
   ?&362=&AA  :REM Pixel left mask
   ?&363=&55  :REM Pixel right mask
   *FX154,192
   
   6502:
   LDA #22:JSR OSWRCH
   LDA #05:JSR OSWRCH           \ Base MODE
   LDA #&13:STA &30A            \ Characters per line
   LDA #&10:STA &34F            \ Byte per character
   LDA #&01:STA &361            \ Pixels per byte
   LDA #&AA:STA &362            \ Pixel left mask
   LDA #&55:STA &363            \ Pixel right mask
   LDA #154:LDX #192:JSR OSBYTE \ Cursor width

The character set needs to be redefined to be four pixels wide, such as with the one used with NewModes.

See Also

References

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

Jgharston (talk) 13:04, 8 October 2016 (UTC)