Browse Source

S100 FPGA Z80 Cleanup

- Restore 16-bit I/O in S100 Console driver
- Boot to Console or USB Serial depending on IO Switch
work v3.5.0-dev.50
Wayne Warthen 2 years ago
parent
commit
0f4d16400f
  1. 3
      Source/HBIOS/Config/FZ80_std.asm
  2. 6
      Source/HBIOS/hbios.asm
  3. 17
      Source/HBIOS/scon.asm
  4. 14
      Source/HBIOS/sser.asm
  5. 2
      Source/ver.inc
  6. 2
      Source/ver.lib

3
Source/HBIOS/Config/FZ80_std.asm

@ -25,3 +25,6 @@
#DEFINE BOOT_DEFAULT "H" ; DEFAULT BOOT LOADER CMD ON <CR> OR AUTO BOOT #DEFINE BOOT_DEFAULT "H" ; DEFAULT BOOT LOADER CMD ON <CR> OR AUTO BOOT
; ;
#include "cfg_fz80.asm" #include "cfg_fz80.asm"
;
CPUOSC .SET 8000000 ; CPU OSC FREQ IN MHZ
CRTACT .SET TRUE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP

6
Source/HBIOS/hbios.asm

@ -3256,6 +3256,12 @@ HB_WDZ:
AND %00000001 ; ISOLATE CONSOLE BIT AND %00000001 ; ISOLATE CONSOLE BIT
JR NZ,INITSYS3 ; NOT SET, BYPASS CONSOLE SWITCH JR NZ,INITSYS3 ; NOT SET, BYPASS CONSOLE SWITCH
#ENDIF #ENDIF
;
#IF (PLATFORM == PLT_FZ80)
IN A,($36) ; GET IO BYTE
AND %00000001 ; ISOLATE CONSOLE BIT
JR Z,INITSYS3 ; NOT SET, BYPASS CONSOLE SWITCH
#ENDIF
; ;
LD A,(CB_CRTDEV) ; GET CRT DISPLAY DEVICE LD A,(CB_CRTDEV) ; GET CRT DISPLAY DEVICE
LD (HB_NEWCON),A ; AND QUEUE TO SWITCH LD (HB_NEWCON),A ; AND QUEUE TO SWITCH

17
Source/HBIOS/scon.asm

@ -5,7 +5,7 @@
; ;
; TODO: ; TODO:
; ;
SCON_IOBASE .EQU $00
SCON_IOBASE .EQU $0000 ; NOTE: 16-BIT I/O
; ;
SCON_STATUS .EQU SCON_IOBASE SCON_STATUS .EQU SCON_IOBASE
SCON_DATA .EQU SCON_IOBASE + 1 SCON_DATA .EQU SCON_IOBASE + 1
@ -25,6 +25,9 @@ SCON_ROWS .EQU 40
SCON_INIT: SCON_INIT:
CALL NEWLINE CALL NEWLINE
PRTS("SCON:$") PRTS("SCON:$")
PRTS(" IO=0x$") ; FORMATTING
LD A,SCON_IOBASE
CALL PRTHEXBYTE
; ;
; DISPLAY CONSOLE DIMENSIONS ; DISPLAY CONSOLE DIMENSIONS
CALL PC_SPACE CALL PC_SPACE
@ -68,7 +71,8 @@ SCON_IN:
CALL SCON_IST ; CHECK FOR CHAR PENDING CALL SCON_IST ; CHECK FOR CHAR PENDING
JR Z,SCON_IN ; WAIT FOR IT IF NECESSARY JR Z,SCON_IN ; WAIT FOR IT IF NECESSARY
;IN0 A,(SCON_DATA) ; READ THE CHAR FROM PROPIO ;IN0 A,(SCON_DATA) ; READ THE CHAR FROM PROPIO
IN A,(SCON_DATA) ; READ THE CHAR FROM PROPIO
LD BC,SCON_DATA ; DATA PORT (16 BIT I/O)
IN A,(C) ; READ THE CHAR FROM PROPIO
LD E,A LD E,A
RET RET
; ;
@ -76,7 +80,8 @@ SCON_IN:
; ;
SCON_IST: SCON_IST:
;IN0 A,(SCON_STATUS) ; READ LINE STATUS REGISTER ;IN0 A,(SCON_STATUS) ; READ LINE STATUS REGISTER
IN A,(SCON_STATUS) ; READ LINE STATUS REGISTER
LD BC,SCON_STATUS ; STATUS PORT (16-BIT I/O)
IN A,(C) ; READ LINE STATUS REGISTER
AND SCON_KBDRDY ; ISOLATE KBDRDY AND SCON_KBDRDY ; ISOLATE KBDRDY
JP Z,CIO_IDLE ; RETURN VIA IDLE PROCESSING JP Z,CIO_IDLE ; RETURN VIA IDLE PROCESSING
OR $FF ; SET A=$FF TO SIGNAL READY OR $FF ; SET A=$FF TO SIGNAL READY
@ -89,14 +94,16 @@ SCON_OUT:
JR Z,SCON_OUT ; WAIT IF NECESSARY JR Z,SCON_OUT ; WAIT IF NECESSARY
LD A,E ; RECOVER THE CHAR TO WRITE LD A,E ; RECOVER THE CHAR TO WRITE
;OUT0 (SCON_DATA),A ; WRITE THE CHAR TO PROPIO ;OUT0 (SCON_DATA),A ; WRITE THE CHAR TO PROPIO
OUT (SCON_DATA),A ; WRITE THE CHAR TO PROPIO
LD BC,SCON_DATA ; DATA PORT (16 BIT I/O)
OUT (C),A ; WRITE THE CHAR TO PROPIO
RET RET
; ;
; ;
; ;
SCON_OST: SCON_OST:
;IN0 A,(SCON_STATUS) ; READ LINE STATUS REGISTER ;IN0 A,(SCON_STATUS) ; READ LINE STATUS REGISTER
IN A,(SCON_STATUS) ; READ LINE STATUS REGISTER
LD BC,SCON_STATUS ; STATUS PORT (16-BIT I/O)
IN A,(C) ; READ LINE STATUS REGISTER
AND SCON_DSPRDY ; ISOLATE DSPRDY AND SCON_DSPRDY ; ISOLATE DSPRDY
JP Z,CIO_IDLE ; RETURN VIA IDLE PROCESSING JP Z,CIO_IDLE ; RETURN VIA IDLE PROCESSING
OR $FF ; SET A=$FF TO SIGNAL READY OR $FF ; SET A=$FF TO SIGNAL READY

14
Source/HBIOS/sser.asm

@ -4,16 +4,6 @@
;================================================================================================== ;==================================================================================================
; ;
; TODO: ; TODO:
;
;;;;SSER_IOBASE .EQU $34
;;;;;
;;;;SSER_STATUS .EQU SSER_IOBASE
;;;;SSER_DATA .EQU SSER_IOBASE + 1
;;;;;
;;;;SSER_IRDY .EQU %00000001
;;;;SSER_IINV .EQU FALSE
;;;;SSER_ORDY .EQU %00000010
;;;;SSER_OINV .EQU TRUE
; ;
DEVECHO "SSER: IO=" DEVECHO "SSER: IO="
DEVECHO SSERSTATUS DEVECHO SSERSTATUS
@ -37,8 +27,8 @@ SSER_PREINIT:
; ;
SSER_INIT: SSER_INIT:
CALL NEWLINE CALL NEWLINE
PRTS("SSER$")
PRTS(": IO=0x$") ; FORMATTING
PRTS("SSER:$")
PRTS(" IO=0x$") ; FORMATTING
LD A,SSERSTATUS LD A,SSERSTATUS
CALL PRTHEXBYTE CALL PRTHEXBYTE
; ;

2
Source/ver.inc

@ -2,7 +2,7 @@
#DEFINE RMN 5 #DEFINE RMN 5
#DEFINE RUP 0 #DEFINE RUP 0
#DEFINE RTP 0 #DEFINE RTP 0
#DEFINE BIOSVER "3.5.0-dev.49"
#DEFINE BIOSVER "3.5.0-dev.50"
#define rmj RMJ #define rmj RMJ
#define rmn RMN #define rmn RMN
#define rup RUP #define rup RUP

2
Source/ver.lib

@ -3,5 +3,5 @@ rmn equ 5
rup equ 0 rup equ 0
rtp equ 0 rtp equ 0
biosver macro biosver macro
db "3.5.0-dev.49"
db "3.5.0-dev.50"
endm endm

Loading…
Cancel
Save