40 HGR : POKE 49234,0: HCOLOR= 3 50 FOR DI = 0 TO 3 60 GOSUB 100 70 NEXT DI 90 REM INITIALIZATION AND MAIN 91 :SP = 0:H = INT ((H0 / 4) + .5):X = 2 * H:Y = 3 * H:I = 0 100 H0 = 191:SP = 0:H = INT ((H0 / 4) + .5):X = 2 * H:Y = 3 * H:I = 0 110 I = I + 1:X = X - H:H = INT (H / 2):Y = Y + H 120 IF I < DI THEN 110 130 PS = I: GOSUB 600 140 GOSUB 200:A = H:B = - H: GOSUB 800 150 GOSUB 300:A = - H:B = - H: GOSUB 800 160 GOSUB 400:A = - H:B = H: GOSUB 800 170 GOSUB 500:A = H:B = H: GOSUB 800 180 GOSUB 700 190 RETURN 200 REM SUBROUTINE A 210 IF TP < = 0 THEN RETURN 220 PS = TP - 1: GOSUB 600 230 GOSUB 200:A = H:B = - H: GOSUB 800 240 GOSUB 300:A = 2 * H:B = 0: GOSUB 800 250 GOSUB 500:A = H:B = H: GOSUB 800 260 GOSUB 200 270 GOSUB 700 280 RETURN 300 REM SUBROUTINE B 310 IF TP < = 0 THEN RETURN 320 PS = TP - 1: GOSUB 600 330 GOSUB 300:A = - H:B = - H: GOSUB 800 340 GOSUB 400:A = 0:B = - 2 * H: GOSUB 800 350 GOSUB 200:A = H:B = - H: GOSUB 800 360 GOSUB 300 370 GOSUB 700 380 RETURN 400 REM SUBROUTINE C 410 IF TP < = 0 THEN RETURN 420 PS = TP - 1: GOSUB 600 430 GOSUB 400:A = - H:B = H: GOSUB 800 440 GOSUB 500:A = - 2 * H:B = 0: GOSUB 800 450 GOSUB 300:A = - H:B = - H: GOSUB 800 460 GOSUB 400 470 GOSUB 700 480 RETURN 500 REM SUBROUTINE D 510 IF TP < = 0 THEN RETURN 520 PS = TP - 1: GOSUB 600 530 GOSUB 500:A = H:B = H: GOSUB 800 540 GOSUB 200:A = 0:B = 2 * H: GOSUB 800 550 GOSUB 400:A = - H:B = H: GOSUB 800 560 GOSUB 500 570 GOSUB 700 580 RETURN 600 REM PUSH SUBROUTINE 610 SP = SP + 1:ST(SP) = PS 620 TP = PS: RETURN 700 REM POP SUBROUTINE 710 SP = SP - 1:TP = ST(SP): RETURN 800 REM PLOTTING SUBROUTINE 810 HPLOT X,Y TO X + A,Y + B 820 X = X + A:Y = Y + B: RETURN