From 9dd54cb7810f7e23427150cecd6ac386a59c3893 Mon Sep 17 00:00:00 2001 From: Dean Netherton Date: Mon, 16 Sep 2024 17:45:00 +1000 Subject: [PATCH 1/3] ez80: fix for FPLEDS to ensure 16 bit I/O --- Source/HBIOS/hbios.asm | 1 + 1 file changed, 1 insertion(+) diff --git a/Source/HBIOS/hbios.asm b/Source/HBIOS/hbios.asm index 30702b51..df06128e 100644 --- a/Source/HBIOS/hbios.asm +++ b/Source/HBIOS/hbios.asm @@ -168,6 +168,7 @@ SUPCTS .EQU FALSE ; SUPPRESS CTS DURING HBIOS BOOT #IF (FPLED_INV) #DEFCONT \ XOR $FF ; INVERT BITS IF NEEDED #ENDIF + #DEFCONT \ EZ80_IO #DEFCONT \ OUT (FPLED_IO),A #DEFCONT \ POP AF #ELSE From 9aa0fbd2dc2471416e70b730eb56582d55a431a8 Mon Sep 17 00:00:00 2001 From: Dean Netherton Date: Mon, 16 Sep 2024 18:21:36 +1000 Subject: [PATCH 2/3] ez80: fixes within ez80 drivers to fix overflow issue with PRTS macro --- Source/HBIOS/ez80rtc.asm | 6 ++++-- Source/HBIOS/ez80systmr.asm | 6 ++++-- Source/HBIOS/ez80uart.asm | 3 ++- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/Source/HBIOS/ez80rtc.asm b/Source/HBIOS/ez80rtc.asm index 8576962f..c40ef919 100644 --- a/Source/HBIOS/ez80rtc.asm +++ b/Source/HBIOS/ez80rtc.asm @@ -18,13 +18,15 @@ EZ80RTC_INIT: RET NZ ; IF ALREADY ACTIVE, ABORT CALL NEWLINE ; FORMATTING - PRTS("EZ80 RTC: POWERED $") + CALL PRTSTRD + .TEXT "EZ80 RTC: POWERED $" EZ80_RTC_INIT() JR Z, RTC_POWERED PUSH AF - PRTS("NOT POWERED$") + CALL PRTSTRD + .TEXT "NOT POWERED$" POP AF RET diff --git a/Source/HBIOS/ez80systmr.asm b/Source/HBIOS/ez80systmr.asm index 00f1b6f6..7663a13d 100644 --- a/Source/HBIOS/ez80systmr.asm +++ b/Source/HBIOS/ez80systmr.asm @@ -14,7 +14,8 @@ #IF (EZ80TIMER == EZ80TMR_INT) EZ80_TMR_INIT: CALL NEWLINE ; FORMATTING - PRTS("EZ80 TIMER: INTERRUPTS ENABLED$") + CALL PRTSTRD + .TEXT "EZ80 TIMER: INTERRUPTS ENABLED$" LD HL,EZ80_TMR_INT ; GET INT VECTOR CALL HB_ADDIM1 ; ADD TO IM1 CALL LIST @@ -34,7 +35,8 @@ EZ80_TMR_INT: EZ80_TMR_INIT: CALL NEWLINE ; FORMATTING - PRTS("EZ80 TIMER: FIRMWARE$") + CALL PRTSTRD + .TEXT "EZ80 TIMER: FIRMWARE$" RET ; ----------------------------------------------- ; Implementation of HBIOS SYS TIMER functions to diff --git a/Source/HBIOS/ez80uart.asm b/Source/HBIOS/ez80uart.asm index 522564db..6d016593 100644 --- a/Source/HBIOS/ez80uart.asm +++ b/Source/HBIOS/ez80uart.asm @@ -45,7 +45,8 @@ EZUART_PREINIT: EZUART_INIT: CALL NEWLINE ; FORMATTING - PRTS("EZ80 UART: UART0$") + CALL PRTSTRD + .TEXT "EZ80 UART: UART0$" XOR A RET From a6a32bbd70311b5854b2b522285f112711e85ef7 Mon Sep 17 00:00:00 2001 From: Dean Netherton Date: Mon, 16 Sep 2024 18:34:43 +1000 Subject: [PATCH 3/3] ez80: fix issue with uart baud rate translation for numbers requiring more than 16 bits (windows build issue) --- Source/HBIOS/ez80instr.inc | 2 +- Source/HBIOS/ez80uart.asm | 21 +++++++++------------ 2 files changed, 10 insertions(+), 13 deletions(-) diff --git a/Source/HBIOS/ez80instr.inc b/Source/HBIOS/ez80instr.inc index d52d744a..d2ed3154 100644 --- a/Source/HBIOS/ez80instr.inc +++ b/Source/HBIOS/ez80instr.inc @@ -102,7 +102,7 @@ #DEFINE LDBCMM.LIL(Mmn) \ #defcont \ .DB $5B - #defcont \ LD BC, Mmn + #defcont \ LD BC, Mmn & $FFFF #defcont \ .DB (Mmn >> 16) & $FF #DEFINE SBCHLBC.LIL \ diff --git a/Source/HBIOS/ez80uart.asm b/Source/HBIOS/ez80uart.asm index 6d016593..2bc68322 100644 --- a/Source/HBIOS/ez80uart.asm +++ b/Source/HBIOS/ez80uart.asm @@ -225,18 +225,15 @@ EZUART_QUERY: TRANSLATE(96000-67200, 01010b) ; BAUDRATE=76800 (BETWEEN 67201 AND 96000) TRANSLATE(134400-96000, 11001b) ; BAUDRATE=115200 (BETWEEN 96001 AND 134400) TRANSLATE(192000-134400, 01011b) ; BAUDRATE=153600 (BETWEEN 134401 AND 192000) -;;; -;;; The following are causing "Unused data in MS byte of argument." errors -;;; -;;; TRANSLATE(268800-192000, 11010b) ; BAUDRATE=230400 (BETWEEN 192001 AND 268800) -;;; TRANSLATE(384000-268800, 01100b) ; BAUDRATE=307200 (BETWEEN 268801 AND 384000) -;;; TRANSLATE(537600-384000, 11011b) ; BAUDRATE=460800 (BETWEEN 384001 AND 537600) -;;; TRANSLATE(768000-537600, 01101b) ; BAUDRATE=614400 (BETWEEN 537601 AND 768000) -;;; TRANSLATE(1075200-768000, 11100b) ; BAUDRATE=921600 (BETWEEN 768001 AND 1075200) -;;; TRANSLATE(1536000-1075200, 01110b) ; BAUDRATE=1228800 (BETWEEN 1075201 AND 1536000) -;;; TRANSLATE(2150400-1536000, 11101b) ; BAUDRATE=1843200 (BETWEEN 1536001 AND 2150400) -;;; TRANSLATE(3072000-2150400, 01111b) ; BAUDRATE=2457600 (BETWEEN 2150401 AND 3072000) -;;; TRANSLATE(5529600-3072000, 11110b) ; BAUDRATE=3686400 (BETWEEN 3072001 AND 5529600) + TRANSLATE(268800-192000, 11010b) ; BAUDRATE=230400 (BETWEEN 192001 AND 268800) + TRANSLATE(384000-268800, 01100b) ; BAUDRATE=307200 (BETWEEN 268801 AND 384000) + TRANSLATE(537600-384000, 11011b) ; BAUDRATE=460800 (BETWEEN 384001 AND 537600) + TRANSLATE(768000-537600, 01101b) ; BAUDRATE=614400 (BETWEEN 537601 AND 768000) + TRANSLATE(1075200-768000, 11100b) ; BAUDRATE=921600 (BETWEEN 768001 AND 1075200) + TRANSLATE(1536000-1075200, 01110b) ; BAUDRATE=1228800 (BETWEEN 1075201 AND 1536000) + TRANSLATE(2150400-1536000, 11101b) ; BAUDRATE=1843200 (BETWEEN 1536001 AND 2150400) + TRANSLATE(3072000-2150400, 01111b) ; BAUDRATE=2457600 (BETWEEN 2150401 AND 3072000) + TRANSLATE(5529600-3072000, 11110b) ; BAUDRATE=3686400 (BETWEEN 3072001 AND 5529600) LD D, 11111b ; BAUDRATE=7372800 (>=5529601) uart_query_end: