Skip to content

Commit

Permalink
Finalize S100 FPGA Z80 Onboard VGA/PS2 Support
Browse files Browse the repository at this point in the history
- RomWBW will now "follow" the S100 monitors console selection for all 3 possibilities (USB Serial, Propeller Console, and Onboard VGA/PS2).
  • Loading branch information
wwarthen committed Sep 5, 2024
1 parent d152cab commit 6e8bdb1
Show file tree
Hide file tree
Showing 8 changed files with 62 additions and 18 deletions.
3 changes: 2 additions & 1 deletion Source/HBIOS/esp.asm
Original file line number Diff line number Diff line change
Expand Up @@ -364,7 +364,8 @@ ESPCON_INIT:
PUSH IY ; COPY CONFIG ENTRY PTR
POP DE ; ... TO DE
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
;
Expand Down
61 changes: 50 additions & 11 deletions Source/HBIOS/hbios.asm
Original file line number Diff line number Diff line change
Expand Up @@ -2148,6 +2148,11 @@ HB_START2:
LD (RTC_DISPACT),A ; RTC 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
;
; THIS IS REALLY ONLY REQUIRED ON A RESTART, BUT IT DOESN'T HURT TO
Expand Down Expand Up @@ -3324,11 +3329,27 @@ HB_WDZ:
#ENDIF
;
#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
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
;
HB_CRTACT:
LD A,(CB_CRTDEV) ; GET CRT DISPLAY DEVICE
LD (HB_NEWCON),A ; AND QUEUE TO SWITCH
;
Expand Down Expand Up @@ -3805,6 +3826,15 @@ HB_INITTBL:
#IF (FVENABLE)
.DW FV_INIT
#ENDIF
#IF (PRPENABLE)
.DW PRP_INIT
#ENDIF
#IF (PPPENABLE)
.DW PPP_INIT
#ENDIF
#IF (SCONENABLE)
.DW SCON_INIT
#ENDIF
#IF (DMAENABLE)
.DW DMA_INIT
#ENDIF
Expand Down Expand Up @@ -3838,15 +3868,6 @@ HB_INITTBL:
#IF (SYQENABLE)
.DW SYQ_INIT
#ENDIF
#IF (PRPENABLE)
.DW PRP_INIT
#ENDIF
#IF (PPPENABLE)
.DW PPP_INIT
#ENDIF
#IF (SCONENABLE)
.DW SCON_INIT
#ENDIF
#IF (CHENABLE)
.DW CH_INIT
#ENDIF
Expand Down Expand Up @@ -3980,6 +4001,24 @@ CIO_SIZ .EQU CIO_MAX * 4 ; EACH ENTRY IS 4 BYTES
CIO_CNT .DB 0 ; ENTRY COUNT PREFIX
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
;--------------------------------------------------------------------------------------------------
Expand Down
3 changes: 2 additions & 1 deletion Source/HBIOS/ppp.asm
Original file line number Diff line number Diff line change
Expand Up @@ -276,7 +276,8 @@ PPPCON_INIT:
LD E,CIODEV_PPPCON ; DEVICE TYPE
LD BC,PPPCON_FNTBL ; BC := FUNCTION TABLE ADDRESS
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
RET
Expand Down
3 changes: 2 additions & 1 deletion Source/HBIOS/prp.asm
Original file line number Diff line number Diff line change
Expand Up @@ -150,7 +150,8 @@ PRPCON_INIT:
LD E,CIODEV_PRPCON ; DEVICE TYPE
LD BC,PRPCON_FNTBL ; BC := FUNCTION TABLE ADDRESS
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
RET
Expand Down
3 changes: 2 additions & 1 deletion Source/HBIOS/scon.asm
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,8 @@ SCON_INIT:
LD E,CIODEV_SCON ; DEVICE TYPE
LD BC,SCON_FNTBL ; BC := FUNCTION TABLE ADDRESS
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
RET
Expand Down
3 changes: 2 additions & 1 deletion Source/HBIOS/term.asm
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,8 @@ TERM_ATTACH:
PUSH HL ; COPY VDA INSTANCE DATA PTR
POP DE ; ... TO DE
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
LD HL,TERM_DEVCNT ; POINT TO DEVICE COUNT
Expand Down
2 changes: 1 addition & 1 deletion Source/ver.inc
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
#DEFINE RMN 5
#DEFINE RUP 0
#DEFINE RTP 0
#DEFINE BIOSVER "3.5.0-dev.75"
#DEFINE BIOSVER "3.5.0-dev.76"
#define rmj RMJ
#define rmn RMN
#define rup RUP
Expand Down
2 changes: 1 addition & 1 deletion Source/ver.lib
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,5 @@ rmn equ 5
rup equ 0
rtp equ 0
biosver macro
db "3.5.0-dev.75"
db "3.5.0-dev.76"
endm

0 comments on commit 6e8bdb1

Please sign in to comment.