SC-126/ROMWBW - BAD INT Errors using SIO/2 + CTC Card

498 views
Skip to first unread message

positron (Jose L. Collado)

unread,
Feb 11, 2021, 4:47:08 PM2/11/21
to RC2014-Z80
Hi all, a while back I finished building Jim McGinnis great JM002 mezzanine card that implements, among other things, a SIO/2 interface with associated CTC for baud-rate selection through the MODE utility in ROMWBW.

After a quick check everything was working fine, SIO & CTC detected, baud-rate changed ok with the mode command, and got chars in & out from both interfaces.

Now I'm testing it more thoroughly under CP/M 3 and ZCPR3 and noticed that when I switch the Console to use either of the SIO ports (COM2 or COM3), after correctly receiving the output of the DEVICE command, I do some typing and I get (on the boot console, COM0) many "BAD INT" errors and then the  system hangs.

I would really appreciate if someone with a similar configuration could check the attached files for ROMWBW configuration parameter errors or any clue for further debugging.

I'm dividing the Z180 CLK by 2 and adding additional IO Wait States, since I use 6 MHz SIO & CTC chips (these should easily handle the 50% overclocking I guess...). Tested under ROMWBW dev brach 3.11 pre24 & also pre40, Interrupt Mode 2.

Cheers,
Jose Luis.

*******************************************************************************************
RomWBW HBIOS v3.1.1-pre.24, 2021-02-03

SC126 Z8S180-N @ 9.216MHz IO=0xC0
0 MEM W/S, 3 I/O W/S, INT MODE 2
512KB ROM, 512KB RAM

CTC: IO=0x88
AY: IO=0x68
SN76489: LEFT IO=0xFC, RIGHT IO=0xF8
ASCI0: IO=0xC0 ASCI W/BRG MODE=57600,8,N,1
ASCI1: IO=0xC1 ASCI W/BRG MODE=57600,8,N,1
SIO0: IO=0x81 SIO MODE=9600,8,N,1
SIO1: IO=0x83 SIO MODE=9600,8,N,1
DSRTC: MODE=STD IO=0x0C Wed 2021-02-03 20:57:54 CHARGE=OFF
MD: UNITS=2 ROMDISK=384KB RAMDISK=256KB
FD: IO=0x50 UNITS=1
IDE: IO=0x10 MODE=RC
IDE0: 8-BIT LBA BLOCKS=0x000F45F0 SIZE=488MB
IDE1: NO MEDIA
PPIDE: IO=0x20 PPI NOT PRESENT
SD: MODE=SC OPR=0x0C CNTR=0xCA TRDR=0xCB DEVICES=1
SD0: SDHC NAME=      BLOCKS=0x00EEB800 SIZE=7639MB

Unit        Device      Type              Capacity/Mode
----------  ----------  ----------------  --------------------
Char 0      ASCI0:      RS-232            57600,8,N,1
Char 1      ASCI1:      RS-232            57600,8,N,1
Char 2      SIO0:       RS-232            9600,8,N,1
Char 3      SIO1:       RS-232            9600,8,N,1
Disk 0      MD1:        RAM Disk          256KB,LBA
Disk 1      MD0:        ROM Disk          384KB,LBA
Disk 2      FD0:        Floppy Disk       3.5",DS/HD,CHS
Disk 3      IDE0:       CompactFlash      488MB,LBA
Disk 4      IDE1:       Hard Disk         --
Disk 5      SD0:        SD Card           7639MB,LBA
Sound 0     SND0:       AY-3-8910         3+1 CHANNELS
Sound 1     SND1:       SN76489           3+1 CHANNELS


SC126 Boot Loader

Boot [H=Help]: 3.2

Booting Disk Unit 3, Slice 2, Sector 0x00008100...

Volume "Unlabeled" [0x0100-0x1000, entry @ 0x0100]...


CP/M V3.0 Loader
Copyright (C) 1998, Caldera Inc.

 BNKBIOS3 SPR  F700  0700
 BNKBIOS3 SPR  4500  3B00
 RESBDOS3 SPR  F100  0600
 BNKBDOS3 SPR  1700  2E00

 60K TPA

ZPM3 [BANKED] for HBIOS v3.1.1-pre.20

    ZCPR compatible system for CP/M+ by Simeon Cran


Loading NAMES.NDR
Loading ANSI.Z3T
ZPM3 Auto Command Prompting is now enabled. Toggle with ^Q.
VERROR Vers 1.7 -- Error Handler Installed

SETPATH, Version 1.1 (Type 3 at 0100H)

  Symbolic     DU        DIR

     $$:       A0:       SYS:
     A15:      A15:      ROOT:
     A0:       A0:       SYS:


   K:=SD0:2
   J:=SD0:3
   L:=IDE0:4
   M:=IDE0:5
   N:=IDE0:6
   O:=IDE0:7


20:59 A0:SYS>device con:=com2


+++ BAD INT 0AH: @FF7A[0A24:0000:1600:0528:FEF6:F69C:16DF]

+++ BAD INT 0AH: @FF7A[0A24:006C:F06C:0528:FEF6:F69C:16DF]

+++ BAD INT 0AH: @FF7A[0A24:006C:F06C:0528:FEF6:F69C:16DF]

+++ BAD INT 0AH: @FF7A[0A24:006C:F06C:0528:FEF6:F69C:16DF]

+++ BAD INT 0AH: @FF7A[0A24:006C:F06C:0528:FEF6:F69C:16DF]
MD: UNITS=2 ROMDISK=384KB RAMDISK=256KB
MD: UNITS=2 ROMDISK=384KB RAMDISK=256KB
MD: UNITS=2 ROMDISK=384KB RAMDISK=256KB
MD: UNITS=2 ROMDISK=384KB RAMDISK=256KB
MD: UNITS=2 ROMDISK=384KB RAMDISK=256KB
>>> PANIC: @0CE6[1062:1761:1705:0869:04E8:F69C:F530]

*** System Halted ***



============================================================
AT THE OTHER TERMINAL ATTACHED TO COM2: SET AT 9600 I GET...
============================================================

Physical Devices:
I=Input,O=Output,S=Serial,X=Xon-Xoff
COM0   NONE  IOS    COM1   NONE  IOS    COM2   NONE  IOS
COM3   NONE  IOS

Current Assignments:
CONIN:  = COM2
CONOUT: = COM2
AUXIN:  = COM1
AUXOUT: = COM1
LST:    = Null Device


20:59 A0:SYS>games

=============================================================
... AND THE SYSTEM HANGS WITH "BAD INT" & "PANIC" (SEE ABOVE)
    AFTER TYPING...
=============================================================

positron (Jose L. Collado)

unread,
Feb 11, 2021, 4:52:38 PM2/11/21
to RC2014-Z80
Additional info... below is my HBIOS config file contents.

Cheers, JL.

;==================================================================================================
;   SC126 STANDARD CONFIGURATION
;==================================================================================================
;
; 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.
;
; THE SETTINGS BELOW ARE THE SETTINGS THAT ARE MOST COMMONLY MODIFIED FOR THIS PLATFORM.
; MANY OF THEM ARE EQUAL TO THE SETTINGS IN THE INCLUDED FILE, SO THEY DON'T REALLY DO
; ANYTHING AS IS.  THEY ARE LISTED HERE TO MAKE IT EASY FOR YOU TO ADJUST THE MOST COMMON
; SETTINGS.
;
; 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 PLATFORM_NAME "SC126"
;
#DEFINE BOOT_DEFAULT "3.2" ; DEFAULT BOOT LOADER CMD ON <CR> OR AUTO BOOT
;
#include "cfg_scz180.asm"
;
; *** JLC SC-126 SYSTEM WITH SOUND CARDS, TMS9918A AND JM002+JM003 *******************************
;
CPUOSC .SET 18432000 ; CPU OSC FREQ IN MHZ
;
Z180_BASE .SET $C0 ; Z180: I/O BASE ADDRESS FOR INTERNAL REGISTERS
Z180_CLKDIV .SET 0 ; Z180: CHK DIV: 0=OSC/2, 1=OSC, 2=OSC*2 ### OSC/2 ###
Z180_MEMWAIT .SET 0 ; Z180: MEMORY WAIT STATES (0-3)
Z180_IOWAIT .SET 3 ; Z180: I/O WAIT STATES TO ADD ABOVE 1 W/S BUILT-IN (0-3) ### 3 I/O W/S  ###
INTMODE .SET 2 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2
;
HBIOS_MUTEX .SET FALSE ; ENABLE REENTRANT CALLS TO HBIOS (ADDS OVERHEAD)
;
BOOT_TIMEOUT .SET 4 ; AUTO BOOT TIMEOUT IN SECONDS, -1 TO DISABLE, 0 FOR IMMEDIATE
;
UARTENABLE .SET FALSE ; UART: ENABLE 8250/16550-LIKE SERIAL DRIVER (UART.ASM)
ASCIENABLE .SET TRUE ; ASCI: ENABLE Z180 ASCI SERIAL DRIVER (ASCI.ASM) ### ENABLED ###
ACIAENABLE .SET FALSE ; ACIA: ENABLE MOTOROLA 6850 ACIA DRIVER (ACIA.ASM)
;
ASCISWAP .SET FALSE ; ASCI: SWAP CHANNELS ### SWAPPED CONSOLE ###
ASCI1CFG .SET SER_57600_8N1 ; ASCI 1: SERIAL LINE CONFIG ### SWAPPED CONSOLE ###
ASCI0CFG .SET SER_57600_8N1 ; ASCI 0: SERIAL LINE CONFIG 
;
IDEENABLE .SET TRUE ; IDE: ENABLE IDE DISK DRIVER (IDE.ASM) 
;
PRPENABLE .SET FALSE ; PRP: ENABLE ECB PROPELLER IO BOARD DRIVER (PRP.ASM)
;
SDENABLE .SET TRUE ; SD: ENABLE SD CARD DISK DRIVER (SD.ASM)
SDCNT .SET 1 ; SD: NUMBER OF SD CARD DEVICES (1-2), FOR DSD & SC ONLY
;
SN76489ENABLE .SET TRUE ; SN76489 SOUND DRIVER ### ENABLED ###
SN7CLK .SET CPUOSC / 2 ; DEFAULT TO CPUOSC / 4
;
AY38910ENABLE .SET TRUE ; AY: AY-3-8910 / YM2149 SOUND DRIVER ### ENABLED ###
AY_CLK .SET 3579545 ; DEFAULT TO CPUOSC / 4 ### 3579545 MHz OSC ###
AYMODE .SET AYMODE_RCZ180 ; AY: DRIVER MODE: AYMODE_[SCG/N8/RCZ80/RCZ180]
SPKENABLE .SET FALSE ; SPK: ENABLE RTC LATCH IOBIT SOUND DRIVER (SPK.ASM)
;
CRTACT .SET FALSE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP
TMSENABLE .SET FALSE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM)
;
INTRTCENABLE .SET FALSE ; ENABLE PERIODIC INTERRUPT CLOCK DRIVER (INTRTC.ASM)
;
; JM002 SIO CONFIG
SIOENABLE .SET TRUE ; SIO: ENABLE ZILOG SIO SERIAL DRIVER (SIO.ASM) ### ENABLED ###
SIODEBUG .SET TRUE ; SIO: ENABLE DEBUG OUTPUT
SIOCNT          .SET    1
SIO0BASE .SET $80 ; SIO 0: REGISTERS BASE ADR
SIO0MODE        .SET    SIOMODE_STD     ; SIO 0: CHIP TYPE: SIOMODE_[STD|RC|SMB|ZP]
SIO0ACLK        .SET    1843200         ; SIO 0A: OSC FREQ IN HZ, ZP=2457600/4915200, RC/SMB=7372800
SIO0ACTCC       .SET    0               ; SIO 0A: CTC CHANNEL 0=A, 1=B, 2=C, 3=D, -1 FOR NONE
SIO0ACFG        .SET    SER_9600_8N1    ; SIO 0A: SERIAL LINE CONFIG
SIO0BCLK        .SET    1843200         ; SIO 0B: OSC FREQ IN HZ, ZP=2457600/4915200, RC/SMB=7372800
SIO0BCTCC       .SET    1               ; SIO 0B: CTC CHANNEL 0=A, 1=B, 2=C, 3=D, -1 FOR NONE
SIO0BCFG        .SET    SER_9600_8N1    ; SIO 0B: SERIAL LINE CONFIG
;
; JM002 CTC CONFIG
CTCENABLE .SET TRUE ; ENABLE ZILOG CTC SUPPORT ### ENABLED ###
CTCDEBUG        .SET    TRUE            ; ENABLE CTC DRIVER DEBUG OUTPUT
CTCBASE .SET $88 ; CTC BASE I/O ADDRESS
CTCTIMER .SET FALSE ; ENABLE CTC PERIODIC TIMER ### DISABLED, USING RTC AS PERIODIC TIMER ###
CTCMODE         .EQU    CTCMODE_TIM16   ; CTC MODE: CTCMODE_[NONE|CTR|TIM16|TIM256]
CTCPRE          .EQU    256             ; PRESCALE CONSTANT (1-256)
CTCPRECH        .EQU    2               ; PRESCALE CHANNEL (0-3)
CTCTIMCH        .EQU    3               ; TIMER CHANNEL (0-3)
CTCOSC          .EQU    CPUOSC/2          ; CTC CLOCK FREQUENCY
;
; JM003 IDE CONFIG
PPIDEENABLE .SET TRUE ; PPIDE: ENABLE PARALLEL PORT IDE DISK DRIVER (PPIDE.ASM) ### ENABLED ###
;
; JM003 FDC CONFIG
FDENABLE .SET TRUE ; FD: ENABLE FLOPPY DISK DRIVER (FD.ASM) ### ENABLED ###
FDCNT           .SET    1               ; FD: NUMBER OF FLOPPY DRIVES ON THE INTERFACE (1-2)
FDMODE .SET FDMODE_RCWDC ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|ZETA2|DIDE|N8|DIO3|RCSMC|RCWDC|DYNO|EPWDC]
;
===========================================================================================================================

Wayne Warthen

unread,
Feb 12, 2021, 12:31:40 PM2/12/21
to RC2014-Z80
Hi Jose,

At first glance, you config files look good.  Very impressive system with a lot going on.

The first thing that jumps out at me is that the bad interrupt is coming from vector 10 (0x0A).  The SIO card should be using vectors 13 and 14.  Vector 10 is reserved for a Zilog PIO chip.  Even if you had such a chip (I don't see that you do), there is no config for it, so it would not be programmed to use vector 10.  You said the bad interrupts begin after you send a character via the first SIO port.  This would imply that the SIO is setting vector 10 when it interrupts, but it should not be.  What is very puzzling is that you say the issue only occurs with CP/M 3 and ZPM3.

I don't have the JMXXX cards, but I can add an SIO+CTC module to my SC126 and test that.  I will do so shortly and let you know if I find any issues.

Thanks,

Wayne

Wayne Warthen

unread,
Feb 12, 2021, 2:26:45 PM2/12/21
to RC2014-Z80
I was able to add a CTC and SIO to my SC126.  Actually, I used a module with a KIO which is a combined CTC/SIO chip.  Everything seemed to work for me.  From ZPM3, I moved the console among all 4 serial ports and never encountered any bad interrupts or unstable behavior.

I reviewed your config settings more thoroughly and I don't see anything wrong.

Looking at the failure itself, I see that the last command entered was "games".  Do the issues always coincide with that command?

Thanks,

Wayne

Jose Luis Collado

unread,
Feb 12, 2021, 3:04:08 PM2/12/21
to rc201...@googlegroups.com
Many thanks Wayne for looking at this strange error. I didn't check it under CP/M 2.2 because I don't use it, but I will test it to compare. Are COM2 & 3 accessible/assignable through the STAT command in 2.2 ? Can´t remember...

What I was trying to type at the moment when the system hanged was not a command, but a named dir "games:" (not that I use it too frequently... no no...). Named dirs are one of the most useful features of ZPM3, love it. But the failure is random, never at receiving (tried assigning the LPT: device and using Ctl-P to mirror the console output and worked perfectly every time), always at transmitting. Sometimes I can type a lot before the crash and sometimes only a few chars...

I ordered another set of SIO & CTC chips (fortunately I can still get them locally) just in case I have a marginal one that doesn't tolerate the slight overclocking.
Attached you will find the JM002 board schematic that I am using.

Cheers,
José Luis.


--
You received this message because you are subscribed to a topic in the Google Groups "RC2014-Z80" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/rc2014-z80/DG28L1PcpT8/unsubscribe.
To unsubscribe from this group and all its topics, send an email to rc2014-z80+...@googlegroups.com.
To view this discussion on the web, visit https://groups.google.com/d/msgid/rc2014-z80/2e532777-aa98-48a7-b73c-3f523909d672n%40googlegroups.com.
JM002 Expansion Serial IO Mezzanine Board [v2.0] for SC126 V1.0 (CTC Part).pdf
JM002 Expansion Serial IO Mezzanine Board [v2.0] for SC126 V1.0 (Serial & SPI Part).pdf

Jim McGinnis

unread,
Feb 12, 2021, 4:25:47 PM2/12/21
to RC2014-Z80
HI. I just read the mail and saw your story here. I will be looking at the same configuration here and see what I can see...

Jim

Jim McGinnis

unread,
Feb 12, 2021, 4:49:15 PM2/12/21
to RC2014-Z80
Hi JL,
I just set up and connected a terminal to COM3 (easiest to put together) and running CPM3 was able to transfer back and forth between the default port and COM2 as console. No errant interrupts.

I need to dig up the cable for the COM3 scenario - it is normally used for IO to my plotter and printer.
I have extensive time on the COM3 port with the printers and plotters with bi-directional IO - but not as a console.

If I can get the cable in place, I will test that port as console as well.
I can gather my configuration for the RomWBW build - it is based on 3.1.1.pre21.

Good hunting...

Jim

Jim McGinnis

unread,
Feb 12, 2021, 4:56:12 PM2/12/21
to RC2014-Z80
More updates:
I just brought up a ZPM3 disk and it seems to operate identically with the CPM3 results. Note that I am running those ports at 19200 baud by default. That is all the printer and plotter can handle via their serial switch configurations.

Still looking for the cable assembly to use the DE9 connector on the JM002...

Jim

Jim McGinnis

unread,
Feb 12, 2021, 4:59:34 PM2/12/21
to RC2014-Z80
Sorry for the stream of replies...
For the ZPM3 scenario, I pushed the COM3: interface speed to 115200 using the mode command. Still no anomalies.
Still looking for the cables...

Jim

Wayne Warthen

unread,
Feb 12, 2021, 5:11:22 PM2/12/21
to RC2014-Z80
On Friday, February 12, 2021 at 12:04:08 PM UTC-8 positron (Jose L. Collado) wrote:
Many thanks Wayne for looking at this strange error. I didn't check it under CP/M 2.2 because I don't use it, but I will test it to compare. Are COM2 & 3 accessible/assignable through the STAT command in 2.2 ? Can´t remember...

Yes, please test under CP/M 2.2 and/or ZSDOS.  I would expect the same results as with CP/M 3 and ZPM3.  No, it is not possible to assign COM2/3 to the console under CP/M 2.2 or ZSDOS.  However,  at the boot prompt, you can use the command "I 2" or "I 3" to move the console over to COM2/3, then boot into CP/M 2.2 or ZSDOS and the console will remain on COM2/3.
 
What I was trying to type at the moment when the system hanged was not a command, but a named dir "games:" (not that I use it too frequently... no no...). Named dirs are one of the most useful features of ZPM3, love it. But the failure is random, never at receiving (tried assigning the LPT: device and using Ctl-P to mirror the console output and worked perfectly every time), always at transmitting. Sometimes I can type a lot before the crash and sometimes only a few chars...

Got it.  Very odd symptoms.  It sounds like the SIO interrupt is firing as expected for an incoming character, but somehow the SIO is not properly asserting the correct interrupt vector on the bus.  However, it is only doing it sometimes.  I have to say, this does have the earmarks of bus noise.

I ordered another set of SIO & CTC chips (fortunately I can still get them locally) just in case I have a marginal one that doesn't tolerate the slight overclocking.
Attached you will find the JM002 board schematic that I am using.

Sounds good -- worth a try.  I was using a KIO, but i was able to run at full 18.432 MHz with no trouble.  I think these chips can generally handle much faster speeds than advertised.

Wayne Warthen

unread,
Feb 12, 2021, 5:15:14 PM2/12/21
to RC2014-Z80
On Friday, February 12, 2021 at 1:59:34 PM UTC-8 jim.mcg...@gmail.com wrote:
Sorry for the stream of replies...
For the ZPM3 scenario, I pushed the COM3: interface speed to 115200 using the mode command. Still no anomalies.
Still looking for the cables...

These results would add weight to the idea that there is some kind of bus noise issue going on.  It is VERY unlikely that there would be a difference between COM3 and COM2 behavior since they are on the same chip.

In general, the RC2014 bus uses no bus buffers, so noise can be a problem -- especially when there are more devices loading the bus.  It is very hard to track down because use of slightly different logic families (like AHCT vs. HCT) can make different systems behave differently.

-Wayne 

Jim McGinnis

unread,
Feb 12, 2021, 5:29:28 PM2/12/21
to RC2014-Z80
The noise hypothesis seems plausible. I have a very simple system with the SC126, JM002, and JM003 cards.

We could do an experiment and load up the RC80 bus with various cards until we prove the same instabilities...
JL, you could do the same experiment by reducing the number of cards until you see some stability again.

Note also  that the JM002 is laid out across a "large board space" and trace impedance was not a primary concern at design time. Not that I could drive a design while also considering noise immunity, ringing, and all that negative stuff. ;-)

Best regards!
Jim

Alan Cox

unread,
Feb 12, 2021, 5:31:03 PM2/12/21
to rc201...@googlegroups.com

Got it.  Very odd symptoms.  It sounds like the SIO interrupt is firing as expected for an incoming character, but somehow the SIO is not properly asserting the correct interrupt vector on the bus.  However, it is only doing it sometimes.  I have to say, this does have the earmarks of bus noise.

Do you have all the devices correctly linked in a chain if using IM2. If you don't then two cards will interrupt at once and you'll get a spurious vector eventually as they fight each other.

Alan

Jim McGinnis

unread,
Feb 12, 2021, 5:45:30 PM2/12/21
to RC2014-Z80
Alan,
You make a good point. The JM002 has a chain of two devices and the facilities to be chained ahead or behind. So, knowing whether other cards in the inventory are int sources might be critical.

Jim

positron (Jose L. Collado)

unread,
Feb 12, 2021, 10:45:32 PM2/12/21
to RC2014-Z80
Well guys, your support is amazing ! Jim, glad to hear from you. My system is loaded up with 7 cards right now, so the bus noise theory is highly plaussible. I’ll leave only the ones needed for testing and get back to you with the results also using 2.2 and ZSDOS.

The only card that uses interrupts in this config is JM002, and it’s correctly chained between CTC & SIO in IM2.
IEI & IEO are pulled up with 10K resistors, I could also check with the scope if this is ok to prevent spurious pulses on these lines. 

Cheers, JL.

positron (Jose L. Collado)

unread,
Feb 14, 2021, 5:19:44 PM2/14/21
to RC2014-Z80
I removed the SN76489 board that I was experimenting with, modded to generate a div/4 CLK signal and inject it to the bus at  USER3 (pin 39). This pin happens to be adjacent to the IEO signal... hmmm... a good candidate for generating interference into the interrupt chain.

The BAD INT errors seem to have dissapeared now, the system is stable tested with COM2 & 3 at 9600 bps. I’ll also try pulling up IEI & IEO signals harder with 4.7K resistors (or soldering another 10K ones in // ).

Thanks for all your valuable help. Take care and keep your bus as clean as possible ;)

Cheers, JL.

positron (Jose L. Collado)

unread,
Feb 14, 2021, 9:12:50 PM2/14/21
to RC2014-Z80
The BAD INT monster srtikes again... my solution was short lived... Failed with all boards removed except JM002, also tested with CP/M 2.2 booted from ROM (first using the "i" command for boot console redirection as suggested by Wayne).

Now I get BAD INT 00h...
BAD INT Error Again.JPG

Cheers, JL.

Jim McGinnis

unread,
Feb 15, 2021, 2:53:22 PM2/15/21
to RC2014-Z80
JL, I was hoping that you were on to something earlier. And tuning the pull values - I would have been happy to amend the design to reflect the better values.

Your latest report could suggest a mechanical mating issue - since removing boards disturbs the stack-up as well as the expansion section. I was going to put a scope on the relevant lines when able to see if we are dancing close to a cliff.

Keep us posted on your progress and whether the patient is improving.

Best regards,

Jim

Jose Luis Collado

unread,
Feb 15, 2021, 6:14:46 PM2/15/21
to rc201...@googlegroups.com
Hi Jim, thanks for looking into this, I know you have my exact configuration but I didn’t want to bother you as I initially suspected it wasn’t a hw problem. No need to rush; Family issues are preventing me from progressing with the troubleshooting and reporting back quicker. Hopefully tonight I’ll have a session to tame the beast...

I wasn’t using the SIO ports till I decided to permanently leave my PiDP-11 connected to COM1 as a Linux CKermit host, and wanted to play with the wifi modem tha has a female DE-9 perfectly matching your JM002 COM2 port (taking advantage of pin 9 power injection also!).

Cheers, JL.

--
You received this message because you are subscribed to a topic in the Google Groups "RC2014-Z80" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/rc2014-z80/DG28L1PcpT8/unsubscribe.
To unsubscribe from this group and all its topics, send an email to rc2014-z80+...@googlegroups.com.
--

Saludos,
José Luis.

Wayne Warthen

unread,
Feb 16, 2021, 12:41:17 AM2/16/21
to RC2014-Z80
Hi Jose,

Sorry the solution did not hold up.  Can you clarify if the new BAD INT is occurring upon keystroke like the previous error scenario?  A completely spurious interrupt is somewhat different from an invalid interrupt vector being placed on the bus.

-Wayne

positron (Jose L. Collado)

unread,
Feb 16, 2021, 9:25:11 PM2/16/21
to RC2014-Z80
Hi Wayne, the bad int error and/or hangup occurs only when I hit a key. If I don’t touch the terminal keyboard, the system works ok, receiving characters. I can confirm this because I see the time stamp at the ZPM3 prompt updates correctly (I test changing the console to the terminal).

Also if I only output text to the terminal (e.g. by redirecting the LST: device and using Ctl-P) it works ok and never hangs. The problem is only when the SIO receives. The system is completely stable using all the other cards and functionality.

Cheers, JL.

Wayne Warthen

unread,
Feb 17, 2021, 12:59:10 AM2/17/21
to RC2014-Z80
On Tuesday, February 16, 2021 at 6:25:11 PM UTC-8 positron (Jose L. Collado) wrote:
Hi Wayne, the bad int error and/or hangup occurs only when I hit a key. If I don’t touch the terminal keyboard, the system works ok, receiving characters. I can confirm this because I see the time stamp at the ZPM3 prompt updates correctly (I test changing the console to the terminal).

Also if I only output text to the terminal (e.g. by redirecting the LST: device and using Ctl-P) it works ok and never hangs. The problem is only when the SIO receives. The system is completely stable using all the other cards and functionality.

Thanks for clarifying Jose.  This implies the problem has not changed.  Some issue with the interrupting device getting it's vector on the bus.  Continues to feel like bus noise to me.

-Wayne 

Jim McGinnis

unread,
Feb 17, 2021, 7:10:23 PM2/17/21
to RC2014-Z80
Greetings JL,
One other configuration question:
Which SIO chip are you using?  SIO/2 or SIO/0?
I need to be sure I am using the same chip and reconfigure the jumpers for the installed chip - then run more serial IO checks if the configurations were not "identical" for the testing results I previously reported..

I hope we can find something to pin this on and firmly.  Do you have a scope to do noise tests? Sure would be convenient to check PS noise and noise on the involved nets for the interrupt servicing.

Best regards,

Jim

positron (Jose L. Collado)

unread,
Feb 17, 2021, 10:11:21 PM2/17/21
to RC2014-Z80
Thanks Jim, using SIO/2. I hooked up a logic analyzer triggered to /INTACK (/M1 and /IOREQ both low) and seems that the SIO is sometimes placing   invalid values on the data bus where the lower interrupt vector should be. I’ll check with the scope and look at all the other interrupt related signals for anomalies. 

What puzzles me is that if it where a noise problem in the bus, it should’ve affected everything, and that’s not the case. I suspect that maybe I have a bad SIO chip, unfortunately the other one that I have on hand is a 4MHz version, but a new one is on it’s way.

Cheers, JL

Message has been deleted

positron (Jose L. Collado)

unread,
Feb 22, 2021, 6:32:18 PM2/22/21
to RC2014-Z80
Well folks, the BAD INT monster has been taken down ! I was fighting with random interrupts caused by a floating IEI connection (an unrouted track in the JM002 V1.1 board from the pull/up resitor to its corresponding jumper, JP8). Actually both pull-ups on J8 & J9 are unconnected from the jumper side.

Jim, please don't feel bad, it was my fault because you warned me that this board version could have some routing errors... 

So if anyone has this version of the board, here's the easy fix in the picture attached where I mark the missing links between pins. Now I can have my SC-126 accesed via WiFi !

Cheers, JL.
JM002V1.1_Fix1.jpg
JM002V1.1_Fix2.jpg

Wayne Warthen

unread,
Feb 22, 2021, 6:48:43 PM2/22/21
to RC2014-Z80
On Monday, February 22, 2021 at 3:32:18 PM UTC-8 positron (Jose L. Collado) wrote:
Well folks, the BAD INT monster has been taken down ! I was fighting with random interrupts caused by a floating IEI connection (an unrouted track in the JM002 V1.1 board from the pull/up resitor to its corresponding jumper, JP8). Actually both pull-ups on J8 & J9 are unconnected from the jumper side.

Nice work tracking that down Jose! 

Jim McGinnis

unread,
Feb 22, 2021, 9:08:51 PM2/22/21
to rc201...@googlegroups.com
Well, I had hoped that rev wasn’t seriously defective. But you found a big gap.  I will be sure the derivative boards, and there are two, at least, are better behaved.  
Thanks for all your perseverance!
Many thanks to finding the resolution.  

Cheers
Jim

Sent from my iPhone

On Feb 22, 2021, at 6:48 PM, Wayne Warthen <wwar...@gmail.com> wrote:


On Monday, February 22, 2021 at 3:32:18 PM UTC-8 positron (Jose L. Collado) wrote:
Well folks, the BAD INT monster has been taken down ! I was fighting with random interrupts caused by a floating IEI connection (an unrouted track in the JM002 V1.1 board from the pull/up resitor to its corresponding jumper, JP8). Actually both pull-ups on J8 & J9 are unconnected from the jumper side.

Nice work tracking that down Jose! 

--
You received this message because you are subscribed to a topic in the Google Groups "RC2014-Z80" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/rc2014-z80/DG28L1PcpT8/unsubscribe.
To unsubscribe from this group and all its topics, send an email to rc2014-z80+...@googlegroups.com.
Reply all
Reply to author
Forward
0 new messages