; ; Z80 ASSEMBLER TEST INSTRUCTION FILE ; ORG 100H ; ORG 100H LABEL EQU $ ; LABEL EQU $ SYSENV EQU 0FE00H ; ENVIRONMENT ADDRESS DISP EQU 05H ; IX, IY DISPLACEMENT DEFW LABEL ; DEFW LABEL = DW LABEL DEFB 03FH ; DEFB 03FH = DB 03FH DEFB 'THIS IS A TEST' ; DEFB 'THIS IS A TEST' = DB 'THIS IS A TEST' DEFS 55 ; DEFS 55 = DS 55 ; ; THE HEX NUMBERS MUST BE IN PAIRS AND MUST NOT HAVE 'H' AFTER THEM ; THE ASCII STRINGS CAN INCLUDE ANY CHARACTERS (INCLUDING QUOTES AND ; SEMI-COLONS EXCEPT NO COMMAS ; IF NOT GOOD IBM 'ASCII FIRST,0DFF,THEN HEX ELSE IBM 'ASCII SECOND,0DFF,AFTER HEX ENDIF ; SOP MACRO ?D,?N ; TEST MACRO DEFB 'MACRO TEST' MEND ; SOP ; ADC (HL) ; ADC (HL) = ADC M ADC A,(HL) ; ADC A,(HL) = ADC M ADC (IX+DISP) ; ADC (IX+DISP) = ADCX DISP ADC A,(IX+DISP) ; ADC A,(IX+DISP) = ADCX DISP ADC (IY+DISP) ; ADC (IX+DISP) = ADCY DISP ADC A,(IY+DISP) ; ADC A,(IY+DISP) = ADCY DISP ADC A ; ADC A = ADC A ADC B ; ADC B = ADC B ADC A,A ; ADC A,A = ADC A ADC A,B ; ADC A,B = ADC B ADC BYTE ; ADC BYTE = ACI BYTE ADC A,BYTE ; ADC A,BYTE = ACI BYTE ADC A,0FFH ; ADC A,0FFH = ACI 0FFH ADC HL,BC ; ADC HL,BC = DADC BC ADC HL,DE ; ADC HL,DE = DADC DE ADC HL,HL ; ADC HL,HL = DADC HL ADC HL,SP ; ADC HL,SP = DADC SP ADD (HL) ; ADD (HL) = ADD M ADD A,(HL) ; ADD A,(HL) = ADD M ADD (IX+DISP) ; ADD (IX+DISP) = ADDX DISP ADD A,(IX+DISP) ; ADD A,(IX+DISP) = ADDX DISP ADD (IY+DISP) ; ADD (IY+DISP) = ADDY DISP ADD A,(IY+DISP) ; ADD A,(IY+DISP) = ADDY DISP ADD A ; ADD A = ADD A ADD A,A ; ADD A,A = ADD A ADD B ; ADD B = ADD B ADD A,B ; ADD A,B = ADD B ADD A,BYTE ; ADD A,BYTE = ADI BYTE ADD A,0FFH ; ADD A,0FFH = ADI 0FFH ADD HL,BC ; ADD HL,BC = DAD B ADD HL,DE ; ADD HL,DE = DAD D ADD HL,HL ; ADD HL,HL = DAD H ADD HL,SP ; ADD HL,SP = DAD SP ADD IX,BC ; ADD IX,BC = DADX BC ADD IX,DE ; ADD IX,DE = DADX DE ADD IX,IX ; ADD IX,IX = DADX IX ADD IX,SP ; ADD IX,SP = DADX SP ADD IY,BC ; ADD IY,BC = DADY BC ADD IY,DE ; ADD IY,DE = DADY DE ADD IY,IY ; ADD IY,IY = DADY IY ADD IY,SP ; ADD IY,SP = DADY SP AND (HL) ; AND (HL) = ANA M AND A,(HL) ; AND A,(HL) = ANA M AND (IX+DISP) ; AND (IX+DISP) = ANDX DISP AND A,(IX+DISP) ; AND A,(IX+DISP) = ANDX DISP AND (IY+DISP) ; AND (IY+DISP) = ANDY DISP AND A,(IY+DISP) ; AND A,(IY+DISP) = ANDY DISP AND A ; AND A = ANA A AND A,A ; AND A,A = ANA A AND B ; AND B = ANA B AND A,B ; AND A,B = ANA B AND BYTE ; AND BYTE = ANI BYTE AND A,BYTE ; AND A,BYTE = ANI BYTE AND 0FFH ; AND 0FFH = ANI 0FFH AND A,0FFH ; AND A,0FFH = ANI 0FFH BIT 5,(HL) ; BIT 5,(HL) = BIT 5,M BIT 5,(IX+DISP) ; BIT 5,(IX+DISP) = BITX 5,DISP BIT 5,(IY+DISP) ; BIT 5,(IY+DISP)= BITY 5,DISP BIT 3,A ; BIT 3,A = BIT 3,A BIT 5,E ; BIT 5,E = BIT 5,E BIT b,C ; BIT b,C = BIT b,C CALL LABEL ; CALL LABEL = CALL LABEL CALL C,LABEL ; CALL C,LABEL = CC LABEL CALL M,LABEL ; CALL M,LABEL = CM LABEL CALL NC,LABEL ; CALL NC,LABEL = CNC LABEL CALL NZ,LABEL ; CALL NZ,LABEL = CNZ LABEL CALL P,LABEL ; CALL P,LABEL = CP LABEL CALL PE,LABEL ; CALL PE,LABEL = CPE LABEL CALL PO,LABEL ; CALL PO,LABEL = CPO LABEL CALL Z,LABEL ; CALL Z,LABEL = CZ LABEL CCF ; CCF = CMC CP (HL) ; CP (HL) = CMP M CP (IX+DISP) ; CP (IX+DISP) = CMPX DISP CP (IY+DISP) ; CP (IY+DISP) = CMPY DISP CP A ; CP A = CMP A CP A,A ; CP A,A = CMP A CP B ; CP B = CMP B CP A,B ; CP A,B = CMP B CP BYTE ; CP BYTE = CPI BYTE CP 5 ; CP 5 = CPI 5 CPI ; CPI = CCI CPIR ; CPIR = CCIR CPD ; CPD = CCD CPDR ; CPDR = CCDR CPL ; CPL = CMA DAA ; DAA = DAA DEC BC ; DEC BC = DCX B DEC DE ; DEC DE = DCX D DEC HL ; DEC HL = DCX H DEC SP ; DEC SP = DCX SP DEC IX ; DEC IX = DCXIX DEC IY ; DEC IY = DCXIY DEC (HL) ; DEC (HL) = DCR M DI ; DI = DI DJNZ 5 ; DJNZ 5 = DJNZ 5 EI ; EI = EI EX AF,AF' ; EX AF,AF' = EXAF EX DE,HL ; EX DE,HL = XCHG EX (SP),HL ; EX (SP),HL = XTHL EX (SP),IX ; EX (SP),IX = XTIX EX (SP),IY ; EX (SP),IY = XTIY EXX ; EXX = EXX HALT ; HALT = HLT IM0 ; IM0 = IM0 IM1 ; IM1 = IM1 IM2 ; IM2 = IM2 IM 0 ; IM 0 = IM0 IN A,(03H) ; IN A,(03H) = IN 03H IN B,(C) ; IN B,(C) = INP B INC A ; INC A = INR A INC BC ; INC BC = INX B INC DE ; INC DE = INX D INC HL ; INC HL = INX H INC SP ; INC SP = INX SP INC IX ; INC IX = INXIX INC IY ; INC IY = INXIY INC (HL) ; INC (HL) = INR M INC (IX+3) ; INC (IX+3) = INRX 3 INC (IY+DISP) ; INC (IY+DISP) = INRY DISP IND ; IND = IND INDR ; INDR = INDR INI ; INI = INI INIR ; INIR = INIR JP LABEL ; JP LABEL = JMP LABEL JP C,LABEL ; JP C,LABEL = JC LABEL JP M,LABEL ; JP M,LABEL = JM LABEL JP NC,LABEL ; JP NC,LABEL = JNC LABEL JP NZ,LABEL ; JP NZ,LABEL = JNZ LABEL JP P,LABEL ; JP P,LABEL = JP LABEL JP PE,LABEL ; JP PE,LABEL = JPE LABEL JP PO,LABEL ; JP PO,LABEL = JPO LABEL JP Z,LABEL ; JP Z,LABEL = JZ LABEL JP (HL) ; JP (HL) = PCHL JP (IX) ; JP (IX) = PCIX JP (IY) ; JP (IY) = PCIY JR +6 ; JR +6 = JR +6 JR C,5 ; JR C,5 = JRC 5 JR NC,5 ; JR NC,5 = JRNC 5 JR NZ,5 ; JR NZ,5 = JRNZ 5 JR Z,5 ; JR Z,5 = JRZ 5 LD A,B ; LD A,B = MOV A,B LD A,I ; LD A,I = LDAI LD A,R ; LD A,R = LDAR LD I,A ; LD I,A = STAI LD R,A ; LD R,A = STAR LD A,0FFH ; LD A,0FFH = MVI A,0FFH LD A,(BC) ; LD A,(BC) = LDAX B LD A,(DE) ; LD A,(DE) = LDAX D LD A,(HL) ; LD A,(HL) = MOV A,M LD A,(IX+DISP) ; LD A,(IX+DISP) = LDX A,DISP LD A,(IY+6) ; LD A,(IY+6) = LDY A,6 LD A,(LABEL) ; LD A,(LABEL) = LDA LABEL LD B,C ; LD B,C = MOV B,C LD B,0FFH ; LD B,0FFH = MVI B,0FFH LD B,(HL) ; LD B,(HL) = MOV B,M LD B,(IX+DISP) ; LD B,(IX+DISP) = LDX B,DISP LD B,(IY+6) ; LD B,(IY+6) = LDY B,6 LD (HL),B ; LD (HL),B = MOV M,B LD (HL),(HL) ; LD (HL),(HL) = MOV M,M LD (IX+DISP),B ; LD (IX+DISP),B = STX B,DISP LD (IY+DISP),B ; LD (IY+DISP),B = STY B,DISP LD (HL),23 ; LD (HL),23 = MVI M,23 LD (IX+1),24 ; LD (IX+1),24 = MVIX 24,1 LD (IY+1),25 ; LD (IY+1),25 = MVIY 25,1 LD (BC),A ; LD (BC),A = STAX B LD (DE),A ; LD (DE),A STAX D LD (LABEL),A ; LD (LABEL),A = STA LABEL LD BC,LABEL ; LD BC,LABEL = LXI B,LABEL LD DE,LABEL ; LD DE,LABEL = LXI D,LABEL LD HL,LABEL ; LD HL,LABEL = LXI H,LABEL LD SP,LABEL ; LD SP,LABEL = LXI SP,LABEL LD IX,LABEL ; LD IX,LABEL = LXIX LABEL LD IY,LABEL ; LD IY,LABEL = LXIY LABEL LD BC,(LABEL) ; LD BC,(LABEL) = LBCD LABEL LD DE,(LABEL) ; LD DE,(LABEL) = LDED LABEL LD HL,(LABEL) ; LD HL,(LABEL) = LHLD LABEL LD SP,(LABEL) ; LD SP,(LABEL) = LSPD LABEL LD IX,(LABEL) ; LD IX,(LABEL) = LIXD LABEL LD IY,(LABEL) ; LD IY,(LABEL) = LIYD LABEL LD (LABEL),HL ; LD (LABEL),HL = SHLD LABEL LD (LABEL),BC ; LD (LABEL),BC = SBCD LABEL LD (LABEL),DE ; LD (LABEL),DE = SDED LABEL LD (LABEL),SP ; LD (LABEL),SP = SSPD LABEL LD (LABEL),IX ; LD (LABEL),IX = SIXD LABEL LD (LABEL+(2*3)),IX ; LD (LABEL+(2*3)),IX LD (LABEL),IY ; LD (LABEL),IY = SIYD LABEL LD SP,HL ; LD SP,HL = SPHL LD SP,IX ; LD SP,IX = SPIX LD SP,IY ; LD SP,IY = SPIY LDI ; LDI = LDI LDIR ; LDIR = LDIR LDD ; LDD = LDD LDDR ; LDDR = LDDR NEG ; NEG = NEG NOP ; NOP = NOP OR A ; OR A = ORA A OR A,A ; OR A,A = ORA A OUT (034H),A ; OUT (034H),A = OUT 034H OUT (C),E ; OUT (C),E = OUTP E OUTI ; OUTI = OUTI OTIR ; OTIR = OUTIR OUTD ; OUTD = OUTD OTDR ; OTDR = OUTDR POP BC ; POP BC = POP B POP DE ; POP DE = POP D POP HL ; POP HL = POP H POP IX ; POP IX = POPIX POP IY ; POP IY = POPIY POP AF ; POP AF = POP PSW PUSH BC ; PUSH BC = PUSH B PUSH DE ; PUSH DE = PUSH D PUSH HL ; PUSH HL = PUSH H PUSH AF ; PUSH AF = PUSH PSW PUSH IX ; PUSH IX = PUSHIX PUSH IY ; PUSH IY = PUSHIY RES 4,E ; RES 4,E = RES 4,E RES 4,(HL) ; RES 4,(HL) = RES 4,M RET ; RET = RET RET NZ ; RET NZ = RNZ RET PO ; RET PO = RPO RET Z ; RET Z = RZ RETI ; RETI = RETI RETN ; RETN = RETN RL B ; RL B = RALR B RLA ; RLA = RAL RLC B ; RLC B = RLCR B RLC (HL) ; RLC (HL) = RLCR M RLC (IX+DISP) ; RLC (IX+DISP) = RLCX DISP RLC (IY+4) ; RLC (IY+4) = RLCY 4 RLCA ; RLCA = RLC RLD ; RLD = RLD RR B ; RR B = RARR B RRA ; RRA = RAR RRC B ; RRC B = RRCR B RRCA ; RRCA = RRC RRD ; RRD = RRD RST 38H ; RST 38H = RST 7 SBC A ; SBC A = SBB A SBC A,A ; SBC A,A = SBB A SBC HL,DE ; SBC HL,DE = DSBC DE SCF ; SCF = STC SET 4,B ; SET 4,B = SETB 4,B SET 4,(HL) ; SET 4,(HL) = SETB 4,M SET 4,(IX+DISP) ; SET 4,(IX+DISP) = SETX 4,DISP SET 4,(IY+4) ; SET 4,(IY+4) = SETY 4,4 SLA B ; SLA B = SLAR B SRA B ; SRA B = SRAR B SRL B ; SRL B = SRLR B SUB A ; SUB A = SUB A SUB 0FFH ; SUB 0FFH = SUI 0FFH SUB (HL) ; SUB (HL) = SUB M SUB (IX+DISP) ; SUB (IX+DISP) = SUBX DISP SUB (IY+DISP) ; SUB (IY+DISP) = SUBY DISP SUB A,A ; SUB A,A = SUB A SUB A,0FFH ; SUB A,0FFH = SUI 0FFH SUB A,(HL) ; SUB A,(HL) = SUB M SUB A,(IX+DISP) ; SUB A,(IX+DISP) = SUBX DISP SUB A,(IY+DISP) ; SUB A,(IY+DISP) = SUBY DISP XOR A ; XOR A = XRA A XOR A,A ; XOR A,A = XRA A ; END $ ; END $ ; ; z80 assembler test instruction file ; org 100h ;test org pseudo op label equ $ ;test equ pseudo op defw label ;test defw pseudo op defb 03fh ;test defb pseudo op form 1 defb 'THIS IS A TEST' ;test defb pseudo op form 2 defs 55 ;test defs pseudo op ; ibm 1a0000,top of screen on lear seigler adm3,0d0a0d0a,down 3 lines ; ld a,b ;test load ld a,0ffh ld a,(hl) ld a,(ix+5) ld a,(iy+6) ld b,c ;test load ld b,0ffh ld b,(hl) ld b,(ix+5) ld b,(iy+6) ld (hl),b ld (hl),(hl) ld (ix+5),b ld (iy+5),b ld (hl),23 ld (ix+1),24 ld (iy+1),25 ld (bc),a ld (de),a ld (label),a ld a,(bc) ld a,(de) ld a,(label) ld a,i ld a,r ld i,a ld r,a ld bc,label ld de,label ld hl,label ld sp,label ld ix,label ld iy,label ld bc,(label) ld de,(label) ld hl,(label) ld ix,(label) ld iy,(label) ld (label),hl ld (label),bc ld (label),de ld (label),ix ld (label),iy ld sp,hl ld sp,ix ld sp,iy push bc push de push hl push af push ix push iy pop bc pop de pop hl pop ix pop iy pop af ex de,hl ex af,af' exx ex (sp),hl ex (sp),ix ex (sp),iy ldi ldir ldd lddr cpi cpir cpd cpdr add a add 0ffh add (hl) add (ix+5) add (iy+6) adc a adc 0ffh adc (hl) adc (ix+5) adc (iy+5) sub a sub 0ffh sub (hl) sub (ix+5) sub (iy+5) sbc a and a and 0ffh and (hl) and (ix+5) and (iy+5) or a xor a cp a add a,a add a,0ffh add a,(hl) add a,(ix+5) add a,(iy+6) adc a,a adc a,0ffh adc a,(hl) adc a,(ix+5) adc a,(iy+5) sub a,a sub a,0ffh sub a,(hl) sub a,(ix+5) sub a,(iy+5) sbc a,a and a,a and a,0ffh and a,(hl) and a,(ix+5) and a,(iy+5) or a,a xor a,a cp a,a inc a inc (hl) inc (ix+3) inc (iy+5) dec (hl) add hl,bc adc hl,de sbc hl,de add ix,bc add iy,de inc bc inc de inc hl inc sp inc ix inc iy dec bc dec de dec hl dec sp dec ix dec iy rlca rla rrca rra rlc b rlc (hl) rlc (ix+5) rlc (iy+4) rl b rrc b rr b sla b sra b srl b rld rrd daa cpl neg ccf scf nop halt di ei im0 im1 im2 im 0 bit 5,e bit 5,(hl) bit 5,(ix+5) bit 5,(iy+4) set 4,b set 4,(hl) set 4,(ix+5) set 4,(iy+4) res 4,e res 4,(hl) jp label jp nz,label jp z,label jp nc,label jp c,label jp po,label jp pe,label jp p,label jp m,label jr +6 jr c,5 jr nc,5 jr z,5 jr nz,5 jp (hl) jp (ix) jp (iy) djnz 5 call label call nz,label call z,label call po,label call pe,label ret ret nz ret z ret po reti retn rst 38h in a,(03h) in b,(c) ini inir ind indr out (034h),a out (c),e outi otir outd otdr MULT:; UNSIGNED SIXTEEN BIT INTEGER MULTIPLY. ; ON ENTRANCE: MULTIPLIER IN DE. ; MULTIPLICAND IN HL. ; ; ON EXIT: RESULT IN HL. ; ; REGISTER USES: ; ; ; H HIGH ORDER PARTIAL RESULT ; L LOW ORDER PARTIAL RESULT ; D HIGH ORDER MULTIPLICAND ; E LOW ORDER MULTIPLICAND ; B COUNTER FOR NUMBER OF SHIFTS ; C HIGH ORDER BITS OF MULTIPLIER ; A LOW ORDER BITS OF MULTIPLIER ; LD B,16; NUMBER OF BITS- INITIALIZE LD C,D; MOVE MULTIPLIER LD A,E; LD X,Y ;SHOULD GET 'U' ERROR LOAD A,B ;SHOULD GET 'O' ERROR CP 'A' ;TEST 'X' FORMAT EX DE,HL; MOVE MULTIPLICAND LD HL,0; CLEAR PARTIAL RESULT EJECT ;TEST EJECT PROCESSING MLOOP: SRL C; SHIFT MULTIPLIER RIGHT RRA; LEAST SIGNIFICANT BIT IS IN CARRY JR NC,NOADD-$; IF NO CARRY SKIP THE ADD ADD HL,DE; ELSE ADD MULTIPLICAND TO PARTIAL RESULT NOADD: EX DE,HL; SHIFT MULTIPLICAND LEFT ADD HL,HL; BY MULTIPLYING IT BY TWO EX DE,HL; DJNZ MLOOP-$; REPEAT UNTIL NO MORE BITS RET; END; ; ; LABEL: LD (LABEL),A ; COMMENT ld (lAbel),A ; comment LD (laBel),a ; comment ; LD (HL),B ;comment LD A,B ;comment LD (HL),0 ; COMMENT ; IN A,LABEL in A,03H ; JP PO,LABEL jp PO,Label JP po,lABLE ; ADD A,A ADD A,B add a,b ; or a,b OR A,B ; ELSE ENDIF ; LD (LABEL),HL ; COMMENT ld (lAbel),HL ; comment LD (laBel),hl ; comment ; ******************************************************** ;******************************************************* ; longlines: db 'A very long line that should be truncated after column ..... 80 85 90 95 100 105 110 115 120 125 130 135 140' db 'A very long line that should be truncated after column ..... 80 85 90 95 100 105 110 115 120 125 130 135 140' file: eX (SP),HL ; comment 25 EX dE,HL ; comment 25 ; comment 25 longname ; comment 33 longname ; comment 41 longname:: xor a ; comment 25 longname::scf ; comment 25 longname:: scf longname scf longname scf ; elab:: ld hl,(nnnnnnnnnnNnn); comment 35 longname:scf longname: scf short1::scf ;comment short: ; comment 9 short ; comment 9 ; comment 9 label scf!scf! scf ; comment 25 label scf ! scf !scf ; comment 25 daa ; comment 17 end ; comment 17 end $