整理代码
This commit is contained in:
@@ -589,7 +589,7 @@ static void FILDER_Enter(WIN_FilderStruct *filder, int x, int y)
|
||||
// <20>ļ<EFBFBD><C4BC><EFBFBD>Ϣ
|
||||
char *txt_buff = mymalloc(512);
|
||||
FILDER_GetFileRoute(filder);
|
||||
sprintf(txt_buff, "·<EFBFBD><EFBFBD><EFBFBD><EFBFBD>%s\n<EFBFBD><EFBFBD>С<EFBFBD><EFBFBD>%lld Byte", filder->fileName, filder->file[filder->index].size);
|
||||
sprintf(txt_buff, "·<EFBFBD><EFBFBD><EFBFBD><EFBFBD>%s\n<EFBFBD><EFBFBD>С<EFBFBD><EFBFBD>%u Byte", filder->fileName, (uint32_t)filder->file[filder->index].size);
|
||||
MSGBOX_Tips((WIN_WindowStruct *)filder, "<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>Ϣ", txt_buff, "ȷ<EFBFBD><EFBFBD>");
|
||||
myfree(txt_buff);
|
||||
}
|
||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -92,7 +92,6 @@ cpu6502_init:
|
||||
|
||||
.type map67_, %function
|
||||
map67_: // rom paging.. r0=page#
|
||||
// ----------------------------------------------------------------------------
|
||||
ldr r1,[globalptr,#rommask]
|
||||
and r0,r1,r0,lsl#13
|
||||
ldr r1,[globalptr,#rombase]
|
||||
@@ -103,7 +102,6 @@ map67_: // rom paging.. r0=page#
|
||||
|
||||
.type map89_, %function
|
||||
map89_: // rom paging.. r0=page# ROM<EFBFBD><EFBFBD>ҳ
|
||||
// ----------------------------------------------------------------------------
|
||||
ldr r1,[globalptr,#rombase] // rom<EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD>ַ
|
||||
sub r1,r1,#0x8000
|
||||
ldr r2,[globalptr,#rommask]
|
||||
@@ -114,7 +112,6 @@ map89_: // rom paging.. r0=page# ROM
|
||||
|
||||
.type mapAB_, %function
|
||||
mapAB_:
|
||||
// ----------------------------------------------------------------------------
|
||||
ldr r1,[globalptr,#rombase]
|
||||
sub r1,r1,#0xa000
|
||||
ldr r2,[globalptr,#rommask]
|
||||
@@ -125,7 +122,6 @@ mapAB_:
|
||||
|
||||
.type mapCD_, %function
|
||||
mapCD_:
|
||||
// ----------------------------------------------------------------------------
|
||||
ldr r1,[globalptr,#rombase]
|
||||
sub r1,r1,#0xc000
|
||||
ldr r2,[globalptr,#rommask]
|
||||
@@ -136,7 +132,6 @@ mapCD_:
|
||||
|
||||
.type mapEF_, %function
|
||||
mapEF_:
|
||||
// ----------------------------------------------------------------------------
|
||||
ldr r1,[globalptr,#rombase]
|
||||
sub r1,r1,#0xe000
|
||||
ldr r2,[globalptr,#rommask]
|
||||
@@ -147,7 +142,6 @@ mapEF_:
|
||||
|
||||
.type map89AB_, %function
|
||||
map89AB_:
|
||||
// ----------------------------------------------------------------------------
|
||||
ldr r1,[globalptr,#rombase] // rom<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><EFBFBD>
|
||||
sub r1,r1,#0x8000
|
||||
ldr r2,[globalptr,#rommask]
|
||||
@@ -171,7 +165,6 @@ flush: // update m6502_pc & lastbank
|
||||
|
||||
.type mapCDEF_, %function
|
||||
mapCDEF_:
|
||||
// ----------------------------------------------------------------------------
|
||||
ldr r1,[globalptr,#rombase]
|
||||
sub r1,r1,#0xc000
|
||||
ldr r2,[globalptr,#rommask]
|
||||
@@ -183,7 +176,6 @@ mapCDEF_:
|
||||
|
||||
.type map89ABCDEF_, %function
|
||||
map89ABCDEF_:
|
||||
// ----------------------------------------------------------------------------
|
||||
ldr r1,[globalptr,#rombase]
|
||||
sub r1,r1,#0x8000
|
||||
ldr r2,[globalptr,#rommask]
|
||||
|
@@ -1,512 +0,0 @@
|
||||
|
||||
C EQU 0x01 ;//6502 flags 6502<30><32>־
|
||||
Z EQU 0x02
|
||||
I EQU 0x04
|
||||
D EQU 0x08
|
||||
B EQU 0x10 ;//(allways 1 except when IRQ pushes it)IRQ<52>ⲿ<EFBFBD>ж<EFBFBD>
|
||||
R EQU 0x20 ;//(locked at 1)
|
||||
V EQU 0x40
|
||||
N EQU 0x80
|
||||
|
||||
|
||||
|
||||
MACRO ;//translate from 6502 PC to rom offset<65><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD>6502 PC ROM<4F><4D>ƫ<EFBFBD><C6AB><EFBFBD><EFBFBD>
|
||||
encodePC
|
||||
and r1,m6502_pc,#0xE000 ;//r9<72><39>0xe000<30><30>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
adr r2,memmap_tbl ;//<2F>Ѵ洢<D1B4><E6B4A2>ӳ<EFBFBD><D3B3><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>ص<EFBFBD>r2
|
||||
;// ldr r0,[r2,r1,lsr#11] ;//<2F>Ĺ<EFBFBD><C4B9><EFBFBD><EFBFBD><EFBFBD>2<EFBFBD><32>
|
||||
lsr r0,r1,#11 ;//>>11λ r1/2048
|
||||
ldr r0,[r2,r0] ;//<2F><>ȡr2<72><32>ַ+r1ƫ<31>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD>ݵ<EFBFBD>r0
|
||||
|
||||
str r0,lastbank ;//<2F><><EFBFBD><EFBFBD>6502PC<50><43> ROM<4F><4D><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƫ<EFBFBD><C6AB><EFBFBD><EFBFBD>
|
||||
add m6502_pc,m6502_pc,r0 ;//m6502_pc+r0
|
||||
MEND
|
||||
|
||||
MACRO ;//pack 6502 flags into r0 6502<30><32>־<EFBFBD><D6BE>װ<EFBFBD><D7B0>R0
|
||||
encodeP $extra
|
||||
and r0,cycles,#CYC_V+CYC_D+CYC_I+CYC_C
|
||||
tst m6502_nz,#0x80000000;//PSR_N
|
||||
orrne r0,r0,#N ;N
|
||||
tst m6502_nz,#0xff
|
||||
orreq r0,r0,#Z ;Z
|
||||
orr r0,r0,#$extra ;R(&B)
|
||||
MEND
|
||||
|
||||
MACRO ;//;<3B>궨<EFBFBD><EAB6A8>//unpack 6502 flags from r0 <20><>ѹ<EFBFBD><D1B9>6502<30><32>R0<52>ı<EFBFBD>־
|
||||
decodeP
|
||||
bic cycles,cycles,#CYC_V+CYC_D+CYC_I+CYC_C
|
||||
and r1,r0,#V+D+I+C
|
||||
orr cycles,cycles,r1 ;//VDIC
|
||||
bic m6502_nz,r0,#0xFD ;//r0 is signed
|
||||
eor m6502_nz,m6502_nz,#Z
|
||||
MEND ;// ;<3B>궨<EFBFBD><EAB6A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
MACRO
|
||||
fetch $count ;//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ;$<24><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> $<24><><EFBFBD><EFBFBD>1<EFBFBD><31>$<24><><EFBFBD><EFBFBD>2<EFBFBD><32>...
|
||||
;//---------------------------------------------------------------------
|
||||
ldr r0,clocksh ;//<2F><><EFBFBD><EFBFBD>apu<70><75>Ҫ<EFBFBD><D2AA>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
|
||||
add r0,r0,#$count
|
||||
str r0,clocksh
|
||||
|
||||
ldr r1,opz ;//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD>ַ
|
||||
;//-------------------------------------------------------------------------
|
||||
subs cycles,cycles,#$count*256;//CYCLE=256 ;// 3*256 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD><30>ִ<EFBFBD><D6B4><EFBFBD><EFBFBD>2<EFBFBD><32>ָ<EFBFBD><D6B8>
|
||||
ldrplb r0,[m6502_pc],#1 ; //<2F>Ӵ洢<D3B4><E6B4A2><EFBFBD>м<EFBFBD><D0BC><EFBFBD><EFBFBD>ֽڵ<D6BD>һ<EFBFBD><D2BB><EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD> r0=<3D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
; ldrpl pc,[m6502_optbl,r0,lsl#2] ;//r10 ********r0=r0x4***<2A><><EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD>ĵ<EFBFBD>ַ**************************************
|
||||
ldrpl pc,[r1,r0,lsl#2]
|
||||
ldr pc,nexttimeout
|
||||
MEND
|
||||
|
||||
MACRO ;//<2F><>ͬ<EFBFBD><CDAC><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˽<EFBFBD>λ<EFBFBD><CEBB>λ0<CEBB><30>
|
||||
fetch_c $count ;//same as fetch except it adds the Carry (bit 0) also.
|
||||
;//---------------------------------------------------------------------
|
||||
ldr r0,clocksh ;//<2F><><EFBFBD><EFBFBD>apu<70><75>Ҫ<EFBFBD><D2AA>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
|
||||
add r0,r0,#$count
|
||||
str r0,clocksh
|
||||
|
||||
ldr r1,opz ;//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD>ַ
|
||||
;//-------------------------------------------------------------------------
|
||||
sbcs cycles,cycles,#$count*256;//CYCLE=256
|
||||
ldrplb r0,[m6502_pc],#1
|
||||
; ldrpl pc,[m6502_optbl,r0,lsl#2]
|
||||
ldrpl pc,[r1,r0,lsl#2]
|
||||
ldr pc,nexttimeout
|
||||
MEND
|
||||
|
||||
MACRO
|
||||
clearcycles
|
||||
and cycles,cycles,#CYC_MASK ;Save CPU bits
|
||||
MEND
|
||||
|
||||
MACRO
|
||||
readmemabs
|
||||
and r1,addy,#0xE000
|
||||
adr lr,%F0
|
||||
;// ldr pc,[m6502_rmem,r1,lsr#11] ;//in: addy,r1=addy&0xE000 (for rom_R)
|
||||
lsr r1,r1,#11 ;//<2F>Ĺ<EFBFBD><C4B9><EFBFBD><EFBFBD><EFBFBD>2<EFBFBD><32> >>11
|
||||
ldr pc,[m6502_rmem,r1]
|
||||
|
||||
0 ;//out: r0=val (bits 8-31=0 (LSR,ROR,INC,DEC,ASL)), addy preserved for RMW instructions
|
||||
MEND
|
||||
|
||||
MACRO
|
||||
readmemzp
|
||||
ldrb r0,[cpu_zpage,addy]
|
||||
MEND
|
||||
|
||||
MACRO
|
||||
readmemzpi
|
||||
;// ldrb r0,[cpu_zpage,addy,lsr#24]
|
||||
lsr r0,addy,#24 ;//<2F>Ĺ<EFBFBD><C4B9><EFBFBD><EFBFBD><EFBFBD>3<EFBFBD><33>
|
||||
ldrb r0,[cpu_zpage,r0]
|
||||
|
||||
MEND
|
||||
|
||||
MACRO
|
||||
readmemzps
|
||||
ldrsb m6502_nz,[cpu_zpage,addy];RAM
|
||||
MEND
|
||||
|
||||
MACRO
|
||||
readmemimm
|
||||
ldrb r0,[m6502_pc],#1 ;ROM
|
||||
MEND
|
||||
|
||||
MACRO
|
||||
readmemimms
|
||||
ldrsb m6502_nz,[m6502_pc],#1
|
||||
MEND
|
||||
|
||||
MACRO
|
||||
readmem
|
||||
[ _type = _ABS
|
||||
readmemabs
|
||||
]
|
||||
[ _type = _ZP
|
||||
readmemzp
|
||||
]
|
||||
[ _type = _ZPI
|
||||
readmemzpi
|
||||
]
|
||||
[ _type = _IMM
|
||||
readmemimm
|
||||
]
|
||||
MEND
|
||||
|
||||
MACRO
|
||||
readmems
|
||||
[ _type = _ABS
|
||||
readmemabs
|
||||
orr m6502_nz,r0,r0,lsl#24
|
||||
]
|
||||
[ _type = _ZP
|
||||
readmemzps
|
||||
]
|
||||
[ _type = _IMM
|
||||
readmemimms
|
||||
]
|
||||
MEND
|
||||
|
||||
|
||||
MACRO
|
||||
writememabs
|
||||
and r1,addy,#0xe000
|
||||
adr r2,writemem_tbl
|
||||
adr lr,%F0
|
||||
;// ldr pc,[r2,r1,lsr#11] ;//in: addy,r0=val(bits 8-31=?)
|
||||
lsr r1,r1,#11 ;//<2F>Ĺ<EFBFBD><C4B9><EFBFBD><EFBFBD><EFBFBD>2<EFBFBD><32> >>11
|
||||
ldr pc,[r2,r1]
|
||||
|
||||
0 ;out: r0,r1,r2,addy=?
|
||||
MEND
|
||||
|
||||
MACRO
|
||||
writememzp
|
||||
strb r0,[cpu_zpage,addy]
|
||||
MEND
|
||||
|
||||
MACRO
|
||||
writememzpi
|
||||
;// strb r0,[cpu_zpage,addy,lsr#24]
|
||||
lsr r1,addy,#24 ;//<2F>Ĺ<EFBFBD><C4B9><EFBFBD><EFBFBD><EFBFBD>2<EFBFBD><32> >>24
|
||||
strb r0,[cpu_zpage,r1]
|
||||
|
||||
|
||||
MEND
|
||||
|
||||
MACRO
|
||||
writemem ;//д<>ڴ<EFBFBD>
|
||||
[ _type = _ABS
|
||||
writememabs
|
||||
]
|
||||
[ _type = _ZP
|
||||
writememzp
|
||||
]
|
||||
[ _type = _ZPI
|
||||
writememzpi
|
||||
]
|
||||
MEND
|
||||
;----------------------------------------------------------------------------
|
||||
|
||||
MACRO ;///////////////////////////////// /////////////////////
|
||||
push16 ;push r0
|
||||
mov r1,r0,lsr#8
|
||||
ldr r2,m6502_s
|
||||
strb r1,[r2],#-1
|
||||
orr r2,r2,#0x100
|
||||
strb r0,[r2],#-1
|
||||
strb r2,m6502_s
|
||||
MEND ;r1,r2=?
|
||||
|
||||
MACRO
|
||||
push8 $x
|
||||
ldr r2,m6502_s
|
||||
strb $x,[r2],#-1
|
||||
strb r2,m6502_s
|
||||
MEND ;r2=?
|
||||
|
||||
MACRO
|
||||
pop16 ;pop m6502_pc
|
||||
ldrb r2,m6502_s
|
||||
add r2,r2,#2
|
||||
strb r2,m6502_s
|
||||
ldr r2,m6502_s
|
||||
ldrb r0,[r2],#-1
|
||||
orr r2,r2,#0x100
|
||||
ldrb m6502_pc,[r2]
|
||||
orr m6502_pc,m6502_pc,r0,lsl#8
|
||||
MEND ;r0,r1=?
|
||||
|
||||
MACRO
|
||||
pop8 $x
|
||||
ldrb r2,m6502_s
|
||||
add r2,r2,#1
|
||||
strb r2,m6502_s
|
||||
orr r2,r2,#0x100
|
||||
ldrsb $x,[cpu_zpage,r2] ;signed for PLA & PLP
|
||||
|
||||
MEND ;r2=?
|
||||
|
||||
;----------------------------------------------------------------------------
|
||||
;doXXX: load addy, increment m6502_pc
|
||||
|
||||
GBLA _type
|
||||
|
||||
_IMM EQU 1 ;immediate
|
||||
_ZP EQU 2 ;zero page
|
||||
_ZPI EQU 3 ;zero page indexed
|
||||
_ABS EQU 4 ;absolute
|
||||
|
||||
MACRO
|
||||
doABS ;absolute $nnnn
|
||||
_type SETA _ABS
|
||||
ldrb addy,[m6502_pc],#1
|
||||
ldrb r0,[m6502_pc],#1
|
||||
orr addy,addy,r0,lsl#8
|
||||
MEND
|
||||
|
||||
MACRO
|
||||
doAIX ;absolute indexed X $nnnn,X
|
||||
_type SETA _ABS
|
||||
ldrb addy,[m6502_pc],#1
|
||||
ldrb r0,[m6502_pc],#1
|
||||
orr addy,addy,r0,lsl#8
|
||||
add addy,addy,m6502_x,lsr#24
|
||||
; bic addy,addy,#0xff0000 ;Base Wars needs this
|
||||
MEND
|
||||
|
||||
MACRO
|
||||
doAIY ;absolute indexed Y $nnnn,Y
|
||||
_type SETA _ABS
|
||||
ldrb addy,[m6502_pc],#1
|
||||
ldrb r0,[m6502_pc],#1
|
||||
orr addy,addy,r0,lsl#8
|
||||
add addy,addy,m6502_y,lsr#24
|
||||
; bic addy,addy,#0xff0000 ;Tecmo Bowl needs this
|
||||
MEND
|
||||
|
||||
MACRO
|
||||
doIMM ;immediate #$nn
|
||||
_type SETA _IMM
|
||||
MEND
|
||||
|
||||
MACRO
|
||||
doIIX ;indexed indirect X ($nn,X)
|
||||
_type SETA _ABS
|
||||
ldrb r0,[m6502_pc],#1
|
||||
add r0,m6502_x,r0,lsl#24
|
||||
;//ldrb addy,[cpu_zpage,r0,lsr#24] ;//<2F><><EFBFBD><EFBFBD>:ָ<><D6B8><EFBFBD><EFBFBD>ת<EFBFBD>䲻<EFBFBD><E4B2BB><EFBFBD><EFBFBD>
|
||||
lsr addy,r0,#24 ;//<2F>Ĺ<EFBFBD><C4B9><EFBFBD><EFBFBD><EFBFBD>2<EFBFBD><32> >>24
|
||||
ldrb addy,[cpu_zpage,addy]
|
||||
|
||||
add r0,r0,#0x01000000
|
||||
;//ldrb r1,[cpu_zpage,r0,lsr#24] ;//R1,LSR#2;<3B><>R1<52>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>2λ
|
||||
lsr r1,r0,#24 ;//<2F>Ĺ<EFBFBD><C4B9><EFBFBD><EFBFBD><EFBFBD>2<EFBFBD><32>
|
||||
ldrb r1,[cpu_zpage,r1]
|
||||
|
||||
orr addy,addy,r1,lsl#8
|
||||
MEND
|
||||
|
||||
MACRO
|
||||
doIIY ;indirect indexed Y ($nn),Y
|
||||
_type SETA _ABS
|
||||
ldrb r0,[m6502_pc],#1
|
||||
;// ldrb addy,[r0,cpu_zpage]! ;;<3B><><EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD><DDB4><EFBFBD>֮ǰ,<2C><>ƫ<EFBFBD><C6AB><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD>Rn <20><>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵĴ洢<C4B4><E6B4A2>ַ
|
||||
;//<2F><>ʹ<EFBFBD>ú<EFBFBD>"!",<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD>ص<EFBFBD>Rn<52><6E>
|
||||
ldrb addy,[r0,cpu_zpage]
|
||||
add r0,r0,cpu_zpage ;//////////////////////////////////////
|
||||
|
||||
|
||||
ldrb r1,[r0,#1]
|
||||
orr addy,addy,r1,lsl#8
|
||||
add addy,addy,m6502_y,lsr#24
|
||||
; bic addy,addy,#0xff0000 ;Zelda2 needs this
|
||||
MEND
|
||||
|
||||
MACRO
|
||||
doZPI ;Zeropage indirect ($nn)
|
||||
_type SETA _ABS
|
||||
ldrb r0,[m6502_pc],#1
|
||||
;// ldrb addy,[r0,cpu_zpage]!;;<3B><><EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD><DDB4><EFBFBD>֮ǰ,<2C><>ƫ<EFBFBD><C6AB><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD>Rn <20><>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵĴ洢<C4B4><E6B4A2>ַ
|
||||
;//<2F><>ʹ<EFBFBD>ú<EFBFBD>"!",<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD>ص<EFBFBD>Rn<52><6E>
|
||||
ldrb addy,[r0,cpu_zpage]
|
||||
add r0,r0,cpu_zpage
|
||||
|
||||
|
||||
ldrb r1,[r0,#1]
|
||||
orr addy,addy,r1,lsl#8
|
||||
MEND
|
||||
|
||||
MACRO
|
||||
doZ ;zero page $nn
|
||||
_type SETA _ZP
|
||||
ldrb addy,[m6502_pc],#1
|
||||
MEND
|
||||
|
||||
MACRO
|
||||
doZ2 ;zero page $nn
|
||||
_type SETA _ZP
|
||||
ldrb addy,[m6502_pc],#2 ;ugly thing for bbr/bbs
|
||||
MEND
|
||||
|
||||
MACRO
|
||||
doZIX ;zero page indexed X $nn,X
|
||||
_type SETA _ZP
|
||||
ldrb addy,[m6502_pc],#1
|
||||
add addy,addy,m6502_x,lsr#24
|
||||
and addy,addy,#0xff ;Rygar needs this
|
||||
MEND
|
||||
|
||||
MACRO
|
||||
doZIXf ;zero page indexed X $nn,X
|
||||
_type SETA _ZPI
|
||||
ldrb addy,[m6502_pc],#1
|
||||
add addy,m6502_x,addy,lsl#24
|
||||
MEND
|
||||
|
||||
MACRO
|
||||
doZIY ;zero page indexed Y $nn,Y
|
||||
_type SETA _ZP
|
||||
ldrb addy,[m6502_pc],#1
|
||||
add addy,addy,m6502_y,lsr#24
|
||||
and addy,addy,#0xff
|
||||
MEND
|
||||
|
||||
MACRO
|
||||
doZIYf ;zero page indexed Y $nn,Y
|
||||
_type SETA _ZPI
|
||||
ldrb addy,[m6502_pc],#1
|
||||
add addy,m6502_y,addy,lsl#24
|
||||
MEND
|
||||
|
||||
;----------------------------------------------------------------------------
|
||||
|
||||
MACRO
|
||||
opADC
|
||||
readmem
|
||||
movs r1,cycles,lsr#1 ;get C
|
||||
subcs r0,r0,#0x00000100
|
||||
adcs m6502_a,m6502_a,r0,ror#8
|
||||
mov m6502_nz,m6502_a,asr#24 ;NZ
|
||||
orr cycles,cycles,#CYC_C+CYC_V ;Prepare C & V
|
||||
bicvc cycles,cycles,#CYC_V ;V
|
||||
MEND
|
||||
|
||||
MACRO
|
||||
opAND
|
||||
readmem
|
||||
and m6502_a,m6502_a,r0,lsl#24
|
||||
mov m6502_nz,m6502_a,asr#24 ;NZ
|
||||
MEND
|
||||
|
||||
MACRO
|
||||
opASL
|
||||
readmem
|
||||
add r0,r0,r0
|
||||
orrs m6502_nz,r0,r0,lsl#24 ;NZ
|
||||
orr cycles,cycles,#CYC_C ;Prepare C
|
||||
writemem
|
||||
MEND
|
||||
|
||||
MACRO
|
||||
opBIT
|
||||
readmem
|
||||
bic cycles,cycles,#CYC_V ;reset V
|
||||
tst r0,#V
|
||||
orrne cycles,cycles,#CYC_V ;V
|
||||
and m6502_nz,r0,m6502_a,lsr#24 ;Z
|
||||
orr m6502_nz,m6502_nz,r0,lsl#24 ;N
|
||||
MEND
|
||||
|
||||
MACRO
|
||||
opCOMP $x ;A,X & Y
|
||||
readmem
|
||||
subs m6502_nz,$x,r0,lsl#24
|
||||
mov m6502_nz,m6502_nz,asr#24 ;NZ
|
||||
orr cycles,cycles,#CYC_C ;Prepare C
|
||||
MEND
|
||||
|
||||
MACRO
|
||||
opDEC
|
||||
readmem
|
||||
sub r0,r0,#1
|
||||
orr m6502_nz,r0,r0,lsl#24 ;NZ
|
||||
writemem
|
||||
MEND
|
||||
|
||||
MACRO
|
||||
opEOR
|
||||
readmem
|
||||
eor m6502_a,m6502_a,r0,lsl#24
|
||||
mov m6502_nz,m6502_a,asr#24 ;NZ
|
||||
MEND
|
||||
|
||||
MACRO
|
||||
opINC
|
||||
readmem
|
||||
add r0,r0,#1
|
||||
orr m6502_nz,r0,r0,lsl#24 ;NZ
|
||||
writemem
|
||||
MEND
|
||||
|
||||
MACRO
|
||||
opLOAD $x
|
||||
readmems
|
||||
mov $x,m6502_nz,lsl#24
|
||||
MEND
|
||||
|
||||
MACRO
|
||||
opLSR
|
||||
[ _type = _ABS
|
||||
readmemabs
|
||||
movs r0,r0,lsr#1
|
||||
orr cycles,cycles,#CYC_C ;Prepare C
|
||||
mov m6502_nz,r0 ;Z, (N=0)
|
||||
writememabs
|
||||
]
|
||||
[ _type = _ZP
|
||||
ldrb m6502_nz,[cpu_zpage,addy]
|
||||
movs m6502_nz,m6502_nz,lsr#1 ;Z, (N=0)
|
||||
orr cycles,cycles,#CYC_C ;Prepare C
|
||||
strb m6502_nz,[cpu_zpage,addy]
|
||||
]
|
||||
[ _type = _ZPI
|
||||
;// ldrb m6502_nz,[cpu_zpage,addy,lsr#24]
|
||||
lsr m6502_nz,addy,#24 ;//<2F>Ĺ<EFBFBD><C4B9><EFBFBD><EFBFBD><EFBFBD>2<EFBFBD><32>
|
||||
ldrb m6502_nz,[cpu_zpage,m6502_nz]
|
||||
|
||||
movs m6502_nz,m6502_nz,lsr#1 ;Z, (N=0)
|
||||
orr cycles,cycles,#CYC_C ;Prepare C
|
||||
;// strb m6502_nz,[cpu_zpage,addy,lsr#24]
|
||||
lsr r1,addy,#24 ;//<2F>Ĺ<EFBFBD><C4B9><EFBFBD><EFBFBD><EFBFBD>2<EFBFBD><32>
|
||||
strb m6502_nz,[cpu_zpage,r1]
|
||||
|
||||
]
|
||||
MEND
|
||||
|
||||
MACRO
|
||||
opORA
|
||||
readmem
|
||||
orr m6502_a,m6502_a,r0,lsl#24
|
||||
mov m6502_nz,m6502_a,asr#24
|
||||
MEND
|
||||
|
||||
MACRO
|
||||
opROL
|
||||
readmem
|
||||
movs cycles,cycles,lsr#1 ;get C
|
||||
adc r0,r0,r0
|
||||
orrs m6502_nz,r0,r0,lsl#24 ;NZ
|
||||
adc cycles,cycles,cycles ;Set C
|
||||
writemem
|
||||
MEND
|
||||
|
||||
MACRO
|
||||
opROR
|
||||
readmem
|
||||
movs cycles,cycles,lsr#1 ;get C
|
||||
orrcs r0,r0,#0x100
|
||||
movs r0,r0,lsr#1
|
||||
orr m6502_nz,r0,r0,lsl#24 ;NZ
|
||||
adc cycles,cycles,cycles ;Set C
|
||||
writemem
|
||||
MEND
|
||||
|
||||
MACRO
|
||||
opSBC
|
||||
readmem
|
||||
movs r1,cycles,lsr#1 ;get C
|
||||
sbcs m6502_a,m6502_a,r0,lsl#24
|
||||
and m6502_a,m6502_a,#0xff000000
|
||||
mov m6502_nz,m6502_a,asr#24 ;NZ
|
||||
orr cycles,cycles,#CYC_C+CYC_V ;Prepare C & V
|
||||
bicvc cycles,cycles,#CYC_V ;V
|
||||
MEND
|
||||
|
||||
MACRO
|
||||
opSTORE $x
|
||||
mov r0,$x,lsr#24
|
||||
writemem
|
||||
MEND
|
||||
;----------------------------------------------------
|
||||
END
|
@@ -1,199 +0,0 @@
|
||||
INCLUDE equates.s
|
||||
|
||||
|
||||
IMPORT NES_RAM
|
||||
IMPORT NES_SRAM
|
||||
IMPORT CPU_reset
|
||||
IMPORT romfile ;from main.c
|
||||
IMPORT cpu_data ; 6502.s
|
||||
IMPORT op_table
|
||||
|
||||
EXPORT cpu6502_init
|
||||
EXPORT map67_
|
||||
EXPORT map89_
|
||||
EXPORT mapAB_
|
||||
EXPORT mapCD_
|
||||
EXPORT mapEF_
|
||||
;----------------------------------------------------------------------------
|
||||
AREA rom_code, CODE, READONLY
|
||||
; THUMB
|
||||
PRESERVE8
|
||||
;----------------------------------------------------------------------------
|
||||
cpu6502_init PROC
|
||||
;----------------------------------------------------------------------------
|
||||
stmfd sp!,{r4-r11,lr}
|
||||
|
||||
ldr r10,=cpu_data ;<3B><>ȡ<EFBFBD><C8A1>ַ
|
||||
ldr r11,=NES_RAM ;r11=cpu_zpage
|
||||
|
||||
ldr r11,[r11] ;NES_RAM<41><4D><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>
|
||||
;*******************************************************
|
||||
str r11,memmap_tbl ;NES_RAM<41><4D><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>
|
||||
str r11,memmap_tbl+4
|
||||
str r11,memmap_tbl+8
|
||||
|
||||
ldr r0,=NES_SRAM ;NES_SRAM<41><4D><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>
|
||||
ldr r0,[r0]
|
||||
str r0,memmap_tbl+12
|
||||
;**********************************************************************
|
||||
|
||||
ldr r0,=op_table ;<3B><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD>ַ
|
||||
str r0,opz ;<3B><><EFBFBD><EFBFBD>
|
||||
|
||||
ldr r0,=romfile
|
||||
ldr r0,[r0] ;R0<52><30><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>ROMӳ<4D><EFBFBD><F1A3A8B0><EFBFBD>ͷ<EFBFBD><CDB7>
|
||||
add r3,r0,#16 ;r3<72><33><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>rom<6F><6D><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7>
|
||||
str r3,rombase ;<3B><><EFBFBD><EFBFBD>rom<6F><6D><EFBFBD><EFBFBD>ַ
|
||||
;r3=rombase til end of loadcart so DON'T FUCK IT UP
|
||||
mov r2,#1
|
||||
ldrb r1,[r3,#-12] ; 16kB PROM<4F><4D><EFBFBD><EFBFBD>Ŀ 2
|
||||
rsb r0,r2,r1,lsl#14 ;romsize=X*16KB <<14 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8> r0=0x7fff
|
||||
str r0,rommask ;rommask=promsize-1 32768-1
|
||||
;------------------------------------------------------------------------------------
|
||||
mov r9,#0 ;(<28><><EFBFBD><EFBFBD><EFBFBD>κ<EFBFBD>encodePC<50><43>ӳ<EFBFBD><D3B3><EFBFBD><EFBFBD>*<2A><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>еĴ<D0B5><C4B4><EFBFBD>)
|
||||
str r9,lastbank ;6502PC<50><43> ROM<4F><4D><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƫ<EFBFBD><C6AB><EFBFBD><EFBFBD>д0
|
||||
|
||||
mov r0,#0 ;Ĭ<><C4AC>romӳ<6D><D3B3>
|
||||
bl map89AB_ ;89AB=1st 16k
|
||||
mov r0,#-1
|
||||
bl mapCDEF_ ;CDEF=last 16k
|
||||
;----------------------------------------------------------------------------
|
||||
|
||||
ldrb r1,[r3,#-10] ;get mapper#
|
||||
ldrb r2,[r3,#-9]
|
||||
tst r2,#0x0e ;long live DiskDude!
|
||||
and r1,r1,#0xf0
|
||||
and r2,r2,#0xf0
|
||||
orr r0,r2,r1,lsr#4
|
||||
movne r0,r1,lsr#4 ;ignore high nibble if header looks bad <09><><EFBFBD>Ը<EFBFBD><D4B8><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
;r0=mapper<65><72>
|
||||
;----------------------------------------------------------------------------
|
||||
|
||||
ldr r0,=Mapper_W
|
||||
str r0,writemem_tbl+16
|
||||
str r0,writemem_tbl+20
|
||||
str r0,writemem_tbl+24
|
||||
str r0,writemem_tbl+28
|
||||
;------------------------------------------------------------------------------
|
||||
|
||||
bl CPU_reset ;reset everything else
|
||||
ldmfd sp!,{r4-r11,lr}
|
||||
bx lr
|
||||
ENDP
|
||||
|
||||
;----------------------------------------------------------------------------
|
||||
map67_ ;rom paging.. r0=page#
|
||||
;----------------------------------------------------------------------------
|
||||
ldr r1,rommask
|
||||
and r0,r1,r0,lsl#13
|
||||
ldr r1,rombase
|
||||
add r0,r1,r0
|
||||
sub r0,r0,#0x6000
|
||||
str r0,memmap_tbl+12
|
||||
b flush
|
||||
;----------------------------------------------------------------------------
|
||||
map89_ ;rom paging.. r0=page# ROM<4F><4D>ҳ
|
||||
;----------------------------------------------------------------------------
|
||||
ldr r1,rombase ;rom<6F><6D>ʼ<EFBFBD><CABC>ַ
|
||||
sub r1,r1,#0x8000
|
||||
ldr r2,rommask
|
||||
and r0,r2,r0,lsl#13
|
||||
add r0,r1,r0
|
||||
str r0,memmap_tbl+16
|
||||
b flush
|
||||
;----------------------------------------------------------------------------
|
||||
mapAB_
|
||||
;----------------------------------------------------------------------------
|
||||
ldr r1,rombase
|
||||
sub r1,r1,#0xa000
|
||||
ldr r2,rommask
|
||||
and r0,r2,r0,lsl#13
|
||||
add r0,r1,r0
|
||||
str r0,memmap_tbl+20
|
||||
b flush
|
||||
;----------------------------------------------------------------------------
|
||||
mapCD_
|
||||
;----------------------------------------------------------------------------
|
||||
ldr r1,rombase
|
||||
sub r1,r1,#0xc000
|
||||
ldr r2,rommask
|
||||
and r0,r2,r0,lsl#13
|
||||
add r0,r1,r0
|
||||
str r0,memmap_tbl+24
|
||||
b flush
|
||||
;----------------------------------------------------------------------------
|
||||
mapEF_
|
||||
;----------------------------------------------------------------------------
|
||||
ldr r1,rombase
|
||||
sub r1,r1,#0xe000
|
||||
ldr r2,rommask
|
||||
and r0,r2,r0,lsl#13
|
||||
add r0,r1,r0
|
||||
str r0,memmap_tbl+28
|
||||
b flush
|
||||
;----------------------------------------------------------------------------
|
||||
map89AB_
|
||||
;----------------------------------------------------------------------------
|
||||
ldr r1,rombase ;rom<6F><6D><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7>
|
||||
sub r1,r1,#0x8000
|
||||
ldr r2,rommask
|
||||
and r0,r2,r0,lsl#14
|
||||
add r0,r1,r0
|
||||
str r0,memmap_tbl+16
|
||||
str r0,memmap_tbl+20
|
||||
flush ;update m6502_pc & lastbank
|
||||
ldr r1,lastbank
|
||||
sub r9,r9,r1
|
||||
and r1,r9,#0xE000 ;//r9<72><39>0xe000<30><30>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
adr r2,memmap_tbl ;//<2F>Ѵ洢<D1B4><E6B4A2>ӳ<EFBFBD><D3B3><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>ص<EFBFBD>r2
|
||||
lsr r1,r1,#11 ;//>>11λ r1/2048
|
||||
ldr r0,[r2,r1] ;//<2F><>ȡr2<72><32>ַ+r1ƫ<31>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD>ݵ<EFBFBD>r0
|
||||
|
||||
str r0,lastbank ;//<2F><><EFBFBD><EFBFBD>6502PC<50><43> ROM<4F><4D><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƫ<EFBFBD><C6AB><EFBFBD><EFBFBD>
|
||||
add r9,r9,r0 ;//m6502_pc+r0
|
||||
orr lr,#0x01 ;lr<6C><72><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>1<EFBFBD><31>ֹ<EFBFBD><D6B9><EFBFBD><EFBFBD>arm״̬
|
||||
bx lr
|
||||
|
||||
;----------------------------------------------------------------------------
|
||||
mapCDEF_
|
||||
;----------------------------------------------------------------------------
|
||||
ldr r1,rombase
|
||||
sub r1,r1,#0xc000
|
||||
ldr r2,rommask
|
||||
and r0,r2,r0,lsl#14
|
||||
add r0,r1,r0
|
||||
str r0,memmap_tbl+24
|
||||
str r0,memmap_tbl+28
|
||||
b flush
|
||||
;----------------------------------------------------------------------------
|
||||
map89ABCDEF_
|
||||
;----------------------------------------------------------------------------
|
||||
ldr r1,rombase
|
||||
sub r1,r1,#0x8000
|
||||
ldr r2,rommask
|
||||
and r0,r2,r0,lsl#15
|
||||
add r0,r1,r0
|
||||
str r0,memmap_tbl+16
|
||||
str r0,memmap_tbl+20
|
||||
str r0,memmap_tbl+24
|
||||
str r0,memmap_tbl+28
|
||||
b flush
|
||||
;*************************************************************************************
|
||||
IMPORT asm_Mapper_Write;
|
||||
Mapper_W
|
||||
;-------------------------------------------
|
||||
stmfd sp!,{r3,lr} ;LR <20>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD>ջ
|
||||
mov r1,r12
|
||||
bl asm_Mapper_Write
|
||||
ldmfd sp!,{r3,lr}
|
||||
orr lr,#0x01 ;lr<6C><72><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>1<EFBFBD><31>ֹ<EFBFBD><D6B9><EFBFBD><EFBFBD>arm״̬
|
||||
bx lr
|
||||
; nop
|
||||
;---------------------------------------------------------------------------------------
|
||||
|
||||
END
|
||||
|
||||
|
||||
|
||||
|
||||
|
@@ -1,33 +0,0 @@
|
||||
|
||||
globalptr RN r10 ;//=wram_globals* ptr
|
||||
;//cpu_zpage RN r11 ;=CPU_RAM
|
||||
;----------------------------------------------------------------------------
|
||||
|
||||
|
||||
MAP 0,globalptr ;//MAP <20><><EFBFBD>ڶ<EFBFBD><DAB6><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ṹ<EFBFBD><E1B9B9><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ
|
||||
;//6502.s ;//<2F><><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַΪglobalptr
|
||||
opz # 4 ;opz # 256*4 ;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ
|
||||
readmem_tbl # 8*4 ;//8*4
|
||||
writemem_tbl # 8*4 ;//8*4
|
||||
memmap_tbl # 8*4 ;//<2F>洢<EFBFBD><E6B4A2>ӳ<EFBFBD><D3B3> ram+rom
|
||||
cpuregs # 7*4 ;//1208<30><38><EFBFBD><EFBFBD>6502<30>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD>ʼ<EFBFBD><CABC>ַ
|
||||
m6502_s # 4 ;//
|
||||
lastbank # 4 ;//6502PC<50><43> ROM<4F><4D><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƫ<EFBFBD><C6AB><EFBFBD><EFBFBD>
|
||||
nexttimeout # 4
|
||||
|
||||
rombase # 4 ;//ROM<4F><4D>ʼ<EFBFBD><CABC>ַ
|
||||
romnumber # 4 ;// ROM<4F><4D>С
|
||||
rommask # 4 ;//ROM<4F><4D>Ĥ rommask=romsize-1
|
||||
|
||||
joy0data # 4 ;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
joy1data # 4 ;//<2F>ֱ<EFBFBD>1<EFBFBD><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
clocksh # 4 ;//ִ<>е<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD> apu<70><75>
|
||||
cpunmif # 4 ;cpu<70>жϱ<D0B6>־
|
||||
cpuirqf # 4 ;cpu<70>жϱ<D0B6>־
|
||||
;------------------------------------------------------------------------------------------
|
||||
|
||||
|
||||
;// # 2 ;align
|
||||
|
||||
END
|
@@ -1,5 +1,6 @@
|
||||
#include "main.h"
|
||||
#include "nes_apu.h"
|
||||
#include "nes_main.h"
|
||||
//////////////////////////////////////////////////////////////////////////////////
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֲ<EFBFBD><D6B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ye781205<30><35>NESģ<53><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//ALIENTEK STM32F407<30><37><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
@@ -22,7 +22,7 @@ CFLAG=[
|
||||
'-mthumb',
|
||||
'-mfpu=fpv4-sp-d16',
|
||||
'-mfloat-abi=hard',
|
||||
'-Og',
|
||||
'-O3',
|
||||
'-Wall',
|
||||
'-fdata-sections',
|
||||
'-ffunction-sections',
|
||||
@@ -347,7 +347,7 @@ def main():
|
||||
if build_target(SRC):
|
||||
os.system(f"{OBJCPY} -O binary -S {OUTPUT}/{TARGET}.elf {OUTPUT}/{TARGET}.bin")
|
||||
os.system(f"{OBJCPY} -O ihex {OUTPUT}/{TARGET}.elf {OUTPUT}/{TARGET}.hex")
|
||||
os.system(f"{OBJDUMP} -d {OUTPUT}/{TARGET}.elf > {OUTPUT}/{TARGET}.lst")
|
||||
os.system(f"{OBJDUMP} -D {OUTPUT}/{TARGET}.elf > {OUTPUT}/{TARGET}.lst")
|
||||
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user