• Aucun résultat trouvé

UNMASK ALL INTERRUPTS

Dans le document Driver Designer's Manual RTEĆA (Page 124-138)

CLC 30B,C CLEAR CARD SPC 2

* THE BELOW CODE SERVES AS AN EXAMPLE OF HOW PRIVILEGED DRIVERS

* MAY COMPLETE A REQUEST TO THE OPERATING SYSTEM WITH MINIMUM LATENCY SPC 1

CLC 4 INTERRUPTS OFF

* UPDATE SYSTEM FLAGS – ”T” WOULD BE MEANINGLESS LDB IFT7 ADDR OF IFT7

* ENQUEUE THIS IFT ON ”$Q.PV” QUEUE OF PRIVILEGED IFTS REQUIRING

* PHYSICAL DONE PROCESSING SO THAT I/O SYSTEM WILL PERFORM A P.D.

* FOR THIS IFT RATHER THAN RETURN IMMEDIATELY TO USER PROGRAM

* WHEN THE CURRENT SYSTEM PROCESS COMPLETES.

* IF THIS IS A PROBLEM, THE PRIVILEGED DRIVER

* SHOULD RUN WITH INTERRUPTS OFF. THE TBG TICK

* WILL THEN BE DELAYED (NOT LOST).

*

OTA 0 UNMASK ALL INTERRUPTS

&:22222* 2

* HERE WHEN MEMORY PROTECT WAS ON SO THAT I/O SYSTEM

* CAN BE ENTERED DIRECTLY FOR PHYSICAL DONE

* ENTER IOC WITH B REGISTER POINTING TO THE IFT WORD 1 STC 4 INTERRUPTS ON

* 2 22222&.

CLC 30B,C ENSURE PR DISABLED CLA

JMP ID.51,I PHYSICAL DONE EXIT SPC 3

* TIME–OUT TMOUT LDA B3

JMP DONEX+1 RETURN ERROR 3 SPC 3

* DATA AREA IFT7 NOP IFTX NOP DVT16 NOP BUFAD NOP NEGAD NOP NRANG NOP

#WD NOP

*

WMAP NOP EOSV NOP QSAV NOP ZSAV NOP GLOBL NOP MPFSV NOP INTMASK NOP

*

#MEAS DEC 0,0 MEASX DEC 0,0

*

B1 OCT 1 B2 OCT 2 B3 OCT 3 B7 OCT 7 B4000 OCT 4000 B7700 OCT 7700

*

N6 DEC –6 BN7 OCT 140001

*

ASV BSS 2

*

END

)8(2 2*,,22222#

)8( *,,

, V # 5 &%(

@ 15& * +

C

% > ;%"

;%"

( 0"> 66>

* H + @

!

0 '

$ / 15&

$

* !% + - .

@ * +

" 66 @

! - #@ "0 C 0">%66>

0 : ' @ 03 : '

#-22222)8(2 2*,,

2 ' #@ 2" 2! 20 /

3 15& #@ 0" 0! 00 02

K "0 "2 K

J * % + , "0

*2" 2! 20+

/

15&

/

15&

57

<

@

OTA/B 2 9 - # &>

LIA/B 2 # - # &>

LIA/B 2,C # MIA/B 2 5 &> # MIA/B 2,C 5

0">%63>I

@ '9, 0 $ - # (, 0 1 - # @

(,( 0 ( (,' 0 (

& K 0 "0 C "0 K "0

C 0">%63>

% #$%&

)8(2 2*,,22222#9

= *

# 03 : ' / *Q!+ :' / :'

1 03 :' :' , 03

> 03@

LIA 24B

CONT SZA,RSS REMOTE CONTROL INTERRUPT?

JMP CONT1 NO. CONTINUE PROCESSING CLA YES.

OTA 24B CLEAR INDICATOR REGISTER *

* PERFORM ESSENTIALLY THE SAME PROCESS AS IF * A POWER-FAIL RESTART. EXAMPLE BELOW.

*

PWRFL LDB $IF6,I GET AVAILABILITY SSB,RSS BUSY?

JMP BRK NO. RESET ANY ASYNCH INTERRUPTS EXPECTED.

LDA REDO RESTART REQUEST IN PROGRESS

STA $DV16,I DON’T DOWN,DON’T FLUSH,NO ERR MESS CLC ZIB,C

CLC 23B,C TERM ANY DMA SO NO CONFLICT ON REENTRY JSB STAT

CLA SYSTEM FLAGS = 0 JMP ID.XX,I ”DONE” EXIT.

*

REDO OCT 100077 ”D” BIT + ERROR CODE 63 *

CONT1 EQU *

* NORMAL PROCESSING CONTINUE HERE

03 @ CLA

OTA 24B

#%22222)8(2 2*,,

2" 2! 20 AA 2" 20

LIA/B XX Move card register to A/B register LIA/B XX,C Move and clear the flag

MIA/B XX Merge card register into A/B register MIA/B XX,C Merge and clear the flag

SFS XX Skip if the flag set SFC XX Skip if the flag clear STC XX Set device control

STC XX,C Set control and clear flag STF XX Set the flag

CLF XX Clear the flag

# 2" & & I 9&

# 2! & & F G ' H

& 9& 20

# 20 C

.(4- $ '&#1 #$-($#( ,# 4.

LDA CNTRL Get control word

OTA 31B Output to card STC 30B,C Start device ...

*2"+ ,9&-2"

,9&- 2" @ SFS 30B Wait for data flag ready

JMP *–1

LIA 30B Now get data

,9&- @

STC 30B,C

C @ CLC 30B,C

)8(2 2*,,22222#$

.(4- $ '&#1 #$-($#( ,# ..

LDA CNTRL Get control word

OTA 31B Output to card

LDA DATA,I Get first data word OTA 30B Send to card

STC 30B,C Start the card going ...

C ,9&- 2"

4. @ ISZ DATA Increment the data pointer

LDA DATA,I Get next data word OTA 30B Send to the card STC 30B,C Restart the device ...

& @

CLC 30B,C Clear card control and flag bits

&

15& @

G *!

0" 15& (%' # 0! 15& ' #

00 & #

02 1 ' #

% 15&

* / + C 15&

C

#:22222)8(2 2*,,

)

/ / % 15& @ LDB $DV1 SET THE PORT MAP

JSB $SETR

IOR CNTL GET DMA CONTROL WORD

OTA 21B OUTPUT TO CONTROL REGISTER LDA ADDR GET ADDRESS OF MEMORY BLOCK OTA 22B OUTPUT TO DMA ADDRESS REGISTER LDA CNT GET DATA COUNT

OTA 23B OUTPUT TO DATA COUNT REGISTER STC 21B,C START DMA AND CLEAR INTERRUPT FLAG ...

...

CNTL BSS 1 SET UP BY PROGRAM TO DESCRIBE TRANSFER ADDR DEF BUFR POINTS TO STORAGE

CNT BSS 1 DATA COUNT STORED HERE AS NEGATIVE VALUE

K !2

/ K @ LDA PNTR GET ADDRESS OF CHAIN

OTA 20B TELL IT TO I/O CHIP

STC 20B,C CLEAR INTERRUPT FLAG AND START CHAIN

& 15&

CONT EQU 100000B CONTINUE SELF-CONFIGURATION CHAIN DEVCM EQU 040000B ISSUE DEV COM PULSE AFTER EA WD/BYTE BYTE EQU 020000B DATA COUNT IS IN BYTES

RES EQU 010000B OVERWRITE DATA COUNT WITH RESIDUE AT END CINT EQU 004000B INHIBIT DMA INTERRUPT FLAG

REM EQU 002000B USE REMOTE MEMORY

FOUR EQU 001000B THIS LINK IS A QUADRUPLET AUTO EQU 000400B DON’T WAIT FOR SRQ FROM DEVICE IN EQU 000200B TRANSFER IS TO MEMORY FROM DEVICE RELOC .... MUST BE OR’ED INTO CONTROL WORD BEFORE * STARTING THE TRANSFER

*

PNTR DEF BUFR *

BUFR ABS CONT+AUTO+RELOC DMA CONTROL: OUTPUT TRIPLET DEF DATA ADDRESS OF MEMORY BLOCK

CNT1 DEC –10 NEG OF WORD COUNT IN DATA *

ABS CONT+AUTO+IN+RELOC DMA CONTROL: INPUT TRIPLET DEF INPT ADDRESS OF INPUT BUFFER

CNT2 DEC –10 NEG # WORDS IN INPUT BUFFER *

ABS BYTE+AUTO+FOUR+RELOC DMA CONTROL:LAST LINK IS QUADRUP.

DEF CTRL THIS IS A CONTROL WORD FOR I/O CARD DEF DONE ADDRESS OF LAST BLOCK

)8(2 2*,,22222#.

DEF CNT3 BYTE COUNT OF BLOCK AT DONE BUFFER *

DATA BSS 10 OUTPUT DATA BUFFER INPT BSS 15 INPUT DATA BUFFER DONE BSS 5 FINAL BUFFER IN CHAIN ...

F% G 0! 00 02 0" &

0"

0"

F,.#G 15&

2! ( / 0! 00 02 Q

% 15&

* + * / +

% / 0! 00 02

,

& 15& @

! Q! "

02 , % 15&

0 $%%

K , L 02 15&

2 5 15&

15&

15& ,

F G *15& + 02 *9&> 02+

#$( 15&

* + &

#&22222)8(2 2*,,

6 1

0" 02

)

0" (' $ 15& % '9' ( %

(, ( %

'9, ' % (,(

0! (' $ %

'9' ( 15&

(, ( 15&

'9, ' 15&

(,( 15& * + 00 (' 4 I 4

'9' & 15&

% (, ( 15&

'9, ' 15&

(,( 15&

02 (' 4 I 4

'9' & % (, ( @ 0" 0! 00

'9, ' @ 0" 0! 00

(,( *0" 0! 00+

C F G (' F15& G 15&

15& %

& 15& ; @

, 0"@ ( , 0"

K 0" 0!

, 0!@ ( % 9 0" K % 0! 0"

, 00@ ( 15& . 0" 0! 00 '4 15&

, 02@ # 0" 0! 00

, 2"@ ( 15& ( %15&

0!2 )>

)>- 0!2

0!2 )>9

( 0%7

6%2 0%!3 8%! 8%0 8%!

?($9# 6%7 ($9# 6%7

?($# 6%6 1: , ?1' 6%!

?($5 6%;

($5 6%;

($# 6%6

!%0 2%; ;%3 <%!

8%3 ;%;

0%!3 2%; 2%< 3%;

0%!<

<%0 <%2

*>-+ !%;

0%!2 3%3 3%<

2%3

;%3 <%!

;%3 0

9. , . 6%0 ?. 6%0

. 6%0 . 6%0 / <%!

=

8%2 8%2

C# 6%<

?C# 6%<

?4$C 6%6 F

AB(> 6%2 A

= 0%!! ;%0 <%0 K ;%2

! !! !!!!!

Dans le document Driver Designer's Manual RTEĆA (Page 124-138)

Documents relatifs