Browse Source

Z180 Invalid Opcode Tweaks

Thanks and credit to Phillip Stevens for his significant contributions to this enhancement.
pull/199/head
Wayne Warthen 5 years ago
parent
commit
953dd70052
  1. 2
      Doc/ChangeLog.txt
  2. 24
      Source/HBIOS/hbios.asm
  3. 2
      Source/ver.inc
  4. 2
      Source/ver.lib

2
Doc/ChangeLog.txt

@ -17,6 +17,8 @@ Version 3.1.1
- WBW: Support for Z280 w/ native memory and interrupt mode 3 - WBW: Support for Z280 w/ native memory and interrupt mode 3
- WBW: Support for Z280 UART (interrupt driven only in interrupt mode 3) - WBW: Support for Z280 UART (interrupt driven only in interrupt mode 3)
- WBW: Add support Z80-512K (watchdog and LED) - WBW: Add support Z80-512K (watchdog and LED)
- WBW: Add support for ZZ80MB address map
- PLS: Add support for Z180 invalid opcode trap
Version 3.1 Version 3.1
----------- -----------

24
Source/HBIOS/hbios.asm

@ -2958,13 +2958,16 @@ SYS_RESCOLD:
; HOOK CALLED WHEN A USERLAND RESET IS INVOKED, TYPICALLY VIA A JUMP ; HOOK CALLED WHEN A USERLAND RESET IS INVOKED, TYPICALLY VIA A JUMP
; TO LOGICAL CPU ADDRESS $0000 ; TO LOGICAL CPU ADDRESS $0000
; ;
; CREDIT TO PHILLIP STEVENS FOR SUGGESTING AND SIGNIFICANT CONTRIBUTIONS
; TO THE Z180 INVALID OPCODE TRAP ENHANCEMENT.
;
SYS_RESUSER: SYS_RESUSER:
; ;
#IF (CPUFAM == CPU_Z180) #IF (CPUFAM == CPU_Z180)
; ;
IN0 A,(Z180_ITC) ; GET ITC REGISTER IN0 A,(Z180_ITC) ; GET ITC REGISTER
BIT 7,A ; TRAP BIT SET?
JR Z,SYS_RESUSER9 ; IF NOT, SKIP AHEAD
XOR $80 ; PRECLEAR TRAP BIT
RET M ; IF TRAP BIT NOT SET, DONE
; ;
; HANDLE INVALID OPCODE ; HANDLE INVALID OPCODE
DEC HL ; BACK UP TO OPCODE START DEC HL ; BACK UP TO OPCODE START
@ -2977,8 +2980,8 @@ SYS_RESUSER1:
OUT0 (Z180_ITC),A ; SAVE IT OUT0 (Z180_ITC),A ; SAVE IT
; ;
CALL PRTSTRD ; PRINT ERROR TAG CALL PRTSTRD ; PRINT ERROR TAG
.TEXT "\r\n\r\n+++ BAD OPCODE @$"
CALL PRTHEXWORDHL ; PRINT ADDRESS
.TEXT "\r\n\r\n+++ INVALID Z180 OPCODE @$"
CALL PRTHEXWORDHL ; PRINT OPCODE ADDRESS
PRTS("H:$") ; FORMATTING PRTS("H:$") ; FORMATTING
; ;
LD B,8 ; SHOW 8 BYTES LD B,8 ; SHOW 8 BYTES
@ -2995,20 +2998,9 @@ SYS_RESUSER2:
POP BC ; RECOVER BC POP BC ; RECOVER BC
INC HL ; NEXT BYTE INC HL ; NEXT BYTE
DJNZ SYS_RESUSER2 ; LOOP TIL DONE DJNZ SYS_RESUSER2 ; LOOP TIL DONE
CALL NEWLINE ; FORMATTING
JP NEWLINE ; FORMATTING & EXIT
; ;
#ENDIF #ENDIF
;
SYS_RESUSER9:
;; NOTIFY USER
;CALL PRTSTRD
;.TEXT "\r\n*** USER RESET ***\r\n$"
;
;; EXIT VIA USER RESET VECTOR (IF SET)
;LD HL,(HB_RESVEC) ; GET USER RESET VECTOR
;LD A,H ; CHECK IF IT
;OR L ; ... HAS BEEN SET
;JP Z,SYS_RESWARM ; IF NOT, JUST WARM START
; ;
RET ; ELSE RETURN WITH USER RESET VECTOR IN HL RET ; ELSE RETURN WITH USER RESET VECTOR IN HL
; ;

2
Source/ver.inc

@ -2,4 +2,4 @@
#DEFINE RMN 1 #DEFINE RMN 1
#DEFINE RUP 1 #DEFINE RUP 1
#DEFINE RTP 0 #DEFINE RTP 0
#DEFINE BIOSVER "3.1.1-pre.52"
#DEFINE BIOSVER "3.1.1-pre.53"

2
Source/ver.lib

@ -3,5 +3,5 @@ rmn equ 1
rup equ 1 rup equ 1
rtp equ 0 rtp equ 0
biosver macro biosver macro
db "3.1.1-pre.52"
db "3.1.1-pre.53"
endm endm

Loading…
Cancel
Save