├── Makefile ├── inc ├── memory.inc ├── gbhw.inc └── ibmpc1.inc └── src ├── memory.asm └── hello-world.asm /Makefile: -------------------------------------------------------------------------------- 1 | ASM = rgbasm 2 | LINK = rgblink 3 | FIX = rgbfix 4 | 5 | #Change the following lines 6 | ROM_NAME = hello-world 7 | SOURCES = src/memory.asm src/hello-world.asm 8 | FIX_FLAGS = -v -p 0 9 | 10 | 11 | INCDIR = inc 12 | OBJECTS = $(SOURCES:%.asm=%.o) 13 | 14 | all: $(ROM_NAME) 15 | 16 | $(ROM_NAME): $(OBJECTS) 17 | $(LINK) -o $@.gb -n $@.sym $(OBJECTS) 18 | $(FIX) $(FIX_FLAGS) $@.gb 19 | 20 | %.o: %.asm 21 | $(ASM) -i$(INCDIR)/ -o $@ $< 22 | 23 | clean: 24 | rm $(ROM_NAME).gb $(ROM_NAME).sym $(OBJECTS) -------------------------------------------------------------------------------- /inc/memory.inc: -------------------------------------------------------------------------------- 1 | ;* 2 | ;* MEMORY.INC - Memory Manipulation Code 3 | ;* by GABY. Inspired by Carsten Sorensen & others. 4 | ;* 5 | ;* V1.0 - Original release 6 | ;* 7 | 8 | ;If all of these are already defined, don't do it again. 9 | 10 | IF !DEF(MEMORY1_ASM) 11 | MEMORY1_ASM SET 1 12 | 13 | ;*************************************************************************** 14 | ;* 15 | ;* mem_Set - "Set" a memory region 16 | ;* 17 | ;* input: 18 | ;* a - value 19 | ;* hl - pMem 20 | ;* bc - bytecount 21 | ;* 22 | ;*************************************************************************** 23 | IMPORT mem_Set 24 | 25 | ;*************************************************************************** 26 | ;* 27 | ;* mem_Copy - "Copy" a memory region 28 | ;* 29 | ;* input: 30 | ;* hl - pSource 31 | ;* de - pDest 32 | ;* bc - bytecount 33 | ;* 34 | ;*************************************************************************** 35 | IMPORT mem_Copy 36 | 37 | ;*************************************************************************** 38 | ;* 39 | ;* mem_Copy - "Copy" a monochrome font from ROM to RAM 40 | ;* 41 | ;* input: 42 | ;* hl - pSource 43 | ;* de - pDest 44 | ;* bc - bytecount of Source 45 | ;* 46 | ;*************************************************************************** 47 | IMPORT mem_CopyMono 48 | 49 | ;*************************************************************************** 50 | ;* 51 | ;* mem_SetVRAM - "Set" a memory region in VRAM 52 | ;* 53 | ;* input: 54 | ;* a - value 55 | ;* hl - pMem 56 | ;* bc - bytecount 57 | ;* 58 | ;*************************************************************************** 59 | IMPORT mem_SetVRAM 60 | 61 | ;*************************************************************************** 62 | ;* 63 | ;* mem_CopyVRAM - "Copy" a memory region to or from VRAM 64 | ;* 65 | ;* input: 66 | ;* hl - pSource 67 | ;* de - pDest 68 | ;* bc - bytecount 69 | ;* 70 | ;*************************************************************************** 71 | IMPORT mem_CopyVRAM 72 | 73 | ENDC ;MEMORY1_ASM -------------------------------------------------------------------------------- /src/memory.asm: -------------------------------------------------------------------------------- 1 | SECTION "Memory1 Code",HOME 2 | 3 | INCLUDE "gbhw.inc" 4 | 5 | ; Macro that pauses until VRAM available. 6 | 7 | lcd_WaitVRAM: MACRO 8 | ld a,[rSTAT] ; <---+ 9 | and STATF_BUSY ; | 10 | jr nz,@-4 ; ----+ 11 | ENDM 12 | 13 | PUSHS ; Push the current section onto assember stack. 14 | 15 | ;*************************************************************************** 16 | ;* 17 | ;* mem_Set - "Set" a memory region 18 | ;* 19 | ;* input: 20 | ;* a - value 21 | ;* hl - pMem 22 | ;* bc - bytecount 23 | ;* 24 | ;*************************************************************************** 25 | mem_Set:: 26 | inc b 27 | inc c 28 | jr .skip 29 | .loop ld [hl+],a 30 | .skip dec c 31 | jr nz,.loop 32 | dec b 33 | jr nz,.loop 34 | ret 35 | 36 | ;*************************************************************************** 37 | ;* 38 | ;* mem_Copy - "Copy" a memory region 39 | ;* 40 | ;* input: 41 | ;* hl - pSource 42 | ;* de - pDest 43 | ;* bc - bytecount 44 | ;* 45 | ;*************************************************************************** 46 | mem_Copy:: 47 | inc b 48 | inc c 49 | jr .skip 50 | .loop ld a,[hl+] 51 | ld [de],a 52 | inc de 53 | .skip dec c 54 | jr nz,.loop 55 | dec b 56 | jr nz,.loop 57 | ret 58 | 59 | ;*************************************************************************** 60 | ;* 61 | ;* mem_Copy - "Copy" a monochrome font from ROM to RAM 62 | ;* 63 | ;* input: 64 | ;* hl - pSource 65 | ;* de - pDest 66 | ;* bc - bytecount of Source 67 | ;* 68 | ;*************************************************************************** 69 | mem_CopyMono:: 70 | inc b 71 | inc c 72 | jr .skip 73 | .loop ld a,[hl+] 74 | ld [de],a 75 | inc de 76 | ld [de],a 77 | inc de 78 | .skip dec c 79 | jr nz,.loop 80 | dec b 81 | jr nz,.loop 82 | ret 83 | 84 | 85 | ;*************************************************************************** 86 | ;* 87 | ;* mem_SetVRAM - "Set" a memory region in VRAM 88 | ;* 89 | ;* input: 90 | ;* a - value 91 | ;* hl - pMem 92 | ;* bc - bytecount 93 | ;* 94 | ;*************************************************************************** 95 | mem_SetVRAM:: 96 | inc b 97 | inc c 98 | jr .skip 99 | .loop push af 100 | di 101 | lcd_WaitVRAM 102 | pop af 103 | ld [hl+],a 104 | ei 105 | .skip dec c 106 | jr nz,.loop 107 | dec b 108 | jr nz,.loop 109 | ret 110 | 111 | ;*************************************************************************** 112 | ;* 113 | ;* mem_CopyVRAM - "Copy" a memory region to or from VRAM 114 | ;* 115 | ;* input: 116 | ;* hl - pSource 117 | ;* de - pDest 118 | ;* bc - bytecount 119 | ;* 120 | ;*************************************************************************** 121 | mem_CopyVRAM:: 122 | inc b 123 | inc c 124 | jr .skip 125 | .loop di 126 | lcd_WaitVRAM 127 | ld a,[hl+] 128 | ld [de],a 129 | ei 130 | inc de 131 | .skip dec c 132 | jr nz,.loop 133 | dec b 134 | jr nz,.loop 135 | ret 136 | 137 | POPS ; Pop the current section off of assember stack. 138 | -------------------------------------------------------------------------------- /src/hello-world.asm: -------------------------------------------------------------------------------- 1 | ; Hello World 2 | ; John Harrison 3 | ; With lots o' code borrowed from all over the place 4 | ; some tutorial-like comments stolen from "hello world" by GABY 5 | 6 | ; VERSIONS 7 | ; 1.01 02/09/07 8 | ; fixed typos and clarified a few things in the comments 9 | ; 1.00 02/02/07 10 | 11 | ; Most GameBoy assemblers (and most other assembly 12 | ; language assemblers) use a semicolon to indicate 13 | ; that everything following it on a particular line 14 | ; is to be ignored and be treated purely as comments 15 | ; rather than code. 16 | 17 | ; gbhw.inc contains the 18 | ; 'Hardware Defines' for our program. This has 19 | ; address location labels for all of the GameBoy 20 | ; Hardware I/O registers. We can 'insert' this file 21 | ; into the present EXAMPLE1.ASM file by using the 22 | ; assembler INCLUDE command: 23 | 24 | INCLUDE "gbhw.inc" ; standard hardware definitions from devrs.com 25 | 26 | ; Next we want to include a file that contains a font 27 | ; macro. A macro is a portion of code or data that 28 | ; gets 'inserted' into your program. At this point, 29 | ; we are not actually inserting anything but a macro 30 | ; definition into our file. Code or data isn't physically 31 | ; inserted into a program until you invoke a macro which 32 | ; we will do later. For now, we are just making the macro 33 | ; name recognizable by our program. 34 | 35 | INCLUDE "ibmpc1.inc" ; ASCII character set from devrs.com 36 | 37 | ; Next we need to include some code for doing 38 | ; RAM copy, RAM fill, etc. 39 | 40 | INCLUDE "memory.inc" 41 | 42 | ; We are going to keep interrupts disabled for this program. 43 | ; However, it is good practice to leave the reserved memory locations for interrupts with 44 | ; executable code. It make for a nice template as well to fill in code when we use interrupts 45 | ; in the future 46 | SECTION "Vblank",HOME[$0040] 47 | reti 48 | SECTION "LCDC",HOME[$0048] 49 | reti 50 | SECTION "Timer_Overflow",HOME[$0050] 51 | reti 52 | SECTION "Serial",HOME[$0058] 53 | reti 54 | SECTION "p1thru4",HOME[$0060] 55 | reti 56 | 57 | ; Next we need to include the standard GameBoy ROM header 58 | ; information that goes at location $0100 in the ROM. (The 59 | ; $ before a number indicates that the number is a hex value.) 60 | ; 61 | ; ROM location $0100 is also the code execution starting point 62 | ; for user written programs. The standard first two commands 63 | ; are usually always a NOP (NO Operation) and then a JP (Jump) 64 | ; command. This JP command should 'jump' to the start of user 65 | ; code. It jumps over the ROM header information as well that 66 | ; is located at $104. 67 | ; 68 | ; First, we indicate that the following code & data should 69 | ; start at address $100 by using the following SECTION assembler 70 | ; command: 71 | 72 | SECTION "start",HOME[$0100] 73 | nop 74 | jp begin 75 | 76 | ; To include the standard ROM header information we 77 | ; can just use the macro ROM_HEADER. We defined this macro 78 | ; earlier when we INCLUDEd "gbhw.inc". 79 | ; 80 | ; The ROM_NOMBC just suggests to the complier that we are 81 | ; not using a Memory Bank Controller because we don't need one 82 | ; since our ROM won't be larger than 32K bytes. 83 | ; 84 | ; Next we indicate the cart ROM size and then the cart RAM size. 85 | ; We don't need any cart RAM for this program so we set this to 0K. 86 | 87 | ; **************************************************************************************** 88 | ; ROM HEADER and ASCII character set 89 | ; **************************************************************************************** 90 | ; ROM header 91 | ROM_HEADER ROM_NOMBC, ROM_SIZE_32KBYTE, RAM_SIZE_0KBYTE 92 | 93 | ; The NOP and then JP located at $100 in ROM are executed 94 | ; which causes the the following code to be executed next. 95 | 96 | ; **************************************************************************************** 97 | ; Main code Initialization: 98 | ; set the stack pointer, enable interrupts, set the palette, set the screen relative to the window 99 | ; copy the ASCII character table, clear the screen 100 | ; **************************************************************************************** 101 | begin: 102 | ; First, it's a good idea to Disable Interrupts 103 | ; using the following command. We won't be using 104 | ; interrupts in this example so we can leave them off. 105 | 106 | di 107 | 108 | ; Next, we should initialize our stack pointer. The 109 | ; stack pointer holds return addresses (among other things) 110 | ; when we use the CALL command so the stack is important to us. 111 | ; 112 | ; The CALL command is similar to executing 113 | ; a procedure in the C & PASCAL languages. 114 | ; 115 | ; We shall set the stack to the top of high ram + 1. 116 | ; 117 | ld sp, $ffff ; set the stack pointer to highest mem location we can use + 1 118 | 119 | ; Here we are going to setup the background tile 120 | ; palette so that the tiles appear in the proper 121 | ; shades of grey. 122 | ; 123 | ; To do this, we need to write the value %11100100 to the 124 | ; memory location $ff47. In the 'gbhw.inc' file we 125 | ; INCLUDEd there is a definition that rBGP=$ff47 so 126 | ; we can use the rGBP label to do this 127 | ; 128 | ; The first instruction loads the value %11100100 into the 129 | ; 8-bit register A and the second instruction writes 130 | ; the value of register A to memory location $ff47. 131 | 132 | init: 133 | ld a, %11100100 ; Window palette colors, from darkest to lightest 134 | ld [rBGP], a ; CLEAR THE SCREEN 135 | 136 | ; Here we are setting the X/Y scroll registers 137 | ; for the tile background to 0 so that we can see 138 | ; the upper left corner of the tile background. 139 | ; 140 | ; Think of the tile background RAM (which we usually call 141 | ; the tile map RAM) as a large canvas. We draw on this 142 | ; 'canvas' using 'paints' which consist of tiles and 143 | ; sprites (we will cover sprites in another example.) 144 | ; 145 | ; We set the scroll registers to 0 so that we can 146 | ; view the upper left corner of the 'canvas'. 147 | 148 | ld a,0 ; SET SCREEN TO TO UPPER RIGHT HAND CORNER 149 | ld [rSCX], a 150 | ld [rSCY], a 151 | 152 | ; Next we shall turn the Liquid Crystal Display (LCD) 153 | ; off so that we can copy data to video RAM. We can 154 | ; copy data to video RAM while the LCD is on but it 155 | ; is a little more difficult to do and takes a little 156 | ; bit longer. Video RAM is not always available for 157 | ; reading or writing when the LCD is on so it is 158 | ; easier to write to video RAM with the screen off. 159 | ; 160 | ; To turn off the LCD we do a CALL to the StopLCD 161 | ; subroutine at the bottom of this file. The reason 162 | ; we use a subroutine is because it takes more than 163 | ; just writing to a memory location to turn the 164 | ; LCD display off. The LCD display should be in 165 | ; Vertical Blank (or VBlank) before we turn the display 166 | ; off. Weird effects can occur if you don't wait until 167 | ; VBlank to do this and code written for the Super 168 | ; GameBoy won't work sometimes you try to turn off 169 | ; the LCD outside of VBlank. 170 | 171 | call StopLCD ; YOU CAN NOT LOAD $8000 WITH LCD ON 172 | 173 | ; In order to display any text on our 'canvas' 174 | ; we must have tiles which resemble letters that 175 | ; we can use for 'painting'. In order to setup 176 | ; tile memory we will need to copy our font data 177 | ; to tile memory using the routine 'mem_CopyMono' 178 | ; found in the 'memory.asm' library we INCLUDEd 179 | ; earlier. 180 | ; 181 | ; For the purposes of the 'mem_CopyMono' routine, 182 | ; the 16-bit HL register is used as a source memory 183 | ; location, DE is used as a destination memory location, 184 | ; and BC is used as a data length indicator. 185 | 186 | ld hl, TileData 187 | ld de, _VRAM ; $8000 188 | ld bc, 8*256 ; the ASCII character set: 256 characters, each with 8 bytes of display data 189 | call mem_CopyMono ; load tile data 190 | 191 | ; We turn the LCD on. Parameters are explained in the I/O registers section of The GameBoy reference under I/O register LCDC 192 | ld a, LCDCF_ON|LCDCF_BG8000|LCDCF_BG9800|LCDCF_BGON|LCDCF_OBJ16|LCDCF_OBJOFF 193 | ld [rLCDC], a 194 | 195 | ; Next, we clear our 'canvas' to all white by 196 | ; 'setting' the canvas to ascii character $20 197 | ; which is a white space. 198 | 199 | ld a, 32 ; ASCII FOR BLANK SPACE 200 | ld hl, _SCRN0 201 | ld bc, SCRN_VX_B * SCRN_VY_B 202 | call mem_SetVRAM 203 | 204 | 205 | ; **************************************************************************************** 206 | ; Main code: 207 | ; Print a character string in the middle of the screen 208 | ; **************************************************************************************** 209 | ; Now we need to paint the message 210 | ; " Hello World !" onto our 'canvas'. We do this with 211 | ; one final memory copy routine call. 212 | 213 | ld hl,Title 214 | ld de, _SCRN0+3+(SCRN_VY_B*7) ; 215 | ld bc, TitleEnd-Title 216 | call mem_CopyVRAM 217 | 218 | ; **************************************************************************************** 219 | ; Prologue 220 | ; Wait patiently 'til somebody kills you 221 | ; **************************************************************************************** 222 | ; Since we have accomplished our goal, we now have nothing 223 | ; else to do. As a result, we just Jump to a label that 224 | ; causes an infinite loop condition to occur. 225 | wait: 226 | halt 227 | nop 228 | jr wait 229 | 230 | ; **************************************************************************************** 231 | ; hard-coded data 232 | ; **************************************************************************************** 233 | Title: 234 | DB "Hello World !" 235 | TitleEnd: 236 | nop 237 | ; **************************************************************************************** 238 | ; StopLCD: 239 | ; turn off LCD if it is on 240 | ; and wait until the LCD is off 241 | ; **************************************************************************************** 242 | StopLCD: 243 | ld a,[rLCDC] 244 | rlca ; Put the high bit of LCDC into the Carry flag 245 | ret nc ; Screen is off already. Exit. 246 | 247 | ; Loop until we are in VBlank 248 | 249 | .wait: 250 | ld a,[rLY] 251 | cp 145 ; Is display on scan line 145 yet? 252 | jr nz,.wait ; no, keep waiting 253 | 254 | ; Turn off the LCD 255 | 256 | ld a,[rLCDC] 257 | res 7,a ; Reset bit 7 of LCDC 258 | ld [rLCDC],a 259 | 260 | ret 261 | 262 | ; Next, let's actually include font tile data into the ROM 263 | ; that we are building. We do this by invoking the chr_IBMPC1 264 | ; macro that was defined earlier when we INCLUDEd "ibmpc1.inc". 265 | ; 266 | ; The 1 & 8 parameters define that we want to include the 267 | ; whole IBM-PC font set and not just parts of it. 268 | ; 269 | ; Right before invoking this macro we define the label 270 | ; TileData. Whenever a label is defined with a colon 271 | ; it is given the value of the current ROM location. 272 | ; As a result, TileData now has a memory location value that 273 | ; is the same as the first byte of the font data that we are 274 | ; including. We shall use the label TileData as a "handle" or 275 | ; "reference" for locating our font data. 276 | 277 | TileData: 278 | chr_IBMPC1 1,8 ; LOAD ENTIRE CHARACTER SET -------------------------------------------------------------------------------- /inc/gbhw.inc: -------------------------------------------------------------------------------- 1 | ;* 2 | ;* GBHW.INC - Gameboy Hardware definitions for GALP 3 | ;* 4 | ;* by GABY. Inspired from work done by Carsten Sorensen & others. 5 | ;* 6 | ;* V1.0 - The original version 7 | ;* 8 | 9 | ; If all of these are already defined, don't do it again. 10 | 11 | IF !DEF(HARDWARE_INC) 12 | HARDWARE_INC SET 1 13 | 14 | rev_Check_hardware_inc: MACRO 15 | ;NOTE: REVISION NUMBER CHANGES MUST BE ADDED 16 | ;TO SECOND PARAMETER IN FOLLOWING LINE. 17 | IF \1 > 1.0 ;PUT REVISION NUMBER HERE 18 | WARN "Version \1 or later of 'gbhw.inc' is required." 19 | ENDC 20 | ENDM 21 | 22 | _HW EQU $FF00 23 | 24 | _VRAM EQU $8000 ; $8000->$A000 25 | _SCRN0 EQU $9800 ; $9800->$9BFF 26 | _SCRN1 EQU $9C00 ; $9C00->$9FFF 27 | _RAM EQU $C000 ; $C000->$E000 28 | _HRAM EQU $F800 ; $F800->$FFFE 29 | _OAMRAM EQU $FE00 ; $FE00->$FE9F 30 | _AUD3WAVERAM EQU $FF30 ; $FF30->$FF3F 31 | 32 | 33 | ; -- 34 | ; -- OAM flags 35 | ; -- 36 | 37 | OAMF_PRI EQU %10000000 ; Priority 38 | OAMF_YFLIP EQU %01000000 ; Y flip 39 | OAMF_XFLIP EQU %00100000 ; X flip 40 | OAMF_PAL0 EQU %00000000 ; Palette number; 0,1 41 | OAMF_PAL1 EQU %00010000 ; Palette number; 0,1 42 | 43 | 44 | ;*************************************************************************** 45 | ;* 46 | ;* Custom registers 47 | ;* 48 | ;*************************************************************************** 49 | 50 | ; -- 51 | ; -- P1 ($FF00) 52 | ; -- Register for reading joy pad info. (R/W) 53 | ; -- 54 | rP1 EQU $FF00 55 | 56 | P1F_5 EQU %00100000 ; P15 out port 57 | P1F_4 EQU %00010000 ; P14 out port 58 | P1F_3 EQU %00001000 ; P13 in port 59 | P1F_2 EQU %00000100 ; P12 in port 60 | P1F_1 EQU %00000010 ; P11 in port 61 | P1F_0 EQU %00000001 ; P10 in port 62 | 63 | 64 | ; -- 65 | ; -- LCDC ($FF40) 66 | ; -- LCD Control (R/W) 67 | ; -- 68 | rLCDC EQU $FF40 69 | 70 | LCDCF_OFF EQU %00000000 ; LCD Control Operation 71 | LCDCF_ON EQU %10000000 ; LCD Control Operation 72 | LCDCF_WIN9800 EQU %00000000 ; Window Tile Map Display Select 73 | LCDCF_WIN9C00 EQU %01000000 ; Window Tile Map Display Select 74 | LCDCF_WINOFF EQU %00000000 ; Window Display 75 | LCDCF_WINON EQU %00100000 ; Window Display 76 | LCDCF_BG8800 EQU %00000000 ; BG & Window Tile Data Select 77 | LCDCF_BG8000 EQU %00010000 ; BG & Window Tile Data Select 78 | LCDCF_BG9800 EQU %00000000 ; BG Tile Map Display Select 79 | LCDCF_BG9C00 EQU %00001000 ; BG Tile Map Display Select 80 | LCDCF_OBJ8 EQU %00000000 ; OBJ Construction 81 | LCDCF_OBJ16 EQU %00000100 ; OBJ Construction 82 | LCDCF_OBJOFF EQU %00000000 ; OBJ Display 83 | LCDCF_OBJON EQU %00000010 ; OBJ Display 84 | LCDCF_BGOFF EQU %00000000 ; BG Display 85 | LCDCF_BGON EQU %00000001 ; BG Display 86 | ; "Window Character Data Select" follows BG 87 | 88 | 89 | ; -- 90 | ; -- STAT ($FF41) 91 | ; -- LCDC Status (R/W) 92 | ; -- 93 | rSTAT EQU $FF41 94 | 95 | STATF_LYC EQU %01000000 ; LYCEQULY Coincidence (Selectable) 96 | STATF_MODE10 EQU %00100000 ; Mode 10 97 | STATF_MODE01 EQU %00010000 ; Mode 01 (V-Blank) 98 | STATF_MODE00 EQU %00001000 ; Mode 00 (H-Blank) 99 | STATF_LYCF EQU %00000100 ; Coincidence Flag 100 | STATF_HB EQU %00000000 ; H-Blank 101 | STATF_VB EQU %00000001 ; V-Blank 102 | STATF_OAM EQU %00000010 ; OAM-RAM is used by system 103 | STATF_LCD EQU %00000011 ; Both OAM and VRAM used by system 104 | STATF_BUSY EQU %00000010 ; When set, VRAM access is unsafe 105 | 106 | 107 | ; -- 108 | ; -- SCY ($FF42) 109 | ; -- Scroll Y (R/W) 110 | ; -- 111 | rSCY EQU $FF42 112 | 113 | 114 | ; -- 115 | ; -- SCY ($FF43) 116 | ; -- Scroll X (R/W) 117 | ; -- 118 | rSCX EQU $FF43 119 | 120 | 121 | ; -- 122 | ; -- LY ($FF44) 123 | ; -- LCDC Y-Coordinate (R) 124 | ; -- 125 | ; -- Values range from 0->153. 144->153 is the VBlank period. 126 | ; -- 127 | rLY EQU $FF44 128 | 129 | 130 | ; -- 131 | ; -- LYC ($FF45) 132 | ; -- LY Compare (R/W) 133 | ; -- 134 | ; -- When LYEQUEQULYC, STATF_LYCF will be set in STAT 135 | ; -- 136 | rLYC EQU $FF45 137 | 138 | 139 | ; -- 140 | ; -- DMA ($FF46) 141 | ; -- DMA Transfer and Start Address (W) 142 | ; -- 143 | rDMA EQU $FF46 144 | 145 | 146 | ; -- 147 | ; -- BGP ($FF47) 148 | ; -- BG Palette Data (W) 149 | ; -- 150 | ; -- Bit 7-6 - Intensity for %11 151 | ; -- Bit 5-4 - Intensity for %10 152 | ; -- Bit 3-2 - Intensity for %01 153 | ; -- Bit 1-0 - Intensity for %00 154 | ; -- 155 | rBGP EQU $FF47 156 | 157 | 158 | ; -- 159 | ; -- OBP0 ($FF48) 160 | ; -- Object Palette 0 Data (W) 161 | ; -- 162 | ; -- See BGP for info 163 | ; -- 164 | rOBP0 EQU $FF48 165 | 166 | 167 | ; -- 168 | ; -- OBP1 ($FF49) 169 | ; -- Object Palette 1 Data (W) 170 | ; -- 171 | ; -- See BGP for info 172 | ; -- 173 | rOBP1 EQU $FF49 174 | 175 | 176 | ; -- 177 | ; -- SB ($FF01) 178 | ; -- Serial Transfer Data (R/W) 179 | ; -- 180 | rSB EQU $FF01 181 | 182 | ; -- 183 | ; -- SC ($FF02) 184 | ; -- Serial I/O Control (R/W) 185 | ; -- 186 | rSC EQU $FF02 187 | 188 | ; -- 189 | ; -- DIV ($FF04) 190 | ; -- Divider register (R/W) 191 | ; -- 192 | rDIV EQU $FF04 193 | 194 | 195 | ; -- 196 | ; -- TIMA ($FF05) 197 | ; -- Timer counter (R/W) 198 | ; -- 199 | rTIMA EQU $FF05 200 | 201 | 202 | ; -- 203 | ; -- TMA ($FF06) 204 | ; -- Timer modulo (R/W) 205 | ; -- 206 | rTMA EQU $FF06 207 | 208 | 209 | ; -- 210 | ; -- TAC ($FF07) 211 | ; -- Timer control (R/W) 212 | ; -- 213 | rTAC EQU $FF07 214 | 215 | TACF_START EQU %00000100 216 | TACF_STOP EQU %00000000 217 | TACF_4KHZ EQU %00000000 218 | TACF_16KHZ EQU %00000011 219 | TACF_65KHZ EQU %00000010 220 | TACF_262KHZ EQU %00000001 221 | 222 | 223 | ; -- 224 | ; -- IF ($FF0F) 225 | ; -- Interrupt Flag (R/W) 226 | ; -- 227 | ; -- IE ($FFFF) 228 | ; -- Interrupt Enable (R/W) 229 | ; -- 230 | rIF EQU $FF0F 231 | rIE EQU $FFFF 232 | 233 | IEF_HILO EQU %00010000 ; Transition from High to Low of Pin number P10-P13 234 | IEF_SERIAL EQU %00001000 ; Serial I/O transfer end 235 | IEF_TIMER EQU %00000100 ; Timer Overflow 236 | IEF_LCDC EQU %00000010 ; LCDC (see STAT) 237 | IEF_VBLANK EQU %00000001 ; V-Blank 238 | 239 | 240 | ; -- 241 | ; -- WY ($FF4A) 242 | ; -- Window Y Position (R/W) 243 | ; -- 244 | ; -- 0 SO2 ON/OFF (Vin??) 269 | ; -- Bit 6-4 - SO2 output level (volume) (# 0-7) 270 | ; -- Bit 3 - Vin->SO1 ON/OFF (Vin??) 271 | ; -- Bit 2-0 - SO1 output level (volume) (# 0-7) 272 | ; -- 273 | rNR50 EQU $FF24 274 | rAUDVOL EQU rNR50 275 | 276 | 277 | ; -- 278 | ; -- AUDTERM/NR51 ($FF25) 279 | ; -- Selection of Sound output terminal (R/W) 280 | ; -- 281 | ; -- Bit 7 - Output sound 4 to SO2 terminal 282 | ; -- Bit 6 - Output sound 3 to SO2 terminal 283 | ; -- Bit 5 - Output sound 2 to SO2 terminal 284 | ; -- Bit 4 - Output sound 1 to SO2 terminal 285 | ; -- Bit 3 - Output sound 4 to SO1 terminal 286 | ; -- Bit 2 - Output sound 3 to SO1 terminal 287 | ; -- Bit 1 - Output sound 2 to SO1 terminal 288 | ; -- Bit 0 - Output sound 0 to SO1 terminal 289 | ; -- 290 | rNR51 EQU $FF25 291 | rAUDTERM EQU rNR51 292 | 293 | 294 | ; -- 295 | ; -- AUDENA/NR52 ($FF26) 296 | ; -- Sound on/off (R/W) 297 | ; -- 298 | ; -- Bit 7 - All sound on/off (sets all audio regs to 0!) 299 | ; -- Bit 3 - Sound 4 ON flag (doesn't work!) 300 | ; -- Bit 2 - Sound 3 ON flag (doesn't work!) 301 | ; -- Bit 1 - Sound 2 ON flag (doesn't work!) 302 | ; -- Bit 0 - Sound 1 ON flag (doesn't work!) 303 | ; -- 304 | rNR52 EQU $FF26 305 | rAUDENA EQU rNR52 306 | 307 | 308 | ;*************************************************************************** 309 | ;* 310 | ;* SoundChannel #1 registers 311 | ;* 312 | ;*************************************************************************** 313 | 314 | ; -- 315 | ; -- AUD1SWEEP/NR10 ($FF10) 316 | ; -- Sweep register (R/W) 317 | ; -- 318 | ; -- Bit 6-4 - Sweep Time 319 | ; -- Bit 3 - Sweep Increase/Decrease 320 | ; -- 0: Addition (frequency increases???) 321 | ; -- 1: Subtraction (frequency increases???) 322 | ; -- Bit 2-0 - Number of sweep shift (# 0-7) 323 | ; -- Sweep Time: (n*7.8ms) 324 | ; -- 325 | rNR10 EQU $FF10 326 | rAUD1SWEEP EQU rNR10 327 | 328 | 329 | ; -- 330 | ; -- AUD1LEN/NR11 ($FF11) 331 | ; -- Sound length/Wave pattern duty (R/W) 332 | ; -- 333 | ; -- Bit 7-6 - Wave Pattern Duty (00:12.5% 01:25% 10:50% 11:75%) 334 | ; -- Bit 5-0 - Sound length data (# 0-63) 335 | ; -- 336 | rNR11 EQU $FF11 337 | rAUD1LEN EQU rNR11 338 | 339 | 340 | ; -- 341 | ; -- AUD1ENV/NR12 ($FF12) 342 | ; -- Envelope (R/W) 343 | ; -- 344 | ; -- Bit 7-4 - Initial value of envelope 345 | ; -- Bit 3 - Envelope UP/DOWN 346 | ; -- 0: Decrease 347 | ; -- 1: Range of increase 348 | ; -- Bit 2-0 - Number of envelope sweep (# 0-7) 349 | ; -- 350 | rNR12 EQU $FF12 351 | rAUD1ENV EQU rNR12 352 | 353 | 354 | ; -- 355 | ; -- AUD1LOW/NR13 ($FF13) 356 | ; -- Frequency lo (W) 357 | ; -- 358 | rNR13 EQU $FF13 359 | rAUD1LOW EQU rNR13 360 | 361 | 362 | ; -- 363 | ; -- AUD1HIGH/NR14 ($FF14) 364 | ; -- Frequency hi (W) 365 | ; -- 366 | ; -- Bit 7 - Initial (when set, sound restarts) 367 | ; -- Bit 6 - Counter/consecutive selection 368 | ; -- Bit 2-0 - Frequency's higher 3 bits 369 | ; -- 370 | rNR14 EQU $FF14 371 | rAUD1HIGH EQU rNR14 372 | 373 | 374 | ;*************************************************************************** 375 | ;* 376 | ;* SoundChannel #2 registers 377 | ;* 378 | ;*************************************************************************** 379 | 380 | ; -- 381 | ; -- AUD2LEN/NR21 ($FF16) 382 | ; -- Sound Length; Wave Pattern Duty (R/W) 383 | ; -- 384 | ; -- see AUD1LEN for info 385 | ; -- 386 | rNR21 EQU $FF16 387 | rAUD2LEN EQU rNR21 388 | 389 | 390 | ; -- 391 | ; -- AUD2ENV/NR22 ($FF17) 392 | ; -- Envelope (R/W) 393 | ; -- 394 | ; -- see AUD1ENV for info 395 | ; -- 396 | rNR22 EQU $FF17 397 | rAUD2ENV EQU rNR22 398 | 399 | 400 | ; -- 401 | ; -- AUD2LOW/NR23 ($FF18) 402 | ; -- Frequency lo (W) 403 | ; -- 404 | rNR23 EQU $FF18 405 | rAUD2LOW EQU rNR23 406 | 407 | 408 | ; -- 409 | ; -- AUD2HIGH/NR24 ($FF19) 410 | ; -- Frequency hi (W) 411 | ; -- 412 | ; -- see AUD1HIGH for info 413 | ; -- 414 | rNR24 EQU $FF19 415 | rAUD2HIGH EQU rNR24 416 | 417 | 418 | ;*************************************************************************** 419 | ;* 420 | ;* SoundChannel #3 registers 421 | ;* 422 | ;*************************************************************************** 423 | 424 | ; -- 425 | ; -- AUD3ENA/NR30 ($FF1A) 426 | ; -- Sound on/off (R/W) 427 | ; -- 428 | ; -- Bit 7 - Sound ON/OFF (1EQUON,0EQUOFF) 429 | ; -- 430 | rNR30 EQU $FF1A 431 | rAUD3ENA EQU rNR30 432 | 433 | 434 | ; -- 435 | ; -- AUD3LEN/NR31 ($FF1B) 436 | ; -- Sound length (R/W) 437 | ; -- 438 | ; -- Bit 7-0 - Sound length 439 | ; -- 440 | rNR31 EQU $FF1B 441 | rAUD3LEN EQU rNR31 442 | 443 | 444 | ; -- 445 | ; -- AUD3LEVEL/NR32 ($FF1C) 446 | ; -- Select output level 447 | ; -- 448 | ; -- Bit 6-5 - Select output level 449 | ; -- 00: 0/1 (mute) 450 | ; -- 01: 1/1 451 | ; -- 10: 1/2 452 | ; -- 11: 1/4 453 | ; -- 454 | rNR32 EQU $FF1C 455 | rAUD3LEVEL EQU rNR32 456 | 457 | 458 | ; -- 459 | ; -- AUD3LOW/NR33 ($FF1D) 460 | ; -- Frequency lo (W) 461 | ; -- 462 | ; -- see AUD1LOW for info 463 | ; -- 464 | rNR33 EQU $FF1D 465 | rAUD3LOW EQU rNR33 466 | 467 | 468 | ; -- 469 | ; -- AUD3HIGH/NR34 ($FF1E) 470 | ; -- Frequency hi (W) 471 | ; -- 472 | ; -- see AUD1HIGH for info 473 | ; -- 474 | rNR34 EQU $FF1E 475 | rAUD3HIGH EQU rNR34 476 | 477 | 478 | ; -- 479 | ; -- AUD4LEN/NR41 ($FF20) 480 | ; -- Sound length (R/W) 481 | ; -- 482 | ; -- Bit 5-0 - Sound length data (# 0-63) 483 | ; -- 484 | rNR41 EQU $FF20 485 | rAUD4LEN EQU rNR41 486 | 487 | 488 | ; -- 489 | ; -- AUD4ENV/NR42 ($FF21) 490 | ; -- Envelope (R/W) 491 | ; -- 492 | ; -- see AUD1ENV for info 493 | ; -- 494 | rNR42 EQU $FF21 495 | rAUD4ENV EQU rNR42 496 | 497 | 498 | ; -- 499 | ; -- AUD4POLY/NR42 ($FF22) 500 | ; -- Polynomial counter (R/W) 501 | ; -- 502 | ; -- Bit 7-4 - Selection of the shift clock frequency of the (scf) 503 | ; -- polynomial counter (0000-1101) 504 | ; -- freqEQUdrf*1/2^scf (not sure) 505 | ; -- Bit 3 - Selection of the polynomial counter's step 506 | ; -- 0: 15 steps 507 | ; -- 1: 7 steps 508 | ; -- Bit 2-0 - Selection of the dividing ratio of frequencies (drf) 509 | ; -- 000: f/4 001: f/8 010: f/16 011: f/24 510 | ; -- 100: f/32 101: f/40 110: f/48 111: f/56 (fEQU4.194304 Mhz) 511 | ; -- 512 | rNR42_2 EQU $FF22 513 | rAUD4POLY EQU rNR42_2 514 | 515 | 516 | ; -- 517 | ; -- AUD4GO/NR43 ($FF23) 518 | ; -- (has wrong name and value (ff30) in Dr.Pan's doc!) 519 | ; -- 520 | ; -- Bit 7 - Inital 521 | ; -- Bit 6 - Counter/consecutive selection 522 | ; -- 523 | rNR43 EQU $FF23 524 | rAUD4GO EQU rNR43 ; silly name! 525 | 526 | ;*************************************************************************** 527 | ;* 528 | ;* Cart related 529 | ;* 530 | ;*************************************************************************** 531 | 532 | ROM_NOMBC EQU 0 533 | ROM_MBC1 EQU 1 534 | ROM_MBC1_RAM EQU 2 535 | ROM_MBC1_RAM_BAT EQU 3 536 | ROM_MBC2 EQU 5 537 | ROM_MBC2_BAT EQU 6 538 | ROM_NOMBC_RAM EQU 8 539 | ROM_NOMBC_RAM_BAT EQU 9 540 | 541 | ROM_SIZE_256KBIT EQU 0 542 | ROM_SIZE_512KBIT EQU 1 543 | ROM_SIZE_1M EQU 2 544 | ROM_SIZE_2M EQU 3 545 | ROM_SIZE_4M EQU 4 546 | ROM_SIZE_8M EQU 5 547 | ROM_SIZE_16M EQU 6 548 | 549 | ROM_SIZE_32KBYTE EQU 0 550 | ROM_SIZE_64KBYTE EQU 1 551 | ROM_SIZE_128KBYTE EQU 2 552 | ROM_SIZE_256KBYTE EQU 3 553 | ROM_SIZE_512KBYTE EQU 4 554 | ROM_SIZE_1MBYTE EQU 5 555 | ROM_SIZE_2MBYTE EQU 6 556 | 557 | RAM_SIZE_0KBIT EQU 0 558 | RAM_SIZE_16KBIT EQU 1 559 | RAM_SIZE_64KBIT EQU 2 560 | RAM_SIZE_256KBIT EQU 3 561 | RAM_SIZE_1MBIT EQU 4 562 | 563 | RAM_SIZE_0KBYTE EQU 0 564 | RAM_SIZE_2KBYTE EQU 1 565 | RAM_SIZE_8KBYTE EQU 2 566 | RAM_SIZE_32KBYTE EQU 3 567 | RAM_SIZE_128KBYTE EQU 4 568 | 569 | ;*************************************************************************** 570 | ;* 571 | ;* Keypad related 572 | ;* 573 | ;*************************************************************************** 574 | 575 | PADF_DOWN EQU $80 576 | PADF_UP EQU $40 577 | PADF_LEFT EQU $20 578 | PADF_RIGHT EQU $10 579 | PADF_START EQU $08 580 | PADF_SELECT EQU $04 581 | PADF_B EQU $02 582 | PADF_A EQU $01 583 | 584 | PADB_DOWN EQU $7 585 | PADB_UP EQU $6 586 | PADB_LEFT EQU $5 587 | PADB_RIGHT EQU $4 588 | PADB_START EQU $3 589 | PADB_SELECT EQU $2 590 | PADB_B EQU $1 591 | PADB_A EQU $0 592 | 593 | ;*************************************************************************** 594 | ;* 595 | ;* Screen related 596 | ;* 597 | ;*************************************************************************** 598 | 599 | SCRN_X EQU 160 ; Width of screen in pixels 600 | SCRN_Y EQU 144 ; Height of screen in pixels 601 | SCRN_X_B EQU 20 ; Width of screen in bytes 602 | SCRN_Y_B EQU 18 ; Height of screen in bytes 603 | 604 | SCRN_VX EQU 256 ; Virtual width of screen in pixels 605 | SCRN_VY EQU 256 ; Virtual height of screen in pixels 606 | SCRN_VX_B EQU 32 ; Virtual width of screen in bytes 607 | SCRN_VY_B EQU 32 ; Virtual height of screen in bytes 608 | 609 | NINTENDO_LOGO: MACRO 610 | ;* 611 | ;* Nintendo scrolling logo 612 | ;* (Code won't work on a real GameBoy) 613 | ;* (if next six lines are altered.) 614 | DB $CE,$ED,$66,$66,$CC,$0D,$00,$0B,$03,$73,$00,$83,$00,$0C,$00,$0D 615 | DB $00,$08,$11,$1F,$88,$89,$00,$0E,$DC,$CC,$6E,$E6,$DD,$DD,$D9,$99 616 | DB $BB,$BB,$67,$63,$6E,$0E,$EC,$CC,$DD,$DC,$99,$9F,$BB,$B9,$33,$3E 617 | ENDM 618 | 619 | ROM_HEADER: MACRO 620 | ;* 621 | ;* Nintendo scrolling logo 622 | ;* (Code won't work on a real GameBoy) 623 | ;* (if next six lines are altered.) 624 | 625 | ; 0123456789ABCDEF 626 | DB $CE,$ED,$66,$66,$CC,$0D,$00,$0B,$03,$73,$00,$83,$00,$0C,$00,$0D 627 | DB $00,$08,$11,$1F,$88,$89,$00,$0E,$DC,$CC,$6E,$E6,$DD,$DD,$D9,$99 628 | DB $BB,$BB,$67,$63,$6E,$0E,$EC,$CC,$DD,$DC,$99,$9F,$BB,$B9,$33,$3E 629 | 630 | DB "EXAMPLE",0,0,0,0,0,0,0,0 ; Cart name - 15bytes 631 | DB 0 ; $143 632 | DB 0,0 ; $144 - Licensee code (not important) 633 | DB 0 ; $146 - SGB Support indicator 634 | DB \1 ; $147 - Cart type 635 | DB \2 ; $148 - ROM Size 636 | DB \3 ; $149 - RAM Size 637 | DB 1 ; $14a - Destination code 638 | DB $33 ; $14b - Old licensee code 639 | DB 0 ; $14c - Mask ROM version 640 | DB 0 ; $14d - Complement check (important) 641 | DW 0 ; $14e - Checksum (not important) 642 | 643 | ENDM 644 | 645 | ENDC ;HARDWARE_INC 646 | -------------------------------------------------------------------------------- /inc/ibmpc1.inc: -------------------------------------------------------------------------------- 1 | ;* 2 | ;* IBMPC1 8x8 Character Set Macros V1.2 3 | ;* 4 | ;* Library Macros: 5 | ;* 6 | ;* chr_IBMPC1 - 7 | ;* Insert IBMPC fonts into code. 8 | ;* 9 | ;* This macro allows you to insert parts or the whole 10 | ;* character set into your code. Parameters: 1=$00-$1f, 11 | ;* 2=$20-$3f, 3=$40-$5f, 4=$60-7f, 5=$80-9f, 6=$a0-bf, 12 | ;* 7=$c0-df, and 8=$e0-ff. Examples: 13 | ;* 14 | ;* chr_IBMPC1 1,8 - Insert chars $00 - $ff. 15 | ;* chr_IBMPC1 2,2 - Insert chars $20 - $3f. 16 | ;* 17 | 18 | ; If all of these are already defined, don't do it again. 19 | 20 | IF !DEF(IBMPC1_INC) 21 | IBMPC1_INC SET 1 22 | 23 | rev_Check_ibmpc1_inc: MACRO 24 | ;NOTE: REVISION NUMBER CHANGES MUST BE ADDED 25 | ;TO SECOND PARAMETER IN FOLLOWING LINE. 26 | IF \1 > 1.2 ; <--- PUT REVISION NUMBER HERE 27 | WARN "Version \1 or later of 'ibmpc1.inc' is required." 28 | ENDC 29 | ENDM 30 | 31 | chr_IBMPC1: MACRO 32 | 33 | IF (\1 == 0) || (\2 == 0) || (\1 > \2) || (\2 > 8) 34 | FAIL "Font range values are invalid" 35 | ENDC 36 | 37 | PUSHO 38 | ; Define . and X to be 0 and 1 39 | OPT b.X 40 | 41 | ; Characters $00 - $1f 42 | 43 | IF (\1 == 1) 44 | 45 | DB %.XXXXXX. ;Use to be a space ????? 46 | DB %.X....X. 47 | DB %.X....X. 48 | DB %.X....X. 49 | DB %.X....X. 50 | DB %.X....X. 51 | DB %.X....X. 52 | DB %.XXXXXX. 53 | 54 | DB %.XXXXXX. 55 | DB %X......X 56 | DB %X.X..X.X 57 | DB %X......X 58 | DB %X.XXXX.X 59 | DB %X..XX..X 60 | DB %X......X 61 | DB %.XXXXXX. 62 | 63 | DB %.XXXXXX. 64 | DB %XXXXXXXX 65 | DB %XX.XX.XX 66 | DB %XXXXXXXX 67 | DB %XX....XX 68 | DB %XXX..XXX 69 | DB %XXXXXXXX 70 | DB %.XXXXXX. 71 | 72 | DB %.XX.XX.. 73 | DB %XXXXXXX. 74 | DB %XXXXXXX. 75 | DB %XXXXXXX. 76 | DB %.XXXXX.. 77 | DB %..XXX... 78 | DB %...X.... 79 | DB %........ 80 | 81 | DB %...X.... 82 | DB %..XXX... 83 | DB %.XXXXX.. 84 | DB %XXXXXXX. 85 | DB %.XXXXX.. 86 | DB %..XXX... 87 | DB %...X.... 88 | DB %........ 89 | 90 | DB %..XXX... 91 | DB %.XXXXX.. 92 | DB %..XXX... 93 | DB %XXXXXXX. 94 | DB %XXXXXXX. 95 | DB %.XXXXX.. 96 | DB %..XXX... 97 | DB %.XXXXX.. 98 | 99 | DB %...X.... 100 | DB %...X.... 101 | DB %..XXX... 102 | DB %.XXXXX.. 103 | DB %XXXXXXX. 104 | DB %.XXXXX.. 105 | DB %..XXX... 106 | DB %.XXXXX.. 107 | 108 | DB %........ 109 | DB %........ 110 | DB %...XX... 111 | DB %..XXXX.. 112 | DB %..XXXX.. 113 | DB %...XX... 114 | DB %........ 115 | DB %........ 116 | 117 | DB %XXXXXXXX 118 | DB %XXXXXXXX 119 | DB %XXX..XXX 120 | DB %XX....XX 121 | DB %XX....XX 122 | DB %XXX..XXX 123 | DB %XXXXXXXX 124 | DB %XXXXXXXX 125 | 126 | DB %........ 127 | DB %..XXXX.. 128 | DB %.XX..XX. 129 | DB %.X....X. 130 | DB %.X....X. 131 | DB %.XX..XX. 132 | DB %..XXXX.. 133 | DB %........ 134 | 135 | DB %XXXXXXXX 136 | DB %XX....XX 137 | DB %X..XX..X 138 | DB %X.XXXX.X 139 | DB %X.XXXX.X 140 | DB %X..XX..X 141 | DB %XX....XX 142 | DB %XXXXXXXX 143 | 144 | DB %....XXXX 145 | DB %.....XXX 146 | DB %....XXXX 147 | DB %.XXXXX.X 148 | DB %XX..XX.. 149 | DB %XX..XX.. 150 | DB %XX..XX.. 151 | DB %.XXXX... 152 | 153 | DB %..XXXX.. 154 | DB %.XX..XX. 155 | DB %.XX..XX. 156 | DB %.XX..XX. 157 | DB %..XXXX.. 158 | DB %...XX... 159 | DB %.XXXXXX. 160 | DB %...XX... 161 | 162 | DB %..XXXXXX 163 | DB %..XX..XX 164 | DB %..XXXXXX 165 | DB %..XX.... 166 | DB %..XX.... 167 | DB %.XXX.... 168 | DB %XXXX.... 169 | DB %XXX..... 170 | 171 | DB %.XXXXXXX 172 | DB %.XX...XX 173 | DB %.XXXXXXX 174 | DB %.XX...XX 175 | DB %.XX...XX 176 | DB %.XX..XXX 177 | DB %XXX..XX. 178 | DB %XX...... 179 | 180 | DB %X..XX..X 181 | DB %.X.XX.X. 182 | DB %..XXXX.. 183 | DB %XXX..XXX 184 | DB %XXX..XXX 185 | DB %..XXXX.. 186 | DB %.X.XX.X. 187 | DB %X..XX..X 188 | 189 | DB %X....... 190 | DB %XXX..... 191 | DB %XXXXX... 192 | DB %XXXXXXX. 193 | DB %XXXXX... 194 | DB %XXX..... 195 | DB %X....... 196 | DB %........ 197 | 198 | DB %......X. 199 | DB %....XXX. 200 | DB %..XXXXX. 201 | DB %XXXXXXX. 202 | DB %..XXXXX. 203 | DB %....XXX. 204 | DB %......X. 205 | DB %........ 206 | 207 | DB %...XX... 208 | DB %..XXXX.. 209 | DB %.XXXXXX. 210 | DB %...XX... 211 | DB %...XX... 212 | DB %.XXXXXX. 213 | DB %..XXXX.. 214 | DB %...XX... 215 | 216 | DB %.XX..XX. 217 | DB %.XX..XX. 218 | DB %.XX..XX. 219 | DB %.XX..XX. 220 | DB %.XX..XX. 221 | DB %........ 222 | DB %.XX..XX. 223 | DB %........ 224 | 225 | DB %.XXXXXXX 226 | DB %XX.XX.XX 227 | DB %XX.XX.XX 228 | DB %.XXXX.XX 229 | DB %...XX.XX 230 | DB %...XX.XX 231 | DB %...XX.XX 232 | DB %........ 233 | 234 | DB %..XXXXX. 235 | DB %.XX...XX 236 | DB %..XXX... 237 | DB %.XX.XX.. 238 | DB %.XX.XX.. 239 | DB %..XXX... 240 | DB %XX..XX.. 241 | DB %.XXXX... 242 | 243 | DB %........ 244 | DB %........ 245 | DB %........ 246 | DB %........ 247 | DB %.XXXXXX. 248 | DB %.XXXXXX. 249 | DB %.XXXXXX. 250 | DB %........ 251 | 252 | DB %...XX... 253 | DB %..XXXX.. 254 | DB %.XXXXXX. 255 | DB %...XX... 256 | DB %.XXXXXX. 257 | DB %..XXXX.. 258 | DB %...XX... 259 | DB %XXXXXXXX 260 | 261 | DB %...XX... 262 | DB %..XXXX.. 263 | DB %.XXXXXX. 264 | DB %...XX... 265 | DB %...XX... 266 | DB %...XX... 267 | DB %...XX... 268 | DB %........ 269 | 270 | DB %...XX... 271 | DB %...XX... 272 | DB %...XX... 273 | DB %...XX... 274 | DB %.XXXXXX. 275 | DB %..XXXX.. 276 | DB %...XX... 277 | DB %........ 278 | 279 | DB %........ 280 | DB %...XX... 281 | DB %....XX.. 282 | DB %XXXXXXX. 283 | DB %....XX.. 284 | DB %...XX... 285 | DB %........ 286 | DB %........ 287 | 288 | DB %........ 289 | DB %..XX.... 290 | DB %.XX..... 291 | DB %XXXXXXX. 292 | DB %.XX..... 293 | DB %..XX.... 294 | DB %........ 295 | DB %........ 296 | 297 | DB %........ 298 | DB %........ 299 | DB %XX...... 300 | DB %XX...... 301 | DB %XX...... 302 | DB %XXXXXXX. 303 | DB %........ 304 | DB %........ 305 | 306 | DB %........ 307 | DB %..X..X.. 308 | DB %.XX..XX. 309 | DB %XXXXXXXX 310 | DB %.XX..XX. 311 | DB %..X..X.. 312 | DB %........ 313 | DB %........ 314 | 315 | DB %........ 316 | DB %...XX... 317 | DB %..XXXX.. 318 | DB %.XXXXXX. 319 | DB %XXXXXXXX 320 | DB %XXXXXXXX 321 | DB %........ 322 | DB %........ 323 | 324 | DB %........ 325 | DB %XXXXXXXX 326 | DB %XXXXXXXX 327 | DB %.XXXXXX. 328 | DB %..XXXX.. 329 | DB %...XX... 330 | DB %........ 331 | DB %........ 332 | 333 | ENDC 334 | 335 | ; Characters $20 - $3f 336 | 337 | IF (\1 < 3) && (\2 > 1) 338 | 339 | DB %........ 340 | DB %........ 341 | DB %........ 342 | DB %........ 343 | DB %........ 344 | DB %........ 345 | DB %........ 346 | DB %........ 347 | 348 | DB %..XX.... 349 | DB %..XX.... 350 | DB %..XX.... 351 | DB %..XX.... 352 | DB %..XX.... 353 | DB %........ 354 | DB %..XX.... 355 | DB %........ 356 | 357 | DB %.XX.XX.. 358 | DB %.XX.XX.. 359 | DB %.XX.XX.. 360 | DB %........ 361 | DB %........ 362 | DB %........ 363 | DB %........ 364 | DB %........ 365 | 366 | DB %.XX.XX.. 367 | DB %.XX.XX.. 368 | DB %XXXXXXX. 369 | DB %.XX.XX.. 370 | DB %XXXXXXX. 371 | DB %.XX.XX.. 372 | DB %.XX.XX.. 373 | DB %........ 374 | 375 | DB %..XX.... 376 | DB %.XXXXX.. 377 | DB %XX...... 378 | DB %.XXXX... 379 | DB %....XX.. 380 | DB %XXXXX... 381 | DB %..XX.... 382 | DB %........ 383 | 384 | DB %........ 385 | DB %XX...XX. 386 | DB %XX..XX.. 387 | DB %...XX... 388 | DB %..XX.... 389 | DB %.XX..XX. 390 | DB %XX...XX. 391 | DB %........ 392 | 393 | DB %..XXX... 394 | DB %.XX.XX.. 395 | DB %..XXX... 396 | DB %.XXX.XX. 397 | DB %XX.XXX.. 398 | DB %XX..XX.. 399 | DB %.XXX.XX. 400 | DB %........ 401 | 402 | DB %.XX..... 403 | DB %.XX..... 404 | DB %XX...... 405 | DB %........ 406 | DB %........ 407 | DB %........ 408 | DB %........ 409 | DB %........ 410 | 411 | DB %...XX... 412 | DB %..XX.... 413 | DB %.XX..... 414 | DB %.XX..... 415 | DB %.XX..... 416 | DB %..XX.... 417 | DB %...XX... 418 | DB %........ 419 | 420 | DB %.XX..... 421 | DB %..XX.... 422 | DB %...XX... 423 | DB %...XX... 424 | DB %...XX... 425 | DB %..XX.... 426 | DB %.XX..... 427 | DB %........ 428 | 429 | DB %........ 430 | DB %.XX..XX. 431 | DB %..XXXX.. 432 | DB %XXXXXXXX 433 | DB %..XXXX.. 434 | DB %.XX..XX. 435 | DB %........ 436 | DB %........ 437 | 438 | DB %........ 439 | DB %..XX.... 440 | DB %..XX.... 441 | DB %XXXXXX.. 442 | DB %..XX.... 443 | DB %..XX.... 444 | DB %........ 445 | DB %........ 446 | 447 | DB %........ 448 | DB %........ 449 | DB %........ 450 | DB %........ 451 | DB %........ 452 | DB %..XX.... 453 | DB %..XX.... 454 | DB %.XX..... 455 | 456 | DB %........ 457 | DB %........ 458 | DB %........ 459 | DB %XXXXXX.. 460 | DB %........ 461 | DB %........ 462 | DB %........ 463 | DB %........ 464 | 465 | DB %........ 466 | DB %........ 467 | DB %........ 468 | DB %........ 469 | DB %........ 470 | DB %..XX.... 471 | DB %..XX.... 472 | DB %........ 473 | 474 | DB %.....XX. 475 | DB %....XX.. 476 | DB %...XX... 477 | DB %..XX.... 478 | DB %.XX..... 479 | DB %XX...... 480 | DB %X....... 481 | DB %........ 482 | 483 | DB %.XXXXX.. 484 | DB %XX...XX. 485 | DB %XX..XXX. 486 | DB %XX.XXXX. 487 | DB %XXXX.XX. 488 | DB %XXX..XX. 489 | DB %.XXXXX.. 490 | DB %........ 491 | 492 | DB %..XX.... 493 | DB %.XXX.... 494 | DB %..XX.... 495 | DB %..XX.... 496 | DB %..XX.... 497 | DB %..XX.... 498 | DB %XXXXXX.. 499 | DB %........ 500 | 501 | DB %.XXXX... 502 | DB %XX..XX.. 503 | DB %....XX.. 504 | DB %..XXX... 505 | DB %.XX..... 506 | DB %XX..XX.. 507 | DB %XXXXXX.. 508 | DB %........ 509 | 510 | DB %.XXXX... 511 | DB %XX..XX.. 512 | DB %....XX.. 513 | DB %..XXX... 514 | DB %....XX.. 515 | DB %XX..XX.. 516 | DB %.XXXX... 517 | DB %........ 518 | 519 | DB %...XXX.. 520 | DB %..XXXX.. 521 | DB %.XX.XX.. 522 | DB %XX..XX.. 523 | DB %XXXXXXX. 524 | DB %....XX.. 525 | DB %...XXXX. 526 | DB %........ 527 | 528 | DB %XXXXXX.. 529 | DB %XX...... 530 | DB %XXXXX... 531 | DB %....XX.. 532 | DB %....XX.. 533 | DB %XX..XX.. 534 | DB %.XXXX... 535 | DB %........ 536 | 537 | DB %..XXX... 538 | DB %.XX..... 539 | DB %XX...... 540 | DB %XXXXX... 541 | DB %XX..XX.. 542 | DB %XX..XX.. 543 | DB %.XXXX... 544 | DB %........ 545 | 546 | DB %XXXXXX.. 547 | DB %XX..XX.. 548 | DB %....XX.. 549 | DB %...XX... 550 | DB %..XX.... 551 | DB %..XX.... 552 | DB %..XX.... 553 | DB %........ 554 | 555 | DB %.XXXX... 556 | DB %XX..XX.. 557 | DB %XX..XX.. 558 | DB %.XXXX... 559 | DB %XX..XX.. 560 | DB %XX..XX.. 561 | DB %.XXXX... 562 | DB %........ 563 | 564 | DB %.XXXX... 565 | DB %XX..XX.. 566 | DB %XX..XX.. 567 | DB %.XXXXX.. 568 | DB %....XX.. 569 | DB %...XX... 570 | DB %.XXX.... 571 | DB %........ 572 | 573 | DB %........ 574 | DB %..XX.... 575 | DB %..XX.... 576 | DB %........ 577 | DB %........ 578 | DB %..XX.... 579 | DB %..XX.... 580 | DB %........ 581 | 582 | DB %........ 583 | DB %..XX.... 584 | DB %..XX.... 585 | DB %........ 586 | DB %........ 587 | DB %..XX.... 588 | DB %..XX.... 589 | DB %.XX..... 590 | 591 | DB %...XX... 592 | DB %..XX.... 593 | DB %.XX..... 594 | DB %XX...... 595 | DB %.XX..... 596 | DB %..XX.... 597 | DB %...XX... 598 | DB %........ 599 | 600 | DB %........ 601 | DB %........ 602 | DB %XXXXXX.. 603 | DB %........ 604 | DB %........ 605 | DB %XXXXXX.. 606 | DB %........ 607 | DB %........ 608 | 609 | DB %.XX..... 610 | DB %..XX.... 611 | DB %...XX... 612 | DB %....XX.. 613 | DB %...XX... 614 | DB %..XX.... 615 | DB %.XX..... 616 | DB %........ 617 | 618 | DB %.XXXX... 619 | DB %XX..XX.. 620 | DB %....XX.. 621 | DB %...XX... 622 | DB %..XX.... 623 | DB %........ 624 | DB %..XX.... 625 | DB %........ 626 | 627 | ENDC 628 | 629 | ; Characters $40 - $5f 630 | 631 | IF (\1 < 4) && (\2 > 2) 632 | 633 | DB %.XXXXX.. 634 | DB %XX...XX. 635 | DB %XX.XXXX. 636 | DB %XX.XXXX. 637 | DB %XX.XXXX. 638 | DB %XX...... 639 | DB %.XXXX... 640 | DB %........ 641 | 642 | DB %..XX.... 643 | DB %.XXXX... 644 | DB %XX..XX.. 645 | DB %XX..XX.. 646 | DB %XXXXXX.. 647 | DB %XX..XX.. 648 | DB %XX..XX.. 649 | DB %........ 650 | 651 | DB %XXXXXX.. 652 | DB %.XX..XX. 653 | DB %.XX..XX. 654 | DB %.XXXXX.. 655 | DB %.XX..XX. 656 | DB %.XX..XX. 657 | DB %XXXXXX.. 658 | DB %........ 659 | 660 | DB %..XXXX.. 661 | DB %.XX..XX. 662 | DB %XX...... 663 | DB %XX...... 664 | DB %XX...... 665 | DB %.XX..XX. 666 | DB %..XXXX.. 667 | DB %........ 668 | 669 | DB %XXXXX... 670 | DB %.XX.XX.. 671 | DB %.XX..XX. 672 | DB %.XX..XX. 673 | DB %.XX..XX. 674 | DB %.XX.XX.. 675 | DB %XXXXX... 676 | DB %........ 677 | 678 | DB %.XXXXXX. 679 | DB %.XX..... 680 | DB %.XX..... 681 | DB %.XXXX... 682 | DB %.XX..... 683 | DB %.XX..... 684 | DB %.XXXXXX. 685 | DB %........ 686 | 687 | DB %.XXXXXX. 688 | DB %.XX..... 689 | DB %.XX..... 690 | DB %.XXXX... 691 | DB %.XX..... 692 | DB %.XX..... 693 | DB %.XX..... 694 | DB %........ 695 | 696 | DB %..XXXX.. 697 | DB %.XX..XX. 698 | DB %XX...... 699 | DB %XX...... 700 | DB %XX..XXX. 701 | DB %.XX..XX. 702 | DB %..XXXXX. 703 | DB %........ 704 | 705 | DB %XX..XX.. 706 | DB %XX..XX.. 707 | DB %XX..XX.. 708 | DB %XXXXXX.. 709 | DB %XX..XX.. 710 | DB %XX..XX.. 711 | DB %XX..XX.. 712 | DB %........ 713 | 714 | DB %.XXXX... 715 | DB %..XX.... 716 | DB %..XX.... 717 | DB %..XX.... 718 | DB %..XX.... 719 | DB %..XX.... 720 | DB %.XXXX... 721 | DB %........ 722 | 723 | DB %...XXXX. 724 | DB %....XX.. 725 | DB %....XX.. 726 | DB %....XX.. 727 | DB %XX..XX.. 728 | DB %XX..XX.. 729 | DB %.XXXX... 730 | DB %........ 731 | 732 | DB %XXX..XX. 733 | DB %.XX..XX. 734 | DB %.XX.XX.. 735 | DB %.XXXX... 736 | DB %.XX.XX.. 737 | DB %.XX..XX. 738 | DB %XXX..XX. 739 | DB %........ 740 | 741 | DB %.XX..... 742 | DB %.XX..... 743 | DB %.XX..... 744 | DB %.XX..... 745 | DB %.XX..... 746 | DB %.XX..... 747 | DB %.XXXXXX. 748 | DB %........ 749 | 750 | DB %XX...XX. 751 | DB %XXX.XXX. 752 | DB %XXXXXXX. 753 | DB %XXXXXXX. 754 | DB %XX.X.XX. 755 | DB %XX...XX. 756 | DB %XX...XX. 757 | DB %........ 758 | 759 | DB %XX...XX. 760 | DB %XXX..XX. 761 | DB %XXXX.XX. 762 | DB %XX.XXXX. 763 | DB %XX..XXX. 764 | DB %XX...XX. 765 | DB %XX...XX. 766 | DB %........ 767 | 768 | DB %..XXX... 769 | DB %.XX.XX.. 770 | DB %XX...XX. 771 | DB %XX...XX. 772 | DB %XX...XX. 773 | DB %.XX.XX.. 774 | DB %..XXX... 775 | DB %........ 776 | 777 | DB %XXXXXX.. 778 | DB %.XX..XX. 779 | DB %.XX..XX. 780 | DB %.XXXXX.. 781 | DB %.XX..... 782 | DB %.XX..... 783 | DB %XXXX.... 784 | DB %........ 785 | 786 | DB %.XXXX... 787 | DB %XX..XX.. 788 | DB %XX..XX.. 789 | DB %XX..XX.. 790 | DB %XX.XXX.. 791 | DB %.XXXX... 792 | DB %...XXX.. 793 | DB %........ 794 | 795 | DB %XXXXXX.. 796 | DB %.XX..XX. 797 | DB %.XX..XX. 798 | DB %.XXXXX.. 799 | DB %.XX.XX.. 800 | DB %.XX..XX. 801 | DB %XXX..XX. 802 | DB %........ 803 | 804 | DB %.XXXX... 805 | DB %XX..XX.. 806 | DB %XXX..... 807 | DB %.XXXX... 808 | DB %...XXX.. 809 | DB %XX..XX.. 810 | DB %.XXXX... 811 | DB %........ 812 | 813 | DB %XXXXXX.. 814 | DB %..XX.... 815 | DB %..XX.... 816 | DB %..XX.... 817 | DB %..XX.... 818 | DB %..XX.... 819 | DB %..XX.... 820 | DB %........ 821 | 822 | DB %XX..XX.. 823 | DB %XX..XX.. 824 | DB %XX..XX.. 825 | DB %XX..XX.. 826 | DB %XX..XX.. 827 | DB %XX..XX.. 828 | DB %XXXXXX.. 829 | DB %........ 830 | 831 | DB %XX..XX.. 832 | DB %XX..XX.. 833 | DB %XX..XX.. 834 | DB %XX..XX.. 835 | DB %XX..XX.. 836 | DB %.XXXX... 837 | DB %..XX.... 838 | DB %........ 839 | 840 | DB %XX...XX. 841 | DB %XX...XX. 842 | DB %XX...XX. 843 | DB %XX.X.XX. 844 | DB %XXXXXXX. 845 | DB %XXX.XXX. 846 | DB %XX...XX. 847 | DB %........ 848 | 849 | DB %XX...XX. 850 | DB %XX...XX. 851 | DB %.XX.XX.. 852 | DB %..XXX... 853 | DB %..XXX... 854 | DB %.XX.XX.. 855 | DB %XX...XX. 856 | DB %........ 857 | 858 | DB %XX..XX.. 859 | DB %XX..XX.. 860 | DB %XX..XX.. 861 | DB %.XXXX... 862 | DB %..XX.... 863 | DB %..XX.... 864 | DB %.XXXX... 865 | DB %........ 866 | 867 | DB %XXXXXXX. 868 | DB %.....XX. 869 | DB %....XX.. 870 | DB %...XX... 871 | DB %..XX.... 872 | DB %.XX..... 873 | DB %XXXXXXX. 874 | DB %........ 875 | 876 | DB %.XXXX... 877 | DB %.XX..... 878 | DB %.XX..... 879 | DB %.XX..... 880 | DB %.XX..... 881 | DB %.XX..... 882 | DB %.XXXX... 883 | DB %........ 884 | 885 | DB %XX...... 886 | DB %.XX..... 887 | DB %..XX.... 888 | DB %...XX... 889 | DB %....XX.. 890 | DB %.....XX. 891 | DB %......X. 892 | DB %........ 893 | 894 | DB %.XXXX... 895 | DB %...XX... 896 | DB %...XX... 897 | DB %...XX... 898 | DB %...XX... 899 | DB %...XX... 900 | DB %.XXXX... 901 | DB %........ 902 | 903 | DB %...X.... 904 | DB %..XXX... 905 | DB %.XX.XX.. 906 | DB %XX...XX. 907 | DB %........ 908 | DB %........ 909 | DB %........ 910 | DB %........ 911 | 912 | DB %........ 913 | DB %........ 914 | DB %........ 915 | DB %........ 916 | DB %........ 917 | DB %........ 918 | DB %........ 919 | DB %XXXXXXXX 920 | 921 | ENDC 922 | 923 | ; Characters $60 - $7f 924 | 925 | IF (\1 < 5) && (\2 > 3) 926 | 927 | DB %..XX.... 928 | DB %..XX.... 929 | DB %...XX... 930 | DB %........ 931 | DB %........ 932 | DB %........ 933 | DB %........ 934 | DB %........ 935 | 936 | DB %........ 937 | DB %........ 938 | DB %.XXXX... 939 | DB %....XX.. 940 | DB %.XXXXX.. 941 | DB %XX..XX.. 942 | DB %.XXX.XX. 943 | DB %........ 944 | 945 | DB %XXX..... 946 | DB %.XX..... 947 | DB %.XX..... 948 | DB %.XXXXX.. 949 | DB %.XX..XX. 950 | DB %.XX..XX. 951 | DB %XX.XXX.. 952 | DB %........ 953 | 954 | DB %........ 955 | DB %........ 956 | DB %.XXXX... 957 | DB %XX..XX.. 958 | DB %XX...... 959 | DB %XX..XX.. 960 | DB %.XXXX... 961 | DB %........ 962 | 963 | DB %...XXX.. 964 | DB %....XX.. 965 | DB %....XX.. 966 | DB %.XXXXX.. 967 | DB %XX..XX.. 968 | DB %XX..XX.. 969 | DB %.XXX.XX. 970 | DB %........ 971 | 972 | DB %........ 973 | DB %........ 974 | DB %.XXXX... 975 | DB %XX..XX.. 976 | DB %XXXXXX.. 977 | DB %XX...... 978 | DB %.XXXX... 979 | DB %........ 980 | 981 | DB %..XXX... 982 | DB %.XX.XX.. 983 | DB %.XX..... 984 | DB %XXXX.... 985 | DB %.XX..... 986 | DB %.XX..... 987 | DB %XXXX.... 988 | DB %........ 989 | 990 | DB %........ 991 | DB %........ 992 | DB %.XXX.XX. 993 | DB %XX..XX.. 994 | DB %XX..XX.. 995 | DB %.XXXXX.. 996 | DB %....XX.. 997 | DB %XXXXX... 998 | 999 | DB %XXX..... 1000 | DB %.XX..... 1001 | DB %.XX.XX.. 1002 | DB %.XXX.XX. 1003 | DB %.XX..XX. 1004 | DB %.XX..XX. 1005 | DB %XXX..XX. 1006 | DB %........ 1007 | 1008 | DB %..XX.... 1009 | DB %........ 1010 | DB %.XXX.... 1011 | DB %..XX.... 1012 | DB %..XX.... 1013 | DB %..XX.... 1014 | DB %.XXXX... 1015 | DB %........ 1016 | 1017 | DB %....XX.. 1018 | DB %........ 1019 | DB %....XX.. 1020 | DB %....XX.. 1021 | DB %....XX.. 1022 | DB %XX..XX.. 1023 | DB %XX..XX.. 1024 | DB %.XXXX... 1025 | 1026 | DB %XXX..... 1027 | DB %.XX..... 1028 | DB %.XX..XX. 1029 | DB %.XX.XX.. 1030 | DB %.XXXX... 1031 | DB %.XX.XX.. 1032 | DB %XXX..XX. 1033 | DB %........ 1034 | 1035 | DB %.XXX.... 1036 | DB %..XX.... 1037 | DB %..XX.... 1038 | DB %..XX.... 1039 | DB %..XX.... 1040 | DB %..XX.... 1041 | DB %.XXXX... 1042 | DB %........ 1043 | 1044 | DB %........ 1045 | DB %........ 1046 | DB %XX..XX.. 1047 | DB %XXXXXXX. 1048 | DB %XXXXXXX. 1049 | DB %XX.X.XX. 1050 | DB %XX...XX. 1051 | DB %........ 1052 | 1053 | DB %........ 1054 | DB %........ 1055 | DB %XXXXX... 1056 | DB %XX..XX.. 1057 | DB %XX..XX.. 1058 | DB %XX..XX.. 1059 | DB %XX..XX.. 1060 | DB %........ 1061 | 1062 | DB %........ 1063 | DB %........ 1064 | DB %.XXXX... 1065 | DB %XX..XX.. 1066 | DB %XX..XX.. 1067 | DB %XX..XX.. 1068 | DB %.XXXX... 1069 | DB %........ 1070 | 1071 | DB %........ 1072 | DB %........ 1073 | DB %XX.XXX.. 1074 | DB %.XX..XX. 1075 | DB %.XX..XX. 1076 | DB %.XXXXX.. 1077 | DB %.XX..... 1078 | DB %XXXX.... 1079 | 1080 | DB %........ 1081 | DB %........ 1082 | DB %.XXX.XX. 1083 | DB %XX..XX.. 1084 | DB %XX..XX.. 1085 | DB %.XXXXX.. 1086 | DB %....XX.. 1087 | DB %...XXXX. 1088 | 1089 | DB %........ 1090 | DB %........ 1091 | DB %XX.XXX.. 1092 | DB %.XXX.XX. 1093 | DB %.XX..XX. 1094 | DB %.XX..... 1095 | DB %XXXX.... 1096 | DB %........ 1097 | 1098 | DB %........ 1099 | DB %........ 1100 | DB %.XXXXX.. 1101 | DB %XX...... 1102 | DB %.XXXX... 1103 | DB %....XX.. 1104 | DB %XXXXX... 1105 | DB %........ 1106 | 1107 | DB %...X.... 1108 | DB %..XX.... 1109 | DB %.XXXXX.. 1110 | DB %..XX.... 1111 | DB %..XX.... 1112 | DB %..XX.X.. 1113 | DB %...XX... 1114 | DB %........ 1115 | 1116 | DB %........ 1117 | DB %........ 1118 | DB %XX..XX.. 1119 | DB %XX..XX.. 1120 | DB %XX..XX.. 1121 | DB %XX..XX.. 1122 | DB %.XXX.XX. 1123 | DB %........ 1124 | 1125 | DB %........ 1126 | DB %........ 1127 | DB %XX..XX.. 1128 | DB %XX..XX.. 1129 | DB %XX..XX.. 1130 | DB %.XXXX... 1131 | DB %..XX.... 1132 | DB %........ 1133 | 1134 | DB %........ 1135 | DB %........ 1136 | DB %XX...XX. 1137 | DB %XX.X.XX. 1138 | DB %XXXXXXX. 1139 | DB %XXXXXXX. 1140 | DB %.XX.XX.. 1141 | DB %........ 1142 | 1143 | DB %........ 1144 | DB %........ 1145 | DB %XX...XX. 1146 | DB %.XX.XX.. 1147 | DB %..XXX... 1148 | DB %.XX.XX.. 1149 | DB %XX...XX. 1150 | DB %........ 1151 | 1152 | DB %........ 1153 | DB %........ 1154 | DB %XX..XX.. 1155 | DB %XX..XX.. 1156 | DB %XX..XX.. 1157 | DB %.XXXXX.. 1158 | DB %....XX.. 1159 | DB %XXXXX... 1160 | 1161 | DB %........ 1162 | DB %........ 1163 | DB %XXXXXX.. 1164 | DB %X..XX... 1165 | DB %..XX.... 1166 | DB %.XX..X.. 1167 | DB %XXXXXX.. 1168 | DB %........ 1169 | 1170 | DB %...XXX.. 1171 | DB %..XX.... 1172 | DB %..XX.... 1173 | DB %XXX..... 1174 | DB %..XX.... 1175 | DB %..XX.... 1176 | DB %...XXX.. 1177 | DB %........ 1178 | 1179 | DB %...XX... 1180 | DB %...XX... 1181 | DB %...XX... 1182 | DB %........ 1183 | DB %...XX... 1184 | DB %...XX... 1185 | DB %...XX... 1186 | DB %........ 1187 | 1188 | DB %XXX..... 1189 | DB %..XX.... 1190 | DB %..XX.... 1191 | DB %...XXX.. 1192 | DB %..XX.... 1193 | DB %..XX.... 1194 | DB %XXX..... 1195 | DB %........ 1196 | 1197 | DB %.XXX.XX. 1198 | DB %XX.XXX.. 1199 | DB %........ 1200 | DB %........ 1201 | DB %........ 1202 | DB %........ 1203 | DB %........ 1204 | DB %........ 1205 | 1206 | DB %........ 1207 | DB %...X.... 1208 | DB %..XXX... 1209 | DB %.XX.XX.. 1210 | DB %XX...XX. 1211 | DB %XXXXXXX. 1212 | DB %........ 1213 | DB %........ 1214 | 1215 | ENDC 1216 | 1217 | ; Characters $80 - $9f 1218 | 1219 | IF (\1 < 6) && (\2 > 4) 1220 | 1221 | DB %..XXXX.. 1222 | DB %.XX..XX. 1223 | DB %XX...... 1224 | DB %XX...... 1225 | DB %.XX..XX. 1226 | DB %..XXXX.. 1227 | DB %....X... 1228 | DB %...XX... 1229 | 1230 | DB %..X.X... 1231 | DB %........ 1232 | DB %XX..XX.. 1233 | DB %XX..XX.. 1234 | DB %XX..XX.. 1235 | DB %XX..XX.. 1236 | DB %.XXX.XX. 1237 | DB %........ 1238 | 1239 | DB %....X... 1240 | DB %...X.... 1241 | DB %.XXXX... 1242 | DB %XX..XX.. 1243 | DB %XXXXXX.. 1244 | DB %XX...... 1245 | DB %.XXXX... 1246 | DB %........ 1247 | 1248 | DB %...X.... 1249 | DB %..X.X... 1250 | DB %.XXXX... 1251 | DB %....XX.. 1252 | DB %.XXXXX.. 1253 | DB %XX..XX.. 1254 | DB %.XXX.XX. 1255 | DB %........ 1256 | 1257 | DB %..X.X... 1258 | DB %........ 1259 | DB %.XXXX... 1260 | DB %....XX.. 1261 | DB %.XXXXX.. 1262 | DB %XX..XX.. 1263 | DB %.XXX.XX. 1264 | DB %........ 1265 | 1266 | DB %..X..... 1267 | DB %...X.... 1268 | DB %.XXXX... 1269 | DB %....XX.. 1270 | DB %.XXXXX.. 1271 | DB %XX..XX.. 1272 | DB %.XXX.XX. 1273 | DB %........ 1274 | 1275 | DB %...XX... 1276 | DB %...XX... 1277 | DB %.XXXX... 1278 | DB %....XX.. 1279 | DB %.XXXXX.. 1280 | DB %XX..XX.. 1281 | DB %.XXX.XX. 1282 | DB %........ 1283 | 1284 | DB %........ 1285 | DB %.XXXX... 1286 | DB %XX..XX.. 1287 | DB %XX...... 1288 | DB %XX..XX.. 1289 | DB %.XXXX... 1290 | DB %...X.... 1291 | DB %..XX.... 1292 | 1293 | DB %...X.... 1294 | DB %..X.X... 1295 | DB %.XXXX... 1296 | DB %XX..XX.. 1297 | DB %XXXXXX.. 1298 | DB %XX...... 1299 | DB %.XXXX... 1300 | DB %........ 1301 | 1302 | DB %..X.X... 1303 | DB %........ 1304 | DB %.XXXX... 1305 | DB %XX..XX.. 1306 | DB %XXXXXX.. 1307 | DB %XX...... 1308 | DB %.XXXX... 1309 | DB %........ 1310 | 1311 | DB %..X..... 1312 | DB %...X.... 1313 | DB %.XXXX... 1314 | DB %XX..XX.. 1315 | DB %XXXXXX.. 1316 | DB %XX...... 1317 | DB %.XXXX... 1318 | DB %........ 1319 | 1320 | DB %..X.X... 1321 | DB %........ 1322 | DB %.XXX.... 1323 | DB %..XX.... 1324 | DB %..XX.... 1325 | DB %..XX.... 1326 | DB %.XXXX... 1327 | DB %........ 1328 | 1329 | DB %...X.... 1330 | DB %..X.X... 1331 | DB %.XXX.... 1332 | DB %..XX.... 1333 | DB %..XX.... 1334 | DB %..XX.... 1335 | DB %.XXXX... 1336 | DB %........ 1337 | 1338 | DB %...X.... 1339 | DB %....X... 1340 | DB %.XXX.... 1341 | DB %..XX.... 1342 | DB %..XX.... 1343 | DB %..XX.... 1344 | DB %.XXXX... 1345 | DB %........ 1346 | 1347 | DB %..X.X... 1348 | DB %..XX.... 1349 | DB %.XXXX... 1350 | DB %XX..XX.. 1351 | DB %XXXXXX.. 1352 | DB %XX..XX.. 1353 | DB %XX..XX.. 1354 | DB %........ 1355 | 1356 | DB %..XX.... 1357 | DB %.X..X... 1358 | DB %..XX.... 1359 | DB %XX..XX.. 1360 | DB %XXXXXX.. 1361 | DB %XX..XX.. 1362 | DB %XX..XX.. 1363 | DB %........ 1364 | 1365 | DB %....X... 1366 | DB %...X.... 1367 | DB %.XXXXXX. 1368 | DB %.XX..... 1369 | DB %.XXXX... 1370 | DB %.XX..... 1371 | DB %.XXXXXX. 1372 | DB %........ 1373 | 1374 | DB %........ 1375 | DB %........ 1376 | DB %.XX.XX.. 1377 | DB %...X..X. 1378 | DB %.XXXXXX. 1379 | DB %X..X.... 1380 | DB %.XXXXXX. 1381 | DB %........ 1382 | 1383 | DB %..XXXXX. 1384 | DB %.X.X.... 1385 | DB %X..X.... 1386 | DB %X..XXX.. 1387 | DB %XXXX.... 1388 | DB %X..X.... 1389 | DB %X..XXXX. 1390 | DB %........ 1391 | 1392 | DB %...X.... 1393 | DB %..X.X... 1394 | DB %.XXXX... 1395 | DB %XX..XX.. 1396 | DB %XX..XX.. 1397 | DB %XX..XX.. 1398 | DB %.XXXX... 1399 | DB %........ 1400 | 1401 | DB %..X.X... 1402 | DB %........ 1403 | DB %.XXXX... 1404 | DB %XX..XX.. 1405 | DB %XX..XX.. 1406 | DB %XX..XX.. 1407 | DB %.XXXX... 1408 | DB %........ 1409 | 1410 | DB %..X..... 1411 | DB %...X.... 1412 | DB %.XXXX... 1413 | DB %XX..XX.. 1414 | DB %XX..XX.. 1415 | DB %XX..XX.. 1416 | DB %.XXXX... 1417 | DB %........ 1418 | 1419 | DB %...X.... 1420 | DB %..X.X... 1421 | DB %XX..XX.. 1422 | DB %XX..XX.. 1423 | DB %XX..XX.. 1424 | DB %XX..XX.. 1425 | DB %.XXX.XX. 1426 | DB %........ 1427 | 1428 | DB %..X..... 1429 | DB %...X.... 1430 | DB %XX..XX.. 1431 | DB %XX..XX.. 1432 | DB %XX..XX.. 1433 | DB %XX..XX.. 1434 | DB %.XXX.XX. 1435 | DB %........ 1436 | 1437 | DB %..X.X... 1438 | DB %........ 1439 | DB %XX..XX.. 1440 | DB %XX..XX.. 1441 | DB %XX..XX.. 1442 | DB %.XXXXX.. 1443 | DB %....XX.. 1444 | DB %XXXXX... 1445 | 1446 | DB %..X.X... 1447 | DB %.XXXXX.. 1448 | DB %XX...XX. 1449 | DB %XX...XX. 1450 | DB %XX...XX. 1451 | DB %XX...XX. 1452 | DB %.XXXXX.. 1453 | DB %........ 1454 | 1455 | DB %..X.X... 1456 | DB %XX...XX. 1457 | DB %XX...XX. 1458 | DB %XX...XX. 1459 | DB %XX...XX. 1460 | DB %XX...XX. 1461 | DB %.XXXXX.. 1462 | DB %........ 1463 | 1464 | DB %........ 1465 | DB %...X.... 1466 | DB %.XXXX... 1467 | DB %XX..XX.. 1468 | DB %XX...... 1469 | DB %XX..XX.. 1470 | DB %.XXXX... 1471 | DB %...X.... 1472 | 1473 | DB %..XXX... 1474 | DB %.X...X.. 1475 | DB %.X...... 1476 | DB %XXXX.... 1477 | DB %.X...... 1478 | DB %.X...... 1479 | DB %XXXXXXX. 1480 | DB %........ 1481 | 1482 | DB %XX....XX 1483 | DB %.XX..XX. 1484 | DB %..XXXX.. 1485 | DB %.XXXXXX. 1486 | DB %...XX... 1487 | DB %.XXXXXX. 1488 | DB %...XX... 1489 | DB %........ 1490 | 1491 | DB %XXXXXX.. 1492 | DB %.XX..XX. 1493 | DB %.XX..XX. 1494 | DB %.XXXXX.. 1495 | DB %.XX..... 1496 | DB %.XX..... 1497 | DB %XXXX.... 1498 | DB %........ 1499 | 1500 | DB %...XXX.. 1501 | DB %..XX.... 1502 | DB %XXXXXX.. 1503 | DB %..XX.... 1504 | DB %..XX.... 1505 | DB %..XX.... 1506 | DB %..XX.... 1507 | DB %XXX..... 1508 | 1509 | ENDC 1510 | 1511 | ; Characters $a0 - $bf 1512 | 1513 | IF (\1 < 7) && (\2 > 5) 1514 | 1515 | DB %....X... 1516 | DB %...X.... 1517 | DB %.XXXX... 1518 | DB %....XX.. 1519 | DB %.XXXXX.. 1520 | DB %XX..XX.. 1521 | DB %.XXX.XX. 1522 | DB %........ 1523 | 1524 | DB %...X.... 1525 | DB %..X..... 1526 | DB %.XXX.... 1527 | DB %..XX.... 1528 | DB %..XX.... 1529 | DB %..XX.... 1530 | DB %.XXXX... 1531 | DB %........ 1532 | 1533 | DB %...X.... 1534 | DB %..X..... 1535 | DB %.XXXX... 1536 | DB %XX..XX.. 1537 | DB %XX..XX.. 1538 | DB %XX..XX.. 1539 | DB %.XXXX... 1540 | DB %........ 1541 | 1542 | DB %...X.... 1543 | DB %..X..... 1544 | DB %XX..XX.. 1545 | DB %XX..XX.. 1546 | DB %XX..XX.. 1547 | DB %XX..XX.. 1548 | DB %.XXX.XX. 1549 | DB %........ 1550 | 1551 | DB %..XX..X. 1552 | DB %.X..XX.. 1553 | DB %XXXXX... 1554 | DB %XX..XX.. 1555 | DB %XX..XX.. 1556 | DB %XX..XX.. 1557 | DB %XX..XX.. 1558 | DB %........ 1559 | 1560 | DB %..XX..X. 1561 | DB %.X..XX.. 1562 | DB %XX...XX. 1563 | DB %XXX..XX. 1564 | DB %XX.X.XX. 1565 | DB %XX..XXX. 1566 | DB %XX...XX. 1567 | DB %........ 1568 | 1569 | DB %........ 1570 | DB %..XXX... 1571 | DB %....XX.. 1572 | DB %..XXXX.. 1573 | DB %.XX.XX.. 1574 | DB %..XX.XX. 1575 | DB %........ 1576 | DB %........ 1577 | 1578 | DB %........ 1579 | DB %..XXX... 1580 | DB %.X...X.. 1581 | DB %.X...X.. 1582 | DB %..XXX... 1583 | DB %........ 1584 | DB %........ 1585 | DB %........ 1586 | 1587 | DB %...XX... 1588 | DB %........ 1589 | DB %...XX... 1590 | DB %..XX.... 1591 | DB %.XX..... 1592 | DB %.XX..XX. 1593 | DB %..XXXX.. 1594 | DB %........ 1595 | 1596 | DB %........ 1597 | DB %........ 1598 | DB %XXXXXXX. 1599 | DB %X....... 1600 | DB %X....... 1601 | DB %........ 1602 | DB %........ 1603 | DB %........ 1604 | 1605 | DB %........ 1606 | DB %........ 1607 | DB %XXXXXXX. 1608 | DB %......X. 1609 | DB %......X. 1610 | DB %........ 1611 | DB %........ 1612 | DB %........ 1613 | 1614 | DB %.X....X. 1615 | DB %.X...X.. 1616 | DB %.X..X... 1617 | DB %.X.X.XX. 1618 | DB %..X.X..X 1619 | DB %.X...XX. 1620 | DB %X...X... 1621 | DB %...XXXXX 1622 | 1623 | DB %.X....X. 1624 | DB %.X...X.. 1625 | DB %.X..X... 1626 | DB %.X.X.XX. 1627 | DB %..X.X.X. 1628 | DB %.X.XXXXX 1629 | DB %X.....X. 1630 | DB %.....XXX 1631 | 1632 | DB %..XX.... 1633 | DB %........ 1634 | DB %..XX.... 1635 | DB %..XX.... 1636 | DB %..XX.... 1637 | DB %..XX.... 1638 | DB %..XX.... 1639 | DB %........ 1640 | 1641 | DB %........ 1642 | DB %..X..X.. 1643 | DB %.X..X... 1644 | DB %X..X.... 1645 | DB %.X..X... 1646 | DB %..X..X.. 1647 | DB %........ 1648 | DB %........ 1649 | 1650 | DB %........ 1651 | DB %.X..X... 1652 | DB %..X..X.. 1653 | DB %...X..X. 1654 | DB %..X..X.. 1655 | DB %.X..X... 1656 | DB %........ 1657 | DB %........ 1658 | 1659 | DB %X...X... 1660 | DB %..X...X. 1661 | DB %X...X... 1662 | DB %..X...X. 1663 | DB %X...X... 1664 | DB %........ 1665 | DB %X...X... 1666 | DB %..X...X. 1667 | 1668 | DB %X.X.X.X. 1669 | DB %.X.X.X.X 1670 | DB %X.X.X.X. 1671 | DB %.X.X.X.X 1672 | DB %X.X.X.X. 1673 | DB %........ 1674 | DB %X.X.X.X. 1675 | DB %.X.X.X.X 1676 | 1677 | DB %.XXX.XXX 1678 | DB %XX.XXX.X 1679 | DB %.XXX.XXX 1680 | DB %XX.XXX.X 1681 | DB %.XXX.XXX 1682 | DB %XXXXXXXX 1683 | DB %.XXX.XXX 1684 | DB %XX.XXX.X 1685 | 1686 | DB %...X.... 1687 | DB %...X.... 1688 | DB %...X.... 1689 | DB %...X.... 1690 | DB %...X.... 1691 | DB %...X.... 1692 | DB %...X.... 1693 | DB %...X.... 1694 | 1695 | DB %...X.... 1696 | DB %...X.... 1697 | DB %...X.... 1698 | DB %XXXX.... 1699 | DB %...X.... 1700 | DB %...X.... 1701 | DB %...X.... 1702 | DB %...X.... 1703 | 1704 | DB %...X.... 1705 | DB %...X.... 1706 | DB %XXXX.... 1707 | DB %...X.... 1708 | DB %XXXX.... 1709 | DB %...X.... 1710 | DB %...X.... 1711 | DB %...X.... 1712 | 1713 | DB %..X.X... 1714 | DB %..X.X... 1715 | DB %..X.X... 1716 | DB %XXX.X... 1717 | DB %..X.X... 1718 | DB %..X.X... 1719 | DB %..X.X... 1720 | DB %..X.X... 1721 | 1722 | DB %........ 1723 | DB %........ 1724 | DB %........ 1725 | DB %XXXXX... 1726 | DB %..X.X... 1727 | DB %..X.X... 1728 | DB %..X.X... 1729 | DB %..X.X... 1730 | 1731 | DB %........ 1732 | DB %........ 1733 | DB %XXXX.... 1734 | DB %...X.... 1735 | DB %XXXX.... 1736 | DB %...X.... 1737 | DB %...X.... 1738 | DB %...X.... 1739 | 1740 | DB %..X.X... 1741 | DB %..X.X... 1742 | DB %XXX.X... 1743 | DB %....X... 1744 | DB %XXX.X... 1745 | DB %..X.X... 1746 | DB %..X.X... 1747 | DB %..X.X... 1748 | 1749 | DB %..X.X... 1750 | DB %..X.X... 1751 | DB %..X.X... 1752 | DB %..X.X... 1753 | DB %..X.X... 1754 | DB %..X.X... 1755 | DB %..X.X... 1756 | DB %..X.X... 1757 | 1758 | DB %........ 1759 | DB %........ 1760 | DB %XXXXX... 1761 | DB %....X... 1762 | DB %XXX.X... 1763 | DB %..X.X... 1764 | DB %..X.X... 1765 | DB %..X.X... 1766 | 1767 | DB %..X.X... ;bc 1768 | DB %..X.X... 1769 | DB %XXX.X... 1770 | DB %....X... 1771 | DB %XXXXX... 1772 | DB %........ 1773 | DB %........ 1774 | DB %........ 1775 | 1776 | DB %..X.X... 1777 | DB %..X.X... 1778 | DB %..X.X... 1779 | DB %XXXXX... 1780 | DB %........ 1781 | DB %........ 1782 | DB %........ 1783 | DB %........ 1784 | 1785 | DB %...X.... ;be 1786 | DB %...X.... 1787 | DB %XXXX.... 1788 | DB %...X.... 1789 | DB %XXXX.... 1790 | DB %........ 1791 | DB %........ 1792 | DB %........ 1793 | 1794 | DB %........ 1795 | DB %........ 1796 | DB %........ 1797 | DB %XXXX.... 1798 | DB %...X.... 1799 | DB %...X.... 1800 | DB %...X.... 1801 | DB %...X.... 1802 | 1803 | ENDC 1804 | 1805 | ; Characters $c0 - $df 1806 | 1807 | IF (\1 < 8) && (\2 > 6) 1808 | 1809 | DB %...X.... 1810 | DB %...X.... 1811 | DB %...X.... 1812 | DB %...XXXXX 1813 | DB %........ 1814 | DB %........ 1815 | DB %........ 1816 | DB %........ 1817 | 1818 | DB %...X.... 1819 | DB %...X.... 1820 | DB %...X.... 1821 | DB %XXXXXXXX 1822 | DB %........ 1823 | DB %........ 1824 | DB %........ 1825 | DB %........ 1826 | 1827 | DB %........ ;c2 1828 | DB %........ 1829 | DB %........ 1830 | DB %XXXXXXXX 1831 | DB %...X.... 1832 | DB %...X.... 1833 | DB %...X.... 1834 | DB %...X.... 1835 | 1836 | DB %...X.... 1837 | DB %...X.... 1838 | DB %...X.... 1839 | DB %...XXXXX 1840 | DB %...X.... 1841 | DB %...X.... 1842 | DB %...X.... 1843 | DB %...X.... 1844 | 1845 | DB %........ ;c4 1846 | DB %........ 1847 | DB %........ 1848 | DB %XXXXXXXX 1849 | DB %........ 1850 | DB %........ 1851 | DB %........ 1852 | DB %........ 1853 | 1854 | DB %...X.... 1855 | DB %...X.... 1856 | DB %...X.... 1857 | DB %XXXXXXXX 1858 | DB %...X.... 1859 | DB %...X.... 1860 | DB %...X.... 1861 | DB %...X.... 1862 | 1863 | DB %...X.... ;c6 1864 | DB %...X.... 1865 | DB %...XXXXX 1866 | DB %...X.... 1867 | DB %...XXXXX 1868 | DB %...X.... 1869 | DB %...X.... 1870 | DB %...X.... 1871 | 1872 | DB %..X.X... 1873 | DB %..X.X... 1874 | DB %..X.X... 1875 | DB %..X.XXXX 1876 | DB %..X.X... 1877 | DB %..X.X... 1878 | DB %..X.X... 1879 | DB %..X.X... 1880 | 1881 | DB %..X.X... ;c8 1882 | DB %..X.X... 1883 | DB %..X.XXXX 1884 | DB %..X..... 1885 | DB %..XXXXXX 1886 | DB %........ 1887 | DB %........ 1888 | DB %........ 1889 | 1890 | DB %........ 1891 | DB %........ 1892 | DB %..XXXXXX 1893 | DB %..X..... 1894 | DB %..X.XXXX 1895 | DB %..X.X... 1896 | DB %..X.X... 1897 | DB %..X.X... 1898 | 1899 | DB %..X.X... ;ca 1900 | DB %..X.X... 1901 | DB %XXX.XXXX 1902 | DB %........ 1903 | DB %XXXXXXXX 1904 | DB %........ 1905 | DB %........ 1906 | DB %........ 1907 | 1908 | DB %........ 1909 | DB %........ 1910 | DB %XXXXXXXX 1911 | DB %........ 1912 | DB %XXX.XXXX 1913 | DB %..X.X... 1914 | DB %..X.X... 1915 | DB %..X.X... 1916 | 1917 | DB %..X.X... ;cc 1918 | DB %..X.X... 1919 | DB %..X.XXXX 1920 | DB %..X..... 1921 | DB %..X.XXXX 1922 | DB %..X.X... 1923 | DB %..X.X... 1924 | DB %..X.X... 1925 | 1926 | DB %........ 1927 | DB %........ 1928 | DB %XXXXXXXX 1929 | DB %........ 1930 | DB %XXXXXXXX 1931 | DB %........ 1932 | DB %........ 1933 | DB %........ 1934 | 1935 | DB %..X.X... 1936 | DB %..X.X... 1937 | DB %XXX.XXXX 1938 | DB %........ 1939 | DB %XXX.XXXX 1940 | DB %..X.X... 1941 | DB %..X.X... 1942 | DB %..X.X... 1943 | 1944 | DB %...X.... 1945 | DB %...X.... 1946 | DB %XXXXXXXX 1947 | DB %........ 1948 | DB %XXXXXXXX 1949 | DB %........ 1950 | DB %........ 1951 | DB %........ 1952 | 1953 | DB %..X.X... 1954 | DB %..X.X... 1955 | DB %..X.X... 1956 | DB %XXXXXXXX 1957 | DB %........ 1958 | DB %........ 1959 | DB %........ 1960 | DB %........ 1961 | 1962 | DB %........ 1963 | DB %........ 1964 | DB %XXXXXXXX 1965 | DB %........ 1966 | DB %XXXXXXXX 1967 | DB %...X.... 1968 | DB %...X.... 1969 | DB %...X.... 1970 | 1971 | DB %........ 1972 | DB %........ 1973 | DB %........ 1974 | DB %XXXXXXXX 1975 | DB %..X.X... 1976 | DB %..X.X... 1977 | DB %..X.X... 1978 | DB %..X.X... 1979 | 1980 | DB %..X.X... 1981 | DB %..X.X... 1982 | DB %..X.X... 1983 | DB %..XXXXXX 1984 | DB %........ 1985 | DB %........ 1986 | DB %........ 1987 | DB %........ 1988 | 1989 | DB %...X.... 1990 | DB %...X.... 1991 | DB %...XXXXX 1992 | DB %...X.... 1993 | DB %...XXXXX 1994 | DB %........ 1995 | DB %........ 1996 | DB %........ 1997 | 1998 | DB %........ 1999 | DB %........ 2000 | DB %...XXXXX 2001 | DB %...X.... 2002 | DB %...XXXXX 2003 | DB %...X.... 2004 | DB %...X.... 2005 | DB %...X.... 2006 | 2007 | DB %........ 2008 | DB %........ 2009 | DB %........ 2010 | DB %..XXXXXX 2011 | DB %..X.X... 2012 | DB %..X.X... 2013 | DB %..X.X... 2014 | DB %..X.X... 2015 | 2016 | DB %..X.X... 2017 | DB %..X.X... 2018 | DB %..X.X... 2019 | DB %XXXXXXXX 2020 | DB %..X.X... 2021 | DB %..X.X... 2022 | DB %..X.X... 2023 | DB %..X.X... 2024 | 2025 | DB %...X.... 2026 | DB %...X.... 2027 | DB %XXXXXXXX 2028 | DB %...X.... 2029 | DB %XXXXXXXX 2030 | DB %...X.... 2031 | DB %...X.... 2032 | DB %...X.... 2033 | 2034 | DB %...X.... 2035 | DB %...X.... 2036 | DB %...X.... 2037 | DB %XXXX.... 2038 | DB %........ 2039 | DB %........ 2040 | DB %........ 2041 | DB %........ 2042 | 2043 | DB %........ 2044 | DB %........ 2045 | DB %........ 2046 | DB %...XXXXX 2047 | DB %...X.... 2048 | DB %...X.... 2049 | DB %...X.... 2050 | DB %...X.... 2051 | 2052 | DB %XXXXXXXX 2053 | DB %XXXXXXXX 2054 | DB %XXXXXXXX 2055 | DB %XXXXXXXX 2056 | DB %XXXXXXXX 2057 | DB %XXXXXXXX 2058 | DB %XXXXXXXX 2059 | DB %XXXXXXXX 2060 | 2061 | DB %........ 2062 | DB %........ 2063 | DB %........ 2064 | DB %........ 2065 | DB %XXXXXXXX 2066 | DB %XXXXXXXX 2067 | DB %XXXXXXXX 2068 | DB %XXXXXXXX 2069 | 2070 | DB %XXXX.... 2071 | DB %XXXX.... 2072 | DB %XXXX.... 2073 | DB %XXXX.... 2074 | DB %XXXX.... 2075 | DB %XXXX.... 2076 | DB %XXXX.... 2077 | DB %XXXX.... 2078 | 2079 | DB %....XXXX 2080 | DB %....XXXX 2081 | DB %....XXXX 2082 | DB %....XXXX 2083 | DB %....XXXX 2084 | DB %....XXXX 2085 | DB %....XXXX 2086 | DB %....XXXX 2087 | 2088 | DB %XXXXXXXX 2089 | DB %XXXXXXXX 2090 | DB %XXXXXXXX 2091 | DB %XXXXXXXX 2092 | DB %........ 2093 | DB %........ 2094 | DB %........ 2095 | DB %........ 2096 | 2097 | ENDC 2098 | 2099 | ; Characters $e0 - $ff 2100 | 2101 | IF (\1 < 9) && (\2 > 7) 2102 | 2103 | DB %........ 2104 | DB %........ 2105 | DB %........ 2106 | DB %.XXX..X. 2107 | DB %X...XX.. 2108 | DB %X...X... 2109 | DB %.XXX.X. 2110 | DB %........ 2111 | 2112 | DB %..XX.... 2113 | DB %.X..X... 2114 | DB %.X..X... 2115 | DB %.XXXXX.. 2116 | DB %.X....X. 2117 | DB %.X....X. 2118 | DB %XX.XXX.. 2119 | DB %........ 2120 | 2121 | DB %........ 2122 | DB %........ 2123 | DB %XXXXXXX. 2124 | DB %.X....X. 2125 | DB %.X...... 2126 | DB %.X...... 2127 | DB %XXX..... 2128 | DB %........ 2129 | 2130 | DB %........ 2131 | DB %........ 2132 | DB %XXXXXXX. 2133 | DB %.X...X.. 2134 | DB %.X...X.. 2135 | DB %.X...X.. 2136 | DB %XXX.XXX. 2137 | DB %........ 2138 | 2139 | DB %XXXXXXX. 2140 | DB %.X....X. 2141 | DB %..X..... 2142 | DB %...X.... 2143 | DB %..X..... 2144 | DB %.X....X. 2145 | DB %XXXXXXX. 2146 | DB %........ 2147 | 2148 | DB %........ 2149 | DB %........ 2150 | DB %........ 2151 | DB %..XXXXX. 2152 | DB %.X...X.. 2153 | DB %.X...X.. 2154 | DB %..XXX... 2155 | DB %........ 2156 | 2157 | DB %........ 2158 | DB %........ 2159 | DB %XX..XX.. 2160 | DB %.X...X.. 2161 | DB %.X...X.. 2162 | DB %.X...X.. 2163 | DB %.XXXX.X. 2164 | DB %.X...... 2165 | 2166 | DB %........ 2167 | DB %........ 2168 | DB %.XXXXX.. 2169 | DB %...X.... 2170 | DB %...X.... 2171 | DB %...X.... 2172 | DB %...XXX.. 2173 | DB %........ 2174 | 2175 | DB %........ 2176 | DB %...X.... 2177 | DB %.XXXXX.. 2178 | DB %X..X..X. 2179 | DB %X..X..X. 2180 | DB %.XXXXX.. 2181 | DB %...X.... 2182 | DB %........ 2183 | 2184 | DB %........ 2185 | DB %........ 2186 | DB %.XXXXX.. 2187 | DB %X.....X. 2188 | DB %X.XXX.X. 2189 | DB %X.....X. 2190 | DB %.XXXXX.. 2191 | DB %........ 2192 | DB %........ 2193 | 2194 | DB %........ 2195 | DB %........ 2196 | DB %.XXXXX.. 2197 | DB %X.....X. 2198 | DB %X.....X. 2199 | DB %.XX.XX.. 2200 | DB %..X.X... 2201 | DB %XXX.XXX. 2202 | DB %........ 2203 | 2204 | DB %........ 2205 | DB %.XXXXX.. 2206 | DB %..X..... 2207 | DB %..XXX... 2208 | DB %.X...X.. 2209 | DB %.X...X.. 2210 | DB %..XXX... 2211 | DB %........ 2212 | 2213 | DB %........ 2214 | DB %........ 2215 | DB %.XX.XX.. 2216 | DB %X..X..X. 2217 | DB %X..X..X. 2218 | DB %.XX.XX.. 2219 | DB %........ 2220 | DB %........ 2221 | 2222 | DB %........ 2223 | DB %........ 2224 | DB %.X..XX.. 2225 | DB %X..X..X. 2226 | DB %X..X..X. 2227 | DB %.XXXXX.. 2228 | DB %...X.... 2229 | DB %........ 2230 | 2231 | DB %........ 2232 | DB %........ 2233 | DB %..XXXX.. 2234 | DB %.X...... 2235 | DB %..XX.... 2236 | DB %.X...... 2237 | DB %..XXXX.. 2238 | DB %........ 2239 | 2240 | DB %........ 2241 | DB %........ 2242 | DB %..XXXX.. 2243 | DB %.X....X. 2244 | DB %.X....X. 2245 | DB %.X....X. 2246 | DB %.X....X. 2247 | DB %........ 2248 | 2249 | DB %........ 2250 | DB %XXXXXXX. 2251 | DB %........ 2252 | DB %XXXXXXX. 2253 | DB %........ 2254 | DB %XXXXXXX. 2255 | DB %........ 2256 | DB %........ 2257 | 2258 | DB %...X.... 2259 | DB %...X.... 2260 | DB %XXXXXXX. 2261 | DB %...X.... 2262 | DB %...X.... 2263 | DB %XXXXXXX. 2264 | DB %........ 2265 | DB %........ 2266 | 2267 | DB %.X...... 2268 | DB %...X.... 2269 | DB %.....X.. 2270 | DB %...X.... 2271 | DB %.X...... 2272 | DB %XXXXXXX. 2273 | DB %........ 2274 | DB %........ 2275 | 2276 | DB %.....X.. 2277 | DB %...X.... 2278 | DB %.X...... 2279 | DB %...X.... 2280 | DB %.....X.. 2281 | DB %XXXXXXX. 2282 | DB %........ 2283 | DB %........ 2284 | 2285 | DB %....XX.. 2286 | DB %...X.... 2287 | DB %...X.... 2288 | DB %...X.... 2289 | DB %...X.... 2290 | DB %...X.... 2291 | DB %...X.... 2292 | DB %...X.... 2293 | 2294 | DB %...X.... 2295 | DB %...X.... 2296 | DB %...X.... 2297 | DB %...X.... 2298 | DB %...X.... 2299 | DB %...X.... 2300 | DB %...X.... 2301 | DB %.XX..... 2302 | 2303 | DB %........ 2304 | DB %........ 2305 | DB %...X.... 2306 | DB %........ 2307 | DB %XXXXXXX. 2308 | DB %........ 2309 | DB %...X.... 2310 | DB %........ 2311 | 2312 | DB %........ 2313 | DB %.XX...X. 2314 | DB %X..XXX.. 2315 | DB %........ 2316 | DB %.XX...X. 2317 | DB %X..XXX.. 2318 | DB %........ 2319 | DB %........ 2320 | 2321 | DB %..XX.... 2322 | DB %.X..X... 2323 | DB %.X..X... 2324 | DB %..XX.... 2325 | DB %........ 2326 | DB %........ 2327 | DB %........ 2328 | DB %........ 2329 | 2330 | DB %........ 2331 | DB %........ 2332 | DB %........ 2333 | DB %..XX.... 2334 | DB %..XX.... 2335 | DB %........ 2336 | DB %........ 2337 | DB %........ 2338 | 2339 | DB %........ 2340 | DB %........ 2341 | DB %........ 2342 | DB %........ 2343 | DB %....X... 2344 | DB %........ 2345 | DB %........ 2346 | DB %........ 2347 | 2348 | DB %.......X 2349 | DB %......X. 2350 | DB %XXX...X. 2351 | DB %..X..X.. 2352 | DB %...X.X.. 2353 | DB %...XX... 2354 | DB %....X... 2355 | DB %........ 2356 | 2357 | DB %........ 2358 | DB %........ 2359 | DB %.X.XX... 2360 | DB %..X..X.. 2361 | DB %..X..X.. 2362 | DB %........ 2363 | DB %........ 2364 | DB %........ 2365 | 2366 | DB %..XX.... 2367 | DB %.X..X... 2368 | DB %...X.... 2369 | DB %..X..... 2370 | DB %.XXXX... 2371 | DB %........ 2372 | DB %........ 2373 | DB %........ 2374 | 2375 | DB %........ 2376 | DB %........ 2377 | DB %XXXXXXXX 2378 | DB %XXXXXXXX 2379 | DB %XXXXXXXX 2380 | DB %XXXXXXXX 2381 | DB %........ 2382 | DB %........ 2383 | 2384 | DB %........ 2385 | DB %........ 2386 | DB %........ 2387 | DB %........ 2388 | DB %........ 2389 | DB %........ 2390 | DB %........ 2391 | DB %........ 2392 | 2393 | ENDC 2394 | 2395 | POPO 2396 | 2397 | ENDM 2398 | 2399 | ENDC ;IBMPC_INC 2400 | 2401 | --------------------------------------------------------------------------------