Browse Source

Finalize S100 FPGA Z80 Onboard VGA/PS2 Support

- RomWBW will now "follow" the S100 monitors console selection for all 3 possibilities (USB Serial, Propeller Console, and Onboard VGA/PS2).
work v3.5.0-dev.76
Wayne Warthen 1 year ago
parent
commit
6e8bdb141d
  1. 3
      Source/HBIOS/esp.asm
  2. 61
      Source/HBIOS/hbios.asm
  3. 3
      Source/HBIOS/ppp.asm
  4. 3
      Source/HBIOS/prp.asm
  5. 3
      Source/HBIOS/scon.asm
  6. 3
      Source/HBIOS/term.asm
  7. 2
      Source/ver.inc
  8. 2
      Source/ver.lib

3
Source/HBIOS/esp.asm

@ -364,7 +364,8 @@ ESPCON_INIT:
PUSH IY ; COPY CONFIG ENTRY PTR PUSH IY ; COPY CONFIG ENTRY PTR
POP DE ; ... TO DE POP DE ; ... TO DE
CALL CIO_ADDENT ; ADD ENTRY, A := UNIT ASSIGNED CALL CIO_ADDENT ; ADD ENTRY, A := UNIT ASSIGNED
LD (HCB + HCB_CRTDEV),A ; SET OURSELVES AS THE CRT DEVICE
;;;LD (HCB + HCB_CRTDEV),A ; SET OURSELVES AS THE CRT DEVICE
CALL CIO_SETCRT ; SET OURSELVES AS THE CRT DEVICE
; ;
; ANNOUNCE OURSLEVES ; ANNOUNCE OURSLEVES
; ;

61
Source/HBIOS/hbios.asm

@ -2148,6 +2148,11 @@ HB_START2:
LD (RTC_DISPACT),A ; RTC DEVICE LD (RTC_DISPACT),A ; RTC DEVICE
LD (DSKY_DISPACT),A ; DSKY DEVICE LD (DSKY_DISPACT),A ; DSKY DEVICE
; ;
; INITIALIZE SOME HCB ENTRIES
;
OR $FF ; $FF TO ACCUM
LD (CB_CRTDEV),A ; RESET CRT DEVICE
;
; CLEAR INTERRUPT VECTOR TABLES ; CLEAR INTERRUPT VECTOR TABLES
; ;
; THIS IS REALLY ONLY REQUIRED ON A RESTART, BUT IT DOESN'T HURT TO ; THIS IS REALLY ONLY REQUIRED ON A RESTART, BUT IT DOESN'T HURT TO
@ -3324,11 +3329,27 @@ HB_WDZ:
#ENDIF #ENDIF
; ;
#IF (PLATFORM == PLT_FZ80) #IF (PLATFORM == PLT_FZ80)
; IOBYTE: XXXXXVVC
; 00- FORCE ONBOARD VGA/PS2 KBD (FV)
; --1 FORCE PROPELLER CONSOLE (SCON)
; 110 NORMAL USB SERIAL BOOT
;
; WE ASSUME THAT THE ONBOARD VGA (FV) IS ALWAYS DETECTED AND
; WILL BE THE CURRENT CRTDEV. SCON IS ASSUMED TO BE THE
; DEVICE AT CRTDEV + 1. THESE ARE REASONABLE ASSUMPTIONS
; UNLESS THE DRIVER DETECTION OR DRIVER ORDER IS CHANGED.
IN A,($36) ; GET IO BYTE IN A,($36) ; GET IO BYTE
AND %00000001 ; ISOLATE CONSOLE BIT
JR Z,INITSYS3 ; NOT SET, BYPASS CONSOLE SWITCH
AND %00000110 ; ISOLATE BITS
JR Z,HB_CRTACT ; FORCE ONBOARD CRT
IN A,($36) ; GET IO BYTE
AND %00000001 ; ISOLATE BIT
JR Z,INITSYS3 ; NORMAL USB SERIAL BOOT
LD A,(CB_CRTDEV) ; GET CRT DEV
INC A ; SWITCH FROM FV -> SCON
LD (CB_CRTDEV),A ; SAVE IT AND DO CONSOLE SWITCH
#ENDIF #ENDIF
; ;
HB_CRTACT:
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
; ;
@ -3805,6 +3826,15 @@ HB_INITTBL:
#IF (FVENABLE) #IF (FVENABLE)
.DW FV_INIT .DW FV_INIT
#ENDIF #ENDIF
#IF (PRPENABLE)
.DW PRP_INIT
#ENDIF
#IF (PPPENABLE)
.DW PPP_INIT
#ENDIF
#IF (SCONENABLE)
.DW SCON_INIT
#ENDIF
#IF (DMAENABLE) #IF (DMAENABLE)
.DW DMA_INIT .DW DMA_INIT
#ENDIF #ENDIF
@ -3838,15 +3868,6 @@ HB_INITTBL:
#IF (SYQENABLE) #IF (SYQENABLE)
.DW SYQ_INIT .DW SYQ_INIT
#ENDIF #ENDIF
#IF (PRPENABLE)
.DW PRP_INIT
#ENDIF
#IF (PPPENABLE)
.DW PPP_INIT
#ENDIF
#IF (SCONENABLE)
.DW SCON_INIT
#ENDIF
#IF (CHENABLE) #IF (CHENABLE)
.DW CH_INIT .DW CH_INIT
#ENDIF #ENDIF
@ -3980,6 +4001,24 @@ CIO_SIZ .EQU CIO_MAX * 4 ; EACH ENTRY IS 4 BYTES
CIO_CNT .DB 0 ; ENTRY COUNT PREFIX CIO_CNT .DB 0 ; ENTRY COUNT PREFIX
CIO_TBL .FILL CIO_SIZ,0 ; SPACE FOR ENTRIES CIO_TBL .FILL CIO_SIZ,0 ; SPACE FOR ENTRIES
; ;
; CRT TYPE CHAR DEVICES CALL THIS TO REGISTER THAT THEY WANT TO BE THE
; DEFAULT CRT DEVICE. THIS ROUTINE WILL SET CB_CRTDEV WHEN CALLED THE
; FIRST TIME. SUBSEQUENT CALLS ARE IGNORED. THIS ENSURES THAT THE
; *FIRST* CRT DEVICE WINS.
;
CIO_SETCRT:
PUSH AF ; SAVE INCOMING CRT DEV NUM
LD A,(CB_CRTDEV) ; GET CURRENT CRT DEV NUM
INC A ; $FF -> $00
JR NZ,CIO_SETCRT_Z ; IF ALREADY SET, LEAVE IT ALONE
POP AF ; RESTORE AF
LD (CB_CRTDEV),A ; SAVE CRT DEV NUM
RET ; AND DONE
;
CIO_SETCRT_Z:
POP AF ; RESTORE AF
RET ; AND DONE
;
;-------------------------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------------------------
; DISK I/O DEVICE FUNCTION DISPATCHER ; DISK I/O DEVICE FUNCTION DISPATCHER
;-------------------------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------------------------

3
Source/HBIOS/ppp.asm

@ -276,7 +276,8 @@ PPPCON_INIT:
LD E,CIODEV_PPPCON ; DEVICE TYPE LD E,CIODEV_PPPCON ; DEVICE TYPE
LD BC,PPPCON_FNTBL ; BC := FUNCTION TABLE ADDRESS LD BC,PPPCON_FNTBL ; BC := FUNCTION TABLE ADDRESS
CALL CIO_ADDENT ; ADD ENTRY, A := UNIT ASSIGNED CALL CIO_ADDENT ; ADD ENTRY, A := UNIT ASSIGNED
LD (HCB + HCB_CRTDEV),A ; SET OURSELVES AS THE CRT DEVICE
;;;LD (HCB + HCB_CRTDEV),A ; SET OURSELVES AS THE CRT DEVICE
CALL CIO_SETCRT ; SET OURSELVES AS THE CRT DEVICE
; ;
XOR A XOR A
RET RET

3
Source/HBIOS/prp.asm

@ -150,7 +150,8 @@ PRPCON_INIT:
LD E,CIODEV_PRPCON ; DEVICE TYPE LD E,CIODEV_PRPCON ; DEVICE TYPE
LD BC,PRPCON_FNTBL ; BC := FUNCTION TABLE ADDRESS LD BC,PRPCON_FNTBL ; BC := FUNCTION TABLE ADDRESS
CALL CIO_ADDENT ; ADD ENTRY, A := UNIT ASSIGNED CALL CIO_ADDENT ; ADD ENTRY, A := UNIT ASSIGNED
LD (HCB + HCB_CRTDEV),A ; SET OURSELVES AS THE CRT DEVICE
;;;LD (HCB + HCB_CRTDEV),A ; SET OURSELVES AS THE CRT DEVICE
CALL CIO_SETCRT ; SET OURSELVES AS THE CRT DEVICE
; ;
XOR A ; SIGNAL SUCCESS XOR A ; SIGNAL SUCCESS
RET RET

3
Source/HBIOS/scon.asm

@ -46,7 +46,8 @@ SCON_INIT:
LD E,CIODEV_SCON ; DEVICE TYPE LD E,CIODEV_SCON ; DEVICE TYPE
LD BC,SCON_FNTBL ; BC := FUNCTION TABLE ADDRESS LD BC,SCON_FNTBL ; BC := FUNCTION TABLE ADDRESS
CALL CIO_ADDENT ; ADD ENTRY, A := UNIT ASSIGNED CALL CIO_ADDENT ; ADD ENTRY, A := UNIT ASSIGNED
LD (HCB + HCB_CRTDEV),A ; SET OURSELVES AS THE CRT DEVICE
;;;LD (HCB + HCB_CRTDEV),A ; SET OURSELVES AS THE CRT DEVICE
CALL CIO_SETCRT ; SET OURSELVES AS THE CRT DEVICE
; ;
XOR A ; SIGNAL SUCCESS XOR A ; SIGNAL SUCCESS
RET RET

3
Source/HBIOS/term.asm

@ -76,7 +76,8 @@ TERM_ATTACH:
PUSH HL ; COPY VDA INSTANCE DATA PTR PUSH HL ; COPY VDA INSTANCE DATA PTR
POP DE ; ... TO DE POP DE ; ... TO DE
CALL CIO_ADDENT ; ADD ENTRY, A := UNIT ASSIGNED CALL CIO_ADDENT ; ADD ENTRY, A := UNIT ASSIGNED
LD (HCB + HCB_CRTDEV),A ; SET OURSELVES AS THE CRT DEVICE
;;;LD (HCB + HCB_CRTDEV),A ; SET OURSELVES AS THE CRT DEVICE
CALL CIO_SETCRT ; SET OURSELVES AS THE CRT DEVICE
; ;
; INCREMENT DEVICE COUNT ; INCREMENT DEVICE COUNT
LD HL,TERM_DEVCNT ; POINT TO DEVICE COUNT LD HL,TERM_DEVCNT ; POINT TO DEVICE COUNT

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.75"
#DEFINE BIOSVER "3.5.0-dev.76"
#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.75"
db "3.5.0-dev.76"
endm endm

Loading…
Cancel
Save