|
DataMuseum.dkPresents historical artifacts from the history of: Commodore CBM-900 |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about Commodore CBM-900 Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - download
Length: 1996 (0x7cc) Types: TextFile Notes: UNIX file Names: »fuse.c«
└─⟦f27320a65⟧ Bits:30001972 Commodore 900 hard disk image with partial source code └─⟦926b8033d⟧ UNIX Filesystem └─ ⟦this⟧ »u/demo/slide/fuse.c«
short a0[] = { 4,-10,4,0,-18,5,2,-3,8,-5,10,-15,-9,16,1,14 }; short a1[] = { -18,-4,-7,17,-18,9,10,15,-14,8,18,16,16,-12,18,1 }; short a2[] = { -15,11,8,1,7,-9,-9,-19,-12,2,-9,16,11,1,-16,16 }; short a3[] = { 17,-10,-16,13,-4,6,15,-2,15,-3,2,-1,-10,1,1,16 }; short a4[] = { 2,13,9,2,-6,-14,3,-18,10,1,1,18,-6,-17,-18,-9 }; short a5[] = { 6,2,18,-9,4,20,2,13,-3,0,-5,7,-12,2,-19,-14 }; short a6[] = { 18,-9,10,-16,13,12,12,6,-2,-13,1,12,15,-2,-1,-10 }; short a7[] = { 1,13,-14,11,1,-3,7,15,-16,-11,-6,13,-9,-5,18,18 }; short *ap[] = {a0,a1,a2,a3,a4,a5,a6,a7}; short jp = 0; short lsx,lsy; fline(x1,y1,x2,y2) { short x,y; short lx,ly; short pm,i; long dxdy,dydx,lx1,lx2,ly1,ly2; long n,dx,dy,sx,sy,sgn(),labs(); lx1 = (long)x1<<(long)10; ly1 = (long)y1<<(long)10; lx2 = (long)x2<<(long)10; ly2 = (long)y2<<(long)10; dx = lx2-lx1; dy = ly2-ly1; x = (short)(lx1>>(long)10); y = (short)(ly1>>(long)10); pm = 0; /*sp(x,y,1);*/ point(x,y); spark(x,y); sx = sgn(dx); sy = sgn(dy); if(labs(dx) > labs(dy)) { dydx = labs((dy<<(long)10)/dx); lx1>>=(long)10; n = labs(dx)>>(long)10; dydx *= sy; while(--n) { x = (short)(lx1 += sx); y = (short)((ly1 += dydx)>>(long)10); point(x,y); /*sp(x,y,0);*/ if((++pm)%2 == 0) spark(x,y); } } else { dxdy = labs((dx<<(long)10)/dy); n = labs(dy)>>(long)10; ly1 >>= (long)10; dxdy *= sx; while(--n>=0) { x = (short)((lx1 += dxdy)>>(long)10); y = (short)(ly1 += sy); point(x,y); /*sp(x,y,0);*/ if((++pm)%2 == 0) spark(x,y); } } } fspark(x,y) short x,y; { onspark(x,y,0); jp = 0; lsx = x; lsy = y; } onspark(x,y,of) short x,y,of; { short i; short *sp = ap[of]; for(i = 0; i<8; i++) { line(x,y,x+*sp, y+*(sp+1)); sp += 2; } } offspark() { onspark(lsx,lsy,jp); } spark(x,y) short x,y; { onspark(x,y,(jp+1)%8); onspark(lsx,lsy,jp); lsx = x; lsy = y; jp = (jp+1)%8; } long sgn(x) long x; { return((x>0) ? 1:-1); } long labs(x) long x; { return((x>0) ? x:-x); }