Вы находитесь на странице: 1из 32

SAWTOOTH WAVEFORM GENERRATION

.MMREGS
.TEXT
START:
LDP #120H
LACC #0H ;change lower amplitude
SACL 0
LOOP: LACC 0
OUT 0,04H
ADD #05h ;change frequency
SACL 0
SUB #0FFFh ;change upper amplitude
BCND LOOP,LEQ
B START
.END
SINE WAVEFORM GENERATION

INCFREQ .set 10 ;minimum value 1 - change for increasing frequency


;every count will increase frequency in steps of 100hz
DECFREQ .set 0 ;minimu value 0 - change for decreasing frequency
;every count will decrease frequency by half
LENGTH .set 360
AMPLITUDE .set 5
delay .set 7 ;change to increase/decrease frequency in
;different steps;
TEMP .set 0
TEMP1 .set 1

.mmregs
.text
START:
LDP #100H
SPLK #TABLE,TEMP ;load start address of table
lar AR2,#( (LENGTH/INCFREQ)+(LENGTH*DECFREQ) )-1
lar ar3,#DECFREQ ;repeat counter for reducing frequency
CONT:
CALL DELAY
LACC TEMP ;load address of sine value
TBLR TEMP1 ;read sine data to TEMP1

LT TEMP1
MPY #AMPLITUDE
PAC
SACL TEMP1

mar *,ar3
banz repeat,*-
lar ar3,#DECFREQ ;repeat counter for reducing frequency
LACC TEMP
ADD #INCFREQ ;increase table value
repeat:
SACL TEMP ;store it
OUT TEMP1,4 ;send sine data to DAC
MAR *,AR2
BANZ CONT,*-
b START
DELAY:
lar ar7,#delay
mar *,ar7
back: banz back,*-
ret
TABLE

.word .word .word


100 137 169
.word .word .word
101 139 170
.word .word .word
103 140 171
.word .word .word
105 142 173
.word .word .word
106 143 174
.word .word .word
108 145 175
.word .word .word
110 146 176
.word .word .word
112 148 177
.word .word .word
113 150 178
.word .word .word
115 151 179
.word .word .word
117 152 180
.word .word .word
119 154 181
.word .word .word
120 155 182
.word .word .word
122 157 183
.word .word .word
124 158 184
.word .word .word
125 160 185
.word .word .word
127 161 186
.word .word .word
129 162 187
.word .word .word
130 164 188
.word .word .word
132 165 189
.word .word .word
134 166 189
.word .word .word
135 168 190
.word .word .word
191 200 191
.word .word .word
192 199 190
.word .word .word
192 199 189
.word .word .word
193 199 189
.word .word .word
193 199 188
.word .word .word
194 199 187
.word .word .word
195 199 186
.word .word .word
195 199 185
.word .word .word
196 199 184
.word .word .word
196 198 183
.word .word .word
197 198 182
.word .word .word
197 198 181
.word .word .word
197 197 180
.word .word .word
198 197 179
.word .word .word
198 197 178
.word .word .word
198 196 177
.word .word .word
199 196 176
.word .word .word
199 195 175
.word .word .word
199 195 174
.word .word .word
199 194 173
.word .word .word
199 193 171
.word .word .word
199 193 170
.word .word .word
199 192 169
.word .word .word
199 192 168
.word .word .word
166 130 89
.word .word .word
165 129 87
.word .word .word
164 127 86
.word .word .word
162 125 84
.word .word .word
161 124 82
.word .word .word
160 122 80
.word .word .word
158 120 79
.word .word .word
157 119 77
.word .word .word
155 117 75
.word .word .word
154 115 74
.word .word .word
152 113 72
.word .word .word
151 112 70
.word .word .word
149 110 69
.word .word .word
148 108 67
.word .word .word
146 106 65
.word .word .word
145 105 64
.word .word .word
143 103 62
.word .word .word
142 101 60
.word .word .word
140 99 59
.word .word .word
139 98 57
.word .word .word
137 96 56
.word .word .word
135 94 54
.word .word .word
134 93 53
.word .word .word
132 91 51
.word .word .word
49 19 2
.word .word .word
48 18 1
.word .word .word
47 17 1
.word .word .word
45 16 1
.word .word .word
44 15 0
.word .word .word
42 14 0
.word .word .word
41 13 0
.word .word .word
39 12 0
.word .word .word
38 11 0
.word .word .word
37 10 0
.word .word .word
35 10 0
.word .word .word
34 9 0
.word .word .word
33 8 0
.word .word .word
31 7 0
.word .word .word
30 7 0
.word .word .word
29 6 0
.word .word .word
28 6 0
.word .word .word
26 5 0
.word .word .word
25 4 0
.word .word .word
24 4 0
.word .word .word
23 3 0
.word .word .word
22 3 1
.word .word .word
21 2 1
.word .word .word
20 2 1
.word .word .word
2 19 50
.word .word .word
2 20 51
.word .word .word
2 21 53
.word .word .word
3 22 54
.word .word .word
3 23 56
.word .word .word
4 24 57
.word .word .word
4 25 59
.word .word .word
5 26 60
.word .word .word
6 28 62
.word .word .word
6 29 64
.word .word .word
7 30 65
.word .word .word
7 31 67
.word .word .word
8 33 69
.word .word .word
9 34 70
.word .word .word
10 35 72
.word .word .word
10 37 74
.word .word .word
11 38 75
.word .word .word
12 39 77
.word .word .word
13 41 79
.word .word .word
14 42 80
.word .word .word
15 44 82
.word .word .word
16 45 84
.word .word .word
17 47 86
.word .word .word
18 48 87
.word .word .word
89 94 100
.word .word .end
91 96
.word .word
93 98

SQUARE WAVEFORM GENERATION

.mmregs
.text
start:
ldp #100h
lacc #0fffh ;change this value for amplitude.
loop: sacl 0
rpt #0ffh ;change this value for frequency.
out 0,04 ;address for dac.
cmpl
b loop
.end
TRIANGULAR WAVEFORM GENERATION

AMPLITUDE .SET 4
FREQ .SET 350

TEMP .SET 0
;
.mmregs
.text
START:
LDP #100H
splk #0,TEMP
CONT1:
lar AR2,#FREQ
CONT:
out TEMP,4
LACC TEMP
ADD #AMPLITUDE
SACL TEMP
MAR *,AR2
BANZ CONT,*-

LAR AR2,#FREQ
CONTx:
OUT TEMP,4
LACC TEMP
SUB #AMPLITUDE
SACL TEMP
MAR *,AR2
BANZ CONTx
B CONT1
.end

FFT
.mmregs
.text
START:
lar ar0,#0A200h
lar ar1,#3
ldp #140h
lar ar0,#2
lar ar1,#3
lar ar3,#0A200h
lar ar4,#8100h
loop1:
mar *,ar3
lacc *BR0+
mar *,ar4
sacl *+,ar1
banz loop1,*-
lar ar1,#3
lar ar4,#8100h
lar ar5,#0b000h
loop2:
mar *,ar4
lacc *+,ar5
sacl *+
lacc #0
sacl *+,ar1
banz loop2,*-
; fft operation starts here
lar ar1,#08100h ; twiddle
mar *,ar1
lacc #twiddle
rpt #5
tblr *+
lar ar1,#08100h ; twiddle
lar ar6,#0d000h
lar ar7,#0b000h
lar ar5,#1h
next:
lar ar2,#03h
lar ar0,#08000h
incop:
mar *,ar7
lacc *+,ar0
sacl *+,ar2
banz incop,*-
call butterfly
mar *,ar5
banz next,*-
lar ar6,#0d000h
lar ar7,#0b000h
lar ar2,#07h
incop1:
mar *,ar6
lacc *+,ar7
sacl *+,ar2
banz incop1,*-
lar ar1,#08100h ; twiddle
mar *,ar1
adrk #02
lar ar6,#0d000h
lar ar7,#0b000h
lar ar5,#1h
lar ar2,#1h
lar ar0,#08000h
incop2:
mar *,ar7
lacc *+,ar0
sacl *+,ar2
banz incop2,*-
mar *,ar7
adrk #2
lacc *+,ar0
sacl *+
lacc *+,ar0
sacl *+
call butterfly
lar ar2,#0d000h
lar ar0,#0e000h
mar *,ar2
lacc *+,ar0
sacl *+,ar2
lacc *+,ar0
sacl *+
adrk #2
mar *,ar2
lacc *+,ar0
sacl *+,ar2
lacc *+,ar0
sacl *+,ar2
; second stage 2 : 1
lar ar1,#08100h ; twiddle
mar *,ar1
adrk #04
lar ar6,#0d000h
lar ar7,#0b000h
lar ar0,#08000h
mar *,ar7
adrk #2
lacc *+,ar0
sacl *+,ar7
lacc *+,ar0
sacl *+,ar7
mar *,ar7
adrk #2
lacc *+,ar0
sacl *+
lacc *+,ar0
sacl *+
call butterfly
lar ar2,#0d000h
lar ar0,#0e000h
mar *,ar0
adrk #2
mar *,ar2
lacc *+,ar0
sacl *+,ar2
lacc *+,ar0
sacl *+
adrk #2
mar *,ar2
lacc *+,ar0
sacl *+,ar2
lacc *+,ar0
sacl *+,ar2
hlt b hlt
butterfly:
lar ar0,#08000h ; input
lar ar2,#08200h ; temp
lar ar3,#08300h ; output
ldp #140h
mar *,ar0
adrk #2
lt *+,ar1 ; c
mpy *+,ar2 ; tr
pac
sacl *+,ar0 ; ctr
lt *+,ar1 ; d
mpy *+,ar2 ; ti
pac
sacl *+,ar0 ; dti
sbrk #2
mar *,ar1
sbrk #2
mar *,ar0
lt *+,ar1 ; c
adrk #1
mpy *-,ar2 ; ti
pac
sacl *+,ar0 ; cti
lt *+,ar1 ; d
mpy *,ar2 ; tr
pac
sacl *+,ar0 ; dtr
sbrk #4 ; points to a
mar *,ar2
sbrk #4 ; points to ct array
lacc *+ ; ctr
sub *+ ; dti
sacl 0 ; ctr - dti
lacc *+ ; cti
add *+ ; dtr
sacl 1 ; cti + dtr
sbrk #4 ; points to ct array
lacc *+ ; ctr
sub *+ ; dti
sacl 2 ; ctr - dti
lacc *+ ; cti
add *+ ; dtr
sacl 3 ; cti + dtr
lar ar0,#08000h ; input
mar *,ar0
lacc *+,ar3 ; a
add 0 ;0
sacl *+,ar0 ; a + 0
lacc *+,ar3 ; b
add 1 ;1
sacl *+,ar0 ; b + 1
sbrk #2
lacc *+,ar3 ; a
sub 2 ;2
sacl *+,ar0 ; a - 2
lacc *+,ar3
sub 3
sacl *+
lar ar3,#08300h
lar ar4,#03
copy:
mar *,ar3
lacc *+,ar6
sacl *+,ar4
banz copy,*-
ret
twiddle:
.word 1
.word 0
.word 1
.word 0
.word 0
.word 0ffffh
INPUT:
; A200 - 0000
; A201 - 0001
; A202 - 0002
; A203 - 0003
;
OUTPUT:
; E000 - 0006
; E001 - 0000
; E002 - FFFE
; E003 - 0002
; E004 - FFFE
; E005 - 0000
; E006 - FFFE
; E007 - FFFE
FIR
BAND PASS
.mmregs
.text
B START
CTABLE:
.word 024AH
.word 010FH
.word 0FH
.word 0FFECH
.word 0C6H
.word 0220H
.word 0312H
.word 02D3H
.word 012FH
.word 0FEBDH
.word 0FC97H
.word 0FBCBH
.word 0FCB0H
.word 0FE9EH
.word 029H
.word 0FFDCH
.word 0FD11H
.word 0F884H
.word 0F436H
.word 0F2A0H
.word 0F58AH
.word 0FD12H
.word 075FH
.word 01135H
.word 01732H
.word 01732H
.word 01135H
.word 075FH
.word 0FD12H
.word 0F58AH
.word 0F2A0H
.word 0F436H
.word 0F884H
.word 0FD11H
.word 0FFDCH
.word 029H
.word 0FE9EH
.word 0FCB0H
.word 0FBCBH
.word 0FC97H
.word 0FEBDH
.word 012FH
.word 02D3H
.word 0312H
.word 0220H
.word 0C6H
.word 0FFECH
.word 0FH
.word 010FH
.word 024AH
START:
MAR *,AR0
LAR AR0,#0200H
RPT #33H
BLKP CTABLE,*+
SETC CNF
ISR: LDP #0AH
LACC #0
SACL 0
OUT 0,05
IN 0,06H
LAR AR7,#0
MAR *,AR7
BACK: BANZ BACK,*-
IN 0,4
NOP
NOP
NOP
NOP
MAR *,AR1
LAR AR1,#0300H
LACC 0
AND #0FFFH
SUB #800H
SACL *
LAR AR1,#333H
MPY #0
ZAC
RPT #33H
MACD 0FF00H,*-
APAC
LAR AR1,#0300H
SACH *
LACC *
ADD #800H
SACL *
OUT *,4
LACC #0FFH
SACL 0
OUT 0,05
NOP
B ISR
.end

BAND REJECT
.mmregs
.text
B START
CTABLE:
.word 0FEB9H
.word 14EH
.word 0FDA1H
.word 155H
.word 0FE1BH
.word 282H
.word 0FEAFH
.word 2ACH
.word 0FD35H
.word 8DH
.word 0F9D9H
.word 0FE07H
.word 0F7CCH
.word 0FEE2H
.word 0FA2FH
.word 4BAH
.word 1AH
.word 25CH
.word 420H
.word 1008H
.word 89H
.word 0D61H
.word 0F3F2H
.word 0AF9H
.word 0DB7EH
.word 045DFH
.word 045DFH
.word 0DB7EH
.word 0AF9H
.word 0F3F2H
.word 0D61H
.word 89H
.word 1008H
.word 420H
.word 25CH
.word 1AH
.word 4BAH
.word 0FA2FH
.word 0FEE2H
.word 0F7CCH
.word 0FE07H
.word 0F9D9H
.word 8DH
.word 0FD35H
.word 2ACH
.word 0FEAFH
.word 282H
.word 0FE1BH
.word 155H
.word 0FDA1H
.word 14EH
.word 0FEB9H
START:
MAR *,AR0
LAR AR0,#0200H
RPT #33H
BLKP CTABLE,*+
SETC CNF
ISR: LDP #0AH
LACC #0
SACL 0
OUT 0,05
IN 0,06H
LAR AR7,#0
MAR *,AR7
BACK: BANZ BACK,*-
IN 0,4
NOP
NOP
NOP
NOP
MAR *,AR1
LAR AR1,#0300H
LACC 0
AND #0FFFH
SUB #800H
SACL *
LAR AR1,#333H
MPY #0
ZAC
RPT #33H
MACD 0FF00H,*-
APAC
LAR AR1,#0300H
SACH
LACC
ADD #800H
SACL *
OUT *,4
LACC #0FFH
SACL 0
OUT 0,05
NOP
B ISR
.end

HIGH PASS
.mmregs
.text
B START
CTABLE:

.word 0FCD3H
.word 05H

.word 0FCB9H

.word 087H

.word 0FD3FH

.word 01ADH
.word 0FE3DH

.word 0333H

.word 0FF52H

.word 04ABH

.word 0FFF8H
.word 0595H

.word 0FFACH

.word 0590H

.word 0FE11H

.word 047CH

.word 0FB0BH

.word 029DH

.word 0F6BAH

.word 0AEH

.word 0F147H

.word 01CH

.word 0E9FDH

.word 04C5H

.word 0D882H

.word 044BCH

.word 044BCH

.word 0D882H

.word 04C5H

.word 0E9FDH

.word 01CH

.word 0F147H

.word 0AEH

.word 0F6BAH

.Word 029DH

.word 0FB0BH

.word 047CH

.word 0FE11H

.word 0590H

.word 0FFACH
.word 0595H

.word 0FFF8H

.word 04ABH

.word 0FF52H

.word 0333H

.word 0FE3DH

.word 01ADH

.word 0FD3FH

.word 087H

.word 0FCB9H

.word 05H

.word 0FCD3H

START:
MAR *,AR0
LAR AR0,#0200H
RPT #33H
BLKP CTABLE,*+
SETC CNF
ISR: LDP #0AH
LACC #0
SACL 0
OUT 0,05 ;pulse to find sampling frequency
IN 0,06H
LAR AR7,#0 ;change value to modify sampling
freq.
MAR *,AR7
BACK: BANZ BACK,*-
IN 0,4
NOP
NOP
NOP
NOP
MAR *,AR1
LAR AR1,#0300H
LACC 0
AND #0FFFH
SUB #800H
SACL *
LAR AR1,#333H
MPY #0
ZAC
RPT #33H
MACD 0FF00H,*-
APAC
LAR AR1,#0300H
SACH *
LACC *
ADD #800H
SACL *
OUT *,4
LACC #0FFH
SACL 0
OUT 0,05
NOP
B ISR
.end

LOW PASS
.mmregs
.text
B START
CTABLE:
.word 0FFE7H
.word 0FFD3H
.word 0FFC6H
.word 0FFC4H
.word 0FFD0H
.word 0FFECH
.word 018H
.word 051H
.word 08CH
.word 0B9H
.word 0C2H
.word 092H
.word 01AH
.word 0FF5FH
.word 0FE78H
.word 0FD9AH
.word 0FD10H
.word 0FD30H
.word 0FE42H
.word 071H
.word 03B5H
.word 07CAH
.word 0C34H
.word 01054H
.word 01387H
.word 01547H
.word 01547H
.word 01387H
.word 01054H
.word 0C34H
.word 07CAH
.word 03B5H
.word 071H
.word 0FE42H
.word 0FD30H
.word 0FD10H
.word 0FD9AH
.word 0FE78H
.word 0FF5FH
.word 01AH
.word 092H
.word 0C2H
.word 0B9H
.word 08CH
.word 051H
.word 018H
.word 0FFECH
.word 0FFD0H
.word 0FFC4H
.word 0FFC6H
.word 0FFD3H
.word 0FFE7H
START:
MAR *,AR0
LAR AR0,#0200H
RPT #33H
BLKP CTABLE,*+
SETC CNF
ISR: LDP #0AH
LACC #0
SACL 0
OUT 0,05
IN 0,06H
LAR AR7,#0
MAR *,AR7
BACK: BANZ BACK,*-
IN 0,4
NOP
NOP
NOP
NOP
MAR *,AR1
LAR AR1,#0300H
LACC 0
AND #0FFFH
SUB #800H
SACL *
LAR AR1,#333H
MPY #0
ZAC
RPT #33H
MACD 0FF00H,*-
APAC
LAR AR1,#0300H
SACH *
LACC *
ADD #800h
SACL *
OUT *,4
LACC #0FFH
SACL 0
OUT 0,05
NOP
B ISR
.end

LINEAR CONVOLUTION
.mmregs
.text
START:
LDP #100H
LAR AR1,#(8100H+4H) ; x(n)
Input Location (8100h)
ZAC
MAR *,AR1
RPT #2H
SACL *+
LAR AR1,#(8200H+4H)
ZAC
MAR *,AR1
RPT #2H
SACL *+
LAR AR3,#(8300H+6H)
LAR AR4,#06H
Next_YN:
LAR AR1,#8100H
LAR AR2,#(8200H+6H)
LAR AR0,#06H
ZAC
SACL 0H
MAR *,AR1
LT *+,AR2
Loop_MAC:
MPY *-,AR1
LTP *+,AR0
ADD 0H
SACL 0H
BANZ Loop_MAC,*-,AR2
LACC 0H
MAR *,AR3
SACL *-
LAR AR1,#(8100H+6H) ; x(n)
LAR AR2,#5H
LAR AR0,#2H
MAR *,AR1
LACC *-
SACL 1H
Shift_XN:
LACC *+
SACL *0-,AR2
BANZ Shift_XN,*-,AR1
MAR *+
LACC 1H
SACL *,AR4
BANZ Next_YN,*-
NOP
H1: B H1
;INPUT ( x(n) )

; 8100 -1
; 8101 -3
; 8102 -1
; 8103 -3

;INPUT ( y(n) )

; 8200 -1
; 8201 -2
; 8202 -1
; 8203 -0

;OUTPUT ( xy(n) )

; 8300 -1
; 8301 -5
; 8302 -8
; 8303 -8
; 8304 -7
; 8305 -3
; 8306 -0
;---------------------------------------------------
--------------------
; 4 Point FFT
;---------------------------------------------------
--------------------
.mmregs
.text

START:
lar ar0,#0A200h
lar ar1,#3

; fft orgination

ldp #140h
lar ar0,#2
lar ar1,#3
lar ar3,#0A200h
lar ar4,#8100h
loop1:
mar *,ar3
lacc *BR0+
mar *,ar4
sacl *+,ar1
banz loop1,*-

; padding zeros

lar ar1,#3
lar ar4,#8100h
lar ar5,#0b000h
loop2:
mar *,ar4
lacc *+,ar5
sacl *+
lacc #0
sacl *+,ar1
banz loop2,*-

; fft operation starts here

lar ar1,#08100h ; twiddle


mar *,ar1
lacc #twiddle
rpt #5
tblr *+
lar ar1,#08100h ; twiddle

lar ar6,#0d000h
lar ar7,#0b000h
lar ar5,#1h
next:
lar ar2,#03h
lar ar0,#08000h
incop:
mar *,ar7
lacc *+,ar0
sacl *+,ar2
banz incop,*-

call butterfly
mar *,ar5
banz next,*-

;---------------------------------------------------
--------

lar ar6,#0d000h
lar ar7,#0b000h

lar ar2,#07h
incop1:
mar *,ar6
lacc *+,ar7
sacl *+,ar2
banz incop1,*-

;---------------------------------------------------
--------
; second stage twiddle

lar ar1,#08100h ; twiddle


mar *,ar1

adrk #02

lar ar6,#0d000h
lar ar7,#0b000h
lar ar5,#1h

lar ar2,#1h
lar ar0,#08000h
incop2:
mar *,ar7
lacc *+,ar0
sacl *+,ar2
banz incop2,*-

mar *,ar7
adrk #2
lacc *+,ar0
sacl *+
lacc *+,ar0
sacl *+

call butterfly

; second stage first butterfly output correction

lar ar2,#0d000h
lar ar0,#0e000h
mar *,ar2
lacc *+,ar0
sacl *+,ar2
lacc *+,ar0
sacl *+
adrk #2
mar *,ar2
lacc *+,ar0
sacl *+,ar2
lacc *+,ar0
sacl *+,ar2

; second stage 2 : 1

lar ar1,#08100h ; twiddle


mar *,ar1
adrk #04

lar ar6,#0d000h
lar ar7,#0b000h

lar ar0,#08000h
mar *,ar7
adrk #2

lacc *+,ar0
sacl *+,ar7
lacc *+,ar0
sacl *+,ar7

mar *,ar7
adrk #2
lacc *+,ar0
sacl *+
lacc *+,ar0
sacl *+
call butterfly

lar ar2,#0d000h
lar ar0,#0e000h
mar *,ar0
adrk #2
mar *,ar2

lacc *+,ar0
sacl *+,ar2
lacc *+,ar0
sacl *+

adrk #2
mar *,ar2
lacc *+,ar0
sacl *+,ar2
lacc *+,ar0
sacl *+,ar2

hlt b hlt

;---------------------------------------------------
--------

butterfly:

lar ar0,#08000h ; input


lar ar2,#08200h ; temp
lar ar3,#08300h ; output

ldp #140h
mar *,ar0
adrk #2
lt *+,ar1 ; c
mpy *+,ar2 ; tr
pac
sacl *+,ar0 ; ctr

lt *+,ar1 ; d
mpy *+,ar2 ; ti
pac
sacl *+,ar0 ; dti
sbrk #2
mar *,ar1
sbrk #2
mar *,ar0
lt *+,ar1 ; c
adrk #1
mpy *-,ar2 ; ti
pac
sacl *+,ar0 ; cti

lt *+,ar1 ; d
mpy *,ar2 ; tr
pac
sacl *+,ar0 ; dtr

;---------------------------------------------------
--------

sbrk #4 ; points to a
mar *,ar2
sbrk #4 ; points to ct array

lacc *+ ; ctr
sub *+ ; dti
sacl 0 ; ctr - dti

lacc *+ ; cti
add *+ ; dtr
sacl 1 ; cti + dtr

sbrk #4 ; points to ct array

lacc *+ ; ctr
sub *+ ; dti
sacl 2 ; ctr - dti

lacc *+ ; cti
add *+ ; dtr
sacl 3 ; cti + dtr

;---------------------------------------------------
--------

lar ar0,#08000h ; input


mar *,ar0

lacc *+,ar3 ; a
add 0 ; 0
sacl *+,ar0 ; a + 0

lacc *+,ar3 ; b
add 1 ; 1
sacl *+,ar0 ; b + 1

sbrk #2
lacc *+,ar3 ; a
sub 2 ; 2
sacl *+,ar0 ; a - 2

lacc *+,ar3
sub 3
sacl *+

lar ar3,#08300h
lar ar4,#03
copy:
mar *,ar3
lacc *+,ar6
sacl *+,ar4
banz copy,*-
ret

twiddle:
.word 1
.word 0
.word 1
.word 0
.word 0
.word 0ffffh

;---------------------------------------------------
--------------------
;INPUT:
;------
; A200 - 0000
; A201 - 0001
; A202 - 0002
; A203 - 0003
;
;OUTPUT:
;-------
; E000 - 0006
; E001 - 0000
; E002 - FFFE
; E003 - 0002
; E004 - FFFE
; E005 - 0000
; E006 - FFFE
; E007 - FFFE
;
;---------------------------------------------------
--------------------

Вам также может понравиться