1 REM ***************************** 2 REM * DRAWINGS.BAC - 32 K Minne * 3 REM * 81-10-10 / VER 2.0 * 4 REM * (c) Alf Wirdling <4230> * 5 REM ***************************** 10 PRINT CHR$(12);TAB(15);"DRAWING-S" 20 PRINT TAB(15);STRING$(9,61) : ; 30 PRINT "Med detta program kan man rita figurer" 40 PRINT "och bilder, b}de rakt och snett." 50 PRINT : ; "Man kan {ven spara dem p} band och" 60 PRINT "f} dem utlistade p} skrivare." : ; 70 PRINT "F\LJANDE TANGENTER ANV[NDS VID RITNING:" : ; 80 PRINT "Y : RITAR/SUDDAR NORR" 90 PRINT "B : RITAR/SUDDAR S\DER" 100 PRINT "G : RITAR/SUDDAR V[STER" 110 PRINT "H : RITAR/SUDDAR \STER" 120 PRINT "T : RITAR/SUDDAR NORDV[ST" 130 PRINT "U : RITAR/SUDDAR NORD\ST" 140 PRINT "V : RITAR/SUDDAR SYDV[ST" 150 PRINT "N : RITAR/SUDDAR SYD\ST" 160 PRINT : ; "B]DE STORA OCH SM] BOKST[VER TOLERERAS" 170 PRINT : ; : ; "TRYCK RETURN F\R KOMMANDONA "; 180 GET R$ : ; : ; 190 PRINT STRING$(40,46) 200 PRINT "KOMMANDON:" : ; 210 PRINT "Z : (ZERO) TOM BILD" 220 PRINT "A : (ADVERTISEMENT) RUBRIK" 230 PRINT "S : (SLOW) NORMAL RIT-HASTIGHET" 240 PRINT "F : (FAST) SNABB RIT-HASTIGHET" 250 PRINT "C : (CURSOR) POSITIONERA MARK\REN" 260 PRINT "D : (DRAW) RITA MED MARK\REN" 270 PRINT "E : (ERASE) SUDDA MED MARK\REN" 280 PRINT "I : (INVERT) INVERTERA BILDEN" 290 PRINT "L : (LIGHT) BLINKANDE BILD ELLER INTE" 300 PRINT "1-9 : (EXCHANGE) BYTA BILD 1-9" 310 PRINT "R : (READ) L[SA IN BILD FR]N BAND" 320 PRINT "W : (WRITE) SPARA BILD P] BAND" 330 PRINT "P : (PRINT) BILDEN P] SKRIVARE" 340 PRINT "K : (KOMMAND) TILL KOMMANDONA" 350 PRINT ". : (END) AVSLUTA RITANDET" 360 PRINT : ; : ; "TRYCK RETURN N[R DU L[ST F[RDIGT "; : GET R$ : ; 370 IF W%=1% THEN 510 380 PRINT : ; " *** INITIERING P]G]R ***" 390 DIM B1%(1015),B2%(1015) : W%=1% 400 FOR I%=0% TO 1015% : B1%(I%)=32% : B2%(I%)=32% : NEXT I% 410 RESTORE 2070 : FOR I%=1% TO 23% : READ J% : B1%(J%)=23% : B2%(J%)=23% : NEXT I% 420 REM *** BARA 16 K MINNE ? *** 430 IF PEEK(65053)>190% THEN 490 440 DIM B3%(1015),B4%(1015),B5%(1015),B6%(1015),B7%(1015),B8%(1015),B9%(1015) 450 FOR I%=0% TO 1015% : B3%(I%)=32% : B4%(I%)=32% : B5%(I%)=32% : B6%(I%)=32% : B7%(I%)=32% 460 B8%(I%)=32% : B9%(I%)=32% : NEXT I% 470 RESTORE 2070 : FOR I%=1% TO 23% : READ J% : B3%(J%)=23% : B4%(J%)=23% 480 B5%(J%)=23% : B6%(J%)=23% : B7%(J%)=23% : B8%(J%)=23% : B9%(J%)=23% : NEXT I% 490 L%=1% : GOSUB 11111 500 REM *** SK[RMEN TILL GRAF-MOD *** 510 PRINT CHR$(12); 520 FOR I%=1% TO 39% 530 PRINT CUR(I%,0%);CHR$(151); 540 NEXT I% : H%=1% : ; CUR(0,0); 550 T%=3% : R%=39% : K%=39% : SETDOT R%,K% 560 REM *** V[NTA P] KOMM/TKN *** 570 ON H% GOTO 590,660 580 REM *** NORMAL-RITNING *** 590 GET R$ : RESTORE 2030 : FOR I%=1% TO 22% 600 READ D$,D2$ : IF R$=D$ OR R$=D2$ THEN 640 ELSE NEXT I% 610 REM *** SIFFRORNA 1-9 ??? *** 620 IF ASC(R$)<49% OR ASC(R$)>57% THEN 590 630 P%=VAL(R$) : GOTO 1580 640 ON I% GOTO 720,800,880,960,1040,1120,1200,1280,1360,1400,1420,1440,1460,1480,510,1500,1540,1710,1780,1840,10,2000 650 REM *** SNABB-RITNING *** 660 P%=INP(56%) : RESTORE 2040 : FOR I%=1% TO 22% 670 READ D%,D2% : IF P%=D% OR P%=D2% THEN 640 ELSE NEXT I% : REM GOTO 620 680 REM *** SIFFRORNA 1-9 ??? *** 690 IF P%<177% OR P%>185% THEN 660 700 P%=P%-176% : GOTO 1580 710 REM *** Y (NORR) *** 720 IF R%-1%<3% THEN 570 730 R%=R%-1% : ON T% GOTO 740,750,760 740 SETDOT R%,K% : GOTO 570 750 CLRDOT R%+1%,K% : SETDOT R%,K% : GOTO 570 760 IF F%=0% THEN CLRDOT R%+1%,K% ELSE SETDOT R%+1%,K% 770 IF DOT(R%,K%) THEN F%=1% ELSE F%=0% 780 SETDOT R%,K% : GOTO 570 790 REM *** B (S\DER) *** 800 IF R%+1%>71% THEN 570 810 R%=R%+1% : ON T% GOTO 820,830,840 820 SETDOT R%,K% : GOTO 570 830 CLRDOT R%-1%,K% : SETDOT R%,K% : GOTO 570 840 IF F%=0% THEN CLRDOT R%-1%,K% ELSE SETDOT R%-1%,K% 850 IF DOT(R%,K%) THEN F%=1% ELSE F%=0% 860 SETDOT R%,K% : GOTO 570 870 REM *** G (V[STER) *** 880 IF K%-1%<2% THEN 570 890 K%=K%-1% : ON T% GOTO 900,910,920 900 SETDOT R%,K% : GOTO 570 910 CLRDOT R%,K%+1% : SETDOT R%,K% : GOTO 570 920 IF F%=0% THEN CLRDOT R%,K%+1% ELSE SETDOT R%,K%+1% 930 IF DOT(R%,K%) THEN F%=1% ELSE F%=0% 940 SETDOT R%,K% : GOTO 570 950 REM *** H (\STER) *** 960 IF K%+1%>79% THEN 570 970 K%=K%+1% : ON T% GOTO 980,990,1000 980 SETDOT R%,K% : GOTO 570 990 CLRDOT R%,K%-1% : SETDOT R%,K% : GOTO 570 1000 IF F%=0% THEN CLRDOT R%,K%-1% ELSE SETDOT R%,K%-1% 1010 IF DOT(R%,K%) THEN F%=1% ELSE F%=0% 1020 SETDOT R%,K% : GOTO 570 1030 REM *** T (NORDV[ST) *** 1040 IF R%-1%<3% OR K%-1%<2% THEN 570 1050 R%=R%-1% : K%=K%-1% : ON T% GOTO 1060,1070,1080 1060 SETDOT R%,K% : GOTO 570 1070 CLRDOT R%+1%,K%+1% : SETDOT R%,K% : GOTO 570 1080 IF F%=0% THEN CLRDOT R%+1%,K%+1% ELSE SETDOT R%+1%,K%+1% 1090 IF DOT(R%,K%) THEN F%=1% ELSE F%=0% 1100 SETDOT R%,K% : GOTO 570 1110 REM *** U (NORD\ST) *** 1120 IF R%-1%<3% OR K%+1%>79% THEN 570 1130 R%=R%-1% : K%=K%+1% : ON T% GOTO 1140,1150,1160 1140 SETDOT R%,K% : GOTO 570 1150 CLRDOT R%+1%,K%-1% : SETDOT R%,K% : GOTO 570 1160 IF F%=0% THEN CLRDOT R%+1%,K%-1% ELSE SETDOT R%+1%,K%-1% 1170 IF DOT(R%,K%) THEN F%=1% ELSE F%=0% 1180 SETDOT R%,K% : GOTO 570 1190 REM *** V (SYDV[ST) *** 1200 IF R%+1%>71% OR K%-1%<2% THEN 570 1210 R%=R%+1% : K%=K%-1% : ON T% GOTO 1220,1230,1240 1220 SETDOT R%,K% : GOTO 570 1230 CLRDOT R%-1%,K%+1% : SETDOT R%,K% : GOTO 570 1240 IF F%=0% THEN CLRDOT R%-1%,K%+1% ELSE SETDOT R%-1%,K%+1% 1250 IF DOT(R%,K%) THEN F%=1% ELSE F%=0% 1260 SETDOT R%,K% : GOTO 570 1270 REM *** N (SYD\ST) *** 1280 IF R%+1%>71% OR K%+1%>79% THEN 570 1290 R%=R%+1% : K%=K%+1% : ON T% GOTO 1300,1310,1320 1300 SETDOT R%,K% : GOTO 570 1310 CLRDOT R%-1%,K%-1% : SETDOT R%,K% : GOTO 570 1320 IF F%=0% THEN CLRDOT R%-1%,K%-1% ELSE SETDOT R%-1%,K%-1% 1330 IF DOT(R%,K%) THEN F%=1% ELSE F%=0% 1340 SETDOT R%,K% : GOTO 570 1350 REM *** A (RITNINGS-BETECKNING) *** 1360 PRINT CUR(0,0);"A"; : ; CUR(0,0); 1370 INPUTLINE A$ : A$=LEFT$(A$,LEN(A$)-2%) 1380 PRINT CUR(0,0); : GOTO 570 1390 REM *** S (NORMAL RIT-HAST.) *** 1400 H%=1% : GOTO 570 1410 REM *** F (SNABB RIT-HAST.) *** 1420 H%=2% : GOTO 570 1430 REM *** D (TYP - RITA) *** 1440 T%=1% : GOTO 570 1450 REM *** E (TYP - SUDDA) *** 1460 T%=2% : GOTO 570 1470 REM *** C (TYP - POSITION) *** 1480 T%=3% : F%=0% : GOTO 570 1490 REM *** I (INVERTERA BILDEN *** 1500 FOR I%=3% TO 71 : FOR J%=2% TO 79% 1510 IF DOT(I%,J%) THEN CLRDOT I%,J% ELSE SETDOT I%,J% 1520 NEXT J% : NEXT I% : GOTO 570 1530 REM *** L - (FLASH) *** 1540 ON L% GOTO 1550,1560 1550 FOR I%=31784% TO 32759% : POKE I%,PEEK(I%) OR 128 : NEXT I% : L%=2% : GOTO 570 1560 FOR I%=31784% TO 32759% : POKE I%,PEEK(I%) AND 127 : NEXT I% : L%=1% : GOTO 570 1570 REM * 1-0 (BILD > PRIM[R-MINNE) * 1580 IF PEEK(65053)<190% THEN 1600 1590 IF P%>2% THEN 570 1600 ON P% GOTO 1610,1620,1630,1640,1650,1660,1670,1680,1690 1610 S%=31744% : FOR I%=0% TO 1015% : J%=B1%(I%) : B1%(I%)=PEEK(S%) : POKE S%,J% : S%=S%+1% : NEXT I% : GOTO 550 1620 S%=31744% : FOR I%=0% TO 1015% : J%=B2%(I%) : B2%(I%)=PEEK(S%) : POKE S%,J% : S%=S%+1% : NEXT I% : GOTO 550 1630 S%=31744% : FOR I%=0% TO 1015% : J%=B3%(I%) : B3%(I%)=PEEK(S%) : POKE S%,J% : S%=S%+1% : NEXT I% : GOTO 550 1640 S%=31744% : FOR I%=0% TO 1015% : J%=B4%(I%) : B4%(I%)=PEEK(S%) : POKE S%,J% : S%=S%+1% : NEXT I% : GOTO 550 1650 S%=31744% : FOR I%=0% TO 1015% : J%=B5%(I%) : B5%(I%)=PEEK(S%) : POKE S%,J% : S%=S%+1% : NEXT I% : GOTO 550 1660 S%=31744% : FOR I%=0% TO 1015% : J%=B6%(I%) : B6%(I%)=PEEK(S%) : POKE S%,J% : S%=S%+1% : NEXT I% : GOTO 550 1670 S%=31744% : FOR I%=0% TO 1015% : J%=B7%(I%) : B7%(I%)=PEEK(S%) : POKE S%,J% : S%=S%+1% : NEXT I% : GOTO 550 1680 S%=31744% : FOR I%=0% TO 1015% : J%=B8%(I%) : B8%(I%)=PEEK(S%) : POKE S%,J% : S%=S%+1% : NEXT I% : GOTO 550 1690 S%=31744% : FOR I%=0% TO 1015% : J%=B9%(I%) : B9%(I%)=PEEK(S%) : POKE S%,J% : S%=S%+1% : NEXT I% : GOTO 550 1700 REM *** R (L[SA IN BILD) *** 1710 ONERRORGOTO 1760 1720 OPEN "DRAWFILE" ASFILE 1 1730 INPUTLINE #1,A$ 1740 FOR I%=31744% TO 32759% 1750 INPUT #1,J% : POKE I%,J% : NEXT I% : A$=LEFT$(A$,LEN(A$)-2%) 1760 OUT 58,0 : GOTO 550 1770 REM *** W (SPARA BILD) *** 1780 PREPARE "DRAWFILE" ASFILE 2 1790 PRINT #2,A$ 1800 FOR I%=31744% TO 32759% 1810 PRINT #2,PEEK(I%) : NEXT I% 1820 CLOSE 2 : GOTO 570 1830 REM *** P (PRINTNING SKRIVARE) *** 1840 OPEN "PR:" ASFILE 3 1850 PRINT #3,TAB(19);A$ 1860 FOR I%=3% TO 71% STEP 3% 1870 PRINT #3,TAB(20); 1880 FOR J%=2% TO 79% STEP 2% 1890 S%=0% : IF DOT(I%,J%) THEN S%=S%+1% 1900 IF DOT(I%,J%+1%) THEN S%=S%+2% 1910 IF DOT(I%+1%,J%) THEN S%=S%+4% 1920 IF DOT(I%+1%,J%+1%) THEN S%=S%+8% 1930 IF DOT(I%+2%,J%) THEN S%=S%+16% 1940 IF DOT(I%+2%,J%+1%) THEN S%=S%+32% 1950 PRINT #3,CHR$(S%+160%); : NEXT J% 1960 IF INP(56%)=141% THEN 1980 1970 PRINT #3 : NEXT I% 1980 CLOSE 3 : GOTO 570 1990 REM *** SLUT *** 2000 PRINT CUR(23,0) 2010 PRINT : ; "END OF DRAWING - TIME:"; 2020 GOSUB 22222 : END 2030 DATA Y,y,B,b,G,g,H,h,T,t,U,u,V,v,N,n,A,a,S,s,F,f,D,d,E,e,C,c,Z,z,I,i,L,l,R,r,W,w,P,p,K,k,.,. 2040 DATA 217,249,194,226,199,231,200,232,212,244,213,245,214,246,206,238 2050 DATA 193,225,211,243,198,230,196,228,197,229,195,227,218,250,201,233 2060 DATA 204,236,210,242,215,247,208,240,203,235,174,174 2070 DATA 128,256,384,512,640,768,896,40,168,296,424,552,680,808,936,80,208,336,464,592,720,848,976 11111 POKE 65008%,255%,255%,255% : RETURN 22222 C7%=PEEK(65008%) : C8%=PEEK(65009%) : C9%=PEEK(65010%) : IF PEEK(65008%)<>C7% THEN 22222 22223 C7=C7% : C8=C8% : C9=C9% : PRINT ((255-C7)+((255-C8)*256)+((255-C9)*256*256))/50;" sec." : RETURN