mirror of
https://github.com/wwarthen/RomWBW.git
synced 2026-02-07 06:53:13 -06:00
Compare commits
3 Commits
v3.3.0-dev
...
v3.3.0-dev
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
229bdaa308 | ||
|
|
5c0894b8c1 | ||
|
|
9cefcfb0bc |
@@ -12,6 +12,8 @@ Version 3.3
|
||||
- WBW: Support for SyQuest SparQ Drive on PPI interface (much inspiration from Alan Cox)
|
||||
- WBW: Support for ATAPI Disk Drives (not CD-ROMs) on IDE and PPIDE interfaces
|
||||
- R?P: Added new disk images: Aztec C, MS BASIC Compiler, MS Fortran, Games, HiTech-C, Turbo Pascal, SLR Z80ASM
|
||||
- JBL: Added RCZ80 configuration for ColecoVision
|
||||
- WBW: Support for Z180 running interrupt mode 1
|
||||
|
||||
Version 3.2.1
|
||||
-------------
|
||||
|
||||
79
Source/HBIOS/Config/RCZ80_jbl.asm
Normal file
79
Source/HBIOS/Config/RCZ80_jbl.asm
Normal file
@@ -0,0 +1,79 @@
|
||||
;
|
||||
;==================================================================================================
|
||||
; RCBUS Z80 COLECOVISION-COMPATIBLE CONFIGURATION FOR J.B. LANGSTON'S GAME BOARDS
|
||||
;==================================================================================================
|
||||
;
|
||||
; THIS CONFIGURATION ENABLES DRIVERS FOR THE TMS9918 AND SN76489 BOARDS BY J.B. LANGSTON
|
||||
; AND THE YM2149 BOARD BY ED BRINDLEY. THE TMS9918 IS CONFIGURED TO USE THE COLECOVISION
|
||||
; PORTS AND HAS INTERRUPTS DISABLED BECAUSE COLECOVISION USES NMI, WHICH WOULD BREAK CP/M
|
||||
; WHEN ENABLED. IT IS CONFIGURED FOR A 3.686MHZ CPU CLOCK IN ORDER TO BE COMPATIBLE WITH
|
||||
; COLECOVISION GAMES. THE FIRST SIO PORT IS CONFIGURED TO RUN AT 115200 BPS WITH THE CPU
|
||||
; RUNNING AT THIS SPEED. THE SECOND SIO PORT IS CONFIGURED TO RUN AT 115200 BPS WITH THE
|
||||
; SECOND CLOCK SET TO 7.373MHZ. LOWER BAUD RATES CAN BE ACHIEVED ON THE SECOND PORT BY
|
||||
; MOVING THE SECONDARY CLOCK DIVIDER JUMPER (E.G., 38400 @ 2.458MHZ). THE BAUD RATE DOES
|
||||
; NOT NEED TO BE CHANGED IN THIS CONFIGURATION FILE IN ORDER TO DO THIS, BUT THE DEVICE
|
||||
; LIST WILL INCORRECTLY SHOW THE PORT RUNNING AT 115200 REGARDLESS OF THE CLOCK DIVIDER.
|
||||
; UNCOMMENT THE LINE THAT SETS BOOTCON TO 1 TO BOOT ON THE SECOND SIO PORT BY DEFAULT.
|
||||
;
|
||||
; THE COMPLETE SET OF DEFAULT CONFIGURATION SETTINGS FOR THIS PLATFORM ARE FOUND IN THE
|
||||
; CFG_<PLT>.ASM INCLUDED FILE WHICH IS FOUND IN THE PARENT DIRECTORY. THIS FILE CONTAINS
|
||||
; COMMON CONFIGURATION SETTINGS THAT OVERRIDE THE DEFAULTS. IT IS INTENDED THAT YOU MAKE
|
||||
; YOUR CUSTOMIZATIONS IN THIS FILE AND JUST INHERIT ALL OTHER SETTINGS FROM THE DEFAULTS.
|
||||
; EVEN BETTER, YOU CAN MAKE A COPY OF THIS FILE WITH A NAME LIKE <PLT>_XXX.ASM AND SPECIFY
|
||||
; YOUR FILE IN THE BUILD PROCESS.
|
||||
;
|
||||
; N.B., SINCE THE SETTINGS BELOW ARE REDEFINING VALUES ALREADY SET IN THE INCLUDED FILE,
|
||||
; TASM INSISTS THAT YOU USE THE .SET OPERATOR AND NOT THE .EQU OPERATOR BELOW. ATTEMPTING
|
||||
; TO REDEFINE A VALUE WITH .EQU BELOW WILL CAUSE TASM ERRORS!
|
||||
;
|
||||
; PLEASE REFER TO THE CUSTOM BUILD INSTRUCTIONS (README.TXT) IN THE SOURCE DIRECTORY (TWO
|
||||
; DIRECTORIES ABOVE THIS ONE).
|
||||
;
|
||||
#DEFINE BOOT_DEFAULT "Z" ; DEFAULT BOOT LOADER CMD ON <CR> OR AUTO BOOT
|
||||
;
|
||||
#include "cfg_rcz80.asm"
|
||||
;
|
||||
CPUOSC .SET 3686400 ; CPU OSC FREQ IN MHZ
|
||||
CRTACT .SET FALSE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP
|
||||
;BOOTCON .SET 1 ; BOOT CONSOLE DEVICE
|
||||
;
|
||||
DSRTCENABLE .SET TRUE ; DSRTC: ENABLE DS-1302 CLOCK DRIVER (DSRTC.ASM)
|
||||
RP5RTCENABLE .SET FALSE ; RP5C01 RTC BASED CLOCK (RP5RTC.ASM)
|
||||
;
|
||||
UARTENABLE .SET FALSE ; UART: ENABLE 8250/16550-LIKE SERIAL DRIVER (UART.ASM)
|
||||
ACIAENABLE .SET FALSE ; ACIA: ENABLE MOTOROLA 6850 ACIA DRIVER (ACIA.ASM)
|
||||
SIOENABLE .SET TRUE ; SIO: ENABLE ZILOG SIO SERIAL DRIVER (SIO.ASM)
|
||||
DUARTENABLE .SET FALSE ; DUART: ENABLE 2681/2692 SERIAL DRIVER (DUART.ASM)
|
||||
;
|
||||
SIOENABLE .SET TRUE ; SIO: ENABLE ZILOG SIO SERIAL DRIVER (SIO.ASM)
|
||||
SIODEBUG .SET FALSE ; SIO: ENABLE DEBUG OUTPUT
|
||||
SIOBOOT .SET 0 ; SIO: REBOOT ON RCV CHAR (0=DISABLED)
|
||||
SIOCNT .SET 1 ; SIO: NUMBER OF CHIPS TO DETECT (1-2), 2 CHANNELS PER CHIP
|
||||
SIO0MODE .SET SIOMODE_RC ; SIO 0: CHIP TYPE: SIOMODE_[STD|RC|SMB|ZP]
|
||||
SIO0BASE .SET $80 ; SIO 0: REGISTERS BASE ADR
|
||||
SIO0ACLK .SET CPUOSC ; SIO 0A: OSC FREQ IN HZ, ZP=2457600/4915200, RC/SMB=7372800
|
||||
SIO0ACFG .SET SER_115200_8N1 ; SIO 0A: SERIAL LINE CONFIG
|
||||
SIO0ACTCC .SET -1 ; SIO 0A: CTC CHANNEL 0=A, 1=B, 2=C, 3=D, -1 FOR NONE
|
||||
SIO0BCLK .SET 7372800 ; SIO 0B: OSC FREQ IN HZ, ZP=2457600/4915200, RC/SMB=7372800
|
||||
SIO0BCFG .SET SER_115200_8N1 ; SIO 0B: SERIAL LINE CONFIG
|
||||
SIO0BCTCC .SET -1 ; SIO 0B: CTC CHANNEL 0=A, 1=B, 2=C, 3=D, -1 FOR NONE
|
||||
;
|
||||
TMSENABLE .SET TRUE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM)
|
||||
TMSTIMENABLE .SET FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1)
|
||||
TMSMODE .SET TMSMODE_COLECO ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|MSXKBD|COLECO]
|
||||
MKYENABLE .SET FALSE ; MSX 5255 PPI KEYBOARD COMPATIBLE DRIVER (REQUIRES TMS VDA DRIVER)
|
||||
VDAEMU_SERKBD .SET 1 ; VDA EMULATION: SERIAL KBD UNIT #, OR $FF FOR HW KBD
|
||||
;
|
||||
AY38910ENABLE .SET TRUE ; AY: AY-3-8910 / YM2149 SOUND DRIVER
|
||||
AYMODE .SET AYMODE_RCZ80 ; AY: DRIVER MODE: AYMODE_[SCG|N8|RCZ80|RCZ180|MSX|LINC]
|
||||
SN76489ENABLE .SET TRUE ; SN: ENABLE SN76489 SOUND DRIVER
|
||||
;
|
||||
FDENABLE .SET FALSE ; FD: ENABLE FLOPPY DISK DRIVER (FD.ASM)
|
||||
FDMODE .SET FDMODE_RCWDC ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|ZETA2|DIDE|N8|DIO3|RCSMC|RCWDC|DYNO|EPWDC]
|
||||
;
|
||||
IDEENABLE .SET TRUE ; IDE: ENABLE IDE DISK DRIVER (IDE.ASM)
|
||||
PPIDEENABLE .SET FALSE ; PPIDE: ENABLE PARALLEL PORT IDE DISK DRIVER (PPIDE.ASM)
|
||||
SDENABLE .SET FALSE ; SD: ENABLE SD CARD DISK DRIVER (SD.ASM)
|
||||
SDCNT .SET 1 ; SD: NUMBER OF SD CARD DEVICES (1-2), FOR DSD/SC/MT SC ONLY
|
||||
;
|
||||
PRPENABLE .SET FALSE ; PRP: ENABLE ECB PROPELLER IO BOARD DRIVER (PRP.ASM)
|
||||
@@ -81,7 +81,7 @@ ASCI_RTS .EQU %00010000 ; ~RTS BIT OF CNTLA REG
|
||||
;
|
||||
#IF (ASCIINTS)
|
||||
;
|
||||
#IF (INTMODE == 2)
|
||||
#IF (INTMODE > 0)
|
||||
;
|
||||
ASCI0_IVT .EQU IVT(INT_SER0)
|
||||
ASCI1_IVT .EQU IVT(INT_SER1)
|
||||
@@ -125,25 +125,19 @@ ASCI_PREINIT2:
|
||||
;
|
||||
#IF (ASCIINTS)
|
||||
;
|
||||
#IF (INTMODE >= 1)
|
||||
; Z180 ASCI INTERRUPTS OPERATE LIKE IM2 EVEN WHEN IM1 IS ACTIVE.
|
||||
;
|
||||
#IF (INTMODE > 0)
|
||||
; SETUP INT VECTORS AS APPROPRIATE
|
||||
LD A,(ASCI_DEV) ; GET DEVICE COUNT
|
||||
OR A ; SET FLAGS
|
||||
JR Z,ASCI_PREINIT3 ; IF ZERO, NO ASCI DEVICES, ABORT
|
||||
;
|
||||
#IF (INTMODE == 1)
|
||||
; ADD IM1 INT CALL LIST ENTRY
|
||||
LD HL,ASCI_INT ; GET INT VECTOR
|
||||
CALL HB_ADDIM1 ; ADD TO IM1 CALL LIST
|
||||
#ENDIF
|
||||
;
|
||||
#IF (INTMODE == 2)
|
||||
; SETUP IM2 VECTORS
|
||||
LD HL,ASCI_INT0
|
||||
LD (ASCI0_IVT),HL ; IVT INDEX
|
||||
LD HL,ASCI_INT1
|
||||
LD (ASCI1_IVT),HL ; IVT INDEX
|
||||
#ENDIF
|
||||
;
|
||||
#ENDIF
|
||||
;
|
||||
@@ -204,24 +198,6 @@ ASCI_INIT1:
|
||||
;
|
||||
#IF (INTMODE > 0)
|
||||
;
|
||||
; IM1 ENTRY POINT
|
||||
;
|
||||
ASCI_INT:
|
||||
; CHECK/HANDLE FIRST PORT
|
||||
LD A,(ASCI0_CFG + 1) ; GET ASCI TYPE FOR FIRST ASCI
|
||||
OR A ; SET FLAGS
|
||||
CALL NZ,ASCI_INT0 ; CALL IF EXISTS
|
||||
RET NZ ; DONE IF INT HANDLED
|
||||
;
|
||||
; CHECK/HANDLE SECOND PORT
|
||||
LD A,(ASCI1_CFG + 1) ; GET ASCI TYPE FOR SECOND ASCI
|
||||
OR A ; SET FLAGS
|
||||
CALL NZ,ASCI_INT1 ; CALL IF EXISTS
|
||||
;
|
||||
RET ; DONE
|
||||
;
|
||||
; IM2 ENTRY POINTS
|
||||
;
|
||||
ASCI_INT0:
|
||||
; INTERRUPT HANDLER FOR FIRST ASCI (ASCI0)
|
||||
LD IY,ASCI0_CFG ; POINT TO ASCI0 CFG
|
||||
|
||||
@@ -247,7 +247,8 @@ RTCDEF .SET RTCDEF | %00001000 ; INITIAL SPEED LOW
|
||||
RET
|
||||
.FILL (038H - $),0FFH ; RST 38 / IM1 INT
|
||||
#IF (INTMODE == 1)
|
||||
JP INT_IM1 ; JP TO INTERRUPT HANDLER IN HI MEM
|
||||
CALL HBX_INT ; HANDLE IM1 INTERRUPTS
|
||||
.DB $10 << 2 ; USE SPECIAL VECTOR #16
|
||||
#ELSE
|
||||
RET ; RETURN W/ INTS DISABLED
|
||||
#ENDIF
|
||||
@@ -812,8 +813,6 @@ HBX_INTSTK .EQU $
|
||||
!!! ; FORCE AN ASSEMBLY ERROR
|
||||
#ENDIF
|
||||
;
|
||||
#IF ((INTMODE == 2) | (INTMODE == 3))
|
||||
;
|
||||
; HBIOS INTERRUPT SLOT ASSIGNMENTS
|
||||
;
|
||||
; # Z80 Z180
|
||||
@@ -872,19 +871,9 @@ HBX_IV0D: CALL HBX_INT \ .DB $0D << 2
|
||||
HBX_IV0E: CALL HBX_INT \ .DB $0E << 2
|
||||
HBX_IV0F: CALL HBX_INT \ .DB $0F << 2
|
||||
;
|
||||
#ENDIF
|
||||
;
|
||||
INT_IM1:
|
||||
#IF (INTMODE == 1)
|
||||
CALL HBX_INT
|
||||
.DB $00
|
||||
#ELSE
|
||||
RETI ; UNEXPECTED INT, RET W/ INTS LEFT DISABLED
|
||||
#ENDIF
|
||||
HBX_INT: ; COMMON INTERRUPT ROUTING CODE
|
||||
;
|
||||
#IF (INTMODE > 0)
|
||||
;
|
||||
HBX_INT: ; COMMON INTERRUPT ROUTING CODE
|
||||
;
|
||||
#IF (MEMMGR == MM_Z280)
|
||||
;
|
||||
@@ -966,7 +955,11 @@ HBX_INT_SP .EQU $ - 2
|
||||
RETI ; AND RETURN
|
||||
;
|
||||
#ENDIF
|
||||
|
||||
;
|
||||
#ELSE
|
||||
;
|
||||
RET
|
||||
;
|
||||
#ENDIF
|
||||
;
|
||||
; SMALL TEMPORARY STACK FOR USE BY HBX_BNKCPY
|
||||
@@ -1038,34 +1031,6 @@ HB_STACK .EQU $ ; TOP OF HBIOS STACK
|
||||
; INTERRUPT VECTOR TABLE (MUST START AT PAGE BOUNDARY!!!)
|
||||
;==================================================================================================
|
||||
;
|
||||
; IM1 INTERRUPTS ARRIVE HERE AFTER BANK SWITCH TO HBIOS BANK
|
||||
; LIST OF IM1 INT CALLS IS BUILT DYNAMICALLY BELOW
|
||||
; SEE HB_ADDIM1 ROUTINE
|
||||
; EACH ENTRY WILL LOOK LIKE:
|
||||
; CALL XXXX ; CALL INT HANDLER
|
||||
; RET NZ ; RETURN IF HANDLED
|
||||
;
|
||||
; NOTE THAT THE LIST IS INITIALLY FILLED WITH CALLS TO HB_BADINT.
|
||||
; AS THE TABLE IS POPULATED, THE ADDRESS OF HB_BADINT IS OVERLAID
|
||||
; WITH THE ADDRESS OF A REAL INTERRUPT HANDLER.
|
||||
;
|
||||
; THERE IS ROOM FOR 8 ENTRIES PLUS A FINAL CALL TO HB_BADINT.
|
||||
;
|
||||
#IF (INTMODE < 2)
|
||||
;
|
||||
HB_IVT:
|
||||
CALL HB_BADINT \ RET NZ
|
||||
CALL HB_BADINT \ RET NZ
|
||||
CALL HB_BADINT \ RET NZ
|
||||
CALL HB_BADINT \ RET NZ
|
||||
CALL HB_BADINT \ RET NZ
|
||||
CALL HB_BADINT \ RET NZ
|
||||
CALL HB_BADINT \ RET NZ
|
||||
CALL HB_BADINT \ RET NZ
|
||||
CALL HB_BADINT \ RET NZ
|
||||
;
|
||||
#ENDIF
|
||||
;
|
||||
; IM2 INTERRUPTS ARRIVE HERE AFTER BANK SWITCH TO HBIOS BANK
|
||||
; THE LIST OF JP TABLE ENTRIES MATCHES THE IM2 VECTORS ONE FOR
|
||||
; ONE. ANY CALL TO THE PRIMARY IVT (HBX_IVT) WILL BE MAPPED TO
|
||||
@@ -1079,8 +1044,6 @@ HB_IVT:
|
||||
; NOTE THAT EACH ENTRY HAS A FILLER BYTE OF VALUE ZERO. THIS BYTE
|
||||
; HAS NO FUNCTION. IT IS JUST USED TO MAKE ENTRIES AN EVEN 4 BYTES.
|
||||
;
|
||||
#IF ((INTMODE == 2) | (INTMODE == 3))
|
||||
;
|
||||
HB_IVT:
|
||||
HB_IVT00: JP HB_BADINT \ .DB 0
|
||||
HB_IVT01: JP HB_BADINT \ .DB 0
|
||||
@@ -1098,8 +1061,31 @@ HB_IVT0C: JP HB_BADINT \ .DB 0
|
||||
HB_IVT0D: JP HB_BADINT \ .DB 0
|
||||
HB_IVT0E: JP HB_BADINT \ .DB 0
|
||||
HB_IVT0F: JP HB_BADINT \ .DB 0
|
||||
HB_IVT10: JP HB_IM1INT \ .DB 0
|
||||
;
|
||||
#ENDIF
|
||||
; IM1 INTERRUPTS ARRIVE HERE AFTER BANK SWITCH TO HBIOS BANK
|
||||
; LIST OF IM1 INT CALLS IS BUILT DYNAMICALLY BELOW
|
||||
; SEE HB_ADDIM1 ROUTINE
|
||||
; EACH ENTRY WILL LOOK LIKE:
|
||||
; CALL XXXX ; CALL INT HANDLER
|
||||
; RET NZ ; RETURN IF HANDLED
|
||||
;
|
||||
; NOTE THAT THE LIST IS INITIALLY FILLED WITH CALLS TO HB_BADINT.
|
||||
; AS THE TABLE IS POPULATED, THE ADDRESS OF HB_BADINT IS OVERLAID
|
||||
; WITH THE ADDRESS OF A REAL INTERRUPT HANDLER.
|
||||
;
|
||||
; THERE IS ROOM FOR 8 ENTRIES PLUS A FINAL CALL TO HB_BADINT.
|
||||
;
|
||||
HB_IM1INT:
|
||||
CALL HB_BADINT \ RET NZ
|
||||
CALL HB_BADINT \ RET NZ
|
||||
CALL HB_BADINT \ RET NZ
|
||||
CALL HB_BADINT \ RET NZ
|
||||
CALL HB_BADINT \ RET NZ
|
||||
CALL HB_BADINT \ RET NZ
|
||||
CALL HB_BADINT \ RET NZ
|
||||
CALL HB_BADINT \ RET NZ
|
||||
CALL HB_BADINT \ RET NZ
|
||||
;
|
||||
;==================================================================================================
|
||||
; SYSTEM INITIALIZATION
|
||||
@@ -1711,11 +1697,14 @@ HB_START1: ; BNKCALL ARRIVES HERE, BUT NOW RUNNING IN RAM BANK
|
||||
;
|
||||
; MAKE SURE IM1 INT VECTOR IS RIGHT
|
||||
#IF (INTMODE == 1)
|
||||
; JP INT_IM1 IF INTERRUPT MODE ACTIVE
|
||||
LD A,$C3
|
||||
; CALL HBX_INT ; HANDLE IM1 INTERRUPTS
|
||||
; .DB $10 << 2 ; USE SPECIAL VECTOR #16
|
||||
LD A,$CD ; CALL OPCODE
|
||||
LD ($0038),A
|
||||
LD HL,INT_IM1
|
||||
LD HL,HBX_INT ; ADDRESS
|
||||
LD ($0039),HL
|
||||
LD A,$10 << 2 ; IM1 VECTOR
|
||||
LD ($003B),A
|
||||
#ELSE
|
||||
; RETI ($ED, $4D) IF NON-INTERRUPT MODE
|
||||
LD HL,$0038
|
||||
@@ -1809,8 +1798,8 @@ SAVE_REC_M:
|
||||
;
|
||||
; TEST DEBUG ***************************************************************************************
|
||||
;
|
||||
PRTS("DEBUG-IVT$")
|
||||
LD DE,HB_IVT
|
||||
PRTS("DEBUG-IM1INT$")
|
||||
LD DE,HB_IM1INT
|
||||
CALL DUMP_BUFFER
|
||||
CALL NEWLINE
|
||||
;
|
||||
@@ -2116,7 +2105,7 @@ HB_CPU3:
|
||||
;
|
||||
#IF (CPUFAM == CPU_Z180)
|
||||
;
|
||||
#IF (INTMODE == 2)
|
||||
#IF (INTMODE > 0)
|
||||
;
|
||||
; MASK ALL EXTERNAL INTERRUPTS FOR NOW
|
||||
LD A,$01 ; INT0 ENABLED, INT1-2 DISABLED
|
||||
@@ -2327,8 +2316,8 @@ NXTMIO: LD A,(HL)
|
||||
; TEST DEBUG ***************************************************************************************
|
||||
;
|
||||
CALL NEWLINE2
|
||||
PRTS("DEBUG+IVT$")
|
||||
LD DE,HB_IVT
|
||||
PRTS("DEBUG+IM1INT$")
|
||||
LD DE,HB_IM1INT
|
||||
CALL DUMP_BUFFER
|
||||
;
|
||||
; TEST DEBUG ***************************************************************************************
|
||||
@@ -5041,7 +5030,12 @@ SYS_INTGET1:
|
||||
INC A ; BUMP TO ADR FIELD
|
||||
LD H,0
|
||||
LD L,A
|
||||
#IF (INTMODE == 1)
|
||||
LD DE,HB_IM1INT ; DE := START OF VECTOR TABLE
|
||||
#ENDIF
|
||||
#IF (INTMODE == 2)
|
||||
LD DE,HB_IVT ; DE := START OF VECTOR TABLE
|
||||
#ENDIF
|
||||
ADD HL,DE ; HL := ADR OF VECTOR
|
||||
XOR A ; INDICATE SUCCESS
|
||||
RET
|
||||
@@ -5123,7 +5117,7 @@ HB_ADDIM1:
|
||||
;
|
||||
HB_IM1CNT .DB 0 ; NUMBER OF ENTRIES IN CALL LIST
|
||||
HB_IM1MAX .DB 8 ; MAX ENTRIES IN CALL LIST
|
||||
HB_IM1PTR .DW HB_IVT ; POINTER FOR NEXT IM1 ENTRY
|
||||
HB_IM1PTR .DW HB_IM1INT ; POINTER FOR NEXT IM1 ENTRY
|
||||
;
|
||||
#ENDIF
|
||||
;
|
||||
|
||||
@@ -47,7 +47,8 @@ cmdbuf .equ $80 ; cmd buf is in second half of page zero
|
||||
cmdmax .equ 60 ; max cmd len (arbitrary), must be < bufsiz
|
||||
bufsiz .equ $80 ; size of cmd buf
|
||||
;
|
||||
int_im1 .equ $FF00 ; IM1 vector target for RomWBW HBIOS proxy
|
||||
;;int_im1 .equ $FF00 ; IM1 vector target for RomWBW HBIOS proxy
|
||||
hbx_int .equ $FF60 ; IM1 vector target for RomWBW HBIOS proxy
|
||||
;
|
||||
bid_cur .equ -1 ; used below to indicate current bank
|
||||
;
|
||||
@@ -77,7 +78,8 @@ bid_cur .equ -1 ; used below to indicate current bank
|
||||
.fill ($38 - $)
|
||||
#if (BIOS == BIOS_WBW)
|
||||
#if (INTMODE == 1)
|
||||
jp int_im1 ; go to handler in hi mem
|
||||
call hbx_int ; handle im1 interrupts
|
||||
.db $10 << 2 ; use special vector #16
|
||||
#else
|
||||
ret ; return w/ ints left disabled
|
||||
#endif
|
||||
|
||||
@@ -728,12 +728,13 @@ MON_SERIAL .EQU MON_LOC + (1 * 3) ; MONITOR ENTRY (SERIAL PORT)
|
||||
;
|
||||
; INTERRUPT MODE 2 SLOT ASSIGNMENTS
|
||||
;
|
||||
#IF ((INTMODE == 2) | (INTMODE == 3))
|
||||
#IF (((CPUFAM == CPU_Z180) | (CPUFAM == CPU_Z280)) & (INTMODE > 0))
|
||||
|
||||
#IF ((CPUFAM == CPU_Z180) | (CPUFAM == CPU_Z280))
|
||||
; NOTE THAT Z180 PROCESSES ALL INTERNAL INTERRUPTS JUST LIKE
|
||||
; IM2 EVEN WHEN CHIP IS IN IM1 MODE. SO WE INCLUDE THE IM2
|
||||
; INTERRUPT ASSIGNMENTS FOR IM1 BELOW.
|
||||
|
||||
; Z180-BASED SYSTEMS
|
||||
|
||||
INT_INT1 .EQU 0 ; Z180 INT 1
|
||||
INT_INT2 .EQU 1 ; Z180 INT 2
|
||||
INT_TIM0 .EQU 2 ; Z180 TIMER 0
|
||||
@@ -750,19 +751,18 @@ INT_PIO1B .EQU 12 ; ZILOG PIO 1, CHANNEL B
|
||||
INT_SIO0 .EQU 13 ; ZILOG SIO 0, CHANNEL A & B
|
||||
INT_SIO1 .EQU 14 ; ZILOG SIO 1, CHANNEL A & B
|
||||
|
||||
#ELSE
|
||||
#ENDIF
|
||||
|
||||
; Z80-BASED SYSTEMS
|
||||
|
||||
|
||||
#IF (PLATFORM == PLT_MBC)
|
||||
#IF ((CPUFAM == CPU_Z80) & (INTMODE == 2))
|
||||
#IF (PLATFORM == PLT_MBC)
|
||||
|
||||
; MBC Z80
|
||||
;INT_CTC0A .EQU 0 ; ZILOG CTC 0, CHANNEL A
|
||||
;INT_CTC0B .EQU 1 ; ZILOG CTC 0, CHANNEL B
|
||||
;INT_CTC0C .EQU 2 ; ZILOG CTC 0, CHANNEL C
|
||||
;INT_CTC0D .EQU 3 ; ZILOG CTC 0, CHANNEL D
|
||||
INT_UART0 .EQU 4 ; MBC UART 0
|
||||
INT_UART1 .EQU 5 ; MBC UART 1
|
||||
INT_UART0 .EQU 4 ; UART 0
|
||||
INT_UART1 .EQU 5 ; UART 1
|
||||
INT_SIO0 .EQU 8 ; ZILOG SIO 0, CHANNEL A & B
|
||||
INT_SIO1 .EQU 9 ; ZILOG SIO 1, CHANNEL A & B
|
||||
INT_CTC0A .EQU 12 ; ZILOG CTC 0, CHANNEL A
|
||||
@@ -774,14 +774,15 @@ INT_CTC0D .EQU 15 ; ZILOG CTC 0, CHANNEL D
|
||||
;INT_PIO1A .EQU 11 ; ZILOG PIO 1, CHANNEL A
|
||||
;INT_PIO1B .EQU 12 ; ZILOG PIO 1, CHANNEL B
|
||||
|
||||
#ELSE
|
||||
#ELSE
|
||||
|
||||
; GENERIC Z80
|
||||
INT_CTC0A .EQU 0 ; ZILOG CTC 0, CHANNEL A
|
||||
INT_CTC0B .EQU 1 ; ZILOG CTC 0, CHANNEL B
|
||||
INT_CTC0C .EQU 2 ; ZILOG CTC 0, CHANNEL C
|
||||
INT_CTC0D .EQU 3 ; ZILOG CTC 0, CHANNEL D
|
||||
INT_UART0 .EQU 4 ; MBC UART 0
|
||||
INT_UART1 .EQU 5 ; MBC UART 1
|
||||
INT_UART0 .EQU 4 ; UART 0
|
||||
INT_UART1 .EQU 5 ; UART 1
|
||||
INT_SIO0 .EQU 7 ; ZILOG SIO 0, CHANNEL A & B
|
||||
INT_SIO1 .EQU 8 ; ZILOG SIO 1, CHANNEL A & B
|
||||
INT_PIO0A .EQU 9 ; ZILOG PIO 0, CHANNEL A
|
||||
@@ -790,13 +791,11 @@ INT_PIO1A .EQU 11 ; ZILOG PIO 1, CHANNEL A
|
||||
INT_PIO1B .EQU 12 ; ZILOG PIO 1, CHANNEL B
|
||||
|
||||
#ENDIF
|
||||
|
||||
#ENDIF
|
||||
#ENDIF
|
||||
|
||||
#DEFINE IVT(INTX) HB_IVT+(INTX * 4)+1
|
||||
#DEFINE VEC(INTX) INTX*2
|
||||
|
||||
#ENDIF
|
||||
;
|
||||
; SET DEFAULT CSIO SPEED (INTERNAL CLOCK, SLOW AS POSSIBLE)
|
||||
; DIV 1280, 14KHZ @ 18MHZ CLK
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
#DEFINE RMN 3
|
||||
#DEFINE RUP 0
|
||||
#DEFINE RTP 0
|
||||
#DEFINE BIOSVER "3.3.0-dev.28"
|
||||
#DEFINE BIOSVER "3.3.0-dev.29"
|
||||
#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.28"
|
||||
db "3.3.0-dev.29"
|
||||
endm
|
||||
|
||||
Reference in New Issue
Block a user