From 60f96f32441b850d073d80758b7c9211538fb91c Mon Sep 17 00:00:00 2001 From: b1ackmai1er Date: Fri, 10 Jan 2020 20:11:19 +0800 Subject: [PATCH] Add cursor support fo VGA 80x43 mode Align with VDU driver --- Source/HBIOS/vga.asm | 33 +++++++++++++++++++++++++++------ 1 file changed, 27 insertions(+), 6 deletions(-) diff --git a/Source/HBIOS/vga.asm b/Source/HBIOS/vga.asm index 30203a39..e6875dbb 100644 --- a/Source/HBIOS/vga.asm +++ b/Source/HBIOS/vga.asm @@ -21,6 +21,17 @@ 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 ; +VGA_NOBL .EQU 00000000B ; NO BLINK +VGA_NOCU .EQU 00100000B ; NO CURSOR +VGA_BFAS .EQU 01000000B ; BLINK AT X16 RATE +VGA_BSLO .EQU 01100000B ; BLINK AT X32 RATE +; +VGA_BLOK .EQU 0 ; BLOCK CURSOR +VGA_ULIN .EQU 1 ; UNDERLINE CURSOR +; +VGA_CSTY .EQU VGA_BLOK ; DEFAULT CURSOR STYLE +VGA_BLNK .EQU VGA_NOBL ; DEFAULT BLINK RATE +; #IF (VGASIZ=V80X25) VGA_ROWS .EQU 25 VGA_COLS .EQU 80 @@ -37,6 +48,16 @@ VGA_COLS .EQU 80 VGA_SCANL .EQU 11 #ENDIF ; +#IF VGA_CSTY=VGA_BLOK +VGA_R10 .EQU (VGA_BLNK + $00) +VGA_R11 .EQU VGA_SCANL-1 +#ENDIF +; +#IF VGA_CSTY=VGA_ULIN +VGA_R10 .EQU (VGA_BLNK + VGA_SCANL-1) +VGA_R11 .EQU VGA_SCANL-1 +#ENDIF +; #DEFINE DEFREGS REGS_VGA ; TERMENABLE .SET TRUE ; INCLUDE TERMINAL PSEUDODEVICE DRIVER @@ -857,8 +878,8 @@ REGS_VGA: .DB 6,25 ; VERT DISP .DB 7,25 + 0 ; VERT DISP + VERT FP ROWS .DB 9,16 - 1 ; CHAR HEIGHT - 1 - .DB 10,(13 | $60) ; CURSOR START & CURSOR BLINK - .DB 11,14 ; CURSOR END + .DB 10,VGA_R10 ; CURSOR START & CURSOR BLINK + .DB 11,VGA_R11 ; CURSOR END .DB 12,($0000 >> 8) & $FF ; SCRN 1 START (HI) .DB 13,($0000 & $FF) ; SCRN 1 START (LO) .DB 18,-1 ; S2 ROW - 1 @@ -882,8 +903,8 @@ REGS_VGA: .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 10,VGA_R10 ; CURSOR START & CURSOR BLINK + .DB 11,VGA_R11 ; CURSOR END .DB 12,0 ; SCRN 1 START (HI) .DB 13,0 ; SCRN 1 START (LO) .DB 18,-1 ; S2 ROW - 1 @@ -906,8 +927,8 @@ REGS_VGA: .DB 6,43 ; VERT DISP .DB 7,43 + 0 ; VERT DISP + VERT FP ROWS .DB 9,11 - 1 ; CHAR HEIGHT - 1 - .DB 10,109 ; CURSOR START & CURSOR BLINK - .DB 11,14 ; CURSOR END + .DB 10,VGA_R10 ; CURSOR START & CURSOR BLINK + .DB 11,VGA_R11 ; CURSOR END .DB 12,0 ; SCRN 1 START (HI) .DB 13,0 ; SCRN 1 START (LO) .DB 18,-1 ; S2 ROW - 1