cp4


The cp4 is a raster line based Commodore Plus/4 emulator. It's nearly CPU clock exact, it has I/O support, it emulates the 1551 disk drive in a pin-compatible manner, and it's able to handle the installed printers as a MPS printer, and able to use an external real 1551 disk drive, it's equipped with full keyboard and joystick emulation. The program is able to create diverse statistical data with a conditional recompiling.

download


 

Screenshots:

Start screen
The icon of the cp4 (created by Csaba Kemeri)

Directory of a D64 image-file
Start screen with a DIRECTORY command

Prefs window
Preferences window

Debug/Monitor window
Internal monitor and debugger

Some games:

David's Midnight Magic
David's Midnight Magic

Icicle Works
Icicle Works

Pinpoint
Pinpoint

Total Eclipse
Total Eclipse

Genetic
Genetic

BlockOut 3D
BlockOut 3D

Zylon
Zylon

Dizzy Dice 3
Dizzy Dice III

Robin of Sherwood
Robin of Sherwood

Terror News
Terror News



Source:

Note

GNU General Public Licence
Need to compile


Files for compiling

Makefile
createpublic.c (Public version generator)
ver.c (Version control)
assp4.c (7501 macro assembler)
save1541rom.c (for saving the 1541 drive ROM to a file)
MakeROM.c (Legal ROM generator)


Main sources

licence.h (GNU General Public Licence)
common.h (common include file)
macros.h (common include file)
cp4.c (main source)
cp4.h
ted.c (TED chip handler)
ted.h
7501.asm (7501 CPU emulator in 68k assembly)
cp4_cpu.h
cp4_defs.h
cp4_loc.c (Localize module)
cp4_loc.h
cp4_locstrs.c (strings in english - default language)
cp4_mac.h
cp4_rom.c
cp4_rom.h
cp4_ver.c (version file)
cp4_ver.h
prefs.c (prefs loading and saving)
prefs.h
samples.c (for TED sounds)
scans.asm (length of the scanlines in CPU cycle)
shadow.i (variable cache implementation)
snapshot.h (data for the snapshot creating)
stat.h (Statisztics support)
stat.i
szamok.h (pictures of numbers for the speed meter)


Graphics modules (68k assembly)

dogfx.i
dogfx_error.asm
dogfx_exttxt.asm
dogfx_mltgrf.asm
dogfx_mlttxt.asm
dogfx_none.asm
dogfx_nrmgrf.asm
dogfx_nrmtxt.asm
dogfx_offscr.asm
grftabs.c


IEC bus handler modules

iec_dispatcher.c (IEC command dispatcher)
iec_dispatcher.h
pin_iec.c (Serial IEC handling - only for the printer yet)
pin_piec.c (parallel IEC bus handler [for 1551])
soft_iec.c (D64 support - disk image handler)
soft_iec.h
soft_printer.c (printer support)
soft_printer.h
iectrace.c (IEC bus handling - special debug module)


GUI modules

p4req.c (common requester module)
p4req.h

preferences.c (Preferences window)
preferences.h
preferencesgui.c
prefsc2p.c
prefsc2p.h

dbg.c (internal debugger and monitor)
dbg.h
debug.c
debug.h
debug_ext.h (Debugger interface)
modetxt.c

keymapedit.c (keymap editor)
keymap.h
keymapedit.h
keymapeditgui.c


External video drivers

c2p_module.c (external video driver interface - EVDI)
c2p_module.h
c2p_module.i

c2p.asm
c2pi.asm
c2p_card.c
c2p_carddelta.c
c2p_carddeltaasm.asm
c2p_card_palette.c
c2p_color_priority.c
c2p_ehb.c (Extra Halfbrite Mode driver)
c2p_ehbasm.asm
c2p_grey16.c (16 greyscale driver)
c2p_grey16asm.asm
c2p_interlace.c (for very slow machines)
c2p_mono.c
c2p_monoasm.asm
c2p_ocs.c
c2p_ocsasm.asm
c2p_ocs_palette.c
c2p_palette.c
c2p_perdevpernull.c (for benchmarking only)
c2p_windowamiga.c (window driver for AGA chipset)
c2p_windowamigaasm.asm
c2p_windowamiga_palette.c
c2p_windowcard.c
c2p_windowcarddelta.c
c2p_windowcard_palette.c
c2p_windowmono.c
c2p_windowmonoasm.asm
c2p_windowscale.c
c2p_windowscale_palette.c
c2p_zavacki.c
c2p_zavacki_palette.c


Special version for MMU supported memory handling (only in the version 0.68)

mmu.c
mmu.h
mmuhandle.asm



Example statistics:
After playing for an hour:

Executed system clock: 563639491
Average instruction clock: 3.1%
Emulated 11807 frame.


OpCode Statistic
00 .BRK.IMP............-..........-.-%
01 .ORA.(ZP,X).........4..........0.0%
02 !CRA.NONE..........14..........0.0%
03 !SLO.(ZP,X).........-..........-.-%
04 !NO2.IMP............-..........-.-%
05 .ORA.ZP........134852..........0.0%
06 .ASL.ZP........320414..........0.1%
07 !SLO.ZP.............-..........-.-%
08 .PHP.IMP........91484..........0.0%
09 .ORA.#BYTE.....190297..........0.1%
0A .ASL.ACC.......243003..........0.1%
0B !ANC.#BYTE..........2..........0.0%
0C !NO3.IMP............-..........-.-%
0D .ORA.ABS.....10567709..........5.9%
0E .ASL.ABS.........9327..........0.0%
0F !SLO.ABS............-..........-.-%
10 .BPL.REL......4799492..........2.7%
11 .ORA.(ZP),Y......7658..........0.0%
12 !CRA.NONE...........-..........-.-%
13 !SLO.(ZP),Y.........-..........-.-%
14 !NO2.IMP............-..........-.-%
15 .ORA.ZP,X...........-..........-.-%
16 .ASL.ZP,X.......26930..........0.0%
17 !SLO.ZP,X...........-..........-.-%
18 .CLC.IMP......1815699..........1.0%
19 .ORA.ABS,Y......30573..........0.0%
1A !NOP.IMP.........1441..........0.0%
1B !SLO.ABS,Y..........2..........0.0%
1C !NO3.IMP............-..........-.-%
1D .ORA.ABS,X.....125654..........0.0%
1E .ASL.ABS,X..........-..........-.-%
1F !SLO.ABS,X..........4..........0.0%
20 .JSR.ABS......3166083..........1.7%
21 .AND.(ZP,X).....46452..........0.0%
22 !CRA.NONE...........-..........-.-%
23 !RLA.(ZP,X).........-..........-.-%
24 .BIT.ZP........210190..........0.1%
25 .AND.ZP.........77822..........0.0%
26 .ROL.ZP.......1510853..........0.8%
27 !RLA.ZP.............-..........-.-%
28 .PLP.IMP........91477..........0.0%
29 .AND.#BYTE....1155196..........0.6%
2A .ROL.IMP.......319278..........0.1%
2B !ANC.#BYTE..........-..........-.-%
2C .BIT.ABS......4142441..........2.3%
2D .AND.ABS........28624..........0.0%
2E .ROL.ABS............-..........-.-%
2F !RLA.ABS............-..........-.-%
30 .BMI.REL.......353698..........0.1%
31 .AND.(ZP),Y.......529..........0.0%
32 !CRA.NONE...........-..........-.-%
33 !RLA.(ZP),Y.........-..........-.-%
34 !NO2.IMP..........256..........0.0%
35 .AND.ZP,X........4270..........0.0%
36 .ROL.ZP,X...........-..........-.-%
37 !RLA.ZP,X...........-..........-.-%
38 .SEC.IMP.......528955..........0.2%
39 .AND.ABS,Y......49401..........0.0%
3A !NOP.IMP.........1370..........0.0%
3B !RLA.ABS,Y..........4..........0.0%
3C !NO3.IMP..........539..........0.0%
3D .AND.ABS,X......30471..........0.0%
3E .ROL.ABS,X..........-..........-.-%
3F !RLA.ABS,X..........1..........0.0%
40 .RTI.IMP........50536..........0.0%
41 .EOR.(ZP,X).........-..........-.-%
42 !CRA.NONE...........-..........-.-%
43 !SRE.(ZP,X).........-..........-.-%
44 !NO2.IMP............-..........-.-%
45 .EOR.ZP.........57904..........0.0%
46 .LSR.ZP........435634..........0.2%
47 !SRE.ZP.............-..........-.-%
48 .PHA.IMP.......659124..........0.3%
49 .EOR.#BYTE.....304855..........0.1%
4A .LSR.ACC.......564320..........0.3%
4B !ASR.#BYTE..........1..........0.0%
4C .JMP.ABS......2280458..........1.2%
4D .EOR.ABS........74555..........0.0%
4E .LSR.ABS........31947..........0.0%
4F !SRE.ABS............-..........-.-%
50 .BVC.REL........40964..........0.0%
51 .EOR.(ZP),Y.....65590..........0.0%
52 !CRA.NONE...........-..........-.-%
53 !SRE.(ZP),Y.........-..........-.-%
54 !NO2.IMP............-..........-.-%
55 .EOR.ZP,X...........-..........-.-%
56 .LSR.ZP,X........4116..........0.0%
57 !SRE.ZP,X...........-..........-.-%
58 .CLI.IMP.......851056..........0.4%
59 .EOR.ABS,Y.......3754..........0.0%
5A !NOP.IMP..........314..........0.0%
5B !SRE.ABS,Y..........1..........0.0%
5C !NO3.IMP............-..........-.-%
5D .EOR.ABS,X.......1232..........0.0%
5E .LSR.ABS,X..........-..........-.-%
5F !SRE.ABS,X..........-..........-.-%
60 .RTS.IMP......3193368..........1.7%
61 .ADC.(ZP,X).........-..........-.-%
62 !CRA.NONE...........-..........-.-%
63 !RRA.(ZP,X).........-..........-.-%
64 !NO2.IMP............-..........-.-%
65 .ADC.ZP........666168..........0.3%
66 .ROR.ZP.......1572456..........0.8%
67 !RRA.ZP.............-..........-.-%
68 .PLA.ACC.......606498..........0.3%
69 .ADC.#BYTE.....636418..........0.3%
6A .ROR.ACC.......132615..........0.0%
6B !ARR.#BYTE..........-..........-.-%
6C .JMP.(ABS).....276295..........0.1%
6D .ADC.ABS........16263..........0.0%
6E .ROR.ABS..........721..........0.0%
6F !RRA.ABS............-..........-.-%
70 .BVS.REL..........545..........0.0%
71 .ADC.(ZP),Y.......402..........0.0%
72 !CRA.NONE...........-..........-.-%
73 !RRA.(ZP),Y.....30739..........0.0%
74 !NO2.IMP............-..........-.-%
75 .ADC.ZP,X.........624..........0.0%
76 .ROR.ZP,X......155857..........0.0%
77 !RRA.ZP,X...........-..........-.-%
78 .SEI.IMP.......836152..........0.4%
79 .ADC.ABS,Y.....146565..........0.0%
7A !NOP.IMP..........455..........0.0%
7B !RRA.ABS,Y..........1..........0.0%
7C !NO3.IMP............-..........-.-%
7D .ADC.ABS,X......24292..........0.0%
7E .ROR.ABS,X..........-..........-.-%
7F !RRA.ABS,X..........1..........0.0%
80 !NO2.IMP............-..........-.-%
81 .STA.(ZP,X).....30326..........0.0%
82 !NO2.IMP..........256..........0.0%
83 !SAX.(ZP,X).........-..........-.-%
84 .STY.ZP........355558..........0.2%
85 .STA.ZP.......4052953..........2.2%
86 .STX.ZP........371429..........0.2%
87 !SAX.ZP.............-..........-.-%
88 .DEY.IMP......6389537..........3.6%
89 !NO2.IMP............-..........-.-%
8A .TXA.IMP.......255994..........0.1%
8B !ANE.#BYTE..........-..........-.-%
8C .STY.ABS.......129842..........0.0%
8D .STA.ABS......3236411..........1.8%
8E .STX.ABS.......108026..........0.0%
8F !SAX.ABS.........1168..........0.0%
90 .BCC.REL......1793770..........1.0%
91 .STA.(ZP),Y...1938462..........1.0%
92 !CRA.NONE...........-..........-.-%
93 !SHA.(ZP),Y.........-..........-.-%
94 .STY.ZP,X.......85807..........0.0%
95 .STA.ZP,X......119018..........0.0%
96 .STX.ZP,Y...........-..........-.-%
97 !SAX.ZP,Y...........-..........-.-%
98 .TYA.IMP.......390917..........0.2%
99 .STA.ABS,Y.....452786..........0.2%
9A .TXS.IMP..........111..........0.0%
9B !SHS.ABS,Y..........-..........-.-%
9C !SHY.ABS,X..........3..........0.0%
9D .STA.ABS,X....2970340..........1.6%
9E !SHX.ABS,Y..........-..........-.-%
9F !SHA.ABS,Y..........2..........0.0%
A0 .LDY.#BYTE.....902998..........0.5%
A1 .LDA.(ZP,X).....34126..........0.0%
A2 .LDX.#BYTE.....618849..........0.3%
A3 !LAX.(ZP,X).........2..........0.0%
A4 .LDY.ZP........552709..........0.3%
A5 .LDA.ZP......16706578..........9.4%
A6 .LDX.ZP........493474..........0.2%
A7 !LAX.ZP.............5..........0.0%
A8 .TAY.IMP.......454258..........0.2%
A9 .LDA.#BYTE....1457983..........0.8%
AA .TAX.IMP.......688374..........0.3%
AB !LXA.#BYTE..........-..........-.-%
AC .LDY.ABS........92071..........0.0%
AD .LDA.ABS......1971582..........1.1%
AE .LDX.ABS.......141312..........0.0%
AF !LAX.ABS...........14..........0.0%
B0 .BCS.REL......1709654..........0.9%
B1 .LDA.(ZP),Y...2446580..........1.3%
B2 !CRA.NONE...........-..........-.-%
B3 !LAX.(ZP),Y.........-..........-.-%
B4 .LDY.ZP,X.......43230..........0.0%
B5 .LDA.ZP,X......143223..........0.0%
B6 .LDX.ZP,Y.........431..........0.0%
B7 !LAX.ZP,Y...........-..........-.-%
B8 .CLV.IMP............-..........-.-%
B9 .LDA.ABS,Y....2904444..........1.6%
BA .TSX.IMP........59935..........0.0%
BB !LAS.ABS,Y..........-..........-.-%
BC .LDY.ABS,X.....227864..........0.1%
BD .LDA.ABS,X....3097037..........1.7%
BE .LDX.ABS,Y.......3775..........0.0%
BF !LAX.ABS,Y.......3499..........0.0%
C0 .CPY.#BYTE.....406806..........0.2%
C1 .CMP.(ZP,X).........-..........-.-%
C2 !NO2.IMP..........256..........0.0%
C3 !DCP.(ZP,X).........-..........-.-%
C4 .CPY.ZP.........79598..........0.0%
C5 .CMP.ZP........758906..........0.4%
C6 .DEC.ZP........518182..........0.2%
C7 !DCP.ZP.............-..........-.-%
C8 .INY.IMP......5887671..........3.3%
C9 .CMP.#BYTE....2504495..........1.4%
CA .DEX.IMP......1464767..........0.8%
CB !SBX.#BYTE..........-..........-.-%
CC .CPY.ABS.......963239..........0.5%
CD .CMP.ABS.......145494..........0.0%
CE .DEC.ABS.......132223..........0.0%
CF !DCP.ABS.........1290..........0.0%
D0 .BNE.REL.....31338199.........17.6%
D1 .CMP.(ZP),Y......8712..........0.0%
D2 !CRA.NONE...........-..........-.-%
D3 !DCP.(ZP),Y.........-..........-.-%
D4 !NO2.IMP............-..........-.-%
D5 .CMP.ZP,X.........297..........0.0%
D6 .DEC.ZP,X...........-..........-.-%
D7 !DCP.ZP,X...........-..........-.-%
D8 .CLD.IMP.........4422..........0.0%
D9 .CMP.ABS,Y.......4549..........0.0%
DA !NOP.IMP...........91..........0.0%
DB !DCP.ABS,Y..........-..........-.-%
DC !NO3.IMP............1..........0.0%
DD .CMP.ABS,X.....529450..........0.2%
DE .DEC.ABS,X......78931..........0.0%
DF !DCP.ABS,X.......2817..........0.0%
E0 .CPX.#BYTE....1262872..........0.7%
E1 .SBC.(ZP,X).........-..........-.-%
E2 !NO2.IMP............-..........-.-%
E3 !ISB.(ZP,X).........-..........-.-%
E4 .CPX.ZP........296026..........0.1%
E5 .SBC.ZP........878878..........0.4%
E6 .INC.ZP.......1195918..........0.6%
E7 !ISB.ZP...........120..........0.0%
E8 .INX.IMP.....12611549..........7.1%
E9 .SBC.#BYTE.....327405..........0.1%
EA .NOP.IMP.......297775..........0.1%
EB !SBC.#BYTE..........-..........-.-%
EC .CPX.ABS........52778..........0.0%
ED .SBC.ABS........49851..........0.0%
EE .INC.ABS........59313..........0.0%
EF !ISB.ABS...........58..........0.0%
F0 .BEQ.REL.....14289723..........8.0%
F1 .SBC.(ZP),Y......8202..........0.0%
F2 !CRA.NONE...........-..........-.-%
F3 !ISB.(ZP),Y.........-..........-.-%
F4 !NO2.IMP...........64..........0.0%
F5 .SBC.ZP,X........1298..........0.0%
F6 .INC.ZP,X.........679..........0.0%
F7 !ISB.ZP,X...........-..........-.-%
F8 .SED.IMP............-..........-.-%
F9 .SBC.ABS,Y........756..........0.0%
FA !NOP.IMP...........25..........0.0%
FB !ISB.ABS,Y........256..........0.0%
FC !NO3.IMP..........186..........0.0%
FD .SBC.ABS,X.......6104..........0.0%
FE .INC.ABS,X......33788..........0.0%
FF !ISB.ABS,X.........37..........0.0%
Total:.........177446045........100.0%


Addressing Statistic
#BYTE....9768177..........5.5%
ABS.....27402800.........15.4%
ZP......31246627.........17.6%
ACC......1546436..........0.8%
IMP.....36947693.........20.8%
(ZP,X)....110910..........0.0%
(ZP),Y...4506874..........2.5%
ZP,X......585349..........0.3%
ABS,X....7128026..........4.0%
ABS,Y....3600368..........2.0%
REL.....54326045.........30.6%
(ABS).....276295..........0.1%
ZP,Y.........431..........0.0%
NONE..........14..........0.0%
Total:..177446045.......100.0%


Instruction Statistic
-ADC.....1490732..........0.8%
-AND.....1392765..........0.7%
-ASL......599674..........0.3%
-BCC.....1793770..........1.0%
-BCS.....1709654..........0.9%
-BEQ....14289723..........8.0%
-BIT.....4352631..........2.4%
-BMI......353698..........0.1%
-BNE....31338199.........17.6%
-BPL.....4799492..........2.7%
-BRK...........-..........-.-%
-BVC.......40964..........0.0%
-BVS.........545..........0.0%
-CLC.....1815699..........1.0%
-CLD........4422..........0.0%
-CLI......851056..........0.4%
-CLV...........-..........-.-%
-CMP.....3951903..........2.2%
-CPX.....1611676..........0.9%
-CPY.....1449643..........0.8%
-DEC......729336..........0.4%
-DEX.....1464767..........0.8%
-DEY.....6389537..........3.6%
-EOR......507890..........0.2%
-INC.....1289698..........0.7%
-INX....12611549..........7.1%
-INY.....5887671..........3.3%
-JMP.....2556753..........1.4%
-JSR.....3166083..........1.7%
-LDA....28761553.........16.2%
-LDX.....1257841..........0.7%
-LDY.....1818872..........1.0%
-LSR.....1036017..........0.5%
-NOP......297775..........0.1%
-ORA....11056747..........6.2%
-PHA......659124..........0.3%
-PHP.......91484..........0.0%
-PLA......606498..........0.3%
-PLP.......91477..........0.0%
-ROL.....1830131..........1.0%
-ROR.....1861649..........1.0%
-RTI.......50536..........0.0%
-RTS.....3193368..........1.7%
-SBC.....1272494..........0.7%
-SEC......528955..........0.2%
-SED...........-..........-.-%
-SEI......836152..........0.4%
-STA....12800296..........7.2%
-STX......479455..........0.2%
-STY......571207..........0.3%
-TAX......688374..........0.3%
-TAY......454258..........0.2%
-TSX.......59935..........0.0%
-TXA......255994..........0.1%
-TXS.........111..........0.0%
-TYA......390917..........0.2%
!CRA..........14..........0.0%
!NOP........3696..........0.0%
!NO2.........832..........0.0%
!NO3.........726..........0.0%
!SLO...........6..........0.0%
!ANC...........2..........0.0%
!RLA...........5..........0.0%
!SRE...........1..........0.0%
!RRA.......30741..........0.0%
!ARR...........-..........-.-%
!SAX........1168..........0.0%
!ANE...........-..........-.-%
!SHA...........2..........0.0%
!SHS...........-..........-.-%
!SHY...........3..........0.0%
!SHX...........-..........-.-%
!LAX........3520..........0.0%
!LAS...........-..........-.-%
!DCP........4107..........0.0%
!SBX...........-..........-.-%
!ISB.........471..........0.0%
!SBC...........-..........-.-%
!ASR...........1..........0.0%
!LXA...........-..........-.-%
Total:.177446045........100.0%


TED access


NAME.................READ.........WRITE
------------------------------------------
Cnt1LO........:......9832............21
Cnt1HI........:.......120............21
Cnt2LO........:.......152............21
Cnt2HI........:......5142............21
Cnt3LO........:........19............21
Cnt3HI........:........19............21
Gfx1..........:.......960..........7239
Gfx2..........:......2646.........42421
KeyRd.........:....346906........338974
IRQFlag.......:....128484.........51203
IRQEnable.....:.....26073..........5148
Raster........:....362738.........50392
CurPos1.......:........19...........464
CurPos2.......:........19...........464
Snd1Freq1.....:........19..........5180
Snd2Freq1.....:.....32823.........24009
Snd2Freq2.....:.......107..........4425
SndCtrl.......:.....14419.........28743
Gfx3..........:......7395.........11950
ChrGen........:........26.........98752
VideoMatrix...:........22..........4575
Color0........:........23.........10769
Color1........:........63.........12975
Color2........:........63.........12097
Color3........:........20............21
Color4........:....551511.........68515
1stCharAddr1..:........19.............0
1stCharAddr1..:........19.............0
ActRas1.......:....114940...........414
ActRas2.......:.....80132..........1035
HRas..........:....397552.............0
Flash.........:.....62513.............0


Instruction fetch table:

0000.##########
0100.
0200.######
0300.############
0400.
0500.
0600.
0700.
0800.
0900.
0A00.
0B00.####
0C00.
0D00.
0E00.#########
0F00.#########
1000.####################
1100.#
1200.#####
1300.
1400.###
1500.####
1600.#########
1700.
1800.
1900.#
1A00.######
1B00.
1C00.
1D00.
1E00.
1F00.#
2000.
2100.
2200.#
2300.############
2400.#####
2500.
2600.#
2700.##
2800.####
2900.##
2A00.
2B00.#####
2C00.##
2D00.#
2E00.###################################
2F00.################
3000.#####
3100.#
3200.#
3300.
3400.
3500.
3600.
3700.
3800.
3900.
3A00.
3B00.
3C00.
3D00.
3E00.
3F00.
4000.#
4100.##
4200.
4300.
4400.
4500.
4600.
4700.###
4800.#
4900.
4A00.
4B00.
4C00.
4D00.
4E00.
4F00.
5000.
5100.
5200.#
5300.
5400.
5500.
5600.
5700.
5800.
5900.
5A00.
5B00.
5C00.
5D00.
5E00.
5F00.
6000.##
6100.
6200.
6300.
6400.
6500.###
6600.
6700.
6800.
6900.
6A00.
6B00.
6C00.#######
6D00.
6E00.
6F00.
7000.
7100.
7200.
7300.
7400.
7500.
7600.
7700.
7800.
7900.
7A00.
7B00.
7C00.##############
7D00.
7E00.
7F00.
8000.
8100.
8200.
8300.
8400.
8500.
8600.
8700.
8800.
8900.#####
8A00.
8B00.#
8C00.
8D00.
8E00.
8F00.
9000.#
9100.
9200.###
9300.
9400.
9500.
9600.#
9700.
9800.
9900.
9A00.
9B00.
9C00.
9D00.
9E00.##
9F00.
A000.#
A100.#
A200.
A300.
A400.
A500.
A600.#
A700.
A800.
A900.
AA00.
AB00.
AC00.
AD00.
AE00.
AF00.
B000.
B100.
B200.
B300.
B400.
B500.
B600.
B700.
B800.
B900.
BA00.
BB00.
BC00.
BD00.
BE00.
BF00.
C000.
C100.
C200.
C300.
C400.
C500.
C600.
C700.
C800.
C900.
CA00.
CB00.
CC00.
CD00.##
CE00.#
CF00.
D000.
D100.
D200.
D300.
D400.
D500.
D600.
D700.
D800.#######################################################################
D900.#
DA00.########
DB00.#
DC00.
DD00.
DE00.#
DF00.
E000.
E100.
E200.
E300.
E400.###
E500.##
E600.
E700.
E800.
E900.
EA00.#
EB00.
EC00.
ED00.
EE00.
EF00.
F000.
F100.
F200.
F300.
F400.
F500.
F600.#
F700.
F800.
F900.
FA00.#
FB00.#
FC00.
FD00.
FE00.
FF00.