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

Subversion Repositories rf6809

Compare Revisions

  • This comparison shows the changes necessary to convert path
    /
    from Rev 14 to Rev 15
    Reverse comparison

Rev 14 → Rev 15

/rf6809/trunk/rtl/cpu/rf6809.sv
345,7 → 345,7
13'b01???10000110: NdxAddr <= {{BPB*2{acca[BPBM1]}},acca};
13'b01???10001000: NdxAddr <= offset12;
13'b01???10001001: NdxAddr <= offset24;
13'b01???10001010: NdxAddr <= offset24;
13'b01???10001010: NdxAddr <= offset36;
13'b01???10001011: NdxAddr <= {acca,accb};
13'b01???10001100: NdxAddr <= pc + offset12 + 3'd3;
13'b01???10001101: NdxAddr <= pc + offset24 + 3'd4;
414,7 → 414,7
12'b1???00001101: insnsz <= 4'h4;
12'b1???00001110: insnsz <= 4'h5;
12'b1??000001111: insnsz <= isFar ? 4'h5 : 4'h4;
12'b1??000011111: insnsz <= 4'h4;
12'b1??100001111: insnsz <= 4'h4;
default: insnsz <= 4'h2;
endcase
 
723,6 → 723,7
accd <= 24'h0;
xr <= 24'h0;
yr <= 24'h0;
usppg <= 16'h0;
usp <= 24'h0;
ssp <= 24'h0;
if (halt_i) begin
778,7 → 779,7
ssp <= (ssp - cnt);
end
else begin // PSHU
wadr <= ({usppg,8'h00} + usp - cnt);
wadr <= ({usppg,{bitsPerByte{1'b0}}} + usp - cnt);
usp <= (usp - cnt);
end
end
1327,7 → 1328,7
2'b10: usp <= (usp + 4'd2);
2'b11: ssp <= (ssp + 4'd2);
endcase
12'b1??0x0000010:
12'b1??0?0000010:
case(ndxbyte[10:9])
2'b00: xr <= (xr - 2'd1);
2'b01: yr <= (yr - 2'd1);
1334,7 → 1335,7
2'b10: usp <= (usp - 2'd1);
2'b11: ssp <= (ssp - 2'd1);
endcase
12'b1??0x0000011:
12'b1??0?0000011:
case(ndxbyte[10:9])
2'b00: xr <= (xr - 2'd2);
2'b01: yr <= (yr - 2'd2);
1685,10 → 1686,15
end
`JSR_NDX:
begin
begin
store_what <= `SW_PCH;
wadr <= ssp - 2'd2;
ssp <= ssp - 2'd2;
if (isFar) begin
store_what <= `SW_PC2316;
wadr <= ssp - 16'd3;
ssp <= ssp - 16'd3;
end
begin
store_what <= `SW_PCH;
wadr <= ssp - 2'd2;
ssp <= ssp - 2'd2;
end
pc <= pc + insnsz;
next_state(STORE1);
3116,7 → 3122,7
// If loading from the vector table in bank zero, force pc[23:16]=0
if (radr[`BYTE3]=={BPB{1'b0}} && radr[`BYTE2]=={BPB{1'b1}} && radr[7:4]==4'hF)
pc[`BYTE3] <= {BPB{1'b0}};
if (isRTI|isRTS|isPULS) begin
if (isRTI|isRTS|isRTF|isPULS) begin
$display("loadded PCL=%h", dat);
ssp <= ssp + 2'd1;
end
3128,7 → 3134,7
pc[`HIBYTE] <= dat;
load_what <= `LW_PCL;
radr <= radr + 2'd1;
if (isRTI|isRTS|isPULS) begin
if (isRTI|isRTS|isRTF|isPULS) begin
$display("loadded PCH=%h", dat);
ssp <= ssp + 2'd1;
end
/rf6809/trunk/software/boot/boot_rom.asm
34,25 → 34,10
;
; ============================================================================
;
CR EQU $0D ;ASCII equates
LF EQU $0A
TAB EQU $09
CTRLC EQU $03
CTRLH EQU $08
CTRLI EQU $09
CTRLJ EQU $0A
CTRLK EQU $0B
CTRLM EQU $0D
CTRLS EQU $13
CTRLT EQU $14
CTRLX EQU $18
XON EQU $11
XOFF EQU $13
OPT include "d:\cores2022\rf6809\software\boot\mon_equates.asm"
OPT include "d:\cores2022\rf6809\software\boot\io_equates.asm"
 
FIRST_CORE EQU 1
MAX_TASKNO EQU 63
DRAM_BASE EQU $10000000
 
OPC_SWI EQU $03F
ScreenLocation EQU $10
ColorCodeLocation EQU $14
ScreenLocation2 EQU $18
63,8 → 48,6
; Forth Area
; 0x30-0x60
 
RunningID EQU $800000
 
; Task control blocks, room for 256 tasks
TCB_NxtRdy EQU $00 ; next task on ready / timeout list
TCB_PrvRdy EQU $04 ; previous task on ready / timeout list
93,59 → 76,22
KeybdLocks EQU $FFFFFCD00
KeybdBuffer EQU $FFFFFC000 ; buffer is 16 chars
 
COREID EQU $FFFFFFFE0
MSCOUNT EQU $FFFFFFFE4
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
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 $FF0013
IrqBase EQU $FF0014
NmiBase EQU $FFC013
IrqBase EQU $FFC014
 
IOFocusNdx EQU $100
 
; These variables in global OS storage area
 
IOFocusList EQU $FF0000 ; to $FF000F
IOFocusID EQU $FF0010
IrqSource EQU $FF0011
IRQFlag EQU $FF0012
IOFocusList EQU $FFC000 ; to $FF000F
IOFocusID EQU $FFC010
IrqSource EQU $FFC011
IRQFlag EQU $FFC012
RunningID EQU $FFC013
 
; These variables use direct page access
CursorRow EQU $110
192,6 → 138,11
CharInVec EQU $804
CmdPromptJI EQU $808
MonErrVec EQU $80C
BreakpointFlag EQU $810
NumSetBreakpoints EQU $811
Breakpoints EQU $820 ; to $82F
BreakpointBytes EQU $830 ; to $83F
mon_vectb EQU $880
 
; Register save area for monitor
mon_DSAVE EQU $900
206,6 → 157,7
mon_numwka EQU $910
mon_r1 EQU $920
mon_r2 EQU $924
jmpvec EQU $928
 
; The ORG directive must set an address a multiple of 4 in order for the Verilog
; output to work correctly.
299,6 → 251,52
sync
jmp ,u
 
dramtest:
ldy #$10000 ; DRAM starts here
lda #1
sta LEDS
ldu #$AAA555
lbsr CRLF
dramtest1:
deca
bne dramtest4
tfr y,d
lbsr DispWordAsHex
ldb #CR
lbsr OUTCH
dramtest4:
stu ,y++
cmpy #$E00000 ; DRAM ends here
blo dramtest1
; now readback values and compare
ldy #$10000
lda #1
lbsr CRLF
dramtest3:
deca
bne dramtest5
tfr y,d
lbsr DispWordAsHex
ldb #CR
lbsr OUTCH
dramtest5:
cmpu ,y++
bne dramerr
cmpy #$E00000
blo dramtest3
lda #2
sta LEDS
lbra Monitor
dramerr:
lda #$80
sta LEDS
ldx #TEXTSCR
ldb COREID
abx
lda #'F'
sta ,x
lbra Monitor
 
org $FFE000
FDB Monitor
FDB DumRts ; NEXTCMD
331,6 → 329,7
sta LEDS
lda #1 ; prime OS semaphore
sta OSSEMA+$1000
sta OUTSEMA+$1000
ldu #st6 ; U = return address
jmp ramtest ; JMP dont JSR
st6:
347,6 → 346,8
; jmp ,x ; jump to the BIOS now in local RAM
st7:
bsr Delay3s ; give some time for devices to reset
clr BreakpointFlag
clr NumSetBreakpoints
lda #$AA
sta LEDS
lda #FIRST_CORE
370,8 → 371,9
std CharOutVec
ldd #SerialPeekCharDirect
std CharInVec
ldb #24 ; request IO focus
lbsr OSCall
; swi
; fcb MF_OSCALL
; fcb 24 ; request IO focus
ldb COREID
cmpb #FIRST_CORE
beq init
410,14 → 412,14
lda #$81 ; make irq edge sensitive
sta PIC+$FD
lda #31 ; enable timer interrupt
; sta PIC+9
sta PIC+9
ldb #1
stb OUTSEMA+SEMAABS ; set semaphore to 1 available slot
skip_init:
andcc #$EF ; unmask irq
lda #56
lda #COLS
sta TEXTREG+TEXT_COLS
lda #29
lda #ROWS
sta TEXTREG+TEXT_ROWS
bsr ClearScreen
bsr HomeCursor
584,7 → 586,7
tfr d,x
pshs d
ldy #TEXTSCR
ldu #56*29/2
ldu #COLS*ROWS/2
cv2s1:
ldd ,x++
std ,y++
594,7 → 596,7
; reset the cursor position in the text controller
puls x
ldb CursorRow,x
lda #56
lda #COLS
mul
tfr d,y
ldb CursorCol,x
611,7 → 613,7
bsr GetScreenLocation
tfr d,y
ldx #TEXTSCR
ldu #56*29/2
ldu #COLS*ROWS/2
cs2v1:
ldd ,x++
std ,y++
651,7 → 653,7
 
ClearScreen:
pshs d,x,y,u
ldx #56*29
ldx #COLS*ROWS
tfr x,u
bsr GetScreenLocation
tfr d,y
683,17 → 685,17
 
ScrollUp:
pshs d,x,y,u
ldy #(56*29-1)/2 ; y = num chars/2 to move
ldy #(COLS*ROWS-1)/2 ; y = num chars/2 to move
bsr GetScreenLocation
tfr d,x
tfr d,u
leax 56,x ; x = index to source row
leax COLS,x ; x = index to source row
scrup1:
ldd ,x++ ; move 2 characters
std ,u++
dey
bne scrup1
lda #29
lda #ROWS-1
bsr BlankLine
puls d,x,y,u,pc
 
712,11 → 714,11
bsr GetScreenLocation
tfr d,x
puls a
ldb #56 ; b = # chars to blank out from video controller
ldb #COLS ; b = # chars to blank out from video controller
mul ; d = screen index (row# * #cols)
leax d,x
lda #' '
ldb #56 ; b = # chars to blank out from video controller
ldb #COLS ; b = # chars to blank out from video controller
blnkln1:
sta ,x+
decb
800,7 → 802,7
CalcScreenLoc:
pshs x
lda CursorRow
ldb #56
ldb #COLS
mul
tfr d,x
ldb CursorCol
839,7 → 841,7
cmpb #$91 ; cursor right ?
bne dcx6
lda CursorCol
cmpa #56
cmpa #COLS
bhs dcx7
inca
sta CursorCol
866,7 → 868,7
cmpb #$92 ; cursor down ?
bne dcx10
lda CursorRow
cmpa #29
cmpa #ROWS
beq dcx7
inca
sta CursorRow
902,7 → 904,7
ldb 1,x
stb ,x++
inca
cmpa #56
cmpa #COLS
blo dcx5
ldb #' '
dex
938,7 → 940,7
lda CursorCol
inca
sta CursorCol
cmpa #56
cmpa #COLS
blo icc1
clr CursorCol ; column = 0
bra icr1
948,7 → 950,7
lda CursorRow
inca
sta CursorRow
cmpa #29
cmpa #ROWS
blo icc1
deca ; backup the cursor row, we are scrolling up
sta CursorRow
1213,20 → 1215,7
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
NumOSFuncs EQU (*-OSCallTbl)/2
 
RequestIOFocus:
ldb COREID
1269,15 → 1258,95
;==============================================================================
; Disassembler
;==============================================================================
 
OPT include "d:\cores2022\rf6809\software\boot\disassem.asm"
;------------------------------------------------------------------------------
; Seed the random number generator. All channels are seeded with the same
; value.
;
; Parameters:
; d = 'z' part of seed
; x = 'w' part of seed
; Returns:
; none
;------------------------------------------------------------------------------
 
mon_srand:
ldy #0
mon_srand1:
sty PRNG+4 ; select channel
clr PRNG+8
clr PRNG+9
std PRNG+10 ; update low half of value
clr PRNG+12
clr PRNG+13
stx PRNG+14 ; update low half of value
iny
cmpy #$400 ; 1k channels
blo mon_srand1
rts
 
;------------------------------------------------------------------------------
; Get a random number and generate the next one.
;
; Parameters:
; d = channel to use
; Returns:
; x,d = 36 bit random value
;------------------------------------------------------------------------------
 
mon_rand:
std PRNG+4 ; select channel
ldx PRNG+0
ldd PRNG+2
stb PRNG+3 ; trigger calc of next number
rts
 
;==============================================================================
; System Monitor
;==============================================================================
 
; Command Tables
 
cmdTable1:
fcb '<','>'+$800
fcb 'b','s'+$800
fcb 'b','c'+$800
fcb 'D','R'+$800
fcb 'D'+$800
fcb ':'+$800
fcb "FI",'G'+$800
fcb "FI",'L'+$800
fcb 'F','L'+$800
fcb 'J'+$800
fcb "RAMTES",'T'+$800
fcb "SP",'D'+$800
fcb "TI",'R'+$800
fcb 'U'+$800
fcb "exi",'t'+$800
fcb '?'+$800
fcb "CL",'S'+$800
fcw 0
 
cmdTable2:
fcw Redirect
fcw ArmBreakpoint
fcw DisarmBreakpoint
fcw DumpRegs
fcw DumpMemory
fcw EditMemory
fcw $FE0000 ; FIG forth
fcw FillMemory
fcw DumpIOFocusList
fcw jump_to_code
fcw dramtest
fcw $FF8000 ; sprite demo
fcw rtc_read
fcw $FF8003 ; unassembler
fcw xitMonitor
fcw PromptHelp
fcw PromptClearscreen
 
CmdPrompt:
lbsr CRLF
ldb #'$'
1288,6 → 1357,11
fcb "Femtiki F09 Multi-core OS Starting",CR,LF,0
 
MonitorStart:
clr BreakpointFlag
clr NumSetBreakpoints
ldd #123
ldx #654
lbsr mon_srand
ldd #msgF09Starting
lbsr DisplayString
ldd #HelpMsg
1298,6 → 1372,15
std MonErrVec
ldd #$63FF ; default app stack
std mon_SSAVE
clr mon_DPRSAVE ;
tfr ccr,a
sta mon_CCRSAVE
clr mon_PCSAVE
ldd #Monitor
std mon_PCSAVE+1
clr mon_XSAVE
clr mon_YSAVE
clr mon_USAVE
Monitor:
leas $6FFF ; reset stack pointer
clrb ; turn off keyboard echo
1318,10 → 1401,10
Prompt3:
ldd #-1 ; block until key present
lbsr INCH
cmpb #CR
beq Prompt1
lbsr OUTCH
bra Prompt3
cmpb #CR ; carriage return?
beq Prompt1
lbsr OUTCH ; spit out the character
bra Prompt3 ; and keep going
 
; Process the screen line that the CR was keyed on
;
1331,29 → 1414,44
; ldb RunningID
; cmpb #61
; bhi Prompt3
ldd #$5151
std LEDS
clr CursorCol ; go back to the start of the line
lbsr CalcScreenLoc ; calc screen memory location
tfr d,y
ldd #$5252
std LEDS
skipDollar:
bsr MonGetNonSpace
cmpb #'$'
beq skipDollar ; skip over '$' prompt character
lda #$5353
std LEDS
 
; Dispatch based on command character
; Dispatch based on command
;
Prompt2:
cmpb #'<'
bne PromptHelp
dey
tfr y,u ; save off input position
clrb
ldx #cmdTable1
parseCmd1:
lda ,y+ ; get input character
tst ,x ; test for end of command
bmi endOfWord ;
cmpa ,x+ ; does input match command?
beq parseCmd1
scanNextWord:
tst ,x+
beq Monitor ; if end of table reached, not a command
bpl scanNextWord
incb
tfr u,y ; reset input pointer
bra parseCmd1 ; try again
endOfWord:
eora ,x
asla
bne scanNextWord
; we found the command in the table
aslb ; b = word index
ldx #cmdTable2
jmp [b,x] ; execute command
 
Redirect:
bsr MonGetch
cmpb #'>'
bne Monitor
bsr MonGetch
cmpb #'s'
bne Prompt2a
ldd #SerialPeekCharDirect
1369,71 → 1467,16
ldd #DisplayChar
std CharOutVec
bra Monitor
 
PromptHelp:
cmpb #'?' ; $? - display help
bne PromptC
ldd #HelpMsg
lbsr DisplayString
bra Monitor
PromptC:
cmpb #'C'
bne PromptD
 
PromptClearscreen:
lbsr ClearScreen
lbsr HomeCursor
bra Monitor
PromptD:
cmpb #'D'
bne PromptColon
bsr MonGetch
cmpb #'R'
bne DumpMemory
bra DumpRegs
PromptColon:
cmpb #':'
bne PromptF
lbra EditMemory
PromptF:
cmpb #'F'
bne PromptJ
bsr MonGetch
cmpb #'I'
bne PromptFL
bsr MonGetch
cmpb #'G'
bne Monitor
jmp $FE0000
PromptFL:
cmpb #'L'
bne Monitor
lbra DumpIOFocusList
PromptJ:
cmpb #'J'
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
bsr MonGetch
cmpb #'R'
bne Monitor
lbsr rtc_read
bra Monitor
PromptU:
cmpb #'U'
bne Monitor
lbra disassem
 
MonGetch:
ldb ,y
1461,7 → 1504,37
rts
 
;------------------------------------------------------------------------------
; Multiply number in work area by 10.
;------------------------------------------------------------------------------
Times10:
ldd mon_numwka ; make a copy of the number
std mon_numwka+8
ldd mon_numwka+2
std mon_numwka+10
asl mon_numwka+3 ; shift left = *2
rol mon_numwka+2
rol mon_numwka+1
rol mon_numwka+0
asl mon_numwka+3 ; shift left = *4
rol mon_numwka+2
rol mon_numwka+1
rol mon_numwka+0
ldd mon_numwka+2 ; add in original value
addd mon_numwka+10 ; = *5
ldb mon_numwka+1
adcb mon_numwka+9
stb mon_numwka+1
lda mon_numwka+0
adca mon_numwka+8
sta mon_numwka+0
asl mon_numwka+3 ; shift left = * 10
rol mon_numwka+2
rol mon_numwka+1
rol mon_numwka+0
rts
;------------------------------------------------------------------------------
;------------------------------------------------------------------------------
GetTwoParams:
bsr ignBlanks
bsr GetHexNumber ; get start address of dump
1617,6 → 1690,8
HelpMsg:
fcb "? = Display help",CR,LF
fcb "CLS = clear screen",CR,LF
fcb "bs = set breakpoint",CR,LF
fcb "bc = clear breakpoint",CR,LF
; db "S = Boot from SD Card",CR,LF
fcb ": = Edit memory bytes",CR,LF
; db "L = Load sector",CR,LF
1623,7 → 1698,7
; db "W = Write sector",CR,LF
fcb "DR = Dump registers",CR,LF
fcb "D = Dump memory",CR,LF
; db "F = Fill memory",CR,LF
fcb "F = Fill memory",CR,LF
fcb "FL = Dump I/O Focus List",CR,LF
fcb "FIG = start FIG Forth",CR,LF
; db "KILL n = kill task #n",CR,LF
1635,12 → 1710,14
; db "r = random lines - test bitmap",CR,LF
; db "e = ethernet test",CR,LF
fcb "s = serial output test",CR,LF
fcb "SP = sprite demo",CR,LF
; db "T = Dump task list",CR,LF
; db "TO = Dump timeout list",CR,LF
fcb "TI = display date/time",CR,LF
; db "TEMP = display temperature",CR,LF
fcb "U = unassemble",CR,LF
; db "P = Piano",CR,LF,0
; db "P = Piano",CR,LF
fcb "x = exit monitor",CR,LF
fcb 0
 
msgRegHeadings
1736,7 → 1813,7
lbsr ignBlanks ; skip over blanks
lbsr GetHexNumber ; get the byte value
tstb ; check for valid value
bmi EditMem1 ; if invalid, quit
beq EditMem1 ; if invalid, quit
ldb mon_numwka+3 ; get value
stb ,x+ ; update memory at address
leau -1,u ; decremeent byte count
1763,6 → 1840,37
 
;------------------------------------------------------------------------------
; Fill Memory
;
; Usage:
; $$F FFFC12 FFFC30 89F
;
;------------------------------------------------------------------------------
 
FillMemory:
lbsr GetRange ; get address range to fill
lbsr ignBlanks
lbsr GetHexNumber ; get target byte to write
ldb mon_numwka+3
ldx mon_r1+2
clra
fillm1: ; Check for a CTRL-C every page of memory
tsta
bne fillm2
clrb ; we want a non-blocking check
clra
lbsr INCH
cmpb #CTRLC
lbeq Monitor
ldb mon_numwka+3 ; reset target byte
fillm2:
stb ,x+
cmpx mon_r2+2
bls fillm1
fillm3:
lbra Monitor
;------------------------------------------------------------------------------
; Dump Registers
;
; Usage:
1828,7 → 1936,7
pshs d
ldd mon_XSAVE
pshs d
lda mon_DPRSave
lda mon_DPRSAVE
pshs a
ldd mon_DSAVE
pshs d
1881,47 → 1989,255
lbsr CRLF
lbra Monitor
bootpg:
fcb $000
boot_stack:
fcw $006FFF
numBreakpoints:
fcb 8
mon_rom_vectab:
fcw mon_rom_vecs
mon_rom_vecs:
fcw Monitor ; enter monitor program
fcw INCH ; input a character
fcw OUTCH ; output a character
fcw CRLF ; output carriage-return, line feed
fcw DisplayString
fcw DispByteAsHex
fcw DispWordAsHex
fcw ShowSprites
fcw mon_srand
fcw mon_rand
fcw 0 ; operating system call
fcw GetRange
 
NumFuncs EQU (*-mon_rom_vectab)/2
 
;------------------------------------------------------------------------------
; SWI routine.
;
; SWI is used to call ROM monitor routines and process breakpoints.
;
; swi
; fcb <desired function>
;------------------------------------------------------------------------------
 
swi_rout:
ldb bootpg,pcr ; reset direct page
tfr b,dp
swi_rout1:
ldu 11,s ; get program counter (low order 2 bytes)
leau -1,u ; backup a byte
tst BreakpointFlag ; are we in breakpoint mode?
beq swiNotBkpt
ldu #Breakpoints
ldb NumSetBreakpoints
beq swiNotBkpt
swi_rout2:
cmpu ,y++
beq processBreakpoint
decb
bne swi_rout2
swiNotBkpt:
clr BreakpointFlag
pulu d ; get function #, increment PC
cmpb #NumFuncs
lbhi DisplayErr
stu 11,s ; save updated PC on stack
cmpb #MF_OSCALL
beq swiCallOS
aslb ; 2 bytes per vector
ldx mon_rom_vectab,pcr
abx
ldx ,x
stx jmpvec
sts mon_SSAVE ; save the stack pointer
ldd 1,s ; get back D
ldx 4,s ; get back X
ldy 6,s ; get back Y
ldu 8,s ; get back U
lds boot_stack,pcr ; and use our own stack
jsr [jmpvec] ; call the routine
swi_rout3:
lds mon_SSAVE ; restore stack
rti
 
processBreakpoint:
lda ,s
sta mon_CCRSAVE
ldd 1,s
std mon_DSAVE
ldb 3,s
stb mon_DPRSAVE
ldd 4,s
std mon_XSAVE
ldd 6,s
std mon_YSAVE
ldd 8,s
std mon_USAVE
sts mon_SSAVE
ldd 11,s
std mon_PCSAVE
lds boot_stack,pcr
ldd #swi_rout3 ; setup so monitor can return
pshs d
bsr DisarmAllBreakpoints
lbra DumpRegs
 
xitMonitor:
bsr ArmAllBreakpoints
rts
 
swiCallOS:
leau 1,u ; next byte is func number
ldb ,u+
cmpb #NumOSFuncs ; check for valid range
lbhi DisplayErr
stu 11,s ; save updateed PC on stack
aslb ; compute vector address
ldx #OSCallTbl
tst b,x ; check for non-zero vector
beq swi_rout3
osc1:
; tst OSSEMA+1 ; wait for availability
; beq osc1
jsr [b,x] ; call the OS routine
oscx:
clr OSSEMA+1
bra swi_rout3
 
DisarmAllBreakpoints:
pshs d,x,y
ldy #0
clrb
ldx #BreakpointBytes ; x = breakpoint byte table address
disarm2:
cmpb #numBreakpoints ; safety check
bhs disarm1
cmpb NumSetBreakpoints
bhs disarm1
lda b,x ; get memory byte
sta [Breakpoints,y] ; and store it back to memory
leay 2,y ; increment for next address
incb ; increment to next byte
bra disarm2 ; loop back
disarm1:
puls d,x,y,pc
 
ArmAllBreakpoints:
pshs d,x,y
ldy #0
clrb
ldx #BreakpointBytes ; x = breakpoint byte table address
arm2:
cmpb numBreakpoints ; safety check
bhs arm1
cmpb NumSetBreakpoints
bhs arm1
lda [Breakpoints,y] ; load byte at memory address
sta b,x ; save in table
leay 2,y ; increment for next address
incb ; increment to next byte
bra arm2 ; loop back
arm1:
puls d,x,y,pc
 
ArmBreakpoint:
pshs d,x,y
lda NumSetBreakpoints ; check if too many breakpoints set
cmpa numBreakpoints
lbhs DisplayErr
lbsr GetHexNumber ; get address parameter
ldb NumSetBreakpoints ; bv= number of set breakpoints
ldy mon_numwka+2 ; get address
lda ,y ; get byte at address
ldx #BreakpointBytes ; and store byte in a table
lda #OPC_SWI ; put a SWI instruction in place
sta ,y
sta b,x
ldx #Breakpoints ; also store the address in a table
aslb ; index for 2 byte values
sty b,x
lsrb ; size back to single byte
incb
stb NumSetBreakpoints
puls d,x,y,pc
 
DisarmBreakpoint:
pshs d,x,y,u
lbsr GetHexNumber
clrb
clrb
tfr d,x ; x = zero too
disarm6:
cmpb numBreakpoints ; no more than this many may be set
bhs disarm4
cmpb NumSetBreakpoints ; number actually set
bhs disarm4
ldy Breakpoints,x ; y = breakpoint address
cmpy mon_numwka+2 ; is it the one we want?
bne disarm3 ; if not, go increment to next
ldx mon_numwka+2 ; x = memory address
ldy #BreakpointBytes
lda b,y ; get saved byte from table
sta ,x ; set the byte at the memory address
; compress breakpoint table by removing breakpoint
dec NumSetBreakpoints ; set the new number of set breakpoints
pshs b ; save the position we're removing from
disarm7:
incb ; set index for next byte
lda b,y ; get byte
decb ; and store it back
sta b,y
incb ; move to next position
cmpb numBreakpoints ; hit end of table?
blo disarm7
puls b ; get back position
aslb ; times two for word index
clra
tfr d,y
lsrb ; back to byte index value
disarm8:
ldu 2,y ; get next breakpoint address
stu ,y++ ; store in current pos, increment
incb ; increment count
cmpb numBreakpoints ; hit end of table?
blo disarm8
puls d,x,y,u,pc
disarm3:
leax 2,x
incb
bra disarm6
disarm4:
puls d,x,y,u,pc
 
;------------------------------------------------------------------------------
;------------------------------------------------------------------------------
swi3_rout:
sei
puls a
lda ,s
sta mon_CCRSAVE
puls D,DPR,X,Y,U
ldd 1,s
std mon_DSAVE
stx mon_XSAVE
sty mon_YSAVE
stu mon_USAVE
tfr dpr,a
sta mon_DPRSAVE
puls a
sta mon_PCSAVE
puls D
std mon_PCSAVE+1
ldb 3,s
stb mon_DPRSAVE
ldd 4,s
std mon_XSAVE
ldd 6,s
std mon_YSAVE
ldd 8,s
std mon_USAVE
sts mon_SSAVE
ldd 11,s
std mon_PCSAVE
sts mon_SSAVE
lds #$3FFF
ldd #swi3_exit
pshs d
cli
jmp DumpRegs
swi3_exit:
sei
lds mon_SSAVE
ldd mon_PCSAVE+1
pshs d
lda mon_PCSAVE
pshs a
ldu mon_USAVE
ldy mon_YSAVE
ldx mon_XSAVE
pshs x,y,u
lda mon_DPRSAVE
pshs a
ldd mon_DSAVE
pshs d
lda mon_CCRSAVE
pshs a
tfr a,ccr
cli
rti
 
;------------------------------------------------------------------------------
1931,25 → 2247,25
 
irq_rout:
; lbsr SerialIRQ ; check for recieved character
; lbsr TimerIRQ
lbsr TimerIRQ
 
; Reset the edge sense circuit in the PIC
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:
; 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:
 
lda IrqBase ; get the IRQ flag byte
lsra
ora IrqBase
anda #$E0
anda #$FE0
sta IrqBase
 
; inc TEXTSCR+54 ; update IRQ live indicator on screen
2003,6 → 2319,6
fcw rti_insn ; SWI2
fcw firq_rout ; FIRQ
fcw irq_rout ; IRQ
fcw start ; SWI
fcw swi_rout ; SWI
fcw nmi_rout ; NMI
fcw start ; RST
/rf6809/trunk/software/boot/boot_rom.lst
1,4 → 1,4
0 error(s), 1534 warning(s) unlisted in pass 1
3 error(s), 526 warning(s) unlisted in pass 1
; ============================================================================
; __
; \\__/ o\ (C) 2013-2022 Robert Finch, Waterloo
35,6 → 35,42
;
; ============================================================================
;
; ============================================================================
; __
; \\__/ 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.
;
; ============================================================================
;
CR EQU $0D ;ASCII equates
LF EQU $0A
TAB EQU $09
54,6 → 90,100
MAX_TASKNO EQU 63
DRAM_BASE EQU $10000000
; ROM monitor functions
;
MF_Monitor EQU 0
MF_INCH EQU 1
MF_OUTCH EQU 2
MF_CRLF EQU 3
MF_DisplayString EQU 4
MF_DisplayByteAsHex EQU 5
MF_DisplayWordAsHex EQU 6
MF_ShowSprites EQU 7
MF_Srand EQU 8
MF_Random EQU 9
MF_OSCALL EQU 10
MF_GetRange EQU 11
mon_numwka EQU $910
mon_r1 EQU $920
mon_r2 EQU $924
; ============================================================================
; __
; \\__/ o\ (C) S2022 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.
;
; ============================================================================
COREID EQU $FFFFFFFE0
MSCOUNT EQU $FFFFFFFE4
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 $FFFE07F00
TEXT_COLS EQU 0
TEXT_ROWS EQU 1
TEXT_CURPOS EQU 34
COLS EQU 64
ROWS EQU 32
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
PRNG EQU $FFFE30600
KEYBD EQU $FFFE30400
KEYBDCLR EQU $FFFE30402
PIC EQU $FFFE3F000
SPRITE_CTRL EQU $FFFE10000
SPRITE_EN EQU $3C0
OUTSEMA EQU $EF0000
SEMAABS EQU $1000
OSSEMA EQU $EF0010
ScreenLocation EQU $10
ColorCodeLocation EQU $14
ScreenLocation2 EQU $18
64,8 → 194,6
; Forth Area
; 0x30-0x60
RunningID EQU $800000
; Task control blocks, room for 256 tasks
TCB_NxtRdy EQU $00 ; next task on ready / timeout list
TCB_PrvRdy EQU $04 ; previous task on ready / timeout list
94,59 → 222,22
KeybdLocks EQU $FFFFFCD00
KeybdBuffer EQU $FFFFFC000 ; buffer is 16 chars
COREID EQU $FFFFFFFE0
MSCOUNT EQU $FFFFFFFE4
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
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 $FF0013
IrqBase EQU $FF0014
NmiBase EQU $FFC013
IrqBase EQU $FFC014
IOFocusNdx EQU $100
; These variables in global OS storage area
IOFocusList EQU $FF0000 ; to $FF000F
IOFocusID EQU $FF0010
IrqSource EQU $FF0011
IRQFlag EQU $FF0012
IOFocusList EQU $FFC000 ; to $FF000F
IOFocusID EQU $FFC010
IrqSource EQU $FFC011
IRQFlag EQU $FFC012
RunningID EQU $FFC013
; These variables use direct page access
CursorRow EQU $110
193,6 → 284,11
CharInVec EQU $804
CmdPromptJI EQU $808
MonErrVec EQU $80C
BreakpointFlag EQU $810
NumSetBreakpoints EQU $811
Breakpoints EQU $820 ; to $82F
BreakpointBytes EQU $830 ; to $83F
mon_vectb EQU $880
; Register save area for monitor
mon_DSAVE EQU $900
207,6 → 303,7
mon_numwka EQU $910
mon_r1 EQU $920
mon_r2 EQU $924
jmpvec EQU $928
; The ORG directive must set an address a multiple of 4 in order for the Verilog
; output to work correctly.
249,18 → 346,18
00FFD2CC 012 nop
00FFD2CD 012 nop
HEX2
00FFD2CE 017001139 lbsr DispByteAsHex
00FFD2CE 017001142 lbsr DispByteAsHex
00FFD2D1 039 rts
HEX4
00FFD2D2 01700112C lbsr DispWordAsHex
00FFD2D2 017001135 lbsr DispWordAsHex
00FFD2D5 039 rts
org $FFD300
ClearScreenJmp
00FFD300 016000F22 lbra ClearScreen
00FFD300 016000F2B lbra ClearScreen
org $FFD308
HomeCursorJmp
00FFD308 016000F8D lbra HomeCursor
00FFD308 016000F96 lbra HomeCursor
org $FFD400
300,22 → 397,70
00FFD440 013 sync
00FFD441 06EC04 jmp ,u
dramtest:
00FFD443 18E010000 ldy #$10000 ; DRAM starts here
00FFD446 086001 lda #1
00FFD448 0150B7FFFE60001 sta LEDS
00FFD44D 0CEAAA555 ldu #$AAA555
00FFD450 017FFFC7F lbsr CRLF
*** warning 1: Long branch within short branch range could be optimized
dramtest1:
00FFD453 04A deca
00FFD454 02600A bne dramtest4
00FFD456 01F020 tfr y,d
00FFD458 017000FAF lbsr DispWordAsHex
00FFD45B 0C600D ldb #CR
00FFD45D 0170018B2 lbsr OUTCH
dramtest4:
00FFD460 0EFA01 stu ,y++
00FFD462 18CE00000 cmpy #$E00000 ; DRAM ends here
00FFD465 025FEC blo dramtest1
; now readback values and compare
00FFD467 18E010000 ldy #$10000
00FFD46A 086001 lda #1
00FFD46C 017FFFC63 lbsr CRLF
*** warning 1: Long branch within short branch range could be optimized
dramtest3:
00FFD46F 04A deca
00FFD470 02600A bne dramtest5
00FFD472 01F020 tfr y,d
00FFD474 017000F93 lbsr DispWordAsHex
00FFD477 0C600D ldb #CR
00FFD479 017001896 lbsr OUTCH
dramtest5:
00FFD47C 2A3A01 cmpu ,y++
00FFD47E 02600F bne dramerr
00FFD480 18CE00000 cmpy #$E00000
00FFD483 025FEA blo dramtest3
00FFD485 086002 lda #2
00FFD487 0150B7FFFE60001 sta LEDS
00FFD48C 016001A18 lbra Monitor
dramerr:
00FFD48F 086080 lda #$80
00FFD491 0150B7FFFE60001 sta LEDS
00FFD496 08EE00000 ldx #TEXTSCR
00FFD499 0150F6FFFFFFFE0 ldb COREID
00FFD49E 03A abx
00FFD49F 086046 lda #'F'
00FFD4A1 0A7804 sta ,x
00FFD4A3 016001A01 lbra Monitor
org $FFE000
00FFE000 FFF92E FDB Monitor
00FFE000 FFEEA7 FDB Monitor
00FFE002 FFE022 FDB DumRts ; NEXTCMD
00FFE004 FFECDA FDB INCH
00FFE006 FFECF8 FDB INCHE
00FFE008 FFECFC FDB INCHEK
00FFE00A FFED12 FDB OUTCH
00FFE00C FFE3EE FDB PDATA
00FFE00E FFE3E1 FDB PCRLF
00FFE010 FFE3DD FDB PSTRNG
00FFE00C FFE3F7 FDB PDATA
00FFE00E FFE3EA FDB PCRLF
00FFE010 FFE3E6 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 FFE2F5 FDB DisplayChar ; VOUTCH
00FFE01C FFE2FE FDB DisplayChar ; VOUTCH
00FFE01E FFE022 FDB DumRts ; ACINIZ
00FFE020 FFE022 FDB DumRts ; AOUTCH
332,12 → 477,13
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
00FFE036 0B7EF1000 sta OUTSEMA+$1000
00FFE039 0CEFFE03F ldu #st6 ; U = return address
00FFE03C 07EFFD400 jmp ramtest ; JMP dont JSR
st6:
00FFE03C 1CE006FFF lds #$6FFF ; boot up stack area
00FFE03F 0150B6FFFFFFFE0 lda COREID
00FFE044 081001 cmpa #FIRST_CORE
00FFE03F 1CE006FFF lds #$6FFF ; boot up stack area
00FFE042 0150B6FFFFFFFE0 lda COREID
00FFE047 081001 cmpa #FIRST_CORE
; beq st8
; sync ; halt cores other than 2
st8:
347,99 → 493,102
; tfr d,x
; jmp ,x ; jump to the BIOS now in local RAM
st7:
00FFE046 08D159 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
00FFE049 08D15F bsr Delay3s ; give some time for devices to reset
00FFE04B 07F000810 clr BreakpointFlag
00FFE04E 07F000811 clr NumSetBreakpoints
00FFE051 0860AA lda #$AA
00FFE053 0150B7FFFE60001 sta LEDS
00FFE058 086001 lda #FIRST_CORE
00FFE05A 0B7FFC010 sta IOFocusID ; core #2 has focus
00FFE05D 0B7FFC013 sta RunningID
; Clear IO focus list
00FFE057 08E000000 ldx #0
00FFE060 08E000000 ldx #0
st9:
00FFE05A 06F80A000FF0000 clr IOFocusList,x
00FFE05F 030001 inx
00FFE061 08C000010 cmpx #16
00FFE064 025FF4 blo st9
00FFE066 086018 lda #24
00FFE068 0B7FF0001 sta IOFocusList+FIRST_CORE
00FFE063 06F80A000FFC000 clr IOFocusList,x
00FFE068 030001 inx
00FFE06A 08C000010 cmpx #16
00FFE06D 025FF4 blo st9
00FFE06F 086018 lda #24
00FFE071 0B7FFC001 sta IOFocusList+FIRST_CORE
00FFE06B 0860CE lda #$0CE
00FFE06D 097113 sta ScreenColor
00FFE06F 097112 sta CharColor
00FFE071 08D1B2 bsr ClearScreen
00FFE073 0CCFFE2F5 ldd #DisplayChar
00FFE076 0FD000800 std CharOutVec
00FFE079 0CCFFEBE4 ldd #SerialPeekCharDirect
00FFE07C 0FD000804 std CharInVec
00FFE07F 0C6018 ldb #24 ; request IO focus
00FFE081 017000CD5 lbsr OSCall
00FFE084 0150F6FFFFFFFE0 ldb COREID
00FFE089 0C1001 cmpb #FIRST_CORE
00FFE08B 02700D beq init
00FFE08D 020046 bra skip_init
00FFE08F 0200AE bra multi_sieve
00FFE074 0860CE lda #$0CE
00FFE076 097113 sta ScreenColor
00FFE078 097112 sta CharColor
00FFE07A 08D1B2 bsr ClearScreen
00FFE07C 0CCFFE2FE ldd #DisplayChar
00FFE07F 0FD000800 std CharOutVec
00FFE082 0CCFFEBE4 ldd #SerialPeekCharDirect
00FFE085 0FD000804 std CharInVec
; swi
; fcb MF_OSCALL
; fcb 24 ; request IO focus
00FFE088 0150F6FFFFFFFE0 ldb COREID
00FFE08D 0C1001 cmpb #FIRST_CORE
00FFE08F 02700D beq init
00FFE091 02004B bra skip_init
00FFE093 0200B3 bra multi_sieve
st3:
00FFE091 0860FF lda #$FF
00FFE093 0150B7FFFE60001 sta LEDS
00FFE098 020FF7 bra st3
00FFE095 0860FF lda #$FF
00FFE097 0150B7FFFE60001 sta LEDS
00FFE09C 020FF7 bra st3
; initialize interrupt controller
; first, zero out all the vectors
init:
00FFE09A 01700042A lbsr rtc_read ; get clock values
00FFE09D 08E000127 ldx #kbdHeadRcv
00FFE0A0 0C6020 ldb #32 ; number of bytes to zero out
00FFE09E 01700042F lbsr rtc_read ; get clock values
00FFE0A1 08E000127 ldx #kbdHeadRcv
00FFE0A4 0C6020 ldb #32 ; number of bytes to zero out
init1:
00FFE0A2 06F800 clr ,x+
00FFE0A4 05A decb
00FFE0A5 026FFB bne init1
00FFE0A7 01700038E lbsr TimerInit
00FFE0AA 017000AC2 lbsr InitSerial
00FFE0AD 08E000080 ldx #128
00FFE0B0 086001 lda #1 ; set irq(bit0), clear firq (bit1), disable int (bit 6), clear edge sense(bit 7)
00FFE0B2 0C6001 ldb #FIRST_CORE ; serving core id
00FFE0A6 06F800 clr ,x+
00FFE0A8 05A decb
00FFE0A9 026FFB bne init1
00FFE0AB 017000393 lbsr TimerInit
00FFE0AE 017000ABE lbsr InitSerial
00FFE0B1 08E000080 ldx #128
00FFE0B4 086001 lda #1 ; set irq(bit0), clear firq (bit1), disable int (bit 6), clear edge sense(bit 7)
00FFE0B6 0C6001 ldb #FIRST_CORE ; serving core id
st1:
00FFE0B4 06F809E3F000 clr PIC,x ; cause code
00FFE0B8 0A7809E3F001 sta PIC+1,x
00FFE0BC 0E7809E3F002 stb PIC+2,x
00FFE0C0 030004 leax 4,x
00FFE0C2 08C000100 cmpx #256
00FFE0C5 025FED blo st1
00FFE0B8 06F809E3F000 clr PIC,x ; cause code
00FFE0BC 0A7809E3F001 sta PIC+1,x
00FFE0C0 0E7809E3F002 stb PIC+2,x
00FFE0C4 030004 leax 4,x
00FFE0C6 08C000100 cmpx #256
00FFE0C9 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
00FFE0C7 086081 lda #$81 ; make irq edge sensitive
00FFE0C9 0150B7FFFE3F0FD sta PIC+$FD
00FFE0CE 08601F lda #31 ; enable timer interrupt
; sta PIC+9
00FFE0D0 0C6001 ldb #1
00FFE0D2 0F7EF1000 stb OUTSEMA+SEMAABS ; set semaphore to 1 available slot
00FFE0CB 086081 lda #$81 ; make irq edge sensitive
00FFE0CD 0150B7FFFE3F0FD sta PIC+$FD
00FFE0D2 08601F lda #31 ; enable timer interrupt
00FFE0D4 0150B7FFFE3F009 sta PIC+9
00FFE0D9 0C6001 ldb #1
00FFE0DB 0F7EF1000 stb OUTSEMA+SEMAABS ; set semaphore to 1 available slot
skip_init:
00FFE0D5 01C0EF andcc #$EF ; unmask irq
00FFE0D7 086038 lda #56
00FFE0D9 0150B7FFFE0DF00 sta TEXTREG+TEXT_COLS
00FFE0DE 08601D lda #29
00FFE0E0 0150B7FFFE0DF01 sta TEXTREG+TEXT_ROWS
00FFE0E5 08D13E bsr ClearScreen
00FFE0E7 08D1AF bsr HomeCursor
00FFE0E9 086005 lda #5
00FFE0EB 0150B7FFFE60001 sta LEDS
00FFE0F0 0CCFFE108 ldd #msgStartup
00FFE0F3 08D2C1 bsr DisplayString
00FFE0F5 08E000000 ldx #0
00FFE0F8 0CC000000 ldd #0
00FFE0FB 017000C1E lbsr ShowSprites
00FFE0FE 01700083F lbsr KeybdInit
00FFE101 0DC124 ldd KeybdID
00FFE103 08D2FC bsr DispWordAsHex
00FFE105 07EFFF910 jmp MonitorStart
00FFE0DE 01C0EF andcc #$EF ; unmask irq
00FFE0E0 086040 lda #COLS
00FFE0E2 0150B7FFFE07F00 sta TEXTREG+TEXT_COLS
00FFE0E7 086020 lda #ROWS
00FFE0E9 0150B7FFFE07F01 sta TEXTREG+TEXT_ROWS
00FFE0EE 08D13E bsr ClearScreen
00FFE0F0 08D1AF bsr HomeCursor
00FFE0F2 086005 lda #5
00FFE0F4 0150B7FFFE60001 sta LEDS
00FFE0F9 0CCFFE111 ldd #msgStartup
00FFE0FC 08D2C1 bsr DisplayString
00FFE0FE 08E000000 ldx #0
00FFE101 0CC000000 ldd #0
00FFE104 017000C15 lbsr ShowSprites
00FFE107 017000836 lbsr KeybdInit
00FFE10A 0DC124 ldd KeybdID
00FFE10C 08D2FC bsr DispWordAsHex
00FFE10E 07EFFEE60 jmp MonitorStart
msgStartup
00FFE108 072066036038030039020 fcb "rf6809 12-bit System Starting.",CR,LF,0
00FFE10F 03103202D062069074020
00FFE116 05307907307406506D020
00FFE11D 05307406107207406906E
00FFE124 06702E00D00A000
00FFE111 072066036038030039020 fcb "rf6809 12-bit System Starting.",CR,LF,0
00FFE118 03103202D062069074020
00FFE11F 05307907307406506D020
00FFE126 05307406107207406906E
00FFE12D 06702E00D00A000
;------------------------------------------------------------------------------
; The checkpoint register must be cleared within 1 second or a NMI interrupt
451,8 → 600,8
;------------------------------------------------------------------------------
checkpoint:
00FFE129 01507FFFFFFFFE1 clr $FFFFFFFE1 ; writing any value will do
00FFE12E 039 rts
00FFE132 01507FFFFFFFFE1 clr $FFFFFFFE1 ; writing any value will do
00FFE137 039 rts
;------------------------------------------------------------------------------
; Copy the system ROM to local RAM
465,14 → 614,14
;------------------------------------------------------------------------------
romToRam:
00FFE12F 08EFFC000 ldx #$FFC000
00FFE132 18E00C000 ldy #$00C000
00FFE138 08EFFC000 ldx #$FFC000
00FFE13B 18E00C000 ldy #$00C000
romToRam1:
00FFE135 0EC801 ldd ,x++
00FFE137 0EDA01 std ,y++
00FFE139 08C000000 cmpx #0
00FFE13C 026FF7 bne romToRam1
00FFE13E 039 rts
00FFE13E 0EC801 ldd ,x++
00FFE140 0EDA01 std ,y++
00FFE142 08C000000 cmpx #0
00FFE145 026FF7 bne romToRam1
00FFE147 039 rts
;------------------------------------------------------------------------------
; Multi-core sieve program.
483,36 → 632,36
; core number minus two.
;
multi_sieve:
00FFE13F 086050 lda #'P' ; indicate prime
00FFE141 0150F6FFFFFFFE0 ldb COREID ; find out which core we are
00FFE146 0C0001 subb #FIRST_CORE
00FFE148 08E000000 ldx #0 ; start at first char of screen
00FFE14B 03A abx
00FFE148 086050 lda #'P' ; indicate prime
00FFE14A 0150F6FFFFFFFE0 ldb COREID ; find out which core we are
00FFE14F 0C0001 subb #FIRST_CORE
00FFE151 08E000000 ldx #0 ; start at first char of screen
00FFE154 03A abx
multi_sieve3:
00FFE14C 0A7809E00000 sta TEXTSCR,x ; store 'P'
00FFE150 030008 leax 8,x ; advance to next position
00FFE152 08C000FFF cmpx #4095
00FFE155 025FF5 blo multi_sieve3
00FFE157 0BDFFE129 jsr checkpoint
00FFE155 0A7809E00000 sta TEXTSCR,x ; store 'P'
00FFE159 030008 leax 8,x ; advance to next position
00FFE15B 08C000FFF cmpx #4095
00FFE15E 025FF5 blo multi_sieve3
00FFE160 0BDFFE132 jsr checkpoint
*** warning 1: Long branch within short branch range could be optimized
00FFE15A 0CB002 addb #2 ; start sieve at 2 (core id)
00FFE15C 08604E lda #'N' ; flag position value of 'N' for non-prime
00FFE163 0CB002 addb #2 ; start sieve at 2 (core id)
00FFE165 08604E lda #'N' ; flag position value of 'N' for non-prime
multi_sieve2:
00FFE15E 08E000000 ldx #0
00FFE161 03A abx ; skip the first position - might be prime
00FFE167 08E000000 ldx #0
00FFE16A 03A abx ; skip the first position - might be prime
multi_sieve1:
00FFE162 03A abx ; increment
00FFE163 0A7809E00000 sta TEXTSCR,x
00FFE167 08C000FFF cmpx #4095
00FFE16A 025FF6 blo multi_sieve1
00FFE16C 0BDFFE129 jsr checkpoint
00FFE16B 03A abx ; increment
00FFE16C 0A7809E00000 sta TEXTSCR,x
00FFE170 08C000FFF cmpx #4095
00FFE173 025FF6 blo multi_sieve1
00FFE175 0BDFFE132 jsr checkpoint
*** warning 1: Long branch within short branch range could be optimized
00FFE16F 0CB008 addb #8 ; number of cores working on it
00FFE171 0C1FF0 cmpb #4080
00FFE173 025FE9 blo multi_sieve2
00FFE178 0CB008 addb #8 ; number of cores working on it
00FFE17A 0C1FF0 cmpb #4080
00FFE17C 025FE9 blo multi_sieve2
multi_sieve4: ; hang machine
00FFE175 013 sync
00FFE176 0160017B5 lbra Monitor
00FFE17E 013 sync
00FFE17F 016000D25 lbra Monitor
;------------------------------------------------------------------------------
; Single core sieve.
519,28 → 668,28
;------------------------------------------------------------------------------
sieve:
00FFE179 086050 lda #'P' ; indicate prime
00FFE17B 08E000000 ldx #0 ; start at first char of screen
00FFE182 086050 lda #'P' ; indicate prime
00FFE184 08E000000 ldx #0 ; start at first char of screen
sieve3:
00FFE17E 0A7809E00000 sta TEXTSCR,x ; store 'P'
00FFE182 030001 inx ; advance to next position
00FFE184 08C000FFF cmpx #4095
00FFE187 025FF5 blo sieve3
00FFE189 0C6002 ldb #2 ; start sieve at 2
00FFE18B 08604E lda #'N' ; flag position value of 'N' for non-prime
00FFE187 0A7809E00000 sta TEXTSCR,x ; store 'P'
00FFE18B 030001 inx ; advance to next position
00FFE18D 08C000FFF cmpx #4095
00FFE190 025FF5 blo sieve3
00FFE192 0C6002 ldb #2 ; start sieve at 2
00FFE194 08604E lda #'N' ; flag position value of 'N' for non-prime
sieve2:
00FFE18D 08E000000 ldx #0
00FFE190 03A abx ; skip the first position - might be prime
00FFE196 08E000000 ldx #0
00FFE199 03A abx ; skip the first position - might be prime
sieve1:
00FFE191 03A abx ; increment
00FFE192 0A7809E00000 sta TEXTSCR,x
00FFE196 08C000FFF cmpx #4095
00FFE199 025FC7 blo multi_sieve1
00FFE19B 05C incb ; number of cores working on it
00FFE19C 0C1FF0 cmpb #4080
00FFE19E 025FED blo sieve2
00FFE19A 03A abx ; increment
00FFE19B 0A7809E00000 sta TEXTSCR,x
00FFE19F 08C000FFF cmpx #4095
00FFE1A2 025FC7 blo multi_sieve1
00FFE1A4 05C incb ; number of cores working on it
00FFE1A5 0C1FF0 cmpb #4080
00FFE1A7 025FED blo sieve2
sieve4: ; hang machine
00FFE1A0 039 rts
00FFE1A9 039 rts
;------------------------------------------------------------------------------
; Three second delay for user convenience and to allow some devices time to
548,30 → 697,30
;------------------------------------------------------------------------------
Delay3s:
00FFE1A1 0CC895440 ldd #9000000
00FFE1AA 0CC895440 ldd #9000000
dly3s1:
00FFE1A4 0C10FF cmpb #$FF
00FFE1A6 026000 bne dly3s2
00FFE1AD 0C10FF cmpb #$FF
00FFE1AF 026000 bne dly3s2
dly3s2:
00FFE1A8 0150B7FFFE60001 sta LEDS
00FFE1AD 083000001 subd #1
00FFE1B0 026FF2 bne dly3s1
00FFE1B2 039 rts
00FFE1B1 0150B7FFFE60001 sta LEDS
00FFE1B6 083000001 subd #1
00FFE1B9 026FF2 bne dly3s1
00FFE1BB 039 rts
;------------------------------------------------------------------------------
;------------------------------------------------------------------------------
ShiftLeft5:
00FFE1B3 058 aslb
00FFE1B4 049 rola
00FFE1B5 058 aslb
00FFE1B6 049 rola
00FFE1B7 058 aslb
00FFE1B8 049 rola
00FFE1B9 058 aslb
00FFE1BA 049 rola
00FFE1BB 058 aslb
00FFE1BC 049 rola
00FFE1BD 039 rts
00FFE1BC 058 aslb
00FFE1BD 049 rola
00FFE1BE 058 aslb
00FFE1BF 049 rola
00FFE1C0 058 aslb
00FFE1C1 049 rola
00FFE1C2 058 aslb
00FFE1C3 049 rola
00FFE1C4 058 aslb
00FFE1C5 049 rola
00FFE1C6 039 rts
;------------------------------------------------------------------------------
; Parameters:
579,74 → 728,74
;------------------------------------------------------------------------------
;
CopyVirtualScreenToScreen:
00FFE1BE 034076 pshs d,x,y,u
00FFE1C7 034076 pshs d,x,y,u
; Compute virtual screen location for core passed in accb.
00FFE1C0 01F098 tfr b,a
00FFE1C2 048 asla
00FFE1C3 048 asla
00FFE1C4 048 asla
00FFE1C5 048 asla
00FFE1C6 08AC00 ora #$C00
00FFE1C8 05F clrb
00FFE1C9 01F001 tfr d,x
00FFE1CB 034006 pshs d
00FFE1CD 18EE00000 ldy #TEXTSCR
00FFE1D0 0CE00032C ldu #56*29/2
00FFE1C9 01F098 tfr b,a
00FFE1CB 048 asla
00FFE1CC 048 asla
00FFE1CD 048 asla
00FFE1CE 048 asla
00FFE1CF 08AC00 ora #$C00
00FFE1D1 05F clrb
00FFE1D2 01F001 tfr d,x
00FFE1D4 034006 pshs d
00FFE1D6 18EE00000 ldy #TEXTSCR
00FFE1D9 0CE000400 ldu #COLS*ROWS/2
cv2s1:
00FFE1D3 0EC801 ldd ,x++
00FFE1D5 0EDA01 std ,y++
00FFE1D7 0335FF leau -1,u
00FFE1D9 283000000 cmpu #0
00FFE1DC 026FF5 bne cv2s1
00FFE1DC 0EC801 ldd ,x++
00FFE1DE 0EDA01 std ,y++
00FFE1E0 0335FF leau -1,u
00FFE1E2 283000000 cmpu #0
00FFE1E5 026FF5 bne cv2s1
; reset the cursor position in the text controller
00FFE1DE 035010 puls x
00FFE1E0 0E6808110 ldb CursorRow,x
00FFE1E3 086038 lda #56
00FFE1E5 03D mul
00FFE1E6 01F002 tfr d,y
00FFE1E8 0E6808111 ldb CursorCol,x
00FFE1EB 01F021 tfr y,x
00FFE1ED 03A abx
00FFE1EE 0150BFFFFE0DF22 stx TEXTREG+TEXT_CURPOS
00FFE1F3 0350F6 puls d,x,y,u,pc
00FFE1E7 035010 puls x
00FFE1E9 0E6808110 ldb CursorRow,x
00FFE1EC 086040 lda #COLS
00FFE1EE 03D mul
00FFE1EF 01F002 tfr d,y
00FFE1F1 0E6808111 ldb CursorCol,x
00FFE1F4 01F021 tfr y,x
00FFE1F6 03A abx
00FFE1F7 0150BFFFFE07F22 stx TEXTREG+TEXT_CURPOS
00FFE1FC 0350F6 puls d,x,y,u,pc
;------------------------------------------------------------------------------
;------------------------------------------------------------------------------
;
CopyScreenToVirtualScreen:
00FFE1F5 034076 pshs d,x,y,u
00FFE1F7 08D08D bsr GetScreenLocation
00FFE1F9 01F002 tfr d,y
00FFE1FB 08EE00000 ldx #TEXTSCR
00FFE1FE 0CE00032C ldu #56*29/2
00FFE1FE 034076 pshs d,x,y,u
00FFE200 08D08D bsr GetScreenLocation
00FFE202 01F002 tfr d,y
00FFE204 08EE00000 ldx #TEXTSCR
00FFE207 0CE000400 ldu #COLS*ROWS/2
cs2v1:
00FFE201 0EC801 ldd ,x++
00FFE203 0EDA01 std ,y++
00FFE205 0335FF leau -1,u
00FFE207 283000000 cmpu #0
00FFE20A 026FF5 bne cs2v1
00FFE20C 0350F6 puls d,x,y,u,pc
00FFE20A 0EC801 ldd ,x++
00FFE20C 0EDA01 std ,y++
00FFE20E 0335FF leau -1,u
00FFE210 283000000 cmpu #0
00FFE213 026FF5 bne cs2v1
00FFE215 0350F6 puls d,x,y,u,pc
;------------------------------------------------------------------------------
;------------------------------------------------------------------------------
00FFE20E 054045058054053043052 fcb "TEXTSCR "
00FFE215 020
00FFE216 FFE220 fcw TextOpen
00FFE218 FFE221 fcw TextClose
00FFE21A FFE222 fcw TextRead
00FFE21C FFE223 fcw TextWrite
00FFE21E FFE224 fcw TextSeek
00FFE217 054045058054053043052 fcb "TEXTSCR "
00FFE21E 020
00FFE21F FFE229 fcw TextOpen
00FFE221 FFE22A fcw TextClose
00FFE223 FFE22B fcw TextRead
00FFE225 FFE22C fcw TextWrite
00FFE227 FFE22D fcw TextSeek
TextOpen:
00FFE220 039 rts
00FFE229 039 rts
TextClose:
00FFE221 039 rts
00FFE22A 039 rts
TextRead:
00FFE222 039 rts
00FFE22B 039 rts
TextWrite:
00FFE223 039 rts
00FFE22C 039 rts
TextSeek:
00FFE224 039 rts
00FFE22D 039 rts
;------------------------------------------------------------------------------
; Clear the screen and the screen color memory
658,29 → 807,29
;------------------------------------------------------------------------------
ClearScreen:
00FFE225 034076 pshs d,x,y,u
00FFE227 08E000658 ldx #56*29
00FFE22A 01F013 tfr x,u
00FFE22C 08D058 bsr GetScreenLocation
00FFE22E 01F002 tfr d,y
00FFE230 0C6020 ldb #' ' ; space char
00FFE22E 034076 pshs d,x,y,u
00FFE230 08E000800 ldx #COLS*ROWS
00FFE233 01F013 tfr x,u
00FFE235 08D058 bsr GetScreenLocation
00FFE237 01F002 tfr d,y
00FFE239 0C6020 ldb #' ' ; space char
cs1:
00FFE232 0E7A00 stb ,y+ ; set text to space
00FFE234 0301FF leax -1,x ; decrement x
00FFE236 026FFA bne cs1
00FFE238 0150F6FFFFFFFE0 ldb COREID ; update colors only if we have focus
00FFE23D 0F1FF0010 cmpb IOFocusID
00FFE240 02000D bra cs3
00FFE242 18EE02000 ldy #TEXTSCR+$2000
00FFE23B 0E7A00 stb ,y+ ; set text to space
00FFE23D 0301FF leax -1,x ; decrement x
00FFE23F 026FFA bne cs1
00FFE241 0150F6FFFFFFFE0 ldb COREID ; update colors only if we have focus
00FFE246 0F1FFC010 cmpb IOFocusID
00FFE249 02000D bra cs3
00FFE24B 18EE02000 ldy #TEXTSCR+$2000
; lda CharColor
00FFE245 0860CE lda #$0CE
00FFE247 01F031 tfr u,x ; get back count
00FFE24E 0860CE lda #$0CE
00FFE250 01F031 tfr u,x ; get back count
cs2:
00FFE249 0A7A00 sta ,y+
00FFE24B 0301FF dex ; decrement x
00FFE24D 026FFA bne cs2
00FFE252 0A7A00 sta ,y+
00FFE254 0301FF dex ; decrement x
00FFE256 026FFA bne cs2
cs3:
00FFE24F 0350F6 puls d,x,y,u,pc
00FFE258 0350F6 puls d,x,y,u,pc
;------------------------------------------------------------------------------
; Scroll text on the screen upwards
690,20 → 839,20
;------------------------------------------------------------------------------
ScrollUp:
00FFE251 034076 pshs d,x,y,u
00FFE253 18E00032B ldy #(56*29-1)/2 ; y = num chars/2 to move
00FFE256 08D02E bsr GetScreenLocation
00FFE258 01F001 tfr d,x
00FFE25A 01F003 tfr d,u
00FFE25C 030038 leax 56,x ; x = index to source row
00FFE25A 034076 pshs d,x,y,u
00FFE25C 18E0003FF ldy #(COLS*ROWS-1)/2 ; y = num chars/2 to move
00FFE25F 08D02E bsr GetScreenLocation
00FFE261 01F001 tfr d,x
00FFE263 01F003 tfr d,u
00FFE265 030040 leax COLS,x ; x = index to source row
scrup1:
00FFE25E 0EC801 ldd ,x++ ; move 2 characters
00FFE260 0EDC01 std ,u++
00FFE262 0313FF dey
00FFE264 026FF8 bne scrup1
00FFE266 08601D lda #29
00FFE268 08D002 bsr BlankLine
00FFE26A 0350F6 puls d,x,y,u,pc
00FFE267 0EC801 ldd ,x++ ; move 2 characters
00FFE269 0EDC01 std ,u++
00FFE26B 0313FF dey
00FFE26D 026FF8 bne scrup1
00FFE26F 08601F lda #ROWS-1
00FFE271 08D002 bsr BlankLine
00FFE273 0350F6 puls d,x,y,u,pc
;------------------------------------------------------------------------------
; Blank out a line on the display
715,21 → 864,21
;------------------------------------------------------------------------------
BlankLine:
00FFE26C 034016 pshs d,x
00FFE26E 034002 pshs a
00FFE270 08D014 bsr GetScreenLocation
00FFE272 01F001 tfr d,x
00FFE274 035002 puls a
00FFE276 0C6038 ldb #56 ; b = # chars to blank out from video controller
00FFE278 03D mul ; d = screen index (row# * #cols)
00FFE279 03080B leax d,x
00FFE27B 086020 lda #' '
00FFE27D 0C6038 ldb #56 ; b = # chars to blank out from video controller
00FFE275 034016 pshs d,x
00FFE277 034002 pshs a
00FFE279 08D014 bsr GetScreenLocation
00FFE27B 01F001 tfr d,x
00FFE27D 035002 puls a
00FFE27F 0C6040 ldb #COLS ; b = # chars to blank out from video controller
00FFE281 03D mul ; d = screen index (row# * #cols)
00FFE282 03080B leax d,x
00FFE284 086020 lda #' '
00FFE286 0C6040 ldb #COLS ; b = # chars to blank out from video controller
blnkln1:
00FFE27F 0A7800 sta ,x+
00FFE281 05A decb
00FFE282 026FFB bne blnkln1
00FFE284 035096 puls d,x,pc
00FFE288 0A7800 sta ,x+
00FFE28A 05A decb
00FFE28B 026FFB bne blnkln1
00FFE28D 035096 puls d,x,pc
;------------------------------------------------------------------------------
; Get the location of the screen memory. The location
742,14 → 891,14
;------------------------------------------------------------------------------
GetScreenLocation:
00FFE286 0150B6FFFFFFFE0 lda COREID ; which core are we?
00FFE28B 0B1FF0010 cmpa IOFocusID ; do we have the IO focus
00FFE28E 026004 bne gsl1 ; no, go pick virtual screen address
00FFE290 0CCE00000 ldd #TEXTSCR ; yes, we update the real screen
00FFE293 039 rts
00FFE28F 0150B6FFFFFFFE0 lda COREID ; which core are we?
00FFE294 0B1FFC010 cmpa IOFocusID ; do we have the IO focus
00FFE297 026004 bne gsl1 ; no, go pick virtual screen address
00FFE299 0CCE00000 ldd #TEXTSCR ; yes, we update the real screen
00FFE29C 039 rts
gsl1:
00FFE294 0CC007800 ldd #$7800
00FFE297 039 rts
00FFE29D 0CC007800 ldd #$7800
00FFE2A0 039 rts
;------------------------------------------------------------------------------
; HomeCursor
760,16 → 909,16
;------------------------------------------------------------------------------
HomeCursor:
00FFE298 034016 pshs d,x
00FFE29A 00F110 clr CursorRow
00FFE29C 00F111 clr CursorCol
00FFE29E 0150F6FFFFFFFE0 ldb COREID
00FFE2A3 0F1FF0010 cmpb IOFocusID
00FFE2A6 026006 bne hc1
00FFE2A8 04F clra
00FFE2A9 0150B7FFFE0DF22 sta TEXTREG+TEXT_CURPOS
00FFE2A1 034016 pshs d,x
00FFE2A3 00F110 clr CursorRow
00FFE2A5 00F111 clr CursorCol
00FFE2A7 0150F6FFFFFFFE0 ldb COREID
00FFE2AC 0F1FFC010 cmpb IOFocusID
00FFE2AF 026006 bne hc1
00FFE2B1 04F clra
00FFE2B2 0150B7FFFE07F22 sta TEXTREG+TEXT_CURPOS
hc1:
00FFE2AE 035096 puls d,x,pc
00FFE2B7 035096 puls d,x,pc
;------------------------------------------------------------------------------
; Update the cursor position in the text controller based on the
780,20 → 929,20
;------------------------------------------------------------------------------
;
UpdateCursorPos:
00FFE2B0 034016 pshs d,x
00FFE2B2 0150F6FFFFFFFE0 ldb COREID ; update cursor position in text controller
00FFE2B7 0F1FF0010 cmpb IOFocusID ; only for the task with the output focus
00FFE2BA 026014 bne ucp1
00FFE2BC 096110 lda CursorRow
00FFE2BE 08403F anda #$3F ; limit of 63 rows
00FFE2C0 0150F6FFFE0DF00 ldb TEXTREG+TEXT_COLS
00FFE2C5 03D mul
00FFE2C6 01F001 tfr d,x
00FFE2C8 0D6111 ldb CursorCol
00FFE2CA 03A abx
00FFE2CB 0150BFFFFE0DF22 stx TEXTREG+TEXT_CURPOS
00FFE2B9 034016 pshs d,x
00FFE2BB 0150F6FFFFFFFE0 ldb COREID ; update cursor position in text controller
00FFE2C0 0F1FFC010 cmpb IOFocusID ; only for the task with the output focus
00FFE2C3 026014 bne ucp1
00FFE2C5 096110 lda CursorRow
00FFE2C7 08403F anda #$3F ; limit of 63 rows
00FFE2C9 0150F6FFFE07F00 ldb TEXTREG+TEXT_COLS
00FFE2CE 03D mul
00FFE2CF 01F001 tfr d,x
00FFE2D1 0D6111 ldb CursorCol
00FFE2D3 03A abx
00FFE2D4 0150BFFFFE07F22 stx TEXTREG+TEXT_CURPOS
ucp1:
00FFE2D0 035096 puls d,x,pc
00FFE2D9 035096 puls d,x,pc
;------------------------------------------------------------------------------
; Calculate screen memory location from CursorRow,CursorCol.
806,22 → 955,22
;------------------------------------------------------------------------------
;
CalcScreenLoc:
00FFE2D2 034010 pshs x
00FFE2D4 096110 lda CursorRow
00FFE2D6 0C6038 ldb #56
00FFE2D8 03D mul
00FFE2D9 01F001 tfr d,x
00FFE2DB 0D6111 ldb CursorCol
00FFE2DD 03A abx
00FFE2DE 0150F6FFFFFFFE0 ldb COREID ; update cursor position in text controller
00FFE2E3 0F1FF0010 cmpb IOFocusID ; only for the task with the output focus
00FFE2E6 026005 bne csl1
00FFE2E8 0150BFFFFE0DF22 stx TEXTREG+TEXT_CURPOS
00FFE2DB 034010 pshs x
00FFE2DD 096110 lda CursorRow
00FFE2DF 0C6040 ldb #COLS
00FFE2E1 03D mul
00FFE2E2 01F001 tfr d,x
00FFE2E4 0D6111 ldb CursorCol
00FFE2E6 03A abx
00FFE2E7 0150F6FFFFFFFE0 ldb COREID ; update cursor position in text controller
00FFE2EC 0F1FFC010 cmpb IOFocusID ; only for the task with the output focus
00FFE2EF 026005 bne csl1
00FFE2F1 0150BFFFFE07F22 stx TEXTREG+TEXT_CURPOS
csl1:
00FFE2ED 08DF97 bsr GetScreenLocation
00FFE2EF 03080B leax d,x
00FFE2F1 01F010 tfr x,d
00FFE2F3 035090 puls x,pc
00FFE2F6 08DF97 bsr GetScreenLocation
00FFE2F8 03080B leax d,x
00FFE2FA 01F010 tfr x,d
00FFE2FC 035090 puls x,pc
;------------------------------------------------------------------------------
; Display a character on the screen.
835,104 → 984,104
;------------------------------------------------------------------------------
;
DisplayChar:
00FFE2F5 017000910 lbsr SerialPutChar
00FFE2F8 034016 pshs d,x
00FFE2FA 0C100D cmpb #CR ; carriage return ?
00FFE2FC 026007 bne dccr
00FFE2FE 00F111 clr CursorCol ; just set cursor column to zero on a CR
00FFE300 08DFAE bsr UpdateCursorPos
00FFE2FE 017000907 lbsr SerialPutChar
00FFE301 034016 pshs d,x
00FFE303 0C100D cmpb #CR ; carriage return ?
00FFE305 026007 bne dccr
00FFE307 00F111 clr CursorCol ; just set cursor column to zero on a CR
00FFE309 08DFAE bsr UpdateCursorPos
dcx14:
00FFE302 01600008C lbra dcx4
00FFE30B 01600008C lbra dcx4
dccr:
00FFE305 0C1091 cmpb #$91 ; cursor right ?
00FFE307 02600D bne dcx6
00FFE309 096111 lda CursorCol
00FFE30B 081038 cmpa #56
00FFE30D 024003 bhs dcx7
00FFE30F 04C inca
00FFE310 097111 sta CursorCol
00FFE30E 0C1091 cmpb #$91 ; cursor right ?
00FFE310 02600D bne dcx6
00FFE312 096111 lda CursorCol
00FFE314 081040 cmpa #COLS
00FFE316 024003 bhs dcx7
00FFE318 04C inca
00FFE319 097111 sta CursorCol
dcx7:
00FFE312 08DF9C bsr UpdateCursorPos
00FFE314 035096 puls d,x,pc
00FFE31B 08DF9C bsr UpdateCursorPos
00FFE31D 035096 puls d,x,pc
dcx6:
00FFE316 0C1090 cmpb #$90 ; cursor up ?
00FFE318 026009 bne dcx8
00FFE31A 096110 lda CursorRow
00FFE31C 027FF4 beq dcx7
00FFE31E 04A deca
00FFE31F 097110 sta CursorRow
00FFE321 020FEF bra dcx7
00FFE31F 0C1090 cmpb #$90 ; cursor up ?
00FFE321 026009 bne dcx8
00FFE323 096110 lda CursorRow
00FFE325 027FF4 beq dcx7
00FFE327 04A deca
00FFE328 097110 sta CursorRow
00FFE32A 020FEF bra dcx7
dcx8:
00FFE323 0C1093 cmpb #$93 ; cursor left ?
00FFE325 026009 bne dcx9
00FFE327 096111 lda CursorCol
00FFE329 027FE7 beq dcx7
00FFE32B 04A deca
00FFE32C 097111 sta CursorCol
00FFE32E 020FE2 bra dcx7
00FFE32C 0C1093 cmpb #$93 ; cursor left ?
00FFE32E 026009 bne dcx9
00FFE330 096111 lda CursorCol
00FFE332 027FE7 beq dcx7
00FFE334 04A deca
00FFE335 097111 sta CursorCol
00FFE337 020FE2 bra dcx7
dcx9:
00FFE330 0C1092 cmpb #$92 ; cursor down ?
00FFE332 02600B bne dcx10
00FFE334 096110 lda CursorRow
00FFE336 08101D cmpa #29
00FFE338 027FD8 beq dcx7
00FFE33A 04C inca
00FFE33B 097110 sta CursorRow
00FFE33D 020FD3 bra dcx7
00FFE339 0C1092 cmpb #$92 ; cursor down ?
00FFE33B 02600B bne dcx10
00FFE33D 096110 lda CursorRow
00FFE33F 081020 cmpa #ROWS
00FFE341 027FD8 beq dcx7
00FFE343 04C inca
00FFE344 097110 sta CursorRow
00FFE346 020FD3 bra dcx7
dcx10:
00FFE33F 0C1094 cmpb #$94 ; cursor home ?
00FFE341 02600C bne dcx11
00FFE343 096111 lda CursorCol
00FFE345 027004 beq dcx12
00FFE347 00F111 clr CursorCol
00FFE349 020FC7 bra dcx7
00FFE348 0C1094 cmpb #$94 ; cursor home ?
00FFE34A 02600C bne dcx11
00FFE34C 096111 lda CursorCol
00FFE34E 027004 beq dcx12
00FFE350 00F111 clr CursorCol
00FFE352 020FC7 bra dcx7
dcx12:
00FFE34B 00F110 clr CursorRow
00FFE34D 020FC3 bra dcx7
00FFE354 00F110 clr CursorRow
00FFE356 020FC3 bra dcx7
dcx11:
00FFE34F 0C1099 cmpb #$99 ; delete ?
00FFE351 026008 bne dcx13
00FFE353 08DF7D bsr CalcScreenLoc
00FFE355 01F001 tfr d,x
00FFE357 096111 lda CursorCol ; acc = cursor column
00FFE359 020011 bra dcx5
00FFE358 0C1099 cmpb #$99 ; delete ?
00FFE35A 026008 bne dcx13
00FFE35C 08DF7D bsr CalcScreenLoc
00FFE35E 01F001 tfr d,x
00FFE360 096111 lda CursorCol ; acc = cursor column
00FFE362 020011 bra dcx5
dcx13
00FFE35B 0C1008 cmpb #CTRLH ; backspace ?
00FFE35D 02601E bne dcx3
00FFE35F 096111 lda CursorCol
00FFE361 02702E beq dcx4
00FFE363 04A deca
00FFE364 097111 sta CursorCol
00FFE366 08DF6A bsr CalcScreenLoc
00FFE368 01F001 tfr d,x
00FFE36A 096111 lda CursorCol
00FFE364 0C1008 cmpb #CTRLH ; backspace ?
00FFE366 02601E bne dcx3
00FFE368 096111 lda CursorCol
00FFE36A 02702E beq dcx4
00FFE36C 04A deca
00FFE36D 097111 sta CursorCol
00FFE36F 08DF6A bsr CalcScreenLoc
00FFE371 01F001 tfr d,x
00FFE373 096111 lda CursorCol
dcx5:
00FFE36C 0E6001 ldb 1,x
00FFE36E 0E7801 stb ,x++
00FFE370 04C inca
00FFE371 081038 cmpa #56
00FFE373 025FF7 blo dcx5
00FFE375 0C6020 ldb #' '
00FFE377 0301FF dex
00FFE379 0E7804 stb ,x
00FFE37B 020014 bra dcx4
00FFE375 0E6001 ldb 1,x
00FFE377 0E7801 stb ,x++
00FFE379 04C inca
00FFE37A 081040 cmpa #COLS
00FFE37C 025FF7 blo dcx5
00FFE37E 0C6020 ldb #' '
00FFE380 0301FF dex
00FFE382 0E7804 stb ,x
00FFE384 020014 bra dcx4
dcx3:
00FFE37D 0C100A cmpb #LF ; linefeed ?
00FFE37F 02700E beq dclf
00FFE381 034004 pshs b
00FFE383 08DF4D bsr CalcScreenLoc
00FFE385 01F001 tfr d,x
00FFE387 035004 puls b
00FFE389 0E7804 stb ,x
00FFE386 0C100A cmpb #LF ; linefeed ?
00FFE388 02700E beq dclf
00FFE38A 034004 pshs b
00FFE38C 08DF4D bsr CalcScreenLoc
00FFE38E 01F001 tfr d,x
00FFE390 035004 puls b
00FFE392 0E7804 stb ,x
; ToDo character color
; lda CharColor
; sta $2000,x
00FFE38B 08D006 bsr IncCursorPos
00FFE38D 020002 bra dcx4
00FFE394 08D006 bsr IncCursorPos
00FFE396 020002 bra dcx4
dclf:
00FFE38F 08D011 bsr IncCursorRow
00FFE398 08D011 bsr IncCursorRow
dcx4:
00FFE391 035096 puls d,x,pc
00FFE39A 035096 puls d,x,pc
;------------------------------------------------------------------------------
; Increment the cursor position, scroll the screen if needed.
942,29 → 1091,29
;------------------------------------------------------------------------------
IncCursorPos:
00FFE393 034016 pshs d,x
00FFE395 096111 lda CursorCol
00FFE397 04C inca
00FFE398 097111 sta CursorCol
00FFE39A 081038 cmpa #56
00FFE39C 025014 blo icc1
00FFE39E 00F111 clr CursorCol ; column = 0
00FFE3A0 020002 bra icr1
00FFE39C 034016 pshs d,x
00FFE39E 096111 lda CursorCol
00FFE3A0 04C inca
00FFE3A1 097111 sta CursorCol
00FFE3A3 081040 cmpa #COLS
00FFE3A5 025014 blo icc1
00FFE3A7 00F111 clr CursorCol ; column = 0
00FFE3A9 020002 bra icr1
IncCursorRow:
00FFE3A2 034016 pshs d,x
00FFE3AB 034016 pshs d,x
icr1:
00FFE3A4 096110 lda CursorRow
00FFE3A6 04C inca
00FFE3A7 097110 sta CursorRow
00FFE3A9 08101D cmpa #29
00FFE3AB 025005 blo icc1
00FFE3AD 04A deca ; backup the cursor row, we are scrolling up
00FFE3AE 097110 sta CursorRow
00FFE3B0 08DE9F bsr ScrollUp
00FFE3AD 096110 lda CursorRow
00FFE3AF 04C inca
00FFE3B0 097110 sta CursorRow
00FFE3B2 081020 cmpa #ROWS
00FFE3B4 025005 blo icc1
00FFE3B6 04A deca ; backup the cursor row, we are scrolling up
00FFE3B7 097110 sta CursorRow
00FFE3B9 08DE9F bsr ScrollUp
icc1:
00FFE3B2 08DEFC bsr UpdateCursorPos
00FFE3BB 08DEFC bsr UpdateCursorPos
icc2:
00FFE3B4 035096 puls d,x,pc
00FFE3BD 035096 puls d,x,pc
;------------------------------------------------------------------------------
; Display a string on the screen.
976,99 → 1125,99
;------------------------------------------------------------------------------
;
DisplayString:
00FFE3B6 034016 pshs d,x
00FFE3B8 01F001 tfr d,x
00FFE3BF 034016 pshs d,x
00FFE3C1 01F001 tfr d,x
dspj2: ; lock semaphore for access
00FFE3BA 0B6EF0001 lda OUTSEMA+1
00FFE3BD 027FFB beq dspj2
00FFE3C3 0B6EF0001 lda OUTSEMA+1
00FFE3C6 027FFB beq dspj2
dspj1B:
00FFE3BF 0E6800 ldb ,x+ ; move string char into acc
00FFE3C1 027005 beq dsretB ; is it end of string ?
00FFE3C3 01700094C lbsr OUTCH ; display character
00FFE3C6 020FF7 bra dspj1B
00FFE3C8 0E6800 ldb ,x+ ; move string char into acc
00FFE3CA 027005 beq dsretB ; is it end of string ?
00FFE3CC 017000943 lbsr OUTCH ; display character
00FFE3CF 020FF7 bra dspj1B
dsretB:
00FFE3C8 07FEF0001 clr OUTSEMA+1 ; unlock semaphore
00FFE3CB 035096 puls d,x,pc
00FFE3D1 07FEF0001 clr OUTSEMA+1 ; unlock semaphore
00FFE3D4 035096 puls d,x,pc
DisplayStringCRLF:
00FFE3CD 034006 pshs d
00FFE3CF 08DFE5 bsr DisplayString
00FFE3D1 0C600D ldb #CR
00FFE3D3 01700093C lbsr OUTCH
00FFE3D6 0C600A ldb #LF
00FFE3D8 017000937 lbsr OUTCH
00FFE3DB 035086 puls d,pc
00FFE3D6 034006 pshs d
00FFE3D8 08DFE5 bsr DisplayString
00FFE3DA 0C600D ldb #CR
00FFE3DC 017000933 lbsr OUTCH
00FFE3DF 0C600A ldb #LF
00FFE3E1 01700092E lbsr OUTCH
00FFE3E4 035086 puls d,pc
;
; PRINT CR, LF, STRING
;
PSTRNG
00FFE3DD 08D002 BSR PCRLF
00FFE3DF 02000D BRA PDATA
00FFE3E6 08D002 BSR PCRLF
00FFE3E8 02000D BRA PDATA
PCRLF
00FFE3E1 034010 PSHS X
00FFE3E3 08EFFE3F5 LDX #CRLFST
00FFE3E6 08D006 BSR PDATA
00FFE3E8 035010 PULS X
00FFE3EA 039 RTS
00FFE3EA 034010 PSHS X
00FFE3EC 08EFFE3FE LDX #CRLFST
00FFE3EF 08D006 BSR PDATA
00FFE3F1 035010 PULS X
00FFE3F3 039 RTS
PRINT
00FFE3EB 0BDFFED12 JSR OUTCH
00FFE3F4 0BDFFED12 JSR OUTCH
PDATA
00FFE3EE 0E6800 LDB ,X+
00FFE3F0 0C1004 CMPB #$04
00FFE3F2 026FF7 BNE PRINT
00FFE3F4 039 RTS
00FFE3F7 0E6800 LDB ,X+
00FFE3F9 0C1004 CMPB #$04
00FFE3FB 026FF7 BNE PRINT
00FFE3FD 039 RTS
CRLFST
00FFE3F5 00D00A004 fcb CR,LF,4
00FFE3FE 00D00A004 fcb CR,LF,4
DispDWordAsHex:
00FFE3F8 08D007 bsr DispWordAsHex
00FFE3FA 01E001 exg d,x
00FFE3FC 08D003 bsr DispWordAsHex
00FFE3FE 01E001 exg d,x
00FFE400 039 rts
00FFE401 08D007 bsr DispWordAsHex
00FFE403 01E001 exg d,x
00FFE405 08D003 bsr DispWordAsHex
00FFE407 01E001 exg d,x
00FFE409 039 rts
DispWordAsHex:
00FFE401 01E089 exg a,b
00FFE403 08D005 bsr DispByteAsHex
00FFE405 01E089 exg a,b
00FFE407 08D001 bsr DispByteAsHex
00FFE409 039 rts
00FFE40A 01E089 exg a,b
00FFE40C 08D005 bsr DispByteAsHex
00FFE40E 01E089 exg a,b
00FFE410 08D001 bsr DispByteAsHex
00FFE412 039 rts
DispByteAsHex:
00FFE40A 034004 pshs b
00FFE40C 054 lsrb
00FFE40D 054 lsrb
00FFE40E 054 lsrb
00FFE40F 054 lsrb
00FFE410 054 lsrb
00FFE411 054 lsrb
00FFE412 054 lsrb
00FFE413 054 lsrb
00FFE414 08D00C bsr DispNyb
00FFE416 035004 puls b
00FFE418 034004 pshs b
00FFE413 034004 pshs b
00FFE415 054 lsrb
00FFE416 054 lsrb
00FFE417 054 lsrb
00FFE418 054 lsrb
00FFE419 054 lsrb
00FFE41A 054 lsrb
00FFE41B 054 lsrb
00FFE41C 054 lsrb
00FFE41D 054 lsrb
00FFE41E 08D002 bsr DispNyb
00FFE420 035004 puls b
00FFE41D 08D00C bsr DispNyb
00FFE41F 035004 puls b
00FFE421 034004 pshs b
00FFE423 054 lsrb
00FFE424 054 lsrb
00FFE425 054 lsrb
00FFE426 054 lsrb
00FFE427 08D002 bsr DispNyb
00FFE429 035004 puls b
DispNyb
00FFE422 034004 pshs b
00FFE424 0C400F andb #$0F
00FFE426 0C100A cmpb #10
00FFE428 025007 blo DispNyb1
00FFE42A 0CB037 addb #'A'-10
00FFE42C 0170008E3 lbsr OUTCH
00FFE42F 035084 puls b,pc
00FFE42B 034004 pshs b
00FFE42D 0C400F andb #$0F
00FFE42F 0C100A cmpb #10
00FFE431 025007 blo DispNyb1
00FFE433 0CB037 addb #'A'-10
00FFE435 0170008DA lbsr OUTCH
00FFE438 035084 puls b,pc
DispNyb1
00FFE431 0CB030 addb #'0'
00FFE433 0170008DC lbsr OUTCH
00FFE436 035084 puls b,pc
00FFE43A 0CB030 addb #'0'
00FFE43C 0170008D3 lbsr OUTCH
00FFE43F 035084 puls b,pc
;==============================================================================
; Timer
1100,32 → 1249,32
; ============================================================================
;
TimerInit:
00FFE438 0CC061A80 ldd #$61A80 ; compare to 400000 (100 Hz assuming 40MHz clock)
00FFE43B 0150F7FFFE60014 stb VIA+VIA_T3CMPL
00FFE440 0150B7FFFE60015 sta VIA+VIA_T3CMPH
00FFE445 01507FFFFE60012 clr VIA+VIA_T3LL
00FFE44A 01507FFFFE60013 clr VIA+VIA_T3LH
00FFE44F 0150B6FFFE6000B lda VIA+VIA_ACR ; set continuous mode for timer
00FFE454 08A100 ora #$100
00FFE456 0150B7FFFE6000B sta VIA+VIA_ACR ; enable timer #3 interrupts
00FFE45B 086810 lda #$810
00FFE45D 0150B7FFFE6000E sta VIA+VIA_IER
00FFE462 039 rts
00FFE441 0CC061A80 ldd #$61A80 ; compare to 400000 (100 Hz assuming 40MHz clock)
00FFE444 0150F7FFFE60014 stb VIA+VIA_T3CMPL
00FFE449 0150B7FFFE60015 sta VIA+VIA_T3CMPH
00FFE44E 01507FFFFE60012 clr VIA+VIA_T3LL
00FFE453 01507FFFFE60013 clr VIA+VIA_T3LH
00FFE458 0150B6FFFE6000B lda VIA+VIA_ACR ; set continuous mode for timer
00FFE45D 08A100 ora #$100
00FFE45F 0150B7FFFE6000B sta VIA+VIA_ACR ; enable timer #3 interrupts
00FFE464 086810 lda #$810
00FFE466 0150B7FFFE6000E sta VIA+VIA_IER
00FFE46B 039 rts
TimerIRQ:
; Reset the edge sense circuit in the PIC
00FFE463 08601F lda #31 ; Timer is IRQ #31
00FFE465 0B7FF0011 sta IrqSource ; stuff a byte indicating the IRQ source for PEEK()
00FFE468 0150B7FFFE3F010 sta PIC+16 ; register 16 is edge sense reset reg
00FFE46D 0150B6FFFE6000D lda VIA+VIA_IFR
00FFE472 02A011 bpl notTimerIRQ
00FFE474 085800 bita #$800
00FFE476 02700D beq notTimerIRQ
00FFE478 01507FFFFE60012 clr VIA+VIA_T3LL
00FFE47D 01507FFFFE60013 clr VIA+VIA_T3LH
00FFE482 07CE00037 inc $E00037 ; update timer IRQ screen flag
00FFE46C 08601F lda #31 ; Timer is IRQ #31
00FFE46E 0B7FFC011 sta IrqSource ; stuff a byte indicating the IRQ source for PEEK()
00FFE471 0150B7FFFE3F010 sta PIC+16 ; register 16 is edge sense reset reg
00FFE476 0150B6FFFE6000D lda VIA+VIA_IFR
00FFE47B 02A011 bpl notTimerIRQ
00FFE47D 085080 bita #$80 ; timer3 irq is bit 7
00FFE47F 02700D beq notTimerIRQ
00FFE481 01507FFFFE60012 clr VIA+VIA_T3LL
00FFE486 01507FFFFE60013 clr VIA+VIA_T3LH
00FFE48B 07CE00037 inc $E00037 ; update timer IRQ screen flag
notTimerIRQ:
00FFE485 039 rts
00FFE48E 039 rts
1188,12 → 1337,12
; Returns: none
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_i2c_init:
00FFE486 034004 pshs b
00FFE488 0C6004 ldb #4 ; setup prescale for 400kHz clock
00FFE48A 0E7804 stb I2C_PREL,x
00FFE48C 06F001 clr I2C_PREH,x
00FFE48E 035084 puls b,pc
i2c_init:
00FFE48F 034004 pshs b
00FFE491 0C6004 ldb #4 ; setup prescale for 400kHz clock
00FFE493 0E7804 stb I2C_PREL,x
00FFE495 06F001 clr I2C_PREH,x
00FFE497 035084 puls b,pc
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
; Wait for I2C transfer to complete
1203,12 → 1352,12
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
i2c_wait_tip:
00FFE490 034004 pshs b
00FFE499 034004 pshs b
i2cw1:
00FFE492 0E6004 ldb I2C_STAT,x ; would use lvb, but lb is okay since its the I/O area
00FFE494 0C5001 bitb #1 ; wait for tip to clear
00FFE496 026FFA bne i2cw1
00FFE498 035084 puls b,pc
00FFE49B 0E6004 ldb I2C_STAT,x ; would use lvb, but lb is okay since its the I/O area
00FFE49D 0C5001 bitb #1 ; wait for tip to clear
00FFE49F 026FFA bne i2cw1
00FFE4A1 035084 puls b,pc
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
; Write command to i2c
1220,11 → 1369,11
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
i2c_wr_cmd:
00FFE49A 0E7003 stb I2C_TXR,x
00FFE49C 0A7004 sta I2C_CMD,x
00FFE49E 08DFF0 bsr i2c_wait_tip
00FFE4A0 0E6004 ldb I2C_STAT,x
00FFE4A2 039 rts
00FFE4A3 0E7003 stb I2C_TXR,x
00FFE4A5 0A7004 sta I2C_CMD,x
00FFE4A7 08DFF0 bsr i2c_wait_tip
00FFE4A9 0E6004 ldb I2C_STAT,x
00FFE4AB 039 rts
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
; Parameters
1234,31 → 1383,31
; Stack space: 2 words
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_i2c_xmit1:
00FFE4A3 034006 pshs d ; save data value
00FFE4A5 034006 pshs d ; and save it again
00FFE4A7 0C6001 ldb #1
00FFE4A9 0E7002 stb I2C_CTRL,x ; enable the core
00FFE4AB 0C6076 ldb #$76 ; set slave address = %0111011
00FFE4AD 086090 lda #$90 ; set STA, WR
00FFE4AF 08DFE9 bsr i2c_wr_cmd
00FFE4B1 08D00A bsr i2c_wait_rx_nack
00FFE4B3 035006 puls d ; get back data value
00FFE4B5 086050 lda #$50 ; set STO, WR
00FFE4B7 08DFE1 bsr i2c_wr_cmd
00FFE4B9 08D002 bsr i2c_wait_rx_nack
00FFE4BB 035086 puls d,pc
i2c_xmit1:
00FFE4AC 034006 pshs d ; save data value
00FFE4AE 034006 pshs d ; and save it again
00FFE4B0 0C6001 ldb #1
00FFE4B2 0E7002 stb I2C_CTRL,x ; enable the core
00FFE4B4 0C6076 ldb #$76 ; set slave address = %0111011
00FFE4B6 086090 lda #$90 ; set STA, WR
00FFE4B8 08DFE9 bsr i2c_wr_cmd
00FFE4BA 08D00A bsr i2c_wait_rx_nack
00FFE4BC 035006 puls d ; get back data value
00FFE4BE 086050 lda #$50 ; set STO, WR
00FFE4C0 08DFE1 bsr i2c_wr_cmd
00FFE4C2 08D002 bsr i2c_wait_rx_nack
00FFE4C4 035086 puls d,pc
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
i2c_wait_rx_nack:
00FFE4BD 034004 pshs b ; save off accb
00FFE4C6 034004 pshs b ; save off accb
i2cwr1:
00FFE4BF 0E6004 ldb I2C_STAT,x ; wait for RXack = 0
00FFE4C1 0C5080 bitb #$80 ; test for nack
00FFE4C3 026FFA bne i2cwr1
00FFE4C5 035084 puls b,pc
00FFE4C8 0E6004 ldb I2C_STAT,x ; wait for RXack = 0
00FFE4CA 0C5080 bitb #$80 ; test for nack
00FFE4CC 026FFA bne i2cwr1
00FFE4CE 035084 puls b,pc
; ============================================================================
; __
1313,50 → 1462,50
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
rtc_read:
00FFE4C7 08EE30500 ldx #RTC
00FFE4CA 18E007FC0 ldy #RTCBuf
00FFE4CD 0C6080 ldb #$80
00FFE4CF 0E7002 stb I2C_CTRL,x ; enable I2C
00FFE4D1 0CC0900DE ldd #$900DE ; read address, write op, STA + wr bit
00FFE4D4 08DFC4 bsr i2c_wr_cmd
00FFE4D6 0C5080 bitb #$80
00FFE4D8 02603C bne rtc_rxerr
00FFE4DA 0CC010000 ldd #$10000 ; address zero, wr bit
00FFE4DD 08DFBB bsr i2c_wr_cmd
00FFE4D0 08EE30500 ldx #RTC
00FFE4D3 18E007FC0 ldy #RTCBuf
00FFE4D6 0C6080 ldb #$80
00FFE4D8 0E7002 stb I2C_CTRL,x ; enable I2C
00FFE4DA 0CC0900DE ldd #$900DE ; read address, write op, STA + wr bit
00FFE4DD 08DFC4 bsr i2c_wr_cmd
00FFE4DF 0C5080 bitb #$80
00FFE4E1 026033 bne rtc_rxerr
00FFE4E3 0CC0900DF ldd #$900DF ; read address, read op, STA + wr bit
00FFE4E6 08DFB2 bsr i2c_wr_cmd
00FFE4E1 02603C bne rtc_rxerr
00FFE4E3 0CC010000 ldd #$10000 ; address zero, wr bit
00FFE4E6 08DFBB bsr i2c_wr_cmd
00FFE4E8 0C5080 bitb #$80
00FFE4EA 02602A bne rtc_rxerr
00FFE4EA 026033 bne rtc_rxerr
00FFE4EC 0CC0900DF ldd #$900DF ; read address, read op, STA + wr bit
00FFE4EF 08DFB2 bsr i2c_wr_cmd
00FFE4F1 0C5080 bitb #$80
00FFE4F3 02602A bne rtc_rxerr
00FFE4EC 05F clrb
00FFE4F5 05F clrb
rtcr0001:
00FFE4ED 086020 lda #$20
00FFE4EF 0A7004 sta I2C_CMD,x ; rd bit
00FFE4F1 08DF9D bsr i2c_wait_tip
00FFE4F3 08DFC8 bsr i2c_wait_rx_nack
00FFE4F5 0A6004 lda I2C_STAT,x
00FFE4F7 085080 bita #$80
00FFE4F9 02601B bne rtc_rxerr
00FFE4FB 0A6003 lda I2C_RXR,x
00FFE4FD 0A7A07 sta b,y
00FFE4FF 05C incb
00FFE500 0C105F cmpb #$5F
00FFE502 025FE9 blo rtcr0001
00FFE504 086068 lda #$68
00FFE506 0A7004 sta I2C_CMD,x ; STO, rd bit + nack
00FFE508 08DF86 bsr i2c_wait_tip
00FFE50A 0A6004 lda I2C_STAT,x
00FFE50C 085080 bita #$80
00FFE50E 026006 bne rtc_rxerr
00FFE510 0A6003 lda I2C_RXR,x
00FFE512 0A7A07 sta b,y
00FFE514 04F05F clrd ; return 0
00FFE4F6 086020 lda #$20
00FFE4F8 0A7004 sta I2C_CMD,x ; rd bit
00FFE4FA 08DF9D bsr i2c_wait_tip
00FFE4FC 08DFC8 bsr i2c_wait_rx_nack
00FFE4FE 0A6004 lda I2C_STAT,x
00FFE500 085080 bita #$80
00FFE502 02601B bne rtc_rxerr
00FFE504 0A6003 lda I2C_RXR,x
00FFE506 0A7A07 sta b,y
00FFE508 05C incb
00FFE509 0C105F cmpb #$5F
00FFE50B 025FE9 blo rtcr0001
00FFE50D 086068 lda #$68
00FFE50F 0A7004 sta I2C_CMD,x ; STO, rd bit + nack
00FFE511 08DF86 bsr i2c_wait_tip
00FFE513 0A6004 lda I2C_STAT,x
00FFE515 085080 bita #$80
00FFE517 026006 bne rtc_rxerr
00FFE519 0A6003 lda I2C_RXR,x
00FFE51B 0A7A07 sta b,y
00FFE51D 04F05F clrd ; return 0
rtc_rxerr:
00FFE516 06F002 clr I2C_CTRL,x ; disable I2C and return status
00FFE518 04F clra
00FFE519 039 rts
00FFE51F 06F002 clr I2C_CTRL,x ; disable I2C and return status
00FFE521 04F clra
00FFE522 039 rts
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
; Write the real-time-clock chip.
1371,40 → 1520,40
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
rtc_write:
00FFE51A 08EE30500 ldx #RTC
00FFE51D 18E007FC0 ldy #RTCBuf
00FFE523 08EE30500 ldx #RTC
00FFE526 18E007FC0 ldy #RTCBuf
00FFE520 0C6080 ldb #$80
00FFE522 0E7002 stb I2C_CTRL,x ; enable I2C
00FFE524 0CC0900DE ldd #$900DE ; read address, write op, STA + wr bit
00FFE527 08DF71 bsr i2c_wr_cmd
00FFE529 0C5080 bitb #$80
00FFE52B 026FE9 bne rtc_rxerr
00FFE52D 0CC010000 ldd #$10000 ; address zero, wr bit
00FFE530 08DF68 bsr i2c_wr_cmd
00FFE529 0C6080 ldb #$80
00FFE52B 0E7002 stb I2C_CTRL,x ; enable I2C
00FFE52D 0CC0900DE ldd #$900DE ; read address, write op, STA + wr bit
00FFE530 08DF71 bsr i2c_wr_cmd
00FFE532 0C5080 bitb #$80
00FFE534 026FE0 bne rtc_rxerr
00FFE534 026FE9 bne rtc_rxerr
00FFE536 0CC010000 ldd #$10000 ; address zero, wr bit
00FFE539 08DF68 bsr i2c_wr_cmd
00FFE53B 0C5080 bitb #$80
00FFE53D 026FE0 bne rtc_rxerr
00FFE536 0C6000 ldb #0
00FFE53F 0C6000 ldb #0
rtcw0001:
00FFE538 034004 pshs b
00FFE53A 0E6A05 ldb b,y
00FFE53C 086010 lda #$10
00FFE53E 08DF5A bsr i2c_wr_cmd
00FFE540 0C5080 bitb #$80
00FFE542 035004 puls b
00FFE544 026FD0 bne rtc_rxerr
00FFE546 05C incb
00FFE547 0C105F cmpb #$5F
00FFE549 025FED blo rtcw0001
00FFE54B 0E6A05 ldb b,y
00FFE54D 086050 lda #$50 ; STO, wr bit
00FFE54F 08DF49 bsr i2c_wr_cmd
00FFE551 0C5080 bitb #$80
00FFE553 026FC1 bne rtc_rxerr
00FFE555 04F05F clrd ; return 0
00FFE557 06F002 clr I2C_CTRL,x ; disable I2C and return status
00FFE559 039 rts
00FFE541 034004 pshs b
00FFE543 0E6A05 ldb b,y
00FFE545 086010 lda #$10
00FFE547 08DF5A bsr i2c_wr_cmd
00FFE549 0C5080 bitb #$80
00FFE54B 035004 puls b
00FFE54D 026FD0 bne rtc_rxerr
00FFE54F 05C incb
00FFE550 0C105F cmpb #$5F
00FFE552 025FED blo rtcw0001
00FFE554 0E6A05 ldb b,y
00FFE556 086050 lda #$50 ; STO, wr bit
00FFE558 08DF49 bsr i2c_wr_cmd
00FFE55A 0C5080 bitb #$80
00FFE55C 026FC1 bne rtc_rxerr
00FFE55E 04F05F clrd ; return 0
00FFE560 06F002 clr I2C_CTRL,x ; disable I2C and return status
00FFE562 039 rts
;==============================================================================
; Keyboard I/O
1910,7 → 2059,7
00FFE984 026FC3 bne kbdi0002
.keybdErr:
00FFE986 0CCFFE9AE ldd #msgBadKeybd
00FFE989 017FFFA41 lbsr DisplayStringCRLF
00FFE989 017FFFA4A lbsr DisplayStringCRLF
*** warning 1: Long branch within short branch range could be optimized
00FFE98C 020014 bra ledxit
kbdi0004:
1969,7 → 2118,7
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
00FFE9E4 0B6FFC010 lda IOFocusID ; compute core memory address $Cn0000
00FFE9E7 05F clrb
00FFE9E8 048 asla
00FFE9E9 048 asla
1989,7 → 2138,7
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()
00FFEA09 0B7FFC011 sta IrqSource ; stuff a byte indicating the IRQ source for PEEK()
notKbdIRQ:
00FFEA0C 039 rts
kbdBufFull:
2312,7 → 2461,7
00FFEB7B 00F140 clr SerRcvXoff
00FFEB7D 0150B6FFFFFFFE0 lda COREID
sini1:
00FFEB82 0B1FF0010 cmpa IOFocusID
00FFEB82 0B1FFC010 cmpa IOFocusID
00FFEB85 026FFB bne sini1
00FFEB87 0C6009 ldb #$09 ; dtr,rts active, rxint enabled, no parity
00FFEB89 0150F7FFFE30102 stb ACIA+ACIA_CMD
2416,7 → 2565,7
SerialPeekCharDirect:
00FFEBE4 0150B6FFFFFFFE0 lda COREID ; Ensure we have the IO Focus
00FFEBE9 0B1FF0010 cmpa IOFocusID
00FFEBE9 0B1FFC010 cmpa IOFocusID
00FFEBEC 026014 bne spcd0001
; Disallow interrupts between status read and rx read.
00FFEBEE 01A010 sei
2449,7 → 2598,7
00FFEC08 034003 pshs a,ccr
spc0001:
00FFEC0A 0150B6FFFFFFFE0 lda COREID ; Ensure we have the IO Focus
00FFEC0F 0B1FF0010 cmpa IOFocusID
00FFEC0F 0B1FFC010 cmpa IOFocusID
00FFEC12 026FF6 bne spc0001
00FFEC14 01C0EF cli ; provide a window for an interrupt to occur
00FFEC16 01A010 sei
2508,7 → 2657,7
sirq0001:
00FFEC4D 034004 pshs b
; Compute receive buffer address
00FFEC4F 0B6FF0010 lda IOFocusID
00FFEC4F 0B6FFC010 lda IOFocusID
00FFEC52 048 asla
00FFEC53 048 asla
00FFEC54 048 asla
2580,7 → 2729,7
SerialOutputTest:
00FFECA5 034006 pshs d
00FFECA7 0CCFFECC5 ldd #msgSerialTest
00FFECAA 017FFF709 lbsr DisplayString
00FFECAA 017FFF712 lbsr DisplayString
*** warning 1: Long branch within short branch range could be optimized
00FFECAD 08DEC0 bsr SerialInit
sotst1:
2615,7 → 2764,7
00FFECDA 034004 pshs b
INCH2:
00FFECDC 0150F6FFFFFFFE0 ldb COREID
00FFECE1 0F1FF0010 cmpb IOFocusID ; if we do not have focus, block
00FFECE1 0F1FFC010 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
2648,7 → 2797,7
*** warning 1: Long branch within short branch range could be optimized
00FFED0C 020003 bra INCHEK1
INCHEK2:
00FFED0E 017FFF5E4 lbsr DisplayChar
00FFED0E 017FFF5ED lbsr DisplayChar
*** warning 1: Long branch within short branch range could be optimized
INCHEK1:
00FFED11 039 rts
2702,1457 → 2851,303
00FFED4D 000000 fcw 0
00FFED4F 000000 fcw 0
00FFED51 000000 fcw 0
00FFED53 FFED84 fcw ReleaseIOFocus
00FFED53 FFED70 fcw ReleaseIOFocus
00FFED55 000000 fcw 0
00FFED57 FFED6D fcw RequestIOFocus
00FFED57 FFED59 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
NumOSFuncs EQU (*-OSCallTbl)/2
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
00FFED59 0150F6FFFFFFFE0 ldb COREID
00FFED5E 08EFFC000 ldx #IOFocusList
00FFED61 03A abx
00FFED62 0A7804 sta ,x
00FFED64 07DFFC010 tst IOFocusID
00FFED67 1260006FF lbne oscx
00FFED6A 0F7FFC010 stb IOFocusID
00FFED6D 0160006F9 lbra oscx
ReleaseIOFocus:
00FFED84 0150F6FFFFFFFE0 ldb COREID
00FFED89 08EFF0000 ldx #IOFocusList
00FFED8C 03A abx
00FFED8D 06F804 clr ,x ; clear the request indicator
00FFED8F 017FFF463 lbsr CopyScreenToVirtualScreen
00FFED70 0150F6FFFFFFFE0 ldb COREID
00FFED75 08EFFC000 ldx #IOFocusList
00FFED78 03A abx
00FFED79 06F804 clr ,x ; clear the request indicator
00FFED7B 017FFF480 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
00FFED7E 0F1FFC010 cmpb IOFocusID ; are we the one with the focus?
00FFED81 1260006E5 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.
00FFED98 08600F lda #15
00FFED84 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
00FFED86 05C incb
00FFED87 0C400F andb #15
00FFED89 03A abx
00FFED8A 06D804 tst ,x
00FFED8C 026009 bne riof1
00FFED8E 04A deca
00FFED8F 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
00FFED91 0C6001 ldb #1
00FFED93 086018 lda #24
00FFED95 0A7804 sta ,x
riof1:
00FFEDAB 0F7FF0010 stb IOFocusID
00FFEDAE 017FFF40D lbsr CopyVirtualScreenToScreen
00FFED97 0F7FFC010 stb IOFocusID
00FFED9A 017FFF42A 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
00FFED9D 0160006C9 lbra oscx
;==============================================================================
; Disassembler
;==============================================================================
; ============================================================================
; __
; \\__/ o\ (C) 2013-2022 Robert Finch, Waterloo
; \ __ / All rights reserved.
; \/_// robfinch<remove>@opencores.org
; ||
;
;------------------------------------------------------------------------------
; Seed the random number generator. All channels are seeded with the same
; value.
;
; 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
TFREXG EQU 9
; Parameters:
; d = 'z' part of seed
; x = 'w' part of seed
; Returns:
; none
;------------------------------------------------------------------------------
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 045058047020009 fcb "EXG ", TFREXG
00FFEE4F 054046052020009 fcb "TFR ", TFREXG
; 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
mon_srand:
00FFEDA0 18E000000 ldy #0
mon_srand1:
00FFEDA3 0151BFFFFE30604 sty PRNG+4 ; select channel
00FFEDA8 01507FFFFE30608 clr PRNG+8
00FFEDAD 01507FFFFE30609 clr PRNG+9
00FFEDB2 0150FDFFFE3060A std PRNG+10 ; update low half of value
00FFEDB7 01507FFFFE3060C clr PRNG+12
00FFEDBC 01507FFFFE3060D clr PRNG+13
00FFEDC1 0150BFFFFE3060E stx PRNG+14 ; update low half of value
00FFEDC6 031201 iny
00FFEDC8 18C000400 cmpy #$400 ; 1k channels
00FFEDCB 025FD6 blo mon_srand1
00FFEDCD 039 rts
; 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
;------------------------------------------------------------------------------
; Get a random number and generate the next one.
;
; Parameters:
; d = channel to use
; Returns:
; x,d = 36 bit random value
;------------------------------------------------------------------------------
; 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
mon_rand:
00FFEDCE 0150FDFFFE30604 std PRNG+4 ; select channel
00FFEDD3 0150BEFFFE30600 ldx PRNG+0
00FFEDD8 0150FCFFFE30602 ldd PRNG+2
00FFEDDD 0150F7FFFE30603 stb PRNG+3 ; trigger calc of next number
00FFEDE2 039 rts
; 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
;==============================================================================
; System Monitor
;==============================================================================
; 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
; Command Table
; 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
cmdTable1:
00FFEDE3 03C83E fcb '<','>'+$800
00FFEDE5 062873 fcb 'b','s'+$800
00FFEDE7 062863 fcb 'b','c'+$800
00FFEDE9 044852 fcb 'D','R'+$800
00FFEDEB 844 fcb 'D'+$800
00FFEDEC 83A fcb ':'+$800
00FFEDED 046049847 fcb "FI",'G'+$800
00FFEDF0 04604984C fcb "FI",'L'+$800
00FFEDF3 04684C fcb 'F','L'+$800
00FFEDF5 84A fcb 'J'+$800
00FFEDF6 05204104D054045053854 fcb "RAMTES",'T'+$800
00FFEDFD 053050844 fcb "SP",'D'+$800
00FFEE00 054049852 fcb "TI",'R'+$800
00FFEE03 855 fcb 'U'+$800
00FFEE04 065078069874 fcb "exi",'t'+$800
00FFEE08 83F fcb '?'+$800
00FFEE09 04304C853 fcb "CL",'S'+$800
00FFEE0C 000000 fcw 0
; 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
cmdTable2:
00FFEE0E FFEF11 fcw Redirect
00FFEE10 FFF4AC fcw ArmBreakpoint
00FFEE12 FFF4D3 fcw DisarmBreakpoint
00FFEE14 FFF2CF fcw DumpRegs
00FFEE16 FFF209 fcw DumpMemory
00FFEE18 FFF265 fcw EditMemory
00FFEE1A FE0000 fcw $FE0000 ; FIG forth
00FFEE1C FFF2A5 fcw FillMemory
00FFEE1E FFF390 fcw DumpIOFocusList
00FFEE20 FFF31A fcw jump_to_code
00FFEE22 FFD443 fcw dramtest
00FFEE24 FF8000 fcw $FF8000 ; sprite demo
00FFEE26 FFE4D0 fcw rtc_read
00FFEE28 FF8003 fcw $FF8003 ; unassembler
00FFEE2A FFF451 fcw xitMonitor
00FFEE2C FFEF37 fcw PromptHelp
00FFEE2E FFEF3F fcw PromptClearscreen
; 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 00F15F clr farflag
00FFF3B6 0170006AD lbsr GetRange
00FFF3B9 017FFDD16 lbsr CRLF
*** warning 1: Long branch within short branch range could be optimized
00FFF3BC 1BE000922 ldy mon_r1+2
disLoop1:
00FFF3BF 01F020 tfr y,d
00FFF3C1 017FFF03D lbsr DispWordAsHex
*** warning 1: Long branch within short branch range could be optimized
00FFF3C4 0C6020 ldb #' '
00FFF3C6 017FFF949 lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF3C9 0E6A00 ldb ,y+
00FFF3CB 0C5300 bitb #$300
00FFF3CD 12600041F lbne dis1
00FFF3D0 0C40FF andb #$FF ; mask off extra bits
00FFF3D2 0C1015 cmpb #$15
00FFF3D4 026004 bne dis20
00FFF3D6 0D715F stb farflag
00FFF3D8 020FE5 bra disLoop1
dis20:
00FFF3DA 08EFFEDB4 ldx #distbl1
dis23:
00FFF3DD 086005 lda #5
00FFF3DF 03D mul
00FFF3E0 03A abx
00FFF3E1 0E6800 ldb ,x+
00FFF3E3 017FFF92C lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF3E6 0E6800 ldb ,x+
00FFF3E8 017FFF927 lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF3EB 0E6800 ldb ,x+
00FFF3ED 017FFF922 lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF3F0 0E6800 ldb ,x+
00FFF3F2 017FFF91D lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF3F5 0C6020 ldb #' '
00FFF3F7 017FFF918 lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF3FA 0E6800 ldb ,x+
00FFF3FC 127000443 lbeq disNextLine
00FFF3FF 0C1001 cmpb #DIRECT
00FFF401 026008 bne disNotDirect
00FFF403 0E6A00 ldb ,y+
00FFF405 017FFF002 lbsr DispByteAsHex
*** warning 1: Long branch within short branch range could be optimized
00FFF408 016000437 lbra disNextLine
disNotDirect:
00FFF40B 0C1002 cmpb #LSREL
00FFF40D 02600C bne disNotLRel
dis21:
00FFF40F 0ECA01 ldd ,y++
dis2:
00FFF411 030A0B leax d,y
00FFF413 01F010 tfr x,d
00FFF415 017FFEFE9 lbsr DispWordAsHex
*** warning 1: Long branch within short branch range could be optimized
00FFF418 016000427 lbra disNextLine
disNotLRel:
00FFF41B 0C1004 cmpb #SREL
00FFF41D 026005 bne disNotRel
00FFF41F 0E6A00 ldb ,y+
00FFF421 04F clra
00FFF422 020FED bra dis2
disNotRel:
00FFF424 0C1005 cmpb #NDX
00FFF426 026385 bne disNotNdx
00FFF428 0E6A00 ldb ,y+
00FFF42A 0C5800 bitb #$800
00FFF42C 02601E bne disNot9 ; test for offset 9 mode
00FFF42E 034004 pshs b
00FFF430 0C41FF andb #$1FF ; mask to offset bits
00FFF432 04F clra ;
00FFF433 0C5100 bitb #$100 ; test for negative offset
00FFF435 027003 beq dis3
00FFF437 04A deca ; sign extend offset
00FFF438 0CAE00 orb #$E00
dis3:
00FFF43A 017FFEFC4 lbsr DispWordAsHex
*** warning 1: Long branch within short branch range could be optimized
00FFF43D 0C602C ldb #','
00FFF43F 017FFF8D0 lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF442 035004 puls b
00FFF444 08D42E bsr disNdxReg
00FFF446 017FFF8C9 lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF449 0160003F6 lbra disNextLine
disNot9:
00FFF44C 034004 pshs b
00FFF44E 0C5100 bitb #$100 ; check if indirect
00FFF450 027005 beq dis4
00FFF452 0C605B ldb #'['
00FFF454 017FFF8BB lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
dis4:
00FFF457 0E6E04 ldb ,s ; get back b
00FFF459 0C400F andb #15
00FFF45B 026030 bne disNotRplus
00FFF45D 0E6E04 ldb ,s
00FFF45F 0C5080 bitb #$80 ; outer indexed?
00FFF461 027005 beq dis5
00FFF463 0C605D ldb #']'
00FFF465 017FFF8AA lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
dis5:
00FFF468 0C602C ldb #','
00FFF46A 017FFF8A5 lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF46D 0E6E04 ldb ,s
00FFF46F 08D403 bsr disNdxReg
00FFF471 017FFF89E lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF474 0C602B ldb #'+'
00FFF476 017FFF899 lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF479 035004 puls b
00FFF47B 0C5100 bitb #$100
00FFF47D 1270003C2 lbeq disNextLine
00FFF480 0C5080 bitb #$80
00FFF482 1260003BD lbne disNextLine
00FFF485 0C605D ldb #']'
00FFF487 017FFF888 lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF48A 0160003B5 lbra disNextLine
disNotRplus:
00FFF48D 0C1001 cmpb #1
00FFF48F 026033 bne disNotRplusplus
00FFF491 0E6E04 ldb ,s
00FFF493 0C5080 bitb #$80 ; outer indexed?
00FFF495 027005 beq dis6
00FFF497 0C605D ldb #']'
00FFF499 017FFF876 lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
dis6:
00FFF49C 0C602C ldb #','
00FFF49E 017FFF871 lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF4A1 0E6E04 ldb ,s
00FFF4A3 08D3CF bsr disNdxReg
00FFF4A5 017FFF86A lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF4A8 0C602B ldb #'+'
00FFF4AA 017FFF865 lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF4AD 017FFF862 lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF4B0 035004 puls b
00FFF4B2 0C5100 bitb #$100
00FFF4B4 12700038B lbeq disNextLine
00FFF4B7 0C5080 bitb #$80
00FFF4B9 126000386 lbne disNextLine
00FFF4BC 0C605D ldb #']'
00FFF4BE 017FFF851 lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF4C1 01600037E lbra disNextLine
disNotRplusplus:
00FFF4C4 0C1002 cmpb #2
00FFF4C6 026030 bne disNotRminus
00FFF4C8 0E6E04 ldb ,s
00FFF4CA 0C5080 bitb #$80 ; outer indexed?
00FFF4CC 027005 beq dis7
00FFF4CE 0C605D ldb #']'
00FFF4D0 017FFF83F lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
dis7:
00FFF4D3 0C602C ldb #','
00FFF4D5 017FFF83A lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF4D8 0E6E04 ldb ,s
00FFF4DA 08D398 bsr disNdxReg
00FFF4DC 017FFF833 lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF4DF 0C602D ldb #'-'
00FFF4E1 017FFF82E lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF4E4 035004 puls b
00FFF4E6 0C5100 bitb #$100
00FFF4E8 127000357 lbeq disNextLine
00FFF4EB 0C5080 bitb #$80
00FFF4ED 126000352 lbne disNextLine
00FFF4F0 0C605D ldb #']'
00FFF4F2 017FFF81D lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF4F5 01600034A lbra disNextLine
disNotRminus:
00FFF4F8 0C1003 cmpb #3
00FFF4FA 026033 bne disNotRminusminus
00FFF4FC 0E6E04 ldb ,s
00FFF4FE 0C5080 bitb #$80 ; outer indexed?
00FFF500 027005 beq dis8
00FFF502 0C605D ldb #']'
00FFF504 017FFF80B lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
dis8:
00FFF507 0C602C ldb #','
00FFF509 017FFF806 lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF50C 0E6E04 ldb ,s
00FFF50E 08D364 bsr disNdxReg
00FFF510 017FFF7FF lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF513 0C602D ldb #'-'
00FFF515 017FFF7FA lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF518 017FFF7F7 lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF51B 035004 puls b
00FFF51D 0C5100 bitb #$100
00FFF51F 127000320 lbeq disNextLine
00FFF522 0C5080 bitb #$80
00FFF524 12600031B lbne disNextLine
00FFF527 0C605D ldb #']'
00FFF529 017FFF7E6 lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF52C 016000313 lbra disNextLine
disNotRminusminus:
00FFF52F 0C1004 cmpb #4
00FFF531 02602B bne disNotR
00FFF533 0E6E04 ldb ,s
00FFF535 0C5080 bitb #$80 ; outer indexed?
00FFF537 027005 beq dis9
00FFF539 0C605D ldb #']'
00FFF53B 017FFF7D4 lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
dis9:
00FFF53E 0C602C ldb #','
00FFF540 017FFF7CF lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF543 0E6E04 ldb ,s
00FFF545 08D32D bsr disNdxReg
00FFF547 017FFF7C8 lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF54A 035004 puls b
00FFF54C 0C5100 bitb #$100
00FFF54E 1270002F1 lbeq disNextLine
00FFF551 0C5080 bitb #$80
00FFF553 1260002EC lbne disNextLine
00FFF556 0C605D ldb #']'
00FFF558 017FFF7B7 lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF55B 0160002E4 lbra disNextLine
disNotR:
00FFF55E 0C1005 cmpb #5
00FFF560 026038 bne disNotBOffs
00FFF562 0C6042 ldb #'B'
00FFF564 017FFF7AB lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF567 0E6E04 ldb ,s
00FFF569 0C5080 bitb #$80 ; outer indexed?
00FFF56B 027005 beq dis10
00FFF56D 0C605D ldb #']'
00FFF56F 017FFF7A0 lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
dis10:
00FFF572 0C602C ldb #','
00FFF574 017FFF79B lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF577 0E6E04 ldb ,s
00FFF579 08D2F9 bsr disNdxReg
00FFF57B 017FFF794 lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF57E 0C602D ldb #'-'
00FFF580 017FFF78F lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF583 017FFF78C lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF586 035004 puls b
00FFF588 0C5100 bitb #$100
00FFF58A 1270002B5 lbeq disNextLine
00FFF58D 0C5080 bitb #$80
00FFF58F 1260002B0 lbne disNextLine
00FFF592 0C605D ldb #']'
00FFF594 017FFF77B lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF597 0160002A8 lbra disNextLine
disNotBOffs:
00FFF59A 0C1006 cmpb #6
00FFF59C 026038 bne disNotAOffs
00FFF59E 0C6041 ldb #'A'
00FFF5A0 017FFF76F lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF5A3 0E6E04 ldb ,s
00FFF5A5 0C5080 bitb #$80 ; outer indexed?
00FFF5A7 027005 beq dis11
00FFF5A9 0C605D ldb #']'
00FFF5AB 017FFF764 lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
dis11:
00FFF5AE 0C602C ldb #','
00FFF5B0 017FFF75F lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF5B3 0E6E04 ldb ,s
00FFF5B5 08D2BD bsr disNdxReg
00FFF5B7 017FFF758 lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF5BA 0C602D ldb #'-'
00FFF5BC 017FFF753 lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF5BF 017FFF750 lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF5C2 035004 puls b
00FFF5C4 0C5100 bitb #$100
00FFF5C6 127000279 lbeq disNextLine
00FFF5C9 0C5080 bitb #$80
00FFF5CB 126000274 lbne disNextLine
00FFF5CE 0C605D ldb #']'
00FFF5D0 017FFF73F lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF5D3 01600026C lbra disNextLine
disNotAOffs:
00FFF5D6 0C1008 cmpb #8
00FFF5D8 026039 bne disNotBO
00FFF5DA 0E6A00 ldb ,y+
00FFF5DC 01D sex
00FFF5DD 017FFEE21 lbsr DispWordAsHex
*** warning 1: Long branch within short branch range could be optimized
00FFF5E0 0E6E04 ldb ,s
00FFF5E2 0C5080 bitb #$80 ; outer indexed?
00FFF5E4 027005 beq dis12
00FFF5E6 0C605D ldb #']'
00FFF5E8 017FFF727 lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
dis12:
00FFF5EB 0C602C ldb #','
00FFF5ED 017FFF722 lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF5F0 0E6E04 ldb ,s
00FFF5F2 08D280 bsr disNdxReg
00FFF5F4 017FFF71B lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF5F7 0C602D ldb #'-'
00FFF5F9 017FFF716 lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF5FC 017FFF713 lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF5FF 035004 puls b
00FFF601 0C5100 bitb #$100
00FFF603 12700023C lbeq disNextLine
00FFF606 0C5080 bitb #$80
00FFF608 126000237 lbne disNextLine
00FFF60B 0C605D ldb #']'
00FFF60D 017FFF702 lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF610 01600022F lbra disNextLine
disNotBO:
00FFF613 0C1009 cmpb #9
00FFF615 026038 bne disNotWO
00FFF617 0ECA01 ldd ,y++
00FFF619 017FFEDE5 lbsr DispWordAsHex
*** warning 1: Long branch within short branch range could be optimized
00FFF61C 0E6E04 ldb ,s
00FFF61E 0C5080 bitb #$80 ; outer indexed?
00FFF620 027005 beq dis13
00FFF622 0C605D ldb #']'
00FFF624 017FFF6EB lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
dis13:
00FFF627 0C602C ldb #','
00FFF629 017FFF6E6 lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF62C 0E6E04 ldb ,s
00FFF62E 08D244 bsr disNdxReg
00FFF630 017FFF6DF lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF633 0C602D ldb #'-'
00FFF635 017FFF6DA lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF638 017FFF6D7 lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF63B 035004 puls b
00FFF63D 0C5100 bitb #$100
00FFF63F 127000200 lbeq disNextLine
00FFF642 0C5080 bitb #$80
00FFF644 1260001FB lbne disNextLine
00FFF647 0C605D ldb #']'
00FFF649 017FFF6C6 lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF64C 0160001F3 lbra disNextLine
disNotWO:
00FFF64F 0C100A cmpb #10
00FFF651 02603D bne disNotTO
00FFF653 0E6A01 ldb ,y++
00FFF655 017FFEDB2 lbsr DispByteAsHex
*** warning 1: Long branch within short branch range could be optimized
00FFF658 0ECA01 ldd ,y++
00FFF65A 017FFEDA4 lbsr DispWordAsHex
*** warning 1: Long branch within short branch range could be optimized
00FFF65D 0E6E04 ldb ,s
00FFF65F 0C5080 bitb #$80 ; outer indexed?
00FFF661 027005 beq dis14
00FFF663 0C605D ldb #']'
00FFF665 017FFF6AA lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
dis14:
00FFF668 0C602C ldb #','
00FFF66A 017FFF6A5 lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF66D 0E6E04 ldb ,s
00FFF66F 08D203 bsr disNdxReg
00FFF671 017FFF69E lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF674 0C602D ldb #'-'
00FFF676 017FFF699 lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF679 017FFF696 lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF67C 035004 puls b
00FFF67E 0C5100 bitb #$100
00FFF680 1270001BF lbeq disNextLine
00FFF683 0C5080 bitb #$80
00FFF685 1260001BA lbne disNextLine
00FFF688 0C605D ldb #']'
00FFF68A 017FFF685 lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF68D 0160001B2 lbra disNextLine
disNotTO:
00FFF690 0C100B cmpb #11
00FFF692 026038 bne disNotDOffs
00FFF694 0C6044 ldb #'D'
00FFF696 017FFF679 lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF699 0E6E04 ldb ,s
00FFF69B 0C5080 bitb #$80 ; outer indexed?
00FFF69D 027005 beq dis15
00FFF69F 0C605D ldb #']'
00FFF6A1 017FFF66E lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
dis15:
00FFF6A4 0C602C ldb #','
00FFF6A6 017FFF669 lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF6A9 0E6E04 ldb ,s
00FFF6AB 08D1C7 bsr disNdxReg
00FFF6AD 017FFF662 lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF6B0 0C602D ldb #'-'
00FFF6B2 017FFF65D lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF6B5 017FFF65A lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF6B8 035004 puls b
00FFF6BA 0C5100 bitb #$100
00FFF6BC 127000183 lbeq disNextLine
00FFF6BF 0C5080 bitb #$80
00FFF6C1 12600017E lbne disNextLine
00FFF6C4 0C605D ldb #']'
00FFF6C6 017FFF649 lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF6C9 016000176 lbra disNextLine
disNotDOffs:
00FFF6CC 0C100C cmpb #12
00FFF6CE 026040 bne disNotPBO
00FFF6D0 0E6A00 ldb ,y+
00FFF6D2 01D sex
00FFF6D3 017FFED2B lbsr DispWordAsHex
*** warning 1: Long branch within short branch range could be optimized
00FFF6D6 0E6E04 ldb ,s
00FFF6D8 0C5080 bitb #$80 ; outer indexed?
00FFF6DA 027005 beq dis16
00FFF6DC 0C605D ldb #']'
00FFF6DE 017FFF631 lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
dis16:
00FFF6E1 0C602C ldb #','
00FFF6E3 017FFF62C lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF6E6 0E6E04 ldb ,s
00FFF6E8 08D18A bsr disNdxReg
00FFF6EA 0C6050 ldb #'P'
00FFF6EC 017FFF623 lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF6EF 0C6043 ldb #'C'
00FFF6F1 017FFF61E lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF6F4 0C602D ldb #'-'
00FFF6F6 017FFF619 lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF6F9 017FFF616 lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF6FC 035004 puls b
00FFF6FE 0C5100 bitb #$100
00FFF700 12700013F lbeq disNextLine
00FFF703 0C5080 bitb #$80
00FFF705 12600013A lbne disNextLine
00FFF708 0C605D ldb #']'
00FFF70A 017FFF605 lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF70D 016000132 lbra disNextLine
disNotPBO:
00FFF710 0C100D cmpb #13
00FFF712 02603F bne disNotPWO
00FFF714 0ECA01 ldd ,y++
00FFF716 017FFECE8 lbsr DispWordAsHex
*** warning 1: Long branch within short branch range could be optimized
00FFF719 0E6E04 ldb ,s
00FFF71B 0C5080 bitb #$80 ; outer indexed?
00FFF71D 027005 beq dis17
00FFF71F 0C605D ldb #']'
00FFF721 017FFF5EE lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
dis17:
00FFF724 0C602C ldb #','
00FFF726 017FFF5E9 lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF729 0E6E04 ldb ,s
00FFF72B 08D147 bsr disNdxReg
00FFF72D 0C6050 ldb #'P'
00FFF72F 017FFF5E0 lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF732 0C6043 ldb #'C'
00FFF734 017FFF5DB lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF737 0C602D ldb #'-'
00FFF739 017FFF5D6 lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF73C 017FFF5D3 lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF73F 035004 puls b
00FFF741 0C5100 bitb #$100
00FFF743 1270000FC lbeq disNextLine
00FFF746 0C5080 bitb #$80
00FFF748 1260000F7 lbne disNextLine
00FFF74B 0C605D ldb #']'
00FFF74D 017FFF5C2 lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF750 0160000EF lbra disNextLine
disNotPWO:
00FFF753 0C100E cmpb #14
00FFF755 026044 bne disNotPTO
00FFF757 0E6A00 ldb ,y+
00FFF759 017FFECAE lbsr DispByteAsHex
*** warning 1: Long branch within short branch range could be optimized
00FFF75C 0ECA01 ldd ,y++
00FFF75E 017FFECA0 lbsr DispWordAsHex
*** warning 1: Long branch within short branch range could be optimized
00FFF761 0E6E04 ldb ,s
00FFF763 0C5080 bitb #$80 ; outer indexed?
00FFF765 027005 beq dis18
00FFF767 0C605D ldb #']'
00FFF769 017FFF5A6 lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
dis18:
00FFF76C 0C602C ldb #','
00FFF76E 017FFF5A1 lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF771 0E6E04 ldb ,s
00FFF773 08D0FF bsr disNdxReg
00FFF775 0C6050 ldb #'P'
00FFF777 017FFF598 lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF77A 0C6043 ldb #'C'
00FFF77C 017FFF593 lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF77F 0C602D ldb #'-'
00FFF781 017FFF58E lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF784 017FFF58B lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF787 035004 puls b
00FFF789 0C5100 bitb #$100
00FFF78B 1270000B4 lbeq disNextLine
00FFF78E 0C5080 bitb #$80
00FFF790 1260000AF lbne disNextLine
00FFF793 0C605D ldb #']'
00FFF795 017FFF57A lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF798 0160000A7 lbra disNextLine
disNotPTO:
00FFF79B 0C605B ldb #'['
00FFF79D 017FFF572 lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF7A0 0ECA01 ldd ,y++
00FFF7A2 017FFEC5C lbsr DispWordAsHex
*** warning 1: Long branch within short branch range could be optimized
00FFF7A5 0C605D ldb #']'
00FFF7A7 017FFF568 lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF7AA 016000095 lbra disNextLine
disNotNdx:
00FFF7AD 0C1006 cmpb #EXT
00FFF7AF 026013 bne disNotExt
00FFF7B1 00D15F tst farflag
00FFF7B3 027005 beq dis30
00FFF7B5 0E6A01 ldb ,y++
00FFF7B7 017FFEC50 lbsr DispByteAsHex
*** warning 1: Long branch within short branch range could be optimized
dis30:
00FFF7BA 0ECA01 ldd ,y++
00FFF7BC 017FFEC42 lbsr DispWordAsHex
*** warning 1: Long branch within short branch range could be optimized
00FFF7BF 00F15F clr farflag
00FFF7C1 01600007E lbra disNextLine
disNotExt:
00FFF7C4 0C1003 cmpb #IMMB
00FFF7C6 02600D bne disNotIMMB
00FFF7C8 0C6023 ldb #'#'
00FFF7CA 017FFF545 lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF7CD 0E6A00 ldb ,y+
00FFF7CF 017FFEC38 lbsr DispByteAsHex
*** warning 1: Long branch within short branch range could be optimized
00FFF7D2 01600006D lbra disNextLine
disNotIMMB:
00FFF7D5 0C1007 cmpb #IMMW
00FFF7D7 02600C bne disNotIMMW
00FFF7D9 0C6023 ldb #'#'
00FFF7DB 017FFF534 lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF7DE 0ECA01 ldd ,y++
00FFF7E0 017FFEC1E lbsr DispWordAsHex
*** warning 1: Long branch within short branch range could be optimized
00FFF7E3 02005D bra disNextLine
disNotIMMW:
00FFF7E5 0C1009 cmpb #TFREXG
00FFF7E7 026006 bne disNotTfr
00FFF7E9 0E6A00 ldb ,y+
00FFF7EB 08D0B8 bsr disTfrExg
00FFF7ED 020053 bra disNextLine
disNotTfr:
dis1:
00FFF7EF 0C1121 cmpb #$121
00FFF7F1 025028 blo dis19
00FFF7F3 0C112F cmpb #$12F
00FFF7F5 022024 bhi dis19
00FFF7F7 0C40FF andb #$FF
00FFF7F9 08EFFF2B4 ldx #distbl2
00FFF7FC 058 aslb
00FFF7FD 058 aslb
00FFF7FE 03A abx
00FFF7FF 0E6800 ldb ,x+
00FFF801 017FFF50E lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF804 0E6800 ldb ,x+
00FFF806 017FFF509 lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF809 0E6800 ldb ,x+
00FFF80B 017FFF504 lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF80E 0E6800 ldb ,x+
00FFF810 017FFF4FF lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF813 0C6020 ldb #' '
00FFF815 017FFF4FA lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF818 016FFFBF4 lbra dis21
*** warning 1: Long branch within short branch range could be optimized
dis19:
00FFF81B 08E000000 ldx #0
dis24:
00FFF81E 0E180A000FFF2F4 cmpb distbl3,x
00FFF823 026006 bne dis25
00FFF825 08EFFF314 ldx #distbl4
00FFF828 016FFFBB2 lbra dis23
*** warning 1: Long branch within short branch range could be optimized
dis25:
00FFF82B 030001 inx
00FFF82D 08C00001F cmpx #31
00FFF830 025FEC blo dis24
00FFF832 0C603F ldb #'?'
00FFF834 017FFF4DB lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF837 017FFF4D8 lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF83A 017FFF4D5 lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF83D 017FFF4D2 lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF840 020000 bra disNextLine
disNextLine:
00FFF842 00F15F clr farflag
00FFF844 017FFD88B lbsr CRLF
*** warning 1: Long branch within short branch range could be optimized
00FFF847 1BC000926 cmpy mon_r2+2
00FFF84A 125FFFB72 lblo disLoop1
*** warning 1: Long branch within short branch range could be optimized
00FFF84D 0160000DE lbra Monitor
disNdxRegs:
00FFF850 058059053055 fcb 'X','Y','S','U'
disTfrRegs:
00FFF854 044020058020059020055 fcb "D X Y U S PC A B CCDP "
00FFF85B 020053020050043020020
00FFF862 020020041020042020043
00FFF869 043044050020020020020
00FFF870 020020020020
disNdxReg:
00FFF874 0C4600 andb #$600
00FFF876 059 rolb
00FFF877 059 rolb
00FFF878 059 rolb
00FFF879 059 rolb
00FFF87A 04F clra
00FFF87B 034040 pshs u
00FFF87D 01F003 tfr d,u
00FFF87F 0A6C0A000FFF850 lda disNdxRegs,u
00FFF884 035040 puls u
00FFF886 01E089 exg a,b
00FFF888 039 rts
disTfrReg:
00FFF889 034014 pshs b,x
00FFF88B 08EFFF854 ldx #disTfrRegs
00FFF88E 058 aslb
00FFF88F 0A6815 lda b,x
00FFF891 01E089 exg a,b
00FFF893 017FFF47C lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF896 01E089 exg a,b
00FFF898 030001 inx
00FFF89A 0E688D ldb b,x
00FFF89C 0C1020 cmpb #' '
00FFF89E 027003 beq disTfr1
00FFF8A0 017FFF46F lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
disTfr1:
00FFF8A3 035094 puls b,x,pc
disTfrExg:
00FFF8A5 034004 pshs b
00FFF8A7 059 rolb
00FFF8A8 059 rolb
00FFF8A9 059 rolb
00FFF8AA 059 rolb
00FFF8AB 0C400F andb #15
00FFF8AD 08DFDA bsr disTfrReg
00FFF8AF 0C602C ldb #','
00FFF8B1 017FFF45E lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF8B4 0E6E04 ldb ,s
00FFF8B6 0C400F andb #15
00FFF8B8 08DFCF bsr disTfrReg
00FFF8BA 035084 puls b,pc
ASMO:
00FFF8BC 034006 pshs d
00FFF8BE 0CCFFF8D0 ldd #ASMOUTCH
00FFF8C1 0FD000800 std CharOutVec
00FFF8C4 035086 puls d,pc
ASMOO:
00FFF8C6 034006 pshs d
00FFF8C8 0CCFFE2F5 ldd #DisplayChar
00FFF8CB 0FD000800 std CharOutVec
00FFF8CE 035086 puls d,pc
ASMOUTCH:
00FFF8D0 0E7C00 stb ,u+
00FFF8D2 039 rts
DumpAsmbuf:
00FFF8D3 0CE000160 ldu #asmbuf
dab2:
00FFF8D6 0E6C00 ldb ,u+
00FFF8D8 027005 beq dab1
00FFF8DA 017FFF435 lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF8DD 020FF7 bra dab2
dab1:
00FFF8DF 039 rts
;==============================================================================
; System Monitor
;==============================================================================
CmdPrompt:
00FFF8E0 017FFD7EF lbsr CRLF
00FFEE30 017FFE29F lbsr CRLF
*** warning 1: Long branch within short branch range could be optimized
00FFF8E3 0C6024 ldb #'$'
00FFF8E5 017FFF42A lbsr OUTCH
00FFEE33 0C6024 ldb #'$'
00FFEE35 017FFFEDA lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFF8E8 016FFF427 lbra OUTCH
00FFEE38 016FFFED7 lbra OUTCH
*** warning 1: Long branch within short branch range could be optimized
msgF09Starting:
00FFF8EB 04606506D07406906B069 fcb "Femtiki F09 Multi-core OS Starting",CR,LF,0
00FFF8F2 02004603003902004D075
00FFF8F9 06C07406902D06306F072
00FFF900 06502004F053020053074
00FFF907 06107207406906E06700D
00FFF90E 00A000
00FFEE3B 04606506D07406906B069 fcb "Femtiki F09 Multi-core OS Starting",CR,LF,0
00FFEE42 02004603003902004D075
00FFEE49 06C07406902D06306F072
00FFEE50 06502004F053020053074
00FFEE57 06107207406906E06700D
00FFEE5E 00A000
MonitorStart:
00FFF910 0CCFFF8EB ldd #msgF09Starting
00FFF913 017FFEAA0 lbsr DisplayString
00FFEE60 07F000810 clr BreakpointFlag
00FFEE63 07F000811 clr NumSetBreakpoints
00FFEE66 0CC00007B ldd #123
00FFEE69 08E00028E ldx #654
00FFEE6C 017FFFF31 lbsr mon_srand
*** warning 1: Long branch within short branch range could be optimized
00FFF916 0CCFFFB0E ldd #HelpMsg
00FFF919 017FFEA9A lbsr DisplayString
00FFEE6F 0CCFFEE3B ldd #msgF09Starting
00FFEE72 017FFF54A lbsr DisplayString
*** warning 1: Long branch within short branch range could be optimized
00FFF91C 0CCFFF8E0 ldd #CmdPrompt
00FFF91F 0FD000808 std CmdPromptJI
00FFF922 0CCFFFAF5 ldd #DisplayErr
00FFF925 0FD00080C std MonErrVec
00FFF928 0CC0063FF ldd #$63FF ; default app stack
00FFF92B 0FD000908 std mon_SSAVE
00FFEE75 0CCFFF06E ldd #HelpMsg
00FFEE78 017FFF544 lbsr DisplayString
*** warning 1: Long branch within short branch range could be optimized
00FFEE7B 0CCFFEE30 ldd #CmdPrompt
00FFEE7E 0FD000808 std CmdPromptJI
00FFEE81 0CCFFF055 ldd #DisplayErr
00FFEE84 0FD00080C std MonErrVec
00FFEE87 0CC0063FF ldd #$63FF ; default app stack
00FFEE8A 0FD000908 std mon_SSAVE
00FFEE8D 07F00090E clr mon_DPRSAVE ;
00FFEE90 01F0A8 tfr ccr,a
00FFEE92 0B700090F sta mon_CCRSAVE
00FFEE95 07F00090A clr mon_PCSAVE
00FFEE98 0CCFFEEA7 ldd #Monitor
00FFEE9B 0FD00090B std mon_PCSAVE+1
00FFEE9E 07F000902 clr mon_XSAVE
00FFEEA1 07F000904 clr mon_YSAVE
00FFEEA4 07F000906 clr mon_USAVE
Monitor:
00FFF92E 03280F006FFF leas $6FFF ; reset stack pointer
00FFF932 05F clrb ; turn off keyboard echo
00FFF933 017FFF3E0 lbsr SetKeyboardEcho
00FFEEA7 03280F006FFF leas $6FFF ; reset stack pointer
00FFEEAB 05F clrb ; turn off keyboard echo
00FFEEAC 017FFFE67 lbsr SetKeyboardEcho
*** warning 1: Long branch within short branch range could be optimized
; Reset IO vectors
00FFF936 0CCFFEBE4 ldd #SerialPeekCharDirect
00FFF939 0FD000804 std CharInVec
00FFF93C 0CCFFE2F5 ldd #DisplayChar
00FFF93F 0FD000800 std CharOutVec
00FFF942 0CCFFF8E0 ldd #CmdPrompt
00FFF945 0FD000808 std CmdPromptJI
00FFEEAF 0CCFFEBE4 ldd #SerialPeekCharDirect
00FFEEB2 0FD000804 std CharInVec
00FFEEB5 0CCFFE2FE ldd #DisplayChar
00FFEEB8 0FD000800 std CharOutVec
00FFEEBB 0CCFFEE30 ldd #CmdPrompt
00FFEEBE 0FD000808 std CmdPromptJI
; jsr RequestIOFocus
PromptLn:
00FFF948 0AD90F000808 jsr [CmdPromptJI]
00FFEEC1 0AD90F000808 jsr [CmdPromptJI]
; Get characters until a CR is keyed
Prompt3:
00FFF94C 0CCFFFFFF ldd #-1 ; block until key present
00FFF94F 017FFF388 lbsr INCH
00FFEEC5 0CCFFFFFF ldd #-1 ; block until key present
00FFEEC8 017FFFE0F lbsr INCH
*** warning 1: Long branch within short branch range could be optimized
00FFF952 0C100D cmpb #CR
00FFF954 027005 beq Prompt1
00FFF956 017FFF3B9 lbsr OUTCH
00FFEECB 0C100D cmpb #CR ; carriage return?
00FFEECD 027005 beq Prompt1
00FFEECF 017FFFE40 lbsr OUTCH ; spit out the character
*** warning 1: Long branch within short branch range could be optimized
00FFF959 020FF1 bra Prompt3
00FFEED2 020FF1 bra Prompt3 ; and keep going
; Process the screen line that the CR was keyed on
;
Prompt1:
00FFF95B 0CC005050 ldd #$5050
00FFF95E 0150FDFFFE60001 std LEDS
00FFEED4 0CC005050 ldd #$5050
00FFEED7 0150FDFFFE60001 std LEDS
; ldb RunningID
; cmpb #61
; bhi Prompt3
00FFF963 0CC005151 ldd #$5151
00FFF966 0150FDFFFE60001 std LEDS
00FFF96B 00F111 clr CursorCol ; go back to the start of the line
00FFF96D 017FFE962 lbsr CalcScreenLoc ; calc screen memory location
00FFEEDC 00F111 clr CursorCol ; go back to the start of the line
00FFEEDE 017FFF3FA lbsr CalcScreenLoc ; calc screen memory location
*** warning 1: Long branch within short branch range could be optimized
00FFF970 01F002 tfr d,y
00FFF972 0CC005252 ldd #$5252
00FFF975 0150FDFFFE60001 std LEDS
00FFEEE1 01F002 tfr d,y
skipDollar:
00FFF97A 08D0B9 bsr MonGetNonSpace
00FFF97C 0C1024 cmpb #'$'
00FFF97E 027FFA beq skipDollar ; skip over '$' prompt character
00FFF980 086353 lda #$5353
00FFF982 0150FDFFFE60001 std LEDS
00FFEEE3 08D067 bsr MonGetNonSpace
00FFEEE5 0C1024 cmpb #'$'
00FFEEE7 027FFA beq skipDollar ; skip over '$' prompt character
; Dispatch based on command character
; Dispatch based on command
;
Prompt2:
00FFF987 0C103C cmpb #'<'
00FFF989 02602C bne PromptHelp
00FFF98B 08D0A3 bsr MonGetch
00FFF98D 0C103E cmpb #'>'
00FFF98F 026F9D bne Monitor
00FFF991 08D09D bsr MonGetch
00FFF993 0C1073 cmpb #'s'
00FFF995 02600E bne Prompt2a
00FFF997 0CCFFEBE4 ldd #SerialPeekCharDirect
00FFF99A 0FD000804 std CharInVec
00FFF99D 0CCFFEC08 ldd #SerialPutChar
00FFF9A0 0FD000800 std CharOutVec
00FFF9A3 020F89 bra Monitor
00FFEEE9 0313FF dey
00FFEEEB 01F023 tfr y,u ; save off input position
00FFEEED 05F clrb
00FFEEEE 08EFFEDE3 ldx #cmdTable1
parseCmd1:
00FFEEF1 0A6A00 lda ,y+ ; get input character
00FFEEF3 06D804 tst ,x ; test for end of command
00FFEEF5 02B00F bmi endOfWord ;
00FFEEF7 0A1800 cmpa ,x+ ; does input match command?
00FFEEF9 027FF6 beq parseCmd1
scanNextWord:
00FFEEFB 06D800 tst ,x+
00FFEEFD 027FA8 beq Monitor ; if end of table reached, not a command
00FFEEFF 02AFFA bpl scanNextWord
00FFEF01 05C incb
00FFEF02 01F032 tfr u,y ; reset input pointer
00FFEF04 020FEB bra parseCmd1 ; try again
endOfWord:
00FFEF06 0A8804 eora ,x
00FFEF08 048 asla
00FFEF09 026FF0 bne scanNextWord
; we found the command in the table
00FFEF0B 058 aslb ; b = word index
00FFEF0C 08EFFEE0E ldx #cmdTable2
00FFEF0F 06E905 jmp [b,x] ; execute command
Redirect:
00FFEF11 08D034 bsr MonGetch
00FFEF13 0C1073 cmpb #'s'
00FFEF15 02600E bne Prompt2a
00FFEF17 0CCFFEBE4 ldd #SerialPeekCharDirect
00FFEF1A 0FD000804 std CharInVec
00FFEF1D 0CCFFEC08 ldd #SerialPutChar
00FFEF20 0FD000800 std CharOutVec
00FFEF23 020F82 bra Monitor
Prompt2a:
00FFF9A5 0C1063 cmpb #'c'
00FFF9A7 026F85 bne Monitor
00FFF9A9 0CCFFEA12 ldd #GetKey
00FFF9AC 0FD000804 std CharInVec
00FFF9AF 0CCFFE2F5 ldd #DisplayChar
00FFF9B2 0FD000800 std CharOutVec
00FFF9B5 020F77 bra Monitor
00FFEF25 0C1063 cmpb #'c'
00FFEF27 026F7E bne Monitor
00FFEF29 0CCFFEA12 ldd #GetKey
00FFEF2C 0FD000804 std CharInVec
00FFEF2F 0CCFFE2FE ldd #DisplayChar
00FFEF32 0FD000800 std CharOutVec
00FFEF35 020F70 bra Monitor
PromptHelp:
00FFF9B7 0C103F cmpb #'?' ; $? - display help
00FFF9B9 026008 bne PromptC
00FFF9BB 0CCFFFB0E ldd #HelpMsg
00FFF9BE 017FFE9F5 lbsr DisplayString
00FFEF37 0CCFFF06E ldd #HelpMsg
00FFEF3A 017FFF482 lbsr DisplayString
*** warning 1: Long branch within short branch range could be optimized
00FFF9C1 020F6B bra Monitor
PromptC:
00FFF9C3 0C1043 cmpb #'C'
00FFF9C5 026008 bne PromptD
00FFF9C7 017FFE85B lbsr ClearScreen
00FFEF3D 020F68 bra Monitor
PromptClearscreen:
00FFEF3F 017FFF2EC lbsr ClearScreen
*** warning 1: Long branch within short branch range could be optimized
00FFF9CA 017FFE8CB lbsr HomeCursor
00FFEF42 017FFF35C lbsr HomeCursor
*** warning 1: Long branch within short branch range could be optimized
00FFF9CD 020F5F bra Monitor
PromptD:
00FFF9CF 0C1044 cmpb #'D'
00FFF9D1 026008 bne PromptColon
00FFF9D3 08D05B bsr MonGetch
00FFF9D5 0C1052 cmpb #'R'
00FFF9D7 02626F bne DumpMemory
00FFF9D9 020309 bra DumpRegs
PromptColon:
00FFF9DB 0C103A cmpb #':'
00FFF9DD 026003 bne PromptF
00FFF9DF 0160002C2 lbra EditMemory
PromptF:
00FFF9E2 0C1046 cmpb #'F'
00FFF9E4 026016 bne PromptJ
00FFF9E6 08D048 bsr MonGetch
00FFF9E8 0C1049 cmpb #'I'
00FFF9EA 026009 bne PromptFL
00FFF9EC 08D042 bsr MonGetch
00FFF9EE 0C1047 cmpb #'G'
00FFF9F0 026F3C bne Monitor
00FFF9F2 07EFE0000 jmp $FE0000
PromptFL:
00FFF9F5 0C104C cmpb #'L'
00FFF9F7 026F35 bne Monitor
00FFF9F9 0160003A9 lbra DumpIOFocusList
PromptJ:
00FFF9FC 0C104A cmpb #'J'
00FFF9FE 12700032E lbeq jump_to_code
PromptR:
00FFFA01 0C1052 cmpb #'R'
00FFFA03 026006 bne Prompt_s
00FFFA05 0CEFFF92E ldu #Monitor
00FFFA08 016FFD9F5 lbra ramtest
*** warning 1: Long branch within short branch range could be optimized
Prompt_s:
00FFFA0B 0C1073 cmpb #'s'
00FFFA0D 026005 bne PromptT
00FFFA0F 017FFF293 lbsr SerialOutputTest
*** warning 1: Long branch within short branch range could be optimized
00FFFA12 020F1A bra Monitor
PromptT:
00FFFA14 0C1054 cmpb #'T'
00FFFA16 026011 bne PromptU
00FFFA18 08D016 bsr MonGetch
00FFFA1A 0C1049 cmpb #'I'
00FFFA1C 026F10 bne Monitor
00FFFA1E 08D010 bsr MonGetch
00FFFA20 0C1052 cmpb #'R'
00FFFA22 026F0A bne Monitor
00FFFA24 017FFEAA0 lbsr rtc_read
*** warning 1: Long branch within short branch range could be optimized
00FFFA27 020F05 bra Monitor
PromptU:
00FFFA29 0C1055 cmpb #'U'
00FFFA2B 026F01 bne Monitor
00FFFA2D 016FFF984 lbra disassem
*** warning 1: Long branch within short branch range could be optimized
00FFEF45 020F60 bra Monitor
MonGetch:
00FFFA30 0E6A04 ldb ,y
00FFFA32 031201 iny
00FFFA34 039 rts
00FFEF47 0E6A04 ldb ,y
00FFEF49 031201 iny
00FFEF4B 039 rts
MonGetNonSpace:
00FFFA35 08DFF9 bsr MonGetCh
00FFFA37 0C1020 cmpb #' '
00FFFA39 027FFA beq MonGetNonSpace
00FFFA3B 039 rts
00FFEF4C 08DFF9 bsr MonGetCh
00FFEF4E 0C1020 cmpb #' '
00FFEF50 027FFA beq MonGetNonSpace
00FFEF52 039 rts
;------------------------------------------------------------------------------
; Ignore blanks in the input
4162,52 → 3157,82
;
ignBlanks:
ignBlanks1:
00FFFA3C 08DFF2 bsr MonGetch
00FFFA3E 0C1020 cmpb #' '
00FFFA40 027FFA beq ignBlanks1
00FFFA42 0313FF dey
00FFFA44 039 rts
00FFEF53 08DFF2 bsr MonGetch
00FFEF55 0C1020 cmpb #' '
00FFEF57 027FFA beq ignBlanks1
00FFEF59 0313FF dey
00FFEF5B 039 rts
;------------------------------------------------------------------------------
; Multiply number in work area by 10.
;------------------------------------------------------------------------------
Times10:
00FFEF5C 0FC000910 ldd mon_numwka ; make a copy of the number
00FFEF5F 0FD000918 std mon_numwka+8
00FFEF62 0FC000912 ldd mon_numwka+2
00FFEF65 0FD00091A std mon_numwka+10
00FFEF68 078000913 asl mon_numwka+3 ; shift left = *2
00FFEF6B 079000912 rol mon_numwka+2
00FFEF6E 079000911 rol mon_numwka+1
00FFEF71 079000910 rol mon_numwka+0
00FFEF74 078000913 asl mon_numwka+3 ; shift left = *4
00FFEF77 079000912 rol mon_numwka+2
00FFEF7A 079000911 rol mon_numwka+1
00FFEF7D 079000910 rol mon_numwka+0
00FFEF80 0FC000912 ldd mon_numwka+2 ; add in original value
00FFEF83 0F300091A addd mon_numwka+10 ; = *5
00FFEF86 0F6000911 ldb mon_numwka+1
00FFEF89 0F9000919 adcb mon_numwka+9
00FFEF8C 0F7000911 stb mon_numwka+1
00FFEF8F 0B6000910 lda mon_numwka+0
00FFEF92 0B9000918 adca mon_numwka+8
00FFEF95 0B7000910 sta mon_numwka+0
00FFEF98 078000913 asl mon_numwka+3 ; shift left = * 10
00FFEF9B 079000912 rol mon_numwka+2
00FFEF9E 079000911 rol mon_numwka+1
00FFEFA1 079000910 rol mon_numwka+0
00FFEFA4 039 rts
;------------------------------------------------------------------------------
;------------------------------------------------------------------------------
GetTwoParams:
00FFFA45 08DFF5 bsr ignBlanks
00FFFA47 08D046 bsr GetHexNumber ; get start address of dump
00FFFA49 0FC000910 ldd mon_numwka
00FFFA4C 0FD000920 std mon_r1
00FFFA4F 0FC000912 ldd mon_numwka+2
00FFFA52 0FD000922 std mon_r1+2
00FFFA55 08DFE5 bsr ignBlanks
00FFFA57 08D036 bsr GetHexNumber ; get end address of dump
00FFFA59 0FC000910 ldd mon_numwka
00FFFA5C 0FD000924 std mon_r2
00FFFA5F 0FC000912 ldd mon_numwka+2
00FFFA62 0FD000926 std mon_r2+2
00FFFA65 039 rts
00FFEFA5 08DFAC bsr ignBlanks
00FFEFA7 08D046 bsr GetHexNumber ; get start address of dump
00FFEFA9 0FC000910 ldd mon_numwka
00FFEFAC 0FD000920 std mon_r1
00FFEFAF 0FC000912 ldd mon_numwka+2
00FFEFB2 0FD000922 std mon_r1+2
00FFEFB5 08DF9C bsr ignBlanks
00FFEFB7 08D036 bsr GetHexNumber ; get end address of dump
00FFEFB9 0FC000910 ldd mon_numwka
00FFEFBC 0FD000924 std mon_r2
00FFEFBF 0FC000912 ldd mon_numwka+2
00FFEFC2 0FD000926 std mon_r2+2
00FFEFC5 039 rts
;------------------------------------------------------------------------------
; Get a range, the end must be greater or equal to the start.
;------------------------------------------------------------------------------
GetRange:
00FFFA66 08DFDD bsr GetTwoParams
00FFFA68 0FC000926 ldd mon_r2+2
00FFFA6B 0B3000922 subd mon_r1+2
00FFFA6E 0FC000924 ldd mon_r2
00FFFA71 0F2000921 sbcb mon_r1+1
00FFFA74 0B2000920 sbca mon_r1
00FFFA77 124000007 lbcc grng1
00FFFA7A 0AD90F00080C jsr [MonErrVec]
00FFFA7E 016FFFEAD lbra Monitor
00FFEFC6 08DFDD bsr GetTwoParams
00FFEFC8 0FC000926 ldd mon_r2+2
00FFEFCB 0B3000922 subd mon_r1+2
00FFEFCE 0FC000924 ldd mon_r2
00FFEFD1 0F2000921 sbcb mon_r1+1
00FFEFD4 0B2000920 sbca mon_r1
00FFEFD7 124000007 lbcc grng1
00FFEFDA 0AD90F00080C jsr [MonErrVec]
00FFEFDE 016FFFEC6 lbra Monitor
*** warning 1: Long branch within short branch range could be optimized
grng1:
00FFFA81 039 rts
00FFEFE1 039 rts
shl_numwka:
00FFFA82 078000913 asl mon_numwka+3
00FFFA85 079000912 rol mon_numwka+2
00FFFA88 079000911 rol mon_numwka+1
00FFFA8B 079000910 rol mon_numwka
00FFFA8E 039 rts
00FFEFE2 078000913 asl mon_numwka+3
00FFEFE5 079000912 rol mon_numwka+2
00FFEFE8 079000911 rol mon_numwka+1
00FFEFEB 079000910 rol mon_numwka
00FFEFEE 039 rts
;------------------------------------------------------------------------------
; Get a hexidecimal number. Maximum of twelve digits.
4219,29 → 3244,29
;------------------------------------------------------------------------------
;
GetHexNumber:
00FFFA8F 04F05F clrd
00FFFA91 0FD000910 std mon_numwka ; zero out work area
00FFFA94 0FD000912 std mon_numwka+2
00FFFA97 034010 pshs x
00FFFA99 08E000000 ldx #0 ; max 12 eight digits
00FFEFEF 04F05F clrd
00FFEFF1 0FD000910 std mon_numwka ; zero out work area
00FFEFF4 0FD000912 std mon_numwka+2
00FFEFF7 034010 pshs x
00FFEFF9 08E000000 ldx #0 ; max 12 eight digits
gthxn2:
00FFFA9C 08DF92 bsr MonGetch
00FFFA9E 08D01F bsr AsciiToHexNybble
00FFFAA0 0C1FFF cmpb #-1
00FFFAA2 027017 beq gthxn1
00FFFAA4 08DFDC bsr shl_numwka
00FFFAA6 08DFDA bsr shl_numwka
00FFFAA8 08DFD8 bsr shl_numwka
00FFFAAA 08DFD6 bsr shl_numwka
00FFFAAC 0C400F andb #$0f
00FFFAAE 0FA000913 orb mon_numwka+3
00FFFAB1 0F7000913 stb mon_numwka+3
00FFFAB4 030001 inx
00FFFAB6 08C00000C cmpx #12
00FFFAB9 025FE1 blo gthxn2
00FFEFFC 08DF49 bsr MonGetch
00FFEFFE 08D01F bsr AsciiToHexNybble
00FFF000 0C1FFF cmpb #-1
00FFF002 027017 beq gthxn1
00FFF004 08DFDC bsr shl_numwka
00FFF006 08DFDA bsr shl_numwka
00FFF008 08DFD8 bsr shl_numwka
00FFF00A 08DFD6 bsr shl_numwka
00FFF00C 0C400F andb #$0f
00FFF00E 0FA000913 orb mon_numwka+3
00FFF011 0F7000913 stb mon_numwka+3
00FFF014 030001 inx
00FFF016 08C00000C cmpx #12
00FFF019 025FE1 blo gthxn2
gthxn1:
00FFFABB 01F010 tfr x,d
00FFFABD 035090 puls x,pc
00FFF01B 01F010 tfr x,d
00FFF01D 035090 puls x,pc
;GetDecNumber:
; phx
4272,135 → 3297,150
;------------------------------------------------------------------------------
;
AsciiToHexNybble:
00FFFABF 0C1030 cmpb #'0'
00FFFAC1 025021 blo gthx3
00FFFAC3 0C1039 cmpb #'9'
00FFFAC5 022003 bhi gthx5
00FFFAC7 0C0030 subb #'0'
00FFFAC9 039 rts
00FFF01F 0C1030 cmpb #'0'
00FFF021 025021 blo gthx3
00FFF023 0C1039 cmpb #'9'
00FFF025 022003 bhi gthx5
00FFF027 0C0030 subb #'0'
00FFF029 039 rts
gthx5:
00FFFACA 0C1041 cmpb #'A'
00FFFACC 025016 blo gthx3
00FFFACE 0C1046 cmpb #'F'
00FFFAD0 022005 bhi gthx6
00FFFAD2 0C0041 subb #'A'
00FFFAD4 0CB00A addb #10
00FFFAD6 039 rts
00FFF02A 0C1041 cmpb #'A'
00FFF02C 025016 blo gthx3
00FFF02E 0C1046 cmpb #'F'
00FFF030 022005 bhi gthx6
00FFF032 0C0041 subb #'A'
00FFF034 0CB00A addb #10
00FFF036 039 rts
gthx6:
00FFFAD7 0C1061 cmpb #'a'
00FFFAD9 025009 blo gthx3
00FFFADB 0C107A cmpb #'z'
00FFFADD 022005 bhi gthx3
00FFFADF 0C0061 subb #'a'
00FFFAE1 0CB00A addb #10
00FFFAE3 039 rts
00FFF037 0C1061 cmpb #'a'
00FFF039 025009 blo gthx3
00FFF03B 0C107A cmpb #'z'
00FFF03D 022005 bhi gthx3
00FFF03F 0C0061 subb #'a'
00FFF041 0CB00A addb #10
00FFF043 039 rts
gthx3:
00FFFAE4 0C6FFF ldb #-1 ; not a hex number
00FFFAE6 039 rts
00FFF044 0C6FFF ldb #-1 ; not a hex number
00FFF046 039 rts
AsciiToDecNybble:
00FFFAE7 0C1030 cmpb #'0'
00FFFAE9 024007 bcc gtdc3
00FFFAEB 0C103A cmpb #'9'+1
00FFFAED 025003 bcs gtdc3
00FFFAEF 0C0030 subb #'0'
00FFFAF1 039 rts
00FFF047 0C1030 cmpb #'0'
00FFF049 024007 bcc gtdc3
00FFF04B 0C103A cmpb #'9'+1
00FFF04D 025003 bcs gtdc3
00FFF04F 0C0030 subb #'0'
00FFF051 039 rts
gtdc3:
00FFFAF2 0C6FFF ldb #-1
00FFFAF4 039 rts
00FFF052 0C6FFF ldb #-1
00FFF054 039 rts
DisplayErr:
00FFFAF5 0CCFFFB06 ldd #msgErr
00FFFAF8 017FFE8BB lbsr DisplayString
00FFF055 0CCFFF066 ldd #msgErr
00FFF058 017FFF364 lbsr DisplayString
*** warning 1: Long branch within short branch range could be optimized
00FFFAFB 07EFFF92E jmp Monitor
00FFF05B 07EFFEEA7 jmp Monitor
DisplayStringDX
00FFFAFE 0DD024 std Strptr
00FFFB00 09F026 stx Strptr+2
00FFFB02 0BDFFE3B6 jsr DisplayString
00FFFB05 039 rts
00FFF05E 0DD024 std Strptr
00FFF060 09F026 stx Strptr+2
00FFF062 0BDFFE3BF jsr DisplayString
00FFF065 039 rts
msgErr:
00FFFB06 02A02A04507207200D00A fcb "**Err",CR,LF,0
00FFFB0D 000
00FFF066 02A02A04507207200D00A fcb "**Err",CR,LF,0
00FFF06D 000
HelpMsg:
00FFFB0E 03F02003D020044069073 fcb "? = Display help",CR,LF
00FFFB15 07006C061079020068065
00FFFB1C 06C07000D00A
00FFFB20 04304C05302003D020063 fcb "CLS = clear screen",CR,LF
00FFFB27 06C065061072020073063
00FFFB2E 07206506506E00D00A
00FFF06E 03F02003D020044069073 fcb "? = Display help",CR,LF
00FFF075 07006C061079020068065
00FFF07C 06C07000D00A
00FFF080 04304C05302003D020063 fcb "CLS = clear screen",CR,LF
00FFF087 06C065061072020073063
00FFF08E 07206506506E00D00A
00FFF094 06207302003D020073065 fcb "bs = set breakpoint",CR,LF
00FFF09B 07402006207206506106B
00FFF0A2 07006F06906E07400D00A
00FFF0A9 06206302003D02006306C fcb "bc = clear breakpoint",CR,LF
00FFF0B0 065061072020062072065
00FFF0B7 06106B07006F06906E074
00FFF0BE 00D00A
; db "S = Boot from SD Card",CR,LF
00FFFB34 03A02003D020045064069 fcb ": = Edit memory bytes",CR,LF
00FFFB3B 07402006D06506D06F072
00FFFB42 079020062079074065073
00FFFB49 00D00A
00FFF0C0 03A02003D020045064069 fcb ": = Edit memory bytes",CR,LF
00FFF0C7 07402006D06506D06F072
00FFF0CE 079020062079074065073
00FFF0D5 00D00A
; db "L = Load sector",CR,LF
; db "W = Write sector",CR,LF
00FFFB4B 04405202003D020044075 fcb "DR = Dump registers",CR,LF
00FFFB52 06D070020072065067069
00FFFB59 07307406507207300D00A
00FFFB60 04402003D02004407506D fcb "D = Dump memory",CR,LF
00FFFB67 07002006D06506D06F072
00FFFB6E 07900D00A
; db "F = Fill memory",CR,LF
00FFFB71 04604C02003D020044075 fcb "FL = Dump I/O Focus List",CR,LF
00FFFB78 06D07002004902F04F020
00FFFB7F 04606F06307507302004C
00FFFB86 06907307400D00A
00FFFB8B 04604904702003D020073 fcb "FIG = start FIG Forth",CR,LF
00FFFB92 074061072074020046049
00FFFB99 04702004606F072074068
00FFFBA0 00D00A
00FFF0D7 04405202003D020044075 fcb "DR = Dump registers",CR,LF
00FFF0DE 06D070020072065067069
00FFF0E5 07307406507207300D00A
00FFF0EC 04402003D02004407506D fcb "D = Dump memory",CR,LF
00FFF0F3 07002006D06506D06F072
00FFF0FA 07900D00A
00FFF0FD 04602003D02004606906C fcb "F = Fill memory",CR,LF
00FFF104 06C02006D06506D06F072
00FFF10B 07900D00A
00FFF10E 04604C02003D020044075 fcb "FL = Dump I/O Focus List",CR,LF
00FFF115 06D07002004902F04F020
00FFF11C 04606F06307507302004C
00FFF123 06907307400D00A
00FFF128 04604904702003D020073 fcb "FIG = start FIG Forth",CR,LF
00FFF12F 074061072074020046049
00FFF136 04702004606F072074068
00FFF13D 00D00A
; db "KILL n = kill task #n",CR,LF
; db "B = start tiny basic",CR,LF
; db "b = start EhBasic 6502",CR,LF
00FFFBA2 04A02003D02004A07506D fcb "J = Jump to code",CR,LF
00FFFBA9 07002007406F02006306F
00FFFBB0 06406500D00A
00FFFBB4 05204104D02003D020074 fcb "RAM = test RAM",CR,LF
00FFFBBB 06507307402005204104D
00FFFBC2 00D00A
00FFF13F 04A02003D02004A07506D fcb "J = Jump to code",CR,LF
00FFF146 07002007406F02006306F
00FFF14D 06406500D00A
00FFF151 05204104D02003D020074 fcb "RAM = test RAM",CR,LF
00FFF158 06507307402005204104D
00FFF15F 00D00A
; db "R[n] = Set register value",CR,LF
; db "r = random lines - test bitmap",CR,LF
; db "e = ethernet test",CR,LF
00FFFBC4 07302003D020073065072 fcb "s = serial output test",CR,LF
00FFFBCB 06906106C02006F075074
00FFFBD2 070075074020074065073
00FFFBD9 07400D00A
00FFF161 07302003D020073065072 fcb "s = serial output test",CR,LF
00FFF168 06906106C02006F075074
00FFF16F 070075074020074065073
00FFF176 07400D00A
00FFF179 05305002003D020073070 fcb "SP = sprite demo",CR,LF
00FFF180 072069074065020064065
00FFF187 06D06F00D00A
; db "T = Dump task list",CR,LF
; db "TO = Dump timeout list",CR,LF
00FFFBDC 05404902003D020064069 fcb "TI = display date/time",CR,LF
00FFFBE3 07307006C061079020064
00FFFBEA 06107406502F07406906D
00FFFBF1 06500D00A
00FFF18B 05404902003D020064069 fcb "TI = display date/time",CR,LF
00FFF192 07307006C061079020064
00FFF199 06107406502F07406906D
00FFF1A0 06500D00A
; db "TEMP = display temperature",CR,LF
00FFFBF4 05502003D02007506E061 fcb "U = unassemble",CR,LF
00FFFBFB 07307306506D06206C065
00FFFC02 00D00A
; db "P = Piano",CR,LF,0
00FFFC04 000 fcb 0
00FFF1A3 05502003D02007506E061 fcb "U = unassemble",CR,LF
00FFF1AA 07307306506D06206C065
00FFF1B1 00D00A
; db "P = Piano",CR,LF
00FFF1B3 07802003D020065078069 fcb "x = exit monitor",CR,LF
00FFF1BA 07402006D06F06E069074
00FFF1C1 06F07200D00A
00FFF1C5 000 fcb 0
msgRegHeadings
00FFFC05 00D00A02002004402F041 fcb CR,LF," D/AB X Y U S PC DP CCR",CR,LF,0
00FFFC0C 042020020020020020058
00FFFC13 020020020020020020059
00FFFC1A 020020020020020020055
00FFFC21 020020020020020020053
00FFFC28 020020020020020020020
00FFFC2F 050043020020020020044
00FFFC36 05002002004304305200D
00FFFC3D 00A000
00FFF1C6 00D00A02002004402F041 fcb CR,LF," D/AB X Y U S PC DP CCR",CR,LF,0
00FFF1CD 042020020020020020058
00FFF1D4 020020020020020020059
00FFF1DB 020020020020020020055
00FFF1E2 020020020020020020053
00FFF1E9 020020020020020020020
00FFF1F0 050043020020020020044
00FFF1F7 05002002004304305200D
00FFF1FE 00A000
nHEX4:
00FFFC3F 0BDFFD2D2 jsr HEX4
00FFFC42 039 rts
00FFF200 0BDFFD2D2 jsr HEX4
00FFF203 039 rts
nXBLANK:
00FFFC43 0C6020 ldb #' '
00FFFC45 016FFF0CA lbra OUTCH
00FFF204 0C6020 ldb #' '
00FFF206 016FFFB09 lbra OUTCH
*** warning 1: Long branch within short branch range could be optimized
;------------------------------------------------------------------------------
4415,66 → 3455,66
;------------------------------------------------------------------------------
DumpMemory:
00FFFC48 08DE1C bsr GetRange
00FFFC4A 18E000000 ldy #0
00FFFC4D 1BE000922 ldy mon_r1+2
00FFF209 08DDBB bsr GetRange
00FFF20B 18E000000 ldy #0
00FFF20E 1BE000922 ldy mon_r1+2
dmpm2:
00FFFC50 017FFD47F lbsr CRLF
00FFF211 017FFDEBE lbsr CRLF
*** warning 1: Long branch within short branch range could be optimized
00FFFC53 0C603A ldb #':'
00FFFC55 017FFF0BA lbsr OUTCH
00FFF214 0C603A ldb #':'
00FFF216 017FFFAF9 lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFFC58 01F020 tfr y,d
00FFF219 01F020 tfr y,d
;addd mon_r1+2 ; output the address
00FFFC5A 017FFE7A4 lbsr DispWordAsHex
00FFF21B 017FFF1EC lbsr DispWordAsHex
*** warning 1: Long branch within short branch range could be optimized
00FFFC5D 0C6020 ldb #' '
00FFFC5F 017FFF0B0 lbsr OUTCH
00FFF21E 0C6020 ldb #' '
00FFF220 017FFFAEF lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFFC62 08E000008 ldx #8 ; number of bytes to display
00FFF223 08E000008 ldx #8 ; number of bytes to display
dmpm1:
; ldb far [mon_r1+1],y
;ldb [mon_r1+2],y
00FFFC65 0E6A04 ldb ,y
00FFFC67 031201 iny
00FFFC69 017FFE79E lbsr DispByteAsHex ; display byte
00FFF226 0E6A04 ldb ,y
00FFF228 031201 iny
00FFF22A 017FFF1E6 lbsr DispByteAsHex ; display byte
*** warning 1: Long branch within short branch range could be optimized
00FFFC6C 0C6020 ldb #' ' ; followed by a space
00FFFC6E 017FFF0A1 lbsr OUTCH
00FFF22D 0C6020 ldb #' ' ; followed by a space
00FFF22F 017FFFAE0 lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFFC71 05F clrb
00FFFC72 04F clra
00FFFC73 017FFF064 lbsr INCH
00FFF232 05F clrb
00FFF233 04F clra
00FFF234 017FFFAA3 lbsr INCH
*** warning 1: Long branch within short branch range could be optimized
00FFFC76 0C1003 cmpb #CTRLC
00FFFC78 027024 beq dmpm3
00FFFC7A 0301FF dex
00FFFC7C 026FE7 bne dmpm1
00FFF237 0C1003 cmpb #CTRLC
00FFF239 027024 beq dmpm3
00FFF23B 0301FF dex
00FFF23D 026FE7 bne dmpm1
; Now output ascii
00FFFC7E 0C6020 ldb #' '
00FFFC80 017FFF08F lbsr OUTCH
00FFF23F 0C6020 ldb #' '
00FFF241 017FFFACE lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFFC83 08E000008 ldx #8 ; 8 chars to output
00FFFC86 0313F8 leay -8,y ; backup pointer
00FFF244 08E000008 ldx #8 ; 8 chars to output
00FFF247 0313F8 leay -8,y ; backup pointer
dmpm5:
; ldb far [mon_r1+1],y ; get the char
; ldb [mon_r1+2],y ; get the char
00FFFC88 0E6A04 ldb ,y
00FFFC8A 0C1020 cmpb #$20 ; is it a control char?
00FFFC8C 024002 bhs dmpm4
00FFFC8E 0C602E ldb #'.'
00FFF249 0E6A04 ldb ,y
00FFF24B 0C1020 cmpb #$20 ; is it a control char?
00FFF24D 024002 bhs dmpm4
00FFF24F 0C602E ldb #'.'
dmpm4:
00FFFC90 017FFF07F lbsr OUTCH
00FFF251 017FFFABE lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
00FFFC93 031201 iny
00FFFC95 0301FF dex
00FFFC97 026FEF bne dmpm5
00FFFC99 1BC000926 cmpy mon_r2+2
00FFFC9C 025FB2 blo dmpm2
00FFF254 031201 iny
00FFF256 0301FF dex
00FFF258 026FEF bne dmpm5
00FFF25A 1BC000926 cmpy mon_r2+2
00FFF25D 025FB2 blo dmpm2
dmpm3:
00FFFC9E 017FFD431 lbsr CRLF
00FFF25F 017FFDE70 lbsr CRLF
*** warning 1: Long branch within short branch range could be optimized
00FFFCA1 016FFFC8A lbra Monitor
00FFF262 016FFFC42 lbra Monitor
*** warning 1: Long branch within short branch range could be optimized
;------------------------------------------------------------------------------
4489,46 → 3529,83
;------------------------------------------------------------------------------
EditMemory:
00FFFCA4 0CE000008 ldu #8 ; set max byte count
00FFFCA7 017FFFDE5 lbsr GetHexNumber ; get the start address
00FFF265 0CE000008 ldu #8 ; set max byte count
00FFF268 017FFFD84 lbsr GetHexNumber ; get the start address
*** warning 1: Long branch within short branch range could be optimized
00FFFCAA 0BE000922 ldx mon_r1+2
00FFF26B 0BE000912 ldx mon_numwka+2
EditMem2:
00FFFCAD 017FFFD8C lbsr ignBlanks ; skip over blanks
00FFF26E 017FFFCE2 lbsr ignBlanks ; skip over blanks
*** warning 1: Long branch within short branch range could be optimized
00FFFCB0 017FFFDDC lbsr GetHexNumber ; get the byte value
00FFF271 017FFFD7B lbsr GetHexNumber ; get the byte value
*** warning 1: Long branch within short branch range could be optimized
00FFFCB3 05D tstb ; check for valid value
00FFFCB4 02B00C bmi EditMem1 ; if invalid, quit
00FFFCB6 0F6000923 ldb mon_r1+3 ; get value
00FFFCB9 0E7800 stb ,x+ ; update memory at address
00FFFCBB 0335FF leau -1,u ; decremeent byte count
00FFFCBD 283000000 cmpu #0
00FFFCC0 026FEB bne EditMem2 ; go back for annother byte
00FFF274 05D tstb ; check for valid value
00FFF275 02700C beq EditMem1 ; if invalid, quit
00FFF277 0F6000913 ldb mon_numwka+3 ; get value
00FFF27A 0E7800 stb ,x+ ; update memory at address
00FFF27C 0335FF leau -1,u ; decremeent byte count
00FFF27E 283000000 cmpu #0
00FFF281 026FEB bne EditMem2 ; go back for annother byte
EditMem1:
00FFFCC2 017FFFD6B lbsr MonGetch ; see if a string is being entered
00FFF283 017FFFCC1 lbsr MonGetch ; see if a string is being entered
*** warning 1: Long branch within short branch range could be optimized
00FFFCC5 0C1022 cmpb #'"'
00FFFCC7 026018 bne EditMem3 ; no string, we're done
00FFFCC9 0CE000028 ldu #40 ; string must be less than 40 chars
00FFF286 0C1022 cmpb #'"'
00FFF288 026018 bne EditMem3 ; no string, we're done
00FFF28A 0CE000028 ldu #40 ; string must be less than 40 chars
EditMem4:
00FFFCCC 017FFFD61 lbsr MonGetch ; look for close quote
00FFF28D 017FFFCB7 lbsr MonGetch ; look for close quote
*** warning 1: Long branch within short branch range could be optimized
00FFFCCF 0C1022 cmpb #'"'
00FFFCD1 026005 bne EditMem6 ; end of string?
00FFFCD3 0CE000008 ldu #8 ; reset the byte count
00FFFCD6 020FD5 bra EditMem2
00FFF290 0C1022 cmpb #'"'
00FFF292 026005 bne EditMem6 ; end of string?
00FFF294 0CE000008 ldu #8 ; reset the byte count
00FFF297 020FD5 bra EditMem2
EditMem6:
00FFFCD8 0E7800 stb ,x+ ; store the character in memory
00FFFCDA 0335FF leau -1,u ; decrement byte count
00FFFCDC 283000000 cmpu #0
00FFFCDF 022FEB bhi EditMem4 ; max 40 chars
00FFF299 0E7800 stb ,x+ ; store the character in memory
00FFF29B 0335FF leau -1,u ; decrement byte count
00FFF29D 283000000 cmpu #0
00FFF2A0 022FEB bhi EditMem4 ; max 40 chars
EditMem3:
00FFFCE1 016FFFC4A lbra Monitor
00FFF2A2 016FFFC02 lbra Monitor
*** warning 1: Long branch within short branch range could be optimized
;------------------------------------------------------------------------------
; Fill Memory
;
; Usage:
; $$F FFFC12 FFFC30 89F
;
;------------------------------------------------------------------------------
FillMemory:
00FFF2A5 017FFFD1E lbsr GetRange ; get address range to fill
*** warning 1: Long branch within short branch range could be optimized
00FFF2A8 017FFFCA8 lbsr ignBlanks
*** warning 1: Long branch within short branch range could be optimized
00FFF2AB 017FFFD41 lbsr GetHexNumber ; get target byte to write
*** warning 1: Long branch within short branch range could be optimized
00FFF2AE 0F6000913 ldb mon_numwka+3
00FFF2B1 0BE000922 ldx mon_r1+2
00FFF2B4 04F clra
fillm1: ; Check for a CTRL-C every page of memory
00FFF2B5 04D tsta
00FFF2B6 02600D bne fillm2
00FFF2B8 05F clrb ; we want a non-blocking check
00FFF2B9 04F clra
00FFF2BA 017FFFA1D lbsr INCH
*** warning 1: Long branch within short branch range could be optimized
00FFF2BD 0C1003 cmpb #CTRLC
00FFF2BF 127FFFBE5 lbeq Monitor
*** warning 1: Long branch within short branch range could be optimized
00FFF2C2 0F6000913 ldb mon_numwka+3 ; reset target byte
fillm2:
00FFF2C5 0E7800 stb ,x+
00FFF2C7 0BC000926 cmpx mon_r2+2
00FFF2CA 023FE9 bls fillm1
fillm3:
00FFF2CC 016FFFBD8 lbra Monitor
*** warning 1: Long branch within short branch range could be optimized
;------------------------------------------------------------------------------
; Dump Registers
;
; Usage:
4536,39 → 3613,39
;------------------------------------------------------------------------------
DumpRegs:
00FFFCE4 0CCFFFC05 ldd #msgRegHeadings
00FFFCE7 017FFE6CC lbsr DisplayString
00FFF2CF 0CCFFF1C6 ldd #msgRegHeadings
00FFF2D2 017FFF0EA lbsr DisplayString
*** warning 1: Long branch within short branch range could be optimized
00FFFCEA 08DF57 bsr nXBLANK
00FFFCEC 0FC000900 ldd mon_DSAVE
00FFFCEF 08DF4E bsr nHEX4
00FFFCF1 08DF50 bsr nXBLANK
00FFFCF3 0FC000902 ldd mon_XSAVE
00FFFCF6 08DF47 bsr nHEX4
00FFFCF8 08DF49 bsr nXBLANK
00FFFCFA 0FC000904 ldd mon_YSAVE
00FFFCFD 08DF40 bsr nHEX4
00FFFCFF 08DF42 bsr nXBLANK
00FFFD01 0FC000906 ldd mon_USAVE
00FFFD04 08DF39 bsr nHEX4
00FFFD06 08DF3B bsr nXBLANK
00FFFD08 0FC000908 ldd mon_SSAVE
00FFFD0B 08DF32 bsr nHEX4
00FFFD0D 08DF34 bsr nXBLANK
00FFFD0F 0F600090B ldb mon_PCSAVE+1
00FFFD12 017FFE6F5 lbsr DispByteAsHex
00FFF2D5 08DF2D bsr nXBLANK
00FFF2D7 0FC000900 ldd mon_DSAVE
00FFF2DA 08DF24 bsr nHEX4
00FFF2DC 08DF26 bsr nXBLANK
00FFF2DE 0FC000902 ldd mon_XSAVE
00FFF2E1 08DF1D bsr nHEX4
00FFF2E3 08DF1F bsr nXBLANK
00FFF2E5 0FC000904 ldd mon_YSAVE
00FFF2E8 08DF16 bsr nHEX4
00FFF2EA 08DF18 bsr nXBLANK
00FFF2EC 0FC000906 ldd mon_USAVE
00FFF2EF 08DF0F bsr nHEX4
00FFF2F1 08DF11 bsr nXBLANK
00FFF2F3 0FC000908 ldd mon_SSAVE
00FFF2F6 08DF08 bsr nHEX4
00FFF2F8 08DF0A bsr nXBLANK
00FFF2FA 0F600090B ldb mon_PCSAVE+1
00FFF2FD 017FFF113 lbsr DispByteAsHex
*** warning 1: Long branch within short branch range could be optimized
00FFFD15 0FC00090C ldd mon_PCSAVE+2
00FFFD18 08DF25 bsr nHEX4
00FFFD1A 08DF27 bsr nXBLANK
00FFFD1C 0FC00090E ldd mon_DPRSAVE
00FFFD1F 0BDFFD2CE jsr HEX2
00FFFD22 08DF1F bsr nXBLANK
00FFFD24 0B600090F lda mon_CCRSAVE
00FFFD27 017FFD5A4 lbsr HEX2
00FFF300 0FC00090C ldd mon_PCSAVE+2
00FFF303 08DEFB bsr nHEX4
00FFF305 08DEFD bsr nXBLANK
00FFF307 0FC00090E ldd mon_DPRSAVE
00FFF30A 0BDFFD2CE jsr HEX2
00FFF30D 08DEF5 bsr nXBLANK
00FFF30F 0B600090F lda mon_CCRSAVE
00FFF312 017FFDFB9 lbsr HEX2
*** warning 1: Long branch within short branch range could be optimized
00FFFD2A 08DF17 bsr nXBLANK
00FFFD2C 016FFFBFF lbra Monitor
00FFF315 08DEED bsr nXBLANK
00FFF317 016FFFB8D lbra Monitor
*** warning 1: Long branch within short branch range could be optimized
;------------------------------------------------------------------------------
4581,55 → 3658,55
;------------------------------------------------------------------------------
jump_to_code:
00FFFD2F 08DD5E bsr GetHexNumber
00FFFD31 01A010 sei
00FFFD33 1FE000908 lds mon_SSAVE
00FFFD36 0CCFFFD6A ldd #<jtc_exit ; setup stack for RTS back to monitor
00FFFD39 034006 pshs d
00FFFD3B 0C6000 ldb #>jtc_exit
00FFFD3D 034004 pshs b
00FFFD3F 0FC000912 ldd mon_numwka+2 ; get the address parameter
00FFFD42 034006 pshs d
00FFFD44 0F6000911 ldb mon_numwka+1
00FFFD47 034004 pshs b
00FFFD49 0FC000906 ldd mon_USAVE
00FFFD4C 034006 pshs d
00FFFD4E 0FC000904 ldd mon_YSAVE
00FFFD51 034006 pshs d
00FFFD53 0FC000902 ldd mon_XSAVE
00FFFD56 034006 pshs d
00FFFD58 0B600090E lda mon_DPRSave
00FFFD5B 034002 pshs a
00FFFD5D 0FC000900 ldd mon_DSAVE
00FFFD60 034006 pshs d
00FFFD62 0B600090F lda mon_CCRSAVE
00FFFD65 034002 pshs a
00FFFD67 0150350FF puls far ccr,d,dpr,x,y,u,pc
00FFF31A 08DCD3 bsr GetHexNumber
00FFF31C 01A010 sei
00FFF31E 1FE000908 lds mon_SSAVE
00FFF321 0CCFFF355 ldd #<jtc_exit ; setup stack for RTS back to monitor
00FFF324 034006 pshs d
00FFF326 0C6000 ldb #>jtc_exit
00FFF328 034004 pshs b
00FFF32A 0FC000912 ldd mon_numwka+2 ; get the address parameter
00FFF32D 034006 pshs d
00FFF32F 0F6000911 ldb mon_numwka+1
00FFF332 034004 pshs b
00FFF334 0FC000906 ldd mon_USAVE
00FFF337 034006 pshs d
00FFF339 0FC000904 ldd mon_YSAVE
00FFF33C 034006 pshs d
00FFF33E 0FC000902 ldd mon_XSAVE
00FFF341 034006 pshs d
00FFF343 0B600090E lda mon_DPRSAVE
00FFF346 034002 pshs a
00FFF348 0FC000900 ldd mon_DSAVE
00FFF34B 034006 pshs d
00FFF34D 0B600090F lda mon_CCRSAVE
00FFF350 034002 pshs a
00FFF352 0150350FF puls far ccr,d,dpr,x,y,u,pc
jtc_exit:
00FFFD6A 1FF000908 sts >mon_SSAVE ; need to use extended addressing, no direct page setting
00FFFD6D 03280F006FFF leas $6FFF ; reset stack to system area, dont modify flags register!
00FFFD71 034001 pshs ccr ; now the stack can be used
00FFFD73 034002 pshs a ; save acca register so we can use it
00FFFD75 01F0B8 tfr dpr,a ; a = outgoing dpr value
00FFFD77 0B700090E sta >mon_DPRSAVE ; force extended addressing mode usage here dpr is not set
00FFFD7A 04F clra ; dpg register must be set to zero before values are
00FFFD7B 01F08B tfr a,dpr ; saved in the monitor register save area.
00FFFD7D 035002 puls a ; get back acca
00FFFD7F 0FD000900 std mon_DSAVE ; save regsters, can use direct addressing now
00FFFD82 0BF000902 stx mon_XSAVE
00FFFD85 1BF000904 sty mon_YSAVE
00FFFD88 0FF000906 stu mon_USAVE
00FFFD8B 035002 puls a ; get back ccr
00FFFD8D 0B700090F sta mon_CCRSAVE ; and save it too
00FFF355 1FF000908 sts >mon_SSAVE ; need to use extended addressing, no direct page setting
00FFF358 03280F006FFF leas $6FFF ; reset stack to system area, dont modify flags register!
00FFF35C 034001 pshs ccr ; now the stack can be used
00FFF35E 034002 pshs a ; save acca register so we can use it
00FFF360 01F0B8 tfr dpr,a ; a = outgoing dpr value
00FFF362 0B700090E sta >mon_DPRSAVE ; force extended addressing mode usage here dpr is not set
00FFF365 04F clra ; dpg register must be set to zero before values are
00FFF366 01F08B tfr a,dpr ; saved in the monitor register save area.
00FFF368 035002 puls a ; get back acca
00FFF36A 0FD000900 std mon_DSAVE ; save regsters, can use direct addressing now
00FFF36D 0BF000902 stx mon_XSAVE
00FFF370 1BF000904 sty mon_YSAVE
00FFF373 0FF000906 stu mon_USAVE
00FFF376 035002 puls a ; get back ccr
00FFF378 0B700090F sta mon_CCRSAVE ; and save it too
; Reset vectors in case they got toasted.
00FFFD90 0CCFFEBE4 ldd #SerialPeekCharDirect
00FFFD93 0FD000804 std CharInVec
00FFFD96 0CCFFE2F5 ldd #DisplayChar
00FFFD99 0FD000800 std CharOutVec
00FFFD9C 0FCFFFAF5 ldd DisplayErr
00FFFD9F 0FD00080C std MonErrVec
00FFF37B 0CCFFEBE4 ldd #SerialPeekCharDirect
00FFF37E 0FD000804 std CharInVec
00FFF381 0CCFFE2FE ldd #DisplayChar
00FFF384 0FD000800 std CharOutVec
00FFF387 0FCFFF055 ldd DisplayErr
00FFF38A 0FD00080C std MonErrVec
; todo set according to coreid
00FFFDA2 016FFFF3F lbra DumpRegs ; now go do a register dump
00FFF38D 016FFFF3F lbra DumpRegs ; now go do a register dump
*** warning 1: Long branch within short branch range could be optimized
;------------------------------------------------------------------------------
4636,96 → 3713,309
;------------------------------------------------------------------------------
DumpIOFocusList:
00FFFDA5 08E000000 ldx #0
00FFF390 08E000000 ldx #0
dfl2:
00FFFDA8 0E680A000FF0000 ldb IOFocusList,x
00FFFDAD 0C1018 cmpb #24
00FFFDAF 02600A bne dfl1
00FFFDB1 01F010 tfr x,d
00FFFDB3 017FFE654 lbsr DispByteAsHex
00FFF393 0E680A000FFC000 ldb IOFocusList,x
00FFF398 0C1018 cmpb #24
00FFF39A 02600A bne dfl1
00FFF39C 01F010 tfr x,d
00FFF39E 017FFF072 lbsr DispByteAsHex
*** warning 1: Long branch within short branch range could be optimized
00FFFDB6 0C6020 ldb #' '
00FFFDB8 017FFEF57 lbsr OUTCH
00FFF3A1 0C6020 ldb #' '
00FFF3A3 017FFF96C lbsr OUTCH
*** warning 1: Long branch within short branch range could be optimized
dfl1:
00FFFDBB 030001 inx
00FFFDBD 08C000010 cmpx #16
00FFFDC0 025FE6 blo dfl2
00FFFDC2 017FFD30D lbsr CRLF
00FFF3A6 030001 inx
00FFF3A8 08C000010 cmpx #16
00FFF3AB 025FE6 blo dfl2
00FFF3AD 017FFDD22 lbsr CRLF
*** warning 1: Long branch within short branch range could be optimized
00FFFDC5 016FFFB66 lbra Monitor
00FFF3B0 016FFFAF4 lbra Monitor
*** warning 1: Long branch within short branch range could be optimized
bootpg:
00FFF3B3 000 fcb $000
boot_stack:
00FFF3B4 006FFF fcw $006FFF
numBreakpoints:
00FFF3B6 008 fcb 8
mon_rom_vectab:
00FFF3B7 FFF3B9 fcw mon_rom_vecs
mon_rom_vecs:
00FFF3B9 FFEEA7 fcw Monitor ; enter monitor program
00FFF3BB FFECDA fcw INCH ; input a character
00FFF3BD FFED12 fcw OUTCH ; output a character
00FFF3BF FFD0D2 fcw CRLF ; output carriage-return, line feed
00FFF3C1 FFE3BF fcw DisplayString
00FFF3C3 FFE413 fcw DispByteAsHex
00FFF3C5 FFE40A fcw DispWordAsHex
00FFF3C7 FFED1C fcw ShowSprites
00FFF3C9 FFEDA0 fcw mon_srand
00FFF3CB FFEDCE fcw mon_rand
00FFF3CD 000000 fcw 0 ; operating system call
00FFF3CF FFEFC6 fcw GetRange
NumFuncs EQU (*-mon_rom_vectab)/2
;------------------------------------------------------------------------------
; SWI routine.
;
; SWI is used to call ROM monitor routines and process breakpoints.
;
; swi
; fcb <desired function>
;------------------------------------------------------------------------------
swi_rout:
00FFF3D1 0E680CFDF ldb bootpg,pcr ; reset direct page
00FFF3D4 01F09B tfr b,dp
swi_rout1:
00FFF3D6 0EE60B ldu 11,s ; get program counter (low order 2 bytes)
00FFF3D8 0335FF leau -1,u ; backup a byte
00FFF3DA 07D000810 tst BreakpointFlag ; are we in breakpoint mode?
00FFF3DD 02700F beq swiNotBkpt
00FFF3DF 0CE000820 ldu #Breakpoints
00FFF3E2 0F6000811 ldb NumSetBreakpoints
00FFF3E5 027007 beq swiNotBkpt
swi_rout2:
00FFF3E7 2A3A01 cmpu ,y++
00FFF3E9 027033 beq processBreakpoint
00FFF3EB 05A decb
00FFF3EC 026FF9 bne swi_rout2
swiNotBkpt:
00FFF3EE 07F000810 clr BreakpointFlag
00FFF3F1 037006 pulu d ; get function #, increment PC
00FFF3F3 0C100D cmpb #NumFuncs
00FFF3F5 122FFFC5D lbhi DisplayErr
*** warning 1: Long branch within short branch range could be optimized
00FFF3F8 0EF60B stu 11,s ; save updated PC on stack
00FFF3FA 0C100A cmpb #MF_OSCALL
00FFF3FC 027056 beq swiCallOS
00FFF3FE 058 aslb ; 2 bytes per vector
00FFF3FF 0AE80CFB5 ldx mon_rom_vectab,pcr
00FFF402 03A abx
00FFF403 0AE804 ldx ,x
00FFF405 0BF000928 stx jmpvec
00FFF408 1FF000908 sts mon_SSAVE ; save the stack pointer
00FFF40B 0EC601 ldd 1,s ; get back D
00FFF40D 0AE604 ldx 4,s ; get back X
00FFF40F 1AE606 ldy 6,s ; get back Y
00FFF411 0EE608 ldu 8,s ; get back U
00FFF413 1EE80CF9E lds boot_stack,pcr ; and use our own stack
00FFF416 0AD90F000928 jsr [jmpvec] ; call the routine
swi_rout3:
00FFF41A 1FE000908 lds mon_SSAVE ; restore stack
00FFF41D 03B rti
processBreakpoint:
00FFF41E 0A6E04 lda ,s
00FFF420 0B700090F sta mon_CCRSAVE
00FFF423 0EC601 ldd 1,s
00FFF425 0FD000900 std mon_DSAVE
00FFF428 0E6603 ldb 3,s
00FFF42A 0F700090E stb mon_DPRSAVE
00FFF42D 0EC604 ldd 4,s
00FFF42F 0FD000902 std mon_XSAVE
00FFF432 0EC606 ldd 6,s
00FFF434 0FD000904 std mon_YSAVE
00FFF437 0EC608 ldd 8,s
00FFF439 0FD000906 std mon_USAVE
00FFF43C 1FF000908 sts mon_SSAVE
00FFF43F 0EC60B ldd 11,s
00FFF441 0FD00090A std mon_PCSAVE
00FFF444 1EE80CF6D lds boot_stack,pcr
00FFF447 0CCFFF41A ldd #swi_rout3 ; setup so monitor can return
00FFF44A 034006 pshs d
00FFF44C 08D020 bsr DisarmAllBreakpoints
00FFF44E 016FFFE7E lbra DumpRegs
*** warning 1: Long branch within short branch range could be optimized
xitMonitor:
00FFF451 08D03A bsr ArmAllBreakpoints
00FFF453 039 rts
swiCallOS:
00FFF454 033401 leau 1,u ; next byte is func number
00FFF456 0E6C00 ldb ,u+
00FFF458 0C1019 cmpb #NumOSFuncs ; check for valid range
00FFF45A 122FFFBF8 lbhi DisplayErr
*** warning 1: Long branch within short branch range could be optimized
00FFF45D 0EF60B stu 11,s ; save updateed PC on stack
00FFF45F 058 aslb ; compute vector address
00FFF460 08EFFED27 ldx #OSCallTbl
00FFF463 06DE0F tst b,x ; check for non-zero vector
00FFF465 027FB3 beq swi_rout3
osc1:
; tst OSSEMA+1 ; wait for availability
; beq osc1
00FFF467 0ADF0F jsr [b,x] ; call the OS routine
oscx:
00FFF469 07FEF0011 clr OSSEMA+1
00FFF46C 020FAC bra swi_rout3
DisarmAllBreakpoints:
00FFF46E 034036 pshs d,x,y
00FFF470 18E000000 ldy #0
00FFF473 05F clrb
00FFF474 08E000830 ldx #BreakpointBytes ; x = breakpoint byte table address
disarm2:
00FFF477 0C13B6 cmpb #numBreakpoints ; safety check
00FFF479 024010 bhs disarm1
00FFF47B 0F1000811 cmpb NumSetBreakpoints
00FFF47E 02400B bhs disarm1
00FFF480 0A6837 lda b,x ; get memory byte
00FFF482 0A7B09000820 sta [Breakpoints,y] ; and store it back to memory
00FFF486 031202 leay 2,y ; increment for next address
00FFF488 05C incb ; increment to next byte
00FFF489 020FEC bra disarm2 ; loop back
disarm1:
00FFF48B 0350B6 puls d,x,y,pc
ArmAllBreakpoints:
00FFF48D 034036 pshs d,x,y
00FFF48F 18E000000 ldy #0
00FFF492 05F clrb
00FFF493 08E000830 ldx #BreakpointBytes ; x = breakpoint byte table address
arm2:
00FFF496 0C13B6 cmpb #numBreakpoints ; safety check
00FFF498 024010 bhs arm1
00FFF49A 0F1000811 cmpb NumSetBreakpoints
00FFF49D 02400B bhs arm1
00FFF49F 0A6B09000820 lda [Breakpoints,y] ; load byte at memory address
00FFF4A3 0A7B0D sta b,x ; save in table
00FFF4A5 031202 leay 2,y ; increment for next address
00FFF4A7 05C incb ; increment to next byte
00FFF4A8 020FEC bra arm2 ; loop back
arm1:
00FFF4AA 0350B6 puls d,x,y,pc
ArmBreakpoint:
00FFF4AC 034036 pshs d,x,y
00FFF4AE 0B6000811 lda NumSetBreakpoints ; check if too many breakpoints set
00FFF4B1 0813B6 cmpa #numBreakpoints
00FFF4B3 124FFFB9F lbhs DisplayErr
*** warning 1: Long branch within short branch range could be optimized
00FFF4B6 017FFFB36 lbsr GetHexNumber ; get address parameter
*** warning 1: Long branch within short branch range could be optimized
00FFF4B9 0F6000811 ldb NumSetBreakpoints ; bv= number of set breakpoints
00FFF4BC 1BE000912 ldy mon_numwka+2 ; get address
00FFF4BF 0A6A04 lda ,y ; get byte at address
00FFF4C1 08E000830 ldx #BreakpointBytes ; and store byte in a table
00FFF4C4 0A7A05 sta b,x
00FFF4C6 08E000820 ldx #Breakpoints ; also store the address in a table
00FFF4C9 058 aslb ; index for 2 byte values
00FFF4CA 1AFA05 sty b,x
00FFF4CC 054 lsrb ; size back to single byte
00FFF4CD 05C incb
00FFF4CE 0F7000811 stb NumSetBreakpoints
00FFF4D1 0350B6 puls d,x,y,pc
DisarmBreakpoint:
00FFF4D3 034076 pshs d,x,y,u
00FFF4D5 017FFFB17 lbsr GetHexNumber
*** warning 1: Long branch within short branch range could be optimized
00FFF4D8 05F clrb
00FFF4D9 05F clrb
00FFF4DA 01F001 tfr d,x ; x = zero too
disarm6:
00FFF4DC 0C13B6 cmpb #numBreakpoints ; no more than this many may be set
00FFF4DE 02403F bhs disarm4
00FFF4E0 0F1000811 cmpb NumSetBreakpoints ; number actually set
00FFF4E3 02403A bhs disarm4
00FFF4E5 1AE809000820 ldy Breakpoints,x ; y = breakpoint address
00FFF4E9 1BC000912 cmpy mon_numwka+2 ; is it the one we want?
00FFF4EC 02602C bne disarm3 ; if not, go increment to next
00FFF4EE 0BE000912 ldx mon_numwka+2 ; x = memory address
00FFF4F1 18E000830 ldy #BreakpointBytes
00FFF4F4 0A6A0D lda b,y ; get saved byte from table
00FFF4F6 0A7804 sta ,x ; set the byte at the memory address
; compress breakpoint table by removing breakpoint
00FFF4F8 07A000811 dec NumSetBreakpoints ; set the new number of set breakpoints
00FFF4FB 034004 pshs b ; save the position we're removing from
disarm7:
00FFF4FD 05C incb ; set index for next byte
00FFF4FE 0A6A05 lda b,y ; get byte
00FFF500 05A decb ; and store it back
00FFF501 0A7A05 sta b,y
00FFF503 05C incb ; move to next position
00FFF504 0C13B6 cmpb #numBreakpoints ; hit end of table?
00FFF506 025FF5 blo disarm7
00FFF508 035004 puls b ; get back position
00FFF50A 058 aslb ; times two for word index
00FFF50B 04F clra
00FFF50C 01F002 tfr d,y
00FFF50E 054 lsrb ; back to byte index value
disarm8:
00FFF50F 0EE202 ldu 2,y ; get next breakpoint address
00FFF511 0EFA01 stu ,y++ ; store in current pos, increment
00FFF513 05C incb ; increment count
00FFF514 0C13B6 cmpb #numBreakpoints ; hit end of table?
00FFF516 025FF7 blo disarm8
00FFF518 0350F6 puls d,x,y,u,pc
disarm3:
00FFF51A 030002 leax 2,x
00FFF51C 05C incb
00FFF51D 020FBD bra disarm6
disarm4:
00FFF51F 0350F6 puls d,x,y,u,pc
;------------------------------------------------------------------------------
;------------------------------------------------------------------------------
swi3_rout:
00FFFDC8 01A010 sei
00FFFDCA 035002 puls a
00FFFDCC 0B700090F sta mon_CCRSAVE
00FFFDCF 03507E puls D,DPR,X,Y,U
00FFFDD1 0FD000900 std mon_DSAVE
00FFFDD4 0BF000902 stx mon_XSAVE
00FFFDD7 1BF000904 sty mon_YSAVE
00FFFDDA 0FF000906 stu mon_USAVE
00FFFDDD 01F0B8 tfr dpr,a
00FFFDDF 0B700090E sta mon_DPRSAVE
00FFFDE2 035002 puls a
00FFFDE4 0B700090A sta mon_PCSAVE
00FFFDE7 035006 puls D
00FFFDE9 0FD00090B std mon_PCSAVE+1
00FFFDEC 1FF000908 sts mon_SSAVE
00FFFDEF 1CE003FFF lds #$3FFF
00FFFDF2 01C0EF cli
00FFFDF4 07EFFFCE4 jmp DumpRegs
00FFF521 01A010 sei
00FFF523 0A6E04 lda ,s
00FFF525 0B700090F sta mon_CCRSAVE
00FFF528 0EC601 ldd 1,s
00FFF52A 0FD000900 std mon_DSAVE
00FFF52D 0E6603 ldb 3,s
00FFF52F 0F700090E stb mon_DPRSAVE
00FFF532 0EC604 ldd 4,s
00FFF534 0FD000902 std mon_XSAVE
00FFF537 0EC606 ldd 6,s
00FFF539 0FD000904 std mon_YSAVE
00FFF53C 0EC608 ldd 8,s
00FFF53E 0FD000906 std mon_USAVE
00FFF541 1FF000908 sts mon_SSAVE
00FFF544 0EC60B ldd 11,s
00FFF546 0FD00090A std mon_PCSAVE
00FFF549 1FF000908 sts mon_SSAVE
00FFF54C 1CE003FFF lds #$3FFF
00FFF54F 0CCFFF559 ldd #swi3_exit
00FFF552 034006 pshs d
00FFF554 01C0EF cli
00FFF556 07EFFF2CF jmp DumpRegs
swi3_exit:
00FFFDF7 01A010 sei
00FFFDF9 1FE000908 lds mon_SSAVE
00FFFDFC 0FC00090B ldd mon_PCSAVE+1
00FFFDFF 034006 pshs d
00FFFE01 0B600090A lda mon_PCSAVE
00FFFE04 034002 pshs a
00FFFE06 0FE000906 ldu mon_USAVE
00FFFE09 1BE000904 ldy mon_YSAVE
00FFFE0C 0BE000902 ldx mon_XSAVE
00FFFE0F 034070 pshs x,y,u
00FFFE11 0B600090E lda mon_DPRSAVE
00FFFE14 034002 pshs a
00FFFE16 0FC000900 ldd mon_DSAVE
00FFFE19 034006 pshs d
00FFFE1B 0B600090F lda mon_CCRSAVE
00FFFE1E 034002 pshs a
00FFFE20 01F08A tfr a,ccr
00FFFE22 01C0EF cli
00FFFE24 03B rti
00FFF559 1FE000908 lds mon_SSAVE
00FFF55C 03B rti
;------------------------------------------------------------------------------
;------------------------------------------------------------------------------
firq_rout:
00FFFE25 03B rti
00FFF55D 03B rti
irq_rout:
; lbsr SerialIRQ ; check for recieved character
; lbsr TimerIRQ
00FFF55E 017FFEF0B lbsr TimerIRQ
*** warning 1: Long branch within short branch range could be optimized
; Reset the edge sense circuit in the PIC
00FFFE26 08601F lda #31 ; Timer is IRQ #31
00FFFE28 0B7FF0011 sta IrqSource ; stuff a byte indicating the IRQ source for PEEK()
00FFFE2B 0150B7FFFE3F010 sta PIC+16 ; register 16 is edge sense reset reg
00FFFE30 0150B6FFFE6000D lda VIA+VIA_IFR
00FFFE35 02A011 bpl notTimerIRQ2
00FFFE37 085800 bita #$800
00FFFE39 02700D beq notTimerIRQ2
00FFFE3B 01507FFFFE60012 clr VIA+VIA_T3LL
00FFFE40 01507FFFFE60013 clr VIA+VIA_T3LH
00FFFE45 07CE00037 inc $E00037 ; update timer IRQ screen flag
notTimerIRQ2:
; 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:
00FFFE48 0B6FF0014 lda IrqBase ; get the IRQ flag byte
00FFFE4B 044 lsra
00FFFE4C 0BAFF0014 ora IrqBase
00FFFE4F 0840E0 anda #$E0
00FFFE51 0B7FF0014 sta IrqBase
00FFF561 0B6FFC014 lda IrqBase ; get the IRQ flag byte
00FFF564 044 lsra
00FFF565 0BAFFC014 ora IrqBase
00FFF568 084FE0 anda #$FE0
00FFF56A 0B7FFC014 sta IrqBase
; inc TEXTSCR+54 ; update IRQ live indicator on screen
4755,17 → 4045,17
; rola
; sta $E00000,y ; store the color code back to memory
tr1a:
00FFFE54 03B rti
00FFF56D 03B rti
;------------------------------------------------------------------------------
;------------------------------------------------------------------------------
nmi_rout:
00FFFE55 0150F6FFFFFFFE0 ldb COREID
00FFFE5A 086049 lda #'I'
00FFFE5C 08EE00028 ldx #TEXTSCR+40
00FFFE5F 0A788F sta b,x
00FFF56E 0150F6FFFFFFFE0 ldb COREID
00FFF573 086049 lda #'I'
00FFF575 08EE00028 ldx #TEXTSCR+40
00FFF578 0A7807 sta b,x
rti_insn:
00FFFE61 03B rti
00FFF57A 03B rti
; Special Register Area
org $FFFFE0
4773,155 → 4063,150
; Interrupt vector table
org $FFFFF0
00FFFFF0 FFFE61 fcw rti_insn ; reserved
00FFFFF2 FFFDC8 fcw swi3_rout ; SWI3
00FFFFF4 FFFE61 fcw rti_insn ; SWI2
00FFFFF6 FFFE25 fcw firq_rout ; FIRQ
00FFFFF8 FFFE26 fcw irq_rout ; IRQ
00FFFFFA FFE023 fcw start ; SWI
00FFFFFC FFFE55 fcw nmi_rout ; NMI
00FFFFF0 FFF57A fcw rti_insn ; reserved
00FFFFF2 FFF521 fcw swi3_rout ; SWI3
00FFFFF4 FFF57A fcw rti_insn ; SWI2
00FFFFF6 FFF55D fcw firq_rout ; FIRQ
00FFFFF8 FFF55E fcw irq_rout ; IRQ
00FFFFFA FFF3D1 fcw swi_rout ; SWI
00FFFFFC FFF56E fcw nmi_rout ; NMI
00FFFFFE FFE023 fcw start ; RST
 
192 warning(s) in pass 2.
66 warning(s) in pass 2.
 
SYMBOL TABLE
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 00FFFAE7
ASCIITOHEXNYBBLE 02 00FFFABF ASMBUF 00 00000160 ASMO 02 00FFF8BC ASMOO 02 00FFF8C6
ASMOUTCH 02 00FFF8D0 BIOS_SCREENS 00 17000000 BLANKLINE 02 00FFE26C BLKCPYDST 00 00000020
BLKCPYSRC 00 0000001C BLNKLN1 02 00FFE27F CALCSCREENLOC 02 00FFE2D2 CHARCOLOR 00 00000112
CHARINVEC 00 00000804 CHAROUTVEC 00 00000800 CHECKPOINT 02 00FFE129 CLEARSCREEN 02 00FFE225
CLEARSCREENJMP 02 00FFD300 CMDPROMPT 02 00FFF8E0 CMDPROMPTJI 00 00000808 COLORCODELOCATION 00 00000014
COPYSCREENTOVIRTUALSCREEN 02 00FFE1F5 COPYVIRTUALSCREENTOSCREEN 02 00FFE1BE COREID 00 FFFFFFE0 CR 00 0000000D
CRLF 02 00FFD0D2 CRLF1 02 00FFD0D2 CRLFST 02 00FFE3F5 CS1 02 00FFE232
CS2 02 00FFE249 CS2V1 02 00FFE201 CS3 02 00FFE24F CSL1 02 00FFE2ED
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 00FFE1D3 DAB1 02 00FFF8DF DAB2 02 00FFF8D6 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 00FFE305
DCLF 02 00FFE38F DCX10 02 00FFE33F DCX11 02 00FFE34F DCX12 02 00FFE34B
DCX13 02 00FFE35B DCX14 02 00FFE302 DCX3 02 00FFE37D DCX4 02 00FFE391
DCX5 02 00FFE36C DCX6 02 00FFE316 DCX7 02 00FFE312 DCX8 02 00FFE323
DCX9 02 00FFE330 DELAY3S 02 00FFE1A1 DFL1 02 00FFFDBB DFL2 02 00FFFDA8
DIRECT 00 00000001 DIS1 02 00FFF7EF DIS10 02 00FFF572 DIS11 02 00FFF5AE
DIS12 02 00FFF5EB DIS13 02 00FFF627 DIS14 02 00FFF668 DIS15 02 00FFF6A4
DIS16 02 00FFF6E1 DIS17 02 00FFF724 DIS18 02 00FFF76C DIS19 02 00FFF81B
DIS2 02 00FFF411 DIS20 02 00FFF3DA DIS21 02 00FFF40F DIS23 02 00FFF3DD
DIS24 02 00FFF81E DIS25 02 00FFF82B DIS3 02 00FFF43A DIS30 02 00FFF7BA
DIS4 02 00FFF457 DIS5 02 00FFF468 DIS6 02 00FFF49C DIS7 02 00FFF4D3
DIS8 02 00FFF507 DIS9 02 00FFF53E DISASSEM 02 00FFF3B4 DISLOOP1 02 00FFF3BF
DISNDXREG 02 00FFF874 DISNDXREGS 02 00FFF850 DISNEXTLINE 02 00FFF842 DISNOT9 02 00FFF44C
DISNOTAOFFS 02 00FFF5D6 DISNOTBO 02 00FFF613 DISNOTBOFFS 02 00FFF59A DISNOTDIRECT 02 00FFF40B
DISNOTDOFFS 02 00FFF6CC DISNOTEXT 02 00FFF7C4 DISNOTIMMB 02 00FFF7D5 DISNOTIMMW 02 00FFF7E5
DISNOTLREL 02 00FFF41B DISNOTNDX 02 00FFF7AD DISNOTPBO 02 00FFF710 DISNOTPTO 02 00FFF79B
DISNOTPWO 02 00FFF753 DISNOTR 02 00FFF55E DISNOTREL 02 00FFF424 DISNOTRMINUS 02 00FFF4F8
DISNOTRMINUSMINUS 02 00FFF52F DISNOTRPLUS 02 00FFF48D DISNOTRPLUSPLUS 02 00FFF4C4 DISNOTTFR 02 00FFF7EF
DISNOTTO 02 00FFF690 DISNOTWO 02 00FFF64F DISPBYTEASHEX 02 00FFE40A DISPDWORDASHEX 02 00FFE3F8
DISPLAYCHAR 02 00FFE2F5 DISPLAYERR 02 00FFFAF5 DISPLAYSTRING 02 00FFE3B6 DISPLAYSTRINGCRLF 02 00FFE3CD
DISPLAYSTRINGDX 02 00FFFAFE DISPNYB 02 00FFE422 DISPNYB1 02 00FFE431 DISPWORDASHEX 02 00FFE401
DISTBL1 02 00FFEDB4 DISTBL2 02 00FFF2B4 DISTBL3 02 00FFF2F4 DISTBL4 02 00FFF314
DISTFR1 02 00FFF8A3 DISTFREXG 02 00FFF8A5 DISTFRREG 02 00FFF889 DISTFRREGS 02 00FFF854
DLY3S1 02 00FFE1A4 DLY3S2 02 00FFE1A8 DMPM1 02 00FFFC65 DMPM2 02 00FFFC50
DMPM3 02 00FFFC9E DMPM4 02 00FFFC90 DMPM5 02 00FFFC88 DRAM_BASE 00 10000000
DSPJ1B 02 00FFE3BF DSPJ2 02 00FFE3BA DSRETB 02 00FFE3C8 DUMPASMBUF 02 00FFF8D3
DUMPIOFOCUSLIST 02 00FFFDA5 DUMPMEMORY 02 00FFFC48 DUMPREGS 02 00FFFCE4 DUMRTS 02 00FFE022
EDITMEM1 02 00FFFCC2 EDITMEM2 02 00FFFCAD EDITMEM3 02 00FFFCE1 EDITMEM4 02 00FFFCCC
EDITMEM6 02 00FFFCD8 EDITMEMORY 02 00FFFCA4 EXT 00 00000006 FAREXT 00 00000008
FARFLAG 00 0000015F FIRQ_ROUT 02 00FFFE25 FIRST_CORE 00 00000001 FREEMBX 02 00000002
FREEMSG 02 00000006 FREETCB 00 0000078A GETHEXNUMBER 02 00FFFA8F GETKEY 02 00FFEA12
GETRANGE 02 00FFFA66 GETSCREENLOCATION 02 00FFE286 GETTWOPARAMS 02 00FFFA45 GRNG1 02 00FFFA81
GSL1 02 00FFE294 GTDC3 02 00FFFAF2 GTHX3 02 00FFFAE4 GTHX5 02 00FFFACA
GTHX6 02 00FFFAD7 GTHXN1 02 00FFFABB GTHXN2 02 00FFFA9C HC1 02 00FFE2AE
HELPMSG 02 00FFFB0E HEX2 02 00FFD2CE HEX4 02 00FFD2D2 HOMECURSOR 02 00FFE298
HOMECURSORJMP 02 00FFD308 I2CW1 02 00FFE492 I2CWR1 02 00FFE4BF 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 00FFE4BD I2C_WAIT_TIP 02 00FFE490
I2C_WR_CMD 02 00FFE49A ICC1 02 00FFE3B2 ICC2 02 00FFE3B4 ICR1 02 00FFE3A4
IGNBLANKS 02 00FFFA3C IGNBLANKS1 02 00FFFA3C IMMB 00 00000003 IMMW 00 00000007
INCCURSORPOS 02 00FFE393 INCCURSORROW 02 00FFE3A2 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 00FFE09A INIT1 02 00FFE0A2
INITSERIAL 02 00FFEB6F IOFOCUSID 00 00FF0010 IOFOCUSLIST 00 00FF0000 IOFOCUSNDX 00 00000100
IRQBASE 00 00FF0014 IRQFLAG 00 00FF0012 IRQSOURCE 00 00FF0011 IRQ_ROUT 02 00FFFE26
JTC_EXIT 02 00FFFD6A JUMP_TO_CODE 02 00FFFD2F 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 MONERRVEC 00 0000080C MONGETCH 02 00FFFA30
MONGETNONSPACE 02 00FFFA35 MONITOR 02 00FFF92E MONITORSTART 02 00FFF910 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
ACIA_RX 00 00000000 ACIA_STAT 00 00000001 ACIA_TX 00 00000000 ARM1 02 00FFF4AA
ARM2 02 00FFF496 ARMALLBREAKPOINTS 02 00FFF48D ARMBREAKPOINT 02 00FFF4AC ASCIITODECNYBBLE 02 00FFF047
ASCIITOHEXNYBBLE 02 00FFF01F ASMBUF 00 00000160 BIOS_SCREENS 00 17000000 BLANKLINE 02 00FFE275
BLKCPYDST 00 00000020 BLKCPYSRC 00 0000001C BLNKLN1 02 00FFE288 BOOTPG 02 00FFF3B3
BOOT_STACK 02 00FFF3B4 BREAKPOINTBYTES 00 00000830 BREAKPOINTFLAG 00 00000810 BREAKPOINTS 00 00000820
CALCSCREENLOC 02 00FFE2DB CHARCOLOR 00 00000112 CHARINVEC 00 00000804 CHAROUTVEC 00 00000800
CHECKPOINT 02 00FFE132 CLEARSCREEN 02 00FFE22E CLEARSCREENJMP 02 00FFD300 CMDPROMPT 02 00FFEE30
CMDPROMPTJI 00 00000808 CMDTABLE1 02 00FFEDE3 CMDTABLE2 02 00FFEE0E COLORCODELOCATION 00 00000014
COLS 00 00000040 COPYSCREENTOVIRTUALSCREEN 02 00FFE1FE COPYVIRTUALSCREENTOSCREEN 02 00FFE1C7 COREID 00 FFFFFFE0
CR 00 0000000D CRLF 02 00FFD0D2 CRLF1 02 00FFD0D2 CRLFST 02 00FFE3FE
CS1 02 00FFE23B CS2 02 00FFE252 CS2V1 02 00FFE20A CS3 02 00FFE258
CSL1 02 00FFE2F6 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 00FFE1DC 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 00FFE30E DCLF 02 00FFE398
DCX10 02 00FFE348 DCX11 02 00FFE358 DCX12 02 00FFE354 DCX13 02 00FFE364
DCX14 02 00FFE30B DCX3 02 00FFE386 DCX4 02 00FFE39A DCX5 02 00FFE375
DCX6 02 00FFE31F DCX7 02 00FFE31B DCX8 02 00FFE32C DCX9 02 00FFE339
DELAY3S 02 00FFE1AA DFL1 02 00FFF3A6 DFL2 02 00FFF393 DISARM1 02 00FFF48B
DISARM2 02 00FFF477 DISARM3 02 00FFF51A DISARM4 02 00FFF51F DISARM6 02 00FFF4DC
DISARM7 02 00FFF4FD DISARM8 02 00FFF50F DISARMALLBREAKPOINTS 02 00FFF46E DISARMBREAKPOINT 02 00FFF4D3
DISPBYTEASHEX 02 00FFE413 DISPDWORDASHEX 02 00FFE401 DISPLAYCHAR 02 00FFE2FE DISPLAYERR 02 00FFF055
DISPLAYSTRING 02 00FFE3BF DISPLAYSTRINGCRLF 02 00FFE3D6 DISPLAYSTRINGDX 02 00FFF05E DISPNYB 02 00FFE42B
DISPNYB1 02 00FFE43A DISPWORDASHEX 02 00FFE40A DLY3S1 02 00FFE1AD DLY3S2 02 00FFE1B1
DMPM1 02 00FFF226 DMPM2 02 00FFF211 DMPM3 02 00FFF25F DMPM4 02 00FFF251
DMPM5 02 00FFF249 DRAMERR 02 00FFD48F DRAMTEST 02 00FFD443 DRAMTEST1 02 00FFD453
DRAMTEST3 02 00FFD46F DRAMTEST4 02 00FFD460 DRAMTEST5 02 00FFD47C DRAM_BASE 00 10000000
DSPJ1B 02 00FFE3C8 DSPJ2 02 00FFE3C3 DSRETB 02 00FFE3D1 DUMPIOFOCUSLIST 02 00FFF390
DUMPMEMORY 02 00FFF209 DUMPREGS 02 00FFF2CF DUMRTS 02 00FFE022 EDITMEM1 02 00FFF283
EDITMEM2 02 00FFF26E EDITMEM3 02 00FFF2A2 EDITMEM4 02 00FFF28D EDITMEM6 02 00FFF299
EDITMEMORY 02 00FFF265 ENDOFWORD 02 00FFEF06 FARFLAG 00 0000015F FILLM1 02 00FFF2B5
FILLM2 02 00FFF2C5 FILLM3 02 00FFF2CC FILLMEMORY 02 00FFF2A5 FIRQ_ROUT 02 00FFF55D
FIRST_CORE 00 00000001 FREEMBX 02 00000002 FREEMSG 02 00000006 FREETCB 00 0000078A
GETHEXNUMBER 02 00FFEFEF GETKEY 02 00FFEA12 GETRANGE 02 00FFEFC6 GETSCREENLOCATION 02 00FFE28F
GETTWOPARAMS 02 00FFEFA5 GRNG1 02 00FFEFE1 GSL1 02 00FFE29D GTDC3 02 00FFF052
GTHX3 02 00FFF044 GTHX5 02 00FFF02A GTHX6 02 00FFF037 GTHXN1 02 00FFF01B
GTHXN2 02 00FFEFFC HC1 02 00FFE2B7 HELPMSG 02 00FFF06E HEX2 02 00FFD2CE
HEX4 02 00FFD2D2 HOMECURSOR 02 00FFE2A1 HOMECURSORJMP 02 00FFD308 I2CW1 02 00FFE49B
I2CWR1 02 00FFE4C8 I2C_CMD 00 00000004 I2C_CTRL 00 00000002 I2C_INIT 02 00FFE48F
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 00FFE4C6 I2C_WAIT_TIP 02 00FFE499 I2C_WR_CMD 02 00FFE4A3
I2C_XMIT1 02 00FFE4AC ICC1 02 00FFE3BB ICC2 02 00FFE3BD ICR1 02 00FFE3AD
IGNBLANKS 02 00FFEF53 IGNBLANKS1 02 00FFEF53 INCCURSORPOS 02 00FFE39C INCCURSORROW 02 00FFE3AB
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 00FFE09E INIT1 02 00FFE0A6 INITSERIAL 02 00FFEB6F IOFOCUSID 00 00FFC010
IOFOCUSLIST 00 00FFC000 IOFOCUSNDX 00 00000100 IRQBASE 00 00FFC014 IRQFLAG 00 00FFC012
IRQSOURCE 00 00FFC011 IRQ_ROUT 02 00FFF55E JMPVEC 00 00000928 JTC_EXIT 02 00FFF355
JUMP_TO_CODE 02 00FFF31A 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 MAX_TASKNO 00 0000003F
MF_CRLF 00 00000003 MF_DISPLAYBYTEASHEX 00 00000005 MF_DISPLAYSTRING 00 00000004 MF_DISPLAYWORDASHEX 00 00000006
MF_GETRANGE 00 0000000B MF_INCH 00 00000001 MF_MONITOR 00 00000000 MF_OSCALL 00 0000000A
MF_OUTCH 00 00000002 MF_RANDOM 00 00000009 MF_SHOWSPRITES 00 00000007 MF_SRAND 00 00000008
MONERRVEC 00 0000080C MONGETCH 02 00FFEF47 MONGETNONSPACE 02 00FFEF4C MONITOR 02 00FFEEA7
MONITORSTART 02 00FFEE60 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_RAND 02 00FFEDCE MON_ROM_VECS 02 00FFF3B9 MON_ROM_VECTAB 02 00FFF3B7 MON_SRAND 02 00FFEDA0
MON_SRAND1 02 00FFEDA3 MON_SSAVE 00 00000908 MON_USAVE 00 00000906 MON_VECTB 00 00000880
MON_XSAVE 00 00000902 MON_YSAVE 00 00000904 MSCOUNT 00 FFFFFFE4 MSGBADKEYBD 02 00FFE9AE
MSGERR 02 00FFFB06 MSGF09STARTING 02 00FFF8EB MSGREGHEADINGS 02 00FFFC05 MSGSERIALTEST 02 00FFECC5
MSGSTARTUP 02 00FFE108 MULTI_SIEVE 02 00FFE13F MULTI_SIEVE1 02 00FFE162 MULTI_SIEVE2 02 00FFE15E
MULTI_SIEVE3 02 00FFE14C MULTI_SIEVE4 02 00FFE175 NDX 00 00000005 NHEX4 02 00FFFC3F
NMAILBOX 02 00000004 NMESERIAL 02 00FFEC8E NMIBASE 00 00FF0013 NMI_ROUT 02 00FFFE55
NMSGBLK 02 00000008 NOTKBDIRQ 02 00FFEA0C NOTRXINT 02 00FFEC8D NOTTIMERIRQ 02 00FFE485
NOTTIMERIRQ2 02 00FFFE48 NXBLANK 02 00FFFC43 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 00FFE3E1 PDATA 02 00FFE3EE
PIC 00 FFE3F000 PICPTR 00 00000028 PRINT 02 00FFE3EB PROMPT1 02 00FFF95B
PROMPT2 02 00FFF987 PROMPT2A 02 00FFF9A5 PROMPT3 02 00FFF94C PROMPTC 02 00FFF9C3
PROMPTCOLON 02 00FFF9DB PROMPTD 02 00FFF9CF PROMPTF 02 00FFF9E2 PROMPTFL 02 00FFF9F5
PROMPTHELP 02 00FFF9B7 PROMPTJ 02 00FFF9FC PROMPTLN 02 00FFF948 PROMPTR 02 00FFFA01
PROMPTT 02 00FFFA14 PROMPTU 02 00FFFA29 PROMPT_S 02 00FFFA0B PSTRNG 02 00FFE3DD
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 00FFE12F ROMTORAM1 02 00FFE135 RTC 00 FFE30500
RTCBUF 00 00007FC0 RTCR0001 02 00FFE4ED RTCW0001 02 00FFE538 RTC_READ 02 00FFE4C7
RTC_RXERR 02 00FFE516 RTC_WRITE 02 00FFE51A RTI_INSN 02 00FFFE61 RUNNINGID 00 00800000
RUNNINGTCB 06 00000000 SCREENCOLOR 00 00000113 SCREENLOCATION 00 00000010 SCREENLOCATION2 00 00000018
SCROLLUP 02 00FFE251 SCRUP1 02 00FFE25E 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 00FFE1B3 SHL_NUMWKA 02 00FFFA82 SHOWSPRITES 02 00FFED1C SIEVE 02 00FFE179
SIEVE1 02 00FFE191 SIEVE2 02 00FFE18D SIEVE3 02 00FFE17E SIEVE4 02 00FFE1A0
SINI1 02 00FFEB82 SIRQ0001 02 00FFEC4D SIRQNXTBYTE 02 00FFEC3B SIRQRXFULL 02 00FFEC8D
SKIPDOLLAR 02 00FFF97A SKIP_INIT 02 00FFE0D5 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 00FFE0B4 ST3 02 00FFE091 ST6 02 00FFE03C
ST7 02 00FFE046 ST8 02 00FFE046 ST9 02 00FFE05A START 02 00FFE023
STRPTR 00 00000024 SWI3_EXIT 02 00FFFDF7 SWI3_ROUT 02 00FFFDC8 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 00FFE221 TEXTOPEN 02 00FFE220
TEXTREAD 02 00FFE222 TEXTREG 00 FFE0DF00 TEXTSCR 00 FFE00000 TEXTSEEK 02 00FFE224
TEXTWRITE 02 00FFE223 TEXT_COLS 00 00000000 TEXT_CURPOS 00 00000022 TEXT_ROWS 00 00000001
TFREXG 00 00000009 TIMEOUTLIST 00 0000078C TIMERINIT 02 00FFE438 TIMERIRQ 02 00FFE463
TR1A 02 00FFFE54 UCP1 02 00FFE2D0 UNSHIFTEDSCANCODES 02 00FFE580 UPDATECURSORPOS 02 00FFE2B0
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
545 SYMBOLS
MSGERR 02 00FFF066 MSGF09STARTING 02 00FFEE3B MSGREGHEADINGS 02 00FFF1C6 MSGSERIALTEST 02 00FFECC5
MSGSTARTUP 02 00FFE111 MULTI_SIEVE 02 00FFE148 MULTI_SIEVE1 02 00FFE16B MULTI_SIEVE2 02 00FFE167
MULTI_SIEVE3 02 00FFE155 MULTI_SIEVE4 02 00FFE17E NHEX4 02 00FFF200 NMAILBOX 02 00000004
NMESERIAL 02 00FFEC8E NMIBASE 00 00FFC013 NMI_ROUT 02 00FFF56E NMSGBLK 02 00000008
NOTKBDIRQ 02 00FFEA0C NOTRXINT 02 00FFEC8D NOTTIMERIRQ 02 00FFE48E NUMBREAKPOINTS 02 00FFF3B6
NUMFUNCS 00 0000000D NUMOSFUNCS 00 00000019 NUMSETBREAKPOINTS 00 00000811 NXBLANK 02 00FFF204
ONEKEY 02 00FFD1DC OSC1 02 00FFF467 OSCALLTBL 02 00FFED27 OSCX 02 00FFF469
OSSEMA 00 00EF0010 OUTCH 02 00FFED12 OUTSEMA 00 00EF0000 PARSECMD1 02 00FFEEF1
PCRLF 02 00FFE3EA PDATA 02 00FFE3F7 PIC 00 FFE3F000 PICPTR 00 00000028
PRINT 02 00FFE3F4 PRNG 00 FFE30600 PROCESSBREAKPOINT 02 00FFF41E PROMPT1 02 00FFEED4
PROMPT2A 02 00FFEF25 PROMPT3 02 00FFEEC5 PROMPTCLEARSCREEN 02 00FFEF3F PROMPTHELP 02 00FFEF37
PROMPTLN 02 00FFEEC1 PSTRNG 02 00FFE3E6 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 REDIRECT 02 00FFEF11
RELEASEIOFOCUS 02 00FFED70 REQUESTIOFOCUS 02 00FFED59 RIOF1 02 00FFED97 RIOF2 02 00FFED86
ROMTORAM 02 00FFE138 ROMTORAM1 02 00FFE13E ROWS 00 00000020 RTC 00 FFE30500
RTCBUF 00 00007FC0 RTCR0001 02 00FFE4F6 RTCW0001 02 00FFE541 RTC_READ 02 00FFE4D0
RTC_RXERR 02 00FFE51F RTC_WRITE 02 00FFE523 RTI_INSN 02 00FFF57A RUNNINGID 00 00FFC013
RUNNINGTCB 06 00000000 SCANNEXTWORD 02 00FFEEFB SCREENCOLOR 00 00000113 SCREENLOCATION 00 00000010
SCREENLOCATION2 00 00000018 SCROLLUP 02 00FFE25A SCRUP1 02 00FFE267 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 00FFE1BC SHL_NUMWKA 02 00FFEFE2 SHOWSPRITES 02 00FFED1C
SIEVE 02 00FFE182 SIEVE1 02 00FFE19A SIEVE2 02 00FFE196 SIEVE3 02 00FFE187
SIEVE4 02 00FFE1A9 SINI1 02 00FFEB82 SIRQ0001 02 00FFEC4D SIRQNXTBYTE 02 00FFEC3B
SIRQRXFULL 02 00FFEC8D SKIPDOLLAR 02 00FFEEE3 SKIP_INIT 02 00FFE0DE 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 ST1 02 00FFE0B8 ST3 02 00FFE095 ST6 02 00FFE03F
ST7 02 00FFE049 ST8 02 00FFE049 ST9 02 00FFE063 START 02 00FFE023
STRPTR 00 00000024 SWI3_EXIT 02 00FFF559 SWI3_ROUT 02 00FFF521 SWICALLOS 02 00FFF454
SWINOTBKPT 02 00FFF3EE SWI_ROUT 02 00FFF3D1 SWI_ROUT1 02 00FFF3D6 SWI_ROUT2 02 00FFF3E7
SWI_ROUT3 02 00FFF41A 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 00FFE22A TEXTOPEN 02 00FFE229 TEXTREAD 02 00FFE22B TEXTREG 00 FFE07F00
TEXTSCR 00 FFE00000 TEXTSEEK 02 00FFE22D TEXTWRITE 02 00FFE22C TEXT_COLS 00 00000000
TEXT_CURPOS 00 00000022 TEXT_ROWS 00 00000001 TIMEOUTLIST 00 0000078C TIMERINIT 02 00FFE441
TIMERIRQ 02 00FFE46C TIMES10 02 00FFEF5C TR1A 02 00FFF56D UCP1 02 00FFE2D9
UNSHIFTEDSCANCODES 02 00FFE580 UPDATECURSORPOS 02 00FFE2B9 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 XITMONITOR 02 00FFF451 XOFF 00 00000013 XON 00 00000011
528 SYMBOLS
 
0 error(s), 1726 warning(s)
3 error(s), 592 warning(s)
/rf6809/trunk/software/boot/boot_rom.ver
36,18 → 36,18
rommem[ 4813] <= 12'h012;
rommem[ 4814] <= 12'h017;
rommem[ 4815] <= 12'h001;
rommem[ 4816] <= 12'h139;
rommem[ 4816] <= 12'h142;
rommem[ 4817] <= 12'h039;
rommem[ 4818] <= 12'h017;
rommem[ 4819] <= 12'h001;
rommem[ 4820] <= 12'h12C;
rommem[ 4820] <= 12'h135;
rommem[ 4821] <= 12'h039;
rommem[ 4864] <= 12'h016;
rommem[ 4865] <= 12'h000;
rommem[ 4866] <= 12'hF22;
rommem[ 4866] <= 12'hF2B;
rommem[ 4872] <= 12'h016;
rommem[ 4873] <= 12'h000;
rommem[ 4874] <= 12'hF8D;
rommem[ 4874] <= 12'hF96;
rommem[ 5120] <= 12'h18E;
rommem[ 5121] <= 12'h000;
rommem[ 5122] <= 12'h000;
115,8 → 115,107
rommem[ 5184] <= 12'h013;
rommem[ 5185] <= 12'h06E;
rommem[ 5186] <= 12'hC04;
rommem[ 8192] <= 12'hFFF;
rommem[ 8193] <= 12'h92E;
rommem[ 5187] <= 12'h18E;
rommem[ 5188] <= 12'h010;
rommem[ 5189] <= 12'h000;
rommem[ 5190] <= 12'h086;
rommem[ 5191] <= 12'h001;
rommem[ 5192] <= 12'h015;
rommem[ 5193] <= 12'h0B7;
rommem[ 5194] <= 12'hFFF;
rommem[ 5195] <= 12'hE60;
rommem[ 5196] <= 12'h001;
rommem[ 5197] <= 12'h0CE;
rommem[ 5198] <= 12'hAAA;
rommem[ 5199] <= 12'h555;
rommem[ 5200] <= 12'h017;
rommem[ 5201] <= 12'hFFF;
rommem[ 5202] <= 12'hC7F;
rommem[ 5203] <= 12'h04A;
rommem[ 5204] <= 12'h026;
rommem[ 5205] <= 12'h00A;
rommem[ 5206] <= 12'h01F;
rommem[ 5207] <= 12'h020;
rommem[ 5208] <= 12'h017;
rommem[ 5209] <= 12'h000;
rommem[ 5210] <= 12'hFAF;
rommem[ 5211] <= 12'h0C6;
rommem[ 5212] <= 12'h00D;
rommem[ 5213] <= 12'h017;
rommem[ 5214] <= 12'h001;
rommem[ 5215] <= 12'h8B2;
rommem[ 5216] <= 12'h0EF;
rommem[ 5217] <= 12'hA01;
rommem[ 5218] <= 12'h18C;
rommem[ 5219] <= 12'hE00;
rommem[ 5220] <= 12'h000;
rommem[ 5221] <= 12'h025;
rommem[ 5222] <= 12'hFEC;
rommem[ 5223] <= 12'h18E;
rommem[ 5224] <= 12'h010;
rommem[ 5225] <= 12'h000;
rommem[ 5226] <= 12'h086;
rommem[ 5227] <= 12'h001;
rommem[ 5228] <= 12'h017;
rommem[ 5229] <= 12'hFFF;
rommem[ 5230] <= 12'hC63;
rommem[ 5231] <= 12'h04A;
rommem[ 5232] <= 12'h026;
rommem[ 5233] <= 12'h00A;
rommem[ 5234] <= 12'h01F;
rommem[ 5235] <= 12'h020;
rommem[ 5236] <= 12'h017;
rommem[ 5237] <= 12'h000;
rommem[ 5238] <= 12'hF93;
rommem[ 5239] <= 12'h0C6;
rommem[ 5240] <= 12'h00D;
rommem[ 5241] <= 12'h017;
rommem[ 5242] <= 12'h001;
rommem[ 5243] <= 12'h896;
rommem[ 5244] <= 12'h2A3;
rommem[ 5245] <= 12'hA01;
rommem[ 5246] <= 12'h026;
rommem[ 5247] <= 12'h00F;
rommem[ 5248] <= 12'h18C;
rommem[ 5249] <= 12'hE00;
rommem[ 5250] <= 12'h000;
rommem[ 5251] <= 12'h025;
rommem[ 5252] <= 12'hFEA;
rommem[ 5253] <= 12'h086;
rommem[ 5254] <= 12'h002;
rommem[ 5255] <= 12'h015;
rommem[ 5256] <= 12'h0B7;
rommem[ 5257] <= 12'hFFF;
rommem[ 5258] <= 12'hE60;
rommem[ 5259] <= 12'h001;
rommem[ 5260] <= 12'h016;
rommem[ 5261] <= 12'h001;
rommem[ 5262] <= 12'hA18;
rommem[ 5263] <= 12'h086;
rommem[ 5264] <= 12'h080;
rommem[ 5265] <= 12'h015;
rommem[ 5266] <= 12'h0B7;
rommem[ 5267] <= 12'hFFF;
rommem[ 5268] <= 12'hE60;
rommem[ 5269] <= 12'h001;
rommem[ 5270] <= 12'h08E;
rommem[ 5271] <= 12'hE00;
rommem[ 5272] <= 12'h000;
rommem[ 5273] <= 12'h015;
rommem[ 5274] <= 12'h0F6;
rommem[ 5275] <= 12'hFFF;
rommem[ 5276] <= 12'hFFF;
rommem[ 5277] <= 12'hFE0;
rommem[ 5278] <= 12'h03A;
rommem[ 5279] <= 12'h086;
rommem[ 5280] <= 12'h046;
rommem[ 5281] <= 12'h0A7;
rommem[ 5282] <= 12'h804;
rommem[ 5283] <= 12'h016;
rommem[ 5284] <= 12'h001;
rommem[ 5285] <= 12'hA01;
rommem[ 8192] <= 12'hFFE;
rommem[ 8193] <= 12'hEA7;
rommem[ 8194] <= 12'hFFE;
rommem[ 8195] <= 12'h022;
rommem[ 8196] <= 12'hFFE;
128,11 → 227,11
rommem[ 8202] <= 12'hFFE;
rommem[ 8203] <= 12'hD12;
rommem[ 8204] <= 12'hFFE;
rommem[ 8205] <= 12'h3EE;
rommem[ 8205] <= 12'h3F7;
rommem[ 8206] <= 12'hFFE;
rommem[ 8207] <= 12'h3E1;
rommem[ 8207] <= 12'h3EA;
rommem[ 8208] <= 12'hFFE;
rommem[ 8209] <= 12'h3DD;
rommem[ 8209] <= 12'h3E6;
rommem[ 8210] <= 12'hFFE;
rommem[ 8211] <= 12'h022;
rommem[ 8212] <= 12'hFFE;
144,7 → 243,7
rommem[ 8218] <= 12'hFFE;
rommem[ 8219] <= 12'h022;
rommem[ 8220] <= 12'hFFE;
rommem[ 8221] <= 12'h2F5;
rommem[ 8221] <= 12'h2FE;
rommem[ 8222] <= 12'hFFE;
rommem[ 8223] <= 12'h022;
rommem[ 8224] <= 12'hFFE;
169,1322 → 268,1331
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[ 8246] <= 12'h0B7;
rommem[ 8247] <= 12'hEF1;
rommem[ 8248] <= 12'h000;
rommem[ 8249] <= 12'h0CE;
rommem[ 8250] <= 12'hFFE;
rommem[ 8251] <= 12'h03F;
rommem[ 8252] <= 12'h07E;
rommem[ 8253] <= 12'hFFD;
rommem[ 8254] <= 12'h400;
rommem[ 8255] <= 12'h1CE;
rommem[ 8256] <= 12'h006;
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'h159;
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[ 8258] <= 12'h015;
rommem[ 8259] <= 12'h0B6;
rommem[ 8260] <= 12'hFFF;
rommem[ 8261] <= 12'hFFF;
rommem[ 8262] <= 12'hFE0;
rommem[ 8263] <= 12'h081;
rommem[ 8264] <= 12'h001;
rommem[ 8265] <= 12'h08D;
rommem[ 8266] <= 12'h15F;
rommem[ 8267] <= 12'h07F;
rommem[ 8268] <= 12'h000;
rommem[ 8269] <= 12'h810;
rommem[ 8270] <= 12'h07F;
rommem[ 8271] <= 12'h000;
rommem[ 8272] <= 12'h811;
rommem[ 8273] <= 12'h086;
rommem[ 8274] <= 12'h0AA;
rommem[ 8275] <= 12'h015;
rommem[ 8276] <= 12'h0B7;
rommem[ 8277] <= 12'h800;
rommem[ 8278] <= 12'h000;
rommem[ 8279] <= 12'h08E;
rommem[ 8280] <= 12'h000;
rommem[ 8281] <= 12'h000;
rommem[ 8282] <= 12'h06F;
rommem[ 8283] <= 12'h80A;
rommem[ 8284] <= 12'h000;
rommem[ 8285] <= 12'hFF0;
rommem[ 8286] <= 12'h000;
rommem[ 8287] <= 12'h030;
rommem[ 8288] <= 12'h001;
rommem[ 8289] <= 12'h08C;
rommem[ 8277] <= 12'hFFF;
rommem[ 8278] <= 12'hE60;
rommem[ 8279] <= 12'h001;
rommem[ 8280] <= 12'h086;
rommem[ 8281] <= 12'h001;
rommem[ 8282] <= 12'h0B7;
rommem[ 8283] <= 12'hFFC;
rommem[ 8284] <= 12'h010;
rommem[ 8285] <= 12'h0B7;
rommem[ 8286] <= 12'hFFC;
rommem[ 8287] <= 12'h013;
rommem[ 8288] <= 12'h08E;
rommem[ 8289] <= 12'h000;
rommem[ 8290] <= 12'h000;
rommem[ 8291] <= 12'h010;
rommem[ 8292] <= 12'h025;
rommem[ 8293] <= 12'hFF4;
rommem[ 8294] <= 12'h086;
rommem[ 8295] <= 12'h018;
rommem[ 8296] <= 12'h0B7;
rommem[ 8297] <= 12'hFF0;
rommem[ 8298] <= 12'h001;
rommem[ 8299] <= 12'h086;
rommem[ 8300] <= 12'h0CE;
rommem[ 8301] <= 12'h097;
rommem[ 8302] <= 12'h113;
rommem[ 8303] <= 12'h097;
rommem[ 8304] <= 12'h112;
rommem[ 8305] <= 12'h08D;
rommem[ 8306] <= 12'h1B2;
rommem[ 8307] <= 12'h0CC;
rommem[ 8308] <= 12'hFFE;
rommem[ 8309] <= 12'h2F5;
rommem[ 8310] <= 12'h0FD;
rommem[ 8311] <= 12'h000;
rommem[ 8312] <= 12'h800;
rommem[ 8313] <= 12'h0CC;
rommem[ 8314] <= 12'hFFE;
rommem[ 8315] <= 12'hBE4;
rommem[ 8316] <= 12'h0FD;
rommem[ 8317] <= 12'h000;
rommem[ 8318] <= 12'h804;
rommem[ 8319] <= 12'h0C6;
rommem[ 8320] <= 12'h018;
rommem[ 8321] <= 12'h017;
rommem[ 8322] <= 12'h000;
rommem[ 8323] <= 12'hCD5;
rommem[ 8324] <= 12'h015;
rommem[ 8325] <= 12'h0F6;
rommem[ 8326] <= 12'hFFF;
rommem[ 8327] <= 12'hFFF;
rommem[ 8328] <= 12'hFE0;
rommem[ 8329] <= 12'h0C1;
rommem[ 8330] <= 12'h001;
rommem[ 8331] <= 12'h027;
rommem[ 8332] <= 12'h00D;
rommem[ 8333] <= 12'h020;
rommem[ 8334] <= 12'h046;
rommem[ 8335] <= 12'h020;
rommem[ 8336] <= 12'h0AE;
rommem[ 8337] <= 12'h086;
rommem[ 8338] <= 12'h0FF;
rommem[ 8339] <= 12'h015;
rommem[ 8340] <= 12'h0B7;
rommem[ 8341] <= 12'hFFF;
rommem[ 8342] <= 12'hE60;
rommem[ 8343] <= 12'h001;
rommem[ 8344] <= 12'h020;
rommem[ 8345] <= 12'hFF7;
rommem[ 8346] <= 12'h017;
rommem[ 8347] <= 12'h000;
rommem[ 8348] <= 12'h42A;
rommem[ 8349] <= 12'h08E;
rommem[ 8350] <= 12'h000;
rommem[ 8351] <= 12'h127;
rommem[ 8352] <= 12'h0C6;
rommem[ 8353] <= 12'h020;
rommem[ 8354] <= 12'h06F;
rommem[ 8355] <= 12'h800;
rommem[ 8356] <= 12'h05A;
rommem[ 8357] <= 12'h026;
rommem[ 8358] <= 12'hFFB;
rommem[ 8359] <= 12'h017;
rommem[ 8360] <= 12'h000;
rommem[ 8361] <= 12'h38E;
rommem[ 8362] <= 12'h017;
rommem[ 8363] <= 12'h000;
rommem[ 8364] <= 12'hAC2;
rommem[ 8365] <= 12'h08E;
rommem[ 8366] <= 12'h000;
rommem[ 8367] <= 12'h080;
rommem[ 8368] <= 12'h086;
rommem[ 8369] <= 12'h001;
rommem[ 8370] <= 12'h0C6;
rommem[ 8371] <= 12'h001;
rommem[ 8372] <= 12'h06F;
rommem[ 8373] <= 12'h809;
rommem[ 8374] <= 12'hE3F;
rommem[ 8375] <= 12'h000;
rommem[ 8376] <= 12'h0A7;
rommem[ 8291] <= 12'h06F;
rommem[ 8292] <= 12'h80A;
rommem[ 8293] <= 12'h000;
rommem[ 8294] <= 12'hFFC;
rommem[ 8295] <= 12'h000;
rommem[ 8296] <= 12'h030;
rommem[ 8297] <= 12'h001;
rommem[ 8298] <= 12'h08C;
rommem[ 8299] <= 12'h000;
rommem[ 8300] <= 12'h010;
rommem[ 8301] <= 12'h025;
rommem[ 8302] <= 12'hFF4;
rommem[ 8303] <= 12'h086;
rommem[ 8304] <= 12'h018;
rommem[ 8305] <= 12'h0B7;
rommem[ 8306] <= 12'hFFC;
rommem[ 8307] <= 12'h001;
rommem[ 8308] <= 12'h086;
rommem[ 8309] <= 12'h0CE;
rommem[ 8310] <= 12'h097;
rommem[ 8311] <= 12'h113;
rommem[ 8312] <= 12'h097;
rommem[ 8313] <= 12'h112;
rommem[ 8314] <= 12'h08D;
rommem[ 8315] <= 12'h1B2;
rommem[ 8316] <= 12'h0CC;
rommem[ 8317] <= 12'hFFE;
rommem[ 8318] <= 12'h2FE;
rommem[ 8319] <= 12'h0FD;
rommem[ 8320] <= 12'h000;
rommem[ 8321] <= 12'h800;
rommem[ 8322] <= 12'h0CC;
rommem[ 8323] <= 12'hFFE;
rommem[ 8324] <= 12'hBE4;
rommem[ 8325] <= 12'h0FD;
rommem[ 8326] <= 12'h000;
rommem[ 8327] <= 12'h804;
rommem[ 8328] <= 12'h015;
rommem[ 8329] <= 12'h0F6;
rommem[ 8330] <= 12'hFFF;
rommem[ 8331] <= 12'hFFF;
rommem[ 8332] <= 12'hFE0;
rommem[ 8333] <= 12'h0C1;
rommem[ 8334] <= 12'h001;
rommem[ 8335] <= 12'h027;
rommem[ 8336] <= 12'h00D;
rommem[ 8337] <= 12'h020;
rommem[ 8338] <= 12'h04B;
rommem[ 8339] <= 12'h020;
rommem[ 8340] <= 12'h0B3;
rommem[ 8341] <= 12'h086;
rommem[ 8342] <= 12'h0FF;
rommem[ 8343] <= 12'h015;
rommem[ 8344] <= 12'h0B7;
rommem[ 8345] <= 12'hFFF;
rommem[ 8346] <= 12'hE60;
rommem[ 8347] <= 12'h001;
rommem[ 8348] <= 12'h020;
rommem[ 8349] <= 12'hFF7;
rommem[ 8350] <= 12'h017;
rommem[ 8351] <= 12'h000;
rommem[ 8352] <= 12'h42F;
rommem[ 8353] <= 12'h08E;
rommem[ 8354] <= 12'h000;
rommem[ 8355] <= 12'h127;
rommem[ 8356] <= 12'h0C6;
rommem[ 8357] <= 12'h020;
rommem[ 8358] <= 12'h06F;
rommem[ 8359] <= 12'h800;
rommem[ 8360] <= 12'h05A;
rommem[ 8361] <= 12'h026;
rommem[ 8362] <= 12'hFFB;
rommem[ 8363] <= 12'h017;
rommem[ 8364] <= 12'h000;
rommem[ 8365] <= 12'h393;
rommem[ 8366] <= 12'h017;
rommem[ 8367] <= 12'h000;
rommem[ 8368] <= 12'hABE;
rommem[ 8369] <= 12'h08E;
rommem[ 8370] <= 12'h000;
rommem[ 8371] <= 12'h080;
rommem[ 8372] <= 12'h086;
rommem[ 8373] <= 12'h001;
rommem[ 8374] <= 12'h0C6;
rommem[ 8375] <= 12'h001;
rommem[ 8376] <= 12'h06F;
rommem[ 8377] <= 12'h809;
rommem[ 8378] <= 12'hE3F;
rommem[ 8379] <= 12'h001;
rommem[ 8380] <= 12'h0E7;
rommem[ 8379] <= 12'h000;
rommem[ 8380] <= 12'h0A7;
rommem[ 8381] <= 12'h809;
rommem[ 8382] <= 12'hE3F;
rommem[ 8383] <= 12'h002;
rommem[ 8384] <= 12'h030;
rommem[ 8385] <= 12'h004;
rommem[ 8386] <= 12'h08C;
rommem[ 8387] <= 12'h000;
rommem[ 8388] <= 12'h100;
rommem[ 8389] <= 12'h025;
rommem[ 8390] <= 12'hFED;
rommem[ 8391] <= 12'h086;
rommem[ 8392] <= 12'h081;
rommem[ 8393] <= 12'h015;
rommem[ 8394] <= 12'h0B7;
rommem[ 8395] <= 12'hFFF;
rommem[ 8396] <= 12'hE3F;
rommem[ 8397] <= 12'h0FD;
rommem[ 8398] <= 12'h086;
rommem[ 8399] <= 12'h01F;
rommem[ 8400] <= 12'h0C6;
rommem[ 8401] <= 12'h001;
rommem[ 8402] <= 12'h0F7;
rommem[ 8403] <= 12'hEF1;
rommem[ 8404] <= 12'h000;
rommem[ 8405] <= 12'h01C;
rommem[ 8406] <= 12'h0EF;
rommem[ 8407] <= 12'h086;
rommem[ 8408] <= 12'h038;
rommem[ 8409] <= 12'h015;
rommem[ 8410] <= 12'h0B7;
rommem[ 8411] <= 12'hFFF;
rommem[ 8412] <= 12'hE0D;
rommem[ 8413] <= 12'hF00;
rommem[ 8414] <= 12'h086;
rommem[ 8415] <= 12'h01D;
rommem[ 8416] <= 12'h015;
rommem[ 8417] <= 12'h0B7;
rommem[ 8418] <= 12'hFFF;
rommem[ 8419] <= 12'hE0D;
rommem[ 8420] <= 12'hF01;
rommem[ 8421] <= 12'h08D;
rommem[ 8422] <= 12'h13E;
rommem[ 8423] <= 12'h08D;
rommem[ 8424] <= 12'h1AF;
rommem[ 8425] <= 12'h086;
rommem[ 8426] <= 12'h005;
rommem[ 8427] <= 12'h015;
rommem[ 8428] <= 12'h0B7;
rommem[ 8429] <= 12'hFFF;
rommem[ 8430] <= 12'hE60;
rommem[ 8431] <= 12'h001;
rommem[ 8432] <= 12'h0CC;
rommem[ 8433] <= 12'hFFE;
rommem[ 8434] <= 12'h108;
rommem[ 8435] <= 12'h08D;
rommem[ 8436] <= 12'h2C1;
rommem[ 8437] <= 12'h08E;
rommem[ 8438] <= 12'h000;
rommem[ 8439] <= 12'h000;
rommem[ 8440] <= 12'h0CC;
rommem[ 8441] <= 12'h000;
rommem[ 8442] <= 12'h000;
rommem[ 8443] <= 12'h017;
rommem[ 8444] <= 12'h000;
rommem[ 8445] <= 12'hC1E;
rommem[ 8446] <= 12'h017;
rommem[ 8383] <= 12'h001;
rommem[ 8384] <= 12'h0E7;
rommem[ 8385] <= 12'h809;
rommem[ 8386] <= 12'hE3F;
rommem[ 8387] <= 12'h002;
rommem[ 8388] <= 12'h030;
rommem[ 8389] <= 12'h004;
rommem[ 8390] <= 12'h08C;
rommem[ 8391] <= 12'h000;
rommem[ 8392] <= 12'h100;
rommem[ 8393] <= 12'h025;
rommem[ 8394] <= 12'hFED;
rommem[ 8395] <= 12'h086;
rommem[ 8396] <= 12'h081;
rommem[ 8397] <= 12'h015;
rommem[ 8398] <= 12'h0B7;
rommem[ 8399] <= 12'hFFF;
rommem[ 8400] <= 12'hE3F;
rommem[ 8401] <= 12'h0FD;
rommem[ 8402] <= 12'h086;
rommem[ 8403] <= 12'h01F;
rommem[ 8404] <= 12'h015;
rommem[ 8405] <= 12'h0B7;
rommem[ 8406] <= 12'hFFF;
rommem[ 8407] <= 12'hE3F;
rommem[ 8408] <= 12'h009;
rommem[ 8409] <= 12'h0C6;
rommem[ 8410] <= 12'h001;
rommem[ 8411] <= 12'h0F7;
rommem[ 8412] <= 12'hEF1;
rommem[ 8413] <= 12'h000;
rommem[ 8414] <= 12'h01C;
rommem[ 8415] <= 12'h0EF;
rommem[ 8416] <= 12'h086;
rommem[ 8417] <= 12'h040;
rommem[ 8418] <= 12'h015;
rommem[ 8419] <= 12'h0B7;
rommem[ 8420] <= 12'hFFF;
rommem[ 8421] <= 12'hE07;
rommem[ 8422] <= 12'hF00;
rommem[ 8423] <= 12'h086;
rommem[ 8424] <= 12'h020;
rommem[ 8425] <= 12'h015;
rommem[ 8426] <= 12'h0B7;
rommem[ 8427] <= 12'hFFF;
rommem[ 8428] <= 12'hE07;
rommem[ 8429] <= 12'hF01;
rommem[ 8430] <= 12'h08D;
rommem[ 8431] <= 12'h13E;
rommem[ 8432] <= 12'h08D;
rommem[ 8433] <= 12'h1AF;
rommem[ 8434] <= 12'h086;
rommem[ 8435] <= 12'h005;
rommem[ 8436] <= 12'h015;
rommem[ 8437] <= 12'h0B7;
rommem[ 8438] <= 12'hFFF;
rommem[ 8439] <= 12'hE60;
rommem[ 8440] <= 12'h001;
rommem[ 8441] <= 12'h0CC;
rommem[ 8442] <= 12'hFFE;
rommem[ 8443] <= 12'h111;
rommem[ 8444] <= 12'h08D;
rommem[ 8445] <= 12'h2C1;
rommem[ 8446] <= 12'h08E;
rommem[ 8447] <= 12'h000;
rommem[ 8448] <= 12'h83F;
rommem[ 8449] <= 12'h0DC;
rommem[ 8450] <= 12'h124;
rommem[ 8451] <= 12'h08D;
rommem[ 8452] <= 12'h2FC;
rommem[ 8453] <= 12'h07E;
rommem[ 8454] <= 12'hFFF;
rommem[ 8455] <= 12'h910;
rommem[ 8456] <= 12'h072;
rommem[ 8457] <= 12'h066;
rommem[ 8458] <= 12'h036;
rommem[ 8459] <= 12'h038;
rommem[ 8460] <= 12'h030;
rommem[ 8461] <= 12'h039;
rommem[ 8462] <= 12'h020;
rommem[ 8463] <= 12'h031;
rommem[ 8464] <= 12'h032;
rommem[ 8465] <= 12'h02D;
rommem[ 8466] <= 12'h062;
rommem[ 8467] <= 12'h069;
rommem[ 8468] <= 12'h074;
rommem[ 8469] <= 12'h020;
rommem[ 8470] <= 12'h053;
rommem[ 8471] <= 12'h079;
rommem[ 8472] <= 12'h073;
rommem[ 8473] <= 12'h074;
rommem[ 8474] <= 12'h065;
rommem[ 8475] <= 12'h06D;
rommem[ 8476] <= 12'h020;
rommem[ 8477] <= 12'h053;
rommem[ 8478] <= 12'h074;
rommem[ 8479] <= 12'h061;
rommem[ 8480] <= 12'h072;
rommem[ 8481] <= 12'h074;
rommem[ 8482] <= 12'h069;
rommem[ 8483] <= 12'h06E;
rommem[ 8484] <= 12'h067;
rommem[ 8485] <= 12'h02E;
rommem[ 8486] <= 12'h00D;
rommem[ 8487] <= 12'h00A;
rommem[ 8488] <= 12'h000;
rommem[ 8489] <= 12'h015;
rommem[ 8490] <= 12'h07F;
rommem[ 8491] <= 12'hFFF;
rommem[ 8492] <= 12'hFFF;
rommem[ 8493] <= 12'hFE1;
rommem[ 8494] <= 12'h039;
rommem[ 8495] <= 12'h08E;
rommem[ 8496] <= 12'hFFC;
rommem[ 8448] <= 12'h000;
rommem[ 8449] <= 12'h0CC;
rommem[ 8450] <= 12'h000;
rommem[ 8451] <= 12'h000;
rommem[ 8452] <= 12'h017;
rommem[ 8453] <= 12'h000;
rommem[ 8454] <= 12'hC15;
rommem[ 8455] <= 12'h017;
rommem[ 8456] <= 12'h000;
rommem[ 8457] <= 12'h836;
rommem[ 8458] <= 12'h0DC;
rommem[ 8459] <= 12'h124;
rommem[ 8460] <= 12'h08D;
rommem[ 8461] <= 12'h2FC;
rommem[ 8462] <= 12'h07E;
rommem[ 8463] <= 12'hFFE;
rommem[ 8464] <= 12'hE60;
rommem[ 8465] <= 12'h072;
rommem[ 8466] <= 12'h066;
rommem[ 8467] <= 12'h036;
rommem[ 8468] <= 12'h038;
rommem[ 8469] <= 12'h030;
rommem[ 8470] <= 12'h039;
rommem[ 8471] <= 12'h020;
rommem[ 8472] <= 12'h031;
rommem[ 8473] <= 12'h032;
rommem[ 8474] <= 12'h02D;
rommem[ 8475] <= 12'h062;
rommem[ 8476] <= 12'h069;
rommem[ 8477] <= 12'h074;
rommem[ 8478] <= 12'h020;
rommem[ 8479] <= 12'h053;
rommem[ 8480] <= 12'h079;
rommem[ 8481] <= 12'h073;
rommem[ 8482] <= 12'h074;
rommem[ 8483] <= 12'h065;
rommem[ 8484] <= 12'h06D;
rommem[ 8485] <= 12'h020;
rommem[ 8486] <= 12'h053;
rommem[ 8487] <= 12'h074;
rommem[ 8488] <= 12'h061;
rommem[ 8489] <= 12'h072;
rommem[ 8490] <= 12'h074;
rommem[ 8491] <= 12'h069;
rommem[ 8492] <= 12'h06E;
rommem[ 8493] <= 12'h067;
rommem[ 8494] <= 12'h02E;
rommem[ 8495] <= 12'h00D;
rommem[ 8496] <= 12'h00A;
rommem[ 8497] <= 12'h000;
rommem[ 8498] <= 12'h18E;
rommem[ 8499] <= 12'h00C;
rommem[ 8500] <= 12'h000;
rommem[ 8501] <= 12'h0EC;
rommem[ 8502] <= 12'h801;
rommem[ 8503] <= 12'h0ED;
rommem[ 8504] <= 12'hA01;
rommem[ 8505] <= 12'h08C;
rommem[ 8498] <= 12'h015;
rommem[ 8499] <= 12'h07F;
rommem[ 8500] <= 12'hFFF;
rommem[ 8501] <= 12'hFFF;
rommem[ 8502] <= 12'hFE1;
rommem[ 8503] <= 12'h039;
rommem[ 8504] <= 12'h08E;
rommem[ 8505] <= 12'hFFC;
rommem[ 8506] <= 12'h000;
rommem[ 8507] <= 12'h000;
rommem[ 8508] <= 12'h026;
rommem[ 8509] <= 12'hFF7;
rommem[ 8510] <= 12'h039;
rommem[ 8511] <= 12'h086;
rommem[ 8512] <= 12'h050;
rommem[ 8513] <= 12'h015;
rommem[ 8514] <= 12'h0F6;
rommem[ 8515] <= 12'hFFF;
rommem[ 8516] <= 12'hFFF;
rommem[ 8517] <= 12'hFE0;
rommem[ 8518] <= 12'h0C0;
rommem[ 8519] <= 12'h001;
rommem[ 8520] <= 12'h08E;
rommem[ 8521] <= 12'h000;
rommem[ 8522] <= 12'h000;
rommem[ 8523] <= 12'h03A;
rommem[ 8524] <= 12'h0A7;
rommem[ 8525] <= 12'h809;
rommem[ 8526] <= 12'hE00;
rommem[ 8527] <= 12'h000;
rommem[ 8528] <= 12'h030;
rommem[ 8529] <= 12'h008;
rommem[ 8530] <= 12'h08C;
rommem[ 8507] <= 12'h18E;
rommem[ 8508] <= 12'h00C;
rommem[ 8509] <= 12'h000;
rommem[ 8510] <= 12'h0EC;
rommem[ 8511] <= 12'h801;
rommem[ 8512] <= 12'h0ED;
rommem[ 8513] <= 12'hA01;
rommem[ 8514] <= 12'h08C;
rommem[ 8515] <= 12'h000;
rommem[ 8516] <= 12'h000;
rommem[ 8517] <= 12'h026;
rommem[ 8518] <= 12'hFF7;
rommem[ 8519] <= 12'h039;
rommem[ 8520] <= 12'h086;
rommem[ 8521] <= 12'h050;
rommem[ 8522] <= 12'h015;
rommem[ 8523] <= 12'h0F6;
rommem[ 8524] <= 12'hFFF;
rommem[ 8525] <= 12'hFFF;
rommem[ 8526] <= 12'hFE0;
rommem[ 8527] <= 12'h0C0;
rommem[ 8528] <= 12'h001;
rommem[ 8529] <= 12'h08E;
rommem[ 8530] <= 12'h000;
rommem[ 8531] <= 12'h000;
rommem[ 8532] <= 12'hFFF;
rommem[ 8533] <= 12'h025;
rommem[ 8534] <= 12'hFF5;
rommem[ 8535] <= 12'h0BD;
rommem[ 8536] <= 12'hFFE;
rommem[ 8537] <= 12'h129;
rommem[ 8538] <= 12'h0CB;
rommem[ 8539] <= 12'h002;
rommem[ 8540] <= 12'h086;
rommem[ 8541] <= 12'h04E;
rommem[ 8542] <= 12'h08E;
rommem[ 8543] <= 12'h000;
rommem[ 8544] <= 12'h000;
rommem[ 8545] <= 12'h03A;
rommem[ 8546] <= 12'h03A;
rommem[ 8547] <= 12'h0A7;
rommem[ 8548] <= 12'h809;
rommem[ 8549] <= 12'hE00;
rommem[ 8550] <= 12'h000;
rommem[ 8551] <= 12'h08C;
rommem[ 8532] <= 12'h03A;
rommem[ 8533] <= 12'h0A7;
rommem[ 8534] <= 12'h809;
rommem[ 8535] <= 12'hE00;
rommem[ 8536] <= 12'h000;
rommem[ 8537] <= 12'h030;
rommem[ 8538] <= 12'h008;
rommem[ 8539] <= 12'h08C;
rommem[ 8540] <= 12'h000;
rommem[ 8541] <= 12'hFFF;
rommem[ 8542] <= 12'h025;
rommem[ 8543] <= 12'hFF5;
rommem[ 8544] <= 12'h0BD;
rommem[ 8545] <= 12'hFFE;
rommem[ 8546] <= 12'h132;
rommem[ 8547] <= 12'h0CB;
rommem[ 8548] <= 12'h002;
rommem[ 8549] <= 12'h086;
rommem[ 8550] <= 12'h04E;
rommem[ 8551] <= 12'h08E;
rommem[ 8552] <= 12'h000;
rommem[ 8553] <= 12'hFFF;
rommem[ 8554] <= 12'h025;
rommem[ 8555] <= 12'hFF6;
rommem[ 8556] <= 12'h0BD;
rommem[ 8557] <= 12'hFFE;
rommem[ 8558] <= 12'h129;
rommem[ 8559] <= 12'h0CB;
rommem[ 8560] <= 12'h008;
rommem[ 8561] <= 12'h0C1;
rommem[ 8562] <= 12'hFF0;
rommem[ 8553] <= 12'h000;
rommem[ 8554] <= 12'h03A;
rommem[ 8555] <= 12'h03A;
rommem[ 8556] <= 12'h0A7;
rommem[ 8557] <= 12'h809;
rommem[ 8558] <= 12'hE00;
rommem[ 8559] <= 12'h000;
rommem[ 8560] <= 12'h08C;
rommem[ 8561] <= 12'h000;
rommem[ 8562] <= 12'hFFF;
rommem[ 8563] <= 12'h025;
rommem[ 8564] <= 12'hFE9;
rommem[ 8565] <= 12'h013;
rommem[ 8566] <= 12'h016;
rommem[ 8567] <= 12'h001;
rommem[ 8568] <= 12'h7B5;
rommem[ 8569] <= 12'h086;
rommem[ 8570] <= 12'h050;
rommem[ 8571] <= 12'h08E;
rommem[ 8572] <= 12'h000;
rommem[ 8573] <= 12'h000;
rommem[ 8574] <= 12'h0A7;
rommem[ 8575] <= 12'h809;
rommem[ 8576] <= 12'hE00;
rommem[ 8577] <= 12'h000;
rommem[ 8578] <= 12'h030;
rommem[ 8579] <= 12'h001;
rommem[ 8580] <= 12'h08C;
rommem[ 8564] <= 12'hFF6;
rommem[ 8565] <= 12'h0BD;
rommem[ 8566] <= 12'hFFE;
rommem[ 8567] <= 12'h132;
rommem[ 8568] <= 12'h0CB;
rommem[ 8569] <= 12'h008;
rommem[ 8570] <= 12'h0C1;
rommem[ 8571] <= 12'hFF0;
rommem[ 8572] <= 12'h025;
rommem[ 8573] <= 12'hFE9;
rommem[ 8574] <= 12'h013;
rommem[ 8575] <= 12'h016;
rommem[ 8576] <= 12'h000;
rommem[ 8577] <= 12'hD25;
rommem[ 8578] <= 12'h086;
rommem[ 8579] <= 12'h050;
rommem[ 8580] <= 12'h08E;
rommem[ 8581] <= 12'h000;
rommem[ 8582] <= 12'hFFF;
rommem[ 8583] <= 12'h025;
rommem[ 8584] <= 12'hFF5;
rommem[ 8585] <= 12'h0C6;
rommem[ 8586] <= 12'h002;
rommem[ 8587] <= 12'h086;
rommem[ 8588] <= 12'h04E;
rommem[ 8589] <= 12'h08E;
rommem[ 8582] <= 12'h000;
rommem[ 8583] <= 12'h0A7;
rommem[ 8584] <= 12'h809;
rommem[ 8585] <= 12'hE00;
rommem[ 8586] <= 12'h000;
rommem[ 8587] <= 12'h030;
rommem[ 8588] <= 12'h001;
rommem[ 8589] <= 12'h08C;
rommem[ 8590] <= 12'h000;
rommem[ 8591] <= 12'h000;
rommem[ 8592] <= 12'h03A;
rommem[ 8593] <= 12'h03A;
rommem[ 8594] <= 12'h0A7;
rommem[ 8595] <= 12'h809;
rommem[ 8596] <= 12'hE00;
rommem[ 8597] <= 12'h000;
rommem[ 8598] <= 12'h08C;
rommem[ 8591] <= 12'hFFF;
rommem[ 8592] <= 12'h025;
rommem[ 8593] <= 12'hFF5;
rommem[ 8594] <= 12'h0C6;
rommem[ 8595] <= 12'h002;
rommem[ 8596] <= 12'h086;
rommem[ 8597] <= 12'h04E;
rommem[ 8598] <= 12'h08E;
rommem[ 8599] <= 12'h000;
rommem[ 8600] <= 12'hFFF;
rommem[ 8601] <= 12'h025;
rommem[ 8602] <= 12'hFC7;
rommem[ 8603] <= 12'h05C;
rommem[ 8604] <= 12'h0C1;
rommem[ 8605] <= 12'hFF0;
rommem[ 8606] <= 12'h025;
rommem[ 8607] <= 12'hFED;
rommem[ 8608] <= 12'h039;
rommem[ 8609] <= 12'h0CC;
rommem[ 8610] <= 12'h895;
rommem[ 8611] <= 12'h440;
rommem[ 8612] <= 12'h0C1;
rommem[ 8613] <= 12'h0FF;
rommem[ 8614] <= 12'h026;
rommem[ 8615] <= 12'h000;
rommem[ 8616] <= 12'h015;
rommem[ 8617] <= 12'h0B7;
rommem[ 8618] <= 12'hFFF;
rommem[ 8619] <= 12'hE60;
rommem[ 8620] <= 12'h001;
rommem[ 8621] <= 12'h083;
rommem[ 8622] <= 12'h000;
rommem[ 8623] <= 12'h001;
rommem[ 8624] <= 12'h026;
rommem[ 8625] <= 12'hFF2;
rommem[ 8626] <= 12'h039;
rommem[ 8627] <= 12'h058;
rommem[ 8628] <= 12'h049;
rommem[ 8629] <= 12'h058;
rommem[ 8630] <= 12'h049;
rommem[ 8631] <= 12'h058;
rommem[ 8632] <= 12'h049;
rommem[ 8633] <= 12'h058;
rommem[ 8634] <= 12'h049;
rommem[ 8635] <= 12'h058;
rommem[ 8636] <= 12'h049;
rommem[ 8637] <= 12'h039;
rommem[ 8638] <= 12'h034;
rommem[ 8639] <= 12'h076;
rommem[ 8640] <= 12'h01F;
rommem[ 8641] <= 12'h098;
rommem[ 8642] <= 12'h048;
rommem[ 8643] <= 12'h048;
rommem[ 8644] <= 12'h048;
rommem[ 8645] <= 12'h048;
rommem[ 8646] <= 12'h08A;
rommem[ 8647] <= 12'hC00;
rommem[ 8648] <= 12'h05F;
rommem[ 8600] <= 12'h000;
rommem[ 8601] <= 12'h03A;
rommem[ 8602] <= 12'h03A;
rommem[ 8603] <= 12'h0A7;
rommem[ 8604] <= 12'h809;
rommem[ 8605] <= 12'hE00;
rommem[ 8606] <= 12'h000;
rommem[ 8607] <= 12'h08C;
rommem[ 8608] <= 12'h000;
rommem[ 8609] <= 12'hFFF;
rommem[ 8610] <= 12'h025;
rommem[ 8611] <= 12'hFC7;
rommem[ 8612] <= 12'h05C;
rommem[ 8613] <= 12'h0C1;
rommem[ 8614] <= 12'hFF0;
rommem[ 8615] <= 12'h025;
rommem[ 8616] <= 12'hFED;
rommem[ 8617] <= 12'h039;
rommem[ 8618] <= 12'h0CC;
rommem[ 8619] <= 12'h895;
rommem[ 8620] <= 12'h440;
rommem[ 8621] <= 12'h0C1;
rommem[ 8622] <= 12'h0FF;
rommem[ 8623] <= 12'h026;
rommem[ 8624] <= 12'h000;
rommem[ 8625] <= 12'h015;
rommem[ 8626] <= 12'h0B7;
rommem[ 8627] <= 12'hFFF;
rommem[ 8628] <= 12'hE60;
rommem[ 8629] <= 12'h001;
rommem[ 8630] <= 12'h083;
rommem[ 8631] <= 12'h000;
rommem[ 8632] <= 12'h001;
rommem[ 8633] <= 12'h026;
rommem[ 8634] <= 12'hFF2;
rommem[ 8635] <= 12'h039;
rommem[ 8636] <= 12'h058;
rommem[ 8637] <= 12'h049;
rommem[ 8638] <= 12'h058;
rommem[ 8639] <= 12'h049;
rommem[ 8640] <= 12'h058;
rommem[ 8641] <= 12'h049;
rommem[ 8642] <= 12'h058;
rommem[ 8643] <= 12'h049;
rommem[ 8644] <= 12'h058;
rommem[ 8645] <= 12'h049;
rommem[ 8646] <= 12'h039;
rommem[ 8647] <= 12'h034;
rommem[ 8648] <= 12'h076;
rommem[ 8649] <= 12'h01F;
rommem[ 8650] <= 12'h001;
rommem[ 8651] <= 12'h034;
rommem[ 8652] <= 12'h006;
rommem[ 8653] <= 12'h18E;
rommem[ 8654] <= 12'hE00;
rommem[ 8655] <= 12'h000;
rommem[ 8656] <= 12'h0CE;
rommem[ 8657] <= 12'h000;
rommem[ 8658] <= 12'h32C;
rommem[ 8659] <= 12'h0EC;
rommem[ 8660] <= 12'h801;
rommem[ 8661] <= 12'h0ED;
rommem[ 8662] <= 12'hA01;
rommem[ 8663] <= 12'h033;
rommem[ 8664] <= 12'h5FF;
rommem[ 8665] <= 12'h283;
rommem[ 8650] <= 12'h098;
rommem[ 8651] <= 12'h048;
rommem[ 8652] <= 12'h048;
rommem[ 8653] <= 12'h048;
rommem[ 8654] <= 12'h048;
rommem[ 8655] <= 12'h08A;
rommem[ 8656] <= 12'hC00;
rommem[ 8657] <= 12'h05F;
rommem[ 8658] <= 12'h01F;
rommem[ 8659] <= 12'h001;
rommem[ 8660] <= 12'h034;
rommem[ 8661] <= 12'h006;
rommem[ 8662] <= 12'h18E;
rommem[ 8663] <= 12'hE00;
rommem[ 8664] <= 12'h000;
rommem[ 8665] <= 12'h0CE;
rommem[ 8666] <= 12'h000;
rommem[ 8667] <= 12'h000;
rommem[ 8668] <= 12'h026;
rommem[ 8669] <= 12'hFF5;
rommem[ 8670] <= 12'h035;
rommem[ 8671] <= 12'h010;
rommem[ 8672] <= 12'h0E6;
rommem[ 8673] <= 12'h808;
rommem[ 8674] <= 12'h110;
rommem[ 8675] <= 12'h086;
rommem[ 8676] <= 12'h038;
rommem[ 8677] <= 12'h03D;
rommem[ 8678] <= 12'h01F;
rommem[ 8679] <= 12'h002;
rommem[ 8680] <= 12'h0E6;
rommem[ 8681] <= 12'h808;
rommem[ 8682] <= 12'h111;
rommem[ 8683] <= 12'h01F;
rommem[ 8684] <= 12'h021;
rommem[ 8685] <= 12'h03A;
rommem[ 8686] <= 12'h015;
rommem[ 8687] <= 12'h0BF;
rommem[ 8688] <= 12'hFFF;
rommem[ 8689] <= 12'hE0D;
rommem[ 8690] <= 12'hF22;
rommem[ 8691] <= 12'h035;
rommem[ 8692] <= 12'h0F6;
rommem[ 8693] <= 12'h034;
rommem[ 8694] <= 12'h076;
rommem[ 8695] <= 12'h08D;
rommem[ 8696] <= 12'h08D;
rommem[ 8697] <= 12'h01F;
rommem[ 8698] <= 12'h002;
rommem[ 8699] <= 12'h08E;
rommem[ 8700] <= 12'hE00;
rommem[ 8701] <= 12'h000;
rommem[ 8702] <= 12'h0CE;
rommem[ 8703] <= 12'h000;
rommem[ 8704] <= 12'h32C;
rommem[ 8705] <= 12'h0EC;
rommem[ 8706] <= 12'h801;
rommem[ 8707] <= 12'h0ED;
rommem[ 8708] <= 12'hA01;
rommem[ 8709] <= 12'h033;
rommem[ 8710] <= 12'h5FF;
rommem[ 8711] <= 12'h283;
rommem[ 8667] <= 12'h400;
rommem[ 8668] <= 12'h0EC;
rommem[ 8669] <= 12'h801;
rommem[ 8670] <= 12'h0ED;
rommem[ 8671] <= 12'hA01;
rommem[ 8672] <= 12'h033;
rommem[ 8673] <= 12'h5FF;
rommem[ 8674] <= 12'h283;
rommem[ 8675] <= 12'h000;
rommem[ 8676] <= 12'h000;
rommem[ 8677] <= 12'h026;
rommem[ 8678] <= 12'hFF5;
rommem[ 8679] <= 12'h035;
rommem[ 8680] <= 12'h010;
rommem[ 8681] <= 12'h0E6;
rommem[ 8682] <= 12'h808;
rommem[ 8683] <= 12'h110;
rommem[ 8684] <= 12'h086;
rommem[ 8685] <= 12'h040;
rommem[ 8686] <= 12'h03D;
rommem[ 8687] <= 12'h01F;
rommem[ 8688] <= 12'h002;
rommem[ 8689] <= 12'h0E6;
rommem[ 8690] <= 12'h808;
rommem[ 8691] <= 12'h111;
rommem[ 8692] <= 12'h01F;
rommem[ 8693] <= 12'h021;
rommem[ 8694] <= 12'h03A;
rommem[ 8695] <= 12'h015;
rommem[ 8696] <= 12'h0BF;
rommem[ 8697] <= 12'hFFF;
rommem[ 8698] <= 12'hE07;
rommem[ 8699] <= 12'hF22;
rommem[ 8700] <= 12'h035;
rommem[ 8701] <= 12'h0F6;
rommem[ 8702] <= 12'h034;
rommem[ 8703] <= 12'h076;
rommem[ 8704] <= 12'h08D;
rommem[ 8705] <= 12'h08D;
rommem[ 8706] <= 12'h01F;
rommem[ 8707] <= 12'h002;
rommem[ 8708] <= 12'h08E;
rommem[ 8709] <= 12'hE00;
rommem[ 8710] <= 12'h000;
rommem[ 8711] <= 12'h0CE;
rommem[ 8712] <= 12'h000;
rommem[ 8713] <= 12'h000;
rommem[ 8714] <= 12'h026;
rommem[ 8715] <= 12'hFF5;
rommem[ 8716] <= 12'h035;
rommem[ 8717] <= 12'h0F6;
rommem[ 8718] <= 12'h054;
rommem[ 8719] <= 12'h045;
rommem[ 8720] <= 12'h058;
rommem[ 8721] <= 12'h054;
rommem[ 8722] <= 12'h053;
rommem[ 8723] <= 12'h043;
rommem[ 8724] <= 12'h052;
rommem[ 8725] <= 12'h020;
rommem[ 8726] <= 12'hFFE;
rommem[ 8727] <= 12'h220;
rommem[ 8728] <= 12'hFFE;
rommem[ 8729] <= 12'h221;
rommem[ 8730] <= 12'hFFE;
rommem[ 8731] <= 12'h222;
rommem[ 8732] <= 12'hFFE;
rommem[ 8733] <= 12'h223;
rommem[ 8734] <= 12'hFFE;
rommem[ 8735] <= 12'h224;
rommem[ 8736] <= 12'h039;
rommem[ 8737] <= 12'h039;
rommem[ 8738] <= 12'h039;
rommem[ 8739] <= 12'h039;
rommem[ 8740] <= 12'h039;
rommem[ 8741] <= 12'h034;
rommem[ 8742] <= 12'h076;
rommem[ 8743] <= 12'h08E;
rommem[ 8744] <= 12'h000;
rommem[ 8745] <= 12'h658;
rommem[ 8746] <= 12'h01F;
rommem[ 8747] <= 12'h013;
rommem[ 8748] <= 12'h08D;
rommem[ 8749] <= 12'h058;
rommem[ 8750] <= 12'h01F;
rommem[ 8751] <= 12'h002;
rommem[ 8752] <= 12'h0C6;
rommem[ 8753] <= 12'h020;
rommem[ 8754] <= 12'h0E7;
rommem[ 8755] <= 12'hA00;
rommem[ 8756] <= 12'h030;
rommem[ 8757] <= 12'h1FF;
rommem[ 8758] <= 12'h026;
rommem[ 8759] <= 12'hFFA;
rommem[ 8760] <= 12'h015;
rommem[ 8761] <= 12'h0F6;
rommem[ 8762] <= 12'hFFF;
rommem[ 8763] <= 12'hFFF;
rommem[ 8764] <= 12'hFE0;
rommem[ 8765] <= 12'h0F1;
rommem[ 8766] <= 12'hFF0;
rommem[ 8767] <= 12'h010;
rommem[ 8768] <= 12'h020;
rommem[ 8769] <= 12'h00D;
rommem[ 8770] <= 12'h18E;
rommem[ 8771] <= 12'hE02;
rommem[ 8772] <= 12'h000;
rommem[ 8773] <= 12'h086;
rommem[ 8774] <= 12'h0CE;
rommem[ 8775] <= 12'h01F;
rommem[ 8776] <= 12'h031;
rommem[ 8777] <= 12'h0A7;
rommem[ 8778] <= 12'hA00;
rommem[ 8779] <= 12'h030;
rommem[ 8780] <= 12'h1FF;
rommem[ 8781] <= 12'h026;
rommem[ 8782] <= 12'hFFA;
rommem[ 8783] <= 12'h035;
rommem[ 8784] <= 12'h0F6;
rommem[ 8785] <= 12'h034;
rommem[ 8786] <= 12'h076;
rommem[ 8787] <= 12'h18E;
rommem[ 8788] <= 12'h000;
rommem[ 8789] <= 12'h32B;
rommem[ 8790] <= 12'h08D;
rommem[ 8791] <= 12'h02E;
rommem[ 8792] <= 12'h01F;
rommem[ 8793] <= 12'h001;
rommem[ 8794] <= 12'h01F;
rommem[ 8795] <= 12'h003;
rommem[ 8796] <= 12'h030;
rommem[ 8797] <= 12'h038;
rommem[ 8798] <= 12'h0EC;
rommem[ 8799] <= 12'h801;
rommem[ 8800] <= 12'h0ED;
rommem[ 8801] <= 12'hC01;
rommem[ 8802] <= 12'h031;
rommem[ 8803] <= 12'h3FF;
rommem[ 8804] <= 12'h026;
rommem[ 8805] <= 12'hFF8;
rommem[ 8806] <= 12'h086;
rommem[ 8807] <= 12'h01D;
rommem[ 8808] <= 12'h08D;
rommem[ 8809] <= 12'h002;
rommem[ 8810] <= 12'h035;
rommem[ 8811] <= 12'h0F6;
rommem[ 8812] <= 12'h034;
rommem[ 8813] <= 12'h016;
rommem[ 8814] <= 12'h034;
rommem[ 8815] <= 12'h002;
rommem[ 8816] <= 12'h08D;
rommem[ 8817] <= 12'h014;
rommem[ 8818] <= 12'h01F;
rommem[ 8819] <= 12'h001;
rommem[ 8820] <= 12'h035;
rommem[ 8821] <= 12'h002;
rommem[ 8822] <= 12'h0C6;
rommem[ 8823] <= 12'h038;
rommem[ 8824] <= 12'h03D;
rommem[ 8825] <= 12'h030;
rommem[ 8826] <= 12'h80B;
rommem[ 8827] <= 12'h086;
rommem[ 8828] <= 12'h020;
rommem[ 8829] <= 12'h0C6;
rommem[ 8830] <= 12'h038;
rommem[ 8831] <= 12'h0A7;
rommem[ 8832] <= 12'h800;
rommem[ 8833] <= 12'h05A;
rommem[ 8834] <= 12'h026;
rommem[ 8835] <= 12'hFFB;
rommem[ 8836] <= 12'h035;
rommem[ 8837] <= 12'h096;
rommem[ 8838] <= 12'h015;
rommem[ 8839] <= 12'h0B6;
rommem[ 8840] <= 12'hFFF;
rommem[ 8841] <= 12'hFFF;
rommem[ 8842] <= 12'hFE0;
rommem[ 8843] <= 12'h0B1;
rommem[ 8844] <= 12'hFF0;
rommem[ 8845] <= 12'h010;
rommem[ 8846] <= 12'h026;
rommem[ 8847] <= 12'h004;
rommem[ 8848] <= 12'h0CC;
rommem[ 8849] <= 12'hE00;
rommem[ 8850] <= 12'h000;
rommem[ 8851] <= 12'h039;
rommem[ 8852] <= 12'h0CC;
rommem[ 8853] <= 12'h007;
rommem[ 8854] <= 12'h800;
rommem[ 8855] <= 12'h039;
rommem[ 8856] <= 12'h034;
rommem[ 8857] <= 12'h016;
rommem[ 8858] <= 12'h00F;
rommem[ 8859] <= 12'h110;
rommem[ 8860] <= 12'h00F;
rommem[ 8861] <= 12'h111;
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'h006;
rommem[ 8872] <= 12'h04F;
rommem[ 8873] <= 12'h015;
rommem[ 8874] <= 12'h0B7;
rommem[ 8875] <= 12'hFFF;
rommem[ 8876] <= 12'hE0D;
rommem[ 8877] <= 12'hF22;
rommem[ 8878] <= 12'h035;
rommem[ 8879] <= 12'h096;
rommem[ 8880] <= 12'h034;
rommem[ 8881] <= 12'h016;
rommem[ 8713] <= 12'h400;
rommem[ 8714] <= 12'h0EC;
rommem[ 8715] <= 12'h801;
rommem[ 8716] <= 12'h0ED;
rommem[ 8717] <= 12'hA01;
rommem[ 8718] <= 12'h033;
rommem[ 8719] <= 12'h5FF;
rommem[ 8720] <= 12'h283;
rommem[ 8721] <= 12'h000;
rommem[ 8722] <= 12'h000;
rommem[ 8723] <= 12'h026;
rommem[ 8724] <= 12'hFF5;
rommem[ 8725] <= 12'h035;
rommem[ 8726] <= 12'h0F6;
rommem[ 8727] <= 12'h054;
rommem[ 8728] <= 12'h045;
rommem[ 8729] <= 12'h058;
rommem[ 8730] <= 12'h054;
rommem[ 8731] <= 12'h053;
rommem[ 8732] <= 12'h043;
rommem[ 8733] <= 12'h052;
rommem[ 8734] <= 12'h020;
rommem[ 8735] <= 12'hFFE;
rommem[ 8736] <= 12'h229;
rommem[ 8737] <= 12'hFFE;
rommem[ 8738] <= 12'h22A;
rommem[ 8739] <= 12'hFFE;
rommem[ 8740] <= 12'h22B;
rommem[ 8741] <= 12'hFFE;
rommem[ 8742] <= 12'h22C;
rommem[ 8743] <= 12'hFFE;
rommem[ 8744] <= 12'h22D;
rommem[ 8745] <= 12'h039;
rommem[ 8746] <= 12'h039;
rommem[ 8747] <= 12'h039;
rommem[ 8748] <= 12'h039;
rommem[ 8749] <= 12'h039;
rommem[ 8750] <= 12'h034;
rommem[ 8751] <= 12'h076;
rommem[ 8752] <= 12'h08E;
rommem[ 8753] <= 12'h000;
rommem[ 8754] <= 12'h800;
rommem[ 8755] <= 12'h01F;
rommem[ 8756] <= 12'h013;
rommem[ 8757] <= 12'h08D;
rommem[ 8758] <= 12'h058;
rommem[ 8759] <= 12'h01F;
rommem[ 8760] <= 12'h002;
rommem[ 8761] <= 12'h0C6;
rommem[ 8762] <= 12'h020;
rommem[ 8763] <= 12'h0E7;
rommem[ 8764] <= 12'hA00;
rommem[ 8765] <= 12'h030;
rommem[ 8766] <= 12'h1FF;
rommem[ 8767] <= 12'h026;
rommem[ 8768] <= 12'hFFA;
rommem[ 8769] <= 12'h015;
rommem[ 8770] <= 12'h0F6;
rommem[ 8771] <= 12'hFFF;
rommem[ 8772] <= 12'hFFF;
rommem[ 8773] <= 12'hFE0;
rommem[ 8774] <= 12'h0F1;
rommem[ 8775] <= 12'hFFC;
rommem[ 8776] <= 12'h010;
rommem[ 8777] <= 12'h020;
rommem[ 8778] <= 12'h00D;
rommem[ 8779] <= 12'h18E;
rommem[ 8780] <= 12'hE02;
rommem[ 8781] <= 12'h000;
rommem[ 8782] <= 12'h086;
rommem[ 8783] <= 12'h0CE;
rommem[ 8784] <= 12'h01F;
rommem[ 8785] <= 12'h031;
rommem[ 8786] <= 12'h0A7;
rommem[ 8787] <= 12'hA00;
rommem[ 8788] <= 12'h030;
rommem[ 8789] <= 12'h1FF;
rommem[ 8790] <= 12'h026;
rommem[ 8791] <= 12'hFFA;
rommem[ 8792] <= 12'h035;
rommem[ 8793] <= 12'h0F6;
rommem[ 8794] <= 12'h034;
rommem[ 8795] <= 12'h076;
rommem[ 8796] <= 12'h18E;
rommem[ 8797] <= 12'h000;
rommem[ 8798] <= 12'h3FF;
rommem[ 8799] <= 12'h08D;
rommem[ 8800] <= 12'h02E;
rommem[ 8801] <= 12'h01F;
rommem[ 8802] <= 12'h001;
rommem[ 8803] <= 12'h01F;
rommem[ 8804] <= 12'h003;
rommem[ 8805] <= 12'h030;
rommem[ 8806] <= 12'h040;
rommem[ 8807] <= 12'h0EC;
rommem[ 8808] <= 12'h801;
rommem[ 8809] <= 12'h0ED;
rommem[ 8810] <= 12'hC01;
rommem[ 8811] <= 12'h031;
rommem[ 8812] <= 12'h3FF;
rommem[ 8813] <= 12'h026;
rommem[ 8814] <= 12'hFF8;
rommem[ 8815] <= 12'h086;
rommem[ 8816] <= 12'h01F;
rommem[ 8817] <= 12'h08D;
rommem[ 8818] <= 12'h002;
rommem[ 8819] <= 12'h035;
rommem[ 8820] <= 12'h0F6;
rommem[ 8821] <= 12'h034;
rommem[ 8822] <= 12'h016;
rommem[ 8823] <= 12'h034;
rommem[ 8824] <= 12'h002;
rommem[ 8825] <= 12'h08D;
rommem[ 8826] <= 12'h014;
rommem[ 8827] <= 12'h01F;
rommem[ 8828] <= 12'h001;
rommem[ 8829] <= 12'h035;
rommem[ 8830] <= 12'h002;
rommem[ 8831] <= 12'h0C6;
rommem[ 8832] <= 12'h040;
rommem[ 8833] <= 12'h03D;
rommem[ 8834] <= 12'h030;
rommem[ 8835] <= 12'h80B;
rommem[ 8836] <= 12'h086;
rommem[ 8837] <= 12'h020;
rommem[ 8838] <= 12'h0C6;
rommem[ 8839] <= 12'h040;
rommem[ 8840] <= 12'h0A7;
rommem[ 8841] <= 12'h800;
rommem[ 8842] <= 12'h05A;
rommem[ 8843] <= 12'h026;
rommem[ 8844] <= 12'hFFB;
rommem[ 8845] <= 12'h035;
rommem[ 8846] <= 12'h096;
rommem[ 8847] <= 12'h015;
rommem[ 8848] <= 12'h0B6;
rommem[ 8849] <= 12'hFFF;
rommem[ 8850] <= 12'hFFF;
rommem[ 8851] <= 12'hFE0;
rommem[ 8852] <= 12'h0B1;
rommem[ 8853] <= 12'hFFC;
rommem[ 8854] <= 12'h010;
rommem[ 8855] <= 12'h026;
rommem[ 8856] <= 12'h004;
rommem[ 8857] <= 12'h0CC;
rommem[ 8858] <= 12'hE00;
rommem[ 8859] <= 12'h000;
rommem[ 8860] <= 12'h039;
rommem[ 8861] <= 12'h0CC;
rommem[ 8862] <= 12'h007;
rommem[ 8863] <= 12'h800;
rommem[ 8864] <= 12'h039;
rommem[ 8865] <= 12'h034;
rommem[ 8866] <= 12'h016;
rommem[ 8867] <= 12'h00F;
rommem[ 8868] <= 12'h110;
rommem[ 8869] <= 12'h00F;
rommem[ 8870] <= 12'h111;
rommem[ 8871] <= 12'h015;
rommem[ 8872] <= 12'h0F6;
rommem[ 8873] <= 12'hFFF;
rommem[ 8874] <= 12'hFFF;
rommem[ 8875] <= 12'hFE0;
rommem[ 8876] <= 12'h0F1;
rommem[ 8877] <= 12'hFFC;
rommem[ 8878] <= 12'h010;
rommem[ 8879] <= 12'h026;
rommem[ 8880] <= 12'h006;
rommem[ 8881] <= 12'h04F;
rommem[ 8882] <= 12'h015;
rommem[ 8883] <= 12'h0F6;
rommem[ 8883] <= 12'h0B7;
rommem[ 8884] <= 12'hFFF;
rommem[ 8885] <= 12'hFFF;
rommem[ 8886] <= 12'hFE0;
rommem[ 8887] <= 12'h0F1;
rommem[ 8888] <= 12'hFF0;
rommem[ 8889] <= 12'h010;
rommem[ 8890] <= 12'h026;
rommem[ 8891] <= 12'h014;
rommem[ 8892] <= 12'h096;
rommem[ 8893] <= 12'h110;
rommem[ 8894] <= 12'h084;
rommem[ 8895] <= 12'h03F;
rommem[ 8896] <= 12'h015;
rommem[ 8897] <= 12'h0F6;
rommem[ 8898] <= 12'hFFF;
rommem[ 8899] <= 12'hE0D;
rommem[ 8900] <= 12'hF00;
rommem[ 8901] <= 12'h03D;
rommem[ 8902] <= 12'h01F;
rommem[ 8903] <= 12'h001;
rommem[ 8904] <= 12'h0D6;
rommem[ 8905] <= 12'h111;
rommem[ 8906] <= 12'h03A;
rommem[ 8907] <= 12'h015;
rommem[ 8908] <= 12'h0BF;
rommem[ 8909] <= 12'hFFF;
rommem[ 8910] <= 12'hE0D;
rommem[ 8911] <= 12'hF22;
rommem[ 8912] <= 12'h035;
rommem[ 8913] <= 12'h096;
rommem[ 8914] <= 12'h034;
rommem[ 8915] <= 12'h010;
rommem[ 8916] <= 12'h096;
rommem[ 8917] <= 12'h110;
rommem[ 8918] <= 12'h0C6;
rommem[ 8919] <= 12'h038;
rommem[ 8920] <= 12'h03D;
rommem[ 8921] <= 12'h01F;
rommem[ 8922] <= 12'h001;
rommem[ 8923] <= 12'h0D6;
rommem[ 8924] <= 12'h111;
rommem[ 8925] <= 12'h03A;
rommem[ 8926] <= 12'h015;
rommem[ 8927] <= 12'h0F6;
rommem[ 8928] <= 12'hFFF;
rommem[ 8929] <= 12'hFFF;
rommem[ 8930] <= 12'hFE0;
rommem[ 8931] <= 12'h0F1;
rommem[ 8932] <= 12'hFF0;
rommem[ 8933] <= 12'h010;
rommem[ 8934] <= 12'h026;
rommem[ 8935] <= 12'h005;
rommem[ 8936] <= 12'h015;
rommem[ 8937] <= 12'h0BF;
rommem[ 8885] <= 12'hE07;
rommem[ 8886] <= 12'hF22;
rommem[ 8887] <= 12'h035;
rommem[ 8888] <= 12'h096;
rommem[ 8889] <= 12'h034;
rommem[ 8890] <= 12'h016;
rommem[ 8891] <= 12'h015;
rommem[ 8892] <= 12'h0F6;
rommem[ 8893] <= 12'hFFF;
rommem[ 8894] <= 12'hFFF;
rommem[ 8895] <= 12'hFE0;
rommem[ 8896] <= 12'h0F1;
rommem[ 8897] <= 12'hFFC;
rommem[ 8898] <= 12'h010;
rommem[ 8899] <= 12'h026;
rommem[ 8900] <= 12'h014;
rommem[ 8901] <= 12'h096;
rommem[ 8902] <= 12'h110;
rommem[ 8903] <= 12'h084;
rommem[ 8904] <= 12'h03F;
rommem[ 8905] <= 12'h015;
rommem[ 8906] <= 12'h0F6;
rommem[ 8907] <= 12'hFFF;
rommem[ 8908] <= 12'hE07;
rommem[ 8909] <= 12'hF00;
rommem[ 8910] <= 12'h03D;
rommem[ 8911] <= 12'h01F;
rommem[ 8912] <= 12'h001;
rommem[ 8913] <= 12'h0D6;
rommem[ 8914] <= 12'h111;
rommem[ 8915] <= 12'h03A;
rommem[ 8916] <= 12'h015;
rommem[ 8917] <= 12'h0BF;
rommem[ 8918] <= 12'hFFF;
rommem[ 8919] <= 12'hE07;
rommem[ 8920] <= 12'hF22;
rommem[ 8921] <= 12'h035;
rommem[ 8922] <= 12'h096;
rommem[ 8923] <= 12'h034;
rommem[ 8924] <= 12'h010;
rommem[ 8925] <= 12'h096;
rommem[ 8926] <= 12'h110;
rommem[ 8927] <= 12'h0C6;
rommem[ 8928] <= 12'h040;
rommem[ 8929] <= 12'h03D;
rommem[ 8930] <= 12'h01F;
rommem[ 8931] <= 12'h001;
rommem[ 8932] <= 12'h0D6;
rommem[ 8933] <= 12'h111;
rommem[ 8934] <= 12'h03A;
rommem[ 8935] <= 12'h015;
rommem[ 8936] <= 12'h0F6;
rommem[ 8937] <= 12'hFFF;
rommem[ 8938] <= 12'hFFF;
rommem[ 8939] <= 12'hE0D;
rommem[ 8940] <= 12'hF22;
rommem[ 8941] <= 12'h08D;
rommem[ 8942] <= 12'hF97;
rommem[ 8943] <= 12'h030;
rommem[ 8944] <= 12'h80B;
rommem[ 8945] <= 12'h01F;
rommem[ 8946] <= 12'h010;
rommem[ 8947] <= 12'h035;
rommem[ 8948] <= 12'h090;
rommem[ 8949] <= 12'h017;
rommem[ 8950] <= 12'h000;
rommem[ 8951] <= 12'h910;
rommem[ 8952] <= 12'h034;
rommem[ 8953] <= 12'h016;
rommem[ 8954] <= 12'h0C1;
rommem[ 8955] <= 12'h00D;
rommem[ 8956] <= 12'h026;
rommem[ 8957] <= 12'h007;
rommem[ 8958] <= 12'h00F;
rommem[ 8959] <= 12'h111;
rommem[ 8960] <= 12'h08D;
rommem[ 8961] <= 12'hFAE;
rommem[ 8939] <= 12'hFE0;
rommem[ 8940] <= 12'h0F1;
rommem[ 8941] <= 12'hFFC;
rommem[ 8942] <= 12'h010;
rommem[ 8943] <= 12'h026;
rommem[ 8944] <= 12'h005;
rommem[ 8945] <= 12'h015;
rommem[ 8946] <= 12'h0BF;
rommem[ 8947] <= 12'hFFF;
rommem[ 8948] <= 12'hE07;
rommem[ 8949] <= 12'hF22;
rommem[ 8950] <= 12'h08D;
rommem[ 8951] <= 12'hF97;
rommem[ 8952] <= 12'h030;
rommem[ 8953] <= 12'h80B;
rommem[ 8954] <= 12'h01F;
rommem[ 8955] <= 12'h010;
rommem[ 8956] <= 12'h035;
rommem[ 8957] <= 12'h090;
rommem[ 8958] <= 12'h017;
rommem[ 8959] <= 12'h000;
rommem[ 8960] <= 12'h907;
rommem[ 8961] <= 12'h034;
rommem[ 8962] <= 12'h016;
rommem[ 8963] <= 12'h000;
rommem[ 8964] <= 12'h08C;
rommem[ 8965] <= 12'h0C1;
rommem[ 8966] <= 12'h091;
rommem[ 8967] <= 12'h026;
rommem[ 8968] <= 12'h00D;
rommem[ 8969] <= 12'h096;
rommem[ 8970] <= 12'h111;
rommem[ 8971] <= 12'h081;
rommem[ 8972] <= 12'h038;
rommem[ 8973] <= 12'h024;
rommem[ 8974] <= 12'h003;
rommem[ 8975] <= 12'h04C;
rommem[ 8976] <= 12'h097;
rommem[ 8977] <= 12'h111;
rommem[ 8978] <= 12'h08D;
rommem[ 8979] <= 12'hF9C;
rommem[ 8980] <= 12'h035;
rommem[ 8981] <= 12'h096;
rommem[ 8982] <= 12'h0C1;
rommem[ 8983] <= 12'h090;
rommem[ 8984] <= 12'h026;
rommem[ 8985] <= 12'h009;
rommem[ 8986] <= 12'h096;
rommem[ 8987] <= 12'h110;
rommem[ 8988] <= 12'h027;
rommem[ 8989] <= 12'hFF4;
rommem[ 8990] <= 12'h04A;
rommem[ 8991] <= 12'h097;
rommem[ 8992] <= 12'h110;
rommem[ 8993] <= 12'h020;
rommem[ 8994] <= 12'hFEF;
rommem[ 8995] <= 12'h0C1;
rommem[ 8996] <= 12'h093;
rommem[ 8997] <= 12'h026;
rommem[ 8998] <= 12'h009;
rommem[ 8999] <= 12'h096;
rommem[ 9000] <= 12'h111;
rommem[ 9001] <= 12'h027;
rommem[ 9002] <= 12'hFE7;
rommem[ 9003] <= 12'h04A;
rommem[ 9004] <= 12'h097;
rommem[ 9005] <= 12'h111;
rommem[ 9006] <= 12'h020;
rommem[ 9007] <= 12'hFE2;
rommem[ 9008] <= 12'h0C1;
rommem[ 9009] <= 12'h092;
rommem[ 9010] <= 12'h026;
rommem[ 9011] <= 12'h00B;
rommem[ 9012] <= 12'h096;
rommem[ 9013] <= 12'h110;
rommem[ 9014] <= 12'h081;
rommem[ 9015] <= 12'h01D;
rommem[ 9016] <= 12'h027;
rommem[ 9017] <= 12'hFD8;
rommem[ 9018] <= 12'h04C;
rommem[ 9019] <= 12'h097;
rommem[ 9020] <= 12'h110;
rommem[ 9021] <= 12'h020;
rommem[ 9022] <= 12'hFD3;
rommem[ 9023] <= 12'h0C1;
rommem[ 9024] <= 12'h094;
rommem[ 9025] <= 12'h026;
rommem[ 9026] <= 12'h00C;
rommem[ 9027] <= 12'h096;
rommem[ 9028] <= 12'h111;
rommem[ 9029] <= 12'h027;
rommem[ 9030] <= 12'h004;
rommem[ 9031] <= 12'h00F;
rommem[ 9032] <= 12'h111;
rommem[ 9033] <= 12'h020;
rommem[ 9034] <= 12'hFC7;
rommem[ 9035] <= 12'h00F;
rommem[ 9036] <= 12'h110;
rommem[ 9037] <= 12'h020;
rommem[ 9038] <= 12'hFC3;
rommem[ 9039] <= 12'h0C1;
rommem[ 9040] <= 12'h099;
rommem[ 9041] <= 12'h026;
rommem[ 9042] <= 12'h008;
rommem[ 9043] <= 12'h08D;
rommem[ 9044] <= 12'hF7D;
rommem[ 9045] <= 12'h01F;
rommem[ 9046] <= 12'h001;
rommem[ 9047] <= 12'h096;
rommem[ 9048] <= 12'h111;
rommem[ 9049] <= 12'h020;
rommem[ 9050] <= 12'h011;
rommem[ 9051] <= 12'h0C1;
rommem[ 9052] <= 12'h008;
rommem[ 9053] <= 12'h026;
rommem[ 9054] <= 12'h01E;
rommem[ 9055] <= 12'h096;
rommem[ 9056] <= 12'h111;
rommem[ 9057] <= 12'h027;
rommem[ 9058] <= 12'h02E;
rommem[ 9059] <= 12'h04A;
rommem[ 9060] <= 12'h097;
rommem[ 9061] <= 12'h111;
rommem[ 9062] <= 12'h08D;
rommem[ 9063] <= 12'hF6A;
rommem[ 9064] <= 12'h01F;
rommem[ 9065] <= 12'h001;
rommem[ 9066] <= 12'h096;
rommem[ 9067] <= 12'h111;
rommem[ 9068] <= 12'h0E6;
rommem[ 9069] <= 12'h001;
rommem[ 9070] <= 12'h0E7;
rommem[ 9071] <= 12'h801;
rommem[ 9072] <= 12'h04C;
rommem[ 9073] <= 12'h081;
rommem[ 9074] <= 12'h038;
rommem[ 9075] <= 12'h025;
rommem[ 9076] <= 12'hFF7;
rommem[ 9077] <= 12'h0C6;
rommem[ 9078] <= 12'h020;
rommem[ 9079] <= 12'h030;
rommem[ 9080] <= 12'h1FF;
rommem[ 9081] <= 12'h0E7;
rommem[ 9082] <= 12'h804;
rommem[ 9083] <= 12'h020;
rommem[ 9084] <= 12'h014;
rommem[ 9085] <= 12'h0C1;
rommem[ 9086] <= 12'h00A;
rommem[ 9087] <= 12'h027;
rommem[ 9088] <= 12'h00E;
rommem[ 9089] <= 12'h034;
rommem[ 9090] <= 12'h004;
rommem[ 9091] <= 12'h08D;
rommem[ 9092] <= 12'hF4D;
rommem[ 9093] <= 12'h01F;
rommem[ 9094] <= 12'h001;
rommem[ 9095] <= 12'h035;
rommem[ 9096] <= 12'h004;
rommem[ 9097] <= 12'h0E7;
rommem[ 9098] <= 12'h804;
rommem[ 9099] <= 12'h08D;
rommem[ 9100] <= 12'h006;
rommem[ 9101] <= 12'h020;
rommem[ 9102] <= 12'h002;
rommem[ 9103] <= 12'h08D;
rommem[ 9104] <= 12'h011;
rommem[ 9105] <= 12'h035;
rommem[ 9106] <= 12'h096;
rommem[ 9107] <= 12'h034;
rommem[ 9108] <= 12'h016;
rommem[ 9109] <= 12'h096;
rommem[ 9110] <= 12'h111;
rommem[ 9111] <= 12'h04C;
rommem[ 9112] <= 12'h097;
rommem[ 9113] <= 12'h111;
rommem[ 9114] <= 12'h081;
rommem[ 9115] <= 12'h038;
rommem[ 9116] <= 12'h025;
rommem[ 9117] <= 12'h014;
rommem[ 9118] <= 12'h00F;
rommem[ 8963] <= 12'h0C1;
rommem[ 8964] <= 12'h00D;
rommem[ 8965] <= 12'h026;
rommem[ 8966] <= 12'h007;
rommem[ 8967] <= 12'h00F;
rommem[ 8968] <= 12'h111;
rommem[ 8969] <= 12'h08D;
rommem[ 8970] <= 12'hFAE;
rommem[ 8971] <= 12'h016;
rommem[ 8972] <= 12'h000;
rommem[ 8973] <= 12'h08C;
rommem[ 8974] <= 12'h0C1;
rommem[ 8975] <= 12'h091;
rommem[ 8976] <= 12'h026;
rommem[ 8977] <= 12'h00D;
rommem[ 8978] <= 12'h096;
rommem[ 8979] <= 12'h111;
rommem[ 8980] <= 12'h081;
rommem[ 8981] <= 12'h040;
rommem[ 8982] <= 12'h024;
rommem[ 8983] <= 12'h003;
rommem[ 8984] <= 12'h04C;
rommem[ 8985] <= 12'h097;
rommem[ 8986] <= 12'h111;
rommem[ 8987] <= 12'h08D;
rommem[ 8988] <= 12'hF9C;
rommem[ 8989] <= 12'h035;
rommem[ 8990] <= 12'h096;
rommem[ 8991] <= 12'h0C1;
rommem[ 8992] <= 12'h090;
rommem[ 8993] <= 12'h026;
rommem[ 8994] <= 12'h009;
rommem[ 8995] <= 12'h096;
rommem[ 8996] <= 12'h110;
rommem[ 8997] <= 12'h027;
rommem[ 8998] <= 12'hFF4;
rommem[ 8999] <= 12'h04A;
rommem[ 9000] <= 12'h097;
rommem[ 9001] <= 12'h110;
rommem[ 9002] <= 12'h020;
rommem[ 9003] <= 12'hFEF;
rommem[ 9004] <= 12'h0C1;
rommem[ 9005] <= 12'h093;
rommem[ 9006] <= 12'h026;
rommem[ 9007] <= 12'h009;
rommem[ 9008] <= 12'h096;
rommem[ 9009] <= 12'h111;
rommem[ 9010] <= 12'h027;
rommem[ 9011] <= 12'hFE7;
rommem[ 9012] <= 12'h04A;
rommem[ 9013] <= 12'h097;
rommem[ 9014] <= 12'h111;
rommem[ 9015] <= 12'h020;
rommem[ 9016] <= 12'hFE2;
rommem[ 9017] <= 12'h0C1;
rommem[ 9018] <= 12'h092;
rommem[ 9019] <= 12'h026;
rommem[ 9020] <= 12'h00B;
rommem[ 9021] <= 12'h096;
rommem[ 9022] <= 12'h110;
rommem[ 9023] <= 12'h081;
rommem[ 9024] <= 12'h020;
rommem[ 9025] <= 12'h027;
rommem[ 9026] <= 12'hFD8;
rommem[ 9027] <= 12'h04C;
rommem[ 9028] <= 12'h097;
rommem[ 9029] <= 12'h110;
rommem[ 9030] <= 12'h020;
rommem[ 9031] <= 12'hFD3;
rommem[ 9032] <= 12'h0C1;
rommem[ 9033] <= 12'h094;
rommem[ 9034] <= 12'h026;
rommem[ 9035] <= 12'h00C;
rommem[ 9036] <= 12'h096;
rommem[ 9037] <= 12'h111;
rommem[ 9038] <= 12'h027;
rommem[ 9039] <= 12'h004;
rommem[ 9040] <= 12'h00F;
rommem[ 9041] <= 12'h111;
rommem[ 9042] <= 12'h020;
rommem[ 9043] <= 12'hFC7;
rommem[ 9044] <= 12'h00F;
rommem[ 9045] <= 12'h110;
rommem[ 9046] <= 12'h020;
rommem[ 9047] <= 12'hFC3;
rommem[ 9048] <= 12'h0C1;
rommem[ 9049] <= 12'h099;
rommem[ 9050] <= 12'h026;
rommem[ 9051] <= 12'h008;
rommem[ 9052] <= 12'h08D;
rommem[ 9053] <= 12'hF7D;
rommem[ 9054] <= 12'h01F;
rommem[ 9055] <= 12'h001;
rommem[ 9056] <= 12'h096;
rommem[ 9057] <= 12'h111;
rommem[ 9058] <= 12'h020;
rommem[ 9059] <= 12'h011;
rommem[ 9060] <= 12'h0C1;
rommem[ 9061] <= 12'h008;
rommem[ 9062] <= 12'h026;
rommem[ 9063] <= 12'h01E;
rommem[ 9064] <= 12'h096;
rommem[ 9065] <= 12'h111;
rommem[ 9066] <= 12'h027;
rommem[ 9067] <= 12'h02E;
rommem[ 9068] <= 12'h04A;
rommem[ 9069] <= 12'h097;
rommem[ 9070] <= 12'h111;
rommem[ 9071] <= 12'h08D;
rommem[ 9072] <= 12'hF6A;
rommem[ 9073] <= 12'h01F;
rommem[ 9074] <= 12'h001;
rommem[ 9075] <= 12'h096;
rommem[ 9076] <= 12'h111;
rommem[ 9077] <= 12'h0E6;
rommem[ 9078] <= 12'h001;
rommem[ 9079] <= 12'h0E7;
rommem[ 9080] <= 12'h801;
rommem[ 9081] <= 12'h04C;
rommem[ 9082] <= 12'h081;
rommem[ 9083] <= 12'h040;
rommem[ 9084] <= 12'h025;
rommem[ 9085] <= 12'hFF7;
rommem[ 9086] <= 12'h0C6;
rommem[ 9087] <= 12'h020;
rommem[ 9088] <= 12'h030;
rommem[ 9089] <= 12'h1FF;
rommem[ 9090] <= 12'h0E7;
rommem[ 9091] <= 12'h804;
rommem[ 9092] <= 12'h020;
rommem[ 9093] <= 12'h014;
rommem[ 9094] <= 12'h0C1;
rommem[ 9095] <= 12'h00A;
rommem[ 9096] <= 12'h027;
rommem[ 9097] <= 12'h00E;
rommem[ 9098] <= 12'h034;
rommem[ 9099] <= 12'h004;
rommem[ 9100] <= 12'h08D;
rommem[ 9101] <= 12'hF4D;
rommem[ 9102] <= 12'h01F;
rommem[ 9103] <= 12'h001;
rommem[ 9104] <= 12'h035;
rommem[ 9105] <= 12'h004;
rommem[ 9106] <= 12'h0E7;
rommem[ 9107] <= 12'h804;
rommem[ 9108] <= 12'h08D;
rommem[ 9109] <= 12'h006;
rommem[ 9110] <= 12'h020;
rommem[ 9111] <= 12'h002;
rommem[ 9112] <= 12'h08D;
rommem[ 9113] <= 12'h011;
rommem[ 9114] <= 12'h035;
rommem[ 9115] <= 12'h096;
rommem[ 9116] <= 12'h034;
rommem[ 9117] <= 12'h016;
rommem[ 9118] <= 12'h096;
rommem[ 9119] <= 12'h111;
rommem[ 9120] <= 12'h020;
rommem[ 9121] <= 12'h002;
rommem[ 9122] <= 12'h034;
rommem[ 9123] <= 12'h016;
rommem[ 9124] <= 12'h096;
rommem[ 9125] <= 12'h110;
rommem[ 9126] <= 12'h04C;
rommem[ 9127] <= 12'h097;
rommem[ 9128] <= 12'h110;
rommem[ 9129] <= 12'h081;
rommem[ 9130] <= 12'h01D;
rommem[ 9131] <= 12'h025;
rommem[ 9132] <= 12'h005;
rommem[ 9133] <= 12'h04A;
rommem[ 9134] <= 12'h097;
rommem[ 9135] <= 12'h110;
rommem[ 9136] <= 12'h08D;
rommem[ 9137] <= 12'hE9F;
rommem[ 9138] <= 12'h08D;
rommem[ 9139] <= 12'hEFC;
rommem[ 9140] <= 12'h035;
rommem[ 9141] <= 12'h096;
rommem[ 9142] <= 12'h034;
rommem[ 9143] <= 12'h016;
rommem[ 9144] <= 12'h01F;
rommem[ 9145] <= 12'h001;
rommem[ 9146] <= 12'h0B6;
rommem[ 9147] <= 12'hEF0;
rommem[ 9148] <= 12'h001;
rommem[ 9149] <= 12'h027;
rommem[ 9150] <= 12'hFFB;
rommem[ 9151] <= 12'h0E6;
rommem[ 9152] <= 12'h800;
rommem[ 9153] <= 12'h027;
rommem[ 9154] <= 12'h005;
rommem[ 9155] <= 12'h017;
rommem[ 9156] <= 12'h000;
rommem[ 9157] <= 12'h94C;
rommem[ 9158] <= 12'h020;
rommem[ 9159] <= 12'hFF7;
rommem[ 9160] <= 12'h07F;
rommem[ 9161] <= 12'hEF0;
rommem[ 9162] <= 12'h001;
rommem[ 9163] <= 12'h035;
rommem[ 9164] <= 12'h096;
rommem[ 9165] <= 12'h034;
rommem[ 9166] <= 12'h006;
rommem[ 9167] <= 12'h08D;
rommem[ 9168] <= 12'hFE5;
rommem[ 9169] <= 12'h0C6;
rommem[ 9170] <= 12'h00D;
rommem[ 9171] <= 12'h017;
rommem[ 9172] <= 12'h000;
rommem[ 9173] <= 12'h93C;
rommem[ 9174] <= 12'h0C6;
rommem[ 9175] <= 12'h00A;
rommem[ 9176] <= 12'h017;
rommem[ 9177] <= 12'h000;
rommem[ 9178] <= 12'h937;
rommem[ 9179] <= 12'h035;
rommem[ 9180] <= 12'h086;
rommem[ 9181] <= 12'h08D;
rommem[ 9182] <= 12'h002;
rommem[ 9183] <= 12'h020;
rommem[ 9184] <= 12'h00D;
rommem[ 9185] <= 12'h034;
rommem[ 9186] <= 12'h010;
rommem[ 9187] <= 12'h08E;
rommem[ 9188] <= 12'hFFE;
rommem[ 9189] <= 12'h3F5;
rommem[ 9120] <= 12'h04C;
rommem[ 9121] <= 12'h097;
rommem[ 9122] <= 12'h111;
rommem[ 9123] <= 12'h081;
rommem[ 9124] <= 12'h040;
rommem[ 9125] <= 12'h025;
rommem[ 9126] <= 12'h014;
rommem[ 9127] <= 12'h00F;
rommem[ 9128] <= 12'h111;
rommem[ 9129] <= 12'h020;
rommem[ 9130] <= 12'h002;
rommem[ 9131] <= 12'h034;
rommem[ 9132] <= 12'h016;
rommem[ 9133] <= 12'h096;
rommem[ 9134] <= 12'h110;
rommem[ 9135] <= 12'h04C;
rommem[ 9136] <= 12'h097;
rommem[ 9137] <= 12'h110;
rommem[ 9138] <= 12'h081;
rommem[ 9139] <= 12'h020;
rommem[ 9140] <= 12'h025;
rommem[ 9141] <= 12'h005;
rommem[ 9142] <= 12'h04A;
rommem[ 9143] <= 12'h097;
rommem[ 9144] <= 12'h110;
rommem[ 9145] <= 12'h08D;
rommem[ 9146] <= 12'hE9F;
rommem[ 9147] <= 12'h08D;
rommem[ 9148] <= 12'hEFC;
rommem[ 9149] <= 12'h035;
rommem[ 9150] <= 12'h096;
rommem[ 9151] <= 12'h034;
rommem[ 9152] <= 12'h016;
rommem[ 9153] <= 12'h01F;
rommem[ 9154] <= 12'h001;
rommem[ 9155] <= 12'h0B6;
rommem[ 9156] <= 12'hEF0;
rommem[ 9157] <= 12'h001;
rommem[ 9158] <= 12'h027;
rommem[ 9159] <= 12'hFFB;
rommem[ 9160] <= 12'h0E6;
rommem[ 9161] <= 12'h800;
rommem[ 9162] <= 12'h027;
rommem[ 9163] <= 12'h005;
rommem[ 9164] <= 12'h017;
rommem[ 9165] <= 12'h000;
rommem[ 9166] <= 12'h943;
rommem[ 9167] <= 12'h020;
rommem[ 9168] <= 12'hFF7;
rommem[ 9169] <= 12'h07F;
rommem[ 9170] <= 12'hEF0;
rommem[ 9171] <= 12'h001;
rommem[ 9172] <= 12'h035;
rommem[ 9173] <= 12'h096;
rommem[ 9174] <= 12'h034;
rommem[ 9175] <= 12'h006;
rommem[ 9176] <= 12'h08D;
rommem[ 9177] <= 12'hFE5;
rommem[ 9178] <= 12'h0C6;
rommem[ 9179] <= 12'h00D;
rommem[ 9180] <= 12'h017;
rommem[ 9181] <= 12'h000;
rommem[ 9182] <= 12'h933;
rommem[ 9183] <= 12'h0C6;
rommem[ 9184] <= 12'h00A;
rommem[ 9185] <= 12'h017;
rommem[ 9186] <= 12'h000;
rommem[ 9187] <= 12'h92E;
rommem[ 9188] <= 12'h035;
rommem[ 9189] <= 12'h086;
rommem[ 9190] <= 12'h08D;
rommem[ 9191] <= 12'h006;
rommem[ 9192] <= 12'h035;
rommem[ 9193] <= 12'h010;
rommem[ 9194] <= 12'h039;
rommem[ 9195] <= 12'h0BD;
rommem[ 9196] <= 12'hFFE;
rommem[ 9197] <= 12'hD12;
rommem[ 9198] <= 12'h0E6;
rommem[ 9199] <= 12'h800;
rommem[ 9200] <= 12'h0C1;
rommem[ 9201] <= 12'h004;
rommem[ 9202] <= 12'h026;
rommem[ 9203] <= 12'hFF7;
rommem[ 9204] <= 12'h039;
rommem[ 9205] <= 12'h00D;
rommem[ 9206] <= 12'h00A;
rommem[ 9207] <= 12'h004;
rommem[ 9208] <= 12'h08D;
rommem[ 9209] <= 12'h007;
rommem[ 9210] <= 12'h01E;
rommem[ 9211] <= 12'h001;
rommem[ 9212] <= 12'h08D;
rommem[ 9213] <= 12'h003;
rommem[ 9214] <= 12'h01E;
rommem[ 9215] <= 12'h001;
rommem[ 9216] <= 12'h039;
rommem[ 9217] <= 12'h01E;
rommem[ 9218] <= 12'h089;
rommem[ 9219] <= 12'h08D;
rommem[ 9220] <= 12'h005;
rommem[ 9221] <= 12'h01E;
rommem[ 9222] <= 12'h089;
rommem[ 9223] <= 12'h08D;
rommem[ 9191] <= 12'h002;
rommem[ 9192] <= 12'h020;
rommem[ 9193] <= 12'h00D;
rommem[ 9194] <= 12'h034;
rommem[ 9195] <= 12'h010;
rommem[ 9196] <= 12'h08E;
rommem[ 9197] <= 12'hFFE;
rommem[ 9198] <= 12'h3FE;
rommem[ 9199] <= 12'h08D;
rommem[ 9200] <= 12'h006;
rommem[ 9201] <= 12'h035;
rommem[ 9202] <= 12'h010;
rommem[ 9203] <= 12'h039;
rommem[ 9204] <= 12'h0BD;
rommem[ 9205] <= 12'hFFE;
rommem[ 9206] <= 12'hD12;
rommem[ 9207] <= 12'h0E6;
rommem[ 9208] <= 12'h800;
rommem[ 9209] <= 12'h0C1;
rommem[ 9210] <= 12'h004;
rommem[ 9211] <= 12'h026;
rommem[ 9212] <= 12'hFF7;
rommem[ 9213] <= 12'h039;
rommem[ 9214] <= 12'h00D;
rommem[ 9215] <= 12'h00A;
rommem[ 9216] <= 12'h004;
rommem[ 9217] <= 12'h08D;
rommem[ 9218] <= 12'h007;
rommem[ 9219] <= 12'h01E;
rommem[ 9220] <= 12'h001;
rommem[ 9221] <= 12'h08D;
rommem[ 9222] <= 12'h003;
rommem[ 9223] <= 12'h01E;
rommem[ 9224] <= 12'h001;
rommem[ 9225] <= 12'h039;
rommem[ 9226] <= 12'h034;
rommem[ 9227] <= 12'h004;
rommem[ 9228] <= 12'h054;
rommem[ 9229] <= 12'h054;
rommem[ 9230] <= 12'h054;
rommem[ 9231] <= 12'h054;
rommem[ 9232] <= 12'h054;
rommem[ 9233] <= 12'h054;
rommem[ 9234] <= 12'h054;
rommem[ 9235] <= 12'h054;
rommem[ 9236] <= 12'h08D;
rommem[ 9237] <= 12'h00C;
rommem[ 9238] <= 12'h035;
rommem[ 9239] <= 12'h004;
rommem[ 9240] <= 12'h034;
rommem[ 9241] <= 12'h004;
rommem[ 9226] <= 12'h01E;
rommem[ 9227] <= 12'h089;
rommem[ 9228] <= 12'h08D;
rommem[ 9229] <= 12'h005;
rommem[ 9230] <= 12'h01E;
rommem[ 9231] <= 12'h089;
rommem[ 9232] <= 12'h08D;
rommem[ 9233] <= 12'h001;
rommem[ 9234] <= 12'h039;
rommem[ 9235] <= 12'h034;
rommem[ 9236] <= 12'h004;
rommem[ 9237] <= 12'h054;
rommem[ 9238] <= 12'h054;
rommem[ 9239] <= 12'h054;
rommem[ 9240] <= 12'h054;
rommem[ 9241] <= 12'h054;
rommem[ 9242] <= 12'h054;
rommem[ 9243] <= 12'h054;
rommem[ 9244] <= 12'h054;
rommem[ 9245] <= 12'h054;
rommem[ 9246] <= 12'h08D;
rommem[ 9247] <= 12'h002;
rommem[ 9248] <= 12'h035;
rommem[ 9249] <= 12'h004;
rommem[ 9250] <= 12'h034;
rommem[ 9251] <= 12'h004;
rommem[ 9252] <= 12'h0C4;
rommem[ 9253] <= 12'h00F;
rommem[ 9254] <= 12'h0C1;
rommem[ 9255] <= 12'h00A;
rommem[ 9256] <= 12'h025;
rommem[ 9257] <= 12'h007;
rommem[ 9258] <= 12'h0CB;
rommem[ 9259] <= 12'h037;
rommem[ 9260] <= 12'h017;
rommem[ 9261] <= 12'h000;
rommem[ 9262] <= 12'h8E3;
rommem[ 9263] <= 12'h035;
rommem[ 9264] <= 12'h084;
rommem[ 9265] <= 12'h0CB;
rommem[ 9266] <= 12'h030;
rommem[ 9267] <= 12'h017;
rommem[ 9268] <= 12'h000;
rommem[ 9269] <= 12'h8DC;
rommem[ 9270] <= 12'h035;
rommem[ 9271] <= 12'h084;
rommem[ 9272] <= 12'h0CC;
rommem[ 9273] <= 12'h061;
rommem[ 9274] <= 12'hA80;
rommem[ 9275] <= 12'h015;
rommem[ 9276] <= 12'h0F7;
rommem[ 9277] <= 12'hFFF;
rommem[ 9278] <= 12'hE60;
rommem[ 9279] <= 12'h014;
rommem[ 9280] <= 12'h015;
rommem[ 9281] <= 12'h0B7;
rommem[ 9282] <= 12'hFFF;
rommem[ 9283] <= 12'hE60;
rommem[ 9245] <= 12'h08D;
rommem[ 9246] <= 12'h00C;
rommem[ 9247] <= 12'h035;
rommem[ 9248] <= 12'h004;
rommem[ 9249] <= 12'h034;
rommem[ 9250] <= 12'h004;
rommem[ 9251] <= 12'h054;
rommem[ 9252] <= 12'h054;
rommem[ 9253] <= 12'h054;
rommem[ 9254] <= 12'h054;
rommem[ 9255] <= 12'h08D;
rommem[ 9256] <= 12'h002;
rommem[ 9257] <= 12'h035;
rommem[ 9258] <= 12'h004;
rommem[ 9259] <= 12'h034;
rommem[ 9260] <= 12'h004;
rommem[ 9261] <= 12'h0C4;
rommem[ 9262] <= 12'h00F;
rommem[ 9263] <= 12'h0C1;
rommem[ 9264] <= 12'h00A;
rommem[ 9265] <= 12'h025;
rommem[ 9266] <= 12'h007;
rommem[ 9267] <= 12'h0CB;
rommem[ 9268] <= 12'h037;
rommem[ 9269] <= 12'h017;
rommem[ 9270] <= 12'h000;
rommem[ 9271] <= 12'h8DA;
rommem[ 9272] <= 12'h035;
rommem[ 9273] <= 12'h084;
rommem[ 9274] <= 12'h0CB;
rommem[ 9275] <= 12'h030;
rommem[ 9276] <= 12'h017;
rommem[ 9277] <= 12'h000;
rommem[ 9278] <= 12'h8D3;
rommem[ 9279] <= 12'h035;
rommem[ 9280] <= 12'h084;
rommem[ 9281] <= 12'h0CC;
rommem[ 9282] <= 12'h061;
rommem[ 9283] <= 12'hA80;
rommem[ 9284] <= 12'h015;
rommem[ 9285] <= 12'h015;
rommem[ 9286] <= 12'h07F;
rommem[ 9287] <= 12'hFFF;
rommem[ 9288] <= 12'hE60;
rommem[ 9289] <= 12'h012;
rommem[ 9290] <= 12'h015;
rommem[ 9291] <= 12'h07F;
rommem[ 9292] <= 12'hFFF;
rommem[ 9293] <= 12'hE60;
rommem[ 9294] <= 12'h013;
rommem[ 9295] <= 12'h015;
rommem[ 9296] <= 12'h0B6;
rommem[ 9297] <= 12'hFFF;
rommem[ 9298] <= 12'hE60;
rommem[ 9299] <= 12'h00B;
rommem[ 9300] <= 12'h08A;
rommem[ 9301] <= 12'h100;
rommem[ 9302] <= 12'h015;
rommem[ 9303] <= 12'h0B7;
rommem[ 9304] <= 12'hFFF;
rommem[ 9305] <= 12'hE60;
rommem[ 9306] <= 12'h00B;
rommem[ 9307] <= 12'h086;
rommem[ 9308] <= 12'h810;
rommem[ 9309] <= 12'h015;
rommem[ 9310] <= 12'h0B7;
rommem[ 9311] <= 12'hFFF;
rommem[ 9312] <= 12'hE60;
rommem[ 9313] <= 12'h00E;
rommem[ 9314] <= 12'h039;
rommem[ 9315] <= 12'h086;
rommem[ 9316] <= 12'h01F;
rommem[ 9317] <= 12'h0B7;
rommem[ 9318] <= 12'hFF0;
rommem[ 9319] <= 12'h011;
rommem[ 9320] <= 12'h015;
rommem[ 9321] <= 12'h0B7;
rommem[ 9322] <= 12'hFFF;
rommem[ 9323] <= 12'hE3F;
rommem[ 9324] <= 12'h010;
rommem[ 9325] <= 12'h015;
rommem[ 9326] <= 12'h0B6;
rommem[ 9327] <= 12'hFFF;
rommem[ 9328] <= 12'hE60;
rommem[ 9329] <= 12'h00D;
rommem[ 9330] <= 12'h02A;
rommem[ 9331] <= 12'h011;
rommem[ 9332] <= 12'h085;
rommem[ 9333] <= 12'h800;
rommem[ 9334] <= 12'h027;
rommem[ 9335] <= 12'h00D;
rommem[ 9336] <= 12'h015;
rommem[ 9337] <= 12'h07F;
rommem[ 9338] <= 12'hFFF;
rommem[ 9339] <= 12'hE60;
rommem[ 9340] <= 12'h012;
rommem[ 9341] <= 12'h015;
rommem[ 9342] <= 12'h07F;
rommem[ 9343] <= 12'hFFF;
rommem[ 9344] <= 12'hE60;
rommem[ 9345] <= 12'h013;
rommem[ 9346] <= 12'h07C;
rommem[ 9347] <= 12'hE00;
rommem[ 9348] <= 12'h037;
rommem[ 9349] <= 12'h039;
rommem[ 9350] <= 12'h034;
rommem[ 9351] <= 12'h004;
rommem[ 9352] <= 12'h0C6;
rommem[ 9353] <= 12'h004;
rommem[ 9354] <= 12'h0E7;
rommem[ 9355] <= 12'h804;
rommem[ 9356] <= 12'h06F;
rommem[ 9357] <= 12'h001;
rommem[ 9358] <= 12'h035;
rommem[ 9359] <= 12'h084;
rommem[ 9360] <= 12'h034;
rommem[ 9361] <= 12'h004;
rommem[ 9362] <= 12'h0E6;
rommem[ 9363] <= 12'h004;
rommem[ 9364] <= 12'h0C5;
rommem[ 9365] <= 12'h001;
rommem[ 9366] <= 12'h026;
rommem[ 9367] <= 12'hFFA;
rommem[ 9368] <= 12'h035;
rommem[ 9369] <= 12'h084;
rommem[ 9370] <= 12'h0E7;
rommem[ 9371] <= 12'h003;
rommem[ 9372] <= 12'h0A7;
rommem[ 9373] <= 12'h004;
rommem[ 9374] <= 12'h08D;
rommem[ 9375] <= 12'hFF0;
rommem[ 9376] <= 12'h0E6;
rommem[ 9377] <= 12'h004;
rommem[ 9378] <= 12'h039;
rommem[ 9379] <= 12'h034;
rommem[ 9380] <= 12'h006;
rommem[ 9381] <= 12'h034;
rommem[ 9382] <= 12'h006;
rommem[ 9383] <= 12'h0C6;
rommem[ 9384] <= 12'h001;
rommem[ 9385] <= 12'h0E7;
rommem[ 9386] <= 12'h002;
rommem[ 9387] <= 12'h0C6;
rommem[ 9388] <= 12'h076;
rommem[ 9389] <= 12'h086;
rommem[ 9390] <= 12'h090;
rommem[ 9391] <= 12'h08D;
rommem[ 9392] <= 12'hFE9;
rommem[ 9393] <= 12'h08D;
rommem[ 9394] <= 12'h00A;
rommem[ 9395] <= 12'h035;
rommem[ 9396] <= 12'h006;
rommem[ 9397] <= 12'h086;
rommem[ 9398] <= 12'h050;
rommem[ 9399] <= 12'h08D;
rommem[ 9400] <= 12'hFE1;
rommem[ 9401] <= 12'h08D;
rommem[ 9402] <= 12'h002;
rommem[ 9403] <= 12'h035;
rommem[ 9404] <= 12'h086;
rommem[ 9405] <= 12'h034;
rommem[ 9406] <= 12'h004;
rommem[ 9407] <= 12'h0E6;
rommem[ 9408] <= 12'h004;
rommem[ 9409] <= 12'h0C5;
rommem[ 9410] <= 12'h080;
rommem[ 9411] <= 12'h026;
rommem[ 9412] <= 12'hFFA;
rommem[ 9413] <= 12'h035;
rommem[ 9414] <= 12'h084;
rommem[ 9415] <= 12'h08E;
rommem[ 9416] <= 12'hE30;
rommem[ 9417] <= 12'h500;
rommem[ 9418] <= 12'h18E;
rommem[ 9419] <= 12'h007;
rommem[ 9420] <= 12'hFC0;
rommem[ 9421] <= 12'h0C6;
rommem[ 9422] <= 12'h080;
rommem[ 9423] <= 12'h0E7;
rommem[ 9424] <= 12'h002;
rommem[ 9425] <= 12'h0CC;
rommem[ 9426] <= 12'h090;
rommem[ 9427] <= 12'h0DE;
rommem[ 9428] <= 12'h08D;
rommem[ 9429] <= 12'hFC4;
rommem[ 9430] <= 12'h0C5;
rommem[ 9285] <= 12'h0F7;
rommem[ 9286] <= 12'hFFF;
rommem[ 9287] <= 12'hE60;
rommem[ 9288] <= 12'h014;
rommem[ 9289] <= 12'h015;
rommem[ 9290] <= 12'h0B7;
rommem[ 9291] <= 12'hFFF;
rommem[ 9292] <= 12'hE60;
rommem[ 9293] <= 12'h015;
rommem[ 9294] <= 12'h015;
rommem[ 9295] <= 12'h07F;
rommem[ 9296] <= 12'hFFF;
rommem[ 9297] <= 12'hE60;
rommem[ 9298] <= 12'h012;
rommem[ 9299] <= 12'h015;
rommem[ 9300] <= 12'h07F;
rommem[ 9301] <= 12'hFFF;
rommem[ 9302] <= 12'hE60;
rommem[ 9303] <= 12'h013;
rommem[ 9304] <= 12'h015;
rommem[ 9305] <= 12'h0B6;
rommem[ 9306] <= 12'hFFF;
rommem[ 9307] <= 12'hE60;
rommem[ 9308] <= 12'h00B;
rommem[ 9309] <= 12'h08A;
rommem[ 9310] <= 12'h100;
rommem[ 9311] <= 12'h015;
rommem[ 9312] <= 12'h0B7;
rommem[ 9313] <= 12'hFFF;
rommem[ 9314] <= 12'hE60;
rommem[ 9315] <= 12'h00B;
rommem[ 9316] <= 12'h086;
rommem[ 9317] <= 12'h810;
rommem[ 9318] <= 12'h015;
rommem[ 9319] <= 12'h0B7;
rommem[ 9320] <= 12'hFFF;
rommem[ 9321] <= 12'hE60;
rommem[ 9322] <= 12'h00E;
rommem[ 9323] <= 12'h039;
rommem[ 9324] <= 12'h086;
rommem[ 9325] <= 12'h01F;
rommem[ 9326] <= 12'h0B7;
rommem[ 9327] <= 12'hFFC;
rommem[ 9328] <= 12'h011;
rommem[ 9329] <= 12'h015;
rommem[ 9330] <= 12'h0B7;
rommem[ 9331] <= 12'hFFF;
rommem[ 9332] <= 12'hE3F;
rommem[ 9333] <= 12'h010;
rommem[ 9334] <= 12'h015;
rommem[ 9335] <= 12'h0B6;
rommem[ 9336] <= 12'hFFF;
rommem[ 9337] <= 12'hE60;
rommem[ 9338] <= 12'h00D;
rommem[ 9339] <= 12'h02A;
rommem[ 9340] <= 12'h011;
rommem[ 9341] <= 12'h085;
rommem[ 9342] <= 12'h080;
rommem[ 9343] <= 12'h027;
rommem[ 9344] <= 12'h00D;
rommem[ 9345] <= 12'h015;
rommem[ 9346] <= 12'h07F;
rommem[ 9347] <= 12'hFFF;
rommem[ 9348] <= 12'hE60;
rommem[ 9349] <= 12'h012;
rommem[ 9350] <= 12'h015;
rommem[ 9351] <= 12'h07F;
rommem[ 9352] <= 12'hFFF;
rommem[ 9353] <= 12'hE60;
rommem[ 9354] <= 12'h013;
rommem[ 9355] <= 12'h07C;
rommem[ 9356] <= 12'hE00;
rommem[ 9357] <= 12'h037;
rommem[ 9358] <= 12'h039;
rommem[ 9359] <= 12'h034;
rommem[ 9360] <= 12'h004;
rommem[ 9361] <= 12'h0C6;
rommem[ 9362] <= 12'h004;
rommem[ 9363] <= 12'h0E7;
rommem[ 9364] <= 12'h804;
rommem[ 9365] <= 12'h06F;
rommem[ 9366] <= 12'h001;
rommem[ 9367] <= 12'h035;
rommem[ 9368] <= 12'h084;
rommem[ 9369] <= 12'h034;
rommem[ 9370] <= 12'h004;
rommem[ 9371] <= 12'h0E6;
rommem[ 9372] <= 12'h004;
rommem[ 9373] <= 12'h0C5;
rommem[ 9374] <= 12'h001;
rommem[ 9375] <= 12'h026;
rommem[ 9376] <= 12'hFFA;
rommem[ 9377] <= 12'h035;
rommem[ 9378] <= 12'h084;
rommem[ 9379] <= 12'h0E7;
rommem[ 9380] <= 12'h003;
rommem[ 9381] <= 12'h0A7;
rommem[ 9382] <= 12'h004;
rommem[ 9383] <= 12'h08D;
rommem[ 9384] <= 12'hFF0;
rommem[ 9385] <= 12'h0E6;
rommem[ 9386] <= 12'h004;
rommem[ 9387] <= 12'h039;
rommem[ 9388] <= 12'h034;
rommem[ 9389] <= 12'h006;
rommem[ 9390] <= 12'h034;
rommem[ 9391] <= 12'h006;
rommem[ 9392] <= 12'h0C6;
rommem[ 9393] <= 12'h001;
rommem[ 9394] <= 12'h0E7;
rommem[ 9395] <= 12'h002;
rommem[ 9396] <= 12'h0C6;
rommem[ 9397] <= 12'h076;
rommem[ 9398] <= 12'h086;
rommem[ 9399] <= 12'h090;
rommem[ 9400] <= 12'h08D;
rommem[ 9401] <= 12'hFE9;
rommem[ 9402] <= 12'h08D;
rommem[ 9403] <= 12'h00A;
rommem[ 9404] <= 12'h035;
rommem[ 9405] <= 12'h006;
rommem[ 9406] <= 12'h086;
rommem[ 9407] <= 12'h050;
rommem[ 9408] <= 12'h08D;
rommem[ 9409] <= 12'hFE1;
rommem[ 9410] <= 12'h08D;
rommem[ 9411] <= 12'h002;
rommem[ 9412] <= 12'h035;
rommem[ 9413] <= 12'h086;
rommem[ 9414] <= 12'h034;
rommem[ 9415] <= 12'h004;
rommem[ 9416] <= 12'h0E6;
rommem[ 9417] <= 12'h004;
rommem[ 9418] <= 12'h0C5;
rommem[ 9419] <= 12'h080;
rommem[ 9420] <= 12'h026;
rommem[ 9421] <= 12'hFFA;
rommem[ 9422] <= 12'h035;
rommem[ 9423] <= 12'h084;
rommem[ 9424] <= 12'h08E;
rommem[ 9425] <= 12'hE30;
rommem[ 9426] <= 12'h500;
rommem[ 9427] <= 12'h18E;
rommem[ 9428] <= 12'h007;
rommem[ 9429] <= 12'hFC0;
rommem[ 9430] <= 12'h0C6;
rommem[ 9431] <= 12'h080;
rommem[ 9432] <= 12'h026;
rommem[ 9433] <= 12'h03C;
rommem[ 9432] <= 12'h0E7;
rommem[ 9433] <= 12'h002;
rommem[ 9434] <= 12'h0CC;
rommem[ 9435] <= 12'h010;
rommem[ 9436] <= 12'h000;
rommem[ 9435] <= 12'h090;
rommem[ 9436] <= 12'h0DE;
rommem[ 9437] <= 12'h08D;
rommem[ 9438] <= 12'hFBB;
rommem[ 9438] <= 12'hFC4;
rommem[ 9439] <= 12'h0C5;
rommem[ 9440] <= 12'h080;
rommem[ 9441] <= 12'h026;
rommem[ 9442] <= 12'h033;
rommem[ 9442] <= 12'h03C;
rommem[ 9443] <= 12'h0CC;
rommem[ 9444] <= 12'h090;
rommem[ 9445] <= 12'h0DF;
rommem[ 9444] <= 12'h010;
rommem[ 9445] <= 12'h000;
rommem[ 9446] <= 12'h08D;
rommem[ 9447] <= 12'hFB2;
rommem[ 9447] <= 12'hFBB;
rommem[ 9448] <= 12'h0C5;
rommem[ 9449] <= 12'h080;
rommem[ 9450] <= 12'h026;
rommem[ 9451] <= 12'h02A;
rommem[ 9452] <= 12'h05F;
rommem[ 9453] <= 12'h086;
rommem[ 9454] <= 12'h020;
rommem[ 9455] <= 12'h0A7;
rommem[ 9456] <= 12'h004;
rommem[ 9457] <= 12'h08D;
rommem[ 9458] <= 12'hF9D;
rommem[ 9459] <= 12'h08D;
rommem[ 9460] <= 12'hFC8;
rommem[ 9461] <= 12'h0A6;
rommem[ 9462] <= 12'h004;
rommem[ 9463] <= 12'h085;
rommem[ 9464] <= 12'h080;
rommem[ 9465] <= 12'h026;
rommem[ 9466] <= 12'h01B;
rommem[ 9467] <= 12'h0A6;
rommem[ 9468] <= 12'h003;
rommem[ 9469] <= 12'h0A7;
rommem[ 9470] <= 12'hA07;
rommem[ 9471] <= 12'h05C;
rommem[ 9472] <= 12'h0C1;
rommem[ 9473] <= 12'h05F;
rommem[ 9474] <= 12'h025;
rommem[ 9475] <= 12'hFE9;
rommem[ 9476] <= 12'h086;
rommem[ 9477] <= 12'h068;
rommem[ 9451] <= 12'h033;
rommem[ 9452] <= 12'h0CC;
rommem[ 9453] <= 12'h090;
rommem[ 9454] <= 12'h0DF;
rommem[ 9455] <= 12'h08D;
rommem[ 9456] <= 12'hFB2;
rommem[ 9457] <= 12'h0C5;
rommem[ 9458] <= 12'h080;
rommem[ 9459] <= 12'h026;
rommem[ 9460] <= 12'h02A;
rommem[ 9461] <= 12'h05F;
rommem[ 9462] <= 12'h086;
rommem[ 9463] <= 12'h020;
rommem[ 9464] <= 12'h0A7;
rommem[ 9465] <= 12'h004;
rommem[ 9466] <= 12'h08D;
rommem[ 9467] <= 12'hF9D;
rommem[ 9468] <= 12'h08D;
rommem[ 9469] <= 12'hFC8;
rommem[ 9470] <= 12'h0A6;
rommem[ 9471] <= 12'h004;
rommem[ 9472] <= 12'h085;
rommem[ 9473] <= 12'h080;
rommem[ 9474] <= 12'h026;
rommem[ 9475] <= 12'h01B;
rommem[ 9476] <= 12'h0A6;
rommem[ 9477] <= 12'h003;
rommem[ 9478] <= 12'h0A7;
rommem[ 9479] <= 12'h004;
rommem[ 9480] <= 12'h08D;
rommem[ 9481] <= 12'hF86;
rommem[ 9482] <= 12'h0A6;
rommem[ 9483] <= 12'h004;
rommem[ 9484] <= 12'h085;
rommem[ 9485] <= 12'h080;
rommem[ 9486] <= 12'h026;
rommem[ 9487] <= 12'h006;
rommem[ 9488] <= 12'h0A6;
rommem[ 9489] <= 12'h003;
rommem[ 9490] <= 12'h0A7;
rommem[ 9491] <= 12'hA07;
rommem[ 9492] <= 12'h04F;
rommem[ 9493] <= 12'h05F;
rommem[ 9494] <= 12'h06F;
rommem[ 9495] <= 12'h002;
rommem[ 9496] <= 12'h04F;
rommem[ 9497] <= 12'h039;
rommem[ 9498] <= 12'h08E;
rommem[ 9499] <= 12'hE30;
rommem[ 9500] <= 12'h500;
rommem[ 9501] <= 12'h18E;
rommem[ 9502] <= 12'h007;
rommem[ 9503] <= 12'hFC0;
rommem[ 9504] <= 12'h0C6;
rommem[ 9505] <= 12'h080;
rommem[ 9506] <= 12'h0E7;
rommem[ 9507] <= 12'h002;
rommem[ 9508] <= 12'h0CC;
rommem[ 9509] <= 12'h090;
rommem[ 9510] <= 12'h0DE;
rommem[ 9511] <= 12'h08D;
rommem[ 9512] <= 12'hF71;
rommem[ 9513] <= 12'h0C5;
rommem[ 9479] <= 12'hA07;
rommem[ 9480] <= 12'h05C;
rommem[ 9481] <= 12'h0C1;
rommem[ 9482] <= 12'h05F;
rommem[ 9483] <= 12'h025;
rommem[ 9484] <= 12'hFE9;
rommem[ 9485] <= 12'h086;
rommem[ 9486] <= 12'h068;
rommem[ 9487] <= 12'h0A7;
rommem[ 9488] <= 12'h004;
rommem[ 9489] <= 12'h08D;
rommem[ 9490] <= 12'hF86;
rommem[ 9491] <= 12'h0A6;
rommem[ 9492] <= 12'h004;
rommem[ 9493] <= 12'h085;
rommem[ 9494] <= 12'h080;
rommem[ 9495] <= 12'h026;
rommem[ 9496] <= 12'h006;
rommem[ 9497] <= 12'h0A6;
rommem[ 9498] <= 12'h003;
rommem[ 9499] <= 12'h0A7;
rommem[ 9500] <= 12'hA07;
rommem[ 9501] <= 12'h04F;
rommem[ 9502] <= 12'h05F;
rommem[ 9503] <= 12'h06F;
rommem[ 9504] <= 12'h002;
rommem[ 9505] <= 12'h04F;
rommem[ 9506] <= 12'h039;
rommem[ 9507] <= 12'h08E;
rommem[ 9508] <= 12'hE30;
rommem[ 9509] <= 12'h500;
rommem[ 9510] <= 12'h18E;
rommem[ 9511] <= 12'h007;
rommem[ 9512] <= 12'hFC0;
rommem[ 9513] <= 12'h0C6;
rommem[ 9514] <= 12'h080;
rommem[ 9515] <= 12'h026;
rommem[ 9516] <= 12'hFE9;
rommem[ 9515] <= 12'h0E7;
rommem[ 9516] <= 12'h002;
rommem[ 9517] <= 12'h0CC;
rommem[ 9518] <= 12'h010;
rommem[ 9519] <= 12'h000;
rommem[ 9518] <= 12'h090;
rommem[ 9519] <= 12'h0DE;
rommem[ 9520] <= 12'h08D;
rommem[ 9521] <= 12'hF68;
rommem[ 9521] <= 12'hF71;
rommem[ 9522] <= 12'h0C5;
rommem[ 9523] <= 12'h080;
rommem[ 9524] <= 12'h026;
rommem[ 9525] <= 12'hFE0;
rommem[ 9526] <= 12'h0C6;
rommem[ 9527] <= 12'h000;
rommem[ 9528] <= 12'h034;
rommem[ 9529] <= 12'h004;
rommem[ 9530] <= 12'h0E6;
rommem[ 9531] <= 12'hA05;
rommem[ 9532] <= 12'h086;
rommem[ 9533] <= 12'h010;
rommem[ 9534] <= 12'h08D;
rommem[ 9535] <= 12'hF5A;
rommem[ 9536] <= 12'h0C5;
rommem[ 9537] <= 12'h080;
rommem[ 9538] <= 12'h035;
rommem[ 9539] <= 12'h004;
rommem[ 9540] <= 12'h026;
rommem[ 9541] <= 12'hFD0;
rommem[ 9542] <= 12'h05C;
rommem[ 9543] <= 12'h0C1;
rommem[ 9544] <= 12'h05F;
rommem[ 9545] <= 12'h025;
rommem[ 9546] <= 12'hFED;
rommem[ 9547] <= 12'h0E6;
rommem[ 9548] <= 12'hA05;
rommem[ 9549] <= 12'h086;
rommem[ 9550] <= 12'h050;
rommem[ 9551] <= 12'h08D;
rommem[ 9552] <= 12'hF49;
rommem[ 9553] <= 12'h0C5;
rommem[ 9554] <= 12'h080;
rommem[ 9555] <= 12'h026;
rommem[ 9556] <= 12'hFC1;
rommem[ 9557] <= 12'h04F;
rommem[ 9558] <= 12'h05F;
rommem[ 9559] <= 12'h06F;
rommem[ 9560] <= 12'h002;
rommem[ 9561] <= 12'h039;
rommem[ 9525] <= 12'hFE9;
rommem[ 9526] <= 12'h0CC;
rommem[ 9527] <= 12'h010;
rommem[ 9528] <= 12'h000;
rommem[ 9529] <= 12'h08D;
rommem[ 9530] <= 12'hF68;
rommem[ 9531] <= 12'h0C5;
rommem[ 9532] <= 12'h080;
rommem[ 9533] <= 12'h026;
rommem[ 9534] <= 12'hFE0;
rommem[ 9535] <= 12'h0C6;
rommem[ 9536] <= 12'h000;
rommem[ 9537] <= 12'h034;
rommem[ 9538] <= 12'h004;
rommem[ 9539] <= 12'h0E6;
rommem[ 9540] <= 12'hA05;
rommem[ 9541] <= 12'h086;
rommem[ 9542] <= 12'h010;
rommem[ 9543] <= 12'h08D;
rommem[ 9544] <= 12'hF5A;
rommem[ 9545] <= 12'h0C5;
rommem[ 9546] <= 12'h080;
rommem[ 9547] <= 12'h035;
rommem[ 9548] <= 12'h004;
rommem[ 9549] <= 12'h026;
rommem[ 9550] <= 12'hFD0;
rommem[ 9551] <= 12'h05C;
rommem[ 9552] <= 12'h0C1;
rommem[ 9553] <= 12'h05F;
rommem[ 9554] <= 12'h025;
rommem[ 9555] <= 12'hFED;
rommem[ 9556] <= 12'h0E6;
rommem[ 9557] <= 12'hA05;
rommem[ 9558] <= 12'h086;
rommem[ 9559] <= 12'h050;
rommem[ 9560] <= 12'h08D;
rommem[ 9561] <= 12'hF49;
rommem[ 9562] <= 12'h0C5;
rommem[ 9563] <= 12'h080;
rommem[ 9564] <= 12'h026;
rommem[ 9565] <= 12'hFC1;
rommem[ 9566] <= 12'h04F;
rommem[ 9567] <= 12'h05F;
rommem[ 9568] <= 12'h06F;
rommem[ 9569] <= 12'h002;
rommem[ 9570] <= 12'h039;
rommem[ 9600] <= 12'h02E;
rommem[ 9601] <= 12'h0A9;
rommem[ 9602] <= 12'h02E;
2520,7 → 2628,7
rommem[10632] <= 12'h9AE;
rommem[10633] <= 12'h017;
rommem[10634] <= 12'hFFF;
rommem[10635] <= 12'hA41;
rommem[10635] <= 12'hA4A;
rommem[10636] <= 12'h020;
rommem[10637] <= 12'h014;
rommem[10638] <= 12'h0C6;
2610,7 → 2718,7
rommem[10722] <= 12'h034;
rommem[10723] <= 12'h004;
rommem[10724] <= 12'h0B6;
rommem[10725] <= 12'hFF0;
rommem[10725] <= 12'hFFC;
rommem[10726] <= 12'h010;
rommem[10727] <= 12'h05F;
rommem[10728] <= 12'h048;
2647,7 → 2755,7
rommem[10759] <= 12'h086;
rommem[10760] <= 12'h01C;
rommem[10761] <= 12'h0B7;
rommem[10762] <= 12'hFF0;
rommem[10762] <= 12'hFFC;
rommem[10763] <= 12'h011;
rommem[10764] <= 12'h039;
rommem[10765] <= 12'h032;
3024,7 → 3132,7
rommem[11136] <= 12'hFFF;
rommem[11137] <= 12'hFE0;
rommem[11138] <= 12'h0B1;
rommem[11139] <= 12'hFF0;
rommem[11139] <= 12'hFFC;
rommem[11140] <= 12'h010;
rommem[11141] <= 12'h026;
rommem[11142] <= 12'hFFB;
3127,7 → 3235,7
rommem[11239] <= 12'hFFF;
rommem[11240] <= 12'hFE0;
rommem[11241] <= 12'h0B1;
rommem[11242] <= 12'hFF0;
rommem[11242] <= 12'hFFC;
rommem[11243] <= 12'h010;
rommem[11244] <= 12'h026;
rommem[11245] <= 12'h014;
3165,7 → 3273,7
rommem[11277] <= 12'hFFF;
rommem[11278] <= 12'hFE0;
rommem[11279] <= 12'h0B1;
rommem[11280] <= 12'hFF0;
rommem[11280] <= 12'hFFC;
rommem[11281] <= 12'h010;
rommem[11282] <= 12'h026;
rommem[11283] <= 12'hFF6;
3229,7 → 3337,7
rommem[11341] <= 12'h034;
rommem[11342] <= 12'h004;
rommem[11343] <= 12'h0B6;
rommem[11344] <= 12'hFF0;
rommem[11344] <= 12'hFFC;
rommem[11345] <= 12'h010;
rommem[11346] <= 12'h048;
rommem[11347] <= 12'h048;
3321,7 → 3429,7
rommem[11433] <= 12'hCC5;
rommem[11434] <= 12'h017;
rommem[11435] <= 12'hFFF;
rommem[11436] <= 12'h709;
rommem[11436] <= 12'h712;
rommem[11437] <= 12'h08D;
rommem[11438] <= 12'hEC0;
rommem[11439] <= 12'h0C6;
3375,7 → 3483,7
rommem[11487] <= 12'hFFF;
rommem[11488] <= 12'hFE0;
rommem[11489] <= 12'h0F1;
rommem[11490] <= 12'hFF0;
rommem[11490] <= 12'hFFC;
rommem[11491] <= 12'h010;
rommem[11492] <= 12'h026;
rommem[11493] <= 12'hFF6;
3421,7 → 3529,7
rommem[11533] <= 12'h003;
rommem[11534] <= 12'h017;
rommem[11535] <= 12'hFFF;
rommem[11536] <= 12'h5E4;
rommem[11536] <= 12'h5ED;
rommem[11537] <= 12'h039;
rommem[11538] <= 12'h06E;
rommem[11539] <= 12'h90F;
3489,4385 → 3597,2106
rommem[11601] <= 12'h000;
rommem[11602] <= 12'h000;
rommem[11603] <= 12'hFFE;
rommem[11604] <= 12'hD84;
rommem[11604] <= 12'hD70;
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[11608] <= 12'hD59;
rommem[11609] <= 12'h015;
rommem[11610] <= 12'h0F6;
rommem[11611] <= 12'hFFF;
rommem[11612] <= 12'hFFF;
rommem[11613] <= 12'hFE0;
rommem[11614] <= 12'h08E;
rommem[11615] <= 12'hFFC;
rommem[11616] <= 12'h000;
rommem[11617] <= 12'h03A;
rommem[11618] <= 12'h0A7;
rommem[11619] <= 12'h804;
rommem[11620] <= 12'h07D;
rommem[11621] <= 12'hFFC;
rommem[11622] <= 12'h010;
rommem[11623] <= 12'h126;
rommem[11624] <= 12'h000;
rommem[11625] <= 12'h6FF;
rommem[11626] <= 12'h0F7;
rommem[11627] <= 12'hFFC;
rommem[11628] <= 12'h010;
rommem[11629] <= 12'h016;
rommem[11630] <= 12'h000;
rommem[11631] <= 12'h6F9;
rommem[11632] <= 12'h015;
rommem[11633] <= 12'h0F6;
rommem[11634] <= 12'hFFF;
rommem[11635] <= 12'hFFF;
rommem[11636] <= 12'hFE0;
rommem[11637] <= 12'h08E;
rommem[11638] <= 12'hFFC;
rommem[11639] <= 12'h000;
rommem[11640] <= 12'h03A;
rommem[11641] <= 12'h06F;
rommem[11642] <= 12'h804;
rommem[11643] <= 12'h017;
rommem[11644] <= 12'hFFF;
rommem[11645] <= 12'hFEB;
rommem[11646] <= 12'h0F7;
rommem[11647] <= 12'hFF0;
rommem[11645] <= 12'h480;
rommem[11646] <= 12'h0F1;
rommem[11647] <= 12'hFFC;
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'h463;
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[11649] <= 12'h126;
rommem[11650] <= 12'h000;
rommem[11651] <= 12'h6E5;
rommem[11652] <= 12'h086;
rommem[11653] <= 12'h00F;
rommem[11654] <= 12'h05C;
rommem[11655] <= 12'h0C4;
rommem[11656] <= 12'h00F;
rommem[11657] <= 12'h03A;
rommem[11658] <= 12'h06D;
rommem[11659] <= 12'h804;
rommem[11660] <= 12'h026;
rommem[11661] <= 12'h009;
rommem[11662] <= 12'h04A;
rommem[11663] <= 12'h026;
rommem[11664] <= 12'hFF5;
rommem[11665] <= 12'h0C6;
rommem[11666] <= 12'h001;
rommem[11667] <= 12'h086;
rommem[11668] <= 12'h018;
rommem[11669] <= 12'h0A7;
rommem[11670] <= 12'h804;
rommem[11671] <= 12'h0F7;
rommem[11672] <= 12'hFFC;
rommem[11673] <= 12'h010;
rommem[11674] <= 12'h017;
rommem[11675] <= 12'hFFF;
rommem[11676] <= 12'h42A;
rommem[11677] <= 12'h016;
rommem[11678] <= 12'h000;
rommem[11679] <= 12'h6C9;
rommem[11680] <= 12'h18E;
rommem[11681] <= 12'h000;
rommem[11682] <= 12'h000;
rommem[11683] <= 12'h015;
rommem[11684] <= 12'h1BF;
rommem[11685] <= 12'hFFF;
rommem[11686] <= 12'hE30;
rommem[11687] <= 12'h604;
rommem[11688] <= 12'h015;
rommem[11689] <= 12'h07F;
rommem[11690] <= 12'hFFF;
rommem[11691] <= 12'hE30;
rommem[11692] <= 12'h608;
rommem[11693] <= 12'h015;
rommem[11694] <= 12'h07F;
rommem[11695] <= 12'hFFF;
rommem[11696] <= 12'h40D;
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[11696] <= 12'hE30;
rommem[11697] <= 12'h609;
rommem[11698] <= 12'h015;
rommem[11699] <= 12'h0FD;
rommem[11700] <= 12'hFFF;
rommem[11701] <= 12'hE30;
rommem[11702] <= 12'h60A;
rommem[11703] <= 12'h015;
rommem[11704] <= 12'h07F;
rommem[11705] <= 12'hFFF;
rommem[11706] <= 12'hE30;
rommem[11707] <= 12'h60C;
rommem[11708] <= 12'h015;
rommem[11709] <= 12'h07F;
rommem[11710] <= 12'hFFF;
rommem[11711] <= 12'hE30;
rommem[11712] <= 12'h60D;
rommem[11713] <= 12'h015;
rommem[11714] <= 12'h0BF;
rommem[11715] <= 12'hFFF;
rommem[11716] <= 12'hE30;
rommem[11717] <= 12'h60E;
rommem[11718] <= 12'h031;
rommem[11719] <= 12'h201;
rommem[11720] <= 12'h18C;
rommem[11721] <= 12'h000;
rommem[11722] <= 12'h400;
rommem[11723] <= 12'h025;
rommem[11724] <= 12'hFD6;
rommem[11725] <= 12'h039;
rommem[11726] <= 12'h015;
rommem[11727] <= 12'h0FD;
rommem[11728] <= 12'hFFF;
rommem[11729] <= 12'hE30;
rommem[11730] <= 12'h604;
rommem[11731] <= 12'h015;
rommem[11732] <= 12'h0BE;
rommem[11733] <= 12'hFFF;
rommem[11734] <= 12'hE30;
rommem[11735] <= 12'h600;
rommem[11736] <= 12'h015;
rommem[11737] <= 12'h0FC;
rommem[11738] <= 12'hFFF;
rommem[11739] <= 12'hE30;
rommem[11740] <= 12'h602;
rommem[11741] <= 12'h015;
rommem[11742] <= 12'h0F7;
rommem[11743] <= 12'hFFF;
rommem[11744] <= 12'hE30;
rommem[11745] <= 12'h603;
rommem[11746] <= 12'h039;
rommem[11747] <= 12'h03C;
rommem[11748] <= 12'h83E;
rommem[11749] <= 12'h062;
rommem[11750] <= 12'h873;
rommem[11751] <= 12'h062;
rommem[11752] <= 12'h863;
rommem[11753] <= 12'h044;
rommem[11754] <= 12'h852;
rommem[11755] <= 12'h844;
rommem[11756] <= 12'h83A;
rommem[11757] <= 12'h046;
rommem[11758] <= 12'h049;
rommem[11759] <= 12'h847;
rommem[11760] <= 12'h046;
rommem[11761] <= 12'h049;
rommem[11762] <= 12'h84C;
rommem[11763] <= 12'h046;
rommem[11764] <= 12'h84C;
rommem[11765] <= 12'h84A;
rommem[11766] <= 12'h052;
rommem[11767] <= 12'h041;
rommem[11768] <= 12'h04D;
rommem[11769] <= 12'h054;
rommem[11770] <= 12'h045;
rommem[11771] <= 12'h053;
rommem[11772] <= 12'h854;
rommem[11773] <= 12'h053;
rommem[11774] <= 12'h050;
rommem[11775] <= 12'h844;
rommem[11776] <= 12'h054;
rommem[11777] <= 12'h049;
rommem[11778] <= 12'h852;
rommem[11779] <= 12'h855;
rommem[11780] <= 12'h065;
rommem[11781] <= 12'h078;
rommem[11782] <= 12'h069;
rommem[11783] <= 12'h874;
rommem[11784] <= 12'h83F;
rommem[11785] <= 12'h043;
rommem[11786] <= 12'h04C;
rommem[11787] <= 12'h853;
rommem[11788] <= 12'h000;
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'h009;
rommem[11855] <= 12'h054;
rommem[11856] <= 12'h046;
rommem[11857] <= 12'h052;
rommem[11858] <= 12'h020;
rommem[11859] <= 12'h009;
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[11790] <= 12'hFFE;
rommem[11791] <= 12'hF11;
rommem[11792] <= 12'hFFF;
rommem[11793] <= 12'h4AC;
rommem[11794] <= 12'hFFF;
rommem[11795] <= 12'h4D3;
rommem[11796] <= 12'hFFF;
rommem[11797] <= 12'h2CF;
rommem[11798] <= 12'hFFF;
rommem[11799] <= 12'h209;
rommem[11800] <= 12'hFFF;
rommem[11801] <= 12'h265;
rommem[11802] <= 12'hFE0;
rommem[11803] <= 12'h000;
rommem[11804] <= 12'hFFF;
rommem[11805] <= 12'h2A5;
rommem[11806] <= 12'hFFF;
rommem[11807] <= 12'h390;
rommem[11808] <= 12'hFFF;
rommem[11809] <= 12'h31A;
rommem[11810] <= 12'hFFD;
rommem[11811] <= 12'h443;
rommem[11812] <= 12'hFF8;
rommem[11813] <= 12'h000;
rommem[11814] <= 12'hFFE;
rommem[11815] <= 12'h4D0;
rommem[11816] <= 12'hFF8;
rommem[11817] <= 12'h003;
rommem[11818] <= 12'hFFF;
rommem[11819] <= 12'h451;
rommem[11820] <= 12'hFFE;
rommem[11821] <= 12'hF37;
rommem[11822] <= 12'hFFE;
rommem[11823] <= 12'hF3F;
rommem[11824] <= 12'h017;
rommem[11825] <= 12'hFFE;
rommem[11826] <= 12'h29F;
rommem[11827] <= 12'h0C6;
rommem[11828] <= 12'h024;
rommem[11829] <= 12'h017;
rommem[11830] <= 12'hFFF;
rommem[11831] <= 12'hEDA;
rommem[11832] <= 12'h016;
rommem[11833] <= 12'hFFF;
rommem[11834] <= 12'hED7;
rommem[11835] <= 12'h046;
rommem[11836] <= 12'h065;
rommem[11837] <= 12'h06D;
rommem[11838] <= 12'h074;
rommem[11839] <= 12'h069;
rommem[11840] <= 12'h06B;
rommem[11841] <= 12'h069;
rommem[11842] <= 12'h020;
rommem[11843] <= 12'h046;
rommem[11844] <= 12'h030;
rommem[11845] <= 12'h039;
rommem[11846] <= 12'h020;
rommem[11847] <= 12'h04D;
rommem[11848] <= 12'h075;
rommem[11849] <= 12'h06C;
rommem[11850] <= 12'h074;
rommem[11851] <= 12'h069;
rommem[11852] <= 12'h02D;
rommem[11853] <= 12'h063;
rommem[11854] <= 12'h06F;
rommem[11855] <= 12'h072;
rommem[11856] <= 12'h065;
rommem[11857] <= 12'h020;
rommem[11858] <= 12'h04F;
rommem[11859] <= 12'h053;
rommem[11860] <= 12'h020;
rommem[11861] <= 12'h053;
rommem[11862] <= 12'h074;
rommem[11863] <= 12'h061;
rommem[11864] <= 12'h072;
rommem[11865] <= 12'h074;
rommem[11866] <= 12'h069;
rommem[11867] <= 12'h06E;
rommem[11868] <= 12'h067;
rommem[11869] <= 12'h00D;
rommem[11870] <= 12'h00A;
rommem[11871] <= 12'h000;
rommem[11872] <= 12'h07F;
rommem[11873] <= 12'h000;
rommem[11874] <= 12'h810;
rommem[11875] <= 12'h07F;
rommem[11876] <= 12'h000;
rommem[11877] <= 12'h811;
rommem[11878] <= 12'h0CC;
rommem[11879] <= 12'h000;
rommem[11880] <= 12'h07B;
rommem[11881] <= 12'h08E;
rommem[11882] <= 12'h000;
rommem[11883] <= 12'h28E;
rommem[11884] <= 12'h017;
rommem[11885] <= 12'hFFF;
rommem[11886] <= 12'hF31;
rommem[11887] <= 12'h0CC;
rommem[11888] <= 12'hFFE;
rommem[11889] <= 12'hE3B;
rommem[11890] <= 12'h017;
rommem[11891] <= 12'hFFF;
rommem[11892] <= 12'h54A;
rommem[11893] <= 12'h0CC;
rommem[11894] <= 12'hFFF;
rommem[11895] <= 12'h06E;
rommem[11896] <= 12'h017;
rommem[11897] <= 12'hFFF;
rommem[11898] <= 12'h544;
rommem[11899] <= 12'h0CC;
rommem[11900] <= 12'hFFE;
rommem[11901] <= 12'hE30;
rommem[11902] <= 12'h0FD;
rommem[11903] <= 12'h000;
rommem[11904] <= 12'h808;
rommem[11905] <= 12'h0CC;
rommem[11906] <= 12'hFFF;
rommem[11907] <= 12'h055;
rommem[11908] <= 12'h0FD;
rommem[11909] <= 12'h000;
rommem[11910] <= 12'h80C;
rommem[11911] <= 12'h0CC;
rommem[11912] <= 12'h006;
rommem[11913] <= 12'h3FF;
rommem[11914] <= 12'h0FD;
rommem[11915] <= 12'h000;
rommem[11916] <= 12'h908;
rommem[11917] <= 12'h07F;
rommem[11918] <= 12'h000;
rommem[11919] <= 12'h90E;
rommem[11920] <= 12'h01F;
rommem[11921] <= 12'h0A8;
rommem[11922] <= 12'h0B7;
rommem[11923] <= 12'h000;
rommem[11924] <= 12'h90F;
rommem[11925] <= 12'h07F;
rommem[11926] <= 12'h000;
rommem[11927] <= 12'h90A;
rommem[11928] <= 12'h0CC;
rommem[11929] <= 12'hFFE;
rommem[11930] <= 12'hEA7;
rommem[11931] <= 12'h0FD;
rommem[11932] <= 12'h000;
rommem[11933] <= 12'h90B;
rommem[11934] <= 12'h07F;
rommem[11935] <= 12'h000;
rommem[11936] <= 12'h902;
rommem[11937] <= 12'h07F;
rommem[11938] <= 12'h000;
rommem[11939] <= 12'h904;
rommem[11940] <= 12'h07F;
rommem[11941] <= 12'h000;
rommem[11942] <= 12'h906;
rommem[11943] <= 12'h032;
rommem[11944] <= 12'h80F;
rommem[11945] <= 12'h006;
rommem[11946] <= 12'hFFF;
rommem[11947] <= 12'h05F;
rommem[11948] <= 12'h017;
rommem[11949] <= 12'hFFF;
rommem[11950] <= 12'hE67;
rommem[11951] <= 12'h0CC;
rommem[11952] <= 12'hFFE;
rommem[11953] <= 12'hBE4;
rommem[11954] <= 12'h0FD;
rommem[11955] <= 12'h000;
rommem[11956] <= 12'h804;
rommem[11957] <= 12'h0CC;
rommem[11958] <= 12'hFFE;
rommem[11959] <= 12'h2FE;
rommem[11960] <= 12'h0FD;
rommem[11961] <= 12'h000;
rommem[11962] <= 12'h800;
rommem[11963] <= 12'h0CC;
rommem[11964] <= 12'hFFE;
rommem[11965] <= 12'hE30;
rommem[11966] <= 12'h0FD;
rommem[11967] <= 12'h000;
rommem[11968] <= 12'h808;
rommem[11969] <= 12'h0AD;
rommem[11970] <= 12'h90F;
rommem[11971] <= 12'h000;
rommem[11972] <= 12'h808;
rommem[11973] <= 12'h0CC;
rommem[11974] <= 12'hFFF;
rommem[11975] <= 12'hFFF;
rommem[11976] <= 12'h017;
rommem[11977] <= 12'hFFF;
rommem[11978] <= 12'hE0F;
rommem[11979] <= 12'h0C1;
rommem[11980] <= 12'h00D;
rommem[11981] <= 12'h027;
rommem[11982] <= 12'h005;
rommem[11983] <= 12'h017;
rommem[11984] <= 12'hFFF;
rommem[11985] <= 12'hE40;
rommem[11986] <= 12'h020;
rommem[11987] <= 12'hFF1;
rommem[11988] <= 12'h0CC;
rommem[11989] <= 12'h005;
rommem[11990] <= 12'h050;
rommem[11991] <= 12'h015;
rommem[11992] <= 12'h0FD;
rommem[11993] <= 12'hFFF;
rommem[11994] <= 12'hE60;
rommem[11995] <= 12'h001;
rommem[11996] <= 12'h00F;
rommem[11997] <= 12'h111;
rommem[11998] <= 12'h017;
rommem[11999] <= 12'hFFF;
rommem[12000] <= 12'h3FA;
rommem[12001] <= 12'h01F;
rommem[12002] <= 12'h002;
rommem[12003] <= 12'h08D;
rommem[12004] <= 12'h067;
rommem[12005] <= 12'h0C1;
rommem[12006] <= 12'h024;
rommem[12007] <= 12'h027;
rommem[12008] <= 12'hFFA;
rommem[12009] <= 12'h031;
rommem[12010] <= 12'h3FF;
rommem[12011] <= 12'h01F;
rommem[12012] <= 12'h023;
rommem[12013] <= 12'h05F;
rommem[12014] <= 12'h08E;
rommem[12015] <= 12'hFFE;
rommem[12016] <= 12'hDE3;
rommem[12017] <= 12'h0A6;
rommem[12018] <= 12'hA00;
rommem[12019] <= 12'h06D;
rommem[12020] <= 12'h804;
rommem[12021] <= 12'h02B;
rommem[12022] <= 12'h00F;
rommem[12023] <= 12'h0A1;
rommem[12024] <= 12'h800;
rommem[12025] <= 12'h027;
rommem[12026] <= 12'hFF6;
rommem[12027] <= 12'h06D;
rommem[12028] <= 12'h800;
rommem[12029] <= 12'h027;
rommem[12030] <= 12'hFA8;
rommem[12031] <= 12'h02A;
rommem[12032] <= 12'hFFA;
rommem[12033] <= 12'h05C;
rommem[12034] <= 12'h01F;
rommem[12035] <= 12'h032;
rommem[12036] <= 12'h020;
rommem[12037] <= 12'hFEB;
rommem[12038] <= 12'h0A8;
rommem[12039] <= 12'h804;
rommem[12040] <= 12'h048;
rommem[12041] <= 12'h026;
rommem[12042] <= 12'hFF0;
rommem[12043] <= 12'h058;
rommem[12044] <= 12'h08E;
rommem[12045] <= 12'hFFE;
rommem[12046] <= 12'hE0E;
rommem[12047] <= 12'h06E;
rommem[12048] <= 12'h905;
rommem[12049] <= 12'h08D;
rommem[12050] <= 12'h034;
rommem[12051] <= 12'h0C1;
rommem[12052] <= 12'h073;
rommem[12053] <= 12'h026;
rommem[12054] <= 12'h00E;
rommem[12055] <= 12'h0CC;
rommem[12056] <= 12'hFFE;
rommem[12057] <= 12'hBE4;
rommem[12058] <= 12'h0FD;
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[12060] <= 12'h804;
rommem[12061] <= 12'h0CC;
rommem[12062] <= 12'hFFE;
rommem[12063] <= 12'hC08;
rommem[12064] <= 12'h0FD;
rommem[12065] <= 12'h000;
rommem[12066] <= 12'h800;
rommem[12067] <= 12'h020;
rommem[12068] <= 12'hF82;
rommem[12069] <= 12'h0C1;
rommem[12070] <= 12'h063;
rommem[12071] <= 12'h026;
rommem[12072] <= 12'hF7E;
rommem[12073] <= 12'h0CC;
rommem[12074] <= 12'hFFE;
rommem[12075] <= 12'hA12;
rommem[12076] <= 12'h0FD;
rommem[12077] <= 12'h000;
rommem[12078] <= 12'h804;
rommem[12079] <= 12'h0CC;
rommem[12080] <= 12'hFFE;
rommem[12081] <= 12'h2FE;
rommem[12082] <= 12'h0FD;
rommem[12083] <= 12'h000;
rommem[12084] <= 12'h800;
rommem[12085] <= 12'h020;
rommem[12086] <= 12'hF70;
rommem[12087] <= 12'h0CC;
rommem[12088] <= 12'hFFF;
rommem[12089] <= 12'h06E;
rommem[12090] <= 12'h017;
rommem[12091] <= 12'hFFF;
rommem[12092] <= 12'h482;
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[12094] <= 12'hF68;
rommem[12095] <= 12'h017;
rommem[12096] <= 12'hFFF;
rommem[12097] <= 12'h2EC;
rommem[12098] <= 12'h017;
rommem[12099] <= 12'hFFF;
rommem[12100] <= 12'h35C;
rommem[12101] <= 12'h020;
rommem[12102] <= 12'hF60;
rommem[12103] <= 12'h0E6;
rommem[12104] <= 12'hA04;
rommem[12105] <= 12'h031;
rommem[12106] <= 12'h201;
rommem[12107] <= 12'h039;
rommem[12108] <= 12'h08D;
rommem[12109] <= 12'hFF9;
rommem[12110] <= 12'h0C1;
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[12112] <= 12'h027;
rommem[12113] <= 12'hFFA;
rommem[12114] <= 12'h039;
rommem[12115] <= 12'h08D;
rommem[12116] <= 12'hFF2;
rommem[12117] <= 12'h0C1;
rommem[12118] <= 12'h020;
rommem[12119] <= 12'h027;
rommem[12120] <= 12'hFFA;
rommem[12121] <= 12'h031;
rommem[12122] <= 12'h3FF;
rommem[12123] <= 12'h039;
rommem[12124] <= 12'h0FC;
rommem[12125] <= 12'h000;
rommem[12126] <= 12'h910;
rommem[12127] <= 12'h0FD;
rommem[12128] <= 12'h000;
rommem[12129] <= 12'h918;
rommem[12130] <= 12'h0FC;
rommem[12131] <= 12'h000;
rommem[12132] <= 12'h912;
rommem[12133] <= 12'h0FD;
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[12135] <= 12'h91A;
rommem[12136] <= 12'h078;
rommem[12137] <= 12'h000;
rommem[12138] <= 12'h913;
rommem[12139] <= 12'h079;
rommem[12140] <= 12'h000;
rommem[12141] <= 12'h912;
rommem[12142] <= 12'h079;
rommem[12143] <= 12'h000;
rommem[12144] <= 12'h911;
rommem[12145] <= 12'h079;
rommem[12146] <= 12'h000;
rommem[12147] <= 12'h910;
rommem[12148] <= 12'h078;
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[12150] <= 12'h913;
rommem[12151] <= 12'h079;
rommem[12152] <= 12'h000;
rommem[12153] <= 12'h912;
rommem[12154] <= 12'h079;
rommem[12155] <= 12'h000;
rommem[12156] <= 12'h911;
rommem[12157] <= 12'h079;
rommem[12158] <= 12'h000;
rommem[12159] <= 12'h910;
rommem[12160] <= 12'h0FC;
rommem[12161] <= 12'h000;
rommem[12162] <= 12'h912;
rommem[12163] <= 12'h0F3;
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[12165] <= 12'h91A;
rommem[12166] <= 12'h0F6;
rommem[12167] <= 12'h000;
rommem[12168] <= 12'h911;
rommem[12169] <= 12'h0F9;
rommem[12170] <= 12'h000;
rommem[12171] <= 12'h919;
rommem[12172] <= 12'h0F7;
rommem[12173] <= 12'h000;
rommem[12174] <= 12'h911;
rommem[12175] <= 12'h0B6;
rommem[12176] <= 12'h000;
rommem[12177] <= 12'h910;
rommem[12178] <= 12'h0B9;
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[12180] <= 12'h918;
rommem[12181] <= 12'h0B7;
rommem[12182] <= 12'h000;
rommem[12183] <= 12'h910;
rommem[12184] <= 12'h078;
rommem[12185] <= 12'h000;
rommem[12186] <= 12'h913;
rommem[12187] <= 12'h079;
rommem[12188] <= 12'h000;
rommem[12189] <= 12'h912;
rommem[12190] <= 12'h079;
rommem[12191] <= 12'h000;
rommem[12192] <= 12'h911;
rommem[12193] <= 12'h079;
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[12195] <= 12'h910;
rommem[12196] <= 12'h039;
rommem[12197] <= 12'h08D;
rommem[12198] <= 12'hFAC;
rommem[12199] <= 12'h08D;
rommem[12200] <= 12'h046;
rommem[12201] <= 12'h0FC;
rommem[12202] <= 12'h000;
rommem[12203] <= 12'h910;
rommem[12204] <= 12'h0FD;
rommem[12205] <= 12'h000;
rommem[12206] <= 12'h920;
rommem[12207] <= 12'h0FC;
rommem[12208] <= 12'h000;
rommem[12209] <= 12'h912;
rommem[12210] <= 12'h0FD;
rommem[12211] <= 12'h000;
rommem[12212] <= 12'h922;
rommem[12213] <= 12'h08D;
rommem[12214] <= 12'hF9C;
rommem[12215] <= 12'h08D;
rommem[12216] <= 12'h036;
rommem[12217] <= 12'h0FC;
rommem[12218] <= 12'h000;
rommem[12219] <= 12'h910;
rommem[12220] <= 12'h0FD;
rommem[12221] <= 12'h000;
rommem[12222] <= 12'h924;
rommem[12223] <= 12'h0FC;
rommem[12224] <= 12'h000;
rommem[12225] <= 12'h912;
rommem[12226] <= 12'h0FD;
rommem[12227] <= 12'h000;
rommem[12228] <= 12'h926;
rommem[12229] <= 12'h039;
rommem[12230] <= 12'h08D;
rommem[12231] <= 12'hFDD;
rommem[12232] <= 12'h0FC;
rommem[12233] <= 12'h000;
rommem[12234] <= 12'h926;
rommem[12235] <= 12'h0B3;
rommem[12236] <= 12'h000;
rommem[12237] <= 12'h922;
rommem[12238] <= 12'h0FC;
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[12240] <= 12'h924;
rommem[12241] <= 12'h0F2;
rommem[12242] <= 12'h000;
rommem[12243] <= 12'h921;
rommem[12244] <= 12'h0B2;
rommem[12245] <= 12'h000;
rommem[12246] <= 12'h920;
rommem[12247] <= 12'h124;
rommem[12248] <= 12'h000;
rommem[12249] <= 12'h007;
rommem[12250] <= 12'h0AD;
rommem[12251] <= 12'h90F;
rommem[12252] <= 12'h000;
rommem[12253] <= 12'h80C;
rommem[12254] <= 12'h016;
rommem[12255] <= 12'hFFF;
rommem[12256] <= 12'hEC6;
rommem[12257] <= 12'h039;
rommem[12258] <= 12'h078;
rommem[12259] <= 12'h000;
rommem[12260] <= 12'h913;
rommem[12261] <= 12'h079;
rommem[12262] <= 12'h000;
rommem[12263] <= 12'h912;
rommem[12264] <= 12'h079;
rommem[12265] <= 12'h000;
rommem[12266] <= 12'h911;
rommem[12267] <= 12'h079;
rommem[12268] <= 12'h000;
rommem[12269] <= 12'h910;
rommem[12270] <= 12'h039;
rommem[12271] <= 12'h04F;
rommem[12272] <= 12'h05F;
rommem[12273] <= 12'h0FD;
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[12275] <= 12'h910;
rommem[12276] <= 12'h0FD;
rommem[12277] <= 12'h000;
rommem[12278] <= 12'h912;
rommem[12279] <= 12'h034;
rommem[12280] <= 12'h010;
rommem[12281] <= 12'h08E;
rommem[12282] <= 12'h000;
rommem[12283] <= 12'h000;
rommem[12284] <= 12'h08D;
rommem[12285] <= 12'hF49;
rommem[12286] <= 12'h08D;
rommem[12287] <= 12'h01F;
rommem[12288] <= 12'h0C1;
rommem[12289] <= 12'hFFF;
rommem[12290] <= 12'h027;
rommem[12291] <= 12'h017;
rommem[12292] <= 12'h08D;
rommem[12293] <= 12'hFDC;
rommem[12294] <= 12'h08D;
rommem[12295] <= 12'hFDA;
rommem[12296] <= 12'h08D;
rommem[12297] <= 12'hFD8;
rommem[12298] <= 12'h08D;
rommem[12299] <= 12'hFD6;
rommem[12300] <= 12'h0C4;
rommem[12301] <= 12'h00F;
rommem[12302] <= 12'h0FA;
rommem[12303] <= 12'h000;
rommem[12304] <= 12'h913;
rommem[12305] <= 12'h0F7;
rommem[12306] <= 12'h000;
rommem[12307] <= 12'h913;
rommem[12308] <= 12'h030;
rommem[12309] <= 12'h001;
rommem[12310] <= 12'h08C;
rommem[12311] <= 12'h000;
rommem[12312] <= 12'h00C;
rommem[12313] <= 12'h025;
rommem[12314] <= 12'hFE1;
rommem[12315] <= 12'h01F;
rommem[12316] <= 12'h010;
rommem[12317] <= 12'h035;
rommem[12318] <= 12'h090;
rommem[12319] <= 12'h0C1;
rommem[12320] <= 12'h030;
rommem[12321] <= 12'h025;
rommem[12322] <= 12'h021;
rommem[12323] <= 12'h0C1;
rommem[12324] <= 12'h039;
rommem[12325] <= 12'h022;
rommem[12326] <= 12'h003;
rommem[12327] <= 12'h0C0;
rommem[12328] <= 12'h030;
rommem[12329] <= 12'h039;
rommem[12330] <= 12'h0C1;
rommem[12331] <= 12'h041;
rommem[12332] <= 12'h025;
rommem[12333] <= 12'h016;
rommem[12334] <= 12'h0C1;
rommem[12335] <= 12'h046;
rommem[12336] <= 12'h022;
rommem[12337] <= 12'h005;
rommem[12338] <= 12'h0C0;
rommem[12339] <= 12'h041;
rommem[12340] <= 12'h0CB;
rommem[12341] <= 12'h00A;
rommem[12342] <= 12'h039;
rommem[12343] <= 12'h0C1;
rommem[12344] <= 12'h061;
rommem[12345] <= 12'h025;
rommem[12346] <= 12'h009;
rommem[12347] <= 12'h0C1;
rommem[12348] <= 12'h07A;
rommem[12349] <= 12'h022;
rommem[12350] <= 12'h005;
rommem[12351] <= 12'h0C0;
rommem[12352] <= 12'h061;
rommem[12353] <= 12'h0CB;
rommem[12354] <= 12'h00A;
rommem[12355] <= 12'h039;
rommem[12356] <= 12'h0C6;
rommem[12357] <= 12'hFFF;
rommem[12358] <= 12'h039;
rommem[12359] <= 12'h0C1;
rommem[12360] <= 12'h030;
rommem[12361] <= 12'h024;
rommem[12362] <= 12'h007;
rommem[12363] <= 12'h0C1;
rommem[12364] <= 12'h03A;
rommem[12365] <= 12'h025;
rommem[12366] <= 12'h003;
rommem[12367] <= 12'h0C0;
rommem[12368] <= 12'h030;
rommem[12369] <= 12'h039;
rommem[12370] <= 12'h0C6;
rommem[12371] <= 12'hFFF;
rommem[12372] <= 12'h039;
rommem[12373] <= 12'h0CC;
rommem[12374] <= 12'hFFF;
rommem[12375] <= 12'h066;
rommem[12376] <= 12'h017;
rommem[12377] <= 12'hFFF;
rommem[12378] <= 12'h364;
rommem[12379] <= 12'h07E;
rommem[12380] <= 12'hFFE;
rommem[12381] <= 12'hEA7;
rommem[12382] <= 12'h0DD;
rommem[12383] <= 12'h024;
rommem[12384] <= 12'h09F;
rommem[12385] <= 12'h026;
rommem[12386] <= 12'h0BD;
rommem[12387] <= 12'hFFE;
rommem[12388] <= 12'h3BF;
rommem[12389] <= 12'h039;
rommem[12390] <= 12'h02A;
rommem[12391] <= 12'h02A;
rommem[12392] <= 12'h045;
rommem[12393] <= 12'h072;
rommem[12394] <= 12'h072;
rommem[12395] <= 12'h00D;
rommem[12396] <= 12'h00A;
rommem[12397] <= 12'h000;
rommem[12398] <= 12'h03F;
rommem[12399] <= 12'h020;
rommem[12400] <= 12'h03D;
rommem[12401] <= 12'h020;
rommem[12402] <= 12'h044;
rommem[12403] <= 12'h069;
rommem[12404] <= 12'h073;
rommem[12405] <= 12'h070;
rommem[12406] <= 12'h06C;
rommem[12407] <= 12'h061;
rommem[12408] <= 12'h079;
rommem[12409] <= 12'h020;
rommem[12410] <= 12'h068;
rommem[12411] <= 12'h065;
rommem[12412] <= 12'h06C;
rommem[12413] <= 12'h070;
rommem[12414] <= 12'h00D;
rommem[12415] <= 12'h00A;
rommem[12416] <= 12'h043;
rommem[12417] <= 12'h04C;
rommem[12418] <= 12'h053;
rommem[12419] <= 12'h020;
rommem[12420] <= 12'h03D;
rommem[12421] <= 12'h020;
rommem[12422] <= 12'h063;
rommem[12423] <= 12'h06C;
rommem[12424] <= 12'h065;
rommem[12425] <= 12'h061;
rommem[12426] <= 12'h072;
rommem[12427] <= 12'h020;
rommem[12428] <= 12'h073;
rommem[12429] <= 12'h063;
rommem[12430] <= 12'h072;
rommem[12431] <= 12'h065;
rommem[12432] <= 12'h065;
rommem[12433] <= 12'h06E;
rommem[12434] <= 12'h00D;
rommem[12435] <= 12'h00A;
rommem[12436] <= 12'h062;
rommem[12437] <= 12'h073;
rommem[12438] <= 12'h020;
rommem[12439] <= 12'h03D;
rommem[12440] <= 12'h020;
rommem[12441] <= 12'h073;
rommem[12442] <= 12'h065;
rommem[12443] <= 12'h074;
rommem[12444] <= 12'h020;
rommem[12445] <= 12'h062;
rommem[12446] <= 12'h072;
rommem[12447] <= 12'h065;
rommem[12448] <= 12'h061;
rommem[12449] <= 12'h06B;
rommem[12450] <= 12'h070;
rommem[12451] <= 12'h06F;
rommem[12452] <= 12'h069;
rommem[12453] <= 12'h06E;
rommem[12454] <= 12'h074;
rommem[12455] <= 12'h00D;
rommem[12456] <= 12'h00A;
rommem[12457] <= 12'h062;
rommem[12458] <= 12'h063;
rommem[12459] <= 12'h020;
rommem[12460] <= 12'h03D;
rommem[12461] <= 12'h020;
rommem[12462] <= 12'h063;
rommem[12463] <= 12'h06C;
rommem[12464] <= 12'h065;
rommem[12465] <= 12'h061;
rommem[12466] <= 12'h072;
rommem[12467] <= 12'h020;
rommem[12468] <= 12'h062;
rommem[12469] <= 12'h072;
rommem[12470] <= 12'h065;
rommem[12471] <= 12'h061;
rommem[12472] <= 12'h06B;
rommem[12473] <= 12'h070;
rommem[12474] <= 12'h06F;
rommem[12475] <= 12'h069;
rommem[12476] <= 12'h06E;
rommem[12477] <= 12'h074;
rommem[12478] <= 12'h00D;
rommem[12479] <= 12'h00A;
rommem[12480] <= 12'h03A;
rommem[12481] <= 12'h020;
rommem[12482] <= 12'h03D;
rommem[12483] <= 12'h020;
rommem[12484] <= 12'h045;
rommem[12485] <= 12'h064;
rommem[12486] <= 12'h069;
rommem[12487] <= 12'h074;
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'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[12489] <= 12'h06D;
rommem[12490] <= 12'h065;
rommem[12491] <= 12'h06D;
rommem[12492] <= 12'h06F;
rommem[12493] <= 12'h072;
rommem[12494] <= 12'h079;
rommem[12495] <= 12'h020;
rommem[12496] <= 12'h062;
rommem[12497] <= 12'h079;
rommem[12498] <= 12'h074;
rommem[12499] <= 12'h065;
rommem[12500] <= 12'h073;
rommem[12501] <= 12'h00D;
rommem[12502] <= 12'h00A;
rommem[12503] <= 12'h044;
rommem[12504] <= 12'h052;
rommem[12505] <= 12'h020;
rommem[12506] <= 12'h03D;
rommem[12507] <= 12'h020;
rommem[12508] <= 12'h044;
rommem[12509] <= 12'h075;
rommem[12510] <= 12'h06D;
rommem[12511] <= 12'h070;
rommem[12512] <= 12'h020;
rommem[12513] <= 12'h072;
rommem[12514] <= 12'h065;
rommem[12515] <= 12'h067;
rommem[12516] <= 12'h069;
rommem[12517] <= 12'h073;
rommem[12518] <= 12'h074;
rommem[12519] <= 12'h065;
rommem[12520] <= 12'h072;
rommem[12521] <= 12'h073;
rommem[12522] <= 12'h00D;
rommem[12523] <= 12'h00A;
rommem[12524] <= 12'h044;
rommem[12525] <= 12'h020;
rommem[12526] <= 12'h03D;
rommem[12527] <= 12'h020;
rommem[12528] <= 12'h044;
rommem[12529] <= 12'h075;
rommem[12530] <= 12'h06D;
rommem[12531] <= 12'h070;
rommem[12532] <= 12'h020;
rommem[12533] <= 12'h06D;
rommem[12534] <= 12'h065;
rommem[12535] <= 12'h06D;
rommem[12536] <= 12'h06F;
rommem[12537] <= 12'h072;
rommem[12538] <= 12'h079;
rommem[12539] <= 12'h00D;
rommem[12540] <= 12'h00A;
rommem[12541] <= 12'h046;
rommem[12542] <= 12'h020;
rommem[12543] <= 12'h03D;
rommem[12544] <= 12'h020;
rommem[12545] <= 12'h046;
rommem[12546] <= 12'h069;
rommem[12547] <= 12'h06C;
rommem[12548] <= 12'h06C;
rommem[12549] <= 12'h020;
rommem[12550] <= 12'h06D;
rommem[12551] <= 12'h065;
rommem[12552] <= 12'h06D;
rommem[12553] <= 12'h06F;
rommem[12554] <= 12'h072;
rommem[12555] <= 12'h079;
rommem[12556] <= 12'h00D;
rommem[12557] <= 12'h00A;
rommem[12558] <= 12'h046;
rommem[12559] <= 12'h04C;
rommem[12560] <= 12'h020;
rommem[12561] <= 12'h03D;
rommem[12562] <= 12'h020;
rommem[12563] <= 12'h044;
rommem[12564] <= 12'h075;
rommem[12565] <= 12'h06D;
rommem[12566] <= 12'h070;
rommem[12567] <= 12'h020;
rommem[12568] <= 12'h049;
rommem[12569] <= 12'h02F;
rommem[12570] <= 12'h04F;
rommem[12571] <= 12'h020;
rommem[12572] <= 12'h046;
rommem[12573] <= 12'h06F;
rommem[12574] <= 12'h063;
rommem[12575] <= 12'h075;
rommem[12576] <= 12'h073;
rommem[12577] <= 12'h020;
rommem[12578] <= 12'h04C;
rommem[12579] <= 12'h069;
rommem[12580] <= 12'h073;
rommem[12581] <= 12'h074;
rommem[12582] <= 12'h00D;
rommem[12583] <= 12'h00A;
rommem[12584] <= 12'h046;
rommem[12585] <= 12'h049;
rommem[12586] <= 12'h047;
rommem[12587] <= 12'h020;
rommem[12588] <= 12'h03D;
rommem[12589] <= 12'h020;
rommem[12590] <= 12'h073;
rommem[12591] <= 12'h074;
rommem[12592] <= 12'h061;
rommem[12593] <= 12'h072;
rommem[12594] <= 12'h074;
rommem[12595] <= 12'h020;
rommem[12596] <= 12'h046;
rommem[12597] <= 12'h049;
rommem[12598] <= 12'h047;
rommem[12599] <= 12'h020;
rommem[12600] <= 12'h046;
rommem[12601] <= 12'h06F;
rommem[12602] <= 12'h072;
rommem[12603] <= 12'h074;
rommem[12604] <= 12'h068;
rommem[12605] <= 12'h00D;
rommem[12606] <= 12'h00A;
rommem[12607] <= 12'h04A;
rommem[12608] <= 12'h020;
rommem[12609] <= 12'h03D;
rommem[12610] <= 12'h020;
rommem[12611] <= 12'h04A;
rommem[12612] <= 12'h075;
rommem[12613] <= 12'h06D;
rommem[12614] <= 12'h070;
rommem[12615] <= 12'h020;
rommem[12616] <= 12'h074;
rommem[12617] <= 12'h06F;
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[12619] <= 12'h063;
rommem[12620] <= 12'h06F;
rommem[12621] <= 12'h064;
rommem[12622] <= 12'h065;
rommem[12623] <= 12'h00D;
rommem[12624] <= 12'h00A;
rommem[12625] <= 12'h052;
rommem[12626] <= 12'h041;
rommem[12627] <= 12'h04D;
rommem[12628] <= 12'h020;
rommem[12629] <= 12'h03D;
rommem[12630] <= 12'h020;
rommem[12631] <= 12'h074;
rommem[12632] <= 12'h065;
rommem[12633] <= 12'h073;
rommem[12634] <= 12'h074;
rommem[12635] <= 12'h020;
rommem[12636] <= 12'h052;
rommem[12637] <= 12'h041;
rommem[12638] <= 12'h04D;
rommem[12639] <= 12'h00D;
rommem[12640] <= 12'h00A;
rommem[12641] <= 12'h073;
rommem[12642] <= 12'h020;
rommem[12643] <= 12'h03D;
rommem[12644] <= 12'h020;
rommem[12645] <= 12'h073;
rommem[12646] <= 12'h065;
rommem[12647] <= 12'h072;
rommem[12648] <= 12'h069;
rommem[12649] <= 12'h061;
rommem[12650] <= 12'h06C;
rommem[12651] <= 12'h020;
rommem[12652] <= 12'h06F;
rommem[12653] <= 12'h075;
rommem[12654] <= 12'h074;
rommem[12655] <= 12'h070;
rommem[12656] <= 12'h075;
rommem[12657] <= 12'h074;
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[12659] <= 12'h074;
rommem[12660] <= 12'h065;
rommem[12661] <= 12'h073;
rommem[12662] <= 12'h074;
rommem[12663] <= 12'h00D;
rommem[12664] <= 12'h00A;
rommem[12665] <= 12'h053;
rommem[12666] <= 12'h050;
rommem[12667] <= 12'h020;
rommem[12668] <= 12'h03D;
rommem[12669] <= 12'h020;
rommem[12670] <= 12'h073;
rommem[12671] <= 12'h070;
rommem[12672] <= 12'h072;
rommem[12673] <= 12'h069;
rommem[12674] <= 12'h074;
rommem[12675] <= 12'h065;
rommem[12676] <= 12'h020;
rommem[12677] <= 12'h064;
rommem[12678] <= 12'h065;
rommem[12679] <= 12'h06D;
rommem[12680] <= 12'h06F;
rommem[12681] <= 12'h00D;
rommem[12682] <= 12'h00A;
rommem[12683] <= 12'h054;
rommem[12684] <= 12'h049;
rommem[12685] <= 12'h020;
rommem[12686] <= 12'h03D;
rommem[12687] <= 12'h020;
rommem[12688] <= 12'h064;
rommem[12689] <= 12'h069;
rommem[12690] <= 12'h073;
rommem[12691] <= 12'h070;
rommem[12692] <= 12'h06C;
rommem[12693] <= 12'h061;
rommem[12694] <= 12'h079;
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[12696] <= 12'h064;
rommem[12697] <= 12'h061;
rommem[12698] <= 12'h074;
rommem[12699] <= 12'h065;
rommem[12700] <= 12'h02F;
rommem[12701] <= 12'h074;
rommem[12702] <= 12'h069;
rommem[12703] <= 12'h06D;
rommem[12704] <= 12'h065;
rommem[12705] <= 12'h00D;
rommem[12706] <= 12'h00A;
rommem[12707] <= 12'h055;
rommem[12708] <= 12'h020;
rommem[12709] <= 12'h03D;
rommem[12710] <= 12'h020;
rommem[12711] <= 12'h075;
rommem[12712] <= 12'h06E;
rommem[12713] <= 12'h061;
rommem[12714] <= 12'h073;
rommem[12715] <= 12'h073;
rommem[12716] <= 12'h065;
rommem[12717] <= 12'h06D;
rommem[12718] <= 12'h062;
rommem[12719] <= 12'h06C;
rommem[12720] <= 12'h065;
rommem[12721] <= 12'h00D;
rommem[12722] <= 12'h00A;
rommem[12723] <= 12'h078;
rommem[12724] <= 12'h020;
rommem[12725] <= 12'h03D;
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[12727] <= 12'h065;
rommem[12728] <= 12'h078;
rommem[12729] <= 12'h069;
rommem[12730] <= 12'h074;
rommem[12731] <= 12'h020;
rommem[12732] <= 12'h06D;
rommem[12733] <= 12'h06F;
rommem[12734] <= 12'h06E;
rommem[12735] <= 12'h069;
rommem[12736] <= 12'h074;
rommem[12737] <= 12'h06F;
rommem[12738] <= 12'h072;
rommem[12739] <= 12'h00D;
rommem[12740] <= 12'h00A;
rommem[12741] <= 12'h000;
rommem[12742] <= 12'h00D;
rommem[12743] <= 12'h00A;
rommem[12744] <= 12'h020;
rommem[12745] <= 12'h020;
rommem[12746] <= 12'h044;
rommem[12747] <= 12'h02F;
rommem[12748] <= 12'h041;
rommem[12749] <= 12'h042;
rommem[12750] <= 12'h020;
rommem[12751] <= 12'h020;
rommem[12752] <= 12'h020;
rommem[12753] <= 12'h020;
rommem[12754] <= 12'h020;
rommem[12755] <= 12'h058;
rommem[12756] <= 12'h020;
rommem[12757] <= 12'h020;
rommem[12758] <= 12'h020;
rommem[12759] <= 12'h020;
rommem[12760] <= 12'h020;
rommem[12761] <= 12'h020;
rommem[12762] <= 12'h059;
rommem[12763] <= 12'h020;
rommem[12764] <= 12'h020;
rommem[12765] <= 12'h020;
rommem[12766] <= 12'h020;
rommem[12767] <= 12'h020;
rommem[12768] <= 12'h020;
rommem[12769] <= 12'h055;
rommem[12770] <= 12'h020;
rommem[12771] <= 12'h020;
rommem[12772] <= 12'h020;
rommem[12773] <= 12'h020;
rommem[12774] <= 12'h001;
rommem[12775] <= 12'h053;
rommem[12776] <= 12'h054;
rommem[12777] <= 12'h042;
rommem[12774] <= 12'h020;
rommem[12775] <= 12'h020;
rommem[12776] <= 12'h053;
rommem[12777] <= 12'h020;
rommem[12778] <= 12'h020;
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[12779] <= 12'h020;
rommem[12780] <= 12'h020;
rommem[12781] <= 12'h020;
rommem[12782] <= 12'h020;
rommem[12783] <= 12'h020;
rommem[12784] <= 12'h050;
rommem[12785] <= 12'h043;
rommem[12786] <= 12'h020;
rommem[12787] <= 12'h020;
rommem[12788] <= 12'h020;
rommem[12789] <= 12'h020;
rommem[12790] <= 12'h044;
rommem[12791] <= 12'h050;
rommem[12792] <= 12'h020;
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'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'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'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[12794] <= 12'h043;
rommem[12795] <= 12'h043;
rommem[12796] <= 12'h052;
rommem[12797] <= 12'h00D;
rommem[12798] <= 12'h00A;
rommem[12799] <= 12'h000;
rommem[12800] <= 12'h0BD;
rommem[12801] <= 12'hFFD;
rommem[12802] <= 12'h2D2;
rommem[12803] <= 12'h039;
rommem[12804] <= 12'h0C6;
rommem[12805] <= 12'h020;
rommem[12806] <= 12'h016;
rommem[12807] <= 12'hFFF;
rommem[12808] <= 12'hB09;
rommem[12809] <= 12'h08D;
rommem[12810] <= 12'hDBB;
rommem[12811] <= 12'h18E;
rommem[12812] <= 12'h000;
rommem[12813] <= 12'h000;
rommem[12814] <= 12'h1BE;
rommem[12815] <= 12'h000;
rommem[12816] <= 12'h922;
rommem[12817] <= 12'h017;
rommem[12818] <= 12'hFFD;
rommem[12819] <= 12'hEBE;
rommem[12820] <= 12'h0C6;
rommem[12821] <= 12'h03A;
rommem[12822] <= 12'h017;
rommem[12823] <= 12'hFFF;
rommem[12824] <= 12'hAF9;
rommem[12825] <= 12'h01F;
rommem[12826] <= 12'h020;
rommem[12827] <= 12'h017;
rommem[12828] <= 12'hFFF;
rommem[12829] <= 12'h1EC;
rommem[12830] <= 12'h0C6;
rommem[12831] <= 12'h020;
rommem[12832] <= 12'h017;
rommem[12833] <= 12'hFFF;
rommem[12834] <= 12'hAEF;
rommem[12835] <= 12'h08E;
rommem[12836] <= 12'h000;
rommem[12837] <= 12'h008;
rommem[12838] <= 12'h0E6;
rommem[12839] <= 12'hA04;
rommem[12840] <= 12'h031;
rommem[12841] <= 12'h201;
rommem[12842] <= 12'h017;
rommem[12843] <= 12'hFFF;
rommem[12844] <= 12'h1E6;
rommem[12845] <= 12'h0C6;
rommem[12846] <= 12'h020;
rommem[12847] <= 12'h017;
rommem[12848] <= 12'hFFF;
rommem[12849] <= 12'hAE0;
rommem[12850] <= 12'h05F;
rommem[12851] <= 12'h04F;
rommem[12852] <= 12'h017;
rommem[12853] <= 12'hFFF;
rommem[12854] <= 12'hAA3;
rommem[12855] <= 12'h0C1;
rommem[12856] <= 12'h003;
rommem[12857] <= 12'h027;
rommem[12858] <= 12'h024;
rommem[12859] <= 12'h030;
rommem[12860] <= 12'h1FF;
rommem[12861] <= 12'h026;
rommem[12862] <= 12'hFE7;
rommem[12863] <= 12'h0C6;
rommem[12864] <= 12'h020;
rommem[12865] <= 12'h017;
rommem[12866] <= 12'hFFF;
rommem[12867] <= 12'hACE;
rommem[12868] <= 12'h08E;
rommem[12869] <= 12'h000;
rommem[12870] <= 12'h008;
rommem[12871] <= 12'h031;
rommem[12872] <= 12'h3F8;
rommem[12873] <= 12'h0E6;
rommem[12874] <= 12'hA04;
rommem[12875] <= 12'h0C1;
rommem[12876] <= 12'h020;
rommem[12877] <= 12'h024;
rommem[12878] <= 12'h002;
rommem[12879] <= 12'h0C6;
rommem[12880] <= 12'h02E;
rommem[12881] <= 12'h017;
rommem[12882] <= 12'hFFF;
rommem[12883] <= 12'hABE;
rommem[12884] <= 12'h031;
rommem[12885] <= 12'h201;
rommem[12886] <= 12'h030;
rommem[12887] <= 12'h1FF;
rommem[12888] <= 12'h026;
rommem[12889] <= 12'hFEF;
rommem[12890] <= 12'h1BC;
rommem[12891] <= 12'h000;
rommem[12892] <= 12'h926;
rommem[12893] <= 12'h025;
rommem[12894] <= 12'hFB2;
rommem[12895] <= 12'h017;
rommem[12896] <= 12'hFFD;
rommem[12897] <= 12'hE70;
rommem[12898] <= 12'h016;
rommem[12899] <= 12'hFFF;
rommem[12900] <= 12'hC42;
rommem[12901] <= 12'h0CE;
rommem[12902] <= 12'h000;
rommem[12903] <= 12'h008;
rommem[12904] <= 12'h017;
rommem[12905] <= 12'hFFF;
rommem[12906] <= 12'hD84;
rommem[12907] <= 12'h0BE;
rommem[12908] <= 12'h000;
rommem[12909] <= 12'h912;
rommem[12910] <= 12'h017;
rommem[12911] <= 12'hFFF;
rommem[12912] <= 12'hCE2;
rommem[12913] <= 12'h017;
rommem[12914] <= 12'hFFF;
rommem[12915] <= 12'hD7B;
rommem[12916] <= 12'h05D;
rommem[12917] <= 12'h027;
rommem[12918] <= 12'h00C;
rommem[12919] <= 12'h0F6;
rommem[12920] <= 12'h000;
rommem[12921] <= 12'h913;
rommem[12922] <= 12'h0E7;
rommem[12923] <= 12'h800;
rommem[12924] <= 12'h033;
rommem[12925] <= 12'h5FF;
rommem[12926] <= 12'h283;
rommem[12927] <= 12'h000;
rommem[12928] <= 12'h000;
rommem[12929] <= 12'h026;
rommem[12930] <= 12'hFEB;
rommem[12931] <= 12'h017;
rommem[12932] <= 12'hFFF;
rommem[12933] <= 12'hCC1;
rommem[12934] <= 12'h0C1;
rommem[12935] <= 12'h022;
rommem[12936] <= 12'h026;
rommem[12937] <= 12'h018;
rommem[12938] <= 12'h0CE;
rommem[12939] <= 12'h000;
rommem[12940] <= 12'h028;
rommem[12941] <= 12'h017;
rommem[12942] <= 12'hFFF;
rommem[12943] <= 12'hCB7;
rommem[12944] <= 12'h0C1;
rommem[12945] <= 12'h022;
rommem[12946] <= 12'h026;
rommem[12947] <= 12'h005;
rommem[12948] <= 12'h0CE;
rommem[12949] <= 12'h000;
rommem[12950] <= 12'h008;
rommem[12951] <= 12'h020;
rommem[12952] <= 12'hFD5;
rommem[12953] <= 12'h0E7;
rommem[12954] <= 12'h800;
rommem[12955] <= 12'h033;
rommem[12956] <= 12'h5FF;
rommem[12957] <= 12'h283;
rommem[12958] <= 12'h000;
rommem[12959] <= 12'h000;
rommem[12960] <= 12'h022;
rommem[12961] <= 12'hFEB;
rommem[12962] <= 12'h016;
rommem[12963] <= 12'hFFF;
rommem[12964] <= 12'hC02;
rommem[12965] <= 12'h017;
rommem[12966] <= 12'hFFF;
rommem[12967] <= 12'hD1E;
rommem[12968] <= 12'h017;
rommem[12969] <= 12'hFFF;
rommem[12970] <= 12'hCA8;
rommem[12971] <= 12'h017;
rommem[12972] <= 12'hFFF;
rommem[12973] <= 12'hD41;
rommem[12974] <= 12'h0F6;
rommem[12975] <= 12'h000;
rommem[12976] <= 12'h913;
rommem[12977] <= 12'h0BE;
rommem[12978] <= 12'h000;
rommem[12979] <= 12'h922;
rommem[12980] <= 12'h04F;
rommem[12981] <= 12'h04D;
rommem[12982] <= 12'h026;
rommem[12983] <= 12'h00D;
rommem[12984] <= 12'h05F;
rommem[12985] <= 12'h04F;
rommem[12986] <= 12'h017;
rommem[12987] <= 12'hFFF;
rommem[12988] <= 12'hA1D;
rommem[12989] <= 12'h0C1;
rommem[12990] <= 12'h003;
rommem[12991] <= 12'h127;
rommem[12992] <= 12'hFFF;
rommem[12993] <= 12'hBE5;
rommem[12994] <= 12'h0F6;
rommem[12995] <= 12'h000;
rommem[12996] <= 12'h913;
rommem[12997] <= 12'h0E7;
rommem[12998] <= 12'h800;
rommem[12999] <= 12'h0BC;
rommem[13000] <= 12'h000;
rommem[13001] <= 12'h926;
rommem[13002] <= 12'h023;
rommem[13003] <= 12'hFE9;
rommem[13004] <= 12'h016;
rommem[13005] <= 12'hFFF;
rommem[13006] <= 12'hBD8;
rommem[13007] <= 12'h0CC;
rommem[13008] <= 12'hFFF;
rommem[13009] <= 12'h1C6;
rommem[13010] <= 12'h017;
rommem[13011] <= 12'hFFF;
rommem[13012] <= 12'h0EA;
rommem[13013] <= 12'h08D;
rommem[13014] <= 12'hF2D;
rommem[13015] <= 12'h0FC;
rommem[13016] <= 12'h000;
rommem[13017] <= 12'h900;
rommem[13018] <= 12'h08D;
rommem[13019] <= 12'hF24;
rommem[13020] <= 12'h08D;
rommem[13021] <= 12'hF26;
rommem[13022] <= 12'h0FC;
rommem[13023] <= 12'h000;
rommem[13024] <= 12'h902;
rommem[13025] <= 12'h08D;
rommem[13026] <= 12'hF1D;
rommem[13027] <= 12'h08D;
rommem[13028] <= 12'hF1F;
rommem[13029] <= 12'h0FC;
rommem[13030] <= 12'h000;
rommem[13031] <= 12'h904;
rommem[13032] <= 12'h08D;
rommem[13033] <= 12'hF16;
rommem[13034] <= 12'h08D;
rommem[13035] <= 12'hF18;
rommem[13036] <= 12'h0FC;
rommem[13037] <= 12'h000;
rommem[13038] <= 12'h906;
rommem[13039] <= 12'h08D;
rommem[13040] <= 12'hF0F;
rommem[13041] <= 12'h08D;
rommem[13042] <= 12'hF11;
rommem[13043] <= 12'h0FC;
rommem[13044] <= 12'h000;
rommem[13045] <= 12'h908;
rommem[13046] <= 12'h08D;
rommem[13047] <= 12'hF08;
rommem[13048] <= 12'h08D;
rommem[13049] <= 12'hF0A;
rommem[13050] <= 12'h0F6;
rommem[13051] <= 12'h000;
rommem[13052] <= 12'h90B;
rommem[13053] <= 12'h017;
rommem[13054] <= 12'hFFF;
rommem[13055] <= 12'h113;
rommem[13056] <= 12'h0FC;
rommem[13057] <= 12'h000;
rommem[13058] <= 12'h90C;
rommem[13059] <= 12'h08D;
rommem[13060] <= 12'hEFB;
rommem[13061] <= 12'h08D;
rommem[13062] <= 12'hEFD;
rommem[13063] <= 12'h0FC;
rommem[13064] <= 12'h000;
rommem[13065] <= 12'h90E;
rommem[13066] <= 12'h0BD;
rommem[13067] <= 12'hFFD;
rommem[13068] <= 12'h2CE;
rommem[13069] <= 12'h08D;
rommem[13070] <= 12'hEF5;
rommem[13071] <= 12'h0B6;
rommem[13072] <= 12'h000;
rommem[13073] <= 12'h90F;
rommem[13074] <= 12'h017;
rommem[13075] <= 12'hFFD;
rommem[13076] <= 12'hFB9;
rommem[13077] <= 12'h08D;
rommem[13078] <= 12'hEED;
rommem[13079] <= 12'h016;
rommem[13080] <= 12'hFFF;
rommem[13081] <= 12'hB8D;
rommem[13082] <= 12'h08D;
rommem[13083] <= 12'hCD3;
rommem[13084] <= 12'h01A;
rommem[13085] <= 12'h010;
rommem[13086] <= 12'h1FE;
rommem[13087] <= 12'h000;
rommem[13088] <= 12'h908;
rommem[13089] <= 12'h0CC;
rommem[13090] <= 12'hFFF;
rommem[13091] <= 12'h355;
rommem[13092] <= 12'h034;
rommem[13093] <= 12'h006;
rommem[13094] <= 12'h0C6;
rommem[13095] <= 12'h000;
rommem[13096] <= 12'h034;
rommem[13097] <= 12'h004;
rommem[13098] <= 12'h0FC;
rommem[13099] <= 12'h000;
rommem[13100] <= 12'h912;
rommem[13101] <= 12'h034;
rommem[13102] <= 12'h006;
rommem[13103] <= 12'h0F6;
rommem[13104] <= 12'h000;
rommem[13105] <= 12'h911;
rommem[13106] <= 12'h034;
rommem[13107] <= 12'h004;
rommem[13108] <= 12'h0FC;
rommem[13109] <= 12'h000;
rommem[13110] <= 12'h906;
rommem[13111] <= 12'h034;
rommem[13112] <= 12'h006;
rommem[13113] <= 12'h0FC;
rommem[13114] <= 12'h000;
rommem[13115] <= 12'h904;
rommem[13116] <= 12'h034;
rommem[13117] <= 12'h006;
rommem[13118] <= 12'h0FC;
rommem[13119] <= 12'h000;
rommem[13120] <= 12'h902;
rommem[13121] <= 12'h034;
rommem[13122] <= 12'h006;
rommem[13123] <= 12'h0B6;
rommem[13124] <= 12'h000;
rommem[13125] <= 12'h90E;
rommem[13126] <= 12'h034;
rommem[13127] <= 12'h002;
rommem[13128] <= 12'h0FC;
rommem[13129] <= 12'h000;
rommem[13130] <= 12'h900;
rommem[13131] <= 12'h034;
rommem[13132] <= 12'h006;
rommem[13133] <= 12'h0B6;
rommem[13134] <= 12'h000;
rommem[13135] <= 12'h90F;
rommem[13136] <= 12'h034;
rommem[13137] <= 12'h002;
rommem[13138] <= 12'h015;
rommem[13139] <= 12'h035;
rommem[13140] <= 12'h0FF;
rommem[13141] <= 12'h1FF;
rommem[13142] <= 12'h000;
rommem[13143] <= 12'h908;
rommem[13144] <= 12'h032;
rommem[13145] <= 12'h80F;
rommem[13146] <= 12'h006;
rommem[13147] <= 12'hFFF;
rommem[13148] <= 12'h034;
rommem[13149] <= 12'h001;
rommem[13150] <= 12'h034;
rommem[13151] <= 12'h002;
rommem[13152] <= 12'h01F;
rommem[13153] <= 12'h0B8;
rommem[13154] <= 12'h0B7;
rommem[13155] <= 12'h000;
rommem[13156] <= 12'h90E;
rommem[13157] <= 12'h04F;
rommem[13158] <= 12'h01F;
rommem[13159] <= 12'h08B;
rommem[13160] <= 12'h035;
rommem[13161] <= 12'h002;
rommem[13162] <= 12'h0FD;
rommem[13163] <= 12'h000;
rommem[13164] <= 12'h900;
rommem[13165] <= 12'h0BF;
rommem[13166] <= 12'h000;
rommem[13167] <= 12'h902;
rommem[13168] <= 12'h1BF;
rommem[13169] <= 12'h000;
rommem[13170] <= 12'h904;
rommem[13171] <= 12'h0FF;
rommem[13172] <= 12'h000;
rommem[13173] <= 12'h906;
rommem[13174] <= 12'h035;
rommem[13175] <= 12'h002;
rommem[13176] <= 12'h0B7;
rommem[13177] <= 12'h000;
rommem[13178] <= 12'h90F;
rommem[13179] <= 12'h0CC;
rommem[13180] <= 12'hFFE;
rommem[13181] <= 12'hBE4;
rommem[13182] <= 12'h0FD;
rommem[13183] <= 12'h000;
rommem[13184] <= 12'h804;
rommem[13185] <= 12'h0CC;
rommem[13186] <= 12'hFFE;
rommem[13187] <= 12'h2FE;
rommem[13188] <= 12'h0FD;
rommem[13189] <= 12'h000;
rommem[13190] <= 12'h800;
rommem[13191] <= 12'h0FC;
rommem[13192] <= 12'hFFF;
rommem[13193] <= 12'h055;
rommem[13194] <= 12'h0FD;
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'h00F;
rommem[13237] <= 12'h15F;
rommem[13238] <= 12'h017;
rommem[13239] <= 12'h000;
rommem[13240] <= 12'h6AD;
rommem[13241] <= 12'h017;
rommem[13242] <= 12'hFFD;
rommem[13243] <= 12'hD16;
rommem[13244] <= 12'h1BE;
rommem[13245] <= 12'h000;
rommem[13246] <= 12'h922;
rommem[13247] <= 12'h01F;
rommem[13248] <= 12'h020;
rommem[13249] <= 12'h017;
rommem[13250] <= 12'hFFF;
rommem[13251] <= 12'h03D;
rommem[13252] <= 12'h0C6;
rommem[13253] <= 12'h020;
rommem[13254] <= 12'h017;
rommem[13255] <= 12'hFFF;
rommem[13256] <= 12'h949;
rommem[13257] <= 12'h0E6;
rommem[13258] <= 12'hA00;
rommem[13259] <= 12'h0C5;
rommem[13260] <= 12'h300;
rommem[13261] <= 12'h126;
rommem[13196] <= 12'h80C;
rommem[13197] <= 12'h016;
rommem[13198] <= 12'hFFF;
rommem[13199] <= 12'hF3F;
rommem[13200] <= 12'h08E;
rommem[13201] <= 12'h000;
rommem[13202] <= 12'h000;
rommem[13203] <= 12'h0E6;
rommem[13204] <= 12'h80A;
rommem[13205] <= 12'h000;
rommem[13206] <= 12'hFFC;
rommem[13207] <= 12'h000;
rommem[13208] <= 12'h0C1;
rommem[13209] <= 12'h018;
rommem[13210] <= 12'h026;
rommem[13211] <= 12'h00A;
rommem[13212] <= 12'h01F;
rommem[13213] <= 12'h010;
rommem[13214] <= 12'h017;
rommem[13215] <= 12'hFFF;
rommem[13216] <= 12'h072;
rommem[13217] <= 12'h0C6;
rommem[13218] <= 12'h020;
rommem[13219] <= 12'h017;
rommem[13220] <= 12'hFFF;
rommem[13221] <= 12'h96C;
rommem[13222] <= 12'h030;
rommem[13223] <= 12'h001;
rommem[13224] <= 12'h08C;
rommem[13225] <= 12'h000;
rommem[13226] <= 12'h010;
rommem[13227] <= 12'h025;
rommem[13228] <= 12'hFE6;
rommem[13229] <= 12'h017;
rommem[13230] <= 12'hFFD;
rommem[13231] <= 12'hD22;
rommem[13232] <= 12'h016;
rommem[13233] <= 12'hFFF;
rommem[13234] <= 12'hAF4;
rommem[13235] <= 12'h000;
rommem[13236] <= 12'h006;
rommem[13237] <= 12'hFFF;
rommem[13238] <= 12'h008;
rommem[13239] <= 12'hFFF;
rommem[13240] <= 12'h3B9;
rommem[13241] <= 12'hFFE;
rommem[13242] <= 12'hEA7;
rommem[13243] <= 12'hFFE;
rommem[13244] <= 12'hCDA;
rommem[13245] <= 12'hFFE;
rommem[13246] <= 12'hD12;
rommem[13247] <= 12'hFFD;
rommem[13248] <= 12'h0D2;
rommem[13249] <= 12'hFFE;
rommem[13250] <= 12'h3BF;
rommem[13251] <= 12'hFFE;
rommem[13252] <= 12'h413;
rommem[13253] <= 12'hFFE;
rommem[13254] <= 12'h40A;
rommem[13255] <= 12'hFFE;
rommem[13256] <= 12'hD1C;
rommem[13257] <= 12'hFFE;
rommem[13258] <= 12'hDA0;
rommem[13259] <= 12'hFFE;
rommem[13260] <= 12'hDCE;
rommem[13261] <= 12'h000;
rommem[13262] <= 12'h000;
rommem[13263] <= 12'h41F;
rommem[13264] <= 12'h0C4;
rommem[13265] <= 12'h0FF;
rommem[13266] <= 12'h0C1;
rommem[13267] <= 12'h015;
rommem[13268] <= 12'h026;
rommem[13269] <= 12'h004;
rommem[13270] <= 12'h0D7;
rommem[13271] <= 12'h15F;
rommem[13272] <= 12'h020;
rommem[13273] <= 12'hFE5;
rommem[13274] <= 12'h08E;
rommem[13275] <= 12'hFFE;
rommem[13276] <= 12'hDB4;
rommem[13277] <= 12'h086;
rommem[13278] <= 12'h005;
rommem[13279] <= 12'h03D;
rommem[13280] <= 12'h03A;
rommem[13281] <= 12'h0E6;
rommem[13282] <= 12'h800;
rommem[13283] <= 12'h017;
rommem[13284] <= 12'hFFF;
rommem[13285] <= 12'h92C;
rommem[13286] <= 12'h0E6;
rommem[13287] <= 12'h800;
rommem[13288] <= 12'h017;
rommem[13289] <= 12'hFFF;
rommem[13290] <= 12'h927;
rommem[13291] <= 12'h0E6;
rommem[13292] <= 12'h800;
rommem[13293] <= 12'h017;
rommem[13294] <= 12'hFFF;
rommem[13295] <= 12'h922;
rommem[13296] <= 12'h0E6;
rommem[13297] <= 12'h800;
rommem[13298] <= 12'h017;
rommem[13299] <= 12'hFFF;
rommem[13300] <= 12'h91D;
rommem[13301] <= 12'h0C6;
rommem[13302] <= 12'h020;
rommem[13303] <= 12'h017;
rommem[13304] <= 12'hFFF;
rommem[13305] <= 12'h918;
rommem[13306] <= 12'h0E6;
rommem[13307] <= 12'h800;
rommem[13308] <= 12'h127;
rommem[13309] <= 12'h000;
rommem[13310] <= 12'h443;
rommem[13311] <= 12'h0C1;
rommem[13312] <= 12'h001;
rommem[13313] <= 12'h026;
rommem[13314] <= 12'h008;
rommem[13315] <= 12'h0E6;
rommem[13316] <= 12'hA00;
rommem[13317] <= 12'h017;
rommem[13318] <= 12'hFFF;
rommem[13319] <= 12'h002;
rommem[13320] <= 12'h016;
rommem[13263] <= 12'hFFE;
rommem[13264] <= 12'hFC6;
rommem[13265] <= 12'h0E6;
rommem[13266] <= 12'h80C;
rommem[13267] <= 12'hFDF;
rommem[13268] <= 12'h01F;
rommem[13269] <= 12'h09B;
rommem[13270] <= 12'h0EE;
rommem[13271] <= 12'h60B;
rommem[13272] <= 12'h033;
rommem[13273] <= 12'h5FF;
rommem[13274] <= 12'h07D;
rommem[13275] <= 12'h000;
rommem[13276] <= 12'h810;
rommem[13277] <= 12'h027;
rommem[13278] <= 12'h00F;
rommem[13279] <= 12'h0CE;
rommem[13280] <= 12'h000;
rommem[13281] <= 12'h820;
rommem[13282] <= 12'h0F6;
rommem[13283] <= 12'h000;
rommem[13284] <= 12'h811;
rommem[13285] <= 12'h027;
rommem[13286] <= 12'h007;
rommem[13287] <= 12'h2A3;
rommem[13288] <= 12'hA01;
rommem[13289] <= 12'h027;
rommem[13290] <= 12'h033;
rommem[13291] <= 12'h05A;
rommem[13292] <= 12'h026;
rommem[13293] <= 12'hFF9;
rommem[13294] <= 12'h07F;
rommem[13295] <= 12'h000;
rommem[13296] <= 12'h810;
rommem[13297] <= 12'h037;
rommem[13298] <= 12'h006;
rommem[13299] <= 12'h0C1;
rommem[13300] <= 12'h00D;
rommem[13301] <= 12'h122;
rommem[13302] <= 12'hFFF;
rommem[13303] <= 12'hC5D;
rommem[13304] <= 12'h0EF;
rommem[13305] <= 12'h60B;
rommem[13306] <= 12'h0C1;
rommem[13307] <= 12'h00A;
rommem[13308] <= 12'h027;
rommem[13309] <= 12'h056;
rommem[13310] <= 12'h058;
rommem[13311] <= 12'h0AE;
rommem[13312] <= 12'h80C;
rommem[13313] <= 12'hFB5;
rommem[13314] <= 12'h03A;
rommem[13315] <= 12'h0AE;
rommem[13316] <= 12'h804;
rommem[13317] <= 12'h0BF;
rommem[13318] <= 12'h000;
rommem[13319] <= 12'h928;
rommem[13320] <= 12'h1FF;
rommem[13321] <= 12'h000;
rommem[13322] <= 12'h437;
rommem[13323] <= 12'h0C1;
rommem[13324] <= 12'h002;
rommem[13325] <= 12'h026;
rommem[13326] <= 12'h00C;
rommem[13327] <= 12'h0EC;
rommem[13328] <= 12'hA01;
rommem[13329] <= 12'h030;
rommem[13330] <= 12'hA0B;
rommem[13331] <= 12'h01F;
rommem[13332] <= 12'h010;
rommem[13333] <= 12'h017;
rommem[13334] <= 12'hFFE;
rommem[13335] <= 12'hFE9;
rommem[13336] <= 12'h016;
rommem[13337] <= 12'h000;
rommem[13338] <= 12'h427;
rommem[13339] <= 12'h0C1;
rommem[13340] <= 12'h004;
rommem[13341] <= 12'h026;
rommem[13342] <= 12'h005;
rommem[13343] <= 12'h0E6;
rommem[13344] <= 12'hA00;
rommem[13345] <= 12'h04F;
rommem[13346] <= 12'h020;
rommem[13347] <= 12'hFED;
rommem[13348] <= 12'h0C1;
rommem[13349] <= 12'h005;
rommem[13350] <= 12'h026;
rommem[13351] <= 12'h385;
rommem[13322] <= 12'h908;
rommem[13323] <= 12'h0EC;
rommem[13324] <= 12'h601;
rommem[13325] <= 12'h0AE;
rommem[13326] <= 12'h604;
rommem[13327] <= 12'h1AE;
rommem[13328] <= 12'h606;
rommem[13329] <= 12'h0EE;
rommem[13330] <= 12'h608;
rommem[13331] <= 12'h1EE;
rommem[13332] <= 12'h80C;
rommem[13333] <= 12'hF9E;
rommem[13334] <= 12'h0AD;
rommem[13335] <= 12'h90F;
rommem[13336] <= 12'h000;
rommem[13337] <= 12'h928;
rommem[13338] <= 12'h1FE;
rommem[13339] <= 12'h000;
rommem[13340] <= 12'h908;
rommem[13341] <= 12'h03B;
rommem[13342] <= 12'h0A6;
rommem[13343] <= 12'hE04;
rommem[13344] <= 12'h0B7;
rommem[13345] <= 12'h000;
rommem[13346] <= 12'h90F;
rommem[13347] <= 12'h0EC;
rommem[13348] <= 12'h601;
rommem[13349] <= 12'h0FD;
rommem[13350] <= 12'h000;
rommem[13351] <= 12'h900;
rommem[13352] <= 12'h0E6;
rommem[13353] <= 12'hA00;
rommem[13354] <= 12'h0C5;
rommem[13355] <= 12'h800;
rommem[13356] <= 12'h026;
rommem[13357] <= 12'h01E;
rommem[13358] <= 12'h034;
rommem[13359] <= 12'h004;
rommem[13360] <= 12'h0C4;
rommem[13361] <= 12'h1FF;
rommem[13362] <= 12'h04F;
rommem[13363] <= 12'h0C5;
rommem[13364] <= 12'h100;
rommem[13365] <= 12'h027;
rommem[13366] <= 12'h003;
rommem[13367] <= 12'h04A;
rommem[13368] <= 12'h0CA;
rommem[13369] <= 12'hE00;
rommem[13370] <= 12'h017;
rommem[13371] <= 12'hFFE;
rommem[13372] <= 12'hFC4;
rommem[13373] <= 12'h0C6;
rommem[13374] <= 12'h02C;
rommem[13375] <= 12'h017;
rommem[13376] <= 12'hFFF;
rommem[13377] <= 12'h8D0;
rommem[13378] <= 12'h035;
rommem[13379] <= 12'h004;
rommem[13380] <= 12'h08D;
rommem[13381] <= 12'h42E;
rommem[13382] <= 12'h017;
rommem[13383] <= 12'hFFF;
rommem[13384] <= 12'h8C9;
rommem[13385] <= 12'h016;
rommem[13386] <= 12'h000;
rommem[13387] <= 12'h3F6;
rommem[13388] <= 12'h034;
rommem[13389] <= 12'h004;
rommem[13390] <= 12'h0C5;
rommem[13391] <= 12'h100;
rommem[13392] <= 12'h027;
rommem[13393] <= 12'h005;
rommem[13394] <= 12'h0C6;
rommem[13395] <= 12'h05B;
rommem[13396] <= 12'h017;
rommem[13397] <= 12'hFFF;
rommem[13398] <= 12'h8BB;
rommem[13399] <= 12'h0E6;
rommem[13400] <= 12'hE04;
rommem[13401] <= 12'h0C4;
rommem[13402] <= 12'h00F;
rommem[13403] <= 12'h026;
rommem[13404] <= 12'h030;
rommem[13405] <= 12'h0E6;
rommem[13406] <= 12'hE04;
rommem[13407] <= 12'h0C5;
rommem[13408] <= 12'h080;
rommem[13409] <= 12'h027;
rommem[13410] <= 12'h005;
rommem[13411] <= 12'h0C6;
rommem[13412] <= 12'h05D;
rommem[13413] <= 12'h017;
rommem[13414] <= 12'hFFF;
rommem[13415] <= 12'h8AA;
rommem[13416] <= 12'h0C6;
rommem[13417] <= 12'h02C;
rommem[13418] <= 12'h017;
rommem[13419] <= 12'hFFF;
rommem[13420] <= 12'h8A5;
rommem[13421] <= 12'h0E6;
rommem[13422] <= 12'hE04;
rommem[13423] <= 12'h08D;
rommem[13424] <= 12'h403;
rommem[13425] <= 12'h017;
rommem[13426] <= 12'hFFF;
rommem[13427] <= 12'h89E;
rommem[13428] <= 12'h0C6;
rommem[13429] <= 12'h02B;
rommem[13430] <= 12'h017;
rommem[13431] <= 12'hFFF;
rommem[13432] <= 12'h899;
rommem[13433] <= 12'h035;
rommem[13434] <= 12'h004;
rommem[13435] <= 12'h0C5;
rommem[13436] <= 12'h100;
rommem[13437] <= 12'h127;
rommem[13438] <= 12'h000;
rommem[13439] <= 12'h3C2;
rommem[13440] <= 12'h0C5;
rommem[13441] <= 12'h080;
rommem[13442] <= 12'h126;
rommem[13443] <= 12'h000;
rommem[13444] <= 12'h3BD;
rommem[13445] <= 12'h0C6;
rommem[13446] <= 12'h05D;
rommem[13447] <= 12'h017;
rommem[13448] <= 12'hFFF;
rommem[13449] <= 12'h888;
rommem[13450] <= 12'h016;
rommem[13451] <= 12'h000;
rommem[13452] <= 12'h3B5;
rommem[13453] <= 12'h0C1;
rommem[13454] <= 12'h001;
rommem[13455] <= 12'h026;
rommem[13456] <= 12'h033;
rommem[13457] <= 12'h0E6;
rommem[13458] <= 12'hE04;
rommem[13459] <= 12'h0C5;
rommem[13460] <= 12'h080;
rommem[13461] <= 12'h027;
rommem[13462] <= 12'h005;
rommem[13463] <= 12'h0C6;
rommem[13464] <= 12'h05D;
rommem[13465] <= 12'h017;
rommem[13466] <= 12'hFFF;
rommem[13467] <= 12'h876;
rommem[13468] <= 12'h0C6;
rommem[13469] <= 12'h02C;
rommem[13470] <= 12'h017;
rommem[13471] <= 12'hFFF;
rommem[13472] <= 12'h871;
rommem[13473] <= 12'h0E6;
rommem[13474] <= 12'hE04;
rommem[13475] <= 12'h08D;
rommem[13476] <= 12'h3CF;
rommem[13477] <= 12'h017;
rommem[13478] <= 12'hFFF;
rommem[13479] <= 12'h86A;
rommem[13480] <= 12'h0C6;
rommem[13481] <= 12'h02B;
rommem[13482] <= 12'h017;
rommem[13483] <= 12'hFFF;
rommem[13484] <= 12'h865;
rommem[13485] <= 12'h017;
rommem[13486] <= 12'hFFF;
rommem[13487] <= 12'h862;
rommem[13488] <= 12'h035;
rommem[13489] <= 12'h004;
rommem[13490] <= 12'h0C5;
rommem[13491] <= 12'h100;
rommem[13492] <= 12'h127;
rommem[13493] <= 12'h000;
rommem[13494] <= 12'h38B;
rommem[13495] <= 12'h0C5;
rommem[13496] <= 12'h080;
rommem[13497] <= 12'h126;
rommem[13353] <= 12'h603;
rommem[13354] <= 12'h0F7;
rommem[13355] <= 12'h000;
rommem[13356] <= 12'h90E;
rommem[13357] <= 12'h0EC;
rommem[13358] <= 12'h604;
rommem[13359] <= 12'h0FD;
rommem[13360] <= 12'h000;
rommem[13361] <= 12'h902;
rommem[13362] <= 12'h0EC;
rommem[13363] <= 12'h606;
rommem[13364] <= 12'h0FD;
rommem[13365] <= 12'h000;
rommem[13366] <= 12'h904;
rommem[13367] <= 12'h0EC;
rommem[13368] <= 12'h608;
rommem[13369] <= 12'h0FD;
rommem[13370] <= 12'h000;
rommem[13371] <= 12'h906;
rommem[13372] <= 12'h1FF;
rommem[13373] <= 12'h000;
rommem[13374] <= 12'h908;
rommem[13375] <= 12'h0EC;
rommem[13376] <= 12'h60B;
rommem[13377] <= 12'h0FD;
rommem[13378] <= 12'h000;
rommem[13379] <= 12'h90A;
rommem[13380] <= 12'h1EE;
rommem[13381] <= 12'h80C;
rommem[13382] <= 12'hF6D;
rommem[13383] <= 12'h0CC;
rommem[13384] <= 12'hFFF;
rommem[13385] <= 12'h41A;
rommem[13386] <= 12'h034;
rommem[13387] <= 12'h006;
rommem[13388] <= 12'h08D;
rommem[13389] <= 12'h020;
rommem[13390] <= 12'h016;
rommem[13391] <= 12'hFFF;
rommem[13392] <= 12'hE7E;
rommem[13393] <= 12'h08D;
rommem[13394] <= 12'h03A;
rommem[13395] <= 12'h039;
rommem[13396] <= 12'h033;
rommem[13397] <= 12'h401;
rommem[13398] <= 12'h0E6;
rommem[13399] <= 12'hC00;
rommem[13400] <= 12'h0C1;
rommem[13401] <= 12'h019;
rommem[13402] <= 12'h122;
rommem[13403] <= 12'hFFF;
rommem[13404] <= 12'hBF8;
rommem[13405] <= 12'h0EF;
rommem[13406] <= 12'h60B;
rommem[13407] <= 12'h058;
rommem[13408] <= 12'h08E;
rommem[13409] <= 12'hFFE;
rommem[13410] <= 12'hD27;
rommem[13411] <= 12'h06D;
rommem[13412] <= 12'hE0F;
rommem[13413] <= 12'h027;
rommem[13414] <= 12'hFB3;
rommem[13415] <= 12'h0AD;
rommem[13416] <= 12'hF0F;
rommem[13417] <= 12'h07F;
rommem[13418] <= 12'hEF0;
rommem[13419] <= 12'h011;
rommem[13420] <= 12'h020;
rommem[13421] <= 12'hFAC;
rommem[13422] <= 12'h034;
rommem[13423] <= 12'h036;
rommem[13424] <= 12'h18E;
rommem[13425] <= 12'h000;
rommem[13426] <= 12'h000;
rommem[13427] <= 12'h05F;
rommem[13428] <= 12'h08E;
rommem[13429] <= 12'h000;
rommem[13430] <= 12'h830;
rommem[13431] <= 12'h0C1;
rommem[13432] <= 12'h3B6;
rommem[13433] <= 12'h024;
rommem[13434] <= 12'h010;
rommem[13435] <= 12'h0F1;
rommem[13436] <= 12'h000;
rommem[13437] <= 12'h811;
rommem[13438] <= 12'h024;
rommem[13439] <= 12'h00B;
rommem[13440] <= 12'h0A6;
rommem[13441] <= 12'h837;
rommem[13442] <= 12'h0A7;
rommem[13443] <= 12'hB09;
rommem[13444] <= 12'h000;
rommem[13445] <= 12'h820;
rommem[13446] <= 12'h031;
rommem[13447] <= 12'h202;
rommem[13448] <= 12'h05C;
rommem[13449] <= 12'h020;
rommem[13450] <= 12'hFEC;
rommem[13451] <= 12'h035;
rommem[13452] <= 12'h0B6;
rommem[13453] <= 12'h034;
rommem[13454] <= 12'h036;
rommem[13455] <= 12'h18E;
rommem[13456] <= 12'h000;
rommem[13457] <= 12'h000;
rommem[13458] <= 12'h05F;
rommem[13459] <= 12'h08E;
rommem[13460] <= 12'h000;
rommem[13461] <= 12'h830;
rommem[13462] <= 12'h0C1;
rommem[13463] <= 12'h3B6;
rommem[13464] <= 12'h024;
rommem[13465] <= 12'h010;
rommem[13466] <= 12'h0F1;
rommem[13467] <= 12'h000;
rommem[13468] <= 12'h811;
rommem[13469] <= 12'h024;
rommem[13470] <= 12'h00B;
rommem[13471] <= 12'h0A6;
rommem[13472] <= 12'hB09;
rommem[13473] <= 12'h000;
rommem[13474] <= 12'h820;
rommem[13475] <= 12'h0A7;
rommem[13476] <= 12'hB0D;
rommem[13477] <= 12'h031;
rommem[13478] <= 12'h202;
rommem[13479] <= 12'h05C;
rommem[13480] <= 12'h020;
rommem[13481] <= 12'hFEC;
rommem[13482] <= 12'h035;
rommem[13483] <= 12'h0B6;
rommem[13484] <= 12'h034;
rommem[13485] <= 12'h036;
rommem[13486] <= 12'h0B6;
rommem[13487] <= 12'h000;
rommem[13488] <= 12'h811;
rommem[13489] <= 12'h081;
rommem[13490] <= 12'h3B6;
rommem[13491] <= 12'h124;
rommem[13492] <= 12'hFFF;
rommem[13493] <= 12'hB9F;
rommem[13494] <= 12'h017;
rommem[13495] <= 12'hFFF;
rommem[13496] <= 12'hB36;
rommem[13497] <= 12'h0F6;
rommem[13498] <= 12'h000;
rommem[13499] <= 12'h386;
rommem[13500] <= 12'h0C6;
rommem[13501] <= 12'h05D;
rommem[13502] <= 12'h017;
rommem[13503] <= 12'hFFF;
rommem[13504] <= 12'h851;
rommem[13505] <= 12'h016;
rommem[13499] <= 12'h811;
rommem[13500] <= 12'h1BE;
rommem[13501] <= 12'h000;
rommem[13502] <= 12'h912;
rommem[13503] <= 12'h0A6;
rommem[13504] <= 12'hA04;
rommem[13505] <= 12'h08E;
rommem[13506] <= 12'h000;
rommem[13507] <= 12'h37E;
rommem[13508] <= 12'h0C1;
rommem[13509] <= 12'h002;
rommem[13510] <= 12'h026;
rommem[13511] <= 12'h030;
rommem[13512] <= 12'h0E6;
rommem[13513] <= 12'hE04;
rommem[13514] <= 12'h0C5;
rommem[13515] <= 12'h080;
rommem[13516] <= 12'h027;
rommem[13517] <= 12'h005;
rommem[13518] <= 12'h0C6;
rommem[13519] <= 12'h05D;
rommem[13520] <= 12'h017;
rommem[13521] <= 12'hFFF;
rommem[13522] <= 12'h83F;
rommem[13523] <= 12'h0C6;
rommem[13524] <= 12'h02C;
rommem[13507] <= 12'h830;
rommem[13508] <= 12'h0A7;
rommem[13509] <= 12'hA05;
rommem[13510] <= 12'h08E;
rommem[13511] <= 12'h000;
rommem[13512] <= 12'h820;
rommem[13513] <= 12'h058;
rommem[13514] <= 12'h1AF;
rommem[13515] <= 12'hA05;
rommem[13516] <= 12'h054;
rommem[13517] <= 12'h05C;
rommem[13518] <= 12'h0F7;
rommem[13519] <= 12'h000;
rommem[13520] <= 12'h811;
rommem[13521] <= 12'h035;
rommem[13522] <= 12'h0B6;
rommem[13523] <= 12'h034;
rommem[13524] <= 12'h076;
rommem[13525] <= 12'h017;
rommem[13526] <= 12'hFFF;
rommem[13527] <= 12'h83A;
rommem[13528] <= 12'h0E6;
rommem[13529] <= 12'hE04;
rommem[13530] <= 12'h08D;
rommem[13531] <= 12'h398;
rommem[13532] <= 12'h017;
rommem[13533] <= 12'hFFF;
rommem[13534] <= 12'h833;
rommem[13535] <= 12'h0C6;
rommem[13536] <= 12'h02D;
rommem[13537] <= 12'h017;
rommem[13538] <= 12'hFFF;
rommem[13539] <= 12'h82E;
rommem[13540] <= 12'h035;
rommem[13541] <= 12'h004;
rommem[13542] <= 12'h0C5;
rommem[13543] <= 12'h100;
rommem[13544] <= 12'h127;
rommem[13545] <= 12'h000;
rommem[13546] <= 12'h357;
rommem[13547] <= 12'h0C5;
rommem[13548] <= 12'h080;
rommem[13549] <= 12'h126;
rommem[13550] <= 12'h000;
rommem[13551] <= 12'h352;
rommem[13552] <= 12'h0C6;
rommem[13553] <= 12'h05D;
rommem[13554] <= 12'h017;
rommem[13555] <= 12'hFFF;
rommem[13556] <= 12'h81D;
rommem[13557] <= 12'h016;
rommem[13558] <= 12'h000;
rommem[13559] <= 12'h34A;
rommem[13560] <= 12'h0C1;
rommem[13561] <= 12'h003;
rommem[13562] <= 12'h026;
rommem[13563] <= 12'h033;
rommem[13564] <= 12'h0E6;
rommem[13565] <= 12'hE04;
rommem[13566] <= 12'h0C5;
rommem[13567] <= 12'h080;
rommem[13568] <= 12'h027;
rommem[13569] <= 12'h005;
rommem[13570] <= 12'h0C6;
rommem[13571] <= 12'h05D;
rommem[13572] <= 12'h017;
rommem[13573] <= 12'hFFF;
rommem[13574] <= 12'h80B;
rommem[13575] <= 12'h0C6;
rommem[13576] <= 12'h02C;
rommem[13577] <= 12'h017;
rommem[13578] <= 12'hFFF;
rommem[13579] <= 12'h806;
rommem[13580] <= 12'h0E6;
rommem[13581] <= 12'hE04;
rommem[13582] <= 12'h08D;
rommem[13583] <= 12'h364;
rommem[13584] <= 12'h017;
rommem[13585] <= 12'hFFF;
rommem[13586] <= 12'h7FF;
rommem[13587] <= 12'h0C6;
rommem[13588] <= 12'h02D;
rommem[13589] <= 12'h017;
rommem[13590] <= 12'hFFF;
rommem[13591] <= 12'h7FA;
rommem[13592] <= 12'h017;
rommem[13593] <= 12'hFFF;
rommem[13594] <= 12'h7F7;
rommem[13595] <= 12'h035;
rommem[13596] <= 12'h004;
rommem[13597] <= 12'h0C5;
rommem[13598] <= 12'h100;
rommem[13599] <= 12'h127;
rommem[13600] <= 12'h000;
rommem[13601] <= 12'h320;
rommem[13602] <= 12'h0C5;
rommem[13603] <= 12'h080;
rommem[13604] <= 12'h126;
rommem[13605] <= 12'h000;
rommem[13606] <= 12'h31B;
rommem[13607] <= 12'h0C6;
rommem[13608] <= 12'h05D;
rommem[13609] <= 12'h017;
rommem[13610] <= 12'hFFF;
rommem[13611] <= 12'h7E6;
rommem[13612] <= 12'h016;
rommem[13613] <= 12'h000;
rommem[13614] <= 12'h313;
rommem[13615] <= 12'h0C1;
rommem[13616] <= 12'h004;
rommem[13617] <= 12'h026;
rommem[13618] <= 12'h02B;
rommem[13619] <= 12'h0E6;
rommem[13620] <= 12'hE04;
rommem[13621] <= 12'h0C5;
rommem[13622] <= 12'h080;
rommem[13623] <= 12'h027;
rommem[13624] <= 12'h005;
rommem[13625] <= 12'h0C6;
rommem[13626] <= 12'h05D;
rommem[13627] <= 12'h017;
rommem[13628] <= 12'hFFF;
rommem[13629] <= 12'h7D4;
rommem[13630] <= 12'h0C6;
rommem[13631] <= 12'h02C;
rommem[13632] <= 12'h017;
rommem[13633] <= 12'hFFF;
rommem[13634] <= 12'h7CF;
rommem[13635] <= 12'h0E6;
rommem[13636] <= 12'hE04;
rommem[13637] <= 12'h08D;
rommem[13638] <= 12'h32D;
rommem[13639] <= 12'h017;
rommem[13640] <= 12'hFFF;
rommem[13641] <= 12'h7C8;
rommem[13642] <= 12'h035;
rommem[13643] <= 12'h004;
rommem[13644] <= 12'h0C5;
rommem[13645] <= 12'h100;
rommem[13646] <= 12'h127;
rommem[13647] <= 12'h000;
rommem[13648] <= 12'h2F1;
rommem[13649] <= 12'h0C5;
rommem[13650] <= 12'h080;
rommem[13651] <= 12'h126;
rommem[13652] <= 12'h000;
rommem[13653] <= 12'h2EC;
rommem[13654] <= 12'h0C6;
rommem[13655] <= 12'h05D;
rommem[13656] <= 12'h017;
rommem[13657] <= 12'hFFF;
rommem[13658] <= 12'h7B7;
rommem[13659] <= 12'h016;
rommem[13660] <= 12'h000;
rommem[13661] <= 12'h2E4;
rommem[13662] <= 12'h0C1;
rommem[13663] <= 12'h005;
rommem[13664] <= 12'h026;
rommem[13665] <= 12'h038;
rommem[13666] <= 12'h0C6;
rommem[13667] <= 12'h042;
rommem[13668] <= 12'h017;
rommem[13669] <= 12'hFFF;
rommem[13670] <= 12'h7AB;
rommem[13671] <= 12'h0E6;
rommem[13672] <= 12'hE04;
rommem[13673] <= 12'h0C5;
rommem[13674] <= 12'h080;
rommem[13675] <= 12'h027;
rommem[13676] <= 12'h005;
rommem[13677] <= 12'h0C6;
rommem[13678] <= 12'h05D;
rommem[13679] <= 12'h017;
rommem[13527] <= 12'hB17;
rommem[13528] <= 12'h05F;
rommem[13529] <= 12'h05F;
rommem[13530] <= 12'h01F;
rommem[13531] <= 12'h001;
rommem[13532] <= 12'h0C1;
rommem[13533] <= 12'h3B6;
rommem[13534] <= 12'h024;
rommem[13535] <= 12'h03F;
rommem[13536] <= 12'h0F1;
rommem[13537] <= 12'h000;
rommem[13538] <= 12'h811;
rommem[13539] <= 12'h024;
rommem[13540] <= 12'h03A;
rommem[13541] <= 12'h1AE;
rommem[13542] <= 12'h809;
rommem[13543] <= 12'h000;
rommem[13544] <= 12'h820;
rommem[13545] <= 12'h1BC;
rommem[13546] <= 12'h000;
rommem[13547] <= 12'h912;
rommem[13548] <= 12'h026;
rommem[13549] <= 12'h02C;
rommem[13550] <= 12'h0BE;
rommem[13551] <= 12'h000;
rommem[13552] <= 12'h912;
rommem[13553] <= 12'h18E;
rommem[13554] <= 12'h000;
rommem[13555] <= 12'h830;
rommem[13556] <= 12'h0A6;
rommem[13557] <= 12'hA0D;
rommem[13558] <= 12'h0A7;
rommem[13559] <= 12'h804;
rommem[13560] <= 12'h07A;
rommem[13561] <= 12'h000;
rommem[13562] <= 12'h811;
rommem[13563] <= 12'h034;
rommem[13564] <= 12'h004;
rommem[13565] <= 12'h05C;
rommem[13566] <= 12'h0A6;
rommem[13567] <= 12'hA05;
rommem[13568] <= 12'h05A;
rommem[13569] <= 12'h0A7;
rommem[13570] <= 12'hA05;
rommem[13571] <= 12'h05C;
rommem[13572] <= 12'h0C1;
rommem[13573] <= 12'h3B6;
rommem[13574] <= 12'h025;
rommem[13575] <= 12'hFF5;
rommem[13576] <= 12'h035;
rommem[13577] <= 12'h004;
rommem[13578] <= 12'h058;
rommem[13579] <= 12'h04F;
rommem[13580] <= 12'h01F;
rommem[13581] <= 12'h002;
rommem[13582] <= 12'h054;
rommem[13583] <= 12'h0EE;
rommem[13584] <= 12'h202;
rommem[13585] <= 12'h0EF;
rommem[13586] <= 12'hA01;
rommem[13587] <= 12'h05C;
rommem[13588] <= 12'h0C1;
rommem[13589] <= 12'h3B6;
rommem[13590] <= 12'h025;
rommem[13591] <= 12'hFF7;
rommem[13592] <= 12'h035;
rommem[13593] <= 12'h0F6;
rommem[13594] <= 12'h030;
rommem[13595] <= 12'h002;
rommem[13596] <= 12'h05C;
rommem[13597] <= 12'h020;
rommem[13598] <= 12'hFBD;
rommem[13599] <= 12'h035;
rommem[13600] <= 12'h0F6;
rommem[13601] <= 12'h01A;
rommem[13602] <= 12'h010;
rommem[13603] <= 12'h0A6;
rommem[13604] <= 12'hE04;
rommem[13605] <= 12'h0B7;
rommem[13606] <= 12'h000;
rommem[13607] <= 12'h90F;
rommem[13608] <= 12'h0EC;
rommem[13609] <= 12'h601;
rommem[13610] <= 12'h0FD;
rommem[13611] <= 12'h000;
rommem[13612] <= 12'h900;
rommem[13613] <= 12'h0E6;
rommem[13614] <= 12'h603;
rommem[13615] <= 12'h0F7;
rommem[13616] <= 12'h000;
rommem[13617] <= 12'h90E;
rommem[13618] <= 12'h0EC;
rommem[13619] <= 12'h604;
rommem[13620] <= 12'h0FD;
rommem[13621] <= 12'h000;
rommem[13622] <= 12'h902;
rommem[13623] <= 12'h0EC;
rommem[13624] <= 12'h606;
rommem[13625] <= 12'h0FD;
rommem[13626] <= 12'h000;
rommem[13627] <= 12'h904;
rommem[13628] <= 12'h0EC;
rommem[13629] <= 12'h608;
rommem[13630] <= 12'h0FD;
rommem[13631] <= 12'h000;
rommem[13632] <= 12'h906;
rommem[13633] <= 12'h1FF;
rommem[13634] <= 12'h000;
rommem[13635] <= 12'h908;
rommem[13636] <= 12'h0EC;
rommem[13637] <= 12'h60B;
rommem[13638] <= 12'h0FD;
rommem[13639] <= 12'h000;
rommem[13640] <= 12'h90A;
rommem[13641] <= 12'h1FF;
rommem[13642] <= 12'h000;
rommem[13643] <= 12'h908;
rommem[13644] <= 12'h1CE;
rommem[13645] <= 12'h003;
rommem[13646] <= 12'hFFF;
rommem[13647] <= 12'h0CC;
rommem[13648] <= 12'hFFF;
rommem[13649] <= 12'h559;
rommem[13650] <= 12'h034;
rommem[13651] <= 12'h006;
rommem[13652] <= 12'h01C;
rommem[13653] <= 12'h0EF;
rommem[13654] <= 12'h07E;
rommem[13655] <= 12'hFFF;
rommem[13656] <= 12'h2CF;
rommem[13657] <= 12'h1FE;
rommem[13658] <= 12'h000;
rommem[13659] <= 12'h908;
rommem[13660] <= 12'h03B;
rommem[13661] <= 12'h03B;
rommem[13662] <= 12'h017;
rommem[13663] <= 12'hFFE;
rommem[13664] <= 12'hF0B;
rommem[13665] <= 12'h0B6;
rommem[13666] <= 12'hFFC;
rommem[13667] <= 12'h014;
rommem[13668] <= 12'h044;
rommem[13669] <= 12'h0BA;
rommem[13670] <= 12'hFFC;
rommem[13671] <= 12'h014;
rommem[13672] <= 12'h084;
rommem[13673] <= 12'hFE0;
rommem[13674] <= 12'h0B7;
rommem[13675] <= 12'hFFC;
rommem[13676] <= 12'h014;
rommem[13677] <= 12'h03B;
rommem[13678] <= 12'h015;
rommem[13679] <= 12'h0F6;
rommem[13680] <= 12'hFFF;
rommem[13681] <= 12'h7A0;
rommem[13682] <= 12'h0C6;
rommem[13683] <= 12'h02C;
rommem[13684] <= 12'h017;
rommem[13685] <= 12'hFFF;
rommem[13686] <= 12'h79B;
rommem[13687] <= 12'h0E6;
rommem[13688] <= 12'hE04;
rommem[13689] <= 12'h08D;
rommem[13690] <= 12'h2F9;
rommem[13691] <= 12'h017;
rommem[13692] <= 12'hFFF;
rommem[13693] <= 12'h794;
rommem[13694] <= 12'h0C6;
rommem[13695] <= 12'h02D;
rommem[13696] <= 12'h017;
rommem[13697] <= 12'hFFF;
rommem[13698] <= 12'h78F;
rommem[13699] <= 12'h017;
rommem[13700] <= 12'hFFF;
rommem[13701] <= 12'h78C;
rommem[13702] <= 12'h035;
rommem[13703] <= 12'h004;
rommem[13704] <= 12'h0C5;
rommem[13705] <= 12'h100;
rommem[13706] <= 12'h127;
rommem[13707] <= 12'h000;
rommem[13708] <= 12'h2B5;
rommem[13709] <= 12'h0C5;
rommem[13710] <= 12'h080;
rommem[13711] <= 12'h126;
rommem[13712] <= 12'h000;
rommem[13713] <= 12'h2B0;
rommem[13714] <= 12'h0C6;
rommem[13715] <= 12'h05D;
rommem[13716] <= 12'h017;
rommem[13717] <= 12'hFFF;
rommem[13718] <= 12'h77B;
rommem[13719] <= 12'h016;
rommem[13720] <= 12'h000;
rommem[13721] <= 12'h2A8;
rommem[13722] <= 12'h0C1;
rommem[13723] <= 12'h006;
rommem[13724] <= 12'h026;
rommem[13725] <= 12'h038;
rommem[13726] <= 12'h0C6;
rommem[13727] <= 12'h041;
rommem[13728] <= 12'h017;
rommem[13729] <= 12'hFFF;
rommem[13730] <= 12'h76F;
rommem[13731] <= 12'h0E6;
rommem[13732] <= 12'hE04;
rommem[13733] <= 12'h0C5;
rommem[13734] <= 12'h080;
rommem[13735] <= 12'h027;
rommem[13736] <= 12'h005;
rommem[13737] <= 12'h0C6;
rommem[13738] <= 12'h05D;
rommem[13739] <= 12'h017;
rommem[13740] <= 12'hFFF;
rommem[13741] <= 12'h764;
rommem[13742] <= 12'h0C6;
rommem[13743] <= 12'h02C;
rommem[13744] <= 12'h017;
rommem[13745] <= 12'hFFF;
rommem[13746] <= 12'h75F;
rommem[13747] <= 12'h0E6;
rommem[13748] <= 12'hE04;
rommem[13749] <= 12'h08D;
rommem[13750] <= 12'h2BD;
rommem[13751] <= 12'h017;
rommem[13752] <= 12'hFFF;
rommem[13753] <= 12'h758;
rommem[13754] <= 12'h0C6;
rommem[13755] <= 12'h02D;
rommem[13756] <= 12'h017;
rommem[13757] <= 12'hFFF;
rommem[13758] <= 12'h753;
rommem[13759] <= 12'h017;
rommem[13760] <= 12'hFFF;
rommem[13761] <= 12'h750;
rommem[13762] <= 12'h035;
rommem[13763] <= 12'h004;
rommem[13764] <= 12'h0C5;
rommem[13765] <= 12'h100;
rommem[13766] <= 12'h127;
rommem[13767] <= 12'h000;
rommem[13768] <= 12'h279;
rommem[13769] <= 12'h0C5;
rommem[13770] <= 12'h080;
rommem[13771] <= 12'h126;
rommem[13772] <= 12'h000;
rommem[13773] <= 12'h274;
rommem[13774] <= 12'h0C6;
rommem[13775] <= 12'h05D;
rommem[13776] <= 12'h017;
rommem[13777] <= 12'hFFF;
rommem[13778] <= 12'h73F;
rommem[13779] <= 12'h016;
rommem[13780] <= 12'h000;
rommem[13781] <= 12'h26C;
rommem[13782] <= 12'h0C1;
rommem[13783] <= 12'h008;
rommem[13784] <= 12'h026;
rommem[13785] <= 12'h039;
rommem[13786] <= 12'h0E6;
rommem[13787] <= 12'hA00;
rommem[13788] <= 12'h01D;
rommem[13789] <= 12'h017;
rommem[13790] <= 12'hFFE;
rommem[13791] <= 12'hE21;
rommem[13792] <= 12'h0E6;
rommem[13793] <= 12'hE04;
rommem[13794] <= 12'h0C5;
rommem[13795] <= 12'h080;
rommem[13796] <= 12'h027;
rommem[13797] <= 12'h005;
rommem[13798] <= 12'h0C6;
rommem[13799] <= 12'h05D;
rommem[13800] <= 12'h017;
rommem[13801] <= 12'hFFF;
rommem[13802] <= 12'h727;
rommem[13803] <= 12'h0C6;
rommem[13804] <= 12'h02C;
rommem[13805] <= 12'h017;
rommem[13806] <= 12'hFFF;
rommem[13807] <= 12'h722;
rommem[13808] <= 12'h0E6;
rommem[13809] <= 12'hE04;
rommem[13810] <= 12'h08D;
rommem[13811] <= 12'h280;
rommem[13812] <= 12'h017;
rommem[13813] <= 12'hFFF;
rommem[13814] <= 12'h71B;
rommem[13815] <= 12'h0C6;
rommem[13816] <= 12'h02D;
rommem[13817] <= 12'h017;
rommem[13818] <= 12'hFFF;
rommem[13819] <= 12'h716;
rommem[13820] <= 12'h017;
rommem[13821] <= 12'hFFF;
rommem[13822] <= 12'h713;
rommem[13823] <= 12'h035;
rommem[13824] <= 12'h004;
rommem[13825] <= 12'h0C5;
rommem[13826] <= 12'h100;
rommem[13827] <= 12'h127;
rommem[13828] <= 12'h000;
rommem[13829] <= 12'h23C;
rommem[13830] <= 12'h0C5;
rommem[13831] <= 12'h080;
rommem[13832] <= 12'h126;
rommem[13833] <= 12'h000;
rommem[13834] <= 12'h237;
rommem[13835] <= 12'h0C6;
rommem[13836] <= 12'h05D;
rommem[13837] <= 12'h017;
rommem[13838] <= 12'hFFF;
rommem[13839] <= 12'h702;
rommem[13840] <= 12'h016;
rommem[13841] <= 12'h000;
rommem[13842] <= 12'h22F;
rommem[13843] <= 12'h0C1;
rommem[13844] <= 12'h009;
rommem[13845] <= 12'h026;
rommem[13846] <= 12'h038;
rommem[13847] <= 12'h0EC;
rommem[13848] <= 12'hA01;
rommem[13849] <= 12'h017;
rommem[13850] <= 12'hFFE;
rommem[13851] <= 12'hDE5;
rommem[13852] <= 12'h0E6;
rommem[13853] <= 12'hE04;
rommem[13854] <= 12'h0C5;
rommem[13855] <= 12'h080;
rommem[13856] <= 12'h027;
rommem[13857] <= 12'h005;
rommem[13858] <= 12'h0C6;
rommem[13859] <= 12'h05D;
rommem[13860] <= 12'h017;
rommem[13861] <= 12'hFFF;
rommem[13862] <= 12'h6EB;
rommem[13863] <= 12'h0C6;
rommem[13864] <= 12'h02C;
rommem[13865] <= 12'h017;
rommem[13866] <= 12'hFFF;
rommem[13867] <= 12'h6E6;
rommem[13868] <= 12'h0E6;
rommem[13869] <= 12'hE04;
rommem[13870] <= 12'h08D;
rommem[13871] <= 12'h244;
rommem[13872] <= 12'h017;
rommem[13873] <= 12'hFFF;
rommem[13874] <= 12'h6DF;
rommem[13875] <= 12'h0C6;
rommem[13876] <= 12'h02D;
rommem[13877] <= 12'h017;
rommem[13878] <= 12'hFFF;
rommem[13879] <= 12'h6DA;
rommem[13880] <= 12'h017;
rommem[13881] <= 12'hFFF;
rommem[13882] <= 12'h6D7;
rommem[13883] <= 12'h035;
rommem[13884] <= 12'h004;
rommem[13885] <= 12'h0C5;
rommem[13886] <= 12'h100;
rommem[13887] <= 12'h127;
rommem[13888] <= 12'h000;
rommem[13889] <= 12'h200;
rommem[13890] <= 12'h0C5;
rommem[13891] <= 12'h080;
rommem[13892] <= 12'h126;
rommem[13893] <= 12'h000;
rommem[13894] <= 12'h1FB;
rommem[13895] <= 12'h0C6;
rommem[13896] <= 12'h05D;
rommem[13897] <= 12'h017;
rommem[13898] <= 12'hFFF;
rommem[13899] <= 12'h6C6;
rommem[13900] <= 12'h016;
rommem[13901] <= 12'h000;
rommem[13902] <= 12'h1F3;
rommem[13903] <= 12'h0C1;
rommem[13904] <= 12'h00A;
rommem[13905] <= 12'h026;
rommem[13906] <= 12'h03D;
rommem[13907] <= 12'h0E6;
rommem[13908] <= 12'hA01;
rommem[13909] <= 12'h017;
rommem[13910] <= 12'hFFE;
rommem[13911] <= 12'hDB2;
rommem[13912] <= 12'h0EC;
rommem[13913] <= 12'hA01;
rommem[13914] <= 12'h017;
rommem[13915] <= 12'hFFE;
rommem[13916] <= 12'hDA4;
rommem[13917] <= 12'h0E6;
rommem[13918] <= 12'hE04;
rommem[13919] <= 12'h0C5;
rommem[13920] <= 12'h080;
rommem[13921] <= 12'h027;
rommem[13922] <= 12'h005;
rommem[13923] <= 12'h0C6;
rommem[13924] <= 12'h05D;
rommem[13925] <= 12'h017;
rommem[13926] <= 12'hFFF;
rommem[13927] <= 12'h6AA;
rommem[13928] <= 12'h0C6;
rommem[13929] <= 12'h02C;
rommem[13930] <= 12'h017;
rommem[13931] <= 12'hFFF;
rommem[13932] <= 12'h6A5;
rommem[13933] <= 12'h0E6;
rommem[13934] <= 12'hE04;
rommem[13935] <= 12'h08D;
rommem[13936] <= 12'h203;
rommem[13937] <= 12'h017;
rommem[13938] <= 12'hFFF;
rommem[13939] <= 12'h69E;
rommem[13940] <= 12'h0C6;
rommem[13941] <= 12'h02D;
rommem[13942] <= 12'h017;
rommem[13943] <= 12'hFFF;
rommem[13944] <= 12'h699;
rommem[13945] <= 12'h017;
rommem[13946] <= 12'hFFF;
rommem[13947] <= 12'h696;
rommem[13948] <= 12'h035;
rommem[13949] <= 12'h004;
rommem[13950] <= 12'h0C5;
rommem[13951] <= 12'h100;
rommem[13952] <= 12'h127;
rommem[13953] <= 12'h000;
rommem[13954] <= 12'h1BF;
rommem[13955] <= 12'h0C5;
rommem[13956] <= 12'h080;
rommem[13957] <= 12'h126;
rommem[13958] <= 12'h000;
rommem[13959] <= 12'h1BA;
rommem[13960] <= 12'h0C6;
rommem[13961] <= 12'h05D;
rommem[13962] <= 12'h017;
rommem[13963] <= 12'hFFF;
rommem[13964] <= 12'h685;
rommem[13965] <= 12'h016;
rommem[13966] <= 12'h000;
rommem[13967] <= 12'h1B2;
rommem[13968] <= 12'h0C1;
rommem[13969] <= 12'h00B;
rommem[13970] <= 12'h026;
rommem[13971] <= 12'h038;
rommem[13972] <= 12'h0C6;
rommem[13973] <= 12'h044;
rommem[13974] <= 12'h017;
rommem[13975] <= 12'hFFF;
rommem[13976] <= 12'h679;
rommem[13977] <= 12'h0E6;
rommem[13978] <= 12'hE04;
rommem[13979] <= 12'h0C5;
rommem[13980] <= 12'h080;
rommem[13981] <= 12'h027;
rommem[13982] <= 12'h005;
rommem[13983] <= 12'h0C6;
rommem[13984] <= 12'h05D;
rommem[13985] <= 12'h017;
rommem[13986] <= 12'hFFF;
rommem[13987] <= 12'h66E;
rommem[13988] <= 12'h0C6;
rommem[13989] <= 12'h02C;
rommem[13990] <= 12'h017;
rommem[13991] <= 12'hFFF;
rommem[13992] <= 12'h669;
rommem[13993] <= 12'h0E6;
rommem[13994] <= 12'hE04;
rommem[13995] <= 12'h08D;
rommem[13996] <= 12'h1C7;
rommem[13997] <= 12'h017;
rommem[13998] <= 12'hFFF;
rommem[13999] <= 12'h662;
rommem[14000] <= 12'h0C6;
rommem[14001] <= 12'h02D;
rommem[14002] <= 12'h017;
rommem[14003] <= 12'hFFF;
rommem[14004] <= 12'h65D;
rommem[14005] <= 12'h017;
rommem[14006] <= 12'hFFF;
rommem[14007] <= 12'h65A;
rommem[14008] <= 12'h035;
rommem[14009] <= 12'h004;
rommem[14010] <= 12'h0C5;
rommem[14011] <= 12'h100;
rommem[14012] <= 12'h127;
rommem[14013] <= 12'h000;
rommem[14014] <= 12'h183;
rommem[14015] <= 12'h0C5;
rommem[14016] <= 12'h080;
rommem[14017] <= 12'h126;
rommem[14018] <= 12'h000;
rommem[14019] <= 12'h17E;
rommem[14020] <= 12'h0C6;
rommem[14021] <= 12'h05D;
rommem[14022] <= 12'h017;
rommem[14023] <= 12'hFFF;
rommem[14024] <= 12'h649;
rommem[14025] <= 12'h016;
rommem[14026] <= 12'h000;
rommem[14027] <= 12'h176;
rommem[14028] <= 12'h0C1;
rommem[14029] <= 12'h00C;
rommem[14030] <= 12'h026;
rommem[14031] <= 12'h040;
rommem[14032] <= 12'h0E6;
rommem[14033] <= 12'hA00;
rommem[14034] <= 12'h01D;
rommem[14035] <= 12'h017;
rommem[14036] <= 12'hFFE;
rommem[14037] <= 12'hD2B;
rommem[14038] <= 12'h0E6;
rommem[14039] <= 12'hE04;
rommem[14040] <= 12'h0C5;
rommem[14041] <= 12'h080;
rommem[14042] <= 12'h027;
rommem[14043] <= 12'h005;
rommem[14044] <= 12'h0C6;
rommem[14045] <= 12'h05D;
rommem[14046] <= 12'h017;
rommem[14047] <= 12'hFFF;
rommem[14048] <= 12'h631;
rommem[14049] <= 12'h0C6;
rommem[14050] <= 12'h02C;
rommem[14051] <= 12'h017;
rommem[14052] <= 12'hFFF;
rommem[14053] <= 12'h62C;
rommem[14054] <= 12'h0E6;
rommem[14055] <= 12'hE04;
rommem[14056] <= 12'h08D;
rommem[14057] <= 12'h18A;
rommem[14058] <= 12'h0C6;
rommem[14059] <= 12'h050;
rommem[14060] <= 12'h017;
rommem[14061] <= 12'hFFF;
rommem[14062] <= 12'h623;
rommem[14063] <= 12'h0C6;
rommem[14064] <= 12'h043;
rommem[14065] <= 12'h017;
rommem[14066] <= 12'hFFF;
rommem[14067] <= 12'h61E;
rommem[14068] <= 12'h0C6;
rommem[14069] <= 12'h02D;
rommem[14070] <= 12'h017;
rommem[14071] <= 12'hFFF;
rommem[14072] <= 12'h619;
rommem[14073] <= 12'h017;
rommem[14074] <= 12'hFFF;
rommem[14075] <= 12'h616;
rommem[14076] <= 12'h035;
rommem[14077] <= 12'h004;
rommem[14078] <= 12'h0C5;
rommem[14079] <= 12'h100;
rommem[14080] <= 12'h127;
rommem[14081] <= 12'h000;
rommem[14082] <= 12'h13F;
rommem[14083] <= 12'h0C5;
rommem[14084] <= 12'h080;
rommem[14085] <= 12'h126;
rommem[14086] <= 12'h000;
rommem[14087] <= 12'h13A;
rommem[14088] <= 12'h0C6;
rommem[14089] <= 12'h05D;
rommem[14090] <= 12'h017;
rommem[14091] <= 12'hFFF;
rommem[14092] <= 12'h605;
rommem[14093] <= 12'h016;
rommem[14094] <= 12'h000;
rommem[14095] <= 12'h132;
rommem[14096] <= 12'h0C1;
rommem[14097] <= 12'h00D;
rommem[14098] <= 12'h026;
rommem[14099] <= 12'h03F;
rommem[14100] <= 12'h0EC;
rommem[14101] <= 12'hA01;
rommem[14102] <= 12'h017;
rommem[14103] <= 12'hFFE;
rommem[14104] <= 12'hCE8;
rommem[14105] <= 12'h0E6;
rommem[14106] <= 12'hE04;
rommem[14107] <= 12'h0C5;
rommem[14108] <= 12'h080;
rommem[14109] <= 12'h027;
rommem[14110] <= 12'h005;
rommem[14111] <= 12'h0C6;
rommem[14112] <= 12'h05D;
rommem[14113] <= 12'h017;
rommem[14114] <= 12'hFFF;
rommem[14115] <= 12'h5EE;
rommem[14116] <= 12'h0C6;
rommem[14117] <= 12'h02C;
rommem[14118] <= 12'h017;
rommem[14119] <= 12'hFFF;
rommem[14120] <= 12'h5E9;
rommem[14121] <= 12'h0E6;
rommem[14122] <= 12'hE04;
rommem[14123] <= 12'h08D;
rommem[14124] <= 12'h147;
rommem[14125] <= 12'h0C6;
rommem[14126] <= 12'h050;
rommem[14127] <= 12'h017;
rommem[14128] <= 12'hFFF;
rommem[14129] <= 12'h5E0;
rommem[14130] <= 12'h0C6;
rommem[14131] <= 12'h043;
rommem[14132] <= 12'h017;
rommem[14133] <= 12'hFFF;
rommem[14134] <= 12'h5DB;
rommem[14135] <= 12'h0C6;
rommem[14136] <= 12'h02D;
rommem[14137] <= 12'h017;
rommem[14138] <= 12'hFFF;
rommem[14139] <= 12'h5D6;
rommem[14140] <= 12'h017;
rommem[14141] <= 12'hFFF;
rommem[14142] <= 12'h5D3;
rommem[14143] <= 12'h035;
rommem[14144] <= 12'h004;
rommem[14145] <= 12'h0C5;
rommem[14146] <= 12'h100;
rommem[14147] <= 12'h127;
rommem[14148] <= 12'h000;
rommem[14149] <= 12'h0FC;
rommem[14150] <= 12'h0C5;
rommem[14151] <= 12'h080;
rommem[14152] <= 12'h126;
rommem[14153] <= 12'h000;
rommem[14154] <= 12'h0F7;
rommem[14155] <= 12'h0C6;
rommem[14156] <= 12'h05D;
rommem[14157] <= 12'h017;
rommem[14158] <= 12'hFFF;
rommem[14159] <= 12'h5C2;
rommem[14160] <= 12'h016;
rommem[14161] <= 12'h000;
rommem[14162] <= 12'h0EF;
rommem[14163] <= 12'h0C1;
rommem[14164] <= 12'h00E;
rommem[14165] <= 12'h026;
rommem[14166] <= 12'h044;
rommem[14167] <= 12'h0E6;
rommem[14168] <= 12'hA00;
rommem[14169] <= 12'h017;
rommem[14170] <= 12'hFFE;
rommem[14171] <= 12'hCAE;
rommem[14172] <= 12'h0EC;
rommem[14173] <= 12'hA01;
rommem[14174] <= 12'h017;
rommem[14175] <= 12'hFFE;
rommem[14176] <= 12'hCA0;
rommem[14177] <= 12'h0E6;
rommem[14178] <= 12'hE04;
rommem[14179] <= 12'h0C5;
rommem[14180] <= 12'h080;
rommem[14181] <= 12'h027;
rommem[14182] <= 12'h005;
rommem[14183] <= 12'h0C6;
rommem[14184] <= 12'h05D;
rommem[14185] <= 12'h017;
rommem[14186] <= 12'hFFF;
rommem[14187] <= 12'h5A6;
rommem[14188] <= 12'h0C6;
rommem[14189] <= 12'h02C;
rommem[14190] <= 12'h017;
rommem[14191] <= 12'hFFF;
rommem[14192] <= 12'h5A1;
rommem[14193] <= 12'h0E6;
rommem[14194] <= 12'hE04;
rommem[14195] <= 12'h08D;
rommem[14196] <= 12'h0FF;
rommem[14197] <= 12'h0C6;
rommem[14198] <= 12'h050;
rommem[14199] <= 12'h017;
rommem[14200] <= 12'hFFF;
rommem[14201] <= 12'h598;
rommem[14202] <= 12'h0C6;
rommem[14203] <= 12'h043;
rommem[14204] <= 12'h017;
rommem[14205] <= 12'hFFF;
rommem[14206] <= 12'h593;
rommem[14207] <= 12'h0C6;
rommem[14208] <= 12'h02D;
rommem[14209] <= 12'h017;
rommem[14210] <= 12'hFFF;
rommem[14211] <= 12'h58E;
rommem[14212] <= 12'h017;
rommem[14213] <= 12'hFFF;
rommem[14214] <= 12'h58B;
rommem[14215] <= 12'h035;
rommem[14216] <= 12'h004;
rommem[14217] <= 12'h0C5;
rommem[14218] <= 12'h100;
rommem[14219] <= 12'h127;
rommem[14220] <= 12'h000;
rommem[14221] <= 12'h0B4;
rommem[14222] <= 12'h0C5;
rommem[14223] <= 12'h080;
rommem[14224] <= 12'h126;
rommem[14225] <= 12'h000;
rommem[14226] <= 12'h0AF;
rommem[14227] <= 12'h0C6;
rommem[14228] <= 12'h05D;
rommem[14229] <= 12'h017;
rommem[14230] <= 12'hFFF;
rommem[14231] <= 12'h57A;
rommem[14232] <= 12'h016;
rommem[14233] <= 12'h000;
rommem[14234] <= 12'h0A7;
rommem[14235] <= 12'h0C6;
rommem[14236] <= 12'h05B;
rommem[14237] <= 12'h017;
rommem[14238] <= 12'hFFF;
rommem[14239] <= 12'h572;
rommem[14240] <= 12'h0EC;
rommem[14241] <= 12'hA01;
rommem[14242] <= 12'h017;
rommem[14243] <= 12'hFFE;
rommem[14244] <= 12'hC5C;
rommem[14245] <= 12'h0C6;
rommem[14246] <= 12'h05D;
rommem[14247] <= 12'h017;
rommem[14248] <= 12'hFFF;
rommem[14249] <= 12'h568;
rommem[14250] <= 12'h016;
rommem[14251] <= 12'h000;
rommem[14252] <= 12'h095;
rommem[14253] <= 12'h0C1;
rommem[14254] <= 12'h006;
rommem[14255] <= 12'h026;
rommem[14256] <= 12'h013;
rommem[14257] <= 12'h00D;
rommem[14258] <= 12'h15F;
rommem[14259] <= 12'h027;
rommem[14260] <= 12'h005;
rommem[14261] <= 12'h0E6;
rommem[14262] <= 12'hA01;
rommem[14263] <= 12'h017;
rommem[14264] <= 12'hFFE;
rommem[14265] <= 12'hC50;
rommem[14266] <= 12'h0EC;
rommem[14267] <= 12'hA01;
rommem[14268] <= 12'h017;
rommem[14269] <= 12'hFFE;
rommem[14270] <= 12'hC42;
rommem[14271] <= 12'h00F;
rommem[14272] <= 12'h15F;
rommem[14273] <= 12'h016;
rommem[14274] <= 12'h000;
rommem[14275] <= 12'h07E;
rommem[14276] <= 12'h0C1;
rommem[14277] <= 12'h003;
rommem[14278] <= 12'h026;
rommem[14279] <= 12'h00D;
rommem[14280] <= 12'h0C6;
rommem[14281] <= 12'h023;
rommem[14282] <= 12'h017;
rommem[14283] <= 12'hFFF;
rommem[14284] <= 12'h545;
rommem[14285] <= 12'h0E6;
rommem[14286] <= 12'hA00;
rommem[14287] <= 12'h017;
rommem[14288] <= 12'hFFE;
rommem[14289] <= 12'hC38;
rommem[14290] <= 12'h016;
rommem[14291] <= 12'h000;
rommem[14292] <= 12'h06D;
rommem[14293] <= 12'h0C1;
rommem[14294] <= 12'h007;
rommem[14295] <= 12'h026;
rommem[14296] <= 12'h00C;
rommem[14297] <= 12'h0C6;
rommem[14298] <= 12'h023;
rommem[14299] <= 12'h017;
rommem[14300] <= 12'hFFF;
rommem[14301] <= 12'h534;
rommem[14302] <= 12'h0EC;
rommem[14303] <= 12'hA01;
rommem[14304] <= 12'h017;
rommem[14305] <= 12'hFFE;
rommem[14306] <= 12'hC1E;
rommem[14307] <= 12'h020;
rommem[14308] <= 12'h05D;
rommem[14309] <= 12'h0C1;
rommem[14310] <= 12'h009;
rommem[14311] <= 12'h026;
rommem[14312] <= 12'h006;
rommem[14313] <= 12'h0E6;
rommem[14314] <= 12'hA00;
rommem[14315] <= 12'h08D;
rommem[14316] <= 12'h0B8;
rommem[14317] <= 12'h020;
rommem[14318] <= 12'h053;
rommem[14319] <= 12'h0C1;
rommem[14320] <= 12'h121;
rommem[14321] <= 12'h025;
rommem[14322] <= 12'h028;
rommem[14323] <= 12'h0C1;
rommem[14324] <= 12'h12F;
rommem[14325] <= 12'h022;
rommem[14326] <= 12'h024;
rommem[14327] <= 12'h0C4;
rommem[14328] <= 12'h0FF;
rommem[14329] <= 12'h08E;
rommem[14330] <= 12'hFFF;
rommem[14331] <= 12'h2B4;
rommem[14332] <= 12'h058;
rommem[14333] <= 12'h058;
rommem[14334] <= 12'h03A;
rommem[14335] <= 12'h0E6;
rommem[14336] <= 12'h800;
rommem[14337] <= 12'h017;
rommem[14338] <= 12'hFFF;
rommem[14339] <= 12'h50E;
rommem[14340] <= 12'h0E6;
rommem[14341] <= 12'h800;
rommem[14342] <= 12'h017;
rommem[14343] <= 12'hFFF;
rommem[14344] <= 12'h509;
rommem[14345] <= 12'h0E6;
rommem[14346] <= 12'h800;
rommem[14347] <= 12'h017;
rommem[14348] <= 12'hFFF;
rommem[14349] <= 12'h504;
rommem[14350] <= 12'h0E6;
rommem[14351] <= 12'h800;
rommem[14352] <= 12'h017;
rommem[14353] <= 12'hFFF;
rommem[14354] <= 12'h4FF;
rommem[14355] <= 12'h0C6;
rommem[14356] <= 12'h020;
rommem[14357] <= 12'h017;
rommem[14358] <= 12'hFFF;
rommem[14359] <= 12'h4FA;
rommem[14360] <= 12'h016;
rommem[14361] <= 12'hFFF;
rommem[14362] <= 12'hBF4;
rommem[14363] <= 12'h08E;
rommem[14364] <= 12'h000;
rommem[14365] <= 12'h000;
rommem[14366] <= 12'h0E1;
rommem[14367] <= 12'h80A;
rommem[14368] <= 12'h000;
rommem[14369] <= 12'hFFF;
rommem[14370] <= 12'h2F4;
rommem[14371] <= 12'h026;
rommem[14372] <= 12'h006;
rommem[14373] <= 12'h08E;
rommem[14374] <= 12'hFFF;
rommem[14375] <= 12'h314;
rommem[14376] <= 12'h016;
rommem[14377] <= 12'hFFF;
rommem[14378] <= 12'hBB2;
rommem[14379] <= 12'h030;
rommem[14380] <= 12'h001;
rommem[14381] <= 12'h08C;
rommem[14382] <= 12'h000;
rommem[14383] <= 12'h01F;
rommem[14384] <= 12'h025;
rommem[14385] <= 12'hFEC;
rommem[14386] <= 12'h0C6;
rommem[14387] <= 12'h03F;
rommem[14388] <= 12'h017;
rommem[14389] <= 12'hFFF;
rommem[14390] <= 12'h4DB;
rommem[14391] <= 12'h017;
rommem[14392] <= 12'hFFF;
rommem[14393] <= 12'h4D8;
rommem[14394] <= 12'h017;
rommem[14395] <= 12'hFFF;
rommem[14396] <= 12'h4D5;
rommem[14397] <= 12'h017;
rommem[14398] <= 12'hFFF;
rommem[14399] <= 12'h4D2;
rommem[14400] <= 12'h020;
rommem[14401] <= 12'h000;
rommem[14402] <= 12'h00F;
rommem[14403] <= 12'h15F;
rommem[14404] <= 12'h017;
rommem[14405] <= 12'hFFD;
rommem[14406] <= 12'h88B;
rommem[14407] <= 12'h1BC;
rommem[14408] <= 12'h000;
rommem[14409] <= 12'h926;
rommem[14410] <= 12'h125;
rommem[14411] <= 12'hFFF;
rommem[14412] <= 12'hB72;
rommem[14413] <= 12'h016;
rommem[14414] <= 12'h000;
rommem[14415] <= 12'h0DE;
rommem[14416] <= 12'h058;
rommem[14417] <= 12'h059;
rommem[14418] <= 12'h053;
rommem[14419] <= 12'h055;
rommem[14420] <= 12'h044;
rommem[14421] <= 12'h020;
rommem[14422] <= 12'h058;
rommem[14423] <= 12'h020;
rommem[14424] <= 12'h059;
rommem[14425] <= 12'h020;
rommem[14426] <= 12'h055;
rommem[14427] <= 12'h020;
rommem[14428] <= 12'h053;
rommem[14429] <= 12'h020;
rommem[14430] <= 12'h050;
rommem[14431] <= 12'h043;
rommem[14432] <= 12'h020;
rommem[14433] <= 12'h020;
rommem[14434] <= 12'h020;
rommem[14435] <= 12'h020;
rommem[14436] <= 12'h041;
rommem[14437] <= 12'h020;
rommem[14438] <= 12'h042;
rommem[14439] <= 12'h020;
rommem[14440] <= 12'h043;
rommem[14441] <= 12'h043;
rommem[14442] <= 12'h044;
rommem[14443] <= 12'h050;
rommem[14444] <= 12'h020;
rommem[14445] <= 12'h020;
rommem[14446] <= 12'h020;
rommem[14447] <= 12'h020;
rommem[14448] <= 12'h020;
rommem[14449] <= 12'h020;
rommem[14450] <= 12'h020;
rommem[14451] <= 12'h020;
rommem[14452] <= 12'h0C4;
rommem[14453] <= 12'h600;
rommem[14454] <= 12'h059;
rommem[14455] <= 12'h059;
rommem[14456] <= 12'h059;
rommem[14457] <= 12'h059;
rommem[14458] <= 12'h04F;
rommem[14459] <= 12'h034;
rommem[14460] <= 12'h040;
rommem[14461] <= 12'h01F;
rommem[14462] <= 12'h003;
rommem[14463] <= 12'h0A6;
rommem[14464] <= 12'hC0A;
rommem[14465] <= 12'h000;
rommem[14466] <= 12'hFFF;
rommem[14467] <= 12'h850;
rommem[14468] <= 12'h035;
rommem[14469] <= 12'h040;
rommem[14470] <= 12'h01E;
rommem[14471] <= 12'h089;
rommem[14472] <= 12'h039;
rommem[14473] <= 12'h034;
rommem[14474] <= 12'h014;
rommem[14475] <= 12'h08E;
rommem[14476] <= 12'hFFF;
rommem[14477] <= 12'h854;
rommem[14478] <= 12'h058;
rommem[14479] <= 12'h0A6;
rommem[14480] <= 12'h815;
rommem[14481] <= 12'h01E;
rommem[14482] <= 12'h089;
rommem[14483] <= 12'h017;
rommem[14484] <= 12'hFFF;
rommem[14485] <= 12'h47C;
rommem[14486] <= 12'h01E;
rommem[14487] <= 12'h089;
rommem[14488] <= 12'h030;
rommem[14489] <= 12'h001;
rommem[14490] <= 12'h0E6;
rommem[14491] <= 12'h88D;
rommem[14492] <= 12'h0C1;
rommem[14493] <= 12'h020;
rommem[14494] <= 12'h027;
rommem[14495] <= 12'h003;
rommem[14496] <= 12'h017;
rommem[14497] <= 12'hFFF;
rommem[14498] <= 12'h46F;
rommem[14499] <= 12'h035;
rommem[14500] <= 12'h094;
rommem[14501] <= 12'h034;
rommem[14502] <= 12'h004;
rommem[14503] <= 12'h059;
rommem[14504] <= 12'h059;
rommem[14505] <= 12'h059;
rommem[14506] <= 12'h059;
rommem[14507] <= 12'h0C4;
rommem[14508] <= 12'h00F;
rommem[14509] <= 12'h08D;
rommem[14510] <= 12'hFDA;
rommem[14511] <= 12'h0C6;
rommem[14512] <= 12'h02C;
rommem[14513] <= 12'h017;
rommem[14514] <= 12'hFFF;
rommem[14515] <= 12'h45E;
rommem[14516] <= 12'h0E6;
rommem[14517] <= 12'hE04;
rommem[14518] <= 12'h0C4;
rommem[14519] <= 12'h00F;
rommem[14520] <= 12'h08D;
rommem[14521] <= 12'hFCF;
rommem[14522] <= 12'h035;
rommem[14523] <= 12'h084;
rommem[14524] <= 12'h034;
rommem[14525] <= 12'h006;
rommem[14526] <= 12'h0CC;
rommem[14527] <= 12'hFFF;
rommem[14528] <= 12'h8D0;
rommem[14529] <= 12'h0FD;
rommem[14530] <= 12'h000;
rommem[14531] <= 12'h800;
rommem[14532] <= 12'h035;
rommem[14533] <= 12'h086;
rommem[14534] <= 12'h034;
rommem[14535] <= 12'h006;
rommem[14536] <= 12'h0CC;
rommem[14537] <= 12'hFFE;
rommem[14538] <= 12'h2F5;
rommem[14539] <= 12'h0FD;
rommem[14540] <= 12'h000;
rommem[14541] <= 12'h800;
rommem[14542] <= 12'h035;
rommem[14543] <= 12'h086;
rommem[14544] <= 12'h0E7;
rommem[14545] <= 12'hC00;
rommem[14546] <= 12'h039;
rommem[14547] <= 12'h0CE;
rommem[14548] <= 12'h000;
rommem[14549] <= 12'h160;
rommem[14550] <= 12'h0E6;
rommem[14551] <= 12'hC00;
rommem[14552] <= 12'h027;
rommem[14553] <= 12'h005;
rommem[14554] <= 12'h017;
rommem[14555] <= 12'hFFF;
rommem[14556] <= 12'h435;
rommem[14557] <= 12'h020;
rommem[14558] <= 12'hFF7;
rommem[14559] <= 12'h039;
rommem[14560] <= 12'h017;
rommem[14561] <= 12'hFFD;
rommem[14562] <= 12'h7EF;
rommem[14563] <= 12'h0C6;
rommem[14564] <= 12'h024;
rommem[14565] <= 12'h017;
rommem[14566] <= 12'hFFF;
rommem[14567] <= 12'h42A;
rommem[14568] <= 12'h016;
rommem[14569] <= 12'hFFF;
rommem[14570] <= 12'h427;
rommem[14571] <= 12'h046;
rommem[14572] <= 12'h065;
rommem[14573] <= 12'h06D;
rommem[14574] <= 12'h074;
rommem[14575] <= 12'h069;
rommem[14576] <= 12'h06B;
rommem[14577] <= 12'h069;
rommem[14578] <= 12'h020;
rommem[14579] <= 12'h046;
rommem[14580] <= 12'h030;
rommem[14581] <= 12'h039;
rommem[14582] <= 12'h020;
rommem[14583] <= 12'h04D;
rommem[14584] <= 12'h075;
rommem[14585] <= 12'h06C;
rommem[14586] <= 12'h074;
rommem[14587] <= 12'h069;
rommem[14588] <= 12'h02D;
rommem[14589] <= 12'h063;
rommem[14590] <= 12'h06F;
rommem[14591] <= 12'h072;
rommem[14592] <= 12'h065;
rommem[14593] <= 12'h020;
rommem[14594] <= 12'h04F;
rommem[14595] <= 12'h053;
rommem[14596] <= 12'h020;
rommem[14597] <= 12'h053;
rommem[14598] <= 12'h074;
rommem[14599] <= 12'h061;
rommem[14600] <= 12'h072;
rommem[14601] <= 12'h074;
rommem[14602] <= 12'h069;
rommem[14603] <= 12'h06E;
rommem[14604] <= 12'h067;
rommem[14605] <= 12'h00D;
rommem[14606] <= 12'h00A;
rommem[14607] <= 12'h000;
rommem[14608] <= 12'h0CC;
rommem[14609] <= 12'hFFF;
rommem[14610] <= 12'h8EB;
rommem[14611] <= 12'h017;
rommem[14612] <= 12'hFFE;
rommem[14613] <= 12'hAA0;
rommem[14614] <= 12'h0CC;
rommem[14615] <= 12'hFFF;
rommem[14616] <= 12'hB0E;
rommem[14617] <= 12'h017;
rommem[14618] <= 12'hFFE;
rommem[14619] <= 12'hA9A;
rommem[14620] <= 12'h0CC;
rommem[14621] <= 12'hFFF;
rommem[14622] <= 12'h8E0;
rommem[14623] <= 12'h0FD;
rommem[14624] <= 12'h000;
rommem[14625] <= 12'h808;
rommem[14626] <= 12'h0CC;
rommem[14627] <= 12'hFFF;
rommem[14628] <= 12'hAF5;
rommem[14629] <= 12'h0FD;
rommem[14630] <= 12'h000;
rommem[14631] <= 12'h80C;
rommem[14632] <= 12'h0CC;
rommem[14633] <= 12'h006;
rommem[14634] <= 12'h3FF;
rommem[14635] <= 12'h0FD;
rommem[14636] <= 12'h000;
rommem[14637] <= 12'h908;
rommem[14638] <= 12'h032;
rommem[14639] <= 12'h80F;
rommem[14640] <= 12'h006;
rommem[14641] <= 12'hFFF;
rommem[14642] <= 12'h05F;
rommem[14643] <= 12'h017;
rommem[14644] <= 12'hFFF;
rommem[14645] <= 12'h3E0;
rommem[14646] <= 12'h0CC;
rommem[14647] <= 12'hFFE;
rommem[14648] <= 12'hBE4;
rommem[14649] <= 12'h0FD;
rommem[14650] <= 12'h000;
rommem[14651] <= 12'h804;
rommem[14652] <= 12'h0CC;
rommem[14653] <= 12'hFFE;
rommem[14654] <= 12'h2F5;
rommem[14655] <= 12'h0FD;
rommem[14656] <= 12'h000;
rommem[14657] <= 12'h800;
rommem[14658] <= 12'h0CC;
rommem[14659] <= 12'hFFF;
rommem[14660] <= 12'h8E0;
rommem[14661] <= 12'h0FD;
rommem[14662] <= 12'h000;
rommem[14663] <= 12'h808;
rommem[14664] <= 12'h0AD;
rommem[14665] <= 12'h90F;
rommem[14666] <= 12'h000;
rommem[14667] <= 12'h808;
rommem[14668] <= 12'h0CC;
rommem[14669] <= 12'hFFF;
rommem[14670] <= 12'hFFF;
rommem[14671] <= 12'h017;
rommem[14672] <= 12'hFFF;
rommem[14673] <= 12'h388;
rommem[14674] <= 12'h0C1;
rommem[14675] <= 12'h00D;
rommem[14676] <= 12'h027;
rommem[14677] <= 12'h005;
rommem[14678] <= 12'h017;
rommem[14679] <= 12'hFFF;
rommem[14680] <= 12'h3B9;
rommem[14681] <= 12'h020;
rommem[14682] <= 12'hFF1;
rommem[14683] <= 12'h0CC;
rommem[14684] <= 12'h005;
rommem[14685] <= 12'h050;
rommem[14686] <= 12'h015;
rommem[14687] <= 12'h0FD;
rommem[14688] <= 12'hFFF;
rommem[14689] <= 12'hE60;
rommem[14690] <= 12'h001;
rommem[14691] <= 12'h0CC;
rommem[14692] <= 12'h005;
rommem[14693] <= 12'h151;
rommem[14694] <= 12'h015;
rommem[14695] <= 12'h0FD;
rommem[14696] <= 12'hFFF;
rommem[14697] <= 12'hE60;
rommem[14698] <= 12'h001;
rommem[14699] <= 12'h00F;
rommem[14700] <= 12'h111;
rommem[14701] <= 12'h017;
rommem[14702] <= 12'hFFE;
rommem[14703] <= 12'h962;
rommem[14704] <= 12'h01F;
rommem[14705] <= 12'h002;
rommem[14706] <= 12'h0CC;
rommem[14707] <= 12'h005;
rommem[14708] <= 12'h252;
rommem[14709] <= 12'h015;
rommem[14710] <= 12'h0FD;
rommem[14711] <= 12'hFFF;
rommem[14712] <= 12'hE60;
rommem[14713] <= 12'h001;
rommem[14714] <= 12'h08D;
rommem[14715] <= 12'h0B9;
rommem[14716] <= 12'h0C1;
rommem[14717] <= 12'h024;
rommem[14718] <= 12'h027;
rommem[14719] <= 12'hFFA;
rommem[14720] <= 12'h086;
rommem[14721] <= 12'h353;
rommem[14722] <= 12'h015;
rommem[14723] <= 12'h0FD;
rommem[14724] <= 12'hFFF;
rommem[14725] <= 12'hE60;
rommem[14726] <= 12'h001;
rommem[14727] <= 12'h0C1;
rommem[14728] <= 12'h03C;
rommem[14729] <= 12'h026;
rommem[14730] <= 12'h02C;
rommem[14731] <= 12'h08D;
rommem[14732] <= 12'h0A3;
rommem[14733] <= 12'h0C1;
rommem[14734] <= 12'h03E;
rommem[14735] <= 12'h026;
rommem[14736] <= 12'hF9D;
rommem[14737] <= 12'h08D;
rommem[14738] <= 12'h09D;
rommem[14739] <= 12'h0C1;
rommem[14740] <= 12'h073;
rommem[14741] <= 12'h026;
rommem[14742] <= 12'h00E;
rommem[14743] <= 12'h0CC;
rommem[14744] <= 12'hFFE;
rommem[14745] <= 12'hBE4;
rommem[14746] <= 12'h0FD;
rommem[14747] <= 12'h000;
rommem[14748] <= 12'h804;
rommem[14749] <= 12'h0CC;
rommem[14750] <= 12'hFFE;
rommem[14751] <= 12'hC08;
rommem[14752] <= 12'h0FD;
rommem[14753] <= 12'h000;
rommem[14754] <= 12'h800;
rommem[14755] <= 12'h020;
rommem[14756] <= 12'hF89;
rommem[14757] <= 12'h0C1;
rommem[14758] <= 12'h063;
rommem[14759] <= 12'h026;
rommem[14760] <= 12'hF85;
rommem[14761] <= 12'h0CC;
rommem[14762] <= 12'hFFE;
rommem[14763] <= 12'hA12;
rommem[14764] <= 12'h0FD;
rommem[14765] <= 12'h000;
rommem[14766] <= 12'h804;
rommem[14767] <= 12'h0CC;
rommem[14768] <= 12'hFFE;
rommem[14769] <= 12'h2F5;
rommem[14770] <= 12'h0FD;
rommem[14771] <= 12'h000;
rommem[14772] <= 12'h800;
rommem[14773] <= 12'h020;
rommem[14774] <= 12'hF77;
rommem[14775] <= 12'h0C1;
rommem[14776] <= 12'h03F;
rommem[14777] <= 12'h026;
rommem[14778] <= 12'h008;
rommem[14779] <= 12'h0CC;
rommem[14780] <= 12'hFFF;
rommem[14781] <= 12'hB0E;
rommem[14782] <= 12'h017;
rommem[14783] <= 12'hFFE;
rommem[14784] <= 12'h9F5;
rommem[14785] <= 12'h020;
rommem[14786] <= 12'hF6B;
rommem[14787] <= 12'h0C1;
rommem[14788] <= 12'h043;
rommem[14789] <= 12'h026;
rommem[14790] <= 12'h008;
rommem[14791] <= 12'h017;
rommem[14792] <= 12'hFFE;
rommem[14793] <= 12'h85B;
rommem[14794] <= 12'h017;
rommem[14795] <= 12'hFFE;
rommem[14796] <= 12'h8CB;
rommem[14797] <= 12'h020;
rommem[14798] <= 12'hF5F;
rommem[14799] <= 12'h0C1;
rommem[14800] <= 12'h044;
rommem[14801] <= 12'h026;
rommem[14802] <= 12'h008;
rommem[14803] <= 12'h08D;
rommem[14804] <= 12'h05B;
rommem[14805] <= 12'h0C1;
rommem[14806] <= 12'h052;
rommem[14807] <= 12'h026;
rommem[14808] <= 12'h26F;
rommem[14809] <= 12'h020;
rommem[14810] <= 12'h309;
rommem[14811] <= 12'h0C1;
rommem[14812] <= 12'h03A;
rommem[14813] <= 12'h026;
rommem[14814] <= 12'h003;
rommem[14815] <= 12'h016;
rommem[14816] <= 12'h000;
rommem[14817] <= 12'h2C2;
rommem[14818] <= 12'h0C1;
rommem[14819] <= 12'h046;
rommem[14820] <= 12'h026;
rommem[14821] <= 12'h016;
rommem[14822] <= 12'h08D;
rommem[14823] <= 12'h048;
rommem[14824] <= 12'h0C1;
rommem[14825] <= 12'h049;
rommem[14826] <= 12'h026;
rommem[14827] <= 12'h009;
rommem[14828] <= 12'h08D;
rommem[14829] <= 12'h042;
rommem[14830] <= 12'h0C1;
rommem[14831] <= 12'h047;
rommem[14832] <= 12'h026;
rommem[14833] <= 12'hF3C;
rommem[14834] <= 12'h07E;
rommem[14835] <= 12'hFE0;
rommem[14836] <= 12'h000;
rommem[14837] <= 12'h0C1;
rommem[14838] <= 12'h04C;
rommem[14839] <= 12'h026;
rommem[14840] <= 12'hF35;
rommem[14841] <= 12'h016;
rommem[14842] <= 12'h000;
rommem[14843] <= 12'h3A9;
rommem[14844] <= 12'h0C1;
rommem[14845] <= 12'h04A;
rommem[14846] <= 12'h127;
rommem[14847] <= 12'h000;
rommem[14848] <= 12'h32E;
rommem[14849] <= 12'h0C1;
rommem[14850] <= 12'h052;
rommem[14851] <= 12'h026;
rommem[14852] <= 12'h006;
rommem[14853] <= 12'h0CE;
rommem[14854] <= 12'hFFF;
rommem[14855] <= 12'h92E;
rommem[14856] <= 12'h016;
rommem[14857] <= 12'hFFD;
rommem[14858] <= 12'h9F5;
rommem[14859] <= 12'h0C1;
rommem[14860] <= 12'h073;
rommem[14861] <= 12'h026;
rommem[14862] <= 12'h005;
rommem[14863] <= 12'h017;
rommem[14864] <= 12'hFFF;
rommem[14865] <= 12'h293;
rommem[14866] <= 12'h020;
rommem[14867] <= 12'hF1A;
rommem[14868] <= 12'h0C1;
rommem[14869] <= 12'h054;
rommem[14870] <= 12'h026;
rommem[14871] <= 12'h011;
rommem[14872] <= 12'h08D;
rommem[14873] <= 12'h016;
rommem[14874] <= 12'h0C1;
rommem[14875] <= 12'h049;
rommem[14876] <= 12'h026;
rommem[14877] <= 12'hF10;
rommem[14878] <= 12'h08D;
rommem[14879] <= 12'h010;
rommem[14880] <= 12'h0C1;
rommem[14881] <= 12'h052;
rommem[14882] <= 12'h026;
rommem[14883] <= 12'hF0A;
rommem[14884] <= 12'h017;
rommem[14885] <= 12'hFFE;
rommem[14886] <= 12'hAA0;
rommem[14887] <= 12'h020;
rommem[14888] <= 12'hF05;
rommem[14889] <= 12'h0C1;
rommem[14890] <= 12'h055;
rommem[14891] <= 12'h026;
rommem[14892] <= 12'hF01;
rommem[14893] <= 12'h016;
rommem[14894] <= 12'hFFF;
rommem[14895] <= 12'h984;
rommem[14896] <= 12'h0E6;
rommem[14897] <= 12'hA04;
rommem[14898] <= 12'h031;
rommem[14899] <= 12'h201;
rommem[14900] <= 12'h039;
rommem[14901] <= 12'h08D;
rommem[14902] <= 12'hFF9;
rommem[14903] <= 12'h0C1;
rommem[14904] <= 12'h020;
rommem[14905] <= 12'h027;
rommem[14906] <= 12'hFFA;
rommem[14907] <= 12'h039;
rommem[14908] <= 12'h08D;
rommem[14909] <= 12'hFF2;
rommem[14910] <= 12'h0C1;
rommem[14911] <= 12'h020;
rommem[14912] <= 12'h027;
rommem[14913] <= 12'hFFA;
rommem[14914] <= 12'h031;
rommem[14915] <= 12'h3FF;
rommem[14916] <= 12'h039;
rommem[14917] <= 12'h08D;
rommem[14918] <= 12'hFF5;
rommem[14919] <= 12'h08D;
rommem[14920] <= 12'h046;
rommem[14921] <= 12'h0FC;
rommem[14922] <= 12'h000;
rommem[14923] <= 12'h910;
rommem[14924] <= 12'h0FD;
rommem[14925] <= 12'h000;
rommem[14926] <= 12'h920;
rommem[14927] <= 12'h0FC;
rommem[14928] <= 12'h000;
rommem[14929] <= 12'h912;
rommem[14930] <= 12'h0FD;
rommem[14931] <= 12'h000;
rommem[14932] <= 12'h922;
rommem[14933] <= 12'h08D;
rommem[14934] <= 12'hFE5;
rommem[14935] <= 12'h08D;
rommem[14936] <= 12'h036;
rommem[14937] <= 12'h0FC;
rommem[14938] <= 12'h000;
rommem[14939] <= 12'h910;
rommem[14940] <= 12'h0FD;
rommem[14941] <= 12'h000;
rommem[14942] <= 12'h924;
rommem[14943] <= 12'h0FC;
rommem[14944] <= 12'h000;
rommem[14945] <= 12'h912;
rommem[14946] <= 12'h0FD;
rommem[14947] <= 12'h000;
rommem[14948] <= 12'h926;
rommem[14949] <= 12'h039;
rommem[14950] <= 12'h08D;
rommem[14951] <= 12'hFDD;
rommem[14952] <= 12'h0FC;
rommem[14953] <= 12'h000;
rommem[14954] <= 12'h926;
rommem[14955] <= 12'h0B3;
rommem[14956] <= 12'h000;
rommem[14957] <= 12'h922;
rommem[14958] <= 12'h0FC;
rommem[14959] <= 12'h000;
rommem[14960] <= 12'h924;
rommem[14961] <= 12'h0F2;
rommem[14962] <= 12'h000;
rommem[14963] <= 12'h921;
rommem[14964] <= 12'h0B2;
rommem[14965] <= 12'h000;
rommem[14966] <= 12'h920;
rommem[14967] <= 12'h124;
rommem[14968] <= 12'h000;
rommem[14969] <= 12'h007;
rommem[14970] <= 12'h0AD;
rommem[14971] <= 12'h90F;
rommem[14972] <= 12'h000;
rommem[14973] <= 12'h80C;
rommem[14974] <= 12'h016;
rommem[14975] <= 12'hFFF;
rommem[14976] <= 12'hEAD;
rommem[14977] <= 12'h039;
rommem[14978] <= 12'h078;
rommem[14979] <= 12'h000;
rommem[14980] <= 12'h913;
rommem[14981] <= 12'h079;
rommem[14982] <= 12'h000;
rommem[14983] <= 12'h912;
rommem[14984] <= 12'h079;
rommem[14985] <= 12'h000;
rommem[14986] <= 12'h911;
rommem[14987] <= 12'h079;
rommem[14988] <= 12'h000;
rommem[14989] <= 12'h910;
rommem[14990] <= 12'h039;
rommem[14991] <= 12'h04F;
rommem[14992] <= 12'h05F;
rommem[14993] <= 12'h0FD;
rommem[14994] <= 12'h000;
rommem[14995] <= 12'h910;
rommem[14996] <= 12'h0FD;
rommem[14997] <= 12'h000;
rommem[14998] <= 12'h912;
rommem[14999] <= 12'h034;
rommem[15000] <= 12'h010;
rommem[15001] <= 12'h08E;
rommem[15002] <= 12'h000;
rommem[15003] <= 12'h000;
rommem[15004] <= 12'h08D;
rommem[15005] <= 12'hF92;
rommem[15006] <= 12'h08D;
rommem[15007] <= 12'h01F;
rommem[15008] <= 12'h0C1;
rommem[15009] <= 12'hFFF;
rommem[15010] <= 12'h027;
rommem[15011] <= 12'h017;
rommem[15012] <= 12'h08D;
rommem[15013] <= 12'hFDC;
rommem[15014] <= 12'h08D;
rommem[15015] <= 12'hFDA;
rommem[15016] <= 12'h08D;
rommem[15017] <= 12'hFD8;
rommem[15018] <= 12'h08D;
rommem[15019] <= 12'hFD6;
rommem[15020] <= 12'h0C4;
rommem[15021] <= 12'h00F;
rommem[15022] <= 12'h0FA;
rommem[15023] <= 12'h000;
rommem[15024] <= 12'h913;
rommem[15025] <= 12'h0F7;
rommem[15026] <= 12'h000;
rommem[15027] <= 12'h913;
rommem[15028] <= 12'h030;
rommem[15029] <= 12'h001;
rommem[15030] <= 12'h08C;
rommem[15031] <= 12'h000;
rommem[15032] <= 12'h00C;
rommem[15033] <= 12'h025;
rommem[15034] <= 12'hFE1;
rommem[15035] <= 12'h01F;
rommem[15036] <= 12'h010;
rommem[15037] <= 12'h035;
rommem[15038] <= 12'h090;
rommem[15039] <= 12'h0C1;
rommem[15040] <= 12'h030;
rommem[15041] <= 12'h025;
rommem[15042] <= 12'h021;
rommem[15043] <= 12'h0C1;
rommem[15044] <= 12'h039;
rommem[15045] <= 12'h022;
rommem[15046] <= 12'h003;
rommem[15047] <= 12'h0C0;
rommem[15048] <= 12'h030;
rommem[15049] <= 12'h039;
rommem[15050] <= 12'h0C1;
rommem[15051] <= 12'h041;
rommem[15052] <= 12'h025;
rommem[15053] <= 12'h016;
rommem[15054] <= 12'h0C1;
rommem[15055] <= 12'h046;
rommem[15056] <= 12'h022;
rommem[15057] <= 12'h005;
rommem[15058] <= 12'h0C0;
rommem[15059] <= 12'h041;
rommem[15060] <= 12'h0CB;
rommem[15061] <= 12'h00A;
rommem[15062] <= 12'h039;
rommem[15063] <= 12'h0C1;
rommem[15064] <= 12'h061;
rommem[15065] <= 12'h025;
rommem[15066] <= 12'h009;
rommem[15067] <= 12'h0C1;
rommem[15068] <= 12'h07A;
rommem[15069] <= 12'h022;
rommem[15070] <= 12'h005;
rommem[15071] <= 12'h0C0;
rommem[15072] <= 12'h061;
rommem[15073] <= 12'h0CB;
rommem[15074] <= 12'h00A;
rommem[15075] <= 12'h039;
rommem[15076] <= 12'h0C6;
rommem[15077] <= 12'hFFF;
rommem[15078] <= 12'h039;
rommem[15079] <= 12'h0C1;
rommem[15080] <= 12'h030;
rommem[15081] <= 12'h024;
rommem[15082] <= 12'h007;
rommem[15083] <= 12'h0C1;
rommem[15084] <= 12'h03A;
rommem[15085] <= 12'h025;
rommem[15086] <= 12'h003;
rommem[15087] <= 12'h0C0;
rommem[15088] <= 12'h030;
rommem[15089] <= 12'h039;
rommem[15090] <= 12'h0C6;
rommem[15091] <= 12'hFFF;
rommem[15092] <= 12'h039;
rommem[15093] <= 12'h0CC;
rommem[15094] <= 12'hFFF;
rommem[15095] <= 12'hB06;
rommem[15096] <= 12'h017;
rommem[15097] <= 12'hFFE;
rommem[15098] <= 12'h8BB;
rommem[15099] <= 12'h07E;
rommem[15100] <= 12'hFFF;
rommem[15101] <= 12'h92E;
rommem[15102] <= 12'h0DD;
rommem[15103] <= 12'h024;
rommem[15104] <= 12'h09F;
rommem[15105] <= 12'h026;
rommem[15106] <= 12'h0BD;
rommem[15107] <= 12'hFFE;
rommem[15108] <= 12'h3B6;
rommem[15109] <= 12'h039;
rommem[15110] <= 12'h02A;
rommem[15111] <= 12'h02A;
rommem[15112] <= 12'h045;
rommem[15113] <= 12'h072;
rommem[15114] <= 12'h072;
rommem[15115] <= 12'h00D;
rommem[15116] <= 12'h00A;
rommem[15117] <= 12'h000;
rommem[15118] <= 12'h03F;
rommem[15119] <= 12'h020;
rommem[15120] <= 12'h03D;
rommem[15121] <= 12'h020;
rommem[15122] <= 12'h044;
rommem[15123] <= 12'h069;
rommem[15124] <= 12'h073;
rommem[15125] <= 12'h070;
rommem[15126] <= 12'h06C;
rommem[15127] <= 12'h061;
rommem[15128] <= 12'h079;
rommem[15129] <= 12'h020;
rommem[15130] <= 12'h068;
rommem[15131] <= 12'h065;
rommem[15132] <= 12'h06C;
rommem[15133] <= 12'h070;
rommem[15134] <= 12'h00D;
rommem[15135] <= 12'h00A;
rommem[15136] <= 12'h043;
rommem[15137] <= 12'h04C;
rommem[15138] <= 12'h053;
rommem[15139] <= 12'h020;
rommem[15140] <= 12'h03D;
rommem[15141] <= 12'h020;
rommem[15142] <= 12'h063;
rommem[15143] <= 12'h06C;
rommem[15144] <= 12'h065;
rommem[15145] <= 12'h061;
rommem[15146] <= 12'h072;
rommem[15147] <= 12'h020;
rommem[15148] <= 12'h073;
rommem[15149] <= 12'h063;
rommem[15150] <= 12'h072;
rommem[15151] <= 12'h065;
rommem[15152] <= 12'h065;
rommem[15153] <= 12'h06E;
rommem[15154] <= 12'h00D;
rommem[15155] <= 12'h00A;
rommem[15156] <= 12'h03A;
rommem[15157] <= 12'h020;
rommem[15158] <= 12'h03D;
rommem[15159] <= 12'h020;
rommem[15160] <= 12'h045;
rommem[15161] <= 12'h064;
rommem[15162] <= 12'h069;
rommem[15163] <= 12'h074;
rommem[15164] <= 12'h020;
rommem[15165] <= 12'h06D;
rommem[15166] <= 12'h065;
rommem[15167] <= 12'h06D;
rommem[15168] <= 12'h06F;
rommem[15169] <= 12'h072;
rommem[15170] <= 12'h079;
rommem[15171] <= 12'h020;
rommem[15172] <= 12'h062;
rommem[15173] <= 12'h079;
rommem[15174] <= 12'h074;
rommem[15175] <= 12'h065;
rommem[15176] <= 12'h073;
rommem[15177] <= 12'h00D;
rommem[15178] <= 12'h00A;
rommem[15179] <= 12'h044;
rommem[15180] <= 12'h052;
rommem[15181] <= 12'h020;
rommem[15182] <= 12'h03D;
rommem[15183] <= 12'h020;
rommem[15184] <= 12'h044;
rommem[15185] <= 12'h075;
rommem[15186] <= 12'h06D;
rommem[15187] <= 12'h070;
rommem[15188] <= 12'h020;
rommem[15189] <= 12'h072;
rommem[15190] <= 12'h065;
rommem[15191] <= 12'h067;
rommem[15192] <= 12'h069;
rommem[15193] <= 12'h073;
rommem[15194] <= 12'h074;
rommem[15195] <= 12'h065;
rommem[15196] <= 12'h072;
rommem[15197] <= 12'h073;
rommem[15198] <= 12'h00D;
rommem[15199] <= 12'h00A;
rommem[15200] <= 12'h044;
rommem[15201] <= 12'h020;
rommem[15202] <= 12'h03D;
rommem[15203] <= 12'h020;
rommem[15204] <= 12'h044;
rommem[15205] <= 12'h075;
rommem[15206] <= 12'h06D;
rommem[15207] <= 12'h070;
rommem[15208] <= 12'h020;
rommem[15209] <= 12'h06D;
rommem[15210] <= 12'h065;
rommem[15211] <= 12'h06D;
rommem[15212] <= 12'h06F;
rommem[15213] <= 12'h072;
rommem[15214] <= 12'h079;
rommem[15215] <= 12'h00D;
rommem[15216] <= 12'h00A;
rommem[15217] <= 12'h046;
rommem[15218] <= 12'h04C;
rommem[15219] <= 12'h020;
rommem[15220] <= 12'h03D;
rommem[15221] <= 12'h020;
rommem[15222] <= 12'h044;
rommem[15223] <= 12'h075;
rommem[15224] <= 12'h06D;
rommem[15225] <= 12'h070;
rommem[15226] <= 12'h020;
rommem[15227] <= 12'h049;
rommem[15228] <= 12'h02F;
rommem[15229] <= 12'h04F;
rommem[15230] <= 12'h020;
rommem[15231] <= 12'h046;
rommem[15232] <= 12'h06F;
rommem[15233] <= 12'h063;
rommem[15234] <= 12'h075;
rommem[15235] <= 12'h073;
rommem[15236] <= 12'h020;
rommem[15237] <= 12'h04C;
rommem[15238] <= 12'h069;
rommem[15239] <= 12'h073;
rommem[15240] <= 12'h074;
rommem[15241] <= 12'h00D;
rommem[15242] <= 12'h00A;
rommem[15243] <= 12'h046;
rommem[15244] <= 12'h049;
rommem[15245] <= 12'h047;
rommem[15246] <= 12'h020;
rommem[15247] <= 12'h03D;
rommem[15248] <= 12'h020;
rommem[15249] <= 12'h073;
rommem[15250] <= 12'h074;
rommem[15251] <= 12'h061;
rommem[15252] <= 12'h072;
rommem[15253] <= 12'h074;
rommem[15254] <= 12'h020;
rommem[15255] <= 12'h046;
rommem[15256] <= 12'h049;
rommem[15257] <= 12'h047;
rommem[15258] <= 12'h020;
rommem[15259] <= 12'h046;
rommem[15260] <= 12'h06F;
rommem[15261] <= 12'h072;
rommem[15262] <= 12'h074;
rommem[15263] <= 12'h068;
rommem[15264] <= 12'h00D;
rommem[15265] <= 12'h00A;
rommem[15266] <= 12'h04A;
rommem[15267] <= 12'h020;
rommem[15268] <= 12'h03D;
rommem[15269] <= 12'h020;
rommem[15270] <= 12'h04A;
rommem[15271] <= 12'h075;
rommem[15272] <= 12'h06D;
rommem[15273] <= 12'h070;
rommem[15274] <= 12'h020;
rommem[15275] <= 12'h074;
rommem[15276] <= 12'h06F;
rommem[15277] <= 12'h020;
rommem[15278] <= 12'h063;
rommem[15279] <= 12'h06F;
rommem[15280] <= 12'h064;
rommem[15281] <= 12'h065;
rommem[15282] <= 12'h00D;
rommem[15283] <= 12'h00A;
rommem[15284] <= 12'h052;
rommem[15285] <= 12'h041;
rommem[15286] <= 12'h04D;
rommem[15287] <= 12'h020;
rommem[15288] <= 12'h03D;
rommem[15289] <= 12'h020;
rommem[15290] <= 12'h074;
rommem[15291] <= 12'h065;
rommem[15292] <= 12'h073;
rommem[15293] <= 12'h074;
rommem[15294] <= 12'h020;
rommem[15295] <= 12'h052;
rommem[15296] <= 12'h041;
rommem[15297] <= 12'h04D;
rommem[15298] <= 12'h00D;
rommem[15299] <= 12'h00A;
rommem[15300] <= 12'h073;
rommem[15301] <= 12'h020;
rommem[15302] <= 12'h03D;
rommem[15303] <= 12'h020;
rommem[15304] <= 12'h073;
rommem[15305] <= 12'h065;
rommem[15306] <= 12'h072;
rommem[15307] <= 12'h069;
rommem[15308] <= 12'h061;
rommem[15309] <= 12'h06C;
rommem[15310] <= 12'h020;
rommem[15311] <= 12'h06F;
rommem[15312] <= 12'h075;
rommem[15313] <= 12'h074;
rommem[15314] <= 12'h070;
rommem[15315] <= 12'h075;
rommem[15316] <= 12'h074;
rommem[15317] <= 12'h020;
rommem[15318] <= 12'h074;
rommem[15319] <= 12'h065;
rommem[15320] <= 12'h073;
rommem[15321] <= 12'h074;
rommem[15322] <= 12'h00D;
rommem[15323] <= 12'h00A;
rommem[15324] <= 12'h054;
rommem[15325] <= 12'h049;
rommem[15326] <= 12'h020;
rommem[15327] <= 12'h03D;
rommem[15328] <= 12'h020;
rommem[15329] <= 12'h064;
rommem[15330] <= 12'h069;
rommem[15331] <= 12'h073;
rommem[15332] <= 12'h070;
rommem[15333] <= 12'h06C;
rommem[15334] <= 12'h061;
rommem[15335] <= 12'h079;
rommem[15336] <= 12'h020;
rommem[15337] <= 12'h064;
rommem[15338] <= 12'h061;
rommem[15339] <= 12'h074;
rommem[15340] <= 12'h065;
rommem[15341] <= 12'h02F;
rommem[15342] <= 12'h074;
rommem[15343] <= 12'h069;
rommem[15344] <= 12'h06D;
rommem[15345] <= 12'h065;
rommem[15346] <= 12'h00D;
rommem[15347] <= 12'h00A;
rommem[15348] <= 12'h055;
rommem[15349] <= 12'h020;
rommem[15350] <= 12'h03D;
rommem[15351] <= 12'h020;
rommem[15352] <= 12'h075;
rommem[15353] <= 12'h06E;
rommem[15354] <= 12'h061;
rommem[15355] <= 12'h073;
rommem[15356] <= 12'h073;
rommem[15357] <= 12'h065;
rommem[15358] <= 12'h06D;
rommem[15359] <= 12'h062;
rommem[15360] <= 12'h06C;
rommem[15361] <= 12'h065;
rommem[15362] <= 12'h00D;
rommem[15363] <= 12'h00A;
rommem[15364] <= 12'h000;
rommem[15365] <= 12'h00D;
rommem[15366] <= 12'h00A;
rommem[15367] <= 12'h020;
rommem[15368] <= 12'h020;
rommem[15369] <= 12'h044;
rommem[15370] <= 12'h02F;
rommem[15371] <= 12'h041;
rommem[15372] <= 12'h042;
rommem[15373] <= 12'h020;
rommem[15374] <= 12'h020;
rommem[15375] <= 12'h020;
rommem[15376] <= 12'h020;
rommem[15377] <= 12'h020;
rommem[15378] <= 12'h058;
rommem[15379] <= 12'h020;
rommem[15380] <= 12'h020;
rommem[15381] <= 12'h020;
rommem[15382] <= 12'h020;
rommem[15383] <= 12'h020;
rommem[15384] <= 12'h020;
rommem[15385] <= 12'h059;
rommem[15386] <= 12'h020;
rommem[15387] <= 12'h020;
rommem[15388] <= 12'h020;
rommem[15389] <= 12'h020;
rommem[15390] <= 12'h020;
rommem[15391] <= 12'h020;
rommem[15392] <= 12'h055;
rommem[15393] <= 12'h020;
rommem[15394] <= 12'h020;
rommem[15395] <= 12'h020;
rommem[15396] <= 12'h020;
rommem[15397] <= 12'h020;
rommem[15398] <= 12'h020;
rommem[15399] <= 12'h053;
rommem[15400] <= 12'h020;
rommem[15401] <= 12'h020;
rommem[15402] <= 12'h020;
rommem[15403] <= 12'h020;
rommem[15404] <= 12'h020;
rommem[15405] <= 12'h020;
rommem[15406] <= 12'h020;
rommem[15407] <= 12'h050;
rommem[15408] <= 12'h043;
rommem[15409] <= 12'h020;
rommem[15410] <= 12'h020;
rommem[15411] <= 12'h020;
rommem[15412] <= 12'h020;
rommem[15413] <= 12'h044;
rommem[15414] <= 12'h050;
rommem[15415] <= 12'h020;
rommem[15416] <= 12'h020;
rommem[15417] <= 12'h043;
rommem[15418] <= 12'h043;
rommem[15419] <= 12'h052;
rommem[15420] <= 12'h00D;
rommem[15421] <= 12'h00A;
rommem[15422] <= 12'h000;
rommem[15423] <= 12'h0BD;
rommem[15424] <= 12'hFFD;
rommem[15425] <= 12'h2D2;
rommem[15426] <= 12'h039;
rommem[15427] <= 12'h0C6;
rommem[15428] <= 12'h020;
rommem[15429] <= 12'h016;
rommem[15430] <= 12'hFFF;
rommem[15431] <= 12'h0CA;
rommem[15432] <= 12'h08D;
rommem[15433] <= 12'hE1C;
rommem[15434] <= 12'h18E;
rommem[15435] <= 12'h000;
rommem[15436] <= 12'h000;
rommem[15437] <= 12'h1BE;
rommem[15438] <= 12'h000;
rommem[15439] <= 12'h922;
rommem[15440] <= 12'h017;
rommem[15441] <= 12'hFFD;
rommem[15442] <= 12'h47F;
rommem[15443] <= 12'h0C6;
rommem[15444] <= 12'h03A;
rommem[15445] <= 12'h017;
rommem[15446] <= 12'hFFF;
rommem[15447] <= 12'h0BA;
rommem[15448] <= 12'h01F;
rommem[15449] <= 12'h020;
rommem[15450] <= 12'h017;
rommem[15451] <= 12'hFFE;
rommem[15452] <= 12'h7A4;
rommem[15453] <= 12'h0C6;
rommem[15454] <= 12'h020;
rommem[15455] <= 12'h017;
rommem[15456] <= 12'hFFF;
rommem[15457] <= 12'h0B0;
rommem[15458] <= 12'h08E;
rommem[15459] <= 12'h000;
rommem[15460] <= 12'h008;
rommem[15461] <= 12'h0E6;
rommem[15462] <= 12'hA04;
rommem[15463] <= 12'h031;
rommem[15464] <= 12'h201;
rommem[15465] <= 12'h017;
rommem[15466] <= 12'hFFE;
rommem[15467] <= 12'h79E;
rommem[15468] <= 12'h0C6;
rommem[15469] <= 12'h020;
rommem[15470] <= 12'h017;
rommem[15471] <= 12'hFFF;
rommem[15472] <= 12'h0A1;
rommem[15473] <= 12'h05F;
rommem[15474] <= 12'h04F;
rommem[15475] <= 12'h017;
rommem[15476] <= 12'hFFF;
rommem[15477] <= 12'h064;
rommem[15478] <= 12'h0C1;
rommem[15479] <= 12'h003;
rommem[15480] <= 12'h027;
rommem[15481] <= 12'h024;
rommem[15482] <= 12'h030;
rommem[15483] <= 12'h1FF;
rommem[15484] <= 12'h026;
rommem[15485] <= 12'hFE7;
rommem[15486] <= 12'h0C6;
rommem[15487] <= 12'h020;
rommem[15488] <= 12'h017;
rommem[15489] <= 12'hFFF;
rommem[15490] <= 12'h08F;
rommem[15491] <= 12'h08E;
rommem[15492] <= 12'h000;
rommem[15493] <= 12'h008;
rommem[15494] <= 12'h031;
rommem[15495] <= 12'h3F8;
rommem[15496] <= 12'h0E6;
rommem[15497] <= 12'hA04;
rommem[15498] <= 12'h0C1;
rommem[15499] <= 12'h020;
rommem[15500] <= 12'h024;
rommem[15501] <= 12'h002;
rommem[15502] <= 12'h0C6;
rommem[15503] <= 12'h02E;
rommem[15504] <= 12'h017;
rommem[15505] <= 12'hFFF;
rommem[15506] <= 12'h07F;
rommem[15507] <= 12'h031;
rommem[15508] <= 12'h201;
rommem[15509] <= 12'h030;
rommem[15510] <= 12'h1FF;
rommem[15511] <= 12'h026;
rommem[15512] <= 12'hFEF;
rommem[15513] <= 12'h1BC;
rommem[15514] <= 12'h000;
rommem[15515] <= 12'h926;
rommem[15516] <= 12'h025;
rommem[15517] <= 12'hFB2;
rommem[15518] <= 12'h017;
rommem[15519] <= 12'hFFD;
rommem[15520] <= 12'h431;
rommem[15521] <= 12'h016;
rommem[15522] <= 12'hFFF;
rommem[15523] <= 12'hC8A;
rommem[15524] <= 12'h0CE;
rommem[15525] <= 12'h000;
rommem[15526] <= 12'h008;
rommem[15527] <= 12'h017;
rommem[15528] <= 12'hFFF;
rommem[15529] <= 12'hDE5;
rommem[15530] <= 12'h0BE;
rommem[15531] <= 12'h000;
rommem[15532] <= 12'h922;
rommem[15533] <= 12'h017;
rommem[15534] <= 12'hFFF;
rommem[15535] <= 12'hD8C;
rommem[15536] <= 12'h017;
rommem[15537] <= 12'hFFF;
rommem[15538] <= 12'hDDC;
rommem[15539] <= 12'h05D;
rommem[15540] <= 12'h02B;
rommem[15541] <= 12'h00C;
rommem[15542] <= 12'h0F6;
rommem[15543] <= 12'h000;
rommem[15544] <= 12'h923;
rommem[15545] <= 12'h0E7;
rommem[15546] <= 12'h800;
rommem[15547] <= 12'h033;
rommem[15548] <= 12'h5FF;
rommem[15549] <= 12'h283;
rommem[15550] <= 12'h000;
rommem[15551] <= 12'h000;
rommem[15552] <= 12'h026;
rommem[15553] <= 12'hFEB;
rommem[15554] <= 12'h017;
rommem[15555] <= 12'hFFF;
rommem[15556] <= 12'hD6B;
rommem[15557] <= 12'h0C1;
rommem[15558] <= 12'h022;
rommem[15559] <= 12'h026;
rommem[15560] <= 12'h018;
rommem[15561] <= 12'h0CE;
rommem[15562] <= 12'h000;
rommem[15563] <= 12'h028;
rommem[15564] <= 12'h017;
rommem[15565] <= 12'hFFF;
rommem[15566] <= 12'hD61;
rommem[15567] <= 12'h0C1;
rommem[15568] <= 12'h022;
rommem[15569] <= 12'h026;
rommem[15570] <= 12'h005;
rommem[15571] <= 12'h0CE;
rommem[15572] <= 12'h000;
rommem[15573] <= 12'h008;
rommem[15574] <= 12'h020;
rommem[15575] <= 12'hFD5;
rommem[15576] <= 12'h0E7;
rommem[15577] <= 12'h800;
rommem[15578] <= 12'h033;
rommem[15579] <= 12'h5FF;
rommem[15580] <= 12'h283;
rommem[15581] <= 12'h000;
rommem[15582] <= 12'h000;
rommem[15583] <= 12'h022;
rommem[15584] <= 12'hFEB;
rommem[15585] <= 12'h016;
rommem[15586] <= 12'hFFF;
rommem[15587] <= 12'hC4A;
rommem[15588] <= 12'h0CC;
rommem[15589] <= 12'hFFF;
rommem[15590] <= 12'hC05;
rommem[15591] <= 12'h017;
rommem[15592] <= 12'hFFE;
rommem[15593] <= 12'h6CC;
rommem[15594] <= 12'h08D;
rommem[15595] <= 12'hF57;
rommem[15596] <= 12'h0FC;
rommem[15597] <= 12'h000;
rommem[15598] <= 12'h900;
rommem[15599] <= 12'h08D;
rommem[15600] <= 12'hF4E;
rommem[15601] <= 12'h08D;
rommem[15602] <= 12'hF50;
rommem[15603] <= 12'h0FC;
rommem[15604] <= 12'h000;
rommem[15605] <= 12'h902;
rommem[15606] <= 12'h08D;
rommem[15607] <= 12'hF47;
rommem[15608] <= 12'h08D;
rommem[15609] <= 12'hF49;
rommem[15610] <= 12'h0FC;
rommem[15611] <= 12'h000;
rommem[15612] <= 12'h904;
rommem[15613] <= 12'h08D;
rommem[15614] <= 12'hF40;
rommem[15615] <= 12'h08D;
rommem[15616] <= 12'hF42;
rommem[15617] <= 12'h0FC;
rommem[15618] <= 12'h000;
rommem[15619] <= 12'h906;
rommem[15620] <= 12'h08D;
rommem[15621] <= 12'hF39;
rommem[15622] <= 12'h08D;
rommem[15623] <= 12'hF3B;
rommem[15624] <= 12'h0FC;
rommem[15625] <= 12'h000;
rommem[15626] <= 12'h908;
rommem[15627] <= 12'h08D;
rommem[15628] <= 12'hF32;
rommem[15629] <= 12'h08D;
rommem[15630] <= 12'hF34;
rommem[15631] <= 12'h0F6;
rommem[15632] <= 12'h000;
rommem[15633] <= 12'h90B;
rommem[15634] <= 12'h017;
rommem[15635] <= 12'hFFE;
rommem[15636] <= 12'h6F5;
rommem[15637] <= 12'h0FC;
rommem[15638] <= 12'h000;
rommem[15639] <= 12'h90C;
rommem[15640] <= 12'h08D;
rommem[15641] <= 12'hF25;
rommem[15642] <= 12'h08D;
rommem[15643] <= 12'hF27;
rommem[15644] <= 12'h0FC;
rommem[15645] <= 12'h000;
rommem[15646] <= 12'h90E;
rommem[15647] <= 12'h0BD;
rommem[15648] <= 12'hFFD;
rommem[15649] <= 12'h2CE;
rommem[15650] <= 12'h08D;
rommem[15651] <= 12'hF1F;
rommem[15652] <= 12'h0B6;
rommem[15653] <= 12'h000;
rommem[15654] <= 12'h90F;
rommem[15655] <= 12'h017;
rommem[15656] <= 12'hFFD;
rommem[15657] <= 12'h5A4;
rommem[15658] <= 12'h08D;
rommem[15659] <= 12'hF17;
rommem[15660] <= 12'h016;
rommem[15661] <= 12'hFFF;
rommem[15662] <= 12'hBFF;
rommem[15663] <= 12'h08D;
rommem[15664] <= 12'hD5E;
rommem[15665] <= 12'h01A;
rommem[15666] <= 12'h010;
rommem[15667] <= 12'h1FE;
rommem[15668] <= 12'h000;
rommem[15669] <= 12'h908;
rommem[15670] <= 12'h0CC;
rommem[15671] <= 12'hFFF;
rommem[15672] <= 12'hD6A;
rommem[15673] <= 12'h034;
rommem[15674] <= 12'h006;
rommem[15675] <= 12'h0C6;
rommem[15676] <= 12'h000;
rommem[15677] <= 12'h034;
rommem[15678] <= 12'h004;
rommem[15679] <= 12'h0FC;
rommem[15680] <= 12'h000;
rommem[15681] <= 12'h912;
rommem[15682] <= 12'h034;
rommem[15683] <= 12'h006;
rommem[15684] <= 12'h0F6;
rommem[15685] <= 12'h000;
rommem[15686] <= 12'h911;
rommem[15687] <= 12'h034;
rommem[15688] <= 12'h004;
rommem[15689] <= 12'h0FC;
rommem[15690] <= 12'h000;
rommem[15691] <= 12'h906;
rommem[15692] <= 12'h034;
rommem[15693] <= 12'h006;
rommem[15694] <= 12'h0FC;
rommem[15695] <= 12'h000;
rommem[15696] <= 12'h904;
rommem[15697] <= 12'h034;
rommem[15698] <= 12'h006;
rommem[15699] <= 12'h0FC;
rommem[15700] <= 12'h000;
rommem[15701] <= 12'h902;
rommem[15702] <= 12'h034;
rommem[15703] <= 12'h006;
rommem[15704] <= 12'h0B6;
rommem[15705] <= 12'h000;
rommem[15706] <= 12'h90E;
rommem[15707] <= 12'h034;
rommem[15708] <= 12'h002;
rommem[15709] <= 12'h0FC;
rommem[15710] <= 12'h000;
rommem[15711] <= 12'h900;
rommem[15712] <= 12'h034;
rommem[15713] <= 12'h006;
rommem[15714] <= 12'h0B6;
rommem[15715] <= 12'h000;
rommem[15716] <= 12'h90F;
rommem[15717] <= 12'h034;
rommem[15718] <= 12'h002;
rommem[15719] <= 12'h015;
rommem[15720] <= 12'h035;
rommem[15721] <= 12'h0FF;
rommem[15722] <= 12'h1FF;
rommem[15723] <= 12'h000;
rommem[15724] <= 12'h908;
rommem[15725] <= 12'h032;
rommem[15726] <= 12'h80F;
rommem[15727] <= 12'h006;
rommem[15728] <= 12'hFFF;
rommem[15729] <= 12'h034;
rommem[15730] <= 12'h001;
rommem[15731] <= 12'h034;
rommem[15732] <= 12'h002;
rommem[15733] <= 12'h01F;
rommem[15734] <= 12'h0B8;
rommem[15735] <= 12'h0B7;
rommem[15736] <= 12'h000;
rommem[15737] <= 12'h90E;
rommem[15738] <= 12'h04F;
rommem[15739] <= 12'h01F;
rommem[15740] <= 12'h08B;
rommem[15741] <= 12'h035;
rommem[15742] <= 12'h002;
rommem[15743] <= 12'h0FD;
rommem[15744] <= 12'h000;
rommem[15745] <= 12'h900;
rommem[15746] <= 12'h0BF;
rommem[15747] <= 12'h000;
rommem[15748] <= 12'h902;
rommem[15749] <= 12'h1BF;
rommem[15750] <= 12'h000;
rommem[15751] <= 12'h904;
rommem[15752] <= 12'h0FF;
rommem[15753] <= 12'h000;
rommem[15754] <= 12'h906;
rommem[15755] <= 12'h035;
rommem[15756] <= 12'h002;
rommem[15757] <= 12'h0B7;
rommem[15758] <= 12'h000;
rommem[15759] <= 12'h90F;
rommem[15760] <= 12'h0CC;
rommem[15761] <= 12'hFFE;
rommem[15762] <= 12'hBE4;
rommem[15763] <= 12'h0FD;
rommem[15764] <= 12'h000;
rommem[15765] <= 12'h804;
rommem[15766] <= 12'h0CC;
rommem[15767] <= 12'hFFE;
rommem[15768] <= 12'h2F5;
rommem[15769] <= 12'h0FD;
rommem[15770] <= 12'h000;
rommem[15771] <= 12'h800;
rommem[15772] <= 12'h0FC;
rommem[15773] <= 12'hFFF;
rommem[15774] <= 12'hAF5;
rommem[15775] <= 12'h0FD;
rommem[15776] <= 12'h000;
rommem[15777] <= 12'h80C;
rommem[15778] <= 12'h016;
rommem[15779] <= 12'hFFF;
rommem[15780] <= 12'hF3F;
rommem[15781] <= 12'h08E;
rommem[15782] <= 12'h000;
rommem[15783] <= 12'h000;
rommem[15784] <= 12'h0E6;
rommem[15785] <= 12'h80A;
rommem[15786] <= 12'h000;
rommem[15787] <= 12'hFF0;
rommem[15788] <= 12'h000;
rommem[15789] <= 12'h0C1;
rommem[15790] <= 12'h018;
rommem[15791] <= 12'h026;
rommem[15792] <= 12'h00A;
rommem[15793] <= 12'h01F;
rommem[15794] <= 12'h010;
rommem[15795] <= 12'h017;
rommem[15796] <= 12'hFFE;
rommem[15797] <= 12'h654;
rommem[15798] <= 12'h0C6;
rommem[15799] <= 12'h020;
rommem[15800] <= 12'h017;
rommem[15801] <= 12'hFFE;
rommem[15802] <= 12'hF57;
rommem[15803] <= 12'h030;
rommem[15804] <= 12'h001;
rommem[15805] <= 12'h08C;
rommem[15806] <= 12'h000;
rommem[15807] <= 12'h010;
rommem[15808] <= 12'h025;
rommem[15809] <= 12'hFE6;
rommem[15810] <= 12'h017;
rommem[15811] <= 12'hFFD;
rommem[15812] <= 12'h30D;
rommem[15813] <= 12'h016;
rommem[15814] <= 12'hFFF;
rommem[15815] <= 12'hB66;
rommem[15816] <= 12'h01A;
rommem[15817] <= 12'h010;
rommem[15818] <= 12'h035;
rommem[15819] <= 12'h002;
rommem[15820] <= 12'h0B7;
rommem[15821] <= 12'h000;
rommem[15822] <= 12'h90F;
rommem[15823] <= 12'h035;
rommem[15824] <= 12'h07E;
rommem[15825] <= 12'h0FD;
rommem[15826] <= 12'h000;
rommem[15827] <= 12'h900;
rommem[15828] <= 12'h0BF;
rommem[15829] <= 12'h000;
rommem[15830] <= 12'h902;
rommem[15831] <= 12'h1BF;
rommem[15832] <= 12'h000;
rommem[15833] <= 12'h904;
rommem[15834] <= 12'h0FF;
rommem[15835] <= 12'h000;
rommem[15836] <= 12'h906;
rommem[15837] <= 12'h01F;
rommem[15838] <= 12'h0B8;
rommem[15839] <= 12'h0B7;
rommem[15840] <= 12'h000;
rommem[15841] <= 12'h90E;
rommem[15842] <= 12'h035;
rommem[15843] <= 12'h002;
rommem[15844] <= 12'h0B7;
rommem[15845] <= 12'h000;
rommem[15846] <= 12'h90A;
rommem[15847] <= 12'h035;
rommem[15848] <= 12'h006;
rommem[15849] <= 12'h0FD;
rommem[15850] <= 12'h000;
rommem[15851] <= 12'h90B;
rommem[15852] <= 12'h1FF;
rommem[15853] <= 12'h000;
rommem[15854] <= 12'h908;
rommem[15855] <= 12'h1CE;
rommem[15856] <= 12'h003;
rommem[15857] <= 12'hFFF;
rommem[15858] <= 12'h01C;
rommem[15859] <= 12'h0EF;
rommem[15860] <= 12'h07E;
rommem[15861] <= 12'hFFF;
rommem[15862] <= 12'hCE4;
rommem[15863] <= 12'h01A;
rommem[15864] <= 12'h010;
rommem[15865] <= 12'h1FE;
rommem[15866] <= 12'h000;
rommem[15867] <= 12'h908;
rommem[15868] <= 12'h0FC;
rommem[15869] <= 12'h000;
rommem[15870] <= 12'h90B;
rommem[15871] <= 12'h034;
rommem[15872] <= 12'h006;
rommem[15873] <= 12'h0B6;
rommem[15874] <= 12'h000;
rommem[15875] <= 12'h90A;
rommem[15876] <= 12'h034;
rommem[15877] <= 12'h002;
rommem[15878] <= 12'h0FE;
rommem[15879] <= 12'h000;
rommem[15880] <= 12'h906;
rommem[15881] <= 12'h1BE;
rommem[15882] <= 12'h000;
rommem[15883] <= 12'h904;
rommem[15884] <= 12'h0BE;
rommem[15885] <= 12'h000;
rommem[15886] <= 12'h902;
rommem[15887] <= 12'h034;
rommem[15888] <= 12'h070;
rommem[15889] <= 12'h0B6;
rommem[15890] <= 12'h000;
rommem[15891] <= 12'h90E;
rommem[15892] <= 12'h034;
rommem[15893] <= 12'h002;
rommem[15894] <= 12'h0FC;
rommem[15895] <= 12'h000;
rommem[15896] <= 12'h900;
rommem[15897] <= 12'h034;
rommem[15898] <= 12'h006;
rommem[15899] <= 12'h0B6;
rommem[15900] <= 12'h000;
rommem[15901] <= 12'h90F;
rommem[15902] <= 12'h034;
rommem[15903] <= 12'h002;
rommem[15904] <= 12'h01F;
rommem[15905] <= 12'h08A;
rommem[15906] <= 12'h01C;
rommem[15907] <= 12'h0EF;
rommem[15908] <= 12'h03B;
rommem[15909] <= 12'h03B;
rommem[15910] <= 12'h086;
rommem[15911] <= 12'h01F;
rommem[15912] <= 12'h0B7;
rommem[15913] <= 12'hFF0;
rommem[15914] <= 12'h011;
rommem[15915] <= 12'h015;
rommem[15916] <= 12'h0B7;
rommem[15917] <= 12'hFFF;
rommem[15918] <= 12'hE3F;
rommem[15919] <= 12'h010;
rommem[15920] <= 12'h015;
rommem[15921] <= 12'h0B6;
rommem[15922] <= 12'hFFF;
rommem[15923] <= 12'hE60;
rommem[15924] <= 12'h00D;
rommem[15925] <= 12'h02A;
rommem[15926] <= 12'h011;
rommem[15927] <= 12'h085;
rommem[15928] <= 12'h800;
rommem[15929] <= 12'h027;
rommem[15930] <= 12'h00D;
rommem[15931] <= 12'h015;
rommem[15932] <= 12'h07F;
rommem[15933] <= 12'hFFF;
rommem[15934] <= 12'hE60;
rommem[15935] <= 12'h012;
rommem[15936] <= 12'h015;
rommem[15937] <= 12'h07F;
rommem[15938] <= 12'hFFF;
rommem[15939] <= 12'hE60;
rommem[15940] <= 12'h013;
rommem[15941] <= 12'h07C;
rommem[15942] <= 12'hE00;
rommem[15943] <= 12'h037;
rommem[15944] <= 12'h0B6;
rommem[15945] <= 12'hFF0;
rommem[15946] <= 12'h014;
rommem[15947] <= 12'h044;
rommem[15948] <= 12'h0BA;
rommem[15949] <= 12'hFF0;
rommem[15950] <= 12'h014;
rommem[15951] <= 12'h084;
rommem[15952] <= 12'h0E0;
rommem[15953] <= 12'h0B7;
rommem[15954] <= 12'hFF0;
rommem[15955] <= 12'h014;
rommem[15956] <= 12'h03B;
rommem[15957] <= 12'h015;
rommem[15958] <= 12'h0F6;
rommem[15959] <= 12'hFFF;
rommem[15960] <= 12'hFFF;
rommem[15961] <= 12'hFE0;
rommem[15962] <= 12'h086;
rommem[15963] <= 12'h049;
rommem[15964] <= 12'h08E;
rommem[15965] <= 12'hE00;
rommem[15966] <= 12'h028;
rommem[15967] <= 12'h0A7;
rommem[15968] <= 12'h88F;
rommem[15969] <= 12'h03B;
rommem[13681] <= 12'hFFF;
rommem[13682] <= 12'hFE0;
rommem[13683] <= 12'h086;
rommem[13684] <= 12'h049;
rommem[13685] <= 12'h08E;
rommem[13686] <= 12'hE00;
rommem[13687] <= 12'h028;
rommem[13688] <= 12'h0A7;
rommem[13689] <= 12'h807;
rommem[13690] <= 12'h03B;
rommem[16368] <= 12'hFFF;
rommem[16369] <= 12'hE61;
rommem[16369] <= 12'h57A;
rommem[16370] <= 12'hFFF;
rommem[16371] <= 12'hDC8;
rommem[16371] <= 12'h521;
rommem[16372] <= 12'hFFF;
rommem[16373] <= 12'hE61;
rommem[16373] <= 12'h57A;
rommem[16374] <= 12'hFFF;
rommem[16375] <= 12'hE25;
rommem[16375] <= 12'h55D;
rommem[16376] <= 12'hFFF;
rommem[16377] <= 12'hE26;
rommem[16378] <= 12'hFFE;
rommem[16379] <= 12'h023;
rommem[16377] <= 12'h55E;
rommem[16378] <= 12'hFFF;
rommem[16379] <= 12'h3D1;
rommem[16380] <= 12'hFFF;
rommem[16381] <= 12'hE55;
rommem[16381] <= 12'h56E;
rommem[16382] <= 12'hFFE;
rommem[16383] <= 12'h023;
/rf6809/trunk/software/boot/demo.asm
0,0 → 1,95
 
OPT include "d:\cores2022\rf6809\software\boot\mon_equates.asm"
OPT include "d:\cores2022\rf6809\software\boot\io_equates.asm"
 
sprite_xpos EQU $1000
sprite_ypos EQU $1020
sprite_dx EQU $1040
sprite_dy EQU $1080
 
org $FF8000
lbra sprite_demo
lbra disassem
 
;==============================================================================
; Disassembler
;==============================================================================
 
OPT include "d:\cores2022\rf6809\software\boot\disassem.asm"
 
;==============================================================================
; Sprite Demo
;==============================================================================
sprite_demo:
ldb #1
tfr b,dpr
setdp 1
ldd #-1 ; show them all
tfr d,x
swi
fcb MF_ShowSprites
ldy #0
sprite_demo1:
; Assign random positions
swi
fcb MF_Random
andb #$1FF
clra
addd #200
std SPRITE_CTRL+0,y ; hpos
tfr x,d
andb #$FF
clra
addd #64
std SPRITE_CTRL+1,y ; vpos
leay 8,y
cmpy #$100
blo sprite_demo1
; turn on sprite DMA
ldd #-1
std SPRITE_CTRL+$3D0
std SPRITE_CTRL+$3D2
ldy #0
sprite_demo2:
swi
fcb MF_Random
andb #$15
subb #8
stb sprite_dx,y
anda #15
suba #8
sta sprite_dx,y
iny
cmpy #32
blo sprite_demo2
ldy #300000
sprite_demo3:
dey
bne sprite_demo3
ldx #0
ldy #0
sprite_demo4:
lda SPRITE_CTRL+0,x
adda sprite_dx,y
sta SPRITE_CTRL+0,x
lda SPRITE_CTRL+1,x
adda sprite_dy,y
sta SPRITE_CTRL+1,x
leax 8,x
iny
cmpy #32
blo sprite_demo4
clra
clrb
swi
fcb MF_INCH
cmpb #CTRLC
bne sprite_demo3
ldd #0
tfr d,x
swi
fcb MF_ShowSprites
sprite_demo5:
swi
fcb MF_Monitor
bra sprite_demo5
/rf6809/trunk/software/boot/disassem.asm
34,6 → 34,11
;
; ============================================================================
;
farflag EQU $15F
asmbuf EQU $160 ; to $17F
CharOutVec EQU $800
CharInVec EQU $804
 
; Disassembler
;
;
425,14 → 430,18
 
disassem:
clr farflag
lbsr GetRange
lbsr CRLF
swi
fcb MF_GetRange
swi
fcb MF_CRLF
ldy mon_r1+2
disLoop1:
tfr y,d
lbsr DispWordAsHex
swi
fcb MF_DisplayWordAsHex
ldb #' '
lbsr OUTCH
swi
fcb MF_OUTCH
ldb ,y+
bitb #$300
lbne dis1
448,21 → 457,27
mul
abx
ldb ,x+
lbsr OUTCH
swi
fcb MF_OUTCH
ldb ,x+
lbsr OUTCH
swi
fcb MF_OUTCH
ldb ,x+
lbsr OUTCH
swi
fcb MF_OUTCH
ldb ,x+
lbsr OUTCH
swi
fcb MF_OUTCH
ldb #' '
lbsr OUTCH
swi
fcb MF_OUTCH
ldb ,x+
lbeq disNextLine
cmpb #DIRECT
bne disNotDirect
ldb ,y+
lbsr DispByteAsHex
swi
fcb MF_DisplayByteAsHex
lbra disNextLine
disNotDirect:
cmpb #LSREL
472,7 → 487,8
dis2:
leax d,y
tfr x,d
lbsr DispWordAsHex
swi
fcb MF_DisplayWordAsHex
lbra disNextLine
disNotLRel:
cmpb #SREL
494,12 → 510,15
deca ; sign extend offset
orb #$E00
dis3:
lbsr DispWordAsHex
swi
fcb MF_DisplayWordAsHex
ldb #','
lbsr OUTCH
swi
fcb MF_OUTCH
puls b
bsr disNdxReg
lbsr OUTCH
swi
fcb MF_OUTCH
lbra disNextLine
disNot9:
pshs b
506,7 → 525,8
bitb #$100 ; check if indirect
beq dis4
ldb #'['
lbsr OUTCH
swi
fcb MF_OUTCH
dis4:
ldb ,s ; get back b
andb #15
515,15 → 535,19
bitb #$80 ; outer indexed?
beq dis5
ldb #']'
lbsr OUTCH
swi
fcb MF_OUTCH
dis5:
ldb #','
lbsr OUTCH
swi
fcb MF_OUTCH
ldb ,s
bsr disNdxReg
lbsr OUTCH
swi
fcb MF_OUTCH
ldb #'+'
lbsr OUTCH
swi
fcb MF_OUTCH
puls b
bitb #$100
lbeq disNextLine
530,7 → 554,8
bitb #$80
lbne disNextLine
ldb #']'
lbsr OUTCH
swi
fcb MF_OUTCH
lbra disNextLine
disNotRplus:
cmpb #1
539,16 → 564,21
bitb #$80 ; outer indexed?
beq dis6
ldb #']'
lbsr OUTCH
swi
fcb MF_OUTCH
dis6:
ldb #','
lbsr OUTCH
swi
fcb MF_OUTCH
ldb ,s
bsr disNdxReg
lbsr OUTCH
swi
fcb MF_OUTCH
ldb #'+'
lbsr OUTCH
lbsr OUTCH
swi
fcb MF_OUTCH
swi
fcb MF_OUTCH
puls b
bitb #$100
lbeq disNextLine
555,7 → 585,8
bitb #$80
lbne disNextLine
ldb #']'
lbsr OUTCH
swi
fcb MF_OUTCH
lbra disNextLine
disNotRplusplus:
cmpb #2
564,15 → 595,19
bitb #$80 ; outer indexed?
beq dis7
ldb #']'
lbsr OUTCH
swi
fcb MF_OUTCH
dis7:
ldb #','
lbsr OUTCH
swi
fcb MF_OUTCH
ldb ,s
bsr disNdxReg
lbsr OUTCH
swi
fcb MF_OUTCH
ldb #'-'
lbsr OUTCH
swi
fcb MF_OUTCH
puls b
bitb #$100
lbeq disNextLine
579,7 → 614,8
bitb #$80
lbne disNextLine
ldb #']'
lbsr OUTCH
swi
fcb MF_OUTCH
lbra disNextLine
disNotRminus:
cmpb #3
588,16 → 624,21
bitb #$80 ; outer indexed?
beq dis8
ldb #']'
lbsr OUTCH
swi
fcb MF_OUTCH
dis8:
ldb #','
lbsr OUTCH
swi
fcb MF_OUTCH
ldb ,s
bsr disNdxReg
lbsr OUTCH
swi
fcb MF_OUTCH
ldb #'-'
lbsr OUTCH
lbsr OUTCH
swi
fcb MF_OUTCH
swi
fcb MF_OUTCH
puls b
bitb #$100
lbeq disNextLine
604,7 → 645,8
bitb #$80
lbne disNextLine
ldb #']'
lbsr OUTCH
swi
fcb MF_OUTCH
lbra disNextLine
disNotRminusminus:
cmpb #4
613,13 → 655,16
bitb #$80 ; outer indexed?
beq dis9
ldb #']'
lbsr OUTCH
swi
fcb MF_OUTCH
dis9:
ldb #','
lbsr OUTCH
swi
fcb MF_OUTCH
ldb ,s
bsr disNdxReg
lbsr OUTCH
swi
fcb MF_OUTCH
puls b
bitb #$100
lbeq disNextLine
626,27 → 671,34
bitb #$80
lbne disNextLine
ldb #']'
lbsr OUTCH
swi
fcb MF_OUTCH
lbra disNextLine
disNotR:
cmpb #5
bne disNotBOffs
ldb #'B'
lbsr OUTCH
swi
fcb MF_OUTCH
ldb ,s
bitb #$80 ; outer indexed?
beq dis10
ldb #']'
lbsr OUTCH
swi
fcb MF_OUTCH
dis10:
ldb #','
lbsr OUTCH
swi
fcb MF_OUTCH
ldb ,s
bsr disNdxReg
lbsr OUTCH
swi
fcb MF_OUTCH
ldb #'-'
lbsr OUTCH
lbsr OUTCH
swi
fcb MF_OUTCH
swi
fcb MF_OUTCH
puls b
bitb #$100
lbeq disNextLine
653,27 → 705,34
bitb #$80
lbne disNextLine
ldb #']'
lbsr OUTCH
swi
fcb MF_OUTCH
lbra disNextLine
disNotBOffs:
cmpb #6
bne disNotAOffs
ldb #'A'
lbsr OUTCH
swi
fcb MF_OUTCH
ldb ,s
bitb #$80 ; outer indexed?
beq dis11
ldb #']'
lbsr OUTCH
swi
fcb MF_OUTCH
dis11:
ldb #','
lbsr OUTCH
swi
fcb MF_OUTCH
ldb ,s
bsr disNdxReg
lbsr OUTCH
swi
fcb MF_OUTCH
ldb #'-'
lbsr OUTCH
lbsr OUTCH
swi
fcb MF_OUTCH
swi
fcb MF_OUTCH
puls b
bitb #$100
lbeq disNextLine
680,7 → 739,8
bitb #$80
lbne disNextLine
ldb #']'
lbsr OUTCH
swi
fcb MF_OUTCH
lbra disNextLine
disNotAOffs:
cmpb #8
687,21 → 747,27
bne disNotBO
ldb ,y+
sex
lbsr DispWordAsHex
swi
fcb MF_DisplayWordAsHex
ldb ,s
bitb #$80 ; outer indexed?
beq dis12
ldb #']'
lbsr OUTCH
swi
fcb MF_OUTCH
dis12:
ldb #','
lbsr OUTCH
swi
fcb MF_OUTCH
ldb ,s
bsr disNdxReg
lbsr OUTCH
swi
fcb MF_OUTCH
ldb #'-'
lbsr OUTCH
lbsr OUTCH
swi
fcb MF_OUTCH
swi
fcb MF_OUTCH
puls b
bitb #$100
lbeq disNextLine
708,27 → 774,34
bitb #$80
lbne disNextLine
ldb #']'
lbsr OUTCH
swi
fcb MF_OUTCH
lbra disNextLine
disNotBO:
cmpb #9
bne disNotWO
ldd ,y++
lbsr DispWordAsHex
swi
fcb MF_DisplayWordAsHex
ldb ,s
bitb #$80 ; outer indexed?
beq dis13
ldb #']'
lbsr OUTCH
swi
fcb MF_OUTCH
dis13:
ldb #','
lbsr OUTCH
swi
fcb MF_OUTCH
ldb ,s
bsr disNdxReg
lbsr OUTCH
swi
fcb MF_OUTCH
ldb #'-'
lbsr OUTCH
lbsr OUTCH
swi
fcb MF_OUTCH
swi
fcb MF_OUTCH
puls b
bitb #$100
lbeq disNextLine
735,29 → 808,37
bitb #$80
lbne disNextLine
ldb #']'
lbsr OUTCH
swi
fcb MF_OUTCH
lbra disNextLine
disNotWO:
cmpb #10
bne disNotTO
ldb ,y++
lbsr DispByteAsHex
swi
fcb MF_DisplayByteAsHex
ldd ,y++
lbsr DispWordAsHex
swi
fcb MF_DisplayWordAsHex
ldb ,s
bitb #$80 ; outer indexed?
beq dis14
ldb #']'
lbsr OUTCH
swi
fcb MF_OUTCH
dis14:
ldb #','
lbsr OUTCH
swi
fcb MF_OUTCH
ldb ,s
bsr disNdxReg
lbsr OUTCH
swi
fcb MF_OUTCH
ldb #'-'
lbsr OUTCH
lbsr OUTCH
swi
fcb MF_OUTCH
swi
fcb MF_OUTCH
puls b
bitb #$100
lbeq disNextLine
764,27 → 845,34
bitb #$80
lbne disNextLine
ldb #']'
lbsr OUTCH
swi
fcb MF_OUTCH
lbra disNextLine
disNotTO:
cmpb #11
bne disNotDOffs
ldb #'D'
lbsr OUTCH
swi
fcb MF_OUTCH
ldb ,s
bitb #$80 ; outer indexed?
beq dis15
ldb #']'
lbsr OUTCH
swi
fcb MF_OUTCH
dis15:
ldb #','
lbsr OUTCH
swi
fcb MF_OUTCH
ldb ,s
bsr disNdxReg
lbsr OUTCH
swi
fcb MF_OUTCH
ldb #'-'
lbsr OUTCH
lbsr OUTCH
swi
fcb MF_OUTCH
swi
fcb MF_OUTCH
puls b
bitb #$100
lbeq disNextLine
791,7 → 879,8
bitb #$80
lbne disNextLine
ldb #']'
lbsr OUTCH
swi
fcb MF_OUTCH
lbra disNextLine
disNotDOffs:
cmpb #12
798,24 → 887,31
bne disNotPBO
ldb ,y+
sex
lbsr DispWordAsHex
swi
fcb MF_DisplayWordAsHex
ldb ,s
bitb #$80 ; outer indexed?
beq dis16
ldb #']'
lbsr OUTCH
swi
fcb MF_OUTCH
dis16:
ldb #','
lbsr OUTCH
swi
fcb MF_OUTCH
ldb ,s
bsr disNdxReg
ldb #'P'
lbsr OUTCH
swi
fcb MF_OUTCH
ldb #'C'
lbsr OUTCH
swi
fcb MF_OUTCH
ldb #'-'
lbsr OUTCH
lbsr OUTCH
swi
fcb MF_OUTCH
swi
fcb MF_OUTCH
puls b
bitb #$100
lbeq disNextLine
822,30 → 918,38
bitb #$80
lbne disNextLine
ldb #']'
lbsr OUTCH
swi
fcb MF_OUTCH
lbra disNextLine
disNotPBO:
cmpb #13
bne disNotPWO
ldd ,y++
lbsr DispWordAsHex
swi
fcb MF_DisplayWordAsHex
ldb ,s
bitb #$80 ; outer indexed?
beq dis17
ldb #']'
lbsr OUTCH
swi
fcb MF_OUTCH
dis17:
ldb #','
lbsr OUTCH
swi
fcb MF_OUTCH
ldb ,s
bsr disNdxReg
ldb #'P'
lbsr OUTCH
swi
fcb MF_OUTCH
ldb #'C'
lbsr OUTCH
swi
fcb MF_OUTCH
ldb #'-'
lbsr OUTCH
lbsr OUTCH
swi
fcb MF_OUTCH
swi
fcb MF_OUTCH
puls b
bitb #$100
lbeq disNextLine
852,32 → 956,41
bitb #$80
lbne disNextLine
ldb #']'
lbsr OUTCH
swi
fcb MF_OUTCH
lbra disNextLine
disNotPWO:
cmpb #14
bne disNotPTO
ldb ,y+
lbsr DispByteAsHex
swi
fcb MF_DisplayByteAsHex
ldd ,y++
lbsr DispWordAsHex
swi
fcb MF_DisplayWordAsHex
ldb ,s
bitb #$80 ; outer indexed?
beq dis18
ldb #']'
lbsr OUTCH
swi
fcb MF_OUTCH
dis18:
ldb #','
lbsr OUTCH
swi
fcb MF_OUTCH
ldb ,s
bsr disNdxReg
ldb #'P'
lbsr OUTCH
swi
fcb MF_OUTCH
ldb #'C'
lbsr OUTCH
swi
fcb MF_OUTCH
ldb #'-'
lbsr OUTCH
lbsr OUTCH
swi
fcb MF_OUTCH
swi
fcb MF_OUTCH
puls b
bitb #$100
lbeq disNextLine
884,15 → 997,19
bitb #$80
lbne disNextLine
ldb #']'
lbsr OUTCH
swi
fcb MF_OUTCH
lbra disNextLine
disNotPTO:
ldb #'['
lbsr OUTCH
swi
fcb MF_OUTCH
ldd ,y++
lbsr DispWordAsHex
swi
fcb MF_DisplayWordAsHex
ldb #']'
lbsr OUTCH
swi
fcb MF_OUTCH
lbra disNextLine
disNotNdx:
cmpb #EXT
900,10 → 1017,12
tst farflag
beq dis30
ldb ,y++
lbsr DispByteAsHex
swi
fcb MF_DisplayByteAsHex
dis30:
ldd ,y++
lbsr DispWordAsHex
swi
fcb MF_DisplayWordAsHex
clr farflag
lbra disNextLine
disNotExt:
910,17 → 1029,21
cmpb #IMMB
bne disNotIMMB
ldb #'#'
lbsr OUTCH
swi
fcb MF_OUTCH
ldb ,y+
lbsr DispByteAsHex
swi
fcb MF_DisplayByteAsHex
lbra disNextLine
disNotIMMB:
cmpb #IMMW
bne disNotIMMW
ldb #'#'
lbsr OUTCH
swi
fcb MF_OUTCH
ldd ,y++
lbsr DispWordAsHex
swi
fcb MF_DisplayWordAsHex
bra disNextLine
disNotIMMW:
cmpb #TFREXG
940,15 → 1063,20
aslb
abx
ldb ,x+
lbsr OUTCH
swi
fcb MF_OUTCH
ldb ,x+
lbsr OUTCH
swi
fcb MF_OUTCH
ldb ,x+
lbsr OUTCH
swi
fcb MF_OUTCH
ldb ,x+
lbsr OUTCH
swi
fcb MF_OUTCH
ldb #' '
lbsr OUTCH
swi
fcb MF_OUTCH
lbra dis21
dis19:
ldx #0
962,17 → 1090,25
cmpx #31
blo dis24
ldb #'?'
lbsr OUTCH
lbsr OUTCH
lbsr OUTCH
lbsr OUTCH
swi
fcb MF_OUTCH
swi
fcb MF_OUTCH
swi
fcb MF_OUTCH
swi
fcb MF_OUTCH
bra disNextLine
disNextLine:
clr farflag
lbsr CRLF
swi
fcb MF_CRLF
cmpy mon_r2+2
lblo disLoop1
lbra Monitor
disJmpMon:
swi
fcb MF_Monitor
bra disJmpMon
 
disNdxRegs:
fcb 'X','Y','S','U'
999,13 → 1135,15
aslb
lda b,x
exg a,b
lbsr OUTCH
swi
fcb MF_OUTCH
exg a,b
inx
ldb b,x
cmpb #' '
beq disTfr1
lbsr OUTCH
swi
fcb MF_OUTCH
disTfr1:
puls b,x,pc
1018,7 → 1156,8
andb #15
bsr disTfrReg
ldb #','
lbsr OUTCH
swi
fcb MF_OUTCH
ldb ,s
andb #15
bsr disTfrReg
1032,7 → 1171,7
 
ASMOO:
pshs d
ldd #DisplayChar
'' ldd #DisplayChar
std CharOutVec
puls d,pc
 
1045,7 → 1184,8
dab2:
ldb ,u+
beq dab1
lbsr OUTCH
swi
fcb MF_OUTCH
bra dab2
dab1:
rts
/rf6809/trunk/software/boot/i2c.asm
57,7 → 57,7
; Returns: none
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 
_i2c_init:
i2c_init:
pshs b
ldb #4 ; setup prescale for 400kHz clock
stb I2C_PREL,x
103,7 → 103,7
; Stack space: 2 words
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 
_i2c_xmit1:
i2c_xmit1:
pshs d ; save data value
pshs d ; and save it again
ldb #1
/rf6809/trunk/software/boot/io_equates.asm
0,0 → 1,75
; ============================================================================
; __
; \\__/ o\ (C) S2022 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.
;
; ============================================================================
 
COREID EQU $FFFFFFFE0
MSCOUNT EQU $FFFFFFFE4
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 $FFFE07F00
TEXT_COLS EQU 0
TEXT_ROWS EQU 1
TEXT_CURPOS EQU 34
COLS EQU 64
ROWS EQU 32
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
PRNG EQU $FFFE30600
KEYBD EQU $FFFE30400
KEYBDCLR EQU $FFFE30402
PIC EQU $FFFE3F000
SPRITE_CTRL EQU $FFFE10000
SPRITE_EN EQU $3C0
 
OUTSEMA EQU $EF0000
SEMAABS EQU $1000
OSSEMA EQU $EF0010
/rf6809/trunk/software/boot/keyboard.asm
427,6 → 427,7
bne dbgk1 ; branch if something in buffer
tstb
bmi dbgk2 ; if no key and blocking - loop
bra dbgk24
dbgk20:
ldy #0
bsr KeybdGetStatus
435,8 → 436,9
bne dbgk1 ; branch if key
tstb ; block?
bmi dbgk2 ; If no key and blocking - loop
dbgk24:
ldd #-1 ; return -1 if no block and no key
puls x,pc
puls x,y,pc
dbgk1:
cmpy #0
bne dbgk22
/rf6809/trunk/software/boot/mon_equates.asm
0,0 → 1,73
; ============================================================================
; __
; \\__/ 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.
;
; ============================================================================
;
CR EQU $0D ;ASCII equates
LF EQU $0A
TAB EQU $09
CTRLC EQU $03
CTRLH EQU $08
CTRLI EQU $09
CTRLJ EQU $0A
CTRLK EQU $0B
CTRLM EQU $0D
CTRLS EQU $13
CTRLT EQU $14
CTRLX EQU $18
XON EQU $11
XOFF EQU $13
 
FIRST_CORE EQU 1
MAX_TASKNO EQU 63
DRAM_BASE EQU $10000000
 
; ROM monitor functions
;
MF_Monitor EQU 0
MF_INCH EQU 1
MF_OUTCH EQU 2
MF_CRLF EQU 3
MF_DisplayString EQU 4
MF_DisplayByteAsHex EQU 5
MF_DisplayWordAsHex EQU 6
MF_ShowSprites EQU 7
MF_Srand EQU 8
MF_Random EQU 9
MF_OSCALL EQU 10
MF_GetRange EQU 11
 
mon_numwka EQU $910
mon_r1 EQU $920
mon_r2 EQU $924

powered by: WebSVN 2.1.0

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