C-ify iodone, irq
This commit is contained in:
parent
0f20034ce3
commit
6943a54854
|
@ -36,8 +36,6 @@ _NuBusFPGACtl:
|
|||
jsr cNuBusFPGACtl
|
||||
MOVE.L (%A7)+, %a0
|
||||
MOVE.L (%A7)+, %a1
|
||||
BTST #9,%a0@(ioTrap) /* noQueueBit is 9 */
|
||||
BEQ.S _GoIODone
|
||||
rts
|
||||
|
||||
_NuBusFPGAStatus:
|
||||
|
@ -46,8 +44,6 @@ _NuBusFPGAStatus:
|
|||
jsr cNuBusFPGAStatus
|
||||
MOVE.L (%A7)+, %a0
|
||||
MOVE.L (%A7)+, %a1
|
||||
BTST #9,%a0@(ioTrap) /* noQueueBit is 9 */
|
||||
BEQ.S _GoIODone
|
||||
rts
|
||||
|
||||
_NuBusFPGAClose:
|
||||
|
@ -57,12 +53,6 @@ _NuBusFPGAClose:
|
|||
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
|
||||
|
@ -71,20 +61,4 @@ _GoIODone:
|
|||
.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 */
|
||||
jsr (%a0)
|
||||
moveq #1,%d0
|
||||
rts
|
||||
|
||||
ALIGN 2
|
||||
|
|
|
@ -78,13 +78,12 @@ OSErr cNuBusFPGACtl(CntrlParamPtr pb, /* DCtlPtr */ AuxDCEPtr dce)
|
|||
NuBusFPGADriverGlobalsHdl dStoreHdl = (NuBusFPGADriverGlobalsHdl)dce->dCtlStorage;
|
||||
NuBusFPGADriverGlobalsPtr dStore = *dStoreHdl;
|
||||
|
||||
short ret = -1;
|
||||
short ret = noErr;
|
||||
char busMode = 1;
|
||||
|
||||
/* write_reg(dce, GOBOFB_DEBUG, 0xBEEF0001); */
|
||||
/* write_reg(dce, GOBOFB_DEBUG, pb->csCode); */
|
||||
|
||||
#if 1
|
||||
|
||||
switch (pb->csCode)
|
||||
{
|
||||
case -1:
|
||||
|
@ -171,16 +170,19 @@ OSErr cNuBusFPGACtl(CntrlParamPtr pb, /* DCtlPtr */ AuxDCEPtr dce)
|
|||
if (gammaTbl == NULL) {
|
||||
linearGamma(dStore);
|
||||
} else {
|
||||
ret = noErr;
|
||||
if (gammaTbl->gDataWidth != 8)
|
||||
return paramErr;
|
||||
ret = paramErr;
|
||||
if (gammaTbl->gDataCnt != 256) // 8-bits
|
||||
return paramErr;
|
||||
ret = paramErr;
|
||||
if ((gammaTbl->gChanCnt != 1) && (gammaTbl->gChanCnt != 3))
|
||||
return paramErr;
|
||||
ret = paramErr;
|
||||
if ((gammaTbl->gType != 0) && (gammaTbl->gType != 0xFFFFBEEF))
|
||||
return paramErr;
|
||||
ret = paramErr;
|
||||
if (gammaTbl->gFormulaSize != 0)
|
||||
return paramErr;
|
||||
ret = paramErr;
|
||||
if (ret != noErr)
|
||||
goto done;
|
||||
|
||||
dStore->gamma.gVersion = gammaTbl->gVersion;
|
||||
dStore->gamma.gType = gammaTbl->gType;
|
||||
|
@ -215,8 +217,10 @@ OSErr cNuBusFPGACtl(CntrlParamPtr pb, /* DCtlPtr */ AuxDCEPtr dce)
|
|||
const uint32_t wb = dStore->hres[0] >> idx;
|
||||
unsigned short j, i;
|
||||
short npage = (vPInfo->csMode == kDepthMode5) ? 1 : 2;
|
||||
if (vPInfo->csPage >= npage)
|
||||
if (vPInfo->csPage >= npage) {
|
||||
return paramErr;
|
||||
goto done;
|
||||
}
|
||||
|
||||
a32 += vPInfo->csPage * 1024 * 1024 * 4; /* fixme */
|
||||
|
||||
|
@ -297,7 +301,7 @@ OSErr cNuBusFPGACtl(CntrlParamPtr pb, /* DCtlPtr */ AuxDCEPtr dce)
|
|||
|
||||
case cscDirectSetEntries: /* 0x8 */
|
||||
asm volatile(".word 0xfe16\n");
|
||||
return controlErr;
|
||||
ret = controlErr;
|
||||
break;
|
||||
|
||||
case cscSetDefaultMode: /* 0x9 */
|
||||
|
@ -351,7 +355,11 @@ OSErr cNuBusFPGACtl(CntrlParamPtr pb, /* DCtlPtr */ AuxDCEPtr dce)
|
|||
ret = controlErr;
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
|
||||
done:
|
||||
if (!(pb->ioTrap & (1<<noQueueBit)))
|
||||
IODone(dce, ret);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -359,7 +367,7 @@ OSErr reconfHW(AuxDCEPtr dce, unsigned char mode, unsigned char depth, unsigned
|
|||
NuBusFPGADriverGlobalsHdl dStoreHdl = (NuBusFPGADriverGlobalsHdl)dce->dCtlStorage;
|
||||
NuBusFPGADriverGlobalsPtr dStore = *dStoreHdl;
|
||||
const short npage = (depth == kDepthMode5) ? 1 : 2;
|
||||
OSErr err = noErr;
|
||||
OSErr err = -1;
|
||||
char busMode = 1;
|
||||
|
||||
/* write_reg(dce, GOBOFB_DEBUG, 0xBEEF0031); */
|
||||
|
|
|
@ -2,6 +2,20 @@
|
|||
|
||||
#include "ROMDefs.h"
|
||||
|
||||
typedef void(*vblproto)(short);
|
||||
|
||||
#pragma parameter __D0 fbIrq(__A1)
|
||||
short fbIrq(const long sqParameter){
|
||||
/* AuxDCEPtr dce = (AuxDCEPtr)sqParameter; */
|
||||
/* NuBusFPGADriverGlobalsHdl dStoreHdl = (NuBusFPGADriverGlobalsHdl)dce->dCtlStorage; */
|
||||
/* NuBusFPGADriverGlobalsPtr dStore = *dStoreHdl; */
|
||||
vblproto myVbl = *(vblproto**)0x0d28;
|
||||
/* write_reg(dce, GOBOFB_INTR_CLEAR, 0); */
|
||||
*((volatile unsigned int*)(sqParameter+GOBOFB_BASE+GOBOFB_INTR_CLEAR)) = 0;
|
||||
myVbl((sqParameter>>24)&0xf);
|
||||
return 1;
|
||||
}
|
||||
|
||||
OSErr cNuBusFPGAOpen(IOParamPtr pb, /* DCtlPtr */ AuxDCEPtr dce)
|
||||
{
|
||||
OSErr ret = noErr;
|
||||
|
@ -46,10 +60,17 @@ OSErr cNuBusFPGAOpen(IOParamPtr pb, /* DCtlPtr */ AuxDCEPtr dce)
|
|||
siqel->sqType = sIQType;
|
||||
siqel->sqPrio = 8;
|
||||
//siqel->sqAddr = interruptRoutine;
|
||||
/* not sure how to get the proper result in C... */
|
||||
/* SlotIntServiceProcPtr sqAddr; */
|
||||
/* asm("lea %%pc@(interruptRoutine),%0\n" : "=a"(sqAddr)); */
|
||||
/* siqel->sqAddr = sqAddr; */
|
||||
/* siqel->sqParm = (long)dce->dCtlDevBase; */
|
||||
|
||||
/* not sure how to get the proper result in C... */
|
||||
SlotIntServiceProcPtr sqAddr;
|
||||
asm("lea %%pc@(interruptRoutine),%0\n" : "=a"(sqAddr));
|
||||
asm("lea %%pc@(fbIrq),%0\n" : "=a"(sqAddr));
|
||||
siqel->sqAddr = sqAddr;
|
||||
/* siqel->sqParm = (long)dce; */
|
||||
siqel->sqParm = (long)dce->dCtlDevBase;
|
||||
dStore->siqel = siqel;
|
||||
|
||||
|
|
|
@ -76,8 +76,10 @@ OSErr cNuBusFPGAStatus(CntrlParamPtr pb, /* DCtlPtr */ AuxDCEPtr dce)
|
|||
(vPInfo->csMode != kDepthMode3) &&
|
||||
(vPInfo->csMode != kDepthMode4) &&
|
||||
(vPInfo->csMode != kDepthMode5) &&
|
||||
(vPInfo->csMode != kDepthMode6))
|
||||
return paramErr;
|
||||
(vPInfo->csMode != kDepthMode6)) {
|
||||
ret = paramErr;
|
||||
goto done;
|
||||
}
|
||||
vPInfo->csPage = (vPInfo->csMode == kDepthMode5) ? 1 : 2;
|
||||
ret = noErr;
|
||||
}
|
||||
|
@ -90,11 +92,15 @@ OSErr cNuBusFPGAStatus(CntrlParamPtr pb, /* DCtlPtr */ AuxDCEPtr dce)
|
|||
(vPInfo->csMode != kDepthMode3) &&
|
||||
(vPInfo->csMode != kDepthMode4) &&
|
||||
(vPInfo->csMode != kDepthMode5) &&
|
||||
(vPInfo->csMode != kDepthMode6))
|
||||
return paramErr;
|
||||
(vPInfo->csMode != kDepthMode6)) {
|
||||
ret = paramErr;
|
||||
goto done;
|
||||
}
|
||||
short npage = (vPInfo->csMode == kDepthMode5) ? 1 : 2;
|
||||
if (vPInfo->csPage >= npage)
|
||||
return paramErr;
|
||||
if (vPInfo->csPage >= npage) {
|
||||
ret = paramErr;
|
||||
goto done;
|
||||
}
|
||||
vPInfo->csBaseAddr = vPInfo->csPage * 1024 * 1024 * 4; /* fixme for > 2 pages ? */
|
||||
ret = noErr;
|
||||
}
|
||||
|
@ -176,8 +182,10 @@ OSErr cNuBusFPGAStatus(CntrlParamPtr pb, /* DCtlPtr */ AuxDCEPtr dce)
|
|||
if (((((UInt8)vdtim->csTimingMode) < nativeVidMode) ||
|
||||
(((UInt8)vdtim->csTimingMode) > dStore->maxMode)) &&
|
||||
(vdtim->csTimingMode != kDisplayModeIDFindFirstResolution) &&
|
||||
(vdtim->csTimingMode != kDisplayModeIDCurrent))
|
||||
return paramErr;
|
||||
(vdtim->csTimingMode != kDisplayModeIDCurrent)) {
|
||||
ret = paramErr;
|
||||
goto done;
|
||||
}
|
||||
unsigned int mode = vdtim->csTimingMode;
|
||||
if (mode == kDisplayModeIDFindFirstResolution)
|
||||
mode = nativeVidMode;
|
||||
|
@ -238,8 +246,10 @@ OSErr cNuBusFPGAStatus(CntrlParamPtr pb, /* DCtlPtr */ AuxDCEPtr dce)
|
|||
{
|
||||
default:
|
||||
if ((((UInt8)vdres->csPreviousDisplayModeID) < nativeVidMode) ||
|
||||
(((UInt8)vdres->csPreviousDisplayModeID) > dStore->maxMode))
|
||||
return paramErr;
|
||||
(((UInt8)vdres->csPreviousDisplayModeID) > dStore->maxMode)) {
|
||||
ret = paramErr;
|
||||
goto done;
|
||||
}
|
||||
if (((UInt8)vdres->csPreviousDisplayModeID) == dStore->maxMode)
|
||||
vdres->csDisplayModeID = kDisplayModeIDNoMoreResolutions;
|
||||
else
|
||||
|
@ -274,15 +284,19 @@ OSErr cNuBusFPGAStatus(CntrlParamPtr pb, /* DCtlPtr */ AuxDCEPtr dce)
|
|||
if (((((UInt8)vdparam->csDisplayModeID) < nativeVidMode) ||
|
||||
(((UInt8)vdparam->csDisplayModeID) > dStore->maxMode)) &&
|
||||
(vdparam->csDisplayModeID != kDisplayModeIDFindFirstResolution) &&
|
||||
(vdparam->csDisplayModeID != kDisplayModeIDCurrent))
|
||||
return paramErr;
|
||||
(vdparam->csDisplayModeID != kDisplayModeIDCurrent)) {
|
||||
ret = paramErr;
|
||||
goto done;
|
||||
}
|
||||
if ((vdparam->csDepthMode != kDepthMode1) &&
|
||||
(vdparam->csDepthMode != kDepthMode2) &&
|
||||
(vdparam->csDepthMode != kDepthMode3) &&
|
||||
(vdparam->csDepthMode != kDepthMode4) &&
|
||||
(vdparam->csDepthMode != kDepthMode5) &&
|
||||
(vdparam->csDepthMode != kDepthMode6))
|
||||
return paramErr;
|
||||
(vdparam->csDepthMode != kDepthMode6)) {
|
||||
ret = paramErr;
|
||||
goto done;
|
||||
}
|
||||
/* write_reg(dce, GOBOFB_DEBUG, 0xBEEF0022); */
|
||||
/* write_reg(dce, GOBOFB_DEBUG, (unsigned int)vdparam->csDisplayModeID); */
|
||||
/* write_reg(dce, GOBOFB_DEBUG, (unsigned int)vdparam->csDepthMode); */
|
||||
|
@ -385,5 +399,8 @@ OSErr cNuBusFPGAStatus(CntrlParamPtr pb, /* DCtlPtr */ AuxDCEPtr dce)
|
|||
break;
|
||||
}
|
||||
#endif
|
||||
done:
|
||||
if (!(pb->ioTrap & (1<<noQueueBit)))
|
||||
IODone(dce, ret);
|
||||
return ret;
|
||||
}
|
||||
|
|
|
@ -36,8 +36,6 @@ _NuBusFPGARAMDskPrime:
|
|||
jsr cNuBusFPGARAMDskPrime
|
||||
MOVE.L (%A7)+, %a0
|
||||
MOVE.L (%A7)+, %a1
|
||||
BTST #9,%a0@(ioTrap) /* noQueueBit is 9 */
|
||||
BEQ.S _RAMDskGoIODone
|
||||
rts
|
||||
|
||||
_NuBusFPGARAMDskCtl:
|
||||
|
@ -46,8 +44,6 @@ _NuBusFPGARAMDskCtl:
|
|||
jsr cNuBusFPGARAMDskCtl
|
||||
MOVE.L (%A7)+, %a0
|
||||
MOVE.L (%A7)+, %a1
|
||||
BTST #9,%a0@(ioTrap) /* noQueueBit is 9 */
|
||||
BEQ.S _RAMDskGoIODone
|
||||
rts
|
||||
|
||||
_NuBusFPGARAMDskStatus:
|
||||
|
@ -56,8 +52,6 @@ _NuBusFPGARAMDskStatus:
|
|||
jsr cNuBusFPGARAMDskStatus
|
||||
MOVE.L (%A7)+, %a0
|
||||
MOVE.L (%A7)+, %a1
|
||||
BTST #9,%a0@(ioTrap) /* noQueueBit is 9 */
|
||||
BEQ.S _RAMDskGoIODone
|
||||
rts
|
||||
|
||||
_NuBusFPGARAMDskClose:
|
||||
|
@ -66,6 +60,7 @@ _NuBusFPGARAMDskClose:
|
|||
jsr cNuBusFPGARAMDskClose
|
||||
MOVE.L (%A7)+, %a0
|
||||
MOVE.L (%A7)+, %a1
|
||||
rts
|
||||
|
||||
MyAddDrive:
|
||||
LINK %A6,#0
|
||||
|
@ -77,12 +72,6 @@ MyAddDrive:
|
|||
DC.W 0xA04E /* _AddDrive */
|
||||
UNLK %A6
|
||||
RTS
|
||||
|
||||
_RAMDskGoIODone:
|
||||
/* MOVEA.L JIODone,%A0 */
|
||||
/* JMP (%A0) */
|
||||
movel JIODone,%sp@-
|
||||
rts
|
||||
|
||||
.include "NuBusFPGARAMDskDrvr_OpenClose.s"
|
||||
.text
|
||||
|
|
|
@ -26,5 +26,7 @@ OSErr cNuBusFPGARAMDskCtl(CntrlParamPtr pb, /* DCtlPtr */ AuxDCEPtr dce)
|
|||
}
|
||||
|
||||
done:
|
||||
if (!(pb->ioTrap & (1<<noQueueBit)))
|
||||
IODone(dce, ret);
|
||||
return ret;
|
||||
}
|
||||
|
|
|
@ -197,5 +197,8 @@ OSErr cNuBusFPGARAMDskPrime(IOParamPtr pb, /* DCtlPtr */ AuxDCEPtr dce)
|
|||
}
|
||||
|
||||
done:
|
||||
if (!(pb->ioTrap & (1<<noQueueBit)))
|
||||
IODone(dce, ret);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
|
|
@ -23,5 +23,7 @@ OSErr cNuBusFPGARAMDskStatus(CntrlParamPtr pb, /* DCtlPtr */ AuxDCEPtr dce)
|
|||
}
|
||||
|
||||
done:
|
||||
if (!(pb->ioTrap & (1<<noQueueBit)))
|
||||
IODone(dce, ret);
|
||||
return ret;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue