Browse Source

Add 80x30 screen format to VGA3 driver

pull/65/head
b1ackmai1er 6 years ago
parent
commit
276de14ff6
  1. 1
      Source/HBIOS/cfg_master.asm
  2. 1
      Source/HBIOS/cfg_mk4.asm
  3. 1
      Source/HBIOS/cfg_n8.asm
  4. 1
      Source/HBIOS/cfg_sbc.asm
  5. 12
      Source/HBIOS/std.asm
  6. 39
      Source/HBIOS/vga.asm

1
Source/HBIOS/cfg_master.asm

@ -142,6 +142,7 @@ NECENABLE .EQU FALSE ; NEC: ENABLE NEC UPD7220 VIDEO/KBD DRIVER (NEC.ASM)
TMSENABLE .EQU FALSE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM)
TMSMODE .EQU TMSMODE_NONE ; TMS: DRIVER MODE: TMSMODE_[SCG/N8]
VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM)
VGASIZ .EQU V80X30 ; VGA: DISPLAY FORMAT [V80X24|V80X30]
;
SPKENABLE .EQU FALSE ; SPK: ENABLE RTC LATCH IOBIT SOUND DRIVER (SPK.ASM)
;

1
Source/HBIOS/cfg_mk4.asm

@ -97,6 +97,7 @@ NECENABLE .EQU FALSE ; NEC: ENABLE NEC UPD7220 VIDEO/KBD DRIVER (NEC.ASM)
TMSENABLE .EQU FALSE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM)
TMSMODE .EQU TMSMODE_SCG ; TMS: DRIVER MODE: TMSMODE_[SCG/N8]
VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM)
VGASIZ .EQU V80X25 ; VGA: DISPLAY FORMAT [V80X25|V80X30]
;
SPKENABLE .EQU FALSE ; SPK: ENABLE RTC LATCH IOBIT SOUND DRIVER (SPK.ASM)
;

1
Source/HBIOS/cfg_n8.asm

@ -100,6 +100,7 @@ NECENABLE .EQU FALSE ; NEC: ENABLE NEC UPD7220 VIDEO/KBD DRIVER (NEC.ASM)
TMSENABLE .EQU TRUE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM)
TMSMODE .EQU TMSMODE_N8 ; TMS: DRIVER MODE: TMSMODE_[SCG/N8]
VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM)
VGASIZ .EQU V80X25 ; VGA: DISPLAY FORMAT [V80X25|V80X30]
;
SPKENABLE .EQU FALSE ; SPK: ENABLE RTC LATCH IOBIT SOUND DRIVER (SPK.ASM)
;

1
Source/HBIOS/cfg_sbc.asm

@ -100,6 +100,7 @@ NECENABLE .EQU FALSE ; NEC: ENABLE NEC UPD7220 VIDEO/KBD DRIVER (NEC.ASM)
TMSENABLE .EQU FALSE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM)
TMSMODE .EQU TMSMODE_SCG ; TMS: DRIVER MODE: TMSMODE_[SCG/N8]
VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM)
VGASIZ .EQU V80X25 ; VGA: DISPLAY FORMAT [V80X25|V80X30]
;
SPKENABLE .EQU FALSE ; SPK: ENABLE RTC LATCH IOBIT SOUND DRIVER (SPK.ASM)
;

12
Source/HBIOS/std.asm

@ -277,13 +277,13 @@ SER_7372800_8N1 .EQU SER_BAUD7372800 | SER_DATA8 | SER_PARNONE | SER_STOP1
;
TERMENABLE .EQU FALSE ; TERM PSEUDO DEVICE, WILL AUTO-ENABLE IF A VDA IS ENABLED
;
; ECB-VDU MODES
; VIDEO MODES
;
V80X24 .EQU 0
V80X25 .EQU 1
V80X30 .EQU 2
V80X25B .EQU 3
V80X24B .EQU 4
V80X24 .EQU 0 ; ECB-VDU
V80X25 .EQU 1 ; ECB-VDU, ECB-VGA3
V80X30 .EQU 2 ; ECB-VDU, ECB-VGA3
V80X25B .EQU 3 ; ECB-VDU
V80X24B .EQU 4 ; ECB-VDU
;
; KEYBOARD LAYOUTS
;

39
Source/HBIOS/vga.asm

@ -21,8 +21,16 @@ VGA_HI .EQU VGA_BASE + $05 ; BOARD RAM HI ADDRESS
VGA_LO .EQU VGA_BASE + $06 ; BOARD RAM LO ADDRESS
VGA_DAT .EQU VGA_BASE + $07 ; BOARD RAM BYTE R/W
;
#IF (VGASIZ=V80X25)
VGA_ROWS .EQU 25
VGA_COLS .EQU 80
VGA_SCANL .EQU 16
#ENDIF
#IF (VGASIZ=V80X30)
VGA_ROWS .EQU 30
VGA_COLS .EQU 80
VGA_SCANL .EQU 16
#ENDIF
;
#DEFINE DEFREGS REGS_VGA
;
@ -134,7 +142,7 @@ VGA_VDARES:
LD DE,0 ; ROW = 0, COL = 0
CALL VGA_XY ; SEND CURSOR TO TOP LEFT
LD A,' ' ; BLANK THE SCREEN
LD DE,$800 ; FILL ENTIRE BUFFER
LD DE,(VGA_ROWS*VGA_COLS) ; FILL ENTIRE BUFFER
CALL VGA_FILL ; DO IT
LD DE,0 ; ROW = 0, COL = 0
CALL VGA_XY ; SEND CURSOR TO TOP LEFT
@ -514,7 +522,7 @@ VGA_XY2IDX1:
RET ; RETURN
;
;----------------------------------------------------------------------
; WRITE VALUE IN A TO CURRENT VDU BUFFER POSTION, ADVANCE CURSOR
; WRITE VALUE IN A TO CURRENT VDU BUFFER POSITION, ADVANCE CURSOR
;----------------------------------------------------------------------
;
VGA_PUTCHAR:
@ -829,8 +837,9 @@ VGA_RUB .DB 0 ; REVERSE/UNDERLINE/BLINK (-----RUB)
; BIT 1: FG GREEN
; BIT 0: FG BLUE
;
#IF (VGASIZ=V80X25)
;===============================================================================
; DEFAULT REGISTER VALUES
; 80x25 REGISTER VALUES
;===============================================================================
;
REGS_VGA:
@ -852,7 +861,31 @@ REGS_VGA:
.DB 30,$01 | $08 ; CTL 1, 2 WINDOWS & ENABLE R27 VSYNC FINE ADJ
.DB $FF ; END MARKER
#ENDIF
#IF (VGASIZ=V80X30)
;===============================================================================
; 80x30 REGISTER VALUES
;===============================================================================
;
REGS_VGA:
.DB 0,100 - 1 ; HORZ TOT - 1
.DB 1,80 ; HORZ DISP
.DB 2,80 + 2 ; HORZ DISP + HORZ FP
.DB 3,44 ; VERT SW, HORZ SW
.DB 4,33 - 1 ; VERT TOT - 1
.DB 5,13 ; VERT TOT ADJ
.DB 6,30 ; VERT DISP
.DB 7,30 + 0 ; VERT DISP + VERT FP ROWS
.DB 9,16 - 1 ; CHAR HEIGHT - 1
.DB 10,109 ; CURSOR START & CURSOR BLINK
.DB 11,14 ; CURSOR END
.DB 12,0 ; SCRN 1 START (HI)
.DB 13,0 ; SCRN 1 START (LO)
.DB 18,-1 ; S2 ROW - 1
.DB 27,0 ; VERT SYNC POS ADJ
.DB 30,$01 | $08 ; CTL 1, 2 WINDOWS & ENABLE R27 VSYNC FINE ADJ
.DB $FF ; END MARKER
#ENDIF
;==================================================================================================
; VGA DRIVER - INSTANCE DATA
;==================================================================================================

Loading…
Cancel
Save