DEEP!P6! へ戻る

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


PC-6001では滅多に使われることのなかったUSR関数を、今になって無理やり使ってみようと思い立ち、簡易PCGライブラリーっぽいものを作ってみました。

マシン語を使っているとはいえ、速度の面ではかなり厳しいですが、テキスト画面で動いているBASICプログラムであれば、比較的簡単にPCG化できると思います。

文法的には、プチコンのBG系命令を参考にしました。

「誰得?」とかは、考えるだけ野暮というものです。

※USR関数を使わない「EXEC使用版」はこちら

プログラムリスト

MODE2あるいはMODE4、PAGE 2での動作を想定しています。

SCREEN 3 または SCREEN 4 のどちらでも動作します。

10 CLEAR 200,&HD000
20 AD=&HDB00:GOSUB 50000
30 END
50000 REM-------------
50010 REM PCG CONTROL
50020 REM-------------
50030 RESTORE 50100
50040 FOR I=AD TO AD+&H1FF
50050 READ A$:POKE I,VAL("&H"+A$)
50060 NEXT
50070 POKE &HFAEB,AD AND 255:POKE &HFAEC,(AD/256)AND 255
50080 RETURN
50100 DATA E1,CD,41,07,E1,2B,D7,CA,EA,03,FE,49,20,63,23,7E
50110 DATA FE,4E,C2,EA,03,23,7E,FE,49,C2,EA,03,23,7E,FE,54
50120 DATA C2,EA,03,ED,53,FB,FB,D7,20,10,01,00,D8,ED,43,FF
50130 DATA FB,01,00,D0,ED,43,FD,FB,18,1B,FE,2C,C2,EA,03,23
50140 DATA CD,06,0E,ED,53,FD,FB,7E,FE,2C,C2,EA,03,23,CD,06
50150 DATA 0E,ED,53,FF,FB,AF,E5,2A,FD,FB,5D,54,13,77,01,FF
50160 DATA 07,ED,B0,2A,FF,FB,5D,54,13,77,01,FF,02,ED,B0,E1
50170 DATA C9,F5,7A,B7,C2,55,07,ED,53,F9,FB,F1,FE,A0,20,29
50180 DATA 23,E5,2A,FB,FB,0E,18,06,20,C5,E5,2A,EB,FA,01,99
50190 DATA 00,09,D1,E5,EB,5D,54,18,71,C1,23,10,EC,11,E0,00
50200 DATA 19,0D,20,E3,3A,F9,FB,18,BA,FE,AE,28,12,FE,50,20
50210 DATA 75,23,7E,FE,55,C2,EA,03,23,7E,FE,54,C2,EA,03,23
50220 DATA 7E,FE,2C,C2,EA,03,23,CD,06,0E,7A,B7,C2,55,07,7B
50230 DATA FE,20,D2,55,07,7E,FE,2C,C2,EA,03,23,D5,CD,06,0E
50240 DATA 7A,B7,C2,55,07,7B,FE,18,D2,55,07,EB,29,29,29,29
50250 DATA 29,C1,C5,E5,09,ED,4B,FF,FB,09,3A,F9,FB,77,E1,29
50260 DATA 29,29,C1,09,ED,4B,FB,FB,09,EB,E5,ED,4B,FD,FB,2A
50270 DATA F9,FB,29,29,29,09,EB,06,08,1A,77,C5,01,20,00,09
50280 DATA 13,C1,10,F5,E1,C9,FE,86,20,41,23,7E,FE,2C,C2,EA
50290 DATA 03,23,CD,06,0E,7A,B7,C2,55,07,7B,FE,20,D2,55,07
50300 DATA 7E,FE,2C,C2,EA,03,23,D5,CD,06,0E,7A,B7,C2,55,07
50310 DATA 7B,FE,18,D2,55,07,EB,29,29,29,29,29,C1,09,ED,4B
50320 DATA FF,FB,09,7E,EB,E5,CD,2B,0D,E1,C9,FE,53,C2,EA,03
50330 DATA 23,7E,FE,45,C2,EA,03,23,7E,FE,54,C2,EA,03,23,7E
50340 DATA FE,2C,C2,EA,03,23,CD,09,0B,3A,25,FF,B7,CA,EA,03
50350 DATA E5,2A,67,FF,23,23,5E,23,56,EB,06,08,E5,ED,5B,FD
50360 DATA FB,2A,F9,FB,29,29,29,19,EB,E1,7E,D6,30,DA,EA,03
50370 DATA FE,0A,38,17,D6,07,FE,0A,DA,EA,03,FE,10,38,0C,D6
50380 DATA 20,FE,0A,DA,EA,03,FE,10,D2,EA,03,07,07,07,07,4F
50390 DATA 23,7E,D6,30,DA,EA,03,FE,0A,38,17,D6,07,FE,0A,DA
50400 DATA EA,03,FE,10,38,0C,D6,20,FE,0A,DA,EA,03,FE,10,D2
50410 DATA EA,03,81,12,23,13,10,B2,AF,CD,2B,0D,E1,C9,00,00


メモリマップ

デフォルトでのメモリマップは、以下のようになっています。

D000H-D7FFH
キャラクターデータ(256キャラ分) USR()SETで定義されたキャラクターデータが格納される。
D800H-DAFFH
パターンネームテーブル(32x24文字) USR()PUTで画面に描画されたキャラクターの番号が保存される。
USR()READで読めるので、ゲームなどでSCREEN(X,Y)の変わりに使う。
DB00H-DCFFH
プログラム プログラム本体。ここだけをBSAVEしても動作するはず。
FBF9H-FC00H
ワークエリア RS-232C用のバッファをワークエリアとして使用。

・キャラクターデータおよびパターンネームテーブルのアドレスは、USR()INITで変更が可能です。
・プログラムは完全リロケータブルになっているので、どこのアドレスに置いても動作します(たぶん)。20行の 「&HDB00」 を変更してください。


使い方


先程のプログラムを実行すると、USR関数が拡張され、以下の関数が使えるようになります。

  • USR(VRAMアドレス)INIT [ ,キャラクターデータ格納アドレス,パターンネームテーブルアドレス]

  • USR(キャラ番号)SET,"定義文字列"

  • USR(キャラ番号)PUT,X座標,Y座標

  • USR(キャラ番号)CLS

  • USR(0)READ,X座標,Y座標


    サンプルプログラム


    PCGを使ったサンプルです。



    敵に捕まらないようにフルーツを取るだけです。

    PCGライブラリのプログラムとマージするか、ライブラリ組み込み後に実行してください。

    すみません、やっつけで作ったので面白くないです。。。

    70 REM------------------------
    80 REM MAIN
    90 REM------------------------
    100 SCREEN 3,2,2:CONSOLE 0,16,0,0:COLOR 3,1,1:CLS
    110 A=USR(&HE200)INIT
    120 RESTORE 1000
    130 FOR I=0 TO 14
    140 READ A$
    150 A=USR(I)SET,A$
    160 NEXT
    170 A=USR(0)CLS
    180 FOR I=0 TO 31
    190 A=USR(1)PUT,I,1:A=USR(1)PUT,I,23
    200 NEXT
    210 FOR I=1 TO 23
    220 A=USR(1)PUT,0,I:A=USR(1)PUT,31,I
    230 NEXT
    240 X=16:Y=12:EX=1:EY=2:F=0:M=0:S=0:GOSUB 900
    250 FX=RND(1)*30+1:FY=RND(1)*21+2
    260 IF (USR(0)READ,FX,FY)=0 THEN A=USR(1+(M AND 1)*2)PUT,FX,FY
    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 A=USR(F)PUT,X,Y:F=0:PLAY"V13O4C32"
    340 A=USR(0)READ,X+VX,Y+VY
    350 IF A=0 OR A=2 THEN 500
    360 IF A=1 THEN VX=0:VY=0:GOTO 500
    370 S=S+10:GOSUB 900
    380 F=1:PLAY"V13O5C32G32"
    500 X=X+VX:Y=Y+VY
    510 A=USR(2)PUT,X,Y
    600 A=USR(0)PUT,EX,EY
    610 VX=SGN(X-EX):VY=SGN(Y-EY)
    620 IF VX=0 OR VY=0 THEN 650
    630 IF RND(1)*2>1 THEN VX=0:GOTO 650
    640 VY=0
    650 A=USR(0)READ,EX+VX,EY+VY
    660 IF A=1 AND (M AND 1)=0 THEN VX=0:VY=0
    670 EX=EX+VX:EY=EY+VY:PLAY"V13O3C32"
    680 A=USR(4)PUT,EX,EY
    690 IF X=EX AND Y=EY THEN 800
    700 GOTO 250
    800 EXEC&H1058
    810 FOR I=0 TO 30:A=USR(2)PUT,X,Y:A=USR(4)PUT,X,Y:NEXT
    820 IF INKEY$="" THEN 820
    830 GOTO 110
    900 A$="   "+STR$(S)
    910 FOR I=0 TO 4
    920 A=USR(VAL(MID$(A$,LEN(A$)-I,1))+5)PUT,6-I,0
    930 NEXT
    940 RETURN
    1000 DATA AAAAAAAAAAAAAAAA
    1010 DATA DD77DD77DD77DD77
    1020 DATA BE979600820028EB
    1030 DATA 8AA2B2FFFFFFFFBE
    1040 DATA 69557755486996AA
    1050 DATA 56666666666656AA
    1060 DATA 9A5A9A9A9A9A56AA
    1070 DATA 56A6A6566A6A56AA
    1080 DATA 56A6A656A6A656AA
    1090 DATA 66666656A6A6A6AA
    1100 DATA 566A6A56A6A656AA
    1110 DATA 566A6A56666656AA
    1120 DATA 56A6A69A9A9A9AAA
    1130 DATA 56666656666656AA
    1140 DATA 56666656A6A656AA
    
    

    最後に


    「PCGを使っている他機種のBASICプログラムを移植するのに使えそう」とか思った方、すみません。

    たぶん、厳しいと思います。

    BASICからの呼び出しが重いのか、引数をFACに格納するルーチンが重いのか、あるいは私のプログラムが重いのかわかりませんが、

    とにかく重いのです。

    mkIIの PUT@ くらいな感じで考えていただけると良いかと思います。

    やはり、高速なゲームを作るには、メインのプログラム部分もマシン語で書かないとダメみたいです。



























    おまけ


    100 SCREEN 3,2,2:COLOR ,3,1:CLS
    110 A=USR(&HE200)INIT
    120 RESTORE 1000
    130 I=0
    140 READ A$:IF A$="END" THEN 200
    150 A=USR(I)SET,A$
    160 I=I+1
    170 GOTO 140
    200 FOR I=0 TO 15:FOR J=0 TO 18
    210 READ A$:A=VAL("&H"+A$)
    220 A=USR(A)PUT,J+6,I+2
    230 NEXT:NEXT
    300 A=USR(&HE200)INIT
    310 RESTORE 5000
    320 I=0
    330 READ A$:IF A$="END" THEN 400
    340 A=USR(I)SET,A$
    350 I=I+1
    360 GOTO 330
    400 T=0:E=0:M=0
    500 ON E GOTO 520,530,540,550,560,550,540,530,520,510
    510 RESTORE 6100:GOTO 600
    520 RESTORE 6140:GOTO 600
    530 RESTORE 6180:GOTO 600
    540 RESTORE 6220:GOTO 600
    550 RESTORE 6260:GOTO 600
    560 RESTORE 6300
    600 FOR I=0 TO 2:FOR J=0 TO 4
    610 READ A$:A=VAL("&H"+A$)
    620 A=USR(A)PUT,J+12,I+6
    630 NEXT:NEXT
    700 ON M GOTO 720,730,740,730,720,710
    710 RESTORE 6000:GOTO 800
    720 RESTORE 6020:GOTO 800
    730 RESTORE 6040:GOTO 800
    740 RESTORE 6060
    800 FOR I=0 TO 1
    810 READ A$:A=VAL("&H"+A$)
    820 A=USR(A)PUT,15,I+10
    830 NEXT
    900 T=T+1
    910 IF (T AND 15)<11 THEN E=T AND 15
    920 IF (T AND 7)<7 THEN M=T AND 7
    930 GOTO 500
    1000 REM--------
    1010 REM DATA 1
    1020 REM--------
    1030 DATA AAAAAAAAAAAAAAAA
    1040 DATA ABABABABABABAFAF
    1050 DATA FFFFFFFFFFFFFFFF
    1060 DATA EAEAFAFAFAFAFEFE
    1070 DATA AAAAAAA8A1A0809A
    1080 DATA 85045114420AAAAA
    1090 DATA 44400AAAAAAAAAAA
    1100 DATA AFAFAFAFAFAFBFBF
    1110 DATA FFEEFDFDF9B5B5B5
    1120 DATA BFFF7F6F7F7E7E7E
    1130 DATA FEFFFFFFFFFFFFFF
    1140 DATA AAAAAAAAAAAAAAEA
    1150 DATA BFBFFFFFFFFFFFFF
    1160 DATA FFFFFFFFFBFBBBBB
    1170 DATA B5B5B5B5B5B5B5B5
    1180 DATA 7E7E7E7F7F5F5F5F
    1190 DATA FFFFFFFFEFEFEFAF
    1200 DATA FBFFFEFFFFFFFFFF
    1210 DATA FFFFEFFFFFFFFFFF
    1220 DATA FFFFFFFFFFFFFFBF
    1230 DATA EAEAEAEAEAEAEAEA
    1240 DATA AAAAAAAAAAAAA8A1
    1250 DATA A8A1818585918510
    1260 DATA 1655515551555551
    1270 DATA AA68606165415111
    1280 DATA AAAAAAA0A1054515
    1290 DATA AAAAAA2A6A485150
    1300 DATA AAAA820455151551
    1310 DATA ABABABAB2B6E0D4D
    1320 DATA FFFFBFBFBFFFFFFF
    1330 DATA BFBFFFFFFFFFFFFB
    1340 DATA B5B5F5F5F5F57D6D
    1350 DATA 5F5B5F5F5F5E5F57
    1360 DATA BFBFFBFFFABFEFFF
    1370 DATA FFFFFFAFFEFBEFFF
    1380 DATA FFFFFFFFDFDF5F5F
    1390 DATA BFBFBFBFBFAFAFFF
    1400 DATA EAEAEAEAEAEAEAAA
    1410 DATA AAAAAAAAAAAAAAA8
    1420 DATA A1A5A5A585051111
    1430 DATA 4550445145554555
    1440 DATA 5541444451445144
    1450 DATA 1511555114051411
    1460 DATA 4511511455155515
    1470 DATA 5550155015444514
    1480 DATA 5554144411441144
    1490 DATA 1D55164216421206
    1500 DATA FFFFFFFFEFEFFFFF
    1510 DATA FBBBBFBFFEFB7FED
    1520 DATA 7D7D6DB9FFFFFFEB
    1530 DATA 5755555555555555
    1540 DATA FFFE7A7A6A5A5951
    1550 DATA FDB5ADA7A96B61A2
    1560 DATA 5F5E5B5B5F5F5F5E
    1570 DATA A1A1A58184818481
    1580 DATA 4551555555514511
    1590 DATA 0504514154504110
    1600 DATA 4451111040441048
    1610 DATA 1104410040000002
    1620 DATA 4515441144114404
    1630 DATA 4515450144004040
    1640 DATA 4411441144404002
    1650 DATA 020222AAAAAAAAAA
    1660 DATA FFFFEFEFFFFBFEEF
    1670 DATA FFF7D5E5E6DE96D6
    1680 DATA 6AAAAAA69619192A
    1690 DATA 5555555555559595
    1700 DATA 5156565656565555
    1710 DATA A2A8A9A9A9A5A6A5
    1720 DATA 5955555559595A56
    1730 DATA FFFFFFFEFEFEFEFE
    1740 DATA A1A0A0A8AAAAAAAA
    1750 DATA 010401A0A0A8AAAA
    1760 DATA 10480A0A2A2AAAAA
    1770 DATA 0A2AAAAAAAAAAAAA
    1780 DATA 11040180A0AAAAAA
    1790 DATA 104A0A2AAAAAAAAA
    1800 DATA BFBFBFAFAFAFABAA
    1810 DATA FAFFFFFFFFFFFFFF
    1820 DATA D6DDF5F5F5FD6D79
    1830 DATA 6A6A696A5A5A6556
    1840 DATA 9595959555559757
    1850 DATA 5555555555555555
    1860 DATA 5559A55555555555
    1870 DATA 5E5E5D5D5E5F5F5F
    1880 DATA FEFEFFFFFFFFFFFF
    1890 DATA FFBFABAFAFAFAFAF
    1900 DATA 697D7F7F5ADFDFF7
    1910 DATA 555555555555D5D5
    1920 DATA 5757575555555555
    1930 DATA 555555A5B5B55555
    1940 DATA 5F5F5F5F5F5F5F5F
    1950 DATA AAAAAAAAAAAAEAEA
    1960 DATA AAAAAAAAA8A08515
    1970 DATA AAAAAA265554124A
    1980 DATA AAAAAAAAAAAAA8A8
    1990 DATA AAAAA08405451554
    2000 DATA AFAF6F6F2F6F6F7F
    2010 DATA F7FFFEFFFFFFFFFF
    2020 DATA D59595F5F5E5E5ED
    2030 DATA 5559A5555D755555
    2040 DATA 5555555555555756
    2050 DATA 7F6F7FFFBFBFFF7F
    2060 DATA EAEAEAEAC6D4D5F5
    2070 DATA AAAAAAAAAAAA2A2A
    2080 DATA 154401002AAAAAAA
    2090 DATA 2A2AAAAAAAAAAAAA
    2100 DATA A8A0A1A0A1A0A9A8
    2110 DATA 1555155515551511
    2120 DATA 7F7F7FBFBFBFBFBF
    2130 DATA FEFEFEFFFFFFFBFB
    2140 DATA E9ABAAEAEAEAEAEA
    2150 DATA 5555D5B5AFAAAAAA
    2160 DATA 5555555555F5AFAA
    2170 DATA 565E5B7BEBADADBD
    2180 DATA 7F7F7F6F6F6F6F6F
    2190 DATA F5F5F5F5F5F5F5F5
    2200 DATA 4A50405144545154
    2210 DATA 0A52105555555555
    2220 DATA AAAAAA2A2A684154
    2230 DATA AAAAA08185151555
    2240 DATA AAAAAA2801515551
    2250 DATA AAAAAAAAAAA8A8A8
    2260 DATA AAAAAA9211451555
    2270 DATA A8A0A0A081015151
    2280 DATA 4511451111101111
    2290 DATA BFBFBFBFBFBFBFBF
    2300 DATA FBFBFBFBFBFBFBFB
    2310 DATA EAEAEAAAAAAAAAAA
    2320 DATA BABEBFBFBFB7B5B5
    2330 DATA AAAAAAFBFFFFFF5D
    2340 DATA BDF5F5F5D5D55555
    2350 DATA 6F6F6F6F6F5B5B5B
    2360 DATA FDFDFDFCFDAC8E0A
    2370 DATA 5154445111451185
    2380 DATA 1555451511545155
    2390 DATA 5154515111441111
    2400 DATA 1555151511441111
    2410 DATA 5154555455555555
    2420 DATA A8A1A0A1A0A0A080
    2430 DATA 5515551555155515
    2440 DATA 5451545555555555
    2450 DATA 5151545154515455
    2460 DATA BFBFBFBFBF7F7F3F
    2470 DATA FBEFEFEFEEEEEEEA
    2480 DATA AAABABABABABABAD
    2490 DATA 959595D5D5555555
    2500 DATA 5655555555555555
    2510 DATA FF7F555556545850
    2520 DATA 0A0AA8AA22228280
    2530 DATA A1A1A1A928290008
    2540 DATA 5455555555555595
    2550 DATA 4515551555114411
    2560 DATA 4451545154515411
    2570 DATA 5414441145155555
    2580 DATA AAA8A8A928014111
    2590 DATA 1015545555555555
    2600 DATA 4515150510454451
    2610 DATA 5555555550154015
    2620 DATA 5455545451564A18
    2630 DATA 7F2F6A88A0800080
    2640 DATA EAAA820000000000
    2650 DATA F555555595250509
    2660 DATA 55555557575D5555
    2670 DATA 5555555658506080
    2680 DATA 6040800000000000
    2690 DATA 80A0202020002080
    2700 DATA 0002020000000000
    2710 DATA 0524210504848889
    2720 DATA 1141041040405000
    2730 DATA 1411444444041104
    2740 DATA 5555154551441140
    2750 DATA 4111515154545554
    2760 DATA 5554551144441555
    2770 DATA 5451541451444451
    2780 DATA 4111444415545555
    2790 DATA 2A2A6A6A2A5A5A58
    2800 DATA 20882288A2A8AAA8
    2810 DATA 0000000000800080
    2820 DATA 0200000000080000
    2830 DATA 55A5090202022200
    2840 DATA 55555555A6A80000
    2850 DATA 5658608000000000
    2860 DATA 0000000002080020
    2870 DATA 0000000202020200
    2880 DATA 8080008000000000
    2890 DATA 0000000000000000
    2900 DATA 8801000222200000
    2910 DATA 50004000022AAAAA
    2920 DATA 010000A0AAAAAAAA
    2930 DATA 00020AAAAAAAAAAA
    2940 DATA 5554155414041101
    2950 DATA 1555155551111111
    2960 DATA 5154515451545111
    2970 DATA 5515551515411510
    2980 DATA 5A68606860686068
    2990 DATA 2A8A220A02080200
    3000 DATA 2080A088A2A82A8A
    3010 DATA 0000000000802088
    3020 DATA 0000000000000288
    3030 DATA 0000020820800000
    3040 DATA A080020008082020
    3050 DATA 0A08000820282008
    3060 DATA 0000000202000200
    3070 DATA 0000A0A000880A08
    3080 DATA 0000202000808000
    3090 DATA AAAA2A2A2A2A2A0A
    3100 DATA 0001040104000000
    3110 DATA 4411441144444411
    3120 DATA 4410441040404000
    3130 DATA 1144061206060602
    3140 DATA A088A288A2A8228A
    3150 DATA 0000008020802088
    3160 DATA 2208020000000000
    3170 DATA A2A8AAA822080200
    3180 DATA 02AAA280A2A82A88
    3190 DATA A08000000088AA88
    3200 DATA 00020A2820800000
    3210 DATA 8080000002020A08
    3220 DATA A088A08020802080
    3230 DATA 0200020000000000
    3240 DATA 080820A820A820A8
    3250 DATA 0A0A0A0202020202
    3260 DATA END
    4000 REM-----------
    4010 REM PATTERN 1
    4020 REM-----------
    4030 DATA 00,00,00,00,01,02,02,02,02,02,02,02,03,00,04,05,06,00,00
    4040 DATA 00,00,00,00,07,02,02,08,09,02,02,02,0A,0B,00,00,00,00,00
    4050 DATA 00,00,00,00,0C,02,0D,0E,0F,10,11,12,13,14,00,15,16,17,18
    4060 DATA 19,1A,1B,1C,1D,02,1E,1F,20,21,22,23,24,25,26,27,28,29,2A
    4070 DATA 2B,2C,2D,2E,02,2F,30,31,32,33,34,35,02,00,36,37,38,39,3A
    4080 DATA 3B,3C,3D,3E,13,3F,40,41,42,43,44,45,46,00,47,48,49,4A,00
    4090 DATA 4B,4C,00,00,4D,4E,4F,50,51,52,53,54,55,00,00,00,00,00,00
    4100 DATA 00,00,00,00,00,56,57,58,59,5A,52,5B,02,5C,00,00,00,00,00
    4110 DATA 5D,5E,00,5F,60,61,62,63,52,64,65,66,02,67,68,00,00,00,00
    4120 DATA 69,6A,00,6B,6C,6D,6E,6F,70,71,72,73,02,74,75,76,77,78,79
    4130 DATA 00,7A,7B,7C,7D,7E,7F,80,81,82,83,84,02,85,86,87,88,89,8A
    4140 DATA 00,8B,8C,8D,8E,8F,90,91,92,52,52,93,94,95,96,97,98,99,9A
    4150 DATA 9B,9C,9D,9E,9F,A0,A1,A2,A3,52,52,A4,A5,A6,A7,A8,A9,AA,AB
    4160 DATA AC,AD,AE,AF,B0,B1,B2,B3,B4,B5,B6,B7,B8,B9,BA,BB,BC,BD,BE
    4170 DATA BF,C0,C1,C2,C3,C4,C5,C6,BA,C7,C8,C9,CA,CB,CC,CD,CE,00,00
    4180 DATA CF,D0,D1,D2,D3,D4,D5,D6,D7,D8,D9,DA,DB,DC,DD,BA,DE,00,00
    5000 REM--------
    5010 REM DATA 2
    5020 REM--------
    5030 DATA AAAAAAAAAAAAAAAA
    5040 DATA 5559A5555D755555
    5050 DATA 5555555555F5AFAA
    5060 DATA 59811965555D7555
    5070 DATA 598215955965555D
    5080 DATA 7555555555F5AFAA
    5090 DATA 5995555D75555555
    5100 DATA FBBBBFBFFEFB7FED
    5110 DATA 7D7D6DB9FFFFFFEB
    5120 DATA 5755555555555555
    5130 DATA FFFE7A7A6A5A5951
    5140 DATA FDB5ADA7A96B61A2
    5150 DATA FFF7D5E5E6DE96D6
    5160 DATA 6AAAAAA69619192A
    5170 DATA 5555555555559595
    5180 DATA 5156565656565555
    5190 DATA A2A8A9A9A9A5A6A5
    5200 DATA D6DDF5F5F5FD6D79
    5210 DATA 6A6A696A5A5A6556
    5220 DATA 9595959555559757
    5230 DATA 5555555555555555
    5240 DATA 5559A55555555555
    5250 DATA 7D7DADF9FFFFFFFF
    5260 DATA FFFF7E7A7A6A5851
    5270 DATA F5DD95ADAB296BA2
    5280 DATA FDF7D7E5E5D79DD7
    5290 DATA FB6AAAA2A68999AA
    5300 DATA D5D7F5F5F5FD6D79
    5310 DATA 2A2A296A5A5A6556
    5320 DATA 7D7DADF9FFFFEFBF
    5330 DATA FAFF7E7A5A7A5859
    5340 DATA A7D5A5ADAB296AA2
    5350 DATA FDF6D7E5E9D695D7
    5360 DATA FBEA6AAAA68999AA
    5370 DATA 5952565656565555
    5380 DATA A2A8A9A9A9A6A5A5
    5390 DATA D6DEF5F5F5FD6D79
    5400 DATA 2A6A696A5A9A5559
    5410 DATA 9595959555555757
    5420 DATA 5655555555555555
    5430 DATA 59A5555555555555
    5440 DATA FBBBBFBFFEFF7EEF
    5450 DATA 7D7D7D79EBBFFEFF
    5460 DATA FFFF7F7F5D555656
    5470 DATA F5D5D5F57D55A5AB
    5480 DATA F9FDE5E5E5D795D5
    5490 DATA 7FFFF5D55A6AAAAA
    5500 DATA 5555555555D55595
    5510 DATA 5A5A5A5A5A565555
    5520 DATA AAAAAAAAA9A5A5A5
    5530 DATA D5D6F5F7F5FD6D79
    5540 DATA AAAAA9AA1A5A5555
    5550 DATA 9595155555555757
    5560 DATA FFFF7F7F5D555555
    5570 DATA F5D5D5F57D5555A5
    5580 DATA 7FFFF5D5555A6AAA
    5590 DATA 565A5A5A52565555
    5600 DATA ABAAAAA8A9A5A555
    5610 DATA D5D6FEF6F5FD6D79
    5620 DATA AAAA296A9A555555
    5630 DATA 9595555555555757
    5640 DATA 7FFFF5D555555A6A
    5650 DATA 5555555555555595
    5660 DATA 5656565A56555555
    5670 DATA AAAAA9A555555555
    5680 DATA D5D5F5F6F5FD6D79
    5690 DATA AAAAA9A595555555
    5700 DATA 5555555555555757
    5710 DATA END
    6000 REM PATTERN 2-B1
    6010 DATA 01,02
    6020 REM PATTERN 2-B2
    6030 DATA 03,02
    6040 REM PATTERN 2-B3
    6050 DATA 04,05
    6060 REM PATTERN 2-B4
    6070 DATA 06,02
    6100 REM PATTERN 2-A1
    6110 DATA 07,08,09,0A,0B
    6120 DATA 0C,0D,0E,0F,10
    6130 DATA 11,12,13,14,15
    6140 REM PATTERN 2-A2
    6150 DATA 07,16,09,17,18
    6160 DATA 19,1A,0E,0F,10
    6170 DATA 1B,1C,13,14,15
    6180 REM PATTERN 2-A3
    6190 DATA 07,1D,09,1E,1F
    6200 DATA 20,21,0E,22,23
    6210 DATA 24,25,26,27,28
    6220 REM PATTERN 2-A4
    6230 DATA 29,2A,09,2B,2C
    6240 DATA 2D,2E,2F,30,31
    6250 DATA 32,33,34,14,14
    6260 REM PATTERN 2-A5
    6270 DATA 29,2A,09,35,36
    6280 DATA 2D,37,2F,38,39
    6290 DATA 3A,3B,3C,14,14
    6300 REM PATTERN 2-A6
    6310 DATA 29,2A,09,35,36
    6320 DATA 2D,3D,3E,3F,40
    6330 DATA 41,42,43,14,14