;*************************************************************************
; F
; Ready-to-Use Modules in asm
;
; "68HC11 Like" Instruction Set
;
; (F) Copywrong 1997, f@POBoxes.com
;
; Filename : HC11LIKE.MAC
; Programmer : Frans Gunawan (92101710)
; Desription : Some "68HC11 Like" Instruction Set
; History :
; Version Comment
; 1.0sx Translated for use in the Ubicom SX processors
; 1.0 Support
; ---------------------
; July 22 adddIMM
; 1997 beq
; bne
; decEXT
; incEXT
; incX
; incY
; ldwIMM
; ldwEXT
; ldwINDX
; ldwINDY
; lddIMM
; lddDIR
; lddEXT
; ldxIMM
; ldxDIR
; ldxEXT
; ldyIMM
; ldyDIR
; ldyEXT
; stwEXT
; stwINDX
; stwINDY
; stdDIR
; stdEXT
; stdINDX
; stdINDY
; xgdx
; xgdy
;---------------------------------
; 1.0b abx
; July 23 ldabDIR
; 1997
;---------------------------------
; 1.0c ldabIMM
; August 02 ldaaIMM
; 1997
;---------------------------------
; 1.0d cpxIMM
; August 16 cpyIMM
; 1997 cpdIMM
;
; WARNING: these instructions are not 100% portable, i.e. status bit
;*************************************************************************
;*************************************************************************
; macro
;*************************************************************************
movlf MACRO FILE, LITERAL
mov W, #LITERAL
mov FILE, W
ENDM
longcall MACRO SUBROUTINE
MOVPF WREG, TEMP_W
mov W, #HIGH SUBROUTINE
MOVPF WREG, PCLATH
call @LOW SUBROUTINE
ENDM
longgoto MACRO ADDRESS
mov W, #HIGH ADDRESS
;*** WARNING: PCLATH register bits are in STATUS PAx bits. Or use PAGE/IREAD if possible
; MOVWF PCLATH
mov PCLATH, W
mov W, #LOW ADDRESS
mov PC, W
ENDM
abx MACRO
MOVFP REGB, WREG
add (REGX+1), W
mov W, #$00
ADDWFC REGX
ENDM
; A jmp
; h l
;------------+
;A+h+c B+l
;
adddIMM MACRO WORD
mov W, #LOW WORD
add REGB, W
mov W, #HIGH WORD
ADDWFC REGA
ENDM
beq MACRO JUMP
snb ALUSTA.Z
jmp JUMP
ENDM
bne MACRO JUMP
sb ALUSTA.Z
jmp JUMP
ENDM
; cpx result is in Zero bit
; this instruction is followed by beq or bne
; ex: ldxIMM 0x1234
; cpxIMM 0x1234
; beq same
; no:
; same:
cpxIMM MACRO WORD
LOCAL cpx_exit
LOCAL same
local not_same
mov W, #LOW WORD
CPFSEQ (REGX+1)
jmp not_same
mov W, #HIGH WORD
CPFSEQ REGX
jmp not_same
same: setb ALUSTA.Z
jmp cpx_exit
not_same: clrb ALUSTA.Z
cpx_exit: ; jmp cpx_exit
ENDM
cpyIMM MACRO WORD
LOCAL cpy_exit
LOCAL same
LOCAL not_same
mov W, #LOW WORD
CPFSEQ (REGY+1)
jmp not_same
mov W, #HIGH WORD
CPFSEQ REGY
jmp not_same
same: setb ALUSTA.Z
jmp cpy_exit
not_same: clrb ALUSTA.Z
cpy_exit: ; jmp cpy_exit
ENDM
cpdIMM MACRO WORD
LOCAL cpd_exit
LOCAL same
LOCAL not_same
mov W, #LOW WORD
CPFSEQ REGB
jmp not_same
mov W, #HIGH WORD
CPFSEQ REGA
jmp not_same
same: setb ALUSTA.Z
jmp cpd_exit
not_same: clrb ALUSTA.Z
cpd_exit: ; jmp cpd_exit
ENDM
decEXT MACRO TARGET
ldwEXT TARGET
dec WREG
stwEXT TARGET
ENDM
incEXT MACRO TARGET
ldwEXT TARGET
inc WREG
stwEXT TARGET
ENDM
incX MACRO
mov W, #$01
add (REGX+1), W
mov W, #$00
ADDWFC REGX
ENDM
incY MACRO
mov W, #$01
add (REGY+1), W
mov W, #$00
ADDWFC REGY
ENDM
ldabDIR MACRO SOURCE
MOVFP SOURCE, WREG
MOVPF WREG, REGB
ENDM
ldwIMM MACRO DATA
mov W, #DATA
ENDM
ldwEXT MACRO SOURCE ; External RAM
mov W, #HIGH SOURCE
mov TBLPTRH, W
mov W, #LOW SOURCE
mov TBLPTRL, W
TABLRD 0,0,WREG ;DUMMY
TLRD 0,WREG
ENDM
ldwINDX MACRO ; (REGX) -> WREG
MOVFP REGX, WREG
mov TBLPTRH, W
MOVFP (REGX+1), WREG
mov TBLPTRL, W
TABLRD 0, 0, WREG ; DUMMY
TLRD 0, WREG ; HIGH
ENDM
ldwINDY MACRO ; (REGY) -> WREG
MOVFP REGY, WREG
mov TBLPTRH, W
MOVFP (REGY+1), WREG
mov TBLPTRL, W
TABLRD 0, 0, WREG ; DUMMY
TLRD 0, WREG ; HIGH
ENDM
ldabIMM MACRO DATA
mov W, #DATA
mov REGB, W
ENDM
ldaaIMM MACRO DATA
mov W, #DATA
mov REGA, W
ENDM
lddIMM MACRO WORD ; load Immediate
mov W, #HIGH WORD
mov REGA, W
mov W, #LOW WORD
mov REGB, W
ENDM
lddDIR MACRO SOURCE
MOVFP SOURCE, WREG
MOVPF WREG, REGA
MOVFP (SOURCE+1), WREG
MOVPF WREG, REGB
ENDM
lddEXT MACRO SOURCE
mov W, #HIGH SOURCE
mov TBLPTRH, W
mov W, #LOW SOURCE
mov TBLPTRL, W
TABLRD 0, 1, WREG ; DUMMY
TLRD 0, REGA ; HIGH
TABLRD 0, 0, WREG ; DUMMY
TLRD 0, REGB ; LOW
ENDM
ldxIMM MACRO WORD ; load Immediate
mov W, #HIGH WORD
mov REGX, W
mov W, #LOW WORD
mov (REGX+1), W
ENDM
ldxDIR MACRO SOURCE
MOVFP SOURCE, WREG
MOVPF WREG, REGX
MOVFP (SOURCE+1), WREG
MOVPF WREG, (REGX+1)
ENDM
ldxEXT MACRO SOURCE
mov W, #HIGH SOURCE
mov TBLPTRH, W
mov W, #LOW SOURCE
mov TBLPTRL, W
TABLRD 0, 1, WREG ; DUMMY
TLRD 0, REGX ; HIGH
TABLRD 0, 0, WREG ; DUMMY
TLRD 0, (REGX+1) ; LOW
ENDM
ldyIMM MACRO WORD ; load Immediate
mov W, #HIGH WORD
mov REGY, W
mov W, #LOW WORD
mov (REGY+1), W
ENDM
ldyDIR MACRO SOURCE
MOVFP SOURCE, WREG
MOVPF WREG, REGY
MOVFP (SOURCE+1), WREG
MOVPF WREG, (REGY+1)
ENDM
ldyEXT MACRO SOURCE
mov W, #HIGH SOURCE
mov TBLPTRH, W
mov W, #LOW SOURCE
mov TBLPTRL, W
TABLRD 0, 1, WREG ; DUMMY
TLRD 0, REGY ; HIGH
TABLRD 0, 0, WREG ; DUMMY
TLRD 0, (REGY+1) ; LOW
ENDM
stwEXT MACRO DESTINATION ; External RAM
MOVPF WREG, TEMP_W
mov W, #HIGH DESTINATION
mov TBLPTRH, W
mov W, #LOW DESTINATION
mov TBLPTRL, W
MOVFP TEMP_W, WREG
TABLWT 0, 0, WREG
ENDM
stwINDX MACRO
MOVFP REGX, TBLPTRH
MOVFP (REGX+1), TBLPTRL
TABLWT 0, 0, WREG
ENDM
stwINDY MACRO
MOVFP REGY, TBLPTRH
MOVFP (REGY+1), TBLPTRL
TABLWT 0, 0, WREG
ENDM
stdDIR MACRO DESTINATION
MOVFP REGA, WREG
MOVPF WREG, DESTINATION
MOVFP REGB, WREG
MOVPF WREG, (DESTINATION+1)
ENDM
stdEXT MACRO DESTINATION ; External RAM
mov W, #HIGH DESTINATION
mov TBLPTRH, W
mov W, #LOW DESTINATION
mov TBLPTRL, W
TABLWT 0, 1, REGA
TABLWT 0, 0, REGB
ENDM
stdINDX MACRO
MOVFP REGX, TBLPTRH
MOVFP (REGX+1), TBLPTRL
TABLWT 0, 1, REGA
TABLWT 0, 0, REGB
ENDM
stdINDY MACRO
MOVFP REGY, TBLPTRH
MOVFP (REGY+1), TBLPTRL
TABLWT 0, 1, REGA
TABLWT 0, 0, REGB
ENDM
xgdx MACRO
MOVFP REGA, WREG
MOVPF WREG, TEMP_W
MOVFP REGX, WREG
MOVPF WREG, REGA
MOVFP TEMP_W, WREG
MOVPF WREG, REGX
MOVFP REGB, WREG
MOVPF WREG, TEMP_W
MOVFP (REGX+1), WREG
MOVPF WREG, REGB
MOVFP TEMP_W, WREG
MOVPF WREG, (REGX+1)
ENDM
xgdy MACRO
MOVFP REGA, WREG
MOVPF WREG, TEMP_W
MOVFP REGY, WREG
MOVPF WREG, REGA
MOVFP TEMP_W, WREG
MOVPF WREG, REGY
MOVFP REGB, WREG
MOVPF WREG, TEMP_W
MOVFP (REGY+1), WREG
MOVPF WREG, REGB
MOVFP TEMP_W, WREG
MOVPF WREG, (REGY+1)
ENDM
; END OF FILE
| file: /Techref/scenix/68HC11.htm, 11KB, , updated: 2001/12/10 16:00, local time: 2025/10/24 21:43,
owner: JMN-EFP-786,
216.73.216.180,10-8-63-169:LOG IN
|
| ©2025 These pages are served without commercial sponsorship. (No popup ads, etc...).Bandwidth abuse increases hosting cost forcing sponsorship or shutdown. This server aggressively defends against automated copying for any reason including offline viewing, duplication, etc... Please respect this requirement and DO NOT RIP THIS SITE. Questions? <A HREF="http://www.massmind.org/Techref/scenix/68HC11.htm"> Use these macros to program the SX with a '68HC11 like' instruction set</A> |
| Did you find what you needed? |
Welcome to massmind.org! |
Welcome to www.massmind.org! |
.