.TITLE INITBD - INITIALIZE ONE CHANNEL OF MBD .IDENT /27MAY7/ ;09:00:00, JB ; .ENTRY INITBD - INIT 1 CHANNEL OF MBD ;+ ; I N I T B D ; ; PURPOSE: WAIT FOR READY AND THEN INITIALIZE ONE CHANNEL OF MBD ; ; INTERFACE: CALLING SEQUENCE: CALL INITBD ; INPUT: R4 -- CHANNEL NUMBER ; R5 -- WORD TO PASS THROUGH PDR ; C-BIT SET ON RETURN IF MBD DIDN'T GO READY IN ; N TRIES, RESET OTHERWISE ; ; LANGUAGE: MACRO-11 ; ; RESTRICTIONS: NOT FORTRAN-CALLABLE ; THIS ROUTINE CAN BE USED ONLY BY A PRIVILEGED TASK. ;- ; REVISIONS: ; 03-MAR-75 WRITTEN ; 27-MAY-77 JB UPDATED TO CONFORM TO STANDARDS ; PSW=177776 ;PROCESSOR STATUS WORD CSR=164000 ;MBD CSR PDX=164002 ;MBD PDR ; INITBD:: MOV R3,-(SP) MOV R4,-(SP) MOV @#PSW,-(SP) ;SAVE PROCESSOR STATUS SWAB R4 ADD #104,R4 ;(R4)=INITIALIZE WORD MOV #4000,R3 10$: BIS #340,@#PSW ;GO TO LEVEL 7 TSTB @#CSR ;TEST MBD READY BMI 30$ MOV (SP),@#PSW ;DROP TO CALLER LEVEL SOB R3,10$ ADD #2,SP ;REMOVE PSW WORD FROM STACK SEC BR 40$ 30$: MOV R5,@#PDX ;SET UP PDR MOV R4,@#CSR ;INITIALIZE THE CHANNEL MOV (SP)+,@#PSW ;RESTORE PROCESSOR STATUS CLC ;RETURN WITH C-BIT CLEAR 40$: MOV (SP)+,R4 MOV (SP)+,R3 RETURN .END