; MODIFIED FROM [300,52]INIT.MAC ; ; ENTER ; CALL INIFDB(LUN) ; LUN IS LOGICAL UNIT. ; ; EXIT ; INITIALIZES FCS PART OF FORTRAN FDB FOR LUN. ; ; MOST OF THE ARRAY IS SET TO ZERO. ; .TITLE INIFDB - INITIALIZE AN FDB .IDENT /V01/ .GLOBL INIFDB EF: .WORD 0 .WORD 0 INIFDB: MOV R5,EF ;SAVE INC EF+2 ;INCREMENT NBR OF TIMES CALLED TST (R5)+ ;BY PASS THE NBR OF ARGUMENTS MOV @(R5)+,R2 ;LOAD LUN MOV @#$OTSV,R3 CALL $FCHNL ;R0 -> FORTRAN FDB ADD #14,R0 ;R0 -> FCS FDB JSR PC,CLRFDB ;CLEAR THE FDB JSR PC,FDBPTR ;INITIALIZE A FEW POINTERS IN THE FDB RTS PC ; ENTER ; R0 CONTAINS THE ADDRESS OF THE FDB ; EXIT ; THE 102 BYTE FDB IS ZET TO ALL ZEROES. ; FDBLTH=102. ;LENGTH OF THE FDB ; CLRFDB: MOV R0,-(SP) ;SAVE R0 MOV R1,-(SP) ;SAVE R1 MOV #FDBLTH,R1 ;LOAD LENGTH OF FDB 1$: CLRB (R0)+ ;CLEAR A BYTE IN THE FDB SOB R1,1$ ;LOOP UNTIL ALL LOCATIONS ARE CLEARED MOV (SP)+,R1 ;RESTORE R1 MOV (SP)+,R0 ;RESTORE R0 RTS PC ; ENTER ; R0 CONTAINS THE FDB ADDRESS ; EXIT ; THE EVENT FLAG IS SET TO A DEFAULT VALUE OF 32. ; FDBPTR: MOV R1,-(SP) ;SAVE R1 MOV #32.,F.BKEF(R0) ;SET THE EVENT FLAG TO A DEFALT ;VALUE OF 32. MOV (SP)+,R1 ;RESTORE R1 RTS PC .END