home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ftp.barnyard.co.uk
/
2015.02.ftp.barnyard.co.uk.tar
/
ftp.barnyard.co.uk
/
cpm
/
walnut-creek-CDROM
/
BEEHIVE
/
UTILITYS
/
UNERA3.ARC
/
Z80.LIB
< prev
Wrap
Text File
|
1991-08-11
|
13KB
|
562 lines
;;
;; Z80.LIB INCLUDES Z80 INSTRUCTIONS SET-UP FOR THIS
;; MACHINE PLEASE READ OVER THESE INSTRUCTIONS AND
;; INSTRUCTIONS FOUND IN Z80EXT.LIB BEFORE PROGRAMING
;;
;;******************************************************************
;;*** ***
;;*** INSTRUCTION SET LISTING AS FOUND IN LIBRARY ***
;;*** ***
;;******************************************************************
;;
;; LDX R,D * LDY R,D
;; STX R,D * STY R,D
;; MVIX N,D * MVIY N,D
;; LDAI * LDAR
;; STAI * STAR
;; LXIX NNNN * LXIY NNNN
;; LDED NNNN * LBCD NNNN
;; LSPD NNNN * LIXD NNNN
;; LIYD NNNN * SBCD NNNN
;; SDED NNNN * SSPD NNNN
;; SIXD NNNN * SIYD NNNN
;; SPIX * SPIY
;; PUSHIX * PUSHIY
;; POPIX * POPIY
;; EXAF * EXX
;; XTIX * XTIY
;; LDI * LDIR
;; LDD * LDDR
;; CCI * CCIR
;; CCD * CCDR
;; ADDX D * ADDY D
;; ADCX D * ADCY D
;; SUBX D * SUBY D
;; SBCX D * SBCY D
;; ANDX D * ANDY D
;; XORX D * XORY D
;; ORX D * ORY D
;; CMPX D * CMPY D
;; INRX D * INRY D
;; DCRX D * DCRY D
;; NEG * IM0
;; IM1 * IM2
;; DADC RP * DSBC RP
;; DADX RP * DADY RP
;; INXIX * INXIY
;; DCXIX * DCXIY
;; BIT N,R * SETB N,R
;; RES N,R * BITX N,D
;; BITY N,D * SETX N,D
;; SETY N,D * RESX N,D
;; RESY N,D * JR N
;; JMPR N * JRC N
;; JRNC N * JRZ N
;; JRNZ N *
;; DJNZ N * PCIX
;; PCIY * RETI
;; RETN * RETEI
;; INP R * OUTP R
;; INI * INIR
;; IND * INDR
;; OUTI * OUTIR
;; OUTD * OUTDR
;; RLCR R * RLCX D
;; RLCY D * RALR R
;; RALX D * RALY D
;; RRCR R * RRCX D
;; RRCY D * RARR R
;; RARX D * RARY D
;; SLAR R * SLAX D
;; SLAY D * SRAR R
;; SRAX D * SRAY D
;; SRLR R * SRLX D
;; SRLY D * RLD
;; RRD
;;
;;******************************************************************
;;
;; @CHK MACRO USED FOR CHECKING 8 BIT DISPLACMENTS
;;
@CHK MACRO ?DD ;; USED FOR CHECKING RANGE OF 8-BIT DISP.S
IF (?DD GT 07FH) AND (?DD LT 0FF80H)
'DISPLACEMENT RANGE ERROR - Z80 LIB'
ENDIF
ENDM
@CHECK MACRO ?N
?DD SET ?N-$-2
IF (?DD GT 07FH) AND (?DD LT 0FF80H)
'RANGE ERROR - Z80 LIB'
?DD SET 0FEH
ENDIF
ENDM
;;
;;
LDX MACRO ?R,?D ;;LOAD REG R FROM MEMORY AT (IX+D)
@CHK ?D
DB 0DDH,?R*8+46H,?D
ENDM
LDY MACRO ?R,?D ;;LOAD REG R FROM MEMORY AT (IY+D)
@CHK ?D
DB 0FDH,?R*8+46H,?D
ENDM
STX MACRO ?R,?D ;;STORE REG R AT MEMORY (IX+D)
@CHK ?D
DB 0DDH,70H+?R,?D
ENDM
STY MACRO ?R,?D ;;STORE REG R AT MEMORY (IY+D)
@CHK ?D
DB 0FDH,70H+?R,?D
ENDM
MVIX MACRO ?N,?D ;;MOV #N (8 BITS) INTO MEMORY AT (IX+D)
@CHK ?D
DB 0DDH,36H,?D,?N
ENDM
MVIY MACRO ?N,?D ;;MOV #N (8 BITS) INTO MEMORY AT (IY+D)
@CHK ?D
DB 0FDH,36H,?D,?N
ENDM
LDAI MACRO ;;LOAD ACC WITH REG I (INTERRUPT VECTOR)
DB 0EDH,57H
ENDM
LDAR MACRO ;;LOAD ACC WITH THE REFRESH REG
DB 0EDH,5FH
ENDM
STAI MACRO ;;STORE ACC INTO REG I
DB 0EDH,47H
ENDM
STAR MACRO ;;STORE ACC INTO THE REFRESH REG
DB 0EDH,4FH
ENDM
LXIX MACRO ?NNNN ;;LOAD IMMEDIATE (LDI) IX WITH #NNNN (16 BITS)
DB 0DDH,21H
DW ?NNNN
ENDM
LXIY MACRO ?NNNN ;;LDI REG PAIR IY WITH #NNNN (16 BITS)
DB 0FDH,21H
DW ?NNNN
ENDM
LDED MACRO ?NNNN ;;LOAD DE WITH CONTENTS OF MEMORY AT NNNN
DB 0EDH,5BH ;; (E)=((NN)(NN))
DW ?NNNN ;; (D)=((NN)(NN+1))
ENDM
LBCD MACRO ?NNNN ;;LOAD BC WITH CONTENTS OF MEMORY AT NNNN
DB 0EDH,4BH
DW ?NNNN
ENDM
LSPD MACRO ?NNNN ;;LOAD STACK POINTER WITH CONTENTS OF MEMORY
DB 0EDH,07BH ;; AT NNNN
DW ?NNNN
ENDM
LIXD MACRO ?NNNN ;;LOAD IX WITH CONTENTS OF MEMORY AT NNNN
DB 0DDH,2AH
DW ?NNNN
ENDM
LIYD MACRO ?NNNN ;;LOAD IY WITH CONTENTS OF MEMORY AT NNNN
DB 0FDH,2AH
DW ?NNNN
ENDM
SBCD MACRO ?NNNN ;;STORE BC IN MEMORY LOCATION NNNN
DB 0EDH,43H ;; ((NN)(NN))=(C)
DW ?NNNN ;; ((NN)(NN+1))=(B)
ENDM
SDED MACRO ?NNNN ;;STORE DE IN MEMORY LOC NNNN
DB 0EDH,53H
DW ?NNNN
ENDM
SSPD MACRO ?NNNN ;;STORE STACK POINTER IN MEMORY LOC NNNN
DB 0EDH,73H
DW ?NNNN
ENDM
SIXD MACRO ?NNNN ;;STORE IX IN MEMORY LOC NNNN
DB 0DDH,22H
DW ?NNNN
ENDM
SIYD MACRO ?NNNN ;;STORE IY IN MEMORY LOC NNNN
DB 0FDH,22H
DW ?NNNN
ENDM
SPIX MACRO ;;MOV IX INTO STACK POINTER (SP)
DB 0DDH,0F9H
ENDM
SPIY MACRO ;;MOV IY INTO STACK POINTER (SP)
DB 0FDH,0F9H
ENDM
PUSHIX MACRO ;;PUSH IX ONTO STACK
DB 0DDH,0E5H
ENDM
PUSHIY MACRO ;;PUSH IY ONTO STACK
DB 0FDH,0E5H
ENDM
POPIX MACRO ;;POP IX OFF STACK
DB 0DDH,0E1H
ENDM
POPIY MACRO ;;POP IY OFF STACK
DB 0FDH,0E1H
ENDM
EXAF MACRO ;;EXCHANGE AF AND AF' REGS
DB 08H
ENDM
EXX MACRO ;;EXCHANGE BC AND BC'
DB 0D9H ;; DE AND DE'
;; HL AND HL'
ENDM
XTIX MACRO ;;EXCHANGE TOP OF STACK WITH IX
DB 0DDH,0E3H
ENDM
XTIY MACRO ;;EXCHANGE TOP OF STACK WITH IY
DB 0FDH,0E3H
ENDM
LDI MACRO ;;LOAD MEMORY AT (H,L) TO MEMORY AT (D,E)
DB 0EDH,0A0H ;; INC D,E INC H,L DEC B,C
ENDM
LDIR MACRO ;;AS ABOVE REPEAT UNTIL B=0
DB 0EDH,0B0H
ENDM
LDD MACRO ;;LOAD MEMORY AT (H,L) TO MEMORY AT (D,E)
DB 0EDH,0A8H ;; DEC H,L DEC D,E DEC B,C
ENDM
LDDR MACRO ;;AS ABOVE REPEAT UNTIL B=0
DB 0EDH,0B8H
ENDM
CCI MACRO ;;COMPARE ACC WITH MEMORY AT (H,L)
DB 0EDH,0A1H ;; INC H,L DEC B,C (P/V=0 IF B=0)
;; (ACC=(H,L) IF Z=0)
ENDM
CCIR MACRO ;;AS ABOVE REPEAT UNTIL (B,C) = 0 OR
;; (A) = (H,L)
DB 0EDH,0B1H
ENDM
CCD MACRO ;;COMPARE ACC WITH MEMORY AT (H,L)
DB 0EDH,0A9H ;; DEC H,L DEC B,C
ENDM
CCDR MACRO ;;AS ABOVE REPEAT UNTIL (BC) = 0 OR
;; (A) = (H,L)
DB 0EDH,0B9H
ENDM
ADDX MACRO ?D ;;ACC=ACC+CONTENTS OF MEMORY AT (IX+D)
@CHK ?D ;; ACC=ACC+((IX+D))
DB 0DDH,86H,?D
ENDM
ADDY MACRO ?D ;;ACC=ACC+((IY+D))
@CHK ?D
DB 0FDH,86H,?D
ENDM
ADCX MACRO ?D ;;ACC=ACC+((IX+D))+CARRY
@CHK ?D
DB 0DDH,8EH,?D
ENDM
ADCY MACRO ?D ;;ACC=ACC+((IY+D))+CARRY
@CHK ?D
DB 0FDH,8EH,?D
ENDM
SUBX MACRO ?D ;;ACC=ACC-((IX+D))
@CHK ?D
DB 0DDH,96H,?D
ENDM
SUBY MACRO ?D ;;ACC=ACC-((IY+D))
@CHK ?D
DB 0FDH,96H,?D
ENDM
SBCX MACRO ?D ;;ACC=ACC-((IX+D))-BORROW
@CHK ?D
DB 0DDH,9EH,?D
ENDM
SBCY MACRO ?D ;;ACC=ACC-((IY+D))-BORROW
@CHK ?D
DB 0FDH,9EH,?D
ENDM
ANDX MACRO ?D ;;AND ACC WITH CONTENTS OF MEMORY (IX+D)
@CHK ?D
DB 0DDH,0A6H,?D
ENDM
ANDY MACRO ?D ;;AND ACC WITH CONTENTS OF MEMORY (IY+D)
@CHK ?D
DB 0FDH,0A6H,?D
ENDM
XORX MACRO ?D ;;EXCLUSIVE OR THE ACC WITH CONTEMTS OF
@CHK ?D ;; MEMORY AT (IX+D)
DB 0DDH,0AEH,?D
ENDM
XORY MACRO ?D ;;XOR ACC WITH CONTENTS OF MEMORY (IY+D)
@CHK ?D
DB 0FDH,0AEH,?D
ENDM
ORX MACRO ?D ;;OR THE ACC WITH CONTENTS OF MEMORY (IX+D)
@CHK ?D
DB 0DDH,0B6H,?D
ENDM
ORY MACRO ?D ;;OR ACC WITH CONTENTS OF MEMORY (IY+D)
@CHK ?D
DB 0FDH,0B6H,?D
ENDM
CMPX MACRO ?D ;;COMPARE THE ACC WITH CONTENTS OF MEMORY
@CHK ?D ;; AT LOC (IX+D)
DB 0DDH,0BEH,?D
ENDM
CMPY MACRO ?D ;;CMP ACC WITH CONTENTS OF MEMORY (IY+D)
@CHK ?D
DB 0FDH,0BEH,?D
ENDM
INRX MACRO ?D ;;INC MEMORY CONTENTS AT (IX+D)
@CHK ?D
DB 0DDH,34H,?D
ENDM
INRY MACRO ?D ;;INC MEMORY CONTENTS AT (IY+D)
@CHK ?D
DB 0FDH,34H,?D
ENDM
DCRX MACRO ?D ;;DEC MEMORY CONTENTS AT (IX+D)
@CHK ?D
DB 0DDH,035H,?D
ENDM
DCRY MACRO ?D ;;DEC MEMORY CONTENTS AT (IY+D)
@CHK ?D
DB 0FDH,35H,?D
ENDM
NEG MACRO ;;NEGATE ACC (2'S COMPLEMENT)
DB 0EDH,44H
ENDM
IM0 MACRO ;;SET INTERRUPT MODE #0
DB 0EDH,46H
ENDM
IM1 MACRO ;;SET INTERRUPT MODE #1 (RESTART 0038H)
DB 0EDH,56H
ENDM
IM2 MACRO ;;SET INTERRUPT MODE #2
DB 0EDH,5EH ;; RESTART AT LOC (INT REG I)(DEV SUPPLIED)
ENDM
BC EQU 0
DE EQU 2
HL EQU 4
IX EQU 4
IY EQU 4
DADC MACRO ?R ;;DOUBLE ADD (H,L)=(H,L)+(RP)+CARRY
DB 0EDH,?R*8+4AH
ENDM
DSBC MACRO ?R ;;DOUBLE SUB (H,L)=(H,L)-(RP)-CARRY
DB 0EDH,?R*8+42H
ENDM
DADX MACRO ?R ;;DOUBLE ADD (IX)=(IX)+(RP)
DB 0DDH,?R*8+09H
ENDM
DADY MACRO ?R ;;DOUBLE ADD (IY)=(IY)+(RP)
DB 0FDH,?R*8+09H
ENDM
INXIX MACRO ;;INC (IX)
DB 0DDH,23H
ENDM
INXIY MACRO ;;INC (IY)
DB 0FDH,23H
ENDM
DCXIX MACRO ;;DEC (IX)
DB 0DDH,2BH
ENDM
DCXIY MACRO ;;DEC (IY)
DB 0FDH,2BH
ENDM
BIT MACRO ?N,?R ;;TEST BIT N IN REG R
DB 0CBH,?N*8+?R+40H
ENDM
SETB MACRO ?N,?R ;;SET BIT N IN REG R
DB 0CBH,?N*8+?R+0C0H
ENDM
RES MACRO ?N,?R ;;RESET BIT N IN REG R
DB 0CBH,?N*8+?R+80H
ENDM
BITX MACRO ?N,?D ;;TEST BIT N IN MEMORY LOC (IX+D)
@CHK ?D
DB 0DDH,0CBH,?D,?N*8+46H
ENDM
BITY MACRO ?N,?D ;;TEST BIT N IN MEMORY LOC (IY+D)
@CHK ?D
DB 0FDH,0CBH,?D,?N*8+46H
ENDM
SETX MACRO ?N,?D ;;SET BIT N IN MEMORY LOC (IX+D)
@CHK ?D
DB 0DDH,0CBH,?D,?N*8+0C6H
ENDM
SETY MACRO ?N,?D ;;SET BIT N IN MEMORY LOC (IY+D)
@CHK ?D
DB 0FDH,0CBH,?D,?N*8+0C6H
ENDM
RESX MACRO ?N,?D ;;RESET BIT N IN MEMORY LOC (IX+D)
@CHK ?D
DB 0DDH,0CBH,?D,?N*8+86H
ENDM
RESY MACRO ?N,?D ;;RESET BIT N IN MEMORY LOC (IY+D)
@CHK ?D
DB 0FDH,0CBH,?D,?N*8+86H
ENDM
JR MACRO ?N ;;JUMP RELATIVE
@CHECK ?N
DB 18H,?DD
ENDM
JMPR MACRO ?N ;;JUMP RELATIVE AS ABOVE
@CHECK ?N
DB 18H,?DD
ENDM
JRC MACRO ?N ;;JUMP RELATIVE ON CARRY
@CHECK ?N
DB 38H,?DD
ENDM
JRNC MACRO ?N ;;JUMP RELATIVE ON NOT CARRY
@CHECK ?N
DB 30H,?DD
ENDM
JRZ MACRO ?N ;;JUMP RELATIVE ON ZERO
@CHECK ?N
DB 28H,?DD
ENDM
JRNZ MACRO ?N ;;JUMP RELATIVE ON NOT ZERO
@CHECK ?N
DB 20H,?DD
ENDM
DJNZ MACRO ?N ;;DEC B AND JUMP RELATIVE ON B NOT ZERO
@CHECK ?N
DB 10H,?DD
ENDM
PCIX MACRO ;;MOV IX INTO PROGRAM COUNTER
DB 0DDH,0E9H
ENDM
PCIY MACRO ;;MOV IY INTO PROGRAM COUNTER
DB 0FDH,0E9H
ENDM
RETI MACRO ;;RETURN FROM INTERRUPT (EI NOT ENABLED)
DB 0EDH,4DH
ENDM
RETN MACRO ;;RETURN FROM NON-MASKABLE INTERRUPT
DB 0EDH,45H
ENDM
RETEI MACRO ;;RETURN FROM INTERRUPT (EI ENABLED)
DB EI,0EDH,4DH
ENDM
INP MACRO ?R ;;GO TO INPUT PORT (SPECIFIED BY REG C)
DB 0EDH,?R*8+40H ;; AND LOAD INTO REG R
ENDM
OUTP MACRO ?R ;;OUTPUT TO PORT (SPECIFIED BY REG C)
DB 0EDH,?R*8+41H ;; FROM REG R
ENDM
INI MACRO ;;LOAD MEMORY (H,L) WITH INPUT PORT
DB 0EDH,0A2H ;; (SPECIFIED BY REG C) INC H,L DEC B
ENDM
INIR MACRO ;;AS ABOVE REPEAT UNTIL B=0
DB 0EDH,0B2H
ENDM
IND MACRO ;;LOAD MEMORY (H,L) WITH INPUT PORT
DB 0EDH,0AAH ;; (SPECIFIED BY REG C) DEC H,L DEC B
ENDM
INDR MACRO ;;AS ABOVE REPEAT UNTIL B=0
DB 0EDH,0BAH
ENDM
OUTI MACRO ;;OUTPUT TO PORT (SPECIFIED BY REG C)
DB 0EDH,0A3H ;; FROM MEMORY (H,L) INC H,L DEC B
ENDM
OUTIR MACRO ;;AS ABOVE REPEAT UNTIL B=0
DB 0EDH,0B3H
ENDM
OUTD MACRO ;;OUTPUT TO PORT (SPECIFIED BY REG C)
DB 0EDH,0ABH ;; FROM MEMORY (H,L) DEC H,L DEC B
ENDM
OUTDR MACRO ;;AS ABOVE REPEAT UNTIL B=0
DB 0EDH,0BBH
ENDM
RLCR MACRO ?R ;;ROTATE LEFT CIRCULAR REG R
DB 0CBH, 00H + ?R
ENDM
RLCX MACRO ?D ;;ROTATE LEFT CIRCULAR CONTENTS OF MEMORY
;; AT (IX+D)
@CHK ?D
DB 0DDH, 0CBH, ?D, 06H
ENDM
RLCY MACRO ?D ;;ROTATE LEFT CIRCULAR CONTENTS OF MEMORY
;; AT (IY+D)
@CHK ?D
DB 0FDH, 0CBH, ?D, 06H
ENDM
RALR MACRO ?R ;;ROTATE ARITHMETIC LEFT REG R
DB 0CBH, 10H+?R
ENDM
RALX MACRO ?D ;;ROTATE ARITHMETIC LEFT CONTENTS OF MEMORY
;; AT (IX+D)
@CHK ?D
DB 0DDH, 0CBH, ?D, 16H
ENDM
RALY MACRO ?D ;;ROTATE ARITHMETIC LEFT CONTENTS OF MEMORY
;; AT (IY+D)
@CHK ?D
DB 0FDH, 0CBH, ?D, 16H
ENDM
RRCR MACRO ?R ;;ROTATE RIGHT CIRCULAR REG R
DB 0CBH, 08H + ?R
ENDM
RRCX MACRO ?D ;;ROTATE RIGHT CIRCULAR CONTENTS OF MEMORY
;; AT (IX+D)
@CHK ?D
DB 0DDH, 0CBH, ?D, 0EH
ENDM
RRCY MACRO ?D ;;ROTATE RIGHT CIRCULAR CONTENTS OF MEMORY
;; AT (IY+D)
@CHK ?D
DB 0FDH, 0CBH, ?D, 0EH
ENDM
RARR MACRO ?R ;;ROTATE ARITHMETIC RIGHT REG R
DB 0CBH, 18H + ?R
ENDM
RARX MACRO ?D ;;ROTATE ARITHMETIC RIGHT CONTENTS OF MEMORY
;; AT (IX+D)
@CHK ?D
DB 0DDH, 0CBH, ?D, 1EH
ENDM
RARY MACRO ?D ;;ROTATE ARITHMETIC RIGHT CONTENTS OF MEMORY
;; AT (IY+D)
@CHK ?D
DB 0FDH, 0CBH, ?D, 1EH
ENDM
SLAR MACRO ?R ;;SHIFT LEFT ARITHMETIC REG R
DB 0CBH, 20H + ?R
ENDM
SLAX MACRO ?D ;;SHIFT LEFT ARITHMETIC CONTENTS OF MEMORY
;; AT(IX+D)
@CHK ?D
DB 0DDH, 0CBH, ?D, 26H
ENDM
SLAY MACRO ?D ;;SHIFT LEFT ARITHMETIC CONTENTS OF MEMORY
;; AT (IY+D)
@CHK ?D
DB 0FDH, 0CBH, ?D, 26H
ENDM
SRAR MACRO ?R ;;SHIFT RIGHT ARITHMETIC REG R
DB 0CBH, 28H+?R
ENDM
SRAX MACRO ?D ;;SHIFT RIGHT ARITHMETIC CONTENTS OF MEMORY
;; AT (IX+D)
@CHK ?D
DB 0DDH, 0CBH, ?D, 2EH
ENDM
SRAY MACRO ?D ;;SHIFT RIGHT ARITHMETIC CONTENTS OF MEMORY
;; AT (IY+D)
@CHK ?D
DB 0FDH, 0CBH, ?D, 2EH
ENDM
SRLR MACRO ?R ;;SHIFT RIGHT LOGICALLY REG R
DB 0CBH, 38H + ?R
ENDM
SRLX MACRO ?D ;;SHIFT RIGHT LOGICALLY CONTENTS OF MEMORY
;; AT (IX+D)
@CHK ?D
DB 0DDH, 0CBH, ?D, 3EH
ENDM
SRLY MACRO ?D ;;SHIFT RIGHT LOGICALLY CONTENTS OF MEMORY
;; AT (IY+D)
@CHK ?D
DB 0FDH, 0CBH, ?D, 3EH
ENDM
RLD MACRO ;;ROTATE NIBBLE LEFT & RIGHT BETWEEN ACC
DB 0EDH, 6FH ;; AND CONTENTS AT (H,L)
ENDM
RRD MACRO ;;ROTATE NIBBLE RIGHT & LEFT BETWEEN ACC
DB 0EDH, 67H ;; AND CONTENTS AT (H,L)
ENDM