Browse Source

Fix Incorrect assembly vga buffer clear

Preliminary 80x60 format. Needs 8x8 font.
pull/67/head
b1ackmai1er 6 years ago
parent
commit
23d0061fb1
  1. 2
      Source/HBIOS/hbios.inc
  2. 6
      Source/HBIOS/ppide.asm
  3. 1
      Source/HBIOS/std.asm
  4. 61
      Source/HBIOS/vga.asm

2
Source/HBIOS/hbios.inc

@ -124,7 +124,7 @@ VDADEV_VDU .EQU $00 ; ECB VDU - MOTOROLA 6545
VDADEV_CVDU .EQU $10 ; ECB COLOR VDU - MOS 8563
VDADEV_NEC .EQU $20 ; ECB UPD7220 - NEC UPD7220
VDADEV_TMS .EQU $30 ; N8 ONBOARD VDA SUBSYSTEM - TMS 9918
VDADEV_VGA .EQU $40 ; VGA
VDADEV_VGA .EQU $40 ; ECB VGA3 - HITACHI HD6445
;
; EMULATION TYPES
;

6
Source/HBIOS/ppide.asm

@ -1146,7 +1146,7 @@ PPIDE_WAITRDY:
LD A,(PPIDE_TIMEOUT) ; GET TIMEOUT IN 0.05 SECS
LD B,A ; PUT IN OUTER LOOP VAR
PPIDE_WAITRDY1:
LD DE,(PPIDE_TOSCALER) ; CPU SPPED SCALER TO INNER LOOP VAR
LD DE,(PPIDE_TOSCALER) ; CPU SPEED SCALER TO INNER LOOP VAR
PPIDE_WAITRDY2:
;IN A,(PPIDE_REG_STAT) ; READ STATUS
CALL PPIDE_IN
@ -1168,7 +1168,7 @@ PPIDE_WAITDRQ:
LD A,(PPIDE_TIMEOUT) ; GET TIMEOUT IN 0.05 SECS
LD B,A ; PUT IN OUTER LOOP VAR
PPIDE_WAITDRQ1:
LD DE,(PPIDE_TOSCALER) ; CPU SPPED SCALER TO INNER LOOP VAR
LD DE,(PPIDE_TOSCALER) ; CPU SPEED SCALER TO INNER LOOP VAR
PPIDE_WAITDRQ2:
;IN A,(PPIDE_REG_STAT) ; READ STATUS
CALL PPIDE_IN
@ -1190,7 +1190,7 @@ PPIDE_WAITBSY:
LD A,(PPIDE_TIMEOUT) ; GET TIMEOUT IN 0.05 SECS
LD B,A ; PUT IN OUTER LOOP VAR
PPIDE_WAITBSY1:
LD DE,(PPIDE_TOSCALER) ; CPU SPPED SCALER TO INNER LOOP VAR
LD DE,(PPIDE_TOSCALER) ; CPU SPEED SCALER TO INNER LOOP VAR
PPIDE_WAITBSY2:
;IN A,(PPIDE_REG_STAT) ; READ STATUS
CALL PPIDE_IN ; 17TS + 170TS

1
Source/HBIOS/std.asm

@ -285,6 +285,7 @@ V80X30 .EQU 2 ; ECB-VDU, ECB-VGA3
V80X25B .EQU 3 ; ECB-VDU
V80X24B .EQU 4 ; ECB-VDU
V80X43 .EQU 5 ; ECB-VGA3
V80X60 .EQU 6 ; ECB-VGA3
;
; KEYBOARD LAYOUTS
;

61
Source/HBIOS/vga.asm

@ -31,21 +31,32 @@ VGA_ULIN .EQU 1 ; UNDERLINE CURSOR
;
VGA_CSTY .EQU VGA_BLOK ; DEFAULT CURSOR STYLE
VGA_BLNK .EQU VGA_NOBL ; DEFAULT BLINK RATE
VGA_9BIT .EQU $0101 ; 9 BIT MSK-CFG
VGA_8BIT .EQU $0000 ; 8 BIT MSK-CFG
;
#IF (VGASIZ=V80X25)
VGA_ROWS .EQU 25
VGA_COLS .EQU 80
VGA_SCANL .EQU 16
VGA_89BIT .EQU VGA_8BIT
#ENDIF
#IF (VGASIZ=V80X30)
VGA_ROWS .EQU 30
VGA_COLS .EQU 80
VGA_SCANL .EQU 16
VGA_89BIT .EQU VGA_8BIT
#ENDIF
#IF (VGASIZ=V80X43)
VGA_ROWS .EQU 43
VGA_COLS .EQU 80
VGA_SCANL .EQU 11
VGA_89BIT .EQU VGA_8BIT
#ENDIF
#IF (VGASIZ=V80X60)
VGA_ROWS .EQU 60
VGA_COLS .EQU 80
VGA_SCANL .EQU 8
VGA_89BIT .EQU VGA_8BIT
#ENDIF
;
#IF VGA_CSTY=VGA_BLOK
@ -167,13 +178,13 @@ VGA_VDARES:
LD DE,0 ; ROW = 0, COL = 0
CALL VGA_XY ; SEND CURSOR TO TOP LEFT
LD A,' ' ; BLANK THE SCREEN
LD DE,(VGA_ROWS*VGA_COLS) ; FILL ENTIRE BUFFER
LD A,'X' ; BLANK THE SCREEN
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
LD HL,$0404 ; SET VIDEO ENABLE BIT
LD HL,$0404 | VGA_89BIT; SET VIDEO ENABLE BIT
CALL VGA_SETCFG ; DO IT
XOR A
@ -450,7 +461,7 @@ VGA_PROBE:
;----------------------------------------------------------------------
;
VGA_CRTINIT:
LD HL,$FF00 ; ZERO ALL CFG BITS
LD HL,$FF00 | VGA_89BIT ; INITIAL CFG BITS
CALL VGA_SETCFG ; DO IT
CALL VGA_RES ; RESET CRTC (ALL REGS TO ZERO)
@ -493,7 +504,7 @@ VGA_CRTCDUMP1:
;----------------------------------------------------------------------
;
VGA_LOADFONT:
LD HL,$7000 ; CLEAR FONT PAGE NUM
LD HL,$7000 | VGA_89BIT ; CLEAR FONT PAGE NUM
CALL VGA_SETCFG
LD DE,$7000 ; PAGE 7 OF VIDEO RAM
@ -506,7 +517,7 @@ VGA_LOADFONT1:
LD A,D
CP $80 ; CHECK FOR END
JR NZ,VGA_LOADFONT1 ; LOOP
LD HL,$7070 ; SET FONT PAGE NUM TO 7
LD HL,$7070 | VGA_89BIT ; SET FONT PAGE NUM TO 7
CALL VGA_SETCFG
RET ; DONE
;
@ -865,18 +876,18 @@ VGA_RUB .DB 0 ; REVERSE/UNDERLINE/BLINK (-----RUB)
;
#IF (VGASIZ=V80X25)
;===============================================================================
; 80x25 70hz REGISTER VALUES
; 80x25x8 70hz 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 1,VGA_COLS ; HORZ DISP
.DB 2,VGA_COLS + 2 ; HORZ DISP + HORZ FP
.DB 3,(2 << 4) | (12 & $0F) ; VERT SW, HORZ SW
.DB 4,28 - 1 ; VERT TOT - 1
.DB 5,1 ; VERT TOT ADJ
.DB 6,25 ; VERT DISP
.DB 7,25 + 0 ; VERT DISP + VERT FP ROWS
.DB 6,VGA_ROWS ; VERT DISP
.DB 7,VGA_ROWS + 0 ; VERT DISP + VERT FP ROWS
.DB 9,16 - 1 ; CHAR HEIGHT - 1
.DB 10,VGA_R10 ; CURSOR START & CURSOR BLINK
.DB 11,VGA_R11 ; CURSOR END
@ -890,7 +901,7 @@ REGS_VGA:
#ENDIF
#IF (VGASIZ=V80X30)
;===============================================================================
; 80x30 60hz REGISTER VALUES
; 80x30x8 60hz REGISTER VALUES
;===============================================================================
;
REGS_VGA:
@ -914,7 +925,7 @@ REGS_VGA:
#ENDIF
#IF (VGASIZ=V80X43)
;===============================================================================
; 80x43 60hz REGISTER VALUES
; 80x43x8 60hz REGISTER VALUES
;===============================================================================
;
REGS_VGA:
@ -936,6 +947,30 @@ REGS_VGA:
.DB 30,$01 | $08 ; CTL 1, 2 WINDOWS & ENABLE R27 VSYNC FINE ADJ
.DB $FF ; END MARKER
#ENDIF
#IF (VGASIZ=V80X60)
;===============================================================================
; 90x60X8 60hz REGISTER VALUES
;===============================================================================
;
REGS_VGA:
.DB 0,100 - 1 ; HORZ TOT - 1
.DB 1,VGA_COLS ; HORZ DISP
.DB 2,VGA_COLS + 2 ; HORZ DISP + HORZ FP
.DB 3,44 ; VERT SW, HORZ SW
.DB 4,66 - 1 ; VERT TOT - 1
.DB 5,0 ; VERT TOT ADJ
.DB 6,VGA_ROWS ; VERT DISP
.DB 7,VGA_ROWS + 0 ; VERT DISP + VERT FP ROWS
.DB 9,8 - 1 ; CHAR HEIGHT - 1
.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
.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