From 11857925d2dfbf56eca3d1d9d19351d8e4c1e32f Mon Sep 17 00:00:00 2001 From: b1ackmai1er Date: Sun, 20 Oct 2019 22:43:13 +0800 Subject: [PATCH] Update vdu.asm --- Source/HBIOS/vdu.asm | 86 +++++++++++++++++--------------------------- 1 file changed, 32 insertions(+), 54 deletions(-) diff --git a/Source/HBIOS/vdu.asm b/Source/HBIOS/vdu.asm index 43629163..e1b220d6 100644 --- a/Source/HBIOS/vdu.asm +++ b/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 ;================================================================================================== ;