Browse Source

Update vdu.asm

pull/52/head
b1ackmai1er 6 years ago
parent
commit
11857925d2
  1. 86
      Source/HBIOS/vdu.asm

86
Source/HBIOS/vdu.asm

@ -567,12 +567,33 @@ VDU_POS .DW 0 ; CURRENT DISPLAY POSITION
VDU_OFFSET .DW 0 ; CURRENT DISPLAY POSITION
VDU_BUF .FILL 256,0 ; COPY BUFFER
;
;==================================================================================================
; ECB-VDU VIDEO MODE DESCRIPTION
;==================================================================================================\
;
; CCIR 625/50 VERSION (USED IN MOST OF THE WORLD)
; JUMPER K1 2-3, K2 1-2 FOR 2MHz CHAR CLOCK
;
; THE CCIR 625/50 TELEVISION STANDARD HAS 625 LINES INTERLACED AT 50 FIELDS PER SECOND. THIS WORKS
; OUT AS 50 FIELDS OF 312.5 LINES PER SECOND NON-INTERLACED AS USED HERE.
; HORIZONTAL LINE WIDTH IS 64uS. FOR A 2 MHz CHARACTER CLOCK (R0+1)/2000000 = 64uS
; NEAREST NUMBER OF LINES IS 312 = (R4+1) * (R9+1) + R5.
; 15625 / 312 = 50.08 FIELDS PER SECOND (NEAR ENOUGH-DGG)
;
;
; .DB 078H ; R8 MODE B7=0 TRANSPARENT UPDATE DURING BLANKING
; ; B6=1 PIN 34 IS UPDATE STROBE
; ; B5=1 DELAY CURSOR 1 CHARACTER
; ; B4=1 DELAY DISPLAY ENABLE 1 CHARACTER
; ; B3=1 TRANSPARENT MEMORY ADDRESSING
; ; B2=0 RAM STRAIGHT BINARY ADDRESSING
; ; B1,B0=0 NON-INTERLACE
VDU_INIT6845:
#IF (VDUSIZ=V80X24)
;==================================================================================================
; VDU DRIVER - SY6845 REGISTER INITIALIZATION -80x24 10x8
;==================================================================================================
;
VDU_INIT6845:
.DB 07FH ; R0 TOTAL NUMBER OF HORIZONTAL CHARACTERS (DETERMINES HSYNC)
.DB DROWS ; R1 NUMBER OF HORIZONTAL CHARACTERS DISPLAYED (80 COLUMNS)
.DB 060H ; R2 HORIZONTAL SYNC POSITION
@ -581,13 +602,7 @@ VDU_INIT6845:
.DB 002H ; R5 VERTICAL TOTAL ADJUST (
.DB DLINES ; R6 VERTICAL DISPLAYED (24 ROWS)
.DB 01AH ; R7 VERTICAL SYNC
.DB 078H ; R8 MODE B7=0 TRANSPARENT UPDATE DURING BLANKING
; B6=1 PIN 34 IS UPDATE STROBE
; B5=1 DELAY CURSOR 1 CHARACTER
; B4=1 DELAY DISPLAY ENABLE 1 CHARACTER
; B3=1 TRANSPARENT MEMORY ADDRESSING
; B2=0 RAM STRAIGHT BINARY ADDRESSING
; B1,B0=0 NON-INTERLACE
.DB 078H ; R8 MODE
.DB DSCANL-1 ; R9 SCAN LINE (LINES PER CHAR AND SPACING -1)
.DB VDU_R10 ; R10 CURSOR START RASTER
.DB VDU_R11 ; R11 CURSOR END RASTER
@ -595,13 +610,12 @@ VDU_INIT6845:
.DB 00H ; R13 START ADDRESS LO
.DB 00H ; R14 CURSOR ADDRESS HI
.DB 00H ; R15 CURSOR ADDRESS LO
;
#ENDIF
#IF (VDUSIZ=V80X25)
;==================================================================================================
; VDU DRIVER - SY6845 REGISTER INITIALIZATION -80x25 10x8
;==================================================================================================
VDU_INIT6845:
;
.DB 07FH ; R0 TOTAL NUMBER OF HORIZONTAL CHARACTERS (DETERMINES HSYNC)
.DB DROWS ; R1 NUMBER OF HORIZONTAL CHARACTERS DISPLAYED =80
.DB 060H ; R2 HORIZONTAL SYNC POSITION
@ -610,13 +624,7 @@ VDU_INIT6845:
.DB 002H ; R5 VERTICAL TOTAL ADJUST (
.DB DLINES ; R6 VERTICAL DISPLAYED (25 ROWS)
.DB 01BH ; R7 VERTICAL SYNC
.DB 078H ; R8 MODE B7=0 TRANSPARENT UPDATE DURING BLANKING
; ; B6=1 PIN 34 IS UPDATE STROBE
; ; B5=1 DELAY CURSOR 1 CHARACTER
; ; B4=1 DELAY DISPLAY ENABLE 1 CHARACTER
; ; B3=1 TRANSPARENT MEMORY ADDRESSING
; ; B2=0 RAM STRAIGHT BINARY ADDRESSING
; ; B1,B0=0 NON-INTERLACE
.DB 078H ; R8 MODE
.DB DSCANL-1 ; R9 SCAN LINE (LINES PER CHAR AND SPACING -1)
.DB VDU_R10 ; R10 CURSOR START RASTER
.DB VDU_R11 ; R11 CURSOR END RASTER
@ -624,13 +632,12 @@ VDU_INIT6845:
.DB 00H ; R13 START ADDRESS LO
.DB 00H ; R14 CURSOR ADDRESS HI
.DB 00H ; R15 CURSOR ADDRESS LO
;
#ENDIF
#IF (VDUSIZ=V80X30)
;==================================================================================================
; VDU DRIVER - SY6845 REGISTER INITIALIZATION -80x30 8x8
;==================================================================================================
VDU_INIT6845:
;
.DB 07FH ; R0 TOTAL NUMBER OF HORIZONTAL CHARACTERS (DETERMINES HSYNC)
.DB DROWS ; R1 NUMBER OF HORIZONTAL CHARACTERS DISPLAYED =80
.DB 060H ; R2 HORIZONTAL SYNC POSITION
@ -639,13 +646,7 @@ VDU_INIT6845:
.DB 00H ; R5 VERTICAL TOTAL ADJUST (
.DB DLINES ; R6 VERTICAL DISPLAYED (30 ROWS)
.DB 22H ; R7 VERTICAL SYNC
.DB 078H ; R8 MODE B7=0 TRANSPARENT UPDATE DURING BLANKING
; ; B6=1 PIN 34 IS UPDATE STROBE
; ; B5=1 DELAY CURSOR 1 CHARACTER
; ; B4=1 DELAY DISPLAY ENABLE 1 CHARACTER
; ; B3=1 TRANSPARENT MEMORY ADDRESSING
; ; B2=0 RAM STRAIGHT BINARY ADDRESSING
; ; B1,B0=0 NON-INTERLACE
.DB 078H ; R8 MODE
.DB DSCANL-1 ; R9 SCAN LINE (LINES PER CHAR AND SPACING -1)
.DB VDU_R10 ; R10 CURSOR START RASTER
.DB VDU_R11 ; R11 CURSOR END RASTER
@ -653,13 +654,12 @@ VDU_INIT6845:
.DB 00H ; R13 START ADDRESS LO
.DB 00H ; R14 CURSOR ADDRESS HI
.DB 00H ; R15 CURSOR ADDRESS LO
;
#ENDIF
#IF (VDUSIZ=V80X25B)
;==================================================================================================
; VDU DRIVER - SY6845 REGISTER INITIALIZATION -80x25 12x8 TO SUIT BLOCK GRAPHICS
;==================================================================================================
VDU_INIT6845:
;
.DB 07FH ; R0 TOTAL NUMBER OF HORIZONTAL CHARACTERS (DETERMINES HSYNC)
.DB DROWS ; R1 NUMBER OF HORIZONTAL CHARACTERS DISPLAYED =80
.DB 060H ; R2 HORIZONTAL SYNC POSITION
@ -668,13 +668,7 @@ VDU_INIT6845:
.DB 00H ; R5 VERTICAL TOTAL ADJUST (312-(R4+1)*DSCANL)
.DB DLINES ; R6 VERTICAL DISPLAY
.DB 019H ; R7 VERTICAL SYNC (DLINES .. R4)
.DB 078H ; R8 MODE B7=0 TRANSPARENT UPDATE DURING BLANKING
; ; B6=1 PIN 34 IS UPDATE STROBE
; ; B5=1 DELAY CURSOR 1 CHARACTER
; ; B4=1 DELAY DISPLAY ENABLE 1 CHARACTER
; ; B3=1 TRANSPARENT MEMORY ADDRESSING
; ; B2=0 RAM STRAIGHT BINARY ADDRESSING
; ; B1,B0=0 NON-INTERLACE
.DB 078H ; R8 MODE
.DB DSCANL-1 ; R9 SCAN LINE (LINES PER CHAR AND SPACING -1)
.DB VDU_R10 ; R10 CURSOR START RASTER
.DB VDU_R11 ; R11 CURSOR END RASTER
@ -682,13 +676,12 @@ VDU_INIT6845:
.DB 00H ; R13 START ADDRESS LO
.DB 00H ; R14 CURSOR ADDRESS HI
.DB 00H ; R15 CURSOR ADDRESS LO
;
#ENDIF
#IF (VDUSIZ=V80X24B)
;==================================================================================================
; VDU DRIVER - SY6845 REGISTER INITIALIZATION -80x24 12x8 TO SUIT BLOCK GRAPHICS
;==================================================================================================
VDU_INIT6845:
;
.DB 07FH ; R0 TOTAL NUMBER OF HORIZONTAL CHARACTERS (DETERMINES HSYNC)
.DB DROWS ; R1 NUMBER OF HORIZONTAL CHARACTERS DISPLAYED =80
.DB 060H ; R2 HORIZONTAL SYNC POSITION
@ -697,13 +690,7 @@ VDU_INIT6845:
.DB 00H ; R5 VERTICAL TOTAL ADJUST (312-(R4+1)*DSCANL)
.DB DLINES ; R6 VERTICAL DISPLAY
.DB 018H ; R7 VERTICAL SYNC (DLINES .. R4)
.DB 078H ; R8 MODE B7=0 TRANSPARENT UPDATE DURING BLANKING
; ; B6=1 PIN 34 IS UPDATE STROBE
; ; B5=1 DELAY CURSOR 1 CHARACTER
; ; B4=1 DELAY DISPLAY ENABLE 1 CHARACTER
; ; B3=1 TRANSPARENT MEMORY ADDRESSING
; ; B2=0 RAM STRAIGHT BINARY ADDRESSING
; ; B1,B0=0 NON-INTERLACE
.DB 078H ; R8 MODE
.DB DSCANL-1 ; R9 SCAN LINE (LINES PER CHAR AND SPACING -1)
.DB VDU_R10 ; R10 CURSOR START RASTER
.DB VDU_R11 ; R11 CURSOR END RASTER
@ -713,17 +700,8 @@ VDU_INIT6845:
.DB 00H ; R15 CURSOR ADDRESS LO
;
#ENDIF
; CCIR 625/50 VERSION (USED IN MOST OF THE WORLD)
; JUMPER K1 2-3, K2 1-2 FOR 2MHz CHAR CLOCK
;
; THE CCIR 625/50 TELEVISION STANDARD HAS 625 LINES INTERLACED AT 50 FIELDS PER SECOND. THIS WORKS
; OUT AS 50 FIELDS OF 312.5 LINES PER SECOND NON-INTERLACED AS USED HERE.
; HORIZONTAL LINE WIDTH IS 64uS. FOR A 2 MHz CHARACTER CLOCK (R0+1)/2000000 = 64uS
; NEAREST NUMBER OF LINES IS 312 = (R4+1) * (R9+1) + R5.
; 15625 / 312 = 50.08 FIELDS PER SECOND (NEAR ENOUGH-DGG)
;
;
;==================================================================================================
;;==================================================================================================
; VDU DRIVER - INSTANCE DATA
;==================================================================================================
;

Loading…
Cancel
Save