|
|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T s
Length: 2562 (0xa02)
Types: TextFile
Names: »setrowandcol.c«
└─⟦87ddcff64⟧ Bits:30001253 CPHDIST85 Tape, 1985 Autumn Conference Copenhagen
└─⟦this⟧ »cph85dist/wirewrap/setrowandcol.c«
/*********************************************************/
/* */
/* setrowandcol: sets up the row and column field of the */
/* pin list entry based on the pin orientation, width, */
/* pincount and (row1,col1). */
/* */
/*********************************************************/
#include "wirewrap.h"
setrowandcol(thispin)
struct pin *thispin;
{
int width,row1,col1,pinsrow,pincount;
/*
** Pick up width, (row1,col1), and pincount for this chip.
*/
width = (thispin -> mychip) -> width;
row1 = (thispin -> mychip) -> row1;
col1 = (thispin -> mychip) -> col1;
pincount = (thispin -> mychip) -> pincount;
/*
** Process SIPs (single inline packages). These are entered as
** having a width of zero. All other chips are assumed to be
** DIPs (dual inline packages).
** An n pin SIP has n pins per row. An n pin DIP has n/2 pins per row.
*/
if(width == 0)
pinsrow = pincount;
else
pinsrow = pincount/2;
/*
** Following is the calculation of row and column numbers for each
** of the four orientations.
*/
switch ((thispin -> mychip) -> orientation)
{
case 1: if(thispin -> pinnum > pinsrow)
{
thispin -> row = row1 + width;
thispin -> col = col1 + pincount - thispin -> pinnum;
}
else
{
thispin -> row = row1;
thispin -> col = col1 + thispin -> pinnum - 1;
}
break;
case 2 : if(thispin -> pinnum > pinsrow)
{
thispin -> row = row1 + pincount - thispin -> pinnum;
thispin -> col = col1 - width;
}
else
{
thispin -> row = row1 + thispin -> pinnum - 1;
thispin -> col = col1;
}
break;
case 3 : if(thispin -> pinnum > pinsrow)
{
thispin -> row = row1 - width;
thispin -> col = col1 - pincount + thispin -> pinnum;
}
else
{
thispin -> row = row1;
thispin -> col = col1 - thispin -> pinnum + 1;
}
break;
case 4 : if(thispin -> pinnum > pinsrow)
{
thispin -> row = row1 - pincount + thispin -> pinnum;
thispin -> col = col1 + width;
}
else
{
thispin -> row = row1 - thispin -> pinnum + 1;
thispin -> col = col1;
}
}
}