USR使用版へ戻る / DEEP!P6! へ戻る

PC-6001(32K)用PCGライブラリー (EXEC版)


PCGライブラリーの、USR関数を使わないバージョンです。

処理速度的には全く速くなりませんでした。むしろ、BASICから呼ぶと遅い気がします。


プログラムリスト



10 CLEAR 200,&HD000

20 GOSUB 50000

30 END

50000 REM-------------

50010 REM PCG CONTROL

50020 REM-------------

50030 RESTORE 50100

50040 FOR I=&HDB00 TO AD+&HDC2F

50050 READ A$:POKE I,VAL("&H"+A$)

50060 NEXT

50070 RETURN

50100 DATA 21,00,00,22,00,FC,22,02,FC,22,04,FC,21,00,D0,22

50110 DATA 08,FC,21,00,D8,22,0A,FC,21,00,E2,22,06,FC,AF,2A

50120 DATA 08,FC,5D,54,13,77,01,FF,07,ED,B0,2A,0A,FC,5D,54

50130 DATA 13,77,01,FF,02,ED,B0,C9,0E,18,79,3D,32,04,FC,06

50140 DATA 20,78,3D,32,02,FC,C5,CD,51,DB,C1,10,F4,0D,20,EA

50150 DATA C9,2A,04,FC,29,29,29,29,29,E5,ED,4B,02,FC,09,ED

50160 DATA 4B,0A,FC,09,3A,00,FC,77,E1,29,29,29,ED,4B,02,FC

50170 DATA 09,ED,4B,06,FC,09,EB,ED,4B,08,FC,2A,00,FC,29,29

50180 DATA 29,09,EB,06,08,1A,77,C5,01,20,00,09,13,C1,10,F5

50190 DATA C9,E1,5E,23,56,EB,18,09,1E,06,C3,01,04,2A,5C,FF

50200 DATA 23,7C,B5,28,F3,E5,23,23,23,23,7E,FE,83,20,E2,23

50210 DATA CD,06,0E,7A,B7,C2,55,07,EB,29,29,29,ED,4B,08,FC

50220 DATA 09,EB,7E,FE,2C,C2,EA,03,23,06,08,7E,D6,30,DA,EA

50230 DATA 03,FE,0A,38,17,D6,07,FE,0A,DA,EA,03,FE,10,38,0C

50240 DATA D6,20,FE,0A,DA,EA,03,FE,10,D2,EA,03,07,07,07,07

50250 DATA 4F,23,7E,D6,30,DA,EA,03,FE,0A,38,17,D6,07,FE,0A

50260 DATA DA,EA,03,FE,10,38,0C,D6,20,FE,0A,DA,EA,03,FE,10

50270 DATA D2,EA,03,81,12,23,13,10,B2,E1,5E,23,56,EB,2B,22

50280 DATA 5C,FF,C9,00,00,00,00,00,00,00,00,00,00,00,00,00




使い方


  • EXEC &HDB00 イニシャライズ
  • EXEC &HDB9D …キャラクターデータセット
  • EXEC &HDB51 …キャラクター表示
  • EXEC &HDB38 …画面クリア
  • PEEK(&HD800+X+Y*32) …キャラクター番号取得


    サンプルプログラム


    PCGを使ったサンプルの EXEC使用版です。

    ライブラリー起動後、あるいはライブラリーのソースとマージしてから実行してください。

    
    
    
    50 BINIT=&HDB00
    
    51 BFILL=&HDB38
    
    52 BSET =&HDB9D
    
    53 BPUT =&HDB51
    
    54 BCHR =&HFC00
    
    55 BX   =&HFC02
    
    56 BY   =&HFC04
    
    57 PNT  =&HD800
    
    70 REM------------------------
    
    80 REM MAIN
    
    90 REM------------------------
    
    100 SCREEN 3,2,2:CONSOLE 0,16,0,0:COLOR 3,1,1:CLS
    
    110 EXEC BINIT
    
    120 RESTORE 1000
    
    130 FOR I=0 TO 14
    
    140 EXEC BSET
    
    150 NEXT
    
    160 POKE BCHR,0:EXEC BFILL:POKE BCHR,1
    
    170 FOR I=0 TO 31:POKE BX,I
    
    180 POKE BY,1:EXEC BPUT:POKE BY,23:EXEC BPUT
    
    190 NEXT
    
    200 FOR I=2 TO 22:POKE BY,I
    
    210 POKE BX,0:EXEC BPUT:POKE BX,31:EXEC BPUT
    
    220 NEXT
    
    230 X=16:Y=12:EX=1:EY=2:F=0:M=0:S=0:GOSUB 900
    
    240 FX=RND(1)*30+1:FY=RND(1)*21+2
    
    250 IF PEEK(PNT+FX+FY*32)<>0 THEN 300
    
    260 POKE BX,FX:POKE BY,FY
    
    270 POKE BCHR,(1+(M AND 1)*2):EXEC BPUT
    
    300 T=STICK(0):M=M+1
    
    310 VX=(T=7)-(T=3):VY=(T=1)-(T=5)
    
    320 IF VX<>0 OR VY<>0 THEN GOSUB 960
    
    330 A=PEEK(PNT+(X+VX)+(Y+VY)*32)
    
    340 IF A=0 OR A=2 THEN 500
    
    350 IF A=1 THEN VX=0:VY=0:GOTO 500
    
    360 S=S+10:GOSUB 900
    
    370 F=1:PLAY"V13O5C32G32"
    
    500 X=X+VX:Y=Y+VY
    
    510 POKE BX,X:POKE BY,Y
    
    520 POKE BCHR,2:EXEC BPUT
    
    600 POKE BX,EX:POKE BY,EY
    
    610 POKE BCHR,0:EXEC BPUT
    
    620 VX=SGN(X-EX):VY=SGN(Y-EY)
    
    630 IF VX=0 OR VY=0 THEN 660
    
    640 IF RND(1)*2>1 THEN VX=0:GOTO 660
    
    650 VY=0
    
    660 A=PEEK(PNT+(EX+VX)+(EY+VY)*32)
    
    670 IF A=1 AND (M AND 1)=0 THEN VX=0:VY=0
    
    680 EX=EX+VX:EY=EY+VY:PLAY"V13O3C32"
    
    690 POKE BX,EX:POKE BY,EY
    
    700 POKE BCHR,4:EXEC BPUT
    
    710 IF X=EX AND Y=EY THEN 800
    
    720 GOTO 240
    
    800 EXEC&H1058
    
    810 POKE BX,X:POKE BY,Y
    
    820 FOR I=0 TO 30
    
    830 POKE BCHR,2:EXEC BPUT
    
    840 POKE BCHR,4:EXEC BPUT
    
    850 NEXT
    
    860 IF INKEY$="" THEN 860
    
    870 GOTO 160
    
    900 A$="   "+STR$(S)
    
    910 FOR I=0 TO 4
    
    920 POKE BX,6-I:POKE BY,0
    
    930 POKE BCHR,(VAL(MID$(A$,LEN(A$)-I,1))+5):EXEC BPUT
    
    940 NEXT
    
    950 RETURN
    
    960 POKE BX,X:POKE BY,Y
    
    970 POKE BCHR,F:EXEC BPUT
    
    980 F=0:PLAY"V13O4C32"
    
    990 RETURN
    
    1000 DATA 0,AAAAAAAAAAAAAAAA
    
    1010 DATA 1,DD77DD77DD77DD77
    
    1020 DATA 2,BE979600820028EB
    
    1030 DATA 3,8AA2B2FFFFFFFFBE
    
    1040 DATA 4,69557755486996AA
    
    1050 DATA 5,56666666666656AA
    
    1060 DATA 6,9A5A9A9A9A9A56AA
    
    1070 DATA 7,56A6A6566A6A56AA
    
    1080 DATA 8,56A6A656A6A656AA
    
    1090 DATA 9,66666656A6A6A6AA
    
    1100 DATA 10,566A6A56A6A656AA
    
    1110 DATA 11,566A6A56666656AA
    
    1120 DATA 12,56A6A69A9A9A9AAA
    
    1130 DATA 13,56666656666656AA
    
    1140 DATA 14,56666656A6A656AA