1 'Model 100 Canvas' 2 'By Seth Kaplan' 3 'Version 1.1 Developed 1985' 4 'Public domain as long' 5 'as lines 1 thru 6 remain' 6 '-----------------------------------' Thanks to Neil Wick for a pixel tester 7 CLEAR700,MAXRAM:CLS:S=1:YI=1:ONERRORGOTO71:IFINKEY$=CHR$(27)THEN9 8 FORL=1TO3:I$="p":GOSUB 111:I$="q":GOSUB111:NEXTL:I$="p":GOSUB111:GOSUB113:PRINTCHR$(27);"q" 9 CLS:PRINT CHR$(27);"q";" ":GOSUB370 10 GOSUB 124 11 I$=INKEY$:LINE(X,Y)-(X,Y),0:LINE(X,Y)-(X,Y),1:LINE(X,Y)-(X,Y),D:IFI$=""THEN11 14 H$="Current coordinate ("+MID$(STR$(X),2,LEN(STR$(X)))+","+MID$(STR$(Y),2,LEN(STR$(Y)))+") ":PRINT@287,H$; 15 IFI$=CHR$(21)THENGOSUB132 16 IFI$=CHR$(16)THENGOSUB1020 17 IFI$=CHR$(12)THENGOSUB300 18 IFI$="T"THENGOSUB490 19 IFI$="K"THENGOSUB490 20 IFI$="S"THENX=X-1:CX=1:CY=0 21 IFI$<>CHR$(30)ANDI$<>CHR$(31)THEN25 22 IFI$=CHR$(30)THENS=S+1:IFS>22THENS=22:BEEP 23 IFI$=CHR$(31)THENS=S-1:IFS<1THENS=1:BEEP 24 PRINT@284," Brush size:";STR$(S*2+1);" "; 25 IFI$=CHR$(132)THENPRINT@284," Clearing screen ";:FORQ=1TO400:NEXTQ:GOSUB370 26 IFI$="W"THENX=X-1:Y=Y-1 27 IFI$="Z"THENX=X-1:Y=Y+1 28 IFI$="R"THENX=X+1:Y=Y-1 29 IFI$="C"THENX=X+1:Y=Y+1 30 IFI$="D"THENX=X+1:CX=1:CY=0 31 IFI$="M"THENIFM=1THENPRINT@285," Mirror mode deactivated ";:M=0ELSEM=1:PRINT@285," Mirror mode activated "; 32 IFY>22ANDCX=1THENIFS>53-YTHENS=53-Y 33 IFY<22ANDCX=1THENIFS>YTHENS=Y-1 34 IFS<1THENS=1 35 IFX>119ANDCY=1THENIFS>238-XTHENS=238-X 36 IFX<119ANDCY=1THENIFS>XTHENS=X-1 37 IFI$=CHR$(9)THENGOSUB1100 40 IFI$="E"THENY=Y-1:CY=1:CX=0 41 IFI$=CHR$(20)THENPRINT@286,"Text mode: Enter line number";:GOSUB97 42 IFI$<>"O"THEN48ELSEPRINT@280,"Direct coordinate access: Enter X and Y"; 43 I$=INKEY$:IFI$=""THEN43ELSET$=I$ 44 I$=INKEY$:IFI$=""THEN44ELSET$=T$+I$ 45 I$=INKEY$:IFI$=""THEN45ELSET$=T$+I$:X=VAL(T$) 46 I$=INKEY$:IFI$=""THEN46ELSET$=I$ 47 I$=INKEY$:IFI$=""THEN47ELSET$=T$+I$:Y=VAL(T$):PRINT@280,SPACE$(39); 48 IFI$="I"THENPRINT@284," Inversing screen ";:LINE(0,0)-(239,53),YI,BF:IFYI=0THENYI=1ELSEYI=0 50 IFI$="X"THENY=Y+1:CY=1:CX=0 51 IFI$="B"ANDB=1THENGOSUB430:IFM=1THENP1=1:GOSUB 80:GOTO60:ELSELINE(BX,BY)-(X,Y),DR,BF:B=0:D=DR:GOTO60 54 IFI$="B"THEN B=1:BX=X:BY=Y:DR=D:D=0 55 IFI$="F"ANDF=1THENGOSUB430:IFM=1THENP2=1:GOSUB80:GOTO60:ELSELINE(FX,FY)-(X,Y),DR,B:F=0:D=1:GOTO60 56 IFI$="F"THENF=1:FX=X:FY=Y:DR=D:D=0 57 IFI$="L"ANDL=1THENGOSUB430:IFM=1THENP3=1:GOSUB80:GOTO60:ELSELINE(LX,LY)-(X,Y),DR:L=0:D=1:GOTO60 58 IFI$="L"THEN L=1:LX=X:LY=Y:DR=D:D=0 60 IFI$=CHR$(27)ANDF=0ANDB=0ANDL=0THENIFD=1THEND=0ELSED=1 61 IFY>53THENY=Y-1 62 IFY<1THENY=Y+1 63 IFX<1THENX=X+1 64 IFX>238THENX=X-1 66 IFM=1ANDX<>120THENGOSUB80:GOTO70 67 IFS=1THENLINE(X,Y)-(X,Y),DELSEGOSUB77 70 GOTO11 71 BEEP:ONERRORGOTO71:IFX>239THENX=239 72 IFX<0THENX=0 73 IFY>53THENY=53 74 IFY<0THENY=0 75 PRINT@284," Error";ERR;"at line";ERL;" "; 76 RESUME11 77 IFCY=1THENFORLP=1TOS:PX=PX+1:LINE(X+PX,Y)-(X+PX,Y),D:LINE(ABS(X-PX),Y)-(ABS(X-PX),Y),D:NEXT LP:LINE(X,Y)-(X,Y),D:PX=0 78 IFCX=1THENFORLP=1TOS:PY=PY+1:LINE(X,Y+PY)-(X,Y+PY),D:LINE(X,Y-PY)-(X,Y-PY),D:NEXT LP:LINE(X,Y)-(X,Y),D:PY=0 79 RETURN 80 IFX<120THEN90 81 IFI$="B"ANDP1=1THENLINE(BX,BY)-(X,Y),1,BF:B=0:LINE(120-(BX-120),BY)-(120-(X-120),Y),DR,BF:D=1:P1=0:RETURN 82 IFI$="F"ANDP2=1THENLINE(FX,FY)-(X,Y),1,B:F=0:LINE(120-(FX-120),FY)-(120-(X-120),Y),DR,B:D=1:P2=0:RETURN 83 IFI$="L"ANDP3=1THENLINE(LX,LY)-(X,Y),1:L=0:LINE(120-(LX-120),LY)-(120-(X-120),Y),DR:D=1:P3=0:RETURN 84 IFS<>1THENGOSUB77ELSELINE(X,Y)-(X,Y),D 85 RX=X:X=120-(X-120):IFS<>1THENGOSUB77ELSELINE(X,Y)-(X,Y),D 86 X=RX:GOTO96 90 IFI$="B"ANDP1=1THENLINE(BX,BY)-(X,Y),1,BF:B=0:LINE(120+(120-BX),BY)-(120-(X-120),Y),DR,BF:D=1:P1=0:RETURN 91 IFI$="F"ANDP2=1THENLINE(FX,FY)-(X,Y),1,B:F=0:LINE(120+(120-FX),FY)-(120-(X-120),Y),DR,B:D=1:P2=0:RETURN 92 IFI$="L"ANDP3=1THENLINE(LX,LY)-(X,Y),1:L=0:LINE(120+(120-LX),LY)-(120-(X-120),Y),DR:D=1:P3=0:RETURN 93 IFS<>1THENGOSUB77ELSELINE(X,Y)-(X,Y),D 94 RX=X:X=120+(120-X):IFS<>1THENGOSUB77ELSELINE(X,Y)-(X,Y),D 95 X=RX 96 RETURN 97 I$=INKEY$:IFI$=""THEN97 98 IFASC(I$)<49ORASC(I$)>55THEN97 99 O=VAL(I$):O=(O-1)*40:PRINT@284," Text mode active "; 100 I$=INKEY$:IFI$=""THENPRINT@O,CHR$(239):PRINT@O," ":GOTO100 105 IFI$=CHR$(20)THEN110 106 IFI$=CHR$(8)THENIFO=0THENO=277ELSEPRINT@O-1," ":O=O-1:GOTO109 107 IFI$=CHR$(13)THENRE=O-INT(O/40)*40:O=O+40-RE-1:ELSEGOSUB400 108 PRINT@O,I$:O=O+1:IFO>278THENO=0 109 GOTO100 110 PRINT@284," Text mode deactiavted ";:RETURN 111 IFINKEY$=CHR$(27)THEN9ELSEPRINT@87,CHR$(27);I$;" Model 100 ":PRINT@127," Canvas " 112 PRINT@167," Written by Seth Kaplan ":PRINT@207,"Version 1.1 Developed 1985":FORLLL=1TO200:NEXT LLL:RETURN 113 FORL2=1TO150 116 R=208-INT(RND(1)*180):R2=51-INT(RND(1)*45):LINE(R,R2)-(R+5,R2+5),0,BF:IFINKEY$=CHR$(27)THEN9ELSENEXTL2 117 I1=120:I2=31:I3=120:I4=31 118 FORL2=1TO25 119 LINE(I1,I2)-(I3,I4),0,B:IFINKEY$=CHR$(27)THEN9 120 I1=I1-1:I2=I2-1:I3=I3+1:I4=I4+1 121 NEXTL2:FORL2=1TO50:LINE(I1,I2)-(I3,I4),0,B:I1=I1-1:I3=I3+1:NEXTL2 123 RETURN 124 PRINT@288,"Filename: "; 125 I$=INKEY$:PRINT@298+EF,CHR$(239);:PRINT@298+EF," ";:IFI$=""THEN125 126 IFI$=CHR$(8)THENPRINT@297+EF," ";:F$=MID$(F$,1,EF-1):EF=EF-1:GOTO125 127 EF=EF+1:IFI$=CHR$(13)OREF>8THEN130 128 F$=F$+I$:PRINT@297+EF,I$;:GOTO125 130 FILE$="RAM:"+F$:RETURN 132 OPENFILE$FOROUTPUTAS1:PRINT@284," Now saving: ";F$;" "; 137 FORAB=1TO239 138 FORCD=1TO53 139 PRINT@40*(CD\8)+AB\6,CHR$(27)"P"; 140 PRINTCHR$(27)"Q" 145 FL=PEEK(ABMOD6-20)AND2^(CDMOD8) 150 IFFLTHEN151ELSE160 151 IFAB<10THENP$=P$+"00"+RIGHT$(STR$(AB),1)ELSEIFAB<100THENP$=P$+"0"+RIGHT$(STR$(AB),2)ELSEP$=P$+RIGHT$(STR$(AB),3) 152 IFCD<10THENP$=P$+"0"+RIGHT$(STR$(CD),1)ELSEP$=P$+RIGHT$(STR$(CD),2) 153 IFLEN(P$)>200THENPRINT#1,P$:P$="" 160 NEXTCD 170 NEXTAB 180 PRINT#1,P$:P$="":PRINT#1,"99999":CLOSE#1:PRINT@290," Save complete ";:RETURN 190 OPEN"LPT:"FOROUTPUTAS1:PRINT@280," Now printing: ";F$;" "; 195 PRINT#1,CHR$(27);CHR$(51);CHR$(12):PRINT#1,CHR$(15) 200 FORAB=0TO239STEP2 210 FORCD=54TO0STEP-1 220 PRINT@40*(CD\8)+AB\6,CHR$(27)"P"; 230 PRINTCHR$(27)"Q" 240 FL=PEEK(ABMOD6-20)AND2^(CDMOD8) 250 IFFLTHENP$=P$+"1"ELSEP$=P$+"0" 261 PRINT@40*(CD\8)+(AB+1)\6,CHR$(27)"P"; 262 PRINTCHR$(27)"Q" 263 FL=PEEK((AB+1)MOD6-20)AND2^(CDMOD8) 264 IFFLTHENP2$=P2$+"1"ELSEP2$=P2$+"0" 265 NEXTCD 266 FORCD=1TO55 267 IFMID$(P$,CD,1)="1"ANDMID$(P2$,CD,1)="1"THENP3$=P3$+CHR$(239) 268 IFMID$(P$,CD,1)="1"ANDMID$(P2$,CD,1)="0"THENP3$=P3$+CHR$(231) 269 IFMID$(P$,CD,1)="0"ANDMID$(P2$,CD,1)="1"THENP3$=P3$+CHR$(232) 270 IFMID$(P$,CD,1)="0"ANDMID$(P2$,CD,1)="0"THENP3$=P3$+" " 272 NEXTCD 275 PRINT#1,P3$:P$="":P2$="":P3$="" 280 NEXTAB 290 CLOSE#1:PRINT@288," Printout complete";:RETURN 300 OPENFILE$FORINPUTAS1:PRINT@284," Now Loading: ";F$;" "; 310 INPUT#1,P$:IF P$="99999"THEN360 315 FORL2=1TO205STEP5 320 AB=VAL(MID$(P$,L2,3)) 330 CD=VAL(MID$(P$,L2+3,2)) 340 PSET(AB,CD) 345 NEXTL2 350 GOTO310 360 PRINT@289," Loading complete";:P$="":CLOSE#1:RETURN 370 CLS:L=0:D=1:X=120:Y=32:LINE(0,54)-(239,54),1:LINE(0,0)-(239,0):LINE(0,0)-(0,54):LINE(239,0)-(239,54):RETURN 400 IFI$=CHR$(9)THENRE=O-INT(O/40)*40:IFRE<8THENO=O+(8-RE)-1ELSEIFRE<16THENO=O+(16-RE)-1ELSEIFRE<24THENO=O+(24-RE)-1 410 IFI$=CHR$(9)THENRE=O-INT(O/40)*40:IFRE>=24THENIFRE<32THENO=O+(32-RE)-1ELSEIFRE<40ANDO<272THENO=O+(40-RE)-1ELSEO=0 420 RETURN 430 IFI$="B"THENH$=" Box (":QX=BX:QY=BY:Q=284 440 IFI$="F"THENH$=" Frame (":QX=FX:QY=FY:Q=283 450 IFI$="L"THENH$=" Line (":QX=LX:QY=LY:Q=283 460 H$=H$+MID$(STR$(X),2,LEN(STR$(X)))+","+MID$(STR$(Y),2,LEN(STR$(Y)))+") to (" 470 H$=H$+MID$(STR$(QX),2,LEN(STR$(QX)))+","+MID$(STR$(QY),2,LEN(STR$(QY)))+") ":PRINT@Q,H$; 480 RETURN 490 PRINT@284," Enter triangle size: ";:I3$=I$ 500 I$=INKEY$:IFI$=""THEN500 505 I2$=INKEY$:IFI2$=""THEN505 507 I$=I$+I2$ 510 H=VAL(I$) 511 IFI3$="K"THEN530 515 LINE(X-H,Y+H)-(X,Y-H),D:LINE(X-H,Y+H)-(X+H,Y+H),D:LINE(X+H,Y+H)-(X,Y-H),D 520 PRINT@284," Triangle size:";H;" ";:RETURN 530 FORH3=1TOH 540 LINE(X-H3,Y+H3)-(X,Y-H3),D:LINE(X-H3,Y+H3)-(X+H3,Y+H3),D:LINE(X+H3,Y+H3)-(X,Y-H3),D:NEXTH3:GOTO520 1000 'SCDUMP.100 Don Corbitt [73216,1022] Modified by Bill Templeton [75655,1056] 1003 DEFINTS:PRINT@280,SPACE$(39); 1005 IFSXTHEN1008ELSEDIM SD%(239),SD$(15) 1006 FORSX=0TO15:READSD:SD$(SX)=CHR$(SD)+CHR$(SD):NEXTSX:E$=CHR$(27) 1008 SC=POS(0):SR=CSRLIN:PRINTE$"P";:LPRINTE$;"@";E$"3"CHR$(16):FORSY=0TO7 1010 FORSX=0TO39:PRINT@SX+SY*40,;:FORSZ=-20TO-15 1011 SD%(SX*6+20+SZ)=PEEK(SZ):NEXT SZ,SX 1013 FORSW=0TO1:LPRINTE$"K"CHR$(224);CHR$(1); 1014 FORSX=0TO239 1015 IFSWTHENLPRINTSD$(SD%(SX)\16);ELSE LPRINTSD$(SD%(SX)MOD16); 1017 NEXTSX:LPRINT:NEXTSW,SY:PRINT@SC+SL*40,"";:RETURN 1018 DATA255,63,207,15,243,51,195,3,252,60,204,12,240,48,192,0 1020 PRINT@283,"Print screen: Select method 1 or 2 "; 1030 I$=INKEY$:IFI$=""THEN1030 1040 IFI$="1"THEN1000 1050 IFI$="2"THEN190 1100 BEEP:PRINT@286," EXIT program(Y/N)? "; 1110 I$=INKEY$:IFI$=""THEN1110 1120 IFI$="Y"ORI$="y"THENMENU 1130 RETURN