10 REM CUT Utility 20 REM by M.Bobrowski 3'93 30 REM for 8-BS PD 40 : 50 MODE7:PRINTTAB(8,0)CHR$141"CUT & PASTE UTILITY"TAB(8,1)CHR$141"CUT & PASTE UTILITY"TAB(9,2)"Save Cutout Program" 60 PRINT''"Enter screen MODE (0-3 or 4 or 5) ";:REPEAT:M%=GET-48:UNTIL(M%>=0ANDM%<3)ORM%=4ORM%=5:PRINT;M%:step%=-16*(M%=0)-32*(M%=1ORM%=4)-64*(M%=2ORM%=5):IFM%<3 A$=" 3000":S%=&3000:L%=&280:H%=16 ELSE A$=" 5800":S%=&5800:L%=&140:H%=32 70 INPUT'"From which file to you wish to take a"'"cutout? "screen$ 80 INPUT'"Please enter cutout filename? "cut$ 90 MODE M%:OSCLI"LOAD "+screen$+A$ 100 PROCgetbox 110 PROCsave 120 MODE 7:*FX15,1 130 PRINT'"Another cut (Y/N) ";:REPEAT:G$=GET$:UNTIL INSTR("YyNn",G$):PRINTG$:IF INSTR("Yy",G$) THEN 50 140 END 150 : 160 DEF PROCgetbox 170 x%=480:y%=576:xsize%=128:ysize%=128 180 REPEAT 190 IF INKEY(-1) THEN PROCsize ELSE PROCmove 200 IF xsize%1280 THEN x%=1280-xsize% 240 IF (y%-ysize%)<0 THEN y%=ysize% 250 IF y%>1024 THEN y%=1024 260 PROCbox:PROCbox 270 UNTIL INKEY(-106) 280 xpos%=x%/H%:ypos%=256-(y%/4) 290 offset%=S%+(xpos%*8)+L%*(ypos%DIV 8)+(ypos% MOD 8) 300 ENDPROC 310 : 320 DEF PROCmove 330 IF INKEY(-98) THEN x%=x%-step% 340 IF INKEY(-67) THEN x%=x%+step% 350 IF INKEY(-73) THEN y%=y%+4 360 IF INKEY(-105) THEN y%=y%-4 370 ENDPROC 380 : 390 DEF PROCsize 400 IF INKEY(-98) THEN xsize%=xsize%-step% 410 IF INKEY(-67) THEN xsize%=xsize%+step% 420 IF INKEY(-73) THEN ysize%=ysize%-4 430 IF INKEY(-105) THEN ysize%=ysize%+4 440 ENDPROC 450 : 460 DEF PROCbox 470 MOVE x%,y%:PLOT 6,x%+xsize%,y%:PLOT 6,x%+xsize%,y%-ysize%:PLOT 6,x%,y%-ysize%:PLOT 6,x%,y% 480 ENDPROC 490 : 500 DEF PROCsave 510 cutout%=OPENOUT("C."+cut$) 520 BPUT# cutout%,xsize% MOD 256:BPUT# cutout%,xsize% DIV 256 530 BPUT# cutout%,ysize% MOD 256:BPUT# cutout%,ysize% DIV 256 540 FOR X%=1 TO xsize%/H% 550 addr%=offset%+8*(X%-1) 560 FOR Y%=1 TO ysize%/4 570 BPUT# cutout%,?addr% 580 addr%=addr%+1 590 IF addr% MOD 8=0 THEN addr%=addr%+L%-8 600 NEXT Y%:NEXT X% 610 CLOSE #cutout% 620 VDU7 630 ENDPROC