, , ! Lcbclan.ru , , , ,

: ,

: ,

. . ..

_____________________

,

1909 420 000 030

..

򠠠 .

-311 .

2006


 


, . , . .

( ) :

-  , , , [2050], ;

l Vi; , VS;

-  (POST power on self test) ;

-  , , ;

-  - .

. Z80 Zilog. , .


 

. 1 - .

. 1 -

, . , , Vi VS, . ( , , ) VS . 2 , . / .


Vi, . Vi ( , ):

. (1)

. 2

d l, (. 2).

: , , , , a. ‚ . Rd (.3). Ud , .


. 3

:

 

d = h l cos a, .. a. (2)

Ud. Rd (. .3), , , , , a.

:

R=1 ; Rd ()=5,1 ; U=12 . : Ud [0; 10].

-  ,

a=0 ( ), Rd =0;

a=90 ( ), Rd =Rdmax =5,1 ().

: i1-2=90/amax, amax (.. 90 amax)

, a

.

-  : h=62,5=0,625; l=50=0,5.

Ud a:

(3)

Ud 10- , 10,5 . , [0..3FFH]=[0..102310]. (3) , 12 , . =10,5/1023=1,026×10-2 . 12 12/ 1169 .

Ud a:

[] (4)

(2):

d = 0,625 0,5cos a (5)

. . Ud , a (4). a, d (5).

1 2 (ƒ .2), l=1 . . , v .

:

T1 , 1 2;

2 , 1.

=> (6)

(. 4):

.4

HL1 , . ( ) , (0), ( ) (1). 1 2 .

. :

1 0-1 (), 1, 2;

2 0-1 1;

1 1-0 ( ) 2;

(6).

: , , , , , . , , . : ; (POST) (, ).

. 1 0 . , 2 ( 2 1-0). . ( ) 1 („ . 2), .

, , - . , .. : , .

. 5.

.5

.5.

,

() Z80 ( 18561).

.

, , #.

-  CLK 4 ;

-  RESET# ( );

-  MREQ# . , ;

-  IORQ# /. , ;

-  RD# . , /;

-  WR# . , RD#, ;

-  A0-A15 . 16 65535 -;

-  D0-D7 . , , / , .

-  INT# . .

-  M1# . , . IORQ# .

, . , . 16 ( Z1). 4, 4 , CLK. .

RESET . RESET# D-, CLK.

(), (), () . . . 8- 82. 8- Z- .

(WR#, RD#, MREQ#, IORQ#) . RD# MREQ# MEMRD# . IORD# IOWR#. WR#/RD, 0, WR# 1, RD#. (MEMRD#, MREQ#, WR#/RD, IORD#, IOWR#) . 5- (), .

. 2 5411 ( 0000H 07FFH) 4 5378 ( 0800H 17FFH). . ( ) . , CS ( ) (), , . . MEMRD# . WR#/RD , MREQ# . , / , : .

-

14 . . 5 -.

. CS0#CS13#, /. ( ) CSi# IORD# . CSi# IOWR# .

- 3 16- ( 14 CS0#CS13#). , , , .

(0C-0D) , A0 , .

. , 00 01 ( CS0# CS1#). . , . 11131. 10- [0..10,5] [-5,5..5,5]. , 15 (Z1) . 13 ( A). () 11 (RES) . ( 30 ). D0D9 , 17 (RDY) 0, . .

RDY : 82 IR2 .

RES , , IRQ2. , , ( , ) . , , .

( 02). D-. CS2# IOWR# D0 . D0=1, , D0=0.

(8 ). , . CS3# ( )CS10# ( ).

. VS . ( 8 ). , , . VS (03..0A), (13..1A).

, 4 . , . , , A4 . A4=1, , , . , . VS A4=0.

8- , , VS .

. ( 0B) , ( 1 2 ). , .

2 : D0 1 ( 1 ), D1 2. , , .

( 0C 0D). : CS12# CS13#, , .


. , ; - . : , , , . , : (, ), . (, , / ), , . , T1 T2, . : , ().

.

1)  IRQ0. 0-1 1. T1 T2.

2)  IRQ1. 1-0 2 , , . Vi, VS .

3)  IRQ2. . 2 .

4)  IRQ3. 16 . ( ):

:
T1 xxxxxx01
T2 xxxxxx01 xxxxxx11
(xxxxxx00 xxxxxx10)

5)  IRQ4 6) IRQ5. + + . () .

6)  , , 1-0 1 0-1 2 . . : . IRQ3 , .. , , (. ).

IRQi IR0IR5 ( 01). . IR0, IR5. , , : , ( ) , , ( ).

INT . , INTA .

. ( ) SP=0 .

CS . A0 . CAS0CAS2 . D0D7 .

. . .

 

. , , , , .

00 FF. - , E_RAM, HL .

1:

; ( 080017FF)

TST_RAM LD HL, 0800 ; HL

TST_RAM1 XOR A ; A=0

LD (HL), A ; 0

LD A, (HL) ;

OR A ;

JP NZ, E_RAM ; ,

CPL ; A (A=FF)

LD (HL), A ; FF

LD A, (HL) ;

INC A ; A=FF, A=FF+1=0

JP NZ, E_RAM ;

INC HL ;

LD A, H ;

CP #18 ;

JR NZ, TST_RAM1 ;

; ,

E_RAM ( 1) (, 1 12AF). , ( E_RAM JP, CALL). , ( ) .

8- 03..0A 13..1A (. .3.3). 0A ( 1A) , 03 ( 13) .

16 , 0700:

0700 3F 06 5B 4F 66 6D 7D 07 ; 07

0708 7F 6F 77 7C 39 5E 79 71 ; 8F

, .

, E_RAM , .

2: E_RAM,

; ( E1)

E_RAM EX DE, HL ; - HL DE

LD H, #07 ; H

LD A, E ;

AND #0F ; E

LD L, A ;

LD C, (HL) ; C

; C=, 8-

LD A, D ;

AND #0F ; D

LD L, A ;

LD B, (HL) ; B=, 6-

SRL D ; D (0DCY)

SRL D ;

SRL D ;

SRL D ;

SRL E ; E (0DCY)

SRL E ;

SRL E ;

SRL E ;

LD L, E ;

LD E, (HL) ; E=, 7-

LD L, D ;

LD D, (HL) ; D=, 5-

;

E_RAM1 LD A, #79; A E

OUT (#0A), A ; 1-

OUT (#1A), A ;

LD A, #06 ; A1

OUT (#09), A ; 2-

OUT (#19), A ;

XOR A ; A ()

OUT (#08), A ; 3-

OUT (#18), A ;

OUT (#07), A ; 4-

OUT (#17), A ;

LD A, D ; DBEC 5678

OUT (#06), A ;

OUT (#16), A ;

LD A, B ;

OUT (#05), A ;

OUT (#15), A ;

LD A, E ;

OUT (#04), A ;

OUT (#14), A ;

LD A, C ;

OUT (#03), A ;

OUT (#13), A ;

JR E_RAM1 ;


, .. , . , ( , , ).

( , ) . . : . , , (17FF) , .

, E_ROM, E 2, .

3:

;

TST_ROM XOR A ; A=0

LD H, A ;

LD L, A ; HL=0

TST_ROM1 ADD A, (HL) ; AA+(HL)

INC HL ; 1

LD B, A ; A

LD A, H ; ,

CP #08 ;

LD A, B ; A

JR NZ, TST_ROM1;

OR A ; , A

LD E, 2 ;

JP NZ, E_ROM ; ,

; ,

E_ROM (E2), . .

4: E_ROM,

; ( E2)

E_ROM LD A, #79 ; AE

OUT (#0A), A ;

LD A, E ; A (2)

OUT (#09), A ;

XOR A ; A0

LD C, #08 ;

LD D, #18 ;

LD B, 6 ;

E_ROM1 OUT (C), A ;

OUT (D), A ;

DEC C ;

DEC D ;

DJNZ E_ROM1 ;

JR E_ROM ;


. , , , , . (.. ). E3.

( 0B) . , . E_ROM, E 3 ( ).

5:

; 0

TST_FEL IN A, (#0B) ;

AND 3 ; 000000112

LD E, 3 ;

JP NZ, E_ROM ; ,

;

ICW1 ICW2, 0C (A0=0), 0D (A0=1).

:

. 6

ICW1 ( ) ( 1), 4- ( 2).

57 ICW1 ICW2 , ( IR0) 0020.

. , , IR0, , .. . 4 ( 2 ICW1 , ), 8 ( 2 ). (IR0).

ICW2 ( ) 7,6,5 ICW1 ( ).

00, 0010 0000 = 20. : 0020H, 0024H, 0028H, 002CH, 0030H, 0034H (6 ).

INI_PIC .

6:

; 38H 0CH 0 0DH

INI_PIC LD A, #38 ;

OUT (#0C), A ;

XOR A ;

OUT (#0D), A ;

. , VS V_SUM, V_SUM+1.

( ):

VS (2 ) V_SUM;

(4 ) TIME.

, (V_SUM TIME) (, , , ). .

7:

;

INI_VAR XOR A ;

LD (V_SUM), A ;

LD (V_SUM+1), A ;

LD (V_SUM+2), A ;

LD (TIME), A ;

LD (TIME+1), A ;

LD (TIME+2), A ;

LD (TIME+3), A ;

; ( . .4.4).


: , , , . : - .

1 , 1 . , , . . 0,01H=1/256=3,9×10-3, FF,FF=256,996.

:

-  , ;

-  , , , HL DE, HL. HL.

Z80 ADD HL, DE. , , .

8: PLUS

;

; HL+DEHL

; A, BC, DE

PLUS ADD HL, DE ;

RET ;

Z80 SBC HL, DE. , CY.

9: MINUS

;

; HLDEHL

; A, BC, DE

MINUS OR A ; A , CY=0

SBC HL, DE ;

RET ;

BC ( HL ), DE. HL.DE, H.L.

HLDE. 16 HLDE DE , HL . (BC) HLDE (HL). , HLDE DE .

10: MUL

;

; HL´DEHL

;

MUL LD B, H ; BC=1-

LD C, L ;

LD HL, 0 ; HL=0

LD A, 16 ;

MUL2 SRL H ; 0HLDECY

RR L ;

RR D ;

RR E ;

JR NC, MUL1 ; 0,

ADD HL, BC ; 1,

MUL1 DEC A ;

JR NZ, MUL2 ;

LD H, L ; HL.DE

LD L, D ; L.D H.L

RET

HL, DE. [.L] ( ), H H.L. BC .

24- . BCHL0, .. HL BC. BC DE ( BCDE ). BC>DE, HL , . .

16 HL , BC , DE . HL , HL . 8- BCHL BC . 24- L , .

11: DIV

;

; HL/DEHL

; DE, (2 )

DIV LD BC, 0 ;

LD A, 24 ;

DIV4 PUSH AF ;

ADD HL, HL ; BCHL0

RL C ;

RL B ;


LD A, C ;

SUB E ;

LD C, A ;

LD A, B ;

SBC D ;

LD B, A ;

JR NC, DIV1 ; BC>DE,

LD A, C ;

ADD E ;

LD C, A ;

LD A, B ;

ADC D ;

LD B, A ;

JR DIV2 ;

DIV1 INC HL ; BC>DE:

; 1

DIV2 POP AF ;

CP #09 ; , 16-

JR NZ, DIV3 ;

PUSH HL ; 16- , HL ,

; ,

;

LD HL, 0 ;

DIV3 DEC A ;

JR NZ, DIV4 ;

POP BC ;

LD H, C ; H.L

RET ;

, :

, a 0 p/2. (6)

8,9×10-4, , [1].[1] .

(7)

(7) (6) . , n , b . ( COS_A) :

HL = a2;

DE = b;

BC = n n.0 (B=n, C=0).

HL

.

12: COS_A

;

; : HL, DE, BC

;

COS_A PUSH BC ; n MUL

CALL MUL ; HL=HL´DE

POP DE ; DE=n

CALL DIV ; HL=HL/DE

LD D, 1 ; DE=1.0

LD E, 0 ;

EX HL, DE ;

CALL MINUS ; HL=HL-DE

RET ;

HL.

13: COS

;

; HL

;

COS LD D, H ;

LD E, L ;

CALL MUL ; HL=a2

PUSH HL ; a2

LD D, 1 ; DE=1.0

LD E, 0 ;

LD B, #1E ; BC=1E.0H=30

LD C, 0 ;

CALL COS_A ; HL=1-a2/30

EX HL, DE ;

POP HL ; HL=a2

PUSH HL ; a2

LD B, #0C ; BC=C.0H=12

LD C, 0 ;

CALL COS_A ; HL=1-a2/12(1-a2/30)

EX HL, DE ;

POP HL ; HL=a2

LD B, #02 ; BC=2.0

LD C, 0 ;

CALL COS_A ; HL=1-a2/2[1-a2/12(1-a2/30)]

RET ;


-

[12].[34] - [123.45] .

: ( B2D) [12] ( B2D_F) [34].

B2D C (0..FFH) 2-10 , HL. :

HL=(((c7)×2+c6)×2++c1)×2+c0,

ci C, ci ( DAA ).

14: B2D

; () 2-10

; C , HL

; DE

B2D LD B, 8 ;

B2D1 SLA C ; CYC ( )

LD A, L ; HL CY

ADC L ;

DAA ;

LD L, A ;

LD A, H ;

ADC H ;

DAA ;

LD H, A ;

DJNZ B2D1 ;

RET ;

B2D_F 0.L 2-10 0.ABC ( ). A, B, C . . 0.L 10, H.L. (H) A . H , 0.L 10 ..

10 MUL10, HL ( H=0) HL. :

10×HL=2×HL+8×HL, 2 8 ADD HL, HL.

15: B2D_F MUL10

; () 2-10

; C , ABC

;

B2D_F LD H, 0 ;

CALL MUL10 ; H

LD A, H ; A

LD H, 0 ; H

CALL MUL10 ;

LD B, H ; B

LD H, 0 ;

CALL MUL10 ; C

LD C, H ;

RET

; 10

; HL ( L) HL

; A, BC

MUL10 ADD HL, HL ; HL×10=HL×2+HL×8

LD D, H ;

LD E, L ;

ADD HL, HL ;

ADD HL, HL ;

ADD HL, DE ;

RET ;

. ( , .. CALL ). - A (0..9, ).

16: D27

;

; (0..9) A

; BC, DE

D27 LD H, #07 ;

LD L, A ;

LD A, (HL) ;

RET ;


. . RET, RETI.

IRQ0 ( )

T1 T2, D_NUM (2 ). Ud . IRQ0, , .

17: IRQ0

; T1, T2, D_NUM

IR0_H PUSH BC ;

PUSH AF ;

LD BC, 0 ;

LD (T1), BC ; T1

LD (T2), BC ; T2

LD (D_NUM), BC ; D_NUM

POP AF ;

POP BC ;

RETI ;

IRQ2 ( )

( , 0B), 00 () 01 (). , 0100 ( 2). , . D_NUM, .

18: IRQ2

;

IR2_H PUSH BC ;

PUSH HL ;

PUSH AF ;

IN A, (#0B) ;

AND #02 ; 000000010

JR Z, IR2_H1 ; ,

LD HL, #1000 ;

LD C, (D_NUM) ; D_NUM

LD B, (D_NUM+1) ;

SLA C ; 2

RL B ;

ADD HL, BC ; HL

LD A, H ;

CP #18 ;

JR NC, IR2_H1 ; ,

IN A, (#00) ;

LD (HL), A ;

INC HL ;

IN A, (#01) ;

LD (HL), A ;

INC BC ; D_NUM

LD (D_NUM), BC ;

IR2_H1 POP AF ;

POP HL ;

POP BC ;

RETI ;

IRQ3 ( 16 )

. 4 :

TIME 1/16 (0..15);

TIME+1 (0..59);

TIME+2 (0..59);

TIME+3 (0..23);

.

T1 T2 2 T1 T2. , , . 3.4.

19: IRQ3

;

IR3_H PUSH BC ;

PUSH HL ;

PUSH AF ;

;

LD HL, TIME ;

INC (HL) ; 1/16

LD A, (HL) ;

CP 16 ; ࠠ JR C, IR3_H1 ;

LD (HL), 0 ; 1/16

INC HL ;

LD B, 2 ;

IR3_H2 INC (HL) ;

LD A, (HL) ;

CP 60 ;

JR C, IR3_H1 ;

LD (HL), 0 ;

INC HL ;

DJNZ IR3_H2 ;

INC (HL) ;

LD A, (HL) ;

CP 24 ;

JR C, IR3_H1 ;

XOR A ; =24

LD (HL), A ; 4

DEC HL ;

LD (HL), A ;

DEC HL ;

LD (HL), A ;

DEC HL ;

LD (HL), A ;

;

IR3_H1 IN A, (#0B) ;

AND 1 ;

JR Z, IR3_H3 ; 1- ,

LD HL, T2 ; 2

INC (HL) ;

JR NZ, IR3_H4 ;

; 2,

INC HL ; 1

INC (HL) ;

IR3_H4 IN A, (#0B) ;

AND 2 ; 2-

JR Z, IR3_H3 ; ,

LD HL, T1 ; 1

INC (HL) ;

JR NZ, IR3_H3 ;

INC HL ;

INC (HL) ;

IR3_H3 POP AF ;

POP HL ;

POP BC ;

RETI ;

IRQ4 ( +)

( TIME+3).

20: IRQ4

;

IR4_H PUSH HL ;

PUSH AF ;

LD HL, TIME+3;

INC (HL) ;

LD A, (HL) ;

CP 24 ;

JR C, IR4_H1 ;

XOR A ; =24

LD (HL), A ;

DEC HL ;

LD (HL), A ;

IR4_H1 POP AF ;

POP HL ;

RETI

IRQ5 ( +)

( TIME+2).

21: IRQ5

;

IR5_H PUSH HL ;

PUSH AF ;

LD HL, TIME+2;

INC (HL) ;

LD A, (HL) ;

CP 60 ;

JR C, IR5_H1 ;

XOR A ; =60

LD (HL), A ;

INC HL ;

INC (HL) ;

LD A, (HL) ; 24

CP 24 ;

JR C, IR5_H1 ;

XOR A ; =24

LD (HL), A ;

IR4_H1 POP AF ;

POP HL ;

RETI

IRQ1 ( 2)

IRQ1 . . : , , Vi, VS.

, , : (D_NUM). ( ), , 16 . 16, . , .

a=.

d=0,625 0,5cos a=00,A0H 00,80Hcos a. DIAM (2 ). [0,2..0,5]=[0,33H..0,8H]. , ( 02H) .

Vi Vi=(p/4)d2×T1/T2=0,C9H×d2×T1/T2.

22: IRQ1

;

; 1000H

IR1_H PUSH AF ;

PUSH BC ;

PUSH DE ;

PUSH HL ;

LD L, (D_NUM) ;

LD H, (D_NUM+1) ;

LD B, 4 ; D_NUM 16

IR1_H1 SRL H ;

RR L ;

DJNZ IR1_H1 ;

LD C, L ; C= 16

PUSH BC ;

LD HL, #1000 ;

LD DE, 0 ; DE

PUSH DE ; , C

PUSH DE ; DE ,

; ,

; C

IR1_H4 LD B, 16 ;

IR1_H2 LD E, (HL) ; DE

INC HL ;

LD D, (HL) ;

INC HL ;

EX (SP), HL ; HL,

ADD HL, DE ;

EX (SP), HL ; , HL

DJNZ IR1_H2 ;

; 16

; HL

POP DE ;

LD B, 4 ; ,

IR1_H3 SRL D ; DE 16

RR E ;

DJNZ IR1_H3 ;

POP HL ;

ADD HL, DE ;

PUSH HL ; :

PUSH DE ;

DEC C ;

JR NZ, IR1_H4 ;

POP HL ;

POP HL ;

POP BC ; C

LD D, C ; DE=C.0

LD E, 0 ;

CALL DIV ;

; HL=Ud=

; a, cos a, d

LD D, 4 ; DE=491H

LD E, #91 ;

LD B, H ; Ud BC

LD C, L ;

EX DE, HL ;

CALL MINUS ; HL=491H-Ud

EX HL, DE ;

LD H, B ;

LD L, C ;

CALL DIV ; HL= Ud/(491H-Ud)

LD D, 0 ;

LD E, #4F ;

CALL MUL ; HL=a

CALL COS ; HL=cos a

LD D, 0 ;

LD E, #80 ;

CALL MUL ; HL=0,5cos a

LD D, 0 ;

LD E, #A0 ;

EX HL, DE ;

CALL MINUS ; HL=0,625-0,5cos a=d

LD (DIAM), HL ;

;

LD A, L ;

CP #33 ;

JR NC, IR1_H5 ; d>20,

LD A, 1 ; 1

OUT (#02), A ;

JR IR1_OUT ; ,

IR1_H5 LD A, L ;

CP #80 ;

JR C, IR1_H6 ; d<50,

LD A, 1 ; 1

OUT (#02), A ;

; Vi, VS

IR1_H6 LD L, (T1) ;

LD H, (T1+1) ;

LD E, (T2) ;

LD D, (T2+1) ;

CALL DIV ; HL=T1/T2

LD E, (DIAM) ;

LD D, (DIAM+1) ;

PUSH DE ;

CALL MUL ; HL=T1×d/T2

POP DE ;

CALL MUL ; HL=T1×d2/T2

LD D, 0 ;

LD E, #C9 ;

CALL MUL ; HL=(p/4)T1×d2/T2=Vi

EX HL, DE ;

LD L, (V_SUM) ;

LD H, (V_SUM+1) ;

CALL PLUS ; HL=VS

LD (V_SUM), HL ;

IR1_OUT POP HL ;

POP DE ;

POP BC ;

POP AF ;

RETI ;

, , , , , .

:

VS V_SUM, 2-10 ( B2D, B2D_F), ( D27) (03-0A), 06;

TIME (TIME+1, TIME+2, TIME+3), 2-10 , (13-1A), 13, 15, 17.

. 7

23:

;

;

MAIN LD E, (V_SUM) ;

LD D, (V_SUM+1) ; D.E

; D

LD C, D ;

CALL B2D ; HL=2-10 D

LD A, H ;

CALL D27 ;

OUT (#08), A ;

LD A, H ;

AND #0F ;

CALL D27 ;

OR #80 ;

OUT (#06), A ;

LD A, H ;

RR A ;

RR A ;

RR A ;

RR A ;

AND #0F ;

CALL D27 ;

OUT (#07), A ;

; E

LD L, E ;

CALL B2D_F ; ABC= 2-10 0.L

CALL D27 ;

OUT (#05), A ;

LD A, B ;

CALL D27 ;

OUT (#04), A ;

LD A, C ;

CALL D27 ;

OUT (#03), A ;

;

LD HL, (TIME+1) ; HL=

LD B, #13 ;

MAIN1 PUSH HL ;

LD A, (HL) ;

LD C, A ;

CALL B2D ; HL=2-10 // ( =0)

LD A, L ;

AND #0F ;

CALL D27 ;

OR #80 ;

OUT (B), A ;

INC B ;

LD A, L ;

RR A ;

RR A ;

RR A ;

RR A ;

AND #0F ;

CALL D27 ;

OUT (B), A ;

INC B ;

POP HL ;

INC HL ; (TIME+2, TIME+3)

LD A, B ;

CP #08 ;

JR NZ, MAIN1 ;

JP MAIN ;

, .

0000 DI
0001

TST_RAM

JR 0038

0020

0020 JP IR_H0

0024 JP IR_H1

0028 JP IR_H2

002C JP IR_H3

0030 JP IR_H4

0034 JP IR_H5

0038

(TST_RAM)

TST_ROM

TST_FEL

INI_PIC

INI_VAR

EI
LD SP, #0FFF

MAIN

E_RAM

E_ROM

PLUS

MINUS

MUL

DIV

COS_A

COS

B2D

B2D_F

MUL10

D27

IR_H0

IR_H1

IR_H2

IR_H3

IR_H4

IR_H5

00000000
0700
070F 00000000
07FF ( )

.

0800 V_SUM
0802 DIAM
0804 TIME
0808 T1
080A T2
080C D_NUM
080D
0FFF
1000

(2)

1FFF

, , . , , . .


. . .
DD1 Z-80 1
DD2, DD4 15513 2
DD3, DD5 5378 2
DD6 11181 1
DD7 5465 1
DD8 1553 1
DD9 5411 1
DD10 58059 1
DD11 1557 1

Rd

-5.1 1
R1, R3 -10 4

R 2, R

-1 3
R9, R10

-1-13

467 003

2
R11, R12

-1-510

467 003

2

R8,

R13 R16

-0.5-1

467 003

C1, C8, C9

16 0,47

462 014

7
C6

16 0,1

462 014

1
C7

16 0,15

462 014

1
1

2101 420 000 019

.

.

.

,

.

.

.

.

.

. Ж311

..

.

.



?