整理代码

This commit is contained in:
2025-07-10 00:08:56 +08:00
parent 0530972eb4
commit c3df6f6ae2
10 changed files with 71 additions and 8625 deletions

View File

@@ -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

View File

@@ -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]

View File

@@ -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>
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

View File

@@ -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

View File

@@ -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

View File

@@ -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>

View File

@@ -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")