⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cdaudio.cod

📁 2440 CE500BSP包, EBOOT可用DEBUG版调试
💻 COD
📖 第 1 页 / 共 2 页
字号:
; Listing generated by Microsoft (R) Optimizing Compiler Version 13.10.4091 

	TTL	D:\WINCE500\PLATFORM\smdk2440\DRIVERS\atapi\.\cdaudio.cpp
	CODE32

  00000			 AREA	 |.drectve|, DRECTVE
	DCB	"-defaultlib:coredll.lib "
	DCB	"-defaultlib:corelibc.lib "

	EXPORT	|?ControlAudio@CPCIDiskAndCD@@QAAKPAU_IOREQ@@@Z| ; CPCIDiskAndCD::ControlAudio
	EXPORT	|??_C@_1EA@PCEDIIOM@?$AAA?$AAT?$AAA?$AAP?$AAI?$AA?3?$AAP?$AAl?$AAa?$AAy?$AAA?$AAu?$AAd?$AAi?$AAo?$AAM?$AAS?$AAF?$AA?5?$AA?9@| [ DATA ] ; `string'
	EXPORT	|??_C@_1FA@IDFFGBMO@?$AAA?$AAT?$AAA?$AAP?$AAI?$AA?3?$AA?3?$AAP?$AAl?$AAa?$AAy?$AAA?$AAu?$AAd?$AAi?$AAo?$AAM?$AAS?$AAF?$AA?5@| [ DATA ] ; `string'
	IMPORT	|NKDbgPrintfW|
	IMPORT	|dpCurSettings|
	IMPORT	|?AtapiSendCommand@CPCIDiskAndCD@@QAAHPAU_ATAPI_COMMAND_PACKET@@GH@Z| ; CPCIDiskAndCD::AtapiSendCommand
	IMPORT	|?AtapiReceiveData@CPCIDiskAndCD@@QAAHPAU_SGX_BUF@@KPAK@Z| ; CPCIDiskAndCD::AtapiReceiveData
	IMPORT	|memset|

  00000			 AREA	 |.pdata|, PDATA
|$T32169| DCD	|$L32168|
	DCD	0x40010904
; File d:\wince500\platform\smdk2440\drivers\atapi\cdaudio.cpp

  00000			 AREA	 |.rdata| { |??_C@_1FA@IDFFGBMO@?$AAA?$AAT?$AAA?$AAP?$AAI?$AA?3?$AA?3?$AAP?$AAl?$AAa?$AAy?$AAA?$AAu?$AAd?$AAi?$AAo?$AAM?$AAS?$AAF?$AA?5@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1FA@IDFFGBMO@?$AAA?$AAT?$AAA?$AAP?$AAI?$AA?3?$AA?3?$AAP?$AAl?$AAa?$AAy?$AAA?$AAu?$AAd?$AAi?$AAo?$AAM?$AAS?$AAF?$AA?5@| DCB "A"
	DCB	0x0, "T", 0x0, "A", 0x0, "P", 0x0, "I", 0x0, ":", 0x0, ":"
	DCB	0x0, "P", 0x0, "l", 0x0, "a", 0x0, "y", 0x0, "A", 0x0, "u"
	DCB	0x0, "d", 0x0, "i", 0x0, "o", 0x0, "M", 0x0, "S", 0x0, "F"
	DCB	0x0, " ", 0x0, "f", 0x0, "a", 0x0, "i", 0x0, "l", 0x0, "e"
	DCB	0x0, "d", 0x0, " ", 0x0, "o", 0x0, "n", 0x0, " ", 0x0, "r"
	DCB	0x0, "e", 0x0, "c", 0x0, "e", 0x0, "i", 0x0, "v", 0x0, "e"
	DCB	0x0, 0xd, 0x0, 0xa, 0x0, 0x0, 0x0	; `string'

  00000			 AREA	 |.rdata| { |??_C@_1EA@PCEDIIOM@?$AAA?$AAT?$AAA?$AAP?$AAI?$AA?3?$AAP?$AAl?$AAa?$AAy?$AAA?$AAu?$AAd?$AAi?$AAo?$AAM?$AAS?$AAF?$AA?5?$AA?9@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1EA@PCEDIIOM@?$AAA?$AAT?$AAA?$AAP?$AAI?$AA?3?$AAP?$AAl?$AAa?$AAy?$AAA?$AAu?$AAd?$AAi?$AAo?$AAM?$AAS?$AAF?$AA?5?$AA?9@| DCB "A"
	DCB	0x0, "T", 0x0, "A", 0x0, "P", 0x0, "I", 0x0, ":", 0x0, "P"
	DCB	0x0, "l", 0x0, "a", 0x0, "y", 0x0, "A", 0x0, "u", 0x0, "d"
	DCB	0x0, "i", 0x0, "o", 0x0, "M", 0x0, "S", 0x0, "F", 0x0, " "
	DCB	0x0, "-", 0x0, " ", 0x0, "E", 0x0, "n", 0x0, "t", 0x0, "e"
	DCB	0x0, "r", 0x0, "e", 0x0, "d", 0x0, ".", 0x0, 0xd, 0x0, 0xa
	DCB	0x0, 0x0, 0x0				; `string'
; Function compile flags: /Odt

  00000			 AREA	 |.text|, CODE, ARM

  00000		 |?ControlAudio@CPCIDiskAndCD@@QAAKPAU_IOREQ@@@Z| PROC ; CPCIDiskAndCD::ControlAudio

; 15   : {

  00000		 |$L32168|
  00000	e1a0c00d	 mov         r12, sp
  00004	e92d0003	 stmdb       sp!, {r0, r1}
  00008	e92d5000	 stmdb       sp!, {r12, lr}
  0000c	e24dd054	 sub         sp, sp, #0x54
  00010		 |$M32166|

; 16   :     ATAPI_COMMAND_PACKET     CmdPkt;
; 17   :     DWORD dwError = ERROR_SUCCESS;

  00010	e3a03000	 mov         r3, #0
  00014	e58d3028	 str         r3, [sp, #0x28]

; 18   :     SGX_BUF SgBuf;
; 19   :     DWORD dwRet;
; 20   :     
; 21   :     DEBUGMSG(ZONE_IOCTL, (TEXT("ATAPI:PlayAudioMSF - Entered.\r\n")));

  00018	e59f33fc	 ldr         r3, [pc, #0x3FC]
  0001c	e5933440	 ldr         r3, [r3, #0x440]
  00020	e3130040	 tst         r3, #0x40
  00024	0a000004	 beq         |$L32160|
  00028	e59f03f0	 ldr         r0, [pc, #0x3F0]
  0002c	eb000000	 bl          NKDbgPrintfW
  00030	e3a03001	 mov         r3, #1
  00034	e58d3040	 str         r3, [sp, #0x40]
  00038	ea000001	 b           |$L32161|
  0003c		 |$L32160|
  0003c	e3a03000	 mov         r3, #0
  00040	e58d3040	 str         r3, [sp, #0x40]
  00044		 |$L32161|

; 22   : 
; 23   :     memset( (void *)&CmdPkt, 0, sizeof( CmdPkt));

  00044	e3a02014	 mov         r2, #0x14
  00048	e3a01000	 mov         r1, #0
  0004c	e28d0008	 add         r0, sp, #8
  00050	eb000000	 bl          memset

; 24   : 
; 25   :     switch(pIOReq->dwCode) {

  00054	e59d3060	 ldr         r3, [sp, #0x60]
  00058	e2833014	 add         r3, r3, #0x14
  0005c	e5933000	 ldr         r3, [r3]
  00060	e58d3044	 str         r3, [sp, #0x44]
  00064	e59d2044	 ldr         r2, [sp, #0x44]
  00068	e3a03909	 mov         r3, #9, 18
  0006c	e383300c	 orr         r3, r3, #0xC
  00070	e1520003	 cmp         r2, r3
  00074	8a000014	 bhi         |$L32162|
  00078	e59d2044	 ldr         r2, [sp, #0x44]
  0007c	e3a03909	 mov         r3, #9, 18
  00080	e383300c	 orr         r3, r3, #0xC
  00084	e1520003	 cmp         r2, r3
  00088	0a0000a5	 beq         |$L32138|
  0008c	e59d2044	 ldr         r2, [sp, #0x44]
  00090	e3a03802	 mov         r3, #2, 16
  00094	e3833080	 orr         r3, r3, #0x80
  00098	e1520003	 cmp         r2, r3
  0009c	0a000069	 beq         |$L32131|
  000a0	e59d2044	 ldr         r2, [sp, #0x44]
  000a4	e3a03909	 mov         r3, #9, 18
  000a8	e3833004	 orr         r3, r3, #4
  000ac	e1520003	 cmp         r2, r3
  000b0	0a000039	 beq         |$L32115|
  000b4	e59d2044	 ldr         r2, [sp, #0x44]
  000b8	e3a03909	 mov         r3, #9, 18
  000bc	e3833008	 orr         r3, r3, #8
  000c0	e1520003	 cmp         r2, r3
  000c4	0a000093	 beq         |$L32137|
  000c8	ea00009e	 b           |$L32106|
  000cc		 |$L32162|
  000cc	e59d2044	 ldr         r2, [sp, #0x44]
  000d0	e3a03909	 mov         r3, #9, 18
  000d4	e3833010	 orr         r3, r3, #0x10
  000d8	e1520003	 cmp         r2, r3
  000dc	0a000095	 beq         |$L32139|
  000e0	e59d2044	 ldr         r2, [sp, #0x44]
  000e4	e3a03909	 mov         r3, #9, 18
  000e8	e3833018	 orr         r3, r3, #0x18
  000ec	e1520003	 cmp         r2, r3
  000f0	0a000000	 beq         |$L32109|
  000f4	ea000093	 b           |$L32106|
  000f8		 |$L32109|

; 26   :         case IOCTL_CDROM_PLAY_AUDIO_MSF:
; 27   :             {
; 28   :                 PCDROM_PLAY_AUDIO_MSF    pPlayMSF;
; 29   :                 pPlayMSF = (PCDROM_PLAY_AUDIO_MSF) pIOReq->pInBuf;

  000f8	e59d3060	 ldr         r3, [sp, #0x60]
  000fc	e2833018	 add         r3, r3, #0x18
  00100	e5933000	 ldr         r3, [r3]
  00104	e58d302c	 str         r3, [sp, #0x2C]

; 30   :                 if (!pPlayMSF || (sizeof(CDROM_PLAY_AUDIO_MSF) > pIOReq->dwInBufSize)) {

  00108	e59d302c	 ldr         r3, [sp, #0x2C]
  0010c	e3530000	 cmp         r3, #0
  00110	0a000004	 beq         |$L32114|
  00114	e59d3060	 ldr         r3, [sp, #0x60]
  00118	e283301c	 add         r3, r3, #0x1C
  0011c	e5933000	 ldr         r3, [r3]
  00120	e3530006	 cmp         r3, #6
  00124	2a000002	 bcs         |$L32113|
  00128		 |$L32114|

; 31   :                     dwError = ERROR_BAD_ARGUMENTS;

  00128	e3a030a0	 mov         r3, #0xA0
  0012c	e58d3028	 str         r3, [sp, #0x28]

; 32   :                     break;

  00130	ea000084	 b           |$L32106|
  00134		 |$L32113|

; 33   :                 }    
; 34   :                 CmdPkt.Opcode = ATAPI_PACKET_CMD_PLAY_MSF;

  00134	e3a03047	 mov         r3, #0x47
  00138	e5cd3008	 strb        r3, [sp, #8]

; 35   :                 CmdPkt.Byte_3 = pPlayMSF->StartingM;

  0013c	e59d302c	 ldr         r3, [sp, #0x2C]
  00140	e5d33000	 ldrb        r3, [r3]
  00144	e5cd300b	 strb        r3, [sp, #0xB]

; 36   :                 CmdPkt.Byte_4 = pPlayMSF->StartingS;

  00148	e59d302c	 ldr         r3, [sp, #0x2C]
  0014c	e2833001	 add         r3, r3, #1
  00150	e5d33000	 ldrb        r3, [r3]
  00154	e5cd300c	 strb        r3, [sp, #0xC]

; 37   :                 CmdPkt.Byte_5 = pPlayMSF->StartingF;

  00158	e59d302c	 ldr         r3, [sp, #0x2C]
  0015c	e2833002	 add         r3, r3, #2
  00160	e5d33000	 ldrb        r3, [r3]
  00164	e5cd300d	 strb        r3, [sp, #0xD]

; 38   :                 CmdPkt.Byte_6 = pPlayMSF->EndingM;

  00168	e59d302c	 ldr         r3, [sp, #0x2C]
  0016c	e2833003	 add         r3, r3, #3
  00170	e5d33000	 ldrb        r3, [r3]
  00174	e5cd300e	 strb        r3, [sp, #0xE]

; 39   :                 CmdPkt.Byte_7 = pPlayMSF->EndingS;

  00178	e59d302c	 ldr         r3, [sp, #0x2C]
  0017c	e2833004	 add         r3, r3, #4
  00180	e5d33000	 ldrb        r3, [r3]
  00184	e5cd300f	 strb        r3, [sp, #0xF]

; 40   :                 CmdPkt.Byte_8 = pPlayMSF->EndingF;

  00188	e59d302c	 ldr         r3, [sp, #0x2C]
  0018c	e2833005	 add         r3, r3, #5
  00190	e5d33000	 ldrb        r3, [r3]
  00194	e5cd3010	 strb        r3, [sp, #0x10]

; 41   :             }    
; 42   :             break;

  00198	ea00006a	 b           |$L32106|
  0019c		 |$L32115|

; 43   :         case IOCTL_CDROM_SEEK_AUDIO_MSF:    
; 44   :             {
; 45   :                 CDROM_SEEK_AUDIO_MSF *pSeekMSF = (CDROM_SEEK_AUDIO_MSF *) pIOReq->pInBuf;

  0019c	e59d3060	 ldr         r3, [sp, #0x60]
  001a0	e2833018	 add         r3, r3, #0x18
  001a4	e5933000	 ldr         r3, [r3]
  001a8	e58d3030	 str         r3, [sp, #0x30]

; 46   :                 DWORD dwLBAAddr;
; 47   :                 if (!pSeekMSF || (sizeof(CDROM_SEEK_AUDIO_MSF) > pIOReq->dwInBufSize)) {

  001ac	e59d3030	 ldr         r3, [sp, #0x30]
  001b0	e3530000	 cmp         r3, #0
  001b4	0a000004	 beq         |$L32121|
  001b8	e59d3060	 ldr         r3, [sp, #0x60]
  001bc	e283301c	 add         r3, r3, #0x1C
  001c0	e5933000	 ldr         r3, [r3]
  001c4	e3530003	 cmp         r3, #3
  001c8	2a000002	 bcs         |$L32120|
  001cc		 |$L32121|

; 48   :                     dwError = ERROR_BAD_ARGUMENTS;

  001cc	e3a030a0	 mov         r3, #0xA0
  001d0	e58d3028	 str         r3, [sp, #0x28]

; 49   :                     break;

  001d4	ea00005b	 b           |$L32106|
  001d8		 |$L32120|

; 50   :                 }    
; 51   :                 dwLBAAddr = CDROM_MSFCOMP_TO_LBA( pSeekMSF->M, pSeekMSF->S, pSeekMSF->F);

  001d8	e59d3030	 ldr         r3, [sp, #0x30]
  001dc	e5d33000	 ldrb        r3, [r3]
  001e0	e1a01003	 mov         r1, r3
  001e4	e3a0303c	 mov         r3, #0x3C
  001e8	e0020391	 mul         r2, r1, r3
  001ec	e59d3030	 ldr         r3, [sp, #0x30]
  001f0	e2833001	 add         r3, r3, #1
  001f4	e5d33000	 ldrb        r3, [r3]
  001f8	e0821003	 add         r1, r2, r3
  001fc	e3a0304b	 mov         r3, #0x4B
  00200	e0020391	 mul         r2, r1, r3
  00204	e59d3030	 ldr         r3, [sp, #0x30]
  00208	e2833002	 add         r3, r3, #2
  0020c	e5d33000	 ldrb        r3, [r3]
  00210	e0823003	 add         r3, r2, r3
  00214	e2433096	 sub         r3, r3, #0x96
  00218	e58d3034	 str         r3, [sp, #0x34]

; 52   :                 CmdPkt.Opcode = ATAPI_PACKET_CMD_SEEK;

  0021c	e3a0302b	 mov         r3, #0x2B

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -