diff --git a/Dockerfile b/Dockerfile index d2e716e1..da6c902b 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM ubuntu:jammy-20240111 as basebuilder +FROM ubuntu:jammy-20240111 AS basebuilder # This docker file can be used to build a tool chain docker image for building RomWBW images. @@ -10,7 +10,7 @@ FROM ubuntu:jammy-20240111 as basebuilder # After you have built the above image (called romwbw-chain), you can use it to compile and build the RomWBW images # as per the standard make scripts within RomWBW. # Start a new terminal, cd to where you have clone RomWBW, and then run this command: -# docker run -v ${PWD}:/src/ --privileged=true -u $(id -u ${USER}):$(id -g ${USER}) -it romwbw-chain:latest +# docker run -v ${PWD}:/src/ --privileged=true -u $(id -u ${USER}):$(id -g ${USER}) -it romwbw-chain # you can now compile and build the required images: @@ -21,13 +21,11 @@ FROM ubuntu:jammy-20240111 as basebuilder # when finish, type 'exit' to return to back to your standard terminal session LABEL Maintainer="Dean Netherton" \ - Description="spike to use clang for ez80 target" + Description="RomWBW builder platform" ENV DEBIAN_FRONTEND=noninteractive - RUN dpkg --add-architecture i386 -RUN sed -i 's/http:\/\/archive\.ubuntu\.com\/ubuntu/http:\/\/au.archive.ubuntu.com\/ubuntu/g' /etc/apt/sources.list RUN apt update -y RUN apt dist-upgrade -y RUN apt install -y --no-install-recommends cmake lzip ca-certificates mtools build-essential dos2unix libboost-all-dev texinfo texi2html libxml2-dev subversion bison flex zlib1g-dev m4 git wget dosfstools curl @@ -35,10 +33,10 @@ RUN apt install -y --no-install-recommends cmake lzip ca-certificates mtools bui RUN mkdir work WORKDIR /work -FROM basebuilder as main +FROM basebuilder AS main LABEL Maintainer="Dean Netherton" \ - Description="spike to build RomWBW" + Description="RomWBW builder platform" RUN mkdir /src WORKDIR /src/ diff --git a/Source/HBIOS/ch376-native/base-drv/usb-base-drv.c.s b/Source/HBIOS/ch376-native/base-drv/usb-base-drv.c.s index 2484c0eb..bdc2d537 100644 --- a/Source/HBIOS/ch376-native/base-drv/usb-base-drv.c.s +++ b/Source/HBIOS/ch376-native/base-drv/usb-base-drv.c.s @@ -33,6 +33,8 @@ _USB_MODULE_LEDS .EQU 0xff8a ; .area _INITIALIZED removed by z88dk +_storage_count: + DEFS 1 #ENDIF @@ -83,3 +85,5 @@ _chnative_seek: pop hl pop bc jp (hl) +_storage_count: + DEFB +0x00 diff --git a/Source/HBIOS/ch376-native/base-drv/usb-init.c.s b/Source/HBIOS/ch376-native/base-drv/usb-init.c.s index 53dbab60..5ea251ce 100644 --- a/Source/HBIOS/ch376-native/base-drv/usb-init.c.s +++ b/Source/HBIOS/ch376-native/base-drv/usb-init.c.s @@ -94,7 +94,7 @@ _chnative_init: ld e, l ld d, h inc de - ld bc,0x0062 + ld bc,0x0068 ldir ;source-doc/base-drv/usb-init.c:28: ch_cmd_reset_all(); call _ch_cmd_reset_all diff --git a/Source/HBIOS/ch376-native/base-drv/usb_state.c.s b/Source/HBIOS/ch376-native/base-drv/usb_state.c.s index 0f59f64d..62bea257 100644 --- a/Source/HBIOS/ch376-native/base-drv/usb_state.c.s +++ b/Source/HBIOS/ch376-native/base-drv/usb_state.c.s @@ -92,8 +92,8 @@ l_find_device_config_00106: ret _device_config_sizes: DEFB +0x00 - DEFB +0x10 - DEFB +0x10 + DEFB +0x11 + DEFB +0x11 DEFB +0x0c DEFB +0x06 DEFB 0x00 @@ -175,7 +175,7 @@ l_next_device_config_00102: add hl, de ex de, hl ;source-doc/base-drv/usb_state.c:61: if (result >= (device_config *)&usb_state->device_configs_end) - ld hl,0x0062 + ld hl,0x0068 add hl, bc ld a, e sub l diff --git a/Source/HBIOS/ch376-native/base-drv/work-area.c.s b/Source/HBIOS/ch376-native/base-drv/work-area.c.s index 6f872426..adb9c88a 100644 --- a/Source/HBIOS/ch376-native/base-drv/work-area.c.s +++ b/Source/HBIOS/ch376-native/base-drv/work-area.c.s @@ -34,7 +34,7 @@ _USB_MODULE_LEDS .EQU 0xff8a ; .area _INITIALIZED removed by z88dk _x: - DEFS 99 + DEFS 105 #ENDIF @@ -149,4 +149,10 @@ _x: DEFB 0x00 DEFB 0x00 DEFB 0x00 + DEFB 0x00 + DEFB 0x00 + DEFB 0x00 + DEFB 0x00 + DEFB 0x00 + DEFB 0x00 DEFB +0x00 diff --git a/Source/HBIOS/ch376-native/scsi-drv/scsi-init.c.s b/Source/HBIOS/ch376-native/scsi-drv/scsi-init.c.s index 2009fae2..aac79d77 100644 --- a/Source/HBIOS/ch376-native/scsi-drv/scsi-init.c.s +++ b/Source/HBIOS/ch376-native/scsi-drv/scsi-init.c.s @@ -56,7 +56,7 @@ _chscsi_init: push ix ld ix,0 add ix,sp - dec sp + push af ;source-doc/scsi-drv/scsi-init.c:15: do { ld (ix-1),0x01 l_chscsi_init_00105: @@ -88,24 +88,43 @@ l_chscsi_init_00105: ld hl,scsi_init_str_1 call _print_string pop de -;source-doc/scsi-drv/scsi-init.c:28: scsi_sense_init(storage_device); +;source-doc/scsi-drv/scsi-init.c:27: print_uint16(storage_count); + ld hl,(_storage_count) + ld h,0x00 + push de + call _print_uint16 + ld hl,scsi_init_str_2 + call _print_string + pop de +;source-doc/scsi-drv/scsi-init.c:29: storage_device->drive_index = storage_count++; + ld hl,0x0010 + add hl, de + ld c, l + ld b, h + ld hl,_storage_count + ld a, (hl) + ld (ix-2),a + inc (hl) + ld a,(ix-2) + ld (bc), a +;source-doc/scsi-drv/scsi-init.c:30: scsi_sense_init(storage_device); push de push de call _scsi_sense_init pop af pop de -;source-doc/scsi-drv/scsi-init.c:29: dio_add_entry(ch_scsi_fntbl, storage_device); +;source-doc/scsi-drv/scsi-init.c:31: dio_add_entry(ch_scsi_fntbl, storage_device); ld hl,_ch_scsi_fntbl call _dio_add_entry l_chscsi_init_00106: -;source-doc/scsi-drv/scsi-init.c:32: } while (++index != MAX_NUMBER_OF_DEVICES + 1); +;source-doc/scsi-drv/scsi-init.c:34: } while (++index != MAX_NUMBER_OF_DEVICES + 1); inc (ix-1) ld a,(ix-1) sub 0x07 jr NZ,l_chscsi_init_00105 l_chscsi_init_00108: -;source-doc/scsi-drv/scsi-init.c:33: } - inc sp +;source-doc/scsi-drv/scsi-init.c:35: } + ld sp, ix pop ix ret scsi_init_str_0: @@ -114,5 +133,8 @@ scsi_init_str_0: DEFM "USB: MASS STORAGE @ $" DEFB 0x00 scsi_init_str_1: + DEFM ":$" + DEFB 0x00 +scsi_init_str_2: DEFM " $" DEFB 0x00 diff --git a/Source/HBIOS/ch376-native/source-doc/base-drv/dev_transfers.h b/Source/HBIOS/ch376-native/source-doc/base-drv/dev_transfers.h index 8eda8748..6a29097f 100644 --- a/Source/HBIOS/ch376-native/source-doc/base-drv/dev_transfers.h +++ b/Source/HBIOS/ch376-native/source-doc/base-drv/dev_transfers.h @@ -37,9 +37,9 @@ typedef struct { typedef struct { COMMON_DEVICE_CONFIG // bytes: 0-2 - endpoint_param endpoints[3]; // bytes: 3-5, 6-8, 9-11 bulk in/out and interrupt + endpoint_param endpoints[3]; // bytes: 3-5, 6-8, 9-11 bulk in/out and interrupt uint32_t current_lba; // bytes 12-15 - // uint8_t drive_index; // byte 16 + uint8_t drive_index; // byte 16 } device_config_storage; typedef struct { diff --git a/Source/HBIOS/ch376-native/source-doc/base-drv/usb-base-drv.c b/Source/HBIOS/ch376-native/source-doc/base-drv/usb-base-drv.c index a0ce48b2..3320fd4d 100644 --- a/Source/HBIOS/ch376-native/source-doc/base-drv/usb-base-drv.c +++ b/Source/HBIOS/ch376-native/source-doc/base-drv/usb-base-drv.c @@ -1,7 +1,7 @@ #include "usb-base-drv.h" -/* The total number of mounted devices (scsi, ufi and keyboard) */ -// uint8_t usb_device_count = 0; +/* The total number of storage devices (scsi, ufi) */ +uint8_t storage_count = 0; uint8_t chnative_seek(const uint32_t lba, device_config_storage *const storage_device) __sdcccall(1) { storage_device->current_lba = lba; diff --git a/Source/HBIOS/ch376-native/source-doc/base-drv/usb-base-drv.h b/Source/HBIOS/ch376-native/source-doc/base-drv/usb-base-drv.h index 0f1e89fc..3d2abd53 100644 --- a/Source/HBIOS/ch376-native/source-doc/base-drv/usb-base-drv.h +++ b/Source/HBIOS/ch376-native/source-doc/base-drv/usb-base-drv.h @@ -4,7 +4,7 @@ #include #include -// extern uint8_t usb_device_count; +extern uint8_t storage_count; extern uint8_t chnative_seek(const uint32_t lba, device_config_storage *const storage_device) __sdcccall(1); diff --git a/Source/HBIOS/ch376-native/source-doc/scsi-drv/scsi-init.c b/Source/HBIOS/ch376-native/source-doc/scsi-drv/scsi-init.c index 9838812f..5032703b 100644 --- a/Source/HBIOS/ch376-native/source-doc/scsi-drv/scsi-init.c +++ b/Source/HBIOS/ch376-native/source-doc/scsi-drv/scsi-init.c @@ -23,8 +23,10 @@ void chscsi_init(void) { if (t == USB_IS_MASS_STORAGE) { print_string("\r\nUSB: MASS STORAGE @ $"); print_uint16(index); + print_string(":$"); + print_uint16(storage_count); print_string(" $"); - + storage_device->drive_index = storage_count++; scsi_sense_init(storage_device); dio_add_entry(ch_scsi_fntbl, storage_device); } diff --git a/Source/HBIOS/ch376-native/source-doc/ufi-drv/ufi-init.c b/Source/HBIOS/ch376-native/source-doc/ufi-drv/ufi-init.c index 00123530..9ddcebb0 100644 --- a/Source/HBIOS/ch376-native/source-doc/ufi-drv/ufi-init.c +++ b/Source/HBIOS/ch376-native/source-doc/ufi-drv/ufi-init.c @@ -22,7 +22,10 @@ void chufi_init(void) { if (t == USB_IS_FLOPPY) { print_string("\r\nUSB: FLOPPY @ $"); print_uint16(index); + print_string(":$"); + print_uint16(storage_count); print_string(" $"); + storage_device->drive_index = storage_count++; dio_add_entry(ch_ufi_fntbl, storage_device); } diff --git a/Source/HBIOS/ch376-native/ufi-drv/ufi-init.c.s b/Source/HBIOS/ch376-native/ufi-drv/ufi-init.c.s index a3f39762..f613d00f 100644 --- a/Source/HBIOS/ch376-native/ufi-drv/ufi-init.c.s +++ b/Source/HBIOS/ch376-native/ufi-drv/ufi-init.c.s @@ -56,7 +56,7 @@ _chufi_init: push ix ld ix,0 add ix,sp - dec sp + push af ;source-doc/ufi-drv/ufi-init.c:14: do { ld (ix-1),0x01 l_chufi_init_00105: @@ -88,18 +88,37 @@ l_chufi_init_00105: ld hl,ufi_init_str_1 call _print_string pop de -;source-doc/ufi-drv/ufi-init.c:26: dio_add_entry(ch_ufi_fntbl, storage_device); +;source-doc/ufi-drv/ufi-init.c:26: print_uint16(storage_count); + ld hl,(_storage_count) + ld h,0x00 + push de + call _print_uint16 + ld hl,ufi_init_str_2 + call _print_string + pop de +;source-doc/ufi-drv/ufi-init.c:28: storage_device->drive_index = storage_count++; + ld hl,0x0010 + add hl, de + ld c, l + ld b, h + ld hl,_storage_count + ld a, (hl) + ld (ix-2),a + inc (hl) + ld a,(ix-2) + ld (bc), a +;source-doc/ufi-drv/ufi-init.c:29: dio_add_entry(ch_ufi_fntbl, storage_device); ld hl,_ch_ufi_fntbl call _dio_add_entry l_chufi_init_00106: -;source-doc/ufi-drv/ufi-init.c:29: } while (++index != MAX_NUMBER_OF_DEVICES + 1); +;source-doc/ufi-drv/ufi-init.c:32: } while (++index != MAX_NUMBER_OF_DEVICES + 1); inc (ix-1) ld a,(ix-1) sub 0x07 jr NZ,l_chufi_init_00105 l_chufi_init_00108: -;source-doc/ufi-drv/ufi-init.c:30: } - inc sp +;source-doc/ufi-drv/ufi-init.c:33: } + ld sp, ix pop ix ret ufi_init_str_0: @@ -108,9 +127,12 @@ ufi_init_str_0: DEFM "USB: FLOPPY @ $" DEFB 0x00 ufi_init_str_1: + DEFM ":$" + DEFB 0x00 +ufi_init_str_2: DEFM " $" DEFB 0x00 -;source-doc/ufi-drv/ufi-init.c:32: uint32_t chufi_get_cap(device_config *const dev) { +;source-doc/ufi-drv/ufi-init.c:35: uint32_t chufi_get_cap(device_config *const dev) { ; --------------------------------- ; Function chufi_get_cap ; --------------------------------- @@ -121,7 +143,7 @@ _chufi_get_cap: ld hl, -72 add hl, sp ld sp, hl -;source-doc/ufi-drv/ufi-init.c:34: memset(&response, 0, sizeof(ufi_format_capacities_response)); +;source-doc/ufi-drv/ufi-init.c:37: memset(&response, 0, sizeof(ufi_format_capacities_response)); ld hl,0 add hl, sp ld b,0x12 @@ -132,7 +154,7 @@ l_chufi_get_cap_00112: ld (hl), a inc hl djnz l_chufi_get_cap_00112 -;source-doc/ufi-drv/ufi-init.c:36: wait_for_device_ready(dev, 25); +;source-doc/ufi-drv/ufi-init.c:39: wait_for_device_ready(dev, 25); ld a,0x19 push af inc sp @@ -142,7 +164,7 @@ l_chufi_get_cap_00112: call _wait_for_device_ready pop af inc sp -;source-doc/ufi-drv/ufi-init.c:40: ufi_inquiry(dev, &inquiry); +;source-doc/ufi-drv/ufi-init.c:43: ufi_inquiry(dev, &inquiry); ld hl,36 add hl, sp push hl @@ -151,7 +173,7 @@ l_chufi_get_cap_00112: push hl call _ufi_inquiry pop af -;source-doc/ufi-drv/ufi-init.c:42: wait_for_device_ready(dev, 15); +;source-doc/ufi-drv/ufi-init.c:45: wait_for_device_ready(dev, 15); ld h,0x0f ex (sp),hl inc sp @@ -161,7 +183,7 @@ l_chufi_get_cap_00112: call _wait_for_device_ready pop af inc sp -;source-doc/ufi-drv/ufi-init.c:44: const usb_error result = ufi_read_frmt_caps(dev, &response); +;source-doc/ufi-drv/ufi-init.c:47: const usb_error result = ufi_read_frmt_caps(dev, &response); ld hl,0 add hl, sp push hl @@ -172,27 +194,27 @@ l_chufi_get_cap_00112: pop af pop af ld a, l -;source-doc/ufi-drv/ufi-init.c:45: if (result != USB_ERR_OK) +;source-doc/ufi-drv/ufi-init.c:48: if (result != USB_ERR_OK) or a jr Z,l_chufi_get_cap_00102 -;source-doc/ufi-drv/ufi-init.c:46: return 0; +;source-doc/ufi-drv/ufi-init.c:49: return 0; ld hl,0x0000 ld e, l ld d, l jr l_chufi_get_cap_00103 l_chufi_get_cap_00102: -;source-doc/ufi-drv/ufi-init.c:48: return convert_from_msb_first(response.descriptors[0].number_of_blocks); +;source-doc/ufi-drv/ufi-init.c:51: return convert_from_msb_first(response.descriptors[0].number_of_blocks); ld hl,4 add hl, sp push hl call _convert_from_msb_first pop af l_chufi_get_cap_00103: -;source-doc/ufi-drv/ufi-init.c:49: } +;source-doc/ufi-drv/ufi-init.c:52: } ld sp, ix pop ix ret -;source-doc/ufi-drv/ufi-init.c:51: uint8_t chufi_read(device_config_storage *const dev, uint8_t *const buffer) { +;source-doc/ufi-drv/ufi-init.c:54: uint8_t chufi_read(device_config_storage *const dev, uint8_t *const buffer) { ; --------------------------------- ; Function chufi_read ; --------------------------------- @@ -203,7 +225,7 @@ _chufi_read: ld hl, -20 add hl, sp ld sp, hl -;source-doc/ufi-drv/ufi-init.c:53: if (wait_for_device_ready((device_config *)dev, 20) != 0) +;source-doc/ufi-drv/ufi-init.c:56: if (wait_for_device_ready((device_config *)dev, 20) != 0) ld c,(ix+4) ld b,(ix+5) push bc @@ -218,18 +240,18 @@ _chufi_read: pop bc or a jr Z,l_chufi_read_00102 -;source-doc/ufi-drv/ufi-init.c:54: return -1; // Not READY! +;source-doc/ufi-drv/ufi-init.c:57: return -1; // Not READY! ld l,0xff jr l_chufi_read_00109 l_chufi_read_00102: -;source-doc/ufi-drv/ufi-init.c:59: memset(&sense_codes, 0, sizeof(sense_codes)); +;source-doc/ufi-drv/ufi-init.c:62: memset(&sense_codes, 0, sizeof(sense_codes)); ld hl,0 add hl, sp xor a ld (hl), a inc hl ld (hl), a -;source-doc/ufi-drv/ufi-init.c:61: if (ufi_read_write_sector((device_config *)dev, false, dev->current_lba, 1, buffer, (uint8_t *)&sense_codes) != USB_ERR_OK) +;source-doc/ufi-drv/ufi-init.c:64: if (ufi_read_write_sector((device_config *)dev, false, dev->current_lba, 1, buffer, (uint8_t *)&sense_codes) != USB_ERR_OK) ld e,(ix+4) ld d,(ix+5) ld hl,12 @@ -262,11 +284,11 @@ l_chufi_read_00102: pop bc or a jr Z,l_chufi_read_00104 -;source-doc/ufi-drv/ufi-init.c:62: return -1; // general error +;source-doc/ufi-drv/ufi-init.c:65: return -1; // general error ld l,0xff jr l_chufi_read_00109 l_chufi_read_00104: -;source-doc/ufi-drv/ufi-init.c:65: memset(&response, 0, sizeof(response)); +;source-doc/ufi-drv/ufi-init.c:68: memset(&response, 0, sizeof(response)); push bc ld hl,4 add hl, sp @@ -279,7 +301,7 @@ l_chufi_read_00139: inc hl djnz l_chufi_read_00139 pop bc -;source-doc/ufi-drv/ufi-init.c:67: if ((result = ufi_request_sense((device_config *)dev, &response)) != USB_ERR_OK) +;source-doc/ufi-drv/ufi-init.c:70: if ((result = ufi_request_sense((device_config *)dev, &response)) != USB_ERR_OK) ld hl,2 add hl, sp push hl @@ -290,29 +312,29 @@ l_chufi_read_00139: ld a, l or a jr Z,l_chufi_read_00106 -;source-doc/ufi-drv/ufi-init.c:68: return -1; // error +;source-doc/ufi-drv/ufi-init.c:71: return -1; // error ld l,0xff jr l_chufi_read_00109 l_chufi_read_00106: -;source-doc/ufi-drv/ufi-init.c:72: const uint8_t sense_key = response.sense_key; +;source-doc/ufi-drv/ufi-init.c:75: const uint8_t sense_key = response.sense_key; ld hl,4 add hl, sp ld a, (hl) -;source-doc/ufi-drv/ufi-init.c:74: if (sense_key != 0) +;source-doc/ufi-drv/ufi-init.c:77: if (sense_key != 0) and 0x0f jr Z,l_chufi_read_00108 -;source-doc/ufi-drv/ufi-init.c:75: return -1; +;source-doc/ufi-drv/ufi-init.c:78: return -1; ld l,0xff jr l_chufi_read_00109 l_chufi_read_00108: -;source-doc/ufi-drv/ufi-init.c:77: return USB_ERR_OK; +;source-doc/ufi-drv/ufi-init.c:80: return USB_ERR_OK; ld l,0x00 l_chufi_read_00109: -;source-doc/ufi-drv/ufi-init.c:78: } +;source-doc/ufi-drv/ufi-init.c:81: } ld sp, ix pop ix ret -;source-doc/ufi-drv/ufi-init.c:80: usb_error chufi_write(device_config_storage *const dev, uint8_t *const buffer) { +;source-doc/ufi-drv/ufi-init.c:83: usb_error chufi_write(device_config_storage *const dev, uint8_t *const buffer) { ; --------------------------------- ; Function chufi_write ; --------------------------------- @@ -323,7 +345,7 @@ _chufi_write: ld hl, -20 add hl, sp ld sp, hl -;source-doc/ufi-drv/ufi-init.c:82: if (wait_for_device_ready((device_config *)dev, 20) != 0) +;source-doc/ufi-drv/ufi-init.c:85: if (wait_for_device_ready((device_config *)dev, 20) != 0) ld c,(ix+4) ld b,(ix+5) push bc @@ -338,18 +360,18 @@ _chufi_write: pop bc or a jr Z,l_chufi_write_00102 -;source-doc/ufi-drv/ufi-init.c:83: return -1; // Not READY! +;source-doc/ufi-drv/ufi-init.c:86: return -1; // Not READY! ld l,0xff jr l_chufi_write_00109 l_chufi_write_00102: -;source-doc/ufi-drv/ufi-init.c:87: memset(&sense_codes, 0, sizeof(sense_codes)); +;source-doc/ufi-drv/ufi-init.c:90: memset(&sense_codes, 0, sizeof(sense_codes)); ld hl,0 add hl, sp xor a ld (hl), a inc hl ld (hl), a -;source-doc/ufi-drv/ufi-init.c:88: if ((ufi_read_write_sector((device_config *)dev, true, dev->current_lba, 1, buffer, (uint8_t *)&sense_codes)) != USB_ERR_OK) { +;source-doc/ufi-drv/ufi-init.c:91: if ((ufi_read_write_sector((device_config *)dev, true, dev->current_lba, 1, buffer, (uint8_t *)&sense_codes)) != USB_ERR_OK) { ld e,(ix+4) ld d,(ix+5) ld hl,12 @@ -382,11 +404,11 @@ l_chufi_write_00102: pop bc or a jr Z,l_chufi_write_00104 -;source-doc/ufi-drv/ufi-init.c:89: return -1; +;source-doc/ufi-drv/ufi-init.c:92: return -1; ld l,0xff jr l_chufi_write_00109 l_chufi_write_00104: -;source-doc/ufi-drv/ufi-init.c:93: memset(&response, 0, sizeof(response)); +;source-doc/ufi-drv/ufi-init.c:96: memset(&response, 0, sizeof(response)); push bc ld hl,4 add hl, sp @@ -399,7 +421,7 @@ l_chufi_write_00139: inc hl djnz l_chufi_write_00139 pop bc -;source-doc/ufi-drv/ufi-init.c:95: if ((ufi_request_sense((device_config *)dev, &response)) != USB_ERR_OK) { +;source-doc/ufi-drv/ufi-init.c:98: if ((ufi_request_sense((device_config *)dev, &response)) != USB_ERR_OK) { ld hl,2 add hl, sp push hl @@ -410,25 +432,25 @@ l_chufi_write_00139: ld a, l or a jr Z,l_chufi_write_00106 -;source-doc/ufi-drv/ufi-init.c:96: return -1; +;source-doc/ufi-drv/ufi-init.c:99: return -1; ld l,0xff jr l_chufi_write_00109 l_chufi_write_00106: -;source-doc/ufi-drv/ufi-init.c:101: const uint8_t sense_key = response.sense_key; +;source-doc/ufi-drv/ufi-init.c:104: const uint8_t sense_key = response.sense_key; ld hl,4 add hl, sp ld a, (hl) -;source-doc/ufi-drv/ufi-init.c:103: if (sense_key != 0) +;source-doc/ufi-drv/ufi-init.c:106: if (sense_key != 0) and 0x0f jr Z,l_chufi_write_00108 -;source-doc/ufi-drv/ufi-init.c:104: return -1; +;source-doc/ufi-drv/ufi-init.c:107: return -1; ld l,0xff jr l_chufi_write_00109 l_chufi_write_00108: -;source-doc/ufi-drv/ufi-init.c:106: return USB_ERR_OK; +;source-doc/ufi-drv/ufi-init.c:109: return USB_ERR_OK; ld l,0x00 l_chufi_write_00109: -;source-doc/ufi-drv/ufi-init.c:107: } +;source-doc/ufi-drv/ufi-init.c:110: } ld sp, ix pop ix ret diff --git a/Source/HBIOS/ch376.asm b/Source/HBIOS/ch376.asm index b0c05df3..dd446f6e 100644 --- a/Source/HBIOS/ch376.asm +++ b/Source/HBIOS/ch376.asm @@ -20,6 +20,10 @@ _delay: call DELAY call DELAY call DELAY + call DELAY + call DELAY + call DELAY + call DELAY pop af ret diff --git a/Source/HBIOS/ch376scsi.asm b/Source/HBIOS/ch376scsi.asm index 576b44c2..df82a184 100644 --- a/Source/HBIOS/ch376scsi.asm +++ b/Source/HBIOS/ch376scsi.asm @@ -30,12 +30,12 @@ CH_SCSI_FNTBL: #ENDIF CH_SCSI_STATUS: - LD A, (IY) + ; LD A, (IY) XOR A RET CH_SCSI_RESET: - LD A, (IY) + ; LD A, (IY) XOR A RET @@ -182,9 +182,9 @@ CH_SCSI_FORMAT: ; | | 9=Cartridge, 10=usb-scsi, 11=usb-ufi | ; CH_SCSI_DEVICE: - LD C, %01111010 ; TODO? + LD C, %00111010 ; TODO? LD D, DIODEV_USB - LD E, (iy+16) + LD E, (iy+16) ;???? device_config_storage.drive_index LD H, 0 LD L, 0 XOR A