0010/* PANNE 0020/* This Program I made especially for my wife Anne 0030/* Klaus-Peter Plog 0040/* 0050DEFINE DATA LOCAL 00601 #SCREEN(A1/23,78) 00701 REDEFINE #SCREEN 0080 2 #LINE(A78/23) 0090/* 01001 #TABX(I2/2,1:3000) 01101 #TABY(I2/2,1:3000) 01201 #TABA(I4/2) 01301 #LOG(I4) INIT <1> 01401 #PHY(I4) INIT <2> 01501 #TAU(I4) 0160/* 01701 #PX(I4/7) 01801 #PY(I4/7) 01901 #DX(I4) 02001 #DDX(I4) 02101 #DY(I4) 02201 #DDY(I4) 0230/* 02401 #I(I4) 02501 #J(I4) 02601 #K(I4) 02701 #X1(I4) 02801 #X2(I4) 02901 #Y1(I4) 03001 #Y2(I4) 0310/* 0320END-DEFINE 0330FORMAT PS=24 0340EJECT OFF 0350/*-------------------------------------------------------------- INIT 0360ASSIGN #TABA(#LOG) = 2 0370ASSIGN #TABX(#LOG,1) = 32 0380ASSIGN #TABY(#LOG,1) = 11 0390ASSIGN #TABX(#LOG,2) = 48 0400ASSIGN #TABY(#LOG,2) = 11 0410/* 0420REPEAT 0430 RESET #TABX(#PHY,*) #TABY(#PHY,*) #TABA(#PHY) #LINE(*) 0440 COMPUTE #J = #TABA(#LOG) - 1 0450 FOR #I = 1 TO #J 0460 ASSIGN #PX(1) = #TABX(#LOG,#I) 0470 ASSIGN #PY(1) = #TABY(#LOG,#I) 0480 ASSIGN #PX(2) = #TABX(#LOG,#I + 1) 0490 ASSIGN #PY(2) = #TABY(#LOG,#I + 1) 0500 COMPUTE #DX = (#PX(2) - #PX(1)) / 2 0510 COMPUTE #DY = (#PY(2) - #PY(1)) / 2 0520 COMPUTE #PX(7) = #PX(1) + #DX 0530 COMPUTE #PY(7) = #PY(1) + #DY 0540 COMPUTE #PX(3) = #PX(1) - #DY 0550 COMPUTE #PY(3) = #PY(1) - #DX 0560 COMPUTE #PX(4) = #PX(3) + #DX 0570 COMPUTE #PY(4) = #PY(3) + #DY 0580 COMPUTE #PX(5) = #PX(7) + #DY 0590 COMPUTE #PY(5) = #PY(7) + #DX 0600 COMPUTE #PX(6) = #PX(5) + #DX 0610 COMPUTE #PY(6) = #PY(5) + #DY 0620/* 0630 ASSIGN #X1=#PX(1) ASSIGN #Y1=#PY(1) 0640 ASSIGN #X2=#PX(3) ASSIGN #Y2=#PY(3) PERFORM DRAW 0650 ASSIGN #X1=#PX(3) ASSIGN #Y1=#PY(3) 0660 ASSIGN #X2=#PX(4) ASSIGN #Y2=#PY(4) PERFORM DRAW 0670 ASSIGN #X1=#PX(4) ASSIGN #Y1=#PY(4) 0680 ASSIGN #X2=#PX(5) ASSIGN #Y2=#PY(5) PERFORM DRAW 0690 ASSIGN #X1=#PX(5) ASSIGN #Y1=#PY(5) 0700 ASSIGN #X2=#PX(6) ASSIGN #Y2=#PY(6) PERFORM DRAW 0710 ASSIGN #X1=#PX(6) ASSIGN #Y1=#PY(6) 0720 ASSIGN #X2=#PX(2) ASSIGN #Y2=#PY(2) PERFORM DRAW 0730/* 0740 COMPUTE #TABA(#PHY) = #TABA(#PHY) + 1 0750 ASSIGN #TAU = #TABA(#PHY) 0760 ASSIGN #TABX(#PHY,#TAU) = #PX(1) 0770 ASSIGN #TABY(#PHY,#TAU) = #PY(1) 0780/* 0790 COMPUTE #TABA(#PHY) = #TABA(#PHY) + 1 0800 ASSIGN #TAU = #TABA(#PHY) 0810 ASSIGN #TABX(#PHY,#TAU) = #PX(3) 0820 ASSIGN #TABY(#PHY,#TAU) = #PY(3) 0830/* 0840 COMPUTE #TABA(#PHY) = #TABA(#PHY) + 1 0850 ASSIGN #TAU = #TABA(#PHY) 0860 ASSIGN #TABX(#PHY,#TAU) = #PX(4) 0870 ASSIGN #TABY(#PHY,#TAU) = #PY(4) 0880/* 0890 COMPUTE #TABA(#PHY) = #TABA(#PHY) + 1 0900 ASSIGN #TAU = #TABA(#PHY) 0910 ASSIGN #TABX(#PHY,#TAU) = #PX(5) 0920 ASSIGN #TABY(#PHY,#TAU) = #PY(5) 0930/* 0940 COMPUTE #TABA(#PHY) = #TABA(#PHY) + 1 0950 ASSIGN #TAU = #TABA(#PHY) 0960 ASSIGN #TABX(#PHY,#TAU) = #PX(6) 0970 ASSIGN #TABY(#PHY,#TAU) = #PY(6) 0980/* 0990 COMPUTE #TABA(#PHY) = #TABA(#PHY) + 1 1000 ASSIGN #TAU = #TABA(#PHY) 1010 ASSIGN #TABX(#PHY,#TAU) = #PX(2) 1020 ASSIGN #TABY(#PHY,#TAU) = #PY(2) 1030/* 1040 SET CONTROL 'N' 1050 WRITE NOTITLE NOHDR #LINE(*) 1060 EJECT 1070 END-FOR 1080/* 1090 ASSIGN #TAU = #LOG 1100 ASSIGN #LOG = #PHY 1110 ASSIGN #PHY = #TAU 1120 WRITE #LINE(*) 1130 EJECT 1140END-REPEAT 1150/* 1160DEFINE SUBROUTINE DRAW /*============================================= 1170COMPUTE #DDX = #X2 - #X1 1180COMPUTE #DDY = #Y2 - #Y1 1190IF (#DDX = 0 AND #DDY = 0) OR (#DDX NE 0 AND #DDY NE 0) 1200 ESCAPE ROUTINE 1210END-IF 1220REPEAT 1230 IF #X1 = 1 THRU 78 AND #Y1 = 1 THRU 23 1240 ASSIGN #SCREEN(#Y1,#X1) = '+' 1250 END-IF 1260 IF #X1 = #X2 AND #Y1 = #Y2 1270 ESCAPE BOTTOM 1280 END-IF 1290 COMPUTE #X1 = #X1 + SGN(#DDX) 1300 COMPUTE #Y1 = #Y1 + SGN(#DDY) 1310END-REPEAT 1320END-SUBROUTINE /*===================================================== 1330/* 1340END