mirror of
https://github.com/SEPPDROID/Digital-Research-Source-Code.git
synced 2025-10-23 00:14:25 +00:00
631 lines
14 KiB
Plaintext
631 lines
14 KiB
Plaintext
;;
|
|
;; Z-80 MACRO LIBRARY
|
|
;;
|
|
;; THE FOLLOWING MACROS ENABLE ASSEMBLING Z-80 INSTRUCTIONS
|
|
;; WITH THE DIGITAL RESEARCH MACRO ASSEMBLER.
|
|
;;
|
|
;; INVOKE WITH "MACLIB Z80"
|
|
;;
|
|
;;
|
|
;; Macro's added to support Z80 Opcodes by Garry Kraemer - Senior Software Engineer
|
|
;;
|
|
;;
|
|
;; MACRO FORMATS
|
|
;; ----- -------
|
|
;;
|
|
;;
|
|
;; MACRO ZILOG TDL
|
|
;; ----- ----- ---
|
|
;;
|
|
;; LDX R,D LD R,(IX+D) MOV R,D(IX)
|
|
;; LDY R,D LD R,(IY+D) MOV R,D(IY)
|
|
;; STX R,D LD (IX+D),R MOV D(IX),R
|
|
;; STY R,D LD (IY+D),R MOV D(IY),R
|
|
;; MVIX NN,D LD (IX+D),NN MVI D(IX)
|
|
;; MVIY NN,D LD (IY+D),NN MVI D(IY)
|
|
;; LDAI LD A,I LDAI
|
|
;; LDAR LD A,R LDAR
|
|
;; STAI LD I,A STAI
|
|
;; STAR LD R,A STAR
|
|
;; LXIX NNNN LD IX,NNNN LXI IX,NNNN
|
|
;; LXIY NNNN LD IY,NNNN LXI IY,NNNN
|
|
;; LBCD NNNN LD BC,(NNNN) LBCD NNNN
|
|
;; LDED NNNN LD DE,(NNNN) LDED NNNN
|
|
;; LSPD NNNN LD SP,(NNNN) LSPD NNNN
|
|
;; LIXD NNNN LD IX,(NNNN) LIXD NNNN
|
|
;; LIYD NNNN LD IY,(NNNN) LIYD NNNN
|
|
;; SBCD NNNN LD (NNNN),BC SBCD NNNN
|
|
;; SDED NNNN LD (NNNN),DE SDED NNNN
|
|
;; SSPD NNNN LD (NNNN),SP SSPD NNNN
|
|
;; SIXD NNNN LD (NNNN),IX SIXD NNNN
|
|
;; SIYD NNNN LD (NNNN),IY SIYD NNNN
|
|
;; SPIX LD SP,IX SPIX
|
|
;; SPIY LD SP,IY SPIY
|
|
;; PUSHIX PUSH IX PUSH IX
|
|
;; PUSHIY PUSH IY PUSH IY
|
|
;; POPIX POP IX POP IX
|
|
;; POPIY POP IY POP IY
|
|
;; EXAF EX AF,AF' EXAF
|
|
;; EXX EXX EXX
|
|
;; XTIX EX (SP),IX XTIX
|
|
;; XTIY EX (SP),IY XTIY
|
|
;; LDI LDI LDI
|
|
;; LDIR LDIR LDIR
|
|
;; LDD LDD LDD
|
|
;; LDDR LDDR LDDR
|
|
;; CCI CPI CCI
|
|
;; CCIR CPIR CCIR
|
|
;; CCD CPD CCD
|
|
;; CCDR CPDR CCDR
|
|
;; ADDX D ADD (IX+D) ADD D(IX)
|
|
;; ADDY D ADD (IY+D) ADD D(IY)
|
|
;; ADCX D ADC (IX+D) ADC D(IX)
|
|
;; ADCY D ADC (IY+D) ADC D(IY)
|
|
;; SUBX D SUB (IX+D) SUB D(IX)
|
|
;; SUBY D SUB (IY+D) SUB D(IY)
|
|
;; SBCX D SBC (IX+D) SBB D(IX)
|
|
;; SBCY D SBC (IY+D) SBB D(IY)
|
|
;; ANDX D AND (IX+D) ANA D(IX)
|
|
;; ANDY D AND (IY+D) ANA D(IY)
|
|
;; XORX D XOR (IX+D) XRA D(IX)
|
|
;; XORY D XOR (IY+D) XRA D(IY)
|
|
;; ORX D OR (IX+D) ORA D(IX)
|
|
;; ORY D OR (IY+D) ORA D(IY)
|
|
;; CMPX D CP (IX+D) CMP D(IX)
|
|
;; CMPY D CP (IY+D) CMP D(IY)
|
|
;; INRX D INC (IX+D) INR D(IX)
|
|
;; INRY D INC (IY+D) INR D(IY)
|
|
;; DCRX D INC (IX+D) INR D(IX)
|
|
;; DCRY D DEC (IY+D) DCR D(IY)
|
|
;; NEG NEG NEG
|
|
;; IM0 IM0 IM0
|
|
;; IM1 IM1 IM1
|
|
;; IM2 IM2 IM2
|
|
;; DADC RR ADC HL,RR DADC RR
|
|
;; DSBC RR SBC HL,RR DSBC RR
|
|
;; DADX RR ADD IX,RR DADX RR
|
|
;; DADY RR ADD IY,RR DADY RR
|
|
;; INXIX INC IX INX IX
|
|
;; INXIY INC IY INX IY
|
|
;; DCXIX DEC IX DCX IX
|
|
;; DCXIY DEC IY DCX IY
|
|
;; BIT B,R BIT B,R BIT B,R
|
|
;; SETB B,R SET B,R SET B,R
|
|
;; RES B,R RES B,R RES B,R
|
|
;; BITX B,D BIT B,(IX+D) BIT B,D(IX)
|
|
;; BITY B,D BIT B,(IY+D) BIT B,D(IY)
|
|
;; SETX B,D SET B,(IX+D) SET B,D(IX)
|
|
;; SETY B,D SET B,(IY+D) SET B,D(IY)
|
|
;; RESX B,D RES B,(IX+D) RES B,D(IX)
|
|
;; RESY B,D RES B,(IY+D) RES B,D(IY)
|
|
;; JR ADDR JR ADDR-$ JMPR ADDR
|
|
;; JRC ADDR JR C,ADDR-$ JRC ADDR
|
|
;; JRNC ADDR JR NC,ADDR-$ JRNC ADDR
|
|
;; JRZ ADDR JR Z,ADDR-$ JRC ADDR
|
|
;; JRNZ ADDR JR NZ,ADDR-$ JRNZ ADDR
|
|
;; DJNZ ADDR DJNZ ADDR-$ DJNZ ADDR
|
|
;; PCIX JMP (IX) PCIX
|
|
;; PCIY JMP (IY) PCIY
|
|
;; RETI RETI RETI
|
|
;; RETN RETN RETN
|
|
;; INP R IN R,(C) INP R
|
|
;; OUTP R OUT (C),R OUTP R
|
|
;; INI INI INI
|
|
;; INIR INIR INIR
|
|
;; OUTI OTI OUTI
|
|
;; OUTIR OTIR OUTIR
|
|
;; IND IND IND
|
|
;; INDR INDR INDR
|
|
;; OUTD OTD OUTD
|
|
;; OUTDR OTDR OUTDR
|
|
;; RLCR R RLC R RLCR R
|
|
;; RLCX D RLC (IX+D) RLCR D(IX)
|
|
;; RLCY D RLC (IY+D) RLCR D(IY)
|
|
;; RALR R RL R RALR R
|
|
;; RALX D RL (IX+D) RALR D(IX)
|
|
;; RALY D RL (IY+D) RALR D(IY)
|
|
;; RRCR R RRC R RRCR R
|
|
;; RRCX D RRC (IX+D) RRCR D(IX)
|
|
;; RRCY D RRC (IY+D) RRCR D(IY)
|
|
;; RARR R RR R RARR R
|
|
;; RARX D RR (IX+D) RARR D(IX)
|
|
;; RARY D RR (IY+D) RARR D(IY)
|
|
;; SLAR R SLA R SLAR R
|
|
;; SLAX D SLA (IX+D) SLAR D(IX)
|
|
;; SLAY D SLA (IY+D) SLAR D(IY)
|
|
;; SRAR R SRA R SRAR R
|
|
;; SRAX D SRA (IX+D) SRAR D(IX)
|
|
;; SRAY D SRA (IY+D) SRAR D(IY)
|
|
;; SRLR R SRL R SRLR R
|
|
;; SRLX D SRL (IX+D) SRLR D(IX)
|
|
;; SRLY D SRL (IY+D) SRLR D(IY)
|
|
;; RLD RLD RLD
|
|
;; RRD RRD 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
|
|
|