OpenCores
URL https://opencores.org/ocsvn/rf6809/rf6809/trunk

Subversion Repositories rf6809

Compare Revisions

  • This comparison shows the changes necessary to convert path
    /rf6809/trunk/software
    from Rev 12 to Rev 13
    Reverse comparison

Rev 12 → Rev 13

/boot/boot_rom.asm
1,24 → 1,37
; ============================================================================
; __
; \\__/ o\ (C) 2013-2022 Robert Finch, Stratford
; \\__/ o\ (C) 2013-2022 Robert Finch, Waterloo
; \ __ / All rights reserved.
; \/_// robfinch<remove>@opencores.org
; ||
;
;
; This source file is free software: you can redistribute it and/or modify
; it under the terms of the GNU Lesser General Public License as published
; by the Free Software Foundation, either version 3 of the License, or
; (at your option) any later version.
; BSD 3-Clause License
; Redistribution and use in source and binary forms, with or without
; modification, are permitted provided that the following conditions are met:
;
; 1. Redistributions of source code must retain the above copyright notice, this
; list of conditions and the following disclaimer.
;
; 2. Redistributions in binary form must reproduce the above copyright notice,
; this list of conditions and the following disclaimer in the documentation
; and/or other materials provided with the distribution.
;
; 3. Neither the name of the copyright holder nor the names of its
; contributors may be used to endorse or promote products derived from
; this software without specific prior written permission.
;
; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
; IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
; DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
; FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
; DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
; SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
; CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
; OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
; OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
;
; This source file is distributed in the hope that it will be useful,
; but WITHOUT ANY WARRANTY; without even the implied warranty of
; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
; GNU General Public License for more details.
;
; You should have received a copy of the GNU General Public License
; along with this program. If not, see <http://www.gnu.org/licenses/>.
;
; ============================================================================
;
CR EQU $0D ;ASCII equates
31,6 → 44,7
CTRLK EQU $0B
CTRLM EQU $0D
CTRLS EQU $13
CTRLT EQU $14
CTRLX EQU $18
XON EQU $11
XOFF EQU $13
81,12 → 95,32
 
COREID EQU $FFFFFFFE0
MSCOUNT EQU $FFFFFFFE4
LEDS EQU $FFFE60000
LEDS EQU $FFFE60001
VIA EQU $FFFE60000
VIA_PA EQU 1
VIA_DDRA EQU 3
VIA_ACR EQU 11
VIA_IFR EQU 13
VIA_IER EQU 14
VIA_T3LL EQU 18
VIA_T3LH EQU 19
VIA_T3CMPL EQU 20
VIA_T3CMPH EQU 21
TEXTSCR EQU $FFFE00000
TEXTREG EQU $FFFE0DF00
TEXT_COLS EQU 0
TEXT_ROWS EQU 1
TEXT_CURPOS EQU 34
ACIA EQU $FFFE30100
ACIA_TX EQU 0
ACIA_RX EQU 0
ACIA_STAT EQU 1
ACIA_CMD EQU 2
ACIA_CTRL EQU 3
ACIA_CTRL2 EQU 11
RTC EQU $FFFE30500 ; I2C
RTCBuf EQU $7FC0
 
KEYBD EQU $FFFE30400
KEYBDCLR EQU $FFFE30402
PIC EQU $FFFE3F000
93,18 → 127,26
SPRITE_CTRL EQU $FFFE10000
SPRITE_EN EQU $3C0
 
OUTSEMA EQU $EF0000
SEMAABS EQU $1000
OSSEMA EQU $EF0010
 
BIOS_SCREENS EQU $17000000 ; $17000000 to $171FFFFF
 
; EhBASIC vars:
;
NmiBase EQU $DC
IrqBase EQU $DF
NmiBase EQU $FF0013
IrqBase EQU $FF0014
 
; The IO focus list is a doubly linked list formed into a ring.
;
IOFocusNdx EQU $100
IOFocusID EQU $100
 
; These variables in global OS storage area
 
IOFocusList EQU $FF0000 ; to $FF000F
IOFocusID EQU $FF0010
IrqSource EQU $FF0011
IRQFlag EQU $FF0012
 
; These variables use direct page access
CursorRow EQU $110
CursorCol EQU $111
115,7 → 157,23
KeyState2 EQU $121
KeyLED EQU $122
KeybdID EQU $124
KeybdBlock EQU $126
kbdHeadRcv EQU $127
kbdTailRcv EQU $128
kbdFifo EQU $40 ; in local RAM
kbdFifoAlias EQU $C00040 ; to $C0007F ; alias for $40 to $7F
SerhZero EQU $130
SerHeadRcv EQU $131
SertZero EQU $132
SerTailRcv EQU $133
SerHeadXmit EQU $136
SerTailXmit EQU $138
SerRcvXon EQU $139
SerRcvXoff EQU $140
SerRcvBuf EQU $BFF000 ; 4kB serial recieve buffer
 
asmbuf EQU $160 ; to $17F
 
QNdx0 EQU $780
QNdx1 EQU QNdx0+2
QNdx2 EQU QNdx1+2
128,12 → 186,10
FreeMsg EQU nMailbox + 2
nMsgBlk EQU FreeMsg + 2
 
IrqSource EQU $79A
 
IRQFlag EQU $7C6
 
CharOutVec EQU $800
CharInVec EQU $804
CmdPromptJI EQU $808
 
; Register save area for monitor
mon_DSAVE EQU $900
147,7 → 203,7
 
mon_numwka EQU $910
mon_r1 EQU $920
mon_r2 EQU $922
mon_r2 EQU $924
 
; The ORG directive must set an address a multiple of 4 in order for the Verilog
; output to work correctly.
203,7 → 259,7
HomeCursorJmp
lbra HomeCursor
 
org $FFE000
org $FFD400
 
; Local RAM test routine
; Checkerboard testing.
217,7 → 273,7
ldd #$AAA555
ramtest1:
std ,y++
cmpy #$C00000
cmpy #$8000
blo ramtest1
; now readback values and compare
ldy #0
225,7 → 281,7
ldd ,y++
cmpd #$AAA555
bne ramerr
cmpy #$C00000
cmpy #$8000
blo ramtest3
lda #2
sta LEDS
241,7 → 297,7
sync
jmp ,u
 
org $FFF000
org $FFE000
FDB Monitor
FDB DumRts ; NEXTCMD
FDB INCH
267,12 → 323,16
;------------------------------------------------------------------------------
 
start:
lda #$FFF ; all cores can do this
sta VIA+VIA_DDRA
lda #$55 ; see if we can at least set LEDs
sta LEDS
lda #1 ; prime OS semaphore
sta OSSEMA+$1000
ldu #st6 ; U = return address
jmp ramtest ; JMP dont JSR
st6:
lds #$3FFF ; boot up stack area
lds #$6FFF ; boot up stack area
lda COREID
cmpa #FIRST_CORE
; beq st8
287,7 → 347,7
bsr Delay3s ; give some time for devices to reset
lda #$AA
sta LEDS
lda #2
lda #FIRST_CORE
sta IOFocusID ; core #2 has focus
sta RunningID
lda #$0CE
296,8 → 356,10
bsr ClearScreen
ldd #DisplayChar
std CharOutVec
ldd #DBGGetKey
ldd #SerialPeekCharDirect
std CharInVec
ldb #24 ; request IO focus
lbsr OSCall
ldb COREID
cmpb #FIRST_CORE
beq init
311,11 → 373,20
; initialize interrupt controller
; first, zero out all the vectors
init:
lbsr rtc_read ; get clock values
ldx #kbdHeadRcv
ldb #32 ; number of bytes to zero out
init1:
clr ,x+
decb
bne init1
lbsr TimerInit
lbsr InitSerial
ldx #128
lda #1 ; set irq(bit0), clear firq (bit1), disable int (bit 6), clear edge sense(bit 7)
ldb #FIRST_CORE ; serving core id
st1:
clr PIC,x ; cause code
clr PIC,x ; cause code
sta PIC+1,x
stb PIC+2,x
leax 4,x
324,7 → 395,12
; lda #4 ; make the timer interrupt edge sensitive
; sta PIC+4 ; reg #4 is the edge sensitivity setting
; sta PIC ; reg #0 is interrupt enable
 
lda #$81 ; make irq edge sensitive
sta PIC+$FD
lda #31 ; enable timer interrupt
; sta PIC+9
ldb #1
stb OUTSEMA+SEMAABS ; set semaphore to 1 available slot
skip_init:
andcc #$EF ; unmask irq
lda #56
419,6 → 495,10
sync
lbra Monitor
 
;------------------------------------------------------------------------------
; Single core sieve.
;------------------------------------------------------------------------------
 
sieve:
lda #'P' ; indicate prime
ldx #0 ; start at first char of screen
441,8 → 521,7
cmpb #4080
blo sieve2
sieve4: ; hang machine
sync
lbra MonitorStart
rts
 
;------------------------------------------------------------------------------
; Three second delay for user convenience and to allow some devices time to
476,12 → 555,22
rts
 
;------------------------------------------------------------------------------
; Parameters:
; b = core id of core to copy
;------------------------------------------------------------------------------
;
CopyVirtualScreenToScreen:
pshs d,x,y,u
bsr GetScreenLocation
; Compute virtual screen location for core passed in accb.
tfr b,a
asla
asla
asla
asla
ora #$C00
clrb
tfr d,x
pshs d
ldy #TEXTSCR
ldu #56*29/2
cv2s1:
491,11 → 580,13
cmpu #0
bne cv2s1
; reset the cursor position in the text controller
ldb CursorRow
puls x
ldb CursorRow,x
lda #56
mul
tfr d,x
ldb CursorCol
tfr d,y
ldb CursorCol,x
tfr y,x
abx
stx TEXTREG+TEXT_CURPOS
puls d,x,y,u,pc
566,7 → 657,7
tfr u,x ; get back count
cs2:
sta ,y+
leax -1,x ; decrement x
dex ; decrement x
bne cs2
cs3:
puls d,x,y,u,pc
588,9 → 679,9
scrup1:
ldd ,x++ ; move 2 characters
std ,u++
leay -1,y
dey
bne scrup1
lda #30
lda #29
bsr BlankLine
puls d,x,y,u,pc
 
724,6 → 815,7
;------------------------------------------------------------------------------
;
DisplayChar:
lbsr SerialPutChar
pshs d,x
cmpb #CR ; carriage return ?
bne dccr
730,7 → 822,7
clr CursorCol ; just set cursor column to zero on a CR
bsr UpdateCursorPos
dcx14:
puls d,x,pc
lbra dcx4
dccr:
cmpb #$91 ; cursor right ?
bne dcx6
792,6 → 884,8
deca
sta CursorCol
bsr CalcScreenLoc
tfr d,x
lda CursorCol
dcx5:
ldb 1,x
stb ,x++
799,9 → 893,9
cmpa #56
blo dcx5
ldb #' '
leax -1,x
dex
stb ,x
puls d,x,dp,pc
bra dcx4
dcx3:
cmpb #LF ; linefeed ?
beq dclf
814,7 → 908,7
; lda CharColor
; sta $2000,x
bsr IncCursorPos
puls d,x,pc
bra dcx4
dclf:
bsr IncCursorRow
dcx4:
864,12 → 958,16
DisplayString:
pshs d,x
tfr d,x
dspj2: ; lock semaphore for access
lda OUTSEMA+1
beq dspj2
dspj1B:
ldb ,x+ ; move string char into acc
beq dsretB ; is it end of string ?
bsr OUTCH ; display character
lbsr OUTCH ; display character
bra dspj1B
dsretB:
clr OUTSEMA+1 ; unlock semaphore
puls d,x,pc
 
DisplayStringCRLF:
876,9 → 974,9
pshs d
bsr DisplayString
ldb #CR
bsr OUTCH
lbsr OUTCH
ldb #LF
bsr OUTCH
lbsr OUTCH
puls d,pc
;
945,14 → 1043,22
cmpb #10
blo DispNyb1
addb #'A'-10
bsr OUTCH
lbsr OUTCH
puls b,pc
DispNyb1
addb #'0'
bsr OUTCH
lbsr OUTCH
puls b,pc
 
;==============================================================================
; Timer
;==============================================================================
 
OPT INCLUDE "d:\cores2022\rf6809\software\boot\timer.asm"
OPT INCLUDE "d:\cores2022\rf6809\software\boot\i2c.asm"
OPT INCLUDE "d:\cores2022\rf6809\software\boot\rtc_driver.asm"
 
;==============================================================================
; Keyboard I/O
;==============================================================================
 
987,6 → 1093,12
KeybdSeek:
rts
 
;==============================================================================
; Serial I/O
;==============================================================================
 
OPT INCLUDE "d:\cores2022\rf6809\software\boot\serial.asm"
 
;------------------------------------------------------------------------------
; Check if there is a keyboard character available. If so return true (<0)
; otherwise return false (0) in accb.
998,8 → 1110,25
;------------------------------------------------------------------------------
;------------------------------------------------------------------------------
INCH:
ldd #-1 ; block if no key available
bra DBGGetKey
pshs b
INCH2:
ldb COREID
cmpb IOFocusID ; if we do not have focus, block
bne INCH2
; ldb #$800 ; block if no key available, get scancode directly
; bra GetKey
; jsr [CharInVec] ; vector is being overwritten somehow
lbsr SerialPeekCharDirect
tsta
bmi INCH1 ; block if no key available
leas 1,s ; get rid of blocking status
rts
INCH1:
puls b ; check blocking status
tstb
bmi INCH ; if blocking, loop
ldd #-1 ; return -1 if no char available
rts
 
INCHE:
bsr INCH
1015,7 → 1144,7
lbsr CRLF
bra INCHEK1
INCHEK2:
bsr DisplayChar
lbsr DisplayChar
INCHEK1:
rts
 
1042,30 → 1171,140
rts
 
;==============================================================================
; Femtiki Operating System.
;==============================================================================
 
OSCallTbl:
fcw 0
fcw 0
fcw 0
fcw 0
fcw 0
fcw 0
fcw 0
fcw 0
fcw 0
fcw 0
fcw 0
fcw 0
fcw 0
fcw 0
fcw 0
fcw 0
fcw 0
fcw 0
fcw 0
fcw 0
fcw 0
fcw 0
fcw ReleaseIOFocus
fcw 0
fcw RequestIOFocus
 
OSCall:
; wait for availability
osc1:
tst OSSEMA+1
beq osc1
aslb
ldx #OSCallTbl
abx
tst ,x
beq oscx
jmp [,x]
oscx:
clr OSSEMA+1
rts
 
RequestIOFocus:
ldb COREID
ldx #IOFocusList
abx
sta ,x
tst IOFocusID
lbne oscx
stb IOFocusID
lbra oscx
 
ReleaseIOFocus:
ldb COREID
ldx #IOFocusList
abx
clr ,x ; clear the request indicator
lbsr CopyScreenToVirtualScreen
cmpb IOFocusID ; are we the one with the focus?
lbne oscx
; We had the focus, so now a new core needs the focus.
; Search the focus list for a requestor. If no requester
; is found, give focus to core #1.
lda #15
riof2:
incb
andb #15
abx
tst ,x
bne riof1
deca
bne riof2
; If no focus is requested by anyone, give to core #1
ldb #1
lda #24
sta ,x
riof1:
stb IOFocusID
lbsr CopyVirtualScreenToScreen
lbra oscx
;==============================================================================
; Disassembler
;==============================================================================
 
OPT include "d:\cores2022\rf6809\software\boot\disassem.asm"
;==============================================================================
; System Monitor
;==============================================================================
;
 
CmdPrompt:
lbsr CRLF
ldb #'$'
lbsr OUTCH
lbra OUTCH
 
msgF09Starting:
fcb "Femtiki F09 Multi-core OS Starting",CR,LF,0
 
MonitorStart:
ldd #msgF09Starting
lbsr DisplayString
ldd #HelpMsg
bsr DisplayString
lbsr DisplayString
ldd #CmdPrompt
std CmdPromptJI
Monitor:
leas $3FFF ; reset stack pointer
leas $6FFF ; reset stack pointer
clrb ; turn off keyboard echo
bsr SetKeyboardEcho
lbsr SetKeyboardEcho
; Reset IO vectors
ldd #SerialPeekCharDirect
std CharInVec
ldd #DisplayChar
std CharOutVec
ldd #CmdPrompt
std CmdPromptJI
; jsr RequestIOFocus
PromptLn:
lbsr CRLF
ldb #'$'
bsr OUTCH
jsr [CmdPromptJI]
 
; Get characters until a CR is keyed
Prompt3:
ldd #-1 ; block until key present
bsr DBGGetKey
lbsr INCH
cmpb #CR
beq Prompt1
bsr OUTCH
lbsr OUTCH
bra Prompt3
 
; Process the screen line that the CR was keyed on
1073,36 → 1312,58
Prompt1:
ldd #$5050
std LEDS
ldb RunningID
cmpb #61
bhi Prompt3
; ldb RunningID
; cmpb #61
; bhi Prompt3
ldd #$5151
std LEDS
clr CursorCol ; go back to the start of the line
bsr CalcScreenLoc ; calc screen memory location
lbsr CalcScreenLoc ; calc screen memory location
tfr d,y
ldd #$5252
std LEDS
skipDollar:
bsr MonGetNonSpace
cmpb #'$'
bne Prompt2 ; skip over '$' prompt character
beq skipDollar ; skip over '$' prompt character
lda #$5353
std LEDS
bsr MonGetNonSpace
 
; Dispatch based on command character
;
Prompt2:
cmpb #'<'
bne PromptHelp
bsr MonGetch
cmpb #'>'
bne Monitor
bsr MonGetch
cmpb #'s'
bne Prompt2a
ldd #SerialPeekCharDirect
std CharInVec
ldd #SerialPutChar
std CharOutVec
bra Monitor
Prompt2a:
cmpb #'c'
bne Monitor
ldd #GetKey
std CharInVec
ldd #DisplayChar
std CharOutVec
bra Monitor
PromptHelp:
cmpb #'?' ; $? - display help
bne PromptC
ldd #HelpMsg
bsr DisplayString
lbsr DisplayString
bra Monitor
PromptC:
cmpb #'C'
bne PromptD
lbsr ClearScreen
bsr HomeCursor
lbsr ClearScreen
lbsr HomeCursor
bra Monitor
PromptD:
cmpb #'D'
1109,7 → 1370,7
bne PromptF
bsr MonGetch
cmpb #'R'
bne Prompt3
bne DumpMemory
bra DumpRegs
PromptF:
cmpb #'F'
1126,13 → 1387,33
lbeq jump_to_code
PromptR:
cmpb #'R'
bne Prompt_s
ldu #Monitor
lbra ramtest
Prompt_s:
cmpb #'s'
bne PromptT
lbsr SerialOutputTest
bra Monitor
PromptT:
cmpb #'T'
bne PromptU
bsr MonGetch
cmpb #'I'
bne Monitor
lbsr ramtest
bsr MonGetch
cmpb #'R'
bne Monitor
lbsr rtc_read
bra Monitor
PromptU:
cmpb #'U'
bne Monitor
lbra disassem
 
MonGetch:
ldb ,y
leay 1,y
iny
rts
 
MonGetNonSpace:
1139,8 → 1420,6
bsr MonGetCh
cmpb #' '
beq MonGetNonSpace
cmpb #9 ; tab
beq MonGetNonSpace
rts
 
;------------------------------------------------------------------------------
1154,7 → 1433,7
bsr MonGetch
cmpb #' '
beq ignBlanks1
leay -1,y
dey
rts
 
;------------------------------------------------------------------------------
1195,18 → 1474,20
rts
 
;------------------------------------------------------------------------------
; Get a hexidecimal number. Maximum of nine digits.
; Y = text pointer (updated)
; D = number of digits
; mon_numwka contains number
; Get a hexidecimal number. Maximum of twelve digits.
;
; Modifies:
; Y = text pointer (updated)
; D = number of digits
; mon_numwka contains number
;------------------------------------------------------------------------------
;
GetHexNumber:
clrd
std mon_numwka
std mon_numwka ; zero out work area
std mon_numwka+2
pshs x
ldx #0 ; max 9 eight digits
ldx #0 ; max 12 eight digits
gthxn2:
bsr MonGetch
bsr AsciiToHexNybble
1220,7 → 1501,7
orb mon_numwka+3
stb mon_numwka+3
inx
cmpx #9
cmpx #12
blo gthxn2
gthxn1:
tfr x,d
1256,24 → 1537,24
;
AsciiToHexNybble:
cmpb #'0'
bcc gthx3
cmpb #'9'+1
bcs gthx5
blo gthx3
cmpb #'9'
bhi gthx5
subb #'0'
rts
gthx5:
cmpb #'A'
bcc gthx3
cmpb #'F'+1
bcs gthx6
blo gthx3
cmpb #'F'
bhi gthx6
subb #'A'
addb #10
rts
gthx6:
cmpb #'a'
bcc gthx3
cmpb #'z'+1
bcs gthx3
blo gthx3
cmpb #'z'
bhi gthx3
subb #'a'
addb #10
rts
1315,7 → 1596,7
; db "L = Load sector",CR,LF
; db "W = Write sector",CR,LF
fcb "DR = Dump registers",CR,LF
; db "D = Dump memory",CR,LF
fcb "D = Dump memory",CR,LF
; db "F = Fill memory",CR,LF
; db "FL = Dump I/O Focus List",CR,LF
fcb "FIG = start FIG Forth",CR,LF
1327,15 → 1608,16
; db "R[n] = Set register value",CR,LF
; db "r = random lines - test bitmap",CR,LF
; db "e = ethernet test",CR,LF
fcb "s = serial output test",CR,LF
; db "T = Dump task list",CR,LF
; db "TO = Dump timeout list",CR,LF
; db "TI = display date/time",CR,LF
fcb "TI = display date/time",CR,LF
; db "TEMP = display temperature",CR,LF
; db "P = Piano",CR,LF,0
fcb 0
 
msgRegHeadings
fcb CR,LF," D/AB X Y U S PC DP CCR",CR,LF,0
fcb CR,LF," D/AB X Y U S PC DP CCR",CR,LF,0
 
nHEX4:
jsr HEX4
1343,12 → 1625,81
 
nXBLANK:
ldb #' '
bra OUTCH
lbra OUTCH
 
DumpRegs
ldx #msgRegHeadings
ldd #msgRegHeadings>>16
jsr DisplayStringDX
;------------------------------------------------------------------------------
; Dump Memory
;
; Usage:
; $D FFFC12 8
;
; Dump formatted to look like:
; :FFFC12 012 012 012 012 555 666 777 888
;
;------------------------------------------------------------------------------
 
DumpMemory:
bsr GetTwoParams
ldy #0
ldy mon_r1+2
dmpm2:
lbsr CRLF
ldb #':'
lbsr OUTCH
tfr y,d
;addd mon_r1+2 ; output the address
lbsr DispWordAsHex
ldb #' '
lbsr OUTCH
ldx #8 ; number of bytes to display
dmpm1:
; ldb far [mon_r1+1],y
;ldb [mon_r1+2],y
ldb ,y
iny
lbsr DispByteAsHex ; display byte
ldb #' ' ; followed by a space
lbsr OUTCH
clrb
clra
lbsr INCH
cmpb #CTRLC
beq dmpm3
dex
bne dmpm1
; Now output ascii
ldb #' '
lbsr OUTCH
ldx #8 ; 8 chars to output
leay -8,y ; backup pointer
dmpm5:
; ldb far [mon_r1+1],y ; get the char
; ldb [mon_r1+2],y ; get the char
ldb ,y
cmpb #$20 ; is it a control char?
bhs dmpm4
ldb #'.'
dmpm4:
lbsr OUTCH
iny
dex
bne dmpm5
cmpy mon_r2+2
blo dmpm2
dmpm3:
lbsr CRLF
lbra Monitor
 
;------------------------------------------------------------------------------
; Dump Registers
;
; Usage:
; $DR
;------------------------------------------------------------------------------
 
DumpRegs:
ldd #msgRegHeadings
lbsr DisplayString
bsr nXBLANK
ldd mon_DSAVE
bsr nHEX4
1365,8 → 1716,8
ldd mon_SSAVE
bsr nHEX4
bsr nXBLANK
ldd mon_PCSAVE
bsr nHEX4
ldb mon_PCSAVE+1
lbsr DispByteAsHex
ldd mon_PCSAVE+2
bsr nHEX4
bsr nXBLANK
1374,11 → 1725,19
jsr HEX2
bsr nXBLANK
lda mon_CCRSAVE
jsr HEX2
lbsr HEX2
bsr nXBLANK
jmp Monitor
lbra Monitor
 
;------------------------------------------------------------------------------
; Jump to code
;
; Registers are loaded with values from the monitor register save area before
; the code is jumped to.
;
; J <address>
;------------------------------------------------------------------------------
 
jump_to_code:
bsr GetHexNumber
sei
1385,12 → 1744,12
lds mon_SSAVE
ldd #<jtc_exit
pshs d
ldd #>jtc_exit
ldb #>jtc_exit
pshs b
ldd mon_numwka+2
pshs d
ldd mon_numwka
pshs d
ldb mon_numwka+1
pshs b
ldd mon_USAVE
pshs d
ldd mon_YSAVE
1405,19 → 1764,28
pshs a
puls far ccr,d,dpr,x,y,u,pc
jtc_exit:
pshs ccr
std mon_DSAVE
sts >mon_SSAVE ; need to use extended addressing, no direct page setting
leas $6FFF ; reset stack to system area, dont modify flags register!
pshs ccr ; now the stack can be used
pshs a ; save acca register so we can use it
tfr dpr,a ; a = outgoing dpr value
sta >mon_DPRSAVE ; force extended addressing mode usage here dpr is not set
clra ; dpg register must be set to zero before values are
tfr a,dpr ; saved in the monitor register save area.
puls a ; get back acca
std mon_DSAVE ; save regsters, can use direct addressing now
stx mon_XSAVE
sty mon_YSAVE
stu mon_USAVE
tfr dpr,a
sta mon_DPRSAVE
puls a
sta mon_CCRSAVE
sts mon_SSAVE
lds #$3FFF
puls a ; get back ccr
sta mon_CCRSAVE ; and save it too
; Reset vectors in case they got toasted.
ldd #SerialPeekCharDirect
std CharInVec
ldd #DisplayChar
std CharOutVec
; todo set according to coreid
jmp DumpRegs
lbra DumpRegs ; now go do a register dump
 
;------------------------------------------------------------------------------
;------------------------------------------------------------------------------
1432,10 → 1800,10
stu mon_USAVE
tfr dpr,a
sta mon_DPRSAVE
puls a
sta mon_PCSAVE
puls D
std mon_PCSAVE
puls D
std mon_PCSAVE+2
std mon_PCSAVE+1
sts mon_SSAVE
lds #$3FFF
cli
1443,10 → 1811,10
swi3_exit:
sei
lds mon_SSAVE
ldd mon_PCSAVE+2
ldd mon_PCSAVE+1
pshs d
ldd mon_PCSAVE
pshs d
lda mon_PCSAVE
pshs a
ldu mon_USAVE
ldy mon_YSAVE
ldx mon_XSAVE
1463,12 → 1831,26
 
;------------------------------------------------------------------------------
;------------------------------------------------------------------------------
firq_rout:
rti
 
irq_rout:
; lbsr SerialIRQ ; check for recieved character
; lbsr TimerIRQ
 
; Reset the edge sense circuit in the PIC
lda #2 ; Timer is IRQ #2
sta PIC+6 ; register 6 is edge sense reset reg
lda #31 ; Timer is IRQ #31
sta IrqSource ; stuff a byte indicating the IRQ source for PEEK()
sta PIC+16 ; register 16 is edge sense reset reg
lda VIA+VIA_IFR
bpl notTimerIRQ2
bita #$800
beq notTimerIRQ2
clr VIA+VIA_T3LL
clr VIA+VIA_T3LH
inc $E00037 ; update timer IRQ screen flag
notTimerIRQ2:
 
sta IrqSource ; stuff a byte indicating the IRQ source for PEEK()
lda IrqBase ; get the IRQ flag byte
lsra
ora IrqBase
1475,34 → 1857,34
anda #$E0
sta IrqBase
 
inc TEXTSCR+110 ; update IRQ live indicator on screen
; inc TEXTSCR+54 ; update IRQ live indicator on screen
; flash the cursor
; only bother to flash the cursor for the task with the IO focus.
lda COREID
cmpa IOFocusID
bne tr1a
lda CursorFlash ; test if we want a flashing cursor
beq tr1a
lbsr CalcScreenLoc ; compute cursor location in memory
tfr d,y
lda $2000,y ; get color code $2000 higher in memory
ldb IRQFlag ; get counter
lsrb
lsra
lsra
lsra
lsra
lsrb
rola
lsrb
rola
lsrb
rola
lsrb
rola
sta $E00000,y ; store the color code back to memory
tr1a
; lda COREID
; cmpa IOFocusID
; bne tr1a
; lda CursorFlash ; test if we want a flashing cursor
; beq tr1a
; lbsr CalcScreenLoc ; compute cursor location in memory
; tfr d,y
; lda $2000,y ; get color code $2000 higher in memory
; ldb IRQFlag ; get counter
; lsrb
; lsra
; lsra
; lsra
; lsra
; lsrb
; rola
; lsrb
; rola
; lsrb
; rola
; lsrb
; rola
; sta $E00000,y ; store the color code back to memory
tr1a:
rti
 
;------------------------------------------------------------------------------
1511,17 → 1893,21
ldb COREID
lda #'I'
ldx #TEXTSCR+40
abx
sta ,x
sta b,x
rti_insn:
rti
 
; Special Register Area
org $FFFFE0
 
; Interrupt vector table
 
org $FFFFF0
nop
nop
fcw swi3_rout
 
org $FFFFF8
fcw irq_rout
fcw rti_insn ; reserved
fcw swi3_rout ; SWI3
fcw rti_insn ; SWI2
fcw firq_rout ; FIRQ
fcw irq_rout ; IRQ
fcw start ; SWI
fcw nmi_rout ; NMI
fcw start ; RST
/boot/boot_rom.lst
1,25 → 1,38
0 error(s), 62 warning(s) unlisted in pass 1
0 error(s), 1406 warning(s) unlisted in pass 1
; ============================================================================
; __
; \\__/ o\ (C) 2013-2022 Robert Finch, Stratford
; \\__/ o\ (C) 2013-2022 Robert Finch, Waterloo
; \ __ / All rights reserved.
; \/_// robfinch<remove>@opencores.org
; ||
;
;
; This source file is free software: you can redistribute it and/or modify
; it under the terms of the GNU Lesser General Public License as published
; by the Free Software Foundation, either version 3 of the License, or
; (at your option) any later version.
; BSD 3-Clause License
; Redistribution and use in source and binary forms, with or without
; modification, are permitted provided that the following conditions are met:
;
; 1. Redistributions of source code must retain the above copyright notice, this
; list of conditions and the following disclaimer.
;
; 2. Redistributions in binary form must reproduce the above copyright notice,
; this list of conditions and the following disclaimer in the documentation
; and/or other materials provided with the distribution.
;
; 3. Neither the name of the copyright holder nor the names of its
; contributors may be used to endorse or promote products derived from
; this software without specific prior written permission.
;
; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
; IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
; DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
; FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
; DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
; SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
; CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
; OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
; OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
;
; This source file is distributed in the hope that it will be useful,
; but WITHOUT ANY WARRANTY; without even the implied warranty of
; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
; GNU General Public License for more details.
;
; You should have received a copy of the GNU General Public License
; along with this program. If not, see <http://www.gnu.org/licenses/>.
;
; ============================================================================
;
CR EQU $0D ;ASCII equates
32,6 → 45,7
CTRLK EQU $0B
CTRLM EQU $0D
CTRLS EQU $13
CTRLT EQU $14
CTRLX EQU $18
XON EQU $11
XOFF EQU $13
82,12 → 96,32
COREID EQU $FFFFFFFE0
MSCOUNT EQU $FFFFFFFE4
LEDS EQU $FFFE60000
LEDS EQU $FFFE60001
VIA EQU $FFFE60000
VIA_PA EQU 1
VIA_DDRA EQU 3
VIA_ACR EQU 11
VIA_IFR EQU 13
VIA_IER EQU 14
VIA_T3LL EQU 18
VIA_T3LH EQU 19
VIA_T3CMPL EQU 20
VIA_T3CMPH EQU 21
TEXTSCR EQU $FFFE00000
TEXTREG EQU $FFFE0DF00
TEXT_COLS EQU 0
TEXT_ROWS EQU 1
TEXT_CURPOS EQU 34
ACIA EQU $FFFE30100
ACIA_TX EQU 0
ACIA_RX EQU 0
ACIA_STAT EQU 1
ACIA_CMD EQU 2
ACIA_CTRL EQU 3
ACIA_CTRL2 EQU 11
RTC EQU $FFFE30500 ; I2C
RTCBuf EQU $7FC0
KEYBD EQU $FFFE30400
KEYBDCLR EQU $FFFE30402
PIC EQU $FFFE3F000
94,18 → 128,26
SPRITE_CTRL EQU $FFFE10000
SPRITE_EN EQU $3C0
OUTSEMA EQU $EF0000
SEMAABS EQU $1000
OSSEMA EQU $EF0010
BIOS_SCREENS EQU $17000000 ; $17000000 to $171FFFFF
; EhBASIC vars:
;
NmiBase EQU $DC
IrqBase EQU $DF
NmiBase EQU $FF0013
IrqBase EQU $FF0014
; The IO focus list is a doubly linked list formed into a ring.
;
IOFocusNdx EQU $100
IOFocusID EQU $100
; These variables in global OS storage area
IOFocusList EQU $FF0000 ; to $FF000F
IOFocusID EQU $FF0010
IrqSource EQU $FF0011
IRQFlag EQU $FF0012
; These variables use direct page access
CursorRow EQU $110
CursorCol EQU $111
116,7 → 158,23
KeyState2 EQU $121
KeyLED EQU $122
KeybdID EQU $124
KeybdBlock EQU $126
kbdHeadRcv EQU $127
kbdTailRcv EQU $128
kbdFifo EQU $40 ; in local RAM
kbdFifoAlias EQU $C00040 ; to $C0007F ; alias for $40 to $7F
SerhZero EQU $130
SerHeadRcv EQU $131
SertZero EQU $132
SerTailRcv EQU $133
SerHeadXmit EQU $136
SerTailXmit EQU $138
SerRcvXon EQU $139
SerRcvXoff EQU $140
SerRcvBuf EQU $BFF000 ; 4kB serial recieve buffer
asmbuf EQU $160 ; to $17F
QNdx0 EQU $780
QNdx1 EQU QNdx0+2
QNdx2 EQU QNdx1+2
129,12 → 187,10
FreeMsg EQU nMailbox + 2
nMsgBlk EQU FreeMsg + 2
IrqSource EQU $79A
IRQFlag EQU $7C6
CharOutVec EQU $800
CharInVec EQU $804
CmdPromptJI EQU $808
; Register save area for monitor
mon_DSAVE EQU $900
148,7 → 204,7
mon_numwka EQU $910
mon_r1 EQU $920
mon_r2 EQU $922
mon_r2 EQU $924
; The ORG directive must set an address a multiple of 4 in order for the Verilog
; output to work correctly.
159,7 → 215,7
00FFD0AE 012 nop
XBLANK
00FFD0AF 0C6020 ldb #' '
00FFD0B1 0170028C8 lbsr OUTCH
00FFD0B1 017001C5E lbsr OUTCH
00FFD0B4 039 rts
org $FFD0D0
168,9 → 224,9
CRLF
CRLF1:
00FFD0D2 0C600D ldb #CR
00FFD0D4 0170028A5 lbsr OUTCH
00FFD0D4 017001C3B lbsr OUTCH
00FFD0D7 0C600A ldb #LF
00FFD0D9 0170028A0 lbsr OUTCH
00FFD0D9 017001C36 lbsr OUTCH
00FFD0DC 039 rts
org $FFD0F0
184,7 → 240,7
org $FFD2C0
00FFD2C0 012 nop
LETTER
00FFD2C1 0170026B8 lbsr OUTCH
00FFD2C1 017001A4E lbsr OUTCH
00FFD2C4 039 rts
org $FFD2CC
191,20 → 247,20
00FFD2CC 012 nop
00FFD2CD 012 nop
HEX2
00FFD2CE 0170020CC lbsr DispByteAsHex
00FFD2CE 017001125 lbsr DispByteAsHex
00FFD2D1 039 rts
HEX4
00FFD2D2 0170020BF lbsr DispWordAsHex
00FFD2D2 017001118 lbsr DispWordAsHex
00FFD2D5 039 rts
org $FFD300
ClearScreenJmp
00FFD300 016001ECD lbra ClearScreen
00FFD300 016000F0E lbra ClearScreen
org $FFD308
HomeCursorJmp
00FFD308 016001F36 lbra HomeCursor
00FFD308 016000F79 lbra HomeCursor
org $FFE000
org $FFD400
; Local RAM test routine
; Checkerboard testing.
212,70 → 268,74
; Does not use any RAM including no stack
ramtest:
00FFE000 18E000000 ldy #0
00FFE003 086001 lda #1
00FFE005 0150B7FFFE60000 sta LEDS
00FFE00A 0CCAAA555 ldd #$AAA555
00FFD400 18E000000 ldy #0
00FFD403 086001 lda #1
00FFD405 0150B7FFFE60001 sta LEDS
00FFD40A 0CCAAA555 ldd #$AAA555
ramtest1:
00FFE00D 0EDA01 std ,y++
00FFE00F 18CC00000 cmpy #$C00000
00FFE012 025FF9 blo ramtest1
00FFD40D 0EDA01 std ,y++
00FFD40F 18C008000 cmpy #$8000
00FFD412 025FF9 blo ramtest1
; now readback values and compare
00FFE014 18E000000 ldy #0
00FFD414 18E000000 ldy #0
ramtest3:
00FFE017 0ECA01 ldd ,y++
00FFE019 183AAA555 cmpd #$AAA555
00FFE01C 02600E bne ramerr
00FFE01E 18CC00000 cmpy #$C00000
00FFE021 025FF4 blo ramtest3
00FFE023 086002 lda #2
00FFE025 0150B7FFFE60000 sta LEDS
00FFE02A 06EC04 jmp ,u
00FFD417 0ECA01 ldd ,y++
00FFD419 183AAA555 cmpd #$AAA555
00FFD41C 02600E bne ramerr
00FFD41E 18C008000 cmpy #$8000
00FFD421 025FF4 blo ramtest3
00FFD423 086002 lda #2
00FFD425 0150B7FFFE60001 sta LEDS
00FFD42A 06EC04 jmp ,u
ramerr:
00FFE02C 086080 lda #$80
00FFE02E 0150B7FFFE60000 sta LEDS
00FFE033 08EE00000 ldx #TEXTSCR
00FFE036 0150F6FFFFFFFE0 ldb COREID
00FFE03B 03A abx
00FFE03C 086046 lda #'F'
00FFE03E 0A7804 sta ,x
00FFE040 013 sync
00FFE041 06EC04 jmp ,u
00FFD42C 086080 lda #$80
00FFD42E 0150B7FFFE60001 sta LEDS
00FFD433 08EE00000 ldx #TEXTSCR
00FFD436 0150F6FFFFFFFE0 ldb COREID
00FFD43B 03A abx
00FFD43C 086046 lda #'F'
00FFD43E 0A7804 sta ,x
00FFD440 013 sync
00FFD441 06EC04 jmp ,u
org $FFF000
00FFF000 FFF996 FDB Monitor
00FFF002 FFF022 FDB DumRts ; NEXTCMD
00FFF004 FFF95E FDB INCH
00FFF006 FFF963 FDB INCHE
00FFF008 FFF967 FDB INCHEK
00FFF00A FFF97C FDB OUTCH
00FFF00C FFF381 FDB PDATA
00FFF00E FFF374 FDB PCRLF
00FFF010 FFF370 FDB PSTRNG
00FFF012 FFF022 FDB DumRts ; LRA
00FFF014 FFF022 FDB DumRts
00FFF016 FFF022 FDB DumRts
00FFF018 FFF022 FDB DumRts
00FFF01A FFF022 FDB DumRts ; VINIZ
00FFF01C FFF29B FDB DisplayChar ; VOUTCH
00FFF01E FFF022 FDB DumRts ; ACINIZ
00FFF020 FFF022 FDB DumRts ; AOUTCH
org $FFE000
00FFE000 FFF8AC FDB Monitor
00FFE002 FFE022 FDB DumRts ; NEXTCMD
00FFE004 FFECDA FDB INCH
00FFE006 FFECF8 FDB INCHE
00FFE008 FFECFC FDB INCHEK
00FFE00A FFED12 FDB OUTCH
00FFE00C FFE3DA FDB PDATA
00FFE00E FFE3CD FDB PCRLF
00FFE010 FFE3C9 FDB PSTRNG
00FFE012 FFE022 FDB DumRts ; LRA
00FFE014 FFE022 FDB DumRts
00FFE016 FFE022 FDB DumRts
00FFE018 FFE022 FDB DumRts
00FFE01A FFE022 FDB DumRts ; VINIZ
00FFE01C FFE2E1 FDB DisplayChar ; VOUTCH
00FFE01E FFE022 FDB DumRts ; ACINIZ
00FFE020 FFE022 FDB DumRts ; AOUTCH
DumRts:
00FFF022 039 rts
00FFE022 039 rts
;------------------------------------------------------------------------------
;------------------------------------------------------------------------------
start:
00FFF023 086055 lda #$55 ; see if we can at least set LEDs
00FFF025 0150B7FFFE60000 sta LEDS
00FFF02A 0CEFFF030 ldu #st6 ; U = return address
00FFF02D 07EFFE000 jmp ramtest ; JMP dont JSR
00FFE023 086FFF lda #$FFF ; all cores can do this
00FFE025 0150B7FFFE60003 sta VIA+VIA_DDRA
00FFE02A 086055 lda #$55 ; see if we can at least set LEDs
00FFE02C 0150B7FFFE60001 sta LEDS
00FFE031 086001 lda #1 ; prime OS semaphore
00FFE033 0B7EF1010 sta OSSEMA+$1000
00FFE036 0CEFFE03C ldu #st6 ; U = return address
00FFE039 07EFFD400 jmp ramtest ; JMP dont JSR
st6:
00FFF030 1CE003FFF lds #$3FFF ; boot up stack area
00FFF033 0150B6FFFFFFFE0 lda COREID
00FFF038 081001 cmpa #FIRST_CORE
00FFE03C 1CE006FFF lds #$6FFF ; boot up stack area
00FFE03F 0150B6FFFFFFFE0 lda COREID
00FFE044 081001 cmpa #FIRST_CORE
; beq st8
; sync ; halt cores other than 2
st8:
285,73 → 345,89
; tfr d,x
; jmp ,x ; jump to the BIOS now in local RAM
st7:
00FFF03A 08D11F bsr Delay3s ; give some time for devices to reset
00FFF03C 0860AA lda #$AA
00FFF03E 0150B7FFFE60000 sta LEDS
00FFF043 086002 lda #2
00FFF045 097100 sta IOFocusID ; core #2 has focus
00FFF047 0B7800000 sta RunningID
00FFF04A 0860CE lda #$0CE
00FFF04C 097113 sta ScreenColor
00FFF04E 097112 sta CharColor
00FFF050 08D17E bsr ClearScreen
00FFF052 0CCFFF29B ldd #DisplayChar
00FFF055 0DD800 std CharOutVec
00FFF057 0CCFFF83B ldd #DBGGetKey
00FFF05A 0DD804 std CharInVec
00FFF05C 0150F6FFFFFFFE0 ldb COREID
00FFF061 0C1001 cmpb #FIRST_CORE
00FFF063 02700D beq init
00FFF065 020025 bra skip_init
00FFF067 02008D bra multi_sieve
00FFE046 08D145 bsr Delay3s ; give some time for devices to reset
00FFE048 0860AA lda #$AA
00FFE04A 0150B7FFFE60001 sta LEDS
00FFE04F 086001 lda #FIRST_CORE
00FFE051 0B7FF0010 sta IOFocusID ; core #2 has focus
00FFE054 0B7800000 sta RunningID
00FFE057 0860CE lda #$0CE
00FFE059 097113 sta ScreenColor
00FFE05B 097112 sta CharColor
00FFE05D 08D1B2 bsr ClearScreen
00FFE05F 0CCFFE2E1 ldd #DisplayChar
00FFE062 0FD000800 std CharOutVec
00FFE065 0CCFFEBE4 ldd #SerialPeekCharDirect
00FFE068 0FD000804 std CharInVec
00FFE06B 0C6018 ldb #24 ; request IO focus
00FFE06D 017000CE9 lbsr OSCall
00FFE070 0150F6FFFFFFFE0 ldb COREID
00FFE075 0C1001 cmpb #FIRST_CORE
00FFE077 02700D beq init
00FFE079 020046 bra skip_init
00FFE07B 0200AE bra multi_sieve
st3:
00FFF069 0860FF lda #$FF
00FFF06B 0150B7FFFE60000 sta LEDS
00FFF070 020FF7 bra st3
00FFE07D 0860FF lda #$FF
00FFE07F 0150B7FFFE60001 sta LEDS
00FFE084 020FF7 bra st3
; initialize interrupt controller
; first, zero out all the vectors
init:
00FFF072 08E000080 ldx #128
00FFF075 086001 lda #1 ; set irq(bit0), clear firq (bit1), disable int (bit 6), clear edge sense(bit 7)
00FFF077 0C6001 ldb #FIRST_CORE ; serving core id
00FFE086 01700042A lbsr rtc_read ; get clock values
00FFE089 08E000127 ldx #kbdHeadRcv
00FFE08C 0C6020 ldb #32 ; number of bytes to zero out
init1:
00FFE08E 06F800 clr ,x+
00FFE090 05A decb
00FFE091 026FFB bne init1
00FFE093 01700038E lbsr TimerInit
00FFE096 017000AD6 lbsr InitSerial
00FFE099 08E000080 ldx #128
00FFE09C 086001 lda #1 ; set irq(bit0), clear firq (bit1), disable int (bit 6), clear edge sense(bit 7)
00FFE09E 0C6001 ldb #FIRST_CORE ; serving core id
st1:
00FFF079 06F809E3F000 clr PIC,x ; cause code
00FFF07D 0A7809E3F001 sta PIC+1,x
00FFF081 0E7809E3F002 stb PIC+2,x
00FFF085 030004 leax 4,x
00FFF087 08C000100 cmpx #256
00FFF08A 025FED blo st1
00FFE0A0 06F809E3F000 clr PIC,x ; cause code
00FFE0A4 0A7809E3F001 sta PIC+1,x
00FFE0A8 0E7809E3F002 stb PIC+2,x
00FFE0AC 030004 leax 4,x
00FFE0AE 08C000100 cmpx #256
00FFE0B1 025FED blo st1
; lda #4 ; make the timer interrupt edge sensitive
; sta PIC+4 ; reg #4 is the edge sensitivity setting
; sta PIC ; reg #0 is interrupt enable
00FFE0B3 086081 lda #$81 ; make irq edge sensitive
00FFE0B5 0150B7FFFE3F0FD sta PIC+$FD
00FFE0BA 08601F lda #31 ; enable timer interrupt
; sta PIC+9
00FFE0BC 0C6001 ldb #1
00FFE0BE 0F7EF1000 stb OUTSEMA+SEMAABS ; set semaphore to 1 available slot
skip_init:
00FFF08C 01C0EF andcc #$EF ; unmask irq
00FFF08E 086038 lda #56
00FFF090 0150B7FFFE0DF00 sta TEXTREG+TEXT_COLS
00FFF095 08601D lda #29
00FFF097 0150B7FFFE0DF01 sta TEXTREG+TEXT_ROWS
00FFF09C 08D132 bsr ClearScreen
00FFF09E 08D1A1 bsr HomeCursor
00FFF0A0 086005 lda #5
00FFF0A2 0150B7FFFE60000 sta LEDS
00FFF0A7 0CCFFF0BF ldd #msgStartup
00FFF0AA 08D2A8 bsr DisplayString
00FFF0AC 08E000000 ldx #0
00FFF0AF 0CC000000 ldd #0
00FFF0B2 0170008D1 lbsr ShowSprites
00FFF0B5 017000708 lbsr KeybdInit
00FFF0B8 0DC124 ldd KeybdID
00FFF0BA 08D2D8 bsr DispWordAsHex
00FFF0BC 07EFFF991 jmp MonitorStart
00FFE0C1 01C0EF andcc #$EF ; unmask irq
00FFE0C3 086038 lda #56
00FFE0C5 0150B7FFFE0DF00 sta TEXTREG+TEXT_COLS
00FFE0CA 08601D lda #29
00FFE0CC 0150B7FFFE0DF01 sta TEXTREG+TEXT_ROWS
00FFE0D1 08D13E bsr ClearScreen
00FFE0D3 08D1AF bsr HomeCursor
00FFE0D5 086005 lda #5
00FFE0D7 0150B7FFFE60001 sta LEDS
00FFE0DC 0CCFFE0F4 ldd #msgStartup
00FFE0DF 08D2C1 bsr DisplayString
00FFE0E1 08E000000 ldx #0
00FFE0E4 0CC000000 ldd #0
00FFE0E7 017000C32 lbsr ShowSprites
00FFE0EA 017000853 lbsr KeybdInit
00FFE0ED 0DC124 ldd KeybdID
00FFE0EF 08D2FC bsr DispWordAsHex
00FFE0F1 07EFFF89A jmp MonitorStart
msgStartup
00FFF0BF 072066036038030039020 fcb "rf6809 12-bit System Starting.",CR,LF,0
00FFF0C6 03103202D062069074020
00FFF0CD 05307907307406506D020
00FFF0D4 05307406107207406906E
00FFF0DB 06702E00D00A000
00FFE0F4 072066036038030039020 fcb "rf6809 12-bit System Starting.",CR,LF,0
00FFE0FB 03103202D062069074020
00FFE102 05307907307406506D020
00FFE109 05307406107207406906E
00FFE110 06702E00D00A000
;------------------------------------------------------------------------------
; The checkpoint register must be cleared within 1 second or a NMI interrupt
363,8 → 439,8
;------------------------------------------------------------------------------
checkpoint:
00FFF0E0 01507FFFFFFFFE1 clr $FFFFFFFE1 ; writing any value will do
00FFF0E5 039 rts
00FFE115 01507FFFFFFFFE1 clr $FFFFFFFE1 ; writing any value will do
00FFE11A 039 rts
;------------------------------------------------------------------------------
; Copy the system ROM to local RAM
377,14 → 453,14
;------------------------------------------------------------------------------
romToRam:
00FFF0E6 08EFFC000 ldx #$FFC000
00FFF0E9 18E00C000 ldy #$00C000
00FFE11B 08EFFC000 ldx #$FFC000
00FFE11E 18E00C000 ldy #$00C000
romToRam1:
00FFF0EC 0EC801 ldd ,x++
00FFF0EE 0EDA01 std ,y++
00FFF0F0 08C000000 cmpx #0
00FFF0F3 026FF7 bne romToRam1
00FFF0F5 039 rts
00FFE121 0EC801 ldd ,x++
00FFE123 0EDA01 std ,y++
00FFE125 08C000000 cmpx #0
00FFE128 026FF7 bne romToRam1
00FFE12A 039 rts
;------------------------------------------------------------------------------
; Multi-core sieve program.
395,61 → 471,64
; core number minus two.
;
multi_sieve:
00FFF0F6 086050 lda #'P' ; indicate prime
00FFF0F8 0150F6FFFFFFFE0 ldb COREID ; find out which core we are
00FFF0FD 0C0001 subb #FIRST_CORE
00FFF0FF 08E000000 ldx #0 ; start at first char of screen
00FFF102 03A abx
00FFE12B 086050 lda #'P' ; indicate prime
00FFE12D 0150F6FFFFFFFE0 ldb COREID ; find out which core we are
00FFE132 0C0001 subb #FIRST_CORE
00FFE134 08E000000 ldx #0 ; start at first char of screen
00FFE137 03A abx
multi_sieve3:
00FFF103 0A7809E00000 sta TEXTSCR,x ; store 'P'
00FFF107 030008 leax 8,x ; advance to next position
00FFF109 08C000FFF cmpx #4095
00FFF10C 025FF5 blo multi_sieve3
00FFF10E 0BDFFF0E0 jsr checkpoint
00FFE138 0A7809E00000 sta TEXTSCR,x ; store 'P'
00FFE13C 030008 leax 8,x ; advance to next position
00FFE13E 08C000FFF cmpx #4095
00FFE141 025FF5 blo multi_sieve3
00FFE143 0BDFFE115 jsr checkpoint
*** warning 1: Long branch within short branch range could be optimized
00FFF111 0CB002 addb #2 ; start sieve at 2 (core id)
00FFF113 08604E lda #'N' ; flag position value of 'N' for non-prime
00FFE146 0CB002 addb #2 ; start sieve at 2 (core id)
00FFE148 08604E lda #'N' ; flag position value of 'N' for non-prime
multi_sieve2:
00FFF115 08E000000 ldx #0
00FFF118 03A abx ; skip the first position - might be prime
00FFE14A 08E000000 ldx #0
00FFE14D 03A abx ; skip the first position - might be prime
multi_sieve1:
00FFF119 03A abx ; increment
00FFF11A 0A7809E00000 sta TEXTSCR,x
00FFF11E 08C000FFF cmpx #4095
00FFF121 025FF6 blo multi_sieve1
00FFF123 0BDFFF0E0 jsr checkpoint
00FFE14E 03A abx ; increment
00FFE14F 0A7809E00000 sta TEXTSCR,x
00FFE153 08C000FFF cmpx #4095
00FFE156 025FF6 blo multi_sieve1
00FFE158 0BDFFE115 jsr checkpoint
*** warning 1: Long branch within short branch range could be optimized
00FFF126 0CB008 addb #8 ; number of cores working on it
00FFF128 0C1FF0 cmpb #4080
00FFF12A 025FE9 blo multi_sieve2
00FFE15B 0CB008 addb #8 ; number of cores working on it
00FFE15D 0C1FF0 cmpb #4080
00FFE15F 025FE9 blo multi_sieve2
multi_sieve4: ; hang machine
00FFF12C 013 sync
00FFF12D 016000866 lbra Monitor
00FFE161 013 sync
00FFE162 016001747 lbra Monitor
;------------------------------------------------------------------------------
; Single core sieve.
;------------------------------------------------------------------------------
sieve:
00FFF130 086050 lda #'P' ; indicate prime
00FFF132 08E000000 ldx #0 ; start at first char of screen
00FFE165 086050 lda #'P' ; indicate prime
00FFE167 08E000000 ldx #0 ; start at first char of screen
sieve3:
00FFF135 0A7809E00000 sta TEXTSCR,x ; store 'P'
00FFF139 030001 inx ; advance to next position
00FFF13B 08C000FFF cmpx #4095
00FFF13E 025FF5 blo sieve3
00FFF140 0C6002 ldb #2 ; start sieve at 2
00FFF142 08604E lda #'N' ; flag position value of 'N' for non-prime
00FFE16A 0A7809E00000 sta TEXTSCR,x ; store 'P'
00FFE16E 030001 inx ; advance to next position
00FFE170 08C000FFF cmpx #4095
00FFE173 025FF5 blo sieve3
00FFE175 0C6002 ldb #2 ; start sieve at 2
00FFE177 08604E lda #'N' ; flag position value of 'N' for non-prime
sieve2:
00FFF144 08E000000 ldx #0
00FFF147 03A abx ; skip the first position - might be prime
00FFE179 08E000000 ldx #0
00FFE17C 03A abx ; skip the first position - might be prime
sieve1:
00FFF148 03A abx ; increment
00FFF149 0A7809E00000 sta TEXTSCR,x
00FFF14D 08C000FFF cmpx #4095
00FFF150 025FC7 blo multi_sieve1
00FFF152 05C incb ; number of cores working on it
00FFF153 0C1FF0 cmpb #4080
00FFF155 025FED blo sieve2
00FFE17D 03A abx ; increment
00FFE17E 0A7809E00000 sta TEXTSCR,x
00FFE182 08C000FFF cmpx #4095
00FFE185 025FC7 blo multi_sieve1
00FFE187 05C incb ; number of cores working on it
00FFE188 0C1FF0 cmpb #4080
00FFE18A 025FED blo sieve2
sieve4: ; hang machine
00FFF157 013 sync
00FFF158 016000836 lbra MonitorStart
00FFE18C 039 rts
;------------------------------------------------------------------------------
; Three second delay for user convenience and to allow some devices time to
457,93 → 536,105
;------------------------------------------------------------------------------
Delay3s:
00FFF15B 0CC895440 ldd #9000000
00FFE18D 0CC895440 ldd #9000000
dly3s1:
00FFF15E 0C10FF cmpb #$FF
00FFF160 026000 bne dly3s2
00FFE190 0C10FF cmpb #$FF
00FFE192 026000 bne dly3s2
dly3s2:
00FFF162 0150B7FFFE60000 sta LEDS
00FFF167 083000001 subd #1
00FFF16A 026FF2 bne dly3s1
00FFF16C 039 rts
00FFE194 0150B7FFFE60001 sta LEDS
00FFE199 083000001 subd #1
00FFE19C 026FF2 bne dly3s1
00FFE19E 039 rts
;------------------------------------------------------------------------------
;------------------------------------------------------------------------------
ShiftLeft5:
00FFF16D 058 aslb
00FFF16E 049 rola
00FFF16F 058 aslb
00FFF170 049 rola
00FFF171 058 aslb
00FFF172 049 rola
00FFF173 058 aslb
00FFF174 049 rola
00FFF175 058 aslb
00FFF176 049 rola
00FFF177 039 rts
00FFE19F 058 aslb
00FFE1A0 049 rola
00FFE1A1 058 aslb
00FFE1A2 049 rola
00FFE1A3 058 aslb
00FFE1A4 049 rola
00FFE1A5 058 aslb
00FFE1A6 049 rola
00FFE1A7 058 aslb
00FFE1A8 049 rola
00FFE1A9 039 rts
;------------------------------------------------------------------------------
; Parameters:
; b = core id of core to copy
;------------------------------------------------------------------------------
;
CopyVirtualScreenToScreen:
00FFF178 034076 pshs d,x,y,u
00FFF17A 08D0B4 bsr GetScreenLocation
00FFF17C 01F001 tfr d,x
00FFF17E 18EE00000 ldy #TEXTSCR
00FFF181 0CE00032C ldu #56*29/2
00FFE1AA 034076 pshs d,x,y,u
; Compute virtual screen location for core passed in accb.
00FFE1AC 01F098 tfr b,a
00FFE1AE 048 asla
00FFE1AF 048 asla
00FFE1B0 048 asla
00FFE1B1 048 asla
00FFE1B2 08AC00 ora #$C00
00FFE1B4 05F clrb
00FFE1B5 01F001 tfr d,x
00FFE1B7 034006 pshs d
00FFE1B9 18EE00000 ldy #TEXTSCR
00FFE1BC 0CE00032C ldu #56*29/2
cv2s1:
00FFF184 0EC801 ldd ,x++
00FFF186 0EDA01 std ,y++
00FFF188 0335FF leau -1,u
00FFF18A 283000000 cmpu #0
00FFF18D 026FF5 bne cv2s1
00FFE1BF 0EC801 ldd ,x++
00FFE1C1 0EDA01 std ,y++
00FFE1C3 0335FF leau -1,u
00FFE1C5 283000000 cmpu #0
00FFE1C8 026FF5 bne cv2s1
; reset the cursor position in the text controller
00FFF18F 0D6110 ldb CursorRow
00FFF191 086038 lda #56
00FFF193 03D mul
00FFF194 01F001 tfr d,x
00FFF196 0D6111 ldb CursorCol
00FFF198 03A abx
00FFF199 0150BFFFFE0DF22 stx TEXTREG+TEXT_CURPOS
00FFF19E 0350F6 puls d,x,y,u,pc
00FFE1CA 035010 puls x
00FFE1CC 0E6808110 ldb CursorRow,x
00FFE1CF 086038 lda #56
00FFE1D1 03D mul
00FFE1D2 01F002 tfr d,y
00FFE1D4 0E6808111 ldb CursorCol,x
00FFE1D7 01F021 tfr y,x
00FFE1D9 03A abx
00FFE1DA 0150BFFFFE0DF22 stx TEXTREG+TEXT_CURPOS
00FFE1DF 0350F6 puls d,x,y,u,pc
;------------------------------------------------------------------------------
;------------------------------------------------------------------------------
;
CopyScreenToVirtualScreen:
00FFF1A0 034076 pshs d,x,y,u
00FFF1A2 08D08C bsr GetScreenLocation
00FFF1A4 01F002 tfr d,y
00FFF1A6 08EE00000 ldx #TEXTSCR
00FFF1A9 0CE00032C ldu #56*29/2
00FFE1E1 034076 pshs d,x,y,u
00FFE1E3 08D08D bsr GetScreenLocation
00FFE1E5 01F002 tfr d,y
00FFE1E7 08EE00000 ldx #TEXTSCR
00FFE1EA 0CE00032C ldu #56*29/2
cs2v1:
00FFF1AC 0EC801 ldd ,x++
00FFF1AE 0EDA01 std ,y++
00FFF1B0 0335FF leau -1,u
00FFF1B2 283000000 cmpu #0
00FFF1B5 026FF5 bne cs2v1
00FFF1B7 0350F6 puls d,x,y,u,pc
00FFE1ED 0EC801 ldd ,x++
00FFE1EF 0EDA01 std ,y++
00FFE1F1 0335FF leau -1,u
00FFE1F3 283000000 cmpu #0
00FFE1F6 026FF5 bne cs2v1
00FFE1F8 0350F6 puls d,x,y,u,pc
;------------------------------------------------------------------------------
;------------------------------------------------------------------------------
00FFF1B9 054045058054053043052 fcb "TEXTSCR "
00FFF1C0 020
00FFF1C1 FFF1CB fcw TextOpen
00FFF1C3 FFF1CC fcw TextClose
00FFF1C5 FFF1CD fcw TextRead
00FFF1C7 FFF1CE fcw TextWrite
00FFF1C9 FFF1CF fcw TextSeek
00FFE1FA 054045058054053043052 fcb "TEXTSCR "
00FFE201 020
00FFE202 FFE20C fcw TextOpen
00FFE204 FFE20D fcw TextClose
00FFE206 FFE20E fcw TextRead
00FFE208 FFE20F fcw TextWrite
00FFE20A FFE210 fcw TextSeek
TextOpen:
00FFF1CB 039 rts
00FFE20C 039 rts
TextClose:
00FFF1CC 039 rts
00FFE20D 039 rts
TextRead:
00FFF1CD 039 rts
00FFE20E 039 rts
TextWrite:
00FFF1CE 039 rts
00FFE20F 039 rts
TextSeek:
00FFF1CF 039 rts
00FFE210 039 rts
;------------------------------------------------------------------------------
; Clear the screen and the screen color memory
555,29 → 646,29
;------------------------------------------------------------------------------
ClearScreen:
00FFF1D0 034076 pshs d,x,y,u
00FFF1D2 08E000658 ldx #56*29
00FFF1D5 01F013 tfr x,u
00FFF1D7 08D057 bsr GetScreenLocation
00FFF1D9 01F002 tfr d,y
00FFF1DB 0C6020 ldb #' ' ; space char
00FFE211 034076 pshs d,x,y,u
00FFE213 08E000658 ldx #56*29
00FFE216 01F013 tfr x,u
00FFE218 08D058 bsr GetScreenLocation
00FFE21A 01F002 tfr d,y
00FFE21C 0C6020 ldb #' ' ; space char
cs1:
00FFF1DD 0E7A00 stb ,y+ ; set text to space
00FFF1DF 0301FF leax -1,x ; decrement x
00FFF1E1 026FFA bne cs1
00FFF1E3 0150F6FFFFFFFE0 ldb COREID ; update colors only if we have focus
00FFF1E8 0D1100 cmpb IOFocusID
00FFF1EA 02000D bra cs3
00FFF1EC 18EE02000 ldy #TEXTSCR+$2000
00FFE21E 0E7A00 stb ,y+ ; set text to space
00FFE220 0301FF leax -1,x ; decrement x
00FFE222 026FFA bne cs1
00FFE224 0150F6FFFFFFFE0 ldb COREID ; update colors only if we have focus
00FFE229 0F1FF0010 cmpb IOFocusID
00FFE22C 02000D bra cs3
00FFE22E 18EE02000 ldy #TEXTSCR+$2000
; lda CharColor
00FFF1EF 0860CE lda #$0CE
00FFF1F1 01F031 tfr u,x ; get back count
00FFE231 0860CE lda #$0CE
00FFE233 01F031 tfr u,x ; get back count
cs2:
00FFF1F3 0A7A00 sta ,y+
00FFF1F5 0301FF leax -1,x ; decrement x
00FFF1F7 026FFA bne cs2
00FFE235 0A7A00 sta ,y+
00FFE237 0301FF dex ; decrement x
00FFE239 026FFA bne cs2
cs3:
00FFF1F9 0350F6 puls d,x,y,u,pc
00FFE23B 0350F6 puls d,x,y,u,pc
;------------------------------------------------------------------------------
; Scroll text on the screen upwards
587,20 → 678,20
;------------------------------------------------------------------------------
ScrollUp:
00FFF1FB 034076 pshs d,x,y,u
00FFF1FD 18E00032B ldy #(56*29-1)/2 ; y = num chars/2 to move
00FFF200 08D02E bsr GetScreenLocation
00FFF202 01F001 tfr d,x
00FFF204 01F003 tfr d,u
00FFF206 030038 leax 56,x ; x = index to source row
00FFE23D 034076 pshs d,x,y,u
00FFE23F 18E00032B ldy #(56*29-1)/2 ; y = num chars/2 to move
00FFE242 08D02E bsr GetScreenLocation
00FFE244 01F001 tfr d,x
00FFE246 01F003 tfr d,u
00FFE248 030038 leax 56,x ; x = index to source row
scrup1:
00FFF208 0EC801 ldd ,x++ ; move 2 characters
00FFF20A 0EDC01 std ,u++
00FFF20C 0313FF leay -1,y
00FFF20E 026FF8 bne scrup1
00FFF210 08601E lda #30
00FFF212 08D002 bsr BlankLine
00FFF214 0350F6 puls d,x,y,u,pc
00FFE24A 0EC801 ldd ,x++ ; move 2 characters
00FFE24C 0EDC01 std ,u++
00FFE24E 0313FF dey
00FFE250 026FF8 bne scrup1
00FFE252 08601D lda #29
00FFE254 08D002 bsr BlankLine
00FFE256 0350F6 puls d,x,y,u,pc
;------------------------------------------------------------------------------
; Blank out a line on the display
612,21 → 703,21
;------------------------------------------------------------------------------
BlankLine:
00FFF216 034016 pshs d,x
00FFF218 034002 pshs a
00FFF21A 08D014 bsr GetScreenLocation
00FFF21C 01F001 tfr d,x
00FFF21E 035002 puls a
00FFF220 0C6038 ldb #56 ; b = # chars to blank out from video controller
00FFF222 03D mul ; d = screen index (row# * #cols)
00FFF223 03080B leax d,x
00FFF225 086020 lda #' '
00FFF227 0C6038 ldb #56 ; b = # chars to blank out from video controller
00FFE258 034016 pshs d,x
00FFE25A 034002 pshs a
00FFE25C 08D014 bsr GetScreenLocation
00FFE25E 01F001 tfr d,x
00FFE260 035002 puls a
00FFE262 0C6038 ldb #56 ; b = # chars to blank out from video controller
00FFE264 03D mul ; d = screen index (row# * #cols)
00FFE265 03080B leax d,x
00FFE267 086020 lda #' '
00FFE269 0C6038 ldb #56 ; b = # chars to blank out from video controller
blnkln1:
00FFF229 0A7800 sta ,x+
00FFF22B 05A decb
00FFF22C 026FFB bne blnkln1
00FFF22E 035096 puls d,x,pc
00FFE26B 0A7800 sta ,x+
00FFE26D 05A decb
00FFE26E 026FFB bne blnkln1
00FFE270 035096 puls d,x,pc
;------------------------------------------------------------------------------
; Get the location of the screen memory. The location
639,14 → 730,14
;------------------------------------------------------------------------------
GetScreenLocation:
00FFF230 0150B6FFFFFFFE0 lda COREID ; which core are we?
00FFF235 091100 cmpa IOFocusID ; do we have the IO focus
00FFF237 026004 bne gsl1 ; no, go pick virtual screen address
00FFF239 0CCE00000 ldd #TEXTSCR ; yes, we update the real screen
00FFF23C 039 rts
00FFE272 0150B6FFFFFFFE0 lda COREID ; which core are we?
00FFE277 0B1FF0010 cmpa IOFocusID ; do we have the IO focus
00FFE27A 026004 bne gsl1 ; no, go pick virtual screen address
00FFE27C 0CCE00000 ldd #TEXTSCR ; yes, we update the real screen
00FFE27F 039 rts
gsl1:
00FFF23D 0CC007800 ldd #$7800
00FFF240 039 rts
00FFE280 0CC007800 ldd #$7800
00FFE283 039 rts
;------------------------------------------------------------------------------
; HomeCursor
657,16 → 748,16
;------------------------------------------------------------------------------
HomeCursor:
00FFF241 034016 pshs d,x
00FFF243 00F110 clr CursorRow
00FFF245 00F111 clr CursorCol
00FFF247 0150F6FFFFFFFE0 ldb COREID
00FFF24C 0D1100 cmpb IOFocusID
00FFF24E 026006 bne hc1
00FFF250 04F clra
00FFF251 0150B7FFFE0DF22 sta TEXTREG+TEXT_CURPOS
00FFE284 034016 pshs d,x
00FFE286 00F110 clr CursorRow
00FFE288 00F111 clr CursorCol
00FFE28A 0150F6FFFFFFFE0 ldb COREID
00FFE28F 0F1FF0010 cmpb IOFocusID
00FFE292 026006 bne hc1
00FFE294 04F clra
00FFE295 0150B7FFFE0DF22 sta TEXTREG+TEXT_CURPOS
hc1:
00FFF256 035096 puls d,x,pc
00FFE29A 035096 puls d,x,pc
;------------------------------------------------------------------------------
; Update the cursor position in the text controller based on the
677,20 → 768,20
;------------------------------------------------------------------------------
;
UpdateCursorPos:
00FFF258 034016 pshs d,x
00FFF25A 0150F6FFFFFFFE0 ldb COREID ; update cursor position in text controller
00FFF25F 0D1100 cmpb IOFocusID ; only for the task with the output focus
00FFF261 026014 bne ucp1
00FFF263 096110 lda CursorRow
00FFF265 08403F anda #$3F ; limit of 63 rows
00FFF267 0150F6FFFE0DF00 ldb TEXTREG+TEXT_COLS
00FFF26C 03D mul
00FFF26D 01F001 tfr d,x
00FFF26F 0D6111 ldb CursorCol
00FFF271 03A abx
00FFF272 0150BFFFFE0DF22 stx TEXTREG+TEXT_CURPOS
00FFE29C 034016 pshs d,x
00FFE29E 0150F6FFFFFFFE0 ldb COREID ; update cursor position in text controller
00FFE2A3 0F1FF0010 cmpb IOFocusID ; only for the task with the output focus
00FFE2A6 026014 bne ucp1
00FFE2A8 096110 lda CursorRow
00FFE2AA 08403F anda #$3F ; limit of 63 rows
00FFE2AC 0150F6FFFE0DF00 ldb TEXTREG+TEXT_COLS
00FFE2B1 03D mul
00FFE2B2 01F001 tfr d,x
00FFE2B4 0D6111 ldb CursorCol
00FFE2B6 03A abx
00FFE2B7 0150BFFFFE0DF22 stx TEXTREG+TEXT_CURPOS
ucp1:
00FFF277 035096 puls d,x,pc
00FFE2BC 035096 puls d,x,pc
;------------------------------------------------------------------------------
; Calculate screen memory location from CursorRow,CursorCol.
703,22 → 794,22
;------------------------------------------------------------------------------
;
CalcScreenLoc:
00FFF279 034010 pshs x
00FFF27B 096110 lda CursorRow
00FFF27D 0C6038 ldb #56
00FFF27F 03D mul
00FFF280 01F001 tfr d,x
00FFF282 0D6111 ldb CursorCol
00FFF284 03A abx
00FFF285 0150F6FFFFFFFE0 ldb COREID ; update cursor position in text controller
00FFF28A 0D1100 cmpb IOFocusID ; only for the task with the output focus
00FFF28C 026005 bne csl1
00FFF28E 0150BFFFFE0DF22 stx TEXTREG+TEXT_CURPOS
00FFE2BE 034010 pshs x
00FFE2C0 096110 lda CursorRow
00FFE2C2 0C6038 ldb #56
00FFE2C4 03D mul
00FFE2C5 01F001 tfr d,x
00FFE2C7 0D6111 ldb CursorCol
00FFE2C9 03A abx
00FFE2CA 0150F6FFFFFFFE0 ldb COREID ; update cursor position in text controller
00FFE2CF 0F1FF0010 cmpb IOFocusID ; only for the task with the output focus
00FFE2D2 026005 bne csl1
00FFE2D4 0150BFFFFE0DF22 stx TEXTREG+TEXT_CURPOS
csl1:
00FFF293 08DF9B bsr GetScreenLocation
00FFF295 03080B leax d,x
00FFF297 01F010 tfr x,d
00FFF299 035090 puls x,pc
00FFE2D9 08DF97 bsr GetScreenLocation
00FFE2DB 03080B leax d,x
00FFE2DD 01F010 tfr x,d
00FFE2DF 035090 puls x,pc
;------------------------------------------------------------------------------
; Display a character on the screen.
732,101 → 823,104
;------------------------------------------------------------------------------
;
DisplayChar:
00FFF29B 034016 pshs d,x
00FFF29D 0C100D cmpb #CR ; carriage return ?
00FFF29F 026006 bne dccr
00FFF2A1 00F111 clr CursorCol ; just set cursor column to zero on a CR
00FFF2A3 08DFB3 bsr UpdateCursorPos
00FFE2E1 017000924 lbsr SerialPutChar
00FFE2E4 034016 pshs d,x
00FFE2E6 0C100D cmpb #CR ; carriage return ?
00FFE2E8 026007 bne dccr
00FFE2EA 00F111 clr CursorCol ; just set cursor column to zero on a CR
00FFE2EC 08DFAE bsr UpdateCursorPos
dcx14:
00FFF2A5 035096 puls d,x,pc
00FFE2EE 01600008C lbra dcx4
dccr:
00FFF2A7 0C1091 cmpb #$91 ; cursor right ?
00FFF2A9 02600D bne dcx6
00FFF2AB 096111 lda CursorCol
00FFF2AD 081038 cmpa #56
00FFF2AF 024003 bhs dcx7
00FFF2B1 04C inca
00FFF2B2 097111 sta CursorCol
00FFE2F1 0C1091 cmpb #$91 ; cursor right ?
00FFE2F3 02600D bne dcx6
00FFE2F5 096111 lda CursorCol
00FFE2F7 081038 cmpa #56
00FFE2F9 024003 bhs dcx7
00FFE2FB 04C inca
00FFE2FC 097111 sta CursorCol
dcx7:
00FFF2B4 08DFA2 bsr UpdateCursorPos
00FFF2B6 035096 puls d,x,pc
00FFE2FE 08DF9C bsr UpdateCursorPos
00FFE300 035096 puls d,x,pc
dcx6:
00FFF2B8 0C1090 cmpb #$90 ; cursor up ?
00FFF2BA 026009 bne dcx8
00FFF2BC 096110 lda CursorRow
00FFF2BE 027FF4 beq dcx7
00FFF2C0 04A deca
00FFF2C1 097110 sta CursorRow
00FFF2C3 020FEF bra dcx7
00FFE302 0C1090 cmpb #$90 ; cursor up ?
00FFE304 026009 bne dcx8
00FFE306 096110 lda CursorRow
00FFE308 027FF4 beq dcx7
00FFE30A 04A deca
00FFE30B 097110 sta CursorRow
00FFE30D 020FEF bra dcx7
dcx8:
00FFF2C5 0C1093 cmpb #$93 ; cursor left ?
00FFF2C7 026009 bne dcx9
00FFF2C9 096111 lda CursorCol
00FFF2CB 027FE7 beq dcx7
00FFF2CD 04A deca
00FFF2CE 097111 sta CursorCol
00FFF2D0 020FE2 bra dcx7
00FFE30F 0C1093 cmpb #$93 ; cursor left ?
00FFE311 026009 bne dcx9
00FFE313 096111 lda CursorCol
00FFE315 027FE7 beq dcx7
00FFE317 04A deca
00FFE318 097111 sta CursorCol
00FFE31A 020FE2 bra dcx7
dcx9:
00FFF2D2 0C1092 cmpb #$92 ; cursor down ?
00FFF2D4 02600B bne dcx10
00FFF2D6 096110 lda CursorRow
00FFF2D8 08101D cmpa #29
00FFF2DA 027FD8 beq dcx7
00FFF2DC 04C inca
00FFF2DD 097110 sta CursorRow
00FFF2DF 020FD3 bra dcx7
00FFE31C 0C1092 cmpb #$92 ; cursor down ?
00FFE31E 02600B bne dcx10
00FFE320 096110 lda CursorRow
00FFE322 08101D cmpa #29
00FFE324 027FD8 beq dcx7
00FFE326 04C inca
00FFE327 097110 sta CursorRow
00FFE329 020FD3 bra dcx7
dcx10:
00FFF2E1 0C1094 cmpb #$94 ; cursor home ?
00FFF2E3 02600C bne dcx11
00FFF2E5 096111 lda CursorCol
00FFF2E7 027004 beq dcx12
00FFF2E9 00F111 clr CursorCol
00FFF2EB 020FC7 bra dcx7
00FFE32B 0C1094 cmpb #$94 ; cursor home ?
00FFE32D 02600C bne dcx11
00FFE32F 096111 lda CursorCol
00FFE331 027004 beq dcx12
00FFE333 00F111 clr CursorCol
00FFE335 020FC7 bra dcx7
dcx12:
00FFF2ED 00F110 clr CursorRow
00FFF2EF 020FC3 bra dcx7
00FFE337 00F110 clr CursorRow
00FFE339 020FC3 bra dcx7
dcx11:
00FFF2F1 0C1099 cmpb #$99 ; delete ?
00FFF2F3 026008 bne dcx13
00FFF2F5 08DF82 bsr CalcScreenLoc
00FFF2F7 01F001 tfr d,x
00FFF2F9 096111 lda CursorCol ; acc = cursor column
00FFF2FB 02000D bra dcx5
00FFE33B 0C1099 cmpb #$99 ; delete ?
00FFE33D 026008 bne dcx13
00FFE33F 08DF7D bsr CalcScreenLoc
00FFE341 01F001 tfr d,x
00FFE343 096111 lda CursorCol ; acc = cursor column
00FFE345 020011 bra dcx5
dcx13
00FFF2FD 0C1008 cmpb #CTRLH ; backspace ?
00FFF2FF 02601A bne dcx3
00FFF301 096111 lda CursorCol
00FFF303 02702A beq dcx4
00FFF305 04A deca
00FFF306 097111 sta CursorCol
00FFF308 08DF6F bsr CalcScreenLoc
00FFE347 0C1008 cmpb #CTRLH ; backspace ?
00FFE349 02601E bne dcx3
00FFE34B 096111 lda CursorCol
00FFE34D 02702E beq dcx4
00FFE34F 04A deca
00FFE350 097111 sta CursorCol
00FFE352 08DF6A bsr CalcScreenLoc
00FFE354 01F001 tfr d,x
00FFE356 096111 lda CursorCol
dcx5:
00FFF30A 0E6001 ldb 1,x
00FFF30C 0E7801 stb ,x++
00FFF30E 04C inca
00FFF30F 081038 cmpa #56
00FFF311 025FF7 blo dcx5
00FFF313 0C6020 ldb #' '
00FFF315 0301FF leax -1,x
00FFF317 0E7804 stb ,x
00FFF319 03509E puls d,x,dp,pc
00FFE358 0E6001 ldb 1,x
00FFE35A 0E7801 stb ,x++
00FFE35C 04C inca
00FFE35D 081038 cmpa #56
00FFE35F 025FF7 blo dcx5
00FFE361 0C6020 ldb #' '
00FFE363 0301FF dex
00FFE365 0E7804 stb ,x
00FFE367 020014 bra dcx4
dcx3:
00FFF31B 0C100A cmpb #LF ; linefeed ?
00FFF31D 02700E beq dclf
00FFF31F 034004 pshs b
00FFF321 08DF56 bsr CalcScreenLoc
00FFF323 01F001 tfr d,x
00FFF325 035004 puls b
00FFF327 0E7804 stb ,x
00FFE369 0C100A cmpb #LF ; linefeed ?
00FFE36B 02700E beq dclf
00FFE36D 034004 pshs b
00FFE36F 08DF4D bsr CalcScreenLoc
00FFE371 01F001 tfr d,x
00FFE373 035004 puls b
00FFE375 0E7804 stb ,x
; ToDo character color
; lda CharColor
; sta $2000,x
00FFF329 08D006 bsr IncCursorPos
00FFF32B 035096 puls d,x,pc
00FFE377 08D006 bsr IncCursorPos
00FFE379 020002 bra dcx4
dclf:
00FFF32D 08D011 bsr IncCursorRow
00FFE37B 08D011 bsr IncCursorRow
dcx4:
00FFF32F 035096 puls d,x,pc
00FFE37D 035096 puls d,x,pc
;------------------------------------------------------------------------------
; Increment the cursor position, scroll the screen if needed.
836,29 → 930,29
;------------------------------------------------------------------------------
IncCursorPos:
00FFF331 034016 pshs d,x
00FFF333 096111 lda CursorCol
00FFF335 04C inca
00FFF336 097111 sta CursorCol
00FFF338 081038 cmpa #56
00FFF33A 025014 blo icc1
00FFF33C 00F111 clr CursorCol ; column = 0
00FFF33E 020002 bra icr1
00FFE37F 034016 pshs d,x
00FFE381 096111 lda CursorCol
00FFE383 04C inca
00FFE384 097111 sta CursorCol
00FFE386 081038 cmpa #56
00FFE388 025014 blo icc1
00FFE38A 00F111 clr CursorCol ; column = 0
00FFE38C 020002 bra icr1
IncCursorRow:
00FFF340 034016 pshs d,x
00FFE38E 034016 pshs d,x
icr1:
00FFF342 096110 lda CursorRow
00FFF344 04C inca
00FFF345 097110 sta CursorRow
00FFF347 08101D cmpa #29
00FFF349 025005 blo icc1
00FFF34B 04A deca ; backup the cursor row, we are scrolling up
00FFF34C 097110 sta CursorRow
00FFF34E 08DEAB bsr ScrollUp
00FFE390 096110 lda CursorRow
00FFE392 04C inca
00FFE393 097110 sta CursorRow
00FFE395 08101D cmpa #29
00FFE397 025005 blo icc1
00FFE399 04A deca ; backup the cursor row, we are scrolling up
00FFE39A 097110 sta CursorRow
00FFE39C 08DE9F bsr ScrollUp
icc1:
00FFF350 08DF06 bsr UpdateCursorPos
00FFE39E 08DEFC bsr UpdateCursorPos
icc2:
00FFF352 035096 puls d,x,pc
00FFE3A0 035096 puls d,x,pc
;------------------------------------------------------------------------------
; Display a string on the screen.
870,97 → 964,437
;------------------------------------------------------------------------------
;
DisplayString:
00FFF354 034016 pshs d,x
00FFF356 01F001 tfr d,x
00FFE3A2 034016 pshs d,x
00FFE3A4 01F001 tfr d,x
dspj2: ; lock semaphore for access
00FFE3A6 0B6EF0001 lda OUTSEMA+1
00FFE3A9 027FFB beq dspj2
dspj1B:
00FFF358 0E6800 ldb ,x+ ; move string char into acc
00FFF35A 027004 beq dsretB ; is it end of string ?
00FFF35C 08D61E bsr OUTCH ; display character
00FFF35E 020FF8 bra dspj1B
00FFE3AB 0E6800 ldb ,x+ ; move string char into acc
00FFE3AD 027005 beq dsretB ; is it end of string ?
00FFE3AF 017000960 lbsr OUTCH ; display character
00FFE3B2 020FF7 bra dspj1B
dsretB:
00FFF360 035096 puls d,x,pc
00FFE3B4 07FEF0001 clr OUTSEMA+1 ; unlock semaphore
00FFE3B7 035096 puls d,x,pc
DisplayStringCRLF:
00FFF362 034006 pshs d
00FFF364 08DFEE bsr DisplayString
00FFF366 0C600D ldb #CR
00FFF368 08D612 bsr OUTCH
00FFF36A 0C600A ldb #LF
00FFF36C 08D60E bsr OUTCH
00FFF36E 035086 puls d,pc
00FFE3B9 034006 pshs d
00FFE3BB 08DFE5 bsr DisplayString
00FFE3BD 0C600D ldb #CR
00FFE3BF 017000950 lbsr OUTCH
00FFE3C2 0C600A ldb #LF
00FFE3C4 01700094B lbsr OUTCH
00FFE3C7 035086 puls d,pc
;
; PRINT CR, LF, STRING
;
PSTRNG
00FFF370 08D002 BSR PCRLF
00FFF372 02000D BRA PDATA
00FFE3C9 08D002 BSR PCRLF
00FFE3CB 02000D BRA PDATA
PCRLF
00FFF374 034010 PSHS X
00FFF376 08EFFF388 LDX #CRLFST
00FFF379 08D006 BSR PDATA
00FFF37B 035010 PULS X
00FFF37D 039 RTS
00FFE3CD 034010 PSHS X
00FFE3CF 08EFFE3E1 LDX #CRLFST
00FFE3D2 08D006 BSR PDATA
00FFE3D4 035010 PULS X
00FFE3D6 039 RTS
PRINT
00FFF37E 0BDFFF97C JSR OUTCH
00FFE3D7 0BDFFED12 JSR OUTCH
PDATA
00FFF381 0E6800 LDB ,X+
00FFF383 0C1004 CMPB #$04
00FFF385 026FF7 BNE PRINT
00FFF387 039 RTS
00FFE3DA 0E6800 LDB ,X+
00FFE3DC 0C1004 CMPB #$04
00FFE3DE 026FF7 BNE PRINT
00FFE3E0 039 RTS
CRLFST
00FFF388 00D00A004 fcb CR,LF,4
00FFE3E1 00D00A004 fcb CR,LF,4
DispDWordAsHex:
00FFF38B 08D007 bsr DispWordAsHex
00FFF38D 01E001 exg d,x
00FFF38F 08D003 bsr DispWordAsHex
00FFF391 01E001 exg d,x
00FFF393 039 rts
00FFE3E4 08D007 bsr DispWordAsHex
00FFE3E6 01E001 exg d,x
00FFE3E8 08D003 bsr DispWordAsHex
00FFE3EA 01E001 exg d,x
00FFE3EC 039 rts
DispWordAsHex:
00FFF394 01E089 exg a,b
00FFF396 08D005 bsr DispByteAsHex
00FFF398 01E089 exg a,b
00FFF39A 08D001 bsr DispByteAsHex
00FFF39C 039 rts
00FFE3ED 01E089 exg a,b
00FFE3EF 08D005 bsr DispByteAsHex
00FFE3F1 01E089 exg a,b
00FFE3F3 08D001 bsr DispByteAsHex
00FFE3F5 039 rts
DispByteAsHex:
00FFF39D 034004 pshs b
00FFF39F 054 lsrb
00FFF3A0 054 lsrb
00FFF3A1 054 lsrb
00FFF3A2 054 lsrb
00FFF3A3 054 lsrb
00FFF3A4 054 lsrb
00FFF3A5 054 lsrb
00FFF3A6 054 lsrb
00FFF3A7 08D00C bsr DispNyb
00FFF3A9 035004 puls b
00FFF3AB 034004 pshs b
00FFF3AD 054 lsrb
00FFF3AE 054 lsrb
00FFF3AF 054 lsrb
00FFF3B0 054 lsrb
00FFF3B1 08D002 bsr DispNyb
00FFF3B3 035004 puls b
00FFE3F6 034004 pshs b
00FFE3F8 054 lsrb
00FFE3F9 054 lsrb
00FFE3FA 054 lsrb
00FFE3FB 054 lsrb
00FFE3FC 054 lsrb
00FFE3FD 054 lsrb
00FFE3FE 054 lsrb
00FFE3FF 054 lsrb
00FFE400 08D00C bsr DispNyb
00FFE402 035004 puls b
00FFE404 034004 pshs b
00FFE406 054 lsrb
00FFE407 054 lsrb
00FFE408 054 lsrb
00FFE409 054 lsrb
00FFE40A 08D002 bsr DispNyb
00FFE40C 035004 puls b
DispNyb
00FFF3B5 034004 pshs b
00FFF3B7 0C400F andb #$0F
00FFF3B9 0C100A cmpb #10
00FFF3BB 025006 blo DispNyb1
00FFF3BD 0CB037 addb #'A'-10
00FFF3BF 08D5BB bsr OUTCH
00FFF3C1 035084 puls b,pc
00FFE40E 034004 pshs b
00FFE410 0C400F andb #$0F
00FFE412 0C100A cmpb #10
00FFE414 025007 blo DispNyb1
00FFE416 0CB037 addb #'A'-10
00FFE418 0170008F7 lbsr OUTCH
00FFE41B 035084 puls b,pc
DispNyb1
00FFF3C3 0CB030 addb #'0'
00FFF3C5 08D5B5 bsr OUTCH
00FFF3C7 035084 puls b,pc
00FFE41D 0CB030 addb #'0'
00FFE41F 0170008F0 lbsr OUTCH
00FFE422 035084 puls b,pc
;==============================================================================
; Timer
;==============================================================================
; ============================================================================
; __
; \\__/ o\ (C) 2022 Robert Finch, Waterloo
; \ __ / All rights reserved.
; \/_// robfinch<remove>@opencores.org
; ||
;
;
; Timer routines for a WDC6522 compatible circuit.
;
; This source file is free software: you can redistribute it and/or modify
; it under the terms of the GNU Lesser General Public License as published
; by the Free Software Foundation, either version 3 of the License, or
; (at your option) any later version.
;
; This source file is distributed in the hope that it will be useful,
; but WITHOUT ANY WARRANTY; without even the implied warranty of
; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
; GNU General Public License for more details.
;
; You should have received a copy of the GNU General Public License
; along with this program. If not, see <http://www.gnu.org/licenses/>.
;
; ============================================================================
;
TimerInit:
00FFE424 0CC061A80 ldd #$61A80 ; compare to 400000 (100 Hz assuming 40MHz clock)
00FFE427 0150F7FFFE60014 stb VIA+VIA_T3CMPL
00FFE42C 0150B7FFFE60015 sta VIA+VIA_T3CMPH
00FFE431 01507FFFFE60012 clr VIA+VIA_T3LL
00FFE436 01507FFFFE60013 clr VIA+VIA_T3LH
00FFE43B 0150B6FFFE6000B lda VIA+VIA_ACR ; set continuous mode for timer
00FFE440 08A100 ora #$100
00FFE442 0150B7FFFE6000B sta VIA+VIA_ACR ; enable timer #3 interrupts
00FFE447 086810 lda #$810
00FFE449 0150B7FFFE6000E sta VIA+VIA_IER
00FFE44E 039 rts
TimerIRQ:
; Reset the edge sense circuit in the PIC
00FFE44F 08601F lda #31 ; Timer is IRQ #31
00FFE451 0B7FF0011 sta IrqSource ; stuff a byte indicating the IRQ source for PEEK()
00FFE454 0150B7FFFE3F010 sta PIC+16 ; register 16 is edge sense reset reg
00FFE459 0150B6FFFE6000D lda VIA+VIA_IFR
00FFE45E 02A011 bpl notTimerIRQ
00FFE460 085800 bita #$800
00FFE462 02700D beq notTimerIRQ
00FFE464 01507FFFFE60012 clr VIA+VIA_T3LL
00FFE469 01507FFFFE60013 clr VIA+VIA_T3LH
00FFE46E 07CE00037 inc $E00037 ; update timer IRQ screen flag
notTimerIRQ:
00FFE471 039 rts
; ============================================================================
; __
; \\__/ o\ (C) 2013-2022 Robert Finch, Waterloo
; \ __ / All rights reserved.
; \/_// robfinch<remove>@opencores.org
; ||
;
;
; BSD 3-Clause License
; Redistribution and use in source and binary forms, with or without
; modification, are permitted provided that the following conditions are met:
;
; 1. Redistributions of source code must retain the above copyright notice, this
; list of conditions and the following disclaimer.
;
; 2. Redistributions in binary form must reproduce the above copyright notice,
; this list of conditions and the following disclaimer in the documentation
; and/or other materials provided with the distribution.
;
; 3. Neither the name of the copyright holder nor the names of its
; contributors may be used to endorse or promote products derived from
; this software without specific prior written permission.
;
; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
; IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
; DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
; FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
; DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
; SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
; CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
; OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
; OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
;
; ============================================================================
;
;===============================================================================
; Generic I2C routines
;
; It is assumed there may be more than one I2C controller in the system, so
; the address of the controller is passed in the X register.
;===============================================================================
I2C_PREL EQU $0
I2C_PREH EQU $1
I2C_CTRL EQU $2
I2C_RXR EQU $3
I2C_TXR EQU $3
I2C_CMD EQU $4
I2C_STAT EQU $4
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
; i2c initialization, sets the clock prescaler
;
; Parameters:
; x = I2C controller address
; Returns: none
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_i2c_init:
00FFE472 034004 pshs b
00FFE474 0C6004 ldb #4 ; setup prescale for 400kHz clock
00FFE476 0E7804 stb I2C_PREL,x
00FFE478 06F001 clr I2C_PREH,x
00FFE47A 035084 puls b,pc
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
; Wait for I2C transfer to complete
;
; Parameters
; x - I2C controller base address
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
i2c_wait_tip:
00FFE47C 034004 pshs b
i2cw1:
00FFE47E 0E6004 ldb I2C_STAT,x ; would use lvb, but lb is okay since its the I/O area
00FFE480 0C5001 bitb #1 ; wait for tip to clear
00FFE482 026FFA bne i2cw1
00FFE484 035084 puls b,pc
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
; Write command to i2c
;
; Parameters
; accb - data to transmit
; acca - command value
; x - I2C controller base address
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
i2c_wr_cmd:
00FFE486 0E7003 stb I2C_TXR,x
00FFE488 0A7004 sta I2C_CMD,x
00FFE48A 08DFF0 bsr i2c_wait_tip
00FFE48C 0E6004 ldb I2C_STAT,x
00FFE48E 039 rts
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
; Parameters
; x - I2C controller base address
; accb - data to send
; Returns: none
; Stack space: 2 words
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_i2c_xmit1:
00FFE48F 034006 pshs d ; save data value
00FFE491 034006 pshs d ; and save it again
00FFE493 0C6001 ldb #1
00FFE495 0E7002 stb I2C_CTRL,x ; enable the core
00FFE497 0C6076 ldb #$76 ; set slave address = %0111011
00FFE499 086090 lda #$90 ; set STA, WR
00FFE49B 08DFE9 bsr i2c_wr_cmd
00FFE49D 08D00A bsr i2c_wait_rx_nack
00FFE49F 035006 puls d ; get back data value
00FFE4A1 086050 lda #$50 ; set STO, WR
00FFE4A3 08DFE1 bsr i2c_wr_cmd
00FFE4A5 08D002 bsr i2c_wait_rx_nack
00FFE4A7 035086 puls d,pc
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
i2c_wait_rx_nack:
00FFE4A9 034004 pshs b ; save off accb
i2cwr1:
00FFE4AB 0E6004 ldb I2C_STAT,x ; wait for RXack = 0
00FFE4AD 0C5080 bitb #$80 ; test for nack
00FFE4AF 026FFA bne i2cwr1
00FFE4B1 035084 puls b,pc
; ============================================================================
; __
; \\__/ o\ (C) 2022 Robert Finch, Waterloo
; \ __ / All rights reserved.
; \/_// robfinch<remove>@opencores.org
; ||
;
;
; BSD 3-Clause License
; Redistribution and use in source and binary forms, with or without
; modification, are permitted provided that the following conditions are met:
;
; 1. Redistributions of source code must retain the above copyright notice, this
; list of conditions and the following disclaimer.
;
; 2. Redistributions in binary form must reproduce the above copyright notice,
; this list of conditions and the following disclaimer in the documentation
; and/or other materials provided with the distribution.
;
; 3. Neither the name of the copyright holder nor the names of its
; contributors may be used to endorse or promote products derived from
; this software without specific prior written permission.
;
; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
; IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
; DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
; FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
; DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
; SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
; CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
; OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
; OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
;
; ============================================================================
;===============================================================================
; Realtime clock routines
;===============================================================================
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
; Read the real-time-clock chip.
;
; The entire contents of the clock registers and sram are read into a buffer
; in one-shot rather than reading the registers individually.
;
; Parameters: none
; Returns: d = 0 on success, otherwise non-zero
; Modifies: d and RTCBuf
; Stack space: 6 words
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
rtc_read:
00FFE4B3 08EE30500 ldx #RTC
00FFE4B6 18E007FC0 ldy #RTCBuf
00FFE4B9 0C6080 ldb #$80
00FFE4BB 0E7002 stb I2C_CTRL,x ; enable I2C
00FFE4BD 0CC0900DE ldd #$900DE ; read address, write op, STA + wr bit
00FFE4C0 08DFC4 bsr i2c_wr_cmd
00FFE4C2 0C5080 bitb #$80
00FFE4C4 02603C bne rtc_rxerr
00FFE4C6 0CC010000 ldd #$10000 ; address zero, wr bit
00FFE4C9 08DFBB bsr i2c_wr_cmd
00FFE4CB 0C5080 bitb #$80
00FFE4CD 026033 bne rtc_rxerr
00FFE4CF 0CC0900DF ldd #$900DF ; read address, read op, STA + wr bit
00FFE4D2 08DFB2 bsr i2c_wr_cmd
00FFE4D4 0C5080 bitb #$80
00FFE4D6 02602A bne rtc_rxerr
00FFE4D8 05F clrb
rtcr0001:
00FFE4D9 086020 lda #$20
00FFE4DB 0A7004 sta I2C_CMD,x ; rd bit
00FFE4DD 08DF9D bsr i2c_wait_tip
00FFE4DF 08DFC8 bsr i2c_wait_rx_nack
00FFE4E1 0A6004 lda I2C_STAT,x
00FFE4E3 085080 bita #$80
00FFE4E5 02601B bne rtc_rxerr
00FFE4E7 0A6003 lda I2C_RXR,x
00FFE4E9 0A7A07 sta b,y
00FFE4EB 05C incb
00FFE4EC 0C105F cmpb #$5F
00FFE4EE 025FE9 blo rtcr0001
00FFE4F0 086068 lda #$68
00FFE4F2 0A7004 sta I2C_CMD,x ; STO, rd bit + nack
00FFE4F4 08DF86 bsr i2c_wait_tip
00FFE4F6 0A6004 lda I2C_STAT,x
00FFE4F8 085080 bita #$80
00FFE4FA 026006 bne rtc_rxerr
00FFE4FC 0A6003 lda I2C_RXR,x
00FFE4FE 0A7A07 sta b,y
00FFE500 04F05F clrd ; return 0
rtc_rxerr:
00FFE502 06F002 clr I2C_CTRL,x ; disable I2C and return status
00FFE504 04F clra
00FFE505 039 rts
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
; Write the real-time-clock chip.
;
; The entire contents of the clock registers and sram are written from a
; buffer (RTCBuf) in one-shot rather than writing the registers individually.
;
; Parameters: none
; Returns: r1 = 0 on success, otherwise non-zero
; Modifies: r1 and RTCBuf
; Stack space: 6 words
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
rtc_write:
00FFE506 08EE30500 ldx #RTC
00FFE509 18E007FC0 ldy #RTCBuf
00FFE50C 0C6080 ldb #$80
00FFE50E 0E7002 stb I2C_CTRL,x ; enable I2C
00FFE510 0CC0900DE ldd #$900DE ; read address, write op, STA + wr bit
00FFE513 08DF71 bsr i2c_wr_cmd
00FFE515 0C5080 bitb #$80
00FFE517 026FE9 bne rtc_rxerr
00FFE519 0CC010000 ldd #$10000 ; address zero, wr bit
00FFE51C 08DF68 bsr i2c_wr_cmd
00FFE51E 0C5080 bitb #$80
00FFE520 026FE0 bne rtc_rxerr
00FFE522 0C6000 ldb #0
rtcw0001:
00FFE524 034004 pshs b
00FFE526 0E6A05 ldb b,y
00FFE528 086010 lda #$10
00FFE52A 08DF5A bsr i2c_wr_cmd
00FFE52C 0C5080 bitb #$80
00FFE52E 035004 puls b
00FFE530 026FD0 bne rtc_rxerr
00FFE532 05C incb
00FFE533 0C105F cmpb #$5F
00FFE535 025FED blo rtcw0001
00FFE537 0E6A05 ldb b,y
00FFE539 086050 lda #$50 ; STO, wr bit
00FFE53B 08DF49 bsr i2c_wr_cmd
00FFE53D 0C5080 bitb #$80
00FFE53F 026FC1 bne rtc_rxerr
00FFE541 04F05F clrd ; return 0
00FFE543 06F002 clr I2C_CTRL,x ; disable I2C and return status
00FFE545 039 rts
;==============================================================================
; Keyboard I/O
;==============================================================================
971,207 → 1405,207
org (* + 127) & $FFFFFF80
unshiftedScanCodes:
00FFF400 02E0A902E0A50A30A10A2 fcb $2e,$a9,$2e,$a5,$a3,$a1,$a2,$ac
00FFF407 0AC
00FFF408 02E0AA0A80A60A4009060 fcb $2e,$aa,$a8,$a6,$a4,$09,$60,$2e
00FFF40F 02E
00FFF410 02E02E02E02E02E071031 fcb $2e,$2e,$2e,$2e,$2e,$71,$31,$2e
00FFF417 02E
00FFF418 02E02E07A073061077032 fcb $2e,$2e,$7a,$73,$61,$77,$32,$2e
00FFF41F 02E
00FFF420 02E063078064065034033 fcb $2e,$63,$78,$64,$65,$34,$33,$2e
00FFF427 02E
00FFF428 02E020076066074072035 fcb $2e,$20,$76,$66,$74,$72,$35,$2e
00FFF42F 02E
00FFF430 02E06E062068067079036 fcb $2e,$6e,$62,$68,$67,$79,$36,$2e
00FFF437 02E
00FFF438 02E02E06D06A075037038 fcb $2e,$2e,$6d,$6a,$75,$37,$38,$2e
00FFF43F 02E
00FFF440 02E02C06B06906F030039 fcb $2e,$2c,$6b,$69,$6f,$30,$39,$2e
00FFF447 02E
00FFF448 02E02E02F06C03B07002D fcb $2e,$2e,$2f,$6c,$3b,$70,$2d,$2e
00FFF44F 02E
00FFF450 02E02E02702E05B03D02E fcb $2e,$2e,$27,$2e,$5b,$3d,$2e,$2e
00FFF457 02E
00FFF458 0AD02E00D05D02E05C02E fcb $ad,$2e,$0d,$5d,$2e,$5c,$2e,$2e
00FFF45F 02E
00FFF460 02E02E02E02E02E02E008 fcb $2e,$2e,$2e,$2e,$2e,$2e,$08,$2e
00FFF467 02E
00FFF468 02E09502E09309402E02E fcb $2e,$95,$2e,$93,$94,$2e,$2e,$2e
00FFF46F 02E
00FFF470 09807F09202E09109001B fcb $98,$7f,$92,$2e,$91,$90,$1b,$af
00FFF477 0AF
00FFF478 0AB02E09702E02E0960AE fcb $ab,$2e,$97,$2e,$2e,$96,$ae,$2e
00FFF47F 02E
00FFE580 02E0A902E0A50A30A10A2 fcb $2e,$a9,$2e,$a5,$a3,$a1,$a2,$ac
00FFE587 0AC
00FFE588 02E0AA0A80A60A4009060 fcb $2e,$aa,$a8,$a6,$a4,$09,$60,$2e
00FFE58F 02E
00FFE590 02E02E02E02E02E071031 fcb $2e,$2e,$2e,$2e,$2e,$71,$31,$2e
00FFE597 02E
00FFE598 02E02E07A073061077032 fcb $2e,$2e,$7a,$73,$61,$77,$32,$2e
00FFE59F 02E
00FFE5A0 02E063078064065034033 fcb $2e,$63,$78,$64,$65,$34,$33,$2e
00FFE5A7 02E
00FFE5A8 02E020076066074072035 fcb $2e,$20,$76,$66,$74,$72,$35,$2e
00FFE5AF 02E
00FFE5B0 02E06E062068067079036 fcb $2e,$6e,$62,$68,$67,$79,$36,$2e
00FFE5B7 02E
00FFE5B8 02E02E06D06A075037038 fcb $2e,$2e,$6d,$6a,$75,$37,$38,$2e
00FFE5BF 02E
00FFE5C0 02E02C06B06906F030039 fcb $2e,$2c,$6b,$69,$6f,$30,$39,$2e
00FFE5C7 02E
00FFE5C8 02E02E02F06C03B07002D fcb $2e,$2e,$2f,$6c,$3b,$70,$2d,$2e
00FFE5CF 02E
00FFE5D0 02E02E02702E05B03D02E fcb $2e,$2e,$27,$2e,$5b,$3d,$2e,$2e
00FFE5D7 02E
00FFE5D8 0AD02E00D05D02E05C02E fcb $ad,$2e,$0d,$5d,$2e,$5c,$2e,$2e
00FFE5DF 02E
00FFE5E0 02E02E02E02E02E02E008 fcb $2e,$2e,$2e,$2e,$2e,$2e,$08,$2e
00FFE5E7 02E
00FFE5E8 02E09502E09309402E02E fcb $2e,$95,$2e,$93,$94,$2e,$2e,$2e
00FFE5EF 02E
00FFE5F0 09807F09202E09109001B fcb $98,$7f,$92,$2e,$91,$90,$1b,$af
00FFE5F7 0AF
00FFE5F8 0AB02E09702E02E0960AE fcb $ab,$2e,$97,$2e,$2e,$96,$ae,$2e
00FFE5FF 02E
00FFF480 02E02E02E0A702E02E02E fcb $2e,$2e,$2e,$a7,$2e,$2e,$2e,$2e
00FFF487 02E
00FFF488 02E02E02E02E02E02E02E fcb $2e,$2e,$2e,$2e,$2e,$2e,$2e,$2e
00FFF48F 02E
00FFF490 02E02E02E02E02E02E02E fcb $2e,$2e,$2e,$2e,$2e,$2e,$2e,$2e
00FFF497 02E
00FFF498 02E02E02E02E02E02E02E fcb $2e,$2e,$2e,$2e,$2e,$2e,$2e,$2e
00FFF49F 02E
00FFF4A0 02E02E02E02E02E02E02E fcb $2e,$2e,$2e,$2e,$2e,$2e,$2e,$2e
00FFF4A7 02E
00FFF4A8 02E02E02E02E02E02E02E fcb $2e,$2e,$2e,$2e,$2e,$2e,$2e,$2e
00FFF4AF 02E
00FFF4B0 02E02E02E02E02E02E02E fcb $2e,$2e,$2e,$2e,$2e,$2e,$2e,$2e
00FFF4B7 02E
00FFF4B8 02E02E02E02E02E02E02E fcb $2e,$2e,$2e,$2e,$2e,$2e,$2e,$2e
00FFF4BF 02E
00FFF4C0 02E02E02E02E02E02E02E fcb $2e,$2e,$2e,$2e,$2e,$2e,$2e,$2e
00FFF4C7 02E
00FFF4C8 02E02E02E02E02E02E02E fcb $2e,$2e,$2e,$2e,$2e,$2e,$2e,$2e
00FFF4CF 02E
00FFF4D0 02E02E02E02E02E02E02E fcb $2e,$2e,$2e,$2e,$2e,$2e,$2e,$2e
00FFF4D7 02E
00FFF4D8 02E02E02E02E02E02E02E fcb $2e,$2e,$2e,$2e,$2e,$2e,$2e,$2e
00FFF4DF 02E
00FFF4E0 02E02E02E02E02E02E02E fcb $2e,$2e,$2e,$2e,$2e,$2e,$2e,$2e
00FFF4E7 02E
00FFF4E8 02E02E02E02E02E02E02E fcb $2e,$2e,$2e,$2e,$2e,$2e,$2e,$2e
00FFF4EF 02E
00FFF4F0 02E02E02E02E02E02E02E fcb $2e,$2e,$2e,$2e,$2e,$2e,$2e,$2e
00FFF4F7 02E
00FFF4F8 02E02E0FA02E02E02E02E fcb $2e,$2e,$fa,$2e,$2e,$2e,$2e,$2e
00FFF4FF 02E
00FFE600 02E02E02E0A702E02E02E fcb $2e,$2e,$2e,$a7,$2e,$2e,$2e,$2e
00FFE607 02E
00FFE608 02E02E02E02E02E02E02E fcb $2e,$2e,$2e,$2e,$2e,$2e,$2e,$2e
00FFE60F 02E
00FFE610 02E02E02E02E02E02E02E fcb $2e,$2e,$2e,$2e,$2e,$2e,$2e,$2e
00FFE617 02E
00FFE618 02E02E02E02E02E02E02E fcb $2e,$2e,$2e,$2e,$2e,$2e,$2e,$2e
00FFE61F 02E
00FFE620 02E02E02E02E02E02E02E fcb $2e,$2e,$2e,$2e,$2e,$2e,$2e,$2e
00FFE627 02E
00FFE628 02E02E02E02E02E02E02E fcb $2e,$2e,$2e,$2e,$2e,$2e,$2e,$2e
00FFE62F 02E
00FFE630 02E02E02E02E02E02E02E fcb $2e,$2e,$2e,$2e,$2e,$2e,$2e,$2e
00FFE637 02E
00FFE638 02E02E02E02E02E02E02E fcb $2e,$2e,$2e,$2e,$2e,$2e,$2e,$2e
00FFE63F 02E
00FFE640 02E02E02E02E02E02E02E fcb $2e,$2e,$2e,$2e,$2e,$2e,$2e,$2e
00FFE647 02E
00FFE648 02E02E02E02E02E02E02E fcb $2e,$2e,$2e,$2e,$2e,$2e,$2e,$2e
00FFE64F 02E
00FFE650 02E02E02E02E02E02E02E fcb $2e,$2e,$2e,$2e,$2e,$2e,$2e,$2e
00FFE657 02E
00FFE658 02E02E02E02E02E02E02E fcb $2e,$2e,$2e,$2e,$2e,$2e,$2e,$2e
00FFE65F 02E
00FFE660 02E02E02E02E02E02E02E fcb $2e,$2e,$2e,$2e,$2e,$2e,$2e,$2e
00FFE667 02E
00FFE668 02E02E02E02E02E02E02E fcb $2e,$2e,$2e,$2e,$2e,$2e,$2e,$2e
00FFE66F 02E
00FFE670 02E02E02E02E02E02E02E fcb $2e,$2e,$2e,$2e,$2e,$2e,$2e,$2e
00FFE677 02E
00FFE678 02E02E0FA02E02E02E02E fcb $2e,$2e,$fa,$2e,$2e,$2e,$2e,$2e
00FFE67F 02E
shiftedScanCodes:
00FFF500 02E02E02E02E02E02E02E fcb $2e,$2e,$2e,$2e,$2e,$2e,$2e,$2e
00FFF507 02E
00FFF508 02E02E02E02E02E00907E fcb $2e,$2e,$2e,$2e,$2e,$09,$7e,$2e
00FFF50F 02E
00FFF510 02E02E02E02E02E051021 fcb $2e,$2e,$2e,$2e,$2e,$51,$21,$2e
00FFF517 02E
00FFF518 02E02E05A053041057040 fcb $2e,$2e,$5a,$53,$41,$57,$40,$2e
00FFF51F 02E
00FFF520 02E043058044045024023 fcb $2e,$43,$58,$44,$45,$24,$23,$2e
00FFF527 02E
00FFF528 02E020056046054052025 fcb $2e,$20,$56,$46,$54,$52,$25,$2e
00FFF52F 02E
00FFF530 02E04E04204804705905E fcb $2e,$4e,$42,$48,$47,$59,$5e,$2e
00FFF537 02E
00FFF538 02E02E04D04A05502602A fcb $2e,$2e,$4d,$4a,$55,$26,$2a,$2e
00FFF53F 02E
00FFF540 02E03C04B04904F029028 fcb $2e,$3c,$4b,$49,$4f,$29,$28,$2e
00FFF547 02E
00FFF548 02E03E03F04C03A05005F fcb $2e,$3e,$3f,$4c,$3a,$50,$5f,$2e
00FFF54F 02E
00FFF550 02E02E02202E07B02B02E fcb $2e,$2e,$22,$2e,$7b,$2b,$2e,$2e
00FFF557 02E
00FFF558 02E02E00D07D02E07C02E fcb $2e,$2e,$0d,$7d,$2e,$7c,$2e,$2e
00FFF55F 02E
00FFF560 02E02E02E02E02E02E008 fcb $2e,$2e,$2e,$2e,$2e,$2e,$08,$2e
00FFF567 02E
00FFF568 02E02E02E02E02E02E02E fcb $2e,$2e,$2e,$2e,$2e,$2e,$2e,$2e
00FFF56F 02E
00FFF570 02E07F02E02E02E02E01B fcb $2e,$7f,$2e,$2e,$2e,$2e,$1b,$2e
00FFF577 02E
00FFF578 02E02E02E02E02E02E02E fcb $2e,$2e,$2e,$2e,$2e,$2e,$2e,$2e
00FFF57F 02E
00FFE680 02E02E02E02E02E02E02E fcb $2e,$2e,$2e,$2e,$2e,$2e,$2e,$2e
00FFE687 02E
00FFE688 02E02E02E02E02E00907E fcb $2e,$2e,$2e,$2e,$2e,$09,$7e,$2e
00FFE68F 02E
00FFE690 02E02E02E02E02E051021 fcb $2e,$2e,$2e,$2e,$2e,$51,$21,$2e
00FFE697 02E
00FFE698 02E02E05A053041057040 fcb $2e,$2e,$5a,$53,$41,$57,$40,$2e
00FFE69F 02E
00FFE6A0 02E043058044045024023 fcb $2e,$43,$58,$44,$45,$24,$23,$2e
00FFE6A7 02E
00FFE6A8 02E020056046054052025 fcb $2e,$20,$56,$46,$54,$52,$25,$2e
00FFE6AF 02E
00FFE6B0 02E04E04204804705905E fcb $2e,$4e,$42,$48,$47,$59,$5e,$2e
00FFE6B7 02E
00FFE6B8 02E02E04D04A05502602A fcb $2e,$2e,$4d,$4a,$55,$26,$2a,$2e
00FFE6BF 02E
00FFE6C0 02E03C04B04904F029028 fcb $2e,$3c,$4b,$49,$4f,$29,$28,$2e
00FFE6C7 02E
00FFE6C8 02E03E03F04C03A05005F fcb $2e,$3e,$3f,$4c,$3a,$50,$5f,$2e
00FFE6CF 02E
00FFE6D0 02E02E02202E07B02B02E fcb $2e,$2e,$22,$2e,$7b,$2b,$2e,$2e
00FFE6D7 02E
00FFE6D8 02E02E00D07D02E07C02E fcb $2e,$2e,$0d,$7d,$2e,$7c,$2e,$2e
00FFE6DF 02E
00FFE6E0 02E02E02E02E02E02E008 fcb $2e,$2e,$2e,$2e,$2e,$2e,$08,$2e
00FFE6E7 02E
00FFE6E8 02E02E02E02E02E02E02E fcb $2e,$2e,$2e,$2e,$2e,$2e,$2e,$2e
00FFE6EF 02E
00FFE6F0 02E07F02E02E02E02E01B fcb $2e,$7f,$2e,$2e,$2e,$2e,$1b,$2e
00FFE6F7 02E
00FFE6F8 02E02E02E02E02E02E02E fcb $2e,$2e,$2e,$2e,$2e,$2e,$2e,$2e
00FFE6FF 02E
00FFF580 02E02E02E02E02E02E02E fcb $2e,$2e,$2e,$2e,$2e,$2e,$2e,$2e
00FFF587 02E
00FFF588 02E02E02E02E02E02E02E fcb $2e,$2e,$2e,$2e,$2e,$2e,$2e,$2e
00FFF58F 02E
00FFF590 02E02E02E02E02E02E02E fcb $2e,$2e,$2e,$2e,$2e,$2e,$2e,$2e
00FFF597 02E
00FFF598 02E02E02E02E02E02E02E fcb $2e,$2e,$2e,$2e,$2e,$2e,$2e,$2e
00FFF59F 02E
00FFF5A0 02E02E02E02E02E02E02E fcb $2e,$2e,$2e,$2e,$2e,$2e,$2e,$2e
00FFF5A7 02E
00FFF5A8 02E02E02E02E02E02E02E fcb $2e,$2e,$2e,$2e,$2e,$2e,$2e,$2e
00FFF5AF 02E
00FFF5B0 02E02E02E02E02E02E02E fcb $2e,$2e,$2e,$2e,$2e,$2e,$2e,$2e
00FFF5B7 02E
00FFF5B8 02E02E02E02E02E02E02E fcb $2e,$2e,$2e,$2e,$2e,$2e,$2e,$2e
00FFF5BF 02E
00FFF5C0 02E02E02E02E02E02E02E fcb $2e,$2e,$2e,$2e,$2e,$2e,$2e,$2e
00FFF5C7 02E
00FFF5C8 02E02E02E02E02E02E02E fcb $2e,$2e,$2e,$2e,$2e,$2e,$2e,$2e
00FFF5CF 02E
00FFF5D0 02E02E02E02E02E02E02E fcb $2e,$2e,$2e,$2e,$2e,$2e,$2e,$2e
00FFF5D7 02E
00FFF5D8 02E02E02E02E02E02E02E fcb $2e,$2e,$2e,$2e,$2e,$2e,$2e,$2e
00FFF5DF 02E
00FFF5E0 02E02E02E02E02E02E02E fcb $2e,$2e,$2e,$2e,$2e,$2e,$2e,$2e
00FFF5E7 02E
00FFF5E8 02E02E02E02E02E02E02E fcb $2e,$2e,$2e,$2e,$2e,$2e,$2e,$2e
00FFF5EF 02E
00FFF5F0 02E02E02E02E02E02E02E fcb $2e,$2e,$2e,$2e,$2e,$2e,$2e,$2e
00FFF5F7 02E
00FFF5F8 02E02E02E02E02E02E02E fcb $2e,$2e,$2e,$2e,$2e,$2e,$2e,$2e
00FFF5FF 02E
00FFE700 02E02E02E02E02E02E02E fcb $2e,$2e,$2e,$2e,$2e,$2e,$2e,$2e
00FFE707 02E
00FFE708 02E02E02E02E02E02E02E fcb $2e,$2e,$2e,$2e,$2e,$2e,$2e,$2e
00FFE70F 02E
00FFE710 02E02E02E02E02E02E02E fcb $2e,$2e,$2e,$2e,$2e,$2e,$2e,$2e
00FFE717 02E
00FFE718 02E02E02E02E02E02E02E fcb $2e,$2e,$2e,$2e,$2e,$2e,$2e,$2e
00FFE71F 02E
00FFE720 02E02E02E02E02E02E02E fcb $2e,$2e,$2e,$2e,$2e,$2e,$2e,$2e
00FFE727 02E
00FFE728 02E02E02E02E02E02E02E fcb $2e,$2e,$2e,$2e,$2e,$2e,$2e,$2e
00FFE72F 02E
00FFE730 02E02E02E02E02E02E02E fcb $2e,$2e,$2e,$2e,$2e,$2e,$2e,$2e
00FFE737 02E
00FFE738 02E02E02E02E02E02E02E fcb $2e,$2e,$2e,$2e,$2e,$2e,$2e,$2e
00FFE73F 02E
00FFE740 02E02E02E02E02E02E02E fcb $2e,$2e,$2e,$2e,$2e,$2e,$2e,$2e
00FFE747 02E
00FFE748 02E02E02E02E02E02E02E fcb $2e,$2e,$2e,$2e,$2e,$2e,$2e,$2e
00FFE74F 02E
00FFE750 02E02E02E02E02E02E02E fcb $2e,$2e,$2e,$2e,$2e,$2e,$2e,$2e
00FFE757 02E
00FFE758 02E02E02E02E02E02E02E fcb $2e,$2e,$2e,$2e,$2e,$2e,$2e,$2e
00FFE75F 02E
00FFE760 02E02E02E02E02E02E02E fcb $2e,$2e,$2e,$2e,$2e,$2e,$2e,$2e
00FFE767 02E
00FFE768 02E02E02E02E02E02E02E fcb $2e,$2e,$2e,$2e,$2e,$2e,$2e,$2e
00FFE76F 02E
00FFE770 02E02E02E02E02E02E02E fcb $2e,$2e,$2e,$2e,$2e,$2e,$2e,$2e
00FFE777 02E
00FFE778 02E02E02E02E02E02E02E fcb $2e,$2e,$2e,$2e,$2e,$2e,$2e,$2e
00FFE77F 02E
; control
keybdControlCodes:
00FFF600 02E02E02E02E02E02E02E fcb $2e,$2e,$2e,$2e,$2e,$2e,$2e,$2e
00FFF607 02E
00FFF608 02E02E02E02E02E00907E fcb $2e,$2e,$2e,$2e,$2e,$09,$7e,$2e
00FFF60F 02E
00FFF610 02E02E02E02E02E011021 fcb $2e,$2e,$2e,$2e,$2e,$11,$21,$2e
00FFF617 02E
00FFF618 02E02E01A013001017040 fcb $2e,$2e,$1a,$13,$01,$17,$40,$2e
00FFF61F 02E
00FFF620 02E003018004005024023 fcb $2e,$03,$18,$04,$05,$24,$23,$2e
00FFF627 02E
00FFF628 02E020016006014012025 fcb $2e,$20,$16,$06,$14,$12,$25,$2e
00FFF62F 02E
00FFF630 02E00E00200800701905E fcb $2e,$0e,$02,$08,$07,$19,$5e,$2e
00FFF637 02E
00FFF638 02E02E00D00A01502602A fcb $2e,$2e,$0d,$0a,$15,$26,$2a,$2e
00FFF63F 02E
00FFF640 02E03C00B00900F029028 fcb $2e,$3c,$0b,$09,$0f,$29,$28,$2e
00FFF647 02E
00FFF648 02E03E03F00C03A01005F fcb $2e,$3e,$3f,$0c,$3a,$10,$5f,$2e
00FFF64F 02E
00FFF650 02E02E02202E07B02B02E fcb $2e,$2e,$22,$2e,$7b,$2b,$2e,$2e
00FFF657 02E
00FFF658 02E02E00D07D02E07C02E fcb $2e,$2e,$0d,$7d,$2e,$7c,$2e,$2e
00FFF65F 02E
00FFF660 02E02E02E02E02E02E008 fcb $2e,$2e,$2e,$2e,$2e,$2e,$08,$2e
00FFF667 02E
00FFF668 02E02E02E02E02E02E02E fcb $2e,$2e,$2e,$2e,$2e,$2e,$2e,$2e
00FFF66F 02E
00FFF670 02E07F02E02E02E02E01B fcb $2e,$7f,$2e,$2e,$2e,$2e,$1b,$2e
00FFF677 02E
00FFF678 02E02E02E02E02E02E02E fcb $2e,$2e,$2e,$2e,$2e,$2e,$2e,$2e
00FFF67F 02E
00FFE780 02E02E02E02E02E02E02E fcb $2e,$2e,$2e,$2e,$2e,$2e,$2e,$2e
00FFE787 02E
00FFE788 02E02E02E02E02E00907E fcb $2e,$2e,$2e,$2e,$2e,$09,$7e,$2e
00FFE78F 02E
00FFE790 02E02E02E02E02E011021 fcb $2e,$2e,$2e,$2e,$2e,$11,$21,$2e
00FFE797 02E
00FFE798 02E02E01A013001017040 fcb $2e,$2e,$1a,$13,$01,$17,$40,$2e
00FFE79F 02E
00FFE7A0 02E003018004005024023 fcb $2e,$03,$18,$04,$05,$24,$23,$2e
00FFE7A7 02E
00FFE7A8 02E020016006014012025 fcb $2e,$20,$16,$06,$14,$12,$25,$2e
00FFE7AF 02E
00FFE7B0 02E00E00200800701905E fcb $2e,$0e,$02,$08,$07,$19,$5e,$2e
00FFE7B7 02E
00FFE7B8 02E02E00D00A01502602A fcb $2e,$2e,$0d,$0a,$15,$26,$2a,$2e
00FFE7BF 02E
00FFE7C0 02E03C00B00900F029028 fcb $2e,$3c,$0b,$09,$0f,$29,$28,$2e
00FFE7C7 02E
00FFE7C8 02E03E03F00C03A01005F fcb $2e,$3e,$3f,$0c,$3a,$10,$5f,$2e
00FFE7CF 02E
00FFE7D0 02E02E02202E07B02B02E fcb $2e,$2e,$22,$2e,$7b,$2b,$2e,$2e
00FFE7D7 02E
00FFE7D8 02E02E00D07D02E07C02E fcb $2e,$2e,$0d,$7d,$2e,$7c,$2e,$2e
00FFE7DF 02E
00FFE7E0 02E02E02E02E02E02E008 fcb $2e,$2e,$2e,$2e,$2e,$2e,$08,$2e
00FFE7E7 02E
00FFE7E8 02E02E02E02E02E02E02E fcb $2e,$2e,$2e,$2e,$2e,$2e,$2e,$2e
00FFE7EF 02E
00FFE7F0 02E07F02E02E02E02E01B fcb $2e,$7f,$2e,$2e,$2e,$2e,$1b,$2e
00FFE7F7 02E
00FFE7F8 02E02E02E02E02E02E02E fcb $2e,$2e,$2e,$2e,$2e,$2e,$2e,$2e
00FFE7FF 02E
keybdExtendedCodes:
00FFF680 02E02E02E02E0A30A10A2 fcb $2e,$2e,$2e,$2e,$a3,$a1,$a2,$2e
00FFF687 02E
00FFF688 02E02E02E02E02E02E02E fcb $2e,$2e,$2e,$2e,$2e,$2e,$2e,$2e
00FFF68F 02E
00FFF690 02E02E02E02E02E02E02E fcb $2e,$2e,$2e,$2e,$2e,$2e,$2e,$2e
00FFF697 02E
00FFF698 02E02E02E02E02E02E02E fcb $2e,$2e,$2e,$2e,$2e,$2e,$2e,$2e
00FFF69F 02E
00FFF6A0 02E02E02E02E02E02E02E fcb $2e,$2e,$2e,$2e,$2e,$2e,$2e,$2e
00FFF6A7 02E
00FFF6A8 02E02E02E02E02E02E02E fcb $2e,$2e,$2e,$2e,$2e,$2e,$2e,$2e
00FFF6AF 02E
00FFF6B0 02E02E02E02E02E02E02E fcb $2e,$2e,$2e,$2e,$2e,$2e,$2e,$2e
00FFF6B7 02E
00FFF6B8 02E02E02E02E02E02E02E fcb $2e,$2e,$2e,$2e,$2e,$2e,$2e,$2e
00FFF6BF 02E
00FFF6C0 02E02E02E02E02E02E02E fcb $2e,$2e,$2e,$2e,$2e,$2e,$2e,$2e
00FFF6C7 02E
00FFF6C8 02E02E02E02E02E02E02E fcb $2e,$2e,$2e,$2e,$2e,$2e,$2e,$2e
00FFF6CF 02E
00FFF6D0 02E02E02E02E02E02E02E fcb $2e,$2e,$2e,$2e,$2e,$2e,$2e,$2e
00FFF6D7 02E
00FFF6D8 02E02E02E02E02E02E02E fcb $2e,$2e,$2e,$2e,$2e,$2e,$2e,$2e
00FFF6DF 02E
00FFF6E0 02E02E02E02E02E02E02E fcb $2e,$2e,$2e,$2e,$2e,$2e,$2e,$2e
00FFF6E7 02E
00FFF6E8 02E09502E09309402E02E fcb $2e,$95,$2e,$93,$94,$2e,$2e,$2e
00FFF6EF 02E
00FFF6F0 09809909202E09109002E fcb $98,$99,$92,$2e,$91,$90,$2e,$2e
00FFF6F7 02E
00FFF6F8 02E02E09702E02E09602E fcb $2e,$2e,$97,$2e,$2e,$96,$2e,$2e
00FFF6FF 02E
00FFE800 02E02E02E02E0A30A10A2 fcb $2e,$2e,$2e,$2e,$a3,$a1,$a2,$2e
00FFE807 02E
00FFE808 02E02E02E02E02E02E02E fcb $2e,$2e,$2e,$2e,$2e,$2e,$2e,$2e
00FFE80F 02E
00FFE810 02E02E02E02E02E02E02E fcb $2e,$2e,$2e,$2e,$2e,$2e,$2e,$2e
00FFE817 02E
00FFE818 02E02E02E02E02E02E02E fcb $2e,$2e,$2e,$2e,$2e,$2e,$2e,$2e
00FFE81F 02E
00FFE820 02E02E02E02E02E02E02E fcb $2e,$2e,$2e,$2e,$2e,$2e,$2e,$2e
00FFE827 02E
00FFE828 02E02E02E02E02E02E02E fcb $2e,$2e,$2e,$2e,$2e,$2e,$2e,$2e
00FFE82F 02E
00FFE830 02E02E02E02E02E02E02E fcb $2e,$2e,$2e,$2e,$2e,$2e,$2e,$2e
00FFE837 02E
00FFE838 02E02E02E02E02E02E02E fcb $2e,$2e,$2e,$2e,$2e,$2e,$2e,$2e
00FFE83F 02E
00FFE840 02E02E02E02E02E02E02E fcb $2e,$2e,$2e,$2e,$2e,$2e,$2e,$2e
00FFE847 02E
00FFE848 02E02E02E02E02E02E02E fcb $2e,$2e,$2e,$2e,$2e,$2e,$2e,$2e
00FFE84F 02E
00FFE850 02E02E02E02E02E02E02E fcb $2e,$2e,$2e,$2e,$2e,$2e,$2e,$2e
00FFE857 02E
00FFE858 02E02E02E02E02E02E02E fcb $2e,$2e,$2e,$2e,$2e,$2e,$2e,$2e
00FFE85F 02E
00FFE860 02E02E02E02E02E02E02E fcb $2e,$2e,$2e,$2e,$2e,$2e,$2e,$2e
00FFE867 02E
00FFE868 02E09502E09309402E02E fcb $2e,$95,$2e,$93,$94,$2e,$2e,$2e
00FFE86F 02E
00FFE870 09809909202E09109002E fcb $98,$99,$92,$2e,$91,$90,$2e,$2e
00FFE877 02E
00FFE878 02E02E09702E02E09602E fcb $2e,$2e,$97,$2e,$2e,$96,$2e,$2e
00FFE87F 02E
; ============================================================================
; __
1230,20 → 1664,20
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
KeybdRecvByte:
00FFF700 034010 pshs x
00FFF702 08E000064 ldx #100 ; wait up to 1s
00FFE880 034010 pshs x
00FFE882 08E000064 ldx #100 ; wait up to 1s
krb3:
00FFF705 08D05A bsr KeybdGetStatus ; wait for response from keyboard
00FFF707 05D tstb
00FFF708 02B00B bmi krb4 ; is input buffer full ? yes, branch
00FFF70A 08D02D bsr Wait10ms ; wait a bit
00FFF70C 0301FF leax -1,x
00FFF70E 026FF5 bne krb3 ; go back and try again
00FFF710 0CCFFFFFF ldd #-1 ; return -1
00FFF713 035090 puls x,pc
00FFE885 08D05A bsr KeybdGetStatus ; wait for response from keyboard
00FFE887 05D tstb
00FFE888 02B00B bmi krb4 ; is input buffer full ? yes, branch
00FFE88A 08D02D bsr Wait10ms ; wait a bit
00FFE88C 0301FF dex
00FFE88E 026FF5 bne krb3 ; go back and try again
00FFE890 0CCFFFFFF ldd #-1 ; return -1
00FFE893 035090 puls x,pc
krb4:
00FFF715 08D066 bsr KeybdGetScancode
00FFF717 035090 puls x,pc
00FFE895 08D066 bsr KeybdGetScancode
00FFE897 035090 puls x,pc
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
; Send a byte to the keyboard.
1255,8 → 1689,8
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
KeybdSendByte:
00FFF719 0150F7FFFE30400 stb KEYBD
00FFF71E 039 rts
00FFE899 0150F7FFFE30400 stb KEYBD
00FFE89E 039 rts
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
; Wait until the keyboard transmit is complete
1268,21 → 1702,21
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
KeybdWaitTx:
00FFF71F 034010 pshs x
00FFF721 08E000064 ldx #100 ; wait a max of 1s
00FFE89F 034010 pshs x
00FFE8A1 08E000064 ldx #100 ; wait a max of 1s
kwt1:
00FFF724 08D03B bsr KeybdGetStatus
00FFF726 0C4040 andb #$40 ; check for transmit complete bit; branch if bit set
00FFF728 02600B bne kwt2
00FFF72A 08D00D bsr Wait10ms ; delay a little bit
00FFF72C 0301FF leax -1,x
00FFF72E 026FF4 bne kwt1 ; go back and try again
00FFF730 0CCFFFFFF ldd #-1 ; timed out, return -1
00FFF733 035090 puls x,pc
00FFE8A4 08D03B bsr KeybdGetStatus
00FFE8A6 0C4040 andb #$40 ; check for transmit complete bit; branch if bit set
00FFE8A8 02600B bne kwt2
00FFE8AA 08D00D bsr Wait10ms ; delay a little bit
00FFE8AC 0301FF dex
00FFE8AE 026FF4 bne kwt1 ; go back and try again
00FFE8B0 0CCFFFFFF ldd #-1 ; timed out, return -1
00FFE8B3 035090 puls x,pc
kwt2:
00FFF735 04F clra ; wait complete, return 0
00FFF736 05F clrb
00FFF737 035090 puls x,pc
00FFE8B5 04F clra ; wait complete, return 0
00FFE8B6 05F clrb
00FFE8B7 035090 puls x,pc
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
; Wait for 10 ms
1294,14 → 1728,14
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Wait10ms:
00FFF739 034006 pshs d
00FFF73B 0150B6FFFFFFFE7 lda MSCOUNT+3
00FFE8B9 034006 pshs d
00FFE8BB 0150B6FFFFFFFE7 lda MSCOUNT+3
W10_0001:
00FFF740 01F089 tfr a,b
00FFF742 0150F0FFFFFFFE7 subb MSCOUNT+3
00FFF747 0C1FFA cmpb #$FFA
00FFF749 022FF5 bhi W10_0001
00FFF74B 035086 puls d,pc
00FFE8C0 01F089 tfr a,b
00FFE8C2 0150F0FFFFFFFE7 subb MSCOUNT+3
00FFE8C7 0C1FFA cmpb #$FFA
00FFE8C9 022FF5 bhi W10_0001
00FFE8CB 035086 puls d,pc
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
; Wait for 300 ms (256 ms)
1313,14 → 1747,14
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Wait300ms:
00FFF74D 034006 pshs d
00FFF74F 0150B6FFFFFFFE7 lda MSCOUNT+3
00FFE8CD 034006 pshs d
00FFE8CF 0150B6FFFFFFFE7 lda MSCOUNT+3
W300_0001:
00FFF754 01F089 tfr a,b
00FFF756 0150F0FFFFFFFE7 subb MSCOUNT+3
00FFF75B 0C1F00 cmpb #$F00
00FFF75D 022FF5 bhi W300_0001
00FFF75F 035086 puls d,pc
00FFE8D4 01F089 tfr a,b
00FFE8D6 0150F0FFFFFFFE7 subb MSCOUNT+3
00FFE8DB 0C1F00 cmpb #$F00
00FFE8DD 022FF5 bhi W300_0001
00FFE8DF 035086 puls d,pc
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
; Get the keyboard status
1331,22 → 1765,22
KeybdGetStatus:
kbgs3:
00FFF761 0150F6FFFE30401 ldb KEYBD+1
00FFF766 0C5080 bitb #$80
00FFF768 02600E bne kbgs1
00FFF76A 0C5001 bitb #$01 ; check parity error flag
00FFF76C 026002 bne kbgs2
00FFF76E 04F clra
00FFF76F 039 rts
00FFE8E1 0150F6FFFE30401 ldb KEYBD+1
00FFE8E6 0C5080 bitb #$80
00FFE8E8 02600E bne kbgs1
00FFE8EA 0C5001 bitb #$01 ; check parity error flag
00FFE8EC 026002 bne kbgs2
00FFE8EE 04F clra
00FFE8EF 039 rts
kbgs2:
00FFF770 0C60FE ldb #$FE ; request resend
00FFF772 08DFA5 bsr KeybdSendByte
00FFF774 08DFA9 bsr KeybdWaitTx
00FFF776 020FE9 bra kbgs3
00FFE8F0 0C60FE ldb #$FE ; request resend
00FFE8F2 08DFA5 bsr KeybdSendByte
00FFE8F4 08DFA9 bsr KeybdWaitTx
00FFE8F6 020FE9 bra kbgs3
kbgs1: ; return negative status
00FFF778 0CAF00 orb #$F00
00FFF77A 086FFF lda #-1
00FFF77C 039 rts
00FFE8F8 0CAF00 orb #$F00
00FFE8FA 086FFF lda #-1
00FFE8FC 039 rts
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
; Get the scancode from the keyboard port
1356,16 → 1790,10
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
KeybdGetScancode:
00FFF77D 04F clra
00FFF77E 0150F6FFFE30400 ldb KEYBD ; get the scan code
00FFF783 01507FFFFE30401 clr KEYBD+1 ; clear receive register (write $00 to status reg)
; The following useful during debug.
; lbsr DispByteAsHex
; pshs b
; ldb #' '
; lbsr OUTCH
; puls b
00FFF788 039 rts
00FFE8FD 04F clra
00FFE8FE 0150F6FFFE30400 ldb KEYBD ; get the scan code
00FFE903 01507FFFFE30401 clr KEYBD+1 ; clear receive register (write $00 to status reg)
00FFE908 039 rts
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
; Set the LEDs on the keyboard.
1377,16 → 1805,16
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
KeybdSetLED:
00FFF789 034004 pshs b
00FFF78B 0C60ED ldb #$ED ; set LEDs command
00FFF78D 08DF8A bsr KeybdSendByte
00FFF78F 08DF8E bsr KeybdWaitTx
00FFF791 08DF6D bsr KeybdRecvByte ; should be an ack
00FFF793 035004 puls b
00FFF795 08DF82 bsr KeybdSendByte
00FFF797 08DF86 bsr KeybdWaitTx
00FFF799 08DF65 bsr KeybdRecvByte ; should be an ack
00FFF79B 039 rts
00FFE909 034004 pshs b
00FFE90B 0C60ED ldb #$ED ; set LEDs command
00FFE90D 08DF8A bsr KeybdSendByte
00FFE90F 08DF8E bsr KeybdWaitTx
00FFE911 08DF6D bsr KeybdRecvByte ; should be an ack
00FFE913 035004 puls b
00FFE915 08DF82 bsr KeybdSendByte
00FFE917 08DF86 bsr KeybdWaitTx
00FFE919 08DF65 bsr KeybdRecvByte ; should be an ack
00FFE91B 039 rts
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
; Get ID - get the keyboards identifier code.
1398,27 → 1826,27
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
KeybdGetID:
00FFF79C 0C60F2 ldb #$F2
00FFF79E 08DF79 bsr KeybdSendByte
00FFF7A0 08DF7D bsr KeybdWaitTx
00FFF7A2 08DF5C bsr KeybdRecvByte
00FFF7A4 0C5080 bitb #$80
00FFF7A6 026014 bne kgnotKbd
00FFF7A8 0C10AB cmpb #$AB
00FFF7AA 026010 bne kgnotKbd
00FFF7AC 08DF52 bsr KeybdRecvByte
00FFF7AE 0C5080 bitb #$80
00FFF7B0 02600A bne kgnotKbd
00FFF7B2 0C1083 cmpb #$83
00FFF7B4 026006 bne kgnotKbd
00FFF7B6 0CC00AB83 ldd #$AB83
00FFE91C 0C60F2 ldb #$F2
00FFE91E 08DF79 bsr KeybdSendByte
00FFE920 08DF7D bsr KeybdWaitTx
00FFE922 08DF5C bsr KeybdRecvByte
00FFE924 0C5080 bitb #$80
00FFE926 026014 bne kgnotKbd
00FFE928 0C10AB cmpb #$AB
00FFE92A 026010 bne kgnotKbd
00FFE92C 08DF52 bsr KeybdRecvByte
00FFE92E 0C5080 bitb #$80
00FFE930 02600A bne kgnotKbd
00FFE932 0C1083 cmpb #$83
00FFE934 026006 bne kgnotKbd
00FFE936 0CC00AB83 ldd #$AB83
kgid1:
00FFF7B9 0DD124 std KeybdID
00FFF7BB 039 rts
00FFE939 0DD124 std KeybdID
00FFE93B 039 rts
kgnotKbd:
00FFF7BC 04F clra
00FFF7BD 05F clrb
00FFF7BE 020FF9 bra kgid1
00FFE93C 04F clra
00FFE93D 05F clrb
00FFE93E 020FF9 bra kgid1
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
; Initialize the keyboard.
1432,75 → 1860,135
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
KeybdInit:
00FFF7C0 034026 pshs d,y
00FFF7C2 18E000005 ldy #5
00FFE940 034026 pshs d,y
00FFE942 18E000005 ldy #5
00FFE945 00F120 clr KeyState1 ; records key up/down state
00FFE947 00F121 clr KeyState2 ; records shift,ctrl,alt state
kbdi0002:
00FFF7C5 08DF72 bsr Wait10ms
00FFF7C7 01507FFFFE30401 clr KEYBD+1 ; clear receive register (write $00 to status reg)
00FFF7CC 0C6FFF ldb #-1 ; send reset code to keyboard
00FFF7CE 0150F7FFFE30401 stb KEYBD+1 ; write $FF to status reg to clear TX state
00FFF7D3 08DF44 bsr KeybdSendByte ; now write to transmit register
00FFF7D5 08DF48 bsr KeybdWaitTx ; wait until no longer busy
00FFF7D7 08DF27 bsr KeybdRecvByte ; look for an ACK ($FA)
00FFF7D9 0C10FA cmpb #$FA
00FFF7DB 026021 bne kbdiTryAgain
00FFF7DD 08DF21 bsr KeybdRecvByte ; look for BAT completion code ($AA)
00FFF7DF 0C10FC cmpb #$FC ; reset error ?
00FFF7E1 02701B beq kbdiTryAgain
00FFF7E3 0C10AA cmpb #$AA ; reset complete okay ?
00FFF7E5 026017 bne kbdiTryAgain
00FFE949 08DF6E bsr Wait10ms
00FFE94B 01507FFFFE30401 clr KEYBD+1 ; clear receive register (write $00 to status reg)
00FFE950 0C6FFF ldb #-1 ; send reset code to keyboard
00FFE952 0150F7FFFE30401 stb KEYBD+1 ; write $FF to status reg to clear TX state
00FFE957 08DF40 bsr KeybdSendByte ; now write to transmit register
00FFE959 08DF44 bsr KeybdWaitTx ; wait until no longer busy
00FFE95B 08DF23 bsr KeybdRecvByte ; look for an ACK ($FA)
00FFE95D 0C10FA cmpb #$FA
00FFE95F 026021 bne kbdiTryAgain
00FFE961 08DF1D bsr KeybdRecvByte ; look for BAT completion code ($AA)
00FFE963 0C10FC cmpb #$FC ; reset error ?
00FFE965 02701B beq kbdiTryAgain
00FFE967 0C10AA cmpb #$AA ; reset complete okay ?
00FFE969 026017 bne kbdiTryAgain
; After a reset, scan code set #2 should be active
.config:
00FFF7E7 0C60F0 ldb #$F0 ; send scan code select
00FFF7E9 0150F7FFFE60000 stb LEDS
00FFF7EE 08DF29 bsr KeybdSendByte
00FFF7F0 08DF2D bsr KeybdWaitTx
00FFF7F2 05D tstb
00FFF7F3 02B009 bmi kbdiTryAgain
00FFF7F5 08DF09 bsr KeybdRecvByte ; wait for response from keyboard
00FFF7F7 04D tsta
00FFF7F8 02B004 bmi kbdiTryAgain
00FFF7FA 0C10FA cmpb #$FA ; ACK
00FFF7FC 02700C beq kbdi0004
00FFE96B 0C60F0 ldb #$F0 ; send scan code select
00FFE96D 0150F7FFFE60001 stb LEDS
00FFE972 08DF25 bsr KeybdSendByte
00FFE974 08DF29 bsr KeybdWaitTx
00FFE976 05D tstb
00FFE977 02B009 bmi kbdiTryAgain
00FFE979 08DF05 bsr KeybdRecvByte ; wait for response from keyboard
00FFE97B 04D tsta
00FFE97C 02B004 bmi kbdiTryAgain
00FFE97E 0C10FA cmpb #$FA ; ACK
00FFE980 02700C beq kbdi0004
kbdiTryAgain:
00FFF7FE 0313FF dey
00FFF800 026FC3 bne kbdi0002
00FFE982 0313FF dey
00FFE984 026FC3 bne kbdi0002
.keybdErr:
00FFF802 0CCFFF82A ldd #msgBadKeybd
00FFF805 017FFFB5A lbsr DisplayStringCRLF
00FFE986 0CCFFE9AE ldd #msgBadKeybd
00FFE989 017FFFA2D lbsr DisplayStringCRLF
*** warning 1: Long branch within short branch range could be optimized
00FFF808 020014 bra ledxit
00FFE98C 020014 bra ledxit
kbdi0004:
00FFF80A 0C6002 ldb #2 ; select scan code set #2
00FFF80C 08DF0B bsr KeybdSendByte
00FFF80E 08DF0F bsr KeybdWaitTx
00FFF810 05D tstb
00FFF811 02BFEB bmi kbdiTryAgain
00FFF813 08DEEB bsr KeybdRecvByte ; wait for response from keyboard
00FFF815 04D tsta
00FFF816 02BFE6 bmi kbdiTryAgain
00FFF818 0C10FA cmpb #$FA
00FFF81A 026FE2 bne kbdiTryAgain
00FFF81C 08DF7E bsr KeybdGetID
00FFE98E 0C6002 ldb #2 ; select scan code set #2
00FFE990 08DF07 bsr KeybdSendByte
00FFE992 08DF0B bsr KeybdWaitTx
00FFE994 05D tstb
00FFE995 02BFEB bmi kbdiTryAgain
00FFE997 08DEE7 bsr KeybdRecvByte ; wait for response from keyboard
00FFE999 04D tsta
00FFE99A 02BFE6 bmi kbdiTryAgain
00FFE99C 0C10FA cmpb #$FA
00FFE99E 026FE2 bne kbdiTryAgain
00FFE9A0 08DF7A bsr KeybdGetID
ledxit:
00FFF81E 0C6007 ldb #$07
00FFF820 08DF67 bsr KeybdSetLED
00FFF822 08DF29 bsr Wait300ms
00FFF824 0C6000 ldb #$00
00FFF826 08DF61 bsr KeybdSetLED
00FFF828 0350A6 puls d,y,pc
00FFE9A2 0C6007 ldb #$07
00FFE9A4 08DF63 bsr KeybdSetLED
00FFE9A6 08DF25 bsr Wait300ms
00FFE9A8 0C6000 ldb #$00
00FFE9AA 08DF5D bsr KeybdSetLED
00FFE9AC 0350A6 puls d,y,pc
msgBadKeybd:
00FFF82A 04B06507906206F061072 fcb "Keyboard error",0
00FFF831 06402006507207206F072
00FFF838 000
00FFE9AE 04B06507906206F061072 fcb "Keyboard error",0
00FFE9B5 06402006507207206F072
00FFE9BC 000
;------------------------------------------------------------------------------
; Calculate number of character in input buffer
;
; Parameters:
; y = $Cn00000 where n is core id
; Returns:
; d = number of bytes in buffer.
;------------------------------------------------------------------------------
kbdRcvCount:
00FFE9BD 04F clra
00FFE9BE 0E6A08128 ldb kbdTailRcv,y
00FFE9C1 0E0A08127 subb kbdHeadRcv,y
00FFE9C4 02C008 bge krcXit
00FFE9C6 0C6040 ldb #$40
00FFE9C8 0E0A08127 subb kbdHeadRcv,y
00FFE9CB 0EBA08128 addb kbdTailRcv,y
krcXit:
00FFE9CE 039 rts
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
KeybdIRQ:
00FFE9CF 0150B6FFFE30401 lda KEYBD+1 ; check status
00FFE9D4 085080 bita #$80 ; was key pressed?
00FFE9D6 027034 beq notKbdIRQ ; if not, exit
00FFE9D8 0150F6FFFE30400 ldb KEYBD ; get the scan code
00FFE9DD 01507FFFFE30401 clr KEYBD+1 ; clear receive register (write $00 to status reg)
00FFE9E2 034004 pshs b ; save it off
00FFE9E4 0B6FF0010 lda IOFocusID ; compute core memory address $Cn0000
00FFE9E7 05F clrb
00FFE9E8 048 asla
00FFE9E9 048 asla
00FFE9EA 048 asla
00FFE9EB 048 asla
00FFE9EC 08AC00 ora #$C00 ; address $Cn0000
00FFE9EE 01F002 tfr d,y ; y =
00FFE9F0 08DFCB bsr kbdRcvCount ; get count of scan codes in buffer
00FFE9F2 0C1040 cmpb #64 ; check if buffer full?
00FFE9F4 024017 bhs kbdBufFull ; if buffer full, ignore new keystroke
00FFE9F6 01F021 tfr y,x ; compute fifo address
00FFE9F8 0E6A08128 ldb kbdTailRcv,y ; b = buffer index
00FFE9FB 035002 puls a ; get back scancode
00FFE9FD 030040 leax kbdFifo,x ; x = base address for fifo
00FFE9FF 0A7845 sta b,x ; store in buffer
00FFEA01 05C incb ; increment buffer index
00FFEA02 0C403F andb #$3f ; wrap around at 64 chars
00FFEA04 0E7A08128 stb kbdTailRcv,y ; update it
00FFEA07 08601C lda #28 ; Keyboard is IRQ #28
00FFEA09 0B7FF0011 sta IrqSource ; stuff a byte indicating the IRQ source for PEEK()
notKbdIRQ:
00FFEA0C 039 rts
kbdBufFull:
00FFEA0D 032601 leas 1,s ; get rid of saved scancode
00FFEA0F 039 rts
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
DBGCheckForKey:
00FFF839 020F26 bra KeybdGetStatus
00FFEA10 020ECF bra KeybdGetStatus
; KeyState2 variable bit meanings
1519,237 → 2007,642
; +-------- = extended
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
; Debug versison of keyboard get routine.
; Keyboard get routine.
;
; The routine may get characters directly from the scancode input or less
; directly from the scancode buffer, if things are interrupt driven.
;
; Parameters:
; b: 0 = non blocking, otherwise blocking
; b: bit 11 = blocking status 1=blocking, 0=non blocking
; b: bit 1 = scancode source 1=scancode buffer, 0=direct
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
DBGGetKey:
00FFF83B 034010 pshs x
GetKey:
00FFEA12 034030 pshs x,y
00FFEA14 0D7126 stb KeybdBlock ; save off blocking status
dbgk2:
00FFF83D 034004 pshs b
00FFF83F 08DF20 bsr KeybdGetStatus
00FFF841 0C4080 andb #$80 ; is key available?
00FFF843 035004 puls b
00FFF845 026008 bne dbgk1 ; branch if key
00FFF847 05D tstb ; block?
00FFF848 026FF3 bne dbgk2 ; If no key and blocking - loop
00FFF84A 0CCFFFFFF ldd #-1 ; return -1 if no block and no key
00FFF84D 035090 puls x,pc
00FFEA16 0D6126 ldb KeybdBlock
00FFEA18 034004 pshs b
00FFEA1A 0C5001 bitb #1 ; what is the scancode source
00FFEA1C 02701A beq dbgk20 ; branch if direct read
00FFEA1E 0150B6FFFFFFFE0 lda COREID ; compute core memory address
00FFEA23 05F clrb
00FFEA24 048 asla
00FFEA25 048 asla
00FFEA26 048 asla
00FFEA27 048 asla
00FFEA28 08AC00 ora #$C00
00FFEA2A 01F002 tfr d,y ; y = $Cn0000
00FFEA2C 08DF8F bsr kbdRcvCount
00FFEA2E 05D tstb ; anything in buffer?
00FFEA2F 035004 puls b
00FFEA31 026018 bne dbgk1 ; branch if something in buffer
00FFEA33 05D tstb
00FFEA34 02BFE0 bmi dbgk2 ; if no key and blocking - loop
00FFEA36 02000E bra dbgk24
dbgk20:
00FFEA38 18E000000 ldy #0
00FFEA3B 08DEA4 bsr KeybdGetStatus
00FFEA3D 0C4080 andb #$80 ; is key available?
00FFEA3F 035004 puls b
00FFEA41 026008 bne dbgk1 ; branch if key
00FFEA43 05D tstb ; block?
00FFEA44 02BFD0 bmi dbgk2 ; If no key and blocking - loop
dbgk24:
00FFEA46 0CCFFFFFF ldd #-1 ; return -1 if no block and no key
00FFEA49 0350B0 puls x,y,pc
dbgk1:
00FFF84F 08DF2C bsr KeybdGetScancode
00FFEA4B 18C000000 cmpy #0
00FFEA4E 026004 bne dbgk22
00FFEA50 08DEAB bsr KeybdGetScancode ; get scancode directly
00FFEA52 020011 bra dbgk23
dbgk22:
; Retrieve value from scancode buffer
00FFEA54 01F021 tfr y,x
00FFEA56 030040 leax kbdFifo,x ; x = fifo address
00FFEA58 0E6A08127 ldb kbdHeadRcv,y ; b = buffer index
00FFEA5B 0A6A0D lda b,x ; get the scancode
00FFEA5D 05C incb ; increment fifo index
00FFEA5E 0C403F andb #$3f ; and wrap around
00FFEA60 0E7A08127 stb kbdHeadRcv,y ; save it back
00FFEA63 01F089 tfr a,b ; the scancode is needed in accb
dbgk23:
; lbsr DispByteAsHex
; Make sure there is a small delay between scancode reads
00FFF851 08E000014 ldx #20
00FFEA65 08E000014 ldx #20
dbgk3:
00FFF854 0301FF dex
00FFF856 026FFC bne dbgk3
00FFEA68 0301FF dex
00FFEA6A 026FFC bne dbgk3
; switch on scan code
00FFF858 0C10F0 cmpb #SC_KEYUP
00FFF85A 026006 bne dbgk4
00FFF85C 00F120 clr KeyState1 ; make KeyState1 = -1
00FFF85E 000120 neg KeyState1
00FFF860 020FDB bra dbgk2 ; loop back
00FFEA6C 0C10F0 cmpb #SC_KEYUP
00FFEA6E 026004 bne dbgk4
00FFEA70 0D7120 stb KeyState1 ; make KeyState1 <> 0
00FFEA72 020FA2 bra dbgk2 ; loop back
dbgk4:
00FFF862 0C10E0 cmpb #SC_EXTEND
00FFF864 026008 bne dbgk5
00FFF866 096121 lda KeyState2
00FFF868 08A800 ora #$800
00FFF86A 097121 sta KeyState2
00FFF86C 020FCF bra dbgk2
00FFEA74 0C10E0 cmpb #SC_EXTEND
00FFEA76 026008 bne dbgk5
00FFEA78 096121 lda KeyState2
00FFEA7A 08A800 ora #$800
00FFEA7C 097121 sta KeyState2
00FFEA7E 020F96 bra dbgk2
dbgk5:
00FFF86E 0C1014 cmpb #SC_CTRL
00FFF870 026016 bne dbgkNotCtrl
00FFF872 00D120 tst KeyState1
00FFF874 02B008 bmi dbgk7
00FFF876 096121 lda KeyState2
00FFF878 08A004 ora #4
00FFF87A 097121 sta KeyState2
00FFF87C 020006 bra dbgk8
00FFEA80 0C1014 cmpb #SC_CTRL
00FFEA82 026016 bne dbgkNotCtrl
00FFEA84 00D120 tst KeyState1
00FFEA86 026008 bne dbgk7
00FFEA88 096121 lda KeyState2
00FFEA8A 08A004 ora #4
00FFEA8C 097121 sta KeyState2
00FFEA8E 020006 bra dbgk8
dbgk7:
00FFF87E 096121 lda KeyState2
00FFF880 084FFB anda #~4
00FFF882 097121 sta KeyState2
00FFEA90 096121 lda KeyState2
00FFEA92 084FFB anda #~4
00FFEA94 097121 sta KeyState2
dbgk8:
00FFF884 00F120 clr KeyState1
00FFF886 020FB5 bra dbgk2
00FFEA96 00F120 clr KeyState1
00FFEA98 020F7C bra dbgk2
dbgkNotCtrl:
00FFF888 0C1059 cmpb #SC_RSHIFT
00FFF88A 026016 bne dbgkNotRshift
00FFF88C 00D120 tst KeyState1
00FFF88E 02B008 bmi dbgk9
00FFF890 096121 lda KeyState2
00FFF892 08A001 ora #1
00FFF894 097121 sta KeyState2
00FFF896 020006 bra dbgk10
00FFEA9A 0C1059 cmpb #SC_RSHIFT
00FFEA9C 026016 bne dbgkNotRshift
00FFEA9E 00D120 tst KeyState1
00FFEAA0 026008 bne dbgk9
00FFEAA2 096121 lda KeyState2
00FFEAA4 08A001 ora #1
00FFEAA6 097121 sta KeyState2
00FFEAA8 020006 bra dbgk10
dbgk9:
00FFF898 096121 lda KeyState2
00FFF89A 084FFE anda #~1
00FFF89C 097121 sta KeyState2
00FFEAAA 096121 lda KeyState2
00FFEAAC 084FFE anda #~1
00FFEAAE 097121 sta KeyState2
dbgk10:
00FFF89E 00F120 clr KeyState1
00FFF8A0 020F9B bra dbgk2
00FFEAB0 00F120 clr KeyState1
00FFEAB2 020F62 bra dbgk2
dbgkNotRshift:
00FFF8A2 0C1077 cmpb #SC_NUMLOCK
00FFF8A4 026013 bne dbgkNotNumlock
00FFF8A6 096121 lda KeyState2
00FFF8A8 088010 eora #16
00FFF8AA 097121 sta KeyState2
00FFF8AC 096122 lda KeyLED
00FFF8AE 088002 eora #2
00FFF8B0 097122 sta KeyLED
00FFF8B2 01F089 tfr a,b
00FFF8B4 04F clra
00FFF8B5 08DED2 bsr KeybdSetLED
00FFF8B7 020F84 bra dbgk2
00FFEAB4 0C1077 cmpb #SC_NUMLOCK
00FFEAB6 026013 bne dbgkNotNumlock
00FFEAB8 096121 lda KeyState2
00FFEABA 088010 eora #16
00FFEABC 097121 sta KeyState2
00FFEABE 096122 lda KeyLED
00FFEAC0 088002 eora #2
00FFEAC2 097122 sta KeyLED
00FFEAC4 01F089 tfr a,b
00FFEAC6 04F clra
00FFEAC7 08DE40 bsr KeybdSetLED
00FFEAC9 020F4B bra dbgk2
dbgkNotNumlock:
00FFF8B9 0C1058 cmpb #SC_CAPSLOCK
00FFF8BB 026013 bne dbgkNotCapslock
00FFF8BD 096121 lda KeyState2
00FFF8BF 088020 eora #32
00FFF8C1 097121 sta KeyState2
00FFF8C3 096122 lda KeyLED
00FFF8C5 088004 eora #4
00FFF8C7 097122 sta KeyLED
00FFF8C9 01F089 tfr a,b
00FFF8CB 04F clra
00FFF8CC 08DEBB bsr KeybdSetLED
00FFF8CE 020F6D bra dbgk2
00FFEACB 0C1058 cmpb #SC_CAPSLOCK
00FFEACD 026013 bne dbgkNotCapslock
00FFEACF 096121 lda KeyState2
00FFEAD1 088020 eora #32
00FFEAD3 097121 sta KeyState2
00FFEAD5 096122 lda KeyLED
00FFEAD7 088004 eora #4
00FFEAD9 097122 sta KeyLED
00FFEADB 01F089 tfr a,b
00FFEADD 04F clra
00FFEADE 08DE29 bsr KeybdSetLED
00FFEAE0 020F34 bra dbgk2
dbgkNotCapslock:
00FFF8D0 0C107E cmpb #SC_SCROLLLOCK
00FFF8D2 026013 bne dbgkNotScrolllock
00FFF8D4 096121 lda KeyState2
00FFF8D6 088040 eora #64
00FFF8D8 097121 sta KeyState2
00FFF8DA 096122 lda KeyLED
00FFF8DC 088001 eora #1
00FFF8DE 097122 sta KeyLED
00FFF8E0 01F089 tfr a,b
00FFF8E2 04F clra
00FFF8E3 08DEA4 bsr KeybdSetLED
00FFF8E5 020F56 bra dbgk2
00FFEAE2 0C107E cmpb #SC_SCROLLLOCK
00FFEAE4 026013 bne dbgkNotScrolllock
00FFEAE6 096121 lda KeyState2
00FFEAE8 088040 eora #64
00FFEAEA 097121 sta KeyState2
00FFEAEC 096122 lda KeyLED
00FFEAEE 088001 eora #1
00FFEAF0 097122 sta KeyLED
00FFEAF2 01F089 tfr a,b
00FFEAF4 04F clra
00FFEAF5 08DE12 bsr KeybdSetLED
00FFEAF7 020F1D bra dbgk2
dbgkNotScrolllock:
00FFF8E7 0C1011 cmpb #SC_ALT
00FFF8E9 026016 bne dbgkNotAlt
00FFF8EB 00D120 tst KeyState1
00FFF8ED 02B008 bmi dbgk11
00FFF8EF 096121 lda KeyState2
00FFF8F1 08A002 ora #2
00FFF8F3 097121 sta KeyState2
00FFF8F5 020006 bra dbgk12
00FFEAF9 0C1011 cmpb #SC_ALT
00FFEAFB 026016 bne dbgkNotAlt
00FFEAFD 00D120 tst KeyState1
00FFEAFF 026008 bne dbgk11
00FFEB01 096121 lda KeyState2
00FFEB03 08A002 ora #2
00FFEB05 097121 sta KeyState2
00FFEB07 020006 bra dbgk12
dbgk11:
00FFF8F7 096121 lda KeyState2
00FFF8F9 084FFD anda #~2
00FFF8FB 097121 sta KeyState2
00FFEB09 096121 lda KeyState2
00FFEB0B 084FFD anda #~2
00FFEB0D 097121 sta KeyState2
dbgk12:
00FFF8FD 00F120 clr KeyState1
00FFF8FF 020F3C bra dbgk2
00FFEB0F 00F120 clr KeyState1
00FFEB11 020F03 bra dbgk2
dbgkNotAlt:
00FFF901 00D120 tst KeyState1
00FFF903 027004 beq dbgk13
00FFF905 00F120 clr KeyState1
00FFF907 020F34 bra dbgk2
00FFEB13 00D120 tst KeyState1
00FFEB15 027004 beq dbgk13
00FFEB17 00F120 clr KeyState1
00FFEB19 020EFB bra dbgk2
dbgk13:
00FFF909 096121 lda KeyState2 ; Check for CTRL-ALT-DEL
00FFF90B 084006 anda #6
00FFF90D 081006 cmpa #6
00FFF90F 026008 bne dbgk14
00FFF911 0C1071 cmpb #SC_DEL
00FFF913 026004 bne dbgk14
00FFF915 06E90FFFFFFE jmp [$FFFFFE] ; jump to reset vector
00FFEB1B 096121 lda KeyState2 ; Check for CTRL-ALT-DEL
00FFEB1D 084006 anda #6
00FFEB1F 081006 cmpa #6
00FFEB21 026008 bne dbgk14
00FFEB23 0C1071 cmpb #SC_DEL
00FFEB25 026004 bne dbgk14
00FFEB27 06E90FFFFFFC jmp [$FFFFFC] ; jump to NMI vector
dbgk14:
00FFF919 00D121 tst KeyState2 ; extended code?
00FFF91B 02A00B bpl dbgk15
00FFF91D 096121 lda KeyState2
00FFF91F 0847FF anda #$7FF
00FFF921 097121 sta KeyState2
00FFF923 08EFFF680 ldx #keybdExtendedCodes
00FFF926 020017 bra dbgk18
00FFEB2B 00D121 tst KeyState2 ; extended code?
00FFEB2D 02A00B bpl dbgk15
00FFEB2F 096121 lda KeyState2
00FFEB31 0847FF anda #$7FF
00FFEB33 097121 sta KeyState2
00FFEB35 08EFFE800 ldx #keybdExtendedCodes
00FFEB38 020017 bra dbgk18
dbgk15:
00FFF928 096121 lda KeyState2 ; Is CTRL down?
00FFF92A 085004 bita #4
00FFF92C 027005 beq dbgk16
00FFF92E 08EFFF600 ldx #keybdControlCodes
00FFF931 02000C bra dbgk18
00FFEB3A 096121 lda KeyState2 ; Is CTRL down?
00FFEB3C 085004 bita #4
00FFEB3E 027005 beq dbgk16
00FFEB40 08EFFE780 ldx #keybdControlCodes
00FFEB43 02000C bra dbgk18
dbgk16:
00FFF933 085001 bita #1 ; Is shift down?
00FFF935 027005 beq dbgk17
00FFF937 08EFFF500 ldx #shiftedScanCodes
00FFF93A 020003 bra dbgk18
00FFEB45 085001 bita #1 ; Is shift down?
00FFEB47 027005 beq dbgk17
00FFEB49 08EFFE680 ldx #shiftedScanCodes
00FFEB4C 020003 bra dbgk18
dbgk17:
00FFF93C 08EFFF400 ldx #unshiftedScanCodes
00FFEB4E 08EFFE580 ldx #unshiftedScanCodes
dbgk18:
00FFF93F 03A abx
00FFF940 0E6804 ldb ,x
00FFF942 04F clra
00FFF943 035090 puls x,pc ; and return
00FFEB51 0E690FFFE580 ldb b,x ; load accb with ascii from table
00FFEB55 04F clra
00FFEB56 0350B0 puls x,y,pc ; and return
00FFF945 04B04505904204F041052 fcb "KEYBOARD"
00FFF94C 044
00FFF94D FFF957 fcw KeybdOpen
00FFF94F FFF958 fcw KeybdClose
00FFF951 FFF959 fcw KeybdRead
00FFF953 FFF95A fcw KeybdWrite
00FFF955 FFF95B fcw KeybdSeek
00FFEB58 04B04505904204F041052 fcb "KEYBOARD"
00FFEB5F 044
00FFEB60 FFEB6A fcw KeybdOpen
00FFEB62 FFEB6B fcw KeybdClose
00FFEB64 FFEB6C fcw KeybdRead
00FFEB66 FFEB6D fcw KeybdWrite
00FFEB68 FFEB6E fcw KeybdSeek
; Keyboard Open:
; Initialize the keyboard buffer head and tail indexes
;
KeybdOpen:
00FFF957 039 rts
00FFEB6A 039 rts
; Keyboard Close:
; Nothing to do except maybe clear the keyboard buffer
;
KeybdClose:
00FFF958 039 rts
00FFEB6B 039 rts
;
KeybdRead:
00FFF959 039 rts
00FFEB6C 039 rts
;
KeybdWrite:
00FFF95A 039 rts
00FFEB6D 039 rts
KeybdSeek:
00FFF95B 039 rts
00FFEB6E 039 rts
;==============================================================================
; Serial I/O
;==============================================================================
; ============================================================================
; __
; \\__/ o\ (C) 2022 Robert Finch, Waterloo
; \ __ / All rights reserved.
; \/_// robfinch<remove>@opencores.org
; ||
;
;
; Serial port routines for a WDC6551 compatible circuit.
;
; This source file is free software: you can redistribute it and/or modify
; it under the terms of the GNU Lesser General Public License as published
; by the Free Software Foundation, either version 3 of the License, or
; (at your option) any later version.
;
; This source file is distributed in the hope that it will be useful,
; but WITHOUT ANY WARRANTY; without even the implied warranty of
; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
; GNU General Public License for more details.
;
; You should have received a copy of the GNU General Public License
; along with this program. If not, see <http://www.gnu.org/licenses/>.
;
; ============================================================================
;
;------------------------------------------------------------------------------
; Initialize serial port.
;
; Clear buffer indexes. Two bytes are used for the buffer index even though
; only a single byte is needed. This is for convenience in calculating the
; number of characters in the buffer, done later. The upper byte remains at
; zero.
; The port is initialized for 9600 baud, 1 stop bit and 8 bits data sent.
; The internal baud rate generator is used.
;
; Parameters:
; none
; Modifies:
; d
; Returns:
; none
;------------------------------------------------------------------------------
InitSerial:
SerialInit:
00FFEB6F 04F clra
00FFEB70 05F clrb
00FFEB71 0DD130 std SerHeadRcv-1
00FFEB73 0DD132 std SerTailRcv-1
00FFEB75 0DD135 std SerHeadXmit-1
00FFEB77 0DD137 std SerTailXmit-1
00FFEB79 00F139 clr SerRcvXon
00FFEB7B 00F140 clr SerRcvXoff
00FFEB7D 0150B6FFFFFFFE0 lda COREID
sini1:
00FFEB82 0B1FF0010 cmpa IOFocusID
00FFEB85 026FFB bne sini1
00FFEB87 0C6009 ldb #$09 ; dtr,rts active, rxint enabled, no parity
00FFEB89 0150F7FFFE30102 stb ACIA+ACIA_CMD
00FFEB8E 0C601E ldb #$1E ; baud 9600, 1 stop bit, 8 bit, internal baud gen
00FFEB90 0150F7FFFE30103 stb ACIA+ACIA_CTRL
00FFEB95 0C60A6 ldb #$0A6 ; diable fifos, reset fifos
00FFEB97 0150F7FFFE3010B stb ACIA+ACIA_CTRL2
00FFEB9C 039 rts
;------------------------------------------------------------------------------
; SerialGetChar
;
; Check the serial port buffer to see if there's a char available. If there's
; a char available then return it. If the buffer is almost empty then send an
; XON.
;
; Stack Space:
; 2 words
; Parameters:
; none
; Modifies:
; none
; Returns:
; d = character or -1
;------------------------------------------------------------------------------
SerialGetChar:
00FFEB9D 034030 pshs x,y
00FFEB9F 18E000000 ldy #0
00FFEBA2 01A010 sei ; disable interrupts
00FFEBA4 08D082 bsr SerialRcvCount ; check number of chars in receive buffer
00FFEBA6 0C1008 cmpb #8 ; less than 8?
00FFEBA8 02200C bhi sgc2
00FFEBAA 0D6139 ldb SerRcvXon ; skip sending XON if already sent
00FFEBAC 026008 bne sgc2 ; XON already sent?
00FFEBAE 0C6011 ldb #XON ; if <8 send an XON
00FFEBB0 00F140 clr SerRcvXoff ; clear XOFF status
00FFEBB2 0D7139 stb SerRcvXon ; flag so we don't send it multiple times
00FFEBB4 08D052 bsr SerialPutChar
sgc2:
00FFEBB6 0D6131 ldb SerHeadRcv ; check if anything is in buffer
00FFEBB8 0D1133 cmpb SerTailRcv
00FFEBBA 02700A beq sgcNoChars ; no?
00FFEBBC 08EBFF000 ldx #SerRcvBuf
00FFEBBF 04F clra
00FFEBC0 0E6835 ldb b,x ; get byte from buffer
00FFEBC2 00C131 inc SerHeadRcv ; 4k wrap around
00FFEBC4 020003 bra sgcXit
sgcNoChars:
00FFEBC6 0CCFFFFFF ldd #-1
sgcXit:
00FFEBC9 01C0EF cli
00FFEBCB 0350B0 puls x,y,pc
;------------------------------------------------------------------------------
; SerialPeekChar
;
; Check the serial port buffer to see if there's a char available. If there's
; a char available then return it. But don't update the buffer indexes. No need
; to send an XON here.
;
; Stack Space:
; 0 words
; Parameters:
; none
; Modifies:
; none
; Returns:
; d = character or -1
;------------------------------------------------------------------------------
SerialPeekChar:
00FFEBCD 034011 pshs x,ccr
00FFEBCF 01A010 sei
00FFEBD1 0D6131 ldb SerHeadRcv ; check if anything is in buffer
00FFEBD3 0D1133 cmpb SerTailRcv
00FFEBD5 027008 beq spcNoChars ; no?
00FFEBD7 08EBFF000 ldx #SerRcvBuf
00FFEBDA 04F clra
00FFEBDB 0E6815 ldb b,x ; get byte from buffer
00FFEBDD 020003 bra spcXit
spcNoChars:
00FFEBDF 0CCFFFFFF ldd #-1
spcXit:
00FFEBE2 035091 puls x,ccr,pc
;------------------------------------------------------------------------------
; SerialPeekChar
; Get a character directly from the I/O port. This bypasses the input
; buffer.
;
; Stack Space:
; 0 words
; Parameters:
; none
; Modifies:
; d
; Returns:
; d = character or -1
;------------------------------------------------------------------------------
SerialPeekCharDirect:
00FFEBE4 0150B6FFFFFFFE0 lda COREID ; Ensure we have the IO Focus
00FFEBE9 0B1FF0010 cmpa IOFocusID
00FFEBEC 026014 bne spcd0001
; Disallow interrupts between status read and rx read.
00FFEBEE 01A010 sei
00FFEBF0 0150F6FFFE30101 ldb ACIA+ACIA_STAT
00FFEBF5 0C5008 bitb #8 ; look for Rx not empty
00FFEBF7 027009 beq spcd0001
00FFEBF9 04F clra
00FFEBFA 0150F6FFFE30100 ldb ACIA+ACIA_RX
00FFEBFF 01C0EF cli
00FFEC01 039 rts
spcd0001:
00FFEC02 0CCFFFFFF ldd #-1
00FFEC05 01C0EF cli
00FFEC07 039 rts
;------------------------------------------------------------------------------
; SerialPutChar
; Put a character to the serial transmitter. This routine blocks until the
; transmitter is empty.
;
; Stack Space
; 0 words
; Parameters:
; b = character to put
; Modifies:
; none
;------------------------------------------------------------------------------
SerialPutChar:
00FFEC08 034003 pshs a,ccr
spc0001:
00FFEC0A 0150B6FFFFFFFE0 lda COREID ; Ensure we have the IO Focus
00FFEC0F 0B1FF0010 cmpa IOFocusID
00FFEC12 026FF6 bne spc0001
00FFEC14 01C0EF cli ; provide a window for an interrupt to occur
00FFEC16 01A010 sei
; Between the status read and the transmit do not allow an
; intervening interrupt.
00FFEC18 0150B6FFFE30101 lda ACIA+ACIA_STAT ; wait until the uart indicates tx empty
00FFEC1D 085010 bita #16 ; bit #4 of the status reg
00FFEC1F 027FE9 beq spc0001 ; branch if transmitter is not empty
00FFEC21 0150F7FFFE30100 stb ACIA+ACIA_TX ; send the byte
00FFEC26 035083 puls a,ccr,pc
;------------------------------------------------------------------------------
; Calculate number of character in input buffer
;
; Parameters:
; y = 0 if current core, otherwise reference to core memory area $Cyxxxx
; Returns:
; d = number of bytes in buffer.
;------------------------------------------------------------------------------
SerialRcvCount:
00FFEC28 04F clra
00FFEC29 0E6A08133 ldb SerTailRcv,y
00FFEC2C 0E0A08131 subb SerHeadRcv,y
00FFEC2F 02C009 bge srcXit
00FFEC31 0CC001000 ldd #$1000
00FFEC34 0A3A08131 subd SerHeadRcv,y
00FFEC37 0E3A08133 addd SerTailRcv,y
srcXit:
00FFEC3A 039 rts
;------------------------------------------------------------------------------
; Serial IRQ routine
;
; Keeps looping as long as it finds characters in the ACIA recieve buffer/fifo.
; Received characters are buffered. If the buffer becomes full, new characters
; will be lost.
;
; Parameters:
; none
; Modifies:
; d,x
; Returns:
; none
;------------------------------------------------------------------------------
SerialIRQ:
sirqNxtByte:
00FFEC3B 0150F6FFFE30101 ldb ACIA+ACIA_STAT ; check the status
00FFEC40 0C5008 bitb #$08 ; bit 3 = rx full
00FFEC42 027049 beq notRxInt
00FFEC44 0150F6FFFE30100 ldb ACIA+ACIA_RX ; get data from Rx buffer to clear interrupt
00FFEC49 0C1014 cmpb #CTRLT ; detect special keystroke
00FFEC4B 026000 bne sirq0001
; bsr DumpTraceQueue
sirq0001:
00FFEC4D 034004 pshs b
; Compute receive buffer address
00FFEC4F 0B6FF0010 lda IOFocusID
00FFEC52 048 asla
00FFEC53 048 asla
00FFEC54 048 asla
00FFEC55 048 asla
00FFEC56 08AC00 ora #$C00
00FFEC58 05F clrb
00FFEC59 01F002 tfr d,y
00FFEC5B 035004 puls b
00FFEC5D 0A6A08133 lda SerTailRcv,y ; check if recieve buffer full
00FFEC60 04C inca
00FFEC61 0A1A08131 cmpa SerHeadRcv,y
00FFEC64 027027 beq sirqRxFull
00FFEC66 0A7A08133 sta SerTailRcv,y ; update tail pointer
00FFEC69 04A deca ; backup
00FFEC6A 01E089 exg a,b
00FFEC6C 030A0A000BFF000 leax SerRcvBuf,y ; x = buffer address
00FFEC71 0A7A0F sta b,x ; store recieved byte in buffer
00FFEC73 06DA08140 tst SerRcvXoff,y ; check if xoff already sent
00FFEC76 026FC3 bne sirqNxtByte
00FFEC78 08DFAE bsr SerialRcvCount ; if more than 4080 chars in buffer
00FFEC7A 0C1FF0 cmpb #4080
00FFEC7C 025FBD blo sirqNxtByte
00FFEC7E 0C6013 ldb #XOFF ; send an XOFF
00FFEC80 06FA08139 clr SerRcvXon,y ; clear XON status
00FFEC83 0E7A08140 stb SerRcvXoff,y ; set XOFF status
00FFEC86 0150F7FFFE30100 stb ACIA+ACIA_TX
00FFEC8B 020FAE bra sirqNxtByte ; check the status for another byte
sirqRxFull:
notRxInt:
00FFEC8D 039 rts
nmeSerial:
00FFEC8E 05306507206906106C000 fcb "Serial",0
;------------------------------------------------------------------------------
; Put a string to the serial port.
;
; Parameters:
; d = pointer to string
; Modifies:
; none
; Returns:
; none
;------------------------------------------------------------------------------
SerialPutString:
00FFEC95 034016 pshs d,x
00FFEC97 01F001 tfr d,x
sps2:
00FFEC99 0E6804 ldb ,x
00FFEC9B 027006 beq spsXit
00FFEC9D 030001 inx
00FFEC9F 08DF67 bsr SerialPutChar
00FFECA1 020FF6 bra sps2
spsXit:
00FFECA3 035096 puls d,x,pc
;------------------------------------------------------------------------------
; A little routine to test serial output.
;
; Parameters:
; none
; Modifies:
; none
; Returns:
; none
;------------------------------------------------------------------------------
SerialOutputTest:
00FFECA5 034006 pshs d
00FFECA7 0CCFFECC5 ldd #msgSerialTest
00FFECAA 017FFF6F5 lbsr DisplayString
*** warning 1: Long branch within short branch range could be optimized
00FFECAD 08DEC0 bsr SerialInit
sotst1:
00FFECAF 0C6011 ldb #XON
00FFECB1 08DF55 bsr SerialPutChar
00FFECB3 08DF53 bsr SerialPutChar
00FFECB5 08DF51 bsr SerialPutChar
00FFECB7 0CCFFECC5 ldd #msgSerialTest
00FFECBA 08DFD9 bsr SerialPutString
00FFECBC 01700001B lbsr INCH
00FFECBF 0C1003 cmpb #CTRLC
00FFECC1 026FEC bne sotst1
00FFECC3 035086 puls d,pc
msgSerialTest:
00FFECC5 05306507206906106C020 fcb "Serial port test",CR,LF,0
00FFECCC 07006F072074020074065
00FFECD3 07307400D00A000
;------------------------------------------------------------------------------
; Check if there is a keyboard character available. If so return true (<0)
; otherwise return false (0) in accb.
;------------------------------------------------------------------------------
;
KeybdCheckForKeyDirect:
00FFF95C 020EDB bra DBGCheckForKey
00FFECD8 020D36 bra DBGCheckForKey
;------------------------------------------------------------------------------
;------------------------------------------------------------------------------
INCH:
00FFF95E 0CCFFFFFF ldd #-1 ; block if no key available
00FFF961 020ED8 bra DBGGetKey
00FFECDA 034004 pshs b
INCH2:
00FFECDC 0150F6FFFFFFFE0 ldb COREID
00FFECE1 0F1FF0010 cmpb IOFocusID ; if we do not have focus, block
00FFECE4 026FF6 bne INCH2
; ldb #$800 ; block if no key available, get scancode directly
; bra GetKey
; jsr [CharInVec] ; vector is being overwritten somehow
00FFECE6 017FFFEFB lbsr SerialPeekCharDirect
*** warning 1: Long branch within short branch range could be optimized
00FFECE9 04D tsta
00FFECEA 02B003 bmi INCH1 ; block if no key available
00FFECEC 032601 leas 1,s ; get rid of blocking status
00FFECEE 039 rts
INCH1:
00FFECEF 035004 puls b ; check blocking status
00FFECF1 05D tstb
00FFECF2 02BFE6 bmi INCH ; if blocking, loop
00FFECF4 0CCFFFFFF ldd #-1 ; return -1 if no char available
00FFECF7 039 rts
INCHE:
00FFF963 08DFF9 bsr INCH
00FFF965 020009 bra INCHEK3
00FFECF8 08DFE0 bsr INCH
00FFECFA 020009 bra INCHEK3
INCHEK:
00FFF967 08DFF5 bsr INCH
00FFF969 01507DFFFFFCA00 tst KeybdEcho
00FFF96E 02700B beq INCHEK1
00FFECFC 08DFDC bsr INCH
00FFECFE 01507DFFFFFCA00 tst KeybdEcho
00FFED03 02700C beq INCHEK1
INCHEK3:
00FFF970 08100D cmpa #CR
00FFF972 026005 bne INCHEK2
00FFF974 017FFD75B lbsr CRLF
00FFED05 08100D cmpa #CR
00FFED07 026005 bne INCHEK2
00FFED09 017FFE3C6 lbsr CRLF
*** warning 1: Long branch within short branch range could be optimized
00FFF977 020002 bra INCHEK1
00FFED0C 020003 bra INCHEK1
INCHEK2:
00FFF979 08D920 bsr DisplayChar
00FFED0E 017FFF5D0 lbsr DisplayChar
*** warning 1: Long branch within short branch range could be optimized
INCHEK1:
00FFF97B 039 rts
00FFED11 039 rts
OUTCH:
00FFF97C 06E90F000800 jmp [CharOutVec]
00FFED12 06E90F000800 jmp [CharOutVec]
;------------------------------------------------------------------------------
; r1 0=echo off, non-zero = echo on
1756,8 → 2649,8
;------------------------------------------------------------------------------
;
SetKeyboardEcho:
00FFF980 0150F7FFFFFCA00 stb KeybdEcho
00FFF985 039 rts
00FFED16 0150F7FFFFFCA00 stb KeybdEcho
00FFED1B 039 rts
;------------------------------------------------------------------------------
1766,114 → 2659,1414
;------------------------------------------------------------------------------
ShowSprites:
00FFF986 0150BFFFFE103C0 stx SPRITE_CTRL+SPRITE_EN
00FFF98B 0150FDFFFE103C2 std SPRITE_CTRL+SPRITE_EN+2
00FFF990 039 rts
00FFED1C 0150BFFFFE103C0 stx SPRITE_CTRL+SPRITE_EN
00FFED21 0150FDFFFE103C2 std SPRITE_CTRL+SPRITE_EN+2
00FFED26 039 rts
;==============================================================================
; Femtiki Operating System.
;==============================================================================
OSCallTbl:
00FFED27 000000 fcw 0
00FFED29 000000 fcw 0
00FFED2B 000000 fcw 0
00FFED2D 000000 fcw 0
00FFED2F 000000 fcw 0
00FFED31 000000 fcw 0
00FFED33 000000 fcw 0
00FFED35 000000 fcw 0
00FFED37 000000 fcw 0
00FFED39 000000 fcw 0
00FFED3B 000000 fcw 0
00FFED3D 000000 fcw 0
00FFED3F 000000 fcw 0
00FFED41 000000 fcw 0
00FFED43 000000 fcw 0
00FFED45 000000 fcw 0
00FFED47 000000 fcw 0
00FFED49 000000 fcw 0
00FFED4B 000000 fcw 0
00FFED4D 000000 fcw 0
00FFED4F 000000 fcw 0
00FFED51 000000 fcw 0
00FFED53 FFED84 fcw ReleaseIOFocus
00FFED55 000000 fcw 0
00FFED57 FFED6D fcw RequestIOFocus
OSCall:
; wait for availability
osc1:
00FFED59 07DEF0011 tst OSSEMA+1
00FFED5C 027FFB beq osc1
00FFED5E 058 aslb
00FFED5F 08EFFED27 ldx #OSCallTbl
00FFED62 03A abx
00FFED63 06D804 tst ,x
00FFED65 027002 beq oscx
00FFED67 06E904 jmp [,x]
oscx:
00FFED69 07FEF0011 clr OSSEMA+1
00FFED6C 039 rts
RequestIOFocus:
00FFED6D 0150F6FFFFFFFE0 ldb COREID
00FFED72 08EFF0000 ldx #IOFocusList
00FFED75 03A abx
00FFED76 0A7804 sta ,x
00FFED78 07DFF0010 tst IOFocusID
00FFED7B 126FFFFEB lbne oscx
*** warning 1: Long branch within short branch range could be optimized
00FFED7E 0F7FF0010 stb IOFocusID
00FFED81 016FFFFE5 lbra oscx
*** warning 1: Long branch within short branch range could be optimized
ReleaseIOFocus:
00FFED84 0150F6FFFFFFFE0 ldb COREID
00FFED89 08EFF0000 ldx #IOFocusList
00FFED8C 03A abx
00FFED8D 06F804 clr ,x ; clear the request indicator
00FFED8F 017FFF44F lbsr CopyScreenToVirtualScreen
*** warning 1: Long branch within short branch range could be optimized
00FFED92 0F1FF0010 cmpb IOFocusID ; are we the one with the focus?
00FFED95 126FFFFD1 lbne oscx
*** warning 1: Long branch within short branch range could be optimized
; We had the focus, so now a new core needs the focus.
; Search the focus list for a requestor. If no requester
; is found, give focus to core #1.
00FFED98 08600F lda #15
riof2:
00FFED9A 05C incb
00FFED9B 0C400F andb #15
00FFED9D 03A abx
00FFED9E 06D804 tst ,x
00FFEDA0 026009 bne riof1
00FFEDA2 04A deca
00FFEDA3 026FF5 bne riof2
; If no focus is requested by anyone, give to core #1
00FFEDA5 0C6001 ldb #1
00FFEDA7 086018 lda #24
00FFEDA9 0A7804 sta ,x
riof1:
00FFEDAB 0F7FF0010 stb IOFocusID
00FFEDAE 017FFF3F9 lbsr CopyVirtualScreenToScreen
*** warning 1: Long branch within short branch range could be optimized
00FFEDB1 016FFFFB5 lbra oscx
*** warning 1: Long branch within short branch range could be optimized
;==============================================================================
; Disassembler
;==============================================================================
; ============================================================================
; __
; \\__/ o\ (C) 2013-2022 Robert Finch, Waterloo
; \ __ / All rights reserved.
; \/_// robfinch<remove>@opencores.org
; ||
;
;
; BSD 3-Clause License
; Redistribution and use in source and binary forms, with or without
; modification, are permitted provided that the following conditions are met:
;
; 1. Redistributions of source code must retain the above copyright notice, this
; list of conditions and the following disclaimer.
;
; 2. Redistributions in binary form must reproduce the above copyright notice,
; this list of conditions and the following disclaimer in the documentation
; and/or other materials provided with the distribution.
;
; 3. Neither the name of the copyright holder nor the names of its
; contributors may be used to endorse or promote products derived from
; this software without specific prior written permission.
;
; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
; IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
; DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
; FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
; DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
; SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
; CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
; OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
; OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
;
; ============================================================================
;
; Disassembler
;
;
DIRECT EQU 1
LSREL EQU 2
IMMB EQU 3
SREL EQU 4
NDX EQU 5
EXT EQU 6
IMMW EQU 7
FAREXT EQU 8
distbl1:
; 00 to 0F
00FFEDB4 04E045047020001 fcb "NEG ", DIRECT
00FFEDB9 020020020020000 fcb " ", 0
00FFEDBE 020020020020000 fcb " ", 0
00FFEDC3 04304F04D020001 fcb "COM ", DIRECT
00FFEDC8 04C053052020001 fcb "LSR ", DIRECT
00FFEDCD 020020020020000 fcb " ", 0
00FFEDD2 05204F052020001 fcb "ROR ", DIRECT
00FFEDD7 041053052020001 fcb "ASR ", DIRECT
00FFEDDC 04105304C020001 fcb "ASL ", DIRECT
00FFEDE1 05204F04C020001 fcb "ROL ", DIRECT
00FFEDE6 044045043020001 fcb "DEC ", DIRECT
00FFEDEB 020020020020000 fcb " ", 0
00FFEDF0 04904E043020001 fcb "INC ", DIRECT
00FFEDF5 054053054020001 fcb "TST ", DIRECT
00FFEDFA 04A04D050020001 fcb "JMP ", DIRECT
00FFEDFF 04304C052020001 fcb "CLR ", DIRECT
; 10 to 1F
00FFEE04 020020020020000 fcb " ", 0
00FFEE09 020020020020000 fcb " ", 0
00FFEE0E 04E04F050020000 fcb "NOP ", 0
00FFEE13 05305904E043000 fcb "SYNC", 0
00FFEE18 020020020020000 fcb " ", 0
00FFEE1D 046041052020000 fcb "FAR ", 0
00FFEE22 04C042052041002 fcb "LBRA", LSREL
00FFEE27 04C042053052002 fcb "LBSR", LSREL
00FFEE2C 020020020020000 fcb " ", 0
00FFEE31 044041041020000 fcb "DAA ", 0
00FFEE36 04F052043043003 fcb "ORCC", IMMB
00FFEE3B 020020020020000 fcb " ", 0
00FFEE40 04104E044043003 fcb "ANDC", IMMB
00FFEE45 053045058020000 fcb "SEX ", 0
00FFEE4A 045058047020003 fcb "EXG ", IMMB
00FFEE4F 054046052020003 fcb "TFR ", IMMB
; 20 to 2F
00FFEE54 042052041020004 fcb "BRA ", SREL
00FFEE59 04205204E020004 fcb "BRN ", SREL
00FFEE5E 042048049020004 fcb "BHI ", SREL
00FFEE63 04204C053020004 fcb "BLS ", SREL
00FFEE68 042048053020004 fcb "BHS ", SREL
00FFEE6D 04204C04F020004 fcb "BLO ", SREL
00FFEE72 04204E045020004 fcb "BNE ", SREL
00FFEE77 042045051020004 fcb "BEQ ", SREL
00FFEE7C 042056043020004 fcb "BVC ", SREL
00FFEE81 042056053020004 fcb "BVS ", SREL
00FFEE86 04205004C020004 fcb "BPL ", SREL
00FFEE8B 04204D049020004 fcb "BMI ", SREL
00FFEE90 042047045020004 fcb "BGE ", SREL
00FFEE95 04204C054020004 fcb "BLT ", SREL
00FFEE9A 042047054020004 fcb "BGT ", SREL
00FFEE9F 04204C045020004 fcb "BLE ", SREL
; 30 to 3F
00FFEEA4 04C045041058005 fcb "LEAX", NDX
00FFEEA9 04C045041059005 fcb "LEAY", NDX
00FFEEAE 04C045041053005 fcb "LEAS", NDX
00FFEEB3 04C045041055005 fcb "LEAU", NDX
00FFEEB8 050053048053003 fcb "PSHS", IMMB
00FFEEBD 05005504C053003 fcb "PULS", IMMB
00FFEEC2 050053048055003 fcb "PSHU", IMMB
00FFEEC7 05005504C055003 fcb "PULU", IMMB
00FFEECC 052054046020000 fcb "RTF ", 0
00FFEED1 052054053020000 fcb "RTS ", 0
00FFEED6 041042058020000 fcb "ABX ", 0
00FFEEDB 052054049020000 fcb "RTI ", 0
00FFEEE0 043057041049003 fcb "CWAI", IMMB
00FFEEE5 04D05504C020000 fcb "MUL ", 0
00FFEEEA 020020020020000 fcb " ", 0
00FFEEEF 053057049020000 fcb "SWI ", 0
; 40 to 4F
00FFEEF4 04E045047041000 fcb "NEGA", 0
00FFEEF9 020020020020000 fcb " ", 0
00FFEEFE 020020020020000 fcb " ", 0
00FFEF03 04304F04D041000 fcb "COMA", 0
00FFEF08 04C053052041000 fcb "LSRA", 0
00FFEF0D 020020020020000 fcb " ", 0
00FFEF12 05204F052041000 fcb "RORA", 0
00FFEF17 041053052041000 fcb "ASRA", 0
00FFEF1C 04105304C041000 fcb "ASLA", 0
00FFEF21 05204F04C041000 fcb "ROLA", 0
00FFEF26 044045043041000 fcb "DECA", 0
00FFEF2B 020020020020000 fcb " ", 0
00FFEF30 04904E043041000 fcb "INCA", 0
00FFEF35 054053054041000 fcb "TSTA", 0
00FFEF3A 020020020020000 fcb " ", 0
00FFEF3F 04304C052041000 fcb "CLRA", 0
; 50 to 5F
00FFEF44 04E045047042000 fcb "NEGB", 0
00FFEF49 020020020020000 fcb " ", 0
00FFEF4E 020020020020000 fcb " ", 0
00FFEF53 04304F04D042000 fcb "COMB", 0
00FFEF58 04C053052042000 fcb "LSRB", 0
00FFEF5D 020020020020000 fcb " ", 0
00FFEF62 05204F052042000 fcb "RORB", 0
00FFEF67 041053052042000 fcb "ASRB", 0
00FFEF6C 04105304C042000 fcb "ASLB", 0
00FFEF71 05204F04C042000 fcb "ROLB", 0
00FFEF76 044045043042000 fcb "DECB", 0
00FFEF7B 020020020020000 fcb " ", 0
00FFEF80 04904E043042000 fcb "INCB", 0
00FFEF85 054053054042000 fcb "TSTB", 0
00FFEF8A 020020020020000 fcb " ", 0
00FFEF8F 04304C052042000 fcb "CLRB", 0
; 60 to 6F
00FFEF94 04E045047020005 fcb "NEG ", NDX
00FFEF99 020020020020000 fcb " ", 0
00FFEF9E 020020020020000 fcb " ", 0
00FFEFA3 04304F04D020005 fcb "COM ", NDX
00FFEFA8 04C053052020005 fcb "LSR ", NDX
00FFEFAD 020020020020000 fcb " ", 0
00FFEFB2 05204F052020005 fcb "ROR ", NDX
00FFEFB7 041053052020005 fcb "ASR ", NDX
00FFEFBC 04105304C020005 fcb "ASL ", NDX
00FFEFC1 05204F04C020005 fcb "ROL ", NDX
00FFEFC6 044045043020005 fcb "DEC ", NDX
00FFEFCB 020020020020000 fcb " ", 0
00FFEFD0 04904E043020005 fcb "INC ", NDX
00FFEFD5 054053054020005 fcb "TST ", NDX
00FFEFDA 04A04D050020005 fcb "JMP ", NDX
00FFEFDF 04304C052020005 fcb "CLR ", NDX
; 70 to 7F
00FFEFE4 04E045047020006 fcb "NEG ", EXT
00FFEFE9 020020020020000 fcb " ", 0
00FFEFEE 020020020020000 fcb " ", 0
00FFEFF3 04304F04D020006 fcb "COM ", EXT
00FFEFF8 04C053052020006 fcb "LSR ", EXT
00FFEFFD 020020020020000 fcb " ", 0
00FFF002 05204F052020006 fcb "ROR ", EXT
00FFF007 041053052020006 fcb "ASR ", EXT
00FFF00C 04105304C020006 fcb "ASL ", EXT
00FFF011 05204F04C020006 fcb "ROL ", EXT
00FFF016 044045043020006 fcb "DEC ", EXT
00FFF01B 020020020020000 fcb " ", 0
00FFF020 04904E043020006 fcb "INC ", EXT
00FFF025 054053054020006 fcb "TST ", EXT
00FFF02A 04A04D050020006 fcb "JMP ", EXT
00FFF02F 04304C052020006 fcb "CLR ", EXT
; 80 to 8F
00FFF034 053055042041003 fcb "SUBA", IMMB
00FFF039 04304D050041003 fcb "CMPA", IMMB
00FFF03E 053042043041003 fcb "SBCA", IMMB
00FFF043 053055042044007 fcb "SUBD", IMMW
00FFF048 04104E044041003 fcb "ANDA", IMMB
00FFF04D 042049054041003 fcb "BITA", IMMB
00FFF052 04C044041020003 fcb "LDA ", IMMB
00FFF057 020020020020000 fcb " ", 0
00FFF05C 04504F052041003 fcb "EORA", IMMB
00FFF061 041044043041003 fcb "ADCA", IMMB
00FFF066 04F052041020003 fcb "ORA ", IMMB
00FFF06B 041044044041003 fcb "ADDA", IMMB
00FFF070 04304D050058007 fcb "CMPX", IMMW
00FFF075 042053052020004 fcb "BSR ", SREL
00FFF07A 04C044058020007 fcb "LDX ", IMMW
00FFF07F 04A04D046020008 fcb "JMF ", FAREXT
; 90 to 9F
00FFF084 053055042041001 fcb "SUBA", DIRECT
00FFF089 04304D050041001 fcb "CMPA", DIRECT
00FFF08E 053042043041001 fcb "SBCA", DIRECT
00FFF093 053055042044001 fcb "SUBD", DIRECT
00FFF098 04104E044041001 fcb "ANDA", DIRECT
00FFF09D 042049054041001 fcb "BITA", DIRECT
00FFF0A2 04C044041020001 fcb "LDA ", DIRECT
00FFF0A7 053054041020001 fcb "STA ", DIRECT
00FFF0AC 04504F052041001 fcb "EORA", DIRECT
00FFF0B1 041044043041001 fcb "ADCA", DIRECT
00FFF0B6 04F052041020001 fcb "ORA ", DIRECT
00FFF0BB 041044044041001 fcb "ADDA", DIRECT
00FFF0C0 04304D050058001 fcb "CMPX", DIRECT
00FFF0C5 04A053052020001 fcb "JSR ", DIRECT
00FFF0CA 04C044058020001 fcb "LDX ", DIRECT
00FFF0CF 053054058020001 fcb "STX ", DIRECT
; A0 to AF
00FFF0D4 053055042041005 fcb "SUBA", NDX
00FFF0D9 04304D050041005 fcb "CMPA", NDX
00FFF0DE 053042043041005 fcb "SBCA", NDX
00FFF0E3 053055042044005 fcb "SUBD", NDX
00FFF0E8 04104E044041005 fcb "ANDA", NDX
00FFF0ED 042049054041005 fcb "BITA", NDX
00FFF0F2 04C044041020005 fcb "LDA ", NDX
00FFF0F7 053054041020005 fcb "STA ", NDX
00FFF0FC 04504F052041005 fcb "EORA", NDX
00FFF101 041044043041005 fcb "ADCA", NDX
00FFF106 04F052041020005 fcb "ORA ", NDX
00FFF10B 041044044041005 fcb "ADDA", NDX
00FFF110 04304D050058005 fcb "CMPX", NDX
00FFF115 04A053052020005 fcb "JSR ", NDX
00FFF11A 04C044058020005 fcb "LDX ", NDX
00FFF11F 053054058020005 fcb "STX ", NDX
; B0 to BF
00FFF124 053055042041006 fcb "SUBA", EXT
00FFF129 04304D050041006 fcb "CMPA", EXT
00FFF12E 053042043041006 fcb "SBCA", EXT
00FFF133 053055042044006 fcb "SUBD", EXT
00FFF138 04104E044041006 fcb "ANDA", EXT
00FFF13D 042049054041006 fcb "BITA", EXT
00FFF142 04C044041020006 fcb "LDA ", EXT
00FFF147 053054041020006 fcb "STA ", EXT
00FFF14C 04504F052041006 fcb "EORA", EXT
00FFF151 041044043041006 fcb "ADCA", EXT
00FFF156 04F052041020006 fcb "ORA ", EXT
00FFF15B 041044044041006 fcb "ADDA", EXT
00FFF160 04304D050058006 fcb "CMPX", EXT
00FFF165 04A053052020006 fcb "JSR ", EXT
00FFF16A 04C044058020006 fcb "LDX ", EXT
00FFF16F 053054058020006 fcb "STX ", EXT
; C0 to CF
00FFF174 053055042042003 fcb "SUBB", IMMB
00FFF179 04304D050042003 fcb "CMPB", IMMB
00FFF17E 053042043062003 fcb "SBCb", IMMB
00FFF183 041044044044007 fcb "ADDD", IMMW
00FFF188 04104E044042003 fcb "ANDB", IMMB
00FFF18D 042049054042003 fcb "BITB", IMMB
00FFF192 04C044042020003 fcb "LDB ", IMMB
00FFF197 020020020020000 fcb " ", 0
00FFF19C 04504F052042003 fcb "EORB", IMMB
00FFF1A1 041044043042003 fcb "ADCB", IMMB
00FFF1A6 04F052042020003 fcb "ORB ", IMMB
00FFF1AB 041044044042003 fcb "ADDB", IMMB
00FFF1B0 04C044044020007 fcb "LDD ", IMMW
00FFF1B5 020020020020004 fcb " ", SREL
00FFF1BA 04C044055020007 fcb "LDU ", IMMW
00FFF1BF 04A053046020008 fcb "JSF ", FAREXT
; D0 to DF
00FFF1C4 053055042042001 fcb "SUBB", DIRECT
00FFF1C9 04304D050042001 fcb "CMPB", DIRECT
00FFF1CE 053042043042001 fcb "SBCB", DIRECT
00FFF1D3 041044044044001 fcb "ADDD", DIRECT
00FFF1D8 04104E044042001 fcb "ANDB", DIRECT
00FFF1DD 042049054042001 fcb "BITB", DIRECT
00FFF1E2 04C044042020001 fcb "LDB ", DIRECT
00FFF1E7 053054042020001 fcb "STB ", DIRECT
00FFF1EC 04504F052042001 fcb "EORB", DIRECT
00FFF1F1 041044043042001 fcb "ADCB", DIRECT
00FFF1F6 04F052042020001 fcb "ORB ", DIRECT
00FFF1FB 041044044042001 fcb "ADDB", DIRECT
00FFF200 04C044044020001 fcb "LDD ", DIRECT
00FFF205 053054044020001 fcb "STD ", DIRECT
00FFF20A 04C044055020001 fcb "LDU ", DIRECT
00FFF20F 053054055020001 fcb "STU ", DIRECT
; E0 to EF
00FFF214 053055042042005 fcb "SUBB", NDX
00FFF219 04304D050042005 fcb "CMPB", NDX
00FFF21E 053042043042005 fcb "SBCB", NDX
00FFF223 041044044044005 fcb "ADDD", NDX
00FFF228 04104E044042005 fcb "ANDB", NDX
00FFF22D 042049054042005 fcb "BITB", NDX
00FFF232 04C044042020005 fcb "LDB ", NDX
00FFF237 053054042020005 fcb "STB ", NDX
00FFF23C 04504F052042005 fcb "EORB", NDX
00FFF241 041044043042005 fcb "ADCB", NDX
00FFF246 04F052042020005 fcb "ORB ", NDX
00FFF24B 041044044042005 fcb "ADDB", NDX
00FFF250 04C044044020005 fcb "LDD ", NDX
00FFF255 053054044020005 fcb "STD ", NDX
00FFF25A 04C044055020005 fcb "LDU ", NDX
00FFF25F 053054055020005 fcb "STU ", NDX
; F0 to FF
00FFF264 053055042042006 fcb "SUBB", EXT
00FFF269 04304D050042006 fcb "CMPB", EXT
00FFF26E 053042043042006 fcb "SBCB", EXT
00FFF273 041044044044006 fcb "ADDD", EXT
00FFF278 04104E044042006 fcb "ANDB", EXT
00FFF27D 042049054042006 fcb "BITB", EXT
00FFF282 04C044042020006 fcb "LDB ", EXT
00FFF287 053054042020006 fcb "STB ", EXT
00FFF28C 04504F052042006 fcb "EORB", EXT
00FFF291 041044043042006 fcb "ADCB", EXT
00FFF296 04F052042020006 fcb "ORB ", EXT
00FFF29B 041044044042006 fcb "ADDB", EXT
00FFF2A0 04C044044020006 fcb "LDD ", EXT
00FFF2A5 053054044020006 fcb "STD ", EXT
00FFF2AA 04C044055020006 fcb "LDU ", EXT
00FFF2AF 053054055020006 fcb "STU ", EXT
; 120 to 12F
distbl2:
00FFF2B4 04C042052041 fcb "LBRA"
00FFF2B8 04C04205204E fcb "LBRN"
00FFF2BC 04C042048049 fcb "LBHI"
00FFF2C0 04C04204C053 fcb "LBLS"
00FFF2C4 04C042048053 fcb "LBHS"
00FFF2C8 04C04204C04F fcb "LBLO"
00FFF2CC 04C04204E045 fcb "LBNE"
00FFF2D0 04C042045051 fcb "LBEQ"
00FFF2D4 04C042056043 fcb "LBVC"
00FFF2D8 04C042056053 fcb "LBVS"
00FFF2DC 04C04205004C fcb "LBPL"
00FFF2E0 04C04204D049 fcb "LBMI"
00FFF2E4 04C042047045 fcb "LBGE"
00FFF2E8 04C04204C054 fcb "LBLT"
00FFF2EC 04C042047054 fcb "LBGT"
00FFF2F0 04C04204C045 fcb "LBLE"
distbl3:
00FFF2F4 13F fcb $13F
00FFF2F5 183 fcb $183
00FFF2F6 18C fcb $18C
00FFF2F7 18E fcb $18E
00FFF2F8 193 fcb $193
00FFF2F9 19C fcb $19C
00FFF2FA 19E fcb $19E
00FFF2FB 19F fcb $19F
00FFF2FC 1A3 fcb $1A3
00FFF2FD 1AC fcb $1AC
00FFF2FE 1AE fcb $1AE
00FFF2FF 1AF fcb $1AF
00FFF300 1B3 fcb $1B3
00FFF301 1BC fcb $1BC
00FFF302 1BE fcb $1BE
00FFF303 1BF fcb $1BF
00FFF304 1CE fcb $1CE
00FFF305 1DE fcb $1DE
00FFF306 1DF fcb $1DF
00FFF307 1EE fcb $1EE
00FFF308 1EF fcb $1EF
00FFF309 1FE fcb $1FE
00FFF30A 1FF fcb $1FF
00FFF30B 23F fcb $23F
00FFF30C 283 fcb $283
00FFF30D 28C fcb $28C
00FFF30E 293 fcb $293
00FFF30F 29C fcb $29C
00FFF310 2A3 fcb $2A3
00FFF311 2AC fcb $2AC
00FFF312 2B3 fcb $2B3
00FFF313 2BC fcb $2BC
distbl4:
00FFF314 053057049032000 fcb "SWI2", 0
00FFF319 04304D050044007 fcb "CMPD", IMMW
00FFF31E 04304D050059007 fcb "CMPY", IMMW
00FFF323 04C044059020007 fcb "LDY ", IMMW
00FFF328 04304D050044001 fcb "CMPD", DIRECT
00FFF32D 04304D050059001 fcb "CMPY", DIRECT
00FFF332 04C044059020001 fcb "LDY ", DIRECT
00FFF337 053054059020001 fcb "STY ", DIRECT
00FFF33C 04304D050044005 fcb "CMPD", NDX
00FFF341 04304D050059005 fcb "CMPY", NDX
00FFF346 04C044059020005 fcb "LDY ", NDX
00FFF34B 053054059020005 fcb "STY ", NDX
00FFF350 04304D050044006 fcb "CMPD", EXT
00FFF355 04304D050059006 fcb "CMPY", EXT
00FFF35A 04C044059020006 fcb "LDY ", EXT
00FFF35F 053054059020006 fcb "STY ", EXT
00FFF364 04C044053020007 fcb "LDS ", IMMW
00FFF369 04C044053020001 fcb "LDS ", DIRECT
00FFF36E 053054053020001 fcb "STS ", DIRECT
00FFF373 04C044053020005 fcb "LDS ", NDX
00FFF378 053054053020005 fcb "STS ", NDX
00FFF37D 04C044053020006 fcb "LDS ", EXT
00FFF382 053054053020006 fcb "STS ", EXT
00FFF387 053057049033000 fcb "SWI3", 0
00FFF38C 04304D050055007 fcb "CMPU", IMMW
00FFF391 04304D050053007 fcb "CMPS", IMMW
00FFF396 04304D050055001 fcb "CMPU", DIRECT
00FFF39B 04304D050053001 fcb "CMPS", DIRECT
00FFF3A0 04304D050055005 fcb "CMPU", NDX
00FFF3A5 04304D050053005 fcb "CMPS", NDX
00FFF3AA 04304D050055006 fcb "CMPU", EXT
00FFF3AF 04304D050053006 fcb "CMPS", EXT
disassem:
00FFF3B4 0170005FE lbsr GetTwoParams
00FFF3B7 017FFDD18 lbsr CRLF
*** warning 1: Long branch within short branch range could be optimized
00FFF3BA 1BE000922 ldy mon_r1+2
disLoop1:
00FFF3BD 01F020 tfr y,d
00FFF3BF 017FFF02B lbsr DispWordAsHex
*** warning 1: Long branch within short branch range could be optimized
00FFF3C2 0C6020 ldb #' '
00FFF3C4 017FFF94B lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF3C7 0E6A00 ldb ,y+
00FFF3C9 0C5300 bitb #$300
00FFF3CB 126000400 lbne dis1
dis20:
00FFF3CE 08EFFEDB4 ldx #distbl1
dis23:
00FFF3D1 086005 lda #5
00FFF3D3 03D mul
00FFF3D4 03A abx
00FFF3D5 0E6800 ldb ,x+
00FFF3D7 017FFF938 lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF3DA 0E6800 ldb ,x+
00FFF3DC 017FFF933 lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF3DF 0E6800 ldb ,x+
00FFF3E1 017FFF92E lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF3E4 0E6800 ldb ,x+
00FFF3E6 017FFF929 lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF3E9 0C6020 ldb #' '
00FFF3EB 017FFF924 lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF3EE 0E6800 ldb ,x+
00FFF3F0 12700042E lbeq disNextLine
00FFF3F3 0C1001 cmpb #DIRECT
00FFF3F5 026008 bne disNotDirect
00FFF3F7 0E6A00 ldb ,y+
00FFF3F9 017FFEFFA lbsr DispByteAsHex
*** warning 1: Long branch within short branch range could be optimized
00FFF3FC 016000422 lbra disNextLine
disNotDirect:
00FFF3FF 0C1002 cmpb #LSREL
00FFF401 02600C bne disNotLRel
dis21:
00FFF403 0ECA01 ldd ,y++
dis2:
00FFF405 030A0B leax d,y
00FFF407 01F010 tfr x,d
00FFF409 017FFEFE1 lbsr DispWordAsHex
*** warning 1: Long branch within short branch range could be optimized
00FFF40C 016000412 lbra disNextLine
disNotLRel:
00FFF40F 0C1004 cmpb #SREL
00FFF411 026005 bne disNotRel
00FFF413 0E6A00 ldb ,y+
00FFF415 04F clra
00FFF416 020FED bra dis2
disNotRel:
00FFF418 0C1005 cmpb #NDX
00FFF41A 026385 bne disNotNdx
00FFF41C 0E6A00 ldb ,y+
00FFF41E 0C5800 bitb #$800
00FFF420 02601E bne disNot9 ; test for offset 9 mode
00FFF422 034004 pshs b
00FFF424 0C41FF andb #$1FF ; mask to offset bits
00FFF426 04F clra ;
00FFF427 0C5100 bitb #$100 ; test for negative offset
00FFF429 027003 beq dis3
00FFF42B 04A deca ; sign extend offset
00FFF42C 0CAE00 orb #$E00
dis3:
00FFF42E 017FFEFBC lbsr DispWordAsHex
*** warning 1: Long branch within short branch range could be optimized
00FFF431 0C602C ldb #','
00FFF433 017FFF8DC lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF436 035004 puls b
00FFF438 08D3F7 bsr disNdxReg
00FFF43A 017FFF8D5 lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF43D 0160003E1 lbra disNextLine
disNot9:
00FFF440 034004 pshs b
00FFF442 0C5100 bitb #$100 ; check if indirect
00FFF444 026005 bne dis4
00FFF446 0C605B ldb #'['
00FFF448 017FFF8C7 lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
dis4:
00FFF44B 0E6E04 ldb ,s ; get back b
00FFF44D 0C400F andb #15
00FFF44F 026030 bne disNotRplus
00FFF451 0E6E04 ldb ,s
00FFF453 0C5080 bitb #$80 ; outer indexed?
00FFF455 026005 bne dis5
00FFF457 0C605D ldb #']'
00FFF459 017FFF8B6 lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
dis5:
00FFF45C 0C602C ldb #','
00FFF45E 017FFF8B1 lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF461 0E6E04 ldb ,s
00FFF463 08D3CC bsr disNdxReg
00FFF465 017FFF8AA lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF468 0C602B ldb #'+'
00FFF46A 017FFF8A5 lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF46D 035004 puls b
00FFF46F 0C5100 bitb #$100
00FFF471 1260003AD lbne disNextLine
00FFF474 0C5080 bitb #$80
00FFF476 1260003A8 lbne disNextLine
00FFF479 0C605D ldb #']'
00FFF47B 017FFF894 lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF47E 0160003A0 lbra disNextLine
disNotRplus:
00FFF481 0C1001 cmpb #1
00FFF483 026033 bne disNotRplusplus
00FFF485 0E6E04 ldb ,s
00FFF487 0C5080 bitb #$80 ; outer indexed?
00FFF489 026005 bne dis6
00FFF48B 0C605D ldb #']'
00FFF48D 017FFF882 lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
dis6:
00FFF490 0C602C ldb #','
00FFF492 017FFF87D lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF495 0E6E04 ldb ,s
00FFF497 08D398 bsr disNdxReg
00FFF499 017FFF876 lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF49C 0C602B ldb #'+'
00FFF49E 017FFF871 lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF4A1 017FFF86E lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF4A4 035004 puls b
00FFF4A6 0C5100 bitb #$100
00FFF4A8 126000376 lbne disNextLine
00FFF4AB 0C5080 bitb #$80
00FFF4AD 126000371 lbne disNextLine
00FFF4B0 0C605D ldb #']'
00FFF4B2 017FFF85D lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF4B5 016000369 lbra disNextLine
disNotRplusplus:
00FFF4B8 0C1002 cmpb #2
00FFF4BA 026030 bne disNotRminus
00FFF4BC 0E6E04 ldb ,s
00FFF4BE 0C5080 bitb #$80 ; outer indexed?
00FFF4C0 026005 bne dis7
00FFF4C2 0C605D ldb #']'
00FFF4C4 017FFF84B lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
dis7:
00FFF4C7 0C602C ldb #','
00FFF4C9 017FFF846 lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF4CC 0E6E04 ldb ,s
00FFF4CE 08D361 bsr disNdxReg
00FFF4D0 017FFF83F lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF4D3 0C602D ldb #'-'
00FFF4D5 017FFF83A lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF4D8 035004 puls b
00FFF4DA 0C5100 bitb #$100
00FFF4DC 126000342 lbne disNextLine
00FFF4DF 0C5080 bitb #$80
00FFF4E1 12600033D lbne disNextLine
00FFF4E4 0C605D ldb #']'
00FFF4E6 017FFF829 lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF4E9 016000335 lbra disNextLine
disNotRminus:
00FFF4EC 0C1003 cmpb #3
00FFF4EE 026033 bne disNotRminusminus
00FFF4F0 0E6E04 ldb ,s
00FFF4F2 0C5080 bitb #$80 ; outer indexed?
00FFF4F4 026005 bne dis8
00FFF4F6 0C605D ldb #']'
00FFF4F8 017FFF817 lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
dis8:
00FFF4FB 0C602C ldb #','
00FFF4FD 017FFF812 lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF500 0E6E04 ldb ,s
00FFF502 08D32D bsr disNdxReg
00FFF504 017FFF80B lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF507 0C602D ldb #'-'
00FFF509 017FFF806 lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF50C 017FFF803 lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF50F 035004 puls b
00FFF511 0C5100 bitb #$100
00FFF513 12600030B lbne disNextLine
00FFF516 0C5080 bitb #$80
00FFF518 126000306 lbne disNextLine
00FFF51B 0C605D ldb #']'
00FFF51D 017FFF7F2 lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF520 0160002FE lbra disNextLine
disNotRminusminus:
00FFF523 0C1004 cmpb #4
00FFF525 02602B bne disNotR
00FFF527 0E6E04 ldb ,s
00FFF529 0C5080 bitb #$80 ; outer indexed?
00FFF52B 026005 bne dis9
00FFF52D 0C605D ldb #']'
00FFF52F 017FFF7E0 lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
dis9:
00FFF532 0C602C ldb #','
00FFF534 017FFF7DB lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF537 0E6E04 ldb ,s
00FFF539 08D2F6 bsr disNdxReg
00FFF53B 017FFF7D4 lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF53E 035004 puls b
00FFF540 0C5100 bitb #$100
00FFF542 1260002DC lbne disNextLine
00FFF545 0C5080 bitb #$80
00FFF547 1260002D7 lbne disNextLine
00FFF54A 0C605D ldb #']'
00FFF54C 017FFF7C3 lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF54F 0160002CF lbra disNextLine
disNotR:
00FFF552 0C1005 cmpb #5
00FFF554 026038 bne disNotBOffs
00FFF556 0C6042 ldb #'B'
00FFF558 017FFF7B7 lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF55B 0E6E04 ldb ,s
00FFF55D 0C5080 bitb #$80 ; outer indexed?
00FFF55F 026005 bne dis10
00FFF561 0C605D ldb #']'
00FFF563 017FFF7AC lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
dis10:
00FFF566 0C602C ldb #','
00FFF568 017FFF7A7 lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF56B 0E6E04 ldb ,s
00FFF56D 08D2C2 bsr disNdxReg
00FFF56F 017FFF7A0 lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF572 0C602D ldb #'-'
00FFF574 017FFF79B lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF577 017FFF798 lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF57A 035004 puls b
00FFF57C 0C5100 bitb #$100
00FFF57E 1260002A0 lbne disNextLine
00FFF581 0C5080 bitb #$80
00FFF583 12600029B lbne disNextLine
00FFF586 0C605D ldb #']'
00FFF588 017FFF787 lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF58B 016000293 lbra disNextLine
disNotBOffs:
00FFF58E 0C1006 cmpb #6
00FFF590 026038 bne disNotAOffs
00FFF592 0C6041 ldb #'A'
00FFF594 017FFF77B lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF597 0E6E04 ldb ,s
00FFF599 0C5080 bitb #$80 ; outer indexed?
00FFF59B 026005 bne dis11
00FFF59D 0C605D ldb #']'
00FFF59F 017FFF770 lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
dis11:
00FFF5A2 0C602C ldb #','
00FFF5A4 017FFF76B lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF5A7 0E6E04 ldb ,s
00FFF5A9 08D286 bsr disNdxReg
00FFF5AB 017FFF764 lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF5AE 0C602D ldb #'-'
00FFF5B0 017FFF75F lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF5B3 017FFF75C lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF5B6 035004 puls b
00FFF5B8 0C5100 bitb #$100
00FFF5BA 126000264 lbne disNextLine
00FFF5BD 0C5080 bitb #$80
00FFF5BF 12600025F lbne disNextLine
00FFF5C2 0C605D ldb #']'
00FFF5C4 017FFF74B lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF5C7 016000257 lbra disNextLine
disNotAOffs:
00FFF5CA 0C1008 cmpb #8
00FFF5CC 026039 bne disNotBO
00FFF5CE 0E6A00 ldb ,y+
00FFF5D0 01D sex
00FFF5D1 017FFEE19 lbsr DispWordAsHex
*** warning 1: Long branch within short branch range could be optimized
00FFF5D4 0E6E04 ldb ,s
00FFF5D6 0C5080 bitb #$80 ; outer indexed?
00FFF5D8 026005 bne dis12
00FFF5DA 0C605D ldb #']'
00FFF5DC 017FFF733 lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
dis12:
00FFF5DF 0C602C ldb #','
00FFF5E1 017FFF72E lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF5E4 0E6E04 ldb ,s
00FFF5E6 08D249 bsr disNdxReg
00FFF5E8 017FFF727 lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF5EB 0C602D ldb #'-'
00FFF5ED 017FFF722 lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF5F0 017FFF71F lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF5F3 035004 puls b
00FFF5F5 0C5100 bitb #$100
00FFF5F7 126000227 lbne disNextLine
00FFF5FA 0C5080 bitb #$80
00FFF5FC 126000222 lbne disNextLine
00FFF5FF 0C605D ldb #']'
00FFF601 017FFF70E lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF604 01600021A lbra disNextLine
disNotBO:
00FFF607 0C1009 cmpb #9
00FFF609 026038 bne disNotWO
00FFF60B 0ECA01 ldd ,y++
00FFF60D 017FFEDDD lbsr DispWordAsHex
*** warning 1: Long branch within short branch range could be optimized
00FFF610 0E6E04 ldb ,s
00FFF612 0C5080 bitb #$80 ; outer indexed?
00FFF614 026005 bne dis13
00FFF616 0C605D ldb #']'
00FFF618 017FFF6F7 lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
dis13:
00FFF61B 0C602C ldb #','
00FFF61D 017FFF6F2 lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF620 0E6E04 ldb ,s
00FFF622 08D20D bsr disNdxReg
00FFF624 017FFF6EB lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF627 0C602D ldb #'-'
00FFF629 017FFF6E6 lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF62C 017FFF6E3 lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF62F 035004 puls b
00FFF631 0C5100 bitb #$100
00FFF633 1260001EB lbne disNextLine
00FFF636 0C5080 bitb #$80
00FFF638 1260001E6 lbne disNextLine
00FFF63B 0C605D ldb #']'
00FFF63D 017FFF6D2 lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF640 0160001DE lbra disNextLine
disNotWO:
00FFF643 0C100A cmpb #10
00FFF645 02603D bne disNotTO
00FFF647 0E6A01 ldb ,y++
00FFF649 017FFEDAA lbsr DispByteAsHex
*** warning 1: Long branch within short branch range could be optimized
00FFF64C 0ECA01 ldd ,y++
00FFF64E 017FFED9C lbsr DispWordAsHex
*** warning 1: Long branch within short branch range could be optimized
00FFF651 0E6E04 ldb ,s
00FFF653 0C5080 bitb #$80 ; outer indexed?
00FFF655 026005 bne dis14
00FFF657 0C605D ldb #']'
00FFF659 017FFF6B6 lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
dis14:
00FFF65C 0C602C ldb #','
00FFF65E 017FFF6B1 lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF661 0E6E04 ldb ,s
00FFF663 08D1CC bsr disNdxReg
00FFF665 017FFF6AA lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF668 0C602D ldb #'-'
00FFF66A 017FFF6A5 lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF66D 017FFF6A2 lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF670 035004 puls b
00FFF672 0C5100 bitb #$100
00FFF674 1260001AA lbne disNextLine
00FFF677 0C5080 bitb #$80
00FFF679 1260001A5 lbne disNextLine
00FFF67C 0C605D ldb #']'
00FFF67E 017FFF691 lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF681 01600019D lbra disNextLine
disNotTO:
00FFF684 0C100B cmpb #11
00FFF686 026038 bne disNotDOffs
00FFF688 0C6044 ldb #'D'
00FFF68A 017FFF685 lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF68D 0E6E04 ldb ,s
00FFF68F 0C5080 bitb #$80 ; outer indexed?
00FFF691 026005 bne dis15
00FFF693 0C605D ldb #']'
00FFF695 017FFF67A lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
dis15:
00FFF698 0C602C ldb #','
00FFF69A 017FFF675 lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF69D 0E6E04 ldb ,s
00FFF69F 08D190 bsr disNdxReg
00FFF6A1 017FFF66E lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF6A4 0C602D ldb #'-'
00FFF6A6 017FFF669 lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF6A9 017FFF666 lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF6AC 035004 puls b
00FFF6AE 0C5100 bitb #$100
00FFF6B0 12600016E lbne disNextLine
00FFF6B3 0C5080 bitb #$80
00FFF6B5 126000169 lbne disNextLine
00FFF6B8 0C605D ldb #']'
00FFF6BA 017FFF655 lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF6BD 016000161 lbra disNextLine
disNotDOffs:
00FFF6C0 0C100C cmpb #12
00FFF6C2 026040 bne disNotPBO
00FFF6C4 0E6A00 ldb ,y+
00FFF6C6 01D sex
00FFF6C7 017FFED23 lbsr DispWordAsHex
*** warning 1: Long branch within short branch range could be optimized
00FFF6CA 0E6E04 ldb ,s
00FFF6CC 0C5080 bitb #$80 ; outer indexed?
00FFF6CE 026005 bne dis16
00FFF6D0 0C605D ldb #']'
00FFF6D2 017FFF63D lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
dis16:
00FFF6D5 0C602C ldb #','
00FFF6D7 017FFF638 lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF6DA 0E6E04 ldb ,s
00FFF6DC 08D153 bsr disNdxReg
00FFF6DE 0C6050 ldb #'P'
00FFF6E0 017FFF62F lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF6E3 0C6043 ldb #'C'
00FFF6E5 017FFF62A lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF6E8 0C602D ldb #'-'
00FFF6EA 017FFF625 lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF6ED 017FFF622 lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF6F0 035004 puls b
00FFF6F2 0C5100 bitb #$100
00FFF6F4 12600012A lbne disNextLine
00FFF6F7 0C5080 bitb #$80
00FFF6F9 126000125 lbne disNextLine
00FFF6FC 0C605D ldb #']'
00FFF6FE 017FFF611 lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF701 01600011D lbra disNextLine
disNotPBO:
00FFF704 0C100D cmpb #13
00FFF706 02603F bne disNotPWO
00FFF708 0ECA01 ldd ,y++
00FFF70A 017FFECE0 lbsr DispWordAsHex
*** warning 1: Long branch within short branch range could be optimized
00FFF70D 0E6E04 ldb ,s
00FFF70F 0C5080 bitb #$80 ; outer indexed?
00FFF711 026005 bne dis17
00FFF713 0C605D ldb #']'
00FFF715 017FFF5FA lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
dis17:
00FFF718 0C602C ldb #','
00FFF71A 017FFF5F5 lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF71D 0E6E04 ldb ,s
00FFF71F 08D110 bsr disNdxReg
00FFF721 0C6050 ldb #'P'
00FFF723 017FFF5EC lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF726 0C6043 ldb #'C'
00FFF728 017FFF5E7 lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF72B 0C602D ldb #'-'
00FFF72D 017FFF5E2 lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF730 017FFF5DF lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF733 035004 puls b
00FFF735 0C5100 bitb #$100
00FFF737 1260000E7 lbne disNextLine
00FFF73A 0C5080 bitb #$80
00FFF73C 1260000E2 lbne disNextLine
00FFF73F 0C605D ldb #']'
00FFF741 017FFF5CE lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF744 0160000DA lbra disNextLine
disNotPWO:
00FFF747 0C100E cmpb #14
00FFF749 026044 bne disNotPTO
00FFF74B 0E6A00 ldb ,y+
00FFF74D 017FFECA6 lbsr DispByteAsHex
*** warning 1: Long branch within short branch range could be optimized
00FFF750 0ECA01 ldd ,y++
00FFF752 017FFEC98 lbsr DispWordAsHex
*** warning 1: Long branch within short branch range could be optimized
00FFF755 0E6E04 ldb ,s
00FFF757 0C5080 bitb #$80 ; outer indexed?
00FFF759 026005 bne dis18
00FFF75B 0C605D ldb #']'
00FFF75D 017FFF5B2 lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
dis18:
00FFF760 0C602C ldb #','
00FFF762 017FFF5AD lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF765 0E6E04 ldb ,s
00FFF767 08D0C8 bsr disNdxReg
00FFF769 0C6050 ldb #'P'
00FFF76B 017FFF5A4 lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF76E 0C6043 ldb #'C'
00FFF770 017FFF59F lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF773 0C602D ldb #'-'
00FFF775 017FFF59A lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF778 017FFF597 lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF77B 035004 puls b
00FFF77D 0C5100 bitb #$100
00FFF77F 12600009F lbne disNextLine
00FFF782 0C5080 bitb #$80
00FFF784 12600009A lbne disNextLine
00FFF787 0C605D ldb #']'
00FFF789 017FFF586 lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF78C 016000092 lbra disNextLine
disNotPTO:
00FFF78F 0C605B ldb #'['
00FFF791 017FFF57E lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF794 0ECA01 ldd ,y++
00FFF796 017FFEC54 lbsr DispWordAsHex
*** warning 1: Long branch within short branch range could be optimized
00FFF799 0C605D ldb #']'
00FFF79B 017FFF574 lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF79E 016000080 lbra disNextLine
disNotNdx:
00FFF7A1 0C1006 cmpb #EXT
00FFF7A3 026008 bne disNotExt
00FFF7A5 0ECA01 ldd ,y++
00FFF7A7 017FFEC43 lbsr DispWordAsHex
*** warning 1: Long branch within short branch range could be optimized
00FFF7AA 016000074 lbra disNextLine
disNotExt:
00FFF7AD 0C1003 cmpb #IMMB
00FFF7AF 02600D bne disNotIMMB
00FFF7B1 0C6023 ldb #'#'
00FFF7B3 017FFF55C lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF7B6 0E6A00 ldb ,y+
00FFF7B8 017FFEC3B lbsr DispByteAsHex
*** warning 1: Long branch within short branch range could be optimized
00FFF7BB 016000063 lbra disNextLine
disNotIMMB:
00FFF7BE 0C1007 cmpb #IMMW
00FFF7C0 02600C bne disNotIMMW
00FFF7C2 0C6023 ldb #'#'
00FFF7C4 017FFF54B lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF7C7 0ECA01 ldd ,y++
00FFF7C9 017FFEC21 lbsr DispWordAsHex
*** warning 1: Long branch within short branch range could be optimized
00FFF7CC 020053 bra disNextLine
disNotIMMW:
dis1:
00FFF7CE 0C1121 cmpb #$121
00FFF7D0 025028 blo dis19
00FFF7D2 0C112F cmpb #$12F
00FFF7D4 022024 bhi dis19
00FFF7D6 0C40FF andb #$FF
00FFF7D8 08EFFEDB4 ldx #distbl1
00FFF7DB 058 aslb
00FFF7DC 058 aslb
00FFF7DD 03A abx
00FFF7DE 0E6800 ldb ,x+
00FFF7E0 017FFF52F lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF7E3 0E6800 ldb ,x+
00FFF7E5 017FFF52A lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF7E8 0E6800 ldb ,x+
00FFF7EA 017FFF525 lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF7ED 0E6800 ldb ,x+
00FFF7EF 017FFF520 lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF7F2 0C6020 ldb #' '
00FFF7F4 017FFF51B lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF7F7 016FFFC09 lbra dis21
*** warning 1: Long branch within short branch range could be optimized
dis19:
00FFF7FA 08E000000 ldx #0
dis24:
00FFF7FD 0E180A000FFF2F4 cmpb distbl3,x
00FFF802 026006 bne dis25
00FFF804 08EFFF314 ldx #distbl4
00FFF807 016FFFBC7 lbra dis23
*** warning 1: Long branch within short branch range could be optimized
dis25:
00FFF80A 030001 inx
00FFF80C 08C00001F cmpx #31
00FFF80F 025FEC blo dis24
00FFF811 0C603F ldb #'?'
00FFF813 017FFF4FC lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF816 017FFF4F9 lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF819 017FFF4F6 lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF81C 017FFF4F3 lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF81F 020000 bra disNextLine
disNextLine
00FFF821 017FFD8AE lbsr CRLF
*** warning 1: Long branch within short branch range could be optimized
00FFF824 1BC000926 cmpy mon_r2+2
00FFF827 125FFFB93 lblo disLoop1
*** warning 1: Long branch within short branch range could be optimized
00FFF82A 01600007F lbra Monitor
disNdxRegs:
00FFF82D 058059053055 fcb 'X','Y','S','U'
disNdxReg:
00FFF831 0C4600 andb #$600
00FFF833 059 rolb
00FFF834 059 rolb
00FFF835 059 rolb
00FFF836 059 rolb
00FFF837 04F clra
00FFF838 034040 pshs u
00FFF83A 01F003 tfr d,u
00FFF83C 0A6C0A000FFF82D lda disNdxRegs,u
00FFF841 035040 puls u
00FFF843 01E089 exg a,b
00FFF845 039 rts
ASMO:
00FFF846 034006 pshs d
00FFF848 0CCFFF85A ldd #ASMOUTCH
00FFF84B 0FD000800 std CharOutVec
00FFF84E 035086 puls d,pc
ASMOO:
00FFF850 034006 pshs d
00FFF852 0CCFFE2E1 ldd #DisplayChar
00FFF855 0FD000800 std CharOutVec
00FFF858 035086 puls d,pc
ASMOUTCH:
00FFF85A 0E7C00 stb ,u+
00FFF85C 039 rts
DumpAsmbuf:
00FFF85D 0CE000160 ldu #asmbuf
dab2:
00FFF860 0E6C00 ldb ,u+
00FFF862 027005 beq dab1
00FFF864 017FFF4AB lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF867 020FF7 bra dab2
dab1:
00FFF869 039 rts
;==============================================================================
; System Monitor
;==============================================================================
;
CmdPrompt:
00FFF86A 017FFD865 lbsr CRLF
*** warning 1: Long branch within short branch range could be optimized
00FFF86D 0C6024 ldb #'$'
00FFF86F 017FFF4A0 lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF872 016FFF49D lbra OUTCH
*** warning 1: Long branch within short branch range could be optimized
msgF09Starting:
00FFF875 04606506D07406906B069 fcb "Femtiki F09 Multi-core OS Starting",CR,LF,0
00FFF87C 02004603003902004D075
00FFF883 06C07406902D06306F072
00FFF88A 06502004F053020053074
00FFF891 06107207406906E06700D
00FFF898 00A000
MonitorStart:
00FFF991 0CCFFFAEF ldd #HelpMsg
00FFF994 08D9BE bsr DisplayString
00FFF89A 0CCFFF875 ldd #msgF09Starting
00FFF89D 017FFEB02 lbsr DisplayString
*** warning 1: Long branch within short branch range could be optimized
00FFF8A0 0CCFFFA78 ldd #HelpMsg
00FFF8A3 017FFEAFC lbsr DisplayString
*** warning 1: Long branch within short branch range could be optimized
00FFF8A6 0CCFFF86A ldd #CmdPrompt
00FFF8A9 0FD000808 std CmdPromptJI
Monitor:
00FFF996 03280F003FFF leas $3FFF ; reset stack pointer
00FFF99A 05F clrb ; turn off keyboard echo
00FFF99B 08DFE3 bsr SetKeyboardEcho
00FFF8AC 03280F006FFF leas $6FFF ; reset stack pointer
00FFF8B0 05F clrb ; turn off keyboard echo
00FFF8B1 017FFF462 lbsr SetKeyboardEcho
*** warning 1: Long branch within short branch range could be optimized
; Reset IO vectors
00FFF8B4 0CCFFEBE4 ldd #SerialPeekCharDirect
00FFF8B7 0FD000804 std CharInVec
00FFF8BA 0CCFFE2E1 ldd #DisplayChar
00FFF8BD 0FD000800 std CharOutVec
00FFF8C0 0CCFFF86A ldd #CmdPrompt
00FFF8C3 0FD000808 std CmdPromptJI
; jsr RequestIOFocus
PromptLn:
00FFF99D 017FFD732 lbsr CRLF
*** warning 1: Long branch within short branch range could be optimized
00FFF9A0 0C6024 ldb #'$'
00FFF9A2 08DFD8 bsr OUTCH
00FFF8C6 0AD90F000808 jsr [CmdPromptJI]
; Get characters until a CR is keyed
Prompt3:
00FFF9A4 0CCFFFFFF ldd #-1 ; block until key present
00FFF9A7 08DE92 bsr DBGGetKey
00FFF9A9 0C100D cmpb #CR
00FFF9AB 027004 beq Prompt1
00FFF9AD 08DFCD bsr OUTCH
00FFF9AF 020FF3 bra Prompt3
00FFF8CA 0CCFFFFFF ldd #-1 ; block until key present
00FFF8CD 017FFF40A lbsr INCH
*** warning 1: Long branch within short branch range could be optimized
00FFF8D0 0C100D cmpb #CR
00FFF8D2 027005 beq Prompt1
00FFF8D4 017FFF43B lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF8D7 020FF1 bra Prompt3
; Process the screen line that the CR was keyed on
;
Prompt1:
00FFF9B1 0CC005050 ldd #$5050
00FFF9B4 0150FDFFFE60000 std LEDS
00FFF9B9 0F6800000 ldb RunningID
00FFF9BC 0C103D cmpb #61
00FFF9BE 022FE4 bhi Prompt3
00FFF9C0 0CC005151 ldd #$5151
00FFF9C3 0150FDFFFE60000 std LEDS
00FFF9C8 00F111 clr CursorCol ; go back to the start of the line
00FFF9CA 08D8AD bsr CalcScreenLoc ; calc screen memory location
00FFF9CC 01F002 tfr d,y
00FFF9CE 0CC005252 ldd #$5252
00FFF9D1 0150FDFFFE60000 std LEDS
00FFF9D6 08D055 bsr MonGetNonSpace
00FFF9D8 0C1024 cmpb #'$'
00FFF9DA 026009 bne Prompt2 ; skip over '$' prompt character
00FFF9DC 086353 lda #$5353
00FFF9DE 0150FDFFFE60000 std LEDS
00FFF9E3 08D048 bsr MonGetNonSpace
00FFF8D9 0CC005050 ldd #$5050
00FFF8DC 0150FDFFFE60001 std LEDS
; ldb RunningID
; cmpb #61
; bhi Prompt3
00FFF8E1 0CC005151 ldd #$5151
00FFF8E4 0150FDFFFE60001 std LEDS
00FFF8E9 00F111 clr CursorCol ; go back to the start of the line
00FFF8EB 017FFE9D0 lbsr CalcScreenLoc ; calc screen memory location
*** warning 1: Long branch within short branch range could be optimized
00FFF8EE 01F002 tfr d,y
00FFF8F0 0CC005252 ldd #$5252
00FFF8F3 0150FDFFFE60001 std LEDS
skipDollar:
00FFF8F8 08D0AB bsr MonGetNonSpace
00FFF8FA 0C1024 cmpb #'$'
00FFF8FC 027FFA beq skipDollar ; skip over '$' prompt character
00FFF8FE 086353 lda #$5353
00FFF900 0150FDFFFE60001 std LEDS
; Dispatch based on command character
;
Prompt2:
00FFF9E5 0C103F cmpb #'?' ; $? - display help
00FFF9E7 026007 bne PromptC
00FFF9E9 0CCFFFAEF ldd #HelpMsg
00FFF9EC 08D966 bsr DisplayString
00FFF9EE 020FA6 bra Monitor
00FFF905 0C103C cmpb #'<'
00FFF907 02602C bne PromptHelp
00FFF909 08D095 bsr MonGetch
00FFF90B 0C103E cmpb #'>'
00FFF90D 026F9D bne Monitor
00FFF90F 08D08F bsr MonGetch
00FFF911 0C1073 cmpb #'s'
00FFF913 02600E bne Prompt2a
00FFF915 0CCFFEBE4 ldd #SerialPeekCharDirect
00FFF918 0FD000804 std CharInVec
00FFF91B 0CCFFEC08 ldd #SerialPutChar
00FFF91E 0FD000800 std CharOutVec
00FFF921 020F89 bra Monitor
Prompt2a:
00FFF923 0C1063 cmpb #'c'
00FFF925 026F85 bne Monitor
00FFF927 0CCFFEA12 ldd #GetKey
00FFF92A 0FD000804 std CharInVec
00FFF92D 0CCFFE2E1 ldd #DisplayChar
00FFF930 0FD000800 std CharOutVec
00FFF933 020F77 bra Monitor
PromptHelp:
00FFF935 0C103F cmpb #'?' ; $? - display help
00FFF937 026008 bne PromptC
00FFF939 0CCFFFA78 ldd #HelpMsg
00FFF93C 017FFEA63 lbsr DisplayString
*** warning 1: Long branch within short branch range could be optimized
00FFF93F 020F6B bra Monitor
PromptC:
00FFF9F0 0C1043 cmpb #'C'
00FFF9F2 026007 bne PromptD
00FFF9F4 017FFF7D9 lbsr ClearScreen
00FFF941 0C1043 cmpb #'C'
00FFF943 026008 bne PromptD
00FFF945 017FFE8C9 lbsr ClearScreen
*** warning 1: Long branch within short branch range could be optimized
00FFF9F7 08D848 bsr HomeCursor
00FFF9F9 020F9B bra Monitor
00FFF948 017FFE939 lbsr HomeCursor
*** warning 1: Long branch within short branch range could be optimized
00FFF94B 020F5F bra Monitor
PromptD:
00FFF9FB 0C1044 cmpb #'D'
00FFF9FD 026008 bne PromptF
00FFF9FF 08D027 bsr MonGetch
00FFFA01 0C1052 cmpb #'R'
00FFFA03 026F9F bne Prompt3
00FFFA05 020193 bra DumpRegs
00FFF94D 0C1044 cmpb #'D'
00FFF94F 026008 bne PromptF
00FFF951 08D04D bsr MonGetch
00FFF953 0C1052 cmpb #'R'
00FFF955 02621A bne DumpMemory
00FFF957 020274 bra DumpRegs
PromptF:
00FFFA07 0C1046 cmpb #'F'
00FFFA09 02600F bne PromptJ
00FFFA0B 08D01B bsr MonGetch
00FFFA0D 0C1049 cmpb #'I'
00FFFA0F 026F85 bne Monitor
00FFFA11 08D015 bsr MonGetch
00FFFA13 0C1047 cmpb #'G'
00FFFA15 026F7F bne Monitor
00FFFA17 07EFE0000 jmp $FE0000
00FFF959 0C1046 cmpb #'F'
00FFF95B 02600F bne PromptJ
00FFF95D 08D041 bsr MonGetch
00FFF95F 0C1049 cmpb #'I'
00FFF961 026F49 bne Monitor
00FFF963 08D03B bsr MonGetch
00FFF965 0C1047 cmpb #'G'
00FFF967 026F43 bne Monitor
00FFF969 07EFE0000 jmp $FE0000
PromptJ:
00FFFA1A 0C104A cmpb #'J'
00FFFA1C 1270001BF lbeq jump_to_code
00FFF96C 0C104A cmpb #'J'
00FFF96E 1270002A7 lbeq jump_to_code
PromptR:
00FFFA1F 0C1052 cmpb #'R'
00FFFA21 026F73 bne Monitor
00FFFA23 017FFE5DA lbsr ramtest
00FFF971 0C1052 cmpb #'R'
00FFF973 026006 bne Prompt_s
00FFF975 0CEFFF8AC ldu #Monitor
00FFF978 016FFDA85 lbra ramtest
*** warning 1: Long branch within short branch range could be optimized
00FFFA26 020F6E bra Monitor
Prompt_s:
00FFF97B 0C1073 cmpb #'s'
00FFF97D 026005 bne PromptT
00FFF97F 017FFF323 lbsr SerialOutputTest
*** warning 1: Long branch within short branch range could be optimized
00FFF982 020F28 bra Monitor
PromptT:
00FFF984 0C1054 cmpb #'T'
00FFF986 026011 bne PromptU
00FFF988 08D016 bsr MonGetch
00FFF98A 0C1049 cmpb #'I'
00FFF98C 026F1E bne Monitor
00FFF98E 08D010 bsr MonGetch
00FFF990 0C1052 cmpb #'R'
00FFF992 026F18 bne Monitor
00FFF994 017FFEB1C lbsr rtc_read
*** warning 1: Long branch within short branch range could be optimized
00FFF997 020F13 bra Monitor
PromptU:
00FFF999 0C1055 cmpb #'U'
00FFF99B 026F0F bne Monitor
00FFF99D 016FFFA14 lbra disassem
*** warning 1: Long branch within short branch range could be optimized
MonGetch:
00FFFA28 0E6A04 ldb ,y
00FFFA2A 031201 leay 1,y
00FFFA2C 039 rts
00FFF9A0 0E6A04 ldb ,y
00FFF9A2 031201 iny
00FFF9A4 039 rts
MonGetNonSpace:
00FFFA2D 08DFF9 bsr MonGetCh
00FFFA2F 0C1020 cmpb #' '
00FFFA31 027FFA beq MonGetNonSpace
00FFFA33 0C1009 cmpb #9 ; tab
00FFFA35 027FF6 beq MonGetNonSpace
00FFFA37 039 rts
00FFF9A5 08DFF9 bsr MonGetCh
00FFF9A7 0C1020 cmpb #' '
00FFF9A9 027FFA beq MonGetNonSpace
00FFF9AB 039 rts
;------------------------------------------------------------------------------
; Ignore blanks in the input
1883,80 → 4076,82
;
ignBlanks:
ignBlanks1:
00FFFA38 08DFEE bsr MonGetch
00FFFA3A 0C1020 cmpb #' '
00FFFA3C 027FFA beq ignBlanks1
00FFFA3E 0313FF leay -1,y
00FFFA40 039 rts
00FFF9AC 08DFF2 bsr MonGetch
00FFF9AE 0C1020 cmpb #' '
00FFF9B0 027FFA beq ignBlanks1
00FFF9B2 0313FF dey
00FFF9B4 039 rts
;------------------------------------------------------------------------------
;------------------------------------------------------------------------------
GetTwoParams:
00FFFA41 08DFF5 bsr ignBlanks
00FFFA43 08D02E bsr GetHexNumber ; get start address of dump
00FFFA45 0DC910 ldd mon_numwka
00FFFA47 0DD920 std mon_r1
00FFFA49 0DC912 ldd mon_numwka+2
00FFFA4B 0DD922 std mon_r1+2
00FFFA4D 08DFE9 bsr ignBlanks
00FFFA4F 08D022 bsr GetHexNumber ; get end address of dump
00FFFA51 0DC910 ldd mon_numwka
00FFFA53 0DD922 std mon_r2
00FFFA55 0DC912 ldd mon_numwka+2
00FFFA57 0DD924 std mon_r2+2
00FFFA59 039 rts
00FFF9B5 08DFF5 bsr ignBlanks
00FFF9B7 08D03F bsr GetHexNumber ; get start address of dump
00FFF9B9 0FC000910 ldd mon_numwka
00FFF9BC 0FD000920 std mon_r1
00FFF9BF 0FC000912 ldd mon_numwka+2
00FFF9C2 0FD000922 std mon_r1+2
00FFF9C5 08DFE5 bsr ignBlanks
00FFF9C7 08D02F bsr GetHexNumber ; get end address of dump
00FFF9C9 0FC000910 ldd mon_numwka
00FFF9CC 0FD000924 std mon_r2
00FFF9CF 0FC000912 ldd mon_numwka+2
00FFF9D2 0FD000926 std mon_r2+2
00FFF9D5 039 rts
;------------------------------------------------------------------------------
; Get a range, the end must be greater or equal to the start.
;------------------------------------------------------------------------------
GetRange:
00FFFA5A 08DFE5 bsr GetTwoParams
00FFFA5C 0DC924 ldd mon_r2+2
00FFFA5E 093922 subd mon_r1+2
00FFFA60 0DC922 ldd mon_r2
00FFFA62 0D2921 sbcb mon_r1+1
00FFFA64 092920 sbca mon_r1
00FFFA66 12500006C lbcs DisplayErr
00FFFA69 039 rts
00FFF9D6 08DFDD bsr GetTwoParams
00FFF9D8 0FC000926 ldd mon_r2+2
00FFF9DB 0B3000922 subd mon_r1+2
00FFF9DE 0FC000924 ldd mon_r2
00FFF9E1 0F2000921 sbcb mon_r1+1
00FFF9E4 0B2000920 sbca mon_r1
00FFF9E7 125000074 lbcs DisplayErr
00FFF9EA 039 rts
shl_numwka:
00FFFA6A 008913 asl mon_numwka+3
00FFFA6C 009912 rol mon_numwka+2
00FFFA6E 009911 rol mon_numwka+1
00FFFA70 009910 rol mon_numwka
00FFFA72 039 rts
00FFF9EB 078000913 asl mon_numwka+3
00FFF9EE 079000912 rol mon_numwka+2
00FFF9F1 079000911 rol mon_numwka+1
00FFF9F4 079000910 rol mon_numwka
00FFF9F7 039 rts
;------------------------------------------------------------------------------
; Get a hexidecimal number. Maximum of nine digits.
; Y = text pointer (updated)
; D = number of digits
; mon_numwka contains number
; Get a hexidecimal number. Maximum of twelve digits.
;
; Modifies:
; Y = text pointer (updated)
; D = number of digits
; mon_numwka contains number
;------------------------------------------------------------------------------
;
GetHexNumber:
00FFFA73 04F05F clrd
00FFFA75 0DD910 std mon_numwka
00FFFA77 0DD912 std mon_numwka+2
00FFFA79 034010 pshs x
00FFFA7B 08E000000 ldx #0 ; max 9 eight digits
00FFF9F8 04F05F clrd
00FFF9FA 0FD000910 std mon_numwka ; zero out work area
00FFF9FD 0FD000912 std mon_numwka+2
00FFFA00 034010 pshs x
00FFFA02 08E000000 ldx #0 ; max 12 eight digits
gthxn2:
00FFFA7E 08DFA8 bsr MonGetch
00FFFA80 08D01D bsr AsciiToHexNybble
00FFFA82 0C1FFF cmpb #-1
00FFFA84 027015 beq gthxn1
00FFFA86 08DFE2 bsr shl_numwka
00FFFA88 08DFE0 bsr shl_numwka
00FFFA8A 08DFDE bsr shl_numwka
00FFFA8C 08DFDC bsr shl_numwka
00FFFA8E 0C400F andb #$0f
00FFFA90 0DA913 orb mon_numwka+3
00FFFA92 0D7913 stb mon_numwka+3
00FFFA94 030001 inx
00FFFA96 08C000009 cmpx #9
00FFFA99 025FE3 blo gthxn2
00FFFA05 08DF99 bsr MonGetch
00FFFA07 08D01F bsr AsciiToHexNybble
00FFFA09 0C1FFF cmpb #-1
00FFFA0B 027017 beq gthxn1
00FFFA0D 08DFDC bsr shl_numwka
00FFFA0F 08DFDA bsr shl_numwka
00FFFA11 08DFD8 bsr shl_numwka
00FFFA13 08DFD6 bsr shl_numwka
00FFFA15 0C400F andb #$0f
00FFFA17 0FA000913 orb mon_numwka+3
00FFFA1A 0F7000913 stb mon_numwka+3
00FFFA1D 030001 inx
00FFFA1F 08C00000C cmpx #12
00FFFA22 025FE1 blo gthxn2
gthxn1:
00FFFA9B 01F010 tfr x,d
00FFFA9D 035090 puls x,pc
00FFFA24 01F010 tfr x,d
00FFFA26 035090 puls x,pc
;GetDecNumber:
; phx
1987,383 → 4182,563
;------------------------------------------------------------------------------
;
AsciiToHexNybble:
00FFFA9F 0C1030 cmpb #'0'
00FFFAA1 024021 bcc gthx3
00FFFAA3 0C103A cmpb #'9'+1
00FFFAA5 025003 bcs gthx5
00FFFAA7 0C0030 subb #'0'
00FFFAA9 039 rts
00FFFA28 0C1030 cmpb #'0'
00FFFA2A 025021 blo gthx3
00FFFA2C 0C1039 cmpb #'9'
00FFFA2E 022003 bhi gthx5
00FFFA30 0C0030 subb #'0'
00FFFA32 039 rts
gthx5:
00FFFAAA 0C1041 cmpb #'A'
00FFFAAC 024016 bcc gthx3
00FFFAAE 0C1047 cmpb #'F'+1
00FFFAB0 025005 bcs gthx6
00FFFAB2 0C0041 subb #'A'
00FFFAB4 0CB00A addb #10
00FFFAB6 039 rts
00FFFA33 0C1041 cmpb #'A'
00FFFA35 025016 blo gthx3
00FFFA37 0C1046 cmpb #'F'
00FFFA39 022005 bhi gthx6
00FFFA3B 0C0041 subb #'A'
00FFFA3D 0CB00A addb #10
00FFFA3F 039 rts
gthx6:
00FFFAB7 0C1061 cmpb #'a'
00FFFAB9 024009 bcc gthx3
00FFFABB 0C107B cmpb #'z'+1
00FFFABD 025005 bcs gthx3
00FFFABF 0C0061 subb #'a'
00FFFAC1 0CB00A addb #10
00FFFAC3 039 rts
00FFFA40 0C1061 cmpb #'a'
00FFFA42 025009 blo gthx3
00FFFA44 0C107A cmpb #'z'
00FFFA46 022005 bhi gthx3
00FFFA48 0C0061 subb #'a'
00FFFA4A 0CB00A addb #10
00FFFA4C 039 rts
gthx3:
00FFFAC4 0C6FFF ldb #-1 ; not a hex number
00FFFAC6 039 rts
00FFFA4D 0C6FFF ldb #-1 ; not a hex number
00FFFA4F 039 rts
AsciiToDecNybble:
00FFFAC7 0C1030 cmpb #'0'
00FFFAC9 024007 bcc gtdc3
00FFFACB 0C103A cmpb #'9'+1
00FFFACD 025003 bcs gtdc3
00FFFACF 0C0030 subb #'0'
00FFFAD1 039 rts
00FFFA50 0C1030 cmpb #'0'
00FFFA52 024007 bcc gtdc3
00FFFA54 0C103A cmpb #'9'+1
00FFFA56 025003 bcs gtdc3
00FFFA58 0C0030 subb #'0'
00FFFA5A 039 rts
gtdc3:
00FFFAD2 0C6FFF ldb #-1
00FFFAD4 039 rts
00FFFA5B 0C6FFF ldb #-1
00FFFA5D 039 rts
DisplayErr:
00FFFAD5 08EFFFAE7 ldx #msgErr
00FFFAD8 04F05F clrd
00FFFADA 08D003 bsr DisplayStringDX
00FFFADC 07EFFF996 jmp Monitor
00FFFA5E 08EFFFA70 ldx #msgErr
00FFFA61 04F05F clrd
00FFFA63 08D003 bsr DisplayStringDX
00FFFA65 07EFFF8AC jmp Monitor
DisplayStringDX
00FFFADF 0DD024 std Strptr
00FFFAE1 09F026 stx Strptr+2
00FFFAE3 0BDFFF354 jsr DisplayString
00FFFAE6 039 rts
00FFFA68 0DD024 std Strptr
00FFFA6A 09F026 stx Strptr+2
00FFFA6C 0BDFFE3A2 jsr DisplayString
00FFFA6F 039 rts
msgErr:
00FFFAE7 02A02A04507207200D00A fcb "**Err",CR,LF,0
00FFFAEE 000
00FFFA70 02A02A04507207200D00A fcb "**Err",CR,LF,0
00FFFA77 000
HelpMsg:
00FFFAEF 03F02003D020044069073 fcb "? = Display help",CR,LF
00FFFAF6 07006C061079020068065
00FFFAFD 06C07000D00A
00FFFB01 04304C05302003D020063 fcb "CLS = clear screen",CR,LF
00FFFB08 06C065061072020073063
00FFFB0F 07206506506E00D00A
00FFFA78 03F02003D020044069073 fcb "? = Display help",CR,LF
00FFFA7F 07006C061079020068065
00FFFA86 06C07000D00A
00FFFA8A 04304C05302003D020063 fcb "CLS = clear screen",CR,LF
00FFFA91 06C065061072020073063
00FFFA98 07206506506E00D00A
; db "S = Boot from SD Card",CR,LF
; db ": = Edit memory bytes",CR,LF
; db "L = Load sector",CR,LF
; db "W = Write sector",CR,LF
00FFFB15 04405202003D020044075 fcb "DR = Dump registers",CR,LF
00FFFB1C 06D070020072065067069
00FFFB23 07307406507207300D00A
; db "D = Dump memory",CR,LF
00FFFA9E 04405202003D020044075 fcb "DR = Dump registers",CR,LF
00FFFAA5 06D070020072065067069
00FFFAAC 07307406507207300D00A
00FFFAB3 04402003D02004407506D fcb "D = Dump memory",CR,LF
00FFFABA 07002006D06506D06F072
00FFFAC1 07900D00A
; db "F = Fill memory",CR,LF
; db "FL = Dump I/O Focus List",CR,LF
00FFFB2A 04604904702003D020073 fcb "FIG = start FIG Forth",CR,LF
00FFFB31 074061072074020046049
00FFFB38 04702004606F072074068
00FFFB3F 00D00A
00FFFAC4 04604904702003D020073 fcb "FIG = start FIG Forth",CR,LF
00FFFACB 074061072074020046049
00FFFAD2 04702004606F072074068
00FFFAD9 00D00A
; db "KILL n = kill task #n",CR,LF
; db "B = start tiny basic",CR,LF
; db "b = start EhBasic 6502",CR,LF
00FFFB41 04A02003D02004A07506D fcb "J = Jump to code",CR,LF
00FFFB48 07002007406F02006306F
00FFFB4F 06406500D00A
00FFFB53 05204104D02003D020074 fcb "RAM = test RAM",CR,LF
00FFFB5A 06507307402005204104D
00FFFB61 00D00A
00FFFADB 04A02003D02004A07506D fcb "J = Jump to code",CR,LF
00FFFAE2 07002007406F02006306F
00FFFAE9 06406500D00A
00FFFAED 05204104D02003D020074 fcb "RAM = test RAM",CR,LF
00FFFAF4 06507307402005204104D
00FFFAFB 00D00A
; db "R[n] = Set register value",CR,LF
; db "r = random lines - test bitmap",CR,LF
; db "e = ethernet test",CR,LF
00FFFAFD 07302003D020073065072 fcb "s = serial output test",CR,LF
00FFFB04 06906106C02006F075074
00FFFB0B 070075074020074065073
00FFFB12 07400D00A
; db "T = Dump task list",CR,LF
; db "TO = Dump timeout list",CR,LF
; db "TI = display date/time",CR,LF
00FFFB15 05404902003D020064069 fcb "TI = display date/time",CR,LF
00FFFB1C 07307006C061079020064
00FFFB23 06107406502F07406906D
00FFFB2A 06500D00A
; db "TEMP = display temperature",CR,LF
; db "P = Piano",CR,LF,0
00FFFB63 000 fcb 0
00FFFB2D 000 fcb 0
msgRegHeadings
00FFFB64 00D00A02004402F041042 fcb CR,LF," D/AB X Y U S PC DP CCR",CR,LF,0
00FFFB6B 020020020058020020020
00FFFB72 020059020020020020055
00FFFB79 020020020020053020020
00FFFB80 020020020050043020020
00FFFB87 020020044050020043043
00FFFB8E 05200D00A000
00FFFB2E 00D00A02002004402F041 fcb CR,LF," D/AB X Y U S PC DP CCR",CR,LF,0
00FFFB35 042020020020020020058
00FFFB3C 020020020020020020059
00FFFB43 020020020020020020055
00FFFB4A 020020020020020020053
00FFFB51 020020020020020020020
00FFFB58 050043020020020020044
00FFFB5F 05002002004304305200D
00FFFB66 00A000
nHEX4:
00FFFB92 0BDFFD2D2 jsr HEX4
00FFFB95 039 rts
00FFFB68 0BDFFD2D2 jsr HEX4
00FFFB6B 039 rts
nXBLANK:
00FFFB96 0C6020 ldb #' '
00FFFB98 020DE2 bra OUTCH
00FFFB6C 0C6020 ldb #' '
00FFFB6E 016FFF1A1 lbra OUTCH
*** warning 1: Long branch within short branch range could be optimized
DumpRegs
00FFFB9A 08EFFFB64 ldx #msgRegHeadings
00FFFB9D 0CC0000FF ldd #msgRegHeadings>>16
00FFFBA0 0BDFFFADF jsr DisplayStringDX
00FFFBA3 08DFF1 bsr nXBLANK
00FFFBA5 0DC900 ldd mon_DSAVE
00FFFBA7 08DFE9 bsr nHEX4
00FFFBA9 08DFEB bsr nXBLANK
00FFFBAB 0DC902 ldd mon_XSAVE
00FFFBAD 08DFE3 bsr nHEX4
00FFFBAF 08DFE5 bsr nXBLANK
00FFFBB1 0DC904 ldd mon_YSAVE
00FFFBB3 08DFDD bsr nHEX4
00FFFBB5 08DFDF bsr nXBLANK
00FFFBB7 0DC906 ldd mon_USAVE
00FFFBB9 08DFD7 bsr nHEX4
00FFFBBB 08DFD9 bsr nXBLANK
00FFFBBD 0DC908 ldd mon_SSAVE
00FFFBBF 08DFD1 bsr nHEX4
00FFFBC1 08DFD3 bsr nXBLANK
00FFFBC3 0DC90A ldd mon_PCSAVE
00FFFBC5 08DFCB bsr nHEX4
00FFFBC7 0DC90C ldd mon_PCSAVE+2
00FFFBC9 08DFC7 bsr nHEX4
00FFFBCB 08DFC9 bsr nXBLANK
00FFFBCD 0DC90E ldd mon_DPRSAVE
00FFFBCF 0BDFFD2CE jsr HEX2
00FFFBD2 08DFC2 bsr nXBLANK
00FFFBD4 09690F lda mon_CCRSAVE
00FFFBD6 0BDFFD2CE jsr HEX2
00FFFBD9 08DFBB bsr nXBLANK
00FFFBDB 07EFFF996 jmp Monitor
;------------------------------------------------------------------------------
; Dump Memory
;
; Usage:
; $D FFFC12 8
;
; Dump formatted to look like:
; :FFFC12 012 012 012 012 555 666 777 888
;
;------------------------------------------------------------------------------
DumpMemory:
00FFFB71 08DE42 bsr GetTwoParams
00FFFB73 18E000000 ldy #0
00FFFB76 1BE000922 ldy mon_r1+2
dmpm2:
00FFFB79 017FFD556 lbsr CRLF
*** warning 1: Long branch within short branch range could be optimized
00FFFB7C 0C603A ldb #':'
00FFFB7E 017FFF191 lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFFB81 01F020 tfr y,d
;addd mon_r1+2 ; output the address
00FFFB83 017FFE867 lbsr DispWordAsHex
*** warning 1: Long branch within short branch range could be optimized
00FFFB86 0C6020 ldb #' '
00FFFB88 017FFF187 lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFFB8B 08E000008 ldx #8 ; number of bytes to display
dmpm1:
; ldb far [mon_r1+1],y
;ldb [mon_r1+2],y
00FFFB8E 0E6A04 ldb ,y
00FFFB90 031201 iny
00FFFB92 017FFE861 lbsr DispByteAsHex ; display byte
*** warning 1: Long branch within short branch range could be optimized
00FFFB95 0C6020 ldb #' ' ; followed by a space
00FFFB97 017FFF178 lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFFB9A 05F clrb
00FFFB9B 04F clra
00FFFB9C 017FFF13B lbsr INCH
*** warning 1: Long branch within short branch range could be optimized
00FFFB9F 0C1003 cmpb #CTRLC
00FFFBA1 027024 beq dmpm3
00FFFBA3 0301FF dex
00FFFBA5 026FE7 bne dmpm1
; Now output ascii
00FFFBA7 0C6020 ldb #' '
00FFFBA9 017FFF166 lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFFBAC 08E000008 ldx #8 ; 8 chars to output
00FFFBAF 0313F8 leay -8,y ; backup pointer
dmpm5:
; ldb far [mon_r1+1],y ; get the char
; ldb [mon_r1+2],y ; get the char
00FFFBB1 0E6A04 ldb ,y
00FFFBB3 0C1020 cmpb #$20 ; is it a control char?
00FFFBB5 024002 bhs dmpm4
00FFFBB7 0C602E ldb #'.'
dmpm4:
00FFFBB9 017FFF156 lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFFBBC 031201 iny
00FFFBBE 0301FF dex
00FFFBC0 026FEF bne dmpm5
00FFFBC2 1BC000926 cmpy mon_r2+2
00FFFBC5 025FB2 blo dmpm2
dmpm3:
00FFFBC7 017FFD508 lbsr CRLF
*** warning 1: Long branch within short branch range could be optimized
00FFFBCA 016FFFCDF lbra Monitor
*** warning 1: Long branch within short branch range could be optimized
;------------------------------------------------------------------------------
; Dump Registers
;
; Usage:
; $DR
;------------------------------------------------------------------------------
DumpRegs:
00FFFBCD 0CCFFFB2E ldd #msgRegHeadings
00FFFBD0 017FFE7CF lbsr DisplayString
*** warning 1: Long branch within short branch range could be optimized
00FFFBD3 08DF97 bsr nXBLANK
00FFFBD5 0FC000900 ldd mon_DSAVE
00FFFBD8 08DF8E bsr nHEX4
00FFFBDA 08DF90 bsr nXBLANK
00FFFBDC 0FC000902 ldd mon_XSAVE
00FFFBDF 08DF87 bsr nHEX4
00FFFBE1 08DF89 bsr nXBLANK
00FFFBE3 0FC000904 ldd mon_YSAVE
00FFFBE6 08DF80 bsr nHEX4
00FFFBE8 08DF82 bsr nXBLANK
00FFFBEA 0FC000906 ldd mon_USAVE
00FFFBED 08DF79 bsr nHEX4
00FFFBEF 08DF7B bsr nXBLANK
00FFFBF1 0FC000908 ldd mon_SSAVE
00FFFBF4 08DF72 bsr nHEX4
00FFFBF6 08DF74 bsr nXBLANK
00FFFBF8 0F600090B ldb mon_PCSAVE+1
00FFFBFB 017FFE7F8 lbsr DispByteAsHex
*** warning 1: Long branch within short branch range could be optimized
00FFFBFE 0FC00090C ldd mon_PCSAVE+2
00FFFC01 08DF65 bsr nHEX4
00FFFC03 08DF67 bsr nXBLANK
00FFFC05 0FC00090E ldd mon_DPRSAVE
00FFFC08 0BDFFD2CE jsr HEX2
00FFFC0B 08DF5F bsr nXBLANK
00FFFC0D 0B600090F lda mon_CCRSAVE
00FFFC10 017FFD6BB lbsr HEX2
*** warning 1: Long branch within short branch range could be optimized
00FFFC13 08DF57 bsr nXBLANK
00FFFC15 016FFFC94 lbra Monitor
*** warning 1: Long branch within short branch range could be optimized
;------------------------------------------------------------------------------
; Jump to code
;
; Registers are loaded with values from the monitor register save area before
; the code is jumped to.
;
; J <address>
;------------------------------------------------------------------------------
jump_to_code:
00FFFBDE 08DE93 bsr GetHexNumber
00FFFBE0 01A010 sei
00FFFBE2 1DE908 lds mon_SSAVE
00FFFBE4 0CCFFFC11 ldd #<jtc_exit
00FFFBE7 034006 pshs d
00FFFBE9 0CC000000 ldd #>jtc_exit
00FFFBEC 034004 pshs b
00FFFBEE 0DC912 ldd mon_numwka+2
00FFFBF0 034006 pshs d
00FFFBF2 0DC910 ldd mon_numwka
00FFFBF4 034006 pshs d
00FFFBF6 0DC906 ldd mon_USAVE
00FFFBF8 034006 pshs d
00FFFBFA 0DC904 ldd mon_YSAVE
00FFFBFC 034006 pshs d
00FFFBFE 0DC902 ldd mon_XSAVE
00FFFC00 034006 pshs d
00FFFC02 09690E lda mon_DPRSave
00FFFC04 034002 pshs a
00FFFC06 0DC900 ldd mon_DSAVE
00FFFC08 034006 pshs d
00FFFC0A 09690F lda mon_CCRSAVE
00FFFC0C 034002 pshs a
00FFFC0E 0150350FF puls far ccr,d,dpr,x,y,u,pc
00FFFC18 08DDDE bsr GetHexNumber
00FFFC1A 01A010 sei
00FFFC1C 1FE000908 lds mon_SSAVE
00FFFC1F 0CCFFFC53 ldd #<jtc_exit
00FFFC22 034006 pshs d
00FFFC24 0C6000 ldb #>jtc_exit
00FFFC26 034004 pshs b
00FFFC28 0FC000912 ldd mon_numwka+2
00FFFC2B 034006 pshs d
00FFFC2D 0F6000911 ldb mon_numwka+1
00FFFC30 034004 pshs b
00FFFC32 0FC000906 ldd mon_USAVE
00FFFC35 034006 pshs d
00FFFC37 0FC000904 ldd mon_YSAVE
00FFFC3A 034006 pshs d
00FFFC3C 0FC000902 ldd mon_XSAVE
00FFFC3F 034006 pshs d
00FFFC41 0B600090E lda mon_DPRSave
00FFFC44 034002 pshs a
00FFFC46 0FC000900 ldd mon_DSAVE
00FFFC49 034006 pshs d
00FFFC4B 0B600090F lda mon_CCRSAVE
00FFFC4E 034002 pshs a
00FFFC50 0150350FF puls far ccr,d,dpr,x,y,u,pc
jtc_exit:
00FFFC11 034001 pshs ccr
00FFFC13 0DD900 std mon_DSAVE
00FFFC15 09F902 stx mon_XSAVE
00FFFC17 19F904 sty mon_YSAVE
00FFFC19 0DF906 stu mon_USAVE
00FFFC1B 01F0B8 tfr dpr,a
00FFFC1D 09790E sta mon_DPRSAVE
00FFFC1F 035002 puls a
00FFFC21 09790F sta mon_CCRSAVE
00FFFC23 1DF908 sts mon_SSAVE
00FFFC25 1CE003FFF lds #$3FFF
00FFFC53 1FF000908 sts >mon_SSAVE ; need to use extended addressing, no direct page setting
00FFFC56 03280F006FFF leas $6FFF ; reset stack to system area, dont modify flags register!
00FFFC5A 034001 pshs ccr ; now the stack can be used
00FFFC5C 034002 pshs a ; save acca register so we can use it
00FFFC5E 01F0B8 tfr dpr,a ; a = outgoing dpr value
00FFFC60 0B700090E sta >mon_DPRSAVE ; force extended addressing mode usage here dpr is not set
00FFFC63 04F clra ; dpg register must be set to zero before values are
00FFFC64 01F08B tfr a,dpr ; saved in the monitor register save area.
00FFFC66 035002 puls a ; get back acca
00FFFC68 0FD000900 std mon_DSAVE ; save regsters, can use direct addressing now
00FFFC6B 0BF000902 stx mon_XSAVE
00FFFC6E 1BF000904 sty mon_YSAVE
00FFFC71 0FF000906 stu mon_USAVE
00FFFC74 035002 puls a ; get back ccr
00FFFC76 0B700090F sta mon_CCRSAVE ; and save it too
; Reset vectors in case they got toasted.
00FFFC79 0CCFFEBE4 ldd #SerialPeekCharDirect
00FFFC7C 0FD000804 std CharInVec
00FFFC7F 0CCFFE2E1 ldd #DisplayChar
00FFFC82 0FD000800 std CharOutVec
; todo set according to coreid
00FFFC28 07EFFFB9A jmp DumpRegs
00FFFC85 016FFFF45 lbra DumpRegs ; now go do a register dump
*** warning 1: Long branch within short branch range could be optimized
;------------------------------------------------------------------------------
;------------------------------------------------------------------------------
swi3_rout:
00FFFC2B 01A010 sei
00FFFC2D 035002 puls a
00FFFC2F 09790F sta mon_CCRSAVE
00FFFC31 03507E puls D,DPR,X,Y,U
00FFFC33 0DD900 std mon_DSAVE
00FFFC35 09F902 stx mon_XSAVE
00FFFC37 19F904 sty mon_YSAVE
00FFFC39 0DF906 stu mon_USAVE
00FFFC3B 01F0B8 tfr dpr,a
00FFFC3D 09790E sta mon_DPRSAVE
00FFFC3F 035006 puls D
00FFFC41 0DD90A std mon_PCSAVE
00FFFC43 035006 puls D
00FFFC45 0DD90C std mon_PCSAVE+2
00FFFC47 1DF908 sts mon_SSAVE
00FFFC49 1CE003FFF lds #$3FFF
00FFFC4C 01C0EF cli
00FFFC4E 07EFFFB9A jmp DumpRegs
00FFFC88 01A010 sei
00FFFC8A 035002 puls a
00FFFC8C 0B700090F sta mon_CCRSAVE
00FFFC8F 03507E puls D,DPR,X,Y,U
00FFFC91 0FD000900 std mon_DSAVE
00FFFC94 0BF000902 stx mon_XSAVE
00FFFC97 1BF000904 sty mon_YSAVE
00FFFC9A 0FF000906 stu mon_USAVE
00FFFC9D 01F0B8 tfr dpr,a
00FFFC9F 0B700090E sta mon_DPRSAVE
00FFFCA2 035002 puls a
00FFFCA4 0B700090A sta mon_PCSAVE
00FFFCA7 035006 puls D
00FFFCA9 0FD00090B std mon_PCSAVE+1
00FFFCAC 1FF000908 sts mon_SSAVE
00FFFCAF 1CE003FFF lds #$3FFF
00FFFCB2 01C0EF cli
00FFFCB4 07EFFFBCD jmp DumpRegs
swi3_exit:
00FFFC51 01A010 sei
00FFFC53 1DE908 lds mon_SSAVE
00FFFC55 0DC90C ldd mon_PCSAVE+2
00FFFC57 034006 pshs d
00FFFC59 0DC90A ldd mon_PCSAVE
00FFFC5B 034006 pshs d
00FFFC5D 0DE906 ldu mon_USAVE
00FFFC5F 19E904 ldy mon_YSAVE
00FFFC61 09E902 ldx mon_XSAVE
00FFFC63 034070 pshs x,y,u
00FFFC65 09690E lda mon_DPRSAVE
00FFFC67 034002 pshs a
00FFFC69 0DC900 ldd mon_DSAVE
00FFFC6B 034006 pshs d
00FFFC6D 09690F lda mon_CCRSAVE
00FFFC6F 034002 pshs a
00FFFC71 01F08A tfr a,ccr
00FFFC73 01C0EF cli
00FFFC75 03B rti
00FFFCB7 01A010 sei
00FFFCB9 1FE000908 lds mon_SSAVE
00FFFCBC 0FC00090B ldd mon_PCSAVE+1
00FFFCBF 034006 pshs d
00FFFCC1 0B600090A lda mon_PCSAVE
00FFFCC4 034002 pshs a
00FFFCC6 0FE000906 ldu mon_USAVE
00FFFCC9 1BE000904 ldy mon_YSAVE
00FFFCCC 0BE000902 ldx mon_XSAVE
00FFFCCF 034070 pshs x,y,u
00FFFCD1 0B600090E lda mon_DPRSAVE
00FFFCD4 034002 pshs a
00FFFCD6 0FC000900 ldd mon_DSAVE
00FFFCD9 034006 pshs d
00FFFCDB 0B600090F lda mon_CCRSAVE
00FFFCDE 034002 pshs a
00FFFCE0 01F08A tfr a,ccr
00FFFCE2 01C0EF cli
00FFFCE4 03B rti
;------------------------------------------------------------------------------
;------------------------------------------------------------------------------
firq_rout:
00FFFCE5 03B rti
irq_rout:
; lbsr SerialIRQ ; check for recieved character
; lbsr TimerIRQ
; Reset the edge sense circuit in the PIC
00FFFC76 086002 lda #2 ; Timer is IRQ #2
00FFFC78 0150B7FFFE3F006 sta PIC+6 ; register 6 is edge sense reset reg
00FFFCE6 08601F lda #31 ; Timer is IRQ #31
00FFFCE8 0B7FF0011 sta IrqSource ; stuff a byte indicating the IRQ source for PEEK()
00FFFCEB 0150B7FFFE3F010 sta PIC+16 ; register 16 is edge sense reset reg
00FFFCF0 0150B6FFFE6000D lda VIA+VIA_IFR
00FFFCF5 02A011 bpl notTimerIRQ2
00FFFCF7 085800 bita #$800
00FFFCF9 02700D beq notTimerIRQ2
00FFFCFB 01507FFFFE60012 clr VIA+VIA_T3LL
00FFFD00 01507FFFFE60013 clr VIA+VIA_T3LH
00FFFD05 07CE00037 inc $E00037 ; update timer IRQ screen flag
notTimerIRQ2:
00FFFC7D 09779A sta IrqSource ; stuff a byte indicating the IRQ source for PEEK()
00FFFC7F 0960DF lda IrqBase ; get the IRQ flag byte
00FFFC81 044 lsra
00FFFC82 09A0DF ora IrqBase
00FFFC84 0840E0 anda #$E0
00FFFC86 0970DF sta IrqBase
00FFFD08 0B6FF0014 lda IrqBase ; get the IRQ flag byte
00FFFD0B 044 lsra
00FFFD0C 0BAFF0014 ora IrqBase
00FFFD0F 0840E0 anda #$E0
00FFFD11 0B7FF0014 sta IrqBase
00FFFC88 01507CFFFE0006E inc TEXTSCR+110 ; update IRQ live indicator on screen
; inc TEXTSCR+54 ; update IRQ live indicator on screen
; flash the cursor
; only bother to flash the cursor for the task with the IO focus.
00FFFC8D 0150B6FFFFFFFE0 lda COREID
00FFFC92 091100 cmpa IOFocusID
00FFFC94 026021 bne tr1a
00FFFC96 096114 lda CursorFlash ; test if we want a flashing cursor
00FFFC98 02701D beq tr1a
00FFFC9A 017FFF5DC lbsr CalcScreenLoc ; compute cursor location in memory
*** warning 1: Long branch within short branch range could be optimized
00FFFC9D 01F002 tfr d,y
00FFFC9F 0A6A09002000 lda $2000,y ; get color code $2000 higher in memory
00FFFCA3 0D67C6 ldb IRQFlag ; get counter
00FFFCA5 054 lsrb
00FFFCA6 044 lsra
00FFFCA7 044 lsra
00FFFCA8 044 lsra
00FFFCA9 044 lsra
00FFFCAA 054 lsrb
00FFFCAB 049 rola
00FFFCAC 054 lsrb
00FFFCAD 049 rola
00FFFCAE 054 lsrb
00FFFCAF 049 rola
00FFFCB0 054 lsrb
00FFFCB1 049 rola
00FFFCB2 0A7A0A000E00000 sta $E00000,y ; store the color code back to memory
tr1a
00FFFCB7 03B rti
; lda COREID
; cmpa IOFocusID
; bne tr1a
; lda CursorFlash ; test if we want a flashing cursor
; beq tr1a
; lbsr CalcScreenLoc ; compute cursor location in memory
; tfr d,y
; lda $2000,y ; get color code $2000 higher in memory
; ldb IRQFlag ; get counter
; lsrb
; lsra
; lsra
; lsra
; lsra
; lsrb
; rola
; lsrb
; rola
; lsrb
; rola
; lsrb
; rola
; sta $E00000,y ; store the color code back to memory
tr1a:
00FFFD14 03B rti
;------------------------------------------------------------------------------
;------------------------------------------------------------------------------
nmi_rout:
00FFFCB8 0150F6FFFFFFFE0 ldb COREID
00FFFCBD 086049 lda #'I'
00FFFCBF 08EE00028 ldx #TEXTSCR+40
00FFFCC2 03A abx
00FFFCC3 0A7804 sta ,x
00FFFCC5 03B rti
00FFFD15 0150F6FFFFFFFE0 ldb COREID
00FFFD1A 086049 lda #'I'
00FFFD1C 08EE00028 ldx #TEXTSCR+40
00FFFD1F 0A788F sta b,x
rti_insn:
00FFFD21 03B rti
; Special Register Area
org $FFFFE0
; Interrupt vector table
org $FFFFF0
00FFFFF0 012 nop
00FFFFF1 012 nop
00FFFFF2 FFFC2B fcw swi3_rout
org $FFFFF8
00FFFFF8 FFFC76 fcw irq_rout
00FFFFFA FFF023 fcw start ; SWI
00FFFFFC FFFCB8 fcw nmi_rout ; NMI
00FFFFFE FFF023 fcw start ; RST
00FFFFF0 FFFD21 fcw rti_insn ; reserved
00FFFFF2 FFFC88 fcw swi3_rout ; SWI3
00FFFFF4 FFFD21 fcw rti_insn ; SWI2
00FFFFF6 FFFCE5 fcw firq_rout ; FIRQ
00FFFFF8 FFFCE6 fcw irq_rout ; IRQ
00FFFFFA FFE023 fcw start ; SWI
00FFFFFC FFFD15 fcw nmi_rout ; NMI
00FFFFFE FFE023 fcw start ; RST
 
8 warning(s) in pass 2.
176 warning(s) in pass 2.
 
SYMBOL TABLE
ASCIITODECNYBBLE 02 00FFFAC7 ASCIITOHEXNYBBLE 02 00FFFA9F BIOS_SCREENS 00 17000000 BLANKLINE 02 00FFF216
BLKCPYDST 00 00000020 BLKCPYSRC 00 0000001C BLNKLN1 02 00FFF229 CALCSCREENLOC 02 00FFF279
CHARCOLOR 00 00000112 CHARINVEC 00 00000804 CHAROUTVEC 00 00000800 CHECKPOINT 02 00FFF0E0
CLEARSCREEN 02 00FFF1D0 CLEARSCREENJMP 02 00FFD300 COLORCODELOCATION 00 00000014 COPYSCREENTOVIRTUALSCREEN 02 00FFF1A0
COPYVIRTUALSCREENTOSCREEN 02 00FFF178 COREID 00 FFFFFFE0 CR 00 0000000D CRLF 02 00FFD0D2
CRLF1 02 00FFD0D2 CRLFST 02 00FFF388 CS1 02 00FFF1DD CS2 02 00FFF1F3
CS2V1 02 00FFF1AC CS3 02 00FFF1F9 CSL1 02 00FFF293 CTRLC 00 00000003
CTRLH 00 00000008 CTRLI 00 00000009 CTRLJ 00 0000000A CTRLK 00 0000000B
CTRLM 00 0000000D CTRLS 00 00000013 CTRLX 00 00000018 CURSORCOL 00 00000111
CURSORFLASH 00 00000114 CURSORROW 00 00000110 CV2S1 02 00FFF184 DBGCHECKFORKEY 02 00FFF839
DBGGETKEY 02 00FFF83B DBGK1 02 00FFF84F DBGK10 02 00FFF89E DBGK11 02 00FFF8F7
DBGK12 02 00FFF8FD DBGK13 02 00FFF909 DBGK14 02 00FFF919 DBGK15 02 00FFF928
DBGK16 02 00FFF933 DBGK17 02 00FFF93C DBGK18 02 00FFF93F DBGK2 02 00FFF83D
DBGK3 02 00FFF854 DBGK4 02 00FFF862 DBGK5 02 00FFF86E DBGK7 02 00FFF87E
DBGK8 02 00FFF884 DBGK9 02 00FFF898 DBGKNOTALT 02 00FFF901 DBGKNOTCAPSLOCK 02 00FFF8D0
DBGKNOTCTRL 02 00FFF888 DBGKNOTNUMLOCK 02 00FFF8B9 DBGKNOTRSHIFT 02 00FFF8A2 DBGKNOTSCROLLLOCK 02 00FFF8E7
DCCR 02 00FFF2A7 DCLF 02 00FFF32D DCX10 02 00FFF2E1 DCX11 02 00FFF2F1
DCX12 02 00FFF2ED DCX13 02 00FFF2FD DCX14 02 00FFF2A5 DCX3 02 00FFF31B
DCX4 02 00FFF32F DCX5 02 00FFF30A DCX6 02 00FFF2B8 DCX7 02 00FFF2B4
DCX8 02 00FFF2C5 DCX9 02 00FFF2D2 DELAY3S 02 00FFF15B DISPBYTEASHEX 02 00FFF39D
DISPDWORDASHEX 02 00FFF38B DISPLAYCHAR 02 00FFF29B DISPLAYERR 02 00FFFAD5 DISPLAYSTRING 02 00FFF354
DISPLAYSTRINGCRLF 02 00FFF362 DISPLAYSTRINGDX 02 00FFFADF DISPNYB 02 00FFF3B5 DISPNYB1 02 00FFF3C3
DISPWORDASHEX 02 00FFF394 DLY3S1 02 00FFF15E DLY3S2 02 00FFF162 DRAM_BASE 00 10000000
DSPJ1B 02 00FFF358 DSRETB 02 00FFF360 DUMPREGS 02 00FFFB9A DUMRTS 02 00FFF022
FIRST_CORE 00 00000001 FREEMBX 02 00000002 FREEMSG 02 00000006 FREETCB 00 0000078A
GETHEXNUMBER 02 00FFFA73 GETRANGE 02 00FFFA5A GETSCREENLOCATION 02 00FFF230 GETTWOPARAMS 02 00FFFA41
GSL1 02 00FFF23D GTDC3 02 00FFFAD2 GTHX3 02 00FFFAC4 GTHX5 02 00FFFAAA
GTHX6 02 00FFFAB7 GTHXN1 02 00FFFA9B GTHXN2 02 00FFFA7E HC1 02 00FFF256
HELPMSG 02 00FFFAEF HEX2 02 00FFD2CE HEX4 02 00FFD2D2 HOMECURSOR 02 00FFF241
HOMECURSORJMP 02 00FFD308 ICC1 02 00FFF350 ICC2 02 00FFF352 ICR1 02 00FFF342
IGNBLANKS 02 00FFFA38 IGNBLANKS1 02 00FFFA38 INCCURSORPOS 02 00FFF331 INCCURSORROW 02 00FFF340
INCH 02 00FFF95E INCHE 02 00FFF963 INCHEK 02 00FFF967 INCHEK1 02 00FFF97B
INCHEK2 02 00FFF979 INCHEK3 02 00FFF970 INIT 02 00FFF072 IOFOCUSID 00 00000100
IOFOCUSNDX 00 00000100 IRQBASE 00 000000DF IRQFLAG 00 000007C6 IRQSOURCE 00 0000079A
IRQ_ROUT 02 00FFFC76 JTC_EXIT 02 00FFFC11 JUMP_TO_CODE 02 00FFFBDE KBDI0002 02 00FFF7C5
KBDI0004 02 00FFF80A KBDITRYAGAIN 02 00FFF7FE KBGS1 02 00FFF778 KBGS2 02 00FFF770
KBGS3 02 00FFF761 KEYBD 00 FFE30400 KEYBDACK 00 FFFFCC00 KEYBDBAD 00 FFFFCB00
KEYBDBUFFER 00 FFFFC000 KEYBDCHECKFORKEYDIRECT 02 00FFF95C KEYBDCLOSE 02 00FFF958 KEYBDCLR 00 FFE30402
KEYBDCONTROLCODES 02 00FFF600 KEYBDECHO 00 FFFFCA00 KEYBDEXTENDEDCODES 02 00FFF680 KEYBDGETID 02 00FFF79C
KEYBDGETSCANCODE 02 00FFF77D KEYBDGETSTATUS 02 00FFF761 KEYBDHEAD 00 FFFFC800 KEYBDID 00 00000124
KEYBDINIT 02 00FFF7C0 KEYBDLOCKS 00 FFFFCD00 KEYBDOPEN 02 00FFF957 KEYBDREAD 02 00FFF959
KEYBDRECVBYTE 02 00FFF700 KEYBDSEEK 02 00FFF95B KEYBDSENDBYTE 02 00FFF719 KEYBDSETLED 02 00FFF789
KEYBDTAIL 00 FFFFC900 KEYBDWAITTX 02 00FFF71F KEYBDWRITE 02 00FFF95A KEYLED 00 00000122
KEYSTATE1 00 00000120 KEYSTATE2 00 00000121 KGID1 02 00FFF7B9 KGNOTKBD 02 00FFF7BC
KRB3 02 00FFF705 KRB4 02 00FFF715 KWT1 02 00FFF724 KWT2 02 00FFF735
LEDS 00 FFE60000 LEDXIT 02 00FFF81E LETTER 02 00FFD2C1 LF 00 0000000A
MAX_TASKNO 00 0000003F MONGETCH 02 00FFFA28 MONGETNONSPACE 02 00FFFA2D MONITOR 02 00FFF996
MONITORSTART 02 00FFF991 MON_CCRSAVE 00 0000090F MON_DPRSAVE 00 0000090E MON_DSAVE 00 00000900
MON_NUMWKA 00 00000910 MON_PCSAVE 00 0000090A MON_R1 00 00000920 MON_R2 00 00000922
ACIA 00 FFE30100 ACIA_CMD 00 00000002 ACIA_CTRL 00 00000003 ACIA_CTRL2 00 0000000B
ACIA_RX 00 00000000 ACIA_STAT 00 00000001 ACIA_TX 00 00000000 ASCIITODECNYBBLE 02 00FFFA50
ASCIITOHEXNYBBLE 02 00FFFA28 ASMBUF 00 00000160 ASMO 02 00FFF846 ASMOO 02 00FFF850
ASMOUTCH 02 00FFF85A BIOS_SCREENS 00 17000000 BLANKLINE 02 00FFE258 BLKCPYDST 00 00000020
BLKCPYSRC 00 0000001C BLNKLN1 02 00FFE26B CALCSCREENLOC 02 00FFE2BE CHARCOLOR 00 00000112
CHARINVEC 00 00000804 CHAROUTVEC 00 00000800 CHECKPOINT 02 00FFE115 CLEARSCREEN 02 00FFE211
CLEARSCREENJMP 02 00FFD300 CMDPROMPT 02 00FFF86A CMDPROMPTJI 00 00000808 COLORCODELOCATION 00 00000014
COPYSCREENTOVIRTUALSCREEN 02 00FFE1E1 COPYVIRTUALSCREENTOSCREEN 02 00FFE1AA COREID 00 FFFFFFE0 CR 00 0000000D
CRLF 02 00FFD0D2 CRLF1 02 00FFD0D2 CRLFST 02 00FFE3E1 CS1 02 00FFE21E
CS2 02 00FFE235 CS2V1 02 00FFE1ED CS3 02 00FFE23B CSL1 02 00FFE2D9
CTRLC 00 00000003 CTRLH 00 00000008 CTRLI 00 00000009 CTRLJ 00 0000000A
CTRLK 00 0000000B CTRLM 00 0000000D CTRLS 00 00000013 CTRLT 00 00000014
CTRLX 00 00000018 CURSORCOL 00 00000111 CURSORFLASH 00 00000114 CURSORROW 00 00000110
CV2S1 02 00FFE1BF DAB1 02 00FFF869 DAB2 02 00FFF860 DBGCHECKFORKEY 02 00FFEA10
DBGK1 02 00FFEA4B DBGK10 02 00FFEAB0 DBGK11 02 00FFEB09 DBGK12 02 00FFEB0F
DBGK13 02 00FFEB1B DBGK14 02 00FFEB2B DBGK15 02 00FFEB3A DBGK16 02 00FFEB45
DBGK17 02 00FFEB4E DBGK18 02 00FFEB51 DBGK2 02 00FFEA16 DBGK20 02 00FFEA38
DBGK22 02 00FFEA54 DBGK23 02 00FFEA65 DBGK24 02 00FFEA46 DBGK3 02 00FFEA68
DBGK4 02 00FFEA74 DBGK5 02 00FFEA80 DBGK7 02 00FFEA90 DBGK8 02 00FFEA96
DBGK9 02 00FFEAAA DBGKNOTALT 02 00FFEB13 DBGKNOTCAPSLOCK 02 00FFEAE2 DBGKNOTCTRL 02 00FFEA9A
DBGKNOTNUMLOCK 02 00FFEACB DBGKNOTRSHIFT 02 00FFEAB4 DBGKNOTSCROLLLOCK 02 00FFEAF9 DCCR 02 00FFE2F1
DCLF 02 00FFE37B DCX10 02 00FFE32B DCX11 02 00FFE33B DCX12 02 00FFE337
DCX13 02 00FFE347 DCX14 02 00FFE2EE DCX3 02 00FFE369 DCX4 02 00FFE37D
DCX5 02 00FFE358 DCX6 02 00FFE302 DCX7 02 00FFE2FE DCX8 02 00FFE30F
DCX9 02 00FFE31C DELAY3S 02 00FFE18D DIRECT 00 00000001 DIS1 02 00FFF7CE
DIS10 02 00FFF566 DIS11 02 00FFF5A2 DIS12 02 00FFF5DF DIS13 02 00FFF61B
DIS14 02 00FFF65C DIS15 02 00FFF698 DIS16 02 00FFF6D5 DIS17 02 00FFF718
DIS18 02 00FFF760 DIS19 02 00FFF7FA DIS2 02 00FFF405 DIS20 02 00FFF3CE
DIS21 02 00FFF403 DIS23 02 00FFF3D1 DIS24 02 00FFF7FD DIS25 02 00FFF80A
DIS3 02 00FFF42E DIS4 02 00FFF44B DIS5 02 00FFF45C DIS6 02 00FFF490
DIS7 02 00FFF4C7 DIS8 02 00FFF4FB DIS9 02 00FFF532 DISASSEM 02 00FFF3B4
DISLOOP1 02 00FFF3BD DISNDXREG 02 00FFF831 DISNDXREGS 02 00FFF82D DISNEXTLINE 02 00FFF821
DISNOT9 02 00FFF440 DISNOTAOFFS 02 00FFF5CA DISNOTBO 02 00FFF607 DISNOTBOFFS 02 00FFF58E
DISNOTDIRECT 02 00FFF3FF DISNOTDOFFS 02 00FFF6C0 DISNOTEXT 02 00FFF7AD DISNOTIMMB 02 00FFF7BE
DISNOTIMMW 02 00FFF7CE DISNOTLREL 02 00FFF40F DISNOTNDX 02 00FFF7A1 DISNOTPBO 02 00FFF704
DISNOTPTO 02 00FFF78F DISNOTPWO 02 00FFF747 DISNOTR 02 00FFF552 DISNOTREL 02 00FFF418
DISNOTRMINUS 02 00FFF4EC DISNOTRMINUSMINUS 02 00FFF523 DISNOTRPLUS 02 00FFF481 DISNOTRPLUSPLUS 02 00FFF4B8
DISNOTTO 02 00FFF684 DISNOTWO 02 00FFF643 DISPBYTEASHEX 02 00FFE3F6 DISPDWORDASHEX 02 00FFE3E4
DISPLAYCHAR 02 00FFE2E1 DISPLAYERR 02 00FFFA5E DISPLAYSTRING 02 00FFE3A2 DISPLAYSTRINGCRLF 02 00FFE3B9
DISPLAYSTRINGDX 02 00FFFA68 DISPNYB 02 00FFE40E DISPNYB1 02 00FFE41D DISPWORDASHEX 02 00FFE3ED
DISTBL1 02 00FFEDB4 DISTBL2 02 00FFF2B4 DISTBL3 02 00FFF2F4 DISTBL4 02 00FFF314
DLY3S1 02 00FFE190 DLY3S2 02 00FFE194 DMPM1 02 00FFFB8E DMPM2 02 00FFFB79
DMPM3 02 00FFFBC7 DMPM4 02 00FFFBB9 DMPM5 02 00FFFBB1 DRAM_BASE 00 10000000
DSPJ1B 02 00FFE3AB DSPJ2 02 00FFE3A6 DSRETB 02 00FFE3B4 DUMPASMBUF 02 00FFF85D
DUMPMEMORY 02 00FFFB71 DUMPREGS 02 00FFFBCD DUMRTS 02 00FFE022 EXT 00 00000006
FAREXT 00 00000008 FIRQ_ROUT 02 00FFFCE5 FIRST_CORE 00 00000001 FREEMBX 02 00000002
FREEMSG 02 00000006 FREETCB 00 0000078A GETHEXNUMBER 02 00FFF9F8 GETKEY 02 00FFEA12
GETRANGE 02 00FFF9D6 GETSCREENLOCATION 02 00FFE272 GETTWOPARAMS 02 00FFF9B5 GSL1 02 00FFE280
GTDC3 02 00FFFA5B GTHX3 02 00FFFA4D GTHX5 02 00FFFA33 GTHX6 02 00FFFA40
GTHXN1 02 00FFFA24 GTHXN2 02 00FFFA05 HC1 02 00FFE29A HELPMSG 02 00FFFA78
HEX2 02 00FFD2CE HEX4 02 00FFD2D2 HOMECURSOR 02 00FFE284 HOMECURSORJMP 02 00FFD308
I2CW1 02 00FFE47E I2CWR1 02 00FFE4AB I2C_CMD 00 00000004 I2C_CTRL 00 00000002
I2C_PREH 00 00000001 I2C_PREL 00 00000000 I2C_RXR 00 00000003 I2C_STAT 00 00000004
I2C_TXR 00 00000003 I2C_WAIT_RX_NACK 02 00FFE4A9 I2C_WAIT_TIP 02 00FFE47C I2C_WR_CMD 02 00FFE486
ICC1 02 00FFE39E ICC2 02 00FFE3A0 ICR1 02 00FFE390 IGNBLANKS 02 00FFF9AC
IGNBLANKS1 02 00FFF9AC IMMB 00 00000003 IMMW 00 00000007 INCCURSORPOS 02 00FFE37F
INCCURSORROW 02 00FFE38E INCH 02 00FFECDA INCH1 02 00FFECEF INCH2 02 00FFECDC
INCHE 02 00FFECF8 INCHEK 02 00FFECFC INCHEK1 02 00FFED11 INCHEK2 02 00FFED0E
INCHEK3 02 00FFED05 INIT 02 00FFE086 INIT1 02 00FFE08E INITSERIAL 02 00FFEB6F
IOFOCUSID 00 00FF0010 IOFOCUSLIST 00 00FF0000 IOFOCUSNDX 00 00000100 IRQBASE 00 00FF0014
IRQFLAG 00 00FF0012 IRQSOURCE 00 00FF0011 IRQ_ROUT 02 00FFFCE6 JTC_EXIT 02 00FFFC53
JUMP_TO_CODE 02 00FFFC18 KBDBUFFULL 02 00FFEA0D KBDFIFO 00 00000040 KBDFIFOALIAS 00 00C00040
KBDHEADRCV 00 00000127 KBDI0002 02 00FFE949 KBDI0004 02 00FFE98E KBDITRYAGAIN 02 00FFE982
KBDRCVCOUNT 02 00FFE9BD KBDTAILRCV 00 00000128 KBGS1 02 00FFE8F8 KBGS2 02 00FFE8F0
KBGS3 02 00FFE8E1 KEYBD 00 FFE30400 KEYBDACK 00 FFFFCC00 KEYBDBAD 00 FFFFCB00
KEYBDBLOCK 00 00000126 KEYBDBUFFER 00 FFFFC000 KEYBDCHECKFORKEYDIRECT 02 00FFECD8 KEYBDCLOSE 02 00FFEB6B
KEYBDCLR 00 FFE30402 KEYBDCONTROLCODES 02 00FFE780 KEYBDECHO 00 FFFFCA00 KEYBDEXTENDEDCODES 02 00FFE800
KEYBDGETID 02 00FFE91C KEYBDGETSCANCODE 02 00FFE8FD KEYBDGETSTATUS 02 00FFE8E1 KEYBDHEAD 00 FFFFC800
KEYBDID 00 00000124 KEYBDINIT 02 00FFE940 KEYBDIRQ 02 00FFE9CF KEYBDLOCKS 00 FFFFCD00
KEYBDOPEN 02 00FFEB6A KEYBDREAD 02 00FFEB6C KEYBDRECVBYTE 02 00FFE880 KEYBDSEEK 02 00FFEB6E
KEYBDSENDBYTE 02 00FFE899 KEYBDSETLED 02 00FFE909 KEYBDTAIL 00 FFFFC900 KEYBDWAITTX 02 00FFE89F
KEYBDWRITE 02 00FFEB6D KEYLED 00 00000122 KEYSTATE1 00 00000120 KEYSTATE2 00 00000121
KGID1 02 00FFE939 KGNOTKBD 02 00FFE93C KRB3 02 00FFE885 KRB4 02 00FFE895
KRCXIT 02 00FFE9CE KWT1 02 00FFE8A4 KWT2 02 00FFE8B5 LEDS 00 FFE60001
LEDXIT 02 00FFE9A2 LETTER 02 00FFD2C1 LF 00 0000000A LSREL 00 00000002
MAX_TASKNO 00 0000003F MONGETCH 02 00FFF9A0 MONGETNONSPACE 02 00FFF9A5 MONITOR 02 00FFF8AC
MONITORSTART 02 00FFF89A MON_CCRSAVE 00 0000090F MON_DPRSAVE 00 0000090E MON_DSAVE 00 00000900
MON_NUMWKA 00 00000910 MON_PCSAVE 00 0000090A MON_R1 00 00000920 MON_R2 00 00000924
MON_SSAVE 00 00000908 MON_USAVE 00 00000906 MON_XSAVE 00 00000902 MON_YSAVE 00 00000904
MSCOUNT 00 FFFFFFE4 MSGBADKEYBD 02 00FFF82A MSGERR 02 00FFFAE7 MSGREGHEADINGS 02 00FFFB64
MSGSTARTUP 02 00FFF0BF MULTI_SIEVE 02 00FFF0F6 MULTI_SIEVE1 02 00FFF119 MULTI_SIEVE2 02 00FFF115
MULTI_SIEVE3 02 00FFF103 MULTI_SIEVE4 02 00FFF12C NHEX4 02 00FFFB92 NMAILBOX 02 00000004
NMIBASE 00 000000DC NMI_ROUT 02 00FFFCB8 NMSGBLK 02 00000008 NXBLANK 02 00FFFB96
ONEKEY 02 00FFD1DC OUTCH 02 00FFF97C PCRLF 02 00FFF374 PDATA 02 00FFF381
PIC 00 FFE3F000 PICPTR 00 00000028 PRINT 02 00FFF37E PROMPT1 02 00FFF9B1
PROMPT2 02 00FFF9E5 PROMPT3 02 00FFF9A4 PROMPTC 02 00FFF9F0 PROMPTD 02 00FFF9FB
PROMPTF 02 00FFFA07 PROMPTJ 02 00FFFA1A PROMPTLN 02 00FFF99D PROMPTR 02 00FFFA1F
PSTRNG 02 00FFF370 QNDX0 00 00000780 QNDX1 00 00000782 QNDX2 00 00000784
QNDX3 00 00000786 QNDX4 00 00000788 RAMERR 02 00FFE02C RAMTEST 02 00FFE000
RAMTEST1 02 00FFE00D RAMTEST3 02 00FFE017 ROMTORAM 02 00FFF0E6 ROMTORAM1 02 00FFF0EC
RUNNINGID 00 00800000 RUNNINGTCB 06 00000000 SCREENCOLOR 00 00000113 SCREENLOCATION 00 00000010
SCREENLOCATION2 00 00000018 SCROLLUP 02 00FFF1FB SCRUP1 02 00FFF208 SC_ALT 00 00000011
SC_C 00 00000021 SC_CAPSLOCK 00 00000058 SC_CTRL 00 00000014 SC_DEL 00 00000071
SC_EXTEND 00 000000E0 SC_F12 00 00000007 SC_KEYUP 00 000000F0 SC_NUMLOCK 00 00000077
SC_RSHIFT 00 00000059 SC_SCROLLLOCK 00 0000007E SC_T 00 0000002C SC_TAB 00 0000000D
SC_Z 00 0000001A SETKEYBOARDECHO 02 00FFF980 SHIFTEDSCANCODES 02 00FFF500 SHIFTLEFT5 02 00FFF16D
SHL_NUMWKA 02 00FFFA6A SHOWSPRITES 02 00FFF986 SIEVE 02 00FFF130 SIEVE1 02 00FFF148
SIEVE2 02 00FFF144 SIEVE3 02 00FFF135 SIEVE4 02 00FFF157 SKIP_INIT 02 00FFF08C
SPRITE_CTRL 00 FFE10000 SPRITE_EN 00 000003C0 ST1 02 00FFF079 ST3 02 00FFF069
ST6 02 00FFF030 ST7 02 00FFF03A ST8 02 00FFF03A START 02 00FFF023
STRPTR 00 00000024 SWI3_EXIT 02 00FFFC51 SWI3_ROUT 02 00FFFC2B TAB 00 00000009
TCB_CURSORCOL 00 00000021 TCB_CURSORROW 00 00000020 TCB_HJCB 00 0000001C TCB_HWAITMBX 00 00000022
TCB_IOF_NEXT 00 0000002C TCB_IOF_PREV 00 00000030 TCB_MBQ_NEXT 00 00000024 TCB_MBQ_PREV 00 00000028
TCB_MMU_MAP 00 00000038 TCB_MSGPTR_D1 00 00000014 TCB_MSGPTR_D2 00 00000018 TCB_NXTRDY 00 00000000
TCB_NXTTCB 00 00000008 TCB_PRIORITY 00 00000010 TCB_PRVRDY 00 00000004 TCB_SPSAVE 00 00000034
TCB_STATUS 00 0000001E TCB_TIMEOUT 00 0000000C TEXTCLOSE 02 00FFF1CC TEXTOPEN 02 00FFF1CB
TEXTREAD 02 00FFF1CD TEXTREG 00 FFE0DF00 TEXTSCR 00 FFE00000 TEXTSEEK 02 00FFF1CF
TEXTWRITE 02 00FFF1CE TEXT_COLS 00 00000000 TEXT_CURPOS 00 00000022 TEXT_ROWS 00 00000001
TIMEOUTLIST 00 0000078C TR1A 02 00FFFCB7 UCP1 02 00FFF277 UNSHIFTEDSCANCODES 02 00FFF400
UPDATECURSORPOS 02 00FFF258 W10_0001 02 00FFF740 W300_0001 02 00FFF754 WAIT10MS 02 00FFF739
WAIT300MS 02 00FFF74D XBLANK 02 00FFD0AF XOFF 00 00000013 XON 00 00000011
328 SYMBOLS
MSCOUNT 00 FFFFFFE4 MSGBADKEYBD 02 00FFE9AE MSGERR 02 00FFFA70 MSGF09STARTING 02 00FFF875
MSGREGHEADINGS 02 00FFFB2E MSGSERIALTEST 02 00FFECC5 MSGSTARTUP 02 00FFE0F4 MULTI_SIEVE 02 00FFE12B
MULTI_SIEVE1 02 00FFE14E MULTI_SIEVE2 02 00FFE14A MULTI_SIEVE3 02 00FFE138 MULTI_SIEVE4 02 00FFE161
NDX 00 00000005 NHEX4 02 00FFFB68 NMAILBOX 02 00000004 NMESERIAL 02 00FFEC8E
NMIBASE 00 00FF0013 NMI_ROUT 02 00FFFD15 NMSGBLK 02 00000008 NOTKBDIRQ 02 00FFEA0C
NOTRXINT 02 00FFEC8D NOTTIMERIRQ 02 00FFE471 NOTTIMERIRQ2 02 00FFFD08 NXBLANK 02 00FFFB6C
ONEKEY 02 00FFD1DC OSC1 02 00FFED59 OSCALL 02 00FFED59 OSCALLTBL 02 00FFED27
OSCX 02 00FFED69 OSSEMA 00 00EF0010 OUTCH 02 00FFED12 OUTSEMA 00 00EF0000
PCRLF 02 00FFE3CD PDATA 02 00FFE3DA PIC 00 FFE3F000 PICPTR 00 00000028
PRINT 02 00FFE3D7 PROMPT1 02 00FFF8D9 PROMPT2 02 00FFF905 PROMPT2A 02 00FFF923
PROMPT3 02 00FFF8CA PROMPTC 02 00FFF941 PROMPTD 02 00FFF94D PROMPTF 02 00FFF959
PROMPTHELP 02 00FFF935 PROMPTJ 02 00FFF96C PROMPTLN 02 00FFF8C6 PROMPTR 02 00FFF971
PROMPTT 02 00FFF984 PROMPTU 02 00FFF999 PROMPT_S 02 00FFF97B PSTRNG 02 00FFE3C9
QNDX0 00 00000780 QNDX1 00 00000782 QNDX2 00 00000784 QNDX3 00 00000786
QNDX4 00 00000788 RAMERR 02 00FFD42C RAMTEST 02 00FFD400 RAMTEST1 02 00FFD40D
RAMTEST3 02 00FFD417 RELEASEIOFOCUS 02 00FFED84 REQUESTIOFOCUS 02 00FFED6D RIOF1 02 00FFEDAB
RIOF2 02 00FFED9A ROMTORAM 02 00FFE11B ROMTORAM1 02 00FFE121 RTC 00 FFE30500
RTCBUF 00 00007FC0 RTCR0001 02 00FFE4D9 RTCW0001 02 00FFE524 RTC_READ 02 00FFE4B3
RTC_RXERR 02 00FFE502 RTC_WRITE 02 00FFE506 RTI_INSN 02 00FFFD21 RUNNINGID 00 00800000
RUNNINGTCB 06 00000000 SCREENCOLOR 00 00000113 SCREENLOCATION 00 00000010 SCREENLOCATION2 00 00000018
SCROLLUP 02 00FFE23D SCRUP1 02 00FFE24A SC_ALT 00 00000011 SC_C 00 00000021
SC_CAPSLOCK 00 00000058 SC_CTRL 00 00000014 SC_DEL 00 00000071 SC_EXTEND 00 000000E0
SC_F12 00 00000007 SC_KEYUP 00 000000F0 SC_NUMLOCK 00 00000077 SC_RSHIFT 00 00000059
SC_SCROLLLOCK 00 0000007E SC_T 00 0000002C SC_TAB 00 0000000D SC_Z 00 0000001A
SEMAABS 00 00001000 SERHEADRCV 00 00000131 SERHEADXMIT 00 00000136 SERHZERO 00 00000130
SERIALGETCHAR 02 00FFEB9D SERIALINIT 02 00FFEB6F SERIALIRQ 02 00FFEC3B SERIALOUTPUTTEST 02 00FFECA5
SERIALPEEKCHAR 02 00FFEBCD SERIALPEEKCHARDIRECT 02 00FFEBE4 SERIALPUTCHAR 02 00FFEC08 SERIALPUTSTRING 02 00FFEC95
SERIALRCVCOUNT 02 00FFEC28 SERRCVBUF 00 00BFF000 SERRCVXOFF 00 00000140 SERRCVXON 00 00000139
SERTAILRCV 00 00000133 SERTAILXMIT 00 00000138 SERTZERO 00 00000132 SETKEYBOARDECHO 02 00FFED16
SGC2 02 00FFEBB6 SGCNOCHARS 02 00FFEBC6 SGCXIT 02 00FFEBC9 SHIFTEDSCANCODES 02 00FFE680
SHIFTLEFT5 02 00FFE19F SHL_NUMWKA 02 00FFF9EB SHOWSPRITES 02 00FFED1C SIEVE 02 00FFE165
SIEVE1 02 00FFE17D SIEVE2 02 00FFE179 SIEVE3 02 00FFE16A SIEVE4 02 00FFE18C
SINI1 02 00FFEB82 SIRQ0001 02 00FFEC4D SIRQNXTBYTE 02 00FFEC3B SIRQRXFULL 02 00FFEC8D
SKIPDOLLAR 02 00FFF8F8 SKIP_INIT 02 00FFE0C1 SOTST1 02 00FFECAF SPC0001 02 00FFEC0A
SPCD0001 02 00FFEC02 SPCNOCHARS 02 00FFEBDF SPCXIT 02 00FFEBE2 SPRITE_CTRL 00 FFE10000
SPRITE_EN 00 000003C0 SPS2 02 00FFEC99 SPSXIT 02 00FFECA3 SRCXIT 02 00FFEC3A
SREL 00 00000004 ST1 02 00FFE0A0 ST3 02 00FFE07D ST6 02 00FFE03C
ST7 02 00FFE046 ST8 02 00FFE046 START 02 00FFE023 STRPTR 00 00000024
SWI3_EXIT 02 00FFFCB7 SWI3_ROUT 02 00FFFC88 TAB 00 00000009 TCB_CURSORCOL 00 00000021
TCB_CURSORROW 00 00000020 TCB_HJCB 00 0000001C TCB_HWAITMBX 00 00000022 TCB_IOF_NEXT 00 0000002C
TCB_IOF_PREV 00 00000030 TCB_MBQ_NEXT 00 00000024 TCB_MBQ_PREV 00 00000028 TCB_MMU_MAP 00 00000038
TCB_MSGPTR_D1 00 00000014 TCB_MSGPTR_D2 00 00000018 TCB_NXTRDY 00 00000000 TCB_NXTTCB 00 00000008
TCB_PRIORITY 00 00000010 TCB_PRVRDY 00 00000004 TCB_SPSAVE 00 00000034 TCB_STATUS 00 0000001E
TCB_TIMEOUT 00 0000000C TEXTCLOSE 02 00FFE20D TEXTOPEN 02 00FFE20C TEXTREAD 02 00FFE20E
TEXTREG 00 FFE0DF00 TEXTSCR 00 FFE00000 TEXTSEEK 02 00FFE210 TEXTWRITE 02 00FFE20F
TEXT_COLS 00 00000000 TEXT_CURPOS 00 00000022 TEXT_ROWS 00 00000001 TIMEOUTLIST 00 0000078C
TIMERINIT 02 00FFE424 TIMERIRQ 02 00FFE44F TR1A 02 00FFFD14 UCP1 02 00FFE2BC
UNSHIFTEDSCANCODES 02 00FFE580 UPDATECURSORPOS 02 00FFE29C VIA 00 FFE60000 VIA_ACR 00 0000000B
VIA_DDRA 00 00000003 VIA_IER 00 0000000E VIA_IFR 00 0000000D VIA_PA 00 00000001
VIA_T3CMPH 00 00000015 VIA_T3CMPL 00 00000014 VIA_T3LH 00 00000013 VIA_T3LL 00 00000012
W10_0001 02 00FFE8C0 W300_0001 02 00FFE8D4 WAIT10MS 02 00FFE8B9 WAIT300MS 02 00FFE8CD
XBLANK 02 00FFD0AF XOFF 00 00000013 XON 00 00000011
523 SYMBOLS
 
0 error(s), 70 warning(s)
0 error(s), 1582 warning(s)
/boot/boot_rom.ver
4,8 → 4,8
rommem[ 4271] <= 12'h0C6;
rommem[ 4272] <= 12'h020;
rommem[ 4273] <= 12'h017;
rommem[ 4274] <= 12'h002;
rommem[ 4275] <= 12'h8CB;
rommem[ 4274] <= 12'h001;
rommem[ 4275] <= 12'hC5E;
rommem[ 4276] <= 12'h039;
rommem[ 4304] <= 12'h012;
rommem[ 4305] <= 12'h012;
12,13 → 12,13
rommem[ 4306] <= 12'h0C6;
rommem[ 4307] <= 12'h00D;
rommem[ 4308] <= 12'h017;
rommem[ 4309] <= 12'h002;
rommem[ 4310] <= 12'h8A8;
rommem[ 4309] <= 12'h001;
rommem[ 4310] <= 12'hC3B;
rommem[ 4311] <= 12'h0C6;
rommem[ 4312] <= 12'h00A;
rommem[ 4313] <= 12'h017;
rommem[ 4314] <= 12'h002;
rommem[ 4315] <= 12'h8A3;
rommem[ 4314] <= 12'h001;
rommem[ 4315] <= 12'hC36;
rommem[ 4316] <= 12'h039;
rommem[ 4336] <= 12'h012;
rommem[ 4337] <= 12'h020;
29,3319 → 29,7505
rommem[ 4575] <= 12'h804;
rommem[ 4800] <= 12'h012;
rommem[ 4801] <= 12'h017;
rommem[ 4802] <= 12'h002;
rommem[ 4803] <= 12'h6BB;
rommem[ 4802] <= 12'h001;
rommem[ 4803] <= 12'hA4E;
rommem[ 4804] <= 12'h039;
rommem[ 4812] <= 12'h012;
rommem[ 4813] <= 12'h012;
rommem[ 4814] <= 12'h017;
rommem[ 4815] <= 12'h002;
rommem[ 4816] <= 12'h0CC;
rommem[ 4815] <= 12'h001;
rommem[ 4816] <= 12'h125;
rommem[ 4817] <= 12'h039;
rommem[ 4818] <= 12'h017;
rommem[ 4819] <= 12'h002;
rommem[ 4820] <= 12'h0BF;
rommem[ 4819] <= 12'h001;
rommem[ 4820] <= 12'h118;
rommem[ 4821] <= 12'h039;
rommem[ 4864] <= 12'h016;
rommem[ 4865] <= 12'h001;
rommem[ 4866] <= 12'hECD;
rommem[ 4865] <= 12'h000;
rommem[ 4866] <= 12'hF0E;
rommem[ 4872] <= 12'h016;
rommem[ 4873] <= 12'h001;
rommem[ 4874] <= 12'hF36;
rommem[ 8192] <= 12'h18E;
rommem[ 8193] <= 12'h000;
rommem[ 8194] <= 12'h000;
rommem[ 8195] <= 12'h086;
rommem[ 8196] <= 12'h001;
rommem[ 8197] <= 12'h015;
rommem[ 8198] <= 12'h0B7;
rommem[ 8199] <= 12'hFFF;
rommem[ 8200] <= 12'hE60;
rommem[ 8201] <= 12'h000;
rommem[ 8202] <= 12'h0CC;
rommem[ 8203] <= 12'hAAA;
rommem[ 8204] <= 12'h555;
rommem[ 8205] <= 12'h0ED;
rommem[ 8206] <= 12'hA01;
rommem[ 8207] <= 12'h18C;
rommem[ 8208] <= 12'h008;
rommem[ 8209] <= 12'h000;
rommem[ 8210] <= 12'h025;
rommem[ 8211] <= 12'hFF9;
rommem[ 8212] <= 12'h18E;
rommem[ 8213] <= 12'h000;
rommem[ 8214] <= 12'h000;
rommem[ 8215] <= 12'h0EC;
rommem[ 8216] <= 12'hA01;
rommem[ 8217] <= 12'h183;
rommem[ 8218] <= 12'hAAA;
rommem[ 8219] <= 12'h555;
rommem[ 8220] <= 12'h026;
rommem[ 8221] <= 12'h00E;
rommem[ 8222] <= 12'h18C;
rommem[ 8223] <= 12'h008;
rommem[ 8224] <= 12'h000;
rommem[ 8225] <= 12'h025;
rommem[ 8226] <= 12'hFF4;
rommem[ 4873] <= 12'h000;
rommem[ 4874] <= 12'hF79;
rommem[ 5120] <= 12'h18E;
rommem[ 5121] <= 12'h000;
rommem[ 5122] <= 12'h000;
rommem[ 5123] <= 12'h086;
rommem[ 5124] <= 12'h001;
rommem[ 5125] <= 12'h015;
rommem[ 5126] <= 12'h0B7;
rommem[ 5127] <= 12'hFFF;
rommem[ 5128] <= 12'hE60;
rommem[ 5129] <= 12'h001;
rommem[ 5130] <= 12'h0CC;
rommem[ 5131] <= 12'hAAA;
rommem[ 5132] <= 12'h555;
rommem[ 5133] <= 12'h0ED;
rommem[ 5134] <= 12'hA01;
rommem[ 5135] <= 12'h18C;
rommem[ 5136] <= 12'h008;
rommem[ 5137] <= 12'h000;
rommem[ 5138] <= 12'h025;
rommem[ 5139] <= 12'hFF9;
rommem[ 5140] <= 12'h18E;
rommem[ 5141] <= 12'h000;
rommem[ 5142] <= 12'h000;
rommem[ 5143] <= 12'h0EC;
rommem[ 5144] <= 12'hA01;
rommem[ 5145] <= 12'h183;
rommem[ 5146] <= 12'hAAA;
rommem[ 5147] <= 12'h555;
rommem[ 5148] <= 12'h026;
rommem[ 5149] <= 12'h00E;
rommem[ 5150] <= 12'h18C;
rommem[ 5151] <= 12'h008;
rommem[ 5152] <= 12'h000;
rommem[ 5153] <= 12'h025;
rommem[ 5154] <= 12'hFF4;
rommem[ 5155] <= 12'h086;
rommem[ 5156] <= 12'h002;
rommem[ 5157] <= 12'h015;
rommem[ 5158] <= 12'h0B7;
rommem[ 5159] <= 12'hFFF;
rommem[ 5160] <= 12'hE60;
rommem[ 5161] <= 12'h001;
rommem[ 5162] <= 12'h06E;
rommem[ 5163] <= 12'hC04;
rommem[ 5164] <= 12'h086;
rommem[ 5165] <= 12'h080;
rommem[ 5166] <= 12'h015;
rommem[ 5167] <= 12'h0B7;
rommem[ 5168] <= 12'hFFF;
rommem[ 5169] <= 12'hE60;
rommem[ 5170] <= 12'h001;
rommem[ 5171] <= 12'h08E;
rommem[ 5172] <= 12'hE00;
rommem[ 5173] <= 12'h000;
rommem[ 5174] <= 12'h015;
rommem[ 5175] <= 12'h0F6;
rommem[ 5176] <= 12'hFFF;
rommem[ 5177] <= 12'hFFF;
rommem[ 5178] <= 12'hFE0;
rommem[ 5179] <= 12'h03A;
rommem[ 5180] <= 12'h086;
rommem[ 5181] <= 12'h046;
rommem[ 5182] <= 12'h0A7;
rommem[ 5183] <= 12'h804;
rommem[ 5184] <= 12'h013;
rommem[ 5185] <= 12'h06E;
rommem[ 5186] <= 12'hC04;
rommem[ 8192] <= 12'hFFF;
rommem[ 8193] <= 12'h8AC;
rommem[ 8194] <= 12'hFFE;
rommem[ 8195] <= 12'h022;
rommem[ 8196] <= 12'hFFE;
rommem[ 8197] <= 12'hCDA;
rommem[ 8198] <= 12'hFFE;
rommem[ 8199] <= 12'hCF8;
rommem[ 8200] <= 12'hFFE;
rommem[ 8201] <= 12'hCFC;
rommem[ 8202] <= 12'hFFE;
rommem[ 8203] <= 12'hD12;
rommem[ 8204] <= 12'hFFE;
rommem[ 8205] <= 12'h3DA;
rommem[ 8206] <= 12'hFFE;
rommem[ 8207] <= 12'h3CD;
rommem[ 8208] <= 12'hFFE;
rommem[ 8209] <= 12'h3C9;
rommem[ 8210] <= 12'hFFE;
rommem[ 8211] <= 12'h022;
rommem[ 8212] <= 12'hFFE;
rommem[ 8213] <= 12'h022;
rommem[ 8214] <= 12'hFFE;
rommem[ 8215] <= 12'h022;
rommem[ 8216] <= 12'hFFE;
rommem[ 8217] <= 12'h022;
rommem[ 8218] <= 12'hFFE;
rommem[ 8219] <= 12'h022;
rommem[ 8220] <= 12'hFFE;
rommem[ 8221] <= 12'h2E1;
rommem[ 8222] <= 12'hFFE;
rommem[ 8223] <= 12'h022;
rommem[ 8224] <= 12'hFFE;
rommem[ 8225] <= 12'h022;
rommem[ 8226] <= 12'h039;
rommem[ 8227] <= 12'h086;
rommem[ 8228] <= 12'h002;
rommem[ 8228] <= 12'hFFF;
rommem[ 8229] <= 12'h015;
rommem[ 8230] <= 12'h0B7;
rommem[ 8231] <= 12'hFFF;
rommem[ 8232] <= 12'hE60;
rommem[ 8233] <= 12'h000;
rommem[ 8234] <= 12'h06E;
rommem[ 8235] <= 12'hC04;
rommem[ 8236] <= 12'h086;
rommem[ 8237] <= 12'h080;
rommem[ 8238] <= 12'h015;
rommem[ 8239] <= 12'h0B7;
rommem[ 8240] <= 12'hFFF;
rommem[ 8241] <= 12'hE60;
rommem[ 8242] <= 12'h000;
rommem[ 8243] <= 12'h08E;
rommem[ 8244] <= 12'hE00;
rommem[ 8245] <= 12'h000;
rommem[ 8246] <= 12'h015;
rommem[ 8247] <= 12'h0F6;
rommem[ 8248] <= 12'hFFF;
rommem[ 8249] <= 12'hFFF;
rommem[ 8250] <= 12'hFE0;
rommem[ 8251] <= 12'h03A;
rommem[ 8252] <= 12'h086;
rommem[ 8253] <= 12'h046;
rommem[ 8254] <= 12'h0A7;
rommem[ 8255] <= 12'h804;
rommem[ 8256] <= 12'h013;
rommem[ 8257] <= 12'h06E;
rommem[ 8258] <= 12'hC04;
rommem[12288] <= 12'hFFF;
rommem[12289] <= 12'h999;
rommem[12290] <= 12'hFFF;
rommem[12291] <= 12'h022;
rommem[12292] <= 12'hFFF;
rommem[12293] <= 12'h961;
rommem[12294] <= 12'hFFF;
rommem[12295] <= 12'h966;
rommem[12296] <= 12'hFFF;
rommem[12297] <= 12'h96A;
rommem[12298] <= 12'hFFF;
rommem[12299] <= 12'h97F;
rommem[12300] <= 12'hFFF;
rommem[12301] <= 12'h381;
rommem[12302] <= 12'hFFF;
rommem[12303] <= 12'h374;
rommem[12304] <= 12'hFFF;
rommem[12305] <= 12'h370;
rommem[12306] <= 12'hFFF;
rommem[12307] <= 12'h022;
rommem[12308] <= 12'hFFF;
rommem[12309] <= 12'h022;
rommem[12310] <= 12'hFFF;
rommem[12311] <= 12'h022;
rommem[12312] <= 12'hFFF;
rommem[12313] <= 12'h022;
rommem[12314] <= 12'hFFF;
rommem[12315] <= 12'h022;
rommem[12316] <= 12'hFFF;
rommem[12317] <= 12'h29B;
rommem[12318] <= 12'hFFF;
rommem[12319] <= 12'h022;
rommem[12320] <= 12'hFFF;
rommem[12321] <= 12'h022;
rommem[12322] <= 12'h039;
rommem[12323] <= 12'h086;
rommem[12324] <= 12'h055;
rommem[12325] <= 12'h015;
rommem[12326] <= 12'h0B7;
rommem[12327] <= 12'hFFF;
rommem[12328] <= 12'hE60;
rommem[12329] <= 12'h000;
rommem[12330] <= 12'h0CE;
rommem[12331] <= 12'hFFF;
rommem[12332] <= 12'h030;
rommem[12333] <= 12'h07E;
rommem[12334] <= 12'hFFE;
rommem[12335] <= 12'h000;
rommem[12336] <= 12'h1CE;
rommem[12337] <= 12'h003;
rommem[12338] <= 12'hFFF;
rommem[12339] <= 12'h015;
rommem[12340] <= 12'h0B6;
rommem[12341] <= 12'hFFF;
rommem[12342] <= 12'hFFF;
rommem[12343] <= 12'hFE0;
rommem[12344] <= 12'h081;
rommem[12345] <= 12'h002;
rommem[12346] <= 12'h08D;
rommem[12347] <= 12'h11F;
rommem[12348] <= 12'h086;
rommem[12349] <= 12'h0AA;
rommem[12350] <= 12'h015;
rommem[12351] <= 12'h0B7;
rommem[12352] <= 12'hFFF;
rommem[12353] <= 12'hE60;
rommem[12354] <= 12'h000;
rommem[12355] <= 12'h086;
rommem[12356] <= 12'h002;
rommem[12357] <= 12'h097;
rommem[12358] <= 12'h100;
rommem[12359] <= 12'h0B7;
rommem[12360] <= 12'h800;
rommem[12361] <= 12'h000;
rommem[12362] <= 12'h086;
rommem[12363] <= 12'h0CE;
rommem[12364] <= 12'h097;
rommem[12365] <= 12'h113;
rommem[12366] <= 12'h097;
rommem[12367] <= 12'h112;
rommem[12368] <= 12'h08D;
rommem[12369] <= 12'h17E;
rommem[12370] <= 12'h0CC;
rommem[12371] <= 12'hFFF;
rommem[12372] <= 12'h29B;
rommem[12373] <= 12'h0DD;
rommem[12374] <= 12'h800;
rommem[12375] <= 12'h0CC;
rommem[12376] <= 12'hFFF;
rommem[12377] <= 12'h83B;
rommem[12378] <= 12'h0DD;
rommem[12379] <= 12'h804;
rommem[12380] <= 12'h015;
rommem[12381] <= 12'h0F6;
rommem[12382] <= 12'hFFF;
rommem[12383] <= 12'hFFF;
rommem[12384] <= 12'hFE0;
rommem[12385] <= 12'h0C1;
rommem[12386] <= 12'h002;
rommem[12387] <= 12'h027;
rommem[12388] <= 12'h00D;
rommem[12389] <= 12'h020;
rommem[12390] <= 12'h025;
rommem[12391] <= 12'h020;
rommem[12392] <= 12'h08D;
rommem[12393] <= 12'h086;
rommem[12394] <= 12'h0FF;
rommem[12395] <= 12'h015;
rommem[12396] <= 12'h0B7;
rommem[12397] <= 12'hFFF;
rommem[12398] <= 12'hE60;
rommem[12399] <= 12'h000;
rommem[12400] <= 12'h020;
rommem[12401] <= 12'hFF7;
rommem[12402] <= 12'h08E;
rommem[12403] <= 12'h000;
rommem[12404] <= 12'h080;
rommem[12405] <= 12'h086;
rommem[12406] <= 12'h001;
rommem[12407] <= 12'h0C6;
rommem[12408] <= 12'h002;
rommem[12409] <= 12'h06F;
rommem[12410] <= 12'h809;
rommem[12411] <= 12'hE3F;
rommem[12412] <= 12'h000;
rommem[12413] <= 12'h0A7;
rommem[12414] <= 12'h809;
rommem[12415] <= 12'hE3F;
rommem[12416] <= 12'h001;
rommem[12417] <= 12'h0E7;
rommem[12418] <= 12'h809;
rommem[12419] <= 12'hE3F;
rommem[12420] <= 12'h002;
rommem[12421] <= 12'h030;
rommem[12422] <= 12'h004;
rommem[12423] <= 12'h08C;
rommem[12424] <= 12'h000;
rommem[12425] <= 12'h100;
rommem[12426] <= 12'h025;
rommem[12427] <= 12'hFED;
rommem[12428] <= 12'h01C;
rommem[12429] <= 12'h0EF;
rommem[12430] <= 12'h086;
rommem[12431] <= 12'h038;
rommem[12432] <= 12'h015;
rommem[12433] <= 12'h0B7;
rommem[12434] <= 12'hFFF;
rommem[12435] <= 12'hE0D;
rommem[12436] <= 12'hF00;
rommem[12437] <= 12'h086;
rommem[12438] <= 12'h01D;
rommem[12439] <= 12'h015;
rommem[12440] <= 12'h0B7;
rommem[12441] <= 12'hFFF;
rommem[12442] <= 12'hE0D;
rommem[12443] <= 12'hF01;
rommem[12444] <= 12'h08D;
rommem[12445] <= 12'h132;
rommem[12446] <= 12'h08D;
rommem[12447] <= 12'h1A1;
rommem[12448] <= 12'h086;
rommem[12449] <= 12'h005;
rommem[12450] <= 12'h015;
rommem[12451] <= 12'h0B7;
rommem[12452] <= 12'hFFF;
rommem[12453] <= 12'hE60;
rommem[12454] <= 12'h000;
rommem[12455] <= 12'h0CC;
rommem[12456] <= 12'hFFF;
rommem[12457] <= 12'h0BF;
rommem[12458] <= 12'h08D;
rommem[12459] <= 12'h2A8;
rommem[12460] <= 12'h08E;
rommem[12461] <= 12'h000;
rommem[12462] <= 12'h000;
rommem[12463] <= 12'h0CC;
rommem[12464] <= 12'h000;
rommem[12465] <= 12'h000;
rommem[12466] <= 12'h017;
rommem[12467] <= 12'h000;
rommem[12468] <= 12'h8D4;
rommem[12469] <= 12'h017;
rommem[12470] <= 12'h000;
rommem[12471] <= 12'h708;
rommem[12472] <= 12'h0DC;
rommem[12473] <= 12'h124;
rommem[12474] <= 12'h08D;
rommem[12475] <= 12'h2D8;
rommem[12476] <= 12'h07E;
rommem[12477] <= 12'hFFF;
rommem[12478] <= 12'h994;
rommem[12479] <= 12'h072;
rommem[12480] <= 12'h066;
rommem[12481] <= 12'h036;
rommem[12482] <= 12'h038;
rommem[12483] <= 12'h030;
rommem[12484] <= 12'h039;
rommem[12485] <= 12'h020;
rommem[12486] <= 12'h031;
rommem[12487] <= 12'h032;
rommem[12488] <= 12'h02D;
rommem[12489] <= 12'h062;
rommem[12490] <= 12'h069;
rommem[12491] <= 12'h074;
rommem[12492] <= 12'h020;
rommem[12493] <= 12'h053;
rommem[12494] <= 12'h079;
rommem[12495] <= 12'h073;
rommem[12496] <= 12'h074;
rommem[12497] <= 12'h065;
rommem[12498] <= 12'h06D;
rommem[12499] <= 12'h020;
rommem[ 8233] <= 12'h003;
rommem[ 8234] <= 12'h086;
rommem[ 8235] <= 12'h055;
rommem[ 8236] <= 12'h015;
rommem[ 8237] <= 12'h0B7;
rommem[ 8238] <= 12'hFFF;
rommem[ 8239] <= 12'hE60;
rommem[ 8240] <= 12'h001;
rommem[ 8241] <= 12'h086;
rommem[ 8242] <= 12'h001;
rommem[ 8243] <= 12'h0B7;
rommem[ 8244] <= 12'hEF1;
rommem[ 8245] <= 12'h010;
rommem[ 8246] <= 12'h0CE;
rommem[ 8247] <= 12'hFFE;
rommem[ 8248] <= 12'h03C;
rommem[ 8249] <= 12'h07E;
rommem[ 8250] <= 12'hFFD;
rommem[ 8251] <= 12'h400;
rommem[ 8252] <= 12'h1CE;
rommem[ 8253] <= 12'h006;
rommem[ 8254] <= 12'hFFF;
rommem[ 8255] <= 12'h015;
rommem[ 8256] <= 12'h0B6;
rommem[ 8257] <= 12'hFFF;
rommem[ 8258] <= 12'hFFF;
rommem[ 8259] <= 12'hFE0;
rommem[ 8260] <= 12'h081;
rommem[ 8261] <= 12'h001;
rommem[ 8262] <= 12'h08D;
rommem[ 8263] <= 12'h145;
rommem[ 8264] <= 12'h086;
rommem[ 8265] <= 12'h0AA;
rommem[ 8266] <= 12'h015;
rommem[ 8267] <= 12'h0B7;
rommem[ 8268] <= 12'hFFF;
rommem[ 8269] <= 12'hE60;
rommem[ 8270] <= 12'h001;
rommem[ 8271] <= 12'h086;
rommem[ 8272] <= 12'h001;
rommem[ 8273] <= 12'h0B7;
rommem[ 8274] <= 12'hFF0;
rommem[ 8275] <= 12'h010;
rommem[ 8276] <= 12'h0B7;
rommem[ 8277] <= 12'h800;
rommem[ 8278] <= 12'h000;
rommem[ 8279] <= 12'h086;
rommem[ 8280] <= 12'h0CE;
rommem[ 8281] <= 12'h097;
rommem[ 8282] <= 12'h113;
rommem[ 8283] <= 12'h097;
rommem[ 8284] <= 12'h112;
rommem[ 8285] <= 12'h08D;
rommem[ 8286] <= 12'h1B2;
rommem[ 8287] <= 12'h0CC;
rommem[ 8288] <= 12'hFFE;
rommem[ 8289] <= 12'h2E1;
rommem[ 8290] <= 12'h0FD;
rommem[ 8291] <= 12'h000;
rommem[ 8292] <= 12'h800;
rommem[ 8293] <= 12'h0CC;
rommem[ 8294] <= 12'hFFE;
rommem[ 8295] <= 12'hBE4;
rommem[ 8296] <= 12'h0FD;
rommem[ 8297] <= 12'h000;
rommem[ 8298] <= 12'h804;
rommem[ 8299] <= 12'h0C6;
rommem[ 8300] <= 12'h018;
rommem[ 8301] <= 12'h017;
rommem[ 8302] <= 12'h000;
rommem[ 8303] <= 12'hCE9;
rommem[ 8304] <= 12'h015;
rommem[ 8305] <= 12'h0F6;
rommem[ 8306] <= 12'hFFF;
rommem[ 8307] <= 12'hFFF;
rommem[ 8308] <= 12'hFE0;
rommem[ 8309] <= 12'h0C1;
rommem[ 8310] <= 12'h001;
rommem[ 8311] <= 12'h027;
rommem[ 8312] <= 12'h00D;
rommem[ 8313] <= 12'h020;
rommem[ 8314] <= 12'h046;
rommem[ 8315] <= 12'h020;
rommem[ 8316] <= 12'h0AE;
rommem[ 8317] <= 12'h086;
rommem[ 8318] <= 12'h0FF;
rommem[ 8319] <= 12'h015;
rommem[ 8320] <= 12'h0B7;
rommem[ 8321] <= 12'hFFF;
rommem[ 8322] <= 12'hE60;
rommem[ 8323] <= 12'h001;
rommem[ 8324] <= 12'h020;
rommem[ 8325] <= 12'hFF7;
rommem[ 8326] <= 12'h017;
rommem[ 8327] <= 12'h000;
rommem[ 8328] <= 12'h42A;
rommem[ 8329] <= 12'h08E;
rommem[ 8330] <= 12'h000;
rommem[ 8331] <= 12'h127;
rommem[ 8332] <= 12'h0C6;
rommem[ 8333] <= 12'h020;
rommem[ 8334] <= 12'h06F;
rommem[ 8335] <= 12'h800;
rommem[ 8336] <= 12'h05A;
rommem[ 8337] <= 12'h026;
rommem[ 8338] <= 12'hFFB;
rommem[ 8339] <= 12'h017;
rommem[ 8340] <= 12'h000;
rommem[ 8341] <= 12'h38E;
rommem[ 8342] <= 12'h017;
rommem[ 8343] <= 12'h000;
rommem[ 8344] <= 12'hAD6;
rommem[ 8345] <= 12'h08E;
rommem[ 8346] <= 12'h000;
rommem[ 8347] <= 12'h080;
rommem[ 8348] <= 12'h086;
rommem[ 8349] <= 12'h001;
rommem[ 8350] <= 12'h0C6;
rommem[ 8351] <= 12'h001;
rommem[ 8352] <= 12'h06F;
rommem[ 8353] <= 12'h809;
rommem[ 8354] <= 12'hE3F;
rommem[ 8355] <= 12'h000;
rommem[ 8356] <= 12'h0A7;
rommem[ 8357] <= 12'h809;
rommem[ 8358] <= 12'hE3F;
rommem[ 8359] <= 12'h001;
rommem[ 8360] <= 12'h0E7;
rommem[ 8361] <= 12'h809;
rommem[ 8362] <= 12'hE3F;
rommem[ 8363] <= 12'h002;
rommem[ 8364] <= 12'h030;
rommem[ 8365] <= 12'h004;
rommem[ 8366] <= 12'h08C;
rommem[ 8367] <= 12'h000;
rommem[ 8368] <= 12'h100;
rommem[ 8369] <= 12'h025;
rommem[ 8370] <= 12'hFED;
rommem[ 8371] <= 12'h086;
rommem[ 8372] <= 12'h081;
rommem[ 8373] <= 12'h015;
rommem[ 8374] <= 12'h0B7;
rommem[ 8375] <= 12'hFFF;
rommem[ 8376] <= 12'hE3F;
rommem[ 8377] <= 12'h0FD;
rommem[ 8378] <= 12'h086;
rommem[ 8379] <= 12'h01F;
rommem[ 8380] <= 12'h0C6;
rommem[ 8381] <= 12'h001;
rommem[ 8382] <= 12'h0F7;
rommem[ 8383] <= 12'hEF1;
rommem[ 8384] <= 12'h000;
rommem[ 8385] <= 12'h01C;
rommem[ 8386] <= 12'h0EF;
rommem[ 8387] <= 12'h086;
rommem[ 8388] <= 12'h038;
rommem[ 8389] <= 12'h015;
rommem[ 8390] <= 12'h0B7;
rommem[ 8391] <= 12'hFFF;
rommem[ 8392] <= 12'hE0D;
rommem[ 8393] <= 12'hF00;
rommem[ 8394] <= 12'h086;
rommem[ 8395] <= 12'h01D;
rommem[ 8396] <= 12'h015;
rommem[ 8397] <= 12'h0B7;
rommem[ 8398] <= 12'hFFF;
rommem[ 8399] <= 12'hE0D;
rommem[ 8400] <= 12'hF01;
rommem[ 8401] <= 12'h08D;
rommem[ 8402] <= 12'h13E;
rommem[ 8403] <= 12'h08D;
rommem[ 8404] <= 12'h1AF;
rommem[ 8405] <= 12'h086;
rommem[ 8406] <= 12'h005;
rommem[ 8407] <= 12'h015;
rommem[ 8408] <= 12'h0B7;
rommem[ 8409] <= 12'hFFF;
rommem[ 8410] <= 12'hE60;
rommem[ 8411] <= 12'h001;
rommem[ 8412] <= 12'h0CC;
rommem[ 8413] <= 12'hFFE;
rommem[ 8414] <= 12'h0F4;
rommem[ 8415] <= 12'h08D;
rommem[ 8416] <= 12'h2C1;
rommem[ 8417] <= 12'h08E;
rommem[ 8418] <= 12'h000;
rommem[ 8419] <= 12'h000;
rommem[ 8420] <= 12'h0CC;
rommem[ 8421] <= 12'h000;
rommem[ 8422] <= 12'h000;
rommem[ 8423] <= 12'h017;
rommem[ 8424] <= 12'h000;
rommem[ 8425] <= 12'hC32;
rommem[ 8426] <= 12'h017;
rommem[ 8427] <= 12'h000;
rommem[ 8428] <= 12'h853;
rommem[ 8429] <= 12'h0DC;
rommem[ 8430] <= 12'h124;
rommem[ 8431] <= 12'h08D;
rommem[ 8432] <= 12'h2FC;
rommem[ 8433] <= 12'h07E;
rommem[ 8434] <= 12'hFFF;
rommem[ 8435] <= 12'h89A;
rommem[ 8436] <= 12'h072;
rommem[ 8437] <= 12'h066;
rommem[ 8438] <= 12'h036;
rommem[ 8439] <= 12'h038;
rommem[ 8440] <= 12'h030;
rommem[ 8441] <= 12'h039;
rommem[ 8442] <= 12'h020;
rommem[ 8443] <= 12'h031;
rommem[ 8444] <= 12'h032;
rommem[ 8445] <= 12'h02D;
rommem[ 8446] <= 12'h062;
rommem[ 8447] <= 12'h069;
rommem[ 8448] <= 12'h074;
rommem[ 8449] <= 12'h020;
rommem[ 8450] <= 12'h053;
rommem[ 8451] <= 12'h079;
rommem[ 8452] <= 12'h073;
rommem[ 8453] <= 12'h074;
rommem[ 8454] <= 12'h065;
rommem[ 8455] <= 12'h06D;
rommem[ 8456] <= 12'h020;
rommem[ 8457] <= 12'h053;
rommem[ 8458] <= 12'h074;
rommem[ 8459] <= 12'h061;
rommem[ 8460] <= 12'h072;
rommem[ 8461] <= 12'h074;
rommem[ 8462] <= 12'h069;
rommem[ 8463] <= 12'h06E;
rommem[ 8464] <= 12'h067;
rommem[ 8465] <= 12'h02E;
rommem[ 8466] <= 12'h00D;
rommem[ 8467] <= 12'h00A;
rommem[ 8468] <= 12'h000;
rommem[ 8469] <= 12'h015;
rommem[ 8470] <= 12'h07F;
rommem[ 8471] <= 12'hFFF;
rommem[ 8472] <= 12'hFFF;
rommem[ 8473] <= 12'hFE1;
rommem[ 8474] <= 12'h039;
rommem[ 8475] <= 12'h08E;
rommem[ 8476] <= 12'hFFC;
rommem[ 8477] <= 12'h000;
rommem[ 8478] <= 12'h18E;
rommem[ 8479] <= 12'h00C;
rommem[ 8480] <= 12'h000;
rommem[ 8481] <= 12'h0EC;
rommem[ 8482] <= 12'h801;
rommem[ 8483] <= 12'h0ED;
rommem[ 8484] <= 12'hA01;
rommem[ 8485] <= 12'h08C;
rommem[ 8486] <= 12'h000;
rommem[ 8487] <= 12'h000;
rommem[ 8488] <= 12'h026;
rommem[ 8489] <= 12'hFF7;
rommem[ 8490] <= 12'h039;
rommem[ 8491] <= 12'h086;
rommem[ 8492] <= 12'h050;
rommem[ 8493] <= 12'h015;
rommem[ 8494] <= 12'h0F6;
rommem[ 8495] <= 12'hFFF;
rommem[ 8496] <= 12'hFFF;
rommem[ 8497] <= 12'hFE0;
rommem[ 8498] <= 12'h0C0;
rommem[ 8499] <= 12'h001;
rommem[ 8500] <= 12'h08E;
rommem[ 8501] <= 12'h000;
rommem[ 8502] <= 12'h000;
rommem[ 8503] <= 12'h03A;
rommem[ 8504] <= 12'h0A7;
rommem[ 8505] <= 12'h809;
rommem[ 8506] <= 12'hE00;
rommem[ 8507] <= 12'h000;
rommem[ 8508] <= 12'h030;
rommem[ 8509] <= 12'h008;
rommem[ 8510] <= 12'h08C;
rommem[ 8511] <= 12'h000;
rommem[ 8512] <= 12'hFFF;
rommem[ 8513] <= 12'h025;
rommem[ 8514] <= 12'hFF5;
rommem[ 8515] <= 12'h0BD;
rommem[ 8516] <= 12'hFFE;
rommem[ 8517] <= 12'h115;
rommem[ 8518] <= 12'h0CB;
rommem[ 8519] <= 12'h002;
rommem[ 8520] <= 12'h086;
rommem[ 8521] <= 12'h04E;
rommem[ 8522] <= 12'h08E;
rommem[ 8523] <= 12'h000;
rommem[ 8524] <= 12'h000;
rommem[ 8525] <= 12'h03A;
rommem[ 8526] <= 12'h03A;
rommem[ 8527] <= 12'h0A7;
rommem[ 8528] <= 12'h809;
rommem[ 8529] <= 12'hE00;
rommem[ 8530] <= 12'h000;
rommem[ 8531] <= 12'h08C;
rommem[ 8532] <= 12'h000;
rommem[ 8533] <= 12'hFFF;
rommem[ 8534] <= 12'h025;
rommem[ 8535] <= 12'hFF6;
rommem[ 8536] <= 12'h0BD;
rommem[ 8537] <= 12'hFFE;
rommem[ 8538] <= 12'h115;
rommem[ 8539] <= 12'h0CB;
rommem[ 8540] <= 12'h008;
rommem[ 8541] <= 12'h0C1;
rommem[ 8542] <= 12'hFF0;
rommem[ 8543] <= 12'h025;
rommem[ 8544] <= 12'hFE9;
rommem[ 8545] <= 12'h013;
rommem[ 8546] <= 12'h016;
rommem[ 8547] <= 12'h001;
rommem[ 8548] <= 12'h747;
rommem[ 8549] <= 12'h086;
rommem[ 8550] <= 12'h050;
rommem[ 8551] <= 12'h08E;
rommem[ 8552] <= 12'h000;
rommem[ 8553] <= 12'h000;
rommem[ 8554] <= 12'h0A7;
rommem[ 8555] <= 12'h809;
rommem[ 8556] <= 12'hE00;
rommem[ 8557] <= 12'h000;
rommem[ 8558] <= 12'h030;
rommem[ 8559] <= 12'h001;
rommem[ 8560] <= 12'h08C;
rommem[ 8561] <= 12'h000;
rommem[ 8562] <= 12'hFFF;
rommem[ 8563] <= 12'h025;
rommem[ 8564] <= 12'hFF5;
rommem[ 8565] <= 12'h0C6;
rommem[ 8566] <= 12'h002;
rommem[ 8567] <= 12'h086;
rommem[ 8568] <= 12'h04E;
rommem[ 8569] <= 12'h08E;
rommem[ 8570] <= 12'h000;
rommem[ 8571] <= 12'h000;
rommem[ 8572] <= 12'h03A;
rommem[ 8573] <= 12'h03A;
rommem[ 8574] <= 12'h0A7;
rommem[ 8575] <= 12'h809;
rommem[ 8576] <= 12'hE00;
rommem[ 8577] <= 12'h000;
rommem[ 8578] <= 12'h08C;
rommem[ 8579] <= 12'h000;
rommem[ 8580] <= 12'hFFF;
rommem[ 8581] <= 12'h025;
rommem[ 8582] <= 12'hFC7;
rommem[ 8583] <= 12'h05C;
rommem[ 8584] <= 12'h0C1;
rommem[ 8585] <= 12'hFF0;
rommem[ 8586] <= 12'h025;
rommem[ 8587] <= 12'hFED;
rommem[ 8588] <= 12'h039;
rommem[ 8589] <= 12'h0CC;
rommem[ 8590] <= 12'h895;
rommem[ 8591] <= 12'h440;
rommem[ 8592] <= 12'h0C1;
rommem[ 8593] <= 12'h0FF;
rommem[ 8594] <= 12'h026;
rommem[ 8595] <= 12'h000;
rommem[ 8596] <= 12'h015;
rommem[ 8597] <= 12'h0B7;
rommem[ 8598] <= 12'hFFF;
rommem[ 8599] <= 12'hE60;
rommem[ 8600] <= 12'h001;
rommem[ 8601] <= 12'h083;
rommem[ 8602] <= 12'h000;
rommem[ 8603] <= 12'h001;
rommem[ 8604] <= 12'h026;
rommem[ 8605] <= 12'hFF2;
rommem[ 8606] <= 12'h039;
rommem[ 8607] <= 12'h058;
rommem[ 8608] <= 12'h049;
rommem[ 8609] <= 12'h058;
rommem[ 8610] <= 12'h049;
rommem[ 8611] <= 12'h058;
rommem[ 8612] <= 12'h049;
rommem[ 8613] <= 12'h058;
rommem[ 8614] <= 12'h049;
rommem[ 8615] <= 12'h058;
rommem[ 8616] <= 12'h049;
rommem[ 8617] <= 12'h039;
rommem[ 8618] <= 12'h034;
rommem[ 8619] <= 12'h076;
rommem[ 8620] <= 12'h01F;
rommem[ 8621] <= 12'h098;
rommem[ 8622] <= 12'h048;
rommem[ 8623] <= 12'h048;
rommem[ 8624] <= 12'h048;
rommem[ 8625] <= 12'h048;
rommem[ 8626] <= 12'h08A;
rommem[ 8627] <= 12'hC00;
rommem[ 8628] <= 12'h05F;
rommem[ 8629] <= 12'h01F;
rommem[ 8630] <= 12'h001;
rommem[ 8631] <= 12'h034;
rommem[ 8632] <= 12'h006;
rommem[ 8633] <= 12'h18E;
rommem[ 8634] <= 12'hE00;
rommem[ 8635] <= 12'h000;
rommem[ 8636] <= 12'h0CE;
rommem[ 8637] <= 12'h000;
rommem[ 8638] <= 12'h32C;
rommem[ 8639] <= 12'h0EC;
rommem[ 8640] <= 12'h801;
rommem[ 8641] <= 12'h0ED;
rommem[ 8642] <= 12'hA01;
rommem[ 8643] <= 12'h033;
rommem[ 8644] <= 12'h5FF;
rommem[ 8645] <= 12'h283;
rommem[ 8646] <= 12'h000;
rommem[ 8647] <= 12'h000;
rommem[ 8648] <= 12'h026;
rommem[ 8649] <= 12'hFF5;
rommem[ 8650] <= 12'h035;
rommem[ 8651] <= 12'h010;
rommem[ 8652] <= 12'h0E6;
rommem[ 8653] <= 12'h808;
rommem[ 8654] <= 12'h110;
rommem[ 8655] <= 12'h086;
rommem[ 8656] <= 12'h038;
rommem[ 8657] <= 12'h03D;
rommem[ 8658] <= 12'h01F;
rommem[ 8659] <= 12'h002;
rommem[ 8660] <= 12'h0E6;
rommem[ 8661] <= 12'h808;
rommem[ 8662] <= 12'h111;
rommem[ 8663] <= 12'h01F;
rommem[ 8664] <= 12'h021;
rommem[ 8665] <= 12'h03A;
rommem[ 8666] <= 12'h015;
rommem[ 8667] <= 12'h0BF;
rommem[ 8668] <= 12'hFFF;
rommem[ 8669] <= 12'hE0D;
rommem[ 8670] <= 12'hF22;
rommem[ 8671] <= 12'h035;
rommem[ 8672] <= 12'h0F6;
rommem[ 8673] <= 12'h034;
rommem[ 8674] <= 12'h076;
rommem[ 8675] <= 12'h08D;
rommem[ 8676] <= 12'h08D;
rommem[ 8677] <= 12'h01F;
rommem[ 8678] <= 12'h002;
rommem[ 8679] <= 12'h08E;
rommem[ 8680] <= 12'hE00;
rommem[ 8681] <= 12'h000;
rommem[ 8682] <= 12'h0CE;
rommem[ 8683] <= 12'h000;
rommem[ 8684] <= 12'h32C;
rommem[ 8685] <= 12'h0EC;
rommem[ 8686] <= 12'h801;
rommem[ 8687] <= 12'h0ED;
rommem[ 8688] <= 12'hA01;
rommem[ 8689] <= 12'h033;
rommem[ 8690] <= 12'h5FF;
rommem[ 8691] <= 12'h283;
rommem[ 8692] <= 12'h000;
rommem[ 8693] <= 12'h000;
rommem[ 8694] <= 12'h026;
rommem[ 8695] <= 12'hFF5;
rommem[ 8696] <= 12'h035;
rommem[ 8697] <= 12'h0F6;
rommem[ 8698] <= 12'h054;
rommem[ 8699] <= 12'h045;
rommem[ 8700] <= 12'h058;
rommem[ 8701] <= 12'h054;
rommem[ 8702] <= 12'h053;
rommem[ 8703] <= 12'h043;
rommem[ 8704] <= 12'h052;
rommem[ 8705] <= 12'h020;
rommem[ 8706] <= 12'hFFE;
rommem[ 8707] <= 12'h20C;
rommem[ 8708] <= 12'hFFE;
rommem[ 8709] <= 12'h20D;
rommem[ 8710] <= 12'hFFE;
rommem[ 8711] <= 12'h20E;
rommem[ 8712] <= 12'hFFE;
rommem[ 8713] <= 12'h20F;
rommem[ 8714] <= 12'hFFE;
rommem[ 8715] <= 12'h210;
rommem[ 8716] <= 12'h039;
rommem[ 8717] <= 12'h039;
rommem[ 8718] <= 12'h039;
rommem[ 8719] <= 12'h039;
rommem[ 8720] <= 12'h039;
rommem[ 8721] <= 12'h034;
rommem[ 8722] <= 12'h076;
rommem[ 8723] <= 12'h08E;
rommem[ 8724] <= 12'h000;
rommem[ 8725] <= 12'h658;
rommem[ 8726] <= 12'h01F;
rommem[ 8727] <= 12'h013;
rommem[ 8728] <= 12'h08D;
rommem[ 8729] <= 12'h058;
rommem[ 8730] <= 12'h01F;
rommem[ 8731] <= 12'h002;
rommem[ 8732] <= 12'h0C6;
rommem[ 8733] <= 12'h020;
rommem[ 8734] <= 12'h0E7;
rommem[ 8735] <= 12'hA00;
rommem[ 8736] <= 12'h030;
rommem[ 8737] <= 12'h1FF;
rommem[ 8738] <= 12'h026;
rommem[ 8739] <= 12'hFFA;
rommem[ 8740] <= 12'h015;
rommem[ 8741] <= 12'h0F6;
rommem[ 8742] <= 12'hFFF;
rommem[ 8743] <= 12'hFFF;
rommem[ 8744] <= 12'hFE0;
rommem[ 8745] <= 12'h0F1;
rommem[ 8746] <= 12'hFF0;
rommem[ 8747] <= 12'h010;
rommem[ 8748] <= 12'h020;
rommem[ 8749] <= 12'h00D;
rommem[ 8750] <= 12'h18E;
rommem[ 8751] <= 12'hE02;
rommem[ 8752] <= 12'h000;
rommem[ 8753] <= 12'h086;
rommem[ 8754] <= 12'h0CE;
rommem[ 8755] <= 12'h01F;
rommem[ 8756] <= 12'h031;
rommem[ 8757] <= 12'h0A7;
rommem[ 8758] <= 12'hA00;
rommem[ 8759] <= 12'h030;
rommem[ 8760] <= 12'h1FF;
rommem[ 8761] <= 12'h026;
rommem[ 8762] <= 12'hFFA;
rommem[ 8763] <= 12'h035;
rommem[ 8764] <= 12'h0F6;
rommem[ 8765] <= 12'h034;
rommem[ 8766] <= 12'h076;
rommem[ 8767] <= 12'h18E;
rommem[ 8768] <= 12'h000;
rommem[ 8769] <= 12'h32B;
rommem[ 8770] <= 12'h08D;
rommem[ 8771] <= 12'h02E;
rommem[ 8772] <= 12'h01F;
rommem[ 8773] <= 12'h001;
rommem[ 8774] <= 12'h01F;
rommem[ 8775] <= 12'h003;
rommem[ 8776] <= 12'h030;
rommem[ 8777] <= 12'h038;
rommem[ 8778] <= 12'h0EC;
rommem[ 8779] <= 12'h801;
rommem[ 8780] <= 12'h0ED;
rommem[ 8781] <= 12'hC01;
rommem[ 8782] <= 12'h031;
rommem[ 8783] <= 12'h3FF;
rommem[ 8784] <= 12'h026;
rommem[ 8785] <= 12'hFF8;
rommem[ 8786] <= 12'h086;
rommem[ 8787] <= 12'h01D;
rommem[ 8788] <= 12'h08D;
rommem[ 8789] <= 12'h002;
rommem[ 8790] <= 12'h035;
rommem[ 8791] <= 12'h0F6;
rommem[ 8792] <= 12'h034;
rommem[ 8793] <= 12'h016;
rommem[ 8794] <= 12'h034;
rommem[ 8795] <= 12'h002;
rommem[ 8796] <= 12'h08D;
rommem[ 8797] <= 12'h014;
rommem[ 8798] <= 12'h01F;
rommem[ 8799] <= 12'h001;
rommem[ 8800] <= 12'h035;
rommem[ 8801] <= 12'h002;
rommem[ 8802] <= 12'h0C6;
rommem[ 8803] <= 12'h038;
rommem[ 8804] <= 12'h03D;
rommem[ 8805] <= 12'h030;
rommem[ 8806] <= 12'h80B;
rommem[ 8807] <= 12'h086;
rommem[ 8808] <= 12'h020;
rommem[ 8809] <= 12'h0C6;
rommem[ 8810] <= 12'h038;
rommem[ 8811] <= 12'h0A7;
rommem[ 8812] <= 12'h800;
rommem[ 8813] <= 12'h05A;
rommem[ 8814] <= 12'h026;
rommem[ 8815] <= 12'hFFB;
rommem[ 8816] <= 12'h035;
rommem[ 8817] <= 12'h096;
rommem[ 8818] <= 12'h015;
rommem[ 8819] <= 12'h0B6;
rommem[ 8820] <= 12'hFFF;
rommem[ 8821] <= 12'hFFF;
rommem[ 8822] <= 12'hFE0;
rommem[ 8823] <= 12'h0B1;
rommem[ 8824] <= 12'hFF0;
rommem[ 8825] <= 12'h010;
rommem[ 8826] <= 12'h026;
rommem[ 8827] <= 12'h004;
rommem[ 8828] <= 12'h0CC;
rommem[ 8829] <= 12'hE00;
rommem[ 8830] <= 12'h000;
rommem[ 8831] <= 12'h039;
rommem[ 8832] <= 12'h0CC;
rommem[ 8833] <= 12'h007;
rommem[ 8834] <= 12'h800;
rommem[ 8835] <= 12'h039;
rommem[ 8836] <= 12'h034;
rommem[ 8837] <= 12'h016;
rommem[ 8838] <= 12'h00F;
rommem[ 8839] <= 12'h110;
rommem[ 8840] <= 12'h00F;
rommem[ 8841] <= 12'h111;
rommem[ 8842] <= 12'h015;
rommem[ 8843] <= 12'h0F6;
rommem[ 8844] <= 12'hFFF;
rommem[ 8845] <= 12'hFFF;
rommem[ 8846] <= 12'hFE0;
rommem[ 8847] <= 12'h0F1;
rommem[ 8848] <= 12'hFF0;
rommem[ 8849] <= 12'h010;
rommem[ 8850] <= 12'h026;
rommem[ 8851] <= 12'h006;
rommem[ 8852] <= 12'h04F;
rommem[ 8853] <= 12'h015;
rommem[ 8854] <= 12'h0B7;
rommem[ 8855] <= 12'hFFF;
rommem[ 8856] <= 12'hE0D;
rommem[ 8857] <= 12'hF22;
rommem[ 8858] <= 12'h035;
rommem[ 8859] <= 12'h096;
rommem[ 8860] <= 12'h034;
rommem[ 8861] <= 12'h016;
rommem[ 8862] <= 12'h015;
rommem[ 8863] <= 12'h0F6;
rommem[ 8864] <= 12'hFFF;
rommem[ 8865] <= 12'hFFF;
rommem[ 8866] <= 12'hFE0;
rommem[ 8867] <= 12'h0F1;
rommem[ 8868] <= 12'hFF0;
rommem[ 8869] <= 12'h010;
rommem[ 8870] <= 12'h026;
rommem[ 8871] <= 12'h014;
rommem[ 8872] <= 12'h096;
rommem[ 8873] <= 12'h110;
rommem[ 8874] <= 12'h084;
rommem[ 8875] <= 12'h03F;
rommem[ 8876] <= 12'h015;
rommem[ 8877] <= 12'h0F6;
rommem[ 8878] <= 12'hFFF;
rommem[ 8879] <= 12'hE0D;
rommem[ 8880] <= 12'hF00;
rommem[ 8881] <= 12'h03D;
rommem[ 8882] <= 12'h01F;
rommem[ 8883] <= 12'h001;
rommem[ 8884] <= 12'h0D6;
rommem[ 8885] <= 12'h111;
rommem[ 8886] <= 12'h03A;
rommem[ 8887] <= 12'h015;
rommem[ 8888] <= 12'h0BF;
rommem[ 8889] <= 12'hFFF;
rommem[ 8890] <= 12'hE0D;
rommem[ 8891] <= 12'hF22;
rommem[ 8892] <= 12'h035;
rommem[ 8893] <= 12'h096;
rommem[ 8894] <= 12'h034;
rommem[ 8895] <= 12'h010;
rommem[ 8896] <= 12'h096;
rommem[ 8897] <= 12'h110;
rommem[ 8898] <= 12'h0C6;
rommem[ 8899] <= 12'h038;
rommem[ 8900] <= 12'h03D;
rommem[ 8901] <= 12'h01F;
rommem[ 8902] <= 12'h001;
rommem[ 8903] <= 12'h0D6;
rommem[ 8904] <= 12'h111;
rommem[ 8905] <= 12'h03A;
rommem[ 8906] <= 12'h015;
rommem[ 8907] <= 12'h0F6;
rommem[ 8908] <= 12'hFFF;
rommem[ 8909] <= 12'hFFF;
rommem[ 8910] <= 12'hFE0;
rommem[ 8911] <= 12'h0F1;
rommem[ 8912] <= 12'hFF0;
rommem[ 8913] <= 12'h010;
rommem[ 8914] <= 12'h026;
rommem[ 8915] <= 12'h005;
rommem[ 8916] <= 12'h015;
rommem[ 8917] <= 12'h0BF;
rommem[ 8918] <= 12'hFFF;
rommem[ 8919] <= 12'hE0D;
rommem[ 8920] <= 12'hF22;
rommem[ 8921] <= 12'h08D;
rommem[ 8922] <= 12'hF97;
rommem[ 8923] <= 12'h030;
rommem[ 8924] <= 12'h80B;
rommem[ 8925] <= 12'h01F;
rommem[ 8926] <= 12'h010;
rommem[ 8927] <= 12'h035;
rommem[ 8928] <= 12'h090;
rommem[ 8929] <= 12'h017;
rommem[ 8930] <= 12'h000;
rommem[ 8931] <= 12'h924;
rommem[ 8932] <= 12'h034;
rommem[ 8933] <= 12'h016;
rommem[ 8934] <= 12'h0C1;
rommem[ 8935] <= 12'h00D;
rommem[ 8936] <= 12'h026;
rommem[ 8937] <= 12'h007;
rommem[ 8938] <= 12'h00F;
rommem[ 8939] <= 12'h111;
rommem[ 8940] <= 12'h08D;
rommem[ 8941] <= 12'hFAE;
rommem[ 8942] <= 12'h016;
rommem[ 8943] <= 12'h000;
rommem[ 8944] <= 12'h08C;
rommem[ 8945] <= 12'h0C1;
rommem[ 8946] <= 12'h091;
rommem[ 8947] <= 12'h026;
rommem[ 8948] <= 12'h00D;
rommem[ 8949] <= 12'h096;
rommem[ 8950] <= 12'h111;
rommem[ 8951] <= 12'h081;
rommem[ 8952] <= 12'h038;
rommem[ 8953] <= 12'h024;
rommem[ 8954] <= 12'h003;
rommem[ 8955] <= 12'h04C;
rommem[ 8956] <= 12'h097;
rommem[ 8957] <= 12'h111;
rommem[ 8958] <= 12'h08D;
rommem[ 8959] <= 12'hF9C;
rommem[ 8960] <= 12'h035;
rommem[ 8961] <= 12'h096;
rommem[ 8962] <= 12'h0C1;
rommem[ 8963] <= 12'h090;
rommem[ 8964] <= 12'h026;
rommem[ 8965] <= 12'h009;
rommem[ 8966] <= 12'h096;
rommem[ 8967] <= 12'h110;
rommem[ 8968] <= 12'h027;
rommem[ 8969] <= 12'hFF4;
rommem[ 8970] <= 12'h04A;
rommem[ 8971] <= 12'h097;
rommem[ 8972] <= 12'h110;
rommem[ 8973] <= 12'h020;
rommem[ 8974] <= 12'hFEF;
rommem[ 8975] <= 12'h0C1;
rommem[ 8976] <= 12'h093;
rommem[ 8977] <= 12'h026;
rommem[ 8978] <= 12'h009;
rommem[ 8979] <= 12'h096;
rommem[ 8980] <= 12'h111;
rommem[ 8981] <= 12'h027;
rommem[ 8982] <= 12'hFE7;
rommem[ 8983] <= 12'h04A;
rommem[ 8984] <= 12'h097;
rommem[ 8985] <= 12'h111;
rommem[ 8986] <= 12'h020;
rommem[ 8987] <= 12'hFE2;
rommem[ 8988] <= 12'h0C1;
rommem[ 8989] <= 12'h092;
rommem[ 8990] <= 12'h026;
rommem[ 8991] <= 12'h00B;
rommem[ 8992] <= 12'h096;
rommem[ 8993] <= 12'h110;
rommem[ 8994] <= 12'h081;
rommem[ 8995] <= 12'h01D;
rommem[ 8996] <= 12'h027;
rommem[ 8997] <= 12'hFD8;
rommem[ 8998] <= 12'h04C;
rommem[ 8999] <= 12'h097;
rommem[ 9000] <= 12'h110;
rommem[ 9001] <= 12'h020;
rommem[ 9002] <= 12'hFD3;
rommem[ 9003] <= 12'h0C1;
rommem[ 9004] <= 12'h094;
rommem[ 9005] <= 12'h026;
rommem[ 9006] <= 12'h00C;
rommem[ 9007] <= 12'h096;
rommem[ 9008] <= 12'h111;
rommem[ 9009] <= 12'h027;
rommem[ 9010] <= 12'h004;
rommem[ 9011] <= 12'h00F;
rommem[ 9012] <= 12'h111;
rommem[ 9013] <= 12'h020;
rommem[ 9014] <= 12'hFC7;
rommem[ 9015] <= 12'h00F;
rommem[ 9016] <= 12'h110;
rommem[ 9017] <= 12'h020;
rommem[ 9018] <= 12'hFC3;
rommem[ 9019] <= 12'h0C1;
rommem[ 9020] <= 12'h099;
rommem[ 9021] <= 12'h026;
rommem[ 9022] <= 12'h008;
rommem[ 9023] <= 12'h08D;
rommem[ 9024] <= 12'hF7D;
rommem[ 9025] <= 12'h01F;
rommem[ 9026] <= 12'h001;
rommem[ 9027] <= 12'h096;
rommem[ 9028] <= 12'h111;
rommem[ 9029] <= 12'h020;
rommem[ 9030] <= 12'h011;
rommem[ 9031] <= 12'h0C1;
rommem[ 9032] <= 12'h008;
rommem[ 9033] <= 12'h026;
rommem[ 9034] <= 12'h01E;
rommem[ 9035] <= 12'h096;
rommem[ 9036] <= 12'h111;
rommem[ 9037] <= 12'h027;
rommem[ 9038] <= 12'h02E;
rommem[ 9039] <= 12'h04A;
rommem[ 9040] <= 12'h097;
rommem[ 9041] <= 12'h111;
rommem[ 9042] <= 12'h08D;
rommem[ 9043] <= 12'hF6A;
rommem[ 9044] <= 12'h01F;
rommem[ 9045] <= 12'h001;
rommem[ 9046] <= 12'h096;
rommem[ 9047] <= 12'h111;
rommem[ 9048] <= 12'h0E6;
rommem[ 9049] <= 12'h001;
rommem[ 9050] <= 12'h0E7;
rommem[ 9051] <= 12'h801;
rommem[ 9052] <= 12'h04C;
rommem[ 9053] <= 12'h081;
rommem[ 9054] <= 12'h038;
rommem[ 9055] <= 12'h025;
rommem[ 9056] <= 12'hFF7;
rommem[ 9057] <= 12'h0C6;
rommem[ 9058] <= 12'h020;
rommem[ 9059] <= 12'h030;
rommem[ 9060] <= 12'h1FF;
rommem[ 9061] <= 12'h0E7;
rommem[ 9062] <= 12'h804;
rommem[ 9063] <= 12'h020;
rommem[ 9064] <= 12'h014;
rommem[ 9065] <= 12'h0C1;
rommem[ 9066] <= 12'h00A;
rommem[ 9067] <= 12'h027;
rommem[ 9068] <= 12'h00E;
rommem[ 9069] <= 12'h034;
rommem[ 9070] <= 12'h004;
rommem[ 9071] <= 12'h08D;
rommem[ 9072] <= 12'hF4D;
rommem[ 9073] <= 12'h01F;
rommem[ 9074] <= 12'h001;
rommem[ 9075] <= 12'h035;
rommem[ 9076] <= 12'h004;
rommem[ 9077] <= 12'h0E7;
rommem[ 9078] <= 12'h804;
rommem[ 9079] <= 12'h08D;
rommem[ 9080] <= 12'h006;
rommem[ 9081] <= 12'h020;
rommem[ 9082] <= 12'h002;
rommem[ 9083] <= 12'h08D;
rommem[ 9084] <= 12'h011;
rommem[ 9085] <= 12'h035;
rommem[ 9086] <= 12'h096;
rommem[ 9087] <= 12'h034;
rommem[ 9088] <= 12'h016;
rommem[ 9089] <= 12'h096;
rommem[ 9090] <= 12'h111;
rommem[ 9091] <= 12'h04C;
rommem[ 9092] <= 12'h097;
rommem[ 9093] <= 12'h111;
rommem[ 9094] <= 12'h081;
rommem[ 9095] <= 12'h038;
rommem[ 9096] <= 12'h025;
rommem[ 9097] <= 12'h014;
rommem[ 9098] <= 12'h00F;
rommem[ 9099] <= 12'h111;
rommem[ 9100] <= 12'h020;
rommem[ 9101] <= 12'h002;
rommem[ 9102] <= 12'h034;
rommem[ 9103] <= 12'h016;
rommem[ 9104] <= 12'h096;
rommem[ 9105] <= 12'h110;
rommem[ 9106] <= 12'h04C;
rommem[ 9107] <= 12'h097;
rommem[ 9108] <= 12'h110;
rommem[ 9109] <= 12'h081;
rommem[ 9110] <= 12'h01D;
rommem[ 9111] <= 12'h025;
rommem[ 9112] <= 12'h005;
rommem[ 9113] <= 12'h04A;
rommem[ 9114] <= 12'h097;
rommem[ 9115] <= 12'h110;
rommem[ 9116] <= 12'h08D;
rommem[ 9117] <= 12'hE9F;
rommem[ 9118] <= 12'h08D;
rommem[ 9119] <= 12'hEFC;
rommem[ 9120] <= 12'h035;
rommem[ 9121] <= 12'h096;
rommem[ 9122] <= 12'h034;
rommem[ 9123] <= 12'h016;
rommem[ 9124] <= 12'h01F;
rommem[ 9125] <= 12'h001;
rommem[ 9126] <= 12'h0B6;
rommem[ 9127] <= 12'hEF0;
rommem[ 9128] <= 12'h001;
rommem[ 9129] <= 12'h027;
rommem[ 9130] <= 12'hFFB;
rommem[ 9131] <= 12'h0E6;
rommem[ 9132] <= 12'h800;
rommem[ 9133] <= 12'h027;
rommem[ 9134] <= 12'h005;
rommem[ 9135] <= 12'h017;
rommem[ 9136] <= 12'h000;
rommem[ 9137] <= 12'h960;
rommem[ 9138] <= 12'h020;
rommem[ 9139] <= 12'hFF7;
rommem[ 9140] <= 12'h07F;
rommem[ 9141] <= 12'hEF0;
rommem[ 9142] <= 12'h001;
rommem[ 9143] <= 12'h035;
rommem[ 9144] <= 12'h096;
rommem[ 9145] <= 12'h034;
rommem[ 9146] <= 12'h006;
rommem[ 9147] <= 12'h08D;
rommem[ 9148] <= 12'hFE5;
rommem[ 9149] <= 12'h0C6;
rommem[ 9150] <= 12'h00D;
rommem[ 9151] <= 12'h017;
rommem[ 9152] <= 12'h000;
rommem[ 9153] <= 12'h950;
rommem[ 9154] <= 12'h0C6;
rommem[ 9155] <= 12'h00A;
rommem[ 9156] <= 12'h017;
rommem[ 9157] <= 12'h000;
rommem[ 9158] <= 12'h94B;
rommem[ 9159] <= 12'h035;
rommem[ 9160] <= 12'h086;
rommem[ 9161] <= 12'h08D;
rommem[ 9162] <= 12'h002;
rommem[ 9163] <= 12'h020;
rommem[ 9164] <= 12'h00D;
rommem[ 9165] <= 12'h034;
rommem[ 9166] <= 12'h010;
rommem[ 9167] <= 12'h08E;
rommem[ 9168] <= 12'hFFE;
rommem[ 9169] <= 12'h3E1;
rommem[ 9170] <= 12'h08D;
rommem[ 9171] <= 12'h006;
rommem[ 9172] <= 12'h035;
rommem[ 9173] <= 12'h010;
rommem[ 9174] <= 12'h039;
rommem[ 9175] <= 12'h0BD;
rommem[ 9176] <= 12'hFFE;
rommem[ 9177] <= 12'hD12;
rommem[ 9178] <= 12'h0E6;
rommem[ 9179] <= 12'h800;
rommem[ 9180] <= 12'h0C1;
rommem[ 9181] <= 12'h004;
rommem[ 9182] <= 12'h026;
rommem[ 9183] <= 12'hFF7;
rommem[ 9184] <= 12'h039;
rommem[ 9185] <= 12'h00D;
rommem[ 9186] <= 12'h00A;
rommem[ 9187] <= 12'h004;
rommem[ 9188] <= 12'h08D;
rommem[ 9189] <= 12'h007;
rommem[ 9190] <= 12'h01E;
rommem[ 9191] <= 12'h001;
rommem[ 9192] <= 12'h08D;
rommem[ 9193] <= 12'h003;
rommem[ 9194] <= 12'h01E;
rommem[ 9195] <= 12'h001;
rommem[ 9196] <= 12'h039;
rommem[ 9197] <= 12'h01E;
rommem[ 9198] <= 12'h089;
rommem[ 9199] <= 12'h08D;
rommem[ 9200] <= 12'h005;
rommem[ 9201] <= 12'h01E;
rommem[ 9202] <= 12'h089;
rommem[ 9203] <= 12'h08D;
rommem[ 9204] <= 12'h001;
rommem[ 9205] <= 12'h039;
rommem[ 9206] <= 12'h034;
rommem[ 9207] <= 12'h004;
rommem[ 9208] <= 12'h054;
rommem[ 9209] <= 12'h054;
rommem[ 9210] <= 12'h054;
rommem[ 9211] <= 12'h054;
rommem[ 9212] <= 12'h054;
rommem[ 9213] <= 12'h054;
rommem[ 9214] <= 12'h054;
rommem[ 9215] <= 12'h054;
rommem[ 9216] <= 12'h08D;
rommem[ 9217] <= 12'h00C;
rommem[ 9218] <= 12'h035;
rommem[ 9219] <= 12'h004;
rommem[ 9220] <= 12'h034;
rommem[ 9221] <= 12'h004;
rommem[ 9222] <= 12'h054;
rommem[ 9223] <= 12'h054;
rommem[ 9224] <= 12'h054;
rommem[ 9225] <= 12'h054;
rommem[ 9226] <= 12'h08D;
rommem[ 9227] <= 12'h002;
rommem[ 9228] <= 12'h035;
rommem[ 9229] <= 12'h004;
rommem[ 9230] <= 12'h034;
rommem[ 9231] <= 12'h004;
rommem[ 9232] <= 12'h0C4;
rommem[ 9233] <= 12'h00F;
rommem[ 9234] <= 12'h0C1;
rommem[ 9235] <= 12'h00A;
rommem[ 9236] <= 12'h025;
rommem[ 9237] <= 12'h007;
rommem[ 9238] <= 12'h0CB;
rommem[ 9239] <= 12'h037;
rommem[ 9240] <= 12'h017;
rommem[ 9241] <= 12'h000;
rommem[ 9242] <= 12'h8F7;
rommem[ 9243] <= 12'h035;
rommem[ 9244] <= 12'h084;
rommem[ 9245] <= 12'h0CB;
rommem[ 9246] <= 12'h030;
rommem[ 9247] <= 12'h017;
rommem[ 9248] <= 12'h000;
rommem[ 9249] <= 12'h8F0;
rommem[ 9250] <= 12'h035;
rommem[ 9251] <= 12'h084;
rommem[ 9252] <= 12'h0CC;
rommem[ 9253] <= 12'h061;
rommem[ 9254] <= 12'hA80;
rommem[ 9255] <= 12'h015;
rommem[ 9256] <= 12'h0F7;
rommem[ 9257] <= 12'hFFF;
rommem[ 9258] <= 12'hE60;
rommem[ 9259] <= 12'h014;
rommem[ 9260] <= 12'h015;
rommem[ 9261] <= 12'h0B7;
rommem[ 9262] <= 12'hFFF;
rommem[ 9263] <= 12'hE60;
rommem[ 9264] <= 12'h015;
rommem[ 9265] <= 12'h015;
rommem[ 9266] <= 12'h07F;
rommem[ 9267] <= 12'hFFF;
rommem[ 9268] <= 12'hE60;
rommem[ 9269] <= 12'h012;
rommem[ 9270] <= 12'h015;
rommem[ 9271] <= 12'h07F;
rommem[ 9272] <= 12'hFFF;
rommem[ 9273] <= 12'hE60;
rommem[ 9274] <= 12'h013;
rommem[ 9275] <= 12'h015;
rommem[ 9276] <= 12'h0B6;
rommem[ 9277] <= 12'hFFF;
rommem[ 9278] <= 12'hE60;
rommem[ 9279] <= 12'h00B;
rommem[ 9280] <= 12'h08A;
rommem[ 9281] <= 12'h100;
rommem[ 9282] <= 12'h015;
rommem[ 9283] <= 12'h0B7;
rommem[ 9284] <= 12'hFFF;
rommem[ 9285] <= 12'hE60;
rommem[ 9286] <= 12'h00B;
rommem[ 9287] <= 12'h086;
rommem[ 9288] <= 12'h810;
rommem[ 9289] <= 12'h015;
rommem[ 9290] <= 12'h0B7;
rommem[ 9291] <= 12'hFFF;
rommem[ 9292] <= 12'hE60;
rommem[ 9293] <= 12'h00E;
rommem[ 9294] <= 12'h039;
rommem[ 9295] <= 12'h086;
rommem[ 9296] <= 12'h01F;
rommem[ 9297] <= 12'h0B7;
rommem[ 9298] <= 12'hFF0;
rommem[ 9299] <= 12'h011;
rommem[ 9300] <= 12'h015;
rommem[ 9301] <= 12'h0B7;
rommem[ 9302] <= 12'hFFF;
rommem[ 9303] <= 12'hE3F;
rommem[ 9304] <= 12'h010;
rommem[ 9305] <= 12'h015;
rommem[ 9306] <= 12'h0B6;
rommem[ 9307] <= 12'hFFF;
rommem[ 9308] <= 12'hE60;
rommem[ 9309] <= 12'h00D;
rommem[ 9310] <= 12'h02A;
rommem[ 9311] <= 12'h011;
rommem[ 9312] <= 12'h085;
rommem[ 9313] <= 12'h800;
rommem[ 9314] <= 12'h027;
rommem[ 9315] <= 12'h00D;
rommem[ 9316] <= 12'h015;
rommem[ 9317] <= 12'h07F;
rommem[ 9318] <= 12'hFFF;
rommem[ 9319] <= 12'hE60;
rommem[ 9320] <= 12'h012;
rommem[ 9321] <= 12'h015;
rommem[ 9322] <= 12'h07F;
rommem[ 9323] <= 12'hFFF;
rommem[ 9324] <= 12'hE60;
rommem[ 9325] <= 12'h013;
rommem[ 9326] <= 12'h07C;
rommem[ 9327] <= 12'hE00;
rommem[ 9328] <= 12'h037;
rommem[ 9329] <= 12'h039;
rommem[ 9330] <= 12'h034;
rommem[ 9331] <= 12'h004;
rommem[ 9332] <= 12'h0C6;
rommem[ 9333] <= 12'h004;
rommem[ 9334] <= 12'h0E7;
rommem[ 9335] <= 12'h804;
rommem[ 9336] <= 12'h06F;
rommem[ 9337] <= 12'h001;
rommem[ 9338] <= 12'h035;
rommem[ 9339] <= 12'h084;
rommem[ 9340] <= 12'h034;
rommem[ 9341] <= 12'h004;
rommem[ 9342] <= 12'h0E6;
rommem[ 9343] <= 12'h004;
rommem[ 9344] <= 12'h0C5;
rommem[ 9345] <= 12'h001;
rommem[ 9346] <= 12'h026;
rommem[ 9347] <= 12'hFFA;
rommem[ 9348] <= 12'h035;
rommem[ 9349] <= 12'h084;
rommem[ 9350] <= 12'h0E7;
rommem[ 9351] <= 12'h003;
rommem[ 9352] <= 12'h0A7;
rommem[ 9353] <= 12'h004;
rommem[ 9354] <= 12'h08D;
rommem[ 9355] <= 12'hFF0;
rommem[ 9356] <= 12'h0E6;
rommem[ 9357] <= 12'h004;
rommem[ 9358] <= 12'h039;
rommem[ 9359] <= 12'h034;
rommem[ 9360] <= 12'h006;
rommem[ 9361] <= 12'h034;
rommem[ 9362] <= 12'h006;
rommem[ 9363] <= 12'h0C6;
rommem[ 9364] <= 12'h001;
rommem[ 9365] <= 12'h0E7;
rommem[ 9366] <= 12'h002;
rommem[ 9367] <= 12'h0C6;
rommem[ 9368] <= 12'h076;
rommem[ 9369] <= 12'h086;
rommem[ 9370] <= 12'h090;
rommem[ 9371] <= 12'h08D;
rommem[ 9372] <= 12'hFE9;
rommem[ 9373] <= 12'h08D;
rommem[ 9374] <= 12'h00A;
rommem[ 9375] <= 12'h035;
rommem[ 9376] <= 12'h006;
rommem[ 9377] <= 12'h086;
rommem[ 9378] <= 12'h050;
rommem[ 9379] <= 12'h08D;
rommem[ 9380] <= 12'hFE1;
rommem[ 9381] <= 12'h08D;
rommem[ 9382] <= 12'h002;
rommem[ 9383] <= 12'h035;
rommem[ 9384] <= 12'h086;
rommem[ 9385] <= 12'h034;
rommem[ 9386] <= 12'h004;
rommem[ 9387] <= 12'h0E6;
rommem[ 9388] <= 12'h004;
rommem[ 9389] <= 12'h0C5;
rommem[ 9390] <= 12'h080;
rommem[ 9391] <= 12'h026;
rommem[ 9392] <= 12'hFFA;
rommem[ 9393] <= 12'h035;
rommem[ 9394] <= 12'h084;
rommem[ 9395] <= 12'h08E;
rommem[ 9396] <= 12'hE30;
rommem[ 9397] <= 12'h500;
rommem[ 9398] <= 12'h18E;
rommem[ 9399] <= 12'h007;
rommem[ 9400] <= 12'hFC0;
rommem[ 9401] <= 12'h0C6;
rommem[ 9402] <= 12'h080;
rommem[ 9403] <= 12'h0E7;
rommem[ 9404] <= 12'h002;
rommem[ 9405] <= 12'h0CC;
rommem[ 9406] <= 12'h090;
rommem[ 9407] <= 12'h0DE;
rommem[ 9408] <= 12'h08D;
rommem[ 9409] <= 12'hFC4;
rommem[ 9410] <= 12'h0C5;
rommem[ 9411] <= 12'h080;
rommem[ 9412] <= 12'h026;
rommem[ 9413] <= 12'h03C;
rommem[ 9414] <= 12'h0CC;
rommem[ 9415] <= 12'h010;
rommem[ 9416] <= 12'h000;
rommem[ 9417] <= 12'h08D;
rommem[ 9418] <= 12'hFBB;
rommem[ 9419] <= 12'h0C5;
rommem[ 9420] <= 12'h080;
rommem[ 9421] <= 12'h026;
rommem[ 9422] <= 12'h033;
rommem[ 9423] <= 12'h0CC;
rommem[ 9424] <= 12'h090;
rommem[ 9425] <= 12'h0DF;
rommem[ 9426] <= 12'h08D;
rommem[ 9427] <= 12'hFB2;
rommem[ 9428] <= 12'h0C5;
rommem[ 9429] <= 12'h080;
rommem[ 9430] <= 12'h026;
rommem[ 9431] <= 12'h02A;
rommem[ 9432] <= 12'h05F;
rommem[ 9433] <= 12'h086;
rommem[ 9434] <= 12'h020;
rommem[ 9435] <= 12'h0A7;
rommem[ 9436] <= 12'h004;
rommem[ 9437] <= 12'h08D;
rommem[ 9438] <= 12'hF9D;
rommem[ 9439] <= 12'h08D;
rommem[ 9440] <= 12'hFC8;
rommem[ 9441] <= 12'h0A6;
rommem[ 9442] <= 12'h004;
rommem[ 9443] <= 12'h085;
rommem[ 9444] <= 12'h080;
rommem[ 9445] <= 12'h026;
rommem[ 9446] <= 12'h01B;
rommem[ 9447] <= 12'h0A6;
rommem[ 9448] <= 12'h003;
rommem[ 9449] <= 12'h0A7;
rommem[ 9450] <= 12'hA07;
rommem[ 9451] <= 12'h05C;
rommem[ 9452] <= 12'h0C1;
rommem[ 9453] <= 12'h05F;
rommem[ 9454] <= 12'h025;
rommem[ 9455] <= 12'hFE9;
rommem[ 9456] <= 12'h086;
rommem[ 9457] <= 12'h068;
rommem[ 9458] <= 12'h0A7;
rommem[ 9459] <= 12'h004;
rommem[ 9460] <= 12'h08D;
rommem[ 9461] <= 12'hF86;
rommem[ 9462] <= 12'h0A6;
rommem[ 9463] <= 12'h004;
rommem[ 9464] <= 12'h085;
rommem[ 9465] <= 12'h080;
rommem[ 9466] <= 12'h026;
rommem[ 9467] <= 12'h006;
rommem[ 9468] <= 12'h0A6;
rommem[ 9469] <= 12'h003;
rommem[ 9470] <= 12'h0A7;
rommem[ 9471] <= 12'hA07;
rommem[ 9472] <= 12'h04F;
rommem[ 9473] <= 12'h05F;
rommem[ 9474] <= 12'h06F;
rommem[ 9475] <= 12'h002;
rommem[ 9476] <= 12'h04F;
rommem[ 9477] <= 12'h039;
rommem[ 9478] <= 12'h08E;
rommem[ 9479] <= 12'hE30;
rommem[ 9480] <= 12'h500;
rommem[ 9481] <= 12'h18E;
rommem[ 9482] <= 12'h007;
rommem[ 9483] <= 12'hFC0;
rommem[ 9484] <= 12'h0C6;
rommem[ 9485] <= 12'h080;
rommem[ 9486] <= 12'h0E7;
rommem[ 9487] <= 12'h002;
rommem[ 9488] <= 12'h0CC;
rommem[ 9489] <= 12'h090;
rommem[ 9490] <= 12'h0DE;
rommem[ 9491] <= 12'h08D;
rommem[ 9492] <= 12'hF71;
rommem[ 9493] <= 12'h0C5;
rommem[ 9494] <= 12'h080;
rommem[ 9495] <= 12'h026;
rommem[ 9496] <= 12'hFE9;
rommem[ 9497] <= 12'h0CC;
rommem[ 9498] <= 12'h010;
rommem[ 9499] <= 12'h000;
rommem[ 9500] <= 12'h08D;
rommem[ 9501] <= 12'hF68;
rommem[ 9502] <= 12'h0C5;
rommem[ 9503] <= 12'h080;
rommem[ 9504] <= 12'h026;
rommem[ 9505] <= 12'hFE0;
rommem[ 9506] <= 12'h0C6;
rommem[ 9507] <= 12'h000;
rommem[ 9508] <= 12'h034;
rommem[ 9509] <= 12'h004;
rommem[ 9510] <= 12'h0E6;
rommem[ 9511] <= 12'hA05;
rommem[ 9512] <= 12'h086;
rommem[ 9513] <= 12'h010;
rommem[ 9514] <= 12'h08D;
rommem[ 9515] <= 12'hF5A;
rommem[ 9516] <= 12'h0C5;
rommem[ 9517] <= 12'h080;
rommem[ 9518] <= 12'h035;
rommem[ 9519] <= 12'h004;
rommem[ 9520] <= 12'h026;
rommem[ 9521] <= 12'hFD0;
rommem[ 9522] <= 12'h05C;
rommem[ 9523] <= 12'h0C1;
rommem[ 9524] <= 12'h05F;
rommem[ 9525] <= 12'h025;
rommem[ 9526] <= 12'hFED;
rommem[ 9527] <= 12'h0E6;
rommem[ 9528] <= 12'hA05;
rommem[ 9529] <= 12'h086;
rommem[ 9530] <= 12'h050;
rommem[ 9531] <= 12'h08D;
rommem[ 9532] <= 12'hF49;
rommem[ 9533] <= 12'h0C5;
rommem[ 9534] <= 12'h080;
rommem[ 9535] <= 12'h026;
rommem[ 9536] <= 12'hFC1;
rommem[ 9537] <= 12'h04F;
rommem[ 9538] <= 12'h05F;
rommem[ 9539] <= 12'h06F;
rommem[ 9540] <= 12'h002;
rommem[ 9541] <= 12'h039;
rommem[ 9600] <= 12'h02E;
rommem[ 9601] <= 12'h0A9;
rommem[ 9602] <= 12'h02E;
rommem[ 9603] <= 12'h0A5;
rommem[ 9604] <= 12'h0A3;
rommem[ 9605] <= 12'h0A1;
rommem[ 9606] <= 12'h0A2;
rommem[ 9607] <= 12'h0AC;
rommem[ 9608] <= 12'h02E;
rommem[ 9609] <= 12'h0AA;
rommem[ 9610] <= 12'h0A8;
rommem[ 9611] <= 12'h0A6;
rommem[ 9612] <= 12'h0A4;
rommem[ 9613] <= 12'h009;
rommem[ 9614] <= 12'h060;
rommem[ 9615] <= 12'h02E;
rommem[ 9616] <= 12'h02E;
rommem[ 9617] <= 12'h02E;
rommem[ 9618] <= 12'h02E;
rommem[ 9619] <= 12'h02E;
rommem[ 9620] <= 12'h02E;
rommem[ 9621] <= 12'h071;
rommem[ 9622] <= 12'h031;
rommem[ 9623] <= 12'h02E;
rommem[ 9624] <= 12'h02E;
rommem[ 9625] <= 12'h02E;
rommem[ 9626] <= 12'h07A;
rommem[ 9627] <= 12'h073;
rommem[ 9628] <= 12'h061;
rommem[ 9629] <= 12'h077;
rommem[ 9630] <= 12'h032;
rommem[ 9631] <= 12'h02E;
rommem[ 9632] <= 12'h02E;
rommem[ 9633] <= 12'h063;
rommem[ 9634] <= 12'h078;
rommem[ 9635] <= 12'h064;
rommem[ 9636] <= 12'h065;
rommem[ 9637] <= 12'h034;
rommem[ 9638] <= 12'h033;
rommem[ 9639] <= 12'h02E;
rommem[ 9640] <= 12'h02E;
rommem[ 9641] <= 12'h020;
rommem[ 9642] <= 12'h076;
rommem[ 9643] <= 12'h066;
rommem[ 9644] <= 12'h074;
rommem[ 9645] <= 12'h072;
rommem[ 9646] <= 12'h035;
rommem[ 9647] <= 12'h02E;
rommem[ 9648] <= 12'h02E;
rommem[ 9649] <= 12'h06E;
rommem[ 9650] <= 12'h062;
rommem[ 9651] <= 12'h068;
rommem[ 9652] <= 12'h067;
rommem[ 9653] <= 12'h079;
rommem[ 9654] <= 12'h036;
rommem[ 9655] <= 12'h02E;
rommem[ 9656] <= 12'h02E;
rommem[ 9657] <= 12'h02E;
rommem[ 9658] <= 12'h06D;
rommem[ 9659] <= 12'h06A;
rommem[ 9660] <= 12'h075;
rommem[ 9661] <= 12'h037;
rommem[ 9662] <= 12'h038;
rommem[ 9663] <= 12'h02E;
rommem[ 9664] <= 12'h02E;
rommem[ 9665] <= 12'h02C;
rommem[ 9666] <= 12'h06B;
rommem[ 9667] <= 12'h069;
rommem[ 9668] <= 12'h06F;
rommem[ 9669] <= 12'h030;
rommem[ 9670] <= 12'h039;
rommem[ 9671] <= 12'h02E;
rommem[ 9672] <= 12'h02E;
rommem[ 9673] <= 12'h02E;
rommem[ 9674] <= 12'h02F;
rommem[ 9675] <= 12'h06C;
rommem[ 9676] <= 12'h03B;
rommem[ 9677] <= 12'h070;
rommem[ 9678] <= 12'h02D;
rommem[ 9679] <= 12'h02E;
rommem[ 9680] <= 12'h02E;
rommem[ 9681] <= 12'h02E;
rommem[ 9682] <= 12'h027;
rommem[ 9683] <= 12'h02E;
rommem[ 9684] <= 12'h05B;
rommem[ 9685] <= 12'h03D;
rommem[ 9686] <= 12'h02E;
rommem[ 9687] <= 12'h02E;
rommem[ 9688] <= 12'h0AD;
rommem[ 9689] <= 12'h02E;
rommem[ 9690] <= 12'h00D;
rommem[ 9691] <= 12'h05D;
rommem[ 9692] <= 12'h02E;
rommem[ 9693] <= 12'h05C;
rommem[ 9694] <= 12'h02E;
rommem[ 9695] <= 12'h02E;
rommem[ 9696] <= 12'h02E;
rommem[ 9697] <= 12'h02E;
rommem[ 9698] <= 12'h02E;
rommem[ 9699] <= 12'h02E;
rommem[ 9700] <= 12'h02E;
rommem[ 9701] <= 12'h02E;
rommem[ 9702] <= 12'h008;
rommem[ 9703] <= 12'h02E;
rommem[ 9704] <= 12'h02E;
rommem[ 9705] <= 12'h095;
rommem[ 9706] <= 12'h02E;
rommem[ 9707] <= 12'h093;
rommem[ 9708] <= 12'h094;
rommem[ 9709] <= 12'h02E;
rommem[ 9710] <= 12'h02E;
rommem[ 9711] <= 12'h02E;
rommem[ 9712] <= 12'h098;
rommem[ 9713] <= 12'h07F;
rommem[ 9714] <= 12'h092;
rommem[ 9715] <= 12'h02E;
rommem[ 9716] <= 12'h091;
rommem[ 9717] <= 12'h090;
rommem[ 9718] <= 12'h01B;
rommem[ 9719] <= 12'h0AF;
rommem[ 9720] <= 12'h0AB;
rommem[ 9721] <= 12'h02E;
rommem[ 9722] <= 12'h097;
rommem[ 9723] <= 12'h02E;
rommem[ 9724] <= 12'h02E;
rommem[ 9725] <= 12'h096;
rommem[ 9726] <= 12'h0AE;
rommem[ 9727] <= 12'h02E;
rommem[ 9728] <= 12'h02E;
rommem[ 9729] <= 12'h02E;
rommem[ 9730] <= 12'h02E;
rommem[ 9731] <= 12'h0A7;
rommem[ 9732] <= 12'h02E;
rommem[ 9733] <= 12'h02E;
rommem[ 9734] <= 12'h02E;
rommem[ 9735] <= 12'h02E;
rommem[ 9736] <= 12'h02E;
rommem[ 9737] <= 12'h02E;
rommem[ 9738] <= 12'h02E;
rommem[ 9739] <= 12'h02E;
rommem[ 9740] <= 12'h02E;
rommem[ 9741] <= 12'h02E;
rommem[ 9742] <= 12'h02E;
rommem[ 9743] <= 12'h02E;
rommem[ 9744] <= 12'h02E;
rommem[ 9745] <= 12'h02E;
rommem[ 9746] <= 12'h02E;
rommem[ 9747] <= 12'h02E;
rommem[ 9748] <= 12'h02E;
rommem[ 9749] <= 12'h02E;
rommem[ 9750] <= 12'h02E;
rommem[ 9751] <= 12'h02E;
rommem[ 9752] <= 12'h02E;
rommem[ 9753] <= 12'h02E;
rommem[ 9754] <= 12'h02E;
rommem[ 9755] <= 12'h02E;
rommem[ 9756] <= 12'h02E;
rommem[ 9757] <= 12'h02E;
rommem[ 9758] <= 12'h02E;
rommem[ 9759] <= 12'h02E;
rommem[ 9760] <= 12'h02E;
rommem[ 9761] <= 12'h02E;
rommem[ 9762] <= 12'h02E;
rommem[ 9763] <= 12'h02E;
rommem[ 9764] <= 12'h02E;
rommem[ 9765] <= 12'h02E;
rommem[ 9766] <= 12'h02E;
rommem[ 9767] <= 12'h02E;
rommem[ 9768] <= 12'h02E;
rommem[ 9769] <= 12'h02E;
rommem[ 9770] <= 12'h02E;
rommem[ 9771] <= 12'h02E;
rommem[ 9772] <= 12'h02E;
rommem[ 9773] <= 12'h02E;
rommem[ 9774] <= 12'h02E;
rommem[ 9775] <= 12'h02E;
rommem[ 9776] <= 12'h02E;
rommem[ 9777] <= 12'h02E;
rommem[ 9778] <= 12'h02E;
rommem[ 9779] <= 12'h02E;
rommem[ 9780] <= 12'h02E;
rommem[ 9781] <= 12'h02E;
rommem[ 9782] <= 12'h02E;
rommem[ 9783] <= 12'h02E;
rommem[ 9784] <= 12'h02E;
rommem[ 9785] <= 12'h02E;
rommem[ 9786] <= 12'h02E;
rommem[ 9787] <= 12'h02E;
rommem[ 9788] <= 12'h02E;
rommem[ 9789] <= 12'h02E;
rommem[ 9790] <= 12'h02E;
rommem[ 9791] <= 12'h02E;
rommem[ 9792] <= 12'h02E;
rommem[ 9793] <= 12'h02E;
rommem[ 9794] <= 12'h02E;
rommem[ 9795] <= 12'h02E;
rommem[ 9796] <= 12'h02E;
rommem[ 9797] <= 12'h02E;
rommem[ 9798] <= 12'h02E;
rommem[ 9799] <= 12'h02E;
rommem[ 9800] <= 12'h02E;
rommem[ 9801] <= 12'h02E;
rommem[ 9802] <= 12'h02E;
rommem[ 9803] <= 12'h02E;
rommem[ 9804] <= 12'h02E;
rommem[ 9805] <= 12'h02E;
rommem[ 9806] <= 12'h02E;
rommem[ 9807] <= 12'h02E;
rommem[ 9808] <= 12'h02E;
rommem[ 9809] <= 12'h02E;
rommem[ 9810] <= 12'h02E;
rommem[ 9811] <= 12'h02E;
rommem[ 9812] <= 12'h02E;
rommem[ 9813] <= 12'h02E;
rommem[ 9814] <= 12'h02E;
rommem[ 9815] <= 12'h02E;
rommem[ 9816] <= 12'h02E;
rommem[ 9817] <= 12'h02E;
rommem[ 9818] <= 12'h02E;
rommem[ 9819] <= 12'h02E;
rommem[ 9820] <= 12'h02E;
rommem[ 9821] <= 12'h02E;
rommem[ 9822] <= 12'h02E;
rommem[ 9823] <= 12'h02E;
rommem[ 9824] <= 12'h02E;
rommem[ 9825] <= 12'h02E;
rommem[ 9826] <= 12'h02E;
rommem[ 9827] <= 12'h02E;
rommem[ 9828] <= 12'h02E;
rommem[ 9829] <= 12'h02E;
rommem[ 9830] <= 12'h02E;
rommem[ 9831] <= 12'h02E;
rommem[ 9832] <= 12'h02E;
rommem[ 9833] <= 12'h02E;
rommem[ 9834] <= 12'h02E;
rommem[ 9835] <= 12'h02E;
rommem[ 9836] <= 12'h02E;
rommem[ 9837] <= 12'h02E;
rommem[ 9838] <= 12'h02E;
rommem[ 9839] <= 12'h02E;
rommem[ 9840] <= 12'h02E;
rommem[ 9841] <= 12'h02E;
rommem[ 9842] <= 12'h02E;
rommem[ 9843] <= 12'h02E;
rommem[ 9844] <= 12'h02E;
rommem[ 9845] <= 12'h02E;
rommem[ 9846] <= 12'h02E;
rommem[ 9847] <= 12'h02E;
rommem[ 9848] <= 12'h02E;
rommem[ 9849] <= 12'h02E;
rommem[ 9850] <= 12'h0FA;
rommem[ 9851] <= 12'h02E;
rommem[ 9852] <= 12'h02E;
rommem[ 9853] <= 12'h02E;
rommem[ 9854] <= 12'h02E;
rommem[ 9855] <= 12'h02E;
rommem[ 9856] <= 12'h02E;
rommem[ 9857] <= 12'h02E;
rommem[ 9858] <= 12'h02E;
rommem[ 9859] <= 12'h02E;
rommem[ 9860] <= 12'h02E;
rommem[ 9861] <= 12'h02E;
rommem[ 9862] <= 12'h02E;
rommem[ 9863] <= 12'h02E;
rommem[ 9864] <= 12'h02E;
rommem[ 9865] <= 12'h02E;
rommem[ 9866] <= 12'h02E;
rommem[ 9867] <= 12'h02E;
rommem[ 9868] <= 12'h02E;
rommem[ 9869] <= 12'h009;
rommem[ 9870] <= 12'h07E;
rommem[ 9871] <= 12'h02E;
rommem[ 9872] <= 12'h02E;
rommem[ 9873] <= 12'h02E;
rommem[ 9874] <= 12'h02E;
rommem[ 9875] <= 12'h02E;
rommem[ 9876] <= 12'h02E;
rommem[ 9877] <= 12'h051;
rommem[ 9878] <= 12'h021;
rommem[ 9879] <= 12'h02E;
rommem[ 9880] <= 12'h02E;
rommem[ 9881] <= 12'h02E;
rommem[ 9882] <= 12'h05A;
rommem[ 9883] <= 12'h053;
rommem[ 9884] <= 12'h041;
rommem[ 9885] <= 12'h057;
rommem[ 9886] <= 12'h040;
rommem[ 9887] <= 12'h02E;
rommem[ 9888] <= 12'h02E;
rommem[ 9889] <= 12'h043;
rommem[ 9890] <= 12'h058;
rommem[ 9891] <= 12'h044;
rommem[ 9892] <= 12'h045;
rommem[ 9893] <= 12'h024;
rommem[ 9894] <= 12'h023;
rommem[ 9895] <= 12'h02E;
rommem[ 9896] <= 12'h02E;
rommem[ 9897] <= 12'h020;
rommem[ 9898] <= 12'h056;
rommem[ 9899] <= 12'h046;
rommem[ 9900] <= 12'h054;
rommem[ 9901] <= 12'h052;
rommem[ 9902] <= 12'h025;
rommem[ 9903] <= 12'h02E;
rommem[ 9904] <= 12'h02E;
rommem[ 9905] <= 12'h04E;
rommem[ 9906] <= 12'h042;
rommem[ 9907] <= 12'h048;
rommem[ 9908] <= 12'h047;
rommem[ 9909] <= 12'h059;
rommem[ 9910] <= 12'h05E;
rommem[ 9911] <= 12'h02E;
rommem[ 9912] <= 12'h02E;
rommem[ 9913] <= 12'h02E;
rommem[ 9914] <= 12'h04D;
rommem[ 9915] <= 12'h04A;
rommem[ 9916] <= 12'h055;
rommem[ 9917] <= 12'h026;
rommem[ 9918] <= 12'h02A;
rommem[ 9919] <= 12'h02E;
rommem[ 9920] <= 12'h02E;
rommem[ 9921] <= 12'h03C;
rommem[ 9922] <= 12'h04B;
rommem[ 9923] <= 12'h049;
rommem[ 9924] <= 12'h04F;
rommem[ 9925] <= 12'h029;
rommem[ 9926] <= 12'h028;
rommem[ 9927] <= 12'h02E;
rommem[ 9928] <= 12'h02E;
rommem[ 9929] <= 12'h03E;
rommem[ 9930] <= 12'h03F;
rommem[ 9931] <= 12'h04C;
rommem[ 9932] <= 12'h03A;
rommem[ 9933] <= 12'h050;
rommem[ 9934] <= 12'h05F;
rommem[ 9935] <= 12'h02E;
rommem[ 9936] <= 12'h02E;
rommem[ 9937] <= 12'h02E;
rommem[ 9938] <= 12'h022;
rommem[ 9939] <= 12'h02E;
rommem[ 9940] <= 12'h07B;
rommem[ 9941] <= 12'h02B;
rommem[ 9942] <= 12'h02E;
rommem[ 9943] <= 12'h02E;
rommem[ 9944] <= 12'h02E;
rommem[ 9945] <= 12'h02E;
rommem[ 9946] <= 12'h00D;
rommem[ 9947] <= 12'h07D;
rommem[ 9948] <= 12'h02E;
rommem[ 9949] <= 12'h07C;
rommem[ 9950] <= 12'h02E;
rommem[ 9951] <= 12'h02E;
rommem[ 9952] <= 12'h02E;
rommem[ 9953] <= 12'h02E;
rommem[ 9954] <= 12'h02E;
rommem[ 9955] <= 12'h02E;
rommem[ 9956] <= 12'h02E;
rommem[ 9957] <= 12'h02E;
rommem[ 9958] <= 12'h008;
rommem[ 9959] <= 12'h02E;
rommem[ 9960] <= 12'h02E;
rommem[ 9961] <= 12'h02E;
rommem[ 9962] <= 12'h02E;
rommem[ 9963] <= 12'h02E;
rommem[ 9964] <= 12'h02E;
rommem[ 9965] <= 12'h02E;
rommem[ 9966] <= 12'h02E;
rommem[ 9967] <= 12'h02E;
rommem[ 9968] <= 12'h02E;
rommem[ 9969] <= 12'h07F;
rommem[ 9970] <= 12'h02E;
rommem[ 9971] <= 12'h02E;
rommem[ 9972] <= 12'h02E;
rommem[ 9973] <= 12'h02E;
rommem[ 9974] <= 12'h01B;
rommem[ 9975] <= 12'h02E;
rommem[ 9976] <= 12'h02E;
rommem[ 9977] <= 12'h02E;
rommem[ 9978] <= 12'h02E;
rommem[ 9979] <= 12'h02E;
rommem[ 9980] <= 12'h02E;
rommem[ 9981] <= 12'h02E;
rommem[ 9982] <= 12'h02E;
rommem[ 9983] <= 12'h02E;
rommem[ 9984] <= 12'h02E;
rommem[ 9985] <= 12'h02E;
rommem[ 9986] <= 12'h02E;
rommem[ 9987] <= 12'h02E;
rommem[ 9988] <= 12'h02E;
rommem[ 9989] <= 12'h02E;
rommem[ 9990] <= 12'h02E;
rommem[ 9991] <= 12'h02E;
rommem[ 9992] <= 12'h02E;
rommem[ 9993] <= 12'h02E;
rommem[ 9994] <= 12'h02E;
rommem[ 9995] <= 12'h02E;
rommem[ 9996] <= 12'h02E;
rommem[ 9997] <= 12'h02E;
rommem[ 9998] <= 12'h02E;
rommem[ 9999] <= 12'h02E;
rommem[10000] <= 12'h02E;
rommem[10001] <= 12'h02E;
rommem[10002] <= 12'h02E;
rommem[10003] <= 12'h02E;
rommem[10004] <= 12'h02E;
rommem[10005] <= 12'h02E;
rommem[10006] <= 12'h02E;
rommem[10007] <= 12'h02E;
rommem[10008] <= 12'h02E;
rommem[10009] <= 12'h02E;
rommem[10010] <= 12'h02E;
rommem[10011] <= 12'h02E;
rommem[10012] <= 12'h02E;
rommem[10013] <= 12'h02E;
rommem[10014] <= 12'h02E;
rommem[10015] <= 12'h02E;
rommem[10016] <= 12'h02E;
rommem[10017] <= 12'h02E;
rommem[10018] <= 12'h02E;
rommem[10019] <= 12'h02E;
rommem[10020] <= 12'h02E;
rommem[10021] <= 12'h02E;
rommem[10022] <= 12'h02E;
rommem[10023] <= 12'h02E;
rommem[10024] <= 12'h02E;
rommem[10025] <= 12'h02E;
rommem[10026] <= 12'h02E;
rommem[10027] <= 12'h02E;
rommem[10028] <= 12'h02E;
rommem[10029] <= 12'h02E;
rommem[10030] <= 12'h02E;
rommem[10031] <= 12'h02E;
rommem[10032] <= 12'h02E;
rommem[10033] <= 12'h02E;
rommem[10034] <= 12'h02E;
rommem[10035] <= 12'h02E;
rommem[10036] <= 12'h02E;
rommem[10037] <= 12'h02E;
rommem[10038] <= 12'h02E;
rommem[10039] <= 12'h02E;
rommem[10040] <= 12'h02E;
rommem[10041] <= 12'h02E;
rommem[10042] <= 12'h02E;
rommem[10043] <= 12'h02E;
rommem[10044] <= 12'h02E;
rommem[10045] <= 12'h02E;
rommem[10046] <= 12'h02E;
rommem[10047] <= 12'h02E;
rommem[10048] <= 12'h02E;
rommem[10049] <= 12'h02E;
rommem[10050] <= 12'h02E;
rommem[10051] <= 12'h02E;
rommem[10052] <= 12'h02E;
rommem[10053] <= 12'h02E;
rommem[10054] <= 12'h02E;
rommem[10055] <= 12'h02E;
rommem[10056] <= 12'h02E;
rommem[10057] <= 12'h02E;
rommem[10058] <= 12'h02E;
rommem[10059] <= 12'h02E;
rommem[10060] <= 12'h02E;
rommem[10061] <= 12'h02E;
rommem[10062] <= 12'h02E;
rommem[10063] <= 12'h02E;
rommem[10064] <= 12'h02E;
rommem[10065] <= 12'h02E;
rommem[10066] <= 12'h02E;
rommem[10067] <= 12'h02E;
rommem[10068] <= 12'h02E;
rommem[10069] <= 12'h02E;
rommem[10070] <= 12'h02E;
rommem[10071] <= 12'h02E;
rommem[10072] <= 12'h02E;
rommem[10073] <= 12'h02E;
rommem[10074] <= 12'h02E;
rommem[10075] <= 12'h02E;
rommem[10076] <= 12'h02E;
rommem[10077] <= 12'h02E;
rommem[10078] <= 12'h02E;
rommem[10079] <= 12'h02E;
rommem[10080] <= 12'h02E;
rommem[10081] <= 12'h02E;
rommem[10082] <= 12'h02E;
rommem[10083] <= 12'h02E;
rommem[10084] <= 12'h02E;
rommem[10085] <= 12'h02E;
rommem[10086] <= 12'h02E;
rommem[10087] <= 12'h02E;
rommem[10088] <= 12'h02E;
rommem[10089] <= 12'h02E;
rommem[10090] <= 12'h02E;
rommem[10091] <= 12'h02E;
rommem[10092] <= 12'h02E;
rommem[10093] <= 12'h02E;
rommem[10094] <= 12'h02E;
rommem[10095] <= 12'h02E;
rommem[10096] <= 12'h02E;
rommem[10097] <= 12'h02E;
rommem[10098] <= 12'h02E;
rommem[10099] <= 12'h02E;
rommem[10100] <= 12'h02E;
rommem[10101] <= 12'h02E;
rommem[10102] <= 12'h02E;
rommem[10103] <= 12'h02E;
rommem[10104] <= 12'h02E;
rommem[10105] <= 12'h02E;
rommem[10106] <= 12'h02E;
rommem[10107] <= 12'h02E;
rommem[10108] <= 12'h02E;
rommem[10109] <= 12'h02E;
rommem[10110] <= 12'h02E;
rommem[10111] <= 12'h02E;
rommem[10112] <= 12'h02E;
rommem[10113] <= 12'h02E;
rommem[10114] <= 12'h02E;
rommem[10115] <= 12'h02E;
rommem[10116] <= 12'h02E;
rommem[10117] <= 12'h02E;
rommem[10118] <= 12'h02E;
rommem[10119] <= 12'h02E;
rommem[10120] <= 12'h02E;
rommem[10121] <= 12'h02E;
rommem[10122] <= 12'h02E;
rommem[10123] <= 12'h02E;
rommem[10124] <= 12'h02E;
rommem[10125] <= 12'h009;
rommem[10126] <= 12'h07E;
rommem[10127] <= 12'h02E;
rommem[10128] <= 12'h02E;
rommem[10129] <= 12'h02E;
rommem[10130] <= 12'h02E;
rommem[10131] <= 12'h02E;
rommem[10132] <= 12'h02E;
rommem[10133] <= 12'h011;
rommem[10134] <= 12'h021;
rommem[10135] <= 12'h02E;
rommem[10136] <= 12'h02E;
rommem[10137] <= 12'h02E;
rommem[10138] <= 12'h01A;
rommem[10139] <= 12'h013;
rommem[10140] <= 12'h001;
rommem[10141] <= 12'h017;
rommem[10142] <= 12'h040;
rommem[10143] <= 12'h02E;
rommem[10144] <= 12'h02E;
rommem[10145] <= 12'h003;
rommem[10146] <= 12'h018;
rommem[10147] <= 12'h004;
rommem[10148] <= 12'h005;
rommem[10149] <= 12'h024;
rommem[10150] <= 12'h023;
rommem[10151] <= 12'h02E;
rommem[10152] <= 12'h02E;
rommem[10153] <= 12'h020;
rommem[10154] <= 12'h016;
rommem[10155] <= 12'h006;
rommem[10156] <= 12'h014;
rommem[10157] <= 12'h012;
rommem[10158] <= 12'h025;
rommem[10159] <= 12'h02E;
rommem[10160] <= 12'h02E;
rommem[10161] <= 12'h00E;
rommem[10162] <= 12'h002;
rommem[10163] <= 12'h008;
rommem[10164] <= 12'h007;
rommem[10165] <= 12'h019;
rommem[10166] <= 12'h05E;
rommem[10167] <= 12'h02E;
rommem[10168] <= 12'h02E;
rommem[10169] <= 12'h02E;
rommem[10170] <= 12'h00D;
rommem[10171] <= 12'h00A;
rommem[10172] <= 12'h015;
rommem[10173] <= 12'h026;
rommem[10174] <= 12'h02A;
rommem[10175] <= 12'h02E;
rommem[10176] <= 12'h02E;
rommem[10177] <= 12'h03C;
rommem[10178] <= 12'h00B;
rommem[10179] <= 12'h009;
rommem[10180] <= 12'h00F;
rommem[10181] <= 12'h029;
rommem[10182] <= 12'h028;
rommem[10183] <= 12'h02E;
rommem[10184] <= 12'h02E;
rommem[10185] <= 12'h03E;
rommem[10186] <= 12'h03F;
rommem[10187] <= 12'h00C;
rommem[10188] <= 12'h03A;
rommem[10189] <= 12'h010;
rommem[10190] <= 12'h05F;
rommem[10191] <= 12'h02E;
rommem[10192] <= 12'h02E;
rommem[10193] <= 12'h02E;
rommem[10194] <= 12'h022;
rommem[10195] <= 12'h02E;
rommem[10196] <= 12'h07B;
rommem[10197] <= 12'h02B;
rommem[10198] <= 12'h02E;
rommem[10199] <= 12'h02E;
rommem[10200] <= 12'h02E;
rommem[10201] <= 12'h02E;
rommem[10202] <= 12'h00D;
rommem[10203] <= 12'h07D;
rommem[10204] <= 12'h02E;
rommem[10205] <= 12'h07C;
rommem[10206] <= 12'h02E;
rommem[10207] <= 12'h02E;
rommem[10208] <= 12'h02E;
rommem[10209] <= 12'h02E;
rommem[10210] <= 12'h02E;
rommem[10211] <= 12'h02E;
rommem[10212] <= 12'h02E;
rommem[10213] <= 12'h02E;
rommem[10214] <= 12'h008;
rommem[10215] <= 12'h02E;
rommem[10216] <= 12'h02E;
rommem[10217] <= 12'h02E;
rommem[10218] <= 12'h02E;
rommem[10219] <= 12'h02E;
rommem[10220] <= 12'h02E;
rommem[10221] <= 12'h02E;
rommem[10222] <= 12'h02E;
rommem[10223] <= 12'h02E;
rommem[10224] <= 12'h02E;
rommem[10225] <= 12'h07F;
rommem[10226] <= 12'h02E;
rommem[10227] <= 12'h02E;
rommem[10228] <= 12'h02E;
rommem[10229] <= 12'h02E;
rommem[10230] <= 12'h01B;
rommem[10231] <= 12'h02E;
rommem[10232] <= 12'h02E;
rommem[10233] <= 12'h02E;
rommem[10234] <= 12'h02E;
rommem[10235] <= 12'h02E;
rommem[10236] <= 12'h02E;
rommem[10237] <= 12'h02E;
rommem[10238] <= 12'h02E;
rommem[10239] <= 12'h02E;
rommem[10240] <= 12'h02E;
rommem[10241] <= 12'h02E;
rommem[10242] <= 12'h02E;
rommem[10243] <= 12'h02E;
rommem[10244] <= 12'h0A3;
rommem[10245] <= 12'h0A1;
rommem[10246] <= 12'h0A2;
rommem[10247] <= 12'h02E;
rommem[10248] <= 12'h02E;
rommem[10249] <= 12'h02E;
rommem[10250] <= 12'h02E;
rommem[10251] <= 12'h02E;
rommem[10252] <= 12'h02E;
rommem[10253] <= 12'h02E;
rommem[10254] <= 12'h02E;
rommem[10255] <= 12'h02E;
rommem[10256] <= 12'h02E;
rommem[10257] <= 12'h02E;
rommem[10258] <= 12'h02E;
rommem[10259] <= 12'h02E;
rommem[10260] <= 12'h02E;
rommem[10261] <= 12'h02E;
rommem[10262] <= 12'h02E;
rommem[10263] <= 12'h02E;
rommem[10264] <= 12'h02E;
rommem[10265] <= 12'h02E;
rommem[10266] <= 12'h02E;
rommem[10267] <= 12'h02E;
rommem[10268] <= 12'h02E;
rommem[10269] <= 12'h02E;
rommem[10270] <= 12'h02E;
rommem[10271] <= 12'h02E;
rommem[10272] <= 12'h02E;
rommem[10273] <= 12'h02E;
rommem[10274] <= 12'h02E;
rommem[10275] <= 12'h02E;
rommem[10276] <= 12'h02E;
rommem[10277] <= 12'h02E;
rommem[10278] <= 12'h02E;
rommem[10279] <= 12'h02E;
rommem[10280] <= 12'h02E;
rommem[10281] <= 12'h02E;
rommem[10282] <= 12'h02E;
rommem[10283] <= 12'h02E;
rommem[10284] <= 12'h02E;
rommem[10285] <= 12'h02E;
rommem[10286] <= 12'h02E;
rommem[10287] <= 12'h02E;
rommem[10288] <= 12'h02E;
rommem[10289] <= 12'h02E;
rommem[10290] <= 12'h02E;
rommem[10291] <= 12'h02E;
rommem[10292] <= 12'h02E;
rommem[10293] <= 12'h02E;
rommem[10294] <= 12'h02E;
rommem[10295] <= 12'h02E;
rommem[10296] <= 12'h02E;
rommem[10297] <= 12'h02E;
rommem[10298] <= 12'h02E;
rommem[10299] <= 12'h02E;
rommem[10300] <= 12'h02E;
rommem[10301] <= 12'h02E;
rommem[10302] <= 12'h02E;
rommem[10303] <= 12'h02E;
rommem[10304] <= 12'h02E;
rommem[10305] <= 12'h02E;
rommem[10306] <= 12'h02E;
rommem[10307] <= 12'h02E;
rommem[10308] <= 12'h02E;
rommem[10309] <= 12'h02E;
rommem[10310] <= 12'h02E;
rommem[10311] <= 12'h02E;
rommem[10312] <= 12'h02E;
rommem[10313] <= 12'h02E;
rommem[10314] <= 12'h02E;
rommem[10315] <= 12'h02E;
rommem[10316] <= 12'h02E;
rommem[10317] <= 12'h02E;
rommem[10318] <= 12'h02E;
rommem[10319] <= 12'h02E;
rommem[10320] <= 12'h02E;
rommem[10321] <= 12'h02E;
rommem[10322] <= 12'h02E;
rommem[10323] <= 12'h02E;
rommem[10324] <= 12'h02E;
rommem[10325] <= 12'h02E;
rommem[10326] <= 12'h02E;
rommem[10327] <= 12'h02E;
rommem[10328] <= 12'h02E;
rommem[10329] <= 12'h02E;
rommem[10330] <= 12'h02E;
rommem[10331] <= 12'h02E;
rommem[10332] <= 12'h02E;
rommem[10333] <= 12'h02E;
rommem[10334] <= 12'h02E;
rommem[10335] <= 12'h02E;
rommem[10336] <= 12'h02E;
rommem[10337] <= 12'h02E;
rommem[10338] <= 12'h02E;
rommem[10339] <= 12'h02E;
rommem[10340] <= 12'h02E;
rommem[10341] <= 12'h02E;
rommem[10342] <= 12'h02E;
rommem[10343] <= 12'h02E;
rommem[10344] <= 12'h02E;
rommem[10345] <= 12'h095;
rommem[10346] <= 12'h02E;
rommem[10347] <= 12'h093;
rommem[10348] <= 12'h094;
rommem[10349] <= 12'h02E;
rommem[10350] <= 12'h02E;
rommem[10351] <= 12'h02E;
rommem[10352] <= 12'h098;
rommem[10353] <= 12'h099;
rommem[10354] <= 12'h092;
rommem[10355] <= 12'h02E;
rommem[10356] <= 12'h091;
rommem[10357] <= 12'h090;
rommem[10358] <= 12'h02E;
rommem[10359] <= 12'h02E;
rommem[10360] <= 12'h02E;
rommem[10361] <= 12'h02E;
rommem[10362] <= 12'h097;
rommem[10363] <= 12'h02E;
rommem[10364] <= 12'h02E;
rommem[10365] <= 12'h096;
rommem[10366] <= 12'h02E;
rommem[10367] <= 12'h02E;
rommem[10368] <= 12'h034;
rommem[10369] <= 12'h010;
rommem[10370] <= 12'h08E;
rommem[10371] <= 12'h000;
rommem[10372] <= 12'h064;
rommem[10373] <= 12'h08D;
rommem[10374] <= 12'h05A;
rommem[10375] <= 12'h05D;
rommem[10376] <= 12'h02B;
rommem[10377] <= 12'h00B;
rommem[10378] <= 12'h08D;
rommem[10379] <= 12'h02D;
rommem[10380] <= 12'h030;
rommem[10381] <= 12'h1FF;
rommem[10382] <= 12'h026;
rommem[10383] <= 12'hFF5;
rommem[10384] <= 12'h0CC;
rommem[10385] <= 12'hFFF;
rommem[10386] <= 12'hFFF;
rommem[10387] <= 12'h035;
rommem[10388] <= 12'h090;
rommem[10389] <= 12'h08D;
rommem[10390] <= 12'h066;
rommem[10391] <= 12'h035;
rommem[10392] <= 12'h090;
rommem[10393] <= 12'h015;
rommem[10394] <= 12'h0F7;
rommem[10395] <= 12'hFFF;
rommem[10396] <= 12'hE30;
rommem[10397] <= 12'h400;
rommem[10398] <= 12'h039;
rommem[10399] <= 12'h034;
rommem[10400] <= 12'h010;
rommem[10401] <= 12'h08E;
rommem[10402] <= 12'h000;
rommem[10403] <= 12'h064;
rommem[10404] <= 12'h08D;
rommem[10405] <= 12'h03B;
rommem[10406] <= 12'h0C4;
rommem[10407] <= 12'h040;
rommem[10408] <= 12'h026;
rommem[10409] <= 12'h00B;
rommem[10410] <= 12'h08D;
rommem[10411] <= 12'h00D;
rommem[10412] <= 12'h030;
rommem[10413] <= 12'h1FF;
rommem[10414] <= 12'h026;
rommem[10415] <= 12'hFF4;
rommem[10416] <= 12'h0CC;
rommem[10417] <= 12'hFFF;
rommem[10418] <= 12'hFFF;
rommem[10419] <= 12'h035;
rommem[10420] <= 12'h090;
rommem[10421] <= 12'h04F;
rommem[10422] <= 12'h05F;
rommem[10423] <= 12'h035;
rommem[10424] <= 12'h090;
rommem[10425] <= 12'h034;
rommem[10426] <= 12'h006;
rommem[10427] <= 12'h015;
rommem[10428] <= 12'h0B6;
rommem[10429] <= 12'hFFF;
rommem[10430] <= 12'hFFF;
rommem[10431] <= 12'hFE7;
rommem[10432] <= 12'h01F;
rommem[10433] <= 12'h089;
rommem[10434] <= 12'h015;
rommem[10435] <= 12'h0F0;
rommem[10436] <= 12'hFFF;
rommem[10437] <= 12'hFFF;
rommem[10438] <= 12'hFE7;
rommem[10439] <= 12'h0C1;
rommem[10440] <= 12'hFFA;
rommem[10441] <= 12'h022;
rommem[10442] <= 12'hFF5;
rommem[10443] <= 12'h035;
rommem[10444] <= 12'h086;
rommem[10445] <= 12'h034;
rommem[10446] <= 12'h006;
rommem[10447] <= 12'h015;
rommem[10448] <= 12'h0B6;
rommem[10449] <= 12'hFFF;
rommem[10450] <= 12'hFFF;
rommem[10451] <= 12'hFE7;
rommem[10452] <= 12'h01F;
rommem[10453] <= 12'h089;
rommem[10454] <= 12'h015;
rommem[10455] <= 12'h0F0;
rommem[10456] <= 12'hFFF;
rommem[10457] <= 12'hFFF;
rommem[10458] <= 12'hFE7;
rommem[10459] <= 12'h0C1;
rommem[10460] <= 12'hF00;
rommem[10461] <= 12'h022;
rommem[10462] <= 12'hFF5;
rommem[10463] <= 12'h035;
rommem[10464] <= 12'h086;
rommem[10465] <= 12'h015;
rommem[10466] <= 12'h0F6;
rommem[10467] <= 12'hFFF;
rommem[10468] <= 12'hE30;
rommem[10469] <= 12'h401;
rommem[10470] <= 12'h0C5;
rommem[10471] <= 12'h080;
rommem[10472] <= 12'h026;
rommem[10473] <= 12'h00E;
rommem[10474] <= 12'h0C5;
rommem[10475] <= 12'h001;
rommem[10476] <= 12'h026;
rommem[10477] <= 12'h002;
rommem[10478] <= 12'h04F;
rommem[10479] <= 12'h039;
rommem[10480] <= 12'h0C6;
rommem[10481] <= 12'h0FE;
rommem[10482] <= 12'h08D;
rommem[10483] <= 12'hFA5;
rommem[10484] <= 12'h08D;
rommem[10485] <= 12'hFA9;
rommem[10486] <= 12'h020;
rommem[10487] <= 12'hFE9;
rommem[10488] <= 12'h0CA;
rommem[10489] <= 12'hF00;
rommem[10490] <= 12'h086;
rommem[10491] <= 12'hFFF;
rommem[10492] <= 12'h039;
rommem[10493] <= 12'h04F;
rommem[10494] <= 12'h015;
rommem[10495] <= 12'h0F6;
rommem[10496] <= 12'hFFF;
rommem[10497] <= 12'hE30;
rommem[10498] <= 12'h400;
rommem[10499] <= 12'h015;
rommem[10500] <= 12'h07F;
rommem[10501] <= 12'hFFF;
rommem[10502] <= 12'hE30;
rommem[10503] <= 12'h401;
rommem[10504] <= 12'h039;
rommem[10505] <= 12'h034;
rommem[10506] <= 12'h004;
rommem[10507] <= 12'h0C6;
rommem[10508] <= 12'h0ED;
rommem[10509] <= 12'h08D;
rommem[10510] <= 12'hF8A;
rommem[10511] <= 12'h08D;
rommem[10512] <= 12'hF8E;
rommem[10513] <= 12'h08D;
rommem[10514] <= 12'hF6D;
rommem[10515] <= 12'h035;
rommem[10516] <= 12'h004;
rommem[10517] <= 12'h08D;
rommem[10518] <= 12'hF82;
rommem[10519] <= 12'h08D;
rommem[10520] <= 12'hF86;
rommem[10521] <= 12'h08D;
rommem[10522] <= 12'hF65;
rommem[10523] <= 12'h039;
rommem[10524] <= 12'h0C6;
rommem[10525] <= 12'h0F2;
rommem[10526] <= 12'h08D;
rommem[10527] <= 12'hF79;
rommem[10528] <= 12'h08D;
rommem[10529] <= 12'hF7D;
rommem[10530] <= 12'h08D;
rommem[10531] <= 12'hF5C;
rommem[10532] <= 12'h0C5;
rommem[10533] <= 12'h080;
rommem[10534] <= 12'h026;
rommem[10535] <= 12'h014;
rommem[10536] <= 12'h0C1;
rommem[10537] <= 12'h0AB;
rommem[10538] <= 12'h026;
rommem[10539] <= 12'h010;
rommem[10540] <= 12'h08D;
rommem[10541] <= 12'hF52;
rommem[10542] <= 12'h0C5;
rommem[10543] <= 12'h080;
rommem[10544] <= 12'h026;
rommem[10545] <= 12'h00A;
rommem[10546] <= 12'h0C1;
rommem[10547] <= 12'h083;
rommem[10548] <= 12'h026;
rommem[10549] <= 12'h006;
rommem[10550] <= 12'h0CC;
rommem[10551] <= 12'h00A;
rommem[10552] <= 12'hB83;
rommem[10553] <= 12'h0DD;
rommem[10554] <= 12'h124;
rommem[10555] <= 12'h039;
rommem[10556] <= 12'h04F;
rommem[10557] <= 12'h05F;
rommem[10558] <= 12'h020;
rommem[10559] <= 12'hFF9;
rommem[10560] <= 12'h034;
rommem[10561] <= 12'h026;
rommem[10562] <= 12'h18E;
rommem[10563] <= 12'h000;
rommem[10564] <= 12'h005;
rommem[10565] <= 12'h00F;
rommem[10566] <= 12'h120;
rommem[10567] <= 12'h00F;
rommem[10568] <= 12'h121;
rommem[10569] <= 12'h08D;
rommem[10570] <= 12'hF6E;
rommem[10571] <= 12'h015;
rommem[10572] <= 12'h07F;
rommem[10573] <= 12'hFFF;
rommem[10574] <= 12'hE30;
rommem[10575] <= 12'h401;
rommem[10576] <= 12'h0C6;
rommem[10577] <= 12'hFFF;
rommem[10578] <= 12'h015;
rommem[10579] <= 12'h0F7;
rommem[10580] <= 12'hFFF;
rommem[10581] <= 12'hE30;
rommem[10582] <= 12'h401;
rommem[10583] <= 12'h08D;
rommem[10584] <= 12'hF40;
rommem[10585] <= 12'h08D;
rommem[10586] <= 12'hF44;
rommem[10587] <= 12'h08D;
rommem[10588] <= 12'hF23;
rommem[10589] <= 12'h0C1;
rommem[10590] <= 12'h0FA;
rommem[10591] <= 12'h026;
rommem[10592] <= 12'h021;
rommem[10593] <= 12'h08D;
rommem[10594] <= 12'hF1D;
rommem[10595] <= 12'h0C1;
rommem[10596] <= 12'h0FC;
rommem[10597] <= 12'h027;
rommem[10598] <= 12'h01B;
rommem[10599] <= 12'h0C1;
rommem[10600] <= 12'h0AA;
rommem[10601] <= 12'h026;
rommem[10602] <= 12'h017;
rommem[10603] <= 12'h0C6;
rommem[10604] <= 12'h0F0;
rommem[10605] <= 12'h015;
rommem[10606] <= 12'h0F7;
rommem[10607] <= 12'hFFF;
rommem[10608] <= 12'hE60;
rommem[10609] <= 12'h001;
rommem[10610] <= 12'h08D;
rommem[10611] <= 12'hF25;
rommem[10612] <= 12'h08D;
rommem[10613] <= 12'hF29;
rommem[10614] <= 12'h05D;
rommem[10615] <= 12'h02B;
rommem[10616] <= 12'h009;
rommem[10617] <= 12'h08D;
rommem[10618] <= 12'hF05;
rommem[10619] <= 12'h04D;
rommem[10620] <= 12'h02B;
rommem[10621] <= 12'h004;
rommem[10622] <= 12'h0C1;
rommem[10623] <= 12'h0FA;
rommem[10624] <= 12'h027;
rommem[10625] <= 12'h00C;
rommem[10626] <= 12'h031;
rommem[10627] <= 12'h3FF;
rommem[10628] <= 12'h026;
rommem[10629] <= 12'hFC3;
rommem[10630] <= 12'h0CC;
rommem[10631] <= 12'hFFE;
rommem[10632] <= 12'h9AE;
rommem[10633] <= 12'h017;
rommem[10634] <= 12'hFFF;
rommem[10635] <= 12'hA2D;
rommem[10636] <= 12'h020;
rommem[10637] <= 12'h014;
rommem[10638] <= 12'h0C6;
rommem[10639] <= 12'h002;
rommem[10640] <= 12'h08D;
rommem[10641] <= 12'hF07;
rommem[10642] <= 12'h08D;
rommem[10643] <= 12'hF0B;
rommem[10644] <= 12'h05D;
rommem[10645] <= 12'h02B;
rommem[10646] <= 12'hFEB;
rommem[10647] <= 12'h08D;
rommem[10648] <= 12'hEE7;
rommem[10649] <= 12'h04D;
rommem[10650] <= 12'h02B;
rommem[10651] <= 12'hFE6;
rommem[10652] <= 12'h0C1;
rommem[10653] <= 12'h0FA;
rommem[10654] <= 12'h026;
rommem[10655] <= 12'hFE2;
rommem[10656] <= 12'h08D;
rommem[10657] <= 12'hF7A;
rommem[10658] <= 12'h0C6;
rommem[10659] <= 12'h007;
rommem[10660] <= 12'h08D;
rommem[10661] <= 12'hF63;
rommem[10662] <= 12'h08D;
rommem[10663] <= 12'hF25;
rommem[10664] <= 12'h0C6;
rommem[10665] <= 12'h000;
rommem[10666] <= 12'h08D;
rommem[10667] <= 12'hF5D;
rommem[10668] <= 12'h035;
rommem[10669] <= 12'h0A6;
rommem[10670] <= 12'h04B;
rommem[10671] <= 12'h065;
rommem[10672] <= 12'h079;
rommem[10673] <= 12'h062;
rommem[10674] <= 12'h06F;
rommem[10675] <= 12'h061;
rommem[10676] <= 12'h072;
rommem[10677] <= 12'h064;
rommem[10678] <= 12'h020;
rommem[10679] <= 12'h065;
rommem[10680] <= 12'h072;
rommem[10681] <= 12'h072;
rommem[10682] <= 12'h06F;
rommem[10683] <= 12'h072;
rommem[10684] <= 12'h000;
rommem[10685] <= 12'h04F;
rommem[10686] <= 12'h0E6;
rommem[10687] <= 12'hA08;
rommem[10688] <= 12'h128;
rommem[10689] <= 12'h0E0;
rommem[10690] <= 12'hA08;
rommem[10691] <= 12'h127;
rommem[10692] <= 12'h02C;
rommem[10693] <= 12'h008;
rommem[10694] <= 12'h0C6;
rommem[10695] <= 12'h040;
rommem[10696] <= 12'h0E0;
rommem[10697] <= 12'hA08;
rommem[10698] <= 12'h127;
rommem[10699] <= 12'h0EB;
rommem[10700] <= 12'hA08;
rommem[10701] <= 12'h128;
rommem[10702] <= 12'h039;
rommem[10703] <= 12'h015;
rommem[10704] <= 12'h0B6;
rommem[10705] <= 12'hFFF;
rommem[10706] <= 12'hE30;
rommem[10707] <= 12'h401;
rommem[10708] <= 12'h085;
rommem[10709] <= 12'h080;
rommem[10710] <= 12'h027;
rommem[10711] <= 12'h034;
rommem[10712] <= 12'h015;
rommem[10713] <= 12'h0F6;
rommem[10714] <= 12'hFFF;
rommem[10715] <= 12'hE30;
rommem[10716] <= 12'h400;
rommem[10717] <= 12'h015;
rommem[10718] <= 12'h07F;
rommem[10719] <= 12'hFFF;
rommem[10720] <= 12'hE30;
rommem[10721] <= 12'h401;
rommem[10722] <= 12'h034;
rommem[10723] <= 12'h004;
rommem[10724] <= 12'h0B6;
rommem[10725] <= 12'hFF0;
rommem[10726] <= 12'h010;
rommem[10727] <= 12'h05F;
rommem[10728] <= 12'h048;
rommem[10729] <= 12'h048;
rommem[10730] <= 12'h048;
rommem[10731] <= 12'h048;
rommem[10732] <= 12'h08A;
rommem[10733] <= 12'hC00;
rommem[10734] <= 12'h01F;
rommem[10735] <= 12'h002;
rommem[10736] <= 12'h08D;
rommem[10737] <= 12'hFCB;
rommem[10738] <= 12'h0C1;
rommem[10739] <= 12'h040;
rommem[10740] <= 12'h024;
rommem[10741] <= 12'h017;
rommem[10742] <= 12'h01F;
rommem[10743] <= 12'h021;
rommem[10744] <= 12'h0E6;
rommem[10745] <= 12'hA08;
rommem[10746] <= 12'h128;
rommem[10747] <= 12'h035;
rommem[10748] <= 12'h002;
rommem[10749] <= 12'h030;
rommem[10750] <= 12'h040;
rommem[10751] <= 12'h0A7;
rommem[10752] <= 12'h845;
rommem[10753] <= 12'h05C;
rommem[10754] <= 12'h0C4;
rommem[10755] <= 12'h03F;
rommem[10756] <= 12'h0E7;
rommem[10757] <= 12'hA08;
rommem[10758] <= 12'h128;
rommem[10759] <= 12'h086;
rommem[10760] <= 12'h01C;
rommem[10761] <= 12'h0B7;
rommem[10762] <= 12'hFF0;
rommem[10763] <= 12'h011;
rommem[10764] <= 12'h039;
rommem[10765] <= 12'h032;
rommem[10766] <= 12'h601;
rommem[10767] <= 12'h039;
rommem[10768] <= 12'h020;
rommem[10769] <= 12'hECF;
rommem[10770] <= 12'h034;
rommem[10771] <= 12'h030;
rommem[10772] <= 12'h0D7;
rommem[10773] <= 12'h126;
rommem[10774] <= 12'h0D6;
rommem[10775] <= 12'h126;
rommem[10776] <= 12'h034;
rommem[10777] <= 12'h004;
rommem[10778] <= 12'h0C5;
rommem[10779] <= 12'h001;
rommem[10780] <= 12'h027;
rommem[10781] <= 12'h01A;
rommem[10782] <= 12'h015;
rommem[10783] <= 12'h0B6;
rommem[10784] <= 12'hFFF;
rommem[10785] <= 12'hFFF;
rommem[10786] <= 12'hFE0;
rommem[10787] <= 12'h05F;
rommem[10788] <= 12'h048;
rommem[10789] <= 12'h048;
rommem[10790] <= 12'h048;
rommem[10791] <= 12'h048;
rommem[10792] <= 12'h08A;
rommem[10793] <= 12'hC00;
rommem[10794] <= 12'h01F;
rommem[10795] <= 12'h002;
rommem[10796] <= 12'h08D;
rommem[10797] <= 12'hF8F;
rommem[10798] <= 12'h05D;
rommem[10799] <= 12'h035;
rommem[10800] <= 12'h004;
rommem[10801] <= 12'h026;
rommem[10802] <= 12'h018;
rommem[10803] <= 12'h05D;
rommem[10804] <= 12'h02B;
rommem[10805] <= 12'hFE0;
rommem[10806] <= 12'h020;
rommem[10807] <= 12'h00E;
rommem[10808] <= 12'h18E;
rommem[10809] <= 12'h000;
rommem[10810] <= 12'h000;
rommem[10811] <= 12'h08D;
rommem[10812] <= 12'hEA4;
rommem[10813] <= 12'h0C4;
rommem[10814] <= 12'h080;
rommem[10815] <= 12'h035;
rommem[10816] <= 12'h004;
rommem[10817] <= 12'h026;
rommem[10818] <= 12'h008;
rommem[10819] <= 12'h05D;
rommem[10820] <= 12'h02B;
rommem[10821] <= 12'hFD0;
rommem[10822] <= 12'h0CC;
rommem[10823] <= 12'hFFF;
rommem[10824] <= 12'hFFF;
rommem[10825] <= 12'h035;
rommem[10826] <= 12'h0B0;
rommem[10827] <= 12'h18C;
rommem[10828] <= 12'h000;
rommem[10829] <= 12'h000;
rommem[10830] <= 12'h026;
rommem[10831] <= 12'h004;
rommem[10832] <= 12'h08D;
rommem[10833] <= 12'hEAB;
rommem[10834] <= 12'h020;
rommem[10835] <= 12'h011;
rommem[10836] <= 12'h01F;
rommem[10837] <= 12'h021;
rommem[10838] <= 12'h030;
rommem[10839] <= 12'h040;
rommem[10840] <= 12'h0E6;
rommem[10841] <= 12'hA08;
rommem[10842] <= 12'h127;
rommem[10843] <= 12'h0A6;
rommem[10844] <= 12'hA0D;
rommem[10845] <= 12'h05C;
rommem[10846] <= 12'h0C4;
rommem[10847] <= 12'h03F;
rommem[10848] <= 12'h0E7;
rommem[10849] <= 12'hA08;
rommem[10850] <= 12'h127;
rommem[10851] <= 12'h01F;
rommem[10852] <= 12'h089;
rommem[10853] <= 12'h08E;
rommem[10854] <= 12'h000;
rommem[10855] <= 12'h014;
rommem[10856] <= 12'h030;
rommem[10857] <= 12'h1FF;
rommem[10858] <= 12'h026;
rommem[10859] <= 12'hFFC;
rommem[10860] <= 12'h0C1;
rommem[10861] <= 12'h0F0;
rommem[10862] <= 12'h026;
rommem[10863] <= 12'h004;
rommem[10864] <= 12'h0D7;
rommem[10865] <= 12'h120;
rommem[10866] <= 12'h020;
rommem[10867] <= 12'hFA2;
rommem[10868] <= 12'h0C1;
rommem[10869] <= 12'h0E0;
rommem[10870] <= 12'h026;
rommem[10871] <= 12'h008;
rommem[10872] <= 12'h096;
rommem[10873] <= 12'h121;
rommem[10874] <= 12'h08A;
rommem[10875] <= 12'h800;
rommem[10876] <= 12'h097;
rommem[10877] <= 12'h121;
rommem[10878] <= 12'h020;
rommem[10879] <= 12'hF96;
rommem[10880] <= 12'h0C1;
rommem[10881] <= 12'h014;
rommem[10882] <= 12'h026;
rommem[10883] <= 12'h016;
rommem[10884] <= 12'h00D;
rommem[10885] <= 12'h120;
rommem[10886] <= 12'h026;
rommem[10887] <= 12'h008;
rommem[10888] <= 12'h096;
rommem[10889] <= 12'h121;
rommem[10890] <= 12'h08A;
rommem[10891] <= 12'h004;
rommem[10892] <= 12'h097;
rommem[10893] <= 12'h121;
rommem[10894] <= 12'h020;
rommem[10895] <= 12'h006;
rommem[10896] <= 12'h096;
rommem[10897] <= 12'h121;
rommem[10898] <= 12'h084;
rommem[10899] <= 12'hFFB;
rommem[10900] <= 12'h097;
rommem[10901] <= 12'h121;
rommem[10902] <= 12'h00F;
rommem[10903] <= 12'h120;
rommem[10904] <= 12'h020;
rommem[10905] <= 12'hF7C;
rommem[10906] <= 12'h0C1;
rommem[10907] <= 12'h059;
rommem[10908] <= 12'h026;
rommem[10909] <= 12'h016;
rommem[10910] <= 12'h00D;
rommem[10911] <= 12'h120;
rommem[10912] <= 12'h026;
rommem[10913] <= 12'h008;
rommem[10914] <= 12'h096;
rommem[10915] <= 12'h121;
rommem[10916] <= 12'h08A;
rommem[10917] <= 12'h001;
rommem[10918] <= 12'h097;
rommem[10919] <= 12'h121;
rommem[10920] <= 12'h020;
rommem[10921] <= 12'h006;
rommem[10922] <= 12'h096;
rommem[10923] <= 12'h121;
rommem[10924] <= 12'h084;
rommem[10925] <= 12'hFFE;
rommem[10926] <= 12'h097;
rommem[10927] <= 12'h121;
rommem[10928] <= 12'h00F;
rommem[10929] <= 12'h120;
rommem[10930] <= 12'h020;
rommem[10931] <= 12'hF62;
rommem[10932] <= 12'h0C1;
rommem[10933] <= 12'h077;
rommem[10934] <= 12'h026;
rommem[10935] <= 12'h013;
rommem[10936] <= 12'h096;
rommem[10937] <= 12'h121;
rommem[10938] <= 12'h088;
rommem[10939] <= 12'h010;
rommem[10940] <= 12'h097;
rommem[10941] <= 12'h121;
rommem[10942] <= 12'h096;
rommem[10943] <= 12'h122;
rommem[10944] <= 12'h088;
rommem[10945] <= 12'h002;
rommem[10946] <= 12'h097;
rommem[10947] <= 12'h122;
rommem[10948] <= 12'h01F;
rommem[10949] <= 12'h089;
rommem[10950] <= 12'h04F;
rommem[10951] <= 12'h08D;
rommem[10952] <= 12'hE40;
rommem[10953] <= 12'h020;
rommem[10954] <= 12'hF4B;
rommem[10955] <= 12'h0C1;
rommem[10956] <= 12'h058;
rommem[10957] <= 12'h026;
rommem[10958] <= 12'h013;
rommem[10959] <= 12'h096;
rommem[10960] <= 12'h121;
rommem[10961] <= 12'h088;
rommem[10962] <= 12'h020;
rommem[10963] <= 12'h097;
rommem[10964] <= 12'h121;
rommem[10965] <= 12'h096;
rommem[10966] <= 12'h122;
rommem[10967] <= 12'h088;
rommem[10968] <= 12'h004;
rommem[10969] <= 12'h097;
rommem[10970] <= 12'h122;
rommem[10971] <= 12'h01F;
rommem[10972] <= 12'h089;
rommem[10973] <= 12'h04F;
rommem[10974] <= 12'h08D;
rommem[10975] <= 12'hE29;
rommem[10976] <= 12'h020;
rommem[10977] <= 12'hF34;
rommem[10978] <= 12'h0C1;
rommem[10979] <= 12'h07E;
rommem[10980] <= 12'h026;
rommem[10981] <= 12'h013;
rommem[10982] <= 12'h096;
rommem[10983] <= 12'h121;
rommem[10984] <= 12'h088;
rommem[10985] <= 12'h040;
rommem[10986] <= 12'h097;
rommem[10987] <= 12'h121;
rommem[10988] <= 12'h096;
rommem[10989] <= 12'h122;
rommem[10990] <= 12'h088;
rommem[10991] <= 12'h001;
rommem[10992] <= 12'h097;
rommem[10993] <= 12'h122;
rommem[10994] <= 12'h01F;
rommem[10995] <= 12'h089;
rommem[10996] <= 12'h04F;
rommem[10997] <= 12'h08D;
rommem[10998] <= 12'hE12;
rommem[10999] <= 12'h020;
rommem[11000] <= 12'hF1D;
rommem[11001] <= 12'h0C1;
rommem[11002] <= 12'h011;
rommem[11003] <= 12'h026;
rommem[11004] <= 12'h016;
rommem[11005] <= 12'h00D;
rommem[11006] <= 12'h120;
rommem[11007] <= 12'h026;
rommem[11008] <= 12'h008;
rommem[11009] <= 12'h096;
rommem[11010] <= 12'h121;
rommem[11011] <= 12'h08A;
rommem[11012] <= 12'h002;
rommem[11013] <= 12'h097;
rommem[11014] <= 12'h121;
rommem[11015] <= 12'h020;
rommem[11016] <= 12'h006;
rommem[11017] <= 12'h096;
rommem[11018] <= 12'h121;
rommem[11019] <= 12'h084;
rommem[11020] <= 12'hFFD;
rommem[11021] <= 12'h097;
rommem[11022] <= 12'h121;
rommem[11023] <= 12'h00F;
rommem[11024] <= 12'h120;
rommem[11025] <= 12'h020;
rommem[11026] <= 12'hF03;
rommem[11027] <= 12'h00D;
rommem[11028] <= 12'h120;
rommem[11029] <= 12'h027;
rommem[11030] <= 12'h004;
rommem[11031] <= 12'h00F;
rommem[11032] <= 12'h120;
rommem[11033] <= 12'h020;
rommem[11034] <= 12'hEFB;
rommem[11035] <= 12'h096;
rommem[11036] <= 12'h121;
rommem[11037] <= 12'h084;
rommem[11038] <= 12'h006;
rommem[11039] <= 12'h081;
rommem[11040] <= 12'h006;
rommem[11041] <= 12'h026;
rommem[11042] <= 12'h008;
rommem[11043] <= 12'h0C1;
rommem[11044] <= 12'h071;
rommem[11045] <= 12'h026;
rommem[11046] <= 12'h004;
rommem[11047] <= 12'h06E;
rommem[11048] <= 12'h90F;
rommem[11049] <= 12'hFFF;
rommem[11050] <= 12'hFFC;
rommem[11051] <= 12'h00D;
rommem[11052] <= 12'h121;
rommem[11053] <= 12'h02A;
rommem[11054] <= 12'h00B;
rommem[11055] <= 12'h096;
rommem[11056] <= 12'h121;
rommem[11057] <= 12'h084;
rommem[11058] <= 12'h7FF;
rommem[11059] <= 12'h097;
rommem[11060] <= 12'h121;
rommem[11061] <= 12'h08E;
rommem[11062] <= 12'hFFE;
rommem[11063] <= 12'h800;
rommem[11064] <= 12'h020;
rommem[11065] <= 12'h017;
rommem[11066] <= 12'h096;
rommem[11067] <= 12'h121;
rommem[11068] <= 12'h085;
rommem[11069] <= 12'h004;
rommem[11070] <= 12'h027;
rommem[11071] <= 12'h005;
rommem[11072] <= 12'h08E;
rommem[11073] <= 12'hFFE;
rommem[11074] <= 12'h780;
rommem[11075] <= 12'h020;
rommem[11076] <= 12'h00C;
rommem[11077] <= 12'h085;
rommem[11078] <= 12'h001;
rommem[11079] <= 12'h027;
rommem[11080] <= 12'h005;
rommem[11081] <= 12'h08E;
rommem[11082] <= 12'hFFE;
rommem[11083] <= 12'h680;
rommem[11084] <= 12'h020;
rommem[11085] <= 12'h003;
rommem[11086] <= 12'h08E;
rommem[11087] <= 12'hFFE;
rommem[11088] <= 12'h580;
rommem[11089] <= 12'h0E6;
rommem[11090] <= 12'h90F;
rommem[11091] <= 12'hFFE;
rommem[11092] <= 12'h580;
rommem[11093] <= 12'h04F;
rommem[11094] <= 12'h035;
rommem[11095] <= 12'h0B0;
rommem[11096] <= 12'h04B;
rommem[11097] <= 12'h045;
rommem[11098] <= 12'h059;
rommem[11099] <= 12'h042;
rommem[11100] <= 12'h04F;
rommem[11101] <= 12'h041;
rommem[11102] <= 12'h052;
rommem[11103] <= 12'h044;
rommem[11104] <= 12'hFFE;
rommem[11105] <= 12'hB6A;
rommem[11106] <= 12'hFFE;
rommem[11107] <= 12'hB6B;
rommem[11108] <= 12'hFFE;
rommem[11109] <= 12'hB6C;
rommem[11110] <= 12'hFFE;
rommem[11111] <= 12'hB6D;
rommem[11112] <= 12'hFFE;
rommem[11113] <= 12'hB6E;
rommem[11114] <= 12'h039;
rommem[11115] <= 12'h039;
rommem[11116] <= 12'h039;
rommem[11117] <= 12'h039;
rommem[11118] <= 12'h039;
rommem[11119] <= 12'h04F;
rommem[11120] <= 12'h05F;
rommem[11121] <= 12'h0DD;
rommem[11122] <= 12'h130;
rommem[11123] <= 12'h0DD;
rommem[11124] <= 12'h132;
rommem[11125] <= 12'h0DD;
rommem[11126] <= 12'h135;
rommem[11127] <= 12'h0DD;
rommem[11128] <= 12'h137;
rommem[11129] <= 12'h00F;
rommem[11130] <= 12'h139;
rommem[11131] <= 12'h00F;
rommem[11132] <= 12'h140;
rommem[11133] <= 12'h015;
rommem[11134] <= 12'h0B6;
rommem[11135] <= 12'hFFF;
rommem[11136] <= 12'hFFF;
rommem[11137] <= 12'hFE0;
rommem[11138] <= 12'h0B1;
rommem[11139] <= 12'hFF0;
rommem[11140] <= 12'h010;
rommem[11141] <= 12'h026;
rommem[11142] <= 12'hFFB;
rommem[11143] <= 12'h0C6;
rommem[11144] <= 12'h009;
rommem[11145] <= 12'h015;
rommem[11146] <= 12'h0F7;
rommem[11147] <= 12'hFFF;
rommem[11148] <= 12'hE30;
rommem[11149] <= 12'h102;
rommem[11150] <= 12'h0C6;
rommem[11151] <= 12'h01E;
rommem[11152] <= 12'h015;
rommem[11153] <= 12'h0F7;
rommem[11154] <= 12'hFFF;
rommem[11155] <= 12'hE30;
rommem[11156] <= 12'h103;
rommem[11157] <= 12'h0C6;
rommem[11158] <= 12'h0A6;
rommem[11159] <= 12'h015;
rommem[11160] <= 12'h0F7;
rommem[11161] <= 12'hFFF;
rommem[11162] <= 12'hE30;
rommem[11163] <= 12'h10B;
rommem[11164] <= 12'h039;
rommem[11165] <= 12'h034;
rommem[11166] <= 12'h030;
rommem[11167] <= 12'h18E;
rommem[11168] <= 12'h000;
rommem[11169] <= 12'h000;
rommem[11170] <= 12'h01A;
rommem[11171] <= 12'h010;
rommem[11172] <= 12'h08D;
rommem[11173] <= 12'h082;
rommem[11174] <= 12'h0C1;
rommem[11175] <= 12'h008;
rommem[11176] <= 12'h022;
rommem[11177] <= 12'h00C;
rommem[11178] <= 12'h0D6;
rommem[11179] <= 12'h139;
rommem[11180] <= 12'h026;
rommem[11181] <= 12'h008;
rommem[11182] <= 12'h0C6;
rommem[11183] <= 12'h011;
rommem[11184] <= 12'h00F;
rommem[11185] <= 12'h140;
rommem[11186] <= 12'h0D7;
rommem[11187] <= 12'h139;
rommem[11188] <= 12'h08D;
rommem[11189] <= 12'h052;
rommem[11190] <= 12'h0D6;
rommem[11191] <= 12'h131;
rommem[11192] <= 12'h0D1;
rommem[11193] <= 12'h133;
rommem[11194] <= 12'h027;
rommem[11195] <= 12'h00A;
rommem[11196] <= 12'h08E;
rommem[11197] <= 12'hBFF;
rommem[11198] <= 12'h000;
rommem[11199] <= 12'h04F;
rommem[11200] <= 12'h0E6;
rommem[11201] <= 12'h835;
rommem[11202] <= 12'h00C;
rommem[11203] <= 12'h131;
rommem[11204] <= 12'h020;
rommem[11205] <= 12'h003;
rommem[11206] <= 12'h0CC;
rommem[11207] <= 12'hFFF;
rommem[11208] <= 12'hFFF;
rommem[11209] <= 12'h01C;
rommem[11210] <= 12'h0EF;
rommem[11211] <= 12'h035;
rommem[11212] <= 12'h0B0;
rommem[11213] <= 12'h034;
rommem[11214] <= 12'h011;
rommem[11215] <= 12'h01A;
rommem[11216] <= 12'h010;
rommem[11217] <= 12'h0D6;
rommem[11218] <= 12'h131;
rommem[11219] <= 12'h0D1;
rommem[11220] <= 12'h133;
rommem[11221] <= 12'h027;
rommem[11222] <= 12'h008;
rommem[11223] <= 12'h08E;
rommem[11224] <= 12'hBFF;
rommem[11225] <= 12'h000;
rommem[11226] <= 12'h04F;
rommem[11227] <= 12'h0E6;
rommem[11228] <= 12'h815;
rommem[11229] <= 12'h020;
rommem[11230] <= 12'h003;
rommem[11231] <= 12'h0CC;
rommem[11232] <= 12'hFFF;
rommem[11233] <= 12'hFFF;
rommem[11234] <= 12'h035;
rommem[11235] <= 12'h091;
rommem[11236] <= 12'h015;
rommem[11237] <= 12'h0B6;
rommem[11238] <= 12'hFFF;
rommem[11239] <= 12'hFFF;
rommem[11240] <= 12'hFE0;
rommem[11241] <= 12'h0B1;
rommem[11242] <= 12'hFF0;
rommem[11243] <= 12'h010;
rommem[11244] <= 12'h026;
rommem[11245] <= 12'h014;
rommem[11246] <= 12'h01A;
rommem[11247] <= 12'h010;
rommem[11248] <= 12'h015;
rommem[11249] <= 12'h0F6;
rommem[11250] <= 12'hFFF;
rommem[11251] <= 12'hE30;
rommem[11252] <= 12'h101;
rommem[11253] <= 12'h0C5;
rommem[11254] <= 12'h008;
rommem[11255] <= 12'h027;
rommem[11256] <= 12'h009;
rommem[11257] <= 12'h04F;
rommem[11258] <= 12'h015;
rommem[11259] <= 12'h0F6;
rommem[11260] <= 12'hFFF;
rommem[11261] <= 12'hE30;
rommem[11262] <= 12'h100;
rommem[11263] <= 12'h01C;
rommem[11264] <= 12'h0EF;
rommem[11265] <= 12'h039;
rommem[11266] <= 12'h0CC;
rommem[11267] <= 12'hFFF;
rommem[11268] <= 12'hFFF;
rommem[11269] <= 12'h01C;
rommem[11270] <= 12'h0EF;
rommem[11271] <= 12'h039;
rommem[11272] <= 12'h034;
rommem[11273] <= 12'h003;
rommem[11274] <= 12'h015;
rommem[11275] <= 12'h0B6;
rommem[11276] <= 12'hFFF;
rommem[11277] <= 12'hFFF;
rommem[11278] <= 12'hFE0;
rommem[11279] <= 12'h0B1;
rommem[11280] <= 12'hFF0;
rommem[11281] <= 12'h010;
rommem[11282] <= 12'h026;
rommem[11283] <= 12'hFF6;
rommem[11284] <= 12'h01C;
rommem[11285] <= 12'h0EF;
rommem[11286] <= 12'h01A;
rommem[11287] <= 12'h010;
rommem[11288] <= 12'h015;
rommem[11289] <= 12'h0B6;
rommem[11290] <= 12'hFFF;
rommem[11291] <= 12'hE30;
rommem[11292] <= 12'h101;
rommem[11293] <= 12'h085;
rommem[11294] <= 12'h010;
rommem[11295] <= 12'h027;
rommem[11296] <= 12'hFE9;
rommem[11297] <= 12'h015;
rommem[11298] <= 12'h0F7;
rommem[11299] <= 12'hFFF;
rommem[11300] <= 12'hE30;
rommem[11301] <= 12'h100;
rommem[11302] <= 12'h035;
rommem[11303] <= 12'h083;
rommem[11304] <= 12'h04F;
rommem[11305] <= 12'h0E6;
rommem[11306] <= 12'hA08;
rommem[11307] <= 12'h133;
rommem[11308] <= 12'h0E0;
rommem[11309] <= 12'hA08;
rommem[11310] <= 12'h131;
rommem[11311] <= 12'h02C;
rommem[11312] <= 12'h009;
rommem[11313] <= 12'h0CC;
rommem[11314] <= 12'h001;
rommem[11315] <= 12'h000;
rommem[11316] <= 12'h0A3;
rommem[11317] <= 12'hA08;
rommem[11318] <= 12'h131;
rommem[11319] <= 12'h0E3;
rommem[11320] <= 12'hA08;
rommem[11321] <= 12'h133;
rommem[11322] <= 12'h039;
rommem[11323] <= 12'h015;
rommem[11324] <= 12'h0F6;
rommem[11325] <= 12'hFFF;
rommem[11326] <= 12'hE30;
rommem[11327] <= 12'h101;
rommem[11328] <= 12'h0C5;
rommem[11329] <= 12'h008;
rommem[11330] <= 12'h027;
rommem[11331] <= 12'h049;
rommem[11332] <= 12'h015;
rommem[11333] <= 12'h0F6;
rommem[11334] <= 12'hFFF;
rommem[11335] <= 12'hE30;
rommem[11336] <= 12'h100;
rommem[11337] <= 12'h0C1;
rommem[11338] <= 12'h014;
rommem[11339] <= 12'h026;
rommem[11340] <= 12'h000;
rommem[11341] <= 12'h034;
rommem[11342] <= 12'h004;
rommem[11343] <= 12'h0B6;
rommem[11344] <= 12'hFF0;
rommem[11345] <= 12'h010;
rommem[11346] <= 12'h048;
rommem[11347] <= 12'h048;
rommem[11348] <= 12'h048;
rommem[11349] <= 12'h048;
rommem[11350] <= 12'h08A;
rommem[11351] <= 12'hC00;
rommem[11352] <= 12'h05F;
rommem[11353] <= 12'h01F;
rommem[11354] <= 12'h002;
rommem[11355] <= 12'h035;
rommem[11356] <= 12'h004;
rommem[11357] <= 12'h0A6;
rommem[11358] <= 12'hA08;
rommem[11359] <= 12'h133;
rommem[11360] <= 12'h04C;
rommem[11361] <= 12'h0A1;
rommem[11362] <= 12'hA08;
rommem[11363] <= 12'h131;
rommem[11364] <= 12'h027;
rommem[11365] <= 12'h027;
rommem[11366] <= 12'h0A7;
rommem[11367] <= 12'hA08;
rommem[11368] <= 12'h133;
rommem[11369] <= 12'h04A;
rommem[11370] <= 12'h01E;
rommem[11371] <= 12'h089;
rommem[11372] <= 12'h030;
rommem[11373] <= 12'hA0A;
rommem[11374] <= 12'h000;
rommem[11375] <= 12'hBFF;
rommem[11376] <= 12'h000;
rommem[11377] <= 12'h0A7;
rommem[11378] <= 12'hA0F;
rommem[11379] <= 12'h06D;
rommem[11380] <= 12'hA08;
rommem[11381] <= 12'h140;
rommem[11382] <= 12'h026;
rommem[11383] <= 12'hFC3;
rommem[11384] <= 12'h08D;
rommem[11385] <= 12'hFAE;
rommem[11386] <= 12'h0C1;
rommem[11387] <= 12'hFF0;
rommem[11388] <= 12'h025;
rommem[11389] <= 12'hFBD;
rommem[11390] <= 12'h0C6;
rommem[11391] <= 12'h013;
rommem[11392] <= 12'h06F;
rommem[11393] <= 12'hA08;
rommem[11394] <= 12'h139;
rommem[11395] <= 12'h0E7;
rommem[11396] <= 12'hA08;
rommem[11397] <= 12'h140;
rommem[11398] <= 12'h015;
rommem[11399] <= 12'h0F7;
rommem[11400] <= 12'hFFF;
rommem[11401] <= 12'hE30;
rommem[11402] <= 12'h100;
rommem[11403] <= 12'h020;
rommem[11404] <= 12'hFAE;
rommem[11405] <= 12'h039;
rommem[11406] <= 12'h053;
rommem[11407] <= 12'h065;
rommem[11408] <= 12'h072;
rommem[11409] <= 12'h069;
rommem[11410] <= 12'h061;
rommem[11411] <= 12'h06C;
rommem[11412] <= 12'h000;
rommem[11413] <= 12'h034;
rommem[11414] <= 12'h016;
rommem[11415] <= 12'h01F;
rommem[11416] <= 12'h001;
rommem[11417] <= 12'h0E6;
rommem[11418] <= 12'h804;
rommem[11419] <= 12'h027;
rommem[11420] <= 12'h006;
rommem[11421] <= 12'h030;
rommem[11422] <= 12'h001;
rommem[11423] <= 12'h08D;
rommem[11424] <= 12'hF67;
rommem[11425] <= 12'h020;
rommem[11426] <= 12'hFF6;
rommem[11427] <= 12'h035;
rommem[11428] <= 12'h096;
rommem[11429] <= 12'h034;
rommem[11430] <= 12'h006;
rommem[11431] <= 12'h0CC;
rommem[11432] <= 12'hFFE;
rommem[11433] <= 12'hCC5;
rommem[11434] <= 12'h017;
rommem[11435] <= 12'hFFF;
rommem[11436] <= 12'h6F5;
rommem[11437] <= 12'h08D;
rommem[11438] <= 12'hEC0;
rommem[11439] <= 12'h0C6;
rommem[11440] <= 12'h011;
rommem[11441] <= 12'h08D;
rommem[11442] <= 12'hF55;
rommem[11443] <= 12'h08D;
rommem[11444] <= 12'hF53;
rommem[11445] <= 12'h08D;
rommem[11446] <= 12'hF51;
rommem[11447] <= 12'h0CC;
rommem[11448] <= 12'hFFE;
rommem[11449] <= 12'hCC5;
rommem[11450] <= 12'h08D;
rommem[11451] <= 12'hFD9;
rommem[11452] <= 12'h017;
rommem[11453] <= 12'h000;
rommem[11454] <= 12'h01B;
rommem[11455] <= 12'h0C1;
rommem[11456] <= 12'h003;
rommem[11457] <= 12'h026;
rommem[11458] <= 12'hFEC;
rommem[11459] <= 12'h035;
rommem[11460] <= 12'h086;
rommem[11461] <= 12'h053;
rommem[11462] <= 12'h065;
rommem[11463] <= 12'h072;
rommem[11464] <= 12'h069;
rommem[11465] <= 12'h061;
rommem[11466] <= 12'h06C;
rommem[11467] <= 12'h020;
rommem[11468] <= 12'h070;
rommem[11469] <= 12'h06F;
rommem[11470] <= 12'h072;
rommem[11471] <= 12'h074;
rommem[11472] <= 12'h020;
rommem[11473] <= 12'h074;
rommem[11474] <= 12'h065;
rommem[11475] <= 12'h073;
rommem[11476] <= 12'h074;
rommem[11477] <= 12'h00D;
rommem[11478] <= 12'h00A;
rommem[11479] <= 12'h000;
rommem[11480] <= 12'h020;
rommem[11481] <= 12'hD36;
rommem[11482] <= 12'h034;
rommem[11483] <= 12'h004;
rommem[11484] <= 12'h015;
rommem[11485] <= 12'h0F6;
rommem[11486] <= 12'hFFF;
rommem[11487] <= 12'hFFF;
rommem[11488] <= 12'hFE0;
rommem[11489] <= 12'h0F1;
rommem[11490] <= 12'hFF0;
rommem[11491] <= 12'h010;
rommem[11492] <= 12'h026;
rommem[11493] <= 12'hFF6;
rommem[11494] <= 12'h017;
rommem[11495] <= 12'hFFF;
rommem[11496] <= 12'hEFB;
rommem[11497] <= 12'h04D;
rommem[11498] <= 12'h02B;
rommem[11499] <= 12'h003;
rommem[11500] <= 12'h032;
rommem[11501] <= 12'h601;
rommem[11502] <= 12'h039;
rommem[11503] <= 12'h035;
rommem[11504] <= 12'h004;
rommem[11505] <= 12'h05D;
rommem[11506] <= 12'h02B;
rommem[11507] <= 12'hFE6;
rommem[11508] <= 12'h0CC;
rommem[11509] <= 12'hFFF;
rommem[11510] <= 12'hFFF;
rommem[11511] <= 12'h039;
rommem[11512] <= 12'h08D;
rommem[11513] <= 12'hFE0;
rommem[11514] <= 12'h020;
rommem[11515] <= 12'h009;
rommem[11516] <= 12'h08D;
rommem[11517] <= 12'hFDC;
rommem[11518] <= 12'h015;
rommem[11519] <= 12'h07D;
rommem[11520] <= 12'hFFF;
rommem[11521] <= 12'hFFC;
rommem[11522] <= 12'hA00;
rommem[11523] <= 12'h027;
rommem[11524] <= 12'h00C;
rommem[11525] <= 12'h081;
rommem[11526] <= 12'h00D;
rommem[11527] <= 12'h026;
rommem[11528] <= 12'h005;
rommem[11529] <= 12'h017;
rommem[11530] <= 12'hFFE;
rommem[11531] <= 12'h3C6;
rommem[11532] <= 12'h020;
rommem[11533] <= 12'h003;
rommem[11534] <= 12'h017;
rommem[11535] <= 12'hFFF;
rommem[11536] <= 12'h5D0;
rommem[11537] <= 12'h039;
rommem[11538] <= 12'h06E;
rommem[11539] <= 12'h90F;
rommem[11540] <= 12'h000;
rommem[11541] <= 12'h800;
rommem[11542] <= 12'h015;
rommem[11543] <= 12'h0F7;
rommem[11544] <= 12'hFFF;
rommem[11545] <= 12'hFFC;
rommem[11546] <= 12'hA00;
rommem[11547] <= 12'h039;
rommem[11548] <= 12'h015;
rommem[11549] <= 12'h0BF;
rommem[11550] <= 12'hFFF;
rommem[11551] <= 12'hE10;
rommem[11552] <= 12'h3C0;
rommem[11553] <= 12'h015;
rommem[11554] <= 12'h0FD;
rommem[11555] <= 12'hFFF;
rommem[11556] <= 12'hE10;
rommem[11557] <= 12'h3C2;
rommem[11558] <= 12'h039;
rommem[11559] <= 12'h000;
rommem[11560] <= 12'h000;
rommem[11561] <= 12'h000;
rommem[11562] <= 12'h000;
rommem[11563] <= 12'h000;
rommem[11564] <= 12'h000;
rommem[11565] <= 12'h000;
rommem[11566] <= 12'h000;
rommem[11567] <= 12'h000;
rommem[11568] <= 12'h000;
rommem[11569] <= 12'h000;
rommem[11570] <= 12'h000;
rommem[11571] <= 12'h000;
rommem[11572] <= 12'h000;
rommem[11573] <= 12'h000;
rommem[11574] <= 12'h000;
rommem[11575] <= 12'h000;
rommem[11576] <= 12'h000;
rommem[11577] <= 12'h000;
rommem[11578] <= 12'h000;
rommem[11579] <= 12'h000;
rommem[11580] <= 12'h000;
rommem[11581] <= 12'h000;
rommem[11582] <= 12'h000;
rommem[11583] <= 12'h000;
rommem[11584] <= 12'h000;
rommem[11585] <= 12'h000;
rommem[11586] <= 12'h000;
rommem[11587] <= 12'h000;
rommem[11588] <= 12'h000;
rommem[11589] <= 12'h000;
rommem[11590] <= 12'h000;
rommem[11591] <= 12'h000;
rommem[11592] <= 12'h000;
rommem[11593] <= 12'h000;
rommem[11594] <= 12'h000;
rommem[11595] <= 12'h000;
rommem[11596] <= 12'h000;
rommem[11597] <= 12'h000;
rommem[11598] <= 12'h000;
rommem[11599] <= 12'h000;
rommem[11600] <= 12'h000;
rommem[11601] <= 12'h000;
rommem[11602] <= 12'h000;
rommem[11603] <= 12'hFFE;
rommem[11604] <= 12'hD84;
rommem[11605] <= 12'h000;
rommem[11606] <= 12'h000;
rommem[11607] <= 12'hFFE;
rommem[11608] <= 12'hD6D;
rommem[11609] <= 12'h07D;
rommem[11610] <= 12'hEF0;
rommem[11611] <= 12'h011;
rommem[11612] <= 12'h027;
rommem[11613] <= 12'hFFB;
rommem[11614] <= 12'h058;
rommem[11615] <= 12'h08E;
rommem[11616] <= 12'hFFE;
rommem[11617] <= 12'hD27;
rommem[11618] <= 12'h03A;
rommem[11619] <= 12'h06D;
rommem[11620] <= 12'h804;
rommem[11621] <= 12'h027;
rommem[11622] <= 12'h002;
rommem[11623] <= 12'h06E;
rommem[11624] <= 12'h904;
rommem[11625] <= 12'h07F;
rommem[11626] <= 12'hEF0;
rommem[11627] <= 12'h011;
rommem[11628] <= 12'h039;
rommem[11629] <= 12'h015;
rommem[11630] <= 12'h0F6;
rommem[11631] <= 12'hFFF;
rommem[11632] <= 12'hFFF;
rommem[11633] <= 12'hFE0;
rommem[11634] <= 12'h08E;
rommem[11635] <= 12'hFF0;
rommem[11636] <= 12'h000;
rommem[11637] <= 12'h03A;
rommem[11638] <= 12'h0A7;
rommem[11639] <= 12'h804;
rommem[11640] <= 12'h07D;
rommem[11641] <= 12'hFF0;
rommem[11642] <= 12'h010;
rommem[11643] <= 12'h126;
rommem[11644] <= 12'hFFF;
rommem[11645] <= 12'hFEB;
rommem[11646] <= 12'h0F7;
rommem[11647] <= 12'hFF0;
rommem[11648] <= 12'h010;
rommem[11649] <= 12'h016;
rommem[11650] <= 12'hFFF;
rommem[11651] <= 12'hFE5;
rommem[11652] <= 12'h015;
rommem[11653] <= 12'h0F6;
rommem[11654] <= 12'hFFF;
rommem[11655] <= 12'hFFF;
rommem[11656] <= 12'hFE0;
rommem[11657] <= 12'h08E;
rommem[11658] <= 12'hFF0;
rommem[11659] <= 12'h000;
rommem[11660] <= 12'h03A;
rommem[11661] <= 12'h06F;
rommem[11662] <= 12'h804;
rommem[11663] <= 12'h017;
rommem[11664] <= 12'hFFF;
rommem[11665] <= 12'h44F;
rommem[11666] <= 12'h0F1;
rommem[11667] <= 12'hFF0;
rommem[11668] <= 12'h010;
rommem[11669] <= 12'h126;
rommem[11670] <= 12'hFFF;
rommem[11671] <= 12'hFD1;
rommem[11672] <= 12'h086;
rommem[11673] <= 12'h00F;
rommem[11674] <= 12'h05C;
rommem[11675] <= 12'h0C4;
rommem[11676] <= 12'h00F;
rommem[11677] <= 12'h03A;
rommem[11678] <= 12'h06D;
rommem[11679] <= 12'h804;
rommem[11680] <= 12'h026;
rommem[11681] <= 12'h009;
rommem[11682] <= 12'h04A;
rommem[11683] <= 12'h026;
rommem[11684] <= 12'hFF5;
rommem[11685] <= 12'h0C6;
rommem[11686] <= 12'h001;
rommem[11687] <= 12'h086;
rommem[11688] <= 12'h018;
rommem[11689] <= 12'h0A7;
rommem[11690] <= 12'h804;
rommem[11691] <= 12'h0F7;
rommem[11692] <= 12'hFF0;
rommem[11693] <= 12'h010;
rommem[11694] <= 12'h017;
rommem[11695] <= 12'hFFF;
rommem[11696] <= 12'h3F9;
rommem[11697] <= 12'h016;
rommem[11698] <= 12'hFFF;
rommem[11699] <= 12'hFB5;
rommem[11700] <= 12'h04E;
rommem[11701] <= 12'h045;
rommem[11702] <= 12'h047;
rommem[11703] <= 12'h020;
rommem[11704] <= 12'h001;
rommem[11705] <= 12'h020;
rommem[11706] <= 12'h020;
rommem[11707] <= 12'h020;
rommem[11708] <= 12'h020;
rommem[11709] <= 12'h000;
rommem[11710] <= 12'h020;
rommem[11711] <= 12'h020;
rommem[11712] <= 12'h020;
rommem[11713] <= 12'h020;
rommem[11714] <= 12'h000;
rommem[11715] <= 12'h043;
rommem[11716] <= 12'h04F;
rommem[11717] <= 12'h04D;
rommem[11718] <= 12'h020;
rommem[11719] <= 12'h001;
rommem[11720] <= 12'h04C;
rommem[11721] <= 12'h053;
rommem[11722] <= 12'h052;
rommem[11723] <= 12'h020;
rommem[11724] <= 12'h001;
rommem[11725] <= 12'h020;
rommem[11726] <= 12'h020;
rommem[11727] <= 12'h020;
rommem[11728] <= 12'h020;
rommem[11729] <= 12'h000;
rommem[11730] <= 12'h052;
rommem[11731] <= 12'h04F;
rommem[11732] <= 12'h052;
rommem[11733] <= 12'h020;
rommem[11734] <= 12'h001;
rommem[11735] <= 12'h041;
rommem[11736] <= 12'h053;
rommem[11737] <= 12'h052;
rommem[11738] <= 12'h020;
rommem[11739] <= 12'h001;
rommem[11740] <= 12'h041;
rommem[11741] <= 12'h053;
rommem[11742] <= 12'h04C;
rommem[11743] <= 12'h020;
rommem[11744] <= 12'h001;
rommem[11745] <= 12'h052;
rommem[11746] <= 12'h04F;
rommem[11747] <= 12'h04C;
rommem[11748] <= 12'h020;
rommem[11749] <= 12'h001;
rommem[11750] <= 12'h044;
rommem[11751] <= 12'h045;
rommem[11752] <= 12'h043;
rommem[11753] <= 12'h020;
rommem[11754] <= 12'h001;
rommem[11755] <= 12'h020;
rommem[11756] <= 12'h020;
rommem[11757] <= 12'h020;
rommem[11758] <= 12'h020;
rommem[11759] <= 12'h000;
rommem[11760] <= 12'h049;
rommem[11761] <= 12'h04E;
rommem[11762] <= 12'h043;
rommem[11763] <= 12'h020;
rommem[11764] <= 12'h001;
rommem[11765] <= 12'h054;
rommem[11766] <= 12'h053;
rommem[11767] <= 12'h054;
rommem[11768] <= 12'h020;
rommem[11769] <= 12'h001;
rommem[11770] <= 12'h04A;
rommem[11771] <= 12'h04D;
rommem[11772] <= 12'h050;
rommem[11773] <= 12'h020;
rommem[11774] <= 12'h001;
rommem[11775] <= 12'h043;
rommem[11776] <= 12'h04C;
rommem[11777] <= 12'h052;
rommem[11778] <= 12'h020;
rommem[11779] <= 12'h001;
rommem[11780] <= 12'h020;
rommem[11781] <= 12'h020;
rommem[11782] <= 12'h020;
rommem[11783] <= 12'h020;
rommem[11784] <= 12'h000;
rommem[11785] <= 12'h020;
rommem[11786] <= 12'h020;
rommem[11787] <= 12'h020;
rommem[11788] <= 12'h020;
rommem[11789] <= 12'h000;
rommem[11790] <= 12'h04E;
rommem[11791] <= 12'h04F;
rommem[11792] <= 12'h050;
rommem[11793] <= 12'h020;
rommem[11794] <= 12'h000;
rommem[11795] <= 12'h053;
rommem[11796] <= 12'h059;
rommem[11797] <= 12'h04E;
rommem[11798] <= 12'h043;
rommem[11799] <= 12'h000;
rommem[11800] <= 12'h020;
rommem[11801] <= 12'h020;
rommem[11802] <= 12'h020;
rommem[11803] <= 12'h020;
rommem[11804] <= 12'h000;
rommem[11805] <= 12'h046;
rommem[11806] <= 12'h041;
rommem[11807] <= 12'h052;
rommem[11808] <= 12'h020;
rommem[11809] <= 12'h000;
rommem[11810] <= 12'h04C;
rommem[11811] <= 12'h042;
rommem[11812] <= 12'h052;
rommem[11813] <= 12'h041;
rommem[11814] <= 12'h002;
rommem[11815] <= 12'h04C;
rommem[11816] <= 12'h042;
rommem[11817] <= 12'h053;
rommem[11818] <= 12'h052;
rommem[11819] <= 12'h002;
rommem[11820] <= 12'h020;
rommem[11821] <= 12'h020;
rommem[11822] <= 12'h020;
rommem[11823] <= 12'h020;
rommem[11824] <= 12'h000;
rommem[11825] <= 12'h044;
rommem[11826] <= 12'h041;
rommem[11827] <= 12'h041;
rommem[11828] <= 12'h020;
rommem[11829] <= 12'h000;
rommem[11830] <= 12'h04F;
rommem[11831] <= 12'h052;
rommem[11832] <= 12'h043;
rommem[11833] <= 12'h043;
rommem[11834] <= 12'h003;
rommem[11835] <= 12'h020;
rommem[11836] <= 12'h020;
rommem[11837] <= 12'h020;
rommem[11838] <= 12'h020;
rommem[11839] <= 12'h000;
rommem[11840] <= 12'h041;
rommem[11841] <= 12'h04E;
rommem[11842] <= 12'h044;
rommem[11843] <= 12'h043;
rommem[11844] <= 12'h003;
rommem[11845] <= 12'h053;
rommem[11846] <= 12'h045;
rommem[11847] <= 12'h058;
rommem[11848] <= 12'h020;
rommem[11849] <= 12'h000;
rommem[11850] <= 12'h045;
rommem[11851] <= 12'h058;
rommem[11852] <= 12'h047;
rommem[11853] <= 12'h020;
rommem[11854] <= 12'h003;
rommem[11855] <= 12'h054;
rommem[11856] <= 12'h046;
rommem[11857] <= 12'h052;
rommem[11858] <= 12'h020;
rommem[11859] <= 12'h003;
rommem[11860] <= 12'h042;
rommem[11861] <= 12'h052;
rommem[11862] <= 12'h041;
rommem[11863] <= 12'h020;
rommem[11864] <= 12'h004;
rommem[11865] <= 12'h042;
rommem[11866] <= 12'h052;
rommem[11867] <= 12'h04E;
rommem[11868] <= 12'h020;
rommem[11869] <= 12'h004;
rommem[11870] <= 12'h042;
rommem[11871] <= 12'h048;
rommem[11872] <= 12'h049;
rommem[11873] <= 12'h020;
rommem[11874] <= 12'h004;
rommem[11875] <= 12'h042;
rommem[11876] <= 12'h04C;
rommem[11877] <= 12'h053;
rommem[11878] <= 12'h020;
rommem[11879] <= 12'h004;
rommem[11880] <= 12'h042;
rommem[11881] <= 12'h048;
rommem[11882] <= 12'h053;
rommem[11883] <= 12'h020;
rommem[11884] <= 12'h004;
rommem[11885] <= 12'h042;
rommem[11886] <= 12'h04C;
rommem[11887] <= 12'h04F;
rommem[11888] <= 12'h020;
rommem[11889] <= 12'h004;
rommem[11890] <= 12'h042;
rommem[11891] <= 12'h04E;
rommem[11892] <= 12'h045;
rommem[11893] <= 12'h020;
rommem[11894] <= 12'h004;
rommem[11895] <= 12'h042;
rommem[11896] <= 12'h045;
rommem[11897] <= 12'h051;
rommem[11898] <= 12'h020;
rommem[11899] <= 12'h004;
rommem[11900] <= 12'h042;
rommem[11901] <= 12'h056;
rommem[11902] <= 12'h043;
rommem[11903] <= 12'h020;
rommem[11904] <= 12'h004;
rommem[11905] <= 12'h042;
rommem[11906] <= 12'h056;
rommem[11907] <= 12'h053;
rommem[11908] <= 12'h020;
rommem[11909] <= 12'h004;
rommem[11910] <= 12'h042;
rommem[11911] <= 12'h050;
rommem[11912] <= 12'h04C;
rommem[11913] <= 12'h020;
rommem[11914] <= 12'h004;
rommem[11915] <= 12'h042;
rommem[11916] <= 12'h04D;
rommem[11917] <= 12'h049;
rommem[11918] <= 12'h020;
rommem[11919] <= 12'h004;
rommem[11920] <= 12'h042;
rommem[11921] <= 12'h047;
rommem[11922] <= 12'h045;
rommem[11923] <= 12'h020;
rommem[11924] <= 12'h004;
rommem[11925] <= 12'h042;
rommem[11926] <= 12'h04C;
rommem[11927] <= 12'h054;
rommem[11928] <= 12'h020;
rommem[11929] <= 12'h004;
rommem[11930] <= 12'h042;
rommem[11931] <= 12'h047;
rommem[11932] <= 12'h054;
rommem[11933] <= 12'h020;
rommem[11934] <= 12'h004;
rommem[11935] <= 12'h042;
rommem[11936] <= 12'h04C;
rommem[11937] <= 12'h045;
rommem[11938] <= 12'h020;
rommem[11939] <= 12'h004;
rommem[11940] <= 12'h04C;
rommem[11941] <= 12'h045;
rommem[11942] <= 12'h041;
rommem[11943] <= 12'h058;
rommem[11944] <= 12'h005;
rommem[11945] <= 12'h04C;
rommem[11946] <= 12'h045;
rommem[11947] <= 12'h041;
rommem[11948] <= 12'h059;
rommem[11949] <= 12'h005;
rommem[11950] <= 12'h04C;
rommem[11951] <= 12'h045;
rommem[11952] <= 12'h041;
rommem[11953] <= 12'h053;
rommem[11954] <= 12'h005;
rommem[11955] <= 12'h04C;
rommem[11956] <= 12'h045;
rommem[11957] <= 12'h041;
rommem[11958] <= 12'h055;
rommem[11959] <= 12'h005;
rommem[11960] <= 12'h050;
rommem[11961] <= 12'h053;
rommem[11962] <= 12'h048;
rommem[11963] <= 12'h053;
rommem[11964] <= 12'h003;
rommem[11965] <= 12'h050;
rommem[11966] <= 12'h055;
rommem[11967] <= 12'h04C;
rommem[11968] <= 12'h053;
rommem[11969] <= 12'h003;
rommem[11970] <= 12'h050;
rommem[11971] <= 12'h053;
rommem[11972] <= 12'h048;
rommem[11973] <= 12'h055;
rommem[11974] <= 12'h003;
rommem[11975] <= 12'h050;
rommem[11976] <= 12'h055;
rommem[11977] <= 12'h04C;
rommem[11978] <= 12'h055;
rommem[11979] <= 12'h003;
rommem[11980] <= 12'h052;
rommem[11981] <= 12'h054;
rommem[11982] <= 12'h046;
rommem[11983] <= 12'h020;
rommem[11984] <= 12'h000;
rommem[11985] <= 12'h052;
rommem[11986] <= 12'h054;
rommem[11987] <= 12'h053;
rommem[11988] <= 12'h020;
rommem[11989] <= 12'h000;
rommem[11990] <= 12'h041;
rommem[11991] <= 12'h042;
rommem[11992] <= 12'h058;
rommem[11993] <= 12'h020;
rommem[11994] <= 12'h000;
rommem[11995] <= 12'h052;
rommem[11996] <= 12'h054;
rommem[11997] <= 12'h049;
rommem[11998] <= 12'h020;
rommem[11999] <= 12'h000;
rommem[12000] <= 12'h043;
rommem[12001] <= 12'h057;
rommem[12002] <= 12'h041;
rommem[12003] <= 12'h049;
rommem[12004] <= 12'h003;
rommem[12005] <= 12'h04D;
rommem[12006] <= 12'h055;
rommem[12007] <= 12'h04C;
rommem[12008] <= 12'h020;
rommem[12009] <= 12'h000;
rommem[12010] <= 12'h020;
rommem[12011] <= 12'h020;
rommem[12012] <= 12'h020;
rommem[12013] <= 12'h020;
rommem[12014] <= 12'h000;
rommem[12015] <= 12'h053;
rommem[12016] <= 12'h057;
rommem[12017] <= 12'h049;
rommem[12018] <= 12'h020;
rommem[12019] <= 12'h000;
rommem[12020] <= 12'h04E;
rommem[12021] <= 12'h045;
rommem[12022] <= 12'h047;
rommem[12023] <= 12'h041;
rommem[12024] <= 12'h000;
rommem[12025] <= 12'h020;
rommem[12026] <= 12'h020;
rommem[12027] <= 12'h020;
rommem[12028] <= 12'h020;
rommem[12029] <= 12'h000;
rommem[12030] <= 12'h020;
rommem[12031] <= 12'h020;
rommem[12032] <= 12'h020;
rommem[12033] <= 12'h020;
rommem[12034] <= 12'h000;
rommem[12035] <= 12'h043;
rommem[12036] <= 12'h04F;
rommem[12037] <= 12'h04D;
rommem[12038] <= 12'h041;
rommem[12039] <= 12'h000;
rommem[12040] <= 12'h04C;
rommem[12041] <= 12'h053;
rommem[12042] <= 12'h052;
rommem[12043] <= 12'h041;
rommem[12044] <= 12'h000;
rommem[12045] <= 12'h020;
rommem[12046] <= 12'h020;
rommem[12047] <= 12'h020;
rommem[12048] <= 12'h020;
rommem[12049] <= 12'h000;
rommem[12050] <= 12'h052;
rommem[12051] <= 12'h04F;
rommem[12052] <= 12'h052;
rommem[12053] <= 12'h041;
rommem[12054] <= 12'h000;
rommem[12055] <= 12'h041;
rommem[12056] <= 12'h053;
rommem[12057] <= 12'h052;
rommem[12058] <= 12'h041;
rommem[12059] <= 12'h000;
rommem[12060] <= 12'h041;
rommem[12061] <= 12'h053;
rommem[12062] <= 12'h04C;
rommem[12063] <= 12'h041;
rommem[12064] <= 12'h000;
rommem[12065] <= 12'h052;
rommem[12066] <= 12'h04F;
rommem[12067] <= 12'h04C;
rommem[12068] <= 12'h041;
rommem[12069] <= 12'h000;
rommem[12070] <= 12'h044;
rommem[12071] <= 12'h045;
rommem[12072] <= 12'h043;
rommem[12073] <= 12'h041;
rommem[12074] <= 12'h000;
rommem[12075] <= 12'h020;
rommem[12076] <= 12'h020;
rommem[12077] <= 12'h020;
rommem[12078] <= 12'h020;
rommem[12079] <= 12'h000;
rommem[12080] <= 12'h049;
rommem[12081] <= 12'h04E;
rommem[12082] <= 12'h043;
rommem[12083] <= 12'h041;
rommem[12084] <= 12'h000;
rommem[12085] <= 12'h054;
rommem[12086] <= 12'h053;
rommem[12087] <= 12'h054;
rommem[12088] <= 12'h041;
rommem[12089] <= 12'h000;
rommem[12090] <= 12'h020;
rommem[12091] <= 12'h020;
rommem[12092] <= 12'h020;
rommem[12093] <= 12'h020;
rommem[12094] <= 12'h000;
rommem[12095] <= 12'h043;
rommem[12096] <= 12'h04C;
rommem[12097] <= 12'h052;
rommem[12098] <= 12'h041;
rommem[12099] <= 12'h000;
rommem[12100] <= 12'h04E;
rommem[12101] <= 12'h045;
rommem[12102] <= 12'h047;
rommem[12103] <= 12'h042;
rommem[12104] <= 12'h000;
rommem[12105] <= 12'h020;
rommem[12106] <= 12'h020;
rommem[12107] <= 12'h020;
rommem[12108] <= 12'h020;
rommem[12109] <= 12'h000;
rommem[12110] <= 12'h020;
rommem[12111] <= 12'h020;
rommem[12112] <= 12'h020;
rommem[12113] <= 12'h020;
rommem[12114] <= 12'h000;
rommem[12115] <= 12'h043;
rommem[12116] <= 12'h04F;
rommem[12117] <= 12'h04D;
rommem[12118] <= 12'h042;
rommem[12119] <= 12'h000;
rommem[12120] <= 12'h04C;
rommem[12121] <= 12'h053;
rommem[12122] <= 12'h052;
rommem[12123] <= 12'h042;
rommem[12124] <= 12'h000;
rommem[12125] <= 12'h020;
rommem[12126] <= 12'h020;
rommem[12127] <= 12'h020;
rommem[12128] <= 12'h020;
rommem[12129] <= 12'h000;
rommem[12130] <= 12'h052;
rommem[12131] <= 12'h04F;
rommem[12132] <= 12'h052;
rommem[12133] <= 12'h042;
rommem[12134] <= 12'h000;
rommem[12135] <= 12'h041;
rommem[12136] <= 12'h053;
rommem[12137] <= 12'h052;
rommem[12138] <= 12'h042;
rommem[12139] <= 12'h000;
rommem[12140] <= 12'h041;
rommem[12141] <= 12'h053;
rommem[12142] <= 12'h04C;
rommem[12143] <= 12'h042;
rommem[12144] <= 12'h000;
rommem[12145] <= 12'h052;
rommem[12146] <= 12'h04F;
rommem[12147] <= 12'h04C;
rommem[12148] <= 12'h042;
rommem[12149] <= 12'h000;
rommem[12150] <= 12'h044;
rommem[12151] <= 12'h045;
rommem[12152] <= 12'h043;
rommem[12153] <= 12'h042;
rommem[12154] <= 12'h000;
rommem[12155] <= 12'h020;
rommem[12156] <= 12'h020;
rommem[12157] <= 12'h020;
rommem[12158] <= 12'h020;
rommem[12159] <= 12'h000;
rommem[12160] <= 12'h049;
rommem[12161] <= 12'h04E;
rommem[12162] <= 12'h043;
rommem[12163] <= 12'h042;
rommem[12164] <= 12'h000;
rommem[12165] <= 12'h054;
rommem[12166] <= 12'h053;
rommem[12167] <= 12'h054;
rommem[12168] <= 12'h042;
rommem[12169] <= 12'h000;
rommem[12170] <= 12'h020;
rommem[12171] <= 12'h020;
rommem[12172] <= 12'h020;
rommem[12173] <= 12'h020;
rommem[12174] <= 12'h000;
rommem[12175] <= 12'h043;
rommem[12176] <= 12'h04C;
rommem[12177] <= 12'h052;
rommem[12178] <= 12'h042;
rommem[12179] <= 12'h000;
rommem[12180] <= 12'h04E;
rommem[12181] <= 12'h045;
rommem[12182] <= 12'h047;
rommem[12183] <= 12'h020;
rommem[12184] <= 12'h005;
rommem[12185] <= 12'h020;
rommem[12186] <= 12'h020;
rommem[12187] <= 12'h020;
rommem[12188] <= 12'h020;
rommem[12189] <= 12'h000;
rommem[12190] <= 12'h020;
rommem[12191] <= 12'h020;
rommem[12192] <= 12'h020;
rommem[12193] <= 12'h020;
rommem[12194] <= 12'h000;
rommem[12195] <= 12'h043;
rommem[12196] <= 12'h04F;
rommem[12197] <= 12'h04D;
rommem[12198] <= 12'h020;
rommem[12199] <= 12'h005;
rommem[12200] <= 12'h04C;
rommem[12201] <= 12'h053;
rommem[12202] <= 12'h052;
rommem[12203] <= 12'h020;
rommem[12204] <= 12'h005;
rommem[12205] <= 12'h020;
rommem[12206] <= 12'h020;
rommem[12207] <= 12'h020;
rommem[12208] <= 12'h020;
rommem[12209] <= 12'h000;
rommem[12210] <= 12'h052;
rommem[12211] <= 12'h04F;
rommem[12212] <= 12'h052;
rommem[12213] <= 12'h020;
rommem[12214] <= 12'h005;
rommem[12215] <= 12'h041;
rommem[12216] <= 12'h053;
rommem[12217] <= 12'h052;
rommem[12218] <= 12'h020;
rommem[12219] <= 12'h005;
rommem[12220] <= 12'h041;
rommem[12221] <= 12'h053;
rommem[12222] <= 12'h04C;
rommem[12223] <= 12'h020;
rommem[12224] <= 12'h005;
rommem[12225] <= 12'h052;
rommem[12226] <= 12'h04F;
rommem[12227] <= 12'h04C;
rommem[12228] <= 12'h020;
rommem[12229] <= 12'h005;
rommem[12230] <= 12'h044;
rommem[12231] <= 12'h045;
rommem[12232] <= 12'h043;
rommem[12233] <= 12'h020;
rommem[12234] <= 12'h005;
rommem[12235] <= 12'h020;
rommem[12236] <= 12'h020;
rommem[12237] <= 12'h020;
rommem[12238] <= 12'h020;
rommem[12239] <= 12'h000;
rommem[12240] <= 12'h049;
rommem[12241] <= 12'h04E;
rommem[12242] <= 12'h043;
rommem[12243] <= 12'h020;
rommem[12244] <= 12'h005;
rommem[12245] <= 12'h054;
rommem[12246] <= 12'h053;
rommem[12247] <= 12'h054;
rommem[12248] <= 12'h020;
rommem[12249] <= 12'h005;
rommem[12250] <= 12'h04A;
rommem[12251] <= 12'h04D;
rommem[12252] <= 12'h050;
rommem[12253] <= 12'h020;
rommem[12254] <= 12'h005;
rommem[12255] <= 12'h043;
rommem[12256] <= 12'h04C;
rommem[12257] <= 12'h052;
rommem[12258] <= 12'h020;
rommem[12259] <= 12'h005;
rommem[12260] <= 12'h04E;
rommem[12261] <= 12'h045;
rommem[12262] <= 12'h047;
rommem[12263] <= 12'h020;
rommem[12264] <= 12'h006;
rommem[12265] <= 12'h020;
rommem[12266] <= 12'h020;
rommem[12267] <= 12'h020;
rommem[12268] <= 12'h020;
rommem[12269] <= 12'h000;
rommem[12270] <= 12'h020;
rommem[12271] <= 12'h020;
rommem[12272] <= 12'h020;
rommem[12273] <= 12'h020;
rommem[12274] <= 12'h000;
rommem[12275] <= 12'h043;
rommem[12276] <= 12'h04F;
rommem[12277] <= 12'h04D;
rommem[12278] <= 12'h020;
rommem[12279] <= 12'h006;
rommem[12280] <= 12'h04C;
rommem[12281] <= 12'h053;
rommem[12282] <= 12'h052;
rommem[12283] <= 12'h020;
rommem[12284] <= 12'h006;
rommem[12285] <= 12'h020;
rommem[12286] <= 12'h020;
rommem[12287] <= 12'h020;
rommem[12288] <= 12'h020;
rommem[12289] <= 12'h000;
rommem[12290] <= 12'h052;
rommem[12291] <= 12'h04F;
rommem[12292] <= 12'h052;
rommem[12293] <= 12'h020;
rommem[12294] <= 12'h006;
rommem[12295] <= 12'h041;
rommem[12296] <= 12'h053;
rommem[12297] <= 12'h052;
rommem[12298] <= 12'h020;
rommem[12299] <= 12'h006;
rommem[12300] <= 12'h041;
rommem[12301] <= 12'h053;
rommem[12302] <= 12'h04C;
rommem[12303] <= 12'h020;
rommem[12304] <= 12'h006;
rommem[12305] <= 12'h052;
rommem[12306] <= 12'h04F;
rommem[12307] <= 12'h04C;
rommem[12308] <= 12'h020;
rommem[12309] <= 12'h006;
rommem[12310] <= 12'h044;
rommem[12311] <= 12'h045;
rommem[12312] <= 12'h043;
rommem[12313] <= 12'h020;
rommem[12314] <= 12'h006;
rommem[12315] <= 12'h020;
rommem[12316] <= 12'h020;
rommem[12317] <= 12'h020;
rommem[12318] <= 12'h020;
rommem[12319] <= 12'h000;
rommem[12320] <= 12'h049;
rommem[12321] <= 12'h04E;
rommem[12322] <= 12'h043;
rommem[12323] <= 12'h020;
rommem[12324] <= 12'h006;
rommem[12325] <= 12'h054;
rommem[12326] <= 12'h053;
rommem[12327] <= 12'h054;
rommem[12328] <= 12'h020;
rommem[12329] <= 12'h006;
rommem[12330] <= 12'h04A;
rommem[12331] <= 12'h04D;
rommem[12332] <= 12'h050;
rommem[12333] <= 12'h020;
rommem[12334] <= 12'h006;
rommem[12335] <= 12'h043;
rommem[12336] <= 12'h04C;
rommem[12337] <= 12'h052;
rommem[12338] <= 12'h020;
rommem[12339] <= 12'h006;
rommem[12340] <= 12'h053;
rommem[12341] <= 12'h055;
rommem[12342] <= 12'h042;
rommem[12343] <= 12'h041;
rommem[12344] <= 12'h003;
rommem[12345] <= 12'h043;
rommem[12346] <= 12'h04D;
rommem[12347] <= 12'h050;
rommem[12348] <= 12'h041;
rommem[12349] <= 12'h003;
rommem[12350] <= 12'h053;
rommem[12351] <= 12'h042;
rommem[12352] <= 12'h043;
rommem[12353] <= 12'h041;
rommem[12354] <= 12'h003;
rommem[12355] <= 12'h053;
rommem[12356] <= 12'h055;
rommem[12357] <= 12'h042;
rommem[12358] <= 12'h044;
rommem[12359] <= 12'h007;
rommem[12360] <= 12'h041;
rommem[12361] <= 12'h04E;
rommem[12362] <= 12'h044;
rommem[12363] <= 12'h041;
rommem[12364] <= 12'h003;
rommem[12365] <= 12'h042;
rommem[12366] <= 12'h049;
rommem[12367] <= 12'h054;
rommem[12368] <= 12'h041;
rommem[12369] <= 12'h003;
rommem[12370] <= 12'h04C;
rommem[12371] <= 12'h044;
rommem[12372] <= 12'h041;
rommem[12373] <= 12'h020;
rommem[12374] <= 12'h003;
rommem[12375] <= 12'h020;
rommem[12376] <= 12'h020;
rommem[12377] <= 12'h020;
rommem[12378] <= 12'h020;
rommem[12379] <= 12'h000;
rommem[12380] <= 12'h045;
rommem[12381] <= 12'h04F;
rommem[12382] <= 12'h052;
rommem[12383] <= 12'h041;
rommem[12384] <= 12'h003;
rommem[12385] <= 12'h041;
rommem[12386] <= 12'h044;
rommem[12387] <= 12'h043;
rommem[12388] <= 12'h041;
rommem[12389] <= 12'h003;
rommem[12390] <= 12'h04F;
rommem[12391] <= 12'h052;
rommem[12392] <= 12'h041;
rommem[12393] <= 12'h020;
rommem[12394] <= 12'h003;
rommem[12395] <= 12'h041;
rommem[12396] <= 12'h044;
rommem[12397] <= 12'h044;
rommem[12398] <= 12'h041;
rommem[12399] <= 12'h003;
rommem[12400] <= 12'h043;
rommem[12401] <= 12'h04D;
rommem[12402] <= 12'h050;
rommem[12403] <= 12'h058;
rommem[12404] <= 12'h007;
rommem[12405] <= 12'h042;
rommem[12406] <= 12'h053;
rommem[12407] <= 12'h052;
rommem[12408] <= 12'h020;
rommem[12409] <= 12'h004;
rommem[12410] <= 12'h04C;
rommem[12411] <= 12'h044;
rommem[12412] <= 12'h058;
rommem[12413] <= 12'h020;
rommem[12414] <= 12'h007;
rommem[12415] <= 12'h04A;
rommem[12416] <= 12'h04D;
rommem[12417] <= 12'h046;
rommem[12418] <= 12'h020;
rommem[12419] <= 12'h008;
rommem[12420] <= 12'h053;
rommem[12421] <= 12'h055;
rommem[12422] <= 12'h042;
rommem[12423] <= 12'h041;
rommem[12424] <= 12'h001;
rommem[12425] <= 12'h043;
rommem[12426] <= 12'h04D;
rommem[12427] <= 12'h050;
rommem[12428] <= 12'h041;
rommem[12429] <= 12'h001;
rommem[12430] <= 12'h053;
rommem[12431] <= 12'h042;
rommem[12432] <= 12'h043;
rommem[12433] <= 12'h041;
rommem[12434] <= 12'h001;
rommem[12435] <= 12'h053;
rommem[12436] <= 12'h055;
rommem[12437] <= 12'h042;
rommem[12438] <= 12'h044;
rommem[12439] <= 12'h001;
rommem[12440] <= 12'h041;
rommem[12441] <= 12'h04E;
rommem[12442] <= 12'h044;
rommem[12443] <= 12'h041;
rommem[12444] <= 12'h001;
rommem[12445] <= 12'h042;
rommem[12446] <= 12'h049;
rommem[12447] <= 12'h054;
rommem[12448] <= 12'h041;
rommem[12449] <= 12'h001;
rommem[12450] <= 12'h04C;
rommem[12451] <= 12'h044;
rommem[12452] <= 12'h041;
rommem[12453] <= 12'h020;
rommem[12454] <= 12'h001;
rommem[12455] <= 12'h053;
rommem[12456] <= 12'h054;
rommem[12457] <= 12'h041;
rommem[12458] <= 12'h020;
rommem[12459] <= 12'h001;
rommem[12460] <= 12'h045;
rommem[12461] <= 12'h04F;
rommem[12462] <= 12'h052;
rommem[12463] <= 12'h041;
rommem[12464] <= 12'h001;
rommem[12465] <= 12'h041;
rommem[12466] <= 12'h044;
rommem[12467] <= 12'h043;
rommem[12468] <= 12'h041;
rommem[12469] <= 12'h001;
rommem[12470] <= 12'h04F;
rommem[12471] <= 12'h052;
rommem[12472] <= 12'h041;
rommem[12473] <= 12'h020;
rommem[12474] <= 12'h001;
rommem[12475] <= 12'h041;
rommem[12476] <= 12'h044;
rommem[12477] <= 12'h044;
rommem[12478] <= 12'h041;
rommem[12479] <= 12'h001;
rommem[12480] <= 12'h043;
rommem[12481] <= 12'h04D;
rommem[12482] <= 12'h050;
rommem[12483] <= 12'h058;
rommem[12484] <= 12'h001;
rommem[12485] <= 12'h04A;
rommem[12486] <= 12'h053;
rommem[12487] <= 12'h052;
rommem[12488] <= 12'h020;
rommem[12489] <= 12'h001;
rommem[12490] <= 12'h04C;
rommem[12491] <= 12'h044;
rommem[12492] <= 12'h058;
rommem[12493] <= 12'h020;
rommem[12494] <= 12'h001;
rommem[12495] <= 12'h053;
rommem[12496] <= 12'h054;
rommem[12497] <= 12'h058;
rommem[12498] <= 12'h020;
rommem[12499] <= 12'h001;
rommem[12500] <= 12'h053;
rommem[12501] <= 12'h074;
rommem[12502] <= 12'h061;
rommem[12503] <= 12'h072;
rommem[12504] <= 12'h074;
rommem[12505] <= 12'h069;
rommem[12506] <= 12'h06E;
rommem[12507] <= 12'h067;
rommem[12508] <= 12'h02E;
rommem[12509] <= 12'h00D;
rommem[12510] <= 12'h00A;
rommem[12511] <= 12'h000;
rommem[12512] <= 12'h015;
rommem[12513] <= 12'h07F;
rommem[12514] <= 12'hFFF;
rommem[12515] <= 12'hFFF;
rommem[12516] <= 12'hFE1;
rommem[12517] <= 12'h039;
rommem[12518] <= 12'h08E;
rommem[12519] <= 12'hFFC;
rommem[12520] <= 12'h000;
rommem[12521] <= 12'h18E;
rommem[12522] <= 12'h00C;
rommem[12523] <= 12'h000;
rommem[12524] <= 12'h0EC;
rommem[12525] <= 12'h801;
rommem[12526] <= 12'h0ED;
rommem[12527] <= 12'hA01;
rommem[12528] <= 12'h08C;
rommem[12529] <= 12'h000;
rommem[12530] <= 12'h000;
rommem[12531] <= 12'h026;
rommem[12532] <= 12'hFF7;
rommem[12533] <= 12'h039;
rommem[12534] <= 12'h086;
rommem[12535] <= 12'h050;
rommem[12536] <= 12'h015;
rommem[12537] <= 12'h0F6;
rommem[12538] <= 12'hFFF;
rommem[12539] <= 12'hFFF;
rommem[12540] <= 12'hFE0;
rommem[12541] <= 12'h0C0;
rommem[12542] <= 12'h002;
rommem[12543] <= 12'h08E;
rommem[12544] <= 12'h000;
rommem[12545] <= 12'h000;
rommem[12546] <= 12'h03A;
rommem[12547] <= 12'h0A7;
rommem[12548] <= 12'h809;
rommem[12549] <= 12'hE00;
rommem[12550] <= 12'h000;
rommem[12551] <= 12'h030;
rommem[12552] <= 12'h008;
rommem[12553] <= 12'h08C;
rommem[12554] <= 12'h000;
rommem[12555] <= 12'hFFF;
rommem[12556] <= 12'h025;
rommem[12557] <= 12'hFF5;
rommem[12558] <= 12'h0BD;
rommem[12559] <= 12'hFFF;
rommem[12560] <= 12'h0E0;
rommem[12561] <= 12'h0CB;
rommem[12562] <= 12'h002;
rommem[12563] <= 12'h086;
rommem[12564] <= 12'h04E;
rommem[12565] <= 12'h08E;
rommem[12566] <= 12'h000;
rommem[12567] <= 12'h000;
rommem[12568] <= 12'h03A;
rommem[12569] <= 12'h03A;
rommem[12570] <= 12'h0A7;
rommem[12571] <= 12'h809;
rommem[12572] <= 12'hE00;
rommem[12573] <= 12'h000;
rommem[12574] <= 12'h08C;
rommem[12575] <= 12'h000;
rommem[12576] <= 12'hFFF;
rommem[12577] <= 12'h025;
rommem[12578] <= 12'hFF6;
rommem[12579] <= 12'h0BD;
rommem[12580] <= 12'hFFF;
rommem[12581] <= 12'h0E0;
rommem[12582] <= 12'h0CB;
rommem[12583] <= 12'h008;
rommem[12584] <= 12'h0C1;
rommem[12585] <= 12'hFF0;
rommem[12586] <= 12'h025;
rommem[12587] <= 12'hFE9;
rommem[12588] <= 12'h013;
rommem[12589] <= 12'h016;
rommem[12590] <= 12'h000;
rommem[12591] <= 12'h869;
rommem[12592] <= 12'h086;
rommem[12593] <= 12'h050;
rommem[12594] <= 12'h08E;
rommem[12595] <= 12'h000;
rommem[12596] <= 12'h000;
rommem[12597] <= 12'h0A7;
rommem[12598] <= 12'h809;
rommem[12599] <= 12'hE00;
rommem[12600] <= 12'h000;
rommem[12601] <= 12'h030;
rommem[12602] <= 12'h001;
rommem[12603] <= 12'h08C;
rommem[12604] <= 12'h000;
rommem[12605] <= 12'hFFF;
rommem[12606] <= 12'h025;
rommem[12607] <= 12'hFF5;
rommem[12608] <= 12'h0C6;
rommem[12609] <= 12'h002;
rommem[12610] <= 12'h086;
rommem[12611] <= 12'h04E;
rommem[12612] <= 12'h08E;
rommem[12613] <= 12'h000;
rommem[12614] <= 12'h000;
rommem[12615] <= 12'h03A;
rommem[12616] <= 12'h03A;
rommem[12617] <= 12'h0A7;
rommem[12618] <= 12'h809;
rommem[12619] <= 12'hE00;
rommem[12620] <= 12'h000;
rommem[12621] <= 12'h08C;
rommem[12622] <= 12'h000;
rommem[12623] <= 12'hFFF;
rommem[12624] <= 12'h025;
rommem[12625] <= 12'hFC7;
rommem[12626] <= 12'h05C;
rommem[12627] <= 12'h0C1;
rommem[12628] <= 12'hFF0;
rommem[12629] <= 12'h025;
rommem[12630] <= 12'hFED;
rommem[12631] <= 12'h013;
rommem[12632] <= 12'h016;
rommem[12633] <= 12'h000;
rommem[12634] <= 12'h839;
rommem[12635] <= 12'h0CC;
rommem[12636] <= 12'h895;
rommem[12637] <= 12'h440;
rommem[12638] <= 12'h0C1;
rommem[12639] <= 12'h0FF;
rommem[12640] <= 12'h026;
rommem[12641] <= 12'h000;
rommem[12642] <= 12'h015;
rommem[12643] <= 12'h0B7;
rommem[12644] <= 12'hFFF;
rommem[12645] <= 12'hE60;
rommem[12646] <= 12'h000;
rommem[12647] <= 12'h083;
rommem[12648] <= 12'h000;
rommem[12649] <= 12'h001;
rommem[12650] <= 12'h026;
rommem[12651] <= 12'hFF2;
rommem[12652] <= 12'h039;
rommem[12653] <= 12'h058;
rommem[12654] <= 12'h049;
rommem[12655] <= 12'h058;
rommem[12656] <= 12'h049;
rommem[12501] <= 12'h055;
rommem[12502] <= 12'h042;
rommem[12503] <= 12'h041;
rommem[12504] <= 12'h005;
rommem[12505] <= 12'h043;
rommem[12506] <= 12'h04D;
rommem[12507] <= 12'h050;
rommem[12508] <= 12'h041;
rommem[12509] <= 12'h005;
rommem[12510] <= 12'h053;
rommem[12511] <= 12'h042;
rommem[12512] <= 12'h043;
rommem[12513] <= 12'h041;
rommem[12514] <= 12'h005;
rommem[12515] <= 12'h053;
rommem[12516] <= 12'h055;
rommem[12517] <= 12'h042;
rommem[12518] <= 12'h044;
rommem[12519] <= 12'h005;
rommem[12520] <= 12'h041;
rommem[12521] <= 12'h04E;
rommem[12522] <= 12'h044;
rommem[12523] <= 12'h041;
rommem[12524] <= 12'h005;
rommem[12525] <= 12'h042;
rommem[12526] <= 12'h049;
rommem[12527] <= 12'h054;
rommem[12528] <= 12'h041;
rommem[12529] <= 12'h005;
rommem[12530] <= 12'h04C;
rommem[12531] <= 12'h044;
rommem[12532] <= 12'h041;
rommem[12533] <= 12'h020;
rommem[12534] <= 12'h005;
rommem[12535] <= 12'h053;
rommem[12536] <= 12'h054;
rommem[12537] <= 12'h041;
rommem[12538] <= 12'h020;
rommem[12539] <= 12'h005;
rommem[12540] <= 12'h045;
rommem[12541] <= 12'h04F;
rommem[12542] <= 12'h052;
rommem[12543] <= 12'h041;
rommem[12544] <= 12'h005;
rommem[12545] <= 12'h041;
rommem[12546] <= 12'h044;
rommem[12547] <= 12'h043;
rommem[12548] <= 12'h041;
rommem[12549] <= 12'h005;
rommem[12550] <= 12'h04F;
rommem[12551] <= 12'h052;
rommem[12552] <= 12'h041;
rommem[12553] <= 12'h020;
rommem[12554] <= 12'h005;
rommem[12555] <= 12'h041;
rommem[12556] <= 12'h044;
rommem[12557] <= 12'h044;
rommem[12558] <= 12'h041;
rommem[12559] <= 12'h005;
rommem[12560] <= 12'h043;
rommem[12561] <= 12'h04D;
rommem[12562] <= 12'h050;
rommem[12563] <= 12'h058;
rommem[12564] <= 12'h005;
rommem[12565] <= 12'h04A;
rommem[12566] <= 12'h053;
rommem[12567] <= 12'h052;
rommem[12568] <= 12'h020;
rommem[12569] <= 12'h005;
rommem[12570] <= 12'h04C;
rommem[12571] <= 12'h044;
rommem[12572] <= 12'h058;
rommem[12573] <= 12'h020;
rommem[12574] <= 12'h005;
rommem[12575] <= 12'h053;
rommem[12576] <= 12'h054;
rommem[12577] <= 12'h058;
rommem[12578] <= 12'h020;
rommem[12579] <= 12'h005;
rommem[12580] <= 12'h053;
rommem[12581] <= 12'h055;
rommem[12582] <= 12'h042;
rommem[12583] <= 12'h041;
rommem[12584] <= 12'h006;
rommem[12585] <= 12'h043;
rommem[12586] <= 12'h04D;
rommem[12587] <= 12'h050;
rommem[12588] <= 12'h041;
rommem[12589] <= 12'h006;
rommem[12590] <= 12'h053;
rommem[12591] <= 12'h042;
rommem[12592] <= 12'h043;
rommem[12593] <= 12'h041;
rommem[12594] <= 12'h006;
rommem[12595] <= 12'h053;
rommem[12596] <= 12'h055;
rommem[12597] <= 12'h042;
rommem[12598] <= 12'h044;
rommem[12599] <= 12'h006;
rommem[12600] <= 12'h041;
rommem[12601] <= 12'h04E;
rommem[12602] <= 12'h044;
rommem[12603] <= 12'h041;
rommem[12604] <= 12'h006;
rommem[12605] <= 12'h042;
rommem[12606] <= 12'h049;
rommem[12607] <= 12'h054;
rommem[12608] <= 12'h041;
rommem[12609] <= 12'h006;
rommem[12610] <= 12'h04C;
rommem[12611] <= 12'h044;
rommem[12612] <= 12'h041;
rommem[12613] <= 12'h020;
rommem[12614] <= 12'h006;
rommem[12615] <= 12'h053;
rommem[12616] <= 12'h054;
rommem[12617] <= 12'h041;
rommem[12618] <= 12'h020;
rommem[12619] <= 12'h006;
rommem[12620] <= 12'h045;
rommem[12621] <= 12'h04F;
rommem[12622] <= 12'h052;
rommem[12623] <= 12'h041;
rommem[12624] <= 12'h006;
rommem[12625] <= 12'h041;
rommem[12626] <= 12'h044;
rommem[12627] <= 12'h043;
rommem[12628] <= 12'h041;
rommem[12629] <= 12'h006;
rommem[12630] <= 12'h04F;
rommem[12631] <= 12'h052;
rommem[12632] <= 12'h041;
rommem[12633] <= 12'h020;
rommem[12634] <= 12'h006;
rommem[12635] <= 12'h041;
rommem[12636] <= 12'h044;
rommem[12637] <= 12'h044;
rommem[12638] <= 12'h041;
rommem[12639] <= 12'h006;
rommem[12640] <= 12'h043;
rommem[12641] <= 12'h04D;
rommem[12642] <= 12'h050;
rommem[12643] <= 12'h058;
rommem[12644] <= 12'h006;
rommem[12645] <= 12'h04A;
rommem[12646] <= 12'h053;
rommem[12647] <= 12'h052;
rommem[12648] <= 12'h020;
rommem[12649] <= 12'h006;
rommem[12650] <= 12'h04C;
rommem[12651] <= 12'h044;
rommem[12652] <= 12'h058;
rommem[12653] <= 12'h020;
rommem[12654] <= 12'h006;
rommem[12655] <= 12'h053;
rommem[12656] <= 12'h054;
rommem[12657] <= 12'h058;
rommem[12658] <= 12'h049;
rommem[12659] <= 12'h058;
rommem[12660] <= 12'h049;
rommem[12661] <= 12'h058;
rommem[12662] <= 12'h049;
rommem[12663] <= 12'h039;
rommem[12664] <= 12'h034;
rommem[12665] <= 12'h076;
rommem[12666] <= 12'h08D;
rommem[12667] <= 12'h0B4;
rommem[12668] <= 12'h01F;
rommem[12669] <= 12'h001;
rommem[12670] <= 12'h18E;
rommem[12671] <= 12'hE00;
rommem[12672] <= 12'h000;
rommem[12673] <= 12'h0CE;
rommem[12674] <= 12'h000;
rommem[12675] <= 12'h32C;
rommem[12676] <= 12'h0EC;
rommem[12677] <= 12'h801;
rommem[12678] <= 12'h0ED;
rommem[12679] <= 12'hA01;
rommem[12680] <= 12'h033;
rommem[12681] <= 12'h5FF;
rommem[12682] <= 12'h283;
rommem[12683] <= 12'h000;
rommem[12684] <= 12'h000;
rommem[12685] <= 12'h026;
rommem[12686] <= 12'hFF5;
rommem[12687] <= 12'h0D6;
rommem[12688] <= 12'h110;
rommem[12689] <= 12'h086;
rommem[12690] <= 12'h038;
rommem[12691] <= 12'h03D;
rommem[12692] <= 12'h01F;
rommem[12693] <= 12'h001;
rommem[12694] <= 12'h0D6;
rommem[12695] <= 12'h111;
rommem[12696] <= 12'h03A;
rommem[12697] <= 12'h015;
rommem[12698] <= 12'h0BF;
rommem[12699] <= 12'hFFF;
rommem[12700] <= 12'hE0D;
rommem[12701] <= 12'hF22;
rommem[12702] <= 12'h035;
rommem[12703] <= 12'h0F6;
rommem[12704] <= 12'h034;
rommem[12705] <= 12'h076;
rommem[12706] <= 12'h08D;
rommem[12707] <= 12'h08C;
rommem[12708] <= 12'h01F;
rommem[12709] <= 12'h002;
rommem[12710] <= 12'h08E;
rommem[12711] <= 12'hE00;
rommem[12712] <= 12'h000;
rommem[12713] <= 12'h0CE;
rommem[12714] <= 12'h000;
rommem[12715] <= 12'h32C;
rommem[12716] <= 12'h0EC;
rommem[12717] <= 12'h801;
rommem[12718] <= 12'h0ED;
rommem[12719] <= 12'hA01;
rommem[12720] <= 12'h033;
rommem[12721] <= 12'h5FF;
rommem[12722] <= 12'h283;
rommem[12723] <= 12'h000;
rommem[12724] <= 12'h000;
rommem[12725] <= 12'h026;
rommem[12726] <= 12'hFF5;
rommem[12727] <= 12'h035;
rommem[12728] <= 12'h0F6;
rommem[12729] <= 12'h054;
rommem[12730] <= 12'h045;
rommem[12731] <= 12'h058;
rommem[12732] <= 12'h054;
rommem[12733] <= 12'h053;
rommem[12734] <= 12'h043;
rommem[12735] <= 12'h052;
rommem[12736] <= 12'h020;
rommem[12737] <= 12'hFFF;
rommem[12738] <= 12'h1CB;
rommem[12739] <= 12'hFFF;
rommem[12740] <= 12'h1CC;
rommem[12741] <= 12'hFFF;
rommem[12742] <= 12'h1CD;
rommem[12743] <= 12'hFFF;
rommem[12744] <= 12'h1CE;
rommem[12745] <= 12'hFFF;
rommem[12746] <= 12'h1CF;
rommem[12747] <= 12'h039;
rommem[12748] <= 12'h039;
rommem[12749] <= 12'h039;
rommem[12750] <= 12'h039;
rommem[12751] <= 12'h039;
rommem[12752] <= 12'h034;
rommem[12753] <= 12'h076;
rommem[12754] <= 12'h08E;
rommem[12755] <= 12'h000;
rommem[12756] <= 12'h658;
rommem[12757] <= 12'h01F;
rommem[12758] <= 12'h013;
rommem[12759] <= 12'h08D;
rommem[12760] <= 12'h057;
rommem[12761] <= 12'h01F;
rommem[12762] <= 12'h002;
rommem[12763] <= 12'h0C6;
rommem[12764] <= 12'h020;
rommem[12765] <= 12'h0E7;
rommem[12766] <= 12'hA00;
rommem[12767] <= 12'h030;
rommem[12768] <= 12'h1FF;
rommem[12769] <= 12'h026;
rommem[12770] <= 12'hFFA;
rommem[12771] <= 12'h015;
rommem[12772] <= 12'h0F6;
rommem[12773] <= 12'hFFF;
rommem[12774] <= 12'hFFF;
rommem[12775] <= 12'hFE0;
rommem[12776] <= 12'h0D1;
rommem[12777] <= 12'h100;
rommem[12658] <= 12'h020;
rommem[12659] <= 12'h006;
rommem[12660] <= 12'h053;
rommem[12661] <= 12'h055;
rommem[12662] <= 12'h042;
rommem[12663] <= 12'h042;
rommem[12664] <= 12'h003;
rommem[12665] <= 12'h043;
rommem[12666] <= 12'h04D;
rommem[12667] <= 12'h050;
rommem[12668] <= 12'h042;
rommem[12669] <= 12'h003;
rommem[12670] <= 12'h053;
rommem[12671] <= 12'h042;
rommem[12672] <= 12'h043;
rommem[12673] <= 12'h062;
rommem[12674] <= 12'h003;
rommem[12675] <= 12'h041;
rommem[12676] <= 12'h044;
rommem[12677] <= 12'h044;
rommem[12678] <= 12'h044;
rommem[12679] <= 12'h007;
rommem[12680] <= 12'h041;
rommem[12681] <= 12'h04E;
rommem[12682] <= 12'h044;
rommem[12683] <= 12'h042;
rommem[12684] <= 12'h003;
rommem[12685] <= 12'h042;
rommem[12686] <= 12'h049;
rommem[12687] <= 12'h054;
rommem[12688] <= 12'h042;
rommem[12689] <= 12'h003;
rommem[12690] <= 12'h04C;
rommem[12691] <= 12'h044;
rommem[12692] <= 12'h042;
rommem[12693] <= 12'h020;
rommem[12694] <= 12'h003;
rommem[12695] <= 12'h020;
rommem[12696] <= 12'h020;
rommem[12697] <= 12'h020;
rommem[12698] <= 12'h020;
rommem[12699] <= 12'h000;
rommem[12700] <= 12'h045;
rommem[12701] <= 12'h04F;
rommem[12702] <= 12'h052;
rommem[12703] <= 12'h042;
rommem[12704] <= 12'h003;
rommem[12705] <= 12'h041;
rommem[12706] <= 12'h044;
rommem[12707] <= 12'h043;
rommem[12708] <= 12'h042;
rommem[12709] <= 12'h003;
rommem[12710] <= 12'h04F;
rommem[12711] <= 12'h052;
rommem[12712] <= 12'h042;
rommem[12713] <= 12'h020;
rommem[12714] <= 12'h003;
rommem[12715] <= 12'h041;
rommem[12716] <= 12'h044;
rommem[12717] <= 12'h044;
rommem[12718] <= 12'h042;
rommem[12719] <= 12'h003;
rommem[12720] <= 12'h04C;
rommem[12721] <= 12'h044;
rommem[12722] <= 12'h044;
rommem[12723] <= 12'h020;
rommem[12724] <= 12'h007;
rommem[12725] <= 12'h020;
rommem[12726] <= 12'h020;
rommem[12727] <= 12'h020;
rommem[12728] <= 12'h020;
rommem[12729] <= 12'h004;
rommem[12730] <= 12'h04C;
rommem[12731] <= 12'h044;
rommem[12732] <= 12'h055;
rommem[12733] <= 12'h020;
rommem[12734] <= 12'h007;
rommem[12735] <= 12'h04A;
rommem[12736] <= 12'h053;
rommem[12737] <= 12'h046;
rommem[12738] <= 12'h020;
rommem[12739] <= 12'h008;
rommem[12740] <= 12'h053;
rommem[12741] <= 12'h055;
rommem[12742] <= 12'h042;
rommem[12743] <= 12'h042;
rommem[12744] <= 12'h001;
rommem[12745] <= 12'h043;
rommem[12746] <= 12'h04D;
rommem[12747] <= 12'h050;
rommem[12748] <= 12'h042;
rommem[12749] <= 12'h001;
rommem[12750] <= 12'h053;
rommem[12751] <= 12'h042;
rommem[12752] <= 12'h043;
rommem[12753] <= 12'h042;
rommem[12754] <= 12'h001;
rommem[12755] <= 12'h041;
rommem[12756] <= 12'h044;
rommem[12757] <= 12'h044;
rommem[12758] <= 12'h044;
rommem[12759] <= 12'h001;
rommem[12760] <= 12'h041;
rommem[12761] <= 12'h04E;
rommem[12762] <= 12'h044;
rommem[12763] <= 12'h042;
rommem[12764] <= 12'h001;
rommem[12765] <= 12'h042;
rommem[12766] <= 12'h049;
rommem[12767] <= 12'h054;
rommem[12768] <= 12'h042;
rommem[12769] <= 12'h001;
rommem[12770] <= 12'h04C;
rommem[12771] <= 12'h044;
rommem[12772] <= 12'h042;
rommem[12773] <= 12'h020;
rommem[12774] <= 12'h001;
rommem[12775] <= 12'h053;
rommem[12776] <= 12'h054;
rommem[12777] <= 12'h042;
rommem[12778] <= 12'h020;
rommem[12779] <= 12'h00D;
rommem[12780] <= 12'h18E;
rommem[12781] <= 12'hE02;
rommem[12782] <= 12'h000;
rommem[12783] <= 12'h086;
rommem[12784] <= 12'h0CE;
rommem[12785] <= 12'h01F;
rommem[12786] <= 12'h031;
rommem[12787] <= 12'h0A7;
rommem[12788] <= 12'hA00;
rommem[12789] <= 12'h030;
rommem[12790] <= 12'h1FF;
rommem[12791] <= 12'h026;
rommem[12792] <= 12'hFFA;
rommem[12793] <= 12'h035;
rommem[12794] <= 12'h0F6;
rommem[12795] <= 12'h034;
rommem[12796] <= 12'h076;
rommem[12797] <= 12'h18E;
rommem[12798] <= 12'h000;
rommem[12799] <= 12'h32B;
rommem[12800] <= 12'h08D;
rommem[12801] <= 12'h02E;
rommem[12802] <= 12'h01F;
rommem[12803] <= 12'h001;
rommem[12804] <= 12'h01F;
rommem[12805] <= 12'h003;
rommem[12806] <= 12'h030;
rommem[12807] <= 12'h038;
rommem[12808] <= 12'h0EC;
rommem[12809] <= 12'h801;
rommem[12810] <= 12'h0ED;
rommem[12811] <= 12'hC01;
rommem[12812] <= 12'h031;
rommem[12813] <= 12'h3FF;
rommem[12814] <= 12'h026;
rommem[12815] <= 12'hFF8;
rommem[12816] <= 12'h086;
rommem[12817] <= 12'h01E;
rommem[12818] <= 12'h08D;
rommem[12819] <= 12'h002;
rommem[12820] <= 12'h035;
rommem[12821] <= 12'h0F6;
rommem[12822] <= 12'h034;
rommem[12823] <= 12'h016;
rommem[12824] <= 12'h034;
rommem[12825] <= 12'h002;
rommem[12826] <= 12'h08D;
rommem[12827] <= 12'h014;
rommem[12828] <= 12'h01F;
rommem[12829] <= 12'h001;
rommem[12830] <= 12'h035;
rommem[12831] <= 12'h002;
rommem[12832] <= 12'h0C6;
rommem[12833] <= 12'h038;
rommem[12834] <= 12'h03D;
rommem[12835] <= 12'h030;
rommem[12836] <= 12'h80B;
rommem[12837] <= 12'h086;
rommem[12838] <= 12'h020;
rommem[12839] <= 12'h0C6;
rommem[12840] <= 12'h038;
rommem[12841] <= 12'h0A7;
rommem[12842] <= 12'h800;
rommem[12843] <= 12'h05A;
rommem[12844] <= 12'h026;
rommem[12845] <= 12'hFFB;
rommem[12846] <= 12'h035;
rommem[12847] <= 12'h096;
rommem[12848] <= 12'h015;
rommem[12849] <= 12'h0B6;
rommem[12850] <= 12'hFFF;
rommem[12851] <= 12'hFFF;
rommem[12852] <= 12'hFE0;
rommem[12853] <= 12'h091;
rommem[12854] <= 12'h100;
rommem[12855] <= 12'h026;
rommem[12856] <= 12'h004;
rommem[12857] <= 12'h0CC;
rommem[12858] <= 12'hE00;
rommem[12859] <= 12'h000;
rommem[12860] <= 12'h039;
rommem[12861] <= 12'h0CC;
rommem[12862] <= 12'h007;
rommem[12863] <= 12'h800;
rommem[12864] <= 12'h039;
rommem[12865] <= 12'h034;
rommem[12866] <= 12'h016;
rommem[12867] <= 12'h00F;
rommem[12868] <= 12'h110;
rommem[12869] <= 12'h00F;
rommem[12870] <= 12'h111;
rommem[12871] <= 12'h015;
rommem[12872] <= 12'h0F6;
rommem[12873] <= 12'hFFF;
rommem[12874] <= 12'hFFF;
rommem[12875] <= 12'hFE0;
rommem[12876] <= 12'h0D1;
rommem[12877] <= 12'h100;
rommem[12878] <= 12'h026;
rommem[12879] <= 12'h006;
rommem[12880] <= 12'h04F;
rommem[12881] <= 12'h015;
rommem[12882] <= 12'h0B7;
rommem[12883] <= 12'hFFF;
rommem[12884] <= 12'hE0D;
rommem[12885] <= 12'hF22;
rommem[12886] <= 12'h035;
rommem[12887] <= 12'h096;
rommem[12888] <= 12'h034;
rommem[12889] <= 12'h016;
rommem[12890] <= 12'h015;
rommem[12891] <= 12'h0F6;
rommem[12892] <= 12'hFFF;
rommem[12893] <= 12'hFFF;
rommem[12894] <= 12'hFE0;
rommem[12895] <= 12'h0D1;
rommem[12896] <= 12'h100;
rommem[12897] <= 12'h026;
rommem[12898] <= 12'h014;
rommem[12899] <= 12'h096;
rommem[12900] <= 12'h110;
rommem[12901] <= 12'h084;
rommem[12902] <= 12'h03F;
rommem[12903] <= 12'h015;
rommem[12904] <= 12'h0F6;
rommem[12905] <= 12'hFFF;
rommem[12906] <= 12'hE0D;
rommem[12907] <= 12'hF00;
rommem[12908] <= 12'h03D;
rommem[12909] <= 12'h01F;
rommem[12910] <= 12'h001;
rommem[12911] <= 12'h0D6;
rommem[12912] <= 12'h111;
rommem[12913] <= 12'h03A;
rommem[12914] <= 12'h015;
rommem[12915] <= 12'h0BF;
rommem[12916] <= 12'hFFF;
rommem[12917] <= 12'hE0D;
rommem[12918] <= 12'hF22;
rommem[12919] <= 12'h035;
rommem[12920] <= 12'h096;
rommem[12921] <= 12'h034;
rommem[12922] <= 12'h010;
rommem[12923] <= 12'h096;
rommem[12924] <= 12'h110;
rommem[12925] <= 12'h0C6;
rommem[12926] <= 12'h038;
rommem[12927] <= 12'h03D;
rommem[12928] <= 12'h01F;
rommem[12929] <= 12'h001;
rommem[12930] <= 12'h0D6;
rommem[12931] <= 12'h111;
rommem[12932] <= 12'h03A;
rommem[12933] <= 12'h015;
rommem[12934] <= 12'h0F6;
rommem[12935] <= 12'hFFF;
rommem[12936] <= 12'hFFF;
rommem[12937] <= 12'hFE0;
rommem[12938] <= 12'h0D1;
rommem[12939] <= 12'h100;
rommem[12940] <= 12'h026;
rommem[12941] <= 12'h005;
rommem[12942] <= 12'h015;
rommem[12943] <= 12'h0BF;
rommem[12944] <= 12'hFFF;
rommem[12945] <= 12'hE0D;
rommem[12946] <= 12'hF22;
rommem[12947] <= 12'h08D;
rommem[12948] <= 12'hF9B;
rommem[12949] <= 12'h030;
rommem[12950] <= 12'h80B;
rommem[12951] <= 12'h01F;
rommem[12952] <= 12'h010;
rommem[12953] <= 12'h035;
rommem[12954] <= 12'h090;
rommem[12955] <= 12'h034;
rommem[12956] <= 12'h016;
rommem[12957] <= 12'h0C1;
rommem[12958] <= 12'h00D;
rommem[12959] <= 12'h026;
rommem[12960] <= 12'h006;
rommem[12961] <= 12'h00F;
rommem[12962] <= 12'h111;
rommem[12963] <= 12'h08D;
rommem[12964] <= 12'hFB3;
rommem[12965] <= 12'h035;
rommem[12966] <= 12'h096;
rommem[12967] <= 12'h0C1;
rommem[12968] <= 12'h091;
rommem[12969] <= 12'h026;
rommem[12970] <= 12'h00D;
rommem[12971] <= 12'h096;
rommem[12972] <= 12'h111;
rommem[12973] <= 12'h081;
rommem[12974] <= 12'h037;
rommem[12975] <= 12'h024;
rommem[12976] <= 12'h003;
rommem[12977] <= 12'h04C;
rommem[12978] <= 12'h097;
rommem[12979] <= 12'h111;
rommem[12980] <= 12'h08D;
rommem[12981] <= 12'hFA2;
rommem[12982] <= 12'h035;
rommem[12983] <= 12'h096;
rommem[12984] <= 12'h0C1;
rommem[12985] <= 12'h090;
rommem[12986] <= 12'h026;
rommem[12987] <= 12'h009;
rommem[12988] <= 12'h096;
rommem[12989] <= 12'h110;
rommem[12990] <= 12'h027;
rommem[12991] <= 12'hFF4;
rommem[12992] <= 12'h04A;
rommem[12993] <= 12'h097;
rommem[12994] <= 12'h110;
rommem[12995] <= 12'h020;
rommem[12996] <= 12'hFEF;
rommem[12997] <= 12'h0C1;
rommem[12998] <= 12'h093;
rommem[12999] <= 12'h026;
rommem[13000] <= 12'h009;
rommem[13001] <= 12'h096;
rommem[13002] <= 12'h111;
rommem[13003] <= 12'h027;
rommem[13004] <= 12'hFE7;
rommem[13005] <= 12'h04A;
rommem[13006] <= 12'h097;
rommem[13007] <= 12'h111;
rommem[13008] <= 12'h020;
rommem[13009] <= 12'hFE2;
rommem[13010] <= 12'h0C1;
rommem[13011] <= 12'h092;
rommem[13012] <= 12'h026;
rommem[13013] <= 12'h00B;
rommem[13014] <= 12'h096;
rommem[13015] <= 12'h110;
rommem[13016] <= 12'h081;
rommem[13017] <= 12'h01D;
rommem[13018] <= 12'h027;
rommem[13019] <= 12'hFD8;
rommem[12779] <= 12'h001;
rommem[12780] <= 12'h045;
rommem[12781] <= 12'h04F;
rommem[12782] <= 12'h052;
rommem[12783] <= 12'h042;
rommem[12784] <= 12'h001;
rommem[12785] <= 12'h041;
rommem[12786] <= 12'h044;
rommem[12787] <= 12'h043;
rommem[12788] <= 12'h042;
rommem[12789] <= 12'h001;
rommem[12790] <= 12'h04F;
rommem[12791] <= 12'h052;
rommem[12792] <= 12'h042;
rommem[12793] <= 12'h020;
rommem[12794] <= 12'h001;
rommem[12795] <= 12'h041;
rommem[12796] <= 12'h044;
rommem[12797] <= 12'h044;
rommem[12798] <= 12'h042;
rommem[12799] <= 12'h001;
rommem[12800] <= 12'h04C;
rommem[12801] <= 12'h044;
rommem[12802] <= 12'h044;
rommem[12803] <= 12'h020;
rommem[12804] <= 12'h001;
rommem[12805] <= 12'h053;
rommem[12806] <= 12'h054;
rommem[12807] <= 12'h044;
rommem[12808] <= 12'h020;
rommem[12809] <= 12'h001;
rommem[12810] <= 12'h04C;
rommem[12811] <= 12'h044;
rommem[12812] <= 12'h055;
rommem[12813] <= 12'h020;
rommem[12814] <= 12'h001;
rommem[12815] <= 12'h053;
rommem[12816] <= 12'h054;
rommem[12817] <= 12'h055;
rommem[12818] <= 12'h020;
rommem[12819] <= 12'h001;
rommem[12820] <= 12'h053;
rommem[12821] <= 12'h055;
rommem[12822] <= 12'h042;
rommem[12823] <= 12'h042;
rommem[12824] <= 12'h005;
rommem[12825] <= 12'h043;
rommem[12826] <= 12'h04D;
rommem[12827] <= 12'h050;
rommem[12828] <= 12'h042;
rommem[12829] <= 12'h005;
rommem[12830] <= 12'h053;
rommem[12831] <= 12'h042;
rommem[12832] <= 12'h043;
rommem[12833] <= 12'h042;
rommem[12834] <= 12'h005;
rommem[12835] <= 12'h041;
rommem[12836] <= 12'h044;
rommem[12837] <= 12'h044;
rommem[12838] <= 12'h044;
rommem[12839] <= 12'h005;
rommem[12840] <= 12'h041;
rommem[12841] <= 12'h04E;
rommem[12842] <= 12'h044;
rommem[12843] <= 12'h042;
rommem[12844] <= 12'h005;
rommem[12845] <= 12'h042;
rommem[12846] <= 12'h049;
rommem[12847] <= 12'h054;
rommem[12848] <= 12'h042;
rommem[12849] <= 12'h005;
rommem[12850] <= 12'h04C;
rommem[12851] <= 12'h044;
rommem[12852] <= 12'h042;
rommem[12853] <= 12'h020;
rommem[12854] <= 12'h005;
rommem[12855] <= 12'h053;
rommem[12856] <= 12'h054;
rommem[12857] <= 12'h042;
rommem[12858] <= 12'h020;
rommem[12859] <= 12'h005;
rommem[12860] <= 12'h045;
rommem[12861] <= 12'h04F;
rommem[12862] <= 12'h052;
rommem[12863] <= 12'h042;
rommem[12864] <= 12'h005;
rommem[12865] <= 12'h041;
rommem[12866] <= 12'h044;
rommem[12867] <= 12'h043;
rommem[12868] <= 12'h042;
rommem[12869] <= 12'h005;
rommem[12870] <= 12'h04F;
rommem[12871] <= 12'h052;
rommem[12872] <= 12'h042;
rommem[12873] <= 12'h020;
rommem[12874] <= 12'h005;
rommem[12875] <= 12'h041;
rommem[12876] <= 12'h044;
rommem[12877] <= 12'h044;
rommem[12878] <= 12'h042;
rommem[12879] <= 12'h005;
rommem[12880] <= 12'h04C;
rommem[12881] <= 12'h044;
rommem[12882] <= 12'h044;
rommem[12883] <= 12'h020;
rommem[12884] <= 12'h005;
rommem[12885] <= 12'h053;
rommem[12886] <= 12'h054;
rommem[12887] <= 12'h044;
rommem[12888] <= 12'h020;
rommem[12889] <= 12'h005;
rommem[12890] <= 12'h04C;
rommem[12891] <= 12'h044;
rommem[12892] <= 12'h055;
rommem[12893] <= 12'h020;
rommem[12894] <= 12'h005;
rommem[12895] <= 12'h053;
rommem[12896] <= 12'h054;
rommem[12897] <= 12'h055;
rommem[12898] <= 12'h020;
rommem[12899] <= 12'h005;
rommem[12900] <= 12'h053;
rommem[12901] <= 12'h055;
rommem[12902] <= 12'h042;
rommem[12903] <= 12'h042;
rommem[12904] <= 12'h006;
rommem[12905] <= 12'h043;
rommem[12906] <= 12'h04D;
rommem[12907] <= 12'h050;
rommem[12908] <= 12'h042;
rommem[12909] <= 12'h006;
rommem[12910] <= 12'h053;
rommem[12911] <= 12'h042;
rommem[12912] <= 12'h043;
rommem[12913] <= 12'h042;
rommem[12914] <= 12'h006;
rommem[12915] <= 12'h041;
rommem[12916] <= 12'h044;
rommem[12917] <= 12'h044;
rommem[12918] <= 12'h044;
rommem[12919] <= 12'h006;
rommem[12920] <= 12'h041;
rommem[12921] <= 12'h04E;
rommem[12922] <= 12'h044;
rommem[12923] <= 12'h042;
rommem[12924] <= 12'h006;
rommem[12925] <= 12'h042;
rommem[12926] <= 12'h049;
rommem[12927] <= 12'h054;
rommem[12928] <= 12'h042;
rommem[12929] <= 12'h006;
rommem[12930] <= 12'h04C;
rommem[12931] <= 12'h044;
rommem[12932] <= 12'h042;
rommem[12933] <= 12'h020;
rommem[12934] <= 12'h006;
rommem[12935] <= 12'h053;
rommem[12936] <= 12'h054;
rommem[12937] <= 12'h042;
rommem[12938] <= 12'h020;
rommem[12939] <= 12'h006;
rommem[12940] <= 12'h045;
rommem[12941] <= 12'h04F;
rommem[12942] <= 12'h052;
rommem[12943] <= 12'h042;
rommem[12944] <= 12'h006;
rommem[12945] <= 12'h041;
rommem[12946] <= 12'h044;
rommem[12947] <= 12'h043;
rommem[12948] <= 12'h042;
rommem[12949] <= 12'h006;
rommem[12950] <= 12'h04F;
rommem[12951] <= 12'h052;
rommem[12952] <= 12'h042;
rommem[12953] <= 12'h020;
rommem[12954] <= 12'h006;
rommem[12955] <= 12'h041;
rommem[12956] <= 12'h044;
rommem[12957] <= 12'h044;
rommem[12958] <= 12'h042;
rommem[12959] <= 12'h006;
rommem[12960] <= 12'h04C;
rommem[12961] <= 12'h044;
rommem[12962] <= 12'h044;
rommem[12963] <= 12'h020;
rommem[12964] <= 12'h006;
rommem[12965] <= 12'h053;
rommem[12966] <= 12'h054;
rommem[12967] <= 12'h044;
rommem[12968] <= 12'h020;
rommem[12969] <= 12'h006;
rommem[12970] <= 12'h04C;
rommem[12971] <= 12'h044;
rommem[12972] <= 12'h055;
rommem[12973] <= 12'h020;
rommem[12974] <= 12'h006;
rommem[12975] <= 12'h053;
rommem[12976] <= 12'h054;
rommem[12977] <= 12'h055;
rommem[12978] <= 12'h020;
rommem[12979] <= 12'h006;
rommem[12980] <= 12'h04C;
rommem[12981] <= 12'h042;
rommem[12982] <= 12'h052;
rommem[12983] <= 12'h041;
rommem[12984] <= 12'h04C;
rommem[12985] <= 12'h042;
rommem[12986] <= 12'h052;
rommem[12987] <= 12'h04E;
rommem[12988] <= 12'h04C;
rommem[12989] <= 12'h042;
rommem[12990] <= 12'h048;
rommem[12991] <= 12'h049;
rommem[12992] <= 12'h04C;
rommem[12993] <= 12'h042;
rommem[12994] <= 12'h04C;
rommem[12995] <= 12'h053;
rommem[12996] <= 12'h04C;
rommem[12997] <= 12'h042;
rommem[12998] <= 12'h048;
rommem[12999] <= 12'h053;
rommem[13000] <= 12'h04C;
rommem[13001] <= 12'h042;
rommem[13002] <= 12'h04C;
rommem[13003] <= 12'h04F;
rommem[13004] <= 12'h04C;
rommem[13005] <= 12'h042;
rommem[13006] <= 12'h04E;
rommem[13007] <= 12'h045;
rommem[13008] <= 12'h04C;
rommem[13009] <= 12'h042;
rommem[13010] <= 12'h045;
rommem[13011] <= 12'h051;
rommem[13012] <= 12'h04C;
rommem[13013] <= 12'h042;
rommem[13014] <= 12'h056;
rommem[13015] <= 12'h043;
rommem[13016] <= 12'h04C;
rommem[13017] <= 12'h042;
rommem[13018] <= 12'h056;
rommem[13019] <= 12'h053;
rommem[13020] <= 12'h04C;
rommem[13021] <= 12'h097;
rommem[13022] <= 12'h110;
rommem[13023] <= 12'h020;
rommem[13024] <= 12'hFD3;
rommem[13025] <= 12'h0C1;
rommem[13026] <= 12'h094;
rommem[13027] <= 12'h026;
rommem[13028] <= 12'h00C;
rommem[13029] <= 12'h096;
rommem[13030] <= 12'h111;
rommem[13031] <= 12'h027;
rommem[13032] <= 12'h004;
rommem[13033] <= 12'h00F;
rommem[13034] <= 12'h111;
rommem[13035] <= 12'h020;
rommem[13036] <= 12'hFC7;
rommem[13037] <= 12'h00F;
rommem[13038] <= 12'h110;
rommem[13039] <= 12'h020;
rommem[13040] <= 12'hFC3;
rommem[13041] <= 12'h0C1;
rommem[13042] <= 12'h099;
rommem[13043] <= 12'h026;
rommem[13044] <= 12'h008;
rommem[13045] <= 12'h08D;
rommem[13046] <= 12'hF82;
rommem[13047] <= 12'h01F;
rommem[13048] <= 12'h001;
rommem[13049] <= 12'h096;
rommem[13050] <= 12'h111;
rommem[13051] <= 12'h020;
rommem[13052] <= 12'h00D;
rommem[13053] <= 12'h0C1;
rommem[13054] <= 12'h008;
rommem[13055] <= 12'h026;
rommem[13056] <= 12'h01A;
rommem[13057] <= 12'h096;
rommem[13058] <= 12'h111;
rommem[13059] <= 12'h027;
rommem[13060] <= 12'h02A;
rommem[13061] <= 12'h04A;
rommem[13062] <= 12'h097;
rommem[13063] <= 12'h111;
rommem[13064] <= 12'h08D;
rommem[13065] <= 12'hF6F;
rommem[13066] <= 12'h0E6;
rommem[13067] <= 12'h001;
rommem[13068] <= 12'h0E7;
rommem[13069] <= 12'h801;
rommem[13070] <= 12'h04C;
rommem[13071] <= 12'h081;
rommem[13072] <= 12'h037;
rommem[13073] <= 12'h025;
rommem[13074] <= 12'hFF7;
rommem[13075] <= 12'h0C6;
rommem[13076] <= 12'h020;
rommem[13077] <= 12'h030;
rommem[13078] <= 12'h1FF;
rommem[13079] <= 12'h0E7;
rommem[13080] <= 12'h804;
rommem[13081] <= 12'h035;
rommem[13082] <= 12'h09E;
rommem[13083] <= 12'h0C1;
rommem[13084] <= 12'h00A;
rommem[13085] <= 12'h027;
rommem[13086] <= 12'h00E;
rommem[13087] <= 12'h034;
rommem[13088] <= 12'h004;
rommem[13089] <= 12'h08D;
rommem[13090] <= 12'hF56;
rommem[13091] <= 12'h01F;
rommem[13092] <= 12'h001;
rommem[13093] <= 12'h035;
rommem[13094] <= 12'h004;
rommem[13095] <= 12'h0E7;
rommem[13096] <= 12'h804;
rommem[13097] <= 12'h08D;
rommem[13098] <= 12'h006;
rommem[13099] <= 12'h035;
rommem[13100] <= 12'h096;
rommem[13101] <= 12'h08D;
rommem[13102] <= 12'h011;
rommem[13103] <= 12'h035;
rommem[13104] <= 12'h096;
rommem[13105] <= 12'h034;
rommem[13106] <= 12'h016;
rommem[13107] <= 12'h096;
rommem[13108] <= 12'h111;
rommem[13109] <= 12'h04C;
rommem[13110] <= 12'h097;
rommem[13111] <= 12'h111;
rommem[13112] <= 12'h081;
rommem[13113] <= 12'h037;
rommem[13114] <= 12'h025;
rommem[13115] <= 12'h014;
rommem[13116] <= 12'h00F;
rommem[13117] <= 12'h111;
rommem[13118] <= 12'h020;
rommem[13119] <= 12'h002;
rommem[13120] <= 12'h034;
rommem[13121] <= 12'h016;
rommem[13122] <= 12'h096;
rommem[13123] <= 12'h110;
rommem[13124] <= 12'h04C;
rommem[13125] <= 12'h097;
rommem[13126] <= 12'h110;
rommem[13127] <= 12'h081;
rommem[13128] <= 12'h01D;
rommem[13129] <= 12'h025;
rommem[13021] <= 12'h042;
rommem[13022] <= 12'h050;
rommem[13023] <= 12'h04C;
rommem[13024] <= 12'h04C;
rommem[13025] <= 12'h042;
rommem[13026] <= 12'h04D;
rommem[13027] <= 12'h049;
rommem[13028] <= 12'h04C;
rommem[13029] <= 12'h042;
rommem[13030] <= 12'h047;
rommem[13031] <= 12'h045;
rommem[13032] <= 12'h04C;
rommem[13033] <= 12'h042;
rommem[13034] <= 12'h04C;
rommem[13035] <= 12'h054;
rommem[13036] <= 12'h04C;
rommem[13037] <= 12'h042;
rommem[13038] <= 12'h047;
rommem[13039] <= 12'h054;
rommem[13040] <= 12'h04C;
rommem[13041] <= 12'h042;
rommem[13042] <= 12'h04C;
rommem[13043] <= 12'h045;
rommem[13044] <= 12'h13F;
rommem[13045] <= 12'h183;
rommem[13046] <= 12'h18C;
rommem[13047] <= 12'h18E;
rommem[13048] <= 12'h193;
rommem[13049] <= 12'h19C;
rommem[13050] <= 12'h19E;
rommem[13051] <= 12'h19F;
rommem[13052] <= 12'h1A3;
rommem[13053] <= 12'h1AC;
rommem[13054] <= 12'h1AE;
rommem[13055] <= 12'h1AF;
rommem[13056] <= 12'h1B3;
rommem[13057] <= 12'h1BC;
rommem[13058] <= 12'h1BE;
rommem[13059] <= 12'h1BF;
rommem[13060] <= 12'h1CE;
rommem[13061] <= 12'h1DE;
rommem[13062] <= 12'h1DF;
rommem[13063] <= 12'h1EE;
rommem[13064] <= 12'h1EF;
rommem[13065] <= 12'h1FE;
rommem[13066] <= 12'h1FF;
rommem[13067] <= 12'h23F;
rommem[13068] <= 12'h283;
rommem[13069] <= 12'h28C;
rommem[13070] <= 12'h293;
rommem[13071] <= 12'h29C;
rommem[13072] <= 12'h2A3;
rommem[13073] <= 12'h2AC;
rommem[13074] <= 12'h2B3;
rommem[13075] <= 12'h2BC;
rommem[13076] <= 12'h053;
rommem[13077] <= 12'h057;
rommem[13078] <= 12'h049;
rommem[13079] <= 12'h032;
rommem[13080] <= 12'h000;
rommem[13081] <= 12'h043;
rommem[13082] <= 12'h04D;
rommem[13083] <= 12'h050;
rommem[13084] <= 12'h044;
rommem[13085] <= 12'h007;
rommem[13086] <= 12'h043;
rommem[13087] <= 12'h04D;
rommem[13088] <= 12'h050;
rommem[13089] <= 12'h059;
rommem[13090] <= 12'h007;
rommem[13091] <= 12'h04C;
rommem[13092] <= 12'h044;
rommem[13093] <= 12'h059;
rommem[13094] <= 12'h020;
rommem[13095] <= 12'h007;
rommem[13096] <= 12'h043;
rommem[13097] <= 12'h04D;
rommem[13098] <= 12'h050;
rommem[13099] <= 12'h044;
rommem[13100] <= 12'h001;
rommem[13101] <= 12'h043;
rommem[13102] <= 12'h04D;
rommem[13103] <= 12'h050;
rommem[13104] <= 12'h059;
rommem[13105] <= 12'h001;
rommem[13106] <= 12'h04C;
rommem[13107] <= 12'h044;
rommem[13108] <= 12'h059;
rommem[13109] <= 12'h020;
rommem[13110] <= 12'h001;
rommem[13111] <= 12'h053;
rommem[13112] <= 12'h054;
rommem[13113] <= 12'h059;
rommem[13114] <= 12'h020;
rommem[13115] <= 12'h001;
rommem[13116] <= 12'h043;
rommem[13117] <= 12'h04D;
rommem[13118] <= 12'h050;
rommem[13119] <= 12'h044;
rommem[13120] <= 12'h005;
rommem[13121] <= 12'h043;
rommem[13122] <= 12'h04D;
rommem[13123] <= 12'h050;
rommem[13124] <= 12'h059;
rommem[13125] <= 12'h005;
rommem[13126] <= 12'h04C;
rommem[13127] <= 12'h044;
rommem[13128] <= 12'h059;
rommem[13129] <= 12'h020;
rommem[13130] <= 12'h005;
rommem[13131] <= 12'h04A;
rommem[13132] <= 12'h097;
rommem[13133] <= 12'h110;
rommem[13134] <= 12'h08D;
rommem[13135] <= 12'hEAB;
rommem[13136] <= 12'h08D;
rommem[13137] <= 12'hF06;
rommem[13138] <= 12'h035;
rommem[13139] <= 12'h096;
rommem[13140] <= 12'h034;
rommem[13141] <= 12'h016;
rommem[13142] <= 12'h01F;
rommem[13143] <= 12'h001;
rommem[13144] <= 12'h0E6;
rommem[13145] <= 12'h800;
rommem[13146] <= 12'h027;
rommem[13147] <= 12'h004;
rommem[13148] <= 12'h08D;
rommem[13149] <= 12'h621;
rommem[13150] <= 12'h020;
rommem[13151] <= 12'hFF8;
rommem[13152] <= 12'h035;
rommem[13153] <= 12'h096;
rommem[13154] <= 12'h034;
rommem[13131] <= 12'h053;
rommem[13132] <= 12'h054;
rommem[13133] <= 12'h059;
rommem[13134] <= 12'h020;
rommem[13135] <= 12'h005;
rommem[13136] <= 12'h043;
rommem[13137] <= 12'h04D;
rommem[13138] <= 12'h050;
rommem[13139] <= 12'h044;
rommem[13140] <= 12'h006;
rommem[13141] <= 12'h043;
rommem[13142] <= 12'h04D;
rommem[13143] <= 12'h050;
rommem[13144] <= 12'h059;
rommem[13145] <= 12'h006;
rommem[13146] <= 12'h04C;
rommem[13147] <= 12'h044;
rommem[13148] <= 12'h059;
rommem[13149] <= 12'h020;
rommem[13150] <= 12'h006;
rommem[13151] <= 12'h053;
rommem[13152] <= 12'h054;
rommem[13153] <= 12'h059;
rommem[13154] <= 12'h020;
rommem[13155] <= 12'h006;
rommem[13156] <= 12'h08D;
rommem[13157] <= 12'hFEE;
rommem[13158] <= 12'h0C6;
rommem[13159] <= 12'h00D;
rommem[13160] <= 12'h08D;
rommem[13161] <= 12'h615;
rommem[13162] <= 12'h0C6;
rommem[13163] <= 12'h00A;
rommem[13164] <= 12'h08D;
rommem[13165] <= 12'h611;
rommem[13166] <= 12'h035;
rommem[13167] <= 12'h086;
rommem[13168] <= 12'h08D;
rommem[13169] <= 12'h002;
rommem[13170] <= 12'h020;
rommem[13171] <= 12'h00D;
rommem[13172] <= 12'h034;
rommem[13173] <= 12'h010;
rommem[13174] <= 12'h08E;
rommem[13175] <= 12'hFFF;
rommem[13176] <= 12'h388;
rommem[13177] <= 12'h08D;
rommem[13178] <= 12'h006;
rommem[13179] <= 12'h035;
rommem[13180] <= 12'h010;
rommem[13181] <= 12'h039;
rommem[13182] <= 12'h0BD;
rommem[13183] <= 12'hFFF;
rommem[13184] <= 12'h97F;
rommem[13185] <= 12'h0E6;
rommem[13186] <= 12'h800;
rommem[13187] <= 12'h0C1;
rommem[13188] <= 12'h004;
rommem[13189] <= 12'h026;
rommem[13190] <= 12'hFF7;
rommem[13191] <= 12'h039;
rommem[13192] <= 12'h00D;
rommem[13193] <= 12'h00A;
rommem[13194] <= 12'h004;
rommem[13195] <= 12'h08D;
rommem[13196] <= 12'h007;
rommem[13197] <= 12'h01E;
rommem[13198] <= 12'h001;
rommem[13199] <= 12'h08D;
rommem[13200] <= 12'h003;
rommem[13201] <= 12'h01E;
rommem[13202] <= 12'h001;
rommem[13203] <= 12'h039;
rommem[13204] <= 12'h01E;
rommem[13205] <= 12'h089;
rommem[13206] <= 12'h08D;
rommem[13207] <= 12'h005;
rommem[13208] <= 12'h01E;
rommem[13209] <= 12'h089;
rommem[13210] <= 12'h08D;
rommem[13211] <= 12'h001;
rommem[13212] <= 12'h039;
rommem[13213] <= 12'h034;
rommem[13214] <= 12'h004;
rommem[13215] <= 12'h054;
rommem[13216] <= 12'h054;
rommem[13217] <= 12'h054;
rommem[13218] <= 12'h054;
rommem[13219] <= 12'h054;
rommem[13220] <= 12'h054;
rommem[13221] <= 12'h054;
rommem[13222] <= 12'h054;
rommem[13223] <= 12'h08D;
rommem[13224] <= 12'h00C;
rommem[13225] <= 12'h035;
rommem[13226] <= 12'h004;
rommem[13227] <= 12'h034;
rommem[13228] <= 12'h004;
rommem[13229] <= 12'h054;
rommem[13230] <= 12'h054;
rommem[13231] <= 12'h054;
rommem[13232] <= 12'h054;
rommem[13233] <= 12'h08D;
rommem[13234] <= 12'h002;
rommem[13235] <= 12'h035;
rommem[13236] <= 12'h004;
rommem[13237] <= 12'h034;
rommem[13238] <= 12'h004;
rommem[13239] <= 12'h0C4;
rommem[13240] <= 12'h00F;
rommem[13241] <= 12'h0C1;
rommem[13242] <= 12'h00A;
rommem[13243] <= 12'h025;
rommem[13244] <= 12'h006;
rommem[13245] <= 12'h0CB;
rommem[13246] <= 12'h037;
rommem[13247] <= 12'h08D;
rommem[13248] <= 12'h5BE;
rommem[13249] <= 12'h035;
rommem[13250] <= 12'h084;
rommem[13251] <= 12'h0CB;
rommem[13252] <= 12'h030;
rommem[13253] <= 12'h08D;
rommem[13254] <= 12'h5B8;
rommem[13255] <= 12'h035;
rommem[13256] <= 12'h084;
rommem[13312] <= 12'h02E;
rommem[13313] <= 12'h0A9;
rommem[13314] <= 12'h02E;
rommem[13315] <= 12'h0A5;
rommem[13316] <= 12'h0A3;
rommem[13317] <= 12'h0A1;
rommem[13318] <= 12'h0A2;
rommem[13319] <= 12'h0AC;
rommem[13320] <= 12'h02E;
rommem[13321] <= 12'h0AA;
rommem[13322] <= 12'h0A8;
rommem[13323] <= 12'h0A6;
rommem[13324] <= 12'h0A4;
rommem[13325] <= 12'h009;
rommem[13326] <= 12'h060;
rommem[13327] <= 12'h02E;
rommem[13328] <= 12'h02E;
rommem[13329] <= 12'h02E;
rommem[13330] <= 12'h02E;
rommem[13331] <= 12'h02E;
rommem[13332] <= 12'h02E;
rommem[13333] <= 12'h071;
rommem[13334] <= 12'h031;
rommem[13335] <= 12'h02E;
rommem[13336] <= 12'h02E;
rommem[13337] <= 12'h02E;
rommem[13338] <= 12'h07A;
rommem[13339] <= 12'h073;
rommem[13340] <= 12'h061;
rommem[13341] <= 12'h077;
rommem[13342] <= 12'h032;
rommem[13343] <= 12'h02E;
rommem[13344] <= 12'h02E;
rommem[13345] <= 12'h063;
rommem[13346] <= 12'h078;
rommem[13347] <= 12'h064;
rommem[13348] <= 12'h065;
rommem[13349] <= 12'h034;
rommem[13350] <= 12'h033;
rommem[13351] <= 12'h02E;
rommem[13352] <= 12'h02E;
rommem[13353] <= 12'h020;
rommem[13354] <= 12'h076;
rommem[13355] <= 12'h066;
rommem[13356] <= 12'h074;
rommem[13357] <= 12'h072;
rommem[13358] <= 12'h035;
rommem[13359] <= 12'h02E;
rommem[13360] <= 12'h02E;
rommem[13361] <= 12'h06E;
rommem[13362] <= 12'h062;
rommem[13363] <= 12'h068;
rommem[13364] <= 12'h067;
rommem[13365] <= 12'h079;
rommem[13366] <= 12'h036;
rommem[13367] <= 12'h02E;
rommem[13368] <= 12'h02E;
rommem[13369] <= 12'h02E;
rommem[13370] <= 12'h06D;
rommem[13371] <= 12'h06A;
rommem[13372] <= 12'h075;
rommem[13373] <= 12'h037;
rommem[13374] <= 12'h038;
rommem[13375] <= 12'h02E;
rommem[13376] <= 12'h02E;
rommem[13377] <= 12'h02C;
rommem[13378] <= 12'h06B;
rommem[13379] <= 12'h069;
rommem[13380] <= 12'h06F;
rommem[13381] <= 12'h030;
rommem[13382] <= 12'h039;
rommem[13383] <= 12'h02E;
rommem[13384] <= 12'h02E;
rommem[13385] <= 12'h02E;
rommem[13386] <= 12'h02F;
rommem[13387] <= 12'h06C;
rommem[13388] <= 12'h03B;
rommem[13389] <= 12'h070;
rommem[13390] <= 12'h02D;
rommem[13391] <= 12'h02E;
rommem[13392] <= 12'h02E;
rommem[13393] <= 12'h02E;
rommem[13394] <= 12'h027;
rommem[13395] <= 12'h02E;
rommem[13396] <= 12'h05B;
rommem[13397] <= 12'h03D;
rommem[13398] <= 12'h02E;
rommem[13399] <= 12'h02E;
rommem[13400] <= 12'h0AD;
rommem[13401] <= 12'h02E;
rommem[13402] <= 12'h00D;
rommem[13403] <= 12'h05D;
rommem[13404] <= 12'h02E;
rommem[13405] <= 12'h05C;
rommem[13406] <= 12'h02E;
rommem[13407] <= 12'h02E;
rommem[13408] <= 12'h02E;
rommem[13409] <= 12'h02E;
rommem[13410] <= 12'h02E;
rommem[13411] <= 12'h02E;
rommem[13412] <= 12'h02E;
rommem[13413] <= 12'h02E;
rommem[13414] <= 12'h008;
rommem[13415] <= 12'h02E;
rommem[13416] <= 12'h02E;
rommem[13417] <= 12'h095;
rommem[13418] <= 12'h02E;
rommem[13419] <= 12'h093;
rommem[13420] <= 12'h094;
rommem[13421] <= 12'h02E;
rommem[13422] <= 12'h02E;
rommem[13423] <= 12'h02E;
rommem[13424] <= 12'h098;
rommem[13425] <= 12'h07F;
rommem[13426] <= 12'h092;
rommem[13427] <= 12'h02E;
rommem[13428] <= 12'h091;
rommem[13429] <= 12'h090;
rommem[13430] <= 12'h01B;
rommem[13431] <= 12'h0AF;
rommem[13432] <= 12'h0AB;
rommem[13433] <= 12'h02E;
rommem[13434] <= 12'h097;
rommem[13435] <= 12'h02E;
rommem[13436] <= 12'h02E;
rommem[13437] <= 12'h096;
rommem[13438] <= 12'h0AE;
rommem[13439] <= 12'h02E;
rommem[13440] <= 12'h02E;
rommem[13441] <= 12'h02E;
rommem[13442] <= 12'h02E;
rommem[13443] <= 12'h0A7;
rommem[13444] <= 12'h02E;
rommem[13445] <= 12'h02E;
rommem[13446] <= 12'h02E;
rommem[13447] <= 12'h02E;
rommem[13448] <= 12'h02E;
rommem[13449] <= 12'h02E;
rommem[13450] <= 12'h02E;
rommem[13451] <= 12'h02E;
rommem[13452] <= 12'h02E;
rommem[13453] <= 12'h02E;
rommem[13454] <= 12'h02E;
rommem[13455] <= 12'h02E;
rommem[13456] <= 12'h02E;
rommem[13457] <= 12'h02E;
rommem[13458] <= 12'h02E;
rommem[13459] <= 12'h02E;
rommem[13460] <= 12'h02E;
rommem[13461] <= 12'h02E;
rommem[13462] <= 12'h02E;
rommem[13463] <= 12'h02E;
rommem[13464] <= 12'h02E;
rommem[13465] <= 12'h02E;
rommem[13466] <= 12'h02E;
rommem[13467] <= 12'h02E;
rommem[13468] <= 12'h02E;
rommem[13469] <= 12'h02E;
rommem[13470] <= 12'h02E;
rommem[13471] <= 12'h02E;
rommem[13472] <= 12'h02E;
rommem[13473] <= 12'h02E;
rommem[13474] <= 12'h02E;
rommem[13475] <= 12'h02E;
rommem[13476] <= 12'h02E;
rommem[13477] <= 12'h02E;
rommem[13478] <= 12'h02E;
rommem[13479] <= 12'h02E;
rommem[13480] <= 12'h02E;
rommem[13481] <= 12'h02E;
rommem[13482] <= 12'h02E;
rommem[13483] <= 12'h02E;
rommem[13484] <= 12'h02E;
rommem[13485] <= 12'h02E;
rommem[13486] <= 12'h02E;
rommem[13487] <= 12'h02E;
rommem[13488] <= 12'h02E;
rommem[13489] <= 12'h02E;
rommem[13490] <= 12'h02E;
rommem[13491] <= 12'h02E;
rommem[13492] <= 12'h02E;
rommem[13493] <= 12'h02E;
rommem[13494] <= 12'h02E;
rommem[13495] <= 12'h02E;
rommem[13496] <= 12'h02E;
rommem[13497] <= 12'h02E;
rommem[13498] <= 12'h02E;
rommem[13499] <= 12'h02E;
rommem[13500] <= 12'h02E;
rommem[13501] <= 12'h02E;
rommem[13502] <= 12'h02E;
rommem[13503] <= 12'h02E;
rommem[13504] <= 12'h02E;
rommem[13505] <= 12'h02E;
rommem[13506] <= 12'h02E;
rommem[13507] <= 12'h02E;
rommem[13508] <= 12'h02E;
rommem[13509] <= 12'h02E;
rommem[13510] <= 12'h02E;
rommem[13511] <= 12'h02E;
rommem[13512] <= 12'h02E;
rommem[13513] <= 12'h02E;
rommem[13514] <= 12'h02E;
rommem[13515] <= 12'h02E;
rommem[13516] <= 12'h02E;
rommem[13517] <= 12'h02E;
rommem[13518] <= 12'h02E;
rommem[13519] <= 12'h02E;
rommem[13520] <= 12'h02E;
rommem[13521] <= 12'h02E;
rommem[13522] <= 12'h02E;
rommem[13523] <= 12'h02E;
rommem[13524] <= 12'h02E;
rommem[13525] <= 12'h02E;
rommem[13526] <= 12'h02E;
rommem[13527] <= 12'h02E;
rommem[13528] <= 12'h02E;
rommem[13529] <= 12'h02E;
rommem[13530] <= 12'h02E;
rommem[13531] <= 12'h02E;
rommem[13532] <= 12'h02E;
rommem[13533] <= 12'h02E;
rommem[13534] <= 12'h02E;
rommem[13535] <= 12'h02E;
rommem[13536] <= 12'h02E;
rommem[13537] <= 12'h02E;
rommem[13538] <= 12'h02E;
rommem[13539] <= 12'h02E;
rommem[13540] <= 12'h02E;
rommem[13541] <= 12'h02E;
rommem[13542] <= 12'h02E;
rommem[13543] <= 12'h02E;
rommem[13544] <= 12'h02E;
rommem[13545] <= 12'h02E;
rommem[13546] <= 12'h02E;
rommem[13547] <= 12'h02E;
rommem[13548] <= 12'h02E;
rommem[13549] <= 12'h02E;
rommem[13550] <= 12'h02E;
rommem[13551] <= 12'h02E;
rommem[13552] <= 12'h02E;
rommem[13553] <= 12'h02E;
rommem[13554] <= 12'h02E;
rommem[13555] <= 12'h02E;
rommem[13556] <= 12'h02E;
rommem[13557] <= 12'h02E;
rommem[13558] <= 12'h02E;
rommem[13559] <= 12'h02E;
rommem[13560] <= 12'h02E;
rommem[13561] <= 12'h02E;
rommem[13562] <= 12'h0FA;
rommem[13563] <= 12'h02E;
rommem[13564] <= 12'h02E;
rommem[13565] <= 12'h02E;
rommem[13566] <= 12'h02E;
rommem[13567] <= 12'h02E;
rommem[13568] <= 12'h02E;
rommem[13569] <= 12'h02E;
rommem[13570] <= 12'h02E;
rommem[13571] <= 12'h02E;
rommem[13572] <= 12'h02E;
rommem[13573] <= 12'h02E;
rommem[13574] <= 12'h02E;
rommem[13575] <= 12'h02E;
rommem[13576] <= 12'h02E;
rommem[13577] <= 12'h02E;
rommem[13578] <= 12'h02E;
rommem[13579] <= 12'h02E;
rommem[13580] <= 12'h02E;
rommem[13581] <= 12'h009;
rommem[13582] <= 12'h07E;
rommem[13583] <= 12'h02E;
rommem[13584] <= 12'h02E;
rommem[13585] <= 12'h02E;
rommem[13586] <= 12'h02E;
rommem[13587] <= 12'h02E;
rommem[13588] <= 12'h02E;
rommem[13589] <= 12'h051;
rommem[13590] <= 12'h021;
rommem[13591] <= 12'h02E;
rommem[13592] <= 12'h02E;
rommem[13593] <= 12'h02E;
rommem[13594] <= 12'h05A;
rommem[13595] <= 12'h053;
rommem[13596] <= 12'h041;
rommem[13597] <= 12'h057;
rommem[13598] <= 12'h040;
rommem[13599] <= 12'h02E;
rommem[13600] <= 12'h02E;
rommem[13601] <= 12'h043;
rommem[13602] <= 12'h058;
rommem[13603] <= 12'h044;
rommem[13604] <= 12'h045;
rommem[13605] <= 12'h024;
rommem[13606] <= 12'h023;
rommem[13607] <= 12'h02E;
rommem[13608] <= 12'h02E;
rommem[13609] <= 12'h020;
rommem[13610] <= 12'h056;
rommem[13611] <= 12'h046;
rommem[13612] <= 12'h054;
rommem[13613] <= 12'h052;
rommem[13614] <= 12'h025;
rommem[13615] <= 12'h02E;
rommem[13616] <= 12'h02E;
rommem[13617] <= 12'h04E;
rommem[13618] <= 12'h042;
rommem[13619] <= 12'h048;
rommem[13620] <= 12'h047;
rommem[13621] <= 12'h059;
rommem[13622] <= 12'h05E;
rommem[13623] <= 12'h02E;
rommem[13624] <= 12'h02E;
rommem[13625] <= 12'h02E;
rommem[13626] <= 12'h04D;
rommem[13627] <= 12'h04A;
rommem[13628] <= 12'h055;
rommem[13629] <= 12'h026;
rommem[13630] <= 12'h02A;
rommem[13631] <= 12'h02E;
rommem[13632] <= 12'h02E;
rommem[13633] <= 12'h03C;
rommem[13634] <= 12'h04B;
rommem[13635] <= 12'h049;
rommem[13636] <= 12'h04F;
rommem[13637] <= 12'h029;
rommem[13638] <= 12'h028;
rommem[13639] <= 12'h02E;
rommem[13640] <= 12'h02E;
rommem[13641] <= 12'h03E;
rommem[13642] <= 12'h03F;
rommem[13643] <= 12'h04C;
rommem[13644] <= 12'h03A;
rommem[13645] <= 12'h050;
rommem[13646] <= 12'h05F;
rommem[13647] <= 12'h02E;
rommem[13648] <= 12'h02E;
rommem[13649] <= 12'h02E;
rommem[13650] <= 12'h022;
rommem[13651] <= 12'h02E;
rommem[13652] <= 12'h07B;
rommem[13653] <= 12'h02B;
rommem[13654] <= 12'h02E;
rommem[13655] <= 12'h02E;
rommem[13656] <= 12'h02E;
rommem[13657] <= 12'h02E;
rommem[13658] <= 12'h00D;
rommem[13659] <= 12'h07D;
rommem[13660] <= 12'h02E;
rommem[13661] <= 12'h07C;
rommem[13662] <= 12'h02E;
rommem[13663] <= 12'h02E;
rommem[13664] <= 12'h02E;
rommem[13665] <= 12'h02E;
rommem[13666] <= 12'h02E;
rommem[13667] <= 12'h02E;
rommem[13668] <= 12'h02E;
rommem[13669] <= 12'h02E;
rommem[13670] <= 12'h008;
rommem[13671] <= 12'h02E;
rommem[13672] <= 12'h02E;
rommem[13673] <= 12'h02E;
rommem[13674] <= 12'h02E;
rommem[13675] <= 12'h02E;
rommem[13676] <= 12'h02E;
rommem[13677] <= 12'h02E;
rommem[13678] <= 12'h02E;
rommem[13679] <= 12'h02E;
rommem[13680] <= 12'h02E;
rommem[13681] <= 12'h07F;
rommem[13682] <= 12'h02E;
rommem[13683] <= 12'h02E;
rommem[13684] <= 12'h02E;
rommem[13685] <= 12'h02E;
rommem[13686] <= 12'h01B;
rommem[13687] <= 12'h02E;
rommem[13688] <= 12'h02E;
rommem[13689] <= 12'h02E;
rommem[13690] <= 12'h02E;
rommem[13691] <= 12'h02E;
rommem[13692] <= 12'h02E;
rommem[13693] <= 12'h02E;
rommem[13694] <= 12'h02E;
rommem[13695] <= 12'h02E;
rommem[13696] <= 12'h02E;
rommem[13697] <= 12'h02E;
rommem[13698] <= 12'h02E;
rommem[13699] <= 12'h02E;
rommem[13700] <= 12'h02E;
rommem[13701] <= 12'h02E;
rommem[13702] <= 12'h02E;
rommem[13703] <= 12'h02E;
rommem[13704] <= 12'h02E;
rommem[13705] <= 12'h02E;
rommem[13706] <= 12'h02E;
rommem[13707] <= 12'h02E;
rommem[13708] <= 12'h02E;
rommem[13709] <= 12'h02E;
rommem[13710] <= 12'h02E;
rommem[13711] <= 12'h02E;
rommem[13712] <= 12'h02E;
rommem[13713] <= 12'h02E;
rommem[13714] <= 12'h02E;
rommem[13715] <= 12'h02E;
rommem[13716] <= 12'h02E;
rommem[13717] <= 12'h02E;
rommem[13718] <= 12'h02E;
rommem[13719] <= 12'h02E;
rommem[13720] <= 12'h02E;
rommem[13721] <= 12'h02E;
rommem[13722] <= 12'h02E;
rommem[13723] <= 12'h02E;
rommem[13724] <= 12'h02E;
rommem[13725] <= 12'h02E;
rommem[13726] <= 12'h02E;
rommem[13727] <= 12'h02E;
rommem[13728] <= 12'h02E;
rommem[13729] <= 12'h02E;
rommem[13730] <= 12'h02E;
rommem[13731] <= 12'h02E;
rommem[13732] <= 12'h02E;
rommem[13733] <= 12'h02E;
rommem[13734] <= 12'h02E;
rommem[13735] <= 12'h02E;
rommem[13736] <= 12'h02E;
rommem[13737] <= 12'h02E;
rommem[13738] <= 12'h02E;
rommem[13739] <= 12'h02E;
rommem[13740] <= 12'h02E;
rommem[13741] <= 12'h02E;
rommem[13742] <= 12'h02E;
rommem[13743] <= 12'h02E;
rommem[13744] <= 12'h02E;
rommem[13745] <= 12'h02E;
rommem[13746] <= 12'h02E;
rommem[13747] <= 12'h02E;
rommem[13748] <= 12'h02E;
rommem[13749] <= 12'h02E;
rommem[13750] <= 12'h02E;
rommem[13751] <= 12'h02E;
rommem[13752] <= 12'h02E;
rommem[13753] <= 12'h02E;
rommem[13754] <= 12'h02E;
rommem[13755] <= 12'h02E;
rommem[13756] <= 12'h02E;
rommem[13757] <= 12'h02E;
rommem[13758] <= 12'h02E;
rommem[13759] <= 12'h02E;
rommem[13760] <= 12'h02E;
rommem[13761] <= 12'h02E;
rommem[13762] <= 12'h02E;
rommem[13763] <= 12'h02E;
rommem[13764] <= 12'h02E;
rommem[13765] <= 12'h02E;
rommem[13766] <= 12'h02E;
rommem[13767] <= 12'h02E;
rommem[13768] <= 12'h02E;
rommem[13769] <= 12'h02E;
rommem[13770] <= 12'h02E;
rommem[13771] <= 12'h02E;
rommem[13772] <= 12'h02E;
rommem[13773] <= 12'h02E;
rommem[13774] <= 12'h02E;
rommem[13775] <= 12'h02E;
rommem[13776] <= 12'h02E;
rommem[13777] <= 12'h02E;
rommem[13778] <= 12'h02E;
rommem[13779] <= 12'h02E;
rommem[13780] <= 12'h02E;
rommem[13781] <= 12'h02E;
rommem[13782] <= 12'h02E;
rommem[13783] <= 12'h02E;
rommem[13784] <= 12'h02E;
rommem[13785] <= 12'h02E;
rommem[13786] <= 12'h02E;
rommem[13787] <= 12'h02E;
rommem[13788] <= 12'h02E;
rommem[13789] <= 12'h02E;
rommem[13790] <= 12'h02E;
rommem[13791] <= 12'h02E;
rommem[13792] <= 12'h02E;
rommem[13793] <= 12'h02E;
rommem[13794] <= 12'h02E;
rommem[13795] <= 12'h02E;
rommem[13796] <= 12'h02E;
rommem[13797] <= 12'h02E;
rommem[13798] <= 12'h02E;
rommem[13799] <= 12'h02E;
rommem[13800] <= 12'h02E;
rommem[13801] <= 12'h02E;
rommem[13802] <= 12'h02E;
rommem[13803] <= 12'h02E;
rommem[13804] <= 12'h02E;
rommem[13805] <= 12'h02E;
rommem[13806] <= 12'h02E;
rommem[13807] <= 12'h02E;
rommem[13808] <= 12'h02E;
rommem[13809] <= 12'h02E;
rommem[13810] <= 12'h02E;
rommem[13811] <= 12'h02E;
rommem[13812] <= 12'h02E;
rommem[13813] <= 12'h02E;
rommem[13814] <= 12'h02E;
rommem[13815] <= 12'h02E;
rommem[13816] <= 12'h02E;
rommem[13817] <= 12'h02E;
rommem[13818] <= 12'h02E;
rommem[13819] <= 12'h02E;
rommem[13820] <= 12'h02E;
rommem[13821] <= 12'h02E;
rommem[13822] <= 12'h02E;
rommem[13823] <= 12'h02E;
rommem[13824] <= 12'h02E;
rommem[13825] <= 12'h02E;
rommem[13826] <= 12'h02E;
rommem[13827] <= 12'h02E;
rommem[13828] <= 12'h02E;
rommem[13829] <= 12'h02E;
rommem[13830] <= 12'h02E;
rommem[13831] <= 12'h02E;
rommem[13832] <= 12'h02E;
rommem[13833] <= 12'h02E;
rommem[13834] <= 12'h02E;
rommem[13835] <= 12'h02E;
rommem[13836] <= 12'h02E;
rommem[13837] <= 12'h009;
rommem[13838] <= 12'h07E;
rommem[13839] <= 12'h02E;
rommem[13840] <= 12'h02E;
rommem[13841] <= 12'h02E;
rommem[13842] <= 12'h02E;
rommem[13843] <= 12'h02E;
rommem[13844] <= 12'h02E;
rommem[13845] <= 12'h011;
rommem[13846] <= 12'h021;
rommem[13847] <= 12'h02E;
rommem[13848] <= 12'h02E;
rommem[13849] <= 12'h02E;
rommem[13850] <= 12'h01A;
rommem[13851] <= 12'h013;
rommem[13852] <= 12'h001;
rommem[13156] <= 12'h04C;
rommem[13157] <= 12'h044;
rommem[13158] <= 12'h053;
rommem[13159] <= 12'h020;
rommem[13160] <= 12'h007;
rommem[13161] <= 12'h04C;
rommem[13162] <= 12'h044;
rommem[13163] <= 12'h053;
rommem[13164] <= 12'h020;
rommem[13165] <= 12'h001;
rommem[13166] <= 12'h053;
rommem[13167] <= 12'h054;
rommem[13168] <= 12'h053;
rommem[13169] <= 12'h020;
rommem[13170] <= 12'h001;
rommem[13171] <= 12'h04C;
rommem[13172] <= 12'h044;
rommem[13173] <= 12'h053;
rommem[13174] <= 12'h020;
rommem[13175] <= 12'h005;
rommem[13176] <= 12'h053;
rommem[13177] <= 12'h054;
rommem[13178] <= 12'h053;
rommem[13179] <= 12'h020;
rommem[13180] <= 12'h005;
rommem[13181] <= 12'h04C;
rommem[13182] <= 12'h044;
rommem[13183] <= 12'h053;
rommem[13184] <= 12'h020;
rommem[13185] <= 12'h006;
rommem[13186] <= 12'h053;
rommem[13187] <= 12'h054;
rommem[13188] <= 12'h053;
rommem[13189] <= 12'h020;
rommem[13190] <= 12'h006;
rommem[13191] <= 12'h053;
rommem[13192] <= 12'h057;
rommem[13193] <= 12'h049;
rommem[13194] <= 12'h033;
rommem[13195] <= 12'h000;
rommem[13196] <= 12'h043;
rommem[13197] <= 12'h04D;
rommem[13198] <= 12'h050;
rommem[13199] <= 12'h055;
rommem[13200] <= 12'h007;
rommem[13201] <= 12'h043;
rommem[13202] <= 12'h04D;
rommem[13203] <= 12'h050;
rommem[13204] <= 12'h053;
rommem[13205] <= 12'h007;
rommem[13206] <= 12'h043;
rommem[13207] <= 12'h04D;
rommem[13208] <= 12'h050;
rommem[13209] <= 12'h055;
rommem[13210] <= 12'h001;
rommem[13211] <= 12'h043;
rommem[13212] <= 12'h04D;
rommem[13213] <= 12'h050;
rommem[13214] <= 12'h053;
rommem[13215] <= 12'h001;
rommem[13216] <= 12'h043;
rommem[13217] <= 12'h04D;
rommem[13218] <= 12'h050;
rommem[13219] <= 12'h055;
rommem[13220] <= 12'h005;
rommem[13221] <= 12'h043;
rommem[13222] <= 12'h04D;
rommem[13223] <= 12'h050;
rommem[13224] <= 12'h053;
rommem[13225] <= 12'h005;
rommem[13226] <= 12'h043;
rommem[13227] <= 12'h04D;
rommem[13228] <= 12'h050;
rommem[13229] <= 12'h055;
rommem[13230] <= 12'h006;
rommem[13231] <= 12'h043;
rommem[13232] <= 12'h04D;
rommem[13233] <= 12'h050;
rommem[13234] <= 12'h053;
rommem[13235] <= 12'h006;
rommem[13236] <= 12'h017;
rommem[13237] <= 12'h000;
rommem[13238] <= 12'h5FE;
rommem[13239] <= 12'h017;
rommem[13240] <= 12'hFFD;
rommem[13241] <= 12'hD18;
rommem[13242] <= 12'h1BE;
rommem[13243] <= 12'h000;
rommem[13244] <= 12'h922;
rommem[13245] <= 12'h01F;
rommem[13246] <= 12'h020;
rommem[13247] <= 12'h017;
rommem[13248] <= 12'hFFF;
rommem[13249] <= 12'h02B;
rommem[13250] <= 12'h0C6;
rommem[13251] <= 12'h020;
rommem[13252] <= 12'h017;
rommem[13253] <= 12'hFFF;
rommem[13254] <= 12'h94B;
rommem[13255] <= 12'h0E6;
rommem[13256] <= 12'hA00;
rommem[13257] <= 12'h0C5;
rommem[13258] <= 12'h300;
rommem[13259] <= 12'h126;
rommem[13260] <= 12'h000;
rommem[13261] <= 12'h400;
rommem[13262] <= 12'h08E;
rommem[13263] <= 12'hFFE;
rommem[13264] <= 12'hDB4;
rommem[13265] <= 12'h086;
rommem[13266] <= 12'h005;
rommem[13267] <= 12'h03D;
rommem[13268] <= 12'h03A;
rommem[13269] <= 12'h0E6;
rommem[13270] <= 12'h800;
rommem[13271] <= 12'h017;
rommem[13272] <= 12'hFFF;
rommem[13273] <= 12'h938;
rommem[13274] <= 12'h0E6;
rommem[13275] <= 12'h800;
rommem[13276] <= 12'h017;
rommem[13277] <= 12'hFFF;
rommem[13278] <= 12'h933;
rommem[13279] <= 12'h0E6;
rommem[13280] <= 12'h800;
rommem[13281] <= 12'h017;
rommem[13282] <= 12'hFFF;
rommem[13283] <= 12'h92E;
rommem[13284] <= 12'h0E6;
rommem[13285] <= 12'h800;
rommem[13286] <= 12'h017;
rommem[13287] <= 12'hFFF;
rommem[13288] <= 12'h929;
rommem[13289] <= 12'h0C6;
rommem[13290] <= 12'h020;
rommem[13291] <= 12'h017;
rommem[13292] <= 12'hFFF;
rommem[13293] <= 12'h924;
rommem[13294] <= 12'h0E6;
rommem[13295] <= 12'h800;
rommem[13296] <= 12'h127;
rommem[13297] <= 12'h000;
rommem[13298] <= 12'h42E;
rommem[13299] <= 12'h0C1;
rommem[13300] <= 12'h001;
rommem[13301] <= 12'h026;
rommem[13302] <= 12'h008;
rommem[13303] <= 12'h0E6;
rommem[13304] <= 12'hA00;
rommem[13305] <= 12'h017;
rommem[13306] <= 12'hFFE;
rommem[13307] <= 12'hFFA;
rommem[13308] <= 12'h016;
rommem[13309] <= 12'h000;
rommem[13310] <= 12'h422;
rommem[13311] <= 12'h0C1;
rommem[13312] <= 12'h002;
rommem[13313] <= 12'h026;
rommem[13314] <= 12'h00C;
rommem[13315] <= 12'h0EC;
rommem[13316] <= 12'hA01;
rommem[13317] <= 12'h030;
rommem[13318] <= 12'hA0B;
rommem[13319] <= 12'h01F;
rommem[13320] <= 12'h010;
rommem[13321] <= 12'h017;
rommem[13322] <= 12'hFFE;
rommem[13323] <= 12'hFE1;
rommem[13324] <= 12'h016;
rommem[13325] <= 12'h000;
rommem[13326] <= 12'h412;
rommem[13327] <= 12'h0C1;
rommem[13328] <= 12'h004;
rommem[13329] <= 12'h026;
rommem[13330] <= 12'h005;
rommem[13331] <= 12'h0E6;
rommem[13332] <= 12'hA00;
rommem[13333] <= 12'h04F;
rommem[13334] <= 12'h020;
rommem[13335] <= 12'hFED;
rommem[13336] <= 12'h0C1;
rommem[13337] <= 12'h005;
rommem[13338] <= 12'h026;
rommem[13339] <= 12'h385;
rommem[13340] <= 12'h0E6;
rommem[13341] <= 12'hA00;
rommem[13342] <= 12'h0C5;
rommem[13343] <= 12'h800;
rommem[13344] <= 12'h026;
rommem[13345] <= 12'h01E;
rommem[13346] <= 12'h034;
rommem[13347] <= 12'h004;
rommem[13348] <= 12'h0C4;
rommem[13349] <= 12'h1FF;
rommem[13350] <= 12'h04F;
rommem[13351] <= 12'h0C5;
rommem[13352] <= 12'h100;
rommem[13353] <= 12'h027;
rommem[13354] <= 12'h003;
rommem[13355] <= 12'h04A;
rommem[13356] <= 12'h0CA;
rommem[13357] <= 12'hE00;
rommem[13358] <= 12'h017;
rommem[13359] <= 12'hFFE;
rommem[13360] <= 12'hFBC;
rommem[13361] <= 12'h0C6;
rommem[13362] <= 12'h02C;
rommem[13363] <= 12'h017;
rommem[13364] <= 12'hFFF;
rommem[13365] <= 12'h8DC;
rommem[13366] <= 12'h035;
rommem[13367] <= 12'h004;
rommem[13368] <= 12'h08D;
rommem[13369] <= 12'h3F7;
rommem[13370] <= 12'h017;
rommem[13371] <= 12'hFFF;
rommem[13372] <= 12'h8D5;
rommem[13373] <= 12'h016;
rommem[13374] <= 12'h000;
rommem[13375] <= 12'h3E1;
rommem[13376] <= 12'h034;
rommem[13377] <= 12'h004;
rommem[13378] <= 12'h0C5;
rommem[13379] <= 12'h100;
rommem[13380] <= 12'h026;
rommem[13381] <= 12'h005;
rommem[13382] <= 12'h0C6;
rommem[13383] <= 12'h05B;
rommem[13384] <= 12'h017;
rommem[13385] <= 12'hFFF;
rommem[13386] <= 12'h8C7;
rommem[13387] <= 12'h0E6;
rommem[13388] <= 12'hE04;
rommem[13389] <= 12'h0C4;
rommem[13390] <= 12'h00F;
rommem[13391] <= 12'h026;
rommem[13392] <= 12'h030;
rommem[13393] <= 12'h0E6;
rommem[13394] <= 12'hE04;
rommem[13395] <= 12'h0C5;
rommem[13396] <= 12'h080;
rommem[13397] <= 12'h026;
rommem[13398] <= 12'h005;
rommem[13399] <= 12'h0C6;
rommem[13400] <= 12'h05D;
rommem[13401] <= 12'h017;
rommem[13402] <= 12'hFFF;
rommem[13403] <= 12'h8B6;
rommem[13404] <= 12'h0C6;
rommem[13405] <= 12'h02C;
rommem[13406] <= 12'h017;
rommem[13407] <= 12'hFFF;
rommem[13408] <= 12'h8B1;
rommem[13409] <= 12'h0E6;
rommem[13410] <= 12'hE04;
rommem[13411] <= 12'h08D;
rommem[13412] <= 12'h3CC;
rommem[13413] <= 12'h017;
rommem[13414] <= 12'hFFF;
rommem[13415] <= 12'h8AA;
rommem[13416] <= 12'h0C6;
rommem[13417] <= 12'h02B;
rommem[13418] <= 12'h017;
rommem[13419] <= 12'hFFF;
rommem[13420] <= 12'h8A5;
rommem[13421] <= 12'h035;
rommem[13422] <= 12'h004;
rommem[13423] <= 12'h0C5;
rommem[13424] <= 12'h100;
rommem[13425] <= 12'h126;
rommem[13426] <= 12'h000;
rommem[13427] <= 12'h3AD;
rommem[13428] <= 12'h0C5;
rommem[13429] <= 12'h080;
rommem[13430] <= 12'h126;
rommem[13431] <= 12'h000;
rommem[13432] <= 12'h3A8;
rommem[13433] <= 12'h0C6;
rommem[13434] <= 12'h05D;
rommem[13435] <= 12'h017;
rommem[13436] <= 12'hFFF;
rommem[13437] <= 12'h894;
rommem[13438] <= 12'h016;
rommem[13439] <= 12'h000;
rommem[13440] <= 12'h3A0;
rommem[13441] <= 12'h0C1;
rommem[13442] <= 12'h001;
rommem[13443] <= 12'h026;
rommem[13444] <= 12'h033;
rommem[13445] <= 12'h0E6;
rommem[13446] <= 12'hE04;
rommem[13447] <= 12'h0C5;
rommem[13448] <= 12'h080;
rommem[13449] <= 12'h026;
rommem[13450] <= 12'h005;
rommem[13451] <= 12'h0C6;
rommem[13452] <= 12'h05D;
rommem[13453] <= 12'h017;
rommem[13454] <= 12'hFFF;
rommem[13455] <= 12'h882;
rommem[13456] <= 12'h0C6;
rommem[13457] <= 12'h02C;
rommem[13458] <= 12'h017;
rommem[13459] <= 12'hFFF;
rommem[13460] <= 12'h87D;
rommem[13461] <= 12'h0E6;
rommem[13462] <= 12'hE04;
rommem[13463] <= 12'h08D;
rommem[13464] <= 12'h398;
rommem[13465] <= 12'h017;
rommem[13466] <= 12'hFFF;
rommem[13467] <= 12'h876;
rommem[13468] <= 12'h0C6;
rommem[13469] <= 12'h02B;
rommem[13470] <= 12'h017;
rommem[13471] <= 12'hFFF;
rommem[13472] <= 12'h871;
rommem[13473] <= 12'h017;
rommem[13474] <= 12'hFFF;
rommem[13475] <= 12'h86E;
rommem[13476] <= 12'h035;
rommem[13477] <= 12'h004;
rommem[13478] <= 12'h0C5;
rommem[13479] <= 12'h100;
rommem[13480] <= 12'h126;
rommem[13481] <= 12'h000;
rommem[13482] <= 12'h376;
rommem[13483] <= 12'h0C5;
rommem[13484] <= 12'h080;
rommem[13485] <= 12'h126;
rommem[13486] <= 12'h000;
rommem[13487] <= 12'h371;
rommem[13488] <= 12'h0C6;
rommem[13489] <= 12'h05D;
rommem[13490] <= 12'h017;
rommem[13491] <= 12'hFFF;
rommem[13492] <= 12'h85D;
rommem[13493] <= 12'h016;
rommem[13494] <= 12'h000;
rommem[13495] <= 12'h369;
rommem[13496] <= 12'h0C1;
rommem[13497] <= 12'h002;
rommem[13498] <= 12'h026;
rommem[13499] <= 12'h030;
rommem[13500] <= 12'h0E6;
rommem[13501] <= 12'hE04;
rommem[13502] <= 12'h0C5;
rommem[13503] <= 12'h080;
rommem[13504] <= 12'h026;
rommem[13505] <= 12'h005;
rommem[13506] <= 12'h0C6;
rommem[13507] <= 12'h05D;
rommem[13508] <= 12'h017;
rommem[13509] <= 12'hFFF;
rommem[13510] <= 12'h84B;
rommem[13511] <= 12'h0C6;
rommem[13512] <= 12'h02C;
rommem[13513] <= 12'h017;
rommem[13514] <= 12'hFFF;
rommem[13515] <= 12'h846;
rommem[13516] <= 12'h0E6;
rommem[13517] <= 12'hE04;
rommem[13518] <= 12'h08D;
rommem[13519] <= 12'h361;
rommem[13520] <= 12'h017;
rommem[13521] <= 12'hFFF;
rommem[13522] <= 12'h83F;
rommem[13523] <= 12'h0C6;
rommem[13524] <= 12'h02D;
rommem[13525] <= 12'h017;
rommem[13526] <= 12'hFFF;
rommem[13527] <= 12'h83A;
rommem[13528] <= 12'h035;
rommem[13529] <= 12'h004;
rommem[13530] <= 12'h0C5;
rommem[13531] <= 12'h100;
rommem[13532] <= 12'h126;
rommem[13533] <= 12'h000;
rommem[13534] <= 12'h342;
rommem[13535] <= 12'h0C5;
rommem[13536] <= 12'h080;
rommem[13537] <= 12'h126;
rommem[13538] <= 12'h000;
rommem[13539] <= 12'h33D;
rommem[13540] <= 12'h0C6;
rommem[13541] <= 12'h05D;
rommem[13542] <= 12'h017;
rommem[13543] <= 12'hFFF;
rommem[13544] <= 12'h829;
rommem[13545] <= 12'h016;
rommem[13546] <= 12'h000;
rommem[13547] <= 12'h335;
rommem[13548] <= 12'h0C1;
rommem[13549] <= 12'h003;
rommem[13550] <= 12'h026;
rommem[13551] <= 12'h033;
rommem[13552] <= 12'h0E6;
rommem[13553] <= 12'hE04;
rommem[13554] <= 12'h0C5;
rommem[13555] <= 12'h080;
rommem[13556] <= 12'h026;
rommem[13557] <= 12'h005;
rommem[13558] <= 12'h0C6;
rommem[13559] <= 12'h05D;
rommem[13560] <= 12'h017;
rommem[13561] <= 12'hFFF;
rommem[13562] <= 12'h817;
rommem[13563] <= 12'h0C6;
rommem[13564] <= 12'h02C;
rommem[13565] <= 12'h017;
rommem[13566] <= 12'hFFF;
rommem[13567] <= 12'h812;
rommem[13568] <= 12'h0E6;
rommem[13569] <= 12'hE04;
rommem[13570] <= 12'h08D;
rommem[13571] <= 12'h32D;
rommem[13572] <= 12'h017;
rommem[13573] <= 12'hFFF;
rommem[13574] <= 12'h80B;
rommem[13575] <= 12'h0C6;
rommem[13576] <= 12'h02D;
rommem[13577] <= 12'h017;
rommem[13578] <= 12'hFFF;
rommem[13579] <= 12'h806;
rommem[13580] <= 12'h017;
rommem[13581] <= 12'hFFF;
rommem[13582] <= 12'h803;
rommem[13583] <= 12'h035;
rommem[13584] <= 12'h004;
rommem[13585] <= 12'h0C5;
rommem[13586] <= 12'h100;
rommem[13587] <= 12'h126;
rommem[13588] <= 12'h000;
rommem[13589] <= 12'h30B;
rommem[13590] <= 12'h0C5;
rommem[13591] <= 12'h080;
rommem[13592] <= 12'h126;
rommem[13593] <= 12'h000;
rommem[13594] <= 12'h306;
rommem[13595] <= 12'h0C6;
rommem[13596] <= 12'h05D;
rommem[13597] <= 12'h017;
rommem[13598] <= 12'hFFF;
rommem[13599] <= 12'h7F2;
rommem[13600] <= 12'h016;
rommem[13601] <= 12'h000;
rommem[13602] <= 12'h2FE;
rommem[13603] <= 12'h0C1;
rommem[13604] <= 12'h004;
rommem[13605] <= 12'h026;
rommem[13606] <= 12'h02B;
rommem[13607] <= 12'h0E6;
rommem[13608] <= 12'hE04;
rommem[13609] <= 12'h0C5;
rommem[13610] <= 12'h080;
rommem[13611] <= 12'h026;
rommem[13612] <= 12'h005;
rommem[13613] <= 12'h0C6;
rommem[13614] <= 12'h05D;
rommem[13615] <= 12'h017;
rommem[13616] <= 12'hFFF;
rommem[13617] <= 12'h7E0;
rommem[13618] <= 12'h0C6;
rommem[13619] <= 12'h02C;
rommem[13620] <= 12'h017;
rommem[13621] <= 12'hFFF;
rommem[13622] <= 12'h7DB;
rommem[13623] <= 12'h0E6;
rommem[13624] <= 12'hE04;
rommem[13625] <= 12'h08D;
rommem[13626] <= 12'h2F6;
rommem[13627] <= 12'h017;
rommem[13628] <= 12'hFFF;
rommem[13629] <= 12'h7D4;
rommem[13630] <= 12'h035;
rommem[13631] <= 12'h004;
rommem[13632] <= 12'h0C5;
rommem[13633] <= 12'h100;
rommem[13634] <= 12'h126;
rommem[13635] <= 12'h000;
rommem[13636] <= 12'h2DC;
rommem[13637] <= 12'h0C5;
rommem[13638] <= 12'h080;
rommem[13639] <= 12'h126;
rommem[13640] <= 12'h000;
rommem[13641] <= 12'h2D7;
rommem[13642] <= 12'h0C6;
rommem[13643] <= 12'h05D;
rommem[13644] <= 12'h017;
rommem[13645] <= 12'hFFF;
rommem[13646] <= 12'h7C3;
rommem[13647] <= 12'h016;
rommem[13648] <= 12'h000;
rommem[13649] <= 12'h2CF;
rommem[13650] <= 12'h0C1;
rommem[13651] <= 12'h005;
rommem[13652] <= 12'h026;
rommem[13653] <= 12'h038;
rommem[13654] <= 12'h0C6;
rommem[13655] <= 12'h042;
rommem[13656] <= 12'h017;
rommem[13657] <= 12'hFFF;
rommem[13658] <= 12'h7B7;
rommem[13659] <= 12'h0E6;
rommem[13660] <= 12'hE04;
rommem[13661] <= 12'h0C5;
rommem[13662] <= 12'h080;
rommem[13663] <= 12'h026;
rommem[13664] <= 12'h005;
rommem[13665] <= 12'h0C6;
rommem[13666] <= 12'h05D;
rommem[13667] <= 12'h017;
rommem[13668] <= 12'hFFF;
rommem[13669] <= 12'h7AC;
rommem[13670] <= 12'h0C6;
rommem[13671] <= 12'h02C;
rommem[13672] <= 12'h017;
rommem[13673] <= 12'hFFF;
rommem[13674] <= 12'h7A7;
rommem[13675] <= 12'h0E6;
rommem[13676] <= 12'hE04;
rommem[13677] <= 12'h08D;
rommem[13678] <= 12'h2C2;
rommem[13679] <= 12'h017;
rommem[13680] <= 12'hFFF;
rommem[13681] <= 12'h7A0;
rommem[13682] <= 12'h0C6;
rommem[13683] <= 12'h02D;
rommem[13684] <= 12'h017;
rommem[13685] <= 12'hFFF;
rommem[13686] <= 12'h79B;
rommem[13687] <= 12'h017;
rommem[13688] <= 12'hFFF;
rommem[13689] <= 12'h798;
rommem[13690] <= 12'h035;
rommem[13691] <= 12'h004;
rommem[13692] <= 12'h0C5;
rommem[13693] <= 12'h100;
rommem[13694] <= 12'h126;
rommem[13695] <= 12'h000;
rommem[13696] <= 12'h2A0;
rommem[13697] <= 12'h0C5;
rommem[13698] <= 12'h080;
rommem[13699] <= 12'h126;
rommem[13700] <= 12'h000;
rommem[13701] <= 12'h29B;
rommem[13702] <= 12'h0C6;
rommem[13703] <= 12'h05D;
rommem[13704] <= 12'h017;
rommem[13705] <= 12'hFFF;
rommem[13706] <= 12'h787;
rommem[13707] <= 12'h016;
rommem[13708] <= 12'h000;
rommem[13709] <= 12'h293;
rommem[13710] <= 12'h0C1;
rommem[13711] <= 12'h006;
rommem[13712] <= 12'h026;
rommem[13713] <= 12'h038;
rommem[13714] <= 12'h0C6;
rommem[13715] <= 12'h041;
rommem[13716] <= 12'h017;
rommem[13717] <= 12'hFFF;
rommem[13718] <= 12'h77B;
rommem[13719] <= 12'h0E6;
rommem[13720] <= 12'hE04;
rommem[13721] <= 12'h0C5;
rommem[13722] <= 12'h080;
rommem[13723] <= 12'h026;
rommem[13724] <= 12'h005;
rommem[13725] <= 12'h0C6;
rommem[13726] <= 12'h05D;
rommem[13727] <= 12'h017;
rommem[13728] <= 12'hFFF;
rommem[13729] <= 12'h770;
rommem[13730] <= 12'h0C6;
rommem[13731] <= 12'h02C;
rommem[13732] <= 12'h017;
rommem[13733] <= 12'hFFF;
rommem[13734] <= 12'h76B;
rommem[13735] <= 12'h0E6;
rommem[13736] <= 12'hE04;
rommem[13737] <= 12'h08D;
rommem[13738] <= 12'h286;
rommem[13739] <= 12'h017;
rommem[13740] <= 12'hFFF;
rommem[13741] <= 12'h764;
rommem[13742] <= 12'h0C6;
rommem[13743] <= 12'h02D;
rommem[13744] <= 12'h017;
rommem[13745] <= 12'hFFF;
rommem[13746] <= 12'h75F;
rommem[13747] <= 12'h017;
rommem[13748] <= 12'hFFF;
rommem[13749] <= 12'h75C;
rommem[13750] <= 12'h035;
rommem[13751] <= 12'h004;
rommem[13752] <= 12'h0C5;
rommem[13753] <= 12'h100;
rommem[13754] <= 12'h126;
rommem[13755] <= 12'h000;
rommem[13756] <= 12'h264;
rommem[13757] <= 12'h0C5;
rommem[13758] <= 12'h080;
rommem[13759] <= 12'h126;
rommem[13760] <= 12'h000;
rommem[13761] <= 12'h25F;
rommem[13762] <= 12'h0C6;
rommem[13763] <= 12'h05D;
rommem[13764] <= 12'h017;
rommem[13765] <= 12'hFFF;
rommem[13766] <= 12'h74B;
rommem[13767] <= 12'h016;
rommem[13768] <= 12'h000;
rommem[13769] <= 12'h257;
rommem[13770] <= 12'h0C1;
rommem[13771] <= 12'h008;
rommem[13772] <= 12'h026;
rommem[13773] <= 12'h039;
rommem[13774] <= 12'h0E6;
rommem[13775] <= 12'hA00;
rommem[13776] <= 12'h01D;
rommem[13777] <= 12'h017;
rommem[13778] <= 12'hFFE;
rommem[13779] <= 12'hE19;
rommem[13780] <= 12'h0E6;
rommem[13781] <= 12'hE04;
rommem[13782] <= 12'h0C5;
rommem[13783] <= 12'h080;
rommem[13784] <= 12'h026;
rommem[13785] <= 12'h005;
rommem[13786] <= 12'h0C6;
rommem[13787] <= 12'h05D;
rommem[13788] <= 12'h017;
rommem[13789] <= 12'hFFF;
rommem[13790] <= 12'h733;
rommem[13791] <= 12'h0C6;
rommem[13792] <= 12'h02C;
rommem[13793] <= 12'h017;
rommem[13794] <= 12'hFFF;
rommem[13795] <= 12'h72E;
rommem[13796] <= 12'h0E6;
rommem[13797] <= 12'hE04;
rommem[13798] <= 12'h08D;
rommem[13799] <= 12'h249;
rommem[13800] <= 12'h017;
rommem[13801] <= 12'hFFF;
rommem[13802] <= 12'h727;
rommem[13803] <= 12'h0C6;
rommem[13804] <= 12'h02D;
rommem[13805] <= 12'h017;
rommem[13806] <= 12'hFFF;
rommem[13807] <= 12'h722;
rommem[13808] <= 12'h017;
rommem[13809] <= 12'hFFF;
rommem[13810] <= 12'h71F;
rommem[13811] <= 12'h035;
rommem[13812] <= 12'h004;
rommem[13813] <= 12'h0C5;
rommem[13814] <= 12'h100;
rommem[13815] <= 12'h126;
rommem[13816] <= 12'h000;
rommem[13817] <= 12'h227;
rommem[13818] <= 12'h0C5;
rommem[13819] <= 12'h080;
rommem[13820] <= 12'h126;
rommem[13821] <= 12'h000;
rommem[13822] <= 12'h222;
rommem[13823] <= 12'h0C6;
rommem[13824] <= 12'h05D;
rommem[13825] <= 12'h017;
rommem[13826] <= 12'hFFF;
rommem[13827] <= 12'h70E;
rommem[13828] <= 12'h016;
rommem[13829] <= 12'h000;
rommem[13830] <= 12'h21A;
rommem[13831] <= 12'h0C1;
rommem[13832] <= 12'h009;
rommem[13833] <= 12'h026;
rommem[13834] <= 12'h038;
rommem[13835] <= 12'h0EC;
rommem[13836] <= 12'hA01;
rommem[13837] <= 12'h017;
rommem[13838] <= 12'hFFE;
rommem[13839] <= 12'hDDD;
rommem[13840] <= 12'h0E6;
rommem[13841] <= 12'hE04;
rommem[13842] <= 12'h0C5;
rommem[13843] <= 12'h080;
rommem[13844] <= 12'h026;
rommem[13845] <= 12'h005;
rommem[13846] <= 12'h0C6;
rommem[13847] <= 12'h05D;
rommem[13848] <= 12'h017;
rommem[13849] <= 12'hFFF;
rommem[13850] <= 12'h6F7;
rommem[13851] <= 12'h0C6;
rommem[13852] <= 12'h02C;
rommem[13853] <= 12'h017;
rommem[13854] <= 12'h040;
rommem[13855] <= 12'h02E;
rommem[13856] <= 12'h02E;
rommem[13857] <= 12'h003;
rommem[13858] <= 12'h018;
rommem[13859] <= 12'h004;
rommem[13860] <= 12'h005;
rommem[13861] <= 12'h024;
rommem[13862] <= 12'h023;
rommem[13863] <= 12'h02E;
rommem[13864] <= 12'h02E;
rommem[13865] <= 12'h020;
rommem[13866] <= 12'h016;
rommem[13867] <= 12'h006;
rommem[13868] <= 12'h014;
rommem[13869] <= 12'h012;
rommem[13870] <= 12'h025;
rommem[13871] <= 12'h02E;
rommem[13872] <= 12'h02E;
rommem[13873] <= 12'h00E;
rommem[13874] <= 12'h002;
rommem[13875] <= 12'h008;
rommem[13876] <= 12'h007;
rommem[13877] <= 12'h019;
rommem[13878] <= 12'h05E;
rommem[13879] <= 12'h02E;
rommem[13880] <= 12'h02E;
rommem[13881] <= 12'h02E;
rommem[13882] <= 12'h00D;
rommem[13883] <= 12'h00A;
rommem[13884] <= 12'h015;
rommem[13885] <= 12'h026;
rommem[13886] <= 12'h02A;
rommem[13887] <= 12'h02E;
rommem[13888] <= 12'h02E;
rommem[13889] <= 12'h03C;
rommem[13890] <= 12'h00B;
rommem[13891] <= 12'h009;
rommem[13892] <= 12'h00F;
rommem[13893] <= 12'h029;
rommem[13894] <= 12'h028;
rommem[13895] <= 12'h02E;
rommem[13896] <= 12'h02E;
rommem[13897] <= 12'h03E;
rommem[13898] <= 12'h03F;
rommem[13899] <= 12'h00C;
rommem[13900] <= 12'h03A;
rommem[13901] <= 12'h010;
rommem[13902] <= 12'h05F;
rommem[13903] <= 12'h02E;
rommem[13904] <= 12'h02E;
rommem[13905] <= 12'h02E;
rommem[13906] <= 12'h022;
rommem[13907] <= 12'h02E;
rommem[13908] <= 12'h07B;
rommem[13909] <= 12'h02B;
rommem[13910] <= 12'h02E;
rommem[13911] <= 12'h02E;
rommem[13912] <= 12'h02E;
rommem[13913] <= 12'h02E;
rommem[13914] <= 12'h00D;
rommem[13915] <= 12'h07D;
rommem[13916] <= 12'h02E;
rommem[13917] <= 12'h07C;
rommem[13918] <= 12'h02E;
rommem[13919] <= 12'h02E;
rommem[13920] <= 12'h02E;
rommem[13921] <= 12'h02E;
rommem[13922] <= 12'h02E;
rommem[13923] <= 12'h02E;
rommem[13924] <= 12'h02E;
rommem[13925] <= 12'h02E;
rommem[13926] <= 12'h008;
rommem[13927] <= 12'h02E;
rommem[13928] <= 12'h02E;
rommem[13929] <= 12'h02E;
rommem[13930] <= 12'h02E;
rommem[13931] <= 12'h02E;
rommem[13932] <= 12'h02E;
rommem[13933] <= 12'h02E;
rommem[13934] <= 12'h02E;
rommem[13935] <= 12'h02E;
rommem[13936] <= 12'h02E;
rommem[13937] <= 12'h07F;
rommem[13938] <= 12'h02E;
rommem[13939] <= 12'h02E;
rommem[13940] <= 12'h02E;
rommem[13941] <= 12'h02E;
rommem[13942] <= 12'h01B;
rommem[13943] <= 12'h02E;
rommem[13944] <= 12'h02E;
rommem[13945] <= 12'h02E;
rommem[13946] <= 12'h02E;
rommem[13947] <= 12'h02E;
rommem[13948] <= 12'h02E;
rommem[13949] <= 12'h02E;
rommem[13950] <= 12'h02E;
rommem[13951] <= 12'h02E;
rommem[13952] <= 12'h02E;
rommem[13953] <= 12'h02E;
rommem[13954] <= 12'h02E;
rommem[13955] <= 12'h02E;
rommem[13956] <= 12'h0A3;
rommem[13957] <= 12'h0A1;
rommem[13958] <= 12'h0A2;
rommem[13959] <= 12'h02E;
rommem[13960] <= 12'h02E;
rommem[13961] <= 12'h02E;
rommem[13962] <= 12'h02E;
rommem[13963] <= 12'h02E;
rommem[13964] <= 12'h02E;
rommem[13965] <= 12'h02E;
rommem[13966] <= 12'h02E;
rommem[13967] <= 12'h02E;
rommem[13968] <= 12'h02E;
rommem[13969] <= 12'h02E;
rommem[13970] <= 12'h02E;
rommem[13971] <= 12'h02E;
rommem[13972] <= 12'h02E;
rommem[13973] <= 12'h02E;
rommem[13974] <= 12'h02E;
rommem[13975] <= 12'h02E;
rommem[13976] <= 12'h02E;
rommem[13977] <= 12'h02E;
rommem[13978] <= 12'h02E;
rommem[13979] <= 12'h02E;
rommem[13980] <= 12'h02E;
rommem[13981] <= 12'h02E;
rommem[13982] <= 12'h02E;
rommem[13983] <= 12'h02E;
rommem[13984] <= 12'h02E;
rommem[13985] <= 12'h02E;
rommem[13986] <= 12'h02E;
rommem[13987] <= 12'h02E;
rommem[13988] <= 12'h02E;
rommem[13989] <= 12'h02E;
rommem[13990] <= 12'h02E;
rommem[13991] <= 12'h02E;
rommem[13992] <= 12'h02E;
rommem[13993] <= 12'h02E;
rommem[13994] <= 12'h02E;
rommem[13995] <= 12'h02E;
rommem[13996] <= 12'h02E;
rommem[13997] <= 12'h02E;
rommem[13998] <= 12'h02E;
rommem[13999] <= 12'h02E;
rommem[14000] <= 12'h02E;
rommem[14001] <= 12'h02E;
rommem[14002] <= 12'h02E;
rommem[14003] <= 12'h02E;
rommem[14004] <= 12'h02E;
rommem[14005] <= 12'h02E;
rommem[14006] <= 12'h02E;
rommem[14007] <= 12'h02E;
rommem[14008] <= 12'h02E;
rommem[14009] <= 12'h02E;
rommem[14010] <= 12'h02E;
rommem[14011] <= 12'h02E;
rommem[14012] <= 12'h02E;
rommem[14013] <= 12'h02E;
rommem[14014] <= 12'h02E;
rommem[14015] <= 12'h02E;
rommem[14016] <= 12'h02E;
rommem[14017] <= 12'h02E;
rommem[14018] <= 12'h02E;
rommem[14019] <= 12'h02E;
rommem[14020] <= 12'h02E;
rommem[14021] <= 12'h02E;
rommem[14022] <= 12'h02E;
rommem[14023] <= 12'h02E;
rommem[14024] <= 12'h02E;
rommem[14025] <= 12'h02E;
rommem[14026] <= 12'h02E;
rommem[14027] <= 12'h02E;
rommem[14028] <= 12'h02E;
rommem[14029] <= 12'h02E;
rommem[14030] <= 12'h02E;
rommem[14031] <= 12'h02E;
rommem[14032] <= 12'h02E;
rommem[14033] <= 12'h02E;
rommem[14034] <= 12'h02E;
rommem[14035] <= 12'h02E;
rommem[14036] <= 12'h02E;
rommem[14037] <= 12'h02E;
rommem[14038] <= 12'h02E;
rommem[14039] <= 12'h02E;
rommem[14040] <= 12'h02E;
rommem[14041] <= 12'h02E;
rommem[14042] <= 12'h02E;
rommem[14043] <= 12'h02E;
rommem[14044] <= 12'h02E;
rommem[14045] <= 12'h02E;
rommem[14046] <= 12'h02E;
rommem[14047] <= 12'h02E;
rommem[14048] <= 12'h02E;
rommem[14049] <= 12'h02E;
rommem[14050] <= 12'h02E;
rommem[14051] <= 12'h02E;
rommem[14052] <= 12'h02E;
rommem[14053] <= 12'h02E;
rommem[14054] <= 12'h02E;
rommem[14055] <= 12'h02E;
rommem[14056] <= 12'h02E;
rommem[14057] <= 12'h095;
rommem[14058] <= 12'h02E;
rommem[14059] <= 12'h093;
rommem[14060] <= 12'h094;
rommem[14061] <= 12'h02E;
rommem[14062] <= 12'h02E;
rommem[14063] <= 12'h02E;
rommem[14064] <= 12'h098;
rommem[14065] <= 12'h099;
rommem[14066] <= 12'h092;
rommem[14067] <= 12'h02E;
rommem[14068] <= 12'h091;
rommem[14069] <= 12'h090;
rommem[14070] <= 12'h02E;
rommem[14071] <= 12'h02E;
rommem[14072] <= 12'h02E;
rommem[14073] <= 12'h02E;
rommem[14074] <= 12'h097;
rommem[14075] <= 12'h02E;
rommem[14076] <= 12'h02E;
rommem[14077] <= 12'h096;
rommem[14078] <= 12'h02E;
rommem[14079] <= 12'h02E;
rommem[14080] <= 12'h034;
rommem[14081] <= 12'h010;
rommem[14082] <= 12'h08E;
rommem[14083] <= 12'h000;
rommem[14084] <= 12'h064;
rommem[14085] <= 12'h08D;
rommem[14086] <= 12'h05A;
rommem[14087] <= 12'h05D;
rommem[14088] <= 12'h02B;
rommem[14089] <= 12'h00B;
rommem[14090] <= 12'h08D;
rommem[14091] <= 12'h02D;
rommem[14092] <= 12'h030;
rommem[14093] <= 12'h1FF;
rommem[14094] <= 12'h026;
rommem[14095] <= 12'hFF5;
rommem[14096] <= 12'h0CC;
rommem[14097] <= 12'hFFF;
rommem[14098] <= 12'hFFF;
rommem[14099] <= 12'h035;
rommem[14100] <= 12'h090;
rommem[14101] <= 12'h08D;
rommem[14102] <= 12'h066;
rommem[14103] <= 12'h035;
rommem[14104] <= 12'h090;
rommem[14105] <= 12'h015;
rommem[14106] <= 12'h0F7;
rommem[13854] <= 12'hFFF;
rommem[13855] <= 12'h6F2;
rommem[13856] <= 12'h0E6;
rommem[13857] <= 12'hE04;
rommem[13858] <= 12'h08D;
rommem[13859] <= 12'h20D;
rommem[13860] <= 12'h017;
rommem[13861] <= 12'hFFF;
rommem[13862] <= 12'h6EB;
rommem[13863] <= 12'h0C6;
rommem[13864] <= 12'h02D;
rommem[13865] <= 12'h017;
rommem[13866] <= 12'hFFF;
rommem[13867] <= 12'h6E6;
rommem[13868] <= 12'h017;
rommem[13869] <= 12'hFFF;
rommem[13870] <= 12'h6E3;
rommem[13871] <= 12'h035;
rommem[13872] <= 12'h004;
rommem[13873] <= 12'h0C5;
rommem[13874] <= 12'h100;
rommem[13875] <= 12'h126;
rommem[13876] <= 12'h000;
rommem[13877] <= 12'h1EB;
rommem[13878] <= 12'h0C5;
rommem[13879] <= 12'h080;
rommem[13880] <= 12'h126;
rommem[13881] <= 12'h000;
rommem[13882] <= 12'h1E6;
rommem[13883] <= 12'h0C6;
rommem[13884] <= 12'h05D;
rommem[13885] <= 12'h017;
rommem[13886] <= 12'hFFF;
rommem[13887] <= 12'h6D2;
rommem[13888] <= 12'h016;
rommem[13889] <= 12'h000;
rommem[13890] <= 12'h1DE;
rommem[13891] <= 12'h0C1;
rommem[13892] <= 12'h00A;
rommem[13893] <= 12'h026;
rommem[13894] <= 12'h03D;
rommem[13895] <= 12'h0E6;
rommem[13896] <= 12'hA01;
rommem[13897] <= 12'h017;
rommem[13898] <= 12'hFFE;
rommem[13899] <= 12'hDAA;
rommem[13900] <= 12'h0EC;
rommem[13901] <= 12'hA01;
rommem[13902] <= 12'h017;
rommem[13903] <= 12'hFFE;
rommem[13904] <= 12'hD9C;
rommem[13905] <= 12'h0E6;
rommem[13906] <= 12'hE04;
rommem[13907] <= 12'h0C5;
rommem[13908] <= 12'h080;
rommem[13909] <= 12'h026;
rommem[13910] <= 12'h005;
rommem[13911] <= 12'h0C6;
rommem[13912] <= 12'h05D;
rommem[13913] <= 12'h017;
rommem[13914] <= 12'hFFF;
rommem[13915] <= 12'h6B6;
rommem[13916] <= 12'h0C6;
rommem[13917] <= 12'h02C;
rommem[13918] <= 12'h017;
rommem[13919] <= 12'hFFF;
rommem[13920] <= 12'h6B1;
rommem[13921] <= 12'h0E6;
rommem[13922] <= 12'hE04;
rommem[13923] <= 12'h08D;
rommem[13924] <= 12'h1CC;
rommem[13925] <= 12'h017;
rommem[13926] <= 12'hFFF;
rommem[13927] <= 12'h6AA;
rommem[13928] <= 12'h0C6;
rommem[13929] <= 12'h02D;
rommem[13930] <= 12'h017;
rommem[13931] <= 12'hFFF;
rommem[13932] <= 12'h6A5;
rommem[13933] <= 12'h017;
rommem[13934] <= 12'hFFF;
rommem[13935] <= 12'h6A2;
rommem[13936] <= 12'h035;
rommem[13937] <= 12'h004;
rommem[13938] <= 12'h0C5;
rommem[13939] <= 12'h100;
rommem[13940] <= 12'h126;
rommem[13941] <= 12'h000;
rommem[13942] <= 12'h1AA;
rommem[13943] <= 12'h0C5;
rommem[13944] <= 12'h080;
rommem[13945] <= 12'h126;
rommem[13946] <= 12'h000;
rommem[13947] <= 12'h1A5;
rommem[13948] <= 12'h0C6;
rommem[13949] <= 12'h05D;
rommem[13950] <= 12'h017;
rommem[13951] <= 12'hFFF;
rommem[13952] <= 12'h691;
rommem[13953] <= 12'h016;
rommem[13954] <= 12'h000;
rommem[13955] <= 12'h19D;
rommem[13956] <= 12'h0C1;
rommem[13957] <= 12'h00B;
rommem[13958] <= 12'h026;
rommem[13959] <= 12'h038;
rommem[13960] <= 12'h0C6;
rommem[13961] <= 12'h044;
rommem[13962] <= 12'h017;
rommem[13963] <= 12'hFFF;
rommem[13964] <= 12'h685;
rommem[13965] <= 12'h0E6;
rommem[13966] <= 12'hE04;
rommem[13967] <= 12'h0C5;
rommem[13968] <= 12'h080;
rommem[13969] <= 12'h026;
rommem[13970] <= 12'h005;
rommem[13971] <= 12'h0C6;
rommem[13972] <= 12'h05D;
rommem[13973] <= 12'h017;
rommem[13974] <= 12'hFFF;
rommem[13975] <= 12'h67A;
rommem[13976] <= 12'h0C6;
rommem[13977] <= 12'h02C;
rommem[13978] <= 12'h017;
rommem[13979] <= 12'hFFF;
rommem[13980] <= 12'h675;
rommem[13981] <= 12'h0E6;
rommem[13982] <= 12'hE04;
rommem[13983] <= 12'h08D;
rommem[13984] <= 12'h190;
rommem[13985] <= 12'h017;
rommem[13986] <= 12'hFFF;
rommem[13987] <= 12'h66E;
rommem[13988] <= 12'h0C6;
rommem[13989] <= 12'h02D;
rommem[13990] <= 12'h017;
rommem[13991] <= 12'hFFF;
rommem[13992] <= 12'h669;
rommem[13993] <= 12'h017;
rommem[13994] <= 12'hFFF;
rommem[13995] <= 12'h666;
rommem[13996] <= 12'h035;
rommem[13997] <= 12'h004;
rommem[13998] <= 12'h0C5;
rommem[13999] <= 12'h100;
rommem[14000] <= 12'h126;
rommem[14001] <= 12'h000;
rommem[14002] <= 12'h16E;
rommem[14003] <= 12'h0C5;
rommem[14004] <= 12'h080;
rommem[14005] <= 12'h126;
rommem[14006] <= 12'h000;
rommem[14007] <= 12'h169;
rommem[14008] <= 12'h0C6;
rommem[14009] <= 12'h05D;
rommem[14010] <= 12'h017;
rommem[14011] <= 12'hFFF;
rommem[14012] <= 12'h655;
rommem[14013] <= 12'h016;
rommem[14014] <= 12'h000;
rommem[14015] <= 12'h161;
rommem[14016] <= 12'h0C1;
rommem[14017] <= 12'h00C;
rommem[14018] <= 12'h026;
rommem[14019] <= 12'h040;
rommem[14020] <= 12'h0E6;
rommem[14021] <= 12'hA00;
rommem[14022] <= 12'h01D;
rommem[14023] <= 12'h017;
rommem[14024] <= 12'hFFE;
rommem[14025] <= 12'hD23;
rommem[14026] <= 12'h0E6;
rommem[14027] <= 12'hE04;
rommem[14028] <= 12'h0C5;
rommem[14029] <= 12'h080;
rommem[14030] <= 12'h026;
rommem[14031] <= 12'h005;
rommem[14032] <= 12'h0C6;
rommem[14033] <= 12'h05D;
rommem[14034] <= 12'h017;
rommem[14035] <= 12'hFFF;
rommem[14036] <= 12'h63D;
rommem[14037] <= 12'h0C6;
rommem[14038] <= 12'h02C;
rommem[14039] <= 12'h017;
rommem[14040] <= 12'hFFF;
rommem[14041] <= 12'h638;
rommem[14042] <= 12'h0E6;
rommem[14043] <= 12'hE04;
rommem[14044] <= 12'h08D;
rommem[14045] <= 12'h153;
rommem[14046] <= 12'h0C6;
rommem[14047] <= 12'h050;
rommem[14048] <= 12'h017;
rommem[14049] <= 12'hFFF;
rommem[14050] <= 12'h62F;
rommem[14051] <= 12'h0C6;
rommem[14052] <= 12'h043;
rommem[14053] <= 12'h017;
rommem[14054] <= 12'hFFF;
rommem[14055] <= 12'h62A;
rommem[14056] <= 12'h0C6;
rommem[14057] <= 12'h02D;
rommem[14058] <= 12'h017;
rommem[14059] <= 12'hFFF;
rommem[14060] <= 12'h625;
rommem[14061] <= 12'h017;
rommem[14062] <= 12'hFFF;
rommem[14063] <= 12'h622;
rommem[14064] <= 12'h035;
rommem[14065] <= 12'h004;
rommem[14066] <= 12'h0C5;
rommem[14067] <= 12'h100;
rommem[14068] <= 12'h126;
rommem[14069] <= 12'h000;
rommem[14070] <= 12'h12A;
rommem[14071] <= 12'h0C5;
rommem[14072] <= 12'h080;
rommem[14073] <= 12'h126;
rommem[14074] <= 12'h000;
rommem[14075] <= 12'h125;
rommem[14076] <= 12'h0C6;
rommem[14077] <= 12'h05D;
rommem[14078] <= 12'h017;
rommem[14079] <= 12'hFFF;
rommem[14080] <= 12'h611;
rommem[14081] <= 12'h016;
rommem[14082] <= 12'h000;
rommem[14083] <= 12'h11D;
rommem[14084] <= 12'h0C1;
rommem[14085] <= 12'h00D;
rommem[14086] <= 12'h026;
rommem[14087] <= 12'h03F;
rommem[14088] <= 12'h0EC;
rommem[14089] <= 12'hA01;
rommem[14090] <= 12'h017;
rommem[14091] <= 12'hFFE;
rommem[14092] <= 12'hCE0;
rommem[14093] <= 12'h0E6;
rommem[14094] <= 12'hE04;
rommem[14095] <= 12'h0C5;
rommem[14096] <= 12'h080;
rommem[14097] <= 12'h026;
rommem[14098] <= 12'h005;
rommem[14099] <= 12'h0C6;
rommem[14100] <= 12'h05D;
rommem[14101] <= 12'h017;
rommem[14102] <= 12'hFFF;
rommem[14103] <= 12'h5FA;
rommem[14104] <= 12'h0C6;
rommem[14105] <= 12'h02C;
rommem[14106] <= 12'h017;
rommem[14107] <= 12'hFFF;
rommem[14108] <= 12'hE30;
rommem[14109] <= 12'h400;
rommem[14110] <= 12'h039;
rommem[14111] <= 12'h034;
rommem[14112] <= 12'h010;
rommem[14113] <= 12'h08E;
rommem[14114] <= 12'h000;
rommem[14115] <= 12'h064;
rommem[14116] <= 12'h08D;
rommem[14117] <= 12'h03B;
rommem[14118] <= 12'h0C4;
rommem[14119] <= 12'h040;
rommem[14120] <= 12'h026;
rommem[14121] <= 12'h00B;
rommem[14122] <= 12'h08D;
rommem[14123] <= 12'h00D;
rommem[14124] <= 12'h030;
rommem[14125] <= 12'h1FF;
rommem[14126] <= 12'h026;
rommem[14127] <= 12'hFF4;
rommem[14128] <= 12'h0CC;
rommem[14108] <= 12'h5F5;
rommem[14109] <= 12'h0E6;
rommem[14110] <= 12'hE04;
rommem[14111] <= 12'h08D;
rommem[14112] <= 12'h110;
rommem[14113] <= 12'h0C6;
rommem[14114] <= 12'h050;
rommem[14115] <= 12'h017;
rommem[14116] <= 12'hFFF;
rommem[14117] <= 12'h5EC;
rommem[14118] <= 12'h0C6;
rommem[14119] <= 12'h043;
rommem[14120] <= 12'h017;
rommem[14121] <= 12'hFFF;
rommem[14122] <= 12'h5E7;
rommem[14123] <= 12'h0C6;
rommem[14124] <= 12'h02D;
rommem[14125] <= 12'h017;
rommem[14126] <= 12'hFFF;
rommem[14127] <= 12'h5E2;
rommem[14128] <= 12'h017;
rommem[14129] <= 12'hFFF;
rommem[14130] <= 12'hFFF;
rommem[14130] <= 12'h5DF;
rommem[14131] <= 12'h035;
rommem[14132] <= 12'h090;
rommem[14133] <= 12'h04F;
rommem[14134] <= 12'h05F;
rommem[14135] <= 12'h035;
rommem[14136] <= 12'h090;
rommem[14137] <= 12'h034;
rommem[14138] <= 12'h006;
rommem[14139] <= 12'h015;
rommem[14140] <= 12'h0B6;
rommem[14141] <= 12'hFFF;
rommem[14142] <= 12'hFFF;
rommem[14143] <= 12'hFE7;
rommem[14144] <= 12'h01F;
rommem[14145] <= 12'h089;
rommem[14146] <= 12'h015;
rommem[14147] <= 12'h0F0;
rommem[14148] <= 12'hFFF;
rommem[14149] <= 12'hFFF;
rommem[14150] <= 12'hFE7;
rommem[14132] <= 12'h004;
rommem[14133] <= 12'h0C5;
rommem[14134] <= 12'h100;
rommem[14135] <= 12'h126;
rommem[14136] <= 12'h000;
rommem[14137] <= 12'h0E7;
rommem[14138] <= 12'h0C5;
rommem[14139] <= 12'h080;
rommem[14140] <= 12'h126;
rommem[14141] <= 12'h000;
rommem[14142] <= 12'h0E2;
rommem[14143] <= 12'h0C6;
rommem[14144] <= 12'h05D;
rommem[14145] <= 12'h017;
rommem[14146] <= 12'hFFF;
rommem[14147] <= 12'h5CE;
rommem[14148] <= 12'h016;
rommem[14149] <= 12'h000;
rommem[14150] <= 12'h0DA;
rommem[14151] <= 12'h0C1;
rommem[14152] <= 12'hFFA;
rommem[14153] <= 12'h022;
rommem[14154] <= 12'hFF5;
rommem[14155] <= 12'h035;
rommem[14156] <= 12'h086;
rommem[14157] <= 12'h034;
rommem[14158] <= 12'h006;
rommem[14159] <= 12'h015;
rommem[14160] <= 12'h0B6;
rommem[14161] <= 12'hFFF;
rommem[14162] <= 12'hFFF;
rommem[14163] <= 12'hFE7;
rommem[14164] <= 12'h01F;
rommem[14165] <= 12'h089;
rommem[14166] <= 12'h015;
rommem[14167] <= 12'h0F0;
rommem[14168] <= 12'hFFF;
rommem[14169] <= 12'hFFF;
rommem[14170] <= 12'hFE7;
rommem[14171] <= 12'h0C1;
rommem[14172] <= 12'hF00;
rommem[14173] <= 12'h022;
rommem[14174] <= 12'hFF5;
rommem[14175] <= 12'h035;
rommem[14176] <= 12'h086;
rommem[14177] <= 12'h015;
rommem[14178] <= 12'h0F6;
rommem[14152] <= 12'h00E;
rommem[14153] <= 12'h026;
rommem[14154] <= 12'h044;
rommem[14155] <= 12'h0E6;
rommem[14156] <= 12'hA00;
rommem[14157] <= 12'h017;
rommem[14158] <= 12'hFFE;
rommem[14159] <= 12'hCA6;
rommem[14160] <= 12'h0EC;
rommem[14161] <= 12'hA01;
rommem[14162] <= 12'h017;
rommem[14163] <= 12'hFFE;
rommem[14164] <= 12'hC98;
rommem[14165] <= 12'h0E6;
rommem[14166] <= 12'hE04;
rommem[14167] <= 12'h0C5;
rommem[14168] <= 12'h080;
rommem[14169] <= 12'h026;
rommem[14170] <= 12'h005;
rommem[14171] <= 12'h0C6;
rommem[14172] <= 12'h05D;
rommem[14173] <= 12'h017;
rommem[14174] <= 12'hFFF;
rommem[14175] <= 12'h5B2;
rommem[14176] <= 12'h0C6;
rommem[14177] <= 12'h02C;
rommem[14178] <= 12'h017;
rommem[14179] <= 12'hFFF;
rommem[14180] <= 12'hE30;
rommem[14181] <= 12'h401;
rommem[14182] <= 12'h0C5;
rommem[14183] <= 12'h080;
rommem[14184] <= 12'h026;
rommem[14185] <= 12'h00E;
rommem[14186] <= 12'h0C5;
rommem[14187] <= 12'h001;
rommem[14188] <= 12'h026;
rommem[14189] <= 12'h002;
rommem[14190] <= 12'h04F;
rommem[14191] <= 12'h039;
rommem[14192] <= 12'h0C6;
rommem[14193] <= 12'h0FE;
rommem[14194] <= 12'h08D;
rommem[14195] <= 12'hFA5;
rommem[14196] <= 12'h08D;
rommem[14197] <= 12'hFA9;
rommem[14198] <= 12'h020;
rommem[14199] <= 12'hFE9;
rommem[14200] <= 12'h0CA;
rommem[14201] <= 12'hF00;
rommem[14202] <= 12'h086;
rommem[14203] <= 12'hFFF;
rommem[14204] <= 12'h039;
rommem[14205] <= 12'h04F;
rommem[14206] <= 12'h015;
rommem[14207] <= 12'h0F6;
rommem[14208] <= 12'hFFF;
rommem[14209] <= 12'hE30;
rommem[14210] <= 12'h400;
rommem[14211] <= 12'h015;
rommem[14212] <= 12'h07F;
rommem[14213] <= 12'hFFF;
rommem[14214] <= 12'hE30;
rommem[14215] <= 12'h401;
rommem[14216] <= 12'h039;
rommem[14217] <= 12'h034;
rommem[14218] <= 12'h004;
rommem[14219] <= 12'h0C6;
rommem[14220] <= 12'h0ED;
rommem[14221] <= 12'h08D;
rommem[14222] <= 12'hF8A;
rommem[14223] <= 12'h08D;
rommem[14224] <= 12'hF8E;
rommem[14225] <= 12'h08D;
rommem[14226] <= 12'hF6D;
rommem[14227] <= 12'h035;
rommem[14228] <= 12'h004;
rommem[14229] <= 12'h08D;
rommem[14230] <= 12'hF82;
rommem[14231] <= 12'h08D;
rommem[14232] <= 12'hF86;
rommem[14233] <= 12'h08D;
rommem[14234] <= 12'hF65;
rommem[14235] <= 12'h039;
rommem[14236] <= 12'h0C6;
rommem[14237] <= 12'h0F2;
rommem[14238] <= 12'h08D;
rommem[14239] <= 12'hF79;
rommem[14240] <= 12'h08D;
rommem[14241] <= 12'hF7D;
rommem[14242] <= 12'h08D;
rommem[14243] <= 12'hF5C;
rommem[14244] <= 12'h0C5;
rommem[14245] <= 12'h080;
rommem[14246] <= 12'h026;
rommem[14247] <= 12'h014;
rommem[14248] <= 12'h0C1;
rommem[14249] <= 12'h0AB;
rommem[14250] <= 12'h026;
rommem[14251] <= 12'h010;
rommem[14252] <= 12'h08D;
rommem[14253] <= 12'hF52;
rommem[14254] <= 12'h0C5;
rommem[14255] <= 12'h080;
rommem[14256] <= 12'h026;
rommem[14257] <= 12'h00A;
rommem[14258] <= 12'h0C1;
rommem[14259] <= 12'h083;
rommem[14260] <= 12'h026;
rommem[14261] <= 12'h006;
rommem[14262] <= 12'h0CC;
rommem[14263] <= 12'h00A;
rommem[14264] <= 12'hB83;
rommem[14265] <= 12'h0DD;
rommem[14266] <= 12'h124;
rommem[14267] <= 12'h039;
rommem[14268] <= 12'h04F;
rommem[14269] <= 12'h05F;
rommem[14270] <= 12'h020;
rommem[14271] <= 12'hFF9;
rommem[14272] <= 12'h034;
rommem[14273] <= 12'h026;
rommem[14274] <= 12'h18E;
rommem[14275] <= 12'h000;
rommem[14276] <= 12'h005;
rommem[14277] <= 12'h08D;
rommem[14278] <= 12'hF72;
rommem[14279] <= 12'h015;
rommem[14280] <= 12'h07F;
rommem[14281] <= 12'hFFF;
rommem[14282] <= 12'hE30;
rommem[14283] <= 12'h401;
rommem[14284] <= 12'h0C6;
rommem[14285] <= 12'hFFF;
rommem[14286] <= 12'h015;
rommem[14287] <= 12'h0F7;
rommem[14288] <= 12'hFFF;
rommem[14289] <= 12'hE30;
rommem[14290] <= 12'h401;
rommem[14291] <= 12'h08D;
rommem[14292] <= 12'hF44;
rommem[14293] <= 12'h08D;
rommem[14294] <= 12'hF48;
rommem[14295] <= 12'h08D;
rommem[14296] <= 12'hF27;
rommem[14297] <= 12'h0C1;
rommem[14298] <= 12'h0FA;
rommem[14299] <= 12'h026;
rommem[14300] <= 12'h021;
rommem[14301] <= 12'h08D;
rommem[14302] <= 12'hF21;
rommem[14303] <= 12'h0C1;
rommem[14304] <= 12'h0FC;
rommem[14305] <= 12'h027;
rommem[14306] <= 12'h01B;
rommem[14307] <= 12'h0C1;
rommem[14308] <= 12'h0AA;
rommem[14309] <= 12'h026;
rommem[14310] <= 12'h017;
rommem[14311] <= 12'h0C6;
rommem[14312] <= 12'h0F0;
rommem[14313] <= 12'h015;
rommem[14314] <= 12'h0F7;
rommem[14180] <= 12'h5AD;
rommem[14181] <= 12'h0E6;
rommem[14182] <= 12'hE04;
rommem[14183] <= 12'h08D;
rommem[14184] <= 12'h0C8;
rommem[14185] <= 12'h0C6;
rommem[14186] <= 12'h050;
rommem[14187] <= 12'h017;
rommem[14188] <= 12'hFFF;
rommem[14189] <= 12'h5A4;
rommem[14190] <= 12'h0C6;
rommem[14191] <= 12'h043;
rommem[14192] <= 12'h017;
rommem[14193] <= 12'hFFF;
rommem[14194] <= 12'h59F;
rommem[14195] <= 12'h0C6;
rommem[14196] <= 12'h02D;
rommem[14197] <= 12'h017;
rommem[14198] <= 12'hFFF;
rommem[14199] <= 12'h59A;
rommem[14200] <= 12'h017;
rommem[14201] <= 12'hFFF;
rommem[14202] <= 12'h597;
rommem[14203] <= 12'h035;
rommem[14204] <= 12'h004;
rommem[14205] <= 12'h0C5;
rommem[14206] <= 12'h100;
rommem[14207] <= 12'h126;
rommem[14208] <= 12'h000;
rommem[14209] <= 12'h09F;
rommem[14210] <= 12'h0C5;
rommem[14211] <= 12'h080;
rommem[14212] <= 12'h126;
rommem[14213] <= 12'h000;
rommem[14214] <= 12'h09A;
rommem[14215] <= 12'h0C6;
rommem[14216] <= 12'h05D;
rommem[14217] <= 12'h017;
rommem[14218] <= 12'hFFF;
rommem[14219] <= 12'h586;
rommem[14220] <= 12'h016;
rommem[14221] <= 12'h000;
rommem[14222] <= 12'h092;
rommem[14223] <= 12'h0C6;
rommem[14224] <= 12'h05B;
rommem[14225] <= 12'h017;
rommem[14226] <= 12'hFFF;
rommem[14227] <= 12'h57E;
rommem[14228] <= 12'h0EC;
rommem[14229] <= 12'hA01;
rommem[14230] <= 12'h017;
rommem[14231] <= 12'hFFE;
rommem[14232] <= 12'hC54;
rommem[14233] <= 12'h0C6;
rommem[14234] <= 12'h05D;
rommem[14235] <= 12'h017;
rommem[14236] <= 12'hFFF;
rommem[14237] <= 12'h574;
rommem[14238] <= 12'h016;
rommem[14239] <= 12'h000;
rommem[14240] <= 12'h080;
rommem[14241] <= 12'h0C1;
rommem[14242] <= 12'h006;
rommem[14243] <= 12'h026;
rommem[14244] <= 12'h008;
rommem[14245] <= 12'h0EC;
rommem[14246] <= 12'hA01;
rommem[14247] <= 12'h017;
rommem[14248] <= 12'hFFE;
rommem[14249] <= 12'hC43;
rommem[14250] <= 12'h016;
rommem[14251] <= 12'h000;
rommem[14252] <= 12'h074;
rommem[14253] <= 12'h0C1;
rommem[14254] <= 12'h003;
rommem[14255] <= 12'h026;
rommem[14256] <= 12'h00D;
rommem[14257] <= 12'h0C6;
rommem[14258] <= 12'h023;
rommem[14259] <= 12'h017;
rommem[14260] <= 12'hFFF;
rommem[14261] <= 12'h55C;
rommem[14262] <= 12'h0E6;
rommem[14263] <= 12'hA00;
rommem[14264] <= 12'h017;
rommem[14265] <= 12'hFFE;
rommem[14266] <= 12'hC3B;
rommem[14267] <= 12'h016;
rommem[14268] <= 12'h000;
rommem[14269] <= 12'h063;
rommem[14270] <= 12'h0C1;
rommem[14271] <= 12'h007;
rommem[14272] <= 12'h026;
rommem[14273] <= 12'h00C;
rommem[14274] <= 12'h0C6;
rommem[14275] <= 12'h023;
rommem[14276] <= 12'h017;
rommem[14277] <= 12'hFFF;
rommem[14278] <= 12'h54B;
rommem[14279] <= 12'h0EC;
rommem[14280] <= 12'hA01;
rommem[14281] <= 12'h017;
rommem[14282] <= 12'hFFE;
rommem[14283] <= 12'hC21;
rommem[14284] <= 12'h020;
rommem[14285] <= 12'h053;
rommem[14286] <= 12'h0C1;
rommem[14287] <= 12'h121;
rommem[14288] <= 12'h025;
rommem[14289] <= 12'h028;
rommem[14290] <= 12'h0C1;
rommem[14291] <= 12'h12F;
rommem[14292] <= 12'h022;
rommem[14293] <= 12'h024;
rommem[14294] <= 12'h0C4;
rommem[14295] <= 12'h0FF;
rommem[14296] <= 12'h08E;
rommem[14297] <= 12'hFFE;
rommem[14298] <= 12'hDB4;
rommem[14299] <= 12'h058;
rommem[14300] <= 12'h058;
rommem[14301] <= 12'h03A;
rommem[14302] <= 12'h0E6;
rommem[14303] <= 12'h800;
rommem[14304] <= 12'h017;
rommem[14305] <= 12'hFFF;
rommem[14306] <= 12'h52F;
rommem[14307] <= 12'h0E6;
rommem[14308] <= 12'h800;
rommem[14309] <= 12'h017;
rommem[14310] <= 12'hFFF;
rommem[14311] <= 12'h52A;
rommem[14312] <= 12'h0E6;
rommem[14313] <= 12'h800;
rommem[14314] <= 12'h017;
rommem[14315] <= 12'hFFF;
rommem[14316] <= 12'hE60;
rommem[14317] <= 12'h000;
rommem[14318] <= 12'h08D;
rommem[14319] <= 12'hF29;
rommem[14320] <= 12'h08D;
rommem[14321] <= 12'hF2D;
rommem[14322] <= 12'h05D;
rommem[14323] <= 12'h02B;
rommem[14324] <= 12'h009;
rommem[14325] <= 12'h08D;
rommem[14326] <= 12'hF09;
rommem[14327] <= 12'h04D;
rommem[14328] <= 12'h02B;
rommem[14329] <= 12'h004;
rommem[14330] <= 12'h0C1;
rommem[14331] <= 12'h0FA;
rommem[14332] <= 12'h027;
rommem[14333] <= 12'h00C;
rommem[14334] <= 12'h031;
rommem[14335] <= 12'h3FF;
rommem[14336] <= 12'h026;
rommem[14337] <= 12'hFC3;
rommem[14338] <= 12'h0CC;
rommem[14339] <= 12'hFFF;
rommem[14340] <= 12'h82A;
rommem[14341] <= 12'h017;
rommem[14342] <= 12'hFFF;
rommem[14343] <= 12'hB5A;
rommem[14344] <= 12'h020;
rommem[14345] <= 12'h014;
rommem[14346] <= 12'h0C6;
rommem[14347] <= 12'h002;
rommem[14348] <= 12'h08D;
rommem[14349] <= 12'hF0B;
rommem[14350] <= 12'h08D;
rommem[14351] <= 12'hF0F;
rommem[14352] <= 12'h05D;
rommem[14353] <= 12'h02B;
rommem[14354] <= 12'hFEB;
rommem[14355] <= 12'h08D;
rommem[14356] <= 12'hEEB;
rommem[14357] <= 12'h04D;
rommem[14358] <= 12'h02B;
rommem[14359] <= 12'hFE6;
rommem[14360] <= 12'h0C1;
rommem[14361] <= 12'h0FA;
rommem[14362] <= 12'h026;
rommem[14363] <= 12'hFE2;
rommem[14364] <= 12'h08D;
rommem[14365] <= 12'hF7E;
rommem[14366] <= 12'h0C6;
rommem[14367] <= 12'h007;
rommem[14368] <= 12'h08D;
rommem[14369] <= 12'hF67;
rommem[14370] <= 12'h08D;
rommem[14371] <= 12'hF29;
rommem[14372] <= 12'h0C6;
rommem[14316] <= 12'h525;
rommem[14317] <= 12'h0E6;
rommem[14318] <= 12'h800;
rommem[14319] <= 12'h017;
rommem[14320] <= 12'hFFF;
rommem[14321] <= 12'h520;
rommem[14322] <= 12'h0C6;
rommem[14323] <= 12'h020;
rommem[14324] <= 12'h017;
rommem[14325] <= 12'hFFF;
rommem[14326] <= 12'h51B;
rommem[14327] <= 12'h016;
rommem[14328] <= 12'hFFF;
rommem[14329] <= 12'hC09;
rommem[14330] <= 12'h08E;
rommem[14331] <= 12'h000;
rommem[14332] <= 12'h000;
rommem[14333] <= 12'h0E1;
rommem[14334] <= 12'h80A;
rommem[14335] <= 12'h000;
rommem[14336] <= 12'hFFF;
rommem[14337] <= 12'h2F4;
rommem[14338] <= 12'h026;
rommem[14339] <= 12'h006;
rommem[14340] <= 12'h08E;
rommem[14341] <= 12'hFFF;
rommem[14342] <= 12'h314;
rommem[14343] <= 12'h016;
rommem[14344] <= 12'hFFF;
rommem[14345] <= 12'hBC7;
rommem[14346] <= 12'h030;
rommem[14347] <= 12'h001;
rommem[14348] <= 12'h08C;
rommem[14349] <= 12'h000;
rommem[14350] <= 12'h01F;
rommem[14351] <= 12'h025;
rommem[14352] <= 12'hFEC;
rommem[14353] <= 12'h0C6;
rommem[14354] <= 12'h03F;
rommem[14355] <= 12'h017;
rommem[14356] <= 12'hFFF;
rommem[14357] <= 12'h4FC;
rommem[14358] <= 12'h017;
rommem[14359] <= 12'hFFF;
rommem[14360] <= 12'h4F9;
rommem[14361] <= 12'h017;
rommem[14362] <= 12'hFFF;
rommem[14363] <= 12'h4F6;
rommem[14364] <= 12'h017;
rommem[14365] <= 12'hFFF;
rommem[14366] <= 12'h4F3;
rommem[14367] <= 12'h020;
rommem[14368] <= 12'h000;
rommem[14369] <= 12'h017;
rommem[14370] <= 12'hFFD;
rommem[14371] <= 12'h8AE;
rommem[14372] <= 12'h1BC;
rommem[14373] <= 12'h000;
rommem[14374] <= 12'h08D;
rommem[14375] <= 12'hF61;
rommem[14376] <= 12'h035;
rommem[14377] <= 12'h0A6;
rommem[14378] <= 12'h04B;
rommem[14379] <= 12'h065;
rommem[14380] <= 12'h079;
rommem[14381] <= 12'h062;
rommem[14382] <= 12'h06F;
rommem[14383] <= 12'h061;
rommem[14384] <= 12'h072;
rommem[14385] <= 12'h064;
rommem[14386] <= 12'h020;
rommem[14387] <= 12'h065;
rommem[14388] <= 12'h072;
rommem[14389] <= 12'h072;
rommem[14390] <= 12'h06F;
rommem[14391] <= 12'h072;
rommem[14392] <= 12'h000;
rommem[14393] <= 12'h020;
rommem[14394] <= 12'hF26;
rommem[14395] <= 12'h034;
rommem[14396] <= 12'h010;
rommem[14397] <= 12'h034;
rommem[14398] <= 12'h004;
rommem[14399] <= 12'h08D;
rommem[14400] <= 12'hF20;
rommem[14401] <= 12'h0C4;
rommem[14402] <= 12'h080;
rommem[14403] <= 12'h035;
rommem[14404] <= 12'h004;
rommem[14405] <= 12'h026;
rommem[14406] <= 12'h008;
rommem[14407] <= 12'h05D;
rommem[14408] <= 12'h026;
rommem[14409] <= 12'hFF3;
rommem[14410] <= 12'h0CC;
rommem[14411] <= 12'hFFF;
rommem[14412] <= 12'hFFF;
rommem[14413] <= 12'h035;
rommem[14414] <= 12'h090;
rommem[14415] <= 12'h08D;
rommem[14416] <= 12'hF2C;
rommem[14417] <= 12'h017;
rommem[14418] <= 12'hFFF;
rommem[14419] <= 12'hB49;
rommem[14420] <= 12'h08E;
rommem[14421] <= 12'h000;
rommem[14422] <= 12'h014;
rommem[14423] <= 12'h030;
rommem[14424] <= 12'h1FF;
rommem[14425] <= 12'h026;
rommem[14426] <= 12'hFFC;
rommem[14427] <= 12'h0C1;
rommem[14428] <= 12'h0F0;
rommem[14429] <= 12'h026;
rommem[14430] <= 12'h006;
rommem[14431] <= 12'h00F;
rommem[14432] <= 12'h120;
rommem[14433] <= 12'h000;
rommem[14434] <= 12'h120;
rommem[14435] <= 12'h020;
rommem[14436] <= 12'hFD8;
rommem[14437] <= 12'h0C1;
rommem[14438] <= 12'h0E0;
rommem[14439] <= 12'h026;
rommem[14440] <= 12'h008;
rommem[14441] <= 12'h096;
rommem[14442] <= 12'h121;
rommem[14443] <= 12'h08A;
rommem[14444] <= 12'h800;
rommem[14445] <= 12'h097;
rommem[14446] <= 12'h121;
rommem[14447] <= 12'h020;
rommem[14448] <= 12'hFCC;
rommem[14449] <= 12'h0C1;
rommem[14450] <= 12'h014;
rommem[14451] <= 12'h026;
rommem[14452] <= 12'h016;
rommem[14453] <= 12'h00D;
rommem[14454] <= 12'h120;
rommem[14455] <= 12'h02B;
rommem[14456] <= 12'h008;
rommem[14457] <= 12'h096;
rommem[14458] <= 12'h121;
rommem[14459] <= 12'h08A;
rommem[14460] <= 12'h004;
rommem[14461] <= 12'h097;
rommem[14462] <= 12'h121;
rommem[14463] <= 12'h020;
rommem[14464] <= 12'h006;
rommem[14465] <= 12'h096;
rommem[14466] <= 12'h121;
rommem[14467] <= 12'h084;
rommem[14468] <= 12'hFFB;
rommem[14469] <= 12'h097;
rommem[14470] <= 12'h121;
rommem[14471] <= 12'h00F;
rommem[14472] <= 12'h120;
rommem[14473] <= 12'h020;
rommem[14474] <= 12'hFB2;
rommem[14475] <= 12'h0C1;
rommem[14476] <= 12'h059;
rommem[14477] <= 12'h026;
rommem[14478] <= 12'h016;
rommem[14479] <= 12'h00D;
rommem[14480] <= 12'h120;
rommem[14481] <= 12'h02B;
rommem[14482] <= 12'h008;
rommem[14483] <= 12'h096;
rommem[14484] <= 12'h121;
rommem[14485] <= 12'h08A;
rommem[14486] <= 12'h001;
rommem[14487] <= 12'h097;
rommem[14488] <= 12'h121;
rommem[14489] <= 12'h020;
rommem[14490] <= 12'h006;
rommem[14491] <= 12'h096;
rommem[14492] <= 12'h121;
rommem[14493] <= 12'h084;
rommem[14374] <= 12'h926;
rommem[14375] <= 12'h125;
rommem[14376] <= 12'hFFF;
rommem[14377] <= 12'hB93;
rommem[14378] <= 12'h016;
rommem[14379] <= 12'h000;
rommem[14380] <= 12'h07F;
rommem[14381] <= 12'h058;
rommem[14382] <= 12'h059;
rommem[14383] <= 12'h053;
rommem[14384] <= 12'h055;
rommem[14385] <= 12'h0C4;
rommem[14386] <= 12'h600;
rommem[14387] <= 12'h059;
rommem[14388] <= 12'h059;
rommem[14389] <= 12'h059;
rommem[14390] <= 12'h059;
rommem[14391] <= 12'h04F;
rommem[14392] <= 12'h034;
rommem[14393] <= 12'h040;
rommem[14394] <= 12'h01F;
rommem[14395] <= 12'h003;
rommem[14396] <= 12'h0A6;
rommem[14397] <= 12'hC0A;
rommem[14398] <= 12'h000;
rommem[14399] <= 12'hFFF;
rommem[14400] <= 12'h82D;
rommem[14401] <= 12'h035;
rommem[14402] <= 12'h040;
rommem[14403] <= 12'h01E;
rommem[14404] <= 12'h089;
rommem[14405] <= 12'h039;
rommem[14406] <= 12'h034;
rommem[14407] <= 12'h006;
rommem[14408] <= 12'h0CC;
rommem[14409] <= 12'hFFF;
rommem[14410] <= 12'h85A;
rommem[14411] <= 12'h0FD;
rommem[14412] <= 12'h000;
rommem[14413] <= 12'h800;
rommem[14414] <= 12'h035;
rommem[14415] <= 12'h086;
rommem[14416] <= 12'h034;
rommem[14417] <= 12'h006;
rommem[14418] <= 12'h0CC;
rommem[14419] <= 12'hFFE;
rommem[14420] <= 12'h2E1;
rommem[14421] <= 12'h0FD;
rommem[14422] <= 12'h000;
rommem[14423] <= 12'h800;
rommem[14424] <= 12'h035;
rommem[14425] <= 12'h086;
rommem[14426] <= 12'h0E7;
rommem[14427] <= 12'hC00;
rommem[14428] <= 12'h039;
rommem[14429] <= 12'h0CE;
rommem[14430] <= 12'h000;
rommem[14431] <= 12'h160;
rommem[14432] <= 12'h0E6;
rommem[14433] <= 12'hC00;
rommem[14434] <= 12'h027;
rommem[14435] <= 12'h005;
rommem[14436] <= 12'h017;
rommem[14437] <= 12'hFFF;
rommem[14438] <= 12'h4AB;
rommem[14439] <= 12'h020;
rommem[14440] <= 12'hFF7;
rommem[14441] <= 12'h039;
rommem[14442] <= 12'h017;
rommem[14443] <= 12'hFFD;
rommem[14444] <= 12'h865;
rommem[14445] <= 12'h0C6;
rommem[14446] <= 12'h024;
rommem[14447] <= 12'h017;
rommem[14448] <= 12'hFFF;
rommem[14449] <= 12'h4A0;
rommem[14450] <= 12'h016;
rommem[14451] <= 12'hFFF;
rommem[14452] <= 12'h49D;
rommem[14453] <= 12'h046;
rommem[14454] <= 12'h065;
rommem[14455] <= 12'h06D;
rommem[14456] <= 12'h074;
rommem[14457] <= 12'h069;
rommem[14458] <= 12'h06B;
rommem[14459] <= 12'h069;
rommem[14460] <= 12'h020;
rommem[14461] <= 12'h046;
rommem[14462] <= 12'h030;
rommem[14463] <= 12'h039;
rommem[14464] <= 12'h020;
rommem[14465] <= 12'h04D;
rommem[14466] <= 12'h075;
rommem[14467] <= 12'h06C;
rommem[14468] <= 12'h074;
rommem[14469] <= 12'h069;
rommem[14470] <= 12'h02D;
rommem[14471] <= 12'h063;
rommem[14472] <= 12'h06F;
rommem[14473] <= 12'h072;
rommem[14474] <= 12'h065;
rommem[14475] <= 12'h020;
rommem[14476] <= 12'h04F;
rommem[14477] <= 12'h053;
rommem[14478] <= 12'h020;
rommem[14479] <= 12'h053;
rommem[14480] <= 12'h074;
rommem[14481] <= 12'h061;
rommem[14482] <= 12'h072;
rommem[14483] <= 12'h074;
rommem[14484] <= 12'h069;
rommem[14485] <= 12'h06E;
rommem[14486] <= 12'h067;
rommem[14487] <= 12'h00D;
rommem[14488] <= 12'h00A;
rommem[14489] <= 12'h000;
rommem[14490] <= 12'h0CC;
rommem[14491] <= 12'hFFF;
rommem[14492] <= 12'h875;
rommem[14493] <= 12'h017;
rommem[14494] <= 12'hFFE;
rommem[14495] <= 12'h097;
rommem[14496] <= 12'h121;
rommem[14497] <= 12'h00F;
rommem[14498] <= 12'h120;
rommem[14499] <= 12'h020;
rommem[14500] <= 12'hF98;
rommem[14501] <= 12'h0C1;
rommem[14502] <= 12'h077;
rommem[14503] <= 12'h026;
rommem[14504] <= 12'h013;
rommem[14505] <= 12'h096;
rommem[14506] <= 12'h121;
rommem[14507] <= 12'h088;
rommem[14508] <= 12'h010;
rommem[14509] <= 12'h097;
rommem[14510] <= 12'h121;
rommem[14511] <= 12'h096;
rommem[14512] <= 12'h122;
rommem[14513] <= 12'h088;
rommem[14514] <= 12'h002;
rommem[14515] <= 12'h097;
rommem[14516] <= 12'h122;
rommem[14517] <= 12'h01F;
rommem[14518] <= 12'h089;
rommem[14519] <= 12'h04F;
rommem[14520] <= 12'h08D;
rommem[14521] <= 12'hECF;
rommem[14522] <= 12'h020;
rommem[14523] <= 12'hF81;
rommem[14524] <= 12'h0C1;
rommem[14525] <= 12'h058;
rommem[14526] <= 12'h026;
rommem[14527] <= 12'h013;
rommem[14528] <= 12'h096;
rommem[14529] <= 12'h121;
rommem[14530] <= 12'h088;
rommem[14531] <= 12'h020;
rommem[14532] <= 12'h097;
rommem[14533] <= 12'h121;
rommem[14534] <= 12'h096;
rommem[14535] <= 12'h122;
rommem[14536] <= 12'h088;
rommem[14537] <= 12'h004;
rommem[14538] <= 12'h097;
rommem[14539] <= 12'h122;
rommem[14540] <= 12'h01F;
rommem[14541] <= 12'h089;
rommem[14542] <= 12'h04F;
rommem[14543] <= 12'h08D;
rommem[14544] <= 12'hEB8;
rommem[14545] <= 12'h020;
rommem[14546] <= 12'hF6A;
rommem[14547] <= 12'h0C1;
rommem[14548] <= 12'h07E;
rommem[14549] <= 12'h026;
rommem[14550] <= 12'h013;
rommem[14551] <= 12'h096;
rommem[14552] <= 12'h121;
rommem[14553] <= 12'h088;
rommem[14554] <= 12'h040;
rommem[14555] <= 12'h097;
rommem[14556] <= 12'h121;
rommem[14557] <= 12'h096;
rommem[14558] <= 12'h122;
rommem[14559] <= 12'h088;
rommem[14495] <= 12'hB02;
rommem[14496] <= 12'h0CC;
rommem[14497] <= 12'hFFF;
rommem[14498] <= 12'hA78;
rommem[14499] <= 12'h017;
rommem[14500] <= 12'hFFE;
rommem[14501] <= 12'hAFC;
rommem[14502] <= 12'h0CC;
rommem[14503] <= 12'hFFF;
rommem[14504] <= 12'h86A;
rommem[14505] <= 12'h0FD;
rommem[14506] <= 12'h000;
rommem[14507] <= 12'h808;
rommem[14508] <= 12'h032;
rommem[14509] <= 12'h80F;
rommem[14510] <= 12'h006;
rommem[14511] <= 12'hFFF;
rommem[14512] <= 12'h05F;
rommem[14513] <= 12'h017;
rommem[14514] <= 12'hFFF;
rommem[14515] <= 12'h462;
rommem[14516] <= 12'h0CC;
rommem[14517] <= 12'hFFE;
rommem[14518] <= 12'hBE4;
rommem[14519] <= 12'h0FD;
rommem[14520] <= 12'h000;
rommem[14521] <= 12'h804;
rommem[14522] <= 12'h0CC;
rommem[14523] <= 12'hFFE;
rommem[14524] <= 12'h2E1;
rommem[14525] <= 12'h0FD;
rommem[14526] <= 12'h000;
rommem[14527] <= 12'h800;
rommem[14528] <= 12'h0CC;
rommem[14529] <= 12'hFFF;
rommem[14530] <= 12'h86A;
rommem[14531] <= 12'h0FD;
rommem[14532] <= 12'h000;
rommem[14533] <= 12'h808;
rommem[14534] <= 12'h0AD;
rommem[14535] <= 12'h90F;
rommem[14536] <= 12'h000;
rommem[14537] <= 12'h808;
rommem[14538] <= 12'h0CC;
rommem[14539] <= 12'hFFF;
rommem[14540] <= 12'hFFF;
rommem[14541] <= 12'h017;
rommem[14542] <= 12'hFFF;
rommem[14543] <= 12'h40A;
rommem[14544] <= 12'h0C1;
rommem[14545] <= 12'h00D;
rommem[14546] <= 12'h027;
rommem[14547] <= 12'h005;
rommem[14548] <= 12'h017;
rommem[14549] <= 12'hFFF;
rommem[14550] <= 12'h43B;
rommem[14551] <= 12'h020;
rommem[14552] <= 12'hFF1;
rommem[14553] <= 12'h0CC;
rommem[14554] <= 12'h005;
rommem[14555] <= 12'h050;
rommem[14556] <= 12'h015;
rommem[14557] <= 12'h0FD;
rommem[14558] <= 12'hFFF;
rommem[14559] <= 12'hE60;
rommem[14560] <= 12'h001;
rommem[14561] <= 12'h097;
rommem[14562] <= 12'h122;
rommem[14563] <= 12'h01F;
rommem[14564] <= 12'h089;
rommem[14565] <= 12'h04F;
rommem[14566] <= 12'h08D;
rommem[14567] <= 12'hEA1;
rommem[14568] <= 12'h020;
rommem[14569] <= 12'hF53;
rommem[14570] <= 12'h0C1;
rommem[14571] <= 12'h011;
rommem[14572] <= 12'h026;
rommem[14573] <= 12'h016;
rommem[14574] <= 12'h00D;
rommem[14575] <= 12'h120;
rommem[14576] <= 12'h02B;
rommem[14577] <= 12'h008;
rommem[14578] <= 12'h096;
rommem[14579] <= 12'h121;
rommem[14580] <= 12'h08A;
rommem[14581] <= 12'h002;
rommem[14582] <= 12'h097;
rommem[14583] <= 12'h121;
rommem[14584] <= 12'h020;
rommem[14585] <= 12'h006;
rommem[14586] <= 12'h096;
rommem[14587] <= 12'h121;
rommem[14588] <= 12'h084;
rommem[14589] <= 12'hFFD;
rommem[14590] <= 12'h097;
rommem[14591] <= 12'h121;
rommem[14592] <= 12'h00F;
rommem[14593] <= 12'h120;
rommem[14594] <= 12'h020;
rommem[14595] <= 12'hF39;
rommem[14596] <= 12'h00D;
rommem[14597] <= 12'h120;
rommem[14598] <= 12'h027;
rommem[14599] <= 12'h004;
rommem[14600] <= 12'h00F;
rommem[14601] <= 12'h120;
rommem[14602] <= 12'h020;
rommem[14603] <= 12'hF31;
rommem[14604] <= 12'h096;
rommem[14605] <= 12'h121;
rommem[14606] <= 12'h084;
rommem[14607] <= 12'h006;
rommem[14608] <= 12'h081;
rommem[14609] <= 12'h006;
rommem[14610] <= 12'h026;
rommem[14611] <= 12'h008;
rommem[14612] <= 12'h0C1;
rommem[14613] <= 12'h071;
rommem[14614] <= 12'h026;
rommem[14615] <= 12'h004;
rommem[14616] <= 12'h06E;
rommem[14617] <= 12'h90F;
rommem[14618] <= 12'hFFF;
rommem[14619] <= 12'hFFE;
rommem[14620] <= 12'h00D;
rommem[14621] <= 12'h121;
rommem[14622] <= 12'h02A;
rommem[14623] <= 12'h00B;
rommem[14624] <= 12'h096;
rommem[14625] <= 12'h121;
rommem[14626] <= 12'h084;
rommem[14627] <= 12'h7FF;
rommem[14628] <= 12'h097;
rommem[14629] <= 12'h121;
rommem[14630] <= 12'h08E;
rommem[14631] <= 12'hFFF;
rommem[14632] <= 12'h680;
rommem[14633] <= 12'h020;
rommem[14634] <= 12'h017;
rommem[14635] <= 12'h096;
rommem[14636] <= 12'h121;
rommem[14637] <= 12'h085;
rommem[14638] <= 12'h004;
rommem[14639] <= 12'h027;
rommem[14640] <= 12'h005;
rommem[14641] <= 12'h08E;
rommem[14642] <= 12'hFFF;
rommem[14643] <= 12'h600;
rommem[14644] <= 12'h020;
rommem[14645] <= 12'h00C;
rommem[14646] <= 12'h085;
rommem[14647] <= 12'h001;
rommem[14648] <= 12'h027;
rommem[14649] <= 12'h005;
rommem[14650] <= 12'h08E;
rommem[14651] <= 12'hFFF;
rommem[14652] <= 12'h500;
rommem[14653] <= 12'h020;
rommem[14654] <= 12'h003;
rommem[14655] <= 12'h08E;
rommem[14656] <= 12'hFFF;
rommem[14657] <= 12'h400;
rommem[14658] <= 12'h03A;
rommem[14659] <= 12'h0E6;
rommem[14660] <= 12'h804;
rommem[14661] <= 12'h04F;
rommem[14662] <= 12'h035;
rommem[14663] <= 12'h090;
rommem[14664] <= 12'h04B;
rommem[14665] <= 12'h045;
rommem[14666] <= 12'h059;
rommem[14667] <= 12'h042;
rommem[14668] <= 12'h04F;
rommem[14669] <= 12'h041;
rommem[14670] <= 12'h052;
rommem[14671] <= 12'h044;
rommem[14672] <= 12'hFFF;
rommem[14673] <= 12'h95A;
rommem[14674] <= 12'hFFF;
rommem[14675] <= 12'h95B;
rommem[14676] <= 12'hFFF;
rommem[14677] <= 12'h95C;
rommem[14678] <= 12'hFFF;
rommem[14679] <= 12'h95D;
rommem[14680] <= 12'hFFF;
rommem[14681] <= 12'h95E;
rommem[14682] <= 12'h039;
rommem[14683] <= 12'h039;
rommem[14684] <= 12'h039;
rommem[14685] <= 12'h039;
rommem[14686] <= 12'h039;
rommem[14687] <= 12'h020;
rommem[14688] <= 12'hED8;
rommem[14689] <= 12'h0CC;
rommem[14690] <= 12'hFFF;
rommem[14691] <= 12'hFFF;
rommem[14692] <= 12'h020;
rommem[14693] <= 12'hED5;
rommem[14694] <= 12'h08D;
rommem[14695] <= 12'hFF9;
rommem[14696] <= 12'h020;
rommem[14697] <= 12'h009;
rommem[14698] <= 12'h08D;
rommem[14699] <= 12'hFF5;
rommem[14700] <= 12'h015;
rommem[14701] <= 12'h07D;
rommem[14702] <= 12'hFFF;
rommem[14703] <= 12'hFFC;
rommem[14704] <= 12'hA00;
rommem[14705] <= 12'h027;
rommem[14706] <= 12'h00B;
rommem[14707] <= 12'h081;
rommem[14708] <= 12'h00D;
rommem[14709] <= 12'h026;
rommem[14710] <= 12'h005;
rommem[14711] <= 12'h017;
rommem[14712] <= 12'hFFD;
rommem[14713] <= 12'h758;
rommem[14714] <= 12'h020;
rommem[14715] <= 12'h002;
rommem[14716] <= 12'h08D;
rommem[14717] <= 12'h91D;
rommem[14718] <= 12'h039;
rommem[14719] <= 12'h06E;
rommem[14720] <= 12'h90F;
rommem[14721] <= 12'h000;
rommem[14722] <= 12'h800;
rommem[14723] <= 12'h015;
rommem[14724] <= 12'h0F7;
rommem[14725] <= 12'hFFF;
rommem[14726] <= 12'hFFC;
rommem[14727] <= 12'hA00;
rommem[14728] <= 12'h039;
rommem[14729] <= 12'h015;
rommem[14730] <= 12'h0BF;
rommem[14731] <= 12'hFFF;
rommem[14732] <= 12'hE10;
rommem[14733] <= 12'h3C0;
rommem[14734] <= 12'h015;
rommem[14735] <= 12'h0FD;
rommem[14736] <= 12'hFFF;
rommem[14737] <= 12'hE10;
rommem[14738] <= 12'h3C2;
rommem[14739] <= 12'h039;
rommem[14740] <= 12'h0CC;
rommem[14741] <= 12'hFFF;
rommem[14742] <= 12'hAF2;
rommem[14743] <= 12'h08D;
rommem[14744] <= 12'h9BB;
rommem[14745] <= 12'h032;
rommem[14746] <= 12'h80F;
rommem[14747] <= 12'h003;
rommem[14748] <= 12'hFFF;
rommem[14749] <= 12'h05F;
rommem[14750] <= 12'h08D;
rommem[14751] <= 12'hFE3;
rommem[14752] <= 12'h017;
rommem[14753] <= 12'hFFD;
rommem[14754] <= 12'h72F;
rommem[14755] <= 12'h0C6;
rommem[14756] <= 12'h024;
rommem[14561] <= 12'h0CC;
rommem[14562] <= 12'h005;
rommem[14563] <= 12'h151;
rommem[14564] <= 12'h015;
rommem[14565] <= 12'h0FD;
rommem[14566] <= 12'hFFF;
rommem[14567] <= 12'hE60;
rommem[14568] <= 12'h001;
rommem[14569] <= 12'h00F;
rommem[14570] <= 12'h111;
rommem[14571] <= 12'h017;
rommem[14572] <= 12'hFFE;
rommem[14573] <= 12'h9D0;
rommem[14574] <= 12'h01F;
rommem[14575] <= 12'h002;
rommem[14576] <= 12'h0CC;
rommem[14577] <= 12'h005;
rommem[14578] <= 12'h252;
rommem[14579] <= 12'h015;
rommem[14580] <= 12'h0FD;
rommem[14581] <= 12'hFFF;
rommem[14582] <= 12'hE60;
rommem[14583] <= 12'h001;
rommem[14584] <= 12'h08D;
rommem[14585] <= 12'h0AB;
rommem[14586] <= 12'h0C1;
rommem[14587] <= 12'h024;
rommem[14588] <= 12'h027;
rommem[14589] <= 12'hFFA;
rommem[14590] <= 12'h086;
rommem[14591] <= 12'h353;
rommem[14592] <= 12'h015;
rommem[14593] <= 12'h0FD;
rommem[14594] <= 12'hFFF;
rommem[14595] <= 12'hE60;
rommem[14596] <= 12'h001;
rommem[14597] <= 12'h0C1;
rommem[14598] <= 12'h03C;
rommem[14599] <= 12'h026;
rommem[14600] <= 12'h02C;
rommem[14601] <= 12'h08D;
rommem[14602] <= 12'h095;
rommem[14603] <= 12'h0C1;
rommem[14604] <= 12'h03E;
rommem[14605] <= 12'h026;
rommem[14606] <= 12'hF9D;
rommem[14607] <= 12'h08D;
rommem[14608] <= 12'h08F;
rommem[14609] <= 12'h0C1;
rommem[14610] <= 12'h073;
rommem[14611] <= 12'h026;
rommem[14612] <= 12'h00E;
rommem[14613] <= 12'h0CC;
rommem[14614] <= 12'hFFE;
rommem[14615] <= 12'hBE4;
rommem[14616] <= 12'h0FD;
rommem[14617] <= 12'h000;
rommem[14618] <= 12'h804;
rommem[14619] <= 12'h0CC;
rommem[14620] <= 12'hFFE;
rommem[14621] <= 12'hC08;
rommem[14622] <= 12'h0FD;
rommem[14623] <= 12'h000;
rommem[14624] <= 12'h800;
rommem[14625] <= 12'h020;
rommem[14626] <= 12'hF89;
rommem[14627] <= 12'h0C1;
rommem[14628] <= 12'h063;
rommem[14629] <= 12'h026;
rommem[14630] <= 12'hF85;
rommem[14631] <= 12'h0CC;
rommem[14632] <= 12'hFFE;
rommem[14633] <= 12'hA12;
rommem[14634] <= 12'h0FD;
rommem[14635] <= 12'h000;
rommem[14636] <= 12'h804;
rommem[14637] <= 12'h0CC;
rommem[14638] <= 12'hFFE;
rommem[14639] <= 12'h2E1;
rommem[14640] <= 12'h0FD;
rommem[14641] <= 12'h000;
rommem[14642] <= 12'h800;
rommem[14643] <= 12'h020;
rommem[14644] <= 12'hF77;
rommem[14645] <= 12'h0C1;
rommem[14646] <= 12'h03F;
rommem[14647] <= 12'h026;
rommem[14648] <= 12'h008;
rommem[14649] <= 12'h0CC;
rommem[14650] <= 12'hFFF;
rommem[14651] <= 12'hA78;
rommem[14652] <= 12'h017;
rommem[14653] <= 12'hFFE;
rommem[14654] <= 12'hA63;
rommem[14655] <= 12'h020;
rommem[14656] <= 12'hF6B;
rommem[14657] <= 12'h0C1;
rommem[14658] <= 12'h043;
rommem[14659] <= 12'h026;
rommem[14660] <= 12'h008;
rommem[14661] <= 12'h017;
rommem[14662] <= 12'hFFE;
rommem[14663] <= 12'h8C9;
rommem[14664] <= 12'h017;
rommem[14665] <= 12'hFFE;
rommem[14666] <= 12'h939;
rommem[14667] <= 12'h020;
rommem[14668] <= 12'hF5F;
rommem[14669] <= 12'h0C1;
rommem[14670] <= 12'h044;
rommem[14671] <= 12'h026;
rommem[14672] <= 12'h008;
rommem[14673] <= 12'h08D;
rommem[14674] <= 12'h04D;
rommem[14675] <= 12'h0C1;
rommem[14676] <= 12'h052;
rommem[14677] <= 12'h026;
rommem[14678] <= 12'h21A;
rommem[14679] <= 12'h020;
rommem[14680] <= 12'h274;
rommem[14681] <= 12'h0C1;
rommem[14682] <= 12'h046;
rommem[14683] <= 12'h026;
rommem[14684] <= 12'h00F;
rommem[14685] <= 12'h08D;
rommem[14686] <= 12'h041;
rommem[14687] <= 12'h0C1;
rommem[14688] <= 12'h049;
rommem[14689] <= 12'h026;
rommem[14690] <= 12'hF49;
rommem[14691] <= 12'h08D;
rommem[14692] <= 12'h03B;
rommem[14693] <= 12'h0C1;
rommem[14694] <= 12'h047;
rommem[14695] <= 12'h026;
rommem[14696] <= 12'hF43;
rommem[14697] <= 12'h07E;
rommem[14698] <= 12'hFE0;
rommem[14699] <= 12'h000;
rommem[14700] <= 12'h0C1;
rommem[14701] <= 12'h04A;
rommem[14702] <= 12'h127;
rommem[14703] <= 12'h000;
rommem[14704] <= 12'h2A7;
rommem[14705] <= 12'h0C1;
rommem[14706] <= 12'h052;
rommem[14707] <= 12'h026;
rommem[14708] <= 12'h006;
rommem[14709] <= 12'h0CE;
rommem[14710] <= 12'hFFF;
rommem[14711] <= 12'h8AC;
rommem[14712] <= 12'h016;
rommem[14713] <= 12'hFFD;
rommem[14714] <= 12'hA85;
rommem[14715] <= 12'h0C1;
rommem[14716] <= 12'h073;
rommem[14717] <= 12'h026;
rommem[14718] <= 12'h005;
rommem[14719] <= 12'h017;
rommem[14720] <= 12'hFFF;
rommem[14721] <= 12'h323;
rommem[14722] <= 12'h020;
rommem[14723] <= 12'hF28;
rommem[14724] <= 12'h0C1;
rommem[14725] <= 12'h054;
rommem[14726] <= 12'h026;
rommem[14727] <= 12'h011;
rommem[14728] <= 12'h08D;
rommem[14729] <= 12'h016;
rommem[14730] <= 12'h0C1;
rommem[14731] <= 12'h049;
rommem[14732] <= 12'h026;
rommem[14733] <= 12'hF1E;
rommem[14734] <= 12'h08D;
rommem[14735] <= 12'h010;
rommem[14736] <= 12'h0C1;
rommem[14737] <= 12'h052;
rommem[14738] <= 12'h026;
rommem[14739] <= 12'hF18;
rommem[14740] <= 12'h017;
rommem[14741] <= 12'hFFE;
rommem[14742] <= 12'hB1C;
rommem[14743] <= 12'h020;
rommem[14744] <= 12'hF13;
rommem[14745] <= 12'h0C1;
rommem[14746] <= 12'h055;
rommem[14747] <= 12'h026;
rommem[14748] <= 12'hF0F;
rommem[14749] <= 12'h016;
rommem[14750] <= 12'hFFF;
rommem[14751] <= 12'hA14;
rommem[14752] <= 12'h0E6;
rommem[14753] <= 12'hA04;
rommem[14754] <= 12'h031;
rommem[14755] <= 12'h201;
rommem[14756] <= 12'h039;
rommem[14757] <= 12'h08D;
rommem[14758] <= 12'hFD8;
rommem[14759] <= 12'h0CC;
rommem[14760] <= 12'hFFF;
rommem[14761] <= 12'hFFF;
rommem[14762] <= 12'h08D;
rommem[14763] <= 12'hE8F;
rommem[14764] <= 12'h0C1;
rommem[14765] <= 12'h00D;
rommem[14766] <= 12'h027;
rommem[14767] <= 12'h004;
rommem[14768] <= 12'h08D;
rommem[14769] <= 12'hFCD;
rommem[14770] <= 12'h020;
rommem[14771] <= 12'hFF3;
rommem[14772] <= 12'h0CC;
rommem[14773] <= 12'h005;
rommem[14774] <= 12'h050;
rommem[14775] <= 12'h015;
rommem[14776] <= 12'h0FD;
rommem[14777] <= 12'hFFF;
rommem[14778] <= 12'hE60;
rommem[14779] <= 12'h000;
rommem[14780] <= 12'h0F6;
rommem[14781] <= 12'h800;
rommem[14782] <= 12'h000;
rommem[14783] <= 12'h0C1;
rommem[14784] <= 12'h03D;
rommem[14785] <= 12'h022;
rommem[14786] <= 12'hFE4;
rommem[14787] <= 12'h0CC;
rommem[14788] <= 12'h005;
rommem[14789] <= 12'h151;
rommem[14790] <= 12'h015;
rommem[14791] <= 12'h0FD;
rommem[14792] <= 12'hFFF;
rommem[14793] <= 12'hE60;
rommem[14758] <= 12'hFF9;
rommem[14759] <= 12'h0C1;
rommem[14760] <= 12'h020;
rommem[14761] <= 12'h027;
rommem[14762] <= 12'hFFA;
rommem[14763] <= 12'h039;
rommem[14764] <= 12'h08D;
rommem[14765] <= 12'hFF2;
rommem[14766] <= 12'h0C1;
rommem[14767] <= 12'h020;
rommem[14768] <= 12'h027;
rommem[14769] <= 12'hFFA;
rommem[14770] <= 12'h031;
rommem[14771] <= 12'h3FF;
rommem[14772] <= 12'h039;
rommem[14773] <= 12'h08D;
rommem[14774] <= 12'hFF5;
rommem[14775] <= 12'h08D;
rommem[14776] <= 12'h03F;
rommem[14777] <= 12'h0FC;
rommem[14778] <= 12'h000;
rommem[14779] <= 12'h910;
rommem[14780] <= 12'h0FD;
rommem[14781] <= 12'h000;
rommem[14782] <= 12'h920;
rommem[14783] <= 12'h0FC;
rommem[14784] <= 12'h000;
rommem[14785] <= 12'h912;
rommem[14786] <= 12'h0FD;
rommem[14787] <= 12'h000;
rommem[14788] <= 12'h922;
rommem[14789] <= 12'h08D;
rommem[14790] <= 12'hFE5;
rommem[14791] <= 12'h08D;
rommem[14792] <= 12'h02F;
rommem[14793] <= 12'h0FC;
rommem[14794] <= 12'h000;
rommem[14795] <= 12'h00F;
rommem[14796] <= 12'h111;
rommem[14797] <= 12'h08D;
rommem[14798] <= 12'h8AA;
rommem[14799] <= 12'h01F;
rommem[14800] <= 12'h002;
rommem[14801] <= 12'h0CC;
rommem[14802] <= 12'h005;
rommem[14803] <= 12'h252;
rommem[14804] <= 12'h015;
rommem[14805] <= 12'h0FD;
rommem[14806] <= 12'hFFF;
rommem[14807] <= 12'hE60;
rommem[14808] <= 12'h000;
rommem[14809] <= 12'h08D;
rommem[14810] <= 12'h055;
rommem[14811] <= 12'h0C1;
rommem[14812] <= 12'h024;
rommem[14813] <= 12'h026;
rommem[14814] <= 12'h009;
rommem[14815] <= 12'h086;
rommem[14816] <= 12'h353;
rommem[14817] <= 12'h015;
rommem[14818] <= 12'h0FD;
rommem[14819] <= 12'hFFF;
rommem[14820] <= 12'hE60;
rommem[14795] <= 12'h910;
rommem[14796] <= 12'h0FD;
rommem[14797] <= 12'h000;
rommem[14798] <= 12'h924;
rommem[14799] <= 12'h0FC;
rommem[14800] <= 12'h000;
rommem[14801] <= 12'h912;
rommem[14802] <= 12'h0FD;
rommem[14803] <= 12'h000;
rommem[14804] <= 12'h926;
rommem[14805] <= 12'h039;
rommem[14806] <= 12'h08D;
rommem[14807] <= 12'hFDD;
rommem[14808] <= 12'h0FC;
rommem[14809] <= 12'h000;
rommem[14810] <= 12'h926;
rommem[14811] <= 12'h0B3;
rommem[14812] <= 12'h000;
rommem[14813] <= 12'h922;
rommem[14814] <= 12'h0FC;
rommem[14815] <= 12'h000;
rommem[14816] <= 12'h924;
rommem[14817] <= 12'h0F2;
rommem[14818] <= 12'h000;
rommem[14819] <= 12'h921;
rommem[14820] <= 12'h0B2;
rommem[14821] <= 12'h000;
rommem[14822] <= 12'h08D;
rommem[14823] <= 12'h048;
rommem[14824] <= 12'h0C1;
rommem[14825] <= 12'h03F;
rommem[14826] <= 12'h026;
rommem[14827] <= 12'h007;
rommem[14828] <= 12'h0CC;
rommem[14829] <= 12'hFFF;
rommem[14830] <= 12'hAF2;
rommem[14831] <= 12'h08D;
rommem[14832] <= 12'h963;
rommem[14833] <= 12'h020;
rommem[14834] <= 12'hFA6;
rommem[14835] <= 12'h0C1;
rommem[14836] <= 12'h043;
rommem[14837] <= 12'h026;
rommem[14838] <= 12'h007;
rommem[14839] <= 12'h017;
rommem[14840] <= 12'hFFF;
rommem[14841] <= 12'h7D6;
rommem[14842] <= 12'h08D;
rommem[14843] <= 12'h845;
rommem[14844] <= 12'h020;
rommem[14845] <= 12'hF9B;
rommem[14846] <= 12'h0C1;
rommem[14847] <= 12'h044;
rommem[14848] <= 12'h026;
rommem[14849] <= 12'h008;
rommem[14850] <= 12'h08D;
rommem[14851] <= 12'h027;
rommem[14852] <= 12'h0C1;
rommem[14853] <= 12'h052;
rommem[14854] <= 12'h026;
rommem[14855] <= 12'hF9F;
rommem[14856] <= 12'h020;
rommem[14857] <= 12'h193;
rommem[14858] <= 12'h0C1;
rommem[14859] <= 12'h046;
rommem[14860] <= 12'h026;
rommem[14861] <= 12'h00F;
rommem[14862] <= 12'h08D;
rommem[14863] <= 12'h01B;
rommem[14864] <= 12'h0C1;
rommem[14865] <= 12'h049;
rommem[14866] <= 12'h026;
rommem[14867] <= 12'hF85;
rommem[14868] <= 12'h08D;
rommem[14869] <= 12'h015;
rommem[14870] <= 12'h0C1;
rommem[14871] <= 12'h047;
rommem[14872] <= 12'h026;
rommem[14873] <= 12'hF7F;
rommem[14874] <= 12'h07E;
rommem[14875] <= 12'hFE0;
rommem[14876] <= 12'h000;
rommem[14877] <= 12'h0C1;
rommem[14878] <= 12'h04A;
rommem[14879] <= 12'h127;
rommem[14822] <= 12'h920;
rommem[14823] <= 12'h125;
rommem[14824] <= 12'h000;
rommem[14825] <= 12'h074;
rommem[14826] <= 12'h039;
rommem[14827] <= 12'h078;
rommem[14828] <= 12'h000;
rommem[14829] <= 12'h913;
rommem[14830] <= 12'h079;
rommem[14831] <= 12'h000;
rommem[14832] <= 12'h912;
rommem[14833] <= 12'h079;
rommem[14834] <= 12'h000;
rommem[14835] <= 12'h911;
rommem[14836] <= 12'h079;
rommem[14837] <= 12'h000;
rommem[14838] <= 12'h910;
rommem[14839] <= 12'h039;
rommem[14840] <= 12'h04F;
rommem[14841] <= 12'h05F;
rommem[14842] <= 12'h0FD;
rommem[14843] <= 12'h000;
rommem[14844] <= 12'h910;
rommem[14845] <= 12'h0FD;
rommem[14846] <= 12'h000;
rommem[14847] <= 12'h912;
rommem[14848] <= 12'h034;
rommem[14849] <= 12'h010;
rommem[14850] <= 12'h08E;
rommem[14851] <= 12'h000;
rommem[14852] <= 12'h000;
rommem[14853] <= 12'h08D;
rommem[14854] <= 12'hF99;
rommem[14855] <= 12'h08D;
rommem[14856] <= 12'h01F;
rommem[14857] <= 12'h0C1;
rommem[14858] <= 12'hFFF;
rommem[14859] <= 12'h027;
rommem[14860] <= 12'h017;
rommem[14861] <= 12'h08D;
rommem[14862] <= 12'hFDC;
rommem[14863] <= 12'h08D;
rommem[14864] <= 12'hFDA;
rommem[14865] <= 12'h08D;
rommem[14866] <= 12'hFD8;
rommem[14867] <= 12'h08D;
rommem[14868] <= 12'hFD6;
rommem[14869] <= 12'h0C4;
rommem[14870] <= 12'h00F;
rommem[14871] <= 12'h0FA;
rommem[14872] <= 12'h000;
rommem[14873] <= 12'h913;
rommem[14874] <= 12'h0F7;
rommem[14875] <= 12'h000;
rommem[14876] <= 12'h913;
rommem[14877] <= 12'h030;
rommem[14878] <= 12'h001;
rommem[14879] <= 12'h08C;
rommem[14880] <= 12'h000;
rommem[14881] <= 12'h1BF;
rommem[14882] <= 12'h0C1;
rommem[14883] <= 12'h052;
rommem[14884] <= 12'h026;
rommem[14885] <= 12'hF73;
rommem[14886] <= 12'h017;
rommem[14887] <= 12'hFFE;
rommem[14888] <= 12'h5D7;
rommem[14889] <= 12'h020;
rommem[14890] <= 12'hF6E;
rommem[14891] <= 12'h0E6;
rommem[14892] <= 12'hA04;
rommem[14893] <= 12'h031;
rommem[14894] <= 12'h201;
rommem[14895] <= 12'h039;
rommem[14896] <= 12'h08D;
rommem[14897] <= 12'hFF9;
rommem[14898] <= 12'h0C1;
rommem[14899] <= 12'h020;
rommem[14900] <= 12'h027;
rommem[14901] <= 12'hFFA;
rommem[14902] <= 12'h0C1;
rommem[14903] <= 12'h009;
rommem[14904] <= 12'h027;
rommem[14905] <= 12'hFF6;
rommem[14906] <= 12'h039;
rommem[14907] <= 12'h08D;
rommem[14908] <= 12'hFEE;
rommem[14909] <= 12'h0C1;
rommem[14910] <= 12'h020;
rommem[14911] <= 12'h027;
rommem[14912] <= 12'hFFA;
rommem[14913] <= 12'h031;
rommem[14914] <= 12'h3FF;
rommem[14915] <= 12'h039;
rommem[14916] <= 12'h08D;
rommem[14917] <= 12'hFF5;
rommem[14918] <= 12'h08D;
rommem[14919] <= 12'h02E;
rommem[14920] <= 12'h0DC;
rommem[14921] <= 12'h910;
rommem[14922] <= 12'h0DD;
rommem[14923] <= 12'h920;
rommem[14924] <= 12'h0DC;
rommem[14925] <= 12'h912;
rommem[14926] <= 12'h0DD;
rommem[14927] <= 12'h922;
rommem[14928] <= 12'h08D;
rommem[14929] <= 12'hFE9;
rommem[14930] <= 12'h08D;
rommem[14931] <= 12'h022;
rommem[14932] <= 12'h0DC;
rommem[14933] <= 12'h910;
rommem[14934] <= 12'h0DD;
rommem[14935] <= 12'h922;
rommem[14936] <= 12'h0DC;
rommem[14937] <= 12'h912;
rommem[14938] <= 12'h0DD;
rommem[14939] <= 12'h924;
rommem[14940] <= 12'h039;
rommem[14941] <= 12'h08D;
rommem[14942] <= 12'hFE5;
rommem[14943] <= 12'h0DC;
rommem[14944] <= 12'h924;
rommem[14945] <= 12'h093;
rommem[14946] <= 12'h922;
rommem[14947] <= 12'h0DC;
rommem[14948] <= 12'h922;
rommem[14949] <= 12'h0D2;
rommem[14950] <= 12'h921;
rommem[14951] <= 12'h092;
rommem[14952] <= 12'h920;
rommem[14953] <= 12'h125;
rommem[14954] <= 12'h000;
rommem[14955] <= 12'h06C;
rommem[14956] <= 12'h039;
rommem[14957] <= 12'h008;
rommem[14958] <= 12'h913;
rommem[14959] <= 12'h009;
rommem[14960] <= 12'h912;
rommem[14961] <= 12'h009;
rommem[14962] <= 12'h911;
rommem[14963] <= 12'h009;
rommem[14964] <= 12'h910;
rommem[14965] <= 12'h039;
rommem[14966] <= 12'h04F;
rommem[14967] <= 12'h05F;
rommem[14968] <= 12'h0DD;
rommem[14969] <= 12'h910;
rommem[14970] <= 12'h0DD;
rommem[14971] <= 12'h912;
rommem[14972] <= 12'h034;
rommem[14973] <= 12'h010;
rommem[14974] <= 12'h08E;
rommem[14975] <= 12'h000;
rommem[14976] <= 12'h000;
rommem[14977] <= 12'h08D;
rommem[14978] <= 12'hFA8;
rommem[14979] <= 12'h08D;
rommem[14980] <= 12'h01D;
rommem[14981] <= 12'h0C1;
rommem[14982] <= 12'hFFF;
rommem[14983] <= 12'h027;
rommem[14984] <= 12'h015;
rommem[14985] <= 12'h08D;
rommem[14986] <= 12'hFE2;
rommem[14987] <= 12'h08D;
rommem[14988] <= 12'hFE0;
rommem[14989] <= 12'h08D;
rommem[14990] <= 12'hFDE;
rommem[14991] <= 12'h08D;
rommem[14992] <= 12'hFDC;
rommem[14993] <= 12'h0C4;
rommem[14994] <= 12'h00F;
rommem[14995] <= 12'h0DA;
rommem[14996] <= 12'h913;
rommem[14997] <= 12'h0D7;
rommem[14998] <= 12'h913;
rommem[14999] <= 12'h030;
rommem[15000] <= 12'h001;
rommem[15001] <= 12'h08C;
rommem[15002] <= 12'h000;
rommem[15003] <= 12'h009;
rommem[15004] <= 12'h025;
rommem[15005] <= 12'hFE3;
rommem[15006] <= 12'h01F;
rommem[15007] <= 12'h010;
rommem[15008] <= 12'h035;
rommem[15009] <= 12'h090;
rommem[15010] <= 12'h0C1;
rommem[15011] <= 12'h030;
rommem[15012] <= 12'h024;
rommem[15013] <= 12'h021;
rommem[15014] <= 12'h0C1;
rommem[15015] <= 12'h03A;
rommem[15016] <= 12'h025;
rommem[15017] <= 12'h003;
rommem[15018] <= 12'h0C0;
rommem[15019] <= 12'h030;
rommem[15020] <= 12'h039;
rommem[15021] <= 12'h0C1;
rommem[15022] <= 12'h041;
rommem[15023] <= 12'h024;
rommem[15024] <= 12'h016;
rommem[15025] <= 12'h0C1;
rommem[15026] <= 12'h047;
rommem[15027] <= 12'h025;
rommem[15028] <= 12'h005;
rommem[15029] <= 12'h0C0;
rommem[15030] <= 12'h041;
rommem[15031] <= 12'h0CB;
rommem[15032] <= 12'h00A;
rommem[15033] <= 12'h039;
rommem[15034] <= 12'h0C1;
rommem[15035] <= 12'h061;
rommem[15036] <= 12'h024;
rommem[15037] <= 12'h009;
rommem[15038] <= 12'h0C1;
rommem[15039] <= 12'h07B;
rommem[15040] <= 12'h025;
rommem[15041] <= 12'h005;
rommem[15042] <= 12'h0C0;
rommem[15043] <= 12'h061;
rommem[15044] <= 12'h0CB;
rommem[15045] <= 12'h00A;
rommem[15046] <= 12'h039;
rommem[15047] <= 12'h0C6;
rommem[15048] <= 12'hFFF;
rommem[15049] <= 12'h039;
rommem[15050] <= 12'h0C1;
rommem[15051] <= 12'h030;
rommem[15052] <= 12'h024;
rommem[15053] <= 12'h007;
rommem[15054] <= 12'h0C1;
rommem[15055] <= 12'h03A;
rommem[15056] <= 12'h025;
rommem[15057] <= 12'h003;
rommem[15058] <= 12'h0C0;
rommem[15059] <= 12'h030;
rommem[15060] <= 12'h039;
rommem[15061] <= 12'h0C6;
rommem[15062] <= 12'hFFF;
rommem[15063] <= 12'h039;
rommem[15064] <= 12'h08E;
rommem[15065] <= 12'hFFF;
rommem[15066] <= 12'hAEA;
rommem[15067] <= 12'h04F;
rommem[15068] <= 12'h05F;
rommem[15069] <= 12'h08D;
rommem[15070] <= 12'h003;
rommem[15071] <= 12'h07E;
rommem[15072] <= 12'hFFF;
rommem[15073] <= 12'h999;
rommem[15074] <= 12'h0DD;
rommem[15075] <= 12'h024;
rommem[15076] <= 12'h09F;
rommem[15077] <= 12'h026;
rommem[15078] <= 12'h0BD;
rommem[15079] <= 12'hFFF;
rommem[15080] <= 12'h354;
rommem[15081] <= 12'h039;
rommem[15082] <= 12'h02A;
rommem[15083] <= 12'h02A;
rommem[15084] <= 12'h045;
rommem[15085] <= 12'h072;
rommem[15086] <= 12'h072;
rommem[15087] <= 12'h00D;
rommem[15088] <= 12'h00A;
rommem[15089] <= 12'h000;
rommem[15090] <= 12'h03F;
rommem[15091] <= 12'h020;
rommem[15092] <= 12'h03D;
rommem[15093] <= 12'h020;
rommem[15094] <= 12'h044;
rommem[15095] <= 12'h069;
rommem[15096] <= 12'h073;
rommem[15097] <= 12'h070;
rommem[15098] <= 12'h06C;
rommem[15099] <= 12'h061;
rommem[15100] <= 12'h079;
rommem[15101] <= 12'h020;
rommem[15102] <= 12'h068;
rommem[15103] <= 12'h065;
rommem[15104] <= 12'h06C;
rommem[15105] <= 12'h070;
rommem[15106] <= 12'h00D;
rommem[15107] <= 12'h00A;
rommem[15108] <= 12'h043;
rommem[15109] <= 12'h04C;
rommem[15110] <= 12'h053;
rommem[14881] <= 12'h00C;
rommem[14882] <= 12'h025;
rommem[14883] <= 12'hFE1;
rommem[14884] <= 12'h01F;
rommem[14885] <= 12'h010;
rommem[14886] <= 12'h035;
rommem[14887] <= 12'h090;
rommem[14888] <= 12'h0C1;
rommem[14889] <= 12'h030;
rommem[14890] <= 12'h025;
rommem[14891] <= 12'h021;
rommem[14892] <= 12'h0C1;
rommem[14893] <= 12'h039;
rommem[14894] <= 12'h022;
rommem[14895] <= 12'h003;
rommem[14896] <= 12'h0C0;
rommem[14897] <= 12'h030;
rommem[14898] <= 12'h039;
rommem[14899] <= 12'h0C1;
rommem[14900] <= 12'h041;
rommem[14901] <= 12'h025;
rommem[14902] <= 12'h016;
rommem[14903] <= 12'h0C1;
rommem[14904] <= 12'h046;
rommem[14905] <= 12'h022;
rommem[14906] <= 12'h005;
rommem[14907] <= 12'h0C0;
rommem[14908] <= 12'h041;
rommem[14909] <= 12'h0CB;
rommem[14910] <= 12'h00A;
rommem[14911] <= 12'h039;
rommem[14912] <= 12'h0C1;
rommem[14913] <= 12'h061;
rommem[14914] <= 12'h025;
rommem[14915] <= 12'h009;
rommem[14916] <= 12'h0C1;
rommem[14917] <= 12'h07A;
rommem[14918] <= 12'h022;
rommem[14919] <= 12'h005;
rommem[14920] <= 12'h0C0;
rommem[14921] <= 12'h061;
rommem[14922] <= 12'h0CB;
rommem[14923] <= 12'h00A;
rommem[14924] <= 12'h039;
rommem[14925] <= 12'h0C6;
rommem[14926] <= 12'hFFF;
rommem[14927] <= 12'h039;
rommem[14928] <= 12'h0C1;
rommem[14929] <= 12'h030;
rommem[14930] <= 12'h024;
rommem[14931] <= 12'h007;
rommem[14932] <= 12'h0C1;
rommem[14933] <= 12'h03A;
rommem[14934] <= 12'h025;
rommem[14935] <= 12'h003;
rommem[14936] <= 12'h0C0;
rommem[14937] <= 12'h030;
rommem[14938] <= 12'h039;
rommem[14939] <= 12'h0C6;
rommem[14940] <= 12'hFFF;
rommem[14941] <= 12'h039;
rommem[14942] <= 12'h08E;
rommem[14943] <= 12'hFFF;
rommem[14944] <= 12'hA70;
rommem[14945] <= 12'h04F;
rommem[14946] <= 12'h05F;
rommem[14947] <= 12'h08D;
rommem[14948] <= 12'h003;
rommem[14949] <= 12'h07E;
rommem[14950] <= 12'hFFF;
rommem[14951] <= 12'h8AC;
rommem[14952] <= 12'h0DD;
rommem[14953] <= 12'h024;
rommem[14954] <= 12'h09F;
rommem[14955] <= 12'h026;
rommem[14956] <= 12'h0BD;
rommem[14957] <= 12'hFFE;
rommem[14958] <= 12'h3A2;
rommem[14959] <= 12'h039;
rommem[14960] <= 12'h02A;
rommem[14961] <= 12'h02A;
rommem[14962] <= 12'h045;
rommem[14963] <= 12'h072;
rommem[14964] <= 12'h072;
rommem[14965] <= 12'h00D;
rommem[14966] <= 12'h00A;
rommem[14967] <= 12'h000;
rommem[14968] <= 12'h03F;
rommem[14969] <= 12'h020;
rommem[14970] <= 12'h03D;
rommem[14971] <= 12'h020;
rommem[14972] <= 12'h044;
rommem[14973] <= 12'h069;
rommem[14974] <= 12'h073;
rommem[14975] <= 12'h070;
rommem[14976] <= 12'h06C;
rommem[14977] <= 12'h061;
rommem[14978] <= 12'h079;
rommem[14979] <= 12'h020;
rommem[14980] <= 12'h068;
rommem[14981] <= 12'h065;
rommem[14982] <= 12'h06C;
rommem[14983] <= 12'h070;
rommem[14984] <= 12'h00D;
rommem[14985] <= 12'h00A;
rommem[14986] <= 12'h043;
rommem[14987] <= 12'h04C;
rommem[14988] <= 12'h053;
rommem[14989] <= 12'h020;
rommem[14990] <= 12'h03D;
rommem[14991] <= 12'h020;
rommem[14992] <= 12'h063;
rommem[14993] <= 12'h06C;
rommem[14994] <= 12'h065;
rommem[14995] <= 12'h061;
rommem[14996] <= 12'h072;
rommem[14997] <= 12'h020;
rommem[14998] <= 12'h073;
rommem[14999] <= 12'h063;
rommem[15000] <= 12'h072;
rommem[15001] <= 12'h065;
rommem[15002] <= 12'h065;
rommem[15003] <= 12'h06E;
rommem[15004] <= 12'h00D;
rommem[15005] <= 12'h00A;
rommem[15006] <= 12'h044;
rommem[15007] <= 12'h052;
rommem[15008] <= 12'h020;
rommem[15009] <= 12'h03D;
rommem[15010] <= 12'h020;
rommem[15011] <= 12'h044;
rommem[15012] <= 12'h075;
rommem[15013] <= 12'h06D;
rommem[15014] <= 12'h070;
rommem[15015] <= 12'h020;
rommem[15016] <= 12'h072;
rommem[15017] <= 12'h065;
rommem[15018] <= 12'h067;
rommem[15019] <= 12'h069;
rommem[15020] <= 12'h073;
rommem[15021] <= 12'h074;
rommem[15022] <= 12'h065;
rommem[15023] <= 12'h072;
rommem[15024] <= 12'h073;
rommem[15025] <= 12'h00D;
rommem[15026] <= 12'h00A;
rommem[15027] <= 12'h044;
rommem[15028] <= 12'h020;
rommem[15029] <= 12'h03D;
rommem[15030] <= 12'h020;
rommem[15031] <= 12'h044;
rommem[15032] <= 12'h075;
rommem[15033] <= 12'h06D;
rommem[15034] <= 12'h070;
rommem[15035] <= 12'h020;
rommem[15036] <= 12'h06D;
rommem[15037] <= 12'h065;
rommem[15038] <= 12'h06D;
rommem[15039] <= 12'h06F;
rommem[15040] <= 12'h072;
rommem[15041] <= 12'h079;
rommem[15042] <= 12'h00D;
rommem[15043] <= 12'h00A;
rommem[15044] <= 12'h046;
rommem[15045] <= 12'h049;
rommem[15046] <= 12'h047;
rommem[15047] <= 12'h020;
rommem[15048] <= 12'h03D;
rommem[15049] <= 12'h020;
rommem[15050] <= 12'h073;
rommem[15051] <= 12'h074;
rommem[15052] <= 12'h061;
rommem[15053] <= 12'h072;
rommem[15054] <= 12'h074;
rommem[15055] <= 12'h020;
rommem[15056] <= 12'h046;
rommem[15057] <= 12'h049;
rommem[15058] <= 12'h047;
rommem[15059] <= 12'h020;
rommem[15060] <= 12'h046;
rommem[15061] <= 12'h06F;
rommem[15062] <= 12'h072;
rommem[15063] <= 12'h074;
rommem[15064] <= 12'h068;
rommem[15065] <= 12'h00D;
rommem[15066] <= 12'h00A;
rommem[15067] <= 12'h04A;
rommem[15068] <= 12'h020;
rommem[15069] <= 12'h03D;
rommem[15070] <= 12'h020;
rommem[15071] <= 12'h04A;
rommem[15072] <= 12'h075;
rommem[15073] <= 12'h06D;
rommem[15074] <= 12'h070;
rommem[15075] <= 12'h020;
rommem[15076] <= 12'h074;
rommem[15077] <= 12'h06F;
rommem[15078] <= 12'h020;
rommem[15079] <= 12'h063;
rommem[15080] <= 12'h06F;
rommem[15081] <= 12'h064;
rommem[15082] <= 12'h065;
rommem[15083] <= 12'h00D;
rommem[15084] <= 12'h00A;
rommem[15085] <= 12'h052;
rommem[15086] <= 12'h041;
rommem[15087] <= 12'h04D;
rommem[15088] <= 12'h020;
rommem[15089] <= 12'h03D;
rommem[15090] <= 12'h020;
rommem[15091] <= 12'h074;
rommem[15092] <= 12'h065;
rommem[15093] <= 12'h073;
rommem[15094] <= 12'h074;
rommem[15095] <= 12'h020;
rommem[15096] <= 12'h052;
rommem[15097] <= 12'h041;
rommem[15098] <= 12'h04D;
rommem[15099] <= 12'h00D;
rommem[15100] <= 12'h00A;
rommem[15101] <= 12'h073;
rommem[15102] <= 12'h020;
rommem[15103] <= 12'h03D;
rommem[15104] <= 12'h020;
rommem[15105] <= 12'h073;
rommem[15106] <= 12'h065;
rommem[15107] <= 12'h072;
rommem[15108] <= 12'h069;
rommem[15109] <= 12'h061;
rommem[15110] <= 12'h06C;
rommem[15111] <= 12'h020;
rommem[15112] <= 12'h03D;
rommem[15113] <= 12'h020;
rommem[15114] <= 12'h063;
rommem[15115] <= 12'h06C;
rommem[15116] <= 12'h065;
rommem[15117] <= 12'h061;
rommem[15118] <= 12'h072;
rommem[15119] <= 12'h020;
rommem[15120] <= 12'h073;
rommem[15121] <= 12'h063;
rommem[15122] <= 12'h072;
rommem[15123] <= 12'h065;
rommem[15124] <= 12'h065;
rommem[15125] <= 12'h06E;
rommem[15126] <= 12'h00D;
rommem[15127] <= 12'h00A;
rommem[15128] <= 12'h044;
rommem[15129] <= 12'h052;
rommem[15130] <= 12'h020;
rommem[15131] <= 12'h03D;
rommem[15132] <= 12'h020;
rommem[15133] <= 12'h044;
rommem[15134] <= 12'h075;
rommem[15135] <= 12'h06D;
rommem[15136] <= 12'h070;
rommem[15112] <= 12'h06F;
rommem[15113] <= 12'h075;
rommem[15114] <= 12'h074;
rommem[15115] <= 12'h070;
rommem[15116] <= 12'h075;
rommem[15117] <= 12'h074;
rommem[15118] <= 12'h020;
rommem[15119] <= 12'h074;
rommem[15120] <= 12'h065;
rommem[15121] <= 12'h073;
rommem[15122] <= 12'h074;
rommem[15123] <= 12'h00D;
rommem[15124] <= 12'h00A;
rommem[15125] <= 12'h054;
rommem[15126] <= 12'h049;
rommem[15127] <= 12'h020;
rommem[15128] <= 12'h03D;
rommem[15129] <= 12'h020;
rommem[15130] <= 12'h064;
rommem[15131] <= 12'h069;
rommem[15132] <= 12'h073;
rommem[15133] <= 12'h070;
rommem[15134] <= 12'h06C;
rommem[15135] <= 12'h061;
rommem[15136] <= 12'h079;
rommem[15137] <= 12'h020;
rommem[15138] <= 12'h072;
rommem[15139] <= 12'h065;
rommem[15140] <= 12'h067;
rommem[15141] <= 12'h069;
rommem[15142] <= 12'h073;
rommem[15138] <= 12'h064;
rommem[15139] <= 12'h061;
rommem[15140] <= 12'h074;
rommem[15141] <= 12'h065;
rommem[15142] <= 12'h02F;
rommem[15143] <= 12'h074;
rommem[15144] <= 12'h065;
rommem[15145] <= 12'h072;
rommem[15146] <= 12'h073;
rommem[15144] <= 12'h069;
rommem[15145] <= 12'h06D;
rommem[15146] <= 12'h065;
rommem[15147] <= 12'h00D;
rommem[15148] <= 12'h00A;
rommem[15149] <= 12'h046;
rommem[15150] <= 12'h049;
rommem[15151] <= 12'h047;
rommem[15149] <= 12'h000;
rommem[15150] <= 12'h00D;
rommem[15151] <= 12'h00A;
rommem[15152] <= 12'h020;
rommem[15153] <= 12'h03D;
rommem[15154] <= 12'h020;
rommem[15155] <= 12'h073;
rommem[15156] <= 12'h074;
rommem[15157] <= 12'h061;
rommem[15158] <= 12'h072;
rommem[15159] <= 12'h074;
rommem[15153] <= 12'h020;
rommem[15154] <= 12'h044;
rommem[15155] <= 12'h02F;
rommem[15156] <= 12'h041;
rommem[15157] <= 12'h042;
rommem[15158] <= 12'h020;
rommem[15159] <= 12'h020;
rommem[15160] <= 12'h020;
rommem[15161] <= 12'h046;
rommem[15162] <= 12'h049;
rommem[15163] <= 12'h047;
rommem[15161] <= 12'h020;
rommem[15162] <= 12'h020;
rommem[15163] <= 12'h058;
rommem[15164] <= 12'h020;
rommem[15165] <= 12'h046;
rommem[15166] <= 12'h06F;
rommem[15167] <= 12'h072;
rommem[15168] <= 12'h074;
rommem[15169] <= 12'h068;
rommem[15170] <= 12'h00D;
rommem[15171] <= 12'h00A;
rommem[15172] <= 12'h04A;
rommem[15165] <= 12'h020;
rommem[15166] <= 12'h020;
rommem[15167] <= 12'h020;
rommem[15168] <= 12'h020;
rommem[15169] <= 12'h020;
rommem[15170] <= 12'h059;
rommem[15171] <= 12'h020;
rommem[15172] <= 12'h020;
rommem[15173] <= 12'h020;
rommem[15174] <= 12'h03D;
rommem[15174] <= 12'h020;
rommem[15175] <= 12'h020;
rommem[15176] <= 12'h04A;
rommem[15177] <= 12'h075;
rommem[15178] <= 12'h06D;
rommem[15179] <= 12'h070;
rommem[15176] <= 12'h020;
rommem[15177] <= 12'h055;
rommem[15178] <= 12'h020;
rommem[15179] <= 12'h020;
rommem[15180] <= 12'h020;
rommem[15181] <= 12'h074;
rommem[15182] <= 12'h06F;
rommem[15181] <= 12'h020;
rommem[15182] <= 12'h020;
rommem[15183] <= 12'h020;
rommem[15184] <= 12'h063;
rommem[15185] <= 12'h06F;
rommem[15186] <= 12'h064;
rommem[15187] <= 12'h065;
rommem[15188] <= 12'h00D;
rommem[15189] <= 12'h00A;
rommem[15190] <= 12'h052;
rommem[15191] <= 12'h041;
rommem[15192] <= 12'h04D;
rommem[15193] <= 12'h020;
rommem[15194] <= 12'h03D;
rommem[15184] <= 12'h053;
rommem[15185] <= 12'h020;
rommem[15186] <= 12'h020;
rommem[15187] <= 12'h020;
rommem[15188] <= 12'h020;
rommem[15189] <= 12'h020;
rommem[15190] <= 12'h020;
rommem[15191] <= 12'h020;
rommem[15192] <= 12'h050;
rommem[15193] <= 12'h043;
rommem[15194] <= 12'h020;
rommem[15195] <= 12'h020;
rommem[15196] <= 12'h074;
rommem[15197] <= 12'h065;
rommem[15198] <= 12'h073;
rommem[15199] <= 12'h074;
rommem[15196] <= 12'h020;
rommem[15197] <= 12'h020;
rommem[15198] <= 12'h044;
rommem[15199] <= 12'h050;
rommem[15200] <= 12'h020;
rommem[15201] <= 12'h052;
rommem[15202] <= 12'h041;
rommem[15203] <= 12'h04D;
rommem[15204] <= 12'h00D;
rommem[15205] <= 12'h00A;
rommem[15206] <= 12'h000;
rommem[15207] <= 12'h00D;
rommem[15208] <= 12'h00A;
rommem[15209] <= 12'h020;
rommem[15210] <= 12'h044;
rommem[15211] <= 12'h02F;
rommem[15212] <= 12'h041;
rommem[15213] <= 12'h042;
rommem[15214] <= 12'h020;
rommem[15215] <= 12'h020;
rommem[15216] <= 12'h020;
rommem[15217] <= 12'h058;
rommem[15218] <= 12'h020;
rommem[15219] <= 12'h020;
rommem[15220] <= 12'h020;
rommem[15221] <= 12'h020;
rommem[15222] <= 12'h059;
rommem[15223] <= 12'h020;
rommem[15224] <= 12'h020;
rommem[15225] <= 12'h020;
rommem[15226] <= 12'h020;
rommem[15227] <= 12'h055;
rommem[15228] <= 12'h020;
rommem[15229] <= 12'h020;
rommem[15230] <= 12'h020;
rommem[15231] <= 12'h020;
rommem[15232] <= 12'h053;
rommem[15233] <= 12'h020;
rommem[15201] <= 12'h020;
rommem[15202] <= 12'h043;
rommem[15203] <= 12'h043;
rommem[15204] <= 12'h052;
rommem[15205] <= 12'h00D;
rommem[15206] <= 12'h00A;
rommem[15207] <= 12'h000;
rommem[15208] <= 12'h0BD;
rommem[15209] <= 12'hFFD;
rommem[15210] <= 12'h2D2;
rommem[15211] <= 12'h039;
rommem[15212] <= 12'h0C6;
rommem[15213] <= 12'h020;
rommem[15214] <= 12'h016;
rommem[15215] <= 12'hFFF;
rommem[15216] <= 12'h1A1;
rommem[15217] <= 12'h08D;
rommem[15218] <= 12'hE42;
rommem[15219] <= 12'h18E;
rommem[15220] <= 12'h000;
rommem[15221] <= 12'h000;
rommem[15222] <= 12'h1BE;
rommem[15223] <= 12'h000;
rommem[15224] <= 12'h922;
rommem[15225] <= 12'h017;
rommem[15226] <= 12'hFFD;
rommem[15227] <= 12'h556;
rommem[15228] <= 12'h0C6;
rommem[15229] <= 12'h03A;
rommem[15230] <= 12'h017;
rommem[15231] <= 12'hFFF;
rommem[15232] <= 12'h191;
rommem[15233] <= 12'h01F;
rommem[15234] <= 12'h020;
rommem[15235] <= 12'h020;
rommem[15236] <= 12'h020;
rommem[15237] <= 12'h020;
rommem[15238] <= 12'h050;
rommem[15239] <= 12'h043;
rommem[15240] <= 12'h020;
rommem[15241] <= 12'h020;
rommem[15242] <= 12'h020;
rommem[15243] <= 12'h020;
rommem[15244] <= 12'h044;
rommem[15245] <= 12'h050;
rommem[15246] <= 12'h020;
rommem[15247] <= 12'h043;
rommem[15248] <= 12'h043;
rommem[15249] <= 12'h052;
rommem[15250] <= 12'h00D;
rommem[15251] <= 12'h00A;
rommem[15252] <= 12'h000;
rommem[15253] <= 12'h0BD;
rommem[15254] <= 12'hFFD;
rommem[15255] <= 12'h2D2;
rommem[15256] <= 12'h039;
rommem[15257] <= 12'h0C6;
rommem[15258] <= 12'h020;
rommem[15259] <= 12'h020;
rommem[15260] <= 12'hDE2;
rommem[15261] <= 12'h08E;
rommem[15262] <= 12'hFFF;
rommem[15263] <= 12'hB67;
rommem[15264] <= 12'h0CC;
rommem[15265] <= 12'h000;
rommem[15266] <= 12'h0FF;
rommem[15267] <= 12'h0BD;
rommem[15268] <= 12'hFFF;
rommem[15269] <= 12'hAE2;
rommem[15270] <= 12'h08D;
rommem[15271] <= 12'hFF1;
rommem[15272] <= 12'h0DC;
rommem[15273] <= 12'h900;
rommem[15274] <= 12'h08D;
rommem[15275] <= 12'hFE9;
rommem[15276] <= 12'h08D;
rommem[15277] <= 12'hFEB;
rommem[15278] <= 12'h0DC;
rommem[15279] <= 12'h902;
rommem[15280] <= 12'h08D;
rommem[15281] <= 12'hFE3;
rommem[15282] <= 12'h08D;
rommem[15283] <= 12'hFE5;
rommem[15284] <= 12'h0DC;
rommem[15285] <= 12'h904;
rommem[15286] <= 12'h08D;
rommem[15287] <= 12'hFDD;
rommem[15288] <= 12'h08D;
rommem[15289] <= 12'hFDF;
rommem[15290] <= 12'h0DC;
rommem[15291] <= 12'h906;
rommem[15292] <= 12'h08D;
rommem[15293] <= 12'hFD7;
rommem[15294] <= 12'h08D;
rommem[15295] <= 12'hFD9;
rommem[15296] <= 12'h0DC;
rommem[15297] <= 12'h908;
rommem[15298] <= 12'h08D;
rommem[15299] <= 12'hFD1;
rommem[15300] <= 12'h08D;
rommem[15301] <= 12'hFD3;
rommem[15302] <= 12'h0DC;
rommem[15303] <= 12'h90A;
rommem[15304] <= 12'h08D;
rommem[15305] <= 12'hFCB;
rommem[15306] <= 12'h0DC;
rommem[15307] <= 12'h90C;
rommem[15308] <= 12'h08D;
rommem[15309] <= 12'hFC7;
rommem[15310] <= 12'h08D;
rommem[15311] <= 12'hFC9;
rommem[15312] <= 12'h0DC;
rommem[15313] <= 12'h90E;
rommem[15314] <= 12'h0BD;
rommem[15315] <= 12'hFFD;
rommem[15316] <= 12'h2CE;
rommem[15317] <= 12'h08D;
rommem[15318] <= 12'hFC2;
rommem[15319] <= 12'h096;
rommem[15320] <= 12'h90F;
rommem[15321] <= 12'h0BD;
rommem[15322] <= 12'hFFD;
rommem[15323] <= 12'h2CE;
rommem[15324] <= 12'h08D;
rommem[15325] <= 12'hFBB;
rommem[15326] <= 12'h07E;
rommem[15327] <= 12'hFFF;
rommem[15328] <= 12'h999;
rommem[15235] <= 12'h017;
rommem[15236] <= 12'hFFE;
rommem[15237] <= 12'h867;
rommem[15238] <= 12'h0C6;
rommem[15239] <= 12'h020;
rommem[15240] <= 12'h017;
rommem[15241] <= 12'hFFF;
rommem[15242] <= 12'h187;
rommem[15243] <= 12'h08E;
rommem[15244] <= 12'h000;
rommem[15245] <= 12'h008;
rommem[15246] <= 12'h0E6;
rommem[15247] <= 12'hA04;
rommem[15248] <= 12'h031;
rommem[15249] <= 12'h201;
rommem[15250] <= 12'h017;
rommem[15251] <= 12'hFFE;
rommem[15252] <= 12'h861;
rommem[15253] <= 12'h0C6;
rommem[15254] <= 12'h020;
rommem[15255] <= 12'h017;
rommem[15256] <= 12'hFFF;
rommem[15257] <= 12'h178;
rommem[15258] <= 12'h05F;
rommem[15259] <= 12'h04F;
rommem[15260] <= 12'h017;
rommem[15261] <= 12'hFFF;
rommem[15262] <= 12'h13B;
rommem[15263] <= 12'h0C1;
rommem[15264] <= 12'h003;
rommem[15265] <= 12'h027;
rommem[15266] <= 12'h024;
rommem[15267] <= 12'h030;
rommem[15268] <= 12'h1FF;
rommem[15269] <= 12'h026;
rommem[15270] <= 12'hFE7;
rommem[15271] <= 12'h0C6;
rommem[15272] <= 12'h020;
rommem[15273] <= 12'h017;
rommem[15274] <= 12'hFFF;
rommem[15275] <= 12'h166;
rommem[15276] <= 12'h08E;
rommem[15277] <= 12'h000;
rommem[15278] <= 12'h008;
rommem[15279] <= 12'h031;
rommem[15280] <= 12'h3F8;
rommem[15281] <= 12'h0E6;
rommem[15282] <= 12'hA04;
rommem[15283] <= 12'h0C1;
rommem[15284] <= 12'h020;
rommem[15285] <= 12'h024;
rommem[15286] <= 12'h002;
rommem[15287] <= 12'h0C6;
rommem[15288] <= 12'h02E;
rommem[15289] <= 12'h017;
rommem[15290] <= 12'hFFF;
rommem[15291] <= 12'h156;
rommem[15292] <= 12'h031;
rommem[15293] <= 12'h201;
rommem[15294] <= 12'h030;
rommem[15295] <= 12'h1FF;
rommem[15296] <= 12'h026;
rommem[15297] <= 12'hFEF;
rommem[15298] <= 12'h1BC;
rommem[15299] <= 12'h000;
rommem[15300] <= 12'h926;
rommem[15301] <= 12'h025;
rommem[15302] <= 12'hFB2;
rommem[15303] <= 12'h017;
rommem[15304] <= 12'hFFD;
rommem[15305] <= 12'h508;
rommem[15306] <= 12'h016;
rommem[15307] <= 12'hFFF;
rommem[15308] <= 12'hCDF;
rommem[15309] <= 12'h0CC;
rommem[15310] <= 12'hFFF;
rommem[15311] <= 12'hB2E;
rommem[15312] <= 12'h017;
rommem[15313] <= 12'hFFE;
rommem[15314] <= 12'h7CF;
rommem[15315] <= 12'h08D;
rommem[15316] <= 12'hF97;
rommem[15317] <= 12'h0FC;
rommem[15318] <= 12'h000;
rommem[15319] <= 12'h900;
rommem[15320] <= 12'h08D;
rommem[15321] <= 12'hF8E;
rommem[15322] <= 12'h08D;
rommem[15323] <= 12'hF90;
rommem[15324] <= 12'h0FC;
rommem[15325] <= 12'h000;
rommem[15326] <= 12'h902;
rommem[15327] <= 12'h08D;
rommem[15328] <= 12'hF87;
rommem[15329] <= 12'h08D;
rommem[15330] <= 12'hE93;
rommem[15331] <= 12'h01A;
rommem[15332] <= 12'h010;
rommem[15333] <= 12'h1DE;
rommem[15334] <= 12'h908;
rommem[15335] <= 12'h0CC;
rommem[15336] <= 12'hFFF;
rommem[15337] <= 12'hC14;
rommem[15338] <= 12'h034;
rommem[15339] <= 12'h006;
rommem[15340] <= 12'h0CC;
rommem[15341] <= 12'h000;
rommem[15342] <= 12'h000;
rommem[15343] <= 12'h034;
rommem[15344] <= 12'h004;
rommem[15345] <= 12'h0DC;
rommem[15346] <= 12'h912;
rommem[15347] <= 12'h034;
rommem[15348] <= 12'h006;
rommem[15349] <= 12'h0DC;
rommem[15350] <= 12'h910;
rommem[15351] <= 12'h034;
rommem[15352] <= 12'h006;
rommem[15353] <= 12'h0DC;
rommem[15354] <= 12'h906;
rommem[15355] <= 12'h034;
rommem[15356] <= 12'h006;
rommem[15357] <= 12'h0DC;
rommem[15358] <= 12'h904;
rommem[15359] <= 12'h034;
rommem[15360] <= 12'h006;
rommem[15361] <= 12'h0DC;
rommem[15362] <= 12'h902;
rommem[15363] <= 12'h034;
rommem[15364] <= 12'h006;
rommem[15365] <= 12'h096;
rommem[15366] <= 12'h90E;
rommem[15367] <= 12'h034;
rommem[15368] <= 12'h002;
rommem[15369] <= 12'h0DC;
rommem[15370] <= 12'h900;
rommem[15371] <= 12'h034;
rommem[15372] <= 12'h006;
rommem[15373] <= 12'h096;
rommem[15374] <= 12'h90F;
rommem[15375] <= 12'h034;
rommem[15376] <= 12'h002;
rommem[15377] <= 12'h015;
rommem[15378] <= 12'h035;
rommem[15379] <= 12'h0FF;
rommem[15380] <= 12'h034;
rommem[15381] <= 12'h001;
rommem[15382] <= 12'h0DD;
rommem[15383] <= 12'h900;
rommem[15384] <= 12'h09F;
rommem[15385] <= 12'h902;
rommem[15386] <= 12'h19F;
rommem[15387] <= 12'h904;
rommem[15388] <= 12'h0DF;
rommem[15389] <= 12'h906;
rommem[15390] <= 12'h01F;
rommem[15391] <= 12'h0B8;
rommem[15392] <= 12'h097;
rommem[15393] <= 12'h90E;
rommem[15394] <= 12'h035;
rommem[15395] <= 12'h002;
rommem[15396] <= 12'h097;
rommem[15397] <= 12'h90F;
rommem[15398] <= 12'h1DF;
rommem[15399] <= 12'h908;
rommem[15400] <= 12'h1CE;
rommem[15401] <= 12'h003;
rommem[15402] <= 12'hFFF;
rommem[15403] <= 12'h07E;
rommem[15404] <= 12'hFFF;
rommem[15405] <= 12'hB9D;
rommem[15406] <= 12'h01A;
rommem[15407] <= 12'h010;
rommem[15408] <= 12'h035;
rommem[15409] <= 12'h002;
rommem[15410] <= 12'h097;
rommem[15411] <= 12'h90F;
rommem[15412] <= 12'h035;
rommem[15413] <= 12'h07E;
rommem[15414] <= 12'h0DD;
rommem[15415] <= 12'h900;
rommem[15416] <= 12'h09F;
rommem[15417] <= 12'h902;
rommem[15418] <= 12'h19F;
rommem[15419] <= 12'h904;
rommem[15420] <= 12'h0DF;
rommem[15421] <= 12'h906;
rommem[15422] <= 12'h01F;
rommem[15423] <= 12'h0B8;
rommem[15424] <= 12'h097;
rommem[15425] <= 12'h90E;
rommem[15426] <= 12'h035;
rommem[15427] <= 12'h006;
rommem[15428] <= 12'h0DD;
rommem[15429] <= 12'h90A;
rommem[15430] <= 12'h035;
rommem[15431] <= 12'h006;
rommem[15432] <= 12'h0DD;
rommem[15433] <= 12'h90C;
rommem[15434] <= 12'h1DF;
rommem[15435] <= 12'h908;
rommem[15436] <= 12'h1CE;
rommem[15437] <= 12'h003;
rommem[15438] <= 12'hFFF;
rommem[15439] <= 12'h01C;
rommem[15440] <= 12'h0EF;
rommem[15441] <= 12'h07E;
rommem[15442] <= 12'hFFF;
rommem[15443] <= 12'hB9D;
rommem[15444] <= 12'h01A;
rommem[15445] <= 12'h010;
rommem[15446] <= 12'h1DE;
rommem[15447] <= 12'h908;
rommem[15448] <= 12'h0DC;
rommem[15449] <= 12'h90C;
rommem[15330] <= 12'hF89;
rommem[15331] <= 12'h0FC;
rommem[15332] <= 12'h000;
rommem[15333] <= 12'h904;
rommem[15334] <= 12'h08D;
rommem[15335] <= 12'hF80;
rommem[15336] <= 12'h08D;
rommem[15337] <= 12'hF82;
rommem[15338] <= 12'h0FC;
rommem[15339] <= 12'h000;
rommem[15340] <= 12'h906;
rommem[15341] <= 12'h08D;
rommem[15342] <= 12'hF79;
rommem[15343] <= 12'h08D;
rommem[15344] <= 12'hF7B;
rommem[15345] <= 12'h0FC;
rommem[15346] <= 12'h000;
rommem[15347] <= 12'h908;
rommem[15348] <= 12'h08D;
rommem[15349] <= 12'hF72;
rommem[15350] <= 12'h08D;
rommem[15351] <= 12'hF74;
rommem[15352] <= 12'h0F6;
rommem[15353] <= 12'h000;
rommem[15354] <= 12'h90B;
rommem[15355] <= 12'h017;
rommem[15356] <= 12'hFFE;
rommem[15357] <= 12'h7F8;
rommem[15358] <= 12'h0FC;
rommem[15359] <= 12'h000;
rommem[15360] <= 12'h90C;
rommem[15361] <= 12'h08D;
rommem[15362] <= 12'hF65;
rommem[15363] <= 12'h08D;
rommem[15364] <= 12'hF67;
rommem[15365] <= 12'h0FC;
rommem[15366] <= 12'h000;
rommem[15367] <= 12'h90E;
rommem[15368] <= 12'h0BD;
rommem[15369] <= 12'hFFD;
rommem[15370] <= 12'h2CE;
rommem[15371] <= 12'h08D;
rommem[15372] <= 12'hF5F;
rommem[15373] <= 12'h0B6;
rommem[15374] <= 12'h000;
rommem[15375] <= 12'h90F;
rommem[15376] <= 12'h017;
rommem[15377] <= 12'hFFD;
rommem[15378] <= 12'h6BB;
rommem[15379] <= 12'h08D;
rommem[15380] <= 12'hF57;
rommem[15381] <= 12'h016;
rommem[15382] <= 12'hFFF;
rommem[15383] <= 12'hC94;
rommem[15384] <= 12'h08D;
rommem[15385] <= 12'hDDE;
rommem[15386] <= 12'h01A;
rommem[15387] <= 12'h010;
rommem[15388] <= 12'h1FE;
rommem[15389] <= 12'h000;
rommem[15390] <= 12'h908;
rommem[15391] <= 12'h0CC;
rommem[15392] <= 12'hFFF;
rommem[15393] <= 12'hC53;
rommem[15394] <= 12'h034;
rommem[15395] <= 12'h006;
rommem[15396] <= 12'h0C6;
rommem[15397] <= 12'h000;
rommem[15398] <= 12'h034;
rommem[15399] <= 12'h004;
rommem[15400] <= 12'h0FC;
rommem[15401] <= 12'h000;
rommem[15402] <= 12'h912;
rommem[15403] <= 12'h034;
rommem[15404] <= 12'h006;
rommem[15405] <= 12'h0F6;
rommem[15406] <= 12'h000;
rommem[15407] <= 12'h911;
rommem[15408] <= 12'h034;
rommem[15409] <= 12'h004;
rommem[15410] <= 12'h0FC;
rommem[15411] <= 12'h000;
rommem[15412] <= 12'h906;
rommem[15413] <= 12'h034;
rommem[15414] <= 12'h006;
rommem[15415] <= 12'h0FC;
rommem[15416] <= 12'h000;
rommem[15417] <= 12'h904;
rommem[15418] <= 12'h034;
rommem[15419] <= 12'h006;
rommem[15420] <= 12'h0FC;
rommem[15421] <= 12'h000;
rommem[15422] <= 12'h902;
rommem[15423] <= 12'h034;
rommem[15424] <= 12'h006;
rommem[15425] <= 12'h0B6;
rommem[15426] <= 12'h000;
rommem[15427] <= 12'h90E;
rommem[15428] <= 12'h034;
rommem[15429] <= 12'h002;
rommem[15430] <= 12'h0FC;
rommem[15431] <= 12'h000;
rommem[15432] <= 12'h900;
rommem[15433] <= 12'h034;
rommem[15434] <= 12'h006;
rommem[15435] <= 12'h0B6;
rommem[15436] <= 12'h000;
rommem[15437] <= 12'h90F;
rommem[15438] <= 12'h034;
rommem[15439] <= 12'h002;
rommem[15440] <= 12'h015;
rommem[15441] <= 12'h035;
rommem[15442] <= 12'h0FF;
rommem[15443] <= 12'h1FF;
rommem[15444] <= 12'h000;
rommem[15445] <= 12'h908;
rommem[15446] <= 12'h032;
rommem[15447] <= 12'h80F;
rommem[15448] <= 12'h006;
rommem[15449] <= 12'hFFF;
rommem[15450] <= 12'h034;
rommem[15451] <= 12'h006;
rommem[15452] <= 12'h0DC;
rommem[15453] <= 12'h90A;
rommem[15454] <= 12'h034;
rommem[15455] <= 12'h006;
rommem[15456] <= 12'h0DE;
rommem[15457] <= 12'h906;
rommem[15458] <= 12'h19E;
rommem[15459] <= 12'h904;
rommem[15460] <= 12'h09E;
rommem[15461] <= 12'h902;
rommem[15462] <= 12'h034;
rommem[15463] <= 12'h070;
rommem[15464] <= 12'h096;
rommem[15465] <= 12'h90E;
rommem[15466] <= 12'h034;
rommem[15467] <= 12'h002;
rommem[15468] <= 12'h0DC;
rommem[15469] <= 12'h900;
rommem[15470] <= 12'h034;
rommem[15471] <= 12'h006;
rommem[15472] <= 12'h096;
rommem[15473] <= 12'h90F;
rommem[15474] <= 12'h034;
rommem[15475] <= 12'h002;
rommem[15476] <= 12'h01F;
rommem[15477] <= 12'h08A;
rommem[15478] <= 12'h01C;
rommem[15479] <= 12'h0EF;
rommem[15480] <= 12'h03B;
rommem[15481] <= 12'h086;
rommem[15482] <= 12'h002;
rommem[15483] <= 12'h015;
rommem[15484] <= 12'h0B7;
rommem[15485] <= 12'hFFF;
rommem[15486] <= 12'hE3F;
rommem[15487] <= 12'h006;
rommem[15488] <= 12'h097;
rommem[15489] <= 12'h79A;
rommem[15490] <= 12'h096;
rommem[15491] <= 12'h0DF;
rommem[15492] <= 12'h044;
rommem[15493] <= 12'h09A;
rommem[15494] <= 12'h0DF;
rommem[15495] <= 12'h084;
rommem[15496] <= 12'h0E0;
rommem[15497] <= 12'h097;
rommem[15498] <= 12'h0DF;
rommem[15499] <= 12'h015;
rommem[15500] <= 12'h07C;
rommem[15501] <= 12'hFFF;
rommem[15502] <= 12'hE00;
rommem[15503] <= 12'h06E;
rommem[15504] <= 12'h015;
rommem[15505] <= 12'h0B6;
rommem[15506] <= 12'hFFF;
rommem[15507] <= 12'hFFF;
rommem[15508] <= 12'hFE0;
rommem[15509] <= 12'h091;
rommem[15510] <= 12'h100;
rommem[15511] <= 12'h026;
rommem[15512] <= 12'h021;
rommem[15513] <= 12'h096;
rommem[15514] <= 12'h114;
rommem[15515] <= 12'h027;
rommem[15516] <= 12'h01D;
rommem[15517] <= 12'h017;
rommem[15518] <= 12'hFFF;
rommem[15519] <= 12'h5D9;
rommem[15520] <= 12'h01F;
rommem[15521] <= 12'h002;
rommem[15522] <= 12'h0A6;
rommem[15523] <= 12'hA09;
rommem[15524] <= 12'h002;
rommem[15451] <= 12'h001;
rommem[15452] <= 12'h034;
rommem[15453] <= 12'h002;
rommem[15454] <= 12'h01F;
rommem[15455] <= 12'h0B8;
rommem[15456] <= 12'h0B7;
rommem[15457] <= 12'h000;
rommem[15458] <= 12'h90E;
rommem[15459] <= 12'h04F;
rommem[15460] <= 12'h01F;
rommem[15461] <= 12'h08B;
rommem[15462] <= 12'h035;
rommem[15463] <= 12'h002;
rommem[15464] <= 12'h0FD;
rommem[15465] <= 12'h000;
rommem[15466] <= 12'h900;
rommem[15467] <= 12'h0BF;
rommem[15468] <= 12'h000;
rommem[15469] <= 12'h902;
rommem[15470] <= 12'h1BF;
rommem[15471] <= 12'h000;
rommem[15472] <= 12'h904;
rommem[15473] <= 12'h0FF;
rommem[15474] <= 12'h000;
rommem[15475] <= 12'h906;
rommem[15476] <= 12'h035;
rommem[15477] <= 12'h002;
rommem[15478] <= 12'h0B7;
rommem[15479] <= 12'h000;
rommem[15480] <= 12'h90F;
rommem[15481] <= 12'h0CC;
rommem[15482] <= 12'hFFE;
rommem[15483] <= 12'hBE4;
rommem[15484] <= 12'h0FD;
rommem[15485] <= 12'h000;
rommem[15486] <= 12'h804;
rommem[15487] <= 12'h0CC;
rommem[15488] <= 12'hFFE;
rommem[15489] <= 12'h2E1;
rommem[15490] <= 12'h0FD;
rommem[15491] <= 12'h000;
rommem[15492] <= 12'h800;
rommem[15493] <= 12'h016;
rommem[15494] <= 12'hFFF;
rommem[15495] <= 12'hF45;
rommem[15496] <= 12'h01A;
rommem[15497] <= 12'h010;
rommem[15498] <= 12'h035;
rommem[15499] <= 12'h002;
rommem[15500] <= 12'h0B7;
rommem[15501] <= 12'h000;
rommem[15502] <= 12'h90F;
rommem[15503] <= 12'h035;
rommem[15504] <= 12'h07E;
rommem[15505] <= 12'h0FD;
rommem[15506] <= 12'h000;
rommem[15507] <= 12'h900;
rommem[15508] <= 12'h0BF;
rommem[15509] <= 12'h000;
rommem[15510] <= 12'h902;
rommem[15511] <= 12'h1BF;
rommem[15512] <= 12'h000;
rommem[15513] <= 12'h904;
rommem[15514] <= 12'h0FF;
rommem[15515] <= 12'h000;
rommem[15516] <= 12'h906;
rommem[15517] <= 12'h01F;
rommem[15518] <= 12'h0B8;
rommem[15519] <= 12'h0B7;
rommem[15520] <= 12'h000;
rommem[15521] <= 12'h90E;
rommem[15522] <= 12'h035;
rommem[15523] <= 12'h002;
rommem[15524] <= 12'h0B7;
rommem[15525] <= 12'h000;
rommem[15526] <= 12'h0D6;
rommem[15527] <= 12'h7C6;
rommem[15528] <= 12'h054;
rommem[15529] <= 12'h044;
rommem[15530] <= 12'h044;
rommem[15531] <= 12'h044;
rommem[15532] <= 12'h044;
rommem[15533] <= 12'h054;
rommem[15534] <= 12'h049;
rommem[15535] <= 12'h054;
rommem[15536] <= 12'h049;
rommem[15537] <= 12'h054;
rommem[15538] <= 12'h049;
rommem[15539] <= 12'h054;
rommem[15540] <= 12'h049;
rommem[15541] <= 12'h0A7;
rommem[15542] <= 12'hA0A;
rommem[15543] <= 12'h000;
rommem[15544] <= 12'hE00;
rommem[15545] <= 12'h000;
rommem[15546] <= 12'h03B;
rommem[15547] <= 12'h015;
rommem[15548] <= 12'h0F6;
rommem[15549] <= 12'hFFF;
rommem[15550] <= 12'hFFF;
rommem[15551] <= 12'hFE0;
rommem[15552] <= 12'h086;
rommem[15553] <= 12'h049;
rommem[15554] <= 12'h08E;
rommem[15555] <= 12'hE00;
rommem[15556] <= 12'h028;
rommem[15557] <= 12'h03A;
rommem[15558] <= 12'h0A7;
rommem[15559] <= 12'h804;
rommem[15560] <= 12'h03B;
rommem[16368] <= 12'h012;
rommem[16369] <= 12'h012;
rommem[15526] <= 12'h90A;
rommem[15527] <= 12'h035;
rommem[15528] <= 12'h006;
rommem[15529] <= 12'h0FD;
rommem[15530] <= 12'h000;
rommem[15531] <= 12'h90B;
rommem[15532] <= 12'h1FF;
rommem[15533] <= 12'h000;
rommem[15534] <= 12'h908;
rommem[15535] <= 12'h1CE;
rommem[15536] <= 12'h003;
rommem[15537] <= 12'hFFF;
rommem[15538] <= 12'h01C;
rommem[15539] <= 12'h0EF;
rommem[15540] <= 12'h07E;
rommem[15541] <= 12'hFFF;
rommem[15542] <= 12'hBCD;
rommem[15543] <= 12'h01A;
rommem[15544] <= 12'h010;
rommem[15545] <= 12'h1FE;
rommem[15546] <= 12'h000;
rommem[15547] <= 12'h908;
rommem[15548] <= 12'h0FC;
rommem[15549] <= 12'h000;
rommem[15550] <= 12'h90B;
rommem[15551] <= 12'h034;
rommem[15552] <= 12'h006;
rommem[15553] <= 12'h0B6;
rommem[15554] <= 12'h000;
rommem[15555] <= 12'h90A;
rommem[15556] <= 12'h034;
rommem[15557] <= 12'h002;
rommem[15558] <= 12'h0FE;
rommem[15559] <= 12'h000;
rommem[15560] <= 12'h906;
rommem[15561] <= 12'h1BE;
rommem[15562] <= 12'h000;
rommem[15563] <= 12'h904;
rommem[15564] <= 12'h0BE;
rommem[15565] <= 12'h000;
rommem[15566] <= 12'h902;
rommem[15567] <= 12'h034;
rommem[15568] <= 12'h070;
rommem[15569] <= 12'h0B6;
rommem[15570] <= 12'h000;
rommem[15571] <= 12'h90E;
rommem[15572] <= 12'h034;
rommem[15573] <= 12'h002;
rommem[15574] <= 12'h0FC;
rommem[15575] <= 12'h000;
rommem[15576] <= 12'h900;
rommem[15577] <= 12'h034;
rommem[15578] <= 12'h006;
rommem[15579] <= 12'h0B6;
rommem[15580] <= 12'h000;
rommem[15581] <= 12'h90F;
rommem[15582] <= 12'h034;
rommem[15583] <= 12'h002;
rommem[15584] <= 12'h01F;
rommem[15585] <= 12'h08A;
rommem[15586] <= 12'h01C;
rommem[15587] <= 12'h0EF;
rommem[15588] <= 12'h03B;
rommem[15589] <= 12'h03B;
rommem[15590] <= 12'h086;
rommem[15591] <= 12'h01F;
rommem[15592] <= 12'h0B7;
rommem[15593] <= 12'hFF0;
rommem[15594] <= 12'h011;
rommem[15595] <= 12'h015;
rommem[15596] <= 12'h0B7;
rommem[15597] <= 12'hFFF;
rommem[15598] <= 12'hE3F;
rommem[15599] <= 12'h010;
rommem[15600] <= 12'h015;
rommem[15601] <= 12'h0B6;
rommem[15602] <= 12'hFFF;
rommem[15603] <= 12'hE60;
rommem[15604] <= 12'h00D;
rommem[15605] <= 12'h02A;
rommem[15606] <= 12'h011;
rommem[15607] <= 12'h085;
rommem[15608] <= 12'h800;
rommem[15609] <= 12'h027;
rommem[15610] <= 12'h00D;
rommem[15611] <= 12'h015;
rommem[15612] <= 12'h07F;
rommem[15613] <= 12'hFFF;
rommem[15614] <= 12'hE60;
rommem[15615] <= 12'h012;
rommem[15616] <= 12'h015;
rommem[15617] <= 12'h07F;
rommem[15618] <= 12'hFFF;
rommem[15619] <= 12'hE60;
rommem[15620] <= 12'h013;
rommem[15621] <= 12'h07C;
rommem[15622] <= 12'hE00;
rommem[15623] <= 12'h037;
rommem[15624] <= 12'h0B6;
rommem[15625] <= 12'hFF0;
rommem[15626] <= 12'h014;
rommem[15627] <= 12'h044;
rommem[15628] <= 12'h0BA;
rommem[15629] <= 12'hFF0;
rommem[15630] <= 12'h014;
rommem[15631] <= 12'h084;
rommem[15632] <= 12'h0E0;
rommem[15633] <= 12'h0B7;
rommem[15634] <= 12'hFF0;
rommem[15635] <= 12'h014;
rommem[15636] <= 12'h03B;
rommem[15637] <= 12'h015;
rommem[15638] <= 12'h0F6;
rommem[15639] <= 12'hFFF;
rommem[15640] <= 12'hFFF;
rommem[15641] <= 12'hFE0;
rommem[15642] <= 12'h086;
rommem[15643] <= 12'h049;
rommem[15644] <= 12'h08E;
rommem[15645] <= 12'hE00;
rommem[15646] <= 12'h028;
rommem[15647] <= 12'h0A7;
rommem[15648] <= 12'h88F;
rommem[15649] <= 12'h03B;
rommem[16368] <= 12'hFFF;
rommem[16369] <= 12'hD21;
rommem[16370] <= 12'hFFF;
rommem[16371] <= 12'hC2E;
rommem[16371] <= 12'hC88;
rommem[16372] <= 12'hFFF;
rommem[16373] <= 12'hD21;
rommem[16374] <= 12'hFFF;
rommem[16375] <= 12'hCE5;
rommem[16376] <= 12'hFFF;
rommem[16377] <= 12'hC79;
rommem[16378] <= 12'hFFF;
rommem[16377] <= 12'hCE6;
rommem[16378] <= 12'hFFE;
rommem[16379] <= 12'h023;
rommem[16380] <= 12'hFFF;
rommem[16381] <= 12'hCBB;
rommem[16382] <= 12'hFFF;
rommem[16381] <= 12'hD15;
rommem[16382] <= 12'hFFE;
rommem[16383] <= 12'h023;
/boot/disassem.asm
0,0 → 1,997
; ============================================================================
; __
; \\__/ o\ (C) 2013-2022 Robert Finch, Waterloo
; \ __ / All rights reserved.
; \/_// robfinch<remove>@opencores.org
; ||
;
;
; BSD 3-Clause License
; Redistribution and use in source and binary forms, with or without
; modification, are permitted provided that the following conditions are met:
;
; 1. Redistributions of source code must retain the above copyright notice, this
; list of conditions and the following disclaimer.
;
; 2. Redistributions in binary form must reproduce the above copyright notice,
; this list of conditions and the following disclaimer in the documentation
; and/or other materials provided with the distribution.
;
; 3. Neither the name of the copyright holder nor the names of its
; contributors may be used to endorse or promote products derived from
; this software without specific prior written permission.
;
; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
; IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
; DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
; FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
; DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
; SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
; CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
; OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
; OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
;
; ============================================================================
;
; Disassembler
;
;
DIRECT EQU 1
LSREL EQU 2
IMMB EQU 3
SREL EQU 4
NDX EQU 5
EXT EQU 6
IMMW EQU 7
FAREXT EQU 8
 
distbl1:
; 00 to 0F
fcb "NEG ", DIRECT
fcb " ", 0
fcb " ", 0
fcb "COM ", DIRECT
fcb "LSR ", DIRECT
fcb " ", 0
fcb "ROR ", DIRECT
fcb "ASR ", DIRECT
fcb "ASL ", DIRECT
fcb "ROL ", DIRECT
fcb "DEC ", DIRECT
fcb " ", 0
fcb "INC ", DIRECT
fcb "TST ", DIRECT
fcb "JMP ", DIRECT
fcb "CLR ", DIRECT
; 10 to 1F
fcb " ", 0
fcb " ", 0
fcb "NOP ", 0
fcb "SYNC", 0
fcb " ", 0
fcb "FAR ", 0
fcb "LBRA", LSREL
fcb "LBSR", LSREL
fcb " ", 0
fcb "DAA ", 0
fcb "ORCC", IMMB
fcb " ", 0
fcb "ANDC", IMMB
fcb "SEX ", 0
fcb "EXG ", IMMB
fcb "TFR ", IMMB
; 20 to 2F
fcb "BRA ", SREL
fcb "BRN ", SREL
fcb "BHI ", SREL
fcb "BLS ", SREL
fcb "BHS ", SREL
fcb "BLO ", SREL
fcb "BNE ", SREL
fcb "BEQ ", SREL
fcb "BVC ", SREL
fcb "BVS ", SREL
fcb "BPL ", SREL
fcb "BMI ", SREL
fcb "BGE ", SREL
fcb "BLT ", SREL
fcb "BGT ", SREL
fcb "BLE ", SREL
; 30 to 3F
fcb "LEAX", NDX
fcb "LEAY", NDX
fcb "LEAS", NDX
fcb "LEAU", NDX
fcb "PSHS", IMMB
fcb "PULS", IMMB
fcb "PSHU", IMMB
fcb "PULU", IMMB
fcb "RTF ", 0
fcb "RTS ", 0
fcb "ABX ", 0
fcb "RTI ", 0
fcb "CWAI", IMMB
fcb "MUL ", 0
fcb " ", 0
fcb "SWI ", 0
 
; 40 to 4F
fcb "NEGA", 0
fcb " ", 0
fcb " ", 0
fcb "COMA", 0
fcb "LSRA", 0
fcb " ", 0
fcb "RORA", 0
fcb "ASRA", 0
fcb "ASLA", 0
fcb "ROLA", 0
fcb "DECA", 0
fcb " ", 0
fcb "INCA", 0
fcb "TSTA", 0
fcb " ", 0
fcb "CLRA", 0
; 50 to 5F
fcb "NEGB", 0
fcb " ", 0
fcb " ", 0
fcb "COMB", 0
fcb "LSRB", 0
fcb " ", 0
fcb "RORB", 0
fcb "ASRB", 0
fcb "ASLB", 0
fcb "ROLB", 0
fcb "DECB", 0
fcb " ", 0
fcb "INCB", 0
fcb "TSTB", 0
fcb " ", 0
fcb "CLRB", 0
; 60 to 6F
fcb "NEG ", NDX
fcb " ", 0
fcb " ", 0
fcb "COM ", NDX
fcb "LSR ", NDX
fcb " ", 0
fcb "ROR ", NDX
fcb "ASR ", NDX
fcb "ASL ", NDX
fcb "ROL ", NDX
fcb "DEC ", NDX
fcb " ", 0
fcb "INC ", NDX
fcb "TST ", NDX
fcb "JMP ", NDX
fcb "CLR ", NDX
 
; 70 to 7F
fcb "NEG ", EXT
fcb " ", 0
fcb " ", 0
fcb "COM ", EXT
fcb "LSR ", EXT
fcb " ", 0
fcb "ROR ", EXT
fcb "ASR ", EXT
fcb "ASL ", EXT
fcb "ROL ", EXT
fcb "DEC ", EXT
fcb " ", 0
fcb "INC ", EXT
fcb "TST ", EXT
fcb "JMP ", EXT
fcb "CLR ", EXT
 
; 80 to 8F
fcb "SUBA", IMMB
fcb "CMPA", IMMB
fcb "SBCA", IMMB
fcb "SUBD", IMMW
fcb "ANDA", IMMB
fcb "BITA", IMMB
fcb "LDA ", IMMB
fcb " ", 0
fcb "EORA", IMMB
fcb "ADCA", IMMB
fcb "ORA ", IMMB
fcb "ADDA", IMMB
fcb "CMPX", IMMW
fcb "BSR ", SREL
fcb "LDX ", IMMW
fcb "JMF ", FAREXT
; 90 to 9F
fcb "SUBA", DIRECT
fcb "CMPA", DIRECT
fcb "SBCA", DIRECT
fcb "SUBD", DIRECT
fcb "ANDA", DIRECT
fcb "BITA", DIRECT
fcb "LDA ", DIRECT
fcb "STA ", DIRECT
fcb "EORA", DIRECT
fcb "ADCA", DIRECT
fcb "ORA ", DIRECT
fcb "ADDA", DIRECT
fcb "CMPX", DIRECT
fcb "JSR ", DIRECT
fcb "LDX ", DIRECT
fcb "STX ", DIRECT
 
; A0 to AF
fcb "SUBA", NDX
fcb "CMPA", NDX
fcb "SBCA", NDX
fcb "SUBD", NDX
fcb "ANDA", NDX
fcb "BITA", NDX
fcb "LDA ", NDX
fcb "STA ", NDX
fcb "EORA", NDX
fcb "ADCA", NDX
fcb "ORA ", NDX
fcb "ADDA", NDX
fcb "CMPX", NDX
fcb "JSR ", NDX
fcb "LDX ", NDX
fcb "STX ", NDX
 
; B0 to BF
fcb "SUBA", EXT
fcb "CMPA", EXT
fcb "SBCA", EXT
fcb "SUBD", EXT
fcb "ANDA", EXT
fcb "BITA", EXT
fcb "LDA ", EXT
fcb "STA ", EXT
fcb "EORA", EXT
fcb "ADCA", EXT
fcb "ORA ", EXT
fcb "ADDA", EXT
fcb "CMPX", EXT
fcb "JSR ", EXT
fcb "LDX ", EXT
fcb "STX ", EXT
; C0 to CF
fcb "SUBB", IMMB
fcb "CMPB", IMMB
fcb "SBCb", IMMB
fcb "ADDD", IMMW
fcb "ANDB", IMMB
fcb "BITB", IMMB
fcb "LDB ", IMMB
fcb " ", 0
fcb "EORB", IMMB
fcb "ADCB", IMMB
fcb "ORB ", IMMB
fcb "ADDB", IMMB
fcb "LDD ", IMMW
fcb " ", SREL
fcb "LDU ", IMMW
fcb "JSF ", FAREXT
 
; D0 to DF
fcb "SUBB", DIRECT
fcb "CMPB", DIRECT
fcb "SBCB", DIRECT
fcb "ADDD", DIRECT
fcb "ANDB", DIRECT
fcb "BITB", DIRECT
fcb "LDB ", DIRECT
fcb "STB ", DIRECT
fcb "EORB", DIRECT
fcb "ADCB", DIRECT
fcb "ORB ", DIRECT
fcb "ADDB", DIRECT
fcb "LDD ", DIRECT
fcb "STD ", DIRECT
fcb "LDU ", DIRECT
fcb "STU ", DIRECT
 
; E0 to EF
fcb "SUBB", NDX
fcb "CMPB", NDX
fcb "SBCB", NDX
fcb "ADDD", NDX
fcb "ANDB", NDX
fcb "BITB", NDX
fcb "LDB ", NDX
fcb "STB ", NDX
fcb "EORB", NDX
fcb "ADCB", NDX
fcb "ORB ", NDX
fcb "ADDB", NDX
fcb "LDD ", NDX
fcb "STD ", NDX
fcb "LDU ", NDX
fcb "STU ", NDX
 
; F0 to FF
fcb "SUBB", EXT
fcb "CMPB", EXT
fcb "SBCB", EXT
fcb "ADDD", EXT
fcb "ANDB", EXT
fcb "BITB", EXT
fcb "LDB ", EXT
fcb "STB ", EXT
fcb "EORB", EXT
fcb "ADCB", EXT
fcb "ORB ", EXT
fcb "ADDB", EXT
fcb "LDD ", EXT
fcb "STD ", EXT
fcb "LDU ", EXT
fcb "STU ", EXT
 
; 120 to 12F
distbl2:
fcb "LBRA"
fcb "LBRN"
fcb "LBHI"
fcb "LBLS"
fcb "LBHS"
fcb "LBLO"
fcb "LBNE"
fcb "LBEQ"
fcb "LBVC"
fcb "LBVS"
fcb "LBPL"
fcb "LBMI"
fcb "LBGE"
fcb "LBLT"
fcb "LBGT"
fcb "LBLE"
distbl3:
fcb $13F
fcb $183
fcb $18C
fcb $18E
fcb $193
fcb $19C
fcb $19E
fcb $19F
fcb $1A3
fcb $1AC
fcb $1AE
fcb $1AF
fcb $1B3
fcb $1BC
fcb $1BE
fcb $1BF
fcb $1CE
fcb $1DE
fcb $1DF
fcb $1EE
fcb $1EF
fcb $1FE
fcb $1FF
fcb $23F
fcb $283
fcb $28C
fcb $293
fcb $29C
fcb $2A3
fcb $2AC
fcb $2B3
fcb $2BC
 
distbl4:
fcb "SWI2", 0
fcb "CMPD", IMMW
fcb "CMPY", IMMW
fcb "LDY ", IMMW
fcb "CMPD", DIRECT
fcb "CMPY", DIRECT
fcb "LDY ", DIRECT
fcb "STY ", DIRECT
fcb "CMPD", NDX
fcb "CMPY", NDX
fcb "LDY ", NDX
fcb "STY ", NDX
fcb "CMPD", EXT
fcb "CMPY", EXT
fcb "LDY ", EXT
fcb "STY ", EXT
fcb "LDS ", IMMW
fcb "LDS ", DIRECT
fcb "STS ", DIRECT
fcb "LDS ", NDX
fcb "STS ", NDX
fcb "LDS ", EXT
fcb "STS ", EXT
fcb "SWI3", 0
fcb "CMPU", IMMW
fcb "CMPS", IMMW
fcb "CMPU", DIRECT
fcb "CMPS", DIRECT
fcb "CMPU", NDX
fcb "CMPS", NDX
fcb "CMPU", EXT
fcb "CMPS", EXT
 
disassem:
lbsr GetTwoParams
lbsr CRLF
ldy mon_r1+2
disLoop1:
tfr y,d
lbsr DispWordAsHex
ldb #' '
lbsr OUTCH
ldb ,y+
bitb #$300
lbne dis1
dis20:
ldx #distbl1
dis23:
lda #5
mul
abx
ldb ,x+
lbsr OUTCH
ldb ,x+
lbsr OUTCH
ldb ,x+
lbsr OUTCH
ldb ,x+
lbsr OUTCH
ldb #' '
lbsr OUTCH
ldb ,x+
lbeq disNextLine
cmpb #DIRECT
bne disNotDirect
ldb ,y+
lbsr DispByteAsHex
lbra disNextLine
disNotDirect:
cmpb #LSREL
bne disNotLRel
dis21:
ldd ,y++
dis2:
leax d,y
tfr x,d
lbsr DispWordAsHex
lbra disNextLine
disNotLRel:
cmpb #SREL
bne disNotRel
ldb ,y+
clra
bra dis2
disNotRel:
cmpb #NDX
bne disNotNdx
ldb ,y+
bitb #$800
bne disNot9 ; test for offset 9 mode
pshs b
andb #$1FF ; mask to offset bits
clra ;
bitb #$100 ; test for negative offset
beq dis3
deca ; sign extend offset
orb #$E00
dis3:
lbsr DispWordAsHex
ldb #','
lbsr OUTCH
puls b
bsr disNdxReg
lbsr OUTCH
lbra disNextLine
disNot9:
pshs b
bitb #$100 ; check if indirect
bne dis4
ldb #'['
lbsr OUTCH
dis4:
ldb ,s ; get back b
andb #15
bne disNotRplus
ldb ,s
bitb #$80 ; outer indexed?
bne dis5
ldb #']'
lbsr OUTCH
dis5:
ldb #','
lbsr OUTCH
ldb ,s
bsr disNdxReg
lbsr OUTCH
ldb #'+'
lbsr OUTCH
puls b
bitb #$100
lbne disNextLine
bitb #$80
lbne disNextLine
ldb #']'
lbsr OUTCH
lbra disNextLine
disNotRplus:
cmpb #1
bne disNotRplusplus
ldb ,s
bitb #$80 ; outer indexed?
bne dis6
ldb #']'
lbsr OUTCH
dis6:
ldb #','
lbsr OUTCH
ldb ,s
bsr disNdxReg
lbsr OUTCH
ldb #'+'
lbsr OUTCH
lbsr OUTCH
puls b
bitb #$100
lbne disNextLine
bitb #$80
lbne disNextLine
ldb #']'
lbsr OUTCH
lbra disNextLine
disNotRplusplus:
cmpb #2
bne disNotRminus
ldb ,s
bitb #$80 ; outer indexed?
bne dis7
ldb #']'
lbsr OUTCH
dis7:
ldb #','
lbsr OUTCH
ldb ,s
bsr disNdxReg
lbsr OUTCH
ldb #'-'
lbsr OUTCH
puls b
bitb #$100
lbne disNextLine
bitb #$80
lbne disNextLine
ldb #']'
lbsr OUTCH
lbra disNextLine
disNotRminus:
cmpb #3
bne disNotRminusminus
ldb ,s
bitb #$80 ; outer indexed?
bne dis8
ldb #']'
lbsr OUTCH
dis8:
ldb #','
lbsr OUTCH
ldb ,s
bsr disNdxReg
lbsr OUTCH
ldb #'-'
lbsr OUTCH
lbsr OUTCH
puls b
bitb #$100
lbne disNextLine
bitb #$80
lbne disNextLine
ldb #']'
lbsr OUTCH
lbra disNextLine
disNotRminusminus:
cmpb #4
bne disNotR
ldb ,s
bitb #$80 ; outer indexed?
bne dis9
ldb #']'
lbsr OUTCH
dis9:
ldb #','
lbsr OUTCH
ldb ,s
bsr disNdxReg
lbsr OUTCH
puls b
bitb #$100
lbne disNextLine
bitb #$80
lbne disNextLine
ldb #']'
lbsr OUTCH
lbra disNextLine
disNotR:
cmpb #5
bne disNotBOffs
ldb #'B'
lbsr OUTCH
ldb ,s
bitb #$80 ; outer indexed?
bne dis10
ldb #']'
lbsr OUTCH
dis10:
ldb #','
lbsr OUTCH
ldb ,s
bsr disNdxReg
lbsr OUTCH
ldb #'-'
lbsr OUTCH
lbsr OUTCH
puls b
bitb #$100
lbne disNextLine
bitb #$80
lbne disNextLine
ldb #']'
lbsr OUTCH
lbra disNextLine
disNotBOffs:
cmpb #6
bne disNotAOffs
ldb #'A'
lbsr OUTCH
ldb ,s
bitb #$80 ; outer indexed?
bne dis11
ldb #']'
lbsr OUTCH
dis11:
ldb #','
lbsr OUTCH
ldb ,s
bsr disNdxReg
lbsr OUTCH
ldb #'-'
lbsr OUTCH
lbsr OUTCH
puls b
bitb #$100
lbne disNextLine
bitb #$80
lbne disNextLine
ldb #']'
lbsr OUTCH
lbra disNextLine
disNotAOffs:
cmpb #8
bne disNotBO
ldb ,y+
sex
lbsr DispWordAsHex
ldb ,s
bitb #$80 ; outer indexed?
bne dis12
ldb #']'
lbsr OUTCH
dis12:
ldb #','
lbsr OUTCH
ldb ,s
bsr disNdxReg
lbsr OUTCH
ldb #'-'
lbsr OUTCH
lbsr OUTCH
puls b
bitb #$100
lbne disNextLine
bitb #$80
lbne disNextLine
ldb #']'
lbsr OUTCH
lbra disNextLine
disNotBO:
cmpb #9
bne disNotWO
ldd ,y++
lbsr DispWordAsHex
ldb ,s
bitb #$80 ; outer indexed?
bne dis13
ldb #']'
lbsr OUTCH
dis13:
ldb #','
lbsr OUTCH
ldb ,s
bsr disNdxReg
lbsr OUTCH
ldb #'-'
lbsr OUTCH
lbsr OUTCH
puls b
bitb #$100
lbne disNextLine
bitb #$80
lbne disNextLine
ldb #']'
lbsr OUTCH
lbra disNextLine
disNotWO:
cmpb #10
bne disNotTO
ldb ,y++
lbsr DispByteAsHex
ldd ,y++
lbsr DispWordAsHex
ldb ,s
bitb #$80 ; outer indexed?
bne dis14
ldb #']'
lbsr OUTCH
dis14:
ldb #','
lbsr OUTCH
ldb ,s
bsr disNdxReg
lbsr OUTCH
ldb #'-'
lbsr OUTCH
lbsr OUTCH
puls b
bitb #$100
lbne disNextLine
bitb #$80
lbne disNextLine
ldb #']'
lbsr OUTCH
lbra disNextLine
disNotTO:
cmpb #11
bne disNotDOffs
ldb #'D'
lbsr OUTCH
ldb ,s
bitb #$80 ; outer indexed?
bne dis15
ldb #']'
lbsr OUTCH
dis15:
ldb #','
lbsr OUTCH
ldb ,s
bsr disNdxReg
lbsr OUTCH
ldb #'-'
lbsr OUTCH
lbsr OUTCH
puls b
bitb #$100
lbne disNextLine
bitb #$80
lbne disNextLine
ldb #']'
lbsr OUTCH
lbra disNextLine
disNotDOffs:
cmpb #12
bne disNotPBO
ldb ,y+
sex
lbsr DispWordAsHex
ldb ,s
bitb #$80 ; outer indexed?
bne dis16
ldb #']'
lbsr OUTCH
dis16:
ldb #','
lbsr OUTCH
ldb ,s
bsr disNdxReg
ldb #'P'
lbsr OUTCH
ldb #'C'
lbsr OUTCH
ldb #'-'
lbsr OUTCH
lbsr OUTCH
puls b
bitb #$100
lbne disNextLine
bitb #$80
lbne disNextLine
ldb #']'
lbsr OUTCH
lbra disNextLine
disNotPBO:
cmpb #13
bne disNotPWO
ldd ,y++
lbsr DispWordAsHex
ldb ,s
bitb #$80 ; outer indexed?
bne dis17
ldb #']'
lbsr OUTCH
dis17:
ldb #','
lbsr OUTCH
ldb ,s
bsr disNdxReg
ldb #'P'
lbsr OUTCH
ldb #'C'
lbsr OUTCH
ldb #'-'
lbsr OUTCH
lbsr OUTCH
puls b
bitb #$100
lbne disNextLine
bitb #$80
lbne disNextLine
ldb #']'
lbsr OUTCH
lbra disNextLine
disNotPWO:
cmpb #14
bne disNotPTO
ldb ,y+
lbsr DispByteAsHex
ldd ,y++
lbsr DispWordAsHex
ldb ,s
bitb #$80 ; outer indexed?
bne dis18
ldb #']'
lbsr OUTCH
dis18:
ldb #','
lbsr OUTCH
ldb ,s
bsr disNdxReg
ldb #'P'
lbsr OUTCH
ldb #'C'
lbsr OUTCH
ldb #'-'
lbsr OUTCH
lbsr OUTCH
puls b
bitb #$100
lbne disNextLine
bitb #$80
lbne disNextLine
ldb #']'
lbsr OUTCH
lbra disNextLine
disNotPTO:
ldb #'['
lbsr OUTCH
ldd ,y++
lbsr DispWordAsHex
ldb #']'
lbsr OUTCH
lbra disNextLine
disNotNdx:
cmpb #EXT
bne disNotExt
ldd ,y++
lbsr DispWordAsHex
lbra disNextLine
disNotExt:
cmpb #IMMB
bne disNotIMMB
ldb #'#'
lbsr OUTCH
ldb ,y+
lbsr DispByteAsHex
lbra disNextLine
disNotIMMB:
cmpb #IMMW
bne disNotIMMW
ldb #'#'
lbsr OUTCH
ldd ,y++
lbsr DispWordAsHex
bra disNextLine
disNotIMMW:
dis1:
cmpb #$121
blo dis19
cmpb #$12F
bhi dis19
andb #$FF
ldx #distbl1
aslb
aslb
abx
ldb ,x+
lbsr OUTCH
ldb ,x+
lbsr OUTCH
ldb ,x+
lbsr OUTCH
ldb ,x+
lbsr OUTCH
ldb #' '
lbsr OUTCH
lbra dis21
dis19:
ldx #0
dis24:
cmpb distbl3,x
bne dis25
ldx #distbl4
lbra dis23
dis25:
inx
cmpx #31
blo dis24
ldb #'?'
lbsr OUTCH
lbsr OUTCH
lbsr OUTCH
lbsr OUTCH
bra disNextLine
disNextLine
lbsr CRLF
cmpy mon_r2+2
lblo disLoop1
lbra Monitor
 
disNdxRegs:
fcb 'X','Y','S','U'
disNdxReg:
andb #$600
rolb
rolb
rolb
rolb
clra
pshs u
tfr d,u
lda disNdxRegs,u
puls u
exg a,b
rts
 
ASMO:
pshs d
ldd #ASMOUTCH
std CharOutVec
puls d,pc
 
ASMOO:
pshs d
ldd #DisplayChar
std CharOutVec
puls d,pc
 
ASMOUTCH:
stb ,u+
rts
 
DumpAsmbuf:
ldu #asmbuf
dab2:
ldb ,u+
beq dab1
lbsr OUTCH
bra dab2
dab1:
rts
/boot/i2c.asm
0,0 → 1,131
; ============================================================================
; __
; \\__/ o\ (C) 2013-2022 Robert Finch, Waterloo
; \ __ / All rights reserved.
; \/_// robfinch<remove>@opencores.org
; ||
;
;
; BSD 3-Clause License
; Redistribution and use in source and binary forms, with or without
; modification, are permitted provided that the following conditions are met:
;
; 1. Redistributions of source code must retain the above copyright notice, this
; list of conditions and the following disclaimer.
;
; 2. Redistributions in binary form must reproduce the above copyright notice,
; this list of conditions and the following disclaimer in the documentation
; and/or other materials provided with the distribution.
;
; 3. Neither the name of the copyright holder nor the names of its
; contributors may be used to endorse or promote products derived from
; this software without specific prior written permission.
;
; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
; IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
; DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
; FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
; DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
; SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
; CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
; OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
; OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
;
; ============================================================================
;
;===============================================================================
; Generic I2C routines
;
; It is assumed there may be more than one I2C controller in the system, so
; the address of the controller is passed in the X register.
;===============================================================================
 
I2C_PREL EQU $0
I2C_PREH EQU $1
I2C_CTRL EQU $2
I2C_RXR EQU $3
I2C_TXR EQU $3
I2C_CMD EQU $4
I2C_STAT EQU $4
 
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
; i2c initialization, sets the clock prescaler
;
; Parameters:
; x = I2C controller address
; Returns: none
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 
_i2c_init:
pshs b
ldb #4 ; setup prescale for 400kHz clock
stb I2C_PREL,x
clr I2C_PREH,x
puls b,pc
 
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
; Wait for I2C transfer to complete
;
; Parameters
; x - I2C controller base address
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 
i2c_wait_tip:
pshs b
i2cw1:
ldb I2C_STAT,x ; would use lvb, but lb is okay since its the I/O area
bitb #1 ; wait for tip to clear
bne i2cw1
puls b,pc
 
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
; Write command to i2c
;
; Parameters
; accb - data to transmit
; acca - command value
; x - I2C controller base address
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 
i2c_wr_cmd:
stb I2C_TXR,x
sta I2C_CMD,x
bsr i2c_wait_tip
ldb I2C_STAT,x
rts
 
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
; Parameters
; x - I2C controller base address
; accb - data to send
; Returns: none
; Stack space: 2 words
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 
_i2c_xmit1:
pshs d ; save data value
pshs d ; and save it again
ldb #1
stb I2C_CTRL,x ; enable the core
ldb #$76 ; set slave address = %0111011
lda #$90 ; set STA, WR
bsr i2c_wr_cmd
bsr i2c_wait_rx_nack
puls d ; get back data value
lda #$50 ; set STO, WR
bsr i2c_wr_cmd
bsr i2c_wait_rx_nack
puls d,pc
 
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 
i2c_wait_rx_nack:
pshs b ; save off accb
i2cwr1:
ldb I2C_STAT,x ; wait for RXack = 0
bitb #$80 ; test for nack
bne i2cwr1
puls b,pc
 
/boot/rtc_driver.asm
0,0 → 1,145
; ============================================================================
; __
; \\__/ o\ (C) 2022 Robert Finch, Waterloo
; \ __ / All rights reserved.
; \/_// robfinch<remove>@opencores.org
; ||
;
;
; BSD 3-Clause License
; Redistribution and use in source and binary forms, with or without
; modification, are permitted provided that the following conditions are met:
;
; 1. Redistributions of source code must retain the above copyright notice, this
; list of conditions and the following disclaimer.
;
; 2. Redistributions in binary form must reproduce the above copyright notice,
; this list of conditions and the following disclaimer in the documentation
; and/or other materials provided with the distribution.
;
; 3. Neither the name of the copyright holder nor the names of its
; contributors may be used to endorse or promote products derived from
; this software without specific prior written permission.
;
; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
; IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
; DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
; FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
; DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
; SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
; CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
; OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
; OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
;
; ============================================================================
 
;===============================================================================
; Realtime clock routines
;===============================================================================
 
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
; Read the real-time-clock chip.
;
; The entire contents of the clock registers and sram are read into a buffer
; in one-shot rather than reading the registers individually.
;
; Parameters: none
; Returns: d = 0 on success, otherwise non-zero
; Modifies: d and RTCBuf
; Stack space: 6 words
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 
rtc_read:
ldx #RTC
ldy #RTCBuf
ldb #$80
stb I2C_CTRL,x ; enable I2C
ldd #$900DE ; read address, write op, STA + wr bit
bsr i2c_wr_cmd
bitb #$80
bne rtc_rxerr
ldd #$10000 ; address zero, wr bit
bsr i2c_wr_cmd
bitb #$80
bne rtc_rxerr
ldd #$900DF ; read address, read op, STA + wr bit
bsr i2c_wr_cmd
bitb #$80
bne rtc_rxerr
clrb
rtcr0001:
lda #$20
sta I2C_CMD,x ; rd bit
bsr i2c_wait_tip
bsr i2c_wait_rx_nack
lda I2C_STAT,x
bita #$80
bne rtc_rxerr
lda I2C_RXR,x
sta b,y
incb
cmpb #$5F
blo rtcr0001
lda #$68
sta I2C_CMD,x ; STO, rd bit + nack
bsr i2c_wait_tip
lda I2C_STAT,x
bita #$80
bne rtc_rxerr
lda I2C_RXR,x
sta b,y
clrd ; return 0
rtc_rxerr:
clr I2C_CTRL,x ; disable I2C and return status
clra
rts
 
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
; Write the real-time-clock chip.
;
; The entire contents of the clock registers and sram are written from a
; buffer (RTCBuf) in one-shot rather than writing the registers individually.
;
; Parameters: none
; Returns: r1 = 0 on success, otherwise non-zero
; Modifies: r1 and RTCBuf
; Stack space: 6 words
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 
rtc_write:
ldx #RTC
ldy #RTCBuf
ldb #$80
stb I2C_CTRL,x ; enable I2C
ldd #$900DE ; read address, write op, STA + wr bit
bsr i2c_wr_cmd
bitb #$80
bne rtc_rxerr
ldd #$10000 ; address zero, wr bit
bsr i2c_wr_cmd
bitb #$80
bne rtc_rxerr
 
ldb #0
rtcw0001:
pshs b
ldb b,y
lda #$10
bsr i2c_wr_cmd
bitb #$80
puls b
bne rtc_rxerr
incb
cmpb #$5F
blo rtcw0001
ldb b,y
lda #$50 ; STO, wr bit
bsr i2c_wr_cmd
bitb #$80
bne rtc_rxerr
clrd ; return 0
clr I2C_CTRL,x ; disable I2C and return status
rts

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.