A.7 A.7.1 4.5 Z80CPU Z80 XA-80 ROM ICE(In-Circuit Emulator Z-Vision Pro A/D A/D CPU 4ms CPU 1 1 200s RS-232C PC A.7.2 list.a.7.1 A/D List.A.7.2 list.a.7.1 include List.A.7.1 bank10.asm ECG INCLUDE "DEFIO.ASM" I/O ( INCLUDE "DEFPARA.ASM" INCLUDE "DEFADDR.ASM" INCLUDE "HEADER.ASM" ORG PGMTOP INCLUDE "INITPIO.ASM" PIO INCLUDE "INITCTC.ASM" CTC INCLUDE "INITSIO.ASM" SIO LOOPALL: CALL INITMEM LD A,5EH LED (SE 11 OUT (PPI1B,A LD A,11H OUT (PPI1A,A : : LOOP0: IN A,(PIOBDAT AND 30H XOR 30H JP Z,LOOP0 AND 20H JP NZ,PGMEND LD A,22H LED (SE 22 OUT (PPI1A,A CTC CH1 LD HL,CTCTBLX LD B,CTCXEND- CTCTBLX LD C,CTCCH1 LD A,WAITING+1 EI LOOP1: OUT (PPI1B,A LED (?? 22 AND 0FFH JP NZ,LOOP1 OUT (PPI1B,A LED (?? 22 CTC CH1 LD HL,CTCTBL1 LD B,CTC1END -CTCTBL1 LD C,CTCCH1 A/D LD HL,PIOXTBL LD B,PIOXEND - PIOXTBL LD C,PIOBCMD EI LD A,33H LED (00 33 OUT (PPI1A,A A31
( C LD C,00H LD A,C OUT (PPI1C,A LD B,BANKNUM ( B LOOP2: LD A,C OUT (PPI1B,A LED (?? 33 CP B JP NZ,LOOP2 (B=C DI A/D LD HL,PIOBTBL LD B,PIOBEND - PIOBTBL LD C,PIOBCMD LD A,5EH LED (SE 44 OUT (PPI1B,A LD A,44H OUT (PPI1A,A RS- 232C LOOP3: IN A,(PIOBDAT AND 10H JP NZ,LOOP3 RS-232C LD A,5EH LED (?? 5E OUT (PPI1A,A LD HL,ARRYECG CALL SEND2PC LD A,5DH LED (?? 5D OUT (PPI1A,A LD HL,ARRYWAV CALL SEND2PC jump JP LOOPALL PGMEND: LD A,00H OUT (PPI1C,A LD A,0EEH LED (EE EE OUT (PPI1A,A OUT (PPI1B,A JR $ A/D PIOBINT: EXX reg. EX AF,AF' LD IX,XORGDET ECG CALL SAVEORG LD IX,XECGDIF ECG CALL DIFF2ND LD IX,XDIFAV1 CALL AVERAGE LD IX,XQRSREJ QRS CALL QRSREJ LD IX,XECGAVE CALL AVERAGE LD IX,XORGDET CALL SAVEDET LD IX,XDETDIF CALL DIFF2ND LD IX,XDIFAV2 CALL AVERAGE LD IX,XWAVDET CALL WAVEDET CALL WAVEDIAG LD IX,XWAVDIA CALL SAVEWAV LD IX,PTRAREA pointer CALL INCPTR EXX EX AF,AF' EI I (CH1 CTC1INT: DEC A EI I CTC0INT: CTC2INT: CTC3INT: PIOAINT: SIOATE: SIOARE: SIOARS: SIOAST: SIOBTE: SIOBRE: SIOBRS: SIOBST: I INCLUDE "SAVEORG.ASM" INCLUDE "QRSREJ3.ASM" QRS INCLUDE "SAVEDET.ASM" INCLUDE "DIFF2ND.ASM" INCLUDE "WAVEDET2.ASM" ECG INCLUDE "WAVDIAG2.ASM" ECG INCLUDE "SAVEWAV.ASM" ECG INCLUDE "INCPTR2.ASM" pointer INCLUDE "INITMEM.ASM" INCLUDE "SND2PC3.ASM" RS232C PC INCLUDE "AVERAGE.ASM" INCLUDE "INITTBL.ASM" I/O INCLUDE "INIMEMTB.ASM" RAM END A.7.3 List.A.7.2 lista.7.4 List.A.7.2 defio.asm I/O list.a.7.3 defpara.asm list.a.7.4 defaddr.asm (I/O ( PERIPHERAL ADDRESSES CTCCH0 EQU 10H CTCCH1 EQU 11H CTCCH2 EQU 12H CTCCH3 EQU 13H CLOCK GENERATOR FOR SIO SIOADAT EQU 18H SIOACMD EQU 19H SIOBDAT EQU 1AH SIOBCMD EQU 1BH PIOADAT EQU 1CH List.A.7.2 defio.asm PIOACMD EQU 1DH PIOBDAT EQU 1EH Interrupt Input from SW and A/D PIOBCMD EQU 1FH PPI0A EQU 30H I nput data from A/D Converter (LSB PPI0B EQU 31H Input data from A/D Converter(MSB PPI0C EQU 32H PPI0CMD EQU 33H PPI1A EQU 34H 7 SEGMENT LED OUTPUT (LSB PPI1B EQU 35H 7 SEGMENT LED OUTPUT (MSB PPI1C EQU 36H FOR MEMORY BANK SWITCHING PPI1CMD EQU 37H WDTMODE EQU 0F0H WDTCMD EQU 0F1H DCHAIN EQU 0F4H A32
List.A.7.3 defpara.asm ( PARAMETERS SAVLEN1 EQU 16384 ECG data [byte] SAVLEN2 EQU 2048 data [byte] BANKNUM EQU 3 AVENUM1 EQU 8 AVENUM2 EQU 256 [word] AVENUM3 EQU 2 2, data AVENUM4 EQU 4 2, data [word] DIFDIST EQU 16 2 data [byte] SENDNUM EQU 16384 [bytes] OFFSET EQU 45 offset PARAMETERS FOR QRS REJECTION REJQRS EQU -200 REJ2DTH EQU 200 REJDRY EQU 125 PARAMETERS FOR WAVE DETECTION PTH EQU 30 P RTH EQU 300 R ( QRSTH EQU -200 QRS TTH EQU 40 T INIDRY EQU 125 start (0.5s PDELAY EQU 25 P (0.1s TDELAY EQU 20 T (0.08s PARAMETERS FOR WAVE DIAGNOSIS AMPLITUDE (x0.00244[mv] PAMPH EQU 205 P (0.5mV PAMPL EQU 20 P (0.05mV TAMPH EQU 327 T (0.8mV TAMPL EQU 41 T (0.1mV RAMPH EQU 1230 R (3.0mV RAMPL EQU 205 R (0.5mV TIME or DULATION (x0.004[s] QRSTIMN EQU 20 QRS (0.08s PTIMEH EQU 50 P 25(0.1s PTIMEL EQU 3 P 15(0.06s PQTIMEH EQU 20 PQ (0.08s PQTIMEL EQU 3 PQ (0.012s QRSTIMH EQU 40 QRS (0.16s QRSTIML EQU 10 QRS (0.04s QTTIMEH EQU 125 QT (0.5s QTTIMEL EQU 37 QT (0.15s RRTIMEH EQU 375 RR 250(1.5s RRTIMEL EQU 100 RR 150(0.4s ERROR NUMBER IN WAVE DIAGNOSIS PERROR1 EQU 00100000B P PERROR2 EQU 01000000B P PERROR3 EQU 10000000B P QRSERR1 EQU 00100000B QRS QRSERR2 EQU 01000000B R- R QRSERR3 EQU 10000000B R TERROR1 EQU 00100000B Q-T TERROR2 EQU 01000000B T TERROR3 EQU 10000000B T WAITING EQU 15 List.A.7.4 defaddr.asm PTRDF2L EQU 402EH Trnd Rj.2 ( ( PTRAV2C EQU 4032H Trnd Rj.2 ( PTRWAV EQU 4002H PTRAV2L EQU 4036H Trnd Rj. 2 ( I/O SIOINTV EQU 0020H Interrupt Vector of SIO (0020H-002FH PIOAIV EQU 0040H Interrupt Vector of PIO PORT A XORGDET EQU 4040H ECG (SAVEORG,Trnd Rj.(SAVEDET PIOBIV EQU 0042H Interrupt Vector of PIO PORT B XECGDIF EQU 4050H ECG CTCINTV EQU 0050H Interrupt Vector of CTC (0050H-0058H XDIFAV1 EQU 4060H (15BYTE XQRSREJ EQU 4070H QRS (16BYTE PGMTOP EQU 0100H TOP OF THE MAIN ROUTINE XECGAVE EQU 4080H ECG (15BYTE XDETDIF EQU 4090H Trnd Rj. ECG pointer XDIFAV2 EQU 40A0H (15BYTE PTRAREA EQU 4000H data pointerxwavdet EQU 40B0H (8BYTE PTRNUM EQU 4000H pointer XWAVDIA EQU 40B8H (4BYTE PTRBANK EQU 4001H pointer MODEFLG EQU 40BFH (1BYTE PTRECG EQU 4002H ECG QRSPARA EQU 40C0H QRS (16BYTE PTRDF1R EQU 4002H ECG ( PPARA EQU 40D0H P (12BYTE PTRDF1C EQU 4006H ECG ( TPARA EQU 40E0H T (10BYTE PTRDF1L EQU 400AH ECG ( PTRREJS EQU 400EH QRS ECG PTRDETS EQU 4012H ECG ARRYDF1 EQU 4800H ECG PTRDF1S EQU 4016H ECG ( ARRYAV1 EQU 5000H ECG PTRAV1R EQU 4016H ECG ( ARRYREJ EQU 5800H QRS PTRAV1C EQU 401AH ECG ( ARRYTRD EQU 6000H PTRREJD EQU 401AH QRS ARRYDET EQU 6800H PTRTRDR EQU 401AH ( ( ARRYDF2 EQU 7000H 2 PTRAV1L EQU 401EH ECG ( ARRYAV2 EQU 7800H 2 PTRTRDC EQU 4022H ( ARRYECG EQU 8000H ECG PTRDETD EQU 4022H Trend Rej. ARRYWAV EQU 0C000H PTRDF2R EQU 4022H Trend Rej.2. ( PTRTRDL EQU 4026H ( ( PTRDF2C EQU 402AH Trnd Rj.2 ( STACK EQU 47F0H SETTINGS FOR STACK POINTER PTRAV2R EQU 402AH Trnd Rj. 2 ( A.7.4 List.A.7.5 A33
List.A.7.5 header.asm *************** PROGRAM HEADER *************** 1. STACK POINTER INITIALIZATION 2. INTURRUPT VECTOR INITIALIZATION ORG 0000H DI IM 2 LD SP, STACK LD A,00H LD I,A JP PGMTOP INTERRUPT VECTOR FOR SIO ORG SIOINTV DEFW SIOBTE CH B TRANSMITTER BUFFER EMPTY DEFW SIOBST CH B EXTERNAL STATUS INTERRUPT DEFW SIOBRE CH B RECERVING DATA ENABLE DEFW SIOBRS CH B SPECIAL RECEIVING STATUS DEFW SIOATE CH A TRANSMITTER BUFFER EMPTY DEFW SIOAST CH A EXTERNAL STATUS INTERRUPT DEFW SIOARE CH A RECERVING DATA ENABLE DEFW SIOARS CH A SPECIAL RECEIVING STATUS INTERRUPT VECTOR FOR PIO ORG PIOAIV DEFW PIOAINT CH A INTURRUPT VECTOR ORG PIOBIV DEFW PIOBINT CH B INTURRUPT VECTOR INTERRUPT VECTOR FTC ORG CTCINTV DEFW CTC0INT DEFW CTC1INT DEFW CTC2INT DEFW CTC3INT A.7.5 List.A.7.6 list.a.7.8 List.A.7.6 PIO (Parallel Input Output list.a.7.7 CTC (Counter/Timer Circuit list.a.7.8 list.a.7.9 List.A.7.6 initpio.asm ******************************** INITIALIZATION OF PARALLEL PORT ******************************** PIO A PORT LD HL,PIOATBL LD B,PIOAEND - PIOATBL LD C,PIOACMD PIO B PORT LD HL,PIOBTBL LD B,PIOBEND - PIOBTBL LD C,PIOBCMD PPI CH0 PORT LD A,(PPI0TBL OUT (PPI0CMD,A PPI CH1 PORT IS OUTPUT PORT List.A.7.7 initctc.asm ********************** INITIALIZATION OF CTC ********************** LD HL,CTCTBL0 LD B,CTC0END -CTCTBL0 LD C,CTCCH0 LD HL,CTCTBL1 LD B,CTC1END -CTCTBL1 LD C,CTCCH1 LD LD LD LD LD LD HL,CTCTBL2 B,CTC2END -CTCTBL2 C,CTCCH2 HL,CTCTBL3 B,CTC3END -CTCTBL3 C,CTCCH3 List.A.7.8 initsio.asm ********************** INITIALIZATION OF SIO ********************** CHANNEL A LD HL,SIOATBL LD B,SIOAEND- SIOATBL LD C,SIOACMD CHANNEL B LD HL,SIOBTBL LD B,SIOBEND- SIOBTBL LD C,SIOBCMD List.A.7.9 inittbl.asm INITIALIZATION FOR PERIPHERALS INITIALIZATION COMMAND FTC FTC CH0 CTCTBL0: Output Connected to CTC Channel 1 DEFB 00110101B InterruptDisable,TimerMode,Prescaler=1/256 DEFB 00H Time constant = 256 DEFB CTCINTV INTERRUPT VECTOR CTC0END: FTC CH1 CTCTBL1: Output Connected to CTC Channel 2 DEFB 01010101B InterruptDisable,CounterMode DEFB 1 Time constant = 1(1/256/256/150 = 1sec CTC1END: FTC CH2 A34
CTCTBL2: DEFB 01010101B InterruptDisable,CounterMode DEFB 0AH Time constant = 10 DEFB 00000011B Stop CTC CTC2END: FTC CH3 CTCTBL3: Output connected to SIO A port CLK(38400baud DEFB 00010101B InterruptDisable,TimerMode,Prescaler=1/16 DEFB 01H Time constant = 1 CTC3END: Before count down for measurement, interrupt enabled on CTC ch1 CTCTBLX: DEFB 11010101B InterruptDisable,CounterMode DEFB 150 Time constant = 150(1/256/256/150 = 1sec CTCXEND: INITIALIZATION COMMAND FOR SIO FOR SIO A CHANNEL SIOATBL: DEFB 18H Reset command (WR0 DEFB 01H,00H Clear all registors DEFB 03H,00H DEFB 04H,00H DEFB 05H,00H DEFB 06H,00H DEFB 07H,00H DEFB 04H,01000100B 1/16,1 STOP BIT,NON PARITY(WR4 DEFB 01H,00001000B trans. int.disable,recv. int.enable (WR1 DEFB 03H,11000001B Receiving mode,8bit(wr DEFB 05H,11101010B Transmission mode,8bit(wr5 SIOAEND: FOR SIO B CHANNEL SIOBTBL: DEFB 18H Reset command (WR0 DEFB 02H,SIOINTV Interrupt vector (WR2 DEFB 01H,00000100B Interrupt mode (WR1 SIOBEND: FOR PIO A PORT PIOATBL: DEFB PIOAIV Interrupt vector DEFB 00001111B MODE SELECT (MODE 0,OUTPUT PORT DEFB 00000111B INTERRUPT MODE (DISABLE PIOAEND: FOR PIO B PORT PIOBTBL: DEFB PIOBIV Interrupt vector DEFB 11001111B Mode select (MODE 3,BIT MODE DEFB 11111111B Setting all port for input DEFB 00000111B Interrupt disabled PIOBEND: After count down for measurement, interrupt enabled on PIO B port PIOXTBL: DEFB PIOBIV Interrupt vector DEFB 11001111B Mode select (MODE 3,BIT MODE DEFB 11111111B Setting all port for input DEFB 10010111B Interrupt by "L"edge or condition, with mask DEFB 11111110B mask(monitor D0 PIOXEND: FOR PPI CHO PPI0TBL: DEFB 10010010B MODE 0, A,B=INPUT, C=OUTPUT PPI0END: A.7.6 List.A.7.10 list.a.7.11 List.A.7.10 initmem.asm JP NZ,CLR04 LD HL,ARRYDET INITMEM: CLR05: LD (HL,00H LD HL,ARRYECG ECG CLR00: LD (HL,00H JP NZ,CLR05 LD HL,ARRYDF2 ECG JP NZ,CLR00 CLR06: LD (HL,00H LD HL,ARRYDF1 ECG 2 CLR01: LD (HL,00H JP NZ,CLR06 LD HL,ARRYAV2 ECG2 JP NZ,CLR01 CLR07: LD (HL,00H LD HL,ARRYAV1 ECG2 CLR02: LD (HL,00H JP NZ,CLR07 LD HL,ARRYWAV JP NZ,CLR02 CLR08: LD (HL,00H LD HL,ARRYREJ QRS CLR03: LD (HL,00H JP NZ,CLR08 JP NZ,CLR03 LD DE,PTRAREA RAM LD HL,ARRYTRD LD HL,PARAMTBLSTT LD BC,PARAMTBLEND PARAMTBLSTT init. data byte CLR04: LD (HL,00H LDIR A35
List.A.7.11 inimemtb.asm +++++ DEFW PTRDF1S 2 pointer RAM DEFW 0000H [[ ]] +++++ DEFW 0000H [[ ]] PARAMTBLSTT: ECG (XDIFAV1=4060H DEFB 0EH DEFW ARRYAV1 ECG2 DEFB 0EH pointer DEFW PTRAV1C ECG2 pointer ECG (PTRECG+ECG 2 ( (PTRDF1R DEFW ARRYDF1 ECG2 + (PTRWAV DEFW PTRAV1L data pointer DEFW 0000H DEFW PTRAV1R data pointer DEFW SAVLEN1-1 DEFW 0000H (4BYTE 2BYTE ECG 2 ( (PTRDF1C DEFW 0000H (4BYTE 2BYTE DEFW SAVLEN1 - DIFDIST DEFW SAVLEN1-1 DEFB AVENUM3 ECG 2 ((PTRDF1L DEFB 00H [[ ]] DEFW SAVLEN1-2 * DIFDIST DEFW SAVLEN1-1 QRS (XQRSREJ=4070H QRS ECG (PTRREJS DEFW 0000H ( DEFW SAVLEN1 - DIFDIST - AVENUM4 + 2 DEFW ARRYECG ECG DEFW SAVLEN1-1 DEFW PTRREJS ECG pointer ECG (PTRDETS DEFW ARRYAV1 2 DEFW SAVLEN1 - DIFDIST - AVENUM4 - AVENUM2 + 4 DEFW PTRAV1C 2 pointer DEFW SAVLEN1-1 DEFW ARRYREJ QRS ECG (PTRDF1S DEFW PTRREJD QRS pointer + ECG ( (PTRAV1R DEFB 00H DEFW 0000H DEFB REJDRY ECG 2 (PTRAV1C Trend(QRS ECG (XECGAVE=4080H +QRS (PTRREJD + Trend ( ( (PTRTRDR DEFW ARRYTRD Trend DEFW PTRTRDC Trend pointer DEFW SAVLEN2 - AVENUM4 + 2 DEFW ARRYREJ QRS ECG 2 ( (PTRTRDL DEFW PTRTRDL data pointer DEFW PTRTRDR data pointer DEFW SAVLEN2-2 * AVENUM4 + 2 DEFW 0000H (4BYTE 2BYTE Trend ( (PTRTRDC DEFW 0000H (4BYTE 2BYTE + Trend (PTRDETD DEFB AVENUM1 + Trend ( (PTRDF2R DEFB 00H [[ ]] DEFW SAVLEN2 - AVENUM4 - AVENUM2 + 4 Trend ( ( (PTRTRDL ECG (XDETDIF=4090H DEFW ARRYDET ECG DEFW SAVLEN2 - AVENUM4-2 * AVENUM2 + 4 DEFW PTRDF2C ECG pointer ( DEFW PTRDF2R ECG pointer ( Trend 2 ( (PTRDF2C DEFW PTRDF2L ECG pointer ( + Trend 2 ( (PTRAV2R DEFW ARRYDF2 2 DEFW SAVLEN2 - DIFDIST - AVENUM4 - AVENUM2 + 4 DEFW PTRDF2C 2 pointer DEFW 0000H [[ ]] Trend 2 ( (PTRDF2L DEFW 0000H [[ ]] DEFW SAVLEN2-2 * DIFDIST - AVENUM4 - AVENUM2 + 4 Trend ECG 2 (XDIFAV2=40A0H Trend 2 (PTRAV2C DEFW ARRYAV2 2 DEFW SAVLEN2 - DIFDIST - 2 * AVENUM4 - AVENUM2 + 6 DEFW PTRAV2C 2 pointer Trend ( (PTRAV2L DEFW ARRYDF2 2 DEFW SAVLEN2 - DIFDIST - 3 * AVENUM4 - AVENUM2 + 6 DEFW PTRAV2L data pointer DEFW PTRAV2R data pointer [[ ]] DEFW 0000H (4BYTE 2BYTE DEFW 0000H DEFW 0000H (4BYTE 2BYTE DEFW 0000H DEFB AVENUM3 DEFW 0000H DEFB 00H [[ ]] (XWAVDET=40B0H ECG (SAVEORG+Trend (SAVEDET DEFW ARRYAV2 2 (XORGDET=4040H DEFW PTRAV2C 2 pointer DEFW ARRYECG ECG DEFW ARRYDET Trnd Rj. DEFW PTRECG ECG pointer DEFW PTRAV2C Trnd Rj. pointer DEFW PTRDETS Trnd Rj. ECG pointer DEFW ARRYDET Trnd Rj. (XWAVDIA=40B8H DEFW PTRDETD Trnd Rj. pointer DEFW ARRYWAV DEFW ARRYTRD Trend data DEFW PTRWAV pointer DEFW PTRTRDC Trend data pointer DEFW 0000H [[ ]] DEFW OFFSET Trnd Rj. DEFB 00H [[ ]] ECG (DIFF2ND (XECGDIF=4050H DEFW ARRYECG ECG DEFB 00H (FOR WAVEDET DEFW PTRDF1C ECG pointer ( DEFW INIDRY (QRSPARA+0 DEFW PTRDF1R ECG pointer ( DEFW PTRDF1L ECG pointer ( PARAMTBLEND: DEFW ARRYDF1 2 A.7.7 List.A.7.12 A/D PIO A36
SAVEORG: LD L,(IX+2 pointer( LD H,(IX+3 LD E,(HL LD D,(HL LD L,(IX+0 List.A.7.12 saveorg.asm A.7.8 QRS LD H,(IX+1 IN A,(PPI0A LD (HL,A IN A,(PPI0B LD (HL,A List.A.7.13 QRS list.a.7.15 list.a.7.16 List.A.7.13 qrsrej3.asm LD (IX+14,A QRSREJJP1: LD (IX+15,REJDRY QRSREJ: CALL QRSREJRD ECG (DE LD A,(IX+14 JP QRSREJEND LD L,(IX+8 pointer QRSREJJP2: LD H,(IX+9 LD (IX+15,L LD C,(HL CALL QRSREJRD ECG (DE JP QRSREJEND LD B,(HL LD L,(IX+6 ( =02H LD H,(IX+7 REJ2DTH ADD HL,BC R LD C,(HL ( BC -> QRSREJRSTT: LD B,(HL ( CALL QRSREJRD ECG (DE LD HL,REJ2DTH (A jump (A 00H04H LD HL,QRSREJJP0 JP P,QRSREJEND jump LD E,A LD D,00H INCA (02H->04H INCA LD E,(HL LD (IX+14,A LD (IX+0,E ( LD D,(HL LD (IX+1,D ( JP QRSREJEND JP (HL QRSREJJP0: DEFW QRSREJWAIT ( =04H DEFW QRSREJRSTT BC -> DEFW QRSREJRDET QRSREJRDET: CALL QRSREJRD QRS LD L,(IX+0 ( DE -> LD H,(IX+1 ( QRSREJEND: LD L,(IX+12 pointer LD H,(IX+13 JP M,QRSREJJP3 jump LD C,(HL LD A,00H (04H->00H LD B,(HL LD (IX+14,A LD L,(IX+10 ( JP QRSREJEND LD H,(IX+11 ( QRSREJJP3: LD E,(IX+0 ( ADD HL,BC LD (HL,E ( LD D,(IX+1 ( INCHL JP QRSREJEND LD (HL,D ( ECG ECG -> DE ( =00H QRSREJRD: LD L,(IX+4 ECG pointer LD H,(IX+5 QRSREJWAIT: LD E,(HL LD L,(IX+15 DEC L LD D,(HL JP NZ,QRSREJJP2 LD L,(IX+2 ECG LD HL,REJ2DTH LD H,(IX+3 ECG LD E,(HL ECG ( JP M,QRSREJJP1 (00H->02H LD D,(HL ECG ( A37
A.7.9 List.A.7.14 list.a.7.13 QRS list.a.7.16 List.A.7.14 savedet.asm SAVEDET: LD L,(IX+4 ECG pointer LD H,(IX+5 LD E,(HL LD D,(HL LD L,(IX+0 ECG LD H,(IX+1 ECG LD E,(HL ECG ( INCHL LD D,(HL ECG ( LD L,(IX+12 pointer LD H,(IX+13 LD C,(HL LD B,(HL LD L,(IX+10 data LD H,(IX+11 ADD HL,BC LD C,(HL ( LD B,(HL ( Carry LD E,(IX+14 LD D,(IX+15 LD L,(IX+8 pointer LD H,(IX+9 LD C,(HL LD B,(HL LD L,(IX+6 LD H,(IX+7 ADD HL,BC LD (HL,E ( LD (HL,D ( A.7.10 List.A.7.15 list.a.7.18 QRS List.A.7.15 diff2nd.asm DIFF2ND: LD L,(IX+2 ( pointer LD H,(IX+3 LD E,(HL LD D,(HL LD L,(IX+0 LD H,(IX+1 PUSH HL DE ( LD C,(HL ( k ( LD B,(HL ( k ( SLA C 2 RL B PUSH BC ( 22*k LD L,(IX+4 ( k+d pointer LD H,(IX+5 LD C,(HL LD B,(HL HL ADD HL,BC ( k+d LD C,(HL ( k+d( LD B,(HL ( k+d( POP HL ( 22*k 2*k - k+d (2*k - k+d LD L,(IX+6 ( k-d pointer LD H,(IX+7 LD C,(HL LD B,(HL POP HL ADD HL,BC ( k-d LD C,(HL ( k-d( LD B,(HL ( k-d( (2*k - k+d 2*k - k+d - k-d LD L,(IX+10 pointer LD H,(IX+11 LD C,(HL LD B,(HL LD L,(IX+8 LD H,(IX+9 ADD HL,BC LD (HL,E ( LD (HL,D ( A38
A.7.11 List.A.7.16 List.A.7.16 average.asm AVERAGE: 16bit ->HL registor 32bit ->IX+10IX+13 ADD32: LD L,(IX+6 LD C,(HL 16bit ( LD H,(IX+7 LD C,(HL LD B,(HL LD DE,0000H 32bit 16bit LD B,(HL BIT 7,B LD L,(IX+4 data JP Z,ADDJP0 DE=FFFFH LD H,(IX+5 DEC DE ADD HL,BC ADDJP0: LD L,(IX+10 16bit CALL SUB32 LD H,(IX+11 LD L,(IX+8 LD H,(IX+9 ADC HL,BC 16bit LD C,(HL LD (IX+10,L 32bit binary data( 16bit LD (IX+11,H LD B,(HL LD L,(IX+12 32bit binary data 16bit LD L,(IX+4 data LD H,(IX+13 LD H,(IX+5 ADC HL,DE 16bit ADD HL,BC LD (IX+12,L 32bit binary data( 16bit CALL ADD32 LD (IX+13,H CALL CALCAVE 1632 16bit ->HL registor CALCAVE: 32bit ->IX+10IX+13 LD E,(IX+10 LD D,(IX+11 SUB32: LD C,(IX+12 LD C,(HL 16bit data( LD B,(IX+13 LD L,(IX+14 LD B,(HL AVELOOP: (2^n LD DE,0000H 32bit 16bit SRA B BIT 7,B RR C JP Z,SUBJP0 DE=FFFFH RR D DEC DE RR E SUBJP0: LD L,(IX+10 16bit DEC L LD H,(IX+11 JP NZ,AVELOOP LD L,(IX+2 16bit LD H,(IX+3 LD (IX+10,L 32bit binary data( 16bit LD C,(HL LD (IX+11,H LD L,(IX+12 32bit data 16bit LD B,(HL LD L,(IX+0 LD H,(IX+13 16bit LD H,(IX+1 LD (IX+12,L 32bit binary data( 16bit ADD HL,BC LD (HL,E ( LD (IX+13,H LD (HL,D ( 1632 A.7.12 List.A.7.17 16 T list.a.7.18 List.A.7.17 wavedet2.asm ECG WAVEDET: LD A,(MODEFLG AND 1EH LD (MODEFLG,A LD HL,(QRSPARA+6 R- R increment LD (QRSPARA+6,HL LD L,(IX+2 2 pointer LD H,(IX+3 LD C,(HL LD B,(HL LD L,(IX+0 LD H,(IX+1 ADD HL,BC LD C,(HL 2 ( A39
LD B,(HL 2 ( MODEFLG jump (MODEFLG 030 LD HL,JMPADDRSTT LD E,A LD D,00H LD E,(HL LD D,(HL JP (HL JMPADDRSTT: DEFW INIDETDRY DEFW INIDETSTT DEFW INIDETPEAK DEFW INIDETEND DEFW PDETECTDRY DEFW PDETECTSTT DEFW PDETECTPEAK DEFW PDETECTEND DEFW TDETECTDRY DEFW TDETECTSTT DEFW TDETECTPEAK DEFW TDETECTEND DEFW QRSDETSTT DEFW QRSDETQRS DEFW QRSDETPEAK DEFW QRSDETEND WAVEDETEND: R ( (A REG.=00H INIDETDRY: LD HL,(QRSPARA+0 DEC HL LD (QRSPARA+0,HL BIT 7,H JP Z,INIDETJP0 <0 LD HL,RTH R JP M,INIDETJP0 INIDETJP0 00H 02H LD (MODEFLG,A INIDETJP0: R (R (A REG.=02H INIDETSTT: LD HL,RTH R JP P,INIDETJP1 < INIDETJP 1 LD HL,0000H LD (QRSPARA+6,HL R- R LD (QRSPARA+14,BC 2 02H 04H LD (MODEFLG,A INIDETJP1: QRS (R (A REG.=04H INIDETPEAK: LD HL,QRSTH QRS JP M,INIDETJP2 QRS JP 04H 06H LD (MODEFLG,A JP INIDETJP3 INIDETJP2: LD HL,(QRSPARA+14 JP P,INIDETJP3 2 ->INIDETJP3 LD HL,0000H LD (QRSPARA+6,HL R- R INIDETJP3: R (S (A REG.=06H INIDETEND: LD HL,(QRSPARA+14 2 JP M,INIDETJP4 2 ->INIDETJP4 LD HL,TDELAY T LD (TPARA+0,HL LD A,00010001B flagt mode(11h LD (MODEFLG,A INIDETJP4: P ( (A REG.=08H PDETECTDRY: LD HL,(PPARA+0 DEC HL LD (PPARA+0,HL BIT 7,H JP Z,PDETJP0 ->PDETJP0 LD (PPARA+4,BC 2 28H 2AH LD (MODEFLG,A PDETJP0: P ( (A REG.=0AH PDETECTSTT: LD HL,(PPARA+4 2 LD (PPARA+4,BC 2 JP M,PDETJP1 2 ->PDETJP1 LD HL,0000H P LD (PPARA+2,HL LD L,(IX+6 Trnd Rj.data pointer LD H,(IX+7 LD E,(HL LD D,(HL LD L,(IX+4 Trnd Rj.data LD H,(IX+5 LD E,(HL Trnd Rj.data ( LD D,(HL Trnd Rj.data ( LD (PPARA+6,DE P PDETJP1: LD HL,PTH 2 >PTH-> JP P,WAVEDETEND LD L,(IX+6 Trnd Rj.data pointer LD H,(IX+7 LD E,(HL LD D,(HL LD L,(IX+4 Trnd Rj.data LD H,(IX+5 LD E,(HL Trnd Rj.data ( LD D,(HL Trnd Rj.data ( LD (PPARA+8,DE P 2AH 2CH LD (MODEFLG,A P ( (A REG.=0CH PDETECTPEAK: LD HL,(PPARA+2 P LD (PPARA+2,HL LD HL,(PPARA+4 2 LD (PPARA+4,BC 2 JP P,PDETJP2 2 LD L,(IX+6 Trnd Rj.data pointer LD H,(IX+7 LD E,(HL LD D,(HL LD L,(IX+4 Trnd Rj.data LD H,(IX+5 A40
LD E,(HL LD E,(HL ( INCHL LD D,(HL LD D,(HL ( LD L,(IX+4 Trnd Rj.data LD (PPARA+8,DE P LD H,(IX+5 PDETJP2: BIT 7,B 2 LD E,(HL Trnd Rj.data ( JP P,WAVEDETEND 2 <0 => 2CH 2EH LD D,(HL Trnd Rj.data ( LD HL,(QRSPARA+14 2 LD (MODEFLG,A LD (QRSPARA+14,BC 2 BIT 7,B JP Z,QRSDETJP0 2 P ( (A REG.=0EH JP M,WAVEDETEND 2 => JP PDETECTEND: LD (QRSPARA+8,DE Q LD HL,(PPARA+2 P LD HL,0000H QRS LD (QRSPARA+2,HL LD (PPARA+2,HL LD HL,(PPARA+4 2 QRSDETJP0: LD (QRSPARA+10,DE R 1AH 1CH LD (PPARA+4,BC 2 JP P,WAVEDETEND 2 LD (MODEFLG,A LD L,(IX+6 Trnd Rj.data pointer LD H,(IX+7 LD E,(HL QRS (R (A REG.=1CH LD D,(HL QRSDETPEAK: LD L,(IX+4 Trnd Rj.data LD HL,(QRSPARA+2 QRS LD H,(IX+5 LD (QRSPARA+2,HL LD E,(HL Trnd Rj.data ( LD HL,QRSTH LD D,(HL Trnd Rj.data ( SRA D P 2 LD HL,(QRSPARA+14 2 RR E LD (QRSPARA+14,BC 2 LD HL,(PPARA+8 P JP P,QRSDETJP1 2 <QRSTH JUMP Pp - Ps/2 LD DE,(PPARA+6 P JP P,WAVEDETEND 2 SRA D P 2 LD L,(IX+6 Trnd Rj.data pointer RR E LD H,(IX+7 LD E,(HL Pp - (Ps+Pe/2 LD (PPARA+10,HL P LD D,(HL LD HL,0000H P Q LD L,(IX+4 Trnd Rj.data LD (QRSPARA+0,HL LD H,(IX+5 LD A,00011001B flagqrs mode(a=19h LD E,(HL Trnd Rj.data ( LD (MODEFLG,A LD D,(HL ( LD (QRSPARA+10,DE R QRS ( 1(A REG.=18H LD HL,(QRSPARA+6 R- R LD (QRSPARA+4,HL QRSDETSTT: LD HL,(QRSPARA+0 Q INCREMENT QRSDETJP1: LD HL,(QRSPARA+6 R- R LD (QRSPARA+0,HL LD BC,(QRSPARA+4 LD HL,QRSTH <QRS LD (QRSPARA+6,HL JP M,WAVEDETEND 1CH 1EH LD (QRSPARA+14,BC LD L,(IX+6 Trnd Rj.data pointer LD (MODEFLG,A LD H,(IX+7 LD E,(HL LD D,(HL QRS ( (A REG.=1EH LD L,(IX+4 Trnd Rj.data QRSDETEND: LD H,(IX+5 LD HL,(QRSPARA+2 QRS LD E,(HL Trnd Rj.data ( LD (QRSPARA+2,HL LD HL,(QRSPARA+14 2 LD D,(HL Trnd Rj.data ( LD (QRSPARA+8,DE Q LD (QRSPARA+14,BC 2 18H 1AH JP P,WAVEDETEND 2 LD (MODEFLG,A LD L,(IX+6 Trnd Rj.data pointer LD H,(IX+7 LD E,(HL QRS ( 2(A REG.=1AH LD D,(HL LD L,(IX+4 Trnd Rj.data QRSDETQRS: LD HL,(QRSPARA+0 Q INCREMENT LD H,(IX+5 LD (QRSPARA+0,HL LD E,(HL Trnd Rj.data ( LD L,(IX+6 Trnd Rj.data pointer LD D,(HL Trnd Rj.data ( LD H,(IX+7 A41
SRA D S 2 RR E LD HL,(QRSPARA+10 R T (T (A REG.=14H R - S/2 TDETECTPEAK: LD DE,(QRSPARA+8 Q LD HL,(TPARA+2 T SRA D 2 RR E LD (TPARA+2,HL LD HL,(TPARA+4 2 R - (Q+S/2 LD (QRSPARA+12,HL R LD HL,TDELAY T LD (TPARA+4,BC 2 LD (TPARA+0,HL JP P,TDETJP1 =>TDETJP1 LD A,00010001B flag+t mode(a=11h LD L,(IX+6 Trnd Rj.data pointer LD (MODEFLG,A LD H,(IX+7 LD E,(HL LD D,(HL T ( (A REG.=10H LD L,(IX+4 Trnd Rj.data LD H,(IX+5 TDETECTDRY: LD HL,(TPARA+0 decriment LD E,(HL Trnd Rj.data ( DEC HL LD (TPARA+0,HL LD D,(HL Trnd Rj.data ( BIT 7,H LD (TPARA+6,DE T JP Z,WAVEDETEND => TDETJP1: LD (TPARA+4,BC 2 BIT 7,B 2 LD HL,0000H T JP P,WAVEDETEND 2 <0 LD (TPARA+2,HL 34H 36H 10H 12H LD (MODEFLG,A LD (MODEFLG,A T ( (A REG.=12H T ( (A REG.=16H TDETECTEND: TDETECTSTT: LD HL,(TPARA+2 T LD HL,(TPARA+4 2 LD (TPARA+2,HL LD HL,(TPARA+4 2 LD (TPARA+4,BC 2 JP M,TDETJP0 2 =>TDETJP0 LD HL,0000H T LD (TPARA+4,BC LD (TPARA+2,HL JP P,WAVEDETEND 2 TDETJP0: LD L,(IX+6 Trnd Rj.data pointer LD HL,TTH 2 >TTH => LD H,(IX+7 LD E,(HL JP P,WAVEDETEND LD D,(HL LD L,(IX+6 Trnd Rj.data pointer LD L,(IX+4 Trnd Rj.data LD H,(IX+7 LD H,(IX+5 LD E,(HL LD E,(HL Trnd Rj.data ( LD D,(HL LD L,(IX+4 Trnd Rj.data LD D,(HL Trnd Rj.data ( LD H,(IX+5 LD HL,(TPARA+6 T LD E,(HL Trnd Rj.data ( T LD (TPARA+8,HL T LD D,(HL Trnd Rj.data ( LD HL,PDELAY P LD (TPARA+6,DE T LD (PPARA+0,HL 12H 14H LD A,00001001B +P mode(a=09h LD (MODEFLG,A LD (MODEFLG,A A.7.13 List.A.7.18 List.A.7.18 wavdiag2.asm +++++++++++++++++++++ ECG +++++++++++++++++++++ WAVEDIAG: LD A,(MODEFLG BIT 0,A JP Z,WAVEDIAGEND MODEFLG jump AND 1EH (BIT0,5-7 LD HL,JMPADRSET jump pointer LD E,A LD D,00H LD E,(HL jump LD D,(HL JP (HL jump JMPADRSET: DEFW INIDIAG DEFW INIDIAG DEFW INIDIAG DEFW INIDIAG DEFW TDIAG DEFW TDIAG A42
DEFW TDIAG DEFW TDIAG DEFW QRSDIAG DEFW QRSDIAG DEFW QRSDIAG DEFW QRSDIAG DEFW PDIAG DEFW PDIAG DEFW PDIAG DEFW PDIAG WAVEDIAGEND: +++++++++++++++++++++ QRS +++++++++++++++++++++ INIDIAG: LD HL,QRSTIMN QRS LD (QRSPARA+2,HL QRS JP WAVEDIAGEND +++++++++++++++++++++ P +++++++++++++++++++++ PDIAG: LD HL,(PPARA+2 P LD HL,PTIMEH JP P,PDIAGJP0 PDIAGJP0 LD C,PERROR1 MODEFLG PDIAGJP0: LD HL,PTIMEL JP M,PDIAGJP1 PDIAGJP1 LD C,PERROR1 MODEFLG PDIAGJP1: LD HL,(PPARA+10 P LD HL,PAMPH JP P,PDIAGJP2 PDIAGJP2 LD C,PERROR2 MODEFLG PDIAGJP2: LD HL,PAMPL JP M,PDIAGJP3 PDIAGJP3 LD C,PERROR3 MODEFLG PDIAGJP3: LD (MODEFLG,A MODEFLG JP WAVEDIAGEND +++++++++++++++++++++ T +++++++++++++++++++++ TDIAG: LD HL,(QRSPARA+2 Q-T LD HL,TDELAY Q-T =QRS + S ->T + T LD HL,(TPARA+2 LD HL,QTTIMEH JP P,TDIAGJP0 TDIAGJP0 LD C,TERROR1 MODEFLG TDIAGJP0: LD HL,QTTIMEL JP M,TDIAGJP1 TDIAGJP1 LD C,TERROR1 MODEFLG TDIAGJP1: LD HL,(TPARA+8 T LD HL,TAMPH JP P,TDIAGJP2 TDIAGJP2 LD C,TERROR2 MODEFLG TDIAGJP2: LD HL,TAMPL JP M,TDIAGJP3 TDIAGJP3 LD C,TERROR3 MODEFLG TDIAGJP3: LD (MODEFLG,A MODEFLG JP WAVEDIAGEND +++++++++++++++++++++ QRS +++++++++++++++++++++ QRSDIAG: LD HL,(QRSPARA+0 PQ LD HL,PQTIMEH JP M,BITSET LD HL,PQTIMEL JP P,BITSET LD HL,(QRSPARA+2 QRS LD HL,QRSTIMH JP P,QRSDIAGJP0 QRSDIAGJP0 LD C,QRSERR1 MODEFLG QRSDIAGJP0: LD HL,QRSTIML JP M,QRSDIAGJP1 QRSDIAGJP1 LD C,QRSERR1 MODEFLG QRSDIAGJP1: LD HL,(QRSPARA+4 R- R LD HL,RRTIMEH JP P,QRSDIAGJP2 QRSDIAGJP2 LD C,QRSERR2 MODEFLG QRSDIAGJP2: LD HL,RRTIMEL JP M,QRSDIAGJP3 QRSDIAGJP3 LD C,QRSERR2 MODEFLG QRSDIAGJP3: LD HL,(QRSPARA+10 R LD HL,RAMPH JP P,QRSDIAGJP4 QRSDIAGJP4 LD C,QRSERR3 MODEFLG QRSDIAGJP4: LD HL,RAMPL JP M,QRSDIAGJP5 QRSDIAGJP5 LD C,QRSERR3 MODEFLG QRSDIAGJP5: LD (MODEFLG,A MODEFLG JP WAVEDIAGEND A43
A.7.14 List.A.7.19 1 list.a.7.17 list.a.7.18 RS-232C PC List.A.7.19 savewav.asm ECG SAVEWAV: LD L,(IX+2 Diag. pointer LD H,(IX+3 LD C,(HL LD B,(HL LD L,(IX+0 Diag. LD H,(IX+1 ADD HL,BC LD A,(MODEFLG ( AND 0FEH BIT0 LD (HL,A ( LD A,00H ( LD (HL,A ( A.7.15 QRS 1 List.A.7.20 List.A.7.20 incptr2.asm pointer INCPTR: LD L,(IX+0 pointer( LD H,(IX+1 LD DE,0004H pointer (4BYTE INCPTRJP0: LD C,(IX+2 pointer( LD B,(IX+3 pointer( INCBC INC BC LD A,(IX+4 ( AND C LD (IX+2,A pointer( LD A,(IX+5 ( AND B LD (IX+3,A pointer( LD A,H mem CP L JP NZ,INCPTRJP1 mem LD C,(IX+2 pointer( LD A,(IX+3 pointer( JP NZ,INCPTRJP1 pointer EXX INC C LD A,C OUT (PPI1C,A ( EXX INCPTRJP1: ADD IX,DE pointer DEC L pointer JP NZ,INCPTRJP0 A.7.16 RS232C PC 200 list.a.7.19 list.a.7.21 RS-232C PC A44
List.A.7.21 snd2pc3.asm RS232C ( PPI1B SEND2PC: RS232C 1byte HL RSSEND: PUSH HL RSJP10: LD E,BANK NUM IN A,(SIOACMD LD D,00H AND 04H RSJP00: JP Z,RSJP10 LD A,D LD A,(HL OUT (PPI1C,A AND 0FH 4 OUT (PPI1B,A LED ADD A,30H 30H POP HL OUT (SIOADAT,A PUSH HL RSJP11: IN A,(SIOACMD LD BC,SENDNUM RSJP01: AND 04H CALL RSSEND RS-232C 1 JP Z,RSJP11 LD A,(HL RRA 4 RRA RRA JP NZ,RSJP01 bankdata RRA AND 0FH INC D ADD A,30H 30H DEC E JP NZ,RSJP00 bankdata OUT (SIOADAT,A POP HL A45