5 DIM F$(20),FSAVE$(20),FLOAD$(20),FL$(40),FLL$(20),DELETE$(124),EXPAND$(124),CLEAR$(33),C(255)›10 GRAPHICS 0:X=16:ICCOM=834:ICBADR=836:ICBLEN=840›15 COL1=708:COL2=709:COL3=710:COL4=711:COL5=712:SHIF=64:SCON=PEEK(559):POKE 16,112:GOTO 440›20 OPEN #1,4,0,FL$:GET #1,MD:GET #1,WD:GET #1,LN:IF MD>5 THEN WD=WD+256:MD=MD-10›25 SZ=WD*LN:FOR I=COL1 TO COL5:GET #1,N:POKE I,N:NEXT I›30 SC=SP*256:POKE ICBADR+X+1,SP:POKE ICBADR+X,0:POKE ICBLEN+X+1,1+INT(SZ/256):POKE ICBLEN+X,0›35 POKE ICCOM+X,7:I=USR(ADR("hhhชLVไ"),X):CLOSE #1:RETURN ›40 OPEN #1,8,0,"D1:TEMPFILE.SCR":WD=WIDE:MD=MODE:IF WIDE>255 THEN WD=WIDE-256:MD=MODE+10›45 PUT #1,MD:PUT #1,WD:PUT #1,LINE:FOR I=COL1 TO COL5:PUT #1,PEEK(I):NEXT I›50 POKE ICBADR+X+1,SP:POKE ICBADR+X,0:POKE ICBLEN+X+1,1+INT((LINE*WIDE)/256):POKE ICBLEN+X,0›55 POKE ICCOM+X,11:I=USR(ADR("hhhชLVไ"),X):CLOSE #1:RETURN ›60 IF ((LINE*WIDE-PIX)0)=LINE THEN V=0›170 LR=PIX-WIDE*UD:IF LR+H<0 OR LR+H>WIDE-1 THEN H=0›175 IF H=0 AND V=0 THEN 215›180 WH=0:WV=0:W=PEEK(DL4)+256*PEEK(DL5)-SC›185 U=INT(W/WIDE):IF V<>0 THEN WV=(UD-U-(V<0)<0)+2*(UD-U+(V>0)>8+12*(MODE<>5))›190 IF H<>0 THEN L=W-U*WIDE:WH=(LR+H-L<0)+2*(LR+H-L>39)›195 IF WH>0 OR WV>0 THEN POKE DL+114,WH:POKE DL+115,WV:C=USR(DISPLAY)›200 POKE SC+PIX,OLD:PIX=PIX+H+V:POKE 53279,1›205 IF T=1 THEN OLD=PEEK(SC+PIX):POKE SC+PIX,91:GOTO 215›210 POKE SC+PIX,OLD›215 RETURN ›220 GOSUB 785:ON (C=134)+(C=135)+(C=142)+(C=143)+2*(C=116)+3*(C=119)+4*(C=246) GOTO 250,60,90,645›225 IF C=156 THEN AV=1*(AV=0):GOTO 920›230 IF N=60 THEN SHIF=4+C-64:POKE 53279,4:GOSUB 930:RETURN ›235 IF N=39 THEN VERS=128*(VERS=0):GOTO 920›240 OLD=C(N+SHIF)+VERS:POKE SC+PIX,OLD:ON AV GOTO 245:RETURN ›245 C=135›250 V=WIDE*((C=143)-(C=142)):H=(C=135)-(C=134):MV=1:RETURN ›255 GOSUB 920:POKE SC+PIX,91:RETURN ›260 GOSUB 920›265 DI=PEEK(632):T=PEEK(644):DI=DI+5*(DI=7):DI=DI-10:OPT=PEEK(53279):IV=(OPT=5):IF OPT=6 THEN 255›270 IF DI<1 OR DI>4 THEN 265›275 ON (4*T)+DI GOSUB 280,285,290,295,300,305,310,320:GOTO 265›280 POKE COL5,PEEK(COL5)-2+256*(PEEK(COL5)<2):RETURN ›285 POKE COL5,PEEK(COL5)+2-256*(PEEK(COL5)>253):RETURN ›290 POKE COL3,PEEK(COL3)-2+256*(PEEK(COL3)<2):RETURN ›295 POKE COL3,PEEK(COL3)+2-256*(PEEK(COL3)>253):RETURN ›300 POKE COL2,PEEK(COL2)-2+256*(PEEK(COL2)<2):RETURN ›305 POKE COL2,PEEK(COL2)+2-256*(PEEK(COL2)>253):RETURN ›310 IF IV THEN POKE COL4,PEEK(COL4)-2+256*(PEEK(COL4)<2):RETURN ›315 POKE COL1,PEEK(COL1)-2+256*(PEEK(COL1)<2):RETURN ›320 IF IV THEN POKE COL4,PEEK(COL4)+2-256*(PEEK(COL4)>253):RETURN ›325 POKE COL1,PEEK(COL1)+2-256*(PEEK(COL1)>253):RETURN ›330 FLL$=FL$:FOR I=1 TO LEN(FL$):N=ASC(FL$(I,I)):ON N=58 GOSUB 370:NEXT I:FL$=FLL$›335 FLL$=FL$:FOR I=1 TO LEN(FL$):N=ASC(FL$(I,I)):ON N=46 GOSUB 375:NEXT I:FL$=FLL$›340 IF LEN(FL$)>8 THEN FL$=FL$(1,8)›345 IF LEN(FL$)<1 THEN 390›350 N=ASC(FL$(1,1)):IF N>90 OR N<65 THEN 385›355 IF LEN(FL$)<2 THEN GOTO 365›360 FOR I=2 TO LEN(FL$):N=ASC(FL$(I,I)):ON (N>90 OR N<65) AND (N>57 OR N<48) GOTO 380:NEXT I›365 FLL$="D1:":FLL$(4)=FL$:N=0:RETURN ›370 FLL$=FL$(I+1,LEN(FL$)):RETURN ›375 FLL$=FL$(1,I-1):RETURN ›380 POP :? "}":? "Illegal characters in ";FL$:GOTO 390›385 ? "}":? FL$;" must start with a capital":? "letter.":GOTO 390›390 ? "Let's try that name again.":N=1:RETURN ›395 TRAP 400:OPEN #1,4,0,FL$:N=0:CLOSE #1:RETURN ›400 ? :? FL$;" isn't on disk in":? "drive 1":? "Insert disk with ";FL$;"and":? "press RETURN.":CLOSE #1›405 ? "Or to try another file name, press anyother key."›410 ON PEEK(753)<>3 GOTO 410:GOSUB 785:ON N=12 GOTO 395:N=1:RETURN ›415 TRAP 435:OPEN #1,4,0,FL$:? FL$;" is already on disk.":? "Unless you change the name, the old"›420 ? "file will be lost. To change the namepress RETURN":? "Or press any other key to continue.":CLOSE #1›425 ON PEEK(753)<>3 GOTO 425:GOSUB 785:ON N=12 GOTO 430:N=0:RETURN ›430 N=1:RETURN ›435 CLOSE #1:N=0:RETURN ›440 ? " ฦ๏๎๔โ๙๔ๅ๒":? :? :? :GOSUB 905›445 GOSUB 850:? "What is the name of your character set? (Enter '@' for ROM set)":POKE 764,255:INPUT F$›450 IF F$="@" THEN 465›455 FL$=F$:GOSUB 330:ON N GOTO 445:F$=FLL$:F$(LEN(FLL$)+1)=".SET"›460 FL$=F$:GOSUB 395:ON N GOTO 445›465 GOSUB 840:? :? "What file should hold your finished screen? (Eight characters)":POKE 764,255:INPUT FSAVE$›470 FL$=FSAVE$:GOSUB 330:ON N GOTO 465:FSAVE$=FLL$:FSAVE$(LEN(FLL$)+1)=".SCR"›475 FL$=FSAVE$:GOSUB 415:ON N GOTO 465›480 FLOAD$="":? :? "Would you like to edit a screen you have already saved? (Y or N) "›485 GOSUB 785:ON N=35 GOTO 535:ON N=43 GOTO 490:GOTO 485›490 ? :? "What is the name of the saved screen file? ":POKE 764,255:INPUT FLOAD$›495 FL$=FLOAD$:GOSUB 330:ON N=0 GOTO 500:GOTO 480›500 FLOAD$=FLL$:FLOAD$(LEN(FLL$)+1)=".SCR"›505 FL$=FLOAD$:GOSUB 395:ON N GOTO 480:OPEN #1,4,0,FLOAD$:GET #1,MD:GET #1,WD:GET #1,LN:CLOSE #1:FLOAD=1›510 IF MD>5 THEN MD=MD-10:WD=WD+256›515 ? :? FLOAD$;" was saved as:":? "Mode ";MD;",":? "with ";LN;" lines":? "of ";WD;" characters per line."›520 ? "If you wish to ใ่แ๎็ๅ these parameterspress RETURN.":? "To leave them ๕๎ใ่แ๎็ๅไ press any other key."›525 ON PEEK(753)<>3 GOTO 525:GOSUB 785:IF N=12 THEN 540›530 MODE=MD:WIDE=WD:LINE=LN:GOTO 585›535 FLOAD=0›540 ? :? "What Antic mode will you work in?":? "(Antic 2, 4, OR 5) ":POKE 764,255›545 GOSUB 785:ON N<>30 AND N<>24 AND N<>29 GOTO 545›550 MODE=C(N)-16›555 ? :? "How wide a line?":? " (Minimum 40 characters":? " maximum ";170+170*(MODE=5);" characters)"›560 POKE 764,255:TRAP 560:INPUT WIDE:WIDE=INT(WIDE):ON WIDE<40 OR WIDE>170 GOSUB 790›565 ? :? "How many lines do you want to edit? (Minimum ";12+12*(MODE<>5);:? " Maximum ";INT(4096/WIDE);")"›570 TRAP 570:INPUT LINE›575 LINE=INT(LINE):IF LINE>INT(4096/WIDE) THEN LINE=INT(4096/WIDE)›580 IF LINE<12+12*(MODE=4) THEN LINE=12+12*(MODE=4)›585 ? "}":? "You have chosen:":? "Character set--";F$:? "Save file--";FSAVE$:? "Load file--";FLOAD$›590 SZ=LINE*WIDE-1:? "Mode ";MODE:? LINE;" lines of ";WIDE;" characters"›595 ? "If this is right, press ำิมาิ To make changes, press ฯะิษฯฮ"›600 ON (PEEK(53279)=6)+(2*(PEEK(53279)=3)) GOTO 605,440:GOTO 600›605 A=PEEK(106):TOP=A-24:CHBAS=TOP:CH=CHBAS*256:SP=TOP+8:SC=SP*256:POKE 106,TOP:OLDCHBAS=224:GRAPHICS 0›610 ? "Just a minute while I get myself together . . ."›615 IF F$="@" THEN CHBAS=224:CH=CHBAS*256:GOTO 630›620 OPEN #1,4,0,F$:POKE ICBADR+X+1,CHBAS:POKE ICBADR+X,0:POKE ICBLEN+X+1,4:POKE ICBLEN+X,0›625 POKE ICCOM+X,7:C=USR(ADR("hhhชLVไ"),X):CLOSE #1›630 POKE 559,0:GOSUB 640:GOSUB 655:GOSUB 810:GOSUB 635:ON FLOAD GOSUB 650:GOSUB 925:GOTO 120›635 POKE 756,CHBAS:RETURN ›640 OPEN #1,4,0,"D1:CLEAR.SUB":FOR I=1 TO 33:GET #1,N:CLEAR$(I,I)=CHR$(N):NEXT I:CLOSE #1›645 C=USR(ADR(CLEAR$),SP,X):RETURN ›650 T=SZ:FL$=FLOAD$:GOSUB 20:SZ=T:RETURN ›655 DL=256*(TOP+4):DL4=DL+4:DL5=DL+5:FOR I=0 TO 2:POKE DL+I,112:NEXT I:PIX=0:N=0›660 FOR I=DL+3 TO DL+27+36*(MODE<>5) STEP 3:C=SC+N*WIDE:POKE I,64+MODE:POKE I+2,INT(C/256)›665 POKE I+1,C-256*PEEK(I+2):N=N+1:NEXT I›670 N=0:MENU=256*(TOP+5)+64:DLMEN=DL+32+36*(MODE<>5):POKE DLMEN-2,MODE+64:POKE DLMEN,INT(MENU/256)›675 POKE DLMEN-1,MENU-256*PEEK(DLMEN):FOR I=DLMEN+1 TO DLMEN+3:POKE I,MODE:NEXT I›680 POKE I,65:POKE I+1,0:POKE I+2,DL/256:OPEN #1,4,0,"D:DISPLAY.SUB"›685 DISPLAY=DL+128:TRAP 690:FOR I=0 TO 186:GET #1,N:POKE DISPLAY+I,N:NEXT I:GOTO 695›690 POP ›695 WHI=INT(WIDE/256):WLO=WIDE-256*WHI:POKE DL+112,WLO:POKE DL+113,WHI›700 POKE 560,0:POKE 561,DL/256:CLOSE #1:RETURN ›705 POKE SC+PIX,OLD:GOSUB 40:POKE 756,OLDCHBAS:GRAPHICS 0:POKE 764,255›710 ? "Screen is saved as D1:TEMPFILE.SCR":? :? "Do you want to save the screen as":? FSAVE$;"? (Y or N)"›715 GOSUB 785:ON N<>43 AND N<>35 GOTO 715:IF N=43 THEN GOSUB 765:GOTO 725›720 FSAVE=0›725 ? :? "Do you want to quit? (Y or N)":POKE 764,255›730 GOSUB 785:ON N<>43 AND N<>35 GOTO 730:ON N=35 GOTO 735:ON N=43 GOTO 760›735 ? :? "To return to edit the same screen, press ฯะิษฯฮ":? :? "To start FONTBYTER over, press ำิมาิ"›740 OPT=PEEK(53279):ON ((OPT=6)+(2*(OPT=3))) GOTO 745,750:GOTO 740›745 POKE 106,A:GRAPHICS 0:GOTO 10›750 POKE 106,TOP:GOSUB 635:FL$="D1:TEMPFILE.SCR":IF FSAVE=1 THEN FL$=FSAVE$›755 GOSUB 20:GOSUB 655:GOTO 120›760 POKE 106,A:POKE 764,255:GRAPHICS 0:END ›765 FSAVE=1:TRAP 770:OPEN #2,4,0,FSAVE$:CLOSE #2:XIO 36,#2,0,0,FSAVE$:XIO 33,#2,0,0,FSAVE$:GOTO 775›770 CLOSE #2›775 FL$="D1:TEMPFILE.SCR,":FLL$=FSAVE$(4,LEN(FSAVE$)):FL$(17)=FLL$›780 XIO 32,#1,0,0,FL$:RETURN ›785 C=PEEK(764):N=C-64*INT(C/64):RETURN ›790 IF WIDE<40 THEN WIDE=40:RETURN ›795 IF WIDE>170 AND MODE<>5 THEN WIDE=170:RETURN ›800 IF WIDE<340 THEN RETURN ›805 WIDE=340:RETURN ›810 TRAP 815:OPEN #1,4,0,"D:DELETE.SUB":FOR I=1 TO 124:GET #1,N:DELETE$(I,I)=CHR$(N):NEXT I:GOTO 820›815 POP ›820 CLOSE #1:WHI=INT(WIDE/256):WLO=WIDE-256*WHI›825 TRAP 830:OPEN #1,4,0,"D:EXPAND.SUB":FOR I=1 TO 124:GET #1,N:EXPAND$(I,I)=CHR$(N):NEXT I:GOTO 835›830 POP ›835 CLOSE #1:RETURN ›840 TRAP 865:XIO 36,#1,0,0,"D:*.SCR"›845 ? :? "Currently saved screen files:":FLL$="SCR":GOTO 860›850 TRAP 865:XIO 35,#1,0,0,"D:*.SET"›855 ? :? "Currently available character sets:":FLL$="SET"›860 FL$="D1:*.":FL$(LEN(FL$)+1)=FLL$:OPEN #1,6,0,FL$:FOR I=0 TO 50:INPUT #1,FLL$:? FLL$:NEXT I›865 CLOSE #1:RETURN ›870 GOSUB 920:POKE SC+PIX,OLD:GOTO 895›875 WV=2*((DI=5)+(DI=13)+(DI=9))+(DI=10)+(DI=6)+(DI=14):WH=2*(DI<8 AND DI>4)+(DI<12 AND DI>8)›880 W=(PEEK(DL4)+256*PEEK(DL5))-SC:U=INT(W/WIDE):WV=WV-(U=0 AND WV=1)-2*((U+7+12*(MODE<>5)=LINE-2) AND WV=2)›885 L=W-(U*WIDE):WH=WH-(L=0 AND WH=1)-2*((L+40)=WIDE AND WH=2)›890 POKE DL+114,WH:POKE DL+115,WV:C=USR(DISPLAY)›895 IF PEEK(53279)<>6 THEN DI=PEEK(632):ON DI<>15 GOTO 875:GOTO 895›900 PIX=PEEK(DL4)+256*PEEK(DL5)+(6+6*(MODE<>5))*WIDE+20:OLD=PEEK(PIX):PIX=PIX-SC:RETURN ›905 OPEN #4,4,0,"D:CHARDATA.DAT"›910 FOR I=0 TO 255:GET #4,N:C(I)=N:NEXT I›915 CLOSE #4:RETURN ›920 FOR I=0 TO 10:POKE 53279,4:NEXT I:RETURN ›925 OPEN #1,4,0,"D:MENU.DAT":FOR I=4 TO 483:GET #1,N:POKE MENU+I,N:NEXT I:CLOSE #1›930 MENSH=MENU+160*INT(SHIF/64):POKE DLMEN,INT(MENSH/256):POKE DLMEN-1,MENSH-256*PEEK(DLMEN):RETURN ›