All pastes #1589620 Raw Edit

gocha

public text v1 · immutable
#1589620 ·published 2009-10-02 16:01 UTC
rendered paste body
; Listing generated by Microsoft (R) Optimizing Compiler Version 15.00.30729.01
; 
; I compiled S9xGetWord() in getset.h of snes9x 1.51 rerecording,
; which causes an obvious graphical glitch in Donkey Kong Country,
; with Visual Studio 2008, using /Ox and code listing option.
; This might tell why the optimization causes such a weird glitch.
; 
; Line numbers are not correct for some reasons, nevermind.

PUBLIC	?S9xGetWord@@YAGIW4s9xwrap_t@@_N@Z		; S9xGetWord
EXTRN	_S9xGetBSX:PROC
EXTRN	_S9xGetST018:PROC
EXTRN	_S9xGetSetaDSP:PROC
EXTRN	_GetOBC1:PROC
EXTRN	_S9xGetSPC7110:PROC
EXTRN	_S9xGetSPC7110Byte:PROC
EXTRN	_S9xGetC4:PROC
EXTRN	_Multi:BYTE
EXTRN	_S9xGetDSP:PROC
EXTRN	_S9xGetCPU:PROC
EXTRN	_S9xGetPPU:PROC
EXTRN	_Memory:BYTE
EXTRN	_CPU:BYTE
EXTRN	_OpenBus:BYTE
EXTRN	?S9xGetByte@@YAEI_N@Z:PROC			; S9xGetByte
; Function compile flags: /Ogtpy
; File .\snes9x-151\cpu.cpp
_TEXT	SEGMENT
_Address$ = 8						; size = 4
_a$66541 = 12						; size = 4
_a$66539 = 12						; size = 4
_w$ = 12						; size = 4
_free$ = 16						; size = 1
?S9xGetWord@@YAGIW4s9xwrap_t@@_N@Z PROC			; S9xGetWord

; 199  : {

	push	ebx
	push	esi
	push	edi

; 200  :     uint32 mask=MEMMAP_MASK&(w==WRAP_PAGE?0xff:(w==WRAP_BANK?0xffff:0xffffff));

	mov	edi, DWORD PTR _w$[esp+8]
	cmp	edi, 2
	jne	SHORT $LN36@S9xGetWord
	mov	eax, 255				; 000000ffH
	jmp	SHORT $LN37@S9xGetWord
$LN36@S9xGetWord:
	mov	eax, edi
	dec	eax
	neg	eax
	sbb	eax, eax
	and	eax, 16711680				; 00ff0000H
	add	eax, 65535				; 0000ffffH
$LN37@S9xGetWord:

; 201  :     if ((Address & mask) == mask)

	mov	ebx, DWORD PTR _Address$[esp+8]
	and	eax, 4095				; 00000fffH
	mov	ecx, eax
	and	ecx, ebx
	cmp	ecx, eax
	jne	SHORT $LN31@S9xGetWord

; 202  :     {
; 203  :         OpenBus=S9xGetByte(Address, free);

	mov	esi, DWORD PTR _free$[esp+8]
	push	esi
	push	ebx
	call	?S9xGetByte@@YAEI_N@Z			; S9xGetByte
	mov	BYTE PTR _OpenBus, al
	add	esp, 8

; 204  :         switch(w){

	mov	eax, edi
	sub	eax, 1

; 218  :             }
; 219  :           case WRAP_NONE:
; 220  :           default:
; 221  :             return (OpenBus | (S9xGetByte (Address + 1, free) << 8));

	push	esi
	je	SHORT $LN29@S9xGetWord

; 204  :         switch(w){

	sub	eax, 1
	je	SHORT $LN30@S9xGetWord

; 218  :             }
; 219  :           case WRAP_NONE:
; 220  :           default:
; 221  :             return (OpenBus | (S9xGetByte (Address + 1, free) << 8));

	inc	ebx
	push	ebx
	call	?S9xGetByte@@YAEI_N@Z			; S9xGetByte
	movzx	edx, BYTE PTR _OpenBus
	add	esp, 8
	movzx	eax, al
	pop	edi
	shl	eax, 8
	pop	esi
	or	eax, edx
	pop	ebx

; 338  :     }
; 339  : }

	ret	0
$LN30@S9xGetWord:

; 205  :           case WRAP_PAGE:
; 206  :             {
; 207  :                 PC_t a;
; 208  :                 a.xPBPC = Address;

	mov	DWORD PTR _a$66539[esp+12], ebx

; 209  :                 a.B.xPCl++;

	inc	bl
	mov	BYTE PTR _a$66539[esp+12], bl

; 210  :                 return (OpenBus | (S9xGetByte (a.xPBPC, free) << 8));

	mov	eax, DWORD PTR _a$66539[esp+12]
	push	eax
$LN41@S9xGetWord:
	call	?S9xGetByte@@YAEI_N@Z			; S9xGetByte
	movzx	ecx, BYTE PTR _OpenBus
	add	esp, 8
	movzx	eax, al
	pop	edi

; 330  : 
; 331  :       case CMemory::MAP_DEBUG:
; 332  : #ifdef DEBUGGER
; 333  :         printf ("DEBUG R(W) %06x\n", Address);
; 334  : #endif
; 335  :       default:
; 336  :       case CMemory::MAP_NONE:
; 337  :         return (OpenBus | (OpenBus<<8));

	shl	eax, 8
	pop	esi
	or	eax, ecx
	pop	ebx

; 338  :     }
; 339  : }

	ret	0
$LN29@S9xGetWord:

; 211  :             }
; 212  :           case WRAP_BANK:
; 213  :             {
; 214  :                 PC_t a;
; 215  :                 a.xPBPC = Address;

	mov	DWORD PTR _a$66541[esp+12], ebx

; 216  :                 a.W.xPC++;

	inc	ebx
	mov	WORD PTR _a$66541[esp+12], bx

; 217  :                 return (OpenBus | (S9xGetByte (a.xPBPC, free) << 8));

	mov	edx, DWORD PTR _a$66541[esp+12]
	push	edx
	jmp	SHORT $LN41@S9xGetWord
$LN31@S9xGetWord:

; 222  :         }
; 223  :     }
; 224  :     int block;
; 225  :     uint8 *GetAddress = Memory.Map [block = ((Address&0xffffff) >> MEMMAP_SHIFT)];
; 226  : 
; 227  :     if(!CPU.InDMAorHDMA && !free)

	mov	cl, BYTE PTR _CPU+8
	mov	edx, DWORD PTR _free$[esp+8]
	mov	eax, ebx
	shr	eax, 12					; 0000000cH
	and	eax, 4095				; 00000fffH
	mov	esi, DWORD PTR _Memory[eax*4+76]
	test	cl, cl
	jne	SHORT $LN39@S9xGetWord
	test	dl, dl
	jne	SHORT $LN39@S9xGetWord

; 228  :         CPU.Cycles += (Memory.MemorySpeed [block]<<1);

	movzx	edi, BYTE PTR _Memory[eax+41036]
	push	ebp
	mov	ebp, DWORD PTR _CPU+28
	lea	edi, DWORD PTR [ebp+edi*2]
	mov	DWORD PTR _CPU+28, edi
	pop	ebp
$LN39@S9xGetWord:

; 229  : 
; 230  : 
; 231  :     if (GetAddress >= (uint8 *) CMemory::MAP_LAST)

	cmp	esi, 20					; 00000014H
	jb	SHORT $LN26@S9xGetWord

; 232  :     {
; 233  : #ifdef CPU_SHUTDOWN
; 234  :         if (Memory.BlockIsRAM [block] && !free)

	cmp	BYTE PTR _Memory[eax+32844], 0
	je	SHORT $LN25@S9xGetWord
	test	dl, dl
	jne	SHORT $LN25@S9xGetWord

; 235  :             CPU.WaitAddress = CPU.PBPCAtOpcodeStart;

	mov	edx, DWORD PTR _CPU+16
	mov	DWORD PTR _CPU+20, edx
$LN25@S9xGetWord:

; 236  : #endif
; 237  :         return READ_WORD(GetAddress + (Address & 0xffff));

	and	ebx, 65535				; 0000ffffH
	mov	ax, WORD PTR [ebx+esi]
	pop	edi
	pop	esi
	pop	ebx

; 338  :     }
; 339  : }

	ret	0
$LN26@S9xGetWord:

; 238  :     }
; 239  : 
; 240  :     switch ((pint) GetAddress)

	cmp	esi, 17					; 00000011H
	ja	$LN1@S9xGetWord
	jmp	DWORD PTR $LN43@S9xGetWord[esi*4]
$LN22@S9xGetWord:

; 241  :     {
; 242  :       case CMemory::MAP_PPU:
; 243  :         if(CPU.InDMAorHDMA){

	test	cl, cl
	je	SHORT $LN21@S9xGetWord

; 244  :             OpenBus=S9xGetByte (Address, free);

	push	edx
	push	ebx
	call	?S9xGetByte@@YAEI_N@Z			; S9xGetByte
	mov	BYTE PTR _OpenBus, al

; 245  :             return (OpenBus | (S9xGetByte (Address + 1, free) << 8));

	mov	eax, DWORD PTR _free$[esp+16]
	push	eax
	inc	ebx
	push	ebx
	call	?S9xGetByte@@YAEI_N@Z			; S9xGetByte
	movzx	ecx, BYTE PTR _OpenBus
	add	esp, 16					; 00000010H
	movzx	eax, al
	pop	edi

; 330  : 
; 331  :       case CMemory::MAP_DEBUG:
; 332  : #ifdef DEBUGGER
; 333  :         printf ("DEBUG R(W) %06x\n", Address);
; 334  : #endif
; 335  :       default:
; 336  :       case CMemory::MAP_NONE:
; 337  :         return (OpenBus | (OpenBus<<8));

	shl	eax, 8
	pop	esi
	or	eax, ecx
	pop	ebx

; 338  :     }
; 339  : }

	ret	0
$LN21@S9xGetWord:

; 246  :         }
; 247  :         return (S9xGetPPU (Address & 0xffff) |
; 248  :                 (S9xGetPPU ((Address + 1) & 0xffff) << 8));

	lea	edx, DWORD PTR [ebx+1]
	push	edx
	call	_S9xGetPPU
	movzx	esi, al
	push	ebx
	shl	esi, 8
	call	_S9xGetPPU
	add	esp, 8
	movzx	eax, al
	pop	edi
	or	eax, esi
	pop	esi
	pop	ebx

; 338  :     }
; 339  : }

	ret	0
$LN20@S9xGetWord:

; 249  :       case CMemory::MAP_CPU:
; 250  :         return (S9xGetCPU (Address & 0xffff) |
; 251  :                 (S9xGetCPU ((Address + 1) & 0xffff) << 8));

	lea	eax, DWORD PTR [ebx+1]
	push	eax
	call	_S9xGetCPU
	movzx	esi, al
	push	ebx
	shl	esi, 8
	call	_S9xGetCPU
	add	esp, 8
	movzx	eax, al
	pop	edi
	or	eax, esi
	pop	esi
	pop	ebx

; 338  :     }
; 339  : }

	ret	0
$LN19@S9xGetWord:

; 252  :       case CMemory::MAP_DSP:
; 253  : #ifdef DSP_DUMMY_LOOPS
; 254  :         printf("Get DSP Word @ %06X\n", Address);
; 255  : #endif
; 256  :         return (S9xGetDSP (Address & 0xffff) |
; 257  :                 (S9xGetDSP ((Address + 1) & 0xffff) << 8));

	lea	ecx, DWORD PTR [ebx+1]
	push	ecx
	call	_S9xGetDSP
	movzx	esi, al
	push	ebx
	shl	esi, 8
	call	_S9xGetDSP
	add	esp, 8
	movzx	eax, al
	pop	edi
	or	eax, esi
	pop	esi
	pop	ebx

; 338  :     }
; 339  : }

	ret	0
$LN18@S9xGetWord:

; 258  :       case CMemory::MAP_SA1RAM:
; 259  :       case CMemory::MAP_LOROM_SRAM:
; 260  :         //Address &0x7FFF -offset into bank
; 261  :         //Address&0xFF0000 -bank
; 262  :         //bank>>1 | offset = s-ram address, unbound
; 263  :         //unbound & SRAMMask = Sram offset
; 264  :         if(Memory.SRAMMask>=MEMMAP_MASK){

	mov	ecx, DWORD PTR _Memory+45472
	cmp	ecx, 4095				; 00000fffH
	jb	SHORT $LN17@S9xGetWord

; 265  :             return READ_WORD(Memory.SRAM + ((((Address&0xFF0000)>>1) |(Address&0x7FFF)) &Memory.SRAMMask));

	mov	eax, DWORD PTR _Memory+44
	mov	edx, ebx
	shr	edx, 1
	and	ebx, 32767				; 00007fffH
	and	edx, 8355840				; 007f8000H
	or	edx, ebx
	pop	edi
	and	edx, ecx
	mov	ax, WORD PTR [edx+eax]
	pop	esi
	pop	ebx

; 338  :     }
; 339  : }

	ret	0
$LN17@S9xGetWord:

; 266  :         } else {
; 267  :             /* no READ_WORD here, since if Memory.SRAMMask=0x7ff
; 268  :              * then the high byte doesn't follow the low byte. */
; 269  :             return
; 270  :                 (*(Memory.SRAM + ((((Address&0xFF0000)>>1) |(Address&0x7FFF)) &Memory.SRAMMask)))|
; 271  :                 ((*(Memory.SRAM + (((((Address+1)&0xFF0000)>>1) |((Address+1)&0x7FFF)) &Memory.SRAMMask)))<<8);

	mov	edx, DWORD PTR _Memory+44
	lea	eax, DWORD PTR [ebx+1]
	mov	esi, eax
	shr	esi, 1
	and	esi, 8355840				; 007f8000H
	and	eax, 32767				; 00007fffH
	or	esi, eax
	and	esi, ecx
	movzx	eax, BYTE PTR [esi+edx]
	mov	esi, ebx
	shr	esi, 1
	and	esi, 8355840				; 007f8000H
	and	ebx, 32767				; 00007fffH
	or	esi, ebx
	and	esi, ecx
	movzx	ecx, BYTE PTR [esi+edx]
	pop	edi

; 330  : 
; 331  :       case CMemory::MAP_DEBUG:
; 332  : #ifdef DEBUGGER
; 333  :         printf ("DEBUG R(W) %06x\n", Address);
; 334  : #endif
; 335  :       default:
; 336  :       case CMemory::MAP_NONE:
; 337  :         return (OpenBus | (OpenBus<<8));

	shl	eax, 8
	pop	esi
	or	eax, ecx
	pop	ebx

; 338  :     }
; 339  : }

	ret	0
$LN16@S9xGetWord:

; 272  :         }
; 273  : 
; 274  :       case CMemory::MAP_LOROM_SRAM_B:
; 275  :         if(Multi.sramMaskB>=MEMMAP_MASK){

	mov	ecx, DWORD PTR _Multi+24
	cmp	ecx, 4095				; 00000fffH
	jb	SHORT $LN14@S9xGetWord

; 276  :             return READ_WORD(Multi.sramB + ((((Address&0xFF0000)>>1) |(Address&0x7FFF)) &Multi.sramMaskB));

	mov	eax, DWORD PTR _Multi+40
	mov	edx, ebx
	shr	edx, 1
	and	ebx, 32767				; 00007fffH
	and	edx, 8355840				; 007f8000H
	or	edx, ebx
	pop	edi
	and	edx, ecx
	mov	ax, WORD PTR [edx+eax]
	pop	esi
	pop	ebx

; 338  :     }
; 339  : }

	ret	0
$LN14@S9xGetWord:

; 277  :         } else {
; 278  :             return
; 279  :                 (*(Multi.sramB + ((((Address&0xFF0000)>>1) |(Address&0x7FFF)) &Multi.sramMaskB)))|
; 280  :                 ((*(Multi.sramB + (((((Address+1)&0xFF0000)>>1) |((Address+1)&0x7FFF)) &Multi.sramMaskB)))<<8);

	mov	edx, DWORD PTR _Multi+40
	lea	eax, DWORD PTR [ebx+1]
	mov	esi, eax
	shr	esi, 1
	and	esi, 8355840				; 007f8000H
	and	eax, 32767				; 00007fffH
	or	esi, eax
	and	esi, ecx
	movzx	eax, BYTE PTR [esi+edx]
	mov	esi, ebx
	shr	esi, 1
	and	esi, 8355840				; 007f8000H
	and	ebx, 32767				; 00007fffH
	or	esi, ebx
	and	esi, ecx
	movzx	ecx, BYTE PTR [esi+edx]
	pop	edi

; 330  : 
; 331  :       case CMemory::MAP_DEBUG:
; 332  : #ifdef DEBUGGER
; 333  :         printf ("DEBUG R(W) %06x\n", Address);
; 334  : #endif
; 335  :       default:
; 336  :       case CMemory::MAP_NONE:
; 337  :         return (OpenBus | (OpenBus<<8));

	shl	eax, 8
	pop	esi
	or	eax, ecx
	pop	ebx

; 338  :     }
; 339  : }

	ret	0
$LN13@S9xGetWord:

; 281  :         }
; 282  : 
; 283  :       case CMemory::MAP_RONLY_SRAM:
; 284  :       case CMemory::MAP_HIROM_SRAM:
; 285  :         if(Memory.SRAMMask>=MEMMAP_MASK){

	mov	ecx, DWORD PTR _Memory+45472
	cmp	ecx, 4095				; 00000fffH
	jb	SHORT $LN11@S9xGetWord

; 286  :             return READ_WORD(Memory.SRAM +
; 287  :                              (((Address & 0x7fff) - 0x6000 +
; 288  :                                ((Address & 0xf0000) >> 3)) & Memory.SRAMMask));

	mov	edx, ebx
	shr	edx, 3
	and	ebx, 32767				; 00007fffH
	and	edx, 122880				; 0001e000H
	lea	eax, DWORD PTR [edx+ebx-24576]
	pop	edi
	and	eax, ecx
	mov	ecx, DWORD PTR _Memory+44
	mov	ax, WORD PTR [eax+ecx]
	pop	esi
	pop	ebx

; 338  :     }
; 339  : }

	ret	0
$LN11@S9xGetWord:

; 289  :         } else {
; 290  :             /* no READ_WORD here, since if Memory.SRAMMask=0x7ff
; 291  :              * then the high byte doesn't follow the low byte. */
; 292  :             return (*(Memory.SRAM +
; 293  :                       (((Address & 0x7fff) - 0x6000 +
; 294  :                         ((Address & 0xf0000) >> 3)) & Memory.SRAMMask)) |
; 295  :                     (*(Memory.SRAM +
; 296  :                        ((((Address + 1) & 0x7fff) - 0x6000 +
; 297  :                          (((Address + 1) & 0xf0000) >> 3)) & Memory.SRAMMask)) << 8));

	lea	eax, DWORD PTR [ebx+1]
	mov	edx, eax
	shr	edx, 3
	and	eax, 32767				; 00007fffH
	mov	esi, ebx
	shr	esi, 3
	and	edx, 122880				; 0001e000H
	lea	eax, DWORD PTR [edx+eax-24576]
	mov	edx, DWORD PTR _Memory+44
	and	esi, 122880				; 0001e000H
	and	ebx, 32767				; 00007fffH
	and	eax, ecx
	movzx	eax, BYTE PTR [eax+edx]
	lea	esi, DWORD PTR [esi+ebx-24576]
	and	esi, ecx
	movzx	ecx, BYTE PTR [esi+edx]
	pop	edi

; 330  : 
; 331  :       case CMemory::MAP_DEBUG:
; 332  : #ifdef DEBUGGER
; 333  :         printf ("DEBUG R(W) %06x\n", Address);
; 334  : #endif
; 335  :       default:
; 336  :       case CMemory::MAP_NONE:
; 337  :         return (OpenBus | (OpenBus<<8));

	shl	eax, 8
	pop	esi
	or	eax, ecx
	pop	ebx

; 338  :     }
; 339  : }

	ret	0
$LN10@S9xGetWord:

; 298  :         }
; 299  : 
; 300  :       case CMemory::MAP_BWRAM:
; 301  :         return READ_WORD(Memory.BWRAM + ((Address & 0x7fff) - 0x6000));

	mov	edx, DWORD PTR _Memory+56
	pop	edi
	and	ebx, 32767				; 00007fffH
	mov	ax, WORD PTR [ebx+edx-24576]
	pop	esi
	pop	ebx

; 338  :     }
; 339  : }

	ret	0
$LN8@S9xGetWord:

; 302  : 
; 303  :       case CMemory::MAP_C4:
; 304  :         return (S9xGetC4 (Address & 0xffff) |
; 305  :                 (S9xGetC4 ((Address + 1) & 0xffff) << 8));

	lea	eax, DWORD PTR [ebx+1]
	push	eax
	call	_S9xGetC4
	movzx	esi, al
	push	ebx
	shl	esi, 8
	call	_S9xGetC4
	add	esp, 8
	movzx	eax, al
	pop	edi
	or	eax, esi
	pop	esi
	pop	ebx

; 338  :     }
; 339  : }

	ret	0
$LN7@S9xGetWord:

; 306  : 
; 307  :       case CMemory::MAP_SPC7110_ROM:
; 308  : #ifdef SPC7110_DEBUG
; 309  :         printf("reading spc7110 ROM (word) at %06X\n", Address);
; 310  : #endif
; 311  :         return (S9xGetSPC7110Byte(Address)|
; 312  :                 (S9xGetSPC7110Byte (Address+1))<<8);

	lea	ecx, DWORD PTR [ebx+1]
	push	ecx
	call	_S9xGetSPC7110Byte
	movzx	esi, al
	push	ebx
	shl	esi, 8
	call	_S9xGetSPC7110Byte
	add	esp, 8
	movzx	eax, al
	pop	edi
	or	eax, esi
	pop	esi
	pop	ebx

; 338  :     }
; 339  : }

	ret	0
$LN6@S9xGetWord:

; 313  :       case CMemory::MAP_SPC7110_DRAM:
; 314  : #ifdef SPC7110_DEBUG
; 315  :         printf("reading Bank 50 (word)\n");
; 316  : #endif
; 317  :         return (S9xGetSPC7110(0x4800)|
; 318  :                 (S9xGetSPC7110 (0x4800) << 8));

	push	18432					; 00004800H
	call	_S9xGetSPC7110
	movzx	esi, al
	push	18432					; 00004800H
	shl	esi, 8
	call	_S9xGetSPC7110
	add	esp, 8
	movzx	eax, al
	pop	edi
	or	eax, esi
	pop	esi
	pop	ebx

; 338  :     }
; 339  : }

	ret	0
$LN5@S9xGetWord:

; 319  :       case CMemory::MAP_OBC_RAM:
; 320  :         return GetOBC1(Address&0xFFFF)| (GetOBC1((Address+1)&0xFFFF)<<8);

	lea	edx, DWORD PTR [ebx+1]
	push	edx
	call	_GetOBC1
	movzx	esi, al
	push	ebx
	shl	esi, 8
	call	_GetOBC1
	add	esp, 8
	movzx	eax, al
	pop	edi
	or	eax, esi
	pop	esi
	pop	ebx

; 338  :     }
; 339  : }

	ret	0
$LN4@S9xGetWord:

; 321  : 
; 322  :       case CMemory::MAP_SETA_DSP:
; 323  :         return S9xGetSetaDSP(Address)| (S9xGetSetaDSP((Address+1))<<8);

	lea	eax, DWORD PTR [ebx+1]
	push	eax
	call	_S9xGetSetaDSP
	movzx	esi, al
	push	ebx
	shl	esi, 8
	call	_S9xGetSetaDSP
	add	esp, 8
	movzx	eax, al
	pop	edi
	or	eax, esi
	pop	esi
	pop	ebx

; 338  :     }
; 339  : }

	ret	0
$LN3@S9xGetWord:

; 324  : 
; 325  :       case CMemory::MAP_SETA_RISC:
; 326  :         return S9xGetST018(Address)| (S9xGetST018((Address+1))<<8);

	lea	ecx, DWORD PTR [ebx+1]
	push	ecx
	call	_S9xGetST018
	movzx	esi, al
	push	ebx
	shl	esi, 8
	call	_S9xGetST018
	add	esp, 8
	movzx	eax, al
	pop	edi
	or	eax, esi
	pop	esi
	pop	ebx

; 338  :     }
; 339  : }

	ret	0
$LN2@S9xGetWord:

; 327  : 
; 328  :       case CMemory::MAP_BSX:
; 329  :         return S9xGetBSX(Address)| (S9xGetBSX((Address+1))<<8);

	lea	edx, DWORD PTR [ebx+1]
	push	edx
	call	_S9xGetBSX
	movzx	esi, al
	push	ebx
	shl	esi, 8
	call	_S9xGetBSX
	add	esp, 8
	movzx	eax, al
	pop	edi
	or	eax, esi
	pop	esi
	pop	ebx

; 338  :     }
; 339  : }

	ret	0
$LN1@S9xGetWord:

; 330  : 
; 331  :       case CMemory::MAP_DEBUG:
; 332  : #ifdef DEBUGGER
; 333  :         printf ("DEBUG R(W) %06x\n", Address);
; 334  : #endif
; 335  :       default:
; 336  :       case CMemory::MAP_NONE:
; 337  :         return (OpenBus | (OpenBus<<8));

	movzx	ecx, BYTE PTR _OpenBus
	pop	edi
	mov	eax, ecx
	shl	eax, 8
	pop	esi
	or	eax, ecx
	pop	ebx

; 338  :     }
; 339  : }

	ret	0
	npad	1
$LN43@S9xGetWord:
	DD	$LN22@S9xGetWord
	DD	$LN20@S9xGetWord
	DD	$LN18@S9xGetWord
	DD	$LN16@S9xGetWord
	DD	$LN13@S9xGetWord
	DD	$LN19@S9xGetWord
	DD	$LN8@S9xGetWord
	DD	$LN10@S9xGetWord
	DD	$LN1@S9xGetWord
	DD	$LN1@S9xGetWord
	DD	$LN18@S9xGetWord
	DD	$LN7@S9xGetWord
	DD	$LN6@S9xGetWord
	DD	$LN13@S9xGetWord
	DD	$LN5@S9xGetWord
	DD	$LN4@S9xGetWord
	DD	$LN3@S9xGetWord
	DD	$LN2@S9xGetWord
?S9xGetWord@@YAGIW4s9xwrap_t@@_N@Z ENDP			; S9xGetWord
_TEXT	ENDS