From b79c1e7a2fd7f465cf1f4c540844a9ebd80731b5 Mon Sep 17 00:00:00 2001 From: Wayne Warthen Date: Mon, 4 Mar 2019 21:33:44 -0800 Subject: [PATCH 1/4] Minor Easy Z80 Tweaks Modified naming convention from EZ80 to EZZ80 to avoid confusion with Zilog eZ80 processor. --- Source/HBIOS/Config/{RC_ez80.asm => RC_ezz80.asm} | 2 +- Source/HBIOS/sio.asm | 6 +++--- Source/HBIOS/std.asm | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) rename Source/HBIOS/Config/{RC_ez80.asm => RC_ezz80.asm} (88%) diff --git a/Source/HBIOS/Config/RC_ez80.asm b/Source/HBIOS/Config/RC_ezz80.asm similarity index 88% rename from Source/HBIOS/Config/RC_ez80.asm rename to Source/HBIOS/Config/RC_ezz80.asm index 895b9075..32d9ab11 100644 --- a/Source/HBIOS/Config/RC_ez80.asm +++ b/Source/HBIOS/Config/RC_ezz80.asm @@ -10,7 +10,7 @@ DEFSIOCLK .SET 1843200 ; SIO CLOCK FREQ DEFSERCFG .SET SER_115200_8N1 ; DEFAULT SERIAL LINE CONFIG (SHOULD MATCH ABOVE) ; SIOENABLE .SET TRUE ; TRUE TO AUTO-DETECT ZILOG SIO/2 -SIOMODE .SET SIOMODE_EZ80 ; TYPE OF SIO/2 TO DETECT: SIOMODE_RC, SIOMODE_SMB, SIOMODE_EZ80 +SIOMODE .SET SIOMODE_EZZ80 ; TYPE OF SIO/2 TO DETECT: SIOMODE_RC, SIOMODE_SMB, SIOMODE_EZZ80 ACIAENABLE .SET FALSE ; TRUE TO AUTO-DETECT MOTOROLA 6850 ACIA ; FDENABLE .SET FALSE ; TRUE FOR FLOPPY SUPPORT diff --git a/Source/HBIOS/sio.asm b/Source/HBIOS/sio.asm index 02a0ddd9..2f0ef922 100644 --- a/Source/HBIOS/sio.asm +++ b/Source/HBIOS/sio.asm @@ -40,7 +40,7 @@ SIOB_CMD .EQU SIOBASE + $07 SIOB_DAT .EQU SIOBASE + $05 #ENDIF ; -#IF (SIOMODE == SIOMODE_EZ80) +#IF (SIOMODE == SIOMODE_EZZ80) SIOA_CMD .EQU SIOBASE + $01 SIOA_DAT .EQU SIOBASE + $00 SIOB_CMD .EQU SIOBASE + $03 @@ -284,7 +284,7 @@ SIO_IN: DEC C ; DECREMENT CMD PORT TWICE TO GET DATA PORT DEC C #ENDIF -#IF (SIOMODE == SIOMODE_EZ80) +#IF (SIOMODE == SIOMODE_EZZ80) DEC C ; DECREMENT CMD PORT TO GET DATA PORT #ENDIF IN E,(C) ; GET CHAR @@ -371,7 +371,7 @@ SIO_OUT: DEC C ; DECREMENT CMD PORT TWICE TO GET DATA PORT DEC C #ENDIF -#IF (SIOMODE == SIOMODE_EZ80) +#IF (SIOMODE == SIOMODE_EZZ80) DEC C ; DECREMENT CMD PORT TO GET DATA PORT #ENDIF OUT (C),E ; SEND CHAR FROM E diff --git a/Source/HBIOS/std.asm b/Source/HBIOS/std.asm index 9287f195..138419c6 100644 --- a/Source/HBIOS/std.asm +++ b/Source/HBIOS/std.asm @@ -78,7 +78,7 @@ SIOMODE_NONE .EQU 0 SIOMODE_RC .EQU 1 ; RC2014 SIO MODULE (SPENCER OWEN) SIOMODE_SMB .EQU 2 ; RC2014 SIO MODULE (SCOTT BAKER) SIOMODE_ZP .EQU 3 ; ECB-ZILOG PERIPHERALS BOARD -SIOMODE_EZ80 .EQU 4 ; EASY Z80 ON-BOARD SIO/0 +SIOMODE_EZZ80 .EQU 4 ; EASY Z80 ON-BOARD SIO/0 ; ; PIO MODE SELECTIONS ; From 20c291dea20bc3545a509ef455f73c7352cb7fc6 Mon Sep 17 00:00:00 2001 From: Wayne Warthen Date: Tue, 5 Mar 2019 21:05:08 -0800 Subject: [PATCH 2/4] VDU Driver Enhancements VDU driver enhanced to support alternate screen simensions, provided by Phil Summers --- Doc/ChangeLog.txt | 6 +- ReadMe.txt | 2 +- Source/CBIOS/ver.inc | 2 +- Source/HBIOS/Config/SBC_std.asm | 2 + Source/HBIOS/cfg_sbc.asm | 6 +- Source/HBIOS/std.asm | 20 +++-- Source/HBIOS/vdu.asm | 136 ++++++++++++++++++++++++++------ Source/HBIOS/ver.inc | 2 +- 8 files changed, 137 insertions(+), 39 deletions(-) diff --git a/Doc/ChangeLog.txt b/Doc/ChangeLog.txt index 489701db..c6ab07b7 100644 --- a/Doc/ChangeLog.txt +++ b/Doc/ChangeLog.txt @@ -13,15 +13,17 @@ Version 2.9.1 - WBW: Preliminary support for RC180 platform (Z180 module in RC2014) - WBW: Added NZCOM distribution files to third slice of hard disk image - WBW: Fixed getnum32 bug in MODE command (found by Phil Summers) -- P?S: Added serial support for Zilog Peripherals Baord +- PMS: Added serial support for Zilog Peripherals Baord - WBW: Added preliminary support for interrupt management API - PMS: Improved boot messages in RAM-Floppy driver - PMS: Added charge setting display to RTC boot messages - WBW: Add SmallZ80 support to FDU - WBW: Refactored Debug Monitor w/ improved syntax parsing and help - PMS: Added Forth, Nascom BASIC, and Tasty BASIC to ROM -- PMS: Refactored Rom Loader to support more ROM images, now table driven +- PMS: Refactored ROM Loader to support more ROM images, now table driven - WBW: Refactored DSKY code +- S?K: Initial support for Easy Z80 +- PMS: Enhance VDU driver to support alternative screen dimensions Version 2.9.0 ------------- diff --git a/ReadMe.txt b/ReadMe.txt index 46a5f004..83b9f503 100644 --- a/ReadMe.txt +++ b/ReadMe.txt @@ -7,7 +7,7 @@ *********************************************************************** Wayne Warthen (wwarthen@gmail.com) -Version 2.9.1-pre.9, 2019-02-19 +Version 2.9.1-pre.11, 2019-03-05 https://www.retrobrewcomputers.org/ RomWBW is a ROM-based implementation of CP/M-80 2.2 and Z-System for diff --git a/Source/CBIOS/ver.inc b/Source/CBIOS/ver.inc index cee4b809..00c91863 100644 --- a/Source/CBIOS/ver.inc +++ b/Source/CBIOS/ver.inc @@ -2,4 +2,4 @@ #DEFINE RMN 9 #DEFINE RUP 1 #DEFINE RTP 0 -#DEFINE BIOSVER "2.9.1-pre.10" +#DEFINE BIOSVER "2.9.1-pre.11" diff --git a/Source/HBIOS/Config/SBC_std.asm b/Source/HBIOS/Config/SBC_std.asm index 5937f8d4..6010957d 100644 --- a/Source/HBIOS/Config/SBC_std.asm +++ b/Source/HBIOS/Config/SBC_std.asm @@ -22,5 +22,7 @@ PRPENABLE .SET TRUE ; TRUE FOR PROPIO BOARD SUPPORT (VIDEO, KBD, & SD CARD) VGAENABLE .SET TRUE ; TRUE FOR VGA BOARD VIDEO & KBD SUPPORT CVDUENABLE .SET TRUE ; TRUE FOR CVDU BOARD VIDEO & KBD SUPPORT VDUENABLE .SET FALSE ; TRUE FOR VDU BOARD VIDEO & KBD SUPPORT +VDUSIZ .SET V80X24 ; DEFAULT VDU FORMAT IF ACTIVE +; ; CRTACT .SET TRUE ; TRUE TO ACTIVATE CRT AT STARTUP (BOOT ON CRT) diff --git a/Source/HBIOS/cfg_sbc.asm b/Source/HBIOS/cfg_sbc.asm index b78d09b4..1cdc364c 100644 --- a/Source/HBIOS/cfg_sbc.asm +++ b/Source/HBIOS/cfg_sbc.asm @@ -39,6 +39,7 @@ CVDUENABLE .EQU FALSE ; TRUE FOR CVDU BOARD SUPPORT NECENABLE .EQU FALSE ; TRUE FOR uPD7220 BOARD SUPPORT TMSENABLE .EQU FALSE ; TRUE FOR N8 (TMS9918) VIDEO/KBD SUPPORT VGAENABLE .EQU FALSE ; TRUE FOR VGA VIDEO/KBD SUPPORT +VDUSIZ .EQU V80X25 ; VDU DISPLAY FORMAT V80X24, V80X25, V80X30 ; SPKENABLE .EQU FALSE ; TRUE FOR RTC LATCH IOBIT SOUND AYENABLE .EQU FALSE ; TRUE FOR AY PSG SOUND @@ -94,5 +95,6 @@ BOOTTYPE .EQU BT_MENU ; BT_MENU (WAIT FOR KEYPRESS), BT_AUTO (BOOT_DEFAULT AFTE BOOT_TIMEOUT .EQU 20 ; APPROX TIMEOUT IN SECONDS FOR AUTOBOOT, 0 FOR IMMEDIATE BOOT_DEFAULT .EQU 'Z' ; SELECTION TO INVOKE AT TIMEOUT -PIOENABLE .EQU FALSE ; TRUE FOR ZILOG PIO SUPPORT -PIOMODE .EQU PIOMODE_ZP ; PIOMODE_ZP=ECB-ZILOG PERIPHERALS BOARD PIOMODE_4P=ECB-4PIO +PIO_4P .EQU FALSE ; TRUE FOR ECB-4PIO PIO SUPPORT +PIO_ZP .EQU FALSE ; TRUE FOR ECB-ZILOG PERIPHERALS BOARD +PPI_SBC .EQU FALSE ; TRUE FOR SBC V2 8255 (IF NOT BEING USED FOR PPIDE) diff --git a/Source/HBIOS/std.asm b/Source/HBIOS/std.asm index 138419c6..5dddac0b 100644 --- a/Source/HBIOS/std.asm +++ b/Source/HBIOS/std.asm @@ -80,16 +80,10 @@ SIOMODE_SMB .EQU 2 ; RC2014 SIO MODULE (SCOTT BAKER) SIOMODE_ZP .EQU 3 ; ECB-ZILOG PERIPHERALS BOARD SIOMODE_EZZ80 .EQU 4 ; EASY Z80 ON-BOARD SIO/0 ; -; PIO MODE SELECTIONS -; -PIOMODE_NONE .EQU 0 -PIOMODE_4P .EQU 1 ; ECB-4PIO BOARD -PIOMODE_ZP .EQU 2 ; ECB-ZILOG PERIPHERALS BOARD -; ; TYPE OF CONSOLE BELL TO USE ; CONBELL_NONE .EQU 0 -CONBELL_PSG .EQU 1 +CONBELL_PSG .EQU 1 CONBELL_IOBIT .EQU 2 ; ; FD MODE SELECTIONS @@ -222,7 +216,13 @@ SER_460800_8N1 .EQU SER_BAUD460800 | SER_DATA8 | SER_PARNONE | SER_STOP1 SER_921600_8N1 .EQU SER_BAUD921600 | SER_DATA8 | SER_PARNONE | SER_STOP1 SER_1843200_8N1 .EQU SER_BAUD1843200 | SER_DATA8 | SER_PARNONE | SER_STOP1 SER_3686400_8N1 .EQU SER_BAUD3686400 | SER_DATA8 | SER_PARNONE | SER_STOP1 -SER_7372800_8N1 .EQU SER_BAUD7372800 | SER_DATA8 | SER_PARNONE | SER_STOP1 +SER_7372800_8N1 .EQU SER_BAUD7372800 | SER_DATA8 | SER_PARNONE | SER_STOP1 +; +; ECB-VDU MODES +; +V80X24 .EQU 0 +V80X25 .EQU 1 +V80X30 .EQU 2 ; ; INTERRUPT VECTOR TABLE ENTRY OFFSETS (Z180 COMPATIBLE) ; @@ -235,6 +235,10 @@ IVT_DMA1 .EQU 10 IVT_CSIO .EQU 12 IVT_SER0 .EQU 14 IVT_SER1 .EQU 16 +IVT_PIO0 .EQU 18 +IVT_PIO1 .EQU 20 +IVT_PIO2 .EQU 22 +IVT_PIO3 .EQU 24 ; #INCLUDE "build.inc" ; INCLUDE USER CONFIG, ADD VARIANT, TIMESTAMP, & ROMSIZE ; diff --git a/Source/HBIOS/vdu.asm b/Source/HBIOS/vdu.asm index 4175dab5..1a3874af 100644 --- a/Source/HBIOS/vdu.asm +++ b/Source/HBIOS/vdu.asm @@ -1,15 +1,19 @@ ;====================================================================== -; VDU DRIVER FOR SBC PROJECT +; VDU DRIVER FOR ECB-VDU PROJECT ; ; ORIGINALLY WRITTEN BY: ANDREW LYNCH ; REVISED/ENHANCED BY DAN WERNER -- 11/7/2009 ; ROMWBW ADAPTATION BY: WAYNE WARTHEN -- 11/9/2012 +; 80X25, 80X30 AND MODE INFO AT BOOT ADDED BY: PHIL SUMMERS -- 2/3/2019 ;====================================================================== ; +; VDU-DW.ZIP IS THE DEFAULY 10X8 FONT THAT SUITS 80X25 AND 80X26 MODE. +; IN 80X30 MODE THE DESCENDERS ARE MISSING. AN ALTERNATE 8x8 FONT MAY +; DISPLAY BETTER. THIS CAN BE ADDED TO THE ECB-VDU FONT EPROM AND +; SELECTED VIA ONBOARD JUMPERS.THE FONT ROM CAN CONTAIN EIGHT 2Kb FONTS. +; ; TODO: ; - ADD REMAINING REGISTERS TO INIT -; - TRY 25 ROW MODE? -; - IMPLEMENT CONSTANTS FOR SCREEN DIMENSIONS ; - IMPLEMENT SET CURSOR STYLE (VDASCS) FUNCTION ; - IMPLEMENT ALTERNATE DISPLAY MODES? ; @@ -30,6 +34,22 @@ VDU_PPIC .EQU VDU_BASE + $06 ; PPI PORT C VDU_PPIX .EQU VDU_BASE + $07 ; PPI CONTROL PORT ; TERMENABLE .SET TRUE ; INCLUDE TERMINAL PSEUDODEVICE DRIVER + +#IF (VDUSIZ=V80X24) +DLINES .EQU 24 +DROWS .EQU 80 +DSCANL .EQU 10 +#ENDIF +#IF (VDUSIZ=V80X25) +DLINES .EQU 25 +DROWS .EQU 80 +DSCANL .EQU 10 +#ENDIF +#IF (VDUSIZ=V80X30) +DLINES .EQU 30 +DROWS .EQU 80 +DSCANL .EQU 8 +#ENDIF ; ;====================================================================== ; VDU DRIVER - INITIALIZATION @@ -42,6 +62,14 @@ VDU_INIT: PRTS("VDU: IO=0x$") LD A,VDU_RAMRD CALL PRTHEXBYTE + + PRTS(" MODE= $") ; OUTPUT DISPLAY FORMAT + LD A,DROWS + CALL PRTDECB + PRTS("X$") + LD A,DLINES + CALL PRTDECB + CALL VDU_PROBE ; CHECK FOR HW EXISTENCE JR Z,VDU_INIT1 ; CONTINUE IF HW PRESENT ; @@ -101,10 +129,10 @@ VDU_VDAINI: RET VDU_VDAQRY: - LD C,$00 ; MODE ZERO IS ALL WE KNOW - LD DE,$1850 ; 24 ROWS ($18), 80 COLS ($50) - LD HL,0 ; EXTRACTION OF CURRENT BITMAP DATA NOT SUPPORTED - XOR A ; SIGNAL SUCCESS + LD C,$00 ; MODE ZERO IS ALL WE KNOW + LD DE,(DLINES*256)+DROWS ; D=DLINES, E=DROWS + LD HL,0 ; EXTRACTION OF CURRENT BITMAP DATA NOT SUPPORTED + XOR A ; SIGNAL SUCCESS RET VDU_VDARES: @@ -281,7 +309,7 @@ VDU_CRTINIT1: VDU_XY2IDX: LD A,E ; SAVE COLUMN NUMBER IN A LD H,D ; SET H TO ROW NUMBER - LD E,80 ; SET E TO ROW LENGTH + LD E,DROWS ; SET E TO ROW LENGTH CALL MULT8 ; MULTIPLY TO GET ROW OFFSET LD E,A ; GET COLUMN BACK ADD HL,DE ; ADD IT IN @@ -294,7 +322,7 @@ VDU_XY2IDX: VDU_XY: LD A,E ; SAVE COLUMN NUMBER IN A LD H,D ; SET H TO ROW NUMBER - LD E,80 ; SET E TO ROW LENGTH + LD E,DROWS ; SET E TO ROW LENGTH CALL MULT8 ; MULTIPLY TO GET ROW OFFSET LD E,A ; GET COLUMN BACK ADD HL,DE ; ADD IT IN @@ -317,7 +345,7 @@ VDU_PUTCHAR: ADD HL,DE INC DE ; INC LD (VDU_POS),DE ; SAVE NEW SCREEN POSITION - LD C,18 ; UPDATE ADDRESS REGISTER PAIR + LD C,18 ; UPDATE ADDRESS REGISTER PAIR ???????????????????? CALL VDU_WRREGX ; DO IT INC HL ; NEW CURSOR POSITION LD C,14 ; CURSOR POSITION REGISTER PAIR @@ -428,7 +456,7 @@ VDU_BLKCPY2: ; BUFFER -> VIDEO RAM COPY LOOP VDU_SCROLL: ; SCROLL FORWARD BY ADDING ONE ROW TO DISPLAY START ADDRESS LD HL,(VDU_OFFSET) - LD DE,80 + LD DE,DROWS ADD HL,DE LD (VDU_OFFSET),HL LD C,12 @@ -437,9 +465,9 @@ VDU_SCROLL: ; FILL EXPOSED LINE LD HL,(VDU_POS) PUSH HL - LD HL,23*80 + LD HL,(DLINES-1)*DROWS LD (VDU_POS),HL - LD DE,80 + LD DE,DROWS LD A,' ' CALL VDU_FILL POP HL @@ -459,7 +487,7 @@ VDU_SCROLL: VDU_RSCROLL: ; SCROLL BACKWARD BY SUBTRACTING ONE ROW FROM DISPLAY START ADDRESS LD HL,(VDU_OFFSET) - LD DE,-80 + LD DE,-DROWS ADD HL,DE LD (VDU_OFFSET),HL LD C,12 @@ -470,7 +498,7 @@ VDU_RSCROLL: PUSH HL LD HL,0 LD (VDU_POS),HL - LD DE,80 + LD DE,DROWS LD A,' ' CALL VDU_FILL POP HL @@ -491,22 +519,20 @@ VDU_POS .DW 0 ; CURRENT DISPLAY POSITION VDU_OFFSET .DW 0 ; CURRENT DISPLAY POSITION VDU_BUF .FILL 256,0 ; COPY BUFFER ; + +#IF (VDUSIZ=V80X24) ;================================================================================================== -; VDU DRIVER - SY6845 REGISTER INITIALIZATION +; VDU DRIVER - SY6845 REGISTER INITIALIZATION -80x24 10x8 ;================================================================================================== ; VDU_INIT6845: -; DB 07FH, 50H, 60H, 7CH, 19H, 1FH, 19H, 1AH, 78H, 09H, 60H, 09H, 00H, 00H, 00H, 00H -; - ; CCIR 625/50 VERSION (USED IN MOST OF THE WORLD) - ; JUMPER K1 2-3, K2 1-2 FOR 2MHz CHAR CLOCK .DB 07FH ; R0 TOTAL NUMBER OF HORIZONTAL CHARACTERS (DETERMINES HSYNC) - .DB 050H ; R1 NUMBER OF HORIZONTAL CHARACTERS DISPLAYED (80 COLUMNS) + .DB DROWS ; R1 NUMBER OF HORIZONTAL CHARACTERS DISPLAYED (80 COLUMNS) .DB 060H ; R2 HORIZONTAL SYNC POSITION .DB 00CH ; R3 SYNC WIDTHS .DB 01EH ; R4 VERTICAL TOTAL (TOTAL CHARS IN A FRAME -1) .DB 002H ; R5 VERTICAL TOTAL ADJUST ( - .DB 018H ; R6 VERTICAL DISPLAYED (24 ROWS) + .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 @@ -515,14 +541,76 @@ VDU_INIT6845: ; B3=1 TRANSPARENT MEMORY ADDRESSING ; B2=0 RAM STRAIGHT BINARY ADDRESSING ; B1,B0=0 NON-INTERLACE - .DB 009H ; R9 SCAN LINE (LINES PER CHAR AND SPACING -1) + .DB DSCANL-1 ; R9 SCAN LINE (LINES PER CHAR AND SPACING -1) .DB 060H ; R10 CURSOR START RASTER - .DB 009H ; R11 CURSOR END RASTER + .DB DSCANL-1 ; R11 CURSOR END RASTER .DB 00H ; R12 START ADDRESS HI .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 + .DB 00CH ; R3 SYNC WIDTHS + .DB 01EH ; R4 VERTICAL TOTAL (TOTAL CHARS IN A FRAME -1) + .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 DSCANL-1 ; R9 SCAN LINE (LINES PER CHAR AND SPACING -1) + .DB 060H ; R10 CURSOR START RASTER + .DB DSCANL-1 ; R11 CURSOR END RASTER + .DB 00H ; R12 START ADDRESS HI + .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 + .DB 00CH ; R3 SYNC WIDTHS + .DB 26H ; R4 VERTICAL TOTAL (TOTAL CHARS IN A FRAME -1) (39-1) + .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 DSCANL-1 ; R9 SCAN LINE (LINES PER CHAR AND SPACING -1) + .DB 060H ; R10 CURSOR START RASTER + .DB DSCANL-1 ; R11 CURSOR END RASTER + .DB 00H ; R12 START ADDRESS HI + .DB 00H ; R13 START ADDRESS LO + .DB 00H ; R14 CURSOR ADDRESS HI + .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 diff --git a/Source/HBIOS/ver.inc b/Source/HBIOS/ver.inc index cee4b809..00c91863 100644 --- a/Source/HBIOS/ver.inc +++ b/Source/HBIOS/ver.inc @@ -2,4 +2,4 @@ #DEFINE RMN 9 #DEFINE RUP 1 #DEFINE RTP 0 -#DEFINE BIOSVER "2.9.1-pre.10" +#DEFINE BIOSVER "2.9.1-pre.11" From 8d302520446defbe45b340f3c6e384890bbde5b8 Mon Sep 17 00:00:00 2001 From: b1ackmai1er <39449559+b1ackmai1er@users.noreply.github.com> Date: Tue, 12 Mar 2019 22:47:40 +0800 Subject: [PATCH 3/4] Add missing baud rate --- Source/HBIOS/siobaud.inc | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Source/HBIOS/siobaud.inc b/Source/HBIOS/siobaud.inc index c315c9bf..f9c77746 100644 --- a/Source/HBIOS/siobaud.inc +++ b/Source/HBIOS/siobaud.inc @@ -84,6 +84,9 @@ SIOBAUD1 .EQU 25 #IF (DEFSIOCLK/DEFSIODIV/1 == 230400) SIOBAUD1 .EQU 26 #ENDIF +#IF (DEFSIOCLK/DEFSIODIV/1 == 460800) +SIOBAUD1 .EQU 27 +#ENDIF #IF (DEFSIOCLK/DEFSIODIV/1 == 921600) SIOBAUD1 .EQU 28 #ENDIF @@ -99,7 +102,7 @@ SIOBAUD1 .EQU 31 #IF (DEFSIOCLK/DEFSIODIV/16 == 75) -SIOBAUD2 .EQU 0 +SIOBAUD2 .EQU 0 #ENDIF #IF (DEFSIOCLK/DEFSIODIV/16 == 150) SIOBAUD2 .EQU 1 From c79d4970631331686cf3f8c4d72cf61130a11fcf Mon Sep 17 00:00:00 2001 From: b1ackmai1er <39449559+b1ackmai1er@users.noreply.github.com> Date: Tue, 12 Mar 2019 23:02:03 +0800 Subject: [PATCH 4/4] VDU mode updates --- Source/HBIOS/std.asm | 2 ++ Source/HBIOS/vdu.asm | 77 +++++++++++++++++++++++++++++++++++++++++--- 2 files changed, 75 insertions(+), 4 deletions(-) diff --git a/Source/HBIOS/std.asm b/Source/HBIOS/std.asm index 5dddac0b..b670d283 100644 --- a/Source/HBIOS/std.asm +++ b/Source/HBIOS/std.asm @@ -223,6 +223,8 @@ SER_7372800_8N1 .EQU SER_BAUD7372800 | SER_DATA8 | SER_PARNONE | SER_STOP1 V80X24 .EQU 0 V80X25 .EQU 1 V80X30 .EQU 2 +V80X25B .EQU 3 +V80X24B .EQU 4 ; ; INTERRUPT VECTOR TABLE ENTRY OFFSETS (Z180 COMPATIBLE) ; diff --git a/Source/HBIOS/vdu.asm b/Source/HBIOS/vdu.asm index 1a3874af..0d140608 100644 --- a/Source/HBIOS/vdu.asm +++ b/Source/HBIOS/vdu.asm @@ -50,6 +50,17 @@ DLINES .EQU 30 DROWS .EQU 80 DSCANL .EQU 8 #ENDIF +#IF (VDUSIZ=V80X25B) +DLINES .EQU 25 +DROWS .EQU 80 +DSCANL .EQU 12 +#ENDIF +#IF (VDUSIZ=V80X24B) +DLINES .EQU 24 +DROWS .EQU 80 +DSCANL .EQU 12 +#ENDIF +; ; ;====================================================================== ; VDU DRIVER - INITIALIZATION @@ -333,7 +344,7 @@ VDU_XY: JP VDU_WRREGX ; DO IT AND RETURN ; ;---------------------------------------------------------------------- -; WRITE VALULE IN A TO CURRENT VDU BUFFER POSTION, ADVANCE CURSOR +; WRITE VALUE IN A TO CURRENT VDU BUFFER POSTION, ADVANCE CURSOR ;---------------------------------------------------------------------- ; VDU_PUTCHAR: @@ -345,7 +356,7 @@ VDU_PUTCHAR: ADD HL,DE INC DE ; INC LD (VDU_POS),DE ; SAVE NEW SCREEN POSITION - LD C,18 ; UPDATE ADDRESS REGISTER PAIR ???????????????????? + LD C,18 ; UPDATE ADDRESS REGISTER PAIR CALL VDU_WRREGX ; DO IT INC HL ; NEW CURSOR POSITION LD C,14 ; CURSOR POSITION REGISTER PAIR @@ -530,7 +541,7 @@ VDU_INIT6845: .DB DROWS ; R1 NUMBER OF HORIZONTAL CHARACTERS DISPLAYED (80 COLUMNS) .DB 060H ; R2 HORIZONTAL SYNC POSITION .DB 00CH ; R3 SYNC WIDTHS - .DB 01EH ; R4 VERTICAL TOTAL (TOTAL CHARS IN A FRAME -1) + .DB 01EH ; R4 VERTICAL TOTAL (TOTAL CHARS IN A FRAME 30-1) .DB 002H ; R5 VERTICAL TOTAL ADJUST ( .DB DLINES ; R6 VERTICAL DISPLAYED (24 ROWS) .DB 01AH ; R7 VERTICAL SYNC @@ -559,7 +570,7 @@ VDU_INIT6845: .DB DROWS ; R1 NUMBER OF HORIZONTAL CHARACTERS DISPLAYED =80 .DB 060H ; R2 HORIZONTAL SYNC POSITION .DB 00CH ; R3 SYNC WIDTHS - .DB 01EH ; R4 VERTICAL TOTAL (TOTAL CHARS IN A FRAME -1) + .DB 01EH ; R4 VERTICAL TOTAL (TOTAL CHARS IN A FRAME 30-1) .DB 002H ; R5 VERTICAL TOTAL ADJUST ( .DB DLINES ; R6 VERTICAL DISPLAYED (25 ROWS) .DB 01BH ; R7 VERTICAL SYNC @@ -608,6 +619,64 @@ VDU_INIT6845: .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 + .DB 00CH ; R3 SYNC WIDTHS + .DB 19H ; R4 VERTICAL TOTAL (TOTAL CHARS IN A FRAME -1) (312/DLINES)-1 + .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 DSCANL-1 ; R9 SCAN LINE (LINES PER CHAR AND SPACING -1) + .DB 060H ; R10 CURSOR START RASTER + .DB DSCANL-1 ; R11 CURSOR END RASTER + .DB 00H ; R12 START ADDRESS HI + .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 + .DB 00CH ; R3 SYNC WIDTHS + .DB 19H ; R4 VERTICAL TOTAL (TOTAL CHARS IN A FRAME -1) (312/DLINES)-1 + .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 DSCANL-1 ; R9 SCAN LINE (LINES PER CHAR AND SPACING -1) + .DB 060H ; R10 CURSOR START RASTER + .DB DSCANL-1 ; R11 CURSOR END RASTER + .DB 00H ; R12 START ADDRESS HI + .DB 00H ; R13 START ADDRESS LO + .DB 00H ; R14 CURSOR ADDRESS HI + .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 ;