📄 ata_wc.lst
字号:
00280
00281
00AB 00282 AtaCmdCloseDoor:
00AB 301B 00283 movlw 0x1b
00AC 00A2 00284 movwf AtaPacket
00AD 3003 00285 movlw 0x03
00AE 00A6 00286 movwf AtaPacket+4
00AF 2??? 00287 call AtaWritePacket
00B0 2??? 00288 call AtaReadPacketEmpty
00B1 1903 00289 btfsc status,z
00B2 0008 00290 return
00B3 0BD6 00291 decfsz AtaErrorRetries,f
00B4 2??? 00292 goto AtaCmdCloseDoor
00B5 2??? 00293 call AtaReset
00B6 0008 00294 return
00295
00296
00297
00298
00299
00300
00B7 00301 AtaCmdOpenDoor:
00B7 301B 00302 movlw 0x1b
00B8 00A2 00303 movwf AtaPacket
00B9 3002 00304 movlw 0x02
00BA 00A6 00305 movwf AtaPacket+4
00BB 2??? 00306 call AtaWritePacket
00BC 2??? 00307 call AtaReadPacketEmpty
00BD 1903 00308 btfsc status,z
00BE 0008 00309 return
00BF 0BD6 00310 decfsz AtaErrorRetries,f
00C0 2??? 00311 goto AtaCmdOpenDoor
00C1 2??? 00312 call AtaReset
00C2 0008 00313 return
00314
00315
00316
00317
00318
00319
00320 #ifdef LCD
00321 AtaCmdInquiry:
00322 movlw 0x12
00323 movwf AtaPacket
00324 movlw 0xff
00325 movwf AtaPacket+4
00326 call AtaWritePacket
00327 call AtaReadPacketInquiry
00328 btfsc status,z
MPASM 4.00 Released ATA_WC.ASM 4-4-2005 11:55:09 PAGE 16
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
00329 return
00330 decfsz AtaErrorRetries,f
00331 goto AtaCmdInquiry
00332 call AtaReset
00333 return
00334 #endif
00335
00336
00337
00338
00339
00340
00C3 00341 AtaCmdReadToc:
00C3 3043 00342 movlw 0x43
00C4 00A2 00343 movwf AtaPacket
00C5 3002 00344 movlw 0x02
00C6 00A3 00345 movwf AtaPacket+1
00C7 30FF 00346 movlw 0xff
00C8 00A9 00347 movwf AtaPacket+7
00C9 30FF 00348 movlw 0xff
00CA 00AA 00349 movwf AtaPacket+8
00CB 2??? 00350 call AtaWritePacket
00CC 2??? 00351 call AtaReadPacketToc
00CD 1903 00352 btfsc status,z
00CE 0008 00353 return
00CF 0BD6 00354 decfsz AtaErrorRetries,f
00D0 2??? 00355 goto AtaCmdReadToc
00D1 2??? 00356 call AtaReset
00D2 0008 00357 return
00358
00359
00360
00361
00362
00363
00D3 00364 AtaCmdReadSubChannel:
00D3 3042 00365 movlw 0x42
00D4 00A2 00366 movwf AtaPacket
00D5 3002 00367 movlw 0x02
00D6 00A3 00368 movwf AtaPacket+1
00D7 3040 00369 movlw 0x40
00D8 00A4 00370 movwf AtaPacket+2
00D9 3001 00371 movlw 0x01
00DA 00A5 00372 movwf AtaPacket+3
00DB 30FF 00373 movlw 0xff
00DC 00A9 00374 movwf AtaPacket+7
00DD 30FF 00375 movlw 0xff
00DE 00AA 00376 movwf AtaPacket+8
00DF 2??? 00377 call AtaWritePacket
00E0 2??? 00378 call AtaReadPacketSubChannel
00E1 1903 00379 btfsc status,z
00E2 0008 00380 return
00E3 0BD6 00381 decfsz AtaErrorRetries,f
MPASM 4.00 Released ATA_WC.ASM 4-4-2005 11:55:09 PAGE 17
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
00E4 2??? 00382 goto AtaCmdReadSubChannel
00E5 2??? 00383 call AtaReset
00E6 0008 00384 return
00385
00386
00387
00388
00389
00390
00391
00392
00393
00E7 00394 AtaWritePacket:
00E7 300A 00395 movlw 0x0a
00E8 00B0 00396 movwf AtaDataLsb
00E9 3006 00397 movlw ATA_REG_DRIVEHEAD
00EA 2??? 00398 call AtaWriteRegister
00399
00EB 01B0 00400 clrf AtaDataLsb
00EC 3001 00401 movlw ATA_REG_FEATURES
00ED 2??? 00402 call AtaWriteRegister
00403
00EE 01B0 00404 clrf AtaDataLsb
00EF 3004 00405 movlw ATA_REG_CYLINDERLOW
00F0 2??? 00406 call AtaWriteRegister
00407
00F1 01B0 00408 clrf AtaDataLsb
00F2 3005 00409 movlw ATA_REG_CYLINDERHIGH
00F3 2??? 00410 call AtaWriteRegister
00411
00F4 30A0 00412 movlw ATA_COMMAND_PACKET
00F5 00B0 00413 movwf AtaDataLsb
00F6 3007 00414 movlw ATA_REG_COMMAND
00F7 2??? 00415 call AtaWriteRegister
00416
00417
00F8 2??? 00418 call Delay10ms
00419
00420
00F9 00421 AtaWc2:
00F9 3007 00422 movlw ATA_REG_STATUS
00FA 2??? 00423 call AtaReadRegister
00FB 0830 00424 movf AtaDataLsb,w
00FC 3908 00425 andlw 0x08
00FD 1903 00426 btfsc status,z
00FE 2??? 00427 goto AtaWc2
00428
00FF 1303 00429 bcf status,rp1
0100 1683 00430 bsf status,rp0
0101 3000 00431 movlw PORTB_CONFIG2
Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct.
0102 0086 00432 movwf trisb
0103 3000 00433 movlw PORTC_CONFIG2
MPASM 4.00 Released ATA_WC.ASM 4-4-2005 11:55:09 PAGE 18
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct.
0104 0087 00434 movwf trisc
0105 1303 00435 bcf status,rp1
0106 1283 00436 bcf status,rp0
0107 1085 00437 bcf porta,ATA_A0
0108 1105 00438 bcf porta,ATA_A1
0109 1185 00439 bcf porta,ATA_A2
010A 3006 00440 movlw 0x06
010B 00A0 00441 movwf AtaCounter
010C 3022 00442 movlw AtaPacket
010D 0084 00443 movwf fsr
010E 00444 AtaWP1:
010E 0800 00445 movf indf,w
010F 0086 00446 movwf portb
0110 0A84 00447 incf fsr,f
0111 0800 00448 movf indf,w
0112 0087 00449 movwf portc
0113 2??? 00450 call Delay10ms
0114 0A84 00451 incf fsr,f
0115 1285 00452 bcf porta,ATA_IOW
0116 2??? 00453 call Delay10ms
0117 1685 00454 bsf porta,ATA_IOW
0118 2??? 00455 call Delay10ms
0119 0BA0 00456 decfsz AtaCounter,f
011A 2??? 00457 goto AtaWP1
00458
00459
011B 300C 00460 movlw D'12'
011C 00A0 00461 movwf AtaCounter
011D 3022 00462 movlw AtaPacket
011E 0084 00463 movwf fsr
011F 0180 00464 Au1: clrf indf
0120 0A84 00465 incf fsr,f
0121 0BA0 00466 decfsz AtaCounter,f
0122 2??? 00467 goto Au1
0123 0008
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -