Wishlist of extended instructions for the Z80 ============================================= mdfs.net/Docs/Comp/Z80/WishList J.G.Harston - 26-Jun-2004 Sometime in about 1985 or 1986, Greg Heslington and I put together a list of additional instructions that it would be useful if the Z80 had. We worked out that almost all of them could be actually assembled to Z80 code by an assembler that understood the additional instructions, for instance, by defining macros. 8-bit data movement ------------------- LD r,A LD r,F LD r,B LD r,C LD r,D LD r,E LD r,H LD r,L LD r,IXL LD r,IXH LD r,IYL LD r,IYH LD A,n LD F,n LD B,n LD C,n LD D,n LD E,n LD H,n LD L,n LD IXL,n LD IXH,n LD IYL,n LD IYH,n LD r,(AF+n) LD r,(BC+n) LD r,(DE+n) LD r,(HL+n) LD r,(IX+n) LD r,(IY+n) LD r,(SP+n) LD r,(PC+n) LD (AF+n),r LD (BC+n),r LD (DE+n),r LD (HL+n),r LD (IX+n),r LD (IY+n),r LD (SP+n),r LD (PC+n),r LD A,(nn) LD F,(nn) LD B,(nn) LD C,(nn) LD D,(nn) LD E,(nn) LD H,(nn) LD L,(nn) LD IXL,(nn) LD IXH,(nn) LD IYL,(nn) LD IYH,(nn) LD (nn),A LD (nn),F LD (nn),B LD (nn),C LD (nn),D LD (nn),E LD (nn),H LD (nn),L LD (nn),IXL LD (nn),IXH LD (nn),IYL LD (nn),IYH 16-bit data movement -------------------- LD rr,AF LD rr,BC LD rr,DE LD rr,HL LD rr,IX LD rr,IY LD rr,SP LD rr,PC LD AF,nn LD BC,nn LD DE,nn LD HL,nn LD IX,nn LD IY,nn LD SP,nn LD PC,nn LD rr,(AF+n) LD rr,(BC+n) LD rr,(DE+n) LD rr,(HL+n) LD rr,(IX+n) LD rr,(IY+n) LD rr,(SP+n) LD rr,(PC+n) LD (AF+n),rr LD (BC+n),rr LD (DE+n),rr LD (HL+n),rr LD (IX+n),rr LD (IY+n),rr LD (SP+n),rr LD (PC+n),rr LD AF,(nn) LD BC,(nn) LD DE,(nn) LD HL,(nn) LD IX,(nn) LD IY,(nn) LD SP,(nn) LD PC,(nn) LD (nn),AF LD (nn),BC LD (nn),DE LD (nn),HL LD (nn),IX LD (nn),IY LD (nn),SP LD (nn),PC PUSH AF PUSH BC PUSH DE PUSH HL PUSH IX PUSH IY PUSH SP PUSH PC POP AF POP BC POP DE POP HL POP IX POP IY POP SP POP PC 8-bit arithmetic ---------------- alu r,A alu r,F alu r,B alu r,C alu r,D alu r,E alu r,H alu r,L alu r,IXL alu r,IXH alu r,IYL alu r,IYH alu A,n alu F,n alu B,n alu C,n alu D,n alu E,n alu H,n alu L,n alu IXL,n alu IXH,n alu IYL,n alu IYH,n alu r,(AF+n) alu r,(BC+n) alu r,(DE+n) alu r,(HL+n) alu r,(IX+n) alu r,(IY+n) alu r,(SP+n) alu r,(PC+n) alu A,(nn) alu F,(nn) alu B,(nn) alu C,(nn) alu D,(nn) alu E,(nn) alu H,(nn) alu L,(nn) alu IXL,(nn) alu IXH,(nn) alu IYL,(nn) alu IYH,(nn) rot A rot F rot B rot C rot D rot E rot H rot L rot IXL rot IXH rot IYL rot IYH rot (AF+n) rot (BC+n) rot (DE+n) rot (HL+n) rot (IX+n) rot (IY+n) rot (SP+n) rot (PC+n) rot (nn) INC/DEC A INC/DEC F INC/DEC B INC/DEC C INC/DEC D INC/DEC E INC/DEC H INC/DEC L INC/DEC IXL INC/DEC IXH INC/DEC IYL INC/DEC IYH INC/DEC (AF+n) INC/DEC (BC+n) INC/DEC (DE+n) INC/DEC (HL+n) INC/DEC (IX+n) INC/DEC (IY+n) INC/DEC (SP+n) INC/DEC (PC+n) INC/DEC (nn) 16-bit arithmetic ----------------- alu rr,AF alu rr,BC alu rr,DE alu rr,HL alu rr,IX alu rr,IY alu rr,SP alu rr,PC alu AF,nn alu BC,nn alu DE,nn alu HL,nn alu IX,nn alu IY,nn alu SP,nn alu PC,nn alu rr,(AF) alu rr,(BC) alu rr,(DE) alu rr,(HL) alu rr,(IX) alu rr,(IY) alu rr,(SP) alu rr,(PC) alu AF,(nn) alu BC,(nn) alu DE,(nn) alu HL,(nn) alu IX,(nn) alu IY,(nn) alu SP,(nn) alu PC,(nn) rot AF rot BC rot DE rot HL rot IX rot IY rot SP rot PC rot (AF) rot (BC) rot (DE) rot (HL) rot (IX) rot (IY) rot (SP) rot (PC) rot (nn) INC/DEC AF INC/DEC BC INC/DEC DE INC/DEC HL INC/DEC IX INC/DEC IY INC/DEC SP INC/DEC PC INC/DEC (AF) INC/DEC (BC) INC/DEC (DE) INC/DEC (HL) INC/DEC (IX) INC/DEC (IY) INC/DEC (SP) INC/DEC (PC) INC/DEC (nn) Bit operations -------------- bit b,A bit b,F bit b,B bit b,C bit b,D bit b,E bit b,H bit b,L bit b,IXL bit b,IXH bit b,IYL bit b,IYH bit b,(AF+n) bit b,(BC+n) bit b,(DE+n) bit b,(HL+n) bit b,(IX+n) bit b,(IY+n) bit b,(SP+n) bit b,(PC+n) bit b,(nn) Exchanges --------- EX r,A EX r,F EX r,B EX r,C EX r,D EX r,E EX r,H EX r,L EX r,IXL EX r,IXH EX r,IYL EX r,IYH EX r,(AF+n) EX r,(BC+n) EX r,(DE+n) EX r,(HL+n) EX r,(IX+n) EX r,(IY+n) EX r,(SP+n) EX r,(PC+n) EX r,(nn) EX rr,AF EX rr,BC EX rr,DE EX rr,HL EX rr,IX EX rr IY EX rr,SP EX rr,PC EX rr,(AF+n) EX rr,(BC+n) EX rr,(DE+n) EX rr,(HL+n) EX rr,(IX+n) EX rr,(IY+n) EX rr,(SP+n) EX rr,(PC+n) EX rr,(nn) Program control --------------- CALL cc,AF CALL cc,BC CALL cc,DE CALL cc,HL CALL cc,IX CALL cc,IY CALL cc,SP CALL cc,PC CALL cc,(AF+n) CALL cc,(BC+n) CALL cc,(DE+n) CALL cc,(HL+n) CALL cc,(IX+n) CALL cc,(IY+n) CALL cc,(SP+n) CALL cc,(PC+n) CALL cc,nn CALL cc,(nn) CALL AF CALL BC CALL DE CALL HL CALL IX CALL IY CALL SP CALL PC CALL (AF+n) CALL (BC+n) CALL (DE+n) CALL (HL+n) CALL (IX+n) CALL (IY+n) CALL (SP+n) CALL (PC+n) CALL nn CALL (nn) JP cc,AF JP cc,BC JP cc,DE JP cc,HL JP cc,IX JP cc,IY JP cc,SP JP cc,PC JP cc,(AF+n) JP cc,(BC+n) JP cc,(DE+n) JP cc,(HL+n) JP cc,(IX+n) JP cc,(IY+n) JP cc,(SP+n) JP cc,(PC+n) JP cc,nn JP cc,(nn) JP rr - alias for LD PC,rr JP (rr) - alias for LD PC,(rr) JP nn - alias for LD PC,nn JP (nn) - alias for LD PC,(nn) JR cc,nn JR nn RET cc RET - alias for POP PC Block Copy/Search ----------------- LDI LDD LDIR LDDR CPI CPD CPIR CPDR Input/Output ------------ IN r,(AF) IN r,(BC) IN r,(DE) IN r,(HL) IN r,(IX) IN r,(IY) IN r,(SP) IN r,(PC) OUT (AF),r OUT (BC),r OUT (DE),r OUT (HL),r OUT (IX),r OUT (IY),r OUT (SP),r OUT (PC),r IN A,(nn) IN F,(nn) IN B,(nn) IN C,(nn) IN D,(nn) IN E,(nn) IN H,(nn) IN L,(nn) IN IXL,(nn) IN IXH,(nn) IN IYL,(nn) IN IYH,(nn) OUT (nn),A OUT (nn),F OUT (nn),B OUT (nn),C OUT (nn),D OUT (nn),E OUT (nn),H OUT (nn),L OUT (nn),IXL OUT (nn),IXH OUT (nn),IYL OUT (nn),IYH INI IND INIR INDR OTI OTD OTIR OTDR Misc ---- SCF CCF NEG CPL LD r,R LD R,r LD r,I LD I,r DJNZ RST nn RETN RETI RLD RRD EX AF,AF' EXX EI DI IM m DAA NOP Registers ALU Operations Bit Operations ========= ============== ============== r rr alu rot bit ------------ ------------- ------ A AF ADD RLC BIT F BC ADC RRC RES B DE SUB RL SET C HL SBC RR D IX AND SLA E IY XOR SRA H SP OR SLS L PC CP SRL IXL IXH XYL XYH