• Aucun résultat trouvé

A SIG~IFICANT EVENT OR EQUIVALENT IS DECLARED

Dans le document M-PLUS Guide to Writing an I/O Driver (Page 184-191)

,-T~IS ROUTINE IS CALLED TO FI~ISH 1/0 PROCESSING IN CASES ~MERE TME UNIT AND CONTROLLER ARE ~OT TO BE DECLARED IDL~. IF T~E TAS~ wHICH ISSUED THE 110 HAS ~AD A RECENT ~APPING CHANGE wHIC~ ~AY HAVE UN~APPED ITS 1/0 STATUS BLOCK, T~E 110 PACKET IS QUEUED TO T~E F~ONT Of ITS AST QUEUE TO EE COMPLETED LAT~R IN $FINBF BY CALLING SIOFIN AGAIN.

INPLTS,

R0:FIRST 110 STATUS wORD.

Rl=SECOND 110 STATUS ~ORD.

R3=ADDRESS OF THE 110 R~QUEST PAC~ET.

OUTFUTSI

THE FOLLO~ING ACTIONS ARE PERFORMED

1-THE FINAL 1/0 STATUS VALUES ARE STORED IN THE 1/0 STATUS BLOCK I~

ONE wAS SPECIFIED.

2-ALL ASSOCIATED 110 COUNTS ARE DECRE~ENTED AND TS.RON IS CLEARED IN CASE THE TASK WAS BLOCKED FOR 1/0 RUNOO~N.

T3.~PC IS CLEARED IF THE TASK 1/0 COUNT GOES TO ZERO TO INDICATE TH~T THE 1/0 COUNT ~ENT TO ZERO AFTER A MAPPING CHANGE.

3-IF ·TS.C~R' IS SET, THEN IT IS CLEARED AND CHECKPOINTING O~

THE TASK IS INITIATED.

4-IF AN AST SERVICE ROUTINE wAS SPECIFIED, THEN AN AST IS QUEUED FOR THE TASK. ELSE THE 1/0 PAC~ET IS DEALLOCATED.

S-A SIG~IFICANT EVENT OR EQUIVALENT IS DECLARED.

NDTEr R4 IS DESTROVED BY THIS ROUTINE.

7-28

EXECUTIVE SERVICES AVAILABLE TO AN I/O DRIVER

$MPUBM

7.4.22 Map UNIBUS to Memory

This routine is in the file MEMAP. It is used only for NPR devices requiring UNIBUS Mapping Registers when 22-bit memory addressing is enabled. See Section 7.3 for a discussion.

Calling Sequence:

CALL $MPUBM Description:

,+

, **-SMPUBM-M.P UNIBUS TO MEMORY

,

, THIS ROUTINE IS CALLED BV UNIBUS NPR DEVICE DRIvERS TO LOAD THE , NECESSARY UNIBUS MAP REGISTERS TO EFFECT A TRANSFER TO MAIN MEM-, ORY ON AN 11/70 PROCESSOR wITH EXTENDED MEMORY.

J , INPUTS,

r r RQ-'DDRESS OF DEVICE SCB, r RS.ADDRESS OF DEVICE UCB,

,

J OUTPUTS,

,

, THE UNIBUS MAP REGISTERS NECESSARV TO EFFECT THE TRANSFER

J ARE LOADED.

,

, NOTE. REGISTER R3 IS PRESERVED ACROSS CALL,

,-EXECUTIVE SERVICES AVAILABLE TO AN I/O DRIVER

$MPUB1

7.4.23 Map UNIBUS to Memory (Alternate Entry)

This routine is in file MEMAP. It is used only for NPR devices that require UNIBUS Mapping Registers when 22-bit memory addressing is enabled and for support parallel operations.

Calling Sequences:

CALL $MPUBI Description:

,+

, **-SMPUB1-MAP UNI8US TO ~lMORY (ALT~R~ATE ENTRY).

THIS ROUTINE IS CALLED BY UNIBUS NPR DEVICE DRIVERS TO LOAD THE NECESSARY UNIBUS MAP REGISTERS TO EFFECT • TRANSFER TO MAIN

1 MEMORY ON AN 11/7~ PROCESSOR wITH EXTENDED MEMORY. THIS ALTERNATE ENTRY POINT ALLO~S THE DRIVER TO SPECIFY A NON-STANDARD UMR MAPPING

ASSIG~MENT RLOCK.

INPUTS,

R~=AODRESS OF A UMR MAPPING ASSIGNMlNT BLOCK.

OUTPUTS,

T"E U~IBUS ~AP REGIST~RS NECESSARY TO EFFECT THl

T~ANSFE~ ARE LOADED.

NOTE: ~EGISTER ~1 IS PRESE~VED ACROSS CALL.

7-30

EXECUTIVE SERVICES AVAILABLE TO AN I/O DRIVER

$PTBYT

7.4.24 Put Byte

Put Byte is in the file BFCTL. Put Byte manipulates words U.BUF and U.BUF+2 in the UCB.

Calling Sequence:

CALL $PTBYT Description:

;+

J **-SPTBYT-PUT ~EXT 8YTE I~ USE~ BUFFER

T~IS ROUTINE IS CALLED TO PUT A BYTE I~ THE ~EXT LOCATION IN USER 8UFFER. AFTER T~E 8YTt HAS 8EE~ STORED, THE NEXT BYTE ADDRESS IS INCREMENTED.

INPUTS.

RS.ADORESS OF T~E UCB THAT CO~TAINS THE BUFFER POINTERS.

2CSP)=BYTE TO BE STORED IN THE NEXT LOCATION OF THE USER BUFFER.

OUTPUTS.

THE BYTE IS STORED IN THE USER BUFFER AND REMOVED FROM THE STACK. T~E NEXT BYTE ADDRESS IS INCREMENTED.

: ALL REGISTERS ARE PRESERVED ACROSS CALL.

,-EXECUTIVE SERVICES AVAILABLE TO AN I/O DRIVER

$PTWRD

7.4.25 Put Word

Put Word is in the file BFCTL. It manipulates words U.BUF and U.BUF+2 in the UCB.

Callinq Sequence:

C,\LL $PTWRD Description:

, +

, •• -SPTWRD-PUT ~EXT WORD IN USER BUFFER

,-THIS ROUTI~E IS CALED TO PUT A wORD I~ THE NExT LOCATION IN

USER BUFFER. AFTER THE WORD HAS BEEN STORED, THE NEXT WORD ADDRESS IS CALCULATED.

I~PUTSI

RS.ADDRESS OF THE UCB THAT CONTAINS THE BUFFER POINTERS.

2(SP).WORD TO BE STORED IN THE ~EXT LOCATION OF THE BUFFER.

OUTPUTS,

THE wORD IS STORED IN THE USER BUFFER AND REMOVED FROM THE STAC~. THE NEXT WORD ADDRESS IS CALCULATED.

ALL REGISTERS ARE PRESERVED ACROSS CALL.

7-32

EXECUTIVE SERVICES AVAILABLE TO AN I/O DRIVER

$QINSP

7.4.26 Queue Insertion by Priorit.y

This routine is in the file QUEUE. A driver may call $QINSP to insert into the I/O queue an I/O packet that the Executive has not already placed in the queue. Queue Insertion by Priority is used only by drivers setting UC.QUE in U.CTL. See Section 8.3 for an example.

Calling Sequence:

CALL $QINSP Description:

,+

r **-SQINSP-QUEUE INSERTION BY PRIORITY

J.

THIS ROUTINE IS CALLED TO INSERT AN ENTRY IN A PRIORITY ORDERED LIST, THE LIST IS SEARCHED UNTIL AN ENTRY IS FOUND THAT HAS A LOWER PRIORITY OR THE END OF THE LIST IS ~EACHED, THE NEW ENTRY IS THEN LINKED INTO THE LIST AT THE APPROPRIATE POINT, INPUTS.

R0 •• DDRESS OF THE TwO WORD LISTMEAD, Rl-ADDRESS OF THE ENTRY TO BE INSERTED, OUTPUTS.

THf ENTRY IS LINKED INTO THE LIST BY PRIORITY.

R0 AND R1 ARE PRESERVED ACROSS CALL.

EXECUTIVE SERVICES AVAILABLE TO AN I/O DRIVER

$RELOC

7.4.27 Relocate

Relocate is in the file MEMAP. A driver may call $RELOC to relocate a task virtual address while the task is the current task. Relocate is normally used only by drivers setting UC.QUE in U.CTL. See Section 8.3 for an example.

Calling Sequence:

CALL $RELOC Description:

,+

, •• -SRELOC-RELOCATE USER VIRTUAL ADDRESS

:-T~IS ROUTINE IS CALLED TO TRANSFOR~ lb BIT USER VIRTUAL ADDRESS INTO A RELOCATION BIAS AND DISPLACEMENT IN BLOCK RELATIVE TO APR6.

INPUTSI

R0-USER VI~TUAL ADDR~SS TO RELOCATE.

OUTPUTS,

Rl=RELOCATION BIAS TO AE LOADED INTO PARb.

R2=DISPLACEMENT IN BLOCK PLUS 1~0000 (PARb BIAS).

R0 AND R3 ARE PRESERVED ACROSS CALL.

7-34

EXECUTIVE SERVICES AVAILABLE TO AN I/O DRIVER

$RELOP

7.4.28 Relocate UNIBUS Physical Address This routine is in the file MEMAP.

Calling Sequence:

CALL $RELOP Description:

;+

.*-SR~~OP-RELOC.TE UNIBUS PHYSICAL ADDRESS

THIS ROUTINE ~ELOCATES A UNIBUS PHYSICAL ADDRESS TO A KISARb BIAS AND DISPLACEMENT,

INPUTSI

R0=BVTE OfFSET FRO~ ADDRESS I~ U.BUF+l AND U.BUF+2 R4zSCB ADDRESS

RScUCB ADDRESS

U,BUF+l(RS):HIGH ORDER SITS OF ~HVSICAL ADDRESS

U,BUF+2(R5):LO~ ORDER BITS OF PHYSICAL ADDRESS

Dans le document M-PLUS Guide to Writing an I/O Driver (Page 184-191)