Merge Peter's stuff. Rework the Makefile so it takes care of everything.
This is work in progress. Some stuff from Peter's C256 branch was commented and I uncommented it because I didn't want things disabled for the A2560 but they seem to cause problems with Calypsi 65816.
This commit is contained in:
parent
bc56588af5
commit
ad3795147a
BIN
C256Mgr.zip
BIN
C256Mgr.zip
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -1,323 +0,0 @@
|
|||
import intelhex
|
||||
import wdc
|
||||
import foenix
|
||||
import srec
|
||||
import configparser
|
||||
import re
|
||||
import sys
|
||||
import argparse
|
||||
import os
|
||||
|
||||
from serial.tools import list_ports
|
||||
|
||||
FLASH_SIZE = 524288 # Required size of flash file: 512 KB
|
||||
CHUNK_SIZE = 4096 # Size of block of binary data to transfer
|
||||
|
||||
label_file = ""
|
||||
to_send = ""
|
||||
port = ""
|
||||
start_address = ""
|
||||
count = ""
|
||||
label = ""
|
||||
|
||||
def confirm(question):
|
||||
return input(question).lower().strip()[:1] == "y"
|
||||
|
||||
def revision(port):
|
||||
"""Get the version code for the debug port."""
|
||||
c256 = foenix.FoenixDebugPort()
|
||||
try:
|
||||
c256.open(port)
|
||||
c256.enter_debug()
|
||||
try:
|
||||
data = c256.get_revision()
|
||||
return "%X" % data
|
||||
finally:
|
||||
c256.exit_debug()
|
||||
finally:
|
||||
c256.close()
|
||||
|
||||
def upload_binary(port, filename, address):
|
||||
"""Upload a binary file into the C256 memory."""
|
||||
with open(filename, "rb") as f:
|
||||
c256 = foenix.FoenixDebugPort()
|
||||
try:
|
||||
c256.open(port)
|
||||
c256.enter_debug()
|
||||
try:
|
||||
current_addr = int(address, 16)
|
||||
block = f.read(CHUNK_SIZE)
|
||||
while block:
|
||||
c256.write_block(current_addr, block)
|
||||
current_addr += len(block)
|
||||
block = f.read(CHUNK_SIZE)
|
||||
finally:
|
||||
c256.exit_debug()
|
||||
finally:
|
||||
c256.close()
|
||||
|
||||
def program_flash(port, filename, hex_address):
|
||||
"""Program the flash memory using the contents of the C256's RAM."""
|
||||
|
||||
base_address = int(hex_address, 16)
|
||||
address = base_address
|
||||
print("About to upload image to address 0x{:X}".format(address), flush=True)
|
||||
|
||||
#if os.path.getsize(filename) == FLASH_SIZE:
|
||||
if confirm("Are you sure you want to reprogram the flash memory? (y/n): "):
|
||||
with open(filename, "rb") as f:
|
||||
c256 = foenix.FoenixDebugPort()
|
||||
try:
|
||||
c256.open(port)
|
||||
c256.enter_debug()
|
||||
try:
|
||||
block = f.read(CHUNK_SIZE)
|
||||
while block:
|
||||
c256.write_block(address, block)
|
||||
address += len(block)
|
||||
block = f.read(CHUNK_SIZE)
|
||||
|
||||
print("Binary file uploaded...", flush=True)
|
||||
c256.erase_flash()
|
||||
print("Flash memory erased...", flush=True)
|
||||
c256.program_flash(base_address)
|
||||
print("Flash memory programmed...")
|
||||
finally:
|
||||
c256.exit_debug()
|
||||
finally:
|
||||
c256.close()
|
||||
# else:
|
||||
# print("The provided flash file is not the right size.")
|
||||
|
||||
def dereference(port, file, label):
|
||||
"""Get the address contained in the pointer with the label in the label file."""
|
||||
c256 = foenix.FoenixDebugPort()
|
||||
try:
|
||||
address = lookup(file, label)
|
||||
c256.open(port)
|
||||
c256.enter_debug()
|
||||
try:
|
||||
data = c256.read_block(int(address, 16), 3)
|
||||
deref = data[2] << 16 | data[1] << 8 | data[0]
|
||||
return "%X" % deref
|
||||
finally:
|
||||
c256.exit_debug()
|
||||
finally:
|
||||
c256.close()
|
||||
|
||||
def lookup(file, label):
|
||||
"""Return the hex address linked to the passed label in the label file."""
|
||||
with open(file) as f:
|
||||
for line in f:
|
||||
match = re.match('^(\S+)\s*\=\s*\$(\S+)', line)
|
||||
if match:
|
||||
if match.group(1) == label:
|
||||
return match.group(2)
|
||||
sys.stderr.write("Could not find a definition for that label.\n")
|
||||
sys.exit(2)
|
||||
|
||||
def display(base_address, data):
|
||||
"""Write a block of data to the console in a nice, hexadecimal format."""
|
||||
|
||||
text_buff = ""
|
||||
for i in range(0, len(data)):
|
||||
if (i % 16) == 0:
|
||||
if text_buff != "":
|
||||
sys.stdout.write(" {}\n".format(text_buff))
|
||||
text_buff = ""
|
||||
sys.stdout.write("{:06X}: ".format(base_address + i))
|
||||
elif (i % 8) == 0:
|
||||
sys.stdout.write(" ")
|
||||
sys.stdout.write("{:02X}".format(data[i]))
|
||||
|
||||
b = bytearray(1)
|
||||
b[0] = data[i]
|
||||
if (b[0] & 0x80 == 0):
|
||||
c = b.decode('ascii')
|
||||
if c.isprintable():
|
||||
text_buff = text_buff + c
|
||||
else:
|
||||
text_buff = text_buff + "."
|
||||
else:
|
||||
text_buff = text_buff + "."
|
||||
|
||||
sys.stdout.write(' {}\n'.format(text_buff))
|
||||
|
||||
def send_wdc(port, filename):
|
||||
"""Send the data in the hex file 'filename' to the C256 on the given serial port."""
|
||||
infile = wdc.WdcBinFile()
|
||||
c256 = foenix.FoenixDebugPort()
|
||||
try:
|
||||
c256.open(port)
|
||||
infile.open(filename)
|
||||
try:
|
||||
infile.set_handler(lambda address, data: c256.write_block(address, data))
|
||||
c256.enter_debug()
|
||||
try:
|
||||
# Process the lines in the hex file
|
||||
infile.read_blocks()
|
||||
finally:
|
||||
c256.exit_debug()
|
||||
finally:
|
||||
infile.close()
|
||||
finally:
|
||||
c256.close()
|
||||
|
||||
def send_srec(port, filename):
|
||||
"""Send the data in the SREC hex file 'filename' to the C256 on the given serial port."""
|
||||
infile = srec.SRECFile()
|
||||
c256 = foenix.FoenixDebugPort()
|
||||
try:
|
||||
c256.open(port)
|
||||
infile.open(filename)
|
||||
try:
|
||||
infile.set_handler(lambda address, data: c256.write_block(address, bytes.fromhex(data)))
|
||||
c256.enter_debug()
|
||||
try:
|
||||
# Process the lines in the hex file
|
||||
infile.read_lines()
|
||||
finally:
|
||||
c256.exit_debug()
|
||||
finally:
|
||||
infile.close()
|
||||
finally:
|
||||
c256.close()
|
||||
|
||||
def send(port, filename):
|
||||
"""Send the data in the hex file 'filename' to the C256 on the given serial port."""
|
||||
infile = intelhex.HexFile()
|
||||
c256 = foenix.FoenixDebugPort()
|
||||
try:
|
||||
c256.open(port)
|
||||
infile.open(filename)
|
||||
try:
|
||||
infile.set_handler(lambda address, data: c256.write_block(address, bytes.fromhex(data)))
|
||||
c256.enter_debug()
|
||||
try:
|
||||
# Process the lines in the hex file
|
||||
infile.read_lines()
|
||||
finally:
|
||||
c256.exit_debug()
|
||||
finally:
|
||||
infile.close()
|
||||
finally:
|
||||
c256.close()
|
||||
|
||||
def get(port, address, length):
|
||||
"""Read a block of data from the C256."""
|
||||
c256 = foenix.FoenixDebugPort()
|
||||
try:
|
||||
c256.open(port)
|
||||
c256.enter_debug()
|
||||
try:
|
||||
data = c256.read_block(int(address, 16), int(length, 16))
|
||||
|
||||
display(int(address, 16), data)
|
||||
finally:
|
||||
c256.exit_debug()
|
||||
finally:
|
||||
c256.close()
|
||||
|
||||
def list_serial_ports():
|
||||
serial_ports = list_ports.comports()
|
||||
|
||||
if len(serial_ports) == 0:
|
||||
print("No serial ports found")
|
||||
|
||||
for serial_port in serial_ports:
|
||||
print(f"{serial_port.device}")
|
||||
print(f" Description: {serial_port.description}")
|
||||
print(f" Manufacturer: {serial_port.manufacturer}")
|
||||
print(f" Product: {serial_port.product}")
|
||||
print()
|
||||
|
||||
|
||||
config = configparser.ConfigParser()
|
||||
config.read('c256.ini')
|
||||
|
||||
parser = argparse.ArgumentParser(description='Manage the C256 Foenix through its debug port.')
|
||||
parser.add_argument("--port", dest="port", default=config['DEFAULT'].get('port', 'COM3'),
|
||||
help="Specify the serial port to use to access the C256 debug port.")
|
||||
|
||||
parser.add_argument("--list-ports", dest="list_ports", action="store_true",
|
||||
help="List available serial ports.")
|
||||
|
||||
parser.add_argument("--label-file", dest="label_file", default=config['DEFAULT'].get('labels', 'basic8'),
|
||||
help="Specify the label file to use for dereference and lookup")
|
||||
|
||||
parser.add_argument("--count", dest="count", default="10", help="the number of bytes to read")
|
||||
|
||||
parser.add_argument("--dump", metavar="ADDRESS", dest="dump_address",
|
||||
help="Read memory from the C256's memory and display it.")
|
||||
|
||||
parser.add_argument("--deref", metavar="LABEL", dest="deref_name",
|
||||
help="Lookup the address stored at LABEL and display the memory there.")
|
||||
|
||||
parser.add_argument("--lookup", metavar="LABEL", dest="lookup_name",
|
||||
help="Display the memory starting at the address indicated by the label.")
|
||||
|
||||
parser.add_argument("--revision", action="store_true", dest="revision",
|
||||
help="Display the revision code of the debug interface.")
|
||||
|
||||
parser.add_argument("--flash", metavar="BINARY FILE", dest="flash_file",
|
||||
help="Attempt to reprogram the flash using the binary file provided.")
|
||||
|
||||
parser.add_argument("--binary", metavar="BINARY FILE", dest="binary_file",
|
||||
help="Upload a binary file to the C256's RAM.")
|
||||
|
||||
parser.add_argument("--address", metavar="ADDRESS", dest="address",
|
||||
default=config['DEFAULT'].get('flash_address', '380000'),
|
||||
help="Provide the starting address of the memory block to use in flashing memory.")
|
||||
|
||||
parser.add_argument("--upload", metavar="HEX FILE", dest="hex_file",
|
||||
help="Attempt to reprogram the flash using the binary file provided.")
|
||||
|
||||
parser.add_argument("--upload-wdc", metavar="BINARY FILE", dest="wdc_file",
|
||||
help="Upload a WDCTools binary hex file. (WDCLN.EXE -HZ)")
|
||||
|
||||
parser.add_argument("--upload-srec", metavar="SREC FILE", dest="srec_file",
|
||||
help="Upload a Motorola SREC hex file.")
|
||||
|
||||
options = parser.parse_args()
|
||||
|
||||
try:
|
||||
if options.port != "":
|
||||
if options.hex_file:
|
||||
send(options.port, options.hex_file)
|
||||
|
||||
elif options.wdc_file:
|
||||
send_wdc(options.port, options.wdc_file)
|
||||
|
||||
elif options.srec_file:
|
||||
send_srec(options.port, options.srec_file)
|
||||
|
||||
elif options.deref_name and options.label_file:
|
||||
address = dereference(options.port, options.label_file, options.deref_name)
|
||||
get(options.port, address, options.count)
|
||||
|
||||
elif options.lookup_name and options.label_file:
|
||||
address = lookup(options.label_file, options.lookup_name)
|
||||
get(options.port, address, options.count)
|
||||
|
||||
elif options.dump_address:
|
||||
get(options.port, options.dump_address, options.count)
|
||||
|
||||
elif options.revision:
|
||||
rev = revision(options.port)
|
||||
print(rev)
|
||||
|
||||
elif options.address and options.binary_file:
|
||||
upload_binary(options.port, options.binary_file, options.address)
|
||||
|
||||
elif options.address and options.flash_file:
|
||||
program_flash(options.port, options.flash_file, options.address)
|
||||
|
||||
elif options.list_ports:
|
||||
list_serial_ports()
|
||||
|
||||
else:
|
||||
parser.print_help()
|
||||
else:
|
||||
parser.print_help()
|
||||
finally:
|
||||
print
|
|
@ -1,140 +0,0 @@
|
|||
import serial
|
||||
|
||||
class FoenixDebugPort:
|
||||
"""Provide the conneciton to a C256 Foenix debug port."""
|
||||
connection = 0
|
||||
status0 = 0
|
||||
status1 = 0
|
||||
|
||||
def open(self, port):
|
||||
"""Open a connection to the C256 Foenix."""
|
||||
self.connection = serial.Serial(port=port,
|
||||
baudrate=6000000,
|
||||
bytesize=serial.EIGHTBITS,
|
||||
parity=serial.PARITY_NONE,
|
||||
stopbits=serial.STOPBITS_ONE,
|
||||
timeout=60,
|
||||
write_timeout=60)
|
||||
try:
|
||||
self.connection.open()
|
||||
except:
|
||||
self.connection.close()
|
||||
self.connection.open()
|
||||
|
||||
def is_open(self):
|
||||
return self.connection.is_open()
|
||||
|
||||
def close(self):
|
||||
"""Close the connection to the C256 Foenix."""
|
||||
self.connection.close()
|
||||
|
||||
def enter_debug(self):
|
||||
"""Send the command to make the C256 Foenix enter its debug mode."""
|
||||
self.transfer(0x80, 0, 0, 0)
|
||||
|
||||
def exit_debug(self):
|
||||
"""Send the command to make the C256 Foenix leave its debug mode.
|
||||
This will make the C256 reset.
|
||||
"""
|
||||
self.transfer(0x81, 0, 0, 0)
|
||||
|
||||
def erase_flash(self):
|
||||
"""Send the command to have the C256 Foenix erase its flash memory."""
|
||||
self.transfer(0x11, 0, 0, 0)
|
||||
|
||||
def get_revision(self):
|
||||
"""Gets the revision code for the debug interface.
|
||||
RevB2's revision code is 0, RevC4A is 1."""
|
||||
self.transfer(0xFE, 0, 0, 0)
|
||||
return self.status1
|
||||
|
||||
def program_flash(self, address):
|
||||
"""Send the command to have the C256 Foenix reprogram its flash memory.
|
||||
Data to be written should already be in the C256's RAM at address."""
|
||||
self.transfer(0x10, address, 0, 0)
|
||||
|
||||
def write_block(self, address, data):
|
||||
"""Write a block of data to the specified starting address in the C256's memory."""
|
||||
self.transfer(0x01, address, data, 0)
|
||||
|
||||
def read_block(self, address, length):
|
||||
"""Read a block of data of the specified length from the specified starting address of the C256's memory."""
|
||||
return self.transfer(0x00, address, 0, length)
|
||||
|
||||
def readbyte(self):
|
||||
b = self.connection.read(1)
|
||||
return b[0]
|
||||
|
||||
def transfer(self, command, address, data, read_length):
|
||||
"""Send a command to the C256 Foenix"""
|
||||
|
||||
self.status0 = 0
|
||||
self.status1 = 0
|
||||
lrc = 0
|
||||
length = 0
|
||||
if data == 0:
|
||||
length = read_length
|
||||
else:
|
||||
length = len(data)
|
||||
|
||||
# if command == 0x80:
|
||||
# print('Switching to debug mode')
|
||||
# elif command == 0x81:
|
||||
# print('Resetting')
|
||||
# else:
|
||||
# print('Writing data of length {:X} to {:X}'.format(length, address))
|
||||
|
||||
command_bytes = command.to_bytes(1, 'big')
|
||||
address_bytes = address.to_bytes(3, 'big')
|
||||
length_bytes = length.to_bytes(2, 'big')
|
||||
|
||||
header = bytearray(7)
|
||||
header[0] = 0x55
|
||||
header[1] = command_bytes[0]
|
||||
header[2] = address_bytes[0]
|
||||
header[3] = address_bytes[1]
|
||||
header[4] = address_bytes[2]
|
||||
header[5] = length_bytes[0]
|
||||
header[6] = length_bytes[1]
|
||||
|
||||
for i in range(0, 6):
|
||||
lrc = lrc ^ header[i]
|
||||
|
||||
if data:
|
||||
for i in range(0, length):
|
||||
lrc = lrc ^ data[i]
|
||||
|
||||
lrc_bytes = lrc.to_bytes(1, 'big')
|
||||
|
||||
if data:
|
||||
packet = header + data + lrc_bytes
|
||||
written = self.connection.write(packet)
|
||||
if written != len(packet):
|
||||
raise Exception("Could not write packet correctly.")
|
||||
else:
|
||||
packet = header + lrc_bytes
|
||||
written = self.connection.write(packet)
|
||||
if written != len(packet):
|
||||
raise Exception("Could not write packet correctly.")
|
||||
# print('Sent [{}]'.format(packet.hex()))
|
||||
|
||||
c = 0
|
||||
while c != 0xAA:
|
||||
c = self.readbyte()
|
||||
|
||||
# print('Got 0xAA')
|
||||
|
||||
read_bytes = 0
|
||||
|
||||
if c == 0xAA:
|
||||
self.status0 = self.readbyte()
|
||||
self.status1 = self.readbyte()
|
||||
|
||||
if read_length > 0:
|
||||
read_bytes = self.connection.read(read_length)
|
||||
|
||||
read_lrc = self.readbyte()
|
||||
|
||||
# print("Status: {:X}, {:X}".format(self.status0, self.status1))
|
||||
|
||||
return read_bytes
|
|
@ -1,52 +0,0 @@
|
|||
import re
|
||||
|
||||
class HexFile:
|
||||
"""Read information from an Intel Hex file."""
|
||||
|
||||
file = 0
|
||||
base_address = 0
|
||||
handler = 0
|
||||
|
||||
def __init__(self):
|
||||
self.file = 0
|
||||
self.base_address = 0
|
||||
self.handler = 0
|
||||
|
||||
def open(self, filename):
|
||||
self.file = open(filename, 'r')
|
||||
|
||||
def set_handler(self, proc):
|
||||
self.handler = proc
|
||||
|
||||
def close(self):
|
||||
self.file.close()
|
||||
|
||||
def read_lines(self):
|
||||
line = self.file.readline()
|
||||
while line:
|
||||
self.parse_line(line)
|
||||
line = self.file.readline()
|
||||
|
||||
def parse_line(self, line):
|
||||
m = re.match("^:([0-9a-fA-F]{2})([0-9a-fA-F]{4})([0-9a-fA-F]{2})([0-9a-fA-F]*)([0-9a-fA-F]{2})", line)
|
||||
size = int(m.group(1), 16)
|
||||
address = int(m.group(2), 16)
|
||||
code = int(m.group(3), 16)
|
||||
data = m.group(4)
|
||||
crc = int(m.group(5), 16)
|
||||
if code == 0:
|
||||
if self.handler:
|
||||
# print('Sending record to {:X}'.format(self.base_address + address))
|
||||
self.handler(self.base_address + address, data)
|
||||
|
||||
elif code == 2:
|
||||
# Set the base address based on a segment
|
||||
self.base_address = int(data, 16) << 4 # shity 80x86 real mode addressing : take the address an do *16 to get the final address
|
||||
# print('Setting base address to {:X}'.format(self.base_address))
|
||||
|
||||
elif code == 4:
|
||||
# Set the base address given on address[31..16]
|
||||
self.base_address = int(data, 16) << 16
|
||||
# print('Setting base address to {:X}'.format(self.base_address))
|
||||
|
||||
|
|
@ -1,81 +0,0 @@
|
|||
import re
|
||||
|
||||
def tailpad(data):
|
||||
datalen = len(data)
|
||||
pad = datalen % 4
|
||||
if pad > 0:
|
||||
return data.ljust(datalen + pad, '0')
|
||||
else:
|
||||
return data
|
||||
|
||||
class SRECFile:
|
||||
"""Read information from a Motorola SREC file."""
|
||||
|
||||
file = 0
|
||||
handler = 0
|
||||
|
||||
def __init__(self):
|
||||
self.file = 0
|
||||
self.handler = 0
|
||||
|
||||
def open(self, filename):
|
||||
self.file = open(filename, 'r')
|
||||
|
||||
def set_handler(self, proc):
|
||||
self.handler = proc
|
||||
|
||||
def close(self):
|
||||
self.file.close()
|
||||
|
||||
def read_lines(self):
|
||||
line = self.file.readline()
|
||||
while line:
|
||||
self.parse_line(line)
|
||||
line = self.file.readline()
|
||||
|
||||
def parse_line(self, line):
|
||||
# Format of line will vary based on the type, so let's get the type first
|
||||
m = re.match("^S([0-9a-fA-F])([0-9a-fA-F]+)", line)
|
||||
code = int(m.group(1), 16)
|
||||
hex_digits = m.group(2)
|
||||
|
||||
# Codes...
|
||||
# 0 = Comment/header
|
||||
# 1 = Data with 16-bit address
|
||||
# 2 = Data with 24-bit address
|
||||
# 3 = Data with 32-bit address
|
||||
# 4 = Reserved
|
||||
# 5 = 16-bit record count
|
||||
# 6 = 24-bit record count
|
||||
# 7 = 32-bit start address
|
||||
# 8 = 24-bit start address
|
||||
# 9 = 16-bit start address
|
||||
#
|
||||
# This code will ignore all records by 1, 2, and 3
|
||||
|
||||
if code == 1:
|
||||
# Unpack a record with a 16-bit address
|
||||
m2 = re.match("^([0-9a-fA-F]{2})([0-9a-fA-F]{4})([0-9a-fA-F]*)([0-9a-fA-F]{2})", hex_digits)
|
||||
count = int(m2.group(1), 16)
|
||||
address = int(m2.group(2), 16)
|
||||
data = m2.group(3)
|
||||
crc = int(m2.group(4), 16)
|
||||
self.handler(address, tailpad(data))
|
||||
|
||||
elif code == 2:
|
||||
# Unpack a record with a 24-bit address
|
||||
m2 = re.match("^([0-9a-fA-F]{2})([0-9a-fA-F]{6})([0-9a-fA-F]*)([0-9a-fA-F]{2})", hex_digits)
|
||||
count = int(m2.group(1), 16)
|
||||
address = int(m2.group(2), 16)
|
||||
data = m2.group(3)
|
||||
crc = int(m2.group(4), 16)
|
||||
self.handler(address, tailpad(data))
|
||||
|
||||
elif code == 3:
|
||||
# Unpack a record with a 32-bit address
|
||||
m2 = re.match("^([0-9a-fA-F]{2})([0-9a-fA-F]{8})([0-9a-fA-F]*)([0-9a-fA-F]{2})", hex_digits)
|
||||
count = int(m2.group(1), 16)
|
||||
address = int(m2.group(2), 16)
|
||||
data = m2.group(3)
|
||||
crc = int(m2.group(4), 16)
|
||||
self.handler(address, tailpad(data))
|
|
@ -1,49 +0,0 @@
|
|||
from pathlib import Path
|
||||
|
||||
##
|
||||
# See: http://www.westerndesigncenter.com/wdc/datasheets/Assembler_Linker.pdf
|
||||
# page 37
|
||||
#
|
||||
# Initial byte 'Z' as signature.
|
||||
#
|
||||
# Then for each block:
|
||||
# 3 byte address
|
||||
# 3 byte length
|
||||
# length bytes of data
|
||||
#
|
||||
# The final block has an address and length of 0.
|
||||
#
|
||||
|
||||
class WdcBinFile:
|
||||
"""Reads information from WDCTools BIN formated file"""
|
||||
data = 0
|
||||
handler = 0
|
||||
|
||||
def __init__(self):
|
||||
pass
|
||||
|
||||
def open(self, filename):
|
||||
self.data = Path(filename).read_bytes()
|
||||
|
||||
def close(self):
|
||||
self.data = []
|
||||
|
||||
def set_handler(self, proc):
|
||||
self.handler = proc
|
||||
|
||||
def read_blocks(self):
|
||||
offset = 1
|
||||
while offset < len(self.data):
|
||||
(addr, block, offset) = self.__read_block(self.data, offset)
|
||||
if addr > 0:
|
||||
self.handler(addr, block)
|
||||
|
||||
def __read_block(self, data, offset):
|
||||
addr = int.from_bytes(data[offset:offset+3], byteorder='little', signed=False)
|
||||
size = int.from_bytes(data[offset+3:offset+6], byteorder='little', signed=False)
|
||||
if addr == 0:
|
||||
return (0, [], offset+6)
|
||||
block = data[offset+6:offset+6+size]
|
||||
return (addr, block, offset+6+size)
|
||||
|
||||
|
BIN
FoenixMgr.zip
Normal file
BIN
FoenixMgr.zip
Normal file
Binary file not shown.
9
dump.bat
9
dump.bat
|
@ -1,9 +0,0 @@
|
|||
@echo off
|
||||
REM Print the contents of memory
|
||||
REM usage: dump {start address} [{byte count}]
|
||||
|
||||
if [%2%]==[] (
|
||||
python C256Mgr\c256mgr.py --dump %1
|
||||
) ELSE (
|
||||
python C256Mgr\c256mgr.py --dump %1 --count %2
|
||||
)
|
|
@ -1,8 +0,0 @@
|
|||
@echo off
|
||||
REM Reprogram the flash memory on the C256 Foenix
|
||||
|
||||
if [%2%]==[] (
|
||||
python C256Mgr\c256mgr.py --flash %1
|
||||
) ELSE (
|
||||
python C256Mgr\c256mgr.py --flash %1 --address %2
|
||||
)
|
3
flash.sh
3
flash.sh
|
@ -1,3 +0,0 @@
|
|||
#!/bin/sh
|
||||
# This script will help you flash the Foenix from linux. Tested for A2560U only.
|
||||
python3 C256Mgr/c256mgr.py --flash src/foenixmcp.bin --address 0x00000
|
6
foenixmgr.ini
Normal file
6
foenixmgr.ini
Normal file
|
@ -0,0 +1,6 @@
|
|||
[DEFAULT]
|
||||
port=COM3
|
||||
labels=sample.lbl
|
||||
flash_address=380000
|
||||
chunk_size=1024
|
||||
cpu=65816
|
|
@ -1,9 +0,0 @@
|
|||
@echo off
|
||||
REM Print the contents of memory at the labeled address
|
||||
REM usage: lookup {label}
|
||||
|
||||
if [%2%]==[] (
|
||||
python C256Mgr\c256mgr.py --lookup %1
|
||||
) ELSE (
|
||||
python C256Mgr\c256mgr.py --lookup %1 --count %2
|
||||
)
|
|
@ -1,3 +0,0 @@
|
|||
@echo off
|
||||
REM Get the revision code of the C256 Foenix's debug interface
|
||||
python C256Mgr\c256mgr.py --revision
|
|
@ -1,2 +0,0 @@
|
|||
@echo off
|
||||
python C256Mgr\c256mgr.py --upload %1
|
|
@ -1,2 +0,0 @@
|
|||
@echo off
|
||||
python C256Mgr\c256mgr.py --upload-srec %1
|
53
src/C256/gentables.py
Normal file
53
src/C256/gentables.py
Normal file
|
@ -0,0 +1,53 @@
|
|||
#
|
||||
# Generate the assembly files for both the system call library and the kernel jump tabls
|
||||
#
|
||||
|
||||
sys_call_names = []
|
||||
|
||||
# Read in the list of system calls ("sys_")
|
||||
with open("syscalls.txt", "r") as call_names:
|
||||
for line in call_names:
|
||||
# Remove comments
|
||||
index = line.find("#")
|
||||
if index == 0:
|
||||
line = ""
|
||||
elif index > 0:
|
||||
line = line[index - 1:]
|
||||
|
||||
line = line.strip()
|
||||
|
||||
# Skip blank lines
|
||||
if len(line) > 0:
|
||||
sys_call_names.append(line)
|
||||
|
||||
# Create the system call table, which is used to call into the kernel jump table
|
||||
|
||||
with open("syscalls.s", "w") as f:
|
||||
for call_name in sys_call_names:
|
||||
f.write("\t.public sys_{}\n".format(call_name))
|
||||
|
||||
f.write("\n")
|
||||
|
||||
for call_name in sys_call_names:
|
||||
f.write("\t.extern sjt_{}\n".format(call_name))
|
||||
|
||||
f.write("\n\t.section farcode\n\n");
|
||||
|
||||
for call_name in sys_call_names:
|
||||
f.write("sys_{:26}\tjmp long:sjt_{}\n".format(call_name + ": ", call_name))
|
||||
|
||||
# Create the kernel jump table
|
||||
|
||||
with open("jumptable.s", "w") as f:
|
||||
for call_name in sys_call_names:
|
||||
f.write("\t.public sjt_{}\n".format(call_name))
|
||||
|
||||
f.write("\n")
|
||||
|
||||
for call_name in sys_call_names:
|
||||
f.write("\t.extern {}\n".format(call_name))
|
||||
|
||||
f.write("\n\t.section jumptable\n\n");
|
||||
|
||||
for call_name in sys_call_names:
|
||||
f.write("sjt_{:26}\tjmp long:{}\n".format(call_name + ": ", call_name))
|
213
src/C256/io_stubs.c
Normal file
213
src/C256/io_stubs.c
Normal file
|
@ -0,0 +1,213 @@
|
|||
#include <stddef.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include "syscalls.h"
|
||||
|
||||
/****************************************************************************
|
||||
* Name: _Stub_open
|
||||
*
|
||||
* Description:
|
||||
* Open a file.
|
||||
* The oflag argument are POSIX style mode flags, e.g O_RDONLY which
|
||||
* are defined in fcntl.h.
|
||||
* This function is variadic as it optionally can take a mode_t that
|
||||
* are permissions, e.g 0666. If the file system does not handle
|
||||
* permissions you can ignore that this function is variadic.
|
||||
* The return file descriptor shall be a positive number, larger
|
||||
* than 2 (as 0-2 are used for stdin, stdout and stderr).
|
||||
* The actual number does not matter and they need not to be
|
||||
* consequtive, multiple numeric series with gaps between can be used.
|
||||
*
|
||||
* Return the obtained file descriptor or EOF (-1) on failure and set
|
||||
* errno according to the error.
|
||||
*
|
||||
****************************************************************************/
|
||||
int _Stub_open(const char *path, int oflag, ...) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* Name: _Stub_close
|
||||
*
|
||||
* Description:
|
||||
* Close a file
|
||||
*
|
||||
* Return 0 if operation was OK, EOF otherwise and set errno according to
|
||||
* the error.
|
||||
* Note: This will only be invoked for streams opened by _Stub_open(),
|
||||
* there is no need to check for the standard descriptor 0-2.
|
||||
*
|
||||
****************************************************************************/
|
||||
int _Stub_close(int fd) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* Name: _Stub_access
|
||||
*
|
||||
* Description:
|
||||
* Determine if a file can be accessed.
|
||||
*
|
||||
****************************************************************************/
|
||||
int _Stub_access(const char *path, int mode) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* Name: _Stub_lseek
|
||||
*
|
||||
* Description:
|
||||
* Change position in a file
|
||||
*
|
||||
* Returns the new position in the file in bytes from the beginning of the
|
||||
* file, or -1 on failure.
|
||||
*
|
||||
****************************************************************************/
|
||||
long _Stub_lseek(int fd, long offset, int whence) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* Name: _Stub_fgetpos
|
||||
*
|
||||
* Description:
|
||||
* Change position in a file
|
||||
*
|
||||
* Returns 0 on success, non-zero otherwise. In case of an error also set
|
||||
* errno according to error.
|
||||
*
|
||||
****************************************************************************/
|
||||
int _Stub_fgetpos(int fd, fpos_t *pos) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* Name: _Stub_fsetpos
|
||||
*
|
||||
* Description:
|
||||
* Change position in a file
|
||||
*
|
||||
* Returns 0 on success, non-zero otherwise. In case of an error also set
|
||||
* errno according to error.
|
||||
*
|
||||
****************************************************************************/
|
||||
int _Stub_fsetpos(int fd, const fpos_t *pos) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* Name: _Stub_read
|
||||
*
|
||||
* Description:
|
||||
* Read from a file
|
||||
*
|
||||
* Returns the number of characters read. Return -1 on failure and set
|
||||
* errno according to the error.
|
||||
*
|
||||
****************************************************************************/
|
||||
size_t _Stub_read(int fd, void *buf, size_t count) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* Name: _Stub_write
|
||||
*
|
||||
* Description:
|
||||
* Write to a file
|
||||
*
|
||||
* Returns the number of characters actually written. Return -1 on failure and
|
||||
* set errno according to the error.
|
||||
*
|
||||
****************************************************************************/
|
||||
size_t _Stub_write(int fd, const void *buf, size_t count) {
|
||||
short channel = 0;
|
||||
|
||||
switch (fd) {
|
||||
case 0:
|
||||
channel = 0;
|
||||
break;
|
||||
|
||||
case 1:
|
||||
channel = 0;
|
||||
break;
|
||||
|
||||
case 2:
|
||||
channel = 1;
|
||||
break;
|
||||
|
||||
default:
|
||||
channel = 0;
|
||||
break;
|
||||
}
|
||||
|
||||
for (int i = 0; i < count; i++) {
|
||||
sys_txt_put(channel, ((const char *)buf)[i]);
|
||||
}
|
||||
|
||||
return count;
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* Name: _Stub_rename
|
||||
*
|
||||
* Description:
|
||||
* Rename a file or directory
|
||||
*
|
||||
* Return 0 on success, -1 otherwise and set errno according to the
|
||||
* error.
|
||||
*
|
||||
****************************************************************************/
|
||||
int _Stub_rename(const char *oldpath, const char *newpath) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* Name: _Stub_remove
|
||||
*
|
||||
* Description:
|
||||
* Remove a file or directory
|
||||
*
|
||||
* Return 0 on success, -1 otherwise and set errno according to the
|
||||
* error.
|
||||
*
|
||||
****************************************************************************/
|
||||
int _Stub_remove(const char *path) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* Name: _Stub_exit
|
||||
*
|
||||
* Description:
|
||||
* Terminate the program with an exit code, exit clean-ups are done
|
||||
* before this function is (finally) called.
|
||||
*
|
||||
****************************************************************************/
|
||||
void _Stub_exit(int exitCode) {
|
||||
while (1) ;
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* Name: _Stub_environ
|
||||
*
|
||||
* Description:
|
||||
* Get the environment. On UNIX this is typically a global variable
|
||||
* 'environ', but in order to make it more flexible and avoid having
|
||||
* such global variable (which is not part of the C standard) it is
|
||||
* obtained using the stub interface.
|
||||
*
|
||||
* Note:
|
||||
* This stub function is not implemented by the semi-hosted debug stub
|
||||
* interface.
|
||||
*
|
||||
****************************************************************************/
|
||||
char** _Stub_environ(void) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
163
src/C256/jumptable.s
Normal file
163
src/C256/jumptable.s
Normal file
|
@ -0,0 +1,163 @@
|
|||
.public sjt_int_enable_all
|
||||
.public sjt_int_disable_all
|
||||
.public sjt_int_disable
|
||||
.public sjt_int_enable
|
||||
.public sjt_int_register
|
||||
.public sjt_int_pending
|
||||
.public sjt_get_info
|
||||
.public sjt_int_clear
|
||||
.public sjt_chan_read_b
|
||||
.public sjt_chan_read
|
||||
.public sjt_chan_readline
|
||||
.public sjt_chan_write_b
|
||||
.public sjt_chan_write
|
||||
.public sjt_chan_status
|
||||
.public sjt_chan_flush
|
||||
.public sjt_chan_seek
|
||||
.public sjt_chan_ioctrl
|
||||
.public sjt_chan_open
|
||||
.public sjt_chan_close
|
||||
.public sjt_chan_swap
|
||||
.public sjt_chan_device
|
||||
.public sjt_bdev_register
|
||||
.public sjt_bdev_read
|
||||
.public sjt_bdev_write
|
||||
.public sjt_bdev_status
|
||||
.public sjt_bdev_flush
|
||||
.public sjt_bdev_ioctrl
|
||||
.public sjt_mem_get_ramtop
|
||||
.public sjt_mem_reserve
|
||||
.public sjt_time_jiffies
|
||||
.public sjt_rtc_set_time
|
||||
.public sjt_rtc_get_time
|
||||
.public sjt_kbd_scancode
|
||||
.public sjt_err_message
|
||||
.public sjt_kbd_layout
|
||||
.public sjt_var_set
|
||||
.public sjt_var_get
|
||||
.public sjt_txt_get_capabilities
|
||||
.public sjt_txt_set_mode
|
||||
.public sjt_txt_setsizes
|
||||
.public sjt_txt_set_xy
|
||||
.public sjt_txt_get_xy
|
||||
.public sjt_txt_get_region
|
||||
.public sjt_txt_set_region
|
||||
.public sjt_txt_set_color
|
||||
.public sjt_txt_get_color
|
||||
.public sjt_txt_set_cursor_visible
|
||||
.public sjt_txt_set_font
|
||||
.public sjt_txt_get_sizes
|
||||
.public sjt_txt_set_border
|
||||
.public sjt_txt_set_border_color
|
||||
.public sjt_txt_put
|
||||
.public sjt_txt_print
|
||||
|
||||
.extern int_enable_all
|
||||
.extern int_disable_all
|
||||
.extern int_disable
|
||||
.extern int_enable
|
||||
.extern int_register
|
||||
.extern int_pending
|
||||
.extern get_info
|
||||
.extern int_clear
|
||||
.extern chan_read_b
|
||||
.extern chan_read
|
||||
.extern chan_readline
|
||||
.extern chan_write_b
|
||||
.extern chan_write
|
||||
.extern chan_status
|
||||
.extern chan_flush
|
||||
.extern chan_seek
|
||||
.extern chan_ioctrl
|
||||
.extern chan_open
|
||||
.extern chan_close
|
||||
.extern chan_swap
|
||||
.extern chan_device
|
||||
.extern bdev_register
|
||||
.extern bdev_read
|
||||
.extern bdev_write
|
||||
.extern bdev_status
|
||||
.extern bdev_flush
|
||||
.extern bdev_ioctrl
|
||||
.extern mem_get_ramtop
|
||||
.extern mem_reserve
|
||||
.extern time_jiffies
|
||||
.extern rtc_set_time
|
||||
.extern rtc_get_time
|
||||
.extern kbd_scancode
|
||||
.extern err_message
|
||||
.extern kbd_layout
|
||||
.extern var_set
|
||||
.extern var_get
|
||||
.extern txt_get_capabilities
|
||||
.extern txt_set_mode
|
||||
.extern txt_setsizes
|
||||
.extern txt_set_xy
|
||||
.extern txt_get_xy
|
||||
.extern txt_get_region
|
||||
.extern txt_set_region
|
||||
.extern txt_set_color
|
||||
.extern txt_get_color
|
||||
.extern txt_set_cursor_visible
|
||||
.extern txt_set_font
|
||||
.extern txt_get_sizes
|
||||
.extern txt_set_border
|
||||
.extern txt_set_border_color
|
||||
.extern txt_put
|
||||
.extern txt_print
|
||||
|
||||
.section jumptable
|
||||
|
||||
sjt_int_enable_all: jmp long:int_enable_all
|
||||
sjt_int_disable_all: jmp long:int_disable_all
|
||||
sjt_int_disable: jmp long:int_disable
|
||||
sjt_int_enable: jmp long:int_enable
|
||||
sjt_int_register: jmp long:int_register
|
||||
sjt_int_pending: jmp long:int_pending
|
||||
sjt_get_info: jmp long:get_info
|
||||
sjt_int_clear: jmp long:int_clear
|
||||
sjt_chan_read_b: jmp long:chan_read_b
|
||||
sjt_chan_read: jmp long:chan_read
|
||||
sjt_chan_readline: jmp long:chan_readline
|
||||
sjt_chan_write_b: jmp long:chan_write_b
|
||||
sjt_chan_write: jmp long:chan_write
|
||||
sjt_chan_status: jmp long:chan_status
|
||||
sjt_chan_flush: jmp long:chan_flush
|
||||
sjt_chan_seek: jmp long:chan_seek
|
||||
sjt_chan_ioctrl: jmp long:chan_ioctrl
|
||||
sjt_chan_open: jmp long:chan_open
|
||||
sjt_chan_close: jmp long:chan_close
|
||||
sjt_chan_swap: jmp long:chan_swap
|
||||
sjt_chan_device: jmp long:chan_device
|
||||
sjt_bdev_register: jmp long:bdev_register
|
||||
sjt_bdev_read: jmp long:bdev_read
|
||||
sjt_bdev_write: jmp long:bdev_write
|
||||
sjt_bdev_status: jmp long:bdev_status
|
||||
sjt_bdev_flush: jmp long:bdev_flush
|
||||
sjt_bdev_ioctrl: jmp long:bdev_ioctrl
|
||||
sjt_mem_get_ramtop: jmp long:mem_get_ramtop
|
||||
sjt_mem_reserve: jmp long:mem_reserve
|
||||
sjt_time_jiffies: jmp long:time_jiffies
|
||||
sjt_rtc_set_time: jmp long:rtc_set_time
|
||||
sjt_rtc_get_time: jmp long:rtc_get_time
|
||||
sjt_kbd_scancode: jmp long:kbd_scancode
|
||||
sjt_err_message: jmp long:err_message
|
||||
sjt_kbd_layout: jmp long:kbd_layout
|
||||
sjt_var_set: jmp long:var_set
|
||||
sjt_var_get: jmp long:var_get
|
||||
sjt_txt_get_capabilities: jmp long:txt_get_capabilities
|
||||
sjt_txt_set_mode: jmp long:txt_set_mode
|
||||
sjt_txt_setsizes: jmp long:txt_setsizes
|
||||
sjt_txt_set_xy: jmp long:txt_set_xy
|
||||
sjt_txt_get_xy: jmp long:txt_get_xy
|
||||
sjt_txt_get_region: jmp long:txt_get_region
|
||||
sjt_txt_set_region: jmp long:txt_set_region
|
||||
sjt_txt_set_color: jmp long:txt_set_color
|
||||
sjt_txt_get_color: jmp long:txt_get_color
|
||||
sjt_txt_set_cursor_visible: jmp long:txt_set_cursor_visible
|
||||
sjt_txt_set_font: jmp long:txt_set_font
|
||||
sjt_txt_get_sizes: jmp long:txt_get_sizes
|
||||
sjt_txt_set_border: jmp long:txt_set_border
|
||||
sjt_txt_set_border_color: jmp long:txt_set_border_color
|
||||
sjt_txt_put: jmp long:txt_put
|
||||
sjt_txt_print: jmp long:txt_print
|
24
src/C256/ld_lc_c256_fmx.scm
Normal file
24
src/C256/ld_lc_c256_fmx.scm
Normal file
|
@ -0,0 +1,24 @@
|
|||
(define memories
|
||||
'((memory flash (address (#x390000 . #x3fffff))
|
||||
(type rom))
|
||||
(memory DirectPage (address (#x000000 . #x0000ff))
|
||||
(section (registers ztiny)))
|
||||
(memory LoRAM (address (#x004000 . #x008fff))
|
||||
(section stack data zdata data heap))
|
||||
(memory NearRAM1 (address (#x010000 . #x017fff))
|
||||
(section znear near))
|
||||
(memory NearRAM2 (address (#x018000 . #x01ffff))
|
||||
(section cnear))
|
||||
(memory FarRAM1 (address (#x020000 . #x02ffff))
|
||||
(section far huge))
|
||||
(memory FarRAM2 (address (#x030000 . #x03ffff))
|
||||
(section zfar zhuge ))
|
||||
(memory LoCODE (address (#x00a000 . #x00efff))
|
||||
(section code cdata jumptable))
|
||||
(memory Vector (address (#x00ffe0 . #x00ffff))
|
||||
(section (reset #xfffc)))
|
||||
(block stack (size #x1000))
|
||||
(block heap (size #x1000))
|
||||
(base-address _DirectPageStart DirectPage 0)
|
||||
(base-address _NearBaseAddress NearRAM1 0)
|
||||
))
|
163
src/C256/syscalls.s
Normal file
163
src/C256/syscalls.s
Normal file
|
@ -0,0 +1,163 @@
|
|||
.public sys_int_enable_all
|
||||
.public sys_int_disable_all
|
||||
.public sys_int_disable
|
||||
.public sys_int_enable
|
||||
.public sys_int_register
|
||||
.public sys_int_pending
|
||||
.public sys_get_info
|
||||
.public sys_int_clear
|
||||
.public sys_chan_read_b
|
||||
.public sys_chan_read
|
||||
.public sys_chan_readline
|
||||
.public sys_chan_write_b
|
||||
.public sys_chan_write
|
||||
.public sys_chan_status
|
||||
.public sys_chan_flush
|
||||
.public sys_chan_seek
|
||||
.public sys_chan_ioctrl
|
||||
.public sys_chan_open
|
||||
.public sys_chan_close
|
||||
.public sys_chan_swap
|
||||
.public sys_chan_device
|
||||
.public sys_bdev_register
|
||||
.public sys_bdev_read
|
||||
.public sys_bdev_write
|
||||
.public sys_bdev_status
|
||||
.public sys_bdev_flush
|
||||
.public sys_bdev_ioctrl
|
||||
.public sys_mem_get_ramtop
|
||||
.public sys_mem_reserve
|
||||
.public sys_time_jiffies
|
||||
.public sys_rtc_set_time
|
||||
.public sys_rtc_get_time
|
||||
.public sys_kbd_scancode
|
||||
.public sys_err_message
|
||||
.public sys_kbd_layout
|
||||
.public sys_var_set
|
||||
.public sys_var_get
|
||||
.public sys_txt_get_capabilities
|
||||
.public sys_txt_set_mode
|
||||
.public sys_txt_setsizes
|
||||
.public sys_txt_set_xy
|
||||
.public sys_txt_get_xy
|
||||
.public sys_txt_get_region
|
||||
.public sys_txt_set_region
|
||||
.public sys_txt_set_color
|
||||
.public sys_txt_get_color
|
||||
.public sys_txt_set_cursor_visible
|
||||
.public sys_txt_set_font
|
||||
.public sys_txt_get_sizes
|
||||
.public sys_txt_set_border
|
||||
.public sys_txt_set_border_color
|
||||
.public sys_txt_put
|
||||
.public sys_txt_print
|
||||
|
||||
.extern sjt_int_enable_all
|
||||
.extern sjt_int_disable_all
|
||||
.extern sjt_int_disable
|
||||
.extern sjt_int_enable
|
||||
.extern sjt_int_register
|
||||
.extern sjt_int_pending
|
||||
.extern sjt_get_info
|
||||
.extern sjt_int_clear
|
||||
.extern sjt_chan_read_b
|
||||
.extern sjt_chan_read
|
||||
.extern sjt_chan_readline
|
||||
.extern sjt_chan_write_b
|
||||
.extern sjt_chan_write
|
||||
.extern sjt_chan_status
|
||||
.extern sjt_chan_flush
|
||||
.extern sjt_chan_seek
|
||||
.extern sjt_chan_ioctrl
|
||||
.extern sjt_chan_open
|
||||
.extern sjt_chan_close
|
||||
.extern sjt_chan_swap
|
||||
.extern sjt_chan_device
|
||||
.extern sjt_bdev_register
|
||||
.extern sjt_bdev_read
|
||||
.extern sjt_bdev_write
|
||||
.extern sjt_bdev_status
|
||||
.extern sjt_bdev_flush
|
||||
.extern sjt_bdev_ioctrl
|
||||
.extern sjt_mem_get_ramtop
|
||||
.extern sjt_mem_reserve
|
||||
.extern sjt_time_jiffies
|
||||
.extern sjt_rtc_set_time
|
||||
.extern sjt_rtc_get_time
|
||||
.extern sjt_kbd_scancode
|
||||
.extern sjt_err_message
|
||||
.extern sjt_kbd_layout
|
||||
.extern sjt_var_set
|
||||
.extern sjt_var_get
|
||||
.extern sjt_txt_get_capabilities
|
||||
.extern sjt_txt_set_mode
|
||||
.extern sjt_txt_setsizes
|
||||
.extern sjt_txt_set_xy
|
||||
.extern sjt_txt_get_xy
|
||||
.extern sjt_txt_get_region
|
||||
.extern sjt_txt_set_region
|
||||
.extern sjt_txt_set_color
|
||||
.extern sjt_txt_get_color
|
||||
.extern sjt_txt_set_cursor_visible
|
||||
.extern sjt_txt_set_font
|
||||
.extern sjt_txt_get_sizes
|
||||
.extern sjt_txt_set_border
|
||||
.extern sjt_txt_set_border_color
|
||||
.extern sjt_txt_put
|
||||
.extern sjt_txt_print
|
||||
|
||||
.section farcode
|
||||
|
||||
sys_int_enable_all: jmp long:sjt_int_enable_all
|
||||
sys_int_disable_all: jmp long:sjt_int_disable_all
|
||||
sys_int_disable: jmp long:sjt_int_disable
|
||||
sys_int_enable: jmp long:sjt_int_enable
|
||||
sys_int_register: jmp long:sjt_int_register
|
||||
sys_int_pending: jmp long:sjt_int_pending
|
||||
sys_get_info: jmp long:sjt_get_info
|
||||
sys_int_clear: jmp long:sjt_int_clear
|
||||
sys_chan_read_b: jmp long:sjt_chan_read_b
|
||||
sys_chan_read: jmp long:sjt_chan_read
|
||||
sys_chan_readline: jmp long:sjt_chan_readline
|
||||
sys_chan_write_b: jmp long:sjt_chan_write_b
|
||||
sys_chan_write: jmp long:sjt_chan_write
|
||||
sys_chan_status: jmp long:sjt_chan_status
|
||||
sys_chan_flush: jmp long:sjt_chan_flush
|
||||
sys_chan_seek: jmp long:sjt_chan_seek
|
||||
sys_chan_ioctrl: jmp long:sjt_chan_ioctrl
|
||||
sys_chan_open: jmp long:sjt_chan_open
|
||||
sys_chan_close: jmp long:sjt_chan_close
|
||||
sys_chan_swap: jmp long:sjt_chan_swap
|
||||
sys_chan_device: jmp long:sjt_chan_device
|
||||
sys_bdev_register: jmp long:sjt_bdev_register
|
||||
sys_bdev_read: jmp long:sjt_bdev_read
|
||||
sys_bdev_write: jmp long:sjt_bdev_write
|
||||
sys_bdev_status: jmp long:sjt_bdev_status
|
||||
sys_bdev_flush: jmp long:sjt_bdev_flush
|
||||
sys_bdev_ioctrl: jmp long:sjt_bdev_ioctrl
|
||||
sys_mem_get_ramtop: jmp long:sjt_mem_get_ramtop
|
||||
sys_mem_reserve: jmp long:sjt_mem_reserve
|
||||
sys_time_jiffies: jmp long:sjt_time_jiffies
|
||||
sys_rtc_set_time: jmp long:sjt_rtc_set_time
|
||||
sys_rtc_get_time: jmp long:sjt_rtc_get_time
|
||||
sys_kbd_scancode: jmp long:sjt_kbd_scancode
|
||||
sys_err_message: jmp long:sjt_err_message
|
||||
sys_kbd_layout: jmp long:sjt_kbd_layout
|
||||
sys_var_set: jmp long:sjt_var_set
|
||||
sys_var_get: jmp long:sjt_var_get
|
||||
sys_txt_get_capabilities: jmp long:sjt_txt_get_capabilities
|
||||
sys_txt_set_mode: jmp long:sjt_txt_set_mode
|
||||
sys_txt_setsizes: jmp long:sjt_txt_setsizes
|
||||
sys_txt_set_xy: jmp long:sjt_txt_set_xy
|
||||
sys_txt_get_xy: jmp long:sjt_txt_get_xy
|
||||
sys_txt_get_region: jmp long:sjt_txt_get_region
|
||||
sys_txt_set_region: jmp long:sjt_txt_set_region
|
||||
sys_txt_set_color: jmp long:sjt_txt_set_color
|
||||
sys_txt_get_color: jmp long:sjt_txt_get_color
|
||||
sys_txt_set_cursor_visible: jmp long:sjt_txt_set_cursor_visible
|
||||
sys_txt_set_font: jmp long:sjt_txt_set_font
|
||||
sys_txt_get_sizes: jmp long:sjt_txt_get_sizes
|
||||
sys_txt_set_border: jmp long:sjt_txt_set_border
|
||||
sys_txt_set_border_color: jmp long:sjt_txt_set_border_color
|
||||
sys_txt_put: jmp long:sjt_txt_put
|
||||
sys_txt_print: jmp long:sjt_txt_print
|
79
src/C256/syscalls.txt
Normal file
79
src/C256/syscalls.txt
Normal file
|
@ -0,0 +1,79 @@
|
|||
# A list of system calls to be used to autogenerate the various jump tables and sys calls stubs\
|
||||
|
||||
# proc_exit
|
||||
int_enable_all
|
||||
int_disable_all
|
||||
int_disable
|
||||
int_enable
|
||||
int_register
|
||||
int_pending
|
||||
get_info
|
||||
int_clear
|
||||
|
||||
chan_read_b
|
||||
chan_read
|
||||
chan_readline
|
||||
chan_write_b
|
||||
chan_write
|
||||
chan_status
|
||||
chan_flush
|
||||
chan_seek
|
||||
chan_ioctrl
|
||||
chan_open
|
||||
chan_close
|
||||
chan_swap
|
||||
chan_device
|
||||
|
||||
bdev_register
|
||||
bdev_read
|
||||
bdev_write
|
||||
bdev_status
|
||||
bdev_flush
|
||||
bdev_ioctrl
|
||||
|
||||
# fsys_open
|
||||
# fsys_close
|
||||
# fsys_opendir
|
||||
# fsys_closedir
|
||||
# fsys_readdir
|
||||
# fsys_findfirst
|
||||
# fsys_findnext
|
||||
# fsys_get_label
|
||||
# fsys_set_label
|
||||
# fsys_mkdir
|
||||
# fsys_delete
|
||||
# fsys_rename
|
||||
# fsys_set_cwd
|
||||
# fsys_get_cwd
|
||||
# fsys_load
|
||||
# fsys_register_loader
|
||||
# fsys_stat
|
||||
|
||||
mem_get_ramtop
|
||||
mem_reserve
|
||||
time_jiffies
|
||||
rtc_set_time
|
||||
rtc_get_time
|
||||
kbd_scancode
|
||||
err_message
|
||||
kbd_layout
|
||||
# proc_run
|
||||
var_set
|
||||
var_get
|
||||
|
||||
txt_get_capabilities
|
||||
txt_set_mode
|
||||
txt_setsizes
|
||||
txt_set_xy
|
||||
txt_get_xy
|
||||
txt_get_region
|
||||
txt_set_region
|
||||
txt_set_color
|
||||
txt_get_color
|
||||
txt_set_cursor_visible
|
||||
txt_set_font
|
||||
txt_get_sizes
|
||||
txt_set_border
|
||||
txt_set_border_color
|
||||
txt_put
|
||||
txt_print
|
40
src/C256/syscalls_c256.c
Normal file
40
src/C256/syscalls_c256.c
Normal file
|
@ -0,0 +1,40 @@
|
|||
#include "syscalls.h"
|
||||
#include "interrupt.h"
|
||||
#include "sys_general.h"
|
||||
#include "timers.h"
|
||||
#include "dev/channel.h"
|
||||
#include "dev/block.h"
|
||||
#include "dev/ps2.h"
|
||||
#include "dev/rtc.h"
|
||||
|
||||
/**
|
||||
* @brief Translation file to map system calls into the irregularly named implementations.
|
||||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
* Get the number of jiffies since the system last booted.
|
||||
*
|
||||
* Returns:
|
||||
* the number of jiffies since the last reset
|
||||
*/
|
||||
long time_jiffies() {
|
||||
return timers_jiffies();
|
||||
}
|
||||
|
||||
/*
|
||||
* Fill out a s_sys_info structure with the information about the current system
|
||||
*
|
||||
* Inputs:
|
||||
* info = pointer to a s_sys_info structure to fill out
|
||||
*/
|
||||
void get_info(p_sys_info info) {
|
||||
sys_get_information(info);
|
||||
}
|
||||
|
||||
/*
|
||||
* Return the next scan code from the keyboard... 0 if nothing pending
|
||||
*/
|
||||
unsigned short kbd_scancode() {
|
||||
return kbd_get_scancode();
|
||||
}
|
282
src/Makefile
282
src/Makefile
|
@ -1,11 +1,17 @@
|
|||
|
||||
#
|
||||
# User may over-ride the UNIT and MEMORY parameters to specify target machine
|
||||
# and where the MCP will run (ram or flash)
|
||||
#
|
||||
UNIT := a2560x
|
||||
MEMORY := flash
|
||||
UNIT := C256U_PLUS
|
||||
MEMORY := ram
|
||||
|
||||
# The script expects the following environment variables to be set:
|
||||
# VBCC: path to VBCC distribution
|
||||
|
||||
#UNIT := C256U_PLUS
|
||||
#MEMORY := RAM
|
||||
|
||||
# The below doesn't seem true !
|
||||
# CPU_WDC65816 0x16 /* CPU code for the Western Design Center 65816 */
|
||||
# CPU_M68000 0x20 /* CPU code for the Motorola 68000 */
|
||||
# CPU_M68010 0x21 /* CPU code for the Motorola 68010 */
|
||||
|
@ -23,154 +29,234 @@ MEMORY := flash
|
|||
# MODEL_FOENIX_A2560U 9
|
||||
# MODEL_FOENIX_A2560K 11
|
||||
|
||||
# Determine target CPU and MODEL based on the UNIT
|
||||
# The comments are on a separate line to avoid inserting white space in the commande line where these variables are used
|
||||
# Unit-specific properties ----------------------------------------------------
|
||||
|
||||
ifeq ($(UNIT),a2560k)
|
||||
# M68040V
|
||||
export CPU_NUMBER = 6
|
||||
# VASM CPU flag
|
||||
export VASM_CPU = -m68040
|
||||
# VBCC CPU flag
|
||||
export VBCC_CPU = 68040
|
||||
# A2560K
|
||||
export MODEL_NUMBER = 11
|
||||
export cpu = m68040
|
||||
MODEL_NUMBER = 11
|
||||
CPU = m68040
|
||||
|
||||
else ifeq ($(UNIT),genx)
|
||||
# M68040V
|
||||
export CPU_NUMBER = 6
|
||||
# VASM CPU flag
|
||||
export VASM_CPU = -m68040
|
||||
# VBCC CPU flag
|
||||
export VBCC_CPU = 68040
|
||||
# GenX
|
||||
export MODEL_NUMBER = 4
|
||||
export cpu = m68040
|
||||
MODEL_NUMBER = 4
|
||||
CPU = m68040
|
||||
|
||||
else ifeq ($(UNIT),a2560x)
|
||||
# M68040V
|
||||
export CPU_NUMBER = 6
|
||||
# VASM CPU flag
|
||||
export VASM_CPU = -m68040
|
||||
# VBCC CPU flag
|
||||
export VBCC_CPU = 68040
|
||||
# A2560X
|
||||
export MODEL_NUMBER = 8
|
||||
export cpu = m68040
|
||||
MODEL_NUMBER = 8
|
||||
CPU = m68040
|
||||
|
||||
else ifeq ($(UNIT),a2560u)
|
||||
# M680SEC00
|
||||
export CPU_NUMBER = 0
|
||||
# VASM CPU flag
|
||||
export VASM_CPU = -m68000
|
||||
# VBCC CPU flag
|
||||
export VBCC_CPU = 68000
|
||||
export MODEL_NUMBER = 9
|
||||
export cpu = m68k
|
||||
MODEL_NUMBER = 9
|
||||
CPU = m68k
|
||||
|
||||
else ifeq ($(UNIT),C256U)
|
||||
CPU = w65816
|
||||
MODEL_NUMBER = 1
|
||||
SRCS_FOR_UNIT =
|
||||
LDFLAGS_FOR_UNIT = C256/ld_lc_c256_u.scm clib-lc-ld.a
|
||||
|
||||
else ifeq ($(UNIT),C256U_PLUS)
|
||||
MODEL_NUMBER = 5
|
||||
CPU = w65816
|
||||
SRCS_FOR_UNIT = C256/jumptable.s C256/syscalls.s C256/syscalls_c256.c C256/io_stubs.c
|
||||
LDFLAGS_FOR_UNIT = C256/ld_lc_c256_fmx.scm clib-lc-ld.a --rtattr printf=medium
|
||||
|
||||
else ifeq ($(UNIT),C256_FMX)
|
||||
CPU = w65816
|
||||
MODEL_NUMBER = 0
|
||||
SRCS_FOR_UNIT =
|
||||
LDFLAGS_FOR_UNIT = C256/ld_lc_c256_fmx.scm clib-lc-ld.a
|
||||
endif
|
||||
|
||||
# Determine the correct configuration file (barring OS)
|
||||
|
||||
ifeq ($(MEMORY),ram)
|
||||
export CFG_FILE = $(VBCC)/config/$(UNIT)_ram
|
||||
else
|
||||
export CFG_FILE = $(VBCC)/config/$(UNIT)_flash
|
||||
|
||||
# Common defines and includes -------------------------------------------------
|
||||
DEFINES = # -DKBD_POLLED
|
||||
ifeq ("$(CPU)","w65816")
|
||||
CPU_NUMBER = 255
|
||||
else ifeq ("$(CPU)","m68040") # M68040V or 68040
|
||||
CPU_NUMBER = 6
|
||||
else ifeq ("$(CPU)","m68000") # M68000 or 68SEC000
|
||||
CPU_NUMBER = 0
|
||||
endif
|
||||
|
||||
export AS = vasmm68k_mot
|
||||
export ASFLAGS = $(VASM_CPU) -quiet -Fvobj -nowarn=62 -DMODEL=$(MODEL_NUMBER)
|
||||
export CC = vc
|
||||
DEFINES = -DCPU=$(CPU_NUMBER) -DMODEL=$(MODEL_NUMBER) # -DKBD_POLLED
|
||||
|
||||
# Logging level
|
||||
DEFINES := $(DEFINES) -DCPU=$(CPU_NUMBER) -DMODEL=$(MODEL_NUMBER)
|
||||
ifeq ("$(DEFAULT_LOG_LEVEL)","")
|
||||
else
|
||||
DEFINES := $(DEFINES) -DDEFAULT_LOG_LEVEL=$(DEFAULT_LOG_LEVEL)
|
||||
endif
|
||||
INCLUDES = -I. -I$(CURDIR)/include -I$(CURDIR)
|
||||
|
||||
export DEFINES:=$(DEFINES)
|
||||
|
||||
# When compiling an image for flash, size to which the image must be padded
|
||||
PAD_FLASH_SIZE=524288
|
||||
# Toolchain selection ---------------------------------------------------------
|
||||
ifeq ($(CPU),w65816)
|
||||
TOOLCHAIN = calypsi
|
||||
else
|
||||
TOOLCHAIN = vbcc
|
||||
endif
|
||||
|
||||
|
||||
# Toolchain specific settings -------------------------------------------------
|
||||
ifeq ($(TOOLCHAIN),calypsi)
|
||||
CC = cc65816
|
||||
AS = as65816
|
||||
LD = ln65816
|
||||
AR = nlib
|
||||
|
||||
# Determine the correct configuration file (barring OS)
|
||||
ifeq ($(MEMORY),ram)
|
||||
LD_OUTPUT_TYPE = s37
|
||||
else
|
||||
LD_OUTPUT_TYPE = # TODO
|
||||
endif
|
||||
|
||||
CFLAGS = -l --target Foenix --code-model large --data-model large
|
||||
LDFLAGS=--target foenix --output-format $(LD_OUTPUT_TYPE) --list-file foenixmcp.map
|
||||
else
|
||||
CC = vc
|
||||
AS = vasmm68k_mot
|
||||
|
||||
# VBCC
|
||||
ifeq ("$(CPU)","m68000")
|
||||
VASM_CPU = -m68000
|
||||
VBCC_CPU = m68000
|
||||
else ifeq ("$(CPU)","m68040")
|
||||
VASM_CPU = -m68040
|
||||
VBCC_CPU = 68040
|
||||
endif
|
||||
|
||||
# Determine the correct configuration file (barring OS)
|
||||
ifeq ($(MEMORY),ram)
|
||||
CFG_FILE = $(VBCC)/config/$(UNIT)_ram
|
||||
else
|
||||
CFG_FILE = $(VBCC)/config/$(UNIT)_flash
|
||||
endif
|
||||
ifneq ($(OS),Windows_NT)
|
||||
CFG_FILE := $(CFG_FILE)_linux
|
||||
endif
|
||||
|
||||
ASFLAGS = -Fvobj -nowarn=62 $(VASM_CPU) -quiet
|
||||
CFLAGS =-c -S -cpu=$(VBCC_CPU) +$(CFG_FILE)
|
||||
LDFLAGS = +$(CFG_FILE)
|
||||
endif
|
||||
|
||||
|
||||
|
||||
|
||||
# Define OS-dependent tools ---------------------------------------------------
|
||||
ifeq ("$(PAD_FLASH_SIZE)","")
|
||||
# When compiling an image for flash, size to which the image must be padded
|
||||
PAD_FLASH_SIZE = 524288
|
||||
endif
|
||||
ifeq ($(OS),Windows_NT)
|
||||
export CFLAGS = -cpu=$(VBCC_CPU) +$(CFG_FILE) -I. -I$(CURDIR)/include -I$(CURDIR)
|
||||
export RM = cmd /C del /Q /F
|
||||
RM = del /F/Q
|
||||
PAD_CMD = fsutil seteof $@ $(PAD_FLASH_SIZE)
|
||||
else
|
||||
export CFLAGS = -cpu=$(VBCC_CPU) +$(CFG_FILE)_linux -I. -I$(CURDIR)/include -I$(CURDIR)
|
||||
export RM = rm -f
|
||||
RM = rm -f
|
||||
PAD_CMD = truncate -s $(PAD_FLASH_SIZE) $@
|
||||
endif
|
||||
|
||||
cpu_assembly_src := $(wildcard $(cpu)/*.s)
|
||||
cpu_c_src := $(wildcard $(cpu)/*.c)
|
||||
cpu_assembly_obj := $(subst .s,.o,$(cpu_assembly_src))
|
||||
cpu_c_obj := $(subst .c,.o,$(cpu_c_src))
|
||||
ASFLAGS := $(ASFLAGS) $(DEFINES) $(INCLUDES)
|
||||
CFLAGS := $(CFLAGS) $(DEFINES) $(INCLUDES)
|
||||
LDFLAGS := $(LDFLAGS) $(LDFLAGS_FOR_UNIT)
|
||||
|
||||
dev_base_sources = dev/block.c dev/channel.c dev/console.c dev/fsys.c dev/pata.c dev/ps2.c dev/rtc.c dev/sdc.c dev/txt_screen.c dev/uart.c
|
||||
# New make file (calypsu/makefile per folder)
|
||||
SRCS = foenixmcp.c log.c memory.c ring_buffer.c simpleio.c sys_general.c variables.c utilities.c $(SRCS_FOR_UNIT)
|
||||
OBJS = $(patsubst %.s,%.o,$(patsubst %.c,%.o,$(SRCS)))
|
||||
OBJS_TO_CLEAN = $(subst /,\\,$(OBJS))
|
||||
LIBS = dev/devices.a snd/sound.a fatfs/fatfs.a
|
||||
|
||||
# Old makefile (VBCC)
|
||||
cpu_s_src := $(wildcard $(CPU)/*.s)
|
||||
cpu_c_src := $(wildcard $(CPU)/*.c)
|
||||
cpu_c_obj := $(subst .c,.o,$(cpu_c_src)) $(subst .s,.o,$(cpu_s_src))
|
||||
|
||||
# Device drivers
|
||||
dev_c_src = block.c channel.c console.c fsys.c pata.c ps2.c rtc.c sdc.c txt_screen.c uart.c
|
||||
dev_s_src =
|
||||
ifeq ($(UNIT),a2560k)
|
||||
dev_c_src := $(dev_base_sources) dev/fdc.c dev/kbd_mo.c dev/lpt.c dev/midi.c dev/txt_a2560k_a.o dev/txt_a2560k_b.o m68040/fdc_m68040.o
|
||||
dev_c_src := $(dev_c_src) fdc.c kbd_mo.c lpt.c midi.c txt_a2560k_a.c txt_a2560k_b.c m68040/fdc_m68040.c
|
||||
dev_s_src := $(dev_s_src)
|
||||
else ifeq ($(UNIT),genx)
|
||||
dev_c_src := $(dev_base_sources) dev/fdc.c dev/lpt.c dev/midi.c dev/txt_a2560k_a.o dev/txt_a2560k_b.o m68040/fdc_m68040.o
|
||||
dev_c_src := $(dev_c_src) fdc.c lpt.c midi.c txt_a2560k_a.c txt_a2560k_b.c #m68040/fdc_m68040.c
|
||||
else ifeq ($(UNIT),a2560x)
|
||||
dev_c_src := $(dev_base_sources) dev/fdc.c dev/lpt.c dev/midi.c dev/txt_a2560k_a.o dev/txt_a2560k_b.o m68040/fdc_m68040.o
|
||||
dev_c_src := $(dev_c_src) fdc.c lpt.c midi.c txt_a2560k_a.c txt_a2560k_b.c #m68040/fdc_m68040.c
|
||||
else ifeq ($(UNIT),a2560u)
|
||||
dev_c_src := $(dev_base_sources) dev/txt_a2560u.o
|
||||
else
|
||||
dev_c_src := $(dev_base_sources)
|
||||
dev_c_src := $(dev_c_src) txt_a2560u.o
|
||||
endif
|
||||
dev_c_obj := $(subst .c,.o,$(dev_c_src))
|
||||
dev_obj := $(addprefix dev/, $(subst .c,.o,$(dev_c_src))) $(addprefix dev/, $(subst .s,.o,$(dev_s_src)))
|
||||
|
||||
snd_c_src := $(wildcard snd/*.c)
|
||||
snd_c_obj := $(subst .c,.o,$(snd_c_src))
|
||||
# Sound drivers
|
||||
snd_c_src = codec.c psg.c sid.c yamaha.c
|
||||
ifeq ($(UNIT),C256_FMX)
|
||||
snd_c_src = $(snd_c_src) codec_c256.c
|
||||
endif
|
||||
snd_obj := $(addprefix snd/, $(subst .c,.o,$(snd_c_src)))
|
||||
|
||||
# File system
|
||||
fat_c_src := $(wildcard fatfs/*.c)
|
||||
fat_c_obj := $(subst .c,.o,$(fat_c_src))
|
||||
fatfs_obj := $(subst .c,.o,$(fat_c_src))
|
||||
|
||||
# Command Line Interface
|
||||
cli_c_src := $(wildcard cli/*.c)
|
||||
cli_c_obj := $(subst .c,.o,$(cli_c_src))
|
||||
cli_obj := $(subst .c,.o,$(cli_c_src))
|
||||
|
||||
# Base MCP files
|
||||
c_src := $(wildcard *.c)
|
||||
c_obj := $(subst .c,.o,$(c_src))
|
||||
|
||||
.PHONY: all $(cpu) dev fatfs snd cli
|
||||
.PHONY: all clean $(CPU) dev fatfs snd cli
|
||||
|
||||
# Target selection ------------------------------------------------------------
|
||||
ifeq ($(MEMORY),ram)
|
||||
all: foenixmcp.s68 $(cpu) dev snd cli
|
||||
# ifeq ($(CPU),"w65816")
|
||||
#all:foenixmcp.s37
|
||||
# else
|
||||
all: foenixmcp.s68 $(CPU) dev snd cli
|
||||
# endif
|
||||
else
|
||||
all: foenixmcp.bin $(cpu) dev snd cli
|
||||
all: foenixmcp.bin $(CPU) dev snd cli
|
||||
endif
|
||||
|
||||
$(cpu):
|
||||
$(MAKE) --directory=$@
|
||||
# Per-folder libraries (used by Calypsi)
|
||||
foenixmcp.s37: $(OBJS) $(LIBS)
|
||||
@echo Making $@
|
||||
$(LD) $(LDFLAGS) -o $@ $^
|
||||
|
||||
dev:
|
||||
$(MAKE) --directory=dev
|
||||
|
||||
fatfs:
|
||||
$(MAKE) --directory=fatfs
|
||||
DEPS = $(c_obj) $(dev_obj) $(fatfs_obj) $(snd_obj) $(cli_obj) $(cpu_c_obj)
|
||||
|
||||
snd:
|
||||
$(MAKE) --directory=snd
|
||||
# The startup file is already specified in the linker script, so we should not include it in the list of files to link
|
||||
STARTUP_OBJ=$(CPU)/startup_$(CPU).o
|
||||
|
||||
cli:
|
||||
$(MAKE) --directory=cli
|
||||
foenixmcp.s68: $(DEPS)
|
||||
$(CC) $(LDFLAGS) -o $@ $(subst $(STARTUP_OBJ),,$^)
|
||||
|
||||
foenixmcp.s68: $(c_obj) $(cpu) dev fatfs snd cli
|
||||
$(CC) $(CFLAGS) $(DEFINES) -o foenixmcp.s68 $(c_obj) $(cpu_c_obj) $(dev_c_obj) $(fat_c_obj) $(snd_c_obj) $(cli_c_obj)
|
||||
foenixmcp.bin: $(DEPS)
|
||||
@echo Making $@
|
||||
|
||||
foenixmcp.bin: $(c_obj) $(cpu) dev fatfs snd cli
|
||||
$(CC) $(CFLAGS) $(DEFINES) -o foenixmcp.bin $(c_obj) $(cpu_c_obj) $(dev_c_obj) $(fat_c_obj) $(snd_c_obj) $(cli_c_obj)
|
||||
$(CC) $(LDFLAGS) -o $@ $^
|
||||
$(PAD_CMD)
|
||||
|
||||
%.o: %.c $(DEPS)
|
||||
$(CC) -S -c -o $@ $< $(CFLAGS) $(DEFINES)
|
||||
|
||||
.PHONEY: clean
|
||||
ifeq ($(TOOLCHAIN),calypsi)
|
||||
# Build the object files from C
|
||||
%.o: %.c
|
||||
$(CC) -o $@ $^ $(CFLAGS)
|
||||
|
||||
# Build the object files from assembly
|
||||
%.o: %.s
|
||||
$(AS) -o $@ $(ASFLAGS) $^
|
||||
else
|
||||
%.o: %.c
|
||||
$(CC) -o $@ $< $(CFLAGS)
|
||||
|
||||
%.o: %.s
|
||||
$(AS) -o $@ $< $(ASFLAGS)
|
||||
endif
|
||||
|
||||
# Clean up after a build
|
||||
clean:
|
||||
$(RM) *.s68 *.o *.asm
|
||||
$(MAKE) --directory=$(cpu) clean
|
||||
$(RM) $(OBJS_TO_CLEAN) foenixmcp.s37 *.lst *.map
|
||||
$(MAKE) --directory=$(CPU) clean
|
||||
$(MAKE) --directory=cli clean
|
||||
$(MAKE) --directory=dev clean
|
||||
$(MAKE) --directory=fatfs clean
|
||||
$(MAKE) --directory=snd clean
|
||||
$(MAKE) --directory=cli clean
|
||||
|
|
76
src/Makefile.PeterC256
Normal file
76
src/Makefile.PeterC256
Normal file
|
@ -0,0 +1,76 @@
|
|||
|
||||
UNIT := C256U_PLUS
|
||||
MEMORY := RAM
|
||||
|
||||
# Define OS-dependent variables
|
||||
|
||||
ifeq ($(OS),Windows_NT)
|
||||
RM = del /F/Q
|
||||
else
|
||||
RM = rm -f
|
||||
endif
|
||||
|
||||
# Define model-specific variables, including tools, source files, compiler flags, etc.
|
||||
|
||||
ifeq ($(UNIT),C256U)
|
||||
CPU=w65816
|
||||
SRCS_FOR_UNIT=
|
||||
CFLAGS_FOR_UNIT=-DMODEL=1 -DCPU=255 --target Foenix --code-model large --data-model large
|
||||
LDFLAGS_FOR_UNIT=C256/ld_lc_c256_u.scm clib-lc-ld.a
|
||||
else ifeq ($(UNIT),C256U_PLUS)
|
||||
CPU=w65816
|
||||
SRCS_FOR_UNIT=C256/jumptable.s C256/syscalls.s C256/syscalls_c256.c C256/io_stubs.c
|
||||
CFLAGS_FOR_UNIT=-DMODEL=5 -DCPU=255 --target Foenix --code-model large --data-model large
|
||||
LDFLAGS_FOR_UNIT=C256/ld_lc_c256_fmx.scm clib-lc-ld.a --rtattr printf=medium
|
||||
else ifeq ($(UNIT),C256_FMX)
|
||||
CPU=w65816
|
||||
SRCS_FOR_UNIT=
|
||||
CFLAGS_FOR_UNIT=-DMODEL=0 -DCPU=255 --target Foenix --code-model large --data-model large
|
||||
LDFLAGS_FOR_UNIT=C256/ld_lc_c256_fmx.scm clib-lc-ld.a
|
||||
endif
|
||||
|
||||
ifeq ($(CPU),w65816)
|
||||
CC=cc65816
|
||||
AS=as65816
|
||||
LD=ln65816
|
||||
AR=nlib
|
||||
endif
|
||||
|
||||
INCLUDES=-I. -I./include
|
||||
CFLAGS=$(INCLUDES) $(CFLAGS_FOR_UNIT) -l
|
||||
ASFLAGS=$(INCLUDES)
|
||||
LDFLAGS=--target foenix --output-format s37 $(LDFLAGS_FOR_UNIT) --list-file foenixmcp.map
|
||||
|
||||
SRCS = foenixmcp.c log.c memory.c ring_buffer.c simpleio.c sys_general.c variables.c utilities.c $(SRCS_FOR_UNIT)
|
||||
OBJS = $(patsubst %.s,%.o,$(patsubst %.c,%.o,$(SRCS)))
|
||||
OBJS4RM = $(subst /,\\,$(OBJS))
|
||||
LIBS = dev/devices.a snd/sound.a fatfs/fatfs.a
|
||||
|
||||
.PHONY: clean
|
||||
|
||||
foenixmcp.s37: $(OBJS) $(LIBS)
|
||||
$(LD) $(LDFLAGS) -o $@ $^
|
||||
|
||||
dev/devices.a:
|
||||
$(MAKE) --directory=dev
|
||||
|
||||
snd/sound.a:
|
||||
$(MAKE) --directory=snd
|
||||
|
||||
fatfs/fatfs.a:
|
||||
$(MAKE) --directory=fatfs
|
||||
|
||||
# Build the object files from C
|
||||
%.o: %.c
|
||||
$(CC) $(CFLAGS) -o $@ $^
|
||||
|
||||
# Build the object files from assembly
|
||||
%.o: %.s
|
||||
$(AS) $(ASFLAGS) -o $@ $^
|
||||
|
||||
# Clean up after a build
|
||||
clean:
|
||||
$(RM) $(OBJS4RM) foenixmcp.s37 *.lst *.map
|
||||
$(MAKE) --directory=dev clean
|
||||
$(MAKE) --directory=snd clean
|
||||
$(MAKE) --directory=fatfs clean
|
176
src/Makefile_old
Normal file
176
src/Makefile_old
Normal file
|
@ -0,0 +1,176 @@
|
|||
|
||||
#
|
||||
# User may over-ride the UNIT and MEMORY parameters to specify target machine
|
||||
# and where the MCP will run (ram or flash)
|
||||
#
|
||||
UNIT := a2560x
|
||||
MEMORY := flash
|
||||
|
||||
# CPU_WDC65816 0x16 /* CPU code for the Western Design Center 65816 */
|
||||
# CPU_M68000 0x20 /* CPU code for the Motorola 68000 */
|
||||
# CPU_M68010 0x21 /* CPU code for the Motorola 68010 */
|
||||
# CPU_M68020 0x22 /* CPU code for the Motorola 68020 */
|
||||
# CPU_M68030 0x23 /* CPU code for the Motorola 68030 */
|
||||
# CPU_M68040 0x24 /* CPU code for the Motorola 68040 */
|
||||
# CPU_I486DX 0x34 /* CPU code for the Intel 486DX */
|
||||
|
||||
# MODEL_FOENIX_FMX 0
|
||||
# MODEL_FOENIX_C256U 1
|
||||
# MODEL_FOENIX_GENX 4
|
||||
# MODEL_FOENIX_C256U_PLUS 5
|
||||
# MODEL_FOENIX_A2560U_PLUS 6
|
||||
# MODEL_FOENIX_A2560X 8
|
||||
# MODEL_FOENIX_A2560U 9
|
||||
# MODEL_FOENIX_A2560K 11
|
||||
|
||||
# Determine target CPU and MODEL based on the UNIT
|
||||
# The comments are on a separate line to avoid inserting white space in the commande line where these variables are used
|
||||
|
||||
ifeq ($(UNIT),a2560k)
|
||||
# M68040V
|
||||
export CPU_NUMBER = 6
|
||||
# VASM CPU flag
|
||||
export VASM_CPU = -m68040
|
||||
# VBCC CPU flag
|
||||
export VBCC_CPU = 68040
|
||||
# A2560K
|
||||
export MODEL_NUMBER = 11
|
||||
export cpu = m68040
|
||||
|
||||
else ifeq ($(UNIT),genx)
|
||||
# M68040V
|
||||
export CPU_NUMBER = 6
|
||||
# VASM CPU flag
|
||||
export VASM_CPU = -m68040
|
||||
# VBCC CPU flag
|
||||
export VBCC_CPU = 68040
|
||||
# GenX
|
||||
export MODEL_NUMBER = 4
|
||||
export cpu = m68040
|
||||
|
||||
else ifeq ($(UNIT),a2560x)
|
||||
# M68040V
|
||||
export CPU_NUMBER = 6
|
||||
# VASM CPU flag
|
||||
export VASM_CPU = -m68040
|
||||
# VBCC CPU flag
|
||||
export VBCC_CPU = 68040
|
||||
# A2560X
|
||||
export MODEL_NUMBER = 8
|
||||
export cpu = m68040
|
||||
|
||||
else ifeq ($(UNIT),a2560u)
|
||||
# M680SEC00
|
||||
export CPU_NUMBER = 0
|
||||
# VASM CPU flag
|
||||
export VASM_CPU = -m68000
|
||||
# VBCC CPU flag
|
||||
export VBCC_CPU = 68000
|
||||
export MODEL_NUMBER = 9
|
||||
export cpu = m68k
|
||||
endif
|
||||
|
||||
# Determine the correct configuration file (barring OS)
|
||||
|
||||
ifeq ($(MEMORY),ram)
|
||||
export CFG_FILE = $(VBCC)/config/$(UNIT)_ram
|
||||
else
|
||||
export CFG_FILE = $(VBCC)/config/$(UNIT)_flash
|
||||
endif
|
||||
|
||||
export AS = vasmm68k_mot
|
||||
export ASFLAGS = $(VASM_CPU) -quiet -Fvobj -nowarn=62 -DMODEL=$(MODEL_NUMBER)
|
||||
export CC = vc
|
||||
DEFINES = -DCPU=$(CPU_NUMBER) -DMODEL=$(MODEL_NUMBER) # -DKBD_POLLED
|
||||
|
||||
# Logging level
|
||||
ifeq ("$(DEFAULT_LOG_LEVEL)","")
|
||||
else
|
||||
DEFINES := $(DEFINES) -DDEFAULT_LOG_LEVEL=$(DEFAULT_LOG_LEVEL)
|
||||
endif
|
||||
|
||||
export DEFINES:=$(DEFINES)
|
||||
|
||||
# When compiling an image for flash, size to which the image must be padded
|
||||
PAD_FLASH_SIZE=524288
|
||||
|
||||
ifeq ($(OS),Windows_NT)
|
||||
export CFLAGS = -cpu=$(VBCC_CPU) +$(CFG_FILE) -I. -I$(CURDIR)/include -I$(CURDIR)
|
||||
export RM = cmd /C del /Q /F
|
||||
PAD_CMD = fsutil seteof $@ $(PAD_FLASH_SIZE)
|
||||
else
|
||||
export CFLAGS = -cpu=$(VBCC_CPU) +$(CFG_FILE)_linux -I. -I$(CURDIR)/include -I$(CURDIR)
|
||||
export RM = rm -f
|
||||
PAD_CMD = truncate -s $(PAD_FLASH_SIZE) $@
|
||||
endif
|
||||
|
||||
cpu_assembly_src := $(wildcard $(cpu)/*.s)
|
||||
cpu_c_src := $(wildcard $(cpu)/*.c)
|
||||
cpu_assembly_obj := $(subst .s,.o,$(cpu_assembly_src))
|
||||
cpu_c_obj := $(subst .c,.o,$(cpu_c_src))
|
||||
|
||||
dev_base_sources = dev/block.c dev/channel.c dev/console.c dev/fsys.c dev/pata.c dev/ps2.c dev/rtc.c dev/sdc.c dev/txt_screen.c dev/uart.c
|
||||
ifeq ($(UNIT),a2560k)
|
||||
dev_c_src := $(dev_base_sources) dev/fdc.c dev/kbd_mo.c dev/lpt.c dev/midi.c dev/txt_a2560k_a.o dev/txt_a2560k_b.o m68040/fdc_m68040.o
|
||||
else ifeq ($(UNIT),genx)
|
||||
dev_c_src := $(dev_base_sources) dev/fdc.c dev/lpt.c dev/midi.c dev/txt_a2560k_a.o dev/txt_a2560k_b.o m68040/fdc_m68040.o
|
||||
else ifeq ($(UNIT),a2560x)
|
||||
dev_c_src := $(dev_base_sources) dev/fdc.c dev/lpt.c dev/midi.c dev/txt_a2560k_a.o dev/txt_a2560k_b.o m68040/fdc_m68040.o
|
||||
else ifeq ($(UNIT),a2560u)
|
||||
dev_c_src := $(dev_base_sources) dev/txt_a2560u.o
|
||||
else
|
||||
dev_c_src := $(dev_base_sources)
|
||||
endif
|
||||
dev_c_obj := $(subst .c,.o,$(dev_c_src))
|
||||
|
||||
snd_c_src := $(wildcard snd/*.c)
|
||||
snd_c_obj := $(subst .c,.o,$(snd_c_src))
|
||||
fat_c_src := $(wildcard fatfs/*.c)
|
||||
fat_c_obj := $(subst .c,.o,$(fat_c_src))
|
||||
cli_c_src := $(wildcard cli/*.c)
|
||||
cli_c_obj := $(subst .c,.o,$(cli_c_src))
|
||||
c_src := $(wildcard *.c)
|
||||
c_obj := $(subst .c,.o,$(c_src))
|
||||
|
||||
.PHONY: all $(cpu) dev fatfs snd cli
|
||||
|
||||
ifeq ($(MEMORY),ram)
|
||||
all: foenixmcp.s68 $(cpu) dev snd cli
|
||||
else
|
||||
all: foenixmcp.bin $(cpu) dev snd cli
|
||||
endif
|
||||
|
||||
$(cpu):
|
||||
$(MAKE) --directory=$@
|
||||
|
||||
dev:
|
||||
$(MAKE) --directory=dev
|
||||
|
||||
fatfs:
|
||||
$(MAKE) --directory=fatfs
|
||||
|
||||
snd:
|
||||
$(MAKE) --directory=snd
|
||||
|
||||
cli:
|
||||
$(MAKE) --directory=cli
|
||||
|
||||
foenixmcp.s68: $(c_obj) $(cpu) dev fatfs snd cli
|
||||
$(CC) $(CFLAGS) $(DEFINES) -o foenixmcp.s68 $(c_obj) $(cpu_c_obj) $(dev_c_obj) $(fat_c_obj) $(snd_c_obj) $(cli_c_obj)
|
||||
|
||||
foenixmcp.bin: $(c_obj) $(cpu) dev fatfs snd cli
|
||||
$(CC) $(CFLAGS) $(DEFINES) -o foenixmcp.bin $(c_obj) $(cpu_c_obj) $(dev_c_obj) $(fat_c_obj) $(snd_c_obj) $(cli_c_obj)
|
||||
$(PAD_CMD)
|
||||
|
||||
%.o: %.c $(DEPS)
|
||||
$(CC) -S -c -o $@ $< $(CFLAGS) $(DEFINES)
|
||||
|
||||
.PHONEY: clean
|
||||
|
||||
clean:
|
||||
$(RM) *.s68 *.o *.asm
|
||||
$(MAKE) --directory=$(cpu) clean
|
||||
$(MAKE) --directory=dev clean
|
||||
$(MAKE) --directory=fatfs clean
|
||||
$(MAKE) --directory=snd clean
|
||||
$(MAKE) --directory=cli clean
|
|
@ -33,6 +33,8 @@
|
|||
#include "rsrc/bitmaps/splash_a2560k.h"
|
||||
#elif MODEL == MODEL_FOENIX_A2560X || MODEL == MODEL_FOENIX_GENX
|
||||
#include "rsrc/bitmaps/splash_a2560x.h"
|
||||
#elif MODEL == MODEL_FOENIX_C256U || MODEL == MODEL_FOENIX_C256U_PLUS || MODEL == MODEL_FOENIX_FMX
|
||||
#include "rsrc/bitmaps/image.h"
|
||||
#endif
|
||||
|
||||
#if MODEL == MODEL_FOENIX_A2560K
|
||||
|
|
|
@ -1,13 +1,59 @@
|
|||
csources = $(wildcard *.c)
|
||||
cobjects = $(subst .c,.o,$(csources))
|
||||
|
||||
.PHONY: all
|
||||
all: $(cobjects)
|
||||
UNIT := C256U_PLUS
|
||||
|
||||
# Define OS-dependent variables
|
||||
|
||||
ifeq ($(OS),Windows_NT)
|
||||
RM = del /F/Q
|
||||
else
|
||||
RM = rm -f
|
||||
endif
|
||||
|
||||
# Define model-specific variables, including tools, source files, compiler flags, etc.
|
||||
|
||||
ifeq ($(UNIT),C256U)
|
||||
CC=cc65816
|
||||
AS=as65816
|
||||
AR=nlib
|
||||
|
||||
SRCS_FOR_UNIT=
|
||||
CFLAGS_FOR_UNIT=-DMODEL=1 -DCPU=255 --target Foenix --code-model large --data-model large
|
||||
else ifeq ($(UNIT),C256U_PLUS)
|
||||
CC=cc65816
|
||||
AS=as65816
|
||||
AR=nlib
|
||||
|
||||
SRCS_FOR_UNIT=
|
||||
CFLAGS_FOR_UNIT=-DMODEL=5 -DCPU=255 --target Foenix --code-model large --data-model large
|
||||
else ifeq ($(UNIT),C256_FMX)
|
||||
CC=cc65816
|
||||
AS=as65816
|
||||
AR=nlib
|
||||
|
||||
SRCS_FOR_UNIT=
|
||||
CFLAGS_FOR_UNIT=-DMODEL=0 -DCPU=255 --target Foenix --code-model large --data-model large
|
||||
endif
|
||||
|
||||
INCLUDES=-I.. -I../include
|
||||
CFLAGS=$(INCLUDES) $(CFLAGS_FOR_UNIT) -l
|
||||
ASFLAGS=$(INCLUDES)
|
||||
|
||||
SRCS = cli.c dos_cmds.c dos_copy.c mem_cmds.c settings.c sound_cmds.c test_cmd2.c $(SRCS_FOR_UNIT)
|
||||
OBJS = $(patsubst %.c,%.o,$(SRCS))
|
||||
OBJS4RM = $(subst /,\\,$(OBJS))
|
||||
|
||||
.PHONY: all clean
|
||||
|
||||
all: cli.a
|
||||
|
||||
# Build the CLI library file for this model
|
||||
cli.a: $(OBJS)
|
||||
$(AR) $@ $^
|
||||
|
||||
# Build the object files from C
|
||||
%.o: %.c
|
||||
$(CC) -c -o $@ $< $(CFLAGS) $(DEFINES)
|
||||
|
||||
.PHONY: clean
|
||||
$(CC) $(CFLAGS) -o $@ $^
|
||||
|
||||
# Clean up after a build
|
||||
clean:
|
||||
$(RM) $(aobjects) $(cobjects) *.asm
|
||||
$(RM) $(OBJS4RM) cli.a *.lst
|
||||
|
|
|
@ -1,15 +1,59 @@
|
|||
csources = $(wildcard *.c)
|
||||
cobjects = $(subst .c,.o,$(csources))
|
||||
|
||||
cobjects = $(subst .c,.o,$(csources))
|
||||
UNIT := C256U_PLUS
|
||||
|
||||
.PHONY: all
|
||||
all: $(cobjects)
|
||||
# Define OS-dependent variables
|
||||
|
||||
ifeq ($(OS),Windows_NT)
|
||||
RM = del /F/Q
|
||||
else
|
||||
RM = rm -f
|
||||
endif
|
||||
|
||||
# Define model-specific variables, including tools, source files, compiler flags, etc.
|
||||
|
||||
ifeq ($(UNIT),C256U)
|
||||
CC=cc65816
|
||||
AS=as65816
|
||||
AR=nlib
|
||||
|
||||
SRCS_FOR_UNIT=txt_c256.c txt_evid.c indicators_c256.c interrupts_c256.c timers_c256.c
|
||||
CFLAGS_FOR_UNIT=-DMODEL=1 -DCPU=255 --target Foenix --code-model large --data-model large
|
||||
else ifeq ($(UNIT),C256U_PLUS)
|
||||
CC=cc65816
|
||||
AS=as65816
|
||||
AR=nlib
|
||||
|
||||
SRCS_FOR_UNIT=txt_c256.c txt_evid.c indicators_c256.c interrupts_c256.c timers_c256.c
|
||||
CFLAGS_FOR_UNIT=-DMODEL=5 -DCPU=255 --target Foenix --code-model large --data-model large
|
||||
else ifeq ($(UNIT),C256_FMX)
|
||||
CC=cc65816
|
||||
AS=as65816
|
||||
AR=nlib
|
||||
|
||||
SRCS_FOR_UNIT=txt_c256.c txt_evid.c indicators_c256.c interrupts_c256.c timers_c256.c
|
||||
CFLAGS_FOR_UNIT=-DMODEL=0 -DCPU=255 --target Foenix --code-model large --data-model large
|
||||
endif
|
||||
|
||||
INCLUDES=-I.. -I../include
|
||||
CFLAGS=$(INCLUDES) $(CFLAGS_FOR_UNIT) -l
|
||||
ASFLAGS=$(INCLUDES)
|
||||
|
||||
SRCS = bitmap.c block.c channel.c console.c dma.c fsys.c pata.c ps2.c sdc.c rtc.c txt_screen.c $(SRCS_FOR_UNIT)
|
||||
OBJS = $(patsubst %.c,%.o,$(SRCS))
|
||||
OBJS4RM = $(subst /,\\,$(OBJS))
|
||||
|
||||
.PHONY: all clean
|
||||
|
||||
all: devices.a
|
||||
|
||||
# Build the devices library file for this model
|
||||
devices.a: $(OBJS)
|
||||
$(AR) $@ $^
|
||||
|
||||
# Build the object files from C
|
||||
%.o: %.c
|
||||
$(CC) -c -o $@ $< $(CFLAGS) $(DEFINES)
|
||||
|
||||
.PHONY: clean
|
||||
$(CC) $(CFLAGS) -o $@ $^
|
||||
|
||||
# Clean up after a build
|
||||
clean:
|
||||
$(RM) *.o *.asm
|
||||
$(RM) $(OBJS4RM) devices.a *.lst
|
||||
|
|
152
src/dev/bitmap.c
Normal file
152
src/dev/bitmap.c
Normal file
|
@ -0,0 +1,152 @@
|
|||
/**
|
||||
* @file bitmap.c
|
||||
* @author Peter Weingartner (pjw@tailrecursive.org)
|
||||
* @brief Simple bitmap management code
|
||||
* @version 0.1
|
||||
* @date 2023-10-02
|
||||
*
|
||||
*/
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#include "bitmap.h"
|
||||
#include "dma.h"
|
||||
#include "vicky_general.h"
|
||||
|
||||
#define NUM_BITMAP_PLANES 2
|
||||
|
||||
static uint8_t bm_visible = 0; // Track whether a given bitmap plane is visible
|
||||
|
||||
/**
|
||||
* @brief Set the visibility of a given bitmap plane, and the CLUT to use
|
||||
*
|
||||
* @param plane the number of the bitmap to update
|
||||
* @param clut the number of the CLUT to use for the bitmap
|
||||
* @param is_visible 0 to hide the bitmap, any other number to show it
|
||||
*/
|
||||
void bm_set_visibility(short plane, short clut, short is_visible) {
|
||||
uint8_t new_control_value = (clut & 0x03) << 1 | (is_visible) ? 1 : 0;
|
||||
|
||||
switch(plane) {
|
||||
case 0:
|
||||
*bm0_control = new_control_value;
|
||||
if (is_visible) {
|
||||
bm_visible |= 0x01;
|
||||
} else {
|
||||
bm_visible &= ~0x01;
|
||||
}
|
||||
break;
|
||||
|
||||
case 1:
|
||||
*bm1_control = new_control_value;
|
||||
if (is_visible) {
|
||||
bm_visible |= 0x02;
|
||||
} else {
|
||||
bm_visible &= ~0x02;
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
if (bm_visible) {
|
||||
tvky_mstr_ctrl->raw = tvky_mstr_ctrl->raw | VKY_MCR_TEXT_OVERLAY | VKY_MCR_GRAPHICS | VKY_MCR_BITMAP;
|
||||
} else {
|
||||
tvky_mstr_ctrl->raw = tvky_mstr_ctrl->raw & ~(VKY_MCR_TEXT_OVERLAY | VKY_MCR_GRAPHICS | VKY_MCR_BITMAP);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Set the
|
||||
*
|
||||
* @param plane the number of the bitmap to set
|
||||
* @param src the address of the bitmap data to use (should be in video RAM)
|
||||
*/
|
||||
void bm_set_data(short plane, uint8_t * src) {
|
||||
uint32_t src_raw = (uint32_t)src - (uint32_t)vram_base;
|
||||
|
||||
switch (plane) {
|
||||
case 0:
|
||||
bm0_address[0] = (uint8_t)(src_raw & 0xff);
|
||||
bm0_address[1] = (uint8_t)((src_raw >> 8) & 0xff);
|
||||
bm0_address[2] = (uint8_t)((src_raw >> 16) & 0xff);
|
||||
break;
|
||||
|
||||
case 1:
|
||||
bm1_address[0] = (uint8_t)(src_raw & 0xff);
|
||||
bm1_address[1] = (uint8_t)((src_raw >> 8) & 0xff);
|
||||
bm1_address[2] = (uint8_t)((src_raw >> 16) & 0xff);
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Fill the bitmap data with a given color
|
||||
*
|
||||
* @param dest the area of video RAM to fill
|
||||
* @param color the color index to fill it with
|
||||
* @param width the width of the image in pixels
|
||||
* @param height the height of the image in pixels
|
||||
*/
|
||||
void bm_fill(uint8_t * dest, uint8_t color, int width, int height) {
|
||||
vdma_fill_linear(dest, color, (long)width * (long)height);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Load the color lookup table
|
||||
*
|
||||
* @param clut number of the CLUT to load
|
||||
* @param src pointer to the source data for the CLUT (in B, G, R, A order)
|
||||
*/
|
||||
void bm_load_clut(short clut, uint8_t * src) {
|
||||
uint8_t * base = (uint8_t *)((uint32_t)VKY_GR_CLUT_0 + 4l * 256l * (uint32_t)clut);
|
||||
|
||||
tvky_bg_color->blue = src[0];
|
||||
tvky_bg_color->green = src[1];
|
||||
tvky_bg_color->red = src[2];
|
||||
|
||||
for (int i = 0; i < 4 * 256; i++) {
|
||||
base[i] = src[i];
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Load RLE bitmap data into video RAM
|
||||
*
|
||||
* @param dest address to load with the expanded bitmap data (should be in video RAM)
|
||||
* @param src address of the RLE data to expand
|
||||
* @param width the width of the image in pixels
|
||||
* @param height the height of the image in pixels
|
||||
*/
|
||||
void bm_load_rle(uint8_t * dest, uint8_t * src, int width, int height) {
|
||||
uint32_t my_base = (uint32_t)dest;
|
||||
|
||||
// Clear the image map
|
||||
bm_fill(dest, 0, width, height);
|
||||
|
||||
uint8_t count = *(src++);
|
||||
while (count != 0) {
|
||||
uint8_t value = *(src++);
|
||||
if (value != 0) {
|
||||
volatile uint8_t * my_pointer = (uint8_t *)my_base;
|
||||
for (int i = 0; i < count; i++) {
|
||||
my_pointer[i] = value;
|
||||
}
|
||||
}
|
||||
my_base += count;
|
||||
|
||||
count = *(src++);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Initialize the bitmap system
|
||||
*
|
||||
*/
|
||||
void bm_init() {
|
||||
bm_visible = 0;
|
||||
}
|
62
src/dev/bitmap.h
Normal file
62
src/dev/bitmap.h
Normal file
|
@ -0,0 +1,62 @@
|
|||
/**
|
||||
* @brief Definitions for functions to manage bitmap displays
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef __BITMAP_H__
|
||||
#define __BITMAP_H__
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
/**
|
||||
* @brief Set the visibility of a given bitmap plane, and the CLUT to use
|
||||
*
|
||||
* @param plane the number of the bitmap to update
|
||||
* @param clut the number of the CLUT to use for the bitmap
|
||||
* @param is_visible 0 to hide the bitmap, any other number to show it
|
||||
*/
|
||||
extern void bm_set_visibility(short plane, short clut, short is_visible);
|
||||
|
||||
/**
|
||||
* @brief Set the
|
||||
*
|
||||
* @param plane the number of the bitmap to set
|
||||
* @param src the address of the bitmap data to use (should be in video RAM)
|
||||
*/
|
||||
extern void bm_set_data(short plane, uint8_t * src);
|
||||
|
||||
/**
|
||||
* @brief Fill the bitmap data with a given color
|
||||
*
|
||||
* @param dest the area of video RAM to fill
|
||||
* @param color the color index to fill it with
|
||||
* @param width the width of the image in pixels
|
||||
* @param height the height of the image in pixels
|
||||
*/
|
||||
extern void bm_fill(uint8_t * dest, uint8_t color, int width, int height);
|
||||
|
||||
/**
|
||||
* @brief Load the color lookup table
|
||||
*
|
||||
* @param clut number of the CLUT to load
|
||||
* @param src pointer to the source data for the CLUT (in B, G, R, A order)
|
||||
*/
|
||||
extern void bm_load_clut(short clut, uint8_t * src);
|
||||
|
||||
/**
|
||||
* @brief Load RLE bitmap data into video RAM
|
||||
*
|
||||
* @param dest address to load with the expanded bitmap data (should be in video RAM)
|
||||
* @param src address of the RLE data to expand
|
||||
* @param width the width of the image in pixels
|
||||
* @param height the height of the image in pixels
|
||||
*/
|
||||
extern void bm_load_rle(uint8_t * dest, uint8_t * src, int width, int height);
|
||||
|
||||
/**
|
||||
* @brief Initialize the bitmap system
|
||||
*
|
||||
*/
|
||||
extern void bm_init();
|
||||
|
||||
#endif
|
|
@ -94,10 +94,13 @@ extern short cdev_register(p_dev_chan device);
|
|||
/*
|
||||
* Get a free channel
|
||||
*
|
||||
* Inputs:
|
||||
* the device to associate with the channel
|
||||
*
|
||||
* Returns:
|
||||
* A pointer to the free channel, 0 if none are available.
|
||||
*/
|
||||
extern p_channel chan_alloc();
|
||||
extern p_channel chan_alloc(short dev);
|
||||
|
||||
/*
|
||||
* Return a channel to the pool of unused channels
|
||||
|
|
71
src/dev/dma.c
Normal file
71
src/dev/dma.c
Normal file
|
@ -0,0 +1,71 @@
|
|||
#include <stdint.h>
|
||||
|
||||
#include "dma.h"
|
||||
#include "dma_reg.h"
|
||||
#include "vicky_general.h"
|
||||
|
||||
/**
|
||||
* @brief Check if an address is in the range of video RAM
|
||||
*
|
||||
* @param address the address to check
|
||||
* @return short 0 if it is not in video RAM, 1 if it is in video RAM
|
||||
*/
|
||||
short is_vram(uint8_t * address) {
|
||||
if ((uint32_t)address >= (uint32_t)vram_base) {
|
||||
return 1;
|
||||
} else {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Wait while the VDMA engine is busy
|
||||
*
|
||||
*/
|
||||
void vdma_wait() {
|
||||
while ((*VDMA_STAT & VDMA_STAT_TFR_BUSY) != 0) ;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Fill video memory using a linear VDMA operation
|
||||
*
|
||||
* @param dest the address of memory to fill (must be in video RAM)
|
||||
* @param value the value to put into memory
|
||||
* @param count the number of bytes to fill
|
||||
*/
|
||||
void vdma_fill_linear(uint8_t * dest, uint8_t value, long count) {
|
||||
if (is_vram(dest)) {
|
||||
// We'll just ignore non-vram addresses
|
||||
|
||||
// Make sure any previous transfer is complete
|
||||
vdma_wait();
|
||||
|
||||
*VDMA_CTRL = 0;
|
||||
|
||||
// Set us up for a 1D fill
|
||||
*VDMA_CTRL = VDMA_CTRL_EN | VDMA_CTRL_FILL;
|
||||
|
||||
// Set the fill value
|
||||
*VDMA_FILL_VALUE = value;
|
||||
|
||||
// Set the destination address
|
||||
uint32_t dest_vram_address = (uint32_t)dest - (uint32_t)vram_base;
|
||||
VDMA_DST_ADDR[0] = (uint8_t)(dest_vram_address & 0xff);
|
||||
VDMA_DST_ADDR[1] = (uint8_t)((dest_vram_address >> 8) & 0xff);
|
||||
VDMA_DST_ADDR[2] = (uint8_t)((dest_vram_address >> 16) & 0xff);
|
||||
|
||||
// Set the count
|
||||
VDMA_SIZE[0] = (uint8_t)(count & 0xff);
|
||||
VDMA_SIZE[1] = (uint8_t)((count >> 8) & 0xff);
|
||||
VDMA_SIZE[2] = (uint8_t)((count >> 16) & 0xff);
|
||||
|
||||
// Start the transfer
|
||||
*VDMA_CTRL = VDMA_CTRL_EN | VDMA_CTRL_FILL | VDMA_CTRL_TRF;
|
||||
|
||||
// Wait for completion
|
||||
vdma_wait();
|
||||
|
||||
// Turn off the VDMA engine
|
||||
*VDMA_CTRL = 0;
|
||||
}
|
||||
}
|
20
src/dev/dma.h
Normal file
20
src/dev/dma.h
Normal file
|
@ -0,0 +1,20 @@
|
|||
/**
|
||||
* @brief Definitions for functions to manage DMA transfers
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef __DMA_H__
|
||||
#define __DMA_H__
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
/**
|
||||
* @brief Fill video memory using a linear VDMA operation
|
||||
*
|
||||
* @param dest the address of memory to fill (must be in video RAM)
|
||||
* @param value the value to put into memory
|
||||
* @param count the number of bytes to fill
|
||||
*/
|
||||
extern void vdma_fill_linear(uint8_t * dest, uint8_t value, long count);
|
||||
|
||||
#endif
|
62
src/dev/indicators_c256.c
Normal file
62
src/dev/indicators_c256.c
Normal file
|
@ -0,0 +1,62 @@
|
|||
/**
|
||||
* @file indicators_c256.c
|
||||
* @brief Indicator control logic for the C256 line
|
||||
* @version 0.1
|
||||
* @date 2023-08-30
|
||||
*
|
||||
* Indicators on the C256 include the SD card LED and the power LED. They can be on or off.
|
||||
* An error state will equate to being off. This code also sets the two status LEDs to their
|
||||
* default blinking state.
|
||||
*
|
||||
*/
|
||||
|
||||
#include "indicators.h"
|
||||
#include "gabe_reg.h"
|
||||
|
||||
/*
|
||||
* Set an indicator to the given state
|
||||
*
|
||||
* Inputs:
|
||||
* ind_number = the number of the indicator to change
|
||||
* state = the state the indicator should take (on, off, error)
|
||||
*/
|
||||
void ind_set(short ind_number, short state) {
|
||||
uint8_t bit = 0;
|
||||
|
||||
// Figure out which bit to manipulate
|
||||
switch (ind_number) {
|
||||
case IND_POWER:
|
||||
bit = GABE_CTRL_PWR_LED;
|
||||
break;
|
||||
|
||||
case IND_SDC:
|
||||
bit = GABE_CTRL_SDC_LED;
|
||||
break;
|
||||
|
||||
default:
|
||||
// Any other indicator is ignored
|
||||
return;
|
||||
}
|
||||
|
||||
if (state == IND_ON) {
|
||||
// Flip the bit on
|
||||
*GABE_CTRL_REG |= bit;
|
||||
|
||||
} else {
|
||||
// Flip the bit off
|
||||
*GABE_CTRL_REG &= ~bit;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Initialize the indicators
|
||||
*
|
||||
* Generally, this means the indicators will all be turned off
|
||||
*/
|
||||
void ind_init() {
|
||||
*GABE_CTRL_REG = 0;
|
||||
*GABE_LED_FLASH_CTRL = 0x03;
|
||||
|
||||
ind_set(IND_POWER, IND_ON);
|
||||
ind_set(IND_SDC, IND_OFF);
|
||||
}
|
597
src/dev/interrupts_c256.c
Normal file
597
src/dev/interrupts_c256.c
Normal file
|
@ -0,0 +1,597 @@
|
|||
/*
|
||||
* Definitions for the interrupt controls for the C256 machines
|
||||
*/
|
||||
|
||||
#include <calypsi/intrinsics65816.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "features.h"
|
||||
#include "interrupt.h"
|
||||
#include "log.h"
|
||||
|
||||
// FoenixMCP interrupt number -> C256 group and mask:
|
||||
|
||||
// INT_SOF_A 0x00 --> 0x00, 0x01 (Main screen start-of-frame)
|
||||
// INT_SOL_A 0x01 --> 0x00, 0x02 (Main screen start-of-line)
|
||||
// INT_VICKY_A_1 0x02 --> 0x01, 0x02 (Sprite Collision)
|
||||
// INT_VICKY_A_2 0x03 --> 0x01, 0x04 (Bitmap Collision)
|
||||
// INT_VICKY_A_3 0x04 --> 0x02, 0x08 (VDMA Interrupt)
|
||||
// INT_VICKY_A_4 0x05 --> 0x02, 0x10 (Tile Collision)
|
||||
// INT_RESERVED_1 0x06 --> 0x02, 0x40 (External Expansion)
|
||||
// INT_VICKY_A_DAC 0x07
|
||||
// INT_SOF_B 0x08
|
||||
// INT_SOL_B 0x09
|
||||
// INT_VICKY_B_1 0x0A
|
||||
// INT_VICKY_B_2 0x0B
|
||||
// INT_VICKY_B_3 0x0C
|
||||
// INT_VICKY_B_4 0x0D
|
||||
// INT_RESERVED_2 0x0E
|
||||
// INT_VICKY_B_DAC 0x0F
|
||||
|
||||
// INT_KBD_PS2 0x10 --> 0x01, 0x01 (PS/2 Keyboard)
|
||||
// INT_KBD_A2560K 0x11
|
||||
// INT_MOUSE 0x12 --> 0x00, 0x80 (PS/2 Mouse)
|
||||
// INT_COM1 0x13 --> 0x01, 0x10 (Serial port 1)
|
||||
// INT_COM2 0x14 --> 0x01, 0x08 (Serial port 2)
|
||||
// INT_LPT1 0x15 --> 0x01, 0x40 (LPT)
|
||||
// INT_FDC 0x16 --> 0x00, 0x40 (Floppy drive)
|
||||
// INT_MIDI 0x17 --> 0x01, 0x20 (MIDI)
|
||||
// INT_TIMER0 0x18 --> 0x00, 0x04 (Timer 0)
|
||||
// INT_TIMER1 0x19 --> 0x00, 0x08 (Timer 1)
|
||||
// INT_TIMER2 0x1A --> 0x00, 0x10 (Timer 2)
|
||||
// INT_TIMER3 0x1B
|
||||
// INT_TIMER4 0x1C
|
||||
// INT_RESERVED_3 0x1D
|
||||
// INT_RESERVED_4 0x1E
|
||||
// INT_RTC 0x1F --> 0x00, 0x20 (Real time clock)
|
||||
|
||||
// INT_PATA 0x20 --> 0x03, 0x04 (IDE)
|
||||
// INT_SDC_INS 0x21 --> 0x02, 0x80 (SDC inserted)
|
||||
// INT_SDC 0x22 --> 0x01, 0x80 (SDC)
|
||||
// INT_OPM_INT 0x23 --> 0x03, 0x02 (OPM)
|
||||
// INT_OPN2_EXT 0x24 --> 0x03, 0x01 (OPN)
|
||||
// INT_OPL3_EXT 0x25 --> 0x02, 0x01 (OPL3)
|
||||
// INT_RESERVED_5 0x26
|
||||
// INT_RESERVED_6 0x27
|
||||
// INT_BEATRIX_0 0x28
|
||||
// INT_BEATRIX_1 0x29
|
||||
// INT_BEATRIX_2 0x2A
|
||||
// INT_BEATRIX_3 0x2B
|
||||
// INT_RESERVED_7 0x2C
|
||||
// INT_DAC1_PB 0x2D /* DAC1 Playback Done (48K) */
|
||||
// INT_RESERVED_8 0x2E /* Reserved */
|
||||
// INT_DAC0_PB 0x2F /* DAC0 Playback Done (44.1K) */
|
||||
|
||||
//
|
||||
// Interrupt Handler Vectors
|
||||
//
|
||||
|
||||
p_int_handler int_handle_00;
|
||||
p_int_handler int_handle_01;
|
||||
p_int_handler int_handle_02;
|
||||
p_int_handler int_handle_03;
|
||||
p_int_handler int_handle_04;
|
||||
p_int_handler int_handle_05;
|
||||
p_int_handler int_handle_06;
|
||||
p_int_handler int_handle_07;
|
||||
|
||||
p_int_handler int_handle_10;
|
||||
p_int_handler int_handle_11;
|
||||
p_int_handler int_handle_12;
|
||||
p_int_handler int_handle_13;
|
||||
p_int_handler int_handle_14;
|
||||
p_int_handler int_handle_15;
|
||||
p_int_handler int_handle_16;
|
||||
p_int_handler int_handle_17;
|
||||
|
||||
p_int_handler int_handle_20;
|
||||
p_int_handler int_handle_21;
|
||||
p_int_handler int_handle_22;
|
||||
p_int_handler int_handle_23;
|
||||
p_int_handler int_handle_24;
|
||||
p_int_handler int_handle_25;
|
||||
p_int_handler int_handle_26;
|
||||
p_int_handler int_handle_27;
|
||||
|
||||
p_int_handler int_handle_30;
|
||||
p_int_handler int_handle_31;
|
||||
p_int_handler int_handle_32;
|
||||
p_int_handler int_handle_33;
|
||||
p_int_handler int_handle_34;
|
||||
p_int_handler int_handle_35;
|
||||
p_int_handler int_handle_36;
|
||||
p_int_handler int_handle_37;
|
||||
|
||||
/**
|
||||
* @brief Mapping of FoenixMCP interrupt numbers to C256 GABE group numbers (0xff indicates an unassigned interrupt number)
|
||||
*
|
||||
*/
|
||||
static unsigned short g_int_group[] = {
|
||||
0x00, 0x00, 0x01, 0x01, 0x02, 0x02, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0x01, 0xff, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00,
|
||||
0x03, 0x02, 0x01, 0x03, 0x03, 0x02, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
|
||||
};
|
||||
|
||||
/**
|
||||
* @brief Mapping of FoenixMCP interrupt numbers to C256 GABE mask numbers (0xff indicates an unassigned interrupt number)
|
||||
*
|
||||
*/
|
||||
static unsigned short g_int_mask[] = {
|
||||
0x01, 0x02, 0x02, 0x04, 0x08, 0x10, 0x40, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0x01, 0xff, 0x80, 0x10, 0x08, 0x40, 0x40, 0x20, 0x04, 0x08, 0x10, 0xff, 0xff, 0xff, 0xff, 0x20,
|
||||
0x04, 0x80, 0x80, 0x02, 0x01, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
|
||||
};
|
||||
|
||||
/*
|
||||
* Return the group number for the interrupt number
|
||||
*/
|
||||
unsigned short int_group(unsigned short n) {
|
||||
return g_int_group[n];
|
||||
}
|
||||
|
||||
/*
|
||||
* Return the mask bit for the interrupt number
|
||||
*/
|
||||
unsigned short int_mask(unsigned short n) {
|
||||
return g_int_mask[n];
|
||||
}
|
||||
|
||||
/*
|
||||
* Initialize the interrupt registers
|
||||
*/
|
||||
void int_init() {
|
||||
int i;
|
||||
p_int_handler * int_handlers = &int_handle_00;
|
||||
|
||||
// Clear all the interrupt handlers
|
||||
for (i = 0; i < 4 * 8; i++) {
|
||||
int_handlers[i] = 0;
|
||||
}
|
||||
|
||||
// At Reset, all of those already have those values
|
||||
// the Pol are @ 0x0000 and normally pending are reseted, but it is not impossible that some might be triggered during init
|
||||
|
||||
*EDGE_GRP0 = 0xFF;
|
||||
*EDGE_GRP1 = 0xFF;
|
||||
*EDGE_GRP2 = 0xFF;
|
||||
*EDGE_GRP3 = 0xFF;
|
||||
|
||||
*MASK_GRP0 = 0xFF;
|
||||
*MASK_GRP1 = 0xFF;
|
||||
*MASK_GRP2 = 0xFF;
|
||||
*MASK_GRP3 = 0xFF;
|
||||
|
||||
// Clear all the pending flags
|
||||
|
||||
*PENDING_GRP0 = 0xFF;
|
||||
*PENDING_GRP1 = 0xFF;
|
||||
*PENDING_GRP2 = 0xFF;
|
||||
*PENDING_GRP3 = 0xFF;
|
||||
}
|
||||
|
||||
/*
|
||||
* Enable all interrupts
|
||||
*
|
||||
* Returns:
|
||||
* a machine dependent representation of the interrupt masking prior to enabling
|
||||
*/
|
||||
short int_enable_all() {
|
||||
// NOTE: this code uses Calypsi specific intrinsic functions
|
||||
// and does a cast that may not be valid
|
||||
|
||||
short status = (short)__get_interrupt_state();
|
||||
__enable_interrupts();
|
||||
return status;
|
||||
}
|
||||
|
||||
/*
|
||||
* Disable all interrupts
|
||||
*
|
||||
* Returns:
|
||||
* a machine dependent representation of the interrupt masking prior to disabling
|
||||
*/
|
||||
short int_disable_all() {
|
||||
// NOTE: this code uses Calypsi specific intrinsic functions
|
||||
// and does a cast that may not be valid
|
||||
|
||||
short status = (short)__get_interrupt_state();
|
||||
__disable_interrupts();
|
||||
return status;
|
||||
}
|
||||
|
||||
/*
|
||||
* Disable an interrupt by masking it
|
||||
*
|
||||
* Interrupt number is made by the group number and number within the group.
|
||||
* For instance, the RTC interrupt would be 0x1F and the Channel A SOF interrupt would be 0x00.
|
||||
*
|
||||
* Inputs:
|
||||
* n = the number of the interrupt: n[7..4] = group number, n[3..0] = individual number.
|
||||
*/
|
||||
void int_disable(unsigned short n) {
|
||||
/* Find the group (the relevant interrupt mask register) for the interrupt */
|
||||
unsigned short group = int_group(n);
|
||||
|
||||
/* Find the mask for the interrupt */
|
||||
unsigned short mask = int_mask(n);
|
||||
|
||||
if ((group != 0xff) && (mask != 0xff)) {
|
||||
// Only set the mask if the mask and group numbers are valid
|
||||
uint8_t new_mask = MASK_GRP0[group] | mask;
|
||||
|
||||
/* Set the mask bit for the interrupt in the correct MASK register */
|
||||
MASK_GRP0[group] = new_mask;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/*
|
||||
* Enable an interrupt
|
||||
*
|
||||
* Interrupt number is made by the group number and number within the group.
|
||||
* For instance, the RTC interrupt would be 0x1F and the Channel A SOF interrupt would be 0x00.
|
||||
* And interrupt number of 0xFF specifies that all interrupts should be disabled.
|
||||
*
|
||||
* Inputs:
|
||||
* n = the number of the interrupt: n[7..4] = group number, n[3..0] = individual number.
|
||||
*/
|
||||
void int_enable(unsigned short n) {
|
||||
/* Find the group (the relevant interrupt mask register) for the interrupt */
|
||||
unsigned short group = int_group(n);
|
||||
|
||||
/* Find the mask for the interrupt */
|
||||
unsigned short mask = int_mask(n);
|
||||
|
||||
printf("Enable interrupt %d => group: %d, mask: %d\n", n, group, mask);
|
||||
|
||||
if ((group != 0xff) && (mask != 0xff)) {
|
||||
// Only set the mask if the mask and group numbers are valid
|
||||
uint8_t new_mask = MASK_GRP0[group] & ~mask;
|
||||
|
||||
/* Clear the mask bit for the interrupt in the correct MASK register */
|
||||
MASK_GRP0[group] = new_mask;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Convert group and mask to an index into a "array" of interrupt handler pointers
|
||||
*
|
||||
* @param group the number of the interrupt's group
|
||||
* @param mask the interupt's mask bit
|
||||
* @return int the offset to the handler (-1 on error)
|
||||
*/
|
||||
static int int_group_mask_to_offset(unsigned short group, unsigned short mask) {
|
||||
if ((group != 0xff) && (mask != 0xff)) {
|
||||
unsigned short position = 0;
|
||||
switch (mask) {
|
||||
case 0x01:
|
||||
position = 0;
|
||||
break;
|
||||
|
||||
case 0x02:
|
||||
position = 1;
|
||||
break;
|
||||
|
||||
case 0x04:
|
||||
position = 2;
|
||||
break;
|
||||
|
||||
case 0x08:
|
||||
position = 3;
|
||||
break;
|
||||
|
||||
case 0x10:
|
||||
position = 4;
|
||||
break;
|
||||
|
||||
case 0x20:
|
||||
position = 5;
|
||||
break;
|
||||
|
||||
case 0x40:
|
||||
position = 6;
|
||||
break;
|
||||
|
||||
case 0x80:
|
||||
position = 7;
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return group * 8 + position;
|
||||
} else {
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Register a handler for a given interrupt.
|
||||
*
|
||||
* Inputs:
|
||||
* n = the number of the interrupt: n[7..4] = group number, n[3..0] = individual number.
|
||||
* handler = pointer to the interrupt handler to register
|
||||
*
|
||||
* Returns:
|
||||
* the pointer to the previous interrupt handler
|
||||
*/
|
||||
p_int_handler int_register(unsigned short n, p_int_handler handler) {
|
||||
p_int_handler * handler_ref = 0;
|
||||
p_int_handler old_handler = 0;
|
||||
|
||||
/* Find the group (the relevant interrupt mask register) for the interrupt */
|
||||
unsigned short group = int_group(n);
|
||||
|
||||
/* Find the mask for the interrupt */
|
||||
unsigned short mask = int_mask(n);
|
||||
|
||||
switch(group) {
|
||||
case 0:
|
||||
switch(mask) {
|
||||
case 1:
|
||||
handler_ref = &int_handle_00;
|
||||
break;
|
||||
case 2:
|
||||
handler_ref = &int_handle_01;
|
||||
break;
|
||||
case 4:
|
||||
handler_ref = &int_handle_02;
|
||||
break;
|
||||
case 8:
|
||||
handler_ref = &int_handle_03;
|
||||
break;
|
||||
case 16:
|
||||
handler_ref = &int_handle_04;
|
||||
break;
|
||||
case 32:
|
||||
handler_ref = &int_handle_05;
|
||||
break;
|
||||
case 64:
|
||||
handler_ref = &int_handle_06;
|
||||
break;
|
||||
case 128:
|
||||
handler_ref = &int_handle_07;
|
||||
break;
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
break;
|
||||
|
||||
case 1:
|
||||
switch(mask) {
|
||||
case 1:
|
||||
handler_ref = &int_handle_10;
|
||||
break;
|
||||
case 2:
|
||||
handler_ref = &int_handle_11;
|
||||
break;
|
||||
case 4:
|
||||
handler_ref = &int_handle_12;
|
||||
break;
|
||||
case 8:
|
||||
handler_ref = &int_handle_13;
|
||||
break;
|
||||
case 16:
|
||||
handler_ref = &int_handle_14;
|
||||
break;
|
||||
case 32:
|
||||
handler_ref = &int_handle_15;
|
||||
break;
|
||||
case 64:
|
||||
handler_ref = &int_handle_16;
|
||||
break;
|
||||
case 128:
|
||||
handler_ref = &int_handle_17;
|
||||
break;
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
break;
|
||||
|
||||
case 2:
|
||||
switch(mask) {
|
||||
case 1:
|
||||
handler_ref = &int_handle_20;
|
||||
break;
|
||||
case 2:
|
||||
handler_ref = &int_handle_21;
|
||||
break;
|
||||
case 4:
|
||||
handler_ref = &int_handle_22;
|
||||
break;
|
||||
case 8:
|
||||
handler_ref = &int_handle_23;
|
||||
break;
|
||||
case 16:
|
||||
handler_ref = &int_handle_24;
|
||||
break;
|
||||
case 32:
|
||||
handler_ref = &int_handle_25;
|
||||
break;
|
||||
case 64:
|
||||
handler_ref = &int_handle_26;
|
||||
break;
|
||||
case 128:
|
||||
handler_ref = &int_handle_27;
|
||||
break;
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
break;
|
||||
|
||||
case 3:
|
||||
switch(mask) {
|
||||
case 1:
|
||||
handler_ref = &int_handle_30;
|
||||
break;
|
||||
case 2:
|
||||
handler_ref = &int_handle_31;
|
||||
break;
|
||||
case 4:
|
||||
handler_ref = &int_handle_32;
|
||||
break;
|
||||
case 8:
|
||||
handler_ref = &int_handle_33;
|
||||
break;
|
||||
case 16:
|
||||
handler_ref = &int_handle_34;
|
||||
break;
|
||||
case 32:
|
||||
handler_ref = &int_handle_35;
|
||||
break;
|
||||
case 64:
|
||||
handler_ref = &int_handle_36;
|
||||
break;
|
||||
case 128:
|
||||
handler_ref = &int_handle_37;
|
||||
break;
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
|
||||
old_handler = *handler_ref;
|
||||
*handler_ref = handler;
|
||||
|
||||
return old_handler;
|
||||
}
|
||||
|
||||
/*
|
||||
* Return true (non-zero) if an interrupt is pending for the given interrupt
|
||||
*
|
||||
* Inputs:
|
||||
* n = the number of the interrupt: n[7..4] = group number, n[3..0] = individual number.
|
||||
*
|
||||
* Returns:
|
||||
* non-zero if interrupt n is pending, 0 if not
|
||||
*/
|
||||
short int_pending(unsigned short n) {
|
||||
/* Find the group (the relevant interrupt mask register) for the interrupt */
|
||||
unsigned short group = int_group(n);
|
||||
|
||||
/* Find the mask for the interrupt */
|
||||
unsigned short mask = int_mask(n);
|
||||
|
||||
if ((group != 0xff) && (mask != 0xff)) {
|
||||
// Only query the pending mask if the mask and group numbers are valid
|
||||
return (PENDING_GRP0[group] & mask);
|
||||
|
||||
} else {
|
||||
// If the mask or group number are invalid, just return false
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Acknowledge an interrupt (clear out its pending flag)
|
||||
*
|
||||
* Inputs:
|
||||
* n = the number of the interrupt: n[7..4] = group number, n[3..0] = individual number.
|
||||
*/
|
||||
void int_clear(unsigned short n) {
|
||||
/* Find the group (the relevant interrupt mask register) for the interrupt */
|
||||
unsigned short group = int_group(n);
|
||||
|
||||
/* Find the mask for the interrupt */
|
||||
unsigned short mask = int_mask(n);
|
||||
|
||||
if ((group != 0xff) && (mask != 0xff)) {
|
||||
// Only set the mask if the mask and group numbers are valid
|
||||
uint8_t new_mask = PENDING_GRP0[group] | mask;
|
||||
|
||||
/* Set the bit for the interrupt to mark it as cleared */
|
||||
PENDING_GRP0[group] = new_mask;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Handle incomming IRQ signal
|
||||
*
|
||||
* NOTE: this routine might not be fast enough in C and have to be replaced by hand written
|
||||
* assembly code... but we will try it this way first.
|
||||
*/
|
||||
__attribute__((interrupt(0xffee))) void int_handle_irq() {
|
||||
uint8_t mask_bits = 0;
|
||||
|
||||
// Process any pending interrupts in group 0
|
||||
mask_bits = *PENDING_GRP0;
|
||||
if (mask_bits) {
|
||||
if ((mask_bits & 0x01) && int_handle_00) int_handle_00(); // Start of frame
|
||||
if ((mask_bits & 0x02) && int_handle_01) int_handle_01(); // Start of line
|
||||
if ((mask_bits & 0x04) && int_handle_02) int_handle_02(); // Timer 0
|
||||
if ((mask_bits & 0x08) && int_handle_03) int_handle_03(); // Timer 1
|
||||
if ((mask_bits & 0x10) && int_handle_04) int_handle_04(); // Timer 2
|
||||
if ((mask_bits & 0x20) && int_handle_05) int_handle_05(); // Realtime Clock
|
||||
if ((mask_bits & 0x40) && int_handle_06) int_handle_06(); // Floppy Disk Controller
|
||||
if ((mask_bits & 0x80) && int_handle_07) int_handle_07(); // PS/2 Mouse
|
||||
|
||||
// Clear the pending bits for group 0
|
||||
*PENDING_GRP0 = mask_bits;
|
||||
}
|
||||
|
||||
// Process any pending interrupts in group 1
|
||||
mask_bits = *PENDING_GRP1;
|
||||
if (mask_bits) {
|
||||
volatile __attribute__((far)) char * text = (char *)0xafa000;
|
||||
*text = *text + 1;
|
||||
|
||||
if ((mask_bits & 0x01) && int_handle_10) {
|
||||
volatile __attribute__((far)) char * text = (char *)0xafa001;
|
||||
*text = *text + 1;
|
||||
int_handle_10(); // PS/2 Keyboard
|
||||
}
|
||||
if ((mask_bits & 0x02) && int_handle_11) int_handle_11(); // VICKY II Sprite Collision
|
||||
if ((mask_bits & 0x04) && int_handle_12) int_handle_12(); // VICKY II Bitmap Collision
|
||||
if ((mask_bits & 0x08) && int_handle_13) int_handle_13(); // Serial Port #2
|
||||
if ((mask_bits & 0x10) && int_handle_14) int_handle_14(); // Serial Port #1
|
||||
if ((mask_bits & 0x20) && int_handle_15) int_handle_15(); // MIDI Controller
|
||||
if ((mask_bits & 0x40) && int_handle_16) int_handle_16(); // Parallel Port
|
||||
if ((mask_bits & 0x80) && int_handle_17) int_handle_17(); // SD Controller
|
||||
|
||||
// Clear the pending bits for group 1
|
||||
*PENDING_GRP1 = mask_bits;
|
||||
}
|
||||
|
||||
// Process any pending interrupts in group 2
|
||||
mask_bits = *PENDING_GRP2;
|
||||
if (mask_bits) {
|
||||
if ((mask_bits & 0x01) && int_handle_20) int_handle_20(); // OPL3
|
||||
// if (mask_bits & 0x02) int_handle_21(); // Currently unused
|
||||
// if (mask_bits & 0x04) int_handle_22(); // Currently unused
|
||||
if ((mask_bits & 0x08) && int_handle_23) int_handle_23(); // VICKY II VDMA
|
||||
if ((mask_bits & 0x10) && int_handle_24) int_handle_24(); // VICKY II Tile Collision
|
||||
// if (mask_bits & 0x20) int_handle_25(); // Currently unused
|
||||
if ((mask_bits & 0x40) && int_handle_26) int_handle_26(); // External Expansion
|
||||
if ((mask_bits & 0x80) && int_handle_27) int_handle_27(); // SD Insert
|
||||
|
||||
// Clear the pending bits for group 2
|
||||
*PENDING_GRP2 = mask_bits;
|
||||
}
|
||||
|
||||
// Process any pending interrupts in group 3
|
||||
mask_bits = *PENDING_GRP3;
|
||||
if (mask_bits) {
|
||||
if ((mask_bits & 0x01) && int_handle_30) int_handle_30(); // OPN2
|
||||
if ((mask_bits & 0x02) && int_handle_31) int_handle_31(); // OPM
|
||||
if ((mask_bits & 0x04) && int_handle_32) int_handle_32(); // IDE
|
||||
// // if (mask_bits & 0x08) int_handle_33(); // Currently unused
|
||||
// // if (mask_bits & 0x10) int_handle_34(); // Currently unused
|
||||
// // if (mask_bits & 0x20) int_handle_35(); // Currently unused
|
||||
// // if (mask_bits & 0x40) int_handle_36(); // Currently unused
|
||||
// // if (mask_bits & 0x80) int_handle_37(); // Currently unused
|
||||
|
||||
// Clear the pending bits for group 3
|
||||
*PENDING_GRP3 = mask_bits;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Handle incomming NMI signal
|
||||
*/
|
||||
__attribute__((interrupt(0xffea))) void int_handle_nmi() {
|
||||
}
|
|
@ -161,7 +161,7 @@ char g_buffer[512];
|
|||
// 0 on success, any negative number is an error code
|
||||
//
|
||||
short pata_identity(p_drive_info drive_info) {
|
||||
char * buffer;
|
||||
char * buffer = 0;
|
||||
unsigned short *wptr;
|
||||
char * cptr;
|
||||
short i;
|
||||
|
@ -198,7 +198,6 @@ short pata_identity(p_drive_info drive_info) {
|
|||
|
||||
TRACE("data copied");
|
||||
|
||||
wptr = (unsigned short *)buffer;
|
||||
drive_info->flags = g_buffer[1] << 16 | g_buffer[0];
|
||||
drive_info->lba_enabled = g_buffer[99] << 16 | g_buffer[98];
|
||||
drive_info->l.lbaw.lba_default_lo = g_buffer[121] << 8 | g_buffer[120];
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
#ifndef __PATA_H
|
||||
#define __PATA_H
|
||||
|
||||
#include <stdint.h>
|
||||
#include "types.h"
|
||||
|
||||
#define PATA_GET_SECTOR_COUNT 1
|
||||
|
@ -22,17 +23,17 @@
|
|||
//
|
||||
|
||||
typedef struct s_drive_info {
|
||||
unsigned short flags;
|
||||
uint16_t flags;
|
||||
char serial_number[18];
|
||||
char firmware_version[6];
|
||||
char model_name[38];
|
||||
unsigned short lba_enabled;
|
||||
uint16_t lba_enabled;
|
||||
union u1 {
|
||||
struct s1 {
|
||||
unsigned short lba_default_lo;
|
||||
unsigned short lba_default_hi;
|
||||
uint16_t lba_default_lo;
|
||||
uint16_t lba_default_hi;
|
||||
} lbaw;
|
||||
unsigned long lba_default;
|
||||
uint32_t lba_default;
|
||||
} l;
|
||||
} t_drive_info, *p_drive_info;
|
||||
|
||||
|
|
145
src/dev/ps2.c
145
src/dev/ps2.c
|
@ -6,6 +6,8 @@
|
|||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include "errors.h"
|
||||
#include "log_level.h"
|
||||
#define DEFAULT_LOG_LEVEL LOG_DEBUG
|
||||
#include "log.h"
|
||||
#include "types.h"
|
||||
#include "ring_buffer.h"
|
||||
|
@ -374,11 +376,34 @@ short ps2_wait_in() {
|
|||
* The response from the PS/2 controller, -1 if there was a timeout
|
||||
*/
|
||||
short ps2_controller_cmd(unsigned char cmd) {
|
||||
if (ps2_wait_in()) return -1;
|
||||
if (ps2_wait_in()) {
|
||||
INFO("ps2_controller_cmd: ps2_wait_in timeout");
|
||||
return -1;
|
||||
}
|
||||
*PS2_CMD_BUF = cmd;
|
||||
|
||||
if (ps2_wait_out()) return -1;
|
||||
return (short)*PS2_DATA_BUF;
|
||||
if (ps2_wait_out()) {
|
||||
INFO("ps2_controller_cmd: ps2_wait_out timeout");
|
||||
return -1;
|
||||
}
|
||||
|
||||
short result = (short)*PS2_DATA_BUF;
|
||||
// DEBUG2("PS/2: ps2_controller_cmd(%02X) = %02X", cmd, result);
|
||||
return result;
|
||||
}
|
||||
|
||||
/*
|
||||
* Send a command to the controller and wait for a response.
|
||||
*
|
||||
* Returns: 0 on success, -1 on timeout
|
||||
*/
|
||||
short ps2_controller_cmd_noreply(unsigned char cmd) {
|
||||
if (ps2_wait_in()) {
|
||||
INFO("ps2_controller_cmd_noreply: ps2_wait_in timeout");
|
||||
return -1;
|
||||
}
|
||||
*PS2_CMD_BUF = cmd;
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -388,10 +413,16 @@ short ps2_controller_cmd(unsigned char cmd) {
|
|||
* The response from the PS/2 controller, -1 if there was a timeout
|
||||
*/
|
||||
short ps2_controller_cmd_param(unsigned char cmd, unsigned char parameter) {
|
||||
if (ps2_wait_in()) return -1;
|
||||
if (ps2_wait_in()) {
|
||||
DEBUG("ps2_controller_cmd_param: ps2_wait_in #1 timeout.");
|
||||
return -1;
|
||||
}
|
||||
*PS2_CMD_BUF = cmd;
|
||||
|
||||
if (ps2_wait_in()) return -1;
|
||||
if (ps2_wait_in()) {
|
||||
DEBUG("ps2_controller_cmd_param: ps2_wait_in #2 timeout.");
|
||||
return -1;
|
||||
}
|
||||
*PS2_DATA_BUF = parameter;
|
||||
|
||||
return 0;
|
||||
|
@ -404,12 +435,18 @@ short ps2_controller_cmd_param(unsigned char cmd, unsigned char parameter) {
|
|||
* The response from the PS/2 controller, -1 if there was a timeout
|
||||
*/
|
||||
short ps2_kbd_cmd_p(unsigned char cmd, unsigned char parameter) {
|
||||
if (ps2_wait_in()) return -1;
|
||||
if (ps2_wait_in()) {
|
||||
DEBUG("ps2_kbd_cmd_p: ps2_wait_in #1 timeout.");
|
||||
return -1;
|
||||
}
|
||||
*PS2_DATA_BUF = cmd;
|
||||
|
||||
// May need a delay here
|
||||
|
||||
if (ps2_wait_in()) return -1;
|
||||
if (ps2_wait_in()) {
|
||||
DEBUG("ps2_kbd_cmd_p: ps2_wait_in #2 timeout.");
|
||||
return -1;
|
||||
}
|
||||
*PS2_DATA_BUF = parameter;
|
||||
|
||||
// Return 0 by default... maybe read DATA?
|
||||
|
@ -541,6 +578,11 @@ void kbd_handle_irq() {
|
|||
/* Clear the pending flag */
|
||||
int_clear(INT_KBD_PS2);
|
||||
|
||||
#if MODEL == MODEL_FOENIX_C256U || MODEL == MODEL_FOENIX_C256U_PLUS || MODEL == MODEL_FOENIX_FMX
|
||||
volatile __attribute__((far)) char * text = (char *)0xafa002;
|
||||
*text = *text + 1;
|
||||
#endif
|
||||
|
||||
if (scan_code) {
|
||||
// Make sure the scan code isn't 0 or 128, which are invalid make/break codes
|
||||
if ((scan_code != 0) && (scan_code != 0x80)) {
|
||||
|
@ -1143,6 +1185,47 @@ short kbd_layout(const char * tables) {
|
|||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Attempt to identify the device on the given PS/2 port
|
||||
*
|
||||
* @param port 1 (keyboard port), or 2 (mouse port)
|
||||
*/
|
||||
void ps2_identify(short port) {
|
||||
short res = 0;
|
||||
short byte0 = 0;
|
||||
short byte1 = 0;
|
||||
|
||||
switch(port) {
|
||||
case 1:
|
||||
res = ps2_kbd_cmd(KBD_CMD_DISABLE, 100);
|
||||
res = ps2_kbd_cmd(KBD_CMD_ID, 100);
|
||||
|
||||
if (ps2_wait_in()) {
|
||||
ERROR("PS/2: ps2_identify timeout #1.");
|
||||
} else {
|
||||
byte0 = (short)*PS2_DATA_BUF;
|
||||
}
|
||||
|
||||
if (ps2_wait_in()) {
|
||||
ERROR("PS/2: ps2_identify timeout #2.");
|
||||
} else {
|
||||
byte1 = (short)*PS2_DATA_BUF;
|
||||
}
|
||||
|
||||
if (byte1 >= 0) {
|
||||
INFO2("PS/2: ps2_identification: %02X %02X.", byte0, byte1);
|
||||
} else {
|
||||
INFO1("PS/2: ps2_identification: %02X.", byte0);
|
||||
}
|
||||
|
||||
res = ps2_kbd_cmd(KBD_CMD_ENABLE, 0);
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Initialize the PS2 controller and any attached devices
|
||||
* Enable keyboard and mouse interrupts as appropriate.
|
||||
|
@ -1151,10 +1234,12 @@ short kbd_layout(const char * tables) {
|
|||
* Status code indicating if either the mouse or the keyboard is missing.
|
||||
*/
|
||||
short ps2_init() {
|
||||
unsigned char x;
|
||||
short mouse_present;
|
||||
short mouse_error;
|
||||
short res;
|
||||
unsigned char x = 0;
|
||||
short mouse_present = 0;
|
||||
short mouse_error = 0;
|
||||
short res = 0;
|
||||
|
||||
DEBUG("PS/2: ps2_init entered.");
|
||||
|
||||
// Initialize the keyboard controller variables
|
||||
|
||||
|
@ -1178,55 +1263,66 @@ short ps2_init() {
|
|||
|
||||
int_disable(INT_MOUSE); /* Disable mouse interrupts */
|
||||
int_disable(INT_KBD_PS2); /* Disable keyboar interrupts */
|
||||
INFO("PS/2: Interrupts disabled.");
|
||||
|
||||
// Prevent the keyboard and mouse from sending events
|
||||
ps2_controller_cmd(PS2_CTRL_DISABLE_1);
|
||||
ps2_controller_cmd(PS2_CTRL_DISABLE_2);
|
||||
ps2_controller_cmd_noreply(PS2_CTRL_DISABLE_1);
|
||||
ps2_controller_cmd_noreply(PS2_CTRL_DISABLE_2);
|
||||
|
||||
// Read and clear out the controller's output buffer
|
||||
ps2_flush_out();
|
||||
|
||||
// // Controller selftest...
|
||||
if (ps2_controller_cmd(PS2_CTRL_SELFTEST) != PS2_RESP_OK) {
|
||||
INFO("PS/2: FAILED controller self test.");
|
||||
; // return PS2_FAIL_SELFTEST;
|
||||
} else {
|
||||
DEBUG("PS/2: PASSED controller self test.");
|
||||
}
|
||||
|
||||
// Keyboard test
|
||||
if (ps2_controller_cmd(PS2_CTRL_KBDTEST) != 0) {
|
||||
INFO("PS/2: FAILED port #1 test.");
|
||||
; // return PS2_FAIL_KBDTEST;
|
||||
} else {
|
||||
DEBUG("PS/2: PASSED port #1 test.");
|
||||
}
|
||||
|
||||
/* Test if the mouse is working */
|
||||
if (ps2_controller_cmd(PS2_CTRL_MOUSETEST) == 0) {
|
||||
mouse_present = 1;
|
||||
} else {
|
||||
if (ps2_controller_cmd(PS2_CTRL_MOUSETEST) != 0) {
|
||||
INFO("PS/2: FAILED port #2 test.");
|
||||
mouse_present = 0;
|
||||
} else {
|
||||
DEBUG("PS/2: PASSED port #2 test.");
|
||||
mouse_present = 1;
|
||||
}
|
||||
|
||||
// Set scancode translation to set1, enable interrupts on mouse and keyboard
|
||||
ps2_controller_cmd_param(PS2_CTRL_WRITECMD, 0x43); /* %01000011 */
|
||||
|
||||
// Enable the keyboard, don't check response
|
||||
ps2_wait_in();
|
||||
*PS2_CMD_BUF = PS2_CTRL_ENABLE_1;
|
||||
// Enable the port #1, don't check response
|
||||
ps2_controller_cmd_noreply(PS2_CTRL_ENABLE_1);
|
||||
INFO("PS/2: port #1 enabled.");
|
||||
|
||||
// Reset the keyboard... waiting a bit before we check for a result
|
||||
ps2_kbd_cmd(KBD_CMD_RESET, 1000);
|
||||
INFO("PS/2: Keyboard reset.");
|
||||
|
||||
// Ideally, we would attempt a re-enable several times, but this doesn't work on the U/U+ for some keyboards
|
||||
ps2_kbd_cmd(KBD_CMD_ENABLE, 0);
|
||||
INFO("PS/2: Keyboard enabled.");
|
||||
|
||||
// TODO: set the keyboard LEDs
|
||||
|
||||
if (mouse_present) {
|
||||
/* Initialize the mouse */
|
||||
if (mouse_error = mouse_init()) {
|
||||
log_num(LOG_INFO, "Unable to initialize mouse", res);
|
||||
if ((mouse_error = mouse_init())) {
|
||||
log_num(LOG_INFO, "Unable to initialize mouse", mouse_error);
|
||||
}
|
||||
}
|
||||
|
||||
ps2_wait_in();
|
||||
*PS2_CMD_BUF = PS2_CTRL_ENABLE_2;
|
||||
ps2_controller_cmd_noreply(PS2_CTRL_ENABLE_2);
|
||||
INFO("PS/2: port #2 enabled.");
|
||||
|
||||
// Make sure everything is read
|
||||
ps2_flush_out();
|
||||
|
@ -1239,9 +1335,10 @@ short ps2_init() {
|
|||
|
||||
// Enable the keyboard interrupt
|
||||
int_enable(INT_KBD_PS2);
|
||||
INFO("PS/2: Keyboard interrupt enabled.");
|
||||
|
||||
if (mouse_present && (mouse_error == 0)) {
|
||||
log(LOG_TRACE, "mouse enabled");
|
||||
DEBUG("mouse enabled");
|
||||
|
||||
// Register the interrupt handler for the mouse
|
||||
int_register(INT_MOUSE, mouse_handle_irq);
|
||||
|
|
|
@ -92,6 +92,7 @@ short rtc_register_periodic(short rate, FUNC_V_2_V handler) {
|
|||
int_enable(INT_RTC);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -260,3 +261,4 @@ void rtc_get_time(p_time time) {
|
|||
long rtc_get_jiffies() {
|
||||
return timers_jiffies();
|
||||
}
|
||||
|
||||
|
|
|
@ -72,11 +72,7 @@ short sdc_protected() {
|
|||
// is_on = if 0, turn the LED off, otherwise turn the LED on
|
||||
//
|
||||
void sdc_set_led(short is_on) {
|
||||
if (is_on) {
|
||||
*GABE_CTRL_REG = *GABE_CTRL_REG | SDCARD_LED;
|
||||
} else {
|
||||
*GABE_CTRL_REG = *GABE_CTRL_REG & ~SDCARD_LED;
|
||||
}
|
||||
ind_set(IND_SDC, is_on);
|
||||
}
|
||||
|
||||
//
|
||||
|
@ -87,7 +83,6 @@ void sdc_set_led(short is_on) {
|
|||
//
|
||||
short sdc_wait_busy() {
|
||||
long timer_ticks;
|
||||
int retry_count = MAX_TRIES_BUSY;
|
||||
unsigned char status;
|
||||
|
||||
timer_ticks = rtc_get_jiffies() + SDC_TIMEOUT_JF;
|
||||
|
@ -414,8 +409,10 @@ short sdc_ioctrl(short command, unsigned char * buffer, short size) {
|
|||
break;
|
||||
|
||||
default:
|
||||
return 0;
|
||||
break;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
//
|
||||
|
|
58
src/dev/timers_c256.c
Normal file
58
src/dev/timers_c256.c
Normal file
|
@ -0,0 +1,58 @@
|
|||
#include <stdint.h>
|
||||
|
||||
#include "interrupt.h"
|
||||
#include "timers.h"
|
||||
#include "gabe_reg.h"
|
||||
#include "timers_reg.h"
|
||||
|
||||
long jiffy_count;
|
||||
|
||||
/**
|
||||
* @brief Interrupt handler for the timer 0 interrupt... counts jiffies since boot
|
||||
*
|
||||
*/
|
||||
void timer_0_handler() {
|
||||
jiffy_count++;
|
||||
}
|
||||
|
||||
/*
|
||||
* Initialize the timers and their interrupts
|
||||
*/
|
||||
void timers_init() {
|
||||
// Number of system clock ticks per second
|
||||
const uint32_t sys_clock = 14318180;
|
||||
|
||||
// Number of system clocks per jiffy
|
||||
const uint32_t jiffy_target = sys_clock / (uint32_t)60;
|
||||
|
||||
jiffy_count = 0;
|
||||
|
||||
// Disable all timers
|
||||
*TIMER_CTRL_0 = 0;
|
||||
*TIMER_CTRL_1 = 0;
|
||||
*TIMER_CTRL_2 = 0;
|
||||
|
||||
// Register our timer 0 interrupt handler
|
||||
int_register(INT_SOF_A, timer_0_handler);
|
||||
int_enable(INT_SOF_A);
|
||||
|
||||
// Set timer 0 to tick every jiffy
|
||||
|
||||
// *TIMER_CHG_L_0 = jiffy_target & 0xff;
|
||||
// *TIMER_CHG_M_0 = (jiffy_target >> 8) & 0xff;
|
||||
// *TIMER_CHG_H_0 = (jiffy_target >> 16) & 0xff;
|
||||
|
||||
// *TIMER_CMP_L_0 = 0;
|
||||
// *TIMER_CMP_M_0 = 0;
|
||||
// *TIMER_CMP_H_0 = 0;
|
||||
|
||||
// *TIMER_CMPC_0 = TIMER_CMP_RELOAD;
|
||||
// *TIMER_CTRL_0 = TIMER_CTRL_EN | TIMER_CTRL_SLOAD;
|
||||
}
|
||||
|
||||
/*
|
||||
* Return the number of jiffies (1/60 of a second) since last reset time
|
||||
*/
|
||||
long timers_jiffies() {
|
||||
return jiffy_count;
|
||||
}
|
694
src/dev/txt_c256.c
Normal file
694
src/dev/txt_c256.c
Normal file
|
@ -0,0 +1,694 @@
|
|||
/** @file txt_c256.c
|
||||
*
|
||||
* Text screen driver for c256
|
||||
*/
|
||||
|
||||
#include <string.h>
|
||||
#include <stdio.h>
|
||||
|
||||
#include "log.h"
|
||||
#include "C256/vicky_ii.h"
|
||||
#include "dev/txt_c256.h"
|
||||
#include "dev/txt_screen.h"
|
||||
|
||||
extern const unsigned char MSX_CP437_8x8_bin[];
|
||||
|
||||
const t_color4 c256_clut[] = {
|
||||
{0, 0, 0}, // 0: Black
|
||||
{0, 0, 128}, // 1: Red
|
||||
{0, 128, 0}, // 2: Green
|
||||
{0, 128, 128}, // 3: Yellow
|
||||
{128, 0, 0}, // 4: Blue
|
||||
{128, 0, 128}, // 5: Magenta
|
||||
{128, 128, 0}, // 6: Cyan
|
||||
{192, 192, 192}, // 7: White
|
||||
{128, 128, 128}, // 8: Bright Gray
|
||||
{0, 0, 255}, // 9: Bright Red
|
||||
{0, 255, 0}, // A: Bright Green
|
||||
{0, 255, 255}, // B: Bright Yellow
|
||||
{255, 0, 0}, // C: Bright Blue
|
||||
{255, 0, 255}, // D: Bright Magenta
|
||||
{255, 255, 0}, // E: Bright Cyan
|
||||
{255, 255, 255} // F: Bright White
|
||||
};
|
||||
|
||||
/*
|
||||
* Driver level variables for the screen
|
||||
*/
|
||||
|
||||
unsigned char c256_enable_set_sizes; /* Flag to enable set_sizes to actually do its computation */
|
||||
|
||||
t_txt_capabilities c256_caps; /* The capabilities of Channel A */
|
||||
|
||||
t_extent c256_resolutions[] = { /* The list of display resolutions */
|
||||
{ 800, 600 },
|
||||
{ 400, 300 },
|
||||
{ 640, 480 },
|
||||
{ 320, 240 }
|
||||
};
|
||||
|
||||
t_extent c256_fonts[] = { /* The list of supported font resolutions */
|
||||
{ 8, 8 }
|
||||
};
|
||||
|
||||
t_rect c256_region; /* The current region */
|
||||
t_point c256_cursor; /* The current cursor position */
|
||||
t_extent c256_resolution; /* The current display resolution */
|
||||
t_extent c256_font_size; /* The current font size */
|
||||
t_extent c256_max_size; /* The size of the screen in characters (without border removed) */
|
||||
t_extent c256_visible_size; /* The size of the visible screen in characters (with border removed) */
|
||||
short c256_border_width; /* Width of the border on one side */
|
||||
short c256_border_height; /* Height of the border on one side */
|
||||
unsigned char c256_color; /* The current color */
|
||||
unsigned long msr_shadow; /* A shadow register for the Master Control Register */
|
||||
|
||||
/**
|
||||
* Gets the description of a screen's capabilities
|
||||
*
|
||||
* @return a pointer to the read-only description (0 on error)
|
||||
*/
|
||||
const p_txt_capabilities txt_c256_get_capabilities() {
|
||||
return &c256_caps;
|
||||
}
|
||||
|
||||
/**
|
||||
* Calculate the size of the text screen in rows and columns so that
|
||||
* the kernel printing routines can work correctly.
|
||||
*
|
||||
* NOTE: this should be called whenever the VKY3 registers are changed
|
||||
*/
|
||||
static void txt_c256_set_sizes() {
|
||||
TRACE("txt_c256_set_sizes");
|
||||
|
||||
if (c256_enable_set_sizes) {
|
||||
/* Only recalculate after initialization is mostly completed */
|
||||
|
||||
/*
|
||||
* Calculate the maximum number of characters visible on the screen
|
||||
* This controls text layout in memory
|
||||
*/
|
||||
c256_max_size.width = c256_resolution.width / c256_font_size.width;
|
||||
c256_max_size.height = c256_resolution.height / c256_font_size.height;
|
||||
|
||||
/*
|
||||
* Calculate the characters that are visible in whole or in part
|
||||
*/
|
||||
if ((c256_border_width != 0) && (c256_border_height != 0)) {
|
||||
short border_width = (2 * c256_border_width) / c256_font_size.width;
|
||||
short border_height = (2 * c256_border_height) / c256_font_size.height;
|
||||
|
||||
c256_visible_size.width = c256_max_size.width - border_width;
|
||||
c256_visible_size.height = c256_max_size.height - border_height;
|
||||
} else {
|
||||
c256_visible_size.width = c256_max_size.width;
|
||||
c256_visible_size.height = c256_max_size.height;
|
||||
}
|
||||
|
||||
DEBUG4("txt_c256_set_sizes max:%d,%d, visible:%d,%d", c256_max_size.width, c256_max_size.height, c256_visible_size.width, c256_visible_size.height);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the display resolutions
|
||||
*
|
||||
* @param text_size the size of the screen in visible characters (may be null)
|
||||
* @param pixel_size the size of the screen in pixels (may be null)
|
||||
*/
|
||||
static void txt_c256_get_sizes(p_extent text_size, p_extent pixel_size) {
|
||||
if (text_size) {
|
||||
text_size->width = c256_visible_size.width;
|
||||
text_size->height = c256_visible_size.height;
|
||||
}
|
||||
|
||||
if (pixel_size) {
|
||||
pixel_size->width = c256_resolution.width;
|
||||
pixel_size->height = c256_resolution.height;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the display mode for the screen
|
||||
*
|
||||
* @param mode a bitfield of desired display mode options
|
||||
*
|
||||
* @return 0 on success, any other number means the mode is invalid for the screen
|
||||
*/
|
||||
static short txt_c256_set_mode(short mode) {
|
||||
/* Turn off anything not set */
|
||||
msr_shadow &= ~(TXT_MODE_SLEEP | TXT_MODE_TEXT);
|
||||
|
||||
if (mode & TXT_MODE_SLEEP) {
|
||||
/* Put the monitor to sleep */
|
||||
msr_shadow |= VKY_MCR_DISABLE;
|
||||
tvky_mstr_ctrl->raw = msr_shadow;
|
||||
return 0;
|
||||
|
||||
} else if (mode & TXT_MODE_TEXT) {
|
||||
/* Put on text mode */
|
||||
msr_shadow |= VKY_MCR_TEXT;
|
||||
tvky_mstr_ctrl->raw = msr_shadow;
|
||||
return 0;
|
||||
|
||||
} else {
|
||||
/* Unsupported mode */
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the display resolution of the screen
|
||||
*
|
||||
* @param width the desired horizontal resolution in pixels
|
||||
* @param height the desired veritical resolution in pixels
|
||||
*
|
||||
* @return 0 on success, any other number means the resolution is unsupported
|
||||
*/
|
||||
static short txt_c256_set_resolution(short width, short height) {
|
||||
// TODO: If no size specified, set it based on the DIP switch
|
||||
|
||||
|
||||
/* Turn off resolution bits */
|
||||
/* TODO: there gotta be a better way to do that */
|
||||
msr_shadow &= ~(VKY_MCR_RES_MASK);
|
||||
|
||||
if ((width == 800) && (height == 600)) {
|
||||
msr_shadow |= VKY_MCR_RES_800x600;
|
||||
c256_resolution.width = width;
|
||||
c256_resolution.height = height;
|
||||
|
||||
// Recalculate the size of the screen
|
||||
txt_c256_set_sizes();
|
||||
|
||||
tvky_mstr_ctrl->raw = msr_shadow;
|
||||
return 0;
|
||||
|
||||
} else if ((width == 640) && (height == 480)) {
|
||||
msr_shadow |= VKY_MCR_RES_640x480;
|
||||
c256_resolution.width = width;
|
||||
c256_resolution.height = height;
|
||||
|
||||
// Recalculate the size of the screen
|
||||
txt_c256_set_sizes();
|
||||
|
||||
tvky_mstr_ctrl->raw = msr_shadow;
|
||||
return 0;
|
||||
}
|
||||
else if ((width == 320) && (height == 240)) {
|
||||
msr_shadow |= VKY_MCR_RES_320x240;
|
||||
c256_resolution.width = width;
|
||||
c256_resolution.height = height;
|
||||
|
||||
// Recalculate the size of the screen
|
||||
txt_c256_set_sizes();
|
||||
|
||||
tvky_mstr_ctrl->raw = msr_shadow;
|
||||
return 0;
|
||||
}
|
||||
else if ((width == 400) && (height == 300)) {
|
||||
msr_shadow |= VKY_MCR_RES_400x300;
|
||||
c256_resolution.width = width;
|
||||
c256_resolution.height = height;
|
||||
|
||||
// Recalculate the size of the screen
|
||||
txt_c256_set_sizes();
|
||||
|
||||
tvky_mstr_ctrl->raw = msr_shadow;
|
||||
return 0;
|
||||
}
|
||||
else {
|
||||
/* Unsupported resolution */
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the size of the border of the screen (if supported)
|
||||
*
|
||||
* @param width the horizontal size of one side of the border (0 - 32 pixels)
|
||||
* @param height the vertical size of one side of the border (0 - 32 pixels)
|
||||
*/
|
||||
static void txt_c256_set_border(short width, short height) {
|
||||
if ((width > 0) || (height > 0)) {
|
||||
c256_border_width = width;
|
||||
c256_border_height = height;
|
||||
tvky_brdr_ctrl->control = 0x01;
|
||||
tvky_brdr_ctrl->size_x = width;
|
||||
tvky_brdr_ctrl->sizy_y = height;
|
||||
|
||||
} else {
|
||||
tvky_brdr_ctrl->control = 0;
|
||||
tvky_brdr_ctrl->size_x = 0;
|
||||
tvky_brdr_ctrl->sizy_y = 0;
|
||||
}
|
||||
|
||||
// Recalculate the size of the screen
|
||||
txt_c256_set_sizes();
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the size of the border of the screen (if supported)
|
||||
*
|
||||
* @param red the red component of the color (0 - 255)
|
||||
* @param green the green component of the color (0 - 255)
|
||||
* @param blue the blue component of the color (0 - 255)
|
||||
*/
|
||||
static void txt_c256_set_border_color(unsigned char red, unsigned char green, unsigned char blue) {
|
||||
tvky_brdr_ctrl->color.red = red;
|
||||
tvky_brdr_ctrl->color.green = green;
|
||||
tvky_brdr_ctrl->color.blue = blue;
|
||||
}
|
||||
|
||||
/**
|
||||
* Load a font as the current font for the screen
|
||||
*
|
||||
* @param width width of a character in pixels
|
||||
* @param height of a character in pixels
|
||||
* @param data pointer to the raw font data to be loaded
|
||||
*/
|
||||
static short txt_c256_set_font(short width, short height, const unsigned char * data) {
|
||||
if (width == 8 && height == 8) {
|
||||
int i;
|
||||
|
||||
/* The size is valid... set the font */
|
||||
c256_font_size.width = width;
|
||||
c256_font_size.height = height;
|
||||
|
||||
/* Copy the font data... this assumes a width of one byte! */
|
||||
/* TODO: generalize this for all possible font sizes */
|
||||
for (i = 0; i < 256 * height; i++) {
|
||||
tvky_font_set_0[i] = data[i];
|
||||
}
|
||||
|
||||
// Recalculate the size of the screen
|
||||
txt_c256_set_sizes();
|
||||
|
||||
return 0;
|
||||
|
||||
} else {
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the appearance of the cursor
|
||||
*
|
||||
* @param enable 0 to hide, any other number to make visible
|
||||
* @param rate the blink rate for the cursor (0=1s, 1=0.5s, 2=0.25s, 3=1/5s)
|
||||
* @param c the character in the current font to use as a cursor
|
||||
*/
|
||||
static void txt_c256_set_cursor(short enable, short rate, char c) {
|
||||
tvky_crsr_ctrl->control = ((rate & 0x03) << 1) | ((enable) ? 1 : 0);
|
||||
tvky_crsr_ctrl->character = c;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set if the cursor is visible or not
|
||||
*
|
||||
* @param enable 0 to hide, any other number to make visible
|
||||
*/
|
||||
static void txt_c256_set_cursor_visible(short enable) {
|
||||
if (enable) {
|
||||
tvky_crsr_ctrl->control |= 0x01;
|
||||
} else {
|
||||
tvky_crsr_ctrl->control &= ~0x01;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* get the current region
|
||||
*
|
||||
* @param region pointer to a t_rect describing the rectangular region (using character cells for size and size)
|
||||
*
|
||||
* @return 0 on success, any other number means the region was invalid
|
||||
*/
|
||||
static short txt_c256_get_region(p_rect region) {
|
||||
region->origin.x = c256_region.origin.x;
|
||||
region->origin.y = c256_region.origin.y;
|
||||
region->size.width = c256_region.size.width;
|
||||
region->size.height = c256_region.size.height;
|
||||
|
||||
{
|
||||
char msg[80];
|
||||
sprintf(msg,"txt_c256_get_region %p: x:%d, y:%d, w:%d, h:%d", region, region->origin.x, region->origin.y, region->size.width, region->size.height);
|
||||
DEBUG(msg);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set a region to restrict further character display, scrolling, etc.
|
||||
* Note that a region of zero size will reset the region to the full size of the screen.
|
||||
*
|
||||
* @param region pointer to a t_rect describing the rectangular region (using character cells for size and size)
|
||||
*
|
||||
* @return 0 on success, any other number means the region was invalid
|
||||
*/
|
||||
static short txt_c256_set_region(const p_rect region) {
|
||||
// char msg[80];
|
||||
// sprintf(msg,"SET REGION %p x:%d, y:%d, w:%d, h:%d (visible:%d,%d)",
|
||||
// region, region->origin.x, region->origin.y, region->size.width, region->size.height, c256_visible_size.width, c256_visible_size.height);
|
||||
// DEBUG(msg);
|
||||
|
||||
if ((region->size.width == 0) || (region->size.height == 0)) {
|
||||
/* Set the region to the default (full screen) */
|
||||
c256_region.origin.x = 0;
|
||||
c256_region.origin.y = 0;
|
||||
c256_region.size.width = c256_visible_size.width;
|
||||
c256_region.size.height = c256_visible_size.height;
|
||||
} else {
|
||||
c256_region.origin.x = region->origin.x;
|
||||
c256_region.origin.y = region->origin.y;
|
||||
c256_region.size.width = region->size.width;
|
||||
c256_region.size.height = region->size.height;
|
||||
|
||||
//sprintf(msg,"specific region %d %d %d %d", region->origin.x, region->origin.y, region->size.width, region->size.height);
|
||||
//DEBUG(msg);
|
||||
}
|
||||
|
||||
//sprintf(msg,"txt_c256_set_region: NEW REGION %p x:%d, y:%d, w:%d, h:%d (visible:%d,%d)",
|
||||
//region, region->origin.x, region->origin.y, region->size.width, region->size.height, c256_visible_size.width, c256_visible_size.height);
|
||||
//DEBUG(msg);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the default foreground and background colors for printing
|
||||
*
|
||||
* @param pointer to the foreground the Text LUT index of the new current foreground color (0 - 15)
|
||||
* @param pointer to the background the Text LUT index of the new current background color (0 - 15)
|
||||
*/
|
||||
static short txt_c256_get_color(unsigned char * foreground, unsigned char * background) {
|
||||
*foreground = (c256_color & 0xf0) >> 4;
|
||||
*background = c256_color & 0x0f;
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the default foreground and background colors for printing
|
||||
*
|
||||
* @param foreground the Text LUT index of the new current foreground color (0 - 15)
|
||||
* @param background the Text LUT index of the new current background color (0 - 15)
|
||||
*/
|
||||
static short txt_c256_set_color(unsigned char foreground, unsigned char background) {
|
||||
c256_color = ((foreground & 0x0f) << 4) + (background & 0x0f);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Scroll the text in the current region
|
||||
*
|
||||
* @param screen the number of the text device
|
||||
* @param horizontal the number of columns to scroll (negative is left, positive is right)
|
||||
* @param vertical the number of rows to scroll (negative is down, positive is up)
|
||||
*/
|
||||
static void txt_c256_scroll(short horizontal, short vertical) {
|
||||
short x, x0, x1, x2, x3, dx;
|
||||
short y, y0, y1, y2, y3, dy;
|
||||
|
||||
/*
|
||||
* Determine limits of rectangles to move and fill and directions of loops
|
||||
* x0 and y0 are the positions of the first cell to be over-written
|
||||
* x1 and y1 are the positions of the first cell to be copied... TEXT[x0,y0] := TEXT[x1,y1]
|
||||
* x2 and y2 are the position of the last cell to be over-written
|
||||
* x3 and y3 are the position of the last cell to be copied... TEXT[x2,y2] := TEXT[x3,y3]
|
||||
*
|
||||
* When blanking, the rectangles (x2,y0) - (x3,y3) and (x0,y2) - (x2,y3) are cleared
|
||||
*/
|
||||
|
||||
// Determine the row limits
|
||||
|
||||
if (vertical >= 0) {
|
||||
y0 = c256_region.origin.y;
|
||||
y1 = y0 + vertical;
|
||||
y3 = c256_region.origin.y + c256_region.size.height;
|
||||
y2 = y3 - vertical;
|
||||
dy = 1;
|
||||
} else {
|
||||
y0 = c256_region.origin.y + c256_region.size.height - 1;
|
||||
y1 = y0 + vertical;
|
||||
y3 = c256_region.origin.y - 1;
|
||||
y2 = y3 - vertical;
|
||||
dy = -1;
|
||||
}
|
||||
|
||||
// Determine the column limits
|
||||
|
||||
if (horizontal >= 0) {
|
||||
x0 = c256_region.origin.x;
|
||||
x1 = x0 + horizontal;
|
||||
x3 = c256_region.origin.x + c256_region.size.width;
|
||||
x2 = x3 - horizontal;
|
||||
dx = 1;
|
||||
} else {
|
||||
x0 = c256_region.origin.x + c256_region.size.width - 1;
|
||||
x1 = x0 + horizontal;
|
||||
x3 = c256_region.origin.x - 1;
|
||||
x2 = x3 - horizontal;
|
||||
dx = -1;
|
||||
}
|
||||
|
||||
/* Copy the rectangle. */
|
||||
int delta_y = dy * c256_max_size.width;
|
||||
int row_dst = y0 * c256_max_size.width - delta_y;
|
||||
int row_src = y0 * c256_max_size.width + vertical * c256_max_size.width - delta_y;
|
||||
for (y = y0; y != y2; y += dy) {
|
||||
row_dst += delta_y;
|
||||
row_src += delta_y;
|
||||
int offset_dst = row_dst + x0 - dx;
|
||||
int offset_src = row_src + horizontal + x0 - dx;
|
||||
for (x = x0; x != x2; x += dx) {
|
||||
offset_dst += dx;
|
||||
offset_src += dx;
|
||||
tvky_text_matrix[offset_dst] = tvky_text_matrix[offset_src];
|
||||
tvky_color_matrix[offset_dst] = tvky_color_matrix[offset_src];
|
||||
}
|
||||
}
|
||||
|
||||
/* Clear the rectangles */
|
||||
if (horizontal != 0) {
|
||||
row_dst = y0 * c256_max_size.width - delta_y;
|
||||
for (y = y0; y != y3; y += dy) {
|
||||
row_dst += delta_y;
|
||||
for (x = x2; x != x3; x += dx) {
|
||||
tvky_text_matrix[row_dst + x] = ' ';
|
||||
tvky_color_matrix[row_dst + x] = c256_color;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (vertical != 0) {
|
||||
row_dst = y2 * c256_max_size.width - delta_y;
|
||||
for (y = y2; y != y3; y += dy) {
|
||||
row_dst += delta_y;
|
||||
for (x = x0; x != x3; x += dx) {
|
||||
tvky_text_matrix[row_dst + x] = ' ';
|
||||
tvky_color_matrix[row_dst + x] = c256_color;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Fill the current region with a character in the current color
|
||||
*
|
||||
* @param screen the number of the text device
|
||||
* @param c the character to fill the region with
|
||||
*/
|
||||
static void txt_c256_fill(char c) {
|
||||
int x;
|
||||
int y;
|
||||
|
||||
for (y = 0; y < c256_region.size.height; y++) {
|
||||
int offset_row = (c256_region.origin.y + y) * c256_max_size.width;
|
||||
for (x = 0; x < c256_region.size.width; x++) {
|
||||
int offset = offset_row + c256_region.origin.x + x;
|
||||
tvky_text_matrix[offset] = c;
|
||||
tvky_color_matrix[offset] = c256_color;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the position of the cursor to (x, y) relative to the current region
|
||||
* If the (x, y) coordinate is outside the region, it will be clipped to the region.
|
||||
* If y is greater than the height of the region, the region will scroll until that relative
|
||||
* position would be within view.
|
||||
*
|
||||
* @param x the column for the cursor
|
||||
* @param y the row for the cursor
|
||||
*/
|
||||
static void txt_c256_set_xy(short x, short y) {
|
||||
/* Make sure X is within range for the current region... "print" a newline if not */
|
||||
if (x < 0) {
|
||||
x = 0;
|
||||
} else if (x >= c256_region.size.width) {
|
||||
x = 0;
|
||||
y++;
|
||||
}
|
||||
|
||||
/* Make sure Y is within range for the current region... scroll if not */
|
||||
if (y < 0) {
|
||||
y = 0;
|
||||
} else if (y >= c256_region.size.height) {
|
||||
txt_c256_scroll(0, y - c256_region.size.height + 1);
|
||||
y = c256_region.size.height - 1;
|
||||
}
|
||||
|
||||
c256_cursor.x = x;
|
||||
c256_cursor.y = y;
|
||||
|
||||
/* Set register */
|
||||
tvky_crsr_ctrl->column = c256_region.origin.x + x;
|
||||
tvky_crsr_ctrl->row = c256_region.origin.y + y;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the position of the cursor (x, y) relative to the current region
|
||||
*
|
||||
* @param screen the number of the text device
|
||||
* @param position pointer to a t_point record to fill out
|
||||
*/
|
||||
static void txt_c256_get_xy(p_point position) {
|
||||
position->x = c256_cursor.x;
|
||||
position->y = c256_cursor.y;
|
||||
}
|
||||
|
||||
/**
|
||||
* Print a character to the current cursor position in the current color
|
||||
*
|
||||
* @param c the character to print
|
||||
*/
|
||||
static void txt_c256_put(char c) {
|
||||
short x;
|
||||
short y;
|
||||
unsigned int offset;
|
||||
|
||||
x = c256_region.origin.x + c256_cursor.x;
|
||||
y = c256_region.origin.y + c256_cursor.y;
|
||||
offset = y * c256_max_size.width + x;
|
||||
tvky_text_matrix[offset] = c;
|
||||
tvky_color_matrix[offset] = c256_color;
|
||||
|
||||
txt_c256_set_xy(c256_cursor.x + 1, c256_cursor.y);
|
||||
}
|
||||
|
||||
/**
|
||||
* Initialize the screen
|
||||
*/
|
||||
static void txt_c256_init() {
|
||||
char buffer[255];
|
||||
t_rect region;
|
||||
int i;
|
||||
DEBUG("txt_c256_init");
|
||||
|
||||
c256_resolution.width = 0;
|
||||
c256_resolution.height = 0;
|
||||
c256_visible_size.width = 0;
|
||||
c256_visible_size.height = 0;
|
||||
c256_font_size.width = 0;
|
||||
c256_font_size.height = 0;
|
||||
|
||||
/* Disable the set_sizes call for now, to avoid computing transcient unnecessary values */
|
||||
c256_enable_set_sizes = 0;
|
||||
|
||||
/* Start with nothing on */
|
||||
msr_shadow = 0;
|
||||
|
||||
/* Define the capabilities */
|
||||
|
||||
/* Specify the screen number. We have only one so... */
|
||||
c256_caps.number = TXT_SCREEN_C256;
|
||||
|
||||
/* This screen can be text, bitmap or can be put to sleep */
|
||||
c256_caps.supported_modes = TXT_MODE_TEXT | TXT_MODE_SPRITE | TXT_MODE_BITMAP | TXT_MODE_TILE | TXT_MODE_SLEEP;
|
||||
|
||||
/* Supported resolutions */
|
||||
c256_caps.resolution_count = sizeof(c256_resolutions) / sizeof(t_extent);
|
||||
c256_caps.resolutions = c256_resolutions;
|
||||
|
||||
/* Only 8x8 on the U */
|
||||
c256_caps.font_size_count = sizeof(c256_fonts) / sizeof(t_extent);
|
||||
c256_caps.font_sizes = c256_fonts;
|
||||
|
||||
/* Initialize the color lookup tables */
|
||||
for (i = 0; i < sizeof(c256_clut)/sizeof(t_color4); i++) {
|
||||
tvky_text_fg_color[i] = c256_clut[i];
|
||||
tvky_text_bg_color[i] = c256_clut[i];
|
||||
}
|
||||
|
||||
/* Set the mode to text */
|
||||
txt_c256_set_mode(TXT_MODE_TEXT);
|
||||
|
||||
/* Set the resolution */
|
||||
txt_c256_set_resolution(640, 480);
|
||||
|
||||
/* Set the default color: light grey on blue */
|
||||
txt_c256_set_color(0x07, 0x04);
|
||||
|
||||
/* Set the font */
|
||||
txt_c256_set_font(8, 8, MSX_CP437_8x8_bin); /* Use 8x8 font */
|
||||
|
||||
/* Set the cursor */
|
||||
txt_c256_set_cursor(1, 0, 0xB1);
|
||||
|
||||
/* Set the border */
|
||||
txt_c256_set_border(0, 0); /* Set up the border */
|
||||
txt_c256_set_border_color(0, 0, 0x3f);
|
||||
|
||||
/*
|
||||
* Enable set_sizes, now that everything is set up initially
|
||||
* And calculate the size of the screen
|
||||
*/
|
||||
c256_enable_set_sizes = 1;
|
||||
txt_c256_set_sizes();
|
||||
|
||||
/* Set region to default */
|
||||
region.origin.x = 0;
|
||||
region.origin.y = 0;
|
||||
region.size.width = 0;
|
||||
region.size.height = 0;
|
||||
txt_c256_set_region(®ion);
|
||||
|
||||
/* Home the cursor */
|
||||
txt_c256_set_xy(0, 0);
|
||||
|
||||
/* Clear the screen */
|
||||
txt_c256_fill(' ');
|
||||
}
|
||||
|
||||
/**
|
||||
* Initialize and install the driver
|
||||
*
|
||||
* @return 0 on success, any other number is an error
|
||||
*/
|
||||
short txt_c256_install() {
|
||||
t_txt_device device;
|
||||
|
||||
device.number = TXT_SCREEN_C256;
|
||||
device.name = "SCREEN";
|
||||
|
||||
device.init = txt_c256_init;
|
||||
device.get_capabilities = txt_c256_get_capabilities;
|
||||
device.set_mode = txt_c256_set_mode;
|
||||
device.set_sizes = txt_c256_set_sizes;
|
||||
device.set_resolution = txt_c256_set_resolution;
|
||||
device.set_border = txt_c256_set_border;
|
||||
device.set_border_color = txt_c256_set_border_color;
|
||||
device.set_font = txt_c256_set_font;
|
||||
device.set_cursor = txt_c256_set_cursor;
|
||||
device.set_cursor_visible = txt_c256_set_cursor_visible;
|
||||
device.get_region = txt_c256_get_region;
|
||||
device.set_region = txt_c256_set_region;
|
||||
device.get_color = txt_c256_get_color;
|
||||
device.set_color = txt_c256_set_color;
|
||||
device.set_xy = txt_c256_set_xy;
|
||||
device.get_xy = txt_c256_get_xy;
|
||||
device.put = txt_c256_put;
|
||||
device.scroll = txt_c256_scroll;
|
||||
device.fill = txt_c256_fill;
|
||||
device.get_sizes = txt_c256_get_sizes;
|
||||
|
||||
return txt_register(&device);
|
||||
}
|
19
src/dev/txt_c256.h
Normal file
19
src/dev/txt_c256.h
Normal file
|
@ -0,0 +1,19 @@
|
|||
/** @file txt_c2560.h
|
||||
*
|
||||
* Text screen driver for the C256
|
||||
*/
|
||||
|
||||
#ifndef __TXT_C256_H
|
||||
#define __TXT_C256_H
|
||||
|
||||
/* We only have one screen */
|
||||
#define TXT_SCREEN_C256 0
|
||||
|
||||
/**
|
||||
* Initialize and install the driver
|
||||
*
|
||||
* @return 0 on success, any other number is an error
|
||||
*/
|
||||
extern short txt_c256_install();
|
||||
|
||||
#endif
|
709
src/dev/txt_evid.c
Normal file
709
src/dev/txt_evid.c
Normal file
|
@ -0,0 +1,709 @@
|
|||
/**
|
||||
* @file txt_evid.c
|
||||
* @brief Low level FoenixMCP driver for the C200 EVID expansion card for the C256 computers
|
||||
* @version 0.1
|
||||
* @date 2023-08-09
|
||||
*
|
||||
*/
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <stdint.h>
|
||||
|
||||
#include "log.h"
|
||||
#include "C256/exp_c256.h"
|
||||
#include "C256/vicky_ii.h"
|
||||
#include "dev/txt_evid.h"
|
||||
#include "dev/txt_screen.h"
|
||||
|
||||
#define evid_font_set ((volatile __attribute__((far)) uint8_t *)0xae1000)
|
||||
#define evid_fg_clut ((volatile __attribute__((far)) t_color4 *)0xae1b00)
|
||||
#define evid_bg_clut ((volatile __attribute__((far)) t_color4 *)0xae1b40)
|
||||
|
||||
#define evid_mstr_ctrl ((volatile __attribute__((far)) uint16_t *)0xae1e00)
|
||||
#define EVID_MCR_TEXT 0x0001
|
||||
#define EVID_MCR_RES_800x600 0x0100
|
||||
|
||||
#define evid_brdr_ctrl ((volatile __attribute__((far)) uint8_t *)0xae1e04)
|
||||
#define evid_brdr_color ((volatile __attribute__((far)) t_color4 *)0xae1e05)
|
||||
#define evid_brdr_size_x ((volatile __attribute__((far)) uint16_t *)0xae1e08)
|
||||
#define evid_brdr_size_y ((volatile __attribute__((far)) uint16_t *)0xae1e09)
|
||||
|
||||
#define evid_crsr_ctrl ((volatile __attribute__((far)) uint8_t *)0xae1e10)
|
||||
#define evid_crsr_char ((volatile __attribute__((far)) uint8_t *)0xae1e12)
|
||||
#define evid_crsr_color ((volatile __attribute__((far)) uint8_t *)0xae1e13)
|
||||
#define evid_crsr_column ((volatile __attribute__((far)) uint16_t *)0xae1e14)
|
||||
#define evid_crsr_row ((volatile __attribute__((far)) uint16_t *)0xae1e16)
|
||||
|
||||
#define evid_text_matrix ((volatile __attribute__((far)) uint8_t *)0xae2000)
|
||||
#define evid_color_matrix ((volatile __attribute__((far)) uint8_t *)0xae4000)
|
||||
|
||||
extern const unsigned char MSX_CP437_8x8_bin[];
|
||||
|
||||
const t_color4 evid_clut[] = {
|
||||
{0, 0, 0}, // 0: Black
|
||||
{0, 0, 128}, // 1: Red
|
||||
{0, 128, 0}, // 2: Green
|
||||
{0, 128, 128}, // 3: Yellow
|
||||
{128, 0, 0}, // 4: Blue
|
||||
{128, 0, 128}, // 5: Magenta
|
||||
{128, 128, 0}, // 6: Cyan
|
||||
{192, 192, 192}, // 7: White
|
||||
{128, 128, 128}, // 8: Bright Gray
|
||||
{0, 0, 255}, // 9: Bright Red
|
||||
{0, 255, 0}, // A: Bright Green
|
||||
{0, 255, 255}, // B: Bright Yellow
|
||||
{255, 0, 0}, // C: Bright Blue
|
||||
{255, 0, 255}, // D: Bright Magenta
|
||||
{255, 255, 0}, // E: Bright Cyan
|
||||
{255, 255, 255} // F: Bright White
|
||||
};
|
||||
|
||||
/*
|
||||
* Driver level variables for the screen
|
||||
*/
|
||||
|
||||
unsigned char evid_enable_set_sizes; /* Flag to enable set_sizes to actually do its computation */
|
||||
|
||||
t_txt_capabilities evid_caps; /* The capabilities of the EVID */
|
||||
|
||||
t_extent evid_resolutions[] = { /* The list of display resolutions */
|
||||
{ 800, 600 },
|
||||
{ 640, 480 }
|
||||
};
|
||||
|
||||
t_extent evid_fonts[] = { /* The list of supported font resolutions */
|
||||
{ 8, 8 }
|
||||
};
|
||||
|
||||
t_rect evid_region; /* The current region */
|
||||
t_point evid_cursor; /* The current cursor position */
|
||||
t_extent evid_resolution; /* The current display resolution */
|
||||
t_extent evid_font_size; /* The current font size */
|
||||
t_extent evid_max_size; /* The size of the screen in characters (without border removed) */
|
||||
t_extent evid_visible_size; /* The size of the visible screen in characters (with border removed) */
|
||||
short evid_border_width; /* Width of the border on one side */
|
||||
short evid_border_height; /* Height of the border on one side */
|
||||
unsigned char evid_color; /* The current color */
|
||||
unsigned long evid_msr_shadow; /* A shadow register for the Master Control Register */
|
||||
|
||||
/**
|
||||
* @brief Return TRUE if the C200 EVID card is present
|
||||
*
|
||||
* @return short 0 if not present, any other value means the card is present
|
||||
*/
|
||||
short txt_evid_present() {
|
||||
if ((EXP_CARD_INFO->vendor_id == EXP_VENDOR_FOENIX) && (EXP_CARD_INFO->card_id == EXP_CARD_C200_EVID)) {
|
||||
return 1;
|
||||
} else {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the description of a screen's capabilities
|
||||
*
|
||||
* @return a pointer to the read-only description (0 on error)
|
||||
*/
|
||||
const p_txt_capabilities txt_evid_get_capabilities() {
|
||||
return &evid_caps;
|
||||
}
|
||||
|
||||
/**
|
||||
* Calculate the size of the text screen in rows and columns so that
|
||||
* the kernel printing routines can work correctly.
|
||||
*
|
||||
* NOTE: this should be called whenever the VKY3 registers are changed
|
||||
*/
|
||||
static void txt_evid_set_sizes() {
|
||||
TRACE("txt_evid_set_sizes");
|
||||
|
||||
if (evid_enable_set_sizes) {
|
||||
/* Only recalculate after initialization is mostly completed */
|
||||
|
||||
/*
|
||||
* Calculate the maximum number of characters visible on the screen
|
||||
* This controls text layout in memory
|
||||
*/
|
||||
evid_max_size.width = evid_resolution.width / evid_font_size.width;
|
||||
evid_max_size.height = evid_resolution.height / evid_font_size.height;
|
||||
|
||||
/*
|
||||
* Calculate the characters that are visible in whole or in part
|
||||
*/
|
||||
if ((evid_border_width != 0) && (evid_border_height != 0)) {
|
||||
short border_width = (2 * evid_border_width) / evid_font_size.width;
|
||||
short border_height = (2 * evid_border_height) / evid_font_size.height;
|
||||
|
||||
evid_visible_size.width = evid_max_size.width - border_width;
|
||||
evid_visible_size.height = evid_max_size.height - border_height;
|
||||
} else {
|
||||
evid_visible_size.width = evid_max_size.width;
|
||||
evid_visible_size.height = evid_max_size.height;
|
||||
}
|
||||
|
||||
DEBUG4("txt_evid_set_sizes max:%d,%d, visible:%d,%d", evid_max_size.width, evid_max_size.height, evid_visible_size.width, evid_visible_size.height);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the display resolutions
|
||||
*
|
||||
* @param text_size the size of the screen in visible characters (may be null)
|
||||
* @param pixel_size the size of the screen in pixels (may be null)
|
||||
*/
|
||||
static void txt_evid_get_sizes(p_extent text_size, p_extent pixel_size) {
|
||||
if (text_size) {
|
||||
text_size->width = evid_visible_size.width;
|
||||
text_size->height = evid_visible_size.height;
|
||||
}
|
||||
|
||||
if (pixel_size) {
|
||||
pixel_size->width = evid_resolution.width;
|
||||
pixel_size->height = evid_resolution.height;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the display mode for the screen
|
||||
*
|
||||
* @param mode a bitfield of desired display mode options
|
||||
*
|
||||
* @return 0 on success, any other number means the mode is invalid for the screen
|
||||
*/
|
||||
static short txt_evid_set_mode(short mode) {
|
||||
/* Turn off anything not set */
|
||||
evid_msr_shadow &= ~(TXT_MODE_TEXT);
|
||||
|
||||
if (mode & TXT_MODE_TEXT) {
|
||||
/* Put on text mode */
|
||||
evid_msr_shadow |= EVID_MCR_TEXT;
|
||||
*evid_mstr_ctrl = evid_msr_shadow;
|
||||
return 0;
|
||||
|
||||
} else {
|
||||
/* Unsupported mode */
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the display resolution of the screen
|
||||
*
|
||||
* @param width the desired horizontal resolution in pixels
|
||||
* @param height the desired veritical resolution in pixels
|
||||
*
|
||||
* @return 0 on success, any other number means the resolution is unsupported
|
||||
*/
|
||||
static short txt_evid_set_resolution(short width, short height) {
|
||||
// TODO: If no size specified, set it based on the DIP switch
|
||||
|
||||
/* Turn off resolution bits */
|
||||
/* TODO: there gotta be a better way to do that */
|
||||
evid_msr_shadow &= ~(EVID_MCR_RES_800x600);
|
||||
|
||||
if ((width == 800) && (height == 600)) {
|
||||
evid_msr_shadow |= EVID_MCR_RES_800x600;
|
||||
evid_resolution.width = width;
|
||||
evid_resolution.height = height;
|
||||
|
||||
// Recalculate the size of the screen
|
||||
txt_evid_set_sizes();
|
||||
|
||||
*evid_mstr_ctrl = evid_msr_shadow;
|
||||
return 0;
|
||||
|
||||
} else if ((width == 640) && (height == 480)) {
|
||||
evid_resolution.width = width;
|
||||
evid_resolution.height = height;
|
||||
|
||||
// Recalculate the size of the screen
|
||||
txt_evid_set_sizes();
|
||||
|
||||
*evid_mstr_ctrl = evid_msr_shadow;
|
||||
return 0;
|
||||
}
|
||||
else {
|
||||
/* Unsupported resolution */
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the size of the border of the screen (if supported)
|
||||
*
|
||||
* @param width the horizontal size of one side of the border (0 - 32 pixels)
|
||||
* @param height the vertical size of one side of the border (0 - 32 pixels)
|
||||
*/
|
||||
static void txt_evid_set_border(short width, short height) {
|
||||
if ((width > 0) || (height > 0)) {
|
||||
evid_border_width = width;
|
||||
evid_border_height = height;
|
||||
*evid_brdr_ctrl = 0x01;
|
||||
*evid_brdr_size_x = width;
|
||||
*evid_brdr_size_y = height;
|
||||
|
||||
} else {
|
||||
*evid_brdr_ctrl = 0;
|
||||
*evid_brdr_size_x = 0;
|
||||
*evid_brdr_size_y = 0;
|
||||
}
|
||||
|
||||
// Recalculate the size of the screen
|
||||
txt_evid_set_sizes();
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the size of the border of the screen (if supported)
|
||||
*
|
||||
* @param red the red component of the color (0 - 255)
|
||||
* @param green the green component of the color (0 - 255)
|
||||
* @param blue the blue component of the color (0 - 255)
|
||||
*/
|
||||
static void txt_evid_set_border_color(unsigned char red, unsigned char green, unsigned char blue) {
|
||||
evid_brdr_color->red = red;
|
||||
evid_brdr_color->green = green;
|
||||
evid_brdr_color->blue = blue;
|
||||
}
|
||||
|
||||
/**
|
||||
* Load a font as the current font for the screen
|
||||
*
|
||||
* @param width width of a character in pixels
|
||||
* @param height of a character in pixels
|
||||
* @param data pointer to the raw font data to be loaded
|
||||
*/
|
||||
static short txt_evid_set_font(short width, short height, const unsigned char * data) {
|
||||
if (width == 8 && height == 8) {
|
||||
int i;
|
||||
|
||||
/* The size is valid... set the font */
|
||||
evid_font_size.width = width;
|
||||
evid_font_size.height = height;
|
||||
|
||||
/* Copy the font data... this assumes a width of one byte! */
|
||||
/* TODO: generalize this for all possible font sizes */
|
||||
for (i = 0; i < 256 * height; i++) {
|
||||
evid_font_set[i] = data[i];
|
||||
}
|
||||
|
||||
// Recalculate the size of the screen
|
||||
txt_evid_set_sizes();
|
||||
|
||||
return 0;
|
||||
|
||||
} else {
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the appearance of the cursor
|
||||
*
|
||||
* @param enable 0 to hide, any other number to make visible
|
||||
* @param rate the blink rate for the cursor (0=1s, 1=0.5s, 2=0.25s, 3=1/5s)
|
||||
* @param c the character in the current font to use as a cursor
|
||||
*/
|
||||
static void txt_evid_set_cursor(short enable, short rate, char c) {
|
||||
*evid_crsr_ctrl = ((rate & 0x03) << 1) | ((enable) ? 1 : 0);
|
||||
*evid_crsr_char = c;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set if the cursor is visible or not
|
||||
*
|
||||
* @param enable 0 to hide, any other number to make visible
|
||||
*/
|
||||
static void txt_evid_set_cursor_visible(short enable) {
|
||||
if (enable) {
|
||||
*evid_crsr_ctrl|= 0x01;
|
||||
} else {
|
||||
*evid_crsr_ctrl &= ~0x01;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* get the current region
|
||||
*
|
||||
* @param region pointer to a t_rect describing the rectangular region (using character cells for size and size)
|
||||
*
|
||||
* @return 0 on success, any other number means the region was invalid
|
||||
*/
|
||||
static short txt_evid_get_region(p_rect region) {
|
||||
region->origin.x = evid_region.origin.x;
|
||||
region->origin.y = evid_region.origin.y;
|
||||
region->size.width = evid_region.size.width;
|
||||
region->size.height = evid_region.size.height;
|
||||
|
||||
// {
|
||||
// char msg[80];
|
||||
// sprintf(msg,"txt_evid_get_region %p: x:%d, y:%d, w:%d, h:%d", region, region->origin.x, region->origin.y, region->size.width, region->size.height);
|
||||
// DEBUG(msg);
|
||||
// }
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set a region to restrict further character display, scrolling, etc.
|
||||
* Note that a region of zero size will reset the region to the full size of the screen.
|
||||
*
|
||||
* @param region pointer to a t_rect describing the rectangular region (using character cells for size and size)
|
||||
*
|
||||
* @return 0 on success, any other number means the region was invalid
|
||||
*/
|
||||
static short txt_evid_set_region(const p_rect region) {
|
||||
// char msg[80];
|
||||
// sprintf(msg,"SET REGION %p x:%d, y:%d, w:%d, h:%d (visible:%d,%d)",
|
||||
// region, region->origin.x, region->origin.y, region->size.width, region->size.height, evid_visible_size.width, evid_visible_size.height);
|
||||
// DEBUG(msg);
|
||||
|
||||
if ((region->size.width == 0) || (region->size.height == 0)) {
|
||||
/* Set the region to the default (full screen) */
|
||||
evid_region.origin.x = 0;
|
||||
evid_region.origin.y = 0;
|
||||
evid_region.size.width = evid_visible_size.width;
|
||||
evid_region.size.height = evid_visible_size.height;
|
||||
} else {
|
||||
evid_region.origin.x = region->origin.x;
|
||||
evid_region.origin.y = region->origin.y;
|
||||
evid_region.size.width = region->size.width;
|
||||
evid_region.size.height = region->size.height;
|
||||
|
||||
//sprintf(msg,"specific region %d %d %d %d", region->origin.x, region->origin.y, region->size.width, region->size.height);
|
||||
//DEBUG(msg);
|
||||
}
|
||||
|
||||
//sprintf(msg,"txt_evid_set_region: NEW REGION %p x:%d, y:%d, w:%d, h:%d (visible:%d,%d)",
|
||||
//region, region->origin.x, region->origin.y, region->size.width, region->size.height, evid_visible_size.width, evid_visible_size.height);
|
||||
//DEBUG(msg);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the default foreground and background colors for printing
|
||||
*
|
||||
* @param pointer to the foreground the Text LUT index of the new current foreground color (0 - 15)
|
||||
* @param pointer to the background the Text LUT index of the new current background color (0 - 15)
|
||||
*/
|
||||
static short txt_evid_get_color(unsigned char * foreground, unsigned char * background) {
|
||||
*foreground = (evid_color & 0xf0) >> 4;
|
||||
*background = evid_color & 0x0f;
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the default foreground and background colors for printing
|
||||
*
|
||||
* @param foreground the Text LUT index of the new current foreground color (0 - 15)
|
||||
* @param background the Text LUT index of the new current background color (0 - 15)
|
||||
*/
|
||||
static short txt_evid_set_color(unsigned char foreground, unsigned char background) {
|
||||
evid_color = ((foreground & 0x0f) << 4) + (background & 0x0f);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Scroll the text in the current region
|
||||
*
|
||||
* @param screen the number of the text device
|
||||
* @param horizontal the number of columns to scroll (negative is left, positive is right)
|
||||
* @param vertical the number of rows to scroll (negative is down, positive is up)
|
||||
*/
|
||||
static void txt_evid_scroll(short horizontal, short vertical) {
|
||||
short x, x0, x1, x2, x3, dx;
|
||||
short y, y0, y1, y2, y3, dy;
|
||||
|
||||
/*
|
||||
* Determine limits of rectangles to move and fill and directions of loops
|
||||
* x0 and y0 are the positions of the first cell to be over-written
|
||||
* x1 and y1 are the positions of the first cell to be copied... TEXT[x0,y0] := TEXT[x1,y1]
|
||||
* x2 and y2 are the position of the last cell to be over-written
|
||||
* x3 and y3 are the position of the last cell to be copied... TEXT[x2,y2] := TEXT[x3,y3]
|
||||
*
|
||||
* When blanking, the rectangles (x2,y0) - (x3,y3) and (x0,y2) - (x2,y3) are cleared
|
||||
*/
|
||||
|
||||
// Determine the row limits
|
||||
|
||||
if (vertical >= 0) {
|
||||
y0 = evid_region.origin.y;
|
||||
y1 = y0 + vertical;
|
||||
y3 = evid_region.origin.y + evid_region.size.height;
|
||||
y2 = y3 - vertical;
|
||||
dy = 1;
|
||||
} else {
|
||||
y0 = evid_region.origin.y + evid_region.size.height - 1;
|
||||
y1 = y0 + vertical;
|
||||
y3 = evid_region.origin.y - 1;
|
||||
y2 = y3 - vertical;
|
||||
dy = -1;
|
||||
}
|
||||
|
||||
// Determine the column limits
|
||||
|
||||
if (horizontal >= 0) {
|
||||
x0 = evid_region.origin.x;
|
||||
x1 = x0 + horizontal;
|
||||
x3 = evid_region.origin.x + evid_region.size.width;
|
||||
x2 = x3 - horizontal;
|
||||
dx = 1;
|
||||
} else {
|
||||
x0 = evid_region.origin.x + evid_region.size.width - 1;
|
||||
x1 = x0 + horizontal;
|
||||
x3 = evid_region.origin.x - 1;
|
||||
x2 = x3 - horizontal;
|
||||
dx = -1;
|
||||
}
|
||||
|
||||
/* Copy the rectangle. */
|
||||
int delta_y = dy * evid_max_size.width;
|
||||
int row_dst = y0 * evid_max_size.width - delta_y;
|
||||
int row_src = y0 * evid_max_size.width + vertical * evid_max_size.width - delta_y;
|
||||
for (y = y0; y != y2; y += dy) {
|
||||
row_dst += delta_y;
|
||||
row_src += delta_y;
|
||||
int offset_dst = row_dst + x0 - dx;
|
||||
int offset_src = row_src + horizontal + x0 - dx;
|
||||
for (x = x0; x != x2; x += dx) {
|
||||
offset_dst += dx;
|
||||
offset_src += dx;
|
||||
evid_text_matrix[offset_dst] = evid_text_matrix[offset_src];
|
||||
evid_color_matrix[offset_dst] = evid_color_matrix[offset_src];
|
||||
}
|
||||
}
|
||||
|
||||
/* Clear the rectangles */
|
||||
if (horizontal != 0) {
|
||||
row_dst = y0 * evid_max_size.width - delta_y;
|
||||
for (y = y0; y != y3; y += dy) {
|
||||
row_dst += delta_y;
|
||||
for (x = x2; x != x3; x += dx) {
|
||||
evid_text_matrix[row_dst + x] = ' ';
|
||||
evid_color_matrix[row_dst + x] = evid_color;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (vertical != 0) {
|
||||
row_dst = y2 * evid_max_size.width - delta_y;
|
||||
for (y = y2; y != y3; y += dy) {
|
||||
row_dst += delta_y;
|
||||
for (x = x0; x != x3; x += dx) {
|
||||
evid_text_matrix[row_dst + x] = ' ';
|
||||
evid_color_matrix[row_dst + x] = evid_color;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Fill the current region with a character in the current color
|
||||
*
|
||||
* @param screen the number of the text device
|
||||
* @param c the character to fill the region with
|
||||
*/
|
||||
static void txt_evid_fill(char c) {
|
||||
int x;
|
||||
int y;
|
||||
|
||||
for (y = 0; y < evid_region.size.height; y++) {
|
||||
int offset_row = (evid_region.origin.y + y) * evid_max_size.width;
|
||||
for (x = 0; x < evid_region.size.width; x++) {
|
||||
int offset = offset_row + evid_region.origin.x + x;
|
||||
evid_text_matrix[offset] = c;
|
||||
evid_color_matrix[offset] = evid_color;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the position of the cursor to (x, y) relative to the current region
|
||||
* If the (x, y) coordinate is outside the region, it will be clipped to the region.
|
||||
* If y is greater than the height of the region, the region will scroll until that relative
|
||||
* position would be within view.
|
||||
*
|
||||
* @param x the column for the cursor
|
||||
* @param y the row for the cursor
|
||||
*/
|
||||
static void txt_evid_set_xy(short x, short y) {
|
||||
/* Make sure X is within range for the current region... "print" a newline if not */
|
||||
if (x < 0) {
|
||||
x = 0;
|
||||
} else if (x >= evid_region.size.width) {
|
||||
x = 0;
|
||||
y++;
|
||||
}
|
||||
|
||||
/* Make sure Y is within range for the current region... scroll if not */
|
||||
if (y < 0) {
|
||||
y = 0;
|
||||
} else if (y >= evid_region.size.height) {
|
||||
txt_evid_scroll(0, y - evid_region.size.height + 1);
|
||||
y = evid_region.size.height - 1;
|
||||
}
|
||||
|
||||
evid_cursor.x = x;
|
||||
evid_cursor.y = y;
|
||||
|
||||
/* Set register */
|
||||
*evid_crsr_column = evid_region.origin.x + x;
|
||||
*evid_crsr_row = evid_region.origin.y + y;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the position of the cursor (x, y) relative to the current region
|
||||
*
|
||||
* @param screen the number of the text device
|
||||
* @param position pointer to a t_point record to fill out
|
||||
*/
|
||||
static void txt_evid_get_xy(p_point position) {
|
||||
position->x = evid_cursor.x;
|
||||
position->y = evid_cursor.y;
|
||||
}
|
||||
|
||||
/**
|
||||
* Print a character to the current cursor position in the current color
|
||||
*
|
||||
* @param c the character to print
|
||||
*/
|
||||
static void txt_evid_put(char c) {
|
||||
short x;
|
||||
short y;
|
||||
unsigned int offset;
|
||||
|
||||
x = evid_region.origin.x + evid_cursor.x;
|
||||
y = evid_region.origin.y + evid_cursor.y;
|
||||
offset = y * evid_max_size.width + x;
|
||||
evid_text_matrix[offset] = c;
|
||||
evid_color_matrix[offset] = evid_color;
|
||||
|
||||
txt_evid_set_xy(evid_cursor.x + 1, evid_cursor.y);
|
||||
}
|
||||
|
||||
/**
|
||||
* Initialize the screen
|
||||
*/
|
||||
static void txt_evid_init() {
|
||||
char buffer[255];
|
||||
t_rect region;
|
||||
int i;
|
||||
DEBUG("txt_evid_init");
|
||||
|
||||
evid_resolution.width = 0;
|
||||
evid_resolution.height = 0;
|
||||
evid_visible_size.width = 0;
|
||||
evid_visible_size.height = 0;
|
||||
evid_font_size.width = 0;
|
||||
evid_font_size.height = 0;
|
||||
|
||||
/* Disable the set_sizes call for now, to avoid computing transcient unnecessary values */
|
||||
evid_enable_set_sizes = 0;
|
||||
|
||||
/* Start with nothing on */
|
||||
evid_msr_shadow = 0;
|
||||
|
||||
/* Define the capabilities */
|
||||
|
||||
/* Specify the screen number. We have only one so... */
|
||||
evid_caps.number = TXT_SCREEN_EVID;
|
||||
|
||||
/* This screen can be text, bitmap or can be put to sleep */
|
||||
evid_caps.supported_modes = TXT_MODE_TEXT;
|
||||
|
||||
/* Supported resolutions */
|
||||
evid_caps.resolution_count = sizeof(evid_resolutions) / sizeof(t_extent);
|
||||
evid_caps.resolutions = evid_resolutions;
|
||||
|
||||
/* Only 8x8 on the U */
|
||||
evid_caps.font_size_count = sizeof(evid_fonts) / sizeof(t_extent);
|
||||
evid_caps.font_sizes = evid_fonts;
|
||||
|
||||
/* Initialize the color lookup tables */
|
||||
for (i = 0; i < sizeof(evid_clut)/sizeof(t_color4); i++) {
|
||||
evid_fg_clut[i] = evid_clut[i];
|
||||
evid_bg_clut[i] = evid_clut[i];
|
||||
}
|
||||
|
||||
/* Set the mode to text */
|
||||
txt_evid_set_mode(TXT_MODE_TEXT);
|
||||
|
||||
/* Set the resolution */
|
||||
txt_evid_set_resolution(640, 480);
|
||||
|
||||
/* Set the default color: light grey on blue */
|
||||
txt_evid_set_color(0x07, 0x04);
|
||||
|
||||
/* Set the font */
|
||||
txt_evid_set_font(8, 8, MSX_CP437_8x8_bin); /* Use 8x8 font */
|
||||
|
||||
/* Set the cursor */
|
||||
txt_evid_set_cursor(1, 0, 0xB1);
|
||||
|
||||
/* Set the border */
|
||||
txt_evid_set_border(16, 16); /* Set up the border */
|
||||
txt_evid_set_border_color(0, 0, 0x3f);
|
||||
|
||||
/*
|
||||
* Enable set_sizes, now that everything is set up initially
|
||||
* And calculate the size of the screen
|
||||
*/
|
||||
evid_enable_set_sizes = 1;
|
||||
txt_evid_set_sizes();
|
||||
|
||||
/* Set region to default */
|
||||
region.origin.x = 0;
|
||||
region.origin.y = 0;
|
||||
region.size.width = 0;
|
||||
region.size.height = 0;
|
||||
txt_evid_set_region(®ion);
|
||||
|
||||
/* Home the cursor */
|
||||
txt_evid_set_xy(0, 0);
|
||||
|
||||
/* Clear the screen */
|
||||
txt_evid_fill(' ');
|
||||
}
|
||||
|
||||
t_txt_device device;
|
||||
|
||||
/**
|
||||
* Initialize and install the driver
|
||||
*
|
||||
* @return 0 on success, any other number is an error
|
||||
*/
|
||||
short txt_evid_install() {
|
||||
if (txt_evid_present()) {
|
||||
// Only register the EVID driver if the EVID is installed
|
||||
|
||||
device.number = TXT_SCREEN_EVID;
|
||||
device.name = "EVID";
|
||||
|
||||
device.init = txt_evid_init;
|
||||
device.get_capabilities = txt_evid_get_capabilities;
|
||||
device.set_mode = txt_evid_set_mode;
|
||||
device.set_sizes = txt_evid_set_sizes;
|
||||
device.set_resolution = txt_evid_set_resolution;
|
||||
device.set_border = txt_evid_set_border;
|
||||
device.set_border_color = txt_evid_set_border_color;
|
||||
device.set_font = txt_evid_set_font;
|
||||
device.set_cursor = txt_evid_set_cursor;
|
||||
device.set_cursor_visible = txt_evid_set_cursor_visible;
|
||||
device.get_region = txt_evid_get_region;
|
||||
device.set_region = txt_evid_set_region;
|
||||
device.get_color = txt_evid_get_color;
|
||||
device.set_color = txt_evid_set_color;
|
||||
device.set_xy = txt_evid_set_xy;
|
||||
device.get_xy = txt_evid_get_xy;
|
||||
device.put = txt_evid_put;
|
||||
device.scroll = txt_evid_scroll;
|
||||
device.fill = txt_evid_fill;
|
||||
device.get_sizes = txt_evid_get_sizes;
|
||||
|
||||
return txt_register(&device);
|
||||
|
||||
} else {
|
||||
// Return an error if the EVID is not present
|
||||
return -1;
|
||||
}
|
||||
}
|
22
src/dev/txt_evid.h
Normal file
22
src/dev/txt_evid.h
Normal file
|
@ -0,0 +1,22 @@
|
|||
/**
|
||||
* @file txt_evid.c
|
||||
* @brief Low level FoenixMCP driver for the C200 EVID expansion card for the C256 computers
|
||||
* @version 0.1
|
||||
* @date 2023-08-09
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef __txt_evid_h__
|
||||
#define __txt_evid_h__
|
||||
|
||||
/* If installed, the EVID is the second screen on the C256. */
|
||||
#define TXT_SCREEN_EVID 1
|
||||
|
||||
/**
|
||||
* Initialize and install the driver
|
||||
*
|
||||
* @return 0 on success, any other number is an error
|
||||
*/
|
||||
extern short txt_evid_install();
|
||||
|
||||
#endif
|
|
@ -1,13 +1,60 @@
|
|||
csources = $(wildcard *.c)
|
||||
cobjects = $(subst .c,.o,$(csources))
|
||||
|
||||
.PHONY: all
|
||||
all: $(cobjects)
|
||||
UNIT := C256U_PLUS
|
||||
|
||||
# Define OS-dependent variables
|
||||
|
||||
ifeq ($(OS),Windows_NT)
|
||||
RM = del /F/Q
|
||||
else
|
||||
RM = rm -f
|
||||
endif
|
||||
|
||||
# Define model-specific variables, including tools, source files, compiler flags, etc.
|
||||
|
||||
ifeq ($(UNIT),C256U)
|
||||
CPU=w65816
|
||||
SRCS_FOR_UNIT=
|
||||
CFLAGS_FOR_UNIT=-DMODEL=1 -DCPU=255 --target Foenix --code-model large --data-model large
|
||||
LDFLAGS_FOR_UNIT=C256/ld_lc_c256_u.scm clib-lc-ld.a
|
||||
else ifeq ($(UNIT),C256U_PLUS)
|
||||
CPU=w65816
|
||||
SRCS_FOR_UNIT=
|
||||
CFLAGS_FOR_UNIT=-DMODEL=5 -DCPU=255 --target Foenix --code-model large --data-model large
|
||||
LDFLAGS_FOR_UNIT=C256/ld_lc_c256_fmx.scm clib-lc-ld.a --rtattr printf=medium
|
||||
else ifeq ($(UNIT),C256_FMX)
|
||||
CPU=w65816
|
||||
SRCS_FOR_UNIT=
|
||||
CFLAGS_FOR_UNIT=-DMODEL=0 -DCPU=255 --target Foenix --code-model large --data-model large
|
||||
LDFLAGS_FOR_UNIT=C256/ld_lc_c256_fmx.scm clib-lc-ld.a
|
||||
endif
|
||||
|
||||
ifeq ($(CPU),w65816)
|
||||
CC=cc65816
|
||||
AS=as65816
|
||||
LD=ln65816
|
||||
AR=nlib
|
||||
endif
|
||||
|
||||
INCLUDES=-I.. -I../include
|
||||
CFLAGS=$(INCLUDES) $(CFLAGS_FOR_UNIT) -l
|
||||
ASFLAGS=$(INCLUDES)
|
||||
|
||||
SRCS = c256_diskio.c ff.c ffsystem.c ffunicode.c $(SRCS_FOR_UNIT)
|
||||
OBJS = $(patsubst %.c,%.o,$(SRCS))
|
||||
OBJS4RM = $(subst /,\\,$(OBJS))
|
||||
|
||||
.PHONY: all clean
|
||||
|
||||
all: fatfs.a
|
||||
|
||||
# Build the devices library file for this model
|
||||
fatfs.a: $(OBJS)
|
||||
$(AR) $@ $^
|
||||
|
||||
# Build the object files from C
|
||||
%.o: %.c
|
||||
$(CC) -c -o $@ $< $(CFLAGS) $(DEFINES)
|
||||
|
||||
.PHONY: clean
|
||||
$(CC) $(CFLAGS) -o $@ $^
|
||||
|
||||
# Clean up after a build
|
||||
clean:
|
||||
$(RM) $(aobjects) $(cobjects) *.asm
|
||||
$(RM) $(OBJS4RM) fatfs.a *.lst
|
||||
|
|
|
@ -1,796 +0,0 @@
|
|||
Thu May 20 2021 21:34 Page 1
|
||||
|
||||
|
||||
***************************************
|
||||
** WDC 65C816 Macro Assembler **
|
||||
** **
|
||||
** Version 3.49.1- Feb 6 2006 **
|
||||
***************************************
|
||||
|
||||
1 ;:ts=8
|
||||
2 00000001 R0 equ 1
|
||||
3 00000005 R1 equ 5
|
||||
4 00000009 R2 equ 9
|
||||
5 0000000D R3 equ 13
|
||||
6 ;/*-----------------------------------------------
|
||||
------------------------*/
|
||||
7 ;/* Low level disk I/O module SKELETON for FatFs
|
||||
(C)ChaN, 2019 */
|
||||
8 ;/*-----------------------------------------------
|
||||
------------------------*/
|
||||
9 ;/* If a working storage control module is availab
|
||||
le, it should be */
|
||||
10 ;/* attached to the FatFs via a glue function rath
|
||||
er than modifying it. */
|
||||
11 ;/* This is an example of glue functions to attach
|
||||
various exsisting */
|
||||
12 ;/* storage control modules to the FatFs module wi
|
||||
th a defined API. */
|
||||
13 ;/*-----------------------------------------------
|
||||
------------------------*/
|
||||
14 ;
|
||||
15 ;#include "ff.h" /* Obtains integ
|
||||
er types */
|
||||
16 ;#include "diskio.h" /* Declarations
|
||||
of disk functions */
|
||||
17 ;
|
||||
18 ;/* Definitions of physical drive number for each
|
||||
drive */
|
||||
19 ;#define DEV_SDC 0 /* Example: Map
|
||||
Ramdisk to physical drive 0 */
|
||||
20 ;
|
||||
21 ;
|
||||
22 ;/*-----------------------------------------------
|
||||
------------------------*/
|
||||
23 ;/* Get Drive Status
|
||||
*/
|
||||
24 ;/*-----------------------------------------------
|
||||
------------------------*/
|
||||
25 ;
|
||||
26 ;DSTATUS disk_status (
|
||||
27 ; BYTE pdrv /* Physical drive nmuber
|
||||
to identify the drive */
|
||||
28 ;)
|
||||
29 ;{
|
||||
30 code
|
||||
31 xdef ~~disk_status
|
||||
32 func
|
||||
33 ~~disk_status:
|
||||
34 longa on
|
||||
35 longi on
|
||||
36 00:0000: 3B tsc
|
||||
Thu May 20 2021 21:34 Page 2
|
||||
|
||||
|
||||
37 00:0001: 38 sec
|
||||
38 00:0002: E9 03 00 sbc #L2
|
||||
39 00:0005: 1B tcs
|
||||
40 00:0006: 0B phd
|
||||
41 00:0007: 5B tcd
|
||||
42 00000004 pdrv_0 set 4
|
||||
43 ; DSTATUS stat;
|
||||
44 ; int result;
|
||||
45 ;
|
||||
46 ; k_prints("disk_status\r");
|
||||
47 00000000 stat_1 set 0
|
||||
48 00000001 result_1 set 1
|
||||
49 00:0008: F4 xx xx pea #^L1
|
||||
50 00:000B: F4 xx xx pea #<L1
|
||||
51 00:000E: 22 xx xx xx jsl ~~k_prints
|
||||
52 ;
|
||||
53 ; switch (pdrv) {
|
||||
54 00:0012: A5 07 lda <L2+pdrv_0
|
||||
55 00:0014: 29 FF 00 and #$ff
|
||||
56 00:0017: 82 15 00 brl L10001
|
||||
57 ; case DEV_SDC:
|
||||
58 L10003:
|
||||
59 ;
|
||||
60 ; // translate the reslut code here
|
||||
61 ;
|
||||
62 ; return 0;
|
||||
63 00:001A: A9 00 00 lda #$0
|
||||
64 L4:
|
||||
65 00:001D: A8 tay
|
||||
66 00:001E: A5 05 lda <L2+2
|
||||
67 00:0020: 85 07 sta <L2+2+2
|
||||
68 00:0022: A5 04 lda <L2+1
|
||||
69 00:0024: 85 06 sta <L2+1+2
|
||||
70 00:0026: 2B pld
|
||||
71 00:0027: 3B tsc
|
||||
72 00:0028: 18 clc
|
||||
73 00:0029: 69 05 00 adc #L2+2
|
||||
74 00:002C: 1B tcs
|
||||
75 00:002D: 98 tya
|
||||
76 00:002E: 6B rtl
|
||||
77 ;
|
||||
78 ; }
|
||||
79 L10001:
|
||||
80 xref ~~~swt
|
||||
81 00:002F: 22 xx xx xx jsl ~~~swt
|
||||
82 00:0033: 01 00 dw 1
|
||||
83 00:0035: 00 00 dw 0
|
||||
84 00:0037: xx xx dw L10003-1
|
||||
85 00:0039: xx xx dw L10002-1
|
||||
86 L10002:
|
||||
87 ; return STA_NOINIT;
|
||||
88 00:003B: A9 01 00 lda #$1
|
||||
89 00:003E: 82 DC FF brl L4
|
||||
90 ;}
|
||||
91 00000003 L2 equ 3
|
||||
92 00000001 L3 equ 1
|
||||
93 ends
|
||||
94 efunc
|
||||
Thu May 20 2021 21:34 Page 3
|
||||
|
||||
|
||||
95 data
|
||||
96 L1:
|
||||
97 00:0000: 64 69 73 6B db $64,$69,$73,$6B,$5F,$73,$74,$61,$74,$75,
|
||||
$73,$0D,$00
|
||||
00:0004: 5F 73 74 61
|
||||
00:0008: 74 75 73 0D
|
||||
00:000C: 00
|
||||
98 00:000D: ends
|
||||
99 ;
|
||||
100 ;
|
||||
101 ;
|
||||
102 ;/*-----------------------------------------------
|
||||
------------------------*/
|
||||
103 ;/* Inidialize a Drive
|
||||
*/
|
||||
104 ;/*-----------------------------------------------
|
||||
------------------------*/
|
||||
105 ;
|
||||
106 ;DSTATUS disk_initialize (
|
||||
107 ; BYTE pdrv /* Physi
|
||||
cal drive nmuber to identify the drive */
|
||||
108 ;)
|
||||
109 ;{
|
||||
110 code
|
||||
111 xdef ~~disk_initialize
|
||||
112 func
|
||||
113 ~~disk_initialize:
|
||||
114 longa on
|
||||
115 longi on
|
||||
116 00:0041: 3B tsc
|
||||
117 00:0042: 38 sec
|
||||
118 00:0043: E9 03 00 sbc #L6
|
||||
119 00:0046: 1B tcs
|
||||
120 00:0047: 0B phd
|
||||
121 00:0048: 5B tcd
|
||||
122 00000004 pdrv_0 set 4
|
||||
123 ; DSTATUS stat;
|
||||
124 ; int result;
|
||||
125 ;
|
||||
126 ; k_prints("disk_initialize\r");
|
||||
127 00000000 stat_1 set 0
|
||||
128 00000001 result_1 set 1
|
||||
129 00:0049: F4 xx xx pea #^L5
|
||||
130 00:004C: F4 xx xx pea #<L5
|
||||
131 00:004F: 22 xx xx xx jsl ~~k_prints
|
||||
132 ;
|
||||
133 ; switch (pdrv) {
|
||||
134 00:0053: A5 07 lda <L6+pdrv_0
|
||||
135 00:0055: 29 FF 00 and #$ff
|
||||
136 00:0058: 82 28 00 brl L10004
|
||||
137 ; case DEV_SDC :
|
||||
138 L10006:
|
||||
139 ; if (bios_mount(2)) {
|
||||
140 00:005B: F4 02 00 pea #<$2
|
||||
141 00:005E: 22 xx xx xx jsl ~~bios_mount
|
||||
142 00:0062: AA tax
|
||||
143 00:0063: D0 03 bne L8
|
||||
144 00:0065: 82 15 00 brl L10007
|
||||
Thu May 20 2021 21:34 Page 4
|
||||
|
||||
|
||||
145 L8:
|
||||
146 ; return STA_NOINIT;
|
||||
147 00:0068: A9 01 00 lda #$1
|
||||
148 L9:
|
||||
149 00:006B: A8 tay
|
||||
150 00:006C: A5 05 lda <L6+2
|
||||
151 00:006E: 85 07 sta <L6+2+2
|
||||
152 00:0070: A5 04 lda <L6+1
|
||||
153 00:0072: 85 06 sta <L6+1+2
|
||||
154 00:0074: 2B pld
|
||||
155 00:0075: 3B tsc
|
||||
156 00:0076: 18 clc
|
||||
157 00:0077: 69 05 00 adc #L6+2
|
||||
158 00:007A: 1B tcs
|
||||
159 00:007B: 98 tya
|
||||
160 00:007C: 6B rtl
|
||||
161 ; } else {
|
||||
162 L10007:
|
||||
163 ; return 0;
|
||||
164 00:007D: A9 00 00 lda #$0
|
||||
165 00:0080: 82 E8 FF brl L9
|
||||
166 ; }
|
||||
167 ; }
|
||||
168 L10004:
|
||||
169 xref ~~~swt
|
||||
170 00:0083: 22 xx xx xx jsl ~~~swt
|
||||
171 00:0087: 01 00 dw 1
|
||||
172 00:0089: 00 00 dw 0
|
||||
173 00:008B: xx xx dw L10006-1
|
||||
174 00:008D: xx xx dw L10005-1
|
||||
175 L10005:
|
||||
176 ; return STA_NOINIT;
|
||||
177 00:008F: A9 01 00 lda #$1
|
||||
178 00:0092: 82 D6 FF brl L9
|
||||
179 ;}
|
||||
180 00000003 L6 equ 3
|
||||
181 00000001 L7 equ 1
|
||||
182 ends
|
||||
183 efunc
|
||||
184 data
|
||||
185 L5:
|
||||
186 00:000D: 64 69 73 6B db $64,$69,$73,$6B,$5F,$69,$6E,$69,$74,$69,
|
||||
$61,$6C,$69,$7A,$65
|
||||
00:0011: 5F 69 6E 69
|
||||
00:0015: 74 69 61 6C
|
||||
00:0019: 69 7A 65
|
||||
187 00:001C: 0D 00 db $0D,$00
|
||||
188 00:001E: ends
|
||||
189 ;
|
||||
190 ;
|
||||
191 ;
|
||||
192 ;/*-----------------------------------------------
|
||||
------------------------*/
|
||||
193 ;/* Read Sector(s)
|
||||
*/
|
||||
194 ;/*-----------------------------------------------
|
||||
------------------------*/
|
||||
195 ;
|
||||
Thu May 20 2021 21:34 Page 5
|
||||
|
||||
|
||||
196 ;DRESULT disk_read (
|
||||
197 ; BYTE pdrv, /* Physical drive nmuber
|
||||
to identify the drive */
|
||||
198 ; BYTE *buff, /* Data buffer to store
|
||||
read data */
|
||||
199 ; LBA_t sector, /* Start sector in LBA */
|
||||
200 ; UINT count /* Number of sectors to
|
||||
read */
|
||||
201 ;)
|
||||
202 ;{
|
||||
203 code
|
||||
204 xdef ~~disk_read
|
||||
205 func
|
||||
206 ~~disk_read:
|
||||
207 longa on
|
||||
208 longi on
|
||||
209 00:0095: 3B tsc
|
||||
210 00:0096: 38 sec
|
||||
211 00:0097: E9 04 00 sbc #L11
|
||||
212 00:009A: 1B tcs
|
||||
213 00:009B: 0B phd
|
||||
214 00:009C: 5B tcd
|
||||
215 00000004 pdrv_0 set 4
|
||||
216 00000006 buff_0 set 6
|
||||
217 0000000A sector_0 set 10
|
||||
218 0000000E count_0 set 14
|
||||
219 ; DRESULT res;
|
||||
220 ; int result;
|
||||
221 ;
|
||||
222 ; k_prints("disk_read\r");
|
||||
223 00000000 res_1 set 0
|
||||
224 00000002 result_1 set 2
|
||||
225 00:009D: F4 xx xx pea #^L10
|
||||
226 00:00A0: F4 xx xx pea #<L10
|
||||
227 00:00A3: 22 xx xx xx jsl ~~k_prints
|
||||
228 ;
|
||||
229 ; switch (pdrv) {
|
||||
230 00:00A7: A5 08 lda <L11+pdrv_0
|
||||
231 00:00A9: 29 FF 00 and #$ff
|
||||
232 00:00AC: 82 21 00 brl L10008
|
||||
233 ; case DEV_SDC:
|
||||
234 L10010:
|
||||
235 ; // translate the arguments here
|
||||
236 ;
|
||||
237 ; return bios_getblock(2, sector, buff);
|
||||
238 00:00AF: D4 0C pei <L11+buff_0+2
|
||||
239 00:00B1: D4 0A pei <L11+buff_0
|
||||
240 00:00B3: D4 10 pei <L11+sector_0+2
|
||||
241 00:00B5: D4 0E pei <L11+sector_0
|
||||
242 00:00B7: F4 02 00 pea #<$2
|
||||
243 00:00BA: 22 xx xx xx jsl ~~bios_getblock
|
||||
244 L13:
|
||||
245 00:00BE: A8 tay
|
||||
246 00:00BF: A5 06 lda <L11+2
|
||||
247 00:00C1: 85 12 sta <L11+2+12
|
||||
248 00:00C3: A5 05 lda <L11+1
|
||||
249 00:00C5: 85 11 sta <L11+1+12
|
||||
250 00:00C7: 2B pld
|
||||
Thu May 20 2021 21:34 Page 6
|
||||
|
||||
|
||||
251 00:00C8: 3B tsc
|
||||
252 00:00C9: 18 clc
|
||||
253 00:00CA: 69 10 00 adc #L11+12
|
||||
254 00:00CD: 1B tcs
|
||||
255 00:00CE: 98 tya
|
||||
256 00:00CF: 6B rtl
|
||||
257 ; }
|
||||
258 L10008:
|
||||
259 xref ~~~swt
|
||||
260 00:00D0: 22 xx xx xx jsl ~~~swt
|
||||
261 00:00D4: 01 00 dw 1
|
||||
262 00:00D6: 00 00 dw 0
|
||||
263 00:00D8: xx xx dw L10010-1
|
||||
264 00:00DA: xx xx dw L10009-1
|
||||
265 L10009:
|
||||
266 ;
|
||||
267 ; return RES_PARERR;
|
||||
268 00:00DC: A9 04 00 lda #$4
|
||||
269 00:00DF: 82 DC FF brl L13
|
||||
270 ;}
|
||||
271 00000004 L11 equ 4
|
||||
272 00000001 L12 equ 1
|
||||
273 ends
|
||||
274 efunc
|
||||
275 data
|
||||
276 L10:
|
||||
277 00:001E: 64 69 73 6B db $64,$69,$73,$6B,$5F,$72,$65,$61,$64,$0D,
|
||||
$00
|
||||
00:0022: 5F 72 65 61
|
||||
00:0026: 64 0D 00
|
||||
278 00:0029: ends
|
||||
279 ;
|
||||
280 ;
|
||||
281 ;
|
||||
282 ;/*-----------------------------------------------
|
||||
------------------------*/
|
||||
283 ;/* Write Sector(s)
|
||||
*/
|
||||
284 ;/*-----------------------------------------------
|
||||
------------------------*/
|
||||
285 ;
|
||||
286 ;#if FF_FS_READONLY == 0
|
||||
287 ;
|
||||
288 ;DRESULT disk_write (
|
||||
289 ; BYTE pdrv, /* Physical driv
|
||||
e nmuber to identify the drive */
|
||||
290 ; const BYTE *buff, /* Data to be written */
|
||||
291 ; LBA_t sector, /* Start sector in LBA *
|
||||
/
|
||||
292 ; UINT count /* Number of sec
|
||||
tors to write */
|
||||
293 ;)
|
||||
294 ;{
|
||||
295 code
|
||||
296 xdef ~~disk_write
|
||||
297 func
|
||||
298 ~~disk_write:
|
||||
299 longa on
|
||||
Thu May 20 2021 21:34 Page 7
|
||||
|
||||
|
||||
300 longi on
|
||||
301 00:00E2: 3B tsc
|
||||
302 00:00E3: 38 sec
|
||||
303 00:00E4: E9 04 00 sbc #L15
|
||||
304 00:00E7: 1B tcs
|
||||
305 00:00E8: 0B phd
|
||||
306 00:00E9: 5B tcd
|
||||
307 00000004 pdrv_0 set 4
|
||||
308 00000006 buff_0 set 6
|
||||
309 0000000A sector_0 set 10
|
||||
310 0000000E count_0 set 14
|
||||
311 ; DRESULT res;
|
||||
312 ; int result;
|
||||
313 ;
|
||||
314 ; k_prints("disk_write\r");
|
||||
315 00000000 res_1 set 0
|
||||
316 00000002 result_1 set 2
|
||||
317 00:00EA: F4 xx xx pea #^L14
|
||||
318 00:00ED: F4 xx xx pea #<L14
|
||||
319 00:00F0: 22 xx xx xx jsl ~~k_prints
|
||||
320 ;
|
||||
321 ; switch (pdrv) {
|
||||
322 00:00F4: A5 08 lda <L15+pdrv_0
|
||||
323 00:00F6: 29 FF 00 and #$ff
|
||||
324 00:00F9: 82 15 00 brl L10011
|
||||
325 ; case DEV_SDC:
|
||||
326 L10013:
|
||||
327 ; // translate the arguments here
|
||||
328 ;
|
||||
329 ;
|
||||
330 ; // translate the reslut code here
|
||||
331 ;
|
||||
332 ; return 0;
|
||||
333 00:00FC: A9 00 00 lda #$0
|
||||
334 L17:
|
||||
335 00:00FF: A8 tay
|
||||
336 00:0100: A5 06 lda <L15+2
|
||||
337 00:0102: 85 12 sta <L15+2+12
|
||||
338 00:0104: A5 05 lda <L15+1
|
||||
339 00:0106: 85 11 sta <L15+1+12
|
||||
340 00:0108: 2B pld
|
||||
341 00:0109: 3B tsc
|
||||
342 00:010A: 18 clc
|
||||
343 00:010B: 69 10 00 adc #L15+12
|
||||
344 00:010E: 1B tcs
|
||||
345 00:010F: 98 tya
|
||||
346 00:0110: 6B rtl
|
||||
347 ; }
|
||||
348 L10011:
|
||||
349 xref ~~~swt
|
||||
350 00:0111: 22 xx xx xx jsl ~~~swt
|
||||
351 00:0115: 01 00 dw 1
|
||||
352 00:0117: 00 00 dw 0
|
||||
353 00:0119: xx xx dw L10013-1
|
||||
354 00:011B: xx xx dw L10012-1
|
||||
355 L10012:
|
||||
356 ;
|
||||
357 ; return RES_PARERR;
|
||||
Thu May 20 2021 21:34 Page 8
|
||||
|
||||
|
||||
358 00:011D: A9 04 00 lda #$4
|
||||
359 00:0120: 82 DC FF brl L17
|
||||
360 ;}
|
||||
361 00000004 L15 equ 4
|
||||
362 00000001 L16 equ 1
|
||||
363 ends
|
||||
364 efunc
|
||||
365 data
|
||||
366 L14:
|
||||
367 00:0029: 64 69 73 6B db $64,$69,$73,$6B,$5F,$77,$72,$69,$74,$65,
|
||||
$0D,$00
|
||||
00:002D: 5F 77 72 69
|
||||
00:0031: 74 65 0D 00
|
||||
368 00:0035: ends
|
||||
369 ;
|
||||
370 ;#endif
|
||||
371 ;
|
||||
372 ;
|
||||
373 ;/*-----------------------------------------------
|
||||
------------------------*/
|
||||
374 ;/* Miscellaneous Functions
|
||||
*/
|
||||
375 ;/*-----------------------------------------------
|
||||
------------------------*/
|
||||
376 ;
|
||||
377 ;DRESULT disk_ioctl (
|
||||
378 ; BYTE pdrv, /* Physical drive nmuber
|
||||
(0..) */
|
||||
379 ; BYTE cmd, /* Control code */
|
||||
380 ; void *buff /* Buffer to send/receiv
|
||||
e control data */
|
||||
381 ;)
|
||||
382 ;{
|
||||
383 code
|
||||
384 xdef ~~disk_ioctl
|
||||
385 func
|
||||
386 ~~disk_ioctl:
|
||||
387 longa on
|
||||
388 longi on
|
||||
389 00:0123: 3B tsc
|
||||
390 00:0124: 38 sec
|
||||
391 00:0125: E9 04 00 sbc #L19
|
||||
392 00:0128: 1B tcs
|
||||
393 00:0129: 0B phd
|
||||
394 00:012A: 5B tcd
|
||||
395 00000004 pdrv_0 set 4
|
||||
396 00000006 cmd_0 set 6
|
||||
397 00000008 buff_0 set 8
|
||||
398 ; DRESULT res;
|
||||
399 ; int result;
|
||||
400 ;
|
||||
401 ; k_prints("disk_ioctl\r");
|
||||
402 00000000 res_1 set 0
|
||||
403 00000002 result_1 set 2
|
||||
404 00:012B: F4 xx xx pea #^L18
|
||||
405 00:012E: F4 xx xx pea #<L18
|
||||
406 00:0131: 22 xx xx xx jsl ~~k_prints
|
||||
407 ;
|
||||
Thu May 20 2021 21:34 Page 9
|
||||
|
||||
|
||||
408 ; switch (pdrv) {
|
||||
409 00:0135: A5 08 lda <L19+pdrv_0
|
||||
410 00:0137: 29 FF 00 and #$ff
|
||||
411 00:013A: 82 15 00 brl L10014
|
||||
412 ; case DEV_SDC:
|
||||
413 L10016:
|
||||
414 ;
|
||||
415 ; // Process of the command for the RAM dr
|
||||
ive
|
||||
416 ;
|
||||
417 ; return 0;
|
||||
418 00:013D: A9 00 00 lda #$0
|
||||
419 L21:
|
||||
420 00:0140: A8 tay
|
||||
421 00:0141: A5 06 lda <L19+2
|
||||
422 00:0143: 85 0E sta <L19+2+8
|
||||
423 00:0145: A5 05 lda <L19+1
|
||||
424 00:0147: 85 0D sta <L19+1+8
|
||||
425 00:0149: 2B pld
|
||||
426 00:014A: 3B tsc
|
||||
427 00:014B: 18 clc
|
||||
428 00:014C: 69 0C 00 adc #L19+8
|
||||
429 00:014F: 1B tcs
|
||||
430 00:0150: 98 tya
|
||||
431 00:0151: 6B rtl
|
||||
432 ; }
|
||||
433 L10014:
|
||||
434 xref ~~~swt
|
||||
435 00:0152: 22 xx xx xx jsl ~~~swt
|
||||
436 00:0156: 01 00 dw 1
|
||||
437 00:0158: 00 00 dw 0
|
||||
438 00:015A: xx xx dw L10016-1
|
||||
439 00:015C: xx xx dw L10015-1
|
||||
440 L10015:
|
||||
441 ;
|
||||
442 ; return RES_PARERR;
|
||||
443 00:015E: A9 04 00 lda #$4
|
||||
444 00:0161: 82 DC FF brl L21
|
||||
445 ;}
|
||||
446 00000004 L19 equ 4
|
||||
447 00000001 L20 equ 1
|
||||
448 ends
|
||||
449 efunc
|
||||
450 data
|
||||
451 L18:
|
||||
452 00:0035: 64 69 73 6B db $64,$69,$73,$6B,$5F,$69,$6F,$63,$74,$6C,
|
||||
$0D,$00
|
||||
00:0039: 5F 69 6F 63
|
||||
00:003D: 74 6C 0D 00
|
||||
453 00:0041: ends
|
||||
454 ;
|
||||
455 ;#define BIOS_STATUS ((volatile char *)0x000320)
|
||||
456 ;#define BIOS_DEV ((volatile char *)0x000321)
|
||||
457 ;#define BIOS_LBA ((volatile long *)0x000322)
|
||||
458 ;#define BIOS_BUFFER ((volatile long *)0x000326)
|
||||
459 ;
|
||||
460 ;/**
|
||||
461 ; * Call the C256 F_MOUNT kernel routine
|
||||
Thu May 20 2021 21:34 Page 10
|
||||
|
||||
|
||||
462 ; */
|
||||
463 ;int bios_mount(char dev) {
|
||||
464 code
|
||||
465 xdef ~~bios_mount
|
||||
466 func
|
||||
467 ~~bios_mount:
|
||||
468 longa on
|
||||
469 longi on
|
||||
470 00:0164: 3B tsc
|
||||
471 00:0165: 38 sec
|
||||
472 00:0166: E9 00 00 sbc #L23
|
||||
473 00:0169: 1B tcs
|
||||
474 00:016A: 0B phd
|
||||
475 00:016B: 5B tcd
|
||||
476 00000004 dev_0 set 4
|
||||
477 ; asm {
|
||||
478 ; LDA %%dev
|
||||
479 ; jsl $001128
|
||||
480 ; }
|
||||
481 asmstart
|
||||
482 00:016C: A5 04 LDA <L23+dev_0
|
||||
483 00:016E: 22 28 11 00 jsl $001128
|
||||
484 asmend
|
||||
485 ;
|
||||
486 ; if ((*BIOS_STATUS & 0x80) != 0) {
|
||||
487 00:0172: E2 20 sep #$20
|
||||
488 longa off
|
||||
489 00:0174: AF 20 03 00 lda >800 ; volatile
|
||||
490 00:0178: 29 80 and #<$80
|
||||
491 00:017A: C2 20 rep #$20
|
||||
492 longa on
|
||||
493 00:017C: D0 03 bne L25
|
||||
494 00:017E: 82 15 00 brl L10017
|
||||
495 L25:
|
||||
496 ; return RES_ERROR;
|
||||
497 00:0181: A9 01 00 lda #$1
|
||||
498 L26:
|
||||
499 00:0184: A8 tay
|
||||
500 00:0185: A5 02 lda <L23+2
|
||||
501 00:0187: 85 04 sta <L23+2+2
|
||||
502 00:0189: A5 01 lda <L23+1
|
||||
503 00:018B: 85 03 sta <L23+1+2
|
||||
504 00:018D: 2B pld
|
||||
505 00:018E: 3B tsc
|
||||
506 00:018F: 18 clc
|
||||
507 00:0190: 69 02 00 adc #L23+2
|
||||
508 00:0193: 1B tcs
|
||||
509 00:0194: 98 tya
|
||||
510 00:0195: 6B rtl
|
||||
511 ; } else {
|
||||
512 L10017:
|
||||
513 ; return RES_OK;
|
||||
514 00:0196: A9 00 00 lda #$0
|
||||
515 00:0199: 82 E8 FF brl L26
|
||||
516 ; }
|
||||
517 ;}
|
||||
518 00000000 L23 equ 0
|
||||
519 00000001 L24 equ 1
|
||||
Thu May 20 2021 21:34 Page 11
|
||||
|
||||
|
||||
520 ends
|
||||
521 efunc
|
||||
522 ;
|
||||
523 ;/**
|
||||
524 ; * Call the C256 GETBLOCK kernel routine
|
||||
525 ; */
|
||||
526 ;int bios_getblock(char dev, long lba, char * buff
|
||||
er) {
|
||||
527 code
|
||||
528 xdef ~~bios_getblock
|
||||
529 func
|
||||
530 ~~bios_getblock:
|
||||
531 longa on
|
||||
532 longi on
|
||||
533 00:019C: 3B tsc
|
||||
534 00:019D: 38 sec
|
||||
535 00:019E: E9 04 00 sbc #L27
|
||||
536 00:01A1: 1B tcs
|
||||
537 00:01A2: 0B phd
|
||||
538 00:01A3: 5B tcd
|
||||
539 00000004 dev_0 set 4
|
||||
540 00000006 lba_0 set 6
|
||||
541 0000000A buffer_0 set 10
|
||||
542 ; *BIOS_DEV = dev;
|
||||
543 00:01A4: E2 20 sep #$20
|
||||
544 longa off
|
||||
545 00:01A6: A5 08 lda <L27+dev_0
|
||||
546 00:01A8: 8F 21 03 00 sta >801 ; volatile
|
||||
547 00:01AC: C2 20 rep #$20
|
||||
548 longa on
|
||||
549 ; *BIOS_LBA = lba;
|
||||
550 00:01AE: A5 0A lda <L27+lba_0
|
||||
551 00:01B0: 8F 22 03 00 sta >802 ; volatile
|
||||
552 00:01B4: A5 0C lda <L27+lba_0+2
|
||||
553 00:01B6: 8F 24 03 00 sta >802+2 ; volatile
|
||||
554 ; *BIOS_BUFFER = (long)buffer;
|
||||
555 00:01BA: A5 0E lda <L27+buffer_0
|
||||
556 00:01BC: 8F 26 03 00 sta >806 ; volatile
|
||||
557 00:01C0: A5 10 lda <L27+buffer_0+2
|
||||
558 00:01C2: 8F 28 03 00 sta >806+2 ; volatile
|
||||
559 ; k_prints("getblock: ");
|
||||
560 00:01C6: F4 xx xx pea #^L22
|
||||
561 00:01C9: F4 xx xx pea #<L22
|
||||
562 00:01CC: 22 xx xx xx jsl ~~k_prints
|
||||
563 ; k_printh(dev);
|
||||
564 00:01D0: A5 08 lda <L27+dev_0
|
||||
565 00:01D2: 29 FF 00 and #$ff
|
||||
566 00:01D5: 48 pha
|
||||
567 00:01D6: 22 xx xx xx jsl ~~k_printh
|
||||
568 ; k_prints(" ");
|
||||
569 00:01DA: F4 xx xx pea #^L22+11
|
||||
570 00:01DD: F4 xx xx pea #<L22+11
|
||||
571 00:01E0: 22 xx xx xx jsl ~~k_prints
|
||||
572 ; k_printh(lba >> 16);
|
||||
573 00:01E4: D4 0C pei <L27+lba_0+2
|
||||
574 00:01E6: D4 0A pei <L27+lba_0
|
||||
575 00:01E8: A9 10 00 lda #$10
|
||||
576 xref ~~~lasr
|
||||
Thu May 20 2021 21:34 Page 12
|
||||
|
||||
|
||||
577 00:01EB: 22 xx xx xx jsl ~~~lasr
|
||||
578 00:01EF: 85 01 sta <R0
|
||||
579 00:01F1: 86 03 stx <R0+2
|
||||
580 00:01F3: D4 03 pei <R0+2
|
||||
581 00:01F5: D4 01 pei <R0
|
||||
582 00:01F7: 22 xx xx xx jsl ~~k_printh
|
||||
583 ; k_printh(lba & 0xffff);
|
||||
584 00:01FB: A5 0A lda <L27+lba_0
|
||||
585 00:01FD: 85 01 sta <R0
|
||||
586 00:01FF: 64 03 stz <R0+2
|
||||
587 00:0201: D4 03 pei <R0+2
|
||||
588 00:0203: D4 01 pei <R0
|
||||
589 00:0205: 22 xx xx xx jsl ~~k_printh
|
||||
590 ; asm {
|
||||
591 ; jsl $001044
|
||||
592 ; };
|
||||
593 asmstart
|
||||
594 00:0209: 22 44 10 00 jsl $001044
|
||||
595 asmend
|
||||
596 ;
|
||||
597 ; if ((*BIOS_STATUS & 0x80) != 0) {
|
||||
598 00:020D: E2 20 sep #$20
|
||||
599 longa off
|
||||
600 00:020F: AF 20 03 00 lda >800 ; volatile
|
||||
601 00:0213: 29 80 and #<$80
|
||||
602 00:0215: C2 20 rep #$20
|
||||
603 longa on
|
||||
604 00:0217: D0 03 bne L29
|
||||
605 00:0219: 82 36 00 brl L10018
|
||||
606 L29:
|
||||
607 ; k_prints(" Error: ");
|
||||
608 00:021C: F4 xx xx pea #^L22+13
|
||||
609 00:021F: F4 xx xx pea #<L22+13
|
||||
610 00:0222: 22 xx xx xx jsl ~~k_prints
|
||||
611 ; k_printh(*BIOS_STATUS);
|
||||
612 00:0226: E2 20 sep #$20
|
||||
613 longa off
|
||||
614 00:0228: AF 20 03 00 lda >800 ; volatile
|
||||
615 00:022C: C2 20 rep #$20
|
||||
616 longa on
|
||||
617 00:022E: 29 FF 00 and #$ff
|
||||
618 00:0231: 48 pha
|
||||
619 00:0232: 22 xx xx xx jsl ~~k_printh
|
||||
620 ; k_putc('\r');
|
||||
621 00:0236: F4 0D 00 pea #<$d
|
||||
622 00:0239: 22 xx xx xx jsl ~~k_putc
|
||||
623 ; return RES_ERROR;
|
||||
624 00:023D: A9 01 00 lda #$1
|
||||
625 L30:
|
||||
626 00:0240: A8 tay
|
||||
627 00:0241: A5 06 lda <L27+2
|
||||
628 00:0243: 85 10 sta <L27+2+10
|
||||
629 00:0245: A5 05 lda <L27+1
|
||||
630 00:0247: 85 0F sta <L27+1+10
|
||||
631 00:0249: 2B pld
|
||||
632 00:024A: 3B tsc
|
||||
633 00:024B: 18 clc
|
||||
634 00:024C: 69 0E 00 adc #L27+10
|
||||
Thu May 20 2021 21:34 Page 13
|
||||
|
||||
|
||||
635 00:024F: 1B tcs
|
||||
636 00:0250: 98 tya
|
||||
637 00:0251: 6B rtl
|
||||
638 ; } else {
|
||||
639 L10018:
|
||||
640 ; k_prints(" OK\r");
|
||||
641 00:0252: F4 xx xx pea #^L22+22
|
||||
642 00:0255: F4 xx xx pea #<L22+22
|
||||
643 00:0258: 22 xx xx xx jsl ~~k_prints
|
||||
644 ; return RES_OK;
|
||||
645 00:025C: A9 00 00 lda #$0
|
||||
646 00:025F: 82 DE FF brl L30
|
||||
647 ; }
|
||||
648 ;}
|
||||
649 00000004 L27 equ 4
|
||||
650 00000005 L28 equ 5
|
||||
651 ends
|
||||
652 efunc
|
||||
653 data
|
||||
654 L22:
|
||||
655 00:0041: 67 65 74 62 db $67,$65,$74,$62,$6C,$6F,$63,$6B,$3A,$20,
|
||||
$00,$20,$00,$20,$45
|
||||
00:0045: 6C 6F 63 6B
|
||||
00:0049: 3A 20 00 20
|
||||
00:004D: 00 20 45
|
||||
656 00:0050: 72 72 6F 72 db $72,$72,$6F,$72,$3A,$20,$00,$20,$4F,$4B,
|
||||
$0D,$00
|
||||
00:0054: 3A 20 00 20
|
||||
00:0058: 4F 4B 0D 00
|
||||
657 00:005C: ends
|
||||
658 ;
|
||||
659 ;/**
|
||||
660 ; * Call the C256 PUTBLOCK kernel routine
|
||||
661 ; */
|
||||
662 ;// int bios_putblock(char dev, long lba, char * b
|
||||
uffer) {
|
||||
663 ;// *BIOS_DEV = dev;
|
||||
664 ;// *BIOS_LBA = lba;
|
||||
665 ;// *BIOS_BUFFER = (long)buffer;
|
||||
666 ;// asm {
|
||||
667 ;// jsl $001024
|
||||
668 ;// };
|
||||
669 ;
|
||||
670 ;// if (*BIOS_STATUS != 0) {
|
||||
671 ;// return RES_ERROR;
|
||||
672 ;// } else {
|
||||
673 ;// return RES_OK;
|
||||
674 ;// }
|
||||
675 ;// }
|
||||
676 ;
|
||||
677 xref ~~k_putc
|
||||
678 xref ~~k_printh
|
||||
679 xref ~~k_prints
|
||||
680 end
|
||||
|
||||
|
||||
Lines assembled: 680
|
||||
Errors: 0
|
||||
Thu May 20 2021 21:34 Page 14
|
||||
|
||||
|
100
src/foenixmcp.c
100
src/foenixmcp.c
|
@ -7,7 +7,6 @@
|
|||
#define DEFAULT_LOG_LEVEL LOG_TRACE
|
||||
#endif
|
||||
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
@ -31,11 +30,15 @@
|
|||
#include "dev/txt_a2560k_b.h"
|
||||
#elif MODEL == MODEL_FOENIX_A2560U || MODEL == MODEL_FOENIX_A2560U_PLUS
|
||||
#include "dev/txt_a2560u.h"
|
||||
#elif MODEL == MODEL_FOENIX_C256U || MODEL == MODEL_FOENIX_C256U_PLUS || MODEL == MODEL_FOENIX_FMX
|
||||
#include "dev/txt_c256.h"
|
||||
#include "dev/txt_evid.h"
|
||||
#endif
|
||||
|
||||
#include "syscalls.h"
|
||||
#include "timers.h"
|
||||
#include "boot.h"
|
||||
#include "dev/bitmap.h"
|
||||
#include "memory.h"
|
||||
#include "dev/block.h"
|
||||
#include "dev/channel.h"
|
||||
|
@ -59,6 +62,7 @@
|
|||
#include "fatfs/ff.h"
|
||||
#include "cli/cli.h"
|
||||
#include "rsrc/font/MSX_CP437_8x8.h"
|
||||
#include "rsrc/bitmaps/image.h"
|
||||
|
||||
const char* VolumeStr[FF_VOLUMES] = { "sd", "fd", "hd" };
|
||||
|
||||
|
@ -296,6 +300,8 @@ void print_error(short channel, char * message, short code) {
|
|||
print(channel, "\n");
|
||||
}
|
||||
|
||||
t_sys_info info;
|
||||
|
||||
/*
|
||||
* Initialize the kernel systems.
|
||||
*/
|
||||
|
@ -306,6 +312,11 @@ void initialize() {
|
|||
|
||||
/* Setup logging early */
|
||||
log_init();
|
||||
log_setlevel(DEFAULT_LOG_LEVEL);
|
||||
|
||||
/* Fill out the system information */
|
||||
sys_get_information(&info);
|
||||
|
||||
#if 0
|
||||
char msg[] = "This is some text to test that the debug to UART works ok\r\n";
|
||||
{
|
||||
|
@ -336,36 +347,60 @@ void initialize() {
|
|||
log(LOG_INFO, "Initializing screens...");
|
||||
txt_init_screen(TXT_SCREEN_A2560K_A);
|
||||
txt_init_screen(TXT_SCREEN_A2560K_B);
|
||||
|
||||
#elif MODEL == MODEL_FOENIX_A2560U || MODEL == MODEL_FOENIX_A2560U_PLUS
|
||||
txt_a2560u_install();
|
||||
txt_init_screen(TXT_SCREEN_A2560U);
|
||||
|
||||
#elif MODEL == MODEL_FOENIX_C256U || MODEL == MODEL_FOENIX_C256U_PLUS || MODEL == MODEL_FOENIX_FMX
|
||||
// Install and initialize the main screen text driver
|
||||
txt_c256_install();
|
||||
txt_init_screen(TXT_SCREEN_C256);
|
||||
|
||||
// If the EVID card is plugged in, install and initialize the EVID driver
|
||||
if (info.screens > 1) {
|
||||
short result = txt_evid_install();
|
||||
txt_init_screen(TXT_SCREEN_EVID);
|
||||
}
|
||||
|
||||
#else
|
||||
#error Cannot identify screen setup
|
||||
#endif
|
||||
|
||||
log(LOG_INFO, "Text system initialized");
|
||||
INFO("Text system initialized...");
|
||||
|
||||
#if MODEL == MODEL_FOENIX_C256U || MODEL == MODEL_FOENIX_C256U_PLUS || MODEL == MODEL_FOENIX_FMX
|
||||
// Initialize the bitmap system
|
||||
bm_init();
|
||||
INFO("Bitmap system initialized...");
|
||||
#endif
|
||||
|
||||
/* Initialize the indicators */
|
||||
ind_init();
|
||||
log(LOG_INFO, "Indicators initialized");
|
||||
INFO("Indicators initialized");
|
||||
|
||||
/* Initialize the interrupt system */
|
||||
int_init();
|
||||
INFO("Interrupts initialized");
|
||||
|
||||
#if HAS_SUPERIO
|
||||
/* Initialize the SuperIO chip */
|
||||
init_SuperIO_config_zones(); // This Init used to be done by the FPGA.
|
||||
init_superio();
|
||||
INFO("SuperIO initialized");
|
||||
#endif
|
||||
|
||||
/* Mute the PSG */
|
||||
psg_mute_all();
|
||||
INFO("PSGs muted");
|
||||
|
||||
/* Initialize and mute the SID chips */
|
||||
sid_init_all();
|
||||
INFO("SIDs initialized");
|
||||
|
||||
/* Initialize the Yamaha sound chips (well, turn their volume down at least) */
|
||||
ym_init();
|
||||
INFO("Yamaha soundchips initialized");
|
||||
|
||||
/* Initialize the CODEC */
|
||||
init_codec();
|
||||
|
@ -376,7 +411,7 @@ void initialize() {
|
|||
bdev_init_system(); // Initialize the channel device system
|
||||
INFO("Block device system ready.");
|
||||
|
||||
if (res = con_install()) {
|
||||
if ((res = con_install())) {
|
||||
log_num(LOG_ERROR, "FAILED: Console installation", res);
|
||||
} else {
|
||||
INFO("Console installed.");
|
||||
|
@ -384,9 +419,11 @@ void initialize() {
|
|||
|
||||
/* Initialize the timers the MCP uses */
|
||||
timers_init();
|
||||
INFO("Timers initialized");
|
||||
|
||||
/* Initialize the real time clock */
|
||||
rtc_init();
|
||||
INFO("Real time clock initialized");
|
||||
|
||||
target_jiffies = sys_time_jiffies() + 300; /* 5 seconds minimum */
|
||||
DEBUG1("target_jiffies assigned: %d", target_jiffies);
|
||||
|
@ -397,21 +434,22 @@ void initialize() {
|
|||
|
||||
/* Play the SID test bong on the Gideon SID implementation */
|
||||
sid_test_internal();
|
||||
TRACE("Internal SID tested");
|
||||
|
||||
if (res = pata_install()) {
|
||||
if ((res = pata_install())) {
|
||||
log_num(LOG_ERROR, "FAILED: PATA driver installation", res);
|
||||
} else {
|
||||
INFO("PATA driver installed.");
|
||||
}
|
||||
|
||||
if (res = sdc_install()) {
|
||||
if ((res = sdc_install())) {
|
||||
ERROR1("FAILED: SDC driver installation %d", res);
|
||||
} else {
|
||||
INFO("SDC driver installed.");
|
||||
}
|
||||
|
||||
#if HAS_FLOPPY
|
||||
if (res = fdc_install()) {
|
||||
if ((res = fdc_install())) {
|
||||
ERROR1("FAILED: Floppy drive initialization %d", res);
|
||||
} else {
|
||||
INFO("Floppy drive initialized.");
|
||||
|
@ -420,14 +458,14 @@ void initialize() {
|
|||
|
||||
// At this point, we should be able to call into to console to print to the screens
|
||||
|
||||
if (res = ps2_init()) {
|
||||
if ((res = ps2_init())) {
|
||||
print_error(0, "FAILED: PS/2 keyboard initialization", res);
|
||||
} else {
|
||||
log(LOG_INFO, "PS/2 keyboard initialized.");
|
||||
}
|
||||
|
||||
#if MODEL == MODEL_FOENIX_A2560K
|
||||
if (res = kbdmo_init()) {
|
||||
if ((res = kbdmo_init())) {
|
||||
log_num(LOG_ERROR, "FAILED: A2560K built-in keyboard initialization", res);
|
||||
} else {
|
||||
log(LOG_INFO, "A2560K built-in keyboard initialized.");
|
||||
|
@ -435,7 +473,7 @@ void initialize() {
|
|||
#endif
|
||||
|
||||
#if HAS_PARALLEL_PORT
|
||||
if (res = lpt_install()) {
|
||||
if ((res = lpt_install())) {
|
||||
log_num(LOG_ERROR, "FAILED: LPT installation", res);
|
||||
} else {
|
||||
log(LOG_INFO, "LPT installed.");
|
||||
|
@ -443,7 +481,7 @@ void initialize() {
|
|||
#endif
|
||||
|
||||
#if HAS_MIDI_PORTS
|
||||
if (res = midi_install()) {
|
||||
if ((res = midi_install())) {
|
||||
log_num(LOG_ERROR, "FAILED: MIDI installation", res);
|
||||
} else {
|
||||
log(LOG_INFO, "MIDI installed.");
|
||||
|
@ -462,7 +500,7 @@ void initialize() {
|
|||
INFO("CLI initialized.");
|
||||
}
|
||||
|
||||
if (res = fsys_init()) {
|
||||
if ((res = fsys_init())) {
|
||||
log_num(LOG_ERROR, "FAILED: file system initialization", res);
|
||||
} else {
|
||||
INFO("File system initialized.");
|
||||
|
@ -471,15 +509,14 @@ void initialize() {
|
|||
|
||||
#define BOOT_DEFAULT -1 // User chose default, or the time to over-ride has passed
|
||||
|
||||
t_file_info file;
|
||||
|
||||
int main(int argc, char * argv[]) {
|
||||
short result;
|
||||
short i;
|
||||
//*((volatile uint32_t*const)0xfec80008) = 0xff99ff22L;
|
||||
|
||||
initialize();
|
||||
|
||||
//*((volatile uint32_t*const)0xfec00000) = 0x16;
|
||||
|
||||
#if MODEL == MODEL_FOENIX_A2560U || MODEL == MODEL_FOENIX_A2560U_PLUS
|
||||
// Make sure the command path is set to the default before we get started
|
||||
cli_command_set("");
|
||||
|
||||
|
@ -490,7 +527,36 @@ int main(int argc, char * argv[]) {
|
|||
boot_from_bdev(boot_dev);
|
||||
|
||||
log(LOG_INFO, "Stopping.");
|
||||
#elif MODEL == MODEL_FOENIX_C256U || MODEL == MODEL_FOENIX_C256U_PLUS || MODEL == MODEL_FOENIX_FMX
|
||||
printf("\n\nSDC directory:\n");
|
||||
int directory = fsys_opendir("/sd/");
|
||||
while (fsys_readdir(directory, &file) == 0) {
|
||||
if (file.name[0] == 0) {
|
||||
break;
|
||||
}
|
||||
printf("%s\n", file.name);
|
||||
}
|
||||
fsys_closedir(directory);
|
||||
|
||||
printf("\n\nHDC directory:\n");
|
||||
directory = fsys_opendir("/hd/");
|
||||
while (fsys_readdir(directory, &file) == 0) {
|
||||
if (file.name[0] == 0) {
|
||||
break;
|
||||
}
|
||||
printf("%s\n", file.name);
|
||||
}
|
||||
fsys_closedir(directory);
|
||||
|
||||
txt_clear(0, 2);
|
||||
bm_fill((uint8_t *)0xb00000, 0, 640, 480);
|
||||
bm_load_clut(0, splashscreen_lut);
|
||||
bm_load_rle((uint8_t *)0xb00000, splashscreen_pix, 640, 480);
|
||||
bm_set_data(0, (uint8_t *)0xb00000);
|
||||
bm_set_visibility(0, 0, 1);
|
||||
#endif
|
||||
|
||||
/* Infinite loop... */
|
||||
while (1) {};
|
||||
while (1) {
|
||||
};
|
||||
}
|
||||
|
|
36
src/include/C256/dma_c256.h
Normal file
36
src/include/C256/dma_c256.h
Normal file
|
@ -0,0 +1,36 @@
|
|||
/**
|
||||
* @file dma_c256.h
|
||||
* @brief Definitions of the video and system DMA registers
|
||||
* @version 0.1
|
||||
* @date 2023-10-02
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef __DMA_C256_H_
|
||||
#define __DMA_C256_H_
|
||||
|
||||
#define VDMA_CTRL ((volatile __attribute__((far)) uint8_t *)0xaf0400)
|
||||
#define VDMA_CTRL_EN 0x01
|
||||
#define VDMA_CTRL_2D 0x02
|
||||
#define VDMA_CTRL_FILL 0x04
|
||||
#define VDMA_CTRL_IEN 0x08 // Interrupt Enable
|
||||
#define VDMA_CTRL_SRC_SRAM 0x10
|
||||
#define VDMA_CTRL_DST_SRAM 0x20
|
||||
#define VDMA_CTRL_TRF 0x80
|
||||
|
||||
#define VDMA_STAT ((volatile __attribute__((far)) uint8_t *)0xaf0401)
|
||||
#define VDMA_STAT_ERR_SIZE 0x01
|
||||
#define VDMA_STAT_ERR_DST 0x02
|
||||
#define VDMA_STAT_ERR_SRC 0x04
|
||||
#define VDMA_STAT_TFR_BUSY 0x80
|
||||
|
||||
#define VDMA_FILL_VALUE ((volatile __attribute__((far)) uint8_t *)0xaf0401)
|
||||
#define VDMA_SRC_ADDR ((volatile __attribute__((far)) uint8_t *)0xaf0402)
|
||||
#define VDMA_DST_ADDR ((volatile __attribute__((far)) uint8_t *)0xaf0405)
|
||||
#define VDMA_SIZE ((volatile __attribute__((far)) uint8_t *)0xaf0408)
|
||||
#define VDMA_SIZE_X ((volatile __attribute__((far)) uint16_t *)0xaf0408)
|
||||
#define VDMA_SIZE_Y ((volatile __attribute__((far)) uint16_t *)0xaf040a)
|
||||
#define VDMA_SRC_STRIDE ((volatile __attribute__((far)) uint16_t *)0xaf040c)
|
||||
#define VDMA_DST_STRIDE ((volatile __attribute__((far)) uint16_t *)0xaf040e)
|
||||
|
||||
#endif
|
47
src/include/C256/exp_c256.h
Normal file
47
src/include/C256/exp_c256.h
Normal file
|
@ -0,0 +1,47 @@
|
|||
/**
|
||||
* @file expansion.h
|
||||
* @brief Register definitions for the C256 expansion card
|
||||
* @version 0.1
|
||||
* @date 2023-08-30
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef __EXPANSION_H_
|
||||
#define __EXPANSION_H_
|
||||
|
||||
#include <stdint.h>
|
||||
#include "sys_general.h"
|
||||
|
||||
#if MODEL == MODEL_FOENIX_FMX || MODEL == MODEL_FOENIX_C256U || MODEL == MODEL_FOENIX_C256U_PLUS
|
||||
|
||||
struct s_c256_exp_card {
|
||||
char card_name[16]; // ASCII-Z name of card (max 15 characters)
|
||||
uint16_t vendor_id; // ID of vendor
|
||||
uint16_t card_id; // ID of card
|
||||
uint16_t class_id; // TBD
|
||||
uint16_t subclass_id; // TBD
|
||||
uint16_t rsrv1; // Reserved
|
||||
uint8_t hardware_revision; // 00 in hex
|
||||
uint8_t fpga_rev; // 00 in hex
|
||||
uint16_t rsrv2; // Reserved
|
||||
uint16_t chksum; // Not implemented
|
||||
};
|
||||
|
||||
#define EXP_CARD_INFO ((volatile __attribute__((far)) struct s_c256_exp_card *)0xae0000)
|
||||
|
||||
/**
|
||||
* Card Vendor IDs (currently there is only an ID for Foenix Retro Systems)
|
||||
*/
|
||||
|
||||
#define EXP_VENDOR_FOENIX 0xf0e1
|
||||
|
||||
/**
|
||||
* Expansion Card IDs (currently only the EVID and ESID cards are supported)
|
||||
*/
|
||||
|
||||
#define EXP_CARD_C100_ESID 0x9172
|
||||
#define EXP_CARD_C200_EVID 0x00c8
|
||||
|
||||
#endif
|
||||
|
||||
#endif
|
84
src/include/C256/gabe_c256.h
Normal file
84
src/include/C256/gabe_c256.h
Normal file
|
@ -0,0 +1,84 @@
|
|||
/**
|
||||
* @file gabe.h
|
||||
* @brief Definitions for the GABE chip
|
||||
* @version 0.1
|
||||
* @date 2023-08-30
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef __GABE_H_
|
||||
#define __GABE_H_
|
||||
|
||||
#include <stdint.h>
|
||||
#include "types.h"
|
||||
|
||||
#define GABE_CTRL_REG ((volatile __attribute__((far)) uint8_t *)0xafe880)
|
||||
#define GABE_CTRL_PWR_LED 0x01 // Controls the LED in the Front of the case (Next to the reset button)
|
||||
#define GABE_CTRL_SDC_LED 0x02 // Controls the LED in the Front of the Case (Next to SDCard)
|
||||
#define GABE_CTRL_STS_LED0 0x04 // Control Status LED0 (General Use) - C256 Foenix U Only
|
||||
#define GABE_CTRL_STS_LED1 0x08 // Control Status LED0 (General Use) - C256 Foenix U Only
|
||||
#define BUZZER_CONTROL 0x10 // Controls the Buzzer
|
||||
#define GABE_CTRL_WRM_RST 0x80 // Warm Reset (needs to Setup other registers)
|
||||
|
||||
#define GABE_RST_AUTH ((volatile __attribute__((far)) uint16_t *)0xafe882) // Set to 0xDEAD to enable reset
|
||||
|
||||
|
||||
#define GABE_LED_FLASH_CTRL ((volatile __attribute__((far)) uint8_t *)0xafe881) // Flashing LED Control
|
||||
#define GABE_LED0_FLASH_CTRL 0x01 // 0- Automatic Flash 1 - Bypass Flash Timer (Use GABE_CTRL_STS_LED0 to manually control)
|
||||
#define GABE_LED1_FLASH_CTRL 0x02 // 0- Automatic Flash 1 - Bypass Flash Timer (Use GABE_CTRL_STS_LED1 to manually control)
|
||||
|
||||
#define GABE_LD0_FLASH_FRQ_MASK 0x30
|
||||
#define GABE_LD0_FLASH_FRQ_1HZ 0x00 // LD0 flashes at 1Hz
|
||||
#define GABE_LD0_FLASH_FRQ_2HZ 0x10 // LD0 flashes at 2Hz
|
||||
#define GABE_LD0_FLASH_FRQ_4HZ 0x20 // LD0 flashes at 4Hz
|
||||
#define GABE_LD0_FLASH_FRQ_5HZ 0x30 // LD0 flashes at 5Hz
|
||||
|
||||
#define GABE_LD1_FLASH_FRQ_MASK 0xc0
|
||||
#define GABE_LD1_FLASH_FRQ_1HZ 0x00 // LD1 flashes at 2Hz
|
||||
#define GABE_LD1_FLASH_FRQ_2HZ 0x40 // LD1 flashes at 4Hz
|
||||
#define GABE_LD1_FLASH_FRQ_4HZ 0x80 // LD1 flashes at 5Hz
|
||||
#define GABE_LD1_FLASH_FRQ_5HZ 0xc0 // LD1 flashes at 1Hz
|
||||
|
||||
#define GABE_RNG_DATA ((volatile __attribute__((far)) uint16_t *)0xafe884) // Random Number Generator (read for data, write for seed)
|
||||
#define GABE_RNG_SEED ((volatile __attribute__((far)) uint16_t *)0xafe884) // Random Number Generator (read for data, write for seed)
|
||||
#define GABE_RNG_STAT ((volatile __attribute__((far)) uint16_t *)0xafe886) // Random Number Generator Status (read)
|
||||
#define GABE_RNG_LFSR_DONE 0x80
|
||||
#define GABE_RNG_CTRL ((volatile __attribute__((far)) uint16_t *)0xafe886) // Random Number Generator Control (write)
|
||||
#define GABE_RNG_CTRL_EN 0x01 // Enable the LFSR block
|
||||
#define GABE_RNG_CTRL_LD_SEED 0x02 // Toggle after setting seed to load seed
|
||||
|
||||
#define GABE_DIP_REG ((volatile __attribute__((far)) uint16_t *)0xafe80e) // User and boot mode DIP switches
|
||||
#define HD_INSTALLED 0x0080
|
||||
#define DIP_BOOT_IDE 0x0000
|
||||
#define DIP_BOOT_SDCARD 0x0100
|
||||
#define DIP_BOOT_FLOPPY 0x0200
|
||||
|
||||
/**
|
||||
* @brief Structure to represent the machine ID and expansion card info
|
||||
*
|
||||
*/
|
||||
union gabe_sys_stat_u {
|
||||
struct {
|
||||
uint8_t machine_id:3;
|
||||
uint8_t rsrv:1;
|
||||
uint8_t no_expansion:1;
|
||||
};
|
||||
uint8_t reg;
|
||||
};
|
||||
|
||||
#define GABE_SYS_STAT ((volatile __attribute__((far)) union gabe_sys_stat_u *)0xafe887)
|
||||
|
||||
/**
|
||||
* @brief Structure to respresent the version of the GABE chip
|
||||
*
|
||||
*/
|
||||
struct gabe_version_s {
|
||||
uint16_t subversion;
|
||||
uint16_t version;
|
||||
uint16_t model;
|
||||
};
|
||||
|
||||
#define GABE_VERSION ((volatile __attribute__((far)) struct gabe_version_s *)0xafe88a)
|
||||
|
||||
#endif
|
||||
|
20
src/include/C256/pata_c256.h
Normal file
20
src/include/C256/pata_c256.h
Normal file
|
@ -0,0 +1,20 @@
|
|||
/*
|
||||
* Definitions to access the PATA port on the C256
|
||||
*/
|
||||
|
||||
#ifndef __PATA_C256_H
|
||||
#define __PATA_C256_H
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#define PATA_DATA_16 ((volatile uint16_t *)0xAFE838)
|
||||
#define PATA_DATA_8 ((volatile uint8_t *)0xAFE830)
|
||||
#define PATA_ERROR ((volatile uint8_t *)0xAFE831)
|
||||
#define PATA_SECT_CNT ((volatile uint8_t *)0xAFE832)
|
||||
#define PATA_SECT_SRT ((volatile uint8_t *)0xAFE833)
|
||||
#define PATA_CLDR_LO ((volatile uint8_t *)0xAFE834)
|
||||
#define PATA_CLDR_HI ((volatile uint8_t *)0xAFE835)
|
||||
#define PATA_HEAD ((volatile uint8_t *)0xAFE836)
|
||||
#define PATA_CMD_STAT ((volatile uint8_t *)0xAFE837)
|
||||
|
||||
#endif
|
26
src/include/C256/ps2_c256.h
Normal file
26
src/include/C256/ps2_c256.h
Normal file
|
@ -0,0 +1,26 @@
|
|||
#ifndef __PS2_C256_H
|
||||
#define __PS2_C256_H
|
||||
|
||||
/*
|
||||
* Ports for the PS/2 keyboard and mouse on the C256
|
||||
*/
|
||||
|
||||
#if MODEL == MODEL_FOENIX_FMX
|
||||
|
||||
#define PS2_STATUS ((volatile __attribute__((far)) char *)0xaf1064)
|
||||
#define PS2_CMD_BUF ((volatile __attribute__((far)) char *)0xaf1064)
|
||||
#define PS2_OUT_BUF ((volatile __attribute__((far)) char *)0xaf1060)
|
||||
#define PS2_INPT_BUF ((volatile __attribute__((far)) char *)0xaf1060)
|
||||
#define PS2_DATA_BUF ((volatile __attribute__((far)) char *)0xaf1060)
|
||||
|
||||
#else
|
||||
|
||||
#define PS2_STATUS ((volatile __attribute__((far)) char *)0xaf1807)
|
||||
#define PS2_CMD_BUF ((volatile __attribute__((far)) char *)0xaf1807)
|
||||
#define PS2_OUT_BUF ((volatile __attribute__((far)) char *)0xaf1803)
|
||||
#define PS2_INPT_BUF ((volatile __attribute__((far)) char *)0xaf1803)
|
||||
#define PS2_DATA_BUF ((volatile __attribute__((far)) char *)0xaf1803)
|
||||
|
||||
#endif
|
||||
|
||||
#endif
|
37
src/include/C256/sdc_c256.h
Normal file
37
src/include/C256/sdc_c256.h
Normal file
|
@ -0,0 +1,37 @@
|
|||
/*
|
||||
* Definitions for access to the SDC controller
|
||||
*/
|
||||
|
||||
#ifndef __SDC_C256_H
|
||||
#define __SDC_C256_H
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#define GABE_SDC_REG ((volatile uint8_t *)0xafe812)
|
||||
#define GABE_SDC_PRESENT 0x01 /* Is an SD card present? --- 0:Yes, 1:No */
|
||||
#define GABE_SDC_WPROT 0x02 /* Is the SD card write protected? --- 0:Yes, 1:No */
|
||||
|
||||
#define SDC_VERSION_REG ((volatile uint8_t *)0xafea00)
|
||||
#define SDC_CONTROL_REG ((volatile uint8_t *)0xafea01)
|
||||
#define SDC_TRANS_TYPE_REG ((volatile uint8_t *)0xafea02)
|
||||
|
||||
#define SDC_TRANS_CONTROL_REG ((volatile uint8_t *)0xafea03)
|
||||
#define SDC_TRANS_STATUS_REG ((volatile uint8_t *)0xafea04)
|
||||
#define SDC_TRANS_ERROR_REG ((volatile uint8_t *)0xafea05)
|
||||
#define SDC_DIRECT_ACCESS_REG ((volatile uint8_t *)0xafea06)
|
||||
#define SDC_SD_ADDR_7_0_REG ((volatile uint8_t *)0xafea07)
|
||||
#define SDC_SD_ADDR_15_8_REG ((volatile uint8_t *)0xafea08)
|
||||
#define SDC_SD_ADDR_23_16_REG ((volatile uint8_t *)0xafea09)
|
||||
#define SDC_SD_ADDR_31_24_REG ((volatile uint8_t *)0xafea0A)
|
||||
|
||||
#define SDC_SPI_CLK_DEL_REG ((volatile uint8_t *)0xafea0B)
|
||||
|
||||
#define SDC_RX_FIFO_DATA_REG ((volatile uint8_t *)0xafea10)
|
||||
#define SDC_RX_FIFO_DATA_CNT_HI ((volatile uint8_t *)0xafea12)
|
||||
#define SDC_RX_FIFO_DATA_CNT_LO ((volatile uint8_t *)0xafea13)
|
||||
#define SDC_RX_FIFO_CTRL_REG ((volatile uint8_t *)0xafea14)
|
||||
|
||||
#define SDC_TX_FIFO_DATA_REG ((volatile uint8_t *)0xafea20)
|
||||
#define SDC_TX_FIFO_CTRL_REG ((volatile uint8_t *)0xafea24)
|
||||
|
||||
#endif
|
49
src/include/C256/sound_c256.h
Normal file
49
src/include/C256/sound_c256.h
Normal file
|
@ -0,0 +1,49 @@
|
|||
/*
|
||||
* Sound device register definitions for the C256
|
||||
*/
|
||||
|
||||
#ifndef __SOUND_C256_H
|
||||
#define __SOUND_C256_H
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
struct s_sid_voice {
|
||||
uint16_t frequency;
|
||||
uint16_t pulse_width;
|
||||
uint8_t control;
|
||||
uint8_t attack_decay;
|
||||
uint8_t sustain_release;
|
||||
};
|
||||
|
||||
struct s_sid {
|
||||
struct s_sid_voice v1;
|
||||
struct s_sid_voice v2;
|
||||
struct s_sid_voice v3;
|
||||
|
||||
uint16_t filter_frequency;
|
||||
uint8_t resonance_filter;
|
||||
uint8_t mode_volume;
|
||||
|
||||
uint8_t pot_x;
|
||||
uint8_t pot_y;
|
||||
uint8_t osc3;
|
||||
uint8_t env3;
|
||||
};
|
||||
|
||||
#define PSG_PORT ((volatile __attribute__((far)) uint8_t *)0xaff100) /* Control register for the SN76489 */
|
||||
#define OPL3_PORT ((volatile unsigned char *)0xFEC20200) /* Access port for the OPL3 */
|
||||
// #define OPM_EXT_BASE ((volatile unsigned char *)0xFEC20600) /* External OPM base address */
|
||||
// #define OPN2_EXT_BASE ((volatile unsigned char *)0xFEC20400) /* External OPN2 base address */
|
||||
// #define OPM_INT_BASE ((volatile unsigned char *)0xFEC20C00) /* Internal OPM base address */
|
||||
// #define OPN2_INT_BASE ((volatile unsigned char *)0xFEC20A00) /* Internal OPN2 base address */
|
||||
#define CODEC ((volatile __attribute__((far)) uint16_t *)0xafe900) /* Data register for the CODEC */
|
||||
#define CODEC_WR_CTRL ((volatile __attribute__((far)) uint8_t *)0xafe902) /* Data register for the CODEC */
|
||||
|
||||
/*
|
||||
* Internal SID
|
||||
*/
|
||||
|
||||
#define SID_INT_N_V1_FREQ_LO ((volatile __attribute__((far)) uint8_t *)0xafe400)
|
||||
#define SID_INT_N ((volatile __attribute__((far)) struct s_sid *)0xafe400)
|
||||
|
||||
#endif
|
61
src/include/C256/timers_c256.h
Normal file
61
src/include/C256/timers_c256.h
Normal file
|
@ -0,0 +1,61 @@
|
|||
/**
|
||||
* @file timers_c256.h
|
||||
*
|
||||
* Define timer registers on the C256
|
||||
*/
|
||||
|
||||
#ifndef __C256_TIMERS_H
|
||||
#define __C256_TIMERS_H
|
||||
|
||||
//
|
||||
// TIMER_CTRL_* flags
|
||||
//
|
||||
|
||||
#define TIMER_CTRL_EN 0x01 // Set to enable timer
|
||||
#define TIMER_CTRL_SCLR 0x02 // Set to clear the timer for counting up
|
||||
#define TIMER_CTRL_SLOAD 0x04 // Set to load the timer for counting down
|
||||
#define TIMER_CTRL_CNT_UP 0x08 // Set to count up, clear to count down
|
||||
|
||||
//
|
||||
// TIMER_CMP_* flags
|
||||
//
|
||||
|
||||
#define TIMER_CMP_RECLR 0x01 // Set to reclear the register on reaching the comparison value
|
||||
#define TIMER_CMP_RELOAD 0x02 // Set to reload the charge value on reaching 0
|
||||
|
||||
//
|
||||
// Timer 0 and 1 -- Based on system clock (14318180Hz)
|
||||
//
|
||||
|
||||
#define TIMER_CTRL_0 ((volatile __attribute__((far)) uint8_t *)0x000160)
|
||||
#define TIMER_CHG_L_0 ((volatile __attribute__((far)) uint8_t *)0x000161)
|
||||
#define TIMER_CHG_M_0 ((volatile __attribute__((far)) uint8_t *)0x000162)
|
||||
#define TIMER_CHG_H_0 ((volatile __attribute__((far)) uint8_t *)0x000163)
|
||||
#define TIMER_CMPC_0 ((volatile __attribute__((far)) uint8_t *)0x000164)
|
||||
#define TIMER_CMP_L_0 ((volatile __attribute__((far)) uint8_t *)0x000165)
|
||||
#define TIMER_CMP_M_0 ((volatile __attribute__((far)) uint8_t *)0x000166)
|
||||
#define TIMER_CMP_H_0 ((volatile __attribute__((far)) uint8_t *)0x000167)
|
||||
|
||||
#define TIMER_CTRL_1 ((volatile __attribute__((far)) uint8_t *)0x000168)
|
||||
#define TIMER_CHG_L_1 ((volatile __attribute__((far)) uint8_t *)0x000169)
|
||||
#define TIMER_CHG_M_1 ((volatile __attribute__((far)) uint8_t *)0x00016a)
|
||||
#define TIMER_CHG_H_1 ((volatile __attribute__((far)) uint8_t *)0x00016b)
|
||||
#define TIMER_CMPC_1 ((volatile __attribute__((far)) uint8_t *)0x00016c)
|
||||
#define TIMER_CMP_L_1 ((volatile __attribute__((far)) uint8_t *)0x00016d)
|
||||
#define TIMER_CMP_M_1 ((volatile __attribute__((far)) uint8_t *)0x00016e)
|
||||
#define TIMER_CMP_H_1 ((volatile __attribute__((far)) uint8_t *)0x00016f)
|
||||
|
||||
//
|
||||
// Timer 2 -- Based on start of frame clock (60/70 Hz)
|
||||
//
|
||||
|
||||
#define TIMER_CTRL_2 ((volatile __attribute__((far)) uint8_t *)0x000170)
|
||||
#define TIMER_CHG_L_2 ((volatile __attribute__((far)) uint8_t *)0x000171)
|
||||
#define TIMER_CHG_M_2 ((volatile __attribute__((far)) uint8_t *)0x000172)
|
||||
#define TIMER_CHG_H_2 ((volatile __attribute__((far)) uint8_t *)0x000173)
|
||||
#define TIMER_CMPC_2 ((volatile __attribute__((far)) uint8_t *)0x000174)
|
||||
#define TIMER_CMP_L_2 ((volatile __attribute__((far)) uint8_t *)0x000175)
|
||||
#define TIMER_CMP_M_2 ((volatile __attribute__((far)) uint8_t *)0x000176)
|
||||
#define TIMER_CMP_H_2 ((volatile __attribute__((far)) uint8_t *)0x000177)
|
||||
|
||||
#endif
|
143
src/include/C256/vicky_ii.h
Normal file
143
src/include/C256/vicky_ii.h
Normal file
|
@ -0,0 +1,143 @@
|
|||
/**
|
||||
* @file c256_vicky_ii.h
|
||||
* @author Peter Weingartner (pjw@tailrecursive.org)
|
||||
* @brief Define the registers for Vicky II on the C256 computers.
|
||||
* @version 0.1
|
||||
* @date 2023-08-07
|
||||
*
|
||||
* @copyright Copyright (c) 2023
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef __c256_vicky_ii__
|
||||
#define __c256_vicky_ii__
|
||||
|
||||
#include "types.h"
|
||||
#include <stdint.h>
|
||||
|
||||
/**
|
||||
* @brief Vicky II Master Control Register
|
||||
*
|
||||
*/
|
||||
typedef struct tvky_mstr_ctrl_s {
|
||||
union {
|
||||
struct {
|
||||
int text_enable:1;
|
||||
int text_overlay:1;
|
||||
int graphics_enable:1;
|
||||
int bitmap_enable:1;
|
||||
int tile_enable:1;
|
||||
int sprite_enable:1;
|
||||
int gamma_enable:1;
|
||||
int disable:1;
|
||||
int mode:2;
|
||||
};
|
||||
uint16_t raw;
|
||||
};
|
||||
} *tvky_mstr_ctrl_p;
|
||||
|
||||
#define VKY_MCR_TEXT 0x0001
|
||||
#define VKY_MCR_TEXT_OVERLAY 0x0002
|
||||
#define VKY_MCR_GRAPHICS 0x0004
|
||||
#define VKY_MCR_BITMAP 0x0008
|
||||
#define VKY_MCR_TILE 0x0010
|
||||
#define VKY_MCR_SPRITE 0x0020
|
||||
#define VKY_MCR_GAMMA 0x0040
|
||||
#define VKY_MCR_DISABLE 0x0080
|
||||
#define VKY_MCR_RES_MASK 0x0300
|
||||
#define VKY_MCR_RES_320x240 0x0200
|
||||
#define VKY_MCR_RES_640x480 0x0000
|
||||
#define VKY_MCR_RES_400x300 0x0300
|
||||
#define VKY_MCR_RES_800x600 0x0100
|
||||
|
||||
/**
|
||||
* @brief Vicky II Border Control Registers
|
||||
*
|
||||
*/
|
||||
typedef struct tvky_border_ctrl_s {
|
||||
uint8_t control;
|
||||
t_color3 color;
|
||||
uint8_t size_x;
|
||||
uint8_t sizy_y;
|
||||
} *tvky_border_ctrl_p;
|
||||
|
||||
/**
|
||||
* @brief Vicky II Cursor Control Registers
|
||||
*
|
||||
*/
|
||||
typedef struct tvky_crsr_ctrl_s {
|
||||
uint8_t control;
|
||||
uint8_t start_address;
|
||||
char character;
|
||||
uint8_t color;
|
||||
uint16_t column;
|
||||
uint16_t row;
|
||||
} *tvky_crsr_ctrl_p;
|
||||
|
||||
//
|
||||
// Define the locations of the registers
|
||||
//
|
||||
|
||||
#define tvky_mstr_ctrl ((volatile __attribute__((far)) tvky_mstr_ctrl_p)0xaf0000)
|
||||
#define tvky_brdr_ctrl ((volatile __attribute__((far)) tvky_border_ctrl_p)0xaf0004)
|
||||
#define tvky_bg_color ((volatile __attribute__((far)) t_color3 *)0xaf000d)
|
||||
#define tvky_crsr_ctrl ((volatile __attribute__((far)) tvky_crsr_ctrl_p)0xaf0010)
|
||||
|
||||
//
|
||||
// Text Color Lookup Tables
|
||||
//
|
||||
#define tvky_text_fg_color ((volatile __attribute__((far)) t_color4 *)0xaf1f40)
|
||||
#define tvky_text_bg_color ((volatile __attribute__((far)) t_color4 *)0xaf1f80)
|
||||
|
||||
//
|
||||
// Text Fonts Sets 0 and 1
|
||||
//
|
||||
#define tvky_font_set_0 ((volatile __attribute__((far)) uint8_t *)0xaf8000)
|
||||
|
||||
//
|
||||
// Graphics Color Lookup Tables
|
||||
//
|
||||
#define VKY_GR_CLUT_0 ((volatile __attribute__((far)) uint8_t *)0xaf2000)
|
||||
#define VKY_GR_CLUT_1 ((volatile __attribute__((far)) uint8_t *)0xaf2400)
|
||||
#define VKY_GR_CLUT_2 ((volatile __attribute__((far)) uint8_t *)0xaf2800)
|
||||
#define VKY_GR_CLUT_3 ((volatile __attribute__((far)) uint8_t *)0xaf2c00)
|
||||
|
||||
//
|
||||
// Text mode text and color matrixes
|
||||
//
|
||||
#define tvky_text_matrix ((volatile __attribute__((far)) char *)0xafa000)
|
||||
#define tvky_color_matrix ((volatile __attribute__((far)) char *)0xafc000)
|
||||
|
||||
//
|
||||
// Bitmap graphics registers
|
||||
//
|
||||
|
||||
typedef volatile __attribute__((far24)) uint8_t *p_far24;
|
||||
|
||||
#define bm0_control ((volatile __attribute__((far)) uint8_t *)0xaf0100)
|
||||
#define bm0_address ((volatile __attribute__((far)) uint8_t *)0xaf0101)
|
||||
#define bm0_offset_x ((volatile __attribute__((far)) uint16_t *)0xaf0104)
|
||||
#define bm0_offset_y ((volatile __attribute__((far)) uint16_t *)0xaf0106)
|
||||
|
||||
#define bm1_control ((volatile __attribute__((far)) uint8_t *)0xaf0108)
|
||||
#define bm1_address ((volatile __attribute__((far)) uint8_t *)0xaf0109)
|
||||
#define bm1_offset_x ((volatile __attribute__((far)) uint16_t *)0xaf010c)
|
||||
#define bm1_offset_y ((volatile __attribute__((far)) uint16_t *)0xaf010d)
|
||||
|
||||
#define MousePointer_Mem_A ((volatile uint8_t *)0xaf0500)
|
||||
#define MousePtr_A_CTRL_Reg ((volatile uint16_t *)0xaf0700)
|
||||
#define MousePtr_En 0x0001
|
||||
|
||||
#define MousePtr_A_X_Pos ((volatile uint16_t *)0xaf0702)
|
||||
#define MousePtr_A_Y_Pos ((volatile uint16_t *)0xaf0704)
|
||||
#define MousePtr_A_Mouse0 ((volatile uint8_t *)0xaf0706)
|
||||
#define MousePtr_A_Mouse1 ((volatile uint8_t *)0xaf0707)
|
||||
#define MousePtr_A_Mouse2 ((volatile uint8_t *)0xaf0708)
|
||||
|
||||
//
|
||||
// Video RAM
|
||||
//
|
||||
|
||||
#define vram_base ((volatile p_far24)0xb00000)
|
||||
|
||||
#endif
|
|
@ -12,7 +12,6 @@
|
|||
|
||||
#define FSYS_SECTOR_SZ 512 /* Size of a sector */
|
||||
#define MAX_PATH_LEN 256 /* Maximum length of a file path */
|
||||
#define MAX_TRIES_BUSY 100000 /* The maximum number of times to check for an operation to complete (general purpose) */
|
||||
|
||||
/*
|
||||
* Definitions of special characters
|
||||
|
|
20
src/include/dma_reg.h
Normal file
20
src/include/dma_reg.h
Normal file
|
@ -0,0 +1,20 @@
|
|||
/*
|
||||
* Master include file for all the DMA registers
|
||||
*/
|
||||
|
||||
#ifndef __DMA_REG_H
|
||||
#define __DMA_REG_H
|
||||
|
||||
#include "sys_general.h"
|
||||
|
||||
#if MODEL == MODEL_FOENIX_A2560K || MODEL == MODEL_FOENIX_GENX || MODEL == MODEL_FOENIX_A2560X
|
||||
#include "A2560K/dma_a2560k.h"
|
||||
|
||||
#elif MODEL == MODEL_FOENIX_A2560U || MODEL == MODEL_FOENIX_A2560U_PLUS
|
||||
#include "A2560U/dma_a2560u.h"
|
||||
|
||||
#elif MODEL == MODEL_FOENIX_FMX || MODEL == MODEL_FOENIX_C256U || MODEL == MODEL_FOENIX_C256U_PLUS
|
||||
#include "C256/dma_c256.h"
|
||||
#endif
|
||||
|
||||
#endif
|
16
src/include/exp_reg.h
Normal file
16
src/include/exp_reg.h
Normal file
|
@ -0,0 +1,16 @@
|
|||
/**
|
||||
* @file exp_reg.h
|
||||
* @brief Define the registers to access the expansion port
|
||||
* @version 0.1
|
||||
* @date 2023-08-30
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef __EXP_REG_H_
|
||||
#define __EXP_REG_H_
|
||||
|
||||
#if MODEL == MODEL_FOENIX_FMX || MODEL == MODEL_FOENIX_C256U || MODEL == MODEL_FOENIX_C256U_PLUS
|
||||
#include "C256/exp_c256.h"
|
||||
#endif
|
||||
|
||||
#endif
|
|
@ -27,6 +27,14 @@
|
|||
#define HAS_OPL3 1
|
||||
#elif MODEL == MODEL_FOENIX_A2560U
|
||||
#define HAS_OPL3 1
|
||||
#elif MODEL == MODEL_FOENIX_C256U_PLUS || MODEL == MODEL_FOENIX_C256U
|
||||
#define HAS_OPL3 1
|
||||
#elif MODEL == MODEL_FOENIX_C256U_FMX
|
||||
#define HAS_SUPERIO 1
|
||||
#define HAS_PARALLEL_PORT 1
|
||||
#define HAS_MIDI_PORTS 1
|
||||
#define HAS_EXTERNAL_SIDS 1
|
||||
#define HAS_OPL3 1
|
||||
#endif
|
||||
|
||||
|
||||
|
|
|
@ -14,4 +14,8 @@
|
|||
|
||||
#elif MODEL == MODEL_FOENIX_A2560U || MODEL == MODEL_FOENIX_A2560U_PLUS
|
||||
#include "A2560U/gabe_a2560u.h"
|
||||
|
||||
#elif MODEL == MODEL_FOENIX_FMX || MODEL == MODEL_FOENIX_C256U || MODEL == MODEL_FOENIX_C256U_PLUS
|
||||
#include "C256/gabe_c256.h"
|
||||
|
||||
#endif
|
||||
|
|
|
@ -10,8 +10,12 @@
|
|||
|
||||
#if MODEL == MODEL_FOENIX_A2560K || MODEL == MODEL_FOENIX_GENX || MODEL == MODEL_FOENIX_A2560X
|
||||
#include "A2560K/pata_a2560k.h"
|
||||
|
||||
#elif MODEL == MODEL_FOENIX_A2560U || MODEL == MODEL_FOENIX_A2560U_PLUS
|
||||
#include "A2560U/pata_a2560u.h"
|
||||
|
||||
#elif MODEL == MODEL_FOENIX_FMX || MODEL == MODEL_FOENIX_C256U || MODEL == MODEL_FOENIX_C256U_PLUS
|
||||
#include "C256/pata_c256.h"
|
||||
#endif
|
||||
|
||||
/*
|
||||
|
|
|
@ -10,8 +10,12 @@
|
|||
|
||||
#if MODEL == MODEL_FOENIX_A2560K || MODEL == MODEL_FOENIX_GENX || MODEL == MODEL_FOENIX_A2560X
|
||||
#include "A2560K/ps2_a2560k.h"
|
||||
|
||||
#elif MODEL == MODEL_FOENIX_A2560U || MODEL == MODEL_FOENIX_A2560U_PLUS
|
||||
#include "A2560U/ps2_a2560u.h"
|
||||
|
||||
#elif MODEL == MODEL_FOENIX_FMX || MODEL == MODEL_FOENIX_C256U || MODEL == MODEL_FOENIX_C256U_PLUS
|
||||
#include "C256/ps2_c256.h"
|
||||
#endif
|
||||
|
||||
/*
|
||||
|
@ -48,8 +52,10 @@
|
|||
#define PS2_CTRL_ENABLE_2 0xA9 /* Enable the second (mouse) port */
|
||||
#define PS2_CTRL_DISABLE_2 0xA7 /* Disable the second (mouse) port */
|
||||
|
||||
#define KBD_CMD_ID 0xF2 /* Keyboard command: identify */
|
||||
#define KBD_CMD_RESET 0xFF /* Keyboard command: reset the keyboard */
|
||||
#define KBD_CMD_ENABLE 0xF4 /* Keyboard command: enable to keyboard */
|
||||
#define KBD_CMD_DISABLE 0xF5 /* Keyboard command: disable scanning */
|
||||
#define KBD_CMD_SET_LED 0xED /* Keyboard command: set the LEDs */
|
||||
|
||||
#define MOUSE_CMD_PREFIX 0xD4 /* Controller code to prefix all mouse commands */
|
||||
|
|
|
@ -47,6 +47,26 @@
|
|||
#define RTC_CTRL ((volatile unsigned char *)0x00B0009C)
|
||||
#define RTC_CENTURY ((volatile unsigned char *)0x00B0009E)
|
||||
|
||||
#elif MODEL == MODEL_FOENIX_FMX || MODEL == MODEL_FOENIX_C256U || MODEL == MODEL_FOENIX_C256U_PLUS
|
||||
|
||||
#define RTC_BASE ((volatile unsigned char *)0xaf0800)
|
||||
#define RTC_SEC ((volatile unsigned char *)0xaf0800)
|
||||
#define RTC_ALRM_SEC ((volatile unsigned char *)0xaf0801)
|
||||
#define RTC_MIN ((volatile unsigned char *)0xaf0802)
|
||||
#define RTC_ALRM_MIN ((volatile unsigned char *)0xaf0803)
|
||||
#define RTC_HOUR ((volatile unsigned char *)0xaf0804)
|
||||
#define RTC_ALRM_HOUR ((volatile unsigned char *)0xaf0805)
|
||||
#define RTC_DAY ((volatile unsigned char *)0xaf0806)
|
||||
#define RTC_ALRM_DAY ((volatile unsigned char *)0xaf0807)
|
||||
#define RTC_DAY_OF_WEEK ((volatile unsigned char *)0xaf0808)
|
||||
#define RTC_MONTH ((volatile unsigned char *)0xaf0809)
|
||||
#define RTC_YEAR ((volatile unsigned char *)0xaf080a)
|
||||
#define RTC_RATES ((volatile unsigned char *)0xaf080b)
|
||||
#define RTC_ENABLES ((volatile unsigned char *)0xaf080c)
|
||||
#define RTC_FLAGS ((volatile unsigned char *)0xaf080d)
|
||||
#define RTC_CTRL ((volatile unsigned char *)0xaf080e)
|
||||
#define RTC_CENTURY ((volatile unsigned char *)0xaf080f)
|
||||
|
||||
#endif
|
||||
|
||||
/* Rate fields and settings */
|
||||
|
|
|
@ -10,10 +10,15 @@
|
|||
|
||||
#if MODEL == MODEL_FOENIX_A2560K
|
||||
#include "A2560K/sdc_a2560k.h"
|
||||
|
||||
#elif MODEL == MODEL_FOENIX_A2560X || MODEL == MODEL_FOENIX_GENX
|
||||
#include "A2560X/sdc_a2560x.h"
|
||||
|
||||
#elif MODEL == MODEL_FOENIX_A2560U || MODEL == MODEL_FOENIX_A2560U_PLUS
|
||||
#include "A2560U/sdc_a2560u.h"
|
||||
|
||||
#elif MODEL == MODEL_FOENIX_FMX || MODEL == MODEL_FOENIX_C256U || MODEL == MODEL_FOENIX_C256U_PLUS
|
||||
#include "C256/sdc_c256.h"
|
||||
#endif
|
||||
|
||||
/*
|
||||
|
|
|
@ -10,8 +10,11 @@
|
|||
#if MODEL == MODEL_FOENIX_A2560K || MODEL == MODEL_FOENIX_GENX || MODEL == MODEL_FOENIX_A2560X
|
||||
#include "A2560K/sound_a2560k.h"
|
||||
|
||||
#elif MODEL == MODEL_FOENIX_A2560U || MODEL_FOENIX_A2560U_PLUS
|
||||
#elif MODEL == MODEL_FOENIX_A2560U || MODEL == MODEL_FOENIX_A2560U_PLUS
|
||||
#include "A2560U/sound_a2560u.h"
|
||||
|
||||
#elif MODEL == MODEL_FOENIX_FMX || MODEL == MODEL_FOENIX_C256U || MODEL == MODEL_FOENIX_C256U_PLUS
|
||||
#include "C256/sound_c256.h"
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
|
|
@ -12,12 +12,23 @@
|
|||
|
||||
#include "types.h"
|
||||
#include "interrupt.h"
|
||||
#include "sys_general.h"
|
||||
#include "dev/channel.h"
|
||||
#include "dev/block.h"
|
||||
#include "dev/fsys.h"
|
||||
#include "dev/rtc.h"
|
||||
#include "dev/txt_screen.h"
|
||||
|
||||
/*
|
||||
* Define the machine-specific system call function prefix
|
||||
*/
|
||||
|
||||
#if MODEL == MODEL_FOENIX_FMX || MODEL == MODEL_FOENIX_C256U || MODEL == MODEL_FOENIX_C256U_PLUS
|
||||
#define SYSTEMCALL __attribute__((simple_call))
|
||||
#else
|
||||
#define SYSTEMCALL
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Syscall function numbers
|
||||
*/
|
||||
|
@ -141,21 +152,21 @@ extern int32_t syscall(int32_t function, ...);
|
|||
* Inputs:
|
||||
* result = the code to return to the kernel
|
||||
*/
|
||||
extern void sys_exit(short result);
|
||||
extern SYSTEMCALL void sys_exit(short result);
|
||||
|
||||
/*
|
||||
* Enable all interrupts
|
||||
*
|
||||
* NOTE: this is actually provided in the low level assembly
|
||||
*/
|
||||
extern void sys_int_enable_all();
|
||||
extern SYSTEMCALL void sys_int_enable_all();
|
||||
|
||||
/*
|
||||
* Disable all interrupts
|
||||
*
|
||||
* NOTE: this is actually provided in the low level assembly
|
||||
*/
|
||||
extern void sys_int_disable_all();
|
||||
extern SYSTEMCALL void sys_int_disable_all();
|
||||
|
||||
/*
|
||||
* Disable an interrupt by masking it
|
||||
|
@ -163,7 +174,7 @@ extern void sys_int_disable_all();
|
|||
* Inputs:
|
||||
* n = the number of the interrupt: n[7..4] = group number, n[3..0] = individual number.
|
||||
*/
|
||||
extern void sys_int_disable(unsigned short n);
|
||||
extern SYSTEMCALL void sys_int_disable(unsigned short n);
|
||||
|
||||
/*
|
||||
* Enable an interrupt
|
||||
|
@ -171,7 +182,7 @@ extern void sys_int_disable(unsigned short n);
|
|||
* Inputs:
|
||||
* n = the number of the interrupt
|
||||
*/
|
||||
extern void sys_int_enable(unsigned short n);
|
||||
extern SYSTEMCALL void sys_int_enable(unsigned short n);
|
||||
|
||||
/*
|
||||
* Register a handler for a given interrupt.
|
||||
|
@ -183,7 +194,7 @@ extern void sys_int_enable(unsigned short n);
|
|||
* Returns:
|
||||
* the pointer to the previous interrupt handler
|
||||
*/
|
||||
extern p_int_handler sys_int_register(unsigned short n, p_int_handler handler);
|
||||
extern SYSTEMCALL p_int_handler sys_int_register(unsigned short n, p_int_handler handler);
|
||||
|
||||
/*
|
||||
* Return true (non-zero) if an interrupt is pending for the given interrupt
|
||||
|
@ -194,7 +205,7 @@ extern p_int_handler sys_int_register(unsigned short n, p_int_handler handler);
|
|||
* Returns:
|
||||
* non-zero if interrupt n is pending, 0 if not
|
||||
*/
|
||||
extern short sys_int_pending(unsigned short n);
|
||||
extern SYSTEMCALL short sys_int_pending(unsigned short n);
|
||||
|
||||
/*
|
||||
* Fill out a s_sys_info structure with the information about the current system
|
||||
|
@ -202,7 +213,7 @@ extern short sys_int_pending(unsigned short n);
|
|||
* Inputs:
|
||||
* info = pointer to a s_sys_info structure to fill out
|
||||
*/
|
||||
extern void sys_get_info(p_sys_info info);
|
||||
extern SYSTEMCALL void sys_get_info(p_sys_info info);
|
||||
|
||||
/*
|
||||
* Acknowledge an interrupt (clear out its pending flag)
|
||||
|
@ -210,7 +221,7 @@ extern void sys_get_info(p_sys_info info);
|
|||
* Inputs:
|
||||
* n = the number of the interrupt: n[7..4] = group number, n[3..0] = individual number.
|
||||
*/
|
||||
extern void sys_int_clear(unsigned short n);
|
||||
extern SYSTEMCALL void sys_int_clear(unsigned short n);
|
||||
|
||||
/***
|
||||
*** Channel system calls
|
||||
|
@ -225,7 +236,7 @@ extern void sys_int_clear(unsigned short n);
|
|||
* Returns:
|
||||
* the value read (if negative, error)
|
||||
*/
|
||||
extern short sys_chan_read_b(short channel);
|
||||
extern SYSTEMCALL short sys_chan_read_b(short channel);
|
||||
|
||||
/*
|
||||
* Read bytes from the channel
|
||||
|
@ -238,7 +249,7 @@ extern short sys_chan_read_b(short channel);
|
|||
* Returns:
|
||||
* number of bytes read, any negative number is an error code
|
||||
*/
|
||||
extern short sys_chan_read(short channel, unsigned char * buffer, short size);
|
||||
extern SYSTEMCALL short sys_chan_read(short channel, unsigned char * buffer, short size);
|
||||
|
||||
/*
|
||||
* Read a line of text from the channel
|
||||
|
@ -251,7 +262,7 @@ extern short sys_chan_read(short channel, unsigned char * buffer, short size);
|
|||
* Returns:
|
||||
* number of bytes read, any negative number is an error code
|
||||
*/
|
||||
extern short sys_chan_readline(short channel, unsigned char * buffer, short size);
|
||||
extern SYSTEMCALL short sys_chan_readline(short channel, unsigned char * buffer, short size);
|
||||
|
||||
/*
|
||||
* Write a single byte to the device
|
||||
|
@ -263,7 +274,7 @@ extern short sys_chan_readline(short channel, unsigned char * buffer, short size
|
|||
* Returns:
|
||||
* 0 on success, a negative value on error
|
||||
*/
|
||||
extern short sys_chan_write_b(short channel, unsigned char b);
|
||||
extern SYSTEMCALL short sys_chan_write_b(short channel, unsigned char b);
|
||||
|
||||
/*
|
||||
* Write a byte to the channel
|
||||
|
@ -275,7 +286,7 @@ extern short sys_chan_write_b(short channel, unsigned char b);
|
|||
* Returns:
|
||||
* number of bytes written, any negative number is an error code
|
||||
*/
|
||||
extern short sys_chan_write(short channel, const unsigned char * buffer, short size);
|
||||
extern SYSTEMCALL short sys_chan_write(short channel, const unsigned char * buffer, short size);
|
||||
|
||||
/*
|
||||
* Return the status of the channel device
|
||||
|
@ -286,7 +297,7 @@ extern short sys_chan_write(short channel, const unsigned char * buffer, short s
|
|||
* Returns:
|
||||
* the status of the device
|
||||
*/
|
||||
extern short sys_chan_status(short channel);
|
||||
extern SYSTEMCALL short sys_chan_status(short channel);
|
||||
|
||||
/*
|
||||
* Ensure that any pending writes to teh device have been completed
|
||||
|
@ -297,7 +308,7 @@ extern short sys_chan_status(short channel);
|
|||
* Returns:
|
||||
* 0 on success, any negative number is an error code
|
||||
*/
|
||||
extern short sys_chan_flush(short channel);
|
||||
extern SYSTEMCALL short sys_chan_flush(short channel);
|
||||
|
||||
/*
|
||||
* Attempt to set the position of the channel cursor (if supported)
|
||||
|
@ -310,7 +321,7 @@ extern short sys_chan_flush(short channel);
|
|||
* Returns:
|
||||
* 0 = success, a negative number is an error.
|
||||
*/
|
||||
extern short sys_chan_seek(short channel, long position, short base);
|
||||
extern SYSTEMCALL short sys_chan_seek(short channel, long position, short base);
|
||||
|
||||
/*
|
||||
* Issue a control command to the device
|
||||
|
@ -324,7 +335,7 @@ extern short sys_chan_seek(short channel, long position, short base);
|
|||
* Returns:
|
||||
* 0 on success, any negative number is an error code
|
||||
*/
|
||||
extern short sys_chan_ioctrl(short channel, short command, uint8_t * buffer, short size);
|
||||
extern SYSTEMCALL short sys_chan_ioctrl(short channel, short command, uint8_t * buffer, short size);
|
||||
|
||||
/*
|
||||
* Open a channel
|
||||
|
@ -337,7 +348,7 @@ extern short sys_chan_ioctrl(short channel, short command, uint8_t * buffer, sho
|
|||
* Returns:
|
||||
* the number of the channel opened, negative number on error
|
||||
*/
|
||||
extern short sys_chan_open(short dev, const uint8_t * path, short mode);
|
||||
extern SYSTEMCALL short sys_chan_open(short dev, const uint8_t * path, short mode);
|
||||
|
||||
/*
|
||||
* Close a channel
|
||||
|
@ -348,7 +359,7 @@ extern short sys_chan_open(short dev, const uint8_t * path, short mode);
|
|||
* Returns:
|
||||
* nothing useful
|
||||
*/
|
||||
extern short sys_chan_close(short chan);
|
||||
extern SYSTEMCALL short sys_chan_close(short chan);
|
||||
|
||||
/**
|
||||
* Swap the channel ID assignments for two channels
|
||||
|
@ -360,7 +371,7 @@ extern short sys_chan_close(short chan);
|
|||
* @param channel2 the ID of the other channel
|
||||
* @return 0 on success, any other number is an error
|
||||
*/
|
||||
extern short sys_chan_swap(short channel1, short channel2);
|
||||
extern SYSTEMCALL short sys_chan_swap(short channel1, short channel2);
|
||||
|
||||
/**
|
||||
* Return the device associated with the channel
|
||||
|
@ -368,7 +379,7 @@ extern short sys_chan_swap(short channel1, short channel2);
|
|||
* @param channel the ID of the channel to query
|
||||
* @return the ID of the device associated with the channel, negative number for error
|
||||
*/
|
||||
extern short sys_chan_device(short channel);
|
||||
extern SYSTEMCALL short sys_chan_device(short channel);
|
||||
|
||||
/*
|
||||
* Compute the size information for the text screen based on the current settings in VICKY
|
||||
|
@ -377,7 +388,7 @@ extern short sys_chan_device(short channel);
|
|||
* Inputs:
|
||||
* screen = the screen number 0 for channel A, 1 for channel B
|
||||
*/
|
||||
extern void sys_text_setsizes(short chan);
|
||||
extern SYSTEMCALL void sys_text_setsizes(short chan);
|
||||
|
||||
/***
|
||||
*** Block device system calls
|
||||
|
@ -386,7 +397,7 @@ extern void sys_text_setsizes(short chan);
|
|||
//
|
||||
// Register a block device driver
|
||||
//
|
||||
extern short sys_bdev_register(p_dev_block device);
|
||||
extern SYSTEMCALL short sys_bdev_register(p_dev_block device);
|
||||
|
||||
//
|
||||
// Read a block from the device
|
||||
|
@ -400,7 +411,7 @@ extern short sys_bdev_register(p_dev_block device);
|
|||
// Returns:
|
||||
// number of bytes read, any negative number is an error code
|
||||
//
|
||||
extern short sys_bdev_read(short dev, long lba, unsigned char * buffer, short size);
|
||||
extern SYSTEMCALL short sys_bdev_read(short dev, long lba, unsigned char * buffer, short size);
|
||||
|
||||
//
|
||||
// Write a block from the device
|
||||
|
@ -414,7 +425,7 @@ extern short sys_bdev_read(short dev, long lba, unsigned char * buffer, short si
|
|||
// Returns:
|
||||
// number of bytes written, any negative number is an error code
|
||||
//
|
||||
extern short sys_bdev_write(short dev, long lba, const unsigned char * buffer, short size);
|
||||
extern SYSTEMCALL short sys_bdev_write(short dev, long lba, const unsigned char * buffer, short size);
|
||||
|
||||
//
|
||||
// Return the status of the block device
|
||||
|
@ -425,7 +436,7 @@ extern short sys_bdev_write(short dev, long lba, const unsigned char * buffer, s
|
|||
// Returns:
|
||||
// the status of the device
|
||||
//
|
||||
extern short sys_bdev_status(short dev);
|
||||
extern SYSTEMCALL short sys_bdev_status(short dev);
|
||||
|
||||
//
|
||||
// Ensure that any pending writes to teh device have been completed
|
||||
|
@ -436,7 +447,7 @@ extern short sys_bdev_status(short dev);
|
|||
// Returns:
|
||||
// 0 on success, any negative number is an error code
|
||||
//
|
||||
extern short sys_bdev_flush(short dev);
|
||||
extern SYSTEMCALL short sys_bdev_flush(short dev);
|
||||
|
||||
//
|
||||
// Issue a control command to the device
|
||||
|
@ -450,7 +461,7 @@ extern short sys_bdev_flush(short dev);
|
|||
// Returns:
|
||||
// 0 on success, any negative number is an error code
|
||||
//
|
||||
extern short sys_bdev_ioctrl(short dev, short command, unsigned char * buffer, short size);
|
||||
extern SYSTEMCALL short sys_bdev_ioctrl(short dev, short command, unsigned char * buffer, short size);
|
||||
|
||||
|
||||
/*
|
||||
|
@ -467,7 +478,7 @@ extern short sys_bdev_ioctrl(short dev, short command, unsigned char * buffer, s
|
|||
* Returns:
|
||||
* the channel ID for the open file (negative if error)
|
||||
*/
|
||||
extern short sys_fsys_open(const char * path, short mode);
|
||||
extern SYSTEMCALL short sys_fsys_open(const char * path, short mode);
|
||||
|
||||
/**
|
||||
* Close access to a previously open file.
|
||||
|
@ -478,7 +489,7 @@ extern short sys_fsys_open(const char * path, short mode);
|
|||
* Returns:
|
||||
* 0 on success, negative number on failure
|
||||
*/
|
||||
extern short sys_fsys_close(short fd);
|
||||
extern SYSTEMCALL short sys_fsys_close(short fd);
|
||||
|
||||
/**
|
||||
* Attempt to open a directory for scanning
|
||||
|
@ -489,7 +500,7 @@ extern short sys_fsys_close(short fd);
|
|||
* Returns:
|
||||
* the handle to the directory if >= 0. An error if < 0
|
||||
*/
|
||||
extern short sys_fsys_opendir(const char * path);
|
||||
extern SYSTEMCALL short sys_fsys_opendir(const char * path);
|
||||
|
||||
/**
|
||||
* Close access to a previously open file.
|
||||
|
@ -500,7 +511,7 @@ extern short sys_fsys_opendir(const char * path);
|
|||
* Returns:
|
||||
* 0 on success, negative number on failure
|
||||
*/
|
||||
extern short sys_fsys_close(short fd);
|
||||
extern SYSTEMCALL short sys_fsys_close(short fd);
|
||||
|
||||
/**
|
||||
* Attempt to open a directory for scanning
|
||||
|
@ -511,7 +522,7 @@ extern short sys_fsys_close(short fd);
|
|||
* Returns:
|
||||
* the handle to the directory if >= 0. An error if < 0
|
||||
*/
|
||||
extern short sys_fsys_opendir(const char * path);
|
||||
extern SYSTEMCALL short sys_fsys_opendir(const char * path);
|
||||
|
||||
/**
|
||||
* Close a previously open directory
|
||||
|
@ -522,7 +533,7 @@ extern short sys_fsys_opendir(const char * path);
|
|||
* Returns:
|
||||
* 0 on success, negative number on error
|
||||
*/
|
||||
extern short sys_fsys_closedir(short dir);
|
||||
extern SYSTEMCALL short sys_fsys_closedir(short dir);
|
||||
|
||||
/**
|
||||
* Attempt to read an entry from an open directory
|
||||
|
@ -534,7 +545,7 @@ extern short sys_fsys_closedir(short dir);
|
|||
* Returns:
|
||||
* 0 on success, negative number on failure
|
||||
*/
|
||||
extern short sys_fsys_readdir(short dir, p_file_info file);
|
||||
extern SYSTEMCALL short sys_fsys_readdir(short dir, p_file_info file);
|
||||
|
||||
/**
|
||||
* Open a directory given the path and search for the first file matching the pattern.
|
||||
|
@ -547,7 +558,7 @@ extern short sys_fsys_readdir(short dir, p_file_info file);
|
|||
* Returns:
|
||||
* the directory handle to use for subsequent calls if >= 0, error if negative
|
||||
*/
|
||||
extern short sys_fsys_findfirst(const char * path, const char * pattern, p_file_info file);
|
||||
extern SYSTEMCALL short sys_fsys_findfirst(const char * path, const char * pattern, p_file_info file);
|
||||
|
||||
/**
|
||||
* Open a directory given the path and search for the first file matching the pattern.
|
||||
|
@ -559,7 +570,7 @@ extern short sys_fsys_findfirst(const char * path, const char * pattern, p_file_
|
|||
* Returns:
|
||||
* 0 on success, error if negative
|
||||
*/
|
||||
extern short sys_fsys_findnext(short dir, p_file_info file);
|
||||
extern SYSTEMCALL short sys_fsys_findnext(short dir, p_file_info file);
|
||||
|
||||
/*
|
||||
* Get the label for the drive holding the path
|
||||
|
@ -568,7 +579,7 @@ extern short sys_fsys_findnext(short dir, p_file_info file);
|
|||
* path = path to the drive
|
||||
* label = buffer that will hold the label... should be at least 35 bytes
|
||||
*/
|
||||
extern short sys_fsys_get_label(const char * path, char * label);
|
||||
extern SYSTEMCALL short sys_fsys_get_label(const char * path, char * label);
|
||||
|
||||
/*
|
||||
* Set the label for the drive holding the path
|
||||
|
@ -577,7 +588,7 @@ extern short sys_fsys_get_label(const char * path, char * label);
|
|||
* drive = drive number
|
||||
* label = buffer that holds the label
|
||||
*/
|
||||
extern short sys_fsys_set_label(short drive, const char * label);
|
||||
extern SYSTEMCALL short sys_fsys_set_label(short drive, const char * label);
|
||||
|
||||
/**
|
||||
* Create a directory
|
||||
|
@ -588,7 +599,7 @@ extern short sys_fsys_set_label(short drive, const char * label);
|
|||
* Returns:
|
||||
* 0 on success, negative number on failure.
|
||||
*/
|
||||
extern short sys_fsys_mkdir(const char * path);
|
||||
extern SYSTEMCALL short sys_fsys_mkdir(const char * path);
|
||||
|
||||
/**
|
||||
* Delete a file or directory
|
||||
|
@ -599,7 +610,7 @@ extern short sys_fsys_mkdir(const char * path);
|
|||
* Returns:
|
||||
* 0 on success, negative number on failure.
|
||||
*/
|
||||
extern short sys_fsys_delete(const char * path);
|
||||
extern SYSTEMCALL short sys_fsys_delete(const char * path);
|
||||
|
||||
/**
|
||||
* Rename a file or directory
|
||||
|
@ -611,7 +622,7 @@ extern short sys_fsys_delete(const char * path);
|
|||
* Returns:
|
||||
* 0 on success, negative number on failure.
|
||||
*/
|
||||
extern short sys_fsys_rename(const char * old_path, const char * new_path);
|
||||
extern SYSTEMCALL short sys_fsys_rename(const char * old_path, const char * new_path);
|
||||
|
||||
/**
|
||||
* Change the current working directory (and drive)
|
||||
|
@ -622,7 +633,7 @@ extern short sys_fsys_rename(const char * old_path, const char * new_path);
|
|||
* Returns:
|
||||
* 0 on success, negative number on failure.
|
||||
*/
|
||||
extern short sys_fsys_set_cwd(const char * path);
|
||||
extern SYSTEMCALL short sys_fsys_set_cwd(const char * path);
|
||||
|
||||
/**
|
||||
* Get the current working drive and directory
|
||||
|
@ -634,7 +645,7 @@ extern short sys_fsys_set_cwd(const char * path);
|
|||
* Returns:
|
||||
* 0 on success, negative number on failure.
|
||||
*/
|
||||
extern short sys_fsys_get_cwd(char * path, short size);
|
||||
extern SYSTEMCALL short sys_fsys_get_cwd(char * path, short size);
|
||||
|
||||
/*
|
||||
* Load a file into memory at the designated destination address.
|
||||
|
@ -652,7 +663,7 @@ extern short sys_fsys_get_cwd(char * path, short size);
|
|||
* Returns:
|
||||
* 0 on success, negative number on error
|
||||
*/
|
||||
extern short sys_fsys_load(const char * path, long destination, long * start);
|
||||
extern SYSTEMCALL short sys_fsys_load(const char * path, long destination, long * start);
|
||||
|
||||
/*
|
||||
* Register a file loading routine
|
||||
|
@ -667,7 +678,7 @@ extern short sys_fsys_load(const char * path, long destination, long * start);
|
|||
* Returns:
|
||||
* 0 on success, negative number on error
|
||||
*/
|
||||
extern short sys_fsys_register_loader(const char * extension, p_file_loader loader);
|
||||
extern SYSTEMCALL short sys_fsys_register_loader(const char * extension, p_file_loader loader);
|
||||
|
||||
/**
|
||||
* Check to see if the file is present.
|
||||
|
@ -678,7 +689,7 @@ extern short sys_fsys_register_loader(const char * extension, p_file_loader load
|
|||
* @param file pointer to a file info record to fill in, if the file is found.
|
||||
* @return 0 on success, negative number on error
|
||||
*/
|
||||
extern short sys_fsys_stat(const char * path, p_file_info file);
|
||||
extern SYSTEMCALL short sys_fsys_stat(const char * path, p_file_info file);
|
||||
|
||||
/**
|
||||
* Memory
|
||||
|
@ -690,7 +701,7 @@ extern short sys_fsys_stat(const char * path, p_file_info file);
|
|||
*
|
||||
* @return the address of the first byte of reserved system RAM (one above the last byte the user program can use)
|
||||
*/
|
||||
extern unsigned long sys_mem_get_ramtop();
|
||||
extern SYSTEMCALL unsigned long sys_mem_get_ramtop();
|
||||
|
||||
/**
|
||||
* Reserve a block of memory at the top of system RAM.
|
||||
|
@ -698,7 +709,7 @@ extern unsigned long sys_mem_get_ramtop();
|
|||
* @param bytes the number of bytes to reserve
|
||||
* @return address of the first byte of the reserved block
|
||||
*/
|
||||
extern unsigned long sys_mem_reserve(unsigned long bytes);
|
||||
extern SYSTEMCALL unsigned long sys_mem_reserve(unsigned long bytes);
|
||||
|
||||
/*
|
||||
* Miscellaneous
|
||||
|
@ -714,7 +725,7 @@ extern unsigned long sys_mem_reserve(unsigned long bytes);
|
|||
* Returns:
|
||||
* the number of jiffies since the last reset
|
||||
*/
|
||||
extern long sys_time_jiffies();
|
||||
extern SYSTEMCALL long sys_time_jiffies();
|
||||
|
||||
/*
|
||||
* Set the time on the RTC
|
||||
|
@ -722,7 +733,7 @@ extern long sys_time_jiffies();
|
|||
* Inputs:
|
||||
* time = pointer to a t_time record containing the correct time
|
||||
*/
|
||||
extern void sys_rtc_set_time(p_time time);
|
||||
extern SYSTEMCALL void sys_rtc_set_time(p_time time);
|
||||
|
||||
/*
|
||||
* Get the time on the RTC
|
||||
|
@ -730,17 +741,17 @@ extern void sys_rtc_set_time(p_time time);
|
|||
* Inputs:
|
||||
* time = pointer to a t_time record in which to put the current time
|
||||
*/
|
||||
extern void sys_rtc_get_time(p_time time);
|
||||
extern SYSTEMCALL void sys_rtc_get_time(p_time time);
|
||||
|
||||
/*
|
||||
* Return the next scan code from the keyboard... 0 if nothing pending
|
||||
*/
|
||||
extern unsigned short sys_kbd_scancode();
|
||||
extern SYSTEMCALL unsigned short sys_kbd_scancode();
|
||||
|
||||
/*
|
||||
* Return an error message given an error number
|
||||
*/
|
||||
extern const char * sys_err_message(short err_number);
|
||||
extern SYSTEMCALL const char * sys_err_message(short err_number);
|
||||
|
||||
/*
|
||||
* Set the keyboard translation tables
|
||||
|
@ -763,7 +774,7 @@ extern const char * sys_err_message(short err_number);
|
|||
* Inputs:
|
||||
* tables = pointer to the keyboard translation tables
|
||||
*/
|
||||
extern short sys_kbd_layout(const char * tables);
|
||||
extern SYSTEMCALL short sys_kbd_layout(const char * tables);
|
||||
|
||||
/**
|
||||
* Load and execute an executable file
|
||||
|
@ -773,7 +784,7 @@ extern short sys_kbd_layout(const char * tables);
|
|||
* @param argv the array of string arguments
|
||||
* @return the return result of the program
|
||||
*/
|
||||
extern short sys_proc_run(const char * path, int argc, char * argv[]);
|
||||
extern SYSTEMCALL short sys_proc_run(const char * path, int argc, char * argv[]);
|
||||
|
||||
/**
|
||||
* Set the value of a variable
|
||||
|
@ -782,7 +793,7 @@ extern short sys_proc_run(const char * path, int argc, char * argv[]);
|
|||
* @param value the value the variable should have
|
||||
* @return 0 on success, negative number on error
|
||||
*/
|
||||
extern short sys_var_set(const char *name, const char *value);
|
||||
extern SYSTEMCALL short sys_var_set(const char *name, const char *value);
|
||||
|
||||
/**
|
||||
* Get the value of a variable
|
||||
|
@ -790,7 +801,7 @@ extern short sys_var_set(const char *name, const char *value);
|
|||
* @param name the name of the variable to set
|
||||
* @return pointer to the string on success, 0 if not found
|
||||
*/
|
||||
extern const char * sys_var_get(const char *name);
|
||||
extern SYSTEMCALL const char * sys_var_get(const char *name);
|
||||
|
||||
//
|
||||
// Text screen calls
|
||||
|
@ -803,7 +814,7 @@ extern const char * sys_var_get(const char *name);
|
|||
*
|
||||
* @return a pointer to the read-only description (0 on error)
|
||||
*/
|
||||
extern const p_txt_capabilities sys_txt_get_capabilities(short screen);
|
||||
extern SYSTEMCALL const p_txt_capabilities sys_txt_get_capabilities(short screen);
|
||||
|
||||
/**
|
||||
* Set the display mode for the screen
|
||||
|
@ -813,7 +824,7 @@ extern const p_txt_capabilities sys_txt_get_capabilities(short screen);
|
|||
*
|
||||
* @return 0 on success, any other number means the mode is invalid for the screen
|
||||
*/
|
||||
extern short sys_txt_set_mode(short screen, short mode);
|
||||
extern SYSTEMCALL short sys_txt_set_mode(short screen, short mode);
|
||||
|
||||
/**
|
||||
* Set the position of the cursor to (x, y) relative to the current region
|
||||
|
@ -825,7 +836,7 @@ extern short sys_txt_set_mode(short screen, short mode);
|
|||
* @param x the column for the cursor
|
||||
* @param y the row for the cursor
|
||||
*/
|
||||
extern void sys_txt_set_xy(short screen, short x, short y);
|
||||
extern SYSTEMCALL void sys_txt_set_xy(short screen, short x, short y);
|
||||
|
||||
/**
|
||||
* Get the position of the cursor (x, y) relative to the current region
|
||||
|
@ -833,7 +844,7 @@ extern void sys_txt_set_xy(short screen, short x, short y);
|
|||
* @param screen the number of the text device
|
||||
* @param position pointer to a t_point record to fill out
|
||||
*/
|
||||
extern void sys_txt_get_xy(short screen, p_point position);
|
||||
extern SYSTEMCALL void sys_txt_get_xy(short screen, p_point position);
|
||||
|
||||
/**
|
||||
* Get the current region.
|
||||
|
@ -843,7 +854,7 @@ extern void sys_txt_get_xy(short screen, p_point position);
|
|||
*
|
||||
* @return 0 on success, any other number means the region was invalid
|
||||
*/
|
||||
extern short sys_txt_get_region(short screen, p_rect region);
|
||||
extern SYSTEMCALL short sys_txt_get_region(short screen, p_rect region);
|
||||
|
||||
/**
|
||||
* Set a region to restrict further character display, scrolling, etc.
|
||||
|
@ -854,7 +865,7 @@ extern short sys_txt_get_region(short screen, p_rect region);
|
|||
*
|
||||
* @return 0 on success, any other number means the region was invalid
|
||||
*/
|
||||
extern short sys_txt_set_region(short screen, p_rect region);
|
||||
extern SYSTEMCALL short sys_txt_set_region(short screen, p_rect region);
|
||||
|
||||
/**
|
||||
* Set the default foreground and background colors for printing
|
||||
|
@ -863,7 +874,7 @@ extern short sys_txt_set_region(short screen, p_rect region);
|
|||
* @param foreground the Text LUT index of the new current foreground color (0 - 15)
|
||||
* @param background the Text LUT index of the new current background color (0 - 15)
|
||||
*/
|
||||
extern void sys_txt_set_color(short screen, unsigned char foreground, unsigned char background);
|
||||
extern SYSTEMCALL void sys_txt_set_color(short screen, unsigned char foreground, unsigned char background);
|
||||
|
||||
/*
|
||||
* Get the foreground and background color for printing
|
||||
|
@ -873,7 +884,7 @@ extern void sys_txt_set_color(short screen, unsigned char foreground, unsigned c
|
|||
* foreground = pointer to the foreground color number
|
||||
* background = pointer to the background color number
|
||||
*/
|
||||
extern void sys_txt_get_color(short screen, unsigned char * foreground, unsigned char * background);
|
||||
extern SYSTEMCALL void sys_txt_get_color(short screen, unsigned char * foreground, unsigned char * background);
|
||||
|
||||
/**
|
||||
* Set if the cursor is visible or not
|
||||
|
@ -881,7 +892,7 @@ extern void sys_txt_get_color(short screen, unsigned char * foreground, unsigned
|
|||
* @param screen the screen number 0 for channel A, 1 for channel B
|
||||
* @param is_visible TRUE if the cursor should be visible, FALSE (0) otherwise
|
||||
*/
|
||||
extern void sys_txt_set_cursor_visible(short screen, short is_visible);
|
||||
extern SYSTEMCALL void sys_txt_set_cursor_visible(short screen, short is_visible);
|
||||
|
||||
/**
|
||||
* Load a font as the current font for the screen
|
||||
|
@ -891,7 +902,7 @@ extern void sys_txt_set_cursor_visible(short screen, short is_visible);
|
|||
* @param height of a character in pixels
|
||||
* @param data pointer to the raw font data to be loaded
|
||||
*/
|
||||
extern short sys_txt_set_font(short screen, short width, short height, unsigned char * data);
|
||||
extern SYSTEMCALL short sys_txt_set_font(short screen, short width, short height, unsigned char * data);
|
||||
|
||||
/**
|
||||
* Get the display resolutions
|
||||
|
@ -900,7 +911,7 @@ extern short sys_txt_set_font(short screen, short width, short height, unsigned
|
|||
* @param text_size the size of the screen in visible characters (may be null)
|
||||
* @param pixel_size the size of the screen in pixels (may be null)
|
||||
*/
|
||||
extern void sys_txt_get_sizes(short screen, p_extent text_size, p_extent pixel_size);
|
||||
extern SYSTEMCALL void sys_txt_get_sizes(short screen, p_extent text_size, p_extent pixel_size);
|
||||
|
||||
/**
|
||||
* Set the size of the border of the screen (if supported)
|
||||
|
@ -909,7 +920,7 @@ extern void sys_txt_get_sizes(short screen, p_extent text_size, p_extent pixel_s
|
|||
* @param width the horizontal size of one side of the border (0 - 32 pixels)
|
||||
* @param height the vertical size of one side of the border (0 - 32 pixels)
|
||||
*/
|
||||
extern void sys_txt_set_border(short screen, short width, short height);
|
||||
extern SYSTEMCALL void sys_txt_set_border(short screen, short width, short height);
|
||||
|
||||
/**
|
||||
* Set the size of the border of the screen (if supported)
|
||||
|
@ -919,6 +930,31 @@ extern void sys_txt_set_border(short screen, short width, short height);
|
|||
* @param green the green component of the color (0 - 255)
|
||||
* @param blue the blue component of the color (0 - 255)
|
||||
*/
|
||||
extern void sys_txt_set_border_color(short screen, unsigned char red, unsigned char green, unsigned char blue);
|
||||
extern SYSTEMCALL void sys_txt_set_border_color(short screen, unsigned char red, unsigned char green, unsigned char blue);
|
||||
|
||||
/**
|
||||
* Print a character to the current cursor position in the current color
|
||||
*
|
||||
* Most character codes will result in a glyph being displayed at the current
|
||||
* cursor position, advancing the cursor one spot. There are some exceptions that
|
||||
* will be treated as control codes:
|
||||
*
|
||||
* 0x08 - BS - Move the cursor back one position, erasing the character underneath
|
||||
* 0x09 - HT - Move forward to the next TAB stop
|
||||
* 0x0A - LF - Move the cursor down one line (line feed)
|
||||
* 0x0D - CR - Move the cursor to column 0 (carriage return)
|
||||
*
|
||||
* @param screen the number of the text device
|
||||
* @param c the character to print
|
||||
*/
|
||||
extern SYSTEMCALL void sys_txt_put(short screen, char c);
|
||||
|
||||
/**
|
||||
* Print an ASCII Z string to the screen
|
||||
*
|
||||
* @param screen the number of the text device
|
||||
* @param c the ASCII Z string to print
|
||||
*/
|
||||
extern SYSTEMCALL void sys_txt_print(short screen, const char * message);
|
||||
|
||||
#endif
|
||||
|
|
|
@ -9,8 +9,12 @@
|
|||
|
||||
#if MODEL == MODEL_FOENIX_A2560K || MODEL == MODEL_FOENIX_GENX || MODEL == MODEL_FOENIX_A2560X
|
||||
#include "A2560K/timers_a2560k.h"
|
||||
|
||||
#elif MODEL == MODEL_FOENIX_A2560U || MODEL == MODEL_FOENIX_A2560U_PLUS
|
||||
#include "A2560U/timers_a2560u.h"
|
||||
|
||||
#elif MODEL == MODEL_FOENIX_FMX || MODEL == MODEL_FOENIX_C256U || MODEL == MODEL_FOENIX_C256U_PLUS
|
||||
#include "C256/timers_c256.h"
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
|
|
@ -10,8 +10,12 @@
|
|||
|
||||
#if MODEL == MODEL_FOENIX_A2560K || MODEL == MODEL_FOENIX_GENX || MODEL == MODEL_FOENIX_A2560X
|
||||
#include "A2560K/VICKYIII_a2560k.h"
|
||||
|
||||
#elif MODEL == MODEL_FOENIX_A2560U || MODEL == MODEL_FOENIX_A2560U_PLUS
|
||||
#include "A2560U/VICKYIII_a2560u.h"
|
||||
|
||||
#elif MODEL == MODEL_FOENIX_FMX || MODEL == MODEL_FOENIX_C256U || MODEL == MODEL_FOENIX_C256U_PLUS
|
||||
#include "C256/vicky_ii.h"
|
||||
#endif
|
||||
|
||||
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
#define __INTERRUPT_H
|
||||
|
||||
#include "sys_general.h"
|
||||
#include "types.h"
|
||||
|
||||
/* Type declaration for an interrupt handler */
|
||||
typedef void (*p_int_handler)();
|
||||
|
@ -50,6 +51,28 @@ typedef void (*p_int_handler)();
|
|||
#define MASK_GRP1 ((volatile unsigned short *)0x00B0011A)
|
||||
#define MASK_GRP2 ((volatile unsigned short *)0x00B0011C)
|
||||
|
||||
#elif MODEL == MODEL_FOENIX_FMX || MODEL == MODEL_FOENIX_C256U || MODEL == MODEL_FOENIX_C256U_PLUS
|
||||
|
||||
#define PENDING_GRP0 ((volatile uint8_t *)0x000140)
|
||||
#define PENDING_GRP1 ((volatile uint8_t *)0x000141)
|
||||
#define PENDING_GRP2 ((volatile uint8_t *)0x000142)
|
||||
#define PENDING_GRP3 ((volatile uint8_t *)0x000143)
|
||||
|
||||
#define POL_GRP0 ((volatile uint8_t *)0x000144)
|
||||
#define POL_GRP1 ((volatile uint8_t *)0x000145)
|
||||
#define POL_GRP2 ((volatile uint8_t *)0x000146)
|
||||
#define POL_GRP3 ((volatile uint8_t *)0x000147)
|
||||
|
||||
#define EDGE_GRP0 ((volatile uint8_t *)0x000148)
|
||||
#define EDGE_GRP1 ((volatile uint8_t *)0x000149)
|
||||
#define EDGE_GRP2 ((volatile uint8_t *)0x00014a)
|
||||
#define EDGE_GRP3 ((volatile uint8_t *)0x00014b)
|
||||
|
||||
#define MASK_GRP0 ((volatile uint8_t *)0x00014c)
|
||||
#define MASK_GRP1 ((volatile uint8_t *)0x00014d)
|
||||
#define MASK_GRP2 ((volatile uint8_t *)0x00014e)
|
||||
#define MASK_GRP3 ((volatile uint8_t *)0x00014f)
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
|
|
18
src/log.c
18
src/log.c
|
@ -19,6 +19,8 @@
|
|||
#include "A2560U/gabe_a2560u.h"
|
||||
#elif (MODEL == MODEL_FOENIX_A2560K || MODEL == MODEL_FOENIX_GENX || MODEL == MODEL_FOENIX_A2560X)
|
||||
#include "A2560K/gabe_a2560k.h"
|
||||
#elif MODEL == MODEL_FOENIX_C256U || MODEL == MODEL_FOENIX_C256U_PLUS || MODEL == MODEL_FOENIX_FMX
|
||||
#include "C256/gabe_c256.h"
|
||||
#endif
|
||||
|
||||
/* Channel to which the logging output should go.
|
||||
|
@ -159,7 +161,7 @@ void panic(void) {
|
|||
t_rect region;
|
||||
TRACE("PANIC------------------------------------------");
|
||||
/* Shut off all interrupts */
|
||||
int_disable_all();
|
||||
// TODO: int_disable_all();
|
||||
|
||||
/* Re-initialize the text screen */
|
||||
txt_init_screen(0);
|
||||
|
@ -255,11 +257,12 @@ void log_setlevel(short level) {
|
|||
|
||||
|
||||
static void log_to_uart(const char *message) {
|
||||
char *c = (char*)message;
|
||||
while (*c)
|
||||
uart_put(UART_COM1, *c++);
|
||||
uart_put(UART_COM1,'\r');
|
||||
uart_put(UART_COM1,'\n');
|
||||
// TODO: bring back
|
||||
// char *c = (char*)message;
|
||||
// while (*c)
|
||||
// uart_put(UART_COM1, *c++);
|
||||
// uart_put(UART_COM1,'\r');
|
||||
// uart_put(UART_COM1,'\n');
|
||||
}
|
||||
|
||||
static void log_to_screen(const char *message) {
|
||||
|
@ -295,7 +298,8 @@ void log(short level, const char * message, ...) {
|
|||
vsprintf(buf, message, args);
|
||||
va_end(args);
|
||||
|
||||
(*do_log)(buf);
|
||||
txt_print(0, buf);
|
||||
txt_print(0, "\n");
|
||||
}
|
||||
|
||||
void trace(const char * message, ...) {
|
||||
|
|
12
src/log.h
12
src/log.h
|
@ -129,12 +129,12 @@ extern void log_c(short log_level, char c);
|
|||
|
||||
|
||||
#if DEFAULT_LOG_LEVEL >= LOG_INFO
|
||||
# define INFO(m) log(LOG_INFO, m)
|
||||
# define INFO1(a,b) log(LOG_INFO, a, b)
|
||||
# define INFO2(a,b,c) log(LOG_INFO, a, b, c)
|
||||
# define INFO3(a,b,c,d) log(LOG_INFO, a, b, c, d)
|
||||
# define INFO4(a,b,c,d,e) log(LOG_INFO, a, b, c, d, e)
|
||||
# define INFO5(a,b,c,d,e,f) log(LOG_INFO, a, b, c, d, e, f)
|
||||
# define INFO(m) log(LOG_INFO, m);
|
||||
# define INFO1(a,b) log(LOG_INFO, a, b);
|
||||
# define INFO2(a,b,c) log(LOG_INFO, a, b, c);
|
||||
# define INFO3(a,b,c,d) log(LOG_INFO, a, b, c, d);
|
||||
# define INFO4(a,b,c,d,e) log(LOG_INFO, a, b, c, d, e);
|
||||
# define INFO5(a,b,c,d,e,f) log(LOG_INFO, a, b, c, d, e, f);
|
||||
#else
|
||||
# define INFO(m)
|
||||
# define INFO1(a,b)
|
||||
|
|
|
@ -16,7 +16,7 @@ def emit(output, count, pixel_count, last_pixel):
|
|||
|
||||
parser = OptionParser()
|
||||
parser.add_option("-i", "--input", dest="input", help="Source image file")
|
||||
parser.add_option("-o", "--output", dest="output", default="image.h", help="Destination for image and color data.")
|
||||
parser.add_option("-o", "--output", dest="output", default="image.c", help="Destination for image and color data.")
|
||||
|
||||
(options, args) = parser.parse_args()
|
||||
|
||||
|
|
827
src/rsrc/bitmaps/image.c
Normal file
827
src/rsrc/bitmaps/image.c
Normal file
|
@ -0,0 +1,827 @@
|
|||
unsigned char splashscreen_lut[] = {
|
||||
0x00, 0x00, 0xFF, 0x00,
|
||||
0x08, 0x08, 0xFE, 0x00,
|
||||
0x0B, 0x0B, 0xFD, 0x00,
|
||||
0x5F, 0x5F, 0x00, 0x00,
|
||||
0x60, 0x60, 0x00, 0x00,
|
||||
0x61, 0x61, 0x00, 0x00,
|
||||
0x62, 0x62, 0x00, 0x00,
|
||||
0x63, 0x63, 0x00, 0x00,
|
||||
0x64, 0x64, 0x00, 0x00,
|
||||
0x65, 0x65, 0x00, 0x00,
|
||||
0x66, 0x66, 0x00, 0x00,
|
||||
0x67, 0x67, 0x00, 0x00,
|
||||
0x68, 0x68, 0x00, 0x00,
|
||||
0x69, 0x69, 0x00, 0x00,
|
||||
0x6A, 0x6A, 0x00, 0x00,
|
||||
0x6B, 0x6B, 0x00, 0x00,
|
||||
0x6D, 0x6D, 0x00, 0x00,
|
||||
0x6E, 0x6E, 0x00, 0x00,
|
||||
0x29, 0x29, 0xF3, 0x00,
|
||||
0x6F, 0x6F, 0x00, 0x00,
|
||||
0x2A, 0x2A, 0xF3, 0x00,
|
||||
0x70, 0x70, 0x00, 0x00,
|
||||
0x71, 0x71, 0x00, 0x00,
|
||||
0x72, 0x72, 0x00, 0x00,
|
||||
0x73, 0x73, 0x00, 0x00,
|
||||
0x77, 0x77, 0x00, 0x00,
|
||||
0x78, 0x78, 0x00, 0x00,
|
||||
0x79, 0x79, 0x00, 0x00,
|
||||
0x7B, 0x7B, 0x00, 0x00,
|
||||
0x7C, 0x7C, 0x00, 0x00,
|
||||
0x7E, 0x7E, 0x00, 0x00,
|
||||
0x80, 0x80, 0x00, 0x00,
|
||||
0x80, 0x80, 0x01, 0x00,
|
||||
0x81, 0x81, 0x02, 0x00,
|
||||
0x80, 0x80, 0x06, 0x00,
|
||||
0x81, 0x81, 0x0D, 0x00,
|
||||
0x83, 0x83, 0x07, 0x00,
|
||||
0x81, 0x81, 0x12, 0x00,
|
||||
0x84, 0x84, 0x09, 0x00,
|
||||
0x82, 0x82, 0x16, 0x00,
|
||||
0x82, 0x82, 0x19, 0x00,
|
||||
0x86, 0x86, 0x0F, 0x00,
|
||||
0x83, 0x83, 0x1F, 0x00,
|
||||
0x83, 0x83, 0x22, 0x00,
|
||||
0x84, 0x84, 0x24, 0x00,
|
||||
0x85, 0x85, 0x29, 0x00,
|
||||
0x8A, 0x8A, 0x18, 0x00,
|
||||
0x85, 0x85, 0x2B, 0x00,
|
||||
0x8B, 0x8B, 0x1D, 0x00,
|
||||
0x86, 0x86, 0x30, 0x00,
|
||||
0x8C, 0x8C, 0x20, 0x00,
|
||||
0x87, 0x87, 0x33, 0x00,
|
||||
0x69, 0x69, 0x9E, 0x00,
|
||||
0x6A, 0x6A, 0x9B, 0x00,
|
||||
0x68, 0x68, 0xA2, 0x00,
|
||||
0x6B, 0x6B, 0x99, 0x00,
|
||||
0x6D, 0x6D, 0x94, 0x00,
|
||||
0x6B, 0x6B, 0x9B, 0x00,
|
||||
0x88, 0x88, 0x36, 0x00,
|
||||
0x8E, 0x8E, 0x24, 0x00,
|
||||
0x8F, 0x8F, 0x27, 0x00,
|
||||
0x89, 0x89, 0x3C, 0x00,
|
||||
0x90, 0x90, 0x29, 0x00,
|
||||
0x90, 0x90, 0x2A, 0x00,
|
||||
0x8A, 0x8A, 0x3F, 0x00,
|
||||
0x8B, 0x8B, 0x41, 0x00,
|
||||
0x92, 0x92, 0x2F, 0x00,
|
||||
0x93, 0x93, 0x30, 0x00,
|
||||
0x93, 0x93, 0x32, 0x00,
|
||||
0x8D, 0x8D, 0x47, 0x00,
|
||||
0x94, 0x94, 0x33, 0x00,
|
||||
0x8E, 0x8E, 0x49, 0x00,
|
||||
0x94, 0x94, 0x35, 0x00,
|
||||
0x95, 0x95, 0x36, 0x00,
|
||||
0x8F, 0x8F, 0x4C, 0x00,
|
||||
0x8F, 0x8F, 0x4E, 0x00,
|
||||
0x97, 0x97, 0x3B, 0x00,
|
||||
0x6D, 0x80, 0x94, 0x00,
|
||||
0x98, 0x98, 0x3F, 0x00,
|
||||
0x92, 0x92, 0x54, 0x00,
|
||||
0x6B, 0x80, 0x99, 0x00,
|
||||
0x92, 0x92, 0x56, 0x00,
|
||||
0x6A, 0x80, 0x9B, 0x00,
|
||||
0x6B, 0x80, 0x9B, 0x00,
|
||||
0x69, 0x80, 0x9E, 0x00,
|
||||
0x93, 0x93, 0x58, 0x00,
|
||||
0x68, 0x80, 0xA2, 0x00,
|
||||
0x9A, 0x9A, 0x44, 0x00,
|
||||
0x6D, 0xB3, 0x00, 0x00,
|
||||
0x9B, 0x9B, 0x45, 0x00,
|
||||
0x95, 0x95, 0x5C, 0x00,
|
||||
0x6B, 0xB6, 0x00, 0x00,
|
||||
0x6A, 0xB7, 0x00, 0x00,
|
||||
0x6B, 0xB7, 0x00, 0x00,
|
||||
0x69, 0xB9, 0x00, 0x00,
|
||||
0xB3, 0xB3, 0x00, 0x00,
|
||||
0x9E, 0x9E, 0x4D, 0x00,
|
||||
0x98, 0x98, 0x62, 0x00,
|
||||
0x9E, 0x9E, 0x4E, 0x00,
|
||||
0x98, 0x98, 0x63, 0x00,
|
||||
0x68, 0xBB, 0x00, 0x00,
|
||||
0xB6, 0xB6, 0x00, 0x00,
|
||||
0xB7, 0xB7, 0x00, 0x00,
|
||||
0x9A, 0x9A, 0x66, 0x00,
|
||||
0xB9, 0xB9, 0x00, 0x00,
|
||||
0xA1, 0xA1, 0x54, 0x00,
|
||||
0xA2, 0xA2, 0x57, 0x00,
|
||||
0x9C, 0x9C, 0x6C, 0x00,
|
||||
0xBB, 0xBB, 0x00, 0x00,
|
||||
0x9D, 0x9D, 0x6D, 0x00,
|
||||
0x29, 0x80, 0xF3, 0x00,
|
||||
0x2A, 0x80, 0xF3, 0x00,
|
||||
0x00, 0x80, 0xFF, 0x00,
|
||||
0x0B, 0x80, 0xFD, 0x00,
|
||||
0x08, 0x80, 0xFE, 0x00,
|
||||
0x9F, 0x9F, 0x72, 0x00,
|
||||
0xA7, 0xA7, 0x63, 0x00,
|
||||
0xA2, 0xA2, 0x77, 0x00,
|
||||
0xA8, 0xA8, 0x66, 0x00,
|
||||
0xA4, 0xA4, 0x7C, 0x00,
|
||||
0xAA, 0xAA, 0x6B, 0x00,
|
||||
0xA7, 0xA7, 0x81, 0x00,
|
||||
0xAC, 0xAC, 0x71, 0x00,
|
||||
0xAE, 0xAE, 0x74, 0x00,
|
||||
0xAA, 0xAA, 0x85, 0x00,
|
||||
0xAC, 0xAC, 0x8A, 0x00,
|
||||
0xB2, 0xB2, 0x7D, 0x00,
|
||||
0xB2, 0xB2, 0x7E, 0x00,
|
||||
0xAF, 0xAF, 0x8D, 0x00,
|
||||
0x6D, 0xB3, 0x94, 0x00,
|
||||
0xB5, 0xB5, 0x84, 0x00,
|
||||
0xB1, 0xB1, 0x92, 0x00,
|
||||
0xB5, 0xB5, 0x86, 0x00,
|
||||
0x6B, 0xB6, 0x99, 0x00,
|
||||
0x6A, 0xB7, 0x9B, 0x00,
|
||||
0x6B, 0xB7, 0x9B, 0x00,
|
||||
0xB3, 0xB3, 0x95, 0x00,
|
||||
0xB7, 0xB7, 0x8A, 0x00,
|
||||
0x69, 0xB9, 0x9E, 0x00,
|
||||
0xB6, 0xB6, 0x99, 0x00,
|
||||
0xB9, 0xB9, 0x8F, 0x00,
|
||||
0x68, 0xBB, 0xA2, 0x00,
|
||||
0xBB, 0xBB, 0x92, 0x00,
|
||||
0xB8, 0xB8, 0x9D, 0x00,
|
||||
0x2A, 0xF5, 0x00, 0x00,
|
||||
0x29, 0xF6, 0x00, 0x00,
|
||||
0xBC, 0xBC, 0x96, 0x00,
|
||||
0xBA, 0xBA, 0xA0, 0x00,
|
||||
0xBB, 0xBB, 0xA1, 0x00,
|
||||
0xBC, 0xBC, 0xA3, 0x00,
|
||||
0x08, 0xFE, 0x00, 0x00,
|
||||
0x0B, 0xFE, 0x00, 0x00,
|
||||
0x00, 0xFF, 0x00, 0x00,
|
||||
0xC0, 0xC0, 0x9E, 0x00,
|
||||
0xBE, 0xBE, 0xA6, 0x00,
|
||||
0xC1, 0xC1, 0xA1, 0x00,
|
||||
0xBF, 0xBF, 0xA8, 0x00,
|
||||
0xC2, 0xC2, 0xA2, 0x00,
|
||||
0xC0, 0xC0, 0xA9, 0x00,
|
||||
0xC2, 0xC2, 0xA4, 0x00,
|
||||
0xC1, 0xC1, 0xAA, 0x00,
|
||||
0xC4, 0xC4, 0xA8, 0x00,
|
||||
0xC3, 0xC3, 0xAD, 0x00,
|
||||
0xC3, 0xC3, 0xAE, 0x00,
|
||||
0xF5, 0xF5, 0x00, 0x00,
|
||||
0xC5, 0xC5, 0xAA, 0x00,
|
||||
0xF6, 0xF6, 0x00, 0x00,
|
||||
0xC4, 0xC4, 0xAF, 0x00,
|
||||
0xC5, 0xC5, 0xB0, 0x00,
|
||||
0xC6, 0xC6, 0xAD, 0x00,
|
||||
0xC5, 0xC5, 0xB1, 0x00,
|
||||
0xC6, 0xC6, 0xB2, 0x00,
|
||||
0xC7, 0xC7, 0xAF, 0x00,
|
||||
0xC7, 0xC7, 0xB3, 0x00,
|
||||
0xC8, 0xC8, 0xB0, 0x00,
|
||||
0xC8, 0xC8, 0xB2, 0x00,
|
||||
0xC8, 0xC8, 0xB4, 0x00,
|
||||
0xC8, 0xC8, 0xB5, 0x00,
|
||||
0xC9, 0xC9, 0xB3, 0x00,
|
||||
0xC9, 0xC9, 0xB6, 0x00,
|
||||
0xC9, 0xC9, 0xB7, 0x00,
|
||||
0xFE, 0xFE, 0x00, 0x00,
|
||||
0xCA, 0xCA, 0xB6, 0x00,
|
||||
0xCA, 0xCA, 0xB7, 0x00,
|
||||
0xCA, 0xCA, 0xB8, 0x00,
|
||||
0xFF, 0xFF, 0x00, 0x00,
|
||||
0xCB, 0xCB, 0xB8, 0x00,
|
||||
0xCB, 0xCB, 0xB9, 0x00,
|
||||
0xCB, 0xCB, 0xBA, 0x00,
|
||||
0xCC, 0xCC, 0xB9, 0x00,
|
||||
0xCC, 0xCC, 0xBA, 0x00,
|
||||
0xCC, 0xCC, 0xBB, 0x00,
|
||||
0xCD, 0xCD, 0xBB, 0x00,
|
||||
0xCD, 0xCD, 0xBC, 0x00,
|
||||
0x2A, 0xF5, 0xF3, 0x00,
|
||||
0x29, 0xF6, 0xF3, 0x00,
|
||||
0x0B, 0xFE, 0xFD, 0x00,
|
||||
0x08, 0xFE, 0xFE, 0x00,
|
||||
0x00, 0xFF, 0xFF, 0x00,
|
||||
0xFF, 0xFF, 0xFF, 0x00,
|
||||
0xC8, 0xC8, 0xC8, 0x00,
|
||||
0xC9, 0xC9, 0xC9, 0x00,
|
||||
0xCA, 0xCA, 0xCA, 0x00,
|
||||
0xCB, 0xCB, 0xCB, 0x00,
|
||||
0xCC, 0xCC, 0xCC, 0x00,
|
||||
0xCD, 0xCD, 0xCD, 0x00,
|
||||
0xCE, 0xCE, 0xCE, 0x00,
|
||||
0xCF, 0xCF, 0xCF, 0x00,
|
||||
0xD0, 0xD0, 0xD0, 0x00,
|
||||
0xD1, 0xD1, 0xD1, 0x00,
|
||||
0xD2, 0xD2, 0xD2, 0x00,
|
||||
0xD3, 0xD3, 0xD3, 0x00,
|
||||
0xD4, 0xD4, 0xD4, 0x00,
|
||||
0xD5, 0xD5, 0xD5, 0x00,
|
||||
0xD6, 0xD6, 0xD6, 0x00,
|
||||
0xD7, 0xD7, 0xD7, 0x00,
|
||||
0xD8, 0xD8, 0xD8, 0x00,
|
||||
0xD9, 0xD9, 0xD9, 0x00,
|
||||
0xDA, 0xDA, 0xDA, 0x00,
|
||||
0xDB, 0xDB, 0xDB, 0x00,
|
||||
0xDC, 0xDC, 0xDC, 0x00,
|
||||
0xDD, 0xDD, 0xDD, 0x00,
|
||||
0xDE, 0xDE, 0xDE, 0x00,
|
||||
0xDF, 0xDF, 0xDF, 0x00,
|
||||
0xE0, 0xE0, 0xE0, 0x00,
|
||||
0xE1, 0xE1, 0xE1, 0x00,
|
||||
0xE2, 0xE2, 0xE2, 0x00,
|
||||
0xE3, 0xE3, 0xE3, 0x00,
|
||||
0xE4, 0xE4, 0xE4, 0x00,
|
||||
0xE5, 0xE5, 0xE5, 0x00,
|
||||
0xE6, 0xE6, 0xE6, 0x00,
|
||||
0xE7, 0xE7, 0xE7, 0x00,
|
||||
0xE8, 0xE8, 0xE8, 0x00,
|
||||
0xE9, 0xE9, 0xE9, 0x00,
|
||||
0xEA, 0xEA, 0xEA, 0x00,
|
||||
0xEB, 0xEB, 0xEB, 0x00,
|
||||
0xEC, 0xEC, 0xEC, 0x00,
|
||||
0xED, 0xED, 0xED, 0x00,
|
||||
0xEE, 0xEE, 0xEE, 0x00,
|
||||
0xEF, 0xEF, 0xEF, 0x00,
|
||||
0xF0, 0xF0, 0xF0, 0x00,
|
||||
0xF1, 0xF1, 0xF1, 0x00,
|
||||
0xF2, 0xF2, 0xF2, 0x00,
|
||||
0xF3, 0xF3, 0xF3, 0x00,
|
||||
0xF4, 0xF4, 0xF4, 0x00,
|
||||
0xF5, 0xF5, 0xF5, 0x00,
|
||||
0xF6, 0xF6, 0xF6, 0x00,
|
||||
0xF7, 0xF7, 0xF7, 0x00,
|
||||
0xF8, 0xF8, 0xF8, 0x00,
|
||||
0xF9, 0xF9, 0xF9, 0x00,
|
||||
0xFA, 0xFA, 0xFA, 0x00,
|
||||
0xFB, 0xFB, 0xFB, 0x00,
|
||||
0xFC, 0xFC, 0xFC, 0x00,
|
||||
0xFD, 0xFD, 0xFD, 0x00,
|
||||
0xFE, 0xFE, 0xFE, 0x00,
|
||||
0xFF, 0xFF, 0xFF, 0x00,
|
||||
}
|
||||
|
||||
unsigned char splashscreen_pix[] = {
|
||||
0x00, 0x-1, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0x62, 0x1F, 0x01, 0xC7, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0x81, 0x1F, 0x03, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x54, 0x1F, 0x01, 0xC7, 0x2B, 0x1F,
|
||||
0x04, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x54, 0x1F, 0x02, 0xC7, 0x28, 0x1F, 0x06, 0xC7, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0x54, 0x1F, 0x04, 0xC7, 0x24, 0x1F, 0x08, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x54, 0x1F,
|
||||
0x06, 0xC7, 0x20, 0x1F, 0x0A, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x54, 0x1F, 0x07, 0xC7, 0x1E, 0x1F,
|
||||
0x0B, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x55, 0x1F, 0x08, 0xC7, 0x1A, 0x1F, 0x0D, 0xC7, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0x57, 0x1F, 0x07, 0xC7, 0x17, 0x1F, 0x0F, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x59, 0x1F,
|
||||
0x07, 0xC7, 0x13, 0x1F, 0x11, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x5B, 0x1F, 0x07, 0xC7, 0x10, 0x1F,
|
||||
0x12, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x5C, 0x1F, 0x07, 0xC7, 0x0D, 0x1F, 0x13, 0xC7, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0x5F, 0x1F, 0x07, 0xC7, 0x09, 0x1F, 0x13, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x63, 0x1F,
|
||||
0x07, 0xC7, 0x05, 0x1F, 0x14, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x65, 0x1F, 0x07, 0xC7, 0x02, 0x1F,
|
||||
0x14, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x69, 0x1F, 0x19, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x6D, 0x1F,
|
||||
0x15, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x6F, 0x1F, 0x13, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x6F, 0x1F,
|
||||
0x14, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x6F, 0x1F, 0x13, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x6F, 0x1F,
|
||||
0x13, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x6F, 0x1F, 0x13, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x6F, 0x1F,
|
||||
0x17, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x6B, 0x1F, 0x1A, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x69, 0x1F,
|
||||
0x13, 0xC7, 0x03, 0x1F, 0x07, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x65, 0x1F, 0x13, 0xC7, 0x07, 0x1F,
|
||||
0x07, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x61, 0x1F, 0x13, 0xC7, 0x0A, 0x1F, 0x07, 0xC7, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0x5F, 0x1F, 0x13, 0xC7, 0x0D, 0x1F, 0x07, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x5D, 0x1F,
|
||||
0x11, 0xC7, 0x10, 0x1F, 0x08, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x5B, 0x1F, 0x0F, 0xC7, 0x14, 0x1F,
|
||||
0x07, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x5A, 0x1F, 0x0D, 0xC7, 0x18, 0x1F, 0x07, 0xC7, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0x58, 0x1F, 0x0C, 0xC7, 0x1A, 0x1F, 0x08, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x56, 0x1F,
|
||||
0x0A, 0xC7, 0x1E, 0x1F, 0x07, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x55, 0x1F, 0x08, 0xC7, 0x22, 0x1F,
|
||||
0x06, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x54, 0x1F, 0x06, 0xC7, 0x25, 0x1F, 0x05, 0xC7, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0x54, 0x1F, 0x04, 0xC7, 0x29, 0x1F, 0x03, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x54, 0x1F,
|
||||
0x03, 0xC7, 0x2B, 0x1F, 0x02, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x54, 0x1F, 0x01, 0xC7, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0x13, 0x1F, 0x30, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x54, 0x1F, 0x30, 0xC7, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0x54, 0x1F, 0x30, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x54, 0x1F, 0x30, 0xC7, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0x54, 0x1F, 0x30, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x54, 0x1F, 0x30, 0xC7, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0x54, 0x1F, 0x30, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x54, 0x1F, 0x30, 0xC7, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0x54, 0x1F, 0x30, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x54, 0x1F, 0x30, 0xC7, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0x72, 0x1F, 0x30, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x54, 0x1F, 0x30, 0xC7, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0x54, 0x1F, 0x30, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x54, 0x1F, 0x30, 0xC7, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0x78, 0x1F, 0x0C, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x76, 0x1F, 0x0E, 0xC7, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0x74, 0x1F, 0x10, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x72, 0x1F, 0x12, 0xC7, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0x71, 0x1F, 0x12, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x70, 0x1F, 0x12, 0xC7, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0x70, 0x1F, 0x12, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x70, 0x1F, 0x13, 0xC7, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0x6F, 0x1F, 0x13, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x70, 0x1F, 0x12, 0xC7, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0x70, 0x1F, 0x12, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x70, 0x1F, 0x12, 0xC7, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0x70, 0x1F, 0x12, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x70, 0x1F, 0x13, 0xC7, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0x6F, 0x1F, 0x13, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x70, 0x1F, 0x12, 0xC7, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0x70, 0x1F, 0x12, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x70, 0x1F, 0x12, 0xC7, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0x70, 0x1F, 0x12, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x70, 0x1F, 0x13, 0xC7, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0x70, 0x1F, 0x12, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x72, 0x1F, 0x10, 0xC7, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0x74, 0x1F, 0x0E, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x76, 0x1F, 0x0C, 0xC7, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0x78, 0x1F, 0x30, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x54, 0x1F, 0x30, 0xC7, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0x54, 0x1F, 0x30, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x54, 0x1F, 0x30, 0xC7, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0x10, 0x1F, 0x04, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x80, 0x1F, 0x04, 0xC7, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0x54, 0x1F, 0x04, 0xC7, 0x28, 0x1F, 0x04, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x54, 0x1F, 0x04, 0xC7,
|
||||
0x28, 0x1F, 0x04, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x54, 0x1F, 0x04, 0xC7, 0x28, 0x1F, 0x04, 0xC7,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0x54, 0x1F, 0x04, 0xC7, 0x0F, 0x1F, 0x04, 0xC7, 0x15, 0x1F, 0x04, 0xC7,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0x54, 0x1F, 0x04, 0xC7, 0x0F, 0x1F, 0x04, 0xC7, 0x15, 0x1F, 0x04, 0xC7,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0x54, 0x1F, 0x04, 0xC7, 0x0F, 0x1F, 0x04, 0xC7, 0x15, 0x1F, 0x04, 0xC7,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0x54, 0x1F, 0x04, 0xC7, 0x0F, 0x1F, 0x04, 0xC7, 0x15, 0x1F, 0x04, 0xC7,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0x54, 0x1F, 0x04, 0xC7, 0x0F, 0x1F, 0x04, 0xC7, 0x15, 0x1F, 0x04, 0xC7,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0x54, 0x1F, 0x04, 0xC7, 0x0F, 0x1F, 0x04, 0xC7, 0x15, 0x1F, 0x04, 0xC7,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0x54, 0x1F, 0x04, 0xC7, 0x0F, 0x1F, 0x04, 0xC7, 0x15, 0x1F, 0x04, 0xC7,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0x54, 0x1F, 0x04, 0xC7, 0x0F, 0x1F, 0x04, 0xC7, 0x15, 0x1F, 0x04, 0xC7,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0x54, 0x1F, 0x04, 0xC7, 0x0F, 0x1F, 0x04, 0xC7, 0x15, 0x1F, 0x04, 0xC7,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0x54, 0x1F, 0x04, 0xC7, 0x0F, 0x1F, 0x04, 0xC7, 0x15, 0x1F, 0x04, 0xC7,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0x54, 0x1F, 0x04, 0xC7, 0x0F, 0x1F, 0x04, 0xC7, 0x15, 0x1F, 0x04, 0xC7,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0x54, 0x1F, 0x04, 0xC7, 0x0F, 0x1F, 0x04, 0xC7, 0x15, 0x1F, 0x04, 0xC7,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0x54, 0x1F, 0x04, 0xC7, 0x0F, 0x1F, 0x04, 0xC7, 0x15, 0x1F, 0x04, 0xC7,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0x54, 0x1F, 0x04, 0xC7, 0x0F, 0x1F, 0x04, 0xC7, 0x15, 0x1F, 0x04, 0xC7,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0x54, 0x1F, 0x04, 0xC7, 0x0F, 0x1F, 0x04, 0xC7, 0x15, 0x1F, 0x04, 0xC7,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0x54, 0x1F, 0x30, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x54, 0x1F, 0x30, 0xC7,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0x54, 0x1F, 0x30, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x54, 0x1F, 0x30, 0xC7,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0x54, 0x1F, 0x30, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x54, 0x1F, 0x30, 0xC7,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0x54, 0x1F, 0x30, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x54, 0x1F, 0x30, 0xC7,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0x54, 0x1F, 0x30, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x54, 0x1F, 0x30, 0xC7,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0x79, 0x1F, 0x0E, 0xC7, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0x72, 0x1F, 0x17, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x6A, 0x1F, 0x1D, 0xC7, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0x65, 0x1F, 0x21, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x61, 0x1F, 0x24, 0xC7, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0x5F, 0x1F, 0x26, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x5D, 0x1F, 0x28, 0xC7, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0x5B, 0x1F, 0x2A, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x59, 0x1F, 0x2C, 0xC7, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0x57, 0x1F, 0x2D, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x57, 0x1F, 0x2E, 0xC7, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0x55, 0x1F, 0x0D, 0xC7, 0x17, 0x1F, 0x0B, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x55, 0x1F, 0x08, 0xC7,
|
||||
0x20, 0x1F, 0x08, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x54, 0x1F, 0x06, 0xC7, 0x25, 0x1F, 0x05, 0xC7,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0x53, 0x1F, 0x05, 0xC7, 0x28, 0x1F, 0x04, 0xC7, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0x53, 0x1F, 0x04, 0xC7, 0x2A, 0x1F, 0x04, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x52, 0x1F, 0x04, 0xC7,
|
||||
0x2A, 0x1F, 0x04, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x52, 0x1F, 0x03, 0xC7, 0x2C, 0x1F, 0x03, 0xC7,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0x52, 0x1F, 0x03, 0xC7, 0x2C, 0x1F, 0x03, 0xC7, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0x52, 0x1F, 0x03, 0xC7, 0x2C, 0x1F, 0x03, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x52, 0x1F, 0x03, 0xC7,
|
||||
0x2C, 0x1F, 0x03, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x52, 0x1F, 0x03, 0xC7, 0x2C, 0x1F, 0x03, 0xC7,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0x52, 0x1F, 0x04, 0xC7, 0x2A, 0x1F, 0x04, 0xC7, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0x52, 0x1F, 0x04, 0xC7, 0x2A, 0x1F, 0x04, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x52, 0x1F, 0x05, 0xC7,
|
||||
0x28, 0x1F, 0x05, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x53, 0x1F, 0x05, 0xC7, 0x26, 0x1F, 0x05, 0xC7,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0x54, 0x1F, 0x08, 0xC7, 0x20, 0x1F, 0x08, 0xC7, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0x54, 0x1F, 0x0C, 0xC7, 0x18, 0x1F, 0x0C, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x55, 0x1F, 0x2E, 0xC7,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0x56, 0x1F, 0x2E, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x57, 0x1F, 0x2C, 0xC7,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0x59, 0x1F, 0x2A, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x5B, 0x1F, 0x28, 0xC7,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0x5D, 0x1F, 0x26, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x5F, 0x1F, 0x24, 0xC7,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0x62, 0x1F, 0x20, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x65, 0x1F, 0x1D, 0xC7,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0x6A, 0x1F, 0x18, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x71, 0x1F, 0x0E, 0xC7,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xE9, 0x1F, 0x04, 0xC7, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0x80, 0x1F, 0x04, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x80, 0x1F, 0x04, 0xC7, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0x80, 0x1F, 0x04, 0xC7, 0x11, 0x1F, 0x04, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x6B, 0x1F, 0x04, 0xC7,
|
||||
0x11, 0x1F, 0x04, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x6B, 0x1F, 0x04, 0xC7, 0x11, 0x1F, 0x04, 0xC7,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0x6B, 0x1F, 0x04, 0xC7, 0x11, 0x1F, 0x04, 0xC7, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0x6B, 0x1F, 0x04, 0xC7, 0x11, 0x1F, 0x04, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x6B, 0x1F, 0x04, 0xC7,
|
||||
0x11, 0x1F, 0x04, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x6B, 0x1F, 0x04, 0xC7, 0x11, 0x1F, 0x04, 0xC7,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0x6B, 0x1F, 0x04, 0xC7, 0x11, 0x1F, 0x04, 0xC7, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0x6B, 0x1F, 0x04, 0xC7, 0x11, 0x1F, 0x04, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x6B, 0x1F, 0x04, 0xC7,
|
||||
0x11, 0x1F, 0x04, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x6B, 0x1F, 0x04, 0xC7, 0x11, 0x1F, 0x04, 0xC7,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0x6B, 0x1F, 0x04, 0xC7, 0x11, 0x1F, 0x04, 0xC7, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0x6B, 0x1F, 0x04, 0xC7, 0x11, 0x1F, 0x04, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x6B, 0x1F, 0x04, 0xC7,
|
||||
0x11, 0x1F, 0x04, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x6B, 0x1F, 0x04, 0xC7, 0x11, 0x1F, 0x04, 0xC7,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0x6B, 0x1F, 0x30, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x54, 0x1F, 0x30, 0xC7,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0x54, 0x1F, 0x30, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x54, 0x1F, 0x30, 0xC7,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0x54, 0x1F, 0x30, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x54, 0x1F, 0x30, 0xC7,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0x54, 0x1F, 0x30, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x54, 0x1F, 0x30, 0xC7,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0x54, 0x1F, 0x30, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x54, 0x1F, 0x30, 0xC7,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0x79, 0x1F, 0x01, 0x38, 0x01, 0x12, 0x4C, 0x00, 0x01, 0x12,
|
||||
0x01, 0x39, 0xFF, 0x12, 0xFF, 0x12, 0x34, 0x1F, 0x01, 0x14, 0x4E, 0x00, 0x01, 0x02, 0x01, 0x34,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0x33, 0x1F, 0x01, 0x14, 0x4F, 0x00, 0x01, 0x02, 0x01, 0x34, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0x32, 0x1F, 0x01, 0x38, 0x01, 0x12, 0x4F, 0x00, 0x01, 0x02, 0x01, 0x34, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0x7E, 0x1F, 0x01, 0x35, 0x01, 0x02, 0x03, 0x00, 0x01, 0x01, 0x01, 0x36, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0x7E, 0x1F, 0x01, 0x35, 0x01, 0x02, 0x03, 0x00, 0x01, 0x01, 0x01, 0x36, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0x7E, 0x1F, 0x01, 0x35, 0x01, 0x02, 0x03, 0x00, 0x01, 0x01, 0x01, 0x36, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0x7E, 0x1F, 0x01, 0x35, 0x01, 0x02, 0x03, 0x00, 0x01, 0x01, 0x01, 0x36, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0x2D, 0x1F, 0x01, 0x4D, 0x01, 0x6E, 0x48, 0x70, 0x01, 0x6E, 0x01, 0x53, 0x05, 0x1F,
|
||||
0x01, 0x35, 0x01, 0x02, 0x03, 0x00, 0x01, 0x01, 0x01, 0x36, 0xFF, 0x12, 0x5C, 0x1F, 0x05, 0xC7,
|
||||
0x0D, 0x1F, 0x0D, 0xC7, 0x09, 0x1F, 0x10, 0xC7, 0x08, 0x1F, 0x0D, 0xC7, 0x0A, 0x1F, 0x0D, 0xC7,
|
||||
0x14, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7, 0x45, 0x1F, 0x01, 0x6F, 0x4A, 0x70, 0x01, 0x71,
|
||||
0x01, 0x54, 0x05, 0x1F, 0x01, 0x35, 0x01, 0x02, 0x03, 0x00, 0x01, 0x01, 0x01, 0x36, 0xFF, 0x12,
|
||||
0x5B, 0x1F, 0x05, 0xC7, 0x0C, 0x1F, 0x0F, 0xC7, 0x07, 0x1F, 0x11, 0xC7, 0x07, 0x1F, 0x0F, 0xC7,
|
||||
0x08, 0x1F, 0x0F, 0xC7, 0x13, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7, 0x45, 0x1F, 0x01, 0x6F,
|
||||
0x4B, 0x70, 0x01, 0x71, 0x01, 0x54, 0x05, 0x1F, 0x01, 0x35, 0x01, 0x02, 0x03, 0x00, 0x01, 0x01,
|
||||
0x01, 0x36, 0xFF, 0x12, 0x5A, 0x1F, 0x05, 0xC7, 0x0B, 0x1F, 0x11, 0xC7, 0x06, 0x1F, 0x11, 0xC7,
|
||||
0x06, 0x1F, 0x11, 0xC7, 0x06, 0x1F, 0x11, 0xC7, 0x12, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7,
|
||||
0x45, 0x1F, 0x01, 0x4D, 0x01, 0x6E, 0x4B, 0x70, 0x01, 0x71, 0x01, 0x54, 0x05, 0x1F, 0x01, 0x35,
|
||||
0x01, 0x02, 0x03, 0x00, 0x01, 0x01, 0x01, 0x36, 0xFF, 0x12, 0x58, 0x1F, 0x07, 0xC7, 0x0A, 0x1F,
|
||||
0x11, 0xC7, 0x06, 0x1F, 0x11, 0xC7, 0x06, 0x1F, 0x11, 0xC7, 0x06, 0x1F, 0x11, 0xC7, 0x12, 0x1F,
|
||||
0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7, 0x8E, 0x1F, 0x01, 0x52, 0x01, 0x71, 0x03, 0x70, 0x01, 0x72,
|
||||
0x01, 0x56, 0x05, 0x1F, 0x01, 0x35, 0x01, 0x02, 0x03, 0x00, 0x01, 0x01, 0x01, 0x36, 0xFF, 0x12,
|
||||
0x57, 0x1F, 0x07, 0xC7, 0x0A, 0x1F, 0x11, 0xC7, 0x06, 0x1F, 0x11, 0xC7, 0x06, 0x1F, 0x11, 0xC7,
|
||||
0x06, 0x1F, 0x11, 0xC7, 0x12, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7, 0x8F, 0x1F, 0x01, 0x52,
|
||||
0x01, 0x71, 0x03, 0x70, 0x01, 0x72, 0x01, 0x56, 0x05, 0x1F, 0x01, 0x35, 0x01, 0x02, 0x03, 0x00,
|
||||
0x01, 0x01, 0x01, 0x36, 0xFF, 0x12, 0x56, 0x1F, 0x07, 0xC7, 0x0A, 0x1F, 0x05, 0xC7, 0x07, 0x1F,
|
||||
0x05, 0xC7, 0x06, 0x1F, 0x05, 0xC7, 0x12, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7, 0x06, 0x1F,
|
||||
0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7, 0x12, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7, 0x90, 0x1F,
|
||||
0x01, 0x52, 0x01, 0x71, 0x03, 0x70, 0x01, 0x72, 0x01, 0x56, 0x05, 0x1F, 0x01, 0x35, 0x01, 0x02,
|
||||
0x03, 0x00, 0x01, 0x01, 0x01, 0x36, 0xFF, 0x12, 0x55, 0x1F, 0x07, 0xC7, 0x0A, 0x1F, 0x05, 0xC7,
|
||||
0x07, 0x1F, 0x05, 0xC7, 0x06, 0x1F, 0x05, 0xC7, 0x12, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7,
|
||||
0x06, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7, 0x12, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7,
|
||||
0x91, 0x1F, 0x01, 0x52, 0x01, 0x71, 0x03, 0x70, 0x01, 0x72, 0x01, 0x56, 0x05, 0x1F, 0x01, 0x35,
|
||||
0x01, 0x02, 0x03, 0x00, 0x01, 0x01, 0x01, 0x36, 0xFF, 0x12, 0x54, 0x1F, 0x03, 0xC7, 0x01, 0x1F,
|
||||
0x03, 0xC7, 0x0A, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7, 0x06, 0x1F, 0x05, 0xC7, 0x12, 0x1F,
|
||||
0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7, 0x06, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7, 0x12, 0x1F,
|
||||
0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7, 0x45, 0x1F, 0x01, 0x81, 0x01, 0xC3, 0x44, 0xC6, 0x01, 0xC3,
|
||||
0x01, 0x87, 0x05, 0x1F, 0x01, 0x52, 0x01, 0x71, 0x03, 0x70, 0x01, 0x72, 0x01, 0x56, 0x05, 0x1F,
|
||||
0x01, 0x35, 0x01, 0x02, 0x03, 0x00, 0x01, 0x01, 0x01, 0x36, 0xFF, 0x12, 0x53, 0x1F, 0x03, 0xC7,
|
||||
0x01, 0x1F, 0x03, 0xC7, 0x0A, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7, 0x06, 0x1F, 0x05, 0xC7,
|
||||
0x12, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7, 0x06, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7,
|
||||
0x12, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7, 0x45, 0x1F, 0x01, 0xC2, 0x46, 0xC6, 0x01, 0xC4,
|
||||
0x01, 0x8A, 0x05, 0x1F, 0x01, 0x52, 0x01, 0x71, 0x03, 0x70, 0x01, 0x72, 0x01, 0x56, 0x05, 0x1F,
|
||||
0x01, 0x35, 0x01, 0x02, 0x03, 0x00, 0x01, 0x01, 0x01, 0x36, 0xFF, 0x12, 0x51, 0x1F, 0x04, 0xC7,
|
||||
0x01, 0x1F, 0x04, 0xC7, 0x09, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7, 0x06, 0x1F, 0x05, 0xC7,
|
||||
0x12, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7, 0x06, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7,
|
||||
0x12, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7, 0x45, 0x1F, 0x01, 0xC2, 0x47, 0xC6, 0x01, 0xC4,
|
||||
0x01, 0x8A, 0x05, 0x1F, 0x01, 0x52, 0x01, 0x71, 0x03, 0x70, 0x01, 0x72, 0x01, 0x56, 0x05, 0x1F,
|
||||
0x01, 0x35, 0x01, 0x02, 0x03, 0x00, 0x01, 0x01, 0x01, 0x36, 0xFF, 0x12, 0x50, 0x1F, 0x04, 0xC7,
|
||||
0x01, 0x1F, 0x04, 0xC7, 0x09, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7, 0x06, 0x1F, 0x05, 0xC7,
|
||||
0x12, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7, 0x06, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7,
|
||||
0x12, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7, 0x45, 0x1F, 0x01, 0x81, 0x01, 0xC3, 0x47, 0xC6,
|
||||
0x01, 0xC4, 0x01, 0x8A, 0x05, 0x1F, 0x01, 0x52, 0x01, 0x71, 0x03, 0x70, 0x01, 0x72, 0x01, 0x56,
|
||||
0x05, 0x1F, 0x01, 0x34, 0x01, 0x02, 0x03, 0x00, 0x01, 0x02, 0x01, 0x34, 0xFF, 0x12, 0x4F, 0x1F,
|
||||
0x04, 0xC7, 0x01, 0x1F, 0x04, 0xC7, 0x09, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7, 0x06, 0x1F,
|
||||
0x05, 0xC7, 0x12, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7, 0x06, 0x1F, 0x05, 0xC7, 0x07, 0x1F,
|
||||
0x05, 0xC7, 0x12, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7, 0x8A, 0x1F, 0x01, 0x86, 0x01, 0xC4,
|
||||
0x03, 0xC6, 0x01, 0xC5, 0x01, 0x8D, 0x05, 0x1F, 0x01, 0x52, 0x01, 0x71, 0x03, 0x70, 0x01, 0x72,
|
||||
0x01, 0x56, 0x05, 0x1F, 0x01, 0x35, 0x01, 0x02, 0x03, 0x00, 0x01, 0x01, 0x01, 0x36, 0xFF, 0x12,
|
||||
0x4E, 0x1F, 0x04, 0xC7, 0x01, 0x1F, 0x04, 0xC7, 0x09, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7,
|
||||
0x06, 0x1F, 0x05, 0xC7, 0x12, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7, 0x06, 0x1F, 0x05, 0xC7,
|
||||
0x07, 0x1F, 0x05, 0xC7, 0x12, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7, 0x8B, 0x1F, 0x01, 0x86,
|
||||
0x01, 0xC4, 0x03, 0xC6, 0x01, 0xC5, 0x01, 0x8D, 0x05, 0x1F, 0x01, 0x52, 0x01, 0x71, 0x03, 0x70,
|
||||
0x01, 0x72, 0x01, 0x56, 0x05, 0x1F, 0x01, 0x35, 0x01, 0x02, 0x03, 0x00, 0x01, 0x01, 0x01, 0x36,
|
||||
0xFF, 0x12, 0x4D, 0x1F, 0x04, 0xC7, 0x01, 0x1F, 0x04, 0xC7, 0x09, 0x1F, 0x05, 0xC7, 0x06, 0x1F,
|
||||
0x06, 0xC7, 0x06, 0x1F, 0x05, 0xC7, 0x12, 0x1F, 0x05, 0xC7, 0x12, 0x1F, 0x05, 0xC7, 0x07, 0x1F,
|
||||
0x05, 0xC7, 0x12, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7, 0x8C, 0x1F, 0x01, 0x86, 0x01, 0xC4,
|
||||
0x03, 0xC6, 0x01, 0xC5, 0x01, 0x8D, 0x05, 0x1F, 0x01, 0x52, 0x01, 0x71, 0x03, 0x70, 0x01, 0x72,
|
||||
0x01, 0x56, 0x05, 0x1F, 0x01, 0x35, 0x01, 0x02, 0x03, 0x00, 0x01, 0x01, 0x01, 0x36, 0xFF, 0x12,
|
||||
0x4B, 0x1F, 0x05, 0xC7, 0x01, 0x1F, 0x05, 0xC7, 0x13, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7,
|
||||
0x12, 0x1F, 0x05, 0xC7, 0x12, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7, 0x12, 0x1F, 0x05, 0xC7,
|
||||
0x07, 0x1F, 0x05, 0xC7, 0x8D, 0x1F, 0x01, 0x86, 0x01, 0xC4, 0x03, 0xC6, 0x01, 0xC5, 0x01, 0x8D,
|
||||
0x05, 0x1F, 0x01, 0x52, 0x01, 0x71, 0x03, 0x70, 0x01, 0x72, 0x01, 0x56, 0x05, 0x1F, 0x01, 0x35,
|
||||
0x01, 0x02, 0x03, 0x00, 0x01, 0x01, 0x01, 0x36, 0xFF, 0x12, 0x4A, 0x1F, 0x04, 0xC7, 0x02, 0x1F,
|
||||
0x05, 0xC7, 0x12, 0x1F, 0x06, 0xC7, 0x07, 0x1F, 0x0F, 0xC7, 0x08, 0x1F, 0x05, 0xC7, 0x12, 0x1F,
|
||||
0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7, 0x12, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7, 0x45, 0x1F,
|
||||
0x01, 0x58, 0x01, 0x91, 0x40, 0x98, 0x01, 0x91, 0x01, 0x5D, 0x05, 0x1F, 0x01, 0x86, 0x01, 0xC4,
|
||||
0x03, 0xC6, 0x01, 0xC5, 0x01, 0x8D, 0x05, 0x1F, 0x01, 0x52, 0x01, 0x71, 0x03, 0x70, 0x01, 0x72,
|
||||
0x01, 0x56, 0x05, 0x1F, 0x01, 0x34, 0x01, 0x02, 0x03, 0x00, 0x01, 0x02, 0x01, 0x34, 0xFF, 0x12,
|
||||
0x49, 0x1F, 0x04, 0xC7, 0x03, 0x1F, 0x04, 0xC7, 0x12, 0x1F, 0x05, 0xC7, 0x08, 0x1F, 0x10, 0xC7,
|
||||
0x07, 0x1F, 0x05, 0xC7, 0x12, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7, 0x12, 0x1F, 0x05, 0xC7,
|
||||
0x07, 0x1F, 0x05, 0xC7, 0x45, 0x1F, 0x01, 0x90, 0x42, 0x98, 0x01, 0x97, 0x01, 0x5E, 0x05, 0x1F,
|
||||
0x01, 0x86, 0x01, 0xC4, 0x03, 0xC6, 0x01, 0xC5, 0x01, 0x8D, 0x05, 0x1F, 0x01, 0x52, 0x01, 0x71,
|
||||
0x03, 0x70, 0x01, 0x72, 0x01, 0x56, 0x05, 0x1F, 0x01, 0x35, 0x01, 0x02, 0x03, 0x00, 0x01, 0x01,
|
||||
0x01, 0x36, 0xFF, 0x12, 0x48, 0x1F, 0x04, 0xC7, 0x03, 0x1F, 0x04, 0xC7, 0x11, 0x1F, 0x06, 0xC7,
|
||||
0x08, 0x1F, 0x11, 0xC7, 0x06, 0x1F, 0x0F, 0xC7, 0x08, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7,
|
||||
0x12, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7, 0x45, 0x1F, 0x01, 0x90, 0x43, 0x98, 0x01, 0x97,
|
||||
0x01, 0x5E, 0x05, 0x1F, 0x01, 0x86, 0x01, 0xC4, 0x03, 0xC6, 0x01, 0xC5, 0x01, 0x8D, 0x05, 0x1F,
|
||||
0x01, 0x52, 0x01, 0x71, 0x03, 0x70, 0x01, 0x72, 0x01, 0x56, 0x05, 0x1F, 0x01, 0x35, 0x01, 0x02,
|
||||
0x03, 0x00, 0x01, 0x01, 0x01, 0x36, 0xFF, 0x12, 0x47, 0x1F, 0x04, 0xC7, 0x03, 0x1F, 0x04, 0xC7,
|
||||
0x11, 0x1F, 0x05, 0xC7, 0x09, 0x1F, 0x11, 0xC7, 0x06, 0x1F, 0x10, 0xC7, 0x07, 0x1F, 0x05, 0xC7,
|
||||
0x07, 0x1F, 0x05, 0xC7, 0x12, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7, 0x45, 0x1F, 0x01, 0x58,
|
||||
0x01, 0x91, 0x43, 0x98, 0x01, 0x97, 0x01, 0x5E, 0x05, 0x1F, 0x01, 0x86, 0x01, 0xC4, 0x03, 0xC6,
|
||||
0x01, 0xC5, 0x01, 0x8D, 0x05, 0x1F, 0x01, 0x52, 0x01, 0x71, 0x03, 0x70, 0x01, 0x72, 0x01, 0x56,
|
||||
0x05, 0x1F, 0x01, 0x35, 0x01, 0x02, 0x03, 0x00, 0x01, 0x01, 0x01, 0x36, 0xFF, 0x12, 0x46, 0x1F,
|
||||
0x04, 0xC7, 0x03, 0x1F, 0x04, 0xC7, 0x10, 0x1F, 0x06, 0xC7, 0x09, 0x1F, 0x11, 0xC7, 0x06, 0x1F,
|
||||
0x11, 0xC7, 0x06, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7, 0x12, 0x1F, 0x05, 0xC7, 0x07, 0x1F,
|
||||
0x05, 0xC7, 0x86, 0x1F, 0x01, 0x5C, 0x01, 0x97, 0x03, 0x98, 0x01, 0x96, 0x01, 0x64, 0x05, 0x1F,
|
||||
0x01, 0x86, 0x01, 0xC4, 0x03, 0xC6, 0x01, 0xC5, 0x01, 0x8D, 0x05, 0x1F, 0x01, 0x52, 0x01, 0x71,
|
||||
0x03, 0x70, 0x01, 0x72, 0x01, 0x56, 0x05, 0x1F, 0x01, 0x35, 0x01, 0x02, 0x03, 0x00, 0x01, 0x01,
|
||||
0x01, 0x36, 0xFF, 0x12, 0x44, 0x1F, 0x05, 0xC7, 0x03, 0x1F, 0x05, 0xC7, 0x0F, 0x1F, 0x05, 0xC7,
|
||||
0x16, 0x1F, 0x05, 0xC7, 0x06, 0x1F, 0x11, 0xC7, 0x06, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7,
|
||||
0x12, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7, 0x87, 0x1F, 0x01, 0x5C, 0x01, 0x97, 0x03, 0x98,
|
||||
0x01, 0x96, 0x01, 0x64, 0x05, 0x1F, 0x01, 0x86, 0x01, 0xC4, 0x03, 0xC6, 0x01, 0xC5, 0x01, 0x8D,
|
||||
0x05, 0x1F, 0x01, 0x52, 0x01, 0x71, 0x03, 0x70, 0x01, 0x72, 0x01, 0x56, 0x05, 0x1F, 0x01, 0x35,
|
||||
0x01, 0x02, 0x03, 0x00, 0x01, 0x01, 0x01, 0x36, 0xFF, 0x12, 0x43, 0x1F, 0x05, 0xC7, 0x03, 0x1F,
|
||||
0x05, 0xC7, 0x0E, 0x1F, 0x06, 0xC7, 0x16, 0x1F, 0x05, 0xC7, 0x06, 0x1F, 0x11, 0xC7, 0x06, 0x1F,
|
||||
0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7, 0x12, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7, 0x88, 0x1F,
|
||||
0x01, 0x5C, 0x01, 0x97, 0x03, 0x98, 0x01, 0x96, 0x01, 0x64, 0x05, 0x1F, 0x01, 0x86, 0x01, 0xC4,
|
||||
0x03, 0xC6, 0x01, 0xC5, 0x01, 0x8D, 0x05, 0x1F, 0x01, 0x52, 0x01, 0x71, 0x03, 0x70, 0x01, 0x72,
|
||||
0x01, 0x56, 0x05, 0x1F, 0x01, 0x35, 0x01, 0x02, 0x03, 0x00, 0x01, 0x01, 0x01, 0x36, 0xFF, 0x12,
|
||||
0x42, 0x1F, 0x05, 0xC7, 0x03, 0x1F, 0x05, 0xC7, 0x0E, 0x1F, 0x05, 0xC7, 0x17, 0x1F, 0x05, 0xC7,
|
||||
0x06, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7, 0x06, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7,
|
||||
0x12, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7, 0x89, 0x1F, 0x01, 0x5C, 0x01, 0x97, 0x03, 0x98,
|
||||
0x01, 0x96, 0x01, 0x64, 0x05, 0x1F, 0x01, 0x86, 0x01, 0xC4, 0x03, 0xC6, 0x01, 0xC5, 0x01, 0x8D,
|
||||
0x05, 0x1F, 0x01, 0x54, 0x01, 0x71, 0x03, 0x70, 0x01, 0x71, 0x01, 0x54, 0x05, 0x1F, 0x01, 0x35,
|
||||
0x01, 0x02, 0x03, 0x00, 0x01, 0x01, 0x01, 0x36, 0xFF, 0x12, 0x41, 0x1F, 0x05, 0xC7, 0x03, 0x1F,
|
||||
0x05, 0xC7, 0x0D, 0x1F, 0x06, 0xC7, 0x17, 0x1F, 0x05, 0xC7, 0x06, 0x1F, 0x05, 0xC7, 0x07, 0x1F,
|
||||
0x05, 0xC7, 0x06, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7, 0x12, 0x1F, 0x05, 0xC7, 0x07, 0x1F,
|
||||
0x05, 0xC7, 0x45, 0x1F, 0x01, 0x5F, 0x01, 0xA6, 0x3C, 0xB9, 0x01, 0xA6, 0x01, 0x66, 0x05, 0x1F,
|
||||
0x01, 0x5C, 0x01, 0x97, 0x03, 0x98, 0x01, 0x96, 0x01, 0x64, 0x05, 0x1F, 0x01, 0x86, 0x01, 0xC4,
|
||||
0x03, 0xC6, 0x01, 0xC5, 0x01, 0x8D, 0x05, 0x1F, 0x01, 0x52, 0x01, 0x71, 0x03, 0x70, 0x01, 0x72,
|
||||
0x01, 0x56, 0x05, 0x1F, 0x01, 0x35, 0x01, 0x02, 0x03, 0x00, 0x01, 0x01, 0x01, 0x36, 0xFF, 0x12,
|
||||
0x40, 0x1F, 0x04, 0xC7, 0x05, 0x1F, 0x04, 0xC7, 0x0D, 0x1F, 0x05, 0xC7, 0x18, 0x1F, 0x05, 0xC7,
|
||||
0x06, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7, 0x06, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7,
|
||||
0x12, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7, 0x45, 0x1F, 0x01, 0xA4, 0x3E, 0xB9, 0x01, 0xB5,
|
||||
0x01, 0x68, 0x05, 0x1F, 0x01, 0x5C, 0x01, 0x97, 0x03, 0x98, 0x01, 0x96, 0x01, 0x64, 0x05, 0x1F,
|
||||
0x01, 0x86, 0x01, 0xC4, 0x03, 0xC6, 0x01, 0xC5, 0x01, 0x8D, 0x05, 0x1F, 0x01, 0x52, 0x01, 0x71,
|
||||
0x03, 0x70, 0x01, 0x72, 0x01, 0x56, 0x05, 0x1F, 0x01, 0x35, 0x01, 0x02, 0x03, 0x00, 0x01, 0x01,
|
||||
0x01, 0x36, 0xFF, 0x12, 0x3E, 0x1F, 0x05, 0xC7, 0x05, 0x1F, 0x05, 0xC7, 0x0B, 0x1F, 0x06, 0xC7,
|
||||
0x18, 0x1F, 0x05, 0xC7, 0x06, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7, 0x06, 0x1F, 0x05, 0xC7,
|
||||
0x07, 0x1F, 0x05, 0xC7, 0x12, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7, 0x45, 0x1F, 0x01, 0xA4,
|
||||
0x3F, 0xB9, 0x01, 0xB5, 0x01, 0x68, 0x05, 0x1F, 0x01, 0x5C, 0x01, 0x97, 0x03, 0x98, 0x01, 0x96,
|
||||
0x01, 0x64, 0x05, 0x1F, 0x01, 0x86, 0x01, 0xC4, 0x03, 0xC6, 0x01, 0xC5, 0x01, 0x8D, 0x05, 0x1F,
|
||||
0x01, 0x52, 0x01, 0x71, 0x03, 0x70, 0x01, 0x72, 0x01, 0x56, 0x05, 0x1F, 0x01, 0x35, 0x01, 0x02,
|
||||
0x03, 0x00, 0x01, 0x01, 0x01, 0x36, 0xFF, 0x12, 0x3D, 0x1F, 0x05, 0xC7, 0x05, 0x1F, 0x05, 0xC7,
|
||||
0x0A, 0x1F, 0x06, 0xC7, 0x19, 0x1F, 0x05, 0xC7, 0x06, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7,
|
||||
0x06, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7, 0x12, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7,
|
||||
0x45, 0x1F, 0x01, 0x5F, 0x01, 0xA6, 0x3F, 0xB9, 0x01, 0xB5, 0x01, 0x68, 0x05, 0x1F, 0x01, 0x5C,
|
||||
0x01, 0x97, 0x03, 0x98, 0x01, 0x96, 0x01, 0x64, 0x05, 0x1F, 0x01, 0x86, 0x01, 0xC4, 0x03, 0xC6,
|
||||
0x01, 0xC5, 0x01, 0x8D, 0x05, 0x1F, 0x01, 0x52, 0x01, 0x71, 0x03, 0x70, 0x01, 0x72, 0x01, 0x56,
|
||||
0x05, 0x1F, 0x01, 0x35, 0x01, 0x02, 0x03, 0x00, 0x01, 0x01, 0x01, 0x36, 0xFF, 0x12, 0x3C, 0x1F,
|
||||
0x0F, 0xC7, 0x0A, 0x1F, 0x06, 0xC7, 0x0D, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7, 0x06, 0x1F,
|
||||
0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7, 0x06, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7, 0x12, 0x1F,
|
||||
0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7, 0x82, 0x1F, 0x01, 0x66, 0x01, 0xB5, 0x03, 0xB9, 0x01, 0xB5,
|
||||
0x01, 0x6C, 0x05, 0x1F, 0x01, 0x5C, 0x01, 0x97, 0x03, 0x98, 0x01, 0x96, 0x01, 0x64, 0x05, 0x1F,
|
||||
0x01, 0x86, 0x01, 0xC4, 0x03, 0xC6, 0x01, 0xC5, 0x01, 0x8D, 0x05, 0x1F, 0x01, 0x54, 0x01, 0x71,
|
||||
0x03, 0x70, 0x01, 0x71, 0x01, 0x54, 0x05, 0x1F, 0x01, 0x35, 0x01, 0x02, 0x03, 0x00, 0x01, 0x01,
|
||||
0x01, 0x36, 0xFF, 0x12, 0x3B, 0x1F, 0x0F, 0xC7, 0x09, 0x1F, 0x06, 0xC7, 0x0E, 0x1F, 0x05, 0xC7,
|
||||
0x07, 0x1F, 0x05, 0xC7, 0x06, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7, 0x06, 0x1F, 0x05, 0xC7,
|
||||
0x07, 0x1F, 0x05, 0xC7, 0x12, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7, 0x83, 0x1F, 0x01, 0x66,
|
||||
0x01, 0xB5, 0x03, 0xB9, 0x01, 0xB5, 0x01, 0x6C, 0x05, 0x1F, 0x01, 0x5C, 0x01, 0x97, 0x03, 0x98,
|
||||
0x01, 0x96, 0x01, 0x64, 0x05, 0x1F, 0x01, 0x86, 0x01, 0xC4, 0x03, 0xC6, 0x01, 0xC5, 0x01, 0x8D,
|
||||
0x05, 0x1F, 0x01, 0x52, 0x01, 0x71, 0x03, 0x70, 0x01, 0x72, 0x01, 0x56, 0x05, 0x1F, 0x01, 0x35,
|
||||
0x01, 0x02, 0x03, 0x00, 0x01, 0x01, 0x01, 0x36, 0xFF, 0x12, 0x3A, 0x1F, 0x0F, 0xC7, 0x09, 0x1F,
|
||||
0x06, 0xC7, 0x0E, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7, 0x06, 0x1F, 0x05, 0xC7, 0x07, 0x1F,
|
||||
0x05, 0xC7, 0x06, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7, 0x12, 0x1F, 0x05, 0xC7, 0x07, 0x1F,
|
||||
0x05, 0xC7, 0x84, 0x1F, 0x01, 0x66, 0x01, 0xB5, 0x03, 0xB9, 0x01, 0xB5, 0x01, 0x6C, 0x05, 0x1F,
|
||||
0x01, 0x5C, 0x01, 0x97, 0x03, 0x98, 0x01, 0x96, 0x01, 0x64, 0x05, 0x1F, 0x01, 0x86, 0x01, 0xC4,
|
||||
0x03, 0xC6, 0x01, 0xC5, 0x01, 0x8D, 0x05, 0x1F, 0x01, 0x52, 0x01, 0x71, 0x03, 0x70, 0x01, 0x72,
|
||||
0x01, 0x56, 0x05, 0x1F, 0x01, 0x35, 0x01, 0x02, 0x03, 0x00, 0x01, 0x01, 0x01, 0x36, 0xFF, 0x12,
|
||||
0x39, 0x1F, 0x10, 0xC7, 0x07, 0x1F, 0x06, 0xC7, 0x0F, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7,
|
||||
0x06, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7, 0x06, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7,
|
||||
0x12, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7, 0x85, 0x1F, 0x01, 0x66, 0x01, 0xB5, 0x03, 0xB9,
|
||||
0x01, 0xB5, 0x01, 0x6C, 0x05, 0x1F, 0x01, 0x5C, 0x01, 0x97, 0x03, 0x98, 0x01, 0x96, 0x01, 0x64,
|
||||
0x05, 0x1F, 0x01, 0x86, 0x01, 0xC4, 0x03, 0xC6, 0x01, 0xC5, 0x01, 0x8D, 0x05, 0x1F, 0x01, 0x52,
|
||||
0x01, 0x71, 0x03, 0x70, 0x01, 0x72, 0x01, 0x56, 0x05, 0x1F, 0x01, 0x35, 0x01, 0x02, 0x03, 0x00,
|
||||
0x01, 0x01, 0x01, 0x36, 0xFF, 0x12, 0x37, 0x1F, 0x11, 0xC7, 0x07, 0x1F, 0x06, 0xC7, 0x0F, 0x1F,
|
||||
0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7, 0x06, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7, 0x06, 0x1F,
|
||||
0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7, 0x12, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7, 0x86, 0x1F,
|
||||
0x01, 0x66, 0x01, 0xB5, 0x03, 0xB9, 0x01, 0xB5, 0x01, 0x6C, 0x05, 0x1F, 0x01, 0x5C, 0x01, 0x97,
|
||||
0x03, 0x98, 0x01, 0x96, 0x01, 0x64, 0x05, 0x1F, 0x01, 0x86, 0x01, 0xC4, 0x03, 0xC6, 0x01, 0xC5,
|
||||
0x01, 0x8D, 0x05, 0x1F, 0x01, 0x52, 0x01, 0x71, 0x03, 0x70, 0x01, 0x72, 0x01, 0x56, 0x05, 0x1F,
|
||||
0x01, 0x35, 0x01, 0x02, 0x03, 0x00, 0x01, 0x01, 0x01, 0x36, 0xFF, 0x12, 0x36, 0x1F, 0x05, 0xC7,
|
||||
0x07, 0x1F, 0x05, 0xC7, 0x06, 0x1F, 0x06, 0xC7, 0x10, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7,
|
||||
0x06, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7, 0x06, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7,
|
||||
0x12, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7, 0x87, 0x1F, 0x01, 0x66, 0x01, 0xB5, 0x03, 0xB9,
|
||||
0x01, 0xB5, 0x01, 0x6C, 0x05, 0x1F, 0x01, 0x5C, 0x01, 0x97, 0x03, 0x98, 0x01, 0x96, 0x01, 0x64,
|
||||
0x05, 0x1F, 0x01, 0x86, 0x01, 0xC4, 0x03, 0xC6, 0x01, 0xC5, 0x01, 0x8D, 0x05, 0x1F, 0x01, 0x52,
|
||||
0x01, 0x71, 0x03, 0x70, 0x01, 0x72, 0x01, 0x56, 0x05, 0x1F, 0x01, 0x35, 0x01, 0x02, 0x03, 0x00,
|
||||
0x01, 0x01, 0x01, 0x36, 0xFF, 0x12, 0x35, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7, 0x06, 0x1F,
|
||||
0x06, 0xC7, 0x10, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7, 0x06, 0x1F, 0x05, 0xC7, 0x07, 0x1F,
|
||||
0x05, 0xC7, 0x06, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7, 0x12, 0x1F, 0x05, 0xC7, 0x07, 0x1F,
|
||||
0x05, 0xC7, 0x67, 0x1F, 0x01, 0x40, 0x01, 0x8F, 0x01, 0x93, 0x01, 0x47, 0x1D, 0x1F, 0x01, 0x66,
|
||||
0x01, 0xB5, 0x03, 0xB9, 0x01, 0xB5, 0x01, 0x6C, 0x05, 0x1F, 0x01, 0x5C, 0x01, 0x97, 0x03, 0x98,
|
||||
0x01, 0x96, 0x01, 0x64, 0x05, 0x1F, 0x01, 0x86, 0x01, 0xC4, 0x03, 0xC6, 0x01, 0xC5, 0x01, 0x8D,
|
||||
0x05, 0x1F, 0x01, 0x52, 0x01, 0x71, 0x03, 0x70, 0x01, 0x72, 0x01, 0x56, 0x05, 0x1F, 0x01, 0x35,
|
||||
0x01, 0x02, 0x03, 0x00, 0x01, 0x01, 0x01, 0x36, 0xFF, 0x12, 0x34, 0x1F, 0x05, 0xC7, 0x07, 0x1F,
|
||||
0x05, 0xC7, 0x05, 0x1F, 0x06, 0xC7, 0x11, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7, 0x06, 0x1F,
|
||||
0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7, 0x06, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7, 0x12, 0x1F,
|
||||
0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7, 0x65, 0x1F, 0x01, 0x22, 0x01, 0x77, 0x01, 0xB7, 0x02, 0xC1,
|
||||
0x01, 0xBB, 0x01, 0x7D, 0x01, 0x2B, 0x1C, 0x1F, 0x01, 0x66, 0x01, 0xB5, 0x03, 0xB9, 0x01, 0xB5,
|
||||
0x01, 0x6C, 0x05, 0x1F, 0x01, 0x5C, 0x01, 0x97, 0x03, 0x98, 0x01, 0x96, 0x01, 0x64, 0x05, 0x1F,
|
||||
0x01, 0x8A, 0x01, 0xC4, 0x03, 0xC6, 0x01, 0xC4, 0x01, 0x8A, 0x05, 0x1F, 0x01, 0x52, 0x01, 0x71,
|
||||
0x03, 0x70, 0x01, 0x72, 0x01, 0x56, 0x05, 0x1F, 0x01, 0x35, 0x01, 0x02, 0x03, 0x00, 0x01, 0x01,
|
||||
0x01, 0x36, 0xFF, 0x12, 0x33, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7, 0x05, 0x1F, 0x11, 0xC7,
|
||||
0x06, 0x1F, 0x11, 0xC7, 0x06, 0x1F, 0x11, 0xC7, 0x06, 0x1F, 0x11, 0xC7, 0x12, 0x1F, 0x11, 0xC7,
|
||||
0x64, 0x1F, 0x01, 0x4F, 0x01, 0x9C, 0x06, 0xC1, 0x01, 0xA8, 0x01, 0x6D, 0x1C, 0x1F, 0x01, 0x66,
|
||||
0x01, 0xB5, 0x03, 0xB9, 0x01, 0xB5, 0x01, 0x6C, 0x05, 0x1F, 0x01, 0x5C, 0x01, 0x97, 0x03, 0x98,
|
||||
0x01, 0x96, 0x01, 0x64, 0x05, 0x1F, 0x01, 0x86, 0x01, 0xC4, 0x03, 0xC6, 0x01, 0xC5, 0x01, 0x8D,
|
||||
0x05, 0x1F, 0x01, 0x52, 0x01, 0x71, 0x03, 0x70, 0x01, 0x72, 0x01, 0x56, 0x05, 0x1F, 0x01, 0x35,
|
||||
0x01, 0x02, 0x03, 0x00, 0x01, 0x01, 0x01, 0x36, 0xFF, 0x12, 0x31, 0x1F, 0x06, 0xC7, 0x08, 0x1F,
|
||||
0x05, 0xC7, 0x03, 0x1F, 0x12, 0xC7, 0x06, 0x1F, 0x11, 0xC7, 0x06, 0x1F, 0x11, 0xC7, 0x06, 0x1F,
|
||||
0x11, 0xC7, 0x12, 0x1F, 0x11, 0xC7, 0x62, 0x1F, 0x01, 0x2C, 0x01, 0x7D, 0x01, 0xBE, 0x09, 0xC1,
|
||||
0x01, 0x93, 0x01, 0x47, 0x1B, 0x1F, 0x01, 0x66, 0x01, 0xB5, 0x03, 0xB9, 0x01, 0xB5, 0x01, 0x6C,
|
||||
0x05, 0x1F, 0x01, 0x5C, 0x01, 0x97, 0x03, 0x98, 0x01, 0x96, 0x01, 0x64, 0x05, 0x1F, 0x01, 0x86,
|
||||
0x01, 0xC4, 0x03, 0xC6, 0x01, 0xC5, 0x01, 0x8D, 0x05, 0x1F, 0x01, 0x52, 0x01, 0x71, 0x03, 0x70,
|
||||
0x01, 0x72, 0x01, 0x56, 0x05, 0x1F, 0x01, 0x35, 0x01, 0x02, 0x03, 0x00, 0x01, 0x01, 0x01, 0x36,
|
||||
0xFF, 0x12, 0x30, 0x1F, 0x05, 0xC7, 0x09, 0x1F, 0x05, 0xC7, 0x03, 0x1F, 0x12, 0xC7, 0x06, 0x1F,
|
||||
0x11, 0xC7, 0x06, 0x1F, 0x11, 0xC7, 0x06, 0x1F, 0x11, 0xC7, 0x12, 0x1F, 0x11, 0xC7, 0x61, 0x1F,
|
||||
0x01, 0x63, 0x01, 0xA3, 0x0C, 0xC1, 0x01, 0xBB, 0x01, 0x7D, 0x01, 0x2B, 0x1A, 0x1F, 0x01, 0x66,
|
||||
0x01, 0xB5, 0x03, 0xB9, 0x01, 0xB5, 0x01, 0x6C, 0x05, 0x1F, 0x01, 0x5C, 0x01, 0x97, 0x03, 0x98,
|
||||
0x01, 0x96, 0x01, 0x64, 0x05, 0x1F, 0x01, 0x86, 0x01, 0xC4, 0x03, 0xC6, 0x01, 0xC5, 0x01, 0x8D,
|
||||
0x05, 0x1F, 0x01, 0x52, 0x01, 0x71, 0x03, 0x70, 0x01, 0x72, 0x01, 0x56, 0x05, 0x1F, 0x01, 0x35,
|
||||
0x01, 0x02, 0x03, 0x00, 0x01, 0x01, 0x01, 0x36, 0xFF, 0x12, 0x2F, 0x1F, 0x05, 0xC7, 0x09, 0x1F,
|
||||
0x05, 0xC7, 0x03, 0x1F, 0x12, 0xC7, 0x07, 0x1F, 0x0F, 0xC7, 0x08, 0x1F, 0x0F, 0xC7, 0x08, 0x1F,
|
||||
0x0F, 0xC7, 0x14, 0x1F, 0x0F, 0xC7, 0x60, 0x1F, 0x01, 0x33, 0x01, 0x88, 0x06, 0xC1, 0x01, 0xA5,
|
||||
0x01, 0x76, 0x01, 0x3B, 0x01, 0x8E, 0x06, 0xC1, 0x01, 0xA8, 0x01, 0x6D, 0x1A, 0x1F, 0x01, 0x66,
|
||||
0x01, 0xB5, 0x03, 0xB9, 0x01, 0xB5, 0x01, 0x6C, 0x05, 0x1F, 0x01, 0x5C, 0x01, 0x97, 0x03, 0x98,
|
||||
0x01, 0x96, 0x01, 0x64, 0x05, 0x1F, 0x01, 0x86, 0x01, 0xC4, 0x03, 0xC6, 0x01, 0xC5, 0x01, 0x8D,
|
||||
0x05, 0x1F, 0x01, 0x52, 0x01, 0x71, 0x03, 0x70, 0x01, 0x72, 0x01, 0x56, 0x05, 0x1F, 0x01, 0x35,
|
||||
0x01, 0x02, 0x03, 0x00, 0x01, 0x01, 0x01, 0x36, 0xFF, 0x12, 0x2E, 0x1F, 0x05, 0xC7, 0x09, 0x1F,
|
||||
0x05, 0xC7, 0x03, 0x1F, 0x12, 0xC7, 0x08, 0x1F, 0x0D, 0xC7, 0x0A, 0x1F, 0x0D, 0xC7, 0x0A, 0x1F,
|
||||
0x0D, 0xC7, 0x16, 0x1F, 0x0D, 0xC7, 0x60, 0x1F, 0x01, 0x73, 0x01, 0xB1, 0x05, 0xC1, 0x01, 0xAC,
|
||||
0x01, 0x7B, 0x01, 0x49, 0x01, 0x48, 0x02, 0x17, 0x01, 0x3B, 0x01, 0x8E, 0x06, 0xC1, 0x01, 0x93,
|
||||
0x01, 0x47, 0x19, 0x1F, 0x01, 0x66, 0x01, 0xB5, 0x03, 0xB9, 0x01, 0xB5, 0x01, 0x6C, 0x05, 0x1F,
|
||||
0x01, 0x5C, 0x01, 0x97, 0x03, 0x98, 0x01, 0x96, 0x01, 0x64, 0x05, 0x1F, 0x01, 0x8A, 0x01, 0xC4,
|
||||
0x03, 0xC6, 0x01, 0xC4, 0x01, 0x8A, 0x05, 0x1F, 0x01, 0x52, 0x01, 0x71, 0x03, 0x70, 0x01, 0x72,
|
||||
0x01, 0x56, 0x05, 0x1F, 0x01, 0x35, 0x01, 0x02, 0x03, 0x00, 0x01, 0x01, 0x01, 0x36, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0x1B, 0x1F, 0x01, 0x47, 0x01, 0x95, 0x05, 0xC1, 0x01, 0xB2, 0x01, 0x7E, 0x01, 0x4C,
|
||||
0x03, 0x48, 0x04, 0x17, 0x01, 0x3B, 0x01, 0x8E, 0x05, 0xC1, 0x01, 0xBB, 0x01, 0x7D, 0x01, 0x2B,
|
||||
0x18, 0x1F, 0x01, 0x66, 0x01, 0xB5, 0x03, 0xB9, 0x01, 0xB5, 0x01, 0x6C, 0x05, 0x1F, 0x01, 0x5C,
|
||||
0x01, 0x97, 0x03, 0x98, 0x01, 0x96, 0x01, 0x64, 0x05, 0x1F, 0x01, 0x86, 0x01, 0xC4, 0x03, 0xC6,
|
||||
0x01, 0xC5, 0x01, 0x8D, 0x05, 0x1F, 0x01, 0x52, 0x01, 0x71, 0x03, 0x70, 0x01, 0x72, 0x01, 0x56,
|
||||
0x05, 0x1F, 0x01, 0x35, 0x01, 0x02, 0x03, 0x00, 0x01, 0x01, 0x01, 0x36, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0x18, 0x1F, 0x01, 0x27, 0x01, 0x79, 0x01, 0xB8, 0x04, 0xC1, 0x01, 0xBA, 0x01, 0x84, 0x01, 0x4E,
|
||||
0x05, 0x48, 0x06, 0x17, 0x01, 0x3B, 0x01, 0x8E, 0x05, 0xC1, 0x01, 0xA8, 0x01, 0x6D, 0x18, 0x1F,
|
||||
0x01, 0x66, 0x01, 0xB5, 0x03, 0xB9, 0x01, 0xB5, 0x01, 0x6C, 0x05, 0x1F, 0x01, 0x5C, 0x01, 0x97,
|
||||
0x03, 0x98, 0x01, 0x96, 0x01, 0x64, 0x05, 0x1F, 0x01, 0x86, 0x01, 0xC4, 0x03, 0xC6, 0x01, 0xC5,
|
||||
0x01, 0x8D, 0x05, 0x1F, 0x01, 0x52, 0x01, 0x71, 0x03, 0x70, 0x01, 0x72, 0x01, 0x56, 0x05, 0x1F,
|
||||
0x01, 0x35, 0x01, 0x02, 0x03, 0x00, 0x01, 0x01, 0x01, 0x36, 0xFF, 0x12, 0xFF, 0x12, 0x16, 0x1F,
|
||||
0x01, 0x55, 0x01, 0xA0, 0x04, 0xC1, 0x01, 0xBF, 0x01, 0x8C, 0x01, 0x59, 0x07, 0x48, 0x08, 0x17,
|
||||
0x01, 0x3B, 0x01, 0x8E, 0x05, 0xC1, 0x01, 0x93, 0x01, 0x47, 0x17, 0x1F, 0x01, 0x66, 0x01, 0xB5,
|
||||
0x03, 0xB9, 0x01, 0xB5, 0x01, 0x6C, 0x05, 0x1F, 0x01, 0x5C, 0x01, 0x97, 0x03, 0x98, 0x01, 0x96,
|
||||
0x01, 0x64, 0x05, 0x1F, 0x01, 0x86, 0x01, 0xC4, 0x03, 0xC6, 0x01, 0xC5, 0x01, 0x8D, 0x05, 0x1F,
|
||||
0x01, 0x52, 0x01, 0x71, 0x03, 0x70, 0x01, 0x72, 0x01, 0x56, 0x05, 0x1F, 0x01, 0x35, 0x01, 0x02,
|
||||
0x03, 0x00, 0x01, 0x01, 0x01, 0x36, 0xFF, 0x12, 0xFF, 0x12, 0x13, 0x1F, 0x01, 0x2D, 0x01, 0x80,
|
||||
0x01, 0xBF, 0x04, 0xC1, 0x01, 0x92, 0x01, 0x62, 0x09, 0x48, 0x0A, 0x17, 0x01, 0x3B, 0x01, 0x8E,
|
||||
0x04, 0xC1, 0x01, 0xBB, 0x01, 0x7D, 0x01, 0x2B, 0x16, 0x1F, 0x01, 0x66, 0x01, 0xB5, 0x03, 0xB9,
|
||||
0x01, 0xB5, 0x01, 0x6C, 0x05, 0x1F, 0x01, 0x5C, 0x01, 0x97, 0x03, 0x98, 0x01, 0x96, 0x01, 0x64,
|
||||
0x05, 0x1F, 0x01, 0x86, 0x01, 0xC4, 0x03, 0xC6, 0x01, 0xC5, 0x01, 0x8D, 0x05, 0x1F, 0x01, 0x52,
|
||||
0x01, 0x71, 0x03, 0x70, 0x01, 0x72, 0x01, 0x56, 0x05, 0x1F, 0x01, 0x35, 0x01, 0x02, 0x03, 0x00,
|
||||
0x01, 0x01, 0x01, 0x36, 0xFF, 0x12, 0xFF, 0x12, 0x11, 0x1F, 0x01, 0x6D, 0x01, 0xAB, 0x04, 0xC1,
|
||||
0x01, 0x99, 0x01, 0x6A, 0x0B, 0x48, 0x0C, 0x17, 0x01, 0x3B, 0x01, 0x8E, 0x04, 0xC1, 0x01, 0xA8,
|
||||
0x01, 0x6D, 0x16, 0x1F, 0x01, 0x66, 0x01, 0xB5, 0x03, 0xB9, 0x01, 0xB5, 0x01, 0x6C, 0x05, 0x1F,
|
||||
0x01, 0x5C, 0x01, 0x97, 0x03, 0x98, 0x01, 0x96, 0x01, 0x64, 0x05, 0x1F, 0x01, 0x86, 0x01, 0xC4,
|
||||
0x03, 0xC6, 0x01, 0xC5, 0x01, 0x8D, 0x05, 0x1F, 0x01, 0x52, 0x01, 0x71, 0x03, 0x70, 0x01, 0x72,
|
||||
0x01, 0x56, 0x05, 0x1F, 0x01, 0x35, 0x01, 0x02, 0x03, 0x00, 0x01, 0x01, 0x01, 0x36, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0x10, 0x1F, 0x06, 0xC1, 0x0D, 0x48, 0x0E, 0x17, 0x06, 0xC1, 0x17, 0x1F, 0x01, 0x66,
|
||||
0x01, 0xB5, 0x03, 0xB9, 0x01, 0xB5, 0x01, 0x6C, 0x05, 0x1F, 0x01, 0x5C, 0x01, 0x97, 0x03, 0x98,
|
||||
0x01, 0x96, 0x01, 0x64, 0x05, 0x1F, 0x01, 0x86, 0x01, 0xC4, 0x03, 0xC6, 0x01, 0xC5, 0x01, 0x8D,
|
||||
0x05, 0x1F, 0x01, 0x52, 0x01, 0x71, 0x03, 0x70, 0x01, 0x72, 0x01, 0x56, 0x05, 0x1F, 0x01, 0x35,
|
||||
0x01, 0x02, 0x03, 0x00, 0x01, 0x01, 0x01, 0x36, 0xFF, 0x12, 0xFF, 0x12, 0x0F, 0x1F, 0x06, 0xC1,
|
||||
0x0D, 0x48, 0x0E, 0x17, 0x06, 0xC1, 0x18, 0x1F, 0x01, 0x66, 0x01, 0xB5, 0x03, 0xB9, 0x01, 0xB5,
|
||||
0x01, 0x6C, 0x05, 0x1F, 0x01, 0x5E, 0x01, 0x97, 0x03, 0x98, 0x01, 0x97, 0x01, 0x5E, 0x05, 0x1F,
|
||||
0x01, 0x86, 0x01, 0xC4, 0x03, 0xC6, 0x01, 0xC5, 0x01, 0x8D, 0x05, 0x1F, 0x01, 0x52, 0x01, 0x71,
|
||||
0x03, 0x70, 0x01, 0x72, 0x01, 0x56, 0x05, 0x1F, 0x01, 0x35, 0x01, 0x02, 0x03, 0x00, 0x01, 0x01,
|
||||
0x01, 0x36, 0xFF, 0x12, 0xFF, 0x12, 0x0E, 0x1F, 0x06, 0xC1, 0x0D, 0x48, 0x0E, 0x17, 0x06, 0xC1,
|
||||
0x19, 0x1F, 0x01, 0x66, 0x01, 0xB5, 0x03, 0xB9, 0x01, 0xB5, 0x01, 0x6C, 0x05, 0x1F, 0x01, 0x5C,
|
||||
0x01, 0x97, 0x03, 0x98, 0x01, 0x96, 0x01, 0x64, 0x05, 0x1F, 0x01, 0x86, 0x01, 0xC4, 0x03, 0xC6,
|
||||
0x01, 0xC5, 0x01, 0x8D, 0x05, 0x1F, 0x01, 0x52, 0x01, 0x71, 0x03, 0x70, 0x01, 0x72, 0x01, 0x56,
|
||||
0x05, 0x1F, 0x01, 0x34, 0x01, 0x02, 0xFF, 0x12, 0xC1, 0x00, 0x01, 0x12, 0x01, 0x38, 0x4D, 0x1F,
|
||||
0x06, 0xC1, 0x0D, 0x48, 0x0E, 0x17, 0x06, 0xC1, 0x1A, 0x1F, 0x01, 0x66, 0x01, 0xB5, 0x03, 0xB9,
|
||||
0x01, 0xB5, 0x01, 0x6C, 0x05, 0x1F, 0x01, 0x5C, 0x01, 0x97, 0x03, 0x98, 0x01, 0x96, 0x01, 0x64,
|
||||
0x05, 0x1F, 0x01, 0x86, 0x01, 0xC4, 0x03, 0xC6, 0x01, 0xC5, 0x01, 0x8D, 0x05, 0x1F, 0x01, 0x52,
|
||||
0x01, 0x71, 0x03, 0x70, 0x01, 0x72, 0x01, 0x56, 0x05, 0x1F, 0x01, 0x34, 0x01, 0x02, 0xFF, 0x12,
|
||||
0xC1, 0x00, 0x01, 0x14, 0x4D, 0x1F, 0x06, 0xC1, 0x0D, 0x48, 0x0E, 0x17, 0x06, 0xC1, 0x1B, 0x1F,
|
||||
0x01, 0x66, 0x01, 0xB5, 0x03, 0xB9, 0x01, 0xB5, 0x01, 0x6C, 0x05, 0x1F, 0x01, 0x5C, 0x01, 0x97,
|
||||
0x03, 0x98, 0x01, 0x96, 0x01, 0x64, 0x05, 0x1F, 0x01, 0x86, 0x01, 0xC4, 0x03, 0xC6, 0x01, 0xC5,
|
||||
0x01, 0x8D, 0x05, 0x1F, 0x01, 0x52, 0x01, 0x71, 0x03, 0x70, 0x01, 0x72, 0x01, 0x56, 0x05, 0x1F,
|
||||
0x01, 0x35, 0x01, 0x02, 0xFF, 0x12, 0xC0, 0x00, 0x01, 0x14, 0x4D, 0x1F, 0x06, 0xC1, 0x0D, 0x48,
|
||||
0x0E, 0x17, 0x06, 0xC1, 0x1C, 0x1F, 0x01, 0x66, 0x01, 0xB5, 0x03, 0xB9, 0x01, 0xB5, 0x01, 0x6C,
|
||||
0x05, 0x1F, 0x01, 0x5C, 0x01, 0x97, 0x03, 0x98, 0x01, 0x96, 0x01, 0x64, 0x05, 0x1F, 0x01, 0x86,
|
||||
0x01, 0xC4, 0x03, 0xC6, 0x01, 0xC5, 0x01, 0x8D, 0x05, 0x1F, 0x01, 0x52, 0x01, 0x71, 0x03, 0x70,
|
||||
0x01, 0x72, 0x01, 0x56, 0x05, 0x1F, 0x01, 0x37, 0x01, 0x12, 0xFF, 0x12, 0xBE, 0x00, 0x01, 0x12,
|
||||
0x01, 0x38, 0x4D, 0x1F, 0x06, 0xC1, 0x0D, 0x48, 0x0E, 0x17, 0x06, 0xC1, 0x1D, 0x1F, 0x01, 0x66,
|
||||
0x01, 0xB5, 0x03, 0xB9, 0x01, 0xB5, 0x01, 0x6C, 0x05, 0x1F, 0x01, 0x5E, 0x01, 0x97, 0x03, 0x98,
|
||||
0x01, 0x97, 0x01, 0x5E, 0x05, 0x1F, 0x01, 0x86, 0x01, 0xC4, 0x03, 0xC6, 0x01, 0xC5, 0x01, 0x8D,
|
||||
0x05, 0x1F, 0x01, 0x52, 0x01, 0x71, 0x03, 0x70, 0x01, 0x72, 0x01, 0x56, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0x15, 0x1F, 0x06, 0xC1, 0x0D, 0x48, 0x0E, 0x17, 0x06, 0xC1, 0x1E, 0x1F, 0x01, 0x66, 0x01, 0xB5,
|
||||
0x03, 0xB9, 0x01, 0xB5, 0x01, 0x6C, 0x05, 0x1F, 0x01, 0x5C, 0x01, 0x97, 0x03, 0x98, 0x01, 0x96,
|
||||
0x01, 0x64, 0x05, 0x1F, 0x01, 0x86, 0x01, 0xC4, 0x03, 0xC6, 0x01, 0xC5, 0x01, 0x8D, 0x05, 0x1F,
|
||||
0x01, 0x52, 0x01, 0x71, 0x03, 0x70, 0x01, 0x72, 0x01, 0x56, 0xFF, 0x12, 0xFF, 0x12, 0x14, 0x1F,
|
||||
0x06, 0xC1, 0x0D, 0x48, 0x0E, 0x17, 0x06, 0xC1, 0x1F, 0x1F, 0x01, 0x66, 0x01, 0xB5, 0x03, 0xB9,
|
||||
0x01, 0xB5, 0x01, 0x6C, 0x05, 0x1F, 0x01, 0x5C, 0x01, 0x97, 0x03, 0x98, 0x01, 0x96, 0x01, 0x64,
|
||||
0x05, 0x1F, 0x01, 0x86, 0x01, 0xC4, 0x03, 0xC6, 0x01, 0xC5, 0x01, 0x8D, 0x05, 0x1F, 0x01, 0x52,
|
||||
0x01, 0x71, 0x03, 0x70, 0x01, 0x72, 0x01, 0x56, 0xFF, 0x12, 0xFF, 0x12, 0x13, 0x1F, 0x06, 0xC1,
|
||||
0x0D, 0x48, 0x0E, 0x17, 0x06, 0xC1, 0x20, 0x1F, 0x01, 0x66, 0x01, 0xB5, 0x03, 0xB9, 0x01, 0xB5,
|
||||
0x01, 0x6C, 0x05, 0x1F, 0x01, 0x5C, 0x01, 0x97, 0x03, 0x98, 0x01, 0x96, 0x01, 0x64, 0x05, 0x1F,
|
||||
0x01, 0x86, 0x01, 0xC4, 0x03, 0xC6, 0x01, 0xC5, 0x01, 0x8D, 0x05, 0x1F, 0x01, 0x52, 0x01, 0x71,
|
||||
0x03, 0x70, 0x01, 0x72, 0x01, 0x56, 0xFF, 0x12, 0xFF, 0x12, 0x12, 0x1F, 0x06, 0xC1, 0x0D, 0x48,
|
||||
0x0E, 0x17, 0x06, 0xC1, 0x21, 0x1F, 0x01, 0x66, 0x01, 0xB5, 0x03, 0xB9, 0x01, 0xB5, 0x01, 0x6C,
|
||||
0x05, 0x1F, 0x01, 0x5C, 0x01, 0x97, 0x03, 0x98, 0x01, 0x96, 0x01, 0x64, 0x05, 0x1F, 0x01, 0x86,
|
||||
0x01, 0xC4, 0x03, 0xC6, 0x01, 0xC5, 0x01, 0x8D, 0x05, 0x1F, 0x01, 0x54, 0x01, 0x71, 0xFF, 0x12,
|
||||
0xC5, 0x70, 0x01, 0x6E, 0x01, 0x4D, 0x4D, 0x1F, 0x06, 0xC1, 0x0D, 0x48, 0x0E, 0x17, 0x06, 0xC1,
|
||||
0x22, 0x1F, 0x01, 0x66, 0x01, 0xB5, 0x03, 0xB9, 0x01, 0xB5, 0x01, 0x6C, 0x05, 0x1F, 0x01, 0x5C,
|
||||
0x01, 0x97, 0x03, 0x98, 0x01, 0x96, 0x01, 0x64, 0x05, 0x1F, 0x01, 0x86, 0x01, 0xC4, 0x03, 0xC6,
|
||||
0x01, 0xC5, 0x01, 0x8D, 0x05, 0x1F, 0x01, 0x54, 0x01, 0x71, 0xFF, 0x12, 0xC5, 0x70, 0x01, 0x6F,
|
||||
0x4D, 0x1F, 0x06, 0xC1, 0x0B, 0x48, 0x01, 0x42, 0x01, 0x1A, 0x01, 0x09, 0x01, 0x15, 0x0C, 0x17,
|
||||
0x06, 0xC1, 0x23, 0x1F, 0x01, 0x66, 0x01, 0xB5, 0x03, 0xB9, 0x01, 0xB5, 0x01, 0x6C, 0x05, 0x1F,
|
||||
0x01, 0x5C, 0x01, 0x97, 0x03, 0x98, 0x01, 0x96, 0x01, 0x64, 0x05, 0x1F, 0x01, 0x86, 0x01, 0xC4,
|
||||
0x03, 0xC6, 0x01, 0xC5, 0x01, 0x8D, 0x05, 0x1F, 0x01, 0x52, 0x01, 0x71, 0xFF, 0x12, 0xC4, 0x70,
|
||||
0x01, 0x6F, 0x4D, 0x1F, 0x06, 0xC1, 0x0A, 0x48, 0x01, 0x2E, 0x01, 0x0F, 0x01, 0x08, 0x01, 0x03,
|
||||
0x01, 0x04, 0x01, 0x0E, 0x0B, 0x17, 0x06, 0xC1, 0x24, 0x1F, 0x01, 0x68, 0x01, 0xB5, 0x03, 0xB9,
|
||||
0x01, 0xB5, 0x01, 0x68, 0x05, 0x1F, 0x01, 0x5C, 0x01, 0x97, 0x03, 0x98, 0x01, 0x96, 0x01, 0x64,
|
||||
0x05, 0x1F, 0x01, 0x86, 0x01, 0xC4, 0x03, 0xC6, 0x01, 0xC5, 0x01, 0x8D, 0x05, 0x1F, 0x01, 0x50,
|
||||
0x01, 0x6E, 0xFF, 0x12, 0xC2, 0x70, 0x01, 0x6E, 0x01, 0x4D, 0x4D, 0x1F, 0x06, 0xC1, 0x08, 0x48,
|
||||
0x01, 0x44, 0x01, 0x1E, 0x03, 0x08, 0x03, 0x03, 0x01, 0x08, 0x01, 0x13, 0x09, 0x17, 0x06, 0xC1,
|
||||
0x25, 0x1F, 0x01, 0x66, 0x01, 0xB5, 0x03, 0xB9, 0x01, 0xB5, 0x01, 0x6C, 0x05, 0x1F, 0x01, 0x5C,
|
||||
0x01, 0x97, 0x03, 0x98, 0x01, 0x96, 0x01, 0x64, 0x05, 0x1F, 0x01, 0x86, 0x01, 0xC4, 0x03, 0xC6,
|
||||
0x01, 0xC5, 0x01, 0x8D, 0xFF, 0x12, 0xFF, 0x12, 0x19, 0x1F, 0x06, 0xC1, 0x07, 0x48, 0x01, 0x32,
|
||||
0x01, 0x11, 0x04, 0x08, 0x05, 0x03, 0x01, 0x0D, 0x01, 0x16, 0x07, 0x17, 0x06, 0xC1, 0x26, 0x1F,
|
||||
0x01, 0x66, 0x01, 0xB5, 0x03, 0xB9, 0x01, 0xB5, 0x01, 0x6C, 0x05, 0x1F, 0x01, 0x5C, 0x01, 0x97,
|
||||
0x03, 0x98, 0x01, 0x96, 0x01, 0x64, 0x05, 0x1F, 0x01, 0x86, 0x01, 0xC4, 0x03, 0xC6, 0x01, 0xC5,
|
||||
0x01, 0x8D, 0xFF, 0x12, 0xFF, 0x12, 0x18, 0x1F, 0x06, 0xC1, 0x05, 0x48, 0x01, 0x46, 0x01, 0x21,
|
||||
0x01, 0x09, 0x05, 0x08, 0x06, 0x03, 0x01, 0x06, 0x01, 0x11, 0x06, 0x17, 0x06, 0xC1, 0x27, 0x1F,
|
||||
0x01, 0x66, 0x01, 0xB5, 0x03, 0xB9, 0x01, 0xB5, 0x01, 0x6C, 0x05, 0x1F, 0x01, 0x5C, 0x01, 0x97,
|
||||
0x03, 0x98, 0x01, 0x96, 0x01, 0x64, 0x05, 0x1F, 0x01, 0x86, 0x01, 0xC4, 0x03, 0xC6, 0x01, 0xC5,
|
||||
0x01, 0x8D, 0xFF, 0x12, 0xFF, 0x12, 0x17, 0x1F, 0x06, 0xC1, 0x01, 0x99, 0x01, 0x6A, 0x02, 0x48,
|
||||
0x01, 0x3C, 0x01, 0x16, 0x07, 0x08, 0x08, 0x03, 0x01, 0x0C, 0x01, 0x16, 0x02, 0x17, 0x01, 0x3B,
|
||||
0x01, 0x8E, 0x06, 0xC1, 0x28, 0x1F, 0x01, 0x66, 0x01, 0xB5, 0x03, 0xB9, 0x01, 0xB5, 0x01, 0x6C,
|
||||
0x05, 0x1F, 0x01, 0x5C, 0x01, 0x97, 0x03, 0x98, 0x01, 0x96, 0x01, 0x64, 0x05, 0x1F, 0x01, 0x86,
|
||||
0x01, 0xC4, 0x03, 0xC6, 0x01, 0xC5, 0x01, 0x8D, 0xFF, 0x12, 0xFF, 0x12, 0x16, 0x1F, 0x08, 0xC1,
|
||||
0x01, 0x92, 0x01, 0x30, 0x01, 0x0A, 0x08, 0x08, 0x09, 0x03, 0x01, 0x05, 0x01, 0x26, 0x01, 0x8E,
|
||||
0x08, 0xC1, 0x29, 0x1F, 0x01, 0x68, 0x01, 0xB5, 0x03, 0xB9, 0x01, 0xB5, 0x01, 0x68, 0x05, 0x1F,
|
||||
0x01, 0x5C, 0x01, 0x97, 0x03, 0x98, 0x01, 0x96, 0x01, 0x64, 0x05, 0x1F, 0x01, 0x8A, 0x01, 0xC4,
|
||||
0xFF, 0x12, 0xC9, 0xC6, 0x01, 0xC3, 0x01, 0x81, 0x4D, 0x1F, 0x07, 0xC1, 0x01, 0xA9, 0x01, 0x44,
|
||||
0x01, 0x13, 0x01, 0x0F, 0x01, 0x09, 0x07, 0x08, 0x08, 0x03, 0x01, 0x07, 0x01, 0x0F, 0x01, 0x15,
|
||||
0x01, 0x57, 0x01, 0xAE, 0x07, 0xC1, 0x2A, 0x1F, 0x01, 0x66, 0x01, 0xB5, 0x03, 0xB9, 0x01, 0xB5,
|
||||
0x01, 0x6C, 0x05, 0x1F, 0x01, 0x5C, 0x01, 0x97, 0x03, 0x98, 0x01, 0x96, 0x01, 0x64, 0x05, 0x1F,
|
||||
0x01, 0x8A, 0x01, 0xC4, 0xFF, 0x12, 0xC9, 0xC6, 0x01, 0xC2, 0x4D, 0x1F, 0x06, 0xC1, 0x01, 0x82,
|
||||
0x01, 0x1B, 0x04, 0x13, 0x01, 0x0E, 0x06, 0x08, 0x06, 0x03, 0x01, 0x07, 0x01, 0x0F, 0x04, 0x13,
|
||||
0x01, 0x1D, 0x01, 0x82, 0x06, 0xC1, 0x2B, 0x1F, 0x01, 0x66, 0x01, 0xB5, 0x03, 0xB9, 0x01, 0xB5,
|
||||
0x01, 0x6C, 0x05, 0x1F, 0x01, 0x5C, 0x01, 0x97, 0x03, 0x98, 0x01, 0x96, 0x01, 0x64, 0x05, 0x1F,
|
||||
0x01, 0x86, 0x01, 0xC4, 0xFF, 0x12, 0xC8, 0xC6, 0x01, 0xC2, 0x4D, 0x1F, 0x06, 0xC1, 0x01, 0x89,
|
||||
0x01, 0x20, 0x05, 0x13, 0x01, 0x11, 0x01, 0x0D, 0x04, 0x08, 0x04, 0x03, 0x01, 0x07, 0x01, 0x0F,
|
||||
0x06, 0x13, 0x01, 0x24, 0x01, 0x89, 0x06, 0xC1, 0x2C, 0x1F, 0x01, 0x66, 0x01, 0xB5, 0x03, 0xB9,
|
||||
0x01, 0xB5, 0x01, 0x6C, 0x05, 0x1F, 0x01, 0x5C, 0x01, 0x97, 0x03, 0x98, 0x01, 0x96, 0x01, 0x64,
|
||||
0x05, 0x1F, 0x01, 0x85, 0x01, 0xC3, 0xFF, 0x12, 0xC6, 0xC6, 0x01, 0xC3, 0x01, 0x81, 0x4D, 0x1F,
|
||||
0x07, 0xC1, 0x01, 0xB6, 0x01, 0x74, 0x01, 0x18, 0x05, 0x13, 0x01, 0x11, 0x01, 0x0D, 0x02, 0x08,
|
||||
0x02, 0x03, 0x01, 0x07, 0x01, 0x0F, 0x06, 0x13, 0x01, 0x1A, 0x01, 0x78, 0x01, 0xBD, 0x07, 0xC1,
|
||||
0x2D, 0x1F, 0x01, 0x66, 0x01, 0xB5, 0x03, 0xB9, 0x01, 0xB5, 0x01, 0x6C, 0x05, 0x1F, 0x01, 0x5C,
|
||||
0x01, 0x97, 0x03, 0x98, 0x01, 0x96, 0x01, 0x64, 0xFF, 0x12, 0xFF, 0x12, 0x1D, 0x1F, 0x09, 0xC1,
|
||||
0x01, 0x9F, 0x01, 0x3E, 0x06, 0x13, 0x01, 0x10, 0x01, 0x0B, 0x01, 0x07, 0x01, 0x0F, 0x06, 0x13,
|
||||
0x01, 0x16, 0x01, 0x60, 0x01, 0xAE, 0x09, 0xC1, 0x2E, 0x1F, 0x01, 0x66, 0x01, 0xB5, 0x03, 0xB9,
|
||||
0x01, 0xB5, 0x01, 0x6C, 0x05, 0x1F, 0x01, 0x5C, 0x01, 0x97, 0x03, 0x98, 0x01, 0x96, 0x01, 0x64,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0x1C, 0x1F, 0x01, 0x67, 0x01, 0xA2, 0x09, 0xC1, 0x01, 0x7F, 0x01, 0x1C,
|
||||
0x0D, 0x13, 0x01, 0x3F, 0x01, 0x9B, 0x09, 0xC1, 0x01, 0xA2, 0x01, 0x6B, 0x2F, 0x1F, 0x01, 0x66,
|
||||
0x01, 0xB5, 0x03, 0xB9, 0x01, 0xB5, 0x01, 0x6C, 0x05, 0x1F, 0x01, 0x5C, 0x01, 0x97, 0x03, 0x98,
|
||||
0x01, 0x96, 0x01, 0x64, 0xFF, 0x12, 0xFF, 0x12, 0x1C, 0x1F, 0x01, 0x28, 0x01, 0x79, 0x01, 0xB4,
|
||||
0x08, 0xC1, 0x01, 0xAF, 0x01, 0x69, 0x01, 0x15, 0x09, 0x13, 0x01, 0x24, 0x01, 0x89, 0x09, 0xC1,
|
||||
0x01, 0xAD, 0x01, 0x77, 0x01, 0x25, 0x31, 0x1F, 0x01, 0x66, 0x01, 0xB5, 0x03, 0xB9, 0x01, 0xB5,
|
||||
0x01, 0x6C, 0x05, 0x1F, 0x01, 0x5C, 0x01, 0x97, 0x03, 0x98, 0x01, 0x96, 0x01, 0x64, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0x1D, 0x1F, 0x01, 0x3A, 0x01, 0x83, 0x01, 0xBF, 0x08, 0xC1, 0x01, 0x92, 0x01, 0x29,
|
||||
0x06, 0x13, 0x01, 0x1A, 0x01, 0x78, 0x01, 0xBD, 0x08, 0xC1, 0x01, 0xB8, 0x01, 0x7D, 0x01, 0x2C,
|
||||
0x34, 0x1F, 0x01, 0x66, 0x01, 0xB5, 0x03, 0xB9, 0x01, 0xB5, 0x01, 0x6C, 0x05, 0x1F, 0x01, 0x5E,
|
||||
0x01, 0x97, 0xFF, 0x12, 0xCD, 0x98, 0x01, 0x91, 0x01, 0x58, 0x52, 0x1F, 0x01, 0x55, 0x01, 0x9A,
|
||||
0x08, 0xC1, 0x01, 0xBD, 0x01, 0x7A, 0x01, 0x19, 0x02, 0x13, 0x01, 0x16, 0x01, 0x60, 0x01, 0xAE,
|
||||
0x08, 0xC1, 0x01, 0xBE, 0x01, 0x88, 0x01, 0x3D, 0x37, 0x1F, 0x01, 0x66, 0x01, 0xB5, 0x03, 0xB9,
|
||||
0x01, 0xB5, 0x01, 0x6C, 0x05, 0x1F, 0x01, 0x5E, 0x01, 0x97, 0xFF, 0x12, 0xCD, 0x98, 0x01, 0x90,
|
||||
0x54, 0x1F, 0x01, 0x6D, 0x01, 0xAA, 0x08, 0xC1, 0x01, 0xA1, 0x01, 0x48, 0x01, 0x43, 0x01, 0x9D,
|
||||
0x09, 0xC1, 0x01, 0x93, 0x01, 0x4A, 0x3A, 0x1F, 0x01, 0x66, 0x01, 0xB5, 0x03, 0xB9, 0x01, 0xB5,
|
||||
0x01, 0x6C, 0x05, 0x1F, 0x01, 0x5C, 0x01, 0x97, 0xFF, 0x12, 0xCC, 0x98, 0x01, 0x90, 0x55, 0x1F,
|
||||
0x01, 0x2C, 0x01, 0x7C, 0x01, 0xB8, 0x11, 0xC1, 0x01, 0x9E, 0x01, 0x61, 0x3D, 0x1F, 0x01, 0x66,
|
||||
0x01, 0xB5, 0x03, 0xB9, 0x01, 0xB5, 0x01, 0x6C, 0x05, 0x1F, 0x01, 0x5B, 0x01, 0x91, 0xFF, 0x12,
|
||||
0xCA, 0x98, 0x01, 0x91, 0x01, 0x58, 0x57, 0x1F, 0x01, 0x41, 0x01, 0x8B, 0x0E, 0xC1, 0x01, 0xA7,
|
||||
0x01, 0x73, 0x01, 0x22, 0x3F, 0x1F, 0x01, 0x66, 0x01, 0xB5, 0x03, 0xB9, 0x01, 0xB5, 0x01, 0x6C,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0x2D, 0x1F, 0x01, 0x5A, 0x01, 0x9C, 0x0A, 0xC1, 0x01, 0xB3, 0x01, 0x7C,
|
||||
0x01, 0x2A, 0x42, 0x1F, 0x01, 0x66, 0x01, 0xB5, 0x03, 0xB9, 0x01, 0xB5, 0x01, 0x6C, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0x2D, 0x1F, 0x01, 0x23, 0x01, 0x75, 0x01, 0xB0, 0x06, 0xC1, 0x01, 0xBB, 0x01, 0x80,
|
||||
0x01, 0x31, 0x45, 0x1F, 0x01, 0x66, 0x01, 0xB5, 0x03, 0xB9, 0x01, 0xB5, 0x01, 0x6C, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0x2E, 0x1F, 0x01, 0x2F, 0x01, 0x7D, 0x01, 0xBC, 0x02, 0xC1, 0x01, 0xC0, 0x01, 0x8F,
|
||||
0x01, 0x45, 0x48, 0x1F, 0x01, 0x66, 0x01, 0xB5, 0x03, 0xB9, 0x01, 0xB5, 0x01, 0x6C, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0x2F, 0x1F, 0x01, 0x4B, 0x01, 0x94, 0x01, 0x95, 0x01, 0x51, 0x4B, 0x1F, 0x01, 0x68,
|
||||
0x01, 0xB5, 0xFF, 0x12, 0xD1, 0xB9, 0x01, 0xA6, 0x01, 0x5F, 0xAE, 0x1F, 0x01, 0x68, 0x01, 0xB5,
|
||||
0xFF, 0x12, 0xD1, 0xB9, 0x01, 0xA4, 0xAF, 0x1F, 0x01, 0x66, 0x01, 0xB5, 0xFF, 0x12, 0xD0, 0xB9,
|
||||
0x01, 0xA4, 0xB0, 0x1F, 0x01, 0x65, 0x01, 0xA6, 0xFF, 0x12, 0xCE, 0xB9, 0x01, 0xA6, 0x01, 0x5F,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0x00, 0x00
|
||||
}
|
|
@ -1,827 +1,9 @@
|
|||
unsigned char splashscreen_lut[] = {
|
||||
0x00, 0x00, 0xFF, 0x00,
|
||||
0x08, 0x08, 0xFE, 0x00,
|
||||
0x0B, 0x0B, 0xFD, 0x00,
|
||||
0x5F, 0x5F, 0x00, 0x00,
|
||||
0x60, 0x60, 0x00, 0x00,
|
||||
0x61, 0x61, 0x00, 0x00,
|
||||
0x62, 0x62, 0x00, 0x00,
|
||||
0x63, 0x63, 0x00, 0x00,
|
||||
0x64, 0x64, 0x00, 0x00,
|
||||
0x65, 0x65, 0x00, 0x00,
|
||||
0x66, 0x66, 0x00, 0x00,
|
||||
0x67, 0x67, 0x00, 0x00,
|
||||
0x68, 0x68, 0x00, 0x00,
|
||||
0x69, 0x69, 0x00, 0x00,
|
||||
0x6A, 0x6A, 0x00, 0x00,
|
||||
0x6B, 0x6B, 0x00, 0x00,
|
||||
0x6D, 0x6D, 0x00, 0x00,
|
||||
0x6E, 0x6E, 0x00, 0x00,
|
||||
0x29, 0x29, 0xF3, 0x00,
|
||||
0x6F, 0x6F, 0x00, 0x00,
|
||||
0x2A, 0x2A, 0xF3, 0x00,
|
||||
0x70, 0x70, 0x00, 0x00,
|
||||
0x71, 0x71, 0x00, 0x00,
|
||||
0x72, 0x72, 0x00, 0x00,
|
||||
0x73, 0x73, 0x00, 0x00,
|
||||
0x77, 0x77, 0x00, 0x00,
|
||||
0x78, 0x78, 0x00, 0x00,
|
||||
0x79, 0x79, 0x00, 0x00,
|
||||
0x7B, 0x7B, 0x00, 0x00,
|
||||
0x7C, 0x7C, 0x00, 0x00,
|
||||
0x7E, 0x7E, 0x00, 0x00,
|
||||
0x80, 0x80, 0x00, 0x00,
|
||||
0x80, 0x80, 0x01, 0x00,
|
||||
0x81, 0x81, 0x02, 0x00,
|
||||
0x80, 0x80, 0x06, 0x00,
|
||||
0x81, 0x81, 0x0D, 0x00,
|
||||
0x83, 0x83, 0x07, 0x00,
|
||||
0x81, 0x81, 0x12, 0x00,
|
||||
0x84, 0x84, 0x09, 0x00,
|
||||
0x82, 0x82, 0x16, 0x00,
|
||||
0x82, 0x82, 0x19, 0x00,
|
||||
0x86, 0x86, 0x0F, 0x00,
|
||||
0x83, 0x83, 0x1F, 0x00,
|
||||
0x83, 0x83, 0x22, 0x00,
|
||||
0x84, 0x84, 0x24, 0x00,
|
||||
0x85, 0x85, 0x29, 0x00,
|
||||
0x8A, 0x8A, 0x18, 0x00,
|
||||
0x85, 0x85, 0x2B, 0x00,
|
||||
0x8B, 0x8B, 0x1D, 0x00,
|
||||
0x86, 0x86, 0x30, 0x00,
|
||||
0x8C, 0x8C, 0x20, 0x00,
|
||||
0x87, 0x87, 0x33, 0x00,
|
||||
0x69, 0x69, 0x9E, 0x00,
|
||||
0x6A, 0x6A, 0x9B, 0x00,
|
||||
0x68, 0x68, 0xA2, 0x00,
|
||||
0x6B, 0x6B, 0x99, 0x00,
|
||||
0x6D, 0x6D, 0x94, 0x00,
|
||||
0x6B, 0x6B, 0x9B, 0x00,
|
||||
0x88, 0x88, 0x36, 0x00,
|
||||
0x8E, 0x8E, 0x24, 0x00,
|
||||
0x8F, 0x8F, 0x27, 0x00,
|
||||
0x89, 0x89, 0x3C, 0x00,
|
||||
0x90, 0x90, 0x29, 0x00,
|
||||
0x90, 0x90, 0x2A, 0x00,
|
||||
0x8A, 0x8A, 0x3F, 0x00,
|
||||
0x8B, 0x8B, 0x41, 0x00,
|
||||
0x92, 0x92, 0x2F, 0x00,
|
||||
0x93, 0x93, 0x30, 0x00,
|
||||
0x93, 0x93, 0x32, 0x00,
|
||||
0x8D, 0x8D, 0x47, 0x00,
|
||||
0x94, 0x94, 0x33, 0x00,
|
||||
0x8E, 0x8E, 0x49, 0x00,
|
||||
0x94, 0x94, 0x35, 0x00,
|
||||
0x95, 0x95, 0x36, 0x00,
|
||||
0x8F, 0x8F, 0x4C, 0x00,
|
||||
0x8F, 0x8F, 0x4E, 0x00,
|
||||
0x97, 0x97, 0x3B, 0x00,
|
||||
0x6D, 0x80, 0x94, 0x00,
|
||||
0x98, 0x98, 0x3F, 0x00,
|
||||
0x92, 0x92, 0x54, 0x00,
|
||||
0x6B, 0x80, 0x99, 0x00,
|
||||
0x92, 0x92, 0x56, 0x00,
|
||||
0x6A, 0x80, 0x9B, 0x00,
|
||||
0x6B, 0x80, 0x9B, 0x00,
|
||||
0x69, 0x80, 0x9E, 0x00,
|
||||
0x93, 0x93, 0x58, 0x00,
|
||||
0x68, 0x80, 0xA2, 0x00,
|
||||
0x9A, 0x9A, 0x44, 0x00,
|
||||
0x6D, 0xB3, 0x00, 0x00,
|
||||
0x9B, 0x9B, 0x45, 0x00,
|
||||
0x95, 0x95, 0x5C, 0x00,
|
||||
0x6B, 0xB6, 0x00, 0x00,
|
||||
0x6A, 0xB7, 0x00, 0x00,
|
||||
0x6B, 0xB7, 0x00, 0x00,
|
||||
0x69, 0xB9, 0x00, 0x00,
|
||||
0xB3, 0xB3, 0x00, 0x00,
|
||||
0x9E, 0x9E, 0x4D, 0x00,
|
||||
0x98, 0x98, 0x62, 0x00,
|
||||
0x9E, 0x9E, 0x4E, 0x00,
|
||||
0x98, 0x98, 0x63, 0x00,
|
||||
0x68, 0xBB, 0x00, 0x00,
|
||||
0xB6, 0xB6, 0x00, 0x00,
|
||||
0xB7, 0xB7, 0x00, 0x00,
|
||||
0x9A, 0x9A, 0x66, 0x00,
|
||||
0xB9, 0xB9, 0x00, 0x00,
|
||||
0xA1, 0xA1, 0x54, 0x00,
|
||||
0xA2, 0xA2, 0x57, 0x00,
|
||||
0x9C, 0x9C, 0x6C, 0x00,
|
||||
0xBB, 0xBB, 0x00, 0x00,
|
||||
0x9D, 0x9D, 0x6D, 0x00,
|
||||
0x29, 0x80, 0xF3, 0x00,
|
||||
0x2A, 0x80, 0xF3, 0x00,
|
||||
0x00, 0x80, 0xFF, 0x00,
|
||||
0x0B, 0x80, 0xFD, 0x00,
|
||||
0x08, 0x80, 0xFE, 0x00,
|
||||
0x9F, 0x9F, 0x72, 0x00,
|
||||
0xA7, 0xA7, 0x63, 0x00,
|
||||
0xA2, 0xA2, 0x77, 0x00,
|
||||
0xA8, 0xA8, 0x66, 0x00,
|
||||
0xA4, 0xA4, 0x7C, 0x00,
|
||||
0xAA, 0xAA, 0x6B, 0x00,
|
||||
0xA7, 0xA7, 0x81, 0x00,
|
||||
0xAC, 0xAC, 0x71, 0x00,
|
||||
0xAE, 0xAE, 0x74, 0x00,
|
||||
0xAA, 0xAA, 0x85, 0x00,
|
||||
0xAC, 0xAC, 0x8A, 0x00,
|
||||
0xB2, 0xB2, 0x7D, 0x00,
|
||||
0xB2, 0xB2, 0x7E, 0x00,
|
||||
0xAF, 0xAF, 0x8D, 0x00,
|
||||
0x6D, 0xB3, 0x94, 0x00,
|
||||
0xB5, 0xB5, 0x84, 0x00,
|
||||
0xB1, 0xB1, 0x92, 0x00,
|
||||
0xB5, 0xB5, 0x86, 0x00,
|
||||
0x6B, 0xB6, 0x99, 0x00,
|
||||
0x6A, 0xB7, 0x9B, 0x00,
|
||||
0x6B, 0xB7, 0x9B, 0x00,
|
||||
0xB3, 0xB3, 0x95, 0x00,
|
||||
0xB7, 0xB7, 0x8A, 0x00,
|
||||
0x69, 0xB9, 0x9E, 0x00,
|
||||
0xB6, 0xB6, 0x99, 0x00,
|
||||
0xB9, 0xB9, 0x8F, 0x00,
|
||||
0x68, 0xBB, 0xA2, 0x00,
|
||||
0xBB, 0xBB, 0x92, 0x00,
|
||||
0xB8, 0xB8, 0x9D, 0x00,
|
||||
0x2A, 0xF5, 0x00, 0x00,
|
||||
0x29, 0xF6, 0x00, 0x00,
|
||||
0xBC, 0xBC, 0x96, 0x00,
|
||||
0xBA, 0xBA, 0xA0, 0x00,
|
||||
0xBB, 0xBB, 0xA1, 0x00,
|
||||
0xBC, 0xBC, 0xA3, 0x00,
|
||||
0x08, 0xFE, 0x00, 0x00,
|
||||
0x0B, 0xFE, 0x00, 0x00,
|
||||
0x00, 0xFF, 0x00, 0x00,
|
||||
0xC0, 0xC0, 0x9E, 0x00,
|
||||
0xBE, 0xBE, 0xA6, 0x00,
|
||||
0xC1, 0xC1, 0xA1, 0x00,
|
||||
0xBF, 0xBF, 0xA8, 0x00,
|
||||
0xC2, 0xC2, 0xA2, 0x00,
|
||||
0xC0, 0xC0, 0xA9, 0x00,
|
||||
0xC2, 0xC2, 0xA4, 0x00,
|
||||
0xC1, 0xC1, 0xAA, 0x00,
|
||||
0xC4, 0xC4, 0xA8, 0x00,
|
||||
0xC3, 0xC3, 0xAD, 0x00,
|
||||
0xC3, 0xC3, 0xAE, 0x00,
|
||||
0xF5, 0xF5, 0x00, 0x00,
|
||||
0xC5, 0xC5, 0xAA, 0x00,
|
||||
0xF6, 0xF6, 0x00, 0x00,
|
||||
0xC4, 0xC4, 0xAF, 0x00,
|
||||
0xC5, 0xC5, 0xB0, 0x00,
|
||||
0xC6, 0xC6, 0xAD, 0x00,
|
||||
0xC5, 0xC5, 0xB1, 0x00,
|
||||
0xC6, 0xC6, 0xB2, 0x00,
|
||||
0xC7, 0xC7, 0xAF, 0x00,
|
||||
0xC7, 0xC7, 0xB3, 0x00,
|
||||
0xC8, 0xC8, 0xB0, 0x00,
|
||||
0xC8, 0xC8, 0xB2, 0x00,
|
||||
0xC8, 0xC8, 0xB4, 0x00,
|
||||
0xC8, 0xC8, 0xB5, 0x00,
|
||||
0xC9, 0xC9, 0xB3, 0x00,
|
||||
0xC9, 0xC9, 0xB6, 0x00,
|
||||
0xC9, 0xC9, 0xB7, 0x00,
|
||||
0xFE, 0xFE, 0x00, 0x00,
|
||||
0xCA, 0xCA, 0xB6, 0x00,
|
||||
0xCA, 0xCA, 0xB7, 0x00,
|
||||
0xCA, 0xCA, 0xB8, 0x00,
|
||||
0xFF, 0xFF, 0x00, 0x00,
|
||||
0xCB, 0xCB, 0xB8, 0x00,
|
||||
0xCB, 0xCB, 0xB9, 0x00,
|
||||
0xCB, 0xCB, 0xBA, 0x00,
|
||||
0xCC, 0xCC, 0xB9, 0x00,
|
||||
0xCC, 0xCC, 0xBA, 0x00,
|
||||
0xCC, 0xCC, 0xBB, 0x00,
|
||||
0xCD, 0xCD, 0xBB, 0x00,
|
||||
0xCD, 0xCD, 0xBC, 0x00,
|
||||
0x2A, 0xF5, 0xF3, 0x00,
|
||||
0x29, 0xF6, 0xF3, 0x00,
|
||||
0x0B, 0xFE, 0xFD, 0x00,
|
||||
0x08, 0xFE, 0xFE, 0x00,
|
||||
0x00, 0xFF, 0xFF, 0x00,
|
||||
0xFF, 0xFF, 0xFF, 0x00,
|
||||
0xC8, 0xC8, 0xC8, 0x00,
|
||||
0xC9, 0xC9, 0xC9, 0x00,
|
||||
0xCA, 0xCA, 0xCA, 0x00,
|
||||
0xCB, 0xCB, 0xCB, 0x00,
|
||||
0xCC, 0xCC, 0xCC, 0x00,
|
||||
0xCD, 0xCD, 0xCD, 0x00,
|
||||
0xCE, 0xCE, 0xCE, 0x00,
|
||||
0xCF, 0xCF, 0xCF, 0x00,
|
||||
0xD0, 0xD0, 0xD0, 0x00,
|
||||
0xD1, 0xD1, 0xD1, 0x00,
|
||||
0xD2, 0xD2, 0xD2, 0x00,
|
||||
0xD3, 0xD3, 0xD3, 0x00,
|
||||
0xD4, 0xD4, 0xD4, 0x00,
|
||||
0xD5, 0xD5, 0xD5, 0x00,
|
||||
0xD6, 0xD6, 0xD6, 0x00,
|
||||
0xD7, 0xD7, 0xD7, 0x00,
|
||||
0xD8, 0xD8, 0xD8, 0x00,
|
||||
0xD9, 0xD9, 0xD9, 0x00,
|
||||
0xDA, 0xDA, 0xDA, 0x00,
|
||||
0xDB, 0xDB, 0xDB, 0x00,
|
||||
0xDC, 0xDC, 0xDC, 0x00,
|
||||
0xDD, 0xDD, 0xDD, 0x00,
|
||||
0xDE, 0xDE, 0xDE, 0x00,
|
||||
0xDF, 0xDF, 0xDF, 0x00,
|
||||
0xE0, 0xE0, 0xE0, 0x00,
|
||||
0xE1, 0xE1, 0xE1, 0x00,
|
||||
0xE2, 0xE2, 0xE2, 0x00,
|
||||
0xE3, 0xE3, 0xE3, 0x00,
|
||||
0xE4, 0xE4, 0xE4, 0x00,
|
||||
0xE5, 0xE5, 0xE5, 0x00,
|
||||
0xE6, 0xE6, 0xE6, 0x00,
|
||||
0xE7, 0xE7, 0xE7, 0x00,
|
||||
0xE8, 0xE8, 0xE8, 0x00,
|
||||
0xE9, 0xE9, 0xE9, 0x00,
|
||||
0xEA, 0xEA, 0xEA, 0x00,
|
||||
0xEB, 0xEB, 0xEB, 0x00,
|
||||
0xEC, 0xEC, 0xEC, 0x00,
|
||||
0xED, 0xED, 0xED, 0x00,
|
||||
0xEE, 0xEE, 0xEE, 0x00,
|
||||
0xEF, 0xEF, 0xEF, 0x00,
|
||||
0xF0, 0xF0, 0xF0, 0x00,
|
||||
0xF1, 0xF1, 0xF1, 0x00,
|
||||
0xF2, 0xF2, 0xF2, 0x00,
|
||||
0xF3, 0xF3, 0xF3, 0x00,
|
||||
0xF4, 0xF4, 0xF4, 0x00,
|
||||
0xF5, 0xF5, 0xF5, 0x00,
|
||||
0xF6, 0xF6, 0xF6, 0x00,
|
||||
0xF7, 0xF7, 0xF7, 0x00,
|
||||
0xF8, 0xF8, 0xF8, 0x00,
|
||||
0xF9, 0xF9, 0xF9, 0x00,
|
||||
0xFA, 0xFA, 0xFA, 0x00,
|
||||
0xFB, 0xFB, 0xFB, 0x00,
|
||||
0xFC, 0xFC, 0xFC, 0x00,
|
||||
0xFD, 0xFD, 0xFD, 0x00,
|
||||
0xFE, 0xFE, 0xFE, 0x00,
|
||||
0xFF, 0xFF, 0xFF, 0x00,
|
||||
}
|
||||
#ifndef _IMAGE_H
|
||||
#define _IMAGE_H_
|
||||
|
||||
unsigned char splashscreen_pix[] = {
|
||||
0x00, 0x-1, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0x62, 0x1F, 0x01, 0xC7, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0x81, 0x1F, 0x03, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x54, 0x1F, 0x01, 0xC7, 0x2B, 0x1F,
|
||||
0x04, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x54, 0x1F, 0x02, 0xC7, 0x28, 0x1F, 0x06, 0xC7, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0x54, 0x1F, 0x04, 0xC7, 0x24, 0x1F, 0x08, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x54, 0x1F,
|
||||
0x06, 0xC7, 0x20, 0x1F, 0x0A, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x54, 0x1F, 0x07, 0xC7, 0x1E, 0x1F,
|
||||
0x0B, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x55, 0x1F, 0x08, 0xC7, 0x1A, 0x1F, 0x0D, 0xC7, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0x57, 0x1F, 0x07, 0xC7, 0x17, 0x1F, 0x0F, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x59, 0x1F,
|
||||
0x07, 0xC7, 0x13, 0x1F, 0x11, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x5B, 0x1F, 0x07, 0xC7, 0x10, 0x1F,
|
||||
0x12, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x5C, 0x1F, 0x07, 0xC7, 0x0D, 0x1F, 0x13, 0xC7, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0x5F, 0x1F, 0x07, 0xC7, 0x09, 0x1F, 0x13, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x63, 0x1F,
|
||||
0x07, 0xC7, 0x05, 0x1F, 0x14, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x65, 0x1F, 0x07, 0xC7, 0x02, 0x1F,
|
||||
0x14, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x69, 0x1F, 0x19, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x6D, 0x1F,
|
||||
0x15, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x6F, 0x1F, 0x13, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x6F, 0x1F,
|
||||
0x14, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x6F, 0x1F, 0x13, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x6F, 0x1F,
|
||||
0x13, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x6F, 0x1F, 0x13, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x6F, 0x1F,
|
||||
0x17, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x6B, 0x1F, 0x1A, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x69, 0x1F,
|
||||
0x13, 0xC7, 0x03, 0x1F, 0x07, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x65, 0x1F, 0x13, 0xC7, 0x07, 0x1F,
|
||||
0x07, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x61, 0x1F, 0x13, 0xC7, 0x0A, 0x1F, 0x07, 0xC7, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0x5F, 0x1F, 0x13, 0xC7, 0x0D, 0x1F, 0x07, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x5D, 0x1F,
|
||||
0x11, 0xC7, 0x10, 0x1F, 0x08, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x5B, 0x1F, 0x0F, 0xC7, 0x14, 0x1F,
|
||||
0x07, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x5A, 0x1F, 0x0D, 0xC7, 0x18, 0x1F, 0x07, 0xC7, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0x58, 0x1F, 0x0C, 0xC7, 0x1A, 0x1F, 0x08, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x56, 0x1F,
|
||||
0x0A, 0xC7, 0x1E, 0x1F, 0x07, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x55, 0x1F, 0x08, 0xC7, 0x22, 0x1F,
|
||||
0x06, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x54, 0x1F, 0x06, 0xC7, 0x25, 0x1F, 0x05, 0xC7, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0x54, 0x1F, 0x04, 0xC7, 0x29, 0x1F, 0x03, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x54, 0x1F,
|
||||
0x03, 0xC7, 0x2B, 0x1F, 0x02, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x54, 0x1F, 0x01, 0xC7, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0x13, 0x1F, 0x30, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x54, 0x1F, 0x30, 0xC7, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0x54, 0x1F, 0x30, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x54, 0x1F, 0x30, 0xC7, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0x54, 0x1F, 0x30, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x54, 0x1F, 0x30, 0xC7, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0x54, 0x1F, 0x30, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x54, 0x1F, 0x30, 0xC7, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0x54, 0x1F, 0x30, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x54, 0x1F, 0x30, 0xC7, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0x72, 0x1F, 0x30, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x54, 0x1F, 0x30, 0xC7, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0x54, 0x1F, 0x30, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x54, 0x1F, 0x30, 0xC7, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0x78, 0x1F, 0x0C, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x76, 0x1F, 0x0E, 0xC7, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0x74, 0x1F, 0x10, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x72, 0x1F, 0x12, 0xC7, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0x71, 0x1F, 0x12, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x70, 0x1F, 0x12, 0xC7, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0x70, 0x1F, 0x12, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x70, 0x1F, 0x13, 0xC7, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0x6F, 0x1F, 0x13, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x70, 0x1F, 0x12, 0xC7, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0x70, 0x1F, 0x12, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x70, 0x1F, 0x12, 0xC7, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0x70, 0x1F, 0x12, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x70, 0x1F, 0x13, 0xC7, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0x6F, 0x1F, 0x13, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x70, 0x1F, 0x12, 0xC7, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0x70, 0x1F, 0x12, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x70, 0x1F, 0x12, 0xC7, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0x70, 0x1F, 0x12, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x70, 0x1F, 0x13, 0xC7, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0x70, 0x1F, 0x12, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x72, 0x1F, 0x10, 0xC7, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0x74, 0x1F, 0x0E, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x76, 0x1F, 0x0C, 0xC7, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0x78, 0x1F, 0x30, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x54, 0x1F, 0x30, 0xC7, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0x54, 0x1F, 0x30, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x54, 0x1F, 0x30, 0xC7, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0x10, 0x1F, 0x04, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x80, 0x1F, 0x04, 0xC7, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0x54, 0x1F, 0x04, 0xC7, 0x28, 0x1F, 0x04, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x54, 0x1F, 0x04, 0xC7,
|
||||
0x28, 0x1F, 0x04, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x54, 0x1F, 0x04, 0xC7, 0x28, 0x1F, 0x04, 0xC7,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0x54, 0x1F, 0x04, 0xC7, 0x0F, 0x1F, 0x04, 0xC7, 0x15, 0x1F, 0x04, 0xC7,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0x54, 0x1F, 0x04, 0xC7, 0x0F, 0x1F, 0x04, 0xC7, 0x15, 0x1F, 0x04, 0xC7,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0x54, 0x1F, 0x04, 0xC7, 0x0F, 0x1F, 0x04, 0xC7, 0x15, 0x1F, 0x04, 0xC7,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0x54, 0x1F, 0x04, 0xC7, 0x0F, 0x1F, 0x04, 0xC7, 0x15, 0x1F, 0x04, 0xC7,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0x54, 0x1F, 0x04, 0xC7, 0x0F, 0x1F, 0x04, 0xC7, 0x15, 0x1F, 0x04, 0xC7,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0x54, 0x1F, 0x04, 0xC7, 0x0F, 0x1F, 0x04, 0xC7, 0x15, 0x1F, 0x04, 0xC7,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0x54, 0x1F, 0x04, 0xC7, 0x0F, 0x1F, 0x04, 0xC7, 0x15, 0x1F, 0x04, 0xC7,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0x54, 0x1F, 0x04, 0xC7, 0x0F, 0x1F, 0x04, 0xC7, 0x15, 0x1F, 0x04, 0xC7,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0x54, 0x1F, 0x04, 0xC7, 0x0F, 0x1F, 0x04, 0xC7, 0x15, 0x1F, 0x04, 0xC7,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0x54, 0x1F, 0x04, 0xC7, 0x0F, 0x1F, 0x04, 0xC7, 0x15, 0x1F, 0x04, 0xC7,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0x54, 0x1F, 0x04, 0xC7, 0x0F, 0x1F, 0x04, 0xC7, 0x15, 0x1F, 0x04, 0xC7,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0x54, 0x1F, 0x04, 0xC7, 0x0F, 0x1F, 0x04, 0xC7, 0x15, 0x1F, 0x04, 0xC7,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0x54, 0x1F, 0x04, 0xC7, 0x0F, 0x1F, 0x04, 0xC7, 0x15, 0x1F, 0x04, 0xC7,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0x54, 0x1F, 0x04, 0xC7, 0x0F, 0x1F, 0x04, 0xC7, 0x15, 0x1F, 0x04, 0xC7,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0x54, 0x1F, 0x04, 0xC7, 0x0F, 0x1F, 0x04, 0xC7, 0x15, 0x1F, 0x04, 0xC7,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0x54, 0x1F, 0x30, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x54, 0x1F, 0x30, 0xC7,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0x54, 0x1F, 0x30, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x54, 0x1F, 0x30, 0xC7,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0x54, 0x1F, 0x30, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x54, 0x1F, 0x30, 0xC7,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0x54, 0x1F, 0x30, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x54, 0x1F, 0x30, 0xC7,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0x54, 0x1F, 0x30, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x54, 0x1F, 0x30, 0xC7,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0x79, 0x1F, 0x0E, 0xC7, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0x72, 0x1F, 0x17, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x6A, 0x1F, 0x1D, 0xC7, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0x65, 0x1F, 0x21, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x61, 0x1F, 0x24, 0xC7, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0x5F, 0x1F, 0x26, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x5D, 0x1F, 0x28, 0xC7, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0x5B, 0x1F, 0x2A, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x59, 0x1F, 0x2C, 0xC7, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0x57, 0x1F, 0x2D, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x57, 0x1F, 0x2E, 0xC7, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0x55, 0x1F, 0x0D, 0xC7, 0x17, 0x1F, 0x0B, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x55, 0x1F, 0x08, 0xC7,
|
||||
0x20, 0x1F, 0x08, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x54, 0x1F, 0x06, 0xC7, 0x25, 0x1F, 0x05, 0xC7,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0x53, 0x1F, 0x05, 0xC7, 0x28, 0x1F, 0x04, 0xC7, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0x53, 0x1F, 0x04, 0xC7, 0x2A, 0x1F, 0x04, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x52, 0x1F, 0x04, 0xC7,
|
||||
0x2A, 0x1F, 0x04, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x52, 0x1F, 0x03, 0xC7, 0x2C, 0x1F, 0x03, 0xC7,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0x52, 0x1F, 0x03, 0xC7, 0x2C, 0x1F, 0x03, 0xC7, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0x52, 0x1F, 0x03, 0xC7, 0x2C, 0x1F, 0x03, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x52, 0x1F, 0x03, 0xC7,
|
||||
0x2C, 0x1F, 0x03, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x52, 0x1F, 0x03, 0xC7, 0x2C, 0x1F, 0x03, 0xC7,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0x52, 0x1F, 0x04, 0xC7, 0x2A, 0x1F, 0x04, 0xC7, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0x52, 0x1F, 0x04, 0xC7, 0x2A, 0x1F, 0x04, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x52, 0x1F, 0x05, 0xC7,
|
||||
0x28, 0x1F, 0x05, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x53, 0x1F, 0x05, 0xC7, 0x26, 0x1F, 0x05, 0xC7,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0x54, 0x1F, 0x08, 0xC7, 0x20, 0x1F, 0x08, 0xC7, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0x54, 0x1F, 0x0C, 0xC7, 0x18, 0x1F, 0x0C, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x55, 0x1F, 0x2E, 0xC7,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0x56, 0x1F, 0x2E, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x57, 0x1F, 0x2C, 0xC7,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0x59, 0x1F, 0x2A, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x5B, 0x1F, 0x28, 0xC7,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0x5D, 0x1F, 0x26, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x5F, 0x1F, 0x24, 0xC7,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0x62, 0x1F, 0x20, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x65, 0x1F, 0x1D, 0xC7,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0x6A, 0x1F, 0x18, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x71, 0x1F, 0x0E, 0xC7,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xE9, 0x1F, 0x04, 0xC7, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0x80, 0x1F, 0x04, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x80, 0x1F, 0x04, 0xC7, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0x80, 0x1F, 0x04, 0xC7, 0x11, 0x1F, 0x04, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x6B, 0x1F, 0x04, 0xC7,
|
||||
0x11, 0x1F, 0x04, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x6B, 0x1F, 0x04, 0xC7, 0x11, 0x1F, 0x04, 0xC7,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0x6B, 0x1F, 0x04, 0xC7, 0x11, 0x1F, 0x04, 0xC7, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0x6B, 0x1F, 0x04, 0xC7, 0x11, 0x1F, 0x04, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x6B, 0x1F, 0x04, 0xC7,
|
||||
0x11, 0x1F, 0x04, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x6B, 0x1F, 0x04, 0xC7, 0x11, 0x1F, 0x04, 0xC7,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0x6B, 0x1F, 0x04, 0xC7, 0x11, 0x1F, 0x04, 0xC7, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0x6B, 0x1F, 0x04, 0xC7, 0x11, 0x1F, 0x04, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x6B, 0x1F, 0x04, 0xC7,
|
||||
0x11, 0x1F, 0x04, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x6B, 0x1F, 0x04, 0xC7, 0x11, 0x1F, 0x04, 0xC7,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0x6B, 0x1F, 0x04, 0xC7, 0x11, 0x1F, 0x04, 0xC7, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0x6B, 0x1F, 0x04, 0xC7, 0x11, 0x1F, 0x04, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x6B, 0x1F, 0x04, 0xC7,
|
||||
0x11, 0x1F, 0x04, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x6B, 0x1F, 0x04, 0xC7, 0x11, 0x1F, 0x04, 0xC7,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0x6B, 0x1F, 0x30, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x54, 0x1F, 0x30, 0xC7,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0x54, 0x1F, 0x30, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x54, 0x1F, 0x30, 0xC7,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0x54, 0x1F, 0x30, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x54, 0x1F, 0x30, 0xC7,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0x54, 0x1F, 0x30, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x54, 0x1F, 0x30, 0xC7,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0x54, 0x1F, 0x30, 0xC7, 0xFF, 0x12, 0xFF, 0x12, 0x54, 0x1F, 0x30, 0xC7,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0x79, 0x1F, 0x01, 0x38, 0x01, 0x12, 0x4C, 0x00, 0x01, 0x12,
|
||||
0x01, 0x39, 0xFF, 0x12, 0xFF, 0x12, 0x34, 0x1F, 0x01, 0x14, 0x4E, 0x00, 0x01, 0x02, 0x01, 0x34,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0x33, 0x1F, 0x01, 0x14, 0x4F, 0x00, 0x01, 0x02, 0x01, 0x34, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0x32, 0x1F, 0x01, 0x38, 0x01, 0x12, 0x4F, 0x00, 0x01, 0x02, 0x01, 0x34, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0x7E, 0x1F, 0x01, 0x35, 0x01, 0x02, 0x03, 0x00, 0x01, 0x01, 0x01, 0x36, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0x7E, 0x1F, 0x01, 0x35, 0x01, 0x02, 0x03, 0x00, 0x01, 0x01, 0x01, 0x36, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0x7E, 0x1F, 0x01, 0x35, 0x01, 0x02, 0x03, 0x00, 0x01, 0x01, 0x01, 0x36, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0x7E, 0x1F, 0x01, 0x35, 0x01, 0x02, 0x03, 0x00, 0x01, 0x01, 0x01, 0x36, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0x2D, 0x1F, 0x01, 0x4D, 0x01, 0x6E, 0x48, 0x70, 0x01, 0x6E, 0x01, 0x53, 0x05, 0x1F,
|
||||
0x01, 0x35, 0x01, 0x02, 0x03, 0x00, 0x01, 0x01, 0x01, 0x36, 0xFF, 0x12, 0x5C, 0x1F, 0x05, 0xC7,
|
||||
0x0D, 0x1F, 0x0D, 0xC7, 0x09, 0x1F, 0x10, 0xC7, 0x08, 0x1F, 0x0D, 0xC7, 0x0A, 0x1F, 0x0D, 0xC7,
|
||||
0x14, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7, 0x45, 0x1F, 0x01, 0x6F, 0x4A, 0x70, 0x01, 0x71,
|
||||
0x01, 0x54, 0x05, 0x1F, 0x01, 0x35, 0x01, 0x02, 0x03, 0x00, 0x01, 0x01, 0x01, 0x36, 0xFF, 0x12,
|
||||
0x5B, 0x1F, 0x05, 0xC7, 0x0C, 0x1F, 0x0F, 0xC7, 0x07, 0x1F, 0x11, 0xC7, 0x07, 0x1F, 0x0F, 0xC7,
|
||||
0x08, 0x1F, 0x0F, 0xC7, 0x13, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7, 0x45, 0x1F, 0x01, 0x6F,
|
||||
0x4B, 0x70, 0x01, 0x71, 0x01, 0x54, 0x05, 0x1F, 0x01, 0x35, 0x01, 0x02, 0x03, 0x00, 0x01, 0x01,
|
||||
0x01, 0x36, 0xFF, 0x12, 0x5A, 0x1F, 0x05, 0xC7, 0x0B, 0x1F, 0x11, 0xC7, 0x06, 0x1F, 0x11, 0xC7,
|
||||
0x06, 0x1F, 0x11, 0xC7, 0x06, 0x1F, 0x11, 0xC7, 0x12, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7,
|
||||
0x45, 0x1F, 0x01, 0x4D, 0x01, 0x6E, 0x4B, 0x70, 0x01, 0x71, 0x01, 0x54, 0x05, 0x1F, 0x01, 0x35,
|
||||
0x01, 0x02, 0x03, 0x00, 0x01, 0x01, 0x01, 0x36, 0xFF, 0x12, 0x58, 0x1F, 0x07, 0xC7, 0x0A, 0x1F,
|
||||
0x11, 0xC7, 0x06, 0x1F, 0x11, 0xC7, 0x06, 0x1F, 0x11, 0xC7, 0x06, 0x1F, 0x11, 0xC7, 0x12, 0x1F,
|
||||
0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7, 0x8E, 0x1F, 0x01, 0x52, 0x01, 0x71, 0x03, 0x70, 0x01, 0x72,
|
||||
0x01, 0x56, 0x05, 0x1F, 0x01, 0x35, 0x01, 0x02, 0x03, 0x00, 0x01, 0x01, 0x01, 0x36, 0xFF, 0x12,
|
||||
0x57, 0x1F, 0x07, 0xC7, 0x0A, 0x1F, 0x11, 0xC7, 0x06, 0x1F, 0x11, 0xC7, 0x06, 0x1F, 0x11, 0xC7,
|
||||
0x06, 0x1F, 0x11, 0xC7, 0x12, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7, 0x8F, 0x1F, 0x01, 0x52,
|
||||
0x01, 0x71, 0x03, 0x70, 0x01, 0x72, 0x01, 0x56, 0x05, 0x1F, 0x01, 0x35, 0x01, 0x02, 0x03, 0x00,
|
||||
0x01, 0x01, 0x01, 0x36, 0xFF, 0x12, 0x56, 0x1F, 0x07, 0xC7, 0x0A, 0x1F, 0x05, 0xC7, 0x07, 0x1F,
|
||||
0x05, 0xC7, 0x06, 0x1F, 0x05, 0xC7, 0x12, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7, 0x06, 0x1F,
|
||||
0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7, 0x12, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7, 0x90, 0x1F,
|
||||
0x01, 0x52, 0x01, 0x71, 0x03, 0x70, 0x01, 0x72, 0x01, 0x56, 0x05, 0x1F, 0x01, 0x35, 0x01, 0x02,
|
||||
0x03, 0x00, 0x01, 0x01, 0x01, 0x36, 0xFF, 0x12, 0x55, 0x1F, 0x07, 0xC7, 0x0A, 0x1F, 0x05, 0xC7,
|
||||
0x07, 0x1F, 0x05, 0xC7, 0x06, 0x1F, 0x05, 0xC7, 0x12, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7,
|
||||
0x06, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7, 0x12, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7,
|
||||
0x91, 0x1F, 0x01, 0x52, 0x01, 0x71, 0x03, 0x70, 0x01, 0x72, 0x01, 0x56, 0x05, 0x1F, 0x01, 0x35,
|
||||
0x01, 0x02, 0x03, 0x00, 0x01, 0x01, 0x01, 0x36, 0xFF, 0x12, 0x54, 0x1F, 0x03, 0xC7, 0x01, 0x1F,
|
||||
0x03, 0xC7, 0x0A, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7, 0x06, 0x1F, 0x05, 0xC7, 0x12, 0x1F,
|
||||
0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7, 0x06, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7, 0x12, 0x1F,
|
||||
0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7, 0x45, 0x1F, 0x01, 0x81, 0x01, 0xC3, 0x44, 0xC6, 0x01, 0xC3,
|
||||
0x01, 0x87, 0x05, 0x1F, 0x01, 0x52, 0x01, 0x71, 0x03, 0x70, 0x01, 0x72, 0x01, 0x56, 0x05, 0x1F,
|
||||
0x01, 0x35, 0x01, 0x02, 0x03, 0x00, 0x01, 0x01, 0x01, 0x36, 0xFF, 0x12, 0x53, 0x1F, 0x03, 0xC7,
|
||||
0x01, 0x1F, 0x03, 0xC7, 0x0A, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7, 0x06, 0x1F, 0x05, 0xC7,
|
||||
0x12, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7, 0x06, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7,
|
||||
0x12, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7, 0x45, 0x1F, 0x01, 0xC2, 0x46, 0xC6, 0x01, 0xC4,
|
||||
0x01, 0x8A, 0x05, 0x1F, 0x01, 0x52, 0x01, 0x71, 0x03, 0x70, 0x01, 0x72, 0x01, 0x56, 0x05, 0x1F,
|
||||
0x01, 0x35, 0x01, 0x02, 0x03, 0x00, 0x01, 0x01, 0x01, 0x36, 0xFF, 0x12, 0x51, 0x1F, 0x04, 0xC7,
|
||||
0x01, 0x1F, 0x04, 0xC7, 0x09, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7, 0x06, 0x1F, 0x05, 0xC7,
|
||||
0x12, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7, 0x06, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7,
|
||||
0x12, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7, 0x45, 0x1F, 0x01, 0xC2, 0x47, 0xC6, 0x01, 0xC4,
|
||||
0x01, 0x8A, 0x05, 0x1F, 0x01, 0x52, 0x01, 0x71, 0x03, 0x70, 0x01, 0x72, 0x01, 0x56, 0x05, 0x1F,
|
||||
0x01, 0x35, 0x01, 0x02, 0x03, 0x00, 0x01, 0x01, 0x01, 0x36, 0xFF, 0x12, 0x50, 0x1F, 0x04, 0xC7,
|
||||
0x01, 0x1F, 0x04, 0xC7, 0x09, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7, 0x06, 0x1F, 0x05, 0xC7,
|
||||
0x12, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7, 0x06, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7,
|
||||
0x12, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7, 0x45, 0x1F, 0x01, 0x81, 0x01, 0xC3, 0x47, 0xC6,
|
||||
0x01, 0xC4, 0x01, 0x8A, 0x05, 0x1F, 0x01, 0x52, 0x01, 0x71, 0x03, 0x70, 0x01, 0x72, 0x01, 0x56,
|
||||
0x05, 0x1F, 0x01, 0x34, 0x01, 0x02, 0x03, 0x00, 0x01, 0x02, 0x01, 0x34, 0xFF, 0x12, 0x4F, 0x1F,
|
||||
0x04, 0xC7, 0x01, 0x1F, 0x04, 0xC7, 0x09, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7, 0x06, 0x1F,
|
||||
0x05, 0xC7, 0x12, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7, 0x06, 0x1F, 0x05, 0xC7, 0x07, 0x1F,
|
||||
0x05, 0xC7, 0x12, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7, 0x8A, 0x1F, 0x01, 0x86, 0x01, 0xC4,
|
||||
0x03, 0xC6, 0x01, 0xC5, 0x01, 0x8D, 0x05, 0x1F, 0x01, 0x52, 0x01, 0x71, 0x03, 0x70, 0x01, 0x72,
|
||||
0x01, 0x56, 0x05, 0x1F, 0x01, 0x35, 0x01, 0x02, 0x03, 0x00, 0x01, 0x01, 0x01, 0x36, 0xFF, 0x12,
|
||||
0x4E, 0x1F, 0x04, 0xC7, 0x01, 0x1F, 0x04, 0xC7, 0x09, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7,
|
||||
0x06, 0x1F, 0x05, 0xC7, 0x12, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7, 0x06, 0x1F, 0x05, 0xC7,
|
||||
0x07, 0x1F, 0x05, 0xC7, 0x12, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7, 0x8B, 0x1F, 0x01, 0x86,
|
||||
0x01, 0xC4, 0x03, 0xC6, 0x01, 0xC5, 0x01, 0x8D, 0x05, 0x1F, 0x01, 0x52, 0x01, 0x71, 0x03, 0x70,
|
||||
0x01, 0x72, 0x01, 0x56, 0x05, 0x1F, 0x01, 0x35, 0x01, 0x02, 0x03, 0x00, 0x01, 0x01, 0x01, 0x36,
|
||||
0xFF, 0x12, 0x4D, 0x1F, 0x04, 0xC7, 0x01, 0x1F, 0x04, 0xC7, 0x09, 0x1F, 0x05, 0xC7, 0x06, 0x1F,
|
||||
0x06, 0xC7, 0x06, 0x1F, 0x05, 0xC7, 0x12, 0x1F, 0x05, 0xC7, 0x12, 0x1F, 0x05, 0xC7, 0x07, 0x1F,
|
||||
0x05, 0xC7, 0x12, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7, 0x8C, 0x1F, 0x01, 0x86, 0x01, 0xC4,
|
||||
0x03, 0xC6, 0x01, 0xC5, 0x01, 0x8D, 0x05, 0x1F, 0x01, 0x52, 0x01, 0x71, 0x03, 0x70, 0x01, 0x72,
|
||||
0x01, 0x56, 0x05, 0x1F, 0x01, 0x35, 0x01, 0x02, 0x03, 0x00, 0x01, 0x01, 0x01, 0x36, 0xFF, 0x12,
|
||||
0x4B, 0x1F, 0x05, 0xC7, 0x01, 0x1F, 0x05, 0xC7, 0x13, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7,
|
||||
0x12, 0x1F, 0x05, 0xC7, 0x12, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7, 0x12, 0x1F, 0x05, 0xC7,
|
||||
0x07, 0x1F, 0x05, 0xC7, 0x8D, 0x1F, 0x01, 0x86, 0x01, 0xC4, 0x03, 0xC6, 0x01, 0xC5, 0x01, 0x8D,
|
||||
0x05, 0x1F, 0x01, 0x52, 0x01, 0x71, 0x03, 0x70, 0x01, 0x72, 0x01, 0x56, 0x05, 0x1F, 0x01, 0x35,
|
||||
0x01, 0x02, 0x03, 0x00, 0x01, 0x01, 0x01, 0x36, 0xFF, 0x12, 0x4A, 0x1F, 0x04, 0xC7, 0x02, 0x1F,
|
||||
0x05, 0xC7, 0x12, 0x1F, 0x06, 0xC7, 0x07, 0x1F, 0x0F, 0xC7, 0x08, 0x1F, 0x05, 0xC7, 0x12, 0x1F,
|
||||
0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7, 0x12, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7, 0x45, 0x1F,
|
||||
0x01, 0x58, 0x01, 0x91, 0x40, 0x98, 0x01, 0x91, 0x01, 0x5D, 0x05, 0x1F, 0x01, 0x86, 0x01, 0xC4,
|
||||
0x03, 0xC6, 0x01, 0xC5, 0x01, 0x8D, 0x05, 0x1F, 0x01, 0x52, 0x01, 0x71, 0x03, 0x70, 0x01, 0x72,
|
||||
0x01, 0x56, 0x05, 0x1F, 0x01, 0x34, 0x01, 0x02, 0x03, 0x00, 0x01, 0x02, 0x01, 0x34, 0xFF, 0x12,
|
||||
0x49, 0x1F, 0x04, 0xC7, 0x03, 0x1F, 0x04, 0xC7, 0x12, 0x1F, 0x05, 0xC7, 0x08, 0x1F, 0x10, 0xC7,
|
||||
0x07, 0x1F, 0x05, 0xC7, 0x12, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7, 0x12, 0x1F, 0x05, 0xC7,
|
||||
0x07, 0x1F, 0x05, 0xC7, 0x45, 0x1F, 0x01, 0x90, 0x42, 0x98, 0x01, 0x97, 0x01, 0x5E, 0x05, 0x1F,
|
||||
0x01, 0x86, 0x01, 0xC4, 0x03, 0xC6, 0x01, 0xC5, 0x01, 0x8D, 0x05, 0x1F, 0x01, 0x52, 0x01, 0x71,
|
||||
0x03, 0x70, 0x01, 0x72, 0x01, 0x56, 0x05, 0x1F, 0x01, 0x35, 0x01, 0x02, 0x03, 0x00, 0x01, 0x01,
|
||||
0x01, 0x36, 0xFF, 0x12, 0x48, 0x1F, 0x04, 0xC7, 0x03, 0x1F, 0x04, 0xC7, 0x11, 0x1F, 0x06, 0xC7,
|
||||
0x08, 0x1F, 0x11, 0xC7, 0x06, 0x1F, 0x0F, 0xC7, 0x08, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7,
|
||||
0x12, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7, 0x45, 0x1F, 0x01, 0x90, 0x43, 0x98, 0x01, 0x97,
|
||||
0x01, 0x5E, 0x05, 0x1F, 0x01, 0x86, 0x01, 0xC4, 0x03, 0xC6, 0x01, 0xC5, 0x01, 0x8D, 0x05, 0x1F,
|
||||
0x01, 0x52, 0x01, 0x71, 0x03, 0x70, 0x01, 0x72, 0x01, 0x56, 0x05, 0x1F, 0x01, 0x35, 0x01, 0x02,
|
||||
0x03, 0x00, 0x01, 0x01, 0x01, 0x36, 0xFF, 0x12, 0x47, 0x1F, 0x04, 0xC7, 0x03, 0x1F, 0x04, 0xC7,
|
||||
0x11, 0x1F, 0x05, 0xC7, 0x09, 0x1F, 0x11, 0xC7, 0x06, 0x1F, 0x10, 0xC7, 0x07, 0x1F, 0x05, 0xC7,
|
||||
0x07, 0x1F, 0x05, 0xC7, 0x12, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7, 0x45, 0x1F, 0x01, 0x58,
|
||||
0x01, 0x91, 0x43, 0x98, 0x01, 0x97, 0x01, 0x5E, 0x05, 0x1F, 0x01, 0x86, 0x01, 0xC4, 0x03, 0xC6,
|
||||
0x01, 0xC5, 0x01, 0x8D, 0x05, 0x1F, 0x01, 0x52, 0x01, 0x71, 0x03, 0x70, 0x01, 0x72, 0x01, 0x56,
|
||||
0x05, 0x1F, 0x01, 0x35, 0x01, 0x02, 0x03, 0x00, 0x01, 0x01, 0x01, 0x36, 0xFF, 0x12, 0x46, 0x1F,
|
||||
0x04, 0xC7, 0x03, 0x1F, 0x04, 0xC7, 0x10, 0x1F, 0x06, 0xC7, 0x09, 0x1F, 0x11, 0xC7, 0x06, 0x1F,
|
||||
0x11, 0xC7, 0x06, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7, 0x12, 0x1F, 0x05, 0xC7, 0x07, 0x1F,
|
||||
0x05, 0xC7, 0x86, 0x1F, 0x01, 0x5C, 0x01, 0x97, 0x03, 0x98, 0x01, 0x96, 0x01, 0x64, 0x05, 0x1F,
|
||||
0x01, 0x86, 0x01, 0xC4, 0x03, 0xC6, 0x01, 0xC5, 0x01, 0x8D, 0x05, 0x1F, 0x01, 0x52, 0x01, 0x71,
|
||||
0x03, 0x70, 0x01, 0x72, 0x01, 0x56, 0x05, 0x1F, 0x01, 0x35, 0x01, 0x02, 0x03, 0x00, 0x01, 0x01,
|
||||
0x01, 0x36, 0xFF, 0x12, 0x44, 0x1F, 0x05, 0xC7, 0x03, 0x1F, 0x05, 0xC7, 0x0F, 0x1F, 0x05, 0xC7,
|
||||
0x16, 0x1F, 0x05, 0xC7, 0x06, 0x1F, 0x11, 0xC7, 0x06, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7,
|
||||
0x12, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7, 0x87, 0x1F, 0x01, 0x5C, 0x01, 0x97, 0x03, 0x98,
|
||||
0x01, 0x96, 0x01, 0x64, 0x05, 0x1F, 0x01, 0x86, 0x01, 0xC4, 0x03, 0xC6, 0x01, 0xC5, 0x01, 0x8D,
|
||||
0x05, 0x1F, 0x01, 0x52, 0x01, 0x71, 0x03, 0x70, 0x01, 0x72, 0x01, 0x56, 0x05, 0x1F, 0x01, 0x35,
|
||||
0x01, 0x02, 0x03, 0x00, 0x01, 0x01, 0x01, 0x36, 0xFF, 0x12, 0x43, 0x1F, 0x05, 0xC7, 0x03, 0x1F,
|
||||
0x05, 0xC7, 0x0E, 0x1F, 0x06, 0xC7, 0x16, 0x1F, 0x05, 0xC7, 0x06, 0x1F, 0x11, 0xC7, 0x06, 0x1F,
|
||||
0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7, 0x12, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7, 0x88, 0x1F,
|
||||
0x01, 0x5C, 0x01, 0x97, 0x03, 0x98, 0x01, 0x96, 0x01, 0x64, 0x05, 0x1F, 0x01, 0x86, 0x01, 0xC4,
|
||||
0x03, 0xC6, 0x01, 0xC5, 0x01, 0x8D, 0x05, 0x1F, 0x01, 0x52, 0x01, 0x71, 0x03, 0x70, 0x01, 0x72,
|
||||
0x01, 0x56, 0x05, 0x1F, 0x01, 0x35, 0x01, 0x02, 0x03, 0x00, 0x01, 0x01, 0x01, 0x36, 0xFF, 0x12,
|
||||
0x42, 0x1F, 0x05, 0xC7, 0x03, 0x1F, 0x05, 0xC7, 0x0E, 0x1F, 0x05, 0xC7, 0x17, 0x1F, 0x05, 0xC7,
|
||||
0x06, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7, 0x06, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7,
|
||||
0x12, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7, 0x89, 0x1F, 0x01, 0x5C, 0x01, 0x97, 0x03, 0x98,
|
||||
0x01, 0x96, 0x01, 0x64, 0x05, 0x1F, 0x01, 0x86, 0x01, 0xC4, 0x03, 0xC6, 0x01, 0xC5, 0x01, 0x8D,
|
||||
0x05, 0x1F, 0x01, 0x54, 0x01, 0x71, 0x03, 0x70, 0x01, 0x71, 0x01, 0x54, 0x05, 0x1F, 0x01, 0x35,
|
||||
0x01, 0x02, 0x03, 0x00, 0x01, 0x01, 0x01, 0x36, 0xFF, 0x12, 0x41, 0x1F, 0x05, 0xC7, 0x03, 0x1F,
|
||||
0x05, 0xC7, 0x0D, 0x1F, 0x06, 0xC7, 0x17, 0x1F, 0x05, 0xC7, 0x06, 0x1F, 0x05, 0xC7, 0x07, 0x1F,
|
||||
0x05, 0xC7, 0x06, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7, 0x12, 0x1F, 0x05, 0xC7, 0x07, 0x1F,
|
||||
0x05, 0xC7, 0x45, 0x1F, 0x01, 0x5F, 0x01, 0xA6, 0x3C, 0xB9, 0x01, 0xA6, 0x01, 0x66, 0x05, 0x1F,
|
||||
0x01, 0x5C, 0x01, 0x97, 0x03, 0x98, 0x01, 0x96, 0x01, 0x64, 0x05, 0x1F, 0x01, 0x86, 0x01, 0xC4,
|
||||
0x03, 0xC6, 0x01, 0xC5, 0x01, 0x8D, 0x05, 0x1F, 0x01, 0x52, 0x01, 0x71, 0x03, 0x70, 0x01, 0x72,
|
||||
0x01, 0x56, 0x05, 0x1F, 0x01, 0x35, 0x01, 0x02, 0x03, 0x00, 0x01, 0x01, 0x01, 0x36, 0xFF, 0x12,
|
||||
0x40, 0x1F, 0x04, 0xC7, 0x05, 0x1F, 0x04, 0xC7, 0x0D, 0x1F, 0x05, 0xC7, 0x18, 0x1F, 0x05, 0xC7,
|
||||
0x06, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7, 0x06, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7,
|
||||
0x12, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7, 0x45, 0x1F, 0x01, 0xA4, 0x3E, 0xB9, 0x01, 0xB5,
|
||||
0x01, 0x68, 0x05, 0x1F, 0x01, 0x5C, 0x01, 0x97, 0x03, 0x98, 0x01, 0x96, 0x01, 0x64, 0x05, 0x1F,
|
||||
0x01, 0x86, 0x01, 0xC4, 0x03, 0xC6, 0x01, 0xC5, 0x01, 0x8D, 0x05, 0x1F, 0x01, 0x52, 0x01, 0x71,
|
||||
0x03, 0x70, 0x01, 0x72, 0x01, 0x56, 0x05, 0x1F, 0x01, 0x35, 0x01, 0x02, 0x03, 0x00, 0x01, 0x01,
|
||||
0x01, 0x36, 0xFF, 0x12, 0x3E, 0x1F, 0x05, 0xC7, 0x05, 0x1F, 0x05, 0xC7, 0x0B, 0x1F, 0x06, 0xC7,
|
||||
0x18, 0x1F, 0x05, 0xC7, 0x06, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7, 0x06, 0x1F, 0x05, 0xC7,
|
||||
0x07, 0x1F, 0x05, 0xC7, 0x12, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7, 0x45, 0x1F, 0x01, 0xA4,
|
||||
0x3F, 0xB9, 0x01, 0xB5, 0x01, 0x68, 0x05, 0x1F, 0x01, 0x5C, 0x01, 0x97, 0x03, 0x98, 0x01, 0x96,
|
||||
0x01, 0x64, 0x05, 0x1F, 0x01, 0x86, 0x01, 0xC4, 0x03, 0xC6, 0x01, 0xC5, 0x01, 0x8D, 0x05, 0x1F,
|
||||
0x01, 0x52, 0x01, 0x71, 0x03, 0x70, 0x01, 0x72, 0x01, 0x56, 0x05, 0x1F, 0x01, 0x35, 0x01, 0x02,
|
||||
0x03, 0x00, 0x01, 0x01, 0x01, 0x36, 0xFF, 0x12, 0x3D, 0x1F, 0x05, 0xC7, 0x05, 0x1F, 0x05, 0xC7,
|
||||
0x0A, 0x1F, 0x06, 0xC7, 0x19, 0x1F, 0x05, 0xC7, 0x06, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7,
|
||||
0x06, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7, 0x12, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7,
|
||||
0x45, 0x1F, 0x01, 0x5F, 0x01, 0xA6, 0x3F, 0xB9, 0x01, 0xB5, 0x01, 0x68, 0x05, 0x1F, 0x01, 0x5C,
|
||||
0x01, 0x97, 0x03, 0x98, 0x01, 0x96, 0x01, 0x64, 0x05, 0x1F, 0x01, 0x86, 0x01, 0xC4, 0x03, 0xC6,
|
||||
0x01, 0xC5, 0x01, 0x8D, 0x05, 0x1F, 0x01, 0x52, 0x01, 0x71, 0x03, 0x70, 0x01, 0x72, 0x01, 0x56,
|
||||
0x05, 0x1F, 0x01, 0x35, 0x01, 0x02, 0x03, 0x00, 0x01, 0x01, 0x01, 0x36, 0xFF, 0x12, 0x3C, 0x1F,
|
||||
0x0F, 0xC7, 0x0A, 0x1F, 0x06, 0xC7, 0x0D, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7, 0x06, 0x1F,
|
||||
0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7, 0x06, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7, 0x12, 0x1F,
|
||||
0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7, 0x82, 0x1F, 0x01, 0x66, 0x01, 0xB5, 0x03, 0xB9, 0x01, 0xB5,
|
||||
0x01, 0x6C, 0x05, 0x1F, 0x01, 0x5C, 0x01, 0x97, 0x03, 0x98, 0x01, 0x96, 0x01, 0x64, 0x05, 0x1F,
|
||||
0x01, 0x86, 0x01, 0xC4, 0x03, 0xC6, 0x01, 0xC5, 0x01, 0x8D, 0x05, 0x1F, 0x01, 0x54, 0x01, 0x71,
|
||||
0x03, 0x70, 0x01, 0x71, 0x01, 0x54, 0x05, 0x1F, 0x01, 0x35, 0x01, 0x02, 0x03, 0x00, 0x01, 0x01,
|
||||
0x01, 0x36, 0xFF, 0x12, 0x3B, 0x1F, 0x0F, 0xC7, 0x09, 0x1F, 0x06, 0xC7, 0x0E, 0x1F, 0x05, 0xC7,
|
||||
0x07, 0x1F, 0x05, 0xC7, 0x06, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7, 0x06, 0x1F, 0x05, 0xC7,
|
||||
0x07, 0x1F, 0x05, 0xC7, 0x12, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7, 0x83, 0x1F, 0x01, 0x66,
|
||||
0x01, 0xB5, 0x03, 0xB9, 0x01, 0xB5, 0x01, 0x6C, 0x05, 0x1F, 0x01, 0x5C, 0x01, 0x97, 0x03, 0x98,
|
||||
0x01, 0x96, 0x01, 0x64, 0x05, 0x1F, 0x01, 0x86, 0x01, 0xC4, 0x03, 0xC6, 0x01, 0xC5, 0x01, 0x8D,
|
||||
0x05, 0x1F, 0x01, 0x52, 0x01, 0x71, 0x03, 0x70, 0x01, 0x72, 0x01, 0x56, 0x05, 0x1F, 0x01, 0x35,
|
||||
0x01, 0x02, 0x03, 0x00, 0x01, 0x01, 0x01, 0x36, 0xFF, 0x12, 0x3A, 0x1F, 0x0F, 0xC7, 0x09, 0x1F,
|
||||
0x06, 0xC7, 0x0E, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7, 0x06, 0x1F, 0x05, 0xC7, 0x07, 0x1F,
|
||||
0x05, 0xC7, 0x06, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7, 0x12, 0x1F, 0x05, 0xC7, 0x07, 0x1F,
|
||||
0x05, 0xC7, 0x84, 0x1F, 0x01, 0x66, 0x01, 0xB5, 0x03, 0xB9, 0x01, 0xB5, 0x01, 0x6C, 0x05, 0x1F,
|
||||
0x01, 0x5C, 0x01, 0x97, 0x03, 0x98, 0x01, 0x96, 0x01, 0x64, 0x05, 0x1F, 0x01, 0x86, 0x01, 0xC4,
|
||||
0x03, 0xC6, 0x01, 0xC5, 0x01, 0x8D, 0x05, 0x1F, 0x01, 0x52, 0x01, 0x71, 0x03, 0x70, 0x01, 0x72,
|
||||
0x01, 0x56, 0x05, 0x1F, 0x01, 0x35, 0x01, 0x02, 0x03, 0x00, 0x01, 0x01, 0x01, 0x36, 0xFF, 0x12,
|
||||
0x39, 0x1F, 0x10, 0xC7, 0x07, 0x1F, 0x06, 0xC7, 0x0F, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7,
|
||||
0x06, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7, 0x06, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7,
|
||||
0x12, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7, 0x85, 0x1F, 0x01, 0x66, 0x01, 0xB5, 0x03, 0xB9,
|
||||
0x01, 0xB5, 0x01, 0x6C, 0x05, 0x1F, 0x01, 0x5C, 0x01, 0x97, 0x03, 0x98, 0x01, 0x96, 0x01, 0x64,
|
||||
0x05, 0x1F, 0x01, 0x86, 0x01, 0xC4, 0x03, 0xC6, 0x01, 0xC5, 0x01, 0x8D, 0x05, 0x1F, 0x01, 0x52,
|
||||
0x01, 0x71, 0x03, 0x70, 0x01, 0x72, 0x01, 0x56, 0x05, 0x1F, 0x01, 0x35, 0x01, 0x02, 0x03, 0x00,
|
||||
0x01, 0x01, 0x01, 0x36, 0xFF, 0x12, 0x37, 0x1F, 0x11, 0xC7, 0x07, 0x1F, 0x06, 0xC7, 0x0F, 0x1F,
|
||||
0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7, 0x06, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7, 0x06, 0x1F,
|
||||
0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7, 0x12, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7, 0x86, 0x1F,
|
||||
0x01, 0x66, 0x01, 0xB5, 0x03, 0xB9, 0x01, 0xB5, 0x01, 0x6C, 0x05, 0x1F, 0x01, 0x5C, 0x01, 0x97,
|
||||
0x03, 0x98, 0x01, 0x96, 0x01, 0x64, 0x05, 0x1F, 0x01, 0x86, 0x01, 0xC4, 0x03, 0xC6, 0x01, 0xC5,
|
||||
0x01, 0x8D, 0x05, 0x1F, 0x01, 0x52, 0x01, 0x71, 0x03, 0x70, 0x01, 0x72, 0x01, 0x56, 0x05, 0x1F,
|
||||
0x01, 0x35, 0x01, 0x02, 0x03, 0x00, 0x01, 0x01, 0x01, 0x36, 0xFF, 0x12, 0x36, 0x1F, 0x05, 0xC7,
|
||||
0x07, 0x1F, 0x05, 0xC7, 0x06, 0x1F, 0x06, 0xC7, 0x10, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7,
|
||||
0x06, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7, 0x06, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7,
|
||||
0x12, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7, 0x87, 0x1F, 0x01, 0x66, 0x01, 0xB5, 0x03, 0xB9,
|
||||
0x01, 0xB5, 0x01, 0x6C, 0x05, 0x1F, 0x01, 0x5C, 0x01, 0x97, 0x03, 0x98, 0x01, 0x96, 0x01, 0x64,
|
||||
0x05, 0x1F, 0x01, 0x86, 0x01, 0xC4, 0x03, 0xC6, 0x01, 0xC5, 0x01, 0x8D, 0x05, 0x1F, 0x01, 0x52,
|
||||
0x01, 0x71, 0x03, 0x70, 0x01, 0x72, 0x01, 0x56, 0x05, 0x1F, 0x01, 0x35, 0x01, 0x02, 0x03, 0x00,
|
||||
0x01, 0x01, 0x01, 0x36, 0xFF, 0x12, 0x35, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7, 0x06, 0x1F,
|
||||
0x06, 0xC7, 0x10, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7, 0x06, 0x1F, 0x05, 0xC7, 0x07, 0x1F,
|
||||
0x05, 0xC7, 0x06, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7, 0x12, 0x1F, 0x05, 0xC7, 0x07, 0x1F,
|
||||
0x05, 0xC7, 0x67, 0x1F, 0x01, 0x40, 0x01, 0x8F, 0x01, 0x93, 0x01, 0x47, 0x1D, 0x1F, 0x01, 0x66,
|
||||
0x01, 0xB5, 0x03, 0xB9, 0x01, 0xB5, 0x01, 0x6C, 0x05, 0x1F, 0x01, 0x5C, 0x01, 0x97, 0x03, 0x98,
|
||||
0x01, 0x96, 0x01, 0x64, 0x05, 0x1F, 0x01, 0x86, 0x01, 0xC4, 0x03, 0xC6, 0x01, 0xC5, 0x01, 0x8D,
|
||||
0x05, 0x1F, 0x01, 0x52, 0x01, 0x71, 0x03, 0x70, 0x01, 0x72, 0x01, 0x56, 0x05, 0x1F, 0x01, 0x35,
|
||||
0x01, 0x02, 0x03, 0x00, 0x01, 0x01, 0x01, 0x36, 0xFF, 0x12, 0x34, 0x1F, 0x05, 0xC7, 0x07, 0x1F,
|
||||
0x05, 0xC7, 0x05, 0x1F, 0x06, 0xC7, 0x11, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7, 0x06, 0x1F,
|
||||
0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7, 0x06, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7, 0x12, 0x1F,
|
||||
0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7, 0x65, 0x1F, 0x01, 0x22, 0x01, 0x77, 0x01, 0xB7, 0x02, 0xC1,
|
||||
0x01, 0xBB, 0x01, 0x7D, 0x01, 0x2B, 0x1C, 0x1F, 0x01, 0x66, 0x01, 0xB5, 0x03, 0xB9, 0x01, 0xB5,
|
||||
0x01, 0x6C, 0x05, 0x1F, 0x01, 0x5C, 0x01, 0x97, 0x03, 0x98, 0x01, 0x96, 0x01, 0x64, 0x05, 0x1F,
|
||||
0x01, 0x8A, 0x01, 0xC4, 0x03, 0xC6, 0x01, 0xC4, 0x01, 0x8A, 0x05, 0x1F, 0x01, 0x52, 0x01, 0x71,
|
||||
0x03, 0x70, 0x01, 0x72, 0x01, 0x56, 0x05, 0x1F, 0x01, 0x35, 0x01, 0x02, 0x03, 0x00, 0x01, 0x01,
|
||||
0x01, 0x36, 0xFF, 0x12, 0x33, 0x1F, 0x05, 0xC7, 0x07, 0x1F, 0x05, 0xC7, 0x05, 0x1F, 0x11, 0xC7,
|
||||
0x06, 0x1F, 0x11, 0xC7, 0x06, 0x1F, 0x11, 0xC7, 0x06, 0x1F, 0x11, 0xC7, 0x12, 0x1F, 0x11, 0xC7,
|
||||
0x64, 0x1F, 0x01, 0x4F, 0x01, 0x9C, 0x06, 0xC1, 0x01, 0xA8, 0x01, 0x6D, 0x1C, 0x1F, 0x01, 0x66,
|
||||
0x01, 0xB5, 0x03, 0xB9, 0x01, 0xB5, 0x01, 0x6C, 0x05, 0x1F, 0x01, 0x5C, 0x01, 0x97, 0x03, 0x98,
|
||||
0x01, 0x96, 0x01, 0x64, 0x05, 0x1F, 0x01, 0x86, 0x01, 0xC4, 0x03, 0xC6, 0x01, 0xC5, 0x01, 0x8D,
|
||||
0x05, 0x1F, 0x01, 0x52, 0x01, 0x71, 0x03, 0x70, 0x01, 0x72, 0x01, 0x56, 0x05, 0x1F, 0x01, 0x35,
|
||||
0x01, 0x02, 0x03, 0x00, 0x01, 0x01, 0x01, 0x36, 0xFF, 0x12, 0x31, 0x1F, 0x06, 0xC7, 0x08, 0x1F,
|
||||
0x05, 0xC7, 0x03, 0x1F, 0x12, 0xC7, 0x06, 0x1F, 0x11, 0xC7, 0x06, 0x1F, 0x11, 0xC7, 0x06, 0x1F,
|
||||
0x11, 0xC7, 0x12, 0x1F, 0x11, 0xC7, 0x62, 0x1F, 0x01, 0x2C, 0x01, 0x7D, 0x01, 0xBE, 0x09, 0xC1,
|
||||
0x01, 0x93, 0x01, 0x47, 0x1B, 0x1F, 0x01, 0x66, 0x01, 0xB5, 0x03, 0xB9, 0x01, 0xB5, 0x01, 0x6C,
|
||||
0x05, 0x1F, 0x01, 0x5C, 0x01, 0x97, 0x03, 0x98, 0x01, 0x96, 0x01, 0x64, 0x05, 0x1F, 0x01, 0x86,
|
||||
0x01, 0xC4, 0x03, 0xC6, 0x01, 0xC5, 0x01, 0x8D, 0x05, 0x1F, 0x01, 0x52, 0x01, 0x71, 0x03, 0x70,
|
||||
0x01, 0x72, 0x01, 0x56, 0x05, 0x1F, 0x01, 0x35, 0x01, 0x02, 0x03, 0x00, 0x01, 0x01, 0x01, 0x36,
|
||||
0xFF, 0x12, 0x30, 0x1F, 0x05, 0xC7, 0x09, 0x1F, 0x05, 0xC7, 0x03, 0x1F, 0x12, 0xC7, 0x06, 0x1F,
|
||||
0x11, 0xC7, 0x06, 0x1F, 0x11, 0xC7, 0x06, 0x1F, 0x11, 0xC7, 0x12, 0x1F, 0x11, 0xC7, 0x61, 0x1F,
|
||||
0x01, 0x63, 0x01, 0xA3, 0x0C, 0xC1, 0x01, 0xBB, 0x01, 0x7D, 0x01, 0x2B, 0x1A, 0x1F, 0x01, 0x66,
|
||||
0x01, 0xB5, 0x03, 0xB9, 0x01, 0xB5, 0x01, 0x6C, 0x05, 0x1F, 0x01, 0x5C, 0x01, 0x97, 0x03, 0x98,
|
||||
0x01, 0x96, 0x01, 0x64, 0x05, 0x1F, 0x01, 0x86, 0x01, 0xC4, 0x03, 0xC6, 0x01, 0xC5, 0x01, 0x8D,
|
||||
0x05, 0x1F, 0x01, 0x52, 0x01, 0x71, 0x03, 0x70, 0x01, 0x72, 0x01, 0x56, 0x05, 0x1F, 0x01, 0x35,
|
||||
0x01, 0x02, 0x03, 0x00, 0x01, 0x01, 0x01, 0x36, 0xFF, 0x12, 0x2F, 0x1F, 0x05, 0xC7, 0x09, 0x1F,
|
||||
0x05, 0xC7, 0x03, 0x1F, 0x12, 0xC7, 0x07, 0x1F, 0x0F, 0xC7, 0x08, 0x1F, 0x0F, 0xC7, 0x08, 0x1F,
|
||||
0x0F, 0xC7, 0x14, 0x1F, 0x0F, 0xC7, 0x60, 0x1F, 0x01, 0x33, 0x01, 0x88, 0x06, 0xC1, 0x01, 0xA5,
|
||||
0x01, 0x76, 0x01, 0x3B, 0x01, 0x8E, 0x06, 0xC1, 0x01, 0xA8, 0x01, 0x6D, 0x1A, 0x1F, 0x01, 0x66,
|
||||
0x01, 0xB5, 0x03, 0xB9, 0x01, 0xB5, 0x01, 0x6C, 0x05, 0x1F, 0x01, 0x5C, 0x01, 0x97, 0x03, 0x98,
|
||||
0x01, 0x96, 0x01, 0x64, 0x05, 0x1F, 0x01, 0x86, 0x01, 0xC4, 0x03, 0xC6, 0x01, 0xC5, 0x01, 0x8D,
|
||||
0x05, 0x1F, 0x01, 0x52, 0x01, 0x71, 0x03, 0x70, 0x01, 0x72, 0x01, 0x56, 0x05, 0x1F, 0x01, 0x35,
|
||||
0x01, 0x02, 0x03, 0x00, 0x01, 0x01, 0x01, 0x36, 0xFF, 0x12, 0x2E, 0x1F, 0x05, 0xC7, 0x09, 0x1F,
|
||||
0x05, 0xC7, 0x03, 0x1F, 0x12, 0xC7, 0x08, 0x1F, 0x0D, 0xC7, 0x0A, 0x1F, 0x0D, 0xC7, 0x0A, 0x1F,
|
||||
0x0D, 0xC7, 0x16, 0x1F, 0x0D, 0xC7, 0x60, 0x1F, 0x01, 0x73, 0x01, 0xB1, 0x05, 0xC1, 0x01, 0xAC,
|
||||
0x01, 0x7B, 0x01, 0x49, 0x01, 0x48, 0x02, 0x17, 0x01, 0x3B, 0x01, 0x8E, 0x06, 0xC1, 0x01, 0x93,
|
||||
0x01, 0x47, 0x19, 0x1F, 0x01, 0x66, 0x01, 0xB5, 0x03, 0xB9, 0x01, 0xB5, 0x01, 0x6C, 0x05, 0x1F,
|
||||
0x01, 0x5C, 0x01, 0x97, 0x03, 0x98, 0x01, 0x96, 0x01, 0x64, 0x05, 0x1F, 0x01, 0x8A, 0x01, 0xC4,
|
||||
0x03, 0xC6, 0x01, 0xC4, 0x01, 0x8A, 0x05, 0x1F, 0x01, 0x52, 0x01, 0x71, 0x03, 0x70, 0x01, 0x72,
|
||||
0x01, 0x56, 0x05, 0x1F, 0x01, 0x35, 0x01, 0x02, 0x03, 0x00, 0x01, 0x01, 0x01, 0x36, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0x1B, 0x1F, 0x01, 0x47, 0x01, 0x95, 0x05, 0xC1, 0x01, 0xB2, 0x01, 0x7E, 0x01, 0x4C,
|
||||
0x03, 0x48, 0x04, 0x17, 0x01, 0x3B, 0x01, 0x8E, 0x05, 0xC1, 0x01, 0xBB, 0x01, 0x7D, 0x01, 0x2B,
|
||||
0x18, 0x1F, 0x01, 0x66, 0x01, 0xB5, 0x03, 0xB9, 0x01, 0xB5, 0x01, 0x6C, 0x05, 0x1F, 0x01, 0x5C,
|
||||
0x01, 0x97, 0x03, 0x98, 0x01, 0x96, 0x01, 0x64, 0x05, 0x1F, 0x01, 0x86, 0x01, 0xC4, 0x03, 0xC6,
|
||||
0x01, 0xC5, 0x01, 0x8D, 0x05, 0x1F, 0x01, 0x52, 0x01, 0x71, 0x03, 0x70, 0x01, 0x72, 0x01, 0x56,
|
||||
0x05, 0x1F, 0x01, 0x35, 0x01, 0x02, 0x03, 0x00, 0x01, 0x01, 0x01, 0x36, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0x18, 0x1F, 0x01, 0x27, 0x01, 0x79, 0x01, 0xB8, 0x04, 0xC1, 0x01, 0xBA, 0x01, 0x84, 0x01, 0x4E,
|
||||
0x05, 0x48, 0x06, 0x17, 0x01, 0x3B, 0x01, 0x8E, 0x05, 0xC1, 0x01, 0xA8, 0x01, 0x6D, 0x18, 0x1F,
|
||||
0x01, 0x66, 0x01, 0xB5, 0x03, 0xB9, 0x01, 0xB5, 0x01, 0x6C, 0x05, 0x1F, 0x01, 0x5C, 0x01, 0x97,
|
||||
0x03, 0x98, 0x01, 0x96, 0x01, 0x64, 0x05, 0x1F, 0x01, 0x86, 0x01, 0xC4, 0x03, 0xC6, 0x01, 0xC5,
|
||||
0x01, 0x8D, 0x05, 0x1F, 0x01, 0x52, 0x01, 0x71, 0x03, 0x70, 0x01, 0x72, 0x01, 0x56, 0x05, 0x1F,
|
||||
0x01, 0x35, 0x01, 0x02, 0x03, 0x00, 0x01, 0x01, 0x01, 0x36, 0xFF, 0x12, 0xFF, 0x12, 0x16, 0x1F,
|
||||
0x01, 0x55, 0x01, 0xA0, 0x04, 0xC1, 0x01, 0xBF, 0x01, 0x8C, 0x01, 0x59, 0x07, 0x48, 0x08, 0x17,
|
||||
0x01, 0x3B, 0x01, 0x8E, 0x05, 0xC1, 0x01, 0x93, 0x01, 0x47, 0x17, 0x1F, 0x01, 0x66, 0x01, 0xB5,
|
||||
0x03, 0xB9, 0x01, 0xB5, 0x01, 0x6C, 0x05, 0x1F, 0x01, 0x5C, 0x01, 0x97, 0x03, 0x98, 0x01, 0x96,
|
||||
0x01, 0x64, 0x05, 0x1F, 0x01, 0x86, 0x01, 0xC4, 0x03, 0xC6, 0x01, 0xC5, 0x01, 0x8D, 0x05, 0x1F,
|
||||
0x01, 0x52, 0x01, 0x71, 0x03, 0x70, 0x01, 0x72, 0x01, 0x56, 0x05, 0x1F, 0x01, 0x35, 0x01, 0x02,
|
||||
0x03, 0x00, 0x01, 0x01, 0x01, 0x36, 0xFF, 0x12, 0xFF, 0x12, 0x13, 0x1F, 0x01, 0x2D, 0x01, 0x80,
|
||||
0x01, 0xBF, 0x04, 0xC1, 0x01, 0x92, 0x01, 0x62, 0x09, 0x48, 0x0A, 0x17, 0x01, 0x3B, 0x01, 0x8E,
|
||||
0x04, 0xC1, 0x01, 0xBB, 0x01, 0x7D, 0x01, 0x2B, 0x16, 0x1F, 0x01, 0x66, 0x01, 0xB5, 0x03, 0xB9,
|
||||
0x01, 0xB5, 0x01, 0x6C, 0x05, 0x1F, 0x01, 0x5C, 0x01, 0x97, 0x03, 0x98, 0x01, 0x96, 0x01, 0x64,
|
||||
0x05, 0x1F, 0x01, 0x86, 0x01, 0xC4, 0x03, 0xC6, 0x01, 0xC5, 0x01, 0x8D, 0x05, 0x1F, 0x01, 0x52,
|
||||
0x01, 0x71, 0x03, 0x70, 0x01, 0x72, 0x01, 0x56, 0x05, 0x1F, 0x01, 0x35, 0x01, 0x02, 0x03, 0x00,
|
||||
0x01, 0x01, 0x01, 0x36, 0xFF, 0x12, 0xFF, 0x12, 0x11, 0x1F, 0x01, 0x6D, 0x01, 0xAB, 0x04, 0xC1,
|
||||
0x01, 0x99, 0x01, 0x6A, 0x0B, 0x48, 0x0C, 0x17, 0x01, 0x3B, 0x01, 0x8E, 0x04, 0xC1, 0x01, 0xA8,
|
||||
0x01, 0x6D, 0x16, 0x1F, 0x01, 0x66, 0x01, 0xB5, 0x03, 0xB9, 0x01, 0xB5, 0x01, 0x6C, 0x05, 0x1F,
|
||||
0x01, 0x5C, 0x01, 0x97, 0x03, 0x98, 0x01, 0x96, 0x01, 0x64, 0x05, 0x1F, 0x01, 0x86, 0x01, 0xC4,
|
||||
0x03, 0xC6, 0x01, 0xC5, 0x01, 0x8D, 0x05, 0x1F, 0x01, 0x52, 0x01, 0x71, 0x03, 0x70, 0x01, 0x72,
|
||||
0x01, 0x56, 0x05, 0x1F, 0x01, 0x35, 0x01, 0x02, 0x03, 0x00, 0x01, 0x01, 0x01, 0x36, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0x10, 0x1F, 0x06, 0xC1, 0x0D, 0x48, 0x0E, 0x17, 0x06, 0xC1, 0x17, 0x1F, 0x01, 0x66,
|
||||
0x01, 0xB5, 0x03, 0xB9, 0x01, 0xB5, 0x01, 0x6C, 0x05, 0x1F, 0x01, 0x5C, 0x01, 0x97, 0x03, 0x98,
|
||||
0x01, 0x96, 0x01, 0x64, 0x05, 0x1F, 0x01, 0x86, 0x01, 0xC4, 0x03, 0xC6, 0x01, 0xC5, 0x01, 0x8D,
|
||||
0x05, 0x1F, 0x01, 0x52, 0x01, 0x71, 0x03, 0x70, 0x01, 0x72, 0x01, 0x56, 0x05, 0x1F, 0x01, 0x35,
|
||||
0x01, 0x02, 0x03, 0x00, 0x01, 0x01, 0x01, 0x36, 0xFF, 0x12, 0xFF, 0x12, 0x0F, 0x1F, 0x06, 0xC1,
|
||||
0x0D, 0x48, 0x0E, 0x17, 0x06, 0xC1, 0x18, 0x1F, 0x01, 0x66, 0x01, 0xB5, 0x03, 0xB9, 0x01, 0xB5,
|
||||
0x01, 0x6C, 0x05, 0x1F, 0x01, 0x5E, 0x01, 0x97, 0x03, 0x98, 0x01, 0x97, 0x01, 0x5E, 0x05, 0x1F,
|
||||
0x01, 0x86, 0x01, 0xC4, 0x03, 0xC6, 0x01, 0xC5, 0x01, 0x8D, 0x05, 0x1F, 0x01, 0x52, 0x01, 0x71,
|
||||
0x03, 0x70, 0x01, 0x72, 0x01, 0x56, 0x05, 0x1F, 0x01, 0x35, 0x01, 0x02, 0x03, 0x00, 0x01, 0x01,
|
||||
0x01, 0x36, 0xFF, 0x12, 0xFF, 0x12, 0x0E, 0x1F, 0x06, 0xC1, 0x0D, 0x48, 0x0E, 0x17, 0x06, 0xC1,
|
||||
0x19, 0x1F, 0x01, 0x66, 0x01, 0xB5, 0x03, 0xB9, 0x01, 0xB5, 0x01, 0x6C, 0x05, 0x1F, 0x01, 0x5C,
|
||||
0x01, 0x97, 0x03, 0x98, 0x01, 0x96, 0x01, 0x64, 0x05, 0x1F, 0x01, 0x86, 0x01, 0xC4, 0x03, 0xC6,
|
||||
0x01, 0xC5, 0x01, 0x8D, 0x05, 0x1F, 0x01, 0x52, 0x01, 0x71, 0x03, 0x70, 0x01, 0x72, 0x01, 0x56,
|
||||
0x05, 0x1F, 0x01, 0x34, 0x01, 0x02, 0xFF, 0x12, 0xC1, 0x00, 0x01, 0x12, 0x01, 0x38, 0x4D, 0x1F,
|
||||
0x06, 0xC1, 0x0D, 0x48, 0x0E, 0x17, 0x06, 0xC1, 0x1A, 0x1F, 0x01, 0x66, 0x01, 0xB5, 0x03, 0xB9,
|
||||
0x01, 0xB5, 0x01, 0x6C, 0x05, 0x1F, 0x01, 0x5C, 0x01, 0x97, 0x03, 0x98, 0x01, 0x96, 0x01, 0x64,
|
||||
0x05, 0x1F, 0x01, 0x86, 0x01, 0xC4, 0x03, 0xC6, 0x01, 0xC5, 0x01, 0x8D, 0x05, 0x1F, 0x01, 0x52,
|
||||
0x01, 0x71, 0x03, 0x70, 0x01, 0x72, 0x01, 0x56, 0x05, 0x1F, 0x01, 0x34, 0x01, 0x02, 0xFF, 0x12,
|
||||
0xC1, 0x00, 0x01, 0x14, 0x4D, 0x1F, 0x06, 0xC1, 0x0D, 0x48, 0x0E, 0x17, 0x06, 0xC1, 0x1B, 0x1F,
|
||||
0x01, 0x66, 0x01, 0xB5, 0x03, 0xB9, 0x01, 0xB5, 0x01, 0x6C, 0x05, 0x1F, 0x01, 0x5C, 0x01, 0x97,
|
||||
0x03, 0x98, 0x01, 0x96, 0x01, 0x64, 0x05, 0x1F, 0x01, 0x86, 0x01, 0xC4, 0x03, 0xC6, 0x01, 0xC5,
|
||||
0x01, 0x8D, 0x05, 0x1F, 0x01, 0x52, 0x01, 0x71, 0x03, 0x70, 0x01, 0x72, 0x01, 0x56, 0x05, 0x1F,
|
||||
0x01, 0x35, 0x01, 0x02, 0xFF, 0x12, 0xC0, 0x00, 0x01, 0x14, 0x4D, 0x1F, 0x06, 0xC1, 0x0D, 0x48,
|
||||
0x0E, 0x17, 0x06, 0xC1, 0x1C, 0x1F, 0x01, 0x66, 0x01, 0xB5, 0x03, 0xB9, 0x01, 0xB5, 0x01, 0x6C,
|
||||
0x05, 0x1F, 0x01, 0x5C, 0x01, 0x97, 0x03, 0x98, 0x01, 0x96, 0x01, 0x64, 0x05, 0x1F, 0x01, 0x86,
|
||||
0x01, 0xC4, 0x03, 0xC6, 0x01, 0xC5, 0x01, 0x8D, 0x05, 0x1F, 0x01, 0x52, 0x01, 0x71, 0x03, 0x70,
|
||||
0x01, 0x72, 0x01, 0x56, 0x05, 0x1F, 0x01, 0x37, 0x01, 0x12, 0xFF, 0x12, 0xBE, 0x00, 0x01, 0x12,
|
||||
0x01, 0x38, 0x4D, 0x1F, 0x06, 0xC1, 0x0D, 0x48, 0x0E, 0x17, 0x06, 0xC1, 0x1D, 0x1F, 0x01, 0x66,
|
||||
0x01, 0xB5, 0x03, 0xB9, 0x01, 0xB5, 0x01, 0x6C, 0x05, 0x1F, 0x01, 0x5E, 0x01, 0x97, 0x03, 0x98,
|
||||
0x01, 0x97, 0x01, 0x5E, 0x05, 0x1F, 0x01, 0x86, 0x01, 0xC4, 0x03, 0xC6, 0x01, 0xC5, 0x01, 0x8D,
|
||||
0x05, 0x1F, 0x01, 0x52, 0x01, 0x71, 0x03, 0x70, 0x01, 0x72, 0x01, 0x56, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0x15, 0x1F, 0x06, 0xC1, 0x0D, 0x48, 0x0E, 0x17, 0x06, 0xC1, 0x1E, 0x1F, 0x01, 0x66, 0x01, 0xB5,
|
||||
0x03, 0xB9, 0x01, 0xB5, 0x01, 0x6C, 0x05, 0x1F, 0x01, 0x5C, 0x01, 0x97, 0x03, 0x98, 0x01, 0x96,
|
||||
0x01, 0x64, 0x05, 0x1F, 0x01, 0x86, 0x01, 0xC4, 0x03, 0xC6, 0x01, 0xC5, 0x01, 0x8D, 0x05, 0x1F,
|
||||
0x01, 0x52, 0x01, 0x71, 0x03, 0x70, 0x01, 0x72, 0x01, 0x56, 0xFF, 0x12, 0xFF, 0x12, 0x14, 0x1F,
|
||||
0x06, 0xC1, 0x0D, 0x48, 0x0E, 0x17, 0x06, 0xC1, 0x1F, 0x1F, 0x01, 0x66, 0x01, 0xB5, 0x03, 0xB9,
|
||||
0x01, 0xB5, 0x01, 0x6C, 0x05, 0x1F, 0x01, 0x5C, 0x01, 0x97, 0x03, 0x98, 0x01, 0x96, 0x01, 0x64,
|
||||
0x05, 0x1F, 0x01, 0x86, 0x01, 0xC4, 0x03, 0xC6, 0x01, 0xC5, 0x01, 0x8D, 0x05, 0x1F, 0x01, 0x52,
|
||||
0x01, 0x71, 0x03, 0x70, 0x01, 0x72, 0x01, 0x56, 0xFF, 0x12, 0xFF, 0x12, 0x13, 0x1F, 0x06, 0xC1,
|
||||
0x0D, 0x48, 0x0E, 0x17, 0x06, 0xC1, 0x20, 0x1F, 0x01, 0x66, 0x01, 0xB5, 0x03, 0xB9, 0x01, 0xB5,
|
||||
0x01, 0x6C, 0x05, 0x1F, 0x01, 0x5C, 0x01, 0x97, 0x03, 0x98, 0x01, 0x96, 0x01, 0x64, 0x05, 0x1F,
|
||||
0x01, 0x86, 0x01, 0xC4, 0x03, 0xC6, 0x01, 0xC5, 0x01, 0x8D, 0x05, 0x1F, 0x01, 0x52, 0x01, 0x71,
|
||||
0x03, 0x70, 0x01, 0x72, 0x01, 0x56, 0xFF, 0x12, 0xFF, 0x12, 0x12, 0x1F, 0x06, 0xC1, 0x0D, 0x48,
|
||||
0x0E, 0x17, 0x06, 0xC1, 0x21, 0x1F, 0x01, 0x66, 0x01, 0xB5, 0x03, 0xB9, 0x01, 0xB5, 0x01, 0x6C,
|
||||
0x05, 0x1F, 0x01, 0x5C, 0x01, 0x97, 0x03, 0x98, 0x01, 0x96, 0x01, 0x64, 0x05, 0x1F, 0x01, 0x86,
|
||||
0x01, 0xC4, 0x03, 0xC6, 0x01, 0xC5, 0x01, 0x8D, 0x05, 0x1F, 0x01, 0x54, 0x01, 0x71, 0xFF, 0x12,
|
||||
0xC5, 0x70, 0x01, 0x6E, 0x01, 0x4D, 0x4D, 0x1F, 0x06, 0xC1, 0x0D, 0x48, 0x0E, 0x17, 0x06, 0xC1,
|
||||
0x22, 0x1F, 0x01, 0x66, 0x01, 0xB5, 0x03, 0xB9, 0x01, 0xB5, 0x01, 0x6C, 0x05, 0x1F, 0x01, 0x5C,
|
||||
0x01, 0x97, 0x03, 0x98, 0x01, 0x96, 0x01, 0x64, 0x05, 0x1F, 0x01, 0x86, 0x01, 0xC4, 0x03, 0xC6,
|
||||
0x01, 0xC5, 0x01, 0x8D, 0x05, 0x1F, 0x01, 0x54, 0x01, 0x71, 0xFF, 0x12, 0xC5, 0x70, 0x01, 0x6F,
|
||||
0x4D, 0x1F, 0x06, 0xC1, 0x0B, 0x48, 0x01, 0x42, 0x01, 0x1A, 0x01, 0x09, 0x01, 0x15, 0x0C, 0x17,
|
||||
0x06, 0xC1, 0x23, 0x1F, 0x01, 0x66, 0x01, 0xB5, 0x03, 0xB9, 0x01, 0xB5, 0x01, 0x6C, 0x05, 0x1F,
|
||||
0x01, 0x5C, 0x01, 0x97, 0x03, 0x98, 0x01, 0x96, 0x01, 0x64, 0x05, 0x1F, 0x01, 0x86, 0x01, 0xC4,
|
||||
0x03, 0xC6, 0x01, 0xC5, 0x01, 0x8D, 0x05, 0x1F, 0x01, 0x52, 0x01, 0x71, 0xFF, 0x12, 0xC4, 0x70,
|
||||
0x01, 0x6F, 0x4D, 0x1F, 0x06, 0xC1, 0x0A, 0x48, 0x01, 0x2E, 0x01, 0x0F, 0x01, 0x08, 0x01, 0x03,
|
||||
0x01, 0x04, 0x01, 0x0E, 0x0B, 0x17, 0x06, 0xC1, 0x24, 0x1F, 0x01, 0x68, 0x01, 0xB5, 0x03, 0xB9,
|
||||
0x01, 0xB5, 0x01, 0x68, 0x05, 0x1F, 0x01, 0x5C, 0x01, 0x97, 0x03, 0x98, 0x01, 0x96, 0x01, 0x64,
|
||||
0x05, 0x1F, 0x01, 0x86, 0x01, 0xC4, 0x03, 0xC6, 0x01, 0xC5, 0x01, 0x8D, 0x05, 0x1F, 0x01, 0x50,
|
||||
0x01, 0x6E, 0xFF, 0x12, 0xC2, 0x70, 0x01, 0x6E, 0x01, 0x4D, 0x4D, 0x1F, 0x06, 0xC1, 0x08, 0x48,
|
||||
0x01, 0x44, 0x01, 0x1E, 0x03, 0x08, 0x03, 0x03, 0x01, 0x08, 0x01, 0x13, 0x09, 0x17, 0x06, 0xC1,
|
||||
0x25, 0x1F, 0x01, 0x66, 0x01, 0xB5, 0x03, 0xB9, 0x01, 0xB5, 0x01, 0x6C, 0x05, 0x1F, 0x01, 0x5C,
|
||||
0x01, 0x97, 0x03, 0x98, 0x01, 0x96, 0x01, 0x64, 0x05, 0x1F, 0x01, 0x86, 0x01, 0xC4, 0x03, 0xC6,
|
||||
0x01, 0xC5, 0x01, 0x8D, 0xFF, 0x12, 0xFF, 0x12, 0x19, 0x1F, 0x06, 0xC1, 0x07, 0x48, 0x01, 0x32,
|
||||
0x01, 0x11, 0x04, 0x08, 0x05, 0x03, 0x01, 0x0D, 0x01, 0x16, 0x07, 0x17, 0x06, 0xC1, 0x26, 0x1F,
|
||||
0x01, 0x66, 0x01, 0xB5, 0x03, 0xB9, 0x01, 0xB5, 0x01, 0x6C, 0x05, 0x1F, 0x01, 0x5C, 0x01, 0x97,
|
||||
0x03, 0x98, 0x01, 0x96, 0x01, 0x64, 0x05, 0x1F, 0x01, 0x86, 0x01, 0xC4, 0x03, 0xC6, 0x01, 0xC5,
|
||||
0x01, 0x8D, 0xFF, 0x12, 0xFF, 0x12, 0x18, 0x1F, 0x06, 0xC1, 0x05, 0x48, 0x01, 0x46, 0x01, 0x21,
|
||||
0x01, 0x09, 0x05, 0x08, 0x06, 0x03, 0x01, 0x06, 0x01, 0x11, 0x06, 0x17, 0x06, 0xC1, 0x27, 0x1F,
|
||||
0x01, 0x66, 0x01, 0xB5, 0x03, 0xB9, 0x01, 0xB5, 0x01, 0x6C, 0x05, 0x1F, 0x01, 0x5C, 0x01, 0x97,
|
||||
0x03, 0x98, 0x01, 0x96, 0x01, 0x64, 0x05, 0x1F, 0x01, 0x86, 0x01, 0xC4, 0x03, 0xC6, 0x01, 0xC5,
|
||||
0x01, 0x8D, 0xFF, 0x12, 0xFF, 0x12, 0x17, 0x1F, 0x06, 0xC1, 0x01, 0x99, 0x01, 0x6A, 0x02, 0x48,
|
||||
0x01, 0x3C, 0x01, 0x16, 0x07, 0x08, 0x08, 0x03, 0x01, 0x0C, 0x01, 0x16, 0x02, 0x17, 0x01, 0x3B,
|
||||
0x01, 0x8E, 0x06, 0xC1, 0x28, 0x1F, 0x01, 0x66, 0x01, 0xB5, 0x03, 0xB9, 0x01, 0xB5, 0x01, 0x6C,
|
||||
0x05, 0x1F, 0x01, 0x5C, 0x01, 0x97, 0x03, 0x98, 0x01, 0x96, 0x01, 0x64, 0x05, 0x1F, 0x01, 0x86,
|
||||
0x01, 0xC4, 0x03, 0xC6, 0x01, 0xC5, 0x01, 0x8D, 0xFF, 0x12, 0xFF, 0x12, 0x16, 0x1F, 0x08, 0xC1,
|
||||
0x01, 0x92, 0x01, 0x30, 0x01, 0x0A, 0x08, 0x08, 0x09, 0x03, 0x01, 0x05, 0x01, 0x26, 0x01, 0x8E,
|
||||
0x08, 0xC1, 0x29, 0x1F, 0x01, 0x68, 0x01, 0xB5, 0x03, 0xB9, 0x01, 0xB5, 0x01, 0x68, 0x05, 0x1F,
|
||||
0x01, 0x5C, 0x01, 0x97, 0x03, 0x98, 0x01, 0x96, 0x01, 0x64, 0x05, 0x1F, 0x01, 0x8A, 0x01, 0xC4,
|
||||
0xFF, 0x12, 0xC9, 0xC6, 0x01, 0xC3, 0x01, 0x81, 0x4D, 0x1F, 0x07, 0xC1, 0x01, 0xA9, 0x01, 0x44,
|
||||
0x01, 0x13, 0x01, 0x0F, 0x01, 0x09, 0x07, 0x08, 0x08, 0x03, 0x01, 0x07, 0x01, 0x0F, 0x01, 0x15,
|
||||
0x01, 0x57, 0x01, 0xAE, 0x07, 0xC1, 0x2A, 0x1F, 0x01, 0x66, 0x01, 0xB5, 0x03, 0xB9, 0x01, 0xB5,
|
||||
0x01, 0x6C, 0x05, 0x1F, 0x01, 0x5C, 0x01, 0x97, 0x03, 0x98, 0x01, 0x96, 0x01, 0x64, 0x05, 0x1F,
|
||||
0x01, 0x8A, 0x01, 0xC4, 0xFF, 0x12, 0xC9, 0xC6, 0x01, 0xC2, 0x4D, 0x1F, 0x06, 0xC1, 0x01, 0x82,
|
||||
0x01, 0x1B, 0x04, 0x13, 0x01, 0x0E, 0x06, 0x08, 0x06, 0x03, 0x01, 0x07, 0x01, 0x0F, 0x04, 0x13,
|
||||
0x01, 0x1D, 0x01, 0x82, 0x06, 0xC1, 0x2B, 0x1F, 0x01, 0x66, 0x01, 0xB5, 0x03, 0xB9, 0x01, 0xB5,
|
||||
0x01, 0x6C, 0x05, 0x1F, 0x01, 0x5C, 0x01, 0x97, 0x03, 0x98, 0x01, 0x96, 0x01, 0x64, 0x05, 0x1F,
|
||||
0x01, 0x86, 0x01, 0xC4, 0xFF, 0x12, 0xC8, 0xC6, 0x01, 0xC2, 0x4D, 0x1F, 0x06, 0xC1, 0x01, 0x89,
|
||||
0x01, 0x20, 0x05, 0x13, 0x01, 0x11, 0x01, 0x0D, 0x04, 0x08, 0x04, 0x03, 0x01, 0x07, 0x01, 0x0F,
|
||||
0x06, 0x13, 0x01, 0x24, 0x01, 0x89, 0x06, 0xC1, 0x2C, 0x1F, 0x01, 0x66, 0x01, 0xB5, 0x03, 0xB9,
|
||||
0x01, 0xB5, 0x01, 0x6C, 0x05, 0x1F, 0x01, 0x5C, 0x01, 0x97, 0x03, 0x98, 0x01, 0x96, 0x01, 0x64,
|
||||
0x05, 0x1F, 0x01, 0x85, 0x01, 0xC3, 0xFF, 0x12, 0xC6, 0xC6, 0x01, 0xC3, 0x01, 0x81, 0x4D, 0x1F,
|
||||
0x07, 0xC1, 0x01, 0xB6, 0x01, 0x74, 0x01, 0x18, 0x05, 0x13, 0x01, 0x11, 0x01, 0x0D, 0x02, 0x08,
|
||||
0x02, 0x03, 0x01, 0x07, 0x01, 0x0F, 0x06, 0x13, 0x01, 0x1A, 0x01, 0x78, 0x01, 0xBD, 0x07, 0xC1,
|
||||
0x2D, 0x1F, 0x01, 0x66, 0x01, 0xB5, 0x03, 0xB9, 0x01, 0xB5, 0x01, 0x6C, 0x05, 0x1F, 0x01, 0x5C,
|
||||
0x01, 0x97, 0x03, 0x98, 0x01, 0x96, 0x01, 0x64, 0xFF, 0x12, 0xFF, 0x12, 0x1D, 0x1F, 0x09, 0xC1,
|
||||
0x01, 0x9F, 0x01, 0x3E, 0x06, 0x13, 0x01, 0x10, 0x01, 0x0B, 0x01, 0x07, 0x01, 0x0F, 0x06, 0x13,
|
||||
0x01, 0x16, 0x01, 0x60, 0x01, 0xAE, 0x09, 0xC1, 0x2E, 0x1F, 0x01, 0x66, 0x01, 0xB5, 0x03, 0xB9,
|
||||
0x01, 0xB5, 0x01, 0x6C, 0x05, 0x1F, 0x01, 0x5C, 0x01, 0x97, 0x03, 0x98, 0x01, 0x96, 0x01, 0x64,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0x1C, 0x1F, 0x01, 0x67, 0x01, 0xA2, 0x09, 0xC1, 0x01, 0x7F, 0x01, 0x1C,
|
||||
0x0D, 0x13, 0x01, 0x3F, 0x01, 0x9B, 0x09, 0xC1, 0x01, 0xA2, 0x01, 0x6B, 0x2F, 0x1F, 0x01, 0x66,
|
||||
0x01, 0xB5, 0x03, 0xB9, 0x01, 0xB5, 0x01, 0x6C, 0x05, 0x1F, 0x01, 0x5C, 0x01, 0x97, 0x03, 0x98,
|
||||
0x01, 0x96, 0x01, 0x64, 0xFF, 0x12, 0xFF, 0x12, 0x1C, 0x1F, 0x01, 0x28, 0x01, 0x79, 0x01, 0xB4,
|
||||
0x08, 0xC1, 0x01, 0xAF, 0x01, 0x69, 0x01, 0x15, 0x09, 0x13, 0x01, 0x24, 0x01, 0x89, 0x09, 0xC1,
|
||||
0x01, 0xAD, 0x01, 0x77, 0x01, 0x25, 0x31, 0x1F, 0x01, 0x66, 0x01, 0xB5, 0x03, 0xB9, 0x01, 0xB5,
|
||||
0x01, 0x6C, 0x05, 0x1F, 0x01, 0x5C, 0x01, 0x97, 0x03, 0x98, 0x01, 0x96, 0x01, 0x64, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0x1D, 0x1F, 0x01, 0x3A, 0x01, 0x83, 0x01, 0xBF, 0x08, 0xC1, 0x01, 0x92, 0x01, 0x29,
|
||||
0x06, 0x13, 0x01, 0x1A, 0x01, 0x78, 0x01, 0xBD, 0x08, 0xC1, 0x01, 0xB8, 0x01, 0x7D, 0x01, 0x2C,
|
||||
0x34, 0x1F, 0x01, 0x66, 0x01, 0xB5, 0x03, 0xB9, 0x01, 0xB5, 0x01, 0x6C, 0x05, 0x1F, 0x01, 0x5E,
|
||||
0x01, 0x97, 0xFF, 0x12, 0xCD, 0x98, 0x01, 0x91, 0x01, 0x58, 0x52, 0x1F, 0x01, 0x55, 0x01, 0x9A,
|
||||
0x08, 0xC1, 0x01, 0xBD, 0x01, 0x7A, 0x01, 0x19, 0x02, 0x13, 0x01, 0x16, 0x01, 0x60, 0x01, 0xAE,
|
||||
0x08, 0xC1, 0x01, 0xBE, 0x01, 0x88, 0x01, 0x3D, 0x37, 0x1F, 0x01, 0x66, 0x01, 0xB5, 0x03, 0xB9,
|
||||
0x01, 0xB5, 0x01, 0x6C, 0x05, 0x1F, 0x01, 0x5E, 0x01, 0x97, 0xFF, 0x12, 0xCD, 0x98, 0x01, 0x90,
|
||||
0x54, 0x1F, 0x01, 0x6D, 0x01, 0xAA, 0x08, 0xC1, 0x01, 0xA1, 0x01, 0x48, 0x01, 0x43, 0x01, 0x9D,
|
||||
0x09, 0xC1, 0x01, 0x93, 0x01, 0x4A, 0x3A, 0x1F, 0x01, 0x66, 0x01, 0xB5, 0x03, 0xB9, 0x01, 0xB5,
|
||||
0x01, 0x6C, 0x05, 0x1F, 0x01, 0x5C, 0x01, 0x97, 0xFF, 0x12, 0xCC, 0x98, 0x01, 0x90, 0x55, 0x1F,
|
||||
0x01, 0x2C, 0x01, 0x7C, 0x01, 0xB8, 0x11, 0xC1, 0x01, 0x9E, 0x01, 0x61, 0x3D, 0x1F, 0x01, 0x66,
|
||||
0x01, 0xB5, 0x03, 0xB9, 0x01, 0xB5, 0x01, 0x6C, 0x05, 0x1F, 0x01, 0x5B, 0x01, 0x91, 0xFF, 0x12,
|
||||
0xCA, 0x98, 0x01, 0x91, 0x01, 0x58, 0x57, 0x1F, 0x01, 0x41, 0x01, 0x8B, 0x0E, 0xC1, 0x01, 0xA7,
|
||||
0x01, 0x73, 0x01, 0x22, 0x3F, 0x1F, 0x01, 0x66, 0x01, 0xB5, 0x03, 0xB9, 0x01, 0xB5, 0x01, 0x6C,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0x2D, 0x1F, 0x01, 0x5A, 0x01, 0x9C, 0x0A, 0xC1, 0x01, 0xB3, 0x01, 0x7C,
|
||||
0x01, 0x2A, 0x42, 0x1F, 0x01, 0x66, 0x01, 0xB5, 0x03, 0xB9, 0x01, 0xB5, 0x01, 0x6C, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0x2D, 0x1F, 0x01, 0x23, 0x01, 0x75, 0x01, 0xB0, 0x06, 0xC1, 0x01, 0xBB, 0x01, 0x80,
|
||||
0x01, 0x31, 0x45, 0x1F, 0x01, 0x66, 0x01, 0xB5, 0x03, 0xB9, 0x01, 0xB5, 0x01, 0x6C, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0x2E, 0x1F, 0x01, 0x2F, 0x01, 0x7D, 0x01, 0xBC, 0x02, 0xC1, 0x01, 0xC0, 0x01, 0x8F,
|
||||
0x01, 0x45, 0x48, 0x1F, 0x01, 0x66, 0x01, 0xB5, 0x03, 0xB9, 0x01, 0xB5, 0x01, 0x6C, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0x2F, 0x1F, 0x01, 0x4B, 0x01, 0x94, 0x01, 0x95, 0x01, 0x51, 0x4B, 0x1F, 0x01, 0x68,
|
||||
0x01, 0xB5, 0xFF, 0x12, 0xD1, 0xB9, 0x01, 0xA6, 0x01, 0x5F, 0xAE, 0x1F, 0x01, 0x68, 0x01, 0xB5,
|
||||
0xFF, 0x12, 0xD1, 0xB9, 0x01, 0xA4, 0xAF, 0x1F, 0x01, 0x66, 0x01, 0xB5, 0xFF, 0x12, 0xD0, 0xB9,
|
||||
0x01, 0xA4, 0xB0, 0x1F, 0x01, 0x65, 0x01, 0xA6, 0xFF, 0x12, 0xCE, 0xB9, 0x01, 0xA6, 0x01, 0x5F,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12,
|
||||
0xFF, 0x12, 0xFF, 0x12, 0xFF, 0x12, 0x00, 0x00
|
||||
}
|
||||
/* Definitions for what's produced by bmp2c, the small utility that converts a picture into C with RLE compression. */
|
||||
|
||||
extern unsigned char splashscreen_lut[];
|
||||
extern unsigned char splashscreen_pix[];
|
||||
|
||||
#endif
|
||||
|
|
BIN
src/rsrc/bitmaps/splash_c256_u.bmp
Normal file
BIN
src/rsrc/bitmaps/splash_c256_u.bmp
Normal file
Binary file not shown.
After Width: | Height: | Size: 301 KiB |
660
src/rsrc/bitmaps/splash_c256_u.h
Normal file
660
src/rsrc/bitmaps/splash_c256_u.h
Normal file
|
@ -0,0 +1,660 @@
|
|||
unsigned char splashscreen_lut[] = {
|
||||
0x80, 0x00, 0x00, 0x00,
|
||||
0x81, 0x00, 0x02, 0x00,
|
||||
0x81, 0x01, 0x04, 0x00,
|
||||
0x81, 0x03, 0x04, 0x00,
|
||||
0x82, 0x02, 0x07, 0x00,
|
||||
0x81, 0x05, 0x08, 0x00,
|
||||
0x85, 0x05, 0x0F, 0x00,
|
||||
0x82, 0x08, 0x0C, 0x00,
|
||||
0x87, 0x07, 0x14, 0x00,
|
||||
0x83, 0x0A, 0x0F, 0x00,
|
||||
0x87, 0x08, 0x15, 0x00,
|
||||
0x88, 0x08, 0x16, 0x00,
|
||||
0x89, 0x0A, 0x18, 0x00,
|
||||
0x83, 0x0D, 0x12, 0x00,
|
||||
0x89, 0x0B, 0x19, 0x00,
|
||||
0x8A, 0x0B, 0x1A, 0x00,
|
||||
0x8A, 0x0C, 0x1B, 0x00,
|
||||
0x8B, 0x0D, 0x1C, 0x00,
|
||||
0x8B, 0x0E, 0x1D, 0x00,
|
||||
0x84, 0x11, 0x17, 0x00,
|
||||
0x85, 0x12, 0x19, 0x00,
|
||||
0x8D, 0x10, 0x20, 0x00,
|
||||
0x8D, 0x11, 0x21, 0x00,
|
||||
0x86, 0x14, 0x1B, 0x00,
|
||||
0x8E, 0x13, 0x23, 0x00,
|
||||
0x8F, 0x14, 0x25, 0x00,
|
||||
0x87, 0x17, 0x1F, 0x00,
|
||||
0x90, 0x15, 0x26, 0x00,
|
||||
0x90, 0x15, 0x27, 0x00,
|
||||
0x87, 0x18, 0x20, 0x00,
|
||||
0x91, 0x17, 0x28, 0x00,
|
||||
0x91, 0x17, 0x29, 0x00,
|
||||
0x92, 0x18, 0x29, 0x00,
|
||||
0x92, 0x18, 0x2A, 0x00,
|
||||
0x93, 0x19, 0x2B, 0x00,
|
||||
0x89, 0x1C, 0x25, 0x00,
|
||||
0x8A, 0x1E, 0x27, 0x00,
|
||||
0x95, 0x1C, 0x2E, 0x00,
|
||||
0x95, 0x1C, 0x2F, 0x00,
|
||||
0x96, 0x1D, 0x30, 0x00,
|
||||
0x8C, 0x20, 0x2A, 0x00,
|
||||
0x97, 0x1E, 0x31, 0x00,
|
||||
0x97, 0x1F, 0x32, 0x00,
|
||||
0x98, 0x20, 0x33, 0x00,
|
||||
0x98, 0x20, 0x34, 0x00,
|
||||
0x99, 0x21, 0x35, 0x00,
|
||||
0x8E, 0x24, 0x2F, 0x00,
|
||||
0x9A, 0x22, 0x36, 0x00,
|
||||
0x9A, 0x23, 0x36, 0x00,
|
||||
0x8F, 0x26, 0x31, 0x00,
|
||||
0x9B, 0x24, 0x38, 0x00,
|
||||
0x90, 0x28, 0x33, 0x00,
|
||||
0x9F, 0x29, 0x3E, 0x00,
|
||||
0x93, 0x2C, 0x38, 0x00,
|
||||
0x94, 0x2D, 0x39, 0x00,
|
||||
0xA1, 0x2B, 0x40, 0x00,
|
||||
0xA2, 0x2C, 0x41, 0x00,
|
||||
0x96, 0x2F, 0x3C, 0x00,
|
||||
0x00, 0x00, 0xFF, 0x00,
|
||||
0x97, 0x30, 0x3E, 0x00,
|
||||
0xA3, 0x2E, 0x43, 0x00,
|
||||
0xA4, 0x2F, 0x45, 0x00,
|
||||
0xA6, 0x31, 0x47, 0x00,
|
||||
0x9A, 0x34, 0x42, 0x00,
|
||||
0x9B, 0x36, 0x44, 0x00,
|
||||
0xA8, 0x34, 0x4A, 0x00,
|
||||
0x9C, 0x37, 0x45, 0x00,
|
||||
0x9C, 0x37, 0x46, 0x00,
|
||||
0xA9, 0x35, 0x4B, 0x00,
|
||||
0xAB, 0x37, 0x4E, 0x00,
|
||||
0x9E, 0x3A, 0x49, 0x00,
|
||||
0xAC, 0x38, 0x4F, 0x00,
|
||||
0xAE, 0x3B, 0x52, 0x00,
|
||||
0xA2, 0x3E, 0x4E, 0x00,
|
||||
0xA3, 0x3E, 0x4E, 0x00,
|
||||
0xB1, 0x3E, 0x56, 0x00,
|
||||
0xA5, 0x41, 0x51, 0x00,
|
||||
0xB2, 0x40, 0x58, 0x00,
|
||||
0xB3, 0x41, 0x59, 0x00,
|
||||
0xA9, 0x44, 0x56, 0x00,
|
||||
0xB5, 0x42, 0x5B, 0x00,
|
||||
0xA9, 0x45, 0x56, 0x00,
|
||||
0xB6, 0x44, 0x5C, 0x00,
|
||||
0xB7, 0x45, 0x5D, 0x00,
|
||||
0xAD, 0x48, 0x5B, 0x00,
|
||||
0xB8, 0x46, 0x5F, 0x00,
|
||||
0xB9, 0x47, 0x60, 0x00,
|
||||
0xBA, 0x48, 0x61, 0x00,
|
||||
0xBA, 0x49, 0x61, 0x00,
|
||||
0xBB, 0x49, 0x62, 0x00,
|
||||
0xB1, 0x4C, 0x5F, 0x00,
|
||||
0xBC, 0x4B, 0x64, 0x00,
|
||||
0xBE, 0x4C, 0x66, 0x00,
|
||||
0xB4, 0x4F, 0x63, 0x00,
|
||||
0xBF, 0x4E, 0x67, 0x00,
|
||||
0xC0, 0x4F, 0x68, 0x00,
|
||||
0xB8, 0x53, 0x67, 0x00,
|
||||
0xC2, 0x51, 0x6B, 0x00,
|
||||
0xC3, 0x52, 0x6C, 0x00,
|
||||
0xBB, 0x55, 0x6A, 0x00,
|
||||
0xC5, 0x54, 0x6E, 0x00,
|
||||
0xC6, 0x55, 0x6F, 0x00,
|
||||
0xBF, 0x58, 0x6E, 0x00,
|
||||
0xC2, 0x5B, 0x71, 0x00,
|
||||
0xCA, 0x5A, 0x74, 0x00,
|
||||
0xCB, 0x5B, 0x75, 0x00,
|
||||
0xC5, 0x5E, 0x75, 0x00,
|
||||
0xCD, 0x5D, 0x77, 0x00,
|
||||
0xC8, 0x60, 0x78, 0x00,
|
||||
0xCF, 0x5F, 0x7A, 0x00,
|
||||
0xD0, 0x60, 0x7B, 0x00,
|
||||
0xCB, 0x63, 0x7B, 0x00,
|
||||
0xD3, 0x63, 0x7E, 0x00,
|
||||
0xD4, 0x64, 0x7F, 0x00,
|
||||
0xCE, 0x65, 0x7E, 0x00,
|
||||
0xD6, 0x66, 0x81, 0x00,
|
||||
0xD6, 0x67, 0x82, 0x00,
|
||||
0xD1, 0x68, 0x81, 0x00,
|
||||
0xD2, 0x68, 0x81, 0x00,
|
||||
0xD8, 0x68, 0x84, 0x00,
|
||||
0xD3, 0x69, 0x83, 0x00,
|
||||
0xD9, 0x6A, 0x86, 0x00,
|
||||
0xDA, 0x6B, 0x87, 0x00,
|
||||
0xD6, 0x6C, 0x85, 0x00,
|
||||
0xD8, 0x6D, 0x87, 0x00,
|
||||
0xDC, 0x6D, 0x89, 0x00,
|
||||
0xD9, 0x6E, 0x88, 0x00,
|
||||
0xDA, 0x6E, 0x89, 0x00,
|
||||
0xDF, 0x6F, 0x8C, 0x00,
|
||||
0xDC, 0x70, 0x8B, 0x00,
|
||||
0xDC, 0x71, 0x8B, 0x00,
|
||||
0xDD, 0x71, 0x8C, 0x00,
|
||||
0xE0, 0x71, 0x8D, 0x00,
|
||||
0xDE, 0x72, 0x8D, 0x00,
|
||||
0xE1, 0x72, 0x8E, 0x00,
|
||||
0xDF, 0x73, 0x8E, 0x00,
|
||||
0xE0, 0x73, 0x8E, 0x00,
|
||||
0xE2, 0x73, 0x90, 0x00,
|
||||
0xE1, 0x74, 0x8F, 0x00,
|
||||
0xE1, 0x74, 0x90, 0x00,
|
||||
0xE3, 0x74, 0x90, 0x00,
|
||||
0xE2, 0x75, 0x91, 0x00,
|
||||
0xE4, 0x75, 0x91, 0x00,
|
||||
0xE3, 0x76, 0x92, 0x00,
|
||||
0xE4, 0x76, 0x92, 0x00,
|
||||
0xE5, 0x76, 0x92, 0x00,
|
||||
0xE5, 0x76, 0x93, 0x00,
|
||||
0xE5, 0x77, 0x93, 0x00,
|
||||
0xE6, 0x77, 0x93, 0x00,
|
||||
0xE5, 0x77, 0x94, 0x00,
|
||||
0xE6, 0x77, 0x94, 0x00,
|
||||
0xE6, 0x78, 0x94, 0x00,
|
||||
0xE7, 0x78, 0x95, 0x00,
|
||||
0xE7, 0x79, 0x95, 0x00,
|
||||
0xE8, 0x79, 0x96, 0x00,
|
||||
0xE9, 0x7A, 0x97, 0x00,
|
||||
0xE9, 0x7B, 0x97, 0x00,
|
||||
0x00, 0x80, 0xFF, 0x00,
|
||||
0x00, 0xFF, 0x00, 0x00,
|
||||
0xFF, 0xFF, 0x00, 0x00,
|
||||
0x00, 0xFF, 0xFF, 0x00,
|
||||
0xFF, 0xFF, 0xFF, 0x00,
|
||||
0xA2, 0xA2, 0xA2, 0x00,
|
||||
0xA3, 0xA3, 0xA3, 0x00,
|
||||
0xA4, 0xA4, 0xA4, 0x00,
|
||||
0xA5, 0xA5, 0xA5, 0x00,
|
||||
0xA6, 0xA6, 0xA6, 0x00,
|
||||
0xA7, 0xA7, 0xA7, 0x00,
|
||||
0xA8, 0xA8, 0xA8, 0x00,
|
||||
0xA9, 0xA9, 0xA9, 0x00,
|
||||
0xAA, 0xAA, 0xAA, 0x00,
|
||||
0xAB, 0xAB, 0xAB, 0x00,
|
||||
0xAC, 0xAC, 0xAC, 0x00,
|
||||
0xAD, 0xAD, 0xAD, 0x00,
|
||||
0xAE, 0xAE, 0xAE, 0x00,
|
||||
0xAF, 0xAF, 0xAF, 0x00,
|
||||
0xB0, 0xB0, 0xB0, 0x00,
|
||||
0xB1, 0xB1, 0xB1, 0x00,
|
||||
0xB2, 0xB2, 0xB2, 0x00,
|
||||
0xB3, 0xB3, 0xB3, 0x00,
|
||||
0xB4, 0xB4, 0xB4, 0x00,
|
||||
0xB5, 0xB5, 0xB5, 0x00,
|
||||
0xB6, 0xB6, 0xB6, 0x00,
|
||||
0xB7, 0xB7, 0xB7, 0x00,
|
||||
0xB8, 0xB8, 0xB8, 0x00,
|
||||
0xB9, 0xB9, 0xB9, 0x00,
|
||||
0xBA, 0xBA, 0xBA, 0x00,
|
||||
0xBB, 0xBB, 0xBB, 0x00,
|
||||
0xBC, 0xBC, 0xBC, 0x00,
|
||||
0xBD, 0xBD, 0xBD, 0x00,
|
||||
0xBE, 0xBE, 0xBE, 0x00,
|
||||
0xBF, 0xBF, 0xBF, 0x00,
|
||||
0xC0, 0xC0, 0xC0, 0x00,
|
||||
0xC1, 0xC1, 0xC1, 0x00,
|
||||
0xC2, 0xC2, 0xC2, 0x00,
|
||||
0xC3, 0xC3, 0xC3, 0x00,
|
||||
0xC4, 0xC4, 0xC4, 0x00,
|
||||
0xC5, 0xC5, 0xC5, 0x00,
|
||||
0xC6, 0xC6, 0xC6, 0x00,
|
||||
0xC7, 0xC7, 0xC7, 0x00,
|
||||
0xC8, 0xC8, 0xC8, 0x00,
|
||||
0xC9, 0xC9, 0xC9, 0x00,
|
||||
0xCA, 0xCA, 0xCA, 0x00,
|
||||
0xCB, 0xCB, 0xCB, 0x00,
|
||||
0xCC, 0xCC, 0xCC, 0x00,
|
||||
0xCD, 0xCD, 0xCD, 0x00,
|
||||
0xCE, 0xCE, 0xCE, 0x00,
|
||||
0xCF, 0xCF, 0xCF, 0x00,
|
||||
0xD0, 0xD0, 0xD0, 0x00,
|
||||
0xD1, 0xD1, 0xD1, 0x00,
|
||||
0xD2, 0xD2, 0xD2, 0x00,
|
||||
0xD3, 0xD3, 0xD3, 0x00,
|
||||
0xD4, 0xD4, 0xD4, 0x00,
|
||||
0xD5, 0xD5, 0xD5, 0x00,
|
||||
0xD6, 0xD6, 0xD6, 0x00,
|
||||
0xD7, 0xD7, 0xD7, 0x00,
|
||||
0xD8, 0xD8, 0xD8, 0x00,
|
||||
0xD9, 0xD9, 0xD9, 0x00,
|
||||
0xDA, 0xDA, 0xDA, 0x00,
|
||||
0xDB, 0xDB, 0xDB, 0x00,
|
||||
0xDC, 0xDC, 0xDC, 0x00,
|
||||
0xDD, 0xDD, 0xDD, 0x00,
|
||||
0xDE, 0xDE, 0xDE, 0x00,
|
||||
0xDF, 0xDF, 0xDF, 0x00,
|
||||
0xE0, 0xE0, 0xE0, 0x00,
|
||||
0xE1, 0xE1, 0xE1, 0x00,
|
||||
0xE2, 0xE2, 0xE2, 0x00,
|
||||
0xE3, 0xE3, 0xE3, 0x00,
|
||||
0xE4, 0xE4, 0xE4, 0x00,
|
||||
0xE5, 0xE5, 0xE5, 0x00,
|
||||
0xE6, 0xE6, 0xE6, 0x00,
|
||||
0xE7, 0xE7, 0xE7, 0x00,
|
||||
0xE8, 0xE8, 0xE8, 0x00,
|
||||
0xE9, 0xE9, 0xE9, 0x00,
|
||||
0xEA, 0xEA, 0xEA, 0x00,
|
||||
0xEB, 0xEB, 0xEB, 0x00,
|
||||
0xEC, 0xEC, 0xEC, 0x00,
|
||||
0xED, 0xED, 0xED, 0x00,
|
||||
0xEE, 0xEE, 0xEE, 0x00,
|
||||
0xEF, 0xEF, 0xEF, 0x00,
|
||||
0xF0, 0xF0, 0xF0, 0x00,
|
||||
0xF1, 0xF1, 0xF1, 0x00,
|
||||
0xF2, 0xF2, 0xF2, 0x00,
|
||||
0xF3, 0xF3, 0xF3, 0x00,
|
||||
0xF4, 0xF4, 0xF4, 0x00,
|
||||
0xF5, 0xF5, 0xF5, 0x00,
|
||||
0xF6, 0xF6, 0xF6, 0x00,
|
||||
0xF7, 0xF7, 0xF7, 0x00,
|
||||
0xF8, 0xF8, 0xF8, 0x00,
|
||||
0xF9, 0xF9, 0xF9, 0x00,
|
||||
0xFA, 0xFA, 0xFA, 0x00,
|
||||
0xFB, 0xFB, 0xFB, 0x00,
|
||||
0xFC, 0xFC, 0xFC, 0x00,
|
||||
0xFD, 0xFD, 0xFD, 0x00,
|
||||
0xFE, 0xFE, 0xFE, 0x00,
|
||||
0xFF, 0xFF, 0xFF, 0x00,
|
||||
};
|
||||
|
||||
unsigned char splashscreen_pix[] = {
|
||||
0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00,
|
||||
0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00,
|
||||
0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00,
|
||||
0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00,
|
||||
0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00,
|
||||
0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00,
|
||||
0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00,
|
||||
0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00,
|
||||
0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00,
|
||||
0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00,
|
||||
0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00,
|
||||
0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00,
|
||||
0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00,
|
||||
0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00,
|
||||
0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00,
|
||||
0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00,
|
||||
0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00,
|
||||
0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00,
|
||||
0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00,
|
||||
0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00,
|
||||
0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00,
|
||||
0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00,
|
||||
0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00,
|
||||
0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00,
|
||||
0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00,
|
||||
0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00,
|
||||
0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00,
|
||||
0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00,
|
||||
0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00,
|
||||
0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00,
|
||||
0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00,
|
||||
0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00,
|
||||
0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00,
|
||||
0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00,
|
||||
0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00,
|
||||
0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00,
|
||||
0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00,
|
||||
0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00,
|
||||
0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00,
|
||||
0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00,
|
||||
0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00,
|
||||
0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00,
|
||||
0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00,
|
||||
0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00,
|
||||
0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00,
|
||||
0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00,
|
||||
0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00,
|
||||
0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00,
|
||||
0xFF, 0x00, 0xFF, 0x00, 0xDC, 0x00, 0x01, 0xA1, 0xFF, 0x00, 0xFF, 0x00, 0x7F, 0x00, 0x03, 0xA1,
|
||||
0xFF, 0x00, 0xFF, 0x00, 0x52, 0x00, 0x01, 0xA1, 0x2B, 0x00, 0x04, 0xA1, 0xFF, 0x00, 0xFF, 0x00,
|
||||
0x52, 0x00, 0x02, 0xA1, 0x28, 0x00, 0x06, 0xA1, 0xFF, 0x00, 0xFF, 0x00, 0x52, 0x00, 0x04, 0xA1,
|
||||
0x24, 0x00, 0x08, 0xA1, 0xFF, 0x00, 0xFF, 0x00, 0x52, 0x00, 0x06, 0xA1, 0x20, 0x00, 0x0A, 0xA1,
|
||||
0xFF, 0x00, 0xFF, 0x00, 0x52, 0x00, 0x07, 0xA1, 0x1E, 0x00, 0x0B, 0xA1, 0xFF, 0x00, 0xFF, 0x00,
|
||||
0x53, 0x00, 0x08, 0xA1, 0x1A, 0x00, 0x0D, 0xA1, 0xFF, 0x00, 0xFF, 0x00, 0x55, 0x00, 0x07, 0xA1,
|
||||
0x17, 0x00, 0x0F, 0xA1, 0xFF, 0x00, 0xFF, 0x00, 0x57, 0x00, 0x07, 0xA1, 0x13, 0x00, 0x11, 0xA1,
|
||||
0xFF, 0x00, 0xFF, 0x00, 0x59, 0x00, 0x07, 0xA1, 0x10, 0x00, 0x12, 0xA1, 0xFF, 0x00, 0xFF, 0x00,
|
||||
0x5A, 0x00, 0x07, 0xA1, 0x0D, 0x00, 0x13, 0xA1, 0xFF, 0x00, 0xFF, 0x00, 0x5D, 0x00, 0x07, 0xA1,
|
||||
0x09, 0x00, 0x13, 0xA1, 0xFF, 0x00, 0xFF, 0x00, 0x61, 0x00, 0x07, 0xA1, 0x05, 0x00, 0x14, 0xA1,
|
||||
0xFF, 0x00, 0xFF, 0x00, 0x63, 0x00, 0x07, 0xA1, 0x02, 0x00, 0x14, 0xA1, 0xFF, 0x00, 0xFF, 0x00,
|
||||
0x67, 0x00, 0x19, 0xA1, 0xFF, 0x00, 0xFF, 0x00, 0x6B, 0x00, 0x15, 0xA1, 0xFF, 0x00, 0xFF, 0x00,
|
||||
0x6D, 0x00, 0x13, 0xA1, 0xFF, 0x00, 0xFF, 0x00, 0x6D, 0x00, 0x14, 0xA1, 0xFF, 0x00, 0xFF, 0x00,
|
||||
0x6D, 0x00, 0x13, 0xA1, 0xFF, 0x00, 0xFF, 0x00, 0x6D, 0x00, 0x13, 0xA1, 0xFF, 0x00, 0xFF, 0x00,
|
||||
0x6D, 0x00, 0x13, 0xA1, 0xFF, 0x00, 0xFF, 0x00, 0x6D, 0x00, 0x17, 0xA1, 0xFF, 0x00, 0xFF, 0x00,
|
||||
0x69, 0x00, 0x1A, 0xA1, 0xFF, 0x00, 0xFF, 0x00, 0x67, 0x00, 0x13, 0xA1, 0x03, 0x00, 0x07, 0xA1,
|
||||
0xFF, 0x00, 0xFF, 0x00, 0x63, 0x00, 0x13, 0xA1, 0x07, 0x00, 0x07, 0xA1, 0xFF, 0x00, 0xFF, 0x00,
|
||||
0x5F, 0x00, 0x13, 0xA1, 0x0A, 0x00, 0x07, 0xA1, 0xFF, 0x00, 0xFF, 0x00, 0x5D, 0x00, 0x13, 0xA1,
|
||||
0x0D, 0x00, 0x07, 0xA1, 0xFF, 0x00, 0xFF, 0x00, 0x5B, 0x00, 0x11, 0xA1, 0x10, 0x00, 0x08, 0xA1,
|
||||
0xFF, 0x00, 0xFF, 0x00, 0x59, 0x00, 0x0F, 0xA1, 0x14, 0x00, 0x07, 0xA1, 0xFF, 0x00, 0xFF, 0x00,
|
||||
0x58, 0x00, 0x0D, 0xA1, 0x18, 0x00, 0x07, 0xA1, 0xFF, 0x00, 0xFF, 0x00, 0x56, 0x00, 0x0C, 0xA1,
|
||||
0x1A, 0x00, 0x08, 0xA1, 0xFF, 0x00, 0xFF, 0x00, 0x54, 0x00, 0x0A, 0xA1, 0x1E, 0x00, 0x07, 0xA1,
|
||||
0xFF, 0x00, 0xFF, 0x00, 0x53, 0x00, 0x08, 0xA1, 0x22, 0x00, 0x06, 0xA1, 0xFF, 0x00, 0xFF, 0x00,
|
||||
0x52, 0x00, 0x06, 0xA1, 0x25, 0x00, 0x05, 0xA1, 0xFF, 0x00, 0xFF, 0x00, 0x52, 0x00, 0x04, 0xA1,
|
||||
0x29, 0x00, 0x03, 0xA1, 0xFF, 0x00, 0xFF, 0x00, 0x52, 0x00, 0x03, 0xA1, 0x2B, 0x00, 0x02, 0xA1,
|
||||
0xFF, 0x00, 0xFF, 0x00, 0x52, 0x00, 0x01, 0xA1, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00,
|
||||
0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x09, 0x00, 0x30, 0xA1,
|
||||
0xFF, 0x00, 0xFF, 0x00, 0x52, 0x00, 0x30, 0xA1, 0xFF, 0x00, 0xFF, 0x00, 0x52, 0x00, 0x30, 0xA1,
|
||||
0xFF, 0x00, 0xFF, 0x00, 0x52, 0x00, 0x30, 0xA1, 0xFF, 0x00, 0xFF, 0x00, 0x52, 0x00, 0x30, 0xA1,
|
||||
0xFF, 0x00, 0xFF, 0x00, 0x52, 0x00, 0x30, 0xA1, 0xFF, 0x00, 0xFF, 0x00, 0x52, 0x00, 0x30, 0xA1,
|
||||
0xFF, 0x00, 0xFF, 0x00, 0x52, 0x00, 0x30, 0xA1, 0xFF, 0x00, 0xFF, 0x00, 0x52, 0x00, 0x30, 0xA1,
|
||||
0xFF, 0x00, 0xFF, 0x00, 0x52, 0x00, 0x30, 0xA1, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00,
|
||||
0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00,
|
||||
0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x61, 0x00, 0x30, 0xA1, 0xFF, 0x00,
|
||||
0xFF, 0x00, 0x52, 0x00, 0x30, 0xA1, 0xFF, 0x00, 0xFF, 0x00, 0x52, 0x00, 0x30, 0xA1, 0xFF, 0x00,
|
||||
0xFF, 0x00, 0x52, 0x00, 0x30, 0xA1, 0xFF, 0x00, 0xFF, 0x00, 0x76, 0x00, 0x0C, 0xA1, 0xFF, 0x00,
|
||||
0xFF, 0x00, 0x74, 0x00, 0x0E, 0xA1, 0xFF, 0x00, 0xFF, 0x00, 0x72, 0x00, 0x10, 0xA1, 0xFF, 0x00,
|
||||
0xFF, 0x00, 0x70, 0x00, 0x12, 0xA1, 0xFF, 0x00, 0xFF, 0x00, 0x6F, 0x00, 0x12, 0xA1, 0xFF, 0x00,
|
||||
0xFF, 0x00, 0x6E, 0x00, 0x12, 0xA1, 0xFF, 0x00, 0xFF, 0x00, 0x6E, 0x00, 0x12, 0xA1, 0xFF, 0x00,
|
||||
0xFF, 0x00, 0x6E, 0x00, 0x13, 0xA1, 0xFF, 0x00, 0xFF, 0x00, 0x6D, 0x00, 0x13, 0xA1, 0xFF, 0x00,
|
||||
0xFF, 0x00, 0x6E, 0x00, 0x12, 0xA1, 0xFF, 0x00, 0xFF, 0x00, 0x6E, 0x00, 0x12, 0xA1, 0xFF, 0x00,
|
||||
0xFF, 0x00, 0x6E, 0x00, 0x12, 0xA1, 0xFF, 0x00, 0xFF, 0x00, 0x6E, 0x00, 0x12, 0xA1, 0xFF, 0x00,
|
||||
0xFF, 0x00, 0x6E, 0x00, 0x13, 0xA1, 0xFF, 0x00, 0xFF, 0x00, 0x6D, 0x00, 0x13, 0xA1, 0xFF, 0x00,
|
||||
0xFF, 0x00, 0x6E, 0x00, 0x12, 0xA1, 0xFF, 0x00, 0xFF, 0x00, 0x6E, 0x00, 0x12, 0xA1, 0xFF, 0x00,
|
||||
0xFF, 0x00, 0x6E, 0x00, 0x12, 0xA1, 0xFF, 0x00, 0xFF, 0x00, 0x6E, 0x00, 0x12, 0xA1, 0xFF, 0x00,
|
||||
0xFF, 0x00, 0x6E, 0x00, 0x13, 0xA1, 0xFF, 0x00, 0xFF, 0x00, 0x6E, 0x00, 0x12, 0xA1, 0xFF, 0x00,
|
||||
0xFF, 0x00, 0x70, 0x00, 0x10, 0xA1, 0xFF, 0x00, 0xFF, 0x00, 0x72, 0x00, 0x0E, 0xA1, 0xFF, 0x00,
|
||||
0xFF, 0x00, 0x74, 0x00, 0x0C, 0xA1, 0xFF, 0x00, 0xFF, 0x00, 0x76, 0x00, 0x30, 0xA1, 0xFF, 0x00,
|
||||
0xFF, 0x00, 0x52, 0x00, 0x30, 0xA1, 0xFF, 0x00, 0xFF, 0x00, 0x52, 0x00, 0x30, 0xA1, 0xFF, 0x00,
|
||||
0xFF, 0x00, 0x52, 0x00, 0x30, 0xA1, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00,
|
||||
0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x06, 0x00, 0x04, 0xA1, 0xFF, 0x00,
|
||||
0xFF, 0x00, 0x7E, 0x00, 0x04, 0xA1, 0xFF, 0x00, 0xFF, 0x00, 0x52, 0x00, 0x04, 0xA1, 0x28, 0x00,
|
||||
0x04, 0xA1, 0xFF, 0x00, 0xFF, 0x00, 0x52, 0x00, 0x04, 0xA1, 0x28, 0x00, 0x04, 0xA1, 0xFF, 0x00,
|
||||
0xFF, 0x00, 0x52, 0x00, 0x04, 0xA1, 0x28, 0x00, 0x04, 0xA1, 0xFF, 0x00, 0xFF, 0x00, 0x52, 0x00,
|
||||
0x04, 0xA1, 0x0F, 0x00, 0x04, 0xA1, 0x15, 0x00, 0x04, 0xA1, 0xFF, 0x00, 0xFF, 0x00, 0x52, 0x00,
|
||||
0x04, 0xA1, 0x0F, 0x00, 0x04, 0xA1, 0x15, 0x00, 0x04, 0xA1, 0xFF, 0x00, 0xFF, 0x00, 0x52, 0x00,
|
||||
0x04, 0xA1, 0x0F, 0x00, 0x04, 0xA1, 0x15, 0x00, 0x04, 0xA1, 0xFF, 0x00, 0xFF, 0x00, 0x52, 0x00,
|
||||
0x04, 0xA1, 0x0F, 0x00, 0x04, 0xA1, 0x15, 0x00, 0x04, 0xA1, 0xFF, 0x00, 0xFF, 0x00, 0x52, 0x00,
|
||||
0x04, 0xA1, 0x0F, 0x00, 0x04, 0xA1, 0x15, 0x00, 0x04, 0xA1, 0xFF, 0x00, 0xFF, 0x00, 0x52, 0x00,
|
||||
0x04, 0xA1, 0x0F, 0x00, 0x04, 0xA1, 0x15, 0x00, 0x04, 0xA1, 0xFF, 0x00, 0xFF, 0x00, 0x52, 0x00,
|
||||
0x04, 0xA1, 0x0F, 0x00, 0x04, 0xA1, 0x15, 0x00, 0x04, 0xA1, 0xFF, 0x00, 0xFF, 0x00, 0x52, 0x00,
|
||||
0x04, 0xA1, 0x0F, 0x00, 0x04, 0xA1, 0x15, 0x00, 0x04, 0xA1, 0xFF, 0x00, 0xFF, 0x00, 0x52, 0x00,
|
||||
0x04, 0xA1, 0x0F, 0x00, 0x04, 0xA1, 0x15, 0x00, 0x04, 0xA1, 0xFF, 0x00, 0xFF, 0x00, 0x52, 0x00,
|
||||
0x04, 0xA1, 0x0F, 0x00, 0x04, 0xA1, 0x15, 0x00, 0x04, 0xA1, 0xFF, 0x00, 0xFF, 0x00, 0x52, 0x00,
|
||||
0x04, 0xA1, 0x0F, 0x00, 0x04, 0xA1, 0x15, 0x00, 0x04, 0xA1, 0xFF, 0x00, 0xFF, 0x00, 0x52, 0x00,
|
||||
0x04, 0xA1, 0x0F, 0x00, 0x04, 0xA1, 0x15, 0x00, 0x04, 0xA1, 0xFF, 0x00, 0xFF, 0x00, 0x52, 0x00,
|
||||
0x04, 0xA1, 0x0F, 0x00, 0x04, 0xA1, 0x15, 0x00, 0x04, 0xA1, 0xFF, 0x00, 0xFF, 0x00, 0x52, 0x00,
|
||||
0x04, 0xA1, 0x0F, 0x00, 0x04, 0xA1, 0x15, 0x00, 0x04, 0xA1, 0xFF, 0x00, 0xFF, 0x00, 0x52, 0x00,
|
||||
0x04, 0xA1, 0x0F, 0x00, 0x04, 0xA1, 0x15, 0x00, 0x04, 0xA1, 0xFF, 0x00, 0xFF, 0x00, 0x52, 0x00,
|
||||
0x30, 0xA1, 0xFF, 0x00, 0xFF, 0x00, 0x52, 0x00, 0x30, 0xA1, 0xFF, 0x00, 0xFF, 0x00, 0x52, 0x00,
|
||||
0x30, 0xA1, 0xFF, 0x00, 0xFF, 0x00, 0x52, 0x00, 0x30, 0xA1, 0xFF, 0x00, 0xFF, 0x00, 0x52, 0x00,
|
||||
0x30, 0xA1, 0xFF, 0x00, 0xFF, 0x00, 0x52, 0x00, 0x30, 0xA1, 0xFF, 0x00, 0xFF, 0x00, 0x52, 0x00,
|
||||
0x30, 0xA1, 0xFF, 0x00, 0xFF, 0x00, 0x52, 0x00, 0x30, 0xA1, 0xFF, 0x00, 0xFF, 0x00, 0x52, 0x00,
|
||||
0x30, 0xA1, 0xFF, 0x00, 0xFF, 0x00, 0x52, 0x00, 0x30, 0xA1, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00,
|
||||
0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00,
|
||||
0xFF, 0x00, 0x6D, 0x00, 0x0E, 0xA1, 0xFF, 0x00, 0xFF, 0x00, 0x70, 0x00, 0x17, 0xA1, 0xFF, 0x00,
|
||||
0xFF, 0x00, 0x68, 0x00, 0x1D, 0xA1, 0xFF, 0x00, 0xFF, 0x00, 0x63, 0x00, 0x21, 0xA1, 0xFF, 0x00,
|
||||
0xFF, 0x00, 0x5F, 0x00, 0x24, 0xA1, 0xFF, 0x00, 0xFF, 0x00, 0x5D, 0x00, 0x26, 0xA1, 0xFF, 0x00,
|
||||
0xFF, 0x00, 0x5B, 0x00, 0x28, 0xA1, 0xFF, 0x00, 0xFF, 0x00, 0x59, 0x00, 0x2A, 0xA1, 0xFF, 0x00,
|
||||
0xFF, 0x00, 0x57, 0x00, 0x2C, 0xA1, 0xFF, 0x00, 0xFF, 0x00, 0x55, 0x00, 0x2D, 0xA1, 0xFF, 0x00,
|
||||
0xFF, 0x00, 0x55, 0x00, 0x2E, 0xA1, 0xFF, 0x00, 0xFF, 0x00, 0x53, 0x00, 0x0D, 0xA1, 0x17, 0x00,
|
||||
0x0B, 0xA1, 0xFF, 0x00, 0xFF, 0x00, 0x53, 0x00, 0x08, 0xA1, 0x20, 0x00, 0x08, 0xA1, 0xFF, 0x00,
|
||||
0xFF, 0x00, 0x52, 0x00, 0x06, 0xA1, 0x25, 0x00, 0x05, 0xA1, 0xFF, 0x00, 0xFF, 0x00, 0x51, 0x00,
|
||||
0x05, 0xA1, 0x28, 0x00, 0x04, 0xA1, 0xFF, 0x00, 0xFF, 0x00, 0x51, 0x00, 0x04, 0xA1, 0x2A, 0x00,
|
||||
0x04, 0xA1, 0xFF, 0x00, 0xFF, 0x00, 0x50, 0x00, 0x04, 0xA1, 0x2A, 0x00, 0x04, 0xA1, 0xFF, 0x00,
|
||||
0xFF, 0x00, 0x50, 0x00, 0x03, 0xA1, 0x2C, 0x00, 0x03, 0xA1, 0xFF, 0x00, 0xFF, 0x00, 0x50, 0x00,
|
||||
0x03, 0xA1, 0x2C, 0x00, 0x03, 0xA1, 0xFF, 0x00, 0xFF, 0x00, 0x50, 0x00, 0x03, 0xA1, 0x2C, 0x00,
|
||||
0x03, 0xA1, 0xFF, 0x00, 0xFF, 0x00, 0x50, 0x00, 0x03, 0xA1, 0x2C, 0x00, 0x03, 0xA1, 0xFF, 0x00,
|
||||
0xFF, 0x00, 0x50, 0x00, 0x03, 0xA1, 0x2C, 0x00, 0x03, 0xA1, 0xFF, 0x00, 0xFF, 0x00, 0x50, 0x00,
|
||||
0x04, 0xA1, 0x2A, 0x00, 0x04, 0xA1, 0xFF, 0x00, 0xFF, 0x00, 0x50, 0x00, 0x04, 0xA1, 0x2A, 0x00,
|
||||
0x04, 0xA1, 0xFF, 0x00, 0xFF, 0x00, 0x50, 0x00, 0x05, 0xA1, 0x28, 0x00, 0x05, 0xA1, 0xFF, 0x00,
|
||||
0xFF, 0x00, 0x51, 0x00, 0x05, 0xA1, 0x26, 0x00, 0x05, 0xA1, 0xFF, 0x00, 0xFF, 0x00, 0x52, 0x00,
|
||||
0x08, 0xA1, 0x20, 0x00, 0x08, 0xA1, 0xFF, 0x00, 0xFF, 0x00, 0x52, 0x00, 0x0C, 0xA1, 0x18, 0x00,
|
||||
0x0C, 0xA1, 0xFF, 0x00, 0xFF, 0x00, 0x53, 0x00, 0x2E, 0xA1, 0xFF, 0x00, 0xFF, 0x00, 0x54, 0x00,
|
||||
0x2E, 0xA1, 0xFF, 0x00, 0xFF, 0x00, 0x55, 0x00, 0x2C, 0xA1, 0xFF, 0x00, 0xFF, 0x00, 0x57, 0x00,
|
||||
0x2A, 0xA1, 0xFF, 0x00, 0xFF, 0x00, 0x59, 0x00, 0x28, 0xA1, 0xFF, 0x00, 0xFF, 0x00, 0x5B, 0x00,
|
||||
0x26, 0xA1, 0xFF, 0x00, 0xFF, 0x00, 0x5D, 0x00, 0x24, 0xA1, 0xFF, 0x00, 0xFF, 0x00, 0x60, 0x00,
|
||||
0x20, 0xA1, 0xFF, 0x00, 0xFF, 0x00, 0x63, 0x00, 0x1D, 0xA1, 0xFF, 0x00, 0xFF, 0x00, 0x68, 0x00,
|
||||
0x18, 0xA1, 0xFF, 0x00, 0xFF, 0x00, 0x6F, 0x00, 0x0E, 0xA1, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00,
|
||||
0xFF, 0x00, 0xE5, 0x00, 0x04, 0xA1, 0xFF, 0x00, 0xFF, 0x00, 0x7E, 0x00, 0x04, 0xA1, 0xFF, 0x00,
|
||||
0xFF, 0x00, 0x7E, 0x00, 0x04, 0xA1, 0xFF, 0x00, 0xFF, 0x00, 0x7E, 0x00, 0x04, 0xA1, 0x11, 0x00,
|
||||
0x04, 0xA1, 0xFF, 0x00, 0xFF, 0x00, 0x69, 0x00, 0x04, 0xA1, 0x11, 0x00, 0x04, 0xA1, 0xFF, 0x00,
|
||||
0xFF, 0x00, 0x69, 0x00, 0x04, 0xA1, 0x11, 0x00, 0x04, 0xA1, 0xFF, 0x00, 0xFF, 0x00, 0x69, 0x00,
|
||||
0x04, 0xA1, 0x11, 0x00, 0x04, 0xA1, 0xFF, 0x00, 0xFF, 0x00, 0x69, 0x00, 0x04, 0xA1, 0x11, 0x00,
|
||||
0x04, 0xA1, 0xFF, 0x00, 0xFF, 0x00, 0x69, 0x00, 0x04, 0xA1, 0x11, 0x00, 0x04, 0xA1, 0xFF, 0x00,
|
||||
0xFF, 0x00, 0x69, 0x00, 0x04, 0xA1, 0x11, 0x00, 0x04, 0xA1, 0xFF, 0x00, 0xFF, 0x00, 0x69, 0x00,
|
||||
0x04, 0xA1, 0x11, 0x00, 0x04, 0xA1, 0xFF, 0x00, 0xFF, 0x00, 0x69, 0x00, 0x04, 0xA1, 0x11, 0x00,
|
||||
0x04, 0xA1, 0xFF, 0x00, 0xFF, 0x00, 0x69, 0x00, 0x04, 0xA1, 0x11, 0x00, 0x04, 0xA1, 0xFF, 0x00,
|
||||
0xFF, 0x00, 0x69, 0x00, 0x04, 0xA1, 0x11, 0x00, 0x04, 0xA1, 0xFF, 0x00, 0xFF, 0x00, 0x69, 0x00,
|
||||
0x04, 0xA1, 0x11, 0x00, 0x04, 0xA1, 0xFF, 0x00, 0xFF, 0x00, 0x69, 0x00, 0x04, 0xA1, 0x11, 0x00,
|
||||
0x04, 0xA1, 0xFF, 0x00, 0xFF, 0x00, 0x69, 0x00, 0x04, 0xA1, 0x11, 0x00, 0x04, 0xA1, 0xFF, 0x00,
|
||||
0xFF, 0x00, 0x69, 0x00, 0x04, 0xA1, 0x11, 0x00, 0x04, 0xA1, 0xFF, 0x00, 0xFF, 0x00, 0x69, 0x00,
|
||||
0x30, 0xA1, 0xFF, 0x00, 0xFF, 0x00, 0x52, 0x00, 0x30, 0xA1, 0xFF, 0x00, 0xFF, 0x00, 0x52, 0x00,
|
||||
0x30, 0xA1, 0xFF, 0x00, 0xFF, 0x00, 0x52, 0x00, 0x30, 0xA1, 0xFF, 0x00, 0xFF, 0x00, 0x52, 0x00,
|
||||
0x30, 0xA1, 0xFF, 0x00, 0xFF, 0x00, 0x52, 0x00, 0x30, 0xA1, 0xFF, 0x00, 0xFF, 0x00, 0x52, 0x00,
|
||||
0x30, 0xA1, 0xFF, 0x00, 0xFF, 0x00, 0x52, 0x00, 0x30, 0xA1, 0xFF, 0x00, 0xFF, 0x00, 0x52, 0x00,
|
||||
0x30, 0xA1, 0xFF, 0x00, 0xFF, 0x00, 0x52, 0x00, 0x30, 0xA1, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00,
|
||||
0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00,
|
||||
0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00,
|
||||
0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00,
|
||||
0x5E, 0x00, 0x4F, 0x3A, 0xFF, 0x00, 0xFF, 0x00, 0x33, 0x00, 0x50, 0x3A, 0xFF, 0x00, 0xFF, 0x00,
|
||||
0x32, 0x00, 0x51, 0x3A, 0xFF, 0x00, 0xFF, 0x00, 0x31, 0x00, 0x52, 0x3A, 0xFF, 0x00, 0xFF, 0x00,
|
||||
0x7E, 0x00, 0x05, 0x3A, 0xFF, 0x00, 0xFF, 0x00, 0x7E, 0x00, 0x05, 0x3A, 0xFF, 0x00, 0xFF, 0x00,
|
||||
0x7E, 0x00, 0x05, 0x3A, 0xFF, 0x00, 0xFF, 0x00, 0x7E, 0x00, 0x05, 0x3A, 0xFF, 0x00, 0x71, 0x00,
|
||||
0x0D, 0xA1, 0x0B, 0x00, 0x0D, 0xA1, 0x09, 0x00, 0x10, 0xA1, 0x08, 0x00, 0x0D, 0xA1, 0x14, 0x00,
|
||||
0x05, 0xA1, 0x07, 0x00, 0x05, 0xA1, 0x42, 0x00, 0x4B, 0x9D, 0x07, 0x00, 0x05, 0x3A, 0xFF, 0x00,
|
||||
0x6F, 0x00, 0x0F, 0xA1, 0x09, 0x00, 0x0F, 0xA1, 0x07, 0x00, 0x11, 0xA1, 0x07, 0x00, 0x0F, 0xA1,
|
||||
0x13, 0x00, 0x05, 0xA1, 0x07, 0x00, 0x05, 0xA1, 0x42, 0x00, 0x4C, 0x9D, 0x07, 0x00, 0x05, 0x3A,
|
||||
0xFF, 0x00, 0x6D, 0x00, 0x11, 0xA1, 0x07, 0x00, 0x11, 0xA1, 0x06, 0x00, 0x11, 0xA1, 0x06, 0x00,
|
||||
0x11, 0xA1, 0x12, 0x00, 0x05, 0xA1, 0x07, 0x00, 0x05, 0xA1, 0x42, 0x00, 0x4D, 0x9D, 0x07, 0x00,
|
||||
0x05, 0x3A, 0xFF, 0x00, 0x6C, 0x00, 0x11, 0xA1, 0x07, 0x00, 0x11, 0xA1, 0x06, 0x00, 0x11, 0xA1,
|
||||
0x06, 0x00, 0x11, 0xA1, 0x12, 0x00, 0x05, 0xA1, 0x07, 0x00, 0x05, 0xA1, 0x42, 0x00, 0x4E, 0x9D,
|
||||
0x07, 0x00, 0x05, 0x3A, 0xFF, 0x00, 0x6B, 0x00, 0x11, 0xA1, 0x07, 0x00, 0x11, 0xA1, 0x06, 0x00,
|
||||
0x11, 0xA1, 0x06, 0x00, 0x11, 0xA1, 0x12, 0x00, 0x05, 0xA1, 0x07, 0x00, 0x05, 0xA1, 0x8C, 0x00,
|
||||
0x05, 0x9D, 0x07, 0x00, 0x05, 0x3A, 0xFF, 0x00, 0x6A, 0x00, 0x05, 0xA1, 0x07, 0x00, 0x05, 0xA1,
|
||||
0x07, 0x00, 0x05, 0xA1, 0x07, 0x00, 0x05, 0xA1, 0x06, 0x00, 0x05, 0xA1, 0x12, 0x00, 0x05, 0xA1,
|
||||
0x07, 0x00, 0x05, 0xA1, 0x12, 0x00, 0x05, 0xA1, 0x07, 0x00, 0x05, 0xA1, 0x8D, 0x00, 0x05, 0x9D,
|
||||
0x07, 0x00, 0x05, 0x3A, 0xFF, 0x00, 0x69, 0x00, 0x05, 0xA1, 0x07, 0x00, 0x05, 0xA1, 0x07, 0x00,
|
||||
0x05, 0xA1, 0x07, 0x00, 0x05, 0xA1, 0x06, 0x00, 0x05, 0xA1, 0x12, 0x00, 0x05, 0xA1, 0x07, 0x00,
|
||||
0x05, 0xA1, 0x12, 0x00, 0x05, 0xA1, 0x07, 0x00, 0x05, 0xA1, 0x8E, 0x00, 0x05, 0x9D, 0x07, 0x00,
|
||||
0x05, 0x3A, 0xFF, 0x00, 0x68, 0x00, 0x05, 0xA1, 0x07, 0x00, 0x05, 0xA1, 0x07, 0x00, 0x05, 0xA1,
|
||||
0x07, 0x00, 0x05, 0xA1, 0x06, 0x00, 0x05, 0xA1, 0x12, 0x00, 0x05, 0xA1, 0x07, 0x00, 0x05, 0xA1,
|
||||
0x12, 0x00, 0x05, 0xA1, 0x07, 0x00, 0x05, 0xA1, 0x8F, 0x00, 0x05, 0x9D, 0x07, 0x00, 0x05, 0x3A,
|
||||
0xFF, 0x00, 0x67, 0x00, 0x05, 0xA1, 0x07, 0x00, 0x05, 0xA1, 0x07, 0x00, 0x05, 0xA1, 0x07, 0x00,
|
||||
0x05, 0xA1, 0x06, 0x00, 0x05, 0xA1, 0x12, 0x00, 0x05, 0xA1, 0x07, 0x00, 0x05, 0xA1, 0x12, 0x00,
|
||||
0x05, 0xA1, 0x07, 0x00, 0x05, 0xA1, 0x42, 0x00, 0x47, 0xA0, 0x07, 0x00, 0x05, 0x9D, 0x07, 0x00,
|
||||
0x05, 0x3A, 0xFF, 0x00, 0x66, 0x00, 0x05, 0xA1, 0x07, 0x00, 0x05, 0xA1, 0x07, 0x00, 0x05, 0xA1,
|
||||
0x07, 0x00, 0x05, 0xA1, 0x06, 0x00, 0x05, 0xA1, 0x12, 0x00, 0x05, 0xA1, 0x07, 0x00, 0x05, 0xA1,
|
||||
0x12, 0x00, 0x05, 0xA1, 0x07, 0x00, 0x05, 0xA1, 0x42, 0x00, 0x48, 0xA0, 0x07, 0x00, 0x05, 0x9D,
|
||||
0x07, 0x00, 0x05, 0x3A, 0xFF, 0x00, 0x65, 0x00, 0x05, 0xA1, 0x07, 0x00, 0x05, 0xA1, 0x07, 0x00,
|
||||
0x05, 0xA1, 0x07, 0x00, 0x05, 0xA1, 0x06, 0x00, 0x05, 0xA1, 0x12, 0x00, 0x05, 0xA1, 0x07, 0x00,
|
||||
0x05, 0xA1, 0x12, 0x00, 0x05, 0xA1, 0x07, 0x00, 0x05, 0xA1, 0x42, 0x00, 0x49, 0xA0, 0x07, 0x00,
|
||||
0x05, 0x9D, 0x07, 0x00, 0x05, 0x3A, 0xFF, 0x00, 0x64, 0x00, 0x05, 0xA1, 0x07, 0x00, 0x05, 0xA1,
|
||||
0x07, 0x00, 0x05, 0xA1, 0x07, 0x00, 0x05, 0xA1, 0x06, 0x00, 0x05, 0xA1, 0x12, 0x00, 0x05, 0xA1,
|
||||
0x07, 0x00, 0x05, 0xA1, 0x12, 0x00, 0x05, 0xA1, 0x07, 0x00, 0x05, 0xA1, 0x42, 0x00, 0x4A, 0xA0,
|
||||
0x07, 0x00, 0x05, 0x9D, 0x07, 0x00, 0x05, 0x3A, 0xFF, 0x00, 0x63, 0x00, 0x05, 0xA1, 0x07, 0x00,
|
||||
0x05, 0xA1, 0x07, 0x00, 0x05, 0xA1, 0x07, 0x00, 0x05, 0xA1, 0x06, 0x00, 0x05, 0xA1, 0x12, 0x00,
|
||||
0x05, 0xA1, 0x07, 0x00, 0x05, 0xA1, 0x12, 0x00, 0x05, 0xA1, 0x07, 0x00, 0x05, 0xA1, 0x88, 0x00,
|
||||
0x05, 0xA0, 0x07, 0x00, 0x05, 0x9D, 0x07, 0x00, 0x05, 0x3A, 0xFF, 0x00, 0x62, 0x00, 0x05, 0xA1,
|
||||
0x07, 0x00, 0x05, 0xA1, 0x07, 0x00, 0x05, 0xA1, 0x06, 0x00, 0x06, 0xA1, 0x06, 0x00, 0x05, 0xA1,
|
||||
0x12, 0x00, 0x05, 0xA1, 0x1E, 0x00, 0x05, 0xA1, 0x07, 0x00, 0x05, 0xA1, 0x89, 0x00, 0x05, 0xA0,
|
||||
0x07, 0x00, 0x05, 0x9D, 0x07, 0x00, 0x05, 0x3A, 0xFF, 0x00, 0x61, 0x00, 0x05, 0xA1, 0x1E, 0x00,
|
||||
0x05, 0xA1, 0x07, 0x00, 0x05, 0xA1, 0x12, 0x00, 0x05, 0xA1, 0x1E, 0x00, 0x05, 0xA1, 0x07, 0x00,
|
||||
0x05, 0xA1, 0x8A, 0x00, 0x05, 0xA0, 0x07, 0x00, 0x05, 0x9D, 0x07, 0x00, 0x05, 0x3A, 0xFF, 0x00,
|
||||
0x60, 0x00, 0x05, 0xA1, 0x1D, 0x00, 0x06, 0xA1, 0x07, 0x00, 0x0F, 0xA1, 0x08, 0x00, 0x05, 0xA1,
|
||||
0x1E, 0x00, 0x05, 0xA1, 0x07, 0x00, 0x05, 0xA1, 0x8B, 0x00, 0x05, 0xA0, 0x07, 0x00, 0x05, 0x9D,
|
||||
0x07, 0x00, 0x05, 0x3A, 0xFF, 0x00, 0x5F, 0x00, 0x05, 0xA1, 0x1D, 0x00, 0x05, 0xA1, 0x08, 0x00,
|
||||
0x10, 0xA1, 0x07, 0x00, 0x05, 0xA1, 0x1E, 0x00, 0x05, 0xA1, 0x07, 0x00, 0x05, 0xA1, 0x42, 0x00,
|
||||
0x43, 0x9E, 0x07, 0x00, 0x05, 0xA0, 0x07, 0x00, 0x05, 0x9D, 0x07, 0x00, 0x05, 0x3A, 0xFF, 0x00,
|
||||
0x5E, 0x00, 0x05, 0xA1, 0x1C, 0x00, 0x06, 0xA1, 0x08, 0x00, 0x11, 0xA1, 0x06, 0x00, 0x0F, 0xA1,
|
||||
0x14, 0x00, 0x05, 0xA1, 0x07, 0x00, 0x05, 0xA1, 0x42, 0x00, 0x44, 0x9E, 0x07, 0x00, 0x05, 0xA0,
|
||||
0x07, 0x00, 0x05, 0x9D, 0x07, 0x00, 0x05, 0x3A, 0xFF, 0x00, 0x5D, 0x00, 0x05, 0xA1, 0x1C, 0x00,
|
||||
0x05, 0xA1, 0x09, 0x00, 0x11, 0xA1, 0x06, 0x00, 0x10, 0xA1, 0x13, 0x00, 0x05, 0xA1, 0x07, 0x00,
|
||||
0x05, 0xA1, 0x42, 0x00, 0x45, 0x9E, 0x07, 0x00, 0x05, 0xA0, 0x07, 0x00, 0x05, 0x9D, 0x07, 0x00,
|
||||
0x05, 0x3A, 0xFF, 0x00, 0x5C, 0x00, 0x05, 0xA1, 0x1B, 0x00, 0x06, 0xA1, 0x09, 0x00, 0x11, 0xA1,
|
||||
0x06, 0x00, 0x11, 0xA1, 0x12, 0x00, 0x05, 0xA1, 0x07, 0x00, 0x05, 0xA1, 0x42, 0x00, 0x46, 0x9E,
|
||||
0x07, 0x00, 0x05, 0xA0, 0x07, 0x00, 0x05, 0x9D, 0x07, 0x00, 0x05, 0x3A, 0xFF, 0x00, 0x5B, 0x00,
|
||||
0x05, 0xA1, 0x1B, 0x00, 0x05, 0xA1, 0x16, 0x00, 0x05, 0xA1, 0x06, 0x00, 0x11, 0xA1, 0x12, 0x00,
|
||||
0x05, 0xA1, 0x07, 0x00, 0x05, 0xA1, 0x84, 0x00, 0x05, 0x9E, 0x07, 0x00, 0x05, 0xA0, 0x07, 0x00,
|
||||
0x05, 0x9D, 0x07, 0x00, 0x05, 0x3A, 0xFF, 0x00, 0x5A, 0x00, 0x05, 0xA1, 0x1A, 0x00, 0x06, 0xA1,
|
||||
0x16, 0x00, 0x05, 0xA1, 0x06, 0x00, 0x11, 0xA1, 0x12, 0x00, 0x05, 0xA1, 0x07, 0x00, 0x05, 0xA1,
|
||||
0x85, 0x00, 0x05, 0x9E, 0x07, 0x00, 0x05, 0xA0, 0x07, 0x00, 0x05, 0x9D, 0x07, 0x00, 0x05, 0x3A,
|
||||
0xFF, 0x00, 0x59, 0x00, 0x05, 0xA1, 0x1A, 0x00, 0x05, 0xA1, 0x17, 0x00, 0x05, 0xA1, 0x06, 0x00,
|
||||
0x05, 0xA1, 0x07, 0x00, 0x05, 0xA1, 0x12, 0x00, 0x05, 0xA1, 0x07, 0x00, 0x05, 0xA1, 0x86, 0x00,
|
||||
0x05, 0x9E, 0x07, 0x00, 0x05, 0xA0, 0x07, 0x00, 0x05, 0x9D, 0x07, 0x00, 0x05, 0x3A, 0xFF, 0x00,
|
||||
0x58, 0x00, 0x05, 0xA1, 0x19, 0x00, 0x06, 0xA1, 0x17, 0x00, 0x05, 0xA1, 0x06, 0x00, 0x05, 0xA1,
|
||||
0x07, 0x00, 0x05, 0xA1, 0x12, 0x00, 0x05, 0xA1, 0x07, 0x00, 0x05, 0xA1, 0x87, 0x00, 0x05, 0x9E,
|
||||
0x07, 0x00, 0x05, 0xA0, 0x07, 0x00, 0x05, 0x9D, 0x07, 0x00, 0x05, 0x3A, 0xFF, 0x00, 0x57, 0x00,
|
||||
0x05, 0xA1, 0x19, 0x00, 0x05, 0xA1, 0x18, 0x00, 0x05, 0xA1, 0x06, 0x00, 0x05, 0xA1, 0x07, 0x00,
|
||||
0x05, 0xA1, 0x12, 0x00, 0x05, 0xA1, 0x07, 0x00, 0x05, 0xA1, 0x42, 0x00, 0x3F, 0x9F, 0x07, 0x00,
|
||||
0x05, 0x9E, 0x07, 0x00, 0x05, 0xA0, 0x07, 0x00, 0x05, 0x9D, 0x07, 0x00, 0x05, 0x3A, 0xFF, 0x00,
|
||||
0x56, 0x00, 0x05, 0xA1, 0x18, 0x00, 0x06, 0xA1, 0x18, 0x00, 0x05, 0xA1, 0x06, 0x00, 0x05, 0xA1,
|
||||
0x07, 0x00, 0x05, 0xA1, 0x12, 0x00, 0x05, 0xA1, 0x07, 0x00, 0x05, 0xA1, 0x42, 0x00, 0x40, 0x9F,
|
||||
0x07, 0x00, 0x05, 0x9E, 0x07, 0x00, 0x05, 0xA0, 0x07, 0x00, 0x05, 0x9D, 0x07, 0x00, 0x05, 0x3A,
|
||||
0xFF, 0x00, 0x55, 0x00, 0x05, 0xA1, 0x07, 0x00, 0x05, 0xA1, 0x0B, 0x00, 0x06, 0xA1, 0x19, 0x00,
|
||||
0x05, 0xA1, 0x06, 0x00, 0x05, 0xA1, 0x07, 0x00, 0x05, 0xA1, 0x12, 0x00, 0x05, 0xA1, 0x07, 0x00,
|
||||
0x05, 0xA1, 0x42, 0x00, 0x41, 0x9F, 0x07, 0x00, 0x05, 0x9E, 0x07, 0x00, 0x05, 0xA0, 0x07, 0x00,
|
||||
0x05, 0x9D, 0x07, 0x00, 0x05, 0x3A, 0xFF, 0x00, 0x54, 0x00, 0x05, 0xA1, 0x07, 0x00, 0x05, 0xA1,
|
||||
0x0B, 0x00, 0x06, 0xA1, 0x0D, 0x00, 0x05, 0xA1, 0x07, 0x00, 0x05, 0xA1, 0x06, 0x00, 0x05, 0xA1,
|
||||
0x07, 0x00, 0x05, 0xA1, 0x12, 0x00, 0x05, 0xA1, 0x07, 0x00, 0x05, 0xA1, 0x42, 0x00, 0x42, 0x9F,
|
||||
0x07, 0x00, 0x05, 0x9E, 0x07, 0x00, 0x05, 0xA0, 0x07, 0x00, 0x05, 0x9D, 0x07, 0x00, 0x05, 0x3A,
|
||||
0xFF, 0x00, 0x53, 0x00, 0x05, 0xA1, 0x07, 0x00, 0x05, 0xA1, 0x0A, 0x00, 0x06, 0xA1, 0x0E, 0x00,
|
||||
0x05, 0xA1, 0x07, 0x00, 0x05, 0xA1, 0x06, 0x00, 0x05, 0xA1, 0x07, 0x00, 0x05, 0xA1, 0x12, 0x00,
|
||||
0x05, 0xA1, 0x07, 0x00, 0x05, 0xA1, 0x80, 0x00, 0x05, 0x9F, 0x07, 0x00, 0x05, 0x9E, 0x07, 0x00,
|
||||
0x05, 0xA0, 0x07, 0x00, 0x05, 0x9D, 0x07, 0x00, 0x05, 0x3A, 0xFF, 0x00, 0x52, 0x00, 0x05, 0xA1,
|
||||
0x07, 0x00, 0x05, 0xA1, 0x0A, 0x00, 0x06, 0xA1, 0x0E, 0x00, 0x05, 0xA1, 0x07, 0x00, 0x05, 0xA1,
|
||||
0x06, 0x00, 0x05, 0xA1, 0x07, 0x00, 0x05, 0xA1, 0x12, 0x00, 0x05, 0xA1, 0x07, 0x00, 0x05, 0xA1,
|
||||
0x81, 0x00, 0x05, 0x9F, 0x07, 0x00, 0x05, 0x9E, 0x07, 0x00, 0x05, 0xA0, 0x07, 0x00, 0x05, 0x9D,
|
||||
0x07, 0x00, 0x05, 0x3A, 0xFF, 0x00, 0x51, 0x00, 0x05, 0xA1, 0x07, 0x00, 0x05, 0xA1, 0x09, 0x00,
|
||||
0x06, 0xA1, 0x0F, 0x00, 0x05, 0xA1, 0x07, 0x00, 0x05, 0xA1, 0x06, 0x00, 0x05, 0xA1, 0x07, 0x00,
|
||||
0x05, 0xA1, 0x12, 0x00, 0x05, 0xA1, 0x07, 0x00, 0x05, 0xA1, 0x82, 0x00, 0x05, 0x9F, 0x07, 0x00,
|
||||
0x05, 0x9E, 0x07, 0x00, 0x05, 0xA0, 0x07, 0x00, 0x05, 0x9D, 0x07, 0x00, 0x05, 0x3A, 0xFF, 0x00,
|
||||
0x50, 0x00, 0x05, 0xA1, 0x07, 0x00, 0x05, 0xA1, 0x09, 0x00, 0x06, 0xA1, 0x0F, 0x00, 0x05, 0xA1,
|
||||
0x07, 0x00, 0x05, 0xA1, 0x06, 0x00, 0x05, 0xA1, 0x07, 0x00, 0x05, 0xA1, 0x12, 0x00, 0x05, 0xA1,
|
||||
0x07, 0x00, 0x05, 0xA1, 0x83, 0x00, 0x05, 0x9F, 0x07, 0x00, 0x05, 0x9E, 0x07, 0x00, 0x05, 0xA0,
|
||||
0x07, 0x00, 0x05, 0x9D, 0x07, 0x00, 0x05, 0x3A, 0xFF, 0x00, 0x4F, 0x00, 0x05, 0xA1, 0x07, 0x00,
|
||||
0x05, 0xA1, 0x08, 0x00, 0x06, 0xA1, 0x10, 0x00, 0x05, 0xA1, 0x07, 0x00, 0x05, 0xA1, 0x06, 0x00,
|
||||
0x05, 0xA1, 0x07, 0x00, 0x05, 0xA1, 0x12, 0x00, 0x05, 0xA1, 0x07, 0x00, 0x05, 0xA1, 0x84, 0x00,
|
||||
0x05, 0x9F, 0x07, 0x00, 0x05, 0x9E, 0x07, 0x00, 0x05, 0xA0, 0x07, 0x00, 0x05, 0x9D, 0x07, 0x00,
|
||||
0x05, 0x3A, 0xFF, 0x00, 0x4E, 0x00, 0x05, 0xA1, 0x07, 0x00, 0x05, 0xA1, 0x08, 0x00, 0x06, 0xA1,
|
||||
0x10, 0x00, 0x05, 0xA1, 0x07, 0x00, 0x05, 0xA1, 0x06, 0x00, 0x05, 0xA1, 0x07, 0x00, 0x05, 0xA1,
|
||||
0x12, 0x00, 0x05, 0xA1, 0x07, 0x00, 0x05, 0xA1, 0x85, 0x00, 0x05, 0x9F, 0x07, 0x00, 0x05, 0x9E,
|
||||
0x07, 0x00, 0x05, 0xA0, 0x07, 0x00, 0x05, 0x9D, 0x07, 0x00, 0x05, 0x3A, 0xFF, 0x00, 0x4D, 0x00,
|
||||
0x05, 0xA1, 0x07, 0x00, 0x05, 0xA1, 0x07, 0x00, 0x06, 0xA1, 0x11, 0x00, 0x05, 0xA1, 0x07, 0x00,
|
||||
0x05, 0xA1, 0x06, 0x00, 0x05, 0xA1, 0x07, 0x00, 0x05, 0xA1, 0x12, 0x00, 0x05, 0xA1, 0x07, 0x00,
|
||||
0x05, 0xA1, 0x64, 0x00, 0x01, 0x31, 0x01, 0x72, 0x01, 0x75, 0x01, 0x36, 0x1E, 0x00, 0x05, 0x9F,
|
||||
0x07, 0x00, 0x05, 0x9E, 0x07, 0x00, 0x05, 0xA0, 0x07, 0x00, 0x05, 0x9D, 0x07, 0x00, 0x05, 0x3A,
|
||||
0xFF, 0x00, 0x4C, 0x00, 0x11, 0xA1, 0x07, 0x00, 0x11, 0xA1, 0x06, 0x00, 0x11, 0xA1, 0x06, 0x00,
|
||||
0x11, 0xA1, 0x12, 0x00, 0x11, 0xA1, 0x62, 0x00, 0x01, 0x03, 0x01, 0x5D, 0x01, 0x95, 0x02, 0x9C,
|
||||
0x01, 0x99, 0x01, 0x66, 0x01, 0x14, 0x1D, 0x00, 0x05, 0x9F, 0x07, 0x00, 0x05, 0x9E, 0x07, 0x00,
|
||||
0x05, 0xA0, 0x07, 0x00, 0x05, 0x9D, 0x07, 0x00, 0x05, 0x3A, 0xFF, 0x00, 0x4B, 0x00, 0x11, 0xA1,
|
||||
0x06, 0x00, 0x12, 0xA1, 0x06, 0x00, 0x11, 0xA1, 0x06, 0x00, 0x11, 0xA1, 0x12, 0x00, 0x11, 0xA1,
|
||||
0x61, 0x00, 0x01, 0x3F, 0x01, 0x7C, 0x06, 0x9C, 0x01, 0x87, 0x01, 0x51, 0x1D, 0x00, 0x05, 0x9F,
|
||||
0x07, 0x00, 0x05, 0x9E, 0x07, 0x00, 0x05, 0xA0, 0x07, 0x00, 0x05, 0x9D, 0x07, 0x00, 0x05, 0x3A,
|
||||
0xFF, 0x00, 0x4A, 0x00, 0x11, 0xA1, 0x06, 0x00, 0x12, 0xA1, 0x06, 0x00, 0x11, 0xA1, 0x06, 0x00,
|
||||
0x11, 0xA1, 0x12, 0x00, 0x11, 0xA1, 0x5F, 0x00, 0x01, 0x17, 0x01, 0x66, 0x01, 0x9A, 0x09, 0x9C,
|
||||
0x01, 0x75, 0x01, 0x36, 0x1C, 0x00, 0x05, 0x9F, 0x07, 0x00, 0x05, 0x9E, 0x07, 0x00, 0x05, 0xA0,
|
||||
0x07, 0x00, 0x05, 0x9D, 0x07, 0x00, 0x05, 0x3A, 0xFF, 0x00, 0x4A, 0x00, 0x0F, 0xA1, 0x07, 0x00,
|
||||
0x12, 0xA1, 0x07, 0x00, 0x0F, 0xA1, 0x08, 0x00, 0x0F, 0xA1, 0x14, 0x00, 0x0F, 0xA1, 0x5F, 0x00,
|
||||
0x01, 0x4A, 0x01, 0x83, 0x0C, 0x9C, 0x01, 0x99, 0x01, 0x66, 0x01, 0x14, 0x1B, 0x00, 0x05, 0x9F,
|
||||
0x07, 0x00, 0x05, 0x9E, 0x07, 0x00, 0x05, 0xA0, 0x07, 0x00, 0x05, 0x9D, 0x07, 0x00, 0x05, 0x3A,
|
||||
0xFF, 0x00, 0x4A, 0x00, 0x0D, 0xA1, 0x08, 0x00, 0x12, 0xA1, 0x08, 0x00, 0x0D, 0xA1, 0x0A, 0x00,
|
||||
0x0D, 0xA1, 0x16, 0x00, 0x0D, 0xA1, 0x5E, 0x00, 0x01, 0x24, 0x01, 0x6C, 0x01, 0x9B, 0x05, 0x9C,
|
||||
0x01, 0x8C, 0x01, 0x69, 0x01, 0x50, 0x01, 0x7A, 0x06, 0x9C, 0x01, 0x87, 0x01, 0x51, 0x1B, 0x00,
|
||||
0x05, 0x9F, 0x07, 0x00, 0x05, 0x9E, 0x07, 0x00, 0x05, 0xA0, 0x07, 0x00, 0x05, 0x9D, 0x07, 0x00,
|
||||
0x05, 0x3A, 0xFF, 0x00, 0xFF, 0x00, 0x1D, 0x00, 0x01, 0x54, 0x01, 0x8F, 0x05, 0x9C, 0x01, 0x91,
|
||||
0x01, 0x6E, 0x01, 0x59, 0x01, 0x58, 0x02, 0x30, 0x01, 0x50, 0x01, 0x7A, 0x06, 0x9C, 0x01, 0x75,
|
||||
0x01, 0x36, 0x1A, 0x00, 0x05, 0x9F, 0x07, 0x00, 0x05, 0x9E, 0x07, 0x00, 0x05, 0xA0, 0x07, 0x00,
|
||||
0x05, 0x9D, 0x07, 0x00, 0x05, 0x3A, 0xFF, 0x00, 0xFF, 0x00, 0x1A, 0x00, 0x01, 0x36, 0x01, 0x78,
|
||||
0x05, 0x9C, 0x01, 0x96, 0x01, 0x70, 0x01, 0x5B, 0x03, 0x58, 0x04, 0x30, 0x01, 0x50, 0x01, 0x7A,
|
||||
0x05, 0x9C, 0x01, 0x99, 0x01, 0x66, 0x01, 0x14, 0x19, 0x00, 0x05, 0x9F, 0x07, 0x00, 0x05, 0x9E,
|
||||
0x07, 0x00, 0x05, 0xA0, 0x07, 0x00, 0x05, 0x9D, 0x07, 0x00, 0x05, 0x3A, 0xFF, 0x00, 0xFF, 0x00,
|
||||
0x17, 0x00, 0x01, 0x09, 0x01, 0x60, 0x01, 0x97, 0x04, 0x9C, 0x01, 0x9A, 0x01, 0x74, 0x01, 0x5C,
|
||||
0x05, 0x58, 0x06, 0x30, 0x01, 0x50, 0x01, 0x7A, 0x05, 0x9C, 0x01, 0x87, 0x01, 0x51, 0x19, 0x00,
|
||||
0x05, 0x9F, 0x07, 0x00, 0x05, 0x9E, 0x07, 0x00, 0x05, 0xA0, 0x07, 0x00, 0x05, 0x9D, 0x07, 0x00,
|
||||
0x05, 0x3A, 0xFF, 0x00, 0xFF, 0x00, 0x15, 0x00, 0x01, 0x43, 0x01, 0x7F, 0x04, 0x9C, 0x01, 0x9B,
|
||||
0x01, 0x79, 0x01, 0x5F, 0x07, 0x58, 0x08, 0x30, 0x01, 0x50, 0x01, 0x7A, 0x05, 0x9C, 0x01, 0x75,
|
||||
0x01, 0x36, 0x18, 0x00, 0x05, 0x9F, 0x07, 0x00, 0x05, 0x9E, 0x07, 0x00, 0x05, 0xA0, 0x07, 0x00,
|
||||
0x05, 0x9D, 0x07, 0x00, 0x05, 0x3A, 0xFF, 0x00, 0xFF, 0x00, 0x12, 0x00, 0x01, 0x1A, 0x01, 0x67,
|
||||
0x01, 0x9B, 0x04, 0x9C, 0x01, 0x7D, 0x01, 0x62, 0x09, 0x58, 0x0A, 0x30, 0x01, 0x50, 0x01, 0x7A,
|
||||
0x04, 0x9C, 0x01, 0x99, 0x01, 0x66, 0x01, 0x14, 0x17, 0x00, 0x05, 0x9F, 0x07, 0x00, 0x05, 0x9E,
|
||||
0x07, 0x00, 0x05, 0xA0, 0x07, 0x00, 0x05, 0x9D, 0x07, 0x00, 0x05, 0x3A, 0xFF, 0x00, 0xFF, 0x00,
|
||||
0x10, 0x00, 0x01, 0x51, 0x01, 0x8A, 0x04, 0x9C, 0x01, 0x80, 0x01, 0x65, 0x0B, 0x58, 0x0C, 0x30,
|
||||
0x01, 0x50, 0x01, 0x7A, 0x04, 0x9C, 0x01, 0x87, 0x01, 0x51, 0x17, 0x00, 0x05, 0x9F, 0x07, 0x00,
|
||||
0x05, 0x9E, 0x07, 0x00, 0x05, 0xA0, 0x07, 0x00, 0x05, 0x9D, 0x07, 0x00, 0x05, 0x3A, 0xFF, 0x00,
|
||||
0xFF, 0x00, 0x0F, 0x00, 0x06, 0x9C, 0x0D, 0x58, 0x0E, 0x30, 0x06, 0x9C, 0x18, 0x00, 0x05, 0x9F,
|
||||
0x07, 0x00, 0x05, 0x9E, 0x07, 0x00, 0x05, 0xA0, 0x07, 0x00, 0x05, 0x9D, 0x07, 0x00, 0x05, 0x3A,
|
||||
0xFF, 0x00, 0xFF, 0x00, 0x0E, 0x00, 0x06, 0x9C, 0x0D, 0x58, 0x0E, 0x30, 0x06, 0x9C, 0x19, 0x00,
|
||||
0x05, 0x9F, 0x07, 0x00, 0x05, 0x9E, 0x07, 0x00, 0x05, 0xA0, 0x07, 0x00, 0x05, 0x9D, 0x07, 0x00,
|
||||
0x05, 0x3A, 0xFF, 0x00, 0xFF, 0x00, 0x0D, 0x00, 0x06, 0x9C, 0x0D, 0x58, 0x0E, 0x30, 0x06, 0x9C,
|
||||
0x1A, 0x00, 0x05, 0x9F, 0x07, 0x00, 0x05, 0x9E, 0x07, 0x00, 0x05, 0xA0, 0x07, 0x00, 0x05, 0x9D,
|
||||
0x07, 0x00, 0xFF, 0x3A, 0xC3, 0x3A, 0x4D, 0x00, 0x06, 0x9C, 0x0D, 0x58, 0x0E, 0x30, 0x06, 0x9C,
|
||||
0x1B, 0x00, 0x05, 0x9F, 0x07, 0x00, 0x05, 0x9E, 0x07, 0x00, 0x05, 0xA0, 0x07, 0x00, 0x05, 0x9D,
|
||||
0x07, 0x00, 0xFF, 0x3A, 0xC2, 0x3A, 0x4D, 0x00, 0x06, 0x9C, 0x0D, 0x58, 0x0E, 0x30, 0x06, 0x9C,
|
||||
0x1C, 0x00, 0x05, 0x9F, 0x07, 0x00, 0x05, 0x9E, 0x07, 0x00, 0x05, 0xA0, 0x07, 0x00, 0x05, 0x9D,
|
||||
0x07, 0x00, 0xFF, 0x3A, 0xC1, 0x3A, 0x4D, 0x00, 0x06, 0x9C, 0x0D, 0x58, 0x0E, 0x30, 0x06, 0x9C,
|
||||
0x1D, 0x00, 0x05, 0x9F, 0x07, 0x00, 0x05, 0x9E, 0x07, 0x00, 0x05, 0xA0, 0x07, 0x00, 0x05, 0x9D,
|
||||
0x07, 0x00, 0xFF, 0x3A, 0xC0, 0x3A, 0x4D, 0x00, 0x06, 0x9C, 0x0D, 0x58, 0x0E, 0x30, 0x06, 0x9C,
|
||||
0x1E, 0x00, 0x05, 0x9F, 0x07, 0x00, 0x05, 0x9E, 0x07, 0x00, 0x05, 0xA0, 0x07, 0x00, 0x05, 0x9D,
|
||||
0xFF, 0x00, 0xFF, 0x00, 0x14, 0x00, 0x06, 0x9C, 0x0D, 0x58, 0x0E, 0x30, 0x06, 0x9C, 0x1F, 0x00,
|
||||
0x05, 0x9F, 0x07, 0x00, 0x05, 0x9E, 0x07, 0x00, 0x05, 0xA0, 0x07, 0x00, 0x05, 0x9D, 0xFF, 0x00,
|
||||
0xFF, 0x00, 0x13, 0x00, 0x06, 0x9C, 0x0D, 0x58, 0x0E, 0x30, 0x06, 0x9C, 0x20, 0x00, 0x05, 0x9F,
|
||||
0x07, 0x00, 0x05, 0x9E, 0x07, 0x00, 0x05, 0xA0, 0x07, 0x00, 0x05, 0x9D, 0xFF, 0x00, 0xFF, 0x00,
|
||||
0x12, 0x00, 0x06, 0x9C, 0x0D, 0x58, 0x0E, 0x30, 0x06, 0x9C, 0x21, 0x00, 0x05, 0x9F, 0x07, 0x00,
|
||||
0x05, 0x9E, 0x07, 0x00, 0x05, 0xA0, 0x07, 0x00, 0x05, 0x9D, 0xFF, 0x00, 0xFF, 0x00, 0x11, 0x00,
|
||||
0x06, 0x9C, 0x0D, 0x58, 0x0E, 0x30, 0x06, 0x9C, 0x22, 0x00, 0x05, 0x9F, 0x07, 0x00, 0x05, 0x9E,
|
||||
0x07, 0x00, 0x05, 0xA0, 0x07, 0x00, 0xFF, 0x9D, 0xC7, 0x9D, 0x4D, 0x00, 0x06, 0x9C, 0x0D, 0x58,
|
||||
0x0E, 0x30, 0x06, 0x9C, 0x23, 0x00, 0x05, 0x9F, 0x07, 0x00, 0x05, 0x9E, 0x07, 0x00, 0x05, 0xA0,
|
||||
0x07, 0x00, 0xFF, 0x9D, 0xC6, 0x9D, 0x4D, 0x00, 0x06, 0x9C, 0x0B, 0x58, 0x01, 0x55, 0x01, 0x37,
|
||||
0x01, 0x11, 0x01, 0x2C, 0x0C, 0x30, 0x06, 0x9C, 0x24, 0x00, 0x05, 0x9F, 0x07, 0x00, 0x05, 0x9E,
|
||||
0x07, 0x00, 0x05, 0xA0, 0x07, 0x00, 0xFF, 0x9D, 0xC5, 0x9D, 0x4D, 0x00, 0x06, 0x9C, 0x0A, 0x58,
|
||||
0x01, 0x4B, 0x01, 0x20, 0x01, 0x0E, 0x01, 0x00, 0x01, 0x04, 0x01, 0x1F, 0x0B, 0x30, 0x06, 0x9C,
|
||||
0x25, 0x00, 0x05, 0x9F, 0x07, 0x00, 0x05, 0x9E, 0x07, 0x00, 0x05, 0xA0, 0x07, 0x00, 0xFF, 0x9D,
|
||||
0xC4, 0x9D, 0x4D, 0x00, 0x06, 0x9C, 0x08, 0x58, 0x01, 0x56, 0x01, 0x3E, 0x01, 0x0F, 0x02, 0x0E,
|
||||
0x03, 0x00, 0x01, 0x0C, 0x01, 0x2A, 0x09, 0x30, 0x06, 0x9C, 0x26, 0x00, 0x05, 0x9F, 0x07, 0x00,
|
||||
0x05, 0x9E, 0x07, 0x00, 0x05, 0xA0, 0xFF, 0x00, 0xFF, 0x00, 0x18, 0x00, 0x06, 0x9C, 0x07, 0x58,
|
||||
0x01, 0x4E, 0x01, 0x26, 0x04, 0x0E, 0x04, 0x00, 0x01, 0x02, 0x01, 0x1B, 0x01, 0x2F, 0x07, 0x30,
|
||||
0x06, 0x9C, 0x27, 0x00, 0x05, 0x9F, 0x07, 0x00, 0x05, 0x9E, 0x07, 0x00, 0x05, 0xA0, 0xFF, 0x00,
|
||||
0xFF, 0x00, 0x17, 0x00, 0x06, 0x9C, 0x05, 0x58, 0x01, 0x57, 0x01, 0x44, 0x01, 0x12, 0x05, 0x0E,
|
||||
0x06, 0x00, 0x01, 0x08, 0x01, 0x27, 0x06, 0x30, 0x06, 0x9C, 0x28, 0x00, 0x05, 0x9F, 0x07, 0x00,
|
||||
0x05, 0x9E, 0x07, 0x00, 0x05, 0xA0, 0xFF, 0x00, 0xFF, 0x00, 0x16, 0x00, 0x06, 0x9C, 0x01, 0x80,
|
||||
0x01, 0x65, 0x02, 0x58, 0x01, 0x52, 0x01, 0x2F, 0x07, 0x0E, 0x07, 0x00, 0x01, 0x01, 0x01, 0x18,
|
||||
0x01, 0x2D, 0x02, 0x30, 0x01, 0x50, 0x01, 0x7A, 0x06, 0x9C, 0x29, 0x00, 0x05, 0x9F, 0x07, 0x00,
|
||||
0x05, 0x9E, 0x07, 0x00, 0x05, 0xA0, 0xFF, 0x00, 0xFF, 0x00, 0x15, 0x00, 0x08, 0x9C, 0x01, 0x7D,
|
||||
0x01, 0x4D, 0x01, 0x15, 0x08, 0x0E, 0x09, 0x00, 0x01, 0x06, 0x01, 0x47, 0x01, 0x7A, 0x08, 0x9C,
|
||||
0x2A, 0x00, 0x05, 0x9F, 0x07, 0x00, 0x05, 0x9E, 0x07, 0x00, 0xFF, 0xA0, 0xCB, 0xA0, 0x4D, 0x00,
|
||||
0x07, 0x9C, 0x01, 0x8E, 0x01, 0x56, 0x01, 0x2A, 0x01, 0x21, 0x01, 0x11, 0x07, 0x0E, 0x08, 0x00,
|
||||
0x01, 0x0A, 0x01, 0x21, 0x01, 0x2B, 0x01, 0x5E, 0x01, 0x92, 0x07, 0x9C, 0x2B, 0x00, 0x05, 0x9F,
|
||||
0x07, 0x00, 0x05, 0x9E, 0x07, 0x00, 0xFF, 0xA0, 0xCA, 0xA0, 0x4D, 0x00, 0x06, 0x9C, 0x01, 0x73,
|
||||
0x01, 0x38, 0x03, 0x2A, 0x01, 0x29, 0x01, 0x1E, 0x01, 0x10, 0x05, 0x0E, 0x06, 0x00, 0x01, 0x0A,
|
||||
0x01, 0x21, 0x04, 0x2A, 0x01, 0x3D, 0x01, 0x73, 0x06, 0x9C, 0x2C, 0x00, 0x05, 0x9F, 0x07, 0x00,
|
||||
0x05, 0x9E, 0x07, 0x00, 0xFF, 0xA0, 0xC9, 0xA0, 0x4D, 0x00, 0x06, 0x9C, 0x01, 0x77, 0x01, 0x41,
|
||||
0x05, 0x2A, 0x01, 0x27, 0x01, 0x1C, 0x01, 0x0F, 0x03, 0x0E, 0x04, 0x00, 0x01, 0x0A, 0x01, 0x21,
|
||||
0x06, 0x2A, 0x01, 0x45, 0x01, 0x77, 0x06, 0x9C, 0x2D, 0x00, 0x05, 0x9F, 0x07, 0x00, 0x05, 0x9E,
|
||||
0x07, 0x00, 0xFF, 0xA0, 0xC8, 0xA0, 0x4D, 0x00, 0x07, 0x9C, 0x01, 0x98, 0x01, 0x68, 0x01, 0x32,
|
||||
0x05, 0x2A, 0x01, 0x27, 0x01, 0x19, 0x02, 0x0E, 0x02, 0x00, 0x01, 0x0A, 0x01, 0x21, 0x06, 0x2A,
|
||||
0x01, 0x37, 0x01, 0x6B, 0x01, 0x9A, 0x07, 0x9C, 0x2E, 0x00, 0x05, 0x9F, 0x07, 0x00, 0x05, 0x9E,
|
||||
0xFF, 0x00, 0xFF, 0x00, 0x1C, 0x00, 0x09, 0x9C, 0x01, 0x86, 0x01, 0x52, 0x06, 0x2A, 0x01, 0x25,
|
||||
0x01, 0x16, 0x01, 0x0B, 0x01, 0x22, 0x06, 0x2A, 0x01, 0x2F, 0x01, 0x61, 0x01, 0x92, 0x09, 0x9C,
|
||||
0x2F, 0x00, 0x05, 0x9F, 0x07, 0x00, 0x05, 0x9E, 0xFF, 0x00, 0xFF, 0x00, 0x1B, 0x00, 0x01, 0x4C,
|
||||
0x01, 0x81, 0x09, 0x9C, 0x01, 0x71, 0x01, 0x3C, 0x0D, 0x2A, 0x01, 0x53, 0x01, 0x84, 0x09, 0x9C,
|
||||
0x01, 0x82, 0x01, 0x4F, 0x30, 0x00, 0x05, 0x9F, 0x07, 0x00, 0x05, 0x9E, 0xFF, 0x00, 0xFF, 0x00,
|
||||
0x1B, 0x00, 0x01, 0x0D, 0x01, 0x60, 0x01, 0x93, 0x08, 0x9C, 0x01, 0x94, 0x01, 0x64, 0x01, 0x2C,
|
||||
0x09, 0x2A, 0x01, 0x45, 0x01, 0x77, 0x09, 0x9C, 0x01, 0x8B, 0x01, 0x5D, 0x01, 0x07, 0x32, 0x00,
|
||||
0x05, 0x9F, 0x07, 0x00, 0x05, 0x9E, 0xFF, 0x00, 0xFF, 0x00, 0x1C, 0x00, 0x01, 0x28, 0x01, 0x6A,
|
||||
0x01, 0x9B, 0x08, 0x9C, 0x01, 0x7D, 0x01, 0x48, 0x06, 0x2A, 0x01, 0x37, 0x01, 0x6B, 0x01, 0x9A,
|
||||
0x08, 0x9C, 0x01, 0x97, 0x01, 0x66, 0x01, 0x17, 0x35, 0x00, 0x05, 0x9F, 0x07, 0x00, 0xFF, 0x9E,
|
||||
0xCF, 0x9E, 0x52, 0x00, 0x01, 0x42, 0x01, 0x7B, 0x08, 0x9C, 0x01, 0x9A, 0x01, 0x6D, 0x01, 0x34,
|
||||
0x02, 0x2A, 0x01, 0x2F, 0x01, 0x61, 0x01, 0x92, 0x08, 0x9C, 0x01, 0x9A, 0x01, 0x6C, 0x01, 0x2E,
|
||||
0x38, 0x00, 0x05, 0x9F, 0x07, 0x00, 0xFF, 0x9E, 0xCE, 0x9E, 0x54, 0x00, 0x01, 0x51, 0x01, 0x88,
|
||||
0x08, 0x9C, 0x01, 0x89, 0x01, 0x58, 0x01, 0x56, 0x01, 0x84, 0x09, 0x9C, 0x01, 0x75, 0x01, 0x39,
|
||||
0x3B, 0x00, 0x05, 0x9F, 0x07, 0x00, 0xFF, 0x9E, 0xCD, 0x9E, 0x55, 0x00, 0x01, 0x17, 0x01, 0x63,
|
||||
0x01, 0x97, 0x11, 0x9C, 0x01, 0x7E, 0x01, 0x49, 0x3E, 0x00, 0x05, 0x9F, 0x07, 0x00, 0xFF, 0x9E,
|
||||
0xCC, 0x9E, 0x57, 0x00, 0x01, 0x33, 0x01, 0x6F, 0x01, 0x9B, 0x0D, 0x9C, 0x01, 0x85, 0x01, 0x54,
|
||||
0x01, 0x03, 0x40, 0x00, 0x05, 0x9F, 0xFF, 0x00, 0xFF, 0x00, 0x2C, 0x00, 0x01, 0x46, 0x01, 0x7C,
|
||||
0x0A, 0x9C, 0x01, 0x90, 0x01, 0x63, 0x01, 0x13, 0x43, 0x00, 0x05, 0x9F, 0xFF, 0x00, 0xFF, 0x00,
|
||||
0x2C, 0x00, 0x01, 0x05, 0x01, 0x5A, 0x01, 0x8D, 0x06, 0x9C, 0x01, 0x99, 0x01, 0x67, 0x01, 0x23,
|
||||
0x46, 0x00, 0x05, 0x9F, 0xFF, 0x00, 0xFF, 0x00, 0x2D, 0x00, 0x01, 0x1D, 0x01, 0x66, 0x01, 0x99,
|
||||
0x02, 0x9C, 0x01, 0x9B, 0x01, 0x72, 0x01, 0x35, 0x49, 0x00, 0x05, 0x9F, 0xFF, 0x00, 0xFF, 0x00,
|
||||
0x2E, 0x00, 0x01, 0x3B, 0x01, 0x76, 0x01, 0x78, 0x01, 0x40, 0x4C, 0x00, 0xFF, 0x9F, 0xD3, 0x9F,
|
||||
0xAF, 0x00, 0xFF, 0x9F, 0xD2, 0x9F, 0xB0, 0x00, 0xFF, 0x9F, 0xD1, 0x9F, 0xB1, 0x00, 0xFF, 0x9F,
|
||||
0xD0, 0x9F, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00,
|
||||
0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00,
|
||||
0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00,
|
||||
0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00,
|
||||
0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00,
|
||||
0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00,
|
||||
0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00,
|
||||
0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00,
|
||||
0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00,
|
||||
0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x69, 0x00, 0x00, 0x00
|
||||
};
|
|
@ -38,7 +38,7 @@ void print_c(short channel, char c) {
|
|||
void print(short channel, const char * message) {
|
||||
TRACE1("print(%d,..)", channel);
|
||||
|
||||
short ret = sys_chan_write(channel, message, strlen(message));
|
||||
short ret = sys_chan_write(channel, (const unsigned char *)message, strlen(message));
|
||||
if (ret < 0)
|
||||
ERROR1("Error while printing: %d", ret);
|
||||
}
|
||||
|
@ -270,9 +270,7 @@ void dump_buffer(short channel, const unsigned char * buffer, short size, short
|
|||
c = buffer[i];
|
||||
|
||||
if (i % 16 == 0) {
|
||||
print(channel, " ");
|
||||
print(channel, ascii_buffer);
|
||||
print(channel, "\n");
|
||||
printf(" %s\n", ascii_buffer);
|
||||
|
||||
for (j = 0; j < 17; j++) {
|
||||
ascii_buffer[j] = 0;
|
||||
|
@ -281,11 +279,9 @@ void dump_buffer(short channel, const unsigned char * buffer, short size, short
|
|||
ascii_idx = 0;
|
||||
|
||||
if (labels == 1) {
|
||||
print_hex_16(channel, i);
|
||||
print(channel, ":");
|
||||
printf("%04X:", i);
|
||||
} else if (labels == 2) {
|
||||
print_hex_32(channel, (unsigned long)buffer + i);
|
||||
print(channel, ":");
|
||||
printf("%024lX:", (unsigned long)buffer + 1);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -296,15 +292,13 @@ void dump_buffer(short channel, const unsigned char * buffer, short size, short
|
|||
}
|
||||
|
||||
if ((i % 8) == 0) {
|
||||
print(channel, " ");
|
||||
printf(" ");
|
||||
}
|
||||
|
||||
print_hex_8(channel, c);
|
||||
printf("%02X", c);
|
||||
}
|
||||
|
||||
print(channel, " ");
|
||||
print(channel, ascii_buffer);
|
||||
print(channel, "\n");
|
||||
printf(" %s\n", ascii_buffer);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -1,13 +1,60 @@
|
|||
csources = $(wildcard *.c)
|
||||
cobjects = $(subst .c,.o,$(csources))
|
||||
|
||||
.PHONY: all
|
||||
all: $(cobjects)
|
||||
UNIT := C256U_PLUS
|
||||
|
||||
# Define OS-dependent variables
|
||||
|
||||
ifeq ($(OS),Windows_NT)
|
||||
RM = del /F/Q
|
||||
else
|
||||
RM = rm -f
|
||||
endif
|
||||
|
||||
# Define model-specific variables, including tools, source files, compiler flags, etc.
|
||||
|
||||
ifeq ($(UNIT),C256U)
|
||||
CC=cc65816
|
||||
AS=as65816
|
||||
AR=nlib
|
||||
|
||||
SRCS_FOR_UNIT=psg.c sid.c codec_c256.c
|
||||
CFLAGS_FOR_UNIT=-DMODEL=1 -DCPU=255 --target Foenix --code-model large --data-model large
|
||||
else ifeq ($(UNIT),C256U_PLUS)
|
||||
CC=cc65816
|
||||
AS=as65816
|
||||
AR=nlib
|
||||
|
||||
SRCS_FOR_UNIT=psg.c sid.c codec_c256.c
|
||||
CFLAGS_FOR_UNIT=-DMODEL=5 -DCPU=255 --target Foenix --code-model large --data-model large
|
||||
else ifeq ($(UNIT),C256_FMX)
|
||||
CC=cc65816
|
||||
AS=as65816
|
||||
AR=nlib
|
||||
|
||||
SRCS_FOR_UNIT=psg.c sid.c codec_c256.c
|
||||
CFLAGS_FOR_UNIT=-DMODEL=0 -DCPU=255 --target Foenix --code-model large --data-model large
|
||||
endif
|
||||
|
||||
INCLUDES=-I.. -I../include
|
||||
CFLAGS=$(INCLUDES) $(CFLAGS_FOR_UNIT) -l
|
||||
ASFLAGS=$(INCLUDES)
|
||||
|
||||
SRCS = $(SRCS_FOR_UNIT)
|
||||
OBJS = $(patsubst %.c,%.o,$(SRCS))
|
||||
OBJS4RM = $(subst /,\\,$(OBJS))
|
||||
|
||||
.PHONY: all clean
|
||||
|
||||
all: sound.a
|
||||
|
||||
# Build the devices library file for this model
|
||||
sound.a: $(OBJS)
|
||||
@echo $(OBJS)
|
||||
$(AR) $@ $^
|
||||
|
||||
# Build the object files from C
|
||||
%.o: %.c
|
||||
$(CC) -c -o $@ $< $(CFLAGS) $(DEFINES)
|
||||
|
||||
.PHONY: clean
|
||||
$(CC) $(CFLAGS) -o $@ $^
|
||||
|
||||
# Clean up after a build
|
||||
clean:
|
||||
$(RM) $(aobjects) $(cobjects)
|
||||
$(RM) $(OBJS4RM) sound.a *.lst
|
||||
|
|
57
src/snd/codec_c256.c
Normal file
57
src/snd/codec_c256.c
Normal file
|
@ -0,0 +1,57 @@
|
|||
/*
|
||||
* Definitions of functions to support the CODEC
|
||||
*/
|
||||
|
||||
#include "stdint.h"
|
||||
#include "sound_reg.h"
|
||||
#include "snd/codec.h"
|
||||
|
||||
static unsigned char volume = 0xff;
|
||||
|
||||
/**
|
||||
* @brief Send a value to a CODEC register
|
||||
*
|
||||
* @param data the register ID and data to write
|
||||
*/
|
||||
static void codec_write(uint16_t data) {
|
||||
*CODEC = data;
|
||||
*CODEC_WR_CTRL = 0x01;
|
||||
|
||||
while (*CODEC_WR_CTRL)
|
||||
;
|
||||
}
|
||||
|
||||
/*
|
||||
* Set the master digital volume
|
||||
*
|
||||
* Inputs:
|
||||
* vol = level of attenuation (0xff = full volume, 0x00 = mute)
|
||||
*/
|
||||
void codec_set_volume(unsigned char vol) {
|
||||
volume = vol;
|
||||
|
||||
codec_write(0x0A00 | (0xFF - vol));
|
||||
codec_write(0x0400 | (vol >> 1));
|
||||
}
|
||||
|
||||
/*
|
||||
* Return the current volume
|
||||
*/
|
||||
unsigned char codec_get_volume() {
|
||||
return volume;
|
||||
}
|
||||
|
||||
/*
|
||||
* Initialize the CODEC registers
|
||||
*/
|
||||
void init_codec() {
|
||||
codec_write(0x1A00); // R13 - Turn On Headphones
|
||||
codec_write(0x2A1F); // R21 - Enable All the Analog In
|
||||
codec_write(0x2301); // R17
|
||||
codec_write(0x2C07); // R22 - Enable all output sources
|
||||
codec_write(0x1402); // R10
|
||||
codec_write(0x1602); // R11
|
||||
codec_write(0x1845); // R12
|
||||
|
||||
codec_set_volume(0xff);
|
||||
}
|
|
@ -4,6 +4,7 @@
|
|||
|
||||
#include "psg.h"
|
||||
#include "sound_reg.h"
|
||||
#include "log.h"
|
||||
|
||||
/*
|
||||
* Mute all voices on the PSG
|
||||
|
@ -28,7 +29,7 @@ void psg_mute_all() {
|
|||
* voice = the number of the voice (0 - 3)
|
||||
* frequency = the frequency
|
||||
*/
|
||||
void psg_tone(short chip, unsigned short voice, int frequency) {
|
||||
void psg_tone(short chip, unsigned short voice, unsigned long frequency) {
|
||||
volatile unsigned char * port = PSG_PORT; /* By default: external */
|
||||
|
||||
if (voice < 3) {
|
||||
|
|
|
@ -18,7 +18,7 @@ extern void psg_mute_all();
|
|||
* voice = the number of the voice (0 - 3)
|
||||
* frequency = the frequency
|
||||
*/
|
||||
extern void psg_tone(short chip, unsigned short voice, int frequency);
|
||||
extern void psg_tone(short chip, unsigned short voice, unsigned long frequency);
|
||||
|
||||
/*
|
||||
* Set the attenuation of a voice
|
||||
|
|
|
@ -26,10 +26,12 @@ volatile unsigned char * sid_get_base(short sid) {
|
|||
switch (sid) {
|
||||
case 0:
|
||||
return SID_INT_N_V1_FREQ_LO;
|
||||
#if MODEL == MODEL_FOENIX_A2560U || MODEL == MODEL_FOENIX_A2560K || MODEL == MODEL_FOENIX_GENX || MODEL == MODEL_FOENIX_A2560X
|
||||
case 1:
|
||||
return SID_INT_L_V1_FREQ_LO;
|
||||
case 2:
|
||||
return SID_INT_R_V1_FREQ_LO;
|
||||
#endif
|
||||
#if MODEL == MODEL_FOENIX_A2560K || MODEL == MODEL_FOENIX_GENX || MODEL == MODEL_FOENIX_A2560X
|
||||
case 3:
|
||||
return SID_EXT_L_V1_FREQ_LO;
|
||||
|
@ -73,6 +75,58 @@ void sid_init_all() {
|
|||
|
||||
}
|
||||
|
||||
#if MODEL == MODEL_FOENIX_FMX || MODEL == MODEL_FOENIX_C256U || MODEL == MODEL_FOENIX_C256U_PLUS
|
||||
/*
|
||||
* Test the internal SID implementation
|
||||
*/
|
||||
void sid_test_internal() {
|
||||
volatile struct s_sid * sid = 0;
|
||||
|
||||
sid = (struct s_sid *)sid_get_base(0);
|
||||
if (sid) {
|
||||
sid->v1.attack_decay = 0x29;
|
||||
sid->v2.attack_decay = 0x29;
|
||||
sid->v2.attack_decay = 0x29;
|
||||
|
||||
sid->v1.sustain_release = 0x1f;
|
||||
sid->v2.sustain_release = 0x1f;
|
||||
sid->v3.sustain_release = 0x1f;
|
||||
|
||||
sid->mode_volume = 0x0f;
|
||||
|
||||
sid->v1.frequency = 0x1660;
|
||||
sid->v1.control = 0x11;
|
||||
|
||||
// jiffies = rtc_get_jiffies() + 3;
|
||||
// while (jiffies > rtc_get_jiffies());
|
||||
|
||||
// sid->v2.frequency = 0x0831;
|
||||
// sid->v2.control = 0x11;
|
||||
|
||||
// jiffies = rtc_get_jiffies() + 3;
|
||||
// while (jiffies > rtc_get_jiffies());
|
||||
|
||||
// sid->v3.frequency = 0x2187;
|
||||
// sid->v3.control = 0x11;
|
||||
|
||||
// jiffies = rtc_get_jiffies() + 25;
|
||||
// while (jiffies > rtc_get_jiffies());
|
||||
|
||||
// sid->v1.control = 0x10;
|
||||
// jiffies = rtc_get_jiffies() + 3;
|
||||
// while (jiffies > rtc_get_jiffies());
|
||||
|
||||
// sid->v2.control = 0x10;
|
||||
// jiffies = rtc_get_jiffies() + 3;
|
||||
// while (jiffies > rtc_get_jiffies());
|
||||
|
||||
// sid->v3.control = 0x10;
|
||||
|
||||
// sid->mode_volume = 0;
|
||||
}
|
||||
}
|
||||
|
||||
#else
|
||||
/*
|
||||
* Test the internal SID implementation
|
||||
*/
|
||||
|
@ -161,6 +215,7 @@ void sid_test_internal() {
|
|||
*SID_INT_L_MODE_VOL = 0;
|
||||
*SID_INT_R_MODE_VOL = 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
#if HAS_EXTERNAL_SIDS
|
||||
void sid_test_external() {
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
#include "sys_general.h"
|
||||
#include "gabe_reg.h"
|
||||
#include "exp_reg.h"
|
||||
|
||||
/*
|
||||
* Fill out a s_MODEL_info structure with the information about the current system
|
||||
|
@ -85,6 +86,58 @@ void sys_get_information(p_sys_info info) {
|
|||
info->fpga_version = *FPGA_VER;
|
||||
info->fpga_subver = *FPGA_SUBVER;
|
||||
|
||||
#elif MODEL == MODEL_FOENIX_FMX || MODEL == MODEL_FOENIX_C256U || MODEL == MODEL_FOENIX_C256U_PLUS
|
||||
machine_id = GABE_SYS_STAT->machine_id;
|
||||
cpu = CPU_WDC65816;
|
||||
clock_speed = SYSCLK_14MHZ;
|
||||
|
||||
info->has_expansion_card = (GABE_SYS_STAT->no_expansion) ? 1 : 0;
|
||||
info->has_hard_drive = (*GABE_DIP_REG & HD_INSTALLED) ? 0 : 1;
|
||||
info->has_ethernet = 0;
|
||||
info->screens = 1;
|
||||
|
||||
if (info->has_expansion_card) {
|
||||
// If an expansion card is present, find out what it is
|
||||
if (EXP_CARD_INFO->vendor_id == EXP_VENDOR_FOENIX) {
|
||||
switch (EXP_CARD_INFO->card_id) {
|
||||
case EXP_CARD_C100_ESID:
|
||||
// The ESID is plugged in, we add the SIDs and the ethernet port
|
||||
info->has_ethernet = 1;
|
||||
break;
|
||||
|
||||
case EXP_CARD_C200_EVID:
|
||||
// The EVID is plugged in, we add the second screen and the ethernet port
|
||||
info->has_ethernet = 1;
|
||||
info->screens = 2;
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
info->fpga_model = GABE_VERSION->model;
|
||||
info->fpga_version = GABE_VERSION->version;
|
||||
info->fpga_subver = GABE_VERSION->subversion;
|
||||
|
||||
switch (machine_id) {
|
||||
case MODEL_FOENIX_FMX:
|
||||
info->has_floppy = 1;
|
||||
info->system_ram_size = 4l * 1024l * 1024l;
|
||||
break;
|
||||
|
||||
case MODEL_FOENIX_C256U_PLUS:
|
||||
info->has_floppy = 0;
|
||||
info->system_ram_size = 4l * 1024l * 1024l;
|
||||
break;
|
||||
|
||||
default:
|
||||
info->has_floppy = 0;
|
||||
info->system_ram_size = 2l * 1024l * 1024l;
|
||||
break;
|
||||
}
|
||||
|
||||
#else
|
||||
machine_id = 0xFF;
|
||||
cpu = CPU_M68000;
|
||||
|
@ -193,7 +246,7 @@ void sys_get_information(p_sys_info info) {
|
|||
break;
|
||||
|
||||
case CPU_MC68060:
|
||||
info->cpu_name = "MC68xx060"
|
||||
info->cpu_name = "MC68xx060";
|
||||
break;
|
||||
|
||||
default:
|
||||
|
|
|
@ -51,25 +51,25 @@
|
|||
* Structure to describe the hardware
|
||||
*/
|
||||
typedef struct s_sys_info {
|
||||
unsigned short mcp_version; /* Current version of the MCP kernel */
|
||||
unsigned short mcp_rev; /* Current revision, or sub-version of the MCP kernel */
|
||||
unsigned short mcp_build; /* Current vuild # of the MCP kernel */
|
||||
unsigned short model; /* Code to say what model of machine this is */
|
||||
unsigned short sub_model; /* 0x00 = PB, 0x01 = LB, 0x02 = CUBE */
|
||||
uint16_t mcp_version; /* Current version of the MCP kernel */
|
||||
uint16_t mcp_rev; /* Current revision, or sub-version of the MCP kernel */
|
||||
uint16_t mcp_build; /* Current vuild # of the MCP kernel */
|
||||
uint16_t model; /* Code to say what model of machine this is */
|
||||
uint16_t sub_model; /* 0x00 = PB, 0x01 = LB, 0x02 = CUBE */
|
||||
const char * model_name; /* Human readable name of the model of the computer */
|
||||
unsigned short cpu; /* Code to say which CPU is running */
|
||||
uint16_t cpu; /* Code to say which CPU is running */
|
||||
const char * cpu_name; /* Human readable name for the CPU */
|
||||
unsigned int cpu_clock_khz; /* Speed of the CPU clock in KHz */
|
||||
unsigned long fpga_date; /* YYYYMMDD */
|
||||
unsigned long fpga_model; /* FPGA model number */
|
||||
unsigned short fpga_version; /* FPGA version */
|
||||
unsigned short fpga_subver; /* FPGA sub-version */
|
||||
long system_ram_size; /* The number of bytes of system RAM on the board */
|
||||
uint32_t cpu_clock_khz; /* Speed of the CPU clock in KHz */
|
||||
uint32_t fpga_date; /* YYYYMMDD */
|
||||
uint16_t fpga_model; /* FPGA model number */
|
||||
uint16_t fpga_version; /* FPGA version */
|
||||
uint16_t fpga_subver; /* FPGA sub-version */
|
||||
uint32_t system_ram_size; /* The number of bytes of system RAM on the board */
|
||||
bool has_floppy; /* TRUE if the board has a floppy drive installed */
|
||||
bool has_hard_drive; /* TRUE if the board has a PATA device installed */
|
||||
bool has_expansion_card; /* TRUE if an expansion card is installed on the device */
|
||||
bool has_ethernet; /* TRUE if an ethernet port is present */
|
||||
unsigned short screens; /* How many screens are on this computer */
|
||||
uint16_t screens; /* How many screens are on this computer */
|
||||
} t_sys_info, *p_sys_info;
|
||||
|
||||
/*
|
||||
|
|
|
@ -1,8 +0,0 @@
|
|||
@echo off
|
||||
REM Upload a binary file to the C256 Foenix
|
||||
|
||||
if [%2%]==[] (
|
||||
python C256Mgr\c256mgr.py --binary %1
|
||||
) ELSE (
|
||||
python C256Mgr\c256mgr.py --binary %1 --address %2
|
||||
)
|
|
@ -1,4 +0,0 @@
|
|||
@echo off
|
||||
REM Upload an SREC file to the C256 Foenix
|
||||
|
||||
python C256Mgr\c256mgr.py --upload-srec %1
|
Loading…
Reference in a new issue