#11 Article 147 Posted at 1987/06/05 23:10:30 by NOZOMU (MAP041) [PRG.NL2]
Subject: NLOADER2+EDITORモドキ
100 'トリアエズ、 アッシュク セーバ ト ローダ ノ セツメイ ノ タメニ カイタ カンイ Editorモドキ 110 ' 120 ' Progtammed by NOZOMU / Loaderハ "NLOADER2" ト ヨンデ クダサイ。 130 ' 1000 DEFINT A-Z 1010 DIM D(7),D1%(2),D2%(2) 1020 D1(0)=4:D1(1)=2:D2(0)=4:D2(1)=2 1030 D(0)=&H0 :D(1)=&H80:D(2)=&H2080:D(3)=&H20A0 1040 D(4)=&H50A0:D(5)=&H50E0:D(6)=&HB0E0:D(7)=&HFFFF 1050 DEF FNP(POINTER)=POINT((POINTER\96)*4,(POINTER MOD 96)*2) 1060 DEF FNS(WRITE.D)=WRITE.D+32-((WRITE.D>95 )*32) 1065 DEF FNR(READ.D )=READ.D -32+((READ.D >159)*32) 1070 DEF FNX(POINTER)=POINTER \ 96 1080 DEF FNY(POINTER)=POINTER MOD 96 1100 CLS:LOCATE,,0 1110 ON STOP GOSUB 1120:STOP ON:GOTO 1130 1120 LOCATE,,1:STOP 1130 ' 1140 A$=INPUT$(1) 1150 P=POINT(X*4+1,Y*2):LINE(X*4,Y*2)-(X*4,Y*2+1),P:LINE(X*4+3,Y*2)-(X*4+3,Y*2+1),P 1160 IF A$=CHR$(28) THEN X=X+1 1170 IF A$=CHR$(29) THEN X=X-1 1180 IF A$=CHR$(30) THEN Y=Y-1 1190 IF A$=CHR$(31) THEN Y=Y+1 1200 IF X<0 THEN X=0 1210 IF X>159 THEN X=159 1220 IF Y<0 THEN Y=0 1230 IF Y>99 THEN Y=99 1240 IF A$="0" THEN LINE(X*4,Y*2)-STEP(3,1),0,BF 1250 IF A$="1" THEN LINE(X*4,Y*2)-STEP(3,1),1,BF 1260 IF A$="2" THEN LINE(X*4,Y*2)-STEP(3,1),2,BF 1270 IF A$="3" THEN LINE(X*4,Y*2)-STEP(3,1),3,BF 1280 IF A$="4" THEN LINE(X*4,Y*2)-STEP(3,1),4,BF 1290 IF A$="5" THEN LINE(X*4,Y*2)-STEP(3,1),5,BF 1300 IF A$="6" THEN LINE(X*4,Y*2)-STEP(3,1),6,BF 1310 IF A$="7" THEN LINE(X*4,Y*2)-STEP(3,1),7,BF 1320 IF A$="l" THEN SCREEN,2:INPUT"load :",F$:CLS:SCREEN,1:GOSUB *LOAD.PIC 1330 IF A$="s" THEN SCREEN,2:INPUT"save :",F$:CLS:SCREEN,1:GOSUB *SAVE.PIC 1331 IF A$="g" THEN GRAY=1 1332 IF A$="t" THEN GRAY=0 1340 P=7-POINT(X*4+1,Y*2):LINE(X*4,Y*2)-(X*4,Y*2+1),P:LINE(X*4+3,Y*2)-(X*4+3,Y*2+1),P 1350 GOTO 1140 1360 ' 1370 ' Save module 1380 ' 1390 *SAVE.PIC 1400 OPEN F$ FOR OUTPUT AS #1 1410 POINTER=0 1420 WHILE POINTER<15360 1430 COUNTER=1 1440 COLOUR=FNP(POINTER)*8+FNP(POINTER+1) 1450 POINTER=POINTER+2 1460 IF POINTER=15360 THEN 1510 1470 NEXT.COLOUR=FNP(POINTER)*8+FNP(POINTER+1) 1480 IF COLOUR<>NEXT.COLOUR THEN 1510 1490 COUNTER=COUNTER+1 1500 IF COUNTER<161 THEN 1450 ELSE POINTER=POINTER+2 1510 IF COUNTER=1 THEN PRINT #1,CHR$(FNS(COLOUR));:LENGTH=LENGTH+1 1520 IF COUNTER>1 THEN PRINT #1,CHR$(FNS(COLOUR+64));CHR$(FNS(COUNTER-2));:LENGTH=LENGTH+2 1530 IF LENGTH>77 THEN PRINT #1,CHR$(13);CHR$(10);:LENGTH=0 1540 WEND 1550 CLOSE #1 1560 RETURN 1570 ' 1580 ' Load module 1590 ' 1600 *LOAD.PIC 1610 OPEN F$ FOR INPUT AS #1 1620 POINTER=0 1630 WHILE POINTER<15360 1640 DUMMY=ASC(INPUT$(1,1)):IF DUMMY<32 THEN 1640 1650 COLOUR=FNR(DUMMY) 1660 IF COLOUR<64 THEN COUNTER=1:GOTO 1680 1670 COLOUR=COLOUR-64:COUNTER=FNR(ASC(INPUT$(1,1)))+2 1680 COLOUR1=COLOUR \ 8 : COLOUR2=COLOUR MOD 8 1690 D1(2)=D(COLOUR1):D2(2)=D(COLOUR2) 1700 FOR I=1 TO COUNTER 1710 IF GRAY=1 THEN PUT@(FNX(POINTER)*4,FNY(POINTER)*2 ),D1,PSET : PUT@(FNX(POINTER)*4,FNY(POINTER)*2+2),D2,PSET 1720 IF GRAY=0 THEN LINE(FNX(POINTER)*4,FNY(POINTER)*2 )-STEP(3,1),COLOUR1,BF : LINE(FNX(POINTER)*4,FNY(POINTER)*2+2)-STEP(3,1),COLOUR2,BF 1730 POINTER=POINTER+2 1740 NEXT 1750 WEND 1760 CLOSE #1 1770 RETURN