commit
84eed957e4
|
@ -8,3 +8,4 @@
|
|||
*.bin
|
||||
bug/*
|
||||
cc65/*
|
||||
.vscode/*
|
||||
|
|
276
README.md
276
README.md
|
@ -1,24 +1,272 @@
|
|||
# apple1-videocard-lib
|
||||
|
||||
Library and demos for the Apple-1 TMS9918 video card by P-LAB.
|
||||
Library and demos for the "Apple-1 Graphic Card" by P-LAB,
|
||||
featuring the TMS9918 Video Display Processor by Texas Instruments.
|
||||
|
||||
## Repo structure
|
||||
|
||||
# Building for the "Juke Box" EPROM expansion
|
||||
```
|
||||
demos/
|
||||
demo/ demo program that makes use of the library
|
||||
picshow/ demo program that shows a picture in bitmap mode
|
||||
tetris/ a game
|
||||
docs/ TMS9918 and Apple-1 manuals
|
||||
kickc/ target configuration files for KickC
|
||||
lib/ the library files to include in your project
|
||||
tools/ some build tools
|
||||
```
|
||||
|
||||
The demo contained in the repo are meant to be launched from the Apple-1 "Juke Box"
|
||||
EPROM expansion at address $4000. The executables are built according to the
|
||||
following memory map:
|
||||
## Introduction
|
||||
|
||||
$0000-$00FF zero page: holds most of C program variables
|
||||
$0280-$0FFF low RAM space: C program "Data" segment
|
||||
$4000-$7581 EPROM (Juke Box): C program "Code" segment
|
||||
$7582-$7FFF EPROM (Juke Box): C program "Data" segment (startup values)
|
||||
The library is a set of C routines that make very easy
|
||||
to use the TMS9918 on the Apple-1. It is intended to work
|
||||
with the "Apple-1 Graphic Card" board by [P-LAB]() or any
|
||||
other video card that maps the TMS9918 in the `$CC00`-`$CC01`
|
||||
memory range of the Apple-1.
|
||||
|
||||
The build script "mkeprom.js" creates a 16K binary file to be placed on the
|
||||
EPROM where the "Data" segment startup values are put at the end of the file itself.
|
||||
The user program need to manually copy such data from EPROM to low RAM once after
|
||||
the `main()` is launched. That can be easily done by simply calling the library
|
||||
function `apple1_eprom_init()`.
|
||||
The library is written in C with [KickC](https://gitlab.com/camelot/kickc/-/releases), a very efficient 6502 C compiler.
|
||||
|
||||
## Choice of the screen mode
|
||||
|
||||
The library supports screen modes 1 and 2 only (screen 0 and screen 3 not
|
||||
being very useful). Both are 256x192 pixels but there are some differences
|
||||
you should consider when evaluating which mode to use:
|
||||
|
||||
- Screen 1: there are 256 tiles that can be written very quickly on the
|
||||
screen, but the color choice is limited to 8 consecutive tiles for each
|
||||
color in the palette. It's commonly used for text applications with
|
||||
limited colors.
|
||||
|
||||
- Screen 2: you can address every pixel on the screen with a limitation
|
||||
of 2 colors per line within an 8x8 tile grid. It's commonly used for bitmapped
|
||||
graphic or slow-but-colorful text.
|
||||
|
||||
Both screen modes support 32 sprites.
|
||||
|
||||
### Working with screen 1
|
||||
|
||||
Some example code:
|
||||
```c
|
||||
// *** first we set the SCREEN 1 mode
|
||||
|
||||
tms_init_regs(SCREEN1_TABLE); // initializes the registers with SCREEN 1 precalculated values
|
||||
screen1_prepare(); // prepares the screen to be used, loads a useful 8x8 ASCII font
|
||||
tms_set_color(COLOR_VIOLET); // sets border color to violet (see tms9918.h for the list of all colors)
|
||||
|
||||
// *** then we can use it
|
||||
|
||||
screen1_cls(); // clears the screen
|
||||
screen1_putc('A'); // writes the character "A"
|
||||
screen1_putc(CHR_BACKSPACE); // goes back 1 character
|
||||
screen1_putc('B'); // overwrites a "B" over it
|
||||
|
||||
// writes "A" in the bottom-right corner, causing the screen to scroll
|
||||
screen1_locate(31,23);
|
||||
screen1_putc("A");
|
||||
|
||||
// some printing
|
||||
screen1_puts(CLS "Hello world"); // CLS, REVERSE_ON, REVERSE_OFF
|
||||
screen1_puts(REVERSE_ON "reverse" REVERSE_OFF); // are macros defined in tms_screen1.h
|
||||
screen1_puts("Line1\nLine2"); // '\n' is also supported
|
||||
|
||||
// simple string input from the keyboard (editing with CTRL-H is also supported)
|
||||
char buffer[32];
|
||||
screen1_strinput(buffer, 32);
|
||||
screen1_prints("you wrote:");
|
||||
screen1_prints(buffer);
|
||||
```
|
||||
|
||||
### Working with screen 2
|
||||
|
||||
Some example code:
|
||||
```c
|
||||
// initializes the registers with SCREEN 2 precalculated values
|
||||
tms_init_regs(SCREEN2_TABLE);
|
||||
|
||||
// sometimes two colors need to be packed into a single byte
|
||||
// you can easily do that with the FG_BG() macro:
|
||||
byte mycolor = FG_BG(COLOR_BLACK,COLOR_WHITE);
|
||||
|
||||
// prepares the screeen to be used as a bitmap with default colors black on white
|
||||
screen2_init_bitmap(mycolor);
|
||||
|
||||
// plots a pixel in the middle of the screen
|
||||
screen2_plot(128,96);
|
||||
|
||||
// and erases it:
|
||||
screen2_plot_mode = PLOT_MODE_RESET; // PLOT_MODE_INVERT is also supported
|
||||
screen2_plot(128,96);
|
||||
screen2_plot_mode = PLOT_MODE_SET;
|
||||
|
||||
// draws a diagonal line
|
||||
screen2_line(0,0,255,191);
|
||||
|
||||
// writes a character from the embedded FONT
|
||||
byte col = FB_BG(COLOR_DARK_RED,COLOR_LIGH_YELLOW);
|
||||
screen2_putc('A', 31, 23, col);
|
||||
|
||||
// writes a string
|
||||
screen2_puts("HELLO", 16, 12, col);
|
||||
|
||||
// note: screen2_putc() and screen2_puts() are fast but they
|
||||
// can only print characters aligned within the 8x8 grid
|
||||
```
|
||||
|
||||
### Working with VRAM directly
|
||||
|
||||
Some example code:
|
||||
```c
|
||||
// writes the value 42 at VRAM location 8000
|
||||
tms_set_vram_write_addr(8000);
|
||||
TMS_WRITE_DATA_PORT(42);
|
||||
|
||||
// and re-reads it
|
||||
tms_set_vram_read_addr(8000);
|
||||
byte val = TMS_READ_DATA_PORT;
|
||||
```
|
||||
|
||||
When using the default values that came with `SCREEN1_TABLE[]` and `SCREEN2_TABLE[]`,
|
||||
VRAM is organized according the following memory map:
|
||||
```c
|
||||
// ZONE RANGE NAME YOU CAN USE IN C
|
||||
// ===========================================================
|
||||
// pattern table $0000-$17FF TMS_PATTERN_TABLE
|
||||
// sprite patterns $1800-$19FF TMS_SPRITE_PATTERNS
|
||||
// color table $2000-$27FF TMS_COLOR_TABLE
|
||||
// name table $3800-$3AFF TMS_NAME_TABLE
|
||||
// sprite attributes $3B00-$3BFF TMS_SPRITE_ATTRS
|
||||
|
||||
// example: writes the bitmap value 10101010 on row 3 of pattern 4
|
||||
tms_set_vram_write_addr(TMS_PATTERN_TABLE+4*8+3);
|
||||
TMS_WRITE_DATA_PORT(0b10101010);
|
||||
```
|
||||
|
||||
### Working on a more low-level
|
||||
|
||||
#### Setting the TMS9918 registers
|
||||
|
||||
```c
|
||||
// you can set a TMS9918 register directly with:
|
||||
tms_write_reg(7, 0x1F);
|
||||
|
||||
// which also saves the written value to a buffer
|
||||
// because the TMS does not allow to read from
|
||||
// its registers (they are write-only)
|
||||
byte oldvalue = tms_regs_latch[7];
|
||||
```
|
||||
|
||||
#### Working directly with the I/O chip interface
|
||||
|
||||
If you want to program the VDP directly you can use the following utility functions:
|
||||
|
||||
```c
|
||||
TMS_WRITE_CTRL_PORT(value); // writes a byte to the control port ($CC01)
|
||||
TMS_WRITE_DATA_PORT(value); // writes a byte to the data port ($CC00)
|
||||
byte value = TMS_READ_CTRL_PORT; // reads the status register ($CC01)
|
||||
byte value = TMS_READ_DATA_PORT; // reads a byte from the data port ($CC00)
|
||||
```
|
||||
|
||||
### Miscellaneous functions
|
||||
|
||||
```
|
||||
tms_wait_end_of_frame(); // waits the end of video frame, for timimng or sync video updates
|
||||
tms_set_blank(1); // turns on video blanking (0 restores normal view)
|
||||
tms_set_external_video(1); // turns on/off external video input
|
||||
|
||||
tms_set_interrupt_bit(1); // enable end of frame interrupts generation
|
||||
|
||||
(TODO: interrupt functions)
|
||||
```
|
||||
|
||||
### Apple-1 utility functions
|
||||
|
||||
There are also utility functions to interact with the Apple-1
|
||||
screen and keyboard:
|
||||
|
||||
```c
|
||||
// prints hex "F3" on the Apple-1 screen
|
||||
woz_print_hex(0xF3)
|
||||
|
||||
// prints "A" on the Apple-1 screen
|
||||
woz_putc('A');
|
||||
|
||||
// prints "HELLO" on the Apple-1 screen
|
||||
woz_puts("HELLO");
|
||||
|
||||
// gets a key from the keyboard (waits for it)
|
||||
byte k = apple1_getkey();
|
||||
|
||||
// non blocking keyboard read: do something until RETURN is hit
|
||||
while(1) {
|
||||
if(apple1_iskeypressed()) {
|
||||
if(apple1_readkey()==0x0d) break;
|
||||
}
|
||||
else do_something_else();
|
||||
}
|
||||
```
|
||||
|
||||
### Building the source code
|
||||
|
||||
To link the library, simply `#include` the `tms9918.h` file
|
||||
in your C sources. The recommended way is to add the KickC
|
||||
command line switch `-includedir=thisrepo/lib` to your
|
||||
build script and then include the file with `#include <tms9918.h>`.
|
||||
|
||||
The the `tools/` directory contains a simple `build.bat` script
|
||||
example (for Windows) that you can customize to your needs.
|
||||
|
||||
### Setting a machine target
|
||||
|
||||
There are three configurations you can target with
|
||||
the switches `-t target -targetdir thisrepo/kickc`
|
||||
of the KickC compiler:
|
||||
|
||||
- `apple1`
|
||||
- `apple1_jukebox`
|
||||
- `vic20`
|
||||
|
||||
#### Target "apple1"
|
||||
|
||||
With this target, the compiled program will start at `$0280` in
|
||||
the free RAM of the Apple-1 (please make sure you have enough RAM).
|
||||
|
||||
(TODO: add reference to `hexdump.js`)
|
||||
|
||||
#### Target "apple1_jukebox"
|
||||
|
||||
This target is for expansion cards that provide a ROM storage in
|
||||
the range `$4000`-`$7FFF`, as:
|
||||
- the "CodeTank" EEPROM daughterboard of the "Apple-1 Graphic Card"
|
||||
- "Juke-Box Card" FLASH
|
||||
|
||||
In this target configuration, the program is split into two segments:
|
||||
- the `Code` that resides in ROM at `$4000`
|
||||
- the `Data` that resides in RAM at `$0280`
|
||||
|
||||
The split is required because the program needs to write on the `Data` segment (e.g. when changing the value of a variable).
|
||||
|
||||
The only issue is that the "Data" segment needs to be initialized
|
||||
with the correct startup values (for example, the value that
|
||||
a global `int` variable takes before it's used).
|
||||
|
||||
The "Data" initialization needs to be done manually in the C program
|
||||
by explicitly calling `apple1_eprom_init()` in `main()`. The function
|
||||
will copy the ROM portion $7582-$7FFF into the "Data" segment at $0280-$0FFF.
|
||||
|
||||
The initialization values in the ROM range $7582-$7FFF are generated with
|
||||
the build script `mkeprom.js` which creates a fixed-length 16K binary file
|
||||
to be put on the EEPROM/FLASH.
|
||||
|
||||
Below is a recap of the memory map for this target:
|
||||
|
||||
$0000-$00FF zero page: holds some C program variables
|
||||
$0280-$0FFF RAM: C program "Data" segment
|
||||
$4000-$7581 ROM: C program "Code" segment
|
||||
$7582-$7FFF ROM: C program "Data" segment (startup values)
|
||||
|
||||
#### Target "vic20"
|
||||
|
||||
This target has been used during the development of the library
|
||||
where a custom made VIC-20 emulator was interfaced with
|
||||
an emulated TMS9918, thus allowing running tests when
|
||||
the real Apple-1 machine was not available.
|
||||
|
|
28
bug/bug1.c
28
bug/bug1.c
|
@ -1,28 +0,0 @@
|
|||
#pragma zp_reserve(0,1,2)
|
||||
|
||||
volatile word tick_counts;
|
||||
|
||||
__interrupt(hardware_all) void interrupt_handler() {
|
||||
tick_counts++;
|
||||
}
|
||||
|
||||
void install_interrupt() {
|
||||
*((word *)0x0001) = (word) &interrupt_handler;
|
||||
}
|
||||
|
||||
void main() {
|
||||
// make some use of "tick_counts"
|
||||
*((word *)0x0001) = tick_counts;
|
||||
|
||||
install_interrupt();
|
||||
}
|
||||
|
||||
/*
|
||||
const byte *VDP_DATA = 0xA000; // TMS9918 data port (VRAM)
|
||||
#define TMS_READ_DATA (*VDP_DATA);
|
||||
|
||||
void main() {
|
||||
byte x = TMS_READ_DATA();
|
||||
*((byte *)0xFFFF) = x;
|
||||
}
|
||||
*/
|
|
@ -1,4 +0,0 @@
|
|||
cl65 -D APPLE1 --target none --start-addr $4000 -O test.c -o test_apple1.prg
|
||||
cl65 --listing test.lst -D VIC20 --target vic20 -O test.c -o test_vic20.prg
|
||||
|
||||
|
|
@ -1,262 +0,0 @@
|
|||
// modified CC65 charmap to allow pure ASCII on VIC20
|
||||
|
||||
#pragma warn (remap-zero, push, off)
|
||||
|
||||
#pragma charmap (0x00, 0x00)
|
||||
#pragma charmap (0x01, 0x01)
|
||||
#pragma charmap (0x02, 0x02)
|
||||
#pragma charmap (0x03, 0x03)
|
||||
#pragma charmap (0x04, 0x04)
|
||||
#pragma charmap (0x05, 0x05)
|
||||
#pragma charmap (0x06, 0x06)
|
||||
#pragma charmap (0x07, 0x07)
|
||||
#pragma charmap (0x08, 0x08)
|
||||
#pragma charmap (0x09, 0x09)
|
||||
#pragma charmap (0x0A, 0x0A)
|
||||
#pragma charmap (0x0B, 0x0B)
|
||||
#pragma charmap (0x0C, 0x0C)
|
||||
#pragma charmap (0x0D, 0x0D)
|
||||
#pragma charmap (0x0E, 0x0E)
|
||||
#pragma charmap (0x0F, 0x0F)
|
||||
#pragma charmap (0x10, 0x10)
|
||||
#pragma charmap (0x11, 0x11)
|
||||
#pragma charmap (0x12, 0x12)
|
||||
#pragma charmap (0x13, 0x13)
|
||||
#pragma charmap (0x14, 0x14)
|
||||
#pragma charmap (0x15, 0x15)
|
||||
#pragma charmap (0x16, 0x16)
|
||||
#pragma charmap (0x17, 0x17)
|
||||
#pragma charmap (0x18, 0x18)
|
||||
#pragma charmap (0x19, 0x19)
|
||||
#pragma charmap (0x1A, 0x1A)
|
||||
#pragma charmap (0x1B, 0x1B)
|
||||
#pragma charmap (0x1C, 0x1C)
|
||||
#pragma charmap (0x1D, 0x1D)
|
||||
#pragma charmap (0x1E, 0x1E)
|
||||
#pragma charmap (0x1F, 0x1F)
|
||||
#pragma charmap (0x20, 0x20)
|
||||
#pragma charmap (0x21, 0x21)
|
||||
#pragma charmap (0x22, 0x22)
|
||||
#pragma charmap (0x23, 0x23)
|
||||
#pragma charmap (0x24, 0x24)
|
||||
#pragma charmap (0x25, 0x25)
|
||||
#pragma charmap (0x26, 0x26)
|
||||
#pragma charmap (0x27, 0x27)
|
||||
#pragma charmap (0x28, 0x28)
|
||||
#pragma charmap (0x29, 0x29)
|
||||
#pragma charmap (0x2A, 0x2A)
|
||||
#pragma charmap (0x2B, 0x2B)
|
||||
#pragma charmap (0x2C, 0x2C)
|
||||
#pragma charmap (0x2D, 0x2D)
|
||||
#pragma charmap (0x2E, 0x2E)
|
||||
#pragma charmap (0x2F, 0x2F)
|
||||
#pragma charmap (0x30, 0x30)
|
||||
#pragma charmap (0x31, 0x31)
|
||||
#pragma charmap (0x32, 0x32)
|
||||
#pragma charmap (0x33, 0x33)
|
||||
#pragma charmap (0x34, 0x34)
|
||||
#pragma charmap (0x35, 0x35)
|
||||
#pragma charmap (0x36, 0x36)
|
||||
#pragma charmap (0x37, 0x37)
|
||||
#pragma charmap (0x38, 0x38)
|
||||
#pragma charmap (0x39, 0x39)
|
||||
#pragma charmap (0x3A, 0x3A)
|
||||
#pragma charmap (0x3B, 0x3B)
|
||||
#pragma charmap (0x3C, 0x3C)
|
||||
#pragma charmap (0x3D, 0x3D)
|
||||
#pragma charmap (0x3E, 0x3E)
|
||||
#pragma charmap (0x3F, 0x3F)
|
||||
#pragma charmap (0x40, 0x40)
|
||||
#pragma charmap (0x41, 0x41)
|
||||
#pragma charmap (0x42, 0x42)
|
||||
#pragma charmap (0x43, 0x43)
|
||||
#pragma charmap (0x44, 0x44)
|
||||
#pragma charmap (0x45, 0x45)
|
||||
#pragma charmap (0x46, 0x46)
|
||||
#pragma charmap (0x47, 0x47)
|
||||
#pragma charmap (0x48, 0x48)
|
||||
#pragma charmap (0x49, 0x49)
|
||||
#pragma charmap (0x4A, 0x4A)
|
||||
#pragma charmap (0x4B, 0x4B)
|
||||
#pragma charmap (0x4C, 0x4C)
|
||||
#pragma charmap (0x4D, 0x4D)
|
||||
#pragma charmap (0x4E, 0x4E)
|
||||
#pragma charmap (0x4F, 0x4F)
|
||||
#pragma charmap (0x50, 0x50)
|
||||
#pragma charmap (0x51, 0x51)
|
||||
#pragma charmap (0x52, 0x52)
|
||||
#pragma charmap (0x53, 0x53)
|
||||
#pragma charmap (0x54, 0x54)
|
||||
#pragma charmap (0x55, 0x55)
|
||||
#pragma charmap (0x56, 0x56)
|
||||
#pragma charmap (0x57, 0x57)
|
||||
#pragma charmap (0x58, 0x58)
|
||||
#pragma charmap (0x59, 0x59)
|
||||
#pragma charmap (0x5A, 0x5A)
|
||||
#pragma charmap (0x5B, 0x5B)
|
||||
#pragma charmap (0x5C, 0x5C)
|
||||
#pragma charmap (0x5D, 0x5D)
|
||||
#pragma charmap (0x5E, 0x5E)
|
||||
#pragma charmap (0x5F, 0x5F)
|
||||
#pragma charmap (0x60, 0x60)
|
||||
#pragma charmap (0x61, 0x61)
|
||||
#pragma charmap (0x62, 0x62)
|
||||
#pragma charmap (0x63, 0x63)
|
||||
#pragma charmap (0x64, 0x64)
|
||||
#pragma charmap (0x65, 0x65)
|
||||
#pragma charmap (0x66, 0x66)
|
||||
#pragma charmap (0x67, 0x67)
|
||||
#pragma charmap (0x68, 0x68)
|
||||
#pragma charmap (0x69, 0x69)
|
||||
#pragma charmap (0x6A, 0x6A)
|
||||
#pragma charmap (0x6B, 0x6B)
|
||||
#pragma charmap (0x6C, 0x6C)
|
||||
#pragma charmap (0x6D, 0x6D)
|
||||
#pragma charmap (0x6E, 0x6E)
|
||||
#pragma charmap (0x6F, 0x6F)
|
||||
#pragma charmap (0x70, 0x70)
|
||||
#pragma charmap (0x71, 0x71)
|
||||
#pragma charmap (0x72, 0x72)
|
||||
#pragma charmap (0x73, 0x73)
|
||||
#pragma charmap (0x74, 0x74)
|
||||
#pragma charmap (0x75, 0x75)
|
||||
#pragma charmap (0x76, 0x76)
|
||||
#pragma charmap (0x77, 0x77)
|
||||
#pragma charmap (0x78, 0x78)
|
||||
#pragma charmap (0x79, 0x79)
|
||||
#pragma charmap (0x7A, 0x7A)
|
||||
#pragma charmap (0x7B, 0x7B)
|
||||
#pragma charmap (0x7C, 0x7C)
|
||||
#pragma charmap (0x7D, 0x7D)
|
||||
#pragma charmap (0x7E, 0x7E)
|
||||
#pragma charmap (0x7F, 0x7F)
|
||||
#pragma charmap (0x80, 0x80)
|
||||
#pragma charmap (0x81, 0x81)
|
||||
#pragma charmap (0x82, 0x82)
|
||||
#pragma charmap (0x83, 0x83)
|
||||
#pragma charmap (0x84, 0x84)
|
||||
#pragma charmap (0x85, 0x85)
|
||||
#pragma charmap (0x86, 0x86)
|
||||
#pragma charmap (0x87, 0x87)
|
||||
#pragma charmap (0x88, 0x88)
|
||||
#pragma charmap (0x89, 0x89)
|
||||
#pragma charmap (0x8A, 0x8A)
|
||||
#pragma charmap (0x8B, 0x8B)
|
||||
#pragma charmap (0x8C, 0x8C)
|
||||
#pragma charmap (0x8D, 0x8D)
|
||||
#pragma charmap (0x8E, 0x8E)
|
||||
#pragma charmap (0x8F, 0x8F)
|
||||
#pragma charmap (0x90, 0x90)
|
||||
#pragma charmap (0x91, 0x91)
|
||||
#pragma charmap (0x92, 0x92)
|
||||
#pragma charmap (0x93, 0x93)
|
||||
#pragma charmap (0x94, 0x94)
|
||||
#pragma charmap (0x95, 0x95)
|
||||
#pragma charmap (0x96, 0x96)
|
||||
#pragma charmap (0x97, 0x97)
|
||||
#pragma charmap (0x98, 0x98)
|
||||
#pragma charmap (0x99, 0x99)
|
||||
#pragma charmap (0x9A, 0x9A)
|
||||
#pragma charmap (0x9B, 0x9B)
|
||||
#pragma charmap (0x9C, 0x9C)
|
||||
#pragma charmap (0x9D, 0x9D)
|
||||
#pragma charmap (0x9E, 0x9E)
|
||||
#pragma charmap (0x9F, 0x9F)
|
||||
#pragma charmap (0xA0, 0xA0)
|
||||
#pragma charmap (0xA1, 0xA1)
|
||||
#pragma charmap (0xA2, 0xA2)
|
||||
#pragma charmap (0xA3, 0xA3)
|
||||
#pragma charmap (0xA4, 0xA4)
|
||||
#pragma charmap (0xA5, 0xA5)
|
||||
#pragma charmap (0xA6, 0xA6)
|
||||
#pragma charmap (0xA7, 0xA7)
|
||||
#pragma charmap (0xA8, 0xA8)
|
||||
#pragma charmap (0xA9, 0xA9)
|
||||
#pragma charmap (0xAA, 0xAA)
|
||||
#pragma charmap (0xAB, 0xAB)
|
||||
#pragma charmap (0xAC, 0xAC)
|
||||
#pragma charmap (0xAD, 0xAD)
|
||||
#pragma charmap (0xAE, 0xAE)
|
||||
#pragma charmap (0xAF, 0xAF)
|
||||
#pragma charmap (0xB0, 0xB0)
|
||||
#pragma charmap (0xB1, 0xB1)
|
||||
#pragma charmap (0xB2, 0xB2)
|
||||
#pragma charmap (0xB3, 0xB3)
|
||||
#pragma charmap (0xB4, 0xB4)
|
||||
#pragma charmap (0xB5, 0xB5)
|
||||
#pragma charmap (0xB6, 0xB6)
|
||||
#pragma charmap (0xB7, 0xB7)
|
||||
#pragma charmap (0xB8, 0xB8)
|
||||
#pragma charmap (0xB9, 0xB9)
|
||||
#pragma charmap (0xBA, 0xBA)
|
||||
#pragma charmap (0xBB, 0xBB)
|
||||
#pragma charmap (0xBC, 0xBC)
|
||||
#pragma charmap (0xBD, 0xBD)
|
||||
#pragma charmap (0xBE, 0xBE)
|
||||
#pragma charmap (0xBF, 0xBF)
|
||||
#pragma charmap (0xC0, 0xC0)
|
||||
#pragma charmap (0xC1, 0xC1)
|
||||
#pragma charmap (0xC2, 0xC2)
|
||||
#pragma charmap (0xC3, 0xC3)
|
||||
#pragma charmap (0xC4, 0xC4)
|
||||
#pragma charmap (0xC5, 0xC5)
|
||||
#pragma charmap (0xC6, 0xC6)
|
||||
#pragma charmap (0xC7, 0xC7)
|
||||
#pragma charmap (0xC8, 0xC8)
|
||||
#pragma charmap (0xC9, 0xC9)
|
||||
#pragma charmap (0xCA, 0xCA)
|
||||
#pragma charmap (0xCB, 0xCB)
|
||||
#pragma charmap (0xCC, 0xCC)
|
||||
#pragma charmap (0xCD, 0xCD)
|
||||
#pragma charmap (0xCE, 0xCE)
|
||||
#pragma charmap (0xCF, 0xCF)
|
||||
#pragma charmap (0xD0, 0xD0)
|
||||
#pragma charmap (0xD1, 0xD1)
|
||||
#pragma charmap (0xD2, 0xD2)
|
||||
#pragma charmap (0xD3, 0xD3)
|
||||
#pragma charmap (0xD4, 0xD4)
|
||||
#pragma charmap (0xD5, 0xD5)
|
||||
#pragma charmap (0xD6, 0xD6)
|
||||
#pragma charmap (0xD7, 0xD7)
|
||||
#pragma charmap (0xD8, 0xD8)
|
||||
#pragma charmap (0xD9, 0xD9)
|
||||
#pragma charmap (0xDA, 0xDA)
|
||||
#pragma charmap (0xDB, 0xDB)
|
||||
#pragma charmap (0xDC, 0xDC)
|
||||
#pragma charmap (0xDD, 0xDD)
|
||||
#pragma charmap (0xDE, 0xDE)
|
||||
#pragma charmap (0xDF, 0xDF)
|
||||
#pragma charmap (0xE0, 0xE0)
|
||||
#pragma charmap (0xE1, 0xE1)
|
||||
#pragma charmap (0xE2, 0xE2)
|
||||
#pragma charmap (0xE3, 0xE3)
|
||||
#pragma charmap (0xE4, 0xE4)
|
||||
#pragma charmap (0xE5, 0xE5)
|
||||
#pragma charmap (0xE6, 0xE6)
|
||||
#pragma charmap (0xE7, 0xE7)
|
||||
#pragma charmap (0xE8, 0xE8)
|
||||
#pragma charmap (0xE9, 0xE9)
|
||||
#pragma charmap (0xEA, 0xEA)
|
||||
#pragma charmap (0xEB, 0xEB)
|
||||
#pragma charmap (0xEC, 0xEC)
|
||||
#pragma charmap (0xED, 0xED)
|
||||
#pragma charmap (0xEE, 0xEE)
|
||||
#pragma charmap (0xEF, 0xEF)
|
||||
#pragma charmap (0xF0, 0xF0)
|
||||
#pragma charmap (0xF1, 0xF1)
|
||||
#pragma charmap (0xF2, 0xF2)
|
||||
#pragma charmap (0xF3, 0xF3)
|
||||
#pragma charmap (0xF4, 0xF4)
|
||||
#pragma charmap (0xF5, 0xF5)
|
||||
#pragma charmap (0xF6, 0xF6)
|
||||
#pragma charmap (0xF7, 0xF7)
|
||||
#pragma charmap (0xF8, 0xF8)
|
||||
#pragma charmap (0xF9, 0xF9)
|
||||
#pragma charmap (0xFA, 0xFA)
|
||||
#pragma charmap (0xFB, 0xFB)
|
||||
#pragma charmap (0xFC, 0xFC)
|
||||
#pragma charmap (0xFD, 0xFD)
|
||||
#pragma charmap (0xFE, 0xFE)
|
||||
#pragma charmap (0xFF, 0xFF)
|
||||
|
||||
#pragma warn (remap-zero, pop)
|
|
@ -1 +0,0 @@
|
|||
PATH %PATH%;C:\Programmi\cc65-snapshot-win32\bin
|
|
@ -1,856 +0,0 @@
|
|||
byte FONT[768] = {
|
||||
0
|
||||
, 0
|
||||
, 0
|
||||
, 0
|
||||
, 0
|
||||
, 0
|
||||
, 0
|
||||
, 0
|
||||
, 8
|
||||
, 8
|
||||
|
||||
, 8
|
||||
, 8
|
||||
, 8
|
||||
, 0
|
||||
, 8
|
||||
, 0
|
||||
, 20
|
||||
, 20
|
||||
|
||||
, 20
|
||||
, 0
|
||||
, 0
|
||||
, 0
|
||||
, 0
|
||||
, 0
|
||||
, 20
|
||||
, 20
|
||||
|
||||
, 62
|
||||
, 20
|
||||
, 62
|
||||
, 20
|
||||
, 20
|
||||
, 0
|
||||
, 8
|
||||
, 30
|
||||
|
||||
, 40
|
||||
, 28
|
||||
, 10
|
||||
, 60
|
||||
, 8
|
||||
, 0
|
||||
, 48
|
||||
, 50
|
||||
|
||||
, 4
|
||||
, 8
|
||||
, 16
|
||||
, 38
|
||||
, 6
|
||||
, 0
|
||||
, 16
|
||||
, 40
|
||||
|
||||
, 40
|
||||
, 16
|
||||
, 42
|
||||
, 36
|
||||
, 26
|
||||
, 0
|
||||
, 8
|
||||
, 8
|
||||
|
||||
, 8
|
||||
, 0
|
||||
, 0
|
||||
, 0
|
||||
, 0
|
||||
, 0
|
||||
, 8
|
||||
, 16
|
||||
|
||||
, 32
|
||||
, 32
|
||||
, 32
|
||||
, 16
|
||||
, 8
|
||||
, 0
|
||||
|
||||
, 8
|
||||
, 4
|
||||
, 2
|
||||
, 2
|
||||
, 2
|
||||
, 4
|
||||
, 8
|
||||
, 0
|
||||
|
||||
, 8
|
||||
, 42
|
||||
, 28
|
||||
, 8
|
||||
, 28
|
||||
, 42
|
||||
, 8
|
||||
, 0
|
||||
|
||||
, 0
|
||||
, 8
|
||||
, 8
|
||||
, 62
|
||||
, 8
|
||||
, 8
|
||||
, 0
|
||||
, 0
|
||||
|
||||
, 0
|
||||
, 0
|
||||
, 0
|
||||
, 0
|
||||
, 8
|
||||
, 8
|
||||
, 16
|
||||
, 0
|
||||
|
||||
, 0
|
||||
, 0
|
||||
, 0
|
||||
, 62
|
||||
, 0
|
||||
, 0
|
||||
, 0
|
||||
, 0
|
||||
|
||||
, 0
|
||||
, 0
|
||||
, 0
|
||||
, 0
|
||||
, 0
|
||||
, 0
|
||||
, 8
|
||||
, 0
|
||||
|
||||
, 0
|
||||
, 2
|
||||
, 4
|
||||
, 8
|
||||
, 16
|
||||
, 32
|
||||
, 0
|
||||
, 0
|
||||
|
||||
, 28
|
||||
, 34
|
||||
, 38
|
||||
, 42
|
||||
, 50
|
||||
, 34
|
||||
, 28
|
||||
, 0
|
||||
|
||||
, 8
|
||||
, 24
|
||||
, 8
|
||||
, 8
|
||||
, 8
|
||||
, 8
|
||||
, 28
|
||||
, 0
|
||||
|
||||
, 28
|
||||
, 34
|
||||
, 2
|
||||
, 12
|
||||
, 16
|
||||
, 32
|
||||
, 62
|
||||
, 0
|
||||
|
||||
, 62
|
||||
, 2
|
||||
, 4
|
||||
, 12
|
||||
, 2
|
||||
, 34
|
||||
, 28
|
||||
, 0
|
||||
|
||||
, 4
|
||||
, 12
|
||||
, 20
|
||||
, 36
|
||||
, 62
|
||||
, 4
|
||||
, 4
|
||||
, 0
|
||||
|
||||
, 62
|
||||
, 32
|
||||
, 60
|
||||
, 2
|
||||
, 2
|
||||
, 34
|
||||
, 28
|
||||
, 0
|
||||
|
||||
, 14
|
||||
, 16
|
||||
, 32
|
||||
, 60
|
||||
, 34
|
||||
, 34
|
||||
, 28
|
||||
, 0
|
||||
|
||||
, 62
|
||||
, 2
|
||||
, 4
|
||||
, 8
|
||||
, 16
|
||||
, 32
|
||||
, 32
|
||||
, 0
|
||||
|
||||
, 28
|
||||
, 34
|
||||
, 34
|
||||
, 28
|
||||
, 34
|
||||
, 34
|
||||
, 28
|
||||
, 0
|
||||
|
||||
, 28
|
||||
, 34
|
||||
, 34
|
||||
, 30
|
||||
, 2
|
||||
, 4
|
||||
, 56
|
||||
, 0
|
||||
|
||||
, 0
|
||||
, 0
|
||||
, 8
|
||||
, 0
|
||||
, 8
|
||||
, 0
|
||||
, 0
|
||||
, 0
|
||||
|
||||
, 0
|
||||
, 0
|
||||
, 8
|
||||
, 0
|
||||
, 8
|
||||
, 8
|
||||
, 16
|
||||
, 0
|
||||
|
||||
, 4
|
||||
, 8
|
||||
, 16
|
||||
, 32
|
||||
, 16
|
||||
, 8
|
||||
, 4
|
||||
, 0
|
||||
|
||||
, 0
|
||||
, 0
|
||||
, 62
|
||||
, 0
|
||||
, 62
|
||||
, 0
|
||||
, 0
|
||||
, 0
|
||||
|
||||
, 16
|
||||
, 8
|
||||
, 4
|
||||
, 2
|
||||
, 4
|
||||
, 8
|
||||
, 16
|
||||
, 0
|
||||
|
||||
, 28
|
||||
, 34
|
||||
, 4
|
||||
, 8
|
||||
, 8
|
||||
, 0
|
||||
, 8
|
||||
, 0
|
||||
|
||||
, 28
|
||||
, 34
|
||||
, 42
|
||||
, 46
|
||||
, 44
|
||||
, 32
|
||||
, 28
|
||||
, 0
|
||||
|
||||
, 8
|
||||
, 20
|
||||
, 34
|
||||
, 34
|
||||
, 62
|
||||
, 34
|
||||
, 34
|
||||
, 0
|
||||
|
||||
, 60
|
||||
, 34
|
||||
, 34
|
||||
, 60
|
||||
, 34
|
||||
, 34
|
||||
, 60
|
||||
, 0
|
||||
|
||||
, 28
|
||||
, 34
|
||||
, 32
|
||||
, 32
|
||||
, 32
|
||||
, 34
|
||||
, 28
|
||||
, 0
|
||||
|
||||
, 56
|
||||
, 36
|
||||
, 34
|
||||
, 34
|
||||
, 34
|
||||
, 36
|
||||
, 56
|
||||
, 0
|
||||
|
||||
, 62
|
||||
, 32
|
||||
, 32
|
||||
, 56
|
||||
, 32
|
||||
, 32
|
||||
, 62
|
||||
, 0
|
||||
|
||||
, 62
|
||||
, 32
|
||||
, 32
|
||||
, 56
|
||||
, 32
|
||||
, 32
|
||||
, 32
|
||||
, 0
|
||||
|
||||
, 30
|
||||
, 32
|
||||
, 32
|
||||
, 32
|
||||
, 38
|
||||
, 34
|
||||
, 30
|
||||
, 0
|
||||
|
||||
, 34
|
||||
, 34
|
||||
, 34
|
||||
, 62
|
||||
, 34
|
||||
, 34
|
||||
, 34
|
||||
, 0
|
||||
|
||||
, 28
|
||||
, 8
|
||||
, 8
|
||||
, 8
|
||||
, 8
|
||||
, 8
|
||||
, 28
|
||||
, 0
|
||||
|
||||
, 2
|
||||
, 2
|
||||
, 2
|
||||
, 2
|
||||
, 2
|
||||
, 34
|
||||
, 28
|
||||
, 0
|
||||
|
||||
, 34
|
||||
, 36
|
||||
, 40
|
||||
, 48
|
||||
, 40
|
||||
, 36
|
||||
, 34
|
||||
, 0
|
||||
|
||||
, 32
|
||||
, 32
|
||||
, 32
|
||||
, 32
|
||||
, 32
|
||||
, 32
|
||||
, 62
|
||||
, 0
|
||||
|
||||
, 34
|
||||
, 54
|
||||
, 42
|
||||
, 42
|
||||
, 34
|
||||
, 34
|
||||
, 34
|
||||
, 0
|
||||
|
||||
, 34
|
||||
, 34
|
||||
, 50
|
||||
, 42
|
||||
, 38
|
||||
, 34
|
||||
, 34
|
||||
, 0
|
||||
|
||||
, 28
|
||||
, 34
|
||||
, 34
|
||||
, 34
|
||||
, 34
|
||||
, 34
|
||||
, 28
|
||||
, 0
|
||||
|
||||
, 60
|
||||
, 34
|
||||
, 34
|
||||
, 60
|
||||
, 32
|
||||
, 32
|
||||
, 32
|
||||
, 0
|
||||
|
||||
, 28
|
||||
, 34
|
||||
, 34
|
||||
, 34
|
||||
, 42
|
||||
, 36
|
||||
, 26
|
||||
, 0
|
||||
|
||||
, 60
|
||||
, 34
|
||||
, 34
|
||||
, 60
|
||||
, 40
|
||||
, 36
|
||||
, 34
|
||||
, 0
|
||||
|
||||
, 28
|
||||
, 34
|
||||
, 32
|
||||
, 28
|
||||
, 2
|
||||
, 34
|
||||
, 28
|
||||
, 0
|
||||
|
||||
, 62
|
||||
, 8
|
||||
, 8
|
||||
, 8
|
||||
, 8
|
||||
, 8
|
||||
, 8
|
||||
, 0
|
||||
|
||||
, 34
|
||||
, 34
|
||||
, 34
|
||||
, 34
|
||||
, 34
|
||||
, 34
|
||||
, 28
|
||||
, 0
|
||||
|
||||
, 34
|
||||
, 34
|
||||
, 34
|
||||
, 34
|
||||
, 34
|
||||
, 20
|
||||
, 8
|
||||
, 0
|
||||
|
||||
, 34
|
||||
, 34
|
||||
, 34
|
||||
, 42
|
||||
, 42
|
||||
, 54
|
||||
, 34
|
||||
, 0
|
||||
|
||||
, 34
|
||||
, 34
|
||||
, 20
|
||||
, 8
|
||||
, 20
|
||||
, 34
|
||||
, 34
|
||||
, 0
|
||||
|
||||
, 34
|
||||
, 34
|
||||
, 20
|
||||
, 8
|
||||
, 8
|
||||
, 8
|
||||
, 8
|
||||
, 0
|
||||
|
||||
, 62
|
||||
, 2
|
||||
, 4
|
||||
, 8
|
||||
, 16
|
||||
, 32
|
||||
, 62
|
||||
, 0
|
||||
|
||||
, 62
|
||||
, 48
|
||||
, 48
|
||||
, 48
|
||||
, 48
|
||||
, 48
|
||||
, 62
|
||||
, 0
|
||||
|
||||
, 0
|
||||
, 32
|
||||
, 16
|
||||
, 8
|
||||
, 4
|
||||
, 2
|
||||
, 0
|
||||
, 0
|
||||
|
||||
, 62
|
||||
, 6
|
||||
, 6
|
||||
, 6
|
||||
, 6
|
||||
, 6
|
||||
, 62
|
||||
, 0
|
||||
|
||||
, 8
|
||||
, 20
|
||||
, 34
|
||||
, 0
|
||||
, 0
|
||||
, 0
|
||||
, 0
|
||||
, 0
|
||||
|
||||
, 0
|
||||
, 0
|
||||
, 0
|
||||
, 0
|
||||
, 0
|
||||
, 0
|
||||
, 0
|
||||
, 62
|
||||
|
||||
, 16
|
||||
, 8
|
||||
, 4
|
||||
, 0
|
||||
, 0
|
||||
, 0
|
||||
, 0
|
||||
, 0
|
||||
|
||||
, 0
|
||||
, 0
|
||||
, 28
|
||||
, 2
|
||||
, 30
|
||||
, 34
|
||||
, 30
|
||||
, 0
|
||||
|
||||
, 32
|
||||
, 32
|
||||
, 60
|
||||
, 34
|
||||
, 34
|
||||
, 34
|
||||
, 60
|
||||
, 0
|
||||
|
||||
, 0
|
||||
, 0
|
||||
, 30
|
||||
, 32
|
||||
, 32
|
||||
, 32
|
||||
, 30
|
||||
, 0
|
||||
|
||||
, 2
|
||||
, 2
|
||||
, 30
|
||||
, 34
|
||||
, 34
|
||||
, 34
|
||||
, 30
|
||||
, 0
|
||||
|
||||
, 0
|
||||
, 0
|
||||
, 28
|
||||
, 34
|
||||
, 62
|
||||
, 32
|
||||
, 30
|
||||
, 0
|
||||
|
||||
, 12
|
||||
, 18
|
||||
, 16
|
||||
, 60
|
||||
, 16
|
||||
, 16
|
||||
, 16
|
||||
, 0
|
||||
|
||||
, 0
|
||||
, 0
|
||||
, 28
|
||||
, 34
|
||||
, 34
|
||||
, 30
|
||||
, 2
|
||||
, 28
|
||||
|
||||
, 32
|
||||
, 32
|
||||
, 60
|
||||
, 34
|
||||
, 34
|
||||
, 34
|
||||
, 34
|
||||
, 0
|
||||
|
||||
, 8
|
||||
, 0
|
||||
, 24
|
||||
, 8
|
||||
, 8
|
||||
, 8
|
||||
, 28
|
||||
, 0
|
||||
|
||||
, 2
|
||||
, 0
|
||||
, 6
|
||||
, 2
|
||||
, 2
|
||||
, 2
|
||||
, 18
|
||||
, 12
|
||||
|
||||
, 32
|
||||
, 32
|
||||
, 34
|
||||
, 36
|
||||
, 56
|
||||
, 36
|
||||
, 34
|
||||
, 0
|
||||
|
||||
, 24
|
||||
, 8
|
||||
, 8
|
||||
, 8
|
||||
, 8
|
||||
, 8
|
||||
, 28
|
||||
, 0
|
||||
|
||||
, 0
|
||||
, 0
|
||||
, 52
|
||||
, 42
|
||||
, 42
|
||||
, 42
|
||||
, 34
|
||||
, 0
|
||||
|
||||
, 0
|
||||
, 0
|
||||
, 60
|
||||
, 34
|
||||
, 34
|
||||
, 34
|
||||
, 34
|
||||
, 0
|
||||
|
||||
, 0
|
||||
, 0
|
||||
, 28
|
||||
, 34
|
||||
, 34
|
||||
, 34
|
||||
, 28
|
||||
, 0
|
||||
|
||||
, 0
|
||||
, 0
|
||||
, 60
|
||||
, 34
|
||||
, 34
|
||||
, 60
|
||||
, 32
|
||||
, 32
|
||||
|
||||
, 0
|
||||
, 0
|
||||
, 30
|
||||
, 34
|
||||
, 34
|
||||
, 30
|
||||
, 2
|
||||
, 2
|
||||
|
||||
, 0
|
||||
, 0
|
||||
, 46
|
||||
, 48
|
||||
, 32
|
||||
, 32
|
||||
, 32
|
||||
, 0
|
||||
|
||||
, 0
|
||||
, 0
|
||||
, 30
|
||||
, 32
|
||||
, 28
|
||||
, 2
|
||||
, 60
|
||||
, 0
|
||||
|
||||
, 16
|
||||
, 16
|
||||
, 60
|
||||
, 16
|
||||
, 16
|
||||
, 18
|
||||
, 12
|
||||
, 0
|
||||
|
||||
, 0
|
||||
, 0
|
||||
, 34
|
||||
, 34
|
||||
, 34
|
||||
, 38
|
||||
, 26
|
||||
, 0
|
||||
|
||||
, 0
|
||||
, 0
|
||||
, 34
|
||||
, 34
|
||||
, 34
|
||||
, 20
|
||||
, 8
|
||||
, 0
|
||||
|
||||
, 0
|
||||
, 0
|
||||
, 34
|
||||
, 34
|
||||
, 42
|
||||
, 42
|
||||
, 20
|
||||
, 0
|
||||
|
||||
, 0
|
||||
, 0
|
||||
, 34
|
||||
, 20
|
||||
, 8
|
||||
, 20
|
||||
, 34
|
||||
, 0
|
||||
|
||||
, 0
|
||||
, 0
|
||||
, 34
|
||||
, 36
|
||||
, 20
|
||||
, 24
|
||||
, 8
|
||||
, 48
|
||||
|
||||
, 0
|
||||
, 0
|
||||
, 62
|
||||
, 4
|
||||
, 8
|
||||
, 16
|
||||
, 62
|
||||
, 0
|
||||
|
||||
, 6
|
||||
, 8
|
||||
, 8
|
||||
, 48
|
||||
, 8
|
||||
, 8
|
||||
, 6
|
||||
, 0
|
||||
|
||||
, 8
|
||||
, 8
|
||||
, 8
|
||||
, 8
|
||||
, 8
|
||||
, 8
|
||||
, 8
|
||||
, 8
|
||||
|
||||
, 48
|
||||
, 8
|
||||
, 8
|
||||
, 6
|
||||
, 8
|
||||
, 8
|
||||
, 48
|
||||
, 0
|
||||
|
||||
, 26
|
||||
, 44
|
||||
, 0
|
||||
, 0
|
||||
, 0
|
||||
, 0
|
||||
, 0
|
||||
, 0
|
||||
};
|
104
cc65/screen1.c
104
cc65/screen1.c
|
@ -1,104 +0,0 @@
|
|||
// SCREEN 1 VALUES
|
||||
|
||||
// sprite patterns: $0000
|
||||
// pattern table: $0800 (256*8)
|
||||
// sprite attributes: $1000
|
||||
// unused: $1080
|
||||
// name table: $1400 (32*24)
|
||||
// unused: $1800
|
||||
// color table: $2000 (32)
|
||||
// unused $2020-$3FFF
|
||||
|
||||
#define SCREEN1_PATTERN_TABLE 0x0800
|
||||
#define SCREEN1_NAME_TABLE 0x1400
|
||||
#define SCREEN1_COLOR_TABLE 0x2000
|
||||
#define SCREEN1_SPRITE_PATTERNS 0x0000
|
||||
#define SCREEN1_SPRITE_ATTRS 0x1000
|
||||
#define SCREEN1_SIZE (32*24)
|
||||
|
||||
byte SCREEN1_TABLE[8] = {
|
||||
0x00, 0xc0, 0x05, 0x80, 0x01, 0x20, 0x00, 0x25
|
||||
};
|
||||
|
||||
// loads the Laser 500 font on the pattern table
|
||||
void SCREEN1_LOAD_FONT() {
|
||||
|
||||
static byte *source = FONT;
|
||||
static word i;
|
||||
|
||||
// start writing into VRAM from "space" character
|
||||
set_vram_addr(SCREEN1_PATTERN_TABLE+(32*8));
|
||||
for(i=0;i<768;i++) {
|
||||
POKE(VDP_DATA, *source);
|
||||
source++;
|
||||
}
|
||||
|
||||
source = FONT;
|
||||
set_vram_addr(SCREEN1_PATTERN_TABLE+((128+32)*8));
|
||||
for(i=0;i<768;i++) {
|
||||
POKE(VDP_DATA, ~(*source));
|
||||
source++;
|
||||
}
|
||||
|
||||
// TODO: inverted characters ?
|
||||
}
|
||||
|
||||
// prints character to TMS (SCREEN 1 MODE)
|
||||
void fastcall SCREEN1_PUTCHAR(byte c) {
|
||||
set_vram_addr(tms_cursor);
|
||||
POKE(VDP_DATA, c);
|
||||
tms_cursor++;
|
||||
}
|
||||
|
||||
// prints 0 terminated string pointed by YA
|
||||
void SCREEN1_PUTS(char *s) {
|
||||
byte c;
|
||||
|
||||
while(1) {
|
||||
c = *s;
|
||||
// c = *s & 127; // TODO: explain why???
|
||||
if(c==0) return;
|
||||
SCREEN1_PUTCHAR(c);
|
||||
s++;
|
||||
}
|
||||
}
|
||||
|
||||
void SCREEN1_HOME() {
|
||||
tms_cursor = SCREEN1_NAME_TABLE;
|
||||
}
|
||||
|
||||
void SCREEN1_LOCATEXY(byte x, byte y) {
|
||||
tms_cursor = SCREEN1_NAME_TABLE + ((word)y)*32 + x;
|
||||
}
|
||||
|
||||
void SCREEN1_INIT() {
|
||||
static byte i;
|
||||
for(i=0;i<8;i++) {
|
||||
write_reg(i, SCREEN1_TABLE[i]);
|
||||
}
|
||||
}
|
||||
|
||||
void SCREEN1_FILL() {
|
||||
static word i;
|
||||
|
||||
// fills name table with spaces (32)
|
||||
set_vram_addr(SCREEN1_NAME_TABLE);
|
||||
for(i=0;i<SCREEN1_SIZE;i++) {
|
||||
POKE(VDP_DATA, 32);
|
||||
// nops here?
|
||||
}
|
||||
|
||||
// fill pattern table with 0
|
||||
set_vram_addr(SCREEN1_PATTERN_TABLE);
|
||||
for(i=0;i<256*8;i++) {
|
||||
POKE(VDP_DATA, 0);
|
||||
// nops here?
|
||||
}
|
||||
|
||||
// fill color table with $1F
|
||||
set_vram_addr(SCREEN1_COLOR_TABLE);
|
||||
for(i=0;i<32;i++) {
|
||||
POKE(VDP_DATA, 0x1f);
|
||||
// nops here?
|
||||
}
|
||||
}
|
115
cc65/screen2.c
115
cc65/screen2.c
|
@ -1,115 +0,0 @@
|
|||
// SCREEN 2 VALUES
|
||||
|
||||
// pattern table: $0000-$17FF (256*8*3)
|
||||
// sprite patterns: $1800-$19FF
|
||||
// color table: $2000-$27FF (256*8*3)
|
||||
// name table: $3800-$3AFF (32*24 = 256*3 = 768)
|
||||
// sprite attributes: $3B00-$3BFF
|
||||
// unused $3C00-$3FFF
|
||||
//
|
||||
|
||||
#define SCREEN2_PATTERN_TABLE 0x0000
|
||||
#define SCREEN2_NAME_TABLE 0x3800
|
||||
#define SCREEN2_COLOR_TABLE 0x2000
|
||||
#define SCREEN2_SPRITE_PATTERNS 0x1800
|
||||
#define SCREEN2_SPRITE_ATTRS 0x3b00
|
||||
#define SCREEN2_SIZE (32*24)
|
||||
|
||||
byte SCREEN2_TABLE[8] = {
|
||||
0x02, 0xc0, 0x0e, 0xff, 0x03, 0x76, 0x03, 0x25
|
||||
};
|
||||
|
||||
void SCREEN2_INIT() {
|
||||
static byte i;
|
||||
for(i=0;i<8;i++) {
|
||||
write_reg(i, SCREEN2_TABLE[i]);
|
||||
}
|
||||
}
|
||||
|
||||
void SCREEN2_FILL() {
|
||||
static word i;
|
||||
|
||||
// fills name table x3 with increasing numbers
|
||||
set_vram_addr(SCREEN2_NAME_TABLE);
|
||||
for(i=0;i<SCREEN2_SIZE;i++) {
|
||||
POKE(VDP_DATA, i & 0xFF);
|
||||
}
|
||||
|
||||
// fill pattern table with 0 (clear screen)
|
||||
set_vram_addr(SCREEN2_PATTERN_TABLE);
|
||||
for(i=0;i<768*8;i++) {
|
||||
POKE(VDP_DATA, 0);
|
||||
}
|
||||
|
||||
// fill color table with $1F
|
||||
set_vram_addr(SCREEN2_COLOR_TABLE);
|
||||
for(i=0;i<768*8;i++) {
|
||||
POKE(VDP_DATA, 0x1f);
|
||||
}
|
||||
}
|
||||
|
||||
void SCREEN2_PUTC(byte ch, byte x, byte y, byte col) {
|
||||
byte *source = &FONT[(ch-32)*8];
|
||||
byte i;
|
||||
word paddr = SCREEN2_PATTERN_TABLE + x*8 + y*256;
|
||||
word caddr = SCREEN2_COLOR_TABLE + x*8 + y*256;
|
||||
|
||||
set_vram_addr(paddr); for(i=0;i<8;i++) POKE(VDP_DATA, source[i]);
|
||||
set_vram_addr(caddr); for(i=0;i<8;i++) POKE(VDP_DATA, col);
|
||||
}
|
||||
|
||||
void SCREEN2_PUTS(byte x, byte y, byte col, char *s) {
|
||||
while(*s) {
|
||||
SCREEN2_PUTC(*s++, x++, y, col);
|
||||
}
|
||||
}
|
||||
|
||||
void SCREEN2_PSET(byte x, byte y) {
|
||||
word paddr = SCREEN2_PATTERN_TABLE + (x & 0b11111000) + (y & 0b11111000)*32 + y%8;
|
||||
byte pattern = 128 >> (x%8);
|
||||
byte data;
|
||||
|
||||
set_vram_read_addr(paddr);
|
||||
data = PEEK(VDP_DATA);
|
||||
set_vram_addr(paddr);
|
||||
POKE(VDP_DATA,data | pattern);
|
||||
}
|
||||
|
||||
// int vti_abs(int x) {
|
||||
// return x < 0 ? -x : x;
|
||||
// }
|
||||
//
|
||||
// // http://members.chello.at/~easyfilter/bresenham.html
|
||||
// void vti_ellipse_rect(int x0, int y0, int x1, int y1)
|
||||
// {
|
||||
// long a,b,b1,dx,dy,e2,err;
|
||||
//
|
||||
// a = vti_abs(x1-x0);
|
||||
// b = vti_abs(y1-y0);
|
||||
// b1 = b&1; /* values of diameter */
|
||||
// dx = 4*(1-a)*b*b;
|
||||
// dy = 4*(b1+1)*a*a; /* error increment */
|
||||
// err = dx+dy+b1*a*a; /* error of 1.step */
|
||||
//
|
||||
// if (x0 > x1) { x0 = x1; x1 += a; } /* if called with swapped points */
|
||||
// if (y0 > y1) y0 = y1; /* .. exchange them */
|
||||
// y0 += (b+1)/2; y1 = y0-b1; /* starting pixel */
|
||||
// a *= 8*a; b1 = 8*b*b;
|
||||
//
|
||||
// do {
|
||||
// SCREEN2_PSET(x1, y0); /* I. Quadrant */
|
||||
// SCREEN2_PSET(x0, y0); /* II. Quadrant */
|
||||
// SCREEN2_PSET(x0, y1); /* III. Quadrant */
|
||||
// SCREEN2_PSET(x1, y1); /* IV. Quadrant */
|
||||
// e2 = 2*err;
|
||||
// if (e2 <= dy) { y0++; y1--; err += dy += a; } /* y step */
|
||||
// if (e2 >= dx || 2*err > dy) { x0++; x1--; err += dx += b1; } /* x step */
|
||||
// } while (x0 <= x1);
|
||||
//
|
||||
// while (y0-y1 < b) { /* too early stop of flat ellipses a=1 */
|
||||
// SCREEN2_PSET(x0-1, y0); /* -> finish tip of ellipse */
|
||||
// SCREEN2_PSET(x1+1, y0++);
|
||||
// SCREEN2_PSET(x0-1, y1);
|
||||
// SCREEN2_PSET(x1+1, y1--);
|
||||
// }
|
||||
// }
|
157
cc65/test.c
157
cc65/test.c
|
@ -1,157 +0,0 @@
|
|||
#ifdef APPLE1
|
||||
#define WOZMON 0xFF1F // enters monitor
|
||||
#define ECHO 0xFFEF // output ascii character in A (A not destroyed)
|
||||
#define PRBYTE 0xFFDC // print hex byte in A (A destroyed)
|
||||
#define VDP_DATA 0xC000 // TMS9918 data port (VRAM)
|
||||
#define VDP_REG 0xC001 // TMS9918 register port (write) or status (read)
|
||||
#endif
|
||||
|
||||
#ifdef VIC20
|
||||
#define ECHO 0xFFD2 // chrout routine in kernal rom
|
||||
#define VDP_DATA 0xA000 // TMS9918 data port (VRAM)
|
||||
#define VDP_REG 0xA001 // TMS9918 register port (write) or status (read)
|
||||
|
||||
#include "cbm_ascii_charmap.h" // allow VIC-20 to work with pure ASCII
|
||||
|
||||
#endif
|
||||
|
||||
// TMS9918 interface flags
|
||||
#define WRITE_TO_REG 0b10000000
|
||||
#define WRITE_TO_VRAM 0b01000000
|
||||
#define READ_FROM_VRAM 0b00000000
|
||||
|
||||
// utils
|
||||
typedef unsigned char byte;
|
||||
typedef unsigned int word;
|
||||
|
||||
#define POKE(a,b) (*((byte *)(a))=(byte)(b))
|
||||
#define PEEK(a) (*((byte *)(a)))
|
||||
|
||||
// puts a character on the apple1 screen using the WOZMON routine
|
||||
void fastcall woz_putc(byte c) {
|
||||
asm("jsr %w", ECHO);
|
||||
}
|
||||
|
||||
// returns to WOZMON prompt
|
||||
void woz_mon() {
|
||||
#ifdef APPLE1
|
||||
asm("jmp %w", WOZMON);
|
||||
#endif
|
||||
}
|
||||
|
||||
// sets the VRAM address on the TMS9918
|
||||
void fastcall set_vram_addr(word addr) {
|
||||
asm("sta %w", VDP_REG); // write address low byte
|
||||
// nops here ?
|
||||
asm("txa"); // X = addres high byte
|
||||
asm("and #%b", 0b00111111); // mask address high byte
|
||||
asm("ora #%b", WRITE_TO_VRAM); // set "write to vram" flag bits "01" upper bits ("00" for read)
|
||||
asm("sta %w", VDP_REG); // write flags and address high byte
|
||||
// nops here ?
|
||||
}
|
||||
|
||||
// sets the VRAM address on the TMS9918
|
||||
void fastcall set_vram_read_addr(word addr) {
|
||||
asm("sta %w", VDP_REG); // write address low byte
|
||||
// nops here ?
|
||||
asm("txa"); // X = addres high byte
|
||||
asm("and #%b", 0b00111111); // mask address high byte
|
||||
asm("ora #%b", READ_FROM_VRAM); // set "write to vram" flag bits "01" upper bits ("00" for read)
|
||||
asm("sta %w", VDP_REG); // write flags and address high byte
|
||||
// nops here ?
|
||||
}
|
||||
|
||||
// writes a value to a TMS9918 register (0-7)
|
||||
void write_reg(byte regnum, byte val) {
|
||||
// nops are not required
|
||||
POKE(VDP_REG, val);
|
||||
POKE(VDP_REG, (regnum & 0b00001111)|WRITE_TO_REG);
|
||||
}
|
||||
|
||||
static word tms_cursor;
|
||||
|
||||
#include "laser500_font.ascii.c"
|
||||
#include "screen1.c"
|
||||
#include "screen2.c"
|
||||
|
||||
void screen1_square_sprites() {
|
||||
static byte i;
|
||||
|
||||
// fills first sprite pattern with 255
|
||||
set_vram_addr(SCREEN1_SPRITE_PATTERNS); // start writing in the sprite patterns
|
||||
for(i=0;i<8;i++) {
|
||||
POKE(VDP_DATA, 255);
|
||||
}
|
||||
|
||||
// set sprite coordinates
|
||||
set_vram_addr(SCREEN1_SPRITE_ATTRS); // start writing in the sprite attribute
|
||||
for(i=0;i<32;i++) {
|
||||
POKE(VDP_DATA,(6+i)*8); // y coordinate
|
||||
POKE(VDP_DATA,(6+i)*8); // x coordinate
|
||||
POKE(VDP_DATA,0); // name
|
||||
POKE(VDP_DATA,i); // color
|
||||
}
|
||||
}
|
||||
|
||||
void screen2_square_sprites() {
|
||||
static byte i;
|
||||
|
||||
// fills first sprite pattern with 255
|
||||
set_vram_addr(SCREEN2_SPRITE_PATTERNS); // start writing in the sprite patterns
|
||||
for(i=0;i<8;i++) {
|
||||
POKE(VDP_DATA, 0);
|
||||
}
|
||||
|
||||
// set sprite coordinates
|
||||
set_vram_addr(SCREEN2_SPRITE_ATTRS); // start writing in the sprite attribute
|
||||
for(i=0;i<32;i++) {
|
||||
POKE(VDP_DATA,0); // y coordinate
|
||||
POKE(VDP_DATA,0); // x coordinate
|
||||
POKE(VDP_DATA,0); // name
|
||||
POKE(VDP_DATA,i); // color
|
||||
}
|
||||
}
|
||||
|
||||
void main() {
|
||||
word i;
|
||||
|
||||
if(0) {
|
||||
SCREEN1_INIT();
|
||||
SCREEN1_FILL();
|
||||
SCREEN1_LOAD_FONT();
|
||||
|
||||
SCREEN1_HOME(); SCREEN1_PUTS("*** P-LAB VIDEO CARD SYSTEM ***");
|
||||
SCREEN1_LOCATEXY(0, 2); SCREEN1_PUTS("16K VRAM BYTES FREE");
|
||||
SCREEN1_LOCATEXY(0, 4); SCREEN1_PUTS("READY.");
|
||||
|
||||
SCREEN1_LOCATEXY(0, 10);
|
||||
for(i=0;i<256;i++) SCREEN1_PUTCHAR(i);
|
||||
|
||||
screen1_square_sprites();
|
||||
}
|
||||
|
||||
if(1) {
|
||||
SCREEN2_INIT();
|
||||
SCREEN2_FILL();
|
||||
screen2_square_sprites();
|
||||
//SCREEN2_PUTC(65,1,1,0x1F);
|
||||
|
||||
SCREEN2_PUTS(0,0,0x1F,"*** P-LAB VIDEO CARD SYSTEM ***");
|
||||
SCREEN2_PUTS(0,2,0x1F,"16K VRAM BYTES FREE");
|
||||
SCREEN2_PUTS(0,4,0x1F,"READY.");
|
||||
|
||||
for(i=0;i<16;i++) {
|
||||
SCREEN2_PUTS(5,6+i,((15-i)<<4)+i," COLOR ");
|
||||
}
|
||||
|
||||
for(i=0;i<192;i++) {
|
||||
SCREEN2_PSET(i,i/2);
|
||||
SCREEN2_PSET(i,i);
|
||||
SCREEN2_PSET(i/2,i);
|
||||
}
|
||||
}
|
||||
|
||||
woz_putc(42);
|
||||
woz_mon();
|
||||
}
|
||||
|
|
@ -1,32 +0,0 @@
|
|||
void screen1_square_sprites() {
|
||||
// fills first sprite pattern with 255
|
||||
tms_set_vram_write_addr(SCREEN1_SPRITE_PATTERNS); // start writing in the sprite patterns
|
||||
for(byte i=0;i<8;i++) {
|
||||
TMS_WRITE_DATA_PORT(255);
|
||||
}
|
||||
|
||||
// set sprite coordinates
|
||||
tms_set_vram_write_addr(SCREEN1_SPRITE_ATTRS); // start writing in the sprite attribute
|
||||
for(byte i=0;i<32;i++) {
|
||||
TMS_WRITE_DATA_PORT((6+i)*8); NOP; NOP; NOP; NOP; // y coordinate
|
||||
TMS_WRITE_DATA_PORT((6+i)*8); NOP; NOP; NOP; NOP; // x coordinate
|
||||
TMS_WRITE_DATA_PORT(0); NOP; NOP; NOP; NOP; // name
|
||||
TMS_WRITE_DATA_PORT(i); NOP; NOP; NOP; NOP; // color
|
||||
}
|
||||
}
|
||||
|
||||
void prova_screen1() {
|
||||
tms_init_regs(SCREEN1_TABLE);
|
||||
screen1_prepare();
|
||||
screen1_load_font();
|
||||
|
||||
screen1_home(); screen1_puts("*** P-LAB VIDEO CARD SYSTEM ***");
|
||||
screen1_locate(0, 2); screen1_puts("16K VRAM BYTES FREE");
|
||||
screen1_locate(0, 4); screen1_puts("READY.");
|
||||
|
||||
screen1_locate(0, 10);
|
||||
for(word i=0;i<256;i++) screen1_putc((byte)i);
|
||||
|
||||
screen1_square_sprites();
|
||||
}
|
||||
|
|
@ -1,32 +0,0 @@
|
|||
void prova_screen2() {
|
||||
tms_init_regs(SCREEN2_TABLE);
|
||||
|
||||
byte text_color = FG_BG(COLOR_BLACK,COLOR_WHITE);
|
||||
|
||||
screen2_init_bitmap(text_color);
|
||||
screen2_puts(0, 0, text_color, "*** P-LAB VIDEO CARD SYSTEM ***");
|
||||
screen2_puts(0, 2, text_color, "16K VRAM BYTES FREE");
|
||||
screen2_puts(0, 4, text_color, "READY.");
|
||||
|
||||
// display all colors in the palette
|
||||
for(byte i=0;i<16;i++) {
|
||||
screen2_puts(5,(byte)(6+i),(byte)(((15-i)<<4)+i)," SCREEN 2 ");
|
||||
}
|
||||
|
||||
vti_line(18, 45,232,187);
|
||||
vti_line(18,187,232, 45);
|
||||
|
||||
SCREEN2_PLOT_MODE = PLOT_MODE_RESET;
|
||||
|
||||
vti_line(18+5, 45,232+5,187);
|
||||
vti_line(18+5,187,232+5, 45);
|
||||
|
||||
SCREEN2_PLOT_MODE = PLOT_MODE_INVERT;
|
||||
|
||||
vti_line(18+5+5, 45,232+5+5,187);
|
||||
vti_line(18+5+5,187,232+5+5, 45);
|
||||
|
||||
SCREEN2_PLOT_MODE = PLOT_MODE_SET;
|
||||
|
||||
//vti_ellipse_rect(7,9,202,167);
|
||||
}
|
|
@ -1,2 +0,0 @@
|
|||
@call ..\tools\build demo
|
||||
|
|
@ -1,12 +1,4 @@
|
|||
// TODO make screen tables parametric (fixed values calculated by macros)
|
||||
|
||||
#include "../lib/utils.h"
|
||||
#include "../lib/apple1.h"
|
||||
#include "../lib/tms9918.h"
|
||||
#include "../lib/font8x8.h"
|
||||
#include "../lib/tms_screen1.h"
|
||||
#include "../lib/tms_screen2.h"
|
||||
#include "../lib/interrupt.h"
|
||||
#include <tms9918.h>
|
||||
|
||||
#include "demo_screen1.h"
|
||||
#include "demo_screen2.h"
|
||||
|
@ -14,6 +6,7 @@
|
|||
#include "demo_interrupt.h"
|
||||
#include "demo_extvid.h"
|
||||
#include "demo_blank.h"
|
||||
#include "demo_end_of_frame.h"
|
||||
|
||||
void help() {
|
||||
woz_puts(
|
||||
|
@ -24,6 +17,7 @@ void help() {
|
|||
"A AMIGA HAND\r"
|
||||
"I INTERRUPT\r"
|
||||
"E FLIP EXT VIDEO\r"
|
||||
"F TEST END-OF-FRAME\r"
|
||||
"B BLANK ON/OFF\r"
|
||||
"H HELP\r"
|
||||
"0 EXITS\r\r"
|
||||
|
@ -38,11 +32,12 @@ void main() {
|
|||
|
||||
byte key = 'H';
|
||||
for(;;) {
|
||||
if(key == '1') prova_screen1();
|
||||
else if(key == '2') prova_screen2();
|
||||
if(key == '1') demo_screen1();
|
||||
else if(key == '2') demo_screen2();
|
||||
else if(key == 'A') demo_amiga_hand();
|
||||
else if(key == 'I') demo_interrupt();
|
||||
else if(key == 'E') flip_external_input();
|
||||
else if(key == 'F') demo_end_of_frame();
|
||||
else if(key == 'B') flip_blank();
|
||||
else if(key == 'H') help();
|
||||
else if(key == '0') break;
|
|
@ -158,12 +158,12 @@ void demo_amiga_hand() {
|
|||
tms_init_regs(SCREEN2_TABLE);
|
||||
screen2_init_bitmap(FG_BG(COLOR_BLACK,COLOR_WHITE));
|
||||
|
||||
screen2_puts(0, 0, FG_BG(COLOR_BLACK,COLOR_WHITE), "*** P-LAB VIDEO CARD SYSTEM ***");
|
||||
screen2_puts(0, 2, FG_BG(COLOR_BLACK,COLOR_WHITE), "16K VRAM BYTES FREE");
|
||||
screen2_puts(0, 4, FG_BG(COLOR_BLACK,COLOR_WHITE), "READY.");
|
||||
screen2_puts("*** P-LAB VIDEO CARD SYSTEM ***", 0, 0, FG_BG(COLOR_BLACK,COLOR_WHITE));
|
||||
screen2_puts("16K VRAM BYTES FREE" , 0, 2, FG_BG(COLOR_BLACK,COLOR_WHITE));
|
||||
screen2_puts("READY." , 0, 4, FG_BG(COLOR_BLACK,COLOR_WHITE));
|
||||
|
||||
for(word p=0;p<612;p+=4) {
|
||||
vti_line(amiga_data[p],amiga_data[p+1],amiga_data[p+2],amiga_data[p+3]);
|
||||
screen2_line(amiga_data[p],amiga_data[p+1],amiga_data[p+2],amiga_data[p+3]);
|
||||
}
|
||||
screen2_puts(18, 12, FG_BG(COLOR_DARK_BLUE, COLOR_WHITE), "APPLE1");
|
||||
screen2_puts("APPLE1", 18, 12, FG_BG(COLOR_DARK_BLUE, COLOR_WHITE));
|
||||
}
|
|
@ -0,0 +1,26 @@
|
|||
void demo_end_of_frame() {
|
||||
tms_init_regs(SCREEN1_TABLE);
|
||||
screen1_prepare();
|
||||
screen1_load_font();
|
||||
|
||||
screen1_puts(
|
||||
CLS "\n"
|
||||
"Waitining for 600 ticks by\n"
|
||||
"counting the " REVERSE_ON "END-OF-FRAME" REVERSE_OFF " bit.\n\n"
|
||||
"It will take about 10 seconds.\n\n"
|
||||
);
|
||||
|
||||
word secs = 0;
|
||||
word ticks = 0;
|
||||
while(secs<10) {
|
||||
tms_wait_end_of_frame();
|
||||
ticks++;
|
||||
if(ticks==60) {
|
||||
secs++;
|
||||
ticks = 0;
|
||||
screen1_puts("60 ticks!\n");
|
||||
}
|
||||
}
|
||||
screen1_puts("\n\nDONE!");
|
||||
}
|
||||
|
|
@ -8,7 +8,7 @@ void flip_external_input() {
|
|||
else woz_puts("EXT INPUT OFF\r");
|
||||
|
||||
// fill color table with transparent color so that external input can be seen
|
||||
tms_set_vram_write_addr(SCREEN1_COLOR_TABLE);
|
||||
tms_set_vram_write_addr(TMS_COLOR_TABLE);
|
||||
for(byte i=32;i!=0;i--) {
|
||||
TMS_WRITE_DATA_PORT(FG_BG(COLOR_DARK_YELLOW, COLOR_TRANSPARENT));
|
||||
}
|
|
@ -0,0 +1,50 @@
|
|||
#include <string.h>
|
||||
|
||||
void screen1_square_sprites() {
|
||||
// fills first sprite pattern with 255
|
||||
tms_set_vram_write_addr(TMS_SPRITE_PATTERNS); // start writing in the sprite patterns
|
||||
for(byte i=0;i<8;i++) {
|
||||
TMS_WRITE_DATA_PORT(255);
|
||||
}
|
||||
|
||||
// set sprite coordinates
|
||||
tms_set_vram_write_addr(TMS_SPRITE_ATTRS); // start writing in the sprite attribute
|
||||
for(byte i=0;i<32;i++) {
|
||||
TMS_WRITE_DATA_PORT((6+i)*8); NOP; NOP; NOP; NOP; // y coordinate
|
||||
TMS_WRITE_DATA_PORT((6+i)*8); NOP; NOP; NOP; NOP; // x coordinate
|
||||
TMS_WRITE_DATA_PORT(0); NOP; NOP; NOP; NOP; // name
|
||||
TMS_WRITE_DATA_PORT(i); NOP; NOP; NOP; NOP; // color
|
||||
}
|
||||
}
|
||||
|
||||
byte buffer[32];
|
||||
void demo_screen1() {
|
||||
tms_init_regs(SCREEN1_TABLE);
|
||||
screen1_prepare();
|
||||
screen1_load_font();
|
||||
|
||||
screen1_putc(CHR_CLS);
|
||||
screen1_puts(
|
||||
"*** P-LAB VIDEO CARD SYSTEM ***\n"
|
||||
"16K VRAM BYTES FREE\n\n"
|
||||
"READY.\n\n\n"
|
||||
);
|
||||
|
||||
screen1_puts("what about " REVERSE_ON " REVERSE text " REVERSE_OFF " ?\n\n\n\n");
|
||||
|
||||
for(word i=32;i<128;i++) screen1_putc((byte)i);
|
||||
screen1_puts("\n\n" REVERSE_ON);
|
||||
for(word i=32;i<128;i++) screen1_putc((byte)i);
|
||||
|
||||
screen1_square_sprites();
|
||||
|
||||
while(1) {
|
||||
screen1_puts(REVERSE_OFF "\n\nWRITE HERE: >");
|
||||
screen1_strinput(buffer,16);
|
||||
if(strlen(buffer)==0) break;
|
||||
screen1_puts("\n\n\nyou wrote: '");
|
||||
screen1_puts(buffer);
|
||||
screen1_puts("'");
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
void demo_screen2() {
|
||||
tms_init_regs(SCREEN2_TABLE);
|
||||
|
||||
byte text_color = FG_BG(COLOR_BLACK,COLOR_WHITE);
|
||||
|
||||
screen2_init_bitmap(text_color);
|
||||
screen2_puts("*** P-LAB VIDEO CARD SYSTEM ***", 0, 0, text_color);
|
||||
screen2_puts("16K VRAM BYTES FREE" , 0, 2, text_color);
|
||||
screen2_puts("READY." , 0, 4, text_color);
|
||||
|
||||
// display all colors in the palette
|
||||
for(byte i=0;i<16;i++) {
|
||||
screen2_puts(" SCREEN 2 ",5,(byte)(6+i),(byte)(((15-i)<<4)+i));
|
||||
}
|
||||
|
||||
screen2_line(18, 45,232,187);
|
||||
screen2_line(18,187,232, 45);
|
||||
|
||||
screen2_plot_mode = PLOT_MODE_RESET;
|
||||
|
||||
screen2_line(18+5, 45,232+5,187);
|
||||
screen2_line(18+5,187,232+5, 45);
|
||||
|
||||
screen2_plot_mode = PLOT_MODE_INVERT;
|
||||
|
||||
screen2_line(18+5+5, 45,232+5+5,187);
|
||||
screen2_line(18+5+5,187,232+5+5, 45);
|
||||
|
||||
screen2_plot_mode = PLOT_MODE_SET;
|
||||
|
||||
//vti_ellipse_rect(7,9,202,167);
|
||||
}
|
|
@ -0,0 +1,2 @@
|
|||
@call ..\..\tools\build demo
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
@call ..\..\tools\build picshow
|
||||
|
|
@ -0,0 +1,388 @@
|
|||
// file generated automatically by 'bin2js'. Do not edit
|
||||
|
||||
const byte pic_c[] = {
|
||||
0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x3e,0xd3,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x3e,0xd3,
|
||||
0x1e,0xfe,0xfe,0xfe,0x1e,0x1e,0x3e,0xcd,0xfe,0xfe,0xfe,0x1e,0x1e,0x1e,0x3e,0xcd,
|
||||
0xfe,0xef,0xef,0xfe,0xfe,0x1e,0x1e,0xd3,0xfe,0xfe,0xef,0xef,0xfe,0x1e,0x1e,0x3e,
|
||||
0xef,0xfe,0xfe,0xef,0xef,0xfe,0x1e,0x1e,0x1f,0xfe,0xfe,0xfe,0xfe,0xfe,0x1e,0x1e,
|
||||
0x1f,0x1f,0xfe,0x1e,0xfe,0xfe,0x1e,0x1e,0x1f,0x1f,0x1f,0x1e,0x1e,0x1e,0x1e,0x1e,
|
||||
0x1f,0x1f,0x1f,0xef,0x1e,0x1e,0x1e,0x1e,0x1f,0x1f,0x1f,0x1f,0xef,0x1e,0x1e,0x1e,
|
||||
0x1f,0x1f,0x1f,0x1f,0x1f,0x1e,0x1e,0x1e,0x1f,0x1f,0x1f,0x1f,0x1f,0xef,0x1e,0x1e,
|
||||
0x1f,0xef,0x1f,0x1f,0x1f,0x1f,0xfe,0x1e,0xfe,0xef,0x1f,0x1f,0x1f,0x1f,0xef,0x1e,
|
||||
0xfe,0xfe,0xef,0xef,0xef,0xef,0xef,0xfe,0xfe,0xfe,0xfe,0xfe,0x1e,0x1e,0x36,0xcd,
|
||||
0x1e,0xfe,0xfe,0xfe,0x1e,0x1e,0x9e,0xdc,0xde,0xde,0x6e,0xde,0xce,0xde,0xde,0xd3,
|
||||
0xcd,0xcd,0xcd,0x3d,0x3d,0xcd,0x3d,0x3d,0xcd,0x3d,0x3d,0xcd,0xcd,0x1d,0xc1,0xd1,
|
||||
0x3d,0x3d,0xcd,0x46,0x41,0x41,0x41,0x41,0x3d,0xcd,0xcd,0xcd,0x41,0x41,0x41,0x41,
|
||||
0xde,0xce,0xde,0xce,0x6e,0x1e,0xe4,0x31,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,
|
||||
0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,
|
||||
0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x3e,0x1e,0x3e,0x1e,0x1e,0x1e,0x1e,
|
||||
0xde,0xce,0xde,0xd3,0xce,0xde,0xce,0xde,0x16,0x14,0x16,0xd1,0x1d,0x46,0x61,0x1d,
|
||||
0x3e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x3e,0xcd,0xec,0xde,0x4e,0x1e,0x1e,0x1e,0x1e,
|
||||
0xdc,0xcd,0xcd,0x6c,0x11,0x41,0x41,0x11,0xcd,0xcd,0xdc,0xcd,0x41,0x41,0x41,0x41,
|
||||
0xcd,0xdc,0xdc,0xdc,0x64,0x11,0x41,0x41,0xd3,0xcd,0xd3,0xd3,0xce,0x4f,0x1d,0xc1,
|
||||
0x3e,0xd3,0xd3,0x3d,0xfe,0xfe,0xed,0x41,0x1e,0x3e,0xd3,0xd3,0xde,0xce,0xde,0x4c,
|
||||
0x1e,0x3e,0x3e,0xd3,0x3e,0x3e,0x3e,0xde,0x1e,0x1e,0x1e,0x3e,0x1e,0xfe,0x6f,0xcf,
|
||||
0x1e,0x1e,0x1e,0x3e,0x3e,0x39,0x3d,0xc6,0x1e,0x1e,0x1e,0x1e,0x3e,0x3e,0xcd,0x1d,
|
||||
0x1e,0x1e,0x1e,0x1e,0x1e,0x3e,0xcd,0x14,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0xd3,0x1d,
|
||||
0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x3e,0xce,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x36,0xcd,
|
||||
0x1e,0x1e,0x1e,0x1e,0x1e,0x3d,0xcd,0xcd,0xcd,0xcd,0x3d,0x3d,0x3d,0x3d,0xcd,0xcd,
|
||||
0xcd,0x3d,0xcd,0x3d,0x3d,0x3d,0xcd,0xc6,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0xcd,0x46,
|
||||
0x3d,0x3d,0x3d,0x1d,0x13,0x1d,0x16,0xc1,0x61,0x41,0x41,0x41,0x41,0x41,0x41,0x41,
|
||||
0x41,0x41,0x41,0x41,0x41,0x41,0x61,0x61,0x14,0x61,0x41,0xd1,0x1d,0x1c,0x1d,0x16,
|
||||
0xd1,0x14,0x41,0x41,0x41,0x41,0x41,0x41,0x1e,0xae,0xce,0x6e,0xce,0x1e,0x1e,0x1e,
|
||||
0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,
|
||||
0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,
|
||||
0xce,0xde,0xce,0xde,0xce,0x5e,0xce,0xde,0x1d,0xd1,0x1d,0x41,0x41,0x41,0x41,0x41,
|
||||
0x3e,0xd3,0xcd,0xe1,0x1e,0xe1,0xa4,0x1d,0x1e,0xc1,0x41,0x11,0x41,0x11,0x41,0x11,
|
||||
0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x61,0x41,0x41,0xd1,
|
||||
0x41,0x41,0xd1,0x41,0x16,0x41,0x61,0x14,0x41,0x41,0x61,0x14,0xc1,0x64,0x61,0x14,
|
||||
0x41,0x61,0x41,0x41,0x61,0x41,0xc1,0x41,0x11,0x11,0x41,0x41,0x41,0x41,0x41,0x41,
|
||||
0x6e,0xce,0x1e,0x4e,0x1a,0x1d,0xec,0x1d,0xdf,0xce,0xfe,0xfe,0xfe,0xfe,0xfe,0x3e,
|
||||
0xcd,0xcd,0xcd,0xcd,0x1d,0x36,0xe4,0xe6,0xc4,0x46,0xcd,0x64,0xcd,0x46,0xcd,0x64,
|
||||
0x14,0x46,0xcd,0xcd,0xcd,0xcd,0xcd,0xcd,0xdc,0xcd,0xcd,0xd3,0xce,0xed,0xca,0xde,
|
||||
0xda,0xde,0xda,0xce,0xad,0xcd,0xcd,0x46,0xcd,0x46,0x46,0x16,0x64,0x16,0x64,0x64,
|
||||
0x46,0x64,0xd1,0x64,0xd1,0x64,0xd1,0x64,0x46,0x1d,0x14,0x61,0x14,0x16,0x14,0x61,
|
||||
0x14,0x41,0xd1,0x41,0x41,0xd1,0x41,0xd1,0x41,0x41,0xd1,0x41,0x41,0x41,0xd1,0x41,
|
||||
0xd1,0xd1,0xc1,0xd1,0xd1,0xc1,0xd1,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,
|
||||
0x61,0x16,0x16,0x16,0x16,0x16,0xa6,0x16,0xa4,0x16,0x1a,0xe6,0x1a,0x36,0x16,0x16,
|
||||
0x41,0x41,0x41,0x11,0x41,0x11,0x41,0x41,0xe1,0xe4,0xe1,0xe1,0xe1,0xe1,0xe1,0xd1,
|
||||
0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,
|
||||
0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,
|
||||
0x4e,0xce,0xde,0x4e,0x4e,0xce,0x4e,0x4e,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,
|
||||
0x1c,0x61,0x41,0x41,0x11,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,
|
||||
0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x61,0x41,0x41,0x41,0x41,0xd1,
|
||||
0x16,0x14,0x61,0x14,0x16,0x41,0xc1,0x1d,0x16,0x14,0xc6,0x14,0x46,0x41,0x46,0x1c,
|
||||
0xd1,0xc1,0x41,0x61,0x41,0x61,0x64,0x46,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,
|
||||
0x1c,0x16,0x1d,0xcd,0x1d,0x1c,0x1d,0x41,0xae,0xde,0xce,0x6e,0x4e,0xe6,0x34,0xcd,
|
||||
0x4e,0x6e,0xce,0xfe,0xfe,0x1e,0x1e,0x1e,0xcd,0x46,0x46,0xdc,0xcd,0xcd,0xed,0xdc,
|
||||
0xed,0xec,0x3d,0xce,0xed,0xce,0xde,0x3e,0xca,0x3d,0xca,0xed,0xac,0x3d,0xad,0xdc,
|
||||
0xcd,0x64,0xcd,0x46,0xcd,0xcd,0xcd,0xcd,0xd1,0x64,0x64,0x64,0x16,0xc4,0x46,0xdc,
|
||||
0x1d,0x14,0x16,0x14,0x16,0x14,0xcd,0xcd,0x14,0xd1,0x41,0xd1,0x14,0x16,0xcd,0xdc,
|
||||
0x14,0x41,0x14,0xd1,0x41,0x1d,0xdc,0xcd,0x41,0x14,0xd1,0x41,0x41,0x46,0xdc,0xcd,
|
||||
0x61,0xc1,0xd1,0x41,0x61,0xc1,0xd1,0xc1,0x61,0x61,0x41,0xd1,0x16,0x61,0x61,0x16,
|
||||
0x16,0x16,0x16,0x16,0xc6,0x19,0x6e,0x6b,0x16,0x61,0x61,0x16,0xe6,0xa6,0xb6,0xca,
|
||||
0x61,0x61,0x61,0x1c,0x1b,0x6b,0xcb,0x6b,0xc1,0xe1,0xe1,0x41,0xc1,0x41,0x41,0x61,
|
||||
0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0xce,0xde,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,
|
||||
0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0xfe,0xfe,0xfe,0xfe,0xef,0xfe,0xfe,0xfe,
|
||||
0x4e,0x4e,0xce,0x4e,0x4e,0x4e,0xce,0x4e,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,
|
||||
0x11,0x41,0x41,0x11,0x41,0x41,0x11,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,
|
||||
0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x61,0x41,0x14,0x61,0x14,
|
||||
0x14,0x61,0x14,0xc1,0x64,0x14,0x46,0xc1,0x64,0xd1,0xc1,0x14,0x61,0x41,0xc1,0x41,
|
||||
0x1c,0x14,0x61,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,
|
||||
0x61,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x3d,0x1e,0x1d,0x31,0xd1,0xc1,0x41,0x41,
|
||||
0x1e,0x1e,0x3e,0x1e,0xbe,0x1e,0x1e,0xae,0xed,0xe3,0xae,0x9e,0x3e,0x9e,0x3e,0xae,
|
||||
0x9e,0xce,0xde,0xce,0xde,0xce,0xde,0xce,0xd3,0xae,0xd3,0x3e,0x93,0x93,0xde,0xe3,
|
||||
0xcd,0xd3,0xd3,0xd3,0x3d,0x3d,0xd3,0xec,0xcd,0xd3,0x3d,0xdc,0xcd,0xdc,0xd3,0xdc,
|
||||
0xdc,0x3d,0xd3,0xcd,0x3d,0xdc,0x3d,0xd3,0xcd,0xd3,0x3d,0xcd,0xcd,0x3d,0xcd,0xd3,
|
||||
0xd3,0xd3,0x3d,0xd3,0xcd,0xd3,0x3d,0xd3,0x3d,0xd3,0x3d,0xd3,0xcd,0xd3,0x3d,0xd3,
|
||||
0xd1,0x31,0x1d,0x13,0x1d,0x1c,0x1d,0x43,0xc6,0xda,0x1a,0x19,0x9c,0x19,0x16,0x1a,
|
||||
0xdb,0xcb,0x6b,0x6b,0xa6,0xc6,0x16,0x16,0xea,0x9a,0x6a,0xa6,0xc6,0x6a,0x6a,0xc6,
|
||||
0x9a,0xda,0x9a,0xda,0x6a,0x6a,0xda,0x6a,0x61,0x61,0x61,0xc1,0x91,0x91,0xc1,0x91,
|
||||
0xce,0xdb,0xca,0x6a,0x6c,0x6a,0xc6,0x1a,0xbe,0xab,0x6a,0xc6,0x6a,0x6c,0xa6,0xc6,
|
||||
0xbe,0x3a,0xc6,0x16,0x16,0x16,0x16,0x61,0xfe,0xce,0x6e,0xce,0x1e,0x6e,0x1e,0x6e,
|
||||
0x4e,0x4e,0xce,0x4e,0x4e,0x4e,0xce,0x4e,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,
|
||||
0x11,0x41,0x11,0x41,0x11,0x41,0x11,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,
|
||||
0x41,0x41,0x41,0x41,0x41,0xd1,0x41,0x14,0xc1,0x14,0x1d,0x14,0x1c,0x64,0x41,0xd1,
|
||||
0x64,0xc1,0x64,0x1d,0x4c,0x46,0x14,0x41,0x61,0x41,0x61,0x41,0x41,0xc1,0x41,0x41,
|
||||
0x41,0x41,0x41,0x41,0x16,0x1d,0x36,0x1a,0x41,0x41,0x41,0x61,0x61,0x16,0x16,0xa6,
|
||||
0x61,0x1d,0x16,0x1a,0xa6,0x1a,0x6a,0xe6,0x41,0x61,0x61,0x61,0x61,0x61,0x61,0xa1,
|
||||
0xce,0xde,0x1e,0x1e,0x4a,0x1e,0x1e,0x1e,0x3e,0xae,0x3e,0xae,0x1e,0x3e,0xae,0x3e,
|
||||
0x6e,0xce,0xce,0xde,0xce,0x9e,0xce,0xde,0xde,0x3e,0xde,0x3e,0xae,0x3e,0x1e,0x3e,
|
||||
0x3d,0x3d,0xd3,0xce,0x3d,0xce,0xd3,0xd3,0xd3,0xd3,0xd3,0x3d,0xd3,0xd3,0xd3,0xd3,
|
||||
0xd3,0xd3,0xd3,0xd3,0xd3,0xd3,0xd3,0xd3,0xd3,0xd3,0xd3,0xd3,0xd3,0xd3,0xd3,0xd3,
|
||||
0xd3,0xd3,0xd3,0xd3,0xd3,0x3d,0xd3,0xd3,0x3d,0xd3,0xd3,0xd3,0xd3,0xd3,0xd3,0xd3,
|
||||
0x3d,0xd3,0xd3,0xd3,0xd3,0xd3,0xd3,0x3d,0x16,0x1c,0x46,0x16,0x1c,0x16,0x1d,0x6c,
|
||||
0x36,0x16,0xc6,0x16,0x16,0x16,0x16,0xc6,0x16,0x16,0x16,0xa6,0xa6,0xc6,0xa6,0xc6,
|
||||
0xc9,0x6a,0xc6,0xa6,0xc6,0x16,0x16,0x16,0x91,0x61,0x61,0xc1,0x61,0x61,0x31,0x91,
|
||||
0x6a,0xca,0xa6,0x6a,0x6a,0x6e,0x6e,0xe6,0x6a,0xc6,0xa6,0xac,0xda,0xce,0x3e,0xde,
|
||||
0x16,0x16,0x16,0xc6,0x6c,0x1d,0x1c,0xd1,0x1e,0xcd,0xcd,0xdc,0x41,0x11,0x41,0x11,
|
||||
0x4e,0xce,0x4e,0x13,0x1d,0xc1,0x11,0x11,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,
|
||||
0x11,0x41,0x41,0x41,0x11,0x41,0x11,0x41,0x41,0x41,0x41,0x41,0x11,0x41,0x41,0x41,
|
||||
0x1c,0x14,0x16,0x14,0x1c,0x14,0x16,0x14,0x31,0xe4,0xec,0xed,0xe4,0xcd,0xe4,0xec,
|
||||
0x41,0x41,0xc4,0x64,0xc4,0x64,0x4c,0xcd,0x41,0x41,0x41,0xc1,0x41,0x41,0x41,0x41,
|
||||
0x1e,0x6a,0x1e,0x19,0x36,0x1d,0x36,0xa6,0x6a,0x39,0x6a,0xc6,0x61,0x16,0x61,0x61,
|
||||
0xca,0xe9,0x6a,0xc6,0x61,0x16,0x16,0xa1,0x1a,0x19,0x13,0x16,0x16,0x6c,0x16,0x36,
|
||||
0x1a,0x13,0x19,0x13,0x19,0x13,0x19,0x13,0xae,0x1e,0x3e,0xae,0x1e,0xae,0x3e,0xbe,
|
||||
0xce,0xde,0xce,0xde,0xce,0x6e,0xce,0xce,0x3e,0xae,0x3e,0x3e,0x9e,0x3e,0xde,0xde,
|
||||
0xde,0xec,0xd3,0xd3,0xce,0xd3,0xde,0xce,0xd3,0xd3,0xd3,0x3d,0xd3,0x3d,0x3d,0x93,
|
||||
0xd3,0xd3,0x39,0xda,0xea,0x6b,0x6a,0xa6,0x3d,0xd3,0xd3,0xda,0xea,0xb6,0x6a,0x6a,
|
||||
0xd3,0x3d,0xd3,0xd3,0xd3,0xd3,0x39,0xd3,0x3d,0xd3,0xd3,0x3d,0xd3,0xd3,0x3d,0xd3,
|
||||
0xd3,0xd3,0xd3,0xd3,0xd3,0x3d,0xd3,0xd3,0x1d,0x63,0x1d,0x63,0x6d,0x36,0x1d,0x36,
|
||||
0xc6,0xc6,0x16,0x16,0x16,0x61,0x61,0x61,0x6a,0xc6,0x16,0x16,0x16,0x16,0x16,0x16,
|
||||
0x16,0x16,0x16,0x16,0x16,0x16,0x16,0xc6,0xa1,0x16,0x1a,0x16,0x1a,0x16,0xa1,0x16,
|
||||
0x36,0x36,0x16,0xe6,0xe6,0xa6,0x96,0xa6,0x93,0xde,0xec,0xde,0x3e,0xcd,0x1d,0xe1,
|
||||
0xc1,0x41,0x61,0x14,0x1c,0x14,0xc1,0x41,0x11,0x41,0x41,0x41,0x41,0x11,0x11,0x11,
|
||||
0x11,0x11,0x41,0x15,0x4e,0x1e,0x15,0xc1,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,
|
||||
0x11,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,
|
||||
0x1c,0x14,0x14,0x14,0x41,0x41,0x14,0x41,0xed,0x54,0x41,0x11,0x41,0x41,0x41,0x41,
|
||||
0x3d,0xc4,0x41,0x41,0x41,0x61,0x14,0x41,0x41,0xc1,0x41,0x61,0x61,0x61,0xd1,0x16,
|
||||
0x36,0x6a,0x6a,0xde,0xda,0xda,0xc9,0x36,0x61,0x16,0xa6,0xa6,0xca,0x6a,0xa6,0x96,
|
||||
0xe6,0xa6,0xe6,0xba,0xeb,0x6b,0x6b,0x6a,0xa6,0xca,0x6e,0x6b,0xab,0x9a,0xa6,0x16,
|
||||
0x1d,0xa1,0x13,0x1d,0xa4,0x1c,0xe6,0xa4,0xae,0x3e,0xae,0xae,0x3e,0xae,0x1e,0xae,
|
||||
0xde,0xce,0x6e,0xce,0xde,0xce,0x3e,0x1e,0xce,0xce,0xde,0xce,0xde,0xce,0x6e,0xce,
|
||||
0xd3,0x3e,0xde,0xd3,0x3e,0xed,0xe3,0xde,0xad,0x63,0x39,0xd3,0x39,0x3d,0xcd,0xd3,
|
||||
0xa6,0x96,0x16,0x16,0x16,0x16,0x16,0x16,0xb6,0x96,0x96,0x16,0x16,0x16,0x16,0xa6,
|
||||
0x63,0x59,0x63,0xad,0x63,0x3d,0x3e,0xde,0xd3,0x3d,0xd3,0xd3,0xd3,0x3d,0xd3,0x1e,
|
||||
0x3d,0xd3,0xd3,0x3d,0x3e,0xce,0xef,0xef,0x36,0x36,0xe6,0x6e,0x6f,0xef,0x1f,0x1f,
|
||||
0x16,0x16,0x16,0x16,0x16,0x16,0xe6,0xe6,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
|
||||
0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0xc6,0x16,0x16,0x16,0x16,0x16,
|
||||
0x96,0xb6,0xf6,0xf6,0x6f,0x6f,0x6f,0xef,0x1e,0xfe,0xef,0x1f,0x1f,0x1f,0x1f,0x1f,
|
||||
0x41,0x41,0xd1,0xe1,0xdf,0xef,0x1f,0x1f,0x11,0x14,0x4e,0x1e,0xce,0x6e,0x1e,0xfe,
|
||||
0x41,0xc1,0x1e,0x4e,0x4e,0xce,0x5e,0x4c,0x11,0x11,0x11,0x11,0x41,0x41,0x41,0x11,
|
||||
0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,
|
||||
0x41,0x41,0x14,0x41,0x41,0x41,0x41,0x41,0x41,0xc1,0x1d,0x41,0x41,0x41,0x41,0x41,
|
||||
0x41,0x41,0xc1,0x41,0x41,0x41,0x41,0x41,0xd1,0x41,0x51,0x41,0x41,0x41,0x41,0x41,
|
||||
0x16,0x16,0x46,0x16,0x16,0x61,0x41,0x61,0x16,0x16,0x61,0x61,0x61,0x16,0x16,0x16,
|
||||
0xc6,0x16,0x61,0x61,0x61,0x16,0x16,0x36,0x16,0x16,0x1c,0x16,0x61,0x61,0x41,0x61,
|
||||
0x1c,0x1d,0x4c,0x1d,0xec,0xed,0xd3,0xcb,0xae,0x3e,0xae,0x3e,0xea,0x3e,0x9e,0x3e,
|
||||
0xae,0x3e,0x1e,0xae,0x3e,0x1e,0x3e,0x1e,0xde,0xce,0xda,0xec,0x63,0xc9,0x63,0xce,
|
||||
0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0xae,0x1e,0x3e,0xde,0x3e,0x9e,0x3e,0x9e,0x3e,0x3e,
|
||||
0x6e,0x1e,0x1e,0xfe,0xfe,0xfe,0xfe,0xfe,0x9e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0xfe,
|
||||
0x1e,0x1e,0x1e,0x1e,0xfe,0xfe,0xfe,0xfe,0x1e,0xfe,0xfe,0xfe,0xef,0xef,0xef,0xef,
|
||||
0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,
|
||||
0xe1,0xf6,0xfe,0xfe,0xef,0x1f,0x1f,0x1f,0xc6,0xe6,0x6e,0x1f,0x6e,0x6e,0xce,0xfe,
|
||||
0x16,0x16,0x6a,0x6e,0x1e,0x1e,0x1e,0x1e,0xe6,0xe6,0x6f,0xfe,0xfe,0xef,0xef,0xef,
|
||||
0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,
|
||||
0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0xcf,0xdf,0xcf,0xef,0x1f,0x1f,0x1f,0x1f,
|
||||
0x41,0x1c,0x14,0xc1,0xd1,0xe1,0xe1,0xe1,0x41,0x11,0x41,0x41,0x41,0x41,0x11,0x41,
|
||||
0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x11,0x41,0x41,0x41,0x11,0x41,0x41,
|
||||
0x14,0x1c,0x4d,0xdc,0x1d,0x4c,0x1d,0xc5,0x14,0x1c,0x1d,0xc4,0x1d,0x1c,0x4d,0x15,
|
||||
0x41,0x61,0x14,0xc1,0xd1,0x51,0x15,0xc1,0xd1,0x51,0xe1,0xe4,0xe1,0x1e,0x4f,0xcf,
|
||||
0xd1,0x41,0x61,0x31,0xd1,0xa1,0xd1,0xa1,0x16,0x16,0x16,0x16,0x61,0x41,0x61,0x41,
|
||||
0x36,0x16,0xc6,0xc6,0x61,0x61,0x41,0x41,0xd1,0xc1,0xd1,0x1c,0x1d,0x43,0x19,0x63,
|
||||
0xce,0x39,0x93,0xd3,0x93,0x93,0x3e,0x39,0x3e,0x1e,0xef,0xef,0xef,0xfe,0x3e,0xae,
|
||||
0x1e,0xfe,0xef,0xef,0xef,0xfe,0xce,0xde,0x1e,0xef,0x1f,0x1f,0xfe,0x1e,0xdc,0xcd,
|
||||
0x1e,0x1e,0xfe,0xfe,0x1e,0x3e,0xcd,0xdc,0xae,0x3e,0x1e,0x1e,0xfe,0xde,0xce,0xce,
|
||||
0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xef,0xef,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,
|
||||
0xfe,0xfe,0x1e,0x1e,0x1e,0xfe,0xfe,0xfe,0xef,0xef,0xef,0xef,0xef,0xfe,0xfe,0xfe,
|
||||
0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,
|
||||
0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0xef,0x1f,0x1f,0x1f,0x1f,0x1f,0xef,0xfe,
|
||||
0xfe,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0x1f,0x1f,0x1f,0x1f,0x1f,
|
||||
0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,
|
||||
0x1f,0x1f,0x1f,0x1f,0xef,0xef,0xef,0xef,0x1f,0x1f,0x1f,0x1f,0x1f,0xef,0xef,0xef,
|
||||
0xe1,0xf1,0xe1,0xf1,0xf1,0x1f,0x1f,0x1f,0x41,0x41,0x11,0x11,0x11,0x11,0x11,0x11,
|
||||
0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x11,0x41,0x41,0x11,0x41,0x11,
|
||||
0x14,0x14,0x4c,0x1d,0x1c,0xd4,0x1c,0x4d,0xc1,0xcd,0xcd,0xdc,0xcd,0xe4,0x6f,0xef,
|
||||
0x64,0xed,0xce,0xdf,0xef,0x1f,0xef,0xef,0xdf,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,
|
||||
0xe6,0xe1,0xe6,0xe1,0xf6,0xf6,0x6f,0xdf,0x41,0x41,0x11,0x41,0x61,0x61,0x16,0x16,
|
||||
0x41,0x41,0x41,0x61,0x61,0x16,0x16,0xc6,0x1d,0xec,0xf6,0xfd,0xfc,0xf6,0xfd,0xfc,
|
||||
0x3e,0x39,0x93,0xde,0xfe,0xef,0x1f,0x1f,0x93,0x3d,0xd3,0xcd,0xdc,0xd3,0xed,0xf3,
|
||||
0x1e,0x6e,0xec,0xcd,0xcd,0x6c,0xcd,0xcd,0xd3,0x1e,0xfe,0xae,0xd3,0xd1,0xc1,0x11,
|
||||
0xde,0x1e,0xfe,0x1e,0x4c,0x11,0x11,0x11,0xfe,0xfe,0x1e,0xec,0x41,0x11,0x41,0xd1,
|
||||
0xef,0xfe,0x1e,0xdc,0xe1,0x4e,0xce,0x1e,0x1e,0x1e,0x1e,0x1e,0x3e,0x1e,0x1e,0xce,
|
||||
0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,
|
||||
0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,
|
||||
0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0xfe,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,
|
||||
0xef,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0xef,0x1f,
|
||||
0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0xef,0xef,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,
|
||||
0xef,0xef,0xef,0xef,0xfe,0xef,0xfe,0xfe,0xef,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,
|
||||
0x1f,0x1f,0x1f,0x4f,0x1f,0x1f,0xef,0xef,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
|
||||
0x41,0x11,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0xd1,0xe1,0xe1,0xf4,0x1f,
|
||||
0x1d,0xcf,0xdf,0xef,0x1f,0x1f,0x1f,0xef,0x1f,0x1f,0x1f,0x1f,0xef,0xef,0xef,0xfe,
|
||||
0xef,0xef,0xef,0xef,0xef,0xfe,0xfe,0xfe,0x1f,0x1f,0xef,0x1f,0xef,0xef,0xfe,0xfe,
|
||||
0xcf,0x6f,0xfe,0xfd,0xec,0xed,0xdc,0xd3,0x16,0x16,0x16,0x36,0xe1,0x6e,0xed,0x1e,
|
||||
0x16,0xc6,0x1d,0xc6,0xc6,0xed,0xec,0xe6,0xfd,0x6f,0x1e,0x1e,0xde,0x3d,0xcd,0xd3,
|
||||
0xef,0x1f,0x1f,0x1f,0xef,0xef,0x3f,0xde,0xef,0xef,0xef,0x1f,0xef,0xef,0xef,0xef,
|
||||
0x1c,0x1d,0x1e,0x4f,0xef,0xef,0x1f,0xef,0x11,0x11,0x41,0x11,0x41,0xd1,0xed,0xfc,
|
||||
0x11,0x11,0x41,0x11,0x41,0x41,0x16,0x41,0x31,0x41,0x41,0x11,0x41,0x41,0x61,0x41,
|
||||
0x3e,0x41,0x41,0x14,0x6c,0xc1,0xd1,0x41,0xc4,0x41,0xcd,0xdc,0x3d,0xdc,0xcd,0xcd,
|
||||
0xfe,0xfe,0xfe,0xfe,0xfe,0xef,0xef,0xef,0xfe,0x1e,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,
|
||||
0x1f,0xef,0x1f,0xef,0x1f,0xef,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,
|
||||
0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0xef,0x1f,0x1f,0x1f,0x1f,
|
||||
0x1f,0x1f,0x1f,0xef,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0xef,0x1f,0x1f,0x1f,0x1f,
|
||||
0xef,0x1f,0xef,0xef,0xef,0xef,0xef,0x1f,0xef,0x1f,0x1f,0x1f,0xef,0xef,0xef,0xef,
|
||||
0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0x1e,0x1e,0xfe,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,
|
||||
0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0x41,0xc1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
|
||||
0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x1e,0x1f,0x4f,0x1f,0x1f,0x1f,0xdf,0xcf,
|
||||
0xef,0xef,0xef,0xef,0xfe,0xfe,0xef,0xef,0xfe,0xef,0xfe,0xfe,0xfe,0xef,0xfe,0xfe,
|
||||
0xfe,0xfe,0xfe,0xfe,0xfe,0xef,0xef,0xef,0x3e,0xfe,0xfe,0xfe,0xef,0xef,0xef,0xef,
|
||||
0xde,0x3e,0x1e,0x1e,0x1e,0xfe,0xef,0xef,0x1e,0xde,0xfe,0xfe,0xfe,0xef,0xef,0xef,
|
||||
0xe6,0x1e,0xde,0xce,0xde,0xce,0xef,0xef,0xd3,0xde,0x3e,0x1e,0x1e,0xfe,0xfe,0xfe,
|
||||
0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,
|
||||
0xef,0xef,0xef,0xfe,0xfe,0xef,0xfe,0xef,0xe1,0xf1,0x1e,0x1e,0x1e,0x1e,0x1e,0x4e,
|
||||
0x41,0x41,0x41,0x41,0x41,0xd1,0x41,0x41,0x61,0x1c,0x1d,0x16,0xc4,0x16,0x1c,0x64,
|
||||
0x61,0xcd,0x16,0xc1,0xd1,0xd1,0xcd,0x6c,0xec,0xed,0xec,0xe4,0x1e,0xf1,0xe4,0xf6,
|
||||
0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xfe,0x1e,0xfe,0x1e,0x1e,0x1e,0x1e,0x1e,
|
||||
0x1f,0x1f,0xef,0xef,0xef,0xef,0xef,0xfe,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0xef,
|
||||
0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0xef,0xef,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,
|
||||
0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0xef,0xef,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0xef,
|
||||
0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0xef,0xef,0xef,0xfe,0xfe,0xef,0xfe,0xfe,
|
||||
0x1e,0x3e,0x1e,0x1e,0x1e,0xae,0xce,0x6e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,
|
||||
0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xe1,0xe1,0xe1,0xf1,0xe1,0xe1,0xe1,0xe1,
|
||||
0x14,0x1c,0x14,0x61,0x41,0x1d,0xdc,0x3e,0x6e,0x6f,0x6e,0xcf,0xde,0xfe,0xfe,0xfe,
|
||||
0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0x1e,0xfe,0xfe,0xfe,0xfe,0xfe,0xef,0xfe,0xfe,0xfe,
|
||||
0xef,0xef,0xef,0xef,0xef,0x1f,0x1f,0x1f,0xef,0xef,0xef,0x1f,0x1f,0x1f,0x1f,0x1f,
|
||||
0x1f,0xef,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0x1f,
|
||||
0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xfe,0xef,0xef,0xef,0xef,0xfe,0xef,0xef,
|
||||
0xfe,0xfe,0xfe,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0x1f,
|
||||
0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0x1e,0x4e,0xce,0x1e,0x1e,0x1e,0x1e,0x1e,
|
||||
0x11,0x11,0x41,0x41,0x61,0xd1,0xd1,0xd1,0xc1,0x41,0x61,0x11,0x41,0x61,0x14,0x16,
|
||||
0x64,0x1c,0x46,0x6c,0x1d,0x6c,0xc6,0xcd,0xfc,0xfd,0xcf,0xdf,0xcf,0xdf,0xdf,0xcf,
|
||||
0xfe,0xfe,0xfe,0xfe,0xef,0xef,0xef,0xef,0x1e,0x1e,0x1e,0x1e,0x1e,0x3e,0xae,0x3e,
|
||||
0xfe,0xfe,0xfe,0xce,0x6e,0x3e,0xfe,0xfe,0xef,0xef,0xef,0xef,0xef,0xfe,0xfe,0xfe,
|
||||
0x1f,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0xef,0xef,
|
||||
0xef,0xfe,0xef,0xfe,0xfe,0xfe,0xfe,0x1e,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,
|
||||
0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0xef,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,
|
||||
0xce,0x6e,0xfe,0x3e,0xae,0x3e,0x6e,0xce,0x1e,0x1e,0x1e,0x1e,0xfe,0x1e,0xfe,0x1e,
|
||||
0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xe1,0xf1,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,
|
||||
0xae,0x3e,0x9e,0x93,0x3e,0xae,0x3e,0x9e,0x1e,0xfe,0x1e,0xfe,0xfe,0xfe,0xfe,0x1e,
|
||||
0xfe,0x1e,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0x1e,0x1e,0x1e,0x1e,0xfe,0x1e,
|
||||
0x1f,0xef,0xef,0xef,0xef,0xef,0xfe,0x1e,0xef,0xef,0xef,0xef,0xef,0xfe,0xfe,0xfe,
|
||||
0x1f,0xef,0x1f,0x1f,0xef,0xef,0xef,0xef,0xef,0x1f,0xef,0xef,0x1f,0xef,0xef,0xef,
|
||||
0xef,0xef,0xef,0xef,0xef,0x1f,0xef,0x1f,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,
|
||||
0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xfe,0xef,0xef,
|
||||
0xef,0xef,0xef,0xef,0xfe,0xfe,0xfe,0xfe,0x1e,0x1e,0x1e,0x1e,0x3e,0x5e,0xce,0x5e,
|
||||
0x1c,0xd1,0xed,0xce,0x5e,0x3e,0xce,0xd3,0x41,0x16,0x14,0x4c,0x3d,0xc5,0x53,0xe5,
|
||||
0xc6,0xcd,0xcd,0xdc,0x35,0x53,0x3e,0x35,0xdf,0xce,0x5e,0xce,0xc5,0x5c,0xc5,0xc5,
|
||||
0xef,0xef,0x1e,0xe3,0xc5,0xc5,0x5c,0xc5,0xae,0x3e,0x3e,0xd3,0xc5,0x5c,0x35,0xc5,
|
||||
0x3e,0xfe,0x3e,0x35,0xc5,0xc4,0x15,0x1c,0xfe,0x1e,0x75,0xc5,0xc4,0x14,0x41,0x41,
|
||||
0x1f,0xfe,0x5e,0xe5,0xe4,0x34,0x14,0x41,0xdf,0xcf,0x1e,0x1e,0x1e,0x34,0xd1,0x13,
|
||||
0xce,0x1e,0x15,0xd1,0x1d,0x13,0x1d,0xc1,0xef,0xef,0xef,0xef,0xfe,0xfe,0xfe,0xfe,
|
||||
0x1f,0x1f,0x1f,0x1f,0xef,0xef,0xef,0x1f,0xfe,0xfe,0xef,0xfe,0xef,0xfe,0xfe,0xfe,
|
||||
0x6e,0xce,0x6e,0xce,0xde,0x3e,0x6e,0xfe,0x1e,0x1e,0x1e,0x1e,0x3e,0x9e,0x3e,0xce,
|
||||
0xfe,0xef,0xef,0xef,0xfe,0x1e,0x1e,0x1e,0x1e,0x1f,0x1e,0x4e,0x1f,0x1e,0x1e,0x1f,
|
||||
0x3e,0x9e,0x3e,0x9e,0x3e,0xae,0x3e,0x9e,0x1e,0xfe,0x1e,0x1e,0xfe,0xfe,0xfe,0xfe,
|
||||
0xef,0xef,0xef,0xef,0xef,0xfe,0xfe,0xfe,0x3e,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,
|
||||
0x1e,0x1e,0x1e,0x3e,0x5e,0x1e,0x3e,0x5e,0xfe,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,
|
||||
0xef,0xfe,0xfe,0xfe,0xfe,0x1e,0x1e,0x1e,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,
|
||||
0xef,0xef,0x1f,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0x1f,
|
||||
0xef,0xef,0xef,0xfe,0xfe,0xfe,0x1e,0xe6,0xef,0xfe,0xfe,0xef,0xef,0xfe,0xef,0xef,
|
||||
0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xce,0x5e,0xce,0x5e,0xce,0x5e,0xce,0xce,
|
||||
0x35,0xc5,0xc4,0xc4,0x14,0xc1,0x41,0xc4,0x53,0xc5,0xc4,0xc4,0x14,0x41,0x41,0xc4,
|
||||
0xc5,0x5c,0xc5,0xc5,0xcd,0xc4,0x14,0xc4,0xc5,0xc4,0x15,0xc4,0x14,0xc1,0x14,0x14,
|
||||
0xc4,0xc4,0xc4,0x1d,0xc1,0x14,0x14,0xc4,0xc4,0xc4,0xc5,0x34,0x4c,0x41,0xc4,0xc4,
|
||||
0x15,0xc4,0x14,0xc1,0x14,0x14,0x4c,0xc4,0x41,0x14,0xc4,0xc4,0xc4,0x14,0xc4,0xc4,
|
||||
0x41,0x41,0x14,0x14,0x1c,0x14,0x35,0xc5,0x1d,0xc1,0x15,0x14,0x5c,0xe5,0x35,0x15,
|
||||
0x51,0xe1,0xe1,0x14,0xe5,0xec,0x5e,0x5e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,
|
||||
0x1f,0x1f,0x1f,0xef,0xef,0xfe,0xef,0xfe,0xfe,0xef,0xef,0xef,0xfe,0xef,0xef,0xfe,
|
||||
0x6e,0xce,0xde,0xce,0x6e,0x1e,0x6e,0xcf,0xce,0xde,0x6e,0xef,0xef,0xfe,0xfe,0xde,
|
||||
0x1e,0x1e,0x1e,0xfe,0xfe,0x1f,0x1f,0xef,0x4e,0x1e,0x1e,0x1e,0x1e,0x4e,0x1e,0x1e,
|
||||
0x3e,0x9e,0xe3,0x6e,0xce,0x9e,0xe3,0x9e,0xfe,0xfe,0xfe,0xfe,0xef,0xef,0xef,0xef,
|
||||
0xfe,0xfe,0xfe,0xfe,0x1e,0x1e,0x1e,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,
|
||||
0x1e,0x3e,0x1e,0x1e,0x5e,0xce,0x5e,0xce,0x1e,0x1e,0x1e,0x1e,0x3e,0x1e,0x1e,0x3e,
|
||||
0xfe,0x1e,0x1e,0x1e,0xfe,0x1e,0xfe,0x1e,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,
|
||||
0xef,0xef,0xef,0xef,0xef,0xef,0xef,0x1f,0xef,0x1f,0xef,0x1f,0x1f,0x1f,0x1f,0x1f,
|
||||
0xed,0xec,0xed,0xed,0xce,0xfe,0xfe,0xfe,0x6f,0x3f,0xdf,0xce,0xde,0xef,0xfe,0xfe,
|
||||
0x5e,0xce,0xfe,0xde,0x3e,0xfe,0xde,0xce,0xde,0xd3,0xce,0x3d,0x5e,0xd3,0x5e,0xd3,
|
||||
0xc4,0x14,0x4c,0x14,0x1c,0xc4,0x14,0x4c,0x14,0xc4,0xc4,0xc5,0x15,0x4c,0x51,0xc4,
|
||||
0x41,0xc4,0x14,0x4c,0x41,0x41,0x14,0xc4,0xc4,0x14,0xc4,0x14,0x14,0x41,0x14,0x14,
|
||||
0xc4,0xc4,0xc4,0x1c,0x14,0x41,0x14,0xc4,0xc4,0xc4,0xc4,0x15,0xc4,0x14,0x14,0xc4,
|
||||
0xc4,0x14,0x1c,0x14,0x41,0x14,0x14,0x4c,0x14,0xc4,0x14,0xc4,0x41,0x41,0xc4,0xc4,
|
||||
0xc4,0xc4,0x4c,0x15,0x4c,0x14,0xc4,0x14,0xc5,0xc4,0xc4,0xc5,0x35,0xc5,0x14,0x14,
|
||||
0xe5,0xe4,0x34,0xc5,0x15,0x34,0xe4,0xe4,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,
|
||||
0xef,0xef,0xef,0xef,0xef,0xef,0xfe,0xfe,0xef,0xef,0xef,0xef,0x1f,0x1f,0x1f,0x1f,
|
||||
0xdf,0x6f,0xcf,0xdf,0xcf,0xdf,0xfe,0xfe,0xce,0x6e,0x4e,0xce,0x9f,0xfe,0xfe,0x1f,
|
||||
0x1e,0x1e,0xfe,0xef,0xef,0xef,0xef,0xef,0x4f,0xce,0xef,0xfe,0x1e,0x3e,0x3e,0xde,
|
||||
0x93,0x9e,0xe3,0x6e,0x3e,0x93,0x3e,0x6e,0xfe,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,
|
||||
0xfe,0xef,0xef,0xef,0x1e,0x1e,0x1e,0x1e,0xfe,0x1e,0xfe,0xfe,0xfe,0xfe,0xfe,0xef,
|
||||
0xde,0x3e,0x5e,0x3e,0x3e,0x5e,0xfe,0xfe,0x1e,0x1e,0x3e,0x1e,0x1e,0x3e,0x5e,0x1e,
|
||||
0x1e,0x1e,0x1e,0xfe,0x1e,0x1e,0x1e,0x1e,0xef,0xef,0xef,0xfe,0xfe,0xfe,0xfe,0xef,
|
||||
0xef,0xef,0x1f,0xef,0xef,0x1f,0xef,0xef,0x1f,0xef,0x1f,0x1f,0x1f,0xef,0xef,0xef,
|
||||
0xfe,0xfe,0xfe,0xfe,0xef,0xfe,0xbe,0xeb,0xfe,0x1e,0x1e,0xbe,0xeb,0xeb,0xeb,0xeb,
|
||||
0xde,0xce,0x4e,0x6e,0xce,0xdb,0xae,0xea,0xd3,0xd3,0xcd,0xc5,0xcd,0xcd,0x3d,0xce,
|
||||
0xc5,0x53,0xc5,0xc4,0xc4,0x5c,0x4d,0x41,0xc4,0xe4,0x4c,0xc4,0x15,0x1c,0x14,0x14,
|
||||
0xc4,0xc4,0x14,0x4c,0x15,0xc4,0x41,0x14,0xc4,0xc4,0xc4,0xc4,0xc5,0x15,0xc1,0x14,
|
||||
0xc4,0x34,0x5c,0xc4,0x15,0x1c,0x41,0x14,0xc4,0x35,0xdc,0x41,0x41,0x41,0x41,0x14,
|
||||
0xc4,0xc4,0x14,0x41,0x14,0xc1,0x14,0x14,0x14,0x4c,0x41,0x41,0x41,0x41,0x41,0xc4,
|
||||
0x14,0x41,0x41,0x41,0x41,0x41,0x14,0xc4,0x41,0x11,0x41,0x11,0x41,0x41,0x14,0xc4,
|
||||
0x31,0xd1,0xc1,0xd1,0xc1,0x64,0xc1,0xc4,0x1e,0x1e,0xbe,0xbe,0x1e,0x1e,0x1e,0xae,
|
||||
0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0x1f,0x1f,0x1f,0x1f,0x1f,0xef,0xef,0xef,
|
||||
0xef,0xef,0x1f,0xef,0xef,0xef,0xef,0xef,0x1f,0x1f,0x1f,0x1f,0x1f,0xef,0xef,0xfe,
|
||||
0x1f,0x1f,0xef,0xef,0xfe,0xfe,0xfe,0xfe,0xce,0x1e,0x4f,0x1e,0x1e,0x1e,0x4e,0x1e,
|
||||
0x3e,0x1e,0x1e,0x1e,0x1e,0x3e,0xcd,0xc1,0x1e,0x3e,0x3e,0x1e,0x3e,0xde,0xce,0x4e,
|
||||
0x1e,0x1e,0x3e,0x1e,0x1e,0x1e,0x1e,0x1e,0xef,0xef,0xef,0xef,0xfe,0x1e,0x1e,0x1e,
|
||||
0x1f,0x1f,0x1f,0xef,0xfe,0xfe,0xfe,0xfe,0x1e,0x1f,0x1f,0x1f,0xef,0xef,0xef,0xfe,
|
||||
0x1e,0xef,0x1f,0x1f,0x1f,0xef,0xef,0xef,0x1f,0xef,0xef,0xef,0xef,0xef,0xfe,0xfe,
|
||||
0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0xef,0xbf,0xbf,0xbf,0xaf,0xaf,0x9f,0xfa,
|
||||
0xeb,0xeb,0xab,0xea,0xa9,0x6a,0x6a,0xa6,0xea,0x69,0x36,0x6a,0x39,0x6a,0xc6,0xc6,
|
||||
0x9a,0x36,0x16,0x61,0x16,0x9a,0xa6,0xc6,0xbe,0x9a,0xe6,0xc6,0x1d,0x3d,0xda,0x93,
|
||||
0xc4,0xe4,0xb4,0xc1,0x14,0x4c,0x15,0x43,0xc4,0xc4,0x14,0x14,0x14,0xc4,0xc4,0x14,
|
||||
0xc4,0xc4,0xc4,0x14,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0x5c,0xfe,0xef,0xfe,
|
||||
0xc4,0xc4,0xc4,0xc4,0xcd,0x4f,0xfc,0x1e,0xc4,0xc4,0xc4,0xc4,0x14,0xc4,0x41,0x14,
|
||||
0xc4,0xc4,0x41,0xc4,0x14,0x41,0x14,0x41,0xc4,0x14,0xc4,0x14,0xc4,0x41,0x41,0x41,
|
||||
0xc4,0xc4,0x14,0xc4,0x14,0x14,0x41,0x41,0xc4,0xc4,0x41,0x14,0xc1,0x41,0x41,0x91,
|
||||
0x14,0xa4,0x1e,0x4a,0xcb,0xe6,0xe6,0xa6,0xae,0xbe,0xeb,0x9b,0x6b,0x6e,0xcb,0xae,
|
||||
0xfe,0xfe,0xfe,0xfe,0xbe,0xeb,0x6b,0x6e,0xef,0xef,0xef,0xde,0x1e,0x6e,0x4b,0xce,
|
||||
0x1f,0x1f,0x1f,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xfe,0xfe,0xfe,0xfe,
|
||||
0x1e,0x1e,0x1e,0xfe,0x1e,0x1e,0x3e,0x5e,0x1e,0x4e,0x1e,0x1e,0x43,0x1e,0x15,0x13,
|
||||
0x41,0x41,0x41,0x1d,0x1c,0x4d,0xdc,0xcd,0x1e,0x6e,0xce,0xde,0xce,0xd3,0x1e,0x1e,
|
||||
0x3e,0x3e,0xde,0x3e,0x3e,0xde,0xd3,0x1e,0x1e,0x3e,0x1e,0x3e,0x3e,0xde,0x3e,0xde,
|
||||
0x1e,0x1e,0x1e,0x3e,0x5e,0x3e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0xfe,0x1e,0x1e,0x3e,
|
||||
0xef,0xfe,0xfe,0xfe,0x1e,0x1e,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0x1e,
|
||||
0x1f,0x1f,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x6f,0x6e,0x6e,0x6e,0x6e,0x1e,0x1e,0xed,
|
||||
0xc6,0xa6,0xc6,0xc6,0xc6,0xc6,0xc6,0xcd,0x16,0xc6,0x6a,0xc6,0xc6,0x16,0xdc,0xde,
|
||||
0xc6,0x1d,0x1e,0xda,0xe6,0xa6,0xc6,0x3d,0x46,0xc6,0xd5,0xec,0x3d,0xce,0xad,0x63,
|
||||
0x14,0x41,0xc4,0x14,0x4c,0x53,0xce,0xde,0x41,0x41,0x14,0xc4,0xc4,0xde,0xa6,0xc6,
|
||||
0x41,0x41,0xc4,0xc4,0xcd,0xad,0x16,0x36,0x1c,0x14,0xc4,0xc4,0xdc,0xde,0x19,0x36,
|
||||
0x14,0x41,0xc4,0xc5,0x5e,0x3e,0xde,0xec,0x41,0xc4,0x14,0xc4,0xcd,0x6e,0xce,0x6e,
|
||||
0x41,0x14,0x14,0x4c,0xd3,0x3e,0x1e,0x3e,0x41,0x14,0xc4,0x4c,0x3d,0xd3,0xde,0x3e,
|
||||
0x14,0x14,0x41,0x5c,0x3d,0x3e,0xd3,0x3e,0xa4,0xe1,0x46,0x6c,0xcd,0x63,0xed,0x36,
|
||||
0xe6,0x36,0xc9,0xe6,0xc9,0x6e,0x6e,0x63,0x6a,0xa6,0x16,0xc6,0xe6,0x36,0xc6,0x16,
|
||||
0x6b,0xce,0x9a,0xda,0x6e,0x6a,0x1a,0x6d,0x6b,0x6e,0xea,0xea,0x39,0x93,0x9a,0x36,
|
||||
0xdf,0xce,0x1e,0x1e,0x6e,0x1e,0x1e,0x6e,0xfe,0x1e,0xde,0xce,0xe4,0xd3,0x3e,0x3e,
|
||||
0xec,0x31,0xd1,0x41,0x14,0x35,0x3e,0x5e,0x14,0x11,0x41,0x41,0x14,0x53,0x3e,0x5e,
|
||||
0xc4,0x1d,0x1c,0x1d,0x13,0xed,0x3e,0xde,0xe1,0x31,0xd1,0xe1,0xd1,0xc1,0x41,0xe1,
|
||||
0x5e,0xde,0xd3,0x3d,0xd3,0xcd,0xcd,0x1d,0x1e,0x3e,0x3d,0xd3,0x3d,0xde,0x3e,0xd3,
|
||||
0x3e,0xde,0xd3,0x5e,0x3e,0x3e,0x1e,0xd3,0xde,0x3e,0x1e,0x1e,0x1e,0x1e,0x3e,0xde,
|
||||
0xfe,0xfe,0xfe,0x1e,0x1e,0xd1,0xc6,0xcd,0x1e,0x1e,0x1e,0x1e,0xde,0xcd,0xcd,0xcd,
|
||||
0x1e,0x1e,0x1e,0x3e,0xd3,0xde,0xec,0xde,0xed,0xec,0xed,0xdc,0x3d,0x3d,0xd3,0x3d,
|
||||
0xde,0xdc,0x3d,0xcd,0x3d,0x3d,0x3d,0xd3,0xd3,0xde,0xd3,0xd3,0x3d,0xd3,0x3d,0xd3,
|
||||
0xce,0x3d,0xde,0xd3,0x5e,0xd3,0xde,0xd3,0xcd,0xd3,0xec,0x4d,0xce,0xde,0x1e,0xde,
|
||||
0xd3,0xde,0xde,0x3e,0x3d,0xce,0x1d,0x43,0xcd,0x3e,0xde,0xde,0xd3,0xde,0xd3,0xce,
|
||||
0xe6,0xce,0xde,0x13,0xd1,0xc1,0x1d,0xdc,0xde,0x1e,0xc1,0x11,0xd1,0xcd,0xdc,0x3d,
|
||||
0x51,0x11,0x41,0x46,0x6c,0xcd,0xcd,0xdc,0x1e,0xda,0xce,0xda,0x3d,0xca,0x3d,0xe6,
|
||||
0xde,0x3e,0x6e,0xe6,0x36,0x36,0x3d,0xae,0xd3,0x9e,0xd3,0x6e,0x93,0xde,0x3e,0xd3,
|
||||
0xde,0xd3,0xde,0x93,0x3e,0xd3,0x93,0x93,0xcd,0x6e,0xd3,0xd3,0x3d,0x93,0x9e,0xd3,
|
||||
0xe6,0x36,0x1d,0x36,0xa1,0x36,0xe6,0xd3,0x16,0x16,0x16,0x16,0x16,0x36,0x1e,0x39,
|
||||
0xc6,0xc6,0xc6,0xc6,0x3e,0x3e,0x3e,0x3e,0xc6,0x36,0x6e,0xce,0x9e,0x3e,0xde,0x3e,
|
||||
0xce,0xde,0x3e,0x1e,0x13,0xde,0xce,0x5e,0xe5,0x31,0xd1,0x11,0x11,0x41,0x41,0x41,
|
||||
0xc5,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0xc5,0x41,0x11,0x41,0x41,0x11,0x41,0x11,
|
||||
0xce,0x3d,0xdc,0xcd,0xcd,0xc6,0xdc,0xec,0xe1,0xde,0x3e,0xce,0x3d,0xdc,0x3d,0xdc,
|
||||
0xdc,0x1e,0xde,0x3e,0x1e,0x1e,0xce,0x6e,0xed,0xec,0xed,0xd3,0xe5,0xd3,0xde,0x3e,
|
||||
0xcd,0x1d,0x14,0xc6,0x64,0xdc,0xcd,0x35,0x3d,0xcd,0x1d,0xc4,0x46,0xcd,0xcd,0xcd,
|
||||
0xcd,0xcd,0xcd,0xcd,0x3d,0xcd,0xde,0xd3,0xcd,0xcd,0xcd,0xd3,0xde,0x3e,0xde,0xde,
|
||||
0xd3,0xde,0x3e,0xde,0xde,0x3e,0xde,0x3e,0xd3,0xce,0xed,0x3e,0xde,0x3e,0xde,0x3e,
|
||||
0xde,0x3e,0xde,0x3e,0xde,0x3e,0x3e,0xde,0x3d,0xd3,0xde,0xd3,0xde,0x3e,0x3d,0xde,
|
||||
0xde,0xd3,0x3d,0x1e,0x3d,0xd3,0xe5,0xd3,0xce,0x51,0x11,0xd1,0x1d,0xac,0x9e,0x93,
|
||||
0x1e,0x1e,0x3d,0xce,0x93,0x9e,0x93,0x39,0x3d,0xce,0x39,0x93,0x3e,0x39,0x36,0x61,
|
||||
0x3d,0x93,0x93,0x3d,0x9c,0xc1,0x11,0x11,0x63,0x3d,0xdc,0x16,0xc1,0x41,0x11,0x11,
|
||||
0xcd,0x61,0x41,0x11,0x41,0x61,0x41,0x1d,0x1d,0x13,0x16,0x19,0x1e,0x16,0x1d,0xc6,
|
||||
0x9e,0x6e,0xe6,0xe6,0xe6,0x36,0x1d,0xe6,0xde,0x3e,0x1e,0x1e,0x1e,0x3e,0x3d,0xd3,
|
||||
0xd3,0xde,0xd3,0xde,0xe3,0xde,0x3e,0xde,0x9e,0x93,0x39,0xd3,0x3d,0x93,0xde,0x3e,
|
||||
0x39,0x39,0x3e,0x93,0xd3,0x9e,0x3e,0x3e,0x3e,0x9e,0x3e,0x9e,0x3e,0xd3,0x3e,0x9e,
|
||||
0x3e,0x3e,0x3e,0x3e,0xde,0x3e,0x1e,0x3e,0xde,0x3e,0x1e,0x1e,0x1e,0x1e,0x1e,0x5e,
|
||||
0x1e,0x1e,0x1e,0xce,0x4e,0xe4,0xc4,0x14,0x41,0xc1,0x41,0x41,0x41,0x41,0x41,0x41,
|
||||
0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x11,0x41,0x41,0x11,0x41,0x41,0x41,
|
||||
0xde,0xce,0xce,0xde,0x1e,0x1e,0xec,0xd1,0xdc,0xd3,0x6e,0xce,0xde,0xdc,0x1c,0x1d,
|
||||
0xd3,0x3d,0xce,0x3d,0xc9,0xd3,0xcd,0xcd,0xde,0x3e,0x5e,0xce,0xcd,0xc1,0x61,0x11,
|
||||
0x3d,0x3e,0xde,0x3e,0x5e,0x3d,0x1d,0x11,0x3d,0x5e,0x3e,0xde,0x3e,0x5e,0xcd,0x11,
|
||||
0xd3,0xde,0x3e,0x1e,0x1e,0xd3,0x41,0x11,0x3e,0xde,0x3e,0xed,0x1d,0xc1,0x11,0x61,
|
||||
0xde,0xd3,0x3d,0xcd,0x16,0x16,0x61,0x36,0xde,0xd3,0xcd,0x41,0x61,0xc1,0x61,0x61,
|
||||
0x3e,0x3e,0x3d,0xc1,0x41,0x41,0x11,0x41,0xde,0x3d,0xd1,0x11,0x11,0x11,0x11,0x11,
|
||||
0x1d,0xc1,0x11,0x11,0x11,0x11,0x11,0x11,0xae,0x93,0xed,0x1c,0x11,0x11,0x41,0x11,
|
||||
0xe6,0xc1,0x11,0x11,0x41,0x11,0x11,0x41,0x41,0x41,0x11,0x41,0x41,0x11,0x11,0x11,
|
||||
0x41,0x41,0x41,0x11,0x41,0x41,0x11,0x11,0x41,0x41,0x41,0x41,0x61,0x61,0x41,0x11,
|
||||
0xcd,0x1d,0x6c,0x1d,0x6c,0x1d,0x61,0x41,0x16,0xcd,0x46,0xc6,0xd1,0xd1,0x1d,0xdc,
|
||||
0xe4,0x14,0x64,0x15,0xc4,0x15,0xc4,0x14,0x1d,0xc1,0x41,0x41,0x14,0x14,0x14,0x14,
|
||||
0xce,0x1d,0x41,0x41,0x41,0x41,0x41,0x41,0x9e,0x3e,0xcd,0x41,0x41,0x41,0x41,0x41,
|
||||
0x3e,0xde,0x1c,0x41,0x41,0x41,0x41,0x41,0x3e,0xcd,0x41,0x41,0x41,0x41,0x14,0x14,
|
||||
0xd3,0x64,0x14,0xc4,0x14,0xc4,0x14,0x14,0xc5,0xc4,0xc4,0x45,0xc4,0x54,0xc4,0xc4,
|
||||
0xc4,0x14,0x54,0xc4,0xc4,0xc5,0xc5,0xc5,0x41,0x41,0xc1,0x41,0xc1,0x41,0x51,0x51,
|
||||
0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,
|
||||
0x41,0x41,0xd1,0x1e,0x1e,0x1d,0x34,0xcd,0xc1,0x41,0xcd,0x3e,0x3e,0x3e,0x1d,0xc1,
|
||||
0x1c,0x11,0x4d,0x3e,0x1e,0xd1,0x11,0x11,0x11,0x11,0x41,0xd1,0x41,0x41,0x41,0x41,
|
||||
0x11,0x11,0x41,0x41,0x11,0x41,0x11,0x41,0x11,0x11,0x11,0x41,0x11,0x41,0x41,0x41,
|
||||
0x41,0x11,0x11,0x11,0x41,0x11,0x41,0x11,0x41,0x61,0x61,0x41,0x11,0x11,0x11,0x41,
|
||||
0xca,0x6a,0x6a,0xca,0xc6,0x16,0xc1,0x41,0x61,0xc1,0x61,0x61,0x61,0x61,0x11,0x41,
|
||||
0x11,0x11,0x11,0x11,0x41,0x11,0x11,0x41,0x11,0x11,0x11,0x11,0x11,0x41,0x41,0x41,
|
||||
0x11,0x11,0x11,0x41,0x41,0x41,0x41,0x41,0x41,0x11,0x41,0x11,0x41,0x41,0x11,0x41,
|
||||
0x41,0x11,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x61,0x61,0x41,0x41,0x61,0x41,
|
||||
0x41,0x61,0x61,0x41,0x61,0xd1,0x61,0x41,0x41,0x16,0xd1,0xc1,0x16,0x1d,0x1c,0x61,
|
||||
0xc6,0x1d,0x6c,0x1d,0xdc,0x1d,0x6c,0x1d,0xcd,0xcd,0xdc,0xcd,0xc5,0x3d,0xcd,0xdc,
|
||||
0x14,0x14,0x14,0x14,0x41,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
|
||||
0x41,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x41,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
|
||||
0x41,0x41,0x14,0x14,0x14,0xc4,0x41,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
|
||||
0x14,0x14,0x14,0x14,0x41,0x14,0x14,0x14,0x14,0xc4,0x14,0xc4,0xc4,0x14,0x14,0xc4,
|
||||
0x45,0xc4,0xc4,0xc4,0xc4,0xc4,0xc5,0xc5,0x41,0xc1,0x14,0x51,0xc4,0xc5,0x5e,0x5e,
|
||||
0x41,0x41,0x41,0x41,0x14,0xc5,0x3e,0x1e,0x41,0x11,0x41,0x11,0x41,0x51,0xe1,0x31
|
||||
};
|
|
@ -0,0 +1,388 @@
|
|||
// file generated automatically by 'bin2js'. Do not edit
|
||||
|
||||
const byte pic_p[] = {
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x99,0x00,0x00,0x00,0x00,0x00,0x00,0xa4,0x92,
|
||||
0x00,0x44,0x11,0x44,0x00,0x00,0x92,0x92,0x04,0x07,0x07,0x00,0x00,0x00,0x44,0x99,
|
||||
0x91,0x01,0x10,0x20,0x81,0x00,0x00,0x48,0x12,0x48,0x07,0xe0,0x03,0x00,0x00,0x20,
|
||||
0xac,0x04,0x80,0x01,0x83,0x01,0x00,0x00,0x00,0x25,0x80,0x92,0x94,0x20,0x00,0x00,
|
||||
0x00,0x00,0x07,0x00,0x90,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xb2,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x88,0x00,0x00,
|
||||
0x00,0x02,0x00,0x00,0x00,0x00,0x02,0x00,0xa9,0x11,0x00,0x00,0x00,0x00,0xb0,0x00,
|
||||
0xa4,0x29,0x05,0x07,0x03,0x03,0x91,0x04,0x24,0x91,0x54,0x44,0x00,0x00,0x8d,0x60,
|
||||
0x00,0x24,0x90,0x80,0x00,0x00,0x40,0x99,0x07,0x03,0x03,0x07,0x03,0x07,0x07,0x99,
|
||||
0x88,0xa2,0x24,0x88,0x22,0x49,0x94,0x92,0x84,0x31,0x84,0x91,0x44,0x03,0xf0,0xe0,
|
||||
0x44,0x11,0x44,0x32,0x86,0x32,0x8a,0x28,0x40,0x19,0x44,0x92,0x89,0xa2,0x8e,0x60,
|
||||
0xe0,0x60,0xf0,0xd0,0xf0,0xe0,0x07,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x20,0x00,0x00,0x00,0x00,
|
||||
0x07,0x07,0x07,0x13,0x03,0x07,0x03,0x03,0x49,0x4a,0x92,0x4a,0xa5,0x4a,0xa5,0x92,
|
||||
0x13,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x92,0xf0,0x07,0x07,0x07,0x03,0x03,0x07,
|
||||
0x93,0x25,0x92,0xa5,0x00,0x04,0x90,0x00,0xa6,0xa9,0xd2,0xd1,0x25,0x84,0x10,0x40,
|
||||
0x54,0xaa,0xaa,0xaa,0xb2,0x00,0x20,0x84,0x64,0x64,0xb2,0xcc,0xe0,0xe0,0xe0,0x05,
|
||||
0x48,0x64,0x99,0x19,0x80,0xe0,0xc1,0x80,0x00,0x64,0xb2,0x4c,0x44,0x02,0x03,0xd8,
|
||||
0x00,0x80,0x24,0x92,0x80,0x10,0xc0,0x80,0x00,0x00,0x00,0x24,0x00,0x30,0x03,0x03,
|
||||
0x00,0x00,0x00,0x80,0x24,0x95,0x54,0x42,0x00,0x00,0x00,0x00,0x80,0x24,0x44,0x0b,
|
||||
0x00,0x00,0x00,0x00,0x00,0x90,0x92,0x64,0x00,0x00,0x00,0x00,0x00,0x00,0x24,0xa0,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0xc8,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0xd2,0x12,
|
||||
0x00,0x00,0x00,0x00,0x00,0xa4,0x29,0x89,0x4a,0x92,0x84,0xb1,0x04,0x49,0x22,0x28,
|
||||
0x91,0x94,0x44,0x52,0x12,0x88,0x22,0x92,0x90,0x15,0xc4,0x32,0x89,0xa4,0x24,0x49,
|
||||
0x48,0x22,0xa8,0x03,0x03,0x07,0x07,0xf0,0xc8,0x92,0x20,0x08,0x82,0x20,0x88,0x02,
|
||||
0x89,0x22,0x88,0x22,0x09,0x84,0x03,0x0b,0x8e,0x60,0x89,0x30,0x0b,0x07,0x07,0x07,
|
||||
0x13,0xb4,0x49,0x64,0x92,0xb0,0xa5,0x24,0x00,0x80,0x80,0xc0,0xe0,0xe0,0xe0,0xf0,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0xa4,0xd2,0xc9,0xc9,0x09,0x26,0x24,0x49,
|
||||
0x04,0x26,0x26,0xe0,0x07,0xf0,0xf0,0x07,0x07,0xe0,0x24,0x00,0x48,0x00,0x24,0x00,
|
||||
0x44,0x10,0x82,0x28,0x89,0x22,0x08,0x42,0x04,0x91,0x44,0x49,0x92,0x26,0x88,0x22,
|
||||
0x11,0x44,0x12,0x9a,0x9a,0x95,0x92,0x94,0x24,0x93,0xcc,0x89,0x92,0x52,0x49,0x89,
|
||||
0x24,0x80,0x90,0xc4,0x40,0x50,0x80,0xa4,0x00,0x00,0x84,0x20,0x08,0x80,0x20,0x04,
|
||||
0xc0,0xe0,0xc0,0xf0,0xe0,0xc0,0x03,0xc0,0x03,0x01,0x18,0x0c,0x06,0x02,0x01,0x80,
|
||||
0x29,0xa4,0x12,0xd2,0x14,0xe0,0xe0,0xf0,0xf0,0x04,0x4a,0x26,0x94,0xa6,0xa9,0xa6,
|
||||
0x95,0x88,0x4a,0x92,0x94,0x44,0x11,0x4c,0x49,0x93,0x4c,0xcc,0x9c,0xc3,0x70,0x70,
|
||||
0x81,0x81,0x07,0x07,0xe0,0x9a,0x62,0x0a,0xc4,0x25,0xac,0x0b,0x89,0x95,0x52,0x54,
|
||||
0x24,0x52,0x25,0x29,0x9a,0x52,0xa5,0xa5,0x92,0x96,0x91,0xb2,0x25,0x95,0x92,0x54,
|
||||
0x99,0x98,0x52,0xc6,0x99,0x64,0x95,0x92,0xa4,0x91,0x49,0x4a,0x92,0x64,0x89,0x32,
|
||||
0x70,0x60,0x70,0x70,0xe0,0xa0,0x60,0x64,0x40,0x08,0x80,0x04,0x20,0x80,0x04,0x40,
|
||||
0x0b,0xd8,0xe0,0xe0,0xc0,0x90,0x03,0x40,0x70,0x07,0x07,0x38,0x03,0x98,0x01,0x70,
|
||||
0x09,0x42,0x12,0x00,0x48,0x00,0x24,0x80,0x07,0x07,0x07,0x03,0x03,0x03,0x03,0x03,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x08,0x40,0x10,0x44,0x11,
|
||||
0x01,0x03,0x03,0x01,0x01,0x03,0x01,0x01,0x12,0x92,0x24,0x25,0x49,0x4a,0x12,0x24,
|
||||
0x07,0xd8,0x22,0x08,0x00,0x20,0x04,0x10,0x10,0x84,0x20,0x08,0x40,0x10,0x84,0x20,
|
||||
0x12,0x84,0x24,0x88,0x23,0x08,0x92,0x04,0x49,0x95,0x92,0x4a,0x22,0x8c,0x31,0x86,
|
||||
0xb2,0xaa,0x92,0x54,0x52,0xa6,0x92,0xa4,0x49,0x64,0xa4,0x92,0x49,0x96,0xb2,0x92,
|
||||
0xc0,0x40,0x64,0xc0,0xd2,0xc4,0x91,0x99,0x80,0x08,0x23,0x88,0xa2,0x82,0x10,0x44,
|
||||
0xc0,0xc0,0xc2,0x9a,0x61,0x98,0xcc,0x98,0x80,0x80,0xe0,0xe0,0xf0,0x07,0x07,0xd8,
|
||||
0x07,0x03,0x01,0x10,0x04,0x00,0x00,0x00,0xc6,0xa6,0xa9,0xa6,0x44,0x92,0xc0,0x92,
|
||||
0x07,0x0e,0x0c,0xc3,0x38,0x87,0x86,0x8e,0xe1,0x1c,0xc1,0x70,0xe8,0xc8,0xf0,0xc9,
|
||||
0x99,0xca,0x64,0x4a,0x13,0xc4,0x99,0x22,0xb2,0xa9,0xa9,0x26,0x26,0x48,0x94,0xa9,
|
||||
0xa6,0x29,0xc8,0x92,0x25,0x24,0x92,0xc9,0x29,0x29,0xaa,0x92,0x8a,0x32,0x49,0x99,
|
||||
0x95,0x8a,0x96,0x49,0x96,0x49,0x49,0x92,0xc6,0xa6,0x49,0x26,0xb2,0x99,0x49,0xa5,
|
||||
0xe0,0x60,0x60,0x64,0xe0,0xe0,0xf0,0xf0,0x03,0x0d,0x85,0x10,0x87,0x62,0x64,0x80,
|
||||
0x03,0x02,0x02,0x83,0x30,0xc1,0xc3,0xc0,0xc8,0x45,0x05,0xd8,0x03,0x07,0x07,0x20,
|
||||
0x80,0xe0,0xf0,0x03,0x03,0x03,0x03,0x05,0x83,0x01,0x01,0x91,0x01,0x09,0x20,0x80,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x44,0x54,0x11,0x44,0xaa,0x11,0x04,0x05,
|
||||
0x01,0x01,0x03,0x01,0x01,0x01,0x01,0x01,0x25,0x49,0x12,0x92,0x24,0x25,0x19,0x42,
|
||||
0x00,0x04,0x40,0x00,0x04,0x10,0x00,0x02,0x88,0x22,0x08,0x40,0x10,0x84,0x30,0x42,
|
||||
0x24,0x89,0x22,0x8a,0x08,0x62,0x09,0x24,0xa9,0x29,0x46,0x92,0x99,0x99,0x99,0x94,
|
||||
0xb2,0xa6,0xc4,0xca,0x99,0xca,0x99,0x4a,0x92,0x16,0xd4,0x06,0xb0,0xb4,0xe0,0xe2,
|
||||
0xb2,0x99,0x08,0x12,0x64,0x80,0x90,0x04,0x20,0x88,0xc2,0x10,0x84,0x21,0x08,0x80,
|
||||
0x08,0x46,0x11,0x85,0x21,0x08,0x42,0x10,0x03,0xf0,0xd0,0x07,0x93,0x23,0x49,0x09,
|
||||
0x00,0x00,0x80,0x00,0x04,0x00,0x00,0x80,0xe1,0xc9,0x91,0x04,0x24,0x12,0x19,0x44,
|
||||
0x86,0x0c,0x18,0x1c,0x0c,0x0c,0x08,0x0c,0x32,0xc8,0x4c,0x0c,0x9a,0x62,0x09,0x95,
|
||||
0xaa,0x96,0xa9,0xaa,0xb4,0xa6,0x96,0xf0,0x52,0x64,0x64,0x4a,0x94,0x2c,0xb2,0xca,
|
||||
0xd2,0xa5,0x4a,0x96,0x52,0xa5,0x4a,0x95,0x18,0x94,0xaa,0xaa,0xaa,0xaa,0xaa,0x24,
|
||||
0x25,0x99,0x99,0x49,0xa5,0x52,0xa9,0x91,0xac,0x4c,0x9a,0x94,0xac,0xcc,0xcc,0xa4,
|
||||
0xf0,0xf0,0x07,0x07,0x03,0x01,0x01,0x01,0x64,0xc6,0x80,0x80,0x15,0xc0,0xc0,0xe0,
|
||||
0xe0,0xc0,0xe0,0x60,0x96,0xc0,0x12,0x06,0x8a,0x92,0x60,0x83,0x24,0x8e,0x0e,0x24,
|
||||
0x91,0x24,0x80,0x92,0x20,0x48,0x42,0x90,0xa0,0xf0,0xf0,0xf0,0xc0,0xc0,0xc0,0xc0,
|
||||
0x80,0x80,0x80,0xe4,0x95,0xc1,0x91,0xc0,0x40,0x03,0x01,0x92,0x07,0xb2,0xd8,0x32,
|
||||
0x24,0x44,0x92,0x49,0x49,0x26,0x99,0x99,0x01,0xc0,0xe0,0xe0,0xe0,0xe0,0xe0,0xe0,
|
||||
0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x12,0x44,0x11,0x44,0x12,0x48,0x22,0x8a,
|
||||
0x00,0x10,0x00,0x04,0x00,0x20,0x00,0x02,0x08,0xa0,0x24,0x10,0xc2,0x08,0x20,0x84,
|
||||
0x93,0x49,0x26,0x99,0x25,0x26,0x9a,0xb4,0x26,0x4a,0xb2,0x95,0x54,0x49,0x92,0xf0,
|
||||
0x89,0x95,0x24,0xa5,0xaa,0xaa,0xd4,0x80,0xc0,0xc8,0x80,0x90,0xc4,0x80,0x90,0x04,
|
||||
0x20,0x80,0x04,0x11,0xc1,0xc1,0x1c,0xc0,0x04,0x40,0x12,0x84,0x14,0x26,0x40,0x28,
|
||||
0x07,0xd0,0xc0,0xe0,0x07,0xf0,0xf0,0x07,0x20,0x80,0xc0,0xc0,0xe0,0xe0,0xf0,0xf0,
|
||||
0x80,0x80,0x80,0xc0,0xe0,0xe0,0xf0,0xf0,0x40,0x80,0x88,0x40,0x00,0x80,0x80,0x40,
|
||||
0x04,0x04,0x04,0x04,0x06,0x02,0x02,0x02,0x10,0x94,0x04,0x49,0x40,0x12,0x00,0x88,
|
||||
0xb2,0xaa,0x94,0x0d,0xb1,0x06,0x96,0x31,0x2a,0xa9,0xa5,0x4a,0x94,0xd2,0x4a,0xaa,
|
||||
0x54,0x52,0x4a,0x2a,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xa9,0xa4,0x96,0x51,
|
||||
0xac,0xa2,0x9a,0x62,0x8c,0x4c,0x4c,0x52,0x52,0xa9,0xa2,0x9a,0xca,0x29,0xa4,0x95,
|
||||
0x92,0x24,0x93,0xcc,0x32,0x92,0x4c,0x9a,0x60,0x60,0x60,0x20,0x30,0x10,0x18,0x0b,
|
||||
0xc0,0x03,0x20,0x2c,0x20,0x01,0x01,0x88,0x04,0x0c,0xc0,0x0c,0x0c,0x22,0x0a,0x49,
|
||||
0x92,0x49,0x49,0x48,0x92,0x02,0x06,0x0c,0xc0,0xe1,0xe1,0xe0,0xf0,0xf0,0xf0,0xf0,
|
||||
0xd2,0x92,0x32,0xd1,0xe0,0xe0,0xf0,0x0b,0x93,0x49,0xd8,0x68,0x13,0x01,0x05,0x01,
|
||||
0x99,0x26,0x4c,0x52,0xac,0x0d,0x07,0xf0,0xe0,0x9a,0xaa,0xd4,0xd0,0x00,0x80,0x00,
|
||||
0x01,0x41,0xe1,0xe1,0xf0,0x06,0x00,0x00,0x20,0x25,0x84,0x92,0x12,0x44,0x49,0x22,
|
||||
0x00,0x10,0x45,0x54,0x00,0x08,0x00,0x20,0x30,0x42,0x98,0xa4,0x00,0x40,0x04,0x80,
|
||||
0xd2,0xc8,0xe4,0x90,0xd2,0x48,0xe4,0x80,0x70,0x60,0x60,0x60,0x70,0x96,0x70,0x30,
|
||||
0x04,0x21,0x24,0xa9,0xaa,0x52,0x2a,0x15,0x40,0x10,0x04,0x80,0x90,0x04,0x20,0x80,
|
||||
0xc0,0xe0,0xc0,0xc0,0x18,0x81,0x34,0x30,0x01,0x52,0xa0,0x24,0x07,0x2c,0x99,0x25,
|
||||
0xe0,0x0d,0x0b,0x92,0xf0,0x0c,0x07,0xe0,0x07,0x03,0x03,0x83,0x01,0xb2,0x81,0x0c,
|
||||
0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0x40,0x00,0x40,0x40,0x00,0x40,0x40,0x80,
|
||||
0x02,0x03,0x03,0x03,0x03,0x03,0x03,0x01,0x22,0x80,0x04,0x90,0x80,0x84,0x80,0x80,
|
||||
0x0e,0xe8,0x26,0x9a,0x06,0x26,0x09,0x06,0x2a,0xca,0x92,0x4a,0xa4,0xb4,0xa5,0x13,
|
||||
0xa9,0xa5,0xca,0xc8,0x03,0xf0,0x38,0xc1,0xb2,0x32,0xca,0x0a,0xc0,0xe1,0x18,0x18,
|
||||
0x52,0xb2,0xb1,0xa6,0x99,0x64,0x19,0x99,0xaa,0x51,0x4c,0xcc,0xa4,0x99,0x99,0x91,
|
||||
0x19,0x4a,0x62,0x9a,0x49,0x99,0x12,0x9a,0x06,0x07,0x03,0x07,0x07,0xf0,0x03,0xf0,
|
||||
0x22,0x88,0x80,0xe1,0xe4,0x46,0xc2,0x99,0x89,0x90,0x41,0x16,0x52,0x49,0x24,0x91,
|
||||
0x18,0x70,0x94,0xd0,0x50,0x90,0x20,0x02,0xf0,0x03,0x07,0x06,0x07,0x05,0xf0,0x02,
|
||||
0x03,0x05,0x80,0x07,0x03,0x07,0x07,0x07,0x94,0x07,0xe8,0x03,0x8b,0x2a,0x0b,0xe0,
|
||||
0xe0,0xe0,0xc0,0x18,0x38,0x61,0x0c,0x48,0x00,0x90,0xa0,0x20,0x80,0x00,0x00,0x00,
|
||||
0x00,0x00,0x24,0xc1,0xc1,0xe1,0xe0,0x07,0x98,0x24,0x0c,0x22,0x08,0x48,0x10,0x04,
|
||||
0x00,0x44,0x10,0x42,0x48,0x20,0xa4,0x24,0x20,0x04,0x80,0x08,0x40,0x10,0x84,0x20,
|
||||
0xc9,0x80,0x83,0x8d,0x98,0x24,0x9a,0x18,0x30,0x30,0x90,0x00,0x44,0x11,0xa4,0x2c,
|
||||
0x64,0x89,0x13,0x40,0x11,0x01,0x8b,0x90,0x80,0x80,0x10,0x08,0x88,0xcc,0xc6,0xb1,
|
||||
0x60,0x87,0x81,0x90,0x80,0xa4,0xc4,0x30,0x25,0x24,0x01,0x83,0x04,0x8c,0x83,0x07,
|
||||
0x60,0xf0,0xf0,0x70,0x06,0x03,0x03,0x43,0x0c,0xc1,0xe1,0x01,0xe1,0xc9,0x0d,0x80,
|
||||
0xe0,0x07,0xd0,0xd0,0x07,0xb0,0x03,0x03,0x80,0x40,0x40,0x80,0x40,0x40,0x00,0x40,
|
||||
0x03,0x03,0x01,0x01,0x01,0x01,0x01,0x00,0x80,0x80,0x80,0xc0,0xc0,0xc0,0xc0,0xc0,
|
||||
0x26,0x07,0x06,0x11,0x03,0xf0,0xf0,0x01,0x13,0x83,0xd0,0xa9,0xd8,0x26,0xa8,0x44,
|
||||
0xc1,0x81,0x00,0x00,0x24,0x20,0x4a,0x00,0xe1,0xe0,0xc0,0x00,0x00,0x90,0x44,0x03,
|
||||
0xe4,0x06,0xc8,0xe4,0xa0,0x51,0x96,0x10,0x94,0x9a,0x4c,0x32,0xc9,0xb2,0xb2,0x00,
|
||||
0x9a,0x94,0x93,0x93,0x50,0x40,0xf0,0xc0,0x50,0xd0,0xf0,0x03,0x03,0x01,0x00,0x00,
|
||||
0x9a,0x8b,0x26,0x95,0x11,0x05,0xc0,0xe0,0xc4,0x10,0x42,0x88,0x21,0x44,0x50,0xc2,
|
||||
0x40,0x10,0x80,0x08,0x20,0x04,0x91,0x04,0x06,0x0c,0xc0,0x18,0x00,0x20,0x00,0x00,
|
||||
0x07,0x03,0x03,0x07,0xf0,0xe0,0xc0,0xc0,0x07,0xf0,0x03,0x00,0x00,0x00,0x00,0x00,
|
||||
0x40,0x10,0xc0,0xf0,0x07,0x03,0x00,0x00,0x00,0xe2,0xe0,0xc0,0xe0,0xe0,0x00,0xe0,
|
||||
0x40,0xf0,0x03,0x03,0x01,0x03,0x07,0x31,0x00,0x00,0x00,0x00,0x40,0x40,0x08,0x00,
|
||||
0x98,0x52,0x48,0xaa,0xa8,0x24,0xd2,0x52,0x80,0x04,0x40,0x10,0x84,0x80,0x20,0x84,
|
||||
0x92,0x24,0xb2,0x54,0x11,0x84,0x20,0x49,0x42,0x07,0xd8,0x48,0x02,0x10,0x44,0x52,
|
||||
0x02,0xc8,0x80,0x92,0x48,0x22,0x88,0x29,0x26,0xa2,0x20,0x64,0x90,0x12,0x50,0x14,
|
||||
0x80,0x80,0xe0,0xc3,0xd8,0x16,0x92,0x8a,0x30,0xc3,0x4c,0x58,0x4a,0xd4,0x50,0x70,
|
||||
0x80,0xc9,0x01,0x41,0x14,0x49,0x00,0xd8,0xc0,0x60,0xf0,0x91,0x8c,0xb0,0x92,0xc1,
|
||||
0x50,0xd0,0xe8,0xb0,0x07,0x07,0xa0,0xc0,0x40,0x20,0x92,0x12,0x92,0x64,0x92,0x12,
|
||||
0x01,0x01,0x00,0x02,0x81,0x00,0x81,0x00,0xe0,0x70,0x70,0x87,0xb8,0x38,0x38,0x38,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x80,0x80,0xc0,0x40,0xc0,0x40,0x40,0x40,
|
||||
0x14,0x00,0x00,0x08,0x20,0x84,0x10,0x48,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x04,
|
||||
0x00,0x00,0x00,0x00,0x04,0x20,0x88,0x82,0x00,0x01,0x03,0x07,0xb0,0xe0,0xe0,0xc0,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xf0,0xf0,0xe0,0xe1,0x0c,0x00,0x00,0x00,0x08,0x30,0x07,0x07,0x07,0x06,0x02,0x80,
|
||||
0x40,0x88,0x87,0x81,0x00,0x00,0x00,0x00,0x01,0x07,0xf0,0x07,0x07,0xf0,0xe0,0x88,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x03,0x01,0x01,0x00,0x00,0x00,0x00,
|
||||
0x9c,0xc3,0x07,0xf0,0xe0,0xc0,0xc0,0xe0,0x44,0x00,0x82,0x08,0x40,0x04,0x00,0x02,
|
||||
0x48,0x22,0xa8,0x8a,0x62,0x48,0x11,0x44,0x90,0x00,0x84,0x20,0x88,0x00,0x22,0x08,
|
||||
0xa2,0xca,0xc9,0x34,0x80,0xc8,0x80,0xcc,0xa4,0x62,0x60,0x0b,0x60,0x60,0x60,0x60,
|
||||
0xa0,0xc0,0x13,0xe0,0xe0,0xe4,0x1a,0xe4,0x11,0x93,0x03,0x03,0x07,0xf0,0xf0,0xe0,
|
||||
0x80,0x91,0xc0,0xc0,0xe4,0xe0,0xf0,0xf0,0x8c,0xc0,0xc0,0x60,0x0e,0xa2,0x0a,0x48,
|
||||
0x02,0x80,0x04,0x01,0x86,0x92,0x0a,0x48,0xc9,0x83,0x87,0xf0,0xe0,0xf0,0xe0,0xf0,
|
||||
0x90,0x26,0x26,0xaa,0x29,0xa5,0xc9,0xa5,0x80,0x00,0xc0,0xc0,0xc0,0x09,0x80,0x20,
|
||||
0x00,0x08,0x54,0x10,0x07,0xf0,0x03,0x01,0x00,0x45,0x00,0x00,0x40,0x00,0x99,0x99,
|
||||
0x00,0x00,0xe0,0xf0,0x00,0x93,0x49,0x93,0x40,0x40,0x00,0x00,0x04,0x80,0xc0,0x70,
|
||||
0x48,0x90,0x84,0x20,0x08,0xd0,0x07,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x10,0x44,0x00,0x00,0x00,0x01,0x01,0x03,0x80,0x80,0x08,0x1a,0x1c,0xc2,0xe2,0xc2,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x03,0xe0,
|
||||
0xe1,0x03,0x06,0x06,0x0c,0x1c,0x70,0xe0,0x60,0xc0,0x80,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x40,0x40,0x20,0x60,0x00,0x00,0x00,0x00,0x00,0x40,0x40,0x40,
|
||||
0xe0,0xe0,0xf0,0xf0,0xf0,0x07,0x07,0x07,0x08,0x80,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x50,0x12,0x40,0x49,0x20,0x84,0x10,0x40,0x80,0x24,0x00,0x10,0x44,0x00,0x92,0x00,
|
||||
0xc4,0xb2,0xd4,0xc0,0xe0,0x07,0xc8,0xd0,0x9c,0x91,0x24,0x99,0x99,0x07,0xf0,0xe0,
|
||||
0x90,0x01,0xf0,0xe0,0xc0,0x00,0x08,0x30,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xc0,0xe0,0xe0,0xf0,0xf0,0xf0,0x07,0x07,0x01,0x24,0x00,0x90,0xa4,0x29,0x94,0x64,
|
||||
0x02,0x20,0x88,0x03,0x13,0x20,0x90,0x06,0xc0,0x07,0x07,0x07,0x07,0x07,0x07,0x07,
|
||||
0xb4,0x93,0x93,0x0d,0xe0,0x03,0x00,0x00,0x92,0xa5,0x4a,0x96,0x26,0x99,0xe8,0xf0,
|
||||
0x00,0x80,0x07,0x26,0x99,0x99,0x99,0xa6,0x1a,0x00,0x11,0x80,0x49,0xe0,0x80,0x00,
|
||||
0xe8,0x00,0x20,0x00,0x26,0x00,0x00,0x00,0x03,0x07,0x00,0xd8,0x40,0x00,0x02,0x03,
|
||||
0x01,0xf0,0x00,0xc9,0x07,0xf0,0xc0,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x06,
|
||||
0x03,0x03,0x07,0x07,0x07,0x0c,0x0c,0x0c,0xc2,0xc2,0xc2,0x42,0xc0,0x40,0x40,0x40,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xa0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x26,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x60,0x30,0xb0,0x58,0x87,0x98,0x32,0xa2,0xc2,0x1c,0x38,0x18,0x18,0x10,0x10,0x10,
|
||||
0x03,0x03,0x03,0x03,0x01,0x01,0xc3,0xc3,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x04,0x00,0x10,0x04,0x20,0x02,0x10,0x04,0x48,0x01,0x84,0x03,0x03,0x07,0x07,0xf0,
|
||||
0x90,0xf0,0xc0,0x80,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x01,0x49,0x43,0xcc,
|
||||
0x10,0x10,0xb0,0xa8,0x98,0x23,0x31,0x34,0x00,0x00,0x40,0x00,0xa0,0x81,0x9c,0xf0,
|
||||
0x03,0x03,0xf0,0xf0,0xe1,0x80,0x9a,0xa2,0x49,0x99,0x26,0xc0,0xf0,0x07,0x38,0x03,
|
||||
0x40,0x19,0xc0,0x26,0x08,0x07,0x07,0x07,0x07,0xf0,0xc0,0xc0,0x04,0xd2,0x16,0x26,
|
||||
0x02,0x00,0x00,0x00,0x80,0xe0,0xe0,0xc0,0x07,0x80,0x80,0x00,0x40,0x10,0x02,0x20,
|
||||
0x03,0x07,0x07,0x03,0x0b,0x80,0x00,0xc0,0x00,0x00,0x80,0x00,0x88,0xe2,0xc0,0xe0,
|
||||
0x00,0x00,0x80,0x00,0x24,0xc9,0x0d,0x10,0x03,0x01,0x40,0x00,0x89,0x22,0x0b,0x99,
|
||||
0x01,0xb4,0x04,0xac,0xb2,0x83,0x81,0xa1,0xb1,0x93,0x4a,0x95,0x0b,0x93,0x93,0x94,
|
||||
0x1c,0x1c,0x18,0x38,0x38,0x87,0x87,0x07,0x40,0x00,0x20,0x20,0x01,0x21,0x01,0x01,
|
||||
0x00,0x40,0x00,0x20,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
|
||||
0x01,0x00,0x60,0x12,0x86,0x30,0x20,0x00,0xe0,0x00,0x00,0x00,0x01,0x09,0x81,0x04,
|
||||
0x22,0x22,0x22,0x02,0x40,0x02,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xc1,0xc1,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0x80,0x80,0x80,0x80,0xc0,0xc0,0xc0,0xc0,
|
||||
0x20,0x02,0x10,0x04,0x20,0x02,0x08,0x22,0xe0,0xe0,0xe0,0xc0,0xc0,0xc0,0xc0,0xc0,
|
||||
0x38,0x18,0x1c,0x0e,0xb1,0xb8,0x93,0xb2,0x58,0x23,0xcc,0x4c,0xcc,0xa6,0x4c,0x0c,
|
||||
0x31,0x19,0x18,0x38,0x2c,0xc9,0xc8,0x42,0x01,0x60,0xc0,0xb8,0x93,0xa9,0x23,0x89,
|
||||
0xa0,0xa0,0x00,0x00,0x00,0x03,0xe8,0x60,0x01,0x01,0x04,0x02,0x70,0x23,0x01,0x11,
|
||||
0x07,0xf0,0xf0,0xe0,0xe0,0x40,0xe0,0xc0,0x98,0x41,0x88,0x00,0x00,0x40,0x10,0xc6,
|
||||
0x03,0x03,0x03,0x03,0x01,0x04,0x12,0xc9,0x08,0x11,0x11,0x08,0x28,0x08,0x92,0x90,
|
||||
0xb8,0xaa,0xb8,0x12,0x4a,0x95,0xa2,0x49,0xf0,0xf0,0x07,0x07,0x03,0x03,0x03,0x03,
|
||||
0x44,0x11,0x84,0x24,0x21,0x08,0x42,0x10,0x0d,0xd8,0x64,0xd1,0x9a,0xe0,0xe4,0xa6,
|
||||
0xc6,0xa4,0x38,0xc2,0xc0,0xcc,0xcc,0xcc,0x03,0x03,0x03,0x07,0xf0,0x07,0x07,0x07,
|
||||
0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x01,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x40,0xe0,0xa0,0xe0,0xf0,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x24,0x89,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x11,0x4c,0xc9,0xc9,0x1a,0xb1,0xc8,
|
||||
0x00,0x10,0x00,0x00,0x00,0x10,0x18,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x80,0x80,0xa0,0x80,0x91,0xa0,0x20,0x48,0xe0,0xe0,0xe0,0xe0,0xf0,0xf0,0xf0,0xf0,
|
||||
0x64,0x9a,0x9a,0x08,0x12,0xa8,0x54,0xa8,0x80,0x80,0x80,0x80,0x80,0x10,0x22,0x08,
|
||||
0x86,0xc1,0x40,0x20,0x10,0x08,0x00,0x80,0x0c,0x87,0x0d,0x87,0xf0,0x0b,0x07,0x03,
|
||||
0x90,0x84,0x40,0x40,0x04,0x00,0x00,0x00,0x20,0x04,0x80,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x01,0x09,0x01,0x05,0x04,0x01,0x00,
|
||||
0xc1,0xc0,0x80,0x80,0x81,0xc0,0x80,0xc0,0xd0,0xca,0x9a,0x25,0x24,0xb4,0x48,0x92,
|
||||
0x25,0x95,0x95,0x98,0x45,0x54,0x92,0x24,0x84,0x80,0x88,0x20,0x80,0x10,0x44,0x00,
|
||||
0x09,0x25,0x81,0x09,0x01,0x11,0x05,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x20,0x89,0x24,0x85,0x90,0xc6,0x05,0x25,0x01,0x00,0x43,0x91,0x9a,0x9c,
|
||||
0xb2,0xa0,0x92,0x49,0xc8,0xa4,0xd2,0x95,0x07,0x07,0xf0,0xe0,0xc0,0xc0,0xc0,0xc0,
|
||||
0xd8,0xe8,0xf0,0xf0,0x07,0x07,0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x10,0x04,0x08,
|
||||
0x07,0x03,0x01,0xc0,0x60,0x60,0x03,0x03,0x10,0x02,0x08,0x22,0x19,0xa9,0xa9,0xa4,
|
||||
0x00,0x40,0x80,0x20,0x80,0xc0,0x80,0xa0,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x03,
|
||||
0x22,0x51,0x99,0xa9,0xc8,0x41,0xa0,0x00,0x40,0xc0,0x80,0x60,0xc0,0x50,0x60,0xa0,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x80,0xa4,0x90,0x48,0x48,0x90,0xe0,0xc8,
|
||||
0x10,0x10,0x80,0x12,0x04,0x04,0x04,0x04,0x00,0x00,0x00,0x00,0x01,0x00,0x01,0x00,
|
||||
0x10,0x44,0x50,0x52,0x64,0xb4,0xf0,0xd4,0xf0,0xf0,0x07,0x07,0x07,0x07,0x07,0x07,
|
||||
0x64,0x52,0x48,0x52,0x20,0x4c,0x54,0x28,0x00,0x10,0x00,0x04,0x04,0x02,0x43,0x00,
|
||||
0x80,0x00,0x20,0x0c,0x06,0x03,0x80,0xe8,0x03,0x01,0x00,0x00,0x00,0x00,0x80,0x00,
|
||||
0x00,0x02,0x11,0x05,0x81,0x8d,0x08,0x00,0x80,0x20,0x84,0x11,0xc4,0x8d,0x25,0x11,
|
||||
0x00,0x80,0x00,0x00,0x22,0x88,0x62,0x92,0x02,0x00,0x02,0x02,0x00,0x81,0x25,0x84,
|
||||
0xc0,0x80,0xc0,0xc0,0x40,0x00,0x80,0x00,0x12,0x44,0x44,0x12,0x48,0x22,0x24,0x10,
|
||||
0x89,0xa2,0x88,0x22,0x88,0x22,0x89,0x81,0x20,0x08,0xc0,0x12,0xc2,0x07,0xf0,0xf0,
|
||||
0x09,0x81,0x05,0x11,0x1c,0x04,0x96,0x94,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,
|
||||
0x26,0xd2,0xc0,0x07,0x07,0x87,0x94,0xa4,0x92,0x38,0x98,0x98,0x99,0xa6,0x86,0x31,
|
||||
0xa4,0xa9,0xaa,0xd4,0x9c,0x2a,0x23,0x9a,0xe0,0xc0,0xc0,0xe1,0x2c,0x54,0x2a,0xc9,
|
||||
0x01,0x01,0x00,0x32,0x52,0x52,0xb2,0x99,0x02,0x04,0x11,0x29,0x52,0xa5,0x4a,0x29,
|
||||
0x40,0x04,0xa0,0xac,0xa4,0xb0,0x05,0x05,0x11,0x00,0xc8,0x02,0x90,0x00,0x92,0x91,
|
||||
0x00,0x03,0x68,0x03,0x03,0x03,0xb0,0x87,0x03,0x07,0x03,0x07,0xc6,0x38,0x38,0x87,
|
||||
0x4c,0x06,0x06,0x81,0x06,0x06,0x06,0x21,0xd8,0xf0,0xb8,0xe8,0x07,0x03,0x03,0x01,
|
||||
0x00,0x00,0x00,0x00,0x04,0x06,0x03,0x00,0x01,0xf0,0x09,0xd8,0x06,0xaa,0x22,0xc1,
|
||||
0x0c,0x0c,0x04,0x04,0x06,0x06,0x02,0xc0,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x80,
|
||||
0x0b,0xe2,0xc8,0xc5,0x09,0x00,0x00,0x00,0x07,0x07,0x07,0x07,0x07,0x07,0x03,0x07,
|
||||
0x68,0x50,0xb4,0x28,0x58,0xd4,0x64,0x68,0x00,0x40,0x00,0x00,0x24,0x20,0x02,0x20,
|
||||
0x80,0x88,0xc2,0xe0,0xf0,0x0b,0x06,0x04,0x01,0xc0,0xe0,0x70,0xf0,0xe0,0xf0,0x70,
|
||||
0x00,0x00,0x00,0x80,0x80,0x00,0x80,0x80,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x94,0x9a,0x12,0x44,0x11,0x00,0x00,0x00,0x91,0x44,0x45,0xd1,0xc2,0x62,0xe1,0xa4,
|
||||
0x80,0x40,0x00,0x80,0x40,0x40,0x80,0x80,0x42,0x28,0x21,0x04,0x12,0x01,0x24,0x00,
|
||||
0x43,0x41,0x01,0x38,0x98,0x98,0x00,0xf0,0xf0,0x02,0x07,0xe0,0xf0,0x07,0xe0,0xc4,
|
||||
0xf0,0x70,0xf0,0xe0,0xe0,0xc0,0xe0,0xc0,0x01,0x01,0x01,0x01,0x41,0xc1,0xc1,0xc1,
|
||||
0x9a,0x64,0x94,0x91,0x42,0xb0,0xcc,0x44,0x61,0xa3,0x29,0x85,0x4c,0x07,0x4c,0x46,
|
||||
0x62,0xb2,0x25,0x24,0x52,0xd2,0x99,0x24,0x64,0x31,0x8c,0xe2,0x0e,0x31,0x90,0x44,
|
||||
0x62,0x2c,0x70,0x87,0xcc,0x32,0xc4,0x92,0xa6,0x9a,0x52,0x18,0x93,0x38,0x98,0x42,
|
||||
0x09,0xe4,0x18,0x96,0x88,0x98,0x9c,0x4c,0x84,0x13,0xc4,0x31,0xe1,0x8e,0x31,0x44,
|
||||
0x93,0xa4,0xd2,0x46,0x60,0x30,0x89,0x64,0x87,0x38,0x43,0x12,0x93,0xe1,0xb2,0x00,
|
||||
0x09,0x01,0x01,0x98,0x03,0x07,0xf0,0xd8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x98,0x8c,0x31,0xc6,0x1c,0xe4,0x0e,0x0a,0x0a,0xd8,0x85,0x96,0xb4,
|
||||
0x03,0x03,0x03,0x03,0x03,0x01,0x03,0x03,0x80,0x80,0x80,0xf0,0xf0,0x07,0x01,0x80,
|
||||
0x00,0x00,0x00,0x80,0xf0,0x00,0x00,0xb0,0x07,0x03,0x03,0x03,0x03,0x03,0x01,0x01,
|
||||
0xd8,0x90,0x93,0xc8,0xd0,0x64,0x93,0x58,0x24,0x60,0x32,0x30,0xc3,0xc3,0xe1,0xf0,
|
||||
0x07,0x83,0x03,0x20,0x00,0x00,0x00,0x80,0x38,0x1c,0xcc,0xc4,0xe0,0x20,0x30,0xb8,
|
||||
0x00,0x80,0x00,0x00,0x40,0x40,0x40,0x40,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x80,
|
||||
0x01,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0xe0,0xa1,0x60,0x68,0xe0,0xb0,0x60,0xd8,
|
||||
0x40,0x80,0x40,0x40,0x80,0x40,0x40,0x00,0x11,0x00,0x08,0x00,0x00,0x00,0x00,0x00,
|
||||
0xe2,0xe2,0xe0,0xe0,0x0e,0x80,0x80,0x80,0xc0,0xc0,0xc0,0x80,0x80,0xe8,0x10,0x06,
|
||||
0x01,0x03,0xc0,0x03,0x07,0xc0,0x07,0x07,0xc1,0x94,0x81,0x96,0xc1,0x94,0xe1,0xaa,
|
||||
0x54,0x49,0x51,0x20,0x60,0x81,0x60,0x61,0x52,0xa9,0xaa,0xa2,0x04,0x26,0xc4,0xa0,
|
||||
0xac,0x92,0x08,0x16,0xc9,0xd2,0x89,0x62,0x92,0xb0,0x24,0x0e,0x52,0xa9,0xcc,0x22,
|
||||
0x92,0xa1,0x4c,0x06,0x92,0x4c,0xb2,0x89,0x4a,0x8a,0x62,0x07,0xd8,0x19,0x32,0xa6,
|
||||
0x91,0x8a,0x88,0x19,0xca,0x8d,0x48,0x99,0x92,0x92,0x0c,0x61,0xb1,0x99,0x99,0x24,
|
||||
0x92,0x48,0x8b,0x86,0xc6,0x07,0xa4,0x06,0x44,0x11,0x80,0x24,0x40,0x12,0x00,0x89,
|
||||
0x03,0x03,0x03,0xac,0x06,0x03,0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xe1,0xe0,0xf0,0xf0,0xf0,0xf0,0x07,0x07,0x0d,0xa6,0x80,0x20,0x00,0x00,0x00,0x00,
|
||||
0x07,0x03,0x07,0x07,0x07,0x07,0xe0,0xe0,0x98,0xf0,0xc0,0xc0,0xc0,0x07,0x03,0x00,
|
||||
0x00,0x00,0x05,0x07,0x07,0x01,0x04,0x01,0x01,0x01,0x03,0x06,0x00,0x40,0x11,0x01,
|
||||
0x44,0x30,0x93,0x48,0xd8,0xb4,0x68,0x48,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xe0,0x03,0xc0,0xe0,0x00,0x00,0x00,0x00,0x24,0x00,0x10,0x80,0xe0,0x38,0x03,0xf0,
|
||||
0x60,0x60,0x20,0x04,0x10,0x04,0x80,0xe0,0x00,0x00,0x80,0x00,0x00,0x80,0x80,0x00,
|
||||
0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x70,0x70,0xd8,0x06,0x46,0x02,0x06,0xc0,
|
||||
0x20,0x80,0x00,0x40,0x40,0x00,0xc0,0x20,0x00,0x04,0x00,0x00,0x00,0x04,0x10,0x03,
|
||||
0x80,0x80,0xe0,0x70,0x23,0x60,0x07,0xe2,0x01,0x00,0x00,0x08,0xe4,0x48,0x42,0x10,
|
||||
0x07,0x07,0x07,0x07,0x07,0x03,0xc9,0xc9,0xb2,0xd4,0xa2,0x8c,0x21,0x26,0xc9,0x09,
|
||||
0x62,0xc4,0xcc,0x92,0x93,0x93,0xe8,0x88,0xa9,0xf0,0x29,0x16,0x43,0x13,0x51,0x38,
|
||||
0x08,0xa2,0x91,0xb2,0xe1,0x0c,0x1c,0x8c,0x92,0x49,0x49,0x26,0x30,0x18,0xa5,0xc2,
|
||||
0x24,0x07,0x8d,0x4c,0x83,0x87,0x98,0x19,0x29,0xac,0x4c,0x26,0x03,0x0a,0x22,0x31,
|
||||
0x90,0x12,0x4c,0x38,0x1a,0x31,0x44,0x08,0x98,0x34,0x9c,0x58,0x9a,0x2a,0x98,0x88,
|
||||
0x52,0xe4,0xd2,0x92,0xc4,0x95,0x2a,0x88,0x44,0x00,0x20,0x00,0x89,0x22,0x8d,0xa2,
|
||||
0x03,0x07,0x07,0x07,0x07,0x03,0x03,0x43,0x00,0x00,0x80,0x80,0x00,0x00,0x00,0x80,
|
||||
0x07,0x03,0x07,0x07,0x07,0x07,0x03,0x03,0x00,0x00,0x00,0x00,0x00,0x01,0x03,0x03,
|
||||
0x38,0x20,0x00,0x04,0x08,0x20,0xe0,0x80,0x00,0x00,0x00,0x00,0x00,0x03,0x23,0xc6,
|
||||
0x00,0x00,0x03,0x07,0xf0,0xf0,0x30,0x08,0x01,0x01,0x03,0x01,0x01,0x03,0x03,0x01,
|
||||
0xd0,0x00,0x00,0x00,0x00,0x04,0x32,0xc0,0x00,0x80,0x80,0x00,0x40,0x40,0xc0,0xc0,
|
||||
0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0xf0,0xf0,0xe0,0xe1,0x28,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0xe8,0x16,0x11,0x43,0x0b,0x00,0x00,0x00,0x00,0x80,0x06,0x0c,0x06,
|
||||
0x00,0x60,0x00,0x00,0x00,0x03,0x07,0x61,0x00,0x08,0x06,0x02,0x03,0xf0,0x03,0x01,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x03,0x03,0x07,0x07,0x07,0x07,0xf0,
|
||||
0x88,0x02,0x03,0x05,0x26,0x06,0x13,0x38,0x94,0x0c,0x60,0x07,0x96,0x68,0x20,0x88,
|
||||
0x8c,0x88,0x00,0x91,0x01,0x0b,0xc3,0x08,0xe8,0x4c,0x01,0x4c,0xa1,0x8e,0x13,0xcc,
|
||||
0x89,0xc0,0xc0,0xc9,0xc0,0xc9,0x80,0xcc,0xa6,0x20,0x88,0x22,0x88,0x4a,0x92,0x40,
|
||||
0x52,0x92,0x84,0x40,0x93,0x44,0x51,0x84,0x48,0x92,0x84,0x24,0x4c,0x18,0x87,0x20,
|
||||
0xc8,0x13,0x94,0x94,0x23,0x07,0xf0,0x07,0x44,0x12,0x4a,0x48,0x09,0xb2,0x9c,0x09,
|
||||
0xb2,0x84,0x96,0x92,0xc6,0x32,0x95,0x18,0x22,0x48,0xcc,0x23,0x92,0x0c,0x92,0x9a,
|
||||
0x22,0xc8,0xa2,0x32,0x38,0xa9,0x42,0x4a,0x28,0x89,0x99,0x88,0x31,0x45,0x93,0x03,
|
||||
0x18,0x03,0xf0,0xe0,0xe0,0x30,0xe0,0xc1,0x80,0x8a,0xc4,0x0c,0x68,0xf0,0x80,0x0b,
|
||||
0x03,0x03,0x01,0x01,0xb0,0x07,0x70,0x70,0x07,0x04,0x0c,0x06,0x07,0x07,0x03,0x03,
|
||||
0x00,0x00,0x00,0x80,0xc0,0xe0,0xb0,0x90,0x1c,0x0c,0x06,0x07,0xf0,0xf0,0xe0,0xe0,
|
||||
0x00,0x00,0x00,0x80,0x00,0x00,0x01,0x02,0x03,0x03,0x01,0x03,0x03,0x03,0x01,0x03,
|
||||
0x12,0x44,0x11,0xb4,0xd0,0xc0,0xa4,0x44,0xc0,0xe0,0xe0,0xe1,0xd0,0xd8,0xf0,0xf0,
|
||||
0x10,0xc0,0x40,0xa0,0x82,0x42,0x92,0x00,0x00,0x20,0x00,0x80,0x24,0x90,0x90,0x40,
|
||||
0x00,0x00,0x00,0x40,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x80,
|
||||
0xc9,0x60,0x80,0x80,0x00,0x00,0x03,0x07,0x03,0x06,0x08,0x38,0x70,0xe0,0x80,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x06,0x07,0x07,0x07,0x07,0x07,0xf0,
|
||||
0x92,0x90,0x44,0x11,0x80,0x08,0x22,0x92,0x02,0x20,0xe0,0x40,0x08,0x40,0xac,0x06,
|
||||
0x22,0x03,0x03,0x0b,0x0e,0x03,0x48,0x48,0x01,0x45,0xac,0x0e,0x06,0x19,0x60,0xf0,
|
||||
0x4c,0x0c,0x12,0xcc,0x92,0xd2,0xc1,0x25,0x80,0x61,0x30,0xc6,0x19,0xc3,0x30,0xc3,
|
||||
0x01,0xc5,0xc0,0x13,0xe8,0x07,0x30,0x60,0x06,0x90,0x16,0x4a,0x95,0xf0,0x60,0xc3,
|
||||
0x49,0x8d,0x96,0xc9,0xc0,0x01,0x01,0xf0,0x62,0x64,0x34,0x93,0x4c,0xc0,0xe0,0xe0,
|
||||
0x91,0xc8,0x95,0xc9,0x26,0x02,0x00,0x01,0x8c,0x8a,0xa9,0x52,0xa5,0x89,0x21,0x89,
|
||||
0x19,0x51,0x29,0x8a,0x96,0xd8,0xb4,0x68,0x03,0x07,0xf0,0x03,0x21,0x13,0x90,0xd8,
|
||||
0x03,0x0e,0xe0,0x38,0x06,0xb8,0xf0,0xc3,0x03,0xc0,0x0c,0xa1,0xc0,0x82,0x28,0x80,
|
||||
0xc0,0xc0,0x84,0x34,0x38,0xf0,0xc0,0xe8,0x01,0x01,0x10,0xd4,0x52,0xa9,0x22,0xac,
|
||||
0xc0,0xd0,0x70,0x38,0xb8,0x30,0x30,0xf0,0x80,0x00,0x01,0x03,0xf0,0x13,0x01,0x10,
|
||||
0xf0,0xe0,0x80,0x04,0x88,0x25,0x20,0x24,0x0b,0x00,0x02,0x48,0x00,0x99,0x10,0x44,
|
||||
0xb4,0x07,0x07,0x13,0x07,0xe8,0x03,0x80,0x07,0x07,0x07,0x03,0x03,0x01,0xc0,0xe0,
|
||||
0x40,0x90,0x25,0x93,0xd2,0xa4,0x99,0xe0,0x00,0x92,0x49,0x92,0xa6,0x44,0x50,0x99,
|
||||
0x92,0x92,0x92,0x68,0xb0,0x80,0x00,0xa4,0x80,0x80,0x00,0x00,0x00,0x00,0x01,0x03,
|
||||
0x1c,0x50,0x40,0x00,0x00,0xe8,0xd1,0x44,0x00,0x00,0x00,0x00,0x21,0x52,0x49,0x2c,
|
||||
0x00,0x00,0x00,0x02,0x26,0xf0,0x0d,0xf0,0xf0,0xe0,0xc0,0x92,0xa4,0x99,0x99,0x58,
|
||||
0xf0,0x93,0x13,0xd0,0x46,0x32,0x89,0x13,0x52,0x19,0xa5,0x2c,0x95,0x9a,0x99,0x99,
|
||||
0x03,0xb4,0x23,0xa5,0x83,0x99,0x43,0x24,0xa0,0xf0,0x07,0xc0,0xc8,0xc3,0x03,0x07,
|
||||
0x91,0x18,0x82,0x8d,0x89,0xf0,0xc0,0xe0,0x18,0xc2,0x10,0x84,0x91,0x44,0x25,0x03,
|
||||
0xe0,0x06,0x01,0x07,0xc0,0x80,0xf0,0xb1,0x0c,0x07,0xc0,0x00,0x07,0x26,0x26,0x96,
|
||||
0xe0,0x00,0x06,0xd8,0x48,0xa4,0x99,0x99,0x80,0xe4,0xc4,0xd2,0x29,0xc0,0x14,0x06,
|
||||
0x01,0x01,0x40,0x87,0x83,0x19,0xcc,0xb0,0x96,0x10,0x49,0x06,0x91,0x04,0x95,0x4a,
|
||||
0xd8,0x24,0xa4,0x49,0x90,0xb2,0x9a,0xca,0x23,0x07,0x21,0xac,0xd4,0xca,0x12,0xa4,
|
||||
0x38,0xe0,0x0e,0xc0,0xe0,0xa0,0xb8,0x91,0x80,0xa4,0x10,0xd0,0x90,0x07,0xc0,0x9a,
|
||||
0x92,0x04,0x60,0x8b,0x88,0x20,0x04,0x41,0x21,0x96,0xe8,0xe0,0xc0,0x8a,0x12,0x24,
|
||||
0xe0,0x80,0x04,0x01,0x01,0x93,0x01,0x01,0xc0,0xc0,0x80,0x00,0x00,0x12,0x40,0x0c,
|
||||
0x92,0x34,0x04,0x10,0x44,0x10,0x92,0x48,0x44,0x44,0x00,0x88,0x20,0x00,0x44,0x00,
|
||||
0xd0,0x0b,0x95,0x9a,0x52,0x4c,0x96,0xf0,0xf0,0x08,0x10,0xc0,0x8b,0x45,0x26,0x96,
|
||||
0xc8,0x03,0x01,0x01,0x00,0x00,0xc0,0x50,0x60,0x60,0x60,0x25,0xf0,0x52,0x06,0x16,
|
||||
0xc4,0x60,0x19,0x92,0xa4,0x9a,0x94,0xb0,0x52,0x92,0x92,0x2c,0x24,0x91,0x64,0x89,
|
||||
0x19,0xc2,0x9a,0xa2,0x09,0x64,0xf0,0x64,0xa1,0x25,0xcc,0xcc,0x40,0xc8,0xa4,0x80,
|
||||
0x92,0xe0,0x70,0x20,0x80,0x20,0x40,0x90,0x34,0x18,0xa5,0x32,0x24,0x24,0x10,0x12,
|
||||
0xc8,0x12,0x06,0x45,0x81,0x82,0x10,0x80,0x9a,0x95,0x94,0x49,0x22,0x4a,0xa9,0x10,
|
||||
0x26,0x4a,0xa4,0x03,0xd2,0xa5,0xe8,0x52,0x07,0xf0,0x00,0x02,0xe0,0x25,0x90,0x52,
|
||||
0xe0,0xc0,0x0d,0xe0,0x64,0x09,0x89,0x99,0x64,0x06,0x99,0x9a,0x14,0xd2,0xd8,0xf0,
|
||||
0x32,0x32,0xca,0xa4,0xd4,0xe0,0x00,0x00,0x4a,0xa4,0xd4,0x07,0x40,0x04,0x00,0x00,
|
||||
0x93,0xf0,0x40,0x00,0x20,0x40,0x40,0xcc,0xc0,0xc0,0xc0,0xe0,0xe4,0xe0,0xc6,0xb1,
|
||||
0xb0,0xb0,0x07,0x07,0x13,0x83,0x28,0x07,0x12,0x0a,0x00,0x00,0x00,0x12,0xd2,0x25,
|
||||
0x32,0x84,0x49,0x0b,0xb4,0x12,0x94,0x64,0x89,0x52,0xa9,0x49,0x95,0x92,0x80,0x92,
|
||||
0x4a,0xb2,0x04,0xa6,0x29,0xc8,0x48,0x02,0xa2,0x10,0xd4,0x48,0x2a,0x54,0x80,0x80,
|
||||
0x10,0x84,0x21,0x88,0x90,0x24,0x00,0x40,0x80,0x40,0x00,0x00,0x00,0x00,0x00,0x03,
|
||||
0x00,0x00,0x00,0x01,0x07,0xe0,0x92,0x04,0xa1,0x80,0x92,0x44,0x11,0x04,0xa2,0x88,
|
||||
0x20,0xa4,0x90,0x48,0x22,0x90,0x44,0x50,0x88,0x00,0x22,0x08,0x00,0x84,0x10,0x02,
|
||||
0x01,0x80,0xe0,0x80,0x00,0x00,0xf0,0xd0,0xb2,0x2a,0x0b,0x0e,0x07,0x99,0xe0,0xc0,
|
||||
0xc4,0xca,0xd8,0x25,0xac,0x54,0x2a,0xc9,0x09,0x04,0x02,0xc0,0x32,0xc3,0x80,0x00,
|
||||
0xca,0x0b,0x4a,0xa4,0x24,0x26,0xf0,0x00,0x32,0x90,0xc9,0x40,0x80,0x24,0xa9,0x00,
|
||||
0x99,0x24,0x99,0x00,0x00,0x99,0xc4,0x00,0x52,0x62,0x24,0xf0,0x0b,0xc0,0x00,0x01,
|
||||
0x80,0x32,0x32,0xc2,0xe4,0x38,0x0c,0x0c,0x24,0x49,0x24,0xb4,0x20,0x80,0xc0,0x60,
|
||||
0x84,0x21,0x8c,0xb0,0x04,0x08,0x00,0x04,0x81,0xd8,0xe0,0x00,0x00,0x00,0x00,0x00,
|
||||
0x06,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x4c,0xa5,0x70,0x07,0x00,0x00,0x80,0x00,
|
||||
0xe8,0xe8,0x00,0x00,0x04,0x00,0x00,0x80,0x80,0x08,0x00,0x40,0x04,0x00,0x00,0x00,
|
||||
0x88,0x02,0x40,0x00,0x88,0x22,0x00,0x00,0x40,0x12,0x80,0x24,0x84,0x14,0x12,0x00,
|
||||
0x52,0xc0,0xd1,0xc0,0xa4,0xc3,0x60,0x62,0x02,0xd2,0x61,0xa9,0xc3,0x03,0xe8,0xb4,
|
||||
0x43,0x30,0xe4,0x20,0x49,0x06,0xc0,0x13,0x0b,0xc0,0xa2,0xe0,0x0b,0x06,0x85,0x90,
|
||||
0xf0,0xf0,0x20,0x88,0x23,0x28,0x4a,0x52,0x40,0xc8,0x92,0x08,0x04,0x44,0x46,0x8c,
|
||||
0x90,0x25,0x8d,0x02,0x88,0xa0,0x92,0x52,0x48,0x93,0x80,0x83,0x62,0x16,0x68,0xb0,
|
||||
0x92,0x40,0xa0,0x04,0x50,0x12,0x80,0x20,0x42,0x10,0x85,0xf0,0x52,0x13,0x84,0x21,
|
||||
0x48,0x02,0xe0,0x48,0x42,0x90,0x04,0x21,0x81,0xa4,0x80,0xca,0xc0,0xd1,0xc4,0xe0,
|
||||
0x90,0x24,0x80,0x48,0x48,0x20,0x84,0x90,0x88,0x04,0x44,0x08,0x02,0x88,0x04,0x14,
|
||||
0x02,0x01,0x07,0xf0,0xc0,0xf0,0x07,0x49,0x03,0xc8,0x94,0x81,0x20,0x80,0x03,0xe0,
|
||||
0x87,0x00,0x13,0x44,0x03,0xe0,0x00,0x00,0x00,0x00,0xe0,0xc0,0x04,0x10,0x02,0x48,
|
||||
0x00,0x00,0x80,0x10,0x00,0x84,0x00,0x20,0x00,0x00,0x00,0x80,0x00,0x48,0x08,0x20,
|
||||
0x02,0x00,0x00,0x00,0x08,0x00,0x80,0x00,0x02,0x02,0x02,0x02,0x00,0x00,0x00,0x80,
|
||||
0xc1,0xe1,0xc3,0xc1,0x10,0x81,0x20,0x01,0x60,0x20,0x20,0x20,0x80,0x40,0x00,0x20,
|
||||
0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x24,0x80,0x12,
|
||||
0x00,0x00,0x00,0x04,0x40,0x10,0x84,0x20,0x24,0x00,0x48,0x00,0x04,0x80,0x00,0x12,
|
||||
0x24,0x00,0x88,0x20,0x02,0x80,0x04,0x20,0x88,0x20,0x84,0x10,0x42,0x08,0x80,0x22,
|
||||
0x88,0x22,0x89,0x24,0x45,0x11,0x87,0x25,0x48,0xa5,0xb4,0xb4,0x25,0x95,0x93,0xb4,
|
||||
0x49,0xc0,0xc0,0xc0,0xa1,0xc0,0xc8,0x80,0x1a,0xe2,0xd2,0xa5,0xb4,0x93,0x4c,0x96,
|
||||
0x1c,0x16,0x26,0x09,0xe8,0x15,0x04,0x11,0x92,0x30,0x64,0xc9,0x32,0xc4,0x51,0x54,
|
||||
0x54,0xaa,0xa9,0x26,0x58,0x93,0x24,0x49,0xa6,0x58,0xb1,0x99,0x58,0x49,0x98,0x91,
|
||||
0x4c,0xa3,0x91,0x24,0x49,0x80,0xcc,0x48,0x84,0x20,0x82,0x48,0x42,0x12,0xa4,0x25,
|
||||
0x49,0x12,0x16,0xc0,0xd2,0xa5,0x94,0x51,0x90,0x04,0x40,0x12,0x40,0xcc,0x20,0x02,
|
||||
0x03,0xd2,0x08,0x22,0x82,0x18,0xc0,0x05,0xe2,0x60,0x8b,0x70,0x20,0x8a,0xf0,0xf0,
|
||||
0x40,0x08,0x80,0x24,0x44,0x24,0x90,0x00,0x02,0x00,0x80,0x00,0x40,0xe0,0xe0,0xe0
|
||||
};
|
|
@ -0,0 +1,38 @@
|
|||
// image converted with: Convert9918 - A simple image converter for the TMS9918A
|
||||
// http://harmlesslion.com
|
||||
|
||||
#include <tms9918.h>
|
||||
|
||||
#pragma data_seg(Code)
|
||||
#include "pic_c.h"
|
||||
#include "pic_p.h"
|
||||
#pragma data_seg(Data)
|
||||
|
||||
void main() {
|
||||
|
||||
#ifdef APPLE1
|
||||
apple1_eprom_init();
|
||||
#endif
|
||||
|
||||
woz_puts("DISPLAYING PICTURE...\r\r");
|
||||
|
||||
// in screen 2
|
||||
tms_init_regs(SCREEN2_TABLE);
|
||||
screen2_init_bitmap(FG_BG(COLOR_WHITE,COLOR_BLACK));
|
||||
|
||||
// bulk copy color table to VRAM
|
||||
tms_set_vram_write_addr(TMS_COLOR_TABLE);
|
||||
for(word t=0; t<sizeof(pic_c); t++) {
|
||||
TMS_WRITE_DATA_PORT(pic_c[t]);
|
||||
}
|
||||
|
||||
// bulk copy pattern table to VRAM
|
||||
tms_set_vram_write_addr(TMS_PATTERN_TABLE);
|
||||
for(word t=0; t<sizeof(pic_p); t++) {
|
||||
TMS_WRITE_DATA_PORT(pic_p[t]);
|
||||
}
|
||||
|
||||
// bye
|
||||
while(apple1_getkey()!=CHR_RETURN);
|
||||
woz_puts("BYE!\r");
|
||||
}
|
Binary file not shown.
After Width: | Height: | Size: 71 KiB |
Binary file not shown.
After Width: | Height: | Size: 416 KiB |
|
@ -9,15 +9,16 @@
|
|||
#define BCOLS 10 // number of board columns
|
||||
#define BROWS 20 // number of board rows
|
||||
#define EMPTY NUMPIECES // the empty character is the character after all tetrominoes
|
||||
#define MARKED 255 // mark position on the board while moving (to reduce flickering)
|
||||
|
||||
// TODO KickC doesn't allow double arrays[][]
|
||||
|
||||
//byte board[32 /*BROWS*/ ][16 /*BCOLS*/]; // the board
|
||||
byte board[16*BROWS];
|
||||
|
||||
#define BOARD_INDEX(x,y) (((int)(y))*16+((int)(x)))
|
||||
#define WRITE_BOARD(x,y,c) board[BOARD_INDEX(x,y)]=(c)
|
||||
#define READ_BOARD(x,y) board[BOARD_INDEX(x,y)]
|
||||
#define BOARD_INDEX(y,x) (((int)(y))*16+((int)(x)))
|
||||
#define WRITE_BOARD(y,x,c) board[BOARD_INDEX(y,x)]=(c)
|
||||
#define READ_BOARD(y,x) board[BOARD_INDEX(y,x)]
|
||||
|
||||
// prototypes
|
||||
void ck_init();
|
||||
|
@ -45,7 +46,7 @@ void ck_drawpiece(sprite *pl) {
|
|||
int x = pl->x + d->offset_x;
|
||||
int y = pl->y + d->offset_y;
|
||||
*/
|
||||
WRITE_BOARD(x,y,pl->piece);
|
||||
WRITE_BOARD(y,x,pl->piece);
|
||||
data++;
|
||||
}
|
||||
}
|
||||
|
@ -60,7 +61,22 @@ void ck_erasepiece(sprite *pl) {
|
|||
int x = pl->x + (int) data->offset_x;
|
||||
int y = pl->y + (int) data->offset_y;
|
||||
*/
|
||||
WRITE_BOARD(x,y,EMPTY);
|
||||
WRITE_BOARD(y,x,EMPTY);
|
||||
data++;
|
||||
}
|
||||
}
|
||||
|
||||
// draw a piece on the check board, marking it with high bit set
|
||||
void ck_markpiece(sprite *pl) {
|
||||
tile_offset *data = get_piece_offsets(pl->piece, pl->angle);
|
||||
for(byte t=0; t<4; t++) {
|
||||
int x = pl->x; byte x1 = data->offset_x; x+= (int) x1;
|
||||
int y = pl->y; byte y1 = data->offset_y; y+= (int) y1;
|
||||
/*
|
||||
int x = pl->x + (int) data->offset_x;
|
||||
int y = pl->y + (int) data->offset_y;
|
||||
*/
|
||||
WRITE_BOARD(y,x,MARKED);
|
||||
data++;
|
||||
}
|
||||
}
|
||||
|
@ -77,7 +93,7 @@ int collides(sprite *pl) {
|
|||
if(x<0) return 1; // does it collide with left border?
|
||||
if(x>=BCOLS) return 1; // does it collide with right border?
|
||||
if(y>=BROWS) return 1; // does it collide with bottom?
|
||||
if(READ_BOARD(x,y) != EMPTY) return 1; // does it collide with something?
|
||||
if(READ_BOARD(y,x) != EMPTY) return 1; // does it collide with something?
|
||||
data++;
|
||||
}
|
||||
return 0;
|
||||
|
@ -86,7 +102,7 @@ int collides(sprite *pl) {
|
|||
// returns 1 if the line is all filled
|
||||
byte is_line_filled(byte line) {
|
||||
for(byte t=0;t<BCOLS;t++) {
|
||||
if(READ_BOARD(t,line)==EMPTY) return 0;
|
||||
if(READ_BOARD(line,t)==EMPTY) return 0;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
@ -94,7 +110,7 @@ byte is_line_filled(byte line) {
|
|||
// fills the specified line with an empty character
|
||||
void ck_erase_line(byte line) {
|
||||
for(byte t=0; t<BCOLS; t++) {
|
||||
WRITE_BOARD(t,line,EMPTY);
|
||||
WRITE_BOARD(line,t,EMPTY);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -102,7 +118,7 @@ void ck_erase_line(byte line) {
|
|||
void ck_scroll_down(byte endline) {
|
||||
for(byte line=endline;line>0;line--) {
|
||||
for(byte x=0;x<BCOLS;x++) {
|
||||
WRITE_BOARD(x,line,READ_BOARD(x,line-1));
|
||||
WRITE_BOARD(line,x,READ_BOARD(line-1,x));
|
||||
}
|
||||
}
|
||||
// clears the top line
|
|
@ -37,8 +37,8 @@
|
|||
void draw_tile(byte x, byte y, byte ch, byte col) {
|
||||
byte *source = &FONTS[(word)ch*8];
|
||||
word addr = x*8 + y*256;
|
||||
tms_set_vram_write_addr(SCREEN2_PATTERN_TABLE + addr); for(byte i=0;i<8;i++) { TMS_WRITE_DATA_PORT(source[i]); NOP; /*NOP;*/ /*NOP; NOP;*/ /*NOP; NOP; NOP; NOP;*/ }
|
||||
tms_set_vram_write_addr(SCREEN2_COLOR_TABLE + addr); for(byte i=0;i<8;i++) { TMS_WRITE_DATA_PORT(col); NOP; /*NOP;*/ /*NOP; NOP;*/ /*NOP; NOP; NOP; NOP;*/ }
|
||||
tms_set_vram_write_addr(TMS_PATTERN_TABLE + addr); for(byte i=0;i<8;i++) { TMS_WRITE_DATA_PORT(source[i]); NOP; /*NOP;*/ /*NOP; NOP;*/ /*NOP; NOP; NOP; NOP;*/ }
|
||||
tms_set_vram_write_addr(TMS_COLOR_TABLE + addr); for(byte i=0;i<8;i++) { TMS_WRITE_DATA_PORT(col); NOP; /*NOP;*/ /*NOP; NOP;*/ /*NOP; NOP; NOP; NOP;*/ }
|
||||
}
|
||||
|
||||
void draw_string(byte x, byte y, byte *s, byte color) {
|
|
@ -195,6 +195,33 @@ void gr_erasepiece(sprite *p) {
|
|||
}
|
||||
}
|
||||
|
||||
// erase piece from the screen
|
||||
void gr_erasepiece_unmarked(sprite *p) {
|
||||
tile_offset *data = get_piece_offsets(p->piece, p->angle);
|
||||
int px = p->x;
|
||||
int py = p->y;
|
||||
|
||||
int zx = px;
|
||||
int zy = py;
|
||||
|
||||
px += STARTBOARD_X;
|
||||
py += STARTBOARD_Y;
|
||||
|
||||
for(byte t=0; t<4; t++) {
|
||||
int x = px; byte x1 = data->offset_x; x+= (int) x1;
|
||||
int y = py; byte y1 = data->offset_y; y+= (int) y1;
|
||||
|
||||
int cx = p->x; cx += (int) x1;
|
||||
int cy = p->y; cy += (int) y1;
|
||||
|
||||
data++;
|
||||
|
||||
if(READ_BOARD(cy,cx) != MARKED) {
|
||||
draw_tile((byte)x,(byte)y,EMPTY_GR_CHAR,EMPTY_GR_COLOR);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// draw a piece on the screen
|
||||
void gr_drawpiece(sprite *p) {
|
||||
tile_offset *data = get_piece_offsets(p->piece, p->angle);
|
||||
|
@ -237,7 +264,7 @@ void gr_update_board() {
|
|||
byte tile,ch,col;
|
||||
for(byte line=0;line<BROWS;line++) {
|
||||
for(byte column=0;column<BCOLS;column++) {
|
||||
tile = READ_BOARD(column,line);
|
||||
tile = READ_BOARD(line,column);
|
||||
ch = piece_chars[tile];
|
||||
col = piece_colors[tile];
|
||||
draw_tile(STARTBOARD_X+column, STARTBOARD_Y+line, ch, col);
|
|
@ -0,0 +1,2 @@
|
|||
@rem === BUILD TETRIS ===
|
||||
call ..\..\tools\build tetris
|
|
@ -1,9 +1,3 @@
|
|||
// TODO-KICKC: NPE when -t VIC20_8K is missing
|
||||
// TODO-KICKC: NPE when array initializer contains unesisting macro
|
||||
// TODO-KICKC: #include "keyboard.h" switches to c64 ?
|
||||
// TODO-KICKC: conflict parameter if prototype has different parameter names
|
||||
// TODO-KICKC: missing fragment: int x = pl->x + data[t].offset_x; oppure int x = pl->x + d->offset_x;
|
||||
|
||||
// TODO: solve division by counter_factor
|
||||
// TODO: interrupt and wait_interrupt()
|
||||
|
||||
|
@ -25,13 +19,7 @@
|
|||
|
||||
// TODO solve division by counter_factor
|
||||
|
||||
#include "../lib/utils.h"
|
||||
#include "../lib/apple1.h"
|
||||
#include "../lib/tms9918.h"
|
||||
#include "../lib/font8x8.h"
|
||||
#include "../lib/tms_screen1.h"
|
||||
#include "../lib/tms_screen2.h"
|
||||
#include "../lib/interrupt.h"
|
||||
#include <tms9918.h>
|
||||
|
||||
#include "draw.h"
|
||||
#include "pieces.h"
|
||||
|
@ -78,8 +66,8 @@ word drop_counter_max; // maximum value of the counter
|
|||
|
||||
unsigned long score; // player's score
|
||||
unsigned int level; // level
|
||||
unsigned int lines_remaining; // lines to complete the level
|
||||
unsigned int total_lines; // total number of lines
|
||||
int lines_remaining; // lines to complete the level
|
||||
|
||||
// game files
|
||||
#include "pieces.h"
|
||||
|
@ -164,8 +152,14 @@ void handle_player_input() {
|
|||
if(collides(&new_pos)) {
|
||||
break;
|
||||
}
|
||||
gr_erasepiece(&player);
|
||||
gr_drawpiece(&new_pos);
|
||||
// gr_erasepiece(&player);
|
||||
// gr_drawpiece(&new_pos);
|
||||
|
||||
// flicker-free version
|
||||
ck_markpiece(&new_pos);
|
||||
gr_erasepiece_unmarked(&player);
|
||||
gr_drawpiece(&new_pos);
|
||||
|
||||
ck_drawpiece(&new_pos);
|
||||
sprite_copy(&player,&new_pos);
|
||||
}
|
||||
|
@ -174,8 +168,14 @@ void handle_player_input() {
|
|||
}
|
||||
|
||||
if(allowed == 1) {
|
||||
gr_erasepiece(&player);
|
||||
gr_drawpiece(&new_pos);
|
||||
// gr_erasepiece(&player);
|
||||
// gr_drawpiece(&new_pos);
|
||||
|
||||
// flicker-free version
|
||||
ck_markpiece(&new_pos);
|
||||
gr_erasepiece_unmarked(&player);
|
||||
gr_drawpiece(&new_pos);
|
||||
|
||||
sprite_copy(&player, &new_pos);
|
||||
}
|
||||
ck_drawpiece(&player);
|
||||
|
@ -207,10 +207,16 @@ void gameLoop() {
|
|||
}
|
||||
else {
|
||||
// automatic drop does not collide, simply draw it
|
||||
gr_erasepiece(&player); // erase and draw are as close as possible
|
||||
gr_drawpiece(&new_pos);
|
||||
ck_drawpiece(&new_pos);
|
||||
sprite_copy(&player, &new_pos); // make player new pos
|
||||
// gr_erasepiece(&player); // erase and draw are as close as possible
|
||||
// gr_drawpiece(&new_pos);
|
||||
|
||||
// flicker-free version
|
||||
ck_markpiece(&new_pos);
|
||||
gr_erasepiece_unmarked(&player);
|
||||
gr_drawpiece(&new_pos);
|
||||
|
||||
sprite_copy(&player, &new_pos);
|
||||
ck_drawpiece(&player);
|
||||
}
|
||||
}
|
||||
else {
|
||||
|
@ -253,7 +259,7 @@ void check_crunched_lines() {
|
|||
score += (unsigned long) s;
|
||||
|
||||
// score += scores[num_lines_crunched] * (level+1);
|
||||
lines_remaining -= num_lines_crunched;
|
||||
lines_remaining -= (int) num_lines_crunched;
|
||||
total_lines += num_lines_crunched;
|
||||
|
||||
// advance level
|
Binary file not shown.
|
@ -1,6 +1,6 @@
|
|||
// Apple 1
|
||||
.file [name="%O", type="prg", segments="Program"]
|
||||
.segmentdef Program [segments="Code, Data"]
|
||||
.segmentdef Code [start=%P,outBin="apple1_codeseg.bin"]
|
||||
.segmentdef Data [start=$0280,min=$0280,max=$0fff,outBin="apple1_dataseg.bin"]
|
||||
.segmentdef Code [start=%P]
|
||||
.segmentdef Data [startAfter="Code"]
|
||||
|
||||
|
|
|
@ -1,10 +1,15 @@
|
|||
{
|
||||
"extension": "prg",
|
||||
"link": "apple1.ld",
|
||||
"start_address": "0x2000",
|
||||
"start_address": "0x280",
|
||||
"cpu": "MOS6502X",
|
||||
"interrupt": "hardware_all",
|
||||
"emulator": "x64sc"
|
||||
"emulator": "x64sc",
|
||||
"defines": {
|
||||
"__APPLE1__": 1,
|
||||
"APPLE1": 1,
|
||||
"__KICKC__": 1
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -0,0 +1,6 @@
|
|||
// Apple 1
|
||||
.file [name="%O", type="prg", segments="Program"]
|
||||
.segmentdef Program [segments="Code, Data"]
|
||||
.segmentdef Code [start=$4000,min=$4000,max=$7fff,outBin="apple1_codeseg.bin"]
|
||||
.segmentdef Data [start=$0280,min=$0280,max=$0fff,outBin="apple1_dataseg.bin"]
|
||||
|
|
@ -0,0 +1,17 @@
|
|||
{
|
||||
"extension": "prg",
|
||||
"link": "apple1_jukebox.ld",
|
||||
"start_address": "0x4000",
|
||||
"cpu": "MOS6502X",
|
||||
"interrupt": "hardware_all",
|
||||
"emulator": "x64sc",
|
||||
"defines": {
|
||||
"__APPLE1__": 1,
|
||||
"APPLE1": 1,
|
||||
"APPLE1_JUKEBOX": 1,
|
||||
"__KICKC__": 1
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -7,6 +7,8 @@
|
|||
"interrupt": "rom_min_vic20",
|
||||
"emulator": "xvic",
|
||||
"defines": {
|
||||
"__VIC20__": 1
|
||||
"__VIC20__": 1,
|
||||
"VIC20": 1,
|
||||
"__KICKC__": 1
|
||||
}
|
||||
}
|
|
@ -1,6 +1,5 @@
|
|||
#ifdef APPLE1
|
||||
// APPLE1
|
||||
#pragma start_address(0x4000)
|
||||
// APPLE1
|
||||
const word WOZMON = 0xFF1F; // enters monitor
|
||||
const word ECHO = 0xFFEF; // output ascii character in A (A not destroyed)
|
||||
const word PRBYTE = 0xFFDC; // print hex byte in A (A destroyed)
|
||||
|
|
|
@ -0,0 +1,181 @@
|
|||
byte SCREEN1_TABLE[8] = { 0x00, 0xc0, 0x0e, 0x80, 0x00, 0x76, 0x03, 0x25 };
|
||||
|
||||
const word SCREEN1_SIZE = (32*24);
|
||||
|
||||
// loads the font on the pattern table
|
||||
void screen1_load_font() {
|
||||
byte *source = FONT;
|
||||
|
||||
// start writing into VRAM from space character (32..127)
|
||||
tms_set_vram_write_addr(TMS_PATTERN_TABLE+(32*8));
|
||||
for(word i=768;i!=0;i--) {
|
||||
TMS_WRITE_DATA_PORT(*source++);
|
||||
}
|
||||
|
||||
// reverse font (32..127)
|
||||
source = FONT;
|
||||
tms_set_vram_write_addr(TMS_PATTERN_TABLE+((128+32)*8));
|
||||
for(word i=768;i!=0;i--) {
|
||||
TMS_WRITE_DATA_PORT(~(*source++));
|
||||
}
|
||||
}
|
||||
|
||||
void screen1_cls() {
|
||||
// fills name table with spaces (32)
|
||||
tms_set_vram_write_addr(TMS_NAME_TABLE);
|
||||
for(word i=SCREEN1_SIZE;i!=0;i--) {
|
||||
TMS_WRITE_DATA_PORT(32);
|
||||
}
|
||||
tms_cursor_x = 0;
|
||||
tms_cursor_y = 0;
|
||||
}
|
||||
|
||||
void screen1_scroll_up() {
|
||||
word source = TMS_NAME_TABLE + 1*32;
|
||||
word dest = TMS_NAME_TABLE + 0*32;
|
||||
word count = 768-32;
|
||||
for(;count!=0;source++,dest++,count--) {
|
||||
tms_set_vram_read_addr(source);
|
||||
byte c = TMS_READ_DATA_PORT;
|
||||
tms_set_vram_write_addr(dest);
|
||||
TMS_WRITE_DATA_PORT(c);
|
||||
}
|
||||
|
||||
// fill last line with spaces
|
||||
for(word i=0;i<32;i++) {
|
||||
TMS_WRITE_DATA_PORT(32); NOP; NOP; NOP; NOP;
|
||||
}
|
||||
}
|
||||
|
||||
void screen1_prepare() {
|
||||
// fill name table with spaces (32)
|
||||
screen1_cls();
|
||||
|
||||
// clear all the sprites
|
||||
tms_clear_sprites();
|
||||
|
||||
// fill pattern table with 0
|
||||
tms_set_vram_write_addr(TMS_PATTERN_TABLE);
|
||||
for(word i=256*8;i!=0;i--) {
|
||||
TMS_WRITE_DATA_PORT(0);
|
||||
}
|
||||
|
||||
// fill color table with black on white
|
||||
tms_set_vram_write_addr(TMS_COLOR_TABLE);
|
||||
for(byte i=32;i!=0;i--) {
|
||||
TMS_WRITE_DATA_PORT(FG_BG(COLOR_BLACK,COLOR_WHITE));
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef VIC20
|
||||
#define CHR_BACKSPACE 20
|
||||
#else
|
||||
#define CHR_BACKSPACE 8
|
||||
#endif
|
||||
|
||||
#define CHR_HOME 11
|
||||
#define CHR_CLS 12
|
||||
#define CHR_REVERSE_ON 15
|
||||
#define CHR_RETURN 13
|
||||
#define CHR_REVERSE_OFF 14
|
||||
#define CHR_SPACE 32
|
||||
#define CHR_REVSPACE (32+128)
|
||||
|
||||
#define HOME "\x0b"
|
||||
#define CLS "\x0c"
|
||||
#define REVERSE_OFF "\x0e"
|
||||
#define REVERSE_ON "\x0f"
|
||||
|
||||
// prints character to TMS (SCREEN 1 MODE)
|
||||
void screen1_putc(byte c) {
|
||||
if(c==CHR_CLS) {
|
||||
screen1_cls();
|
||||
}
|
||||
else if(c==CHR_HOME) {
|
||||
tms_cursor_x = 0;
|
||||
tms_cursor_y = 0;
|
||||
}
|
||||
else if(c==CHR_REVERSE_OFF) {
|
||||
// shift out as reverse off
|
||||
tms_reverse = 0;
|
||||
}
|
||||
else if(c==CHR_REVERSE_ON) {
|
||||
// shift in as reverse on
|
||||
tms_reverse = 1;
|
||||
}
|
||||
else if(c==CHR_BACKSPACE) {
|
||||
// backspace
|
||||
if(tms_cursor_x!=0) {
|
||||
tms_cursor_x--;
|
||||
}
|
||||
else {
|
||||
if(tms_cursor_y!=0) {
|
||||
tms_cursor_y--;
|
||||
tms_cursor_x = 31;
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
if(c=='\r'||c=='\n') {
|
||||
tms_cursor_x=31;
|
||||
}
|
||||
else {
|
||||
if(tms_reverse) c |= 128;
|
||||
word addr = TMS_NAME_TABLE + (word) tms_cursor_y * 32 + tms_cursor_x;
|
||||
tms_set_vram_write_addr(addr);
|
||||
TMS_WRITE_DATA_PORT(c);
|
||||
}
|
||||
if(tms_cursor_x==31) {
|
||||
tms_cursor_x=0;
|
||||
if(tms_cursor_y==23) screen1_scroll_up();
|
||||
else tms_cursor_y++;
|
||||
}
|
||||
else tms_cursor_x++;
|
||||
}
|
||||
}
|
||||
|
||||
// prints a 0 terminated string to TMS (SCREEN 1 MODE)
|
||||
void screen1_puts(byte *s) {
|
||||
byte c;
|
||||
while(c=*s++) {
|
||||
screen1_putc(c);
|
||||
}
|
||||
}
|
||||
|
||||
inline void screen1_locate(byte x, byte y) {
|
||||
tms_cursor_x = x;
|
||||
tms_cursor_y = y;
|
||||
}
|
||||
|
||||
void screen1_strinput(byte *buffer, byte max_length) {
|
||||
byte pos=0;
|
||||
screen1_putc(CHR_REVSPACE);
|
||||
screen1_putc(CHR_BACKSPACE);
|
||||
while(1) {
|
||||
byte key = apple1_getkey();
|
||||
if(key==CHR_RETURN) {
|
||||
buffer[pos] = 0;
|
||||
screen1_putc(CHR_SPACE);
|
||||
screen1_putc(CHR_BACKSPACE);
|
||||
return;
|
||||
}
|
||||
else if(key==CHR_BACKSPACE) {
|
||||
if(pos!=0) {
|
||||
pos--;
|
||||
screen1_putc(CHR_BACKSPACE);
|
||||
screen1_putc(CHR_REVSPACE);
|
||||
screen1_putc(CHR_SPACE);
|
||||
screen1_putc(CHR_BACKSPACE);
|
||||
screen1_putc(CHR_BACKSPACE);
|
||||
}
|
||||
}
|
||||
else if(key>=32 && key<=128) {
|
||||
if(pos < max_length) {
|
||||
buffer[pos++] = key;
|
||||
screen1_putc(key);
|
||||
screen1_putc(CHR_REVSPACE);
|
||||
screen1_putc(CHR_BACKSPACE);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,57 +1,28 @@
|
|||
byte SCREEN2_TABLE[8] = {
|
||||
0x02, 0xc0, 0x0e, 0xff, 0x03, 0x76, 0x03, 0x25
|
||||
};
|
||||
byte SCREEN2_TABLE[8] = { 0x02, 0xc0, 0x0e, 0xff, 0x03, 0x76, 0x03, 0x25 };
|
||||
|
||||
// SCREEN 2 VALUES
|
||||
|
||||
// pattern table: $0000-$17FF (256*8*3)
|
||||
// sprite patterns: $1800-$19FF
|
||||
// color table: $2000-$27FF (256*8*3)
|
||||
// name table: $3800-$3AFF (32*24 = 256*3 = 768)
|
||||
// sprite attributes: $3B00-$3BFF
|
||||
// unused $3C00-$3FFF
|
||||
//
|
||||
|
||||
const word SCREEN2_PATTERN_TABLE = 0x0000;
|
||||
const word SCREEN2_NAME_TABLE = 0x3800;
|
||||
const word SCREEN2_COLOR_TABLE = 0x2000;
|
||||
const word SCREEN2_SPRITE_PATTERNS = 0x1800;
|
||||
const word SCREEN2_SPRITE_ATTRS = 0x3b00;
|
||||
const word SCREEN2_SIZE = (32*24);
|
||||
const word SCREEN2_SIZE = (32*24);
|
||||
|
||||
// prepare the screen 2 to be used as a bitmap
|
||||
void screen2_init_bitmap(byte color) {
|
||||
// erase the first sprite pattern
|
||||
tms_set_vram_write_addr(SCREEN2_SPRITE_PATTERNS); // start writing in the sprite patterns
|
||||
for(byte i=0;i<8;i++) {
|
||||
TMS_WRITE_DATA_PORT(0); NOP;
|
||||
}
|
||||
|
||||
// set all sprite coordinates to 0
|
||||
tms_set_vram_write_addr(SCREEN2_SPRITE_ATTRS); // start writing in the sprite attribute
|
||||
for(byte i=0;i<32;i++) {
|
||||
TMS_WRITE_DATA_PORT(0); NOP; // y coordinate
|
||||
TMS_WRITE_DATA_PORT(0); NOP; // x coordinate
|
||||
TMS_WRITE_DATA_PORT(0); NOP; // name
|
||||
TMS_WRITE_DATA_PORT(i); NOP; // color
|
||||
}
|
||||
// erases all the sprites
|
||||
tms_clear_sprites();
|
||||
|
||||
// fill pattern table with 0 (clear screen)
|
||||
tms_set_vram_write_addr(SCREEN2_PATTERN_TABLE);
|
||||
tms_set_vram_write_addr(TMS_PATTERN_TABLE);
|
||||
for(word i=768*8;i!=0;i--) {
|
||||
TMS_WRITE_DATA_PORT(0);
|
||||
NOP;
|
||||
}
|
||||
|
||||
// fill color table with black on white
|
||||
tms_set_vram_write_addr(SCREEN2_COLOR_TABLE);
|
||||
tms_set_vram_write_addr(TMS_COLOR_TABLE);
|
||||
for(word i=768*8;i!=0;i--) {
|
||||
TMS_WRITE_DATA_PORT(color);
|
||||
NOP;
|
||||
}
|
||||
|
||||
// fills name table x3 with increasing numbers
|
||||
tms_set_vram_write_addr(SCREEN2_NAME_TABLE);
|
||||
tms_set_vram_write_addr(TMS_NAME_TABLE);
|
||||
for(word i=0;i<SCREEN2_SIZE;i++) {
|
||||
TMS_WRITE_DATA_PORT(i & 0xFF);
|
||||
NOP;
|
||||
|
@ -61,11 +32,11 @@ void screen2_init_bitmap(byte color) {
|
|||
void screen2_putc(byte ch, byte x, byte y, byte col) {
|
||||
byte *source = &FONT[(word)(ch-32)*8];
|
||||
word addr = x*8 + y*256;
|
||||
tms_set_vram_write_addr(SCREEN2_PATTERN_TABLE + addr); for(byte i=0;i<8;i++) TMS_WRITE_DATA_PORT(source[i]);
|
||||
tms_set_vram_write_addr(SCREEN2_COLOR_TABLE + addr); for(byte i=0;i<8;i++) TMS_WRITE_DATA_PORT(col);
|
||||
tms_set_vram_write_addr(TMS_PATTERN_TABLE + addr); for(byte i=0;i<8;i++) TMS_WRITE_DATA_PORT(source[i]);
|
||||
tms_set_vram_write_addr(TMS_COLOR_TABLE + addr); for(byte i=0;i<8;i++) TMS_WRITE_DATA_PORT(col);
|
||||
}
|
||||
|
||||
void screen2_puts(byte x, byte y, byte col, char *s) {
|
||||
void screen2_puts(char *s, byte x, byte y, byte col) {
|
||||
byte c;
|
||||
while(c=*s++) {
|
||||
screen2_putc(c, x++, y, col);
|
||||
|
@ -76,16 +47,16 @@ void screen2_puts(byte x, byte y, byte col, char *s) {
|
|||
#define PLOT_MODE_SET 1
|
||||
#define PLOT_MODE_INVERT 2
|
||||
|
||||
byte SCREEN2_PLOT_MODE = PLOT_MODE_SET;
|
||||
byte screen2_plot_mode = PLOT_MODE_SET;
|
||||
|
||||
void screen2_plot(byte x, byte y) {
|
||||
byte pow2_table_reversed[8] = { 128,64,32,16,8,4,2,1 };
|
||||
word paddr = SCREEN2_PATTERN_TABLE + (word)(x & 0b11111000) + (word)(y & 0b11111000)*32 + y%8;
|
||||
word paddr = TMS_PATTERN_TABLE + (word)(x & 0b11111000) + (word)(y & 0b11111000)*32 + y%8;
|
||||
tms_set_vram_read_addr(paddr);
|
||||
byte data = TMS_READ_DATA_PORT;
|
||||
byte mask = pow2_table_reversed[x%8];
|
||||
tms_set_vram_write_addr(paddr);
|
||||
switch(SCREEN2_PLOT_MODE) {
|
||||
switch(screen2_plot_mode) {
|
||||
case PLOT_MODE_RESET:
|
||||
data &= ~mask;
|
||||
break;
|
||||
|
@ -105,7 +76,7 @@ signed int vti_abs(signed int x) {
|
|||
}
|
||||
|
||||
// http://members.chello.at/~easyfilter/bresenham.html
|
||||
void vti_line(byte _x0, byte _y0, byte _x1, byte _y1) {
|
||||
void screen2_line(byte _x0, byte _y0, byte _x1, byte _y1) {
|
||||
|
||||
signed int x0 = (signed int) _x0;
|
||||
signed int x1 = (signed int) _x1;
|
|
@ -0,0 +1,17 @@
|
|||
// clears all the sprites
|
||||
void tms_clear_sprites() {
|
||||
// fills first sprite pattern with 0
|
||||
tms_set_vram_write_addr(TMS_SPRITE_PATTERNS);
|
||||
for(byte i=0;i<8;i++) {
|
||||
TMS_WRITE_DATA_PORT(0);
|
||||
}
|
||||
|
||||
// set sprite coordinates to (0,0) and set pattern name 0
|
||||
tms_set_vram_write_addr(TMS_SPRITE_ATTRS);
|
||||
for(byte i=0;i<32;i++) {
|
||||
TMS_WRITE_DATA_PORT((6+i)*8); NOP; NOP; NOP; NOP; // y coordinate
|
||||
TMS_WRITE_DATA_PORT((6+i)*8); NOP; NOP; NOP; NOP; // x coordinate
|
||||
TMS_WRITE_DATA_PORT(0); NOP; NOP; NOP; NOP; // name
|
||||
TMS_WRITE_DATA_PORT(i); NOP; NOP; NOP; NOP; // color
|
||||
}
|
||||
}
|
|
@ -1,5 +1,19 @@
|
|||
// TODO a bitmapped text writing routine (double size ecc)
|
||||
// TODO console like text output in screen 2
|
||||
// TODO more fonts (C64 and PET/VIC20)
|
||||
// TODO how to switch fonts?
|
||||
// TODO do fonts need to start from 32 or 0?
|
||||
// TODO sprite routines
|
||||
// TODO test the interrupt routines
|
||||
// TODO finalize hexdump.js and update README.md
|
||||
// TODO allow redefinition of I/O ports
|
||||
// TODO wait_end_of_frame()
|
||||
// TODO screen1() and screen2() helpers
|
||||
|
||||
#pragma encoding(ascii) // encode strings in plain ascii
|
||||
|
||||
#include "utils.h"
|
||||
|
||||
#ifdef APPLE1
|
||||
const byte *VDP_DATA = 0xCC00; // TMS9918 data port (VRAM)
|
||||
const byte *VDP_REG = 0xCC01; // TMS9918 register port (write) or status (read)
|
||||
|
@ -47,6 +61,22 @@ const byte COLOR_MAGENTA = 0xD;
|
|||
const byte COLOR_GREY = 0xE;
|
||||
const byte COLOR_WHITE = 0xF;
|
||||
|
||||
// The library has a fixed VRAM memory layout valid for SCREEN 1 and 2
|
||||
//
|
||||
// pattern table: $0000-$17FF (256*8*3)
|
||||
// sprite patterns: $1800-$19FF
|
||||
// color table: $2000-$27FF (256*8*3)
|
||||
// name table: $3800-$3AFF (32*24 = 256*3 = 768)
|
||||
// sprite attributes: $3B00-$3BFF
|
||||
// unused $3C00-$3FFF
|
||||
//
|
||||
|
||||
const word TMS_NAME_TABLE = 0x3800;
|
||||
const word TMS_COLOR_TABLE = 0x2000;
|
||||
const word TMS_PATTERN_TABLE = 0x0000;
|
||||
const word TMS_SPRITE_ATTRS = 0x3b00;
|
||||
const word TMS_SPRITE_PATTERNS = 0x1800;
|
||||
|
||||
// macro for combining foreground and background into a single byte value
|
||||
#define FG_BG(f,b) (((f)<<4)|(b))
|
||||
|
||||
|
@ -59,8 +89,16 @@ const byte COLOR_WHITE = 0xF;
|
|||
// read/write to TMS9918 macros
|
||||
#define TMS_WRITE_CTRL_PORT(a) (*VDP_REG=(byte)(a))
|
||||
#define TMS_WRITE_DATA_PORT(a) (*VDP_DATA=(byte)(a))
|
||||
#define TMS_READ_CTRL_PORT (*VDP_REG);
|
||||
#define TMS_READ_DATA_PORT (*VDP_DATA);
|
||||
#define TMS_READ_CTRL_PORT (*VDP_REG)
|
||||
#define TMS_READ_DATA_PORT (*VDP_DATA)
|
||||
|
||||
// buffer containing the last register values, because TMS registers are write only
|
||||
byte tms_regs_latch[8];
|
||||
|
||||
// cursor coordinates for the console functions
|
||||
byte tms_cursor_x;
|
||||
byte tms_cursor_y;
|
||||
byte tms_reverse;
|
||||
|
||||
// sets the VRAM address on the TMS9918 for a write operation
|
||||
void tms_set_vram_write_addr(word addr) {
|
||||
|
@ -74,9 +112,6 @@ void tms_set_vram_read_addr(word addr) {
|
|||
TMS_WRITE_CTRL_PORT((HIBYTE(addr) & HIADDRESS_MASK)|READ_FROM_VRAM);
|
||||
}
|
||||
|
||||
// buffer containing the last register values, because TMS registers are write only
|
||||
byte tms_regs_latch[8];
|
||||
|
||||
// writes a value to a TMS9918 register (0-7)
|
||||
void tms_write_reg(byte regnum, byte val) {
|
||||
TMS_WRITE_CTRL_PORT(val);
|
||||
|
@ -122,3 +157,14 @@ void tms_set_external_video(byte val) {
|
|||
if(val) regvalue |= REG0_EXTVID_MASK;
|
||||
tms_write_reg(0, regvalue);
|
||||
}
|
||||
|
||||
inline void tms_wait_end_of_frame() {
|
||||
while(!FRAME_BIT(TMS_READ_CTRL_PORT));
|
||||
}
|
||||
|
||||
#include "apple1.h"
|
||||
#include "font8x8.h"
|
||||
#include "sprites.h"
|
||||
#include "screen1.h"
|
||||
#include "screen2.h"
|
||||
#include "interrupt.h"
|
||||
|
|
|
@ -1,86 +0,0 @@
|
|||
byte SCREEN1_TABLE[8] = {
|
||||
0x00, 0xc0, 0x05, 0x80, 0x01, 0x20, 0x00, 0x25
|
||||
};
|
||||
|
||||
// SCREEN 1 VALUES
|
||||
|
||||
// sprite patterns: $0000
|
||||
// pattern table: $0800 (256*8)
|
||||
// sprite attributes: $1000
|
||||
// unused: $1080
|
||||
// name table: $1400 (32*24)
|
||||
// unused: $1800
|
||||
// color table: $2000 (32)
|
||||
// unused $2020-$3FFF
|
||||
|
||||
const word SCREEN1_PATTERN_TABLE = 0x0800;
|
||||
const word SCREEN1_NAME_TABLE = 0x1400;
|
||||
const word SCREEN1_COLOR_TABLE = 0x2000;
|
||||
const word SCREEN1_SPRITE_PATTERNS = 0x0000;
|
||||
const word SCREEN1_SPRITE_ATTRS = 0x1000;
|
||||
const word SCREEN1_SIZE = (32*24);
|
||||
|
||||
// loads the font on the pattern table
|
||||
void screen1_load_font() {
|
||||
|
||||
byte *source = FONT;
|
||||
|
||||
// start writing into VRAM from space character (32..127)
|
||||
tms_set_vram_write_addr(SCREEN1_PATTERN_TABLE+(32*8));
|
||||
for(word i=768;i!=0;i--) {
|
||||
TMS_WRITE_DATA_PORT(*source++);
|
||||
}
|
||||
|
||||
// reverse font (32..127)
|
||||
source = FONT;
|
||||
tms_set_vram_write_addr(SCREEN1_PATTERN_TABLE+((128+32)*8));
|
||||
for(word i=768;i!=0;i--) {
|
||||
TMS_WRITE_DATA_PORT(~(*source++));
|
||||
}
|
||||
}
|
||||
|
||||
// holds the cursor location for the putchar routine
|
||||
word screen1_cursor;
|
||||
|
||||
// prints character to TMS (SCREEN 1 MODE)
|
||||
void screen1_putc(byte c) {
|
||||
tms_set_vram_write_addr(screen1_cursor++);
|
||||
TMS_WRITE_DATA_PORT(c);
|
||||
}
|
||||
|
||||
// prints a 0 terminated string to TMS (SCREEN 1 MODE)
|
||||
void screen1_puts(byte *s) {
|
||||
byte c;
|
||||
while(c=*s++) {
|
||||
screen1_putc(c);
|
||||
}
|
||||
}
|
||||
|
||||
void screen1_home() {
|
||||
screen1_cursor = SCREEN1_NAME_TABLE;
|
||||
}
|
||||
|
||||
void screen1_locate(byte x, byte y) {
|
||||
screen1_cursor = SCREEN1_NAME_TABLE + ((word)y)*32 + x;
|
||||
}
|
||||
|
||||
void screen1_prepare() {
|
||||
// fills name table with spaces (32)
|
||||
tms_set_vram_write_addr(SCREEN1_NAME_TABLE);
|
||||
for(word i=SCREEN1_SIZE;i!=0;i--) {
|
||||
TMS_WRITE_DATA_PORT(32);
|
||||
}
|
||||
|
||||
// fill pattern table with 0
|
||||
tms_set_vram_write_addr(SCREEN1_PATTERN_TABLE);
|
||||
for(word i=256*8;i!=0;i--) {
|
||||
TMS_WRITE_DATA_PORT(0);
|
||||
}
|
||||
|
||||
// fill color table with black on white
|
||||
tms_set_vram_write_addr(SCREEN1_COLOR_TABLE);
|
||||
for(byte i=32;i!=0;i--) {
|
||||
TMS_WRITE_DATA_PORT(FG_BG(COLOR_BLACK,COLOR_WHITE));
|
||||
}
|
||||
}
|
||||
|
|
@ -5,3 +5,10 @@
|
|||
#define LOBYTE(c) (<(c))
|
||||
|
||||
#define NOP asm { nop }
|
||||
|
||||
#ifndef __KICKC__
|
||||
// KickC defaults these, while other C compilers do not
|
||||
// this makes syntax highlight work in common C editors
|
||||
typedef unsigned char byte;
|
||||
typedef unsigned int word;
|
||||
#endif
|
||||
|
|
|
@ -1,2 +0,0 @@
|
|||
@rem === BUILD TETRIS ===
|
||||
call ..\tools\build tetris
|
|
@ -1,16 +1,17 @@
|
|||
@rem === BUILD SCRIPT ===
|
||||
|
||||
@SET TARGET=%1
|
||||
@SET TMS9918=..\..
|
||||
|
||||
@echo ======================== VIC20 ===================================================
|
||||
call kickc -targetdir ..\kickc\ -t VIC20_8K -D=VIC20 %TARGET%.c -o out\%TARGET%_vic20.prg -e
|
||||
call kickc -includedir %TMS9918%\lib -targetdir %TMS9918%\kickc\ -t VIC20_8K %TARGET%.c -o out\%TARGET%_vic20.prg -e
|
||||
copy out\%TARGET%.prg out\%TARGET%_vic20.prg
|
||||
|
||||
@echo ======================== APPLE 1 =================================================
|
||||
call kickc -targetdir ..\kickc\ -t apple1 -D=APPLE1 %TARGET%.c -o out\%TARGET%_apple1.prg -e
|
||||
call kickc -includedir %TMS9918%\lib -targetdir %TMS9918%\kickc\ -t apple1_jukebox %TARGET%.c -o out\%TARGET%_apple1.prg -e
|
||||
|
||||
@rem builds the apple1 eprom file
|
||||
call node ..\tools\mkeprom out out\%TARGET%_apple1.bin
|
||||
call node %TMS9918%\tools\mkeprom out out\%TARGET%_apple1.bin
|
||||
|
||||
@rem clean up files
|
||||
@del out\apple1_codeseg.bin
|
||||
|
|
Loading…
Reference in New Issue