SETPORT
SETPORT(PORTA, 0);
SETPORT(PORTA, 0);
SETPORT(SCSISEQ, SCSIRSTO);
SETPORT(SCSISEQ, 0);
SETPORT(PORTA, 0);
SETPORT(DMACNTRL0, RSTFIFO);
SETPORT(SCSISEQ, 0);
SETPORT(SXFRCTL1, 0);
SETPORT(SCSISIG, 0);
SETPORT(SSTAT0, 0x7f);
SETPORT(SSTAT1, 0xef);
SETPORT(SSTAT4, SYNCERR | FWERR | FRERR);
SETPORT(DMACNTRL0, 0);
SETPORT(DMACNTRL1, 0);
SETPORT(BRSTCNTRL, 0xf1);
SETPORT(SXFRCTL0, CH1|CLRCH1|CLRSTCNT);
SETPORT(SXFRCTL0, CH1);
SETPORT(SXFRCTL0, CH1|CLRCH1|CLRSTCNT);
SETPORT(SXFRCTL0, CH1);
SETPORT(SSTAT1, CLRBUSFREE);
SETPORT(PORTA, 0); /* turn led off */
SETPORT(PORTA, 0); /* turn led off */
SETPORT(SSTAT1, SELTO);
SETPORT(SCSIID, (shpnt->this_id << OID_) | CURRENT_SC->device->id);
SETPORT(SXFRCTL1, (PARITY ? ENSPCHK : 0 ) | ENSTIMER);
SETPORT(SCSISEQ, ENSELO | ENAUTOATNO | (DISCONNECTED_SC ? ENRESELI : 0));
SETPORT(SCSISEQ, DISCONNECTED_SC ? ENRESELI : 0);
SETPORT(SCSISIG, 0);
SETPORT(SSTAT1, CLRBUSFREE);
SETPORT(SSTAT1, CLRPHASECHG);
SETPORT(SCSISEQ, 0);
SETPORT(SSTAT0, CLRSELDO);
SETPORT(SCSISEQ, 0);
SETPORT(SSTAT1, CLRSELTIMO);
SETPORT(SCSISIG, 0);
SETPORT(SSTAT0, CLRSELDI);
SETPORT(SSTAT1, CLRBUSFREE);
SETPORT(SSTAT1, CLRPHASECHG);
SETPORT(SCSIID, (shpnt->this_id << OID_) | target);
SETPORT(SCSISEQ, 0);
SETPORT(SCSISIG, P_MSGI | SIG_ATNO);
SETPORT(SSTAT1, CLRATNO);
SETPORT(SCSIDAT, MSGO(MSGO_I++));
SETPORT(SCSIDAT, CURRENT_SC->cmnd[CMD_I++]);
SETPORT(DMACNTRL0, RSTFIFO);
SETPORT(DMACNTRL0, RSTFIFO|ENDMA);
SETPORT(SXFRCTL0, CH1|CLRSTCNT);
SETPORT(SXFRCTL0, CH1|SCSIEN|DMAEN);
SETPORT(SIMODE0, 0);
SETPORT(SIMODE1, ENSCSIPERR | ENSCSIRST | ENPHASEMIS | ENBUSFREE);
SETPORT(DMACNTRL0, ENDMA|_8BIT);
SETPORT(DMACNTRL0, ENDMA);
SETPORT(DMACNTRL0, ENDMA|_8BIT);
SETPORT(DMACNTRL0, ENDMA|_8BIT);
SETPORT(SXFRCTL0, CH1|CLRSTCNT);
SETPORT(DMACNTRL0, 0);
SETPORT(DMACNTRL0, WRITE_READ | RSTFIFO);
SETPORT(DMACNTRL0, WRITE_READ | ENDMA);
SETPORT(SXFRCTL0, CH1|CLRSTCNT);
SETPORT(SXFRCTL0, CH1|SCSIEN|DMAEN);
SETPORT(SIMODE0, 0);
SETPORT(SIMODE1, ENSCSIPERR | ENSCSIRST | ENPHASEMIS | ENBUSFREE );
SETPORT(DMACNTRL0,WRITE_READ|ENDMA|_8BIT);
SETPORT(DATAPORT, *acp->ptr++);
SETPORT(DMACNTRL0,WRITE_READ|ENDMA);
SETPORT(SXFRCTL0, CH1|CLRCH1|CLRSTCNT);
SETPORT(SXFRCTL0, CH1);
SETPORT(DMACNTRL0, 0);
SETPORT(SCSISEQ,0);
SETPORT(SSTAT1,SCSIRSTI);
SETPORT(SSTAT1,BUSFREE);
SETPORT(SSTAT1,SCSIPERR);
SETPORT(SXFRCTL0, CH1);
SETPORT(DMACNTRL0, 0);
SETPORT(SSTAT0, REQINIT);
SETPORT(SCSISIG, GETPORT(SCSISIG) & P_MASK);
SETPORT(SSTAT1, PHASECHG);
SETPORT(DMACNTRL0, 0);
SETPORT(SXFRCTL0, CH1|SPIOEN);
SETPORT(io_port + O_DMACNTRL1, 0); /* reset stack pointer */
SETPORT(io_port + O_STACK, i);
SETPORT(io_port + O_DMACNTRL1, 0); /* reset stack pointer */
SETPORT(io_port + O_TC_DMACNTRL1, 0); /* reset stack pointer */
SETPORT(io_port + O_STACK, i);
SETPORT(io_port + O_TC_DMACNTRL1, 0); /* reset stack pointer */
SETPORT(DMACNTRL0, INTEN);
SETPORT(SCSIID, setup->scsiid << 4);
SETPORT(SCSISEQ, SCSIRSTO);
SETPORT(SCSISEQ, 0);
SETPORT(SIMODE0, 0);
SETPORT(SIMODE1, 0);
SETPORT(DMACNTRL0, SWINT|INTEN);
SETPORT(DMACNTRL0, INTEN);
SETPORT(SSTAT0, 0x7f);
SETPORT(SSTAT1, 0xef);
SETPORT(SSTAT1, SELTO);
SETPORT(SIMODE0, ENSELDO | (DISCONNECTED_SC ? ENSELDI : 0));
SETPORT(SIMODE1, ENSELTIMO);
SETPORT(SIMODE0, (acp->phase & spiordy) ? ENSPIORDY : 0);
SETPORT(SIMODE1, ENPHASEMIS | ENSCSIRST | ENSCSIPERR | ENBUSFREE);
SETPORT(SIMODE0, 0);
SETPORT(SIMODE1, ENPHASEMIS | ENSCSIRST | ENSCSIPERR | ENBUSFREE);
SETPORT(SIMODE0, DISCONNECTED_SC ? ENSELDI : 0);
SETPORT(SIMODE1, ENSCSIRST | ( (ISSUE_SC||DONE_SC) ? ENBUSFREE : 0));
SETPORT(PORTA, 1);
#define SETSTCNT(X) { SETPORT(STCNT2, ((X) & 0xFF0000) >> 16); \
SETPORT(STCNT1, ((X) & 0x00FF00) >> 8); \
SETPORT(STCNT0, ((X) & 0x0000FF) ); }
#define SETRATE(RATE) SETPORT(SCSIRATE,(RATE) & 0x7f)