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 UART (interrupt driven only in interrupt mode 3)
- 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
-----------

24
Source/HBIOS/hbios.asm

@ -2958,13 +2958,16 @@ SYS_RESCOLD:
; HOOK CALLED WHEN A USERLAND RESET IS INVOKED, TYPICALLY VIA A JUMP
; TO LOGICAL CPU ADDRESS $0000
;
; CREDIT TO PHILLIP STEVENS FOR SUGGESTING AND SIGNIFICANT CONTRIBUTIONS
; TO THE Z180 INVALID OPCODE TRAP ENHANCEMENT.
;
SYS_RESUSER:
;
#IF (CPUFAM == CPU_Z180)
;
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
DEC HL ; BACK UP TO OPCODE START
@ -2977,8 +2980,8 @@ SYS_RESUSER1:
OUT0 (Z180_ITC),A ; SAVE IT
;
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
;
LD B,8 ; SHOW 8 BYTES
@ -2995,20 +2998,9 @@ SYS_RESUSER2:
POP BC ; RECOVER BC
INC HL ; NEXT BYTE
DJNZ SYS_RESUSER2 ; LOOP TIL DONE
CALL NEWLINE ; FORMATTING
JP NEWLINE ; FORMATTING & EXIT
;
#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
;

2
Source/ver.inc

@ -2,4 +2,4 @@
#DEFINE RMN 1
#DEFINE RUP 1
#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
rtp equ 0
biosver macro
db "3.1.1-pre.52"
db "3.1.1-pre.53"
endm

Loading…
Cancel
Save