NuBusFPGADrvr:	
    .word  	    0x4c00             /* 0x4c00: ctl, status, needsLock [Devices.a] */
    .word          0
    .word          0
    .word          0
  /* Entry point offset table */
    .word		_NuBusFPGAOpen-NuBusFPGADrvr   /* open routine */
	.word		NuBusFPGADrvr-NuBusFPGADrvr   /* no prime */
	.word		_NuBusFPGACtl-NuBusFPGADrvr    /* control */
	.word		_NuBusFPGAStatus-NuBusFPGADrvr /* status */
	.word		_NuBusFPGAClose-NuBusFPGADrvr  /* close */
	
_NuBusFPGATitle:
	.byte _NuBusFPGATitle_StringEnd-.-1  /* pascal string length */
	.ascii ".NuBusFPGA_Drvr"
_NuBusFPGATitle_StringEnd:	
    .word 0 /* version number */
	
        /* A0 pointer to driver parameter block */	
	/* A1 pointer to driver device control entry */
	ALIGN 2
_NuBusFPGAOpen:
	MOVE.L		%A1, -(%A7)
	MOVE.L		%A0, -(%A7)
	JSR			cNuBusFPGAOpen
	MOVE.L		(%A7)+, %a0
	MOVE.L		(%A7)+, %a1
	rts
_NuBusFPGAOpenError:
	moveq #-23,%d0 /*  error flag */
	rts

_NuBusFPGACtl:
	MOVE.L		%A1, -(%A7)
	MOVE.L		%A0, -(%A7)
	jsr			cNuBusFPGACtl
	MOVE.L		(%A7)+, %a0
	MOVE.L		(%A7)+, %a1
	BTST		#9,%a0@(ioTrap) /* noQueueBit is 9 */   	
	BEQ.S		_GoIODone
	rts

_NuBusFPGAStatus:
	MOVE.L		%A1, -(%A7)
	MOVE.L		%A0, -(%A7)
	jsr			cNuBusFPGAStatus
	MOVE.L		(%A7)+, %a0
	MOVE.L		(%A7)+, %a1
	BTST		#9,%a0@(ioTrap) /* noQueueBit is 9 */   	
	BEQ.S		_GoIODone
	rts

_NuBusFPGAClose:
	MOVE.L		%A1, -(%A7)
	MOVE.L		%A0, -(%A7)
	jsr			cNuBusFPGAClose
	MOVE.L		(%A7)+, %a0
	MOVE.L		(%A7)+, %a1
	rts
	
_GoIODone:	
	/*  MOVEA.L    JIODone,%A0 */
	/*	JMP        (%A0) */
	movel JIODone,%sp@-
	rts

	.include "NuBusFPGADrvr_OpenClose.s"
	.text
	.include "NuBusFPGADrvr_Ctrl.s"
	.text
	.include "NuBusFPGADrvr_Status.s"
	.text
	
    ALIGN  2
interruptRoutine:
	moveal %a1,%a0
	addal #0x0090000c,%a0 /* FIXME */
	MOVEQ		#1,%D0
	_SwapMMUMode         
	clrb %a0@ /*  we only need to write */
	_SwapMMUMode
	movel %a1,%d0
	roll #8,%d0
	andiw #15,%d0
	moveal #0xd28,%a0 /*  JVBLTask */
	/* other codes don't need the intermediate moveal, what's the proper syntax ? */
	moveal (%a0),%a0
	jsr (%a0)
	moveq #1,%d0
	rts
	
	ALIGN 2
