Professional Documents
Culture Documents
.............................................................................................................................. 1
.............................................................................................................................. 3
1. .................................................................................................................... 3
2. .................................................................................................................... 4
3. .................................................................................................................... 4
4. .................................................................................................................... 6
5. .................................................................................................................... 6
6. .................................................................................................................... 8
7. .................................................................................................................... 9
8. .................................................................................................................. 11
9. .................................................................................................................. 12
10. ................................................................................................................ 13
11. ................................................................................................................ 15
12. ................................................................................................................ 15
13. ................................................................................................................ 18
..................................................................................................... 19
14. ................................................................................................................ 19
15. ................................................................................................................ 19
16. ................................................................................................................ 20
17. ................................................................................................................ 21
18. ................................................................................................................ 22
19. ................................................................................................................ 25
20. ................................................................................................................ 26
21. ................................................................................................................ 27
22. ................................................................................................................ 30
23. ................................................................................................................ 32
24. ................................................................................................................ 34
25. ................................................................................................................ 36
26. ................................................................................................................ 37
27. ................................................................................................................ 39
28. ................................................................................................................ 39
29. ................................................................................................................ 39
30. ................................................................................................................ 40
31. ................................................................................................................ 41
/ ....................................................................................................................... 42
32. ................................................................................................................ 42
33. ................................................................................................................ 43
34. ................................................................................................................ 43
35. ................................................................................................................ 44
36. ................................................................................................................ 45
37. ................................................................................................................ 47
38. ................................................................................................................ 48
39. ................................................................................................................ 49
40. ................................................................................................................ 50
41. ................................................................................................................ 51
42. ................................................................................................................ 53
1 48
2 48
1.
.
(IV ) 0 256 .
64KB, , 16
, . PER1, PER2 PER3
5678h, 3456h 1234h, . 5, 3 1 IV PER1, PER2
PER3, , ,
.
) 0 5 IV ,
.
)
PC .
) ) .
) .
:
) .
IV
5 for PER1
11
10
4
9
8
3 for PER2
7
6
2
5
4
1 for PER3
3
2
0
1
0
.1
1
0
78h
56h
56h
34h
34h
12h
.1.
) .
. (PC, PSW ) .
:
inta (interrupt acknowledge) ,
IV ,
IV ( IVTP
)
IV PC.
. :
I ( ) PSW ,
T ( ) PSW
L ( ) PSW
.
) ) . ,
. PSW
.
. , . PSW
. , . PSW
. .
) RTI (return from interrupt).
:
3 48
,
PSW
PC .
PSW RTI,
RTI.
2.
4G (gig) 16 . 16 , 32
16 . , , . (IV)
. , PER1, PER2
PER3 3, 5 7 ,
12345678h, 23456789h 3456789h, . 16 0h,
4h 8h, .
) .
) 8 , .
) 5 .
) PER2 ?
) PER2
PER3.
) IV ?
LOAD
OUT
LOAD
OUT
LOAD
OUT
#3
0h
#5
4h
#7
8h
LOAD
STORE
LOAD
STORE
#2345h
11
#6789h
10
)
7
PER3
6
5
PER2
4
3
PER1
2
1
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
) 5
LOAD
STORE
LOAD
STORE
ili:
LOAD
OUT
#3456h
11
#789Ah
10
)64K
#7
4h
3456h
789Ah
2345h
6789h
1234h
5678h
3.
16GB (giga ). 32 ,
. , , . IV (Interrupt Vector)
4 0. , IRQ0 IRQ1,
IRQ1 , PER0 PER1, . PSW I
(Interrupt Enable) 1 L 0
. .
. INTE RTI . PC PSW
. PER0 PER1 02h 04h, .
0 1. PER0 2,
PER1 3. : INC
100h PER0 . 00h
1. () ,
4 48
. 2. PER1, 6. PER0.
. 101h AND #1
, 0. , SP
.
1
2
3
0
000A
4
000A
A00A INTE
0A0A POP
1
000A
5
00A0
A00B INC
0A0B OR #1
2
0A0A
6
000A
A00C RTI
0A0C PUSH
3
A00A
7
000A
0A0D RTI
) PER1 IV ?
) )?
) PER0 IVT.
) .
, , ,
, .
) 5. .
PSW . .
) IVT.
) 2
) LOAD #3; OUT 2
)
0100
INC
1
2
A00A
A00B
INTE
INC
3
4
5
6
7
8
0A0A
0A0B
0A0C
0A0D
A00C
0101
POP
OR #1
PUSH
RTI
RTI
AND #1
9
10
11
12
A00A
A00B
A00C
0102
INTE
INC
RTI
ACC
1
1
1
2
2
XX10b
XX11b
XX11b
XX11b
XX11b
1
1
1
2
2
1
1
1
2
3
3
4
1
5
5
5
-
I
1
0
1
1
0
0
0
0
1
1
1
0
1
1
1
L
0
0
0
0
1
1
1
1
1
0
0
0
0
0
0
PRIRR1
1
-
PRIRR0
1
1
1
1
-
4
0101
I=1, L=0
0101
I=1, L=0
A00C
I=1, L=1
2
0101
I=1, L=0
A00C
I=1, L=0
5
0102
I=1, L=0
3
0101
I=1, L=0
A00C
)
101h
XX10b
5 48
A00Ch
XX11b
->
4.
64 KB. , 16
.
/ , / ,
. 8 0 .
4 IRQ0 IRQ3 , IRQ0
. 4 7 , .
, 0 3 . PSW I
(Interrupt Enable) , INTE (Interrupt
Enable, I 1) INTD (Interrupt Disable, I), L20
. 4 IMR (Interrupt Mask Register) i
IRQi. . IRQ1 IRQ3
PER1 PER3, , .
.
PER1 PER3.
100h 300h, .
) IRQ30 ?
) PER1 .
) PER1 .
INTH1: IN
FF00h
STORE (Dest)+
RTI
STORE ,
? .
) PER1 .
) PER3
PER1, ?
) IRQ0
) .
) INTH1:
LOAD
STORE
LOAD
STORE
INTE
IN
STORE
RTI
#01
0Ah
#00
0Bh
FF00h
(Dest)+
) I 1, IMR bb01 (, b ).
5.
16GB, 32 , 64
. , .
(IV) 4 2h. IRQM
IRQN .
0 1 IV , . . 2 IV
(TRAP), 3 . PSW
I (Interrupt Enable) . PSW PC
. . 32 . INTE, INTD, RTI, TRPE
TRPD . 1, 2,
0 3. INTE 0100h 1. ()
, .
6 48
2. IRQN, 5. IQM.
PSW- 0.
Slika 1
0100h
0101h
0102h
0103h
0104h
0105h
INTE
LOAD #1h
INC
STORE #1h
DEC
INTD
2
1000h INC
1001h PUSH
1002h POP
1003h RTI
1004h LOAD 1h
1005h OR #FFh
1006h
1007h
1008h
1009h
100Ah
100Bh
STORE 1h
RTI
POP
INC
PUSH
RTI
3
0000h 1001h
0001h 100Ah
0002h 1000h
0003h 1004h
0004h 1006h
0005h 1008h
) IRQM IRQN, ?
) , 0100h.
, , ,
, .
) 7. .
PSW I. .
) 1h )?
0
1
2
0100
0101
INTE
LOAD #1
3
4
5
6
7
1004
1005
1006
1007
0102
LOAD 1
OR #FFh
STORE 1
RTI
INC
8
9
10
11
12
13
14
15
16
17
18
1000
1001
1002
1003
0103
1008
1009
100A
100B
0104
0105
INC
PUSH
POP
RTI
STORE #1
POP
INC
PUSH
RTI
DEC
INTD
ACC
?
?
1
1
100A
10FF
10FF
10FF
1100
1100
1101
1101
1101
1101
1101
0103
0104
0104
0104
0103
0103
1
1
1
1
2
2
3
2
4
5
5
6
4
I=1, T=0
0102
I
0
1
1
0
0
0
0
1
1
0
0
0
0
1
0
0
0
0
1
1
0
T
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
PRIRRN
1
-
PRIRRM
1
1
1
-
I=1, T=0
0103
I=1, T=0
I=1, T=0
0103
6
I=1, T=0
0104
I=1, T=0
0103
1101
7 48
)
I=1, T=0
0103h
) MEM[1] = 10FFh
6.
16GB, 32 , 64
. , .
(IV) 4 2h. IRQM1
IRQM2 , IRQM2 , IRQN
. 0, 1 2 IV , .
. 3 . PSW- I (Interrupt
Enable) T (Trap) , L .
PSW PC . . 32 . INTE, INTD,
RTI, TRPE TRPD . .
IMR. 1, 2, 0
3. TRPE 0100h 1. () ,
. 2.
IRQM1, 5. IRQN, 9. IRQM2. PSW-
0.
1
0100h
0101h
0102h
0103h
0104h
0105h
TRPE
INTE
LOAD #1h
INTD
STORE 1h
TRPD
2
1000h INC
1001h RTI
1002h POP
1003h PUSH
1004h DEC
1005h RTI
1006h
1007h
1008h
1009h
100Ah
100Bh
INC
RTI
LOAD 1h
INC
INC
RTI
3
0000h 1002h
0001h 1008h
0002h 1009h
0003h 1006h
0004h 1004h
0005h 1000h
PRIRRM1
1
1
-
8 48
3
I=1, T=1, L=00
0103
2
I=1, T=1, L=00
0103
I=0, T=0, L=10
100B
) MEM[1] = 2h
)
7.
64 KB, , 16
. . IV (Interrupt Vector)
IVTP. Trap 2 IVT.
PSW PC . . (Ri) 8 .
TRPE (Trap Enable) TRPD (Trap Disable) , trap-.
TRPE TRPD ( trap). 1, trap
2, 0 3. ,
trap-.
1
FF00h
FF01h
FF03h
FF04h
FF05h
FF08h
TRPD
MOV R0, #2
TRPE
DEC R0
JNZ FF03h
TRPD
2
00A0h POP
R1
00A1h PUSH R1
00A2h RTI
3
0000h
0001h
0002h
0003h
0004h
0005h
0006h
00h
A0h
00h
0Ah
00h
A0h
00h
4
00A0h POP R1
00A1h PUSH #2
00A3h RTI
) FF07h?
) IVTP ( 0, 7)?
) , FF00h, FF08h.
, , ,
, .
) R1 RTI 00A2h?
) , FF00h, ,
trap 2 4.
adresa instrukcija
:
) FF07h FFh.
) IVTP 1.
)
0
1
2
3
4
FF00
FF01
FF03
FF04
TRPD
MOV R0, #2
TRPE
DEC R0
00A0
POP R1
R0
?
?
2
2
1
1
1
R1
?
?
?
?
?
?
5
1
2
0
0
0
1
1
0
0
9 48
6
7
8
00A1
00A2
FF05
PUSH R1
RTI
JNZ FF03h
9
10
11
12
13
00A0
00A1
00A2
FF03
FF04
POP R1
PUSH R1
RTI
TRPE
DEC R0
14
15
16
17
00A0
00A1
00A2
FF05
POP R1
PUSH R1
RTI
JNZ FF03h
18
19
20
21
00A0
00A1
00A2
FF08
POP R1
PUSH R1
RTI
TRPD
1
1
1
1
1
1
1
1
0
0
0
0
0
0
0
0
0
0
0
5
5
5
5
3
3
3
3
3
3
5
5
5
5
5
8
8
8
8
1
3
4
3
5
6
5
7
8
7
-
0
1
1
0
0
0
1
1
1
0
0
0
1
1
0
0
0
1
0
5
T=1
FF
05
T=1
FF
05
6
T=1
FF
3
T=1
FF
7
T=1
FF
03
4
T=1
FF
08
8
T=1
FF
T=1
FF
) R1 5.
) : FF00, FF01, FF03, FF04, 00A0, 00A1, 00A3, FF02, .
0
1
2
3
4
FF00
FF01
FF03
FF04
TRPD
MOV R0, #2
TRPE
DEC R0
5
6
7
8
00A0
00A1
00A3
FF02
POP R1
PUSH #2
RTI
???
R0
?
?
2
2
1
1
1
1
1
R1
?
?
?
?
?
?
5
5
5
1
2
3
-
0
0
0
1
1
0
0
0
1
1
T=1
FF
05
2
T=1
FF
3
T=1
10 48
FF
02
8.
128KB, 16 ,
.
/ , . IV (Interrupt Vector)
IVTP (Interrupt Vector Table Pointer), IVTP 2.
IRQ0, IRQ1 IRQ2 , IRQ0 , IRQ2
, PER0, PER1 PER2, . 2, 3
4 IV , . . 16
10h, 20h 30h, . PSW- I (Interrupt Enable)
, L . PSW PC .
. 16 . INTE, INTD, RTI INT .
INT . 1, 2,
0 3. 0100h 1. ()
, .
2. IRQ2, 5. IRQ0.
PSW- 0. IMR .
3
0000h 0000h
0001h 0001h
0002h 1000h
0003h 1008h
0004h 1000h
0005h 100Ch
0006h 1009h
) IRQ0, IRQ1 IRQ2, ?
) 3 .
) .
) .
, , ,
, .
) 6. .
PSW I L. .
Slika 1
0100h
0102h
0103h
0104h
0106h
0108h
LOAD #2h
INTE
INC
ADD #2h
INT #3h
INTD
2
1000h PUSH
1001h INTE
1002h LOAD 1h
1004h INC
1005h STORE 1h
1007h POP
1008h
1009h
100Ah
100Bh
100Ch
100Dh
RTI
INTE
INC
RTI
INC
RTI
:
IRQ0 1000h, IRQ1 100Ch, IRQ2 1009h
LOAD #100Ch
STORE 5h
)
LOAD #2h
OUT 10h
LOAD #3h
OUT 20h
LOAD #4h
OUT 30h
)
100h, 102h, 103h, 1009h, 100Ah, 1000h, 1001h, 1002h, 1004h, 1005h, 1007h, 1008h, 100Bh, 104h, 106h, 100Ch,
100Dh, 108h, 109h
)
)
0
1
2
3
0100
0102
0103
LOAD #2
INTE
INC
4
5
1009
100A
INTE
INC
ACC
?
2
2
3
3
3
4
4
1
1
1
2
I
0
0
1
1
0
1
1
0
L
00
00
00
00
01
01
01
11
PRIRR0
1
-
PRIRR1
-
PRIRR2
1
1
-
11 48
6
7
8
9
10
11
12
13
14
15
16
17
18
1000
1001
1002
1004
1005
1007
1008
100B
0104
0106
100C
100D
0108
PUSH
INTE
LOAD 1h
INC
STORE 1h
POP
RTI
RTI
ADD #2
INT #3
INC
RTI
INTD
4
4
1
2
2
4
4
4
6
6
7
7
7
3
3
3
3
3
2
1
4
4
-
0
1
1
1
1
1
1
1
1
0
0
1
0
11
11
11
11
11
11
01
00
00
00
00
00
00
3
I=1, L=00
0104
I=1, L=00
0104
I=1, L=01
100B
0004
2
I=1, L=00
0104
I=1, L=01
100B
4
I=1, L=00
0108
I=1, L=00
0104h
I=1, L=01
100Bh
0004h
9.
16
IRQ IVT.
INTA .
, , 4 .
, .
, 0FF0h (I/O) 4
.
) .
) IRQ1 IRQ2 , .
) 16 , .
12 48
IMR
IRR
IRQ0
IRQ1
IRQ2
IRQ3
IRQ
INTA
clIRR0
clIRR1
clIRR2
clIRR3
INTA0
INTA1
INTA2
INTA3
LOAD #1001b
OUT 0FF0h
10.
8GB, 16 ,
. I/O
, . IV (Interrupt Vector)
IVTP (Interrupt Vector Table Pointer), IVTP 8. IRQ
IV . INTA
. , ,
4 , IRQ0 IRQ3
, IRQ0 , IRQ3 , PER0
PER3, , 2, 3, 1 4 ,
1007h, 1000h, 1010h 1003h . 8 10h,
20h, 30h 40h . ,
. , 00ABh I/O
, 4 .
Fh. PSW- I (Interrupt Enable) .
ACC, PSW PC . . 16 .
1, 2. 0100h 1. ()
, . 3.
IRQ0, 5. IRQ2, 7. IRQ1.
PSW- 0. INTE INTD . 1h
0.
13 48
1
2
1006h RTI
1010h LOAD 1h
0100h INTE
1000h INTE
1007h INTE
1013h XOR #1h
0101h LOAD 1h
1001h INC
1008h LOAD 1h
1016h STORE 1h
100Bh INC
1019h RTI
0104h DEC
1002h RTI
0105h STORE 1h
1003h INTE
100Ch STORE 1h
0108h INC
1004h DEC
100Fh RTI
0109h INTD
1005h INTE
) .
) , 0100h.
, , ,
, .
) 8. .
PSW I. .
) .
) IRQ0 IRQ3 , .
LOAD #02h
OUTB 0010h
LOAD #03h
OUTB 0020h
LOAD #01h
OUTB 0030h
LOAD #04h
OUTB0040h
) 0100h, 0101h, 0104h, 1007h, 1008h, 1010h, 1013h, 1016h, 1019h, 1000h, 1001h, 1002h, 100Bh, 100Ch, 100Fh, 0105h,
0108h, 0109h
)
0
1
2
3
0100
0101
0104
INTE
LOAD 1h
DEC
4
5
1007
1008
INTE
LOAD 1h
6
7
8
9
1010
1013
1016
1019
LAOD 1h
XOR #1
STORE 1h
RTI
10
11
12
13
14
15
16
17
18
1000
1001
1002
100B
100C
100F
0105
0108
0109
INTE
INC
RTI
INC
STORE 1h
RTI
STORE 1h
INC
INTD
ACC
?
?
0
-1
-1
-1
0
0
0
1
1
0
0
0
1
0
1
1
-1
-1
0
0
1
1
1
2
2
2
2
1
3
3
3
1
1
1
-
PRIRR
1
1
1
1
1
-
IRR0
1
-
IRR1
1
1
1
-
IRR2
1
-
IRR3
-
3
FFFF
I=1
0000
0105
2
FFFF
I=1
0000
I
0
1
1
1
0
1
1
0
0
0
0
1
0
1
1
1
1
1
1
1
1
0
FFFF
I=1
0000
0105
FFFF
I=1
0000
100B
14 48
0105
FFFF
I=1
0000
100B
FFFFh
I=1
0000h
0105h
0000h
I=1
0000h
100Bh
)
IMR
IRR
IRQ0
IRQ1
IRQ2
IRQ3
IRQ
INTA
clIRR0
clIRR1
clIRR2
clIRR3
INTA0
INTA1
INTA2
INTA3
LOAD #0110b
OUTB 0000 00ABh
11.
16
IRQ0 IVT.
INTA0 .
IRQ0 3 .
) .
) , ?
) Daisy chainig
12.
8GB, 16 ,
. U/I
15 48
, . IV (Interrupt Vector)
IVTP (Interrupt Vector Table Pointer), IVTP 16h. IRQM
IRQN ,
IV . INTA
. , ,
Daisy chainig. IRQM , PER1, PER2 PER3,
PER1 , IRQN PERN, 3, 5, 1 7
, 1007h, 1000h, 1003h 1010h, . 8
10h, 20h, 30h 40h . PSW- I (Interrupt Enable)
, L . ACC, PSW PC
. . 16 . 1,
2. 0100h 1. () ,
. 2.
PER1, 5. PER2, 7. PERN.
PSW- 0. INTE INTD . 1h 0.
1
2
1006h RTI
1013h XOR #1h
0100h INTE
1000h INC
1007h INTE
1016h STORE 1h
0101h LOAD 1h
1001h INC
1008h LOAD 1h
1019h RTI
0104h DEC
1002h RTI
100Bh INC
0105h STORE 1h
1003h INTE
100Ch STORE 1h
0108h INC
1004h DEC
100Fh RTI
0109h INTD
1005h INTE
1010h LOAD 1h
) .
) 8 , .
) .
) , 0100h.
, , ,
, .
) 8. .
PSW I. .
LOAD #03h
OUTB 10h
LOAD #05h
OUTB 20h
LOAD #01h
OUTB 30h
LOAD #07h
OUTB 40h
)
IV
25h
7 PERN
24h
23h
6
22h
21h
5 PER2
20h
1Fh
4
1Eh
1Dh
3 PER1
1Ch
1Bh
2
1Ah
19h
1 PER3
18h
17h
0
16h
1010h
0000h
1000h
0000h
1007h
0000h
1003h
0000h
16 48
IRQM
INTAM
INTA
PER1
IRQ
INTA
INTA
PER2
CPU
READ
IRQN
READY
INTA
ENABLE
IRQ
INTA
PER3
PERN
INTAN
) 0100h, 0101h, 1007h, 1008h, 100Bh, 1000h, 1001h, 1010h, 1013h, 1016h, 1019h, 1002h, 100Ch, 100Fh, 0104h, 0105h,
0108h, 0109h
0
1
2
0100
0101
INTE
LOAD 1
3
4
5
1007
1008
100B
INTE
LOAD 1
INC
6
7
1000
1001
INC
INC
8
9
10
11
12
13
14
15
16
17
18
1010
1013
1016
1019
1002
100C
100F
0104
0105
0108
0109
LOAD 1
XOR #1
STORE 1
RTI
RTI
STORE 1
RTI
DEC
STORE 1
INC
INTD
ACC
?
?
0
0
0
0
1
1
2
3
3
0
1
1
3
1
1
0
-1
-1
0
0
1
1
1
1
2
2
2
3
3
3
3
2
1
1
-
PRIRRN
1
-
PRIRRM
1
1
-
IRQM1
1
-
IRQM2
1
-
IRQM3
-
3
0000
I=1
0104
0000
2
0000
I=1
0104
0000
0001
I=1
100C
0000
I
0
1
1
0
1
1
1
0
0
0
0
0
0
0
0
1
1
1
1
1
1
0
0000
I=1
0104
0000
0001
I=1
100C
0000
0003
I=0
1002
0000
17 48
0000h
I=1
0104h
0000h
0001h
I=1
100Ch
0000h
0003h
I=0
1002h
0000h
13.
IRQ , . 16, 8
. IRQ 4 PER1PER4.
READY 1.
PER1 PER4 FF01h, FF02h, FF03h FF04h, READY
7, 3, 5 1. 100h, 200h, 300h 400h,
RTI. PER4 , PER1 . ACC,
PSW PC .
) , IRQ.
) ) RTS
( )?
18 48
14.
(,
) :
) ,
)
) .
.
:
) ABUS, DBUS, RDBUS FCBUS ,
, .
L
L
L
L
ABUS
DBUS
RDBUS
FCBUS
L
L
L
ABUS
DBUS
WRBUS
FCBUS
L
L
L
) DBUS FCBUS , ,
inta, /
, .
DBUS
inta
FCBUS
L
L
L
L
L
15.
(,
) :
) ,
)
) .
.
19 48
tcitanje
i i+1
MCLK
ABUS
DBUS
RDBUS
j j+1
L
L
L
L
L
L
L
) ABUS, DBUS WRBUS ,
, .
tupis
i i+1
MCLK
ABUS
DBUS
WRBUS
j j+1
L
L
L
L
L
L
L
) DBUS
inta, , /
, .
tulaz
i i+1
MCLK
ABUS
DBUS
inta
j j+1
L
L
L
L
L
L
16.
64B. .
/ . 32B ROM ,
32KB RAM . RAM 8KB RAM
, ROM 8B ROM .
256x4- RM ( R, W CS) 1024x4- ROM ( R CS).
) ,
RAM, ROM , RAM , ROM .
.
) RAM ROM ?
.
)
?
RAM
ROM
a RAM a
a ROM a
0000h
0000h
8000h
0000h
8000h
FFFFh
7FFFh
FFFFh
1FFFh
9FFFh
) RAM .
numRam =
RAMSize
8Kx8
8Kx8
64 128x8
=
=
=
= 64
RAMChipSiz e 256x 4 2 128x 4
128x8
20 48
RM .
numRom =
ROMSize
8Kx8
8Kx8
16 512x8
=
=
=
= 16
ROMChipSiz e 1024x 4 2 512x 4
512x8
17.
1MB, . 16-
. MAR 8- MDR.
/ . MEM
PER . 256KB
.
)
.
21 48
) 128x4 (
R, W CS).
) .
) .
RAMSize
256Kx8
256Kx8
256Kx8 4 64x8
numRam =
=
=
=
=
=4
RAMChipSiz e 128Kx 4 2 64Kx 4
64Kx8
64x8
18.
/ .
16- (W). , .
8GB, 2GB ROM .
/ 1GW 0h.
a)
.
) , - ,
RAM ROM .
.
) RAM 4GB
RAM , SRAM 512x8 ( R, W
CS).
22 48
) ROM 1GB
ROM , ROM 256x8 ( R
CS).
)
STORE C000 0000h, R1 (.). . , .
) .
)
?
-
RAM
ROM
0000 0000h
0000 0000h
0000 0000h
C000 0000h
FFFF FFFFh
3FFF FFFFh
BFFF FFFFh
FFFF FFFFh
) RAM .
numRam =
RAMSize
2Gx16
2Gx16
2Gx16
8 256Mx16
=
=
=
=
=8
RAMChipSiz e 512Mx8 2 256Mx8 256Mx16
256Mx16
23 48
) RM .
numRom =
ROMSize
512Mx16 512Mx16
4 128Mx16
=
=
=
=4
ROMChipSiz e
256Mx8 2 128Mx8
128Mx16
24 48
19.
. W 1 16 .
STOREB MDRL MAR.
STOREW MDRH ( ) MDRL ( )
MAR. 16 .
.
) ? ML MH?
) ML, MH?
) : (i) STOREW 8h, (ii) STOREW 5h.
25 48
MAR
MARinc
INC
MDRL
MDRH
MARout
rd
22
wr
m/io
Hout2
D 15 - 8
A
D 15 - 8
D 7-0
RD
Hout1
Lout2
D 7-0
D 15 - 8
D 7-0
Lout1
22
8
8
WR
M/IO
W
3
A 20
A 21
E
0
1
DC 0
DC 1
DC 2
DC 3
0
1
2
3
DC
RD
WR
A0
DC
A 19 - 1
D 7-0
A
D 15 - 8
A 19 - 1
A
RD
WR
CS
CS
ML
MH
DC 0
A0
W
DC 0
A0
W
20.
16- little-endian ( ).
. 16 16 .
- .
(HMODULE) (LMODULE) :
16-
16-
:
R:
W:
BEH(Byte Enable High): D15..8
BEL (Byte Enable Low): D7..0
) . .
?
) 16- ABCDh. 1234h,
1. ?
2. () .
3. () ?
4. ?
) 1235h, 1. 4.
D15..8 D7..0
.
)
BEH BEL,
. BH HMODULE, BEL
LMODULE. HMODULE,
1h, 3h, 5h, 7h, 9h (0=1). LMODULE,
26 48
) , .
1234h,
8 , 8 .
W . LMODULE HMODULE
BEL BEH . ,
.
.
1234h
D0-7
CDh
D15-8
ABh
R
0
W
1
BEH
1
BEL
1
) ,
. HMODULE , LMODULE
. ,
.
1
2
.
1234h
1236h
D0-7
XX
ABh
D15-8
CDh
XX
R
0
0
W
1
1
BEH
1
0
BEL
0
1
21.
16- 8192 .
SRAM 64x4 ( R, W CS). little-endian.
. 8- 16- .
- . .
numRam =
RAMSize
8192 1024x8 1024x8
=
=
=
= 32
RAMChipSiz e 64x 4 2 32x 4
32x8
27 48
BE0
E
9 7
6 1
6 1
6 1
6 1
R
W
0
1
CSL0
CSL1
CSL0
A
DC ...
5 0
W 64x4
W 64x4
CS
CS
...
7
50
CSL7
D 3 0
D 3 0
D 3 0
7 .. 4
...
R
W
CSL7
A
50
W 64x4
W 64x4
CS
9 7
D 3 0
D 3 0
7 .. 4
R
W
0
1
5 0
CS
D 3 0
BE1
CSH0
CSH1
CSH0
DC ...
5 0
50
W 64x4
W 64x4
CS
CS
...
7
D 3 0
D 3 0
CSH7
D 15..12
D11 8
...
R
W
CSH7
R
5 0
50
W 64x4
W 64x4
CS
CS
D 3 0
D 3 0
D 15..12
D11 8
8- 16-
BE0 BE1.
,
.
28 48
29 48
22.
32- big-endian ( ) ( 32-
32- ). .
ROM RAM . ROM , RAM
ROM . ROM 1MB 16 , 4Kx4
. RAM 8MB 32-, 16Kx2 .
. - .
ROM
RAM
00000000h
00100000h
000FFFFFh
008FFFFFh
numRm =
ROMSize
512Kx8 512Kx8
=
=
= 256
ROMChipSiz e
4Kx 4
2Kx8
512Kx8 .
ROM .
20 31 ROM
ROMENABLE. BE1
30 48
ROMENABLE = A 31...A 20
CS0 = ROMENABLE BE1
CS1 = ROMENABLE BE0
RAMSize
2Mx8 2Mx8
=
=
= 512
RAMChipSiz e 16Kx 2 4Kx8
2Mx8 RAM .
RAM .
31 48
RMENABLE =
A 31 ...A 24 (A 23 A 22 + A 23 A 21 + A 23 A 20 + A 23 A 22 A 21 A 20 )
23.
big-endian 24- 16-
. .
a) 2 MB 1024x4 SRAM .
R, W CS0 CS1.
) a) 4MB .
:
a) RAM 2Mx8 1024x4 .
numRm =
RAMSize
2Mx8
2Mx8
=
=
= 2048
RAMChipSiz e 1024x 4 512x8
32 48
A9..0
CS0
W
E
CSL0
CSL1
0
1
A15..10
CSL0
CSH0
...
DC
A9..0
R A9..0
1024x4
CS0
1024x4
CS0
CS1
CS1
D3..0
D3..0
62
CSL63
63
D3..0
D7..4
...
A9..0
CS1
R
W
CSH0
CSH1
0
1
A20..16
...
DC
30
31
CSH31
CSL63
CSH61
R A9..0
1024x4
CS0
1024x4
CS0
CS1
CS1
D3..0
D3..0
A9..0
D3..0
D3..0
2Mx8 .
) 2Mx8 ) 4Mx8
.
CS0 = BE1
CS1 = BE0
33 48
24.
, 16- 8-
. .
0000h 0001h 0002h 0003h 0004h 0005h 0006h 0007h 0008h 0009h 000h
14h
0h
05h
00h
32h
15h
31h
FFh
0Ah
00h
16h
01h
F0h
00h
10h
16- e PC ( ), SP (
), A (), AR ( ).
PC. , .
JSR .
SP = DEE0h AR = 9, 16- .
0000h
0003h
0005h
0007h
LOADW PC(05h)
ADDB(AR)+
JSR(AR)
HALT
;potporogram
X
OUTB F000h
X+4
RTS
; memorijsko direktno
; povratak iz potprograma
) X?
) ,
.
:
a) AR JSR.
, AR 9. ,
X = 10 = 000Ah.
) .
34 48
M/ IO
0000h
14h
LOADW PC(5),
0001h
0Ah
LOADW PC(5),
0002h
05h
LOADW PC(5),
0008h
0Ah
LOADW PC(5) ,
0009h
00h
LOADW PC(5),
ACC=0A00h
0003h
00h
ADDB(AR)+,
0004h
32h
ADDB(AR)+,
0009h
00h
ADDB(AR)+
0005h
15h
JSR(AR),
10
0006h
31h
JSR(AR),
11
DEE0h
07h
JSR(AR), PC
12
DEDFh
00h
JSR(AR),
PC
13
000Ah
16h
OUTB F000h,
14
000Bh
01h
OUTB F000h,
15
000Ch
F0h
OUTB F000h,
16
000Dh
00h
OUTB F000h,
17
F000h
00h
OUTB F000h
18
000Eh
10h
RTS
19
DEDFh
00h
RTS, PC
20
DEE0h
07h
RTS, PC
21
0007h
FFh
HALT
35 48
25.
/
. 32MB, 16- (W). /
. .
0000h 0001h 0002h 0003h 0004h 0005h 0006h 0007h 0008h 0009h 000h
A000h 0000h 0000h E004h F000h E028h 0000h 0009h 0500h 0050h 0000h
,
. 16 .
0000h
0003h
0005h
LOAD R1,0
OUT PC(F000h),R1
STORE (9h),R1
M/ IO
00 0000h
A000h
LOAD R1,0, a
00 0001h
0000h
LOAD R1,0,
00 0002h
0000h
LOAD R1,0,
00 0000h
A000h
LOAD R1,0
00 0003h
E004h
OUT PC(F000h),R1,
00 0004h
F000h
OUT PC(F000h),R1,
FF F005h
A000h
OUT PC(F000h),R1
00 0005h
E028h
STORE (9h),R1,
00 0006h
0000h
STORE (9h),R1,
10
00 0007h
0009h
STORE (9h),R1,
11
00 0009h
0050h
STORE (9h),R1,
12
00 000Ah
0000h
STORE (9h),R1,
13
50 0000h
A000h
STORE (9h),R1
36 48
26.
4 16- (R0-R3)
16 , 8 .
. .
00h
30h
0Eh
0Eh
30h
30h
00h
3000h 3001h 3002h 3003h 3004h 3005h 3006h 3007h 3008h 3009h
05h
30h
11h
0Ah
30h
05h
22h
0Ch
44h
02h
FFh
300Ah 300Bh 300Ch 300Dh 300Eh 300Fh 3010h 3011h 3012h 3013h
00h
00h
05h
30h
00h
02h
04h
F0h
12h
C0h
PC.
SP .
, SP=4000h, IVTP=0h, PC=3000h. ,
.
3000h
3004h
3007h
3009h
...
300h
3011h
3013h
;
;
;
;
ADD R2, #4
PUSH R2
RTI
; neposredno adresiranje
; registarski direktno adresiranje
; povratak iz prekidne rutine
M/ IO
3000h
05h
LOAD R1, (300Ah),
3001h
11h
LOAD R1, (300Ah),
3002h
0Ah
LOAD R1, (300Ah),
3003h
30h
LOAD R1, (300Ah),
300Ah
00h
LOAD R1, (300Ah),
300Bh
00h
LOAD R1, (300Ah),
0000h
00h
LOAD R1, (300Ah),
0001h
30h
LOAD R1, (300Ah),
R1=3000h
37 48
3004h
05h
LOAD R2, (R1)0Ch,
10
3005h
22h
LOAD R2, (R1)0Ch,
11
3006h
0Ch
LOAD R2, (R1)0Ch,
12
300Ch
05h
LOAD R2, (R1)0Ch,
13
300Dh
30h
LOAD R2, (R1)0Ch,
R2=3005h
14
3007h
44h
INT #2,
15
3008h
02h
INT #2,
16
4000h
09h
,
PC-a
17
4001h
30h
,
PC-a
18
0004h
0Eh
19
0005h
30h
20
300Eh
00h
ADD R2,#4,
21
300Fh
02h
ADD R2,#4,
22
3010h
04h
ADD R2,#4,
R2=3009h
23
3011h
F0h
PUSH R2,
24
3012h
12h
PUSH R2,
25
4002h
09h
PUSH R2, R2
26
4003h
30h
PUSH R2, R2
27
3013h
C0h
RTI
28
4003h
30h
RTI, PC
29
4002h
09h
RTI, PC
30
3009h
FFh
HALT
38 48
27.
32- big-endian ( ), 32-
29- . . . STORE AABBCCDDh
12345676h.
a) ,
D31..0.
) ,
D15..0.
MEM[12345676] = AAh
MEM[12345677] = BBh
MEM[12345678] = CCh
MEM[12345679] = DDh
)
1
2
.
12345674h
12345678h
D0..7
BBh
XX
D15..8
AAh
XX
D23..16
XX
DDh
D31..24
XX
CCh
R
0
0
W
1
1
M/ IO
1
1
BE3
0
1
BE2
0
1
BE1
1
0
BE0
1
0
1
2
.
12345676h
12345678h
D0-7
BBh
DDh
D15-8
AAh
CCh
D23-16
XX
XX
D31-24
XX
XX
R
0
0
W
1
1
M/ IO
1
1
BE3
0
0
BE2
0
0
BE1
1
1
BE0
1
1
28.
little-endian 32- 64 . . LOAD,
16- 1234567Ah. BBh
,
.
D0..7
D15..8
D23..16
D31..24
D39..32
D47..40
D55..48
D63..56
12345676h
XX
XX
XX
AAh
BBh
XX
XX
XX
0 15 23 63 .
29.
:
a) .
) .
) .
,
?
39 48
BUSYBUS
BCLK
modul
0
modul
1
BG_OUT
BG_IN
BR
BG_OUT
BG_IN
BR
CD
...
...
...
0
0
BG_OUT
BG_IN
BR
...
...
modul
(n-1)
...
n-1
m-1
m-1
DC
0
...
...
ARBITRATOR
)
BUSYBUS
BCLK
modul
0
BR
BG_IN
modul
1
BR
BG_IN
BG_OUT
BG_OUT
1
) BUSYBUS .
...
...
modul
(n-1)
BR
BG_IN
BG_OUT
30.
1MB, . 16-
. MAR 8- MDR.
/ . MEM
PER .
. CR 10h, SR
11h, DR 12h, IE
13h. IE intack.
40 48
A
20
D
8
RD
WR
M/IO
RD intack
D2
RD
D1
WR
D0
M/IO
A19..5 15
A4
LD
A3..2
2
A1
A0
CR
E
0
1
DC
SR
0
1
2
3
WR
D2
LD
DR
WR
D3
LD
IE
D0
D1
D2
D3
31.
/ .
16- (W). , .
8GB. / 1GW
0h. DMA .
; ,
10 . : DMA
.
(Source)
32
ARSH, ARSL
0h, 1h
(Destination)
32
ARDH, ARDL
2h, 3h
32
CNTH, CNTL
4h, 5h
16
DR
6h
16
SR
7h
16
CR
8h
IVT
16
IE
9h
41 48
/
32.
16 .
16 . .
PER0 PER1 , : FF00h, FF01h,
FF02h (PER0) FF10h, FF11h, FF12h (PER1). Enable Interrupt
, Start , 1 (0
, 1). Ready.
200h PER0, F000h, Obrada,
PER1. . Obrada
. ,
CALL Obrada.
:
LOAD
STORE
LOAD
STORE
LOAD
OUT
LOOP1:IN
AND
JZ
IN
STORE
LOAD
INC
STORE
LOAD
DEC
STORE
JNZ
LOAD
OUT
CALL
LOAD
STORE
LOAD
STORE
LOAD
OUT
LOOP2:IN
AND
JZ
LOAD
OUT
LOAD
INC
STORE
LOAD
DEC
STORE
JNZ
LOAD
OUT
#200h
MemCnt
#F000h
MemDst
#8000h
FF00h
FF01h
#1
LOOP1
FF02h
(MemDst)
MemDst
;broja u MemCnt
MemDst
MemCnt
;i brojaa
;adresa u MemDst
;Start=1, Enable=0, Direction=0
;pokreni kontroler
;ispitivanje bita spremnosti
MemCnt
LOOP1
#0
FF00h
Obrada
#200h
MemCnt
#F000h
MemSrc
#8002h
FF10h
FF11h
#1
LOOP2
(MemSrc)
FF12h
MemSrc
;auriranje pokazivaa
MemSrc
MemCnt
;i brojaa
MemCnt
LOOP2
#0
FF10h
42 48
33.
16 8
/ . PER0, PER1 PER2 ,
: FF10h, FF11h, FF12h (PER0), FF20h, FF21h, FF22h (PER1) FF30h, FF31h,
FF32h (PER2). Start ,
Enable , 3 (1, 0).
Ready. :
PER0 PER1 100h
1000h (PER0) 1100h (PER1), Obrada
(CALL Obrada) 200h , 1000h PER2.
, Ready.
INC
MemB
DEC
MemCnt
JNZ
Loop
LOAD #0
STOREB
FF30h
:
Per0: PUSH
LOADB FF12h
STOREB
(MemB0)
INC
MemB0
DEC
MemCnt0
JNZ
Back0
LOAD #0
STOREB
FF10h
INC
STORE MemSem0
Back0: POP
RTI
Per1:
PUSH
LOADB FF22h
STOREB
(MemB1)
INC
MemB1
DEC
MemCnt1
JNZ
Back1
LOAD #0
STOREB
FF20h
INC
STORE MemSem1
Back1: POP
RTI
34.
, , PER0 PER1
16 16 . 16 .
IV (0 PER0, 1 PER1).
:
PER0_CONTROL
FF00h PER1_CONTROL
FF10h
PER0_STATUS
FF01h PER1_STATUS
FF11h
PER0_DATA
FF02h PER1_DATA
FF12h
0 Start , 1 (0-,
1-), 4 Enable , 0 Ready
. :
A(i) (i=0FF) PER0 1000h, B(i) (i=0,..FF) PER1
1100h, (B(i) = A(i) + B(i))
PER0. PER0 , PER1
43 48
, PER0 . PER0
.
Crdy:
Wait:
Loop:
LOAD #100h
STORE MemCnt0
STORE MemCnt1
LOAD #1000h
STORE MemAdr0
LOAD #1100h
STORE MemAdr1
LOAD #0
STORE MemSem0
LOAD #0 ; smer: ulaz
STORE MemDir0
LOAD #11h
OUT FF00h
LOAD #01h
OUT FF10h
IN FF11h
AND #01h
JZ Crdy
IN FF12h
STORE (MemAdr1)
INC MemAdr1
DEC MemCnt1
JNZ Crdy
LOAD #0
OUT FF10h
LOAD MemSem0
CMP #1
JNZ Wait
LOAD #100h
STORE MemCnt
LOAD #1000h
STORE MemA
LOAD #1100h
STORE MemB
LOAD (MemA)
ADD (MemB)
STORE (MemB)
INC MemA
INC MemB
DEC MemCnt
JNZ Loop
LOAD #100h
STORE MemCnt0
LOAD #1100h
STORE MemAdr0
LOAD #0
STORE MemSem0
LOAD #1
; smer: izlaz
STORE MemDir0
LOAD #13h
OUT FF00h
Wait1:LOAD MemSem0
CMP #1
JNZ Wait1
HALT
:
PUSH
LOAD MemDir0 ; koji smer?
CMP #1
JZ Out
; input
IN FF02h
STORE (MemAdr0)
Inc:
INC MemAdr0
DEC MemCnt0
JNZ Back
LOAD #1
STORE MemSem0
LOAD #0
OUT FF00h
JMP Back
;output
Out:
LOAD (MemAdr0)
OUT FF02h
JMP Inc
Back: POP
RTI
35.
, PER0 PER1,
16 16 . 16 .
.
PER0_CONTROL
FF00h PER1_CONTROL
FF10h
PER0_STATUS
FF01h PER1_STATUS
FF11h
PER0_DATA
FF02h PER1_DATA
FF12h
0 Start , 1 (0, 1), 2 Enable
. 4 Ready .
: (i), i = 0, , 999 PER0 2000h
(A(i)*A(i)) PER1. PER0 PER1 , .
PER1 . ,
.
44 48
:
LOAD #2000h
;poetna adresa ulaznog bafera
STORE MemWP
;pokaziva koji prati uitavanje sa PER0
STORE MemRP
;pokaziva koji prati slanje na PER1
LOAD #1000
;broj elemenata niza
STORE CntW
STORE CntR
LOAD #5
OUT
FF00h
;start PER0
LOAD #3
OUT
FF10h
;start PER1
Chck: IN
FF11h
AND #10h
JZ
Chck
;
LOAD MemWP
SUB
MemRP
JLE
Chck
;skok ako je rezultat oduzimanja =< 0
LOAD (MemRP)
MUL (MemRP)
;kvadriranje elementa niza
OUT
FF12h
;slanje rezultujueg elementa na PER1
INC
MemRP
DEC
CntR
JNZ
Chck
LOAD #0
OUT
FF10h
;Stop PER1
HALT
PER0:
Per1: PUSH
IN
FF02h
STORE (MemWP)
INC
MemWP
DEC
CntW
JNZ
Back
LOAD #0
OUT
FF00h
;Stop PER0
Back: POP
RTI
36.
16 /
. , , PER0, PER1 PER2 16
16 . 16 .
.
PER0_CONTROL
FF00h PER1_CONTROL
FF10h PER2_CONTROL
FF20h
PER0_STATUS
FF01h PER1_STATUS
FF11h PER2_STATUS
FF21h
PER0_DATA
FF02h PER1_DATA
FF12h PER2_DATA
FF22h
15 Start , 0 (0
, 1), 7 Enable , 0 Ready
. :
A(i) (i = 0, , 99) PER0 1000, B(i) (i = 0, , 99)
PER1 2000, C(i) (C(i) = A(i) + B(i), i = 0, , 99)
3000, C PER2.
C , . i- A(B) i- C
i- B(A). , C PER2 C
, . C PER2. PER0 PER1
, PER2 .
45 48
Wait:
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
AND
JZ
MOV
CMP
BLE
INC
MOV
CMP
JNZ
MOV
HALT
R0,
#-1
mcA, R0
mcB, R0
mwcC, R0
R1,
R0
;R1 is read pointer
FF00h, #8080h ;start PER0
FF10h, #8080h ;start PER1
FF20h, #8001h ;start PER2
R0,
FF21h ;read status
R0,
#1
Wait
R2,
mwcC
R2,
R1
Wait
R1
FF22h, (R1)3000
R1,
#99
Wait
FF20h, #0
PER0:
INTD
PUSH R0
PUSH R1
PUSH R2
MOV R0,
FF02h
MOV R1,
mcA
INC
R1
MOV mcA, R1
MOV (R1)1000,
R0
CMP
R1,
mcB
JG
SkipA
ADD R0,
(R1) 2000
MOV R2,
mwcC
INC
R2
MOV mwcC, R2
MOV
(R2) 3000,
R0
SkipA: CMP
R1,
#99
JNZ
BackA
MOV FF00h, #0
BackA: POP
R2
POP
R1
POP
R0
RTI
PER1:
INTD
PUSH R0
PUSH R1
PUSH R2
MOV R0,
FF12h
MOV R1,
mcB
INC
R1
MOV mcB, R1
MOV
(R1) 2000,
R0
CMP
R1,
mcA
JG
SkipB
ADD R0,
(R1) 1000
MOV R2,
mwcC
INC
R2
MOV mwcC, R2
MOV
(R2) 3000,
R0
SkipB: CMP
R1,
#99
JNZ
BackB
MOV FF10h, #0
BackB: POP
R2
POP
R1
POP
R0
RTI
46 48
37.
I/O 16 8
. ,
: Data (0026h, 0028h), Control (0030h, 0032h) Status (0020h, 0022h). 8 ,
. 2 Ready, 0 Start.
, Ready, ,
SUM1 SUM2. 0.
, .
LOOP:
TSTP2:
PER2:
PER1:
END:
MOV SUM1, #0
MOV SUM2, #0
OUT 30h, #1
OUT 32h, #1
IN R0, 20h
AND R0, #4
JNZ PER1
IN R0, 22h
AND R0, #4
JZ LOOP
IN R0, 28h
OR R0, R0
JZ END
ADD SUM2, R0
JMP LOOP
IN R0, 26h
OR R0, R0
JZ END
ADD SUM1, R0
JMP TSTP2
OUT 30h, #0;
OUT 32h, #0;
; Start PER1
; Start PER2
; Test PER1
; Test PER2
Stop PER1
Stop PER2
47 48
38.
/ , ,
PER0 (adrCR=FF10h, adrSR= FF11h, adrDR=FF12h), PER1 (adrCR=FF20h, adrSR=FF21h,
adrDR=FF22h) DMA1 (adrCR=FF00h, adrSR=FF01h, adrDR=FF02h,
adrCNT=FF03h, adrAs=FF04h, adrAd=FF05h) PER2 (adrCR=FF30h, adrSR=FF31h, adrDR=FF32h)
16 16 . 16
. 0 Start , 1
(0-, 1-), 2 Enable , 4 Ready
. 3 DMA (0-
(burst), 1- (cycle stealing)).
) . PER1
A(i) 80h 1000h DMA
burst , B(i) PER1
2000 DMA .
PER0 PER2,
A(i)/B(i), A(i)-B(i) (i=1, ..., 80h). PER0
, PER2 .
) PER1 A(i)
? .
:
) :
LOAD #0
STORE MemSem
STORE MemSem0
STORE MC0
STORE MC2
LOAD #80h
STORE FF03h
LOAD #1000h
STORE FF05h
STORE MAA0
STORE MAA2
LOAD #1h
STORE FF20h
LOAD #5h
STORE FF00h
Wait: LOAD MemSem
CMP #1
JNZ Wait
LOAD #0
STORE MemSem
LOAD #80h
STORE FF03h
LOAD #2000h
STORE FF05h
STORE MAB0
STORE MAB2
LOAD #1h
STORE FF20h
LOAD #13
STORE FF00h
Wait2: LOAD MemSem
CMP #1
JNZ Wait2
LOAD #3h
STORE FF30h
LOAD #7h
STORE FF10h
ChRd: LOAD FF31h
AND #10h
JZ ChRd
INTD
LOAD MC2
SUB MC0
JL Skip
LOAD (MAA2)
DIV (MAB2)
JMP IncMa
Skip:
LOAD (MAA2)
SUB (MAB2)
IncMa: STORE FF32h
INC MC2
INTE
INC MAA2
INC MAB2
LOAD MC2
CMP #80h
JNZ ChRd
LOAD #0h
STORE FF30h
...
ChPer0: LOAD MemSem0
CMP #1
JZ ChPer0
HALT
DMA_Int: PUSH
LOAD 0
STORE FF20h
STORE FF00h
INC
STORE MemSem
POP
RTI
PER0_Int:PUSH
48 48
LOAD MC0
SUB MC2
JL Skip0
LOAD (MAA0)
DIV (MAB0)
JMP IncMa0
Skip0: LOAD (MAA0)
SUB (MAB0)
IncMa0: STORE FF12h
INC MC0
INC MAA0
Back:
INC MAB2
LOAD MC0
CMP #80h
JNZ Back
LOAD #0h
STORE FF10h
INC
STORE MemSem0
POP
RTI
) . DMA
39.
, , PER0, PER1
PER2 DMA1 DMA2, ,
16 16 . 16 .
:
PER0_CONTROL
FF10h PER1_DATA
FF22h
PER0_STATUS
FF11h PER2_CONTROL
FF30h
PER0_DATA
FF12h PER2_STATUS
FF31h
PER1_CONTROL
FF20h PER2_DATA
FF32h
PER1_STATUS
FF21h
DMA1_CONTROL
FF00h DMA2_CONTROL
FF06h
DMA1_ADDRESS
FF01h DMA2_ADDRESS
FF07h
DMA1_COUNT
FF02h DMA2_COUNT
FF08h
DMA1_DATA
FF03h DMA2_DATA
FF09h
DMA1_STATUS
FF04h DMA2_STATUS
FF0Ah
0 Start , 1 (0-,
1-), 2 Enable , 4 Ready
. 3 DMA (0- (burst), 1-
(cycle stealin)).
. PER0 PER1 PER2.
BP0 BP1 PER0. ,
BP0 BP1 PER1 PER2 ,
BP1 BP0 PER1 PER2. 100h
BP0 BP1 1000h 1100h, . PER0
, PER1 DMA -- ,
PER2 DMA .
STORE Ain
LOAD #1
STORE Dir
Init:
LOAD #0
STORE Mfin
STORE MFout1
STORE MFout2
LOAD #100
STORE Cntin
; init DMAs
LOAD Aout
OUT FF01h
OUT FF07h
LOAD #100h
OUT FF02h
OUT FF08h
49 48
; start controllers
LOAD #5
OUT FF10h
LOAD #Fh
OUT FF00h
LOAD #7
OUT FF06h
LOAD #3h
OUT FF20h
LOAD #3h
OUT FF30h
;
....
Wait2: LOAD Mfin
AND MFout1
AND MFout2
JZ Wait2
LOAD Dir
AND #1
JZ Swap
; initialize output from BP1 and input to BP0
LOAD #1100h
STORE Aout
LOAD #1000h
STORE Ain
LOAD #0
STORE Dir
JMP Init
DMA1Int:PUSH
LOAD #0
OUT FF20h
OUT FF00h
INC
STORE MFout1
POP
RTI
DMA2Int:PUSH
LOAD #0
OUT FF30h
OUT FF06h
INC
STORE MFout2
POP
RTI
Per0Int: PUSH
IN FF12h
STORE (Ain)
INC Ain
DEC Cntin
JNZ Back0
LOAD #0
OUT FF10h
INC
STORE MFin
Back0: POP
RTI
;stop PER0
40.
/ , ,
PER0, PER1, PER2 16 16 .
16 . :
PER0_CONTROL
F010h PER1_CONTROL
F020 PER2_CONTROL
F030h
PER0_STATUS
F011h PER1_STATUS
F021 PER2_STATUS
F031h
PER0_DATA
F012h PER1_DATA
F022 PER2_DATA
F032h
0 Start , 3
(0-, 1-), 7 Enable ,
15 Ready .
, IV 1 PER1 PER2.
PER2 PER1.
e PER0 a(i)
e PER1 PER2.
, 1000h, 100h .
PER0 , e PER1 PER2 .
, . PER0
, PER1 PER2 .
Wait:
50 57
JZ Wait
IN R0, F012h
INTD
MOV (head), R0
OR IMR, #6h
ADD head, #1
CMP head, 1100h
JNZ Skip0
MOV head, 1000h
Skip0: CMP cnt, #100h
JZ Tail0
ADD cnt, #1h
JMP Skip1
Tail0: ADD tail, #1h
CMP tail, #1100h
JNZ Skip1
MOV tail, 1000h
Skip1: INTE
JMP Wait
PER1 PER2:
INTD
PUSH R0
IN R0, F031h
AND R0, #8000h
JNZ Per2
Per1: OUT F022h, (tail)
JMP Tail1
Per2: OUT F032h, (tail)
Tail1: ADD tail, #1h
CMP tail, 1100h
JNZ Skip2
MOV tail, 1000h
Skip2: SUB cnt, #1h
JNZ Back
AND IMR, #FFF9h
Back: POP R0
INTE
RTI
41.
/ , ,
PER0 PER1 16 16 .
, SP .
PC. 16 . :
PER0_CONTROL
PER0_STATUS
PER0_DATA
F010h
F011h
F012h
PER1_CONTROL
PER1_STATUS
PER1_DATA
F020h
F021h
F022h
0 Start , 3
(0-, 1-), 7 Enable , 15 Ready
.
) PER0 a(i)
PER1. FIFO (First In First Out
, ) .
(: void transferData(void * buffer, int size);).
: struct IOStruct {void* buffer; int size; int dir; int* memSem; };
PER0 , PER1 . PER0
, PER1 .
) 800h a PER0
PER1?
51 52
)
:
PUSH BP
MOV BP, SP
PUSH R0
PUSH R1
PUSH R2
MOV R0, struct0
MOV (R0)0h, (BP)2h; // buffer
MOV (R0)1h, (BP)3h; // size
MOV Full, #0h
MOV WrP, #0h
MOV R1, struct1
MOV (R1)0h, (BP)2h; // buffer
MOV (R1)1h, (BP)3h; // size
AND IMR, #FFFDh; //disabled PER1
MOV Empty, #1h
MOV RdP, #0h
MOV F010h, #1h
MOV F020h, #89h
PER1:
IntPER1:
PUSH R0
PUSH R1
PUSH R2
MOV R0, struct0
MOV R1, struct1
MOV R2, (R1)0h
ADD R2, RdP
52 52
42.
/ , ,
PER0, PER1 PER2 16 16 .
, SP .
PC. 16 . :
PER0_CONTROL
PER0_STATUS
PER0_DATA
F010h
F011h
F012h
PER1_CONTROL
PER1_STATUS
PER1_DATA
F020
F021
F022
PER1_CONTROL
PER1_STATUS
PER1_DATA
F030h
F031h
F032h
0 Start , 3
(0-, 1-), 7 Enable , 15 Ready
.
PER0 num
a(i) PER1 PER2.
, . PER0 ,
PER1 , PER2
. PER0 , .
,
(: void transferData(void *buffer, int size, int num);).
: struct IOStruct {void* buffer; int size; int dir; int memSem; };
:
PUSH BP
MOV BP, SP
PUSH R0
PUSH R1
PUSH R2
PUSH R3
PUSH R4
MOV cnt0, #0h
MOV R0, struct0
MOV (R0)0h, (BP)2h; // buffer
MOV (R0)1h, (BP)3h; // size
MOV (R0)3h, 0h; // Sem0 = #0
MOV WrP, #0
MOV cnt1, #0h
MOV R1, struct1
MOV (R1)0h, (BP)2h; // buffer
MOV (R1)1h, (BP)3h; // size
MOV (R1)3h, 0h; // Sem1 = #0
AND IMR, #FFFDh; //disabled PER1
MOV RdP, #0h
53 52
MOV cnt2, #0h
MOV R2, struct2
MOV (R2)0h, (BP)2h;
MOV (R2)1h, (BP)3h;
MOV (R2)3h, 0h;
AND IMR, #FFFBh;
// buffer
// size
// Sem2 = #0
//disabled PER2
//start PER0
//start PER1
//start PER2
54 52
INTD
SUB cnt, #1h
ADD cnt1, #1h
ADD cntx, #1h
;RdP:=(RdP+1) mod bufferSize
ADD RdP, #1h
CMP RdP, (R1)1h
JNZ Skip1
MOV RdP, #0h
Skip1: CMP num, cntx
JNZ Ret1
OUT F020h, #0h
MOV (R1)3h, #1h
OUT F030h, #0h
MOV (R0)3h, #1h
JMP Back1
Ret1: CMP cnt, #0h
JNZ Back1
AND IMR, #FFF9h;
Back1: POP R2
POP R1
POP R0
RTI
Prekidna rutina za PER2:
IntPER2:
PUSH R0
PUSH R1
PUSH R2
MOV R0, struct1
MOV R1, struct2
Rol2:
INTD
;WrP:=(WrP -1) mod bufferSize
CMP WrP, #0h
JN Rol2
SUB WrP, #1h
JMP Skip2
MOV WrP, (R1)3h
Copyright 2012
55 52