#11 Article 158 Posted at 1987/06/10 02:32:38 by TA(O) (MAP269) [PRG.NL2]

Subject: NLOADER2 For PC-8801シリ-ズ

100 'トリアエズ、 アッシュク セーバ ト ローダ ノ セツメイ ノ タメニ カイタ カンイ Editorモドキ
110 '
120 ' Programmed by NOZOMU / Loaderハ "NLOADER2" ト ヨンデ クダサイ。
130 '
140 ' PC-8801 Version by Magical Creamy TA(O)
150 ' キー ソウサガ イチブ カワッテイマス イドウハ テンキーノ 2.4.6.8デ psetハ フルキーノ 0-7デス
160 '
1000 CLEAR ,&HBE00 : DEFINT A-Z : GOSUB 1660
1010 DEF FNP(POINTER)=POINT((POINTER\96)*4,(POINTER MOD 96)*2)
1020 DEF FNS(WRITE.D)=WRITE.D+32-((WRITE.D>95 )*32)
1030 SCREEN 0,1:CLS:LOCATE,,0
1040 ON STOP GOSUB 1050:STOP ON:GOTO 1060
1050 LOCATE,,1:STOP
1060 '
1070 P=POINT(X*4+1,Y*2)
1080 LINE(X*4,Y*2)-(X*4,Y*2+1),P XOR 7:LINE(X*4+3,Y*2)-(X*4+3,Y*2+1),P XOR 7
1090 IF (INP(0) AND &H40)=0 THEN X=X+1
1100 IF (INP(0) AND &H10)=0 THEN X=X-1
1110 IF (INP(1) AND &H1 )=0 THEN Y=Y-1
1120 IF (INP(0) AND &H4 )=0 THEN Y=Y+1
1130 IF X<0   THEN X=0
1140 IF X>159 THEN X=159
1150 IF Y<0   THEN Y=0
1160 IF Y>99  THEN Y=99
1170 C=INP(6) : IF C=255 THEN 1220
1180 FOR BIT=0 TO 7
1190   IF (C AND 2^BIT)=0 THEN C=BIT:BIT=7
1200 NEXT
1210 LINE (X*4,Y*2)-STEP(3,1),C,BF
1220 IF (INP(3) AND &H10)=0 THEN GOSUB *LOAD.PIC
1230 IF (INP(4) AND &H8)=0 THEN LINE (X*4,Y*2)-STEP(3,1),P,BF : GOSUB *SAVE.PIC
1240 IF (INP(2) AND &H80)=0 THEN LINE (X*4,Y*2)-STEP(3,1),P,BF : SCREEN 1,,,1 :      A=USR3(0) : A=USR(0) : A$=INPUT$(1) : A=USR4(0) : SCREEN 0
1250 IF X=OX AND Y=OY THEN 1070
1260 LINE(OX*4,OY*2)-(OX*4,OY*2+1),P : LINE(OX*4+3,OY*2)-(OX*4+3,OY*2+1),P
1270 OX=X : OY=Y : GOTO 1070
1280 '
1290 ' Save module
1300 '
1310 *SAVE.PIC
1320 SCREEN ,2 : A=USR(0) : INPUT "save :",F$:CLS:SCREEN ,1
1330 OPEN F$ FOR OUTPUT AS #1
1340 POINTER=0
1350 WHILE POINTER<15360
1360    COUNTER=1
1370    COLOUR=FNP(POINTER)*8+FNP(POINTER+1)
1380    POINTER=POINTER+2
1390       IF POINTER=15360 THEN 1440
1400       NEXT.COLOUR=FNP(POINTER)*8+FNP(POINTER+1)
1410       IF COLOUR<>NEXT.COLOUR THEN 1440
1420       COUNTER=COUNTER+1
1430    IF COUNTER<161 THEN 1380 ELSE POINTER=POINTER+2
1440    IF COUNTER=1 THEN PRINT #1,CHR$(FNS(COLOUR));:LENGTH=LENGTH+1
1450    IF COUNTER>1 THEN PRINT #1,CHR$(FNS(COLOUR+64));CHR$(FNS(COUNTER-2));:LENGTH=LENGTH+2
1460    IF LENGTH>77 THEN PRINT #1,CHR$(13);CHR$(10);:LENGTH=0
1470 WEND
1480 CLOSE #1
1490 RETURN
1500 '
1510 ' Load module
1520 '
1530 *LOAD.PIC
1540 SCREEN ,2 : A=USR(0) : INPUT "load :",F$:CLS:SCREEN ,1
1550 OPEN F$ FOR INPUT AS #1
1560 DUMMY$=STRING$(255,"U") : A=USR1(0)
1570 LINE INPUT #1,DUMMY$ : IF DUMMY$="" THEN 1570
1580 DUMMY$=USR2(DUMMY$)
1590 IF LEN(DUMMY$)=255 THEN 1610
1600 IF NOT(EOF(1)) THEN 1570
1610 CLOSE #1
1620 RETURN
1630 '
1640 ' Write machine code
1650 '
1660 IF PEEK(&HBE00)=&HAF AND PEEK(&HBFFA)=&HF THEN RETURN
1670 RESTORE 1730 : AD=&HBE00
1680 READ A$ : IF A$="You morisawa" THEN 1700
1690 POKE AD,VAL("&H"+A$) : AD=AD+1 : GOTO 1680
1700 DEF USR=&H35D9 : DEF USR1=&HBE00 : DEF USR2=&HBE08
1710 DEF USR3=&HBF30 : DEF USR4=&HBFB0
1720 RETURN
1730 DATA AF,32,E8,BF,32,E9,BF,C9,F3,FE,03,C2,B1,03,3A,E8
1740 DATA BF,FE,A0,20,04,3E,FF,12,C9,EB,E5,46,78,B7,CA,B1
1750 DATA BE,23,5E,23,56,EB,DD,21,CE,BF,CD,16,BF,FE,40,0E
1760 DATA 01,38,0A,D6,40,08,CD,16,BF,3C,3C,4F,08,D9,08,3A
1770 DATA E9,BF,6F,26,00,29,44,4D,29,29,09,29,29,29,29,3A
1780 DATA E8,BF,CB,3F,4F,08,06,C0,09,22,E6,BF,32,EA,BF,3A
1790 DATA E8,BF,CB,3F,08,2A,E6,BF,3A,EA,BF,5F,0F,0F,0F,E6
1800 DATA 07,CD,B4,BE,7B,E6,07,CD,B4,BE,D3,5F,22,E6,BF,3A
1810 DATA E9,BF,3C,3C,FE,60,20,19,3A,E8,BF,3C,32,E8,BF,2A
1820 DATA E6,BF,01,00,3C,B7,ED,42,E6,01,20,01,23,22,E6,BF
1830 DATA AF,32,E9,BF,D9,0D,28,04,D9,C3,5F,BE,78,B7,C2,2A
1840 DATA BE,E1,77,C9,47,87,80,32,C4,BE,3C,32,C7,BE,3C,32
1850 DATA CA,BE,DD,46,00,DD,4E,00,DD,56,00,08,38,1A,08,CB
1860 DATA 20,CB,20,CB,20,CB,20,CB,21,CB,21,CB,21,CB,21,CB
1870 DATA 22,CB,22,CB,22,CB,22,08,08,D3,5C,7E,B0,77,D3,5D
1880 DATA 7E,B1,77,D3,5E,7E,B2,77,7D,C6,50,30,01,24,6F,D3
1890 DATA 5C,7E,B0,77,D3,5D,7E,B1,77,D3,5E,7E,B2,77,7D,C6
1900 DATA 50,30,01,24,6F,C9,7E,23,FE,20,30,06,10,F8,E1,E1
1910 DATA 77,C9,05,D6,20,FE,80,38,02,D6,20,C9,00,00,00,00
1920 DATA F3,D3,5C,21,00,C0,11,00,40,01,80,3E,ED,B0,21,00
1930 DATA C0,11,50,00,D9,DD,21,EB,BF,21,00,C0,0E,60,06,50
1940 DATA C5,AF,5F,01,5E,03,ED,79,56,CB,22,CB,13,CB,3A,CB
1950 DATA 3A,17,0D,10,F1,08,7B,D9,87,32,72,BF,3C,32,75,BF
1960 DATA DD,46,00,DD,4E,00,78,07,07,07,07,47,79,07,07,07
1970 DATA 07,4F,08,87,32,8D,BF,3C,32,92,BF,DD,7E,00,B0,47
1980 DATA DD,7E,00,B1,4F,D3,5C,70,19,71,ED,52,23,D9,23,C1
1990 DATA 10,AE,D9,19,D9,0D,11,50,00,19,20,A2,D3,5F,FB,C9
2000 DATA F3,3A,C2,E6,F6,02,D3,31,D3,5C,21,00,40,11,00,C0
2010 DATA 01,80,3E,ED,B0,D3,5F,3A,C2,E6,D3,31,FB,C9,00,00
2020 DATA 00,0F,00,00,00,0F,00,0F,0F,00,00,00,0F,0F,00,0F
2030 DATA 00,0F,0F,0F,0F,0F,00,C0,00,00,00,00,00,08,02,0A
2040 DATA 02,0A,05,0E,05,0E,0B,0F,0B,0F,0F,00,00,00,00,00,You morisawa