0010/* PBRESEN 0020/* Draw lines using BRESENHAM-Method 0030/* PL 0040DEFINE DATA LOCAL 00501 #SCREEN(A1/20,78) 00601 REDEFINE #SCREEN 0070 2 #LINES(A78/20) 0080/* 00901 #X1(I2) 01001 #Y1(I2) 01101 #X2(I2) 01201 #Y2(I2) 01301 #DX(I2) 01401 #DY(I2) 01501 #DDY(I2) 01601 #CO(I2) 01701 #SW(I2) 0180/*---------------------------------------------------------------------- 0190END-DEFINE 0200/* 0210FORMAT PS=24 0220EJECT OFF 0230/* 0240INPUT (AD=O) 'Mark point 1 with cursor' / #LINES(*) 0250ASSIGN #X1 = *CURS-COL 0260COMPUTE #Y1 = *CURS-LINE - 2 0270IF #X1 < 1 THEN 0280 ASSIGN #X1 = 1 0290END-IF 0300IF #Y1 < 1 THEN 0310 ASSIGN #Y1 = 1 0320END-IF 0330IF #X1 > 78 THEN 0340 ASSIGN #X1 = 78 0350END-IF 0360IF #Y1 > 20 THEN 0370 ASSIGN #Y1 = 20 0380END-IF 0390ASSIGN #SCREEN(#Y1,#X1) = '1' 0400/* 0410INPUT (AD=O) 'Mark point 2 with cursor' / #LINES(*) 0420ASSIGN #X2 = *CURS-COL 0430COMPUTE #Y2 = *CURS-LINE - 2 0440IF #X2 < 1 THEN 0450 ASSIGN #X2 = 1 0460END-IF 0470IF #Y2 < 1 THEN 0480 ASSIGN #Y2 = 1 0490END-IF 0500IF #X2 > 78 THEN 0510 ASSIGN #X2 = 78 0520END-IF 0530IF #Y2 > 20 THEN 0540 ASSIGN #Y2 = 20 0550END-IF 0560ASSIGN #SCREEN(#Y2,#X2) = '2' 0570/* 0580IF #X1 > #X2 0590 ASSIGN #SW = #X1 0600 ASSIGN #X1 = #X2 0610 ASSIGN #X2 = #SW 0620 ASSIGN #SW = #Y1 0630 ASSIGN #Y1 = #Y2 0640 ASSIGN #Y2 = #SW 0650END-IF 0660/* 0670COMPUTE #DX = #X2 - #X1 0680COMPUTE #DY = #Y2 - #Y1 0690IF #DY < 0 0700 COMPUTE #DY = -#DY 0710 ASSIGN #DDY = -1 0720ELSE 0730 ASSIGN #DDY = 1 0740END-IF 0750COMPUTE #CO = #DX - #DY 0760/* 0770REPEAT 0780 ASSIGN #SCREEN(#Y1,#X1) = '*' 0790 IF #X1 = #X2 AND #Y1 = #Y2 0800 ESCAPE BOTTOM 0810 END-IF 0820 IF #CO < 0 0830 COMPUTE #CO = #CO + #DX 0840 COMPUTE #Y1 = #Y1 + #DDY 0850 ELSE 0860 COMPUTE #CO = #CO - #DY 0870 COMPUTE #X1 = #X1 + 1 0880 END-IF 0890END-REPEAT 0900/* 0910WRITE NOTITLE NOHDR 'From' #X1 #Y1 'to' #X2 #Y2 / #LINES(*) 0920/* 0930END