mirror of
https://github.com/wwarthen/RomWBW.git
synced 2026-02-07 15:03:13 -06:00
Compare commits
2 Commits
v3.3.0-dev
...
v3.3.0-dev
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c391fd6d56 | ||
|
|
e69caf5059 |
@@ -8,6 +8,8 @@ set TASMTABS=%TOOLS%\tasm32
|
||||
tasm -t180 -g3 -fFF i2cscan.asm i2cscan.com i2cscan.lst || exit /b
|
||||
tasm -t180 -g3 -fFF rtcds7.asm rtcds7.com rtcds7.lst || exit /b
|
||||
tasm -t180 -g3 -fFF i2clcd.asm i2clcd.com i2clcd.lst || exit /b
|
||||
tasm -t80 -g3 -ff srom.asm srom.com srom.lst || exit /b
|
||||
|
||||
copy /Y i2c*.com ..\..\..\..\Binary\Apps\Test\ || exit /b
|
||||
copy /Y rtcds7*.com ..\..\..\..\Binary\Apps\Test\ || exit /b
|
||||
copy /Y srom.com ..\..\..\..\Binary\Apps\Test\ || exit /b
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
OBJECTS = i2cscan.com rtcds7.com i2clcd.com
|
||||
OBJECTS = i2cscan.com rtcds7.com i2clcd.com srom.com
|
||||
DEST = ../../../../Binary/Apps/Test/
|
||||
TOOLS = ../../../../Tools
|
||||
|
||||
|
||||
1679
Source/Apps/Test/I2C/srom.asm
Normal file
1679
Source/Apps/Test/I2C/srom.asm
Normal file
File diff suppressed because it is too large
Load Diff
@@ -27,18 +27,17 @@
|
||||
#include "cfg_s100.asm"
|
||||
;
|
||||
CPUOSC .SET 18432000 ; CPU OSC FREQ IN MHZ
|
||||
CRTACT .SET TRUE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP
|
||||
;
|
||||
Z180_CLKDIV .SET 1 ; Z180: CHK DIV: 0=OSC/2, 1=OSC, 2=OSC*2
|
||||
Z180_MEMWAIT .SET 0 ; Z180: MEMORY WAIT STATES (0-3)
|
||||
Z180_IOWAIT .SET 1 ; Z180: I/O WAIT STATES TO ADD ABOVE 1 W/S BUILT-IN (0-3)
|
||||
Z180_MEMWAIT .SET 1 ; Z180: MEMORY WAIT STATES (0-3)
|
||||
Z180_IOWAIT .SET 2 ; Z180: I/O WAIT STATES TO ADD ABOVE 1 W/S BUILT-IN (0-3)
|
||||
;
|
||||
DSRTCENABLE .SET FALSE ; DSRTC: ENABLE DS-1302 CLOCK DRIVER (DSRTC.ASM)
|
||||
INTRTCENABLE .SET TRUE ; ENABLE PERIODIC INTERRUPT CLOCK DRIVER (INTRTC.ASM)
|
||||
;
|
||||
UARTENABLE .SET FALSE ; UART: ENABLE 8250/16550-LIKE SERIAL DRIVER (UART.ASM)
|
||||
ASCIENABLE .SET TRUE ; ASCI: ENABLE Z180 ASCI SERIAL DRIVER (ASCI.ASM)
|
||||
ACIAENABLE .SET FALSE ; ACIA: ENABLE MOTOROLA 6850 ACIA DRIVER (ACIA.ASM)
|
||||
SIOENABLE .SET FALSE ; SIO: ENABLE ZILOG SIO SERIAL DRIVER (SIO.ASM)
|
||||
SCONENABLE .SET TRUE ; SCON: ENABLE S100 CONSOLE DRIVER (SCON.ASM)
|
||||
;
|
||||
IDEENABLE .SET FALSE ; IDE: ENABLE IDE DISK DRIVER (IDE.ASM)
|
||||
PPIDEENABLE .SET FALSE ; PPIDE: ENABLE PARALLEL PORT IDE DISK DRIVER (PPIDE.ASM)
|
||||
|
||||
@@ -167,6 +167,7 @@ TMSTIMENABLE .EQU FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1)
|
||||
VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM)
|
||||
VGASIZ .EQU V80X25 ; VGA: DISPLAY FORMAT [V80X25|V80X30|V80X43]
|
||||
VRCENABLE .EQU FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM)
|
||||
SCONENABLE .EQU FALSE ; SCON: ENABLE S100 CONSOLE DRIVER (SCON.ASM)
|
||||
;
|
||||
MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM)
|
||||
MDROM .EQU TRUE ; MD: ENABLE ROM DISK
|
||||
|
||||
@@ -179,6 +179,7 @@ TMSMODE .EQU TMSMODE_MSX ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|MS
|
||||
TMSTIMENABLE .EQU FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1)
|
||||
VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM)
|
||||
VRCENABLE .EQU FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM)
|
||||
SCONENABLE .EQU FALSE ; SCON: ENABLE S100 CONSOLE DRIVER (SCON.ASM)
|
||||
;
|
||||
MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM)
|
||||
MDROM .EQU TRUE ; MD: ENABLE ROM DISK
|
||||
|
||||
@@ -236,6 +236,7 @@ TMSTIMENABLE .EQU FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1)
|
||||
VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM)
|
||||
VGASIZ .EQU V80X25 ; VGA: DISPLAY FORMAT [V80X25|V80X30|V80X43]
|
||||
VRCENABLE .EQU FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM)
|
||||
SCONENABLE .EQU FALSE ; SCON: ENABLE S100 CONSOLE DRIVER (SCON.ASM)
|
||||
;
|
||||
MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM)
|
||||
MDROM .EQU TRUE ; MD: ENABLE ROM DISK
|
||||
|
||||
@@ -164,6 +164,7 @@ TMSTIMENABLE .EQU FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1)
|
||||
VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM)
|
||||
VGASIZ .EQU V80X25 ; VGA: DISPLAY FORMAT [V80X25|V80X30|V80X43]
|
||||
VRCENABLE .EQU FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM)
|
||||
SCONENABLE .EQU FALSE ; SCON: ENABLE S100 CONSOLE DRIVER (SCON.ASM)
|
||||
;
|
||||
MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM)
|
||||
MDROM .EQU TRUE ; MD: ENABLE ROM DISK
|
||||
|
||||
@@ -175,6 +175,7 @@ TMSTIMENABLE .EQU FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1)
|
||||
VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM)
|
||||
VGASIZ .EQU V80X25 ; VGA: DISPLAY FORMAT [V80X25|V80X30|V80X43]
|
||||
VRCENABLE .EQU FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM)
|
||||
SCONENABLE .EQU FALSE ; SCON: ENABLE S100 CONSOLE DRIVER (SCON.ASM)
|
||||
;
|
||||
MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM)
|
||||
MDROM .EQU TRUE ; MD: ENABLE ROM DISK
|
||||
|
||||
@@ -177,6 +177,7 @@ TMSTIMENABLE .EQU FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1)
|
||||
VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM)
|
||||
VGASIZ .EQU V80X25 ; VGA: DISPLAY FORMAT [V80X25|V80X30|V80X43]
|
||||
VRCENABLE .EQU FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM)
|
||||
SCONENABLE .EQU FALSE ; SCON: ENABLE S100 CONSOLE DRIVER (SCON.ASM)
|
||||
;
|
||||
MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM)
|
||||
MDROM .EQU TRUE ; MD: ENABLE ROM DISK
|
||||
|
||||
@@ -185,6 +185,7 @@ TMSMODE .EQU TMSMODE_MSX ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|MS
|
||||
TMSTIMENABLE .EQU FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1)
|
||||
VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM)
|
||||
VRCENABLE .EQU FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM)
|
||||
SCONENABLE .EQU FALSE ; SCON: ENABLE S100 CONSOLE DRIVER (SCON.ASM)
|
||||
;
|
||||
MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM)
|
||||
MDROM .EQU TRUE ; MD: ENABLE ROM DISK
|
||||
|
||||
@@ -189,6 +189,7 @@ TMSMODE .EQU TMSMODE_MSX ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|MS
|
||||
TMSTIMENABLE .EQU FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1)
|
||||
VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM)
|
||||
VRCENABLE .EQU FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM)
|
||||
SCONENABLE .EQU FALSE ; SCON: ENABLE S100 CONSOLE DRIVER (SCON.ASM)
|
||||
;
|
||||
MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM)
|
||||
MDROM .EQU TRUE ; MD: ENABLE ROM DISK
|
||||
|
||||
@@ -183,6 +183,7 @@ TMSMODE .EQU TMSMODE_MSX ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|MS
|
||||
TMSTIMENABLE .EQU FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1)
|
||||
VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM)
|
||||
VRCENABLE .EQU FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM)
|
||||
SCONENABLE .EQU FALSE ; SCON: ENABLE S100 CONSOLE DRIVER (SCON.ASM)
|
||||
;
|
||||
MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM)
|
||||
MDROM .EQU TRUE ; MD: ENABLE ROM DISK
|
||||
|
||||
@@ -166,6 +166,7 @@ TMSTIMENABLE .EQU FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1)
|
||||
VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM)
|
||||
VGASIZ .EQU V80X25 ; VGA: DISPLAY FORMAT [V80X25|V80X30|V80X43]
|
||||
VRCENABLE .EQU FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM)
|
||||
SCONENABLE .EQU FALSE ; SCON: ENABLE S100 CONSOLE DRIVER (SCON.ASM)
|
||||
;
|
||||
MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM)
|
||||
MDROM .EQU TRUE ; MD: ENABLE ROM DISK
|
||||
|
||||
@@ -46,8 +46,8 @@ MPGENA .EQU $7C ; Z2 MEM MGR PAGING ENABLE REGISTER (BIT 0, WRITE ONLY)
|
||||
;
|
||||
Z180_BASE .EQU $C0 ; Z180: I/O BASE ADDRESS FOR INTERNAL REGISTERS
|
||||
Z180_CLKDIV .EQU 1 ; Z180: CHK DIV: 0=OSC/2, 1=OSC, 2=OSC*2
|
||||
Z180_MEMWAIT .EQU 0 ; Z180: MEMORY WAIT STATES (0-3)
|
||||
Z180_IOWAIT .EQU 1 ; Z180: I/O WAIT STATES TO ADD ABOVE 1 W/S BUILT-IN (0-3)
|
||||
Z180_MEMWAIT .EQU 1 ; Z180: MEMORY WAIT STATES (0-3)
|
||||
Z180_IOWAIT .EQU 2 ; Z180: I/O WAIT STATES TO ADD ABOVE 1 W/S BUILT-IN (0-3)
|
||||
Z180_TIMER .EQU TRUE ; Z180: ENABLE Z180 SYSTEM PERIODIC TIMER
|
||||
;
|
||||
RTCIO .EQU $0C ; RTC LATCH REGISTER ADR
|
||||
@@ -125,7 +125,7 @@ DUART1BASE .EQU $40 ; DUART 1: BASE ADDRESS OF CHIP
|
||||
DUART1ACFG .EQU DEFSERCFG ; DUART 1A: SERIAL LINE CONFIG
|
||||
DUART1BCFG .EQU DEFSERCFG ; DUART 1B: SERIAL LINE CONFIG
|
||||
;
|
||||
UARTENABLE .EQU TRUE ; UART: ENABLE 8250/16550-LIKE SERIAL DRIVER (UART.ASM)
|
||||
UARTENABLE .EQU FALSE ; UART: ENABLE 8250/16550-LIKE SERIAL DRIVER (UART.ASM)
|
||||
UARTOSC .EQU 1843200 ; UART: OSC FREQUENCY IN MHZ
|
||||
UARTINTS .EQU FALSE ; UART: INCLUDE INTERRUPT SUPPORT UNDER IM1/2/3
|
||||
UARTCFG .EQU DEFSERCFG | SER_RTS ; UART: LINE CONFIG FOR UART PORTS
|
||||
@@ -148,7 +148,7 @@ Z2UENABLE .EQU FALSE ; Z2U: ENABLE Z280 UART SERIAL DRIVER (Z2U.ASM)
|
||||
;
|
||||
ACIAENABLE .EQU FALSE ; ACIA: ENABLE MOTOROLA 6850 ACIA DRIVER (ACIA.ASM)
|
||||
;
|
||||
SIOENABLE .EQU TRUE ; SIO: ENABLE ZILOG SIO SERIAL DRIVER (SIO.ASM)
|
||||
SIOENABLE .EQU FALSE ; SIO: ENABLE ZILOG SIO SERIAL DRIVER (SIO.ASM)
|
||||
SIODEBUG .EQU FALSE ; SIO: ENABLE DEBUG OUTPUT
|
||||
SIOBOOT .EQU 0 ; SIO: REBOOT ON RCV CHAR (0=DISABLED)
|
||||
SIOCNT .EQU 2 ; SIO: NUMBER OF CHIPS TO DETECT (1-2), 2 CHANNELS PER CHIP
|
||||
@@ -179,6 +179,7 @@ TMSMODE .EQU TMSMODE_MSX ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|MS
|
||||
TMSTIMENABLE .EQU FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1)
|
||||
VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM)
|
||||
VRCENABLE .EQU FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM)
|
||||
SCONENABLE .EQU FALSE ; SCON: ENABLE S100 CONSOLE DRIVER (SCON.ASM)
|
||||
;
|
||||
MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM)
|
||||
MDROM .EQU TRUE ; MD: ENABLE ROM DISK
|
||||
|
||||
@@ -164,6 +164,7 @@ TMSTIMENABLE .EQU FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1)
|
||||
VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM)
|
||||
VGASIZ .EQU V80X25 ; VGA: DISPLAY FORMAT [V80X25|V80X30|V80X43]
|
||||
VRCENABLE .EQU FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM)
|
||||
SCONENABLE .EQU FALSE ; SCON: ENABLE S100 CONSOLE DRIVER (SCON.ASM)
|
||||
;
|
||||
MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM)
|
||||
MDROM .EQU TRUE ; MD: ENABLE ROM DISK
|
||||
|
||||
@@ -179,6 +179,7 @@ TMSMODE .EQU TMSMODE_MSX ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|MS
|
||||
TMSTIMENABLE .EQU FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1)
|
||||
VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM)
|
||||
VRCENABLE .EQU FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM)
|
||||
SCONENABLE .EQU FALSE ; SCON: ENABLE S100 CONSOLE DRIVER (SCON.ASM)
|
||||
;
|
||||
MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM)
|
||||
MDROM .EQU TRUE ; MD: ENABLE ROM DISK
|
||||
|
||||
@@ -166,6 +166,7 @@ TMSMODE .EQU TMSMODE_NONE ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|M
|
||||
TMSTIMENABLE .EQU FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1)
|
||||
VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM)
|
||||
VRCENABLE .EQU FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM)
|
||||
SCONENABLE .EQU FALSE ; SCON: ENABLE S100 CONSOLE DRIVER (SCON.ASM)
|
||||
;
|
||||
MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM)
|
||||
MDROM .EQU TRUE ; MD: ENABLE ROM DISK
|
||||
|
||||
@@ -136,6 +136,7 @@ TMSMODE .EQU TMSMODE_NONE ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|M
|
||||
TMSTIMENABLE .EQU FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1)
|
||||
VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM)
|
||||
VRCENABLE .EQU FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM)
|
||||
SCONENABLE .EQU FALSE ; SCON: ENABLE S100 CONSOLE DRIVER (SCON.ASM)
|
||||
;
|
||||
MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM)
|
||||
MDROM .EQU TRUE ; MD: ENABLE ROM DISK
|
||||
|
||||
@@ -147,6 +147,7 @@ TMSMODE .EQU TMSMODE_NONE ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|M
|
||||
TMSTIMENABLE .EQU FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1)
|
||||
VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM)
|
||||
VRCENABLE .EQU FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM)
|
||||
SCONENABLE .EQU FALSE ; SCON: ENABLE S100 CONSOLE DRIVER (SCON.ASM)
|
||||
;
|
||||
MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM)
|
||||
MDROM .EQU TRUE ; MD: ENABLE ROM DISK
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
;
|
||||
; TODO:
|
||||
; - CLEAR CONSOLE SCREEN AT INITIALIZATION
|
||||
; - INITIALIZE BAUD/MODE OF SERIAL INTERFACES AT INITIALIZATION
|
||||
; - INITIALIZE BAUD/MODE OF SERIAL INTERFACES AT INITIALIZATION?
|
||||
;
|
||||
ESP_IOBASE .EQU $9C
|
||||
ESP_0_IO .EQU ESP_IOBASE + 0
|
||||
@@ -126,19 +126,52 @@ ESP_INIT6:
|
||||
;==================================================================================================
|
||||
;
|
||||
ESP_DETECT:
|
||||
; TRY TO DETECT IF PORT IS FLOATING AND
|
||||
; FAIL DETECTION IF SO
|
||||
LD C,(IY+ESP_CFG_ST) ; ESP STATUS PORT
|
||||
IN A,(C) ; READ IT
|
||||
;CALL PC_SPACE ; *DEBUG*
|
||||
;CALL PRTHEXBYTE ; *DEBUG*
|
||||
AND %11100000 ; ISOLATE TOP 3 BITS
|
||||
CP $00 ; ALWAYS ZERO IF PRESENT
|
||||
RET NZ ; ABORT ON FAILURE
|
||||
;
|
||||
; ESP32 PROCESSOR MAY TAKE A FEW SECONDS TO START UP, SO
|
||||
; HERE WE WAIT FOR BUSY TO CLEAR WITH ABOUT A 5 SECOND TIMEOUT
|
||||
LD B,0 ; LOOP UP TO 256 TIMES
|
||||
LD C,(IY+ESP_CFG_ST) ; ESP STATUS PORT
|
||||
ESP_DETECT1:
|
||||
IN A,(C) ; GET STATUS
|
||||
AND (IY+ESP_CFG_BSYMSK) ; IS ESP BUSY?
|
||||
JR Z,ESP_DETECT2 ; MOVE ALONG IF NOT BUSY
|
||||
LD DE,1500 ; 1500 * 16US = 24MS
|
||||
CALL VDELAY ; DELAY
|
||||
DJNZ ESP_DETECT1 ; LOOP
|
||||
OR $FF ; SIGNAL FAILURE
|
||||
RET ; DONE
|
||||
;
|
||||
ESP_DETECT2:
|
||||
;LD A,B ; *DEBUG*
|
||||
;CALL PC_SPACE ; *DEBUG*
|
||||
;CALL PRTHEXBYTE ; *DEBUG*
|
||||
CALL ESP_CLR ; CLEAR ANY PENDING DATA
|
||||
RET NZ ; IF FAILS, ASSUME NOT PRESENT
|
||||
LD A,ESP_CMD_DISC ; DISCOVER COMMAND
|
||||
CALL ESP_OUT ; SEND IT
|
||||
;
|
||||
; LOOK FOR SIGNATURE STARTING WITH "ESP"
|
||||
CALL ESP_INWAIT ; ATTEMPT TO GET CHAR
|
||||
;CALL PC_SPACE ; *DEBUG*
|
||||
;CALL PRTHEXBYTE ; *DEBUG*
|
||||
CP 'E'
|
||||
RET NZ
|
||||
CALL ESP_INWAIT ; ATTEMPT TO GET CHAR
|
||||
;CALL PC_SPACE ; *DEBUG*
|
||||
;CALL PRTHEXBYTE ; *DEBUG*
|
||||
CP 'S'
|
||||
RET NZ
|
||||
CALL ESP_INWAIT ; ATTEMPT TO GET CHAR
|
||||
;CALL PC_SPACE ; *DEBUG*
|
||||
;CALL PRTHEXBYTE ; *DEBUG*
|
||||
CP 'P'
|
||||
RET
|
||||
;
|
||||
@@ -162,13 +195,14 @@ ESP_CLR0:
|
||||
;
|
||||
ESP_PRTVER:
|
||||
CALL ESP_CLR ; CLEAR ANY PENDING DATA
|
||||
;LD DE,1000 ; SMALL DELAY HERE
|
||||
;CALL VDELAY ; ... SEEMS TO HELP RELIABILITY
|
||||
LD A,ESP_CMD_DISC ; DISCOVER COMMAND
|
||||
CALL ESP_OUT ; SEND IT
|
||||
CALL ESP_WTRDY ; WAIT FOR READY TO OUTPUT
|
||||
ESP_PRTVER1:
|
||||
CALL ESP_WTNBSY ; WAIT TILL NOT BUSY
|
||||
IN A,(ESP_STAT) ; GET STATUS
|
||||
;AND ESP_0_RDY ; ISOLATE OUTPUT READY BIT
|
||||
AND (IY+ESP_CFG_RDYMSK) ; ISOLATE OUTPUT READY BIT
|
||||
RET Z ; DONE IF NOTHING READY
|
||||
CALL ESP_IN ; GET NEXT CHAR
|
||||
@@ -208,19 +242,29 @@ ESP_IN1:
|
||||
;
|
||||
ESP_WTNBSY:
|
||||
LD B,0 ; MAX TRIES
|
||||
;PUSH HL ; SAVE HL
|
||||
;LD HL,0 ; MAX TRIES
|
||||
ESP_WTNBSY1:
|
||||
LD C,(IY+ESP_CFG_ST) ; ESP STATUS PORT
|
||||
IN A,(C) ; GET STATUS
|
||||
AND (IY+ESP_CFG_BSYMSK) ; IS ESP BUSY?
|
||||
RET Z ; RETURN IF NOT BUSY
|
||||
;JR Z,ESP_WTNBSY_Z ; RETURN IF NOT BUSY
|
||||
DJNZ ESP_WTNBSY1 ; ELSE LOOP
|
||||
;DEC HL ; DEC LOOP COUNTER
|
||||
;LD A,H ; CHECK FOR
|
||||
;OR L ; ... TIMEOUT
|
||||
;JR NZ,ESP_WTNBSY1 ; LOOP AS NEEDED
|
||||
CALL PC_ASTERISK ; *DEBUG*
|
||||
OR $FF ; SIGNAL TIMEOUT
|
||||
;ESP_WTNBSY_Z:
|
||||
;POP HL ; RECOVER HL
|
||||
RET ; AND RETURN
|
||||
;
|
||||
; WAIT FOR ESP TO BE BUSY
|
||||
;
|
||||
ESP_WTBSY:
|
||||
LD B,20 ; MAX TRIES
|
||||
LD B,3 ; MAX TRIES
|
||||
ESP_WTBSY1:
|
||||
LD C,(IY+ESP_CFG_ST) ; ESP STATUS PORT
|
||||
IN A,(C) ; GET STATUS
|
||||
@@ -230,6 +274,27 @@ ESP_WTBSY1:
|
||||
DJNZ ESP_WTBSY1 ; ELSE LOOP
|
||||
OR $FF ; SIGNAL TIMEOUT
|
||||
RET ; AND RETURN
|
||||
;;;;
|
||||
;;;; WAIT FOR ESP TO BE READY TO OUTPUT
|
||||
;;;;
|
||||
;;;ESP_WTRDY:
|
||||
;;; PUSH HL ; SAVE HL
|
||||
;;; LD HL,0 ; MAX TRIES
|
||||
;;;ESP_WTRDY1:
|
||||
;;; LD C,(IY+ESP_CFG_ST) ; ESP STATUS PORT
|
||||
;;; IN A,(C) ; GET STATUS
|
||||
;;; XOR $FF ; INVERT SO 0=READY
|
||||
;;; AND (IY+ESP_CFG_RDYMSK) ; IS ESP READY TO OUTPUT
|
||||
;;; JR Z,ESP_WTRDY_Z ; RETURN IF READY
|
||||
;;; DEC HL ; DEC LOOP COUNTER
|
||||
;;; LD A,H ; CHECK FOR
|
||||
;;; OR L ; ... TIMEOUT
|
||||
;;; JR NZ,ESP_WTRDY1 ; LOOP AS NEEDED
|
||||
;;; CALL PC_PERIOD ; *DEBUG*
|
||||
;;; OR $FF ; SIGNAL TIMEOUT
|
||||
;;;ESP_WTRDY_Z:
|
||||
;;; POP HL ; RECOVER HL
|
||||
;;; RET ; AND RETURN
|
||||
;
|
||||
; WAIT FOR ESP TO BE READY TO OUTPUT
|
||||
;
|
||||
@@ -242,6 +307,7 @@ ESP_WTRDY1:
|
||||
AND (IY+ESP_CFG_RDYMSK) ; IS ESP READY TO OUTPUT
|
||||
RET Z ; RETURN IF READY
|
||||
DJNZ ESP_WTRDY1 ; ELSE LOOP
|
||||
CALL PC_PERIOD ; *DEBUG*
|
||||
OR $FF ; SIGNAL TIMEOUT
|
||||
RET ; AND RETURN
|
||||
;
|
||||
|
||||
@@ -1112,12 +1112,6 @@ Z280_BOOTERR .TEXT "\r\n\r\n*** Application mode boot not supported under Z280 n
|
||||
DI ; NO INTERRUPTS
|
||||
IM 1 ; INTERRUPT MODE 1
|
||||
;
|
||||
#IF ((PLATFORM == PLT_DUO) & FALSE)
|
||||
; WAIT A WHILE
|
||||
LD B,0
|
||||
DJNZ $
|
||||
#ENDIF
|
||||
;
|
||||
#IF ((PLATFORM == PLT_DUO) & TRUE)
|
||||
; WAIT A WHILE
|
||||
LD HL,0
|
||||
@@ -2847,6 +2841,12 @@ HB_WDZ:
|
||||
BIT 6,A ; BIT 6 HAS CONFIG JUMPER STATE
|
||||
JR Z,INITSYS3 ; Z=SHORTED, BYPASS CONSOLE SWITCH
|
||||
#ENDIF
|
||||
;
|
||||
#IF (PLATFORM == PLT_S100)
|
||||
IN A,($75) ; GET IO BYTE
|
||||
AND %00000001 ; ISOLATE CONSOLE BIT
|
||||
JR NZ,INITSYS3 ; NOT SET, BYPASS CONSOLE SWITCH
|
||||
#ENDIF
|
||||
;
|
||||
LD A,(CB_CRTDEV) ; GET CRT DISPLAY DEVICE
|
||||
LD (HB_NEWCON),A ; AND QUEUE TO SWITCH
|
||||
@@ -3196,6 +3196,9 @@ HB_PCINITTBL:
|
||||
#IF (TMSENABLE)
|
||||
.DW TMS_PREINIT
|
||||
#ENDIF
|
||||
#IF (SCONENABLE)
|
||||
.DW SCON_PREINIT
|
||||
#ENDIF
|
||||
HB_PCINITTBLLEN .EQU (($ - HB_PCINITTBL) / 2)
|
||||
|
||||
;==================================================================================================
|
||||
@@ -3300,6 +3303,9 @@ HB_INITTBL:
|
||||
#IF (TMSENABLE)
|
||||
.DW TMS_INIT
|
||||
#ENDIF
|
||||
#IF (SCONENABLE)
|
||||
.DW SCON_INIT
|
||||
#ENDIF
|
||||
#IF (VRCENABLE)
|
||||
.DW VRC_INIT
|
||||
#ENDIF
|
||||
@@ -6361,12 +6367,21 @@ SIZ_VDU .EQU $ - ORG_VDU
|
||||
#IF (TMSENABLE)
|
||||
ORG_TMS .EQU $
|
||||
#INCLUDE "tms.asm"
|
||||
SIZ_TMS .EQU $ - ORG_TMS
|
||||
SIZ_TMS .EQU $ - ORG_TMS
|
||||
.ECHO "TMS occupies "
|
||||
.ECHO SIZ_TMS
|
||||
.ECHO " bytes.\n"
|
||||
#ENDIF
|
||||
;
|
||||
#IF (SCONENABLE)
|
||||
ORG_SCON .EQU $
|
||||
#INCLUDE "scon.asm"
|
||||
SIZ_SCON .EQU $ - ORG_SCON
|
||||
.ECHO "SCON occupies "
|
||||
.ECHO SIZ_SCON
|
||||
.ECHO " bytes.\n"
|
||||
#ENDIF
|
||||
;
|
||||
#IF (GDCENABLE)
|
||||
ORG_GDC .EQU $
|
||||
#INCLUDE "gdc.asm"
|
||||
@@ -7420,6 +7435,7 @@ PS_SDZ2U .TEXT "Z2U$"
|
||||
PS_SDLPT .TEXT "LPT$"
|
||||
PS_SDESPCON .TEXT "ESPCON$"
|
||||
PS_SDESPSER .TEXT "ESPSER$"
|
||||
PS_SDSCON .TEXT "SCON$"
|
||||
;
|
||||
; CHARACTER SUB TYPE STRINGS
|
||||
;
|
||||
|
||||
@@ -315,6 +315,7 @@ CIODEV_Z2U .EQU $A0
|
||||
CIODEV_LPT .EQU $B0
|
||||
CIODEV_ESPCON .EQU $C0
|
||||
CIODEV_ESPSER .EQU $D0
|
||||
CIODEV_SCON .EQU $E0
|
||||
;
|
||||
; SUB TYPES OF CHAR DEVICES
|
||||
;
|
||||
|
||||
@@ -371,7 +371,6 @@ PKD_KEYMAP:
|
||||
; POS $18 $19 $1A $1B
|
||||
; KEY [F4] [F3] [F2] [F1]
|
||||
.DB $23, $22, $21, $20
|
||||
|
||||
;
|
||||
;==================================================================================================
|
||||
; PKD OUTPUT ROUTINES
|
||||
|
||||
126
Source/HBIOS/scon.asm
Normal file
126
Source/HBIOS/scon.asm
Normal file
@@ -0,0 +1,126 @@
|
||||
;
|
||||
;==================================================================================================
|
||||
; S100 PROPELLER CONSOLE DRIVER
|
||||
;==================================================================================================
|
||||
;
|
||||
; TODO:
|
||||
;
|
||||
SCON_IOBASE .EQU $00
|
||||
;
|
||||
SCON_STATUS .EQU SCON_IOBASE
|
||||
SCON_DATA .EQU SCON_IOBASE + 1
|
||||
;
|
||||
SCON_KBDRDY .EQU %00000010
|
||||
SCON_DSPRDY .EQU %00000100
|
||||
;
|
||||
SCON_COLS .EQU 80
|
||||
SCON_ROWS .EQU 40
|
||||
;
|
||||
;
|
||||
;
|
||||
SCON_PREINIT:
|
||||
XOR A
|
||||
RET
|
||||
;
|
||||
;
|
||||
;
|
||||
SCON_INIT:
|
||||
CALL NEWLINE
|
||||
PRTS("SCON:$")
|
||||
;
|
||||
; DISPLAY CONSOLE DIMENSIONS
|
||||
CALL PC_SPACE
|
||||
LD A,SCON_COLS
|
||||
CALL PRTDECB
|
||||
LD A,'X'
|
||||
CALL COUT
|
||||
LD A,SCON_ROWS
|
||||
CALL PRTDECB
|
||||
CALL PRTSTRD
|
||||
.TEXT " TEXT (ANSI)$"
|
||||
;
|
||||
; ADD OURSELVES TO CIO DISPATCH TABLE
|
||||
;
|
||||
LD D,0 ; PHYSICAL UNIT IS ZERO
|
||||
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
|
||||
;
|
||||
XOR A ; SIGNAL SUCCESS
|
||||
RET
|
||||
;
|
||||
; DRIVER FUNCTION TABLE
|
||||
;
|
||||
SCON_FNTBL:
|
||||
.DW SCON_IN
|
||||
.DW SCON_OUT
|
||||
.DW SCON_IST
|
||||
.DW SCON_OST
|
||||
.DW SCON_INITDEV
|
||||
.DW SCON_QUERY
|
||||
.DW SCON_DEVICE
|
||||
#IF (($ - SCON_FNTBL) != (CIO_FNCNT * 2))
|
||||
.ECHO "*** INVALID SCON FUNCTION TABLE ***\n"
|
||||
#ENDIF
|
||||
;
|
||||
;
|
||||
;
|
||||
SCON_IN:
|
||||
CALL SCON_IST ; CHECK FOR CHAR PENDING
|
||||
JR Z,SCON_IN ; WAIT FOR IT IF NECESSARY
|
||||
IN0 A,(SCON_DATA) ; READ THE CHAR FROM PROPIO
|
||||
LD E,A
|
||||
RET
|
||||
;
|
||||
;
|
||||
;
|
||||
SCON_IST:
|
||||
IN0 A,(SCON_STATUS) ; READ LINE STATUS REGISTER
|
||||
AND SCON_KBDRDY ; ISOLATE KBDRDY
|
||||
JP Z,CIO_IDLE ; RETURN VIA IDLE PROCESSING
|
||||
OR $FF ; SET A=$FF TO SIGNAL READY
|
||||
RET ; RETURN
|
||||
;
|
||||
;
|
||||
;
|
||||
SCON_OUT:
|
||||
CALL SCON_OST ; CHECK FOR OUTPUT READY
|
||||
JR Z,SCON_OUT ; WAIT IF NECESSARY
|
||||
LD A,E ; RECOVER THE CHAR TO WRITE
|
||||
OUT0 (SCON_DATA),A ; WRITE THE CHAR TO PROPIO
|
||||
RET
|
||||
;
|
||||
;
|
||||
;
|
||||
SCON_OST:
|
||||
IN0 A,(SCON_STATUS) ; READ LINE STATUS REGISTER
|
||||
AND SCON_DSPRDY ; ISOLATE DSPRDY
|
||||
JP Z,CIO_IDLE ; RETURN VIA IDLE PROCESSING
|
||||
OR $FF ; SET A=$FF TO SIGNAL READY
|
||||
RET ; RETURN
|
||||
;
|
||||
;
|
||||
;
|
||||
SCON_INITDEV:
|
||||
SYSCHKERR(ERR_NOTIMPL)
|
||||
RET
|
||||
;
|
||||
;
|
||||
;
|
||||
SCON_QUERY:
|
||||
LD DE,0
|
||||
LD HL,0
|
||||
XOR A
|
||||
RET
|
||||
;
|
||||
;
|
||||
;
|
||||
SCON_DEVICE:
|
||||
LD D,CIODEV_SCON ; D := DEVICE TYPE
|
||||
LD E,0 ; E := DEVICE NUM, ALWAYS 0
|
||||
LD C,$BF ; C := DEVICE TYPE, 0xBF IS PROP TERM
|
||||
LD H,0 ; H := 0, DRIVER HAS NO MODES
|
||||
LD L,SCON_IOBASE ; L := BASE I/O ADDRESS
|
||||
XOR A ; SIGNAL SUCCESS
|
||||
RET
|
||||
@@ -2,7 +2,7 @@
|
||||
#DEFINE RMN 3
|
||||
#DEFINE RUP 0
|
||||
#DEFINE RTP 0
|
||||
#DEFINE BIOSVER "3.3.0-dev.48"
|
||||
#DEFINE BIOSVER "3.3.0-dev.50"
|
||||
#define rmj RMJ
|
||||
#define rmn RMN
|
||||
#define rup RUP
|
||||
|
||||
@@ -3,5 +3,5 @@ rmn equ 3
|
||||
rup equ 0
|
||||
rtp equ 0
|
||||
biosver macro
|
||||
db "3.3.0-dev.48"
|
||||
db "3.3.0-dev.50"
|
||||
endm
|
||||
|
||||
Reference in New Issue
Block a user