|
|
@ -41,8 +41,6 @@ _csw: |
|
|
DEFS 13 |
|
|
DEFS 13 |
|
|
_scsi_packet_read_capacity: |
|
|
_scsi_packet_read_capacity: |
|
|
DEFS 12 |
|
|
DEFS 12 |
|
|
_scsi_packet_inquiry: |
|
|
|
|
|
DEFS 12 |
|
|
|
|
|
_scsi_packet_request_sense: |
|
|
_scsi_packet_request_sense: |
|
|
DEFS 12 |
|
|
DEFS 12 |
|
|
_cbw: |
|
|
_cbw: |
|
|
@ -297,7 +295,7 @@ l_do_scsi_cmd_00120: |
|
|
ld sp, ix |
|
|
ld sp, ix |
|
|
pop ix |
|
|
pop ix |
|
|
ret |
|
|
ret |
|
|
;source-doc/scsi-drv/class_scsi.c:54: usb_error scsi_read_capacity(device_config_storage *const dev, scsi_read_capacity_result *cap_result) { |
|
|
|
|
|
|
|
|
;source-doc/scsi-drv/class_scsi.c:54: usb_error scsi_read_capacity(const uint16_t dev_index, scsi_read_capacity_result *cap_result) { |
|
|
; --------------------------------- |
|
|
; --------------------------------- |
|
|
; Function scsi_read_capacity |
|
|
; Function scsi_read_capacity |
|
|
; --------------------------------- |
|
|
; --------------------------------- |
|
|
@ -308,114 +306,58 @@ _scsi_read_capacity: |
|
|
ld hl, -27 |
|
|
ld hl, -27 |
|
|
add hl, sp |
|
|
add hl, sp |
|
|
ld sp, hl |
|
|
ld sp, hl |
|
|
;source-doc/scsi-drv/class_scsi.c:56: cbw_scsi.cbw = scsi_command_block_wrapper; |
|
|
|
|
|
ld hl,0 |
|
|
|
|
|
|
|
|
;source-doc/scsi-drv/class_scsi.c:55: device_config_storage *const dev = (device_config_storage *)get_usb_device_config(dev_index); |
|
|
|
|
|
ld a,(ix+4) |
|
|
|
|
|
call _get_usb_device_config |
|
|
|
|
|
;source-doc/scsi-drv/class_scsi.c:58: cbw_scsi.cbw = scsi_command_block_wrapper; |
|
|
|
|
|
push de |
|
|
|
|
|
ld hl,2 |
|
|
add hl, sp |
|
|
add hl, sp |
|
|
ld e,l |
|
|
|
|
|
ld d,h |
|
|
|
|
|
push hl |
|
|
|
|
|
|
|
|
ex de, hl |
|
|
ld bc,0x000f |
|
|
ld bc,0x000f |
|
|
ld hl,_scsi_command_block_wrapper |
|
|
ld hl,_scsi_command_block_wrapper |
|
|
ldir |
|
|
ldir |
|
|
;source-doc/scsi-drv/class_scsi.c:57: cbw_scsi.read_capacity = scsi_packet_read_capacity; |
|
|
|
|
|
|
|
|
pop de |
|
|
|
|
|
;source-doc/scsi-drv/class_scsi.c:59: cbw_scsi.read_capacity = scsi_packet_read_capacity; |
|
|
|
|
|
push de |
|
|
ld hl,17 |
|
|
ld hl,17 |
|
|
add hl, sp |
|
|
add hl, sp |
|
|
ex de, hl |
|
|
ex de, hl |
|
|
ld bc,0x000c |
|
|
ld bc,0x000c |
|
|
ld hl,_scsi_packet_read_capacity |
|
|
ld hl,_scsi_packet_read_capacity |
|
|
ldir |
|
|
ldir |
|
|
pop bc |
|
|
|
|
|
;source-doc/scsi-drv/class_scsi.c:59: cbw_scsi.cbw.bCBWLUN = 0; |
|
|
|
|
|
|
|
|
pop de |
|
|
|
|
|
;source-doc/scsi-drv/class_scsi.c:61: cbw_scsi.cbw.bCBWLUN = 0; |
|
|
ld (ix-14),0x00 |
|
|
ld (ix-14),0x00 |
|
|
;source-doc/scsi-drv/class_scsi.c:60: cbw_scsi.cbw.bCBWCBLength = sizeof(_scsi_read_capacity); |
|
|
|
|
|
|
|
|
;source-doc/scsi-drv/class_scsi.c:62: cbw_scsi.cbw.bCBWCBLength = sizeof(_scsi_read_capacity); |
|
|
ld (ix-13),0x0c |
|
|
ld (ix-13),0x0c |
|
|
;source-doc/scsi-drv/class_scsi.c:61: cbw_scsi.cbw.dCBWDataTransferLength = sizeof(scsi_read_capacity_result); |
|
|
|
|
|
ld hl,0x0008 |
|
|
|
|
|
add hl, bc |
|
|
|
|
|
ld (hl),0x08 |
|
|
|
|
|
inc hl |
|
|
|
|
|
|
|
|
;source-doc/scsi-drv/class_scsi.c:63: cbw_scsi.cbw.dCBWDataTransferLength = sizeof(scsi_read_capacity_result); |
|
|
|
|
|
ld (ix-19),0x08 |
|
|
xor a |
|
|
xor a |
|
|
ld (hl), a |
|
|
|
|
|
inc hl |
|
|
|
|
|
ld (hl), a |
|
|
|
|
|
inc hl |
|
|
|
|
|
ld (hl), a |
|
|
|
|
|
;source-doc/scsi-drv/class_scsi.c:63: return do_scsi_cmd(dev, &cbw_scsi.cbw, cap_result, false); |
|
|
|
|
|
ld e,(ix+6) |
|
|
|
|
|
ld d,(ix+7) |
|
|
|
|
|
|
|
|
ld (ix-18),a |
|
|
|
|
|
ld (ix-17),a |
|
|
|
|
|
ld (ix-16),a |
|
|
|
|
|
;source-doc/scsi-drv/class_scsi.c:65: return do_scsi_cmd(dev, &cbw_scsi.cbw, cap_result, false); |
|
|
|
|
|
ld c,(ix+6) |
|
|
|
|
|
ld b,(ix+7) |
|
|
xor a |
|
|
xor a |
|
|
push af |
|
|
push af |
|
|
inc sp |
|
|
inc sp |
|
|
push de |
|
|
|
|
|
push bc |
|
|
push bc |
|
|
ld l,(ix+4) |
|
|
|
|
|
ld h,(ix+5) |
|
|
|
|
|
push hl |
|
|
|
|
|
call _do_scsi_cmd |
|
|
|
|
|
;source-doc/scsi-drv/class_scsi.c:64: } |
|
|
|
|
|
ld sp,ix |
|
|
|
|
|
pop ix |
|
|
|
|
|
ret |
|
|
|
|
|
;source-doc/scsi-drv/class_scsi.c:68: usb_error scsi_inquiry(device_config_storage *const dev, scsi_inquiry_result *inq_result) { |
|
|
|
|
|
; --------------------------------- |
|
|
|
|
|
; Function scsi_inquiry |
|
|
|
|
|
; --------------------------------- |
|
|
|
|
|
_scsi_inquiry: |
|
|
|
|
|
push ix |
|
|
|
|
|
ld ix,0 |
|
|
|
|
|
add ix,sp |
|
|
|
|
|
ld hl, -27 |
|
|
|
|
|
|
|
|
ld hl,3 |
|
|
add hl, sp |
|
|
add hl, sp |
|
|
ld sp, hl |
|
|
|
|
|
;source-doc/scsi-drv/class_scsi.c:70: cbw_scsi.cbw = scsi_command_block_wrapper; |
|
|
|
|
|
ld hl,0 |
|
|
|
|
|
add hl, sp |
|
|
|
|
|
ld e,l |
|
|
|
|
|
ld d,h |
|
|
|
|
|
push hl |
|
|
push hl |
|
|
ld bc,0x000f |
|
|
|
|
|
ld hl,_scsi_command_block_wrapper |
|
|
|
|
|
ldir |
|
|
|
|
|
;source-doc/scsi-drv/class_scsi.c:71: cbw_scsi.inquiry = scsi_packet_inquiry; |
|
|
|
|
|
ld hl,17 |
|
|
|
|
|
add hl, sp |
|
|
|
|
|
ex de, hl |
|
|
|
|
|
ld bc,0x000c |
|
|
|
|
|
ld hl,_scsi_packet_inquiry |
|
|
|
|
|
ldir |
|
|
|
|
|
pop bc |
|
|
|
|
|
;source-doc/scsi-drv/class_scsi.c:73: cbw_scsi.cbw.bCBWLUN = 0; |
|
|
|
|
|
ld (ix-14),0x00 |
|
|
|
|
|
;source-doc/scsi-drv/class_scsi.c:74: cbw_scsi.cbw.bCBWCBLength = sizeof(_scsi_packet_inquiry); |
|
|
|
|
|
ld (ix-13),0x0c |
|
|
|
|
|
;source-doc/scsi-drv/class_scsi.c:75: cbw_scsi.cbw.dCBWDataTransferLength = 0x24; |
|
|
|
|
|
ld hl,0x0008 |
|
|
|
|
|
add hl, bc |
|
|
|
|
|
ld (hl),0x24 |
|
|
|
|
|
inc hl |
|
|
|
|
|
xor a |
|
|
|
|
|
ld (hl), a |
|
|
|
|
|
inc hl |
|
|
|
|
|
ld (hl), a |
|
|
|
|
|
inc hl |
|
|
|
|
|
ld (hl), a |
|
|
|
|
|
;source-doc/scsi-drv/class_scsi.c:77: return do_scsi_cmd(dev, &cbw_scsi.cbw, inq_result, false); |
|
|
|
|
|
ld e,(ix+6) |
|
|
|
|
|
ld d,(ix+7) |
|
|
|
|
|
xor a |
|
|
|
|
|
push af |
|
|
|
|
|
inc sp |
|
|
|
|
|
push de |
|
|
push de |
|
|
push bc |
|
|
|
|
|
ld l,(ix+4) |
|
|
|
|
|
ld h,(ix+5) |
|
|
|
|
|
push hl |
|
|
|
|
|
call _do_scsi_cmd |
|
|
call _do_scsi_cmd |
|
|
;source-doc/scsi-drv/class_scsi.c:78: } |
|
|
|
|
|
ld sp,ix |
|
|
|
|
|
|
|
|
pop af |
|
|
|
|
|
pop af |
|
|
|
|
|
pop af |
|
|
|
|
|
inc sp |
|
|
|
|
|
;source-doc/scsi-drv/class_scsi.c:66: } |
|
|
|
|
|
ld sp, ix |
|
|
pop ix |
|
|
pop ix |
|
|
ret |
|
|
ret |
|
|
;source-doc/scsi-drv/class_scsi.c:80: usb_error scsi_test(device_config_storage *const dev) { |
|
|
|
|
|
|
|
|
;source-doc/scsi-drv/class_scsi.c:84: static usb_error scsi_test(device_config_storage *const dev) { |
|
|
; --------------------------------- |
|
|
; --------------------------------- |
|
|
; Function scsi_test |
|
|
; Function scsi_test |
|
|
; --------------------------------- |
|
|
; --------------------------------- |
|
|
@ -426,7 +368,7 @@ _scsi_test: |
|
|
ld hl, -27 |
|
|
ld hl, -27 |
|
|
add hl, sp |
|
|
add hl, sp |
|
|
ld sp, hl |
|
|
ld sp, hl |
|
|
;source-doc/scsi-drv/class_scsi.c:82: cbw_scsi.cbw = scsi_command_block_wrapper; |
|
|
|
|
|
|
|
|
;source-doc/scsi-drv/class_scsi.c:86: cbw_scsi.cbw = scsi_command_block_wrapper; |
|
|
ld hl,0 |
|
|
ld hl,0 |
|
|
add hl, sp |
|
|
add hl, sp |
|
|
ld e,l |
|
|
ld e,l |
|
|
@ -435,7 +377,7 @@ _scsi_test: |
|
|
ld bc,0x000f |
|
|
ld bc,0x000f |
|
|
ld hl,_scsi_command_block_wrapper |
|
|
ld hl,_scsi_command_block_wrapper |
|
|
ldir |
|
|
ldir |
|
|
;source-doc/scsi-drv/class_scsi.c:83: memset(&cbw_scsi.test, 0, sizeof(_scsi_packet_test)); |
|
|
|
|
|
|
|
|
;source-doc/scsi-drv/class_scsi.c:87: memset(&cbw_scsi.test, 0, sizeof(_scsi_packet_test)); |
|
|
ld hl,17 |
|
|
ld hl,17 |
|
|
add hl, sp |
|
|
add hl, sp |
|
|
ld b,0x06 |
|
|
ld b,0x06 |
|
|
@ -447,11 +389,11 @@ l_scsi_test_00103: |
|
|
inc hl |
|
|
inc hl |
|
|
djnz l_scsi_test_00103 |
|
|
djnz l_scsi_test_00103 |
|
|
pop bc |
|
|
pop bc |
|
|
;source-doc/scsi-drv/class_scsi.c:85: cbw_scsi.cbw.bCBWLUN = 0; |
|
|
|
|
|
|
|
|
;source-doc/scsi-drv/class_scsi.c:89: cbw_scsi.cbw.bCBWLUN = 0; |
|
|
ld (ix-14),0x00 |
|
|
ld (ix-14),0x00 |
|
|
;source-doc/scsi-drv/class_scsi.c:86: cbw_scsi.cbw.bCBWCBLength = sizeof(_scsi_packet_test); |
|
|
|
|
|
|
|
|
;source-doc/scsi-drv/class_scsi.c:90: cbw_scsi.cbw.bCBWCBLength = sizeof(_scsi_packet_test); |
|
|
ld (ix-13),0x0c |
|
|
ld (ix-13),0x0c |
|
|
;source-doc/scsi-drv/class_scsi.c:87: cbw_scsi.cbw.dCBWDataTransferLength = 0; |
|
|
|
|
|
|
|
|
;source-doc/scsi-drv/class_scsi.c:91: cbw_scsi.cbw.dCBWDataTransferLength = 0; |
|
|
ld hl,0x0008 |
|
|
ld hl,0x0008 |
|
|
add hl, bc |
|
|
add hl, bc |
|
|
xor a |
|
|
xor a |
|
|
@ -462,7 +404,7 @@ l_scsi_test_00103: |
|
|
ld (hl), a |
|
|
ld (hl), a |
|
|
inc hl |
|
|
inc hl |
|
|
ld (hl), a |
|
|
ld (hl), a |
|
|
;source-doc/scsi-drv/class_scsi.c:89: return do_scsi_cmd(dev, &cbw_scsi.cbw, 0, false); |
|
|
|
|
|
|
|
|
;source-doc/scsi-drv/class_scsi.c:93: return do_scsi_cmd(dev, &cbw_scsi.cbw, 0, false); |
|
|
xor a |
|
|
xor a |
|
|
push af |
|
|
push af |
|
|
inc sp |
|
|
inc sp |
|
|
@ -473,11 +415,11 @@ l_scsi_test_00103: |
|
|
ld h,(ix+5) |
|
|
ld h,(ix+5) |
|
|
push hl |
|
|
push hl |
|
|
call _do_scsi_cmd |
|
|
call _do_scsi_cmd |
|
|
;source-doc/scsi-drv/class_scsi.c:90: } |
|
|
|
|
|
|
|
|
;source-doc/scsi-drv/class_scsi.c:94: } |
|
|
ld sp,ix |
|
|
ld sp,ix |
|
|
pop ix |
|
|
pop ix |
|
|
ret |
|
|
ret |
|
|
;source-doc/scsi-drv/class_scsi.c:94: usb_error scsi_request_sense(device_config_storage *const dev, scsi_sense_result *const sens_result) { |
|
|
|
|
|
|
|
|
;source-doc/scsi-drv/class_scsi.c:98: static usb_error scsi_request_sense(device_config_storage *const dev, scsi_sense_result *const sens_result) { |
|
|
; --------------------------------- |
|
|
; --------------------------------- |
|
|
; Function scsi_request_sense |
|
|
; Function scsi_request_sense |
|
|
; --------------------------------- |
|
|
; --------------------------------- |
|
|
@ -488,7 +430,7 @@ _scsi_request_sense: |
|
|
ld hl, -27 |
|
|
ld hl, -27 |
|
|
add hl, sp |
|
|
add hl, sp |
|
|
ld sp, hl |
|
|
ld sp, hl |
|
|
;source-doc/scsi-drv/class_scsi.c:96: cbw_scsi.cbw = scsi_command_block_wrapper; |
|
|
|
|
|
|
|
|
;source-doc/scsi-drv/class_scsi.c:100: cbw_scsi.cbw = scsi_command_block_wrapper; |
|
|
ld hl,0 |
|
|
ld hl,0 |
|
|
add hl, sp |
|
|
add hl, sp |
|
|
ld e,l |
|
|
ld e,l |
|
|
@ -497,7 +439,7 @@ _scsi_request_sense: |
|
|
ld bc,0x000f |
|
|
ld bc,0x000f |
|
|
ld hl,_scsi_command_block_wrapper |
|
|
ld hl,_scsi_command_block_wrapper |
|
|
ldir |
|
|
ldir |
|
|
;source-doc/scsi-drv/class_scsi.c:97: cbw_scsi.request_sense = scsi_packet_request_sense; |
|
|
|
|
|
|
|
|
;source-doc/scsi-drv/class_scsi.c:101: cbw_scsi.request_sense = scsi_packet_request_sense; |
|
|
ld hl,17 |
|
|
ld hl,17 |
|
|
add hl, sp |
|
|
add hl, sp |
|
|
ex de, hl |
|
|
ex de, hl |
|
|
@ -505,11 +447,11 @@ _scsi_request_sense: |
|
|
ld hl,_scsi_packet_request_sense |
|
|
ld hl,_scsi_packet_request_sense |
|
|
ldir |
|
|
ldir |
|
|
pop bc |
|
|
pop bc |
|
|
;source-doc/scsi-drv/class_scsi.c:99: cbw_scsi.cbw.bCBWLUN = 0; |
|
|
|
|
|
|
|
|
;source-doc/scsi-drv/class_scsi.c:103: cbw_scsi.cbw.bCBWLUN = 0; |
|
|
ld (ix-14),0x00 |
|
|
ld (ix-14),0x00 |
|
|
;source-doc/scsi-drv/class_scsi.c:100: cbw_scsi.cbw.bCBWCBLength = sizeof(_scsi_packet_request_sense); |
|
|
|
|
|
|
|
|
;source-doc/scsi-drv/class_scsi.c:104: cbw_scsi.cbw.bCBWCBLength = sizeof(_scsi_packet_request_sense); |
|
|
ld (ix-13),0x0c |
|
|
ld (ix-13),0x0c |
|
|
;source-doc/scsi-drv/class_scsi.c:101: cbw_scsi.cbw.dCBWDataTransferLength = sizeof(scsi_sense_result); |
|
|
|
|
|
|
|
|
;source-doc/scsi-drv/class_scsi.c:105: cbw_scsi.cbw.dCBWDataTransferLength = sizeof(scsi_sense_result); |
|
|
ld hl,0x0008 |
|
|
ld hl,0x0008 |
|
|
add hl, bc |
|
|
add hl, bc |
|
|
ld (hl),0x12 |
|
|
ld (hl),0x12 |
|
|
@ -520,7 +462,7 @@ _scsi_request_sense: |
|
|
ld (hl), a |
|
|
ld (hl), a |
|
|
inc hl |
|
|
inc hl |
|
|
ld (hl), a |
|
|
ld (hl), a |
|
|
;source-doc/scsi-drv/class_scsi.c:103: return do_scsi_cmd(dev, &cbw_scsi.cbw, sens_result, false); |
|
|
|
|
|
|
|
|
;source-doc/scsi-drv/class_scsi.c:107: return do_scsi_cmd(dev, &cbw_scsi.cbw, sens_result, false); |
|
|
ld e,(ix+6) |
|
|
ld e,(ix+6) |
|
|
ld d,(ix+7) |
|
|
ld d,(ix+7) |
|
|
xor a |
|
|
xor a |
|
|
@ -532,11 +474,11 @@ _scsi_request_sense: |
|
|
ld h,(ix+5) |
|
|
ld h,(ix+5) |
|
|
push hl |
|
|
push hl |
|
|
call _do_scsi_cmd |
|
|
call _do_scsi_cmd |
|
|
;source-doc/scsi-drv/class_scsi.c:104: } |
|
|
|
|
|
|
|
|
;source-doc/scsi-drv/class_scsi.c:108: } |
|
|
ld sp,ix |
|
|
ld sp,ix |
|
|
pop ix |
|
|
pop ix |
|
|
ret |
|
|
ret |
|
|
;source-doc/scsi-drv/class_scsi.c:106: usb_error scsi_sense_init(device_config_storage *const dev) { |
|
|
|
|
|
|
|
|
;source-doc/scsi-drv/class_scsi.c:110: usb_error scsi_sense_init(const uint16_t dev_index) { |
|
|
; --------------------------------- |
|
|
; --------------------------------- |
|
|
; Function scsi_sense_init |
|
|
; Function scsi_sense_init |
|
|
; --------------------------------- |
|
|
; --------------------------------- |
|
|
@ -547,62 +489,52 @@ _scsi_sense_init: |
|
|
ld hl, -18 |
|
|
ld hl, -18 |
|
|
add hl, sp |
|
|
add hl, sp |
|
|
ld sp, hl |
|
|
ld sp, hl |
|
|
;source-doc/scsi-drv/class_scsi.c:110: critical_begin(); |
|
|
|
|
|
|
|
|
;source-doc/scsi-drv/class_scsi.c:111: device_config_storage *const dev = (device_config_storage *)get_usb_device_config(dev_index); |
|
|
|
|
|
ld a,(ix+4) |
|
|
|
|
|
call _get_usb_device_config |
|
|
|
|
|
;source-doc/scsi-drv/class_scsi.c:116: critical_begin(); |
|
|
|
|
|
push de |
|
|
call _critical_begin |
|
|
call _critical_begin |
|
|
;source-doc/scsi-drv/class_scsi.c:111: while ((result = scsi_test(dev)) && --counter > 0) |
|
|
|
|
|
|
|
|
pop de |
|
|
|
|
|
;source-doc/scsi-drv/class_scsi.c:117: while ((result = scsi_test(dev)) && --counter > 0) |
|
|
ld c,0x03 |
|
|
ld c,0x03 |
|
|
l_scsi_sense_init_00102: |
|
|
l_scsi_sense_init_00102: |
|
|
push bc |
|
|
push bc |
|
|
ld l,(ix+4) |
|
|
|
|
|
ld h,(ix+5) |
|
|
|
|
|
push hl |
|
|
|
|
|
|
|
|
push de |
|
|
|
|
|
push de |
|
|
call _scsi_test |
|
|
call _scsi_test |
|
|
pop af |
|
|
pop af |
|
|
ld a, l |
|
|
ld a, l |
|
|
|
|
|
pop de |
|
|
pop bc |
|
|
pop bc |
|
|
ld (_result),a |
|
|
ld (_result),a |
|
|
or a |
|
|
or a |
|
|
jr Z,l_scsi_sense_init_00104 |
|
|
jr Z,l_scsi_sense_init_00104 |
|
|
dec c |
|
|
dec c |
|
|
jr Z,l_scsi_sense_init_00104 |
|
|
jr Z,l_scsi_sense_init_00104 |
|
|
;source-doc/scsi-drv/class_scsi.c:112: scsi_request_sense(dev, &response); |
|
|
|
|
|
|
|
|
;source-doc/scsi-drv/class_scsi.c:118: scsi_request_sense(dev, &response); |
|
|
ld hl,0 |
|
|
ld hl,0 |
|
|
add hl, sp |
|
|
add hl, sp |
|
|
push bc |
|
|
push bc |
|
|
|
|
|
push de |
|
|
push hl |
|
|
push hl |
|
|
ld l,(ix+4) |
|
|
|
|
|
ld h,(ix+5) |
|
|
|
|
|
push hl |
|
|
|
|
|
|
|
|
push de |
|
|
call _scsi_request_sense |
|
|
call _scsi_request_sense |
|
|
pop af |
|
|
pop af |
|
|
pop af |
|
|
pop af |
|
|
|
|
|
pop de |
|
|
pop bc |
|
|
pop bc |
|
|
jr l_scsi_sense_init_00102 |
|
|
jr l_scsi_sense_init_00102 |
|
|
l_scsi_sense_init_00104: |
|
|
l_scsi_sense_init_00104: |
|
|
;source-doc/scsi-drv/class_scsi.c:113: critical_end(); |
|
|
|
|
|
|
|
|
;source-doc/scsi-drv/class_scsi.c:119: critical_end(); |
|
|
call _critical_end |
|
|
call _critical_end |
|
|
;source-doc/scsi-drv/class_scsi.c:115: return result; |
|
|
|
|
|
|
|
|
;source-doc/scsi-drv/class_scsi.c:121: return result; |
|
|
ld hl, (_result) |
|
|
ld hl, (_result) |
|
|
;source-doc/scsi-drv/class_scsi.c:116: } |
|
|
|
|
|
|
|
|
;source-doc/scsi-drv/class_scsi.c:122: } |
|
|
ld sp, ix |
|
|
ld sp, ix |
|
|
pop ix |
|
|
pop ix |
|
|
ret |
|
|
ret |
|
|
;source-doc/scsi-drv/class_scsi.c:120: void spike_x(void) { |
|
|
|
|
|
; --------------------------------- |
|
|
|
|
|
; Function spike_x |
|
|
|
|
|
; --------------------------------- |
|
|
|
|
|
_spike_x: |
|
|
|
|
|
;source-doc/scsi-drv/class_scsi.c:121: scsi_read(5, NULL); |
|
|
|
|
|
ld hl,0x0000 |
|
|
|
|
|
push hl |
|
|
|
|
|
ld l,0x05 |
|
|
|
|
|
push hl |
|
|
|
|
|
call _scsi_read |
|
|
|
|
|
pop af |
|
|
|
|
|
pop af |
|
|
|
|
|
;source-doc/scsi-drv/class_scsi.c:122: } |
|
|
|
|
|
ret |
|
|
|
|
|
;source-doc/scsi-drv/class_scsi.c:124: usb_error scsi_read(const uint16_t dev_index, uint8_t *const buffer) { |
|
|
|
|
|
|
|
|
;source-doc/scsi-drv/class_scsi.c:126: usb_error scsi_read(const uint16_t dev_index, uint8_t *const buffer) { |
|
|
; --------------------------------- |
|
|
; --------------------------------- |
|
|
; Function scsi_read |
|
|
; Function scsi_read |
|
|
; --------------------------------- |
|
|
; --------------------------------- |
|
|
@ -611,12 +543,12 @@ _scsi_read: |
|
|
ld ix,0 |
|
|
ld ix,0 |
|
|
add ix,sp |
|
|
add ix,sp |
|
|
push af |
|
|
push af |
|
|
;source-doc/scsi-drv/class_scsi.c:125: device_config_storage *const dev = (device_config_storage *)get_usb_device_config(dev_index); |
|
|
|
|
|
|
|
|
;source-doc/scsi-drv/class_scsi.c:127: device_config_storage *const dev = (device_config_storage *)get_usb_device_config(dev_index); |
|
|
ld a,(ix+4) |
|
|
ld a,(ix+4) |
|
|
call _get_usb_device_config |
|
|
call _get_usb_device_config |
|
|
pop bc |
|
|
pop bc |
|
|
push de |
|
|
push de |
|
|
;source-doc/scsi-drv/class_scsi.c:127: memset(&cbw, 0, sizeof(cbw_scsi_read_write)); |
|
|
|
|
|
|
|
|
;source-doc/scsi-drv/class_scsi.c:129: memset(&cbw, 0, sizeof(cbw_scsi_read_write)); |
|
|
ld de,_cbw |
|
|
ld de,_cbw |
|
|
ld l, e |
|
|
ld l, e |
|
|
ld h, d |
|
|
ld h, d |
|
|
@ -629,28 +561,28 @@ l_scsi_read_00113: |
|
|
ld (hl),0x00 |
|
|
ld (hl),0x00 |
|
|
inc hl |
|
|
inc hl |
|
|
djnz l_scsi_read_00112 |
|
|
djnz l_scsi_read_00112 |
|
|
;source-doc/scsi-drv/class_scsi.c:128: cbw.cbw = scsi_command_block_wrapper; |
|
|
|
|
|
|
|
|
;source-doc/scsi-drv/class_scsi.c:130: cbw.cbw = scsi_command_block_wrapper; |
|
|
ld bc,0x000f |
|
|
ld bc,0x000f |
|
|
ld hl,_scsi_command_block_wrapper |
|
|
ld hl,_scsi_command_block_wrapper |
|
|
ldir |
|
|
ldir |
|
|
;source-doc/scsi-drv/class_scsi.c:130: cbw.cbw.bCBWLUN = 0; |
|
|
|
|
|
|
|
|
;source-doc/scsi-drv/class_scsi.c:132: cbw.cbw.bCBWLUN = 0; |
|
|
ld hl,_cbw + 13 |
|
|
ld hl,_cbw + 13 |
|
|
ld (hl),0x00 |
|
|
ld (hl),0x00 |
|
|
;source-doc/scsi-drv/class_scsi.c:131: cbw.cbw.bCBWCBLength = sizeof(_scsi_packet_read_write); |
|
|
|
|
|
|
|
|
;source-doc/scsi-drv/class_scsi.c:133: cbw.cbw.bCBWCBLength = sizeof(_scsi_packet_read_write); |
|
|
ld hl,_cbw + 14 |
|
|
ld hl,_cbw + 14 |
|
|
ld (hl),0x0c |
|
|
ld (hl),0x0c |
|
|
;source-doc/scsi-drv/class_scsi.c:132: cbw.cbw.dCBWDataTransferLength = 512; |
|
|
|
|
|
|
|
|
;source-doc/scsi-drv/class_scsi.c:134: cbw.cbw.dCBWDataTransferLength = 512; |
|
|
ld hl,0x0200 |
|
|
ld hl,0x0200 |
|
|
ld (_cbw + 8),hl |
|
|
ld (_cbw + 8),hl |
|
|
ld h, l |
|
|
ld h, l |
|
|
ld (_cbw + 8 + 2),hl |
|
|
ld (_cbw + 8 + 2),hl |
|
|
;source-doc/scsi-drv/class_scsi.c:134: cbw.scsi_cmd.operation_code = 0x28; // read operation |
|
|
|
|
|
|
|
|
;source-doc/scsi-drv/class_scsi.c:136: cbw.scsi_cmd.operation_code = 0x28; // read operation |
|
|
ld hl,_cbw + 15 |
|
|
ld hl,_cbw + 15 |
|
|
ld (hl),0x28 |
|
|
ld (hl),0x28 |
|
|
;source-doc/scsi-drv/class_scsi.c:135: cbw.scsi_cmd.transfer_len[1] = 1; |
|
|
|
|
|
|
|
|
;source-doc/scsi-drv/class_scsi.c:137: cbw.scsi_cmd.transfer_len[1] = 1; |
|
|
ld hl,_cbw + 23 |
|
|
ld hl,_cbw + 23 |
|
|
ld (hl),0x01 |
|
|
ld (hl),0x01 |
|
|
;source-doc/scsi-drv/class_scsi.c:136: cbw.scsi_cmd.lba[0] = dev->current_lba >> 24; |
|
|
|
|
|
|
|
|
;source-doc/scsi-drv/class_scsi.c:138: cbw.scsi_cmd.lba[0] = dev->current_lba >> 24; |
|
|
ld l,(ix-2) |
|
|
ld l,(ix-2) |
|
|
ld h,(ix-1) |
|
|
ld h,(ix-1) |
|
|
ld bc,0x000c |
|
|
ld bc,0x000c |
|
|
@ -662,8 +594,8 @@ l_scsi_read_00113: |
|
|
inc hl |
|
|
inc hl |
|
|
ld a, (hl) |
|
|
ld a, (hl) |
|
|
ld ((_cbw + 17)),a |
|
|
ld ((_cbw + 17)),a |
|
|
;source-doc/scsi-drv/class_scsi.c:137: cbw.scsi_cmd.lba[1] = dev->current_lba >> 16; |
|
|
|
|
|
;source-doc/scsi-drv/class_scsi.c:138: cbw.scsi_cmd.lba[2] = dev->current_lba >> 8; |
|
|
|
|
|
|
|
|
;source-doc/scsi-drv/class_scsi.c:139: cbw.scsi_cmd.lba[1] = dev->current_lba >> 16; |
|
|
|
|
|
;source-doc/scsi-drv/class_scsi.c:140: cbw.scsi_cmd.lba[2] = dev->current_lba >> 8; |
|
|
ld l,c |
|
|
ld l,c |
|
|
ld h,b |
|
|
ld h,b |
|
|
inc hl |
|
|
inc hl |
|
|
@ -674,11 +606,11 @@ l_scsi_read_00113: |
|
|
ld e, (hl) |
|
|
ld e, (hl) |
|
|
ld hl, +(_cbw + 19) |
|
|
ld hl, +(_cbw + 19) |
|
|
ld (hl), e |
|
|
ld (hl), e |
|
|
;source-doc/scsi-drv/class_scsi.c:139: cbw.scsi_cmd.lba[3] = dev->current_lba; |
|
|
|
|
|
|
|
|
;source-doc/scsi-drv/class_scsi.c:141: cbw.scsi_cmd.lba[3] = dev->current_lba; |
|
|
ld a, (bc) |
|
|
ld a, (bc) |
|
|
inc hl |
|
|
inc hl |
|
|
ld (hl), a |
|
|
ld (hl), a |
|
|
;source-doc/scsi-drv/class_scsi.c:141: result = do_scsi_cmd(dev, &cbw.cbw, buffer, false); |
|
|
|
|
|
|
|
|
;source-doc/scsi-drv/class_scsi.c:143: result = do_scsi_cmd(dev, &cbw.cbw, buffer, false); |
|
|
ld e,(ix+6) |
|
|
ld e,(ix+6) |
|
|
ld d,(ix+7) |
|
|
ld d,(ix+7) |
|
|
push bc |
|
|
push bc |
|
|
@ -699,11 +631,11 @@ l_scsi_read_00113: |
|
|
pop bc |
|
|
pop bc |
|
|
ld a, l |
|
|
ld a, l |
|
|
ld (_result), a |
|
|
ld (_result), a |
|
|
;source-doc/scsi-drv/class_scsi.c:143: if (result == USB_ERR_OK) |
|
|
|
|
|
|
|
|
;source-doc/scsi-drv/class_scsi.c:145: if (result == USB_ERR_OK) |
|
|
ld a,(_result) |
|
|
ld a,(_result) |
|
|
or a |
|
|
or a |
|
|
jr NZ,l_scsi_read_00102 |
|
|
jr NZ,l_scsi_read_00102 |
|
|
;source-doc/scsi-drv/class_scsi.c:144: dev->current_lba++; |
|
|
|
|
|
|
|
|
;source-doc/scsi-drv/class_scsi.c:146: dev->current_lba++; |
|
|
ld l, c |
|
|
ld l, c |
|
|
ld h, b |
|
|
ld h, b |
|
|
ld e, (hl) |
|
|
ld e, (hl) |
|
|
@ -732,13 +664,13 @@ l_scsi_read_00114: |
|
|
ld a, h |
|
|
ld a, h |
|
|
ld (bc), a |
|
|
ld (bc), a |
|
|
l_scsi_read_00102: |
|
|
l_scsi_read_00102: |
|
|
;source-doc/scsi-drv/class_scsi.c:145: return result; |
|
|
|
|
|
|
|
|
;source-doc/scsi-drv/class_scsi.c:147: return result; |
|
|
ld hl, (_result) |
|
|
ld hl, (_result) |
|
|
;source-doc/scsi-drv/class_scsi.c:146: } |
|
|
|
|
|
|
|
|
;source-doc/scsi-drv/class_scsi.c:148: } |
|
|
ld sp, ix |
|
|
ld sp, ix |
|
|
pop ix |
|
|
pop ix |
|
|
ret |
|
|
ret |
|
|
;source-doc/scsi-drv/class_scsi.c:148: usb_error scsi_write(device_config_storage *const dev, uint8_t *const buffer) { |
|
|
|
|
|
|
|
|
;source-doc/scsi-drv/class_scsi.c:150: usb_error scsi_write(const uint16_t dev_index, uint8_t *const buffer) { |
|
|
; --------------------------------- |
|
|
; --------------------------------- |
|
|
; Function scsi_write |
|
|
; Function scsi_write |
|
|
; --------------------------------- |
|
|
; --------------------------------- |
|
|
@ -746,7 +678,13 @@ _scsi_write: |
|
|
push ix |
|
|
push ix |
|
|
ld ix,0 |
|
|
ld ix,0 |
|
|
add ix,sp |
|
|
add ix,sp |
|
|
;source-doc/scsi-drv/class_scsi.c:149: memset(&cbw, 0, sizeof(cbw_scsi_read_write)); |
|
|
|
|
|
|
|
|
push af |
|
|
|
|
|
;source-doc/scsi-drv/class_scsi.c:151: device_config_storage *const dev = (device_config_storage *)get_usb_device_config(dev_index); |
|
|
|
|
|
ld a,(ix+4) |
|
|
|
|
|
call _get_usb_device_config |
|
|
|
|
|
pop bc |
|
|
|
|
|
push de |
|
|
|
|
|
;source-doc/scsi-drv/class_scsi.c:153: memset(&cbw, 0, sizeof(cbw_scsi_read_write)); |
|
|
ld de,_cbw |
|
|
ld de,_cbw |
|
|
ld l, e |
|
|
ld l, e |
|
|
ld h, d |
|
|
ld h, d |
|
|
@ -759,30 +697,30 @@ l_scsi_write_00113: |
|
|
ld (hl),0x00 |
|
|
ld (hl),0x00 |
|
|
inc hl |
|
|
inc hl |
|
|
djnz l_scsi_write_00112 |
|
|
djnz l_scsi_write_00112 |
|
|
;source-doc/scsi-drv/class_scsi.c:150: cbw.cbw = scsi_command_block_wrapper; |
|
|
|
|
|
|
|
|
;source-doc/scsi-drv/class_scsi.c:154: cbw.cbw = scsi_command_block_wrapper; |
|
|
ld bc,0x000f |
|
|
ld bc,0x000f |
|
|
ld hl,_scsi_command_block_wrapper |
|
|
ld hl,_scsi_command_block_wrapper |
|
|
ldir |
|
|
ldir |
|
|
;source-doc/scsi-drv/class_scsi.c:152: cbw.cbw.bCBWLUN = 0; |
|
|
|
|
|
|
|
|
;source-doc/scsi-drv/class_scsi.c:156: cbw.cbw.bCBWLUN = 0; |
|
|
ld hl,_cbw + 13 |
|
|
ld hl,_cbw + 13 |
|
|
ld (hl),0x00 |
|
|
ld (hl),0x00 |
|
|
;source-doc/scsi-drv/class_scsi.c:153: cbw.cbw.bCBWCBLength = sizeof(_scsi_packet_read_write); |
|
|
|
|
|
|
|
|
;source-doc/scsi-drv/class_scsi.c:157: cbw.cbw.bCBWCBLength = sizeof(_scsi_packet_read_write); |
|
|
ld hl,_cbw + 14 |
|
|
ld hl,_cbw + 14 |
|
|
ld (hl),0x0c |
|
|
ld (hl),0x0c |
|
|
;source-doc/scsi-drv/class_scsi.c:154: cbw.cbw.dCBWDataTransferLength = 512; |
|
|
|
|
|
|
|
|
;source-doc/scsi-drv/class_scsi.c:158: cbw.cbw.dCBWDataTransferLength = 512; |
|
|
ld hl,0x0200 |
|
|
ld hl,0x0200 |
|
|
ld (_cbw + 8),hl |
|
|
ld (_cbw + 8),hl |
|
|
ld h, l |
|
|
ld h, l |
|
|
ld (_cbw + 8 + 2),hl |
|
|
ld (_cbw + 8 + 2),hl |
|
|
;source-doc/scsi-drv/class_scsi.c:156: cbw.scsi_cmd.operation_code = 0x2A; // write operation |
|
|
|
|
|
|
|
|
;source-doc/scsi-drv/class_scsi.c:160: cbw.scsi_cmd.operation_code = 0x2A; // write operation |
|
|
ld hl,_cbw + 15 |
|
|
ld hl,_cbw + 15 |
|
|
ld (hl),0x2a |
|
|
ld (hl),0x2a |
|
|
;source-doc/scsi-drv/class_scsi.c:157: cbw.scsi_cmd.transfer_len[1] = 1; |
|
|
|
|
|
|
|
|
;source-doc/scsi-drv/class_scsi.c:161: cbw.scsi_cmd.transfer_len[1] = 1; |
|
|
ld hl,_cbw + 23 |
|
|
ld hl,_cbw + 23 |
|
|
ld (hl),0x01 |
|
|
ld (hl),0x01 |
|
|
;source-doc/scsi-drv/class_scsi.c:158: cbw.scsi_cmd.lba[0] = dev->current_lba >> 24; |
|
|
|
|
|
ld l,(ix+4) |
|
|
|
|
|
ld h,(ix+5) |
|
|
|
|
|
|
|
|
;source-doc/scsi-drv/class_scsi.c:162: cbw.scsi_cmd.lba[0] = dev->current_lba >> 24; |
|
|
|
|
|
ld l,(ix-2) |
|
|
|
|
|
ld h,(ix-1) |
|
|
ld bc,0x000c |
|
|
ld bc,0x000c |
|
|
add hl,bc |
|
|
add hl,bc |
|
|
ld c,l |
|
|
ld c,l |
|
|
@ -792,8 +730,8 @@ l_scsi_write_00113: |
|
|
inc hl |
|
|
inc hl |
|
|
ld a, (hl) |
|
|
ld a, (hl) |
|
|
ld ((_cbw + 17)),a |
|
|
ld ((_cbw + 17)),a |
|
|
;source-doc/scsi-drv/class_scsi.c:159: cbw.scsi_cmd.lba[1] = dev->current_lba >> 16; |
|
|
|
|
|
;source-doc/scsi-drv/class_scsi.c:160: cbw.scsi_cmd.lba[2] = dev->current_lba >> 8; |
|
|
|
|
|
|
|
|
;source-doc/scsi-drv/class_scsi.c:163: cbw.scsi_cmd.lba[1] = dev->current_lba >> 16; |
|
|
|
|
|
;source-doc/scsi-drv/class_scsi.c:164: cbw.scsi_cmd.lba[2] = dev->current_lba >> 8; |
|
|
ld l,c |
|
|
ld l,c |
|
|
ld h,b |
|
|
ld h,b |
|
|
inc hl |
|
|
inc hl |
|
|
@ -804,11 +742,11 @@ l_scsi_write_00113: |
|
|
ld e, (hl) |
|
|
ld e, (hl) |
|
|
ld hl, +(_cbw + 19) |
|
|
ld hl, +(_cbw + 19) |
|
|
ld (hl), e |
|
|
ld (hl), e |
|
|
;source-doc/scsi-drv/class_scsi.c:161: cbw.scsi_cmd.lba[3] = dev->current_lba; |
|
|
|
|
|
|
|
|
;source-doc/scsi-drv/class_scsi.c:165: cbw.scsi_cmd.lba[3] = dev->current_lba; |
|
|
ld a, (bc) |
|
|
ld a, (bc) |
|
|
inc hl |
|
|
inc hl |
|
|
ld (hl), a |
|
|
ld (hl), a |
|
|
;source-doc/scsi-drv/class_scsi.c:163: result = do_scsi_cmd(dev, &cbw.cbw, buffer, true); |
|
|
|
|
|
|
|
|
;source-doc/scsi-drv/class_scsi.c:167: result = do_scsi_cmd(dev, &cbw.cbw, buffer, true); |
|
|
ld e,(ix+6) |
|
|
ld e,(ix+6) |
|
|
ld d,(ix+7) |
|
|
ld d,(ix+7) |
|
|
push bc |
|
|
push bc |
|
|
@ -818,8 +756,8 @@ l_scsi_write_00113: |
|
|
push de |
|
|
push de |
|
|
ld hl,_cbw |
|
|
ld hl,_cbw |
|
|
push hl |
|
|
push hl |
|
|
ld l,(ix+4) |
|
|
|
|
|
ld h,(ix+5) |
|
|
|
|
|
|
|
|
ld l,(ix-2) |
|
|
|
|
|
ld h,(ix-1) |
|
|
push hl |
|
|
push hl |
|
|
call _do_scsi_cmd |
|
|
call _do_scsi_cmd |
|
|
pop af |
|
|
pop af |
|
|
@ -829,11 +767,11 @@ l_scsi_write_00113: |
|
|
pop bc |
|
|
pop bc |
|
|
ld a, l |
|
|
ld a, l |
|
|
ld (_result), a |
|
|
ld (_result), a |
|
|
;source-doc/scsi-drv/class_scsi.c:165: if (result == USB_ERR_OK) |
|
|
|
|
|
|
|
|
;source-doc/scsi-drv/class_scsi.c:169: if (result == USB_ERR_OK) |
|
|
ld a,(_result) |
|
|
ld a,(_result) |
|
|
or a |
|
|
or a |
|
|
jr NZ,l_scsi_write_00102 |
|
|
jr NZ,l_scsi_write_00102 |
|
|
;source-doc/scsi-drv/class_scsi.c:166: dev->current_lba++; |
|
|
|
|
|
|
|
|
;source-doc/scsi-drv/class_scsi.c:170: dev->current_lba++; |
|
|
ld l, c |
|
|
ld l, c |
|
|
ld h, b |
|
|
ld h, b |
|
|
ld e, (hl) |
|
|
ld e, (hl) |
|
|
@ -862,77 +800,10 @@ l_scsi_write_00114: |
|
|
ld a, h |
|
|
ld a, h |
|
|
ld (bc), a |
|
|
ld (bc), a |
|
|
l_scsi_write_00102: |
|
|
l_scsi_write_00102: |
|
|
;source-doc/scsi-drv/class_scsi.c:167: return result; |
|
|
|
|
|
|
|
|
;source-doc/scsi-drv/class_scsi.c:171: return result; |
|
|
ld hl, (_result) |
|
|
ld hl, (_result) |
|
|
;source-doc/scsi-drv/class_scsi.c:168: } |
|
|
|
|
|
pop ix |
|
|
|
|
|
ret |
|
|
|
|
|
;source-doc/scsi-drv/class_scsi.c:170: usb_error scsi_eject(device_config_storage *const dev) { |
|
|
|
|
|
; --------------------------------- |
|
|
|
|
|
; Function scsi_eject |
|
|
|
|
|
; --------------------------------- |
|
|
|
|
|
_scsi_eject: |
|
|
|
|
|
push ix |
|
|
|
|
|
ld ix,0 |
|
|
|
|
|
add ix,sp |
|
|
|
|
|
ld hl, -21 |
|
|
|
|
|
add hl, sp |
|
|
|
|
|
ld sp, hl |
|
|
|
|
|
;source-doc/scsi-drv/class_scsi.c:172: cbw_scsi.cbw = scsi_command_block_wrapper; |
|
|
|
|
|
ld hl,0 |
|
|
|
|
|
add hl, sp |
|
|
|
|
|
ld e,l |
|
|
|
|
|
ld d,h |
|
|
|
|
|
push hl |
|
|
|
|
|
ld bc,0x000f |
|
|
|
|
|
ld hl,_scsi_command_block_wrapper |
|
|
|
|
|
ldir |
|
|
|
|
|
;source-doc/scsi-drv/class_scsi.c:174: memset(&cbw_scsi.eject, 0, sizeof(_scsi_packet_eject)); |
|
|
|
|
|
ld hl,17 |
|
|
|
|
|
add hl, sp |
|
|
|
|
|
ld b,0x03 |
|
|
|
|
|
l_scsi_eject_00103: |
|
|
|
|
|
xor a |
|
|
|
|
|
ld (hl), a |
|
|
|
|
|
inc hl |
|
|
|
|
|
ld (hl), a |
|
|
|
|
|
inc hl |
|
|
|
|
|
djnz l_scsi_eject_00103 |
|
|
|
|
|
pop bc |
|
|
|
|
|
;source-doc/scsi-drv/class_scsi.c:176: cbw_scsi.eject.operation_code = 0x1B; |
|
|
|
|
|
ld (ix-6),0x1b |
|
|
|
|
|
;source-doc/scsi-drv/class_scsi.c:177: cbw_scsi.eject.loej = 1; |
|
|
|
|
|
ld hl,19 |
|
|
|
|
|
add hl, sp |
|
|
|
|
|
set 1, (hl) |
|
|
|
|
|
;source-doc/scsi-drv/class_scsi.c:179: cbw_scsi.cbw.bCBWLUN = 0; |
|
|
|
|
|
ld (ix-8),0x00 |
|
|
|
|
|
;source-doc/scsi-drv/class_scsi.c:180: cbw_scsi.cbw.bCBWCBLength = sizeof(_scsi_packet_eject); |
|
|
|
|
|
ld (ix-7),0x06 |
|
|
|
|
|
;source-doc/scsi-drv/class_scsi.c:181: cbw_scsi.cbw.dCBWDataTransferLength = 0; |
|
|
|
|
|
ld hl,0x0008 |
|
|
|
|
|
add hl, bc |
|
|
|
|
|
xor a |
|
|
|
|
|
ld (hl), a |
|
|
|
|
|
inc hl |
|
|
|
|
|
ld (hl), a |
|
|
|
|
|
inc hl |
|
|
|
|
|
ld (hl), a |
|
|
|
|
|
inc hl |
|
|
|
|
|
ld (hl), a |
|
|
|
|
|
;source-doc/scsi-drv/class_scsi.c:183: return do_scsi_cmd(dev, &cbw_scsi.cbw, 0, false); |
|
|
|
|
|
xor a |
|
|
|
|
|
push af |
|
|
|
|
|
inc sp |
|
|
|
|
|
ld hl,0x0000 |
|
|
|
|
|
push hl |
|
|
|
|
|
push bc |
|
|
|
|
|
ld l,(ix+4) |
|
|
|
|
|
ld h,(ix+5) |
|
|
|
|
|
push hl |
|
|
|
|
|
call _do_scsi_cmd |
|
|
|
|
|
;source-doc/scsi-drv/class_scsi.c:184: } |
|
|
|
|
|
ld sp,ix |
|
|
|
|
|
|
|
|
;source-doc/scsi-drv/class_scsi.c:172: } |
|
|
|
|
|
ld sp, ix |
|
|
pop ix |
|
|
pop ix |
|
|
ret |
|
|
ret |
|
|
_scsi_command_block_wrapper: |
|
|
_scsi_command_block_wrapper: |
|
|
@ -975,19 +846,6 @@ _scsi_packet_read_capacity: |
|
|
DEFB +0x00 |
|
|
DEFB +0x00 |
|
|
DEFB +0x00 |
|
|
DEFB +0x00 |
|
|
DEFB +0x00 |
|
|
DEFB +0x00 |
|
|
_scsi_packet_inquiry: |
|
|
|
|
|
DEFB +0x12 |
|
|
|
|
|
DEFB +0x00 |
|
|
|
|
|
DEFB +0x00 |
|
|
|
|
|
DEFB +0x00 |
|
|
|
|
|
DEFB +0x24 |
|
|
|
|
|
DEFB +0x00 |
|
|
|
|
|
DEFB +0x00 |
|
|
|
|
|
DEFB +0x00 |
|
|
|
|
|
DEFB +0x00 |
|
|
|
|
|
DEFB +0x00 |
|
|
|
|
|
DEFB +0x00 |
|
|
|
|
|
DEFB +0x00 |
|
|
|
|
|
_scsi_packet_request_sense: |
|
|
_scsi_packet_request_sense: |
|
|
DEFB +0x03 |
|
|
DEFB +0x03 |
|
|
DEFB +0x00 |
|
|
DEFB +0x00 |
|
|
|